From bnaujok@sgi.com Mon Dec 1 00:33:05 2008 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_73, LOCAL_GNU_PATCH autolearn=ham version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB16X4et027360 for ; Mon, 1 Dec 2008 00:33:05 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id 0D7A38F8173 for ; Sun, 30 Nov 2008 22:32:59 -0800 (PST) Received: from pc-bnaujok.melbourne.sgi.com (pc-bnaujok.melbourne.sgi.com [134.14.55.58]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA02969 for ; Mon, 1 Dec 2008 17:32:57 +1100 Date: Mon, 01 Dec 2008 17:34:39 +1100 To: "xfs@oss.sgi.com" Subject: [REVIEW] Fix unaligned accesses in IA64 in xfsprogs From: "Barry Naujok" Organization: SGI Content-Type: text/plain; format=flowed; delsp=yes; charset=utf-8 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Message-ID: User-Agent: Opera Mail/9.52 (Win32) xfs_repair is the main culprit when getting disk extents which aren't properly aligned in memory. This patch does not call xfs_bmbt_disk_get_all directly anymore but does an unaligned get on the disk extent record and calls xfs_bmbt_get_all which is host-based like the rest of the kernel routines do. =========================================================================== xfsprogs/db/bmap.c =========================================================================== --- a/xfsprogs/db/bmap.c 2008-12-01 17:10:37.000000000 +1100 +++ b/xfsprogs/db/bmap.c 2008-12-01 17:03:17.956547706 +1100 @@ -277,21 +277,17 @@ convert_extent( xfs_dfilblks_t *cp, int *fp) { - xfs_bmbt_irec_t irec, *s = &irec; - xfs_bmbt_rec_t rpcopy, *p = &rpcopy; + xfs_bmbt_irec_t irec; + xfs_bmbt_rec_host_t rec; - memmove(&rpcopy, rp, sizeof(rpcopy)); - libxfs_bmbt_disk_get_all(p, s); - - if (s->br_state == XFS_EXT_UNWRITTEN) { - *fp = 1; - } else { - *fp = 0; - } - - *op = s->br_startoff; - *sp = s->br_startblock; - *cp = s->br_blockcount; + rec.l0 = get_unaligned_be64(&rp->l0); + rec.l1 = get_unaligned_be64(&rp->l1); + libxfs_bmbt_get_all(&rec, &irec); + + *fp = irec.br_state == XFS_EXT_UNWRITTEN; + *op = irec.br_startoff; + *sp = irec.br_startblock; + *cp = irec.br_blockcount; } void =========================================================================== xfsprogs/include/libxfs.h =========================================================================== --- a/xfsprogs/include/libxfs.h 2008-12-01 17:10:37.000000000 +1100 +++ b/xfsprogs/include/libxfs.h 2008-12-01 16:45:05.941577400 +1100 @@ -502,7 +502,7 @@ xfs_bmbt_rec_host_t *xfs_bmap_search_ext #define libxfs_bunmapi xfs_bunmapi /* xfs_bmap_btree.h */ -#define libxfs_bmbt_disk_get_all xfs_bmbt_disk_get_all +#define libxfs_bmbt_get_all xfs_bmbt_get_all /* xfs_da_btree.h */ #define libxfs_da_brelse xfs_da_brelse =========================================================================== xfsprogs/include/xfs_arch.h =========================================================================== --- a/xfsprogs/include/xfs_arch.h 2008-12-01 17:10:37.000000000 +1100 +++ b/xfsprogs/include/xfs_arch.h 2008-12-01 17:06:38.819726283 +1100 @@ -71,6 +71,13 @@ static inline void be64_add_cpu(__be64 * *a = cpu_to_be64(be64_to_cpu(*a) + b); } +static inline __u64 get_unaligned_be64(void *ptr) +{ + __be64 __tmp; + memmove(&__tmp, ptr, 8); + return be64_to_cpu(__tmp); +} + #endif /* __KERNEL__ */ /* do we need conversion? */ =========================================================================== xfsprogs/libxfs/xfs.h =========================================================================== --- a/xfsprogs/libxfs/xfs.h 2008-12-01 17:10:37.000000000 +1100 +++ b/xfsprogs/libxfs/xfs.h 2008-12-01 17:05:22.041221304 +1100 @@ -127,14 +127,6 @@ static inline int __do_div(unsigned long #define max_t(type,x,y) \ ({ type __x = (x); type __y = (y); __x > __y ? __x: __y; }) -/* only 64 bit accesses used in xfs kernel code */ -static inline __u64 get_unaligned_be64(void *ptr) -{ - __be64 __tmp; - memmove(&__tmp, ptr, 8); - return be64_to_cpu(__tmp); -} - static inline void put_unaligned(__be64 val, void *ptr) { memmove(ptr, &val, 8); =========================================================================== xfsprogs/repair/dino_chunks.c =========================================================================== --- a/xfsprogs/repair/dino_chunks.c 2008-12-01 17:10:37.000000000 +1100 +++ b/xfsprogs/repair/dino_chunks.c 2008-12-01 16:11:11.549834281 +1100 @@ -609,7 +609,8 @@ process_inode_chunk( if (blks_per_cluster == 0) blks_per_cluster = 1; cluster_count = XFS_INODES_PER_CHUNK / inodes_per_cluster; - ASSERT(cluster_count > 0); + if (cluster_count == 0) + cluster_count = 1; /* * get all blocks required to read in this chunk (may wind up =========================================================================== xfsprogs/repair/dinode.c =========================================================================== --- a/xfsprogs/repair/dinode.c 2008-12-01 17:10:37.000000000 +1100 +++ b/xfsprogs/repair/dinode.c 2008-12-01 17:03:40.217799833 +1100 @@ -460,10 +460,13 @@ get_bmbt_reclist( xfs_dfiloff_t fblock) { int i; + xfs_bmbt_rec_host_t rec; xfs_bmbt_irec_t irec; - for (i = 0; i < numrecs; i++) { - libxfs_bmbt_disk_get_all(rp + i, &irec); + for (i = 0; i < numrecs; i++, rp++) { + rec.l0 = get_unaligned_be64(&rp->l0); + rec.l1 = get_unaligned_be64(&rp->l1); + xfs_bmbt_get_all(&rec, &irec); if (irec.br_startoff >= fblock && irec.br_startoff + irec.br_blockcount < fblock) return (irec.br_startblock + fblock - irec.br_startoff); @@ -612,6 +615,7 @@ process_bmbt_reclist_int( int whichfork) { xfs_bmbt_irec_t irec; + xfs_bmbt_rec_host_t rec; xfs_dfilblks_t cp = 0; /* prev count */ xfs_dfsbno_t sp = 0; /* prev start */ xfs_dfiloff_t op = 0; /* prev offset */ @@ -636,8 +640,10 @@ process_bmbt_reclist_int( else ftype = _("regular"); - for (i = 0; i < numrecs; i++) { - libxfs_bmbt_disk_get_all(rp + i, &irec); + for (i = 0; i < numrecs; i++, rp++) { + rec.l0 = get_unaligned_be64(&rp->l0); + rec.l1 = get_unaligned_be64(&rp->l1); + libxfs_bmbt_get_all(&rec, &irec); if (i == 0) *last_key = *first_key = irec.br_startoff; else @@ -913,14 +919,17 @@ getfunc_extlist(xfs_mount_t *mp, int whichfork) { xfs_bmbt_irec_t irec; + xfs_bmbt_rec_host_t rec; xfs_dfsbno_t final_fsbno = NULLDFSBNO; - xfs_bmbt_rec_t *rootblock = (xfs_bmbt_rec_t *) + xfs_bmbt_rec_t *rp = (xfs_bmbt_rec_t *) XFS_DFORK_PTR(dip, whichfork); xfs_extnum_t nextents = XFS_DFORK_NEXTENTS(dip, whichfork); int i; - for (i = 0; i < nextents; i++) { - libxfs_bmbt_disk_get_all(rootblock + i, &irec); + for (i = 0; i < nextents; i++, rp++) { + rec.l0 = get_unaligned_be64(&rp->l0); + rec.l1 = get_unaligned_be64(&rp->l1); + libxfs_bmbt_get_all(&rec, &irec); if (irec.br_startoff <= bno && bno < irec.br_startoff + irec.br_blockcount) { final_fsbno = bno - irec.br_startoff + irec.br_startblock; @@ -948,6 +957,7 @@ getfunc_btree(xfs_mount_t *mp, int found; int numrecs; xfs_bmbt_rec_t *rec; + xfs_bmbt_rec_host_t hrec; xfs_bmbt_irec_t irec; xfs_bmbt_ptr_t *pp; xfs_bmbt_key_t *key; @@ -1072,8 +1082,10 @@ getfunc_btree(xfs_mount_t *mp, ino, numrecs, mp->m_bmap_dmnr[0]); rec = XFS_BMBT_REC_ADDR(mp, block, 1); - for (i = 0; i < numrecs; i++) { - libxfs_bmbt_disk_get_all(rec + i, &irec); + for (i = 0; i < numrecs; i++, rec++) { + hrec.l0 = get_unaligned_be64(&rec->l0); + hrec.l1 = get_unaligned_be64(&rec->l1); + libxfs_bmbt_get_all(&hrec, &irec); if (irec.br_startoff <= bno && bno < irec.br_startoff + irec.br_blockcount) { final_fsbno = bno - irec.br_startoff + @@ -1387,6 +1399,7 @@ process_symlink_extlist(xfs_mount_t *mp, { xfs_dfiloff_t expected_offset; xfs_bmbt_rec_t *rp; + xfs_bmbt_rec_host_t rec; xfs_bmbt_irec_t irec; int numrecs; int i; @@ -1424,8 +1437,10 @@ process_symlink_extlist(xfs_mount_t *mp, max_blocks = max_symlink_blocks; expected_offset = 0; - for (i = 0; i < numrecs; i++) { - libxfs_bmbt_disk_get_all(rp + i, &irec); + for (i = 0; i < numrecs; i++, rp++) { + rec.l0 = get_unaligned_be64(&rp->l0); + rec.l1 = get_unaligned_be64(&rp->l1); + libxfs_bmbt_get_all(&rec, &irec); if (irec.br_startoff != expected_offset) { do_warn( =========================================================================== xfsprogs/repair/prefetch.c =========================================================================== --- a/xfsprogs/repair/prefetch.c 2008-12-01 17:10:37.000000000 +1100 +++ b/xfsprogs/repair/prefetch.c 2008-12-01 17:03:46.972965840 +1100 @@ -170,12 +170,15 @@ pf_read_bmbt_reclist( int numrecs) { int i; + xfs_bmbt_rec_host_t rec; xfs_bmbt_irec_t irec; xfs_dfilblks_t cp = 0; /* prev count */ xfs_dfiloff_t op = 0; /* prev offset */ - for (i = 0; i < numrecs; i++) { - libxfs_bmbt_disk_get_all(rp + i, &irec); + for (i = 0; i < numrecs; i++, rp++) { + rec.l0 = get_unaligned_be64(&rp->l0); + rec.l1 = get_unaligned_be64(&rp->l1); + libxfs_bmbt_get_all(&rec, &irec); if (((i > 0) && (op + cp > irec.br_startoff)) || (irec.br_blockcount == 0) || From david@fromorbit.com Mon Dec 1 01:56:45 2008 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 mB17uiOL032031 for ; Mon, 1 Dec 2008 01:56:45 -0600 X-ASG-Debug-ID: 1228118202-791c03de0000-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 F2BC0162F826 for ; Sun, 30 Nov 2008 23:56:42 -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 EVmuGVicS9vGK5HU for ; Sun, 30 Nov 2008 23:56:42 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAAcWM0l5LJfT/2dsb2JhbADNU4J9 X-IronPort-AV: E=Sophos;i="4.33,693,1220193000"; d="scan'208";a="266931882" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 01 Dec 2008 17:19:51 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L72bN-0002TG-Ot; Mon, 01 Dec 2008 17:49:49 +1100 Date: Mon, 1 Dec 2008 17:49:49 +1100 From: Dave Chinner To: Niv Sardi Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [XFS updates] XFS public tree - master for latest XFS changes for mainline, xfs-dev like master with kdb/dmapi branch, master, updated. v2.6.28-rc3-1049-g0924b58 Subject: Re: [XFS updates] XFS public tree - master for latest XFS changes for mainline, xfs-dev like master with kdb/dmapi branch, master, updated. v2.6.28-rc3-1049-g0924b58 Message-ID: <20081201064949.GL6291@disturbed> Mail-Followup-To: Niv Sardi , xfs@oss.sgi.com References: <200812010015.mB10F1Ab031727@oss.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200812010015.mB10F1Ab031727@oss.sgi.com> 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: 1228118203 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.11634 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, Nov 30, 2008 at 06:15:01PM -0600, Niv Sardi wrote: > - Log ----------------------------------------------------------------- > commit 0924b585fc49bf371bc700c23e516a538bf589af > Author: Dave Chinner > Date: Fri Nov 28 14:23:34 2008 +1100 > > [XFS] fix uninitialised variable bug in dquot release. > > gcc is warning about an uninitialised variable in xfs_growfs_rt(). > This is a false positive. Fix it by changing the scope of the > transaction pointer to wholly within the internal loop inside > the function. The title of that doesn't match the description. I think it was supposed to be: [PATCH 4/5] XFS: fix spurious uninitialised variable warning in xfs_growfs_rt BTW, can we get a one-line summary of the commits being referenced in the message? The commit hash is less than useful, and having to read through several hundred lines of commit logs to determine what was checked in is not fun..... Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+8d2496b74f78b2b3d345+1926+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 1 03:09:56 2008 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 mB199tf0004097 for ; Mon, 1 Dec 2008 03:09:56 -0600 X-ASG-Debug-ID: 1228122594-3a9e018d0000-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 2E111163042A; Mon, 1 Dec 2008 01:09:55 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 62zLP6iRN2TOGfVk; Mon, 01 Dec 2008 01:09:55 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L74mv-00071v-Os; Mon, 01 Dec 2008 09:09:53 +0000 Date: Mon, 1 Dec 2008 04:09:53 -0500 From: Christoph Hellwig To: Niv Sardi , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [XFS updates] XFS public tree - master for latest XFS changes for mainline, xfs-dev like master with kdb/dmapi branch, master, updated. v2.6.28-rc3-1049-g0924b58 Subject: Re: [XFS updates] XFS public tree - master for latest XFS changes for mainline, xfs-dev like master with kdb/dmapi branch, master, updated. v2.6.28-rc3-1049-g0924b58 Message-ID: <20081201090953.GA31696@infradead.org> References: <200812010015.mB10F1Ab031727@oss.sgi.com> <20081201064949.GL6291@disturbed> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081201064949.GL6291@disturbed> 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: 1228122595 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Mon, Dec 01, 2008 at 05:49:49PM +1100, Dave Chinner wrote: > On Sun, Nov 30, 2008 at 06:15:01PM -0600, Niv Sardi wrote: > > - Log ----------------------------------------------------------------- > > commit 0924b585fc49bf371bc700c23e516a538bf589af > > Author: Dave Chinner > > Date: Fri Nov 28 14:23:34 2008 +1100 > > > > [XFS] fix uninitialised variable bug in dquot release. > > > > gcc is warning about an uninitialised variable in xfs_growfs_rt(). > > This is a false positive. Fix it by changing the scope of the > > transaction pointer to wholly within the internal loop inside > > the function. > > The title of that doesn't match the description. I think it > was supposed to be: > > [PATCH 4/5] XFS: fix spurious uninitialised variable warning in xfs_growfs_rt Looks like xaiki just sucked in my staging tree where I mistpasted the subject line. > BTW, can we get a one-line summary of the commits being referenced > in the message? The commit hash is less than useful, and having to > read through several hundred lines of commit logs to determine > what was checked in is not fun..... Yeah, the new sort of commit messags aren't too useful. I would in fact prefer to get the old style one mail per commit, maybe even including the patch that was commited. I'm sure this is doable with git as there are a lot of projects that do it. From SRS0+8d2496b74f78b2b3d345+1926+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 1 06:05:01 2008 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=unavailable 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 mB1C51cG021427 for ; Mon, 1 Dec 2008 06:05:01 -0600 X-ASG-Debug-ID: 1228133100-766500480000-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 B75831BE76C7 for ; Mon, 1 Dec 2008 04:05:00 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 3BHGyqUrkP3xc26K for ; Mon, 01 Dec 2008 04:05:00 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L77WO-0008GM-Eb for xfs@oss.sgi.com; Mon, 01 Dec 2008 12:05:00 +0000 Date: Mon, 1 Dec 2008 07:05:00 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 00/10] various cleanups Subject: Re: [PATCH 00/10] various cleanups Message-ID: <20081201120500.GB19856@infradead.org> References: <20081027134707.GA5730@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081027134707.GA5730@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: 1228133100 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Mon, Oct 27, 2008 at 09:47:07AM -0400, Christoph Hellwig wrote: > Various random cleanups Can I get a review for these? From SRS0+8d2496b74f78b2b3d345+1926+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 1 06:05:01 2008 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 mB1C4vOt021423 for ; Mon, 1 Dec 2008 06:05:01 -0600 X-ASG-Debug-ID: 1228133096-7e3a01de0000-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 C7DC71BE76C3 for ; Mon, 1 Dec 2008 04:04:56 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id K3654jZDyogzNAqT for ; Mon, 01 Dec 2008 04:04:56 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L77Vq-0006X6-1S for xfs@oss.sgi.com; Mon, 01 Dec 2008 12:04:26 +0000 Date: Mon, 1 Dec 2008 07:04:26 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsidbg: fix uninitialized variable warning Subject: Re: [PATCH] xfsidbg: fix uninitialized variable warning Message-ID: <20081201120426.GA19856@infradead.org> References: <20081112114609.GB15216@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081112114609.GB15216@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: 1228133096 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Wed, Nov 12, 2008 at 06:46:09AM -0500, Christoph Hellwig wrote: > We don't initializ s.br_state in xfsidbg_btree_trace_record so gcc > rightly complains about accessing it in xfsidbg_xbirec. Given that we > don't get the state value from the tracing code just opencode printing > the other which actually reduces code size and makes the XFS_BTNUM_BMAP > case in xfsidbg_btree_trace_record more similar to the others. Ping? > > > Signed-off-by: Christoph Hellwig > > Index: linux-2.6-xfs/fs/xfs/xfsidbg.c > =================================================================== > --- linux-2.6-xfs.orig/fs/xfs/xfsidbg.c 2008-11-12 11:14:39.000000000 +0100 > +++ linux-2.6-xfs/fs/xfs/xfsidbg.c 2008-11-12 11:17:14.000000000 +0100 > @@ -2759,16 +2759,11 @@ xfsidbg_btree_trace_record( > { > switch (btnum) { > case XFS_BTNUM_BMAP: > - { > - struct xfs_bmbt_irec s; > - > - s.br_startoff = ((xfs_dfiloff_t)l0 << 32) | (xfs_dfiloff_t)l1; > - s.br_startblock = ((xfs_dfsbno_t)l2 << 32) | (xfs_dfsbno_t)l3; > - s.br_blockcount = ((xfs_dfilblks_t)l4 << 32) | (xfs_dfilblks_t)l5; > - > - xfsidbg_xbirec(&s); > + kdb_printf("startoff %Ld startblock %Lx blockcount %Ld\n", > + ((xfs_dfiloff_t)l0 << 32) | (xfs_dfiloff_t)l1, > + ((xfs_dfsbno_t)l2 << 32) | (xfs_dfsbno_t)l3, > + ((xfs_dfilblks_t)l4 << 32) | (xfs_dfilblks_t)l5); > break; > - } > case XFS_BTNUM_BNO: > case XFS_BTNUM_CNT: > qprintf(" startblock = %d, blockcount = %d\n", > > ---end quoted text--- From SRS0+8d2496b74f78b2b3d345+1926+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 1 07:42:47 2008 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 mB1DgbVY026854 for ; Mon, 1 Dec 2008 07:42:47 -0600 X-ASG-Debug-ID: 1228138957-7e0903590000-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 412731BE8578 for ; Mon, 1 Dec 2008 05:42:37 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id WMiGDIov0HGjEia4 for ; Mon, 01 Dec 2008 05:42:37 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L792L-0002fb-Fd; Mon, 01 Dec 2008 13:42:05 +0000 Date: Mon, 1 Dec 2008 08:42:05 -0500 From: Christoph Hellwig To: Barry Naujok Cc: "xfs@oss.sgi.com" X-ASG-Orig-Subj: Re: [REVIEW] Fix unaligned accesses in IA64 in xfsprogs Subject: Re: [REVIEW] Fix unaligned accesses in IA64 in xfsprogs Message-ID: <20081201134205.GA7528@infradead.org> 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-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: 1228138957 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Mon, Dec 01, 2008 at 05:34:39PM +1100, Barry Naujok wrote: > xfs_repair is the main culprit when getting disk extents which aren't > properly aligned in memory. This patch does not call > xfs_bmbt_disk_get_all directly anymore but does an unaligned get on > the disk extent record and calls xfs_bmbt_get_all which is host-based > like the rest of the kernel routines do. What about just doin the get_unaligned in xfs_bmbt_disk_get_all? That way we could just use it everywhere. The only users that don't need the get_unaligned are in the tracing code, and I don't think we should be worried about that little bit of overhead. > @@ -277,21 +277,17 @@ convert_extent( > xfs_dfilblks_t *cp, > int *fp) > { And then we could replace this helper with a direct call to xfs_bmbt_disk_get_all as the caller would be much cleaner with a xfs_bmbt_irec_t on the stack anyway.. > --- a/xfsprogs/repair/dino_chunks.c 2008-12-01 17:10:37.000000000 +1100 > +++ b/xfsprogs/repair/dino_chunks.c 2008-12-01 16:11:11.549834281 +1100 > @@ -609,7 +609,8 @@ process_inode_chunk( > if (blks_per_cluster == 0) > blks_per_cluster = 1; > cluster_count = XFS_INODES_PER_CHUNK / inodes_per_cluster; > - ASSERT(cluster_count > 0); > + if (cluster_count == 0) > + cluster_count = 1; I can't see how this is related. From SRS0+8d2496b74f78b2b3d345+1926+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 1 08:04:00 2008 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 mB1E40dW028186 for ; Mon, 1 Dec 2008 08:04:00 -0600 X-ASG-Debug-ID: 1228140239-766e01cb0000-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 32B2F1BE87CF for ; Mon, 1 Dec 2008 06:04:00 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id RLMIIItqKsNGAx7u for ; Mon, 01 Dec 2008 06:04:00 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L79N3-0005n9-Ai; Mon, 01 Dec 2008 14:03:29 +0000 Date: Mon, 1 Dec 2008 09:03:29 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: linux-kernel@vger.kernel.org X-ASG-Orig-Subj: XFS status update for November 2008 Subject: XFS status update for November 2008 Message-ID: <20081201140329.GA5257@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: 1228140240 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com The mainline kernel is now at 2.6.28-rc6 and includes a small number of XFS fixes. There have been no updates to the XFS development tree during December. Without new regressions that large number of changes that missed 2.6.28 has thus stabilized to be ready for 2.6.29. In the meantime kernel-side development has been slow, with the only major patch set being a wide number of fixes to the compatibility for 32 bit ioctls on a 64 bit kernel. In the meantime there has been a large number of commits to the user space tree, which mostly consist of smaller fixes. xfsprogs is getting close to have the 3.0.0 release which will be the first full resync with the kernel sources since the year 2005. From SRS0+8d2496b74f78b2b3d345+1926+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 1 16:20:33 2008 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 mB1MKW9g024832 for ; Mon, 1 Dec 2008 16:20:33 -0600 X-ASG-Debug-ID: 1228170009-3cee02b60000-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 5AEB41639762 for ; Mon, 1 Dec 2008 14:20:09 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id w5H9E3XNlaZkjnVk for ; Mon, 01 Dec 2008 14:20:09 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7H7f-0007po-Rv for xfs@oss.sgi.com; Mon, 01 Dec 2008 22:20:07 +0000 Date: Mon, 1 Dec 2008 17:20:07 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH][mainline-only] remove useless mnt_want_write call in xfs_write Subject: Re: [PATCH][mainline-only] remove useless mnt_want_write call in xfs_write Message-ID: <20081201222007.GA28519@infradead.org> References: <20080814212551.GA20980@lst.de> <20080929074450.GB23785@lst.de> <20081110133150.GA27234@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081110133150.GA27234@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: 1228170010 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com ping^2? Note that with the new git tree it's also not just mainline only anymore. On Mon, Nov 10, 2008 at 08:31:50AM -0500, Christoph Hellwig wrote: > ping? > > On Mon, Sep 29, 2008 at 09:44:50AM +0200, Christoph Hellwig wrote: > > Any chance to get this into the git tree for the first 2.6.28 pull? > > > > On Thu, Aug 14, 2008 at 11:25:51PM +0200, Christoph Hellwig wrote: > > > When mnt_want_write was introduced a call to it was added around > > > xfs_ichgtime, but there is no need for this because a file can't be open > > > read/write on a r/o mount, and a mount can't degrade r/o while we still > > > have files open for writing. As the mnt_want_write changes were never > > > merged into the CVS tree this patch is for mainline only. > > > > > > > > > Signed-off-by: Christoph Hellwig > > > > > > --- linux-2.6/fs/xfs/linux-2.6/xfs_lrw.c 2008-08-14 14:52:15.000000000 -0300 > > > +++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_lrw.c 2008-08-14 14:54:53.000000000 -0300 > > > @@ -51,7 +51,6 @@ > > > #include "xfs_vnodeops.h" > > > > > > #include > > > -#include > > > #include > > > > > > > > > @@ -668,15 +667,8 @@ start: > > > if (new_size > xip->i_size) > > > xip->i_new_size = new_size; > > > > > > - /* > > > - * We're not supposed to change timestamps in readonly-mounted > > > - * filesystems. Throw it away if anyone asks us. > > > - */ > > > - if (likely(!(ioflags & IO_INVIS) && > > > - !mnt_want_write(file->f_path.mnt))) { > > > + if (likely(!(ioflags & IO_INVIS))) > > > xfs_ichgtime(xip, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG); > > > - mnt_drop_write(file->f_path.mnt); > > > - } > > > > > > /* > > > * If the offset is beyond the size of the file, we have a couple > > ---end quoted text--- > > > > > ---end quoted text--- > > ---end quoted text--- From billodo@sgi.com Mon Dec 1 17:04:40 2008 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 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 mB1N4dIv027538 for ; Mon, 1 Dec 2008 17:04:40 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id 99A8C3041D8 for ; Mon, 1 Dec 2008 15:04:36 -0800 (PST) Received: from lnx-billodo.americas.sgi.com (lnx-billodo.americas.sgi.com [128.162.232.245]) by estes.americas.sgi.com (Postfix) with ESMTP id 8BEA1700016A; Mon, 1 Dec 2008 17:04:36 -0600 (CST) Received: by lnx-billodo.americas.sgi.com (Postfix, from userid 56393) id ECDAE17E01F; Mon, 1 Dec 2008 17:10:05 -0600 (CST) Date: Mon, 1 Dec 2008 17:10:05 -0600 From: "Bill O'Donnell" To: Christoph Hellwig Cc: xfs@sgi.com Subject: Re: [PATCH 0/9] CRC support for superblock, ag headers, log and btree blocks Message-ID: <20081201231005.GA17631@sgi.com> References: <20080925225613.GA9822@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080925225613.GA9822@lst.de> User-Agent: Mutt/1.5.16 (2007-06-09) On Fri, Sep 26, 2008 at 12:56:13AM +0200, Christoph Hellwig wrote: | Here's an updated crc series for various metadata structures. We're still | looking at the magic number in the log recovery case because getting down | a buffer type for the other structures wasn't quite as easy as for the | btree block. I'll probably look into that again once we're done with all | data structures. Just to be clear, crc only applies to the metadata structures listed in the subject line, correct? It wasn't clear to me where you were with the "other structures". Maybe it would be more clear if you could provide a simple table listing the structures and whether or not crc applies (yet). Bill From billodo@sgi.com Mon Dec 1 17:17:25 2008 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 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 mB1NHP8B028489 for ; Mon, 1 Dec 2008 17:17:25 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id 390283041D9 for ; Mon, 1 Dec 2008 15:17:25 -0800 (PST) Received: from lnx-billodo.americas.sgi.com (lnx-billodo.americas.sgi.com [128.162.232.245]) by estes.americas.sgi.com (Postfix) with ESMTP id 195E3700016A; Mon, 1 Dec 2008 17:17:25 -0600 (CST) Received: by lnx-billodo.americas.sgi.com (Postfix, from userid 56393) id 7E7DE17E01F; Mon, 1 Dec 2008 17:22:54 -0600 (CST) Date: Mon, 1 Dec 2008 17:22:54 -0600 From: "Bill O'Donnell" To: Christoph Hellwig Cc: xfs@sgi.com Subject: Re: [PATCH 0/9] CRC support for superblock, ag headers, log and btree blocks Message-ID: <20081201232254.GA25288@sgi.com> References: <20080925225613.GA9822@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080925225613.GA9822@lst.de> User-Agent: Mutt/1.5.16 (2007-06-09) On Fri, Sep 26, 2008 at 12:56:13AM +0200, Christoph Hellwig wrote: | Here's an updated crc series for various metadata structures. We're still | looking at the magic number in the log recovery case because getting down | a buffer type for the other structures wasn't quite as easy as for the | btree block. I'll probably look into that again once we're done with all | data structures. IIUC, this is the latest crc series, right? (I had once thought, perhaps mistakenly, that there would be a refreshed patchset subsequent to this one). Thanks, Bill From bnaujok@sgi.com Mon Dec 1 17:31:11 2008 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 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 mB1NVB7Q029149 for ; Mon, 1 Dec 2008 17:31:11 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id 664A230408D; Mon, 1 Dec 2008 15:31:10 -0800 (PST) Received: from pc-bnaujok.melbourne.sgi.com (pc-bnaujok.melbourne.sgi.com [134.14.55.58]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id KAA21731; Tue, 2 Dec 2008 10:31:07 +1100 Date: Tue, 02 Dec 2008 10:31:16 +1100 To: "Christoph Hellwig" Subject: Re: [REVIEW] Fix unaligned accesses in IA64 in xfsprogs From: "Barry Naujok" Organization: SGI Cc: "xfs@oss.sgi.com" Content-Type: text/plain; format=flowed; delsp=yes; charset=utf-8 MIME-Version: 1.0 References: <20081201134205.GA7528@infradead.org> Content-Transfer-Encoding: 7bit Message-ID: In-Reply-To: <20081201134205.GA7528@infradead.org> User-Agent: Opera Mail/9.52 (Win32) On Tue, 02 Dec 2008 00:42:05 +1100, Christoph Hellwig wrote: > On Mon, Dec 01, 2008 at 05:34:39PM +1100, Barry Naujok wrote: >> xfs_repair is the main culprit when getting disk extents which aren't >> properly aligned in memory. This patch does not call >> xfs_bmbt_disk_get_all directly anymore but does an unaligned get on >> the disk extent record and calls xfs_bmbt_get_all which is host-based >> like the rest of the kernel routines do. > > What about just doin the get_unaligned in xfs_bmbt_disk_get_all? That > way we could just use it everywhere. The only users that don't need > the get_unaligned are in the tracing code, and I don't think we should > be worried about that little bit of overhead. > >> @@ -277,21 +277,17 @@ convert_extent( >> xfs_dfilblks_t *cp, >> int *fp) >> { > > And then we could replace this helper with a direct call to > xfs_bmbt_disk_get_all as the caller would be much cleaner with a > xfs_bmbt_irec_t on the stack anyway.. It's a libxfs/kernel function, so ideally, it should be also ported into the kernel space and possible kernel cleanups along with it. >> --- a/xfsprogs/repair/dino_chunks.c 2008-12-01 17:10:37.000000000 +1100 >> +++ b/xfsprogs/repair/dino_chunks.c 2008-12-01 16:11:11.549834281 +1100 >> @@ -609,7 +609,8 @@ process_inode_chunk( >> if (blks_per_cluster == 0) >> blks_per_cluster = 1; >> cluster_count = XFS_INODES_PER_CHUNK / inodes_per_cluster; >> - ASSERT(cluster_count > 0); >> + if (cluster_count == 0) >> + cluster_count = 1; > > I can't see how this is related. Another IA64 fix. From billodo@sgi.com Mon Dec 1 17:34:20 2008 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 relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB1NYIKf029479 for ; Mon, 1 Dec 2008 17:34:20 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id 867298F81A5 for ; Mon, 1 Dec 2008 15:34:15 -0800 (PST) Received: from lnx-billodo.americas.sgi.com (lnx-billodo.americas.sgi.com [128.162.232.245]) by estes.americas.sgi.com (Postfix) with ESMTP id 461E270001D6; Mon, 1 Dec 2008 17:34:15 -0600 (CST) Received: by lnx-billodo.americas.sgi.com (Postfix, from userid 56393) id B046217E01F; Mon, 1 Dec 2008 17:39:44 -0600 (CST) Date: Mon, 1 Dec 2008 17:39:44 -0600 From: "Bill O'Donnell" To: Christoph Hellwig Cc: xfs@sgi.com Subject: Re: [PATCH 0/9] CRC support for superblock, ag headers, log and btree blocks Message-ID: <20081201233944.GA32605@sgi.com> References: <20080925225613.GA9822@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080925225613.GA9822@lst.de> User-Agent: Mutt/1.5.16 (2007-06-09) On Fri, Sep 26, 2008 at 12:56:13AM +0200, Christoph Hellwig wrote: | Here's an updated crc series for various metadata structures. We're still | looking at the magic number in the log recovery case because getting down | a buffer type for the other structures wasn't quite as easy as for the | btree block. I'll probably look into that again once we're done with all | data structures. Christoph- Yet another question as I revisit this ;) ... What is to be done with the other tarball on your site ( xfs-cmds-crcs.tgz )? Is there a separate posting on this list that I may have missed earlier? Bill From billodo@sgi.com Mon Dec 1 17:36:12 2008 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 relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB1NaCbd029644 for ; Mon, 1 Dec 2008 17:36:12 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id 9DB70AC09B for ; Mon, 1 Dec 2008 15:36:08 -0800 (PST) Received: from lnx-billodo.americas.sgi.com (lnx-billodo.americas.sgi.com [128.162.232.245]) by estes.americas.sgi.com (Postfix) with ESMTP id 56410700016A; Mon, 1 Dec 2008 17:36:08 -0600 (CST) Received: by lnx-billodo.americas.sgi.com (Postfix, from userid 56393) id C0E9517E01F; Mon, 1 Dec 2008 17:41:37 -0600 (CST) Date: Mon, 1 Dec 2008 17:41:37 -0600 From: "Bill O'Donnell" To: Christoph Hellwig Cc: xfs@sgi.com Subject: Re: [PATCH 1/9] factor out xfs_read_agi helper Message-ID: <20081201234137.GA5094@sgi.com> References: <20080925225618.GB9822@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080925225618.GB9822@lst.de> User-Agent: Mutt/1.5.16 (2007-06-09) looks good. From billodo@sgi.com Mon Dec 1 17:40:48 2008 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 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 mB1Nel1J029929 for ; Mon, 1 Dec 2008 17:40:48 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id 913D23041DC for ; Mon, 1 Dec 2008 15:40:47 -0800 (PST) Received: from lnx-billodo.americas.sgi.com (lnx-billodo.americas.sgi.com [128.162.232.245]) by estes.americas.sgi.com (Postfix) with ESMTP id 7AC00700016A; Mon, 1 Dec 2008 17:40:47 -0600 (CST) Received: by lnx-billodo.americas.sgi.com (Postfix, from userid 56393) id E6FF217E01F; Mon, 1 Dec 2008 17:46:16 -0600 (CST) Date: Mon, 1 Dec 2008 17:46:16 -0600 From: "Bill O'Donnell" To: Christoph Hellwig Cc: xfs@sgi.com Subject: Re: [PATCH 2/9] factor out xfs_read_agf helper Message-ID: <20081201234616.GB5094@sgi.com> References: <20080925225622.GC9822@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080925225622.GC9822@lst.de> User-Agent: Mutt/1.5.16 (2007-06-09) On Fri, Sep 26, 2008 at 12:56:22AM +0200, Christoph Hellwig wrote: | Add a helper to read the AGF header and perform basic verification. | Based on hunks from a larger patch from Dave Chinner. looks good. From billodo@sgi.com Mon Dec 1 17:47:49 2008 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 relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB1NlnqW030400 for ; Mon, 1 Dec 2008 17:47:49 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id DA9778F8047 for ; Mon, 1 Dec 2008 15:47:48 -0800 (PST) Received: from lnx-billodo.americas.sgi.com (lnx-billodo.americas.sgi.com [128.162.232.245]) by estes.americas.sgi.com (Postfix) with ESMTP id BD38F700016A; Mon, 1 Dec 2008 17:47:48 -0600 (CST) Received: by lnx-billodo.americas.sgi.com (Postfix, from userid 56393) id 3734017E01F; Mon, 1 Dec 2008 17:53:18 -0600 (CST) Date: Mon, 1 Dec 2008 17:53:18 -0600 From: "Bill O'Donnell" To: Christoph Hellwig Cc: xfs@sgi.com Subject: Re: [PATCH 0/9] CRC support for superblock, ag headers, log and btree blocks Message-ID: <20081201235318.GC5094@sgi.com> References: <20080925225613.GA9822@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080925225613.GA9822@lst.de> User-Agent: Mutt/1.5.16 (2007-06-09) On Fri, Sep 26, 2008 at 12:56:13AM +0200, Christoph Hellwig wrote: | Here's an updated crc series for various metadata structures. We're still | looking at the magic number in the log recovery case because getting down | a buffer type for the other structures wasn't quite as easy as for the | btree block. I'll probably look into that again once we're done with all | data structures. I've carried out cursory build and test of this series. I'm concerned that my testing (and anyone else's testing) has not addressed performance hits being introduced with crc on metadata. What level of testing have you done, and can you recommend some testing that goes beyond the QA suite that we have in place. I did run the btree test harness on that earlier series, but it appeared to me that that was a go/no-go test and unless I'm missing something, I've not seen tests that might help quantify performance hits. Thanks, Bill From bnaujok@sgi.com Mon Dec 1 18:37:20 2008 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 relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB20bKYf000715 for ; Mon, 1 Dec 2008 18:37:20 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay3.corp.sgi.com (Postfix) with SMTP id F35E9AC009; Mon, 1 Dec 2008 16:37:15 -0800 (PST) Received: from pc-bnaujok.melbourne.sgi.com (pc-bnaujok.melbourne.sgi.com [134.14.55.58]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id LAA22978; Tue, 2 Dec 2008 11:37:07 +1100 Date: Tue, 02 Dec 2008 11:37:31 +1100 To: "Christoph Hellwig" Subject: Re: [REVIEW] Fix unaligned accesses in IA64 in xfsprogs From: "Barry Naujok" Organization: SGI Cc: "xfs@oss.sgi.com" Content-Type: text/plain; format=flowed; delsp=yes; charset=utf-8 MIME-Version: 1.0 References: <20081201134205.GA7528@infradead.org> Content-Transfer-Encoding: 7bit Message-ID: In-Reply-To: <20081201134205.GA7528@infradead.org> User-Agent: Opera Mail/9.52 (Win32) On Tue, 02 Dec 2008 00:42:05 +1100, Christoph Hellwig wrote: > On Mon, Dec 01, 2008 at 05:34:39PM +1100, Barry Naujok wrote: >> xfs_repair is the main culprit when getting disk extents which aren't >> properly aligned in memory. This patch does not call >> xfs_bmbt_disk_get_all directly anymore but does an unaligned get on >> the disk extent record and calls xfs_bmbt_get_all which is host-based >> like the rest of the kernel routines do. > > What about just doin the get_unaligned in xfs_bmbt_disk_get_all? That > way we could just use it everywhere. The only users that don't need > the get_unaligned are in the tracing code, and I don't think we should > be worried about that little bit of overhead. > >> @@ -277,21 +277,17 @@ convert_extent( >> xfs_dfilblks_t *cp, >> int *fp) >> { > > And then we could replace this helper with a direct call to > xfs_bmbt_disk_get_all as the caller would be much cleaner with a > xfs_bmbt_irec_t on the stack anyway.. Obviously modifying xfs_bmbt_disk_get_all yields a much smaller patch: =========================================================================== xfsprogs/db/bmap.c =========================================================================== --- a/xfsprogs/db/bmap.c 2008-12-02 11:21:00.000000000 +1100 +++ b/xfsprogs/db/bmap.c 2008-12-02 11:20:41.324928232 +1100 @@ -277,21 +277,14 @@ convert_extent( xfs_dfilblks_t *cp, int *fp) { - xfs_bmbt_irec_t irec, *s = &irec; - xfs_bmbt_rec_t rpcopy, *p = &rpcopy; + xfs_bmbt_irec_t irec; - memmove(&rpcopy, rp, sizeof(rpcopy)); - libxfs_bmbt_disk_get_all(p, s); + libxfs_bmbt_disk_get_all(rp, &irec); - if (s->br_state == XFS_EXT_UNWRITTEN) { - *fp = 1; - } else { - *fp = 0; - } - - *op = s->br_startoff; - *sp = s->br_startblock; - *cp = s->br_blockcount; + *fp = irec.br_state == XFS_EXT_UNWRITTEN; + *op = irec.br_startoff; + *sp = irec.br_startblock; + *cp = irec.br_blockcount; } void =========================================================================== xfsprogs/libxfs/xfs_bmap_btree.c =========================================================================== --- a/xfsprogs/libxfs/xfs_bmap_btree.c 2008-12-02 11:21:00.000000000 +1100 +++ b/xfsprogs/libxfs/xfs_bmap_btree.c 2008-12-02 11:20:09.553355392 +1100 @@ -181,7 +181,8 @@ xfs_bmbt_disk_get_all( xfs_bmbt_rec_t *r, xfs_bmbt_irec_t *s) { - __xfs_bmbt_get_all(be64_to_cpu(r->l0), be64_to_cpu(r->l1), s); + __xfs_bmbt_get_all(get_unaligned_be64(&r->l0), + get_unaligned_be64(&r->l1), s); } /* From bnaujok@sgi.com Mon Dec 1 18:41:59 2008 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB20fx1q000906 for ; Mon, 1 Dec 2008 18:41:59 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay3.corp.sgi.com (Postfix) with SMTP id EBEF8AC009; Mon, 1 Dec 2008 16:41:54 -0800 (PST) Received: from chook.melbourne.sgi.com (chook.melbourne.sgi.com [134.14.54.237]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id LAA23007; Tue, 2 Dec 2008 11:41:52 +1100 Received: by chook.melbourne.sgi.com (Postfix, from userid 1161) id B9A1158ADBF6; Tue, 2 Dec 2008 11:41:52 +1100 (EST) To: sgi.bugs.xfs@engr.sgi.com Cc: xfs@oss.sgi.com Subject: TAKE 990359 - xfs_repair: dino_chunks.c:612: process_inode_chunk: Assertion `cluster_count > 0 Message-Id: <20081202004152.B9A1158ADBF6@chook.melbourne.sgi.com> Date: Tue, 2 Dec 2008 11:41:52 +1100 (EST) From: bnaujok@sgi.com (Barry Naujok) Fix 64k blocksize handling in xfs_repair Date: Tue Dec 2 11:41:26 EST 2008 Workarea: chook.melbourne.sgi.com:/home/bnaujok/isms/xcmds-clean Inspected by: brads@sgi.com The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/xfs-cmds/master-melb Modid: master-melb:xfs-cmds:32616a xfsprogs/repair/dino_chunks.c - 1.18 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/repair/dino_chunks.c.diff?r1=text&tr1=1.18&r2=text&tr2=1.17&f=h - Fix 64k blocksize handling in xfs_repair From bnaujok@sgi.com Mon Dec 1 19:09:46 2008 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 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 mB219kEf002353 for ; Mon, 1 Dec 2008 19:09:46 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id 985B7304083 for ; Mon, 1 Dec 2008 17:09:42 -0800 (PST) Received: from chook.melbourne.sgi.com (chook.melbourne.sgi.com [134.14.54.237]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id MAA23438 for ; Tue, 2 Dec 2008 12:09:41 +1100 Received: by chook.melbourne.sgi.com (Postfix, from userid 1161) id 05A1258ADBF6; Tue, 2 Dec 2008 12:09:40 +1100 (EST) To: xfs@oss.sgi.com Subject: TAKE - xfsprogs: kill unused files db/dbread.[ch] Message-Id: <20081202010941.05A1258ADBF6@chook.melbourne.sgi.com> Date: Tue, 2 Dec 2008 12:09:40 +1100 (EST) From: bnaujok@sgi.com (Barry Naujok) kill unused files db/dbread.[ch] Date: Tue Dec 2 12:09:02 EST 2008 Workarea: chook.melbourne.sgi.com:/home/bnaujok/isms/xcmds-clean Inspected by: Christoph Hellwig The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/xfs-cmds/master-melb Modid: master-melb:xfs-cmds:32617a xfsprogs/db/dbread.c - 1.10 - deleted http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/db/dbread.c.diff?r1=text&tr1=1.10&r2=text&tr2=1.9&f=h xfsprogs/db/dbread.h - 1.7 - deleted http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/db/dbread.h.diff?r1=text&tr1=1.7&r2=text&tr2=1.6&f=h xfsprogs/db/Makefile - 1.20 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/db/Makefile.diff?r1=text&tr1=1.20&r2=text&tr2=1.19&f=h - kill unused files db/dbread.[ch] From bnaujok@sgi.com Mon Dec 1 19:20:16 2008 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 relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB21KFGM003055 for ; Mon, 1 Dec 2008 19:20:16 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay3.corp.sgi.com (Postfix) with SMTP id A8552AC09B for ; Mon, 1 Dec 2008 17:20:11 -0800 (PST) Received: from chook.melbourne.sgi.com (chook.melbourne.sgi.com [134.14.54.237]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id MAA23639 for ; Tue, 2 Dec 2008 12:20:10 +1100 Received: by chook.melbourne.sgi.com (Postfix, from userid 1161) id 217DA58ADBF6; Tue, 2 Dec 2008 12:20:09 +1100 (EST) To: xfs@oss.sgi.com Subject: TAKE - xfsprogs: pad ustat struct for mount check to avoid corruption Message-Id: <20081202012010.217DA58ADBF6@chook.melbourne.sgi.com> Date: Tue, 2 Dec 2008 12:20:09 +1100 (EST) From: bnaujok@sgi.com (Barry Naujok) Linux kernels (at least up until 2.6.27) are lacking compat sys_ustat handlers on some platforms (notably PPC) so that if called from 32 bits on a 64-bit kernel, the kernel will copy out too much (32 bytes onto a 20-byte structure): [root@xero xfstests]# xfs_logprint /dev/loop0 xfs_logprint: *** stack smashing detected ***: xfs_logprint terminated Aborted This will be fixed upstream, but for the benefit of older kernels we may want to guard against this by padding the structure we pass into the syscall. We don't care about the values anyway, just the return value. Signed-off-by: Eric Sandeen Date: Tue Dec 2 12:17:58 EST 2008 Workarea: chook.melbourne.sgi.com:/home/bnaujok/isms/xcmds-clean Inspected by: Eric Sandeen The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/xfs-cmds/master-melb Modid: master-melb:xfs-cmds:32618a xfsprogs/libxfs/linux.c - 1.19 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/libxfs/linux.c.diff?r1=text&tr1=1.19&r2=text&tr2=1.18&f=h - Pad ustat struct to avoid stack corruption From lachlan@sgi.com Mon Dec 1 21:25:19 2008 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB23PJJm010216 for ; Mon, 1 Dec 2008 21:25:19 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay3.corp.sgi.com (Postfix) with SMTP id 48009AC00B; Mon, 1 Dec 2008 19:25:15 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA25533; Tue, 2 Dec 2008 14:25:13 +1100 Message-ID: <4934AAA9.5090405@sgi.com> Date: Tue, 02 Dec 2008 14:25:29 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: Donald Douwsma CC: xfs@oss.sgi.com Subject: Re: Assertion failed: atomic_read(&mp->m_active_trans) References: <492BB095.1000104@sgi.com> In-Reply-To: <492BB095.1000104@sgi.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit That looks fine to me. Just make sure the PV doesn't get closed when you check in the changes since the real problem is still unresolved. Donald Douwsma wrote: > We still occasionally see transactions in flight after remounting > read-only. This has come up a few times in the past, but we never > seem to have gotten to the bottom of it. > > http://www.gossamer-threads.com/lists/linux/kernel/868139 > > Most recently we've seen this on 2.6.27, when unmounting the root > filesystem during shutdown/reboot. > > Stack traceback for pid 13170 > 0xffff81024dcd9080 13170 12901 1 1 R 0xffff81024dcd93c0 *mount > rsp rip Function (args) > 0xffff8101fb977d18 0xffffffff803b8acd assfail+0x1a (invalid, invalid, invalid) > 0xffff8101fb977d50 0xffffffff803a57e4 xfs_attr_quiesce+0x4a (0xffff8102211e4b20) > 0xffff8101fb977d70 0xffffffff803a589b xfs_mntupdate+0x7c (0xffff8102211e4b20, invalid, invalid) > 0xffff8101fb977d90 0xffffffff803b7cf6 xfs_fs_remount+0x49 (invalid, 0xffff8101fb977dd4, invalid) > 0xffff8101fb977dc0 0xffffffff802830fe do_remount_sb+0xe9 (0xffff81025c804670, invalid, 0xffff8101ee490000, invalid) > 0xffff8101fb977e00 0xffffffff8029698d do_remount+0x7d (0xffff8101fb977e58, invalid, invalid, 0xffff8101ee490000) > 0xffff8101fb977e40 0xffffffff802974fd do_mount+0x13b (0xffff8102079c2000, 0xffff8102004ea000, 0xffff810219cb0000, invalid, 0xffff8101ee490000) > 0xffff8101fb977f20 0xffffffff8029761a sys_mount+0x89 (0x523d90, invalid, invalid, 0xffffffffc0ed0021, 0x523e30) > 0xffff8101fb977f80 0xffffffff8020b18b system_call_after_swapgs+0x7b (invalid, invalid, invalid, invalid, invalid, invalid) > > Previously we've discussed changing the ASSERT_ALWAYS to a normal > ASSERT to lessen the impact for users. Any objections to doing this > until we fix the underlying problem? > > Don > > > > > ------------------------------------------------------------------------ > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From tes@sgi.com Mon Dec 1 21:54:45 2008 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 relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB23sieh011965 for ; Mon, 1 Dec 2008 21:54:45 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay3.corp.sgi.com (Postfix) with SMTP id 070A5AC00C; Mon, 1 Dec 2008 19:54:42 -0800 (PST) Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA25973; Tue, 2 Dec 2008 14:54:40 +1100 Message-ID: <4934B180.9000507@sgi.com> Date: Tue, 02 Dec 2008 14:54:40 +1100 From: Timothy Shimmin User-Agent: Thunderbird 2.0.0.17 (Macintosh/20080914) MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [XFS updates] XFS public tree - master for latest XFS changes... References: <200812010015.mB10F1Ab031727@oss.sgi.com> <20081201064949.GL6291@disturbed> In-Reply-To: <20081201064949.GL6291@disturbed> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Dave Chinner wrote: > On Sun, Nov 30, 2008 at 06:15:01PM -0600, Niv Sardi wrote: >> - Log ----------------------------------------------------------------- >> commit 0924b585fc49bf371bc700c23e516a538bf589af >> Author: Dave Chinner >> Date: Fri Nov 28 14:23:34 2008 +1100 >> >> [XFS] fix uninitialised variable bug in dquot release. >> >> gcc is warning about an uninitialised variable in xfs_growfs_rt(). >> This is a false positive. Fix it by changing the scope of the >> transaction pointer to wholly within the internal loop inside >> the function. > > The title of that doesn't match the description. I think it > was supposed to be: > > [PATCH 4/5] XFS: fix spurious uninitialised variable warning in xfs_growfs_rt > > BTW, can we get a one-line summary of the commits being referenced > in the message? Yes. The list of commits at the start now has the 1st line of each commit description. --Tim From tes@sgi.com Mon Dec 1 22:01:17 2008 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 relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB241HGC012413 for ; Mon, 1 Dec 2008 22:01:17 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id D7C658F8047; Mon, 1 Dec 2008 20:01:12 -0800 (PST) Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id PAA26115; Tue, 2 Dec 2008 15:01:10 +1100 Message-ID: <4934B305.3010205@sgi.com> Date: Tue, 02 Dec 2008 15:01:09 +1100 From: Timothy Shimmin User-Agent: Thunderbird 2.0.0.17 (Macintosh/20080914) MIME-Version: 1.0 To: Christoph Hellwig CC: Niv Sardi , xfs@oss.sgi.com Subject: Re: [XFS updates] XFS public tree - master for latest XFS changes... References: <200812010015.mB10F1Ab031727@oss.sgi.com> <20081201064949.GL6291@disturbed> <20081201090953.GA31696@infradead.org> In-Reply-To: <20081201090953.GA31696@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Christoph Hellwig wrote: > On Mon, Dec 01, 2008 at 05:49:49PM +1100, Dave Chinner wrote: >> On Sun, Nov 30, 2008 at 06:15:01PM -0600, Niv Sardi wrote: >>> - Log ----------------------------------------------------------------- >>> commit 0924b585fc49bf371bc700c23e516a538bf589af >>> Author: Dave Chinner >>> Date: Fri Nov 28 14:23:34 2008 +1100 >>> >>> [XFS] fix uninitialised variable bug in dquot release. >>> >>> gcc is warning about an uninitialised variable in xfs_growfs_rt(). >>> This is a false positive. Fix it by changing the scope of the >>> transaction pointer to wholly within the internal loop inside >>> the function. >> The title of that doesn't match the description. I think it >> was supposed to be: >> >> [PATCH 4/5] XFS: fix spurious uninitialised variable warning in xfs_growfs_rt > > Looks like xaiki just sucked in my staging tree where I mistpasted the > subject line. > >> BTW, can we get a one-line summary of the commits being referenced >> in the message? The commit hash is less than useful, and having to >> read through several hundred lines of commit logs to determine >> what was checked in is not fun..... > > Yeah, the new sort of commit messags aren't too useful. I would in fact > prefer to get the old style one mail per commit, maybe even including > the patch that was commited. I'm sure this is doable with git as there > are a lot of projects that do it. > I've changed the script to list the commits with the 1 line description as Dave suggested (hopefully what he was intending). However, I thought the msg per push was just fine. If you and others disagree, then I'll look at a per commit email hook I guess. --Tim From markgw@sgi.com Mon Dec 1 23:47:15 2008 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 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 mB25lFAG019636 for ; Mon, 1 Dec 2008 23:47:15 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id 4C6923041B7 for ; Mon, 1 Dec 2008 21:47:11 -0800 (PST) Received: from [134.15.251.1] (melb-sw-corp-251-1.corp.sgi.com [134.15.251.1]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA27693 for ; Tue, 2 Dec 2008 16:47:07 +1100 Message-ID: <4934CBD6.4040907@sgi.com> Date: Tue, 02 Dec 2008 16:47:02 +1100 From: Mark Goodwin Reply-To: markgw@sgi.com Organization: SGI Engineering User-Agent: Thunderbird 2.0.0.18 (Windows/20081105) MIME-Version: 1.0 To: xfs-oss Subject: XFS patch queue & plan for 2.6.29 open season Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Looks like 2.6.28 will have another two RC's before 2.6.29 opens. I'm unsure if that means before or after Christmas, but in any case we need to be ready before Christmas - we will have a massive pull request (largely but certainly not all due to the commit list held over from 2.6.28). Current status: # The XFS master branch on oss has taken everything in Christoph's staging tree http://www.kernel.org/pub/linux/kernel/people/hch/xfs/xfs-staging/series # We're about to take Eric's compat series (12 patches) # Christoph recently sent out a couple of review pings ;-) These need some review please (Niv? or anyone?). In the IRC listing below, there are another 15 to 20 or so on the list that need review. # After that, here's a quote from a public IRC chat late last week: that's only 30 patches - there are ~70 more still on the mail list there's still a few more -staging is the fully reviewd set I have another about 15 to 20 that need review that I've recently posted Eric has about 20 compat patches Dave has some patches that he still needs to repost and I also have some older stuff that needs reposting and then there's the whole dmapi stuff that needs the xfs-dev tree and once we have that cleared I have another at least 10 that I haven't bothered (re)posting and then there's the crc series which isn't for short-term commit I'll have a new version of that too once the dependencies are in ok so we'll just start with the fully reviewed set, then take some more and then stop and start testing for .29 candidate push OK, so the remaining patches are mostly from Christoph, though looks like Dave may have a few too. These are going to need a refresh against current master branch (or xfs-dev for DMAPI & kdb). Christoph, would a new staging tree be the best way to proceed, or should we start picking off the mail list? On-going, *ideally* after a patch series has received final rv and ack, the developer would post a git URL as the last post to the thread and we'd just pull from that. I guess that'd be a sort of "xfs-next" collaborative arrangement - we're all set up for this now (with git/ptools hooks in place internally, etc). Thanks -- Mark Goodwin markgw@sgi.com Engineering Manager for XFS and PCP Phone: +61-3-99631937 SGI Australian Software Group Cell: +61-4-18969583 ------------------------------------------------------------- From xaiki@oss.sgi.com Mon Dec 1 23:58:25 2008 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=ALL_TRUSTED,AWL,BAYES_40, J_CHICKENPOX_13,J_CHICKENPOX_15,J_CHICKENPOX_21,J_CHICKENPOX_32, J_CHICKENPOX_51,J_CHICKENPOX_52,J_CHICKENPOX_91 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB25wPgi021633 for ; Mon, 1 Dec 2008 23:58:25 -0600 Received: (from xaiki@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mB25wAjW020253; Mon, 1 Dec 2008 23:58:10 -0600 Date: Mon, 1 Dec 2008 23:58:10 -0600 Message-Id: <200812020558.mB25wAjW020253@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, mainline, updated. v2.6.28-rc3-1204-g061e41f X-Git-Refname: refs/heads/mainline X-Git-Reftype: branch X-Git-Oldrev: ed313489badef16d700f5a3be50e8fd8f8294bc8 X-Git-Newrev: 061e41fdb5047b1fb161e89664057835935ca1d2 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, mainline has been updated 061e41f Linux 2.6.28-rc7 0d81514 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 9c84ba4 drivers/gpu/drm/i915/i915_irq.c: fix warning 09a8126 i82875p_edac: fix module remove 307d114 i82875p_edac: fix overflow device resource setup bca404a fbdev: fix FB console blanking 0380155 ntfs: don't fool kernel-doc ced6909 kernel-doc: handle varargs cleanly 6ff2d39 lib/idr.c: fix rcu related race with idr_find 1d678f3 DMA-API.txt: fix description of pci_map_sg/dma_map_sg scatterlists handling 4280e31 frv: fix mmap2 error handling a800599 taint: add missing comment c4c6fa9 radeonfb: fix problem with color expansion & alignment b93c35f spi: fix spi_s3c24xx_gpio num_chipselect e39ea8a spi: fix spi_s3c24xx_gpio device handle lookup 4e253d2 spi: au1550_spi full duplex dma fix 6a010b5 spi: fix spi_imx probe oopsing 7ef9964 epoll: introduce resource usage limits b7d271d spi: mpc52xx_psc_spi chipselect bugfix aaacf4b spi: avoid spidev crash when device is removed dc8c214 spi documentation: use __initdata on struct dc924ef hwmon: applesmc: make applesmc load automatically on startup 36be47d parport_serial: fix array overflow dc19f9d memcg: memory hotplug fix for notifier callback b29acbd mm: vmalloc fix lazy unmapping cache aliasing 8650e51 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 d6b58f8 ocfs2: fix regression in ocfs2_read_blocks_sync() 07d9a39 ocfs2: fix return value set in init_dlmfs_fs() a2eee69 ocfs2: Small documentation update 07f9eeb ocfs2: fix wake_up in unlock_ast 66f502a ocfs2: initialize stack_user lvbptr 3b5da01 ocfs2: comments typo fix a693b0c em28xx: remove backward compat macro added on a previous fix 7ac0110 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev 484ab62 V4L/DVB (9748): em28xx: fix compile warning faa3bd2 V4L/DVB (9743): em28xx: fix oops audio 4bc2a9b Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband ac70a96 libata: blacklist Seagate drives which time out FLUSH_CACHE when used with NCQ 03f6084 [libata] pata_rb532_cf: fix signature of the xfer function 9f14786 [libata] pata_rb532_cf: fix and rename register definitions 1eedb4a ata_piix: add borked Tecra M4 to broken suspend list b0f43dc Merge branches 'ehca' and 'mlx4' into for-linus 42ab01c IB/mlx4: Fix MTT leakage in resize CQ 7ec4f46 IB/ehca: Fix problem with generated flush work completions 6b1f9d6 IB/ehca: Change misleading error message on memory hotplug 6a12141 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 c07f62e Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid e540458 Add kref to fake tty used by USB console 296fa7f drivers/char/tty_io.c: Avoid panic when no console is configured. b4dcfbe Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 ecf318c Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2a1dc50 vmscan: protect zone rotation stats by lru lock 33b07db Revert "of_platform_driver noise on sparce" 5bb4bd9 USB: serial: add more Onda device ids to option driver 621b239 USB: usb-storage: unusual_devs entry for Nikon D2H a6b7b03 USB: storage: unusual_devs entry for Mio C520-GPS 1f15a50 USB: fsl_usb2_udc: Report disconnect before unbinding 9ac36da USB: fsl_qe_udc: Report disconnect before unbinding 0a99e8a USB: fix SB600 USB subsystem hang bug 269f053 Revert "USB: improve ehci_watchdog's side effect in CPU power management" a1e0eb1 powerpc: Fix build for 32-bit SMP configs d9d060a Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 03cfdb8 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 4ec8f07 Merge master.kernel.org:/home/rmk/linux-2.6-arm 151903d drm/i915: Fix copy'n'pasteo that broke VT switch if flushing was non-empty. ab598b6 powerpc: Fix system calls on Cell entered with XER.SO=1 960cedb powerpc/cell: Fix GDB watchpoints, again cc353c3 powerpc/mpic: Don't reset affinity for secondary MPIC on boot d015fe9 powerpc/cell/axon-msi: Retry on missing interrupt 4a61866 powerpc: Fix boot freeze on machine with empty memory node 4b824de powerpc: Fix IRQ assignment for some PCIe devices a6e470f Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6 8e36a5d Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 9bd062d Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 72244c0 Merge branch 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 93b1005 Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 7bbc67f Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 66a45cc Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 8639dad Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 9297524 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6 8c7b905 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq 1838e39 Trivial Documentation/filesystems/ramfs-rootfs-initramfs.txt fix 42182c78 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 e2a2444 Merge branch 'linux-next' of git://git.infradead.org/~dedekind/ubi-2.6 8decec7 Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 499c59c MN10300: Tighten up the code using case ranges f1ba3bc Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 95c5e1f Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 b31a0fe Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 96b8936 remove __ARCH_WANT_COMPAT_SYS_PTRACE 16799c6 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 211f05a input: replace spin_lock_bh with spin_lock_irqsave in ml_ff_playback 02d0e67 hotplug_memory_notifier section annotation d3a307f sn_pci_controller_fixup() should be __init ffb78a2 get xenbus_driver ->probe() "recognized" by modpost df6b079 xen_play_dead() is __cpuinit 37af46e xen_setup_vcpu_info_placement() is not init on x86 23a14b9 kvm_setup_secondary_clock() is cpuinit 2236d25 enable_IR_x2apic() needs to be __init ad04d31 pci_setup() is init, not devinit 4bcc17d alpha: pcibios_resource_to_bus() is callable from normal code 56d74dd tricky one: hisax sections 8419641 cpuinit fixes in kernel/* b038514 uninorth-agp section mess 37d33d1 rapidio section noise f57628d section errors in smc911x/smc91x 5bac287 fix the section noise in sparc head.S 1c4567a m32r: section noise in head.S 8814b50 section misannotation in ibmtr_cs 43ced65 ixgbe section fixes 31421a6 rackmeter section fixes ced7172 gdth section fixes e669dae of_platform_driver noise on sparce 3003781 advansys fix on ISA-less configs 2fceab0 W1_MASTER_DS1WM should depend on HAVE_CLK d16d766 icside section warnings 596f103 fix talitos 6005e3e istallion section warnings 8c29890 sparc64 trivial section misannotations 409832f sparc32 cpuinit flase positives 4ea8fb9 powerpc set_huge_psize() false positive 7d6a8a1 false __cpuinit positives on alpha 3116848 meminit section warnings af6d596 sched: prevent divide by zero error in cpu_avg_load_per_task, update 1583715 sched, cpusets: fix warning in kernel/cpuset.c 2642b11 ieee1394: sbp2: fix race condition in state change e47c1fe ieee1394: fix list corruption (reported at module removal) 9a5aa62 mlx4_core: Save/restore default port IB capability mask 23d0a65 toshiba_acpi: close race in toshiba_acpi driver 7b964f7 i2c-parport: Fix misplaced parport_release call 79b93e1 i2c: Remove i2c clients in reverse order d1846b0 i2c/isp1301_omap: Build fixes ee8a1a0 HID: Apple ALU wireless keyboards are bluetooth devices af38d90 Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 487ff32 Allow architectures to override copy_user_highpage() 52b19ac udf: Fix BUG_ON() in destroy_inode() a730b32 [ARM] pxa/palmtx: misc fixes to use generic GPIO API b627c8b x86: always define DECLARE_PCI_UNMAP* macros 6417a91 Merge branch 'omap-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 abd9421 [S390] Update default configuration. 0778dc3 [S390] Fix alignment of initial kernel stack. 2944a5c [S390] pgtable.h: Fix oops in unmap_vmas for KVM processes 8107d82 [S390] fix/cleanup sched_clock 59da213 [S390] fix system call parameter functions. 4cd4262 sched: prevent divide by zero error in cpu_avg_load_per_task 4f5a7f4 ftrace: prevent recursion e899b64 ACPICA: disable _BIF warning a6e0887 ACPI: delete OSI(Linux) DMI dmesg spam 95a28ed ACPICA: Allow _WAK method to return an Integer 0081b16 ACPI: thinkpad-acpi: fix fan sleep/resume path 3fedd90 sony-laptop: printk tweak 38cfc14 sony-laptop: brightness regression fix 3bdca1b Revert "ACPI: don't enable control method power button as wakeup device when Fixed Power button is used" 65df784 ACPI suspend: Blacklist boxes that require us to set SCI_EN directly on resume 4059907 ACPI: scheduling in atomic via acpi_evaluate_integer () 723fdb7 ARM: OMAP: Fixes for suspend / resume GPIO wake-up handling 558073d ACPI: battery: Convert discharge energy rate to current properly 90f6713 parisc: struct device - replace bus_id with dev_name(), dev_set_name() 7a3f513 parisc: fix kernel crash when unwinding a userspace process 9860d1b parisc: __kernel_time_t is always long 7b4d469 ACPI: EC: count interrupts only if called from interrupt handler. a98ee8c [CIFS] fix regression in cifs_write_begin/cifs_write_end 545f4e9 Input: wacom - add support for new USB Tablet PCs 461cba2 drm/i915: Save/restore HWS_PGA on suspend/resume 2fd36a5 [ARM] pxa/corgi: update default config to exclude tosa from being built 72e9622 [ARM] pxa/pcm990: use negative number for an invalid GPIO in camera data ffd565a x86: fixup config space size of CPU functions for AMD family 11h 147dcf5 ARM: OMAP: Typo fix for clock_allow_idle 031bb27 firewire: fw-sbp2: another iPod mini quirk entry 9e0de91 ieee1394: sbp2: another iPod mini quirk entry a266d9f [CPUFREQ] powernow-k8: ignore out-of-range PstateStatus value 121fe86 [CPUFREQ] Documentation: Add Blackfin to list of supported processors de90add x86, bts: fix wrmsr and spinlock over kmalloc c4858ff x86, pebs: fix PEBS record size configuration e5e8ca6 x86, bts: turn macro into static inline function 292c669 x86, bts: exclude ds.c from build when disabled b628353 Merge branch 'topic/fix/hda' into for-linus eff79ae arch/x86/kernel/pci-calgary_64.c: change simple_strtol to simple_strtoul 5cf02b7 x86: use limited register constraint for setnz 661cd8f ALSA: hda - Check model for Dell 92HD73xx laptops c65574a ALSA: hda - mark Dell studio 1535 quirk 9502662 ALSA: hda - No 'Headphone as Line-out' swich without line-outs f73d358 ALSA: hda - Fix AFG power management on IDT 92HD* codecs 9e97697 ALSA: hda - Fix caching of SPDIF status bits 7953031 ARM: OMAP: Remove broken LCD driver for SX1 5244021 drm: move drm vblank initialization/cleanup to driver load/unload 6133047 drm/i915: execbuffer pins objects, no need to ensure they're still in the GTT 05eff84 drm/i915: Always read pipestat in irq_handler 2678d9d drm/i915: Subtract total pinned bytes from available aperture size 28dfe52 drm/i915: Avoid BUG_ONs on VT switch with a wedged chipset. cdfbc41 drm/i915: Remove IMR masking during interrupt handler, and restart it if needed. 7c46358 drm/i915: Manage PIPESTAT to control vblank interrupts instead of IMR. 8442c87 Input: replace spin_lock_bh with spin_lock_irqsave in ml_ff_playback 8ec2e24 MIPS: Make BUG() __noreturn. 50f3beb V4L/DVB (9742): em28xx-alsa: implement another locking schema 7a8f4cc V4L/DVB (9732): sms1xxx: use new firmware for Hauppauge WinTV MiniStick e07a1d8 V4L/DVB (9691): gspca: Move the video device to a separate area. 5c4fa00 V4L/DVB (9690): gspca: Lock the subdrivers via module_get/put. 98522a7 V4L/DVB (9689): gspca: Memory leak when disconnect while streaming. 3f9b5d4 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/jk/spufs into merge be542fa Merge branch 'merge' of ssh://master.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx into merge 11bac8a Merge branch 'merge' of git://git.secretlab.ca/git/linux-2.6-mpc52xx into merge fb91ee6 tracing, doc: update mmiotrace documentation 7ee1768 x86, mmiotrace: fix buffer overrun detection 47fd6f7 [ARM] 5335/1: pxa25x_udc: Fix is_vbus_present to return 1 or 0 86bbc2c xen: pin correct PGD on suspend 3d994e1 Merge branch 'oprofile-for-tip' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile into x86/urgent fde5be3 HID: remove setup mutex, fix possible deadlock a1967d6 x86: revert irq number limitation 2ed1cdc irq.h: fix missing/extra kernel-doc 9f14416 Merge commit 'v2.6.28-rc6' into irq/urgent 844c6f6 [ARM] pxa/MioA701: bluetooth resume fix 999f633 [ARM] pxa/MioA701: fix memory corruption. 57550b2 Merge commit 'v2.6.28-rc6' into x86/urgent b0788ca lockdep: consistent alignement for lockdep info 522a110 function tracing: fix wrong position computing of stack_trace c879c63 Merge branches 'topic/fix/hda' and 'topic/fix/sound-core' into for-linus b0fc5e0 ALSA: hda - Add a quirk for Dell Studio 15 3a7abfd ALSA: hda: Add STAC_DELL_M4_3 quirk a39c4ad sound/sound_core: Fix sparse warnings 6065726 powerpc/spufs: Fix spinning in spufs_ps_fault on signal 818a557 V4L/DVB (9668): em28xx: fix a race condition with hald cce2571 V4L/DVB (9664): af9015: don't reconnect device in USB-bus f2a2e49 V4L/DVB (9647): em28xx: void having two concurrent control URB's c4a9879 V4L/DVB (9646): em28xx: avoid allocating/dealocating memory on every control urb 625ff16 V4L/DVB (9645): em28xx: Avoid memory leaks if registration fails 0253fdc ALSA: hda: STAC_DELL_M6 EAPD bfe085f x86: fixing __cpuinit/__init tangle, xsave_cntxt_init() 9bc646f x86: fix __cpuinit/__init tangle in init_thread_xstate() 578f3a3 HID: add USB ID for another dual gameron adapter 06d2148 HID: unignore mouse on unibody macbooks 5f4ba04 Input: i8042 - add Compal Hel80 laptop to nomux blacklist e871809 powerpc/mpc832x_rdb: fix swapped ethernet ids 06597aa powerpc: Use generic PHY driver for Marvell 88E1111 PHY on GE Fanuc SBC610 f464ff5 powerpc/85xx: L2 cache size wrong in 8572DS dts a4a16be oprofile: fix an overflow in ppro code 99afb98 V4L/DVB (9639): Make dib0700 remote control support work with firmware v1.20 deaf53e V4L/DVB (9635): v4l: s2255drv fix firmware test on big-endian 41286d9 V4L/DVB (9634): Make sure the i2c gate is open before powering down tuner 3f9b46c V4L/DVB (9632): make em28xx aux audio input work 3fa37de V4L/DVB (9631): Make s2api work for ATSC support c41109f V4L/DVB (9627): em28xx: Avoid i2c register error for boards without eeprom df4533a V4L/DVB (9608): Fix section mismatch warning for dm1105 during make 4faf100 V4L/DVB (9605): usb-urb: fix memory leak 7935eea V4L/DVB (9604): ttusb_dec: fix memory leak b7ed785 V4L/DVB (9603): dvb-ttusb-budget: Add validation for ttusb_alloc_iso_urbs 11eb260 V4L/DVB (9602): dvb-ttusb-budget: Add NULL pointer validation d7c31a1 V4L/DVB (9601): ttusb_dec: Add NULL pointer validation 5181e59 HID: fix blacklist entries for greenasia/pantherlord c8d6988 powerpc/virtex: Update defconfigs c7c2ffb powerpc/52xx: update defconfigs c14464b xsysace: Fix driver to use resource_size_t instead of unsigned long a108096 powerpc/virtex: fix various format/casting printk mismatches 847cdf4 powerpc/mpc5200: fix bestcomm Kconfig dependencies 6612d9b powerpc/44x: Fix 460EX/460GT machine check handling 5907630 powerpc/40x: Limit allocable DRAM during early mapping 3ff68a6 genirq: __irq_set_trigger: change pr_warning to pr_debug 734f0ba Input: cm109 - add keymap for ATCom AU-100 phone 4f48544 Input: fix the example of an input device driver 5fb17fd Input: psmouse - fix incorrect validate_byte check in OLPC protocol d6d79a7 Input: atkbd - cancel delayed work before freeing its structure a8215b8 Input: atkbd - add keymap quirk for Inventec Symphony systems 786b11c Input: i8042 - add Dell XPS M1530 to nomux list f131e24 irq: fix typo 6c2e940 x86: apic honour irq affinity which was set in early boot 612e368 genirq: fix the affinity setting in setup_irq f6d87f4 genirq: keep affinities set from userspace across free/request_irq() 2ad4988 UBI: Don't exit from ubi_thread until kthread_should_stop() is true b77bcb0 UBI: fix EBADMSG handling 9a5415f Input: elo - fix format string in elo driver from ed313489badef16d700f5a3be50e8fd8f8294bc8 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 061e41fdb5047b1fb161e89664057835935ca1d2 Author: Linus Torvalds Date: Mon Dec 1 19:59:23 2008 -0800 Linux 2.6.28-rc7 commit 0d815142d1988899c97514a25ce5a9f4880e7fc8 Merge: 9c84ba4e502184d95ab75128d3166f595ea2dea0 a693b0cdba94f60f7ed43754d2c34151cdd11da5 Author: Linus Torvalds Date: Mon Dec 1 19:56:34 2008 -0800 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: (25 commits) em28xx: remove backward compat macro added on a previous fix V4L/DVB (9748): em28xx: fix compile warning V4L/DVB (9743): em28xx: fix oops audio V4L/DVB (9742): em28xx-alsa: implement another locking schema V4L/DVB (9732): sms1xxx: use new firmware for Hauppauge WinTV MiniStick V4L/DVB (9691): gspca: Move the video device to a separate area. V4L/DVB (9690): gspca: Lock the subdrivers via module_get/put. V4L/DVB (9689): gspca: Memory leak when disconnect while streaming. V4L/DVB (9668): em28xx: fix a race condition with hald V4L/DVB (9664): af9015: don't reconnect device in USB-bus V4L/DVB (9647): em28xx: void having two concurrent control URB's V4L/DVB (9646): em28xx: avoid allocating/dealocating memory on every control urb V4L/DVB (9645): em28xx: Avoid memory leaks if registration fails V4L/DVB (9639): Make dib0700 remote control support work with firmware v1.20 V4L/DVB (9635): v4l: s2255drv fix firmware test on big-endian V4L/DVB (9634): Make sure the i2c gate is open before powering down tuner V4L/DVB (9632): make em28xx aux audio input work V4L/DVB (9631): Make s2api work for ATSC support V4L/DVB (9627): em28xx: Avoid i2c register error for boards without eeprom V4L/DVB (9608): Fix section mismatch warning for dm1105 during make ... commit 9c84ba4e502184d95ab75128d3166f595ea2dea0 Author: Andrew Morton Date: Mon Dec 1 13:14:08 2008 -0800 drivers/gpu/drm/i915/i915_irq.c: fix warning drivers/gpu/drm/i915/i915_irq.c: In function 'i915_disable_pipestat': drivers/gpu/drm/i915/i915_irq.c:101: warning: control may reach end of non-void function 'i915_pipestat' being inlined Cc: Dave Airlie Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 09a81269c7aadaec3375a7ebd9647acbb72f5a67 Author: Jarkko Lavinen Date: Mon Dec 1 13:14:08 2008 -0800 i82875p_edac: fix module remove Fix module removal bugs of i82875p_edac. Also i82975x_edac code seems to have the same module removal bugs as in i82875p_edac. The problems were: 1. In module removal i82875p_remove_one() is never called. Variable i82875p_registered is newer changed from 1, which guarantees i82875p_remove_one() is not called (and even if it were called, it would be called in wrong order). As a result, the edac_mc workque is not stopped and keeps probing. If kernel debugging options are not enabled, user may not notice anything going wrong. if debugging options are enabled and I do "rmmod i82875p_edac", I get: edac debug: edac_pci_workq_function() checking BUG: unable to handle kernel paging request at f882d16f ... call trace: [] ? edac_mc_workq_function+0x55/0x7e [edac_core] [] ? run_workqueue+0xd7/0x1a5 [] ? run_workqueue+0x92/0x1a5 [] ? edac_mc_workq_function+0x0/0x7e [edac_core] [] ? worker_thread+0xb7/0xc3 [] ? autoremove_wake_function+0x0/0x33 [] ? worker_thread+0x0/0xc3 [] ? kthread+0x3b/0x61 [] ? kthread+0x0/0x61 [] ? kernel_thread_helper+0x7/0x10 Fix for this is to get rid of needles variable i82875p_registered altogether and run i82875p_remove_one() *before* pci_unregister_driver(). 2. edac_mc_del_mc() uses mci after freeing mci edac_mc_del_mc() calls calls edac_remove_sysfs_mci_device(). The kobject refcount of mci drops to 0 and mci is freed. After this mci is accessed via debug print and i82875p_remove_one() still uses mci->pvt and tries to free mci again with edac_mc_free(). The fix for this is add kobject_get(&mci->edac_mci_kobj) after edac_mc_alloc(). Then the mci is still available after returning from edac_mc_del_mc() with refcount 1, and mci->pvt is still available. When i82875p_remove_one() finally calls edac_mc_free(), this will cause kobject_put() and mci is released properly. Signed-off-by: Jarkko Lavinen Cc: Doug Thompson Cc: Alan Cox Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 307d114441f905e4576871ff28d06408a1af1a7e Author: Jarkko Lavinen Date: Mon Dec 1 13:14:06 2008 -0800 i82875p_edac: fix overflow device resource setup When I do "modprobe i82875p_edac" on my Asus P4C800 MB on kernels 2.6.26 or later, the module load fails due to BAR 0 collision. On 2.6.25 the module loads just fine. The overflow device on the MB seems to be hidden and its resources are not allocated at normal PCI bus init. Log shows the missing resource problem: EDAC DEBUG: i82875p_probe1() PCI: 0000:00:06.0 reg 10 32bit mmio: [fecf0000, fecf0fff] pci 0000:00:06.0: device not available because of BAR 0 [0xfecf0000-0xfecf0fff] collisions EDAC i82875p: i82875p_setup_overfl_dev(): Failed to enable overflow device The patch below fixes this by calling pci_bus_assign_resources() after the overflow device is revealed and added to the bus. With this patch I am again able to load and use the module. Signed-off-by: Jarkko Lavinen Cc: Doug Thompson Cc: Jesse Barnes Cc: Alan Cox Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit bca404afdc5206c3bb30168315ee8a98a579ec65 Author: Dmitry Baryshkov Date: Mon Dec 1 13:14:05 2008 -0800 fbdev: fix FB console blanking The commit aef7db4bd5a3b6068dfa05919a3d685199eed116 fixed the problem with recursive locking in fb blanking code if blank is caused by user setting the /sys/class/graphics/fb*/blank. However this broke the fbcon timeout blanking. If you use a driver that defines ->fb_blank operation and at the same time that driver relies on other driver (e.g. backlight or lcd class) to blank the screen, when the fbcon times out and tries to blank the fb, it will call only fb driver blanker and won't notify the other driver. Thus FB output is disabled, but the screen isn't blanked. Restore fbcon blanking and at the same time apply the proper fix for the above problem: if fbcon_blank is called with FBINFO_FLAG_USEREVENT, we are already called through notification from fb_blank, thus we don't have to blank the fb again. Signed-off-by: Dmitry Baryshkov Cc: Geert Uytterhoeven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 03801553630c4bec6682108800c9b2de64bdbd37 Author: Randy Dunlap Date: Mon Dec 1 13:14:04 2008 -0800 ntfs: don't fool kernel-doc kernel-doc handles macros now (it has for quite some time), so change the ntfs_debug() macro's kernel-doc to be just before the macro instead of before a phony function prototype. [akpm@linux-foundation.org: coding-style fixes] Signed-off-by: Randy Dunlap Cc: Anton Altaparmakov Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit ced69090c573f1db253fb6b84ec537f4f3d7e2f4 Author: Randy Dunlap Date: Mon Dec 1 13:14:03 2008 -0800 kernel-doc: handle varargs cleanly The method for listing varargs in kernel-doc notation is: * @...: these arguments are printed by the @fmt argument but scripts/kernel-doc is confused: it always lists varargs as: ... variable arguments and ignores the @...: line's description, but then prints that line after the list of function parameters as though it's not part of the function parameters. This patch makes kernel-doc print the supplied @... description if it is present; otherwise a boilerplate "variable arguments" is printed. Signed-off-by: Randy Dunlap Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 6ff2d39b91aec3dcae951afa982059e3dd9b49dc Author: Manfred Spraul Date: Mon Dec 1 13:14:02 2008 -0800 lib/idr.c: fix rcu related race with idr_find 2nd part of the fixes needed for http://bugzilla.kernel.org/show_bug.cgi?id=11796. When the idr tree is either grown or shrunk, then the update to the number of layers and the top pointer were not atomic. This race caused crashes. The attached patch fixes that by replicating the layers counter in each layer, thus idr_find doesn't need idp->layers anymore. Signed-off-by: Manfred Spraul Cc: Clement Calmels Cc: Nadia Derbey Cc: Pierre Peiffer Cc: Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 1d678f365dae28420fa7329a2a35390b3582678d Author: FUJITA Tomonori Date: Mon Dec 1 13:14:01 2008 -0800 DMA-API.txt: fix description of pci_map_sg/dma_map_sg scatterlists handling - pci_map_sg/dma_map_sg are used with a scatter gather list that doesn't come from the block layer (e.g. some network drivers do). - how IOMMUs merge adjacent elements of the scatter/gather list is independent of how the block layer determines sees elements. Signed-off-by: FUJITA Tomonori Cc: James Bottomley Cc: Tejun Heo Cc: Jens Axboe Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 4280e3126f641898f0ed1a931645373d3489e2a6 Author: David Howells Date: Mon Dec 1 13:14:00 2008 -0800 frv: fix mmap2 error handling Fix the error handling in sys_mmap2(). Currently, if the pgoff check fails, fput() might have to be called (which it isn't), so do the pgoff check first, before fget() is called. Signed-off-by: David Howells Reported-by: Julia Lawall Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit a8005992836434cab6182c6147993d21442184c1 Author: Arjan van de Ven Date: Mon Dec 1 13:14:00 2008 -0800 taint: add missing comment The description for 'D' was missing in the comment... (causing me a minute of WTF followed by looking at more of the code) Signed-off-by: Arjan van de Ven Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit c4c6fa9891f3d1bcaae4f39fb751d5302965b566 Author: Benjamin Herrenschmidt Date: Mon Dec 1 13:13:58 2008 -0800 radeonfb: fix problem with color expansion & alignment The engine on some radeon variants locks up if color expansion is called for non aligned source data. This patch enables a feature of the core fbdev to request aligned input pixmaps and uses the HW clipping engine to clip the output to the requested size Addresses http://bugzilla.kernel.org/show_bug.cgi?id=11875 Signed-off-by: Benjamin Herrenschmidt Tested-by: James Cloos Cc: "Rafael J. Wysocki" Cc: "David S. Miller" Cc: Krzysztof Helt Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit b93c35ff39d19f20c47c06c206986afefecc777a Author: Ben Dooks Date: Mon Dec 1 13:13:57 2008 -0800 spi: fix spi_s3c24xx_gpio num_chipselect The spi master driver must have num_chipselect set to allow the bus to initialise. Pass this through the platform data. Signed-off-by: Ben Dooks Signed-off-by: David Brownell Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit e39ea8a2def1fcb203ed0183317124348962e351 Author: Ben Dooks Date: Mon Dec 1 13:13:56 2008 -0800 spi: fix spi_s3c24xx_gpio device handle lookup The spidev_to_sg() call in spi_s3c24xx_gpio.c was using the wrong method to convert the spi device into the private data for the driver. Fix this by using spi_master_get_devdata. Signed-off-by: Ben Dooks Signed-off-by: David Brownell Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 4e253d23003b54c88d0919d6088be74f00eec3c7 Author: Jan Nikitenko Date: Mon Dec 1 13:13:56 2008 -0800 spi: au1550_spi full duplex dma fix Fix unsafe order in dma mapping operation: always flush data from the cache *BEFORE* invalidating it, to allow full duplex transfers where the same buffer may be used for both writes and reads. Tested with mmc-spi. Signed-off-by: Jan Nikitenko Signed-off-by: David Brownell Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 6a010b56e9bd2fdb32efd153e1a08305949b6b53 Author: Julien Boibessot Date: Mon Dec 1 13:13:55 2008 -0800 spi: fix spi_imx probe oopsing Corrects spi_imx driver oops during initialization/probing: can't use drv_data before it's allocated. Signed-off-by: Julien Boibessot Acked-by: Sascha Hauer Signed-off-by: David Brownell Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 7ef9964e6d1b911b78709f144000aacadd0ebc21 Author: Davide Libenzi Date: Mon Dec 1 13:13:55 2008 -0800 epoll: introduce resource usage limits It has been thought that the per-user file descriptors limit would also limit the resources that a normal user can request via the epoll interface. Vegard Nossum reported a very simple program (a modified version attached) that can make a normal user to request a pretty large amount of kernel memory, well within the its maximum number of fds. To solve such problem, default limits are now imposed, and /proc based configuration has been introduced. A new directory has been created, named /proc/sys/fs/epoll/ and inside there, there are two configuration points: max_user_instances = Maximum number of devices - per user max_user_watches = Maximum number of "watched" fds - per user The current default for "max_user_watches" limits the memory used by epoll to store "watches", to 1/32 of the amount of the low RAM. As example, a 256MB 32bit machine, will have "max_user_watches" set to roughly 90000. That should be enough to not break existing heavy epoll users. The default value for "max_user_instances" is set to 128, that should be enough too. This also changes the userspace, because a new error code can now come out from EPOLL_CTL_ADD (-ENOSPC). The EMFILE from epoll_create() was already listed, so that should be ok. [akpm@linux-foundation.org: use get_current_user()] Signed-off-by: Davide Libenzi Cc: Michael Kerrisk Cc: Cc: Cyrill Gorcunov Reported-by: Vegard Nossum Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit b7d271df873c5121a4ca1c70dea126b5920ec2f1 Author: Stefano Babic Date: Mon Dec 1 13:13:53 2008 -0800 spi: mpc52xx_psc_spi chipselect bugfix According to the manual the "tdfOnExit" flag must be set on the last byte we want to send. The PSC controller holds SS low until the flag is set. However, the flag was set always on the last byte of the FIFO, independently if it is the last byte of the transfer. This generates spurious toggling of the SS signals that breaks the protocol of some peripherals. Fix. Signed-off-by: Stefano Babic Acked-by: Grant Likely Signed-off-by: David Brownell Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit aaacf4bb51b243875b203e6ff73b5047636b4efa Author: Wolfgang Ocker Date: Mon Dec 1 13:13:52 2008 -0800 spi: avoid spidev crash when device is removed I saw a kernel oops in spidev_remove() when a spidev device was registered and I unloaded the SPI master driver: Unable to handle kernel paging request for data at address 0x00000004 Faulting instruction address: 0xc01c0c50 Oops: Kernel access of bad area, sig: 11 [#1] CDSPR Modules linked in: spi_ppc4xx(-) NIP: c01c0c50 LR: c01bf9e4 CTR: c01c0c34 REGS: cec89c30 TRAP: 0300 Not tainted (2.6.27.3izt) MSR: 00021000 CR: 24000228 XER: 20000007 DEAR: 00000004, ESR: 00800000 TASK = cf889040[2070] 'rmmod' THREAD: cec88000 GPR00: 00000000 cec89ce0 cf889040 cec8e000 00000004 cec8e000 ffffffff 00000000 GPR08: 0000001c c0336380 00000000 c01c0c34 00000001 1001a338 100e0000 100df49c GPR16: 100b54c0 100df49c 100ddd20 100f05a8 100b5340 100efd68 00000000 00000000 GPR24: 100ec008 100f0428 c0327788 c0327794 cec8e0ac cec8e000 c0336380 00000000 NIP [c01c0c50] spidev_remove+0x1c/0xe4 LR [c01bf9e4] spi_drv_remove+0x2c/0x3c Call Trace: [cec89d00] [c01bf9e4] spi_drv_remove+0x2c/0x3c [cec89d10] [c01859a0] __device_release_driver+0x78/0xb4 [cec89d20] [c0185ab0] device_release_driver+0x28/0x44 [cec89d40] [c0184be8] bus_remove_device+0xac/0xd8 [cec89d60] [c0183094] device_del+0x100/0x194 [cec89d80] [c0183140] device_unregister+0x18/0x30 [cec89da0] [c01bf30c] __unregister+0x20/0x34 [cec89db0] [c0182778] device_for_each_child+0x38/0x74 [cec89de0] [c01bf2d0] spi_unregister_master+0x28/0x44 [cec89e00] [c01bfeac] spi_bitbang_stop+0x1c/0x58 [cec89e20] [d908a5e0] spi_ppc4xx_of_remove+0x24/0x7c [spi_ppc4xx] [...] IMHO a call to spi_set_drvdata() is missing in spidev_probe(). The patch below helped. Signed-off-by: Wolfgang Ocker Signed-off-by: David Brownell Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit dc8c214a9c37eb288b1c4782632649e55d251c68 Author: roel kluin Date: Mon Dec 1 13:13:51 2008 -0800 spi documentation: use __initdata on struct Use __initdata for data, not __init. Signed-off-by: Roel Kluin Signed-off-by: David Brownell Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit dc924efb52ba9e4dffec5b15ae2242b894198139 Author: Henrik Rydberg Date: Mon Dec 1 13:13:49 2008 -0800 hwmon: applesmc: make applesmc load automatically on startup make use of the new dmi device loading support to automatically load the applesmc driver based on the dmi_match table. Signed-off-by: Henrik Rydberg Cc: Nicolas Boichat Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 36be47d6d8d98f54b6c4f891e9f54fb2bf554584 Author: Takashi Iwai Date: Mon Dec 1 13:13:49 2008 -0800 parport_serial: fix array overflow The netmos_9xx5_combo type assumes that PCI SSID provides always the correct value for the number of parallel and serial ports, but there are indeed broken devices with wrong numbers, which may result in Oops. This patch simply adds the check of the array range. Reference: Novell bnc#447067 https://bugzilla.novell.com/show_bug.cgi?id=447067 Signed-off-by: Takashi Iwai Cc: Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit dc19f9db38295f811d9041bd89b113beccbd763a Author: KAMEZAWA Hiroyuki Date: Mon Dec 1 13:13:48 2008 -0800 memcg: memory hotplug fix for notifier callback Fixes for memcg/memory hotplug. While memory hotplug allocate/free memmap, page_cgroup doesn't free page_cgroup at OFFLINE when page_cgroup is allocated via bootomem. (Because freeing bootmem requires special care.) Then, if page_cgroup is allocated by bootmem and memmap is freed/allocated by memory hotplug, page_cgroup->page == page is no longer true. But current MEM_ONLINE handler doesn't check it and update page_cgroup->page if it's not necessary to allocate page_cgroup. (This was not found because memmap is not freed if SPARSEMEM_VMEMMAP is y.) And I noticed that MEM_ONLINE can be called against "part of section". So, freeing page_cgroup at CANCEL_ONLINE will cause trouble. (freeing used page_cgroup) Don't rollback at CANCEL. One more, current memory hotplug notifier is stopped by slub because it sets NOTIFY_STOP_MASK to return vaule. So, page_cgroup's callback never be called. (low priority than slub now.) I think this slub's behavior is not intentional(BUG). and fixes it. Another way to be considered about page_cgroup allocation: - free page_cgroup at OFFLINE even if it's from bootmem and remove specieal handler. But it requires more changes. Addresses http://bugzilla.kernel.org/show_bug.cgi?id=12041 Signed-off-by: KAMEZAWA Hiruyoki Cc: Li Zefan Cc: Balbir Singh Cc: Pavel Emelyanov Tested-by: Badari Pulavarty Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit b29acbdcf877009af3f1fc0750bcac314c51e055 Author: Nick Piggin Date: Mon Dec 1 13:13:47 2008 -0800 mm: vmalloc fix lazy unmapping cache aliasing Jim Radford has reported that the vmap subsystem rewrite was sometimes causing his VIVT ARM system to behave strangely (seemed like going into infinite loops trying to fault in pages to userspace). We determined that the problem was most likely due to a cache aliasing issue. flush_cache_vunmap was only being called at the moment the page tables were to be taken down, however with lazy unmapping, this can happen after the page has subsequently been freed and allocated for something else. The dangling alias may still have dirty data attached to it. The fix for this problem is to do the cache flushing when the caller has called vunmap -- it would be a bug for them to write anything else to the mapping at that point. That appeared to solve Jim's problems. Reported-by: Jim Radford Signed-off-by: Nick Piggin Cc: Russell King Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 8650e51ac94b5fe93c02e3c8fef02e416f14501c Merge: 7ac01108e71ca8ccc2ded4ee98035d0e5db9c981 d6b58f89f7257c8099c2260e2bea042a917d6cdf Author: Linus Torvalds Date: Mon Dec 1 18:56:55 2008 -0800 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2: ocfs2: fix regression in ocfs2_read_blocks_sync() ocfs2: fix return value set in init_dlmfs_fs() ocfs2: Small documentation update ocfs2: fix wake_up in unlock_ast ocfs2: initialize stack_user lvbptr ocfs2: comments typo fix commit d6b58f89f7257c8099c2260e2bea042a917d6cdf Author: Mark Fasheh Date: Fri Nov 21 14:06:55 2008 -0800 ocfs2: fix regression in ocfs2_read_blocks_sync() We're panicing in ocfs2_read_blocks_sync() if a jbd-managed buffer is seen. At first glance, this seems ok but in reality it can happen. My test case was to just run 'exorcist'. A struct inode is being pushed out of memory but is then re-read at a later time, before the buffer has been checkpointed by jbd. This causes a BUG to be hit in ocfs2_read_blocks_sync(). Reviewed-by: Joel Becker Signed-off-by: Mark Fasheh commit 07d9a3954a68764aefe16855bcd0f86deeb5c825 Author: Coly Li Date: Mon Nov 17 12:38:22 2008 +0800 ocfs2: fix return value set in init_dlmfs_fs() In init_dlmfs_fs(), if calling kmem_cache_create() failed, the code will use return value from calling bdi_init(). The correct behavior should be set status as -ENOMEM before going to "bail:". Signed-off-by: Coly Li Acked-by: Sunil Mushran Signed-off-by: Mark Fasheh commit a2eee69b814854095ed835a6eb64b8efc220cd6a Author: Mark Fasheh Date: Tue Nov 18 15:08:42 2008 -0800 ocfs2: Small documentation update Remove some features from the "not-supported" list that are actually supported now. Signed-off-by: Mark Fasheh commit 07f9eebcdfaeefc8f807fa1bcce1d7c3ae6661b1 Author: David Teigland Date: Mon Nov 17 12:28:48 2008 -0600 ocfs2: fix wake_up in unlock_ast In ocfs2_unlock_ast(), call wake_up() on lockres before releasing the spin lock on it. As soon as the spin lock is released, the lockres can be freed. Signed-off-by: David Teigland Signed-off-by: Mark Fasheh commit 66f502a416f18cd36179290746aa53736c6b2828 Author: David Teigland Date: Mon Nov 10 16:24:57 2008 -0600 ocfs2: initialize stack_user lvbptr The locking_state dump, ocfs2_dlm_seq_show, reads the lvb on locks where it has not yet been initialized by a lock call. Signed-off-by: David Teigland Acked-by: Joel Becker Signed-off-by: Mark Fasheh commit 3b5da0189c93160e44b878d2c72e9552d642497c Author: Coly Li Date: Wed Nov 5 15:16:24 2008 +0800 ocfs2: comments typo fix This patch fixes two typos in comments of ocfs2. Signed-off-by: Coly Li Signed-off-by: Mark Fasheh commit a693b0cdba94f60f7ed43754d2c34151cdd11da5 Author: Mauro Carvalho Chehab Date: Mon Dec 1 18:04:14 2008 -0200 em28xx: remove backward compat macro added on a previous fix commit 50f3beb50abe0cc0228363af804e50e710b3e5b0 fixed em28xx-alsa locking schema. However, a backport macro was kept. This patch removes the macro, since it is not needed for the module compilation against upstream. Signed-off-by: Mauro Carvalho Chehab commit 7ac01108e71ca8ccc2ded4ee98035d0e5db9c981 Merge: 4bc2a9bf8cbb63f3bb9797b2bf30b2316bd27a2b ac70a964b0e22a95af3628c344815857a01461b7 Author: Linus Torvalds Date: Mon Dec 1 11:23:33 2008 -0800 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev: libata: blacklist Seagate drives which time out FLUSH_CACHE when used with NCQ [libata] pata_rb532_cf: fix signature of the xfer function [libata] pata_rb532_cf: fix and rename register definitions ata_piix: add borked Tecra M4 to broken suspend list commit 484ab62c5ee805c2bdc405a85a4e64da2722690f Author: Hans Verkuil Date: Mon Nov 24 09:53:22 2008 -0300 V4L/DVB (9748): em28xx: fix compile warning Label fail_unreg is no longer used. Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab commit faa3bd2e48e594e9475e92fb84bb6ebe6f62f23b Author: Douglas Schilling Landgraf Date: Mon Nov 24 09:51:20 2008 -0300 V4L/DVB (9743): em28xx: fix oops audio Replaced usb_kill_usb for usb_unlink_usb (wait until urb to fully stop require USB core to put the calling process to sleep). Oops: http://www.kerneloops.org/raw.php?rawid=71799&msgid= Signed-off-by: Douglas Schilling Landgraf Signed-off-by: Mauro Carvalho Chehab commit 4bc2a9bf8cbb63f3bb9797b2bf30b2316bd27a2b Merge: 6a1214113090905aca6a492fc8ef10d84c608a69 b0f43dcca8a1f46e17b26d10f3cb1b297ebfb44e Author: Linus Torvalds Date: Mon Dec 1 11:01:54 2008 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: IB/mlx4: Fix MTT leakage in resize CQ IB/ehca: Fix problem with generated flush work completions IB/ehca: Change misleading error message on memory hotplug mlx4_core: Save/restore default port IB capability mask commit ac70a964b0e22a95af3628c344815857a01461b7 Author: Tejun Heo Date: Thu Nov 27 13:36:48 2008 +0900 libata: blacklist Seagate drives which time out FLUSH_CACHE when used with NCQ Some recent Seagate harddrives have firmware bug which causes FLUSH CACHE to timeout under certain circumstances if NCQ is being used. This can be worked around by disabling NCQ and fixed by updating the firmware. Implement ATA_HORKAGE_FIRMWARE_UPDATE and blacklist these devices. The wiki page has been updated to contain information on this issue. http://ata.wiki.kernel.org/index.php/Known_issues Signed-off-by: Tejun Heo Signed-off-by: Jeff Garzik commit 03f60840fa462e92220b093f778b2426ceab23af Author: Phil Sutter Date: Fri Nov 28 20:48:35 2008 +0100 [libata] pata_rb532_cf: fix signature of the xfer function Per definition, this function should return the number of bytes consumed. As the original parameter "buflen" is being decremented inside the read/write loop, save it in "retlen" at the beginning. Signed-off-by: Phil Sutter Acked-by: Sergei Shtyltov Acked-by: Bartlomiej Zolnierkiewicz Acked-by: Florian Fainelli Signed-off-by: Jeff Garzik commit 9f14786e27908a176f0568cf2132558efef71b31 Author: Phil Sutter Date: Fri Nov 28 20:48:26 2008 +0100 [libata] pata_rb532_cf: fix and rename register definitions The original standalone driver uses a custom address for the error register. Use it in pata_rb532_cf, too. Rename two register definitions: - The address offset 0x0800 in fact is the ATA base, not ATA command address. - The offset 0x0C00 is not a regular ATA data address, but a buffered one allowing 4-byte IO. Signed-off-by: Phil Sutter Signed-off-by: Jeff Garzik commit 1eedb4a90c958d8d59e0e4f19c297b445df21cf9 Author: Tejun Heo Date: Sat Nov 29 22:37:21 2008 +0900 ata_piix: add borked Tecra M4 to broken suspend list Tecra M4 sometimes forget what it is and reports bogus data via DMI which makes the machine evade broken suspend matching and thus fail suspend/resume. This patch updates piix_broken_suspend() such that it can match such case. As the borked DMI data is a bit generic, matching many entries to make the match more specific is necessary. As the usual DMI matching is limited to four entries, this patch uses hard coded manual matching. This is reported by Alexandru Romanescu. Signed-off-by: Tejun Heo Cc: Alexandru Romanescu Signed-off-by: Jeff Garzik commit b0f43dcca8a1f46e17b26d10f3cb1b297ebfb44e Merge: 7ec4f4634a4326c1f8fd172c80c8f59c9b3e90a4 42ab01c31526ac1d06d193f81a498bf3cf2acfe4 Author: Roland Dreier Date: Mon Dec 1 10:11:50 2008 -0800 Merge branches 'ehca' and 'mlx4' into for-linus commit 42ab01c31526ac1d06d193f81a498bf3cf2acfe4 Author: Jack Morgenstein Date: Mon Dec 1 10:09:37 2008 -0800 IB/mlx4: Fix MTT leakage in resize CQ When resizing a CQ, MTTs associated with the old CQE buffer were not freed. As a result, if any app used resize CQ repeatedly, all MTTs were eventually exhausted, which led to all memory registration operations failing until the driver is reloaded. Once the RESIZE_CQ command returns successfully from FW, FW no longer accesses the old CQ buffer, so it is safe to deallocate the MTT entries used by the old CQ buffer. Finally, if the RESIZE_CQ command fails, the MTTs allocated for the new CQEs buffer also need to be de-allocated. This fixes . Signed-off-by: Jack Morgenstein Signed-off-by: Roland Dreier commit 7ec4f4634a4326c1f8fd172c80c8f59c9b3e90a4 Author: Stefan Roscher Date: Mon Dec 1 10:05:50 2008 -0800 IB/ehca: Fix problem with generated flush work completions This fix enables ehca device driver to generate flush work completions even if the application doesn't request completions for all work requests. The current implementation of ehca will generate flush work completions for the wrong work requests if an application uses non signaled work completions. Signed-off-by: Stefan Roscher Signed-off-by: Roland Dreier commit 6b1f9d647e848060d34c3db408413989f1e460ba Author: Joachim Fenkes Date: Mon Dec 1 10:05:44 2008 -0800 IB/ehca: Change misleading error message on memory hotplug The error message printed when the eHCA driver prevents memory hotplug is misleading -- the user might think that hot-removing the lhca, hotplugging memory, then hot-adding the lhca again will work, but it actually doesn't. Signed-off-by: Joachim Fenkes Signed-off-by: Roland Dreier commit 6a1214113090905aca6a492fc8ef10d84c608a69 Merge: c07f62e5f18123103459ff74e86af1518a5b8af5 2642b11295ebcc94843045933061bfbb263fce7f Author: Linus Torvalds Date: Mon Dec 1 09:34:23 2008 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6: ieee1394: sbp2: fix race condition in state change ieee1394: fix list corruption (reported at module removal) firewire: fw-sbp2: another iPod mini quirk entry ieee1394: sbp2: another iPod mini quirk entry commit c07f62e5f18123103459ff74e86af1518a5b8af5 Merge: e5404586a499f7dce915456e85ff94b2df7a3b1c ee8a1a0a1a5817accd03ced7e7ffde3a4430f485 Author: Linus Torvalds Date: Mon Dec 1 08:33:59 2008 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid: HID: Apple ALU wireless keyboards are bluetooth devices HID: remove setup mutex, fix possible deadlock HID: add USB ID for another dual gameron adapter HID: unignore mouse on unibody macbooks HID: fix blacklist entries for greenasia/pantherlord commit e5404586a499f7dce915456e85ff94b2df7a3b1c Author: Kevin Hao Date: Mon Dec 1 11:36:16 2008 +0000 Add kref to fake tty used by USB console We alloc a fake tty in usb serial console setup function. we should init the tty's kref otherwise we will face WARN_ON after following invoke of tty_port_tty_set --> tty_kref_get. Signed-off-by: Kevin Hao Signed-off-by: Alan Cox Signed-off-by: Linus Torvalds commit 296fa7f6a3f3342d40df7713e74246198295654b Author: Will Newton Date: Mon Dec 1 11:36:06 2008 +0000 drivers/char/tty_io.c: Avoid panic when no console is configured. When no console is configured tty_open tries to call kref_get on a NULL pointer, return ENODEV instead. Signed-off-by: Will Newton Signed-off-by: Alan Cox Signed-off-by: Linus Torvalds commit b4dcfbee3b536c9125762e8f6681ac6be0e9256b Merge: ecf318cc3daee6f41354cc781e2d4b766f7eec3e 5bb4bd9895df508ed2bd8b3280252d8a8170e4ac Author: Linus Torvalds Date: Mon Dec 1 07:58:49 2008 -0800 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6: USB: serial: add more Onda device ids to option driver USB: usb-storage: unusual_devs entry for Nikon D2H USB: storage: unusual_devs entry for Mio C520-GPS USB: fsl_usb2_udc: Report disconnect before unbinding USB: fsl_qe_udc: Report disconnect before unbinding USB: fix SB600 USB subsystem hang bug Revert "USB: improve ehci_watchdog's side effect in CPU power management" commit ecf318cc3daee6f41354cc781e2d4b766f7eec3e Merge: 2a1dc509747fdcfdf3a2df818a14908aed86c3d4 a1e0eb104249817e5251bd4aade50921ffcb2159 Author: Linus Torvalds Date: Mon Dec 1 07:58:23 2008 -0800 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: powerpc: Fix build for 32-bit SMP configs commit 2a1dc509747fdcfdf3a2df818a14908aed86c3d4 Author: Johannes Weiner Date: Mon Dec 1 03:00:35 2008 +0100 vmscan: protect zone rotation stats by lru lock The zone's rotation statistics must not be accessed without the corresponding LRU lock held. Fix an unprotected write in shrink_active_list(). Acked-by: Rik van Riel Reviewed-by: KOSAKI Motohiro Signed-off-by: Johannes Weiner Signed-off-by: Linus Torvalds commit 33b07db9f38fe73b3895f8d4db8fdee03e3afec3 Author: Linus Torvalds Date: Mon Dec 1 07:55:14 2008 -0800 Revert "of_platform_driver noise on sparce" This reverts commit e669dae6141ff97d3c7566207f5de3b487dcf837, since it is incomplete, and clashes with fuller patches and the sparc 32/64 unification effort. Requested-by: David Miller Acked-by: Al Viro Signed-off-by: Linus Torvalds commit 5bb4bd9895df508ed2bd8b3280252d8a8170e4ac Author: Greg Kroah-Hartman Date: Sat Nov 29 11:46:21 2008 -0800 USB: serial: add more Onda device ids to option driver Thanks to Domenico Riccio for pointing these out. Cc: Domenico Riccio Signed-off-by: Greg Kroah-Hartman commit 621b239d75b790ac66854d46b094874f69e6776e Author: Tobias Kunze Briseño Date: Mon Nov 24 11:28:31 2008 -0500 USB: usb-storage: unusual_devs entry for Nikon D2H This patch adds an unusual_devs entry for the Nikon D2H camera. From: Tobias Kunze Briseño , Signed-off-by: Alan Stern Signed-off-by: Greg Kroah-Hartman commit a6b7b034d7f20761c55743be2acb762ce09a0c6b Author: Alan Stern Date: Fri Nov 21 16:15:12 2008 -0500 USB: storage: unusual_devs entry for Mio C520-GPS This patch (as1176) adds an unusual_devs entry for the Mio C520 GPS unit. Other devices also based on the Mitac hardware use the same USB interface firmware, so the Vendor and Product names are generalized. This fixes Bugzilla #11583. Signed-off-by: Alan Stern Tested-by: Tamas Kerecsen Signed-off-by: Greg Kroah-Hartman commit 1f15a506f356aa21c29b6a7b0e9e826695273dfc Author: Anton Vorontsov Date: Thu Nov 13 15:00:46 2008 +0300 USB: fsl_usb2_udc: Report disconnect before unbinding Gadgets disable endpoints in their disconnect callbacks, so we must call disconnect before unbinding. The patch fixes following badness: root@b1:~# insmod fsl_usb2_udc.ko Freescale High-Speed USB SOC Device Controller driver (Apr 20, 2007) root@b1:~# insmod g_ether.ko g_ether gadget: using random self ethernet address g_ether gadget: using random host ethernet address usb0: MAC 26:07:ba:c0:44:33 usb0: HOST MAC 96:81:0c:05:4d:e3 g_ether gadget: Ethernet Gadget, version: Memorial Day 2008 g_ether gadget: g_ether ready fsl-usb2-udc: bind to driver g_ether g_ether gadget: high speed config #1: CDC Ethernet (ECM) root@b1:~# rmmod g_ether.ko ------------[ cut here ]------------ Badness at drivers/usb/gadget/composite.c:871 [...] NIP [e10c3454] composite_unbind+0x24/0x15c [g_ether] LR [e10aa454] usb_gadget_unregister_driver+0x13c/0x164 [fsl_usb2_udc] Call Trace: [df145e80] [ffffff94] 0xffffff94 (unreliable) [df145eb0] [e10aa454] usb_gadget_unregister_driver+0x13c/0x164 [fsl_usb2_udc] [df145ed0] [e10c4c40] usb_composite_unregister+0x3c/0x4c [g_ether] [df145ee0] [c006bcc0] sys_delete_module+0x130/0x19c [df145f40] [c00142d8] ret_from_syscall+0x0/0x38 [...] unregistered gadget driver 'g_ether' Signed-off-by: Anton Vorontsov Acked-by: David Brownell Signed-off-by: Greg Kroah-Hartman commit 9ac36da3f8bc646a628bd09326e090defc8b7940 Author: Anton Vorontsov Date: Thu Nov 13 14:57:20 2008 +0300 USB: fsl_qe_udc: Report disconnect before unbinding Gadgets disable endpoints in their disconnect callbacks, so we must call disconnect before unbinding. This also fixes muram memory leak, since we free muram in the qe_ep_disable(). But mainly the patch fixes following badness: root@b1:~# insmod fsl_qe_udc.ko fsl_qe_udc: Freescale QE/CPM USB Device Controller driver, 1.0 fsl_qe_udc e01006c0.usb: QE USB controller initialized as device root@b1:~# insmod g_ether.ko g_ether gadget: using random self ethernet address g_ether gadget: using random host ethernet address usb0: MAC be:2d:3c:fa:be:f0 usb0: HOST MAC 62:b8:6a:df:38:66 g_ether gadget: Ethernet Gadget, version: Memorial Day 2008 g_ether gadget: g_ether ready fsl_qe_udc e01006c0.usb: fsl_qe_udc bind to driver g_ether g_ether gadget: high speed config #1: CDC Ethernet (ECM) root@b1:~# rmmod g_ether.ko ------------[ cut here ]------------ Badness at drivers/usb/gadget/composite.c:871 [...] NIP [d10c1374] composite_unbind+0x24/0x15c [g_ether] LR [d10a82f4] usb_gadget_unregister_driver+0x128/0x168 [fsl_qe_udc] Call Trace: [cfb93e80] [cfb1f3a0] 0xcfb1f3a0 (unreliable) [cfb93eb0] [d10a82f4] usb_gadget_unregister_driver+0x128/0x168 [fsl_qe_udc] [cfb93ed0] [d10c2a3c] usb_composite_unregister+0x3c/0x4c [g_ether] [cfb93ee0] [c006bde0] sys_delete_module+0x130/0x19c [cfb93f40] [c00142d8] ret_from_syscall+0x0/0x38 [...] fsl_qe_udc e01006c0.usb: unregistered gadget driver 'g_ether' Signed-off-by: Anton Vorontsov Acked-by: David Brownell Signed-off-by: Greg Kroah-Hartman commit 0a99e8ac430a27825bd055719765fd0d65cd797f Author: Shane Huang Date: Tue Nov 25 15:12:33 2008 +0800 USB: fix SB600 USB subsystem hang bug This patch is required for all AMD SB600 revisions to avoid USB subsystem hang symptom. The USB subsystem hang symptom is observed when the system has multiple USB devices connected to it. In some cases a USB hub may be required to observe this symptom. Reported in bugzilla as #11599, the similar patch for SB700 old revision is: commit b09bc6cbae4dd3a2d35722668ef2c502a7b8b093 Reported-by: raffaele Tested-by: Roman Mamedov Signed-off-by: Shane Huang Cc: stable Signed-off-by: Greg Kroah-Hartman commit 269f0532332410e97e3edeb78e6cd3bb940e52b4 Author: Greg Kroah-Hartman Date: Tue Nov 25 13:34:45 2008 -0800 Revert "USB: improve ehci_watchdog's side effect in CPU power management" This reverts commit f0d781d59cb621e1795d510039df973d0f8b23fc. It was the wrong thing to do, and does not really do what it said it did. Cc: Yi Yang Cc: David Brownell Cc: Alan Stern Signed-off-by: Greg Kroah-Hartman commit a1e0eb104249817e5251bd4aade50921ffcb2159 Author: Milton Miller Date: Sun Nov 16 11:44:42 2008 +0000 powerpc: Fix build for 32-bit SMP configs attr_smt_snooze_delay is only defined for CONFIG_PPC64, so protect the attribute removal with the same condition. This fixes this build error on 32-bit SMP configurations: /data/home/miltonm/next.git/arch/powerpc/kernel/sysfs.c: In function ‘unregister_cpu_online’: /data/home/miltonm/next.git/arch/powerpc/kernel/sysfs.c:722: error: ‘attr_smt_snooze_delay’ undeclared (first use in this function) /data/home/miltonm/next.git/arch/powerpc/kernel/sysfs.c:722: error: (Each undeclared identifier is reported only once /data/home/miltonm/next.git/arch/powerpc/kernel/sysfs.c:722: error: for each function it appears in.) Signed-off-by: Paul Mackerras commit d9d060a98ff89fe0f86e24c9c0c3d2f0c566781c Merge: 03cfdb86ac66677dbe76accae3f22c374a15b814 151903d5466fbcfb56ce792c3d5ea0ecbae15d07 Author: Linus Torvalds Date: Sun Nov 30 16:45:13 2008 -0800 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 * 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: drm/i915: Fix copy'n'pasteo that broke VT switch if flushing was non-empty. commit 03cfdb86ac66677dbe76accae3f22c374a15b814 Merge: 4ec8f077e4dd51f713984669781e7b568b8c41e2 ab598b6680f1e74c267d1547ee352f3e1e530f89 Author: Linus Torvalds Date: Sun Nov 30 16:44:18 2008 -0800 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: powerpc: Fix system calls on Cell entered with XER.SO=1 powerpc/cell: Fix GDB watchpoints, again powerpc/mpic: Don't reset affinity for secondary MPIC on boot powerpc/cell/axon-msi: Retry on missing interrupt powerpc: Fix boot freeze on machine with empty memory node powerpc: Fix IRQ assignment for some PCIe devices powerpc/spufs: Fix spinning in spufs_ps_fault on signal powerpc/mpc832x_rdb: fix swapped ethernet ids powerpc: Use generic PHY driver for Marvell 88E1111 PHY on GE Fanuc SBC610 powerpc/85xx: L2 cache size wrong in 8572DS dts powerpc/virtex: Update defconfigs powerpc/52xx: update defconfigs xsysace: Fix driver to use resource_size_t instead of unsigned long powerpc/virtex: fix various format/casting printk mismatches powerpc/mpc5200: fix bestcomm Kconfig dependencies powerpc/44x: Fix 460EX/460GT machine check handling powerpc/40x: Limit allocable DRAM during early mapping commit 4ec8f077e4dd51f713984669781e7b568b8c41e2 Merge: a6e470fd1bbfea8e51d2b10b0713e802b782f19a af38d90d6a5e135b546a3f86222ba2ad895ba4ae Author: Linus Torvalds Date: Sun Nov 30 16:39:06 2008 -0800 Merge master.kernel.org:/home/rmk/linux-2.6-arm * master.kernel.org:/home/rmk/linux-2.6-arm: Allow architectures to override copy_user_highpage() [ARM] pxa/palmtx: misc fixes to use generic GPIO API ARM: OMAP: Fixes for suspend / resume GPIO wake-up handling [ARM] pxa/corgi: update default config to exclude tosa from being built [ARM] pxa/pcm990: use negative number for an invalid GPIO in camera data ARM: OMAP: Typo fix for clock_allow_idle ARM: OMAP: Remove broken LCD driver for SX1 [ARM] 5335/1: pxa25x_udc: Fix is_vbus_present to return 1 or 0 [ARM] pxa/MioA701: bluetooth resume fix [ARM] pxa/MioA701: fix memory corruption. commit 151903d5466fbcfb56ce792c3d5ea0ecbae15d07 Author: Eric Anholt Date: Mon Dec 1 10:23:21 2008 +1000 drm/i915: Fix copy'n'pasteo that broke VT switch if flushing was non-empty. Introduced in the "Avoid BUG_ONs on VT switch" commit. Signed-off-by: Eric Anholt Signed-off-by: Dave Airlie commit ab598b6680f1e74c267d1547ee352f3e1e530f89 Author: Paul Mackerras Date: Sun Nov 30 11:49:45 2008 +0000 powerpc: Fix system calls on Cell entered with XER.SO=1 It turns out that on Cell, on a kernel with CONFIG_VIRT_CPU_ACCOUNTING = y, if a program sets the SO (summary overflow) bit in the XER and then does a system call, the SO bit in CR0 will be set on return regardless of whether the system call detected an error. Since CR0.SO is used as the error indication from the system call, this means that all system calls appear to fail. The reason is that the workaround for the timebase bug on Cell uses a compare instruction. With CONFIG_VIRT_CPU_ACCOUNTING = y, the ACCOUNT_CPU_USER_ENTRY macro reads the timebase, so we end up doing a compare instruction, which copies XER.SO to CR0.SO. Since we were doing this in the system call entry patch after clearing CR0.SO but before saving the CR, this meant that the saved CR image had CR0.SO set if XER.SO was set on entry. This fixes it by moving the clearing of CR0.SO to after the ACCOUNT_CPU_USER_ENTRY call in the system call entry path. Signed-off-by: Paul Mackerras Acked-by: Arnd Bergmann Acked-by: Benjamin Herrenschmidt commit 960cedb4e3eedec6394f224fc832c7a23f35a799 Author: Arnd Bergmann Date: Fri Nov 28 09:51:24 2008 +0000 powerpc/cell: Fix GDB watchpoints, again An earlier patch from Jens Osterkamp attempted to fix GDB watchpoints by enabling the DABRX register at boot time. Unfortunately, this did not work on SMP setups, where secondary CPUs were still using the power-on DABRX value. This introduces the same change for secondary CPUs on cell as well. Reported-by: Ulrich Weigand Tested-by: Ulrich Weigand Signed-off-by: Arnd Bergmann Signed-off-by: Paul Mackerras commit cc353c30bbdb84f4317a6c149ebb11cde2232e40 Author: Arnd Bergmann Date: Fri Nov 28 09:51:23 2008 +0000 powerpc/mpic: Don't reset affinity for secondary MPIC on boot Kexec/kdump currently fails on the IBM QS2x blades when the kexec happens on a CPU other than the initial boot CPU. It turns out that this is the result of mpic_init trying to set affinity of each interrupt vector to the current boot CPU. As far as I can tell, the same problem is likely to exist on any secondary MPIC, because they have to deliver interrupts to the first output all the time. There are two potential solutions for this: either not set up affinity at all for secondary MPICs, or assume that a single CPU output is connected to the upstream interrupt controller and hardcode affinity to that per architecture. This patch implements the second approach, defaulting to the first output. Currently, all known secondary MPICs are routed to their upstream port using the first destination, so we hardcode that. Signed-off-by: Arnd Bergmann Signed-off-by: Paul Mackerras commit d015fe9951641b2d869a7ae4a690be2a05a9dc7f Author: Arnd Bergmann Date: Fri Nov 28 09:51:22 2008 +0000 powerpc/cell/axon-msi: Retry on missing interrupt The MSI capture logic for the axon bridge can sometimes lose interrupts in case of high DMA and interrupt load, when it signals an MSI interrupt to the MPIC interrupt controller while we are already handling another MSI. Each MSI vector gets written into a FIFO buffer in main memory using DMA, and that DMA access is normally flushed by the actual interrupt packet on the IOIF. An MMIO register in the MSIC holds the position of the last entry in the FIFO buffer that was written. However, reading that position does not flush the DMA, so that we can observe stale data in the buffer. In a stress test, we have observed the DMA to arrive up to 14 microseconds after reading the register. This patch works around this problem by retrying the access to the FIFO buffer. We can reliably detect the conditioning by writing an invalid MSI vector into the FIFO buffer after reading from it, assuming that all MSIs we get are valid. After detecting an invalid MSI vector, we udelay(1) in the interrupt cascade for up to 100 times before giving up. Signed-off-by: Arnd Bergmann Signed-off-by: Paul Mackerras commit 4a6186696e7f15b3ea4dafcdb64ee0703e0e4487 Author: Dave Hansen Date: Mon Nov 24 12:02:35 2008 +0000 powerpc: Fix boot freeze on machine with empty memory node I got a bug report about a distro kernel not booting on a particular machine. It would freeze during boot: > ... > Could not find start_pfn for node 1 > [boot]0015 Setup Done > Built 2 zonelists in Node order, mobility grouping on. Total pages: 123783 > Policy zone: DMA > Kernel command line: > [boot]0020 XICS Init > [boot]0021 XICS Done > PID hash table entries: 4096 (order: 12, 32768 bytes) > clocksource: timebase mult[7d0000] shift[22] registered > Console: colour dummy device 80x25 > console handover: boot [udbg0] -> real [hvc0] > Dentry cache hash table entries: 1048576 (order: 7, 8388608 bytes) > Inode-cache hash table entries: 524288 (order: 6, 4194304 bytes) > freeing bootmem node 0 I've reproduced this on 2.6.27.7. It is caused by commit 8f64e1f2d1e09267ac926e15090fd505c1c0cbcb ("powerpc: Reserve in bootmem lmb reserved regions that cross NUMA nodes"). The problem is that Jon took a loop which was (in pseudocode): for_each_node(nid) NODE_DATA(nid) = careful_alloc(nid); setup_bootmem(nid); reserve_node_bootmem(nid); and broke it up into: for_each_node(nid) NODE_DATA(nid) = careful_alloc(nid); setup_bootmem(nid); for_each_node(nid) reserve_node_bootmem(nid); The issue comes in when the 'careful_alloc()' is called on a node with no memory. It falls back to using bootmem from a previously-initialized node. But, bootmem has not yet been reserved when Jon's patch is applied. It gives back bogus memory (0xc000000000000000) and pukes later in boot. The following patch collapses the loop back together. It also breaks the mark_reserved_regions_for_nid() code out into a function and adds some comments. I think a huge part of introducing this bug is because for loop was too long and hard to read. The actual bug fix here is the: + if (end_pfn <= node->node_start_pfn || + start_pfn >= node_end_pfn) + continue; Signed-off-by: Dave Hansen Signed-off-by: Paul Mackerras commit 4b824de9b18b8d1013e9fc9e4b0f855ced8cac2c Author: Adhemerval Zanella Date: Wed Nov 19 03:55:35 2008 +0000 powerpc: Fix IRQ assignment for some PCIe devices Currently, some PCIe devices on POWER6 machines do not get interrupts assigned correctly. The problem is that OF doesn't create an "interrupt" property for them. The fix is for of_irq_map_pci to fall back to using the value in the PCI interrupt-pin register in config space, as we do when there is no OF device-tree node for the device. I have verified that this works fine with a pair of Squib-E SAS adapter on a P6-570. Acked-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit a6e470fd1bbfea8e51d2b10b0713e802b782f19a Merge: 8e36a5d6ad587d906f0ff677974e5edb0335db30 90f671301a5e2678cdc99f611cd842161c3bb87f Author: Linus Torvalds Date: Sun Nov 30 14:04:31 2008 -0800 Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6 * git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6: parisc: struct device - replace bus_id with dev_name(), dev_set_name() parisc: fix kernel crash when unwinding a userspace process parisc: __kernel_time_t is always long commit 8e36a5d6ad587d906f0ff677974e5edb0335db30 Merge: 9bd062d9eaf9e790330f37d9f4518e1b95131f6c a98ee8c1c707fe3210b00ef9f806ba8e2bf35504 Author: Linus Torvalds Date: Sun Nov 30 14:04:02 2008 -0800 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 * git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6: [CIFS] fix regression in cifs_write_begin/cifs_write_end commit 9bd062d9eaf9e790330f37d9f4518e1b95131f6c Merge: 72244c0e68dd664b894adb34a8772a6e4673b4c1 af6d596fd603219b054c1c90fb16672a9fd441bd Author: Linus Torvalds Date: Sun Nov 30 13:06:47 2008 -0800 Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip * 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: sched: prevent divide by zero error in cpu_avg_load_per_task, update sched, cpusets: fix warning in kernel/cpuset.c sched: prevent divide by zero error in cpu_avg_load_per_task commit 72244c0e68dd664b894adb34a8772a6e4673b4c1 Merge: 93b10052f9146eab4e848b474baf10c2ea22acb3 2ed1cdcf9a83205d1343f29b630abff232eaa72c Author: Linus Torvalds Date: Sun Nov 30 13:06:20 2008 -0800 Merge branch 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip * 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: irq.h: fix missing/extra kernel-doc genirq: __irq_set_trigger: change pr_warning to pr_debug irq: fix typo x86: apic honour irq affinity which was set in early boot genirq: fix the affinity setting in setup_irq genirq: keep affinities set from userspace across free/request_irq() commit 93b10052f9146eab4e848b474baf10c2ea22acb3 Merge: 7bbc67fbf60b698b43692fc6ea16c526bf1c5e26 b0788caf7af773b6c2374590dabd3a205f0918a8 Author: Linus Torvalds Date: Sun Nov 30 13:05:46 2008 -0800 Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip * 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: lockdep: consistent alignement for lockdep info commit 7bbc67fbf60b698b43692fc6ea16c526bf1c5e26 Merge: 66a45cc4cc1c1f7d1ccae4d0fee261eab5560682 4f5a7f40ddbae98569acbb99118a98570315579c Author: Linus Torvalds Date: Sun Nov 30 13:05:31 2008 -0800 Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip * 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: ftrace: prevent recursion tracing, doc: update mmiotrace documentation x86, mmiotrace: fix buffer overrun detection function tracing: fix wrong position computing of stack_trace commit 66a45cc4cc1c1f7d1ccae4d0fee261eab5560682 Merge: 8639dad84e4fe83577006e8e2bd9da79c6c2c41e b627c8b17ccacba38c975bc0f69a49fc4e5261c9 Author: Linus Torvalds Date: Sun Nov 30 13:01:04 2008 -0800 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: x86: always define DECLARE_PCI_UNMAP* macros x86: fixup config space size of CPU functions for AMD family 11h x86, bts: fix wrmsr and spinlock over kmalloc x86, pebs: fix PEBS record size configuration x86, bts: turn macro into static inline function x86, bts: exclude ds.c from build when disabled arch/x86/kernel/pci-calgary_64.c: change simple_strtol to simple_strtoul x86: use limited register constraint for setnz xen: pin correct PGD on suspend x86: revert irq number limitation x86: fixing __cpuinit/__init tangle, xsave_cntxt_init() x86: fix __cpuinit/__init tangle in init_thread_xstate() oprofile: fix an overflow in ppro code commit 8639dad84e4fe83577006e8e2bd9da79c6c2c41e Merge: 9297524f6a2885bfb4e2431d658cd1ffaefbda41 461cba2d294fe83297edf8a6556912812903dce1 Author: Linus Torvalds Date: Sun Nov 30 13:00:21 2008 -0800 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 * 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: drm/i915: Save/restore HWS_PGA on suspend/resume drm: move drm vblank initialization/cleanup to driver load/unload drm/i915: execbuffer pins objects, no need to ensure they're still in the GTT drm/i915: Always read pipestat in irq_handler drm/i915: Subtract total pinned bytes from available aperture size drm/i915: Avoid BUG_ONs on VT switch with a wedged chipset. drm/i915: Remove IMR masking during interrupt handler, and restart it if needed. drm/i915: Manage PIPESTAT to control vblank interrupts instead of IMR. commit 9297524f6a2885bfb4e2431d658cd1ffaefbda41 Merge: 8c7b905a2d131a8dd0b081b16c64b17db4ce9392 52b19ac993f1aeadbce15b55302be9a35346e235 Author: Linus Torvalds Date: Sun Nov 30 12:34:22 2008 -0800 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6 * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6: udf: Fix BUG_ON() in destroy_inode() commit 8c7b905a2d131a8dd0b081b16c64b17db4ce9392 Merge: 1838e39214ee3e390f9c8150ea7454103b72ef83 a266d9f1253a38ec2d5655ebcd6846298b0554f4 Author: Linus Torvalds Date: Sun Nov 30 11:43:41 2008 -0800 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq: [CPUFREQ] powernow-k8: ignore out-of-range PstateStatus value [CPUFREQ] Documentation: Add Blackfin to list of supported processors commit 1838e39214ee3e390f9c8150ea7454103b72ef83 Author: frans Date: Sat Nov 22 15:39:06 2008 +0100 Trivial Documentation/filesystems/ramfs-rootfs-initramfs.txt fix A very minor patch on ramfs-rootfs-initramfs.txt: update the location where CONFIG_INITRAMFS_SOURCE lives in menuconfig Signed-off-by: Frans Meulenbroeks Acked-by: Rob Landley Signed-off-by: Linus Torvalds commit 42182c7850cdfbfdcf5f8763908a7a66b5ce9041 Merge: e2a2444a90ba12f123c9c59362ffe3ab278bccb9 b6283534a3e057f8268ca5448305900f74d12608 Author: Linus Torvalds Date: Sun Nov 30 11:36:57 2008 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: ALSA: hda - Check model for Dell 92HD73xx laptops ALSA: hda - mark Dell studio 1535 quirk ALSA: hda - No 'Headphone as Line-out' swich without line-outs ALSA: hda - Fix AFG power management on IDT 92HD* codecs ALSA: hda - Fix caching of SPDIF status bits ALSA: hda - Add a quirk for Dell Studio 15 ALSA: hda: Add STAC_DELL_M4_3 quirk sound/sound_core: Fix sparse warnings ALSA: hda: STAC_DELL_M6 EAPD commit e2a2444a90ba12f123c9c59362ffe3ab278bccb9 Merge: 8decec78a3d9e240f14553284629ac4851ff3744 2ad49887150894b9ed6a87a76b409adceee6b074 Author: Linus Torvalds Date: Sun Nov 30 11:34:17 2008 -0800 Merge branch 'linux-next' of git://git.infradead.org/~dedekind/ubi-2.6 * 'linux-next' of git://git.infradead.org/~dedekind/ubi-2.6: UBI: Don't exit from ubi_thread until kthread_should_stop() is true UBI: fix EBADMSG handling commit 8decec78a3d9e240f14553284629ac4851ff3744 Merge: 499c59c42967329d39481314a839d7669f5e1506 7b964f733798960c899dc40911329aee7bee25e4 Author: Linus Torvalds Date: Sun Nov 30 11:21:43 2008 -0800 Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 * 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6: i2c-parport: Fix misplaced parport_release call i2c: Remove i2c clients in reverse order i2c/isp1301_omap: Build fixes commit 499c59c42967329d39481314a839d7669f5e1506 Author: Robert P. J. Day Date: Fri Nov 28 11:48:37 2008 +0000 MN10300: Tighten up the code using case ranges Compress a set of consecutive switch cases into a case-range. Signed-off-by: Robert P. J. Day Signed-off-by: David Howells Signed-off-by: Linus Torvalds commit f1ba3bc7b97ad0cc5886e5dadf4defba68f37819 Merge: 95c5e1f1e6e1788cc8b9acbe9379ae395ef64958 abd942194dcba2fa9d24d547b8acd4ef052eaf73 Author: Linus Torvalds Date: Sun Nov 30 11:07:16 2008 -0800 Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 * 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6: [S390] Update default configuration. [S390] Fix alignment of initial kernel stack. [S390] pgtable.h: Fix oops in unmap_vmas for KVM processes [S390] fix/cleanup sched_clock [S390] fix system call parameter functions. commit 95c5e1f1e6e1788cc8b9acbe9379ae395ef64958 Merge: b31a0fecd1dd01f1db406014a7c8a73983e04cc9 23d0a65cf229acd273b6f5a325c34d758a90d592 Author: Linus Torvalds Date: Sun Nov 30 11:06:40 2008 -0800 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: toshiba_acpi: close race in toshiba_acpi driver ACPICA: disable _BIF warning ACPI: delete OSI(Linux) DMI dmesg spam ACPICA: Allow _WAK method to return an Integer ACPI: thinkpad-acpi: fix fan sleep/resume path sony-laptop: printk tweak sony-laptop: brightness regression fix Revert "ACPI: don't enable control method power button as wakeup device when Fixed Power button is used" ACPI suspend: Blacklist boxes that require us to set SCI_EN directly on resume ACPI: scheduling in atomic via acpi_evaluate_integer () ACPI: battery: Convert discharge energy rate to current properly ACPI: EC: count interrupts only if called from interrupt handler. commit b31a0fecd1dd01f1db406014a7c8a73983e04cc9 Merge: 96b8936a9ed08746e47081458a5eb9e43a751e24 545f4e99dee7284ed57c79384c5c1d5ac58dcd59 Author: Linus Torvalds Date: Sun Nov 30 11:05:21 2008 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: Input: wacom - add support for new USB Tablet PCs Input: replace spin_lock_bh with spin_lock_irqsave in ml_ff_playback Input: i8042 - add Compal Hel80 laptop to nomux blacklist Input: cm109 - add keymap for ATCom AU-100 phone Input: fix the example of an input device driver Input: psmouse - fix incorrect validate_byte check in OLPC protocol Input: atkbd - cancel delayed work before freeing its structure Input: atkbd - add keymap quirk for Inventec Symphony systems Input: i8042 - add Dell XPS M1530 to nomux list Input: elo - fix format string in elo driver commit 96b8936a9ed08746e47081458a5eb9e43a751e24 Author: Christoph Hellwig Date: Tue Nov 25 08:10:03 2008 +0100 remove __ARCH_WANT_COMPAT_SYS_PTRACE All architectures now use the generic compat_sys_ptrace, as should every new architecture that needs 32bit compat (if we'll ever get another). Remove the now superflous __ARCH_WANT_COMPAT_SYS_PTRACE define, and also kill a comment about __ARCH_SYS_PTRACE that was added after __ARCH_SYS_PTRACE was already gone. Signed-off-by: Christoph Hellwig Acked-by: David S. Miller Signed-off-by: Linus Torvalds commit 16799c6a4d5156c6ee185b51b7586cca1aae0800 Merge: 211f05a034f49586fdd071abd174853217ec29ee 8ec2e24356e63dc298c6040557faf396410907ac Author: Linus Torvalds Date: Sun Nov 30 10:38:22 2008 -0800 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus * 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: MIPS: Make BUG() __noreturn. commit 211f05a034f49586fdd071abd174853217ec29ee Author: Arjan van de Ven Date: Sun Nov 23 16:57:36 2008 -0800 input: replace spin_lock_bh with spin_lock_irqsave in ml_ff_playback ml_ff_playback() uses spin_(un)lock_bh. However this function is called with interrupts disabled from erase_effect() in drivers/input/ff-core.c:196. This is not permitted, and will result in a WARN_ON in the bottom half handling code. This patch changes this function to just use spin_lock_irqsave() instead, solving the problem and simplifying the locking logic. This was reported as entry #106559 in kerneloops.org Reported-by: kerneloops.org Signed-off-by: Arjan van de Ven Signed-off-by: Linus Torvalds commit 02d0e6753d8ab0173b63338157929e52eac86d12 Author: Al Viro Date: Sat Nov 22 17:38:34 2008 +0000 hotplug_memory_notifier section annotation Same as for hotplug_cpu - we want static notifier_block in there in meminitdata, to avoid false positives whenever it's used. Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit d3a307f32ec3554739033762672e533e2d246dae Author: Al Viro Date: Sat Nov 22 17:38:24 2008 +0000 sn_pci_controller_fixup() should be __init called only from __init Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit ffb78a26169351f6c22cdae481b057d50d5d759b Author: Al Viro Date: Sat Nov 22 17:38:14 2008 +0000 get xenbus_driver ->probe() "recognized" by modpost ... by giving the instances' names magic suffix recognized by modpost ;-/ Their ->probe() is __devinit Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit df6b07949b6cab9d119363d02ef63379160f6c82 Author: Al Viro Date: Sat Nov 22 17:38:04 2008 +0000 xen_play_dead() is __cpuinit Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 37af46efa5413c6f4c25d9a24b4c43f2cc718eed Author: Al Viro Date: Sat Nov 22 17:37:54 2008 +0000 xen_setup_vcpu_info_placement() is not init on x86 ... so get xen-ops.h in agreement with xen/smp.c Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 23a14b9e9db49ed5f7683857557c26c874d4abb6 Author: Al Viro Date: Sat Nov 22 17:37:44 2008 +0000 kvm_setup_secondary_clock() is cpuinit Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 2236d252e001ea57d53cec1954f680e503f3b8bc Author: Al Viro Date: Sat Nov 22 17:37:34 2008 +0000 enable_IR_x2apic() needs to be __init calls __init, called only from __init Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit ad04d31e5fb6b25308e6cdea6baa07d41871a3e0 Author: Al Viro Date: Sat Nov 22 17:37:14 2008 +0000 pci_setup() is init, not devinit for fsck sake, it's used only when parsing kernel command line... Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 4bcc17dd8e48b612d43a9b0a6faa9eaa358fa4bd Author: Al Viro Date: Sat Nov 22 17:37:04 2008 +0000 alpha: pcibios_resource_to_bus() is callable from normal code pci_enable_rom(), specifically. Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 56d74dd5f7ad8b6b0979ce915d51cf03bcc57267 Author: Al Viro Date: Sat Nov 22 17:36:54 2008 +0000 tricky one: hisax sections a) hisax_init_pcmcia() needs to be defined only if we have CONFIG_HOTPLUG (no PCMCIA support otherwise) and can be declared __devinit. b) HiSax_inithardware() can go __init c) hisax_register() is passing to checkcard() full-blown hisax_cs_setup_card(): checkcard(i, id, NULL, hisax_d_if->owner, hisax_cs_setup_card); The problem with it is that * hisax_cs_setup_card() is __devinit * hisax_register() is not * hisax_cs_setup_card() is a switch from hell, calling a lot of setup_some_weirdcard() depending on card->typ. _These_ are also __devinit. However, in hisax_register() we have card->typ equal to ISDN_CTYPE_DYNAMIC, which reduces hisax_cs_setup_card() to "nevermind all that crap, just do nothing and return 2". So we add a trimmed-down callback doing just that and passed to checkcard() by hisax_register(). _This_ is non-init (we can stand the impact on .text size). Voila - no section warnings from drivers/isdn Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 8419641450edc838a6ce7cdf0f99d262bf0af2d5 Author: Al Viro Date: Sat Nov 22 17:36:44 2008 +0000 cpuinit fixes in kernel/* Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit b0385146bcdd24b0390c2b60fd05a083888835db Author: Al Viro Date: Sat Nov 22 17:36:34 2008 +0000 uninorth-agp section mess 'aperture' is declared devinitdata (the whole word of it) and is used from ->fetch_size() which can, AFAICS, be used on !HOTPLUG after init time. Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 37d33d151428a4ee648c855c0b49368de7804e7f Author: Al Viro Date: Sat Nov 22 17:36:24 2008 +0000 rapidio section noise functions calling devinit and called only from devinit Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit f57628d76bd201a444ca822f3622522a44acbf60 Author: Al Viro Date: Sat Nov 22 17:36:14 2008 +0000 section errors in smc911x/smc91x a) ->probe() can be __devinit; no need to put it into .text b) calling __init stuff from it, OTOH, is wrong c) ->remove() is __devexit fodder Acked-by: rmk+kernel@arm.linux.org.uk Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 5bac287ea51bb8678c3875d87a536071ef0fd590 Author: Al Viro Date: Sat Nov 22 17:36:04 2008 +0000 fix the section noise in sparc head.S usual .text.head trick Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 1c4567aeed84a2746d78d4c1fe092222a559d43f Author: Al Viro Date: Sat Nov 22 17:35:54 2008 +0000 m32r: section noise in head.S usual "introduce .text.head, put it in front of TEXT_TEXT in vmlinux.lds.S, make the stuff up to jump to start_kernel live in it", same as on other targets. Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 8814b5050d183f00a25a087b550841797c0c2775 Author: Al Viro Date: Sat Nov 22 17:35:44 2008 +0000 section misannotation in ibmtr_cs ibmtr_resume() is calling ibmtr_probe(), which is devinit. Whether that's the right thing to do there is a separate question, but since it's PCMCIA and thus will never compile without HOTPLUG... Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 43ced651d1272ced02ed5f1c2abc79e3354187f6 Author: Al Viro Date: Sat Nov 22 17:35:34 2008 +0000 ixgbe section fixes ixgbe_init_interrupt_scheme() is called from ixgbe_resume(). Build that with CONFIG_PM and without CONFIG_HOTPLUG and you've got a problem. Several helpers called by it also are misannotated __devinit. Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 31421a6f6ea88236cb17b6a24aa21e66a6138d4c Author: Al Viro Date: Sat Nov 22 17:35:24 2008 +0000 rackmeter section fixes * rackmeter_remove() reference needs devexit_p * rackmeter_setup() is calls devinit and is called only from devinit Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit ced7172ad94713f9023a3c279082402ac7750ba8 Author: Al Viro Date: Sat Nov 22 17:35:14 2008 +0000 gdth section fixes PCI side of driver should be devinit, not init Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit e669dae6141ff97d3c7566207f5de3b487dcf837 Author: Al Viro Date: Sat Nov 22 17:35:04 2008 +0000 of_platform_driver noise on sparce switch to __init for those; unlike powerpc sparc has no hotplug support for that stuff and their ->probe() tends to call __init functions while being declared __devinit. Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 30037818f7c1e11cb3742fbecd614ef3dc7b27bb Author: Al Viro Date: Sat Nov 22 17:34:54 2008 +0000 advansys fix on ISA-less configs The code if (shost->dma_channel != NO_ISA_DMA) free_dma(shost->dma_channel); in there is triggerable only if we have CONFIG_ISA (we only set ->dma_channel to something other than NO_ISA_DMA under #ifdef CONFIG_ISA). OTOH, free_dma() is not guaranteed to be there in absense of CONFIG_ISA. IOW, driver runs into undefined symbols on PCI-but-not-ISA configs (e.g. on frv) and it's a false positive. Fix: put the entire if () under #ifdef CONFIG_ISA; behaviour doesn't change and dependency on free_dma() disappears for !CONFIG_ISA. Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 2fceab0bd8d82509519e9b842a5a7234b2397fb4 Author: Al Viro Date: Sat Nov 22 17:34:44 2008 +0000 W1_MASTER_DS1WM should depend on HAVE_CLK Uses clk_...() a lot Acked-by: rmk+kernel@arm.linux.org.uk Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit d16d7667f9c211e8d9b7e2365cc3d3a83fc6a8e2 Author: Al Viro Date: Sat Nov 22 17:34:34 2008 +0000 icside section warnings icside_register_v[56] is called from (__devinit) icside_probe Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 596f1034190565529e507e1eb8df6def1c9f5560 Author: Al Viro Date: Sat Nov 22 17:34:24 2008 +0000 fix talitos talitos_remove() can be called from talitos_probe() on failure exit path, so it can't be __devexit. Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 6005e3eb89db99f3737c8f5fe3d97f3262ed7919 Author: Al Viro Date: Sat Nov 22 17:34:14 2008 +0000 istallion section warnings stli_findeisabrds() and stli_initbrds() are using __init and called only from __init. Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 8c29890aef80702824e2284909ee301ef2430a3e Author: Al Viro Date: Sat Nov 22 17:34:04 2008 +0000 sparc64 trivial section misannotations Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 409832f5484cd1e2d8812c3236dffb33d01c359b Author: Al Viro Date: Sat Nov 22 17:33:54 2008 +0000 sparc32 cpuinit flase positives All noise since we don't have CPU hotplug there. However, they did expose something very odd-looking in there - poke_viking() does a bunch of identical btfixup each time it's called (i.e. for each CPU). That one is left alone for now; just the trivial misannotation fixes. Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 4ea8fb9c1cc67bee980dca589ec8d0d4e62858c7 Author: Al Viro Date: Sat Nov 22 17:33:44 2008 +0000 powerpc set_huge_psize() false positive called only from __init, calls __init. Incidentally, it ought to be static in file. Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 7d6a8a1c487422b772201927c454930377d8cf7e Author: Al Viro Date: Sat Nov 22 17:33:34 2008 +0000 false __cpuinit positives on alpha pure noise - alpha doesn't have CPU hotplug Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit 31168481c32c8a485e1003af9433124dede57f8d Author: Al Viro Date: Sat Nov 22 17:33:24 2008 +0000 meminit section warnings Signed-off-by: Al Viro Signed-off-by: Linus Torvalds commit af6d596fd603219b054c1c90fb16672a9fd441bd Author: Ingo Molnar Date: Sat Nov 29 20:45:15 2008 +0100 sched: prevent divide by zero error in cpu_avg_load_per_task, update Regarding the bug addressed in: 4cd4262: sched: prevent divide by zero error in cpu_avg_load_per_task Linus points out that the fix is not complete: > There's nothing that keeps gcc from deciding not to reload > rq->nr_running. > > Of course, in _practice_, I don't think gcc ever will (if it decides > that it will spill, gcc is likely going to decide that it will > literally spill the local variable to the stack rather than decide to > reload off the pointer), but it's a valid compiler optimization, and > it even has a name (rematerialization). > > So I suspect that your patch does fix the bug, but it still leaves the > fairly unlikely _potential_ for it to re-appear at some point. > > We have ACCESS_ONCE() as a macro to guarantee that the compiler > doesn't rematerialize a pointer access. That also would clarify > the fact that we access something unsafe outside a lock. So make sure our nr_running value is immutable and cannot change after we check it for nonzero. Signed-off-by: Ingo Molnar commit 1583715ddb61f822041807a0f18b3b4845e88c76 Author: Ingo Molnar Date: Tue Nov 25 10:27:49 2008 +0100 sched, cpusets: fix warning in kernel/cpuset.c this warning: kernel/cpuset.c: In function ‘generate_sched_domains’: kernel/cpuset.c:588: warning: ‘ndoms’ may be used uninitialized in this function triggers because GCC does not recognize that ndoms stays uninitialized only if doms is NULL - but that flow is covered at the end of generate_sched_domains(). Help out GCC by initializing this variable to 0. (that's prudent anyway) Also, this function needs a splitup and code flow simplification: with 160 lines length it's clearly too long. Signed-off-by: Ingo Molnar commit 2642b11295ebcc94843045933061bfbb263fce7f Author: Stefan Richter Date: Sat Nov 29 14:55:47 2008 +0100 ieee1394: sbp2: fix race condition in state change An intermediate transition from _RUNNING to _IN_SHUTDOWN could have been missed by the former code. Signed-off-by: Stefan Richter commit e47c1feb17e61ef4e2f245c0af0c5a8e2a7798b2 Author: Stefan Richter Date: Wed Nov 26 01:34:25 2008 +0100 ieee1394: fix list corruption (reported at module removal) If there is more than one FireWire controller present, dummy_zero_addr and dummy_max_addr were added multiple times to different lists, thus corrupting the lists. Fix this by allocating them dynamically per host instead of just once globally. (Perhaps a better address space allocation algorithm could rid us of the two dummy address spaces.) Fixes http://bugzilla.kernel.org/show_bug.cgi?id=10129 . Signed-off-by: Stefan Richter commit 9a5aa622dd4cd22b5e0fe83e4a9c0c768d4e2dea Author: Jack Morgenstein Date: Fri Nov 28 21:29:46 2008 -0800 mlx4_core: Save/restore default port IB capability mask Commit 7ff93f8b ("mlx4_core: Multiple port type support") introduced support for different port types. As part of that support, SET_PORT is invoked to set the port type during driver startup. However, as a side-effect, for IB ports the invocation of this command also sets the port's capability mask to zero (losing the default value set by FW). To fix this, get the default ib port capabilities (via a MAD_IFC Port Info query) during driver startup, and save them for use in the mlx4_SET_PORT command when setting the port-type to Infiniband. This patch fixes problems with subnet manager (SM) failover such as , which occurred because the IsTrapSupported bit in the capability mask was zeroed. Signed-off-by: Jack Morgenstein Signed-off-by: Roland Dreier commit 23d0a65cf229acd273b6f5a325c34d758a90d592 Author: Arjan van de Ven Date: Fri Nov 28 08:19:09 2008 -0800 toshiba_acpi: close race in toshiba_acpi driver the toshiba ACPI driver will, in a failure case, free the rfkill state before stopping the polling timer that would use this state. More interesting, in the same failure case handling, it calls the exit function, which also frees the rfkill state, but after stopping the polling. If the race happens, a NULL pointer is passed to rfkill_force_state() which then causes a nice dereference. Fix the race by just not doing the too-early freeing of the rfkill state. This appears to be the cause of a hot issue on kerneloops.org; while I have no solid evidence of that this patch will fix the issue, the race appears rather real. Signed-off-by: Arjan van de Ven Signed-off-by: Len Brown commit 7b964f733798960c899dc40911329aee7bee25e4 Author: Jean Delvare Date: Fri Nov 28 15:24:39 2008 +0100 i2c-parport: Fix misplaced parport_release call We shouldn't release the parallel port until we are actually done with it. Signed-off-by: Jean Delvare commit 79b93e1359b1414b438f239c6e5e0ad91232e4c8 Author: Jean Delvare Date: Fri Nov 28 15:24:38 2008 +0100 i2c: Remove i2c clients in reverse order i2c clients should be removed in reverse order compared to the probe (actually: bind) order. This matters when several clients depend on each other. Signed-off-by: Jean Delvare Tested-by: Guennadi Liakhovetski commit d1846b0e7a1dc26f90fb0d75641aca9abb077ef9 Author: David Brownell Date: Fri Nov 28 15:24:38 2008 +0100 i2c/isp1301_omap: Build fixes Build fixes for isp1301_omap; no behavior changes: - fix incorrect probe() signature (it changed many months ago) - provide missing functions on H3 and H4 boards - "sparse" fixes (static, NULL-vs-0) The H3 build bits subset some of the stuff that was previously in the OMAP tree but never went to mainline. Signed-off-by: David Brownell Signed-off-by: Jean Delvare commit ee8a1a0a1a5817accd03ced7e7ffde3a4430f485 Author: Jan Scholz Date: Wed Nov 26 15:33:45 2008 +0100 HID: Apple ALU wireless keyboards are bluetooth devices While parsing 'hid_blacklist' in the apple alu wireless keyboard is not found. This happens because in the blacklist it is declared with HID_USB_DEVICE although the keyboards are really bluetooth devices. The same holds for 'apple_devices' list. This patch fixes it by changing HID_USB_DEVICE to HID_BLUETOOTH_DEVICE in those two lists. Signed-off-by: Jan Scholz Signed-off-by: Jiri Kosina commit af38d90d6a5e135b546a3f86222ba2ad895ba4ae Merge: 487ff32082a9bd7489d8185cf7d7a2fdf18a22fa a730b327ca70f0e4d933202e3979e96613c3585f Author: Russell King Date: Thu Nov 27 23:50:31 2008 +0000 Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 commit 487ff32082a9bd7489d8185cf7d7a2fdf18a22fa Author: Russell King Date: Thu Nov 27 11:13:58 2008 +0000 Allow architectures to override copy_user_highpage() With aliasing VIPT cache support, the ARM implementation of clear_user_page() and copy_user_page() sets up a temporary kernel space mapping such that we have the same cache colour as the userspace page. This avoids having to consider any userspace aliases from this operation. However, when highmem is enabled, kmap_atomic() have to setup mappings. The copy_user_highpage() and clear_user_highpage() call these functions before delegating the copies to copy_user_page() and clear_user_page(). The effect of this is that each of the *_user_highpage() functions setup their own kmap mapping, followed by the *_user_page() functions setting up another mapping. This is rather wasteful. Thankfully, copy_user_highpage() can be overriden by architectures by defining __HAVE_ARCH_COPY_USER_HIGHPAGE. However, replacement of clear_user_highpage() is more difficult because its inline definition is not conditional. It seems that you're expected to define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE and provide a replacement __alloc_zeroed_user_highpage() implementation instead. The allocation itself is fine, so we don't want to override that. What we really want to do is to override clear_user_highpage() with our own version which doesn't kmap_atomic() unnecessarily. Other VIPT architectures (PARISC and SH) would also like to override this function as well. Acked-by: Hugh Dickins Acked-by: James Bottomley Acked-by: Paul Mundt Signed-off-by: Russell King commit 52b19ac993f1aeadbce15b55302be9a35346e235 Author: Jan Kara Date: Tue Sep 23 18:24:08 2008 +0200 udf: Fix BUG_ON() in destroy_inode() udf_clear_inode() can leave behind buffers on mapping's i_private list (when we truncated preallocation). Call invalidate_inode_buffers() so that the list is properly cleaned-up before we return from udf_clear_inode(). This is ugly and suggest that we should cleanup preallocation earlier than in clear_inode() but currently there's no such call available since drop_inode() is called under inode lock and thus is unusable for disk operations. Signed-off-by: Jan Kara commit a730b327ca70f0e4d933202e3979e96613c3585f Author: Marek Vasut Date: Thu Nov 20 17:34:57 2008 +0100 [ARM] pxa/palmtx: misc fixes to use generic GPIO API Signed-off-by: Marek Vasut Signed-off-by: Eric Miao commit b627c8b17ccacba38c975bc0f69a49fc4e5261c9 Author: Joerg Roedel Date: Thu Nov 20 20:49:56 2008 +0100 x86: always define DECLARE_PCI_UNMAP* macros Impact: fix boot crash on AMD IOMMU if CONFIG_GART_IOMMU is off Currently these macros evaluate to a no-op except the kernel is compiled with GART or Calgary support. But we also need these macros when we have SWIOTLB, VT-d or AMD IOMMU in the kernel. Since we always compile at least with SWIOTLB we can define these macros always. This patch is also for stable backport for the same reason the SWIOTLB default selection patch is. Signed-off-by: Joerg Roedel Cc: Signed-off-by: Ingo Molnar commit 6417a917b564106dcf2b8f42687f92ad94635ddd Merge: 47fd6f7c94e15eb5f97dd1cbb0427a46b03c8185 723fdb781abfe78d8ba7d911abbb581722348aa7 Author: Russell King Date: Thu Nov 27 11:13:10 2008 +0000 Merge branch 'omap-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 commit abd942194dcba2fa9d24d547b8acd4ef052eaf73 Author: Martin Schwidefsky Date: Thu Nov 27 11:05:59 2008 +0100 [S390] Update default configuration. Signed-off-by: Martin Schwidefsky commit 0778dc3a624b48cf80072b04405cacd1ad4079be Author: Heiko Carstens Date: Thu Nov 27 11:05:58 2008 +0100 [S390] Fix alignment of initial kernel stack. We need an alignment of 16384 bytes for the initial kernel stack if the kernel is configured for 16384 bytes stacks but the linker script currently guarantees only an alignment of 8192 bytes. So fix this and simply use THREAD_SIZE as alignment value which will always do the right thing. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 2944a5c971c12766e2438ea407ec3567949c32b7 Author: Christian Borntraeger Date: Thu Nov 27 11:05:57 2008 +0100 [S390] pgtable.h: Fix oops in unmap_vmas for KVM processes When running several kvm processes with lots of memory overcommitment, we have seen an oops during process shutdown: ------------[ cut here ]------------ Kernel BUG at 0000000000193434 [verbose debug info unavailable] addressing exception: 0005 [#1] PREEMPT SMP Modules linked in: kvm sunrpc qeth_l2 dm_mod qeth ccwgroup CPU: 10 Not tainted 2.6.28-rc4-kvm-bigiron-00521-g0ccca08-dirty #8 Process kuli (pid: 14460, task: 0000000149822338, ksp: 0000000024f57650) Krnl PSW : 0704e00180000000 0000000000193434 (unmap_vmas+0x884/0xf10) R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:2 PM:0 EA:3 Krnl GPRS: 0000000000000002 0000000000000000 000000051008d000 000003e05e6034e0 00000000001933f6 00000000000001e9 0000000407259e0a 00000002be88c400 00000200001c1000 0000000407259608 0000000407259e08 0000000024f577f0 0000000407259e09 0000000000445fa8 00000000001933f6 0000000024f577f0 Krnl Code: 0000000000193426: eb22000c000d sllg %r2,%r2,12 000000000019342c: a7180000 lhi %r1,0 0000000000193430: b2290012 iske %r1,%r2 >0000000000193434: a7110002 tmll %r1,2 0000000000193438: a7840006 brc 8,193444 000000000019343c: 9602c000 oi 0(%r12),2 0000000000193440: 96806000 oi 0(%r6),128 0000000000193444: a7110004 tmll %r1,4 Call Trace: ([<00000000001933f6>] unmap_vmas+0x846/0xf10) [<0000000000199680>] exit_mmap+0x210/0x458 [<000000000012a8f8>] mmput+0x54/0xfc [<000000000012f714>] exit_mm+0x134/0x144 [<000000000013120c>] do_exit+0x240/0x878 [<00000000001318dc>] do_group_exit+0x98/0xc8 [<000000000013e6b0>] get_signal_to_deliver+0x30c/0x358 [<000000000010bee0>] do_signal+0xec/0x860 [<0000000000112e30>] sysc_sigpending+0xe/0x22 [<000002000013198a>] 0x2000013198a INFO: lockdep is turned off. Last Breaking-Event-Address: [<00000000001a68d0>] free_swap_and_cache+0x1a0/0x1a4 <4>---[ end trace bc19f1d51ac9db7c ]--- The faulting instruction is the storage key operation (iske) in ptep_rcp_copy (called by pte_clear, called by unmap_vmas). iske reads dirty and reference bit information for a physical page and requires a valid physical address. Since we are in pte_clear, we cannot rely on the pte containing a valid address. Fortunately we dont need these information in pte_clear - after all there is no mapping. The best fix is to remove the needless call to ptep_rcp_copy that contains the iske. Signed-off-by: Christian Borntraeger Signed-off-by: Martin Schwidefsky commit 8107d8296baff899db89c1716fe8af69a5b19d18 Author: Christian Borntraeger Date: Thu Nov 27 11:05:56 2008 +0100 [S390] fix/cleanup sched_clock CONFIG_PRINTK_TIME reveals that sched_clock has a wrong offset during boot: .. [ 0.000000] Movable zone: 0 pages used for memmap [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 775679 [ 0.000000] Kernel command line: dasd=4b6c root=/dev/dasda1 ro noinitrd [ 0.000000] PID hash table entries: 4096 (order: 12, 32768 bytes) [6920575.975232] console [ttyS0] enabled [6920575.987586] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes) [6920575.991404] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes) .. The s390 implementation of sched_clock uses the store clock instruction and subtracts jiffies_timer_cc. jiffies_timer_cc is a local variable in arch/s390/kernel/time.c and only used for sched_clock and monotonic clock. For historical reasons there is an offset on that value. With todays code this offset is unnecessary. By removing that offset we can get a sched_clock which returns the nanoseconds after time_init. This improves CONFIG_PRINTK_TIME. Since sched_clock is the only user, I have also renamed jiffies_timer_cc to sched_clock_base_cc. In addition, the local variable init_timer_cc is redundant and can be romved as well. Signed-off-by: Christian Borntraeger Signed-off-by: Martin Schwidefsky commit 59da21398e680e8100625d689c8bebee6a139e93 Author: Martin Schwidefsky Date: Thu Nov 27 11:05:55 2008 +0100 [S390] fix system call parameter functions. syscall_get_nr() currently returns a valid result only if the call chain of the traced process includes do_syscall_trace_enter(). But collect_syscall() can be called for any sleeping task, the result of syscall_get_nr() in general is completely bogus. To make syscall_get_nr() work for any sleeping task the traps field in pt_regs is replace with svcnr - the system call number the process is executing. If svcnr == 0 the process is not on a system call path. The syscall_get_arguments and syscall_set_arguments use regs->gprs[2] for the first system call parameter. This is incorrect since gprs[2] may have been overwritten with the system call number if the call chain includes do_syscall_trace_enter. Use regs->orig_gprs2 instead. Signed-off-by: Martin Schwidefsky commit 4cd4262034849da01eb88659af677b69f8169f06 Author: Steven Rostedt Date: Wed Nov 26 21:04:24 2008 -0500 sched: prevent divide by zero error in cpu_avg_load_per_task Impact: fix divide by zero crash in scheduler rebalance irq While testing the branch profiler, I hit this crash: divide error: 0000 [#1] PREEMPT SMP [...] RIP: 0010:[] [] cpu_avg_load_per_task+0x50/0x7f [...] Call Trace: <0> [] find_busiest_group+0x3e5/0xcaa [] rebalance_domains+0x2da/0xa21 [] ? find_next_bit+0x1b2/0x1e6 [] run_rebalance_domains+0x112/0x19f [] __do_softirq+0xa8/0x232 [] call_softirq+0x1c/0x3e [] do_softirq+0x94/0x1cd [] irq_exit+0x6b/0x10e [] smp_apic_timer_interrupt+0xd3/0xff [] apic_timer_interrupt+0x13/0x20 The code for cpu_avg_load_per_task has: if (rq->nr_running) rq->avg_load_per_task = rq->load.weight / rq->nr_running; The runqueue lock is not held here, and there is nothing that prevents the rq->nr_running from going to zero after it passes the if condition. The branch profiler simply made the race window bigger. This patch saves off the rq->nr_running to a local variable and uses that for both the condition and the division. Signed-off-by: Steven Rostedt Peter Zijlstra Signed-off-by: Ingo Molnar commit 4f5a7f40ddbae98569acbb99118a98570315579c Author: Lai Jiangshan Date: Thu Nov 27 10:21:46 2008 +0800 ftrace: prevent recursion Impact: prevent unnecessary stack recursion if the resched flag was set before we entered, then don't reschedule. Signed-off-by: Lai Jiangshan Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit e899b6485c332aa2d7510739507ab5e5d7b28e59 Author: Lin Ming Date: Thu Nov 27 14:42:30 2008 +0800 ACPICA: disable _BIF warning A generic work-around from ACPICA is in the queue, but since Linux has a work-around in its battery driver, we can disable this warning now. Allow _BIF method to return an Package with Buffer elements http://bugzilla.kernel.org/show_bug.cgi?id=11822 Signed-off-by: Lin Ming Signed-off-by: Len Brown commit a6e0887f21bbab337ee32d9c0a84d7c0b6e9141b Author: Len Brown Date: Sat Nov 8 01:21:10 2008 -0500 ACPI: delete OSI(Linux) DMI dmesg spam Linux will continue to ignore OSI(Linux), except for a white-list containing a few systems. So delete the black-list, and stop soliciting user-feedback on the console. Signed-off-by: Len Brown commit 95a28ed08619cc70f31611886ac7b26ab0e462dc Author: Bob Moore Date: Thu Nov 13 11:01:34 2008 +0800 ACPICA: Allow _WAK method to return an Integer This can happen if the _WAK method returns nothing (as per ACPI 1.0) but does return an integer if the implicit return mechanism is enabled. This is the only method that has this problem, since it is also defined to return a package of two integers (ACPI 1.0b+). In all other cases, if a method returns an object when one was not expected, no warning is issued. Signed-off-by: Bob Moore Signed-off-by: Lin Ming Signed-off-by: Len Brown commit 0081b162023690877e0096ef17a82ba1969befa8 Author: Henrique de Moraes Holschuh Date: Sun Nov 9 10:54:02 2008 -0200 ACPI: thinkpad-acpi: fix fan sleep/resume path This fixes a regression from v2.6.27, caused by commit 5814f737e1cd2cfa2893badd62189acae3e1e1fd, "ACPI: thinkpad-acpi: attempt to preserve fan state on resume". It is possible for fan_suspend() to fail to properly initialize fan_control_desired_level as required by fan_resume(), resulting on the fan always being set to level 7 on resume if the user didn't touch the fan controller. In order to get fan sleep/resume handling to work right: 1. Fix the fan_suspend handling of the T43 firmware quirk. If it is still undefined, we didn't touch the fan yet and that means we have no business doing it on resume. 2. Store the fan level on its own variable to avoid any possible issues with hijacking fan_control_desired_level (which isn't supposed to have anything other than 0-7 in it, anyway). 3. Change the fan_resume code to me more straightforward to understand (although we DO optimize the boolean logic there, otherwise it looks disgusting). 4. Add comments to help understand what the code is supposed to be doing. 5. Change fan_set_level to be less strict about how auto and full-speed modes are requested. http://bugzilla.kernel.org/show_bug.cgi?id=11982 Signed-off-by: Henrique de Moraes Holschuh Reported-by: Tino Keitel Signed-off-by: Len Brown commit 3fedd90fdf17643df1da473c5da983137d51bbdb Author: Alessandro Guido Date: Wed Nov 12 23:13:35 2008 +0100 sony-laptop: printk tweak There's no need to print "Sony: " just after "sony-laptop: " (DRV_PFX). Signed-off-by: Alessandro Guido Signed-off-by: Len Brown commit 38cfc148e1bc470175b3ad131db7dd7bdcff37ee Author: Alessandro Guido Date: Wed Nov 12 23:03:28 2008 +0100 sony-laptop: brightness regression fix After commit 540b8bb9c33935183ceb5bed466a42ad72b2af56: sony-laptop: fingers off backlight if video.ko is serving this functionality I can't set brightness on my sony laptop (nothing in /sys/class/backlight). dmesg says "sony-laptop: Sony: Brightness ignored, must be controlled by ACPI video driver". The function acpi_video_backlight_support returns 0 if we should use the vendor-specific backlight support, while non-0 if the ACPI generic should be used. Because of this, the check introduced by the said commit appears reversed. Signed-off-by: Alessandro Guido Signed-off-by: Len Brown commit 3bdca1b863c1ebcb2244fc0cb683876d7330e62b Author: Len Brown Date: Wed Nov 26 17:55:15 2008 -0500 Revert "ACPI: don't enable control method power button as wakeup device when Fixed Power button is used" This reverts commit faee816b1502385dc9bc5abf2960d1cc645844d1. http://bugzilla.kernel.org/show_bug.cgi?id=12091 Signed-off-by: Len Brown commit 65df78473ffbf3bff5e2034df1638acc4f3ddd50 Author: Rafael J. Wysocki Date: Wed Nov 26 17:53:13 2008 -0500 ACPI suspend: Blacklist boxes that require us to set SCI_EN directly on resume Some Apple boxes evidently require us to set SCI_EN on resume directly, because if we don't do that, they hung somewhere in the resume code path. Moreover, on these boxes it is not sufficient to use acpi_enable() to turn ACPI on during resume. All of this is against the ACPI specification which states that (1) the BIOS is supposed to return from the S3 sleep state with ACPI enabled (SCI_EN set) and (2) the SCI_EN bit is owned by the hardware and we are not supposed to change it. For this reason, blacklist the affected systems so that the SCI_EN bit is set during resume on them. [NOTE: Unconditional setting SCI_EN for all system on resume doesn't work, because it makes some other systems crash (that's to be expected). Also, it is not entirely clear right now if all of the Apple boxes require this workaround.] This patch fixes the recent regression tracked as http://bugzilla.kernel.org/show_bug.cgi?id=12038 Signed-off-by: Rafael J. Wysocki Tested-by: Tino Keitel Tested-by: Bob Copeland Signed-off-by: Len Brown commit 40599072dca3ec7d4c9ff8271978be169f974638 Author: Pavel Machek Date: Tue Nov 25 12:05:08 2008 +0100 ACPI: scheduling in atomic via acpi_evaluate_integer () Now I know why I had strange "scheduling in atomic" problems: acpi_evaluate_integer() does malloc(..., irqs_disabled() ? GFP_ATOMIC : GFP_KERNEL)... which is (of course) broken. There's no way to reliably tell if we need GFP_ATOMIC or not from code, this one for example fails to detect spinlocks held. Fortunately, allocation seems small enough to be done on stack. Signed-off-by: Pavel Machek Acked-by: Bob Moore Signed-off-by: Len Brown commit 723fdb781abfe78d8ba7d911abbb581722348aa7 Author: Tero Kristo Date: Wed Nov 26 14:35:16 2008 -0800 ARM: OMAP: Fixes for suspend / resume GPIO wake-up handling Use the correct wake-up enable register, and make it work with 34xx also. Signed-off-by: Tero Kristo Signed-off-by: Kevin Hilman Signed-off-by: Tony Lindgren commit 558073dd56707864f09d563b64e7c37c021e89d2 Author: Alexey Starikovskiy Date: Fri Nov 21 22:41:01 2008 +0800 ACPI: battery: Convert discharge energy rate to current properly ACPI battery interface reports its state either in mW or in mA, and discharge rate in your case is reported in mW. power_supply interface does not have such a parameter, so current_now parameter is used for all cases. But in case of mW, reported discharge should be converted into mA. Signed-off-by: Alexey Starikovskiy Tested-by: Ferenc Wagner Signed-off-by: Len Brown commit 90f671301a5e2678cdc99f611cd842161c3bb87f Author: Kay Sievers Date: Fri Nov 7 01:42:46 2008 +0100 parisc: struct device - replace bus_id with dev_name(), dev_set_name() (I did not compile or test it, please let me know, or help fixing it, if something is wrong with the conversion) This patch is part of a larger patch series which will remove the "char bus_id[20]" name string from struct device. The device name is managed in the kobject anyway, and without any size limitation, and just needlessly copied into "struct device". To set and read the device name dev_name(dev) and dev_set_name(dev) must be used. If your code uses static kobjects, which it shouldn't do, "const char *init_name" can be used to statically provide the name the registered device should have. At registration time, the init_name field is cleared, to enforce the use of dev_name(dev) to access the device name at a later time. We need to get rid of all occurrences of bus_id in the entire tree to be able to enable the new interface. Please apply this patch, and possibly convert any remaining remaining occurrences of bus_id. We want to submit a patch to -next, which will remove bus_id from "struct device", to find the remaining pieces to convert, and finally switch over to the new api, which will remove the 20 bytes array and does no longer have a size limitation. Thanks, Kay Cc: Matthew Wilcox Cc: linux-parisc@vger.kernel.org Acked-by: Greg Kroah-Hartman Signed-off-by: Kay Sievers Signed-off-by: Kyle McMartin commit 7a3f5134a8f5bd7fa38b5645eef05e8a4eb62951 Author: Helge Deller Date: Wed Nov 26 12:46:22 2008 -0800 parisc: fix kernel crash when unwinding a userspace process Any user on existing parisc 32- and 64bit-kernels can easily crash the kernel and as such enforce a DSO. A simple testcase is available here: http://gsyprf10.external.hp.com/~deller/crash.tgz The problem is introduced by the fact, that the handle_interruption() crash handler calls the show_regs() function, which in turn tries to unwind the stack by calling parisc_show_stack(). Since the stack contains userspace addresses, a try to unwind the stack is dangerous and useless and leads to the crash. The fix is trivial: For userspace processes a) avoid to unwind the stack, and b) avoid to resolve userspace addresses to kernel symbol names. While touching this code, I converted print_symbol() to %pS printk formats and made parisc_show_stack() static. An initial patch for this was written by Kyle McMartin back in August: http://marc.info/?l=linux-parisc&m=121805168830283&w=2 Compile and run-tested with a 64bit parisc kernel. Signed-off-by: Helge Deller Cc: Grant Grundler Cc: Matthew Wilcox Cc: [2.6.25.x, 2.6.26.x, 2.6.27.x, earlier...] Signed-off-by: Andrew Morton Signed-off-by: Kyle McMartin commit 9860d1b08b082ffb54c4b7827c48c2728e12ba21 Author: Geert Uytterhoeven Date: Sun Nov 16 12:04:13 2008 +0100 parisc: __kernel_time_t is always long __kernel_time_t is always long on PA-RISC, irrespective of CONFIG_64BIT, hence move it out of the #ifdef CONFIG_64BIT / #else / #endif block. Signed-off-by: Geert Uytterhoeven Signed-off-by: Kyle McMartin commit 7b4d469228a92a00e412675817cedd60133de38a Author: Alexey Starikovskiy Date: Thu Nov 13 12:00:03 2008 +0300 ACPI: EC: count interrupts only if called from interrupt handler. fix 2.6.28 EC interrupt storm regression Signed-off-by: Alexey Starikovskiy Signed-off-by: Len Brown commit a98ee8c1c707fe3210b00ef9f806ba8e2bf35504 Author: Jeff Layton Date: Wed Nov 26 19:32:33 2008 +0000 [CIFS] fix regression in cifs_write_begin/cifs_write_end The conversion to write_begin/write_end interfaces had a bug where we were passing a bad parameter to cifs_readpage_worker. Rather than passing the page offset of the start of the write, we needed to pass the offset of the beginning of the page. This was reliably showing up as data corruption in the fsx-linux test from LTP. It also became evident that this code was occasionally doing unnecessary read calls. Optimize those away by using the PG_checked flag to indicate that the unwritten part of the page has been initialized. CC: Nick Piggin Acked-by: Dave Kleikamp Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 545f4e99dee7284ed57c79384c5c1d5ac58dcd59 Author: Ping Cheng Date: Mon Nov 24 11:44:27 2008 -0500 Input: wacom - add support for new USB Tablet PCs Signed-off-by: Ping Cheng Signed-off-by: Dmitry Torokhov commit 461cba2d294fe83297edf8a6556912812903dce1 Author: Peng Li Date: Tue Nov 18 12:39:02 2008 +0800 drm/i915: Save/restore HWS_PGA on suspend/resume It fixes suspend/resume failure of xf86-video-intel dri2 branch. As dri2 branch doesn't call I830DRIResume() to restore hardware status page anymore, we need to preserve this register across suspend/resume. Signed-off-by: Peng Li Signed-off-by: Eric Anholt Signed-off-by: Dave Airlie commit 2fd36a5d6e830269a37f0f6ccfd34ee0517ebc7d Author: Eric Miao Date: Wed Nov 26 12:51:42 2008 +0800 [ARM] pxa/corgi: update default config to exclude tosa from being built Signed-off-by: Eric Miao commit 72e9622c2a2eb73d82c716504cc93d22cd3cfd8e Author: Guennadi Liakhovetski Date: Tue Nov 25 18:57:08 2008 +0100 [ARM] pxa/pcm990: use negative number for an invalid GPIO in camera data 0 is a valid GPIO number, use a negative number to specify, that this camera doesn't have a GPIO for bus-width switching. Signed-off-by: Guennadi Liakhovetski Signed-off-by: Eric Miao commit ffd565a8b817d1eb4b25184e8418e8d96c3f56f6 Author: Andreas Herrmann Date: Tue Nov 25 17:18:03 2008 +0100 x86: fixup config space size of CPU functions for AMD family 11h Impact: extend allowed configuration space access on 11h CPUs from 256 to 4K Signed-off-by: Andreas Herrmann Acked-by: Jesse Barnes Signed-off-by: Ingo Molnar commit 147dcf5489fb86c4bfe400520186f9f11b304783 Author: Amit Kucheria Date: Tue Nov 25 15:11:12 2008 -0800 ARM: OMAP: Typo fix for clock_allow_idle The second clk_deny_idle instance should be clk_allow_idle instead. Signed-off-by: Amit Kucheria Signed-off-by: Tony Lindgren commit 031bb27c4bf77c2f60b3f3dea8cce63ef0d1fba9 Author: Stefan Richter Date: Sat Nov 22 12:38:58 2008 +0100 firewire: fw-sbp2: another iPod mini quirk entry Add another model ID of a broken firmware to prevent early I/O errors by acesses at the end of the disk. Reported at linux1394-user, http://marc.info/?t=122670842900002 Signed-off-by: Stefan Richter commit 9e0de91011ef6fe6eb3bb63f7ea15f586955660a Author: Stefan Richter Date: Sat Nov 22 12:38:24 2008 +0100 ieee1394: sbp2: another iPod mini quirk entry Add another model ID of a broken firmware to prevent early I/O errors by acesses at the end of the disk. Reported at linux1394-user, http://marc.info/?t=122670842900002 Signed-off-by: Stefan Richter commit a266d9f1253a38ec2d5655ebcd6846298b0554f4 Author: Andreas Herrmann Date: Fri Nov 21 14:49:25 2008 +0100 [CPUFREQ] powernow-k8: ignore out-of-range PstateStatus value A workaround for AMD CPU family 11h erratum 311 might cause that the P-state Status Register shows a "current P-state" which is larger than the "current P-state limit" in P-state Current Limit Register. For the wrong P-state value there is no ACPI _PSS object defined and powernow-k8/cpufreq can't determine the proper CPU frequency for that state. As a consequence this can cause a panic during boot (potentially with all recent kernel versions -- at least I have reproduced it with various 2.6.27 kernels and with the current .28 series), as an example: powernow-k8: Found 1 AMD Turion(tm)X2 Ultra DualCore Mobile ZM-82 processors (2 \ ) powernow-k8: 0 : pstate 0 (2200 MHz) powernow-k8: 1 : pstate 1 (1100 MHz) powernow-k8: 2 : pstate 2 (600 MHz) BUG: unable to handle kernel paging request at ffff88086e7528b8 IP: [] cpufreq_stats_update+0x4a/0x5f PGD 202063 PUD 0 Oops: 0002 [#1] SMP last sysfs file: CPU 1 Modules linked in: Pid: 1, comm: swapper Not tainted 2.6.28-rc3-dirty #16 RIP: 0010:[] [] cpufreq_stats_update+0x4a/0\ f Synaptics claims to have extended capabilities, but I'm not able to read them.<6\ 6 RAX: 0000000000000000 RBX: 0000000000000001 RCX: ffff88006e7528c0 RDX: 00000000ffffffff RSI: ffff88006e54af00 RDI: ffffffff808f056c RBP: 00000000fffee697 R08: 0000000000000003 R09: ffff88006e73f080 R10: 0000000000000001 R11: 00000000002191c0 R12: ffff88006fb83c10 R13: 00000000ffffffff R14: 0000000000000001 R15: 0000000000000000 FS: 0000000000000000(0000) GS:ffff88006fb50740(0000) knlGS:0000000000000000 Unable to initialize Synaptics hardware. CS: 0010 DS: 0018 ES: 0018 CR0: 000000008005003b CR2: ffff88086e7528b8 CR3: 0000000000201000 CR4: 00000000000006e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 Process swapper (pid: 1, threadinfo ffff88006fb82000, task ffff88006fb816d0) Stack: ffff88006e74da50 0000000000000000 ffff88006e54af00 ffffffff804863c7 ffff88006e74da50 0000000000000000 00000000ffffffff 0000000000000000 ffff88006fb83c10 ffffffff8024b46c ffffffff808f0560 ffff88006fb83c10 Call Trace: [] ? cpufreq_stat_notifier_trans+0x51/0x83 [] ? notifier_call_chain+0x29/0x4c [] ? __srcu_notifier_call_chain+0x46/0x61 [] ? cpufreq_notify_transition+0x93/0xa9 [] ? powernowk8_target+0x1e8/0x5f3 [] ? cpufreq_governor_performance+0x1b/0x20 [] ? __cpufreq_governor+0x71/0xa8 [] ? __cpufreq_set_policy+0x101/0x13e [] ? cpufreq_add_dev+0x3f0/0x4cd [] ? handle_update+0x0/0x8 [] ? sysdev_driver_register+0xb6/0x10d [] ? powernowk8_init+0x0/0x7e [] ? cpufreq_register_driver+0x8f/0x140 [] ? _stext+0x56/0x14f [] ? proc_register+0x122/0x17d [] ? create_proc_entry+0x73/0x8a [] ? register_irq_proc+0x92/0xaa [] ? init_irq_proc+0x57/0x69 [] ? kernel_init+0x116/0x169 [] ? child_rip+0xa/0x11 [] ? kernel_init+0x0/0x169 [] ? child_rip+0x0/0x11 Code: 05 c5 83 36 00 48 c7 c2 48 5d 86 80 48 8b 04 d8 48 8b 40 08 48 8b 34 02 48\ RIP [] cpufreq_stats_update+0x4a/0x5f RSP CR2: ffff88086e7528b8 ---[ end trace 0678bac75e67a2f7 ]--- Kernel panic - not syncing: Attempted to kill init! In short, aftereffect of the wrong P-state is that cpufreq_stats_update() uses "-1" as index for some array in cpufreq_stats_update (unsigned int cpu) { ... if (stat->time_in_state) stat->time_in_state[stat->last_index] = cputime64_add(stat->time_in_state[stat->last_index], cputime_sub(cur_time, stat->last_time)); ... } Fortunately, the wrong P-state value is returned only if the core is in P-state 0. This fix solves the problem by detecting the out-of-range P-state, ignoring it, and using "0" instead. Cc: Mark Langsdorf Signed-off-by: Andreas Herrmann Signed-off-by: Dave Jones commit 121fe86bdf062af3fed1e998c08c3c272ae6dc99 Author: Robin Getz Date: Fri Oct 17 01:36:43 2008 +0800 [CPUFREQ] Documentation: Add Blackfin to list of supported processors Signed-off-by: Robin Getz Signed-off-by: Bryan Wu Signed-off-by: Dave Jones commit de90add30e79261c3b5be68bb0f22d2ef98e8113 Author: Markus Metzger Date: Tue Nov 25 08:52:56 2008 +0100 x86, bts: fix wrmsr and spinlock over kmalloc Impact: fix sleeping-with-spinlock-held bugs/crashes - Turn a wrmsr to write the DS_AREA MSR into a wrmsrl. - Use irqsave variants of spinlocks. - Do not allocate memory while holding spinlocks. Reported-by: Stephane Eranian Reported-by: Ingo Molnar Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit c4858ffc8f2dc850cb1f609c679b1ac1ad36ef0c Author: Markus Metzger Date: Tue Nov 25 08:49:06 2008 +0100 x86, pebs: fix PEBS record size configuration Impact: fix DS hw enablement on 64-bit x86 Fix the PEBS record size in the DS configuration. Reported-by: Stephane Eranian Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit e5e8ca633bbe972eff6f84e064a63c0c08ed6c3d Author: Markus Metzger Date: Tue Nov 25 08:47:19 2008 +0100 x86, bts: turn macro into static inline function Impact: cleanup Replace a macro with a static inline function. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit 292c669cd7087a090d6420e223eb1072f3e3c50b Author: Markus Metzger Date: Tue Nov 25 08:45:13 2008 +0100 x86, bts: exclude ds.c from build when disabled Impact: cleanup Move the CONFIG guard from the .c file into the makefile. Reported-by: Andi Kleen Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit b6283534a3e057f8268ca5448305900f74d12608 Merge: c879c634c928223765cf50103ddaf32f2a55fed0 661cd8fb5210af78f0763071642e0764a10389a6 Author: Takashi Iwai Date: Tue Nov 25 17:21:32 2008 +0100 Merge branch 'topic/fix/hda' into for-linus commit eff79aee91dd07e944df65fa448c8baeee7709d8 Author: Julia Lawall Date: Tue Nov 25 14:13:03 2008 +0100 arch/x86/kernel/pci-calgary_64.c: change simple_strtol to simple_strtoul Impact: fix theoretical option string parsing overflow Since bridge is unsigned, it would seem better to use simple_strtoul that simple_strtol. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r2@ long e; position p; @@ e = simple_strtol@p(...) @@ position p != r2.p; type T; T e; @@ e = - simple_strtol@p + simple_strtoul (...) // Signed-off-by: Julia Lawall Cc: muli@il.ibm.com Cc: jdmason@kudzu.us Cc: discuss@x86-64.org Signed-off-by: Ingo Molnar commit 5cf02b7bafddb6c3c16ddfb23d3ce187f70528ba Author: Steven Rostedt Date: Tue Nov 25 00:42:37 2008 -0500 x86: use limited register constraint for setnz Impact: build fix with certain compilers GCC can decide to use %dil when "r" is used, which is not valid for setnz. This bug was brought out by Stephen Rothwell's merging of the branch tracer into linux-next. [ Thanks to Uros Bizjak for recommending 'q' over 'Q' ] Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 661cd8fb5210af78f0763071642e0764a10389a6 Author: Takashi Iwai Date: Tue Nov 25 15:18:29 2008 +0100 ALSA: hda - Check model for Dell 92HD73xx laptops Check the model type instead of PCI SSID for detection of the mic types on Dell laptops with IDT 92HD73xx codecs. In this way, a new laptop can be tested via model module option. Signed-off-by: Takashi Iwai commit c65574abad288d7123bd49e7906fa53b7e420239 Author: Takashi Iwai Date: Fri Nov 21 18:01:44 2008 +0100 ALSA: hda - mark Dell studio 1535 quirk Fixed the quirk string for Dell studio 1535 (the product name wasn't published at the time the patch was made). Signed-off-by: Takashi Iwai commit 95026623da32848bc93fbfb472dc8737487df450 Author: Takashi Iwai Date: Mon Nov 24 07:51:11 2008 +0100 ALSA: hda - No 'Headphone as Line-out' swich without line-outs STAC/IDT driver creates "Headphone as Line-Out" switch even if there is no line-out pins on the machine. For devices only with headpohnes and speaker-outs, this switch shouldn't be created. Signed-off-by: Takashi Iwai commit f73d35853e9263c7c404f0d6c0fe3d83fc6fd5c0 Author: Takashi Iwai Date: Tue Nov 25 08:21:51 2008 +0100 ALSA: hda - Fix AFG power management on IDT 92HD* codecs The AFG pin power-mapping isn't properly set for the fixed I/O pins on IDT 92HD* codecs. This resulted in the low power mode after the boot until any jack detection is executed, thus no output from the speaker. This patch fixes the power mapping for the fixed pins, and also fixes the GPIO bits and digital I/O pin settings properly in stac92xx_ini(). Reference: Novell bnc#446025 https://bugzilla.novell.com/show_bug.cgi?id=446025 Signed-off-by: Takashi Iwai commit 9e97697666d0e7494946cfb639f6a9faacd5f1b0 Author: Takashi Iwai Date: Tue Nov 25 08:17:20 2008 +0100 ALSA: hda - Fix caching of SPDIF status bits SPDIF status bits controls are written via snd_hda_codec_write() without caching. This causes a regression at resume that the bits are lost. Simply replacing it with the cached version fixes the problem. Reference: http://lkml.org/lkml/2008/11/24/324 Signed-off-by: Takashi Iwai commit 7953031da4200323ab5d85bd514054ca4ba9d225 Author: Tony Lindgren Date: Mon Nov 24 18:11:16 2008 -0800 ARM: OMAP: Remove broken LCD driver for SX1 Recently the omap McBSP code was cleaned up to get rid of direct McBSP register tinkering by the drivers. Looks like lcd_sx1.c never got converted, and now it breaks builds. It seems the lcd_sx1.c driver is attempting SPI mode, but doing it in a different way compared to omap_mcbsp_set_spi_mode(). Remove the broken driver, patches welcome to add it back when done properly by patching both mcbsp.c and lcd_sx1.c. Cc: Vovan888@gmail.com Cc: linux-fbdev-devel@lists.sourceforge.net Signed-off-by: Tony Lindgren commit 52440211dcdc52c0b757f8b34d122e11b12cdd50 Author: Keith Packard Date: Tue Nov 18 09:30:25 2008 -0800 drm: move drm vblank initialization/cleanup to driver load/unload drm vblank initialization keeps track of the changes in driver-supplied frame counts across vt switch and mode setting, but only if you let it by not tearing down the drm vblank structure. Signed-off-by: Keith Packard Signed-off-by: Dave Airlie commit 6133047aa64d2fd5b3b79dff74f696ded45615b2 Author: Keith Packard Date: Thu Nov 20 23:14:48 2008 -0800 drm/i915: execbuffer pins objects, no need to ensure they're still in the GTT Before we had the notion of pinning objects, we had a kludge around to make sure all of the objects were still resident in the GTT before we committed to executing a batch buffer. We don't need this any longer, and it sticks an error return in the middle of object domain computations that must be associated with a subsequent flush/invalidate emmission into the ring. Signed-off-by: Keith Packard Signed-off-by: Eric Anholt Signed-off-by: Dave Airlie commit 05eff845a28499762075d3a72e238a31f4d2407c Author: Keith Packard Date: Wed Nov 19 14:03:05 2008 -0800 drm/i915: Always read pipestat in irq_handler Because we write pipestat before iir, it's possible that a pipestat interrupt will occur between the pipestat write and the iir write. This leaves pipestat with an interrupt status not visible in iir. This may cause an interrupt flood as we never clear the pipestat event. Signed-off-by: Keith Packard Signed-off-by: Eric Anholt Signed-off-by: Dave Airlie commit 2678d9d6964b29ecd1975870c7a850242b29bc5c Author: Keith Packard Date: Thu Nov 20 22:54:54 2008 -0800 drm/i915: Subtract total pinned bytes from available aperture size The old code was wandering through the active list looking for pinned buffers; there may be other pinned buffers around. Fortunately, we keep a count of the total amount of pinned memory and can use that instead. Signed-off-by: Keith Packard Signed-off-by: Eric Anholt Signed-off-by: Dave Airlie commit 28dfe52a6e8a1495067c4331358700a170d0ee86 Author: Eric Anholt Date: Thu Nov 13 15:00:55 2008 -0800 drm/i915: Avoid BUG_ONs on VT switch with a wedged chipset. Instead, just warn that bad things are happening and do our best to clean up the mess without the GPU's help. Signed-off-by: Eric Anholt Signed-off-by: Dave Airlie commit cdfbc41f6d602fc0105fb2b4e0645cc1aa274c12 Author: Eric Anholt Date: Tue Nov 4 15:50:30 2008 -0800 drm/i915: Remove IMR masking during interrupt handler, and restart it if needed. The IMR masking was a technique recommended for avoiding getting stuck with no interrupts generated again in MSI mode. It kept new IIR bits from getting set between the IIR read and the IIR write, which would have otherwise prevented an MSI from ever getting generated again. However, this caused a problem for vblank as the IMR mask would keep the pipe event interrupt from getting reflected in IIR, even after the IMR mask was brought back down. Instead, just check the state of IIR after we ack the interrupts we're going to handle, and restart if we didn't get IIR all the way to zero. Signed-off-by: Eric Anholt Signed-off-by: Dave Airlie commit 7c463586427bbbad726ba561bae4ba5acada2481 Author: Keith Packard Date: Tue Nov 4 02:03:27 2008 -0800 drm/i915: Manage PIPESTAT to control vblank interrupts instead of IMR. The pipestat fields affect reporting of all vblank-related interrupts, so we have to reset them during the irq_handler, and while enabling vblank interrupts. Otherwise, if a pipe status field had been set to non-zero before enabling reporting, we would never see an interrupt again. This patch adds i915_enable_pipestat and i915_disable_pipestat to abstract out the steps needed to change the reported interrupts. Signed-off-by: Keith Packard Signed-off-by: Eric Anholt Signed-off-by: Dave Airlie commit 8442c87d2f6c73cdc9a391e4dd9390523d242bda Author: Arjan van de Ven Date: Sun Nov 23 22:35:57 2008 -0500 Input: replace spin_lock_bh with spin_lock_irqsave in ml_ff_playback ml_ff_playback() uses spin_(un)lock_bh. However this function is called with interrupts disabled from erase_effect() in drivers/input/ff-core.c:196. This is not permitted, and will result in a WARN_ON in the bottom half handling code. This patch changes this function to just use spin_lock_irqsave() instead, solving the problem and simplifying the locking logic. This was reported as entry #106559 in kerneloops.org Reported-by: kerneloops.org Signed-off-by: Arjan van de Ven Signed-off-by: Dmitry Torokhov commit 8ec2e24356e63dc298c6040557faf396410907ac Author: David Daney Date: Thu Nov 20 17:26:36 2008 -0800 MIPS: Make BUG() __noreturn. Often we do things like put BUG() in the default clause of a case statement. Since it was not declared __noreturn, this could sometimes lead to bogus compiler warnings that variables were used uninitialized. There is a small problem in that we have to put a magic while(1); loop to fool GCC into really thinking it is noreturn. This makes the new BUG() function 3 instructions long instead of just 1, but I think it is worth it as it is now unnecessary to do extra work to silence the 'used uninitialized' warnings. I also re-wrote BUG_ON so that if it is given a constant condition, it just does BUG() instead of loading a constant value in to a register and testing it. Signed-off-by: David Daney Signed-off-by: Ralf Baechle commit 50f3beb50abe0cc0228363af804e50e710b3e5b0 Author: Mauro Carvalho Chehab Date: Mon Nov 24 08:45:57 2008 -0300 V4L/DVB (9742): em28xx-alsa: implement another locking schema Instead of using a spinlock, it is better to call the proper pcm stream locking schema. Signed-off-by: Mauro Carvalho Chehab commit 7a8f4ccfd572a11f609439dc6a75165b441641bc Author: Michael Krufky Date: Fri Nov 21 17:14:37 2008 -0300 V4L/DVB (9732): sms1xxx: use new firmware for Hauppauge WinTV MiniStick New firmware image brings enhanced tuning performance. Firmware is available for download at the following location: http://www.steventoth.net/linux/sms1xxx Signed-off-by: Michael Krufky Signed-off-by: Mauro Carvalho Chehab commit e07a1d8ab20a059fefbfd1558db43701bca560d7 Author: Jean-Francois Moine Date: Wed Nov 19 06:37:53 2008 -0300 V4L/DVB (9691): gspca: Move the video device to a separate area. The video device was part of the gspca device. On device disconnection while streaming, the device structure is freed at close time. In this case, the remaining close job on the video device run out of allocated memory. Signed-off-by: Jean-Francois Moine Signed-off-by: Mauro Carvalho Chehab commit 5c4fa002b1c7b40f65fa911ae17a823ec9e26ab2 Author: Jean-Francois Moine Date: Tue Nov 18 15:52:31 2008 -0300 V4L/DVB (9690): gspca: Lock the subdrivers via module_get/put. The previous subdriver protection against rmmod was done via the file operations table in the device descriptor. On device disconnection while streaming, the device structure was freed at close time, and the module_put still used the module name in the freed area. Now, explicit module get/put are done on open and close. Signed-off-by: Jean-Francois Moine Signed-off-by: Mauro Carvalho Chehab commit 98522a7be97f2b23451342e36c39f412f0461e24 Author: Jean-Francois Moine Date: Tue Nov 18 06:33:08 2008 -0300 V4L/DVB (9689): gspca: Memory leak when disconnect while streaming. As a side effect, the sd routine stop0 is called on disconnect. This permits the subdriver to free its resources. Signed-off-by: Jean-Francois Moine Signed-off-by: Mauro Carvalho Chehab commit 3f9b5d4dda6d85aab33fef32e8351ddc34c81fb4 Merge: be542fa56b1b5b269a70b4df219d0cbd871f16d2 606572634c3faa5b32a8fc430266e6e9d78d2179 Author: Paul Mackerras Date: Mon Nov 24 11:54:08 2008 +1100 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/jk/spufs into merge commit be542fa56b1b5b269a70b4df219d0cbd871f16d2 Merge: 11bac8a026dd38380b52a914ec9bf65fb2ad13e2 6612d9b0b8208c2ade3a16b8302a271ec81d45f6 Author: Paul Mackerras Date: Mon Nov 24 11:53:58 2008 +1100 Merge branch 'merge' of ssh://master.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx into merge commit 11bac8a026dd38380b52a914ec9bf65fb2ad13e2 Merge: e871809cccc11aaa072afaf746f8fd946d2d9cac c8d698849e135780738c2cb08f07f06eda982a8c Author: Paul Mackerras Date: Mon Nov 24 11:53:44 2008 +1100 Merge branch 'merge' of git://git.secretlab.ca/git/linux-2.6-mpc52xx into merge commit fb91ee6cf5b8be5360acec577458e29ec7e97e5e Author: Pekka Paalanen Date: Sun Nov 23 21:24:59 2008 +0200 tracing, doc: update mmiotrace documentation Impact: update documentation Update to reflect the current state of the tracing framework: - "none" tracer has been replaced by "nop" tracer - tracing_enabled must be toggled when changing buffer size Signed-off-by: Pekka Paalanen Signed-off-by: Ingo Molnar commit 7ee1768ddb3075ae3a0801cc2d0ea4195530a7db Author: Pekka Paalanen Date: Sun Nov 23 21:24:30 2008 +0200 x86, mmiotrace: fix buffer overrun detection Impact: fix mmiotrace overrun tracing When ftrace framework moved to use the ring buffer facility, the buffer overrun detection was broken after 2.6.27 by commit | commit 3928a8a2d98081d1bc3c0a84a2d70e29b90ecf1c | Author: Steven Rostedt | Date: Mon Sep 29 23:02:41 2008 -0400 | | ftrace: make work with new ring buffer | | This patch ports ftrace over to the new ring buffer. The detection is now fixed by using the ring buffer API. When mmiotrace detects a buffer overrun, it will report the number of lost events. People reading an mmiotrace log must know if something was missed, otherwise the data may not make sense. Signed-off-by: Pekka Paalanen Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 47fd6f7c94e15eb5f97dd1cbb0427a46b03c8185 Author: Jaya Kumar Date: Tue Nov 18 02:32:36 2008 +0100 [ARM] 5335/1: pxa25x_udc: Fix is_vbus_present to return 1 or 0 the use of is_blah() suggests a 1 or 0 return. This assumption is made in pxa25x_udc code such as: dev->vbus = is_vbus_present(); where dev->vbus is a bitfield. This fix allows pxa25x_udc_probe to correctly detect vbus. Other changes were to make its use consistent in the rest of the code. Signed-off-by: Jaya Kumar Signed-off-by: Russell King commit 86bbc2c235e500957b213e7e64ce2e0ccb8bc131 Author: Ian Campbell Date: Fri Nov 21 10:21:33 2008 +0000 xen: pin correct PGD on suspend Impact: fix Xen guest boot failure commit eefb47f6a1e855653d275cb90592a3587ea93a09 ("xen: use spin_lock_nest_lock when pinning a pagetable") changed xen_pgd_walk to walk over mm->pgd rather than taking pgd as an argument. This breaks xen_mm_(un)pin_all() because it makes init_mm.pgd readonly instead of the pgd we are interested in and therefore the pin subsequently fails. (XEN) mm.c:2280:d15 Bad type (saw 00000000e8000001 != exp 0000000060000000) for mfn bc464 (pfn 21ca7) (XEN) mm.c:2665:d15 Error while pinning mfn bc464 [ 14.586913] 1 multicall(s) failed: cpu 0 [ 14.586926] Pid: 14, comm: kstop/0 Not tainted 2.6.28-rc5-x86_32p-xenU-00172-gee2f6cc #200 [ 14.586940] Call Trace: [ 14.586955] [] ? printk+0x18/0x1e [ 14.586972] [] xen_mc_flush+0x163/0x1d0 [ 14.586986] [] __xen_pgd_pin+0xa1/0x110 [ 14.587000] [] ? stop_cpu+0x0/0xf0 [ 14.587015] [] xen_mm_pin_all+0x4b/0x70 [ 14.587029] [] xen_suspend+0x39/0xe0 [ 14.587042] [] ? stop_cpu+0x0/0xf0 [ 14.587054] [] stop_cpu+0x9d/0xf0 [ 14.587067] [] run_workqueue+0x8d/0x150 [ 14.587080] [] ? _spin_unlock_irqrestore+0x23/0x40 [ 14.587094] [] ? prepare_to_wait+0x3a/0x70 [ 14.587107] [] worker_thread+0x88/0xf0 [ 14.587120] [] ? autoremove_wake_function+0x0/0x50 [ 14.587133] [] ? worker_thread+0x0/0xf0 [ 14.587146] [] kthread+0x3c/0x70 [ 14.587157] [] ? kthread+0x0/0x70 [ 14.587170] [] kernel_thread_helper+0x7/0x10 [ 14.587181] call 1/3: op=14 arg=[c0415000] result=0 [ 14.587192] call 2/3: op=14 arg=[e1ca2000] result=0 [ 14.587204] call 3/3: op=26 arg=[c1808860] result=-22 Signed-off-by: Ian Campbell Acked-by: Jeremy Fitzhardinge Signed-off-by: Ingo Molnar commit 3d994e107694381f5b8b2f5cd9fdc4fcf04a5b79 Merge: a1967d64414dab500e86cbbddf8eae6ad2047903 a4a16beadea041ab601e65b264b568e8b6b4f68d Author: Ingo Molnar Date: Sun Nov 23 12:16:57 2008 +0100 Merge branch 'oprofile-for-tip' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile into x86/urgent commit fde5be353e872fe6088d2b1951e56cdfda2042ff Author: Jiri Slaby Date: Sun Nov 23 12:03:20 2008 +0100 HID: remove setup mutex, fix possible deadlock It causes recursive locking warning and is unneeded after introduction of STARTED flag. * Resume vs. stop is effectively solved by DISCONNECT flag. * No problem in suspend vs. start -- urb is submitted even after open which is possible after connect which is called after start. * Resume vs. start solved by STARTED flag. * Suspend vs. stop -- no problem in killing urb and timer twice. Reported-by: Alan Stern Signed-off-by: Jiri Slaby Signed-off-by: Jiri Kosina commit a1967d64414dab500e86cbbddf8eae6ad2047903 Author: Thomas Gleixner Date: Fri Nov 21 11:16:48 2008 -0800 x86: revert irq number limitation Impact: fix MSIx not enough irq numbers available regression The manual revert of the sparse_irq patches missed to bring the number of possible irqs back to the .27 status. This resulted in a regression when two multichannel network cards were placed in a system with only one IO_APIC - causing the networking driver to not have the right IRQ and the device not coming up. Remove the dynamic allocation logic leftovers and simply return NR_IRQS in probe_nr_irqs() for now. Fixes: http://lkml.org/lkml/2008/11/19/354 Reported-by: Jesper Dangaard Brouer Signed-off-by: Thomas Gleixner Tested-by: Jesper Dangaard Brouer Acked-by: Yinghai Lu Signed-off-by: Ingo Molnar commit 2ed1cdcf9a83205d1343f29b630abff232eaa72c Author: Randy Dunlap Date: Fri Nov 21 16:59:57 2008 -0800 irq.h: fix missing/extra kernel-doc Impact: fix kernel-doc build Fix missing & excess irq.h kernel-doc: Warning(include/linux/irq.h:182): No description found for parameter 'irq' Warning(include/linux/irq.h:182): Excess struct/union/enum/typedef member 'affinity_entry' description in 'irq_desc' Signed-off-by: Randy Dunlap Cc: Andrew Morton Signed-off-by: Ingo Molnar commit 9f1441644213e5f6faa150206399fe511eba2eb6 Merge: 3ff68a6a106c362a6811d3e51bced58e6fc87de7 13d428afc007fcfcd6deeb215618f54cf9c0cae6 Author: Ingo Molnar Date: Sun Nov 23 10:52:33 2008 +0100 Merge commit 'v2.6.28-rc6' into irq/urgent commit 844c6f6a36984c5fe1bcc2d68a88f2ed212d1eef Author: Robert Jarzmik Date: Mon Nov 17 20:29:04 2008 +0100 [ARM] pxa/MioA701: bluetooth resume fix The G3IPL expects the value at RAM address 0xa020b020 to be exactly 1 to setup the bluetooth GPIOs properly. The actual code got a value from gpio_get_value() which was not 1, but a "not equal to 0" integer. Signed-off-by: Robert Jarzmik Acked-by: Russell King Signed-off-by: Eric Miao commit 999f6338780fa0577b6581941c697c868d1ec2d3 Author: Robert Jarzmik Date: Mon Nov 17 20:29:03 2008 +0100 [ARM] pxa/MioA701: fix memory corruption. In the resume bootstrap, the early disable address is wrong. Fix it to RAM address 0xa020b000 instead of 0xa0200000, and make it consistent with RESUME_ENABLE_ADDR in mioa701.c. Signed-off-by: Robert Jarzmik Acked-by: Russell King Signed-off-by: Eric Miao commit 57550b27ff5a13b00370fbfa34f2471c3456a41d Merge: bfe085f62f98a49e1b864e4950389c7205174e4f 13d428afc007fcfcd6deeb215618f54cf9c0cae6 Author: Ingo Molnar Date: Fri Nov 21 20:55:09 2008 +0100 Merge commit 'v2.6.28-rc6' into x86/urgent commit b0788caf7af773b6c2374590dabd3a205f0918a8 Author: Li Zefan Date: Fri Nov 21 15:57:32 2008 +0800 lockdep: consistent alignement for lockdep info Impact: prettify /proc/lockdep_info Just feel odd that not all lines of lockdep info are aligned. Signed-off-by: Li Zefan Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 522a110b42b306d696cf84e34c677ed0e7080194 Author: Liming Wang Date: Fri Nov 21 11:00:18 2008 +0800 function tracing: fix wrong position computing of stack_trace Impact: make output of stack_trace complete if buffer overruns When read buffer overruns, the output of stack_trace isn't complete. When printing records with seq_printf in t_show, if the read buffer has overruned by the current record, then this record won't be printed to user space through read buffer, it will just be dropped in this printing. When next printing, t_start should return the "*pos"th record, which is the one dropped by previous printing, but it just returns (m->private + *pos)th record. Here we use a more sane method to implement seq_operations which can be found in kernel code. Thus we needn't initialize m->private. About testing, it's not easy to overrun read buffer, but we can use seq_printf to print more padding bytes in t_show, then it's easy to check whether or not records are lost. This commit has been tested on both condition of overrun and non overrun. Signed-off-by: Liming Wang Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit c879c634c928223765cf50103ddaf32f2a55fed0 Merge: ef71b1b87521ff93ed77b3e8f3e149afb392761c b0fc5e043401df4cd243352f1030c4d23e767347 a39c4ad1089be34d8dc66e926e93a52c44993a0a Author: Takashi Iwai Date: Fri Nov 21 08:39:36 2008 +0100 Merge branches 'topic/fix/hda' and 'topic/fix/sound-core' into for-linus commit b0fc5e043401df4cd243352f1030c4d23e767347 Author: Takashi Iwai Date: Fri Nov 21 08:37:03 2008 +0100 ALSA: hda - Add a quirk for Dell Studio 15 Added the matching model=dell-m6 for Dell Studio 15 laptop. Signed-off-by: Takashi Iwai commit 3a7abfd2ba26479615b81ac5e90d0122ef7f9fe0 Author: Matthew Ranostay Date: Thu Nov 20 21:21:43 2008 -0500 ALSA: hda: Add STAC_DELL_M4_3 quirk Added STAC_DELL_M4_3 quirk for Dell systems, also reorganized the board config switch to assign number of digital muxes, microphones, and SPDIF muxes via the PCI quirk defined. Signed-off-by: Matthew Ranostay Signed-off-by: Takashi Iwai commit a39c4ad1089be34d8dc66e926e93a52c44993a0a Author: Hannes Eder Date: Thu Nov 20 21:25:25 2008 +0100 sound/sound_core: Fix sparse warnings Fix the following sparse warnings: sound/sound_core.c:460:2: warning: returning void-valued expression sound/sound_core.c:477:2: warning: returning void-valued expression sound/sound_core.c:510:5: warning: symbol 'soundcore_open' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: Takashi Iwai commit 606572634c3faa5b32a8fc430266e6e9d78d2179 Author: Jeremy Kerr Date: Tue Nov 11 10:22:22 2008 +1100 powerpc/spufs: Fix spinning in spufs_ps_fault on signal Currently, we can end up in an infinite loop if we get a signal while the kernel has faulted in spufs_ps_fault. Eg: alarm(1); write(fd, some_spu_psmap_register_address, 4); - the write's copy_from_user will fault on the ps mapping, and signal_pending will be non-zero. Because returning from the fault handler will never clear TIF_SIGPENDING, so we'll just keep faulting, resulting in an unkillable process using 100% of CPU. This change returns VM_FAULT_SIGBUS if there's a fatal signal pending, letting us escape the loop. Signed-off-by: Jeremy Kerr commit 818a557eeb9c16a9a2dc93df348b0ff68fbc487f Author: Mauro Carvalho Chehab Date: Thu Nov 20 10:30:26 2008 -0300 V4L/DVB (9668): em28xx: fix a race condition with hald Newer versions of hald tries to open it to call QUERYCAP. Due to the lack of a proper locking, it is possible to open the device before it finishes initialization. This patch adds a lock to avoid this risk, and to protect the list of em28xx devices. While here, remove the uneeded BKL lock. Signed-off-by: Mauro Carvalho Chehab commit cce257109f534b4954a5d04aa4ba6905f4682f93 Author: Jose Alberto Reguero Date: Thu Nov 13 14:14:18 2008 -0300 V4L/DVB (9664): af9015: don't reconnect device in USB-bus Don't reconnect device in the USB-bus. Reconnect command was not executed every time by device firmware and that causes harm. Reconnection is not needed so remove it. Signed-off-by: Jose Alberto Reguero Signed-off-by: Antti Palosaari Signed-off-by: Mauro Carvalho Chehab commit f2a2e4910502e866833732f31ee697d15b3e56fd Author: Mauro Carvalho Chehab Date: Wed Nov 19 06:17:44 2008 -0300 V4L/DVB (9647): em28xx: void having two concurrent control URB's Now that we have a polling task for IR, there's a race condition, since IR can be polling while other operations are being doing. Also, we are now sharing the same urb_buf for both read and write control urb operations. So, we need a mutex. Thanks to Davin Heitmueller for warning me. Signed-off-by: Mauro Carvalho Chehab commit c4a98793a63c423c9e1af51822325969e23c16d4 Author: Mauro Carvalho Chehab Date: Tue Nov 18 14:51:08 2008 -0300 V4L/DVB (9646): em28xx: avoid allocating/dealocating memory on every control urb Before this patch, every register setup on em28xx were dynamically allocating a temporary buffer for control URB's to be handled. To avoid this ping-pong, use, instead a pre-allocated buffer. Also, be sure that read control URB's also use the buffer, instead of relying on a stack buffer. Signed-off-by: Mauro Carvalho Chehab commit 625ff1679456d8adb9af0c980394ea3954e727a8 Author: Mauro Carvalho Chehab Date: Tue Nov 18 10:23:19 2008 -0300 V4L/DVB (9645): em28xx: Avoid memory leaks if registration fails em28xx_init_dev() has some error conditions that are not properly de-allocating dev var, nor freeing the device number for a future usage. Signed-off-by: Mauro Carvalho Chehab commit 0253fdcd8aec2f954c2950a7454c0a2f3207e9a1 Author: Matthew Ranostay Date: Sun Nov 16 11:42:34 2008 -0500 ALSA: hda: STAC_DELL_M6 EAPD Add support for EAPD on system suspend and disabling EAPD on headphone jack detection for STAC_DELL_M6 laptops. This patch fixes the regressions, the silent output on HP of some Dell laptops (see Novell bnc#446025): https://bugzilla.novell.com/show_bug.cgi?id=446025 Signed-off-by: Matthew Ranostay Signed-off-by: Takashi Iwai commit bfe085f62f98a49e1b864e4950389c7205174e4f Author: Rakib Mullick Date: Thu Nov 20 19:12:50 2008 +0600 x86: fixing __cpuinit/__init tangle, xsave_cntxt_init() Annotate xsave_cntxt_init() as "can be called outside of __init". Signed-off-by: Rakib Mullick Signed-off-by: Ingo Molnar commit 9bc646f163b136684390081262fab0fd8f5343ca Author: Rakib Mullick Date: Thu Nov 20 19:08:45 2008 +0600 x86: fix __cpuinit/__init tangle in init_thread_xstate() Impact: fix incorrect __init annotation This patch removes the following section mismatch warning. A patch set was send previously (http://lkml.org/lkml/2008/11/10/407). But introduce some other problem, reported by Rufus (http://lkml.org/lkml/2008/11/11/46). Then Ingo Molnar suggest that, it's best to remove __init from xsave_cntxt_init(void). Which is the second patch in this series. Now, this one removes the following warning. WARNING: arch/x86/kernel/built-in.o(.cpuinit.text+0x2237): Section mismatch in reference from the function cpu_init() to the function .init.text:init_thread_xstate() The function __cpuinit cpu_init() references a function __init init_thread_xstate(). If init_thread_xstate is only used by cpu_init then annotate init_thread_xstate with a matching annotation. Signed-off-by: Rakib Mullick Signed-off-by: Ingo Molnar commit 578f3a35fecabff49bad808c5301313f785b5462 Author: Jiri Kosina Date: Thu Nov 20 15:55:38 2008 +0100 HID: add USB ID for another dual gameron adapter 0x0810/0x0002 needs the very same handling as 0x0001. Reported-by: Steve Conklin Signed-off-by: Jiri Kosina commit 06d2148ed3b3fa997fa5a848f6405709c464b3ba Author: Jiri Kosina Date: Thu Nov 20 11:22:17 2008 +0100 HID: unignore mouse on unibody macbooks In commit a96d6ef34, the mouse interfaces on the unibody macbooks were put into hid mouse ignore list. This was a little bit too premature though, as the corresponding bcm5974 changes are scheduled for 2.6.29. Remove these devices from the ignore list for now, in order to provide at least basic functionality with the HID driver. Will be reintroduced in 2.6.29 Reported-by: Henrik Rydberg Signed-off-by: Jiri Kosina commit 5f4ba04ffd8fc9f6b15b92270ef0517ae52dcf3a Author: Dmitry Torokhov Date: Fri Nov 14 13:32:42 2008 -0500 Input: i8042 - add Compal Hel80 laptop to nomux blacklist Reported-by: Jaime Cura Signed-off-by: Dmitry Torokhov commit e871809cccc11aaa072afaf746f8fd946d2d9cac Author: Michael Barkowski Date: Thu Nov 13 10:18:28 2008 -0500 powerpc/mpc832x_rdb: fix swapped ethernet ids ethernet0 (called FSL UEC0 in U-Boot) should be enet1 (UCC3/eth1), and ethernet1 should be enet0 (UCC2/eth0), to be consistent with U-Boot so that the interfaces do not swap addresses when control passes from U-Boot to the kernel. Signed-off-by: Michael Barkowski Acked-by: Kim Phillips Signed-off-by: Kumar Gala commit 06597aa90a75621639dcaaf5fc07bcb01f752d45 Author: Martyn Welch Date: Tue Nov 18 10:55:45 2008 +0000 powerpc: Use generic PHY driver for Marvell 88E1111 PHY on GE Fanuc SBC610 The Marvell PHY driver is currently being used for the 88E1111 on the SBC610. This driver is causing the link to run in 10/Half mode, the generic PHY driver is correctly configuring the PHY as 1000/Full. Edit default config to use generic PHY driver. Signed-off-by: Martyn Welch Signed-off-by: Kumar Gala commit f464ff581c247d82fcc0e7ef40c1ca6df9739068 Author: Trent Piepho Date: Wed Nov 19 10:40:55 2008 -0800 powerpc/85xx: L2 cache size wrong in 8572DS dts It's 1MB, not 512KB. Newer U-Boots will fix this entry, but that's no reason to have the wrong value in the dts. Signed-off-by: Trent Piepho Signed-off-by: Kumar Gala commit a4a16beadea041ab601e65b264b568e8b6b4f68d Author: Eric Dumazet Date: Mon Nov 10 09:05:37 2008 +0100 oprofile: fix an overflow in ppro code reset_value was changed from long to u64 in commit b99170288421c79f0c2efa8b33e26e65f4bb7fb8 (oprofile: Implement Intel architectural perfmon support) But dynamic allocation of this array use a wrong type (long instead of u64) Cc: Andi Kleen Signed-off-by: Eric Dumazet Signed-off-by: Robert Richter commit 99afb989b05b9fb1c7b3831ce4b7a000b214acdb Author: Devin Heitmueller Date: Sat Nov 15 07:13:07 2008 -0300 V4L/DVB (9639): Make dib0700 remote control support work with firmware v1.20 The format for reading the IR controller changed in firmware 1.20. It now provides the events on bulk endpoint 1 instead of using a control request. Support the new format, providing backward compatibility for users who might be using older firmware. Thanks to Patrick Boettcher for providing the required information on how the version 1.20 firmware works. Signed-off-by: Devin Heitmueller Signed-off-by: Patrick Boettcher Signed-off-by: Mauro Carvalho Chehab commit deaf53e3c8e717169669ee6c2594b5c33d1af93b Author: Harvey Harrison Date: Sat Nov 15 01:10:14 2008 -0300 V4L/DVB (9635): v4l: s2255drv fix firmware test on big-endian Noticed by sparse: drivers/media/video/s2255drv.c:2531:6: warning: restricted __le32 degrades to integer Cc: Dean Anderson Signed-off-by: Harvey Harrison Signed-off-by: Andrew Morton Signed-off-by: Mauro Carvalho Chehab commit 41286d972530b7a47acb48376d714b6b121a6c22 Author: Devin Heitmueller Date: Sun Nov 16 00:44:52 2008 -0300 V4L/DVB (9634): Make sure the i2c gate is open before powering down tuner It is not safe to assume that the i2c gate will be open before issuing the command to power down the tuner. In fact, many demods only open the gate long enough to issue the tuning command. This fix allows power management to work properly for those tuners behind an i2c gate (in my case the problem was with the HVR-950Q) Signed-off-by: Devin Heitmueller Signed-off-by: Mauro Carvalho Chehab commit 3f9b46c154da5ec4facca88f82d1820eb329fd3e Author: Devin Heitmueller Date: Sat Nov 15 17:16:11 2008 -0300 V4L/DVB (9632): make em28xx aux audio input work The attached patch makes the em28xx auxillary audio input work. Tested with the HVR-950. em28xx: make auxillary audio input work The tuner audio input was working but the aux input wasn't. Tested with the HVR-950. Signed-off-by: Devin Heitmueller Signed-off-by: Mauro Carvalho Chehab commit 3fa37deb1a287e100c7db5b4f964784fd664bee9 Author: Devin Heitmueller Date: Sun Nov 16 00:33:32 2008 -0300 V4L/DVB (9631): Make s2api work for ATSC support ATSC should be considered a legacy delivery system, or else fields such as p->u.vsb.modulation do not get populated (resulting in set_frontend failures) Cc: Steven Toth Signed-off-by: Devin Heitmueller Signed-off-by: Mauro Carvalho Chehab commit c41109fc9a13c6af0e4069dd92fdb4c5c8046649 Author: Mauro Carvalho Chehab Date: Sat Nov 15 23:44:14 2008 -0300 V4L/DVB (9627): em28xx: Avoid i2c register error for boards without eeprom Signed-off-by: Mauro Carvalho Chehab commit df4533af7f45e87a4be470502fa3cea2f6c96da9 Author: Igor M. Liplianin Date: Tue Nov 11 18:09:28 2008 -0300 V4L/DVB (9608): Fix section mismatch warning for dm1105 during make -- Signed-off-by: Igor M. Liplianin Signed-off-by: Mauro Carvalho Chehab commit 4faf1004c32819035c5325879a466f27e189feb5 Author: Douglas Schilling Landgraf Date: Tue Nov 11 23:56:56 2008 -0300 V4L/DVB (9605): usb-urb: fix memory leak Free allocated memory Signed-off-by: Douglas Schilling Landgraf Signed-off-by: Mauro Carvalho Chehab commit 7935eeae793ff24e2d6053a9df63be71323ad634 Author: Douglas Schilling Landgraf Date: Tue Nov 11 23:47:57 2008 -0300 V4L/DVB (9604): ttusb_dec: fix memory leak Free allocated memory Signed-off-by: Douglas Schilling Landgraf Signed-off-by: Mauro Carvalho Chehab commit b7ed785b5f6a8dbdbd0cf8688a51c42e35205a4e Author: Douglas Schilling Landgraf Date: Tue Nov 11 23:37:39 2008 -0300 V4L/DVB (9603): dvb-ttusb-budget: Add validation for ttusb_alloc_iso_urbs Added validation for ttusb_alloc_iso_urbs Signed-off-by: Douglas Schilling Landgraf Signed-off-by: Mauro Carvalho Chehab commit 11eb260a70b992b83fa2d15bb777cda3ee326c05 Author: Douglas Schilling Landgraf Date: Tue Nov 11 23:30:49 2008 -0300 V4L/DVB (9602): dvb-ttusb-budget: Add NULL pointer validation Added validation for NULL pointer Signed-off-by: Douglas Schilling Landgraf Signed-off-by: Mauro Carvalho Chehab commit d7c31a1e754b5140eefeeb10c3c3be17f3702452 Author: Douglas Schilling Landgraf Date: Tue Nov 11 23:27:59 2008 -0300 V4L/DVB (9601): ttusb_dec: Add NULL pointer validation Added validation for NULL pointer Signed-off-by: Douglas Schilling Landgraf Signed-off-by: Mauro Carvalho Chehab commit 5181e594512faeac7d7fd9620ce91105f45bf643 Author: Jiri Kosina Date: Mon Nov 17 01:44:38 2008 +0100 HID: fix blacklist entries for greenasia/pantherlord Fix misplaced quirk entries for devices driven by hid-pl driver. The devices shouls be only blacklisted by generic HID driver, not completely ignored. Signed-off-by: Jiri Kosina commit c8d698849e135780738c2cb08f07f06eda982a8c Author: Grant Likely Date: Fri Nov 14 11:10:55 2008 -0700 powerpc/virtex: Update defconfigs Update defconfigs for running on Xilinx Virtex platforms Signed-off-by: Grant Likely commit c7c2ffb4fb92ad79e842226aa547adb5bd045b86 Author: Grant Likely Date: Fri Nov 14 10:22:02 2008 -0700 powerpc/52xx: update defconfigs Signed-off-by: Grant Likely commit c14464bf796d5ead1e735225ead78c566d3344ae Author: Yuri Tikhonov Date: Fri Nov 14 10:21:57 2008 -0700 xsysace: Fix driver to use resource_size_t instead of unsigned long This patch is a bug fix to the SystemACE driver to use resource_size_t for physical address instead of unsigned long. This makes the driver work correctly on 32 bit systems with 64-bit resources (e.g. PowerPC 440). Signed-off-by: Yuri Tikhonov Signed-off-by: Ilya Yanok Signed-off-by: Grant Likely commit a108096878aa6cb744b5280ca59395b6c0152d14 Author: Grant Likely Date: Fri Nov 14 09:59:48 2008 -0700 powerpc/virtex: fix various format/casting printk mismatches Various printk format string in code used by the Xilinx Virtex platform are not 32-bit/64-bit safe. Add correct casting to fix the bugs. Reported-by: Josh Boyer Signed-off-by: Grant Likely Acked-by: Josh Boyer commit 847cdf42d589882aca683b6fb65b2c7832e92231 Author: Grant Likely Date: Fri Nov 14 05:19:00 2008 -0700 powerpc/mpc5200: fix bestcomm Kconfig dependencies Without this patch it is possible to select drivers which require bestcomm support without bestcomm support being selected. This patch reworks the bestcomm dependencies to ensure the correct bestcomm tasks are always enabled. Reported-by: Hans Lehmann Signed-off-by: Grant Likely commit 6612d9b0b8208c2ade3a16b8302a271ec81d45f6 Author: Benjamin Herrenschmidt Date: Tue Nov 11 16:02:43 2008 +0000 powerpc/44x: Fix 460EX/460GT machine check handling Those cores use the 440A type machine check (ie, they have MCSRR0/MCSRR1). They thus need to call the appropriate fixup function to hook the right variant of the exception. Without this, all machine checks become fatal due to loss of context when entering the exception handler. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Josh Boyer commit 5907630ffc2b2d133de2db18963ee5a6c5af7878 Author: Grant Erickson Date: Wed Oct 29 11:41:14 2008 +0000 powerpc/40x: Limit allocable DRAM during early mapping If the size of DRAM is not an exact power of two, we may not have covered DRAM in its entirety with large 16 and 4 MiB pages. If that is the case, we can get non-recoverable page faults when doing the final PTE mappings for the non-large page PTEs. Consequently, we restrict the top end of DRAM currently allocable by updating '__initial_memory_limit_addr' so that calls to the LMB to allocate PTEs for "tail" coverage with normal-sized pages (or other reasons) do not attempt to allocate outside the allowed range. Signed-off-by: Grant Erickson Signed-off-by: Josh Boyer commit 3ff68a6a106c362a6811d3e51bced58e6fc87de7 Author: Mark Nelson Date: Thu Nov 13 21:37:41 2008 +1100 genirq: __irq_set_trigger: change pr_warning to pr_debug Commit 0c5d1eb77a8be917b638344a22afe1398236482b (genirq: record trigger type) caused powerpc platforms that had no set_type() function in their struct irq_chip to spew out warnings about "No set_type function for IRQ...". This warning isn't necessarily justified though because the generic powerpc platform code calls set_irq_type() (which in turn calls __irq_set_trigger) with information from the device tree to establish the interrupt mappings, regardless of whether the PIC can actually set a type. A platform's irq_chip might not have a set_type function for a variety of reasons, for example: the platform may have the type essentially hard-coded, or as in the case for Cell interrupts are just messages past around that have no real concept of type, or the platform could even have a virtual PIC as on the PS3. Signed-off-by: Mark Nelson Signed-off-by: Ingo Molnar commit 734f0bae9504216bd760493ed4744a34cfe0e7ce Author: Daniel Gimpelevich Date: Tue Nov 11 13:57:30 2008 -0500 Input: cm109 - add keymap for ATCom AU-100 phone Signed-off-by: Daniel Gimpelevich Signed-off-by: Dmitry Torokhov commit 4f485447973284f73e4e7cac3ab1d1e5fcd8aece Author: Dmitri Vorobiev Date: Tue Nov 11 11:40:23 2008 -0500 Input: fix the example of an input device driver This patch fixes a wrong interrupt handler example given in the "Hello, world!"-like input driver in Documentation/input/input-programming.txt. Signed-off-by: Dmitri Vorobiev Signed-off-by: Randy Dunlap Signed-off-by: Dmitry Torokhov commit 5fb17fd9a2d05be77be91369aa2f7b0db42fc8b4 Author: Andres Salomon Date: Tue Nov 11 09:52:21 2008 -0500 Input: psmouse - fix incorrect validate_byte check in OLPC protocol The validate_byte check logic was backwards; it should return true for an *invalid* packet. Thanks to Jeremy Katz for spotting this one. Signed-off-by: Andres Salomon Signed-off-by: Dmitry Torokhov commit d6d79a785d430c0e17f7e2d662f10de022cbca93 Author: Jiri Pirko Date: Tue Nov 11 09:43:21 2008 -0500 Input: atkbd - cancel delayed work before freeing its structure Pointed out by Oleg Nesterov. Since delayed work is used here, use of flush_scheduled_work() is not sufficient in atkbd_disconnect(). It does not wait for scheduled delayed work to finish. This patch prevents delayed work to be processed after freeing atkbd structure (used struct delayed_work is part of atkbd) by cancelling this delayed work. Signed-off-by: Jiri Pirko Signed-off-by: Dmitry Torokhov commit a8215b81cc31cf267506bc6a4a4bfe93f4ca1652 Author: Matthew Garrett Date: Tue Nov 11 09:40:42 2008 -0500 Input: atkbd - add keymap quirk for Inventec Symphony systems The Zepto 6615WD laptop (rebranded Inventec Symphony system) needs a key release quirk for its volume keys to work. The attached patch adds the quirk to the atkbd driver. Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=460237 Signed-off-by: Matthew Garrett Signed-off-by: Adel Gadllah Signed-off-by: Dmitry Torokhov commit 786b11cc0f505e44c29f778fd329dafafafed76c Author: Herton Ronaldo Krzesinski Date: Tue Nov 11 09:37:14 2008 -0500 Input: i8042 - add Dell XPS M1530 to nomux list Dell XPS M1530 needs i8042.nomux=1 for ALPS touchpad to work as reported on https://qa.mandriva.com/show_bug.cgi?id=43532 It is said that before A08 bios version this isn't needed (I don't have the hardware so can't check), and suppose this will not break with bios versions before A08. Signed-off-by: Herton Ronaldo Krzesinski Tested-by: Andreas Ericsson Signed-off-by: Dmitry Torokhov commit f131e2436ddbac2527bb2d6297a823aae4b024f8 Author: Ingo Molnar Date: Sat Nov 8 09:57:40 2008 +0100 irq: fix typo Impact: build fix fix build failure on UP. Signed-off-by: Ingo Molnar commit 6c2e94033df5ca11149e52dd179b8dde3172e9bf Author: Thomas Gleixner Date: Fri Nov 7 12:33:49 2008 +0100 x86: apic honour irq affinity which was set in early boot setup_ioapic_dest() is called after the non boot cpus have been brought up. It sets the irq affinity of all already configured interrupts to all cpus and ignores affinity settings which were done by the early bootup code. If the IRQ_NO_BALANCING or IRQ_AFFINITY_SET flags are set then use the affinity mask from the irq descriptor and not TARGET_CPUS. Signed-off-by: Thomas Gleixner Signed-off-by: Ingo Molnar commit 612e3684c1b7752d2890510e4f90115fd1eb2afb Author: Thomas Gleixner Date: Fri Nov 7 13:58:46 2008 +0100 genirq: fix the affinity setting in setup_irq The affinity setting in setup irq is called before the NO_BALANCING flag is checked and might therefore override affinity settings from the calling code with the default setting. Move the NO_BALANCING flag check before the call to the affinity setting. Signed-off-by: Thomas Gleixner Signed-off-by: Ingo Molnar commit f6d87f4bd259cf33e092cd1a8fde05f291c47af1 Author: Thomas Gleixner Date: Fri Nov 7 13:18:30 2008 +0100 genirq: keep affinities set from userspace across free/request_irq() Impact: preserve user-modified affinities on interrupts Kumar Galak noticed that commit 18404756765c713a0be4eb1082920c04822ce588 (genirq: Expose default irq affinity mask (take 3)) overrides an already set affinity setting across a free / request_irq(). Happens e.g. with ifdown/ifup of a network device. Change the logic to mark the affinities as set and keep them intact. This also fixes the unlocked access to irq_desc in irq_select_affinity() when called from irq_affinity_proc_write() Signed-off-by: Thomas Gleixner Signed-off-by: Ingo Molnar commit 2ad49887150894b9ed6a87a76b409adceee6b074 Author: Vitaliy Gusev Date: Wed Nov 5 18:27:18 2008 +0300 UBI: Don't exit from ubi_thread until kthread_should_stop() is true If ubi_thread() exits but kthread_should_stop() is not true then kthread_stop() will never return and cleanup thread will forever stay in "D" state. Signed-off-by: Vitaliy Gusev Signed-off-by: Artem Bityutskiy commit b77bcb07897f1a9cd9d1d78691896dcdb0fd1a22 Author: Zoltan Sogor Date: Wed Oct 29 09:50:02 2008 +0100 UBI: fix EBADMSG handling 'ubi_io_read_data()' may return EBADMSG in case of an ECC error, and we should not panic because of this. We have CRC32 checksum and may check the data. So just ignore the EBADMSG error. This patch also fixes a minor spelling error at the same time. Signed-off-by: Zoltan Sogor Signed-off-by: Artem Bityutskiy commit 9a5415fbe87ad7b99ecf9b7ef6bf091c7479f2a4 Author: Vojtech Pavlik Date: Thu Oct 30 09:11:40 2008 -0400 Input: elo - fix format string in elo driver Fix typo in format string. Signed-off-by: Vojtech Pavlik Signed-off-by: Jiri Kosina Signed-off-by: Dmitry Torokhov ----------------------------------------------------------------------- Summary of changes: Documentation/DMA-API.txt | 8 +- Documentation/cpu-freq/user-guide.txt | 12 + Documentation/filesystems/ocfs2.txt | 3 - Documentation/filesystems/proc.txt | 27 + .../filesystems/ramfs-rootfs-initramfs.txt | 12 +- Documentation/input/input-programming.txt | 3 +- Documentation/sound/alsa/ALSA-Configuration.txt | 5 +- Documentation/spi/spi-summary | 2 +- Documentation/tracers/mmiotrace.txt | 6 +- Makefile | 4 +- arch/Kconfig | 2 - arch/alpha/kernel/pci.c | 2 +- arch/alpha/kernel/smp.c | 6 +- arch/alpha/kernel/traps.c | 4 +- arch/arm/configs/corgi_defconfig | 2 +- arch/arm/mach-pxa/mioa701.c | 2 +- arch/arm/mach-pxa/mioa701_bootresume.S | 1 + arch/arm/mach-pxa/palmtx.c | 150 ++++-- arch/arm/mach-pxa/pcm990-baseboard.c | 1 + arch/arm/mach-s3c2410/include/mach/spi-gpio.h | 1 + arch/arm/plat-omap/gpio.c | 5 +- arch/arm/plat-omap/include/mach/pm.h | 2 +- arch/frv/kernel/sys_frv.c | 17 +- arch/ia64/include/asm/ptrace.h | 2 - arch/ia64/sn/kernel/io_init.c | 2 +- arch/m32r/kernel/head.S | 4 +- arch/m32r/kernel/vmlinux.lds.S | 1 + arch/mips/include/asm/bug.h | 29 +- arch/mips/include/asm/ptrace.h | 4 - arch/mn10300/kernel/gdb-stub.c | 24 +- arch/parisc/include/asm/parisc-device.h | 4 +- arch/parisc/include/asm/posix_types.h | 3 +- arch/parisc/include/asm/ptrace.h | 2 - arch/parisc/kernel/drivers.c | 6 +- arch/parisc/kernel/traps.c | 43 +- arch/powerpc/boot/dts/mpc832x_rdb.dts | 4 +- arch/powerpc/boot/dts/mpc8572ds.dts | 2 +- .../virtex5_defconfig => 40x/virtex_defconfig} | 263 +++++---- arch/powerpc/configs/44x/virtex5_defconfig | 234 +++++---- arch/powerpc/configs/52xx/cm5200_defconfig | 169 +++++-- arch/powerpc/configs/52xx/lite5200b_defconfig | 206 ++++++-- arch/powerpc/configs/52xx/motionpro_defconfig | 168 +++++-- arch/powerpc/configs/52xx/pcm030_defconfig | 182 +++++-- arch/powerpc/configs/52xx/tqm5200_defconfig | 180 +++++-- arch/powerpc/configs/86xx/gef_sbc610_defconfig | 2 +- arch/powerpc/configs/mpc5200_defconfig | 573 +++++++++++++++----- arch/powerpc/configs/ppc40x_defconfig | 92 +++- arch/powerpc/configs/ppc44x_defconfig | 92 +++- arch/powerpc/include/asm/mmu-hash64.h | 1 - arch/powerpc/include/asm/ptrace.h | 2 - arch/powerpc/kernel/cpu_setup_44x.S | 7 +- arch/powerpc/kernel/entry_64.S | 8 +- arch/powerpc/kernel/prom_parse.c | 7 +- arch/powerpc/kernel/sysfs.c | 2 + arch/powerpc/mm/40x_mmu.c | 16 +- arch/powerpc/mm/hugetlbpage.c | 2 +- arch/powerpc/mm/numa.c | 122 +++-- arch/powerpc/platforms/cell/axon_msi.c | 36 +- arch/powerpc/platforms/cell/smp.c | 9 +- arch/powerpc/platforms/cell/spufs/file.c | 3 + arch/powerpc/sysdev/bestcomm/Kconfig | 9 +- arch/powerpc/sysdev/mpic.c | 9 +- arch/powerpc/sysdev/xilinx_intc.c | 4 +- arch/s390/defconfig | 74 ++- arch/s390/include/asm/pgtable.h | 2 - arch/s390/include/asm/ptrace.h | 4 +- arch/s390/include/asm/syscall.h | 28 +- arch/s390/kernel/asm-offsets.c | 2 +- arch/s390/kernel/compat_signal.c | 2 +- arch/s390/kernel/entry.S | 21 +- arch/s390/kernel/entry64.S | 23 +- arch/s390/kernel/init_task.c | 2 +- arch/s390/kernel/ptrace.c | 2 +- arch/s390/kernel/signal.c | 6 +- arch/s390/kernel/time.c | 13 +- arch/s390/kernel/vmlinux.lds.S | 3 +- arch/sparc/include/asm/ptrace_64.h | 2 - arch/sparc/kernel/cpu.c | 2 +- arch/sparc/kernel/head.S | 2 +- arch/sparc/kernel/smp.c | 4 +- arch/sparc/kernel/sun4d_smp.c | 4 +- arch/sparc/kernel/sun4m_smp.c | 2 +- arch/sparc/kernel/trampoline.S | 4 +- arch/sparc/kernel/vmlinux.lds.S | 1 + arch/sparc/mm/srmmu.c | 14 +- arch/sparc64/kernel/smp.c | 4 +- arch/sparc64/mm/init.c | 2 +- arch/x86/boot/tty.c | 2 +- arch/x86/include/asm/ds.h | 6 +- arch/x86/include/asm/pci_64.h | 14 - arch/x86/include/asm/ptrace.h | 2 - arch/x86/kernel/Makefile | 2 +- arch/x86/kernel/apic.c | 2 +- arch/x86/kernel/cpu/cpufreq/powernow-k8.c | 18 +- arch/x86/kernel/cpu/cpufreq/powernow-k8.h | 17 +- arch/x86/kernel/ds.c | 88 ++-- arch/x86/kernel/i387.c | 2 +- arch/x86/kernel/io_apic.c | 48 +- arch/x86/kernel/kvmclock.c | 2 +- arch/x86/kernel/pci-calgary_64.c | 2 +- arch/x86/kernel/xsave.c | 2 +- arch/x86/oprofile/op_model_ppro.c | 2 +- arch/x86/pci/fixup.c | 25 +- arch/x86/xen/mmu.c | 21 +- arch/x86/xen/smp.c | 2 +- arch/x86/xen/xen-ops.h | 2 +- drivers/acpi/battery.c | 9 + drivers/acpi/blacklist.c | 401 +-------------- drivers/acpi/ec.c | 3 +- drivers/acpi/osl.c | 104 +--- drivers/acpi/scan.c | 10 - drivers/acpi/sleep/main.c | 40 ++- drivers/acpi/toshiba_acpi.c | 2 - drivers/acpi/utils.c | 16 +- drivers/ata/ata_piix.c | 15 + drivers/ata/libata-core.c | 21 + drivers/ata/pata_rb532_cf.c | 15 +- drivers/block/xsysace.c | 23 +- drivers/char/agp/uninorth-agp.c | 2 +- drivers/char/istallion.c | 4 +- drivers/char/tty_io.c | 15 +- drivers/char/xilinx_hwicap/xilinx_hwicap.c | 9 +- drivers/crypto/talitos.c | 4 +- drivers/edac/i82875p_edac.c | 14 +- drivers/firewire/fw-sbp2.c | 5 + drivers/gpu/drm/drm_drv.c | 2 + drivers/gpu/drm/drm_irq.c | 4 +- drivers/gpu/drm/i915/i915_dma.c | 7 + drivers/gpu/drm/i915/i915_drv.h | 11 + drivers/gpu/drm/i915/i915_gem.c | 74 ++-- drivers/gpu/drm/i915/i915_irq.c | 293 ++++++----- drivers/gpu/drm/i915/i915_opregion.c | 18 +- drivers/gpu/drm/i915/i915_suspend.c | 6 + drivers/gpu/drm/mga/mga_dma.c | 8 + drivers/gpu/drm/mga/mga_irq.c | 5 - drivers/gpu/drm/r128/r128_drv.c | 6 + drivers/gpu/drm/r128/r128_drv.h | 1 + drivers/gpu/drm/r128/r128_irq.c | 2 +- drivers/gpu/drm/radeon/radeon_cp.c | 6 + drivers/gpu/drm/radeon/radeon_irq.c | 5 - drivers/gpu/drm/via/via_irq.c | 1 - drivers/gpu/drm/via/via_map.c | 11 +- drivers/hid/hid-apple.c | 6 +- drivers/hid/hid-core.c | 14 +- drivers/hid/hid-ids.h | 1 + drivers/hid/hid-pl.c | 2 + drivers/hid/usbhid/hid-core.c | 18 +- drivers/hid/usbhid/usbhid.h | 1 - drivers/hwmon/applesmc.c | 1 + drivers/i2c/busses/i2c-parport.c | 4 +- drivers/i2c/chips/isp1301_omap.c | 65 ++- drivers/i2c/i2c-core.c | 2 +- drivers/ide/icside.c | 4 +- drivers/ieee1394/highlevel.c | 25 +- drivers/ieee1394/hosts.h | 4 + drivers/ieee1394/sbp2.c | 14 +- drivers/infiniband/hw/ehca/ehca_classes.h | 4 +- drivers/infiniband/hw/ehca/ehca_main.c | 3 +- drivers/infiniband/hw/ehca/ehca_qp.c | 26 +- drivers/infiniband/hw/ehca/ehca_reqs.c | 51 +- drivers/infiniband/hw/mlx4/cq.c | 5 + drivers/input/ff-memless.c | 5 +- drivers/input/keyboard/atkbd.c | 27 +- drivers/input/misc/cm109.c | 37 ++- drivers/input/mouse/hgpk.c | 2 +- drivers/input/serio/i8042-x86ia64io.h | 14 + drivers/input/tablet/wacom.h | 13 +- drivers/input/tablet/wacom_sys.c | 228 +++++++- drivers/input/tablet/wacom_wac.c | 160 +++++- drivers/input/tablet/wacom_wac.h | 4 + drivers/input/touchscreen/elo.c | 2 +- drivers/input/xen-kbdfront.c | 6 +- drivers/isdn/hisax/config.c | 16 +- drivers/macintosh/rack-meter.c | 10 +- drivers/media/dvb/dm1105/dm1105.c | 2 +- drivers/media/dvb/dvb-core/dvb_frontend.c | 5 +- drivers/media/dvb/dvb-usb/af9015.c | 8 +- drivers/media/dvb/dvb-usb/dib0700.h | 5 +- drivers/media/dvb/dvb-usb/dib0700_core.c | 16 + drivers/media/dvb/dvb-usb/dib0700_devices.c | 139 +++++- drivers/media/dvb/dvb-usb/usb-urb.c | 19 +- drivers/media/dvb/siano/sms-cards.c | 2 +- drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c | 15 +- drivers/media/dvb/ttusb-dec/ttusb_dec.c | 7 + drivers/media/video/em28xx/em28xx-audio.c | 33 +- drivers/media/video/em28xx/em28xx-core.c | 58 ++- drivers/media/video/em28xx/em28xx-i2c.c | 10 +- drivers/media/video/em28xx/em28xx-video.c | 140 +++-- drivers/media/video/em28xx/em28xx.h | 6 + drivers/media/video/gspca/conex.c | 3 + drivers/media/video/gspca/finepix.c | 8 + drivers/media/video/gspca/gspca.c | 56 +- drivers/media/video/gspca/gspca.h | 6 +- drivers/media/video/gspca/pac7311.c | 3 + drivers/media/video/gspca/spca501.c | 3 + drivers/media/video/gspca/spca505.c | 4 + drivers/media/video/gspca/spca561.c | 3 + drivers/media/video/gspca/vc032x.c | 3 + drivers/media/video/gspca/zc3xx.c | 3 + drivers/media/video/s2255drv.c | 2 +- drivers/misc/sony-laptop.c | 4 +- drivers/misc/thinkpad_acpi.c | 57 ++- drivers/mtd/ubi/eba.c | 2 +- drivers/mtd/ubi/scan.c | 2 +- drivers/mtd/ubi/wl.c | 3 +- drivers/net/Kconfig | 3 +- drivers/net/ixgbe/ixgbe_main.c | 9 +- drivers/net/mlx4/main.c | 8 + drivers/net/mlx4/mlx4.h | 1 + drivers/net/mlx4/port.c | 39 ++- drivers/net/pcmcia/ibmtr_cs.c | 2 +- drivers/net/smc911x.c | 10 +- drivers/net/smc91x.c | 10 +- drivers/net/xen-netfront.c | 6 +- drivers/parport/parport_serial.c | 2 + drivers/pci/pci.c | 2 +- drivers/rapidio/rio-scan.c | 4 +- drivers/rapidio/rio.c | 2 +- drivers/scsi/advansys.c | 4 + drivers/scsi/gdth.c | 12 +- drivers/serial/uartlite.c | 4 +- drivers/spi/au1550_spi.c | 26 +- drivers/spi/mpc52xx_psc_spi.c | 5 +- drivers/spi/spi_imx.c | 25 +- drivers/spi/spi_s3c24xx_gpio.c | 3 +- drivers/spi/spidev.c | 4 +- drivers/usb/gadget/fsl_qe_udc.c | 3 + drivers/usb/gadget/fsl_usb2_udc.c | 3 + drivers/usb/gadget/pxa25x_udc.c | 14 +- drivers/usb/host/ehci-pci.c | 9 +- drivers/usb/host/ehci.h | 12 +- drivers/usb/serial/console.c | 1 + drivers/usb/serial/option.c | 35 ++ drivers/usb/storage/unusual_devs.h | 19 + drivers/video/aty/radeon_accel.c | 21 +- drivers/video/aty/radeon_base.c | 18 + drivers/video/console/fbcon.c | 9 +- drivers/video/omap/Makefile | 1 - drivers/video/omap/lcd_sx1.c | 327 ----------- drivers/video/xen-fbfront.c | 6 +- drivers/video/xilinxfb.c | 5 +- drivers/w1/masters/Kconfig | 2 +- fs/buffer.c | 1 + fs/cifs/file.c | 77 ++- fs/eventpoll.c | 85 +++- fs/ntfs/debug.h | 8 +- fs/ocfs2/buffer_head_io.c | 15 +- fs/ocfs2/dlm/dlmfs.c | 4 +- fs/ocfs2/dlm/userdlm.h | 2 +- fs/ocfs2/dlmglue.c | 3 +- fs/ocfs2/ocfs2.h | 2 +- fs/ocfs2/stack_user.c | 3 + fs/udf/inode.c | 1 + include/acpi/acpredef.h | 4 +- include/drm/drmP.h | 1 + include/linux/compat.h | 2 - include/linux/highmem.h | 2 + include/linux/idr.h | 3 +- include/linux/irq.h | 11 +- include/linux/libata.h | 1 + include/linux/memory.h | 2 +- include/linux/mlx4/device.h | 1 + include/linux/page_cgroup.h | 4 +- include/linux/sched.h | 4 + kernel/cpu.c | 2 +- kernel/cpuset.c | 2 +- kernel/irq/internals.h | 2 + kernel/irq/manage.c | 68 ++- kernel/irq/migration.c | 11 - kernel/irq/proc.c | 2 +- kernel/lockdep.c | 4 +- kernel/panic.c | 1 + kernel/profile.c | 4 +- kernel/ptrace.c | 4 +- kernel/sched.c | 5 +- kernel/sysctl.c | 10 + kernel/trace/ring_buffer.c | 2 +- kernel/trace/trace_mmiotrace.c | 16 +- kernel/trace/trace_stack.c | 24 +- lib/idr.c | 14 +- mm/memory_hotplug.c | 9 +- mm/page_cgroup.c | 56 ++- mm/slub.c | 6 +- mm/sparse.c | 2 +- mm/vmalloc.c | 20 +- mm/vmscan.c | 2 +- scripts/kernel-doc | 10 +- sound/pci/hda/hda_codec.c | 4 +- sound/pci/hda/patch_sigmatel.c | 170 ++++-- sound/soc/fsl/Kconfig | 3 +- sound/sound_core.c | 6 +- 291 files changed, 4466 insertions(+), 2755 deletions(-) copy arch/powerpc/configs/{44x/virtex5_defconfig => 40x/virtex_defconfig} (86%) delete mode 100644 drivers/video/omap/lcd_sx1.c hooks/post-receive -- XFS development tree From xfs-bounces@oss.sgi.com Mon Dec 1 23:58:53 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB25wrhe021673 for ; Mon, 1 Dec 2008 23:58:53 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Subject: Your message to xfs awaits moderator approval From: xfs-bounces@oss.sgi.com To: xfs@oss.sgi.com Message-ID: Date: Mon, 01 Dec 2008 23:58:51 -0600 Precedence: bulk X-BeenThere: xfs@oss.sgi.com X-Mailman-Version: 2.1.9 List-Id: XFS Filesystem from SGI X-List-Administrivia: yes Sender: xfs-bounces@oss.sgi.com Errors-To: xfs-bounces@oss.sgi.com Your mail to 'xfs' with the subject [XFS updates] XFS development tree branch, mainline, updated. v2.6.28-rc3-1204-g061e41f Is being held until the list moderator can review it for approval. The reason it is being held: Message body is too big: 224117 bytes with a limit of 150 KB Either the message will get posted to the list, or you will receive notification of the moderator's decision. If you would like to cancel this posting, please visit the following URL: http://oss.sgi.com/mailman/confirm/xfs/9abcfcf4be4750f221a0062b89c20aefd1511cb0 From xaiki@oss.sgi.com Tue Dec 2 00:33:30 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB26XUWI026671 for ; Tue, 2 Dec 2008 00:33:30 -0600 Received: (from xaiki@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mB26XLXp026578; Tue, 2 Dec 2008 00:33:21 -0600 Date: Tue, 2 Dec 2008 00:33:21 -0600 Message-Id: <200812020633.mB26XLXp026578@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.28-rc3-1082-ge5d412f X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 0e446673a15a4e9c336b67c1a638eb12c21d0993 X-Git-Newrev: e5d412f17846b0aea9e5250926f994ab2e4e1006 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated e5d412f [XFS] Reorder xfs_ioctl32.c for some tidiness 710d62a [XFS] Hook up compat XFS_IOC_FSSETDM_BY_HANDLE ioctl handler 2875097 [XFS] Hook up compat XFS_IOC_ATTRMULTI_BY_HANDLE ioctl handler ebeecd2 [XFS] Hook up compat XFS_IOC_ATTRLIST_BY_HANDLE ioctl handler af819d2 [XFS] Fix compat XFS_IOC_FSBULKSTAT_SINGLE ioctl 65fbaf2 [XFS] Fix xfs_bulkstat_one size checks & error handling 2ee4fa5 [XFS] Make the bulkstat_one compat ioctl handling more sane 471d591 [XFS] Add compat handlers for data & rt growfs ioctls e94fc4a [XFS] Add compat handlers for swapext ioctl d5547f9 [XFS] Clean up some existing compat ioctl calls ffae263 [XFS] Move compat ioctl structs & numbers into xfs_ioctl32.h 743bb46 [XFS] Move copy_from_user calls out of ioctl helpers into ioctl switch. from 0e446673a15a4e9c336b67c1a638eb12c21d0993 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit e5d412f17846b0aea9e5250926f994ab2e4e1006 Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:17 2008 -0600 [XFS] Reorder xfs_ioctl32.c for some tidiness Put things in IMHO a more readable order, now that it's all done; add some comments. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 710d62aaaf17c841b8bdbc7a775f8910a7160248 Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:16 2008 -0600 [XFS] Hook up compat XFS_IOC_FSSETDM_BY_HANDLE ioctl handler Add a compat handler for XFS_IOC_FSSETDM_BY_HANDLE. I haven't tested this, lacking dmapi tools to do so (unless xfsqa magically gets this somehow?) Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 28750975ace79c547407a84d3969cbed516be8f8 Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:15 2008 -0600 [XFS] Hook up compat XFS_IOC_ATTRMULTI_BY_HANDLE ioctl handler Add a compat handler for XFS_IOC_ATTRMULTI_BY_HANDLE Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit ebeecd2b04645a4b79e1bc00d69cf4f98e03a684 Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:14 2008 -0600 [XFS] Hook up compat XFS_IOC_ATTRLIST_BY_HANDLE ioctl handler Add a compat handler for XFS_IOC_ATTRLIST_BY_HANDLE Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit af819d27637119105213433881f158931e29620b Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:13 2008 -0600 [XFS] Fix compat XFS_IOC_FSBULKSTAT_SINGLE ioctl The XFS_IOC_FSBULKSTAT_SINGLE ioctl passes in the desired inode number, while XFS_IOC_FSBULKSTAT passes in the previous/last-stat'd inode number. The compat handler wasn't differentiating these, so when a XFS_IOC_FSBULKSTAT_SINGLE request for inode 128 was sent in, stat information for 131 was sent out. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 65fbaf2489c667bf79ae1f20403f30c66568d445 Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:12 2008 -0600 [XFS] Fix xfs_bulkstat_one size checks & error handling The 32-bit xfs_blkstat_one handler was failing because a size check checked whether the remaining (32-bit) user buffer was less than the (64-bit) bulkstat buffer, and failed with ENOMEM if so. Move this check into the respective handlers so that they check the correct sizes. Also, the formatters were returning negative errors or positive bytes copied; this was odd in the positive error value world of xfs, and handled wrong by at least some of the callers, which treated the bytes returned as an error value. Move the bytes-used assignment into the formatters. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 2ee4fa5cb716eba104a4ef8efe159e1007a2aef6 Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:11 2008 -0600 [XFS] Make the bulkstat_one compat ioctl handling more sane Currently the compat formatter was handled by passing in "private_data" for the xfs_bulkstat_one formatter, which was really just another formatter... IMHO this got confusing. Instead, just make a new xfs_bulkstat_one_compat formatter for xfs_bulkstat, and call it via a wrapper. Also, don't translate the ioctl nrs into their native counterparts, that just clouds the issue; we're in a compat handler anyway, just switch on the 32-bit cmds. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 471d59103167c84f17b9bcfee22ed10b44ff206e Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:10 2008 -0600 [XFS] Add compat handlers for data & rt growfs ioctls The args for XFS_IOC_FSGROWFSDATA and XFS_IOC_FSGROWFSRTA have padding on the end on intel, so add arg copyin functions, and then just call the growfs ioctl helpers. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit e94fc4a43e5c39f689e83caf6d2f0939081f5e6b Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:09 2008 -0600 [XFS] Add compat handlers for swapext ioctl The big hitter here was the bstat field, which contains different sized time_t on 32 vs. 64 bit. Add a copyin function to translate the 32-bit arg to 64-bit, and call the swapext ioctl helper. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit d5547f9feea459dfc9e7313bd1d561394e2c129f Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:08 2008 -0600 [XFS] Clean up some existing compat ioctl calls Create a new xfs_ioctl.h file which has prototypes for ioctl helpers that may be called in compat mode. Change several compat ioctl cases which are IOW to simply copy in the userspace argument, then call the common ioctl helper. This also fixes xfs_compat_ioc_fsgeometry_v1(), which had it backwards before; it copied in an (empty) arg, then copied out the native result, which probably corrupted userspace. It should be translating on the copyout. Also, a bit of formatting cleanup for consistency, and conversion of all error returns to use XFS_ERROR(). Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit ffae263a640b736a7206a0d7bd14ab44eb58cd28 Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:07 2008 -0600 [XFS] Move compat ioctl structs & numbers into xfs_ioctl32.h This makes the c file less cluttered and a bit more readable. Consistently name the ioctl number macros with "_32" and the compatibility stuctures with "_compat." Rename the helpers which simply copy in the arg with "_copyin" for easy identification. Finally, for a few of the existing helpers, modify them so that they directly call the native ioctl helper after userspace argument fixup. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 743bb4650da9e2595d6cedd01c680b5b9398c74a Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:06 2008 -0600 [XFS] Move copy_from_user calls out of ioctl helpers into ioctl switch. Moving the copy_from_user out of some of the ioctl helpers will make it easier for the compat ioctl switch to copy in the right struct, then just pass to the underlying helper. Also, move common access checks into the helpers themselves, and out of the native ioctl switch code, to reduce code duplication between native & compat ioctl callers. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_ioctl.c | 123 +++--- fs/xfs/linux-2.6/xfs_ioctl.h | 70 ++++ fs/xfs/linux-2.6/xfs_ioctl32.c | 838 ++++++++++++++++++++++++++-------------- fs/xfs/linux-2.6/xfs_ioctl32.h | 213 ++++++++++ fs/xfs/xfs_dfrag.c | 8 +- fs/xfs/xfs_dfrag.h | 2 +- fs/xfs/xfs_fs.h | 4 - fs/xfs/xfs_fsops.c | 6 + fs/xfs/xfs_itable.c | 45 ++- fs/xfs/xfs_itable.h | 14 + fs/xfs/xfs_rtalloc.c | 2 + 11 files changed, 955 insertions(+), 370 deletions(-) create mode 100644 fs/xfs/linux-2.6/xfs_ioctl.h hooks/post-receive -- XFS development tree From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 00:52:17 2008 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 mB26qFC4027696 for ; Tue, 2 Dec 2008 00:52:17 -0600 X-ASG-Debug-ID: 1228200734-4a7d00d50000-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 3ABED1641B11 for ; Mon, 1 Dec 2008 22:52:14 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 0jNFG00rCF8T6fuD for ; Mon, 01 Dec 2008 22:52:14 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7P1n-00037B-Jc; Tue, 02 Dec 2008 06:46:35 +0000 Date: Tue, 2 Dec 2008 01:46:35 -0500 From: Christoph Hellwig To: Barry Naujok Cc: Christoph Hellwig , "xfs@oss.sgi.com" X-ASG-Orig-Subj: Re: [REVIEW] Fix unaligned accesses in IA64 in xfsprogs Subject: Re: [REVIEW] Fix unaligned accesses in IA64 in xfsprogs Message-ID: <20081202064634.GA10115@infradead.org> References: <20081201134205.GA7528@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: 1228200735 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com This patch looks good to go to me. On Tue, Dec 02, 2008 at 11:37:31AM +1100, Barry Naujok wrote: > Obviously modifying xfs_bmbt_disk_get_all yields a much smaller patch: > > =========================================================================== > xfsprogs/db/bmap.c > =========================================================================== > > --- a/xfsprogs/db/bmap.c 2008-12-02 11:21:00.000000000 +1100 > +++ b/xfsprogs/db/bmap.c 2008-12-02 11:20:41.324928232 +1100 > @@ -277,21 +277,14 @@ convert_extent( > xfs_dfilblks_t *cp, > int *fp) > { > - xfs_bmbt_irec_t irec, *s = &irec; > - xfs_bmbt_rec_t rpcopy, *p = &rpcopy; > + xfs_bmbt_irec_t irec; > > - memmove(&rpcopy, rp, sizeof(rpcopy)); > - libxfs_bmbt_disk_get_all(p, s); > + libxfs_bmbt_disk_get_all(rp, &irec); > > - if (s->br_state == XFS_EXT_UNWRITTEN) { > - *fp = 1; > - } else { > - *fp = 0; > - } > - > - *op = s->br_startoff; > - *sp = s->br_startblock; > - *cp = s->br_blockcount; > + *fp = irec.br_state == XFS_EXT_UNWRITTEN; > + *op = irec.br_startoff; > + *sp = irec.br_startblock; > + *cp = irec.br_blockcount; > } > > void > > =========================================================================== > xfsprogs/libxfs/xfs_bmap_btree.c > =========================================================================== > > --- a/xfsprogs/libxfs/xfs_bmap_btree.c 2008-12-02 11:21:00.000000000 +1100 > +++ b/xfsprogs/libxfs/xfs_bmap_btree.c 2008-12-02 11:20:09.553355392 +1100 > @@ -181,7 +181,8 @@ xfs_bmbt_disk_get_all( > xfs_bmbt_rec_t *r, > xfs_bmbt_irec_t *s) > { > - __xfs_bmbt_get_all(be64_to_cpu(r->l0), be64_to_cpu(r->l1), s); > + __xfs_bmbt_get_all(get_unaligned_be64(&r->l0), > + get_unaligned_be64(&r->l1), s); > } > > /* > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs ---end quoted text--- From anibal@v7w.com Tue Dec 2 03:35:11 2008 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=BAYES_00,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 mB29Z9DN005951 for ; Tue, 2 Dec 2008 03:35:11 -0600 X-ASG-Debug-ID: 1228210507-63a5005a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from aura.v7w.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DFFEF9D20A4 for ; Tue, 2 Dec 2008 01:35:07 -0800 (PST) Received: from aura.v7w.com (vs832.rosehosting.com [209.135.157.232]) by cuda.sgi.com with ESMTP id ZFy9C9Kzb8EQWMtr for ; Tue, 02 Dec 2008 01:35:07 -0800 (PST) Received: from elida.v7w.com (60-241-92-80.static.tpgi.com.au [60.241.92.80]) by aura.v7w.com (Postfix) with ESMTP id EB0CF188008; Tue, 2 Dec 2008 09:34:10 +0000 (UTC) Received: by elida.v7w.com (Postfix, from userid 1000) id 3E74A511DA; Tue, 2 Dec 2008 20:33:50 +1100 (EST) Date: Tue, 2 Dec 2008 20:33:50 +1100 From: =?iso-8859-1?Q?An=EDbal?= Monsalve Salazar To: Ron Johnson Cc: debian-amd64@lists.debian.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: ia32 userland and XFS Subject: Re: ia32 userland and XFS Message-ID: <20081202093350.GC20730@debianrules.debiancolombia.org> References: <4934914C.7050707@cox.net> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="kigERAySUJmIn/9g" Content-Disposition: inline In-Reply-To: <4934914C.7050707@cox.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: vs832.rosehosting.com[209.135.157.232] X-Barracuda-Start-Time: 1228210507 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.11717 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- --kigERAySUJmIn/9g Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Adding xfs@oss.sgi.com to the cc list so all the XFS folk see this. On Mon, Dec 01, 2008 at 07:37:16PM -0600, Ron Johnson wrote: >https://alioth.debian.org/docman/view.php/30192/21/debian-amd64-howto.html#id292806 > >According to this (seemingly 2+ year old) web page, the XFS file system >chokes on the combination of 32 bit userland and 64 bit kernel. > >Is this still true, and why should a low-level driver hidden under a >virtual fs care what user apps access it via the vfs? --kigERAySUJmIn/9g Content-Type: application/pgp-signature; name="signature.asc" Content-Description: Digital signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEARECAAYFAkk1APsACgkQgY5NIXPNpFX3TwCeIavSHdthu581b+pWK00X+oeZ w40AnRzAr9UqI0glKpr2FZsdMlb7sSuC =7zTP -----END PGP SIGNATURE----- --kigERAySUJmIn/9g-- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 03:52:49 2008 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_23 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 mB29qmfp006811 for ; Tue, 2 Dec 2008 03:52:49 -0600 X-ASG-Debug-ID: 1228211567-63aa00ba0000-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 71D1B164310C for ; Tue, 2 Dec 2008 01:52:47 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id FezW8uuyOF1JiHrS for ; Tue, 02 Dec 2008 01:52:47 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Rvw-0003R1-B8; Tue, 02 Dec 2008 09:52:44 +0000 Date: Tue, 2 Dec 2008 04:52:44 -0500 From: Christoph Hellwig To: An?bal Monsalve Salazar Cc: Ron Johnson , debian-amd64@lists.debian.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: ia32 userland and XFS Subject: Re: ia32 userland and XFS Message-ID: <20081202095244.GA18292@infradead.org> References: <4934914C.7050707@cox.net> <20081202093350.GC20730@debianrules.debiancolombia.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202093350.GC20730@debianrules.debiancolombia.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: 1228211567 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Tue, Dec 02, 2008 at 08:33:50PM +1100, An?bal Monsalve Salazar wrote: > On Mon, Dec 01, 2008 at 07:37:16PM -0600, Ron Johnson wrote: > >According to this (seemingly 2+ year old) web page, the XFS file system > >chokes on the combination of 32 bit userland and 64 bit kernel. > > > >Is this still true, and why should a low-level driver hidden under a > >virtual fs care what user apps access it via the vfs? XFS as in the plain posix filesystem works perfectly fine with a 64 bit kernel and 32 bit userspace. But various advance capabilities or administration interfaces which are used by tools from xfsprogs are implemented as ioctls, and unfortunately most of them have been designed very badly and aren't wordsize clean. There have been handlers for a few of them for a while, but only as of today a full set of compat handlers has been commited. That code will be release with 2.6.29, but could also be backported. From billodo@sgi.com Tue Dec 2 06:53:56 2008 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 (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB2Crt1m017984 for ; Tue, 2 Dec 2008 06:53:56 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id 35F23AC0AF for ; Tue, 2 Dec 2008 04:53:52 -0800 (PST) Received: from lnx-billodo.americas.sgi.com (lnx-billodo.americas.sgi.com [128.162.232.245]) by estes.americas.sgi.com (Postfix) with ESMTP id CD3A27000103; Tue, 2 Dec 2008 06:53:51 -0600 (CST) Received: by lnx-billodo.americas.sgi.com (Postfix, from userid 56393) id 3F10617E01F; Tue, 2 Dec 2008 06:59:22 -0600 (CST) Date: Tue, 2 Dec 2008 06:59:22 -0600 From: "Bill O'Donnell" To: Christoph Hellwig Cc: xfs@sgi.com Subject: Re: [PATCH 3/9] sanitize xlog_in_core_t definition Message-ID: <20081202125922.GB27836@sgi.com> References: <20080925225626.GD9822@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080925225626.GD9822@lst.de> User-Agent: Mutt/1.5.16 (2007-06-09) On Fri, Sep 26, 2008 at 12:56:26AM +0200, Christoph Hellwig wrote: | Move all fields from xlog_iclog_fields_t into xlog_in_core_t instead of having | them in a substructure and the using #defines to make it look like they were | directly in xlog_in_core_t. Also document that xlog_in_core_2_t is grossly | misnamed, and make all references to it typesafe. Umm, instead of pointing out the misnaming of xlog_in_core_2_t, why not properly name it, or does that proliferate too much? | | | Signed-off-by: Christoph Hellwig | | Index: linux-2.6-xfs/fs/xfs/xfs_log.c | =================================================================== | --- linux-2.6-xfs.orig/fs/xfs/xfs_log.c 2008-09-25 13:58:24.000000000 +0200 | +++ linux-2.6-xfs/fs/xfs/xfs_log.c 2008-09-25 20:02:34.000000000 +0200 | @@ -1024,12 +1024,6 @@ xlog_iodone(xfs_buf_t *bp) | ASSERT(XFS_BUF_FSPRIVATE2(bp, unsigned long) == (unsigned long) 2); | XFS_BUF_SET_FSPRIVATE2(bp, (unsigned long)1); | aborted = 0; | - | - /* | - * Some versions of cpp barf on the recursive definition of | - * ic_log -> hic_fields.ic_log and expand ic_log twice when | - * it is passed through two macros. Workaround broken cpp. | - */ | l = iclog->ic_log; | | /* | @@ -1287,7 +1281,7 @@ xlog_alloc_log(xfs_mount_t *mp, | XFS_BUF_SET_BDSTRAT_FUNC(bp, xlog_bdstrat_cb); | XFS_BUF_SET_FSPRIVATE2(bp, (unsigned long)1); | iclog->ic_bp = bp; | - iclog->hic_data = bp->b_addr; | + iclog->ic_data = bp->b_addr; | #ifdef DEBUG | log->l_iclog_bak[i] = (xfs_caddr_t)&(iclog->ic_header); | #endif | @@ -1307,7 +1301,7 @@ xlog_alloc_log(xfs_mount_t *mp, | atomic_set(&iclog->ic_refcnt, 0); | spin_lock_init(&iclog->ic_callback_lock); | iclog->ic_callback_tail = &(iclog->ic_callback); | - iclog->ic_datap = (char *)iclog->hic_data + log->l_iclog_hsize; | + iclog->ic_datap = (char *)iclog->ic_data + log->l_iclog_hsize; | | ASSERT(XFS_BUF_ISBUSY(iclog->ic_bp)); | ASSERT(XFS_BUF_VALUSEMA(iclog->ic_bp) <= 0); | @@ -3418,7 +3412,7 @@ xlog_verify_iclog(xlog_t *log, | ptr = iclog->ic_datap; | base_ptr = ptr; | ophead = (xlog_op_header_t *)ptr; | - xhdr = (xlog_in_core_2_t *)&iclog->ic_header; | + xhdr = iclog->ic_data; | for (i = 0; i < len; i++) { | ophead = (xlog_op_header_t *)ptr; | | Index: linux-2.6-xfs/fs/xfs/xfs_log_priv.h | =================================================================== | --- linux-2.6-xfs.orig/fs/xfs/xfs_log_priv.h 2008-09-25 13:58:24.000000000 +0200 | +++ linux-2.6-xfs/fs/xfs/xfs_log_priv.h 2008-09-25 20:02:35.000000000 +0200 | @@ -309,6 +309,16 @@ typedef struct xlog_rec_ext_header { | } xlog_rec_ext_header_t; | | #ifdef __KERNEL__ | + | +/* | + * Quite misnamed, because this union lays out the actual on-disk log buffer. | + */ | +typedef union xlog_in_core2 { | + xlog_rec_header_t hic_header; | + xlog_rec_ext_header_t hic_xheader; | + char hic_sector[XLOG_HEADER_SIZE]; | +} xlog_in_core_2_t; | + See my above comment. | /* | * - A log record header is 512 bytes. There is plenty of room to grow the | * xlog_rec_header_t into the reserved space. | @@ -338,7 +348,7 @@ typedef struct xlog_rec_ext_header { | * We'll put all the read-only and l_icloglock fields in the first cacheline, | * and move everything else out to subsequent cachelines. | */ | -typedef struct xlog_iclog_fields { | +typedef struct xlog_in_core { | sv_t ic_force_wait; | sv_t ic_write_wait; | struct xlog_in_core *ic_next; | @@ -361,41 +371,11 @@ typedef struct xlog_iclog_fields { | | /* reference counts need their own cacheline */ | atomic_t ic_refcnt ____cacheline_aligned_in_smp; | -} xlog_iclog_fields_t; | - | -typedef union xlog_in_core2 { | - xlog_rec_header_t hic_header; | - xlog_rec_ext_header_t hic_xheader; | - char hic_sector[XLOG_HEADER_SIZE]; | -} xlog_in_core_2_t; | - | -typedef struct xlog_in_core { | - xlog_iclog_fields_t hic_fields; | - xlog_in_core_2_t *hic_data; | + xlog_in_core_2_t *ic_data; | +#define ic_header ic_data->hic_header | } xlog_in_core_t; | | /* | - * Defines to save our code from this glop. | - */ | -#define ic_force_wait hic_fields.ic_force_wait | -#define ic_write_wait hic_fields.ic_write_wait | -#define ic_next hic_fields.ic_next | -#define ic_prev hic_fields.ic_prev | -#define ic_bp hic_fields.ic_bp | -#define ic_log hic_fields.ic_log | -#define ic_callback hic_fields.ic_callback | -#define ic_callback_lock hic_fields.ic_callback_lock | -#define ic_callback_tail hic_fields.ic_callback_tail | -#define ic_trace hic_fields.ic_trace | -#define ic_size hic_fields.ic_size | -#define ic_offset hic_fields.ic_offset | -#define ic_refcnt hic_fields.ic_refcnt | -#define ic_bwritecnt hic_fields.ic_bwritecnt | -#define ic_state hic_fields.ic_state | -#define ic_datap hic_fields.ic_datap | -#define ic_header hic_data->hic_header | - | -/* | * The reservation head lsn is not made up of a cycle number and block number. | * Instead, it uses a cycle number and byte number. Logs don't expect to | * overflow 31 bits worth of byte offset, so using a byte number will mean | Index: linux-2.6-xfs/fs/xfs/xfs_log_recover.c | =================================================================== | --- linux-2.6-xfs.orig/fs/xfs/xfs_log_recover.c 2008-09-25 13:58:24.000000000 +0200 | +++ linux-2.6-xfs/fs/xfs/xfs_log_recover.c 2008-09-25 20:02:39.000000000 +0200 | @@ -3359,7 +3359,6 @@ xlog_pack_data( | int size = iclog->ic_offset + roundoff; | __be32 cycle_lsn; | xfs_caddr_t dp; | - xlog_in_core_2_t *xhdr; | | xlog_pack_data_checksum(log, iclog, size); | | @@ -3374,7 +3373,8 @@ xlog_pack_data( | } | | if (xfs_sb_version_haslogv2(&log->l_mp->m_sb)) { | - xhdr = (xlog_in_core_2_t *)&iclog->ic_header; | + xlog_in_core_2_t *xhdr = iclog->ic_data; | + | for ( ; i < BTOBB(size); i++) { | j = i / (XLOG_HEADER_CYCLE_SIZE / BBSIZE); | k = i % (XLOG_HEADER_CYCLE_SIZE / BBSIZE); | @@ -3432,7 +3432,6 @@ xlog_unpack_data( | xlog_t *log) | { | int i, j, k; | - xlog_in_core_2_t *xhdr; | | for (i = 0; i < BTOBB(be32_to_cpu(rhead->h_len)) && | i < (XLOG_HEADER_CYCLE_SIZE / BBSIZE); i++) { | @@ -3441,7 +3440,7 @@ xlog_unpack_data( | } | | if (xfs_sb_version_haslogv2(&log->l_mp->m_sb)) { | - xhdr = (xlog_in_core_2_t *)rhead; | + xlog_in_core_2_t *xhdr = (xlog_in_core_2_t *)rhead; | for ( ; i < BTOBB(be32_to_cpu(rhead->h_len)); i++) { | j = i / (XLOG_HEADER_CYCLE_SIZE / BBSIZE); | k = i % (XLOG_HEADER_CYCLE_SIZE / BBSIZE); | Index: linux-2.6-xfs/fs/xfs/xfsidbg.c | =================================================================== | --- linux-2.6-xfs.orig/fs/xfs/xfsidbg.c 2008-09-25 13:58:24.000000000 +0200 | +++ linux-2.6-xfs/fs/xfs/xfsidbg.c 2008-09-25 20:02:39.000000000 +0200 | @@ -5763,7 +5763,7 @@ xfsidbg_xiclog(xlog_in_core_t *iclog) | }; | | kdb_printf("xlog_in_core/header at 0x%p/0x%p\n", | - iclog, iclog->hic_data); | + iclog, iclog->ic_data); | kdb_printf("magicno: %x cycle: %d version: %d lsn: 0x%Lx\n", | be32_to_cpu(iclog->ic_header.h_magicno), | be32_to_cpu(iclog->ic_header.h_cycle), | | -- | | From billodo@sgi.com Tue Dec 2 07:00:04 2008 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 mB2D04is018503 for ; Tue, 2 Dec 2008 07:00:04 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id 4266D3041AE for ; Tue, 2 Dec 2008 05:00:01 -0800 (PST) Received: from lnx-billodo.americas.sgi.com (lnx-billodo.americas.sgi.com [128.162.232.245]) by estes.americas.sgi.com (Postfix) with ESMTP id 1C4647000103; Tue, 2 Dec 2008 07:00:01 -0600 (CST) Received: by lnx-billodo.americas.sgi.com (Postfix, from userid 56393) id 845B217E01F; Tue, 2 Dec 2008 07:05:31 -0600 (CST) Date: Tue, 2 Dec 2008 07:05:31 -0600 From: "Bill O'Donnell" To: Christoph Hellwig Cc: xfs@sgi.com Subject: Re: [PATCH 4/9] add infrastructure for crc in metadata Message-ID: <20081202130531.GC27836@sgi.com> References: <20080925225629.GE9822@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080925225629.GE9822@lst.de> User-Agent: Mutt/1.5.16 (2007-06-09) On Fri, Sep 26, 2008 at 12:56:29AM +0200, Christoph Hellwig wrote: | | - add a mount feature bit for CRC enabled filesystems | - add some helpers for generating and verifying the CRCs | - add a copy_uuid helper | - add a pre-io callback to xfs_buf for calculating the CRCs | | The checksumming helpers are losely based on similar ones in sctp, | all other bits come from Dave Chinner. | | | Signed-off-by: Christoph Hellwig looks good. From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 08:20:40 2008 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_33, J_CHICKENPOX_44 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 mB2EKeYd023589 for ; Tue, 2 Dec 2008 08:20:40 -0600 X-ASG-Debug-ID: 1228227639-350502880000-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 D6EAA1644F71; Tue, 2 Dec 2008 06:20:39 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Ig15S51Cn179JOAc; Tue, 02 Dec 2008 06:20:39 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7W7D-0006wi-8U; Tue, 02 Dec 2008 14:20:39 +0000 Date: Tue, 2 Dec 2008 09:20:39 -0500 From: Christoph Hellwig To: Timothy Shimmin , xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfsqa: add testcase for ->setattr permission checking Subject: [PATCH] xfsqa: add testcase for ->setattr permission checking Message-ID: <20081202142039.GA25155@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: 1228227639 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Index: xfs-cmds-git/xfstests/192 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfs-cmds-git/xfstests/192 2008-12-02 14:16:12.000000000 +0000 @@ -0,0 +1,177 @@ +#! /bin/sh +# FS QA Test No. 192 +# +# Test permission checks in ->setattr +# +#----------------------------------------------------------------------- +# 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! +trap "_cleanup_files; exit \$status" 0 1 2 3 15 +tag="added by qa $seq" + +# +# For some tests we need a secondary group for the qa_user. Currently +# that's not available in the framework, so the tests using it are +# commented out. +# +#group2=foo + +# +# Create two files, one owned by root, one by the qa_user +# +_create_files() +{ + touch test.root + touch test.${qa_user} + chown ${qa_user}:${qa_user} test.${qa_user} +} + +# +# Remove our files again +# +_cleanup_files() +{ + rm -f test.${qa_user} + rm -f test.root +} + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# real QA test starts here +_supported_fs xfs nfs udf +_supported_os Linux + +_require_user +_need_to_be_root + + +# +# make sure we have a normal umask set +# +umask 022 + + +# +# Test the ATTR_UID case +# +echo +echo "testing ATTR_UID" +echo + +_create_files + +echo "user: chown root owned file to qa_user (should fail)" +su ${qa_user} -c "chown root test.${qa_user}" + +echo "user: chown root owned file to root (should fail)" +su ${qa_user} -c "chown root test.root" + +echo "user: chown qa_user owned file to qa_user (should succeed)" +su ${qa_user} -c "chown ${qa_user} test.${qa_user}" + +# this would work without _POSIX_CHOWN_RESTRICTED +echo "user: chown qa_user owned file to root (should fail)" +su ${qa_user} -c "chown ${qa_user} test.root" + +_cleanup_files + +# +# Test the ATTR_GID case +# +echo +echo "testing ATTR_GID" +echo + +_create_files + +echo "user: chgrp root owned file to root (should fail)" +su ${qa_user} -c "chgrp root test.root" + +echo "user: chgrp qa_user owned file to root (should fail)" +su ${qa_user} -c "chgrp root test.${qa_user}" + +echo "user: chgrp root owned file to qa_user (should fail)" +su ${qa_user} -c "chgrp ${qa_user} test.root" + +echo "user: chgrp qa_user owned file to qa_user (should suceed)" +su ${qa_user} -c "chgrp ${qa_user} test.${qa_user}" + +#echo "user: chgrp qa_user owned file to secondary group (should suceed)" +#su ${qa_user} -c "chgrp ${group2} test.${qa_user}" + +_cleanup_files + + +# +# Test the ATTR_MODE case +# +echo +echo "testing ATTR_MODE" +echo + +_create_files + +echo "user: chmod a+r on qa_user owned file (should succeed)" +su ${qa_user} -c "chmod a+r test.${qa_user}" + +echo "user: chmod a+r on root owned file (should fail)" +su ${qa_user} -c "chmod a+r test.root" + +# +# Setup a file owned by the qa_user, but with a group ID that +# is not present in the qa_users group list (use root to make it easier for it) +# and mark it with set sgid bit +# +echo "check that the sgid bit is cleared" +chown ${qa_user}:root test.${qa_user} +chmod g+s test.${qa_user} + +# and let the qa_user change permission bits +su ${qa_user} -c "chmod a+w test.${qa_user}" +stat -c '%A' test.${qa_user} + +# +# Setup a file owned by the qa_user and with the suid bit set. +# A chown by root should not clean the suid bit. +# +echo "check that suid bit is not cleared" +chmod u+s test.${qa_user} +chmod a+w test.${qa_user} +stat -c '%A' test.${qa_user} + +_cleanup_files + + +# +# Test ATTR_*TIMES_SET +# +echo +echo "testing ATTR_*TIMES_SET" +echo + +_create_files + +echo "user: touch qa_user file (should succeed)" +su ${qa_user} -c "touch test.${qa_user}" + +echo "user: touch root file (should fail)" +su ${qa_user} -c "touch test.root" + +_cleanup_files + +# success, all done +echo "*** done" +rm -f $seq.full +status=0 Index: xfs-cmds-git/xfstests/group =================================================================== --- xfs-cmds-git.orig/xfstests/group 2008-12-02 14:00:49.000000000 +0000 +++ xfs-cmds-git/xfstests/group 2008-12-02 14:01:01.000000000 +0000 @@ -291,3 +291,4 @@ 189 mount auto 190 rw auto 191 nfs4acl auto +192 auto metadata Index: xfs-cmds-git/xfstests/192.out =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfs-cmds-git/xfstests/192.out 2008-12-02 14:14:49.000000000 +0000 @@ -0,0 +1,38 @@ +QA output created by 192 + +testing ATTR_UID + +user: chown root owned file to qa_user (should fail) +chown: changing ownership of `test.fsgqa': Operation not permitted +user: chown root owned file to root (should fail) +chown: changing ownership of `test.root': Operation not permitted +user: chown qa_user owned file to qa_user (should succeed) +user: chown qa_user owned file to root (should fail) +chown: changing ownership of `test.root': Operation not permitted + +testing ATTR_GID + +user: chgrp root owned file to root (should fail) +chgrp: changing group of `test.root': Operation not permitted +user: chgrp qa_user owned file to root (should fail) +chgrp: changing group of `test.fsgqa': Operation not permitted +user: chgrp root owned file to qa_user (should fail) +chgrp: changing group of `test.root': Operation not permitted +user: chgrp qa_user owned file to qa_user (should suceed) + +testing ATTR_MODE + +user: chmod a+r on qa_user owned file (should succeed) +user: chmod a+r on root owned file (should fail) +chmod: changing permissions of `test.root': Operation not permitted +check that the sgid bit is cleared +-rw-rw-rw- +check that suid bit is not cleared +-rwSrw-rw- + +testing ATTR_*TIMES_SET + +user: touch qa_user file (should succeed) +user: touch root file (should fail) +touch: cannot touch `test.root': Permission denied +*** done From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:06:52 2008 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 mB2G6oa0031608 for ; Tue, 2 Dec 2008 10:06:52 -0600 X-ASG-Debug-ID: 1228234009-60db025e0000-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 E0631164F1B5 for ; Tue, 2 Dec 2008 08:06:49 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id UjXQi2OaLS7yUCng for ; Tue, 02 Dec 2008 08:06:49 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xlx-0007FU-Ja for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:49 +0000 Message-Id: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:30 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 00/22] 2.6.29 queue Subject: [patch 00/22] 2.6.29 queue 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: 1228234009 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com This is my current 2.6.29 queue. All but a few trivial patches have already been posted to the list. I have another two patches for 2.6.29 in progress that aren't included but should go to the list in a few days. Note that this is a series against the master tree, patches against dmapi or xfsidbg aren't included (and not relevant for 2.6.29). -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:06:53 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.1 required=5.0 tests=AWL,BAYES_00,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 mB2G6r8V031650 for ; Tue, 2 Dec 2008 10:06:53 -0600 X-ASG-Debug-ID: 1228234012-60d302390000-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 774E9164F1C2 for ; Tue, 2 Dec 2008 08:06:52 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id zwOlQSMZZqVIroYd for ; Tue, 02 Dec 2008 08:06:52 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xm0-0007Wb-2l for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:52 +0000 Message-Id: <20081202160651.992698000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:47 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 17/22] no explicit xfs_iflush for special inodes during unmount Subject: [patch 17/22] no explicit xfs_iflush for special inodes during unmount Content-Disposition: inline; filename=xfs-stop-flushing-special-inodes 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: 1228234012 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Currently we explicitly call xfs_iflush on the quota, real-time and root inodes from xfs_unmount_flush. But we just called xfs_sync_inodes with SYNC_ATTR and do an XFS_bflush aka xfs_flush_buftarg to make sure all inodes are on disk already, so there is no need for these special cases. Signed-off-by: Christoph Hellwig Index: xfs-master/fs/xfs/quota/xfs_qm.c =================================================================== --- xfs-master.orig/fs/xfs/quota/xfs_qm.c 2008-12-01 21:33:53.000000000 +0100 +++ xfs-master/fs/xfs/quota/xfs_qm.c 2008-12-02 11:26:22.000000000 +0100 @@ -395,13 +395,10 @@ xfs_qm_mount_quotas( /* * Called from the vfsops layer. */ -int +void xfs_qm_unmount_quotas( xfs_mount_t *mp) { - xfs_inode_t *uqp, *gqp; - int error = 0; - /* * Release the dquots that root inode, et al might be holding, * before we flush quotas and blow away the quotainfo structure. @@ -414,43 +411,18 @@ xfs_qm_unmount_quotas( xfs_qm_dqdetach(mp->m_rsumip); /* - * Flush out the quota inodes. + * Release the quota inodes. */ - uqp = gqp = NULL; if (mp->m_quotainfo) { - if ((uqp = mp->m_quotainfo->qi_uquotaip) != NULL) { - xfs_ilock(uqp, XFS_ILOCK_EXCL); - xfs_iflock(uqp); - error = xfs_iflush(uqp, XFS_IFLUSH_SYNC); - xfs_iunlock(uqp, XFS_ILOCK_EXCL); - if (unlikely(error == EFSCORRUPTED)) { - XFS_ERROR_REPORT("xfs_qm_unmount_quotas(1)", - XFS_ERRLEVEL_LOW, mp); - goto out; - } - } - if ((gqp = mp->m_quotainfo->qi_gquotaip) != NULL) { - xfs_ilock(gqp, XFS_ILOCK_EXCL); - xfs_iflock(gqp); - error = xfs_iflush(gqp, XFS_IFLUSH_SYNC); - xfs_iunlock(gqp, XFS_ILOCK_EXCL); - if (unlikely(error == EFSCORRUPTED)) { - XFS_ERROR_REPORT("xfs_qm_unmount_quotas(2)", - XFS_ERRLEVEL_LOW, mp); - goto out; - } + if (mp->m_quotainfo->qi_uquotaip) { + IRELE(mp->m_quotainfo->qi_uquotaip); + mp->m_quotainfo->qi_uquotaip = NULL; + } + if (mp->m_quotainfo->qi_gquotaip) { + IRELE(mp->m_quotainfo->qi_gquotaip); + mp->m_quotainfo->qi_gquotaip = NULL; } } - if (uqp) { - IRELE(uqp); - mp->m_quotainfo->qi_uquotaip = NULL; - } - if (gqp) { - IRELE(gqp); - mp->m_quotainfo->qi_gquotaip = NULL; - } -out: - return XFS_ERROR(error); } /* Index: xfs-master/fs/xfs/xfs_vfsops.c =================================================================== --- xfs-master.orig/fs/xfs/xfs_vfsops.c 2008-12-01 21:33:53.000000000 +0100 +++ xfs-master/fs/xfs/xfs_vfsops.c 2008-12-02 11:24:59.000000000 +0100 @@ -68,74 +68,16 @@ xfs_unmount_flush( rid of. */ int relocation) /* Called from vfs relocation. */ { - xfs_inode_t *rip = mp->m_rootip; - xfs_inode_t *rbmip; - xfs_inode_t *rsumip = NULL; - int error; - - xfs_ilock(rip, XFS_ILOCK_EXCL | XFS_ILOCK_PARENT); - xfs_iflock(rip); - - /* - * Flush out the real time inodes. - */ - if ((rbmip = mp->m_rbmip) != NULL) { - xfs_ilock(rbmip, XFS_ILOCK_EXCL); - xfs_iflock(rbmip); - error = xfs_iflush(rbmip, XFS_IFLUSH_SYNC); - xfs_iunlock(rbmip, XFS_ILOCK_EXCL); - - if (error == EFSCORRUPTED) - goto fscorrupt_out; - - ASSERT(vn_count(VFS_I(rbmip)) == 1); - - rsumip = mp->m_rsumip; - xfs_ilock(rsumip, XFS_ILOCK_EXCL); - xfs_iflock(rsumip); - error = xfs_iflush(rsumip, XFS_IFLUSH_SYNC); - xfs_iunlock(rsumip, XFS_ILOCK_EXCL); - - if (error == EFSCORRUPTED) - goto fscorrupt_out; - - ASSERT(vn_count(VFS_I(rsumip)) == 1); - } - - /* - * Synchronously flush root inode to disk - */ - error = xfs_iflush(rip, XFS_IFLUSH_SYNC); - if (error == EFSCORRUPTED) - goto fscorrupt_out2; - - if (vn_count(VFS_I(rip)) != 1 && !relocation) { - xfs_iunlock(rip, XFS_ILOCK_EXCL); - return XFS_ERROR(EBUSY); - } - /* * Release dquot that rootinode, rbmino and rsumino might be holding, * flush and purge the quota inodes. */ - error = XFS_QM_UNMOUNT(mp); - if (error == EFSCORRUPTED) - goto fscorrupt_out2; + XFS_QM_UNMOUNT(mp); - if (rbmip) { - IRELE(rbmip); - IRELE(rsumip); - } + if (mp->m_rbmip) + IRELE(mp->m_rbmip); + if (mp->m_rsumip) + IRELE(mp->m_rsumip); - xfs_iunlock(rip, XFS_ILOCK_EXCL); return 0; - -fscorrupt_out: - xfs_ifunlock(rip); - -fscorrupt_out2: - xfs_iunlock(rip, XFS_ILOCK_EXCL); - - return XFS_ERROR(EFSCORRUPTED); } - Index: xfs-master/fs/xfs/quota/xfs_qm.h =================================================================== --- xfs-master.orig/fs/xfs/quota/xfs_qm.h 2008-12-01 21:33:53.000000000 +0100 +++ xfs-master/fs/xfs/quota/xfs_qm.h 2008-12-02 11:24:59.000000000 +0100 @@ -167,7 +167,7 @@ extern void xfs_qm_destroy_quotainfo(xf extern void xfs_qm_mount_quotas(xfs_mount_t *); extern int xfs_qm_quotacheck(xfs_mount_t *); extern void xfs_qm_unmount_quotadestroy(xfs_mount_t *); -extern int xfs_qm_unmount_quotas(xfs_mount_t *); +extern void xfs_qm_unmount_quotas(xfs_mount_t *); extern int xfs_qm_write_sb_changes(xfs_mount_t *, __int64_t); extern int xfs_qm_sync(xfs_mount_t *, int); Index: xfs-master/fs/xfs/xfs_mount.h =================================================================== --- xfs-master.orig/fs/xfs/xfs_mount.h 2008-12-02 11:22:46.000000000 +0100 +++ xfs-master/fs/xfs/xfs_mount.h 2008-12-02 11:24:59.000000000 +0100 @@ -117,7 +117,7 @@ struct xfs_quotainfo; typedef int (*xfs_qminit_t)(struct xfs_mount *, uint *, uint *); typedef int (*xfs_qmmount_t)(struct xfs_mount *, uint, uint); -typedef int (*xfs_qmunmount_t)(struct xfs_mount *); +typedef void (*xfs_qmunmount_t)(struct xfs_mount *); typedef void (*xfs_qmdone_t)(struct xfs_mount *); typedef void (*xfs_dqrele_t)(struct xfs_dquot *); typedef int (*xfs_dqattach_t)(struct xfs_inode *, uint); Index: xfs-master/fs/xfs/linux-2.6/xfs_vnode.h =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_vnode.h 2008-12-02 11:24:34.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_vnode.h 2008-12-02 11:24:59.000000000 +0100 @@ -65,11 +65,6 @@ extern void vn_iowait(struct xfs_inode * extern void vn_iowake(struct xfs_inode *ip); extern void vn_ioerror(struct xfs_inode *ip, int error, char *f, int l); -static inline int vn_count(struct inode *vp) -{ - return atomic_read(&vp->i_count); -} - #define IHOLD(ip) \ do { \ ASSERT(atomic_read(&VFS_I(ip)->i_count) > 0) ; \ -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:06:53 2008 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 mB2G6rq2031664 for ; Tue, 2 Dec 2008 10:06:53 -0600 X-ASG-Debug-ID: 1228234012-606102750000-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 C8631164F1C6 for ; Tue, 2 Dec 2008 08:06:52 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id oVSIyiBCEb6ju7Sh for ; Tue, 02 Dec 2008 08:06:52 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xm0-0007cE-Ep for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:52 +0000 Message-Id: <20081202160652.335328000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:49 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 19/22] kill vn_ioerror Subject: [patch 19/22] kill vn_ioerror Content-Disposition: inline; filename=xfs-kill-vn_ioerror 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: 1228234012 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com There's just one caller of this helper, and it's much cleaner to just merge the xfs_do_force_shutdown call into it. Signed-off-by: Christoph Hellwig Index: xfs-master/fs/xfs/linux-2.6/xfs_aops.c =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_aops.c 2008-12-02 11:24:34.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_aops.c 2008-12-02 11:26:38.000000000 +0100 @@ -146,16 +146,25 @@ xfs_destroy_ioend( xfs_ioend_t *ioend) { struct buffer_head *bh, *next; + struct xfs_inode *ip = XFS_I(ioend->io_inode); for (bh = ioend->io_buffer_head; bh; bh = next) { next = bh->b_private; bh->b_end_io(bh, !ioend->io_error); } - if (unlikely(ioend->io_error)) { - vn_ioerror(XFS_I(ioend->io_inode), ioend->io_error, - __FILE__,__LINE__); + + /* + * Volume managers supporting multiple paths can send back ENODEV + * when the final path disappears. In this case continuing to fill + * the page cache with dirty data which cannot be written out is + * evil, so prevent that. + */ + if (unlikely(ioend->io_error == -ENODEV)) { + xfs_do_force_shutdown(ip->i_mount, SHUTDOWN_DEVICE_REQ, + __FILE__, __LINE__); } - vn_iowake(XFS_I(ioend->io_inode)); + + vn_iowake(ip); mempool_free(ioend, xfs_ioend_pool); } Index: xfs-master/fs/xfs/linux-2.6/xfs_vnode.c =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_vnode.c 2008-12-02 11:24:34.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_vnode.c 2008-12-02 11:26:38.000000000 +0100 @@ -66,22 +66,6 @@ vn_iowake( wake_up(vptosync(ip)); } -/* - * Volume managers supporting multiple paths can send back ENODEV when the - * final path disappears. In this case continuing to fill the page cache - * with dirty data which cannot be written out is evil, so prevent that. - */ -void -vn_ioerror( - xfs_inode_t *ip, - int error, - char *f, - int l) -{ - if (unlikely(error == -ENODEV)) - xfs_do_force_shutdown(ip->i_mount, SHUTDOWN_DEVICE_REQ, f, l); -} - #ifdef XFS_INODE_TRACE #define KTRACE_ENTER(ip, vk, s, line, ra) \ Index: xfs-master/fs/xfs/linux-2.6/xfs_vnode.h =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_vnode.h 2008-12-02 11:24:59.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_vnode.h 2008-12-02 11:26:38.000000000 +0100 @@ -63,7 +63,6 @@ extern void vn_init(void); */ extern void vn_iowait(struct xfs_inode *ip); extern void vn_iowake(struct xfs_inode *ip); -extern void vn_ioerror(struct xfs_inode *ip, int error, char *f, int l); #define IHOLD(ip) \ do { \ -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:06:52 2008 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 mB2G6qOf031611 for ; Tue, 2 Dec 2008 10:06:52 -0600 X-ASG-Debug-ID: 1228234011-60da025b0000-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 941D7164F1B5 for ; Tue, 2 Dec 2008 08:06:51 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 0JEKjdWvdyXdi89s for ; Tue, 02 Dec 2008 08:06:51 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xlz-0007SW-6V for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:51 +0000 Message-Id: <20081202160651.115809000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:41 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 11/22] cleanup xfs_sb.h feature flag helpers Subject: [patch 11/22] cleanup xfs_sb.h feature flag helpers Content-Disposition: inline; filename=xfs-cleanup-sb.h-helpers 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: 1228234011 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com The various inlines in xfs_sb.h that deal with the superblock version and fature flags were converted from macros a while ago, and this show by the odd coding style full of useless braces and backslashes and the avoidance of conditionals. Clean these up to look like normal C code. (First sent on August 2nd) Signed-off-by: Christoph Hellwig Index: xfs-master/fs/xfs/xfs_sb.h =================================================================== --- xfs-master.orig/fs/xfs/xfs_sb.h 2008-12-02 11:07:00.000000000 +0100 +++ xfs-master/fs/xfs/xfs_sb.h 2008-12-02 11:15:20.000000000 +0100 @@ -296,30 +296,34 @@ typedef enum { #define XFS_SB_VERSION_NUM(sbp) ((sbp)->sb_versionnum & XFS_SB_VERSION_NUMBITS) -#ifdef __KERNEL__ static inline int xfs_sb_good_version(xfs_sb_t *sbp) { - return (((sbp->sb_versionnum >= XFS_SB_VERSION_1) && \ - (sbp->sb_versionnum <= XFS_SB_VERSION_3)) || \ - ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - !((sbp->sb_versionnum & ~XFS_SB_VERSION_OKREALBITS) || \ - ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) && \ - (sbp->sb_features2 & ~XFS_SB_VERSION2_OKREALBITS))) && \ - (sbp->sb_shared_vn <= XFS_SB_MAX_SHARED_VN))); -} + /* We always support version 1-3 */ + if (sbp->sb_versionnum >= XFS_SB_VERSION_1 && + sbp->sb_versionnum <= XFS_SB_VERSION_3) + return 1; + + /* We support version 4 if all feature bits are supported */ + if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) { + if ((sbp->sb_versionnum & ~XFS_SB_VERSION_OKREALBITS) || + ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) && + (sbp->sb_features2 & ~XFS_SB_VERSION2_OKREALBITS))) + return 0; + +#ifdef __KERNEL__ + if (sbp->sb_shared_vn > XFS_SB_MAX_SHARED_VN) + return 0; #else -static inline int xfs_sb_good_version(xfs_sb_t *sbp) -{ - return (((sbp->sb_versionnum >= XFS_SB_VERSION_1) && \ - (sbp->sb_versionnum <= XFS_SB_VERSION_3)) || \ - ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - !((sbp->sb_versionnum & ~XFS_SB_VERSION_OKREALBITS) || \ - ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) && \ - (sbp->sb_features2 & ~XFS_SB_VERSION2_OKREALBITS))) && \ - (!(sbp->sb_versionnum & XFS_SB_VERSION_SHAREDBIT) || \ - (sbp->sb_shared_vn <= XFS_SB_MAX_SHARED_VN)))); + if ((sbp->sb_versionnum & XFS_SB_VERSION_SHAREDBIT) && + sbp->sb_shared_vn > XFS_SB_MAX_SHARED_VN) + return 0; +#endif + + return 1; + } + + return 0; } -#endif /* __KERNEL__ */ /* * Detect a mismatched features2 field. Older kernels read/wrote @@ -332,123 +336,127 @@ static inline int xfs_sb_has_mismatched_ static inline unsigned xfs_sb_version_tonew(unsigned v) { - return ((((v) == XFS_SB_VERSION_1) ? \ - 0 : \ - (((v) == XFS_SB_VERSION_2) ? \ - XFS_SB_VERSION_ATTRBIT : \ - (XFS_SB_VERSION_ATTRBIT | XFS_SB_VERSION_NLINKBIT))) | \ - XFS_SB_VERSION_4); + if (v == XFS_SB_VERSION_1) + return XFS_SB_VERSION_4; + + if (v == XFS_SB_VERSION_2) + return XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT; + + return XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT | + XFS_SB_VERSION_NLINKBIT; } static inline unsigned xfs_sb_version_toold(unsigned v) { - return (((v) & (XFS_SB_VERSION_QUOTABIT | XFS_SB_VERSION_ALIGNBIT)) ? \ - 0 : \ - (((v) & XFS_SB_VERSION_NLINKBIT) ? \ - XFS_SB_VERSION_3 : \ - (((v) & XFS_SB_VERSION_ATTRBIT) ? \ - XFS_SB_VERSION_2 : \ - XFS_SB_VERSION_1))); + if (v & (XFS_SB_VERSION_QUOTABIT | XFS_SB_VERSION_ALIGNBIT)) + return 0; + if (v & XFS_SB_VERSION_NLINKBIT) + return XFS_SB_VERSION_3; + if (v & XFS_SB_VERSION_ATTRBIT) + return XFS_SB_VERSION_2; + return XFS_SB_VERSION_1; } static inline int xfs_sb_version_hasattr(xfs_sb_t *sbp) { - return ((sbp)->sb_versionnum == XFS_SB_VERSION_2) || \ - ((sbp)->sb_versionnum == XFS_SB_VERSION_3) || \ - ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_ATTRBIT)); + return sbp->sb_versionnum == XFS_SB_VERSION_2 || + sbp->sb_versionnum == XFS_SB_VERSION_3 || + (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_ATTRBIT)); } static inline void xfs_sb_version_addattr(xfs_sb_t *sbp) { - (sbp)->sb_versionnum = (((sbp)->sb_versionnum == XFS_SB_VERSION_1) ? \ - XFS_SB_VERSION_2 : \ - ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) ? \ - ((sbp)->sb_versionnum | XFS_SB_VERSION_ATTRBIT) : \ - (XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT))); + if (sbp->sb_versionnum == XFS_SB_VERSION_1) + sbp->sb_versionnum = XFS_SB_VERSION_2; + else if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) + sbp->sb_versionnum |= XFS_SB_VERSION_ATTRBIT; + else + sbp->sb_versionnum = XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT; } static inline int xfs_sb_version_hasnlink(xfs_sb_t *sbp) { - return ((sbp)->sb_versionnum == XFS_SB_VERSION_3) || \ - ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_NLINKBIT)); + return sbp->sb_versionnum == XFS_SB_VERSION_3 || + (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_NLINKBIT)); } static inline void xfs_sb_version_addnlink(xfs_sb_t *sbp) { - (sbp)->sb_versionnum = ((sbp)->sb_versionnum <= XFS_SB_VERSION_2 ? \ - XFS_SB_VERSION_3 : \ - ((sbp)->sb_versionnum | XFS_SB_VERSION_NLINKBIT)); + if (sbp->sb_versionnum <= XFS_SB_VERSION_2) + sbp->sb_versionnum = XFS_SB_VERSION_3; + else + sbp->sb_versionnum |= XFS_SB_VERSION_NLINKBIT; } static inline int xfs_sb_version_hasquota(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_QUOTABIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_QUOTABIT); } static inline void xfs_sb_version_addquota(xfs_sb_t *sbp) { - (sbp)->sb_versionnum = \ - (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 ? \ - ((sbp)->sb_versionnum | XFS_SB_VERSION_QUOTABIT) : \ - (xfs_sb_version_tonew((sbp)->sb_versionnum) | \ - XFS_SB_VERSION_QUOTABIT)); + if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) + sbp->sb_versionnum |= XFS_SB_VERSION_QUOTABIT; + else + sbp->sb_versionnum = xfs_sb_version_tonew(sbp->sb_versionnum) | + XFS_SB_VERSION_QUOTABIT; } static inline int xfs_sb_version_hasalign(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_ALIGNBIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_ALIGNBIT); } static inline int xfs_sb_version_hasdalign(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_DALIGNBIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_DALIGNBIT); } static inline int xfs_sb_version_hasshared(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_SHAREDBIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_SHAREDBIT); } static inline int xfs_sb_version_hasdirv2(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_DIRV2BIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_DIRV2BIT); } static inline int xfs_sb_version_haslogv2(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_LOGV2BIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_LOGV2BIT); } static inline int xfs_sb_version_hasextflgbit(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_EXTFLGBIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_EXTFLGBIT); } static inline int xfs_sb_version_hassector(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_SECTORBIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_SECTORBIT); } static inline int xfs_sb_version_hasasciici(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && (sbp->sb_versionnum & XFS_SB_VERSION_BORGBIT); } static inline int xfs_sb_version_hasmorebits(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT); } /* @@ -463,22 +471,20 @@ static inline int xfs_sb_version_hasmore static inline int xfs_sb_version_haslazysbcount(xfs_sb_t *sbp) { - return (xfs_sb_version_hasmorebits(sbp) && \ - ((sbp)->sb_features2 & XFS_SB_VERSION2_LAZYSBCOUNTBIT)); + return xfs_sb_version_hasmorebits(sbp) && + (sbp->sb_features2 & XFS_SB_VERSION2_LAZYSBCOUNTBIT); } static inline int xfs_sb_version_hasattr2(xfs_sb_t *sbp) { - return (xfs_sb_version_hasmorebits(sbp)) && \ - ((sbp)->sb_features2 & XFS_SB_VERSION2_ATTR2BIT); + return xfs_sb_version_hasmorebits(sbp) && + (sbp->sb_features2 & XFS_SB_VERSION2_ATTR2BIT); } static inline void xfs_sb_version_addattr2(xfs_sb_t *sbp) { - ((sbp)->sb_versionnum = \ - ((sbp)->sb_versionnum | XFS_SB_VERSION_MOREBITSBIT), \ - ((sbp)->sb_features2 = \ - ((sbp)->sb_features2 | XFS_SB_VERSION2_ATTR2BIT))); + sbp->sb_versionnum |= XFS_SB_VERSION_MOREBITSBIT; + sbp->sb_features2 |= XFS_SB_VERSION2_ATTR2BIT; } static inline void xfs_sb_version_removeattr2(xfs_sb_t *sbp) -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:06:52 2008 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_63 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 mB2G6qLc031621 for ; Tue, 2 Dec 2008 10:06:52 -0600 X-ASG-Debug-ID: 1228234011-6da201700000-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 41E84164F1BF for ; Tue, 2 Dec 2008 08:06:52 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id dHWBv2Q59089jHMG for ; Tue, 02 Dec 2008 08:06:52 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xlz-0007Vh-QO for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:51 +0000 Message-Id: <20081202160651.749289000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:45 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 15/22] replace b_fspriv with b_mount Subject: [patch 15/22] replace b_fspriv with b_mount Content-Disposition: inline; filename=xfs-add-bp_mount-field 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: 1228234012 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Replace the b_fspriv pointer and it's ugly accessors with a properly types xfs_mount pointer. Also switch log reocvery over to it instead of using b_fspriv for the mount pointer. Signed-off-by: Christoph Hellwig Index: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_buf.c =================================================================== --- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_buf.c 2008-11-15 15:27:32.000000000 +0100 +++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_buf.c 2008-11-15 15:28:01.000000000 +0100 @@ -1085,7 +1085,7 @@ xfs_bawrite( bp->b_flags &= ~(XBF_READ | XBF_DELWRI | XBF_READ_AHEAD); bp->b_flags |= (XBF_WRITE | XBF_ASYNC | _XBF_RUN_QUEUES); - bp->b_fspriv3 = mp; + bp->b_mount = mp; bp->b_strat = xfs_bdstrat_cb; return xfs_bdstrat_cb(bp); } @@ -1098,7 +1098,7 @@ xfs_bdwrite( XB_TRACE(bp, "bdwrite", 0); bp->b_strat = xfs_bdstrat_cb; - bp->b_fspriv3 = mp; + bp->b_mount = mp; bp->b_flags &= ~XBF_READ; bp->b_flags |= (XBF_DELWRI | XBF_ASYNC); Index: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_buf.h =================================================================== --- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_buf.h 2008-11-15 15:28:08.000000000 +0100 +++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_buf.h 2008-11-15 15:29:12.000000000 +0100 @@ -168,7 +168,7 @@ typedef struct xfs_buf { struct completion b_iowait; /* queue for I/O waiters */ void *b_fspriv; void *b_fspriv2; - void *b_fspriv3; + struct xfs_mount *b_mount; unsigned short b_error; /* error code on I/O */ unsigned int b_page_count; /* size of page array */ unsigned int b_offset; /* page offset in first page */ @@ -335,8 +335,6 @@ extern void xfs_buf_trace(xfs_buf_t *, c #define XFS_BUF_SET_FSPRIVATE(bp, val) ((bp)->b_fspriv = (void*)(val)) #define XFS_BUF_FSPRIVATE2(bp, type) ((type)(bp)->b_fspriv2) #define XFS_BUF_SET_FSPRIVATE2(bp, val) ((bp)->b_fspriv2 = (void*)(val)) -#define XFS_BUF_FSPRIVATE3(bp, type) ((type)(bp)->b_fspriv3) -#define XFS_BUF_SET_FSPRIVATE3(bp, val) ((bp)->b_fspriv3 = (void*)(val)) #define XFS_BUF_SET_START(bp) do { } while (0) #define XFS_BUF_SET_BRELSE_FUNC(bp, func) ((bp)->b_relse = (func)) Index: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_lrw.c =================================================================== --- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_lrw.c 2008-11-15 15:25:29.000000000 +0100 +++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_lrw.c 2008-11-15 15:26:27.000000000 +0100 @@ -847,13 +847,7 @@ retry: int xfs_bdstrat_cb(struct xfs_buf *bp) { - xfs_mount_t *mp; - - mp = XFS_BUF_FSPRIVATE3(bp, xfs_mount_t *); - if (!XFS_FORCED_SHUTDOWN(mp)) { - xfs_buf_iorequest(bp); - return 0; - } else { + if (XFS_FORCED_SHUTDOWN(bp->b_mount)) { xfs_buftrace("XFS__BDSTRAT IOERROR", bp); /* * Metadata write that didn't get logged but @@ -866,6 +860,9 @@ xfs_bdstrat_cb(struct xfs_buf *bp) else return (xfs_bioerror(bp)); } + + xfs_buf_iorequest(bp); + return 0; } /* Index: linux-2.6-xfs/fs/xfs/xfs_buf_item.c =================================================================== --- linux-2.6-xfs.orig/fs/xfs/xfs_buf_item.c 2008-11-15 15:24:38.000000000 +0100 +++ linux-2.6-xfs/fs/xfs/xfs_buf_item.c 2008-11-15 15:25:05.000000000 +0100 @@ -707,8 +707,8 @@ xfs_buf_item_init( * the first. If we do already have one, there is * nothing to do here so return. */ - if (XFS_BUF_FSPRIVATE3(bp, xfs_mount_t *) != mp) - XFS_BUF_SET_FSPRIVATE3(bp, mp); + if (bp->b_mount != mp) + bp->b_mount = mp; XFS_BUF_SET_BDSTRAT_FUNC(bp, xfs_bdstrat_cb); if (XFS_BUF_FSPRIVATE(bp, void *) != NULL) { lip = XFS_BUF_FSPRIVATE(bp, xfs_log_item_t *); Index: linux-2.6-xfs/fs/xfs/xfs_rw.c =================================================================== --- linux-2.6-xfs.orig/fs/xfs/xfs_rw.c 2008-11-15 15:26:37.000000000 +0100 +++ linux-2.6-xfs/fs/xfs/xfs_rw.c 2008-11-15 15:27:17.000000000 +0100 @@ -406,7 +406,7 @@ xfs_bwrite( * XXXsup how does this work for quotas. */ XFS_BUF_SET_BDSTRAT_FUNC(bp, xfs_bdstrat_cb); - XFS_BUF_SET_FSPRIVATE3(bp, mp); + bp->b_mount = mp; XFS_BUF_WRITE(bp); if ((error = XFS_bwrite(bp))) { Index: linux-2.6-xfs/fs/xfs/xfs_log_recover.c =================================================================== --- linux-2.6-xfs.orig/fs/xfs/xfs_log_recover.c 2008-11-15 15:31:41.000000000 +0100 +++ linux-2.6-xfs/fs/xfs/xfs_log_recover.c 2008-11-15 15:35:12.000000000 +0100 @@ -267,21 +267,16 @@ STATIC void xlog_recover_iodone( struct xfs_buf *bp) { - xfs_mount_t *mp; - - ASSERT(XFS_BUF_FSPRIVATE(bp, void *)); - if (XFS_BUF_GETERROR(bp)) { /* * We're not going to bother about retrying * this during recovery. One strike! */ - mp = XFS_BUF_FSPRIVATE(bp, xfs_mount_t *); xfs_ioerror_alert("xlog_recover_iodone", - mp, bp, XFS_BUF_ADDR(bp)); - xfs_force_shutdown(mp, SHUTDOWN_META_IO_ERROR); + bp->b_mount, bp, XFS_BUF_ADDR(bp)); + xfs_force_shutdown(bp->b_mount, SHUTDOWN_META_IO_ERROR); } - XFS_BUF_SET_FSPRIVATE(bp, NULL); + bp->b_mount = NULL; XFS_BUF_CLR_IODONE_FUNC(bp); xfs_biodone(bp); } @@ -2225,9 +2220,8 @@ xlog_recover_do_buffer_trans( XFS_BUF_STALE(bp); error = xfs_bwrite(mp, bp); } else { - ASSERT(XFS_BUF_FSPRIVATE(bp, void *) == NULL || - XFS_BUF_FSPRIVATE(bp, xfs_mount_t *) == mp); - XFS_BUF_SET_FSPRIVATE(bp, mp); + ASSERT(bp->b_mount == NULL || bp->b_mount == mp); + bp->b_mount = mp; XFS_BUF_SET_IODONE_FUNC(bp, xlog_recover_iodone); xfs_bdwrite(mp, bp); } @@ -2490,9 +2484,8 @@ xlog_recover_do_inode_trans( write_inode_buffer: if (ITEM_TYPE(item) == XFS_LI_INODE) { - ASSERT(XFS_BUF_FSPRIVATE(bp, void *) == NULL || - XFS_BUF_FSPRIVATE(bp, xfs_mount_t *) == mp); - XFS_BUF_SET_FSPRIVATE(bp, mp); + ASSERT(bp->b_mount == NULL || bp->b_mount == mp); + bp->b_mount = mp; XFS_BUF_SET_IODONE_FUNC(bp, xlog_recover_iodone); xfs_bdwrite(mp, bp); } else { @@ -2623,9 +2616,8 @@ xlog_recover_do_dquot_trans( memcpy(ddq, recddq, item->ri_buf[1].i_len); ASSERT(dq_f->qlf_size == 2); - ASSERT(XFS_BUF_FSPRIVATE(bp, void *) == NULL || - XFS_BUF_FSPRIVATE(bp, xfs_mount_t *) == mp); - XFS_BUF_SET_FSPRIVATE(bp, mp); + ASSERT(bp->b_mount == NULL || bp->b_mount == mp); + bp->b_mount = mp; XFS_BUF_SET_IODONE_FUNC(bp, xlog_recover_iodone); xfs_bdwrite(mp, bp); -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:06:52 2008 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 mB2G6qd8031616 for ; Tue, 2 Dec 2008 10:06:52 -0600 X-ASG-Debug-ID: 1228234011-5d7002320000-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 3506B164F1B5 for ; Tue, 2 Dec 2008 08:06:52 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id HQ2E34FPn3P5VFXO for ; Tue, 02 Dec 2008 08:06:52 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xlz-0007UY-La for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:51 +0000 Message-Id: <20081202160651.583993000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:44 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 14/22] remove leftovers of shared read-only support Subject: [patch 14/22] remove leftovers of shared read-only support Content-Disposition: inline; filename=xfs-kill-m_mk_sharedro 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: 1228234012 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com We never supported shared read-only filesystems, so remove the dead code left over from IRIX for it. Signed-off-by: Christoph Hellwig Index: xfs-master/fs/xfs/xfs_mount.c =================================================================== --- xfs-master.orig/fs/xfs/xfs_mount.c 2008-12-01 19:26:02.000000000 +0100 +++ xfs-master/fs/xfs/xfs_mount.c 2008-12-01 19:28:02.000000000 +0100 @@ -1352,24 +1352,6 @@ xfs_log_sbcount( return error; } -STATIC void -xfs_mark_shared_ro( - xfs_mount_t *mp, - xfs_buf_t *bp) -{ - xfs_dsb_t *sb = XFS_BUF_TO_SBP(bp); - __uint16_t version; - - if (!(sb->sb_flags & XFS_SBF_READONLY)) - sb->sb_flags |= XFS_SBF_READONLY; - - version = be16_to_cpu(sb->sb_versionnum); - if ((version & XFS_SB_VERSION_NUMBITS) != XFS_SB_VERSION_4 || - !(version & XFS_SB_VERSION_SHAREDBIT)) - version |= XFS_SB_VERSION_SHAREDBIT; - sb->sb_versionnum = cpu_to_be16(version); -} - int xfs_unmountfs_writesb(xfs_mount_t *mp) { @@ -1385,12 +1367,6 @@ xfs_unmountfs_writesb(xfs_mount_t *mp) sbp = xfs_getsb(mp, 0); - /* - * mark shared-readonly if desired - */ - if (mp->m_mk_sharedro) - xfs_mark_shared_ro(mp, sbp); - XFS_BUF_UNDONE(sbp); XFS_BUF_UNREAD(sbp); XFS_BUF_UNDELAYWRITE(sbp); @@ -1402,8 +1378,6 @@ xfs_unmountfs_writesb(xfs_mount_t *mp) if (error) xfs_ioerror_alert("xfs_unmountfs_writesb", mp, sbp, XFS_BUF_ADDR(sbp)); - if (error && mp->m_mk_sharedro) - xfs_fs_cmn_err(CE_ALERT, mp, "Superblock write error detected while unmounting. Filesystem may not be marked shared readonly"); xfs_buf_relse(sbp); } return error; Index: xfs-master/fs/xfs/xfs_mount.h =================================================================== --- xfs-master.orig/fs/xfs/xfs_mount.h 2008-12-01 19:27:59.000000000 +0100 +++ xfs-master/fs/xfs/xfs_mount.h 2008-12-01 19:28:02.000000000 +0100 @@ -301,7 +301,6 @@ typedef struct xfs_mount { int m_sinoalign; /* stripe unit inode alignment */ int m_attr_magicpct;/* 37% of the blocksize */ int m_dir_magicpct; /* 37% of the dir blocksize */ - __uint8_t m_mk_sharedro; /* mark shared ro on unmount */ __uint8_t m_sectbb_log; /* sectlog - BBSHIFT */ const struct xfs_nameops *m_dirnameops; /* vector of dir name ops */ int m_dirblksize; /* directory block sz--bytes */ Index: xfs-master/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_super.c 2008-12-01 19:27:52.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_super.c 2008-12-01 19:28:02.000000000 +0100 @@ -1388,35 +1388,6 @@ xfs_finish_flags( return XFS_ERROR(EROFS); } -#if 0 /* shared mounts were never supported on Linux */ - /* - * check for shared mount. - */ - if (ap->flags & XFSMNT_SHARED) { - if (!xfs_sb_version_hasshared(&mp->m_sb)) - return XFS_ERROR(EINVAL); - - /* - * For IRIX 6.5, shared mounts must have the shared - * version bit set, have the persistent readonly - * field set, must be version 0 and can only be mounted - * read-only. - */ - if (!ronly || !(mp->m_sb.sb_flags & XFS_SBF_READONLY) || - (mp->m_sb.sb_shared_vn != 0)) - return XFS_ERROR(EINVAL); - - mp->m_flags |= XFS_MOUNT_SHARED; - - /* - * Shared XFS V0 can't deal with DMI. Return EINVAL. - */ - if (mp->m_sb.sb_shared_vn == 0 && - (mp->m_flags & XFS_MOUNT_DMAPI)) - return XFS_ERROR(EINVAL); - } -#endif - return 0; } -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:06:52 2008 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 mB2G6pSn031610 for ; Tue, 2 Dec 2008 10:06:52 -0600 X-ASG-Debug-ID: 1228234010-619902170000-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 AB6F6164F1B5 for ; Tue, 2 Dec 2008 08:06:50 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id V8KE82WzWFfDw80p for ; Tue, 02 Dec 2008 08:06:50 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xly-0007Ke-9i for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:50 +0000 Message-Id: <20081202160650.198364000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:35 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 05/22] cleanup the inode reclaim path Subject: [patch 05/22] cleanup the inode reclaim path Content-Disposition: inline; filename=xfs-cleanup-xfs_ireclaim 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: 1228234010 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Merge xfs_iextract and xfs_idestory into xfs_ireclaim as they are never called individually. Also rewrite most comments in this area as they were serverly out of date. Signed-off-by: Christoph Hellwig Index: xfs-master/fs/xfs/xfs_iget.c =================================================================== --- xfs-master.orig/fs/xfs/xfs_iget.c 2008-12-01 19:26:04.000000000 +0100 +++ xfs-master/fs/xfs/xfs_iget.c 2008-12-01 19:27:15.000000000 +0100 @@ -450,65 +450,109 @@ xfs_iput_new( IRELE(ip); } - /* - * This routine embodies the part of the reclaim code that pulls - * the inode from the inode hash table and the mount structure's - * inode list. - * This should only be called from xfs_reclaim(). + * This is called free all the memory associated with an inode. + * It must free the inode itself and any buffers allocated for + * if_extents/if_data and if_broot. It must also free the lock + * associated with the inode. + * + * Note: because we don't initialise everything on reallocation out + * of the zone, we must ensure we nullify everything correctly before + * freeing the structure. */ void -xfs_ireclaim(xfs_inode_t *ip) +xfs_ireclaim( + struct xfs_inode *ip) { - /* - * Remove from old hash list and mount list. - */ - XFS_STATS_INC(xs_ig_reclaims); + struct xfs_mount *mp = ip->i_mount; + struct xfs_perag *pag; - xfs_iextract(ip); + XFS_STATS_INC(xs_ig_reclaims); /* - * Here we do a spurious inode lock in order to coordinate with inode - * cache radix tree lookups. This is because the lookup can reference - * the inodes in the cache without taking references. We make that OK - * here by ensuring that we wait until the inode is unlocked after the - * lookup before we go ahead and free it. We get both the ilock and - * the iolock because the code may need to drop the ilock one but will - * still hold the iolock. + * Remove the inode from the per-AG radix tree. It doesn't matter + * if it was never added to it because radix_tree_delete can deal + * with that case just fine. */ - xfs_ilock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); + pag = xfs_get_perag(mp, ip->i_ino); + write_lock(&pag->pag_ici_lock); + radix_tree_delete(&pag->pag_ici_root, XFS_INO_TO_AGINO(mp, ip->i_ino)); + write_unlock(&pag->pag_ici_lock); + xfs_put_perag(mp, pag); /* - * Release dquots (and their references) if any. An inode may escape - * xfs_inactive and get here via vn_alloc->vn_reclaim path. + * Here we do an (almost) spurious inode lock in order to coordinate + * with inode cache radix tree lookups. This is because the lookup + * can reference the inodes in the cache without taking references. + * + * We make that OK here by ensuring that we wait until the inode is + * unlocked after the lookup before we go ahead and free it. We get + * both the ilock and the iolock because the code may need to drop the + * ilock one but will still hold the iolock. */ - XFS_QM_DQDETACH(ip->i_mount, ip); - + xfs_ilock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); /* - * Free all memory associated with the inode. + * Release dquots (and their references) if any. */ + XFS_QM_DQDETACH(ip->i_mount, ip); xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); - xfs_idestroy(ip); -} -/* - * This routine removes an about-to-be-destroyed inode from - * all of the lists in which it is located with the exception - * of the behavior chain. - */ -void -xfs_iextract( - xfs_inode_t *ip) -{ - xfs_mount_t *mp = ip->i_mount; - xfs_perag_t *pag = xfs_get_perag(mp, ip->i_ino); + switch (ip->i_d.di_mode & S_IFMT) { + case S_IFREG: + case S_IFDIR: + case S_IFLNK: + xfs_idestroy_fork(ip, XFS_DATA_FORK); + break; + } - write_lock(&pag->pag_ici_lock); - radix_tree_delete(&pag->pag_ici_root, XFS_INO_TO_AGINO(mp, ip->i_ino)); - write_unlock(&pag->pag_ici_lock); - xfs_put_perag(mp, pag); + if (ip->i_afp) + xfs_idestroy_fork(ip, XFS_ATTR_FORK); + +#ifdef XFS_INODE_TRACE + ktrace_free(ip->i_trace); +#endif +#ifdef XFS_BMAP_TRACE + ktrace_free(ip->i_xtrace); +#endif +#ifdef XFS_BTREE_TRACE + ktrace_free(ip->i_btrace); +#endif +#ifdef XFS_RW_TRACE + ktrace_free(ip->i_rwtrace); +#endif +#ifdef XFS_ILOCK_TRACE + ktrace_free(ip->i_lock_trace); +#endif +#ifdef XFS_DIR2_TRACE + ktrace_free(ip->i_dir_trace); +#endif + if (ip->i_itemp) { + /* + * Only if we are shutting down the fs will we see an + * inode still in the AIL. If it is there, we should remove + * it to prevent a use-after-free from occurring. + */ + xfs_log_item_t *lip = &ip->i_itemp->ili_item; + struct xfs_ail *ailp = lip->li_ailp; - mp->m_ireclaims++; + ASSERT(((lip->li_flags & XFS_LI_IN_AIL) == 0) || + XFS_FORCED_SHUTDOWN(ip->i_mount)); + if (lip->li_flags & XFS_LI_IN_AIL) { + spin_lock(&ailp->xa_lock); + if (lip->li_flags & XFS_LI_IN_AIL) + xfs_trans_ail_delete(ailp, lip); + else + spin_unlock(&ailp->xa_lock); + } + xfs_inode_item_destroy(ip); + ip->i_itemp = NULL; + } + /* asserts to verify all state is correct here */ + ASSERT(atomic_read(&ip->i_iocount) == 0); + ASSERT(atomic_read(&ip->i_pincount) == 0); + ASSERT(!spin_is_locked(&ip->i_flags_lock)); + ASSERT(completion_done(&ip->i_flush)); + kmem_zone_free(xfs_inode_zone, ip); } /* Index: xfs-master/fs/xfs/xfs_inode.h =================================================================== --- xfs-master.orig/fs/xfs/xfs_inode.h 2008-12-01 19:26:04.000000000 +0100 +++ xfs-master/fs/xfs/xfs_inode.h 2008-12-01 19:27:15.000000000 +0100 @@ -531,8 +531,6 @@ int xfs_itruncate_finish(struct xfs_tra xfs_fsize_t, int, int); int xfs_iunlink(struct xfs_trans *, xfs_inode_t *); -void xfs_idestroy(xfs_inode_t *); -void xfs_iextract(xfs_inode_t *); void xfs_iext_realloc(xfs_inode_t *, int, int); void xfs_ipin(xfs_inode_t *); void xfs_iunpin(xfs_inode_t *); Index: xfs-master/fs/xfs/xfs_mount.h =================================================================== --- xfs-master.orig/fs/xfs/xfs_mount.h 2008-12-01 19:26:35.000000000 +0100 +++ xfs-master/fs/xfs/xfs_mount.h 2008-12-01 19:27:15.000000000 +0100 @@ -241,7 +241,6 @@ typedef struct xfs_mount { xfs_agnumber_t m_agirotor; /* last ag dir inode alloced */ spinlock_t m_agirotor_lock;/* .. and lock protecting it */ xfs_agnumber_t m_maxagi; /* highest inode alloc group */ - uint m_ireclaims; /* count of calls to reclaim*/ uint m_readio_log; /* min read size log bytes */ uint m_readio_blocks; /* min read size blocks */ uint m_writeio_log; /* min write size log bytes */ Index: xfs-master/fs/xfs/xfs_inode.c =================================================================== --- xfs-master.orig/fs/xfs/xfs_inode.c 2008-12-01 19:26:04.000000000 +0100 +++ xfs-master/fs/xfs/xfs_inode.c 2008-12-01 19:27:15.000000000 +0100 @@ -2450,78 +2450,6 @@ xfs_idestroy_fork( } /* - * This is called free all the memory associated with an inode. - * It must free the inode itself and any buffers allocated for - * if_extents/if_data and if_broot. It must also free the lock - * associated with the inode. - * - * Note: because we don't initialise everything on reallocation out - * of the zone, we must ensure we nullify everything correctly before - * freeing the structure. - */ -void -xfs_idestroy( - xfs_inode_t *ip) -{ - switch (ip->i_d.di_mode & S_IFMT) { - case S_IFREG: - case S_IFDIR: - case S_IFLNK: - xfs_idestroy_fork(ip, XFS_DATA_FORK); - break; - } - if (ip->i_afp) - xfs_idestroy_fork(ip, XFS_ATTR_FORK); - -#ifdef XFS_INODE_TRACE - ktrace_free(ip->i_trace); -#endif -#ifdef XFS_BMAP_TRACE - ktrace_free(ip->i_xtrace); -#endif -#ifdef XFS_BTREE_TRACE - ktrace_free(ip->i_btrace); -#endif -#ifdef XFS_RW_TRACE - ktrace_free(ip->i_rwtrace); -#endif -#ifdef XFS_ILOCK_TRACE - ktrace_free(ip->i_lock_trace); -#endif -#ifdef XFS_DIR2_TRACE - ktrace_free(ip->i_dir_trace); -#endif - if (ip->i_itemp) { - /* - * Only if we are shutting down the fs will we see an - * inode still in the AIL. If it is there, we should remove - * it to prevent a use-after-free from occurring. - */ - xfs_log_item_t *lip = &ip->i_itemp->ili_item; - struct xfs_ail *ailp = lip->li_ailp; - - ASSERT(((lip->li_flags & XFS_LI_IN_AIL) == 0) || - XFS_FORCED_SHUTDOWN(ip->i_mount)); - if (lip->li_flags & XFS_LI_IN_AIL) { - spin_lock(&ailp->xa_lock); - if (lip->li_flags & XFS_LI_IN_AIL) - xfs_trans_ail_delete(ailp, lip); - else - spin_unlock(&ailp->xa_lock); - } - xfs_inode_item_destroy(ip); - ip->i_itemp = NULL; - } - /* asserts to verify all state is correct here */ - ASSERT(atomic_read(&ip->i_iocount) == 0); - ASSERT(atomic_read(&ip->i_pincount) == 0); - ASSERT(!spin_is_locked(&ip->i_flags_lock)); - ASSERT(completion_done(&ip->i_flush)); - kmem_zone_free(xfs_inode_zone, ip); -} - - -/* * Increment the pin count of the given buffer. * This value is protected by ipinlock spinlock in the mount structure. */ -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:06:52 2008 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 mB2G6oYX031609 for ; Tue, 2 Dec 2008 10:06:52 -0600 X-ASG-Debug-ID: 1228234010-5d7002310000-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 47FCF164F1B5 for ; Tue, 2 Dec 2008 08:06:50 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 4hTfaFm5u4hWYr9L for ; Tue, 02 Dec 2008 08:06:50 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xlx-0007Hp-Si for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:49 +0000 Message-Id: <20081202160649.790190000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:32 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 02/22] remove useless mnt_want_write call in xfs_write Subject: [patch 02/22] remove useless mnt_want_write call in xfs_write Content-Disposition: inline; filename=xfs-remove-mnt_want_write 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: 1228234010 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com When mnt_want_write was introduced a call to it was added around xfs_ichgtime, but there is no need for this because a file can't be open read/write on a r/o mount, and a mount can't degrade r/o while we still have files open for writing. As the mnt_want_write changes were never merged into the CVS tree this patch is for mainline only. Signed-off-by: Christoph Hellwig --- linux-2.6/fs/xfs/linux-2.6/xfs_lrw.c 2008-08-14 14:52:15.000000000 -0300 +++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_lrw.c 2008-08-14 14:54:53.000000000 -0300 @@ -51,7 +51,6 @@ #include "xfs_vnodeops.h" #include -#include #include @@ -668,15 +667,8 @@ start: if (new_size > xip->i_size) xip->i_new_size = new_size; - /* - * We're not supposed to change timestamps in readonly-mounted - * filesystems. Throw it away if anyone asks us. - */ - if (likely(!(ioflags & IO_INVIS) && - !mnt_want_write(file->f_path.mnt))) { + if (likely(!(ioflags & IO_INVIS))) xfs_ichgtime(xip, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG); - mnt_drop_write(file->f_path.mnt); - } /* * If the offset is beyond the size of the file, we have a couple -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:06:53 2008 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 mB2G6rjX031657 for ; Tue, 2 Dec 2008 10:06:53 -0600 X-ASG-Debug-ID: 1228234012-5c7b02810000-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 A0F05164F1BF for ; Tue, 2 Dec 2008 08:06:52 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id cShg7ZyyzIlhVF75 for ; Tue, 02 Dec 2008 08:06:52 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xm0-0007YW-92 for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:52 +0000 Message-Id: <20081202160652.147347000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:48 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 18/22] kill xfs_unmount_flush Subject: [patch 18/22] kill xfs_unmount_flush Content-Disposition: inline; filename=xfs-kill-xfs_unmountfs_flush 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: 1228234012 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com There's almost nothing left in this function, instead remove the IRELE on the real times inodes and the call to XFS_QM_UNMOUNT into xfs_unmountfs. For the regular unmount case that means it now also happenes after dmapi notification, but otherwise there is no difference in behaviour. Signed-off-by: Christoph Hellwig Index: xfs-master/fs/xfs/xfs_mount.c =================================================================== --- xfs-master.orig/fs/xfs/xfs_mount.c 2008-12-01 19:28:02.000000000 +0100 +++ xfs-master/fs/xfs/xfs_mount.c 2008-12-01 19:28:11.000000000 +0100 @@ -1220,6 +1220,16 @@ xfs_unmountfs( __uint64_t resblks; int error; + /* + * Release dquot that rootinode, rbmino and rsumino might be holding, + * and release the quota inodes. + */ + XFS_QM_UNMOUNT(mp); + + if (mp->m_rbmip) + IRELE(mp->m_rbmip); + if (mp->m_rsumip) + IRELE(mp->m_rsumip); IRELE(mp->m_rootip); /* Index: xfs-master/fs/xfs/xfs_mount.h =================================================================== --- xfs-master.orig/fs/xfs/xfs_mount.h 2008-12-01 19:28:08.000000000 +0100 +++ xfs-master/fs/xfs/xfs_mount.h 2008-12-01 19:28:11.000000000 +0100 @@ -510,7 +510,6 @@ extern void xfs_mountfs_check_barriers(x extern void xfs_unmountfs(xfs_mount_t *); extern int xfs_unmountfs_writesb(xfs_mount_t *); -extern int xfs_unmount_flush(xfs_mount_t *, int); extern int xfs_mod_incore_sb(xfs_mount_t *, xfs_sb_field_t, int64_t, int); extern int xfs_mod_incore_sb_unlocked(xfs_mount_t *, xfs_sb_field_t, int64_t, int); Index: xfs-master/fs/xfs/xfs_vfsops.c =================================================================== --- xfs-master.orig/fs/xfs/xfs_vfsops.c 2008-12-01 19:28:07.000000000 +0100 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2000-2005 Silicon Graphics, Inc. - * All Rights Reserved. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it would be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -#include "xfs.h" -#include "xfs_fs.h" -#include "xfs_types.h" -#include "xfs_bit.h" -#include "xfs_log.h" -#include "xfs_inum.h" -#include "xfs_trans.h" -#include "xfs_sb.h" -#include "xfs_ag.h" -#include "xfs_dir2.h" -#include "xfs_dmapi.h" -#include "xfs_mount.h" -#include "xfs_da_btree.h" -#include "xfs_bmap_btree.h" -#include "xfs_ialloc_btree.h" -#include "xfs_alloc_btree.h" -#include "xfs_dir2_sf.h" -#include "xfs_attr_sf.h" -#include "xfs_dinode.h" -#include "xfs_inode.h" -#include "xfs_inode_item.h" -#include "xfs_btree.h" -#include "xfs_alloc.h" -#include "xfs_ialloc.h" -#include "xfs_quota.h" -#include "xfs_error.h" -#include "xfs_bmap.h" -#include "xfs_rw.h" -#include "xfs_buf_item.h" -#include "xfs_log_priv.h" -#include "xfs_dir2_trace.h" -#include "xfs_extfree_item.h" -#include "xfs_acl.h" -#include "xfs_attr.h" -#include "xfs_mru_cache.h" -#include "xfs_filestream.h" -#include "xfs_fsops.h" -#include "xfs_vnodeops.h" -#include "xfs_utils.h" -#include "xfs_sync.h" - - -/* - * xfs_unmount_flush implements a set of flush operation on special - * inodes, which are needed as a separate set of operations so that - * they can be called as part of relocation process. - */ -int -xfs_unmount_flush( - xfs_mount_t *mp, /* Mount structure we are getting - rid of. */ - int relocation) /* Called from vfs relocation. */ -{ - /* - * Release dquot that rootinode, rbmino and rsumino might be holding, - * flush and purge the quota inodes. - */ - XFS_QM_UNMOUNT(mp); - - if (mp->m_rbmip) - IRELE(mp->m_rbmip); - if (mp->m_rsumip) - IRELE(mp->m_rsumip); - - return 0; -} Index: xfs-master/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_super.c 2008-12-01 19:28:02.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_super.c 2008-12-01 19:28:11.000000000 +0100 @@ -1043,7 +1043,6 @@ xfs_fs_put_super( struct xfs_mount *mp = XFS_M(sb); struct xfs_inode *rip = mp->m_rootip; int unmount_event_flags = 0; - int error; xfs_syncd_stop(mp); xfs_sync_inodes(mp, SYNC_ATTR|SYNC_DELWRI); @@ -1071,8 +1070,6 @@ xfs_fs_put_super( xfs_filestream_unmount(mp); XFS_bflush(mp->m_ddev_targp); - error = xfs_unmount_flush(mp, 0); - WARN_ON(error); if (mp->m_flags & XFS_MOUNT_DMAPI) { XFS_SEND_UNMOUNT(mp, rip, DM_RIGHT_NULL, 0, 0, @@ -1535,8 +1532,6 @@ xfs_fs_fill_super( xfs_filestream_unmount(mp); XFS_bflush(mp->m_ddev_targp); - error = xfs_unmount_flush(mp, 0); - WARN_ON(error); xfs_unmountfs(mp); goto out_free_sb; Index: xfs-master/fs/xfs/Makefile =================================================================== --- xfs-master.orig/fs/xfs/Makefile 2008-12-01 19:26:35.000000000 +0100 +++ xfs-master/fs/xfs/Makefile 2008-12-01 19:28:11.000000000 +0100 @@ -85,7 +85,6 @@ xfs-y += xfs_alloc.o \ xfs_trans_inode.o \ xfs_trans_item.o \ xfs_utils.o \ - xfs_vfsops.o \ xfs_vnodeops.o \ xfs_rw.o \ xfs_dmops.o \ -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:06:53 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.1 required=5.0 tests=AWL,BAYES_00,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 mB2G6ra0031671 for ; Tue, 2 Dec 2008 10:06:53 -0600 X-ASG-Debug-ID: 1228234012-5c7d02620000-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 0C3F3164F1BF for ; Tue, 2 Dec 2008 08:06:52 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id ZEn7HJiDezutfwce for ; Tue, 02 Dec 2008 08:06:52 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xm0-0007dc-Ls for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:52 +0000 Message-Id: <20081202160652.542003000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:50 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 20/22] move vn_iowait / vn_iowake into xfs_aops.c Subject: [patch 20/22] move vn_iowait / vn_iowake into xfs_aops.c Content-Disposition: inline; filename=xfs-move-vn_iowait 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: 1228234013 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com The whole machinery to wait on I/O completion is related to the I/O path and should be there instead of in xfs_vnode.c. Also give the functions more descriptive names. Signed-off-by: Christoph Hellwig Index: xfs-master/fs/xfs/linux-2.6/xfs_aops.c =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_aops.c 2008-12-02 11:26:38.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_aops.c 2008-12-02 11:26:47.000000000 +0100 @@ -42,6 +42,40 @@ #include #include + +/* + * Prime number of hash buckets since address is used as the key. + */ +#define NVSYNC 37 +#define to_ioend_wq(v) (&xfs_ioend_wq[((unsigned long)v) % NVSYNC]) +static wait_queue_head_t xfs_ioend_wq[NVSYNC]; + +void __init +xfs_ioend_init(void) +{ + int i; + + for (i = 0; i < NVSYNC; i++) + init_waitqueue_head(&xfs_ioend_wq[i]); +} + +void +xfs_ioend_wait( + xfs_inode_t *ip) +{ + wait_queue_head_t *wq = to_ioend_wq(ip); + + wait_event(*wq, (atomic_read(&ip->i_iocount) == 0)); +} + +STATIC void +xfs_ioend_wake( + xfs_inode_t *ip) +{ + if (atomic_dec_and_test(&ip->i_iocount)) + wake_up(to_ioend_wq(ip)); +} + STATIC void xfs_count_page_state( struct page *page, @@ -164,7 +198,7 @@ xfs_destroy_ioend( __FILE__, __LINE__); } - vn_iowake(ip); + xfs_ioend_wake(ip); mempool_free(ioend, xfs_ioend_pool); } @@ -516,7 +550,7 @@ xfs_cancel_ioend( unlock_buffer(bh); } while ((bh = next_bh) != NULL); - vn_iowake(XFS_I(ioend->io_inode)); + xfs_ioend_wake(XFS_I(ioend->io_inode)); mempool_free(ioend, xfs_ioend_pool); } while ((ioend = next) != NULL); } Index: xfs-master/fs/xfs/linux-2.6/xfs_aops.h =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_aops.h 2008-12-02 11:24:22.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_aops.h 2008-12-02 11:26:47.000000000 +0100 @@ -43,4 +43,7 @@ typedef struct xfs_ioend { extern const struct address_space_operations xfs_address_space_operations; extern int xfs_get_blocks(struct inode *, sector_t, struct buffer_head *, int); +extern void xfs_ioend_init(void); +extern void xfs_ioend_wait(struct xfs_inode *); + #endif /* __XFS_AOPS_H__ */ Index: xfs-master/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_super.c 2008-12-02 11:26:30.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_super.c 2008-12-02 11:26:47.000000000 +0100 @@ -1822,7 +1822,7 @@ init_xfs_fs(void) XFS_BUILD_OPTIONS " enabled\n"); ktrace_init(64); - vn_init(); + xfs_ioend_init(); xfs_dir_startup(); error = xfs_init_zones(); Index: xfs-master/fs/xfs/linux-2.6/xfs_sync.c =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_sync.c 2008-12-02 11:24:22.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_sync.c 2008-12-02 11:26:47.000000000 +0100 @@ -133,7 +133,7 @@ xfs_sync_inodes_ag( lock_flags |= XFS_IOLOCK_SHARED; error = xfs_flush_pages(ip, 0, -1, fflag, FI_NONE); if (flags & SYNC_IOWAIT) - vn_iowait(ip); + xfs_ioend_wait(ip); } xfs_ilock(ip, XFS_ILOCK_SHARED); Index: xfs-master/fs/xfs/linux-2.6/xfs_vnode.c =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_vnode.c 2008-12-02 11:26:38.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_vnode.c 2008-12-02 11:26:47.000000000 +0100 @@ -32,40 +32,6 @@ #include "xfs_mount.h" -/* - * Dedicated vnode inactive/reclaim sync wait queues. - * Prime number of hash buckets since address is used as the key. - */ -#define NVSYNC 37 -#define vptosync(v) (&vsync[((unsigned long)v) % NVSYNC]) -static wait_queue_head_t vsync[NVSYNC]; - -void __init -vn_init(void) -{ - int i; - - for (i = 0; i < NVSYNC; i++) - init_waitqueue_head(&vsync[i]); -} - -void -vn_iowait( - xfs_inode_t *ip) -{ - wait_queue_head_t *wq = vptosync(ip); - - wait_event(*wq, (atomic_read(&ip->i_iocount) == 0)); -} - -void -vn_iowake( - xfs_inode_t *ip) -{ - if (atomic_dec_and_test(&ip->i_iocount)) - wake_up(vptosync(ip)); -} - #ifdef XFS_INODE_TRACE #define KTRACE_ENTER(ip, vk, s, line, ra) \ Index: xfs-master/fs/xfs/linux-2.6/xfs_vnode.h =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_vnode.h 2008-12-02 11:26:38.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_vnode.h 2008-12-02 11:26:47.000000000 +0100 @@ -54,16 +54,6 @@ struct attrlist_cursor_kern; Prevent VM access to the pages until the operation completes. */ - -extern void vn_init(void); - -/* - * Yeah, these don't take vnode anymore at all, all this should be - * cleaned up at some point. - */ -extern void vn_iowait(struct xfs_inode *ip); -extern void vn_iowake(struct xfs_inode *ip); - #define IHOLD(ip) \ do { \ ASSERT(atomic_read(&VFS_I(ip)->i_count) > 0) ; \ Index: xfs-master/fs/xfs/xfs_inode.c =================================================================== --- xfs-master.orig/fs/xfs/xfs_inode.c 2008-12-02 11:24:22.000000000 +0100 +++ xfs-master/fs/xfs/xfs_inode.c 2008-12-02 11:26:47.000000000 +0100 @@ -1322,8 +1322,8 @@ xfs_itrunc_trace( * direct I/O with the truncate operation. Also, because we hold * the IOLOCK in exclusive mode, we prevent new direct I/Os from being * started until the truncate completes and drops the lock. Essentially, - * the vn_iowait() call forms an I/O barrier that provides strict ordering - * between direct I/Os and the truncate operation. + * the xfs_ioend_wait() call forms an I/O barrier that provides strict + * ordering between direct I/Os and the truncate operation. * * The flags parameter can have either the value XFS_ITRUNC_DEFINITE * or XFS_ITRUNC_MAYBE. The XFS_ITRUNC_MAYBE value should be used @@ -1354,7 +1354,7 @@ xfs_itruncate_start( /* wait for the completion of any pending DIOs */ if (new_size == 0 || new_size < ip->i_size) - vn_iowait(ip); + xfs_ioend_wait(ip); /* * Call toss_pages or flushinval_pages to get rid of pages Index: xfs-master/fs/xfs/xfs_vnodeops.c =================================================================== --- xfs-master.orig/fs/xfs/xfs_vnodeops.c 2008-12-02 11:24:22.000000000 +0100 +++ xfs-master/fs/xfs/xfs_vnodeops.c 2008-12-02 11:26:47.000000000 +0100 @@ -338,7 +338,7 @@ xfs_setattr( } /* wait for all I/O to complete */ - vn_iowait(ip); + xfs_ioend_wait(ip); if (!code) code = xfs_itruncate_data(ip, iattr->ia_size); @@ -2758,7 +2758,7 @@ xfs_reclaim( return 0; } - vn_iowait(ip); + xfs_ioend_wait(ip); ASSERT(XFS_FORCED_SHUTDOWN(ip->i_mount) || ip->i_delayed_blks == 0); @@ -3149,7 +3149,8 @@ xfs_free_file_space( need_iolock = 0; if (need_iolock) { xfs_ilock(ip, XFS_IOLOCK_EXCL); - vn_iowait(ip); /* wait for the completion of any pending DIOs */ + /* wait for the completion of any pending DIOs */ + xfs_ioend_wait(ip); } rounding = max_t(uint, 1 << mp->m_sb.sb_blocklog, PAGE_CACHE_SIZE); -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:07:21 2008 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 mB2G7Lox031738 for ; Tue, 2 Dec 2008 10:07:21 -0600 X-ASG-Debug-ID: 1228234040-60d502620000-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 F10A3164F1E0 for ; Tue, 2 Dec 2008 08:07:20 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id MgcLIBZ1B2LVMaLy for ; Tue, 02 Dec 2008 08:07:20 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xly-0007Jd-4q for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:50 +0000 Message-Id: <20081202160650.066779000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:34 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 04/22] remove unused prototypes for xfs_ihash_init / xfs_ihash_free Subject: [patch 04/22] remove unused prototypes for xfs_ihash_init / xfs_ihash_free Content-Disposition: inline; filename=xfs-kill-xfs_ihash_init-exit 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: 1228234040 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Signed-off-by: Christoph Hellwig Index: linux-2.6-xfs/fs/xfs/xfs_inode.h =================================================================== --- linux-2.6-xfs.orig/fs/xfs/xfs_inode.h 2008-11-19 20:07:01.000000000 +0100 +++ linux-2.6-xfs/fs/xfs/xfs_inode.h 2008-11-19 20:07:05.000000000 +0100 @@ -493,8 +493,6 @@ static inline void xfs_ifunlock(xfs_inod /* * xfs_iget.c prototypes. */ -void xfs_ihash_init(struct xfs_mount *); -void xfs_ihash_free(struct xfs_mount *); xfs_inode_t *xfs_inode_incore(struct xfs_mount *, xfs_ino_t, struct xfs_trans *); int xfs_iget(struct xfs_mount *, struct xfs_trans *, xfs_ino_t, -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:07:52 2008 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 mB2G7qJg031846 for ; Tue, 2 Dec 2008 10:07:52 -0600 X-ASG-Debug-ID: 1228234071-60da02680000-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 088C3164F1F7 for ; Tue, 2 Dec 2008 08:07:51 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id mjS26WKDOZhmpU2b for ; Tue, 02 Dec 2008 08:07:51 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xm1-0007eb-0g for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:53 +0000 Message-Id: <20081202160652.907502000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:52 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 22/22] use inode_change_ok for setattr permission checking Subject: [patch 22/22] use inode_change_ok for setattr permission checking Content-Disposition: inline; filename=xfs-setattr-use-inode_change_ok 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: 1228234072 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Instead of implementing our own checks use inode_change_ok to check for necessary permission in setattr. There is a slight change in behaviour as inode_change_ok doesn't allow i_mode updates to add the suid or sgid without superuser privilegues while the old XFS code just stripped away those bits from the file mode. (First sent on Semptember 29th) Signed-off-by: Christoph Hellwig Index: xfs-master/fs/xfs/xfs_vnodeops.c =================================================================== --- xfs-master.orig/fs/xfs/xfs_vnodeops.c 2008-12-02 14:00:52.000000000 +0100 +++ xfs-master/fs/xfs/xfs_vnodeops.c 2008-12-02 14:00:52.000000000 +0100 @@ -70,7 +70,6 @@ xfs_setattr( gid_t gid=0, igid=0; int timeflags = 0; struct xfs_dquot *udqp, *gdqp, *olddquot1, *olddquot2; - int file_owner; int need_iolock = 1; xfs_itrace_entry(ip); @@ -81,6 +80,10 @@ xfs_setattr( if (XFS_FORCED_SHUTDOWN(mp)) return XFS_ERROR(EIO); + code = -inode_change_ok(inode, iattr); + if (code) + return code; + olddquot1 = olddquot2 = NULL; udqp = gdqp = NULL; @@ -158,56 +161,6 @@ xfs_setattr( xfs_ilock(ip, lock_flags); - /* boolean: are we the file owner? */ - file_owner = (current_fsuid() == ip->i_d.di_uid); - - /* - * Change various properties of a file. - * Only the owner or users with CAP_FOWNER - * capability may do these things. - */ - if (mask & (ATTR_MODE|ATTR_UID|ATTR_GID)) { - /* - * CAP_FOWNER overrides the following restrictions: - * - * The user ID of the calling process must be equal - * to the file owner ID, except in cases where the - * CAP_FSETID capability is applicable. - */ - if (!file_owner && !capable(CAP_FOWNER)) { - code = XFS_ERROR(EPERM); - goto error_return; - } - - /* - * CAP_FSETID overrides the following restrictions: - * - * The effective user ID of the calling process shall match - * the file owner when setting the set-user-ID and - * set-group-ID bits on that file. - * - * The effective group ID or one of the supplementary group - * IDs of the calling process shall match the group owner of - * the file when setting the set-group-ID bit on that file - */ - if (mask & ATTR_MODE) { - mode_t m = 0; - - if ((iattr->ia_mode & S_ISUID) && !file_owner) - m |= S_ISUID; - if ((iattr->ia_mode & S_ISGID) && - !in_group_p((gid_t)ip->i_d.di_gid)) - m |= S_ISGID; -#if 0 - /* Linux allows this, Irix doesn't. */ - if ((iattr->ia_mode & S_ISVTX) && !S_ISDIR(ip->i_d.di_mode)) - m |= S_ISVTX; -#endif - if (m && !capable(CAP_FSETID)) - iattr->ia_mode &= ~m; - } - } - /* * Change file ownership. Must be the owner or privileged. */ @@ -224,22 +177,6 @@ xfs_setattr( uid = (mask & ATTR_UID) ? iattr->ia_uid : iuid; /* - * CAP_CHOWN overrides the following restrictions: - * - * If _POSIX_CHOWN_RESTRICTED is defined, this capability - * shall override the restriction that a process cannot - * change the user ID of a file it owns and the restriction - * that the group ID supplied to the chown() function - * shall be equal to either the group ID or one of the - * supplementary group IDs of the calling process. - */ - if ((iuid != uid || - (igid != gid && !in_group_p((gid_t)gid))) && - !capable(CAP_CHOWN)) { - code = XFS_ERROR(EPERM); - goto error_return; - } - /* * Do a quota reservation only if uid/gid is actually * going to change. */ @@ -276,36 +213,22 @@ xfs_setattr( code = XFS_ERROR(EINVAL); goto error_return; } + /* * Make sure that the dquots are attached to the inode. */ - if ((code = XFS_QM_DQATTACH(mp, ip, XFS_QMOPT_ILOCKED))) + code = XFS_QM_DQATTACH(mp, ip, XFS_QMOPT_ILOCKED); + if (code) goto error_return; - } - - /* - * Change file access or modified times. - */ - if (mask & (ATTR_ATIME|ATTR_MTIME)) { - if (!file_owner) { - if ((mask & (ATTR_MTIME_SET|ATTR_ATIME_SET)) && - !capable(CAP_FOWNER)) { - code = XFS_ERROR(EPERM); - goto error_return; - } - } - } - /* - * Now we can make the changes. Before we join the inode - * to the transaction, if ATTR_SIZE is set then take care of - * the part of the truncation that must be done without the - * inode lock. This needs to be done before joining the inode - * to the transaction, because the inode cannot be unlocked - * once it is a part of the transaction. - */ - if (mask & ATTR_SIZE) { - code = 0; + /* + * Now we can make the changes. Before we join the inode + * to the transaction, if ATTR_SIZE is set then take care of + * the part of the truncation that must be done without the + * inode lock. This needs to be done before joining the inode + * to the transaction, because the inode cannot be unlocked + * once it is a part of the transaction. + */ if (iattr->ia_size > ip->i_size) { /* * Do the first part of growing a file: zero any data @@ -360,17 +283,10 @@ xfs_setattr( } commit_flags = XFS_TRANS_RELEASE_LOG_RES; xfs_ilock(ip, XFS_ILOCK_EXCL); - } - if (tp) { xfs_trans_ijoin(tp, ip, lock_flags); xfs_trans_ihold(tp, ip); - } - /* - * Truncate file. Must have write permission and not be a directory. - */ - if (mask & ATTR_SIZE) { /* * Only change the c/mtime if we are changing the size * or we are explicitly asked to change it. This handles @@ -410,20 +326,9 @@ xfs_setattr( */ xfs_iflags_set(ip, XFS_ITRUNCATED); } - } - - /* - * Change file access modes. - */ - if (mask & ATTR_MODE) { - ip->i_d.di_mode &= S_IFMT; - ip->i_d.di_mode |= iattr->ia_mode & ~S_IFMT; - - inode->i_mode &= S_IFMT; - inode->i_mode |= iattr->ia_mode & ~S_IFMT; - - xfs_trans_log_inode (tp, ip, XFS_ILOG_CORE); - timeflags |= XFS_ICHGTIME_CHG; + } else if (tp) { + xfs_trans_ijoin(tp, ip, lock_flags); + xfs_trans_ihold(tp, ip); } /* @@ -471,6 +376,24 @@ xfs_setattr( timeflags |= XFS_ICHGTIME_CHG; } + /* + * Change file access modes. + */ + if (mask & ATTR_MODE) { + umode_t mode = iattr->ia_mode; + + if (!in_group_p(inode->i_gid) && !capable(CAP_FSETID)) + mode &= ~S_ISGID; + + ip->i_d.di_mode &= S_IFMT; + ip->i_d.di_mode |= mode & ~S_IFMT; + + inode->i_mode &= S_IFMT; + inode->i_mode |= mode & ~S_IFMT; + + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); + timeflags |= XFS_ICHGTIME_CHG; + } /* * Change file access or modified times. -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:07:51 2008 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 mB2G7pUP031826 for ; Tue, 2 Dec 2008 10:07:51 -0600 X-ASG-Debug-ID: 1228234070-5c7d026f0000-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 00D8C164F1EF for ; Tue, 2 Dec 2008 08:07:50 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id qXvYRtMlLi4hFPHw for ; Tue, 02 Dec 2008 08:07:50 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xlz-0007Qj-24 for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:51 +0000 Message-Id: <20081202160650.974883000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:40 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 10/22] kill dead quota flags Subject: [patch 10/22] kill dead quota flags Content-Disposition: inline; filename=xfs-kill-dead-quota-flags 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: 1228234071 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Signed-off-by: Christoph Hellwig Index: xfs-master/fs/xfs/xfs_quota.h =================================================================== --- xfs-master.orig/fs/xfs/xfs_quota.h 2008-12-01 19:26:03.000000000 +0100 +++ xfs-master/fs/xfs/xfs_quota.h 2008-12-01 19:27:41.000000000 +0100 @@ -84,11 +84,9 @@ typedef struct xfs_dqblk { #define XFS_DQ_USER 0x0001 /* a user quota */ #define XFS_DQ_PROJ 0x0002 /* project quota */ #define XFS_DQ_GROUP 0x0004 /* a group quota */ -#define XFS_DQ_FLOCKED 0x0008 /* flush lock taken */ -#define XFS_DQ_DIRTY 0x0010 /* dquot is dirty */ -#define XFS_DQ_WANT 0x0020 /* for lookup/reclaim race */ -#define XFS_DQ_INACTIVE 0x0040 /* dq off mplist & hashlist */ -#define XFS_DQ_MARKER 0x0080 /* sentinel */ +#define XFS_DQ_DIRTY 0x0008 /* dquot is dirty */ +#define XFS_DQ_WANT 0x0010 /* for lookup/reclaim race */ +#define XFS_DQ_INACTIVE 0x0020 /* dq off mplist & hashlist */ #define XFS_DQ_ALLTYPES (XFS_DQ_USER|XFS_DQ_PROJ|XFS_DQ_GROUP) -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:07:22 2008 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 mB2G7MGk031743 for ; Tue, 2 Dec 2008 10:07:22 -0600 X-ASG-Debug-ID: 1228234041-5c7c02a60000-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 AF100164F1E2 for ; Tue, 2 Dec 2008 08:07:21 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id qRs4QcLXk3cHS6nI for ; Tue, 02 Dec 2008 08:07:21 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xly-0007PQ-TY for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:50 +0000 Message-Id: <20081202160650.829703000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:39 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 09/22] remove dead code from sv_t implementation Subject: [patch 09/22] remove dead code from sv_t implementation Content-Disposition: inline; filename=xfs-simplify-sv 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: 1228234041 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Signed-off-by: Christoph Hellwig Index: linux-2.6-xfs/fs/xfs/linux-2.6/sv.h =================================================================== --- linux-2.6-xfs.orig/fs/xfs/linux-2.6/sv.h 2008-09-29 10:45:36.000000000 +0200 +++ linux-2.6-xfs/fs/xfs/linux-2.6/sv.h 2008-09-29 10:49:16.000000000 +0200 @@ -32,23 +32,15 @@ typedef struct sv_s { wait_queue_head_t waiters; } sv_t; -#define SV_FIFO 0x0 /* sv_t is FIFO type */ -#define SV_LIFO 0x2 /* sv_t is LIFO type */ -#define SV_PRIO 0x4 /* sv_t is PRIO type */ -#define SV_KEYED 0x6 /* sv_t is KEYED type */ -#define SV_DEFAULT SV_FIFO - - -static inline void _sv_wait(sv_t *sv, spinlock_t *lock, int state, - unsigned long timeout) +static inline void _sv_wait(sv_t *sv, spinlock_t *lock) { DECLARE_WAITQUEUE(wait, current); add_wait_queue_exclusive(&sv->waiters, &wait); - __set_current_state(state); + __set_current_state(TASK_UNINTERRUPTIBLE); spin_unlock(lock); - schedule_timeout(timeout); + schedule(); remove_wait_queue(&sv->waiters, &wait); } @@ -58,13 +50,7 @@ static inline void _sv_wait(sv_t *sv, sp #define sv_destroy(sv) \ /*NOTHING*/ #define sv_wait(sv, pri, lock, s) \ - _sv_wait(sv, lock, TASK_UNINTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT) -#define sv_wait_sig(sv, pri, lock, s) \ - _sv_wait(sv, lock, TASK_INTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT) -#define sv_timedwait(sv, pri, lock, s, svf, ts, rts) \ - _sv_wait(sv, lock, TASK_UNINTERRUPTIBLE, timespec_to_jiffies(ts)) -#define sv_timedwait_sig(sv, pri, lock, s, svf, ts, rts) \ - _sv_wait(sv, lock, TASK_INTERRUPTIBLE, timespec_to_jiffies(ts)) + _sv_wait(sv, lock) #define sv_signal(sv) \ wake_up(&(sv)->waiters) #define sv_broadcast(sv) \ -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:07:52 2008 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_62 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 mB2G7pWF031831 for ; Tue, 2 Dec 2008 10:07:52 -0600 X-ASG-Debug-ID: 1228234071-5c7b028b0000-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 535D5164F1EF for ; Tue, 2 Dec 2008 08:07:51 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 1k8dUtqvCRiEd8VI for ; Tue, 02 Dec 2008 08:07:51 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xlz-0007W8-Ua for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:51 +0000 Message-Id: <20081202160651.861936000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:46 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 16/22] use xfs_trans_ijoin in xfs_trans_iget Subject: [patch 16/22] use xfs_trans_ijoin in xfs_trans_iget Content-Disposition: inline; filename=xfs-cleanup-xfs_trans_iget 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: 1228234071 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Use xfs_trans_ijoin in xfs_trans_iget in case we need to join an inode into a transaction instead of opencoding it. Based on a discussion with and an incomplete patch from Niv Sardi. Signed-off-by: Christoph Hellwig Index: linux-2.6-xfs/fs/xfs/xfs_trans_inode.c =================================================================== --- linux-2.6-xfs.orig/fs/xfs/xfs_trans_inode.c 2008-11-19 19:43:42.000000000 +0100 +++ linux-2.6-xfs/fs/xfs/xfs_trans_inode.c 2008-11-19 19:55:45.000000000 +0100 @@ -85,7 +85,6 @@ xfs_trans_iget( { int error; xfs_inode_t *ip; - xfs_inode_log_item_t *iip; /* * If the transaction pointer is NULL, just call the normal @@ -138,34 +137,7 @@ xfs_trans_iget( } ASSERT(ip != NULL); - /* - * Get a log_item_desc to point at the new item. - */ - if (ip->i_itemp == NULL) - xfs_inode_item_init(ip, mp); - iip = ip->i_itemp; - (void) xfs_trans_add_item(tp, (xfs_log_item_t *)(iip)); - - xfs_trans_inode_broot_debug(ip); - - /* - * If the IO lock has been acquired, mark that in - * the inode log item so we'll know to unlock it - * when the transaction commits. - */ - ASSERT(iip->ili_flags == 0); - if (lock_flags & XFS_IOLOCK_EXCL) { - iip->ili_flags |= XFS_ILI_IOLOCKED_EXCL; - } else if (lock_flags & XFS_IOLOCK_SHARED) { - iip->ili_flags |= XFS_ILI_IOLOCKED_SHARED; - } - - /* - * Initialize i_transp so we can find it with xfs_inode_incore() - * above. - */ - ip->i_transp = tp; - + xfs_trans_ijoin(tp, ip, lock_flags); *ipp = ip; return 0; } -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:11:50 2008 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 mB2GBoUJ032511 for ; Tue, 2 Dec 2008 10:11:50 -0600 X-ASG-Debug-ID: 1228234309-5c7c02c80000-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 29EEE164F2B1 for ; Tue, 2 Dec 2008 08:11:50 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 6FDwE6X4dV77P1EB for ; Tue, 02 Dec 2008 08:11:50 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xlx-0007Gl-Nt for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:49 +0000 Message-Id: <20081202160649.658660000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:31 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 01/22] fix compile on 32 bit systems Subject: [patch 01/22] fix compile on 32 bit systems Content-Disposition: inline; filename=xfs-fix-32bit-compile 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: 1228234310 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com The recent compat patches make xfs_file.c include xfs_ioctl32.h unconditional, which breaks the build on 32 bit systems which don't have the various compat defintions. Remove the include and move the defintion of xfs_file_compat_ioctl to xfs_ioctl.h so that we can avoid including all the compat defintions in xfs_file.c Signed-off-by: Christoph Hellwig Index: xfs-master/fs/xfs/linux-2.6/xfs_file.c =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_file.c 2008-12-02 11:43:38.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_file.c 2008-12-02 11:44:06.000000000 +0100 @@ -36,9 +36,9 @@ #include "xfs_inode.h" #include "xfs_error.h" #include "xfs_rw.h" -#include "xfs_ioctl32.h" #include "xfs_vnodeops.h" #include "xfs_da_btree.h" +#include "xfs_ioctl.h" #include #include Index: xfs-master/fs/xfs/linux-2.6/xfs_ioctl.h =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_ioctl.h 2008-12-02 11:44:10.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_ioctl.h 2008-12-02 11:44:52.000000000 +0100 @@ -67,4 +67,16 @@ xfs_attrmulti_attr_remove( char *name, __uint32_t flags); +extern long +xfs_file_compat_ioctl( + struct file *file, + unsigned int cmd, + unsigned long arg); + +extern long +xfs_file_compat_ioctl_invis( + struct file *file, + unsigned int cmd, + unsigned long arg); + #endif Index: xfs-master/fs/xfs/linux-2.6/xfs_ioctl32.h =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_ioctl32.h 2008-12-02 11:44:10.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_ioctl32.h 2008-12-02 11:44:18.000000000 +0100 @@ -20,9 +20,6 @@ #include -extern long xfs_file_compat_ioctl(struct file *, unsigned, unsigned long); -extern long xfs_file_compat_invis_ioctl(struct file *, unsigned, unsigned long); - /* * on 32-bit arches, ioctl argument structures may have different sizes * and/or alignment. We define compat structures which match the -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:11:51 2008 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_65 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 mB2GBpd9032518 for ; Tue, 2 Dec 2008 10:11:51 -0600 X-ASG-Debug-ID: 1228234310-5c7d02930000-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 33C86164F2B3 for ; Tue, 2 Dec 2008 08:11:51 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id insYWziRYCrnhPJF for ; Tue, 02 Dec 2008 08:11:51 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xly-0007OP-OF for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:50 +0000 Message-Id: <20081202160650.663976000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:38 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 08/22] reduce l_icloglock roundtrips Subject: [patch 08/22] reduce l_icloglock roundtrips Content-Disposition: inline; filename=xfs-reduce-log-lock-roundtrips 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: 1228234311 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com All but one caller of xlog_state_want_sync drop and re-acquire l_icloglock around the call to it, just so that xlog_state_want_sync can acquire and drop it. Move all lock operation out of l_icloglock and assert that the lock is held when it is called. Note that it would make sense to extende this scheme to xlog_state_release_iclog, but the locking in there is more complicated and we'd like to keep the atomic_dec_and_lock optmization for those callers not having l_icloglock yet. (First sent on Semptember 29th) Signed-off-by: Christoph Hellwig Index: xfs-master/fs/xfs/xfs_log.c =================================================================== --- xfs-master.orig/fs/xfs/xfs_log.c 2008-12-02 11:07:00.000000000 +0100 +++ xfs-master/fs/xfs/xfs_log.c 2008-12-02 11:13:33.000000000 +0100 @@ -729,8 +729,8 @@ xfs_log_unmount_write(xfs_mount_t *mp) spin_lock(&log->l_icloglock); iclog = log->l_iclog; atomic_inc(&iclog->ic_refcnt); - spin_unlock(&log->l_icloglock); xlog_state_want_sync(log, iclog); + spin_unlock(&log->l_icloglock); error = xlog_state_release_iclog(log, iclog); spin_lock(&log->l_icloglock); @@ -767,9 +767,9 @@ xfs_log_unmount_write(xfs_mount_t *mp) spin_lock(&log->l_icloglock); iclog = log->l_iclog; atomic_inc(&iclog->ic_refcnt); - spin_unlock(&log->l_icloglock); xlog_state_want_sync(log, iclog); + spin_unlock(&log->l_icloglock); error = xlog_state_release_iclog(log, iclog); spin_lock(&log->l_icloglock); @@ -1984,7 +1984,9 @@ xlog_write(xfs_mount_t * mp, if (iclog->ic_size - log_offset <= sizeof(xlog_op_header_t)) { xlog_state_finish_copy(log, iclog, record_cnt, data_cnt); record_cnt = data_cnt = 0; + spin_lock(&log->l_icloglock); xlog_state_want_sync(log, iclog); + spin_unlock(&log->l_icloglock); if (commit_iclog) { ASSERT(flags & XLOG_COMMIT_TRANS); *commit_iclog = iclog; @@ -3193,7 +3195,7 @@ try_again: STATIC void xlog_state_want_sync(xlog_t *log, xlog_in_core_t *iclog) { - spin_lock(&log->l_icloglock); + ASSERT(spin_is_locked(&log->l_icloglock)); if (iclog->ic_state == XLOG_STATE_ACTIVE) { xlog_state_switch_iclogs(log, iclog, 0); @@ -3201,10 +3203,7 @@ xlog_state_want_sync(xlog_t *log, xlog_i ASSERT(iclog->ic_state & (XLOG_STATE_WANT_SYNC|XLOG_STATE_IOERROR)); } - - spin_unlock(&log->l_icloglock); -} /* xlog_state_want_sync */ - +} /***************************************************************************** -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:11:52 2008 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 mB2GBqAM032525 for ; Tue, 2 Dec 2008 10:11:52 -0600 X-ASG-Debug-ID: 1228234311-5c7b02a70000-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 C7E0F164F2B5 for ; Tue, 2 Dec 2008 08:11:51 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 0oKyr8JAT7b1fql1 for ; Tue, 02 Dec 2008 08:11:51 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xlz-0007TT-C3 for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:51 +0000 Message-Id: <20081202160651.264876000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:42 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 12/22] kill dead inode flags Subject: [patch 12/22] kill dead inode flags Content-Disposition: inline; filename=xfs-kill-dead-inode-flags 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: 1228234311 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com There are a few inode flags around that aren't used anywhere, so remove them. Also update xfsidbg to display all used inode flags correctly. (First sent on July 23nd) Signed-off-by: Christoph Hellwig Index: xfs-master/fs/xfs/linux-2.6/xfs_aops.c =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_aops.c 2008-12-02 11:12:44.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_aops.c 2008-12-02 11:15:28.000000000 +0100 @@ -317,14 +317,9 @@ xfs_map_blocks( xfs_iomap_t *mapp, int flags) { - xfs_inode_t *ip = XFS_I(inode); - int error, nmaps = 1; + int nmaps = 1; - error = xfs_iomap(ip, offset, count, - flags, mapp, &nmaps); - if (!error && (flags & (BMAPI_WRITE|BMAPI_ALLOCATE))) - xfs_iflags_set(ip, XFS_IMODIFIED); - return -error; + return -xfs_iomap(XFS_I(inode), offset, count, flags, mapp, &nmaps); } STATIC_INLINE int Index: xfs-master/fs/xfs/linux-2.6/xfs_file.c =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_file.c 2008-12-02 11:07:08.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_file.c 2008-12-02 11:15:28.000000000 +0100 @@ -283,11 +283,8 @@ xfs_file_ioctl( unsigned int cmd, unsigned long p) { - int error; struct inode *inode = filp->f_path.dentry->d_inode; - error = xfs_ioctl(XFS_I(inode), filp, 0, cmd, (void __user *)p); - xfs_iflags_set(XFS_I(inode), XFS_IMODIFIED); /* NOTE: some of the ioctl's return positive #'s as a * byte count indicating success, such as @@ -295,7 +292,7 @@ xfs_file_ioctl( * like most other routines. This means true * errors need to be returned as a negative value. */ - return error; + return xfs_ioctl(XFS_I(inode), filp, 0, cmd, (void __user *)p); } STATIC long @@ -304,11 +301,8 @@ xfs_file_ioctl_invis( unsigned int cmd, unsigned long p) { - int error; struct inode *inode = filp->f_path.dentry->d_inode; - error = xfs_ioctl(XFS_I(inode), filp, IO_INVIS, cmd, (void __user *)p); - xfs_iflags_set(XFS_I(inode), XFS_IMODIFIED); /* NOTE: some of the ioctl's return positive #'s as a * byte count indicating success, such as @@ -316,7 +310,7 @@ xfs_file_ioctl_invis( * like most other routines. This means true * errors need to be returned as a negative value. */ - return error; + return xfs_ioctl(XFS_I(inode), filp, IO_INVIS, cmd, (void __user *)p); } /* Index: xfs-master/fs/xfs/linux-2.6/xfs_iops.c =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_iops.c 2008-12-02 11:13:27.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_iops.c 2008-12-02 11:15:28.000000000 +0100 @@ -159,8 +159,6 @@ xfs_init_security( } error = xfs_attr_set(ip, name, value, length, ATTR_SECURE); - if (!error) - xfs_iflags_set(ip, XFS_IMODIFIED); kfree(name); kfree(value); @@ -261,7 +259,6 @@ xfs_vn_mknod( error = _ACL_INHERIT(inode, mode, default_acl); if (unlikely(error)) goto out_cleanup_inode; - xfs_iflags_set(ip, XFS_IMODIFIED); _ACL_FREE(default_acl); } @@ -377,7 +374,6 @@ xfs_vn_link( if (unlikely(error)) return -error; - xfs_iflags_set(XFS_I(dir), XFS_IMODIFIED); atomic_inc(&inode->i_count); d_instantiate(dentry, inode); return 0; @@ -888,7 +884,6 @@ xfs_setup_inode( inode->i_ctime.tv_sec = ip->i_d.di_ctime.t_sec; inode->i_ctime.tv_nsec = ip->i_d.di_ctime.t_nsec; xfs_diflags_to_iflags(inode, ip); - xfs_iflags_clear(ip, XFS_IMODIFIED); switch (inode->i_mode & S_IFMT) { case S_IFREG: Index: xfs-master/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_super.c 2008-12-02 11:06:57.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_super.c 2008-12-02 11:15:28.000000000 +0100 @@ -1025,7 +1025,6 @@ xfs_fs_clear_inode( XFS_STATS_DEC(vn_active); xfs_inactive(ip); - xfs_iflags_clear(ip, XFS_IMODIFIED); } STATIC void Index: xfs-master/fs/xfs/xfs_iget.c =================================================================== --- xfs-master.orig/fs/xfs/xfs_iget.c 2008-12-02 11:13:13.000000000 +0100 +++ xfs-master/fs/xfs/xfs_iget.c 2008-12-02 11:15:28.000000000 +0100 @@ -362,7 +362,6 @@ again: } xfs_put_perag(mp, pag); - xfs_iflags_set(ip, XFS_IMODIFIED); *ipp = ip; ASSERT(ip->i_df.if_ext_max == Index: xfs-master/fs/xfs/xfs_inode.h =================================================================== --- xfs-master.orig/fs/xfs/xfs_inode.h 2008-12-02 11:13:13.000000000 +0100 +++ xfs-master/fs/xfs/xfs_inode.h 2008-12-02 11:15:28.000000000 +0100 @@ -403,17 +403,12 @@ static inline void xfs_ifunlock(xfs_inod /* * In-core inode flags. */ -#define XFS_IGRIO 0x0001 /* inode used for guaranteed rate i/o */ -#define XFS_IUIOSZ 0x0002 /* inode i/o sizes have been explicitly set */ -#define XFS_IQUIESCE 0x0004 /* we have started quiescing for this inode */ -#define XFS_IRECLAIM 0x0008 /* we have started reclaiming this inode */ -#define XFS_ISTALE 0x0010 /* inode has been staled */ -#define XFS_IRECLAIMABLE 0x0020 /* inode can be reclaimed */ -#define XFS_INEW 0x0040 -#define XFS_IFILESTREAM 0x0080 /* inode is in a filestream directory */ -#define XFS_IMODIFIED 0x0100 /* XFS inode state possibly differs */ - /* to the Linux inode state. */ -#define XFS_ITRUNCATED 0x0200 /* truncated down so flush-on-close */ +#define XFS_IRECLAIM 0x0001 /* we have started reclaiming this inode */ +#define XFS_ISTALE 0x0002 /* inode has been staled */ +#define XFS_IRECLAIMABLE 0x0004 /* inode can be reclaimed */ +#define XFS_INEW 0x0008 /* inode has just been allocated */ +#define XFS_IFILESTREAM 0x0010 /* inode is in a filestream directory */ +#define XFS_ITRUNCATED 0x0020 /* truncated down so flush-on-close */ /* * Flags for inode locking. -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:12:21 2008 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 mB2GCL11032653 for ; Tue, 2 Dec 2008 10:12:21 -0600 X-ASG-Debug-ID: 1228234341-5c7d029a0000-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 41C00164F2E4 for ; Tue, 2 Dec 2008 08:12:21 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id IYdlbNA02eAyuLHO for ; Tue, 02 Dec 2008 08:12:21 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xly-0007In-0h for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:50 +0000 Message-Id: <20081202160649.932903000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:33 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 03/22] remove unused behvavior cruft in xfs_super.h Subject: [patch 03/22] remove unused behvavior cruft in xfs_super.h Content-Disposition: inline; filename=xfs-remove-dmapi-cruft 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: 1228234341 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Signed-off-by: Christoph Hellwig Index: xfs-master/fs/xfs/linux-2.6/xfs_super.h =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_super.h 2008-12-02 11:21:33.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_super.h 2008-12-02 11:21:49.000000000 +0100 @@ -20,24 +20,12 @@ #include -#ifdef CONFIG_XFS_DMAPI -# define vfs_insertdmapi(vfs) vfs_insertops(vfsp, &xfs_dmops) -# define vfs_initdmapi() dmapi_init() -# define vfs_exitdmapi() dmapi_uninit() -#else -# define vfs_insertdmapi(vfs) do { } while (0) -# define vfs_initdmapi() do { } while (0) -# define vfs_exitdmapi() do { } while (0) -#endif - #ifdef CONFIG_XFS_QUOTA -# define vfs_insertquota(vfs) vfs_insertops(vfsp, &xfs_qmops) extern void xfs_qm_init(void); extern void xfs_qm_exit(void); # define vfs_initquota() xfs_qm_init() # define vfs_exitquota() xfs_qm_exit() #else -# define vfs_insertquota(vfs) do { } while (0) # define vfs_initquota() do { } while (0) # define vfs_exitquota() do { } while (0) #endif -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:12:22 2008 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 mB2GCLit032660 for ; Tue, 2 Dec 2008 10:12:22 -0600 X-ASG-Debug-ID: 1228234341-6e6301d20000-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 5B313164F2E9 for ; Tue, 2 Dec 2008 08:12:21 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id duvCLPQxRVOZS592 for ; Tue, 02 Dec 2008 08:12:21 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xly-0007LA-Ex for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:50 +0000 Message-Id: <20081202160650.360918000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:36 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 06/22] kill xfs_buf_iostart Subject: [patch 06/22] kill xfs_buf_iostart Content-Disposition: inline; filename=xfs-bdwrite_cleanup 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: 1228234341 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com xfs_buf_iostart is a "shared" helper for xfs_buf_read_flags, xfs_bawrite, and xfs_bdwrite - except that there isn't much shared code but rather special cases for each caller. So remove this function and move the functionality to the caller. xfs_bawrite and xfs_bdwrite are now big enough to be moved out of line and the xfs_buf_read_flags is moved into a new helper called _xfs_buf_read. (First sent on August 2nd) Signed-off-by: Christoph Hellwig Index: xfs-master/fs/xfs/linux-2.6/xfs_buf.c =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_buf.c 2008-12-01 19:26:04.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_buf.c 2008-12-01 19:27:31.000000000 +0100 @@ -630,6 +630,29 @@ xfs_buf_get_flags( return NULL; } +STATIC int +_xfs_buf_read( + xfs_buf_t *bp, + xfs_buf_flags_t flags) +{ + int status; + + XB_TRACE(bp, "_xfs_buf_read", (unsigned long)flags); + + ASSERT(!(flags & (XBF_DELWRI|XBF_WRITE))); + ASSERT(bp->b_bn != XFS_BUF_DADDR_NULL); + + bp->b_flags &= ~(XBF_WRITE | XBF_ASYNC | XBF_DELWRI | \ + XBF_READ_AHEAD | _XBF_RUN_QUEUES); + bp->b_flags |= flags & (XBF_READ | XBF_ASYNC | \ + XBF_READ_AHEAD | _XBF_RUN_QUEUES); + + status = xfs_buf_iorequest(bp); + if (!status && !(flags & XBF_ASYNC)) + status = xfs_buf_iowait(bp); + return status; +} + xfs_buf_t * xfs_buf_read_flags( xfs_buftarg_t *target, @@ -646,7 +669,7 @@ xfs_buf_read_flags( if (!XFS_BUF_ISDONE(bp)) { XB_TRACE(bp, "read", (unsigned long)flags); XFS_STATS_INC(xb_get_read); - xfs_buf_iostart(bp, flags); + _xfs_buf_read(bp, flags); } else if (flags & XBF_ASYNC) { XB_TRACE(bp, "read_async", (unsigned long)flags); /* @@ -1048,50 +1071,39 @@ xfs_buf_ioerror( XB_TRACE(bp, "ioerror", (unsigned long)error); } -/* - * Initiate I/O on a buffer, based on the flags supplied. - * The b_iodone routine in the buffer supplied will only be called - * when all of the subsidiary I/O requests, if any, have been completed. - */ int -xfs_buf_iostart( - xfs_buf_t *bp, - xfs_buf_flags_t flags) +xfs_bawrite( + void *mp, + struct xfs_buf *bp) { - int status = 0; + XB_TRACE(bp, "bawrite", 0); - XB_TRACE(bp, "iostart", (unsigned long)flags); + ASSERT(bp->b_bn != XFS_BUF_DADDR_NULL); - if (flags & XBF_DELWRI) { - bp->b_flags &= ~(XBF_READ | XBF_WRITE | XBF_ASYNC); - bp->b_flags |= flags & (XBF_DELWRI | XBF_ASYNC); - xfs_buf_delwri_queue(bp, 1); - return 0; - } + xfs_buf_delwri_dequeue(bp); - bp->b_flags &= ~(XBF_READ | XBF_WRITE | XBF_ASYNC | XBF_DELWRI | \ - XBF_READ_AHEAD | _XBF_RUN_QUEUES); - bp->b_flags |= flags & (XBF_READ | XBF_WRITE | XBF_ASYNC | \ - XBF_READ_AHEAD | _XBF_RUN_QUEUES); + bp->b_flags &= ~(XBF_READ | XBF_DELWRI | XBF_READ_AHEAD); + bp->b_flags |= (XBF_WRITE | XBF_ASYNC | _XBF_RUN_QUEUES); + + bp->b_fspriv3 = mp; + bp->b_strat = xfs_bdstrat_cb; + return xfs_bdstrat_cb(bp); +} - BUG_ON(bp->b_bn == XFS_BUF_DADDR_NULL); +void +xfs_bdwrite( + void *mp, + struct xfs_buf *bp) +{ + XB_TRACE(bp, "bdwrite", 0); - /* For writes allow an alternate strategy routine to precede - * the actual I/O request (which may not be issued at all in - * a shutdown situation, for example). - */ - status = (flags & XBF_WRITE) ? - xfs_buf_iostrategy(bp) : xfs_buf_iorequest(bp); + bp->b_strat = xfs_bdstrat_cb; + bp->b_fspriv3 = mp; - /* Wait for I/O if we are not an async request. - * Note: async I/O request completion will release the buffer, - * and that can already be done by this point. So using the - * buffer pointer from here on, after async I/O, is invalid. - */ - if (!status && !(flags & XBF_ASYNC)) - status = xfs_buf_iowait(bp); + bp->b_flags &= ~XBF_READ; + bp->b_flags |= (XBF_DELWRI | XBF_ASYNC); - return status; + xfs_buf_delwri_queue(bp, 1); } STATIC_INLINE void Index: xfs-master/fs/xfs/linux-2.6/xfs_buf.h =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_buf.h 2008-12-01 19:26:04.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_buf.h 2008-12-01 19:27:31.000000000 +0100 @@ -214,9 +214,10 @@ extern void xfs_buf_lock(xfs_buf_t *); extern void xfs_buf_unlock(xfs_buf_t *); /* Buffer Read and Write Routines */ +extern int xfs_bawrite(void *mp, xfs_buf_t *bp); +extern void xfs_bdwrite(void *mp, xfs_buf_t *bp); extern void xfs_buf_ioend(xfs_buf_t *, int); extern void xfs_buf_ioerror(xfs_buf_t *, int); -extern int xfs_buf_iostart(xfs_buf_t *, xfs_buf_flags_t); extern int xfs_buf_iorequest(xfs_buf_t *); extern int xfs_buf_iowait(xfs_buf_t *); extern void xfs_buf_iomove(xfs_buf_t *, size_t, size_t, xfs_caddr_t, @@ -366,14 +367,6 @@ extern void xfs_buf_trace(xfs_buf_t *, c #define XFS_BUF_TARGET(bp) ((bp)->b_target) #define XFS_BUFTARG_NAME(target) xfs_buf_target_name(target) -static inline int xfs_bawrite(void *mp, xfs_buf_t *bp) -{ - bp->b_fspriv3 = mp; - bp->b_strat = xfs_bdstrat_cb; - xfs_buf_delwri_dequeue(bp); - return xfs_buf_iostart(bp, XBF_WRITE | XBF_ASYNC | _XBF_RUN_QUEUES); -} - static inline void xfs_buf_relse(xfs_buf_t *bp) { if (!bp->b_relse) @@ -414,17 +407,6 @@ static inline int XFS_bwrite(xfs_buf_t * return error; } -/* - * No error can be returned from xfs_buf_iostart for delwri - * buffers as they are queued and no I/O is issued. - */ -static inline void xfs_bdwrite(void *mp, xfs_buf_t *bp) -{ - bp->b_strat = xfs_bdstrat_cb; - bp->b_fspriv3 = mp; - (void)xfs_buf_iostart(bp, XBF_DELWRI | XBF_ASYNC); -} - #define XFS_bdstrat(bp) xfs_buf_iorequest(bp) #define xfs_iowait(bp) xfs_buf_iowait(bp) -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:12:22 2008 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 mB2GCMPb032661 for ; Tue, 2 Dec 2008 10:12:22 -0600 X-ASG-Debug-ID: 1228234341-60d3026a0000-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 78208164F2EA for ; Tue, 2 Dec 2008 08:12:21 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id tSB1cukgzpC9tIrC for ; Tue, 02 Dec 2008 08:12:21 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xly-0007MK-Jg for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:50 +0000 Message-Id: <20081202160650.515494000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:37 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 07/22] stop using igrab in xfs_vn_link Subject: [patch 07/22] stop using igrab in xfs_vn_link Content-Disposition: inline; filename=xfs-stop-using-igrab-in-xfs_link 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: 1228234341 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com ->link is guranteed to get an already reference inode passed so we can do a simple increment of i_count instead of using igrab and thus avoid banging on the global inode_lock. This is what most filesystems already do. Also move the increment after the call to xfs_link to simplify error handling. (First sent on July 26th) Signed-off-by: Christoph Hellwig Index: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_iops.c =================================================================== --- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_iops.c 2008-10-25 13:00:29.000000000 +0200 +++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_iops.c 2008-10-25 13:13:24.000000000 +0200 @@ -366,21 +366,18 @@ xfs_vn_link( struct inode *dir, struct dentry *dentry) { - struct inode *inode; /* inode of guy being linked to */ + struct inode *inode = old_dentry->d_inode; struct xfs_name name; int error; - inode = old_dentry->d_inode; xfs_dentry_to_name(&name, dentry); - igrab(inode); error = xfs_link(XFS_I(dir), XFS_I(inode), &name); - if (unlikely(error)) { - iput(inode); + if (unlikely(error)) return -error; - } xfs_iflags_set(XFS_I(dir), XFS_IMODIFIED); + atomic_inc(&inode->i_count); d_instantiate(dentry, inode); return 0; } -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:12:52 2008 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 mB2GCp9u032767 for ; Tue, 2 Dec 2008 10:12:51 -0600 X-ASG-Debug-ID: 1228234371-5d7002690000-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 42586164F30E for ; Tue, 2 Dec 2008 08:12:51 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 1MgvsIWN3eIkbK84 for ; Tue, 02 Dec 2008 08:12:51 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xlz-0007U7-HS for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:51 +0000 Message-Id: <20081202160651.426074000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:43 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 13/22] remove unused m_inode_quiesce member from struct xfs_mount Subject: [patch 13/22] remove unused m_inode_quiesce member from struct xfs_mount Content-Disposition: inline; filename=xfs-kill-m_inode_quiesce 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: 1228234371 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com (First sent on July 23rd) Signed-off-by: Christoph Hellwig Index: xfs-master/fs/xfs/xfs_mount.h =================================================================== --- xfs-master.orig/fs/xfs/xfs_mount.h 2008-12-01 19:27:15.000000000 +0100 +++ xfs-master/fs/xfs/xfs_mount.h 2008-12-01 19:27:59.000000000 +0100 @@ -302,7 +302,6 @@ typedef struct xfs_mount { int m_attr_magicpct;/* 37% of the blocksize */ int m_dir_magicpct; /* 37% of the dir blocksize */ __uint8_t m_mk_sharedro; /* mark shared ro on unmount */ - __uint8_t m_inode_quiesce;/* call quiesce on new inodes. */ __uint8_t m_sectbb_log; /* sectlog - BBSHIFT */ const struct xfs_nameops *m_dirnameops; /* vector of dir name ops */ int m_dirblksize; /* directory block sz--bytes */ -- From SRS0+bbc73c9829aeeb7e6db8+1927+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 2 10:12:52 2008 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 mB2GCqlF000317 for ; Tue, 2 Dec 2008 10:12:52 -0600 X-ASG-Debug-ID: 1228234371-5c7d02a00000-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 90F93164F30E for ; Tue, 2 Dec 2008 08:12:51 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id PAjHgoXckVKsOtOX for ; Tue, 02 Dec 2008 08:12:51 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7Xm0-0007e8-Qm for xfs@oss.sgi.com; Tue, 02 Dec 2008 16:06:52 +0000 Message-Id: <20081202160652.734778000@bombadil.infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 02 Dec 2008 11:04:51 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 21/22] move inode tracing out of xfs_vnode. Subject: [patch 21/22] move inode tracing out of xfs_vnode. Content-Disposition: inline; filename=xfs-move-itrace 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: 1228234371 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Move the inode tracing into xfs_iget.c / xfs_inode.h and kill xfs_vnode.c now that it's empty. Signed-off-by: Christoph Hellwig Index: xfs-master/fs/xfs/Makefile =================================================================== --- xfs-master.orig/fs/xfs/Makefile 2008-12-02 11:26:30.000000000 +0100 +++ xfs-master/fs/xfs/Makefile 2008-12-02 11:27:01.000000000 +0100 @@ -107,7 +107,6 @@ xfs-y += $(addprefix $(XFS_LINUX)/, \ xfs_lrw.o \ xfs_super.o \ xfs_sync.o \ - xfs_vnode.o \ xfs_xattr.o) # Objects in support/ Index: xfs-master/fs/xfs/linux-2.6/xfs_vnode.c =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_vnode.c 2008-12-02 11:26:47.000000000 +0100 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1,82 +0,0 @@ -/* - * Copyright (c) 2000-2003,2005 Silicon Graphics, Inc. - * All Rights Reserved. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it would be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -#include "xfs.h" -#include "xfs_vnodeops.h" -#include "xfs_bmap_btree.h" -#include "xfs_inode.h" - -/* - * And this gunk is needed for xfs_mount.h" - */ -#include "xfs_log.h" -#include "xfs_trans.h" -#include "xfs_sb.h" -#include "xfs_dmapi.h" -#include "xfs_inum.h" -#include "xfs_ag.h" -#include "xfs_mount.h" - - -#ifdef XFS_INODE_TRACE - -#define KTRACE_ENTER(ip, vk, s, line, ra) \ - ktrace_enter( (ip)->i_trace, \ -/* 0 */ (void *)(__psint_t)(vk), \ -/* 1 */ (void *)(s), \ -/* 2 */ (void *)(__psint_t) line, \ -/* 3 */ (void *)(__psint_t)atomic_read(&VFS_I(ip)->i_count), \ -/* 4 */ (void *)(ra), \ -/* 5 */ NULL, \ -/* 6 */ (void *)(__psint_t)current_cpu(), \ -/* 7 */ (void *)(__psint_t)current_pid(), \ -/* 8 */ (void *)__return_address, \ -/* 9 */ NULL, NULL, NULL, NULL, NULL, NULL, NULL) - -/* - * Vnode tracing code. - */ -void -_xfs_itrace_entry(xfs_inode_t *ip, const char *func, inst_t *ra) -{ - KTRACE_ENTER(ip, INODE_KTRACE_ENTRY, func, 0, ra); -} - -void -_xfs_itrace_exit(xfs_inode_t *ip, const char *func, inst_t *ra) -{ - KTRACE_ENTER(ip, INODE_KTRACE_EXIT, func, 0, ra); -} - -void -xfs_itrace_hold(xfs_inode_t *ip, char *file, int line, inst_t *ra) -{ - KTRACE_ENTER(ip, INODE_KTRACE_HOLD, file, line, ra); -} - -void -_xfs_itrace_ref(xfs_inode_t *ip, char *file, int line, inst_t *ra) -{ - KTRACE_ENTER(ip, INODE_KTRACE_REF, file, line, ra); -} - -void -xfs_itrace_rele(xfs_inode_t *ip, char *file, int line, inst_t *ra) -{ - KTRACE_ENTER(ip, INODE_KTRACE_RELE, file, line, ra); -} -#endif /* XFS_INODE_TRACE */ Index: xfs-master/fs/xfs/xfs_iget.c =================================================================== --- xfs-master.orig/fs/xfs/xfs_iget.c 2008-12-02 11:22:30.000000000 +0100 +++ xfs-master/fs/xfs/xfs_iget.c 2008-12-02 11:27:19.000000000 +0100 @@ -805,3 +805,51 @@ xfs_isilocked( } #endif +#ifdef XFS_INODE_TRACE + +#define KTRACE_ENTER(ip, vk, s, line, ra) \ + ktrace_enter((ip)->i_trace, \ +/* 0 */ (void *)(__psint_t)(vk), \ +/* 1 */ (void *)(s), \ +/* 2 */ (void *)(__psint_t) line, \ +/* 3 */ (void *)(__psint_t)atomic_read(&VFS_I(ip)->i_count), \ +/* 4 */ (void *)(ra), \ +/* 5 */ NULL, \ +/* 6 */ (void *)(__psint_t)current_cpu(), \ +/* 7 */ (void *)(__psint_t)current_pid(), \ +/* 8 */ (void *)__return_address, \ +/* 9 */ NULL, NULL, NULL, NULL, NULL, NULL, NULL) + +/* + * Vnode tracing code. + */ +void +_xfs_itrace_entry(xfs_inode_t *ip, const char *func, inst_t *ra) +{ + KTRACE_ENTER(ip, INODE_KTRACE_ENTRY, func, 0, ra); +} + +void +_xfs_itrace_exit(xfs_inode_t *ip, const char *func, inst_t *ra) +{ + KTRACE_ENTER(ip, INODE_KTRACE_EXIT, func, 0, ra); +} + +void +xfs_itrace_hold(xfs_inode_t *ip, char *file, int line, inst_t *ra) +{ + KTRACE_ENTER(ip, INODE_KTRACE_HOLD, file, line, ra); +} + +void +_xfs_itrace_ref(xfs_inode_t *ip, char *file, int line, inst_t *ra) +{ + KTRACE_ENTER(ip, INODE_KTRACE_REF, file, line, ra); +} + +void +xfs_itrace_rele(xfs_inode_t *ip, char *file, int line, inst_t *ra) +{ + KTRACE_ENTER(ip, INODE_KTRACE_RELE, file, line, ra); +} +#endif /* XFS_INODE_TRACE */ Index: xfs-master/fs/xfs/linux-2.6/xfs_vnode.h =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_vnode.h 2008-12-02 11:26:47.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_vnode.h 2008-12-02 11:27:01.000000000 +0100 @@ -54,19 +54,6 @@ struct attrlist_cursor_kern; Prevent VM access to the pages until the operation completes. */ -#define IHOLD(ip) \ -do { \ - ASSERT(atomic_read(&VFS_I(ip)->i_count) > 0) ; \ - atomic_inc(&(VFS_I(ip)->i_count)); \ - xfs_itrace_hold((ip), __FILE__, __LINE__, (inst_t *)__return_address); \ -} while (0) - -#define IRELE(ip) \ -do { \ - xfs_itrace_rele((ip), __FILE__, __LINE__, (inst_t *)__return_address); \ - iput(VFS_I(ip)); \ -} while (0) - /* * Dealing with bad inodes */ @@ -103,39 +90,4 @@ static inline void vn_atime_to_time_t(st PAGECACHE_TAG_DIRTY) -/* - * Tracking vnode activity. - */ -#if defined(XFS_INODE_TRACE) - -#define INODE_TRACE_SIZE 16 /* number of trace entries */ -#define INODE_KTRACE_ENTRY 1 -#define INODE_KTRACE_EXIT 2 -#define INODE_KTRACE_HOLD 3 -#define INODE_KTRACE_REF 4 -#define INODE_KTRACE_RELE 5 - -extern void _xfs_itrace_entry(struct xfs_inode *, const char *, inst_t *); -extern void _xfs_itrace_exit(struct xfs_inode *, const char *, inst_t *); -extern void xfs_itrace_hold(struct xfs_inode *, char *, int, inst_t *); -extern void _xfs_itrace_ref(struct xfs_inode *, char *, int, inst_t *); -extern void xfs_itrace_rele(struct xfs_inode *, char *, int, inst_t *); -#define xfs_itrace_entry(ip) \ - _xfs_itrace_entry(ip, __func__, (inst_t *)__return_address) -#define xfs_itrace_exit(ip) \ - _xfs_itrace_exit(ip, __func__, (inst_t *)__return_address) -#define xfs_itrace_exit_tag(ip, tag) \ - _xfs_itrace_exit(ip, tag, (inst_t *)__return_address) -#define xfs_itrace_ref(ip) \ - _xfs_itrace_ref(ip, __FILE__, __LINE__, (inst_t *)__return_address) - -#else -#define xfs_itrace_entry(a) -#define xfs_itrace_exit(a) -#define xfs_itrace_exit_tag(a, b) -#define xfs_itrace_hold(a, b, c, d) -#define xfs_itrace_ref(a) -#define xfs_itrace_rele(a, b, c, d) -#endif - #endif /* __XFS_VNODE_H__ */ Index: xfs-master/fs/xfs/xfs_inode.h =================================================================== --- xfs-master.orig/fs/xfs/xfs_inode.h 2008-12-02 11:22:30.000000000 +0100 +++ xfs-master/fs/xfs/xfs_inode.h 2008-12-02 11:27:01.000000000 +0100 @@ -536,6 +536,51 @@ void xfs_lock_two_inodes(xfs_inode_t *, void xfs_synchronize_atime(xfs_inode_t *); void xfs_mark_inode_dirty_sync(xfs_inode_t *); +#if defined(XFS_INODE_TRACE) + +#define INODE_TRACE_SIZE 16 /* number of trace entries */ +#define INODE_KTRACE_ENTRY 1 +#define INODE_KTRACE_EXIT 2 +#define INODE_KTRACE_HOLD 3 +#define INODE_KTRACE_REF 4 +#define INODE_KTRACE_RELE 5 + +extern void _xfs_itrace_entry(struct xfs_inode *, const char *, inst_t *); +extern void _xfs_itrace_exit(struct xfs_inode *, const char *, inst_t *); +extern void xfs_itrace_hold(struct xfs_inode *, char *, int, inst_t *); +extern void _xfs_itrace_ref(struct xfs_inode *, char *, int, inst_t *); +extern void xfs_itrace_rele(struct xfs_inode *, char *, int, inst_t *); +#define xfs_itrace_entry(ip) \ + _xfs_itrace_entry(ip, __func__, (inst_t *)__return_address) +#define xfs_itrace_exit(ip) \ + _xfs_itrace_exit(ip, __func__, (inst_t *)__return_address) +#define xfs_itrace_exit_tag(ip, tag) \ + _xfs_itrace_exit(ip, tag, (inst_t *)__return_address) +#define xfs_itrace_ref(ip) \ + _xfs_itrace_ref(ip, __FILE__, __LINE__, (inst_t *)__return_address) + +#else +#define xfs_itrace_entry(a) +#define xfs_itrace_exit(a) +#define xfs_itrace_exit_tag(a, b) +#define xfs_itrace_hold(a, b, c, d) +#define xfs_itrace_ref(a) +#define xfs_itrace_rele(a, b, c, d) +#endif + +#define IHOLD(ip) \ +do { \ + ASSERT(atomic_read(&VFS_I(ip)->i_count) > 0) ; \ + atomic_inc(&(VFS_I(ip)->i_count)); \ + xfs_itrace_hold((ip), __FILE__, __LINE__, (inst_t *)__return_address); \ +} while (0) + +#define IRELE(ip) \ +do { \ + xfs_itrace_rele((ip), __FILE__, __LINE__, (inst_t *)__return_address); \ + iput(VFS_I(ip)); \ +} while (0) + #endif /* __KERNEL__ */ int xfs_inotobp(struct xfs_mount *, struct xfs_trans *, -- From sandeen@sandeen.net Tue Dec 2 10:48:21 2008 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 mB2GmLC6005666 for ; Tue, 2 Dec 2008 10:48:21 -0600 X-ASG-Debug-ID: 1228236499-6199035e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 24952164F9C6 for ; Tue, 2 Dec 2008 08:48:19 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id kuvG5EFf7LE0RYwQ for ; Tue, 02 Dec 2008 08:48:19 -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 sandeen.net (Postfix) with ESMTP id 6642AAC6272; Tue, 2 Dec 2008 10:43:17 -0600 (CST) Message-ID: <493565A5.8070504@sandeen.net> Date: Tue, 02 Dec 2008 10:43:17 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 01/22] fix compile on 32 bit systems Subject: Re: [patch 01/22] fix compile on 32 bit systems References: <20081202160430.775774000@bombadil.infradead.org> <20081202160649.658660000@bombadil.infradead.org> In-Reply-To: <20081202160649.658660000@bombadil.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: 1228236500 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.11743 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- ACK on this. I ran into this too on a backport but didn't think it was a problem upstream, thanks! -Eric From arekm@maven.pl Tue Dec 2 12:50:32 2008 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_54 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 mB2IoUgA012720 for ; Tue, 2 Dec 2008 12:50:32 -0600 X-ASG-Debug-ID: 1228243828-677703e10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from main.carme.maven.pl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3A6A51651279 for ; Tue, 2 Dec 2008 10:50:28 -0800 (PST) Received: from main.carme.maven.pl (main.carme.maven.pl [193.239.45.138]) by cuda.sgi.com with ESMTP id QF9GGLyfk4PlACNX for ; Tue, 02 Dec 2008 10:50:28 -0800 (PST) Received: from chello089076027073.chello.pl ([89.76.27.73]:4164 helo=maven.pl) by main.carme.maven.pl with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.69) (envelope-from ) id 1L7aKI-0000Uf-NN for xfs@oss.sgi.com; Tue, 02 Dec 2008 19:50:26 +0100 Received: from arekm by maven.pl with local (Exim 4.69) (envelope-from ) id 1L7aJn-0003nN-Hn for xfs@oss.sgi.com; Tue, 02 Dec 2008 19:49:56 +0100 From: Arkadiusz Miskiewicz To: xfs@oss.sgi.com X-ASG-Orig-Subj: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Subject: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Date: Tue, 2 Dec 2008 19:49:55 +0100 User-Agent: PLD Linux KMail/1.9.10 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Message-Id: <200812021949.55463.arekm@maven.pl> X-Barracuda-Connect: main.carme.maven.pl[193.239.45.138] X-Barracuda-Start-Time: 1228243829 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.11752 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id mB2IoUgA012720 Hello, I'm trying to use xfs project quota on kernel 2.6.27.7 (vanilla, no additional patches), x86_64 UP machine (SMP kernel). mounted /home with usrquota,prjquota [arekm@arm ~]$ mount|grep xfs /dev/sda1 on / type xfs (rw) /dev/sda3 on /home type xfs (rw,usrquota,prjquota) /dev/hdb on /mnt/storage2 type xfs (rw) played a bit with setting quota/reporting it and such. $ cat /etc/projects 10:/home/users/arekm/public_html 10:/home/users/arekm/rpm 20:/home/users/arekm/tcl 20:/home/users/arekm/tcl-test I did for example xfs_quota -x -c "project -s 10" and allowed it to finish. I also started it second time and aborted with ctrl+c after few seconds (which I assume should have no effect since initial -s 10 was finished properly earlier). Played more with xfs_quota report and such. Now some processes that are using /home/users/arekm/rpm are hanging in D-state like: SysRq : Show Blocked State task PC stack pid father patch D ffff88003a7dd080 0 3971 3965 ffff880034453cd8 0000000000000086 0000000000000000 ffff8800344770d0 ffff880034453cd8 ffff8800354d2440 ffffffff805d0340 ffff8800354d27b8 00000000000041ed 00000000fffc7a61 ffff8800354d27b8 0000000000000250 Call Trace: [] ? kmem_zone_alloc+0x94/0xe0 [xfs] [] __down_write_nested+0x8d/0xd0 [] __down_write+0xb/0x10 [] down_write+0x9/0x10 [] xfs_ilock+0x76/0x90 [xfs] [] xfs_lock_two_inodes+0x70/0x120 [xfs] [] xfs_remove+0x141/0x3a0 [xfs] [] ? _spin_lock+0x9/0x10 [] xfs_setup_inode+0x673/0xa00 [xfs] [] vfs_unlink+0xf9/0x140 [] do_unlinkat+0x1a3/0x1c0 [] ? audit_syscall_entry+0x150/0x180 [] sys_unlink+0x11/0x20 [] system_call_fastpath+0x16/0x1b reboot, retry with patch (which accesses /home/users/arekm/rpm) and stuck in D-state again. touch home/users/arekm/rpm/xyz - doesn't stuck. cp /bin/bash /home/users/arekm/rpm/ - doesn't stuck. Did reboot and third test. D-state again for patch (this is interesting since uncompressing into /home/users/arekm/rpm/ succeeds but applying patch to uncompressed tree fails). SysRq : Show Blocked State task PC stack pid father patch D ffff88003a7d07c0 0 3631 3625 ffff88003443bcd8 0000000000000082 0000000000000000 ffff88003444e4a8 ffff88003443bcd8 ffff88003553e500 ffffffff805d0340 ffff88003553e878 00000000000041ed 00000000fffc4120 ffff88003553e878 0000000000000250 Call Trace: [] ? kmem_zone_alloc+0x94/0xe0 [xfs] [] __down_write_nested+0x8d/0xd0 [] __down_write+0xb/0x10 [] down_write+0x9/0x10 [] xfs_ilock+0x76/0x90 [xfs] [] xfs_lock_two_inodes+0x70/0x120 [xfs] [] xfs_remove+0x141/0x3a0 [xfs] [] ? _spin_lock+0x9/0x10 [] xfs_setup_inode+0x673/0xa00 [xfs] [] vfs_unlink+0xf9/0x140 [] do_unlinkat+0x1a3/0x1c0 [] ? audit_syscall_entry+0x150/0x180 [] sys_unlink+0x11/0x20 [] system_call_fastpath+0x16/0x1b I'm able to make it D-stuck quite reliably. Any ideas? Going to do xfs_repair just in case and retest. -- Arkadiusz MiÅ›kiewicz PLD/Linux Team arekm / maven.pl http://ftp.pld-linux.org/ From arekm@maven.pl Tue Dec 2 13:08:55 2008 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 mB2J8txe013224 for ; Tue, 2 Dec 2008 13:08:55 -0600 X-ASG-Debug-ID: 1228244933-04aa00620000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from main.carme.maven.pl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 27AED165704D for ; Tue, 2 Dec 2008 11:08:53 -0800 (PST) Received: from main.carme.maven.pl (main.carme.maven.pl [193.239.45.138]) by cuda.sgi.com with ESMTP id 6cLmJvCzuCuyhpMl for ; Tue, 02 Dec 2008 11:08:53 -0800 (PST) Received: from chello089076027073.chello.pl ([89.76.27.73]:2030 helo=maven.pl) by main.carme.maven.pl with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.69) (envelope-from ) id 1L7aXI-0000uP-RI for xfs@oss.sgi.com; Tue, 02 Dec 2008 20:03:52 +0100 Received: from arekm by maven.pl with local (Exim 4.69) (envelope-from ) id 1L7aWn-0003rp-NQ for xfs@oss.sgi.com; Tue, 02 Dec 2008 20:03:22 +0100 From: Arkadiusz Miskiewicz To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Subject: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Date: Tue, 2 Dec 2008 20:03:21 +0100 User-Agent: PLD Linux KMail/1.9.10 References: <200812021949.55463.arekm@maven.pl> In-Reply-To: <200812021949.55463.arekm@maven.pl> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Message-Id: <200812022003.21645.arekm@maven.pl> X-Barracuda-Connect: main.carme.maven.pl[193.239.45.138] X-Barracuda-Start-Time: 1228244934 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0129 1.0000 -1.9367 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.94 X-Barracuda-Spam-Status: No, SCORE=-1.94 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.11752 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id mB2J8txe013224 On Tuesday 02 of December 2008, Arkadiusz Miskiewicz wrote: > Going to do xfs_repair just in case and retest. Didn't help, xfs_repair for small two things in phase 6 but nothing serious. Again d-state for patch. xfs_repair found just these (sorry, in polish) błędna liczba nused w wolnym bloku 16777216 dla i-wÄ™zÅ‚a katalogu 237689990 przebudowywanie i-wÄ™zÅ‚a katalogu 237689990 błędna liczba nused w wolnym bloku 16777216 dla i-wÄ™zÅ‚a katalogu 873160686 przebudowywanie i-wÄ™zÅ‚a katalogu 873160686 -- Arkadiusz MiÅ›kiewicz PLD/Linux Team arekm / maven.pl http://ftp.pld-linux.org/ From jengelh@medozas.de Tue Dec 2 14:02:29 2008 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_42 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 mB2K2SYo015280 for ; Tue, 2 Dec 2008 14:02:29 -0600 X-ASG-Debug-ID: 1228248146-12f900090000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sovereign.computergmbh.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 831F91658AC1 for ; Tue, 2 Dec 2008 12:02:26 -0800 (PST) Received: from sovereign.computergmbh.de (sovereign.computergmbh.de [85.214.69.204]) by cuda.sgi.com with ESMTP id wmowfBLIrHDVcXty for ; Tue, 02 Dec 2008 12:02:26 -0800 (PST) Received: by sovereign.computergmbh.de (Postfix, from userid 25121) id EDA0118038544; Tue, 2 Dec 2008 21:02:25 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by sovereign.computergmbh.de (Postfix) with ESMTP id E4F051C00EF63 for ; Tue, 2 Dec 2008 21:02:25 +0100 (CET) Date: Tue, 2 Dec 2008 21:02:25 +0100 (CET) From: Jan Engelhardt Sender: jengelh@sovereign.computergmbh.de To: xfs@oss.sgi.com X-ASG-Orig-Subj: Disk full during delayed allocation Subject: Disk full during delayed allocation Message-ID: User-Agent: Alpine 1.10 (LNX 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Connect: sovereign.computergmbh.de[85.214.69.204] X-Barracuda-Start-Time: 1228248147 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.11756 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi, on space-constrained filesystems, I noticed that extracting lots of files [about 10k] bumps the Used count up quickly leading to a disk full unless the extraction process (rpm here) is halted, synced, and then continued. I believe this is fully within XFS's standard behavior, but I would like to learn more how exactly this can happen. My guess is that this is due to the "dynamic journal/log" size XFS employs - on a filesystem just mkfs'ed, about 4256KB (for a volume of 128MB) are used, compared to e.g. reiser3 where the full 32MB for the journal are used (according to df) right from the start. Is this so? # df; killall -CONT rpm; sleep 1; killall -STOP rpm; df; sync; df; Filesystem 1K-blocks Used Available Use% Mounted on /lo/src.fs 93504 29396 64108 32% /usr/src /lo/src.fs 93504 49072 44432 53% /usr/src /lo/src.fs 93504 35632 57872 39% /usr/src From billodo@sgi.com Tue Dec 2 19:23:33 2008 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 (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB31NWIO001916 for ; Tue, 2 Dec 2008 19:23:33 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id D035CAC002 for ; Tue, 2 Dec 2008 17:23:28 -0800 (PST) Received: from lnx-billodo.americas.sgi.com (lnx-billodo.americas.sgi.com [128.162.232.245]) by estes.americas.sgi.com (Postfix) with ESMTP id 7F5217000103; Tue, 2 Dec 2008 19:23:28 -0600 (CST) Received: by lnx-billodo.americas.sgi.com (Postfix, from userid 56393) id CCB3C17E01F; Tue, 2 Dec 2008 19:28:59 -0600 (CST) Date: Tue, 2 Dec 2008 19:28:59 -0600 From: "Bill O'Donnell" To: Christoph Hellwig Cc: xfs@sgi.com Subject: Re: [PATCH 5/9] add support for large btree blocks with CRCs and additional RAS information Message-ID: <20081203012859.GA16811@sgi.com> References: <20080925225633.GF9822@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080925225633.GF9822@lst.de> User-Agent: Mutt/1.5.16 (2007-06-09) On Fri, Sep 26, 2008 at 12:56:33AM +0200, Christoph Hellwig wrote: | Add support for larger btree blocks that contains a CRC32C checksum, a | filesystem uuid and block number for detecting filesystem consistency | and out of place writes. The use of these blocks is triggered by the | crc superblock patches just added. | | Note that we currently do not log the crc of the block, but re-created | it during log recovery. With the pending patch to also checksum the log | this should be safe against filesystem corruption but doesn't really | follow the end to end argument. Also poking into the buffer to find | out whether this is a btree buffer during log recovery is not a very | clean way to implement this. I'll look into how well adding crcs | to the buffer log items for every btree is going to work and hope | I can switch to that variant for the next version. looks good... will need to put this through the QA wringer. -- Bill O'Donnell SGI billodo@sgi.com From billodo@sgi.com Tue Dec 2 19:27:03 2008 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 (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB31R32L002110 for ; Tue, 2 Dec 2008 19:27:03 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id 1780F8F8062 for ; Tue, 2 Dec 2008 17:27:00 -0800 (PST) Received: from lnx-billodo.americas.sgi.com (lnx-billodo.americas.sgi.com [128.162.232.245]) by estes.americas.sgi.com (Postfix) with ESMTP id AC7547000103; Tue, 2 Dec 2008 19:26:59 -0600 (CST) Received: by lnx-billodo.americas.sgi.com (Postfix, from userid 56393) id 0670317E01F; Tue, 2 Dec 2008 19:32:31 -0600 (CST) Date: Tue, 2 Dec 2008 19:32:31 -0600 From: "Bill O'Donnell" To: Christoph Hellwig Cc: xfs@sgi.com, Dave Chinner Subject: Re: [PATCH 6/9] Add CRC checks to the superblock. Message-ID: <20081203013230.GB16811@sgi.com> References: <20080925225639.GG9822@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080925225639.GG9822@lst.de> User-Agent: Mutt/1.5.16 (2007-06-09) On Fri, Sep 26, 2008 at 12:56:39AM +0200, Christoph Hellwig wrote: | From: Dave Chinner | | [hch: minor adaptions] I suggest a more comprehensive header here. Otherwise code looks good. | | | Signed-off-by: Dave Chinner | Signed-off-by: Christoph Hellwig | From billodo@sgi.com Tue Dec 2 19:29:03 2008 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 (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB31T2fS002325 for ; Tue, 2 Dec 2008 19:29:03 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id 3F58AAC001 for ; Tue, 2 Dec 2008 17:29:02 -0800 (PST) Received: from lnx-billodo.americas.sgi.com (lnx-billodo.americas.sgi.com [128.162.232.245]) by estes.americas.sgi.com (Postfix) with ESMTP id DE83A7000103; Tue, 2 Dec 2008 19:29:01 -0600 (CST) Received: by lnx-billodo.americas.sgi.com (Postfix, from userid 56393) id 3940317E01F; Tue, 2 Dec 2008 19:34:33 -0600 (CST) Date: Tue, 2 Dec 2008 19:34:33 -0600 From: "Bill O'Donnell" To: Christoph Hellwig Cc: xfs@sgi.com, Dave Chinner Subject: Re: [PATCH 7/9] Add CRC checks to the AGI Message-ID: <20081203013433.GC16811@sgi.com> References: <20080925225642.GH9822@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080925225642.GH9822@lst.de> User-Agent: Mutt/1.5.16 (2007-06-09) On Fri, Sep 26, 2008 at 12:56:42AM +0200, Christoph Hellwig wrote: | From: Dave Chinner | | [hch: minor adaptions] | I suggest a more comprehensive header. Code looks good otherwise. From billodo@sgi.com Tue Dec 2 19:30:36 2008 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 mB31UaS2002574 for ; Tue, 2 Dec 2008 19:30:36 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id 3C248304085 for ; Tue, 2 Dec 2008 17:30:33 -0800 (PST) Received: from lnx-billodo.americas.sgi.com (lnx-billodo.americas.sgi.com [128.162.232.245]) by estes.americas.sgi.com (Postfix) with ESMTP id 34C977000103; Tue, 2 Dec 2008 19:30:33 -0600 (CST) Received: by lnx-billodo.americas.sgi.com (Postfix, from userid 56393) id 8548D17E01F; Tue, 2 Dec 2008 19:36:04 -0600 (CST) Date: Tue, 2 Dec 2008 19:36:04 -0600 From: "Bill O'Donnell" To: Christoph Hellwig Cc: xfs@sgi.com, Dave Chinner Subject: Re: [PATCH 8/9] Add CRC checks to the AGF Message-ID: <20081203013604.GD16811@sgi.com> References: <20080925225646.GI9822@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080925225646.GI9822@lst.de> User-Agent: Mutt/1.5.16 (2007-06-09) On Fri, Sep 26, 2008 at 12:56:46AM +0200, Christoph Hellwig wrote: | From: Dave Chinner | | [hch: minor adaptions] | suggest a more comprehensive header... code looks good otherwise. From billodo@sgi.com Tue Dec 2 19:36:55 2008 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 (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB31ataF002988 for ; Tue, 2 Dec 2008 19:36:55 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id AF6E98F8064 for ; Tue, 2 Dec 2008 17:36:54 -0800 (PST) Received: from lnx-billodo.americas.sgi.com (lnx-billodo.americas.sgi.com [128.162.232.245]) by estes.americas.sgi.com (Postfix) with ESMTP id 83FCF7000103; Tue, 2 Dec 2008 19:36:54 -0600 (CST) Received: by lnx-billodo.americas.sgi.com (Postfix, from userid 56393) id D678F17E01F; Tue, 2 Dec 2008 19:42:25 -0600 (CST) Date: Tue, 2 Dec 2008 19:42:25 -0600 From: "Bill O'Donnell" To: Christoph Hellwig Cc: xfs@sgi.com Subject: Re: [PATCH 9/9] Replace log checksumming code with CRCs. Message-ID: <20081203014225.GE16811@sgi.com> References: <20080925225650.GJ9822@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080925225650.GJ9822@lst.de> User-Agent: Mutt/1.5.16 (2007-06-09) On Fri, Sep 26, 2008 at 12:56:50AM +0200, Christoph Hellwig wrote: | From: Dave Chinner | | The log has debug only checksum validation; replace this with | stronger CRCs and always use it. | | So far we only checksum the payload in every log buffer. For the final | version this needs to be extended to include the headers, too. | | | [hch: minor adaptions] looks good. From david@fromorbit.com Tue Dec 2 20:13:00 2008 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 mB32D0W6005255 for ; Tue, 2 Dec 2008 20:13:00 -0600 X-ASG-Debug-ID: 1228270377-660600380000-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 99233166646B for ; Tue, 2 Dec 2008 18:12:58 -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 7XzGMkrd6Eoh1h1S for ; Tue, 02 Dec 2008 18:12:58 -0800 (PST) Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 03 Dec 2008 12:42:22 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7hDy-0007v8-7a; Wed, 03 Dec 2008 13:12:22 +1100 Date: Wed, 3 Dec 2008 13:12:22 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 03/22] remove unused behvavior cruft in xfs_super.h Subject: Re: [patch 03/22] remove unused behvavior cruft in xfs_super.h Message-ID: <20081203021222.GB18236@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20081202160430.775774000@bombadil.infradead.org> <20081202160649.932903000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160649.932903000@bombadil.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: 1228270379 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0011 1.0000 -2.0137 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 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.11778 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 11:04:33AM -0500, Christoph Hellwig wrote: > > Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Dec 2 20:16:45 2008 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 mB32GjCJ005795 for ; Tue, 2 Dec 2008 20:16:45 -0600 X-ASG-Debug-ID: 1228270603-660800760000-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 249D41665633 for ; Tue, 2 Dec 2008 18:16:44 -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 MnMvtseSVj5iZGxz for ; Tue, 02 Dec 2008 18:16:44 -0800 (PST) Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 03 Dec 2008 12:41:12 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7hCg-0007sn-3Z; Wed, 03 Dec 2008 13:11:02 +1100 Date: Wed, 3 Dec 2008 13:11:02 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 02/22] remove useless mnt_want_write call in xfs_write Subject: Re: [patch 02/22] remove useless mnt_want_write call in xfs_write Message-ID: <20081203021102.GA18236@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20081202160430.775774000@bombadil.infradead.org> <20081202160649.790190000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160649.790190000@bombadil.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: 1228270605 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0003 1.0000 -2.0190 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.11778 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 11:04:32AM -0500, Christoph Hellwig wrote: > > When mnt_want_write was introduced a call to it was added around > xfs_ichgtime, but there is no need for this because a file can't be open > read/write on a r/o mount, and a mount can't degrade r/o while we still > have files open for writing. As the mnt_want_write changes were never > merged into the CVS tree this patch is for mainline only. > > > Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Tue Dec 2 20:25:55 2008 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 mB32Pt4u006245 for ; Tue, 2 Dec 2008 20:25:55 -0600 X-ASG-Debug-ID: 1228271153-660600d00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 57720161A23C for ; Tue, 2 Dec 2008 18:25:53 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id lT9CwjaYzN4EhWue for ; Tue, 02 Dec 2008 18:25:53 -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 sandeen.net (Postfix) with ESMTP id BD4F39F08EF; Tue, 2 Dec 2008 20:20:19 -0600 (CST) Message-ID: <4935ECE3.70607@sandeen.net> Date: Tue, 02 Dec 2008 20:20:19 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 01/22] fix compile on 32 bit systems Subject: Re: [patch 01/22] fix compile on 32 bit systems References: <20081202160430.775774000@bombadil.infradead.org> <20081202160649.658660000@bombadil.infradead.org> In-Reply-To: <20081202160649.658660000@bombadil.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: 1228271154 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.11780 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- (to be formal about it) > Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen From sandeen@sandeen.net Tue Dec 2 20:27:06 2008 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 mB32R6tg006360 for ; Tue, 2 Dec 2008 20:27:06 -0600 X-ASG-Debug-ID: 1228271225-660600e30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AAD6A162E532 for ; Tue, 2 Dec 2008 18:27:05 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id YS6PQLsGr1HIYFZz for ; Tue, 02 Dec 2008 18:27:05 -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 sandeen.net (Postfix) with ESMTP id C228DAABFC0; Tue, 2 Dec 2008 20:22:04 -0600 (CST) Message-ID: <4935ED4C.2070205@sandeen.net> Date: Tue, 02 Dec 2008 20:22:04 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 04/22] remove unused prototypes for xfs_ihash_init / xfs_ihash_free Subject: Re: [patch 04/22] remove unused prototypes for xfs_ihash_init / xfs_ihash_free References: <20081202160430.775774000@bombadil.infradead.org> <20081202160650.066779000@bombadil.infradead.org> In-Reply-To: <20081202160650.066779000@bombadil.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: 1228271225 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.11780 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Christoph Hellwig wrote: > Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen From david@fromorbit.com Tue Dec 2 20:13:49 2008 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 mB32DnO6005315 for ; Tue, 2 Dec 2008 20:13:49 -0600 X-ASG-Debug-ID: 1228270427-660700460000-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 EB26B166647C for ; Tue, 2 Dec 2008 18:13: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 R14PNDkxlPMFZIt1 for ; Tue, 02 Dec 2008 18:13:48 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAL95NUl5LJfT/2dsb2JhbADSfoJ/ X-IronPort-AV: E=Sophos;i="4.33,705,1220193000"; d="scan'208";a="268308608" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 03 Dec 2008 12:43:22 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7hEw-0007wu-7n; Wed, 03 Dec 2008 13:13:22 +1100 Date: Wed, 3 Dec 2008 13:13:22 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 04/22] remove unused prototypes for xfs_ihash_init / xfs_ihash_free Subject: Re: [patch 04/22] remove unused prototypes for xfs_ihash_init / xfs_ihash_free Message-ID: <20081203021322.GC18236@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20081202160430.775774000@bombadil.infradead.org> <20081202160650.066779000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160650.066779000@bombadil.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: 1228270428 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0203 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.11778 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 11:04:34AM -0500, Christoph Hellwig wrote: > > Signed-off-by: Christoph Hellwig I must have missed these when removing the ihash.... Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Dec 2 20:34:57 2008 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 mB32Yuja007031 for ; Tue, 2 Dec 2008 20:34:57 -0600 X-ASG-Debug-ID: 1228271694-660901780000-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 1438D1664BF7 for ; Tue, 2 Dec 2008 18:34:55 -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 ebzFvap36RSD3zdx for ; Tue, 02 Dec 2008 18:34:55 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEABd9NUl5LJfT/2dsb2JhbADSf4J/ X-IronPort-AV: E=Sophos;i="4.33,705,1220193000"; d="scan'208";a="268318492" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 03 Dec 2008 12:59:52 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7hUt-0008Ji-0m; Wed, 03 Dec 2008 13:29:51 +1100 Date: Wed, 3 Dec 2008 13:29:50 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 05/22] cleanup the inode reclaim path Subject: Re: [patch 05/22] cleanup the inode reclaim path Message-ID: <20081203022950.GD18236@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20081202160430.775774000@bombadil.infradead.org> <20081202160650.198364000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160650.198364000@bombadil.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: 1228271696 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.11780 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 11:04:35AM -0500, Christoph Hellwig wrote: > Merge xfs_iextract and xfs_idestory into xfs_ireclaim as they are never xfs_idestroy > called individually. Also rewrite most comments in this area as they > were serverly out of date. severely > > Signed-off-by: Christoph Hellwig > > Index: xfs-master/fs/xfs/xfs_iget.c > =================================================================== > --- xfs-master.orig/fs/xfs/xfs_iget.c 2008-12-01 19:26:04.000000000 +0100 > +++ xfs-master/fs/xfs/xfs_iget.c 2008-12-01 19:27:15.000000000 +0100 > @@ -450,65 +450,109 @@ xfs_iput_new( > IRELE(ip); > } > > - > /* > - * This routine embodies the part of the reclaim code that pulls > - * the inode from the inode hash table and the mount structure's > - * inode list. > - * This should only be called from xfs_reclaim(). > + * This is called free all the memory associated with an inode. * xfs_ireclaim is called to free.... > + * It must free the inode itself and any buffers allocated for > + * if_extents/if_data and if_broot. It must also free the lock > + * associated with the inode. > + * > + * Note: because we don't initialise everything on reallocation out > + * of the zone, we must ensure we nullify everything correctly before > + * freeing the structure. > */ > void > -xfs_ireclaim(xfs_inode_t *ip) > +xfs_ireclaim( > + struct xfs_inode *ip) > { > - /* > - * Remove from old hash list and mount list. > - */ > - XFS_STATS_INC(xs_ig_reclaims); > + struct xfs_mount *mp = ip->i_mount; > + struct xfs_perag *pag; > > - xfs_iextract(ip); > + XFS_STATS_INC(xs_ig_reclaims); > > /* > - * Here we do a spurious inode lock in order to coordinate with inode > - * cache radix tree lookups. This is because the lookup can reference > - * the inodes in the cache without taking references. We make that OK > - * here by ensuring that we wait until the inode is unlocked after the > - * lookup before we go ahead and free it. We get both the ilock and > - * the iolock because the code may need to drop the ilock one but will > - * still hold the iolock. > + * Remove the inode from the per-AG radix tree. It doesn't matter > + * if it was never added to it because radix_tree_delete can deal > + * with that case just fine. > */ > - xfs_ilock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); > + pag = xfs_get_perag(mp, ip->i_ino); > + write_lock(&pag->pag_ici_lock); > + radix_tree_delete(&pag->pag_ici_root, XFS_INO_TO_AGINO(mp, ip->i_ino)); > + write_unlock(&pag->pag_ici_lock); > + xfs_put_perag(mp, pag); > > /* > - * Release dquots (and their references) if any. An inode may escape > - * xfs_inactive and get here via vn_alloc->vn_reclaim path. > + * Here we do an (almost) spurious inode lock in order to coordinate > + * with inode cache radix tree lookups. This is because the lookup > + * can reference the inodes in the cache without taking references. > + * > + * We make that OK here by ensuring that we wait until the inode is > + * unlocked after the lookup before we go ahead and free it. We get > + * both the ilock and the iolock because the code may need to drop the > + * ilock one but will still hold the iolock. > */ Hmmm - I need to check if this is still true. We now use igrab() to get a reference on all lookups except the reclaim lookup. In the case of a racing reclaim lookup, we check for the reclaim flags on the inode after the lookup but before we try to lock the inode. Hence this lock check probably doesn't do anything anymore, but I need to look a bit closer.... Other than the typos, the code looks ok, so: Reviewed-by: Dave Chinner Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Dec 2 20:37:58 2008 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 mB32bwj9007258 for ; Tue, 2 Dec 2008 20:37:58 -0600 X-ASG-Debug-ID: 1228271876-660801a40000-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 C7CB21664C10 for ; Tue, 2 Dec 2008 18:37:56 -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 tjyAnG15L7krGIDY for ; Tue, 02 Dec 2008 18:37:56 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEABd9NUl5LJfT/2dsb2JhbADSf4J/ X-IronPort-AV: E=Sophos;i="4.33,705,1220193000"; d="scan'208";a="268324488" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 03 Dec 2008 13:07:55 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7hcg-0008UF-P7; Wed, 03 Dec 2008 13:37:54 +1100 Date: Wed, 3 Dec 2008 13:37:54 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 06/22] kill xfs_buf_iostart Subject: Re: [patch 06/22] kill xfs_buf_iostart Message-ID: <20081203023754.GE18236@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20081202160430.775774000@bombadil.infradead.org> <20081202160650.360918000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160650.360918000@bombadil.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: 1228271877 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.11780 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 11:04:36AM -0500, Christoph Hellwig wrote: > xfs_buf_iostart is a "shared" helper for xfs_buf_read_flags, > xfs_bawrite, and xfs_bdwrite - except that there isn't much shared > code but rather special cases for each caller. > > So remove this function and move the functionality to the caller. > xfs_bawrite and xfs_bdwrite are now big enough to be moved out of > line and the xfs_buf_read_flags is moved into a new helper called > _xfs_buf_read. > > (First sent on August 2nd) > > Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Dec 2 20:39:52 2008 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 mB32dqZ2007461 for ; Tue, 2 Dec 2008 20:39:52 -0600 X-ASG-Debug-ID: 1228271989-660901b30000-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 B0A0D1664C33 for ; Tue, 2 Dec 2008 18:39: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 rGlVj07GeOuWf3mA for ; Tue, 02 Dec 2008 18:39:50 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEABd9NUl5LJfT/2dsb2JhbADSf4J/ X-IronPort-AV: E=Sophos;i="4.33,705,1220193000"; d="scan'208";a="268325747" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 03 Dec 2008 13:09:49 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7heW-00004z-SY; Wed, 03 Dec 2008 13:39:48 +1100 Date: Wed, 3 Dec 2008 13:39:48 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 07/22] stop using igrab in xfs_vn_link Subject: Re: [patch 07/22] stop using igrab in xfs_vn_link Message-ID: <20081203023948.GF18236@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20081202160430.775774000@bombadil.infradead.org> <20081202160650.515494000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160650.515494000@bombadil.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: 1228271991 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0010 1.0000 -2.0145 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 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.11780 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 11:04:37AM -0500, Christoph Hellwig wrote: > ->link is guranteed to get an already reference inode passed so we > can do a simple increment of i_count instead of using igrab and thus > avoid banging on the global inode_lock. This is what most filesystems > already do. > > Also move the increment after the call to xfs_link to simplify error > handling. > > (First sent on July 26th) > > Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Dec 2 20:56:25 2008 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 mB32uPTu008724 for ; Tue, 2 Dec 2008 20:56:25 -0600 X-ASG-Debug-ID: 1228272982-12c8001d0000-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 3CC3716104C9 for ; Tue, 2 Dec 2008 18:56:23 -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 GrqJaRGYEKAS2iIg for ; Tue, 02 Dec 2008 18:56:23 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAEuENUl5LJfT/2dsb2JhbADSf4J/ X-IronPort-AV: E=Sophos;i="4.33,705,1220193000"; d="scan'208";a="268335536" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 03 Dec 2008 13:26:15 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7huQ-0000U5-AT; Wed, 03 Dec 2008 13:56:14 +1100 Date: Wed, 3 Dec 2008 13:56:14 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 08/22] reduce l_icloglock roundtrips Subject: Re: [patch 08/22] reduce l_icloglock roundtrips Message-ID: <20081203025614.GG18236@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20081202160430.775774000@bombadil.infradead.org> <20081202160650.663976000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160650.663976000@bombadil.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: 1228272984 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.11782 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 11:04:38AM -0500, Christoph Hellwig wrote: > All but one caller of xlog_state_want_sync drop and re-acquire > l_icloglock around the call to it, just so that xlog_state_want_sync can > acquire and drop it. Not really a performance problem, though, because the one caller that doesn't already hold the lock is the common path (i.e. xlog_write()); the others are in the unmount path, so lock traffic is not there is not performance critical.... Hence I'm not sure this is really necessary. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Dec 2 20:59:26 2008 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 mB32xQCK008910 for ; Tue, 2 Dec 2008 20:59:26 -0600 X-ASG-Debug-ID: 1228273156-34c203c10000-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 C83AB16436F4 for ; Tue, 2 Dec 2008 18:59:17 -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 Ejlxpcoz5TuMnjE1 for ; Tue, 02 Dec 2008 18:59:17 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAEuENUl5LJfT/2dsb2JhbADSf4J/ X-IronPort-AV: E=Sophos;i="4.33,705,1220193000"; d="scan'208";a="268336243" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 03 Dec 2008 13:27:19 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7hvP-0000Vb-AW; Wed, 03 Dec 2008 13:57:15 +1100 Date: Wed, 3 Dec 2008 13:57:15 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 10/22] kill dead quota flags Subject: Re: [patch 10/22] kill dead quota flags Message-ID: <20081203025715.GI18236@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20081202160430.775774000@bombadil.infradead.org> <20081202160650.974883000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160650.974883000@bombadil.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: 1228273158 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0029 1.0000 -2.0021 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.00 X-Barracuda-Spam-Status: No, SCORE=-2.00 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.11782 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 11:04:40AM -0500, Christoph Hellwig wrote: > > Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Dec 2 20:59:28 2008 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 mB32xR45008920 for ; Tue, 2 Dec 2008 20:59:28 -0600 X-ASG-Debug-ID: 1228273156-34c203c10001-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 137D216436F6 for ; Tue, 2 Dec 2008 18:59: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 cqDl0Lq0a300GvG1 for ; Tue, 02 Dec 2008 18:59:19 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAEuENUl5LJfT/2dsb2JhbADSf4J/ X-IronPort-AV: E=Sophos;i="4.33,705,1220193000"; d="scan'208";a="268337670" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 03 Dec 2008 13:29:15 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7hxK-0000Y7-Rm; Wed, 03 Dec 2008 13:59:14 +1100 Date: Wed, 3 Dec 2008 13:59:14 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 12/22] kill dead inode flags Subject: Re: [patch 12/22] kill dead inode flags Message-ID: <20081203025914.GJ18236@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20081202160430.775774000@bombadil.infradead.org> <20081202160651.264876000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160651.264876000@bombadil.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: 1228273160 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0015 1.0000 -2.0112 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 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.11782 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 11:04:42AM -0500, Christoph Hellwig wrote: > There are a few inode flags around that aren't used anywhere, so remove > them. Also update xfsidbg to display all used inode flags correctly. > > (First sent on July 23nd) > > Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Dec 2 21:02:59 2008 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 mB332xo7009261 for ; Tue, 2 Dec 2008 21:02:59 -0600 X-ASG-Debug-ID: 1228273376-756a01cd0000-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 1A0AE166D82F for ; Tue, 2 Dec 2008 19:02:57 -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 x0NpyK2cKhAwsvLg for ; Tue, 02 Dec 2008 19:02:57 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAEuENUl5LJfT/2dsb2JhbADSf4J/ X-IronPort-AV: E=Sophos;i="4.33,705,1220193000"; d="scan'208";a="268335863" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 03 Dec 2008 13:26:44 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7huu-0000Uq-IE; Wed, 03 Dec 2008 13:56:44 +1100 Date: Wed, 3 Dec 2008 13:56:44 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 09/22] remove dead code from sv_t implementation Subject: Re: [patch 09/22] remove dead code from sv_t implementation Message-ID: <20081203025644.GH18236@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20081202160430.775774000@bombadil.infradead.org> <20081202160650.829703000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160650.829703000@bombadil.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: 1228273379 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.11782 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 11:04:39AM -0500, Christoph Hellwig wrote: > > Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Dec 2 21:09:28 2008 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 mB339Svh009575 for ; Tue, 2 Dec 2008 21:09:28 -0600 X-ASG-Debug-ID: 1228273766-348f03ca0000-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 F4065166E50D for ; Tue, 2 Dec 2008 19:09:27 -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 5nO8q1vCgb6K4LCt for ; Tue, 02 Dec 2008 19:09:27 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAEuENUl5LJfT/2dsb2JhbADSf4J/ X-IronPort-AV: E=Sophos;i="4.33,705,1220193000"; d="scan'208";a="268342832" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 03 Dec 2008 13:36:30 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7i4L-0000iM-3f; Wed, 03 Dec 2008 14:06:29 +1100 Date: Wed, 3 Dec 2008 14:06:29 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 17/22] no explicit xfs_iflush for special inodes during unmount Subject: Re: [patch 17/22] no explicit xfs_iflush for special inodes during unmount Message-ID: <20081203030629.GN18236@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20081202160430.775774000@bombadil.infradead.org> <20081202160651.992698000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160651.992698000@bombadil.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: 1228273767 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.11782 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 11:04:47AM -0500, Christoph Hellwig wrote: > Currently we explicitly call xfs_iflush on the quota, real-time and root > inodes from xfs_unmount_flush. But we just called xfs_sync_inodes with > SYNC_ATTR and do an XFS_bflush aka xfs_flush_buftarg to make sure all inodes > are on disk already, so there is no need for these special cases. > > > Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Dec 2 21:09:30 2008 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 mB339Tk1009582 for ; Tue, 2 Dec 2008 21:09:30 -0600 X-ASG-Debug-ID: 1228273766-348f03ca0001-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 3D696166E531 for ; Tue, 2 Dec 2008 19:09:28 -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 KuFCRbLmFQU0MRI7 for ; Tue, 02 Dec 2008 19:09:28 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAEuENUl5LJfT/2dsb2JhbADSf4J/ X-IronPort-AV: E=Sophos;i="4.33,705,1220193000"; d="scan'208";a="268339336" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 03 Dec 2008 13:31:28 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7hzU-0000bT-Gh; Wed, 03 Dec 2008 14:01:28 +1100 Date: Wed, 3 Dec 2008 14:01:28 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 14/22] remove leftovers of shared read-only support Subject: Re: [patch 14/22] remove leftovers of shared read-only support Message-ID: <20081203030128.GL18236@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20081202160430.775774000@bombadil.infradead.org> <20081202160651.583993000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160651.583993000@bombadil.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: 1228273769 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.11782 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 11:04:44AM -0500, Christoph Hellwig wrote: > We never supported shared read-only filesystems, so remove the dead > code left over from IRIX for it. > > > Signed-off-by: Christoph Hellwig ...... > - if (!ronly || !(mp->m_sb.sb_flags & XFS_SBF_READONLY) || > - (mp->m_sb.sb_shared_vn != 0)) > - return XFS_ERROR(EINVAL); > - > - mp->m_flags |= XFS_MOUNT_SHARED; You can kill XFS_MOUNT_SHARED from xfs_mount.h as well. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Dec 2 21:09:31 2008 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 mB339VKJ009589 for ; Tue, 2 Dec 2008 21:09:31 -0600 X-ASG-Debug-ID: 1228273766-348f03ca0002-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 B1025166E533 for ; Tue, 2 Dec 2008 19:09:29 -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 d0fp2APhS3HiNdB2 for ; Tue, 02 Dec 2008 19:09:29 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAEuENUl5LJfT/2dsb2JhbADSf4J/ X-IronPort-AV: E=Sophos;i="4.33,705,1220193000"; d="scan'208";a="268343940" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 03 Dec 2008 13:38:17 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7i65-0000kh-Fa; Wed, 03 Dec 2008 14:08:17 +1100 Date: Wed, 3 Dec 2008 14:08:17 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 18/22] kill xfs_unmount_flush Subject: Re: [patch 18/22] kill xfs_unmount_flush Message-ID: <20081203030817.GO18236@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20081202160430.775774000@bombadil.infradead.org> <20081202160652.147347000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160652.147347000@bombadil.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: 1228273770 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.11782 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 11:04:48AM -0500, Christoph Hellwig wrote: > There's almost nothing left in this function, instead remove the IRELE > on the real times inodes and the call to XFS_QM_UNMOUNT into xfs_unmountfs. > > For the regular unmount case that means it now also happenes after dmapi > notification, but otherwise there is no difference in behaviour. > > > Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Dec 2 21:13:36 2008 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 mB33Daxp010022 for ; Tue, 2 Dec 2008 21:13:36 -0600 X-ASG-Debug-ID: 1228274013-660903190000-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 4C9B615BFC89 for ; Tue, 2 Dec 2008 19:13:34 -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 KcnAgBQwyu0dFVIC for ; Tue, 02 Dec 2008 19:13:34 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAEuENUl5LJfT/2dsb2JhbADSf4J/ X-IronPort-AV: E=Sophos;i="4.33,705,1220193000"; d="scan'208";a="268341071" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 03 Dec 2008 13:33:49 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7i1k-0000eQ-2w; Wed, 03 Dec 2008 14:03:48 +1100 Date: Wed, 3 Dec 2008 14:03:48 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 16/22] use xfs_trans_ijoin in xfs_trans_iget Subject: Re: [patch 16/22] use xfs_trans_ijoin in xfs_trans_iget Message-ID: <20081203030348.GM18236@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20081202160430.775774000@bombadil.infradead.org> <20081202160651.861936000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160651.861936000@bombadil.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: 1228274015 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.11782 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 11:04:46AM -0500, Christoph Hellwig wrote: > Use xfs_trans_ijoin in xfs_trans_iget in case we need to join an inode into > a transaction instead of opencoding it. Based on a discussion with and an > incomplete patch from Niv Sardi. > > > Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Dec 2 21:13:37 2008 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 mB33DbhK010029 for ; Tue, 2 Dec 2008 21:13:37 -0600 X-ASG-Debug-ID: 1228274013-660903190001-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 A6BBC15C2E8A for ; Tue, 2 Dec 2008 19:13:35 -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 kMT9GDStJa12HDuQ for ; Tue, 02 Dec 2008 19:13:35 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAM6HNUl5LJfT/2dsb2JhbADSe4J/ X-IronPort-AV: E=Sophos;i="4.33,705,1220193000"; d="scan'208";a="268347853" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 03 Dec 2008 13:43:20 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7iAx-0000qx-Cs; Wed, 03 Dec 2008 14:13:19 +1100 Date: Wed, 3 Dec 2008 14:13:19 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 19/22] kill vn_ioerror Subject: Re: [patch 19/22] kill vn_ioerror Message-ID: <20081203031319.GP18236@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20081202160430.775774000@bombadil.infradead.org> <20081202160652.335328000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160652.335328000@bombadil.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: 1228274016 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0007 1.0000 -2.0165 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.11782 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 11:04:49AM -0500, Christoph Hellwig wrote: > There's just one caller of this helper, and it's much cleaner to just merge > the xfs_do_force_shutdown call into it. > > > Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Dec 2 21:17:29 2008 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 mB33HSBc010912 for ; Tue, 2 Dec 2008 21:17:29 -0600 X-ASG-Debug-ID: 1228274246-6f6002960000-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 AF98F16220C3 for ; Tue, 2 Dec 2008 19:17:26 -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 VnQxEWwch2ZYldyC for ; Tue, 02 Dec 2008 19:17:26 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAM6HNUl5LJfT/2dsb2JhbADSe4J/ X-IronPort-AV: E=Sophos;i="4.33,705,1220193000"; d="scan'208";a="268350601" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 03 Dec 2008 13:47:20 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7iEp-0000yJ-55; Wed, 03 Dec 2008 14:17:19 +1100 Date: Wed, 3 Dec 2008 14:17:19 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 20/22] move vn_iowait / vn_iowake into xfs_aops.c Subject: Re: [patch 20/22] move vn_iowait / vn_iowake into xfs_aops.c Message-ID: <20081203031719.GQ18236@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20081202160430.775774000@bombadil.infradead.org> <20081202160652.542003000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160652.542003000@bombadil.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: 1228274247 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.11782 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 11:04:50AM -0500, Christoph Hellwig wrote: > The whole machinery to wait on I/O completion is related to the I/O path > and should be there instead of in xfs_vnode.c. Also give the functions > more descriptive names. I'm not sure that "xfs_ioend_..." is the best name - it looks slightly weird in some of the callers' contexts. Just dropping the "end" out of the names makes the code read much better (i.e. xfs_io_wait() and xfs_io_wake()). Not particularly important, though, and everything else looks good. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Dec 2 21:24:06 2008 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 mB33O6HS011297 for ; Tue, 2 Dec 2008 21:24:06 -0600 X-ASG-Debug-ID: 1228274644-660703510000-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 1C0B6166D60E for ; Tue, 2 Dec 2008 19:24:05 -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 5SYTt2DNo1yhlHbI for ; Tue, 02 Dec 2008 19:24:05 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAM6HNUl5LJfT/2dsb2JhbADSe4J/ X-IronPort-AV: E=Sophos;i="4.33,705,1220193000"; d="scan'208";a="268355359" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 03 Dec 2008 13:54:03 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7iLK-00017V-99; Wed, 03 Dec 2008 14:24:02 +1100 Date: Wed, 3 Dec 2008 14:24:02 +1100 From: Dave Chinner To: Jan Engelhardt Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Disk full during delayed allocation Subject: Re: Disk full during delayed allocation Message-ID: <20081203032402.GT18236@disturbed> Mail-Followup-To: Jan Engelhardt , 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: 1228274646 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0184 1.0000 -1.9014 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.90 X-Barracuda-Spam-Status: No, SCORE=-1.90 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.11784 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 09:02:25PM +0100, Jan Engelhardt wrote: > Hi, > > > on space-constrained filesystems, I noticed that extracting lots of > files [about 10k] bumps the Used count up quickly leading to a disk full > unless the extraction process (rpm here) is halted, synced, and then > continued. I believe this is fully within XFS's standard behavior, but I > would like to learn more how exactly this can happen. Outstanding delayed allocation has reservations for metadata blocks that *may* be required to do the delayed allocation. most delalloc's don't require metadata blocks to be allocated and hence when the data is sync'd the reservation is freed and there is "magically" more space available. > My guess is that > this is due to the "dynamic journal/log" size XFS employs It is not dynamic. The XFS journal size is fixed at mkfs time - it's just that it is sized according to the size of the filesystem being made.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Dec 2 21:24:09 2008 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 mB33O9bw011318 for ; Tue, 2 Dec 2008 21:24:09 -0600 X-ASG-Debug-ID: 1228274644-660703510001-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 A3ED7166D60F for ; Tue, 2 Dec 2008 19:24:07 -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 pqSLCMyufcSGse1Q for ; Tue, 02 Dec 2008 19:24:07 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAM6HNUl5LJfT/2dsb2JhbADSe4J/ X-IronPort-AV: E=Sophos;i="4.33,705,1220193000"; d="scan'208";a="268351416" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 03 Dec 2008 13:48:30 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7iFy-000107-2m; Wed, 03 Dec 2008 14:18:30 +1100 Date: Wed, 3 Dec 2008 14:18:30 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 21/22] move inode tracing out of xfs_vnode. Subject: Re: [patch 21/22] move inode tracing out of xfs_vnode. Message-ID: <20081203031829.GR18236@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20081202160430.775774000@bombadil.infradead.org> <20081202160652.734778000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160652.734778000@bombadil.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: 1228274648 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0002 1.0000 -2.0199 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.11784 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 11:04:51AM -0500, Christoph Hellwig wrote: > Move the inode tracing into xfs_iget.c / xfs_inode.h and kill xfs_vnode.c > now that it's empty. > > > Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From xaiki@sgi.com Tue Dec 2 21:37:40 2008 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 relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB33bdVm012269 for ; Tue, 2 Dec 2008 21:37:40 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id 275F48F8064; Tue, 2 Dec 2008 19:37:34 -0800 (PST) Received: from itchy.melbourne.sgi.com (itchy.melbourne.sgi.com [134.14.55.96]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA20830; Wed, 3 Dec 2008 14:37:32 +1100 From: Niv Sardi To: Russell Cattelan Cc: lachlan@sgi.com, xfs@oss.sgi.com Subject: Re: New XFS git tree on oss.sgi.com References: <492BA7AD.5080007@sgi.com> <20081125081644.GA20644@infradead.org> <492C0B3D.3040002@thebarn.com> <492CA07F.1030803@sgi.com> <492CC201.3080304@xfs.org> Date: Wed, 03 Dec 2008 14:37:27 +1100 In-Reply-To: <492CC201.3080304@xfs.org> (Russell Cattelan's message of "Tue, 25 Nov 2008 21:26:57 -0600") Message-ID: User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/22.2 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Russell Cattelan writes: > Lachlan McIlroy wrote: > >> Russell Cattelan wrote: >>> Christoph Hellwig wrote: >>>> On Tue, Nov 25, 2008 at 06:22:21PM +1100, Lachlan McIlroy wrote: >>>> >>>>> There's a few branches there already: >>>>> >>>>> 'master' This will contain all the latest xfs changes not yet >>>>> pushed >>>>> to mainline. >>>>> 'mainline' This is vanilla mainline and will updated regularly. >>>>> 'for-linus' Our staging branch for pull requests >>>>> 'xfs-dev' This branch will contain KDB and other supporting >>>>> code for >>>>> development and should be identical to the old CVS >>>>> tree. >>>>> >>>>> Feel free to start using it and let us know if you have any issues. >>>>> >>>> >>>> Any chance to have these as separate git trees instead of branches? >>>> >>>> In either case, do you expect patches against the xfs-dev or the master >>>> tree? It would also be useful if the trees and which one to be used >>>> could be documented on oss.sgi.com/projects/xfs or xfs.org. >>>> >>>> >>> Specifically this page please. >>> http://xfs.org/index.php/Getting_the_latest_source_code> Sure. I didn't even know that page existed. >> >>> >>> Maybe add a quick tutorial on git branches and how to create tracking >>> branches for this tree. >> Can we just point people at an existing git tutorial? Or are you wanting >> something specific to our processes? > most git tutorials seem to be specific to one particular process so > maybe a link to > a reasonable howto and then a few extra examples blurbs on how to create > and deal > with tracking branches. > > Maybe how to create tracking clones for each branch if that is what > people want to do. > > Personally I like branches as they help keep the tree cluster down and I > don't have to think > up naming schemes to help me remember what is what, but sounds like some > people may > like having multiple clones. Sorry, I've been droped out, the mailining list change confused my procmail. $ git clone git://oss.sgi.com/xfs/xfs.git # checking out xfs-dev and making it track the repo: $ git checkout -b xfs-dev --track origin/xfs-dev # adding a remote $ git remote add $name $remoteurl $ git remote udpate that will put your remote branches in the $name/$branch namespace. Anything else ? >>> Also can we have something other than "unnamed repository" in the >>> description file? >> Okay, how do we change that? >> >>> >>>> _______________________________________________ >>>> xfs mailing list >>>> xfs@oss.sgi.com >>>> http://oss.sgi.com/mailman/listinfo/xfs>>> >>> >>> >> > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs -- Niv Sardi From xaiki@sgi.com Tue Dec 2 21:46:05 2008 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 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 mB33k5uG013039 for ; Tue, 2 Dec 2008 21:46:05 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id E32D330408B; Tue, 2 Dec 2008 19:46:00 -0800 (PST) Received: from itchy.melbourne.sgi.com (itchy.melbourne.sgi.com [134.14.55.96]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA21038; Wed, 3 Dec 2008 14:45:57 +1100 From: Niv Sardi To: Timothy Shimmin Cc: Lachlan McIlroy , Christoph Hellwig , xfs@oss.sgi.com Subject: Re: New XFS git tree on oss.sgi.com References: <492BA7AD.5080007@sgi.com> <20081125081644.GA20644@infradead.org> <492C9FB9.3090204@sgi.com> <20081126020009.GF6291@disturbed> <492CC287.3070709@sgi.com> <20081126040840.GG6291@disturbed> Date: Wed, 03 Dec 2008 14:45:52 +1100 In-Reply-To: <20081126040840.GG6291@disturbed> (Dave Chinner's message of "Wed, 26 Nov 2008 15:08:40 +1100") Message-ID: User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/22.2 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii [Catching up on old mail] Dave Chinner writes: > On Wed, Nov 26, 2008 at 02:29:11PM +1100, Timothy Shimmin wrote: > >> Dave Chinner wrote: >> > On Wed, Nov 26, 2008 at 12:00:41PM +1100, Lachlan McIlroy wrote: >> >> Christoph Hellwig wrote: >> >>> In either case, do you expect patches against the xfs-dev or the master >> >>> tree? It would also be useful if the trees and which one to be used >> >>> could be documented on oss.sgi.com/projects/xfs or xfs.org. >> >> We would prefer patches based on the master branch but patches can be >> >> against the mainline, master or xfs-dev branches. If a patch against >> >> mainline or xfs-dev doesn't apply cleanly to the master branch we may >> >> ask the author to rebase that patch against the master branch. If a >> >> patch to the master branch needs auxillary changes to files that only >> >> exist in the xfs-dev branch (ie xfsidbg stuff) we may ask for an >> >> additional patch from the author. >> > >> > IIUC correctly, you are saying that we'll have to provide two >> > different versions of every patch set? i.e. one that applies to >> > the -master branch and potentially another that applies to the >> > -xfs-dev branch? >> > >> No, that's not how I was envisaging this. >> If you are not interested in modifying xfsidbg.c or dmapi >> then I'd expect you to only send patches against the master branch. > > Ok, but that conflicts with "we may ask for an additional patch". > > I'm trying to understand how we (i.e. those of us outside SGI) are > expected to use these branches. The new setup doesn't seem any > different to the old trees - there's one repository but really it is > still two "trees" that will require "external merging" to move > complex changes between them. you can work with xfs-dev or master as you please, if you work on xfs-dev, we would like changes to xfs-dev only files (and bits), to be in separated patches, so that we can push back only those changes to master. branches make sense, as we want to keep those trees as close as possible, and merges will work (from master to xfs-dev, we need, for obvious reasons, to cherry-pick the other way around). >> I was expecting the xfs-team when they pull in or git-am the >> patches to update the other branch accordingly. > > It might help to describe how you're expecting patches to flow > from the developers up to Linus - that might help us understand > how we should use these trees (i.e. describe the workflow you > expect to be using).... > > Also, how does a "pull request" from a developer fit into this? [DEV]-(am||pull)->[master]->[LINUS] +-(merge)->[xfs-dev] OR [DEV]-(am||pull)->[xfs-dev,xfs-dev/{kdb,idbg,dmapi}] +-(cherry pick)->[master]->[LINUS] Cheers, -- Niv Sardi From xaiki@sgi.com Tue Dec 2 21:49:10 2008 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 relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB33n82S013254 for ; Tue, 2 Dec 2008 21:49:10 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay3.corp.sgi.com (Postfix) with SMTP id 6C0A4AC004; Tue, 2 Dec 2008 19:49:04 -0800 (PST) Received: from itchy.melbourne.sgi.com (itchy.melbourne.sgi.com [134.14.55.96]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA21065; Wed, 3 Dec 2008 14:49:02 +1100 From: Niv Sardi To: Christoph Hellwig Cc: Lachlan McIlroy , xfs@oss.sgi.com Subject: Re: New XFS git tree on oss.sgi.com References: <492BA7AD.5080007@sgi.com> <20081125140553.GA16553@infradead.org> <492CA245.3000709@sgi.com> <20081126032710.GA19523@infradead.org> Date: Wed, 03 Dec 2008 14:48:57 +1100 In-Reply-To: <20081126032710.GA19523@infradead.org> (Christoph Hellwig's message of "Tue, 25 Nov 2008 22:27:10 -0500") Message-ID: User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/22.2 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Christoph Hellwig writes: > On Wed, Nov 26, 2008 at 12:11:33PM +1100, Lachlan McIlroy wrote: > >> Christoph Hellwig wrote: >> > Looking over the -dev tree, can you please revert >> > >> > http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/xfs.git;a=commitdiff;h=c79ae33eebac1c15aa435fb77362fdc5eff2be4d> > >> > All this wasn't needed in the old ptrace tree either, no need to carry it forward. >> >> Is this code needed for the BSD port? > > According to Russell it may be need, but he'll probably need a newer > version than the one check-ed in once he resyncs. And he'll have his > own support dir with the rest of the BSD code. > >> There may be other code that can be removed too. We moved a lot of the code >> that existed only in ptools into the xfs-dev branch so that branch and ptools >> are in sync. This allows us to automatically merge changes back to the old >> ptools tree (yes it still lives). Any merge failures will now be handled >> between git branches and not between different scms. > > The xfs-dev also fortunately doesn't have the modular quota code. So > for both these I'd suggest removing them from the ptools tree, too. > > > Also > http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/xfs.git;a=commitdiff;h=ca830fdf6231d0683f4ea4e9223e234c3a509063doesn't seem to be needed. None of those symbols seems to be used by > either dmapi or xfsidbg, the only two modules using xfs symbols in the > tree. That's exactly why it's there, the revertion is actually moving from what was in ptools to something sane. -- Niv Sardi From david@fromorbit.com Tue Dec 2 21:53:46 2008 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 mB33rkoL013524 for ; Tue, 2 Dec 2008 21:53:46 -0600 X-ASG-Debug-ID: 1228276422-049b02c80000-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 2785D166E543 for ; Tue, 2 Dec 2008 19:53:42 -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 j4Dd5KoRBsVfFnsY for ; Tue, 02 Dec 2008 19:53:42 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAM6HNUl5LJfT/2dsb2JhbADSe4J/ X-IronPort-AV: E=Sophos;i="4.33,705,1220193000"; d="scan'208";a="268352628" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 03 Dec 2008 13:50:14 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7iHd-00012h-Sq; Wed, 03 Dec 2008 14:20:13 +1100 Date: Wed, 3 Dec 2008 14:20:13 +1100 From: Dave Chinner To: Arkadiusz Miskiewicz Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Subject: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Message-ID: <20081203032013.GS18236@disturbed> Mail-Followup-To: Arkadiusz Miskiewicz , xfs@oss.sgi.com References: <200812021949.55463.arekm@maven.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200812021949.55463.arekm@maven.pl> 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: 1228276425 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0028 1.0000 -2.0026 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.00 X-Barracuda-Spam-Status: No, SCORE=-2.00 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.11786 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 07:49:55PM +0100, Arkadiusz Miskiewicz wrote: > > Hello, > > I'm trying to use xfs project quota on kernel 2.6.27.7 (vanilla, no additional > patches), x86_64 UP machine (SMP kernel). > > Now some processes that are using /home/users/arekm/rpm are hanging in D-state > like: > > SysRq : Show Blocked State > task PC stack pid father > patch D ffff88003a7dd080 0 3971 3965 > ffff880034453cd8 0000000000000086 0000000000000000 ffff8800344770d0 > ffff880034453cd8 ffff8800354d2440 ffffffff805d0340 ffff8800354d27b8 > 00000000000041ed 00000000fffc7a61 ffff8800354d27b8 0000000000000250 > Call Trace: > [] ? kmem_zone_alloc+0x94/0xe0 [xfs] > [] __down_write_nested+0x8d/0xd0 > [] __down_write+0xb/0x10 > [] down_write+0x9/0x10 > [] xfs_ilock+0x76/0x90 [xfs] > [] xfs_lock_two_inodes+0x70/0x120 [xfs] > [] xfs_remove+0x141/0x3a0 [xfs] > [] ? _spin_lock+0x9/0x10 > [] xfs_setup_inode+0x673/0xa00 [xfs] > [] vfs_unlink+0xf9/0x140 > [] do_unlinkat+0x1a3/0x1c0 > [] ? audit_syscall_entry+0x150/0x180 > [] sys_unlink+0x11/0x20 > [] system_call_fastpath+0x16/0x1b Can you enable lockdep in your kernel and retest? That will give use much more information about the locks that are causing problems here.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Dec 2 22:39:59 2008 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 mB34dwJ6016038 for ; Tue, 2 Dec 2008 22:39:59 -0600 X-ASG-Debug-ID: 1228279196-6ef500d80000-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 C7647166D8CD for ; Tue, 2 Dec 2008 20:39:56 -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 4fqMdNVGksBfkdRo for ; Tue, 02 Dec 2008 20:39:56 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAEuENUl5LJfT/2dsb2JhbADSf4J/ X-IronPort-AV: E=Sophos;i="4.33,705,1220193000"; d="scan'208";a="268337868" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 03 Dec 2008 13:29:33 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7hxc-0000Ye-VT; Wed, 03 Dec 2008 13:59:32 +1100 Date: Wed, 3 Dec 2008 13:59:32 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 13/22] remove unused m_inode_quiesce member from struct xfs_mount Subject: Re: [patch 13/22] remove unused m_inode_quiesce member from struct xfs_mount Message-ID: <20081203025932.GK18236@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20081202160430.775774000@bombadil.infradead.org> <20081202160651.426074000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160651.426074000@bombadil.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: 1228279197 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.11787 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 11:04:43AM -0500, Christoph Hellwig wrote: > (First sent on July 23rd) > > > Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From donaldd@sgi.com Wed Dec 3 00:26:18 2008 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 relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB36QHGF024847 for ; Wed, 3 Dec 2008 00:26:18 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay3.corp.sgi.com (Postfix) with SMTP id 7DCC5AC004; Tue, 2 Dec 2008 22:26:13 -0800 (PST) Received: from [134.14.55.208] (snowcrash.melbourne.sgi.com [134.14.55.208]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA23784; Wed, 3 Dec 2008 17:26:11 +1100 Message-ID: <49362688.4030200@sgi.com> Date: Wed, 03 Dec 2008 17:26:16 +1100 From: Donald Douwsma User-Agent: Thunderbird 2.0.0.18 (X11/20081125) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com Subject: Re: [patch 11/22] cleanup xfs_sb.h feature flag helpers References: <20081202160430.775774000@bombadil.infradead.org> <20081202160651.115809000@bombadil.infradead.org> In-Reply-To: <20081202160651.115809000@bombadil.infradead.org> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Christoph Hellwig wrote: Looks ok, I think all these used to be macros, but when they got cleaned up a lot of grogens were left in place. I wish we could get all this kind of thing cleaned up right first time... Reviewed-by: Donald Douwsma From tes@sgi.com Wed Dec 3 01:24:34 2008 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_33, J_CHICKENPOX_44,J_CHICKENPOX_63,J_CHICKENPOX_64 autolearn=no 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 mB37OYJW028436 for ; Wed, 3 Dec 2008 01:24:34 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id 781E7304090; Tue, 2 Dec 2008 23:24:29 -0800 (PST) Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id SAA24589; Wed, 3 Dec 2008 18:24:27 +1100 Message-ID: <4936342B.3050608@sgi.com> Date: Wed, 03 Dec 2008 18:24:27 +1100 From: Timothy Shimmin User-Agent: Thunderbird 2.0.0.17 (Macintosh/20080914) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com Subject: Re: [PATCH] xfsqa: add testcase for ->setattr permission checking References: <20081202142039.GA25155@infradead.org> In-Reply-To: <20081202142039.GA25155@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hi Christoph, Thanks for that. I noticed you wanted a 2nd group. I'd probably prefer to do the test like the acl tests (e.g. 051) which uses: - _acl_setup_ids - _acl_filter_id - src/runas They could probably be put in a different common file instead of common.attr and have the function names changed to be without _acl as they are not acl specific. I'm also wondering how I can get away with cat'ing /etc/passwd and /etc/group. I would have thought it would make more sense to have a user1, user2, user3, group1, group2, group3 etc.. I can change the above for the acl tests and perhaps create a common.ids for the funcs which can then be used elsewhere. (The $qa_user came from the CXFSQA test suite.) I'll review the actual test tomorrow. --Tim Christoph Hellwig wrote: > Index: xfs-cmds-git/xfstests/192 > =================================================================== > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > +++ xfs-cmds-git/xfstests/192 2008-12-02 14:16:12.000000000 +0000 > @@ -0,0 +1,177 @@ > +#! /bin/sh > +# FS QA Test No. 192 > +# > +# Test permission checks in ->setattr > +# > +#----------------------------------------------------------------------- > +# 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! > +trap "_cleanup_files; exit \$status" 0 1 2 3 15 > +tag="added by qa $seq" > + > +# > +# For some tests we need a secondary group for the qa_user. Currently > +# that's not available in the framework, so the tests using it are > +# commented out. > +# > +#group2=foo > + > +# > +# Create two files, one owned by root, one by the qa_user > +# > +_create_files() > +{ > + touch test.root > + touch test.${qa_user} > + chown ${qa_user}:${qa_user} test.${qa_user} > +} > + > +# > +# Remove our files again > +# > +_cleanup_files() > +{ > + rm -f test.${qa_user} > + rm -f test.root > +} > + > +# get standard environment, filters and checks > +. ./common.rc > +. ./common.filter > + > +# real QA test starts here > +_supported_fs xfs nfs udf > +_supported_os Linux > + > +_require_user > +_need_to_be_root > + > + > +# > +# make sure we have a normal umask set > +# > +umask 022 > + > + > +# > +# Test the ATTR_UID case > +# > +echo > +echo "testing ATTR_UID" > +echo > + > +_create_files > + > +echo "user: chown root owned file to qa_user (should fail)" > +su ${qa_user} -c "chown root test.${qa_user}" > + > +echo "user: chown root owned file to root (should fail)" > +su ${qa_user} -c "chown root test.root" > + > +echo "user: chown qa_user owned file to qa_user (should succeed)" > +su ${qa_user} -c "chown ${qa_user} test.${qa_user}" > + > +# this would work without _POSIX_CHOWN_RESTRICTED > +echo "user: chown qa_user owned file to root (should fail)" > +su ${qa_user} -c "chown ${qa_user} test.root" > + > +_cleanup_files > + > +# > +# Test the ATTR_GID case > +# > +echo > +echo "testing ATTR_GID" > +echo > + > +_create_files > + > +echo "user: chgrp root owned file to root (should fail)" > +su ${qa_user} -c "chgrp root test.root" > + > +echo "user: chgrp qa_user owned file to root (should fail)" > +su ${qa_user} -c "chgrp root test.${qa_user}" > + > +echo "user: chgrp root owned file to qa_user (should fail)" > +su ${qa_user} -c "chgrp ${qa_user} test.root" > + > +echo "user: chgrp qa_user owned file to qa_user (should suceed)" > +su ${qa_user} -c "chgrp ${qa_user} test.${qa_user}" > + > +#echo "user: chgrp qa_user owned file to secondary group (should suceed)" > +#su ${qa_user} -c "chgrp ${group2} test.${qa_user}" > + > +_cleanup_files > + > + > +# > +# Test the ATTR_MODE case > +# > +echo > +echo "testing ATTR_MODE" > +echo > + > +_create_files > + > +echo "user: chmod a+r on qa_user owned file (should succeed)" > +su ${qa_user} -c "chmod a+r test.${qa_user}" > + > +echo "user: chmod a+r on root owned file (should fail)" > +su ${qa_user} -c "chmod a+r test.root" > + > +# > +# Setup a file owned by the qa_user, but with a group ID that > +# is not present in the qa_users group list (use root to make it easier for it) > +# and mark it with set sgid bit > +# > +echo "check that the sgid bit is cleared" > +chown ${qa_user}:root test.${qa_user} > +chmod g+s test.${qa_user} > + > +# and let the qa_user change permission bits > +su ${qa_user} -c "chmod a+w test.${qa_user}" > +stat -c '%A' test.${qa_user} > + > +# > +# Setup a file owned by the qa_user and with the suid bit set. > +# A chown by root should not clean the suid bit. > +# > +echo "check that suid bit is not cleared" > +chmod u+s test.${qa_user} > +chmod a+w test.${qa_user} > +stat -c '%A' test.${qa_user} > + > +_cleanup_files > + > + > +# > +# Test ATTR_*TIMES_SET > +# > +echo > +echo "testing ATTR_*TIMES_SET" > +echo > + > +_create_files > + > +echo "user: touch qa_user file (should succeed)" > +su ${qa_user} -c "touch test.${qa_user}" > + > +echo "user: touch root file (should fail)" > +su ${qa_user} -c "touch test.root" > + > +_cleanup_files > + > +# success, all done > +echo "*** done" > +rm -f $seq.full > +status=0 > Index: xfs-cmds-git/xfstests/group > =================================================================== > --- xfs-cmds-git.orig/xfstests/group 2008-12-02 14:00:49.000000000 +0000 > +++ xfs-cmds-git/xfstests/group 2008-12-02 14:01:01.000000000 +0000 > @@ -291,3 +291,4 @@ > 189 mount auto > 190 rw auto > 191 nfs4acl auto > +192 auto metadata > Index: xfs-cmds-git/xfstests/192.out > =================================================================== > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > +++ xfs-cmds-git/xfstests/192.out 2008-12-02 14:14:49.000000000 +0000 > @@ -0,0 +1,38 @@ > +QA output created by 192 > + > +testing ATTR_UID > + > +user: chown root owned file to qa_user (should fail) > +chown: changing ownership of `test.fsgqa': Operation not permitted > +user: chown root owned file to root (should fail) > +chown: changing ownership of `test.root': Operation not permitted > +user: chown qa_user owned file to qa_user (should succeed) > +user: chown qa_user owned file to root (should fail) > +chown: changing ownership of `test.root': Operation not permitted > + > +testing ATTR_GID > + > +user: chgrp root owned file to root (should fail) > +chgrp: changing group of `test.root': Operation not permitted > +user: chgrp qa_user owned file to root (should fail) > +chgrp: changing group of `test.fsgqa': Operation not permitted > +user: chgrp root owned file to qa_user (should fail) > +chgrp: changing group of `test.root': Operation not permitted > +user: chgrp qa_user owned file to qa_user (should suceed) > + > +testing ATTR_MODE > + > +user: chmod a+r on qa_user owned file (should succeed) > +user: chmod a+r on root owned file (should fail) > +chmod: changing permissions of `test.root': Operation not permitted > +check that the sgid bit is cleared > +-rw-rw-rw- > +check that suid bit is not cleared > +-rwSrw-rw- > + > +testing ATTR_*TIMES_SET > + > +user: touch qa_user file (should succeed) > +user: touch root file (should fail) > +touch: cannot touch `test.root': Permission denied > +*** done From SRS0+3fb1ed55175b69522a42+1928+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 3 04:48:51 2008 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 mB3AmogE010660 for ; Wed, 3 Dec 2008 04:48:51 -0600 X-ASG-Debug-ID: 1228301329-34cb02200000-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 C29481B92964; Wed, 3 Dec 2008 02:48:49 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id xLCtBgk8bZ5uQ1Cg; Wed, 03 Dec 2008 02:48:49 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7pHl-0004Xl-Dm; Wed, 03 Dec 2008 10:48:49 +0000 Date: Wed, 3 Dec 2008 05:48:49 -0500 From: Christoph Hellwig To: Lachlan McIlroy Cc: Donald Douwsma , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Assertion failed: atomic_read(&mp->m_active_trans) Subject: Re: Assertion failed: atomic_read(&mp->m_active_trans) Message-ID: <20081203104849.GF15485@infradead.org> References: <492BB095.1000104@sgi.com> <4934AAA9.5090405@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4934AAA9.5090405@sgi.com> 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: 1228301329 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com I'd rather fix it properly. Do you guys have a somewhat reliable testcase hitting it? From SRS0+3fb1ed55175b69522a42+1928+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 3 04:52:07 2008 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 mB3Aq7NO010880 for ; Wed, 3 Dec 2008 04:52:07 -0600 X-ASG-Debug-ID: 1228301526-2e5f025e0000-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 DCC221A73A09 for ; Wed, 3 Dec 2008 02:52:06 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id YraYFyBlVtMYEw8W for ; Wed, 03 Dec 2008 02:52:06 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7pKS-0004yQ-3z; Wed, 03 Dec 2008 10:51:36 +0000 Date: Wed, 3 Dec 2008 05:51:36 -0500 From: Christoph Hellwig To: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 08/22] reduce l_icloglock roundtrips Subject: Re: [patch 08/22] reduce l_icloglock roundtrips Message-ID: <20081203105136.GH15485@infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> <20081202160650.663976000@bombadil.infradead.org> <20081203025614.GG18236@disturbed> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081203025614.GG18236@disturbed> 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: 1228301526 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Wed, Dec 03, 2008 at 01:56:14PM +1100, Dave Chinner wrote: > On Tue, Dec 02, 2008 at 11:04:38AM -0500, Christoph Hellwig wrote: > > All but one caller of xlog_state_want_sync drop and re-acquire > > l_icloglock around the call to it, just so that xlog_state_want_sync can > > acquire and drop it. > > Not really a performance problem, though, because the one caller > that doesn't already hold the lock is the common path (i.e. > xlog_write()); the others are in the unmount path, so lock traffic > is not there is not performance critical.... > > Hence I'm not sure this is really necessary. I don't think it's absolutely nessecary, but it's a lot cleaner this way.. From SRS0+3fb1ed55175b69522a42+1928+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 3 04:52:45 2008 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 mB3AqjFc010927 for ; Wed, 3 Dec 2008 04:52:45 -0600 X-ASG-Debug-ID: 1228301564-3d9a01ce0000-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 9138E1672324; Wed, 3 Dec 2008 02:52:44 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id GO7tUsryPnyC1lC7; Wed, 03 Dec 2008 02:52:44 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7pLY-000506-9z; Wed, 03 Dec 2008 10:52:44 +0000 Date: Wed, 3 Dec 2008 05:52:44 -0500 From: Christoph Hellwig To: Donald Douwsma Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 11/22] cleanup xfs_sb.h feature flag helpers Subject: Re: [patch 11/22] cleanup xfs_sb.h feature flag helpers Message-ID: <20081203105244.GI15485@infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> <20081202160651.115809000@bombadil.infradead.org> <49362688.4030200@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49362688.4030200@sgi.com> 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: 1228301564 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Wed, Dec 03, 2008 at 05:26:16PM +1100, Donald Douwsma wrote: > Christoph Hellwig wrote: > > Looks ok, I think all these used to be macros, but when they got cleaned up > a lot of grogens were left in place. I wish we could get all this kind of thing > cleaned up right first time... I think this was Nathan's big sweap to kill xfs_macros.[ch] for the ugly marcros turning into macros calling functions calling the original macro crap. He did this in some sort of scripted way and a lot of things like this were left in place. From SRS0+3fb1ed55175b69522a42+1928+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 3 04:54:23 2008 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 mB3AsMlF011152 for ; Wed, 3 Dec 2008 04:54:23 -0600 X-ASG-Debug-ID: 1228301662-3d9c01f70000-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 67C9C1B8B5D1 for ; Wed, 3 Dec 2008 02:54:22 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id csSXivfu6zHKAJQ5 for ; Wed, 03 Dec 2008 02:54:22 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7pMd-00050p-LG; Wed, 03 Dec 2008 10:53:51 +0000 Date: Wed, 3 Dec 2008 05:53:51 -0500 From: Christoph Hellwig To: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 05/22] cleanup the inode reclaim path Subject: Re: [patch 05/22] cleanup the inode reclaim path Message-ID: <20081203105351.GJ15485@infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> <20081202160650.198364000@bombadil.infradead.org> <20081203022950.GD18236@disturbed> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081203022950.GD18236@disturbed> 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: 1228301662 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Wed, Dec 03, 2008 at 01:29:50PM +1100, Dave Chinner wrote: > On Tue, Dec 02, 2008 at 11:04:35AM -0500, Christoph Hellwig wrote: > > Merge xfs_iextract and xfs_idestory into xfs_ireclaim as they are never > xfs_idestroy > > called individually. Also rewrite most comments in this area as they > > were serverly out of date. > severely Thanks, updated the comments. From SRS0+3fb1ed55175b69522a42+1928+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 3 04:57:40 2008 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 mB3AveqV011354 for ; Wed, 3 Dec 2008 04:57:40 -0600 X-ASG-Debug-ID: 1228301860-2e2b02d90000-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 3B34A1B92785 for ; Wed, 3 Dec 2008 02:57:40 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id u8hMk9twJndKdX7L for ; Wed, 03 Dec 2008 02:57:40 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7pPp-0005Sf-Ek; Wed, 03 Dec 2008 10:57:09 +0000 Date: Wed, 3 Dec 2008 05:57:09 -0500 From: Christoph Hellwig To: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 14/22] remove leftovers of shared read-only support Subject: Re: [patch 14/22] remove leftovers of shared read-only support Message-ID: <20081203105709.GA19287@infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> <20081202160651.583993000@bombadil.infradead.org> <20081203030128.GL18236@disturbed> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081203030128.GL18236@disturbed> 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: 1228301860 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Wed, Dec 03, 2008 at 02:01:28PM +1100, Dave Chinner wrote: > You can kill XFS_MOUNT_SHARED from xfs_mount.h as well. Thanks, updated. From SRS0+3fb1ed55175b69522a42+1928+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 3 04:59:02 2008 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 mB3Ax2c7011502 for ; Wed, 3 Dec 2008 04:59:02 -0600 X-ASG-Debug-ID: 1228301941-2ecf02dd0000-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 1839E1B92795 for ; Wed, 3 Dec 2008 02:59:01 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id DgHHAhvW3OyzAzq2 for ; Wed, 03 Dec 2008 02:59:01 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7pR9-0005ak-9z; Wed, 03 Dec 2008 10:58:31 +0000 Date: Wed, 3 Dec 2008 05:58:31 -0500 From: Christoph Hellwig To: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 20/22] move vn_iowait / vn_iowake into xfs_aops.c Subject: Re: [patch 20/22] move vn_iowait / vn_iowake into xfs_aops.c Message-ID: <20081203105831.GB19287@infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> <20081202160652.542003000@bombadil.infradead.org> <20081203031719.GQ18236@disturbed> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081203031719.GQ18236@disturbed> 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: 1228301942 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Wed, Dec 03, 2008 at 02:17:19PM +1100, Dave Chinner wrote: > On Tue, Dec 02, 2008 at 11:04:50AM -0500, Christoph Hellwig wrote: > > The whole machinery to wait on I/O completion is related to the I/O path > > and should be there instead of in xfs_vnode.c. Also give the functions > > more descriptive names. > > I'm not sure that "xfs_ioend_..." is the best name - it looks > slightly weird in some of the callers' contexts. Just dropping the > "end" out of the names makes the code read much better (i.e. > xfs_io_wait() and xfs_io_wake()). Not particularly important, > though, and everything else looks good. xfs_ioend_* wasn't my first choice either. I first did xfs_iowait/xfs_iowake, but that clashes with the buffercache. And having names just different by an underscore doesn't seem good either. Any other suggestions? From SRS0+3fb1ed55175b69522a42+1928+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 3 06:56:09 2008 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 mB3Cu8aY018382 for ; Wed, 3 Dec 2008 06:56:09 -0600 X-ASG-Debug-ID: 1228308967-167202d50000-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 A61F81BEE974 for ; Wed, 3 Dec 2008 04:56:07 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id V8ZIL38rJKEDm4ol for ; Wed, 03 Dec 2008 04:56:07 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7rGQ-0002VP-1k; Wed, 03 Dec 2008 12:55:34 +0000 Date: Wed, 3 Dec 2008 07:55:34 -0500 From: Christoph Hellwig To: Kamalesh Babulal Cc: Stephen Rothwell , linux-next@vger.kernel.org, LKML , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: next-20081203 build failure, when building xfs_file.o Subject: Re: next-20081203 build failure, when building xfs_file.o Message-ID: <20081203125534.GA8007@infradead.org> References: <20081203183602.c06f8c39.sfr@canb.auug.org.au> <20081203124104.GA5400@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081203124104.GA5400@linux.vnet.ibm.com> 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: 1228308967 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Wed, Dec 03, 2008 at 06:11:04PM +0530, Kamalesh Babulal wrote: > Hi Stephen, > > next-20081203 kernel build fails on x86 with build failure > > In file included from fs/xfs/linux-2.6/xfs_file.c:39: This is the fix I submitted for it yesterday: -- fix compile on 32 bit systems The recent compat patches make xfs_file.c include xfs_ioctl32.h unconditional, which breaks the build on 32 bit systems which don't have the various compat defintions. Remove the include and move the defintion of xfs_file_compat_ioctl to xfs_ioctl.h so that we can avoid including all the compat defintions in xfs_file.c Signed-off-by: Christoph Hellwig Index: xfs-master/fs/xfs/linux-2.6/xfs_file.c =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_file.c 2008-12-02 11:43:38.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_file.c 2008-12-02 11:44:06.000000000 +0100 @@ -36,9 +36,9 @@ #include "xfs_inode.h" #include "xfs_error.h" #include "xfs_rw.h" -#include "xfs_ioctl32.h" #include "xfs_vnodeops.h" #include "xfs_da_btree.h" +#include "xfs_ioctl.h" #include #include Index: xfs-master/fs/xfs/linux-2.6/xfs_ioctl.h =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_ioctl.h 2008-12-02 11:44:10.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_ioctl.h 2008-12-02 11:44:52.000000000 +0100 @@ -67,4 +67,16 @@ xfs_attrmulti_attr_remove( char *name, __uint32_t flags); +extern long +xfs_file_compat_ioctl( + struct file *file, + unsigned int cmd, + unsigned long arg); + +extern long +xfs_file_compat_ioctl_invis( + struct file *file, + unsigned int cmd, + unsigned long arg); + #endif Index: xfs-master/fs/xfs/linux-2.6/xfs_ioctl32.h =================================================================== --- xfs-master.orig/fs/xfs/linux-2.6/xfs_ioctl32.h 2008-12-02 11:44:10.000000000 +0100 +++ xfs-master/fs/xfs/linux-2.6/xfs_ioctl32.h 2008-12-02 11:44:18.000000000 +0100 @@ -20,9 +20,6 @@ #include -extern long xfs_file_compat_ioctl(struct file *, unsigned, unsigned long); -extern long xfs_file_compat_invis_ioctl(struct file *, unsigned, unsigned long); - /* * on 32-bit arches, ioctl argument structures may have different sizes * and/or alignment. We define compat structures which match the From SRS0+3fb1ed55175b69522a42+1928+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 3 07:04:46 2008 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 mB3D4k9V018785 for ; Wed, 3 Dec 2008 07:04:46 -0600 X-ASG-Debug-ID: 1228309485-1174034d0000-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 B3BDC1B92AB4 for ; Wed, 3 Dec 2008 05:04:45 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id VrvMtPJXXOhh6PgK for ; Wed, 03 Dec 2008 05:04:45 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7rOo-0004P3-N8; Wed, 03 Dec 2008 13:04:14 +0000 Date: Wed, 3 Dec 2008 08:04:14 -0500 From: Christoph Hellwig To: Niv Sardi Cc: Christoph Hellwig , Lachlan McIlroy , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: New XFS git tree on oss.sgi.com Subject: Re: New XFS git tree on oss.sgi.com Message-ID: <20081203130414.GB9681@infradead.org> References: <492BA7AD.5080007@sgi.com> <20081125140553.GA16553@infradead.org> <492CA245.3000709@sgi.com> <20081126032710.GA19523@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: 1228309485 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Wed, Dec 03, 2008 at 02:48:57PM +1100, Niv Sardi wrote: > > Also > > http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/xfs.git;a=commitdiff;h=ca830fdf6231d0683f4ea4e9223e234c3a509063doesn't seem to be needed. None of those symbols seems to be used by > > either dmapi or xfsidbg, the only two modules using xfs symbols in the > > tree. > > That's exactly why it's there, the revertion is actually moving from > what was in ptools to something sane. ?? The commit above adds tons of unused exports. But hey, I'll just submit a patch to sort it out when I get some time.. From arekm@maven.pl Wed Dec 3 07:06:48 2008 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 mB3D6m9T018964 for ; Wed, 3 Dec 2008 07:06:48 -0600 X-ASG-Debug-ID: 1228309605-107803980000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from main.carme.maven.pl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 995341BEEA04 for ; Wed, 3 Dec 2008 05:06:46 -0800 (PST) Received: from main.carme.maven.pl (main.carme.maven.pl [193.239.45.138]) by cuda.sgi.com with ESMTP id i8sgnDBnUhSdPDpy for ; Wed, 03 Dec 2008 05:06:46 -0800 (PST) Received: from [83.238.65.58] (port=1160 helo=maven.pl ident=matrix157) by main.carme.maven.pl with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.69) (envelope-from ) id 1L7rRD-000kcp-2i; Wed, 03 Dec 2008 14:06:43 +0100 Received: from arekm by maven.pl with local (Exim 4.69) (envelope-from ) id 1L7rRB-0000WO-VE; Wed, 03 Dec 2008 14:06:42 +0100 From: Arkadiusz Miskiewicz To: Dave Chinner X-ASG-Orig-Subj: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Subject: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Date: Wed, 3 Dec 2008 14:06:41 +0100 User-Agent: PLD Linux KMail/1.9.10 Cc: xfs@oss.sgi.com References: <200812021949.55463.arekm@maven.pl> <20081203032013.GS18236@disturbed> In-Reply-To: <20081203032013.GS18236@disturbed> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Message-Id: <200812031406.41882.arekm@maven.pl> X-Barracuda-Connect: main.carme.maven.pl[193.239.45.138] X-Barracuda-Start-Time: 1228309606 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_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.11816 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id mB3D6m9T018964 On Wednesday 03 of December 2008, Dave Chinner wrote: > On Tue, Dec 02, 2008 at 07:49:55PM +0100, Arkadiusz Miskiewicz wrote: > > Hello, > > > > I'm trying to use xfs project quota on kernel 2.6.27.7 (vanilla, no > > additional patches), x86_64 UP machine (SMP kernel). > > > > Now some processes that are using /home/users/arekm/rpm are hanging in > > D-state like: > > > > SysRq : Show Blocked State > > task PC stack pid father > > patch D ffff88003a7dd080 0 3971 3965 > > ffff880034453cd8 0000000000000086 0000000000000000 ffff8800344770d0 > > ffff880034453cd8 ffff8800354d2440 ffffffff805d0340 ffff8800354d27b8 > > 00000000000041ed 00000000fffc7a61 ffff8800354d27b8 0000000000000250 > > Call Trace: > > [] ? kmem_zone_alloc+0x94/0xe0 [xfs] > > [] __down_write_nested+0x8d/0xd0 > > [] __down_write+0xb/0x10 > > [] down_write+0x9/0x10 > > [] xfs_ilock+0x76/0x90 [xfs] > > [] xfs_lock_two_inodes+0x70/0x120 [xfs] > > [] xfs_remove+0x141/0x3a0 [xfs] > > [] ? _spin_lock+0x9/0x10 > > [] xfs_setup_inode+0x673/0xa00 [xfs] > > [] vfs_unlink+0xf9/0x140 > > [] do_unlinkat+0x1a3/0x1c0 > > [] ? audit_syscall_entry+0x150/0x180 > > [] sys_unlink+0x11/0x20 > > [] system_call_fastpath+0x16/0x1b > > Can you enable lockdep in your kernel and retest? That will give > use much more information about the locks that are causing problems > here.... some debugging (including lockdep) enabled: [ 755.172243] SysRq : Show Blocked State [ 755.172265] task PC stack pid father [ 755.172298] patch D ef59de3c 0 3539 3533 [ 755.172308] c2f47520 00000086 00000002 ef59de3c ef59de44 00000000 ef4b4920 0291f000 [ 755.172324] 00000046 00000010 c2e24100 c0504040 ef59de44 ef59de40 ef59de3c ef59c000 [ 755.172339] ef4b4920 ef4b4aa8 00000000 00021568 00000001 ef4b4920 00000000 00000000 [ 755.172354] Call Trace: [ 755.172359] [] trace_hardirqs_on_caller+0xfa/0x130 [ 755.172371] [] schedule_timeout+0x8d/0xf0 [ 755.172379] [] native_sched_clock+0x7f/0xb0 [ 755.172386] [] process_timeout+0x0/0x10 [ 755.172394] [] schedule_timeout+0x88/0xf0 [ 755.172411] [] xfs_lock_two_inodes+0xcb/0x120 [xfs] [ 755.172451] [] xfs_remove+0x136/0x3c0 [xfs] [ 755.172480] [] mutex_lock_nested+0x1f7/0x290 [ 755.172486] [] vfs_unlink+0x87/0x130 [ 755.172494] [] vfs_unlink+0x87/0x130 [ 755.172502] [] xfs_vn_unlink+0x36/0x80 [xfs] [ 755.172533] [] vfs_unlink+0xdd/0x130 [ 755.172540] [] _spin_unlock+0x14/0x20 [ 755.172546] [] do_unlinkat+0x14e/0x160 [ 755.172552] [] trace_hardirqs_on_caller+0xfa/0x130 [ 755.172558] [] _spin_unlock_irq+0x20/0x30 [ 755.172564] [] copy_to_user+0x34/0x80 [ 755.172570] [] trace_hardirqs_on_thunk+0xc/0x10 [ 755.172576] [] do_page_fault+0x0/0x780 [ 755.172583] [] trace_hardirqs_on_caller+0xfa/0x130 [ 755.172589] [] sysenter_do_call+0x12/0x31 [arekm@farm ~]$ zgrep LOCKDEP /proc/config.gz CONFIG_LOCKDEP_SUPPORT=y CONFIG_LOCKDEP=y # CONFIG_DEBUG_LOCKDEP is not set I don't see anything strictly lockdep related in dmesg so it doesn't seem to be triggered. D-state lock is also happening if I drop usrquota,prjquota, reboot and retry the test. I assume something was written on disk that triggers the problem. Note that now I'm testing on a second machine (UP i686, SMP kernel), so this isn't unique problem. > Cheers, > > Dave. -- Arkadiusz MiÅ›kiewicz PLD/Linux Team arekm / maven.pl http://ftp.pld-linux.org/ From arekm@maven.pl Wed Dec 3 07:35:16 2008 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 mB3DZGPo021030 for ; Wed, 3 Dec 2008 07:35:16 -0600 X-ASG-Debug-ID: 1228311310-238b03e50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from main.carme.maven.pl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E976D1BEEF49 for ; Wed, 3 Dec 2008 05:35:10 -0800 (PST) Received: from main.carme.maven.pl (main.carme.maven.pl [193.239.45.138]) by cuda.sgi.com with ESMTP id uR3FV63BzHqhak7w for ; Wed, 03 Dec 2008 05:35:10 -0800 (PST) Received: from [83.238.65.58] (port=4235 helo=maven.pl ident=matrix157) by main.carme.maven.pl with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.69) (envelope-from ) id 1L7rsj-000lRy-NO; Wed, 03 Dec 2008 14:35:09 +0100 Received: from arekm by maven.pl with local (Exim 4.69) (envelope-from ) id 1L7rsi-0000dS-HB; Wed, 03 Dec 2008 14:35:09 +0100 From: Arkadiusz Miskiewicz To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Subject: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Date: Wed, 3 Dec 2008 14:35:08 +0100 User-Agent: PLD Linux KMail/1.9.10 Cc: Dave Chinner References: <200812021949.55463.arekm@maven.pl> <20081203032013.GS18236@disturbed> <200812031406.41882.arekm@maven.pl> In-Reply-To: <200812031406.41882.arekm@maven.pl> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Message-Id: <200812031435.08446.arekm@maven.pl> X-Barracuda-Connect: main.carme.maven.pl[193.239.45.138] X-Barracuda-Start-Time: 1228311311 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.02 X-Barracuda-Spam-Status: No, SCORE=-1.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, BSF_RULE_7582B X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.11816 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M 0.50 BSF_RULE_7582B Custom Rule 7582B Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id mB3DZGPo021030 On Wednesday 03 of December 2008, Arkadiusz Miskiewicz wrote: > I don't see anything strictly lockdep related in dmesg so it doesn't seem > to be triggered. maybe /proc/lockdep will help all lock classes: c0474eb0 FD: 4 BD: 1 --..: clockevents_lock -> [c0474ef0] tick_device_lock c0472b30 FD: 1 BD: 4 --..: resource_lock c0471a30 FD: 1 BD: 3 ....: set_atomicity_lock c0472370 FD: 1 BD: 23 ....: pgd_lock c0471fb0 FD: 2 BD: 9 +...: ioapic_lock -> [c0470d90] i8259A_lock c0641140 FD: 5 BD: 152 ++..: &rq->lock -> [c09fbf3c] &vec->lock -> [c0641148] &rt_b->rt_runtime_lock -> [c0641150] &rt_rq->rt_runtime_lock c09fbf3c FD: 1 BD: 153 ....: &vec->lock c0472a78 FD: 9 BD: 2 --..: cpu_add_remove_lock -> [c0474510] workqueue_lock -> [c0474670] kthread_create_lock -> [c0641140] &rq->lock -> [c0654274] &q->lock c0470d90 FD: 1 BD: 10 +...: i8259A_lock c09fbf08 FD: 3 BD: 8 ++..: &irq_desc_lock_class -> [c0470d90] i8259A_lock -> [c0471fb0] ioapic_lock c0471550 FD: 1 BD: 2 ++..: rtc_lock c0497a94 FD: 2 BD: 1 ++..: xtime_lock -> [c0474d30] clocksource_lock c0474d30 FD: 1 BD: 2 ++..: clocksource_lock c0474d70 FD: 2 BD: 1 -+..: watchdog_lock -> [c0653e6c] &base->lock c0480550 FD: 2 BD: 11 ....: tty_ldisc_lock -> [c0480570] tty_ldisc_wait.lock c04729d0 FD: 1 BD: 7 ....: (console_sem).lock c0653e6c FD: 1 BD: 61 ++..: &base->lock c047d610 FD: 1 BD: 5 ....: vga_lock c0472990 FD: 2 BD: 6 ....: logbuf_lock -> [c04729d0] (console_sem).lock c0481890 FD: 2 BD: 1 ....: printing_lock -> [c047d610] vga_lock c09fbf18 FD: 1 BD: 1 ..--: rcu_read_lock c09fbf9c FD: 1 BD: 88 ++..: &zone->lock c049f770 FD: 1 BD: 2 --..: bdev_lock c04777ec FD: 1 BD: 1 --..: slub_lock c0474ef0 FD: 3 BD: 2 ....: tick_device_lock -> [c0471370] i8253_lock -> [c0474f30] tick_broadcast_lock c0471370 FD: 1 BD: 4 .+..: i8253_lock c0474f30 FD: 2 BD: 3 .+..: tick_broadcast_lock -> [c0471370] i8253_lock c065429c FD: 1 BD: 154 ++..: &cpu_base->lock c0476fac FD: 1 BD: 1 --..: shrinker_rwsem c047cb78 FD: 1 BD: 2 --..: percpu_counters_lock c0478470 FD: 1 BD: 1 ----: file_systems_lock c04784e0 FD: 1 BD: 69 ....: mnt_id_ida.lock c049f750 FD: 8 BD: 68 --..: vfsmount_lock -> [c04784e0] mnt_id_ida.lock -> [c0654274] &q->lock c0477e50 FD: 3 BD: 22 --..: sb_lock -> [c0a0c0c8] &idp->lock -> [c0477e70] unnamed_dev_lock c0479368 FD: 22 BD: 1 ----: &type->s_umount_key -> [c0477e50] sb_lock -> [c04782b0] inode_lock -> [c09fbf9c] &zone->lock -> [c049f6f0] dcache_lock -> [c0a041c8] &s->s_dquot.dqonoff_mutex -> [c0479360] &type->s_lock_key c0a0c0c8 FD: 1 BD: 39 ....: &idp->lock c0477e70 FD: 2 BD: 23 --..: unnamed_dev_lock -> [c0a0c0c8] &idp->lock c04782b0 FD: 1 BD: 80 --..: inode_lock c049f6f0 FD: 13 BD: 67 --..: dcache_lock -> [c0a046c8] &dentry->d_lock -> [c049f750] vfsmount_lock -> [c049f714] rename_lock c0a046c8 FD: 3 BD: 69 --..: &dentry->d_lock -> [c0a046c9] &dentry->d_lock/1 -> [c0472cd0] sysctl_lock c0a041c8 FD: 2 BD: 11 --..: &s->s_dquot.dqonoff_mutex -> [c0478a30] dq_list_lock c0478a30 FD: 1 BD: 12 --..: dq_list_lock c0479360 FD: 1 BD: 2 --..: &type->s_lock_key c04792b0 FD: 3 BD: 22 --..: sysfs_ino_lock -> [c04792e0] sysfs_ino_ida.lock -> [c0a03e84] &n->list_lock c04792e0 FD: 1 BD: 23 ....: sysfs_ino_ida.lock c04791d8 FD: 17 BD: 24 --..: sysfs_mutex -> [c04782b0] inode_lock -> [c049f6f0] dcache_lock -> [c0a03e84] &n->list_lock -> [c09fbf9c] &zone->lock c0479380 FD: 19 BD: 3 --..: &type->i_mutex_dir_key -> [c049f6f0] dcache_lock -> [c04791d8] sysfs_mutex -> [c049f750] vfsmount_lock -> [c0a03e84] &n->list_lock -> [c2f44c20] &writer->lock_class -> [c09fbf9c] &zone->lock -> [c04782b0] inode_lock -> [c0641140] &rq->lock c04796c8 FD: 18 BD: 1 --..: &type->s_umount_key#2 -> [c0477e50] sb_lock -> [c04782b0] inode_lock -> [c049f6f0] dcache_lock c046fff4 FD: 1 BD: 1 ----: old_style_rw_init c04786a8 FD: 19 BD: 1 --..: &type->s_umount_key#3 -> [c0477e50] sb_lock -> [c09fbf9c] &zone->lock -> [c04782b0] inode_lock -> [c049f6f0] dcache_lock c0478d28 FD: 19 BD: 1 --..: &type->s_umount_key#4 -> [c0477e50] sb_lock -> [c04782b0] inode_lock -> [c09fbf9c] &zone->lock -> [c049f6f0] dcache_lock c0478dd0 FD: 1 BD: 12 --..: proc_subdir_lock c0478e20 FD: 1 BD: 9 ....: proc_inum_ida.lock c0478df0 FD: 2 BD: 8 --..: proc_inum_lock -> [c0478e20] proc_inum_ida.lock c0488898 FD: 77 BD: 1 --..: net_mutex -> [c0478dd0] proc_subdir_lock -> [c0478e20] proc_inum_ida.lock -> [c0478df0] proc_inum_lock -> [c0488eb8] rtnl_mutex -> [c04782b0] inode_lock -> [c0489a10] nl_table_lock -> [c0489a30] nl_table_wait.lock -> [c0472cd0] sysctl_lock -> [c0a15d50] &net->rules_mod_lock -> [c0653e6c] &base->lock -> [c0a03e84] &n->list_lock -> [c048ab10] raw_v4_hashinfo.lock -> [c09fbf9c] &zone->lock -> [c048e650] raw_v6_hashinfo.lock -> [c0a17f80] &ip6addrlbl_table.lock c04771d0 FD: 1 BD: 5 ----: vmlist_lock c046f1e0 FD: 1 BD: 3 --..: init_mm.page_table_lock c0a0ea04 FD: 1 BD: 2 ....: semaphore->lock c04723b0 FD: 1 BD: 5 --..: memtype_lock c0a0efe8 FD: 1 BD: 1 ....: acpi_gbl_hardware_lock c046f6e8 FD: 1 BD: 1 --..: init_task.alloc_lock c04783b0 FD: 1 BD: 3 --..: init_task.file_lock c0470774 FD: 1 BD: 6 ....: init_sighand.siglock c0497a70 FD: 1 BD: 19 ....: pidmap_lock c0497990 FD: 15 BD: 3 ..?-: tasklist_lock -> [c0470774] init_sighand.siglock -> [c0642268] &sighand->siglock -> [c0a03e84] &n->list_lock -> [c09fbf9c] &zone->lock -> [c0653ec0] &cwq->lock c0471ef0 FD: 1 BD: 1 ....: vector_lock c0474670 FD: 1 BD: 7 --..: kthread_create_lock c0654274 FD: 6 BD: 133 ++..: &q->lock -> [c0641140] &rq->lock c0642270 FD: 1 BD: 9 --..: &p->alloc_lock c0642268 FD: 10 BD: 18 ++..: &sighand->siglock -> [c0654274] &q->lock -> [c0497a70] pidmap_lock -> [c0641140] &rq->lock -> [c065429c] &cpu_base->lock -> [c0a0f970] &tty->ctrl_lock -> [c09fbf24] &tsk->delays->lock c0642278 FD: 6 BD: 4 ....: &p->pi_lock -> [c0641140] &rq->lock c0641148 FD: 3 BD: 153 ....: &rt_b->rt_runtime_lock -> [c065429c] &cpu_base->lock -> [c0641150] &rt_rq->rt_runtime_lock c0641150 FD: 1 BD: 154 +...: &rt_rq->rt_runtime_lock c0652c44 FD: 1 BD: 4 --..: &cpu_hotplug.lock c0472778 FD: 7 BD: 1 --..: sched_domains_mutex -> [c09fbf9c] &zone->lock -> [c0641140] &rq->lock c0474510 FD: 1 BD: 3 --..: workqueue_lock c0a03e84 FD: 1 BD: 100 ++..: &n->list_lock c0a0c0d4 FD: 1 BD: 20 --..: &k->list_lock c0485fd8 FD: 1 BD: 19 --..: dpm_list_mtx c047ca90 FD: 1 BD: 20 --..: sequence_lock c0653ec0 FD: 7 BD: 47 ++..: &cwq->lock -> [c0654274] &q->lock c0653e8c FD: 20 BD: 1 --..: khelper -> [c0653e98] &sub_info->work c0653e98 FD: 19 BD: 2 --..: &sub_info->work -> [c09fbf9c] &zone->lock -> [c0642270] &p->alloc_lock -> [c04783b0] init_task.file_lock -> [c0642268] &sighand->siglock -> [c0497a70] pidmap_lock -> [c0497990] tasklist_lock -> [c0641140] &rq->lock -> [c0654274] &q->lock -> [c0a03e84] &n->list_lock -> [c09fb4c0] &(kretprobe_table_locks[i].lock) c0642260 FD: 1 BD: 1 ----: &fs->lock c04796d8 FD: 23 BD: 4 --..: &sb->s_type->i_mutex_key -> [c049f6f0] dcache_lock -> [c04782b0] inode_lock -> [c0a046c8] &dentry->d_lock -> [c2f44c20] &writer->lock_class -> [c09fbf9c] &zone->lock -> [c09fadbc] &counter->lock -> [c0a03f20] &mz->lru_lock -> [c0a04870] &inode->i_data.tree_lock -> [c09fbf94] &zone->lru_lock -> [c0a03e84] &n->list_lock -> [c049f750] vfsmount_lock c04744b0 FD: 1 BD: 14 ....: running_helpers_waitq.lock c0488eb8 FD: 71 BD: 2 --..: rtnl_mutex -> [c0a0c0d4] &k->list_lock -> [c04792b0] sysfs_ino_lock -> [c04791d8] sysfs_mutex -> [c047e800] bus_type_sem -> [c0479270] sysfs_assoc_lock -> [c0485fd8] dpm_list_mtx -> [c047ca90] sequence_lock -> [c0a03e84] &n->list_lock -> [c0489a30] nl_table_wait.lock -> [c0653ec0] &cwq->lock -> [c0654274] &q->lock -> [c0641140] &rq->lock -> [c04744b0] running_helpers_waitq.lock -> [c0a15cf0] struct class mutex#6 -> [c0488c30] dev_base_lock -> [c0a15bd0] &tbl->lock -> [c0472cd0] sysctl_lock -> [c0478dd0] proc_subdir_lock -> [c0478e20] proc_inum_ida.lock -> [c0478df0] proc_inum_lock -> [c0a17f28] &ndev->lock -> [c0a18410] &idev->mc_lock -> [c0a18418] &mc->mca_lock -> [c0a14d90] &list->lock -> [c0a19064] &k->k_lock -> [c09fbf9c] &zone->lock -> [c048b54c] (inetaddr_chain).rwsem -> [c0a15968] _xmit_LOOPBACK -> [c0a16b00] &in_dev->mc_list_lock -> [c0a16af8] &in_dev->mc_tomb_lock -> [c0480244] &input_pool.lock -> [c04802e4] &nonblocking_pool.lock -> [c048bbd0] fib_info_lock -> [c048c910] fib_hash_lock -> [c0a17f20] &ifa->lock -> [c0a17fcc] &tb->tb6_lock -> [c0a15868] _xmit_ETHER -> [c09fbf08] &irq_desc_lock_class -> [c047ce50] pci_lock -> [c0653e6c] &base->lock -> [f8986650] &tp->lock -> [f8986648] &tp->mii_lock -> [c0489890] qdisc_list_lock -> [c0a15e54] &list->lock#3 -> [c0489688] noop_qdisc.q.lock -> [c0a1567c] &dev->tx_global_lock -> [c0a15e64] &qdisc_tx_lock c0478110 FD: 1 BD: 1 ----: binfmt_lock c04885c8 FD: 19 BD: 1 --..: &type->s_umount_key#5 -> [c0477e50] sb_lock -> [c09fbf9c] &zone->lock -> [c04782b0] inode_lock -> [c049f6f0] dcache_lock c04887f0 FD: 1 BD: 1 --..: proto_list_lock c0488670 FD: 1 BD: 1 --..: net_family_lock c0489a10 FD: 6 BD: 3 ..-?: nl_table_lock -> [c0480244] &input_pool.lock -> [c04802e4] &nonblocking_pool.lock -> [c0a03e84] &n->list_lock c0489a30 FD: 1 BD: 25 .+..: nl_table_wait.lock c047cd30 FD: 1 BD: 1 ....: gpio_lock c0479270 FD: 1 BD: 20 --..: sysfs_assoc_lock c0a117d8 FD: 1 BD: 1 --..: struct class mutex c0476970 FD: 1 BD: 1 -+..: &rcu_ctrlblk.lock c047e800 FD: 1 BD: 18 ----: bus_type_sem c0a14b00 FD: 1 BD: 1 --..: struct class mutex#2 c0488590 FD: 1 BD: 8 ....: pci_config_lock c0485a38 FD: 1 BD: 1 --..: sysdev_drivers_lock c0483c50 FD: 1 BD: 1 ....: sysrq_key_table_lock c09fc1c4 FD: 1 BD: 1 --..: struct class mutex#3 c0478038 FD: 1 BD: 3 --..: chrdevs_lock c0a0eff0 FD: 1 BD: 1 ....: acpi_gbl_gpe_lock c047e1d0 FD: 1 BD: 1 --..: acpi_res_lock c04752b8 FD: 1 BD: 1 --..: pm_mutex c047e828 FD: 1 BD: 1 --..: acpi_device_lock c0a14438 FD: 6 BD: 3 ....: semaphore->lock#2 -> [c0641140] &rq->lock c0a19064 FD: 7 BD: 16 --..: &k->k_lock -> [c0654274] &q->lock c047d0cc FD: 1 BD: 1 ----: pci_bus_sem c0a0ca08 FD: 1 BD: 1 --..: struct class mutex#4 c047ce50 FD: 2 BD: 6 ....: pci_lock -> [c0488590] pci_config_lock c047f198 FD: 1 BD: 2 --..: acpi_prt_lock c0485b30 FD: 1 BD: 3 ....: probe_waitqueue.lock c047f150 FD: 4 BD: 1 --..: acpi_link_lock -> [c0a0ea04] semaphore->lock -> [c0488590] pci_config_lock -> [c0a03e84] &n->list_lock c047f590 FD: 1 BD: 1 --..: pnp_lock c0486818 FD: 59 BD: 1 --..: serio_mutex -> [c0486850] serio_event_lock -> [c0a0c0d4] &k->list_lock -> [c04792b0] sysfs_ino_lock -> [c04791d8] sysfs_mutex -> [c047e800] bus_type_sem -> [c0479270] sysfs_assoc_lock -> [c0485fd8] dpm_list_mtx -> [c047ca90] sequence_lock -> [c0a03e84] &n->list_lock -> [c0489a30] nl_table_wait.lock -> [c0653ec0] &cwq->lock -> [c0654274] &q->lock -> [c0641140] &rq->lock -> [c04744b0] running_helpers_waitq.lock -> [c0a14438] semaphore->lock#2 -> [c0a19064] &k->k_lock -> [c0a144c0] &serio->drv_mutex -> [c0485b30] probe_waitqueue.lock -> [c0a14430] &dev->devres_lock -> [c04782b0] inode_lock c0486850 FD: 7 BD: 2 ....: serio_event_lock -> [c0486890] serio_wait.lock c0486890 FD: 6 BD: 3 ....: serio_wait.lock -> [c0641140] &rq->lock c0a14b84 FD: 1 BD: 1 --..: &dma_list_mutex c0489850 FD: 1 BD: 1 ----: qdisc_mod_lock c0489b38 FD: 14 BD: 1 --..: genl_mutex -> [c0489a10] nl_table_lock -> [c0489a30] nl_table_wait.lock -> [c0654274] &q->lock -> [c0641140] &rq->lock c048fb90 FD: 1 BD: 1 --..: netlbl_domhsh_lock c048fcf0 FD: 1 BD: 1 --..: netlbl_unlhsh_lock c0472cd0 FD: 1 BD: 70 --..: sysctl_lock c0478168 FD: 18 BD: 1 --..: &type->s_umount_key#6 -> [c0477e50] sb_lock -> [c04782b0] inode_lock -> [c049f6f0] dcache_lock c0478828 FD: 18 BD: 1 --..: &type->s_umount_key#7 -> [c0477e50] sb_lock -> [c04782b0] inode_lock -> [c049f6f0] dcache_lock c0a0f200 FD: 1 BD: 1 --..: struct class mutex#5 c0a15cf0 FD: 1 BD: 3 --..: struct class mutex#6 c0488c30 FD: 1 BD: 3 -.--: dev_base_lock c0487e18 FD: 1 BD: 1 --..: cpufreq_governor_mutex c048a3f0 FD: 1 BD: 1 -...: inet_proto_lock c048bb50 FD: 1 BD: 1 -...: inetsw_lock c0480244 FD: 2 BD: 49 ++..: &input_pool.lock -> [c0480370] random_read_wait.lock c04802e4 FD: 2 BD: 14 .+..: &nonblocking_pool.lock -> [c04803b0] random_write_wait.lock c04803b0 FD: 1 BD: 15 .+..: random_write_wait.lock c0488e50 FD: 1 BD: 1 --..: neigh_tbl_lock c0488cd0 FD: 1 BD: 3 -...: ptype_lock c0a15bd0 FD: 11 BD: 3 -+-+: &tbl->lock -> [c0653e6c] &base->lock -> [c0480244] &input_pool.lock -> [c04802e4] &nonblocking_pool.lock -> [c0a03e84] &n->list_lock -> [c0a15be8] &n->lock -> [c0489a30] nl_table_wait.lock -> [c0a15be0] &(&hh->hh_lock)->lock -> [c0a15bd8] &list->lock#4 c0a15d50 FD: 1 BD: 2 --..: &net->rules_mod_lock c048d1b0 FD: 1 BD: 1 -...: xfrm_state_afinfo_lock c048d0b0 FD: 1 BD: 1 -...: xfrm_policy_afinfo_lock c048ab10 FD: 1 BD: 2 -...: raw_v4_hashinfo.lock c048aa30 FD: 1 BD: 1 --..: tcp_cong_list_lock c04796d9 FD: 27 BD: 1 --..: &sb->s_type->i_mutex_key/1 -> [c049f6f0] dcache_lock -> [c2f44c20] &writer->lock_class -> [c04782b0] inode_lock -> [c09fbf9c] &zone->lock -> [c0a03e84] &n->list_lock -> [c09fadbc] &counter->lock -> [c0a03f20] &mz->lru_lock -> [c0a04870] &inode->i_data.tree_lock -> [c09fbf94] &zone->lru_lock -> [c0a046c8] &dentry->d_lock -> [c04796d8] &sb->s_type->i_mutex_key -> [c0a04858] &inode->inotify_mutex c2f44c20 FD: 1 BD: 28 --..: &writer->lock_class c0a04888 FD: 1 BD: 4 --..: &newf->file_lock c04796d0 FD: 1 BD: 2 --..: &sb->s_type->i_lock_key c049f690 FD: 2 BD: 4 --..: files_lock -> [c04781d0] fasync_lock c09fadbc FD: 1 BD: 40 ....: &counter->lock c0a03f20 FD: 1 BD: 41 ....: &mz->lru_lock c0a04870 FD: 5 BD: 29 ....: &inode->i_data.tree_lock -> [c0a03f20] &mz->lru_lock -> [c09fadbc] &counter->lock -> [c0a03e84] &n->list_lock -> [c0a0c1c0] &percpu_counter_irqsafe c09fbf94 FD: 2 BD: 38 ....: &zone->lru_lock -> [c0a03f20] &mz->lru_lock c0471918 FD: 20 BD: 1 --..: therm_cpu_lock -> [c04792b0] sysfs_ino_lock -> [c04791d8] sysfs_mutex c0474130 FD: 1 BD: 1 .+..: uidhash_lock c0480758 FD: 30 BD: 2 --..: misc_mtx -> [c0a0c0d4] &k->list_lock -> [c04792b0] sysfs_ino_lock -> [c04791d8] sysfs_mutex -> [c047e800] bus_type_sem -> [c0479270] sysfs_assoc_lock -> [c0485fd8] dpm_list_mtx -> [c047ca90] sequence_lock -> [c0489a30] nl_table_wait.lock -> [c0653ec0] &cwq->lock -> [c0654274] &q->lock -> [c0641140] &rq->lock -> [c04744b0] running_helpers_waitq.lock -> [c0a0fb3c] struct class mutex#7 -> [c0a03e84] &n->list_lock -> [c0a14d90] &list->lock c0a0fb3c FD: 1 BD: 3 --..: struct class mutex#7 c0476690 FD: 1 BD: 1 ....: audit_freelist_lock c04766d0 FD: 1 BD: 1 ....: serial_lock c047cab0 FD: 1 BD: 1 ....: ratelimit_lock c0474750 FD: 1 BD: 1 ....: die_chain.lock c0477410 FD: 1 BD: 3 --..: swap_lock c0477668 FD: 20 BD: 1 ----: &type->s_umount_key#8 -> [c0477e50] sb_lock -> [c09fbf9c] &zone->lock -> [c04782b0] inode_lock -> [c049f6f0] dcache_lock -> [c0a03e48] &sbinfo->stat_lock c04763b8 FD: 2 BD: 1 --..: callback_mutex -> [c0642270] &p->alloc_lock c0476e30 FD: 6 BD: 1 .+..: pdflush_lock -> [c0641140] &rq->lock c09fb4c0 FD: 1 BD: 30 ....: &(kretprobe_table_locks[i].lock) c04787c8 FD: 18 BD: 1 --..: &type->s_umount_key#9 -> [c0477e50] sb_lock -> [c04782b0] inode_lock -> [c049f6f0] dcache_lock c04793c8 FD: 22 BD: 1 --..: &type->s_umount_key#10 -> [c0477e50] sb_lock -> [c09fbf9c] &zone->lock -> [c04782b0] inode_lock -> [c049f6f0] dcache_lock -> [c0a041c8] &s->s_dquot.dqonoff_mutex -> [c04793c0] &type->s_lock_key#2 c04793c0 FD: 1 BD: 2 --..: &type->s_lock_key#2 c0479828 FD: 19 BD: 1 --..: &type->s_umount_key#11 -> [c0477e50] sb_lock -> [c09fbf9c] &zone->lock -> [c04782b0] inode_lock -> [c049f6f0] dcache_lock c0479e08 FD: 22 BD: 1 --..: &type->s_umount_key#12 -> [c0477e50] sb_lock -> [c09fbf9c] &zone->lock -> [c04782b0] inode_lock -> [c049f6f0] dcache_lock -> [c0a041c8] &s->s_dquot.dqonoff_mutex -> [c0479e00] &type->s_lock_key#3 c0479e00 FD: 1 BD: 2 --..: &type->s_lock_key#3 c047bcec FD: 2 BD: 1 --..: crypto_alg_sem -> [c047bd2c] (crypto_chain).rwsem c047bd2c FD: 1 BD: 2 ..--: (crypto_chain).rwsem c047c070 FD: 1 BD: 2 --..: elv_list_lock c0a0ca2c FD: 1 BD: 1 --..: &drv->dynids.lock c0a14430 FD: 1 BD: 6 ....: &dev->devres_lock c0a0cb04 FD: 1 BD: 1 --..: struct class mutex#8 c04802a4 FD: 1 BD: 1 ....: &blocking_pool.lock c0a0f960 FD: 1 BD: 4 --..: struct class mutex#9 c0a0fb54 FD: 1 BD: 3 --..: struct class mutex#10 c0480498 FD: 48 BD: 2 --..: tty_mutex -> [c04729d0] (console_sem).lock -> [c0472990] logbuf_lock -> [c09fbf9c] &zone->lock -> [c0480550] tty_ldisc_lock -> [c0a0f978] &tty->read_lock -> [c0654274] &q->lock -> [c0480570] tty_ldisc_wait.lock -> [c0470774] init_sighand.siglock -> [c0a0fb54] struct class mutex#10 -> [c0485fd8] dpm_list_mtx -> [c04791d8] sysfs_mutex -> [c04782b0] inode_lock -> [c04792b0] sysfs_ino_lock -> [c0a03e84] &n->list_lock -> [c0a14430] &dev->devres_lock -> [c047ca90] sequence_lock -> [c0489a30] nl_table_wait.lock -> [c0653ec0] &cwq->lock -> [c0641140] &rq->lock -> [c09fb4c0] &(kretprobe_table_locks[i].lock) -> [c04744b0] running_helpers_waitq.lock -> [c0479270] sysfs_assoc_lock -> [c0a0c0d4] &k->list_lock -> [c049f690] files_lock -> [c0642268] &sighand->siglock -> [c0a14d90] &list->lock -> [c04793d8] &sb->s_type->i_mutex_key#9 -> [c0a0f970] &tty->ctrl_lock c0486cb8 FD: 46 BD: 4 --..: input_mutex -> [c0486cf0] input_devices_poll_wait.lock -> [c0a144a0] &emumousebtn_mutex_class -> [c0654274] &q->lock -> [c0641140] &rq->lock -> [c0a0c0d4] &k->list_lock -> [c04792b0] sysfs_ino_lock -> [c04791d8] sysfs_mutex -> [c047e800] bus_type_sem -> [c0479270] sysfs_assoc_lock -> [c0485fd8] dpm_list_mtx -> [c047ca90] sequence_lock -> [c0489a30] nl_table_wait.lock -> [c0653ec0] &cwq->lock -> [c04744b0] running_helpers_waitq.lock -> [c0a19064] &k->k_lock -> [c0a14620] struct class mutex#12 -> [c0a146a7] &mousedev->mutex/31 -> [c0a14634] &dev->mutex -> [c0a1462c] &dev->event_lock -> [c0a14d90] &list->lock -> [c0a03e84] &n->list_lock c0486cf0 FD: 1 BD: 5 ....: input_devices_poll_wait.lock c04842b8 FD: 48 BD: 2 --..: port_mutex -> [c0a11b88] &state->mutex -> [c0a0f960] struct class mutex#9 -> [c0485fd8] dpm_list_mtx -> [c04791d8] sysfs_mutex -> [c04782b0] inode_lock -> [c04792b0] sysfs_ino_lock -> [c0a19064] &k->k_lock -> [c0a03e84] &n->list_lock -> [c0a14430] &dev->devres_lock -> [c047ca90] sequence_lock -> [c0489a30] nl_table_wait.lock -> [c0653ec0] &cwq->lock -> [c0654274] &q->lock -> [c0641140] &rq->lock -> [c04744b0] running_helpers_waitq.lock -> [c0479270] sysfs_assoc_lock -> [c0a0c0d4] &k->list_lock -> [c0472b30] resource_lock c0a11b88 FD: 46 BD: 3 --..: &state->mutex -> [c0472b30] resource_lock -> [c0a11bcc] &port_lock_key -> [c04768f8] probing_active -> [c0a0c0d4] &k->list_lock -> [c04792b0] sysfs_ino_lock -> [c04791d8] sysfs_mutex -> [c047e800] bus_type_sem -> [c0479270] sysfs_assoc_lock -> [c0485fd8] dpm_list_mtx -> [c047ca90] sequence_lock -> [c0489a30] nl_table_wait.lock -> [c0653ec0] &cwq->lock -> [c0654274] &q->lock -> [c0641140] &rq->lock -> [c04744b0] running_helpers_waitq.lock -> [c0a19064] &k->k_lock -> [c0a0f960] struct class mutex#9 -> [c0a03e84] &n->list_lock -> [c0a11be8] &irq_lists[i].lock -> [c09fbf08] &irq_desc_lock_class -> [c0478dd0] proc_subdir_lock -> [c0478e20] proc_inum_ida.lock -> [c0478df0] proc_inum_lock -> [c0653e6c] &base->lock -> [c0a04b6c] &ent->pde_unload_lock -> [c0480550] tty_ldisc_lock -> [c0a0f978] &tty->read_lock -> [c0a0f9a8] &tty->buf.lock c0a11bcc FD: 1 BD: 4 ....: &port_lock_key c04768f8 FD: 10 BD: 4 --..: probing_active -> [c09fbf08] &irq_desc_lock_class -> [c0653e6c] &base->lock -> [c0641140] &rq->lock c0484478 FD: 49 BD: 1 --..: serial_mutex -> [c04842b8] port_mutex c047c1f8 FD: 2 BD: 3 --..: block_class_lock -> [c0a0bbe0] struct class mutex#11 c0a0bbe0 FD: 1 BD: 4 --..: struct class mutex#11 c0a14620 FD: 1 BD: 5 --..: struct class mutex#12 c0486a70 FD: 7 BD: 5 ++..: i8042_lock -> [c0654274] &q->lock c0a04b6c FD: 1 BD: 4 --..: &ent->pde_unload_lock c0a146a7 FD: 10 BD: 5 --..: &mousedev->mutex/31 -> [c0a14688] &mousedev->mutex#2 c0a144a0 FD: 7 BD: 8 --..: &emumousebtn_mutex_class -> [c0654274] &q->lock -> [c0641140] &rq->lock c0a144c0 FD: 53 BD: 2 --..: &serio->drv_mutex -> [c0a144c8] &serio->lock -> [c0a14614] &ps2dev->cmd_mutex -> [c04792b0] sysfs_ino_lock -> [c04791d8] sysfs_mutex -> [c0a0c0d4] &k->list_lock -> [c047e800] bus_type_sem -> [c0479270] sysfs_assoc_lock -> [c0485fd8] dpm_list_mtx -> [c047ca90] sequence_lock -> [c09fbf9c] &zone->lock -> [c0489a30] nl_table_wait.lock -> [c0653ec0] &cwq->lock -> [c0641140] &rq->lock -> [c09fb4c0] &(kretprobe_table_locks[i].lock) -> [c0654274] &q->lock -> [c04744b0] running_helpers_waitq.lock -> [c0a19064] &k->k_lock -> [c0a14620] struct class mutex#12 -> [c0486cb8] input_mutex -> [f8947018] psmouse_mutex c0a144c8 FD: 18 BD: 5 ++..: &serio->lock -> [c0654274] &q->lock -> [c0a1462c] &dev->event_lock c0a14614 FD: 22 BD: 4 --..: &ps2dev->cmd_mutex -> [c0a144c8] &serio->lock -> [c0486a70] i8042_lock -> [c0654274] &q->lock -> [c0653e6c] &base->lock -> [c0641140] &rq->lock -> [c09fb4c0] &(kretprobe_table_locks[i].lock) c048800c FD: 1 BD: 1 --..: triggers_list_lock c0487fac FD: 1 BD: 1 ..--: leds_list_lock c04894f0 FD: 1 BD: 1 -...: llc_sap_list_lock c0489c58 FD: 1 BD: 1 --..: afinfo_mutex c048d830 FD: 1 BD: 1 -...: inetsw6_lock c048e650 FD: 1 BD: 2 -...: raw_v6_hashinfo.lock c048eab0 FD: 1 BD: 1 -...: inet6_proto_lock c0a17f80 FD: 1 BD: 2 --..: &ip6addrlbl_table.lock c0a17f28 FD: 6 BD: 3 -.-+: &ndev->lock -> [c0480244] &input_pool.lock -> [c04802e4] &nonblocking_pool.lock -> [c0653e6c] &base->lock c0a18410 FD: 1 BD: 3 -+..: &idev->mc_lock c0a18418 FD: 2 BD: 3 -+..: &mc->mca_lock -> [c0a15868] _xmit_ETHER c048d950 FD: 2 BD: 1 -+..: addrconf_verify_lock -> [c0653e6c] &base->lock c048d8f0 FD: 1 BD: 3 -.-+: addrconf_hash_lock c0a18fe4 FD: 1 BD: 1 -.--: &net->packet.sklist_lock c04752b9 FD: 1 BD: 1 --..: pm_mutex/1 c0653eb0 FD: 35 BD: 1 --..: events -> [c09fc1bc] &(vmstat_work)->work -> [c047a100] key_cleanup_task -> [c04818e0] console_work -> [c0489ec0] (expires_work).work -> [c0480300] (rekey_work).work -> [c0488da0] (dst_gc_work).work -> [c0a0f9a0] &(&tty->buf.work)->work c0473c90 FD: 1 BD: 1 --..: task_capability_lock c0477ff0 FD: 1 BD: 4 --..: cdev_lock c0a0f978 FD: 1 BD: 10 ....: &tty->read_lock c0480570 FD: 1 BD: 12 ....: tty_ldisc_wait.lock c0642290 FD: 76 BD: 1 ----: &mm->mmap_sem -> [c0a0325c] &anon_vma->lock -> [c0641054] __pte_lockptr(page) -> [c09fbf94] &zone->lru_lock -> [c04796d0] &sb->s_type->i_lock_key -> [c2f44c20] &writer->lock_class -> [c0a04868] &inode->i_data.i_mmap_lock -> [c0642288] &mm->page_table_lock -> [c09fadbc] &counter->lock -> [c0a03f20] &mz->lru_lock -> [c0642291] &mm->mmap_sem/1 -> [c0642270] &p->alloc_lock -> [c09fbf9c] &zone->lock -> [c0641140] &rq->lock -> [c0a03e84] &n->list_lock -> [f88bea30] &sb->s_type->i_lock_key#3 -> [c0a04870] &inode->i_data.tree_lock -> [f88bf0e8] &(&ip->i_lock)->mr_lock -> [f89ce3f0] ide_lock -> [c09fc1ec] &page_address_htable[i].lock -> [c0654274] &q->lock -> [c09fbf24] &tsk->delays->lock -> [c049f690] files_lock -> [c049f6f0] dcache_lock -> [c0653e6c] &base->lock -> [c049eb10] kmap_lock -> [c0a0bbbc] &ret->lock -> [c04782b0] inode_lock -> [f88bf0f8] &ip->i_flags_lock -> [c0472370] pgd_lock -> [c09fb4c0] &(kretprobe_table_locks[i].lock) -> [c09f44c0] &futex_queues[i].lock -> [c0a04860] &inode->i_data.private_lock -> [c0a04c48] &bb->mutex -> [c04723b0] memtype_lock -> [c0a03e50] &info->lock -> [c0a04c90] &ids->rw_mutex -> [c0a04858] &inode->inotify_mutex c0642288 FD: 1 BD: 21 --..: &mm->page_table_lock c0a0325c FD: 2 BD: 19 --..: &anon_vma->lock -> [c0642288] &mm->page_table_lock c0641054 FD: 14 BD: 19 --..: __pte_lockptr(page) -> [c0641055] __pte_lockptr(page)/1 -> [c0a03f20] &mz->lru_lock -> [c09fadbc] &counter->lock -> [c09fbf94] &zone->lru_lock -> [c0a03e84] &n->list_lock -> [c09fbf9c] &zone->lock -> [c0654274] &q->lock -> [c0a04860] &inode->i_data.private_lock c049eb10 FD: 3 BD: 2 --..: kmap_lock -> [c09fc1ec] &page_address_htable[i].lock -> [c09fc1e4] &pool_lock c09fc1ec FD: 1 BD: 29 ....: &page_address_htable[i].lock c09fc1e4 FD: 1 BD: 3 ....: &pool_lock c0a04868 FD: 3 BD: 15 --..: &inode->i_data.i_mmap_lock -> [c0a0325c] &anon_vma->lock c0642291 FD: 22 BD: 2 --..: &mm->mmap_sem/1 -> [c0a04868] &inode->i_data.i_mmap_lock -> [c0a0325c] &anon_vma->lock -> [c0642288] &mm->page_table_lock -> [c0641054] __pte_lockptr(page) -> [c0a03e84] &n->list_lock -> [c09fbf9c] &zone->lock -> [c0641140] &rq->lock -> [c0472370] pgd_lock -> [c09fb4c0] &(kretprobe_table_locks[i].lock) -> [c04723b0] memtype_lock c0641055 FD: 1 BD: 20 --..: __pte_lockptr(page)/1 c0a048ac FD: 74 BD: 2 ----: &namespace_sem -> [c04796d8] &sb->s_type->i_mutex_key -> [c049f6f0] dcache_lock -> [c049f750] vfsmount_lock -> [f88bea40] &type->i_mutex_dir_key#3 -> [c0479380] &type->i_mutex_dir_key -> [c0477678] &sb->s_type->i_mutex_key#5 -> [c04756f8] cgroup_mutex -> [c0478d40] &type->i_mutex_dir_key#2 -> [c0478d38] &sb->s_type->i_mutex_key#3 c0478d40 FD: 20 BD: 3 --..: &type->i_mutex_dir_key#2 -> [c049f6f0] dcache_lock -> [c0478dd0] proc_subdir_lock -> [c04782b0] inode_lock -> [c0472cd0] sysctl_lock -> [c0642270] &p->alloc_lock -> [c0a03e84] &n->list_lock -> [c0a046c8] &dentry->d_lock -> [c2f44c20] &writer->lock_class -> [c09fbf9c] &zone->lock -> [c049f750] vfsmount_lock c047422c FD: 15 BD: 1 ----: uts_sem -> [c0641140] &rq->lock c0475158 FD: 35 BD: 2 --..: module_mutex -> [c04771d0] vmlist_lock -> [c09fbf9c] &zone->lock -> [c0641140] &rq->lock -> [c0a0c0d4] &k->list_lock -> [c04792b0] sysfs_ino_lock -> [c04791d8] sysfs_mutex -> [c0652c44] &cpu_hotplug.lock -> [c0476538] lock -> [c047ca90] sequence_lock -> [c0489a30] nl_table_wait.lock -> [c0653ec0] &cwq->lock -> [c0654274] &q->lock -> [c04744b0] running_helpers_waitq.lock -> [c0479270] sysfs_assoc_lock -> [c0a03e84] &n->list_lock -> [c046f1e0] init_mm.page_table_lock -> [c0a14d90] &list->lock -> [c04792e0] sysfs_ino_ida.lock -> [c0472370] pgd_lock -> [c09fb4c0] &(kretprobe_table_locks[i].lock) c0a14634 FD: 7 BD: 8 --..: &dev->mutex -> [c0654274] &q->lock -> [c0641140] &rq->lock c0476538 FD: 11 BD: 3 --..: lock -> [c0474670] kthread_create_lock -> [c0641140] &rq->lock -> [c0654274] &q->lock -> [c0642278] &p->pi_lock -> [c09fb4c0] &(kretprobe_table_locks[i].lock) -> [c0472370] pgd_lock c04751d0 FD: 1 BD: 1 ....: module_wq.lock c0a1462c FD: 17 BD: 8 +...: &dev->event_lock -> [c0480244] &input_pool.lock f89cdeb8 FD: 25 BD: 1 --..: ide_cfg_mtx -> [c09fbf08] &irq_desc_lock_class -> [c0478dd0] proc_subdir_lock -> [c0478e20] proc_inum_ida.lock -> [c0478df0] proc_inum_lock -> [c047cb78] percpu_counters_lock -> [c047c070] elv_list_lock -> [f89ce3f0] ide_lock c09fc1bc FD: 2 BD: 2 --..: &(vmstat_work)->work -> [c0653e6c] &base->lock f89ce74c FD: 1 BD: 1 --..: struct class mutex#13 f89ce3f0 FD: 16 BD: 27 ++..: ide_lock -> [c0a0bbbc] &ret->lock -> [c0653e6c] &base->lock -> [c0654274] &q->lock -> [c0480244] &input_pool.lock -> [c0653ec0] &cwq->lock -> [c0a03e84] &n->list_lock -> [c0a04978] &dio->bio_lock -> [c09fc1ec] &page_address_htable[i].lock -> [c09fbf9c] &zone->lock c0a0bbbc FD: 1 BD: 28 +...: &ret->lock f89cdf18 FD: 2 BD: 1 --..: ide_setting_mtx -> [c0a03e84] &n->list_lock c0a04968 FD: 51 BD: 1 --..: &bdev->bd_mutex -> [f8810e98] idedisk_ref_mutex -> [c04782b0] inode_lock -> [c0477e50] sb_lock -> [c09fbf9c] &zone->lock -> [c09fadbc] &counter->lock -> [c0a03f20] &mz->lru_lock -> [c0a03e84] &n->list_lock -> [c0a04870] &inode->i_data.tree_lock -> [c0a04860] &inode->i_data.private_lock -> [f89ce3f0] ide_lock -> [c0654274] &q->lock -> [c0653e6c] &base->lock -> [c0641140] &rq->lock -> [c09fbf24] &tsk->delays->lock -> [c0a0c0d4] &k->list_lock -> [c04792b0] sysfs_ino_lock -> [c04791d8] sysfs_mutex -> [c047e800] bus_type_sem -> [c0479270] sysfs_assoc_lock -> [c0485fd8] dpm_list_mtx -> [c0a19064] &k->k_lock -> [c0a0bbe0] struct class mutex#11 -> [c09fbf94] &zone->lru_lock -> [c049f770] bdev_lock -> [c047c1f8] block_class_lock -> [c0a04969] &bdev->bd_mutex/1 -> [f8a426f8] idecd_ref_mutex -> [c0a0bbbc] &ret->lock -> [c0472370] pgd_lock -> [c09fb4c0] &(kretprobe_table_locks[i].lock) f8810e98 FD: 1 BD: 3 --..: idedisk_ref_mutex c0a04860 FD: 1 BD: 21 --..: &inode->i_data.private_lock c09fbf24 FD: 1 BD: 28 ....: &tsk->delays->lock c0a14a60 FD: 1 BD: 1 ..-+: &trigger->leddev_list_lock c0a04930 FD: 123 BD: 1 --..: &p->lock -> [c047c1f8] block_class_lock -> [c0a048ac] &namespace_sem -> [c0642270] &p->alloc_lock -> [c0642268] &sighand->siglock -> [c09fbf24] &tsk->delays->lock -> [c0475158] module_mutex -> [c0641140] &rq->lock -> [c0487d50] cpufreq_driver_lock -> [c04773d8] swapon_mutex -> [c0478038] chrdevs_lock -> [c0480758] misc_mtx -> [c0480498] tty_mutex c0478178 FD: 18 BD: 1 --..: &sb->s_type->i_mutex_key#2 -> [c09fbf9c] &zone->lock -> [c04781d0] fasync_lock -> [c0654274] &q->lock -> [c0a03e84] &n->list_lock -> [c0641140] &rq->lock c04781d0 FD: 1 BD: 6 ..+.: fasync_lock c0478d38 FD: 22 BD: 3 --..: &sb->s_type->i_mutex_key#3 -> [c0472cd0] sysctl_lock -> [c049f6f0] dcache_lock -> [c04782b0] inode_lock -> [c0478d48] &sb->s_type->i_alloc_sem_key -> [c0a046c8] &dentry->d_lock -> [c0642270] &p->alloc_lock -> [c09fbf9c] &zone->lock -> [c0a03e84] &n->list_lock -> [c0a04888] &newf->file_lock -> [c0478dd0] proc_subdir_lock -> [c2f44c20] &writer->lock_class -> [c049f750] vfsmount_lock c0478d30 FD: 1 BD: 1 --..: &sb->s_type->i_lock_key#2 c0478d48 FD: 2 BD: 4 --..: &sb->s_type->i_alloc_sem_key -> [c04782b0] inode_lock c0a04969 FD: 2 BD: 2 --..: &bdev->bd_mutex/1 -> [f8810e98] idedisk_ref_mutex c0a04970 FD: 1 BD: 2 ....: semaphore->lock#3 f88bea28 FD: 65 BD: 1 ----: &type->s_umount_key#13 -> [c0477e50] sb_lock -> [c0a04970] semaphore->lock#3 -> [c04782b0] inode_lock -> [c0474670] kthread_create_lock -> [c0641140] &rq->lock -> [c0654274] &q->lock -> [f88be8b0] xfs_buftarg_lock -> [c09fbf9c] &zone->lock -> [c0472a78] cpu_add_remove_lock -> [f88bf1b8] &btp->bt_hash[i].bh_lock -> [c09fadbc] &counter->lock -> [c0a03f20] &mz->lru_lock -> [c0a04870] &inode->i_data.tree_lock -> [f89ce3f0] ide_lock -> [c0a0bbbc] &ret->lock -> [c0653e6c] &base->lock -> [f88bf130] &mp->m_icsb_mutex -> [f88bf1c8] semaphore->lock#4 -> [f88bf1b0] &btp->bt_delwrite_lock -> [f88bec10] xfs_err_lock -> [f88bec58] uuid_monitor -> [c0a03e84] &n->list_lock -> [c04771d0] vmlist_lock -> [f88be8f0] as_lock -> [f88bf0e8] &(&ip->i_lock)->mr_lock -> [f88bf1fc] &mp->m_sb_lock -> [c049f6f0] dcache_lock -> [f88bea20] &type->s_lock_key#4 -> [f88bf158] &mru->lock -> [f88bf128] &log->l_icloglock -> [c0a041c8] &s->s_dquot.dqonoff_mutex -> [f88bf0f8] &ip->i_flags_lock -> [f88bf120] &log->l_grant_lock -> [c09fc1ec] &page_address_htable[i].lock -> [c0a0c1c0] &percpu_counter_irqsafe -> [c09fbf94] &zone->lru_lock f88be8b0 FD: 1 BD: 2 --..: xfs_buftarg_lock f88bf1b8 FD: 1 BD: 26 --..: &btp->bt_hash[i].bh_lock f88bf130 FD: 2 BD: 2 --..: &mp->m_icsb_mutex -> [f88bf1fc] &mp->m_sb_lock f88bf1fc FD: 1 BD: 23 --..: &mp->m_sb_lock f88bf1c8 FD: 6 BD: 27 ....: semaphore->lock#4 -> [c0641140] &rq->lock f88bf1b0 FD: 7 BD: 22 --..: &btp->bt_delwrite_lock -> [f88bf1c8] semaphore->lock#4 f88bec10 FD: 1 BD: 2 ....: xfs_err_lock f88bec58 FD: 1 BD: 2 --..: uuid_monitor f88bf110 FD: 1 BD: 27 --..: &mp->m_ail_lock c0a0bb68 FD: 19 BD: 1 --..: kblockd -> [c0a0c0b0] &cfqd->unplug_work -> [c0a0bbb4] &q->unplug_work c0a0c0b0 FD: 17 BD: 2 --..: &cfqd->unplug_work -> [f89ce3f0] ide_lock -> [c0653e6c] &base->lock f88be8f0 FD: 1 BD: 2 --..: as_lock f88bf148 FD: 2 BD: 18 ----: &pag->pag_ici_lock -> [f88bf0f8] &ip->i_flags_lock f88bf0e8 FD: 40 BD: 17 ----: &(&ip->i_lock)->mr_lock -> [f88bf148] &pag->pag_ici_lock -> [f88bf1f4] &mp->m_ilock -> [f88bf0f8] &ip->i_flags_lock -> [f88bf1b8] &btp->bt_hash[i].bh_lock -> [c09fadbc] &counter->lock -> [c0a03f20] &mz->lru_lock -> [c0a04870] &inode->i_data.tree_lock -> [f89ce3f0] ide_lock -> [c0a0bbbc] &ret->lock -> [c0653e6c] &base->lock -> [c0654274] &q->lock -> [c0641140] &rq->lock -> [f88bf1c8] semaphore->lock#4 -> [c0a03e84] &n->list_lock -> [c09fbf94] &zone->lru_lock -> [c04782b0] inode_lock -> [f88bf128] &log->l_icloglock -> [f88bf120] &log->l_grant_lock -> [f88bf1fc] &mp->m_sb_lock -> [f88bf118] &iclog->ic_callback_lock -> [f88bf1b0] &btp->bt_delwrite_lock -> [c2f44c20] &writer->lock_class -> [f88bf138] &mp->m_peraglock -> [c09fbf9c] &zone->lock -> [c0472370] pgd_lock -> [c09fb4c0] &(kretprobe_table_locks[i].lock) -> [f88bf110] &mp->m_ail_lock -> [c0a0c19c] &sem->wait_lock f88bf0f8 FD: 1 BD: 21 --..: &ip->i_flags_lock f88bf1f4 FD: 8 BD: 18 --..: &mp->m_ilock -> [f88bf0f8] &ip->i_flags_lock c0a04858 FD: 18 BD: 12 --..: &inode->inotify_mutex -> [c0a04994] &ih->mutex f88bea40 FD: 54 BD: 6 --..: &type->i_mutex_dir_key#3 -> [c049f6f0] dcache_lock -> [f88bf0e8] &(&ip->i_lock)->mr_lock -> [c04782b0] inode_lock -> [f88bf1b8] &btp->bt_hash[i].bh_lock -> [c09fbf94] &zone->lru_lock -> [f88bf1c8] semaphore->lock#4 -> [c0654274] &q->lock -> [f88bf1f4] &mp->m_ilock -> [f88bf0f8] &ip->i_flags_lock -> [c09fadbc] &counter->lock -> [c0a03f20] &mz->lru_lock -> [c0a04870] &inode->i_data.tree_lock -> [f89ce3f0] ide_lock -> [c0641140] &rq->lock -> [c09fbf9c] &zone->lock -> [c0a03e84] &n->list_lock -> [c2f44c20] &writer->lock_class -> [c0653e6c] &base->lock -> [c0a0bbbc] &ret->lock -> [c0a046c8] &dentry->d_lock -> [c049f750] vfsmount_lock -> [f88bf120] &log->l_grant_lock -> [f88bf0e9] &(&ip->i_lock)->mr_lock/1 -> [f88bf1b0] &btp->bt_delwrite_lock -> [f88bf128] &log->l_icloglock -> [f88bf0ea] &(&ip->i_lock)->mr_lock/2 -> [f88bf0eb] &(&ip->i_lock)->mr_lock/3 -> [c0472370] pgd_lock -> [c09fb4c0] &(kretprobe_table_locks[i].lock) -> [c0a0c19c] &sem->wait_lock f88bea30 FD: 1 BD: 2 --..: &sb->s_type->i_lock_key#3 f88bf0e0 FD: 48 BD: 7 ----: &(&ip->i_iolock)->mr_lock -> [c09fbf9c] &zone->lock -> [c09fadbc] &counter->lock -> [c0a03f20] &mz->lru_lock -> [c0a03e84] &n->list_lock -> [c0a04870] &inode->i_data.tree_lock -> [f88bf0e8] &(&ip->i_lock)->mr_lock -> [f89ce3f0] ide_lock -> [c09fc1ec] &page_address_htable[i].lock -> [c0654274] &q->lock -> [c0641140] &rq->lock -> [c09fbf24] &tsk->delays->lock -> [c2f44c20] &writer->lock_class -> [c09fbf94] &zone->lru_lock -> [c0653e6c] &base->lock -> [c0a0bbbc] &ret->lock -> [c0472370] pgd_lock -> [c09fb4c0] &(kretprobe_table_locks[i].lock) -> [c04782b0] inode_lock -> [c0a04860] &inode->i_data.private_lock -> [f88bf120] &log->l_grant_lock -> [c0a04868] &inode->i_data.i_mmap_lock -> [f88bf0f8] &ip->i_flags_lock c0a0f998 FD: 10 BD: 1 --..: &tty->termios_mutex -> [c0480550] tty_ldisc_lock -> [c0654274] &q->lock -> [c0a0f970] &tty->ctrl_lock c0a0f9a8 FD: 1 BD: 14 +...: &tty->buf.lock c0480850 FD: 1 BD: 1 ....: vt_spawn_con.lock c0a049a0 FD: 19 BD: 1 --..: &dev->up_mutex -> [c0a04858] &inode->inotify_mutex -> [c0a03e84] &n->list_lock c0a04994 FD: 17 BD: 13 --..: &ih->mutex -> [c0a0c0c8] &idp->lock -> [c04782b0] inode_lock -> [c049f6f0] dcache_lock -> [c0a03e84] &n->list_lock c048d6f0 FD: 1 BD: 2 --..: unix_table_lock c0a17a84 FD: 81 BD: 1 --..: &u->readlock -> [c048d6f0] unix_table_lock -> [f88bea41] &type->i_mutex_dir_key#3/1 -> [c049f750] vfsmount_lock -> [c0477679] &sb->s_type->i_mutex_key#5/1 -> [c0a17a8c] &u->lock -> [c0654274] &q->lock -> [c0a03e84] &n->list_lock -> [c0641140] &rq->lock -> [c0a17ea4] &af_unix_sk_receive_queue_lock_key -> [c09fbf9c] &zone->lock c0a17a8c FD: 10 BD: 2 --..: &u->lock -> [c0654274] &q->lock -> [c0a15028] clock-AF_UNIX -> [c0a17a8d] &u->lock/1 -> [c0a17ea4] &af_unix_sk_receive_queue_lock_key c0a15028 FD: 1 BD: 3 -.--: clock-AF_UNIX c0a17ea4 FD: 1 BD: 3 --..: &af_unix_sk_receive_queue_lock_key c0a14f08 FD: 1 BD: 1 -...: slock-AF_UNIX c0a14de8 FD: 1 BD: 1 --..: sk_lock-AF_UNIX c0a049a8 FD: 1 BD: 1 --..: &dev->ev_mutex c04787d0 FD: 1 BD: 1 --..: &sb->s_type->i_lock_key#4 f88bea38 FD: 61 BD: 5 --..: &sb->s_type->i_mutex_key#4 -> [f88bf0e0] &(&ip->i_iolock)->mr_lock -> [f88bf120] &log->l_grant_lock -> [f88bf0e8] &(&ip->i_lock)->mr_lock -> [c0a046c8] &dentry->d_lock -> [f88bea48] &sb->s_type->i_alloc_sem_key#3 -> [c04782b0] inode_lock -> [f88bf0ea] &(&ip->i_lock)->mr_lock/2 -> [f88bf1c8] semaphore->lock#4 -> [f88bf128] &log->l_icloglock -> [f88bf0f8] &ip->i_flags_lock -> [c049f6f0] dcache_lock -> [f88bf0eb] &(&ip->i_lock)->mr_lock/3 -> [c09fbf9c] &zone->lock -> [c0a03e84] &n->list_lock -> [f88bf0ed] &(&ip->i_lock)->mr_lock/5 -> [f88bf1b0] &btp->bt_delwrite_lock -> [f88bf138] &mp->m_peraglock -> [f88bf1fc] &mp->m_sb_lock -> [f88bf118] &iclog->ic_callback_lock -> [f88bf0ec] &(&ip->i_lock)->mr_lock/4 -> [c0a0c19c] &sem->wait_lock -> [c0653e6c] &base->lock -> [c0641140] &rq->lock -> [c0472370] pgd_lock -> [c09fb4c0] &(kretprobe_table_locks[i].lock) c04804d0 FD: 1 BD: 1 --..: redirect_lock c0a0f980 FD: 19 BD: 1 --..: &tty->atomic_write_lock -> [c0654274] &q->lock -> [c04729d0] (console_sem).lock -> [c047d610] vga_lock -> [c0472990] logbuf_lock -> [c09fbf9c] &zone->lock -> [c0641140] &rq->lock -> [c0a0f978] &tty->read_lock -> [c0a03e84] &n->list_lock -> [c0480550] tty_ldisc_lock -> [c0a0f970] &tty->ctrl_lock c0480370 FD: 1 BD: 50 ++..: random_read_wait.lock f88bea20 FD: 20 BD: 2 --..: &type->s_lock_key#4 -> [f88bf1c8] semaphore->lock#4 -> [f88bf1b0] &btp->bt_delwrite_lock -> [f89ce3f0] ide_lock -> [c0654274] &q->lock -> [c0641140] &rq->lock -> [f88bf1b8] &btp->bt_hash[i].bh_lock c047a788 FD: 21 BD: 1 --..: &type->s_umount_key#14 -> [c0477e50] sb_lock -> [c04782b0] inode_lock -> [c049f6f0] dcache_lock -> [c0a041c8] &s->s_dquot.dqonoff_mutex -> [c047a780] &type->s_lock_key#5 c047a780 FD: 1 BD: 2 --..: &type->s_lock_key#5 c0a0c1b8 FD: 1 BD: 1 --..: &fbc->lock f88bea41 FD: 69 BD: 3 --..: &type->i_mutex_dir_key#3/1 -> [c0a046c8] &dentry->d_lock -> [c2f44c20] &writer->lock_class -> [c049f6f0] dcache_lock -> [f88bf0e8] &(&ip->i_lock)->mr_lock -> [f88bea38] &sb->s_type->i_mutex_key#4 -> [c0a04858] &inode->inotify_mutex -> [c0a03e84] &n->list_lock -> [f88bea40] &type->i_mutex_dir_key#3 -> [c04782b0] inode_lock -> [f88bf120] &log->l_grant_lock -> [f88bf0e0] &(&ip->i_iolock)->mr_lock -> [f88bf0f8] &ip->i_flags_lock -> [f88bf1f4] &mp->m_ilock -> [f88bf0e9] &(&ip->i_lock)->mr_lock/1 -> [f88bf128] &log->l_icloglock -> [f88bf0ea] &(&ip->i_lock)->mr_lock/2 -> [f88bf0ec] &(&ip->i_lock)->mr_lock/4 -> [f88bf1c8] semaphore->lock#4 -> [c0a04860] &inode->i_data.private_lock -> [c0a04870] &inode->i_data.tree_lock -> [c09fbf94] &zone->lru_lock -> [f88bf1b8] &btp->bt_hash[i].bh_lock -> [c0654274] &q->lock -> [c09fbf9c] &zone->lock -> [f88bf1b0] &btp->bt_delwrite_lock -> [f88bea42] &type->i_mutex_dir_key#3/2 -> [c0641140] &rq->lock c0a03e48 FD: 1 BD: 11 --..: &sbinfo->stat_lock c0477678 FD: 30 BD: 5 --..: &sb->s_type->i_mutex_key#5 -> [c049f6f0] dcache_lock -> [c2f44c20] &writer->lock_class -> [c0a03e48] &sbinfo->stat_lock -> [c04782b0] inode_lock -> [c0477670] &sb->s_type->i_lock_key#5 -> [c0a046c8] &dentry->d_lock -> [c0a03e50] &info->lock -> [c09fadbc] &counter->lock -> [c0a03f20] &mz->lru_lock -> [c0a03e84] &n->list_lock -> [c0477688] &sb->s_type->i_alloc_sem_key#2 -> [c09fbf9c] &zone->lock -> [c0641140] &rq->lock -> [c049f750] vfsmount_lock c0477679 FD: 34 BD: 2 --..: &sb->s_type->i_mutex_key#5/1 -> [c049f6f0] dcache_lock -> [c2f44c20] &writer->lock_class -> [c0a03e48] &sbinfo->stat_lock -> [c04782b0] inode_lock -> [c0477670] &sb->s_type->i_lock_key#5 -> [c0a046c8] &dentry->d_lock -> [c0477678] &sb->s_type->i_mutex_key#5 -> [c0a04858] &inode->inotify_mutex -> [c0a03e84] &n->list_lock -> [c09fbf9c] &zone->lock -> [c0641140] &rq->lock c0477670 FD: 1 BD: 6 --..: &sb->s_type->i_lock_key#5 c0a14f80 FD: 1 BD: 1 -...: slock-AF_NETLINK c0a14e60 FD: 1 BD: 1 --..: sk_lock-AF_NETLINK c0479190 FD: 1 BD: 1 --..: sysfs_open_dirent_lock c0a04c2c FD: 23 BD: 1 --..: &buffer->mutex -> [c047ca90] sequence_lock -> [c0a03e84] &n->list_lock -> [c0a14d90] &list->lock -> [c0489a30] nl_table_wait.lock -> [c09fbf9c] &zone->lock -> [c047ce50] pci_lock -> [c047f198] acpi_prt_lock c0a03e50 FD: 7 BD: 9 --..: &info->lock -> [c0a03e48] &sbinfo->stat_lock -> [c0a04870] &inode->i_data.tree_lock c0477688 FD: 18 BD: 6 --..: &sb->s_type->i_alloc_sem_key#2 -> [c04782b0] inode_lock -> [c0a04868] &inode->i_data.i_mmap_lock -> [c0a04870] &inode->i_data.tree_lock -> [c09fbf94] &zone->lru_lock -> [c0a03e50] &info->lock -> [c0641140] &rq->lock c0479370 FD: 1 BD: 1 --..: &sb->s_type->i_lock_key#6 c0a14d90 FD: 1 BD: 20 -+..: &list->lock c0a150a0 FD: 1 BD: 1 -.--: clock-AF_NETLINK c04786c0 FD: 1 BD: 1 --..: &type->i_mutex_dir_key#4 c049f714 FD: 4 BD: 68 --..: rename_lock -> [c0a046c8] &dentry->d_lock -> [c0a046c9] &dentry->d_lock/1 c0a046c9 FD: 1 BD: 70 --..: &dentry->d_lock/1 c0a0bbb4 FD: 17 BD: 2 --..: &q->unplug_work -> [f89ce3f0] ide_lock -> [c0653e6c] &base->lock c047494c FD: 1 BD: 1 --..: (cpu_dma_lat_notifier).rwsem c0487520 FD: 1 BD: 2 ....: thermal_cdev_idr.lock c0487578 FD: 2 BD: 1 --..: thermal_idr_lock -> [c0487520] thermal_cdev_idr.lock c0a14764 FD: 1 BD: 1 --..: struct class mutex#14 c04875d8 FD: 1 BD: 1 --..: thermal_list_lock c0487d8c FD: 1 BD: 1 --..: (cpufreq_policy_notifier_list).rwsem f892a618 FD: 4 BD: 1 --..: info_mutex -> [c0478dd0] proc_subdir_lock -> [c0478e20] proc_inum_ida.lock -> [c0478df0] proc_inum_lock f8947018 FD: 52 BD: 3 --..: psmouse_mutex -> [c0a144c8] &serio->lock -> [c0a14614] &ps2dev->cmd_mutex -> [c0a0c0d4] &k->list_lock -> [c04792b0] sysfs_ino_lock -> [c04791d8] sysfs_mutex -> [c047e800] bus_type_sem -> [c0479270] sysfs_assoc_lock -> [c0485fd8] dpm_list_mtx -> [c047ca90] sequence_lock -> [c09fbf9c] &zone->lock -> [c0a14d90] &list->lock -> [c0489a30] nl_table_wait.lock -> [c0a19064] &k->k_lock -> [c0a14620] struct class mutex#12 -> [c0486cb8] input_mutex f896994c FD: 40 BD: 2 ----: (usb_notifier_list).rwsem -> [c04785d0] pin_fs_lock -> [c04784e0] mnt_id_ida.lock -> [c049f750] vfsmount_lock -> [c0477e50] sb_lock -> [f8969a08] &type->s_umount_key#15 -> [f8969a18] &sb->s_type->i_mutex_key#6 -> [f8969b10] deviceconndiscwq.lock -> [c0a0c0d4] &k->list_lock -> [c04792b0] sysfs_ino_lock -> [c04791d8] sysfs_mutex -> [c047e800] bus_type_sem -> [c0479270] sysfs_assoc_lock -> [c0485fd8] dpm_list_mtx -> [c047ca90] sequence_lock -> [c0a14d90] &list->lock -> [c0489a30] nl_table_wait.lock -> [c0a19064] &k->k_lock -> [f896a368] struct class mutex#18 -> [c0a03e84] &n->list_lock f8968df0 FD: 7 BD: 2 ....: hub_event_lock -> [f8968e30] khubd_wait.lock f8968e30 FD: 6 BD: 3 ....: khubd_wait.lock -> [c0641140] &rq->lock f892a798 FD: 1 BD: 1 --..: strings f8970b78 FD: 1 BD: 2 --..: register_mutex f892a538 FD: 29 BD: 2 --..: sound_mutex -> [c0a0c0d4] &k->list_lock -> [c04792b0] sysfs_ino_lock -> [c04791d8] sysfs_mutex -> [c047e800] bus_type_sem -> [c0479270] sysfs_assoc_lock -> [c0485fd8] dpm_list_mtx -> [c047ca90] sequence_lock -> [c0a03e84] &n->list_lock -> [c0a14d90] &list->lock -> [c0489a30] nl_table_wait.lock -> [f88ff904] struct class mutex#15 -> [c0a19064] &k->k_lock f88ff904 FD: 1 BD: 3 --..: struct class mutex#15 f8986648 FD: 1 BD: 3 .+..: &tp->mii_lock c0a15868 FD: 1 BD: 4 -...: _xmit_ETHER c04774d8 FD: 20 BD: 1 --..: pools_lock -> [c04792b0] sysfs_ino_lock -> [c04791d8] sysfs_mutex f8968fb8 FD: 69 BD: 1 --..: usb_bus_list_lock -> [c0a0c0d4] &k->list_lock -> [c04792b0] sysfs_ino_lock -> [c04791d8] sysfs_mutex -> [c047e800] bus_type_sem -> [c0479270] sysfs_assoc_lock -> [c0485fd8] dpm_list_mtx -> [c047ca90] sequence_lock -> [c0a14d90] &list->lock -> [c0654274] &q->lock -> [c0489a30] nl_table_wait.lock -> [c0a19064] &k->k_lock -> [f8969ee0] struct class mutex#16 -> [f8969030] hcd_root_hub_lock -> [c0a14438] semaphore->lock#2 -> [f8969e94] &dev->pm_mutex -> [f8968f10] device_state_lock -> [f8969f04] &new_driver->dynids.lock -> [c0a03b28] &retval->lock -> [f89906ec] &ehci->lock -> [f8969ec0] &hub->status_mutex -> [c0653e6c] &base->lock -> [c0641140] &rq->lock -> [f8968df0] hub_event_lock -> [c0485b30] probe_waitqueue.lock -> [c0a03e84] &n->list_lock -> [c0478038] chrdevs_lock -> [f8969718] minor_lock -> [f896a344] struct class mutex#17 -> [f896994c] (usb_notifier_list).rwsem -> [c04792e0] sysfs_ino_ida.lock -> [c09fbf9c] &zone->lock f8969ee0 FD: 1 BD: 2 --..: struct class mutex#16 c04785d0 FD: 1 BD: 4 --..: pin_fs_lock f8969a08 FD: 24 BD: 3 --..: &type->s_umount_key#15 -> [c0477e50] sb_lock -> [c04782b0] inode_lock -> [c049f6f0] dcache_lock -> [c0a041c8] &s->s_dquot.dqonoff_mutex -> [f8969a00] &type->s_lock_key#6 f8969a00 FD: 18 BD: 4 --..: &type->s_lock_key#6 -> [f8969a19] &sb->s_type->i_mutex_key#6/1 f8969a18 FD: 16 BD: 6 --..: &sb->s_type->i_mutex_key#6 -> [c049f6f0] dcache_lock -> [c04782b0] inode_lock -> [c09fbf9c] &zone->lock f8969b10 FD: 1 BD: 3 ....: deviceconndiscwq.lock c0a03b28 FD: 1 BD: 2 ....: &retval->lock f8968d6c FD: 7 BD: 1 --..: ehci_cf_port_reset_rwsem -> [c0653e6c] &base->lock -> [c0641140] &rq->lock f8968f10 FD: 1 BD: 5 ....: device_state_lock f8969030 FD: 2 BD: 6 ....: hcd_root_hub_lock -> [f8969090] hcd_urb_list_lock f8969090 FD: 1 BD: 7 ....: hcd_urb_list_lock f8969e94 FD: 10 BD: 4 --..: &dev->pm_mutex -> [c0653e6c] &base->lock -> [f89690f8] reject_mutex -> [f8969070] hcd_urb_unlink_lock -> [f8969030] hcd_root_hub_lock -> [f8968ff0] usb_kill_urb_queue.lock -> [f89906ec] &ehci->lock -> [f8968f10] device_state_lock -> [f8969090] hcd_urb_list_lock -> [f8a1130c] &ohci->lock f8969f04 FD: 1 BD: 2 --..: &new_driver->dynids.lock f89906ec FD: 1 BD: 6 ....: &ehci->lock f8969ec0 FD: 10 BD: 2 --..: &hub->status_mutex -> [f8969030] hcd_root_hub_lock -> [f89906ec] &ehci->lock -> [c0654274] &q->lock f892a6cc FD: 1 BD: 1 --..: snd_ioctl_rwsem f8969718 FD: 2 BD: 2 --..: minor_lock -> [f89696c0] endpoint_idr.lock f89696c0 FD: 1 BD: 3 ....: endpoint_idr.lock f896a344 FD: 1 BD: 2 --..: struct class mutex#17 f896a368 FD: 1 BD: 3 --..: struct class mutex#18 f8934bf8 FD: 1 BD: 1 --..: cdrom_mutex f8a426f8 FD: 1 BD: 2 --..: idecd_ref_mutex f89b46a0 FD: 1 BD: 2 ....: rtc_idr.lock f89b46f8 FD: 2 BD: 1 --..: idr_lock -> [f89b46a0] rtc_idr.lock f89b4b04 FD: 1 BD: 1 --..: struct class mutex#19 f892a5b8 FD: 1 BD: 2 --..: snd_card_mutex f89afe40 FD: 1 BD: 1 --..: struct class mutex#20 f8a7b068 FD: 1 BD: 1 --..: &ac97->reg_mutex f892af7c FD: 1 BD: 1 --..: &card->controls_rwsem f892af74 FD: 1 BD: 1 ..--: &card->ctl_files_rwlock f88f7b78 FD: 1 BD: 1 --..: list_mutex f89d7304 FD: 1 BD: 1 ....: &chip->reg_lock f89ff538 FD: 1 BD: 1 --..: buses_mutex f89ec7d0 FD: 1 BD: 1 --..: full_list_lock f8a096d0 FD: 1 BD: 1 --..: ports_lock f89ec9b0 FD: 1 BD: 1 --..: topology_lock f89ecd00 FD: 1 BD: 1 --..: &tmp->pardevice_lock f89ecd10 FD: 1 BD: 1 ....: &tmp->cad_lock f89ecd18 FD: 6 BD: 1 .+..: semaphore->lock#5 -> [c0641140] &rq->lock f89a6438 FD: 31 BD: 1 --..: register_mutex#2 -> [f892a538] sound_mutex -> [f8970b78] register_mutex -> [c0a03e84] &n->list_lock f89ecd08 FD: 1 BD: 1 --..: &tmp->waitlist_lock f89ec718 FD: 30 BD: 1 --..: registration_lock -> [f89ec6d0] parportlist_lock -> [c0a0c0d4] &k->list_lock -> [c04792b0] sysfs_ino_lock -> [c04791d8] sysfs_mutex -> [c047e800] bus_type_sem -> [c0479270] sysfs_assoc_lock -> [c0485fd8] dpm_list_mtx -> [c047ca90] sequence_lock -> [c0a14d90] &list->lock -> [c0489a30] nl_table_wait.lock -> [c0a19064] &k->k_lock -> [f8a2dea0] struct class mutex#21 f89ec6d0 FD: 1 BD: 2 ....: parportlist_lock f8a2dea0 FD: 1 BD: 2 --..: struct class mutex#21 f8a1130c FD: 1 BD: 5 .+..: &ohci->lock c04758c8 FD: 24 BD: 1 --..: &type->s_umount_key#16 -> [c0477e50] sb_lock -> [c04782b0] inode_lock -> [c049f6f0] dcache_lock -> [c04758d8] &sb->s_type->i_mutex_key#7 -> [c04756f8] cgroup_mutex c04758d8 FD: 20 BD: 2 --..: &sb->s_type->i_mutex_key#7 -> [c04756f8] cgroup_mutex -> [c0a046c8] &dentry->d_lock -> [c049f6f0] dcache_lock -> [c2f44c20] &writer->lock_class -> [c04782b0] inode_lock c04756f8 FD: 18 BD: 5 --..: cgroup_mutex -> [c0654274] &q->lock -> [c0641140] &rq->lock -> [c0475790] css_set_lock -> [c049f6f0] dcache_lock -> [c04782b0] inode_lock -> [c0a03e84] &n->list_lock -> [c09fbf9c] &zone->lock c0475790 FD: 1 BD: 6 --..: css_set_lock c0487d50 FD: 1 BD: 2 ....: cpufreq_driver_lock f89b4b14 FD: 1 BD: 1 +...: &rtc->irq_lock f89b4b0c FD: 1 BD: 1 +...: &rtc->irq_task_lock f89b4b1c FD: 2 BD: 1 --..: &rtc->ops_lock -> [c0471550] rtc_lock c04765b8 FD: 10 BD: 1 --..: audit_cmd_mutex -> [c0474670] kthread_create_lock -> [c0641140] &rq->lock -> [c0654274] &q->lock -> [c0a14d90] &list->lock -> [c0a03e84] &n->list_lock c09faf64 FD: 1 BD: 1 ....: &list->lock#2 c04765f0 FD: 1 BD: 1 ....: audit_backlog_wait.lock c0476630 FD: 1 BD: 1 ....: kauditd_wait.lock c0a17a8d FD: 1 BD: 3 --..: &u->lock/1 c09f44c0 FD: 8 BD: 2 --..: &futex_queues[i].lock -> [c0654274] &q->lock -> [c09f44c1] &futex_queues[i].lock/1 c04773d8 FD: 15 BD: 2 --..: swapon_mutex -> [c0477410] swap_lock -> [c049f6f0] dcache_lock f8969e84 FD: 12 BD: 1 --..: ksuspend_usbd -> [f8969e8c] &(&dev->autosuspend)->work f8969e8c FD: 11 BD: 2 --..: &(&dev->autosuspend)->work -> [f8969e94] &dev->pm_mutex f8969a19 FD: 17 BD: 5 --..: &sb->s_type->i_mutex_key#6/1 -> [f8969a18] &sb->s_type->i_mutex_key#6 f89690f8 FD: 1 BD: 5 --..: reject_mutex f8969070 FD: 1 BD: 5 ....: hcd_urb_unlink_lock f8968ff0 FD: 1 BD: 5 ....: usb_kill_urb_queue.lock f88bf158 FD: 1 BD: 2 --..: &mru->lock f88bf128 FD: 9 BD: 26 --..: &log->l_icloglock -> [f88bf110] &mp->m_ail_lock -> [f88bf120] &log->l_grant_lock -> [c0654274] &q->lock f88bf120 FD: 1 BD: 27 --..: &log->l_grant_lock f88bf0e9 FD: 42 BD: 7 --..: &(&ip->i_lock)->mr_lock/1 -> [f88bf138] &mp->m_peraglock -> [f88bf1b8] &btp->bt_hash[i].bh_lock -> [c09fadbc] &counter->lock -> [c0a03f20] &mz->lru_lock -> [c0a04870] &inode->i_data.tree_lock -> [f89ce3f0] ide_lock -> [c0653e6c] &base->lock -> [c0654274] &q->lock -> [c0641140] &rq->lock -> [f88bf1c8] semaphore->lock#4 -> [c0a03e84] &n->list_lock -> [c04782b0] inode_lock -> [f88bf0e8] &(&ip->i_lock)->mr_lock -> [c09fbf94] &zone->lru_lock -> [c0a0bbbc] &ret->lock -> [f88bf1f4] &mp->m_ilock -> [f88bf140] &mp->m_agirotor_lock -> [c09fbf9c] &zone->lock -> [f88bf128] &log->l_icloglock -> [f88bf120] &log->l_grant_lock -> [f88bf1fc] &mp->m_sb_lock -> [f88bf118] &iclog->ic_callback_lock -> [f88bf1b0] &btp->bt_delwrite_lock -> [c0a0c19c] &sem->wait_lock f88bf138 FD: 30 BD: 18 ..--: &mp->m_peraglock -> [f88bf1b8] &btp->bt_hash[i].bh_lock -> [c09fadbc] &counter->lock -> [c0a03f20] &mz->lru_lock -> [c0a04870] &inode->i_data.tree_lock -> [f89ce3f0] ide_lock -> [c0654274] &q->lock -> [c0641140] &rq->lock -> [f88bf1c8] semaphore->lock#4 -> [c09fbf94] &zone->lru_lock -> [c09fbf9c] &zone->lock -> [c0653e6c] &base->lock -> [f88bf0a8] &pag->pagb_lock -> [f88bf0f8] &ip->i_flags_lock -> [f88bf128] &log->l_icloglock -> [f88bf120] &log->l_grant_lock -> [f88bf1b0] &btp->bt_delwrite_lock -> [c0a03e84] &n->list_lock -> [c0a0bbbc] &ret->lock f88bf1a8 FD: 17 BD: 1 --..: xfslogd -> [f88bf1c0] &bp->b_iodone_work f88bf1c0 FD: 16 BD: 2 --..: &bp->b_iodone_work -> [f88bf1c8] semaphore->lock#4 -> [f88bf1b8] &btp->bt_hash[i].bh_lock -> [f88bf128] &log->l_icloglock -> [f88bf120] &log->l_grant_lock -> [f88bf118] &iclog->ic_callback_lock -> [f88bf110] &mp->m_ail_lock -> [c0a03e84] &n->list_lock -> [c0654274] &q->lock -> [f88bf0a8] &pag->pagb_lock -> [c09fbf9c] &zone->lock f88bf118 FD: 10 BD: 24 --..: &iclog->ic_callback_lock -> [f88bf128] &log->l_icloglock f88bea48 FD: 49 BD: 6 --..: &sb->s_type->i_alloc_sem_key#3 -> [f88bf0e0] &(&ip->i_iolock)->mr_lock -> [f88bf0e8] &(&ip->i_lock)->mr_lock -> [c0641140] &rq->lock f88bf0a8 FD: 1 BD: 21 --..: &pag->pagb_lock f88bf0ea FD: 37 BD: 9 --..: &(&ip->i_lock)->mr_lock/2 -> [f88bf0eb] &(&ip->i_lock)->mr_lock/3 -> [f88bf0ed] &(&ip->i_lock)->mr_lock/5 -> [f88bf0ec] &(&ip->i_lock)->mr_lock/4 -> [c0a0c19c] &sem->wait_lock f88bf0eb FD: 33 BD: 10 --..: &(&ip->i_lock)->mr_lock/3 -> [f88bf1b8] &btp->bt_hash[i].bh_lock -> [f88bf1c8] semaphore->lock#4 -> [f88bf128] &log->l_icloglock -> [f88bf120] &log->l_grant_lock -> [f88bf1fc] &mp->m_sb_lock -> [f88bf118] &iclog->ic_callback_lock -> [f88bf1b0] &btp->bt_delwrite_lock -> [f89ce3f0] ide_lock -> [c0a03e84] &n->list_lock -> [c0a0bbbc] &ret->lock -> [f88bf0ed] &(&ip->i_lock)->mr_lock/5 -> [c04782b0] inode_lock -> [c09fadbc] &counter->lock -> [c0a03f20] &mz->lru_lock -> [c0a04870] &inode->i_data.tree_lock -> [c0653e6c] &base->lock -> [c0654274] &q->lock -> [c0641140] &rq->lock -> [c09fbf94] &zone->lru_lock -> [f88bf0ec] &(&ip->i_lock)->mr_lock/4 f88bf0ed FD: 15 BD: 12 --..: &(&ip->i_lock)->mr_lock/5 -> [f88bf1b8] &btp->bt_hash[i].bh_lock -> [f88bf1c8] semaphore->lock#4 -> [f88bf128] &log->l_icloglock -> [f88bf120] &log->l_grant_lock -> [f88bf1fc] &mp->m_sb_lock -> [f88bf118] &iclog->ic_callback_lock -> [c04782b0] inode_lock f8a226ec FD: 1 BD: 1 --..: _lock c04758d0 FD: 1 BD: 1 --..: &sb->s_type->i_lock_key#7 c0a04978 FD: 6 BD: 28 +...: &dio->bio_lock -> [c0641140] &rq->lock f8a2280c FD: 1 BD: 1 --..: _hash_lock f88bf140 FD: 1 BD: 8 --..: &mp->m_agirotor_lock c0a0c1c0 FD: 1 BD: 30 ....: &percpu_counter_irqsafe f88bf1a0 FD: 43 BD: 1 --..: xfsdatad -> [f88bf184] &ioend->io_work -> [f88bf174] &ioend->io_work#2 f88bf184 FD: 41 BD: 2 --..: &ioend->io_work -> [f88bf0e8] &(&ip->i_lock)->mr_lock -> [c0a04870] &inode->i_data.tree_lock -> [c0654274] &q->lock -> [c0641140] &rq->lock -> [f88bf120] &log->l_grant_lock -> [c0a03e84] &n->list_lock f88bf0ec FD: 16 BD: 11 --..: &(&ip->i_lock)->mr_lock/4 -> [f88bf1b8] &btp->bt_hash[i].bh_lock -> [c04782b0] inode_lock -> [f88bf1c8] semaphore->lock#4 -> [f88bf128] &log->l_icloglock -> [f88bf120] &log->l_grant_lock -> [f88bf1fc] &mp->m_sb_lock -> [f88bf118] &iclog->ic_callback_lock -> [f88bf0ed] &(&ip->i_lock)->mr_lock/5 c0a0f970 FD: 1 BD: 20 ....: &tty->ctrl_lock c0a0f988 FD: 22 BD: 1 --..: &tty->atomic_read_lock -> [c0654274] &q->lock -> [c0641140] &rq->lock -> [c0a0f978] &tty->read_lock -> [c0480550] tty_ldisc_lock -> [c0642268] &sighand->siglock c048b54c FD: 8 BD: 3 ..--: (inetaddr_chain).rwsem -> [c048c910] fib_hash_lock -> [c048bbd0] fib_info_lock -> [c0480244] &input_pool.lock -> [c04802e4] &nonblocking_pool.lock -> [c0489a30] nl_table_wait.lock c048c910 FD: 1 BD: 4 -.-?: fib_hash_lock c048bbd0 FD: 1 BD: 4 -...: fib_info_lock c0a15968 FD: 1 BD: 3 -...: _xmit_LOOPBACK c0a16b00 FD: 1 BD: 3 -.-+: &in_dev->mc_list_lock c0a16af8 FD: 1 BD: 3 -...: &in_dev->mc_tomb_lock c0a17f20 FD: 2 BD: 3 -+..: &ifa->lock -> [c0653e6c] &base->lock c0a17fcc FD: 4 BD: 4 -+-.: &tb->tb6_lock -> [c0489a30] nl_table_wait.lock -> [c048dff0] fib6_walker_lock -> [c0a03e84] &n->list_lock c048dff0 FD: 1 BD: 5 -+..: fib6_walker_lock c0a14f10 FD: 18 BD: 2 -+..: slock-AF_INET -> [c0a14d90] &list->lock -> [c0a16614] &hashinfo->ehash_locks[i] -> [c0a1660c] &tcp_hashinfo.bhash[i].lock -> [c0a15140] &queue->syn_wait_lock -> [c0653e6c] &base->lock -> [c0a15be8] &n->lock -> [c0a03e84] &n->list_lock c0a14df0 FD: 37 BD: 1 --..: sk_lock-AF_INET -> [c0a15030] clock-AF_INET -> [c0a14d88] &sk->sk_dst_lock -> [c048af30] udp_hash_lock -> [c0a15be8] &n->lock -> [c0a03e84] &n->list_lock -> [c0a1660c] &tcp_hashinfo.bhash[i].lock -> [c0480244] &input_pool.lock -> [c04802e4] &nonblocking_pool.lock -> [c0a15140] &queue->syn_wait_lock -> [c049f850] tcp_hashinfo.lhash_lock -> [c049f874] tcp_hashinfo.lhash_wait.lock -> [c0653e6c] &base->lock -> [c0654274] &q->lock -> [c0a14da0] &newsk->sk_dst_lock -> [c0a16010] &rt_hash_locks[i] -> [c09fbf9c] &zone->lock c0a15030 FD: 1 BD: 2 -.-?: clock-AF_INET f8986650 FD: 1 BD: 8 ++..: &tp->lock c048dfb0 FD: 2 BD: 2 -+..: icmp6_dst_lock -> [c0a03e84] &n->list_lock c0a15be8 FD: 4 BD: 7 -+-+: &n->lock -> [c0653e6c] &base->lock -> [c0a03e84] &n->list_lock -> [c0a15bd8] &list->lock#4 c0a15e54 FD: 1 BD: 3 -+..: &list->lock#3 c0a156a8 FD: 2 BD: 7 -+..: _xmit_ETHER#2 -> [f8986650] &tp->lock c0a15070 FD: 1 BD: 2 -.-+: clock-AF_INET6 c048af30 FD: 1 BD: 3 -.-+: udp_hash_lock c0a14d88 FD: 1 BD: 3 ----: &sk->sk_dst_lock c0a14f88 FD: 1 BD: 1 -...: slock-AF_PACKET c0a14e68 FD: 17 BD: 1 --..: sk_lock-AF_PACKET -> [c0a18fec] &po->bind_lock -> [c0488cd0] ptype_lock -> [c0654274] &q->lock -> [c0641140] &rq->lock c0a18fec FD: 2 BD: 2 --..: &po->bind_lock -> [c0488cd0] ptype_lock c0a150a8 FD: 1 BD: 1 -.-+: clock-AF_PACKET c0a1567c FD: 4 BD: 3 -+..: &dev->tx_global_lock -> [c0a156a8] _xmit_ETHER#2 -> [c0653e6c] &base->lock c0489890 FD: 1 BD: 3 -...: qdisc_list_lock c0489688 FD: 1 BD: 3 -...: noop_qdisc.q.lock c0a15e64 FD: 1 BD: 6 -+..: &qdisc_tx_lock c0472930 FD: 1 BD: 1 ....: log_wait.lock c0480790 FD: 6 BD: 3 ....: vt_activate_queue.lock -> [c0641140] &rq->lock c09f44c1 FD: 7 BD: 3 --..: &futex_queues[i].lock/1 -> [c0654274] &q->lock c0a16010 FD: 2 BD: 5 -+..: &rt_hash_locks[i] -> [c0a03e84] &n->list_lock f892afd0 FD: 2 BD: 1 --..: &entry->access -> [f892a5b8] snd_card_mutex f890a3b8 FD: 1 BD: 1 --..: evdev_table_mutex f890a734 FD: 1 BD: 1 --..: &evdev->client_lock f890a72c FD: 20 BD: 1 --..: &evdev->mutex -> [c0a14634] &dev->mutex -> [c0a1462c] &dev->event_lock -> [c0a144a0] &emumousebtn_mutex_class c047f458 FD: 1 BD: 1 ....: acpi_system_event_lock c047e79c FD: 1 BD: 1 ....: acpi_bus_event_queue.lock c0a11be8 FD: 1 BD: 4 +...: &irq_lists[i].lock c0a14f50 FD: 1 BD: 1 -...: slock-AF_INET6 c0a14e30 FD: 12 BD: 1 --..: sk_lock-AF_INET6 -> [c0a15070] clock-AF_INET6 -> [c048af30] udp_hash_lock -> [c0a1660c] &tcp_hashinfo.bhash[i].lock -> [c0480244] &input_pool.lock -> [c04802e4] &nonblocking_pool.lock -> [c0a15140] &queue->syn_wait_lock -> [c0a14d88] &sk->sk_dst_lock -> [c049f850] tcp_hashinfo.lhash_lock c048eb70 FD: 1 BD: 1 -...: ipv6_sk_mc_lock c048d850 FD: 1 BD: 1 -...: ipv6_sk_ac_lock c0a15bd8 FD: 1 BD: 8 .+..: &list->lock#4 c0474630 FD: 13 BD: 1 ....: idr_lock#2 -> [c0a0c0c8] &idp->lock -> [c0653f40] &new_timer->it_lock c0653f40 FD: 11 BD: 2 .+..: &new_timer->it_lock -> [c065429c] &cpu_base->lock -> [c0642268] &sighand->siglock c0a1660c FD: 2 BD: 5 -+..: &tcp_hashinfo.bhash[i].lock -> [c0a16614] &hashinfo->ehash_locks[i] c0a15140 FD: 1 BD: 5 -+..: &queue->syn_wait_lock c049f850 FD: 1 BD: 3 -.-+: tcp_hashinfo.lhash_lock c049f874 FD: 1 BD: 2 ....: tcp_hashinfo.lhash_wait.lock c0486fb8 FD: 1 BD: 1 --..: mousedev_table_mutex c0a14690 FD: 1 BD: 1 --..: &mousedev->client_lock c0a14688 FD: 9 BD: 6 --..: &mousedev->mutex#2 -> [c0a144a0] &emumousebtn_mutex_class -> [c0a14634] &dev->mutex c0a14680 FD: 1 BD: 9 +...: &client->packet_lock c047a2f8 FD: 14 BD: 1 --..: key_user_keyring_mutex -> [c0479ff0] key_user_lock -> [c0a04d38] &candidate->lock -> [c0480244] &input_pool.lock -> [c04802e4] &nonblocking_pool.lock -> [c0479fd0] key_serial_lock -> [c047a058] key_construction_mutex -> [c0a04d28] &key->sem -> [c047a224] root_key_user.lock -> [c0a03e84] &n->list_lock c047a170 FD: 1 BD: 5 ----: keyring_name_lock c0479ff0 FD: 1 BD: 2 --..: key_user_lock c0a04d38 FD: 1 BD: 7 --..: &candidate->lock c0479fd0 FD: 1 BD: 4 --..: key_serial_lock c047a058 FD: 2 BD: 2 --..: key_construction_mutex -> [c047a170] keyring_name_lock c0a04d28 FD: 4 BD: 2 --..: &key->sem -> [c047a1ac] keyring_serialise_link_sem c047a1ac FD: 3 BD: 3 --..: keyring_serialise_link_sem -> [c0a04d38] &candidate->lock -> [c047a224] root_key_user.lock c047a100 FD: 5 BD: 2 --..: key_cleanup_task -> [c0479fd0] key_serial_lock -> [c0a04d38] &candidate->lock -> [c047a170] keyring_name_lock -> [c047a224] root_key_user.lock c0a04d29 FD: 3 BD: 1 --..: &key->sem/1 -> [c0a04d38] &candidate->lock -> [c047a224] root_key_user.lock f8a29e08 FD: 21 BD: 2 --..: &type->s_umount_key#17 -> [c0477e50] sb_lock -> [c04782b0] inode_lock -> [c049f6f0] dcache_lock -> [c0a041c8] &s->s_dquot.dqonoff_mutex -> [f8a29e00] &type->s_lock_key#7 f8a29e00 FD: 1 BD: 3 --..: &type->s_lock_key#7 f8a29e90 FD: 1 BD: 2 ----: entries_lock f8a29e18 FD: 25 BD: 1 --..: &sb->s_type->i_mutex_key#8 -> [c0a046c8] &dentry->d_lock -> [f8a29e28] &sb->s_type->i_alloc_sem_key#4 -> [c049f6f0] dcache_lock -> [c04782b0] inode_lock -> [c04785d0] pin_fs_lock -> [c04784e0] mnt_id_ida.lock -> [c049f750] vfsmount_lock -> [c0477e50] sb_lock -> [f8a29e08] &type->s_umount_key#17 -> [f8a29e90] entries_lock f8a29e10 FD: 1 BD: 1 --..: &sb->s_type->i_lock_key#8 f8a29e28 FD: 2 BD: 2 --..: &sb->s_type->i_alloc_sem_key#4 -> [c04782b0] inode_lock c04818e0 FD: 10 BD: 2 --..: console_work -> [c04729d0] (console_sem).lock -> [c047d610] vga_lock -> [c0641140] &rq->lock -> [c0480790] vt_activate_queue.lock -> [c0472990] logbuf_lock c0a04c48 FD: 19 BD: 2 --..: &bb->mutex -> [c047ce50] pci_lock -> [c04723b0] memtype_lock -> [c0641054] __pte_lockptr(page) -> [c0642288] &mm->page_table_lock -> [c09fbf9c] &zone->lock c0a04c90 FD: 28 BD: 2 --..: &ids->rw_mutex -> [c049f6f0] dcache_lock -> [c04782b0] inode_lock -> [c2f44c20] &writer->lock_class -> [c0a0c0c8] &idp->lock -> [c0a03e50] &info->lock -> [c0a04858] &inode->inotify_mutex -> [c0a04870] &inode->i_data.tree_lock -> [c09fbf94] &zone->lru_lock -> [c0a03e84] &n->list_lock c0a04c88 FD: 1 BD: 4 --..: &new->lock c04719b8 FD: 2 BD: 2 --..: mtrr_mutex -> [c0471a30] set_atomicity_lock f8a55e18 FD: 14 BD: 1 --..: &dev->struct_mutex -> [c0a0c0c8] &idp->lock -> [c04771d0] vmlist_lock -> [c09fbf9c] &zone->lock -> [c0652c44] &cpu_hotplug.lock -> [c04719b8] mtrr_mutex -> [c04723b0] memtype_lock -> [c0654274] &q->lock f8a55e40 FD: 1 BD: 1 --..: struct class mutex#22 f8a55e38 FD: 1 BD: 1 --..: &dev->count_lock f8a55e10 FD: 1 BD: 1 --..: &dev->ctxlist_mutex c0a041a0 FD: 1 BD: 1 ..+.: &f->f_owner.lock f88bf1e4 FD: 1 BD: 1 --..: &mp->m_sync_lock c048e030 FD: 6 BD: 1 -+..: fib6_gc_lock -> [c048dfb0] icmp6_dst_lock f88bf174 FD: 41 BD: 2 --..: &ioend->io_work#2 -> [f88bf0e8] &(&ip->i_lock)->mr_lock -> [c0a04870] &inode->i_data.tree_lock -> [c0654274] &q->lock c0a16614 FD: 1 BD: 6 -+-+: &hashinfo->ehash_locks[i] c0a14f11 FD: 22 BD: 1 -+..: slock-AF_INET/1 -> [c0a16010] &rt_hash_locks[i] -> [c0a15be8] &n->lock -> [c0a15140] &queue->syn_wait_lock -> [c0653e6c] &base->lock -> [c0a14f10] slock-AF_INET -> [c0654274] &q->lock -> [c0a03e84] &n->list_lock -> [c0a1660c] &tcp_hashinfo.bhash[i].lock -> [c09fbf9c] &zone->lock -> [c048a8a8] tcp_death_row.death_lock c047a224 FD: 1 BD: 7 --..: root_key_user.lock c04794c0 FD: 1 BD: 2 ....: allocated_ptys.lock c0479478 FD: 2 BD: 1 --..: allocated_ptys_lock -> [c04794c0] allocated_ptys.lock c04793d8 FD: 20 BD: 3 --..: &sb->s_type->i_mutex_key#9 -> [c049f6f0] dcache_lock -> [c0a046c8] &dentry->d_lock -> [c04782b0] inode_lock -> [c0a04858] &inode->inotify_mutex -> [c0477ff0] cdev_lock -> [c0a03e84] &n->list_lock c04793d0 FD: 1 BD: 1 --..: &sb->s_type->i_lock_key#9 c0a14da0 FD: 1 BD: 2 --..: &newsk->sk_dst_lock c0489ec0 FD: 4 BD: 2 --..: (expires_work).work -> [c0a16010] &rt_hash_locks[i] -> [c0653e6c] &base->lock c0a15be0 FD: 1 BD: 4 -+..: &(&hh->hh_lock)->lock c048a2f0 FD: 1 BD: 1 -+..: inet_peer_unused_lock c048a8a8 FD: 2 BD: 2 -+..: tcp_death_row.death_lock -> [c0653e6c] &base->lock c0a041d8 FD: 70 BD: 1 --..: &s->s_vfs_rename_mutex -> [f88bea41] &type->i_mutex_dir_key#3/1 -> [f88bea42] &type->i_mutex_dir_key#3/2 f88bea42 FD: 62 BD: 4 --..: &type->i_mutex_dir_key#3/2 -> [c2f44c20] &writer->lock_class -> [f88bea38] &sb->s_type->i_mutex_key#4 -> [c049f6f0] dcache_lock c0a0c19c FD: 6 BD: 19 ....: &sem->wait_lock -> [c0641140] &rq->lock c0480300 FD: 6 BD: 2 --..: (rekey_work).work -> [c0480244] &input_pool.lock -> [c04802e4] &nonblocking_pool.lock -> [c0653e6c] &base->lock c04769d0 FD: 1 BD: 1 -+..: &rcu_bh_ctrlblk.lock c0a16f48 FD: 5 BD: 1 -+..: &f->lock -> [c0480244] &input_pool.lock -> [c04802e4] &nonblocking_pool.lock c0489630 FD: 1 BD: 1 .+..: rif_lock c0488d70 FD: 2 BD: 4 -+..: dst_garbage.lock -> [c0653e6c] &base->lock c0488da0 FD: 5 BD: 2 --..: (dst_gc_work).work -> [c0488d38] dst_gc_mutex c0488d38 FD: 4 BD: 3 --..: dst_gc_mutex -> [c0488d70] dst_garbage.lock -> [c0a03e84] &n->list_lock f890a720 FD: 1 BD: 9 +...: &client->buffer_lock c0a0f9a0 FD: 11 BD: 2 --..: &(&tty->buf.work)->work -> [c0480550] tty_ldisc_lock -> [c0a0f9a8] &tty->buf.lock -> [c0a0f978] &tty->read_lock -> [c0654274] &q->lock -- Arkadiusz MiÅ›kiewicz PLD/Linux Team arekm / maven.pl http://ftp.pld-linux.org/ From SRS0+3fb1ed55175b69522a42+1928+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 3 08:03:36 2008 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_63 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 mB3E3WIW022687 for ; Wed, 3 Dec 2008 08:03:35 -0600 X-ASG-Debug-ID: 1228313011-221d006c0000-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 9CA981673D5C for ; Wed, 3 Dec 2008 06:03:31 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id XsMuoR3OH11jYTuG for ; Wed, 03 Dec 2008 06:03:31 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7sKB-0001ud-4B for xfs@oss.sgi.com; Wed, 03 Dec 2008 14:03:31 +0000 Date: Wed, 3 Dec 2008 09:03:31 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 15/22] replace b_fspriv with b_mount Subject: Re: [patch 15/22] replace b_fspriv with b_mount Message-ID: <20081203140331.GA28361@infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> <20081202160651.749289000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160651.749289000@bombadil.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: 1228313011 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Any chance to get this one reviewed? On Tue, Dec 02, 2008 at 11:04:45AM -0500, Christoph Hellwig wrote: > Replace the b_fspriv pointer and it's ugly accessors with a properly types > xfs_mount pointer. Also switch log reocvery over to it instead of using > b_fspriv for the mount pointer. > > > Signed-off-by: Christoph Hellwig > > Index: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_buf.c > =================================================================== > --- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_buf.c 2008-11-15 15:27:32.000000000 +0100 > +++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_buf.c 2008-11-15 15:28:01.000000000 +0100 > @@ -1085,7 +1085,7 @@ xfs_bawrite( > bp->b_flags &= ~(XBF_READ | XBF_DELWRI | XBF_READ_AHEAD); > bp->b_flags |= (XBF_WRITE | XBF_ASYNC | _XBF_RUN_QUEUES); > > - bp->b_fspriv3 = mp; > + bp->b_mount = mp; > bp->b_strat = xfs_bdstrat_cb; > return xfs_bdstrat_cb(bp); > } > @@ -1098,7 +1098,7 @@ xfs_bdwrite( > XB_TRACE(bp, "bdwrite", 0); > > bp->b_strat = xfs_bdstrat_cb; > - bp->b_fspriv3 = mp; > + bp->b_mount = mp; > > bp->b_flags &= ~XBF_READ; > bp->b_flags |= (XBF_DELWRI | XBF_ASYNC); > Index: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_buf.h > =================================================================== > --- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_buf.h 2008-11-15 15:28:08.000000000 +0100 > +++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_buf.h 2008-11-15 15:29:12.000000000 +0100 > @@ -168,7 +168,7 @@ typedef struct xfs_buf { > struct completion b_iowait; /* queue for I/O waiters */ > void *b_fspriv; > void *b_fspriv2; > - void *b_fspriv3; > + struct xfs_mount *b_mount; > unsigned short b_error; /* error code on I/O */ > unsigned int b_page_count; /* size of page array */ > unsigned int b_offset; /* page offset in first page */ > @@ -335,8 +335,6 @@ extern void xfs_buf_trace(xfs_buf_t *, c > #define XFS_BUF_SET_FSPRIVATE(bp, val) ((bp)->b_fspriv = (void*)(val)) > #define XFS_BUF_FSPRIVATE2(bp, type) ((type)(bp)->b_fspriv2) > #define XFS_BUF_SET_FSPRIVATE2(bp, val) ((bp)->b_fspriv2 = (void*)(val)) > -#define XFS_BUF_FSPRIVATE3(bp, type) ((type)(bp)->b_fspriv3) > -#define XFS_BUF_SET_FSPRIVATE3(bp, val) ((bp)->b_fspriv3 = (void*)(val)) > #define XFS_BUF_SET_START(bp) do { } while (0) > #define XFS_BUF_SET_BRELSE_FUNC(bp, func) ((bp)->b_relse = (func)) > > Index: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_lrw.c > =================================================================== > --- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_lrw.c 2008-11-15 15:25:29.000000000 +0100 > +++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_lrw.c 2008-11-15 15:26:27.000000000 +0100 > @@ -847,13 +847,7 @@ retry: > int > xfs_bdstrat_cb(struct xfs_buf *bp) > { > - xfs_mount_t *mp; > - > - mp = XFS_BUF_FSPRIVATE3(bp, xfs_mount_t *); > - if (!XFS_FORCED_SHUTDOWN(mp)) { > - xfs_buf_iorequest(bp); > - return 0; > - } else { > + if (XFS_FORCED_SHUTDOWN(bp->b_mount)) { > xfs_buftrace("XFS__BDSTRAT IOERROR", bp); > /* > * Metadata write that didn't get logged but > @@ -866,6 +860,9 @@ xfs_bdstrat_cb(struct xfs_buf *bp) > else > return (xfs_bioerror(bp)); > } > + > + xfs_buf_iorequest(bp); > + return 0; > } > > /* > Index: linux-2.6-xfs/fs/xfs/xfs_buf_item.c > =================================================================== > --- linux-2.6-xfs.orig/fs/xfs/xfs_buf_item.c 2008-11-15 15:24:38.000000000 +0100 > +++ linux-2.6-xfs/fs/xfs/xfs_buf_item.c 2008-11-15 15:25:05.000000000 +0100 > @@ -707,8 +707,8 @@ xfs_buf_item_init( > * the first. If we do already have one, there is > * nothing to do here so return. > */ > - if (XFS_BUF_FSPRIVATE3(bp, xfs_mount_t *) != mp) > - XFS_BUF_SET_FSPRIVATE3(bp, mp); > + if (bp->b_mount != mp) > + bp->b_mount = mp; > XFS_BUF_SET_BDSTRAT_FUNC(bp, xfs_bdstrat_cb); > if (XFS_BUF_FSPRIVATE(bp, void *) != NULL) { > lip = XFS_BUF_FSPRIVATE(bp, xfs_log_item_t *); > Index: linux-2.6-xfs/fs/xfs/xfs_rw.c > =================================================================== > --- linux-2.6-xfs.orig/fs/xfs/xfs_rw.c 2008-11-15 15:26:37.000000000 +0100 > +++ linux-2.6-xfs/fs/xfs/xfs_rw.c 2008-11-15 15:27:17.000000000 +0100 > @@ -406,7 +406,7 @@ xfs_bwrite( > * XXXsup how does this work for quotas. > */ > XFS_BUF_SET_BDSTRAT_FUNC(bp, xfs_bdstrat_cb); > - XFS_BUF_SET_FSPRIVATE3(bp, mp); > + bp->b_mount = mp; > XFS_BUF_WRITE(bp); > > if ((error = XFS_bwrite(bp))) { > Index: linux-2.6-xfs/fs/xfs/xfs_log_recover.c > =================================================================== > --- linux-2.6-xfs.orig/fs/xfs/xfs_log_recover.c 2008-11-15 15:31:41.000000000 +0100 > +++ linux-2.6-xfs/fs/xfs/xfs_log_recover.c 2008-11-15 15:35:12.000000000 +0100 > @@ -267,21 +267,16 @@ STATIC void > xlog_recover_iodone( > struct xfs_buf *bp) > { > - xfs_mount_t *mp; > - > - ASSERT(XFS_BUF_FSPRIVATE(bp, void *)); > - > if (XFS_BUF_GETERROR(bp)) { > /* > * We're not going to bother about retrying > * this during recovery. One strike! > */ > - mp = XFS_BUF_FSPRIVATE(bp, xfs_mount_t *); > xfs_ioerror_alert("xlog_recover_iodone", > - mp, bp, XFS_BUF_ADDR(bp)); > - xfs_force_shutdown(mp, SHUTDOWN_META_IO_ERROR); > + bp->b_mount, bp, XFS_BUF_ADDR(bp)); > + xfs_force_shutdown(bp->b_mount, SHUTDOWN_META_IO_ERROR); > } > - XFS_BUF_SET_FSPRIVATE(bp, NULL); > + bp->b_mount = NULL; > XFS_BUF_CLR_IODONE_FUNC(bp); > xfs_biodone(bp); > } > @@ -2225,9 +2220,8 @@ xlog_recover_do_buffer_trans( > XFS_BUF_STALE(bp); > error = xfs_bwrite(mp, bp); > } else { > - ASSERT(XFS_BUF_FSPRIVATE(bp, void *) == NULL || > - XFS_BUF_FSPRIVATE(bp, xfs_mount_t *) == mp); > - XFS_BUF_SET_FSPRIVATE(bp, mp); > + ASSERT(bp->b_mount == NULL || bp->b_mount == mp); > + bp->b_mount = mp; > XFS_BUF_SET_IODONE_FUNC(bp, xlog_recover_iodone); > xfs_bdwrite(mp, bp); > } > @@ -2490,9 +2484,8 @@ xlog_recover_do_inode_trans( > > write_inode_buffer: > if (ITEM_TYPE(item) == XFS_LI_INODE) { > - ASSERT(XFS_BUF_FSPRIVATE(bp, void *) == NULL || > - XFS_BUF_FSPRIVATE(bp, xfs_mount_t *) == mp); > - XFS_BUF_SET_FSPRIVATE(bp, mp); > + ASSERT(bp->b_mount == NULL || bp->b_mount == mp); > + bp->b_mount = mp; > XFS_BUF_SET_IODONE_FUNC(bp, xlog_recover_iodone); > xfs_bdwrite(mp, bp); > } else { > @@ -2623,9 +2616,8 @@ xlog_recover_do_dquot_trans( > memcpy(ddq, recddq, item->ri_buf[1].i_len); > > ASSERT(dq_f->qlf_size == 2); > - ASSERT(XFS_BUF_FSPRIVATE(bp, void *) == NULL || > - XFS_BUF_FSPRIVATE(bp, xfs_mount_t *) == mp); > - XFS_BUF_SET_FSPRIVATE(bp, mp); > + ASSERT(bp->b_mount == NULL || bp->b_mount == mp); > + bp->b_mount = mp; > XFS_BUF_SET_IODONE_FUNC(bp, xlog_recover_iodone); > xfs_bdwrite(mp, bp); > > > -- > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs ---end quoted text--- From kamalesh@linux.vnet.ibm.com Wed Dec 3 08:18:37 2008 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 mB3EIa03023829 for ; Wed, 3 Dec 2008 08:18:37 -0600 X-ASG-Debug-ID: 1228313912-221200af0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e23smtp06.au.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 49C3C167401F for ; Wed, 3 Dec 2008 06:18:33 -0800 (PST) Received: from e23smtp06.au.ibm.com (E23SMTP06.au.ibm.com [202.81.18.175]) by cuda.sgi.com with ESMTP id qMAmVydXNIAK6rFN for ; Wed, 03 Dec 2008 06:18:33 -0800 (PST) Received: from sd0109e.au.ibm.com (d23rh905.au.ibm.com [202.81.18.225]) by e23smtp06.au.ibm.com (8.13.1/8.13.1) with ESMTP id mB3EHQmb001592 for ; Thu, 4 Dec 2008 01:17:26 +1100 Received: from d23av04.au.ibm.com (d23av04.au.ibm.com [9.190.235.139]) by sd0109e.au.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id mB3EG2AM056866 for ; Thu, 4 Dec 2008 01:16:02 +1100 Received: from d23av04.au.ibm.com (loopback [127.0.0.1]) by d23av04.au.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id mB3EG18k014959 for ; Thu, 4 Dec 2008 01:16:01 +1100 Received: from linux.vnet.ibm.com ([9.124.158.38]) by d23av04.au.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id mB3EFvd6014921 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 4 Dec 2008 01:15:59 +1100 Date: Wed, 3 Dec 2008 19:45:55 +0530 From: Kamalesh Babulal To: Christoph Hellwig Cc: Stephen Rothwell , linux-next@vger.kernel.org, LKML , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: next-20081203 build failure, when building xfs_file.o Subject: Re: next-20081203 build failure, when building xfs_file.o Message-ID: <20081203141555.GB5400@linux.vnet.ibm.com> Reply-To: Kamalesh Babulal References: <20081203183602.c06f8c39.sfr@canb.auug.org.au> <20081203124104.GA5400@linux.vnet.ibm.com> <20081203125534.GA8007@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: <20081203125534.GA8007@infradead.org> User-Agent: Mutt/1.5.17 (2007-11-01) X-Barracuda-Connect: E23SMTP06.au.ibm.com[202.81.18.175] X-Barracuda-Start-Time: 1228313915 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.11820 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- * Christoph Hellwig [2008-12-03 07:55:34]: > On Wed, Dec 03, 2008 at 06:11:04PM +0530, Kamalesh Babulal wrote: > > Hi Stephen, > > > > next-20081203 kernel build fails on x86 with build failure > > > > In file included from fs/xfs/linux-2.6/xfs_file.c:39: > > This is the fix I submitted for it yesterday: > > -- > > fix compile on 32 bit systems > > The recent compat patches make xfs_file.c include xfs_ioctl32.h unconditional, > which breaks the build on 32 bit systems which don't have the various compat > defintions. > > Remove the include and move the defintion of xfs_file_compat_ioctl to > xfs_ioctl.h so that we can avoid including all the compat defintions in > xfs_file.c > Hi Chirstoph, Thanks, the patch fixes the build failure. Tested-by: Kamalesh Babulal > Signed-off-by: Christoph Hellwig > > Index: xfs-master/fs/xfs/linux-2.6/xfs_file.c > =================================================================== > --- xfs-master.orig/fs/xfs/linux-2.6/xfs_file.c 2008-12-02 11:43:38.000000000 +0100 > +++ xfs-master/fs/xfs/linux-2.6/xfs_file.c 2008-12-02 11:44:06.000000000 +0100 > @@ -36,9 +36,9 @@ > #include "xfs_inode.h" > #include "xfs_error.h" > #include "xfs_rw.h" > -#include "xfs_ioctl32.h" > #include "xfs_vnodeops.h" > #include "xfs_da_btree.h" > +#include "xfs_ioctl.h" > > #include > #include > Index: xfs-master/fs/xfs/linux-2.6/xfs_ioctl.h > =================================================================== > --- xfs-master.orig/fs/xfs/linux-2.6/xfs_ioctl.h 2008-12-02 11:44:10.000000000 +0100 > +++ xfs-master/fs/xfs/linux-2.6/xfs_ioctl.h 2008-12-02 11:44:52.000000000 +0100 > @@ -67,4 +67,16 @@ xfs_attrmulti_attr_remove( > char *name, > __uint32_t flags); > > +extern long > +xfs_file_compat_ioctl( > + struct file *file, > + unsigned int cmd, > + unsigned long arg); > + > +extern long > +xfs_file_compat_ioctl_invis( > + struct file *file, > + unsigned int cmd, > + unsigned long arg); > + > #endif > Index: xfs-master/fs/xfs/linux-2.6/xfs_ioctl32.h > =================================================================== > --- xfs-master.orig/fs/xfs/linux-2.6/xfs_ioctl32.h 2008-12-02 11:44:10.000000000 +0100 > +++ xfs-master/fs/xfs/linux-2.6/xfs_ioctl32.h 2008-12-02 11:44:18.000000000 +0100 > @@ -20,9 +20,6 @@ > > #include > > -extern long xfs_file_compat_ioctl(struct file *, unsigned, unsigned long); > -extern long xfs_file_compat_invis_ioctl(struct file *, unsigned, unsigned long); > - > /* > * on 32-bit arches, ioctl argument structures may have different sizes > * and/or alignment. We define compat structures which match the > -- > To unsubscribe from this list: send the line "unsubscribe linux-next" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Thanks & Regards, Kamalesh Babulal, Linux Technology Center, IBM, ISTL. From jpiszcz@lucidpixels.com Wed Dec 3 08:39:06 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_27 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 mB3Ed6Mg024868 for ; Wed, 3 Dec 2008 08:39:06 -0600 X-ASG-Debug-ID: 1228315144-0f1a01aa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B03611677989 for ; Wed, 3 Dec 2008 06:39:05 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id VOG3XDNfGTw86XhW for ; Wed, 03 Dec 2008 06:39:05 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 92FBA201DF1B4; Wed, 3 Dec 2008 09:34:04 -0500 (EST) Date: Wed, 3 Dec 2008 09:34:04 -0500 (EST) From: Justin Piszcz To: linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: 3ware 9650SE-16ML w/XFS & RAID6: first impressions Subject: 3ware 9650SE-16ML w/XFS & RAID6: first impressions Message-ID: User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1228315145 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.11822 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- For read speed, it appears that there is some overhead (2x). With software raid6 I used to get 1.0Gbyte/sec read speed, or at least 800MiB/s across the entire array, now I only get 538MiB/s across the entire array. However, write speed is improved. Before it was in the mid 400s for RAID6 and peaking at 502MiB/s at the outer edge of the drives. For the write speed now, its around 620-640MiB/s at the end of the array and 580-620MiB/s going in further and 502MiB/s across the entire array. I always heard all of the horror stories with 3ware cards, it turns out they're not so bad after all. Here is the STR across a RAID6 array of 10 velociraptors configured as RAID6 with storsave=perform and blockdev --setra 65536 and using the XFS filesystem. p34:/t# /usr/bin/time dd if=/dev/zero of=really_big_file bs=1M dd: writing `really_big_file': No space left on device 2288604+0 records in 2288603+0 records out 2399774998528 bytes (2.4 TB) copied, 4777.22 s, 502 MB/s Command exited with non-zero status 1 1.47user 3322.83system 1:19:37elapsed 69%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (1major+506minor)pagefaults 0swaps p34:/t# /usr/bin/time dd if=really_big_file of=/dev/null bs=1M 2288603+1 records in 2288603+1 records out 2399774998528 bytes (2.4 TB) copied, 4457.55 s, 538 MB/s 1.66user 1538.87system 1:14:17elapsed 34%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (4major+498minor)pagefaults 0swaps p34:/t# So what is the difference between protect, balance and perform? Protect p34:~# /opt/3ware/9500/tw_cli /c0/u1 set storsave=protect Setting Command Storsave Policy for unit /c0/u1 to [protect] ... Done. p34:/t# dd if=/dev/zero of=bigfile bs=1M count=20480 20480+0 records in 20480+0 records out 21474836480 bytes (21 GB) copied, 60.6041 s, 354 MB/s Balance: p34:~# /opt/3ware/9500/tw_cli /c0/u1 set storsave=balance Setting Command Storsave Policy for unit /c0/u1 to [balance] ... Done. # dd if=/dev/zero of=bigfile bs=1M count=20480 20480+0 records in 20480+0 records out 21474836480 bytes (21 GB) copied, 60.4287 s, 355 MB/s Perform p34:~# /opt/3ware/9500/tw_cli /c0/u1 set storsave=perform Warning: Unit /c0/u1 storsave policy is set to Performance which may cause data loss in the event of power failure. Do you want to continue ? Y|N [N]: Y Setting Command Storsave Policy for unit /c0/u1 to [perform] ... Done. p34:/t# dd if=/dev/zero of=bigfile bs=1M count=20480 20480+0 records in 20480+0 records out 21474836480 bytes (21 GB) copied, 34.4955 s, 623 MB/s -- And yes, I have a BBU attached to this card and everything is on a UPS. Something I do not like though is 3ware states "TwinStor" "TwinStor" etc etc if you read a file it will read from both drives, maybe it does this but I have the I/O results to prove it-- it never breaks the barrier of a single drive's STR. Whereas with SW RAID, you can read 2 or more files concurrently and you will get the bandwidth of both drives. I have a lot more testing to do, RAID0, RAID5, RAID6, RAID10, not sure when I will get to it but just thought I'd post this to show that 3ware cards aren't as slow as everyone says, at least not when attached to Velociraptors, a BBU and XFS as the filesystem. Justin. From SRS0+3fb1ed55175b69522a42+1928+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 3 11:13:32 2008 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 mB3HDV8n001792 for ; Wed, 3 Dec 2008 11:13:32 -0600 X-ASG-Debug-ID: 1228324410-220503a30000-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 BFD42167A6E5 for ; Wed, 3 Dec 2008 09:13:30 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id THmTdX8BlMCQazKy for ; Wed, 03 Dec 2008 09:13:30 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7vHY-0000xs-0z for xfs@oss.sgi.com; Wed, 03 Dec 2008 17:13:00 +0000 Date: Wed, 3 Dec 2008 12:13:00 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 00/22] 2.6.29 queue Subject: Re: [patch 00/22] 2.6.29 queue Message-ID: <20081203171300.GA17773@infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160430.775774000@bombadil.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: 1228324410 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Tue, Dec 02, 2008 at 11:04:30AM -0500, Christoph Hellwig wrote: > This is my current 2.6.29 queue. All but a few trivial patches have already > been posted to the list. I have another two patches for 2.6.29 in progress > that aren't included but should go to the list in a few days. > > Note that this is a series against the master tree, patches against dmapi or > xfsidbg aren't included (and not relevant for 2.6.29). The 20 patches that have been reviewed are now available in a git repository: http://git.kernel.org/?p=linux/kernel/git/hch/xfs.git git://git.kernel.org/pub/scm/linux/kernel/git/hch/xfs.git This includes all the small fixups suggested by Dave, and all the reviewed-by tags. From SRS0+3fb1ed55175b69522a42+1928+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 3 11:46:00 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.1 required=5.0 tests=AWL,BAYES_00,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 mB3Hk0JR007656 for ; Wed, 3 Dec 2008 11:46:00 -0600 X-ASG-Debug-ID: 1228326358-4f5600cf0000-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 BBE54167AF80 for ; Wed, 3 Dec 2008 09:45:58 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 1HolTT7meIFcIutd for ; Wed, 03 Dec 2008 09:45:58 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7vmx-0001DA-UQ; Wed, 03 Dec 2008 17:45:27 +0000 Date: Wed, 3 Dec 2008 12:45:27 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: viro@ZenIV.linux.org.uk, linux-fsdevel@vger.kernel.org X-ASG-Orig-Subj: [PATCH] add a FMODE flag to make XFS invisible I/O less hacky Subject: [PATCH] add a FMODE flag to make XFS invisible I/O less hacky Message-ID: <20081203174527.GA16187@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: 1228326359 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com XFS has a mode called invisble I/O that doesn't update any of the timestamps. It's used for HSM-style applications and exposed through the nasty open by handle ioctl. Instead of doing directly assignment of file operations that set an internal flag for it add a new FMODE_NOCMTIME flag that we can check in the normal file operations. Note that I'd like to get this into 2.6.29 via the XFS tree as there are a lot changes in XFS that would cause conflicts otherwise. For 2.6.30 I'll plan turning it into a proper O_ flag available via open(2), but for now I just want to sort out the XFS issues. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_ioctl32.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_ioctl32.c 2008-12-03 18:30:14.000000000 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_ioctl32.c 2008-12-03 18:30:34.000000000 +0100 @@ -599,19 +599,24 @@ out: return error; } -STATIC long -xfs_compat_ioctl( - xfs_inode_t *ip, - struct file *filp, - int ioflags, - unsigned cmd, - void __user *arg) +long +xfs_file_compat_ioctl( + struct file *filp, + unsigned cmd, + unsigned long p) { - struct inode *inode = filp->f_path.dentry->d_inode; - xfs_mount_t *mp = ip->i_mount; - int error; + struct inode *inode = filp->f_path.dentry->d_inode; + struct xfs_inode *ip = XFS_I(inode); + struct xfs_mount *mp = ip->i_mount; + void __user *arg = (void __user *)p; + int ioflags = 0; + int error; + + if (filp->f_mode & FMODE_NOCMTIME) + ioflags |= IO_INVIS; + + xfs_itrace_entry(ip); - xfs_itrace_entry(XFS_I(inode)); switch (cmd) { /* No size or alignment issues on any arch */ case XFS_IOC_DIOINFO: @@ -632,7 +637,7 @@ xfs_compat_ioctl( case XFS_IOC_GOINGDOWN: case XFS_IOC_ERROR_INJECTION: case XFS_IOC_ERROR_CLEARALL: - return xfs_ioctl(ip, filp, ioflags, cmd, arg); + return xfs_file_ioctl(filp, cmd, p); #ifndef BROKEN_X86_ALIGNMENT /* These are handled fine if no alignment issues */ case XFS_IOC_ALLOCSP: @@ -646,7 +651,7 @@ xfs_compat_ioctl( case XFS_IOC_FSGEOMETRY_V1: case XFS_IOC_FSGROWFSDATA: case XFS_IOC_FSGROWFSRT: - return xfs_ioctl(ip, filp, ioflags, cmd, arg); + return xfs_file_ioctl(filp, cmd, p); #else case XFS_IOC_ALLOCSP_32: case XFS_IOC_FREESP_32: @@ -687,7 +692,7 @@ xfs_compat_ioctl( case XFS_IOC_SETXFLAGS_32: case XFS_IOC_GETVERSION_32: cmd = _NATIVE_IOC(cmd, long); - return xfs_ioctl(ip, filp, ioflags, cmd, arg); + return xfs_file_ioctl(filp, cmd, p); case XFS_IOC_SWAPEXT: { struct xfs_swapext sxp; struct compat_xfs_swapext __user *sxu = arg; @@ -738,26 +743,3 @@ xfs_compat_ioctl( return -XFS_ERROR(ENOIOCTLCMD); } } - -long -xfs_file_compat_ioctl( - struct file *filp, - unsigned int cmd, - unsigned long p) -{ - struct inode *inode = filp->f_path.dentry->d_inode; - - return xfs_compat_ioctl(XFS_I(inode), filp, 0, cmd, (void __user *)p); -} - -long -xfs_file_compat_invis_ioctl( - struct file *filp, - unsigned int cmd, - unsigned long p) -{ - struct inode *inode = filp->f_path.dentry->d_inode; - - return xfs_compat_ioctl(XFS_I(inode), filp, IO_INVIS, cmd, - (void __user *)p); -} Index: xfs/fs/xfs/linux-2.6/xfs_file.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_file.c 2008-12-03 18:30:14.000000000 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_file.c 2008-12-03 18:30:34.000000000 +0100 @@ -45,81 +45,45 @@ static struct vm_operations_struct xfs_file_vm_ops; -STATIC_INLINE ssize_t -__xfs_file_read( +STATIC ssize_t +xfs_file_aio_read( struct kiocb *iocb, const struct iovec *iov, unsigned long nr_segs, - int ioflags, loff_t pos) { struct file *file = iocb->ki_filp; + int ioflags = IO_ISAIO; BUG_ON(iocb->ki_pos != pos); if (unlikely(file->f_flags & O_DIRECT)) ioflags |= IO_ISDIRECT; + if (file->f_mode & FMODE_NOCMTIME) + ioflags |= IO_INVIS; return xfs_read(XFS_I(file->f_path.dentry->d_inode), iocb, iov, nr_segs, &iocb->ki_pos, ioflags); } STATIC ssize_t -xfs_file_aio_read( - struct kiocb *iocb, - const struct iovec *iov, - unsigned long nr_segs, - loff_t pos) -{ - return __xfs_file_read(iocb, iov, nr_segs, IO_ISAIO, pos); -} - -STATIC ssize_t -xfs_file_aio_read_invis( - struct kiocb *iocb, - const struct iovec *iov, - unsigned long nr_segs, - loff_t pos) -{ - return __xfs_file_read(iocb, iov, nr_segs, IO_ISAIO|IO_INVIS, pos); -} - -STATIC_INLINE ssize_t -__xfs_file_write( +xfs_file_aio_write( struct kiocb *iocb, const struct iovec *iov, unsigned long nr_segs, - int ioflags, loff_t pos) { - struct file *file = iocb->ki_filp; + struct file *file = iocb->ki_filp; + int ioflags = IO_ISAIO; BUG_ON(iocb->ki_pos != pos); if (unlikely(file->f_flags & O_DIRECT)) ioflags |= IO_ISDIRECT; + if (file->f_mode & FMODE_NOCMTIME) + ioflags |= IO_INVIS; return xfs_write(XFS_I(file->f_mapping->host), iocb, iov, nr_segs, &iocb->ki_pos, ioflags); } STATIC ssize_t -xfs_file_aio_write( - struct kiocb *iocb, - const struct iovec *iov, - unsigned long nr_segs, - loff_t pos) -{ - return __xfs_file_write(iocb, iov, nr_segs, IO_ISAIO, pos); -} - -STATIC ssize_t -xfs_file_aio_write_invis( - struct kiocb *iocb, - const struct iovec *iov, - unsigned long nr_segs, - loff_t pos) -{ - return __xfs_file_write(iocb, iov, nr_segs, IO_ISAIO|IO_INVIS, pos); -} - -STATIC ssize_t xfs_file_splice_read( struct file *infilp, loff_t *ppos, @@ -127,20 +91,13 @@ xfs_file_splice_read( size_t len, unsigned int flags) { - return xfs_splice_read(XFS_I(infilp->f_path.dentry->d_inode), - infilp, ppos, pipe, len, flags, 0); -} + int ioflags = 0; + + if (infilp->f_mode & FMODE_NOCMTIME) + ioflags |= IO_INVIS; -STATIC ssize_t -xfs_file_splice_read_invis( - struct file *infilp, - loff_t *ppos, - struct pipe_inode_info *pipe, - size_t len, - unsigned int flags) -{ return xfs_splice_read(XFS_I(infilp->f_path.dentry->d_inode), - infilp, ppos, pipe, len, flags, IO_INVIS); + infilp, ppos, pipe, len, flags, ioflags); } STATIC ssize_t @@ -151,20 +108,13 @@ xfs_file_splice_write( size_t len, unsigned int flags) { - return xfs_splice_write(XFS_I(outfilp->f_path.dentry->d_inode), - pipe, outfilp, ppos, len, flags, 0); -} + int ioflags = 0; + + if (outfilp->f_mode & FMODE_NOCMTIME) + ioflags |= IO_INVIS; -STATIC ssize_t -xfs_file_splice_write_invis( - struct pipe_inode_info *pipe, - struct file *outfilp, - loff_t *ppos, - size_t len, - unsigned int flags) -{ return xfs_splice_write(XFS_I(outfilp->f_path.dentry->d_inode), - pipe, outfilp, ppos, len, flags, IO_INVIS); + pipe, outfilp, ppos, len, flags, ioflags); } STATIC int @@ -275,42 +225,6 @@ xfs_file_mmap( return 0; } -STATIC long -xfs_file_ioctl( - struct file *filp, - unsigned int cmd, - unsigned long p) -{ - struct inode *inode = filp->f_path.dentry->d_inode; - - - /* NOTE: some of the ioctl's return positive #'s as a - * byte count indicating success, such as - * readlink_by_handle. So we don't "sign flip" - * like most other routines. This means true - * errors need to be returned as a negative value. - */ - return xfs_ioctl(XFS_I(inode), filp, 0, cmd, (void __user *)p); -} - -STATIC long -xfs_file_ioctl_invis( - struct file *filp, - unsigned int cmd, - unsigned long p) -{ - struct inode *inode = filp->f_path.dentry->d_inode; - - - /* NOTE: some of the ioctl's return positive #'s as a - * byte count indicating success, such as - * readlink_by_handle. So we don't "sign flip" - * like most other routines. This means true - * errors need to be returned as a negative value. - */ - return xfs_ioctl(XFS_I(inode), filp, IO_INVIS, cmd, (void __user *)p); -} - /* * mmap()d file has taken write protection fault and is being made * writable. We can set the page state up correctly for a writable @@ -346,25 +260,6 @@ const struct file_operations xfs_file_op #endif }; -const struct file_operations xfs_invis_file_operations = { - .llseek = generic_file_llseek, - .read = do_sync_read, - .write = do_sync_write, - .aio_read = xfs_file_aio_read_invis, - .aio_write = xfs_file_aio_write_invis, - .splice_read = xfs_file_splice_read_invis, - .splice_write = xfs_file_splice_write_invis, - .unlocked_ioctl = xfs_file_ioctl_invis, -#ifdef CONFIG_COMPAT - .compat_ioctl = xfs_file_compat_invis_ioctl, -#endif - .mmap = xfs_file_mmap, - .open = xfs_file_open, - .release = xfs_file_release, - .fsync = xfs_file_fsync, -}; - - const struct file_operations xfs_dir_file_operations = { .open = xfs_dir_open, .read = generic_read_dir, Index: xfs/fs/xfs/linux-2.6/xfs_ioctl.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_ioctl.c 2008-12-03 18:30:14.000000000 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_ioctl.c 2008-12-03 18:30:34.000000000 +0100 @@ -319,10 +319,11 @@ xfs_open_by_handle( put_unused_fd(new_fd); return -XFS_ERROR(-PTR_ERR(filp)); } + if (inode->i_mode & S_IFREG) { /* invisible operation should not change atime */ filp->f_flags |= O_NOATIME; - filp->f_op = &xfs_invis_file_operations; + filp->f_mode |= FMODE_NOCMTIME; } fd_install(new_fd, filp); @@ -1328,21 +1329,31 @@ xfs_ioc_getbmapx( return 0; } -int -xfs_ioctl( - xfs_inode_t *ip, +/* + * Note: some of the ioctl's return positive numbers as a + * byte count indicating success, such as readlink_by_handle. + * So we don't "sign flip" like most other routines. This means + * true errors need to be returned as a negative value. + */ +long +xfs_file_ioctl( struct file *filp, - int ioflags, unsigned int cmd, - void __user *arg) + unsigned long p) { struct inode *inode = filp->f_path.dentry->d_inode; - xfs_mount_t *mp = ip->i_mount; + struct xfs_inode *ip = XFS_I(inode); + struct xfs_mount *mp = ip->i_mount; + void __user *arg = (void __user *)p; + int ioflags = 0; int error; - xfs_itrace_entry(XFS_I(inode)); - switch (cmd) { + if (filp->f_mode & FMODE_NOCMTIME) + ioflags |= IO_INVIS; + xfs_itrace_entry(ip); + + switch (cmd) { case XFS_IOC_ALLOCSP: case XFS_IOC_FREESP: case XFS_IOC_RESVSP: Index: xfs/fs/xfs/linux-2.6/xfs_iops.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_iops.h 2008-12-03 18:30:14.000000000 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_iops.h 2008-12-03 18:30:34.000000000 +0100 @@ -22,7 +22,6 @@ struct xfs_inode; extern const struct file_operations xfs_file_operations; extern const struct file_operations xfs_dir_file_operations; -extern const struct file_operations xfs_invis_file_operations; extern ssize_t xfs_vn_listxattr(struct dentry *, char *data, size_t size); Index: xfs/include/linux/fs.h =================================================================== --- xfs.orig/include/linux/fs.h 2008-12-03 18:30:14.000000000 +0100 +++ xfs/include/linux/fs.h 2008-12-03 18:31:58.000000000 +0100 @@ -81,6 +81,14 @@ extern int dir_notify_enable; #define FMODE_WRITE_IOCTL ((__force fmode_t)128) #define FMODE_NDELAY_NOW ((__force fmode_t)256) +/* + * Don't update ctime and mtime. + * + * Currently a special hack for the XFS open_by_handle ioctl, but we'll + * hopefully graduate it to a proper O_CMTIME flag supported by open(2) soon. + */ +#define FMODE_NOCMTIME ((__force fmode_t)2048) + #define RW_MASK 1 #define RWA_MASK 2 #define READ 0 Index: xfs/fs/xfs/linux-2.6/xfs_ioctl.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_ioctl.h 2008-12-03 18:30:14.000000000 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_ioctl.h 2008-12-03 18:30:34.000000000 +0100 @@ -68,13 +68,13 @@ xfs_attrmulti_attr_remove( __uint32_t flags); extern long -xfs_file_compat_ioctl( - struct file *file, +xfs_file_ioctl( + struct file *filp, unsigned int cmd, - unsigned long arg); + unsigned long p); extern long -xfs_file_compat_ioctl_invis( +xfs_file_compat_ioctl( struct file *file, unsigned int cmd, unsigned long arg); Index: xfs/fs/xfs/xfs_vnodeops.h =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.h 2008-12-03 18:30:14.000000000 +0100 +++ xfs/fs/xfs/xfs_vnodeops.h 2008-12-03 18:30:34.000000000 +0100 @@ -53,8 +53,6 @@ int xfs_attr_set(struct xfs_inode *dp, c int xfs_attr_remove(struct xfs_inode *dp, const char *name, int flags); int xfs_attr_list(struct xfs_inode *dp, char *buffer, int bufsize, int flags, struct attrlist_cursor_kern *cursor); -int xfs_ioctl(struct xfs_inode *ip, struct file *filp, - int ioflags, unsigned int cmd, void __user *arg); ssize_t xfs_read(struct xfs_inode *ip, struct kiocb *iocb, const struct iovec *iovp, unsigned int segs, loff_t *offset, int ioflags); From david@fromorbit.com Wed Dec 3 15:36:12 2008 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 mB3La9Rf020579 for ; Wed, 3 Dec 2008 15:36:12 -0600 X-ASG-Debug-ID: 1228340165-175a00aa0000-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 1F624164C267 for ; Wed, 3 Dec 2008 13:36:05 -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 DHTDBWqNHFJcRm3K for ; Wed, 03 Dec 2008 13:36:05 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAK6INkl5LJfT/2dsb2JhbADSZ4J/ X-IronPort-AV: E=Sophos;i="4.33,710,1220193000"; d="scan'208";a="268848503" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 04 Dec 2008 08:00:30 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7zIi-0007rb-V6; Thu, 04 Dec 2008 08:30:28 +1100 Date: Thu, 4 Dec 2008 08:30:28 +1100 From: Dave Chinner To: Arkadiusz Miskiewicz Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Subject: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Message-ID: <20081203213028.GW18236@disturbed> Mail-Followup-To: Arkadiusz Miskiewicz , xfs@oss.sgi.com References: <200812021949.55463.arekm@maven.pl> <20081203032013.GS18236@disturbed> <200812031406.41882.arekm@maven.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200812031406.41882.arekm@maven.pl> 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: 1228340169 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0208 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.11850 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Dec 03, 2008 at 02:06:41PM +0100, Arkadiusz Miskiewicz wrote: > On Wednesday 03 of December 2008, Dave Chinner wrote: > > On Tue, Dec 02, 2008 at 07:49:55PM +0100, Arkadiusz Miskiewicz wrote: > > > Hello, > > > > > > I'm trying to use xfs project quota on kernel 2.6.27.7 (vanilla, no > > > additional patches), x86_64 UP machine (SMP kernel). > > > > > > Now some processes that are using /home/users/arekm/rpm are hanging in > > > D-state like: ..... > [arekm@farm ~]$ zgrep LOCKDEP /proc/config.gz > CONFIG_LOCKDEP_SUPPORT=y > CONFIG_LOCKDEP=y > # CONFIG_DEBUG_LOCKDEP is not set > > I don't see anything strictly lockdep related in dmesg so it doesn't seem to > be triggered. Which implies there is something with a lock held that is blocked elsewhere... > D-state lock is also happening if I drop usrquota,prjquota, reboot and retry > the test. I assume something was written on disk that triggers the problem. Unlikely - locking doesn't generally get stuck due to on disk corruption. Are there any other blocked processes in the machine? i.e. what is the entire output of 'echo w > /proc/sysrq-trigger'? Are there any other signs of general unwellness (e.g. a CPU running at 100% when it shouldn't be)? > Note that now I'm testing on a second machine (UP i686, SMP kernel), so this > isn't unique problem. Can you identify the inode that the unlinkis hanging on and get an xfs_db dump of the contents of that inode? Also a dump of the parent directory inode would be useful, too. FWIW, if you are seeing this on two hosts, can you try to build a reproducable test case using a minimal data set and a simple set of commands? If you can do this and supply us with a xfs_metadump image of the filesystem plus the commands to reproduce the problem we'll be able to find the problem pretty quickly.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Dec 3 15:39:54 2008 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 mB3LdsXQ020867 for ; Wed, 3 Dec 2008 15:39:54 -0600 X-ASG-Debug-ID: 1228340391-2e3f00290000-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 691DE16876EE for ; Wed, 3 Dec 2008 13:39:52 -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 fIFGJ7iCBJB5KH7s for ; Wed, 03 Dec 2008 13:39:52 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAK6INkl5LJfT/2dsb2JhbADSZ4J/ X-IronPort-AV: E=Sophos;i="4.33,710,1220193000"; d="scan'208";a="268853109" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 04 Dec 2008 08:09:51 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7zRm-00083d-4I; Thu, 04 Dec 2008 08:39:50 +1100 Date: Thu, 4 Dec 2008 08:39:50 +1100 From: Dave Chinner To: Christoph Hellwig Cc: Lachlan McIlroy , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Assertion failed: atomic_read(&mp->m_active_trans) Subject: Re: Assertion failed: atomic_read(&mp->m_active_trans) Message-ID: <20081203213950.GX18236@disturbed> Mail-Followup-To: Christoph Hellwig , Lachlan McIlroy , xfs@oss.sgi.com References: <492BB095.1000104@sgi.com> <4934AAA9.5090405@sgi.com> <20081203104849.GF15485@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081203104849.GF15485@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: 1228340393 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.11850 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Dec 03, 2008 at 05:48:49AM -0500, Christoph Hellwig wrote: > I'd rather fix it properly. Sure, but in the mean time, I'd suggest changing it to a WARN_ON() rather than an ASSERT(). That way we'll continue to have ppl bug us about it until the VFS can support read-only remounts without racing correctly. Has that work been dropped on the floor, Christoph? We've been holding off removing this ASSERT or adding the hack I did to work around the common case of the assert triggering based on the fact that the problem in the VFS would be fixed in the next release. That was the case each release since 2.6.25 and there doesn't seem to be much progress... > Do you guys have a somewhat reliable > testcase hitting it? I used to have one of the xfsqa tests hit it every so often, but not what you'd call reliably.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From arekm@maven.pl Wed Dec 3 15:48:04 2008 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 mB3Lm4xE021694 for ; Wed, 3 Dec 2008 15:48:04 -0600 X-ASG-Debug-ID: 1228340882-1757010f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from main.carme.maven.pl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 61A5A16879EA for ; Wed, 3 Dec 2008 13:48:02 -0800 (PST) Received: from main.carme.maven.pl (main.carme.maven.pl [193.239.45.138]) by cuda.sgi.com with ESMTP id 68343KExoGsKaFpH for ; Wed, 03 Dec 2008 13:48:02 -0800 (PST) Received: from chello089076027073.chello.pl ([89.76.27.73]:3681 helo=maven.pl) by main.carme.maven.pl with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.69) (envelope-from ) id 1L7zUq-000OVZ-L1; Wed, 03 Dec 2008 22:43:00 +0100 Received: from arekm by maven.pl with local (Exim 4.69) (envelope-from ) id 1L7zUL-0002rK-Gv; Wed, 03 Dec 2008 22:42:30 +0100 From: Arkadiusz Miskiewicz To: Dave Chinner X-ASG-Orig-Subj: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Subject: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Date: Wed, 3 Dec 2008 22:42:29 +0100 User-Agent: PLD Linux KMail/1.9.10 Cc: xfs@oss.sgi.com References: <200812021949.55463.arekm@maven.pl> <200812031406.41882.arekm@maven.pl> <20081203213028.GW18236@disturbed> In-Reply-To: <20081203213028.GW18236@disturbed> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Message-Id: <200812032242.29326.arekm@maven.pl> X-Barracuda-Connect: main.carme.maven.pl[193.239.45.138] X-Barracuda-Start-Time: 1228340883 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.11850 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id mB3Lm4xE021694 On Wednesday 03 of December 2008, Dave Chinner wrote: > > D-state lock is also happening if I drop usrquota,prjquota, reboot and > > retry the test. I assume something was written on disk that triggers the > > problem. > > Unlikely - locking doesn't generally get stuck due to on disk > corruption. Are there any other blocked processes in the machine? > i.e. what is the entire output of 'echo w > /proc/sysrq-trigger'? Only this one program trace visible in sysrq-w output. No other traces - so no other blocked programs. > Are there any other signs of general unwellness (e.g. a CPU running > at 100% when it shouldn't be)? Nothing wrong. > FWIW, if you are seeing this on two hosts, can you try to build > a reproducable test case using a minimal data set and a simple > set of commands? If you can do this and supply us with a > xfs_metadump image of the filesystem plus the commands to reproduce > the problem we'll be able to find the problem pretty quickly.... I was able to reproduce it with: - mount fs with usrquota,prjquota - setup /home/users/arekm/rpm as project quota id = 10 - run program below twice [arekm@farm rpm]$ more a.c #include int main() { int i; i = rename("/home/users/arekm/tmp/aa", "/home/users/arekm/rpm/testing"); printf("ret=%d %m\n", i); return 0; } [arekm@farm rpm]$ touch /home/users/arekm/tmp/aa [arekm@farm rpm]$ ./a.out ret=-1 Invalid cross-device link [arekm@farm rpm]$ ./a.out second run hangs with D-state. For clarification, rpm and tmp directories are on the same filesystem/partition (hda2), rpm/ dir belongs to project quota id=10, tmp doesn't belong to any project quota. For the rest of your questions - Christoph promised to look at the issue today, so I'll wait until tomorrow and if the issue will still be a mystery then I'll dig out all data you asked for. > Cheers, > > Dave. -- Arkadiusz MiÅ›kiewicz PLD/Linux Team arekm / maven.pl http://ftp.pld-linux.org/ From david@fromorbit.com Wed Dec 3 15:53:16 2008 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 mB3LrF62021964 for ; Wed, 3 Dec 2008 15:53:15 -0600 X-ASG-Debug-ID: 1228341192-1273015c0000-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 15AE81686C0F for ; Wed, 3 Dec 2008 13:53:13 -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 7wABagGIrkJ51Abv for ; Wed, 03 Dec 2008 13:53:13 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEADiMNkl5LJfT/2dsb2JhbADSUIMB X-IronPort-AV: E=Sophos;i="4.33,710,1220193000"; d="scan'208";a="268859128" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 04 Dec 2008 08:18:11 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7zZp-0008FH-TD; Thu, 04 Dec 2008 08:48:09 +1100 Date: Thu, 4 Dec 2008 08:48:09 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 20/22] move vn_iowait / vn_iowake into xfs_aops.c Subject: Re: [patch 20/22] move vn_iowait / vn_iowake into xfs_aops.c Message-ID: <20081203214809.GY18236@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20081202160430.775774000@bombadil.infradead.org> <20081202160652.542003000@bombadil.infradead.org> <20081203031719.GQ18236@disturbed> <20081203105831.GB19287@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081203105831.GB19287@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: 1228341194 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.11851 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Dec 03, 2008 at 05:58:31AM -0500, Christoph Hellwig wrote: > On Wed, Dec 03, 2008 at 02:17:19PM +1100, Dave Chinner wrote: > > On Tue, Dec 02, 2008 at 11:04:50AM -0500, Christoph Hellwig wrote: > > > The whole machinery to wait on I/O completion is related to the I/O path > > > and should be there instead of in xfs_vnode.c. Also give the functions > > > more descriptive names. > > > > I'm not sure that "xfs_ioend_..." is the best name - it looks > > slightly weird in some of the callers' contexts. Just dropping the > > "end" out of the names makes the code read much better (i.e. > > xfs_io_wait() and xfs_io_wake()). Not particularly important, > > though, and everything else looks good. > > xfs_ioend_* wasn't my first choice either. I first did > xfs_iowait/xfs_iowake, but that clashes with the buffercache. Ah, so it does. but: #define xfs_iowait(bp) xfs_buf_iowait(bp) Perhaps we should kill that define and just use xfs_buf_iowait(bp) because it documents that we really are waiting on a specific object.... Then maybe we can use xfs_data_iowake/xfs_data_iowait for the data I/O on an inode to complete. That way it's obvious from the code exactly what we are waiting on, too (which might make some of the comments redundant). Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Dec 3 15:54:18 2008 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 mB3LsIEQ022065 for ; Wed, 3 Dec 2008 15:54:18 -0600 X-ASG-Debug-ID: 1228341256-1737014b0000-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 1CE0916871B3 for ; Wed, 3 Dec 2008 13:54: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 8iQ99jn0TbgUsuyD for ; Wed, 03 Dec 2008 13:54:16 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEADiMNkl5LJfT/2dsb2JhbADSUIMB X-IronPort-AV: E=Sophos;i="4.33,710,1220193000"; d="scan'208";a="268863165" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 04 Dec 2008 08:24:15 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7zfi-0008Oq-Dk; Thu, 04 Dec 2008 08:54:14 +1100 Date: Thu, 4 Dec 2008 08:54:14 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 15/22] replace b_fspriv with b_mount Subject: Re: [patch 15/22] replace b_fspriv with b_mount Message-ID: <20081203215414.GZ18236@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20081202160430.775774000@bombadil.infradead.org> <20081202160651.749289000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081202160651.749289000@bombadil.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: 1228341258 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.11851 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 02, 2008 at 11:04:45AM -0500, Christoph Hellwig wrote: > Replace the b_fspriv pointer and it's ugly accessors with a properly types > xfs_mount pointer. Also switch log reocvery over to it instead of using > b_fspriv for the mount pointer. > > > Signed-off-by: Christoph Hellwig Sorry Christoph, I missed this one. Looks good, though. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From SRS0+3fb1ed55175b69522a42+1928+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 3 16:12:33 2008 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 mB3MCVgC023171 for ; Wed, 3 Dec 2008 16:12:33 -0600 X-ASG-Debug-ID: 1228342351-175901c10000-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 469921687758 for ; Wed, 3 Dec 2008 14:12:31 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id GNVFBOfm9aWZLiGQ for ; Wed, 03 Dec 2008 14:12:31 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L7zsS-0005Yi-TL; Wed, 03 Dec 2008 22:07:24 +0000 Date: Wed, 3 Dec 2008 17:07:24 -0500 From: Christoph Hellwig To: Arkadiusz Miskiewicz Cc: Dave Chinner , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Subject: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Message-ID: <20081203220724.GA13974@infradead.org> References: <200812021949.55463.arekm@maven.pl> <200812031406.41882.arekm@maven.pl> <20081203213028.GW18236@disturbed> <200812032242.29326.arekm@maven.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=unknown-8bit Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <200812032242.29326.arekm@maven.pl> 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: 1228342351 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Wed, Dec 03, 2008 at 10:42:29PM +0100, Arkadiusz Miskiewicz wrote: > [arekm@farm rpm]$ touch /home/users/arekm/tmp/aa > [arekm@farm rpm]$ ./a.out > ret=-1 Invalid cross-device link That is btw, intentionåand expected. To make the hierachial quotas work renames between different projects or from/to no project at all are not allowed. > [arekm@farm rpm]$ ./a.out > > second run hangs with D-state. > > For clarification, rpm and tmp directories are on the same > filesystem/partition (hda2), rpm/ dir belongs to project quota id=10, tmp > doesn't belong to any project quota. > > For the rest of your questions - Christoph promised to look at the issue > today, so I'll wait until tomorrow and if the issue will still be a mystery > then I'll dig out all data you asked for. I tried to run your testcase, adopted to local paths and I can run it a couple hundred times. Then I get a hard lockup of my KVM virtual machine.. From SRS0+3fb1ed55175b69522a42+1928+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 3 16:42:45 2008 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 mB3MgjLw024964 for ; Wed, 3 Dec 2008 16:42:45 -0600 X-ASG-Debug-ID: 1228344164-2e3f01b90000-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 6A11F16879B7 for ; Wed, 3 Dec 2008 14:42:44 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 3Fq3AdvubBPN0X1q for ; Wed, 03 Dec 2008 14:42:44 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L80Qe-00022F-1m; Wed, 03 Dec 2008 22:42:44 +0000 Date: Wed, 3 Dec 2008 17:42:44 -0500 From: Christoph Hellwig To: Arkadiusz Miskiewicz Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Subject: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Message-ID: <20081203224244.GA7777@infradead.org> References: <200812021949.55463.arekm@maven.pl> <200812031406.41882.arekm@maven.pl> <20081203213028.GW18236@disturbed> <200812032242.29326.arekm@maven.pl> <20081203220724.GA13974@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081203220724.GA13974@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: 1228344164 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com For reason I don't understand myself yet this patch from my queue fix it for me: Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_rename.c =================================================================== --- xfs.orig/fs/xfs/xfs_rename.c 2008-12-03 23:26:34.000000000 +0100 +++ xfs/fs/xfs/xfs_rename.c 2008-12-03 23:29:09.000000000 +0100 @@ -42,31 +42,6 @@ /* - * Given an array of up to 4 inode pointers, unlock the pointed to inodes. * If there are fewer than 4 entries in the array, the empty entries will - * be at the end and will have NULL pointers in them. - */ -STATIC void -xfs_rename_unlock4( - xfs_inode_t **i_tab, - uint lock_mode) -{ - int i; - - xfs_iunlock(i_tab[0], lock_mode); - for (i = 1; i < 4; i++) { - if (i_tab[i] == NULL) - break; - - /* - * Watch out for duplicate entries in the table. - */ - if (i_tab[i] != i_tab[i-1]) - xfs_iunlock(i_tab[i], lock_mode); - } -} - -/* * Enter all inodes for a rename transaction into a sorted array. */ STATIC void @@ -205,19 +180,6 @@ xfs_rename( xfs_lock_inodes(inodes, num_inodes, XFS_ILOCK_EXCL); /* - * If we are using project inheritance, we only allow renames - * into our tree when the project IDs are the same; else the - * tree quota mechanism would be circumvented. - */ - if (unlikely((target_dp->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) && - (target_dp->i_d.di_projid != src_ip->i_d.di_projid))) { - error = XFS_ERROR(EXDEV); - xfs_rename_unlock4(inodes, XFS_ILOCK_SHARED); - xfs_trans_cancel(tp, cancel_flags); - goto std_return; - } - - /* * Join all the inodes to the transaction. From this point on, * we can rely on either trans_commit or trans_cancel to unlock * them. Note that we need to add a vnode reference to the @@ -242,6 +204,17 @@ xfs_rename( } /* + * If we are using project inheritance, we only allow renames + * into our tree when the project IDs are the same; else the + * tree quota mechanism would be circumvented. + */ + if (unlikely((target_dp->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) && + (target_dp->i_d.di_projid != src_ip->i_d.di_projid))) { + error = XFS_ERROR(EXDEV); + goto error_return; + } + + /* * Set up the target. */ if (target_ip == NULL) { From david@fromorbit.com Wed Dec 3 17:11:07 2008 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 mB3NB7s1026758 for ; Wed, 3 Dec 2008 17:11:07 -0600 X-ASG-Debug-ID: 1228345864-173702e20000-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 7FDD91B93428 for ; Wed, 3 Dec 2008 15:11:05 -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 wtoV6oyraK5QFnYW for ; Wed, 03 Dec 2008 15:11:05 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEALePNkl5LJfT/2dsb2JhbADSWoMB X-IronPort-AV: E=Sophos;i="4.33,710,1220193000"; d="scan'208";a="268873911" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 04 Dec 2008 08:39:35 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L7zuY-0000H7-2f; Thu, 04 Dec 2008 09:09:34 +1100 Date: Thu, 4 Dec 2008 09:09:34 +1100 From: Dave Chinner To: Arkadiusz Miskiewicz Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Subject: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Message-ID: <20081203220934.GA32301@disturbed> Mail-Followup-To: Arkadiusz Miskiewicz , xfs@oss.sgi.com References: <200812021949.55463.arekm@maven.pl> <200812031406.41882.arekm@maven.pl> <20081203213028.GW18236@disturbed> <200812032242.29326.arekm@maven.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200812032242.29326.arekm@maven.pl> 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: 1228345866 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.11851 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Dec 03, 2008 at 10:42:29PM +0100, Arkadiusz Miskiewicz wrote: > On Wednesday 03 of December 2008, Dave Chinner wrote: > > > > D-state lock is also happening if I drop usrquota,prjquota, reboot and > > > retry the test. I assume something was written on disk that triggers the > > > problem. > > > > Unlikely - locking doesn't generally get stuck due to on disk > > corruption. Are there any other blocked processes in the machine? > > i.e. what is the entire output of 'echo w > /proc/sysrq-trigger'? > > Only this one program trace visible in sysrq-w output. No other traces - so no > other blocked programs. > > > Are there any other signs of general unwellness (e.g. a CPU running > > at 100% when it shouldn't be)? > > Nothing wrong. > > > FWIW, if you are seeing this on two hosts, can you try to build > > a reproducable test case using a minimal data set and a simple > > set of commands? If you can do this and supply us with a > > xfs_metadump image of the filesystem plus the commands to reproduce > > the problem we'll be able to find the problem pretty quickly.... > > I was able to reproduce it with: > > - mount fs with usrquota,prjquota > - setup /home/users/arekm/rpm as project quota id = 10 > - run program below twice > > [arekm@farm rpm]$ more a.c > #include > > int main() { > int i; > > i = > rename("/home/users/arekm/tmp/aa", "/home/users/arekm/rpm/testing"); > printf("ret=%d %m\n", i); > return 0; > } > [arekm@farm rpm]$ touch /home/users/arekm/tmp/aa > [arekm@farm rpm]$ ./a.out > ret=-1 Invalid cross-device link Well, that's what we needed to know. The bug: 199 /* 200 * Lock all the participating inodes. Depending upon whether 201 * the target_name exists in the target directory, and 202 * whether the target directory is the same as the source 203 * directory, we can lock from 2 to 4 inodes. 204 */ 205 >>>>> xfs_lock_inodes(inodes, num_inodes, XFS_ILOCK_EXCL); 206 207 /* 208 * If we are using project inheritance, we only allow renames 209 * into our tree when the project IDs are the same; else the 210 * tree quota mechanism would be circumvented. 211 */ 212 if (unlikely((target_dp->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) && 213 (target_dp->i_d.di_projid != src_ip->i_d.di_projid))) { 214 error = XFS_ERROR(EXDEV); 215 >>>>>>> xfs_rename_unlock4(inodes, XFS_ILOCK_SHARED); 216 xfs_trans_cancel(tp, cancel_flags); 217 goto std_return; 218 } Is that the unlock of the inodes is using the incorrect lock type for the unlock, (inodes lock XFS_ILOCK_EXCL, unlocked XFS_ILOCK_SHARED) which means they don't get unlocked and the next attempt to do anything with those inodes will hang. Compile-tested-only patch below that should fix the problem. Cheers, Dave. -- Dave Chinner david@fromorbit.com XFS: Fix hang after disallowed rename across directory quota domains When project quota is active and is being used for directory tree quota control, we disallow rename outside the current directory tree. This requires a check to be made after all the inodes involved in the rename are locked. We fail to unlock the inodes correctly if we disallow the rename when the target is outside the current directory tree. This results in a hang on the next access to the inodes involved in failed rename. Reported-by: Arkadiusz Miskiewicz Signed-off-by: Dave Chinner --- fs/xfs/xfs_rename.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/fs/xfs/xfs_rename.c b/fs/xfs/xfs_rename.c index d700dac..c903130 100644 --- a/fs/xfs/xfs_rename.c +++ b/fs/xfs/xfs_rename.c @@ -212,7 +212,7 @@ xfs_rename( if (unlikely((target_dp->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) && (target_dp->i_d.di_projid != src_ip->i_d.di_projid))) { error = XFS_ERROR(EXDEV); - xfs_rename_unlock4(inodes, XFS_ILOCK_SHARED); + xfs_rename_unlock4(inodes, XFS_ILOCK_EXCL); xfs_trans_cancel(tp, cancel_flags); goto std_return; } From xaiki@cxhome.ath.cx Wed Dec 3 18:00:21 2008 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 (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB400K8e001976 for ; Wed, 3 Dec 2008 18:00:21 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay3.corp.sgi.com (Postfix) with SMTP id C5371AC014; Wed, 3 Dec 2008 16:00:11 -0800 (PST) Received: from lagoh (cf-vpn-sw-corp-64-55.corp.sgi.com [134.15.64.55]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id KAA13845; Thu, 4 Dec 2008 10:59:51 +1100 From: Niv Sardi To: Christoph Hellwig Cc: Lachlan McIlroy , xfs@oss.sgi.com Subject: Re: New XFS git tree on oss.sgi.com In-Reply-To: <20081203130414.GB9681@infradead.org> (Christoph Hellwig's message of "Wed, 3 Dec 2008 08:04:14 -0500") References: <492BA7AD.5080007@sgi.com> <20081125140553.GA16553@infradead.org> <492CA245.3000709@sgi.com> <20081126032710.GA19523@infradead.org> <20081203130414.GB9681@infradead.org> User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.0.60 (i486-pc-linux-gnu) Date: Thu, 04 Dec 2008 10:58:48 +1100 Message-ID: <871vwo95fr.fsf@cxhome.ath.cx> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Christoph Hellwig writes: > On Wed, Dec 03, 2008 at 02:48:57PM +1100, Niv Sardi wrote: > >> > Also >> > http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/xfs.git;a=commitdiff;h=ca830fdf6231d0683f4ea4e9223e234c3a509063doesn't seem to be needed. None of those symbols seems to be used by >> > either dmapi or xfsidbg, the only two modules using xfs symbols in the >> > tree. >> >> That's exactly why it's there, the revertion is actually moving from >> what was in ptools to something sane. > > ?? The commit above adds tons of unused exports. But hey, I'll just > submit a patch to sort it out when I get some time.. Yes, I already did that …that's the previous commit… but Lachland wanted the tree not too move too much at first. The patch you want is the exact revert of the commit you pointed out, it'll be checked in soon. Cheers, -- Niv Sardi From billodo@sgi.com Wed Dec 3 18:14:11 2008 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 (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB40EB7s002753 for ; Wed, 3 Dec 2008 18:14:11 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6EE45AC011 for ; Wed, 3 Dec 2008 16:14:07 -0800 (PST) Received: from lnx-billodo.americas.sgi.com (lnx-billodo.americas.sgi.com [128.162.232.245]) by estes.americas.sgi.com (Postfix) with ESMTP id 1692270001C8; Wed, 3 Dec 2008 18:14:07 -0600 (CST) Received: by lnx-billodo.americas.sgi.com (Postfix, from userid 56393) id 1248717E01F; Wed, 3 Dec 2008 18:19:40 -0600 (CST) Date: Wed, 3 Dec 2008 18:19:40 -0600 From: "Bill O'Donnell" To: Christoph Hellwig Cc: xfs@sgi.com Subject: Re: [PATCH 0/9] CRC support for superblock, ag headers, log and btree blocks Message-ID: <20081204001940.GB2804@sgi.com> References: <20080925225613.GA9822@lst.de> <20081201231005.GA17631@sgi.com> <20081203104409.GA15485@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081203104409.GA15485@infradead.org> User-Agent: Mutt/1.5.16 (2007-06-09) On Wed, Dec 03, 2008 at 05:44:09AM -0500, Christoph Hellwig wrote: | On Mon, Dec 01, 2008 at 05:10:05PM -0600, Bill O'Donnell wrote: | > On Fri, Sep 26, 2008 at 12:56:13AM +0200, Christoph Hellwig wrote: | > | Here's an updated crc series for various metadata structures. We're still | > | looking at the magic number in the log recovery case because getting down | > | a buffer type for the other structures wasn't quite as easy as for the | > | btree block. I'll probably look into that again once we're done with all | > | data structures. | > | > Just to be clear, crc only applies to the metadata structures listed in the | > subject line, correct? It wasn't clear to me where you were with the "other | > structures". Maybe it would be more clear if you could provide a simple | > table listing the structures and whether or not crc applies (yet). | | The patchset sent applies to | | sb | agi | agf | btree_block | log buffer | | next patchset later this week will add the inode OK, thanks Christoph- I'll look for it later in the week. BTW, there seems to be some aliasing issue with xfs-oss list at least with my mailer. I dunno, but its converting xfs@oss.sgi.com into xfs@sgi.com. The upshot is that although you cc'd the list in your replies to my posts, those replies aren't getting posted. Cheers- Bill From xaiki@cxhome.ath.cx Wed Dec 3 19:04:52 2008 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 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 mB414qEl005716 for ; Wed, 3 Dec 2008 19:04:52 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id 80F2230406D; Wed, 3 Dec 2008 17:04:38 -0800 (PST) Received: from lagoh (cf-vpn-sw-corp-64-55.corp.sgi.com [134.15.64.55]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id MAA15586; Thu, 4 Dec 2008 12:04:28 +1100 From: Niv Sardi To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [patch 01/22] fix compile on 32 bit systems References: <20081202160430.775774000@bombadil.infradead.org> <20081202160649.658660000@bombadil.infradead.org> Date: Thu, 04 Dec 2008 12:03:22 +1100 In-Reply-To: <20081202160649.658660000@bombadil.infradead.org> (Christoph Hellwig's message of "Tue, 02 Dec 2008 11:04:31 -0500") Message-ID: <87vdu07nvp.fsf@cxhome.ath.cx> User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.0.60 (i486-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Christoph Hellwig writes: […] > +xfs_file_compat_ioctl_invis( ^^^^^^^^^^^ […] > -extern long xfs_file_compat_invis_ioctl(struct file *, unsigned, unsigned long); ^^^^^^^^^^^ Fixed it up, it's in QA now, Cheers, -- Niv Sardi From xaiki@oss.sgi.com Wed Dec 3 20:07:52 2008 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=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB427qdq009457 for ; Wed, 3 Dec 2008 20:07:52 -0600 Received: (from xaiki@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mB427lAY009428; Wed, 3 Dec 2008 20:07:47 -0600 Date: Wed, 3 Dec 2008 20:07:47 -0600 Message-Id: <200812040207.mB427lAY009428@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.28-rc3-1083-gddcd856 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: e5d412f17846b0aea9e5250926f994ab2e4e1006 X-Git-Newrev: ddcd856d81861a523d79d077facd875da1f66792 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated ddcd856 [XFS] fix compile on 32 bit systems from e5d412f17846b0aea9e5250926f994ab2e4e1006 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit ddcd856d81861a523d79d077facd875da1f66792 Author: Christoph Hellwig Date: Wed Dec 3 07:55:34 2008 -0500 [XFS] fix compile on 32 bit systems The recent compat patches make xfs_file.c include xfs_ioctl32.h unconditional, which breaks the build on 32 bit systems which don't have the various compat defintions. Remove the include and move the defintion of xfs_file_compat_ioctl to xfs_ioctl.h so that we can avoid including all the compat defintions in xfs_file.c Signed-off-by: Christoph Hellwig Tested-by: Kamalesh Babulal Signed-off-by: Lachlan McIlroy ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_file.c | 2 +- fs/xfs/linux-2.6/xfs_ioctl.h | 12 ++++++++++++ fs/xfs/linux-2.6/xfs_ioctl32.h | 3 --- 3 files changed, 13 insertions(+), 4 deletions(-) hooks/post-receive -- XFS development tree From xaiki@cxhome.ath.cx Wed Dec 3 20:25:30 2008 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 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 mB42PTuw010792 for ; Wed, 3 Dec 2008 20:25:30 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id 48A2530408E; Wed, 3 Dec 2008 18:25:24 -0800 (PST) Received: from lagoh (cf-vpn-sw-corp-64-55.corp.sgi.com [134.15.64.55]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id NAA16814; Thu, 4 Dec 2008 13:25:15 +1100 From: Niv Sardi To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [patch 12/22] kill dead inode flags References: <20081202160430.775774000@bombadil.infradead.org> <20081202160651.264876000@bombadil.infradead.org> Date: Thu, 04 Dec 2008 13:24:04 +1100 In-Reply-To: <20081202160651.264876000@bombadil.infradead.org> (Christoph Hellwig's message of "Tue, 02 Dec 2008 11:04:42 -0500") Message-ID: <87r64o7k57.fsf@cxhome.ath.cx> User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.0.60 (i486-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Christoph Hellwig writes: > There are a few inode flags around that aren't used anywhere, so remove > them. Also update xfsidbg to display all used inode flags correctly. Thanks for splitting things up, you have your idbg patch somewhere though ? should the reference to it be removed from the commit ? Cheers, -- Niv Sardi From xaiki@oss.sgi.com Wed Dec 3 22:40:25 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB44eP5F018327 for ; Wed, 3 Dec 2008 22:40:25 -0600 Received: (from xaiki@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mB44eCqI018201; Wed, 3 Dec 2008 22:40:12 -0600 Date: Wed, 3 Dec 2008 22:40:12 -0600 Message-Id: <200812040440.mB44eCqI018201@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.28-rc3-1102-g5a8d0f3 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: ddcd856d81861a523d79d077facd875da1f66792 X-Git-Newrev: 5a8d0f3c7af801c7263fbba39952504d6fc7ff60 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated 5a8d0f3 move inode tracing out of xfs_vnode. 25e41b3 move vn_iowait / vn_iowake into xfs_aops.c 583fa58 kill vn_ioerror f95099b kill xfs_unmount_flush e57481d no explicit xfs_iflush for special inodes during unmount 070c461 use xfs_trans_ijoin in xfs_trans_iget b56757b remove leftovers of shared read-only support e88f11a remove unused m_inode_quiesce member from struct xfs_mount 6bd16ff kill dead inode flags 5efcbb8 cleanup xfs_sb.h feature flag helpers df6771b kill dead quota flags 63ad2a5 remove dead code from sv_t implementation 39e2def reduce l_icloglock roundtrips d9424b3 stop using igrab in xfs_vn_link 5d765b9 kill xfs_buf_iostart 5cafdeb cleanup the inode reclaim path ccd0be6 remove unused prototypes for xfs_ihash_init / xfs_ihash_free 73e6335 remove unused behvavior cruft in xfs_super.h 2234d54 remove useless mnt_want_write call in xfs_write from ddcd856d81861a523d79d077facd875da1f66792 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 5a8d0f3c7af801c7263fbba39952504d6fc7ff60 Author: Christoph Hellwig Date: Wed Dec 3 12:20:40 2008 +0100 move inode tracing out of xfs_vnode. Move the inode tracing into xfs_iget.c / xfs_inode.h and kill xfs_vnode.c now that it's empty. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 25e41b3d521f52771354a718042a753a3e77df0a Author: Christoph Hellwig Date: Wed Dec 3 12:20:39 2008 +0100 move vn_iowait / vn_iowake into xfs_aops.c The whole machinery to wait on I/O completion is related to the I/O path and should be there instead of in xfs_vnode.c. Also give the functions more descriptive names. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 583fa586f0e4a8222dd091ce971b85c1364f3d92 Author: Christoph Hellwig Date: Wed Dec 3 12:20:38 2008 +0100 kill vn_ioerror There's just one caller of this helper, and it's much cleaner to just merge the xfs_do_force_shutdown call into it. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit f95099ba5ae06b96a9c17ef93cc655f686d79077 Author: Christoph Hellwig Date: Wed Dec 3 12:20:37 2008 +0100 kill xfs_unmount_flush There's almost nothing left in this function, instead remove the IRELE on the real times inodes and the call to XFS_QM_UNMOUNT into xfs_unmountfs. For the regular unmount case that means it now also happenes after dmapi notification, but otherwise there is no difference in behaviour. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit e57481dc269cd3773b22f53bfb869308780a7bf1 Author: Christoph Hellwig Date: Wed Dec 3 12:20:36 2008 +0100 no explicit xfs_iflush for special inodes during unmount Currently we explicitly call xfs_iflush on the quota, real-time and root inodes from xfs_unmount_flush. But we just called xfs_sync_inodes with SYNC_ATTR and do an XFS_bflush aka xfs_flush_buftarg to make sure all inodes are on disk already, so there is no need for these special cases. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 070c4616ec62fc207e2aeef9d0f28af294c651d0 Author: Christoph Hellwig Date: Wed Dec 3 12:20:35 2008 +0100 use xfs_trans_ijoin in xfs_trans_iget Use xfs_trans_ijoin in xfs_trans_iget in case we need to join an inode into a transaction instead of opencoding it. Based on a discussion with and an incomplete patch from Niv Sardi. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit b56757becf8bc62292263a24a23cf55edb4be55f Author: Christoph Hellwig Date: Wed Dec 3 12:20:34 2008 +0100 remove leftovers of shared read-only support We never supported shared read-only filesystems, so remove the dead code left over from IRIX for it. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit e88f11abe09d14718b82a991db118c5e485aa897 Author: Christoph Hellwig Date: Wed Dec 3 12:20:33 2008 +0100 remove unused m_inode_quiesce member from struct xfs_mount Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 6bd16ff27060819d16b3e7abe59b6644b349aea3 Author: Christoph Hellwig Date: Wed Dec 3 12:20:32 2008 +0100 kill dead inode flags There are a few inode flags around that aren't used anywhere, so remove them. Also update xfsidbg to display all used inode flags correctly. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 5efcbb853bc2f051d720a191268f8dd901fea9c2 Author: Christoph Hellwig Date: Wed Dec 3 12:20:31 2008 +0100 cleanup xfs_sb.h feature flag helpers The various inlines in xfs_sb.h that deal with the superblock version and fature flags were converted from macros a while ago, and this show by the odd coding style full of useless braces and backslashes and the avoidance of conditionals. Clean these up to look like normal C code. Signed-off-by: Christoph Hellwig Reviewed-by: Donald Douwsma Signed-off-by: Niv Sardi commit df6771bde14551eceeacf331666a92735e0773ac Author: Christoph Hellwig Date: Wed Dec 3 12:20:30 2008 +0100 kill dead quota flags Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 63ad2a5c4cf37e3242142eee8a8dcd4a8515302e Author: Christoph Hellwig Date: Wed Dec 3 12:20:29 2008 +0100 remove dead code from sv_t implementation Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 39e2defe73106ca2e1c85e5286038a0a13f49513 Author: Christoph Hellwig Date: Wed Dec 3 12:20:28 2008 +0100 reduce l_icloglock roundtrips All but one caller of xlog_state_want_sync drop and re-acquire l_icloglock around the call to it, just so that xlog_state_want_sync can acquire and drop it. Move all lock operation out of l_icloglock and assert that the lock is held when it is called. Note that it would make sense to extende this scheme to xlog_state_release_iclog, but the locking in there is more complicated and we'd like to keep the atomic_dec_and_lock optmization for those callers not having l_icloglock yet. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit d9424b3c4a1e96f87c6cfd4d8dd2f8d9bbb4dcc5 Author: Christoph Hellwig Date: Wed Dec 3 12:20:27 2008 +0100 stop using igrab in xfs_vn_link ->link is guranteed to get an already reference inode passed so we can do a simple increment of i_count instead of using igrab and thus avoid banging on the global inode_lock. This is what most filesystems already do. Also move the increment after the call to xfs_link to simplify error handling. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 5d765b976c3a41faf9a73718fb8cc5833990a8ef Author: Christoph Hellwig Date: Wed Dec 3 12:20:26 2008 +0100 kill xfs_buf_iostart xfs_buf_iostart is a "shared" helper for xfs_buf_read_flags, xfs_bawrite, and xfs_bdwrite - except that there isn't much shared code but rather special cases for each caller. So remove this function and move the functionality to the caller. xfs_bawrite and xfs_bdwrite are now big enough to be moved out of line and the xfs_buf_read_flags is moved into a new helper called _xfs_buf_read. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 5cafdeb2891a415a5dbf0ad80f0afedf8369e6bb Author: Christoph Hellwig Date: Wed Dec 3 12:20:25 2008 +0100 cleanup the inode reclaim path Merge xfs_iextract and xfs_idestroy into xfs_ireclaim as they are never called individually. Also rewrite most comments in this area as they were severly out of date. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit ccd0be6cfc6943c4e0b3e3cdb598e0b7354a2d78 Author: Christoph Hellwig Date: Wed Dec 3 12:20:24 2008 +0100 remove unused prototypes for xfs_ihash_init / xfs_ihash_free Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 73e6335c14209e508bec8ca7985d1fbde183bd1f Author: Christoph Hellwig Date: Wed Dec 3 12:20:23 2008 +0100 remove unused behvavior cruft in xfs_super.h Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 2234d54d3d855d6ffae88a24772a9389d6755e0c Author: Christoph Hellwig Date: Wed Dec 3 12:20:22 2008 +0100 remove useless mnt_want_write call in xfs_write When mnt_want_write was introduced a call to it was added around xfs_ichgtime, but there is no need for this because a file can't be open read/write on a r/o mount, and a mount can't degrade r/o while we still have files open for writing. As the mnt_want_write changes were never merged into the CVS tree this patch is for mainline only. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi ----------------------------------------------------------------------- Summary of changes: fs/xfs/Makefile | 2 - fs/xfs/linux-2.6/sv.h | 22 +---- fs/xfs/linux-2.6/xfs_aops.c | 64 ++++++++++++--- fs/xfs/linux-2.6/xfs_aops.h | 3 + fs/xfs/linux-2.6/xfs_buf.c | 84 +++++++++++--------- fs/xfs/linux-2.6/xfs_buf.h | 22 +----- fs/xfs/linux-2.6/xfs_file.c | 10 +-- fs/xfs/linux-2.6/xfs_iops.c | 14 +--- fs/xfs/linux-2.6/xfs_lrw.c | 10 +-- fs/xfs/linux-2.6/xfs_super.c | 37 +--------- fs/xfs/linux-2.6/xfs_super.h | 12 --- fs/xfs/linux-2.6/xfs_sync.c | 2 +- fs/xfs/linux-2.6/xfs_vnode.c | 132 ------------------------------- fs/xfs/linux-2.6/xfs_vnode.h | 64 --------------- fs/xfs/quota/xfs_qm.c | 44 ++--------- fs/xfs/quota/xfs_qm.h | 2 +- fs/xfs/xfs_iget.c | 177 +++++++++++++++++++++++++++++++---------- fs/xfs/xfs_inode.c | 78 +------------------ fs/xfs/xfs_inode.h | 66 ++++++++++++---- fs/xfs/xfs_log.c | 13 ++-- fs/xfs/xfs_mount.c | 36 +++------ fs/xfs/xfs_mount.h | 7 +-- fs/xfs/xfs_quota.h | 8 +- fs/xfs/xfs_sb.h | 166 ++++++++++++++++++++------------------- fs/xfs/xfs_trans_inode.c | 30 +------- fs/xfs/xfs_vfsops.c | 141 --------------------------------- fs/xfs/xfs_vnodeops.c | 7 +- 27 files changed, 424 insertions(+), 829 deletions(-) delete mode 100644 fs/xfs/linux-2.6/xfs_vnode.c delete mode 100644 fs/xfs/xfs_vfsops.c hooks/post-receive -- XFS development tree From donaldd@sgi.com Wed Dec 3 23:36:41 2008 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_25 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB45afHS022806 for ; Wed, 3 Dec 2008 23:36:41 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id F01418F8084; Wed, 3 Dec 2008 21:36:36 -0800 (PST) Received: from [134.14.55.208] (snowcrash.melbourne.sgi.com [134.14.55.208]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA19933; Thu, 4 Dec 2008 16:36:34 +1100 Message-ID: <49376C6B.7070100@sgi.com> Date: Thu, 04 Dec 2008 16:36:43 +1100 From: Donald Douwsma User-Agent: Thunderbird 2.0.0.18 (X11/20081125) MIME-Version: 1.0 To: Christoph Hellwig , Lachlan McIlroy , xfs@oss.sgi.com Subject: Re: Assertion failed: atomic_read(&mp->m_active_trans) References: <492BB095.1000104@sgi.com> <4934AAA9.5090405@sgi.com> <20081203104849.GF15485@infradead.org> <20081203213950.GX18236@disturbed> In-Reply-To: <20081203213950.GX18236@disturbed> Content-Type: multipart/mixed; boundary="------------030200010109010408010008" This is a multi-part message in MIME format. --------------030200010109010408010008 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Dave Chinner wrote: > On Wed, Dec 03, 2008 at 05:48:49AM -0500, Christoph Hellwig wrote: >> I'd rather fix it properly. > > Sure, but in the mean time, I'd suggest changing it to a WARN_ON() > rather than an ASSERT(). That way we'll continue to have ppl bug us > about it until the VFS can support read-only remounts without racing > correctly. That sounds like a much better idea. Unfortunately we wont get feedback when people hit this on the root fs unless they have serial consoles (since /var/log/... has gone away by then). > Has that work been dropped on the floor, Christoph? We'vecat > been holding off removing this ASSERT or adding the hack > I did to work around the common case of the assert triggering > based on the fact that the problem in the VFS would be fixed > in the next release. That was the case each release since > 2.6.25 and there doesn't seem to be much progress... > >> Do you guys have a somewhat reliable >> testcase hitting it? > > I used to have one of the xfsqa tests hit it every so often, > but not what you'd call reliably.... Indeed, we dont hit this in regular qa. I guess most qa scripts dont specifically exercise remount readonly wile stressing the filesystem. The few occasions we have hit it were when rebooting in between test runs when the root fs was xfs. Don --------------030200010109010408010008 Content-Type: text/plain; name="warn-if-transactions-are-in-flight-on-remount-ro" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="warn-if-transactions-are-in-flight-on-remount-ro" --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c @@ -371,7 +371,7 @@ xfs_quiesce_attr( /* flush inodes and push all remaining buffers out to disk */ xfs_quiesce_fs(mp); - ASSERT_ALWAYS(atomic_read(&mp->m_active_trans) == 0); + WARN_ON(atomic_read(&mp->m_active_trans) == 0); /* Push the superblock and write an unmount record */ error = xfs_log_sbcount(mp, 1); --------------030200010109010408010008-- From lachlan@sgi.com Wed Dec 3 23:39:12 2008 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 mB45dC44023047 for ; Wed, 3 Dec 2008 23:39:12 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id 0A5A530408C for ; Wed, 3 Dec 2008 21:39:07 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA19948 for ; Thu, 4 Dec 2008 16:39:06 +1100 Message-ID: <49376D11.4010507@sgi.com> Date: Thu, 04 Dec 2008 16:39:29 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] Check return value of xfs_buf_get_noaddr() Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit We check the return value of all other calls to xfs_buf_get_noaddr(). Make sense to do it here too. --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c @@ -3034,6 +3034,8 @@ xfs_zero_remaining_bytes( bp = xfs_buf_get_noaddr(mp->m_sb.sb_blocksize, XFS_IS_REALTIME_INODE(ip) ? mp->m_rtdev_targp : mp->m_ddev_targp); + if (!bp) + return ENOMEM; for (offset = startoff; offset <= endoff; offset = lastoffset + 1) { offset_fsb = XFS_B_TO_FSBT(mp, offset); From lachlan@sgi.com Thu Dec 4 00:18:53 2008 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 mB46IrnU028554 for ; Thu, 4 Dec 2008 00:18:53 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id DD5BC30408D for ; Wed, 3 Dec 2008 22:18:48 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA20606 for ; Thu, 4 Dec 2008 17:18:46 +1100 Message-ID: <4937765D.2030601@sgi.com> Date: Thu, 04 Dec 2008 17:19:09 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] Remove unused variable in ktrace_free() Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit entries_size is probably left over from when we used to pass the size to kmem_free(). --- xfs-fix.orig/fs/xfs/support/ktrace.c +++ xfs-fix/fs/xfs/support/ktrace.c @@ -113,21 +113,16 @@ ktrace_alloc(int nentries, unsigned int void ktrace_free(ktrace_t *ktp) { - int entries_size; - if (ktp == (ktrace_t *)NULL) return; /* * Special treatment for the Vnode trace buffer. */ - if (ktp->kt_nentries == ktrace_zentries) { + if (ktp->kt_nentries == ktrace_zentries) kmem_zone_free(ktrace_ent_zone, ktp->kt_entries); - } else { - entries_size = (int)(ktp->kt_nentries * sizeof(ktrace_entry_t)); - + else kmem_free(ktp->kt_entries); - } kmem_zone_free(ktrace_hdr_zone, ktp); } From lachlan@sgi.com Thu Dec 4 00:27:31 2008 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 (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB46RVoU029105 for ; Thu, 4 Dec 2008 00:27:31 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay3.corp.sgi.com (Postfix) with SMTP id A15BEAC012 for ; Wed, 3 Dec 2008 22:27:26 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA20685 for ; Thu, 4 Dec 2008 17:27:24 +1100 Message-ID: <49377863.1070109@sgi.com> Date: Thu, 04 Dec 2008 17:27:47 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] Remove unnecessary assertion Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hit this assert because an inode was tagged with XFS_ICI_RECLAIM_TAG but not XFS_IRECLAIMABLE|XFS_IRECLAIM. This is because xfs_iget_cache_hit() first clears XFS_IRECLAIMABLE and then calls __xfs_inode_clear_reclaim_tag() while only holding the pag_ici_lock in read mode so we can race with xfs_reclaim_inodes_ag(). Looks like xfs_reclaim_inodes_ag() will do the right thing anyway so just remove the assert. Thanks to Christoph for pointing out where the problem was. --- xfs-fix.orig/fs/xfs/linux-2.6/xfs_sync.c +++ xfs-fix/fs/xfs/linux-2.6/xfs_sync.c @@ -707,8 +707,6 @@ restart: break; } - ASSERT(xfs_iflags_test(ip, (XFS_IRECLAIMABLE|XFS_IRECLAIM))); - /* ignore if already under reclaim */ if (xfs_iflags_test(ip, XFS_IRECLAIM)) { read_unlock(&pag->pag_ici_lock); From kamalesh@linux.vnet.ibm.com Thu Dec 4 00:30:37 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=AWL,BAYES_50,J_CHICKENPOX_45, UPPERCASE_75_100 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 mB46UaxO029306 for ; Thu, 4 Dec 2008 00:30:37 -0600 X-ASG-Debug-ID: 1228372228-47aa01670000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e23smtp06.au.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0041B168FDB9 for ; Wed, 3 Dec 2008 22:30:29 -0800 (PST) Received: from e23smtp06.au.ibm.com (E23SMTP06.au.ibm.com [202.81.18.175]) by cuda.sgi.com with ESMTP id Gtq6NbsW27t6kcVd for ; Wed, 03 Dec 2008 22:30:29 -0800 (PST) Received: from d23relay03.au.ibm.com (d23relay03.au.ibm.com [202.81.18.234]) by e23smtp06.au.ibm.com (8.13.1/8.13.1) with ESMTP id mB3Ci3Mx007978 for ; Wed, 3 Dec 2008 23:44:03 +1100 Received: from d23av02.au.ibm.com (d23av02.au.ibm.com [9.190.235.138]) by d23relay03.au.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id mB3Cfjfh4218992 for ; Wed, 3 Dec 2008 23:41:45 +1100 Received: from d23av02.au.ibm.com (loopback [127.0.0.1]) by d23av02.au.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id mB3CfJvu005533 for ; Wed, 3 Dec 2008 23:41:19 +1100 Received: from linux.vnet.ibm.com ([9.124.158.38]) by d23av02.au.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id mB3Cf58M005477 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 3 Dec 2008 23:41:08 +1100 Date: Wed, 3 Dec 2008 18:11:04 +0530 From: Kamalesh Babulal To: Stephen Rothwell Cc: linux-next@vger.kernel.org, LKML , xfs@oss.sgi.com X-ASG-Orig-Subj: next-20081203 build failure, when building xfs_file.o Subject: next-20081203 build failure, when building xfs_file.o Message-ID: <20081203124104.GA5400@linux.vnet.ibm.com> Reply-To: Kamalesh Babulal References: <20081203183602.c06f8c39.sfr@canb.auug.org.au> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: <20081203183602.c06f8c39.sfr@canb.auug.org.au> User-Agent: Mutt/1.5.17 (2007-11-01) X-Barracuda-Connect: E23SMTP06.au.ibm.com[202.81.18.175] X-Barracuda-Start-Time: 1228372233 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: 0.42 X-Barracuda-Spam-Status: No, SCORE=0.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, UPPERCASE_75_100, UPPERCASE_75_100_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.11876 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M 0.01 UPPERCASE_75_100 message body is 75-100% uppercase 1.93 UPPERCASE_75_100_2 message body is 75-100% uppercase Hi Stephen, next-20081203 kernel build fails on x86 with build failure In file included from fs/xfs/linux-2.6/xfs_file.c:39: fs/xfs/linux-2.6/xfs_ioctl32.h:50: error: expected specifier-qualifier-list before 'compat_time_t' fs/xfs/linux-2.6/xfs_ioctl32.h:79: error: expected specifier-qualifier-list before 'compat_uptr_t' fs/xfs/linux-2.6/xfs_ioctl32.h:94: error: expected specifier-qualifier-list before 'compat_uptr_t' fs/xfs/linux-2.6/xfs_ioctl32.h:131: error: expected specifier-qualifier-list before 'compat_uptr_t' fs/xfs/linux-2.6/xfs_ioctl32.h:142: error: expected specifier-qualifier-list before 'compat_uptr_t' fs/xfs/linux-2.6/xfs_ioctl32.h:152: error: expected specifier-qualifier-list before 'compat_uptr_t' fs/xfs/linux-2.6/xfs_ioctl32.h:161: error: expected specifier-qualifier-list before 'compat_uptr_t' make[2]: *** [fs/xfs/linux-2.6/xfs_file.o] Error 1 # # Automatically generated make config: don't edit # Linux kernel version: 2.6.28-rc7-next-20081203 # Wed Dec 3 14:49:45 2008 # # CONFIG_64BIT is not set CONFIG_X86_32=y # CONFIG_X86_64 is not set CONFIG_X86=y CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" CONFIG_GENERIC_TIME=y CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_HAVE_LATENCYTOP_SUPPORT=y CONFIG_FAST_CMPXCHG_LOCAL=y CONFIG_MMU=y CONFIG_ZONE_DMA=y CONFIG_GENERIC_ISA_DMA=y CONFIG_GENERIC_IOMAP=y CONFIG_GENERIC_BUG=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_GPIO=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y # CONFIG_RWSEM_GENERIC_SPINLOCK is not set CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y CONFIG_GENERIC_CALIBRATE_DELAY=y # CONFIG_GENERIC_TIME_VSYSCALL is not set CONFIG_ARCH_HAS_CPU_RELAX=y CONFIG_ARCH_HAS_DEFAULT_IDLE=y CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y CONFIG_HAVE_SETUP_PER_CPU_AREA=y # CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y # CONFIG_ZONE_DMA32 is not set CONFIG_ARCH_POPULATES_NODE_MAP=y # CONFIG_AUDIT_ARCH is not set CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_PENDING_IRQ=y CONFIG_X86_SMP=y CONFIG_USE_GENERIC_SMP_HELPERS=y CONFIG_X86_32_SMP=y CONFIG_X86_HT=y CONFIG_X86_BIOS_REBOOT=y CONFIG_X86_TRAMPOLINE=y CONFIG_KTIME_SCALAR=y CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" # # General setup # CONFIG_EXPERIMENTAL=y CONFIG_LOCK_KERNEL=y CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_LOCALVERSION="" # CONFIG_LOCALVERSION_AUTO is not set CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y CONFIG_BSD_PROCESS_ACCT=y CONFIG_BSD_PROCESS_ACCT_V3=y CONFIG_TASKSTATS=y CONFIG_TASK_DELAY_ACCT=y CONFIG_TASK_XACCT=y CONFIG_TASK_IO_ACCOUNTING=y CONFIG_AUDIT=y CONFIG_AUDITSYSCALL=y CONFIG_AUDIT_TREE=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=17 CONFIG_CGROUPS=y CONFIG_CGROUP_DEBUG=y CONFIG_CGROUP_NS=y CONFIG_CGROUP_FREEZER=y CONFIG_CGROUP_DEVICE=y CONFIG_CPUSETS=y CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y CONFIG_GROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y CONFIG_RT_GROUP_SCHED=y CONFIG_USER_SCHED=y # CONFIG_CGROUP_SCHED is not set CONFIG_CGROUP_CPUACCT=y CONFIG_RESOURCE_COUNTERS=y CONFIG_MM_OWNER=y CONFIG_CGROUP_MEM_RES_CTLR=y CONFIG_SYSFS_DEPRECATED=y CONFIG_SYSFS_DEPRECATED_V2=y CONFIG_PROC_PID_CPUSET=y CONFIG_RELAY=y CONFIG_NAMESPACES=y CONFIG_UTS_NS=y CONFIG_IPC_NS=y CONFIG_USER_NS=y CONFIG_PID_NS=y CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_SYSCTL=y CONFIG_EMBEDDED=y CONFIG_UID16=y CONFIG_SYSCTL_SYSCALL=y CONFIG_KALLSYMS=y CONFIG_KALLSYMS_ALL=y CONFIG_KALLSYMS_EXTRA_PASS=y CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y CONFIG_ELF_CORE=y CONFIG_PCSPKR_PLATFORM=y CONFIG_COMPAT_BRK=y CONFIG_BASE_FULL=y CONFIG_FUTEX=y CONFIG_ANON_INODES=y CONFIG_EPOLL=y CONFIG_SIGNALFD=y CONFIG_TIMERFD=y CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_AIO=y CONFIG_VM_EVENT_COUNTERS=y CONFIG_PCI_QUIRKS=y CONFIG_SLUB_DEBUG=y # CONFIG_SLAB is not set CONFIG_SLUB=y # CONFIG_SLOB is not set CONFIG_PROFILING=y CONFIG_TRACEPOINTS=y CONFIG_MARKERS=y CONFIG_OPROFILE=y CONFIG_OPROFILE_IBS=y CONFIG_HAVE_OPROFILE=y CONFIG_KPROBES=y CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_KRETPROBES=y CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y CONFIG_HAVE_ARCH_TRACEHOOK=y CONFIG_HAVE_GENERIC_DMA_COHERENT=y CONFIG_SLABINFO=y CONFIG_RT_MUTEXES=y # CONFIG_TINY_SHMEM is not set CONFIG_BASE_SMALL=0 CONFIG_MODULES=y CONFIG_MODULE_FORCE_LOAD=y CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y CONFIG_MODVERSIONS=y CONFIG_MODULE_SRCVERSION_ALL=y CONFIG_STOP_MACHINE=y CONFIG_BLOCK=y CONFIG_LBD=y CONFIG_BLK_DEV_IO_TRACE=y CONFIG_LSF=y CONFIG_BLK_DEV_BSG=y CONFIG_BLK_DEV_INTEGRITY=y # # IO Schedulers # CONFIG_IOSCHED_NOOP=y CONFIG_IOSCHED_AS=y CONFIG_IOSCHED_DEADLINE=y CONFIG_IOSCHED_CFQ=y # CONFIG_DEFAULT_AS is not set # CONFIG_DEFAULT_DEADLINE is not set CONFIG_DEFAULT_CFQ=y # CONFIG_DEFAULT_NOOP is not set CONFIG_DEFAULT_IOSCHED="cfq" CONFIG_PREEMPT_NOTIFIERS=y CONFIG_CLASSIC_RCU=y CONFIG_FREEZER=y # # Processor type and features # CONFIG_TICK_ONESHOT=y CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_GENERIC_CLOCKEVENTS_BUILD=y CONFIG_SMP=y CONFIG_X86_FIND_SMP_CONFIG=y CONFIG_X86_MPPARSE=y CONFIG_X86_PC=y # CONFIG_X86_ELAN is not set # CONFIG_X86_VOYAGER is not set # CONFIG_X86_GENERICARCH is not set # CONFIG_X86_VSMP is not set CONFIG_X86_RDC321X=y CONFIG_SCHED_OMIT_FRAME_POINTER=y CONFIG_PARAVIRT_GUEST=y CONFIG_VMI=y CONFIG_KVM_CLOCK=y CONFIG_KVM_GUEST=y CONFIG_LGUEST_GUEST=y CONFIG_PARAVIRT=y CONFIG_PARAVIRT_CLOCK=y CONFIG_PARAVIRT_DEBUG=y CONFIG_MEMTEST=y # CONFIG_M386 is not set # CONFIG_M486 is not set # CONFIG_M586 is not set # CONFIG_M586TSC is not set # CONFIG_M586MMX is not set CONFIG_M686=y # CONFIG_MPENTIUMII is not set # CONFIG_MPENTIUMIII is not set # CONFIG_MPENTIUMM is not set # CONFIG_MPENTIUM4 is not set # CONFIG_MK6 is not set # CONFIG_MK7 is not set # CONFIG_MK8 is not set # CONFIG_MCRUSOE is not set # CONFIG_MEFFICEON is not set # CONFIG_MWINCHIPC6 is not set # CONFIG_MWINCHIP3D is not set # CONFIG_MGEODEGX1 is not set # CONFIG_MGEODE_LX is not set # CONFIG_MCYRIXIII is not set # CONFIG_MVIAC3_2 is not set # CONFIG_MVIAC7 is not set # CONFIG_MPSC is not set # CONFIG_MCORE2 is not set # CONFIG_GENERIC_CPU is not set CONFIG_X86_GENERIC=y CONFIG_X86_CPU=y CONFIG_X86_CMPXCHG=y CONFIG_X86_L1_CACHE_SHIFT=7 CONFIG_X86_XADD=y CONFIG_X86_PPRO_FENCE=y CONFIG_X86_WP_WORKS_OK=y CONFIG_X86_INVLPG=y CONFIG_X86_BSWAP=y CONFIG_X86_POPAD_OK=y CONFIG_X86_INTEL_USERCOPY=y CONFIG_X86_USE_PPRO_CHECKSUM=y CONFIG_X86_TSC=y CONFIG_X86_CMOV=y CONFIG_X86_MINIMUM_CPU_FAMILY=4 CONFIG_X86_DEBUGCTLMSR=y CONFIG_PROCESSOR_SELECT=y CONFIG_CPU_SUP_INTEL=y CONFIG_CPU_SUP_CYRIX_32=y CONFIG_CPU_SUP_AMD=y CONFIG_CPU_SUP_CENTAUR_32=y CONFIG_CPU_SUP_TRANSMETA_32=y CONFIG_CPU_SUP_UMC_32=y CONFIG_X86_DS=y CONFIG_X86_PTRACE_BTS=y CONFIG_HPET_TIMER=y CONFIG_HPET_EMULATE_RTC=y CONFIG_DMI=y # CONFIG_IOMMU_HELPER is not set CONFIG_NR_CPUS=8 CONFIG_SCHED_SMT=y CONFIG_SCHED_MC=y CONFIG_PREEMPT_NONE=y # CONFIG_PREEMPT_VOLUNTARY is not set # CONFIG_PREEMPT is not set CONFIG_X86_LOCAL_APIC=y CONFIG_X86_IO_APIC=y CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y CONFIG_X86_MCE=y CONFIG_X86_MCE_NONFATAL=y CONFIG_X86_MCE_P4THERMAL=y CONFIG_VM86=y CONFIG_TOSHIBA=y CONFIG_I8K=y CONFIG_X86_REBOOTFIXUPS=y CONFIG_MICROCODE=y CONFIG_MICROCODE_INTEL=y CONFIG_MICROCODE_AMD=y CONFIG_MICROCODE_OLD_INTERFACE=y CONFIG_X86_MSR=y CONFIG_X86_CPUID=y # CONFIG_NOHIGHMEM is not set CONFIG_HIGHMEM4G=y # CONFIG_HIGHMEM64G is not set CONFIG_VMSPLIT_3G=y # CONFIG_VMSPLIT_3G_OPT is not set # CONFIG_VMSPLIT_2G is not set # CONFIG_VMSPLIT_2G_OPT is not set # CONFIG_VMSPLIT_1G is not set CONFIG_PAGE_OFFSET=0xC0000000 CONFIG_HIGHMEM=y # CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set CONFIG_ARCH_FLATMEM_ENABLE=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_ILLEGAL_POINTER_VALUE=0 CONFIG_SELECT_MEMORY_MODEL=y CONFIG_FLATMEM_MANUAL=y # CONFIG_DISCONTIGMEM_MANUAL is not set # CONFIG_SPARSEMEM_MANUAL is not set CONFIG_FLATMEM=y CONFIG_FLAT_NODE_MEM_MAP=y CONFIG_SPARSEMEM_STATIC=y CONFIG_PAGEFLAGS_EXTENDED=y CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_RESOURCES_64BIT=y # CONFIG_PHYS_ADDR_T_64BIT is not set CONFIG_ZONE_DMA_FLAG=1 CONFIG_BOUNCE=y CONFIG_VIRT_TO_BUS=y CONFIG_UNEVICTABLE_LRU=y CONFIG_MMU_NOTIFIER=y CONFIG_HIGHPTE=y CONFIG_X86_CHECK_BIOS_CORRUPTION=y CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y CONFIG_X86_RESERVE_LOW_64K=y CONFIG_MATH_EMULATION=y CONFIG_MTRR=y CONFIG_MTRR_SANITIZER=y CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0 CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 CONFIG_X86_PAT=y CONFIG_EFI=y CONFIG_SECCOMP=y # CONFIG_HZ_100 is not set CONFIG_HZ_250=y # CONFIG_HZ_300 is not set # CONFIG_HZ_1000 is not set CONFIG_HZ=250 CONFIG_SCHED_HRTICK=y CONFIG_KEXEC=y CONFIG_CRASH_DUMP=y CONFIG_KEXEC_JUMP=y CONFIG_PHYSICAL_START=0x100000 CONFIG_RELOCATABLE=y CONFIG_PHYSICAL_ALIGN=0x100000 CONFIG_HOTPLUG_CPU=y CONFIG_COMPAT_VDSO=y CONFIG_CMDLINE_BOOL=y CONFIG_CMDLINE="" CONFIG_CMDLINE_OVERRIDE=y CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # # Power management and ACPI options # CONFIG_PM=y CONFIG_PM_DEBUG=y CONFIG_PM_VERBOSE=y CONFIG_CAN_PM_TRACE=y CONFIG_PM_TRACE=y CONFIG_PM_TRACE_RTC=y CONFIG_PM_SLEEP_SMP=y CONFIG_PM_SLEEP=y CONFIG_SUSPEND=y CONFIG_PM_TEST_SUSPEND=y CONFIG_SUSPEND_FREEZER=y CONFIG_HIBERNATION=y CONFIG_PM_STD_PARTITION="" CONFIG_ACPI=y CONFIG_ACPI_SLEEP=y CONFIG_ACPI_PROCFS=y CONFIG_ACPI_PROCFS_POWER=y CONFIG_ACPI_SYSFS_POWER=y CONFIG_ACPI_PROC_EVENT=y CONFIG_ACPI_AC=y CONFIG_ACPI_BATTERY=y CONFIG_ACPI_BUTTON=y CONFIG_ACPI_VIDEO=y CONFIG_ACPI_FAN=y CONFIG_ACPI_DOCK=y CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=y CONFIG_ACPI_WMI=y CONFIG_ACPI_ASUS=y CONFIG_ACPI_TOSHIBA=y # CONFIG_ACPI_CUSTOM_DSDT is not set CONFIG_ACPI_BLACKLIST_YEAR=0 CONFIG_ACPI_DEBUG=y CONFIG_ACPI_DEBUG_FUNC_TRACE=y CONFIG_ACPI_PCI_SLOT=y CONFIG_ACPI_SYSTEM=y CONFIG_X86_PM_TIMER=y CONFIG_ACPI_CONTAINER=y CONFIG_ACPI_SBS=y CONFIG_X86_APM_BOOT=y CONFIG_APM=y CONFIG_APM_IGNORE_USER_SUSPEND=y CONFIG_APM_DO_ENABLE=y CONFIG_APM_CPU_IDLE=y CONFIG_APM_DISPLAY_BLANK=y CONFIG_APM_ALLOW_INTS=y CONFIG_APM_REAL_MODE_POWER_OFF=y # # CPU Frequency scaling # CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_TABLE=y CONFIG_CPU_FREQ_DEBUG=y CONFIG_CPU_FREQ_STAT=y CONFIG_CPU_FREQ_STAT_DETAILS=y CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_POWERSAVE=y CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y # # CPUFreq processor drivers # CONFIG_X86_ACPI_CPUFREQ=y CONFIG_X86_POWERNOW_K6=y CONFIG_X86_POWERNOW_K7=y CONFIG_X86_POWERNOW_K7_ACPI=y CONFIG_X86_POWERNOW_K8=y CONFIG_X86_POWERNOW_K8_ACPI=y CONFIG_X86_GX_SUSPMOD=y CONFIG_X86_SPEEDSTEP_CENTRINO=y CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y CONFIG_X86_SPEEDSTEP_ICH=y CONFIG_X86_SPEEDSTEP_SMI=y CONFIG_X86_P4_CLOCKMOD=y CONFIG_X86_CPUFREQ_NFORCE2=y CONFIG_X86_LONGRUN=y CONFIG_X86_LONGHAUL=y CONFIG_X86_E_POWERSAVER=y # # shared options # CONFIG_X86_ACPI_CPUFREQ_PROC_INTF=y CONFIG_X86_SPEEDSTEP_LIB=y CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE_GOV_LADDER=y CONFIG_CPU_IDLE_GOV_MENU=y # # Bus options (PCI etc.) # CONFIG_PCI=y # CONFIG_PCI_GOBIOS is not set # CONFIG_PCI_GOMMCONFIG is not set # CONFIG_PCI_GODIRECT is not set # CONFIG_PCI_GOOLPC is not set CONFIG_PCI_GOANY=y CONFIG_PCI_BIOS=y CONFIG_PCI_DIRECT=y CONFIG_PCI_MMCONFIG=y CONFIG_PCI_OLPC=y CONFIG_PCI_DOMAINS=y CONFIG_PCIEPORTBUS=y CONFIG_HOTPLUG_PCI_PCIE=y CONFIG_PCIEAER=y CONFIG_PCIEASPM=y CONFIG_PCIEASPM_DEBUG=y CONFIG_ARCH_SUPPORTS_MSI=y CONFIG_PCI_MSI=y CONFIG_PCI_LEGACY=y CONFIG_PCI_DEBUG=y CONFIG_PCI_STUB=y CONFIG_HT_IRQ=y CONFIG_ISA_DMA_API=y CONFIG_ISA=y CONFIG_EISA=y CONFIG_EISA_VLB_PRIMING=y CONFIG_EISA_PCI_EISA=y CONFIG_EISA_VIRTUAL_ROOT=y CONFIG_EISA_NAMES=y CONFIG_MCA=y CONFIG_MCA_LEGACY=y CONFIG_MCA_PROC_FS=y CONFIG_SCx200=y CONFIG_SCx200HR_TIMER=y CONFIG_OLPC=y CONFIG_K8_NB=y CONFIG_PCCARD=y CONFIG_PCMCIA_DEBUG=y CONFIG_PCMCIA=y CONFIG_PCMCIA_LOAD_CIS=y CONFIG_PCMCIA_IOCTL=y CONFIG_CARDBUS=y # # PC-card bridges # CONFIG_YENTA=y CONFIG_YENTA_O2=y CONFIG_YENTA_RICOH=y CONFIG_YENTA_TI=y CONFIG_YENTA_ENE_TUNE=y CONFIG_YENTA_TOSHIBA=y CONFIG_PD6729=y CONFIG_I82092=y CONFIG_I82365=y CONFIG_TCIC=y CONFIG_PCMCIA_PROBE=y CONFIG_PCCARD_NONSTATIC=y CONFIG_HOTPLUG_PCI=y CONFIG_HOTPLUG_PCI_FAKE=y CONFIG_HOTPLUG_PCI_COMPAQ=y CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y CONFIG_HOTPLUG_PCI_IBM=y CONFIG_HOTPLUG_PCI_ACPI=y CONFIG_HOTPLUG_PCI_ACPI_IBM=y CONFIG_HOTPLUG_PCI_CPCI=y CONFIG_HOTPLUG_PCI_CPCI_ZT5550=y CONFIG_HOTPLUG_PCI_CPCI_GENERIC=y CONFIG_HOTPLUG_PCI_SHPC=y # # Executable file formats / Emulations # CONFIG_BINFMT_ELF=y CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y CONFIG_HAVE_AOUT=y CONFIG_BINFMT_AOUT=y CONFIG_BINFMT_MISC=y CONFIG_HAVE_ATOMIC_IOMAP=y CONFIG_NET=y # # Networking options # CONFIG_NET_NS=y CONFIG_COMPAT_NET_DEV_OPS=y CONFIG_PACKET=y CONFIG_PACKET_MMAP=y CONFIG_UNIX=y CONFIG_XFRM=y CONFIG_XFRM_USER=y CONFIG_XFRM_SUB_POLICY=y CONFIG_XFRM_MIGRATE=y CONFIG_XFRM_STATISTICS=y CONFIG_XFRM_IPCOMP=y CONFIG_NET_KEY=y CONFIG_NET_KEY_MIGRATE=y CONFIG_INET=y CONFIG_IP_MULTICAST=y CONFIG_IP_ADVANCED_ROUTER=y CONFIG_ASK_IP_FIB_HASH=y # CONFIG_IP_FIB_TRIE is not set CONFIG_IP_FIB_HASH=y CONFIG_IP_MULTIPLE_TABLES=y CONFIG_IP_ROUTE_MULTIPATH=y CONFIG_IP_ROUTE_VERBOSE=y CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y CONFIG_IP_PNP_BOOTP=y CONFIG_IP_PNP_RARP=y CONFIG_NET_IPIP=y CONFIG_NET_IPGRE=y CONFIG_NET_IPGRE_BROADCAST=y CONFIG_IP_MROUTE=y CONFIG_IP_PIMSM_V1=y CONFIG_IP_PIMSM_V2=y CONFIG_ARPD=y CONFIG_SYN_COOKIES=y CONFIG_INET_AH=y CONFIG_INET_ESP=y CONFIG_INET_IPCOMP=y CONFIG_INET_XFRM_TUNNEL=y CONFIG_INET_TUNNEL=y CONFIG_INET_XFRM_MODE_TRANSPORT=y CONFIG_INET_XFRM_MODE_TUNNEL=y CONFIG_INET_XFRM_MODE_BEET=y CONFIG_INET_LRO=y CONFIG_INET_DIAG=y CONFIG_INET_TCP_DIAG=y CONFIG_TCP_CONG_ADVANCED=y CONFIG_TCP_CONG_BIC=y CONFIG_TCP_CONG_CUBIC=y CONFIG_TCP_CONG_WESTWOOD=y CONFIG_TCP_CONG_HTCP=y CONFIG_TCP_CONG_HSTCP=y CONFIG_TCP_CONG_HYBLA=y CONFIG_TCP_CONG_VEGAS=y CONFIG_TCP_CONG_SCALABLE=y CONFIG_TCP_CONG_LP=y CONFIG_TCP_CONG_VENO=y CONFIG_TCP_CONG_YEAH=y CONFIG_TCP_CONG_ILLINOIS=y # CONFIG_DEFAULT_BIC is not set CONFIG_DEFAULT_CUBIC=y # CONFIG_DEFAULT_HTCP is not set # CONFIG_DEFAULT_VEGAS is not set # CONFIG_DEFAULT_WESTWOOD is not set # CONFIG_DEFAULT_RENO is not set CONFIG_DEFAULT_TCP_CONG="cubic" CONFIG_TCP_MD5SIG=y CONFIG_IPV6=y CONFIG_IPV6_PRIVACY=y CONFIG_IPV6_ROUTER_PREF=y CONFIG_IPV6_ROUTE_INFO=y CONFIG_IPV6_OPTIMISTIC_DAD=y CONFIG_INET6_AH=y CONFIG_INET6_ESP=y CONFIG_INET6_IPCOMP=y CONFIG_IPV6_MIP6=y CONFIG_INET6_XFRM_TUNNEL=y CONFIG_INET6_TUNNEL=y CONFIG_INET6_XFRM_MODE_TRANSPORT=y CONFIG_INET6_XFRM_MODE_TUNNEL=y CONFIG_INET6_XFRM_MODE_BEET=y CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=y CONFIG_IPV6_SIT=y CONFIG_IPV6_NDISC_NODETYPE=y CONFIG_IPV6_TUNNEL=y CONFIG_IPV6_MULTIPLE_TABLES=y CONFIG_IPV6_SUBTREES=y CONFIG_IPV6_MROUTE=y CONFIG_IPV6_PIMSM_V2=y CONFIG_NETLABEL=y CONFIG_NETWORK_SECMARK=y CONFIG_NETFILTER=y CONFIG_NETFILTER_DEBUG=y CONFIG_NETFILTER_ADVANCED=y CONFIG_BRIDGE_NETFILTER=y # # Core Netfilter Configuration # CONFIG_NETFILTER_NETLINK=y CONFIG_NETFILTER_NETLINK_QUEUE=y CONFIG_NETFILTER_NETLINK_LOG=y CONFIG_NF_CONNTRACK=y CONFIG_NF_CT_ACCT=y CONFIG_NF_CONNTRACK_MARK=y CONFIG_NF_CONNTRACK_SECMARK=y CONFIG_NF_CONNTRACK_EVENTS=y CONFIG_NF_CT_PROTO_DCCP=y CONFIG_NF_CT_PROTO_GRE=y CONFIG_NF_CT_PROTO_SCTP=y CONFIG_NF_CT_PROTO_UDPLITE=y CONFIG_NF_CONNTRACK_AMANDA=y CONFIG_NF_CONNTRACK_FTP=y CONFIG_NF_CONNTRACK_H323=y CONFIG_NF_CONNTRACK_IRC=y CONFIG_NF_CONNTRACK_NETBIOS_NS=y CONFIG_NF_CONNTRACK_PPTP=y CONFIG_NF_CONNTRACK_SANE=y CONFIG_NF_CONNTRACK_SIP=y CONFIG_NF_CONNTRACK_TFTP=y CONFIG_NF_CT_NETLINK=y CONFIG_NETFILTER_TPROXY=y CONFIG_NETFILTER_XTABLES=y CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y CONFIG_NETFILTER_XT_TARGET_CONNMARK=y CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y CONFIG_NETFILTER_XT_TARGET_DSCP=y CONFIG_NETFILTER_XT_TARGET_MARK=y CONFIG_NETFILTER_XT_TARGET_NFLOG=y CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y CONFIG_NETFILTER_XT_TARGET_NOTRACK=y CONFIG_NETFILTER_XT_TARGET_RATEEST=y CONFIG_NETFILTER_XT_TARGET_TPROXY=y CONFIG_NETFILTER_XT_TARGET_TRACE=y CONFIG_NETFILTER_XT_TARGET_SECMARK=y CONFIG_NETFILTER_XT_TARGET_TCPMSS=y CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=y CONFIG_NETFILTER_XT_MATCH_COMMENT=y CONFIG_NETFILTER_XT_MATCH_CONNBYTES=y CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=y CONFIG_NETFILTER_XT_MATCH_CONNMARK=y CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y CONFIG_NETFILTER_XT_MATCH_DCCP=y CONFIG_NETFILTER_XT_MATCH_DSCP=y CONFIG_NETFILTER_XT_MATCH_ESP=y CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y CONFIG_NETFILTER_XT_MATCH_HELPER=y CONFIG_NETFILTER_XT_MATCH_IPRANGE=y CONFIG_NETFILTER_XT_MATCH_LENGTH=y CONFIG_NETFILTER_XT_MATCH_LIMIT=y CONFIG_NETFILTER_XT_MATCH_MAC=y CONFIG_NETFILTER_XT_MATCH_MARK=y CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y CONFIG_NETFILTER_XT_MATCH_OWNER=y CONFIG_NETFILTER_XT_MATCH_POLICY=y CONFIG_NETFILTER_XT_MATCH_PHYSDEV=y CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y CONFIG_NETFILTER_XT_MATCH_QUOTA=y CONFIG_NETFILTER_XT_MATCH_RATEEST=y CONFIG_NETFILTER_XT_MATCH_REALM=y CONFIG_NETFILTER_XT_MATCH_RECENT=y CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT=y CONFIG_NETFILTER_XT_MATCH_SCTP=y CONFIG_NETFILTER_XT_MATCH_SOCKET=y CONFIG_NETFILTER_XT_MATCH_STATE=y CONFIG_NETFILTER_XT_MATCH_STATISTIC=y CONFIG_NETFILTER_XT_MATCH_STRING=y CONFIG_NETFILTER_XT_MATCH_TCPMSS=y CONFIG_NETFILTER_XT_MATCH_TIME=y CONFIG_NETFILTER_XT_MATCH_U32=y CONFIG_IP_VS=y CONFIG_IP_VS_IPV6=y CONFIG_IP_VS_DEBUG=y CONFIG_IP_VS_TAB_BITS=12 # # IPVS transport protocol load balancing support # CONFIG_IP_VS_PROTO_TCP=y CONFIG_IP_VS_PROTO_UDP=y CONFIG_IP_VS_PROTO_AH_ESP=y CONFIG_IP_VS_PROTO_ESP=y CONFIG_IP_VS_PROTO_AH=y # # IPVS scheduler # CONFIG_IP_VS_RR=y CONFIG_IP_VS_WRR=y CONFIG_IP_VS_LC=y CONFIG_IP_VS_WLC=y CONFIG_IP_VS_LBLC=y CONFIG_IP_VS_LBLCR=y CONFIG_IP_VS_DH=y CONFIG_IP_VS_SH=y CONFIG_IP_VS_SED=y CONFIG_IP_VS_NQ=y # # IPVS application helper # CONFIG_IP_VS_FTP=y # # IP: Netfilter Configuration # CONFIG_NF_DEFRAG_IPV4=y CONFIG_NF_CONNTRACK_IPV4=y CONFIG_NF_CONNTRACK_PROC_COMPAT=y CONFIG_IP_NF_QUEUE=y CONFIG_IP_NF_IPTABLES=y CONFIG_IP_NF_MATCH_ADDRTYPE=y CONFIG_IP_NF_MATCH_AH=y CONFIG_IP_NF_MATCH_ECN=y CONFIG_IP_NF_MATCH_TTL=y CONFIG_IP_NF_FILTER=y CONFIG_IP_NF_TARGET_REJECT=y CONFIG_IP_NF_TARGET_LOG=y CONFIG_IP_NF_TARGET_ULOG=y CONFIG_NF_NAT=y CONFIG_NF_NAT_NEEDED=y CONFIG_IP_NF_TARGET_MASQUERADE=y CONFIG_IP_NF_TARGET_NETMAP=y CONFIG_IP_NF_TARGET_REDIRECT=y CONFIG_NF_NAT_SNMP_BASIC=y CONFIG_NF_NAT_PROTO_DCCP=y CONFIG_NF_NAT_PROTO_GRE=y CONFIG_NF_NAT_PROTO_UDPLITE=y CONFIG_NF_NAT_PROTO_SCTP=y CONFIG_NF_NAT_FTP=y CONFIG_NF_NAT_IRC=y CONFIG_NF_NAT_TFTP=y CONFIG_NF_NAT_AMANDA=y CONFIG_NF_NAT_PPTP=y CONFIG_NF_NAT_H323=y CONFIG_NF_NAT_SIP=y CONFIG_IP_NF_MANGLE=y CONFIG_IP_NF_TARGET_CLUSTERIP=y CONFIG_IP_NF_TARGET_ECN=y CONFIG_IP_NF_TARGET_TTL=y CONFIG_IP_NF_RAW=y CONFIG_IP_NF_SECURITY=y CONFIG_IP_NF_ARPTABLES=y CONFIG_IP_NF_ARPFILTER=y CONFIG_IP_NF_ARP_MANGLE=y # # IPv6: Netfilter Configuration # CONFIG_NF_CONNTRACK_IPV6=y CONFIG_IP6_NF_QUEUE=y CONFIG_IP6_NF_IPTABLES=y CONFIG_IP6_NF_MATCH_AH=y CONFIG_IP6_NF_MATCH_EUI64=y CONFIG_IP6_NF_MATCH_FRAG=y CONFIG_IP6_NF_MATCH_OPTS=y CONFIG_IP6_NF_MATCH_HL=y CONFIG_IP6_NF_MATCH_IPV6HEADER=y CONFIG_IP6_NF_MATCH_MH=y CONFIG_IP6_NF_MATCH_RT=y CONFIG_IP6_NF_TARGET_LOG=y CONFIG_IP6_NF_FILTER=y CONFIG_IP6_NF_TARGET_REJECT=y CONFIG_IP6_NF_MANGLE=y CONFIG_IP6_NF_TARGET_HL=y CONFIG_IP6_NF_RAW=y CONFIG_IP6_NF_SECURITY=y # # DECnet: Netfilter Configuration # CONFIG_DECNET_NF_GRABULATOR=y CONFIG_BRIDGE_NF_EBTABLES=y CONFIG_BRIDGE_EBT_BROUTE=y CONFIG_BRIDGE_EBT_T_FILTER=y CONFIG_BRIDGE_EBT_T_NAT=y CONFIG_BRIDGE_EBT_802_3=y CONFIG_BRIDGE_EBT_AMONG=y CONFIG_BRIDGE_EBT_ARP=y CONFIG_BRIDGE_EBT_IP=y CONFIG_BRIDGE_EBT_IP6=y CONFIG_BRIDGE_EBT_LIMIT=y CONFIG_BRIDGE_EBT_MARK=y CONFIG_BRIDGE_EBT_PKTTYPE=y CONFIG_BRIDGE_EBT_STP=y CONFIG_BRIDGE_EBT_VLAN=y CONFIG_BRIDGE_EBT_ARPREPLY=y CONFIG_BRIDGE_EBT_DNAT=y CONFIG_BRIDGE_EBT_MARK_T=y CONFIG_BRIDGE_EBT_REDIRECT=y CONFIG_BRIDGE_EBT_SNAT=y CONFIG_BRIDGE_EBT_LOG=y CONFIG_BRIDGE_EBT_ULOG=y CONFIG_BRIDGE_EBT_NFLOG=y CONFIG_IP_DCCP=y CONFIG_INET_DCCP_DIAG=y CONFIG_IP_DCCP_ACKVEC=y # # DCCP CCIDs Configuration (EXPERIMENTAL) # CONFIG_IP_DCCP_CCID2=y CONFIG_IP_DCCP_CCID2_DEBUG=y CONFIG_IP_DCCP_CCID3=y CONFIG_IP_DCCP_CCID3_DEBUG=y CONFIG_IP_DCCP_CCID3_RTO=100 CONFIG_IP_DCCP_TFRC_LIB=y CONFIG_IP_DCCP_TFRC_DEBUG=y # # DCCP Kernel Hacking # CONFIG_IP_DCCP_DEBUG=y CONFIG_NET_DCCPPROBE=y CONFIG_IP_SCTP=y CONFIG_SCTP_DBG_MSG=y CONFIG_SCTP_DBG_OBJCNT=y # CONFIG_SCTP_HMAC_NONE is not set # CONFIG_SCTP_HMAC_SHA1 is not set CONFIG_SCTP_HMAC_MD5=y CONFIG_TIPC=y CONFIG_TIPC_ADVANCED=y CONFIG_TIPC_ZONES=3 CONFIG_TIPC_CLUSTERS=1 CONFIG_TIPC_NODES=255 CONFIG_TIPC_SLAVE_NODES=0 CONFIG_TIPC_PORTS=8191 CONFIG_TIPC_LOG=0 CONFIG_TIPC_DEBUG=y CONFIG_ATM=y CONFIG_ATM_CLIP=y CONFIG_ATM_CLIP_NO_ICMP=y CONFIG_ATM_LANE=y CONFIG_ATM_MPOA=y CONFIG_ATM_BR2684=y CONFIG_ATM_BR2684_IPFILTER=y CONFIG_STP=y CONFIG_GARP=y CONFIG_BRIDGE=y CONFIG_NET_DSA=y CONFIG_NET_DSA_TAG_DSA=y CONFIG_NET_DSA_TAG_EDSA=y CONFIG_NET_DSA_TAG_TRAILER=y CONFIG_NET_DSA_MV88E6XXX=y CONFIG_NET_DSA_MV88E6060=y CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y CONFIG_NET_DSA_MV88E6131=y CONFIG_NET_DSA_MV88E6123_61_65=y CONFIG_VLAN_8021Q=y CONFIG_VLAN_8021Q_GVRP=y CONFIG_DECNET=y CONFIG_DECNET_ROUTER=y CONFIG_LLC=y CONFIG_LLC2=y CONFIG_IPX=y CONFIG_IPX_INTERN=y CONFIG_ATALK=y CONFIG_DEV_APPLETALK=y CONFIG_LTPC=y CONFIG_COPS=y CONFIG_COPS_DAYNA=y CONFIG_COPS_TANGENT=y CONFIG_IPDDP=y CONFIG_IPDDP_ENCAP=y CONFIG_IPDDP_DECAP=y CONFIG_X25=y CONFIG_LAPB=y CONFIG_ECONET=y CONFIG_ECONET_AUNUDP=y CONFIG_ECONET_NATIVE=y CONFIG_WAN_ROUTER=y CONFIG_NET_SCHED=y # # Queueing/Scheduling # CONFIG_NET_SCH_CBQ=y CONFIG_NET_SCH_HTB=y CONFIG_NET_SCH_HFSC=y CONFIG_NET_SCH_ATM=y CONFIG_NET_SCH_PRIO=y CONFIG_NET_SCH_MULTIQ=y CONFIG_NET_SCH_RED=y CONFIG_NET_SCH_SFQ=y CONFIG_NET_SCH_TEQL=y CONFIG_NET_SCH_TBF=y CONFIG_NET_SCH_GRED=y CONFIG_NET_SCH_DSMARK=y CONFIG_NET_SCH_NETEM=y CONFIG_NET_SCH_DRR=y CONFIG_NET_SCH_INGRESS=y # # Classification # CONFIG_NET_CLS=y CONFIG_NET_CLS_BASIC=y CONFIG_NET_CLS_TCINDEX=y CONFIG_NET_CLS_ROUTE4=y CONFIG_NET_CLS_ROUTE=y CONFIG_NET_CLS_FW=y CONFIG_NET_CLS_U32=y CONFIG_CLS_U32_PERF=y CONFIG_CLS_U32_MARK=y CONFIG_NET_CLS_RSVP=y CONFIG_NET_CLS_RSVP6=y CONFIG_NET_CLS_FLOW=y CONFIG_NET_CLS_CGROUP=y CONFIG_NET_EMATCH=y CONFIG_NET_EMATCH_STACK=32 CONFIG_NET_EMATCH_CMP=y CONFIG_NET_EMATCH_NBYTE=y CONFIG_NET_EMATCH_U32=y CONFIG_NET_EMATCH_META=y CONFIG_NET_EMATCH_TEXT=y CONFIG_NET_CLS_ACT=y CONFIG_NET_ACT_POLICE=y CONFIG_NET_ACT_GACT=y CONFIG_GACT_PROB=y CONFIG_NET_ACT_MIRRED=y CONFIG_NET_ACT_IPT=y CONFIG_NET_ACT_NAT=y CONFIG_NET_ACT_PEDIT=y CONFIG_NET_ACT_SIMP=y CONFIG_NET_ACT_SKBEDIT=y CONFIG_NET_CLS_IND=y CONFIG_NET_SCH_FIFO=y CONFIG_DCB=y # # Network testing # CONFIG_NET_PKTGEN=y CONFIG_NET_TCPPROBE=y CONFIG_HAMRADIO=y # # Packet Radio protocols # CONFIG_AX25=y CONFIG_AX25_DAMA_SLAVE=y CONFIG_NETROM=y CONFIG_ROSE=y # # AX.25 network device drivers # CONFIG_MKISS=y CONFIG_6PACK=y CONFIG_BPQETHER=y CONFIG_SCC=y CONFIG_SCC_DELAY=y CONFIG_SCC_TRXECHO=y CONFIG_BAYCOM_SER_FDX=y CONFIG_BAYCOM_SER_HDX=y CONFIG_BAYCOM_PAR=y CONFIG_BAYCOM_EPP=y CONFIG_YAM=y CONFIG_CAN=y CONFIG_CAN_RAW=y CONFIG_CAN_BCM=y # # CAN Device Drivers # CONFIG_CAN_VCAN=y CONFIG_CAN_DEBUG_DEVICES=y CONFIG_IRDA=y # # IrDA protocols # CONFIG_IRLAN=y CONFIG_IRNET=y CONFIG_IRCOMM=y CONFIG_IRDA_ULTRA=y # # IrDA options # CONFIG_IRDA_CACHE_LAST_LSAP=y CONFIG_IRDA_FAST_RR=y CONFIG_IRDA_DEBUG=y # # Infrared-port device drivers # # # SIR device drivers # CONFIG_IRTTY_SIR=y # # Dongle support # CONFIG_DONGLE=y CONFIG_ESI_DONGLE=y CONFIG_ACTISYS_DONGLE=y CONFIG_TEKRAM_DONGLE=y CONFIG_TOIM3232_DONGLE=y CONFIG_LITELINK_DONGLE=y CONFIG_MA600_DONGLE=y CONFIG_GIRBIL_DONGLE=y CONFIG_MCP2120_DONGLE=y CONFIG_OLD_BELKIN_DONGLE=y CONFIG_ACT200L_DONGLE=y CONFIG_KINGSUN_DONGLE=y CONFIG_KSDAZZLE_DONGLE=y CONFIG_KS959_DONGLE=y # # FIR device drivers # CONFIG_USB_IRDA=y CONFIG_SIGMATEL_FIR=y CONFIG_NSC_FIR=y CONFIG_WINBOND_FIR=y CONFIG_TOSHIBA_FIR=y CONFIG_SMC_IRCC_FIR=y CONFIG_ALI_FIR=y CONFIG_VLSI_FIR=y CONFIG_VIA_FIR=y CONFIG_MCS_FIR=y CONFIG_BT=y CONFIG_BT_L2CAP=y CONFIG_BT_SCO=y CONFIG_BT_RFCOMM=y CONFIG_BT_RFCOMM_TTY=y CONFIG_BT_BNEP=y CONFIG_BT_BNEP_MC_FILTER=y CONFIG_BT_BNEP_PROTO_FILTER=y CONFIG_BT_CMTP=y CONFIG_BT_HIDP=y # # Bluetooth device drivers # CONFIG_BT_HCIBTUSB=y CONFIG_BT_HCIBTSDIO=y CONFIG_BT_HCIUART=y CONFIG_BT_HCIUART_H4=y CONFIG_BT_HCIUART_BCSP=y CONFIG_BT_HCIUART_LL=y CONFIG_BT_HCIBCM203X=y CONFIG_BT_HCIBPA10X=y CONFIG_BT_HCIBFUSB=y CONFIG_BT_HCIDTL1=y CONFIG_BT_HCIBT3C=y CONFIG_BT_HCIBLUECARD=y CONFIG_BT_HCIBTUART=y CONFIG_BT_HCIVHCI=y CONFIG_AF_RXRPC=y CONFIG_AF_RXRPC_DEBUG=y CONFIG_RXKAD=y CONFIG_PHONET=y CONFIG_FIB_RULES=y CONFIG_WIRELESS=y CONFIG_CFG80211=y CONFIG_CFG80211_REG_DEBUG=y CONFIG_NL80211=y CONFIG_WIRELESS_OLD_REGULATORY=y CONFIG_WIRELESS_EXT=y CONFIG_WIRELESS_EXT_SYSFS=y CONFIG_LIB80211=y CONFIG_LIB80211_CRYPT_WEP=y CONFIG_LIB80211_CRYPT_CCMP=y CONFIG_LIB80211_CRYPT_TKIP=y CONFIG_MAC80211=y # # Rate control algorithm selection # CONFIG_MAC80211_RC_PID=y CONFIG_MAC80211_RC_MINSTREL=y # CONFIG_MAC80211_RC_DEFAULT_PID is not set CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y CONFIG_MAC80211_RC_DEFAULT="minstrel" CONFIG_MAC80211_MESH=y CONFIG_MAC80211_LEDS=y CONFIG_MAC80211_DEBUGFS=y CONFIG_MAC80211_DEBUG_MENU=y CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT=y CONFIG_MAC80211_NOINLINE=y CONFIG_MAC80211_VERBOSE_DEBUG=y CONFIG_MAC80211_HT_DEBUG=y CONFIG_MAC80211_TKIP_DEBUG=y CONFIG_MAC80211_IBSS_DEBUG=y CONFIG_MAC80211_VERBOSE_PS_DEBUG=y CONFIG_MAC80211_VERBOSE_MPL_DEBUG=y CONFIG_MAC80211_DEBUG_COUNTERS=y CONFIG_MAC80211_VERBOSE_SPECT_MGMT_DEBUG=y CONFIG_RFKILL=y CONFIG_RFKILL_INPUT=y CONFIG_RFKILL_LEDS=y CONFIG_NET_9P=y CONFIG_NET_9P_VIRTIO=y CONFIG_NET_9P_RDMA=y CONFIG_NET_9P_DEBUG=y # # Device Drivers # # # Generic Driver Options # CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_FW_LOADER=y CONFIG_FIRMWARE_IN_KERNEL=y CONFIG_EXTRA_FIRMWARE="" CONFIG_DEBUG_DRIVER=y CONFIG_DEBUG_DEVRES=y # CONFIG_SYS_HYPERVISOR is not set CONFIG_CONNECTOR=y CONFIG_PROC_EVENTS=y CONFIG_MTD=y CONFIG_MTD_DEBUG=y CONFIG_MTD_DEBUG_VERBOSE=0 CONFIG_MTD_CONCAT=y CONFIG_MTD_PARTITIONS=y CONFIG_MTD_REDBOOT_PARTS=y CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y CONFIG_MTD_REDBOOT_PARTS_READONLY=y CONFIG_MTD_CMDLINE_PARTS=y CONFIG_MTD_AR7_PARTS=y # # User Modules And Translation Layers # CONFIG_MTD_CHAR=y CONFIG_HAVE_MTD_OTP=y CONFIG_MTD_BLKDEVS=y CONFIG_MTD_BLOCK=y CONFIG_FTL=y CONFIG_NFTL=y CONFIG_NFTL_RW=y CONFIG_INFTL=y CONFIG_RFD_FTL=y CONFIG_SSFDC=y CONFIG_MTD_OOPS=y # # RAM/ROM/Flash chip drivers # CONFIG_MTD_CFI=y CONFIG_MTD_JEDECPROBE=y CONFIG_MTD_GEN_PROBE=y CONFIG_MTD_CFI_ADV_OPTIONS=y CONFIG_MTD_CFI_NOSWAP=y # CONFIG_MTD_CFI_BE_BYTE_SWAP is not set # CONFIG_MTD_CFI_LE_BYTE_SWAP is not set CONFIG_MTD_CFI_GEOMETRY=y CONFIG_MTD_MAP_BANK_WIDTH_1=y CONFIG_MTD_MAP_BANK_WIDTH_2=y CONFIG_MTD_MAP_BANK_WIDTH_4=y CONFIG_MTD_MAP_BANK_WIDTH_8=y CONFIG_MTD_MAP_BANK_WIDTH_16=y CONFIG_MTD_MAP_BANK_WIDTH_32=y CONFIG_MTD_CFI_I1=y CONFIG_MTD_CFI_I2=y CONFIG_MTD_CFI_I4=y CONFIG_MTD_CFI_I8=y CONFIG_MTD_OTP=y CONFIG_MTD_CFI_INTELEXT=y CONFIG_MTD_CFI_AMDSTD=y CONFIG_MTD_CFI_STAA=y CONFIG_MTD_CFI_UTIL=y CONFIG_MTD_RAM=y CONFIG_MTD_ROM=y CONFIG_MTD_ABSENT=y # # Mapping drivers for chip access # CONFIG_MTD_COMPLEX_MAPPINGS=y CONFIG_MTD_PHYSMAP=y CONFIG_MTD_PHYSMAP_START=0x8000000 CONFIG_MTD_PHYSMAP_LEN=0 CONFIG_MTD_PHYSMAP_BANKWIDTH=2 CONFIG_MTD_SC520CDP=y CONFIG_MTD_NETSC520=y CONFIG_MTD_TS5500=y CONFIG_MTD_SBC_GXX=y CONFIG_MTD_SCx200_DOCFLASH=y CONFIG_MTD_AMD76XROM=y CONFIG_MTD_ICHXROM=y CONFIG_MTD_ESB2ROM=y CONFIG_MTD_CK804XROM=y CONFIG_MTD_SCB2_FLASH=y CONFIG_MTD_NETtel=y CONFIG_MTD_DILNETPC=y CONFIG_MTD_DILNETPC_BOOTSIZE=0x80000 CONFIG_MTD_L440GX=y CONFIG_MTD_PCI=y CONFIG_MTD_INTEL_VR_NOR=y CONFIG_MTD_PLATRAM=y # # Self-contained MTD device drivers # CONFIG_MTD_PMC551=y CONFIG_MTD_PMC551_BUGFIX=y CONFIG_MTD_PMC551_DEBUG=y CONFIG_MTD_DATAFLASH=y CONFIG_MTD_DATAFLASH_WRITE_VERIFY=y CONFIG_MTD_DATAFLASH_OTP=y CONFIG_MTD_M25P80=y CONFIG_M25PXX_USE_FAST_READ=y CONFIG_MTD_SLRAM=y CONFIG_MTD_PHRAM=y CONFIG_MTD_MTDRAM=y CONFIG_MTDRAM_TOTAL_SIZE=4096 CONFIG_MTDRAM_ERASE_SIZE=128 CONFIG_MTDRAM_ABS_POS=0 CONFIG_MTD_BLOCK2MTD=y # # Disk-On-Chip Device Drivers # CONFIG_MTD_DOC2000=y CONFIG_MTD_DOC2001=y CONFIG_MTD_DOC2001PLUS=y CONFIG_MTD_DOCPROBE=y CONFIG_MTD_DOCECC=y CONFIG_MTD_DOCPROBE_ADVANCED=y CONFIG_MTD_DOCPROBE_ADDRESS=0x0000 CONFIG_MTD_DOCPROBE_HIGH=y CONFIG_MTD_DOCPROBE_55AA=y CONFIG_MTD_NAND=y CONFIG_MTD_NAND_VERIFY_WRITE=y CONFIG_MTD_NAND_ECC_SMC=y CONFIG_MTD_NAND_MUSEUM_IDS=y CONFIG_MTD_NAND_IDS=y CONFIG_MTD_NAND_DISKONCHIP=y CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 CONFIG_MTD_NAND_DISKONCHIP_PROBE_HIGH=y CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE=y CONFIG_MTD_NAND_CAFE=y CONFIG_MTD_NAND_CS553X=y CONFIG_MTD_NAND_NANDSIM=y CONFIG_MTD_NAND_PLATFORM=y CONFIG_MTD_ALAUDA=y CONFIG_MTD_ONENAND=y CONFIG_MTD_ONENAND_VERIFY_WRITE=y CONFIG_MTD_ONENAND_OTP=y CONFIG_MTD_ONENAND_2X_PROGRAM=y CONFIG_MTD_ONENAND_SIM=y # # UBI - Unsorted block images # CONFIG_MTD_UBI=y CONFIG_MTD_UBI_WL_THRESHOLD=4096 CONFIG_MTD_UBI_BEB_RESERVE=1 CONFIG_MTD_UBI_GLUEBI=y # # UBI debugging options # CONFIG_MTD_UBI_DEBUG=y CONFIG_MTD_UBI_DEBUG_MSG=y CONFIG_MTD_UBI_DEBUG_PARANOID=y CONFIG_MTD_UBI_DEBUG_DISABLE_BGT=y CONFIG_MTD_UBI_DEBUG_USERSPACE_IO=y CONFIG_MTD_UBI_DEBUG_EMULATE_BITFLIPS=y CONFIG_MTD_UBI_DEBUG_EMULATE_WRITE_FAILURES=y CONFIG_MTD_UBI_DEBUG_EMULATE_ERASE_FAILURES=y # # Additional UBI debugging messages # CONFIG_MTD_UBI_DEBUG_MSG_BLD=y CONFIG_MTD_UBI_DEBUG_MSG_EBA=y CONFIG_MTD_UBI_DEBUG_MSG_WL=y CONFIG_MTD_UBI_DEBUG_MSG_IO=y CONFIG_PARPORT=y CONFIG_PARPORT_PC=y CONFIG_PARPORT_SERIAL=y CONFIG_PARPORT_PC_FIFO=y CONFIG_PARPORT_PC_SUPERIO=y CONFIG_PARPORT_PC_PCMCIA=y # CONFIG_PARPORT_GSC is not set CONFIG_PARPORT_AX88796=y CONFIG_PARPORT_1284=y CONFIG_PARPORT_NOT_PC=y CONFIG_PNP=y CONFIG_PNP_DEBUG_MESSAGES=y # # Protocols # CONFIG_ISAPNP=y CONFIG_PNPBIOS=y CONFIG_PNPBIOS_PROC_FS=y CONFIG_PNPACPI=y CONFIG_BLK_DEV=y CONFIG_BLK_DEV_FD=y CONFIG_BLK_DEV_XD=y CONFIG_PARIDE=y # # Parallel IDE high-level drivers # CONFIG_PARIDE_PD=y CONFIG_PARIDE_PCD=y CONFIG_PARIDE_PF=y CONFIG_PARIDE_PT=y CONFIG_PARIDE_PG=y # # Parallel IDE protocol modules # CONFIG_PARIDE_ATEN=y CONFIG_PARIDE_BPCK=y CONFIG_PARIDE_BPCK6=y CONFIG_PARIDE_COMM=y CONFIG_PARIDE_DSTR=y CONFIG_PARIDE_FIT2=y CONFIG_PARIDE_FIT3=y CONFIG_PARIDE_EPAT=y CONFIG_PARIDE_EPATC8=y CONFIG_PARIDE_EPIA=y CONFIG_PARIDE_FRIQ=y CONFIG_PARIDE_FRPW=y CONFIG_PARIDE_KBIC=y CONFIG_PARIDE_KTTI=y CONFIG_PARIDE_ON20=y CONFIG_PARIDE_ON26=y CONFIG_BLK_CPQ_DA=y CONFIG_BLK_CPQ_CISS_DA=y CONFIG_CISS_SCSI_TAPE=y CONFIG_BLK_DEV_DAC960=y CONFIG_BLK_DEV_UMEM=y # CONFIG_BLK_DEV_COW_COMMON is not set CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_CRYPTOLOOP=y CONFIG_BLK_DEV_NBD=y CONFIG_BLK_DEV_SX8=y CONFIG_BLK_DEV_UB=y CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=4096 CONFIG_BLK_DEV_XIP=y CONFIG_CDROM_PKTCDVD=y CONFIG_CDROM_PKTCDVD_BUFFERS=8 CONFIG_CDROM_PKTCDVD_WCACHE=y CONFIG_ATA_OVER_ETH=y CONFIG_VIRTIO_BLK=y CONFIG_BLK_DEV_HD=y CONFIG_MISC_DEVICES=y CONFIG_IBM_ASM=y CONFIG_PHANTOM=y CONFIG_EEPROM_93CX6=y CONFIG_SGI_IOC4=y CONFIG_TIFM_CORE=y CONFIG_TIFM_7XX1=y CONFIG_ICS932S401=y CONFIG_ENCLOSURE_SERVICES=y CONFIG_HP_ILO=y CONFIG_C2PORT=y CONFIG_C2PORT_DURAMAR_2150=y CONFIG_HAVE_IDE=y CONFIG_IDE=y # # Please see Documentation/ide/ide.txt for help/info on IDE drives # CONFIG_IDE_TIMINGS=y CONFIG_IDE_ATAPI=y CONFIG_IDE_LEGACY=y CONFIG_BLK_DEV_IDE_SATA=y CONFIG_IDE_GD=y CONFIG_IDE_GD_ATA=y CONFIG_IDE_GD_ATAPI=y CONFIG_BLK_DEV_IDECS=y CONFIG_BLK_DEV_DELKIN=y CONFIG_BLK_DEV_IDECD=y CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y CONFIG_BLK_DEV_IDETAPE=y CONFIG_BLK_DEV_IDESCSI=y CONFIG_BLK_DEV_IDEACPI=y CONFIG_IDE_TASK_IOCTL=y CONFIG_IDE_PROC_FS=y # # IDE chipset support/bugfixes # CONFIG_IDE_GENERIC=y CONFIG_BLK_DEV_PLATFORM=y CONFIG_BLK_DEV_CMD640=y CONFIG_BLK_DEV_CMD640_ENHANCED=y CONFIG_BLK_DEV_IDEPNP=y CONFIG_BLK_DEV_IDEDMA_SFF=y # # PCI IDE chipsets support # CONFIG_BLK_DEV_IDEPCI=y CONFIG_IDEPCI_PCIBUS_ORDER=y CONFIG_BLK_DEV_OFFBOARD=y CONFIG_BLK_DEV_GENERIC=y CONFIG_BLK_DEV_OPTI621=y CONFIG_BLK_DEV_RZ1000=y CONFIG_BLK_DEV_IDEDMA_PCI=y CONFIG_BLK_DEV_AEC62XX=y CONFIG_BLK_DEV_ALI15X3=y CONFIG_BLK_DEV_AMD74XX=y CONFIG_BLK_DEV_ATIIXP=y CONFIG_BLK_DEV_CMD64X=y CONFIG_BLK_DEV_TRIFLEX=y CONFIG_BLK_DEV_CS5520=y CONFIG_BLK_DEV_CS5530=y CONFIG_BLK_DEV_CS5535=y CONFIG_BLK_DEV_HPT366=y CONFIG_BLK_DEV_JMICRON=y CONFIG_BLK_DEV_SC1200=y CONFIG_BLK_DEV_PIIX=y CONFIG_BLK_DEV_IT8213=y CONFIG_BLK_DEV_IT821X=y CONFIG_BLK_DEV_NS87415=y CONFIG_BLK_DEV_PDC202XX_OLD=y CONFIG_BLK_DEV_PDC202XX_NEW=y CONFIG_BLK_DEV_SVWKS=y CONFIG_BLK_DEV_SIIMAGE=y CONFIG_BLK_DEV_SIS5513=y CONFIG_BLK_DEV_SLC90E66=y CONFIG_BLK_DEV_TRM290=y CONFIG_BLK_DEV_VIA82CXXX=y CONFIG_BLK_DEV_TC86C001=y # # Other IDE chipsets support # # # Note: most of these also require special kernel boot parameters # CONFIG_BLK_DEV_4DRIVES=y CONFIG_BLK_DEV_ALI14XX=y CONFIG_BLK_DEV_DTC2278=y CONFIG_BLK_DEV_HT6560B=y CONFIG_BLK_DEV_QD65XX=y CONFIG_BLK_DEV_UMC8672=y CONFIG_BLK_DEV_IDEDMA=y # # SCSI device support # CONFIG_RAID_ATTRS=y CONFIG_SCSI=y CONFIG_SCSI_DMA=y CONFIG_SCSI_TGT=y CONFIG_SCSI_NETLINK=y CONFIG_SCSI_PROC_FS=y # # SCSI support type (disk, tape, CD-ROM) # CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=y CONFIG_CHR_DEV_OSST=y CONFIG_BLK_DEV_SR=y CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_CHR_DEV_SG=y CONFIG_CHR_DEV_SCH=y CONFIG_SCSI_ENCLOSURE=y # # Some SCSI devices (e.g. CD jukebox) support multiple LUNs # CONFIG_SCSI_MULTI_LUN=y CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_LOGGING=y CONFIG_SCSI_SCAN_ASYNC=y CONFIG_SCSI_WAIT_SCAN=m # # SCSI Transports # CONFIG_SCSI_SPI_ATTRS=y CONFIG_SCSI_FC_ATTRS=y CONFIG_SCSI_FC_TGT_ATTRS=y CONFIG_SCSI_ISCSI_ATTRS=y CONFIG_SCSI_SAS_ATTRS=y CONFIG_SCSI_SAS_LIBSAS=y CONFIG_SCSI_SAS_ATA=y CONFIG_SCSI_SAS_HOST_SMP=y CONFIG_SCSI_SAS_LIBSAS_DEBUG=y CONFIG_SCSI_SRP_ATTRS=y CONFIG_SCSI_SRP_TGT_ATTRS=y CONFIG_SCSI_LOWLEVEL=y CONFIG_ISCSI_TCP=y CONFIG_BLK_DEV_3W_XXXX_RAID=y CONFIG_SCSI_3W_9XXX=y CONFIG_SCSI_7000FASST=y CONFIG_SCSI_ACARD=y CONFIG_SCSI_AHA152X=y CONFIG_SCSI_AHA1542=y CONFIG_SCSI_AHA1740=y CONFIG_SCSI_AACRAID=y CONFIG_SCSI_AIC7XXX=y CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 CONFIG_AIC7XXX_RESET_DELAY_MS=5000 CONFIG_AIC7XXX_DEBUG_ENABLE=y CONFIG_AIC7XXX_DEBUG_MASK=0 CONFIG_AIC7XXX_REG_PRETTY_PRINT=y CONFIG_SCSI_AIC7XXX_OLD=y CONFIG_SCSI_AIC79XX=y CONFIG_AIC79XX_CMDS_PER_DEVICE=32 CONFIG_AIC79XX_RESET_DELAY_MS=5000 CONFIG_AIC79XX_DEBUG_ENABLE=y CONFIG_AIC79XX_DEBUG_MASK=0 CONFIG_AIC79XX_REG_PRETTY_PRINT=y CONFIG_SCSI_AIC94XX=y CONFIG_AIC94XX_DEBUG=y CONFIG_SCSI_DPT_I2O=y CONFIG_SCSI_ADVANSYS=y CONFIG_SCSI_IN2000=y CONFIG_SCSI_ARCMSR=y CONFIG_SCSI_ARCMSR_AER=y CONFIG_MEGARAID_NEWGEN=y CONFIG_MEGARAID_MM=y CONFIG_MEGARAID_MAILBOX=y CONFIG_MEGARAID_LEGACY=y CONFIG_MEGARAID_SAS=y CONFIG_SCSI_HPTIOP=y CONFIG_SCSI_BUSLOGIC=y CONFIG_SCSI_FLASHPOINT=y CONFIG_SCSI_DMX3191D=y CONFIG_SCSI_DTC3280=y CONFIG_SCSI_EATA=y CONFIG_SCSI_EATA_TAGGED_QUEUE=y CONFIG_SCSI_EATA_LINKED_COMMANDS=y CONFIG_SCSI_EATA_MAX_TAGS=16 CONFIG_SCSI_FUTURE_DOMAIN=y CONFIG_SCSI_FD_MCS=y CONFIG_SCSI_GDTH=y CONFIG_SCSI_GENERIC_NCR5380=y CONFIG_SCSI_GENERIC_NCR5380_MMIO=y CONFIG_SCSI_GENERIC_NCR53C400=y CONFIG_SCSI_IBMMCA=y CONFIG_IBMMCA_SCSI_ORDER_STANDARD=y CONFIG_IBMMCA_SCSI_DEV_RESET=y CONFIG_SCSI_IPS=y CONFIG_SCSI_INITIO=y CONFIG_SCSI_INIA100=y CONFIG_SCSI_PPA=y CONFIG_SCSI_IMM=y CONFIG_SCSI_IZIP_EPP16=y CONFIG_SCSI_IZIP_SLOW_CTR=y CONFIG_SCSI_MVSAS=y CONFIG_SCSI_NCR53C406A=y CONFIG_SCSI_NCR_D700=y CONFIG_SCSI_STEX=y CONFIG_SCSI_SYM53C8XX_2=y CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 CONFIG_SCSI_SYM53C8XX_MMIO=y CONFIG_SCSI_IPR=y CONFIG_SCSI_IPR_TRACE=y CONFIG_SCSI_IPR_DUMP=y CONFIG_SCSI_NCR_Q720=y CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 CONFIG_SCSI_NCR53C8XX_SYNC=20 CONFIG_SCSI_PAS16=y CONFIG_SCSI_QLOGIC_FAS=y CONFIG_SCSI_QLOGIC_1280=y CONFIG_SCSI_QLA_FC=y CONFIG_SCSI_QLA_ISCSI=y CONFIG_SCSI_LPFC=y CONFIG_SCSI_SIM710=y CONFIG_SCSI_SYM53C416=y CONFIG_SCSI_DC395x=y CONFIG_SCSI_DC390T=y CONFIG_SCSI_T128=y CONFIG_SCSI_U14_34F=y CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y CONFIG_SCSI_U14_34F_MAX_TAGS=8 CONFIG_SCSI_ULTRASTOR=y CONFIG_SCSI_NSP32=y CONFIG_SCSI_DEBUG=y CONFIG_SCSI_SRP=y CONFIG_SCSI_LOWLEVEL_PCMCIA=y CONFIG_PCMCIA_AHA152X=m CONFIG_PCMCIA_FDOMAIN=m CONFIG_PCMCIA_NINJA_SCSI=m CONFIG_PCMCIA_QLOGIC=m CONFIG_PCMCIA_SYM53C500=m CONFIG_SCSI_DH=y CONFIG_SCSI_DH_RDAC=y CONFIG_SCSI_DH_HP_SW=y CONFIG_SCSI_DH_EMC=y CONFIG_SCSI_DH_ALUA=y CONFIG_SCSI_OSD_INITIATOR=y CONFIG_SCSI_OSD_ULD=y CONFIG_SCSI_OSD_DEBUG=y CONFIG_ATA=y # CONFIG_ATA_NONSTANDARD is not set CONFIG_ATA_ACPI=y CONFIG_SATA_PMP=y CONFIG_SATA_AHCI=y CONFIG_SATA_SIL24=y CONFIG_ATA_SFF=y CONFIG_SATA_SVW=y CONFIG_ATA_PIIX=y CONFIG_SATA_MV=y CONFIG_SATA_NV=y CONFIG_PDC_ADMA=y CONFIG_SATA_QSTOR=y CONFIG_SATA_PROMISE=y CONFIG_SATA_SX4=y CONFIG_SATA_SIL=y CONFIG_SATA_SIS=y CONFIG_SATA_ULI=y CONFIG_SATA_VIA=y CONFIG_SATA_VITESSE=y CONFIG_SATA_INIC162X=y CONFIG_PATA_ACPI=y CONFIG_PATA_ALI=y CONFIG_PATA_AMD=y CONFIG_PATA_ARTOP=y CONFIG_PATA_ATIIXP=y CONFIG_PATA_CMD640_PCI=y CONFIG_PATA_CMD64X=y CONFIG_PATA_CS5520=y CONFIG_PATA_CS5530=y CONFIG_PATA_CS5535=y CONFIG_PATA_CS5536=y CONFIG_PATA_CYPRESS=y CONFIG_PATA_EFAR=y CONFIG_ATA_GENERIC=y CONFIG_PATA_HPT366=y CONFIG_PATA_HPT37X=y CONFIG_PATA_HPT3X2N=y CONFIG_PATA_HPT3X3=y CONFIG_PATA_HPT3X3_DMA=y CONFIG_PATA_ISAPNP=y CONFIG_PATA_IT821X=y CONFIG_PATA_IT8213=y CONFIG_PATA_JMICRON=y CONFIG_PATA_LEGACY=y CONFIG_PATA_TRIFLEX=y CONFIG_PATA_MARVELL=y CONFIG_PATA_MPIIX=y CONFIG_PATA_OLDPIIX=y CONFIG_PATA_NETCELL=y CONFIG_PATA_NINJA32=y CONFIG_PATA_NS87410=y CONFIG_PATA_NS87415=y CONFIG_PATA_OPTI=y CONFIG_PATA_OPTIDMA=y CONFIG_PATA_PCMCIA=y CONFIG_PATA_PDC_OLD=y CONFIG_PATA_QDI=y CONFIG_PATA_RADISYS=y CONFIG_PATA_RZ1000=y CONFIG_PATA_SC1200=y CONFIG_PATA_SERVERWORKS=y CONFIG_PATA_PDC2027X=y CONFIG_PATA_SIL680=y CONFIG_PATA_SIS=y CONFIG_PATA_VIA=y CONFIG_PATA_WINBOND=y CONFIG_PATA_WINBOND_VLB=y CONFIG_PATA_PLATFORM=y CONFIG_PATA_SCH=y CONFIG_MD=y CONFIG_BLK_DEV_MD=y CONFIG_MD_AUTODETECT=y CONFIG_MD_LINEAR=y CONFIG_MD_RAID0=y CONFIG_MD_RAID1=y CONFIG_MD_RAID10=y CONFIG_MD_RAID456=y CONFIG_MD_RAID5_RESHAPE=y CONFIG_MD_MULTIPATH=y CONFIG_MD_FAULTY=y CONFIG_BLK_DEV_DM=y CONFIG_DM_DEBUG=y CONFIG_DM_CRYPT=y CONFIG_DM_SNAPSHOT=y CONFIG_DM_MIRROR=y CONFIG_DM_ZERO=y CONFIG_DM_MULTIPATH=y CONFIG_DM_DELAY=y CONFIG_DM_UEVENT=y CONFIG_FUSION=y CONFIG_FUSION_SPI=y CONFIG_FUSION_FC=y CONFIG_FUSION_SAS=y CONFIG_FUSION_MAX_SGE=128 CONFIG_FUSION_CTL=y CONFIG_FUSION_LAN=y CONFIG_FUSION_LOGGING=y # # IEEE 1394 (FireWire) support # # # Enable only one of the two stacks, unless you know what you are doing # CONFIG_FIREWIRE=y CONFIG_FIREWIRE_OHCI=y CONFIG_FIREWIRE_OHCI_DEBUG=y CONFIG_FIREWIRE_SBP2=y CONFIG_IEEE1394=y CONFIG_IEEE1394_OHCI1394=y CONFIG_IEEE1394_PCILYNX=y CONFIG_IEEE1394_SBP2=y CONFIG_IEEE1394_SBP2_PHYS_DMA=y CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y CONFIG_IEEE1394_ETH1394=y CONFIG_IEEE1394_RAWIO=y CONFIG_IEEE1394_VIDEO1394=y CONFIG_IEEE1394_DV1394=y CONFIG_IEEE1394_VERBOSEDEBUG=y CONFIG_I2O=y CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y CONFIG_I2O_EXT_ADAPTEC=y CONFIG_I2O_CONFIG=y CONFIG_I2O_CONFIG_OLD_IOCTL=y CONFIG_I2O_BUS=y CONFIG_I2O_BLOCK=y CONFIG_I2O_SCSI=y CONFIG_I2O_PROC=y CONFIG_MACINTOSH_DRIVERS=y CONFIG_MAC_EMUMOUSEBTN=y CONFIG_NETDEVICES=y CONFIG_IFB=y CONFIG_DUMMY=y CONFIG_BONDING=y CONFIG_MACVLAN=y CONFIG_EQUALIZER=y CONFIG_TUN=y CONFIG_VETH=y CONFIG_NET_SB1000=y CONFIG_ARCNET=y CONFIG_ARCNET_1201=y CONFIG_ARCNET_1051=y CONFIG_ARCNET_RAW=y CONFIG_ARCNET_CAP=y CONFIG_ARCNET_COM90xx=y CONFIG_ARCNET_COM90xxIO=y CONFIG_ARCNET_RIM_I=y CONFIG_ARCNET_COM20020=y CONFIG_ARCNET_COM20020_ISA=y CONFIG_ARCNET_COM20020_PCI=y CONFIG_PHYLIB=y # # MII PHY device drivers # CONFIG_MARVELL_PHY=y CONFIG_DAVICOM_PHY=y CONFIG_QSEMI_PHY=y CONFIG_LXT_PHY=y CONFIG_CICADA_PHY=y CONFIG_VITESSE_PHY=y CONFIG_SMSC_PHY=y CONFIG_BROADCOM_PHY=y CONFIG_ICPLUS_PHY=y CONFIG_REALTEK_PHY=y CONFIG_NATIONAL_PHY=y CONFIG_STE10XP=y CONFIG_FIXED_PHY=y CONFIG_MDIO_BITBANG=y CONFIG_MDIO_GPIO=y CONFIG_NET_ETHERNET=y CONFIG_MII=y CONFIG_HAPPYMEAL=y CONFIG_SUNGEM=y CONFIG_CASSINI=y CONFIG_NET_VENDOR_3COM=y CONFIG_EL1=y CONFIG_EL2=y CONFIG_ELPLUS=y CONFIG_EL16=y CONFIG_EL3=y CONFIG_3C515=y CONFIG_ELMC=y CONFIG_ELMC_II=y CONFIG_VORTEX=y CONFIG_TYPHOON=y CONFIG_LANCE=y CONFIG_NET_VENDOR_SMC=y CONFIG_WD80x3=y CONFIG_ULTRAMCA=y CONFIG_ULTRA=y CONFIG_ULTRA32=y CONFIG_SMC9194=y CONFIG_ENC28J60=y CONFIG_ENC28J60_WRITEVERIFY=y CONFIG_NET_VENDOR_RACAL=y CONFIG_NI52=y CONFIG_NI65=y CONFIG_NET_TULIP=y CONFIG_DE2104X=y CONFIG_TULIP=y CONFIG_TULIP_MWI=y CONFIG_TULIP_MMIO=y CONFIG_TULIP_NAPI=y CONFIG_TULIP_NAPI_HW_MITIGATION=y CONFIG_DE4X5=y CONFIG_WINBOND_840=y CONFIG_DM9102=y CONFIG_ULI526X=y CONFIG_PCMCIA_XIRCOM=y CONFIG_AT1700=y CONFIG_DEPCA=y CONFIG_HP100=y CONFIG_NET_ISA=y CONFIG_E2100=y CONFIG_EWRK3=y CONFIG_EEXPRESS=y CONFIG_EEXPRESS_PRO=y CONFIG_HPLAN_PLUS=y CONFIG_HPLAN=y CONFIG_LP486E=y CONFIG_ETH16I=y CONFIG_NE2000=y CONFIG_ZNET=y CONFIG_SEEQ8005=y CONFIG_NE2_MCA=y CONFIG_IBMLANA=y # CONFIG_IBM_NEW_EMAC_ZMII is not set # CONFIG_IBM_NEW_EMAC_RGMII is not set # CONFIG_IBM_NEW_EMAC_TAH is not set # CONFIG_IBM_NEW_EMAC_EMAC4 is not set # CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set CONFIG_NET_PCI=y CONFIG_PCNET32=y CONFIG_AMD8111_ETH=y CONFIG_ADAPTEC_STARFIRE=y CONFIG_AC3200=y CONFIG_APRICOT=y CONFIG_B44=y CONFIG_B44_PCI_AUTOSELECT=y CONFIG_B44_PCICORE_AUTOSELECT=y CONFIG_B44_PCI=y CONFIG_FORCEDETH=y CONFIG_FORCEDETH_NAPI=y CONFIG_CS89x0=y CONFIG_E100=y CONFIG_LNE390=y CONFIG_FEALNX=y CONFIG_NATSEMI=y CONFIG_NE2K_PCI=y CONFIG_NE3210=y CONFIG_ES3210=y CONFIG_8139CP=y CONFIG_8139TOO=y CONFIG_8139TOO_PIO=y CONFIG_8139TOO_TUNE_TWISTER=y CONFIG_8139TOO_8129=y CONFIG_8139_OLD_RX_RESET=y CONFIG_R6040=y CONFIG_SIS900=y CONFIG_EPIC100=y CONFIG_SUNDANCE=y CONFIG_SUNDANCE_MMIO=y CONFIG_TLAN=y CONFIG_VIA_RHINE=y CONFIG_VIA_RHINE_MMIO=y CONFIG_SC92031=y CONFIG_NET_POCKET=y CONFIG_ATP=y CONFIG_DE600=y CONFIG_DE620=y CONFIG_ATL2=y CONFIG_NETDEV_1000=y CONFIG_ACENIC=y CONFIG_ACENIC_OMIT_TIGON_I=y CONFIG_DL2K=y CONFIG_E1000=y CONFIG_E1000E=y CONFIG_IP1000=y CONFIG_IGB=y CONFIG_IGB_LRO=y CONFIG_IGB_DCA=y CONFIG_NS83820=y CONFIG_HAMACHI=y CONFIG_YELLOWFIN=y CONFIG_R8169=y CONFIG_R8169_VLAN=y CONFIG_SIS190=y CONFIG_SKGE=y CONFIG_SKGE_DEBUG=y CONFIG_SKY2=y CONFIG_SKY2_DEBUG=y CONFIG_VIA_VELOCITY=y CONFIG_TIGON3=y CONFIG_BNX2=y CONFIG_QLA3XXX=y CONFIG_ATL1=y CONFIG_ATL1E=y CONFIG_JME=y CONFIG_NETDEV_10000=y CONFIG_CHELSIO_T1=y CONFIG_CHELSIO_T1_1G=y CONFIG_CHELSIO_T3=y CONFIG_ENIC=y CONFIG_IXGBE=y CONFIG_IXGBE_DCA=y CONFIG_IXGBE_DCB=y CONFIG_IXGB=y CONFIG_S2IO=y CONFIG_MYRI10GE=y CONFIG_MYRI10GE_DCA=y CONFIG_NETXEN_NIC=y CONFIG_NIU=y CONFIG_MLX4_EN=y CONFIG_MLX4_CORE=y CONFIG_MLX4_DEBUG=y CONFIG_TEHUTI=y CONFIG_BNX2X=y CONFIG_QLGE=y CONFIG_SFC=y CONFIG_SFC_MTD=y CONFIG_TR=y CONFIG_IBMTR=y CONFIG_IBMOL=y CONFIG_IBMLS=y CONFIG_3C359=y CONFIG_TMS380TR=y CONFIG_TMSPCI=y CONFIG_SKISA=y CONFIG_PROTEON=y CONFIG_ABYSS=y CONFIG_MADGEMC=y CONFIG_SMCTR=y # # Wireless LAN # CONFIG_WLAN_PRE80211=y CONFIG_STRIP=y CONFIG_ARLAN=y CONFIG_WAVELAN=y CONFIG_PCMCIA_WAVELAN=y CONFIG_PCMCIA_NETWAVE=y CONFIG_WLAN_80211=y CONFIG_PCMCIA_RAYCS=y CONFIG_LIBERTAS=y CONFIG_LIBERTAS_USB=y CONFIG_LIBERTAS_CS=y CONFIG_LIBERTAS_SDIO=y CONFIG_LIBERTAS_DEBUG=y CONFIG_LIBERTAS_THINFIRM=y CONFIG_LIBERTAS_THINFIRM_USB=y CONFIG_AIRO=y CONFIG_HERMES=y CONFIG_HERMES_CACHE_FW_ON_INIT=y CONFIG_PLX_HERMES=y CONFIG_TMD_HERMES=y CONFIG_NORTEL_HERMES=y CONFIG_PCI_HERMES=y CONFIG_PCMCIA_HERMES=y CONFIG_PCMCIA_SPECTRUM=y CONFIG_ATMEL=y CONFIG_PCI_ATMEL=y CONFIG_PCMCIA_ATMEL=y CONFIG_AIRO_CS=y CONFIG_PCMCIA_WL3501=y CONFIG_PRISM54=y CONFIG_USB_ZD1201=y CONFIG_USB_NET_RNDIS_WLAN=y CONFIG_RTL8180=y CONFIG_RTL8187=y CONFIG_ADM8211=y CONFIG_MAC80211_HWSIM=y CONFIG_P54_COMMON=y CONFIG_P54_USB=y CONFIG_P54_PCI=y CONFIG_ATH5K=y CONFIG_ATH5K_DEBUG=y CONFIG_ATH9K=y CONFIG_IPW2100=y CONFIG_IPW2100_MONITOR=y CONFIG_IPW2100_DEBUG=y CONFIG_IPW2200=y CONFIG_IPW2200_MONITOR=y CONFIG_IPW2200_RADIOTAP=y CONFIG_IPW2200_PROMISCUOUS=y CONFIG_IPW2200_QOS=y CONFIG_IPW2200_DEBUG=y CONFIG_LIBIPW=y CONFIG_LIBIPW_DEBUG=y CONFIG_IWLWIFI=y CONFIG_IWLCORE=y CONFIG_IWLWIFI_LEDS=y CONFIG_IWLWIFI_RFKILL=y CONFIG_IWLWIFI_DEBUG=y CONFIG_IWLWIFI_DEBUGFS=y CONFIG_IWLAGN=y CONFIG_IWLAGN_SPECTRUM_MEASUREMENT=y CONFIG_IWLAGN_LEDS=y CONFIG_IWL4965=y CONFIG_IWL5000=y CONFIG_IWL3945=y CONFIG_IWL3945_RFKILL=y CONFIG_IWL3945_SPECTRUM_MEASUREMENT=y CONFIG_IWL3945_LEDS=y CONFIG_IWL3945_DEBUG=y CONFIG_HOSTAP=y CONFIG_HOSTAP_FIRMWARE=y CONFIG_HOSTAP_FIRMWARE_NVRAM=y CONFIG_HOSTAP_PLX=y CONFIG_HOSTAP_PCI=y CONFIG_HOSTAP_CS=y CONFIG_B43=y CONFIG_B43_PCI_AUTOSELECT=y CONFIG_B43_PCICORE_AUTOSELECT=y CONFIG_B43_PCMCIA=y CONFIG_B43_PIO=y CONFIG_B43_LEDS=y CONFIG_B43_RFKILL=y CONFIG_B43_DEBUG=y CONFIG_B43_FORCE_PIO=y CONFIG_B43LEGACY=y CONFIG_B43LEGACY_PCI_AUTOSELECT=y CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y CONFIG_B43LEGACY_LEDS=y CONFIG_B43LEGACY_RFKILL=y CONFIG_B43LEGACY_DEBUG=y CONFIG_B43LEGACY_DMA=y CONFIG_B43LEGACY_PIO=y CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y # CONFIG_B43LEGACY_DMA_MODE is not set # CONFIG_B43LEGACY_PIO_MODE is not set CONFIG_ZD1211RW=y CONFIG_ZD1211RW_DEBUG=y CONFIG_RT2X00=y CONFIG_RT2400PCI=y CONFIG_RT2500PCI=y CONFIG_RT61PCI=y CONFIG_RT2500USB=y CONFIG_RT73USB=y CONFIG_RT2X00_LIB_PCI=y CONFIG_RT2X00_LIB_USB=y CONFIG_RT2X00_LIB=y CONFIG_RT2X00_LIB_FIRMWARE=y CONFIG_RT2X00_LIB_CRYPTO=y CONFIG_RT2X00_LIB_RFKILL=y CONFIG_RT2X00_LIB_LEDS=y CONFIG_RT2X00_LIB_DEBUGFS=y CONFIG_RT2X00_DEBUG=y # # USB Network Adapters # CONFIG_USB_CATC=y CONFIG_USB_KAWETH=y CONFIG_USB_PEGASUS=y CONFIG_USB_RTL8150=y CONFIG_USB_USBNET=y CONFIG_USB_NET_AX8817X=y CONFIG_USB_NET_CDCETHER=y CONFIG_USB_NET_DM9601=y CONFIG_USB_NET_SMSC95XX=y CONFIG_USB_NET_GL620A=y CONFIG_USB_NET_NET1080=y CONFIG_USB_NET_PLUSB=y CONFIG_USB_NET_MCS7830=y CONFIG_USB_NET_RNDIS_HOST=y CONFIG_USB_NET_CDC_SUBSET=y CONFIG_USB_ALI_M5632=y CONFIG_USB_AN2720=y CONFIG_USB_BELKIN=y CONFIG_USB_ARMLINUX=y CONFIG_USB_EPSON2888=y CONFIG_USB_KC2190=y CONFIG_USB_NET_ZAURUS=y CONFIG_USB_HSO=y CONFIG_NET_PCMCIA=y CONFIG_PCMCIA_3C589=y CONFIG_PCMCIA_3C574=y CONFIG_PCMCIA_FMVJ18X=y CONFIG_PCMCIA_PCNET=y CONFIG_PCMCIA_NMCLAN=y CONFIG_PCMCIA_SMC91C92=y CONFIG_PCMCIA_XIRC2PS=y CONFIG_PCMCIA_AXNET=y CONFIG_ARCNET_COM20020_CS=y CONFIG_WAN=y CONFIG_HOSTESS_SV11=m CONFIG_COSA=m CONFIG_LANMEDIA=y CONFIG_SEALEVEL_4021=m CONFIG_HDLC=y CONFIG_HDLC_RAW=y CONFIG_HDLC_RAW_ETH=y CONFIG_HDLC_CISCO=y CONFIG_HDLC_FR=y CONFIG_HDLC_PPP=y CONFIG_HDLC_X25=y CONFIG_PCI200SYN=y CONFIG_WANXL=y CONFIG_PC300TOO=y CONFIG_N2=y CONFIG_C101=y CONFIG_FARSYNC=y CONFIG_DSCC4=m CONFIG_DSCC4_PCISYNC=y CONFIG_DSCC4_PCI_RST=y CONFIG_DLCI=y CONFIG_DLCI_MAX=8 CONFIG_SDLA=y CONFIG_WAN_ROUTER_DRIVERS=y CONFIG_CYCLADES_SYNC=y CONFIG_CYCLOMX_X25=y CONFIG_LAPBETHER=y CONFIG_X25_ASY=y CONFIG_SBNI=y CONFIG_SBNI_MULTILINE=y CONFIG_ATM_DRIVERS=y CONFIG_ATM_DUMMY=y CONFIG_ATM_TCP=y CONFIG_ATM_LANAI=y CONFIG_ATM_ENI=y CONFIG_ATM_ENI_DEBUG=y CONFIG_ATM_ENI_TUNE_BURST=y CONFIG_ATM_ENI_BURST_TX_16W=y CONFIG_ATM_ENI_BURST_TX_8W=y CONFIG_ATM_ENI_BURST_TX_4W=y CONFIG_ATM_ENI_BURST_TX_2W=y CONFIG_ATM_ENI_BURST_RX_16W=y CONFIG_ATM_ENI_BURST_RX_8W=y CONFIG_ATM_ENI_BURST_RX_4W=y CONFIG_ATM_ENI_BURST_RX_2W=y CONFIG_ATM_FIRESTREAM=y CONFIG_ATM_ZATM=y CONFIG_ATM_ZATM_DEBUG=y CONFIG_ATM_NICSTAR=y CONFIG_ATM_NICSTAR_USE_SUNI=y CONFIG_ATM_NICSTAR_USE_IDT77105=y CONFIG_ATM_IDT77252=y CONFIG_ATM_IDT77252_DEBUG=y CONFIG_ATM_IDT77252_RCV_ALL=y CONFIG_ATM_IDT77252_USE_SUNI=y CONFIG_ATM_AMBASSADOR=y CONFIG_ATM_AMBASSADOR_DEBUG=y CONFIG_ATM_HORIZON=y CONFIG_ATM_HORIZON_DEBUG=y CONFIG_ATM_IA=y CONFIG_ATM_IA_DEBUG=y CONFIG_ATM_FORE200E=y CONFIG_ATM_FORE200E_USE_TASKLET=y CONFIG_ATM_FORE200E_TX_RETRY=16 CONFIG_ATM_FORE200E_DEBUG=0 CONFIG_ATM_HE=y CONFIG_ATM_HE_USE_SUNI=y CONFIG_FDDI=y CONFIG_DEFXX=y CONFIG_DEFXX_MMIO=y CONFIG_SKFP=y CONFIG_HIPPI=y CONFIG_ROADRUNNER=y CONFIG_ROADRUNNER_LARGE_RINGS=y CONFIG_PLIP=y CONFIG_PPP=y CONFIG_PPP_MULTILINK=y CONFIG_PPP_FILTER=y CONFIG_PPP_ASYNC=y CONFIG_PPP_SYNC_TTY=y CONFIG_PPP_DEFLATE=y CONFIG_PPP_BSDCOMP=y CONFIG_PPP_MPPE=y CONFIG_PPPOE=y CONFIG_PPPOATM=y CONFIG_PPPOL2TP=y CONFIG_SLIP=y CONFIG_SLIP_COMPRESSED=y CONFIG_SLHC=y CONFIG_SLIP_SMART=y CONFIG_SLIP_MODE_SLIP6=y CONFIG_NET_FC=y CONFIG_NETCONSOLE=y CONFIG_NETCONSOLE_DYNAMIC=y CONFIG_NETPOLL=y CONFIG_NETPOLL_TRAP=y CONFIG_NET_POLL_CONTROLLER=y CONFIG_VIRTIO_NET=y CONFIG_ISDN=y CONFIG_MISDN=y CONFIG_MISDN_DSP=y CONFIG_MISDN_L1OIP=y # # mISDN hardware drivers # CONFIG_MISDN_HFCPCI=y CONFIG_MISDN_HFCMULTI=y CONFIG_ISDN_I4L=y CONFIG_ISDN_PPP=y CONFIG_ISDN_PPP_VJ=y CONFIG_ISDN_MPP=y CONFIG_IPPP_FILTER=y CONFIG_ISDN_PPP_BSDCOMP=y CONFIG_ISDN_AUDIO=y CONFIG_ISDN_TTY_FAX=y CONFIG_ISDN_X25=y # # ISDN feature submodules # CONFIG_ISDN_DIVERSION=y # # ISDN4Linux hardware drivers # # # Passive cards # CONFIG_ISDN_DRV_HISAX=y # # D-channel protocol features # CONFIG_HISAX_EURO=y CONFIG_DE_AOC=y CONFIG_HISAX_NO_SENDCOMPLETE=y CONFIG_HISAX_NO_LLC=y CONFIG_HISAX_NO_KEYPAD=y CONFIG_HISAX_1TR6=y CONFIG_HISAX_NI1=y CONFIG_HISAX_MAX_CARDS=8 # # HiSax supported cards # CONFIG_HISAX_16_0=y CONFIG_HISAX_16_3=y CONFIG_HISAX_TELESPCI=y CONFIG_HISAX_S0BOX=y CONFIG_HISAX_AVM_A1=y CONFIG_HISAX_FRITZPCI=y CONFIG_HISAX_AVM_A1_PCMCIA=y CONFIG_HISAX_ELSA=y CONFIG_HISAX_IX1MICROR2=y CONFIG_HISAX_DIEHLDIVA=y CONFIG_HISAX_ASUSCOM=y CONFIG_HISAX_TELEINT=y CONFIG_HISAX_HFCS=y CONFIG_HISAX_SEDLBAUER=y CONFIG_HISAX_SPORTSTER=y CONFIG_HISAX_MIC=y CONFIG_HISAX_NETJET=y CONFIG_HISAX_NETJET_U=y CONFIG_HISAX_NICCY=y CONFIG_HISAX_ISURF=y CONFIG_HISAX_HSTSAPHIR=y CONFIG_HISAX_BKM_A4T=y CONFIG_HISAX_SCT_QUADRO=y CONFIG_HISAX_GAZEL=y CONFIG_HISAX_HFC_PCI=y CONFIG_HISAX_W6692=y CONFIG_HISAX_HFC_SX=y CONFIG_HISAX_ENTERNOW_PCI=y CONFIG_HISAX_DEBUG=y # # HiSax PCMCIA card service modules # CONFIG_HISAX_SEDLBAUER_CS=y CONFIG_HISAX_ELSA_CS=y CONFIG_HISAX_AVM_A1_CS=y CONFIG_HISAX_TELES_CS=y # # HiSax sub driver modules # CONFIG_HISAX_ST5481=y CONFIG_HISAX_HFCUSB=y CONFIG_HISAX_HFC4S8S=y CONFIG_HISAX_FRITZ_PCIPNP=y CONFIG_HISAX_HDLC=y # # Active cards # CONFIG_ISDN_DRV_ICN=y CONFIG_ISDN_DRV_PCBIT=y CONFIG_ISDN_DRV_SC=y CONFIG_ISDN_DRV_ACT2000=y CONFIG_HYSDN=m CONFIG_HYSDN_CAPI=y CONFIG_ISDN_DRV_GIGASET=y CONFIG_GIGASET_BASE=y CONFIG_GIGASET_M105=y CONFIG_GIGASET_M101=y CONFIG_GIGASET_DEBUG=y CONFIG_GIGASET_UNDOCREQ=y CONFIG_ISDN_CAPI=y CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y CONFIG_CAPI_TRACE=y CONFIG_ISDN_CAPI_MIDDLEWARE=y CONFIG_ISDN_CAPI_CAPI20=y CONFIG_ISDN_CAPI_CAPIFS_BOOL=y CONFIG_ISDN_CAPI_CAPIFS=y CONFIG_ISDN_CAPI_CAPIDRV=y # # CAPI hardware drivers # CONFIG_CAPI_AVM=y CONFIG_ISDN_DRV_AVMB1_B1ISA=y CONFIG_ISDN_DRV_AVMB1_B1PCI=y CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y CONFIG_ISDN_DRV_AVMB1_T1ISA=y CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=y CONFIG_ISDN_DRV_AVMB1_AVM_CS=y CONFIG_ISDN_DRV_AVMB1_T1PCI=y CONFIG_ISDN_DRV_AVMB1_C4=y CONFIG_CAPI_EICON=y CONFIG_ISDN_DIVAS=y CONFIG_ISDN_DIVAS_BRIPCI=y CONFIG_ISDN_DIVAS_PRIPCI=y CONFIG_ISDN_DIVAS_DIVACAPI=y CONFIG_ISDN_DIVAS_USERIDI=y CONFIG_ISDN_DIVAS_MAINT=m CONFIG_PHONE=y CONFIG_PHONE_IXJ=y CONFIG_PHONE_IXJ_PCMCIA=y # # Input device support # CONFIG_INPUT=y CONFIG_INPUT_FF_MEMLESS=y CONFIG_INPUT_POLLDEV=y # # Userland interfaces # CONFIG_INPUT_MOUSEDEV=y CONFIG_INPUT_MOUSEDEV_PSAUX=y CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 CONFIG_INPUT_JOYDEV=y CONFIG_INPUT_EVDEV=y CONFIG_INPUT_EVBUG=y # # Input Device Drivers # CONFIG_INPUT_KEYBOARD=y CONFIG_KEYBOARD_ATKBD=y CONFIG_KEYBOARD_SUNKBD=y CONFIG_KEYBOARD_LKKBD=y CONFIG_KEYBOARD_XTKBD=y CONFIG_KEYBOARD_NEWTON=y CONFIG_KEYBOARD_STOWAWAY=y CONFIG_KEYBOARD_GPIO=y CONFIG_INPUT_MOUSE=y CONFIG_MOUSE_PS2=y CONFIG_MOUSE_PS2_ALPS=y CONFIG_MOUSE_PS2_LOGIPS2PP=y CONFIG_MOUSE_PS2_SYNAPTICS=y CONFIG_MOUSE_PS2_LIFEBOOK=y CONFIG_MOUSE_PS2_TRACKPOINT=y CONFIG_MOUSE_PS2_ELANTECH=y CONFIG_MOUSE_PS2_TOUCHKIT=y CONFIG_MOUSE_PS2_OLPC=y CONFIG_MOUSE_SERIAL=y CONFIG_MOUSE_APPLETOUCH=y CONFIG_MOUSE_BCM5974=y CONFIG_MOUSE_INPORT=y CONFIG_MOUSE_ATIXL=y CONFIG_MOUSE_LOGIBM=y CONFIG_MOUSE_PC110PAD=y CONFIG_MOUSE_VSXXXAA=y CONFIG_MOUSE_GPIO=y CONFIG_INPUT_JOYSTICK=y CONFIG_JOYSTICK_ANALOG=y CONFIG_JOYSTICK_A3D=y CONFIG_JOYSTICK_ADI=y CONFIG_JOYSTICK_COBRA=y CONFIG_JOYSTICK_GF2K=y CONFIG_JOYSTICK_GRIP=y CONFIG_JOYSTICK_GRIP_MP=y CONFIG_JOYSTICK_GUILLEMOT=y CONFIG_JOYSTICK_INTERACT=y CONFIG_JOYSTICK_SIDEWINDER=y CONFIG_JOYSTICK_TMDC=y CONFIG_JOYSTICK_IFORCE=y CONFIG_JOYSTICK_IFORCE_USB=y CONFIG_JOYSTICK_IFORCE_232=y CONFIG_JOYSTICK_WARRIOR=y CONFIG_JOYSTICK_MAGELLAN=y CONFIG_JOYSTICK_SPACEORB=y CONFIG_JOYSTICK_SPACEBALL=y CONFIG_JOYSTICK_STINGER=y CONFIG_JOYSTICK_TWIDJOY=y CONFIG_JOYSTICK_ZHENHUA=y CONFIG_JOYSTICK_DB9=y CONFIG_JOYSTICK_GAMECON=y CONFIG_JOYSTICK_TURBOGRAFX=y CONFIG_JOYSTICK_JOYDUMP=y CONFIG_JOYSTICK_XPAD=y CONFIG_JOYSTICK_XPAD_FF=y CONFIG_JOYSTICK_XPAD_LEDS=y CONFIG_INPUT_TABLET=y CONFIG_TABLET_USB_ACECAD=y CONFIG_TABLET_USB_AIPTEK=y CONFIG_TABLET_USB_GTCO=y CONFIG_TABLET_USB_KBTAB=y CONFIG_TABLET_USB_WACOM=y CONFIG_INPUT_TOUCHSCREEN=y CONFIG_TOUCHSCREEN_ADS7846=y CONFIG_TOUCHSCREEN_FUJITSU=y CONFIG_TOUCHSCREEN_GUNZE=y CONFIG_TOUCHSCREEN_ELO=y CONFIG_TOUCHSCREEN_MTOUCH=y CONFIG_TOUCHSCREEN_INEXIO=y CONFIG_TOUCHSCREEN_MK712=y CONFIG_TOUCHSCREEN_HTCPEN=y CONFIG_TOUCHSCREEN_PENMOUNT=y CONFIG_TOUCHSCREEN_TOUCHRIGHT=y CONFIG_TOUCHSCREEN_TOUCHWIN=y CONFIG_TOUCHSCREEN_UCB1400=y CONFIG_TOUCHSCREEN_WM97XX=y CONFIG_TOUCHSCREEN_WM9705=y CONFIG_TOUCHSCREEN_WM9712=y CONFIG_TOUCHSCREEN_WM9713=y CONFIG_TOUCHSCREEN_USB_COMPOSITE=y CONFIG_TOUCHSCREEN_USB_EGALAX=y CONFIG_TOUCHSCREEN_USB_PANJIT=y CONFIG_TOUCHSCREEN_USB_3M=y CONFIG_TOUCHSCREEN_USB_ITM=y CONFIG_TOUCHSCREEN_USB_ETURBO=y CONFIG_TOUCHSCREEN_USB_GUNZE=y CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y CONFIG_TOUCHSCREEN_USB_IRTOUCH=y CONFIG_TOUCHSCREEN_USB_IDEALTEK=y CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y CONFIG_TOUCHSCREEN_USB_GOTOP=y CONFIG_TOUCHSCREEN_TOUCHIT213=y CONFIG_INPUT_MISC=y CONFIG_INPUT_PCSPKR=y CONFIG_INPUT_APANEL=y CONFIG_INPUT_WISTRON_BTNS=y CONFIG_INPUT_ATLAS_BTNS=y CONFIG_INPUT_ATI_REMOTE=y CONFIG_INPUT_ATI_REMOTE2=y CONFIG_INPUT_KEYSPAN_REMOTE=y CONFIG_INPUT_POWERMATE=y CONFIG_INPUT_YEALINK=y CONFIG_INPUT_CM109=y CONFIG_INPUT_UINPUT=y # # Hardware I/O ports # CONFIG_SERIO=y CONFIG_SERIO_I8042=y CONFIG_SERIO_SERPORT=y CONFIG_SERIO_CT82C710=y CONFIG_SERIO_PARKBD=y CONFIG_SERIO_PCIPS2=y CONFIG_SERIO_LIBPS2=y CONFIG_SERIO_RAW=y CONFIG_GAMEPORT=y CONFIG_GAMEPORT_NS558=y CONFIG_GAMEPORT_L4=y CONFIG_GAMEPORT_EMU10K1=y CONFIG_GAMEPORT_FM801=y # # Character devices # CONFIG_VT=y CONFIG_CONSOLE_TRANSLATIONS=y CONFIG_VT_CONSOLE=y CONFIG_HW_CONSOLE=y CONFIG_VT_HW_CONSOLE_BINDING=y CONFIG_DEVKMEM=y CONFIG_SERIAL_NONSTANDARD=y CONFIG_COMPUTONE=y CONFIG_ROCKETPORT=y CONFIG_CYCLADES=y CONFIG_CYZ_INTR=y CONFIG_DIGIEPCA=y CONFIG_MOXA_INTELLIO=y CONFIG_MOXA_SMARTIO=y CONFIG_ISI=y CONFIG_SYNCLINK=y CONFIG_SYNCLINKMP=y CONFIG_SYNCLINK_GT=y CONFIG_N_HDLC=y CONFIG_RISCOM8=y CONFIG_SPECIALIX=y CONFIG_SX=y CONFIG_RIO=y CONFIG_RIO_OLDPCI=y CONFIG_STALDRV=y CONFIG_STALLION=y CONFIG_ISTALLION=y CONFIG_NOZOMI=y # # Serial drivers # CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y CONFIG_FIX_EARLYCON_MEM=y CONFIG_SERIAL_8250_PCI=y CONFIG_SERIAL_8250_PNP=y CONFIG_SERIAL_8250_CS=y CONFIG_SERIAL_8250_NR_UARTS=4 CONFIG_SERIAL_8250_RUNTIME_UARTS=4 CONFIG_SERIAL_8250_EXTENDED=y CONFIG_SERIAL_8250_MANY_PORTS=y CONFIG_SERIAL_8250_FOURPORT=y CONFIG_SERIAL_8250_ACCENT=y CONFIG_SERIAL_8250_BOCA=y CONFIG_SERIAL_8250_EXAR_ST16C554=y CONFIG_SERIAL_8250_HUB6=y CONFIG_SERIAL_8250_SHARE_IRQ=y CONFIG_SERIAL_8250_DETECT_IRQ=y CONFIG_SERIAL_8250_RSA=y CONFIG_SERIAL_8250_MCA=y # # Non-8250 serial port support # CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_CONSOLE_POLL=y CONFIG_SERIAL_JSM=y CONFIG_UNIX98_PTYS=y CONFIG_DEVPTS_MULTIPLE_INSTANCES=y CONFIG_LEGACY_PTYS=y CONFIG_LEGACY_PTY_COUNT=256 CONFIG_PRINTER=y CONFIG_LP_CONSOLE=y CONFIG_PPDEV=y CONFIG_HVC_DRIVER=y CONFIG_VIRTIO_CONSOLE=y CONFIG_IPMI_HANDLER=y CONFIG_IPMI_PANIC_EVENT=y CONFIG_IPMI_PANIC_STRING=y CONFIG_IPMI_DEVICE_INTERFACE=y CONFIG_IPMI_SI=y CONFIG_IPMI_WATCHDOG=y CONFIG_IPMI_POWEROFF=y CONFIG_HW_RANDOM=y CONFIG_HW_RANDOM_INTEL=y CONFIG_HW_RANDOM_AMD=y CONFIG_HW_RANDOM_GEODE=y CONFIG_HW_RANDOM_VIA=y CONFIG_HW_RANDOM_VIRTIO=y CONFIG_NVRAM=y CONFIG_DTLK=y CONFIG_R3964=y CONFIG_APPLICOM=y CONFIG_SONYPI=y # # PCMCIA character devices # CONFIG_SYNCLINK_CS=y CONFIG_CARDMAN_4000=y CONFIG_CARDMAN_4040=y CONFIG_IPWIRELESS=y CONFIG_MWAVE=y CONFIG_SCx200_GPIO=y CONFIG_PC8736x_GPIO=y CONFIG_NSC_GPIO=y CONFIG_CS5535_GPIO=y CONFIG_RAW_DRIVER=y CONFIG_MAX_RAW_DEVS=256 CONFIG_HPET=y CONFIG_HPET_MMAP=y CONFIG_HANGCHECK_TIMER=y CONFIG_TCG_TPM=y CONFIG_TCG_TIS=y CONFIG_TCG_NSC=y CONFIG_TCG_ATMEL=y CONFIG_TCG_INFINEON=y CONFIG_TELCLOCK=y CONFIG_DEVPORT=y CONFIG_I2C=y CONFIG_I2C_BOARDINFO=y CONFIG_I2C_CHARDEV=y CONFIG_I2C_HELPER_AUTO=y CONFIG_I2C_ALGOBIT=y CONFIG_I2C_ALGOPCA=y # # I2C Hardware Bus support # # # PC SMBus host controller drivers # CONFIG_I2C_ALI1535=y CONFIG_I2C_ALI1563=y CONFIG_I2C_ALI15X3=y CONFIG_I2C_AMD756=y CONFIG_I2C_AMD756_S4882=y CONFIG_I2C_AMD8111=y CONFIG_I2C_I801=y CONFIG_I2C_ISCH=y CONFIG_I2C_PIIX4=y CONFIG_I2C_NFORCE2=y CONFIG_I2C_NFORCE2_S4985=y CONFIG_I2C_SIS5595=y CONFIG_I2C_SIS630=y CONFIG_I2C_SIS96X=y CONFIG_I2C_VIA=y CONFIG_I2C_VIAPRO=y # # I2C system bus drivers (mostly embedded / system-on-chip) # CONFIG_I2C_GPIO=y CONFIG_I2C_OCORES=y CONFIG_I2C_SIMTEC=y # # External I2C/SMBus adapter drivers # CONFIG_I2C_PARPORT=y CONFIG_I2C_PARPORT_LIGHT=y CONFIG_I2C_TAOS_EVM=y CONFIG_I2C_TINY_USB=y # # Graphics adapter I2C/DDC channel drivers # CONFIG_I2C_VOODOO3=y # # Other I2C/SMBus bus drivers # CONFIG_I2C_PCA_ISA=y CONFIG_I2C_PCA_PLATFORM=y CONFIG_I2C_STUB=m CONFIG_SCx200_I2C=y CONFIG_SCx200_I2C_SCL=12 CONFIG_SCx200_I2C_SDA=13 CONFIG_SCx200_ACB=y # # Miscellaneous I2C Chip support # CONFIG_DS1682=y CONFIG_AT24=y CONFIG_SENSORS_EEPROM=y CONFIG_SENSORS_PCF8591=y CONFIG_TPS65010=y CONFIG_SENSORS_MAX6875=y CONFIG_SENSORS_TSL2550=y CONFIG_I2C_DEBUG_CORE=y CONFIG_I2C_DEBUG_ALGO=y CONFIG_I2C_DEBUG_BUS=y CONFIG_I2C_DEBUG_CHIP=y CONFIG_SPI=y CONFIG_SPI_DEBUG=y CONFIG_SPI_MASTER=y # # SPI Master Controller Drivers # CONFIG_SPI_BITBANG=y CONFIG_SPI_BUTTERFLY=y CONFIG_SPI_LM70_LLP=y # # SPI Protocol Masters # CONFIG_SPI_AT25=y CONFIG_SPI_SPIDEV=y CONFIG_SPI_TLE62X0=y CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y CONFIG_GPIOLIB=y CONFIG_DEBUG_GPIO=y CONFIG_GPIO_SYSFS=y # # Memory mapped GPIO expanders: # # # I2C GPIO expanders: # CONFIG_GPIO_MAX732X=y CONFIG_GPIO_PCA953X=y CONFIG_GPIO_PCF857X=y CONFIG_GPIO_TWL4030=y # # PCI GPIO expanders: # # # SPI GPIO expanders: # CONFIG_GPIO_MAX7301=y CONFIG_GPIO_MCP23S08=y CONFIG_W1=y CONFIG_W1_CON=y # # 1-wire Bus Masters # CONFIG_W1_MASTER_MATROX=y CONFIG_W1_MASTER_DS2490=y CONFIG_W1_MASTER_DS2482=y CONFIG_W1_MASTER_GPIO=y # # 1-wire Slaves # CONFIG_W1_SLAVE_THERM=y CONFIG_W1_SLAVE_SMEM=y CONFIG_W1_SLAVE_DS2433=y CONFIG_W1_SLAVE_DS2433_CRC=y CONFIG_W1_SLAVE_DS2760=y CONFIG_W1_SLAVE_BQ27000=y CONFIG_POWER_SUPPLY=y CONFIG_POWER_SUPPLY_DEBUG=y CONFIG_PDA_POWER=y CONFIG_WM8350_POWER=y CONFIG_BATTERY_DS2760=y CONFIG_BATTERY_OLPC=y CONFIG_BATTERY_WM97XX=y CONFIG_BATTERY_BQ27x00=y CONFIG_HWMON=y CONFIG_HWMON_VID=y CONFIG_SENSORS_ABITUGURU=y CONFIG_SENSORS_ABITUGURU3=y CONFIG_SENSORS_AD7414=y CONFIG_SENSORS_AD7418=y CONFIG_SENSORS_ADCXX=y CONFIG_SENSORS_ADM1021=y CONFIG_SENSORS_ADM1025=y CONFIG_SENSORS_ADM1026=y CONFIG_SENSORS_ADM1029=y CONFIG_SENSORS_ADM1031=y CONFIG_SENSORS_ADM9240=y CONFIG_SENSORS_ADT7462=y CONFIG_SENSORS_ADT7470=y CONFIG_SENSORS_ADT7473=y CONFIG_SENSORS_K8TEMP=y CONFIG_SENSORS_ASB100=y CONFIG_SENSORS_ATXP1=y CONFIG_SENSORS_DS1621=y CONFIG_SENSORS_I5K_AMB=y CONFIG_SENSORS_F71805F=y CONFIG_SENSORS_F71882FG=y CONFIG_SENSORS_F75375S=y CONFIG_SENSORS_FSCHER=y CONFIG_SENSORS_FSCPOS=y CONFIG_SENSORS_FSCHMD=y CONFIG_SENSORS_GL518SM=y CONFIG_SENSORS_GL520SM=y CONFIG_SENSORS_CORETEMP=y CONFIG_SENSORS_IBMAEM=y CONFIG_SENSORS_IBMPEX=y CONFIG_SENSORS_IT87=y CONFIG_SENSORS_LM63=y CONFIG_SENSORS_LM70=y CONFIG_SENSORS_LM75=y CONFIG_SENSORS_LM77=y CONFIG_SENSORS_LM78=y CONFIG_SENSORS_LM80=y CONFIG_SENSORS_LM83=y CONFIG_SENSORS_LM85=y CONFIG_SENSORS_LM87=y CONFIG_SENSORS_LM90=y CONFIG_SENSORS_LM92=y CONFIG_SENSORS_LM93=y CONFIG_SENSORS_LTC4245=y CONFIG_SENSORS_MAX1111=y CONFIG_SENSORS_MAX1619=y CONFIG_SENSORS_MAX6650=y CONFIG_SENSORS_PC87360=y CONFIG_SENSORS_PC87427=y CONFIG_SENSORS_SIS5595=y CONFIG_SENSORS_DME1737=y CONFIG_SENSORS_SMSC47M1=y CONFIG_SENSORS_SMSC47M192=y CONFIG_SENSORS_SMSC47B397=y CONFIG_SENSORS_ADS7828=y CONFIG_SENSORS_THMC50=y CONFIG_SENSORS_VIA686A=y CONFIG_SENSORS_VT1211=y CONFIG_SENSORS_VT8231=y CONFIG_SENSORS_W83781D=y CONFIG_SENSORS_W83791D=y CONFIG_SENSORS_W83792D=y CONFIG_SENSORS_W83793=y CONFIG_SENSORS_W83L785TS=y CONFIG_SENSORS_W83L786NG=y CONFIG_SENSORS_W83627HF=y CONFIG_SENSORS_W83627EHF=y CONFIG_SENSORS_HDAPS=y CONFIG_SENSORS_LIS3LV02D=y CONFIG_SENSORS_APPLESMC=y CONFIG_HWMON_DEBUG_CHIP=y CONFIG_THERMAL=y CONFIG_THERMAL_HWMON=y CONFIG_WATCHDOG=y CONFIG_WATCHDOG_NOWAYOUT=y # # Watchdog Device Drivers # CONFIG_SOFT_WATCHDOG=y CONFIG_WM8350_WATCHDOG=y CONFIG_ACQUIRE_WDT=y CONFIG_ADVANTECH_WDT=y CONFIG_ALIM1535_WDT=y CONFIG_ALIM7101_WDT=y CONFIG_SC520_WDT=y CONFIG_EUROTECH_WDT=y CONFIG_IB700_WDT=y CONFIG_IBMASR=y CONFIG_WAFER_WDT=y CONFIG_I6300ESB_WDT=y CONFIG_ITCO_WDT=y CONFIG_ITCO_VENDOR_SUPPORT=y CONFIG_IT8712F_WDT=y CONFIG_IT87_WDT=y CONFIG_HP_WATCHDOG=y CONFIG_SC1200_WDT=y CONFIG_SCx200_WDT=y CONFIG_PC87413_WDT=y CONFIG_RDC321X_WDT=y CONFIG_60XX_WDT=y CONFIG_SBC8360_WDT=y CONFIG_SBC7240_WDT=y CONFIG_CPU5_WDT=y CONFIG_SMSC_SCH311X_WDT=y CONFIG_SMSC37B787_WDT=y CONFIG_W83627HF_WDT=y CONFIG_W83697HF_WDT=y CONFIG_W83697UG_WDT=y CONFIG_W83877F_WDT=y CONFIG_W83977F_WDT=y CONFIG_MACHZ_WDT=y CONFIG_SBC_EPX_C3_WATCHDOG=y # # ISA-based Watchdog Cards # CONFIG_PCWATCHDOG=y CONFIG_MIXCOMWD=y CONFIG_WDT=y CONFIG_WDT_501=y # # PCI-based Watchdog Cards # CONFIG_PCIPCWATCHDOG=y CONFIG_WDTPCI=y CONFIG_WDT_501_PCI=y # # USB-based Watchdog Cards # CONFIG_USBPCWATCHDOG=y CONFIG_SSB_POSSIBLE=y # # Sonics Silicon Backplane # CONFIG_SSB=y CONFIG_SSB_SPROM=y CONFIG_SSB_BLOCKIO=y CONFIG_SSB_PCIHOST_POSSIBLE=y CONFIG_SSB_PCIHOST=y CONFIG_SSB_B43_PCI_BRIDGE=y CONFIG_SSB_PCMCIAHOST_POSSIBLE=y CONFIG_SSB_PCMCIAHOST=y CONFIG_SSB_SILENT=y CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y CONFIG_SSB_DRIVER_PCICORE=y # # Multifunction device drivers # # CONFIG_MFD_CORE is not set CONFIG_MFD_SM501=y CONFIG_MFD_SM501_GPIO=y CONFIG_HTC_PASIC3=y CONFIG_UCB1400_CORE=y CONFIG_TWL4030_CORE=y # CONFIG_MFD_TMIO is not set CONFIG_PMIC_DA903X=y CONFIG_MFD_WM8400=y CONFIG_MFD_WM8350=y CONFIG_MFD_WM8350_I2C=y CONFIG_REGULATOR=y CONFIG_REGULATOR_DEBUG=y # CONFIG_REGULATOR_FIXED_VOLTAGE is not set CONFIG_REGULATOR_VIRTUAL_CONSUMER=y CONFIG_REGULATOR_BQ24022=y CONFIG_REGULATOR_WM8350=y CONFIG_REGULATOR_WM8400=y CONFIG_REGULATOR_DA903X=y # # Multimedia devices # # # Multimedia core support # CONFIG_VIDEO_DEV=y CONFIG_VIDEO_V4L2_COMMON=y CONFIG_VIDEO_ALLOW_V4L1=y CONFIG_VIDEO_V4L1_COMPAT=y CONFIG_DVB_CORE=y CONFIG_VIDEO_MEDIA=y # # Multimedia drivers # CONFIG_VIDEO_SAA7146=y CONFIG_VIDEO_SAA7146_VV=y CONFIG_MEDIA_ATTACH=y CONFIG_MEDIA_TUNER=y CONFIG_MEDIA_TUNER_CUSTOMIZE=y CONFIG_MEDIA_TUNER_SIMPLE=y CONFIG_MEDIA_TUNER_TDA8290=y CONFIG_MEDIA_TUNER_TDA827X=y CONFIG_MEDIA_TUNER_TDA18271=y CONFIG_MEDIA_TUNER_TDA9887=y CONFIG_MEDIA_TUNER_TEA5761=y CONFIG_MEDIA_TUNER_TEA5767=y CONFIG_MEDIA_TUNER_MT20XX=y CONFIG_MEDIA_TUNER_MT2060=y CONFIG_MEDIA_TUNER_MT2266=y CONFIG_MEDIA_TUNER_MT2131=y CONFIG_MEDIA_TUNER_QT1010=y CONFIG_MEDIA_TUNER_XC2028=y CONFIG_MEDIA_TUNER_XC5000=y CONFIG_MEDIA_TUNER_MXL5005S=y CONFIG_MEDIA_TUNER_MXL5007T=y CONFIG_VIDEO_V4L2=y CONFIG_VIDEO_V4L1=y CONFIG_VIDEOBUF_GEN=y CONFIG_VIDEOBUF_DMA_SG=y CONFIG_VIDEOBUF_VMALLOC=y CONFIG_VIDEOBUF_DVB=y CONFIG_VIDEO_BTCX=y CONFIG_VIDEO_IR=y CONFIG_VIDEO_TVEEPROM=y CONFIG_VIDEO_TUNER=y CONFIG_VIDEO_CAPTURE_DRIVERS=y CONFIG_VIDEO_ADV_DEBUG=y CONFIG_VIDEO_FIXED_MINOR_RANGES=y CONFIG_VIDEO_HELPER_CHIPS_AUTO=y CONFIG_VIDEO_IR_I2C=y CONFIG_VIDEO_TVAUDIO=y CONFIG_VIDEO_TDA7432=y CONFIG_VIDEO_TDA9840=y CONFIG_VIDEO_TDA9875=y CONFIG_VIDEO_TEA6415C=y CONFIG_VIDEO_TEA6420=y CONFIG_VIDEO_MSP3400=y CONFIG_VIDEO_CS5345=y CONFIG_VIDEO_CS53L32A=y CONFIG_VIDEO_M52790=y CONFIG_VIDEO_WM8775=y CONFIG_VIDEO_WM8739=y CONFIG_VIDEO_VP27SMPX=y CONFIG_VIDEO_BT819=y CONFIG_VIDEO_BT856=y CONFIG_VIDEO_KS0127=y CONFIG_VIDEO_OV7670=y CONFIG_VIDEO_SAA7110=y CONFIG_VIDEO_SAA7111=y CONFIG_VIDEO_SAA7114=y CONFIG_VIDEO_SAA711X=y CONFIG_VIDEO_SAA717X=y CONFIG_VIDEO_TVP5150=y CONFIG_VIDEO_VPX3220=y CONFIG_VIDEO_CX25840=y CONFIG_VIDEO_CX2341X=y CONFIG_VIDEO_SAA7127=y CONFIG_VIDEO_SAA7185=y CONFIG_VIDEO_ADV7170=y CONFIG_VIDEO_ADV7175=y CONFIG_VIDEO_UPD64031A=y CONFIG_VIDEO_UPD64083=y CONFIG_VIDEO_VIVI=y CONFIG_VIDEO_BT848=y CONFIG_VIDEO_BT848_DVB=y CONFIG_VIDEO_SAA6588=y CONFIG_VIDEO_PMS=y CONFIG_VIDEO_BWQCAM=y CONFIG_VIDEO_CQCAM=y CONFIG_VIDEO_W9966=y CONFIG_VIDEO_CPIA=y CONFIG_VIDEO_CPIA_PP=y CONFIG_VIDEO_CPIA_USB=y CONFIG_VIDEO_CPIA2=y CONFIG_VIDEO_SAA5246A=y CONFIG_VIDEO_SAA5249=y CONFIG_VIDEO_STRADIS=y CONFIG_VIDEO_ZORAN=y CONFIG_VIDEO_ZORAN_DC30=y CONFIG_VIDEO_ZORAN_ZR36060=y CONFIG_VIDEO_ZORAN_BUZ=y CONFIG_VIDEO_ZORAN_DC10=y CONFIG_VIDEO_ZORAN_LML33=y CONFIG_VIDEO_ZORAN_LML33R10=y CONFIG_VIDEO_ZORAN_AVS6EYES=y CONFIG_VIDEO_MEYE=y CONFIG_VIDEO_SAA7134=y CONFIG_VIDEO_SAA7134_ALSA=y CONFIG_VIDEO_SAA7134_DVB=y CONFIG_VIDEO_MXB=y CONFIG_VIDEO_HEXIUM_ORION=y CONFIG_VIDEO_HEXIUM_GEMINI=y CONFIG_VIDEO_CX88=y CONFIG_VIDEO_CX88_ALSA=y CONFIG_VIDEO_CX88_BLACKBIRD=y CONFIG_VIDEO_CX88_DVB=y CONFIG_VIDEO_CX88_VP3054=y CONFIG_VIDEO_CX23885=y CONFIG_VIDEO_AU0828=y CONFIG_VIDEO_IVTV=y CONFIG_VIDEO_FB_IVTV=y CONFIG_VIDEO_CX18=y CONFIG_VIDEO_CAFE_CCIC=y CONFIG_SOC_CAMERA=y CONFIG_SOC_CAMERA_MT9M001=y CONFIG_MT9M001_PCA9536_SWITCH=y CONFIG_SOC_CAMERA_MT9M111=y CONFIG_SOC_CAMERA_MT9V022=y CONFIG_MT9V022_PCA9536_SWITCH=y CONFIG_SOC_CAMERA_PLATFORM=y CONFIG_V4L_USB_DRIVERS=y CONFIG_USB_VIDEO_CLASS=y CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y CONFIG_USB_GSPCA=y CONFIG_USB_M5602=y CONFIG_USB_GSPCA_CONEX=y CONFIG_USB_GSPCA_ETOMS=y CONFIG_USB_GSPCA_FINEPIX=y CONFIG_USB_GSPCA_MARS=y CONFIG_USB_GSPCA_OV519=y CONFIG_USB_GSPCA_PAC207=y CONFIG_USB_GSPCA_PAC7311=y CONFIG_USB_GSPCA_SONIXB=y CONFIG_USB_GSPCA_SONIXJ=y CONFIG_USB_GSPCA_SPCA500=y CONFIG_USB_GSPCA_SPCA501=y CONFIG_USB_GSPCA_SPCA505=y CONFIG_USB_GSPCA_SPCA506=y CONFIG_USB_GSPCA_SPCA508=y CONFIG_USB_GSPCA_SPCA561=y CONFIG_USB_GSPCA_STK014=y CONFIG_USB_GSPCA_SUNPLUS=y CONFIG_USB_GSPCA_T613=y CONFIG_USB_GSPCA_TV8532=y CONFIG_USB_GSPCA_VC032X=y CONFIG_USB_GSPCA_ZC3XX=y CONFIG_VIDEO_PVRUSB2=y CONFIG_VIDEO_PVRUSB2_SYSFS=y CONFIG_VIDEO_PVRUSB2_DVB=y CONFIG_VIDEO_PVRUSB2_DEBUGIFC=y CONFIG_VIDEO_EM28XX=y CONFIG_VIDEO_EM28XX_ALSA=y CONFIG_VIDEO_EM28XX_DVB=y CONFIG_VIDEO_USBVISION=y CONFIG_VIDEO_USBVIDEO=y CONFIG_USB_VICAM=y CONFIG_USB_IBMCAM=y CONFIG_USB_KONICAWC=y CONFIG_USB_QUICKCAM_MESSENGER=y CONFIG_USB_ET61X251=y CONFIG_VIDEO_OVCAMCHIP=y CONFIG_USB_W9968CF=y CONFIG_USB_OV511=y CONFIG_USB_SE401=y CONFIG_USB_SN9C102=y CONFIG_USB_STV680=y CONFIG_USB_ZC0301=y CONFIG_USB_PWC=y CONFIG_USB_PWC_DEBUG=y CONFIG_USB_ZR364XX=y CONFIG_USB_STKWEBCAM=y CONFIG_USB_S2255=y CONFIG_RADIO_ADAPTERS=y CONFIG_RADIO_CADET=y CONFIG_RADIO_RTRACK=y CONFIG_RADIO_RTRACK_PORT=20f CONFIG_RADIO_RTRACK2=y CONFIG_RADIO_RTRACK2_PORT=30c CONFIG_RADIO_AZTECH=y CONFIG_RADIO_AZTECH_PORT=350 CONFIG_RADIO_GEMTEK=y CONFIG_RADIO_GEMTEK_PORT=34c CONFIG_RADIO_GEMTEK_PROBE=y CONFIG_RADIO_GEMTEK_PCI=y CONFIG_RADIO_MAXIRADIO=y CONFIG_RADIO_MAESTRO=y CONFIG_RADIO_SF16FMI=y CONFIG_RADIO_SF16FMR2=y CONFIG_RADIO_TERRATEC=y CONFIG_RADIO_TERRATEC_PORT=590 CONFIG_RADIO_TRUST=y CONFIG_RADIO_TRUST_PORT=350 CONFIG_RADIO_TYPHOON=y CONFIG_RADIO_TYPHOON_PROC_FS=y CONFIG_RADIO_TYPHOON_PORT=316 CONFIG_RADIO_TYPHOON_MUTEFREQ=87500 CONFIG_RADIO_ZOLTRIX=y CONFIG_RADIO_ZOLTRIX_PORT=20c CONFIG_USB_DSBR=y CONFIG_USB_SI470X=y CONFIG_USB_MR800=y CONFIG_DVB_CAPTURE_DRIVERS=y # # Supported SAA7146 based PCI Adapters # CONFIG_TTPCI_EEPROM=y CONFIG_DVB_AV7110=y CONFIG_DVB_AV7110_OSD=y CONFIG_DVB_BUDGET_CORE=y CONFIG_DVB_BUDGET=y CONFIG_DVB_BUDGET_CI=y CONFIG_DVB_BUDGET_AV=y CONFIG_DVB_BUDGET_PATCH=y # # Supported USB Adapters # CONFIG_DVB_USB=y CONFIG_DVB_USB_DEBUG=y CONFIG_DVB_USB_A800=y CONFIG_DVB_USB_DIBUSB_MB=y CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y CONFIG_DVB_USB_DIBUSB_MC=y CONFIG_DVB_USB_DIB0700=y CONFIG_DVB_USB_UMT_010=y CONFIG_DVB_USB_CXUSB=y CONFIG_DVB_USB_M920X=y CONFIG_DVB_USB_GL861=y CONFIG_DVB_USB_AU6610=y CONFIG_DVB_USB_DIGITV=y CONFIG_DVB_USB_VP7045=y CONFIG_DVB_USB_VP702X=y CONFIG_DVB_USB_GP8PSK=y CONFIG_DVB_USB_NOVA_T_USB2=y CONFIG_DVB_USB_TTUSB2=y CONFIG_DVB_USB_DTT200U=y CONFIG_DVB_USB_OPERA1=y CONFIG_DVB_USB_AF9005=y CONFIG_DVB_USB_AF9005_REMOTE=y CONFIG_DVB_USB_DW2102=y CONFIG_DVB_USB_CINERGY_T2=y CONFIG_DVB_USB_ANYSEE=y CONFIG_DVB_USB_DTV5100=y CONFIG_DVB_USB_AF9015=y CONFIG_DVB_TTUSB_BUDGET=y CONFIG_DVB_TTUSB_DEC=y CONFIG_DVB_SIANO_SMS1XXX=y CONFIG_DVB_SIANO_SMS1XXX_SMS_IDS=y # # Supported FlexCopII (B2C2) Adapters # CONFIG_DVB_B2C2_FLEXCOP=y CONFIG_DVB_B2C2_FLEXCOP_PCI=y CONFIG_DVB_B2C2_FLEXCOP_USB=y CONFIG_DVB_B2C2_FLEXCOP_DEBUG=y # # Supported BT878 Adapters # CONFIG_DVB_BT8XX=y # # Supported Pluto2 Adapters # CONFIG_DVB_PLUTO2=y # # Supported SDMC DM1105 Adapters # CONFIG_DVB_DM1105=y CONFIG_DVB_FIREDTV=y # # Supported DVB Frontends # # # Customise DVB Frontends # CONFIG_DVB_FE_CUSTOMISE=y # # DVB-S (satellite) frontends # CONFIG_DVB_CX24110=y CONFIG_DVB_CX24123=y CONFIG_DVB_MT312=y CONFIG_DVB_S5H1420=y CONFIG_DVB_STV0288=y CONFIG_DVB_STB6000=y CONFIG_DVB_STV0299=y CONFIG_DVB_TDA8083=y CONFIG_DVB_TDA10086=y CONFIG_DVB_VES1X93=y CONFIG_DVB_TUNER_ITD1000=y CONFIG_DVB_TDA826X=y CONFIG_DVB_TUA6100=y CONFIG_DVB_CX24116=y CONFIG_DVB_SI21XX=y # # DVB-T (terrestrial) frontends # CONFIG_DVB_SP8870=y CONFIG_DVB_SP887X=y CONFIG_DVB_CX22700=y CONFIG_DVB_CX22702=y CONFIG_DVB_DRX397XD=y CONFIG_DVB_L64781=y CONFIG_DVB_TDA1004X=y CONFIG_DVB_NXT6000=y CONFIG_DVB_MT352=y CONFIG_DVB_ZL10353=y CONFIG_DVB_DIB3000MB=y CONFIG_DVB_DIB3000MC=y CONFIG_DVB_DIB7000M=y CONFIG_DVB_DIB7000P=y CONFIG_DVB_TDA10048=y # # DVB-C (cable) frontends # CONFIG_DVB_VES1820=y CONFIG_DVB_TDA10021=y CONFIG_DVB_TDA10023=y CONFIG_DVB_STV0297=y # # ATSC (North American/Korean Terrestrial/Cable DTV) frontends # CONFIG_DVB_NXT200X=y CONFIG_DVB_OR51211=y CONFIG_DVB_OR51132=y CONFIG_DVB_BCM3510=y CONFIG_DVB_LGDT330X=y CONFIG_DVB_S5H1409=y CONFIG_DVB_AU8522=y CONFIG_DVB_S5H1411=y # # Digital terrestrial only tuners/PLL # CONFIG_DVB_PLL=y CONFIG_DVB_TUNER_DIB0070=y # # SEC control devices for DVB-S # CONFIG_DVB_LNBP21=y CONFIG_DVB_ISL6405=y CONFIG_DVB_ISL6421=y CONFIG_DVB_LGS8GL5=y # # Tools to develop new frontends # CONFIG_DVB_DUMMY_FE=y CONFIG_DVB_AF9013=y CONFIG_DAB=y CONFIG_USB_DABUSB=y # # Graphics support # CONFIG_AGP=y CONFIG_AGP_ALI=y CONFIG_AGP_ATI=y CONFIG_AGP_AMD=y CONFIG_AGP_AMD64=y CONFIG_AGP_INTEL=y CONFIG_AGP_NVIDIA=y CONFIG_AGP_SIS=y CONFIG_AGP_SWORKS=y CONFIG_AGP_VIA=y CONFIG_AGP_EFFICEON=y CONFIG_DRM=y CONFIG_DRM_TDFX=y CONFIG_DRM_R128=y CONFIG_DRM_RADEON=y CONFIG_DRM_I810=y CONFIG_DRM_I830=y # CONFIG_DRM_I915 is not set CONFIG_DRM_MGA=y CONFIG_DRM_SIS=y CONFIG_DRM_VIA=y CONFIG_DRM_SAVAGE=y CONFIG_VGASTATE=y CONFIG_VIDEO_OUTPUT_CONTROL=y CONFIG_FB=y CONFIG_FIRMWARE_EDID=y CONFIG_FB_DDC=y CONFIG_FB_BOOT_VESA_SUPPORT=y CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set CONFIG_FB_SYS_FILLRECT=y CONFIG_FB_SYS_COPYAREA=y CONFIG_FB_SYS_IMAGEBLIT=y CONFIG_FB_FOREIGN_ENDIAN=y CONFIG_FB_BOTH_ENDIAN=y # CONFIG_FB_BIG_ENDIAN is not set # CONFIG_FB_LITTLE_ENDIAN is not set CONFIG_FB_SYS_FOPS=y CONFIG_FB_DEFERRED_IO=y CONFIG_FB_HECUBA=y CONFIG_FB_SVGALIB=y # CONFIG_FB_MACMODES is not set CONFIG_FB_BACKLIGHT=y CONFIG_FB_MODE_HELPERS=y CONFIG_FB_TILEBLITTING=y # # Frame buffer hardware drivers # CONFIG_FB_CIRRUS=y CONFIG_FB_PM2=y CONFIG_FB_PM2_FIFO_DISCONNECT=y CONFIG_FB_CYBER2000=y CONFIG_FB_ARC=y CONFIG_FB_ASILIANT=y CONFIG_FB_IMSTT=y CONFIG_FB_VGA16=y CONFIG_FB_UVESA=y CONFIG_FB_VESA=y CONFIG_FB_EFI=y CONFIG_FB_N411=y CONFIG_FB_HGA=y CONFIG_FB_HGA_ACCEL=y CONFIG_FB_S1D13XXX=y CONFIG_FB_NVIDIA=y CONFIG_FB_NVIDIA_I2C=y CONFIG_FB_NVIDIA_DEBUG=y CONFIG_FB_NVIDIA_BACKLIGHT=y CONFIG_FB_RIVA=y CONFIG_FB_RIVA_I2C=y CONFIG_FB_RIVA_DEBUG=y CONFIG_FB_RIVA_BACKLIGHT=y CONFIG_FB_I810=y CONFIG_FB_I810_GTF=y CONFIG_FB_I810_I2C=y CONFIG_FB_LE80578=y CONFIG_FB_CARILLO_RANCH=y CONFIG_FB_INTEL=y CONFIG_FB_INTEL_DEBUG=y CONFIG_FB_INTEL_I2C=y CONFIG_FB_MATROX=y CONFIG_FB_MATROX_MILLENIUM=y CONFIG_FB_MATROX_MYSTIQUE=y CONFIG_FB_MATROX_G=y CONFIG_FB_MATROX_I2C=y CONFIG_FB_MATROX_MAVEN=y CONFIG_FB_MATROX_MULTIHEAD=y CONFIG_FB_RADEON=y CONFIG_FB_RADEON_I2C=y CONFIG_FB_RADEON_BACKLIGHT=y CONFIG_FB_RADEON_DEBUG=y CONFIG_FB_ATY128=y CONFIG_FB_ATY128_BACKLIGHT=y CONFIG_FB_ATY=y CONFIG_FB_ATY_CT=y CONFIG_FB_ATY_GENERIC_LCD=y CONFIG_FB_ATY_GX=y CONFIG_FB_ATY_BACKLIGHT=y CONFIG_FB_S3=y CONFIG_FB_SAVAGE=y CONFIG_FB_SAVAGE_I2C=y CONFIG_FB_SAVAGE_ACCEL=y CONFIG_FB_SIS=y CONFIG_FB_SIS_300=y CONFIG_FB_SIS_315=y CONFIG_FB_VIA=y CONFIG_FB_NEOMAGIC=y CONFIG_FB_KYRO=y CONFIG_FB_3DFX=y CONFIG_FB_3DFX_ACCEL=y CONFIG_FB_VOODOO1=y CONFIG_FB_VT8623=y CONFIG_FB_CYBLA=y CONFIG_FB_TRIDENT=y CONFIG_FB_TRIDENT_ACCEL=y CONFIG_FB_ARK=y CONFIG_FB_PM3=y CONFIG_FB_CARMINE=y CONFIG_FB_CARMINE_DRAM_EVAL=y # CONFIG_CARMINE_DRAM_CUSTOM is not set CONFIG_FB_GEODE=y CONFIG_FB_GEODE_LX=y CONFIG_FB_GEODE_GX=y CONFIG_FB_GEODE_GX1=y CONFIG_FB_SM501=y CONFIG_FB_VIRTUAL=y CONFIG_FB_METRONOME=y CONFIG_FB_MB862XX=y CONFIG_FB_MB862XX_PCI_GDC=y CONFIG_BACKLIGHT_LCD_SUPPORT=y CONFIG_LCD_CLASS_DEVICE=y CONFIG_LCD_LTV350QV=y CONFIG_LCD_ILI9320=y CONFIG_LCD_TDO24M=y CONFIG_LCD_VGG2432A4=y CONFIG_LCD_PLATFORM=y CONFIG_BACKLIGHT_CLASS_DEVICE=y CONFIG_BACKLIGHT_CORGI=y CONFIG_BACKLIGHT_PROGEAR=y CONFIG_BACKLIGHT_CARILLO_RANCH=y CONFIG_BACKLIGHT_DA903X=y CONFIG_BACKLIGHT_MBP_NVIDIA=y CONFIG_BACKLIGHT_SAHARA=y # # Display device support # CONFIG_DISPLAY_SUPPORT=y # # Display hardware drivers # # # Console display driver support # CONFIG_VGA_CONSOLE=y CONFIG_VGACON_SOFT_SCROLLBACK=y CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64 CONFIG_MDA_CONSOLE=y CONFIG_DUMMY_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y CONFIG_FONTS=y CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y CONFIG_FONT_6x11=y CONFIG_FONT_7x14=y CONFIG_FONT_PEARL_8x8=y CONFIG_FONT_ACORN_8x8=y CONFIG_FONT_MINI_4x6=y CONFIG_FONT_SUN8x16=y CONFIG_FONT_SUN12x22=y CONFIG_FONT_10x18=y CONFIG_LOGO=y CONFIG_LOGO_LINUX_MONO=y CONFIG_LOGO_LINUX_VGA16=y CONFIG_LOGO_LINUX_CLUT224=y CONFIG_SOUND=y CONFIG_SOUND_OSS_CORE=y CONFIG_SND=y CONFIG_SND_TIMER=y CONFIG_SND_PCM=y CONFIG_SND_HWDEP=y CONFIG_SND_RAWMIDI=y CONFIG_SND_JACK=y CONFIG_SND_SEQUENCER=y CONFIG_SND_SEQ_DUMMY=y CONFIG_SND_OSSEMUL=y CONFIG_SND_MIXER_OSS=y CONFIG_SND_PCM_OSS=y CONFIG_SND_PCM_OSS_PLUGINS=y CONFIG_SND_SEQUENCER_OSS=y CONFIG_SND_HRTIMER=y CONFIG_SND_SEQ_HRTIMER_DEFAULT=y CONFIG_SND_DYNAMIC_MINORS=y CONFIG_SND_SUPPORT_OLD_API=y CONFIG_SND_VERBOSE_PROCFS=y CONFIG_SND_VERBOSE_PRINTK=y CONFIG_SND_DEBUG=y CONFIG_SND_DEBUG_VERBOSE=y CONFIG_SND_PCM_XRUN_DEBUG=y CONFIG_SND_VMASTER=y CONFIG_SND_MPU401_UART=y CONFIG_SND_OPL3_LIB=y CONFIG_SND_OPL4_LIB=y CONFIG_SND_VX_LIB=y CONFIG_SND_AC97_CODEC=y CONFIG_SND_DRIVERS=y CONFIG_SND_PCSP=y CONFIG_SND_DUMMY=y CONFIG_SND_VIRMIDI=y CONFIG_SND_MTPAV=y CONFIG_SND_MTS64=y CONFIG_SND_SERIAL_U16550=y CONFIG_SND_MPU401=y CONFIG_SND_PORTMAN2X4=y CONFIG_SND_AC97_POWER_SAVE=y CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 CONFIG_SND_WSS_LIB=y CONFIG_SND_SB_COMMON=y CONFIG_SND_SB8_DSP=y CONFIG_SND_SB16_DSP=y CONFIG_SND_ISA=y CONFIG_SND_ADLIB=y CONFIG_SND_AD1816A=y CONFIG_SND_AD1848=y CONFIG_SND_ALS100=y CONFIG_SND_AZT2320=y CONFIG_SND_CMI8330=y CONFIG_SND_CS4231=y CONFIG_SND_CS4232=y CONFIG_SND_CS4236=y CONFIG_SND_DT019X=y CONFIG_SND_ES968=y CONFIG_SND_ES1688=y CONFIG_SND_ES18XX=y CONFIG_SND_SC6000=y CONFIG_SND_GUSCLASSIC=y CONFIG_SND_GUSEXTREME=y CONFIG_SND_GUSMAX=y CONFIG_SND_INTERWAVE=y CONFIG_SND_INTERWAVE_STB=y CONFIG_SND_OPL3SA2=y CONFIG_SND_OPTI92X_AD1848=y CONFIG_SND_OPTI92X_CS4231=y CONFIG_SND_OPTI93X=y CONFIG_SND_MIRO=y CONFIG_SND_SB8=y CONFIG_SND_SB16=y CONFIG_SND_SBAWE=y CONFIG_SND_SB16_CSP=y CONFIG_SND_SGALAXY=y CONFIG_SND_SSCAPE=y CONFIG_SND_WAVEFRONT=y CONFIG_SND_PCI=y CONFIG_SND_AD1889=y CONFIG_SND_ALS300=y CONFIG_SND_ALS4000=y CONFIG_SND_ALI5451=y CONFIG_SND_ATIIXP=y CONFIG_SND_ATIIXP_MODEM=y CONFIG_SND_AU8810=y CONFIG_SND_AU8820=y CONFIG_SND_AU8830=y CONFIG_SND_AW2=y CONFIG_SND_AZT3328=y CONFIG_SND_BT87X=y CONFIG_SND_BT87X_OVERCLOCK=y CONFIG_SND_CA0106=y CONFIG_SND_CMIPCI=y CONFIG_SND_OXYGEN_LIB=y CONFIG_SND_OXYGEN=y CONFIG_SND_CS4281=y CONFIG_SND_CS46XX=y CONFIG_SND_CS46XX_NEW_DSP=y CONFIG_SND_CS5530=y CONFIG_SND_CS5535AUDIO=y CONFIG_SND_DARLA20=y CONFIG_SND_GINA20=y CONFIG_SND_LAYLA20=y CONFIG_SND_DARLA24=y CONFIG_SND_GINA24=y CONFIG_SND_LAYLA24=y CONFIG_SND_MONA=y CONFIG_SND_MIA=y CONFIG_SND_ECHO3G=y CONFIG_SND_INDIGO=y CONFIG_SND_INDIGOIO=y CONFIG_SND_INDIGODJ=y CONFIG_SND_EMU10K1=y CONFIG_SND_EMU10K1X=y CONFIG_SND_ENS1370=y CONFIG_SND_ENS1371=y CONFIG_SND_ES1938=y CONFIG_SND_ES1968=y CONFIG_SND_FM801=y CONFIG_SND_FM801_TEA575X_BOOL=y CONFIG_SND_FM801_TEA575X=y CONFIG_SND_HDA_INTEL=y CONFIG_SND_HDA_HWDEP=y CONFIG_SND_HDA_RECONFIG=y CONFIG_SND_HDA_INPUT_BEEP=y CONFIG_SND_HDA_CODEC_REALTEK=y CONFIG_SND_HDA_CODEC_ANALOG=y CONFIG_SND_HDA_CODEC_SIGMATEL=y CONFIG_SND_HDA_CODEC_VIA=y CONFIG_SND_HDA_CODEC_ATIHDMI=y CONFIG_SND_HDA_CODEC_NVHDMI=y CONFIG_SND_HDA_CODEC_INTELHDMI=y CONFIG_SND_HDA_ELD=y CONFIG_SND_HDA_CODEC_CONEXANT=y CONFIG_SND_HDA_CODEC_CMEDIA=y CONFIG_SND_HDA_CODEC_SI3054=y CONFIG_SND_HDA_GENERIC=y CONFIG_SND_HDA_POWER_SAVE=y CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 CONFIG_SND_HDSP=y CONFIG_SND_HDSPM=y CONFIG_SND_HIFIER=y CONFIG_SND_ICE1712=y CONFIG_SND_ICE1724=y CONFIG_SND_INTEL8X0=y CONFIG_SND_INTEL8X0M=y CONFIG_SND_KORG1212=y CONFIG_SND_MAESTRO3=y CONFIG_SND_MIXART=y CONFIG_SND_NM256=y CONFIG_SND_PCXHR=y CONFIG_SND_RIPTIDE=y CONFIG_SND_RME32=y CONFIG_SND_RME96=y CONFIG_SND_RME9652=y CONFIG_SND_SIS7019=y CONFIG_SND_SONICVIBES=y CONFIG_SND_TRIDENT=y CONFIG_SND_VIA82XX=y CONFIG_SND_VIA82XX_MODEM=y CONFIG_SND_VIRTUOSO=y CONFIG_SND_VX222=y CONFIG_SND_YMFPCI=y CONFIG_SND_SPI=y CONFIG_SND_USB=y CONFIG_SND_USB_AUDIO=y CONFIG_SND_USB_USX2Y=y CONFIG_SND_USB_CAIAQ=y CONFIG_SND_USB_CAIAQ_INPUT=y CONFIG_SND_USB_US122L=y CONFIG_SND_PCMCIA=y CONFIG_SND_VXPOCKET=y CONFIG_SND_PDAUDIOCF=y CONFIG_SND_SOC=y CONFIG_SND_SOC_ALL_CODECS=y CONFIG_SND_SOC_AD73311=y CONFIG_SND_SOC_AK4535=y CONFIG_SND_SOC_CS4270=y CONFIG_SND_SOC_L3=y CONFIG_SND_SOC_PCM3008=y CONFIG_SND_SOC_SSM2602=y CONFIG_SND_SOC_TLV320AIC23=y CONFIG_SND_SOC_TLV320AIC26=y CONFIG_SND_SOC_TLV320AIC3X=y CONFIG_SND_SOC_TWL4030=y CONFIG_SND_SOC_UDA134X=y CONFIG_SND_SOC_UDA1380=y CONFIG_SND_SOC_WM8510=y CONFIG_SND_SOC_WM8580=y CONFIG_SND_SOC_WM8728=y CONFIG_SND_SOC_WM8731=y CONFIG_SND_SOC_WM8750=y CONFIG_SND_SOC_WM8753=y CONFIG_SND_SOC_WM8900=y CONFIG_SND_SOC_WM8903=y CONFIG_SND_SOC_WM8971=y CONFIG_SND_SOC_WM8990=y CONFIG_SOUND_PRIME=y CONFIG_SOUND_MSNDCLAS=m CONFIG_MSNDCLAS_INIT_FILE="/etc/sound/msndinit.bin" CONFIG_MSNDCLAS_PERM_FILE="/etc/sound/msndperm.bin" CONFIG_SOUND_MSNDPIN=m CONFIG_MSNDPIN_INIT_FILE="/etc/sound/pndspini.bin" CONFIG_MSNDPIN_PERM_FILE="/etc/sound/pndsperm.bin" CONFIG_SOUND_OSS=y CONFIG_SOUND_TRACEINIT=y CONFIG_SOUND_DMAP=y CONFIG_SOUND_SSCAPE=y CONFIG_SOUND_VMIDI=y CONFIG_SOUND_TRIX=y CONFIG_SOUND_MSS=y CONFIG_SOUND_MPU401=y CONFIG_SOUND_PAS=y CONFIG_PAS_JOYSTICK=y CONFIG_SOUND_PSS=y CONFIG_PSS_MIXER=y CONFIG_SOUND_SB=y CONFIG_SOUND_YM3812=y CONFIG_SOUND_UART6850=y CONFIG_SOUND_AEDSP16=y CONFIG_SC6600=y CONFIG_SC6600_JOY=y CONFIG_SC6600_CDROM=4 CONFIG_SC6600_CDROMBASE=0 CONFIG_SOUND_KAHLUA=y CONFIG_AC97_BUS=y CONFIG_HID_SUPPORT=y CONFIG_HID=y CONFIG_HID_DEBUG=y CONFIG_HIDRAW=y # # USB Input Devices # CONFIG_USB_HID=y CONFIG_HID_PID=y CONFIG_USB_HIDDEV=y # # Special HID drivers # CONFIG_HID_COMPAT=y CONFIG_HID_A4TECH=y CONFIG_HID_APPLE=y CONFIG_HID_BELKIN=y CONFIG_HID_CHERRY=y CONFIG_HID_CHICONY=y CONFIG_HID_CYPRESS=y CONFIG_HID_EZKEY=y CONFIG_HID_GYRATION=y CONFIG_HID_LOGITECH=y CONFIG_LOGITECH_FF=y CONFIG_LOGIRUMBLEPAD2_FF=y CONFIG_HID_MICROSOFT=y CONFIG_HID_MONTEREY=y CONFIG_HID_NTRIG=y CONFIG_HID_PANTHERLORD=y CONFIG_PANTHERLORD_FF=y CONFIG_HID_PETALYNX=y CONFIG_HID_SAMSUNG=y CONFIG_HID_SONY=y CONFIG_HID_SUNPLUS=y CONFIG_THRUSTMASTER_FF=y CONFIG_ZEROPLUS_FF=y CONFIG_USB_SUPPORT=y CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB_ARCH_HAS_OHCI=y CONFIG_USB_ARCH_HAS_EHCI=y CONFIG_USB=y CONFIG_USB_DEBUG=y CONFIG_USB_ANNOUNCE_NEW_DEVICES=y # # Miscellaneous USB options # CONFIG_USB_DEVICEFS=y CONFIG_USB_DEVICE_CLASS=y CONFIG_USB_DYNAMIC_MINORS=y CONFIG_USB_SUSPEND=y # CONFIG_USB_OTG is not set CONFIG_USB_OTG_WHITELIST=y CONFIG_USB_OTG_BLACKLIST_HUB=y CONFIG_USB_MON=y CONFIG_USB_WUSB=y CONFIG_USB_WUSB_CBAF=y CONFIG_USB_WUSB_CBAF_DEBUG=y # # USB Host Controller Drivers # CONFIG_USB_C67X00_HCD=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y CONFIG_USB_EHCI_TT_NEWSCHED=y CONFIG_USB_OXU210HP_HCD=y CONFIG_USB_ISP116X_HCD=y CONFIG_USB_ISP1760_HCD=y CONFIG_USB_OHCI_HCD=y CONFIG_USB_OHCI_HCD_SSB=y # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set CONFIG_USB_OHCI_LITTLE_ENDIAN=y CONFIG_USB_UHCI_HCD=y CONFIG_USB_U132_HCD=y CONFIG_USB_SL811_HCD=y CONFIG_USB_SL811_CS=y CONFIG_USB_R8A66597_HCD=y CONFIG_USB_WHCI_HCD=y CONFIG_USB_HWA_HCD=y # CONFIG_USB_GADGET_MUSB_HDRC is not set # # USB Device Class drivers # CONFIG_USB_ACM=y CONFIG_USB_PRINTER=y CONFIG_USB_WDM=y CONFIG_USB_TMC=y # # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; # # # see USB_STORAGE Help for more information # CONFIG_USB_STORAGE=y CONFIG_USB_STORAGE_DEBUG=y CONFIG_USB_STORAGE_DATAFAB=y CONFIG_USB_STORAGE_FREECOM=y CONFIG_USB_STORAGE_ISD200=y CONFIG_USB_STORAGE_DPCM=y CONFIG_USB_STORAGE_USBAT=y CONFIG_USB_STORAGE_SDDR09=y CONFIG_USB_STORAGE_SDDR55=y CONFIG_USB_STORAGE_JUMPSHOT=y CONFIG_USB_STORAGE_ALAUDA=y CONFIG_USB_STORAGE_ONETOUCH=y CONFIG_USB_STORAGE_KARMA=y # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set CONFIG_USB_LIBUSUAL=y # # USB Imaging devices # CONFIG_USB_MDC800=y CONFIG_USB_MICROTEK=y # # USB port drivers # CONFIG_USB_USS720=y CONFIG_USB_SERIAL=y CONFIG_USB_SERIAL_CONSOLE=y CONFIG_USB_EZUSB=y CONFIG_USB_SERIAL_GENERIC=y CONFIG_USB_SERIAL_AIRCABLE=y CONFIG_USB_SERIAL_ARK3116=y CONFIG_USB_SERIAL_BELKIN=y CONFIG_USB_SERIAL_CH341=y CONFIG_USB_SERIAL_WHITEHEAT=y CONFIG_USB_SERIAL_DIGI_ACCELEPORT=y CONFIG_USB_SERIAL_CP2101=y CONFIG_USB_SERIAL_CYPRESS_M8=y CONFIG_USB_SERIAL_EMPEG=y CONFIG_USB_SERIAL_FTDI_SIO=y CONFIG_USB_SERIAL_FUNSOFT=y CONFIG_USB_SERIAL_VISOR=y CONFIG_USB_SERIAL_IPAQ=y CONFIG_USB_SERIAL_IR=y CONFIG_USB_SERIAL_EDGEPORT=y CONFIG_USB_SERIAL_EDGEPORT_TI=y CONFIG_USB_SERIAL_GARMIN=y CONFIG_USB_SERIAL_IPW=y CONFIG_USB_SERIAL_IUU=y CONFIG_USB_SERIAL_KEYSPAN_PDA=y CONFIG_USB_SERIAL_KEYSPAN=y CONFIG_USB_SERIAL_KEYSPAN_MPR=y CONFIG_USB_SERIAL_KEYSPAN_USA28=y CONFIG_USB_SERIAL_KEYSPAN_USA28X=y CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y CONFIG_USB_SERIAL_KEYSPAN_USA19=y CONFIG_USB_SERIAL_KEYSPAN_USA18X=y CONFIG_USB_SERIAL_KEYSPAN_USA19W=y CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y CONFIG_USB_SERIAL_KEYSPAN_USA49W=y CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y CONFIG_USB_SERIAL_KLSI=y CONFIG_USB_SERIAL_KOBIL_SCT=y CONFIG_USB_SERIAL_MCT_U232=y CONFIG_USB_SERIAL_MOS7720=y CONFIG_USB_SERIAL_MOS7840=y CONFIG_USB_SERIAL_MOTOROLA=y CONFIG_USB_SERIAL_NAVMAN=y CONFIG_USB_SERIAL_PL2303=y CONFIG_USB_SERIAL_OTI6858=y CONFIG_USB_SERIAL_SPCP8X5=y CONFIG_USB_SERIAL_HP4X=y CONFIG_USB_SERIAL_SAFE=y CONFIG_USB_SERIAL_SAFE_PADDED=y CONFIG_USB_SERIAL_SIERRAWIRELESS=y CONFIG_USB_SERIAL_TI=y CONFIG_USB_SERIAL_CYBERJACK=y CONFIG_USB_SERIAL_XIRCOM=y CONFIG_USB_SERIAL_OPTION=y CONFIG_USB_SERIAL_OMNINET=y CONFIG_USB_SERIAL_OPTICON=y CONFIG_USB_SERIAL_DEBUG=y # # USB Miscellaneous drivers # CONFIG_USB_EMI62=y CONFIG_USB_EMI26=y CONFIG_USB_ADUTUX=y CONFIG_USB_SEVSEG=y CONFIG_USB_RIO500=y CONFIG_USB_LEGOTOWER=y CONFIG_USB_LCD=y CONFIG_USB_BERRY_CHARGE=y CONFIG_USB_LED=y CONFIG_USB_CYPRESS_CY7C63=y CONFIG_USB_CYTHERM=y CONFIG_USB_PHIDGET=y CONFIG_USB_PHIDGETKIT=y CONFIG_USB_PHIDGETMOTORCONTROL=y CONFIG_USB_PHIDGETSERVO=y CONFIG_USB_IDMOUSE=y CONFIG_USB_FTDI_ELAN=y CONFIG_USB_APPLEDISPLAY=y CONFIG_USB_SISUSBVGA=y CONFIG_USB_SISUSBVGA_CON=y CONFIG_USB_LD=y CONFIG_USB_TRANCEVIBRATOR=y CONFIG_USB_IOWARRIOR=y CONFIG_USB_TEST=y CONFIG_USB_ISIGHTFW=y CONFIG_USB_VST=y CONFIG_USB_ATM=y CONFIG_USB_SPEEDTOUCH=y CONFIG_USB_CXACRU=y CONFIG_USB_UEAGLEATM=y CONFIG_USB_XUSBATM=y CONFIG_USB_GADGET=y CONFIG_USB_GADGET_DEBUG=y CONFIG_USB_GADGET_DEBUG_FILES=y CONFIG_USB_GADGET_DEBUG_FS=y CONFIG_USB_GADGET_VBUS_DRAW=2 CONFIG_USB_GADGET_SELECTED=y # CONFIG_USB_GADGET_AT91 is not set # CONFIG_USB_GADGET_ATMEL_USBA is not set # CONFIG_USB_GADGET_FSL_USB2 is not set # CONFIG_USB_GADGET_LH7A40X is not set # CONFIG_USB_GADGET_OMAP is not set # CONFIG_USB_GADGET_PXA25X is not set # CONFIG_USB_GADGET_PXA27X is not set # CONFIG_USB_GADGET_S3C2410 is not set # CONFIG_USB_GADGET_IMX is not set CONFIG_USB_GADGET_M66592=y CONFIG_USB_M66592=y # CONFIG_USB_GADGET_AMD5536UDC is not set # CONFIG_USB_GADGET_FSL_QE is not set # CONFIG_USB_GADGET_CI13XXX is not set # CONFIG_USB_GADGET_NET2280 is not set # CONFIG_USB_GADGET_GOKU is not set # CONFIG_USB_GADGET_DUMMY_HCD is not set CONFIG_USB_GADGET_DUALSPEED=y # CONFIG_USB_ZERO is not set CONFIG_USB_ETH=y CONFIG_USB_ETH_RNDIS=y # CONFIG_USB_GADGETFS is not set # CONFIG_USB_FILE_STORAGE is not set # CONFIG_USB_G_SERIAL is not set # CONFIG_USB_MIDI_GADGET is not set # CONFIG_USB_G_PRINTER is not set # CONFIG_USB_CDC_COMPOSITE is not set # # OTG and related infrastructure # CONFIG_USB_OTG_UTILS=y CONFIG_USB_GPIO_VBUS=y CONFIG_UWB=y CONFIG_UWB_HWA=y CONFIG_UWB_WHCI=y CONFIG_UWB_WLP=y CONFIG_UWB_I1480U=y CONFIG_UWB_I1480U_WLP=y CONFIG_MMC=y CONFIG_MMC_DEBUG=y CONFIG_MMC_UNSAFE_RESUME=y # # MMC/SD/SDIO Card Drivers # CONFIG_MMC_BLOCK=y CONFIG_MMC_BLOCK_BOUNCE=y CONFIG_SDIO_UART=y CONFIG_MMC_TEST=y # # MMC/SD/SDIO Host Controller Drivers # CONFIG_MMC_SDHCI=y CONFIG_MMC_SDHCI_PCI=y CONFIG_MMC_RICOH_MMC=y CONFIG_MMC_WBSD=y CONFIG_MMC_TIFM_SD=y CONFIG_MMC_SDRICOH_CS=y CONFIG_MEMSTICK=y CONFIG_MEMSTICK_DEBUG=y # # MemoryStick drivers # CONFIG_MEMSTICK_UNSAFE_RESUME=y CONFIG_MSPRO_BLOCK=y # # MemoryStick Host Controller Drivers # CONFIG_MEMSTICK_TIFM_MS=y CONFIG_MEMSTICK_JMICRON_38X=y CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y # # LED drivers # CONFIG_LEDS_NET48XX=y CONFIG_LEDS_WRAP=y CONFIG_LEDS_ALIX2=y CONFIG_LEDS_PCA9532=y CONFIG_LEDS_GPIO=y CONFIG_LEDS_HP_DISK=y CONFIG_LEDS_CLEVO_MAIL=y CONFIG_LEDS_PCA955X=y CONFIG_LEDS_DA903X=y # # LED Triggers # CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGER_TIMER=y CONFIG_LEDS_TRIGGER_IDE_DISK=y CONFIG_LEDS_TRIGGER_HEARTBEAT=y CONFIG_LEDS_TRIGGER_BACKLIGHT=y CONFIG_LEDS_TRIGGER_DEFAULT_ON=y CONFIG_ACCESSIBILITY=y CONFIG_A11Y_BRAILLE_CONSOLE=y CONFIG_INFINIBAND=y CONFIG_INFINIBAND_USER_MAD=y CONFIG_INFINIBAND_USER_ACCESS=y CONFIG_INFINIBAND_USER_MEM=y CONFIG_INFINIBAND_ADDR_TRANS=y CONFIG_INFINIBAND_MTHCA=y CONFIG_INFINIBAND_MTHCA_DEBUG=y CONFIG_INFINIBAND_AMSO1100=y CONFIG_INFINIBAND_AMSO1100_DEBUG=y CONFIG_INFINIBAND_CXGB3=y CONFIG_INFINIBAND_CXGB3_DEBUG=y CONFIG_MLX4_INFINIBAND=y CONFIG_INFINIBAND_NES=y CONFIG_INFINIBAND_NES_DEBUG=y CONFIG_INFINIBAND_IPOIB=y CONFIG_INFINIBAND_IPOIB_CM=y CONFIG_INFINIBAND_IPOIB_DEBUG=y CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y CONFIG_INFINIBAND_SRP=y CONFIG_INFINIBAND_ISER=y CONFIG_EDAC=y # # Reporting subsystems # CONFIG_EDAC_DEBUG=y CONFIG_EDAC_MM_EDAC=y CONFIG_EDAC_AMD76X=y CONFIG_EDAC_E7XXX=y CONFIG_EDAC_E752X=y CONFIG_EDAC_I82875P=y CONFIG_EDAC_I82975X=y CONFIG_EDAC_I3000=y CONFIG_EDAC_X38=y CONFIG_EDAC_I82860=y CONFIG_EDAC_R82600=y CONFIG_EDAC_I5000=y CONFIG_EDAC_I5100=y CONFIG_RTC_LIB=y CONFIG_RTC_CLASS=y CONFIG_RTC_HCTOSYS=y CONFIG_RTC_HCTOSYS_DEVICE="rtc0" CONFIG_RTC_DEBUG=y # # RTC interfaces # CONFIG_RTC_INTF_SYSFS=y CONFIG_RTC_INTF_PROC=y CONFIG_RTC_INTF_DEV=y CONFIG_RTC_INTF_DEV_UIE_EMUL=y CONFIG_RTC_DRV_TEST=y # # I2C RTC drivers # CONFIG_RTC_DRV_DS1307=y CONFIG_RTC_DRV_DS1374=y CONFIG_RTC_DRV_DS1672=y CONFIG_RTC_DRV_MAX6900=y CONFIG_RTC_DRV_RS5C372=y CONFIG_RTC_DRV_ISL1208=y CONFIG_RTC_DRV_X1205=y CONFIG_RTC_DRV_PCF8563=y CONFIG_RTC_DRV_PCF8583=y CONFIG_RTC_DRV_M41T80=y CONFIG_RTC_DRV_M41T80_WDT=y CONFIG_RTC_DRV_TWL4030=y CONFIG_RTC_DRV_S35390A=y CONFIG_RTC_DRV_FM3130=y CONFIG_RTC_DRV_RX8581=y # # SPI RTC drivers # CONFIG_RTC_DRV_M41T94=y CONFIG_RTC_DRV_DS1305=y CONFIG_RTC_DRV_DS1390=y CONFIG_RTC_DRV_MAX6902=y CONFIG_RTC_DRV_R9701=y CONFIG_RTC_DRV_RS5C348=y CONFIG_RTC_DRV_DS3234=y # # Platform RTC drivers # CONFIG_RTC_DRV_CMOS=y CONFIG_RTC_DRV_DS1286=y CONFIG_RTC_DRV_DS1511=y CONFIG_RTC_DRV_DS1553=y CONFIG_RTC_DRV_DS1742=y CONFIG_RTC_DRV_STK17TA8=y CONFIG_RTC_DRV_M48T86=y CONFIG_RTC_DRV_M48T35=y CONFIG_RTC_DRV_M48T59=y CONFIG_RTC_DRV_BQ4802=y CONFIG_RTC_DRV_V3020=y CONFIG_RTC_DRV_WM8350=y # # on-CPU RTC drivers # CONFIG_DMADEVICES=y # # DMA Devices # CONFIG_INTEL_IOATDMA=y CONFIG_DMA_ENGINE=y # # DMA Clients # CONFIG_NET_DMA=y CONFIG_DMATEST=y CONFIG_DCA=y CONFIG_AUXDISPLAY=y CONFIG_KS0108=y CONFIG_KS0108_PORT=0x378 CONFIG_KS0108_DELAY=2 CONFIG_CFAG12864B=y CONFIG_CFAG12864B_RATE=20 CONFIG_UIO=y CONFIG_UIO_CIF=y CONFIG_UIO_PDRV=y CONFIG_UIO_PDRV_GENIRQ=y CONFIG_UIO_SMX=y CONFIG_UIO_SERCOS3=y CONFIG_STAGING=y CONFIG_STAGING_EXCLUDE_BUILD=y CONFIG_X86_PLATFORM_DEVICES=y CONFIG_ACER_WMI=y CONFIG_FUJITSU_LAPTOP=y CONFIG_FUJITSU_LAPTOP_DEBUG=y CONFIG_TC1100_WMI=y CONFIG_HP_WMI=y CONFIG_MSI_LAPTOP=y CONFIG_PANASONIC_LAPTOP=y CONFIG_COMPAL_LAPTOP=y CONFIG_SONY_LAPTOP=y CONFIG_SONYPI_COMPAT=y CONFIG_THINKPAD_ACPI=y CONFIG_THINKPAD_ACPI_DEBUG=y CONFIG_THINKPAD_ACPI_BAY=y CONFIG_THINKPAD_ACPI_VIDEO=y CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y CONFIG_INTEL_MENLOW=y CONFIG_EEEPC_LAPTOP=y # # Firmware Drivers # CONFIG_EDD=y CONFIG_EDD_OFF=y CONFIG_FIRMWARE_MEMMAP=y CONFIG_EFI_VARS=y CONFIG_DELL_RBU=y CONFIG_DCDBAS=y CONFIG_DMIID=y CONFIG_ISCSI_IBFT_FIND=y CONFIG_ISCSI_IBFT=y # # File systems # CONFIG_EXT2_FS=y CONFIG_EXT2_FS_XATTR=y CONFIG_EXT2_FS_POSIX_ACL=y CONFIG_EXT2_FS_SECURITY=y CONFIG_EXT2_FS_XIP=y CONFIG_EXT3_FS=y CONFIG_EXT3_FS_XATTR=y CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_EXT3_FS_SECURITY=y CONFIG_EXT4_FS=y CONFIG_EXT4DEV_COMPAT=y CONFIG_EXT4_FS_XATTR=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y CONFIG_FS_XIP=y CONFIG_JBD=y CONFIG_JBD_DEBUG=y CONFIG_JBD2=y CONFIG_JBD2_DEBUG=y CONFIG_FS_MBCACHE=y CONFIG_REISERFS_FS=y CONFIG_REISERFS_CHECK=y CONFIG_REISERFS_PROC_INFO=y CONFIG_REISERFS_FS_XATTR=y CONFIG_REISERFS_FS_POSIX_ACL=y CONFIG_REISERFS_FS_SECURITY=y CONFIG_JFS_FS=y CONFIG_JFS_POSIX_ACL=y CONFIG_JFS_SECURITY=y CONFIG_JFS_DEBUG=y CONFIG_JFS_STATISTICS=y CONFIG_FS_POSIX_ACL=y CONFIG_FILE_LOCKING=y CONFIG_XFS_FS=y CONFIG_XFS_QUOTA=y CONFIG_XFS_POSIX_ACL=y CONFIG_XFS_RT=y CONFIG_XFS_DEBUG=y CONFIG_GFS2_FS=y CONFIG_GFS2_FS_LOCKING_DLM=y CONFIG_OCFS2_FS=y CONFIG_OCFS2_FS_O2CB=y CONFIG_OCFS2_FS_USERSPACE_CLUSTER=y CONFIG_OCFS2_FS_STATS=y CONFIG_OCFS2_DEBUG_MASKLOG=y CONFIG_OCFS2_DEBUG_FS=y CONFIG_OCFS2_FS_POSIX_ACL=y CONFIG_DNOTIFY=y CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y CONFIG_QUOTA=y CONFIG_QUOTA_NETLINK_INTERFACE=y CONFIG_PRINT_QUOTA_WARNING=y CONFIG_QUOTA_TREE=y CONFIG_QFMT_V1=y CONFIG_QFMT_V2=y CONFIG_QUOTACTL=y CONFIG_AUTOFS_FS=y CONFIG_AUTOFS4_FS=y CONFIG_FUSE_FS=y CONFIG_GENERIC_ACL=y # # CD-ROM/DVD Filesystems # CONFIG_ISO9660_FS=y CONFIG_JOLIET=y CONFIG_ZISOFS=y CONFIG_UDF_FS=y CONFIG_UDF_NLS=y # # DOS/FAT/NT Filesystems # CONFIG_FAT_FS=y CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y CONFIG_FAT_DEFAULT_CODEPAGE=437 CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" CONFIG_NTFS_FS=y CONFIG_NTFS_DEBUG=y CONFIG_NTFS_RW=y # # Pseudo filesystems # CONFIG_PROC_FS=y CONFIG_PROC_KCORE=y CONFIG_PROC_VMCORE=y CONFIG_PROC_SYSCTL=y CONFIG_PROC_PAGE_MONITOR=y CONFIG_SYSFS=y CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y CONFIG_HUGETLBFS=y CONFIG_HUGETLB_PAGE=y CONFIG_CONFIGFS_FS=y # # Miscellaneous filesystems # CONFIG_ADFS_FS=y CONFIG_ADFS_FS_RW=y CONFIG_AFFS_FS=y CONFIG_ECRYPT_FS=y CONFIG_HFS_FS=y CONFIG_HFSPLUS_FS=y CONFIG_BEFS_FS=y CONFIG_BEFS_DEBUG=y CONFIG_BFS_FS=y CONFIG_EFS_FS=y CONFIG_JFFS2_FS=y CONFIG_JFFS2_FS_DEBUG=0 CONFIG_JFFS2_FS_WRITEBUFFER=y CONFIG_JFFS2_FS_WBUF_VERIFY=y CONFIG_JFFS2_SUMMARY=y CONFIG_JFFS2_FS_XATTR=y CONFIG_JFFS2_FS_POSIX_ACL=y CONFIG_JFFS2_FS_SECURITY=y CONFIG_JFFS2_COMPRESSION_OPTIONS=y CONFIG_JFFS2_ZLIB=y CONFIG_JFFS2_LZO=y CONFIG_JFFS2_RTIME=y CONFIG_JFFS2_RUBIN=y # CONFIG_JFFS2_CMODE_NONE is not set CONFIG_JFFS2_CMODE_PRIORITY=y # CONFIG_JFFS2_CMODE_SIZE is not set # CONFIG_JFFS2_CMODE_FAVOURLZO is not set CONFIG_UBIFS_FS=y CONFIG_UBIFS_FS_XATTR=y CONFIG_UBIFS_FS_ADVANCED_COMPR=y CONFIG_UBIFS_FS_LZO=y CONFIG_UBIFS_FS_ZLIB=y CONFIG_UBIFS_FS_DEBUG=y CONFIG_UBIFS_FS_DEBUG_MSG_LVL=0 CONFIG_UBIFS_FS_DEBUG_CHKS=y CONFIG_CRAMFS=y CONFIG_VXFS_FS=y CONFIG_MINIX_FS=y CONFIG_OMFS_FS=y CONFIG_HPFS_FS=y CONFIG_QNX4FS_FS=y CONFIG_ROMFS_FS=y CONFIG_SYSV_FS=y CONFIG_UFS_FS=y CONFIG_UFS_FS_WRITE=y CONFIG_UFS_DEBUG=y CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NFS_FS=y CONFIG_NFS_V3=y CONFIG_NFS_V3_ACL=y CONFIG_NFS_V4=y CONFIG_ROOT_NFS=y CONFIG_NFSD=y CONFIG_NFSD_V2_ACL=y CONFIG_NFSD_V3=y CONFIG_NFSD_V3_ACL=y CONFIG_NFSD_V4=y CONFIG_LOCKD=y CONFIG_LOCKD_V4=y CONFIG_EXPORTFS=y CONFIG_NFS_ACL_SUPPORT=y CONFIG_NFS_COMMON=y CONFIG_SUNRPC=y CONFIG_SUNRPC_GSS=y CONFIG_SUNRPC_XPRT_RDMA=y CONFIG_SUNRPC_REGISTER_V4=y CONFIG_RPCSEC_GSS_KRB5=y CONFIG_RPCSEC_GSS_SPKM3=y CONFIG_SMB_FS=y CONFIG_SMB_NLS_DEFAULT=y CONFIG_SMB_NLS_REMOTE="cp437" CONFIG_CIFS=y CONFIG_CIFS_STATS=y CONFIG_CIFS_STATS2=y CONFIG_CIFS_WEAK_PW_HASH=y CONFIG_CIFS_UPCALL=y CONFIG_CIFS_XATTR=y CONFIG_CIFS_POSIX=y CONFIG_CIFS_DEBUG2=y CONFIG_CIFS_EXPERIMENTAL=y CONFIG_CIFS_DFS_UPCALL=y CONFIG_NCP_FS=y CONFIG_NCPFS_PACKET_SIGNING=y CONFIG_NCPFS_IOCTL_LOCKING=y CONFIG_NCPFS_STRONG=y CONFIG_NCPFS_NFS_NS=y CONFIG_NCPFS_OS2_NS=y CONFIG_NCPFS_SMALLDOS=y CONFIG_NCPFS_NLS=y CONFIG_NCPFS_EXTRAS=y CONFIG_CODA_FS=y CONFIG_AFS_FS=y CONFIG_AFS_DEBUG=y CONFIG_9P_FS=y # # Partition Types # CONFIG_PARTITION_ADVANCED=y CONFIG_ACORN_PARTITION=y CONFIG_ACORN_PARTITION_CUMANA=y CONFIG_ACORN_PARTITION_EESOX=y CONFIG_ACORN_PARTITION_ICS=y CONFIG_ACORN_PARTITION_ADFS=y CONFIG_ACORN_PARTITION_POWERTEC=y CONFIG_ACORN_PARTITION_RISCIX=y CONFIG_OSF_PARTITION=y CONFIG_AMIGA_PARTITION=y CONFIG_ATARI_PARTITION=y CONFIG_MAC_PARTITION=y CONFIG_MSDOS_PARTITION=y CONFIG_BSD_DISKLABEL=y CONFIG_MINIX_SUBPARTITION=y CONFIG_SOLARIS_X86_PARTITION=y CONFIG_UNIXWARE_DISKLABEL=y CONFIG_LDM_PARTITION=y CONFIG_LDM_DEBUG=y CONFIG_SGI_PARTITION=y CONFIG_ULTRIX_PARTITION=y CONFIG_SUN_PARTITION=y CONFIG_KARMA_PARTITION=y CONFIG_EFI_PARTITION=y CONFIG_SYSV68_PARTITION=y CONFIG_NLS=y CONFIG_NLS_DEFAULT="iso8859-1" CONFIG_NLS_CODEPAGE_437=y CONFIG_NLS_CODEPAGE_737=y CONFIG_NLS_CODEPAGE_775=y CONFIG_NLS_CODEPAGE_850=y CONFIG_NLS_CODEPAGE_852=y CONFIG_NLS_CODEPAGE_855=y CONFIG_NLS_CODEPAGE_857=y CONFIG_NLS_CODEPAGE_860=y CONFIG_NLS_CODEPAGE_861=y CONFIG_NLS_CODEPAGE_862=y CONFIG_NLS_CODEPAGE_863=y CONFIG_NLS_CODEPAGE_864=y CONFIG_NLS_CODEPAGE_865=y CONFIG_NLS_CODEPAGE_866=y CONFIG_NLS_CODEPAGE_869=y CONFIG_NLS_CODEPAGE_936=y CONFIG_NLS_CODEPAGE_950=y CONFIG_NLS_CODEPAGE_932=y CONFIG_NLS_CODEPAGE_949=y CONFIG_NLS_CODEPAGE_874=y CONFIG_NLS_ISO8859_8=y CONFIG_NLS_CODEPAGE_1250=y CONFIG_NLS_CODEPAGE_1251=y CONFIG_NLS_ASCII=y CONFIG_NLS_ISO8859_1=y CONFIG_NLS_ISO8859_2=y CONFIG_NLS_ISO8859_3=y CONFIG_NLS_ISO8859_4=y CONFIG_NLS_ISO8859_5=y CONFIG_NLS_ISO8859_6=y CONFIG_NLS_ISO8859_7=y CONFIG_NLS_ISO8859_9=y CONFIG_NLS_ISO8859_13=y CONFIG_NLS_ISO8859_14=y CONFIG_NLS_ISO8859_15=y CONFIG_NLS_KOI8_R=y CONFIG_NLS_KOI8_U=y CONFIG_NLS_UTF8=y CONFIG_DLM=y CONFIG_DLM_DEBUG=y # # Kernel hacking # CONFIG_TRACE_IRQFLAGS_SUPPORT=y CONFIG_PRINTK_TIME=y CONFIG_ENABLE_WARN_DEPRECATED=y CONFIG_ENABLE_MUST_CHECK=y CONFIG_FRAME_WARN=1024 CONFIG_MAGIC_SYSRQ=y CONFIG_UNUSED_SYMBOLS=y CONFIG_DEBUG_FS=y CONFIG_HEADERS_CHECK=y CONFIG_DEBUG_KERNEL=y CONFIG_DEBUG_SHIRQ=y CONFIG_DETECT_SOFTLOCKUP=y CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=1 CONFIG_SCHED_DEBUG=y CONFIG_SCHEDSTATS=y CONFIG_TIMER_STATS=y CONFIG_DEBUG_OBJECTS=y CONFIG_DEBUG_OBJECTS_SELFTEST=y CONFIG_DEBUG_OBJECTS_FREE=y CONFIG_DEBUG_OBJECTS_TIMERS=y CONFIG_SLUB_DEBUG_ON=y CONFIG_SLUB_STATS=y CONFIG_DEBUG_RT_MUTEXES=y CONFIG_DEBUG_PI_LIST=y CONFIG_RT_MUTEX_TESTER=y CONFIG_DEBUG_SPINLOCK=y CONFIG_DEBUG_MUTEXES=y CONFIG_DEBUG_LOCK_ALLOC=y CONFIG_PROVE_LOCKING=y CONFIG_LOCKDEP=y CONFIG_LOCK_STAT=y CONFIG_DEBUG_LOCKDEP=y CONFIG_TRACE_IRQFLAGS=y CONFIG_DEBUG_SPINLOCK_SLEEP=y CONFIG_DEBUG_LOCKING_API_SELFTESTS=y CONFIG_STACKTRACE=y CONFIG_DEBUG_KOBJECT=y CONFIG_DEBUG_HIGHMEM=y CONFIG_DEBUG_BUGVERBOSE=y CONFIG_DEBUG_INFO=y CONFIG_DEBUG_VM=y CONFIG_DEBUG_VIRTUAL=y CONFIG_DEBUG_WRITECOUNT=y CONFIG_DEBUG_MEMORY_INIT=y CONFIG_DEBUG_LIST=y CONFIG_DEBUG_SG=y CONFIG_DEBUG_NOTIFIERS=y CONFIG_FRAME_POINTER=y CONFIG_BOOT_PRINTK_DELAY=y CONFIG_RCU_TORTURE_TEST=y CONFIG_RCU_TORTURE_TEST_RUNNABLE=y CONFIG_RCU_CPU_STALL_DETECTOR=y CONFIG_KPROBES_SANITY_TEST=y CONFIG_BACKTRACE_SELF_TEST=y CONFIG_DEBUG_BLOCK_EXT_DEVT=y CONFIG_LKDTM=y CONFIG_FAULT_INJECTION=y CONFIG_FAILSLAB=y CONFIG_FAIL_PAGE_ALLOC=y CONFIG_FAIL_MAKE_REQUEST=y CONFIG_FAIL_IO_TIMEOUT=y CONFIG_FAULT_INJECTION_DEBUG_FS=y CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y CONFIG_LATENCYTOP=y CONFIG_SYSCTL_SYSCALL_CHECK=y CONFIG_USER_STACKTRACE_SUPPORT=y CONFIG_NOP_TRACER=y CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_RET_TRACER=y CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y CONFIG_HAVE_DYNAMIC_FTRACE=y CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y CONFIG_TRACER_MAX_TRACE=y CONFIG_RING_BUFFER=y CONFIG_TRACING=y # # Tracers # CONFIG_FUNCTION_TRACER=y CONFIG_FUNCTION_RET_TRACER=y CONFIG_IRQSOFF_TRACER=y CONFIG_SYSPROF_TRACER=y CONFIG_SCHED_TRACER=y CONFIG_CONTEXT_SWITCH_TRACER=y CONFIG_BOOT_TRACER=y CONFIG_TRACE_BRANCH_PROFILING=y CONFIG_PROFILE_ALL_BRANCHES=y CONFIG_TRACING_BRANCHES=y CONFIG_BRANCH_TRACER=y CONFIG_STACK_TRACER=y CONFIG_DYNAMIC_FTRACE=y CONFIG_FTRACE_MCOUNT_RECORD=y CONFIG_PROVIDE_OHCI1394_DMA_INIT=y CONFIG_FIREWIRE_OHCI_REMOTE_DMA=y CONFIG_KMEMTRACE=y CONFIG_BUILD_DOCSRC=y CONFIG_DYNAMIC_PRINTK_DEBUG=y CONFIG_SAMPLES=y CONFIG_SAMPLE_MARKERS=m CONFIG_SAMPLE_TRACEPOINTS=m CONFIG_SAMPLE_KOBJECT=y CONFIG_SAMPLE_KPROBES=m CONFIG_SAMPLE_KRETPROBES=m CONFIG_HAVE_ARCH_KGDB=y CONFIG_KGDB=y CONFIG_KGDB_SERIAL_CONSOLE=y CONFIG_KGDB_TESTS=y CONFIG_KGDB_TESTS_ON_BOOT=y CONFIG_KGDB_TESTS_BOOT_STRING="V1F100" CONFIG_STRICT_DEVMEM=y CONFIG_X86_VERBOSE_BOOTUP=y CONFIG_EARLY_PRINTK=y CONFIG_EARLY_PRINTK_DBGP=y CONFIG_DEBUG_STACKOVERFLOW=y CONFIG_DEBUG_STACK_USAGE=y CONFIG_DEBUG_PAGEALLOC=y CONFIG_DEBUG_PER_CPU_MAPS=y CONFIG_X86_PTDUMP=y CONFIG_DEBUG_RODATA=y CONFIG_DEBUG_RODATA_TEST=y CONFIG_DEBUG_NX_TEST=m CONFIG_4KSTACKS=y CONFIG_DOUBLEFAULT=y CONFIG_MMIOTRACE=y CONFIG_MMIOTRACE_TEST=m CONFIG_IO_DELAY_TYPE_0X80=0 CONFIG_IO_DELAY_TYPE_0XED=1 CONFIG_IO_DELAY_TYPE_UDELAY=2 CONFIG_IO_DELAY_TYPE_NONE=3 CONFIG_IO_DELAY_0X80=y # CONFIG_IO_DELAY_0XED is not set # CONFIG_IO_DELAY_UDELAY is not set # CONFIG_IO_DELAY_NONE is not set CONFIG_DEFAULT_IO_DELAY_TYPE=0 CONFIG_DEBUG_BOOT_PARAMS=y CONFIG_CPA_DEBUG=y CONFIG_OPTIMIZE_INLINING=y # # Security options # CONFIG_KEYS=y CONFIG_KEYS_DEBUG_PROC_KEYS=y CONFIG_SECURITY=y CONFIG_SECURITYFS=y CONFIG_SECURITY_NETWORK=y CONFIG_SECURITY_NETWORK_XFRM=y CONFIG_SECURITY_FILE_CAPABILITIES=y CONFIG_SECURITY_ROOTPLUG=y CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0 CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1 CONFIG_SECURITY_SELINUX_DISABLE=y CONFIG_SECURITY_SELINUX_DEVELOP=y CONFIG_SECURITY_SELINUX_AVC_STATS=y CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 CONFIG_SECURITY_SELINUX_ENABLE_SECMARK_DEFAULT=y CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX=y CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX_VALUE=19 CONFIG_SECURITY_SMACK=y CONFIG_XOR_BLOCKS=y CONFIG_ASYNC_CORE=y CONFIG_ASYNC_MEMCPY=y CONFIG_ASYNC_XOR=y CONFIG_CRYPTO=y # # Crypto core or helper # CONFIG_CRYPTO_FIPS=y CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_AEAD=y CONFIG_CRYPTO_BLKCIPHER=y CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_RNG=y CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_GF128MUL=y CONFIG_CRYPTO_NULL=y CONFIG_CRYPTO_CRYPTD=y CONFIG_CRYPTO_AUTHENC=y CONFIG_CRYPTO_TEST=m # # Authenticated Encryption with Associated Data # CONFIG_CRYPTO_CCM=y CONFIG_CRYPTO_GCM=y CONFIG_CRYPTO_SEQIV=y # # Block modes # CONFIG_CRYPTO_CBC=y CONFIG_CRYPTO_CTR=y CONFIG_CRYPTO_CTS=y CONFIG_CRYPTO_ECB=y CONFIG_CRYPTO_LRW=y CONFIG_CRYPTO_PCBC=y CONFIG_CRYPTO_XTS=y # # Hash modes # CONFIG_CRYPTO_HMAC=y CONFIG_CRYPTO_XCBC=y # # Digest # CONFIG_CRYPTO_CRC32C=y CONFIG_CRYPTO_CRC32C_INTEL=y CONFIG_CRYPTO_MD4=y CONFIG_CRYPTO_MD5=y CONFIG_CRYPTO_MICHAEL_MIC=y CONFIG_CRYPTO_RMD128=y CONFIG_CRYPTO_RMD160=y CONFIG_CRYPTO_RMD256=y CONFIG_CRYPTO_RMD320=y CONFIG_CRYPTO_SHA1=y CONFIG_CRYPTO_SHA256=y CONFIG_CRYPTO_SHA512=y CONFIG_CRYPTO_TGR192=y CONFIG_CRYPTO_WP512=y # # Ciphers # CONFIG_CRYPTO_AES=y CONFIG_CRYPTO_AES_586=y CONFIG_CRYPTO_ANUBIS=y CONFIG_CRYPTO_ARC4=y CONFIG_CRYPTO_BLOWFISH=y CONFIG_CRYPTO_CAMELLIA=y CONFIG_CRYPTO_CAST5=y CONFIG_CRYPTO_CAST6=y CONFIG_CRYPTO_DES=y CONFIG_CRYPTO_FCRYPT=y CONFIG_CRYPTO_KHAZAD=y CONFIG_CRYPTO_SALSA20=y CONFIG_CRYPTO_SALSA20_586=y CONFIG_CRYPTO_SEED=y CONFIG_CRYPTO_SERPENT=y CONFIG_CRYPTO_TEA=y CONFIG_CRYPTO_TWOFISH=y CONFIG_CRYPTO_TWOFISH_COMMON=y CONFIG_CRYPTO_TWOFISH_586=y # # Compression # CONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_LZO=y # # Random Number Generation # CONFIG_CRYPTO_ANSI_CPRNG=y CONFIG_CRYPTO_HW=y CONFIG_CRYPTO_DEV_PADLOCK=y CONFIG_CRYPTO_DEV_PADLOCK_AES=y CONFIG_CRYPTO_DEV_PADLOCK_SHA=y CONFIG_CRYPTO_DEV_GEODE=y CONFIG_CRYPTO_DEV_HIFN_795X=y CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y CONFIG_HAVE_KVM=y CONFIG_VIRTUALIZATION=y CONFIG_KVM=y CONFIG_KVM_INTEL=y CONFIG_KVM_AMD=y CONFIG_KVM_TRACE=y CONFIG_LGUEST=y CONFIG_VIRTIO=y CONFIG_VIRTIO_RING=y CONFIG_VIRTIO_PCI=y CONFIG_VIRTIO_BALLOON=y # # Library routines # CONFIG_BITREVERSE=y CONFIG_GENERIC_FIND_FIRST_BIT=y CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_FIND_LAST_BIT=y CONFIG_CRC_CCITT=y CONFIG_CRC16=y CONFIG_CRC_T10DIF=y CONFIG_CRC_ITU_T=y CONFIG_CRC32=y CONFIG_CRC7=y CONFIG_LIBCRC32C=y CONFIG_AUDIT_GENERIC=y CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_LZO_COMPRESS=y CONFIG_LZO_DECOMPRESS=y CONFIG_GENERIC_ALLOCATOR=y CONFIG_REED_SOLOMON=y CONFIG_REED_SOLOMON_DEC16=y CONFIG_TEXTSEARCH=y CONFIG_TEXTSEARCH_KMP=y CONFIG_TEXTSEARCH_BM=y CONFIG_TEXTSEARCH_FSM=y CONFIG_PLIST=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT=y CONFIG_HAS_DMA=y CONFIG_CHECK_SIGNATURE=y CONFIG_CPUMASK_OFFSTACK=y -- Thanks & Regards, Kamalesh Babulal, Linux Technology Center, IBM, ISTL. From lachlan@sgi.com Thu Dec 4 00:33:02 2008 Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB46X1IF029514 for ; Thu, 4 Dec 2008 00:33:02 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay3.corp.sgi.com (Postfix) with SMTP id 27342AC016 for ; Wed, 3 Dec 2008 22:32:59 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA20821 for ; Thu, 4 Dec 2008 17:32:58 +1100 Message-ID: <493779B1.3010703@sgi.com> Date: Thu, 04 Dec 2008 17:33:21 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: xfs-oss Subject: [Fwd: [PATCH] Fix race in xfs_write() between direct and buffered I/O with DMAPI] Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit ping. (forwarding message since my mailer eats the patch when replying). -------- Original Message -------- Subject: [PATCH] Fix race in xfs_write() between direct and buffered I/O with DMAPI Date: Mon, 22 Sep 2008 17:06:24 +1000 From: Lachlan McIlroy Reply-To: lachlan@sgi.com To: xfs-dev , xfs-oss The iolock is dropped and re-acquired around the call to XFS_SEND_NAMESP(). While the iolock is released the file can become cached. We then 'goto retry' and - if we are doing direct I/O - mapping->nrpages may now be non zero but need_i_mutex will be zero and we will hit the WARN_ON(). Since we have dropped the I/O lock then the file size may have also changed so what we need to do here is 'goto start' like we do for the XFS_SEND_DATA() DMAPI event. We also need to update the filesize before releasing the iolock so that needs to be done before the XFS_SEND_NAMESP event. If we drop the iolock before setting the filesize we could race with a truncate. --- a/fs/xfs/linux-2.6/xfs_lrw.c 2008-09-22 15:47:38.000000000 +1000 +++ b/fs/xfs/linux-2.6/xfs_lrw.c 2008-09-22 15:50:56.000000000 +1000 @@ -707,7 +707,6 @@ start: } } -retry: /* We can write back this queue in page reclaim */ current->backing_dev_info = mapping->backing_dev_info; @@ -763,6 +762,17 @@ retry: if (ret == -EIOCBQUEUED && !(ioflags & IO_ISAIO)) ret = wait_on_sync_kiocb(iocb); + isize = i_size_read(inode); + if (unlikely(ret < 0 && ret != -EFAULT && *offset > isize)) + *offset = isize; + + if (*offset > xip->i_size) { + xfs_ilock(xip, XFS_ILOCK_EXCL); + if (*offset > xip->i_size) + xip->i_size = *offset; + xfs_iunlock(xip, XFS_ILOCK_EXCL); + } + if (ret == -ENOSPC && DM_EVENT_ENABLED(xip, DM_EVENT_NOSPACE) && !(ioflags & IO_INVIS)) { xfs_iunlock(xip, iolock); @@ -776,20 +786,7 @@ retry: xfs_ilock(xip, iolock); if (error) goto out_unlock_internal; - pos = xip->i_size; - ret = 0; - goto retry; - } - - isize = i_size_read(inode); - if (unlikely(ret < 0 && ret != -EFAULT && *offset > isize)) - *offset = isize; - - if (*offset > xip->i_size) { - xfs_ilock(xip, XFS_ILOCK_EXCL); - if (*offset > xip->i_size) - xip->i_size = *offset; - xfs_iunlock(xip, XFS_ILOCK_EXCL); + goto start; } error = -ret; From lachlan@sgi.com Thu Dec 4 00:58:48 2008 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 mB46wmLH031041 for ; Thu, 4 Dec 2008 00:58:48 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id 37B6830408C for ; Wed, 3 Dec 2008 22:58:46 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA21190 for ; Thu, 4 Dec 2008 17:58:44 +1100 Message-ID: <49377FBC.5020501@sgi.com> Date: Thu, 04 Dec 2008 17:59:08 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] Use the incore inode size in xfs_file_readdir() Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit We should be using the incore inode size here not the linux inode size. The incore inode size is always up to date for directories whereas the linux inode size is not updated for directories. We've hit assertions in xfs_bmap() and traced it back to the linux inode size being zero here but the incore size being correct. --- xfs-fix.orig/fs/xfs/linux-2.6/xfs_file.c +++ xfs-fix/fs/xfs/linux-2.6/xfs_file.c @@ -254,7 +254,7 @@ xfs_file_readdir( * point we can change the ->readdir prototype to include the * buffer size. */ - bufsize = (size_t)min_t(loff_t, PAGE_SIZE, inode->i_size); + bufsize = (size_t)min_t(loff_t, PAGE_SIZE, ip->i_d.di_size); error = xfs_readdir(ip, dirent, bufsize, (xfs_off_t *)&filp->f_pos, filldir); From lachlan@sgi.com Thu Dec 4 01:05:50 2008 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 mB475oqd031481 for ; Thu, 4 Dec 2008 01:05:50 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id 7130B304085 for ; Wed, 3 Dec 2008 23:05:46 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id SAA21339 for ; Thu, 4 Dec 2008 18:05:44 +1100 Message-ID: <4937815F.5010500@sgi.com> Date: Thu, 04 Dec 2008 18:06:07 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] Fix bug in xlogitm idbg command Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Print out the correct field for the back pointer in the xlogitm idbg command. --- a/fs/xfs/xfsidbg.c 2008-12-04 13:57:45.000000000 +1100 +++ b/fs/xfs/xfsidbg.c 2008-12-03 17:16:55.000000000 +1100 @@ -6373,7 +6250,7 @@ xfsidbg_xlogitem(xfs_log_item_t *lip) printflags((uint)(lip->li_flags), li_flags,"log"); kdb_printf("\n"); kdb_printf("ail forw 0x%p ail back 0x%p lsn %s\ndesc %p ops 0x%p", - lip->li_ail.next, lip->li_ail.next, + lip->li_ail.next, lip->li_ail.prev, xfs_fmtlsn(&(lip->li_lsn)), lip->li_desc, lip->li_ops); kdb_printf(" iodonefunc &0x%p\n", lip->li_cb); if (lip->li_type == XFS_LI_BUF) { From SRS0+f5e6b4c98b71a692776a+1929+infradead.org+hch@bombadil.srs.infradead.org Thu Dec 4 01:07:27 2008 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 mB477Pxx031668 for ; Thu, 4 Dec 2008 01:07:27 -0600 X-ASG-Debug-ID: 1228374444-04a100140000-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 F015B168FE0D; Wed, 3 Dec 2008 23:07:24 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id CVPFFLfvABQZFDiU; Wed, 03 Dec 2008 23:07:24 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L88J2-00070t-K5; Thu, 04 Dec 2008 07:07:24 +0000 Date: Thu, 4 Dec 2008 02:07:24 -0500 From: Christoph Hellwig To: Lachlan McIlroy Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] Fix bug in xlogitm idbg command Subject: Re: [PATCH] Fix bug in xlogitm idbg command Message-ID: <20081204070724.GA29531@infradead.org> References: <4937815F.5010500@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4937815F.5010500@sgi.com> 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: 1228374444 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Dec 04, 2008 at 06:06:07PM +1100, Lachlan McIlroy wrote: > Print out the correct field for the back pointer in the > xlogitm idbg command. Looks good. From SRS0+f5e6b4c98b71a692776a+1929+infradead.org+hch@bombadil.srs.infradead.org Thu Dec 4 01:08:28 2008 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 mB478SRB031801 for ; Thu, 4 Dec 2008 01:08:28 -0600 X-ASG-Debug-ID: 1228374507-47ab02b70000-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 1B56616904BF; Wed, 3 Dec 2008 23:08:27 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id gawwSX1jjU8HCsNG; Wed, 03 Dec 2008 23:08:27 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L88K3-00029n-Pf; Thu, 04 Dec 2008 07:08:27 +0000 Date: Thu, 4 Dec 2008 02:08:27 -0500 From: Christoph Hellwig To: Lachlan McIlroy Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] Use the incore inode size in xfs_file_readdir() Subject: Re: [PATCH] Use the incore inode size in xfs_file_readdir() Message-ID: <20081204070827.GB29531@infradead.org> References: <49377FBC.5020501@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49377FBC.5020501@sgi.com> 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: 1228374508 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Dec 04, 2008 at 05:59:08PM +1100, Lachlan McIlroy wrote: > We should be using the incore inode size here not the linux inode > size. The incore inode size is always up to date for directories > whereas the linux inode size is not updated for directories. > > We've hit assertions in xfs_bmap() and traced it back to the linux > inode size being zero here but the incore size being correct. Heh. Looks good, but you can still call ->readdir with a 0 inode size, so you might want to check for that (actualyl I think other pathes are goign to take care of it, but..) From SRS0+f5e6b4c98b71a692776a+1929+infradead.org+hch@bombadil.srs.infradead.org Thu Dec 4 01:09:08 2008 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 mB4798pv031880 for ; Thu, 4 Dec 2008 01:09:08 -0600 X-ASG-Debug-ID: 1228374547-4d0e02370000-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 6DD3216904D0; Wed, 3 Dec 2008 23:09:07 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id sb7jAY5hNNBtZ13x; Wed, 03 Dec 2008 23:09:07 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L88Kh-0003o8-37; Thu, 04 Dec 2008 07:09:07 +0000 Date: Thu, 4 Dec 2008 02:09:07 -0500 From: Christoph Hellwig To: Lachlan McIlroy Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] Remove unused variable in ktrace_free() Subject: Re: [PATCH] Remove unused variable in ktrace_free() Message-ID: <20081204070907.GD29531@infradead.org> References: <4937765D.2030601@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4937765D.2030601@sgi.com> 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: 1228374547 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Dec 04, 2008 at 05:19:09PM +1100, Lachlan McIlroy wrote: > entries_size is probably left over from when we used to pass the > size to kmem_free(). Looks good. From SRS0+f5e6b4c98b71a692776a+1929+infradead.org+hch@bombadil.srs.infradead.org Thu Dec 4 01:09:22 2008 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 mB479LM4031913 for ; Thu, 4 Dec 2008 01:09:22 -0600 X-ASG-Debug-ID: 1228374561-04a400260000-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 4F04C16904DC for ; Wed, 3 Dec 2008 23:09:21 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id hwIMVcvLYaq1qUXT for ; Wed, 03 Dec 2008 23:09:21 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L88KQ-00035s-E6; Thu, 04 Dec 2008 07:08:50 +0000 Date: Thu, 4 Dec 2008 02:08:50 -0500 From: Christoph Hellwig To: Lachlan McIlroy Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] Remove unnecessary assertion Subject: Re: [PATCH] Remove unnecessary assertion Message-ID: <20081204070850.GC29531@infradead.org> References: <49377863.1070109@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49377863.1070109@sgi.com> 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: 1228374561 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Dec 04, 2008 at 05:27:47PM +1100, Lachlan McIlroy wrote: > Hit this assert because an inode was tagged with XFS_ICI_RECLAIM_TAG but > not XFS_IRECLAIMABLE|XFS_IRECLAIM. This is because xfs_iget_cache_hit() > first clears XFS_IRECLAIMABLE and then calls __xfs_inode_clear_reclaim_tag() > while only holding the pag_ici_lock in read mode so we can race with > xfs_reclaim_inodes_ag(). Looks like xfs_reclaim_inodes_ag() will do the > right thing anyway so just remove the assert. > > Thanks to Christoph for pointing out where the problem was. Yeah, given that I ran with this patch for a while you have my ACK for it. From SRS0+f5e6b4c98b71a692776a+1929+infradead.org+hch@bombadil.srs.infradead.org Thu Dec 4 01:09:35 2008 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 mB479YoS032009 for ; Thu, 4 Dec 2008 01:09:35 -0600 X-ASG-Debug-ID: 1228374574-47ab02c70000-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 5013916904E6; Wed, 3 Dec 2008 23:09:34 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 6LlR81vrr9CaHTGZ; Wed, 03 Dec 2008 23:09:34 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L88L7-0005zG-Ve; Thu, 04 Dec 2008 07:09:33 +0000 Date: Thu, 4 Dec 2008 02:09:33 -0500 From: Christoph Hellwig To: Lachlan McIlroy Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] Check return value of xfs_buf_get_noaddr() Subject: Re: [PATCH] Check return value of xfs_buf_get_noaddr() Message-ID: <20081204070933.GE29531@infradead.org> References: <49376D11.4010507@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49376D11.4010507@sgi.com> 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: 1228374574 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Dec 04, 2008 at 04:39:29PM +1100, Lachlan McIlroy wrote: > We check the return value of all other calls to xfs_buf_get_noaddr(). > Make sense to do it here too. Looks good. From lachlan@sgi.com Thu Dec 4 01:18:16 2008 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 mB47IF1h000961 for ; Thu, 4 Dec 2008 01:18:16 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id EC518304081 for ; Wed, 3 Dec 2008 23:18:12 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id SAA21577 for ; Thu, 4 Dec 2008 18:18:05 +1100 Message-ID: <49378444.9040108@sgi.com> Date: Thu, 04 Dec 2008 18:18:28 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: xfs-oss Subject: [Fwd: [PATCH] Fix speculative allocation beyond eof] Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit ping. Anyone have any objections to this? -------- Original Message -------- Subject: [PATCH] Fix speculative allocation beyond eof Date: Tue, 23 Sep 2008 13:14:44 +1000 From: Lachlan McIlroy Reply-To: lachlan@sgi.com To: xfs-dev , xfs-oss Speculative allocation beyond eof doesn't work properly. It was broken some time ago after a code cleanup that moved what is now xfs_iomap_eof_align_last_fsb() and xfs_iomap_eof_want_preallocate() out of xfs_iomap_write_delay() into separate functions. The code used to use the current file size in various checks but got changed to be max(file_size, i_new_size). Since i_new_size is the result of 'offset + count' then in xfs_iomap_eof_want_preallocate() the check for '(offset + count) <= isize' will always be true. ie if 'offset + count' is > ip->i_size then isize will be i_new_size and equal to 'offset + count'. This change fixes all the places that used to use the current file size. --- a/fs/xfs/xfs_iomap.c 2008-09-23 12:52:12.000000000 +1000 +++ b/fs/xfs/xfs_iomap.c 2008-09-23 12:51:29.000000000 +1000 @@ -290,7 +290,6 @@ STATIC int xfs_iomap_eof_align_last_fsb( xfs_mount_t *mp, xfs_inode_t *ip, - xfs_fsize_t isize, xfs_extlen_t extsize, xfs_fileoff_t *last_fsb) { @@ -306,14 +305,14 @@ xfs_iomap_eof_align_last_fsb( * stripe width and we are allocating past the allocation eof. */ else if (mp->m_swidth && (mp->m_flags & XFS_MOUNT_SWALLOC) && - (isize >= XFS_FSB_TO_B(mp, mp->m_swidth))) + (ip->i_size >= XFS_FSB_TO_B(mp, mp->m_swidth))) new_last_fsb = roundup_64(*last_fsb, mp->m_swidth); /* * Roundup the allocation request to a stripe unit (m_dalign) boundary * if the file size is >= stripe unit size, and we are allocating past * the allocation eof. */ - else if (mp->m_dalign && (isize >= XFS_FSB_TO_B(mp, mp->m_dalign))) + else if (mp->m_dalign && (ip->i_size >= XFS_FSB_TO_B(mp, mp->m_dalign))) new_last_fsb = roundup_64(*last_fsb, mp->m_dalign); /* @@ -403,7 +402,6 @@ xfs_iomap_write_direct( xfs_filblks_t count_fsb, resaligned; xfs_fsblock_t firstfsb; xfs_extlen_t extsz, temp; - xfs_fsize_t isize; int nimaps; int bmapi_flag; int quota_flag; @@ -426,15 +424,10 @@ xfs_iomap_write_direct( rt = XFS_IS_REALTIME_INODE(ip); extsz = xfs_get_extsz_hint(ip); - isize = ip->i_size; - if (ip->i_new_size > isize) - isize = ip->i_new_size; - offset_fsb = XFS_B_TO_FSBT(mp, offset); last_fsb = XFS_B_TO_FSB(mp, ((xfs_ufsize_t)(offset + count))); - if ((offset + count) > isize) { - error = xfs_iomap_eof_align_last_fsb(mp, ip, isize, extsz, - &last_fsb); + if ((offset + count) > ip->i_size) { + error = xfs_iomap_eof_align_last_fsb(mp, ip, extsz, &last_fsb); if (error) goto error_out; } else { @@ -559,7 +552,6 @@ STATIC int xfs_iomap_eof_want_preallocate( xfs_mount_t *mp, xfs_inode_t *ip, - xfs_fsize_t isize, xfs_off_t offset, size_t count, int ioflag, @@ -573,7 +565,7 @@ xfs_iomap_eof_want_preallocate( int n, error, imaps; *prealloc = 0; - if ((ioflag & BMAPI_SYNC) || (offset + count) <= isize) + if ((ioflag & BMAPI_SYNC) || (offset + count) <= ip->i_size) return 0; /* @@ -617,7 +609,6 @@ xfs_iomap_write_delay( xfs_fileoff_t ioalign; xfs_fsblock_t firstblock; xfs_extlen_t extsz; - xfs_fsize_t isize; int nimaps; xfs_bmbt_irec_t imap[XFS_WRITE_IMAPS]; int prealloc, fsynced = 0; @@ -637,11 +628,7 @@ xfs_iomap_write_delay( offset_fsb = XFS_B_TO_FSBT(mp, offset); retry: - isize = ip->i_size; - if (ip->i_new_size > isize) - isize = ip->i_new_size; - - error = xfs_iomap_eof_want_preallocate(mp, ip, isize, offset, count, + error = xfs_iomap_eof_want_preallocate(mp, ip, offset, count, ioflag, imap, XFS_WRITE_IMAPS, &prealloc); if (error) return error; @@ -655,8 +642,7 @@ retry: } if (prealloc || extsz) { - error = xfs_iomap_eof_align_last_fsb(mp, ip, isize, extsz, - &last_fsb); + error = xfs_iomap_eof_align_last_fsb(mp, ip, extsz, &last_fsb); if (error) return error; } From lachlan@sgi.com Thu Dec 4 01:26:56 2008 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 mB47Quti001600 for ; Thu, 4 Dec 2008 01:26:56 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id 6A93D304081 for ; Wed, 3 Dec 2008 23:26:54 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id SAA21605 for ; Thu, 4 Dec 2008 18:26:52 +1100 Message-ID: <49378654.2050707@sgi.com> Date: Thu, 04 Dec 2008 18:27:16 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] Remove XFS_BUF_SHUT() and friends Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Code does nothing so remove it. --- a/fs/xfs/linux-2.6/xfs_buf.h 2008-12-04 14:24:12.000000000 +1100 +++ b/fs/xfs/linux-2.6/xfs_buf.h 2008-12-04 14:24:22.000000000 +1100 @@ -311,10 +311,6 @@ extern void xfs_buf_trace(xfs_buf_t *, c #define XFS_BUF_UNORDERED(bp) ((bp)->b_flags &= ~XBF_ORDERED) #define XFS_BUF_ISORDERED(bp) ((bp)->b_flags & XBF_ORDERED) -#define XFS_BUF_SHUT(bp) do { } while (0) -#define XFS_BUF_UNSHUT(bp) do { } while (0) -#define XFS_BUF_ISSHUT(bp) (0) - #define XFS_BUF_HOLD(bp) xfs_buf_hold(bp) #define XFS_BUF_READ(bp) ((bp)->b_flags |= XBF_READ) #define XFS_BUF_UNREAD(bp) ((bp)->b_flags &= ~XBF_READ) --- a/fs/xfs/xfs_buf_item.c 2008-12-04 14:24:12.000000000 +1100 +++ b/fs/xfs/xfs_buf_item.c 2008-12-04 14:13:32.000000000 +1100 @@ -998,21 +1000,7 @@ xfs_buf_iodone_callbacks( xfs_buf_do_callbacks(bp, lip); XFS_BUF_SET_FSPRIVATE(bp, NULL); XFS_BUF_CLR_IODONE_FUNC(bp); - - /* - * XFS_SHUT flag gets set when we go thru the - * entire buffer cache and deliberately start - * throwing away delayed write buffers. - * Since there's no biowait done on those, - * we should just brelse them. - */ - if (XFS_BUF_ISSHUT(bp)) { - XFS_BUF_UNSHUT(bp); - xfs_buf_relse(bp); - } else { - xfs_biodone(bp); - } - + xfs_biodone(bp); return; } --- a/fs/xfs/xfs_inode.c 2008-12-04 14:24:12.000000000 +1100 +++ b/fs/xfs/xfs_inode.c 2008-12-04 14:21:54.000000000 +1100 @@ -3089,7 +3089,6 @@ cluster_corrupt_out: XFS_BUF_CLR_BDSTRAT_FUNC(bp); XFS_BUF_UNDONE(bp); XFS_BUF_STALE(bp); - XFS_BUF_SHUT(bp); XFS_BUF_ERROR(bp,EIO); xfs_biodone(bp); } else { From lachlan@sgi.com Thu Dec 4 01:48:39 2008 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_35, J_CHICKENPOX_66 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB47mXcP003069 for ; Thu, 4 Dec 2008 01:48:39 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id A43978F8081 for ; Wed, 3 Dec 2008 23:48:26 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id SAA21936 for ; Thu, 4 Dec 2008 18:48:25 +1100 Message-ID: <49378B60.1060603@sgi.com> Date: Thu, 04 Dec 2008 18:48:48 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] Fix off by one error in page_region_mask() Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit final is calculated to be the last bit to set (ie inclusive) but when we do the mask shifting final really needs to be first bit not to set. For example if first and final are both bit 0 (ie only first bit to be set) then mask is completely shifted and becomes all zeroes. Or if first is 0 and final is 63 then the mask is shifted one bit when it shouldn't be shifted at all. --- xfs-fix.orig/fs/xfs/linux-2.6/xfs_buf.c +++ xfs-fix/fs/xfs/linux-2.6/xfs_buf.c @@ -129,15 +129,17 @@ page_region_mask( int first, final; first = BTOPR(offset); - final = BTOPRT(offset + length - 1); - first = min(first, final); + final = BTOPRT(offset + length); + + if (first >= final) + return 0UL; mask = ~0UL; mask <<= BITS_PER_LONG - (final - first); mask >>= BITS_PER_LONG - (final); ASSERT(offset + length <= PAGE_CACHE_SIZE); - ASSERT((final - first) < BITS_PER_LONG && (final - first) >= 0); + ASSERT((final - first) <= BITS_PER_LONG && (final - first) > 0); return mask; } From arekm@maven.pl Thu Dec 4 02:13:12 2008 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 mB48DB4B004362 for ; Thu, 4 Dec 2008 02:13:12 -0600 X-ASG-Debug-ID: 1228378389-32b600b20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from main.carme.maven.pl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 06D8D1691381 for ; Thu, 4 Dec 2008 00:13:09 -0800 (PST) Received: from main.carme.maven.pl (main.carme.maven.pl [193.239.45.138]) by cuda.sgi.com with ESMTP id JjC3I8rFan4MQ5fL for ; Thu, 04 Dec 2008 00:13:09 -0800 (PST) Received: from [83.238.65.58] (port=2065 helo=maven.pl ident=matrix157) by main.carme.maven.pl with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.69) (envelope-from ) id 1L89Ke-000x3l-GT; Thu, 04 Dec 2008 09:13:08 +0100 Received: from arekm by maven.pl with local (Exim 4.69) (envelope-from ) id 1L89Kc-0004QF-R0; Thu, 04 Dec 2008 09:13:08 +0100 From: Arkadiusz Miskiewicz To: Dave Chinner X-ASG-Orig-Subj: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Subject: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Date: Thu, 4 Dec 2008 09:13:06 +0100 User-Agent: PLD Linux KMail/1.9.10 Cc: xfs@oss.sgi.com References: <200812021949.55463.arekm@maven.pl> <200812032242.29326.arekm@maven.pl> <20081203220934.GA32301@disturbed> In-Reply-To: <20081203220934.GA32301@disturbed> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Message-Id: <200812040913.06733.arekm@maven.pl> X-Barracuda-Connect: main.carme.maven.pl[193.239.45.138] X-Barracuda-Start-Time: 1228378390 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.11882 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id mB48DB4B004362 On Wednesday 03 of December 2008, Dave Chinner wrote: > On Wed, Dec 03, 2008 at 10:42:29PM +0100, Arkadiusz Miskiewicz wrote: > > On Wednesday 03 of December 2008, Dave Chinner wrote: > > [arekm@farm rpm]$ touch /home/users/arekm/tmp/aa > > [arekm@farm rpm]$ ./a.out > > ret=-1 Invalid cross-device link > > Well, that's what we needed to know. The bug: > > 199 /* > 200 * Lock all the participating inodes. Depending upon whether > 201 * the target_name exists in the target directory, and > 202 * whether the target directory is the same as the source > 203 * directory, we can lock from 2 to 4 inodes. > 204 */ > 205 >>>>> xfs_lock_inodes(inodes, num_inodes, XFS_ILOCK_EXCL); > 206 > 207 /* > 208 * If we are using project inheritance, we only allow renames > 209 * into our tree when the project IDs are the same; else the > 210 * tree quota mechanism would be circumvented. > 211 */ > 212 if (unlikely((target_dp->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) > && 213 (target_dp->i_d.di_projid != > src_ip->i_d.di_projid))) { 214 error = XFS_ERROR(EXDEV); > 215 >>>>>>> xfs_rename_unlock4(inodes, XFS_ILOCK_SHARED); > 216 xfs_trans_cancel(tp, cancel_flags); > 217 goto std_return; > 218 } > > Is that the unlock of the inodes is using the incorrect lock > type for the unlock, (inodes lock XFS_ILOCK_EXCL, unlocked > XFS_ILOCK_SHARED) which means they don't get unlocked and the next attempt > to do anything with those inodes will hang. > > Compile-tested-only patch below that should fix the problem. It fixes the problem for me. Thanks! I hope that it will reach stable@ team for 2.6.27.9. > Cheers, > > Dave. -- Arkadiusz MiÅ›kiewicz PLD/Linux Team arekm / maven.pl http://ftp.pld-linux.org/ From geert@linux-m68k.org Thu Dec 4 03:02:24 2008 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 (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 mB492MLg007984 for ; Thu, 4 Dec 2008 03:02:24 -0600 X-ASG-Debug-ID: 1228381338-32b701dc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from monty.telenet-ops.be (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 87DE41690991 for ; Thu, 4 Dec 2008 01:02:18 -0800 (PST) Received: from monty.telenet-ops.be (monty.telenet-ops.be [195.130.132.56]) by cuda.sgi.com with ESMTP id xn71vdVpA8jmprEc for ; Thu, 04 Dec 2008 01:02:18 -0800 (PST) Received: from localhost (localhost.localdomain [127.0.0.1]) by monty.telenet-ops.be (Postfix) with SMTP id 039435404B; Thu, 4 Dec 2008 10:02:18 +0100 (CET) Received: from anakin.of.borg (d54C15368.access.telenet.be [84.193.83.104]) by monty.telenet-ops.be (Postfix) with ESMTP id 476875402B; Thu, 4 Dec 2008 10:02:17 +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 mB492G0P025675 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 4 Dec 2008 10:02:16 +0100 Received: from localhost (geert@localhost) by anakin.of.borg (8.14.3/8.14.3/Submit) with ESMTP id mB492FBn025672; Thu, 4 Dec 2008 10:02:15 +0100 X-Authentication-Warning: anakin.of.borg: geert owned process doing -bs Date: Thu, 4 Dec 2008 10:02:15 +0100 (CET) From: Geert Uytterhoeven Sender: geert@linux-m68k.org To: Eric Sandeen , Christoph Hellwig , Lachlan McIlroy cc: Stephen Rothwell , xfs@oss.sgi.com, linux-next@vger.kernel.org, LKML X-ASG-Orig-Subj: XFS breakage on m68k (was: Re: linux-next: Tree for December 3) Subject: XFS breakage on m68k (was: Re: linux-next: Tree for December 3) In-Reply-To: <20081203183602.c06f8c39.sfr@canb.auug.org.au> Message-ID: References: <20081203183602.c06f8c39.sfr@canb.auug.org.au> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Connect: monty.telenet-ops.be[195.130.132.56] X-Barracuda-Start-Time: 1228381339 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.11886 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, 3 Dec 2008, Stephen Rothwell wrote: > Status of my local build tests will be at > http://kisskb.ellerman.id.au/linux-next . If maintainers want to give > advice about cross compilers/configs that work, we are always open to add > more builds. On m68k (32-bit only, no compat32), XFS fails to build in linux-next: | fs/xfs/linux-2.6/xfs_ioctl32.h:50: error: syntax error before 'compat_time_t' | fs/xfs/linux-2.6/xfs_ioctl32.h:52: error: syntax error before '}' token | fs/xfs/linux-2.6/xfs_ioctl32.h:63: error: syntax error before 'compat_xfs_bstime_t' | fs/xfs/linux-2.6/xfs_ioctl32.h:65: error: syntax error before 'bs_ctime' | fs/xfs/linux-2.6/xfs_ioctl32.h:76: error: syntax error before '}' token | fs/xfs/linux-2.6/xfs_ioctl32.h:79: error: syntax error before 'compat_uptr_t' | fs/xfs/linux-2.6/xfs_ioctl32.h:81: error: syntax error before 'ubuffer' | fs/xfs/linux-2.6/xfs_ioctl32.h:82: error: syntax error before 'ocount' | fs/xfs/linux-2.6/xfs_ioctl32.h:94: error: syntax error before 'compat_uptr_t' | fs/xfs/linux-2.6/xfs_ioctl32.h:96: error: syntax error before 'ihandle' | fs/xfs/linux-2.6/xfs_ioctl32.h:98: error: syntax error before 'ohandle' | fs/xfs/linux-2.6/xfs_ioctl32.h:99: error: syntax error before 'ohandlen' | fs/xfs/linux-2.6/xfs_ioctl32.h:121: error: syntax error before 'compat_xfs_bstat_t' | fs/xfs/linux-2.6/xfs_ioctl32.h:127: error: field 'hreq' has incomplete type | fs/xfs/linux-2.6/xfs_ioctl32.h:131: error: syntax error before 'compat_uptr_t' | fs/xfs/linux-2.6/xfs_ioctl32.h:142: error: syntax error before 'compat_uptr_t' | fs/xfs/linux-2.6/xfs_ioctl32.h:146: error: syntax error before '}' token | fs/xfs/linux-2.6/xfs_ioctl32.h:149: error: field 'hreq' has incomplete type | fs/xfs/linux-2.6/xfs_ioctl32.h:152: error: syntax error before 'compat_uptr_t' | fs/xfs/linux-2.6/xfs_ioctl32.h:159: error: field 'hreq' has incomplete type | fs/xfs/linux-2.6/xfs_ioctl32.h:161: error: syntax error before 'compat_uptr_t' | distcc[28223] ERROR: compile fs/xfs/linux-2.6/xfs_file.c on localhost failed (http://kisskb.ellerman.id.au/kisskb/buildresult/58941/) or (with a different compiler): | In file included from fs/xfs/linux-2.6/xfs_file.c:39: | fs/xfs/linux-2.6/xfs_ioctl32.h:50: error: expected specifier-qualifier-list before 'compat_time_t' | fs/xfs/linux-2.6/xfs_ioctl32.h:79: error: expected specifier-qualifier-list before 'compat_uptr_t' | fs/xfs/linux-2.6/xfs_ioctl32.h:94: error: expected specifier-qualifier-list before 'compat_uptr_t' | make[2]: *** [fs/xfs/linux-2.6/xfs_file.o] Error 1 git bisect run says: ffae263a640b736a7206a0d7bd14ab44eb58cd28 is first bad commit commit ffae263a640b736a7206a0d7bd14ab44eb58cd28 Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:07 2008 -0600 [XFS] Move compat ioctl structs & numbers into xfs_ioctl32.h This makes the c file less cluttered and a bit more readable. Consistently name the ioctl number macros with "_32" and the compatibility stuctures with "_compat." Rename the helpers which simply copy in the arg with "_copyin" for easy identification. Finally, for a few of the existing helpers, modify them so that they directly call the native ioctl helper after userspace argument fixup. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy 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+f5e6b4c98b71a692776a+1929+infradead.org+hch@bombadil.srs.infradead.org Thu Dec 4 06:13:41 2008 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 mB4CDfnK024829 for ; Thu, 4 Dec 2008 06:13:41 -0600 X-ASG-Debug-ID: 1228392820-2657007f0000-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 4EE5E16954C3; Thu, 4 Dec 2008 04:13:40 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id l1TVtkWIOdCNOTYp; Thu, 04 Dec 2008 04:13:40 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L8D5G-0006pP-T3; Thu, 04 Dec 2008 12:13:30 +0000 Date: Thu, 4 Dec 2008 07:13:30 -0500 From: Christoph Hellwig To: Geert Uytterhoeven Cc: Eric Sandeen , Christoph Hellwig , Lachlan McIlroy , Stephen Rothwell , linux-next@vger.kernel.org, LKML , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS breakage on m68k (was: Re: linux-next: Tree for December 3) Subject: Re: XFS breakage on m68k (was: Re: linux-next: Tree for December 3) Message-ID: <20081204121330.GA18815@infradead.org> References: <20081203183602.c06f8c39.sfr@canb.auug.org.au> 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: 1228392820 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Dec 04, 2008 at 10:02:15AM +0100, Geert Uytterhoeven wrote: > On Wed, 3 Dec 2008, Stephen Rothwell wrote: > > Status of my local build tests will be at > > http://kisskb.ellerman.id.au/linux-next . If maintainers want to give > > advice about cross compilers/configs that work, we are always open to add > > more builds. > > On m68k (32-bit only, no compat32), XFS fails to build in linux-next: Yeah, it's broken on all 32bit platforms. Today's xfs tree has a fix for it. From SRS0+f5e6b4c98b71a692776a+1929+infradead.org+hch@bombadil.srs.infradead.org Thu Dec 4 06:32:08 2008 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 mB4CW7Rl026865 for ; Thu, 4 Dec 2008 06:32:08 -0600 X-ASG-Debug-ID: 1228393927-265200f50000-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 2F5651695450 for ; Thu, 4 Dec 2008 04:32:07 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id f7vk1HhxuK0Y8aNb for ; Thu, 04 Dec 2008 04:32:07 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L8DNG-0001q6-Ig; Thu, 04 Dec 2008 12:32:06 +0000 Date: Thu, 4 Dec 2008 07:32:06 -0500 From: Christoph Hellwig To: Arkadiusz Miskiewicz , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Subject: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Message-ID: <20081204123206.GA6935@infradead.org> References: <200812021949.55463.arekm@maven.pl> <200812031406.41882.arekm@maven.pl> <20081203213028.GW18236@disturbed> <200812032242.29326.arekm@maven.pl> <20081203220934.GA32301@disturbed> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081203220934.GA32301@disturbed> 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: 1228393927 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Dec 04, 2008 at 09:09:34AM +1100, Dave Chinner wrote: > Is that the unlock of the inodes is using the incorrect lock > type for the unlock, (inodes lock XFS_ILOCK_EXCL, unlocked XFS_ILOCK_SHARED) > which means they don't get unlocked and the next attempt to do anything > with those inodes will hang. > > Compile-tested-only patch below that should fix the problem. Yeah, that also explains why my patch fixes it :) I'd say let's put yours into 2.6.28 and -stable, and I'll rediff mine ontop for the 2.6.29 queue. I'll also write a testcase for xfsqa based on Arkadiusz's report. From SRS0+f5e6b4c98b71a692776a+1929+infradead.org+hch@bombadil.srs.infradead.org Thu Dec 4 06:34:11 2008 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 mB4CYAjl027100 for ; Thu, 4 Dec 2008 06:34:11 -0600 X-ASG-Debug-ID: 1228394049-40e6036a0000-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 BF1241695465; Thu, 4 Dec 2008 04:34:09 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id TTyanDZFBNaxU5tW; Thu, 04 Dec 2008 04:34:09 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L8DPE-0001v5-5n; Thu, 04 Dec 2008 12:34:08 +0000 Date: Thu, 4 Dec 2008 07:34:08 -0500 From: Christoph Hellwig To: Niv Sardi Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: New XFS git tree on oss.sgi.com Subject: Re: New XFS git tree on oss.sgi.com Message-ID: <20081204123408.GB7085@infradead.org> References: <492BA7AD.5080007@sgi.com> <20081125140553.GA16553@infradead.org> <492CA245.3000709@sgi.com> <20081126032710.GA19523@infradead.org> <20081203130414.GB9681@infradead.org> <871vwo95fr.fsf@cxhome.ath.cx> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <871vwo95fr.fsf@cxhome.ath.cx> 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: 1228394049 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Dec 04, 2008 at 10:58:48AM +1100, Niv Sardi wrote: > Christoph Hellwig writes: > > > On Wed, Dec 03, 2008 at 02:48:57PM +1100, Niv Sardi wrote: > > > >> > Also > >> > http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/xfs.git;a=commitdiff;h=ca830fdf6231d0683f4ea4e9223e234c3a509063doesn't seem to be needed. None of those symbols seems to be used by > >> > either dmapi or xfsidbg, the only two modules using xfs symbols in the > >> > tree. > >> > >> That's exactly why it's there, the revertion is actually moving from > >> what was in ptools to something sane. > > > > ?? The commit above adds tons of unused exports. But hey, I'll just > > submit a patch to sort it out when I get some time.. > > Yes, I already did that ???that's the previous commit??? but Lachland wanted > the tree not too move too much at first. > The patch you want is the exact revert of the commit you pointed out, > it'll be checked in soon. Ah, makes sense. Thanks for the clarification. From SRS0+f5e6b4c98b71a692776a+1929+infradead.org+hch@bombadil.srs.infradead.org Thu Dec 4 06:34:18 2008 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 mB4CYHMq027118 for ; Thu, 4 Dec 2008 06:34:18 -0600 X-ASG-Debug-ID: 1228394056-265700ff0000-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 23B4A169546F for ; Thu, 4 Dec 2008 04:34:17 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id ouSAvoll9MdKz0jB for ; Thu, 04 Dec 2008 04:34:17 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L8DOs-0001uJ-2K; Thu, 04 Dec 2008 12:33:46 +0000 Date: Thu, 4 Dec 2008 07:33:46 -0500 From: Christoph Hellwig To: Christoph Hellwig , Lachlan McIlroy , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Assertion failed: atomic_read(&mp->m_active_trans) Subject: Re: Assertion failed: atomic_read(&mp->m_active_trans) Message-ID: <20081204123346.GA7085@infradead.org> References: <492BB095.1000104@sgi.com> <4934AAA9.5090405@sgi.com> <20081203104849.GF15485@infradead.org> <20081203213950.GX18236@disturbed> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081203213950.GX18236@disturbed> 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: 1228394057 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Dec 04, 2008 at 08:39:50AM +1100, Dave Chinner wrote: > On Wed, Dec 03, 2008 at 05:48:49AM -0500, Christoph Hellwig wrote: > > I'd rather fix it properly. > > Sure, but in the mean time, I'd suggest changing it to a WARN_ON() > rather than an ASSERT(). That way we'll continue to have ppl bug us > about it until the VFS can support read-only remounts without racing > correctly. Makes sense. > Has that work been dropped on the floor, Christoph? We've > been holding off removing this ASSERT or adding the hack > I did to work around the common case of the assert triggering > based on the fact that the problem in the VFS would be fixed > in the next release. That was the case each release since > 2.6.25 and there doesn't seem to be much progress... Yeah, once we got the r/o bind mounts which introduces the infrastructure to deal with people dropped that ball and we never fixed it. But I just heard from Al that he's looking into some major surgery for the remount path, which should include this in the second or third batch. From SRS0+f5e6b4c98b71a692776a+1929+infradead.org+hch@bombadil.srs.infradead.org Thu Dec 4 06:35:05 2008 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 mB4CZ4d0027217 for ; Thu, 4 Dec 2008 06:35:05 -0600 X-ASG-Debug-ID: 1228394103-265e01160000-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 1F8CD169547A for ; Thu, 4 Dec 2008 04:35:03 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 9s37BjKw1SAn4CI6 for ; Thu, 04 Dec 2008 04:35:03 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L8DPc-0001vQ-Up; Thu, 04 Dec 2008 12:34:32 +0000 Date: Thu, 4 Dec 2008 07:34:32 -0500 From: Christoph Hellwig To: Niv Sardi Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 01/22] fix compile on 32 bit systems Subject: Re: [patch 01/22] fix compile on 32 bit systems Message-ID: <20081204123432.GC7085@infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> <20081202160649.658660000@bombadil.infradead.org> <87vdu07nvp.fsf@cxhome.ath.cx> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87vdu07nvp.fsf@cxhome.ath.cx> 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: 1228394104 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Dec 04, 2008 at 12:03:22PM +1100, Niv Sardi wrote: > Christoph Hellwig writes: > [???] > > +xfs_file_compat_ioctl_invis( > ^^^^^^^^^^^ > [???] > > -extern long xfs_file_compat_invis_ioctl(struct file *, unsigned, unsigned long); > ^^^^^^^^^^^ > > Fixed it up, it's in QA now, Doh, thanks. From SRS0+f5e6b4c98b71a692776a+1929+infradead.org+hch@bombadil.srs.infradead.org Thu Dec 4 06:36:17 2008 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 mB4CaGrK027364 for ; Thu, 4 Dec 2008 06:36:17 -0600 X-ASG-Debug-ID: 1228394175-26bb01160000-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 ECDC31B2D1EE for ; Thu, 4 Dec 2008 04:36:15 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 5ea2TBdLFZG4fnOH for ; Thu, 04 Dec 2008 04:36:15 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L8DQn-0002PL-3y; Thu, 04 Dec 2008 12:35:45 +0000 Date: Thu, 4 Dec 2008 07:35:45 -0500 From: Christoph Hellwig To: Niv Sardi Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 12/22] kill dead inode flags Subject: Re: [patch 12/22] kill dead inode flags Message-ID: <20081204123545.GD7085@infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> <20081202160651.264876000@bombadil.infradead.org> <87r64o7k57.fsf@cxhome.ath.cx> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87r64o7k57.fsf@cxhome.ath.cx> 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: 1228394175 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Dec 04, 2008 at 01:24:04PM +1100, Niv Sardi wrote: > Christoph Hellwig writes: > > > There are a few inode flags around that aren't used anywhere, so remove > > them. Also update xfsidbg to display all used inode flags correctly. > > Thanks for splitting things up, you have your idbg patch somewhere > though ? should the reference to it be removed from the commit ? No, sorry. When I ported things to the new tree I lost those changes. Given that I do all work on the master branch don't expect fixes for these bits unless it's specificly for the -dev branch (e.g. dmapi). From SRS0+f5e6b4c98b71a692776a+1929+infradead.org+hch@bombadil.srs.infradead.org Thu Dec 4 06:50:15 2008 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 mB4CoD4G029040 for ; Thu, 4 Dec 2008 06:50:15 -0600 X-ASG-Debug-ID: 1228395012-265f01690000-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 38C961695674; Thu, 4 Dec 2008 04:50:12 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id gfeTGQmMNIfrvV3D; Thu, 04 Dec 2008 04:50:12 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L8Deg-0003tO-JV; Thu, 04 Dec 2008 12:50:06 +0000 Date: Thu, 4 Dec 2008 07:50:06 -0500 From: Christoph Hellwig To: Stephen Rothwell Cc: Christoph Hellwig , Geert Uytterhoeven , Eric Sandeen , Christoph Hellwig , Lachlan McIlroy , linux-next@vger.kernel.org, LKML , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS breakage on m68k (was: Re: linux-next: Tree for December 3) Subject: Re: XFS breakage on m68k (was: Re: linux-next: Tree for December 3) Message-ID: <20081204125006.GA13411@infradead.org> References: <20081203183602.c06f8c39.sfr@canb.auug.org.au> <20081204121330.GA18815@infradead.org> <20081204234603.b5a28cd6.sfr@canb.auug.org.au> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081204234603.b5a28cd6.sfr@canb.auug.org.au> 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: 1228395013 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Dec 04, 2008 at 11:46:03PM +1100, Stephen Rothwell wrote: > fs/xfs/linux-2.6/xfs_file.c:365: error: 'xfs_file_compat_invis_ioctl' undeclared here (not in a function) > > Eric mentioned that your patch "had a problem of its own", so I assumed > that was it and left it removed from today's linux-next. Yeah, but Niv fixed it up and the correct version is not in the xfs git tree. From sfr@canb.auug.org.au Thu Dec 4 06:51:45 2008 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 mB4CpjIG029146 for ; Thu, 4 Dec 2008 06:51:45 -0600 X-ASG-Debug-ID: 1228395102-265801a10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtps.tip.net.au (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 263C016956C7 for ; Thu, 4 Dec 2008 04:51:43 -0800 (PST) Received: from smtps.tip.net.au (chilli.pcug.org.au [203.10.76.44]) by cuda.sgi.com with ESMTP id K7ABDKyHvH1QhRH1 for ; Thu, 04 Dec 2008 04:51:43 -0800 (PST) Received: from ash.ozlabs.ibm.com (ta-1-1.tip.net.au [203.11.71.1]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by smtps.tip.net.au (Postfix) with ESMTP id 2DB43368007; Thu, 4 Dec 2008 23:46:08 +1100 (EST) Date: Thu, 4 Dec 2008 23:46:03 +1100 From: Stephen Rothwell To: Christoph Hellwig Cc: Geert Uytterhoeven , Eric Sandeen , Christoph Hellwig , Lachlan McIlroy , linux-next@vger.kernel.org, LKML , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS breakage on m68k (was: Re: linux-next: Tree for December 3) Subject: Re: XFS breakage on m68k (was: Re: linux-next: Tree for December 3) Message-Id: <20081204234603.b5a28cd6.sfr@canb.auug.org.au> In-Reply-To: <20081204121330.GA18815@infradead.org> References: <20081203183602.c06f8c39.sfr@canb.auug.org.au> <20081204121330.GA18815@infradead.org> X-Mailer: Sylpheed 2.5.0 (GTK+ 2.12.11; i486-pc-linux-gnu) Mime-Version: 1.0 Content-Type: multipart/signed; protocol="application/pgp-signature"; micalg="PGP-SHA1"; boundary="Signature=_Thu__4_Dec_2008_23_46_03_+1100_Y4i_FBnC6Lw+PbDs" X-Barracuda-Connect: chilli.pcug.org.au[203.10.76.44] X-Barracuda-Start-Time: 1228395104 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.11901 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- --Signature=_Thu__4_Dec_2008_23_46_03_+1100_Y4i_FBnC6Lw+PbDs Content-Type: text/plain; charset=US-ASCII Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi Christoph, On Thu, 4 Dec 2008 07:13:30 -0500 Christoph Hellwig wro= te: > > On Thu, Dec 04, 2008 at 10:02:15AM +0100, Geert Uytterhoeven wrote: > > On Wed, 3 Dec 2008, Stephen Rothwell wrote: > > > Status of my local build tests will be at > > > http://kisskb.ellerman.id.au/linux-next . If maintainers want to give > > > advice about cross compilers/configs that work, we are always open to= add > > > more builds. > >=20 > > On m68k (32-bit only, no compat32), XFS fails to build in linux-next: >=20 > Yeah, it's broken on all 32bit platforms. Today's xfs tree has a fix > for it. I tried that tree but got this error from a powerpc ppc64_defconfig build (which is 64 bit): fs/xfs/linux-2.6/xfs_file.c:365: error: 'xfs_file_compat_invis_ioctl' undec= lared here (not in a function) Eric mentioned that your patch "had a problem of its own", so I assumed that was it and left it removed from today's linux-next. --=20 Cheers, Stephen Rothwell sfr@canb.auug.org.au http://www.canb.auug.org.au/~sfr/ --Signature=_Thu__4_Dec_2008_23_46_03_+1100_Y4i_FBnC6Lw+PbDs Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEARECAAYFAkk30QsACgkQjjKRsyhoI8x5WACgmRsYcHOOMlUMk0zCz8iRXkm5 OB4An3bYWlAaP8j5dF+vffc9iKvlEtmh =YjVi -----END PGP SIGNATURE----- --Signature=_Thu__4_Dec_2008_23_46_03_+1100_Y4i_FBnC6Lw+PbDs-- From 0xa1f00@gmail.com Thu Dec 4 07:03:17 2008 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 mB4D3HWL030071 for ; Thu, 4 Dec 2008 07:03:17 -0600 X-ASG-Debug-ID: 1228395795-265e01da0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from rv-out-0506.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 95ED116938BC for ; Thu, 4 Dec 2008 05:03:16 -0800 (PST) Received: from rv-out-0506.google.com (rv-out-0506.google.com [209.85.198.225]) by cuda.sgi.com with ESMTP id 9rqoeNJCcCXiCBnB for ; Thu, 04 Dec 2008 05:03:16 -0800 (PST) Received: by rv-out-0506.google.com with SMTP id f9so3925799rvb.7 for ; Thu, 04 Dec 2008 05:03:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender :to:subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references :x-google-sender-auth; bh=fbQR/A+1wD34MJi0dyW8Wlljj9P4pUanmJEjbcGiRQw=; b=PM3vgfxMWnHp3i4a70QOLPb/mp04zs4QTrUeqHwE9mrhIct/hs1Kxg+Xd1WgD+/j0f Edhd99BjyWiWgXWX+grmu8/d2o/h6DTSrquTvE6txT4NG9esuyzm7UehMd4YSOOw+GN7 hxkk/gDjsHi032pIikWccl1vPV/1n5kZLAuyE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references:x-google-sender-auth; b=Qncr8+SQngN5oaE/xLgx85g1Ihiy3CzU1uQqHnWAVif3YCswlOrKBPb/+mSNaEgzWQ K8kEtK7A5YY40GnNvYPN1ByBHRYuzu4fkmeQRzdl4VvZowDksERfQR9G4oE7saxn3F02 WF9JdPGktw7ksOMNSZxNYXeU6fMw7RE7H3eN0= Received: by 10.141.142.15 with SMTP id u15mr6921379rvn.112.1228395795463; Thu, 04 Dec 2008 05:03:15 -0800 (PST) Received: by 10.140.141.11 with HTTP; Thu, 4 Dec 2008 05:03:15 -0800 (PST) Message-ID: <416c461f0812040503g13083bdbl7a9b716f17d2adc0@mail.gmail.com> Date: Fri, 5 Dec 2008 00:03:15 +1100 From: "Niv Sardi" Sender: 0xa1f00@gmail.com To: "Christoph Hellwig" X-ASG-Orig-Subj: Re: [patch 01/22] fix compile on 32 bit systems Subject: Re: [patch 01/22] fix compile on 32 bit systems Cc: xfs@oss.sgi.com In-Reply-To: <20081204123432.GC7085@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <20081202160430.775774000@bombadil.infradead.org> <20081202160649.658660000@bombadil.infradead.org> <87vdu07nvp.fsf@cxhome.ath.cx> <20081204123432.GC7085@infradead.org> X-Google-Sender-Auth: 7762d9c83eda4838 X-Barracuda-Connect: rv-out-0506.google.com[209.85.198.225] X-Barracuda-Start-Time: 1228395796 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.11901 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Oh well, lachland allready checked it in like that... On Thu, Dec 4, 2008 at 11:34 PM, Christoph Hellwig wrote: > On Thu, Dec 04, 2008 at 12:03:22PM +1100, Niv Sardi wrote: >> Christoph Hellwig writes: >> [???] >> > +xfs_file_compat_ioctl_invis( >> ^^^^^^^^^^^ >> [???] >> > -extern long xfs_file_compat_invis_ioctl(struct file *, unsigned, unsigned long); >> ^^^^^^^^^^^ >> >> Fixed it up, it's in QA now, > > Doh, thanks. > > -- Niv Sardi From SRS0+f5e6b4c98b71a692776a+1929+infradead.org+hch@bombadil.srs.infradead.org Thu Dec 4 07:11:26 2008 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 mB4DBQAs030697 for ; Thu, 4 Dec 2008 07:11:26 -0600 X-ASG-Debug-ID: 1228396285-2631027b0000-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 66DB91BEF19D for ; Thu, 4 Dec 2008 05:11:25 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id k69feAxaboHbtXpf for ; Thu, 04 Dec 2008 05:11:25 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L8DzI-0005NT-W2; Thu, 04 Dec 2008 13:11:25 +0000 Date: Thu, 4 Dec 2008 08:11:24 -0500 From: Christoph Hellwig To: Niv Sardi Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 01/22] fix compile on 32 bit systems Subject: Re: [patch 01/22] fix compile on 32 bit systems Message-ID: <20081204131124.GA7276@infradead.org> References: <20081202160430.775774000@bombadil.infradead.org> <20081202160649.658660000@bombadil.infradead.org> <87vdu07nvp.fsf@cxhome.ath.cx> <20081204123432.GC7085@infradead.org> <416c461f0812040503g13083bdbl7a9b716f17d2adc0@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <416c461f0812040503g13083bdbl7a9b716f17d2adc0@mail.gmail.com> 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: 1228396285 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Fri, Dec 05, 2008 at 12:03:15AM +1100, Niv Sardi wrote: > Oh well, lachland allready checked it in like that... Just put in my add FMODE_NOCMTIME patch in, it removes all that invis file operations crap :) Seriously, it's already been reviewed on -fsdevel anyway. From SRS0+f5e6b4c98b71a692776a+1929+infradead.org+hch@bombadil.srs.infradead.org Thu Dec 4 07:26:46 2008 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 mB4DQk70032418 for ; Thu, 4 Dec 2008 07:26:46 -0600 X-ASG-Debug-ID: 1228397205-26ba02f30000-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 A51201BEECE3; Thu, 4 Dec 2008 05:26:45 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id MjAFfKDYBJCZDdWi; Thu, 04 Dec 2008 05:26:45 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L8EE9-00077J-6U; Thu, 04 Dec 2008 13:26:45 +0000 Date: Thu, 4 Dec 2008 08:26:45 -0500 From: Christoph Hellwig To: Timothy Shimmin Cc: Dave Chinner , Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: New XFS git tree on oss.sgi.com Subject: Re: New XFS git tree on oss.sgi.com Message-ID: <20081204132645.GA32664@infradead.org> References: <492BA7AD.5080007@sgi.com> <20081125081644.GA20644@infradead.org> <492C9FB9.3090204@sgi.com> <20081126020009.GF6291@disturbed> <492CC287.3070709@sgi.com> <20081126040840.GG6291@disturbed> <492CE189.2000304@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <492CE189.2000304@sgi.com> 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: 1228397205 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Wed, Nov 26, 2008 at 04:41:29PM +1100, Timothy Shimmin wrote: > I was just thinking that if an external developer is working on a clone of > say the master branch and they have a fix, that they might post a patch > and say where sgi can pull from (the developer's tree) to receive the patch(es) > as an easier way to bring stuff in. So do you want git trees or not now? I spent quite some time to set up a tree for my last set of patches, but what got in was slightly different, so when I pulles I got a merge and duplicates in my tree and had to git-reset to a point before my patches. If you do apply from the list anyway I can avoid that overhead. From SRS0+f5e6b4c98b71a692776a+1929+infradead.org+hch@bombadil.srs.infradead.org Thu Dec 4 07:28:19 2008 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,SUBJ_FRIEND 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 mB4DSITt032548 for ; Thu, 4 Dec 2008 07:28:19 -0600 X-ASG-Debug-ID: 1228397297-26ba03030000-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 F1B8B1BEECF9 for ; Thu, 4 Dec 2008 05:28:17 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id kmTEF7vc0QjEW9f4 for ; Thu, 04 Dec 2008 05:28:17 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L8EF8-00078T-Ry; Thu, 04 Dec 2008 13:27:46 +0000 Date: Thu, 4 Dec 2008 08:27:46 -0500 From: Christoph Hellwig To: Lachlan McIlroy Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] Remove XFS_BUF_SHUT() and friends Subject: Re: [PATCH] Remove XFS_BUF_SHUT() and friends Message-ID: <20081204132746.GA27400@infradead.org> References: <49378654.2050707@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49378654.2050707@sgi.com> 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: 1228397297 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Dec 04, 2008 at 06:27:16PM +1100, Lachlan McIlroy wrote: > Code does nothing so remove it. Looks good to me. Does anyone remember why this flag was set on IRIX? From 0xa1f00@gmail.com Thu Dec 4 07:47:26 2008 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 mB4DlOrD002492 for ; Thu, 4 Dec 2008 07:47:26 -0600 X-ASG-Debug-ID: 1228398443-263103d50000-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 D886D167DA45 for ; Thu, 4 Dec 2008 05:47:23 -0800 (PST) Received: from rv-out-0708.google.com (rv-out-0708.google.com [209.85.198.245]) by cuda.sgi.com with ESMTP id Yt1gYUjVGnvHvpzJ for ; Thu, 04 Dec 2008 05:47:23 -0800 (PST) Received: by rv-out-0708.google.com with SMTP id f25so3791578rvb.32 for ; Thu, 04 Dec 2008 05:47:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender :to:subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references :x-google-sender-auth; bh=qfiewm2FjlzOt1zSV3hnzJVNYXtn9/9Vme7GFKAyYrU=; b=Ns1oARDmT47oyEnxjIQgzts3Il2PmBYwmIabsPPcrOnvfH7dH+1UPd75JBqhFQvtij scTgHQ7Y3yBO7htRSZ05GEKQTcy9xRB0d5ubrHp36UzTeMEAg+Gh3ZtIavUrurCSghpr 1EeJ7V++U6z+HKOLqCSTq8ELDesCEjOOLVYvs= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references:x-google-sender-auth; b=LJtTiqyHNB8vnq6iG1Z88JomxNUCz8S3Inf1ux4N7xvQXQqDqS2Vb6kHYE1eKPkje0 Sxb6e8AXsTwEjr/FQV2W84SGhLM+nx478Jk1Vcw+YTPyPMmHS2Y3LgNUAx8Du1llOSeA 5EKqCAmUB8Jocno9oczRxA8BdxJX/mtVe9pwI= Received: by 10.140.147.5 with SMTP id u5mr6954942rvd.14.1228398028316; Thu, 04 Dec 2008 05:40:28 -0800 (PST) Received: by 10.140.141.11 with HTTP; Thu, 4 Dec 2008 05:40:28 -0800 (PST) Message-ID: <416c461f0812040540q569321f6scf5f4716b6abcaee@mail.gmail.com> Date: Fri, 5 Dec 2008 00:40:28 +1100 From: "Niv Sardi" Sender: 0xa1f00@gmail.com To: "Christoph Hellwig" X-ASG-Orig-Subj: Re: [patch 01/22] fix compile on 32 bit systems Subject: Re: [patch 01/22] fix compile on 32 bit systems Cc: xfs@oss.sgi.com In-Reply-To: <20081204131124.GA7276@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <20081202160430.775774000@bombadil.infradead.org> <20081202160649.658660000@bombadil.infradead.org> <87vdu07nvp.fsf@cxhome.ath.cx> <20081204123432.GC7085@infradead.org> <416c461f0812040503g13083bdbl7a9b716f17d2adc0@mail.gmail.com> <20081204131124.GA7276@infradead.org> X-Google-Sender-Auth: d7b373e25c9c5d0d X-Barracuda-Connect: rv-out-0708.google.com[209.85.198.245] X-Barracuda-Start-Time: 1228398443 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.11903 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Bissectable commits my dear christoph, bissectable commits =) Mark told me I should make you happy and put lots of patches of yours in if you put them in nice git trees for us =) just send to list. On Fri, Dec 5, 2008 at 12:11 AM, Christoph Hellwig wrote: > On Fri, Dec 05, 2008 at 12:03:15AM +1100, Niv Sardi wrote: >> Oh well, lachland allready checked it in like that... > > Just put in my add FMODE_NOCMTIME patch in, it removes all that invis > file operations crap :) Seriously, it's already been reviewed on > -fsdevel anyway. > > -- Niv Sardi From hch@lst.de Thu Dec 4 07:48:20 2008 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 mB4DmKZt002598 for ; Thu, 4 Dec 2008 07:48:20 -0600 X-ASG-Debug-ID: 1228398498-26ba03e50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from verein.lst.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A83271BEF4BA for ; Thu, 4 Dec 2008 05:48:18 -0800 (PST) Received: from verein.lst.de (verein.lst.de [213.95.11.210]) by cuda.sgi.com with ESMTP id KZGayJeTZVdOP8Y0 for ; Thu, 04 Dec 2008 05:48:18 -0800 (PST) Received: from verein.lst.de (localhost [127.0.0.1]) by verein.lst.de (8.12.3/8.12.3/Debian-7.1) with ESMTP id mB4DNRIF013041 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO); Thu, 4 Dec 2008 14:23:27 +0100 Received: (from hch@localhost) by verein.lst.de (8.12.3/8.12.3/Debian-6.6) id mB4DNRpj013039; Thu, 4 Dec 2008 14:23:27 +0100 Date: Thu, 4 Dec 2008 14:23:27 +0100 From: Christoph Hellwig To: Christoph Hellwig Cc: Stephen Rothwell , Geert Uytterhoeven , Eric Sandeen , Christoph Hellwig , Lachlan McIlroy , linux-next@vger.kernel.org, LKML , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS breakage on m68k (was: Re: linux-next: Tree for December 3) Subject: Re: XFS breakage on m68k (was: Re: linux-next: Tree for December 3) Message-ID: <20081204132327.GA12971@lst.de> References: <20081203183602.c06f8c39.sfr@canb.auug.org.au> <20081204121330.GA18815@infradead.org> <20081204234603.b5a28cd6.sfr@canb.auug.org.au> <20081204125006.GA13411@infradead.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081204125006.GA13411@infradead.org> User-Agent: Mutt/1.3.28i X-Scanned-By: MIMEDefang 2.39 X-Barracuda-Connect: verein.lst.de[213.95.11.210] X-Barracuda-Start-Time: 1228398499 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.11903 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Dec 04, 2008 at 07:50:06AM -0500, Christoph Hellwig wrote: > Yeah, but Niv fixed it up and the correct version is not in the xfs git > tree. Hah, he noticed the bug but the wrong version got checked in anyway. Here's the fix (for todays xfs tree): -- [XFS] Fix compile with CONFIG_COMPAT enabled Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_ioctl.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_ioctl.h 2008-12-04 14:19:32.000000000 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_ioctl.h 2008-12-04 14:19:38.000000000 +0100 @@ -74,7 +74,7 @@ xfs_file_compat_ioctl( unsigned long arg); extern long -xfs_file_compat_ioctl_invis( +xfs_file_compat_invis_ioctl( struct file *file, unsigned int cmd, unsigned long arg); From andi@firstfloor.org Thu Dec 4 08:09:14 2008 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 mB4E9B2R005045 for ; Thu, 4 Dec 2008 08:09:14 -0600 X-ASG-Debug-ID: 1228399749-31d600790000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from one.firstfloor.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 70C101BEF682 for ; Thu, 4 Dec 2008 06:09:09 -0800 (PST) Received: from one.firstfloor.org (one.firstfloor.org [213.235.205.2]) by cuda.sgi.com with ESMTP id Xu52A9uZYDg5OA2V for ; Thu, 04 Dec 2008 06:09:09 -0800 (PST) Received: by one.firstfloor.org (Postfix, from userid 503) id C76061B90084; Thu, 4 Dec 2008 15:20:15 +0100 (CET) Date: Thu, 4 Dec 2008 15:20:15 +0100 From: Andi Kleen To: Mikulas Patocka Cc: Andi Kleen , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Andi Kleen , Milan Broz X-ASG-Orig-Subj: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Subject: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Message-ID: <20081204142015.GQ6703@one.firstfloor.org> References: <20081204100050.GN6703@one.firstfloor.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.1i X-Barracuda-Connect: one.firstfloor.org[213.235.205.2] X-Barracuda-Start-Time: 1228399750 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0020 1.0000 -2.0077 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 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.11905 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- > the 1st write request ends with success > the 2nd write request ends with -EOPNOTSUPP > the 3rd write request ends with success > > --- when you first see -EOPNOTSUPP, you have already corrupted filesystem > (the 3rd write passed while the filesystem expected that it would be There's no passing of requests during pvmove. It's a really strong barrier. > finished after the 2nd write) and you are in an interrupt context, where > you can't reissue -EOPNOTSUPP request. So what do you want to do? The barrier aware file systems I know of just resubmit synchronously when a barrier fails. -Andi From mpatocka@redhat.com Thu Dec 4 08:17:10 2008 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 mB4EHAFq006731 for ; Thu, 4 Dec 2008 08:17:10 -0600 X-ASG-Debug-ID: 1228400228-280301460000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5C992169574F for ; Thu, 4 Dec 2008 06:17:08 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by cuda.sgi.com with ESMTP id 1FnzrhodoUTQHSCv for ; Thu, 04 Dec 2008 06:17:08 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id mB4EH6WD019492; Thu, 4 Dec 2008 09:17:06 -0500 Received: from hs20-bc2-1.build.redhat.com (hs20-bc2-1.build.redhat.com [10.10.28.34]) by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id mB4EH4nN025783; Thu, 4 Dec 2008 09:17:04 -0500 Received: from hs20-bc2-1.build.redhat.com (localhost.localdomain [127.0.0.1]) by hs20-bc2-1.build.redhat.com (8.13.1/8.13.1) with ESMTP id mB4EH4jK012458; Thu, 4 Dec 2008 09:17:04 -0500 Received: from localhost (mpatocka@localhost) by hs20-bc2-1.build.redhat.com (8.13.1/8.13.1/Submit) with ESMTP id mB4EH4Qp012452; Thu, 4 Dec 2008 09:17:04 -0500 X-Authentication-Warning: hs20-bc2-1.build.redhat.com: mpatocka owned process doing -bs Date: Thu, 4 Dec 2008 09:17:04 -0500 (EST) From: Mikulas Patocka X-X-Sender: mpatocka@hs20-bc2-1.build.redhat.com To: Andi Kleen cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Andi Kleen , Milan Broz X-ASG-Orig-Subj: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Subject: Re: Device loses barrier support (was: Fixed patch for simple barriers.) In-Reply-To: <20081204142015.GQ6703@one.firstfloor.org> Message-ID: References: <20081204100050.GN6703@one.firstfloor.org> <20081204142015.GQ6703@one.firstfloor.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 X-Barracuda-Connect: mx1.redhat.com[66.187.233.31] X-Barracuda-Start-Time: 1228400229 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, 4 Dec 2008, Andi Kleen wrote: > > the 1st write request ends with success > > the 2nd write request ends with -EOPNOTSUPP > > the 3rd write request ends with success > > > > --- when you first see -EOPNOTSUPP, you have already corrupted filesystem > > (the 3rd write passed while the filesystem expected that it would be > > There's no passing of requests during pvmove. It's a really strong > barrier. You start pvmove. The filesystem doesn't know about pvmove. The next time filesystem does somethig, it submits these 3 requests and the 2nd fill unexpectedly fail. So the fact that pvmove drains the request queue won't help you. > > finished after the 2nd write) and you are in an interrupt context, where > > you can't reissue -EOPNOTSUPP request. So what do you want to do? > > The barrier aware file systems I know of just resubmit synchronously when > a barrier fails. ... and produce structure corruption for certain period in time, because the writes meant to be ordered are submitted unordered. Mikulas > -Andi > From andi@firstfloor.org Thu Dec 4 08:47:09 2008 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 mB4El8LQ009563 for ; Thu, 4 Dec 2008 08:47:09 -0600 X-ASG-Debug-ID: 1228402024-262402720000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from one.firstfloor.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 680D716958E3 for ; Thu, 4 Dec 2008 06:47:05 -0800 (PST) Received: from one.firstfloor.org (one.firstfloor.org [213.235.205.2]) by cuda.sgi.com with ESMTP id aA5drg6wBmeZvBAu for ; Thu, 04 Dec 2008 06:47:05 -0800 (PST) Received: by one.firstfloor.org (Postfix, from userid 503) id 259481AD0021; Thu, 4 Dec 2008 15:58:10 +0100 (CET) Date: Thu, 4 Dec 2008 15:58:10 +0100 From: Andi Kleen To: Mikulas Patocka Cc: Andi Kleen , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Andi Kleen , Milan Broz X-ASG-Orig-Subj: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Subject: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Message-ID: <20081204145810.GR6703@one.firstfloor.org> References: <20081204100050.GN6703@one.firstfloor.org> <20081204142015.GQ6703@one.firstfloor.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.1i X-Barracuda-Connect: one.firstfloor.org[213.235.205.2] X-Barracuda-Start-Time: 1228402027 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.11907 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- > You start pvmove. The filesystem doesn't know about pvmove. > > The next time filesystem does somethig, it submits these 3 requests and > the 2nd fill unexpectedly fail. Again the file systems handle failing barriers and they expect it. > > So the fact that pvmove drains the request queue won't help you. Help you against what? > > > > finished after the 2nd write) and you are in an interrupt context, where > > > you can't reissue -EOPNOTSUPP request. So what do you want to do? > > > > The barrier aware file systems I know of just resubmit synchronously when > > a barrier fails. > > ... and produce structure corruption for certain period in time, because > the writes meant to be ordered are submitted unordered. No there is nothing unordered. The file system path typically looks like commit of a transaction if (i have never seen a barrier failing) write block with barrier if (EOPNOTSUPP) { record failure submit synchronously } } else submit synchronously So if a pvmove barrier fails it will just submit synchronously. The write block with barrier bit varies, jbd/gfs2 do it synchronously too and xfs does it asynchronously (with io done callbacks), but in both cases they handle an EOPNOTSUPP comming out in the final io done. When the pvmove migrates from no barrier support to barrier support there won't be any barrier on the file system for the time of the current mount, but that's also fine. -Andi From sandeen@sandeen.net Thu Dec 4 09:29:39 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.7 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 mB4FTc4I012076 for ; Thu, 4 Dec 2008 09:29:39 -0600 X-ASG-Debug-ID: 1228404577-5d5f02280000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2A5121695A66; Thu, 4 Dec 2008 07:29:37 -0800 (PST) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id qR8D9EdN7tP6VA0N; Thu, 04 Dec 2008 07:29:37 -0800 (PST) Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id mB4FTb2q007273; Thu, 4 Dec 2008 10:29:37 -0500 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id mB4FTa95011764; Thu, 4 Dec 2008 10:29:36 -0500 Received: from neon.msp.redhat.com (neon.msp.redhat.com [10.15.80.10]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id mB4FTZpC009325; Thu, 4 Dec 2008 10:29:36 -0500 Message-ID: <4937F75F.8070302@sandeen.net> Date: Thu, 04 Dec 2008 09:29:35 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (X11/20081119) MIME-Version: 1.0 To: lachlan@sgi.com CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] Remove unused variable in ktrace_free() Subject: Re: [PATCH] Remove unused variable in ktrace_free() References: <4937765D.2030601@sgi.com> In-Reply-To: <4937765D.2030601@sgi.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.58 on 172.16.27.26 X-Barracuda-Connect: mx2.redhat.com[66.187.237.31] X-Barracuda-Start-Time: 1228404578 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.11911 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Lachlan McIlroy wrote: > entries_size is probably left over from when we used to pass the > size to kmem_free(). Reviewed-by: Eric Sandeen > --- xfs-fix.orig/fs/xfs/support/ktrace.c > +++ xfs-fix/fs/xfs/support/ktrace.c > @@ -113,21 +113,16 @@ ktrace_alloc(int nentries, unsigned int > void > ktrace_free(ktrace_t *ktp) > { > - int entries_size; > - > if (ktp == (ktrace_t *)NULL) > return; > > /* > * Special treatment for the Vnode trace buffer. > */ > - if (ktp->kt_nentries == ktrace_zentries) { > + if (ktp->kt_nentries == ktrace_zentries) > kmem_zone_free(ktrace_ent_zone, ktp->kt_entries); > - } else { > - entries_size = (int)(ktp->kt_nentries * sizeof(ktrace_entry_t)); > - > + else > kmem_free(ktp->kt_entries); > - } > > kmem_zone_free(ktrace_hdr_zone, ktp); > } > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sandeen@sandeen.net Thu Dec 4 09:44:49 2008 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,J_CHICKENPOX_35, J_CHICKENPOX_66 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 mB4FinZY012792 for ; Thu, 4 Dec 2008 09:44:49 -0600 X-ASG-Debug-ID: 1228405487-248600bb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0A35016965D9; Thu, 4 Dec 2008 07:44:47 -0800 (PST) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id I9RWhmEYHZ8Wx2Og; Thu, 04 Dec 2008 07:44:47 -0800 (PST) Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id mB4FikKR010713; Thu, 4 Dec 2008 10:44:46 -0500 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id mB4FikEi016585; Thu, 4 Dec 2008 10:44:46 -0500 Received: from neon.msp.redhat.com (neon.msp.redhat.com [10.15.80.10]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id mB4FijMr011951; Thu, 4 Dec 2008 10:44:45 -0500 Message-ID: <4937FAED.7060503@sandeen.net> Date: Thu, 04 Dec 2008 09:44:45 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (X11/20081119) MIME-Version: 1.0 To: lachlan@sgi.com CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] Fix off by one error in page_region_mask() Subject: Re: [PATCH] Fix off by one error in page_region_mask() References: <49378B60.1060603@sgi.com> In-Reply-To: <49378B60.1060603@sgi.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.58 on 172.16.27.26 X-Barracuda-Connect: mx2.redhat.com[66.187.237.31] X-Barracuda-Start-Time: 1228405488 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.11911 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Lachlan McIlroy wrote: > final is calculated to be the last bit to set (ie inclusive) but when we > do the mask shifting final really needs to be first bit not to set. > > For example if first and final are both bit 0 (ie only first bit to be set) > then mask is completely shifted and becomes all zeroes. > > Or if first is 0 and final is 63 then the mask is shifted one bit when it > shouldn't be shifted at all. Lachlan, what's the end result of this bug? What's the broken behavior? Thanks, -Eric > --- xfs-fix.orig/fs/xfs/linux-2.6/xfs_buf.c > +++ xfs-fix/fs/xfs/linux-2.6/xfs_buf.c > @@ -129,15 +129,17 @@ page_region_mask( > int first, final; > > first = BTOPR(offset); > - final = BTOPRT(offset + length - 1); > - first = min(first, final); > + final = BTOPRT(offset + length); > + > + if (first >= final) > + return 0UL; > > mask = ~0UL; > mask <<= BITS_PER_LONG - (final - first); > mask >>= BITS_PER_LONG - (final); > > ASSERT(offset + length <= PAGE_CACHE_SIZE); > - ASSERT((final - first) < BITS_PER_LONG && (final - first) >= 0); > + ASSERT((final - first) <= BITS_PER_LONG && (final - first) > 0); > > return mask; > } > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sandeen@sandeen.net Thu Dec 4 10:26:52 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.7 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 mB4GQpEc016009 for ; Thu, 4 Dec 2008 10:26:52 -0600 X-ASG-Debug-ID: 1228408010-24bd020d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CF8D31658DE4; Thu, 4 Dec 2008 08:26:50 -0800 (PST) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id aAW9WAy0JdCCd93i; Thu, 04 Dec 2008 08:26:50 -0800 (PST) Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id mB4FSGrv007076; Thu, 4 Dec 2008 10:28:18 -0500 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id mB4FSFEq011364; Thu, 4 Dec 2008 10:28:16 -0500 Received: from neon.msp.redhat.com (neon.msp.redhat.com [10.15.80.10]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id mB4FSEZV009125; Thu, 4 Dec 2008 10:28:15 -0500 Message-ID: <4937F70E.4060600@sandeen.net> Date: Thu, 04 Dec 2008 09:28:14 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (X11/20081119) MIME-Version: 1.0 To: lachlan@sgi.com CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] Check return value of xfs_buf_get_noaddr() Subject: Re: [PATCH] Check return value of xfs_buf_get_noaddr() References: <49376D11.4010507@sgi.com> In-Reply-To: <49376D11.4010507@sgi.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.58 on 172.16.27.26 X-Barracuda-Connect: mx2.redhat.com[66.187.237.31] X-Barracuda-Start-Time: 1228408010 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.11914 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Lachlan McIlroy wrote: > We check the return value of all other calls to xfs_buf_get_noaddr(). > Make sense to do it here too. > > --- a/fs/xfs/xfs_vnodeops.c > +++ b/fs/xfs/xfs_vnodeops.c > @@ -3034,6 +3034,8 @@ xfs_zero_remaining_bytes( > bp = xfs_buf_get_noaddr(mp->m_sb.sb_blocksize, > XFS_IS_REALTIME_INODE(ip) ? > mp->m_rtdev_targp : mp->m_ddev_targp); > + if (!bp) > + return ENOMEM; Maybe + return XFS_ERROR(ENOMEM); -Eric > for (offset = startoff; offset <= endoff; offset = lastoffset + 1) { > offset_fsb = XFS_B_TO_FSBT(mp, offset); > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From andi@firstfloor.org Thu Dec 4 11:43:04 2008 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_22 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 mB4Hh45J020875 for ; Thu, 4 Dec 2008 11:43:04 -0600 X-ASG-Debug-ID: 1228412582-30a101320000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from one.firstfloor.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8E6EC16982F9 for ; Thu, 4 Dec 2008 09:43:02 -0800 (PST) Received: from one.firstfloor.org (one.firstfloor.org [213.235.205.2]) by cuda.sgi.com with ESMTP id x1GBTiZ7dOtzTh5f for ; Thu, 04 Dec 2008 09:43:02 -0800 (PST) Received: by one.firstfloor.org (Postfix, from userid 503) id 6AE671AD0021; Thu, 4 Dec 2008 18:48:38 +0100 (CET) Date: Thu, 4 Dec 2008 18:48:38 +0100 From: Andi Kleen To: Mikulas Patocka Cc: Andi Kleen , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Andi Kleen , Milan Broz X-ASG-Orig-Subj: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Subject: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Message-ID: <20081204174838.GS6703@one.firstfloor.org> References: <20081204100050.GN6703@one.firstfloor.org> <20081204142015.GQ6703@one.firstfloor.org> <20081204145810.GR6703@one.firstfloor.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.1i X-Barracuda-Connect: one.firstfloor.org[213.235.205.2] X-Barracuda-Start-Time: 1228412583 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.11918 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Dec 04, 2008 at 11:45:44AM -0500, Mikulas Patocka wrote: > > No there is nothing unordered. The file system path typically looks like > > > > commit of a transaction > > if (i have never seen a barrier failing) > > write block with barrier > > if (EOPNOTSUPP) { > > record failure > > submit synchronously > > } > > } else > > submit synchronously > > > > If you view this as a "right" way of using barriers, then you can drop It's the way the file systems do it. If you don't believe me feel free to read the code for yourself. > barrier support at all and replace this code sequence with: > > flush disk cache > submit write synchronously > flush disk cache > > --- because synchronous barriers bring you no performance advantage over > the above sequence. Remember this is done by a commit thread in a journaling file system. Commits are ordered so the thread cannot really order out of order anyways. And yes the barriers are essentially a way to flush the cache regularly for selected commits. The alternative (if you want to guarantee transaction order) would be to disable the write cache completely and do it synchronous on each IO. > > > So if a pvmove barrier fails it will just submit synchronously. > > > > The write block with barrier bit varies, jbd/gfs2 do it synchronously > > too and xfs does it asynchronously (with io done callbacks), but > > And how does xfs preserve write ordering, if the barrier asynchronously > fails with -EOPNOTSUPP and there are other writes submitted after the > barrier? >From the high level journaling perspective they are not asynchronous I think. Just the low level xfs_buf interface happens to use the asynchronous callbacks instead of calling into the block layer directly like jbd et.al. do. -Andi From SRS0+f5e6b4c98b71a692776a+1929+infradead.org+hch@bombadil.srs.infradead.org Thu Dec 4 11:53:16 2008 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_22 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 mB4HrGMK021890 for ; Thu, 4 Dec 2008 11:53:16 -0600 X-ASG-Debug-ID: 1228413195-06f902f90000-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 918C31697A41 for ; Thu, 4 Dec 2008 09:53:15 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 7vMTs5HRHgMrAmLf for ; Thu, 04 Dec 2008 09:53:15 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L8INv-0001HJ-Ej; Thu, 04 Dec 2008 17:53:07 +0000 Date: Thu, 4 Dec 2008 12:53:07 -0500 From: Christoph Hellwig To: Andi Kleen Cc: Mikulas Patocka , Andi Kleen , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Milan Broz X-ASG-Orig-Subj: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Subject: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Message-ID: <20081204175306.GA24196@infradead.org> References: <20081204100050.GN6703@one.firstfloor.org> <20081204142015.GQ6703@one.firstfloor.org> <20081204145810.GR6703@one.firstfloor.org> <20081204174838.GS6703@one.firstfloor.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081204174838.GS6703@one.firstfloor.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: 1228413195 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Dec 04, 2008 at 06:48:38PM +0100, Andi Kleen wrote: > I think. Just the low level xfs_buf interface happens to use the asynchronous > callbacks instead of calling into the block layer directly like jbd et.al. > do. Only delwri buffers are delayed in XFS, but the journaling code only uses async buffers which *synchronously* call into the block layer, but just don't wait for it to complete.. From mpatocka@redhat.com Thu Dec 4 13:30:45 2008 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 mB4JUib4028122 for ; Thu, 4 Dec 2008 13:30:45 -0600 X-ASG-Debug-ID: 1228419041-19d1006e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0C9C316A348C for ; Thu, 4 Dec 2008 11:30:41 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by cuda.sgi.com with ESMTP id 0Ge2zuAhoMFeCbba for ; Thu, 04 Dec 2008 11:30:41 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id mB4GjmLS014507; Thu, 4 Dec 2008 11:45:48 -0500 Received: from hs20-bc2-1.build.redhat.com (hs20-bc2-1.build.redhat.com [10.10.28.34]) by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id mB4GjieA006255; Thu, 4 Dec 2008 11:45:47 -0500 Received: from hs20-bc2-1.build.redhat.com (localhost.localdomain [127.0.0.1]) by hs20-bc2-1.build.redhat.com (8.13.1/8.13.1) with ESMTP id mB4GjiXn004025; Thu, 4 Dec 2008 11:45:44 -0500 Received: from localhost (mpatocka@localhost) by hs20-bc2-1.build.redhat.com (8.13.1/8.13.1/Submit) with ESMTP id mB4GjitO004019; Thu, 4 Dec 2008 11:45:44 -0500 X-Authentication-Warning: hs20-bc2-1.build.redhat.com: mpatocka owned process doing -bs Date: Thu, 4 Dec 2008 11:45:44 -0500 (EST) From: Mikulas Patocka X-X-Sender: mpatocka@hs20-bc2-1.build.redhat.com To: Andi Kleen cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Andi Kleen , Milan Broz X-ASG-Orig-Subj: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Subject: Re: Device loses barrier support (was: Fixed patch for simple barriers.) In-Reply-To: <20081204145810.GR6703@one.firstfloor.org> Message-ID: References: <20081204100050.GN6703@one.firstfloor.org> <20081204142015.GQ6703@one.firstfloor.org> <20081204145810.GR6703@one.firstfloor.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 X-Barracuda-Connect: mx1.redhat.com[66.187.233.31] X-Barracuda-Start-Time: 1228419044 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com > > > > finished after the 2nd write) and you are in an interrupt context, where > > > > you can't reissue -EOPNOTSUPP request. So what do you want to do? > > > > > > The barrier aware file systems I know of just resubmit synchronously when > > > a barrier fails. > > > > ... and produce structure corruption for certain period in time, because > > the writes meant to be ordered are submitted unordered. > > No there is nothing unordered. The file system path typically looks like > > commit of a transaction > if (i have never seen a barrier failing) > write block with barrier > if (EOPNOTSUPP) { > record failure > submit synchronously > } > } else > submit synchronously > If you view this as a "right" way of using barriers, then you can drop barrier support at all and replace this code sequence with: flush disk cache submit write synchronously flush disk cache --- because synchronous barriers bring you no performance advantage over the above sequence. > So if a pvmove barrier fails it will just submit synchronously. > > The write block with barrier bit varies, jbd/gfs2 do it synchronously > too and xfs does it asynchronously (with io done callbacks), but And how does xfs preserve write ordering, if the barrier asynchronously fails with -EOPNOTSUPP and there are other writes submitted after the barrier? > in both cases they handle an EOPNOTSUPP comming out in the final > io done. Mikulas From mpatocka@redhat.com Thu Dec 4 13:34:47 2008 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 mB4JYkYg028350 for ; Thu, 4 Dec 2008 13:34:47 -0600 X-ASG-Debug-ID: 1228419284-260402c20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2BD441BEFB6E for ; Thu, 4 Dec 2008 11:34:44 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by cuda.sgi.com with ESMTP id rX9vcF3VyE3SWQH2 for ; Thu, 04 Dec 2008 11:34:44 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id mB4E0IO8013484; Thu, 4 Dec 2008 09:00:18 -0500 Received: from hs20-bc2-1.build.redhat.com (hs20-bc2-1.build.redhat.com [10.10.28.34]) by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id mB4E0DlC014631; Thu, 4 Dec 2008 09:00:17 -0500 Received: from hs20-bc2-1.build.redhat.com (localhost.localdomain [127.0.0.1]) by hs20-bc2-1.build.redhat.com (8.13.1/8.13.1) with ESMTP id mB4E0DEX009882; Thu, 4 Dec 2008 09:00:13 -0500 Received: from localhost (mpatocka@localhost) by hs20-bc2-1.build.redhat.com (8.13.1/8.13.1/Submit) with ESMTP id mB4E0DdY009876; Thu, 4 Dec 2008 09:00:13 -0500 X-Authentication-Warning: hs20-bc2-1.build.redhat.com: mpatocka owned process doing -bs Date: Thu, 4 Dec 2008 09:00:13 -0500 (EST) From: Mikulas Patocka X-X-Sender: mpatocka@hs20-bc2-1.build.redhat.com To: Andi Kleen , linux-kernel@vger.kernel.org, xfs@oss.sgi.com cc: Alasdair G Kergon , Andi Kleen , Milan Broz X-ASG-Orig-Subj: Device loses barrier support (was: Fixed patch for simple barriers.) Subject: Device loses barrier support (was: Fixed patch for simple barriers.) In-Reply-To: <20081204100050.GN6703@one.firstfloor.org> Message-ID: References: <20081204100050.GN6703@one.firstfloor.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 X-Barracuda-Connect: mx1.redhat.com[66.187.233.31] X-Barracuda-Start-Time: 1228419286 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, 4 Dec 2008, Andi Kleen wrote: > On Thu, Dec 04, 2008 at 12:09:56AM -0500, Mikulas Patocka wrote: > > > > BTW. how is this patch supposed to work with pvmove? I.e. you advertise to > > a filesystem that you support barriers, then the user runs pvmove and you > > drop barrier support while the filesystem is mounted - that will confuse > > the filesystem and maybe produce a data corruption. I wouldn't recommend > > File systems handle this generally. Also the pvmove itself will > act as a barrier. > > -Andi How do you want to handle this? Imagine: the filesystem submits a 1st write request the filesystem submits a 2nd write barrier request the filesystem submits a 3rd write request ... time passes ... the 1st write request ends with success the 2nd write request ends with -EOPNOTSUPP the 3rd write request ends with success --- when you first see -EOPNOTSUPP, you have already corrupted filesystem (the 3rd write passed while the filesystem expected that it would be finished after the 2nd write) and you are in an interrupt context, where you can't reissue -EOPNOTSUPP request. So what do you want to do? Possible ways how to solve it: 1) Wait synchronously for barriers, don't issue any other writes while barrier is pending. - this basically supresses any performance advantage barriers could have. Ext3 is doing this. - this solion is right. But if this is "the way it should be done", you could rip barriers from the kernel completely and replace them with a simple call to flush hardware cache. In this use scenario, they have no advantage over a simple call to flush cache. 2) Resubmit the failed -EOPNOTSUPP request from a thread. - this is what XFS is doing. Bad for code complexity (there must be a special thread just to catch failed IOs). Also, it still produces corrupted filesystem for a brief period of time. 3) Fail barriers only synchronously? (so that the caller can detect missing barrier support before issuing other writes) - unimplemntable in device mapper, if the device is suspended, it queues bios. 4) Disallow losing barrier support? - for me it looks like a sensible solution. Mikulas From mpatocka@redhat.com Thu Dec 4 13:53:16 2008 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 mB4JrGYq029736 for ; Thu, 4 Dec 2008 13:53:16 -0600 X-ASG-Debug-ID: 1228420394-260403750000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6379516A304E for ; Thu, 4 Dec 2008 11:53:14 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by cuda.sgi.com with ESMTP id l4b7II07Rcsl3UCv for ; Thu, 04 Dec 2008 11:53:14 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id mB4JbdXL017027; Thu, 4 Dec 2008 14:37:39 -0500 Received: from hs20-bc2-1.build.redhat.com (hs20-bc2-1.build.redhat.com [10.10.28.34]) by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id mB4JbbF0030320; Thu, 4 Dec 2008 14:37:37 -0500 Received: from hs20-bc2-1.build.redhat.com (localhost.localdomain [127.0.0.1]) by hs20-bc2-1.build.redhat.com (8.13.1/8.13.1) with ESMTP id mB4Jbbna031065; Thu, 4 Dec 2008 14:37:37 -0500 Received: from localhost (mpatocka@localhost) by hs20-bc2-1.build.redhat.com (8.13.1/8.13.1/Submit) with ESMTP id mB4Jbadj031059; Thu, 4 Dec 2008 14:37:37 -0500 X-Authentication-Warning: hs20-bc2-1.build.redhat.com: mpatocka owned process doing -bs Date: Thu, 4 Dec 2008 14:37:36 -0500 (EST) From: Mikulas Patocka X-X-Sender: mpatocka@hs20-bc2-1.build.redhat.com To: Andi Kleen cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Andi Kleen , Milan Broz X-ASG-Orig-Subj: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Subject: Re: Device loses barrier support (was: Fixed patch for simple barriers.) In-Reply-To: <20081204174838.GS6703@one.firstfloor.org> Message-ID: References: <20081204100050.GN6703@one.firstfloor.org> <20081204142015.GQ6703@one.firstfloor.org> <20081204145810.GR6703@one.firstfloor.org> <20081204174838.GS6703@one.firstfloor.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 X-Barracuda-Connect: mx1.redhat.com[66.187.233.31] X-Barracuda-Start-Time: 1228420395 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, 4 Dec 2008, Andi Kleen wrote: > On Thu, Dec 04, 2008 at 11:45:44AM -0500, Mikulas Patocka wrote: > > > No there is nothing unordered. The file system path typically looks like > > > > > > commit of a transaction > > > if (i have never seen a barrier failing) > > > write block with barrier > > > if (EOPNOTSUPP) { > > > record failure > > > submit synchronously > > > } > > > } else > > > submit synchronously > > > > > > > If you view this as a "right" way of using barriers, then you can drop > > It's the way the file systems do it. If you don't believe me feel > free to read the code for yourself. > > > barrier support at all and replace this code sequence with: > > > > flush disk cache > > submit write synchronously > > flush disk cache > > > > --- because synchronous barriers bring you no performance advantage over > > the above sequence. > > Remember this is done by a commit thread in a journaling file system. > Commits are ordered so the thread cannot really order out of order > anyways. And yes the barriers are essentially a way to flush the cache > regularly for selected commits. The alternative (if you > want to guarantee transaction order) would be to disable > the write cache completely and do it synchronous on each IO. Some times ago, I used barriers the asynchronous way in the spadfs filesystem and they helped very much. The commit logic is: - take the transaction lock (it prevents any updates) - write remaining dirty buffers (but don't wait) - submit barrier write to move to new transaction (but don't wait) - drop the transaction lock - eventually wait for completion of writes (if this was issued by fsync or sync) or don't wait at all if it was issued by other things (periodic syncer, emergency sync to reclaim free space or so). The advantage of this approach is that the lock is held for very small time, no IOs are really waited for inside the lock. So it doesn't block concurrent activity while someone is committing. Note, that after the lock is dropped, anyone can for example call mark_buffer_dirty, but writing of the new buffer won't be reordered with the barrier write that is already pending in the queue, so consistency is maintained. I somehow got the idea that this was the reason why barriers are implemented the way they are and that this was their intended mode of operation. Note that you can't achieve the same thing (don't wait inside the lock) if you submit barriers synchronously or if you use non-barrier writes and disk cache flushes. If you are pushing what you are pushing --- barriers allowing to return EOPNOTSUPP anytime --- then asynchronous barrier submits can no longer be used, because by the time EOPNOTSUPP is detected, the filesystem is already corrupted. Also, read Documentation/block/barrier.txt and see what you are breaking in the document: "all requests queued after the barrier request must be started only after the barrier request is finished (again, made it to the physical medium)." "Preceding requests are processed before the barrier and following requests after." --- you are going to break these rules. If the barrier can return -EOPNOTSUPP anytime, the following request will be finished before the barrier write is finished. (because the barrier write must be resubmitted without barrier) Basically, if you allow randomly failed barriers, you can drop barriers at all and replace them with blkdev_issue_flush(); write&wait_synchronous(); blkdev_issue_flush(). There is no more reason to maintain complicated logic of barriers, if you cripple them to the unusable point when they randomly fail. Another thing: I'm wondering, where in fsync() does Linux wait for hardware disk cache to be flushed? Isn't there a bug that fsync() will return before the cache is flushed? I couldn't really find it. The last thing do_fsync calls is filemap_fdatawait and it doesn't do cache flush (blkdev_issue_flush). Mikulas From david@fromorbit.com Thu Dec 4 15:34:08 2008 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 mB4LY7eJ004022 for ; Thu, 4 Dec 2008 15:34:08 -0600 X-ASG-Debug-ID: 1228426445-19ed004a0000-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 AFCB116A87B2 for ; Thu, 4 Dec 2008 13:34:05 -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 ZXeRlCqR0jqDmTm8 for ; Thu, 04 Dec 2008 13:34:05 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAC/aN0l5LJfT/2dsb2JhbADRD4MF X-IronPort-AV: E=Sophos;i="4.33,716,1220193000"; d="scan'208";a="269576521" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 05 Dec 2008 08:04:03 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L8Lph-0005R9-VM; Fri, 05 Dec 2008 08:34:01 +1100 Date: Fri, 5 Dec 2008 08:34:01 +1100 From: Dave Chinner To: Christoph Hellwig Cc: Arkadiusz Miskiewicz , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Subject: Re: 2.6.27.7 vanilla, project quota enabled and process stuck in D state (repeatable every time) Message-ID: <20081204213401.GC32301@disturbed> Mail-Followup-To: Christoph Hellwig , Arkadiusz Miskiewicz , xfs@oss.sgi.com References: <200812021949.55463.arekm@maven.pl> <200812031406.41882.arekm@maven.pl> <20081203213028.GW18236@disturbed> <200812032242.29326.arekm@maven.pl> <20081203220934.GA32301@disturbed> <20081204123206.GA6935@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081204123206.GA6935@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: 1228426446 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.11933 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Dec 04, 2008 at 07:32:06AM -0500, Christoph Hellwig wrote: > On Thu, Dec 04, 2008 at 09:09:34AM +1100, Dave Chinner wrote: > > Is that the unlock of the inodes is using the incorrect lock > > type for the unlock, (inodes lock XFS_ILOCK_EXCL, unlocked XFS_ILOCK_SHARED) > > which means they don't get unlocked and the next attempt to do anything > > with those inodes will hang. > > > > Compile-tested-only patch below that should fix the problem. > > Yeah, that also explains why my patch fixes it :) I'd say let's put > yours into 2.6.28 and -stable, and I'll rediff mine ontop for the 2.6.29 > queue. I'll also write a testcase for xfsqa based on Arkadiusz's > report. I agree that this is probably the best approach - your fix is the better long term solution, I think. SGI folk, can we get my patch pushed to linus and stable ASAP? Probably be an idea to add a: Tested-by: Arkadiusz Miskiewicz tag to it as well to make it easy for the stable review process.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From arekm@maven.pl Thu Dec 4 15:44:37 2008 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 mB4LibXQ004667 for ; Thu, 4 Dec 2008 15:44:37 -0600 X-ASG-Debug-ID: 1228427075-524801eb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from main.carme.maven.pl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A379B16A8A52 for ; Thu, 4 Dec 2008 13:44:35 -0800 (PST) Received: from main.carme.maven.pl (main.carme.maven.pl [193.239.45.138]) by cuda.sgi.com with ESMTP id I8At4vALCB2TL83S for ; Thu, 04 Dec 2008 13:44:35 -0800 (PST) Received: from chello089076027073.chello.pl ([89.76.27.73]:4909 helo=maven.pl) by main.carme.maven.pl with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.69) (envelope-from ) id 1L8LuX-0003W0-Qr for xfs@oss.sgi.com; Thu, 04 Dec 2008 22:39:01 +0100 Received: from arekm by maven.pl with local (Exim 4.69) (envelope-from ) id 1L8Lu2-0000st-HL for xfs@oss.sgi.com; Thu, 04 Dec 2008 22:38:31 +0100 From: Arkadiusz Miskiewicz To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs_quota tool exit status + bugzilla problem Subject: Re: [PATCH] xfs_quota tool exit status + bugzilla problem Date: Thu, 4 Dec 2008 22:38:30 +0100 User-Agent: PLD Linux KMail/1.9.10 References: <200804201213.52772.arekm@maven.pl> In-Reply-To: <200804201213.52772.arekm@maven.pl> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-2" Content-Disposition: inline Message-Id: <200812042238.30505.arekm@maven.pl> X-Barracuda-Connect: main.carme.maven.pl[193.239.45.138] X-Barracuda-Start-Time: 1228427075 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0784 1.0000 -1.5233 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= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.11933 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id mB4LibXQ004667 On Sunday 20 of April 2008, Arkadiusz Miskiewicz wrote: > Hello, > > Could anyone review and commit > http://oss.sgi.com/bugzilla/show_bug.cgi?id=781 ? > > The second thing is - please change bugzilla configuration to allow email > address changes. Right now it's not possible to change email to new one > (and in my case old email used no longer works). > > Thanks, A few months ping? -- Arkadiusz Mi¶kiewicz PLD/Linux Team arekm / maven.pl http://ftp.pld-linux.org/ From andi@firstfloor.org Thu Dec 4 16:04:44 2008 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 mB4M4hr7006370 for ; Thu, 4 Dec 2008 16:04:44 -0600 X-ASG-Debug-ID: 1228428281-19ea011c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from one.firstfloor.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7201B16A8D36 for ; Thu, 4 Dec 2008 14:04:42 -0800 (PST) Received: from one.firstfloor.org (one.firstfloor.org [213.235.205.2]) by cuda.sgi.com with ESMTP id 7KWKacA261CX108a for ; Thu, 04 Dec 2008 14:04:42 -0800 (PST) Received: by one.firstfloor.org (Postfix, from userid 503) id 9E4D51AD0021; Thu, 4 Dec 2008 23:15:51 +0100 (CET) Date: Thu, 4 Dec 2008 23:15:51 +0100 From: Andi Kleen To: Mikulas Patocka Cc: Andi Kleen , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Andi Kleen , Milan Broz X-ASG-Orig-Subj: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Subject: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Message-ID: <20081204221551.GV6703@one.firstfloor.org> References: <20081204100050.GN6703@one.firstfloor.org> <20081204142015.GQ6703@one.firstfloor.org> <20081204145810.GR6703@one.firstfloor.org> <20081204174838.GS6703@one.firstfloor.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.1i X-Barracuda-Connect: one.firstfloor.org[213.235.205.2] X-Barracuda-Start-Time: 1228428282 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.11935 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- > If you are pushing what you are pushing --- barriers allowing to return > EOPNOTSUPP anytime --- then asynchronous barrier submits can no longer be > used, because by the time EOPNOTSUPP is detected, the filesystem is > already corrupted. Chris Mason pointed out that this can actually already happen. From a quick review this can happen in MD raid1 at least (their barriers_work flag is pretty similar to the DM implementation I did). So everyone has to handle this already anyways. > I'm wondering, where in fsync() does Linux wait for hardware disk cache to > be flushed? Isn't there a bug that fsync() will return before the cache is > flushed? I couldn't really find it. The last thing do_fsync calls is > filemap_fdatawait and it doesn't do cache flush (blkdev_issue_flush). At least in fsync() on journaling fs the metadata update should push it. -Andi -- ak@linux.intel.com From mpatocka@redhat.com Thu Dec 4 17:08:40 2008 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 mB4N8erM010804 for ; Thu, 4 Dec 2008 17:08:40 -0600 X-ASG-Debug-ID: 1228432118-06c900ba0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6767816AE1CD for ; Thu, 4 Dec 2008 15:08:39 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by cuda.sgi.com with ESMTP id towRRRbtIkh9V46d for ; Thu, 04 Dec 2008 15:08:39 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id mB4N8aBt020166; Thu, 4 Dec 2008 18:08:36 -0500 Received: from hs20-bc2-1.build.redhat.com (hs20-bc2-1.build.redhat.com [10.10.28.34]) by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id mB4N8Y2F002150; Thu, 4 Dec 2008 18:08:34 -0500 Received: from hs20-bc2-1.build.redhat.com (localhost.localdomain [127.0.0.1]) by hs20-bc2-1.build.redhat.com (8.13.1/8.13.1) with ESMTP id mB4N8YTc031238; Thu, 4 Dec 2008 18:08:34 -0500 Received: from localhost (mpatocka@localhost) by hs20-bc2-1.build.redhat.com (8.13.1/8.13.1/Submit) with ESMTP id mB4N8X2J031232; Thu, 4 Dec 2008 18:08:34 -0500 X-Authentication-Warning: hs20-bc2-1.build.redhat.com: mpatocka owned process doing -bs Date: Thu, 4 Dec 2008 18:08:33 -0500 (EST) From: Mikulas Patocka X-X-Sender: mpatocka@hs20-bc2-1.build.redhat.com To: Andi Kleen cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Andi Kleen , Milan Broz X-ASG-Orig-Subj: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Subject: Re: Device loses barrier support (was: Fixed patch for simple barriers.) In-Reply-To: <20081204221551.GV6703@one.firstfloor.org> Message-ID: References: <20081204100050.GN6703@one.firstfloor.org> <20081204142015.GQ6703@one.firstfloor.org> <20081204145810.GR6703@one.firstfloor.org> <20081204174838.GS6703@one.firstfloor.org> <20081204221551.GV6703@one.firstfloor.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 X-Barracuda-Connect: mx1.redhat.com[66.187.233.31] X-Barracuda-Start-Time: 1228432119 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, 4 Dec 2008, Andi Kleen wrote: > > If you are pushing what you are pushing --- barriers allowing to return > > EOPNOTSUPP anytime --- then asynchronous barrier submits can no longer be > > used, because by the time EOPNOTSUPP is detected, the filesystem is > > already corrupted. > > Chris Mason pointed out that this can actually already happen. From > a quick review this can happen in MD raid1 at least (their barriers_work > flag is pretty similar to the DM implementation I did). So everyone > has to handle this already anyways. So: remove barriers completely and use only blkdev_issue_flush to flush disk cache. Because none of the major filesystems learned to use barrier-optimized commits and this "barriers-randomly-fail-with-EOPNOTSUPP" fact makes it impossible to use them in an optimized way anyway. There is another point: "what is the main performance advantage of barriers?" - "that the user can turn on hardware write cache with hdparm -W 1 command". And if barriers fail at random points, the user can't turn on disk cache anyway (he would get data corruption if barrier write failed and hardware write cache was enabled). So barriers make no sense here. > > I'm wondering, where in fsync() does Linux wait for hardware disk cache to > > be flushed? Isn't there a bug that fsync() will return before the cache is > > flushed? I couldn't really find it. The last thing do_fsync calls is > > filemap_fdatawait and it doesn't do cache flush (blkdev_issue_flush). > > At least in fsync() on journaling fs the metadata update should push it. > > -Andi And what about fdatasync()? Mikulas From andi@firstfloor.org Thu Dec 4 18:38:18 2008 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 mB50cFM6017069 for ; Thu, 4 Dec 2008 18:38:18 -0600 X-ASG-Debug-ID: 1228437493-242d00090000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from one.firstfloor.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D13FD16AF1A1 for ; Thu, 4 Dec 2008 16:38:13 -0800 (PST) Received: from one.firstfloor.org (one.firstfloor.org [213.235.205.2]) by cuda.sgi.com with ESMTP id lU6zXNJWmehdgcjw for ; Thu, 04 Dec 2008 16:38:13 -0800 (PST) Received: by one.firstfloor.org (Postfix, from userid 503) id BE97C1AD0021; Fri, 5 Dec 2008 01:48:49 +0100 (CET) Date: Fri, 5 Dec 2008 01:48:49 +0100 From: Andi Kleen To: Mikulas Patocka Cc: Andi Kleen , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Andi Kleen , Milan Broz X-ASG-Orig-Subj: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Subject: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Message-ID: <20081205004849.GX6703@one.firstfloor.org> References: <20081204100050.GN6703@one.firstfloor.org> <20081204142015.GQ6703@one.firstfloor.org> <20081204145810.GR6703@one.firstfloor.org> <20081204174838.GS6703@one.firstfloor.org> <20081204221551.GV6703@one.firstfloor.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.1i X-Barracuda-Connect: one.firstfloor.org[213.235.205.2] X-Barracuda-Start-Time: 1228437494 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.11944 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- > And if barriers fail at random points, the user can't turn on disk cache > anyway (he would get data corruption if barrier write failed and hardware I think we already established earlier in the thread that there is no disk corruption > > > I'm wondering, where in fsync() does Linux wait for hardware disk cache to > > > be flushed? Isn't there a bug that fsync() will return before the cache is > > > flushed? I couldn't really find it. The last thing do_fsync calls is > > > filemap_fdatawait and it doesn't do cache flush (blkdev_issue_flush). > > > > At least in fsync() on journaling fs the metadata update should push it. > > > > -Andi > > And what about fdatasync()? I don't know. The surest way to find out is to instrument it and try. -Andi -- ak@linux.intel.com From mpatocka@redhat.com Thu Dec 4 19:21:12 2008 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 mB51LBDD020663 for ; Thu, 4 Dec 2008 19:21:12 -0600 X-ASG-Debug-ID: 1228440070-353f00ed0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F129D16AF26B for ; Thu, 4 Dec 2008 17:21:10 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by cuda.sgi.com with ESMTP id BMoHB2dhbbHJd8ev for ; Thu, 04 Dec 2008 17:21:10 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id mB51GPCY018942; Thu, 4 Dec 2008 20:16:25 -0500 Received: from hs20-bc2-1.build.redhat.com (hs20-bc2-1.build.redhat.com [10.10.28.34]) by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id mB51GNRs020118; Thu, 4 Dec 2008 20:16:24 -0500 Received: from hs20-bc2-1.build.redhat.com (localhost.localdomain [127.0.0.1]) by hs20-bc2-1.build.redhat.com (8.13.1/8.13.1) with ESMTP id mB51GNSI023161; Thu, 4 Dec 2008 20:16:23 -0500 Received: from localhost (mpatocka@localhost) by hs20-bc2-1.build.redhat.com (8.13.1/8.13.1/Submit) with ESMTP id mB51GN7i023155; Thu, 4 Dec 2008 20:16:23 -0500 X-Authentication-Warning: hs20-bc2-1.build.redhat.com: mpatocka owned process doing -bs Date: Thu, 4 Dec 2008 20:16:23 -0500 (EST) From: Mikulas Patocka X-X-Sender: mpatocka@hs20-bc2-1.build.redhat.com To: Andi Kleen cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Andi Kleen , Milan Broz X-ASG-Orig-Subj: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Subject: Re: Device loses barrier support (was: Fixed patch for simple barriers.) In-Reply-To: <20081205004849.GX6703@one.firstfloor.org> Message-ID: References: <20081204100050.GN6703@one.firstfloor.org> <20081204142015.GQ6703@one.firstfloor.org> <20081204145810.GR6703@one.firstfloor.org> <20081204174838.GS6703@one.firstfloor.org> <20081204221551.GV6703@one.firstfloor.org> <20081205004849.GX6703@one.firstfloor.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 X-Barracuda-Connect: mx1.redhat.com[66.187.233.31] X-Barracuda-Start-Time: 1228440070 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Fri, 5 Dec 2008, Andi Kleen wrote: > > And if barriers fail at random points, the user can't turn on disk cache > > anyway (he would get data corruption if barrier write failed and hardware > > I think we already established earlier in the thread that there is no disk > corruption So, the facts are: * barrier support in md-raid1 deviates from the specification at Documentation/block/barrier.txt. The specification says that requests submitted after the barrier request hit the media after the barrier request hits the media. The reality is that the barrier request can be randomly aborted and the requests submitted after it hit the media before the barrier request. * the filesystems developed hacks to work around this issue, the hacks involve not submitting more requests after the barrier request, synchronously waiting for the barrier request and eventually retrying it. These hacks suppress any performance advantage barriers could bring. * you submit a patch that makes barriers even more often deviate from the specification and you argue that the patch is correct because filesystems handle this deviation. This is runaway logic that will eventually turn Linux into unmaintainable mess. What do you think we'll be doing when we'll be implementing barriers into other dm targets? Do you really think it'll be fun to write code to double-submit all metadata writes just because you and some person at md-raid1 provided an unreliable interface? I am again repeating: either make barriers consistent with the specification, or remove them at all. Mikulas From andi@firstfloor.org Thu Dec 4 19:31:32 2008 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 mB51VWts021275 for ; Thu, 4 Dec 2008 19:31:32 -0600 X-ASG-Debug-ID: 1228440690-242c01c40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from one.firstfloor.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6905B16AEEA5 for ; Thu, 4 Dec 2008 17:31:30 -0800 (PST) Received: from one.firstfloor.org (one.firstfloor.org [213.235.205.2]) by cuda.sgi.com with ESMTP id hBJwDSgRygFB8DY7 for ; Thu, 04 Dec 2008 17:31:30 -0800 (PST) Received: by one.firstfloor.org (Postfix, from userid 503) id D17CD1AD0022; Fri, 5 Dec 2008 02:37:39 +0100 (CET) Date: Fri, 5 Dec 2008 02:37:39 +0100 From: Andi Kleen To: Mikulas Patocka Cc: Andi Kleen , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Andi Kleen , Milan Broz X-ASG-Orig-Subj: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Subject: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Message-ID: <20081205013739.GZ6703@one.firstfloor.org> References: <20081204142015.GQ6703@one.firstfloor.org> <20081204145810.GR6703@one.firstfloor.org> <20081204174838.GS6703@one.firstfloor.org> <20081204221551.GV6703@one.firstfloor.org> <20081205004849.GX6703@one.firstfloor.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.1i X-Barracuda-Connect: one.firstfloor.org[213.235.205.2] X-Barracuda-Start-Time: 1228440691 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.11948 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- > * barrier support in md-raid1 deviates from the specification at > Documentation/block/barrier.txt. The specification says that requests > submitted after the barrier request hit the media after the barrier > request hits the media. The reality is that the barrier request can be > randomly aborted and the requests submitted after it hit the media before > the barrier request. Yes the spec should be probably updated. But also see Linus' rant from yesterday about code vs documentation. When in doubt the code wins. > > * the filesystems developed hacks to work around this issue, the hacks > involve not submitting more requests after the barrier request, I suspect the reason the file systems did it this way is that it was a much simpler change than to rewrite the transaction manager for this. > synchronously waiting for the barrier request and eventually retrying it. > These hacks suppress any performance advantage barriers could bring. > > * you submit a patch that makes barriers even more often deviate from the > specification and you argue that the patch is correct because filesystems > handle this deviation. Sorry what counts is the code behaviour, not the specification. -Andi -- ak@linux.intel.com From xaiki@oss.sgi.com Thu Dec 4 19:50:26 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB51oQSr022972 for ; Thu, 4 Dec 2008 19:50:26 -0600 Received: (from xaiki@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mB51oL2T022935; Thu, 4 Dec 2008 19:50:21 -0600 Date: Thu, 4 Dec 2008 19:50:21 -0600 Message-Id: <200812050150.mB51oL2T022935@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.28-rc3-1104-g6a0775a X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 5a8d0f3c7af801c7263fbba39952504d6fc7ff60 X-Git-Newrev: 6a0775a991d5597ce98f1e15373288ea133cc793 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated 6a0775a [XFS] Fix hang after disallowed rename across directory quota domains 8bb5732 [XFS] Fix compile with CONFIG_COMPAT enabled from 5a8d0f3c7af801c7263fbba39952504d6fc7ff60 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 6a0775a991d5597ce98f1e15373288ea133cc793 Author: Dave Chinner Date: Thu Dec 4 09:09:34 2008 +1100 [XFS] Fix hang after disallowed rename across directory quota domains When project quota is active and is being used for directory tree quota control, we disallow rename outside the current directory tree. This requires a check to be made after all the inodes involved in the rename are locked. We fail to unlock the inodes correctly if we disallow the rename when the target is outside the current directory tree. This results in a hang on the next access to the inodes involved in failed rename. Reported-by: Arkadiusz Miskiewicz Signed-off-by: Dave Chinner Tested-by: Arkadiusz Miskiewicz Signed-off-by: Lachlan McIlroy commit 8bb57320f3f5dd8c2373c0b66e4950391e037109 Author: Christoph Hellwig Date: Thu Dec 4 14:23:27 2008 +0100 [XFS] Fix compile with CONFIG_COMPAT enabled Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_ioctl.h | 2 +- fs/xfs/xfs_rename.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- XFS development tree From lachlan@sgi.com Thu Dec 4 20:05:21 2008 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 (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB525LAG023763 for ; Thu, 4 Dec 2008 20:05:21 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id C15938F8084; Thu, 4 Dec 2008 18:05:16 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id NAA10392; Fri, 5 Dec 2008 13:05:14 +1100 Message-ID: <49388C74.9090605@sgi.com> Date: Fri, 05 Dec 2008 13:05:40 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: Eric Sandeen CC: xfs-oss Subject: Re: [PATCH] Check return value of xfs_buf_get_noaddr() References: <49376D11.4010507@sgi.com> <4937F70E.4060600@sandeen.net> In-Reply-To: <4937F70E.4060600@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Eric Sandeen wrote: > Lachlan McIlroy wrote: >> We check the return value of all other calls to xfs_buf_get_noaddr(). >> Make sense to do it here too. >> >> --- a/fs/xfs/xfs_vnodeops.c >> +++ b/fs/xfs/xfs_vnodeops.c >> @@ -3034,6 +3034,8 @@ xfs_zero_remaining_bytes( >> bp = xfs_buf_get_noaddr(mp->m_sb.sb_blocksize, >> XFS_IS_REALTIME_INODE(ip) ? >> mp->m_rtdev_targp : mp->m_ddev_targp); >> + if (!bp) >> + return ENOMEM; > > Maybe > > + return XFS_ERROR(ENOMEM); Okay. Will do. > > -Eric > >> for (offset = startoff; offset <= endoff; offset = lastoffset + 1) { >> offset_fsb = XFS_B_TO_FSBT(mp, offset); >> >> _______________________________________________ >> xfs mailing list >> xfs@oss.sgi.com >> http://oss.sgi.com/mailman/listinfo/xfs >> > > From xaiki@oss.sgi.com Thu Dec 4 20:19:21 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB52JLAP025236 for ; Thu, 4 Dec 2008 20:19:21 -0600 Received: (from xaiki@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mB52JKpw025207; Thu, 4 Dec 2008 20:19:20 -0600 Date: Thu, 4 Dec 2008 20:19:20 -0600 Message-Id: <200812050219.mB52JKpw025207@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.28-rc3-1105-gc642261 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 6a0775a991d5597ce98f1e15373288ea133cc793 X-Git-Newrev: c6422617a1c0d7787e515748b01f594fe43aea98 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated c642261 [XFS] Check return value of xfs_buf_get_noaddr() from 6a0775a991d5597ce98f1e15373288ea133cc793 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c6422617a1c0d7787e515748b01f594fe43aea98 Author: Lachlan McIlroy Date: Fri Dec 5 13:16:15 2008 +1100 [XFS] Check return value of xfs_buf_get_noaddr() We check the return value of all other calls to xfs_buf_get_noaddr(). Make sense to do it here too. Signed-off-by: Lachlan McIlroy Reviewed-by: Christoph Hellwig Reviewed-by: Eric Sandeen ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_vnodeops.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) hooks/post-receive -- XFS development tree From andi@firstfloor.org Thu Dec 4 21:04:03 2008 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 mB5341w1027558 for ; Thu, 4 Dec 2008 21:04:03 -0600 X-ASG-Debug-ID: 1228446240-354803830000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from one.firstfloor.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 426AD16AF36C for ; Thu, 4 Dec 2008 19:04:00 -0800 (PST) Received: from one.firstfloor.org (one.firstfloor.org [213.235.205.2]) by cuda.sgi.com with ESMTP id SXdtZocLjdfsoDUv for ; Thu, 04 Dec 2008 19:04:00 -0800 (PST) Received: by one.firstfloor.org (Postfix, from userid 503) id 4604B1B90084; Fri, 5 Dec 2008 04:09:39 +0100 (CET) Date: Fri, 5 Dec 2008 04:09:38 +0100 From: Andi Kleen To: Mikulas Patocka Cc: Andi Kleen , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Andi Kleen , Milan Broz X-ASG-Orig-Subj: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Subject: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Message-ID: <20081205030938.GA6703@one.firstfloor.org> References: <20081204145810.GR6703@one.firstfloor.org> <20081204174838.GS6703@one.firstfloor.org> <20081204221551.GV6703@one.firstfloor.org> <20081205004849.GX6703@one.firstfloor.org> <20081205013739.GZ6703@one.firstfloor.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.1i X-Barracuda-Connect: one.firstfloor.org[213.235.205.2] X-Barracuda-Start-Time: 1228446241 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0004 1.0000 -2.0184 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.11954 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- > The only one offender is "md". I'm not sure. It wouldn't surprise me if it can happen with other setups too. Perhaps Chris knows more. > It is less overhead to change "md" to play > nice and be reliable than to double-submit requests in all the places that > needs write ordering. They do that already anyways. > > > > * the filesystems developed hacks to work around this issue, the hacks > > > involve not submitting more requests after the barrier request, > > > > I suspect the reason the file systems did it this way is that > > it was a much simpler change than to rewrite the transaction > > manager for this. > > It could be initial reason. But this unreliability also disallows any > improvement in filesystems. No one can write asynchronous transaction > manager because of that evil EOPNOTSUPP. Doesn't seem right. It would be a simple state machine to handle it fully asynchronous. Alternatively you could always use empty barriers. But we can worry about that when some in tree file system actually tries to do that. -Andi -- ak@linux.intel.com From mpatocka@redhat.com Thu Dec 4 21:21:16 2008 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 mB53LFgf029021 for ; Thu, 4 Dec 2008 21:21:16 -0600 X-ASG-Debug-ID: 1228447274-7843005f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id ACE5316B0ACB for ; Thu, 4 Dec 2008 19:21:14 -0800 (PST) Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by cuda.sgi.com with ESMTP id qVdNJpfu8WGFkDV7 for ; Thu, 04 Dec 2008 19:21:14 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id mB52LkxI001717; Thu, 4 Dec 2008 21:21:46 -0500 Received: from hs20-bc2-1.build.redhat.com (hs20-bc2-1.build.redhat.com [10.10.28.34]) by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id mB52Lijk008044; Thu, 4 Dec 2008 21:21:44 -0500 Received: from hs20-bc2-1.build.redhat.com (localhost.localdomain [127.0.0.1]) by hs20-bc2-1.build.redhat.com (8.13.1/8.13.1) with ESMTP id mB52LiKU000578; Thu, 4 Dec 2008 21:21:44 -0500 Received: from localhost (mpatocka@localhost) by hs20-bc2-1.build.redhat.com (8.13.1/8.13.1/Submit) with ESMTP id mB52LiDD000572; Thu, 4 Dec 2008 21:21:44 -0500 X-Authentication-Warning: hs20-bc2-1.build.redhat.com: mpatocka owned process doing -bs Date: Thu, 4 Dec 2008 21:21:44 -0500 (EST) From: Mikulas Patocka X-X-Sender: mpatocka@hs20-bc2-1.build.redhat.com To: Andi Kleen cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Andi Kleen , Milan Broz X-ASG-Orig-Subj: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Subject: Re: Device loses barrier support (was: Fixed patch for simple barriers.) In-Reply-To: <20081205013739.GZ6703@one.firstfloor.org> Message-ID: References: <20081204142015.GQ6703@one.firstfloor.org> <20081204145810.GR6703@one.firstfloor.org> <20081204174838.GS6703@one.firstfloor.org> <20081204221551.GV6703@one.firstfloor.org> <20081205004849.GX6703@one.firstfloor.org> <20081205013739.GZ6703@one.firstfloor.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 X-Barracuda-Connect: mx1.redhat.com[66.187.233.31] X-Barracuda-Start-Time: 1228447274 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Fri, 5 Dec 2008, Andi Kleen wrote: > > * barrier support in md-raid1 deviates from the specification at > > Documentation/block/barrier.txt. The specification says that requests > > submitted after the barrier request hit the media after the barrier > > request hits the media. The reality is that the barrier request can be > > randomly aborted and the requests submitted after it hit the media before > > the barrier request. > > Yes the spec should be probably updated. > > But also see Linus' rant from yesterday about code vs documentation. > When in doubt the code wins. The only one offender is "md". It is less overhead to change "md" to play nice and be reliable than to double-submit requests in all the places that needs write ordering. > > * the filesystems developed hacks to work around this issue, the hacks > > involve not submitting more requests after the barrier request, > > I suspect the reason the file systems did it this way is that > it was a much simpler change than to rewrite the transaction > manager for this. It could be initial reason. But this unreliability also disallows any improvement in filesystems. No one can write asynchronous transaction manager because of that evil EOPNOTSUPP. > > synchronously waiting for the barrier request and eventually retrying it. > > These hacks suppress any performance advantage barriers could bring. > > > > * you submit a patch that makes barriers even more often deviate from the > > specification and you argue that the patch is correct because filesystems > > handle this deviation. > > Sorry what counts is the code behaviour, not the specification. Better interface is that one that has less maintenance overhead. And I don't see requiring the programmers of all IO code to double-submit requests as less maintenance overhead. > -Andi Mikulas --- If you want to make it easier to infer functionality from the code, apply this patch :) --- block/blk-core.c | 8 ++++++++ 1 file changed, 8 insertions(+) Index: linux-2.6.28-rc5-devel/block/blk-core.c =================================================================== --- linux-2.6.28-rc5-devel.orig/block/blk-core.c 2008-12-05 02:54:25.000000000 +0100 +++ linux-2.6.28-rc5-devel/block/blk-core.c 2008-12-05 03:14:23.000000000 +0100 @@ -28,6 +28,7 @@ #include #include #include +#include #include "blk.h" @@ -1528,6 +1529,13 @@ void submit_bio(int rw, struct bio *bio) bio->bi_rw |= rw; + /* At least, make the true nature of write barriers obvious. */ + + if (bio_barrier(bio) && !(random32() % 42)) { + bio_endio(bio, -EOPNOTSUPP); + return; + } + /* * If it's a regular read/write or a barrier with data attached, * go through the normal accounting stuff before submission. From lachlan@sgi.com Thu Dec 4 21:22:36 2008 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 (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB53Mapc029093 for ; Thu, 4 Dec 2008 21:22:36 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id A5B488F8059; Thu, 4 Dec 2008 19:22:31 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA11753; Fri, 5 Dec 2008 14:22:29 +1100 Message-ID: <49389E8F.5000301@sgi.com> Date: Fri, 05 Dec 2008 14:22:55 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss Subject: Re: [PATCH] Use the incore inode size in xfs_file_readdir() References: <49377FBC.5020501@sgi.com> <20081204070827.GB29531@infradead.org> In-Reply-To: <20081204070827.GB29531@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Christoph Hellwig wrote: > On Thu, Dec 04, 2008 at 05:59:08PM +1100, Lachlan McIlroy wrote: >> We should be using the incore inode size here not the linux inode >> size. The incore inode size is always up to date for directories >> whereas the linux inode size is not updated for directories. >> >> We've hit assertions in xfs_bmap() and traced it back to the linux >> inode size being zero here but the incore size being correct. > > Heh. Looks good, but you can still call ->readdir with a 0 inode size, > so you might want to check for that (actualyl I think other pathes > are goign to take care of it, but..) What if we remove bufsize and pass PAGE_SIZE into xfs_readdir()? No need to worry about a 0 inode size. From sandeen@sandeen.net Thu Dec 4 21:27:39 2008 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 mB53Rcko029414 for ; Thu, 4 Dec 2008 21:27:39 -0600 X-ASG-Debug-ID: 1228447657-029700310000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 32CA61665BEE for ; Thu, 4 Dec 2008 19:27:37 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id ZiZoO8D8UvK28pvR for ; Thu, 04 Dec 2008 19:27: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 sandeen.net (Postfix) with ESMTP id 29322AC6272; Thu, 4 Dec 2008 21:26:58 -0600 (CST) Message-ID: <49389F81.1090306@sandeen.net> Date: Thu, 04 Dec 2008 21:26:57 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Mikulas Patocka CC: Andi Kleen , Milan Broz , Andi Kleen , linux-kernel@vger.kernel.org, Alasdair G Kergon , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Device loses barrier support Subject: Re: Device loses barrier support References: <20081204100050.GN6703@one.firstfloor.org> <20081204142015.GQ6703@one.firstfloor.org> <20081204145810.GR6703@one.firstfloor.org> <20081204174838.GS6703@one.firstfloor.org> In-Reply-To: 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: 1228447658 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.11956 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Mikulas Patocka wrote: > Another thing: > > I'm wondering, where in fsync() does Linux wait for hardware disk cache to > be flushed? Isn't there a bug that fsync() will return before the cache is > flushed? I couldn't really find it. The last thing do_fsync calls is > filemap_fdatawait and it doesn't do cache flush (blkdev_issue_flush). ext4, reiserfs, and xfs all call blkdev_issue_flush() in their ->fsync file operations (or down that path). -Eric From xaiki@oss.sgi.com Thu Dec 4 21:28:19 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB53SJit029551 for ; Thu, 4 Dec 2008 21:28:19 -0600 Received: (from xaiki@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mB53SITH029517; Thu, 4 Dec 2008 21:28:18 -0600 Date: Thu, 4 Dec 2008 21:28:18 -0600 Message-Id: <200812050328.mB53SITH029517@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.28-rc3-1107-g797eaed X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: c6422617a1c0d7787e515748b01f594fe43aea98 X-Git-Newrev: 797eaed40e1df4a3b9ece6894a71ce2b568bca38 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated 797eaed [XFS] Remove unnecessary assertion a5b429d [XFS] Remove unused variable in ktrace_free() from c6422617a1c0d7787e515748b01f594fe43aea98 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 797eaed40e1df4a3b9ece6894a71ce2b568bca38 Author: Lachlan McIlroy Date: Fri Dec 5 14:15:49 2008 +1100 [XFS] Remove unnecessary assertion Hit this assert because an inode was tagged with XFS_ICI_RECLAIM_TAG but not XFS_IRECLAIMABLE|XFS_IRECLAIM. This is because xfs_iget_cache_hit() first clears XFS_IRECLAIMABLE and then calls __xfs_inode_clear_reclaim_tag() while only holding the pag_ici_lock in read mode so we can race with xfs_reclaim_inodes_ag(). Looks like xfs_reclaim_inodes_ag() will do the right thing anyway so just remove the assert. Thanks to Christoph for pointing out where the problem was. Signed-off-by: Lachlan McIlroy Reviewed-by: Christoph Hellwig commit a5b429d41fede3a90deb532f5c2318393ed3a17b Author: Lachlan McIlroy Date: Fri Dec 5 13:31:51 2008 +1100 [XFS] Remove unused variable in ktrace_free() entries_size is probably left over from when we used to pass the size to kmem_free(). Signed-off-by: Lachlan McIlroy Reviewed-by: Christoph Hellwig Reviewed-by: Eric Sandeen ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_sync.c | 2 -- fs/xfs/support/ktrace.c | 9 ++------- 2 files changed, 2 insertions(+), 9 deletions(-) hooks/post-receive -- XFS development tree From xaiki@oss.sgi.com Thu Dec 4 21:28:21 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB53SLO3029595 for ; Thu, 4 Dec 2008 21:28:21 -0600 Received: (from xaiki@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mB53SJ8R029554; Thu, 4 Dec 2008 21:28:19 -0600 Date: Thu, 4 Dec 2008 21:28:19 -0600 Message-Id: <200812050328.mB53SJ8R029554@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, xfs-dev, updated. v2.6.28-rc3-204-g82bc38b X-Git-Refname: refs/heads/xfs-dev X-Git-Reftype: branch X-Git-Oldrev: 626c102444e329abaf1be850b7baec03af945eeb X-Git-Newrev: 82bc38b6cda6effeeb1dc55b54f3b1163660f91a This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, xfs-dev has been updated 82bc38b [XFS] Fix bug in xlogitm idbg command from 626c102444e329abaf1be850b7baec03af945eeb (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 82bc38b6cda6effeeb1dc55b54f3b1163660f91a Author: Lachlan McIlroy Date: Fri Dec 5 14:28:13 2008 +1100 [XFS] Fix bug in xlogitm idbg command Print out the correct field for the back pointer in the xlogitm idbg command. Signed-off-by: Lachlan McIlroy Reviewed-by: Christoph Hellwig ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfsidbg.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) hooks/post-receive -- XFS development tree From xaiki@sgi.com Thu Dec 4 21:29:50 2008 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 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 mB53ToOe029815 for ; Thu, 4 Dec 2008 21:29:50 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id 73CCF3040A6; Thu, 4 Dec 2008 19:29:45 -0800 (PST) Received: from itchy.melbourne.sgi.com (itchy.melbourne.sgi.com [134.14.55.96]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA11861; Fri, 5 Dec 2008 14:29:39 +1100 From: Niv Sardi To: Christoph Hellwig Cc: Timothy Shimmin , xfs@oss.sgi.com Subject: Re: New XFS git tree on oss.sgi.com References: <492BA7AD.5080007@sgi.com> <20081125081644.GA20644@infradead.org> <492C9FB9.3090204@sgi.com> <20081126020009.GF6291@disturbed> <492CC287.3070709@sgi.com> <20081126040840.GG6291@disturbed> <492CE189.2000304@sgi.com> <20081204132645.GA32664@infradead.org> Date: Fri, 05 Dec 2008 14:29:38 +1100 In-Reply-To: <20081204132645.GA32664@infradead.org> (Christoph Hellwig's message of "Thu, 4 Dec 2008 08:26:45 -0500") Message-ID: User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/22.2 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Christoph Hellwig writes: > On Wed, Nov 26, 2008 at 04:41:29PM +1100, Timothy Shimmin wrote: > >> I was just thinking that if an external developer is working on a clone of >> say the master branch and they have a fix, that they might post a patch >> and say where sgi can pull from (the developer's tree) to receive the patch(es) >> as an easier way to bring stuff in. > > So do you want git trees or not now? I spent quite some time to set up > a tree for my last set of patches, but what got in was slightly > different, so when I pulles I got a merge and duplicates in my tree and > had to git-reset to a point before my patches. If you do apply from > the list anyway I can avoid that overhead. I believe that if you don't work in git, and prefer to send patches (as long as git-am likes them) it's not harder for us to merge things (We can't pull because we want to add a signed-off-by anyway). If you do use git, publishing your tree makes it a bit easier to track your work, and our delta. but that is in no way mandatory. Cheers, -- Niv Sardi From sandeen@sandeen.net Thu Dec 4 21:49:42 2008 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 mB53nfuw031259 for ; Thu, 4 Dec 2008 21:49:42 -0600 X-ASG-Debug-ID: 1228448961-7842015c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 323C316B0AC3 for ; Thu, 4 Dec 2008 19:49:21 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 7FL2CXlo6HIx08Q6 for ; Thu, 04 Dec 2008 19:49:21 -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 sandeen.net (Postfix) with ESMTP id 61A70AC6272 for ; Thu, 4 Dec 2008 21:49:21 -0600 (CST) Message-ID: <4938A4C1.9010401@sandeen.net> Date: Thu, 04 Dec 2008 21:49:21 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH, RFC] - set b_error from bio error in xfs_buf_bio_end_io Subject: [PATCH, RFC] - set b_error from bio error in xfs_buf_bio_end_io 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: 1228448962 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.11958 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Tim mentioned something about the code in xfs_buf_iodone_work() which detects barrier failures post-mount, as added in commit 0bfefc46dc028df60120acdb92062169c9328769, [XFS] Barriers need to be dynamically checked and switched off if ((bp->b_error == EOPNOTSUPP) && (bp->b_flags & (XBF_ORDERED|XBF_ASYNC)) == (XBF_ORDERED|XBF_ASYNC)) { XB_TRACE(bp, "ordered_retry", bp->b_iodone); bp->b_flags &= ~XBF_ORDERED; bp->b_flags |= _XFS_BARRIER_FAILED; ... but it seems that nothing ever sets EOPNOTSUPP on b_error, so this path would never be hit. I think that we need to do something like below, totally untested, to ensure that bio errors get set on b_error, if we're looking for them by name, no? (I'm not sure if we still need the BIO_UPTODATE test, or if we can just look at the error we're given and be done?) Does this seem about right? Thanks, -Eric Index: linux-2.6/fs/xfs/linux-2.6/xfs_buf.c =================================================================== --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_buf.c +++ linux-2.6/fs/xfs/linux-2.6/xfs_buf.c @@ -1114,8 +1114,10 @@ xfs_buf_bio_end_io( unsigned int blocksize = bp->b_target->bt_bsize; struct bio_vec *bvec = bio->bi_io_vec + bio->bi_vcnt - 1; - if (!test_bit(BIO_UPTODATE, &bio->bi_flags)) - bp->b_error = EIO; + if (error) + bp->b_error = XFS_ERROR(-error); + else if (!test_bit(BIO_UPTODATE, &bio->bi_flags)) + bp->b_error = XFS_ERROR(EIO); do { struct page *page = bvec->bv_page; From lachlan@sgi.com Thu Dec 4 21:52:25 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00,SUBJ_FRIEND autolearn=no 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 mB53qP0G031481 for ; Thu, 4 Dec 2008 21:52:25 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id 990F9304062; Thu, 4 Dec 2008 19:52:23 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA12360; Fri, 5 Dec 2008 14:52:21 +1100 Message-ID: <4938A58F.6090109@sgi.com> Date: Fri, 05 Dec 2008 14:52:47 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss Subject: Re: [PATCH] Remove XFS_BUF_SHUT() and friends References: <49378654.2050707@sgi.com> <20081204132746.GA27400@infradead.org> In-Reply-To: <20081204132746.GA27400@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Christoph Hellwig wrote: > On Thu, Dec 04, 2008 at 06:27:16PM +1100, Lachlan McIlroy wrote: >> Code does nothing so remove it. > > Looks good to me. Does anyone remember why this flag was set on IRIX? During a forced shutdown we would go through all incore buffers and mark them B_STALE/B_ERROR/B_SHUT and then call biodone() on them. The code in xfs_buf_iodone_callbacks() that checks for B_SHUT is to avoid a double biodone() I think. We don't have the code in the Linux port that scans through all the incore buffers on a forced shutdown but we still have one case in xfs_iflush_cluster(). In any case it's not doing anything. From sandeen@sandeen.net Thu Dec 4 21:59:10 2008 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 mB53xAxd031855 for ; Thu, 4 Dec 2008 21:59:10 -0600 X-ASG-Debug-ID: 1228449549-7c16015c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2849B16B0F0F for ; Thu, 4 Dec 2008 19:59:09 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id hm7MI54X8BItTJHS for ; Thu, 04 Dec 2008 19:59:09 -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 sandeen.net (Postfix) with ESMTP id 73F6DAC6272 for ; Thu, 4 Dec 2008 21:59:09 -0600 (CST) Message-ID: <4938A70D.8090502@sandeen.net> Date: Thu, 04 Dec 2008 21:59:09 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: Re: [PATCH, RFC] - set b_error from bio error in xfs_buf_bio_end_io Subject: Re: [PATCH, RFC] - set b_error from bio error in xfs_buf_bio_end_io References: <4938A4C1.9010401@sandeen.net> In-Reply-To: <4938A4C1.9010401@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: 1228449550 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.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=COMMA_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.11958 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' Eric Sandeen wrote: > Tim mentioned something about the code in xfs_buf_iodone_work() > which detects barrier failures post-mount, as added in commit > 0bfefc46dc028df60120acdb92062169c9328769, > [XFS] Barriers need to be dynamically checked and switched off > > if ((bp->b_error == EOPNOTSUPP) && > (bp->b_flags & (XBF_ORDERED|XBF_ASYNC)) == (XBF_ORDERED|XBF_ASYNC)) { > XB_TRACE(bp, "ordered_retry", bp->b_iodone); > bp->b_flags &= ~XBF_ORDERED; > bp->b_flags |= _XFS_BARRIER_FAILED; > ... > > but it seems that nothing ever sets EOPNOTSUPP on b_error, so > this path would never be hit. > > I think that we need to do something like below, totally untested, > to ensure that bio errors get set on b_error, if we're looking > for them by name, no? oh, heh, Tim had mentioned that Lachlan suggested this same thing on irc yesterday, but somehow I had forgotten or totally missed that... didn't mean to usurp Lachlan :) -Eric From lachlan@sgi.com Thu Dec 4 22:06:05 2008 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 (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB5465L0032217 for ; Thu, 4 Dec 2008 22:06:05 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id D3B018F804B; Thu, 4 Dec 2008 20:06:00 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id PAA12634; Fri, 5 Dec 2008 15:05:58 +1100 Message-ID: <4938A8C1.7030103@sgi.com> Date: Fri, 05 Dec 2008 15:06:25 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: Eric Sandeen CC: xfs-oss Subject: Re: [PATCH, RFC] - set b_error from bio error in xfs_buf_bio_end_io References: <4938A4C1.9010401@sandeen.net> In-Reply-To: <4938A4C1.9010401@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Eric Sandeen wrote: > Tim mentioned something about the code in xfs_buf_iodone_work() > which detects barrier failures post-mount, as added in commit > 0bfefc46dc028df60120acdb92062169c9328769, > [XFS] Barriers need to be dynamically checked and switched off > > if ((bp->b_error == EOPNOTSUPP) && > (bp->b_flags & (XBF_ORDERED|XBF_ASYNC)) == (XBF_ORDERED|XBF_ASYNC)) { > XB_TRACE(bp, "ordered_retry", bp->b_iodone); > bp->b_flags &= ~XBF_ORDERED; > bp->b_flags |= _XFS_BARRIER_FAILED; > ... > > but it seems that nothing ever sets EOPNOTSUPP on b_error, so > this path would never be hit. > > I think that we need to do something like below, totally untested, > to ensure that bio errors get set on b_error, if we're looking > for them by name, no? > > (I'm not sure if we still need the BIO_UPTODATE test, or if > we can just look at the error we're given and be done?) > > Does this seem about right? > > Thanks, > -Eric > > Index: linux-2.6/fs/xfs/linux-2.6/xfs_buf.c > =================================================================== > --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_buf.c > +++ linux-2.6/fs/xfs/linux-2.6/xfs_buf.c > @@ -1114,8 +1114,10 @@ xfs_buf_bio_end_io( > unsigned int blocksize = bp->b_target->bt_bsize; > struct bio_vec *bvec = bio->bi_io_vec + bio->bi_vcnt - 1; > > - if (!test_bit(BIO_UPTODATE, &bio->bi_flags)) > - bp->b_error = EIO; > + if (error) > + bp->b_error = XFS_ERROR(-error); > + else if (!test_bit(BIO_UPTODATE, &bio->bi_flags)) > + bp->b_error = XFS_ERROR(EIO); I would suggest this: @@ -1114,8 +1140,7 @@ xfs_buf_bio_end_io( unsigned int blocksize = bp->b_target->bt_bsize; struct bio_vec *bvec = bio->bi_io_vec + bio->bi_vcnt - 1; - if (!test_bit(BIO_UPTODATE, &bio->bi_flags)) - bp->b_error = EIO; + xfs_buf_ioerror(bp, -error); do { struct page *page = bvec->bv_page; The BIO_UPTODATE checks have already been done before calling this function and error has been set appropriately so we can just use it. > > do { > struct page *page = bvec->bv_page; > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sandeen@sandeen.net Thu Dec 4 22:15:00 2008 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 mB54F0R3000351 for ; Thu, 4 Dec 2008 22:15:00 -0600 X-ASG-Debug-ID: 1228450498-7843023c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4491616B160B for ; Thu, 4 Dec 2008 20:14:58 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id ORBSDPQeoyqWSEor for ; Thu, 04 Dec 2008 20:14:58 -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 sandeen.net (Postfix) with ESMTP id 68BE4AC6272; Thu, 4 Dec 2008 22:09:58 -0600 (CST) Message-ID: <4938A995.6040609@sandeen.net> Date: Thu, 04 Dec 2008 22:09:57 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: lachlan@sgi.com CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH, RFC] - set b_error from bio error in xfs_buf_bio_end_io Subject: Re: [PATCH, RFC] - set b_error from bio error in xfs_buf_bio_end_io References: <4938A4C1.9010401@sandeen.net> <4938A8C1.7030103@sgi.com> In-Reply-To: <4938A8C1.7030103@sgi.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: 1228450499 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.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=COMMA_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.11958 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' Lachlan McIlroy wrote: > I would suggest this: > > @@ -1114,8 +1140,7 @@ xfs_buf_bio_end_io( > unsigned int blocksize = bp->b_target->bt_bsize; > struct bio_vec *bvec = bio->bi_io_vec + bio->bi_vcnt - 1; > > - if (!test_bit(BIO_UPTODATE, &bio->bi_flags)) > - bp->b_error = EIO; > + xfs_buf_ioerror(bp, -error); oh, sure. I forgot we had the wrapper to set the error ... :) > The BIO_UPTODATE checks have already been done before calling this function > and error has been set appropriately so we can just use it. ah so it is. yeah, makes perfect sense. -Eric From xaiki@oss.sgi.com Thu Dec 4 22:33:22 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, J_CHICKENPOX_24 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB54XMGC008753 for ; Thu, 4 Dec 2008 22:33:22 -0600 Received: (from xaiki@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mB54XKcC008199; Thu, 4 Dec 2008 22:33:20 -0600 Date: Thu, 4 Dec 2008 22:33:20 -0600 Message-Id: <200812050433.mB54XKcC008199@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, mainline, updated. v2.6.28-rc3-1309-gfeaf384 X-Git-Refname: refs/heads/mainline X-Git-Reftype: branch X-Git-Oldrev: 061e41fdb5047b1fb161e89664057835935ca1d2 X-Git-Newrev: feaf3848a813a106f163013af6fcf6c4bfec92d9 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, mainline has been updated feaf384 Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block a771132 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2433c41 Merge branch 'for-2.6.28' of git://linux-nfs.org/~bfields/linux cd92a17 iTCO_wdt: fix typo when setting TCO_EN bit dafdb61 powerpc/83xx: Fix MCU support merge issue in mpc8349emitx.dts 0e435ac block: fix setting of max_segment_size and seg_boundary mask 53a0880 block: internal dequeue shouldn't start timer bf91db1 block: set disk->node_id before it's being used 53cc0b2 When block layer fails to map iov, it calls bio_unmap_user to undo 2434bbb powerpc: Fix dma_map_sg() cache flushing on non coherent platforms f6f7b52 Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog 51eaaa6 Merge branch 'linux-next' of git://git.infradead.org/ubifs-2.6 b7d6266 Merge branch 'kvm-updates/2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm e6d9f0f Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 e1825e7 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 5d279dc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k e2e2983 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 9a689bc Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 1122b19 MN10300: Fix application of kernel module relocations 026bde1 sgi-gru: call fs_initcall() if statically linked 7a0d794 powerpc: Use physical cpu id when setting the processor affinity 9ff473b vmscan: evict streaming IO first f1d0b06 bdi: register sysfs bdi device only once per queue 1b79cd0 nfsd: fix vm overcommit crash fix #2 ae4e143 m68k: Update defconfigs for 2.6.28-rc7 9596401 alim15x3: fix sparse warning a366380 ide: remove dead code from drive_is_ready() 6b7d8fc ide: fix build for DEBUG_PM e9eb838 ide: respect current DMA setting during resume c7b997b ide: add SAMSUNG SP0822N with firmware WA100-10 to ivb_list[] 6636487 amd74xx: workaround unreliable AltStatus register for nVidia controllers f9e3326 ide: fix the ide_release_lock imbalance 89c223a macfb: Do not overflow fb_fix_screeninfo.id dc5c49b [SCSI] stex: switch to block timeout 9728c08 [SCSI] make scsi_eh_try_stu use block timeout ee1ab9e [SCSI] megaraid_sas: switch to block timeout 97b5648 [SCSI] ibmvscsi: switch to block timeout 8fbd64e [SCSI] aacraid: switch to block timeout f7a65e9 [SCSI] zfcp: prevent double decrement on host_busy while being busy fca55b6 [SCSI] zfcp: fix deadlock between wq triggered port scan and ERP 0ac55aa [SCSI] zfcp: eliminate race between validation and locking 26871c9 [SCSI] zfcp: verify for correct rport state before scanning for SCSI devs 633528c [SCSI] zfcp: returning an ERR_PTR where a NULL value is expected 1c1cba1 [SCSI] zfcp: Fix opening of wka ports bce0261 [SCSI] zfcp: fix remote port status check 290172e [WATCHDOG] hpwdt: Fix kdump when using hpwdt b270ee8 sparc64: Fix offset calculation in compute_size() 44ae98b MAINTAINERS: add netdev to ATM aac725c ATM: horizon, fix hrz_probe fail path e635813 pppol2tp: Add missing sock_put() in pppol2tp_release() 5f23b73 net: Fix soft lockups/OOM issues w/ unix garbage collector efbbced macvlan: don't broadcast PAUSE frames to macvlan devices 7e5ab54 Phonet: fix oops in phonet_address_del() on non-Phonet device 3ec1925 netfilter: ctnetlink: fix GFP_KERNEL allocation under spinlock 6c47535 KVM: MMU: avoid creation of unreachable pages in the shadow bd51126 sungem: Fix PCS_MIICTRL register write in gem_init_phy(). 8f480c0 net: make skb_truesize_bug() call WARN() 1d71da1 net: hp-plus uses eip_poll d7713cc Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 020cf6b net/wireless/reg.c: fix bad WARN_ON in if statement 02969b3 ath5k: disable beacon filter when station is not associated 33ab625 ath5k: fix Security issue in DebugFS part of ath5k b4b6cda ath9k: correct expected max RX buffer size ca0c7e5 ath9k: Fix SW-IOMMU bounce buffer starvation 3dd3b79 mac80211 : Fix setting ad-hoc mode and non-ibss channel e91af0a iwlagn: fix DMA sync c30f8a6 KVM: ppc: stop leaking host memory on VM exit 11c6dd2 phylib: Add Vitesse VSC8221 SGMII PHY 244f46a rose: zero length frame filtering in af_rose.c 631339f bridge: netfilter: fix update_pmtu crash with GRE f79fca5 netfilter: xtables: add missing const qualifier to xt_tgchk_param b54ad40 netfilter: ctnetlink: fix conntrack creation race a8d82d9 NLM: client-side nlm_lookup_host() should avoid matching on srcaddr e4625eb nfsd: use of unitialized list head on error exit in nfs4recover.c 2da2c21 Add a reference to sunrpc in svc_addsock 2c5e761 nfsd: clean up grace period on early exit 5147d14 drivers/net/chelsio/sge.c: remove redundant argument comments ece4af1 driver/net/*: remove redundant argument comments 0c0f40b KVM: MMU: fix sync of ptes addressed at owner pagetable ce50b91 KVM: ia64: Fix: Use correct calling convention for PAL_VPS_RESUME_HANDLER 547567c KVM: ia64: Fix incorrect kbuild CFLAGS override bd2b3ca KVM: VMX: Fix interrupt loss during race with NMI 3eb77d5 KVM: s390: Fix problem state handling in guest sigp handler 7e56b5d net: Fix memory leak in the proto_register function 33cf71c tcp: Do not use TSO/GSO when there is urgent data 38ae07e net/hp-plus: fix link errors 208fbec axnet_cs / pcnet_cs: moving PCMCIA_DEVICE_PROD_ID for Netgear FA411 3477d20 UBIFS: pre-allocate bulk-read buffer 6c0c42c UBIFS: do not allocate too much 39ce81c UBIFS: do not print scary memory allocation warnings be1ffce rtc: rtc-starfire fixes 0602641 [WATCHDOG] hpwdt: set the mapped BIOS address space as executable 28d41f5 [WATCHDOG] iTCO_wdt: add PCI ID's for ICH9 & ICH10 chipsets c6904dd [WATCHDOG] iTCO_wdt : correct status clearing 7cd5b08 [WATCHDOG] iTCO_wdt : problem with rebooting on new ICH9 based motherboards 21098c6 [SCSI] fc_transport: fix old bug on bitflag definitions f80e919 [WATCHDOG] fix mtx1_wdt compilation failure 6436cbc phy: fix phy_id detection also for broken hardware. 75e07fc pci: Added quirk to disable msi for MCP55 NIC on Asus P5N32-SLI Premium 2a3a59e [SCSI] Fix hang in starved list processing 7e2d9bf UBIFS: allow for gaps when dirtying the LPT e84461a UBIFS: fix compilation warnings e2966cb MAINTAINERS: change UBI/UBIFS git tree URLs 0ecb952 UBIFS: endian handling fixes and annotations 069782a UBIFS: remove printk from 061e41fdb5047b1fb161e89664057835935ca1d2 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: MAINTAINERS | 5 +- arch/ia64/kvm/Makefile | 2 +- arch/ia64/kvm/optvfault.S | 11 ++- arch/m68k/configs/amiga_defconfig | 126 ++++++++++++++----------- arch/m68k/configs/apollo_defconfig | 115 +++++++++++++--------- arch/m68k/configs/atari_defconfig | 130 ++++++++++++++----------- arch/m68k/configs/bvme6000_defconfig | 112 ++++++++++++--------- arch/m68k/configs/hp300_defconfig | 115 +++++++++++++--------- arch/m68k/configs/mac_defconfig | 125 ++++++++++++++----------- arch/m68k/configs/multi_defconfig | 129 ++++++++++++++----------- arch/m68k/configs/mvme147_defconfig | 112 ++++++++++++--------- arch/m68k/configs/mvme16x_defconfig | 112 ++++++++++++--------- arch/m68k/configs/q40_defconfig | 125 ++++++++++++++---------- arch/m68k/configs/sun3_defconfig | 124 ++++++++++++++---------- arch/m68k/configs/sun3x_defconfig | 115 +++++++++++++--------- arch/mn10300/kernel/module.c | 35 ++------ arch/powerpc/boot/dts/mpc8349emitx.dts | 16 ++-- arch/powerpc/include/asm/kvm_ppc.h | 2 + arch/powerpc/kernel/dma.c | 1 + arch/powerpc/kvm/44x_tlb.c | 8 ++ arch/powerpc/kvm/powerpc.c | 1 + arch/powerpc/sysdev/mpic.c | 2 +- arch/s390/kvm/sigp.c | 5 + arch/sparc64/lib/user_fixup.c | 2 +- arch/x86/kvm/mmu.c | 2 +- arch/x86/kvm/paging_tmpl.h | 1 + arch/x86/kvm/vmx.c | 4 +- block/blk-barrier.c | 4 +- block/blk-core.c | 26 +++++- block/blk-map.c | 2 +- block/blk-settings.c | 4 + block/elevator.c | 7 -- block/genhd.c | 2 +- drivers/atm/horizon.c | 2 +- drivers/ide/alim15x3.c | 2 +- drivers/ide/amd74xx.c | 11 ++- drivers/ide/ide-io.c | 30 +++--- drivers/ide/ide-iops.c | 9 +- drivers/ide/ide-probe.c | 3 +- drivers/md/dm-table.c | 2 +- drivers/misc/sgi-gru/grufile.c | 2 +- drivers/net/Makefile | 2 +- drivers/net/chelsio/sge.c | 4 - drivers/net/e1000e/netdev.c | 1 - drivers/net/hp-plus.c | 2 +- drivers/net/igb/igb_main.c | 4 - drivers/net/ixgbe/ixgbe_main.c | 1 - drivers/net/macvlan.c | 3 + drivers/net/pcmcia/axnet_cs.c | 2 +- drivers/net/pcmcia/pcnet_cs.c | 1 - drivers/net/phy/phy_device.c | 13 ++- drivers/net/phy/vitesse.c | 64 +++++++++++-- drivers/net/pppol2tp.c | 1 + drivers/net/sis900.c | 1 - drivers/net/spider_net.c | 4 - drivers/net/sungem.c | 2 +- drivers/net/wireless/ath5k/base.c | 35 +++++++- drivers/net/wireless/ath5k/base.h | 1 + drivers/net/wireless/ath5k/debug.c | 10 +- drivers/net/wireless/ath9k/beacon.c | 10 +- drivers/net/wireless/ath9k/recv.c | 19 +++- drivers/net/wireless/iwlwifi/iwl-agn.c | 8 +- drivers/pci/quirks.c | 17 ++++ drivers/rtc/rtc-starfire.c | 66 +++---------- drivers/s390/scsi/zfcp_erp.c | 7 +- drivers/s390/scsi/zfcp_fc.c | 7 +- drivers/s390/scsi/zfcp_fsf.c | 20 +++- drivers/s390/scsi/zfcp_scsi.c | 2 +- drivers/scsi/aacraid/linit.c | 4 +- drivers/scsi/ibmvscsi/ibmvscsi.c | 2 +- drivers/scsi/megaraid/megaraid_sas.c | 3 +- drivers/scsi/scsi_error.c | 3 +- drivers/scsi/scsi_lib.c | 23 ++--- drivers/scsi/stex.c | 2 +- drivers/video/macfb.c | 74 +++++++-------- drivers/watchdog/hpwdt.c | 5 +- drivers/watchdog/iTCO_vendor_support.c | 31 +----- drivers/watchdog/iTCO_wdt.c | 164 ++++++++++++++++++++------------ drivers/watchdog/mtx-1_wdt.c | 4 + fs/lockd/host.c | 3 +- fs/lockd/svc.c | 1 + fs/nfsd/nfs4recover.c | 2 +- fs/nfsd/nfs4state.c | 1 + fs/ubifs/commit.c | 4 +- fs/ubifs/debug.c | 66 ++++++++----- fs/ubifs/dir.c | 5 +- fs/ubifs/file.c | 91 ++++++++++++------ fs/ubifs/journal.c | 8 +- fs/ubifs/key.h | 4 +- fs/ubifs/lpt_commit.c | 2 - fs/ubifs/orphan.c | 28 +++--- fs/ubifs/recovery.c | 17 ++-- fs/ubifs/replay.c | 2 +- fs/ubifs/sb.c | 9 +- fs/ubifs/super.c | 70 +++++++++++--- fs/ubifs/tnc.c | 12 ++- fs/ubifs/ubifs.h | 12 ++- include/linux/blkdev.h | 9 +- include/linux/ide.h | 8 ++ include/linux/netfilter/x_tables.h | 2 +- include/linux/security.h | 12 ++- include/net/af_unix.h | 1 + include/net/request_sock.h | 1 + include/net/timewait_sock.h | 1 + include/scsi/scsi_transport_fc.h | 2 +- mm/backing-dev.c | 3 + mm/swap.c | 7 +- net/bridge/br_netfilter.c | 13 +++ net/core/skbuff.c | 2 +- net/core/sock.c | 31 +++---- net/ipv4/tcp_output.c | 7 +- net/mac80211/wext.c | 8 ++ net/netfilter/nf_conntrack_core.c | 2 - net/netfilter/nf_conntrack_netlink.c | 7 +- net/phonet/pn_dev.c | 2 +- net/rose/af_rose.c | 10 ++ net/sunrpc/svcsock.c | 9 ++- net/unix/af_unix.c | 2 + net/unix/garbage.c | 13 ++- net/wireless/reg.c | 4 +- 120 files changed, 1638 insertions(+), 1120 deletions(-) hooks/post-receive -- XFS development tree From xaiki@oss.sgi.com Thu Dec 4 22:33:20 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, J_CHICKENPOX_15,J_CHICKENPOX_21,J_CHICKENPOX_22,J_CHICKENPOX_24, J_CHICKENPOX_32,J_CHICKENPOX_33,J_CHICKENPOX_39,J_CHICKENPOX_51, J_CHICKENPOX_52,J_CHICKENPOX_64,J_CHICKENPOX_65,J_CHICKENPOX_75 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB54XKLl008196 for ; Thu, 4 Dec 2008 22:33:20 -0600 Received: (from xaiki@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mB54X4h4001817; Thu, 4 Dec 2008 22:33:04 -0600 Date: Thu, 4 Dec 2008 22:33:04 -0600 Message-Id: <200812050433.mB54X4h4001817@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-linus, updated. v2.6.28-rc3-1309-gfeaf384 X-Git-Refname: refs/heads/for-linus X-Git-Reftype: branch X-Git-Oldrev: 220ca310a53200b4bfbc7c4c6e365eea284ec44f X-Git-Newrev: feaf3848a813a106f163013af6fcf6c4bfec92d9 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-linus has been updated feaf384 Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block a771132 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2433c41 Merge branch 'for-2.6.28' of git://linux-nfs.org/~bfields/linux cd92a17 iTCO_wdt: fix typo when setting TCO_EN bit dafdb61 powerpc/83xx: Fix MCU support merge issue in mpc8349emitx.dts 0e435ac block: fix setting of max_segment_size and seg_boundary mask 53a0880 block: internal dequeue shouldn't start timer bf91db1 block: set disk->node_id before it's being used 53cc0b2 When block layer fails to map iov, it calls bio_unmap_user to undo 2434bbb powerpc: Fix dma_map_sg() cache flushing on non coherent platforms f6f7b52 Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog 51eaaa6 Merge branch 'linux-next' of git://git.infradead.org/ubifs-2.6 b7d6266 Merge branch 'kvm-updates/2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm e6d9f0f Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 e1825e7 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 5d279dc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k e2e2983 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 9a689bc Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 1122b19 MN10300: Fix application of kernel module relocations 026bde1 sgi-gru: call fs_initcall() if statically linked 7a0d794 powerpc: Use physical cpu id when setting the processor affinity 9ff473b vmscan: evict streaming IO first f1d0b06 bdi: register sysfs bdi device only once per queue 1b79cd0 nfsd: fix vm overcommit crash fix #2 ae4e143 m68k: Update defconfigs for 2.6.28-rc7 9596401 alim15x3: fix sparse warning a366380 ide: remove dead code from drive_is_ready() 6b7d8fc ide: fix build for DEBUG_PM e9eb838 ide: respect current DMA setting during resume c7b997b ide: add SAMSUNG SP0822N with firmware WA100-10 to ivb_list[] 6636487 amd74xx: workaround unreliable AltStatus register for nVidia controllers f9e3326 ide: fix the ide_release_lock imbalance 89c223a macfb: Do not overflow fb_fix_screeninfo.id 061e41f Linux 2.6.28-rc7 0d81514 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 9c84ba4 drivers/gpu/drm/i915/i915_irq.c: fix warning 09a8126 i82875p_edac: fix module remove 307d114 i82875p_edac: fix overflow device resource setup bca404a fbdev: fix FB console blanking 0380155 ntfs: don't fool kernel-doc ced6909 kernel-doc: handle varargs cleanly 6ff2d39 lib/idr.c: fix rcu related race with idr_find 1d678f3 DMA-API.txt: fix description of pci_map_sg/dma_map_sg scatterlists handling 4280e31 frv: fix mmap2 error handling a800599 taint: add missing comment c4c6fa9 radeonfb: fix problem with color expansion & alignment b93c35f spi: fix spi_s3c24xx_gpio num_chipselect e39ea8a spi: fix spi_s3c24xx_gpio device handle lookup 4e253d2 spi: au1550_spi full duplex dma fix 6a010b5 spi: fix spi_imx probe oopsing 7ef9964 epoll: introduce resource usage limits b7d271d spi: mpc52xx_psc_spi chipselect bugfix aaacf4b spi: avoid spidev crash when device is removed dc8c214 spi documentation: use __initdata on struct dc924ef hwmon: applesmc: make applesmc load automatically on startup 36be47d parport_serial: fix array overflow dc19f9d memcg: memory hotplug fix for notifier callback b29acbd mm: vmalloc fix lazy unmapping cache aliasing 8650e51 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 d6b58f8 ocfs2: fix regression in ocfs2_read_blocks_sync() 07d9a39 ocfs2: fix return value set in init_dlmfs_fs() a2eee69 ocfs2: Small documentation update 07f9eeb ocfs2: fix wake_up in unlock_ast 66f502a ocfs2: initialize stack_user lvbptr 3b5da01 ocfs2: comments typo fix a693b0c em28xx: remove backward compat macro added on a previous fix 7ac0110 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev 484ab62 V4L/DVB (9748): em28xx: fix compile warning faa3bd2 V4L/DVB (9743): em28xx: fix oops audio 4bc2a9b Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband ac70a96 libata: blacklist Seagate drives which time out FLUSH_CACHE when used with NCQ 03f6084 [libata] pata_rb532_cf: fix signature of the xfer function 9f14786 [libata] pata_rb532_cf: fix and rename register definitions 1eedb4a ata_piix: add borked Tecra M4 to broken suspend list b0f43dc Merge branches 'ehca' and 'mlx4' into for-linus 42ab01c IB/mlx4: Fix MTT leakage in resize CQ 7ec4f46 IB/ehca: Fix problem with generated flush work completions 6b1f9d6 IB/ehca: Change misleading error message on memory hotplug 6a12141 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 dc5c49b [SCSI] stex: switch to block timeout 9728c08 [SCSI] make scsi_eh_try_stu use block timeout ee1ab9e [SCSI] megaraid_sas: switch to block timeout 97b5648 [SCSI] ibmvscsi: switch to block timeout 8fbd64e [SCSI] aacraid: switch to block timeout c07f62e Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid e540458 Add kref to fake tty used by USB console 296fa7f drivers/char/tty_io.c: Avoid panic when no console is configured. f7a65e9 [SCSI] zfcp: prevent double decrement on host_busy while being busy fca55b6 [SCSI] zfcp: fix deadlock between wq triggered port scan and ERP 0ac55aa [SCSI] zfcp: eliminate race between validation and locking 26871c9 [SCSI] zfcp: verify for correct rport state before scanning for SCSI devs 633528c [SCSI] zfcp: returning an ERR_PTR where a NULL value is expected 1c1cba1 [SCSI] zfcp: Fix opening of wka ports bce0261 [SCSI] zfcp: fix remote port status check b4dcfbe Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 ecf318c Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2a1dc50 vmscan: protect zone rotation stats by lru lock 33b07db Revert "of_platform_driver noise on sparce" 290172e [WATCHDOG] hpwdt: Fix kdump when using hpwdt b270ee8 sparc64: Fix offset calculation in compute_size() 44ae98b MAINTAINERS: add netdev to ATM 5bb4bd9 USB: serial: add more Onda device ids to option driver 621b239 USB: usb-storage: unusual_devs entry for Nikon D2H a6b7b03 USB: storage: unusual_devs entry for Mio C520-GPS 1f15a50 USB: fsl_usb2_udc: Report disconnect before unbinding 9ac36da USB: fsl_qe_udc: Report disconnect before unbinding 0a99e8a USB: fix SB600 USB subsystem hang bug 269f053 Revert "USB: improve ehci_watchdog's side effect in CPU power management" a1e0eb1 powerpc: Fix build for 32-bit SMP configs d9d060a Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 03cfdb8 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 4ec8f07 Merge master.kernel.org:/home/rmk/linux-2.6-arm 151903d drm/i915: Fix copy'n'pasteo that broke VT switch if flushing was non-empty. ab598b6 powerpc: Fix system calls on Cell entered with XER.SO=1 960cedb powerpc/cell: Fix GDB watchpoints, again cc353c3 powerpc/mpic: Don't reset affinity for secondary MPIC on boot d015fe9 powerpc/cell/axon-msi: Retry on missing interrupt 4a61866 powerpc: Fix boot freeze on machine with empty memory node 4b824de powerpc: Fix IRQ assignment for some PCIe devices a6e470f Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6 8e36a5d Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 9bd062d Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 72244c0 Merge branch 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 93b1005 Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 7bbc67f Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 66a45cc Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 8639dad Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 9297524 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6 8c7b905 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq 1838e39 Trivial Documentation/filesystems/ramfs-rootfs-initramfs.txt fix 42182c78 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 e2a2444 Merge branch 'linux-next' of git://git.infradead.org/~dedekind/ubi-2.6 8decec7 Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 499c59c MN10300: Tighten up the code using case ranges f1ba3bc Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 95c5e1f Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 b31a0fe Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 96b8936 remove __ARCH_WANT_COMPAT_SYS_PTRACE 16799c6 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 211f05a input: replace spin_lock_bh with spin_lock_irqsave in ml_ff_playback 02d0e67 hotplug_memory_notifier section annotation d3a307f sn_pci_controller_fixup() should be __init ffb78a2 get xenbus_driver ->probe() "recognized" by modpost df6b079 xen_play_dead() is __cpuinit 37af46e xen_setup_vcpu_info_placement() is not init on x86 23a14b9 kvm_setup_secondary_clock() is cpuinit 2236d25 enable_IR_x2apic() needs to be __init ad04d31 pci_setup() is init, not devinit 4bcc17d alpha: pcibios_resource_to_bus() is callable from normal code 56d74dd tricky one: hisax sections 8419641 cpuinit fixes in kernel/* b038514 uninorth-agp section mess 37d33d1 rapidio section noise f57628d section errors in smc911x/smc91x 5bac287 fix the section noise in sparc head.S 1c4567a m32r: section noise in head.S 8814b50 section misannotation in ibmtr_cs 43ced65 ixgbe section fixes 31421a6 rackmeter section fixes ced7172 gdth section fixes e669dae of_platform_driver noise on sparce 3003781 advansys fix on ISA-less configs 2fceab0 W1_MASTER_DS1WM should depend on HAVE_CLK d16d766 icside section warnings 596f103 fix talitos 6005e3e istallion section warnings 8c29890 sparc64 trivial section misannotations 409832f sparc32 cpuinit flase positives 4ea8fb9 powerpc set_huge_psize() false positive 7d6a8a1 false __cpuinit positives on alpha 3116848 meminit section warnings aac725c ATM: horizon, fix hrz_probe fail path af6d596 sched: prevent divide by zero error in cpu_avg_load_per_task, update 1583715 sched, cpusets: fix warning in kernel/cpuset.c 2642b11 ieee1394: sbp2: fix race condition in state change e47c1fe ieee1394: fix list corruption (reported at module removal) e635813 pppol2tp: Add missing sock_put() in pppol2tp_release() 9a5aa62 mlx4_core: Save/restore default port IB capability mask 23d0a65 toshiba_acpi: close race in toshiba_acpi driver 7b964f7 i2c-parport: Fix misplaced parport_release call 79b93e1 i2c: Remove i2c clients in reverse order d1846b0 i2c/isp1301_omap: Build fixes ee8a1a0 HID: Apple ALU wireless keyboards are bluetooth devices af38d90 Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 487ff32 Allow architectures to override copy_user_highpage() 52b19ac udf: Fix BUG_ON() in destroy_inode() a730b32 [ARM] pxa/palmtx: misc fixes to use generic GPIO API b627c8b x86: always define DECLARE_PCI_UNMAP* macros 6417a91 Merge branch 'omap-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 abd9421 [S390] Update default configuration. 0778dc3 [S390] Fix alignment of initial kernel stack. 2944a5c [S390] pgtable.h: Fix oops in unmap_vmas for KVM processes 8107d82 [S390] fix/cleanup sched_clock 59da213 [S390] fix system call parameter functions. 4cd4262 sched: prevent divide by zero error in cpu_avg_load_per_task 4f5a7f4 ftrace: prevent recursion e899b64 ACPICA: disable _BIF warning a6e0887 ACPI: delete OSI(Linux) DMI dmesg spam 95a28ed ACPICA: Allow _WAK method to return an Integer 0081b16 ACPI: thinkpad-acpi: fix fan sleep/resume path 5f23b73 net: Fix soft lockups/OOM issues w/ unix garbage collector efbbced macvlan: don't broadcast PAUSE frames to macvlan devices 7e5ab54 Phonet: fix oops in phonet_address_del() on non-Phonet device 3fedd90 sony-laptop: printk tweak 38cfc14 sony-laptop: brightness regression fix 3bdca1b Revert "ACPI: don't enable control method power button as wakeup device when Fixed Power button is used" 65df784 ACPI suspend: Blacklist boxes that require us to set SCI_EN directly on resume 4059907 ACPI: scheduling in atomic via acpi_evaluate_integer () 723fdb7 ARM: OMAP: Fixes for suspend / resume GPIO wake-up handling 558073d ACPI: battery: Convert discharge energy rate to current properly 90f6713 parisc: struct device - replace bus_id with dev_name(), dev_set_name() 7a3f513 parisc: fix kernel crash when unwinding a userspace process 9860d1b parisc: __kernel_time_t is always long 7b4d469 ACPI: EC: count interrupts only if called from interrupt handler. a98ee8c [CIFS] fix regression in cifs_write_begin/cifs_write_end 545f4e9 Input: wacom - add support for new USB Tablet PCs 3ec1925 netfilter: ctnetlink: fix GFP_KERNEL allocation under spinlock 6c47535 KVM: MMU: avoid creation of unreachable pages in the shadow bd51126 sungem: Fix PCS_MIICTRL register write in gem_init_phy(). 461cba2 drm/i915: Save/restore HWS_PGA on suspend/resume 8f480c0 net: make skb_truesize_bug() call WARN() 1d71da1 net: hp-plus uses eip_poll 2fd36a5 [ARM] pxa/corgi: update default config to exclude tosa from being built 72e9622 [ARM] pxa/pcm990: use negative number for an invalid GPIO in camera data ffd565a x86: fixup config space size of CPU functions for AMD family 11h 147dcf5 ARM: OMAP: Typo fix for clock_allow_idle d7713cc Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 020cf6b net/wireless/reg.c: fix bad WARN_ON in if statement 02969b3 ath5k: disable beacon filter when station is not associated 33ab625 ath5k: fix Security issue in DebugFS part of ath5k b4b6cda ath9k: correct expected max RX buffer size ca0c7e5 ath9k: Fix SW-IOMMU bounce buffer starvation 3dd3b79 mac80211 : Fix setting ad-hoc mode and non-ibss channel e91af0a iwlagn: fix DMA sync 031bb27 firewire: fw-sbp2: another iPod mini quirk entry 9e0de91 ieee1394: sbp2: another iPod mini quirk entry a266d9f [CPUFREQ] powernow-k8: ignore out-of-range PstateStatus value 121fe86 [CPUFREQ] Documentation: Add Blackfin to list of supported processors de90add x86, bts: fix wrmsr and spinlock over kmalloc c4858ff x86, pebs: fix PEBS record size configuration e5e8ca6 x86, bts: turn macro into static inline function 292c669 x86, bts: exclude ds.c from build when disabled b628353 Merge branch 'topic/fix/hda' into for-linus eff79ae arch/x86/kernel/pci-calgary_64.c: change simple_strtol to simple_strtoul 5cf02b7 x86: use limited register constraint for setnz 661cd8f ALSA: hda - Check model for Dell 92HD73xx laptops c65574a ALSA: hda - mark Dell studio 1535 quirk 9502662 ALSA: hda - No 'Headphone as Line-out' swich without line-outs f73d358 ALSA: hda - Fix AFG power management on IDT 92HD* codecs c30f8a6 KVM: ppc: stop leaking host memory on VM exit 9e97697 ALSA: hda - Fix caching of SPDIF status bits 11c6dd2 phylib: Add Vitesse VSC8221 SGMII PHY 244f46a rose: zero length frame filtering in af_rose.c 7953031 ARM: OMAP: Remove broken LCD driver for SX1 631339f bridge: netfilter: fix update_pmtu crash with GRE f79fca5 netfilter: xtables: add missing const qualifier to xt_tgchk_param b54ad40 netfilter: ctnetlink: fix conntrack creation race 5244021 drm: move drm vblank initialization/cleanup to driver load/unload 6133047 drm/i915: execbuffer pins objects, no need to ensure they're still in the GTT 05eff84 drm/i915: Always read pipestat in irq_handler 2678d9d drm/i915: Subtract total pinned bytes from available aperture size 28dfe52 drm/i915: Avoid BUG_ONs on VT switch with a wedged chipset. cdfbc41 drm/i915: Remove IMR masking during interrupt handler, and restart it if needed. 7c46358 drm/i915: Manage PIPESTAT to control vblank interrupts instead of IMR. a8d82d9 NLM: client-side nlm_lookup_host() should avoid matching on srcaddr 8442c87 Input: replace spin_lock_bh with spin_lock_irqsave in ml_ff_playback e4625eb nfsd: use of unitialized list head on error exit in nfs4recover.c 8ec2e24 MIPS: Make BUG() __noreturn. 2da2c21 Add a reference to sunrpc in svc_addsock 2c5e761 nfsd: clean up grace period on early exit 50f3beb V4L/DVB (9742): em28xx-alsa: implement another locking schema 7a8f4cc V4L/DVB (9732): sms1xxx: use new firmware for Hauppauge WinTV MiniStick e07a1d8 V4L/DVB (9691): gspca: Move the video device to a separate area. 5c4fa00 V4L/DVB (9690): gspca: Lock the subdrivers via module_get/put. 98522a7 V4L/DVB (9689): gspca: Memory leak when disconnect while streaming. 3f9b5d4 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/jk/spufs into merge be542fa Merge branch 'merge' of ssh://master.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx into merge 11bac8a Merge branch 'merge' of git://git.secretlab.ca/git/linux-2.6-mpc52xx into merge 5147d14 drivers/net/chelsio/sge.c: remove redundant argument comments ece4af1 driver/net/*: remove redundant argument comments fb91ee6 tracing, doc: update mmiotrace documentation 7ee1768 x86, mmiotrace: fix buffer overrun detection 47fd6f7 [ARM] 5335/1: pxa25x_udc: Fix is_vbus_present to return 1 or 0 0c0f40b KVM: MMU: fix sync of ptes addressed at owner pagetable ce50b91 KVM: ia64: Fix: Use correct calling convention for PAL_VPS_RESUME_HANDLER 547567c KVM: ia64: Fix incorrect kbuild CFLAGS override bd2b3ca KVM: VMX: Fix interrupt loss during race with NMI 3eb77d5 KVM: s390: Fix problem state handling in guest sigp handler 86bbc2c xen: pin correct PGD on suspend 3d994e1 Merge branch 'oprofile-for-tip' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile into x86/urgent fde5be3 HID: remove setup mutex, fix possible deadlock a1967d6 x86: revert irq number limitation 2ed1cdc irq.h: fix missing/extra kernel-doc 9f14416 Merge commit 'v2.6.28-rc6' into irq/urgent 844c6f6 [ARM] pxa/MioA701: bluetooth resume fix 999f633 [ARM] pxa/MioA701: fix memory corruption. 7e56b5d net: Fix memory leak in the proto_register function 33cf71c tcp: Do not use TSO/GSO when there is urgent data 38ae07e net/hp-plus: fix link errors 208fbec axnet_cs / pcnet_cs: moving PCMCIA_DEVICE_PROD_ID for Netgear FA411 57550b2 Merge commit 'v2.6.28-rc6' into x86/urgent 3477d20 UBIFS: pre-allocate bulk-read buffer 6c0c42c UBIFS: do not allocate too much 39ce81c UBIFS: do not print scary memory allocation warnings be1ffce rtc: rtc-starfire fixes 0602641 [WATCHDOG] hpwdt: set the mapped BIOS address space as executable 28d41f5 [WATCHDOG] iTCO_wdt: add PCI ID's for ICH9 & ICH10 chipsets c6904dd [WATCHDOG] iTCO_wdt : correct status clearing 7cd5b08 [WATCHDOG] iTCO_wdt : problem with rebooting on new ICH9 based motherboards 21098c6 [SCSI] fc_transport: fix old bug on bitflag definitions f80e919 [WATCHDOG] fix mtx1_wdt compilation failure b0788ca lockdep: consistent alignement for lockdep info 522a110 function tracing: fix wrong position computing of stack_trace c879c63 Merge branches 'topic/fix/hda' and 'topic/fix/sound-core' into for-linus b0fc5e0 ALSA: hda - Add a quirk for Dell Studio 15 3a7abfd ALSA: hda: Add STAC_DELL_M4_3 quirk a39c4ad sound/sound_core: Fix sparse warnings 6436cbc phy: fix phy_id detection also for broken hardware. 75e07fc pci: Added quirk to disable msi for MCP55 NIC on Asus P5N32-SLI Premium ed31348 Merge master.kernel.org:/home/rmk/linux-2.6-arm 13d428a Linux 2.6.28-rc6 6065726 powerpc/spufs: Fix spinning in spufs_ps_fault on signal 906430a Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 ba721d3 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 0090d48 [IA64] xen: fix xen_get_eflags. 93fe10b [IA64] ia64/pv_ops/pv_cpu_ops: fix _IA64_REG_IP case. d596410 [IA64] remove duplicate include iommu.h ef23cdb [IA64] use mprintk instead of printk, in ia64_mca_modify_original_stack b704882 [IA64] Rationalize kernel mode alignment checking 0ca4b6b x86: Fix interrupt leak due to migration 23918b0 SUNRPC: Fix a performance regression in the RPC authentication code 0cb39aa Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 c93fc28 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus e3b4ae7 Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 4dd61d9 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 95763dd Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 0260da1 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip ed79b86 parisc: fix bug in compat_arch_ptrace ddb4cbf [CIFS] Do not attempt to close invalidated file handles 818a557 V4L/DVB (9668): em28xx: fix a race condition with hald cce2571 V4L/DVB (9664): af9015: don't reconnect device in USB-bus a24e849 MIPS: csrc-r4k: Fix declaration depending on the wrong CONFIG_ symbol. 664c4bb MIPS: csrc-r4k: Fix spelling mistake. 2e37395 MIPS: RB532: Provide functions for gpio configuration f43909d MIPS: IP22: Make indy_sc_ops variable static 1b43284 MIPS: RB532: GPIO register offsets are relative to GPIOBASE 9e86786 MIPS: Malta: Fix include paths in malta-amon.c f2a2e49 V4L/DVB (9647): em28xx: void having two concurrent control URB's c4a9879 V4L/DVB (9646): em28xx: avoid allocating/dealocating memory on every control urb 625ff16 V4L/DVB (9645): em28xx: Avoid memory leaks if registration fails 0253fdc ALSA: hda: STAC_DELL_M6 EAPD bfe085f x86: fixing __cpuinit/__init tangle, xsave_cntxt_init() 9bc646f x86: fix __cpuinit/__init tangle in init_thread_xstate() 578f3a3 HID: add USB ID for another dual gameron adapter 5ece6c2 net: fix tiny output corruption of /proc/net/snmp6 a849854 atl2: don't request irq on resume if netif running eedd726 ipv6: use seq_release_private for ip6mr.c /proc entries 3aa4614 pkt_sched: fix missing check for packet overrun in qdisc_dump_stab() f7f65d1 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 06d2148 HID: unignore mouse on unibody macbooks eafdcb4 smc911x: Fix printf format typo in smc911x driver. a7f75c0 asix: Fix asix-based cards connecting to 10/100Mbs LAN. 11b4aa0 mv643xx_eth: fix recycle check bound bcb3336 mv643xx_eth: fix the order of mdiobus_{unregister, free}() calls fb5e2f9 sh: sh_eth: Update to change of mii_bus c828384 TPROXY: supply a struct flowi->flags argument in inet_sk_rebuild_header() a134f85 TPROXY: fill struct flowi->flags in udp_sendmsg() 5091b58 USB: ACE1001 patch for cp2101.c f1c0a2a USB: usbmon: fix read(2) ff34950 USB: gadget rndis: send notifications 9c26452 USB: gadget rndis: stop windows self-immolation 589afd3 USB: storage: update unusual_devs entries for Nokia 5300 and 5310 9beba53 USB: storage: updates unusual_devs entry for the Nokia 6300 aa5cbbe usb: musb: fix bug in musb_schedule b09bc6c USB: fix SB700 usb subsystem hang bug ee2f6cc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 3108864 Merge branch 'x86/numa' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 4f7dbc7 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 9f92f47 cciss: fix DEBUG printk formats 06b0d4d W1 OMAP: Fix OMAP LDP boot crash f55491a drivers/video/backlight/da903x.c: introduce one more missing kfree 33d283b cgroups: fix a serious bug in cgroupstats ea7e743 hostfs: fix a duplicated global function name ee11940 cirrusfb: remove unused variables 00d8089 vmscan: fix get_scan_ratio() comment 8e324c1 MAINTAINERS: change email address for rostedt 45a3a36 drivers/hwmon/applesmc.c: add generic MacPro support c0d861a drivers/video/backlight/da903x.c: introduce missing kfree f945454 don't unlink an active swapfile 63eb6b9 vmscan: let GFP_NOFS go to swap again bda8550 migration: fix writepage error 966c8c1 sprint_symbol(): use less stack 3fa59df cgroup: fix potential deadlock in pre_destroy 0ae1513 mm: vmalloc search restart fix 496850e mm: vmalloc failure flush fix f011c2d mm: vmalloc allocator off by one f481891 cpuset: update top cpuset's mems after adding a node ac97b9f eCryptfs: Allocate up to two scatterlists for crypto ops on keys 3b45d63 spi_imx: full duplex dma corruption bugfix b3b4dc8 lcd: fix oops if driver only interested in .set_power c267fd7 viafb: fix releasing of /proc/viafb/ subtree 393df74 pxa2xx_spi: bugfix full duplex dma data corruption f652c52 lib/scatterlist.c: fix kunmap() argument in sg_miter_stop() a495a6d tmiofb: fix compilation with ACCEL disabled 415d8cf GRU: fix for debug option 6e8ba72 gpiolib: extend gpio label column width in debugfs file 1c207f9 Documentation/kernel-parameters.txt: add min_addr, fix max_addr f8b2256 sparc64: wire up accept4() de11def reintroduce accept4 cf7ee55 fbdev: clean the penguin's dirty feet e00b4ff7e sysvipc: fix the ipc structures initialization cf7b9a1 drivers/video: bad error test before a dereference 9ca791b hwmon: applesmc: Add support for iMac 6 b88ed5c net: ipg.c fix bracing on endian swapping de339c2 phylib: Fix auto-negotiation restart avoidance 31c221c net: jme.c rxdesc.flags is __le16, other missing endian swaps 9d6ada9 phylib: fix phy name example in documentation b473001 net: Do not fire linkwatch events until the device is registered. 566521d phonet: fix compilation with gcc-3.4 79aefa4 ixgbe: fix compilation with gcc-3.4 1df8fb3 PCI: Fix disable IRQ 0 in pci_reset_function() bfdbc0a pktgen: fix multiple queue warning c3e3889 net: fix ip_mr_init() error path 5f4ba04 Input: i8042 - add Compal Hel80 laptop to nomux blacklist e871809 powerpc/mpc832x_rdb: fix swapped ethernet ids 06597aa powerpc: Use generic PHY driver for Marvell 88E1111 PHY on GE Fanuc SBC610 f464ff5 powerpc/85xx: L2 cache size wrong in 8572DS dts b4e0f9e intel-iommu: fix compile warnings 6d5b43a Merge branch 'tip/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent 3246477 ftrace: fix dyn ftrace filter selection 8204327 ftrace: make filtered functions effective on setting f10ed36 ftrace: fix set_ftrace_filter 4018517 iwlagn: fix RX skb alignment 8e3bad6 mac80211: remove ieee80211_notify_mac 9b44fb8 libertas_tf: fix skb tail pointer 20a4a23 x86: uaccess_64: fix return value in __copy_from_user() 093bac1 x86: quirk for reboot stalls on a Dell Optiplex 330 641d2f6 trace: introduce missing mutex_unlock() 5177dc3 Merge branch 'linus' into tracing/urgent bfb5982 [CIFS] fix check for dead tcon in smb_init 66359f8 Parport driver: disable pc-style parport on Blackfin systems 7f0f598 Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block a6a0c4c suspend: use WARN not WARN_ON to print the message 72b51a6 Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 8c60bfb Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip b658406 Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 376fdd2 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6 af94ce0 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 0bb943c tracing: kernel/trace/trace.c: introduce missing kfree() 73f56c0 Merge branch 'iommu-fixes-2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into x86/urgent 0af40a4 x86: more general identifier for Phoenix BIOS 8501c45 AMD IOMMU: check for next_bit also in unmapped area 695b567 AMD IOMMU: fix fullflush comparison length 3ce1f93 AMD IOMMU: enable device isolation per default e5e1f60 AMD IOMMU: add parameter to disable device isolation 10db4ef x86, PEBS/DS: fix code flow in ds_request() c26156b block: hold extra reference to bio in blk_rq_map_user_iov() 98ba403 relay: fix cpu offline problem 68aee07 Release old elevator on change elevator 561ec68 block: fix boot failure with CONFIG_DEBUG_BLOCK_EXT_DEVT=y and nash 55e8e30 block/md: fix md autodetection ba32929 block: make add_partition() return pointer to hd_struct eb60fa1 block: fix add_partition() error path ef71b1b Merge branches 'topic/fix/hda' and 'topic/fix/misc' into for-linus c5d08bb ALSA: hda - Fix resume of GPIO unsol event for STAC/IDT 80bf272 ALSA: hda - Add quirks for HP Pavilion DV models 62273ee Blackfin arch: fix a broken define in dma-mapping 4213cb6 Blackfin arch: fix bug - Turn on DEBUG_DOUBLEFAULT, booting SMP kernel crash 41c3b64 ALSA: hda - Fix GPIO initialization in patch_stac92hd71bxx() e270219 kernel/profile.c: fix section mismatch warning 700018e cpuset: fix regression when failed to generate sched domains 4e14e83 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 b066a48 prevent cifs_writepages() from skipping unwritten pages 2c55608 Fixed parsing of mount options when doing DFS submount 93ce99e x86: add rdtsc barrier to TSC sync check 65ecc14 Remove -mno-spe flags as they dont belong e77a20e Merge branch 'for-linus' of git://git.o-hand.com/linux-mfd 26a3e99 xen: fix scrub_page() a4a16be oprofile: fix an overflow in ppro code ab3f992 [CIFS] Fix check for tcon seal setting and fix oops on failed mount from earlier patch 9753b12 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 847e917 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 ad133ba sched, signals: fix the racy usage of ->signal in account_group_xxx/run_posix_cpu_timers 28105fd [ARM] 5330/1: mach-pxa: Fixup reset for systems using reboot=cold or other strings 12a8ab1 Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 1e74f30 swiotlb: use coherent_dma_mask in alloc_coherent 5f9021c rtnetlink: propagate error from dev_change_flags in do_setlink() 584c650 isdn: remove extra byteswap in isdn_net_ciscohdlck_slarp_send_reply c2b3382 [CIFS] Fix build break ebfe92c Phonet: refuse to send bigger than MTU packets f1987b4 cifs: reinstate sharing of tree connections eb7c3ad e1000e: fix IPMI traffic e82f54b e1000e: fix warn_on reload after phy_id error 99afb98 V4L/DVB (9639): Make dib0700 remote control support work with firmware v1.20 deaf53e V4L/DVB (9635): v4l: s2255drv fix firmware test on big-endian 41286d9 V4L/DVB (9634): Make sure the i2c gate is open before powering down tuner 3f9b46c V4L/DVB (9632): make em28xx aux audio input work 3fa37de V4L/DVB (9631): Make s2api work for ATSC support c41109f V4L/DVB (9627): em28xx: Avoid i2c register error for boards without eeprom df4533a V4L/DVB (9608): Fix section mismatch warning for dm1105 during make 4faf100 V4L/DVB (9605): usb-urb: fix memory leak 7935eea V4L/DVB (9604): ttusb_dec: fix memory leak b7ed785 V4L/DVB (9603): dvb-ttusb-budget: Add validation for ttusb_alloc_iso_urbs 11eb260 V4L/DVB (9602): dvb-ttusb-budget: Add NULL pointer validation d7c31a1 V4L/DVB (9601): ttusb_dec: Add NULL pointer validation 5181e59 HID: fix blacklist entries for greenasia/pantherlord 72eb8c6 unitialized return value in mm/mlock.c: __mlock_vma_pages_range() e14c8bf stop_machine: fix race with return value (fixes Bug #11989) 5c06fe7 Fix broken ownership of /proc/sys/ files 898d805 mfd: Correct WM8350 I2C return code usage b1ccbdc mfd: fix event masking for da9030 77fb61a acpi: fix oops in acpi_system_wakeup_device_seq_show 2a3a59e [SCSI] Fix hang in starved list processing 3ee8238 phy: fix phy address bug 773c9c1 e100: fix dma error in direction for mapping ac45020 igb: use dev_printk instead of printk 0f80704 qla3xxx: Cleanup: Fix link print statements. e1b86d8 igb: Use device_set_wakeup_enable de12648 e1000: Use device_set_wakeup_enable 6ff6802 e1000e: Use device_set_wakeup_enable d3c6aa1 x86: fix es7000 compiling 5f5c4bd via-velocity: enable perfect filtering for multicast packets faf2f0a [ARM] pxa: fix incorrect PCMCIA PSKTSEL pin configuration for spitz 38cd809 [ARM] pxa: fix I2C controller device being registered twice on Akita 5821e1b function tracing: fix wrong pos computing when read buffer has been fulfilled e47411b MAINTAINERS: remove me as RAID maintainer d1f1e9c x86, bts: fix unlock problem in ds.c 29d7b90 sched: fix kernel warning on /proc/sched_debug access b42ccbc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid d659fc1 Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 605f196 phy: Add support for Marvell 88E1118 PHY d53b93f mlx4_en: Pause parameters per port 9bf1a24 Linux 2.6.28-rc5 8f7b0ba Fix inotify watch removal/umount races 0d3b710 LIS3LV02Dx: remove unused #include 537a2f8 Merge branch 'sh/for-2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 fab349c Merge branch 'doc-subdirs' of git://git.kernel.org/pub/scm/linux/kernel/git/rdunlap/linux-docs d091c2f Add 'pr_fmt()' format modifier to pr_xyz macros. 4d41e12 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs 6ca2cb9 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 0113314 Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 c98114d Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 52168e6 Revert "x86: blacklist DMAR on Intel G31/G33 chipsets" 748f1a2 mm: remove unevictable's show_page_path fb75109 misc: C2port needs 27123cb m68k: Fix off-by-one in m68k_setup_user_interrupt() fa0cfc2 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev 8e5f262 ALSA: hda - Check model type instead of SSID in patch_92hd71bxx() 8141c7f Move "exit_robust_list" into mm_release() d6f35e3 ALSA: sound/pci/pcxhr/pcxhr.c: introduce missing kfree and pci_disable_device c39555d ALSA: hda: STAC_VREF_EVENT value change df81d23 [SCSI] dpt_i2o: fix transferred data length for scsi_set_resid() cecf61b rtc: rtc-sun4v fixes, revised d82c2df [CIFS] minor cleanup to cifs_mount 14fbf50 cifs: reinstate sharing of SMB sessions sans races 6a6b97d libata: improve phantom device detection e7ddee9 cifs: disable sharing session and tcon and add new TCP sharing code a2224ad Merge branch 'davem-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 3e44017 phylib: fix premature freeing of struct mii_bus 3b259e3 atl1: Do not enumerate options unsupported by chip 7ee0fdd atl1e: fix broken multicast by removing unnecessary crc inversion 8118305 gianfar: Fix DMA unmap invocations 18acfa2 net/ucc_geth: Fix oops in uec_get_ethtool_stats() 5421ae0 scm: fix scm_fp_list->list initialization made in wrong place d8c3e23 niu: Bump driver version and release date. e3e081e NIU: Add Sun CP3260 ATCA blade support 4ff429e 9p: restrict RDMA usage c8d6988 powerpc/virtex: Update defconfigs 31c00fc Create/use more directory structure in the Documentation/ tree. c7c2ffb powerpc/52xx: update defconfigs c14464b xsysace: Fix driver to use resource_size_t instead of unsigned long d2f019f [S390] fix s390x_newuname a9cffb2 [S390] dasd: log sense for fatal errors 74af283 [S390] cpu topology: fix locking 85acc40 [S390] cio: Fix refcount after moving devices. 50bec4c [S390] ftrace: fix kernel stack backchain walking 632448f [S390] ftrace: disable tracing on idle psw af4c687 [S390] lockdep: fix compile bug cc835f78 [S390] kvm_s390: Fix oops in virtio device detection with "mem=" 675be97 [S390] sclp: emit error message if assign storage fails fb2e7c5 [S390] Fix range for add_active_range() in setup_memory() a108096 powerpc/virtex: fix various format/casting printk mismatches 01a1a3c V4L/DVB (9624): CVE-2008-5033: fix OOPS on tvaudio when controlling bass/treble c6241b6 V4L/DVB (9623): tvaudio: Improve debug msg by printing something more human 41f5230 V4L/DVB (9622): tvaudio: Improve comments and remove a unneeded prototype 4942643 V4L/DVB (9621): Avoid writing outside shadow.bytes[] array 81cb5c4 V4L/DVB (9620): tvaudio: use a direct reference for chip description b4ab114 V4L/DVB (9619): tvaudio: update initial comments 099b7fc V4L/DVB (9618): tvaudio: add additional logic to avoid OOPS dd03e97 V4L/DVB (9617): tvtime: remove generic_checkmode callback af1a995 V4L/DVB (9616): tvaudio: cleanup - group all callbacks together 04e6f99 V4L/DVB (9615): tvaudio: instead of using a magic number, use ARRAY_SIZE 5c65335 V4L/DVB (9613): tvaudio: fix a memory leak 131d3a7 HID: don't grab devices with no input e8f6fbf lockdep: include/linux/lockdep.h - fix warning in net/bluetooth/af_bluetooth.c 847cdf4 powerpc/mpc5200: fix bestcomm Kconfig dependencies 3ec332e [CIFS] clean up server protocol handling 9c7c354 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 7e5b95f Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm 8a57dfc dm: avoid destroying table in dm_any_congested d221d2e dm: move pending queue wake_up end_io_acct 14e98c5 dm mpath: warn if args ignored b81aa1c dm mpath: avoid attempting to activate null path 6edebde dm stripe: fix init failure 18776c7 dm raid1: flush workqueue before destruction ccf9540 USB: net: asix: add support for Cables-to-Go USB Ethernet adapter e50ae57 USB: gadget: cdc-acm deadlock fix 372dd6e USB: EHCI: fix divide-by-zero bug 67b2e02 USB: EHCI: fix handling of dead controllers 5863964 usb: r8a66597-hcd: fix wrong data access in SuperH on-chip USB d73b7af ub: stub pre_reset and post_reset to fix oops 859ff40 USB: SISUSB2VGA driver: add 0x0711, 0x0903 ed4103b usb: unusual devs patch for Nokia 7610 Supernova ff30bf1 USB: remove optional bus bindings in isp1760, fixing runtime warning 9a18e75 + usb-serial-cp2101-add-enfora-gsm2228.patch added to -mm tree 659d643 USB: storage: adjust comment in Kconfig ddcb01f USB: Fix PS3 USB shutdown problems 8010e06 USB: unusual_devs entry for Argosy USB mass-storage interface ad0b65e USB: cdc-acm.c: fix recursive lock in acm_start_wb error path 881e3c9 USB: CP2101 Add device ID for AMB2560 2870fde USB: mention URB_FREE_BUFFER in usb_free_urb documentation c6206fa USB: Add YISO u893 usb modem vendor and product IDs to option driver 23d15e0 usb: musb: fix BULK request on different available endpoints b60c72a usb: musb: fix debug global variable name eef767b usb: musb: Removes compilation warning in gadget mode 14a2c96 usb: musb: tusb6010: kill compile warning f82a689 usb: musb: Fix for isochronous IN transfer 352d026 USB: don't register endpoints for interfaces that are going away 0047ca0 USB: add Nikon D300 camera to unusual_devs 6c5ab37 USB: vstusb: fix compiler warning on x86-64 58e20d8 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 fb39601 [CIFS] remove unused list, add new cifs sock list to prepare for mount/umount fix 7b42365 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm 3b79521 [CIFS] Fix cifs reconnection flags 2d1595a Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 90aaa53 Merge master.kernel.org:/home/rmk/linux-2.6-arm 906bf11 fix cpumask build breakage on parisc 278afcb dlm: fix shutdown cleanup d7de4c1 slab: document SLAB_DESTROY_BY_RCU 02f5621 Kconfig: SLUB is the default slab allocator 6612d9b powerpc/44x: Fix 460EX/460GT machine check handling 5907630 powerpc/40x: Limit allocable DRAM during early mapping 8959dab [ARM] cdb89712: avoid namespace clashes with SRAM_ and BOOTROM_ constants d9a682a [ARM] cdb89712,clps7500,h720x: avoid namespace clash for FLASH_* constants 1e8b041 [ARM] integrator,realview,versatile: remove FLASH_* and EPROM_* constants 9fa7679 [ARM] dma-mapping: fix compiler warning ee51a1d tracing: fix mmiotrace resizing crash 6a12afb ALSA: hda - Missing NULL check in hda_beep.c 4d4e9bb ALSA: hda - Add digital beep playback switch for STAC/IDT codecs 3ff68a6 genirq: __irq_set_trigger: change pr_warning to pr_debug 62a5658 HID: fix radio-mr800 hidquirks c91c21c HID: fix kworld fm700 radio hidquirks e3e14de HID: fix start/stop cycle in usbhid driver 43ff3a4 HID: use single threaded work queue for hid_compat 437184a HID: map macbook keys for "Expose" and "Dashboard" a96d6ef HID: support for new unibody macbooks 7d672cd HID: fix locking in hidraw_open() 272966c serial: sh-sci: Reorder the SCxTDR write after the TDxE clear. 5d52013 sh: __copy_user function can corrupt the stack in case of exception 2cd0ebc sh: Fixed the TMU0 reload value on resume 2fe401e sched: correct sched-rt-group.txt pathname in init/Kconfig e64ed02 sparc: Fix tty compile warnings. 5acdc1f sparc: struct device - replace bus_id with dev_name(), dev_set_name() 1fa989e 9p: restrict RDMA usage 9c0188a net: shy netns_ok check 6e093d9 ipv6: routing header fixes 10840f0 sh: Don't factor in PAGE_OFFSET for valid_phys_addr_range() check. bfbedf7 sh: early printk port type fix bff4056 i2c: fix i2c-sh_mobile rx underrun 4ffaf86 Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 65131cd c2port: add c2port support for Eurotech Duramar 2150 4e17e1d Add c2 port support e0a2938 hdq: documentation for OMAP HDQ cfbc619 hdq: bQ27000 HDQ Slave Interface Driver 9f2bc79 hdq driver for OMAP2430/3430 34e453d w1: export w1_read_8 function 06de180 rtc: add Dallas DS1390/93/94 RTC chips a7fa985 rtc: basic implementation of Epson RX-8581 I2C Real Time Clock 077eaf5 rtc: rtc-wm8350: add support for WM8350 RTC a412ae3 ics932s401: new clock generator chip driver c0b4e3a adt7462: new hwmon driver 455fbdd LIS3LV02Dx Accelerometer driver 33c5d3d memcg: bugfix for memory hotplug 6cdfcc2 ext3: Clean up outdated and incorrect comment for ext3_write_super() 50d7d5b atmel_spi: work-around required for new HW bug in AT91SAM9263 Rev.B SPI controller 79b92f2 lm85: support adt7468 chips 862343c adt7473: check inputs from sysfs writes 05a9bd4 adt7470: check input range when sysfs files are written 7e036d0 kernel/kprobes.c: don't pad kretprobe_table_locks[] on uniprocessor builds 084c304 DOC: update xip method info b67ad18 DOC: add printk-formats.txt b76f90b remove ratelimt() afef80b vfs: fix shrink_submounts 8891d6d mm: remove lru_add_drain_all() from the munlock path a189d03 kprobes: disable preempt for module_text_address() and kernel_text_address() 3b1b3f6 freezer_cg: disable writing freezer.state of root cgroup 6874467 freezer_cg: remove task_lock from freezer_fork() 0bcb606 GPIO: add new Xilinx driver for powerpc e33c3b5 cpusets: update mems allowed in page allocator f0f7e0d i5000-edac: hold reference to mci kobject fe2d5ff Fix platform drivers that crash on suspend/resume 722facc atmel_lcdfb: change irq_base definition to allow error reporting 468cc03 hwmon: applesmc: add support for Macbook 4 7526674 hugetlb: make unmap_ref_private multi-size-aware b5f1f55 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 b2af2c1 bnx2: fix poll_controller to pass proper structures and check all rx queues ddd535c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 e23a59e niu: Fix readq implementation when architecture does not provide one. 604d205 x86: make NUMA on 32-bit depend on EXPERIMENTAL again 97a70e5 x86, hibernate: fix breakage on x86_32 with CONFIG_NUMA set f7cd168 hostap: pad the skb->cb usage in lieu of a proper fix f3c7691 rtl8187 : support for Sitecom WL-168 0001 v4 db7fb86 mac80211: fix notify_mac function 8f7c41d rtl8187: Add Abocom USB ID 45a9524 Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 4416662 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx 5cbd54e sched: fix init_idle()'s use of sched_clock() 3edac25 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 504765f Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 58a4748 MN10300: Don't do misalignment handling for userspace bd9384a MN10300: Don't handle misaligned loading and storing of SP d3bd462 MN10300: Handle misaligned SP-based operands 852c15b MN10300: Fix misaligned index-register addressing handling 6d615c7 MN10300: Handle misaligned postinc-with-imm addressing mode correctly ddb6d05 MN10300: Perform misalignment fixups of MOV_Lcc aefefbb MN10300: Allow misalignment fixup in interrupt handling f911c68 MN10300: Fix register-postinc addressing misalignment handling b308bf3 MN10300: Extract the displacement from an insn correctly in misalignment fixup ee6e740 MN10300: Add further misalignment fixups 9f55588 MN10300: Add built-in testing for misalignment handler 31ea24b MN10300: Clean up the misalignment handler a little 5d2007e Merge branch 'kvm-updates/2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm 1c12718 parisc: fix find_extend_vma() breakage 08c1184 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 c35a254 Merge branches 'cxgb3', 'ehca', 'ipath', 'ipoib', 'mlx4' and 'nes' into for-next ff79ae8 IPoIB: Fix crash in path_rec_completion() 93a3ab9 IPoIB: Fix hang in ipoib_flush_paths() fe25c56 IPoIB: Don't enable NAPI when it's already enabled b3e123c RDMA/cxgb3: Fix deadlock in iw_cxgb3 (hang when configuring interface) a2d4777 sched: fix stale value in average load per task 47e74f2 ring-buffer: no preempt for sched_clock() d35aac1 net: put_cmsg_compat + SO_TIMESTAMP[NS]: use same name for value as caller 8f65b53 tcp_htcp: last_cong bug fix 24924f8 Merge branch 'topic/fix/hda' into for-linus d7a8943 ALSA: hda - Fix IDT/STAC multiple HP detection 621a0d5 hrtimer: clean up unused callback modes 185aed7 sh: Provide a sane valid_phys_addr_range() to prevent TLB reset with PMB. ade7a9b usb: r8a66597-hcd: fix wrong data access in SuperH on-chip USB 51ee3d9 fix sci type for SH7723 1a22f08 serial: sh-sci: fix cannot work SH7723 SCIFA d1876ba Merge branch 'ec' into release 547f784 Merge branch 'processor-256' into release f398778 Merge branch 'video' into release 9b5a56d Merge branch 'sysfs' into release a0017f4 Merge branch 'sony' into release f613984 Merge branch 'power' into release 3e0fe36 Merge branch 'misc' into release e911d27 Merge branch 'bugzilla-11917' into release 50f19e3 Merge branch 'bugzilla-11539' into release 597e4fa Merge branch 'bugzilla-11312' into release 3283625 ACPI: pci_link: remove acpi_irq_balance_set() interface 56960b5 fujitsu-laptop: Add DMI callback for Lifebook S6420 d809a15 Merge branch 'davem-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 fad96ab IB/ehca: Remove reference to special QP in case of port activation failure 8517934 ACPI: EC: Don't do transaction from GPE handler in poll mode. 06cf7d3 ACPI: EC: lower interrupt storm treshold 0b7084a ACPICA: Use spinlock for acpi_{en|dis}able_gpe a2f93ae ACPI: EC: restart failed command dd15f8c ACPI: EC: wait for last write gpe f824843 ACPI: EC: make kernel messages more useful when GPE storm is detected 1cfe62c ACPI: EC: revert msleep patch 2485b86 PCI: ignore bit0 of _OSC return code c1e7abb Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent 06190d8 dmaengine: struct device - replace bus_id with dev_name(), dev_set_name() 65e5038 iop-adma: use iop_paranoia() for debug BUG_ONs 137cb55 iop-adma: add a dummy read to flush next descriptor update a358324 ring-buffer: buffer record on/off switch 734f0ba Input: cm109 - add keymap for ATCom AU-100 phone e17d1dc KVM: Fix pit memory leak if unable to allocate irq source id c60ff51 KVM: ia64: fix vmm_spin_{un}lock for !CONFIG_SMP 928d4bf KVM: VMX: Set IGMT bit in EPT entry ca93e99 KVM: Require the PCI subsystem a29a2af x86: KVM guest: fix section mismatch warning in kvmclock.c f21f237 Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip a2e4e28 KVM: ia64: Use guest signal mask when blocking c41ef34 KVM: MMU: increase per-vcpu rmap cache alloc size 2f96cb5 Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 09eb3b5 Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 04ca2c1 Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs ad1164b Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 0906dd9 telephony: trivial: fix up email address 8eb04cf tty: trivial - fix up email addresses in tty related stuff 853041f Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 e892873 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc eda1be6 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 5da38d3 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev 7e2cec8 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 0a4cf2c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 4f1e6bc ALSA: hda - Fix input pin initialization for STAC/IDT codecs 4f48544 Input: fix the example of an input device driver 5fb17fd Input: psmouse - fix incorrect validate_byte check in OLPC protocol d6d79a7 Input: atkbd - cancel delayed work before freeing its structure a8215b8 Input: atkbd - add keymap quirk for Inventec Symphony systems 786b11c Input: i8042 - add Dell XPS M1530 to nomux list 355a0ec ALSA: hda - Add missing analog-mux mixer creation for STAC9200 6cc4abe pxafb: only initialize the smart panel thread when dealing with a smartpanel 1ec26db pxafb: introduce LCD_TYPE_MASK and use it. 6cd10f8 x86, voyager: fix smp generic helper voyager breakage 2002c69 sched: release buddies on yield 1d6782b V4L/DVB (9516): cx18: Move DVB buffer transfer handling from irq handler to work_queue c9ff1b6 V4L/DVB (9557): gspca: Small changes for the sensor HV7131B in zc3xx. 03bf756 V4L/DVB (9556): gspca: Bad init sequence for sensor HV7131B in zc3xx. 93d0f03 V4L/DVB (9549): gspca: Fix a typo in one of gspca chips name. 465f8a8 V4L/DVB (9515): cx18: Use correct Mailbox IRQ Ack values and misc IRQ handling cleanup 17ff61c V4L/DVB (9493): kconfig patch 349d042 V4L/DVB (9527): af9015: fix compile warnings 891bd13 V4L/DVB (9524): af9013: fix bug in status reading 4e6b610 V4L/DVB (9511): cx18: Mark CX18_CPU_DE_RELEASE_MDL as a slow API call f056d29 V4L/DVB (9510): cx18: Fix write retries for registers that always change - part 2. 58ae1c2 V4L/DVB (9506): ivtv/cx18: fix test whether modules should be loaded or not. 1a8dc86 V4L/DVB (9499): cx88-mpeg: final fix for analogue only compilation + de-alloc fix 9c8e0a2 V4L/DVB (9496): cx88-blackbird: bugfix: cx88-blackbird-mpeg-users a248237 V4L/DVB (9495): cx88-blackbird: bugfix: cx88-blackbird-poll-fix dec0c46 V4L/DVB (9494): anysee: initialize anysee_usb_mutex statically 8268c8f V4L/DVB (9492): unplug oops from dvb_frontend_init... 7c34158 V4L/DVB (9486): ivtv/ivtvfb: no longer experimental 6a95ec5 V4L/DVB (9485): ivtv: remove incorrect V4L1 & tvaudio dependency 6aadf82 V4L/DVB (9482): Documentation, especially regarding audio and informational links f3a3e88 V4L/DVB (9475): cx18: Disable write retries for registers that always change - part 1. 8182ff6 V4L/DVB (9372): Minor fixes to the saa7110 driver 0d0f1e0 V4L/DVB (9369): Documentation update for cx88 b058e3f V4L/DVB (9368): VBI fix for cx88 cards e8deeae V4L/DVB (9367a): Add gspca driver and subdrivers to MAINTAINERS bdb6ee3 V4L/DVB (9358): CinergyT2: fix Kconfig typo 0e8bac9 V4L/DVB (9357): cx88-dvb: Fix Oops in case i2c bus failed to register d522af5 V4L/DVB (9356): [PATCH] saa7134: fix resource map sanity check conflict 74084d3 V4L/DVB (9355): de-BKL cafe_ccic.c c7f09db V4L/DVB (9352): Add some missing compat32 ioctls a24ddee3 V4L/DVB (9351): ibmcam: Fix a regression caused by a482f327ff56bc3cf53176a7eb736cea47291a1d 69df96c V4L/DVB (9350): radio-si470x: add support for kworld usb radio e62b475 V4L/DVB (9348): dtv5100: add dependency on zl10353 3b37a15 V4L/DVB (9346): Optimization: Enable gate in a symmetric/disciplined way, f737899 V4L/DVB (9337b): remove tuner-3036 and dpc7146 drivers from feature-removal-schedule.txt 6a13378 V4L/DVB (9337a): HID: Don't allow KWorld radio fm700 be handled by usb hid drivers 5d5254f timers: handle HRTIMER_CB_IRQSAFE_UNLOCKED correctly from softirq context 347c8d8 [netdrvr] smc911x: fix for driver resume (and compilation warning) cf3760d RDMA/cxgb3: deadlock in iw_cxgb3 can cause hang when configuring interface. f9ee388 cxgb3 - Limit multiqueue setting to msi-x 9f64306 cxgb3 - eeprom read fixes 8c2f5fa myri10ge: fix stop/go ordering even more cb8fdc6 powerpc: Update desktop/server defconfigs 77eb50a powerpc: Fix msr check in compat_sys_swapcontext 45b86a9 Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent 0baf823 drm/i915: Move legacy breadcrumb out of the reserved status page area afa21e0 drm/i915: Filter pci devices based on PCI_CLASS_DISPLAY_VGA 19b7232 libata: fix last_reset timestamp handling 44901a9 libata: Avoid overflow in ata_tf_read_block() when tf->hba_lbal > 127 a12d6c9 [libata] pata_pcmcia: another memory card support bc170e6 [libata] pata_sch: notice attached slave devices bd6b52a [libata] pata_cs553*.c: cleanup kernel-doc 78538bf drm/radeon: map registers at load time 5d8e6bb drm: Remove infrastructure for supporting i915's vblank swapping. bd95e0a i915: Remove racy delayed vblank swap ioctl. d3e74d0 i915: Don't whine when pci_enable_msi() fails. 6a47baa i915: Don't attempt to short-circuit object_wait_rendering by checking domains. ad42ca8 i915: Clean up sarea pointers on leavevt 881ee98 i915: Save/restore MCHBAR_RENDER_STANDBY on GM965/GM45 ad474ca fix for account_group_exec_runtime(), make sure ->signal can't be freed under rq->lock df02c6f dsa: fix master interface allmulti/promisc handling 14ee674 dsa: fix skb->pkt_type when mac address of slave interface differs 5cd33db net: fix setting of skb->tail in skb_recycle_check() b971e7a net: fix /proc/net/snmp as memory corruptor 013cd39 mac80211: fix a buffer overrun in station debug code 4143c5c ring-buffer: prevent infinite looping on time stamping bf5e651 ftrace: disable tracing on resize b7b45f4 netfilter: payload_len is be16, add size of struct rather than size of pointer 87b30a6 ipv6: fix ip6_mr_init error path 1207e79 [4/4] dca: fixup initialization dependency 12ccea2 [3/4] I/OAT: fix async_tx.callback checking c2c0b4c [2/4] I/OAT: fix dma_pin_iovec_pages() error handling c3d4f44 [1/4] I/OAT: fix channel resources free for not allocated channels fd0fcf5 ssb: Fix DMA-API compilation for non-PCI systems 9581483 SSB: hide empty sub menu ae99286 nohz: disable tick_nohz_kick_tick() for now 309f796 vlan: Fix typos in proc output string ee5f80a irq: call __irq_enter() before calling the tick_idle_check 4694516 x86: Make NUMA on 32-bit depend on BROKEN 1f8f5cf KEYS: Make request key instantiate the per-user keyrings ec5d765 powerpc: Repair device bindings documentation 12de512 sparc64: Update defconfig. 29b1432 Revert "sparc: correct section of current_pc()" 6c1e183 ocfs2: Check search result in ocfs2_xattr_block_get() de29c08 ocfs2: fix printk related build warnings in xattr.c c435400 ocfs2: truncate outstanding block after direct io failure 80bcaf3 ocfs2/xattr: Proper hash collision handle in bucket division 4c1bbf1 ocfs2: return 0 in page_mkwrite to let VFS retry. ae0dff6 ocfs2: Set journal descriptor to NULL after journal shutdown d326479 ocfs2: Fix check of return value of ocfs2_start_trans() in xattr.c. b99835c ocfs2: Let inode be really deleted when ocfs2_mknod_locked() fails 87cfa00 ocfs2: Fix checking of return value of new_inode() fa38e92 ocfs2: Fix check of return value of ocfs2_start_trans() 8573f79 ocfs2: Fix some typos in xattr annotations. 63fd775 ocfs2: Remove unused ocfs2_restore_xattr_block(). 54f443f ocfs2: Don't repeat ocfs2_xattr_block_find() eb6ff23 ocfs2: Specify appropriate journal access for new xattr buckets. bd60bd3 ocfs2: Check errors from ocfs2_xattr_update_xattr_search() b37c4d8 ocfs2: Don't return -EFAULT from a corrupt xattr entry. f6087fb ocfs2: Check xattr block signatures properly. c988fd0 ocfs2: add handler_map array bounds checking ceb1eba ocfs2: remove duplicate definition in xattr 0030e00 ocfs2: fix function declaration and definition in xattr c3cb682 ocfs2: fix license in xattr 3ad4f59 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 6b42566 Merge branches 'topic/fix/misc' and 'topic/fix/hda' into for-linus 2542483 ALSA: hda - Make the HP EliteBook 8530p use AD1884A model laptop 5ceb1a0 x86: HPET: enter hpet_interrupt_handler with interrupts disabled 89d77a1 x86: HPET: read from HPET_Tn_CMP() not HPET_T0_CMP 1de5b08 x86: HPET: convert WARN_ON to WARN_ON_ONCE 8a8bc22 libata: revert convert-to-block-tagging patches acca4f4 sh: Handle fixmap TLB eviction more coherently. 5ac5c4d sched: clean up debug info 0f101fa ALSA: gusextreme: Fix build errors f7160c7 Linux 2.6.28-rc4 9a65583 regression: disable timer peek-ahead for 2.6.28 6f1e940 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes bf1b364 kbuild: Fixup deb-pkg target to generate separate firmware deb f131e24 irq: fix typo 6c2e940 x86: apic honour irq affinity which was set in early boot 612e368 genirq: fix the affinity setting in setup_irq f6d87f4 genirq: keep affinities set from userspace across free/request_irq() b176945 pcmcia: ensure correct logging in do_io_probe 43e6171 Don't ask twice about not including staging drivers 980fc29 pcmcia: add another pata/ide ID 8b805ef Merge branch 'for-2.6.28' of git://linux-nfs.org/~bfields/linux cb56d98 Merge branch 'cpus4096' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip b726e92 Fix nfsd truncation of readdir results 984f2f3 cpumask: introduce new API, without changing anything, v3 6209344 net: unix: fix inflight counting bug in garbage collector 058e373 clarify usage expectations for cnt32_to_63() 02cabab Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc 3044646 x86: move iomap.h to the new include location bbda14d regulator: Use menuconfig in Kconfig 3ae7e2e ALSA: hdsp: check for iobox and upload firmware during ioctl 00c9ddd ALSA: HDSP: check for io box before uploading firmware 65b92e5 ALSA: hda - Add another HP model (6730s) for AD1884A ebb4c65 [ARM] iop: iop3xx needs registers mapped uncached+unbuffered 7bfc0b2 [ARM] versatile: correct MMC clock rate 0fded35 [ARM] realview: correct MMC clock rate 72bc2b1 [ARM] 5329/1: Feroceon: fix feroceon_l2_inv_range d1b2686 mmc: struct device - replace bus_id with dev_name(), dev_set_name() 493890e mmc: increase SD write timeout for crappy cards ea37194 powerpc: Updated Freescale PPC related defconfigs 2b48706 powerpc: Update QE/CPM2 usb_ctlr structures for USB support 33d2d78 powerpc/86xx: Correct SOC bus-frequency in GE Fanuc SBC610 DTS 0a0e9e0 powerpc: Fix Book-E watchdog timer interval setting b41d6fe powerpc/fsl-booke: Fix synchronization bug w/local tlb invalidates a622cf6 Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip af3e48f Merge branch 'oprofile-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip d8af8582 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6 c5d7124 Fix __pfn_to_page(pfn) for CONFIG_DISCONTIGMEM=y 7cbaef9 sched: optimize sched_clock() a bit 0d12cdd sched: improve sched_clock() performance b8f6ec2 Staging: make usbip depend on CONFIG_NET 0c4b954 Staging: only build the tree if we really want to 2dba1b5 thinkpad_acpi: fingers off backlight if video.ko is serving this functionality 540b8bb sony-laptop: fingers off backlight if video.ko is serving this functionality a598c82 msi-laptop: fingers off backlight if video.ko is serving this functionality 7d5c89a fujitsu-laptop: fingers off backlight if video.ko is serving this functionality a2bf8c0 eeepc-laptop: fingers off backlight if video.ko is serving this functionality 29454f1 compal: fingers off backlight if video.ko is serving this functionality 6766fec asus-acpi: fingers off backlight if video.ko is serving this functionality febf2d9 Acer-WMI: fingers off backlight if video.ko is serving this functionality c3d6de6 ACPI video: if no ACPI backlight support, use vendor drivers 22c13f9 ACPI: video: Ignore devices that aren't present in hardware a1a8d33 Delete an unwanted return statement at evgpe.c a0d84a9 ACPI: update debug parameter documentation 87b5860 ACPI: turn off all debug output by default bdd7279 ACPI: add driver component definitions to sysfs debug_layers 44342f9 ACPI: fix conflicting component definitions 89595b8 ACPI: consolidate ACPI_*_COMPONENT definitions in acpi_drivers.h d21cf3c ACPI EC: Fix regression due to use of uninitialized variable 01aab51 Merge branch 'oprofile-for-tip' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile into x86/urgent fed4d59 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 17c1f07 [IA64] Reserve elfcorehdr memory in CONFIG_CRASH_DUMP 8ec96e7 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 cb11017 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 55477eb Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 0477406 Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 7c64ade oprofile: Fix p6 counter overflow check 54e7ff9 trivial: MPT fusion - remove long dead code 8638545 trivial: dmi_scan typo 1538a09 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 52c642f sched: fine-tune SD_SIBLING_INIT 1480098 sched: fine-tune SD_MC_INIT 23712a9 ext4: add checksum calculation when clearing UNINIT flag in ext4_new_inode ed9b3e3 ext4: Mark the buffer_heads as dirty and uptodate after prepare_write cd83e42 cpumask: new API, v2 7e2d9bf UBIFS: allow for gaps when dirtying the LPT ffaf4c7 Merge branch 'davem-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 d05fdf3 xen: make sure stray alias mappings are gone before pinning 9b46333 vmap: cope with vm_unmap_aliases before vmalloc_init() 939a951 [netdrvr] usb/hso: Cleanup rfkill error handling cd17fa7 sfc: Correct address of gPXE boot configuration in EEPROM 08809b2 el3_common_init() should be __devinit, not __init db053c6 hso: rfkill type should be WWAN c1adbb9 mlx4_en: Start port error flow bug fix ca3273f sched: fix memory leak in a failure path f29c9b1 sched: fix a bug in sched domain degenerate 70e9067 af_key: mark policy as dead before destroying 4feba70 ACPI: avoid empty file name in sysfs 14a63ba ACPI: use macro to replace hard number afeb12b fujitsu-laptop: fix section mismatch warning 0794469 ACPI: struct device - replace bus_id with dev_name(), dev_set_name() 2d59f6a PNP: add Bjorn Helgaas as PNP co-maintainer d17cb18 Revert "ACPI: Ingore the RESET_REG_SUP bit when using ACPI reset mechanism" f4a9bc4 intel_menlow: MAINTAINERS d65dcdc intel_menlow: Add comment documenting legal GTHS values 5b53ed6 ACPI: 80 column adherence and spelling fix (no functional change) b26e928 ACPI: Behave uniquely based on processor declaration definition type ad93a76 ACPI: Disambiguate processor declaration type 4bab0ea Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 fcef783 alsa: fix snd_BUG_on() and friends a15a82f Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 9144f38 Merge master.kernel.org:/home/rmk/linux-2.6-arm 6572a28 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 e252f4d Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block ca409d6 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2e93960 Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog 71fe3fc Merge branch 'for-linus' of git://neil.brown.name/md 38407aa Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 39d4e58 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs 067ab19 Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 3b53fbf net: Fix recursive descent in __scm_destroy(). 7597bc9 Fix accidental implicit cast in HR-timer conversion c361948 Merge git://git.infradead.org/mtd-2.6 c330293 fat: i_blocks warning fix 9ca59f4 fat: ->i_pos race fix 2bdf67e fat: mmu_private race fix 0e75f5d fat: Add printf attribute to fat_fs_panic() fa93ca1 fat: Fix _fat_bmap() race dfc209c fat: Fix ATTR_RO for directory 9183482 fat: Fix ATTR_RO in the case of (~umask & S_WUGO) == 0 9c0aa1b fat: Cleanup FAT attribute stuff 45cfbe3 fat: Cleanup msdos_lookup() 1c13a24 fat: Kill d_invalidate() in vfat_lookup() 1b52467 fat: Fix/Cleanup dcache handling for vfat 068f5ae vfat: Fix vfat_find() error path in vfat_lookup() a993b54 fat: use fat_detach() in fat_clear_inode() 5e35dd4 fat: Fix fat_ent_update_ptr() for FAT12 d3dfa82 fat: improve fat_hash() 52e9d9f fat: cleanup fat_parse_long() error handling 53472bc fat: use generic_file_llseek() for directory 7decd1c fat: Fix and cleanup timestamp conversion 9e975da fat: split include/msdos_fs.h 990e194 fat: move fs/vfat/* and fs/msdos/* to fs/fat 8986ab5 fat: document additional vfat mount options c1dfda3 SAM9 watchdog: update for moved headers 80bb26d rtc-cmos: fix boot log message 06a7f05 atmel_serial: keep clock off when it's not needed b225d44 Documentation/kernel-parameters.txt: update 'isolcpus' kernel option a684e7d fbdev: fix fb_compat_ioctl() deadlocks a70dcb9 memory hotplug: fix page_zone() calculation in test_pages_isolated() c87591b ext3: wait on all pending commits in ext3_sync_fs fbdd126 mm/oom_kill.c: fix badness() kerneldoc fd96feb cciss: add P700m to list of supported controllers 1b6bcdb Documentation/email-clients.txt: add some info about gmail 24eb089 cgroups: fix invalid cgrp->dentry before cgroup has been completely removed b41ad14 vmemmap: warn about page_structs with remote distance 0aedadf mm: move migrate_prep out from under mmap_sem 17a1217 fbdev: add new framebuffer driver for Fujitsu MB862xx GDCs b4416d2 oom: do not dump task state for non thread group leaders 953a647 MAINTAINERS: make IOAT easier to find 18229df hugetlb: pull gigantic page initialisation out of the default path 69d177c hugetlbfs: handle pages higher order than MAX_ORDER 22bece0 cciss: fix regression firmware not displayed in procfs 4044430 cciss: fix sysfs broken symlink regression 96b0317 autofs4: collect version check return bc9c406 autofs4: correct offset mount expire check eefc488 hwmon: applesmc: add support for iMac 8 a666032 hwmon: applesmc: add support for Macbook Pro 5 181209a hwmon: applesmc: add support for Macbook 5 6e3530f hwmon: applesmc: add support for iMac 5 9e3a4af rtc: fix handling of missing tm_year data when reading alarms a564738 vt: incomplete initialization of vc_tab_stop 2197d18 cpqarry: fix return value of cpqarray_init() 77ca728 cciss: new hardware support 47cb2ed x86, xen: fix use of pgd_page now that it really does return a page f8d570a net: Fix recursive descent in __scm_destroy(). ac51d83 ext4: calculate journal credits correctly d54bc4e iwl3945: fix deadlock on suspend 14b5433 iwl3945: do not send scan command if channel count zero 2420ebc iwl3945: clear scanning bits upon failure c793033 ath5k: correct handling of rx status fields 0feec9d zd1211rw: Add 2 device IDs 4a9d916 Fix logic error in rfkill_check_duplicity 964d277 iwlagn: avoid sleep in softirq context 502c12e iwlwifi: clear scanning bits upon failure 934f6c3 Revert "ath5k: honor FIF_BCN_PRBRESP_PROMISC in STA mode" 8950d89 ACPI: remove CONFIG_ACPI_EC fefe5ab ACPI: remove CONFIG_ACPI_POWER 5b88147 ACPI: SBS: remove useless acpi_cm_sbs_init() initcall 5704d62 ACPI: remove comments about debug layer/level to use 6597cb8 Merge branch 'omap-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 878708f Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/xscaleiop c7cf72d [ARM] xsc3: fix xsc3_l2_inv_range b1cce6b [ARM] mm: fix page table initialization 62ee054 [IA64] fix boot panic caused by offline CPUs 1547a01 [IA64] reorder Kconfig options to match x86 ab4f2ee [ARM] fix naming of MODULE_START / MODULE_END 8d00450 Revert "x86: default to reboot via ACPI" b9c3bfc x86: align DirectMap in /proc/meminfo 31f2971 Merge branch 'iommu-fixes-2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into x86/urgent 80be308 AMD IOMMU: fix lazy IO/TLB flushing in unmap path 2ad4988 UBI: Don't exit from ubi_thread until kthread_should_stop() is true b77bcb0 UBI: fix EBADMSG handling e84461a UBIFS: fix compilation warnings e2966cb MAINTAINERS: change UBI/UBIFS git tree URLs 0ecb952 UBIFS: endian handling fixes and annotations 069782a UBIFS: remove printk f0e625c [WATCHDOG] SAM9 watchdog - supported on all SAM9 and CAP9 processors b954f6f [WATCHDOG] SAM9 watchdog - update for moved headers d6f0f39 x86: add smp_mb() before sending INVALIDATE_TLB_VECTOR f1cd14a md: linear: Fix a division by zero bug for very small arrays. 7db282f x86: remove VISWS and PARAVIRT around NR_IRQS puzzle 2d3854a cpumask: introduce new API, without changing anything 7838c15 Block: use round_jiffies_up() 9c133c4 Add round_jiffies_up and related routines 89f9749 block: fix __blkdev_get() for removable devices 561920a generic-ipi: fix the smp_mb() placement e78042e blk: move blk_delete_timer call in end_that_request_last 2920ebb block: add timer on blkdev_dequeue_request() not elv_next_request() f92131c bio: define __BIOVEC_PHYS_MERGEABLE 4338178 block: remove unused ll_new_mergeable() da85f86 x86: mention ACPI in top-level Kconfig menu a53a6c8 md: fix bug in raid10 recovery. cb3ac42 md: revert the recent addition of a call to the BLKRRPART ioctl. 1b48976 x86: size NR_IRQS on 32-bit systems the same way as 64-bit c78d0cf x86: don't allow nr_irqs > NR_IRQS dc8a084 [JFFS2] fix race condition in jffs2_lzo_compress() b0d5fde net/9p: fix printk format warnings 9f3e9bb unsigned fid->fid cannot be negative 1558c62 9p: rdma: remove duplicated #include 45abdf1 p9: Fix leak of waitqueue in request allocation path 82b189e 9p: Remove unneeded free of fcall for Flush cac23d6 9p: Make all client spin locks IRQ safe 517ac45 9p: rdma: Set trans prior to requesting async connection ops 7f3abf5 IB/mlx4: Set umem field to NULL in mlx4_ib_alloc_fast_reg_mr() 939c228 [SCSI] scsi_error regression: Fix idempotent command handling d94ce6c [SCSI] zfcp: Fix hexdump data in s390dbf traces 7ea633f [SCSI] zfcp: fix erp timeout cleanup for port open requests 77fd949 [SCSI] zfcp: Wait for port scan to complete when setting adapter online adc90da [SCSI] zfcp: Fix cast warning 3765138 [SCSI] zfcp: Fix request list handling in error path 88f2a97 [SCSI] zfcp: fix mempool usage for status_read requests 45316a8 [SCSI] zfcp: fix req_list_locking. 26816f1 [SCSI] zfcp: Dont clear reference from SCSI device to unit 3869a17 [SCSI] qla2xxx: Update version number to 8.02.01-k9. 5bff55d [SCSI] qla2xxx: Return a FAILED status when abort mailbox-command fails. 680d7db [SCSI] qla2xxx: Do not honour max_vports from firmware for 2G ISPs and below. 737faec [SCSI] qla2xxx: Use pci_disable_rom() to manipulate PCI config space. 821b399 [SCSI] qla2xxx: Correct Atmel flash-part handling. 6b0eea2 [SCSI] megaraid: fix mega_internal_command oops 9fcd18c sched: re-tune balancing 467622e [MTD] [NOR] Fix cfi_send_gen_cmd handling of x16 devices in x8 mode (v4) 518a09e tcp: Fix recvmsg MSG_PEEK influence of blocking behavior. efb9a8c netfilter: netns ct: walk netns list under RTNL 959973b ALSA: hda - Add a quirk for MEDION MD96630 e3ec6cf ipv6: fix run pending DAD when interface becomes ready b22cecd net/9p: fix printk format warnings 0247909 sched: fix buddies for group scheduling 4793241 sched: backward looking buddy d95f98d sched: fix fair preempt check f4b6755 sched: cleanup fair task selection 072ba49 ftrace: fix breakage in bin_fmt results 454666e powerpc: Fix "unused variable" warning in pci_dlpar.c 9c8b4af powerpc/cell: Fix compile error in ras.c fce4d58 powerpc/ps3: Fix compile error in ps3-lpm.c 9b22ea5 net: fix packet socket delivery in rx irq handler 79654a7 xfrm: Have af-specific init_tempsel() initialize family field of temporary selector 5c32f62 ARM: OMAP: Fix define for twl4030 irqs 5241473 ARM: OMAP: Fix get_irqnr_and_base to clear spurious interrupt bits e621f26 ARM: OMAP: Fix debugfs_create_*'s error checking method for arm/plat-omap 85d7a07 ARM: OMAP: Fix compiler warnings in gpmc.c f2b3fdc [IA64] Build VT-D iommu support into generic kernel d8d54b0 [IA64] remove dead BIO_VMERGE_BOUNDARY definition 6a2d26f [IA64] remove duplicated #include from pci-dma.c 9979aa7 [IA64] use common header for software IO/TLB aca14f3 [IA64] fix the difference between node_mem_map and node_start_pfn d6e1519 [IA64] Add error_recovery_info field to SAL section header 7576f68 [IA64] Add UV watchlist support. 9ac8d3f [IA64] Simplify SGI uv vs. sn2 driver issues 7b0f5df mlx4_core: Fix unused variable warning d2ed5cb [ARM] fix VFP+softfloat binaries e4ab1b3 x86/docs: remove noirqbalance param docs c4dc507 ALSA: hda - Limit the number of GPIOs show in proc 42ec632 ftrace: ftrace.txt version update 9b803c0 ftrace: update txt document 70de9a9 x86: don't use tsc_khz to calculate lpj if notsc is passed c2d06fe intel_menlow: don't set max_state a negative value 14ce0cb ext4: wait on all pending commits in ext4_sync_fs() d94e99a ext4: Convert to host order before using the values. ae2d9fb ext4: fix missing ext4_unlock_group in error path 88e7df0 PCI: fix range check on mmapped sysfs resource files f5dafca PCI: remove excess kernel-doc notation a7b930c PCI: annotate return value of pci_ioremap_bar with __iomem bffadff PCI: fix VPD limit quirk for Broadcom 5708S c527c8a [CIFS] Can't rely on iov length and base when kernel_recvmsg returns error 73557af x86, voyager: fix smp_intr_init() compile breakage 6336936 RDMA/nes: Mitigate compatibility issue regarding PCIe write credits 2e36954 RDMA/nes: Fix CQ allocation scheme for multicast receive queue apps 35c6d69 RDMA/nes: Correct handling of PBL resources 5880ff1 RDMA/nes: Reindent mis-indented spinlocks 2423840 jbd2: deregister proc on failure in jbd2_journal_init_inode 8c3f25d jbd2: don't give up looking for space so easily in __jbd2_log_wait_for_space e219cca jbd: don't give up looking for space so easily in __log_wait_for_space e689597 pcmcia: add braces in error path 2509698 pcmcia: struct device - replace bus_id with dev_name(), dev_set_name() 3e879f6 pcmcia: setup resource information for pseudo multifunction devices. 60df3de pcmcia: fix indentation & braces disagreement - add braces af2b0a1 RDMA/cxgb3: Fix too-big reserved field zeroing in iwch_post_zb_read() 99219b4 Cell OProfile: Incorrect local array size in activate spu profiling function 22cffe4 Revert "Cell OProfile: Incorrect local array size in activate spu profiling function" b27cf88 [JFFS2] Fix lack of locking in thread_should_wake() 8449fc3 ieee1394: dv1394: fix possible deadlock in multithreaded clients 638570b ieee1394: raw1394: fix possible deadlock in multithreaded clients 233976e ieee1394: struct device - replace bus_id with dev_name(), dev_set_name() a1f6481 firewire: struct device - replace bus_id with dev_name(), dev_set_name() ae9b940 AMD IOMMU: fix detection of NP capable IOMMUs 9a5415f Input: elo - fix format string in elo driver b2c2f30 Blackfin arch: fix bug - shared lib function in L2 failed be called 72edff8 Blackfin arch: fix incorrect limit check for bf54x check_gpio a10101d Blackfin arch: fix bug - Cpufreq assumes clocks in kHz and not Hz. da986b9 Blackfin arch: dont warn when running a kernel on the oldest supported silicon ed206fa ACPI: bugfix reporting of event handler status 676962d ACPI: fan: Delete the strict check in power transition b1b57fb ACPI: fix de-reference bug in power resource driver bd2b064 sony-laptop: Ignore missing _DIS method on pic device 7f6b2e7 Blackfin arch: fix bug - kernel build with write back policy fails to be booted up 39e96c8 Blackfin arch: fix bug - dmacopy test case fail on all platform 2830c9f i7300_idle: Kconfig, show menu only on x86_64 4ee1c45 Blackfin arch: Fix typo when adding CONFIG_DEBUG_VERBOSE a8b56f2 IB/ipath: Fix RDMA write with immediate copy of last packet cae042a oprofile: fix memory ordering fa448d6 Cell OProfile: Incorrect local array size in activate spu profiling function ba8b453 Change UTF8 chars in Kconfig help text about Oprofile AMD barcelona 3b1f26a Blackfin arch: don't copy bss when copying L1 6776cf4 Blackfin arch: fix bug - Fail to boot jffs2 kernel for BF561 with SMP patch 6a0bfff Blackfin arch: handle case of d_path() returning error in decode_address() f04de50 [JFFS2] Fix build failure with !CONFIG_JFFS2_FS_WRITEBUFFER 0f0254f [MTD] [NAND] OMAP2: remove duplicated #include from 220ca310a53200b4bfbc7c4c6e365eea284ec44f (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Documentation/00-INDEX | 44 +- Documentation/ABI/testing/sysfs-c2port | 88 + Documentation/ABI/testing/sysfs-firmware-acpi | 16 +- Documentation/DMA-API.txt | 8 +- Documentation/PCI/00-INDEX | 2 + Documentation/{ => PCI}/MSI-HOWTO.txt | 0 Documentation/acpi/debug.txt | 148 ++ Documentation/blockdev/00-INDEX | 16 + Documentation/{ => blockdev}/README.DAC960 | 0 Documentation/blockdev/cciss.txt | 171 ++ Documentation/{ => blockdev}/cpqarray.txt | 0 Documentation/{ => blockdev}/floppy.txt | 0 Documentation/{ => blockdev}/nbd.txt | 0 Documentation/{ => blockdev}/paride.txt | 0 Documentation/{ => blockdev}/ramdisk.txt | 0 Documentation/c2port.txt | 90 + Documentation/cciss.txt | 168 -- Documentation/cgroups/freezer-subsystem.txt | 21 +- Documentation/computone.txt | 522 ----- Documentation/cpu-freq/user-guide.txt | 12 + Documentation/email-clients.txt | 25 + Documentation/feature-removal-schedule.txt | 24 - Documentation/filesystems/ocfs2.txt | 3 - Documentation/filesystems/proc.txt | 27 + .../filesystems/ramfs-rootfs-initramfs.txt | 12 +- Documentation/filesystems/vfat.txt | 32 +- Documentation/filesystems/xip.txt | 9 +- Documentation/ftrace.txt | 171 +- Documentation/hwmon/adt7462 | 67 + Documentation/hwmon/lis3lv02d | 49 + Documentation/ics932s401 | 31 + Documentation/input/input-programming.txt | 3 +- Documentation/ioctl/00-INDEX | 10 + Documentation/{ => ioctl}/ioctl-number.txt | 0 Documentation/kernel-parameters.txt | 132 +- Documentation/networking/phy.txt | 2 +- Documentation/powerpc/booting-without-of.txt | 65 +- Documentation/printk-formats.txt | 35 + Documentation/serial/00-INDEX | 24 + Documentation/{ => serial}/README.cycladesZ | 0 Documentation/serial/computone.txt | 522 +++++ Documentation/{ => serial}/digiepca.txt | 0 Documentation/{ => serial}/hayes-esp.txt | 0 Documentation/{ => serial}/moxa-smartio | 0 Documentation/{ => serial}/riscom8.txt | 0 Documentation/{ => serial}/rocket.txt | 0 Documentation/{ => serial}/specialix.txt | 0 Documentation/{ => serial}/stallion.txt | 0 Documentation/{ => serial}/sx.txt | 0 Documentation/{ => serial}/tty.txt | 0 Documentation/sound/alsa/ALSA-Configuration.txt | 5 +- Documentation/spi/spi-summary | 2 +- Documentation/tracers/mmiotrace.txt | 6 +- Documentation/video4linux/README.cx88 | 4 +- Documentation/video4linux/si470x.txt | 118 ++ Documentation/w1/masters/omap-hdq | 46 + MAINTAINERS | 58 +- Makefile | 4 +- arch/Kconfig | 4 +- arch/alpha/kernel/pci.c | 2 +- arch/alpha/kernel/smp.c | 6 +- arch/alpha/kernel/traps.c | 4 +- arch/arm/configs/corgi_defconfig | 2 +- arch/arm/include/asm/dma-mapping.h | 13 +- arch/arm/include/asm/hardware/iop3xx-adma.h | 5 +- arch/arm/include/asm/hardware/iop_adma.h | 6 + arch/arm/include/asm/mach/map.h | 13 +- arch/arm/include/asm/memory.h | 12 +- arch/arm/include/asm/system.h | 4 + arch/arm/kernel/elf.c | 6 +- arch/arm/kernel/module.c | 8 +- arch/arm/mach-clps711x/include/mach/hardware.h | 22 - arch/arm/mach-clps7500/core.c | 6 +- arch/arm/mach-clps7500/include/mach/hardware.h | 6 +- arch/arm/mach-h720x/include/mach/boards.h | 6 +- arch/arm/mach-integrator/include/mach/platform.h | 19 +- arch/arm/mach-iop13xx/include/mach/adma.h | 3 +- arch/arm/mach-omap2/gpmc.c | 6 +- arch/arm/mach-pxa/include/mach/pxafb.h | 1 + arch/arm/mach-pxa/mioa701.c | 2 +- arch/arm/mach-pxa/mioa701_bootresume.S | 1 + arch/arm/mach-pxa/palmtx.c | 150 ++- arch/arm/mach-pxa/pcm990-baseboard.c | 1 + arch/arm/mach-pxa/reset.c | 7 +- arch/arm/mach-pxa/spitz.c | 4 +- arch/arm/mach-realview/clock.c | 2 +- arch/arm/mach-realview/include/mach/platform.h | 19 +- arch/arm/mach-s3c2410/include/mach/spi-gpio.h | 1 + arch/arm/mach-versatile/clock.c | 2 +- arch/arm/mach-versatile/include/mach/platform.h | 18 +- arch/arm/mm/cache-feroceon-l2.c | 4 +- arch/arm/mm/cache-xsc3l2.c | 4 +- arch/arm/mm/mmu.c | 117 +- arch/arm/mm/proc-v7.S | 12 +- arch/arm/plat-iop/setup.c | 5 +- arch/arm/plat-omap/clock.c | 20 +- arch/arm/plat-omap/gpio.c | 5 +- arch/arm/plat-omap/include/mach/entry-macro.S | 4 +- arch/arm/plat-omap/include/mach/irqs.h | 2 +- arch/arm/plat-omap/include/mach/pm.h | 2 +- arch/blackfin/include/asm/bfin-global.h | 2 +- arch/blackfin/include/asm/dma-mapping.h | 6 +- arch/blackfin/kernel/bfin_gpio.c | 2 +- arch/blackfin/kernel/cplb-nompu/cplbinit.c | 9 +- arch/blackfin/kernel/process.c | 7 +- arch/blackfin/kernel/setup.c | 12 +- arch/blackfin/kernel/traps.c | 11 +- arch/blackfin/mach-common/cache.S | 8 +- arch/blackfin/mach-common/cpufreq.c | 14 +- arch/blackfin/mach-common/entry.S | 2 +- arch/blackfin/mm/sram-alloc.c | 8 +- arch/frv/kernel/sys_frv.c | 17 +- arch/ia64/Kconfig | 19 +- arch/ia64/hp/common/hwsw_iommu.c | 9 +- arch/ia64/include/asm/intrinsics.h | 2 +- arch/ia64/include/asm/io.h | 24 - arch/ia64/include/asm/machvec.h | 22 +- arch/ia64/include/asm/meminit.h | 1 - arch/ia64/include/asm/paravirt_privop.h | 13 + arch/ia64/include/asm/ptrace.h | 2 - arch/ia64/include/asm/sal.h | 15 +- arch/ia64/include/asm/sn/sn_sal.h | 45 + arch/ia64/kernel/acpi.c | 29 +- arch/ia64/kernel/entry.S | 1 + arch/ia64/kernel/head.S | 2 +- arch/ia64/kernel/mca.c | 2 +- arch/ia64/kernel/paravirt.c | 2 +- arch/ia64/kernel/pci-dma.c | 3 - arch/ia64/kernel/setup.c | 9 +- arch/ia64/kvm/Kconfig | 2 + arch/ia64/kvm/Makefile | 2 +- arch/ia64/kvm/kvm-ia64.c | 12 +- arch/ia64/kvm/optvfault.S | 11 +- arch/ia64/kvm/vcpu.h | 5 + arch/ia64/mm/discontig.c | 1 - arch/ia64/sn/kernel/io_init.c | 2 +- arch/ia64/uv/kernel/setup.c | 6 + arch/ia64/xen/hypercall.S | 2 +- arch/m32r/kernel/head.S | 4 +- arch/m32r/kernel/vmlinux.lds.S | 1 + arch/m68k/configs/amiga_defconfig | 126 +- arch/m68k/configs/apollo_defconfig | 115 +- arch/m68k/configs/atari_defconfig | 130 +- arch/m68k/configs/bvme6000_defconfig | 112 +- arch/m68k/configs/hp300_defconfig | 115 +- arch/m68k/configs/mac_defconfig | 125 +- arch/m68k/configs/multi_defconfig | 129 +- arch/m68k/configs/mvme147_defconfig | 112 +- arch/m68k/configs/mvme16x_defconfig | 112 +- arch/m68k/configs/q40_defconfig | 125 +- arch/m68k/configs/sun3_defconfig | 124 +- arch/m68k/configs/sun3x_defconfig | 115 +- arch/m68k/kernel/ints.c | 2 +- arch/mips/include/asm/bug.h | 29 +- arch/mips/include/asm/mach-rc32434/gpio.h | 2 + arch/mips/include/asm/mach-rc32434/rb.h | 14 +- arch/mips/include/asm/ptrace.h | 4 - arch/mips/include/asm/time.h | 2 +- arch/mips/kernel/csrc-r4k.c | 2 +- arch/mips/mm/sc-ip22.c | 2 +- arch/mips/mti-malta/malta-amon.c | 6 +- arch/mips/rb532/devices.c | 2 +- arch/mips/rb532/gpio.c | 193 +-- arch/mn10300/Kconfig.debug | 9 + arch/mn10300/kernel/gdb-stub.c | 24 +- arch/mn10300/kernel/module.c | 35 +- arch/mn10300/mm/misalignment.c | 538 +++++-- arch/parisc/include/asm/parisc-device.h | 4 +- arch/parisc/include/asm/posix_types.h | 3 +- arch/parisc/include/asm/ptrace.h | 2 - arch/parisc/include/asm/smp.h | 2 - arch/parisc/kernel/drivers.c | 6 +- arch/parisc/kernel/ptrace.c | 10 +- arch/parisc/kernel/traps.c | 43 +- arch/powerpc/boot/dts/gef_sbc610.dts | 2 +- arch/powerpc/boot/dts/mpc832x_rdb.dts | 4 +- arch/powerpc/boot/dts/mpc8349emitx.dts | 16 +- arch/powerpc/boot/dts/mpc8572ds.dts | 2 +- arch/powerpc/configs/40x/virtex_defconfig | 1176 ++++++++++++ arch/powerpc/configs/44x/virtex5_defconfig | 234 ++- arch/powerpc/configs/52xx/cm5200_defconfig | 169 ++- arch/powerpc/configs/52xx/lite5200b_defconfig | 206 ++- arch/powerpc/configs/52xx/motionpro_defconfig | 168 ++- arch/powerpc/configs/52xx/pcm030_defconfig | 182 ++- arch/powerpc/configs/52xx/tqm5200_defconfig | 180 ++- arch/powerpc/configs/83xx/asp8347_defconfig | 121 +- arch/powerpc/configs/83xx/mpc8313_rdb_defconfig | 158 +- arch/powerpc/configs/83xx/mpc8315_rdb_defconfig | 158 +- arch/powerpc/configs/83xx/mpc832x_mds_defconfig | 125 +- arch/powerpc/configs/83xx/mpc832x_rdb_defconfig | 136 +- arch/powerpc/configs/83xx/mpc834x_itx_defconfig | 171 ++- arch/powerpc/configs/83xx/mpc834x_itxgp_defconfig | 121 +- arch/powerpc/configs/83xx/mpc834x_mds_defconfig | 123 +- arch/powerpc/configs/83xx/mpc836x_mds_defconfig | 126 +- arch/powerpc/configs/83xx/mpc836x_rdk_defconfig | 119 +- arch/powerpc/configs/83xx/mpc837x_mds_defconfig | 123 +- arch/powerpc/configs/83xx/mpc837x_rdb_defconfig | 155 +- arch/powerpc/configs/83xx/sbc834x_defconfig | 119 +- arch/powerpc/configs/85xx/ksi8560_defconfig | 87 +- arch/powerpc/configs/85xx/mpc8536_ds_defconfig | 143 ++- arch/powerpc/configs/85xx/mpc8540_ads_defconfig | 74 +- arch/powerpc/configs/85xx/mpc8544_ds_defconfig | 143 ++- arch/powerpc/configs/85xx/mpc8560_ads_defconfig | 90 +- arch/powerpc/configs/85xx/mpc8568mds_defconfig | 93 +- arch/powerpc/configs/85xx/mpc8572_ds_defconfig | 143 ++- arch/powerpc/configs/85xx/mpc85xx_cds_defconfig | 91 +- arch/powerpc/configs/85xx/sbc8548_defconfig | 75 +- arch/powerpc/configs/85xx/sbc8560_defconfig | 78 +- arch/powerpc/configs/85xx/stx_gp3_defconfig | 115 +- arch/powerpc/configs/85xx/tqm8540_defconfig | 91 +- arch/powerpc/configs/85xx/tqm8541_defconfig | 96 +- arch/powerpc/configs/85xx/tqm8548_defconfig | 98 +- arch/powerpc/configs/85xx/tqm8555_defconfig | 96 +- arch/powerpc/configs/85xx/tqm8560_defconfig | 96 +- arch/powerpc/configs/86xx/gef_sbc610_defconfig | 283 +++- arch/powerpc/configs/86xx/mpc8610_hpcd_defconfig | 177 ++- arch/powerpc/configs/86xx/mpc8641_hpcn_defconfig | 175 ++- arch/powerpc/configs/86xx/sbc8641d_defconfig | 152 +- arch/powerpc/configs/adder875_defconfig | 69 +- arch/powerpc/configs/c2k_defconfig | 179 ++- arch/powerpc/configs/chrp32_defconfig | 159 ++- arch/powerpc/configs/ep8248e_defconfig | 113 +- arch/powerpc/configs/ep88xc_defconfig | 67 +- arch/powerpc/configs/g5_defconfig | 142 ++- arch/powerpc/configs/iseries_defconfig | 114 +- arch/powerpc/configs/linkstation_defconfig | 122 +- arch/powerpc/configs/maple_defconfig | 142 ++- arch/powerpc/configs/mgcoge_defconfig | 234 ++- arch/powerpc/configs/mgsuvd_defconfig | 107 +- arch/powerpc/configs/mpc5200_defconfig | 573 +++++-- arch/powerpc/configs/mpc7448_hpc2_defconfig | 78 +- arch/powerpc/configs/mpc8272_ads_defconfig | 113 +- arch/powerpc/configs/mpc83xx_defconfig | 156 +- arch/powerpc/configs/mpc85xx_defconfig | 145 ++- arch/powerpc/configs/mpc866_ads_defconfig | 77 +- arch/powerpc/configs/mpc86xx_defconfig | 144 ++- arch/powerpc/configs/mpc885_ads_defconfig | 67 +- arch/powerpc/configs/pmac32_defconfig | 160 ++- arch/powerpc/configs/ppc40x_defconfig | 92 +- arch/powerpc/configs/ppc44x_defconfig | 92 +- arch/powerpc/configs/ppc64_defconfig | 174 ++- arch/powerpc/configs/ppc6xx_defconfig | 286 ++- arch/powerpc/configs/pq2fads_defconfig | 137 +- arch/powerpc/configs/prpmc2800_defconfig | 126 +- arch/powerpc/configs/pseries_defconfig | 169 ++- arch/powerpc/configs/storcenter_defconfig | 83 +- arch/powerpc/include/asm/immap_cpm2.h | 9 +- arch/powerpc/include/asm/immap_qe.h | 5 +- arch/powerpc/include/asm/kvm_ppc.h | 2 + arch/powerpc/include/asm/mmu-hash64.h | 1 - arch/powerpc/include/asm/ptrace.h | 2 - arch/powerpc/kernel/cpu_setup_44x.S | 7 +- arch/powerpc/kernel/dma.c | 1 + arch/powerpc/kernel/entry_64.S | 8 +- arch/powerpc/kernel/misc_32.S | 4 + arch/powerpc/kernel/prom_parse.c | 7 +- arch/powerpc/kernel/signal_32.c | 18 +- arch/powerpc/kernel/sysfs.c | 2 + arch/powerpc/kvm/44x_tlb.c | 8 + arch/powerpc/kvm/powerpc.c | 1 + arch/powerpc/mm/40x_mmu.c | 16 +- arch/powerpc/mm/hugetlbpage.c | 2 +- arch/powerpc/mm/numa.c | 122 +- arch/powerpc/platforms/cell/axon_msi.c | 36 +- arch/powerpc/platforms/cell/ras.c | 1 + arch/powerpc/platforms/cell/smp.c | 9 +- arch/powerpc/platforms/cell/spufs/file.c | 3 + arch/powerpc/platforms/pseries/pci_dlpar.c | 1 - arch/powerpc/sysdev/bestcomm/Kconfig | 9 +- arch/powerpc/sysdev/mpic.c | 11 +- arch/powerpc/sysdev/xilinx_intc.c | 4 +- arch/s390/defconfig | 74 +- arch/s390/include/asm/pgtable.h | 2 - arch/s390/include/asm/ptrace.h | 4 +- arch/s390/include/asm/syscall.h | 28 +- arch/s390/kernel/asm-offsets.c | 2 +- arch/s390/kernel/compat_signal.c | 2 +- arch/s390/kernel/entry.S | 41 +- arch/s390/kernel/entry64.S | 34 +- arch/s390/kernel/init_task.c | 2 +- arch/s390/kernel/process.c | 3 + arch/s390/kernel/ptrace.c | 2 +- arch/s390/kernel/setup.c | 4 +- arch/s390/kernel/signal.c | 6 +- arch/s390/kernel/sys_s390.c | 2 +- arch/s390/kernel/time.c | 13 +- arch/s390/kernel/topology.c | 11 +- arch/s390/kernel/vmlinux.lds.S | 3 +- arch/s390/kvm/sigp.c | 5 + arch/sh/include/asm/io.h | 4 + arch/sh/include/asm/pgtable.h | 6 + arch/sh/kernel/cpu/sh4a/setup-sh7723.c | 6 +- arch/sh/kernel/early_printk.c | 3 +- arch/sh/kernel/timers/timer-tmu.c | 2 +- arch/sh/lib/copy_page.S | 11 +- arch/sh/mm/Makefile_32 | 2 +- arch/sh/mm/Makefile_64 | 2 +- arch/sh/mm/init.c | 12 +- arch/sh/mm/mmap.c | 31 + arch/sh/mm/pg-sh4.c | 17 + arch/sparc/include/asm/ptrace_64.h | 2 - arch/sparc/include/asm/termbits.h | 11 +- arch/sparc/include/asm/unistd_32.h | 3 +- arch/sparc/include/asm/unistd_64.h | 3 +- arch/sparc/kernel/cpu.c | 2 +- arch/sparc/kernel/head.S | 3 +- arch/sparc/kernel/of_device.c | 4 +- arch/sparc/kernel/smp.c | 4 +- arch/sparc/kernel/sun4d_smp.c | 4 +- arch/sparc/kernel/sun4m_smp.c | 2 +- arch/sparc/kernel/systbls.S | 2 +- arch/sparc/kernel/trampoline.S | 4 +- arch/sparc/kernel/vmlinux.lds.S | 1 + arch/sparc/mm/srmmu.c | 14 +- arch/sparc64/defconfig | 232 ++- arch/sparc64/kernel/smp.c | 4 +- arch/sparc64/kernel/sys32.S | 13 +- arch/sparc64/kernel/systbls.S | 4 +- arch/sparc64/lib/user_fixup.c | 2 +- arch/sparc64/mm/init.c | 2 +- arch/x86/Kconfig | 7 +- arch/x86/boot/tty.c | 2 +- arch/x86/include/asm/acpi.h | 1 - arch/x86/include/asm/ds.h | 6 +- {include/asm-x86 => arch/x86/include/asm}/iomap.h | 0 arch/x86/include/asm/iommu.h | 1 - arch/x86/include/asm/irq_vectors.h | 20 +- arch/x86/include/asm/mmzone_32.h | 4 + arch/x86/include/asm/msr.h | 2 - arch/x86/include/asm/pci_64.h | 14 - arch/x86/include/asm/ptrace.h | 2 - arch/x86/include/asm/topology.h | 7 +- arch/x86/include/asm/tsc.h | 8 +- arch/x86/include/asm/uaccess_64.h | 2 +- arch/x86/include/asm/unistd_64.h | 4 +- arch/x86/include/asm/voyager.h | 1 + arch/x86/kernel/Makefile | 2 +- arch/x86/kernel/acpi/boot.c | 1 - arch/x86/kernel/amd_iommu.c | 9 +- arch/x86/kernel/amd_iommu_init.c | 6 +- arch/x86/kernel/apic.c | 2 +- arch/x86/kernel/cpu/cpufreq/powernow-k8.c | 18 +- arch/x86/kernel/cpu/cpufreq/powernow-k8.h | 17 +- arch/x86/kernel/ds.c | 81 +- arch/x86/kernel/early-quirks.c | 18 - arch/x86/kernel/es7000_32.c | 9 +- arch/x86/kernel/hpet.c | 4 +- arch/x86/kernel/i387.c | 2 +- arch/x86/kernel/io_apic.c | 60 +- arch/x86/kernel/kvmclock.c | 2 +- arch/x86/kernel/pci-calgary_64.c | 2 +- arch/x86/kernel/reboot.c | 15 +- arch/x86/kernel/setup.c | 2 +- arch/x86/kernel/tlb_32.c | 6 + arch/x86/kernel/tlb_64.c | 5 + arch/x86/kernel/tsc.c | 10 +- arch/x86/kernel/tsc_sync.c | 4 + arch/x86/kernel/xsave.c | 2 +- arch/x86/kvm/Kconfig | 2 + arch/x86/kvm/i8254.c | 4 +- arch/x86/kvm/mmu.c | 4 +- arch/x86/kvm/paging_tmpl.h | 1 + arch/x86/kvm/vmx.c | 7 +- arch/x86/kvm/vmx.h | 1 + arch/x86/mach-voyager/setup.c | 2 +- arch/x86/mach-voyager/voyager_smp.c | 18 +- arch/x86/mm/numa_32.c | 35 + arch/x86/mm/pageattr.c | 8 +- arch/x86/oprofile/op_model_ppro.c | 11 +- arch/x86/pci/fixup.c | 25 +- arch/x86/power/hibernate_32.c | 4 + arch/x86/xen/enlighten.c | 5 +- arch/x86/xen/mmu.c | 32 +- arch/x86/xen/smp.c | 2 +- arch/x86/xen/xen-ops.h | 2 +- block/blk-barrier.c | 4 +- block/blk-core.c | 30 +- block/blk-map.c | 8 +- block/blk-merge.c | 21 - block/blk-settings.c | 4 + block/blk-timeout.c | 20 +- block/elevator.c | 7 - block/genhd.c | 4 +- block/ioctl.c | 7 +- drivers/acpi/Kconfig | 22 +- drivers/acpi/Makefile | 8 +- drivers/acpi/ac.c | 3 +- drivers/acpi/acpi_memhotplug.c | 1 - drivers/acpi/battery.c | 12 +- drivers/acpi/blacklist.c | 401 +---- drivers/acpi/bus.c | 11 +- drivers/acpi/button.c | 3 +- drivers/acpi/cm_sbs.c | 7 - drivers/acpi/container.c | 1 - drivers/acpi/debug.c | 15 + drivers/acpi/ec.c | 98 +- drivers/acpi/events/evgpe.c | 2 - drivers/acpi/events/evxfevnt.c | 41 +- drivers/acpi/fan.c | 1 - drivers/acpi/glue.c | 40 + drivers/acpi/osl.c | 104 +- drivers/acpi/pci_link.c | 11 +- drivers/acpi/pci_root.c | 6 - drivers/acpi/power.c | 11 +- drivers/acpi/processor_core.c | 93 +- drivers/acpi/processor_idle.c | 1 - drivers/acpi/processor_perflib.c | 2 +- drivers/acpi/processor_thermal.c | 1 - drivers/acpi/processor_throttling.c | 2 +- drivers/acpi/reboot.c | 25 +- drivers/acpi/scan.c | 52 +- drivers/acpi/sleep/main.c | 40 +- drivers/acpi/sleep/proc.c | 2 +- drivers/acpi/sleep/wakeup.c | 8 +- drivers/acpi/system.c | 48 +- drivers/acpi/tables/tbfadt.c | 2 +- drivers/acpi/thermal.c | 9 +- drivers/acpi/toshiba_acpi.c | 2 - drivers/acpi/utils.c | 16 +- drivers/acpi/video.c | 42 +- drivers/acpi/video_detect.c | 267 +++ drivers/acpi/wmi.c | 2 +- drivers/ata/ata_piix.c | 15 + drivers/ata/libata-core.c | 89 +- drivers/ata/libata-eh.c | 21 +- drivers/ata/libata-scsi.c | 23 +- drivers/ata/libata-sff.c | 13 +- drivers/ata/libata.h | 19 +- drivers/ata/pata_cs5535.c | 1 - drivers/ata/pata_cs5536.c | 1 - drivers/ata/pata_pcmcia.c | 1 + drivers/ata/pata_rb532_cf.c | 15 +- drivers/ata/pata_sch.c | 2 +- drivers/atm/horizon.c | 2 +- drivers/block/Kconfig | 29 +- drivers/block/cciss.c | 37 +- drivers/block/cpqarray.c | 7 +- drivers/block/floppy.c | 2 +- drivers/block/ub.c | 20 +- drivers/block/xen-blkfront.c | 8 +- drivers/block/xsysace.c | 23 +- drivers/char/Kconfig | 24 +- drivers/char/agp/uninorth-agp.c | 2 +- drivers/char/ipmi/ipmi_msghandler.c | 20 +- drivers/char/ipmi/ipmi_si_intf.c | 16 +- drivers/char/isicom.c | 6 +- drivers/char/istallion.c | 4 +- drivers/char/mxser.c | 3 +- drivers/char/sonypi.c | 4 +- drivers/char/specialix.c | 2 +- drivers/char/tty_io.c | 15 +- drivers/char/vt.c | 10 +- drivers/char/xilinx_hwicap/xilinx_hwicap.c | 9 +- drivers/cpuidle/cpuidle.c | 4 +- drivers/crypto/talitos.c | 4 +- drivers/dca/dca-core.c | 2 +- drivers/dma/dmaengine.c | 4 +- drivers/dma/dmatest.c | 22 +- drivers/dma/ioat_dma.c | 11 +- drivers/dma/iop-adma.c | 11 +- drivers/dma/iovlock.c | 17 +- drivers/edac/i5000_edac.c | 4 +- drivers/edac/i82875p_edac.c | 14 +- drivers/firewire/fw-device.c | 14 +- drivers/firewire/fw-ohci.c | 2 +- drivers/firewire/fw-sbp2.c | 7 +- drivers/firmware/dmi_scan.c | 6 +- drivers/gpio/Kconfig | 8 + drivers/gpio/Makefile | 1 + drivers/gpio/gpiolib.c | 2 +- drivers/gpio/xilinx_gpio.c | 235 +++ drivers/gpu/drm/drm_drv.c | 12 +- drivers/gpu/drm/drm_irq.c | 84 +- drivers/gpu/drm/drm_lock.c | 9 - drivers/gpu/drm/drm_stub.c | 1 - drivers/gpu/drm/i915/i915_dma.c | 23 +- drivers/gpu/drm/i915/i915_drv.h | 30 +- drivers/gpu/drm/i915/i915_gem.c | 82 +- drivers/gpu/drm/i915/i915_irq.c | 676 ++----- drivers/gpu/drm/i915/i915_opregion.c | 18 +- drivers/gpu/drm/i915/i915_reg.h | 3 + drivers/gpu/drm/i915/i915_suspend.c | 15 + drivers/gpu/drm/mga/mga_dma.c | 8 + drivers/gpu/drm/mga/mga_irq.c | 5 - drivers/gpu/drm/r128/r128_drv.c | 6 + drivers/gpu/drm/r128/r128_drv.h | 1 + drivers/gpu/drm/r128/r128_irq.c | 2 +- drivers/gpu/drm/radeon/radeon_cp.c | 21 +- drivers/gpu/drm/radeon/radeon_drv.h | 2 +- drivers/gpu/drm/radeon/radeon_irq.c | 5 - drivers/gpu/drm/via/via_irq.c | 1 - drivers/gpu/drm/via/via_map.c | 11 +- drivers/hid/hid-apple.c | 17 +- drivers/hid/hid-core.c | 19 +- drivers/hid/hid-ids.h | 7 + drivers/hid/hid-pl.c | 2 + drivers/hid/hidraw.c | 30 +- drivers/hid/usbhid/hid-core.c | 43 +- drivers/hid/usbhid/usbhid.h | 1 - drivers/hwmon/Kconfig | 29 + drivers/hwmon/Makefile | 2 + drivers/hwmon/adt7462.c | 2002 ++++++++++++++++++++ drivers/hwmon/adt7470.c | 75 +- drivers/hwmon/adt7473.c | 89 +- drivers/hwmon/applesmc.c | 56 +- drivers/hwmon/ibmaem.c | 18 +- drivers/hwmon/lis3lv02d.c | 581 ++++++ drivers/hwmon/lis3lv02d.h | 149 ++ drivers/hwmon/lm85.c | 52 +- drivers/i2c/busses/i2c-parport.c | 4 +- drivers/i2c/busses/i2c-sh_mobile.c | 3 +- drivers/i2c/chips/isp1301_omap.c | 65 +- drivers/i2c/i2c-core.c | 2 +- drivers/ide/alim15x3.c | 2 +- drivers/ide/amd74xx.c | 11 +- drivers/ide/icside.c | 4 +- drivers/ide/ide-cs.c | 1 + drivers/ide/ide-io.c | 30 +- drivers/ide/ide-iops.c | 9 +- drivers/ide/ide-probe.c | 3 +- drivers/idle/Kconfig | 3 +- drivers/ieee1394/dv1394.c | 10 +- drivers/ieee1394/highlevel.c | 25 +- drivers/ieee1394/hosts.c | 4 +- drivers/ieee1394/hosts.h | 4 + drivers/ieee1394/nodemgr.c | 14 +- drivers/ieee1394/raw1394.c | 9 +- drivers/ieee1394/sbp2.c | 14 +- drivers/infiniband/hw/cxgb3/iwch_provider.c | 6 - drivers/infiniband/hw/cxgb3/iwch_qp.c | 1 - drivers/infiniband/hw/ehca/ehca_classes.h | 4 +- drivers/infiniband/hw/ehca/ehca_irq.c | 44 +- drivers/infiniband/hw/ehca/ehca_main.c | 3 +- drivers/infiniband/hw/ehca/ehca_qp.c | 31 +- drivers/infiniband/hw/ehca/ehca_reqs.c | 51 +- drivers/infiniband/hw/ipath/ipath_ruc.c | 10 +- drivers/infiniband/hw/mlx4/cq.c | 5 + drivers/infiniband/hw/mlx4/mr.c | 1 + drivers/infiniband/hw/nes/nes.c | 16 + drivers/infiniband/hw/nes/nes_hw.h | 1 + drivers/infiniband/hw/nes/nes_verbs.c | 64 +- drivers/infiniband/ulp/ipoib/ipoib_main.c | 6 +- drivers/input/ff-memless.c | 5 +- drivers/input/keyboard/atkbd.c | 27 +- drivers/input/misc/cm109.c | 37 +- drivers/input/mouse/hgpk.c | 2 +- drivers/input/serio/i8042-x86ia64io.h | 14 + drivers/input/tablet/wacom.h | 13 +- drivers/input/tablet/wacom_sys.c | 228 ++- drivers/input/tablet/wacom_wac.c | 160 ++- drivers/input/tablet/wacom_wac.h | 4 + drivers/input/touchscreen/elo.c | 2 +- drivers/input/xen-kbdfront.c | 6 +- drivers/isdn/hisax/config.c | 16 +- drivers/isdn/i4l/isdn_net.c | 6 +- drivers/macintosh/rack-meter.c | 10 +- drivers/md/dm-mpath.c | 8 +- drivers/md/dm-raid1.c | 1 + drivers/md/dm-stripe.c | 4 +- drivers/md/dm-table.c | 2 +- drivers/md/dm.c | 34 +- drivers/md/linear.c | 2 + drivers/md/md.c | 6 - drivers/md/raid10.c | 2 +- drivers/media/dvb/dm1105/dm1105.c | 2 +- drivers/media/dvb/dvb-core/dvb_frontend.c | 7 +- drivers/media/dvb/dvb-usb/Kconfig | 3 +- drivers/media/dvb/dvb-usb/af9015.c | 22 +- drivers/media/dvb/dvb-usb/af9015.h | 1 - drivers/media/dvb/dvb-usb/anysee.c | 4 +- drivers/media/dvb/dvb-usb/dib0700.h | 5 +- drivers/media/dvb/dvb-usb/dib0700_core.c | 16 + drivers/media/dvb/dvb-usb/dib0700_devices.c | 139 ++- drivers/media/dvb/dvb-usb/dvb-usb-urb.c | 6 +- drivers/media/dvb/dvb-usb/usb-urb.c | 19 +- drivers/media/dvb/frontends/af9013.c | 6 +- drivers/media/dvb/siano/sms-cards.c | 2 +- drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c | 15 +- drivers/media/dvb/ttusb-dec/ttusb_dec.c | 7 + drivers/media/radio/Kconfig | 14 + drivers/media/radio/radio-si470x.c | 19 +- drivers/media/video/cafe_ccic.c | 6 +- drivers/media/video/compat_ioctl32.c | 3 + drivers/media/video/cx18/cx18-driver.c | 17 +- drivers/media/video/cx18/cx18-driver.h | 20 +- drivers/media/video/cx18/cx18-dvb.c | 23 + drivers/media/video/cx18/cx18-dvb.h | 1 + drivers/media/video/cx18/cx18-io.c | 17 +- drivers/media/video/cx18/cx18-io.h | 17 + drivers/media/video/cx18/cx18-irq.c | 96 +- drivers/media/video/cx18/cx18-irq.h | 4 +- drivers/media/video/cx18/cx18-mailbox.c | 6 +- drivers/media/video/cx18/cx18-queue.c | 14 +- drivers/media/video/cx18/cx18-scb.h | 40 +- drivers/media/video/cx88/cx88-blackbird.c | 12 +- drivers/media/video/cx88/cx88-dvb.c | 5 + drivers/media/video/cx88/cx88-mpeg.c | 28 +- drivers/media/video/cx88/cx88-video.c | 10 +- drivers/media/video/cx88/cx88.h | 1 + drivers/media/video/em28xx/em28xx-audio.c | 33 +- drivers/media/video/em28xx/em28xx-core.c | 58 +- drivers/media/video/em28xx/em28xx-i2c.c | 10 +- drivers/media/video/em28xx/em28xx-video.c | 140 +- drivers/media/video/em28xx/em28xx.h | 6 + drivers/media/video/gspca/Kconfig | 144 +- drivers/media/video/gspca/conex.c | 3 + drivers/media/video/gspca/finepix.c | 8 + drivers/media/video/gspca/gspca.c | 56 +- drivers/media/video/gspca/gspca.h | 6 +- drivers/media/video/gspca/pac7311.c | 3 + drivers/media/video/gspca/spca501.c | 3 + drivers/media/video/gspca/spca505.c | 4 + drivers/media/video/gspca/spca561.c | 3 + drivers/media/video/gspca/vc032x.c | 3 + drivers/media/video/gspca/zc3xx.c | 15 +- drivers/media/video/ivtv/Kconfig | 5 +- drivers/media/video/ivtv/ivtv-driver.c | 26 +- drivers/media/video/s2255drv.c | 2 +- drivers/media/video/saa7110.c | 4 +- drivers/media/video/saa7134/saa7134-core.c | 3 +- drivers/media/video/tvaudio.c | 231 ++- drivers/media/video/usbvideo/ibmcam.c | 12 +- drivers/message/fusion/mptlan.c | 108 -- drivers/mfd/da903x.c | 2 +- drivers/mfd/wm8350-i2c.c | 15 +- drivers/misc/Kconfig | 16 +- drivers/misc/Makefile | 2 + drivers/misc/acer-wmi.c | 6 + drivers/misc/asus-laptop.c | 10 +- drivers/misc/c2port/Kconfig | 35 + drivers/misc/c2port/Makefile | 3 + drivers/misc/c2port/c2port-duramar2150.c | 158 ++ drivers/misc/c2port/core.c | 1003 ++++++++++ drivers/misc/compal-laptop.c | 12 +- drivers/misc/eeepc-laptop.c | 12 +- drivers/misc/fujitsu-laptop.c | 43 +- drivers/misc/ics932s401.c | 515 +++++ drivers/misc/intel_menlow.c | 10 +- drivers/misc/msi-laptop.c | 16 +- drivers/misc/sgi-gru/Makefile | 4 + drivers/misc/sgi-gru/grufile.c | 2 +- drivers/misc/sony-laptop.c | 6 +- drivers/misc/thinkpad_acpi.c | 86 +- drivers/mmc/core/bus.c | 3 +- drivers/mmc/core/core.c | 6 +- drivers/mmc/core/host.c | 5 +- drivers/mmc/core/sdio_bus.c | 3 +- drivers/mmc/host/mmc_spi.c | 2 +- drivers/mmc/host/sdhci.c | 2 +- drivers/mmc/host/tifm_sd.c | 16 +- drivers/mtd/chips/cfi_cmdset_0002.c | 13 - drivers/mtd/chips/jedec_probe.c | 10 +- drivers/mtd/maps/cdb89712.c | 11 + drivers/mtd/maps/h720x-flash.c | 6 +- drivers/mtd/ubi/eba.c | 2 +- drivers/mtd/ubi/scan.c | 2 +- drivers/mtd/ubi/wl.c | 3 +- drivers/net/Kconfig | 3 +- drivers/net/Makefile | 2 +- drivers/net/atl1e/atl1e_hw.c | 4 - drivers/net/atlx/atl1.c | 17 +- drivers/net/atlx/atl2.c | 8 +- drivers/net/bnx2.c | 9 +- drivers/net/chelsio/sge.c | 4 - drivers/net/cxgb3/cxgb3_main.c | 4 +- drivers/net/cxgb3/t3_hw.c | 8 +- drivers/net/e100.c | 20 +- drivers/net/e1000/e1000_ethtool.c | 8 +- drivers/net/e1000/e1000_main.c | 1 + drivers/net/e1000e/e1000.h | 5 + drivers/net/e1000e/ethtool.c | 8 +- drivers/net/e1000e/netdev.c | 26 +- drivers/net/e1000e/param.c | 25 + drivers/net/gianfar.c | 15 +- drivers/net/hp-plus.c | 2 +- drivers/net/igb/igb_ethtool.c | 8 +- drivers/net/igb/igb_main.c | 12 +- drivers/net/ipg.c | 8 +- drivers/net/ixgbe/ixgbe_main.c | 68 +- drivers/net/jme.c | 21 +- drivers/net/macvlan.c | 3 + drivers/net/mlx4/en_netdev.c | 10 +- drivers/net/mlx4/en_params.c | 30 +- drivers/net/mlx4/main.c | 8 + drivers/net/mlx4/mlx4.h | 10 +- drivers/net/mlx4/mlx4_en.h | 8 +- drivers/net/mlx4/port.c | 39 +- drivers/net/mv643xx_eth.c | 5 +- drivers/net/myri10ge/myri10ge.c | 4 +- drivers/net/niu.c | 293 +++- drivers/net/niu.h | 13 + drivers/net/pcmcia/axnet_cs.c | 2 +- drivers/net/pcmcia/ibmtr_cs.c | 2 +- drivers/net/pcmcia/pcnet_cs.c | 1 - drivers/net/phy/marvell.c | 66 + drivers/net/phy/mdio_bus.c | 2 +- drivers/net/phy/phy_device.c | 47 +- drivers/net/phy/vitesse.c | 64 +- drivers/net/pppol2tp.c | 1 + drivers/net/qla3xxx.c | 19 +- drivers/net/sfc/ethtool.c | 4 +- drivers/net/sh_eth.c | 4 +- drivers/net/sis900.c | 1 - drivers/net/smc911x.c | 16 +- drivers/net/smc91x.c | 10 +- drivers/net/spider_net.c | 4 - drivers/net/sungem.c | 2 +- drivers/net/ucc_geth_ethtool.c | 6 +- drivers/net/usb/asix.c | 8 +- drivers/net/usb/hso.c | 12 +- drivers/net/via-velocity.c | 2 +- drivers/net/wireless/ath5k/base.c | 37 +- drivers/net/wireless/ath5k/base.h | 1 + drivers/net/wireless/ath5k/debug.c | 10 +- drivers/net/wireless/ath5k/desc.c | 16 +- drivers/net/wireless/ath9k/beacon.c | 10 +- drivers/net/wireless/ath9k/recv.c | 19 +- drivers/net/wireless/hostap/hostap_wlan.h | 5 +- drivers/net/wireless/iwlwifi/iwl-agn.c | 19 +- drivers/net/wireless/iwlwifi/iwl-dev.h | 3 +- drivers/net/wireless/iwlwifi/iwl-rx.c | 26 +- drivers/net/wireless/iwlwifi/iwl-scan.c | 7 + drivers/net/wireless/iwlwifi/iwl3945-base.c | 14 +- drivers/net/wireless/libertas_tf/if_usb.c | 2 +- drivers/net/wireless/rtl8187_dev.c | 3 + drivers/net/wireless/zd1211rw/zd_usb.c | 2 + drivers/net/xen-netfront.c | 6 +- drivers/oprofile/event_buffer.c | 6 +- drivers/parport/Kconfig | 2 +- drivers/parport/parport_serial.c | 2 + drivers/pci/intel-iommu.c | 6 +- drivers/pci/pci-acpi.c | 15 +- drivers/pci/pci-sysfs.c | 2 +- drivers/pci/pci.c | 6 +- drivers/pci/quirks.c | 53 +- drivers/pci/rom.c | 6 +- drivers/pcmcia/cistpl.c | 3 +- drivers/pcmcia/cs.c | 14 +- drivers/pcmcia/ds.c | 11 +- drivers/pcmcia/pcmcia_resource.c | 3 +- drivers/pcmcia/rsrc_nonstatic.c | 6 +- drivers/ps3/ps3-lpm.c | 1 + drivers/rapidio/rio-scan.c | 4 +- drivers/rapidio/rio.c | 2 +- drivers/regulator/Kconfig | 15 +- drivers/rtc/Kconfig | 29 + drivers/rtc/Makefile | 3 + drivers/rtc/interface.c | 2 +- drivers/rtc/rtc-cmos.c | 2 +- drivers/rtc/rtc-ds1390.c | 220 +++ drivers/rtc/rtc-rx8581.c | 281 +++ drivers/rtc/rtc-starfire.c | 66 +- drivers/rtc/rtc-sun4v.c | 69 +- drivers/rtc/rtc-wm8350.c | 514 +++++ drivers/s390/block/dasd.c | 5 + drivers/s390/char/sclp_cmd.c | 3 + drivers/s390/cio/device.c | 4 + drivers/s390/kvm/kvm_virtio.c | 4 +- drivers/s390/scsi/zfcp_aux.c | 3 +- drivers/s390/scsi/zfcp_ccw.c | 4 +- drivers/s390/scsi/zfcp_dbf.c | 42 +- drivers/s390/scsi/zfcp_dbf.h | 8 +- drivers/s390/scsi/zfcp_erp.c | 8 +- drivers/s390/scsi/zfcp_fc.c | 7 +- drivers/s390/scsi/zfcp_fsf.c | 43 +- drivers/s390/scsi/zfcp_scsi.c | 14 +- drivers/scsi/aacraid/linit.c | 4 +- drivers/scsi/advansys.c | 4 + drivers/scsi/dpt_i2o.c | 4 +- drivers/scsi/gdth.c | 12 +- drivers/scsi/ibmvscsi/ibmvscsi.c | 2 +- drivers/scsi/megaraid.c | 11 +- drivers/scsi/megaraid.h | 2 +- drivers/scsi/megaraid/megaraid_sas.c | 3 +- drivers/scsi/qla2xxx/qla_def.h | 1 - drivers/scsi/qla2xxx/qla_init.c | 26 +- drivers/scsi/qla2xxx/qla_mbx.c | 2 +- drivers/scsi/qla2xxx/qla_os.c | 1 + drivers/scsi/qla2xxx/qla_sup.c | 19 +- drivers/scsi/qla2xxx/qla_version.h | 2 +- drivers/scsi/scsi_error.c | 8 +- drivers/scsi/scsi_lib.c | 23 +- drivers/scsi/stex.c | 2 +- drivers/serial/atmel_serial.c | 17 +- drivers/serial/sh-sci.c | 22 +- drivers/serial/sh-sci.h | 16 +- drivers/serial/uartlite.c | 4 +- drivers/spi/atmel_spi.c | 3 + drivers/spi/au1550_spi.c | 26 +- drivers/spi/mpc52xx_psc_spi.c | 5 +- drivers/spi/pxa2xx_spi.c | 24 +- drivers/spi/spi_imx.c | 70 +- drivers/spi/spi_s3c24xx_gpio.c | 3 +- drivers/spi/spidev.c | 4 +- drivers/ssb/Kconfig | 5 +- drivers/staging/Kconfig | 20 +- drivers/staging/usbip/Kconfig | 2 +- drivers/telephony/phonedev.c | 2 +- drivers/usb/class/cdc-acm.c | 9 +- drivers/usb/core/message.c | 1 + drivers/usb/core/sysfs.c | 2 +- drivers/usb/core/urb.c | 4 +- drivers/usb/gadget/f_acm.c | 4 + drivers/usb/gadget/f_rndis.c | 3 +- drivers/usb/gadget/fsl_qe_udc.c | 3 + drivers/usb/gadget/fsl_usb2_udc.c | 3 + drivers/usb/gadget/pxa25x_udc.c | 14 +- drivers/usb/host/Kconfig | 23 +- drivers/usb/host/ehci-hcd.c | 25 +- drivers/usb/host/ehci-pci.c | 24 + drivers/usb/host/ehci-ps3.c | 1 + drivers/usb/host/ehci-sched.c | 4 +- drivers/usb/host/ehci.h | 12 +- drivers/usb/host/isp1760-if.c | 22 +- drivers/usb/host/ohci-ps3.c | 3 +- drivers/usb/host/r8a66597-hcd.c | 5 +- drivers/usb/misc/sisusbvga/sisusb.c | 1 + drivers/usb/misc/vstusb.c | 2 +- drivers/usb/mon/mon_bin.c | 5 +- drivers/usb/musb/musb_core.c | 6 +- drivers/usb/musb/musb_debug.h | 4 +- drivers/usb/musb/musb_host.c | 159 +- drivers/usb/musb/musb_host.h | 1 + drivers/usb/musb/omap2430.c | 2 + drivers/usb/musb/tusb6010.c | 2 +- drivers/usb/serial/console.c | 1 + drivers/usb/serial/cp2101.c | 3 + drivers/usb/serial/ir-usb.c | 2 +- drivers/usb/serial/option.c | 41 + drivers/usb/storage/Kconfig | 4 +- drivers/usb/storage/unusual_devs.h | 52 +- drivers/video/Kconfig | 32 + drivers/video/Makefile | 1 + drivers/video/atmel_lcdfb.c | 2 +- drivers/video/aty/radeon_accel.c | 21 +- drivers/video/aty/radeon_base.c | 18 + drivers/video/backlight/da903x.c | 2 + drivers/video/backlight/lcd.c | 11 +- drivers/video/cirrusfb.c | 3 +- drivers/video/console/fbcon.c | 9 +- drivers/video/fbmem.c | 65 +- drivers/video/macfb.c | 74 +- drivers/video/mb862xx/Makefile | 5 + drivers/video/mb862xx/mb862xx_reg.h | 138 ++ drivers/video/mb862xx/mb862xxfb.c | 1061 +++++++++++ drivers/video/mb862xx/mb862xxfb.h | 83 + drivers/video/omap/Makefile | 1 - drivers/video/omap/lcd_sx1.c | 327 ---- drivers/video/pxafb.c | 5 +- drivers/video/tmiofb.c | 10 +- drivers/video/via/viafbdev.c | 17 +- drivers/video/xen-fbfront.c | 6 +- drivers/video/xilinxfb.c | 5 +- drivers/w1/masters/Kconfig | 9 +- drivers/w1/masters/Makefile | 1 + drivers/w1/masters/omap_hdq.c | 725 +++++++ drivers/w1/slaves/Kconfig | 7 + drivers/w1/slaves/Makefile | 2 +- drivers/w1/slaves/w1_bq27000.c | 123 ++ drivers/w1/w1.h | 1 + drivers/w1/w1_io.c | 3 +- drivers/watchdog/Kconfig | 8 +- drivers/watchdog/at91sam9_wdt.c | 2 +- drivers/watchdog/booke_wdt.c | 5 +- drivers/watchdog/hpwdt.c | 5 +- drivers/watchdog/iTCO_vendor_support.c | 31 +- drivers/watchdog/iTCO_wdt.c | 164 +- drivers/watchdog/mtx-1_wdt.c | 4 + drivers/xen/balloon.c | 9 +- fs/Makefile | 2 - fs/autofs4/dev-ioctl.c | 5 +- fs/autofs4/expire.c | 19 +- fs/block_dev.c | 23 +- fs/buffer.c | 1 + fs/cifs/CHANGES | 6 +- fs/cifs/cifs_debug.c | 277 ++-- fs/cifs/cifs_dfs_ref.c | 71 +- fs/cifs/cifs_spnego.c | 4 +- fs/cifs/cifsfs.c | 30 +- fs/cifs/cifsglob.h | 49 +- fs/cifs/cifssmb.c | 134 +- fs/cifs/connect.c | 825 ++++---- fs/cifs/file.c | 105 +- fs/cifs/misc.c | 93 +- fs/cifs/readdir.c | 5 +- fs/dlm/lockspace.c | 2 +- fs/ecryptfs/keystore.c | 31 +- fs/eventpoll.c | 85 +- fs/ext3/super.c | 18 +- fs/ext4/ialloc.c | 2 + fs/ext4/inode.c | 7 +- fs/ext4/mballoc.c | 1 + fs/ext4/super.c | 24 +- fs/fat/Makefile | 6 +- fs/fat/cache.c | 25 +- fs/fat/dir.c | 20 +- fs/fat/fat.h | 329 ++++ fs/fat/fatent.c | 24 +- fs/fat/file.c | 49 +- fs/fat/inode.c | 131 +- fs/fat/misc.c | 155 ++- fs/fat/namei_msdos.c | 706 +++++++ fs/fat/namei_vfat.c | 1098 +++++++++++ fs/hostfs/hostfs.h | 2 +- fs/hostfs/hostfs_kern.c | 4 +- fs/hostfs/hostfs_user.c | 2 +- fs/inotify.c | 150 ++- fs/jbd/checkpoint.c | 31 +- fs/jbd2/checkpoint.c | 32 +- fs/jbd2/journal.c | 2 + fs/jffs2/background.c | 10 +- fs/jffs2/compr_lzo.c | 15 +- fs/jffs2/nodemgmt.c | 2 + fs/lockd/host.c | 3 +- fs/lockd/svc.c | 1 + fs/msdos/Makefile | 7 - fs/msdos/namei.c | 702 ------- fs/namei.c | 2 +- fs/namespace.c | 4 +- fs/nfsd/nfs4recover.c | 2 +- fs/nfsd/nfs4state.c | 1 + fs/nfsd/vfs.c | 5 +- fs/ntfs/debug.h | 8 +- fs/ocfs2/buffer_head_io.c | 15 +- fs/ocfs2/dlm/dlmfs.c | 4 +- fs/ocfs2/dlm/userdlm.h | 2 +- fs/ocfs2/dlmglue.c | 3 +- fs/ocfs2/file.c | 27 +- fs/ocfs2/inode.c | 6 + fs/ocfs2/journal.c | 1 + fs/ocfs2/mmap.c | 6 +- fs/ocfs2/namei.c | 8 +- fs/ocfs2/ocfs2.h | 5 +- fs/ocfs2/ocfs2_fs.h | 17 +- fs/ocfs2/stack_user.c | 3 + fs/ocfs2/xattr.c | 372 ++-- fs/ocfs2/xattr.h | 38 +- fs/partitions/check.c | 31 +- fs/proc/proc_sysctl.c | 1 + fs/ubifs/commit.c | 4 +- fs/ubifs/debug.c | 66 +- fs/ubifs/dir.c | 5 +- fs/ubifs/file.c | 91 +- fs/ubifs/journal.c | 8 +- fs/ubifs/key.h | 4 +- fs/ubifs/lpt_commit.c | 2 - fs/ubifs/orphan.c | 28 +- fs/ubifs/recovery.c | 17 +- fs/ubifs/replay.c | 2 +- fs/ubifs/sb.c | 9 +- fs/ubifs/super.c | 70 +- fs/ubifs/tnc.c | 12 +- fs/ubifs/ubifs.h | 12 +- fs/udf/inode.c | 1 + fs/vfat/Makefile | 7 - fs/vfat/namei.c | 1055 ----------- include/acpi/acpi_bus.h | 2 + include/acpi/acpi_drivers.h | 22 +- include/acpi/acpixf.h | 4 +- include/acpi/acpredef.h | 4 +- include/acpi/actypes.h | 1 + include/asm-generic/memory_model.h | 2 +- include/drm/drmP.h | 6 +- include/drm/drm_pciids.h | 46 +- include/linux/acpi.h | 48 +- include/linux/bio.h | 6 +- include/linux/blkdev.h | 9 +- include/linux/c2port.h | 65 + include/linux/cnt32_to_63.h | 22 +- include/linux/compat.h | 2 - include/linux/cpumask.h | 559 ++++++- include/linux/cpuset.h | 4 - include/linux/genhd.h | 4 +- include/linux/highmem.h | 2 + include/linux/hrtimer.h | 7 +- include/linux/ide.h | 8 + include/linux/idr.h | 3 +- include/linux/if_vlan.h | 7 + include/linux/inotify.h | 11 + include/linux/input.h | 2 + include/linux/irq.h | 11 +- include/linux/kernel.h | 42 +- include/linux/libata.h | 2 + include/linux/lockdep.h | 5 +- include/linux/memory.h | 2 +- include/linux/mfd/wm8350/rtc.h | 2 + include/linux/mlx4/device.h | 1 + include/linux/mmc/card.h | 2 +- include/linux/mmc/host.h | 2 +- include/linux/mmc/sdio_func.h | 2 +- include/linux/msdos_fs.h | 281 +--- include/linux/mtd/cfi.h | 22 +- include/linux/net.h | 6 +- include/linux/netfilter/x_tables.h | 2 +- include/linux/page_cgroup.h | 4 +- include/linux/pci.h | 2 +- include/linux/ratelimit.h | 7 - include/linux/ring_buffer.h | 3 + include/linux/sched.h | 7 + include/linux/security.h | 12 +- include/linux/serial_core.h | 3 + include/linux/slab.h | 28 + include/linux/smp.h | 9 + include/linux/ssb/ssb.h | 42 +- include/linux/syscalls.h | 3 +- include/linux/telephony.h | 2 +- include/linux/timer.h | 5 + include/linux/topology.h | 8 +- include/linux/usb.h | 2 + include/linux/workqueue.h | 8 + include/net/af_unix.h | 2 + include/net/mac80211.h | 20 - include/net/request_sock.h | 1 + include/net/scm.h | 5 +- include/net/sock.h | 2 +- include/net/timewait_sock.h | 1 + include/scsi/scsi_transport_fc.h | 2 +- include/sound/core.h | 10 +- include/video/atmel_lcdc.h | 2 +- init/Kconfig | 8 +- ipc/util.c | 14 +- kernel/Makefile | 4 +- kernel/audit_tree.c | 91 +- kernel/auditfilter.c | 14 +- kernel/cgroup.c | 22 +- kernel/cgroup_freezer.c | 19 +- kernel/cpu.c | 5 +- kernel/cpuset.c | 33 +- kernel/exit.c | 14 +- kernel/fork.c | 11 + kernel/hrtimer.c | 26 +- kernel/irq/internals.h | 2 + kernel/irq/manage.c | 68 +- kernel/irq/migration.c | 11 - kernel/irq/proc.c | 2 +- kernel/kallsyms.c | 17 +- kernel/kprobes.c | 23 +- kernel/lockdep.c | 4 +- kernel/panic.c | 1 + kernel/posix-cpu-timers.c | 7 +- kernel/power/main.c | 2 +- kernel/profile.c | 6 +- kernel/ptrace.c | 4 +- kernel/relay.c | 9 +- kernel/sched.c | 46 +- kernel/sched_debug.c | 46 +- kernel/sched_fair.c | 83 +- kernel/sched_features.h | 1 + kernel/sched_stats.h | 15 +- kernel/smp.c | 18 +- kernel/softirq.c | 7 +- kernel/stop_machine.c | 5 +- kernel/sys_ni.c | 2 +- kernel/sysctl.c | 10 + kernel/time/tick-sched.c | 4 + kernel/timer.c | 129 +- kernel/trace/ftrace.c | 147 +- kernel/trace/ring_buffer.c | 120 ++- kernel/trace/trace.c | 20 +- kernel/trace/trace_mmiotrace.c | 16 +- kernel/trace/trace_stack.c | 24 +- kernel/workqueue.c | 45 + lib/cpumask.c | 79 + lib/idr.c | 14 +- lib/scatterlist.c | 2 +- lib/swiotlb.c | 10 +- mm/backing-dev.c | 3 + mm/hugetlb.c | 54 +- mm/internal.h | 29 + mm/memory_hotplug.c | 12 +- mm/mempolicy.c | 18 +- mm/migrate.c | 7 +- mm/mlock.c | 18 +- mm/mmap.c | 2 +- mm/oom_kill.c | 3 +- mm/page_alloc.c | 32 +- mm/page_cgroup.c | 60 +- mm/page_isolation.c | 5 +- mm/slub.c | 6 +- mm/sparse-vmemmap.c | 2 +- mm/sparse.c | 2 +- mm/swap.c | 7 +- mm/vmalloc.c | 50 +- mm/vmscan.c | 46 +- net/8021q/vlan_core.c | 46 +- net/8021q/vlanproc.c | 2 +- net/9p/Kconfig | 10 +- net/9p/client.c | 59 +- net/9p/trans_rdma.c | 5 +- net/bridge/br_netfilter.c | 13 + net/compat.c | 54 +- net/core/dev.c | 3 + net/core/pktgen.c | 9 +- net/core/rtnetlink.c | 4 +- net/core/scm.c | 22 +- net/core/skbuff.c | 4 +- net/core/sock.c | 33 +- net/dsa/slave.c | 72 +- net/dsa/tag_dsa.c | 1 + net/dsa/tag_edsa.c | 1 + net/dsa/tag_trailer.c | 1 + net/ipv4/af_inet.c | 1 + net/ipv4/ip_input.c | 10 +- net/ipv4/ipmr.c | 9 +- net/ipv4/proc.c | 58 +- net/ipv4/tcp.c | 3 +- net/ipv4/tcp_htcp.c | 14 +- net/ipv4/tcp_output.c | 7 +- net/ipv4/udp.c | 1 + net/ipv4/xfrm4_state.c | 1 + net/ipv6/addrconf.c | 4 +- net/ipv6/datagram.c | 5 + net/ipv6/ip6mr.c | 13 +- net/ipv6/ipv6_sockglue.c | 5 + net/ipv6/proc.c | 6 +- net/ipv6/xfrm6_state.c | 1 + net/key/af_key.c | 1 + net/mac80211/debugfs_sta.c | 2 +- net/mac80211/mlme.c | 22 - net/mac80211/wext.c | 8 + net/netfilter/ipvs/ip_vs_xmit.c | 3 +- net/netfilter/nf_conntrack_core.c | 2 - net/netfilter/nf_conntrack_helper.c | 3 + net/netfilter/nf_conntrack_netlink.c | 7 +- net/netfilter/nf_conntrack_proto.c | 5 + net/phonet/af_phonet.c | 56 +- net/phonet/pn_dev.c | 2 +- net/rfkill/rfkill.c | 2 +- net/rose/af_rose.c | 10 + net/sched/sch_api.c | 2 + net/sched/sch_generic.c | 7 +- net/socket.c | 80 +- net/sunrpc/auth_generic.c | 20 +- net/sunrpc/svcsock.c | 9 +- net/unix/af_unix.c | 33 +- net/unix/garbage.c | 62 +- net/wireless/reg.c | 4 +- scripts/kernel-doc | 10 +- scripts/package/builddeb | 24 +- security/keys/internal.h | 1 + security/keys/process_keys.c | 2 +- security/keys/request_key.c | 4 + sound/isa/Kconfig | 2 +- sound/pci/hda/hda_beep.c | 8 + sound/pci/hda/hda_beep.h | 1 + sound/pci/hda/hda_codec.c | 4 +- sound/pci/hda/hda_proc.c | 2 + sound/pci/hda/patch_analog.c | 2 + sound/pci/hda/patch_realtek.c | 1 + sound/pci/hda/patch_sigmatel.c | 354 +++- sound/pci/pcxhr/pcxhr.c | 5 +- sound/pci/rme9652/hdsp.c | 27 +- sound/soc/fsl/Kconfig | 3 +- sound/sound_core.c | 6 +- 1154 files changed, 33038 insertions(+), 14204 deletions(-) create mode 100644 Documentation/ABI/testing/sysfs-c2port rename Documentation/{ => PCI}/MSI-HOWTO.txt (100%) create mode 100644 Documentation/acpi/debug.txt create mode 100644 Documentation/blockdev/00-INDEX rename Documentation/{ => blockdev}/README.DAC960 (100%) create mode 100644 Documentation/blockdev/cciss.txt rename Documentation/{ => blockdev}/cpqarray.txt (100%) rename Documentation/{ => blockdev}/floppy.txt (100%) rename Documentation/{ => blockdev}/nbd.txt (100%) rename Documentation/{ => blockdev}/paride.txt (100%) rename Documentation/{ => blockdev}/ramdisk.txt (100%) create mode 100644 Documentation/c2port.txt delete mode 100644 Documentation/cciss.txt delete mode 100644 Documentation/computone.txt create mode 100644 Documentation/hwmon/adt7462 create mode 100644 Documentation/hwmon/lis3lv02d create mode 100644 Documentation/ics932s401 create mode 100644 Documentation/ioctl/00-INDEX rename Documentation/{ => ioctl}/ioctl-number.txt (100%) create mode 100644 Documentation/printk-formats.txt create mode 100644 Documentation/serial/00-INDEX rename Documentation/{ => serial}/README.cycladesZ (100%) create mode 100644 Documentation/serial/computone.txt rename Documentation/{ => serial}/digiepca.txt (100%) rename Documentation/{ => serial}/hayes-esp.txt (100%) rename Documentation/{ => serial}/moxa-smartio (100%) rename Documentation/{ => serial}/riscom8.txt (100%) rename Documentation/{ => serial}/rocket.txt (100%) rename Documentation/{ => serial}/specialix.txt (100%) rename Documentation/{ => serial}/stallion.txt (100%) rename Documentation/{ => serial}/sx.txt (100%) rename Documentation/{ => serial}/tty.txt (100%) create mode 100644 Documentation/video4linux/si470x.txt create mode 100644 Documentation/w1/masters/omap-hdq create mode 100644 arch/powerpc/configs/40x/virtex_defconfig create mode 100644 arch/sh/mm/mmap.c rename {include/asm-x86 => arch/x86/include/asm}/iomap.h (100%) create mode 100644 drivers/acpi/video_detect.c create mode 100644 drivers/gpio/xilinx_gpio.c create mode 100644 drivers/hwmon/adt7462.c create mode 100644 drivers/hwmon/lis3lv02d.c create mode 100644 drivers/hwmon/lis3lv02d.h create mode 100644 drivers/misc/c2port/Kconfig create mode 100644 drivers/misc/c2port/Makefile create mode 100644 drivers/misc/c2port/c2port-duramar2150.c create mode 100644 drivers/misc/c2port/core.c create mode 100644 drivers/misc/ics932s401.c create mode 100644 drivers/rtc/rtc-ds1390.c create mode 100644 drivers/rtc/rtc-rx8581.c create mode 100644 drivers/rtc/rtc-wm8350.c create mode 100644 drivers/video/mb862xx/Makefile create mode 100644 drivers/video/mb862xx/mb862xx_reg.h create mode 100644 drivers/video/mb862xx/mb862xxfb.c create mode 100644 drivers/video/mb862xx/mb862xxfb.h delete mode 100644 drivers/video/omap/lcd_sx1.c create mode 100644 drivers/w1/masters/omap_hdq.c create mode 100644 drivers/w1/slaves/w1_bq27000.c create mode 100644 fs/fat/fat.h create mode 100644 fs/fat/namei_msdos.c create mode 100644 fs/fat/namei_vfat.c delete mode 100644 fs/msdos/Makefile delete mode 100644 fs/msdos/namei.c delete mode 100644 fs/vfat/Makefile delete mode 100644 fs/vfat/namei.c create mode 100644 include/linux/c2port.h hooks/post-receive -- XFS development tree From xaiki@oss.sgi.com Thu Dec 4 22:34:04 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, J_CHICKENPOX_15,J_CHICKENPOX_21,J_CHICKENPOX_24,J_CHICKENPOX_51 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB54Y34b010715 for ; Thu, 4 Dec 2008 22:34:04 -0600 Received: (from xaiki@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mB54XMJp008756; Thu, 4 Dec 2008 22:33:22 -0600 Date: Thu, 4 Dec 2008 22:33:22 -0600 Message-Id: <200812050433.mB54XMJp008756@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.28-rc3-1483-g14d676f X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 797eaed40e1df4a3b9ece6894a71ce2b568bca38 X-Git-Newrev: 14d676f56fad26fd3c31eeff5d4ef8ea4a163571 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated 14d676f Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 feaf384 Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block a771132 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2433c41 Merge branch 'for-2.6.28' of git://linux-nfs.org/~bfields/linux cd92a17 iTCO_wdt: fix typo when setting TCO_EN bit dafdb61 powerpc/83xx: Fix MCU support merge issue in mpc8349emitx.dts 0e435ac block: fix setting of max_segment_size and seg_boundary mask 53a0880 block: internal dequeue shouldn't start timer bf91db1 block: set disk->node_id before it's being used 53cc0b2 When block layer fails to map iov, it calls bio_unmap_user to undo 2434bbb powerpc: Fix dma_map_sg() cache flushing on non coherent platforms f6f7b52 Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog 51eaaa6 Merge branch 'linux-next' of git://git.infradead.org/ubifs-2.6 b7d6266 Merge branch 'kvm-updates/2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm e6d9f0f Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 e1825e7 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 5d279dc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k e2e2983 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 9a689bc Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 1122b19 MN10300: Fix application of kernel module relocations 026bde1 sgi-gru: call fs_initcall() if statically linked 7a0d794 powerpc: Use physical cpu id when setting the processor affinity 9ff473b vmscan: evict streaming IO first f1d0b06 bdi: register sysfs bdi device only once per queue 1b79cd0 nfsd: fix vm overcommit crash fix #2 ae4e143 m68k: Update defconfigs for 2.6.28-rc7 9596401 alim15x3: fix sparse warning a366380 ide: remove dead code from drive_is_ready() 6b7d8fc ide: fix build for DEBUG_PM e9eb838 ide: respect current DMA setting during resume c7b997b ide: add SAMSUNG SP0822N with firmware WA100-10 to ivb_list[] 6636487 amd74xx: workaround unreliable AltStatus register for nVidia controllers f9e3326 ide: fix the ide_release_lock imbalance 89c223a macfb: Do not overflow fb_fix_screeninfo.id 061e41f Linux 2.6.28-rc7 0d81514 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 9c84ba4 drivers/gpu/drm/i915/i915_irq.c: fix warning 09a8126 i82875p_edac: fix module remove 307d114 i82875p_edac: fix overflow device resource setup bca404a fbdev: fix FB console blanking 0380155 ntfs: don't fool kernel-doc ced6909 kernel-doc: handle varargs cleanly 6ff2d39 lib/idr.c: fix rcu related race with idr_find 1d678f3 DMA-API.txt: fix description of pci_map_sg/dma_map_sg scatterlists handling 4280e31 frv: fix mmap2 error handling a800599 taint: add missing comment c4c6fa9 radeonfb: fix problem with color expansion & alignment b93c35f spi: fix spi_s3c24xx_gpio num_chipselect e39ea8a spi: fix spi_s3c24xx_gpio device handle lookup 4e253d2 spi: au1550_spi full duplex dma fix 6a010b5 spi: fix spi_imx probe oopsing 7ef9964 epoll: introduce resource usage limits b7d271d spi: mpc52xx_psc_spi chipselect bugfix aaacf4b spi: avoid spidev crash when device is removed dc8c214 spi documentation: use __initdata on struct dc924ef hwmon: applesmc: make applesmc load automatically on startup 36be47d parport_serial: fix array overflow dc19f9d memcg: memory hotplug fix for notifier callback b29acbd mm: vmalloc fix lazy unmapping cache aliasing 8650e51 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 d6b58f8 ocfs2: fix regression in ocfs2_read_blocks_sync() 07d9a39 ocfs2: fix return value set in init_dlmfs_fs() a2eee69 ocfs2: Small documentation update 07f9eeb ocfs2: fix wake_up in unlock_ast 66f502a ocfs2: initialize stack_user lvbptr 3b5da01 ocfs2: comments typo fix a693b0c em28xx: remove backward compat macro added on a previous fix 7ac0110 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev 484ab62 V4L/DVB (9748): em28xx: fix compile warning faa3bd2 V4L/DVB (9743): em28xx: fix oops audio 4bc2a9b Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband ac70a96 libata: blacklist Seagate drives which time out FLUSH_CACHE when used with NCQ 03f6084 [libata] pata_rb532_cf: fix signature of the xfer function 9f14786 [libata] pata_rb532_cf: fix and rename register definitions 1eedb4a ata_piix: add borked Tecra M4 to broken suspend list b0f43dc Merge branches 'ehca' and 'mlx4' into for-linus 42ab01c IB/mlx4: Fix MTT leakage in resize CQ 7ec4f46 IB/ehca: Fix problem with generated flush work completions 6b1f9d6 IB/ehca: Change misleading error message on memory hotplug 6a12141 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 dc5c49b [SCSI] stex: switch to block timeout 9728c08 [SCSI] make scsi_eh_try_stu use block timeout ee1ab9e [SCSI] megaraid_sas: switch to block timeout 97b5648 [SCSI] ibmvscsi: switch to block timeout 8fbd64e [SCSI] aacraid: switch to block timeout c07f62e Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid e540458 Add kref to fake tty used by USB console 296fa7f drivers/char/tty_io.c: Avoid panic when no console is configured. f7a65e9 [SCSI] zfcp: prevent double decrement on host_busy while being busy fca55b6 [SCSI] zfcp: fix deadlock between wq triggered port scan and ERP 0ac55aa [SCSI] zfcp: eliminate race between validation and locking 26871c9 [SCSI] zfcp: verify for correct rport state before scanning for SCSI devs 633528c [SCSI] zfcp: returning an ERR_PTR where a NULL value is expected 1c1cba1 [SCSI] zfcp: Fix opening of wka ports bce0261 [SCSI] zfcp: fix remote port status check b4dcfbe Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 ecf318c Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2a1dc50 vmscan: protect zone rotation stats by lru lock 33b07db Revert "of_platform_driver noise on sparce" 290172e [WATCHDOG] hpwdt: Fix kdump when using hpwdt b270ee8 sparc64: Fix offset calculation in compute_size() 44ae98b MAINTAINERS: add netdev to ATM 5bb4bd9 USB: serial: add more Onda device ids to option driver 621b239 USB: usb-storage: unusual_devs entry for Nikon D2H a6b7b03 USB: storage: unusual_devs entry for Mio C520-GPS 1f15a50 USB: fsl_usb2_udc: Report disconnect before unbinding 9ac36da USB: fsl_qe_udc: Report disconnect before unbinding 0a99e8a USB: fix SB600 USB subsystem hang bug 269f053 Revert "USB: improve ehci_watchdog's side effect in CPU power management" a1e0eb1 powerpc: Fix build for 32-bit SMP configs d9d060a Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 03cfdb8 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 4ec8f07 Merge master.kernel.org:/home/rmk/linux-2.6-arm 151903d drm/i915: Fix copy'n'pasteo that broke VT switch if flushing was non-empty. ab598b6 powerpc: Fix system calls on Cell entered with XER.SO=1 960cedb powerpc/cell: Fix GDB watchpoints, again cc353c3 powerpc/mpic: Don't reset affinity for secondary MPIC on boot d015fe9 powerpc/cell/axon-msi: Retry on missing interrupt 4a61866 powerpc: Fix boot freeze on machine with empty memory node 4b824de powerpc: Fix IRQ assignment for some PCIe devices a6e470f Merge git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6 8e36a5d Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 9bd062d Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 72244c0 Merge branch 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 93b1005 Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 7bbc67f Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 66a45cc Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 8639dad Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 9297524 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6 8c7b905 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq 1838e39 Trivial Documentation/filesystems/ramfs-rootfs-initramfs.txt fix 42182c78 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 e2a2444 Merge branch 'linux-next' of git://git.infradead.org/~dedekind/ubi-2.6 8decec7 Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 499c59c MN10300: Tighten up the code using case ranges f1ba3bc Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 95c5e1f Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 b31a0fe Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 96b8936 remove __ARCH_WANT_COMPAT_SYS_PTRACE 16799c6 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 211f05a input: replace spin_lock_bh with spin_lock_irqsave in ml_ff_playback 02d0e67 hotplug_memory_notifier section annotation d3a307f sn_pci_controller_fixup() should be __init ffb78a2 get xenbus_driver ->probe() "recognized" by modpost df6b079 xen_play_dead() is __cpuinit 37af46e xen_setup_vcpu_info_placement() is not init on x86 23a14b9 kvm_setup_secondary_clock() is cpuinit 2236d25 enable_IR_x2apic() needs to be __init ad04d31 pci_setup() is init, not devinit 4bcc17d alpha: pcibios_resource_to_bus() is callable from normal code 56d74dd tricky one: hisax sections 8419641 cpuinit fixes in kernel/* b038514 uninorth-agp section mess 37d33d1 rapidio section noise f57628d section errors in smc911x/smc91x 5bac287 fix the section noise in sparc head.S 1c4567a m32r: section noise in head.S 8814b50 section misannotation in ibmtr_cs 43ced65 ixgbe section fixes 31421a6 rackmeter section fixes ced7172 gdth section fixes e669dae of_platform_driver noise on sparce 3003781 advansys fix on ISA-less configs 2fceab0 W1_MASTER_DS1WM should depend on HAVE_CLK d16d766 icside section warnings 596f103 fix talitos 6005e3e istallion section warnings 8c29890 sparc64 trivial section misannotations 409832f sparc32 cpuinit flase positives 4ea8fb9 powerpc set_huge_psize() false positive 7d6a8a1 false __cpuinit positives on alpha 3116848 meminit section warnings aac725c ATM: horizon, fix hrz_probe fail path af6d596 sched: prevent divide by zero error in cpu_avg_load_per_task, update 1583715 sched, cpusets: fix warning in kernel/cpuset.c 2642b11 ieee1394: sbp2: fix race condition in state change e47c1fe ieee1394: fix list corruption (reported at module removal) e635813 pppol2tp: Add missing sock_put() in pppol2tp_release() 9a5aa62 mlx4_core: Save/restore default port IB capability mask 23d0a65 toshiba_acpi: close race in toshiba_acpi driver 7b964f7 i2c-parport: Fix misplaced parport_release call 79b93e1 i2c: Remove i2c clients in reverse order d1846b0 i2c/isp1301_omap: Build fixes ee8a1a0 HID: Apple ALU wireless keyboards are bluetooth devices af38d90 Merge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 487ff32 Allow architectures to override copy_user_highpage() 52b19ac udf: Fix BUG_ON() in destroy_inode() a730b32 [ARM] pxa/palmtx: misc fixes to use generic GPIO API b627c8b x86: always define DECLARE_PCI_UNMAP* macros 6417a91 Merge branch 'omap-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 abd9421 [S390] Update default configuration. 0778dc3 [S390] Fix alignment of initial kernel stack. 2944a5c [S390] pgtable.h: Fix oops in unmap_vmas for KVM processes 8107d82 [S390] fix/cleanup sched_clock 59da213 [S390] fix system call parameter functions. 4cd4262 sched: prevent divide by zero error in cpu_avg_load_per_task 4f5a7f4 ftrace: prevent recursion e899b64 ACPICA: disable _BIF warning a6e0887 ACPI: delete OSI(Linux) DMI dmesg spam 95a28ed ACPICA: Allow _WAK method to return an Integer 0081b16 ACPI: thinkpad-acpi: fix fan sleep/resume path 5f23b73 net: Fix soft lockups/OOM issues w/ unix garbage collector efbbced macvlan: don't broadcast PAUSE frames to macvlan devices 7e5ab54 Phonet: fix oops in phonet_address_del() on non-Phonet device 3fedd90 sony-laptop: printk tweak 38cfc14 sony-laptop: brightness regression fix 3bdca1b Revert "ACPI: don't enable control method power button as wakeup device when Fixed Power button is used" 65df784 ACPI suspend: Blacklist boxes that require us to set SCI_EN directly on resume 4059907 ACPI: scheduling in atomic via acpi_evaluate_integer () 723fdb7 ARM: OMAP: Fixes for suspend / resume GPIO wake-up handling 558073d ACPI: battery: Convert discharge energy rate to current properly 90f6713 parisc: struct device - replace bus_id with dev_name(), dev_set_name() 7a3f513 parisc: fix kernel crash when unwinding a userspace process 9860d1b parisc: __kernel_time_t is always long 7b4d469 ACPI: EC: count interrupts only if called from interrupt handler. a98ee8c [CIFS] fix regression in cifs_write_begin/cifs_write_end 545f4e9 Input: wacom - add support for new USB Tablet PCs 3ec1925 netfilter: ctnetlink: fix GFP_KERNEL allocation under spinlock 6c47535 KVM: MMU: avoid creation of unreachable pages in the shadow bd51126 sungem: Fix PCS_MIICTRL register write in gem_init_phy(). 461cba2 drm/i915: Save/restore HWS_PGA on suspend/resume 8f480c0 net: make skb_truesize_bug() call WARN() 1d71da1 net: hp-plus uses eip_poll 2fd36a5 [ARM] pxa/corgi: update default config to exclude tosa from being built 72e9622 [ARM] pxa/pcm990: use negative number for an invalid GPIO in camera data ffd565a x86: fixup config space size of CPU functions for AMD family 11h 147dcf5 ARM: OMAP: Typo fix for clock_allow_idle d7713cc Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 020cf6b net/wireless/reg.c: fix bad WARN_ON in if statement 02969b3 ath5k: disable beacon filter when station is not associated 33ab625 ath5k: fix Security issue in DebugFS part of ath5k b4b6cda ath9k: correct expected max RX buffer size ca0c7e5 ath9k: Fix SW-IOMMU bounce buffer starvation 3dd3b79 mac80211 : Fix setting ad-hoc mode and non-ibss channel e91af0a iwlagn: fix DMA sync 031bb27 firewire: fw-sbp2: another iPod mini quirk entry 9e0de91 ieee1394: sbp2: another iPod mini quirk entry a266d9f [CPUFREQ] powernow-k8: ignore out-of-range PstateStatus value 121fe86 [CPUFREQ] Documentation: Add Blackfin to list of supported processors de90add x86, bts: fix wrmsr and spinlock over kmalloc c4858ff x86, pebs: fix PEBS record size configuration e5e8ca6 x86, bts: turn macro into static inline function 292c669 x86, bts: exclude ds.c from build when disabled b628353 Merge branch 'topic/fix/hda' into for-linus eff79ae arch/x86/kernel/pci-calgary_64.c: change simple_strtol to simple_strtoul 5cf02b7 x86: use limited register constraint for setnz 661cd8f ALSA: hda - Check model for Dell 92HD73xx laptops c65574a ALSA: hda - mark Dell studio 1535 quirk 9502662 ALSA: hda - No 'Headphone as Line-out' swich without line-outs f73d358 ALSA: hda - Fix AFG power management on IDT 92HD* codecs c30f8a6 KVM: ppc: stop leaking host memory on VM exit 9e97697 ALSA: hda - Fix caching of SPDIF status bits 11c6dd2 phylib: Add Vitesse VSC8221 SGMII PHY 244f46a rose: zero length frame filtering in af_rose.c 7953031 ARM: OMAP: Remove broken LCD driver for SX1 631339f bridge: netfilter: fix update_pmtu crash with GRE f79fca5 netfilter: xtables: add missing const qualifier to xt_tgchk_param b54ad40 netfilter: ctnetlink: fix conntrack creation race 5244021 drm: move drm vblank initialization/cleanup to driver load/unload 6133047 drm/i915: execbuffer pins objects, no need to ensure they're still in the GTT 05eff84 drm/i915: Always read pipestat in irq_handler 2678d9d drm/i915: Subtract total pinned bytes from available aperture size 28dfe52 drm/i915: Avoid BUG_ONs on VT switch with a wedged chipset. cdfbc41 drm/i915: Remove IMR masking during interrupt handler, and restart it if needed. 7c46358 drm/i915: Manage PIPESTAT to control vblank interrupts instead of IMR. a8d82d9 NLM: client-side nlm_lookup_host() should avoid matching on srcaddr 8442c87 Input: replace spin_lock_bh with spin_lock_irqsave in ml_ff_playback e4625eb nfsd: use of unitialized list head on error exit in nfs4recover.c 8ec2e24 MIPS: Make BUG() __noreturn. 2da2c21 Add a reference to sunrpc in svc_addsock 2c5e761 nfsd: clean up grace period on early exit 50f3beb V4L/DVB (9742): em28xx-alsa: implement another locking schema 7a8f4cc V4L/DVB (9732): sms1xxx: use new firmware for Hauppauge WinTV MiniStick e07a1d8 V4L/DVB (9691): gspca: Move the video device to a separate area. 5c4fa00 V4L/DVB (9690): gspca: Lock the subdrivers via module_get/put. 98522a7 V4L/DVB (9689): gspca: Memory leak when disconnect while streaming. 3f9b5d4 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/jk/spufs into merge be542fa Merge branch 'merge' of ssh://master.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx into merge 11bac8a Merge branch 'merge' of git://git.secretlab.ca/git/linux-2.6-mpc52xx into merge 5147d14 drivers/net/chelsio/sge.c: remove redundant argument comments ece4af1 driver/net/*: remove redundant argument comments fb91ee6 tracing, doc: update mmiotrace documentation 7ee1768 x86, mmiotrace: fix buffer overrun detection 47fd6f7 [ARM] 5335/1: pxa25x_udc: Fix is_vbus_present to return 1 or 0 0c0f40b KVM: MMU: fix sync of ptes addressed at owner pagetable ce50b91 KVM: ia64: Fix: Use correct calling convention for PAL_VPS_RESUME_HANDLER 547567c KVM: ia64: Fix incorrect kbuild CFLAGS override bd2b3ca KVM: VMX: Fix interrupt loss during race with NMI 3eb77d5 KVM: s390: Fix problem state handling in guest sigp handler 86bbc2c xen: pin correct PGD on suspend 3d994e1 Merge branch 'oprofile-for-tip' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile into x86/urgent fde5be3 HID: remove setup mutex, fix possible deadlock a1967d6 x86: revert irq number limitation 2ed1cdc irq.h: fix missing/extra kernel-doc 9f14416 Merge commit 'v2.6.28-rc6' into irq/urgent 844c6f6 [ARM] pxa/MioA701: bluetooth resume fix 999f633 [ARM] pxa/MioA701: fix memory corruption. 7e56b5d net: Fix memory leak in the proto_register function 33cf71c tcp: Do not use TSO/GSO when there is urgent data 38ae07e net/hp-plus: fix link errors 208fbec axnet_cs / pcnet_cs: moving PCMCIA_DEVICE_PROD_ID for Netgear FA411 57550b2 Merge commit 'v2.6.28-rc6' into x86/urgent 3477d20 UBIFS: pre-allocate bulk-read buffer 6c0c42c UBIFS: do not allocate too much 39ce81c UBIFS: do not print scary memory allocation warnings be1ffce rtc: rtc-starfire fixes 0602641 [WATCHDOG] hpwdt: set the mapped BIOS address space as executable 28d41f5 [WATCHDOG] iTCO_wdt: add PCI ID's for ICH9 & ICH10 chipsets c6904dd [WATCHDOG] iTCO_wdt : correct status clearing 7cd5b08 [WATCHDOG] iTCO_wdt : problem with rebooting on new ICH9 based motherboards 21098c6 [SCSI] fc_transport: fix old bug on bitflag definitions f80e919 [WATCHDOG] fix mtx1_wdt compilation failure b0788ca lockdep: consistent alignement for lockdep info 522a110 function tracing: fix wrong position computing of stack_trace c879c63 Merge branches 'topic/fix/hda' and 'topic/fix/sound-core' into for-linus b0fc5e0 ALSA: hda - Add a quirk for Dell Studio 15 3a7abfd ALSA: hda: Add STAC_DELL_M4_3 quirk a39c4ad sound/sound_core: Fix sparse warnings 6436cbc phy: fix phy_id detection also for broken hardware. 75e07fc pci: Added quirk to disable msi for MCP55 NIC on Asus P5N32-SLI Premium 6065726 powerpc/spufs: Fix spinning in spufs_ps_fault on signal 818a557 V4L/DVB (9668): em28xx: fix a race condition with hald cce2571 V4L/DVB (9664): af9015: don't reconnect device in USB-bus f2a2e49 V4L/DVB (9647): em28xx: void having two concurrent control URB's c4a9879 V4L/DVB (9646): em28xx: avoid allocating/dealocating memory on every control urb 625ff16 V4L/DVB (9645): em28xx: Avoid memory leaks if registration fails 0253fdc ALSA: hda: STAC_DELL_M6 EAPD bfe085f x86: fixing __cpuinit/__init tangle, xsave_cntxt_init() 9bc646f x86: fix __cpuinit/__init tangle in init_thread_xstate() 578f3a3 HID: add USB ID for another dual gameron adapter 06d2148 HID: unignore mouse on unibody macbooks 5f4ba04 Input: i8042 - add Compal Hel80 laptop to nomux blacklist e871809 powerpc/mpc832x_rdb: fix swapped ethernet ids 06597aa powerpc: Use generic PHY driver for Marvell 88E1111 PHY on GE Fanuc SBC610 f464ff5 powerpc/85xx: L2 cache size wrong in 8572DS dts a4a16be oprofile: fix an overflow in ppro code 99afb98 V4L/DVB (9639): Make dib0700 remote control support work with firmware v1.20 deaf53e V4L/DVB (9635): v4l: s2255drv fix firmware test on big-endian 41286d9 V4L/DVB (9634): Make sure the i2c gate is open before powering down tuner 3f9b46c V4L/DVB (9632): make em28xx aux audio input work 3fa37de V4L/DVB (9631): Make s2api work for ATSC support c41109f V4L/DVB (9627): em28xx: Avoid i2c register error for boards without eeprom df4533a V4L/DVB (9608): Fix section mismatch warning for dm1105 during make 4faf100 V4L/DVB (9605): usb-urb: fix memory leak 7935eea V4L/DVB (9604): ttusb_dec: fix memory leak b7ed785 V4L/DVB (9603): dvb-ttusb-budget: Add validation for ttusb_alloc_iso_urbs 11eb260 V4L/DVB (9602): dvb-ttusb-budget: Add NULL pointer validation d7c31a1 V4L/DVB (9601): ttusb_dec: Add NULL pointer validation 5181e59 HID: fix blacklist entries for greenasia/pantherlord 2a3a59e [SCSI] Fix hang in starved list processing c8d6988 powerpc/virtex: Update defconfigs c7c2ffb powerpc/52xx: update defconfigs c14464b xsysace: Fix driver to use resource_size_t instead of unsigned long a108096 powerpc/virtex: fix various format/casting printk mismatches 847cdf4 powerpc/mpc5200: fix bestcomm Kconfig dependencies 6612d9b powerpc/44x: Fix 460EX/460GT machine check handling 5907630 powerpc/40x: Limit allocable DRAM during early mapping 3ff68a6 genirq: __irq_set_trigger: change pr_warning to pr_debug 734f0ba Input: cm109 - add keymap for ATCom AU-100 phone 4f48544 Input: fix the example of an input device driver 5fb17fd Input: psmouse - fix incorrect validate_byte check in OLPC protocol d6d79a7 Input: atkbd - cancel delayed work before freeing its structure a8215b8 Input: atkbd - add keymap quirk for Inventec Symphony systems 786b11c Input: i8042 - add Dell XPS M1530 to nomux list f131e24 irq: fix typo 6c2e940 x86: apic honour irq affinity which was set in early boot 612e368 genirq: fix the affinity setting in setup_irq f6d87f4 genirq: keep affinities set from userspace across free/request_irq() 7e2d9bf UBIFS: allow for gaps when dirtying the LPT 2ad4988 UBI: Don't exit from ubi_thread until kthread_should_stop() is true b77bcb0 UBI: fix EBADMSG handling e84461a UBIFS: fix compilation warnings e2966cb MAINTAINERS: change UBI/UBIFS git tree URLs 0ecb952 UBIFS: endian handling fixes and annotations 069782a UBIFS: remove printk 9a5415f Input: elo - fix format string in elo driver from 797eaed40e1df4a3b9ece6894a71ce2b568bca38 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 14d676f56fad26fd3c31eeff5d4ef8ea4a163571 Merge: 797eaed40e1df4a3b9ece6894a71ce2b568bca38 feaf3848a813a106f163013af6fcf6c4bfec92d9 Author: Lachlan McIlroy Date: Fri Dec 5 15:27:43 2008 +1100 Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 ----------------------------------------------------------------------- Summary of changes: Documentation/DMA-API.txt | 8 +- Documentation/cpu-freq/user-guide.txt | 12 + Documentation/filesystems/ocfs2.txt | 3 - Documentation/filesystems/proc.txt | 27 + .../filesystems/ramfs-rootfs-initramfs.txt | 12 +- Documentation/input/input-programming.txt | 3 +- Documentation/sound/alsa/ALSA-Configuration.txt | 5 +- Documentation/spi/spi-summary | 2 +- Documentation/tracers/mmiotrace.txt | 6 +- MAINTAINERS | 5 +- Makefile | 4 +- arch/Kconfig | 2 - arch/alpha/kernel/pci.c | 2 +- arch/alpha/kernel/smp.c | 6 +- arch/alpha/kernel/traps.c | 4 +- arch/arm/configs/corgi_defconfig | 2 +- arch/arm/mach-pxa/mioa701.c | 2 +- arch/arm/mach-pxa/mioa701_bootresume.S | 1 + arch/arm/mach-pxa/palmtx.c | 150 ++++-- arch/arm/mach-pxa/pcm990-baseboard.c | 1 + arch/arm/mach-s3c2410/include/mach/spi-gpio.h | 1 + arch/arm/plat-omap/gpio.c | 5 +- arch/arm/plat-omap/include/mach/pm.h | 2 +- arch/frv/kernel/sys_frv.c | 17 +- arch/ia64/include/asm/ptrace.h | 2 - arch/ia64/kvm/Makefile | 2 +- arch/ia64/kvm/optvfault.S | 11 +- arch/ia64/sn/kernel/io_init.c | 2 +- arch/m32r/kernel/head.S | 4 +- arch/m32r/kernel/vmlinux.lds.S | 1 + arch/m68k/configs/amiga_defconfig | 126 +++-- arch/m68k/configs/apollo_defconfig | 115 +++-- arch/m68k/configs/atari_defconfig | 130 +++-- arch/m68k/configs/bvme6000_defconfig | 112 +++-- arch/m68k/configs/hp300_defconfig | 115 +++-- arch/m68k/configs/mac_defconfig | 125 +++-- arch/m68k/configs/multi_defconfig | 129 +++-- arch/m68k/configs/mvme147_defconfig | 112 +++-- arch/m68k/configs/mvme16x_defconfig | 112 +++-- arch/m68k/configs/q40_defconfig | 125 +++-- arch/m68k/configs/sun3_defconfig | 124 +++-- arch/m68k/configs/sun3x_defconfig | 115 +++-- arch/mips/include/asm/bug.h | 29 +- arch/mips/include/asm/ptrace.h | 4 - arch/mn10300/kernel/gdb-stub.c | 24 +- arch/mn10300/kernel/module.c | 35 +- arch/parisc/include/asm/parisc-device.h | 4 +- arch/parisc/include/asm/posix_types.h | 3 +- arch/parisc/include/asm/ptrace.h | 2 - arch/parisc/kernel/drivers.c | 6 +- arch/parisc/kernel/traps.c | 43 +- arch/powerpc/boot/dts/mpc832x_rdb.dts | 4 +- arch/powerpc/boot/dts/mpc8349emitx.dts | 16 +- arch/powerpc/boot/dts/mpc8572ds.dts | 2 +- .../virtex5_defconfig => 40x/virtex_defconfig} | 263 +++++---- arch/powerpc/configs/44x/virtex5_defconfig | 234 +++++---- arch/powerpc/configs/52xx/cm5200_defconfig | 169 +++++-- arch/powerpc/configs/52xx/lite5200b_defconfig | 206 ++++++-- arch/powerpc/configs/52xx/motionpro_defconfig | 168 +++++-- arch/powerpc/configs/52xx/pcm030_defconfig | 182 +++++-- arch/powerpc/configs/52xx/tqm5200_defconfig | 180 +++++-- arch/powerpc/configs/86xx/gef_sbc610_defconfig | 2 +- arch/powerpc/configs/mpc5200_defconfig | 573 +++++++++++++++----- arch/powerpc/configs/ppc40x_defconfig | 92 +++- arch/powerpc/configs/ppc44x_defconfig | 92 +++- arch/powerpc/include/asm/kvm_ppc.h | 2 + arch/powerpc/include/asm/mmu-hash64.h | 1 - arch/powerpc/include/asm/ptrace.h | 2 - arch/powerpc/kernel/cpu_setup_44x.S | 7 +- arch/powerpc/kernel/dma.c | 1 + arch/powerpc/kernel/entry_64.S | 8 +- arch/powerpc/kernel/prom_parse.c | 7 +- arch/powerpc/kernel/sysfs.c | 2 + arch/powerpc/kvm/44x_tlb.c | 8 + arch/powerpc/kvm/powerpc.c | 1 + arch/powerpc/mm/40x_mmu.c | 16 +- arch/powerpc/mm/hugetlbpage.c | 2 +- arch/powerpc/mm/numa.c | 122 +++-- arch/powerpc/platforms/cell/axon_msi.c | 36 +- arch/powerpc/platforms/cell/smp.c | 9 +- arch/powerpc/platforms/cell/spufs/file.c | 3 + arch/powerpc/sysdev/bestcomm/Kconfig | 9 +- arch/powerpc/sysdev/mpic.c | 11 +- arch/powerpc/sysdev/xilinx_intc.c | 4 +- arch/s390/defconfig | 74 ++- arch/s390/include/asm/pgtable.h | 2 - arch/s390/include/asm/ptrace.h | 4 +- arch/s390/include/asm/syscall.h | 28 +- arch/s390/kernel/asm-offsets.c | 2 +- arch/s390/kernel/compat_signal.c | 2 +- arch/s390/kernel/entry.S | 21 +- arch/s390/kernel/entry64.S | 23 +- arch/s390/kernel/init_task.c | 2 +- arch/s390/kernel/ptrace.c | 2 +- arch/s390/kernel/signal.c | 6 +- arch/s390/kernel/time.c | 13 +- arch/s390/kernel/vmlinux.lds.S | 3 +- arch/s390/kvm/sigp.c | 5 + arch/sparc/include/asm/ptrace_64.h | 2 - arch/sparc/kernel/cpu.c | 2 +- arch/sparc/kernel/head.S | 2 +- arch/sparc/kernel/smp.c | 4 +- arch/sparc/kernel/sun4d_smp.c | 4 +- arch/sparc/kernel/sun4m_smp.c | 2 +- arch/sparc/kernel/trampoline.S | 4 +- arch/sparc/kernel/vmlinux.lds.S | 1 + arch/sparc/mm/srmmu.c | 14 +- arch/sparc64/kernel/smp.c | 4 +- arch/sparc64/lib/user_fixup.c | 2 +- arch/sparc64/mm/init.c | 2 +- arch/x86/boot/tty.c | 2 +- arch/x86/include/asm/ds.h | 6 +- arch/x86/include/asm/pci_64.h | 14 - arch/x86/include/asm/ptrace.h | 2 - arch/x86/kernel/Makefile | 2 +- arch/x86/kernel/apic.c | 2 +- arch/x86/kernel/cpu/cpufreq/powernow-k8.c | 18 +- arch/x86/kernel/cpu/cpufreq/powernow-k8.h | 17 +- arch/x86/kernel/ds.c | 88 ++-- arch/x86/kernel/i387.c | 2 +- arch/x86/kernel/io_apic.c | 48 +- arch/x86/kernel/kvmclock.c | 2 +- arch/x86/kernel/pci-calgary_64.c | 2 +- arch/x86/kernel/xsave.c | 2 +- arch/x86/kvm/mmu.c | 2 +- arch/x86/kvm/paging_tmpl.h | 1 + arch/x86/kvm/vmx.c | 4 +- arch/x86/oprofile/op_model_ppro.c | 2 +- arch/x86/pci/fixup.c | 25 +- arch/x86/xen/mmu.c | 21 +- arch/x86/xen/smp.c | 2 +- arch/x86/xen/xen-ops.h | 2 +- block/blk-barrier.c | 4 +- block/blk-core.c | 26 +- block/blk-map.c | 2 +- block/blk-settings.c | 4 + block/elevator.c | 7 - block/genhd.c | 2 +- drivers/acpi/battery.c | 9 + drivers/acpi/blacklist.c | 401 +-------------- drivers/acpi/ec.c | 3 +- drivers/acpi/osl.c | 104 +--- drivers/acpi/scan.c | 10 - drivers/acpi/sleep/main.c | 40 ++- drivers/acpi/toshiba_acpi.c | 2 - drivers/acpi/utils.c | 16 +- drivers/ata/ata_piix.c | 15 + drivers/ata/libata-core.c | 21 + drivers/ata/pata_rb532_cf.c | 15 +- drivers/atm/horizon.c | 2 +- drivers/block/xsysace.c | 23 +- drivers/char/agp/uninorth-agp.c | 2 +- drivers/char/istallion.c | 4 +- drivers/char/tty_io.c | 15 +- drivers/char/xilinx_hwicap/xilinx_hwicap.c | 9 +- drivers/crypto/talitos.c | 4 +- drivers/edac/i82875p_edac.c | 14 +- drivers/firewire/fw-sbp2.c | 5 + drivers/gpu/drm/drm_drv.c | 2 + drivers/gpu/drm/drm_irq.c | 4 +- drivers/gpu/drm/i915/i915_dma.c | 7 + drivers/gpu/drm/i915/i915_drv.h | 11 + drivers/gpu/drm/i915/i915_gem.c | 74 ++-- drivers/gpu/drm/i915/i915_irq.c | 293 ++++++----- drivers/gpu/drm/i915/i915_opregion.c | 18 +- drivers/gpu/drm/i915/i915_suspend.c | 6 + drivers/gpu/drm/mga/mga_dma.c | 8 + drivers/gpu/drm/mga/mga_irq.c | 5 - drivers/gpu/drm/r128/r128_drv.c | 6 + drivers/gpu/drm/r128/r128_drv.h | 1 + drivers/gpu/drm/r128/r128_irq.c | 2 +- drivers/gpu/drm/radeon/radeon_cp.c | 6 + drivers/gpu/drm/radeon/radeon_irq.c | 5 - drivers/gpu/drm/via/via_irq.c | 1 - drivers/gpu/drm/via/via_map.c | 11 +- drivers/hid/hid-apple.c | 6 +- drivers/hid/hid-core.c | 14 +- drivers/hid/hid-ids.h | 1 + drivers/hid/hid-pl.c | 2 + drivers/hid/usbhid/hid-core.c | 18 +- drivers/hid/usbhid/usbhid.h | 1 - drivers/hwmon/applesmc.c | 1 + drivers/i2c/busses/i2c-parport.c | 4 +- drivers/i2c/chips/isp1301_omap.c | 65 ++- drivers/i2c/i2c-core.c | 2 +- drivers/ide/alim15x3.c | 2 +- drivers/ide/amd74xx.c | 11 +- drivers/ide/icside.c | 4 +- drivers/ide/ide-io.c | 30 +- drivers/ide/ide-iops.c | 9 +- drivers/ide/ide-probe.c | 3 +- drivers/ieee1394/highlevel.c | 25 +- drivers/ieee1394/hosts.h | 4 + drivers/ieee1394/sbp2.c | 14 +- drivers/infiniband/hw/ehca/ehca_classes.h | 4 +- drivers/infiniband/hw/ehca/ehca_main.c | 3 +- drivers/infiniband/hw/ehca/ehca_qp.c | 26 +- drivers/infiniband/hw/ehca/ehca_reqs.c | 51 +- drivers/infiniband/hw/mlx4/cq.c | 5 + drivers/input/ff-memless.c | 5 +- drivers/input/keyboard/atkbd.c | 27 +- drivers/input/misc/cm109.c | 37 ++- drivers/input/mouse/hgpk.c | 2 +- drivers/input/serio/i8042-x86ia64io.h | 14 + drivers/input/tablet/wacom.h | 13 +- drivers/input/tablet/wacom_sys.c | 228 +++++++- drivers/input/tablet/wacom_wac.c | 160 +++++- drivers/input/tablet/wacom_wac.h | 4 + drivers/input/touchscreen/elo.c | 2 +- drivers/input/xen-kbdfront.c | 6 +- drivers/isdn/hisax/config.c | 16 +- drivers/macintosh/rack-meter.c | 10 +- drivers/md/dm-table.c | 2 +- drivers/media/dvb/dm1105/dm1105.c | 2 +- drivers/media/dvb/dvb-core/dvb_frontend.c | 5 +- drivers/media/dvb/dvb-usb/af9015.c | 8 +- drivers/media/dvb/dvb-usb/dib0700.h | 5 +- drivers/media/dvb/dvb-usb/dib0700_core.c | 16 + drivers/media/dvb/dvb-usb/dib0700_devices.c | 139 +++++- drivers/media/dvb/dvb-usb/usb-urb.c | 19 +- drivers/media/dvb/siano/sms-cards.c | 2 +- drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c | 15 +- drivers/media/dvb/ttusb-dec/ttusb_dec.c | 7 + drivers/media/video/em28xx/em28xx-audio.c | 33 +- drivers/media/video/em28xx/em28xx-core.c | 58 ++- drivers/media/video/em28xx/em28xx-i2c.c | 10 +- drivers/media/video/em28xx/em28xx-video.c | 140 +++-- drivers/media/video/em28xx/em28xx.h | 6 + drivers/media/video/gspca/conex.c | 3 + drivers/media/video/gspca/finepix.c | 8 + drivers/media/video/gspca/gspca.c | 56 +- drivers/media/video/gspca/gspca.h | 6 +- drivers/media/video/gspca/pac7311.c | 3 + drivers/media/video/gspca/spca501.c | 3 + drivers/media/video/gspca/spca505.c | 4 + drivers/media/video/gspca/spca561.c | 3 + drivers/media/video/gspca/vc032x.c | 3 + drivers/media/video/gspca/zc3xx.c | 3 + drivers/media/video/s2255drv.c | 2 +- drivers/misc/sgi-gru/grufile.c | 2 +- drivers/misc/sony-laptop.c | 4 +- drivers/misc/thinkpad_acpi.c | 57 ++- drivers/mtd/ubi/eba.c | 2 +- drivers/mtd/ubi/scan.c | 2 +- drivers/mtd/ubi/wl.c | 3 +- drivers/net/Kconfig | 3 +- drivers/net/Makefile | 2 +- drivers/net/chelsio/sge.c | 4 - drivers/net/e1000e/netdev.c | 1 - drivers/net/hp-plus.c | 2 +- drivers/net/igb/igb_main.c | 4 - drivers/net/ixgbe/ixgbe_main.c | 10 +- drivers/net/macvlan.c | 3 + drivers/net/mlx4/main.c | 8 + drivers/net/mlx4/mlx4.h | 1 + drivers/net/mlx4/port.c | 39 ++- drivers/net/pcmcia/axnet_cs.c | 2 +- drivers/net/pcmcia/ibmtr_cs.c | 2 +- drivers/net/pcmcia/pcnet_cs.c | 1 - drivers/net/phy/phy_device.c | 13 +- drivers/net/phy/vitesse.c | 64 ++- drivers/net/pppol2tp.c | 1 + drivers/net/sis900.c | 1 - drivers/net/smc911x.c | 10 +- drivers/net/smc91x.c | 10 +- drivers/net/spider_net.c | 4 - drivers/net/sungem.c | 2 +- drivers/net/wireless/ath5k/base.c | 35 ++- drivers/net/wireless/ath5k/base.h | 1 + drivers/net/wireless/ath5k/debug.c | 10 +- drivers/net/wireless/ath9k/beacon.c | 10 +- drivers/net/wireless/ath9k/recv.c | 19 +- drivers/net/wireless/iwlwifi/iwl-agn.c | 8 +- drivers/net/xen-netfront.c | 6 +- drivers/parport/parport_serial.c | 2 + drivers/pci/pci.c | 2 +- drivers/pci/quirks.c | 17 + drivers/rapidio/rio-scan.c | 4 +- drivers/rapidio/rio.c | 2 +- drivers/rtc/rtc-starfire.c | 66 +-- drivers/s390/scsi/zfcp_erp.c | 7 +- drivers/s390/scsi/zfcp_fc.c | 7 +- drivers/s390/scsi/zfcp_fsf.c | 20 +- drivers/s390/scsi/zfcp_scsi.c | 2 +- drivers/scsi/aacraid/linit.c | 4 +- drivers/scsi/advansys.c | 4 + drivers/scsi/gdth.c | 12 +- drivers/scsi/ibmvscsi/ibmvscsi.c | 2 +- drivers/scsi/megaraid/megaraid_sas.c | 3 +- drivers/scsi/scsi_error.c | 3 +- drivers/scsi/scsi_lib.c | 23 +- drivers/scsi/stex.c | 2 +- drivers/serial/uartlite.c | 4 +- drivers/spi/au1550_spi.c | 26 +- drivers/spi/mpc52xx_psc_spi.c | 5 +- drivers/spi/spi_imx.c | 25 +- drivers/spi/spi_s3c24xx_gpio.c | 3 +- drivers/spi/spidev.c | 4 +- drivers/usb/gadget/fsl_qe_udc.c | 3 + drivers/usb/gadget/fsl_usb2_udc.c | 3 + drivers/usb/gadget/pxa25x_udc.c | 14 +- drivers/usb/host/ehci-pci.c | 9 +- drivers/usb/host/ehci.h | 12 +- drivers/usb/serial/console.c | 1 + drivers/usb/serial/option.c | 35 ++ drivers/usb/storage/unusual_devs.h | 19 + drivers/video/aty/radeon_accel.c | 21 +- drivers/video/aty/radeon_base.c | 18 + drivers/video/console/fbcon.c | 9 +- drivers/video/macfb.c | 74 ++-- drivers/video/omap/Makefile | 1 - drivers/video/omap/lcd_sx1.c | 327 ----------- drivers/video/xen-fbfront.c | 6 +- drivers/video/xilinxfb.c | 5 +- drivers/w1/masters/Kconfig | 2 +- drivers/watchdog/hpwdt.c | 5 +- drivers/watchdog/iTCO_vendor_support.c | 31 +- drivers/watchdog/iTCO_wdt.c | 164 ++++-- drivers/watchdog/mtx-1_wdt.c | 4 + fs/buffer.c | 1 + fs/cifs/file.c | 77 ++- fs/eventpoll.c | 85 +++- fs/lockd/host.c | 3 +- fs/lockd/svc.c | 1 + fs/nfsd/nfs4recover.c | 2 +- fs/nfsd/nfs4state.c | 1 + fs/ntfs/debug.h | 8 +- fs/ocfs2/buffer_head_io.c | 15 +- fs/ocfs2/dlm/dlmfs.c | 4 +- fs/ocfs2/dlm/userdlm.h | 2 +- fs/ocfs2/dlmglue.c | 3 +- fs/ocfs2/ocfs2.h | 2 +- fs/ocfs2/stack_user.c | 3 + fs/ubifs/commit.c | 4 +- fs/ubifs/debug.c | 66 ++- fs/ubifs/dir.c | 5 +- fs/ubifs/file.c | 91 +++- fs/ubifs/journal.c | 8 +- fs/ubifs/key.h | 4 +- fs/ubifs/lpt_commit.c | 2 - fs/ubifs/orphan.c | 28 +- fs/ubifs/recovery.c | 17 +- fs/ubifs/replay.c | 2 +- fs/ubifs/sb.c | 9 +- fs/ubifs/super.c | 70 ++- fs/ubifs/tnc.c | 12 +- fs/ubifs/ubifs.h | 12 +- fs/udf/inode.c | 1 + include/acpi/acpredef.h | 4 +- include/drm/drmP.h | 1 + include/linux/blkdev.h | 9 +- include/linux/compat.h | 2 - include/linux/highmem.h | 2 + include/linux/ide.h | 8 + include/linux/idr.h | 3 +- include/linux/irq.h | 11 +- include/linux/libata.h | 1 + include/linux/memory.h | 2 +- include/linux/mlx4/device.h | 1 + include/linux/netfilter/x_tables.h | 2 +- include/linux/page_cgroup.h | 4 +- include/linux/sched.h | 4 + include/linux/security.h | 12 +- include/net/af_unix.h | 1 + include/net/request_sock.h | 1 + include/net/timewait_sock.h | 1 + include/scsi/scsi_transport_fc.h | 2 +- kernel/cpu.c | 2 +- kernel/cpuset.c | 2 +- kernel/irq/internals.h | 2 + kernel/irq/manage.c | 68 ++- kernel/irq/migration.c | 11 - kernel/irq/proc.c | 2 +- kernel/lockdep.c | 4 +- kernel/panic.c | 1 + kernel/profile.c | 4 +- kernel/ptrace.c | 4 +- kernel/sched.c | 5 +- kernel/sysctl.c | 10 + kernel/trace/ring_buffer.c | 2 +- kernel/trace/trace_mmiotrace.c | 16 +- kernel/trace/trace_stack.c | 24 +- lib/idr.c | 14 +- mm/backing-dev.c | 3 + mm/memory_hotplug.c | 9 +- mm/page_cgroup.c | 56 ++- mm/slub.c | 6 +- mm/sparse.c | 2 +- mm/swap.c | 7 +- mm/vmalloc.c | 20 +- mm/vmscan.c | 2 +- net/bridge/br_netfilter.c | 13 + net/core/skbuff.c | 2 +- net/core/sock.c | 31 +- net/ipv4/tcp_output.c | 7 +- net/mac80211/wext.c | 8 + net/netfilter/nf_conntrack_core.c | 2 - net/netfilter/nf_conntrack_netlink.c | 7 +- net/phonet/pn_dev.c | 2 +- net/rose/af_rose.c | 10 + net/sunrpc/svcsock.c | 9 +- net/unix/af_unix.c | 2 + net/unix/garbage.c | 13 +- net/wireless/reg.c | 4 +- scripts/kernel-doc | 10 +- sound/pci/hda/hda_codec.c | 4 +- sound/pci/hda/patch_sigmatel.c | 170 ++++-- sound/soc/fsl/Kconfig | 3 +- sound/sound_core.c | 6 +- 409 files changed, 6104 insertions(+), 3875 deletions(-) copy arch/powerpc/configs/{44x/virtex5_defconfig => 40x/virtex_defconfig} (86%) delete mode 100644 drivers/video/omap/lcd_sx1.c hooks/post-receive -- XFS development tree From xaiki@oss.sgi.com Thu Dec 4 22:39:01 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB54d12j011267 for ; Thu, 4 Dec 2008 22:39:01 -0600 Received: (from xaiki@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mB54d03d011238; Thu, 4 Dec 2008 22:39:00 -0600 Date: Thu, 4 Dec 2008 22:39:00 -0600 Message-Id: <200812050439.mB54d03d011238@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-linus, updated. v2.6.28-rc3-1310-g576a488 X-Git-Refname: refs/heads/for-linus X-Git-Reftype: branch X-Git-Oldrev: feaf3848a813a106f163013af6fcf6c4bfec92d9 X-Git-Newrev: 576a488a27f267af203f3ea69c700a1612335e9f This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-linus has been updated 576a488 [XFS] Fix hang after disallowed rename across directory quota domains from feaf3848a813a106f163013af6fcf6c4bfec92d9 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 576a488a27f267af203f3ea69c700a1612335e9f Author: Dave Chinner Date: Thu Dec 4 09:09:34 2008 +1100 [XFS] Fix hang after disallowed rename across directory quota domains When project quota is active and is being used for directory tree quota control, we disallow rename outside the current directory tree. This requires a check to be made after all the inodes involved in the rename are locked. We fail to unlock the inodes correctly if we disallow the rename when the target is outside the current directory tree. This results in a hang on the next access to the inodes involved in failed rename. Reported-by: Arkadiusz Miskiewicz Signed-off-by: Dave Chinner Tested-by: Arkadiusz Miskiewicz Signed-off-by: Lachlan McIlroy ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_rename.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) hooks/post-receive -- XFS development tree From lachlan@sgi.com Thu Dec 4 22:43:49 2008 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 mB54hnW1011558 for ; Thu, 4 Dec 2008 22:43:49 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id 0A7F130409D; Thu, 4 Dec 2008 20:43:41 -0800 (PST) Received: from chook.melbourne.sgi.com (chook.melbourne.sgi.com [134.14.54.237]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id PAA13284; Fri, 5 Dec 2008 15:43:39 +1100 Received: by chook.melbourne.sgi.com (Postfix, from userid 44625) id 65ECC58ADC07; Fri, 5 Dec 2008 15:43:39 +1100 (EST) Date: Fri, 05 Dec 2008 15:43:39 +1100 To: torvalds@linux-foundation.org Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, akpm@linux-foundation.org Subject: [GIT PULL] XFS update for 2.6.28 User-Agent: nail 11.25 7/29/05 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-Id: <20081205044339.65ECC58ADC07@chook.melbourne.sgi.com> From: lachlan@sgi.com (Lachlan McIlroy) The following changes since commit feaf3848a813a106f163013af6fcf6c4bfec92d9: Linus Torvalds (1): Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block are available in the git repository at: git://oss.sgi.com/xfs/xfs for-linus Dave Chinner (1): [XFS] Fix hang after disallowed rename across directory quota domains fs/xfs/xfs_rename.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) From lachlan@sgi.com Thu Dec 4 22:47:26 2008 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, DATE_IN_PAST_03_06,J_CHICKENPOX_35,J_CHICKENPOX_66 autolearn=no 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 mB54lQDU012240 for ; Thu, 4 Dec 2008 22:47:26 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id C3B903040B2; Thu, 4 Dec 2008 20:47:22 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id PAA13430; Fri, 5 Dec 2008 15:47:20 +1100 Message-ID: <49387CDE.2030904@sgi.com> Date: Fri, 05 Dec 2008 11:59:10 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: Eric Sandeen CC: xfs-oss Subject: Re: [PATCH] Fix off by one error in page_region_mask() References: <49378B60.1060603@sgi.com> <4937FAED.7060503@sandeen.net> In-Reply-To: <4937FAED.7060503@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Eric Sandeen wrote: > Lachlan McIlroy wrote: >> final is calculated to be the last bit to set (ie inclusive) but when we >> do the mask shifting final really needs to be first bit not to set. >> >> For example if first and final are both bit 0 (ie only first bit to be set) >> then mask is completely shifted and becomes all zeroes. >> >> Or if first is 0 and final is 63 then the mask is shifted one bit when it >> shouldn't be shifted at all. > > Lachlan, what's the end result of this bug? What's the broken behavior? There was no observed bug - well nothing I can tie directly to this code. I found this by inspection while investigating the page bitmap stuff. We have a problem with ia64 going to 64K page size with filesystems that use a filesystem sector size of 512 bytes - we don't have the granularity we need in the bitmap. I suppose it is possible this bug could indicate a page region is not up to date when it actually is and we might re-read something from disk and overwrite the more up to date in-memory version. > > Thanks, > -Eric > >> --- xfs-fix.orig/fs/xfs/linux-2.6/xfs_buf.c >> +++ xfs-fix/fs/xfs/linux-2.6/xfs_buf.c >> @@ -129,15 +129,17 @@ page_region_mask( >> int first, final; >> >> first = BTOPR(offset); >> - final = BTOPRT(offset + length - 1); >> - first = min(first, final); >> + final = BTOPRT(offset + length); >> + >> + if (first >= final) >> + return 0UL; >> >> mask = ~0UL; >> mask <<= BITS_PER_LONG - (final - first); >> mask >>= BITS_PER_LONG - (final); >> >> ASSERT(offset + length <= PAGE_CACHE_SIZE); >> - ASSERT((final - first) < BITS_PER_LONG && (final - first) >= 0); >> + ASSERT((final - first) <= BITS_PER_LONG && (final - first) > 0); >> >> return mask; >> } >> >> _______________________________________________ >> xfs mailing list >> xfs@oss.sgi.com >> http://oss.sgi.com/mailman/listinfo/xfs >> > > From sandeen@sandeen.net Thu Dec 4 22:58:42 2008 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 mB54wfG0012791 for ; Thu, 4 Dec 2008 22:58:42 -0600 X-ASG-Debug-ID: 1228453120-719500320000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0016F16B1FC2 for ; Thu, 4 Dec 2008 20:58:40 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 1bt7E7ZItFcBDqKW for ; Thu, 04 Dec 2008 20:58: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 sandeen.net (Postfix) with ESMTP id B92B9AC6272; Thu, 4 Dec 2008 22:53:08 -0600 (CST) Message-ID: <4938B3B4.6080505@sandeen.net> Date: Thu, 04 Dec 2008 22:53:08 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: lachlan@sgi.com CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] Fix off by one error in page_region_mask() Subject: Re: [PATCH] Fix off by one error in page_region_mask() References: <49378B60.1060603@sgi.com> <4937FAED.7060503@sandeen.net> <49387CDE.2030904@sgi.com> In-Reply-To: <49387CDE.2030904@sgi.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: 1228453121 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.11962 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Lachlan McIlroy wrote: > Eric Sandeen wrote: >> Lachlan McIlroy wrote: >>> final is calculated to be the last bit to set (ie inclusive) but when we >>> do the mask shifting final really needs to be first bit not to set. >>> >>> For example if first and final are both bit 0 (ie only first bit to be set) >>> then mask is completely shifted and becomes all zeroes. >>> >>> Or if first is 0 and final is 63 then the mask is shifted one bit when it >>> shouldn't be shifted at all. >> Lachlan, what's the end result of this bug? What's the broken behavior? > > There was no observed bug - well nothing I can tie directly to this code. > I found this by inspection while investigating the page bitmap stuff. > We have a problem with ia64 going to 64K page size with filesystems that > use a filesystem sector size of 512 bytes - we don't have the granularity > we need in the bitmap. > > I suppose it is possible this bug could indicate a page region is not up > to date when it actually is and we might re-read something from disk and > overwrite the more up to date in-memory version. ah, ok. So I've seen this corruption on 64k pages too, on ppc... but I take it this patch doesn't fix it... Thanks, -Eric From lachlan@sgi.com Thu Dec 4 23:05:58 2008 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 (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB555w5h013188 for ; Thu, 4 Dec 2008 23:05:58 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id B46948F8084; Thu, 4 Dec 2008 21:05:53 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA13719; Fri, 5 Dec 2008 16:05:51 +1100 Message-ID: <4938B6CA.80205@sgi.com> Date: Fri, 05 Dec 2008 16:06:18 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: Eric Sandeen CC: xfs-oss Subject: Re: [PATCH] Fix off by one error in page_region_mask() References: <49378B60.1060603@sgi.com> <4937FAED.7060503@sandeen.net> <49387CDE.2030904@sgi.com> <4938B3B4.6080505@sandeen.net> In-Reply-To: <4938B3B4.6080505@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Eric Sandeen wrote: > Lachlan McIlroy wrote: >> Eric Sandeen wrote: >>> Lachlan McIlroy wrote: >>>> final is calculated to be the last bit to set (ie inclusive) but when we >>>> do the mask shifting final really needs to be first bit not to set. >>>> >>>> For example if first and final are both bit 0 (ie only first bit to be set) >>>> then mask is completely shifted and becomes all zeroes. >>>> >>>> Or if first is 0 and final is 63 then the mask is shifted one bit when it >>>> shouldn't be shifted at all. >>> Lachlan, what's the end result of this bug? What's the broken behavior? >> There was no observed bug - well nothing I can tie directly to this code. >> I found this by inspection while investigating the page bitmap stuff. >> We have a problem with ia64 going to 64K page size with filesystems that >> use a filesystem sector size of 512 bytes - we don't have the granularity >> we need in the bitmap. >> >> I suppose it is possible this bug could indicate a page region is not up >> to date when it actually is and we might re-read something from disk and >> overwrite the more up to date in-memory version. > > ah, ok. So I've seen this corruption on 64k pages too, on ppc... but I > take it this patch doesn't fix it... I don't know - it might help. But there's still an issue beyond this patch that needs fixing. From tes@sgi.com Thu Dec 4 23:44:24 2008 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 relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB55iNSx015791 for ; Thu, 4 Dec 2008 23:44:24 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay3.corp.sgi.com (Postfix) with SMTP id DD842AC020; Thu, 4 Dec 2008 21:44:17 -0800 (PST) Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA14271; Fri, 5 Dec 2008 16:44:14 +1100 Message-ID: <4938BFAE.5090504@sgi.com> Date: Fri, 05 Dec 2008 16:44:14 +1100 From: Timothy Shimmin User-Agent: Thunderbird 2.0.0.17 (Macintosh/20080914) MIME-Version: 1.0 To: Andi Kleen CC: Mikulas Patocka , Andi Kleen , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Milan Broz Subject: Re: Device loses barrier support References: <20081204100050.GN6703@one.firstfloor.org> <20081204142015.GQ6703@one.firstfloor.org> <20081204145810.GR6703@one.firstfloor.org> In-Reply-To: <20081204145810.GR6703@one.firstfloor.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Andi Kleen wrote: > The write block with barrier bit varies, jbd/gfs2 do it synchronously > too and xfs does it asynchronously (with io done callbacks), but > in both cases they handle an EOPNOTSUPP comming out in the final > io done. > Yes, XFS handles it, however, it doesn't look like we currently propagate the EOPNOTSUPP up to where we test it (not set for b_error). Patch disscussed recently on xfs list to rectify this. --Tim From lachlan@sgi.com Fri Dec 5 01:10:03 2008 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_42, J_CHICKENPOX_66 autolearn=no 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 mB57A3um024083 for ; Fri, 5 Dec 2008 01:10:03 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id 25328304064 for ; Thu, 4 Dec 2008 23:09:58 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id SAA15599 for ; Fri, 5 Dec 2008 18:09:57 +1100 Message-ID: <4938D3E0.5050501@sgi.com> Date: Fri, 05 Dec 2008 18:10:24 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: xfs-oss Subject: [RFC, PATCH] XFS_TRANS_DEBUG fixes Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit XFS_TRANS_DEBUG is not enabled on a debug build and has suffered some bit rot. Below is a set of fixes to get it working again. Whether it's of any use I don't know but if we are going to carry the code we might as well make it work. Some of the things I had to do to get it to work (and could be done some other way) are: - all buffers that are logged need to be mapped into kernel space so the debugging code can make a copy of the buffer data and compare it later. The easiest way to do that is to make all buffers mapped in xfs_bug_get_flags() when XFS_TRANS_DEBUG is set. - turning XFS_TRANS_DEBUG on does make the system run really slow (even slower than a normal debug build) so we might want to keep it optional. - Some bit setting functions (btst()/bset()/bfset()) appear to be missing so I've coded up some trivial versions. There maybe some linux kernel functions that do the same thing. - the transaction debugging code will detect if we have modified more data in a buffer than we have indicated to be logged. This picked up two places where we modify a inode cluster buffer without logging it - firstly when we create a new inode cluster we zero the entire buffer but only log the inode fields (ie data after the xfs_dicore_t finishes is modified) and secondly the bulkstat hack that zeroes the di_mode. I don't know if not logging these buffer changes is actually a bug or not. Is this debugging code worth hanging onto or should we just ditch the whole lot? diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index cd89c56..4ee182c 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c @@ -584,6 +584,10 @@ xfs_buf_get_flags( xfs_buf_t *bp, *new_bp; int error = 0, i; +#ifdef XFS_TRANS_DEBUG + flags |= XBF_MAPPED; +#endif + new_bp = xfs_buf_allocate(flags); if (unlikely(!new_bp)) return NULL; diff --git a/fs/xfs/xfs.h b/fs/xfs/xfs.h index 17254b5..3df4a54 100644 --- a/fs/xfs/xfs.h +++ b/fs/xfs/xfs.h @@ -38,6 +38,7 @@ #define XFS_RW_TRACE 1 #define XFS_BUF_TRACE 1 #define XFS_INODE_TRACE 1 +#define XFS_TRANS_DEBUG 1 #define XFS_FILESTREAMS_TRACE 1 #endif diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c index d245d04..bb019a0 100644 --- a/fs/xfs/xfs_buf_item.c +++ b/fs/xfs/xfs_buf_item.c @@ -35,6 +35,37 @@ kmem_zone_t *xfs_buf_item_zone; #ifdef XFS_TRANS_DEBUG /* + * Test bit b in bitmap bp + */ +int +btst(char *bp, int b) +{ + return (*(bp + (b >> 3)) & (0x80 >> (b & 0x7))); +} + +/* + * Set bit b in bitmap bp + */ +void +bset(char *bp, int b) +{ + *(bp + (b >> 3)) |= (0x80 >> (b & 0x7)); +} + +/* + * Set a bit field of length len in bitmap bp starting at b + */ +void +bfset(char *bp, int b, int len) +{ + while (len) { + bset(bp, b); + len--; + b++; + } +} + +/* * This function uses an alternate strategy for tracking the bytes * that the user requests to be logged. This can then be used * in conjunction with the bli_orig array in the buf log item to @@ -126,7 +157,7 @@ xfs_buf_item_log_check( for (x = 0; x < XFS_BUF_COUNT(bp); x++) { if (orig[x] != buffer[x] && !btst(bip->bli_logged, x)) cmn_err(CE_PANIC, - "xfs_buf_item_log_check bip %x buffer %x orig %x index %d", + "xfs_buf_item_log_check bip %p buffer %p orig %p index %d", bip, bp, orig, x); } } diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index e6ebbae..681d622 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -353,6 +353,8 @@ xfs_ialloc_ag_alloc( * transactions causing a lot of log traffic. */ xfs_biozero(fbuf, 0, ninodes << args.mp->m_sb.sb_inodelog); + xfs_trans_log_buf(tp, fbuf, 0, + (ninodes << args.mp->m_sb.sb_inodelog) - 1); for (i = 0; i < ninodes; i++) { int ioffset = i << args.mp->m_sb.sb_inodelog; uint isize = sizeof(struct xfs_dinode); diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 063da34..9d5df3a 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -2121,6 +2121,7 @@ xfs_ifree( { int error; int delete; + int offset; xfs_ino_t first_ino; xfs_dinode_t *dip; xfs_buf_t *ibp; @@ -2179,6 +2180,8 @@ xfs_ifree( * in the future. */ dip->di_mode = 0; + offset = ip->i_imap.im_boffset + offsetof(xfs_dinode_t, di_mode); + xfs_trans_log_buf(tp, ibp, offset, (offset + sizeof(__be16) - 1)); if (delete) { xfs_ifree_cluster(ip, tp, first_ino); @@ -2598,9 +2601,7 @@ xfs_iflush_fork( char *cp; xfs_ifork_t *ifp; xfs_mount_t *mp; -#ifdef XFS_TRANS_DEBUG - int first; -#endif + static const short brootflag[2] = { XFS_ILOG_DBROOT, XFS_ILOG_ABROOT }; static const short dataflag[2] = @@ -3004,9 +3005,6 @@ xfs_iflush_int( xfs_inode_log_item_t *iip; xfs_dinode_t *dip; xfs_mount_t *mp; -#ifdef XFS_TRANS_DEBUG - int first; -#endif ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_ILOCK_SHARED)); ASSERT(!completion_done(&ip->i_flush)); --- a/fs/xfs/xfsidbg.c 2008-12-04 14:04:58.000000000 +1100 +++ b/fs/xfs/xfsidbg.c 2008-12-04 13:58:54.000000000 +1100 @@ -3231,7 +3208,7 @@ xfs_buf_item_print(xfs_buf_log_item_t *b kdb_printf("blf flags: "); printflags((uint)blip->bli_format.blf_flags, blf_flags, NULL); #ifdef XFS_TRANS_DEBUG - kdb_printf("orig 0x%x logged 0x%x", + kdb_printf("orig 0x%p logged 0x%p", blip->bli_orig, blip->bli_logged); #endif kdb_printf("\n"); @@ -3599,7 +3576,7 @@ xfs_inode_item_print(xfs_inode_log_item_ ilip->ili_ilock_recur, ilip->ili_iolock_recur, ilip->ili_extents_buf); #ifdef XFS_TRANS_DEBUG - kdb_printf("root bytes %d root orig 0x%x\n", + kdb_printf("root bytes %d root orig 0x%p\n", ilip->ili_root_size, ilip->ili_orig_root); #endif kdb_printf("size %d ", ilip->ili_format.ilf_size); From andi@firstfloor.org Fri Dec 5 06:18:53 2008 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 mB5CIpXq013384 for ; Fri, 5 Dec 2008 06:18:53 -0600 X-ASG-Debug-ID: 1228479530-2ac500f60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from one.firstfloor.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 197AC16B5797 for ; Fri, 5 Dec 2008 04:18:50 -0800 (PST) Received: from one.firstfloor.org (one.firstfloor.org [213.235.205.2]) by cuda.sgi.com with ESMTP id M3ZaQJtaQTeGgYRn for ; Fri, 05 Dec 2008 04:18:50 -0800 (PST) Received: by one.firstfloor.org (Postfix, from userid 503) id D8E151AD0021; Fri, 5 Dec 2008 13:29:30 +0100 (CET) Date: Fri, 5 Dec 2008 13:29:30 +0100 From: Andi Kleen To: Alan Cox Cc: Andi Kleen , Mikulas Patocka , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Andi Kleen , Milan Broz X-ASG-Orig-Subj: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Subject: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Message-ID: <20081205122930.GB6703@one.firstfloor.org> References: <20081204145810.GR6703@one.firstfloor.org> <20081204174838.GS6703@one.firstfloor.org> <20081204221551.GV6703@one.firstfloor.org> <20081205004849.GX6703@one.firstfloor.org> <20081205013739.GZ6703@one.firstfloor.org> <20081205115225.13c277ee@lxorguk.ukuu.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081205115225.13c277ee@lxorguk.ukuu.org.uk> User-Agent: Mutt/1.4.2.1i X-Barracuda-Connect: one.firstfloor.org[213.235.205.2] X-Barracuda-Start-Time: 1228479531 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.11982 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- > Not when the fundamental design of the code is broken and trashes > performance. Sorry but that's just not correct. There's nothing in late failing barriers that "trashes performance". The file system writers have to be careful to handle it, but at least the current ones all do. And also if someone writes a hypothetical fully asynchronously driven barrier based IO transaction system it would be still possible to handle the late failing barrier without too many complications. Also late failing barriers is pretty much the only sane way to implement barriers in software remapping schemes like DM and MD. -Andi -- ak@linux.intel.com From jpiszcz@lucidpixels.com Fri Dec 5 07:25:29 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_27 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 mB5DPTIF018017 for ; Fri, 5 Dec 2008 07:25:29 -0600 X-ASG-Debug-ID: 1228483527-18d100150000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3CD041BF091C for ; Fri, 5 Dec 2008 05:25:27 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id MEqfdPHDMuF9JKgJ for ; Fri, 05 Dec 2008 05:25:27 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 28ACC203C1727; Fri, 5 Dec 2008 08:19:56 -0500 (EST) Date: Fri, 5 Dec 2008 08:19:55 -0500 (EST) From: Justin Piszcz To: linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com, smartmontools-support@lists.sourceforge.net X-ASG-Orig-Subj: Velociraptor drive related to the use of NCQ. Subject: Velociraptor drive related to the use of NCQ. Message-ID: User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1228483528 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.11988 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- I swapped out my power supply, changed ALL cables and bought a $1000 raid controller with BBU, the drives are still having problems, when writing to them in a RAID10 configuration, it locks up the card: SMART shows the same thing on many of the disks in the RAID10: Error 1 occurred at disk power-on lifetime: 3708 hours (154 days + 12 hours) When the command that caused the error occurred, the device was active or idle. After command completion occurred, registers were: ER ST SC SN CL CH DH -- -- -- -- -- -- -- 10 51 00 00 8d b8 40 Commands leading to the command that caused the error were: CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name -- -- -- -- -- -- -- -- ---------------- -------------------- 61 80 18 00 6c 91 19 08 00:57:50.230 WRITE FPDMA QUEUED 61 80 18 00 cd b7 19 08 00:57:50.148 WRITE FPDMA QUEUED 61 80 e8 80 cc b7 19 08 00:57:50.147 WRITE FPDMA QUEUED 61 80 18 00 cc b7 19 08 00:57:50.147 WRITE FPDMA QUEUED 61 80 e8 80 cb b7 19 08 00:57:50.146 WRITE FPDMA QUEUED The card has the latest 3ware BIOS/Firmware etc, the diag output from the card itself: DcbMgr::WriteSegment(map=0x4B7E38, segID=0x32, events=20, error=0x0) DcbMgr::WriteSegment(map=0x4B7E38, segID=0x32, events=20, error=0x0) DcbMgr::WriteSegment(map=0x4B7E38, segID=0x32, events=20, error=0x0) DcbMgr::WriteSegment(map=0x4B7E38, segID=0x32, events=20, error=0x0) E=1019 T=19:57:26 : Drive removed task file written out : cd dh ch cl sn sc ft : 61 59 B8 8E 00 80 80 E=1019 T=19:57:26 P=Bh: Hard reset drive P=Bh: HardResetDriveWait task file read back : st dh ch cl sn sc er : 50 00 00 00 01 01 01 E=1019 T=19:57:26 P=B : Soft reset drive E=0207 T=19:57:26 P=B : ResetDriveWait E=1019 T=19:57:26 P=B : Inserting Set UDMA command E=1019 T=19:57:26 P=B : Check power mode, active E=1019 T=19:57:26 P=B : Check drive swap, same drive E=1019 T=19:57:26 P=B : Check power cycles, initial=57, current=57 E=1019 T=19:57:26 P=Bh: exitCode = 0 Retrying chain DcbMgr::WriteSegment(map=0x4B7E38, segID=0x32, events=20, error=0x0) DcbMgr::WriteSegment(map=0x4B7E38, segID=0x32, events=20, error=0x0) Hm the last thing I will try I suppose is disabling NCQ and see if the problem recurs. So I did this, after 3-4 times of running the following with NCQ enabled, I would try it once more, the final time with NCQ disabled. dd if=/dev/zero of=bigfile bs=1M on the raid10 and having it crash everytime when NCQ was enabled. -- I don't want to get too excited yet but after disabling NCQ I was able to write to the RAID10 - over the entire array without it crashing! Where before it would get to 700-985GiB/1.4TiB and then all processes would go into D-state and I could not even echo b > sysrq-trigger to bring the host back up, it required a manual reboot. -- I will let it run a few more times before making any further comments though. echo "writing to raid10" writing to raid10 dd if=/dev/zero of=file2 bs=1M dd: writing `file2': No space left on device 1430328+0 records in 1430327+0 records out 1499806973952 bytes (1.5 TB) copied, 3914.51 s, 383 MB/s Just as with Linux-- when using NCQ Western Digital Raptor Drives (150) or Velociraptor Drives (300s) the drives in RAID; whether in Linux SW RAID or 3ware HW RAID, the result is the same, unstable drives, they appear to 'reset' or timeout and this obviously will cause problems with any RAID implementation. NCQ+Velociraptor => Bad in raid configuration, in non-raid it may be OK, I have not tested. I also have another host here that uses the P35 chipset and uses raptors in sw raid 1-- when NCQ is enabled (and with the 750s as well) it gets nasty NCQ errors and drive timeouts etc. With this data, essentially the NCQ implementation on raptors or WD 750s in a RAID configuration has problems. I also have a 750 which I have used for 1-2 years now (using NCQ) in a single-disk configuration with NO issues, so whatever the problem is-- only relates to when the disk is in a RAID configuration and in my case in Linux SW RAID or 3ware HW RAID. Justin. From jpiszcz@lucidpixels.com Fri Dec 5 08:00:29 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.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 mB5E0Rha019904 for ; Fri, 5 Dec 2008 08:00:29 -0600 X-ASG-Debug-ID: 1228485625-2d8500ad0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2B23B16B6477 for ; Fri, 5 Dec 2008 06:00:25 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id sHPjhFqyOGjIXVfj for ; Fri, 05 Dec 2008 06:00:25 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 1C3842035F642; Fri, 5 Dec 2008 08:59:54 -0500 (EST) Date: Fri, 5 Dec 2008 08:59:54 -0500 (EST) From: Justin Piszcz To: linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com, smartmontools-support@lists.sourceforge.net cc: Alan Piszcz X-ASG-Orig-Subj: Re: Velociraptor drive related to the use of NCQ. Subject: Re: Velociraptor drive related to the use of NCQ. In-Reply-To: Message-ID: References: User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1228485626 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.11990 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, 5 Dec 2008, Justin Piszcz wrote: > I swapped out my power supply, changed ALL cables and bought a $1000 raid > controller with BBU, the drives are still having problems, when writing to > them in a RAID10 configuration, it locks up the card: > > SMART shows the same thing on many of the disks in the RAID10: > > Error 1 occurred at disk power-on lifetime: 3708 hours (154 days + 12 hours) > When the command that caused the error occurred, the device was active or > idle. I spoke to soon, turning off NCQ helped dramatically, it worked three times! writing to raid10 dd: writing `file2': No space left on device 1430328+0 records in 1430327+0 records out 1499806973952 bytes (1.5 TB) copied, 3914.51 s, 383 MB/s Fri Dec 5 06:00:25 EST 2008 writing to raid10 dd: writing `file2': No space left on device 1430328+0 records in 1430327+0 records out 1499806973952 bytes (1.5 TB) copied, 4063.25 s, 369 MB/s Fri Dec 5 07:08:11 EST 2008 writing to raid10 dd: writing `file2': No space left on device 1430328+0 records in 1430327+0 records out 1499806973952 bytes (1.5 TB) copied, 3926.71 s, 382 MB/s Fri Dec 5 08:13:41 EST 2008 Then it crashed again, with NCQ enabled, it would not even complete one test, So basically a new system, new PSU, new cables, its on a new APC UPS and the problem persists even when all disks are on a RAID card, SW raid, it does not matter, Velociraptors have problems, I think its time for me to get regular 1TiB disks and be done with it. Justin. From alan@lxorguk.ukuu.org.uk Fri Dec 5 10:35:55 2008 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 mB5GZs3U029389 for ; Fri, 5 Dec 2008 10:35:55 -0600 X-ASG-Debug-ID: 1228494951-66fa00d30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lxorguk.ukuu.org.uk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CE23816BDBC2 for ; Fri, 5 Dec 2008 08:35:51 -0800 (PST) Received: from lxorguk.ukuu.org.uk (earthlight.etchedpixels.co.uk [81.2.110.250]) by cuda.sgi.com with ESMTP id KcYFdvsCXhbykIXQ for ; Fri, 05 Dec 2008 08:35:51 -0800 (PST) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by lxorguk.ukuu.org.uk (8.14.2/8.14.2) with ESMTP id mB5BqQK0005266; Fri, 5 Dec 2008 11:52:26 GMT Date: Fri, 5 Dec 2008 11:52:25 +0000 From: Alan Cox To: Andi Kleen Cc: Mikulas Patocka , Andi Kleen , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Andi Kleen , Milan Broz X-ASG-Orig-Subj: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Subject: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Message-ID: <20081205115225.13c277ee@lxorguk.ukuu.org.uk> In-Reply-To: <20081205013739.GZ6703@one.firstfloor.org> References: <20081204142015.GQ6703@one.firstfloor.org> <20081204145810.GR6703@one.firstfloor.org> <20081204174838.GS6703@one.firstfloor.org> <20081204221551.GV6703@one.firstfloor.org> <20081205004849.GX6703@one.firstfloor.org> <20081205013739.GZ6703@one.firstfloor.org> X-Mailer: Claws Mail 3.5.0 (GTK+ 2.12.12; x86_64-redhat-linux-gnu) Organization: Red Hat UK Cyf., Amberley Place, 107-111 Peascod Street, Windsor, Berkshire, SL4 1TE, Y Deyrnas Gyfunol. Cofrestrwyd yng Nghymru a Lloegr o'r rhif cofrestru 3798903 Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Barracuda-Connect: earthlight.etchedpixels.co.uk[81.2.110.250] X-Barracuda-Start-Time: 1228494953 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.12000 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, 5 Dec 2008 02:37:39 +0100 Andi Kleen wrote: > > * barrier support in md-raid1 deviates from the specification at > > Documentation/block/barrier.txt. The specification says that requests > > submitted after the barrier request hit the media after the barrier > > request hits the media. The reality is that the barrier request can be > > randomly aborted and the requests submitted after it hit the media before > > the barrier request. > > Yes the spec should be probably updated. > > But also see Linus' rant from yesterday about code vs documentation. > When in doubt the code wins. Not when the fundamental design of the code is broken and trashes performance. The documented behaviour is strongly desirable. Alan From sandeen@sandeen.net Fri Dec 5 11:30:25 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.2 required=5.0 tests=AWL,BAYES_00,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 mB5HUPVK000758 for ; Fri, 5 Dec 2008 11:30:25 -0600 X-ASG-Debug-ID: 1228498223-7ca901fc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 67D0A16BDA82 for ; Fri, 5 Dec 2008 09:30:23 -0800 (PST) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id QUVEhN99S3D3byAe for ; Fri, 05 Dec 2008 09:30:23 -0800 (PST) Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id mB5HUMhJ025553 for ; Fri, 5 Dec 2008 12:30:23 -0500 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id mB5HUKag003809 for ; Fri, 5 Dec 2008 12:30:22 -0500 Received: from neon.msp.redhat.com (neon.msp.redhat.com [10.15.80.10]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id mB5HUGJL002446 for ; Fri, 5 Dec 2008 12:30:19 -0500 Message-ID: <49396528.1090700@sandeen.net> Date: Fri, 05 Dec 2008 11:30:16 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (X11/20081119) MIME-Version: 1.0 To: xfs mailing list X-ASG-Orig-Subj: [PATCH] fix up xfs-cmds build after the parallel-fest Subject: [PATCH] fix up xfs-cmds build after the parallel-fest Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.58 on 172.16.27.26 X-Barracuda-Connect: mx2.redhat.com[66.187.237.31] X-Barracuda-Start-Time: 1228498224 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.12003 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- My big parallel build patch lost the "make configure" target. This broke Makepkgs... Now, IMHO, running configure from make is a little bass-ackwards; I'd probably prefer to have Makepkgs explicitly run: autoconf; configure --myoptions; make but for now, this adds back in a workable "make configure" target. Also fixed "make install-lib" for acl, which was failing in the man subdir. Signed-off-by: Eric Sandeen Index: xfs-cmds/acl/Makefile =================================================================== --- xfs-cmds.orig/acl/Makefile 2008-12-05 10:42:40.000000000 -0600 +++ xfs-cmds/acl/Makefile 2008-12-05 10:46:04.977513746 -0600 @@ -38,7 +38,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoconf ./configure \ --prefix=/ \ Index: xfs-cmds/acl/man/Makefile =================================================================== --- xfs-cmds.orig/acl/man/Makefile 2008-12-05 10:42:40.000000000 -0600 +++ xfs-cmds/acl/man/Makefile 2008-12-05 10:48:20.842513303 -0600 @@ -13,10 +13,15 @@ install : $(addsuffix -install,$(SUBDIRS install-dev : $(addsuffix -install-dev,$(SUBDIRS)) +install-lib: $(addsuffix -install-lib,$(SUBDIRS)) + %-install: $(MAKE) -C $* install %-install-dev: $(MAKE) -C $* install-dev +%-install-lib: + $(MAKE) -C $* install-lib + include $(BUILDRULES) Index: xfs-cmds/dmapi/Makefile =================================================================== --- xfs-cmds.orig/dmapi/Makefile 2008-12-05 10:42:40.000000000 -0600 +++ xfs-cmds/dmapi/Makefile 2008-12-05 11:07:59.130513205 -0600 @@ -36,7 +36,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoconf ./configure \ --prefix=/ \ Index: xfs-cmds/xfsprogs/Makefile =================================================================== --- xfs-cmds.orig/xfsprogs/Makefile 2008-12-05 11:08:55.000000000 -0600 +++ xfs-cmds/xfsprogs/Makefile 2008-12-05 11:09:03.698512814 -0600 @@ -44,7 +44,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoconf ./configure \ --prefix=/ \ Index: xfs-cmds/xfsdump/Makefile =================================================================== --- xfs-cmds.orig/xfsdump/Makefile 2008-12-05 10:42:40.000000000 -0600 +++ xfs-cmds/xfsdump/Makefile 2008-12-05 11:12:26.074512652 -0600 @@ -37,7 +37,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoconf ./configure \ --prefix=/ \ Index: xfs-cmds/nfs4acl/Makefile =================================================================== --- xfs-cmds.orig/nfs4acl/Makefile 2008-12-05 10:42:40.000000000 -0600 +++ xfs-cmds/nfs4acl/Makefile 2008-12-05 11:27:54.454512630 -0600 @@ -39,7 +39,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoconf ./configure \ --prefix=/ \ Index: xfs-cmds/xfstests/Makefile =================================================================== --- xfs-cmds.orig/xfstests/Makefile 2008-12-05 10:42:40.000000000 -0600 +++ xfs-cmds/xfstests/Makefile 2008-12-05 11:27:59.947513229 -0600 @@ -42,7 +42,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoheader autoconf ./configure \ From SRS0+721e25bd0b5082605cd5+1930+infradead.org+hch@bombadil.srs.infradead.org Fri Dec 5 11:42:18 2008 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 mB5HgH1l001276 for ; Fri, 5 Dec 2008 11:42:18 -0600 X-ASG-Debug-ID: 1228498936-376a00c40000-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 282CC16BE727 for ; Fri, 5 Dec 2008 09:42:17 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id QQeFMrokfpPACqZo for ; Fri, 05 Dec 2008 09:42:17 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L8ec8-0003VK-BX; Fri, 05 Dec 2008 17:37:16 +0000 Date: Fri, 5 Dec 2008 12:37:16 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs mailing list X-ASG-Orig-Subj: Re: [PATCH] fix up xfs-cmds build after the parallel-fest Subject: Re: [PATCH] fix up xfs-cmds build after the parallel-fest Message-ID: <20081205173716.GA8216@infradead.org> References: <49396528.1090700@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49396528.1090700@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: 1228498937 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Fri, Dec 05, 2008 at 11:30:16AM -0600, Eric Sandeen wrote: > My big parallel build patch lost the "make configure" target. > This broke Makepkgs... > > Now, IMHO, running configure from make is a little bass-ackwards; > I'd probably prefer to have Makepkgs explicitly run: > > autoconf; configure --myoptions; make > > but for now, this adds back in a workable "make configure" target. > > Also fixed "make install-lib" for acl, which was failing > in the man subdir. Thanks, this fixes the dpkg build for me. From 7eggert@gmx.de Fri Dec 5 12:21:12 2008 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 mB5ILCC4004303 for ; Fri, 5 Dec 2008 12:21:12 -0600 X-ASG-Debug-ID: 1228501270-6e1a00920000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-in-05.arcor-online.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3415A16C2AC4 for ; Fri, 5 Dec 2008 10:21:10 -0800 (PST) Received: from mail-in-05.arcor-online.net (mail-in-05.arcor-online.net [151.189.21.45]) by cuda.sgi.com with ESMTP id h0Une94ApJL3DMTe for ; Fri, 05 Dec 2008 10:21:10 -0800 (PST) Received: from mail-in-06-z2.arcor-online.net (mail-in-06-z2.arcor-online.net [151.189.8.18]) by mail-in-05.arcor-online.net (Postfix) with ESMTP id 5CC231835D0; Fri, 5 Dec 2008 19:21:09 +0100 (CET) Received: from mail-in-06.arcor-online.net (mail-in-06.arcor-online.net [151.189.21.46]) by mail-in-06-z2.arcor-online.net (Postfix) with ESMTP id 4C2C6ABAD3; Fri, 5 Dec 2008 19:21:09 +0100 (CET) Received: from be10.7eggert.dyndns.org (dslb-088-071-015-038.pools.arcor-ip.net [88.71.15.38]) (Authenticated sender: x7eggert@arcor.de) by mail-in-06.arcor-online.net (Postfix) with ESMTP id 2023335E718; Fri, 5 Dec 2008 19:21:09 +0100 (CET) Received: from be1.lrz ([192.168.1.201] helo=be1.7eggert.dyndns.org) by be10.7eggert.dyndns.org with esmtp (Exim 4.54) id 1L8fIY-0004PH-HX; Fri, 05 Dec 2008 19:21:06 +0100 Received: from [127.0.0.1] (helo=localhost) by be1.7eggert.dyndns.org with esmtp (Exim 4.67) (envelope-from <7eggert@gmx.de>) id 1L8fIY-0001ui-DV; Fri, 05 Dec 2008 19:21:06 +0100 From: Bodo Eggert <7eggert@gmx.de> X-ASG-Orig-Subj: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Subject: Re: Device loses barrier support (was: Fixed patch for simple barriers.) To: Andi Kleen , Alan Cox , Andi Kleen , Mikulas Patocka , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Andi Kleen , Milan Broz Reply-To: 7eggert@gmx.de Date: Fri, 05 Dec 2008 19:21:06 +0100 References: Lines: 36 User-Agent: KNode/0.10.4 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7Bit Message-Id: X-be10.7eggert.dyndns.org-MailScanner-Information: See www.mailscanner.info for information X-be10.7eggert.dyndns.org-MailScanner: Found to be clean X-be10.7eggert.dyndns.org-MailScanner-From: 7eggert@gmx.de X-Virus-Scanned: ClamAV 0.94.1/8728/Fri Dec 5 16:44:27 2008 on mail-in-06.arcor-online.net X-Virus-Status: Clean X-Barracuda-Connect: mail-in-05.arcor-online.net[151.189.21.45] X-Barracuda-Start-Time: 1228501271 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1186 1.0000 -1.2824 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.28 X-Barracuda-Spam-Status: No, SCORE=-1.28 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.12007 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Andi Kleen wrote: >> Not when the fundamental design of the code is broken and trashes >> performance. > > Sorry but that's just not correct. There's nothing in late failing > barriers that "trashes performance". The file system writers have > to be careful to handle it, but at least the current ones all do. So let's keep requiring the "trashes performance" hacks, because they're not directly in the barriers code? Hey, we nailed one foot to the ground, and since it's not the nail's fault, let's do the same to the other foot? It does not matter, since we can't move around right now, so it's a pretty neat idea, isn't it? > And also if someone writes a hypothetical fully asynchronously driven > barrier based IO transaction system it would be still possible to handle > the late failing barrier without too many complications. You can just replace barriers with NOPs without too many complications, because it only matters in cases of system failure. And even then, it's only the difference between having a filesystem corruption and not having it ... Who'd care? > Also late failing barriers is pretty much the only sane way to implement > barriers in software remapping schemes like DM and MD. No, and seeing the same resubmit logic in more than one place should give you the clue, even if you don't grasp that intermixing requests which explicitely MUST NOT be intermixed is wrong. The sane way is having a software barrier in DM and MD, going back to sync if the new hardware does not support barriers in hardware. The filesystems should not even need to know if barriers are supported, just use them and they'll DTRT in any case. Any other interface is worse than useless. From andi@firstfloor.org Fri Dec 5 12:35:12 2008 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 mB5IZBfB005182 for ; Fri, 5 Dec 2008 12:35:12 -0600 X-ASG-Debug-ID: 1228502110-771e00a10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from one.firstfloor.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 11B6816A2B9B for ; Fri, 5 Dec 2008 10:35:10 -0800 (PST) Received: from one.firstfloor.org (one.firstfloor.org [213.235.205.2]) by cuda.sgi.com with ESMTP id BIH41JYuudEISH03 for ; Fri, 05 Dec 2008 10:35:10 -0800 (PST) Received: by one.firstfloor.org (Postfix, from userid 503) id EBE2F1AD0021; Fri, 5 Dec 2008 19:41:14 +0100 (CET) Date: Fri, 5 Dec 2008 19:41:14 +0100 From: Andi Kleen To: Bodo Eggert <7eggert@gmx.de> Cc: Andi Kleen , Alan Cox , Mikulas Patocka , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Andi Kleen , Milan Broz X-ASG-Orig-Subj: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Subject: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Message-ID: <20081205184114.GE6703@one.firstfloor.org> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.1i X-Barracuda-Connect: one.firstfloor.org[213.235.205.2] X-Barracuda-Start-Time: 1228502111 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.12007 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Dec 05, 2008 at 07:21:06PM +0100, Bodo Eggert wrote: > Andi Kleen wrote: > > >> Not when the fundamental design of the code is broken and trashes > >> performance. > > > > Sorry but that's just not correct. There's nothing in late failing > > barriers that "trashes performance". The file system writers have > > to be careful to handle it, but at least the current ones all do. > > So let's keep requiring the "trashes performance" hacks, because they're Again there's nothing about the code that handles this that "trashes performance". Mickulas was just ranting that the current file systems don't use barriers in the way he thinks they ought to be used, but that is completely orthogonal to the problem if barriers may fail late or not. In Mickulas imaginary barrier world it would be slightly more complicated to handle it, but far from impossible. And again if there it wouldn't affect performance. In the real world Linux barrier world handling late failing barriers in the fs is also very easy currently. -Andi From xfs@bob.dscon.sk Fri Dec 5 20:36:13 2008 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_27 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 mB62aCRB002567 for ; Fri, 5 Dec 2008 20:36:13 -0600 X-ASG-Debug-ID: 1228530971-73e701590000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bob.dscon.sk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1786E16C792C for ; Fri, 5 Dec 2008 18:36:11 -0800 (PST) Received: from bob.dscon.sk (bob.dscon.sk [88.86.113.10]) by cuda.sgi.com with ESMTP id 2rIAEUWyhdIiJDWX for ; Fri, 05 Dec 2008 18:36:11 -0800 (PST) Received: by bob.dscon.sk (Postfix, from userid 1007) id 4E40CDC350; Sat, 6 Dec 2008 03:36:09 +0100 (CET) Date: Sat, 6 Dec 2008 03:36:09 +0100 To: xfs@oss.sgi.com X-ASG-Orig-Subj: kernel 2.6.27.7 problem Subject: kernel 2.6.27.7 problem Message-ID: <20081206023608.GA22135@bob.dscon.sk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.13 (2006-08-11) From: xfs@bob.dscon.sk (DS) X-Barracuda-Connect: bob.dscon.sk[88.86.113.10] X-Barracuda-Start-Time: 1228530972 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.12037 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi, I have trouble with xfs after upgrade kernel 2.6.24.3 -> 2.6.27.7. Message on console: end_request: I/O error, dev sde, sector 351572544 I/O error in filesystem ("sde1") meta-data dev sde1 block 0x14f49201 ("xlog_iodone") error 5 buf count 9728 xfs_force_shutdown(sde1,0x2) called from line 1056 of file fs/xfs/xfs_log.c. Return address = 0xffffffff80373233 Filesystem "sde1": Log I/O Error Detected. Shutting down filesystem: sde1 Please umount the filesystem, and rectify the problem(s) Remount is possible, but filesystem hangs up again. After xfs_repair too. It looks OK now after rebooting to old kernel. On other similar system (same disk array, other vol) I use 2.6.27.6 kernel without problems. System: AMD x64, debian stable (etch) filesytem is on iSCSI storage mount options: rw,noatime,nodiratime,logbsize=256k,logbufs=8,quota xfs_info: meta-data=/dev/sde1 isize=256 agcount=16, agsize=5493104 blks = sectsz=512 attr=0 data = bsize=4096 blocks=87889584, imaxpct=25 = sunit=16 swidth=112 blks naming =version 2 bsize=4096 log =internal bsize=4096 blocks=32768, version=2 = sectsz=512 sunit=0 blks, lazy-count=0 realtime =none extsz=65536 blocks=0, rtextents=0 Any ideas. Thanx Dusan From sandeen@sandeen.net Fri Dec 5 21:32:38 2008 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 mB63WbAT005591 for ; Fri, 5 Dec 2008 21:32:38 -0600 X-ASG-Debug-ID: 1228534356-73dc03450000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2CFBA16C7F90 for ; Fri, 5 Dec 2008 19:32:36 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id o2MgijfmMNFxD2dw for ; Fri, 05 Dec 2008 19:32:36 -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 sandeen.net (Postfix) with ESMTP id 67CABAC6272; Fri, 5 Dec 2008 21:27:01 -0600 (CST) Message-ID: <4939F104.9060201@sandeen.net> Date: Fri, 05 Dec 2008 21:27:00 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: DS CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: kernel 2.6.27.7 problem Subject: Re: kernel 2.6.27.7 problem References: <20081206023608.GA22135@bob.dscon.sk> In-Reply-To: <20081206023608.GA22135@bob.dscon.sk> 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: 1228534357 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.12041 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- DS wrote: > Hi, > > I have trouble with xfs after upgrade kernel 2.6.24.3 -> 2.6.27.7. > > Message on console: > end_request: I/O error, dev sde, sector 351572544 > I/O error in filesystem ("sde1") meta-data dev sde1 block 0x14f49201 > ("xlog_iodone") error 5 buf count 9728 > xfs_force_shutdown(sde1,0x2) called from line 1056 of file > fs/xfs/xfs_log.c. Return address = 0xffffffff80373233 > Filesystem "sde1": Log I/O Error Detected. Shutting down filesystem: > sde1 > Please umount the filesystem, and rectify the problem(s) No messages before that? It's telling you that you had an IO error (under the filesystem, potentially a storage proboblem). -Eric From xfs@bob.dscon.sk Sat Dec 6 03:15:27 2008 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 mB69FQG2030545 for ; Sat, 6 Dec 2008 03:15:27 -0600 X-ASG-Debug-ID: 1228554924-423901520000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bob.dscon.sk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1842E16C8E3A for ; Sat, 6 Dec 2008 01:15:24 -0800 (PST) Received: from bob.dscon.sk (bob.dscon.sk [88.86.113.10]) by cuda.sgi.com with ESMTP id XBsGWHM6Dg9hhKLP for ; Sat, 06 Dec 2008 01:15:24 -0800 (PST) Received: by bob.dscon.sk (Postfix, from userid 1007) id F17CDDC35C; Sat, 6 Dec 2008 10:10:22 +0100 (CET) Date: Sat, 6 Dec 2008 10:10:22 +0100 To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: kernel 2.6.27.7 problem Subject: Re: kernel 2.6.27.7 problem Message-ID: <20081206091022.GA24158@bob.dscon.sk> References: <20081206023608.GA22135@bob.dscon.sk> <4939F104.9060201@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4939F104.9060201@sandeen.net> User-Agent: Mutt/1.5.13 (2006-08-11) From: xfs@bob.dscon.sk (DS) X-Barracuda-Connect: bob.dscon.sk[88.86.113.10] X-Barracuda-Start-Time: 1228554926 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.12061 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- No other messages before. No iSCSI/network messages...nothing. Only this few lines and FS is down. After remount it works ....while and hangs again. Few hours it runs back on 2.6.24.3 and everything is OK. It's production system, but I test it again in late night. What can I do to identify problem? Dusan On Fri, Dec 05, 2008 at 09:27:00PM -0600, Eric Sandeen wrote: > DS wrote: > > Hi, > > > > I have trouble with xfs after upgrade kernel 2.6.24.3 -> 2.6.27.7. > > > > Message on console: > > end_request: I/O error, dev sde, sector 351572544 > > I/O error in filesystem ("sde1") meta-data dev sde1 block 0x14f49201 > > ("xlog_iodone") error 5 buf count 9728 > > xfs_force_shutdown(sde1,0x2) called from line 1056 of file > > fs/xfs/xfs_log.c. Return address = 0xffffffff80373233 > > Filesystem "sde1": Log I/O Error Detected. Shutting down filesystem: > > sde1 > > Please umount the filesystem, and rectify the problem(s) > > No messages before that? It's telling you that you had an IO error > (under the filesystem, potentially a storage proboblem). > > -Eric From jpiszcz@lucidpixels.com Sat Dec 6 03:26:21 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.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 mB69QLVj031828 for ; Sat, 6 Dec 2008 03:26:21 -0600 X-ASG-Debug-ID: 1228555579-423a01dd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2568316C9D8A for ; Sat, 6 Dec 2008 01:26:19 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id fLwZvRO78HEeioBk for ; Sat, 06 Dec 2008 01:26:19 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 1DBD31003F4FB; Sat, 6 Dec 2008 04:26:19 -0500 (EST) Date: Sat, 6 Dec 2008 04:26:18 -0500 (EST) From: Justin Piszcz To: linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com, smartmontools-support@lists.sourceforge.net cc: Alan Piszcz X-ASG-Orig-Subj: Re: Velociraptor drive related to the use of NCQ. Subject: Re: Velociraptor drive related to the use of NCQ. In-Reply-To: Message-ID: References: User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1228555580 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.12063 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, 5 Dec 2008, Justin Piszcz wrote: > > > On Fri, 5 Dec 2008, Justin Piszcz wrote: > >> I swapped out my power supply, changed ALL cables and bought a $1000 raid >> controller with BBU, the drives are still having problems, when writing to >> them in a RAID10 configuration, it locks up the card: >> >> SMART shows the same thing on many of the disks in the RAID10: >> >> Error 1 occurred at disk power-on lifetime: 3708 hours (154 days + 12 >> hours) >> When the command that caused the error occurred, the device was active or >> idle. > > I spoke to soon, turning off NCQ helped dramatically, it worked three times! > > writing to raid10 > dd: writing `file2': No space left on device > 1430328+0 records in > 1430327+0 records out > 1499806973952 bytes (1.5 TB) copied, 3914.51 s, 383 MB/s > Fri Dec 5 06:00:25 EST 2008 > writing to raid10 > dd: writing `file2': No space left on device > 1430328+0 records in > 1430327+0 records out > 1499806973952 bytes (1.5 TB) copied, 4063.25 s, 369 MB/s > Fri Dec 5 07:08:11 EST 2008 > writing to raid10 > dd: writing `file2': No space left on device > 1430328+0 records in > 1430327+0 records out > 1499806973952 bytes (1.5 TB) copied, 3926.71 s, 382 MB/s > Fri Dec 5 08:13:41 EST 2008 > > Then it crashed again, with NCQ enabled, it would not even complete one test, > So basically a new system, new PSU, new cables, its on a new APC UPS and the > problem persists even when all disks are on a RAID card, SW raid, it does not > matter, Velociraptors have problems, I think its time for me to get regular > 1TiB disks and be done with it. > > Justin. > > I have swapped my disks: Removed my 12 velociraptors. Inserted my old 12 raptor150s (all ADFD). The 12 velociraptors are now in a test system using md/raid. The 12 raptor 150s are now in my main machine w/3ware. I am going to run the same tests, benchmarks, etc and see if any problems repeat with the 150s and I will also run a bunch more tests on the velociraptors as well. So far no problems with the good ol' raptor 150s and I have been running the same dd test for the past 8 hours+ on the same raid type and settings as I had with the velociraptors: Fri Dec 5 21:07:43 EST 2008 dd: writing `/t/bigfile': No space left on device 715067+0 records in 715066+0 records out 749801271296 bytes (750 GB) copied, 2747.77 s, 273 MB/s Fri Dec 5 21:53:32 EST 2008 dd: writing `/t/bigfile': No space left on device 715067+0 records in 715066+0 records out 749801271296 bytes (750 GB) copied, 2742.29 s, 273 MB/s Fri Dec 5 22:39:17 EST 2008 dd: writing `/t/bigfile': No space left on device 715067+0 records in 715066+0 records out 749801271296 bytes (750 GB) copied, 2685.21 s, 279 MB/s Fri Dec 5 23:24:05 EST 2008 dd: writing `/t/bigfile': No space left on device 715067+0 records in 715066+0 records out 749801271296 bytes (750 GB) copied, 2600.05 s, 288 MB/s Sat Dec 6 00:07:28 EST 2008 dd: writing `/t/bigfile': No space left on device 715067+0 records in 715066+0 records out 749801271296 bytes (750 GB) copied, 2550.45 s, 294 MB/s Sat Dec 6 00:50:02 EST 2008 dd: writing `/t/bigfile': No space left on device 715067+0 records in 715066+0 records out 749801271296 bytes (750 GB) copied, 2507.31 s, 299 MB/s Sat Dec 6 01:31:52 EST 2008 dd: writing `/t/bigfile': No space left on device 715067+0 records in 715066+0 records out 749801271296 bytes (750 GB) copied, 2247.31 s, 334 MB/s Sat Dec 6 02:09:22 EST 2008 dd: writing `/t/bigfile': No space left on device 715067+0 records in 715066+0 records out 749801271296 bytes (750 GB) copied, 2248.2 s, 334 MB/s Sat Dec 6 02:46:53 EST 2008 dd: writing `/t/bigfile': No space left on device 715067+0 records in 715066+0 records out 749801271296 bytes (750 GB) copied, 2245.41 s, 334 MB/s Sat Dec 6 03:24:22 EST 2008 dd: writing `/t/bigfile': No space left on device 715067+0 records in 715066+0 records out 749801271296 bytes (750 GB) copied, 2494.1 s, 301 MB/s Sat Dec 6 04:05:59 EST 2008 So far no problems, just like before when I used to use these drives in the past, they are rock solid (will continue to test, the VRs are another story)-- more info soon to follow. Justin. From jpiszcz@lucidpixels.com Sat Dec 6 03:51:38 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.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 mB69pbCV001814 for ; Sat, 6 Dec 2008 03:51:38 -0600 X-ASG-Debug-ID: 1228557095-7f95000b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 89DD216C9CA4 for ; Sat, 6 Dec 2008 01:51:35 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id Y7G8wk5mivvGrZ3h for ; Sat, 06 Dec 2008 01:51:35 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id F1B7A1003F4FD; Sat, 6 Dec 2008 04:51:03 -0500 (EST) Date: Sat, 6 Dec 2008 04:51:03 -0500 (EST) From: Justin Piszcz To: linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com, smartmontools-support@lists.sourceforge.net X-ASG-Orig-Subj: Have the velociraptors in a test system now, checkout the errors. Subject: Have the velociraptors in a test system now, checkout the errors. Message-ID: User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1228557095 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.12065 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Point of thread: Two problems, mentioned in detail below, NCQ in Linux when used in a RAID configuration and two, something with how Linux interacts with the drives causes lots of problems as when I run the WD tools on the disks, they do not show any errors. If anyone has/would like me to run any debugging/patches/etc on this system feel free to suggest/send me things to try out. After I put the VR's in a test system, I left NCQ enabled and I made a 10 disk raid5 to see how fast I could get it to fail, I ran bonnie++ shown below as a disk benchmark/stress test: For the next test I will repeat this one but with NCQ disabled, having NCQ enabled makes it fail very easily. Then I want to re-run the test with RAID6. bonnie++ -d /r1/test -s 1000G -m p63 -n 16:100000:16:64 $ df -h /dev/md3 2.5T 5.5M 2.5T 1% /r1 And the results? Two disk "failures" according to md/Linux within a few hours as shown below: Note, the NCQ-related errors are what I talk about all of the time, if you use NCQ and Linux in a RAID environment with WD drives, well-- good luck. Two-disks failed out of the RAID5 and I currentlty cannot even 'see' one of the drives with smartctl, will reboot the host and check sde again. After a reboot, it comes up and has no errors, really makes one wonder where/what the bugs is/are, there are two I can see: 1. NCQ issue on at least WD drives in Linux in SW md/RAID 2. Velociraptor/other disks reporting all kinds of sector errors etc, but when you use the WD 11.x disk tools program and run all of their tests it says the disks have no problems whatsoever! The smart statistics do confirm this. Currently, TLER is on for all disks, for the duration of these tests. The other drive that blew out: p63:~# mdadm --assemble /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1 mdadm: cannot open device /dev/sdl1: No such file or directory mdadm: /dev/sdl1 has no superblock - assembly aborted p63:~# smartctl -a /dev/sdl smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Alle n Home page is http://smartmontools.sourceforge.net/ Smartctl open device: /dev/sdl failed: No such file or directory It is not even coming up, power cycling the host is required to 'fix' the drive: p63:~# init 0 A few minutes later after a power cycle now its back: p63:~# smartctl -a /dev/sdl smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START OF INFORMATION SECTION === Device Model: WDC WD3000GLFS-01F8U0 Serial Number: [ .. snip .. ] Firmware Version: 03.03V01 User Capacity: 300,069,052,416 bytes Device is: Not in smartctl database [for details use: -P showall] ATA Version is: 8 ATA Standard is: Exact ATA specification draft version not indicated Local Time is: Sat Dec 6 04:44:14 2008 EST SMART support is: Available - device has SMART capability. SMART support is: Enabled The use of NCQ is VERY dangerous in WD drives in Linux IMO if it requires a power cycle to get the drive working again, and of course, all of the SMART statistics show no problems. p63:~# mdadm --assemble /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1 mdadm: /dev/sdc1 assembled from 7 drives and 1 spare - not enough to start the array. Glad this was only a test array. I was able to reboot to get this disk working again (below,sde) but had to power cycle to get /dev/sdl working: # smartctl -a /dev/sde smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen Home page is http://smartmontools.sourceforge.net/ Short INQUIRY response, skip product id A mandatory SMART command failed: exiting. To continue, add one or more '-T permissive' options. What did the RAID5 look like after it failed everywhere? # mdadm -D /dev/md3 /dev/md3: Version : 00.90 Creation Time : Fri Dec 5 19:52:49 2008 Raid Level : raid5 Array Size : 2637296640 (2515.12 GiB 2700.59 GB) Used Dev Size : 293032960 (279.46 GiB 300.07 GB) Raid Devices : 10 Total Devices : 10 Preferred Minor : 3 Persistence : Superblock is persistent Update Time : Sat Dec 6 04:09:38 2008 State : clean, degraded Active Devices : 8 Working Devices : 9 Failed Devices : 1 Spare Devices : 1 Layout : left-symmetric Chunk Size : 1024K UUID : e22f491a:a183337a:4fbcf5fe:907318dc (local to host p63.internal.lan) Events : 0.84 Number Major Minor RaidDevice State 0 8 33 0 active sync /dev/sdc1 1 8 49 1 active sync /dev/sdd1 2 0 0 2 removed 3 8 81 3 active sync /dev/sdf1 4 8 97 4 active sync /dev/sdg1 5 8 113 5 active sync /dev/sdh1 6 8 129 6 active sync /dev/sdi1 7 8 145 7 active sync /dev/sdj1 8 8 161 8 active sync /dev/sdk1 9 0 0 9 removed 10 8 177 - spare /dev/sdl1 11 8 65 - faulty spare /dev/sde1 [ 25.813155] XFS mounting filesystem md3 [ 27.112464] Ending clean XFS mount for filesystem: md3 [ 30.879019] 0000:00:19.0: eth0: Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX [ 44.870767] warning: `pure-ftpd' uses 32-bit capabilities (legacy support in use) [ 1155.475283] ata5.00: exception Emask 0x2 SAct 0x7ff7f SErr 0x3000400 action 0x6 frozen [ 1155.475356] ata5: SError: { Proto TrStaTrns UnrecFIS } [ 1155.475405] ata5.00: cmd 60/00:00:7f:14:b2/04:00:0c:00:00/40 tag 0 ncq 524288 in [ 1155.475406] res 40/00:c0:2f:65:b6/00:00:09:00:00/40 Emask 0x6 (timeout) [ 1155.475535] ata5.00: status: { DRDY } [ 1155.475580] ata5.00: cmd 60/00:08:7f:24:b2/04:00:0c:00:00/40 tag 1 ncq 524288 in [ 1155.475581] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x6 (timeout) [ 1155.475710] ata5.00: status: { DRDY } [ 1155.475754] ata5.00: cmd 60/00:10:7f:04:b2/04:00:0c:00:00/40 tag 2 ncq 524288 in [ 1155.475755] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x6 (timeout) [ 1155.475884] ata5.00: status: { DRDY } [ 1155.475928] ata5.00: cmd 60/00:18:7f:f4:b1/04:00:0c:00:00/40 tag 3 ncq 524288 in [ 1155.475929] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x6 (timeout) [ 1155.476058] ata5.00: status: { DRDY } [ 1155.476103] ata5.00: cmd 60/00:20:7f:08:b2/04:00:0c:00:00/40 tag 4 ncq 524288 in [ 1155.476104] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x6 (timeout) [ 1155.476232] ata5.00: status: { DRDY } [ 1155.476279] ata5.00: cmd 60/00:28:7f:18:b2/04:00:0c:00:00/40 tag 5 ncq 524288 in [ 1155.476280] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x6 (timeout) [ 1155.476409] ata5.00: status: { DRDY } [ 1155.476453] ata5.00: cmd 60/00:30:7f:f8:b1/04:00:0c:00:00/40 tag 6 ncq 524288 in [ 1155.476454] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x6 (timeout) [ 1155.476583] ata5.00: status: { DRDY } [ 1155.476627] ata5.00: cmd 60/00:40:7f:28:b2/04:00:0c:00:00/40 tag 8 ncq 524288 in [ 1155.476628] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x6 (timeout) [ 1155.476757] ata5.00: status: { DRDY } [ 1155.476801] ata5.00: cmd 60/00:48:7f:1c:b2/04:00:0c:00:00/40 tag 9 ncq 524288 in [ 1155.476802] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x6 (timeout) [ 1155.476931] ata5.00: status: { DRDY } [ 1155.476976] ata5.00: cmd 60/00:50:7f:fc:b1/04:00:0c:00:00/40 tag 10 ncq 524288 in [ 1155.476977] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x6 (timeout) [ 1155.477106] ata5.00: status: { DRDY } [ 1155.477150] ata5.00: cmd 60/00:58:7f:00:b2/04:00:0c:00:00/40 tag 11 ncq 524288 in [ 1155.477151] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x6 (timeout) [ 1155.477283] ata5.00: status: { DRDY } [ 1155.477327] ata5.00: cmd 60/00:60:7f:0c:b2/04:00:0c:00:00/40 tag 12 ncq 524288 in [ 1155.477328] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x6 (timeout) [ 1155.477457] ata5.00: status: { DRDY } [ 1155.477501] ata5.00: cmd 60/00:68:7f:10:b2/04:00:0c:00:00/40 tag 13 ncq 524288 in [ 1155.477502] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x6 (timeout) [ 1155.477632] ata5.00: status: { DRDY } [ 1155.477676] ata5.00: cmd 60/00:70:7f:2c:b2/04:00:0c:00:00/40 tag 14 ncq 524288 in [ 1155.477677] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x6 (timeout) [ 1155.477806] ata5.00: status: { DRDY } [ 1155.477850] ata5.00: cmd 60/00:78:7f:ec:b1/04:00:0c:00:00/40 tag 15 ncq 524288 in [ 1155.477851] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x6 (timeout) [ 1155.477980] ata5.00: status: { DRDY } [ 1155.478024] ata5.00: cmd 60/00:80:7f:f0:b1/04:00:0c:00:00/40 tag 16 ncq 524288 in [ 1155.478025] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x6 (timeout) [ 1155.478154] ata5.00: status: { DRDY } [ 1155.478198] ata5.00: cmd 60/00:88:7f:30:b2/04:00:0c:00:00/40 tag 17 ncq 524288 in [ 1155.478199] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x6 (timeout) [ 1155.478331] ata5.00: status: { DRDY } [ 1155.478375] ata5.00: cmd 60/00:90:7f:20:b2/04:00:0c:00:00/40 tag 18 ncq 524288 in [ 1155.478376] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x6 (timeout) [ 1155.478505] ata5.00: status: { DRDY } [ 1155.478549] ata5: hard resetting link [ 1160.832275] ata5: link is slow to respond, please be patient (ready=0) [ 1165.524277] ata5: COMRESET failed (errno=-16) [ 1165.524330] ata5: hard resetting link [ 1170.878262] ata5: link is slow to respond, please be patient (ready=0) [ 1175.570278] ata5: COMRESET failed (errno=-16) [ 1175.570331] ata5: hard resetting link [ 1180.924277] ata5: link is slow to respond, please be patient (ready=0) [ 1210.606275] ata5: COMRESET failed (errno=-16) [ 1210.606328] ata5: limiting SATA link speed to 1.5 Gbps [ 1210.606388] ata5: hard resetting link [ 1215.654275] ata5: COMRESET failed (errno=-16) [ 1215.654326] ata5: reset failed, giving up [ 1215.654380] ata5.00: disabled [ 1215.654479] ata5: EH complete [ 1215.654565] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.654658] end_request: I/O error, dev sde, sector 213000319 [ 1215.654712] raid5:md3: read error not correctable (sector 213000256 on sde1). [ 1215.654765] raid5: Disk failure on sde1, disabling device. [ 1215.654766] raid5: Operation continuing on 8 devices. [ 1215.655412] raid5:md3: read error not correctable (sector 213000264 on sde1). [ 1215.655473] raid5:md3: read error not correctable (sector 213000272 on sde1). [ 1215.655533] raid5:md3: read error not correctable (sector 213000280 on sde1). [ 1215.655592] raid5:md3: read error not correctable (sector 213000288 on sde1). [ 1215.655644] raid5:md3: read error not correctable (sector 213000296 on sde1). [ 1215.655694] raid5:md3: read error not correctable (sector 213000304 on sde1). [ 1215.655746] raid5:md3: read error not correctable (sector 213000312 on sde1). [ 1215.655800] raid5:md3: read error not correctable (sector 213000320 on sde1). [ 1215.655852] raid5:md3: read error not correctable (sector 213000328 on sde1). [ 1215.656021] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.656120] end_request: I/O error, dev sde, sector 213004415 [ 1215.656293] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.656421] end_request: I/O error, dev sde, sector 212988031 [ 1215.656476] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.656479] end_request: I/O error, dev sde, sector 213005439 [ 1215.656835] sd 4:0:0:0: [sde] <6>sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.656839] end_request: I/O error, dev sde, sector 212987007 [ 1215.657014] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.657087] end_request: I/O error, dev sde, sector 213006463 [ 1215.657099] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.657102] end_request: I/O error, dev sde, sector 213003391 [ 1215.657242] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.657244] end_request: I/O error, dev sde, sector 212996223 [ 1215.657387] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.657391] end_request: I/O error, dev sde, sector 212995199 [ 1215.657528] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.657530] end_request: I/O error, dev sde, sector 212992127 [ 1215.657668] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.657670] end_request: I/O error, dev sde, sector 212991103 [ 1215.657810] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.657812] end_request: I/O error, dev sde, sector 212999295 [ 1215.657951] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.657953] end_request: I/O error, dev sde, sector 213002367 [ 1215.658094] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.658097] end_request: I/O error, dev sde, sector 212990079 [ 1215.658236] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.658238] end_request: I/O error, dev sde, sector 212998271 [ 1215.658384] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.658485] end_request: I/O error, dev sde, sector 212994175 [ 1215.658544] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.658547] end_request: I/O error, dev sde, sector 213007487 [ 1215.658686] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.658688] end_request: I/O error, dev sde, sector 213008511 [ 1215.658839] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.658939] end_request: I/O error, dev sde, sector 213010559 [ 1215.658991] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.658993] end_request: I/O error, dev sde, sector 212989055 [ 1215.659133] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.659135] end_request: I/O error, dev sde, sector 212993151 [ 1215.659278] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.659280] end_request: I/O error, dev sde, sector 213001343 [ 1215.659419] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.659422] end_request: I/O error, dev sde, sector 212997247 [ 1215.659586] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.659689] end_request: I/O error, dev sde, sector 213019775 [ 1215.659732] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.659735] end_request: I/O error, dev sde, sector 213011583 [ 1215.659874] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.659876] end_request: I/O error, dev sde, sector 213012607 [ 1215.660017] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.660020] end_request: I/O error, dev sde, sector 213013631 [ 1215.660160] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.660163] end_request: I/O error, dev sde, sector 213014655 [ 1215.660302] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.660304] end_request: I/O error, dev sde, sector 213015679 [ 1215.660443] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.660446] end_request: I/O error, dev sde, sector 213016703 [ 1215.660586] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.660588] end_request: I/O error, dev sde, sector 213017727 [ 1215.660727] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.660729] end_request: I/O error, dev sde, sector 213018751 [ 1215.660867] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.660869] end_request: I/O error, dev sde, sector 213034111 [ 1215.661014] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.661016] end_request: I/O error, dev sde, sector 213035135 [ 1215.661158] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.661160] end_request: I/O error, dev sde, sector 213036159 [ 1215.661309] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.661417] end_request: I/O error, dev sde, sector 213042303 [ 1215.661492] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.661594] end_request: I/O error, dev sde, sector 213020799 [ 1215.661625] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.661627] end_request: I/O error, dev sde, sector 213043327 [ 1215.661765] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.661767] end_request: I/O error, dev sde, sector 213044351 [ 1215.661907] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.661909] end_request: I/O error, dev sde, sector 213045375 [ 1215.662050] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.662052] end_request: I/O error, dev sde, sector 213046399 [ 1215.662193] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.662195] end_request: I/O error, dev sde, sector 213047423 [ 1215.662333] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.662335] end_request: I/O error, dev sde, sector 213048447 [ 1215.662476] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.662478] end_request: I/O error, dev sde, sector 213049471 [ 1215.662618] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.662621] end_request: I/O error, dev sde, sector 213050495 [ 1215.662759] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.662762] end_request: I/O error, dev sde, sector 213051519 [ 1215.662902] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.663006] end_request: I/O error, dev sde, sector 213052543 [ 1215.663066] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.663069] end_request: I/O error, dev sde, sector 213021823 [ 1215.663209] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.663212] end_request: I/O error, dev sde, sector 213022847 [ 1215.663352] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.663449] end_request: I/O error, dev sde, sector 213023871 [ 1215.663496] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.663498] end_request: I/O error, dev sde, sector 213053567 [ 1215.663634] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.663636] end_request: I/O error, dev sde, sector 213055615 [ 1215.663771] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.663774] end_request: I/O error, dev sde, sector 213056639 [ 1215.663909] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.663911] end_request: I/O error, dev sde, sector 213057663 [ 1215.664051] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.664053] end_request: I/O error, dev sde, sector 213058687 [ 1215.664192] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.664290] end_request: I/O error, dev sde, sector 213059711 [ 1215.664351] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.664353] end_request: I/O error, dev sde, sector 213024895 [ 1215.664490] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.664492] end_request: I/O error, dev sde, sector 213025919 [ 1215.664629] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.664631] end_request: I/O error, dev sde, sector 213026943 [ 1215.664765] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.664767] end_request: I/O error, dev sde, sector 213027967 [ 1215.664905] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.664907] end_request: I/O error, dev sde, sector 213028991 [ 1215.665045] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.665047] end_request: I/O error, dev sde, sector 213030015 [ 1215.665186] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.665188] end_request: I/O error, dev sde, sector 213031039 [ 1215.665334] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.665336] end_request: I/O error, dev sde, sector 213032063 [ 1215.665477] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.665479] end_request: I/O error, dev sde, sector 213033087 [ 1215.665619] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.665622] end_request: I/O error, dev sde, sector 213037183 [ 1215.665762] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.665764] end_request: I/O error, dev sde, sector 213038207 [ 1215.665904] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.665906] end_request: I/O error, dev sde, sector 213039231 [ 1215.666046] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.666048] end_request: I/O error, dev sde, sector 213040255 [ 1215.666187] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.666190] end_request: I/O error, dev sde, sector 213041279 [ 1215.666359] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.666362] end_request: I/O error, dev sde, sector 213054591 [ 1215.666500] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.666503] end_request: I/O error, dev sde, sector 213065855 [ 1215.666642] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.666644] end_request: I/O error, dev sde, sector 213066879 [ 1215.666782] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.666785] end_request: I/O error, dev sde, sector 213067903 [ 1215.666925] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.666928] end_request: I/O error, dev sde, sector 213075071 [ 1215.667069] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.667071] end_request: I/O error, dev sde, sector 213076095 [ 1215.667211] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.667214] end_request: I/O error, dev sde, sector 213077119 [ 1215.667359] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.667361] end_request: I/O error, dev sde, sector 213078143 [ 1215.667501] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.667503] end_request: I/O error, dev sde, sector 213079167 [ 1215.667642] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.667644] end_request: I/O error, dev sde, sector 213080191 [ 1215.667784] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.667786] end_request: I/O error, dev sde, sector 213081215 [ 1215.667924] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.667926] end_request: I/O error, dev sde, sector 213082239 [ 1215.668065] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.668068] end_request: I/O error, dev sde, sector 213083263 [ 1215.668205] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.668208] end_request: I/O error, dev sde, sector 213084287 [ 1215.668352] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.668354] end_request: I/O error, dev sde, sector 213085311 [ 1215.668493] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.668496] end_request: I/O error, dev sde, sector 213086335 [ 1215.668642] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.668644] end_request: I/O error, dev sde, sector 213087359 [ 1215.668786] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.668788] end_request: I/O error, dev sde, sector 213088383 [ 1215.668927] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.668930] end_request: I/O error, dev sde, sector 213089407 [ 1215.669071] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.669073] end_request: I/O error, dev sde, sector 213090431 [ 1215.669215] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.669217] end_request: I/O error, dev sde, sector 213091455 [ 1215.669363] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.669365] end_request: I/O error, dev sde, sector 213092479 [ 1215.669505] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.669507] end_request: I/O error, dev sde, sector 213093503 [ 1215.669646] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.669649] end_request: I/O error, dev sde, sector 213094527 [ 1215.669790] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.669792] end_request: I/O error, dev sde, sector 213095551 [ 1215.669931] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.669933] end_request: I/O error, dev sde, sector 213096575 [ 1215.670074] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.670076] end_request: I/O error, dev sde, sector 213097599 [ 1215.670193] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.670196] end_request: I/O error, dev sde, sector 213098623 [ 1215.670317] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.670319] end_request: I/O error, dev sde, sector 213099647 [ 1215.670434] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.670436] end_request: I/O error, dev sde, sector 213100671 [ 1215.670551] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.670554] end_request: I/O error, dev sde, sector 213101695 [ 1215.670668] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.670670] end_request: I/O error, dev sde, sector 213102719 [ 1215.670787] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.670789] end_request: I/O error, dev sde, sector 213103743 [ 1215.670905] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.670907] end_request: I/O error, dev sde, sector 213104767 [ 1215.671027] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.671030] end_request: I/O error, dev sde, sector 213105791 [ 1215.671143] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.671146] end_request: I/O error, dev sde, sector 213106815 [ 1215.671266] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.671268] end_request: I/O error, dev sde, sector 213107839 [ 1215.671385] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.671388] end_request: I/O error, dev sde, sector 213108863 [ 1215.671505] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.671508] end_request: I/O error, dev sde, sector 213109887 [ 1215.671622] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.671624] end_request: I/O error, dev sde, sector 213110911 [ 1215.671739] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.671741] end_request: I/O error, dev sde, sector 213111935 [ 1215.671866] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.671868] end_request: I/O error, dev sde, sector 213112959 [ 1215.671986] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.671988] end_request: I/O error, dev sde, sector 213113983 [ 1215.672103] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.672105] end_request: I/O error, dev sde, sector 213115007 [ 1215.672220] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.672222] end_request: I/O error, dev sde, sector 213116031 [ 1215.672342] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.672344] end_request: I/O error, dev sde, sector 213117055 [ 1215.673218] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.673306] end_request: I/O error, dev sde, sector 213060735 [ 1215.673465] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.673552] end_request: I/O error, dev sde, sector 213061759 [ 1215.673711] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.674352] end_request: I/O error, dev sde, sector 213062783 [ 1215.674510] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.674597] end_request: I/O error, dev sde, sector 213063807 [ 1215.674754] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.674841] end_request: I/O error, dev sde, sector 213064831 [ 1215.675002] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.675089] end_request: I/O error, dev sde, sector 213068927 [ 1215.675246] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.675333] end_request: I/O error, dev sde, sector 213069951 [ 1215.675492] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.675579] end_request: I/O error, dev sde, sector 213070975 [ 1215.675738] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.675825] end_request: I/O error, dev sde, sector 213071999 [ 1215.675984] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.676073] end_request: I/O error, dev sde, sector 213073023 [ 1215.676232] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.676319] end_request: I/O error, dev sde, sector 213074047 [ 1215.676602] sd 4:0:0:0: [sde] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK [ 1215.676693] end_request: I/O error, dev sde, sector 213009535 [ 1215.759216] md: md3: recovery done. [ 1216.049070] RAID5 conf printout: [ 1216.049134] --- rd:10 wd:8 [ 1216.049184] disk 0, o:1, dev:sdc1 [ 1216.049228] disk 1, o:1, dev:sdd1 [ 1216.049284] disk 2, o:0, dev:sde1 [ 1216.049326] disk 3, o:1, dev:sdf1 [ 1216.049367] disk 4, o:1, dev:sdg1 [ 1216.049409] disk 5, o:1, dev:sdh1 [ 1216.049451] disk 6, o:1, dev:sdi1 [ 1216.049492] disk 7, o:1, dev:sdj1 [ 1216.049534] disk 8, o:1, dev:sdk1 [ 1216.049576] disk 9, o:1, dev:sdl1 [ 1216.052264] RAID5 conf printout: [ 1216.052307] --- rd:10 wd:8 [ 1216.052347] disk 0, o:1, dev:sdc1 [ 1216.052389] disk 1, o:1, dev:sdd1 [ 1216.052431] disk 2, o:0, dev:sde1 [ 1216.052472] disk 3, o:1, dev:sdf1 [ 1216.052513] disk 4, o:1, dev:sdg1 [ 1216.052555] disk 5, o:1, dev:sdh1 [ 1216.052596] disk 6, o:1, dev:sdi1 [ 1216.052638] disk 7, o:1, dev:sdj1 [ 1216.052679] disk 8, o:1, dev:sdk1 [ 1216.052729] RAID5 conf printout: [ 1216.052770] --- rd:10 wd:8 [ 1216.052811] disk 0, o:1, dev:sdc1 [ 1216.052852] disk 1, o:1, dev:sdd1 [ 1216.052894] disk 2, o:0, dev:sde1 [ 1216.052935] disk 3, o:1, dev:sdf1 [ 1216.052977] disk 4, o:1, dev:sdg1 [ 1216.053019] disk 5, o:1, dev:sdh1 [ 1216.053060] disk 6, o:1, dev:sdi1 [ 1216.053102] disk 7, o:1, dev:sdj1 [ 1216.053143] disk 8, o:1, dev:sdk1 [ 1216.055296] RAID5 conf printout: [ 1216.055340] --- rd:10 wd:8 [ 1216.055383] disk 0, o:1, dev:sdc1 [ 1216.055426] disk 1, o:1, dev:sdd1 [ 1216.055470] disk 3, o:1, dev:sdf1 [ 1216.055513] disk 4, o:1, dev:sdg1 [ 1216.055556] disk 5, o:1, dev:sdh1 [ 1216.055599] disk 6, o:1, dev:sdi1 [ 1216.055642] disk 7, o:1, dev:sdj1 [ 1216.055686] disk 8, o:1, dev:sdk1 [ 1444.068916] md: data-check of RAID array md0 [ 1444.068978] md: minimum _guaranteed_ speed: 1000 KB/sec/disk. [ 1444.069026] md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for data-check. [ 1444.069120] md: using 128k window, over a total of 8393856 blocks. [ 1445.073363] md: delaying data-check of md1 until md0 has finished (they share one or more physical units) [ 1446.078880] md: delaying data-check of md2 until md1 has finished (they share one or more physical units) [ 1446.079077] md: delaying data-check of md1 until md0 has finished (they share one or more physical units) [ 1447.084159] md: data-check of RAID array md3 [ 1447.084214] md: minimum _guaranteed_ speed: 1000 KB/sec/disk. [ 1447.084276] md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for data-check. [ 1447.084361] md: using 128k window, over a total of 293032960 blocks. [ 1447.084417] md: md3: data-check done. [ 1447.084473] md: delaying data-check of md2 until md1 has finished (they share one or more physical units) [ 1447.084560] md: delaying data-check of md1 until md0 has finished (they share one or more physical units) [ 1449.713579] program smartctl is using a deprecated SCSI ioctl, please convert it to SG_IO [ 1524.371489] md: md0: data-check done. [ 1524.389361] md: delaying data-check of md2 until md1 has finished (they share one or more physical units) [ 1524.389544] md: data-check of RAID array md1 [ 1524.389590] md: minimum _guaranteed_ speed: 1000 KB/sec/disk. [ 1524.389637] md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for data-check. [ 1524.389709] md: using 128k window, over a total of 136448 blocks. [ 1525.567626] md: md1: data-check done. [ 1525.583089] md: data-check of RAID array md2 [ 1525.583139] md: minimum _guaranteed_ speed: 1000 KB/sec/disk. [ 1525.583186] md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for data-check. [ 1525.583258] md: using 128k window, over a total of 284503040 blocks. [ 1749.091552] program smartctl is using a deprecated SCSI ioctl, please convert it to SG_IO [ 2049.286588] program smartctl is using a deprecated SCSI ioctl, please convert it to SG_IO [ 2349.207522] program smartctl is using a deprecated SCSI ioctl, please convert it to SG_IO [ 2649.915475] program smartctl is using a deprecated SCSI ioctl, please convert it to SG_IO [ 2949.866608] program smartctl is using a deprecated SCSI ioctl, please convert it to SG_IO [ 3249.335569] program smartctl is using a deprecated SCSI ioctl, please convert it to SG_IO [ 3549.130226] program smartctl is using a deprecated SCSI ioctl, please convert it to SG_IO [ 3849.445387] program smartctl is using a deprecated SCSI ioctl, please convert it to SG_IO [ 4149.533569] program smartctl is using a deprecated SCSI ioctl, please convert it to SG_IO [ 4320.011690] I/O error in filesystem ("md3") meta-data dev md3 block 0x9d34c100 ("xlog_iodone") error 5 buf count 262144 [ 4320.011781] xfs_force_shutdown(md3,0x2) called from line 1056 of file fs/xfs/xfs_log.c. Return address = 0xffffffff803b6c33 [ 4320.011989] Filesystem "md3": Log I/O Error Detected. Shutting down filesystem: md3 [ 4320.012072] Please umount the filesystem, and rectify the problem(s) [ 4321.532013] Filesystem "md3": xfs_log_force: error 5 returned. [ 4321.757263] Filesystem "md3": xfs_log_force: error 5 returned. [ 4351.757280] Filesystem "md3": xfs_log_force: error 5 returned. [ 4381.757280] Filesystem "md3": xfs_log_force: error 5 returned. [ 4411.757282] Filesystem "md3": xfs_log_force: error 5 returned. [ 4441.757295] Filesystem "md3": xfs_log_force: error 5 returned. [ 4449.736735] program smartctl is using a deprecated SCSI ioctl, please convert it to SG_IO [ 4471.757294] Filesystem "md3": xfs_log_force: error 5 returned. [ 4501.757303] Filesystem "md3": xfs_log_force: error 5 returned. [ 4531.757273] Filesystem "md3": xfs_log_force: error 5 returned. [ 4561.757294] Filesystem "md3": xfs_log_force: error 5 returned. [ 4591.757293] Filesystem "md3": xfs_log_force: error 5 returned. [ 4621.757304] Filesystem "md3": xfs_log_force: error 5 returned. [ 4651.757292] Filesystem "md3": xfs_log_force: error 5 returned. [ 4681.757304] Filesystem "md3": xfs_log_force: error 5 returned. [ 4711.757282] Filesystem "md3": xfs_log_force: error 5 returned. [ 4741.757304] Filesystem "md3": xfs_log_force: error 5 returned. [ 7450.064973] __ratelimit: 16374 callbacks suppressed [ 7450.065026] Buffer I/O error on device md3, logical block 61811713 [ 7450.065231] Buffer I/O error on device md3, logical block 61811713 [ 7450.103854] Buffer I/O error on device md3, logical block 164831233 [ 7450.103964] Buffer I/O error on device md3, logical block 164831233 [ 7450.147422] Buffer I/O error on device md3, logical block 267850753 [ 7450.147588] Buffer I/O error on device md3, logical block 267850753 [ 7450.183152] Buffer I/O error on device md3, logical block 370870273 [ 7450.183319] Buffer I/O error on device md3, logical block 370870273 [ 7450.221272] Buffer I/O error on device md3, logical block 473889793 [ 7450.221425] Buffer I/O error on device md3, logical block 473889793 [ 7471.757279] Filesystem "md3": xfs_log_force: error 5 returned. [ 7501.757279] Filesystem "md3": xfs_log_force: error 5 returned. From SRS0+e20dc571ea0c1c6d9dae+1931+infradead.org+hch@bombadil.srs.infradead.org Sat Dec 6 04:24:48 2008 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 mB6AOlDD004893 for ; Sat, 6 Dec 2008 04:24:48 -0600 X-ASG-Debug-ID: 1228559086-08a8006f0000-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 77D79C0D3C2 for ; Sat, 6 Dec 2008 02:24:46 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id L0TOgKjePpLOzbsA for ; Sat, 06 Dec 2008 02:24:46 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L8uKd-0007UY-Aw; Sat, 06 Dec 2008 10:24:15 +0000 Date: Sat, 6 Dec 2008 05:24:15 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs mailing list X-ASG-Orig-Subj: Re: [PATCH] fix up xfs-cmds build after the parallel-fest Subject: Re: [PATCH] fix up xfs-cmds build after the parallel-fest Message-ID: <20081206102415.GA28776@infradead.org> References: <49396528.1090700@sandeen.net> <20081205173716.GA8216@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081205173716.GA8216@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: 1228559086 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Fri, Dec 05, 2008 at 12:37:16PM -0500, Christoph Hellwig wrote: > Thanks, this fixes the dpkg build for me. But it misses one hunk to fix the attr build, too: Index: xfs-cmds-git/attr/Makefile =================================================================== --- xfs-cmds-git.orig/attr/Makefile 2008-12-06 11:20:21.000000000 +0100 +++ xfs-cmds-git/attr/Makefile 2008-12-06 11:20:34.000000000 +0100 @@ -39,7 +39,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoconf ./configure \ --prefix=/ \ From SRS0+e20dc571ea0c1c6d9dae+1931+infradead.org+hch@bombadil.srs.infradead.org Sat Dec 6 04:27:11 2008 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_64, J_CHICKENPOX_71 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 mB6ARASF005105 for ; Sat, 6 Dec 2008 04:27:11 -0600 X-ASG-Debug-ID: 1228559230-08a6007d0000-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 61A06CE1793 for ; Sat, 6 Dec 2008 02:27:10 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id nQdiJyWNOddYAmf1 for ; Sat, 06 Dec 2008 02:27:10 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L8uNR-0007v8-U3 for xfs@oss.sgi.com; Sat, 06 Dec 2008 10:27:09 +0000 Date: Sat, 6 Dec 2008 05:27:09 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfsdump: cleanup _rmt_dev Subject: [PATCH] xfsdump: cleanup _rmt_dev Message-ID: <20081206102709.GB30364@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: 1228559230 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Rewrite _rmt_dev to be proper ANSI C and readable. Signed-off-by: Christoph Hellwig Index: xfs-cmds/xfsdump/librmt/rmtdev.c =================================================================== --- xfs-cmds.orig/xfsdump/librmt/rmtdev.c 2008-11-25 16:39:45.000000000 +0530 +++ xfs-cmds/xfsdump/librmt/rmtdev.c 2008-11-25 16:41:06.000000000 +0530 @@ -28,18 +28,12 @@ * is any string that contains ":/dev/". Returns 1 if remote, * 0 otherwise. */ - -int _rmt_dev (path) -register char *path; +int _rmt_dev(char *path) { - if ((path = strchr (path, ':')) != (char *)0) - { - if (strncmp (path + 1, "/dev/", 5) == 0) - { - return (1); - } - } - return (0); -} - + char *c; + c = strchr(path, ':'); + if (c && strncmp(c + 1, "/dev/", 5) == 0) + return 1; + return 0; +} From SRS0+e20dc571ea0c1c6d9dae+1931+infradead.org+hch@bombadil.srs.infradead.org Sat Dec 6 04:30:50 2008 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 mB6AUo6E005474 for ; Sat, 6 Dec 2008 04:30:50 -0600 X-ASG-Debug-ID: 1228559449-053500a70000-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 B59CE16C8F2D for ; Sat, 6 Dec 2008 02:30:49 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id ETiOB4dbumfp5Ke0 for ; Sat, 06 Dec 2008 02:30:49 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L8uM9-0007uW-An for xfs@oss.sgi.com; Sat, 06 Dec 2008 10:25:49 +0000 Date: Sat, 6 Dec 2008 05:25:49 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfsdump: add support for building with sparse Subject: [PATCH] xfsdump: add support for building with sparse Message-ID: <20081206102549.GA30364@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: 1228559449 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Signed-off-by: Christoph Hellwig Index: xfs-cmds/xfsdump/include/buildmacros =================================================================== --- xfs-cmds.orig/xfsdump/include/buildmacros 2008-11-13 18:31:57.000000000 +0100 +++ xfs-cmds/xfsdump/include/buildmacros 2008-11-13 18:58:13.000000000 +0100 @@ -42,10 +42,10 @@ LIBNAME = $(basename $(LTLIBRARY)) LTOBJECTS = $(OBJECTS:.o=.lo) LTVERSION = $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -LTLINK = $(LIBTOOL) --mode=link $(CC) +LTLINK = $(LIBTOOL) --tag=CC --mode=link $(CC) LTEXEC = $(LIBTOOL) --mode=execute LTINSTALL = $(LIBTOOL) --mode=install $(INSTALL) -LTCOMPILE = $(LIBTOOL) --mode=compile $(CCF) +LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CCF) ifeq ($(ENABLE_SHARED),yes) LTLDFLAGS += -rpath $(PKG_LIB_DIR) From mjt@tls.msk.ru Sat Dec 6 05:19:15 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_24 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 mB6BJEo4008838 for ; Sat, 6 Dec 2008 05:19:15 -0600 X-ASG-Debug-ID: 1228562353-08a8012c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hobbit.corpit.ru (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4F15F16CADB9 for ; Sat, 6 Dec 2008 03:19:13 -0800 (PST) Received: from hobbit.corpit.ru (hobbit.corpit.ru [81.13.33.150]) by cuda.sgi.com with ESMTP id cMBP80gmsD5UriMU for ; Sat, 06 Dec 2008 03:19:13 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from [192.168.1.200] (mjt.ppp.tls.msk.ru [192.168.1.200]) by hobbit.corpit.ru (Postfix) with ESMTP id E9F7819676; Sat, 6 Dec 2008 14:13:38 +0300 (MSK) (envelope-from mjt@tls.msk.ru) Message-ID: <493A5E62.1020508@msgid.tls.msk.ru> Date: Sat, 06 Dec 2008 14:13:38 +0300 From: Michael Tokarev Organization: Telecom Service, JSC User-Agent: Mozilla-Thunderbird 2.0.0.17 (X11/20081018) MIME-Version: 1.0 To: Justin Piszcz CC: linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com, smartmontools-support@lists.sourceforge.net X-ASG-Orig-Subj: Re: Have the velociraptors in a test system now, checkout the errors. Subject: Re: Have the velociraptors in a test system now, checkout the errors. References: In-Reply-To: X-Enigmail-Version: 0.95.0 OpenPGP: id=4F9CF57E Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: hobbit.corpit.ru[81.13.33.150] X-Barracuda-Start-Time: 1228562354 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Justin Piszcz wrote: > Point of thread: Two problems, mentioned in detail below, NCQ in Linux [] > Two-disks failed out of the RAID5 and I currentlty cannot even 'see' one > of the drives with smartctl, will reboot the host and check sde again. Not to say it's your case (i remember you mentioned a new powerful PSU in your last emails), but anyway. We had numerous, countless disk failures like this in the past - with seagate scsi drives (not sas, not sata but ol'good scsi - 9Gb and 36Gb barracuda ones). As that - a drive suddenly disappears from the bus, without any indication it was/is here, only power-cycle cures the prob. One such case were related to a broken (it seems) batch of those 9Gb drives (it was back in 2000 or so). The frequency of such failures fluctuated a lot, and did not depend on system load - it was possible to see disk disappearance after a few mins after boot without any load, or it may run for several weeks under a good load. The failing drive was always the same, replace it and voila, it works again. There was about 10..20 such drives we had, some are still here somewhere (not in use). And another case was with 36gb 10krpm barracudas, at about 2004 or so. And also with 18gb 15Krpm maxtors. Some of them. This case looked really mysterious to me. Until I found (after many many times experimenting with all that) that the cause is under-powered PSU. For example, when there were 2 disks running on the system, no hdd stopped, but with 4 disks rinning, one were quite likely to stop (always the same, other disks were working still). When this new problem started appearing and I had not yet understand the cause, we also tried to replace the "failing" drives, and it helped somewhat, -- i.e., there were high chances that the replacement disk will actually work better. But some non-zero chance existed that it will not work the same or even worse way the "failing" drive failed. It come to good surprize to me that the problem was the PSU. It was 350W (quite descent in 2002 when the test system was bought), but obviously not enough for the load with all the 15krpm drives... (and later on the system become instable too, and now I know why - also lack of proper power, now for chipset/cpu). The prob with 9gb drives were real (not due to the PSU), but Seagate never acknowleged it. Just... another "funny" scenario which happened for real. And my probs obviously were NOT related to NCQ (TCQ really) - TCQ worked on all those drives just fine, much better and with much better effect than all thouse modern NCQ-aware drives..... Ohwell. /mjt From jpiszcz@lucidpixels.com Sat Dec 6 06:11:34 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_24 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 mB6CBYoq011680 for ; Sat, 6 Dec 2008 06:11:34 -0600 X-ASG-Debug-ID: 1228565492-05ad01ff0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 279211B949AB for ; Sat, 6 Dec 2008 04:11:32 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id 4lDX3okvwLDl7xBi for ; Sat, 06 Dec 2008 04:11:32 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 48F6B1003F5B1; Sat, 6 Dec 2008 07:11:32 -0500 (EST) Date: Sat, 6 Dec 2008 07:11:32 -0500 (EST) From: Justin Piszcz To: Michael Tokarev cc: linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com, smartmontools-support@lists.sourceforge.net X-ASG-Orig-Subj: Re: Have the velociraptors in a test system now, checkout the errors. Subject: Re: Have the velociraptors in a test system now, checkout the errors. In-Reply-To: <493A5E62.1020508@msgid.tls.msk.ru> Message-ID: References: <493A5E62.1020508@msgid.tls.msk.ru> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1228565493 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.12072 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, 6 Dec 2008, Michael Tokarev wrote: > Justin Piszcz wrote: >> Point of thread: Two problems, mentioned in detail below, NCQ in Linux > [] > >> Two-disks failed out of the RAID5 and I currentlty cannot even 'see' one >> of the drives with smartctl, will reboot the host and check sde again. > > Not to say it's your case (i remember you mentioned a new powerful PSU > in your last emails), but anyway. > > We had numerous, countless disk failures like this in the past - with > seagate scsi drives (not sas, not sata but ol'good scsi - 9Gb and 36Gb > barracuda ones). As that - a drive suddenly disappears from the bus, > without any indication it was/is here, only power-cycle cures the prob. > > One such case were related to a broken (it seems) batch of those 9Gb > drives (it was back in 2000 or so). The frequency of such failures > fluctuated a lot, and did not depend on system load - it was possible > to see disk disappearance after a few mins after boot without any load, > or it may run for several weeks under a good load. The failing drive > was always the same, replace it and voila, it works again. There was > about 10..20 such drives we had, some are still here somewhere (not in > use). > > And another case was with 36gb 10krpm barracudas, at about 2004 or so. > And also with 18gb 15Krpm maxtors. Some of them. > > This case looked really mysterious to me. Until I found (after many > many times experimenting with all that) that the cause is under-powered > PSU. For example, when there were 2 disks running on the system, no > hdd stopped, but with 4 disks rinning, one were quite likely to stop > (always the same, other disks were working still). When this new > problem started appearing and I had not yet understand the cause, > we also tried to replace the "failing" drives, and it helped somewhat, -- > i.e., there were high chances that the replacement disk will actually > work better. But some non-zero chance existed that it will not work > the same or even worse way the "failing" drive failed. > > It come to good surprize to me that the problem was the PSU. It was > 350W (quite descent in 2002 when the test system was bought), but > obviously not enough for the load with all the 15krpm drives... > (and later on the system become instable too, and now I know why - > also lack of proper power, now for chipset/cpu). > > The prob with 9gb drives were real (not due to the PSU), but > Seagate never acknowleged it. > > Just... another "funny" scenario which happened for real. > And my probs obviously were NOT related to NCQ (TCQ really) - > TCQ worked on all those drives just fine, much better and > with much better effect than all thouse modern NCQ-aware > drives..... Ohwell. > > /mjt > Very interesting story there, what OS(') were you using at the time? Windows? Linux? UNIX? As far the PSU, just btw/FYI, Velociraptors consume ~4-5 watts a piece, my entire system used ~100-120watts with all 12 velociraptors on a 650 watt PSU (now moved into a test system). Justin. From jpiszcz@lucidpixels.com Sat Dec 6 06:13:11 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.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 mB6CDAgi011804 for ; Sat, 6 Dec 2008 06:13:11 -0600 X-ASG-Debug-ID: 1228565589-059702170000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id ECF301B949B9 for ; Sat, 6 Dec 2008 04:13:09 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id uaapH0ME9MBWr4Oz for ; Sat, 06 Dec 2008 04:13:09 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 8DC5A1005020B; Sat, 6 Dec 2008 07:12:38 -0500 (EST) Date: Sat, 6 Dec 2008 07:12:38 -0500 (EST) From: Justin Piszcz To: DS cc: Eric Sandeen , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: kernel 2.6.27.7 problem Subject: Re: kernel 2.6.27.7 problem In-Reply-To: <20081206091022.GA24158@bob.dscon.sk> Message-ID: References: <20081206023608.GA22135@bob.dscon.sk> <4939F104.9060201@sandeen.net> <20081206091022.GA24158@bob.dscon.sk> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1228565589 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.12072 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, 6 Dec 2008, DS wrote: > No other messages before. No iSCSI/network messages...nothing. > Only this few lines and FS is down. After remount it works ....while and > hangs again. > Few hours it runs back on 2.6.24.3 and everything is OK. > > It's production system, but I test it again in late night. > What can I do to identify problem? > > Dusan Run: smartctl -a /dev/sde Post output. Justin. From jpiszcz@lucidpixels.com Sat Dec 6 06:18:24 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.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 mB6CIN1f012746 for ; Sat, 6 Dec 2008 06:18:24 -0600 X-ASG-Debug-ID: 1228565902-71f703040000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 213401B949D9 for ; Sat, 6 Dec 2008 04:18:22 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id 7CuUot5CAuo0sUWO for ; Sat, 06 Dec 2008 04:18:22 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id B54D51005020B; Sat, 6 Dec 2008 07:13:22 -0500 (EST) Date: Sat, 6 Dec 2008 07:13:22 -0500 (EST) From: Justin Piszcz To: DS cc: Eric Sandeen , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: kernel 2.6.27.7 problem Subject: Re: kernel 2.6.27.7 problem In-Reply-To: Message-ID: References: <20081206023608.GA22135@bob.dscon.sk> <4939F104.9060201@sandeen.net> <20081206091022.GA24158@bob.dscon.sk> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1228565903 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.12072 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, 6 Dec 2008, Justin Piszcz wrote: > > > On Sat, 6 Dec 2008, DS wrote: > >> No other messages before. No iSCSI/network messages...nothing. >> Only this few lines and FS is down. After remount it works ....while and >> hangs again. >> Few hours it runs back on 2.6.24.3 and everything is OK. >> >> It's production system, but I test it again in late night. >> What can I do to identify problem? >> >> Dusan > > Run: > smartctl -a /dev/sde > > Post output. > > Justin. > > AMD x64, debian stable (etch) filesytem is on iSCSI storage ^^^^^^^^^^^^^^ Nevermind my comment above: Is there anyway to test the health of the disks on the system? Justin. From xfs@bob.dscon.sk Sat Dec 6 07:20:29 2008 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 mB6DKTVw017186 for ; Sat, 6 Dec 2008 07:20:29 -0600 X-ASG-Debug-ID: 1228569627-05ae032a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bob.dscon.sk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 162221B949EA for ; Sat, 6 Dec 2008 05:20:28 -0800 (PST) Received: from bob.dscon.sk (bob.dscon.sk [88.86.113.10]) by cuda.sgi.com with ESMTP id ew8qzk8DwZZaXe6u for ; Sat, 06 Dec 2008 05:20:28 -0800 (PST) Received: by bob.dscon.sk (Postfix, from userid 1007) id EEBA8DC35C; Sat, 6 Dec 2008 14:20:26 +0100 (CET) Date: Sat, 6 Dec 2008 14:20:26 +0100 To: Justin Piszcz Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: kernel 2.6.27.7 problem Subject: Re: kernel 2.6.27.7 problem Message-ID: <20081206132026.GA24765@bob.dscon.sk> References: <20081206023608.GA22135@bob.dscon.sk> <4939F104.9060201@sandeen.net> <20081206091022.GA24158@bob.dscon.sk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.13 (2006-08-11) From: xfs@bob.dscon.sk (DS) X-Barracuda-Connect: bob.dscon.sk[88.86.113.10] X-Barracuda-Start-Time: 1228569629 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.12078 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- iSCSI storage is nexsan SATA boy with 2 controlers, firmware was updated few months ago other 3 servers has data on this storage without problems (all on XFS) all is going on same switch, all ports are in one storage VLAN I don't know where "start debug" and it must be safe for data. Dusan On Sat, Dec 06, 2008 at 07:13:22AM -0500, Justin Piszcz wrote: > > > On Sat, 6 Dec 2008, Justin Piszcz wrote: > > > > > > >On Sat, 6 Dec 2008, DS wrote: > > > >>No other messages before. No iSCSI/network messages...nothing. > >>Only this few lines and FS is down. After remount it works ....while and > >>hangs again. > >>Few hours it runs back on 2.6.24.3 and everything is OK. > >> > >>It's production system, but I test it again in late night. > >>What can I do to identify problem? > >> > >>Dusan > > > >Run: > >smartctl -a /dev/sde > > > >Post output. > > > >Justin. > > > > > > AMD x64, debian stable (etch) > filesytem is on iSCSI storage > ^^^^^^^^^^^^^^ > > Nevermind my comment above: > > Is there anyway to test the health of the disks on the system? > > Justin. > From tobias.oed@octant.org Sat Dec 6 07:31:29 2008 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=BAYES_00,J_CHICKENPOX_23, J_CHICKENPOX_33 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 mB6DVSZq017830 for ; Sat, 6 Dec 2008 07:31:29 -0600 X-ASG-Debug-ID: 1228570285-059e03630000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.octant.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D2D561BF0F3E for ; Sat, 6 Dec 2008 05:31:26 -0800 (PST) Received: from mail.octant.org (saturne.octant-fr.com [91.121.100.211]) by cuda.sgi.com with ESMTP id HYxj6ncqX4qkTqT5 for ; Sat, 06 Dec 2008 05:31:26 -0800 (PST) Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.octant.org (Postfix) with ESMTP id E62164180EB; Sat, 6 Dec 2008 14:31:24 +0100 (CET) X-Virus-Scanned: amavisd-new at Received: from mail.octant.org ([127.0.0.1]) by localhost (mail.octant.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id TAYM4F2Hjd5t; Sat, 6 Dec 2008 14:31:23 +0100 (CET) Received: from [192.168.0.253] (AGrenoble-257-1-84-237.w86-219.abo.wanadoo.fr [86.219.19.237]) by mail.octant.org (Postfix) with ESMTP id 7492A418073; Sat, 6 Dec 2008 14:31:22 +0100 (CET) Message-ID: <493A7EAB.4010200@octant.org> Date: Sat, 06 Dec 2008 14:31:23 +0100 From: Tobias Oed User-Agent: Thunderbird 2.0.0.18 (X11/20081119) MIME-Version: 1.0 To: xfs@oss.sgi.com CC: Tobias Oed X-ASG-Orig-Subj: Does this come from xfs? Subject: Does this come from xfs? Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: saturne.octant-fr.com[91.121.100.211] X-Barracuda-Start-Time: 1228570286 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_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.12078 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M Hi, We have a few mandriva servers running kernel 2.6.22.12-server-1mdv on dell poweredge 2800 that oops every now and then. Networking is still alive, but the disk seems to become unavailable. We are using XFS on regular partitions (no lvm etc.) on a single block device sda, backed by hardware raid on PERC 4e (most machines have raid 1, one has raid 5). So far we have no repeatable way to crash the machines. We are not sure what to blame, even after capturing this with netconsole. Any help in parsing this is apreciated! Thanks Tobias Oed Dec 4 12:36:59 master BUG: unable to handle kernel NULL pointer dereference Dec 4 12:36:59 master at virtual address 00000368 Dec 4 12:36:59 master printing eip: Dec 4 12:36:59 master f8e62a1e Dec 4 12:36:59 master BUG: unable to handle kernel NULL pointer dereference at virtual address 00000324 Dec 4 12:36:59 master printing eip: Dec 4 12:36:59 master f8e62c4e Dec 4 12:36:59 master *pdpt = 000000001a842001 Dec 4 12:36:59 master *pde = 0000000000000000 Dec 4 12:36:59 master Oops: 0000 [#1] Dec 4 12:36:59 master SMP Dec 4 12:36:59 master Modules linked in: netconsole smbfs nls_iso8859_1 cifs tun af_packet ipv6 video thermal sbs processor fan container button dock battery ac binfmt_misc loop nls_utf8 nls_cp437 vfat fat dm_mirror dm_mod ide_cd piix usb_storage ide_core st aic7xxx scsi_transport_spi tsdev usbmouse usbhid ff_memless floppy cpufreq_ondemand cpufreq_conservative cpufreq_powersave p4_clockmod speedstep_lib freq_table ehci_hcd iTCO_wdt iTCO_vendor_support e1000 e752x_edac uhci_hcd edac_mc usbcore shpchp pci_hotplug evdev sg xfs scsi_wait_scan sd_mod megaraid_mbox megaraid_mm scsi_mod Dec 4 12:36:59 master CPU: 0 Dec 4 12:36:59 master EIP: 0060:[] Not tainted VLI Dec 4 12:36:59 master EFLAGS: 00210246 (2.6.22.12-server-1mdv #1) Dec 4 12:36:59 master EIP is at xfs_trans_dup+0x8e/0xb0 [xfs] Dec 4 12:36:59 master eax: 00000000 ebx: e27502ac ecx: 00000000 edx: 00000000 Dec 4 12:36:59 master esi: e27502ac edi: e27502ac ebp: dd35be48 esp: dd35be40 Dec 4 12:36:59 master ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068 Dec 4 12:36:59 master Process nmbd (pid: 15310, ti=dd35a000 task=e8622030 task.ti=dd35a000) Dec 4 12:36:59 master Stack: 00000000 e27502ac dd35bebc f8e4ce49 00000006 00000000 fffffffb 00000000 Dec 4 12:36:59 master 00000040 00000002 dd35bea0 dd35be94 00000000 dd35beac cbb34c80 dd35bf28 Dec 4 12:36:59 master 00000006 00000000 fffffffb 00000000 f785bc00 00000000 00000000 00000000 Dec 4 12:36:59 master Call Trace: Dec 4 12:36:59 master [] show_trace_log_lvl+0x1a/0x30 Dec 4 12:36:59 master [] show_stack_log_lvl+0xab/0xd0 Dec 4 12:36:59 master [] show_registers+0x1d1/0x2d0 Dec 4 12:36:59 master [] die+0x118/0x240 Dec 4 12:36:59 master [] do_page_fault+0x1e1/0x870 Dec 4 12:36:59 master [] error_code+0x72/0x78 Dec 4 12:36:59 master [] xfs_itruncate_finish+0x129/0x3a0 [xfs] Dec 4 12:36:59 master [] xfs_inactive_free_eofblocks+0x244/0x280 [xfs] Dec 4 12:36:59 master [] xfs_release+0x90/0x100 [xfs] Dec 4 12:36:59 master [] xfs_file_release+0x16/0x20 [xfs] Dec 4 12:36:59 master [] __fput+0xa1/0x170 Dec 4 12:36:59 master [] fput+0x19/0x20 Dec 4 12:36:59 master [] filp_close+0x47/0x70 Dec 4 12:36:59 master [] sys_close+0x63/0xb0 Dec 4 12:36:59 master [] sysenter_past_esp+0x6b/0xa1 Dec 4 12:36:59 master ======================= Dec 4 12:36:59 master Code: 89 43 2c 8b 46 1c 29 d0 89 43 1c 8b 46 24 89 56 1c 8b 56 28 29 d0 89 43 24 8b 86 74 02 00 00 89 56 24 89 83 74 02 00 00 8b 46 54 <8b> 88 24 03 00 00 85 c9 74 06 89 da 89 f0 ff 11 8b 46 54 05 68 Dec 4 12:36:59 master EIP: [] xfs_trans_dup+0x8e/0xb0 [xfs] SS:ESP 0068:dd35be40 Dec 4 12:36:59 master *pdpt = 000000000f518001 Dec 4 12:37:00 master *pde = 0000000000000000 Dec 4 12:37:00 master Oops: 0002 [#2] Dec 4 12:37:00 master SMP Dec 4 12:37:00 master Modules linked in: Dec 4 12:37:00 master netconsole smbfs nls_iso8859_1 cifs tun af_packet ipv6 video thermal sbs processor fan container button dock battery ac binfmt_misc loop nls_utf8 nls_cp437 vfat fat dm_mirror dm_mod ide_cd piix usb_storage ide_core st aic7xxx scsi_transport_spi tsdev usbmouse usbhid ff_memless floppy cpufreq_ondemand cpufreq_conservative cpufreq_powersave p4_clockmod speedstep_lib freq_table ehci_hcd iTCO_wdt iTCO_vendor_support e1000 e752x_edac uhci_hcd edac_mc usbcore shpchp pci_hotplug evdev sg xfs scsi_wait_scan sd_mod megaraid_mbox megaraid_mm scsi_mod Dec 4 12:37:00 master CPU: 1 Dec 4 12:37:00 master EIP: 0060:[] Not tainted VLI Dec 4 12:37:00 master EFLAGS: 00010202 (2.6.22.12-server-1mdv #1) Dec 4 12:37:00 master EIP is at xfs_trans_free+0xe/0x40 [xfs] Dec 4 12:37:00 master eax: 00000368 ebx: e27502ac ecx: f8e8ec00 edx: e27502ac Dec 4 12:37:00 master esi: 00000000 edi: 00000000 ebp: c21a5eb4 esp: c21a5eb0 Dec 4 12:37:00 master ds: 007b es: 007b fs: 00d8 gs: 0000 ss: 0068 Dec 4 12:37:00 master Process xfslogd/1 (pid: 858, ti=c21a4000 task=f7fc6a90 task.ti=c21a4000) Dec 4 12:37:00 master Stack: 00000000 c21a5ed0 f8e631ba 00000000 e27502ac e27502b0 c21fb4e8 00000024 Dec 4 12:37:00 master c21a5f2c f8e55bdb 0000002d 0000002d 00000000 00000800 00000000 c22e9c60 Dec 4 12:37:00 master c21fb4c0 00000000 c22e9bc0 c22e9bf4 c21fb4c0 c21fb740 00000000 0003c876 Dec 4 12:37:00 master Call Trace: Dec 4 12:37:00 master [] show_trace_log_lvl+0x1a/0x30 Dec 4 12:37:00 master [] show_stack_log_lvl+0xab/0xd0 Dec 4 12:37:00 master [] show_registers+0x1d1/0x2d0 Dec 4 12:37:00 master [] die+0x118/0x240 Dec 4 12:37:00 master [] do_page_fault+0x1e1/0x870 Dec 4 12:37:00 master [] error_code+0x72/0x78 Dec 4 12:37:00 master [] xfs_trans_committed+0xca/0xf0 [xfs] Dec 4 12:37:00 master [] xlog_state_do_callback+0x1ab/0x280 [xfs] Dec 4 12:37:00 master [] xlog_state_done_syncing+0x63/0x80 [xfs] Dec 4 12:37:00 master [] xlog_iodone+0x45/0xd0 [xfs] Dec 4 12:37:00 master [] xfs_buf_iodone_work+0x12/0x40 [xfs] Dec 4 12:37:00 master [] run_workqueue+0xd2/0x160 Dec 4 12:37:00 master [] worker_thread+0x8c/0xf0 Dec 4 12:37:00 master [] kthread+0x42/0x70 Dec 4 12:37:00 master [] kernel_thread_helper+0x7/0x14 Dec 4 12:37:00 master ======================= Dec 4 12:37:00 master Code: 00 00 00 8b 83 d0 00 00 00 8b 93 d4 00 00 00 89 41 04 89 51 08 83 c1 0c eb b3 8d 76 00 55 89 e5 53 89 c3 8b 40 54 05 68 03 00 00 ff 08 8b 43 54 8b 90 24 03 00 00 85 d2 74 05 89 d8 ff 52 04 Dec 4 12:37:00 master EIP: [] xfs_trans_free+0xe/0x40 [xfs] SS:ESP 0068:c21a5eb0 Dec 4 12:56:26 master ------------[ cut here ]------------ Dec 4 12:56:26 master Kernel BUG at c0181cf7 [verbose debug info unavailable] Dec 4 12:56:26 master invalid opcode: 0000 [#3] Dec 4 12:56:26 master SMP Dec 4 12:56:26 master Dec 4 12:56:26 master Modules linked in: Dec 4 12:56:26 master netconsole Dec 4 12:56:26 master smbfs Dec 4 12:56:26 master nls_iso8859_1 Dec 4 12:56:26 master cifs Dec 4 12:56:26 master tun Dec 4 12:56:26 master af_packet Dec 4 12:56:26 master ipv6 Dec 4 12:56:26 master video Dec 4 12:56:26 master thermal Dec 4 12:56:26 master sbs Dec 4 12:56:26 master processor Dec 4 12:56:26 master fan Dec 4 12:56:26 master container Dec 4 12:56:26 master button Dec 4 12:56:26 master dock Dec 4 12:56:26 master battery Dec 4 12:56:26 master ac Dec 4 12:56:26 master binfmt_misc Dec 4 12:56:26 master loop Dec 4 12:56:26 master nls_utf8 Dec 4 12:56:26 master nls_cp437 Dec 4 12:56:26 master vfat Dec 4 12:56:26 master fat Dec 4 12:56:26 master dm_mirror Dec 4 12:56:26 master dm_mod Dec 4 12:56:26 master ide_cd Dec 4 12:56:26 master piix Dec 4 12:56:26 master usb_storage Dec 4 12:56:26 master ide_core Dec 4 12:56:26 master st Dec 4 12:56:26 master aic7xxx Dec 4 12:56:26 master scsi_transport_spi Dec 4 12:56:26 master tsdev Dec 4 12:56:26 master usbmouse Dec 4 12:56:26 master usbhid Dec 4 12:56:26 master ff_memless Dec 4 12:56:26 master floppy Dec 4 12:56:26 master cpufreq_ondemand Dec 4 12:56:26 master cpufreq_conservative Dec 4 12:56:26 master cpufreq_powersave Dec 4 12:56:26 master p4_clockmod Dec 4 12:56:26 master speedstep_lib Dec 4 12:56:26 master freq_table Dec 4 12:56:26 master ehci_hcd Dec 4 12:56:26 master iTCO_wdt Dec 4 12:56:26 master iTCO_vendor_support Dec 4 12:56:26 master e1000 Dec 4 12:56:26 master e752x_edac Dec 4 12:56:26 master uhci_hcd Dec 4 12:56:26 master edac_mc Dec 4 12:56:26 master usbcore Dec 4 12:56:26 master shpchp Dec 4 12:56:26 master pci_hotplug Dec 4 12:56:26 master evdev Dec 4 12:56:26 master sg Dec 4 12:56:26 master xfs Dec 4 12:56:26 master scsi_wait_scan Dec 4 12:56:26 master sd_mod Dec 4 12:56:26 master megaraid_mbox Dec 4 12:56:26 master megaraid_mm Dec 4 12:56:26 master scsi_mod Dec 4 12:56:26 master Dec 4 12:56:26 master CPU: 1 Dec 4 12:56:26 master EIP: 0060:[] Not tainted VLI Dec 4 12:56:26 master EFLAGS: 00010096 (2.6.22.12-server-1mdv #1) Dec 4 12:56:26 master EIP is at cache_alloc_refill+0x1d7/0x560 Dec 4 12:56:26 master eax: 00000006 ebx: 00000010 ecx: f747f840 edx: f7a0a2c0 Dec 4 12:56:26 master esi: ffb2a005 edi: e2750000 ebp: d67edd5c esp: d67edd0c Dec 4 12:56:26 master ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068 Dec 4 12:56:26 master Process readarkeia (pid: 32292, ti=d67ec000 task=d49e3030 task.ti=d67ec000) Dec 4 12:56:26 master Dec 4 12:56:26 master Stack: Dec 4 12:56:26 master 000002d0 Dec 4 12:56:26 master 00000000 Dec 4 12:56:26 master f747f848 Dec 4 12:56:26 master f747f850 Dec 4 12:56:26 master f8e7c599 Dec 4 12:56:26 master 000002d0 Dec 4 12:56:26 master f7a0a2c0 Dec 4 12:56:26 master f7fb5c00 Dec 4 12:56:26 master Dec 4 12:56:26 master Dec 4 12:56:26 master f747f840 Dec 4 12:56:26 master c21834c0 Dec 4 12:56:26 master 98118557 Dec 4 12:56:26 master 00000000 Dec 4 12:56:26 master 00000000 Dec 4 12:56:26 master f13bc380 Dec 4 12:56:26 master 00000000 Dec 4 12:56:26 master 00000000 Dec 4 12:56:26 master Dec 4 12:56:26 master Dec 4 12:56:26 master 00000000 Dec 4 12:56:26 master 00000282 Dec 4 12:56:26 master f7a0a2c0 Dec 4 12:56:26 master 00000000 Dec 4 12:56:26 master d67edd6c Dec 4 12:56:26 master c0181b1a Dec 4 12:56:26 master 00000000 Dec 4 12:56:26 master 000002d0 Dec 4 12:56:26 master Dec 4 12:56:26 master Call Trace: Dec 4 12:56:26 master [] Dec 4 12:56:26 master show_trace_log_lvl+0x1a/0x30 Dec 4 12:56:26 master [] Dec 4 12:56:26 master show_stack_log_lvl+0xab/0xd0 Dec 4 12:56:26 master [] Dec 4 12:56:26 master show_registers+0x1d1/0x2d0 Dec 4 12:56:26 master [] Dec 4 12:56:26 master die+0x118/0x240 Dec 4 12:56:26 master [] Dec 4 12:56:26 master do_trap+0x91/0xc0 Dec 4 12:56:26 master [] Dec 4 12:56:26 master do_invalid_op+0x88/0xa0 Dec 4 12:56:26 master [] Dec 4 12:56:26 master error_code+0x72/0x78 Dec 4 12:56:26 master [] Dec 4 12:56:26 master kmem_cache_alloc+0x6a/0x70 Dec 4 12:56:26 master [] Dec 4 12:56:26 master kmem_zone_alloc+0x55/0xc0 [xfs] Dec 4 12:56:26 master [] Dec 4 12:56:26 master kmem_zone_zalloc+0x18/0x60 [xfs] Dec 4 12:56:26 master [] Dec 4 12:56:26 master _xfs_trans_alloc+0x27/0x70 [xfs] Dec 4 12:56:26 master [] Dec 4 12:56:26 master xfs_trans_alloc+0x81/0x90 [xfs] Dec 4 12:56:26 master [] Dec 4 12:56:26 master xfs_mkdir+0x1ac/0x630 [xfs] Dec 4 12:56:26 master [] Dec 4 12:56:26 master xfs_vn_mknod+0x246/0x320 [xfs] Dec 4 12:56:26 master [] Dec 4 12:56:26 master xfs_vn_mkdir+0x15/0x20 [xfs] Dec 4 12:56:26 master [] Dec 4 12:56:26 master vfs_mkdir+0xc6/0x150 Dec 4 12:56:26 master [] Dec 4 12:56:26 master sys_mkdirat+0x8f/0xd0 Dec 4 12:56:26 master [] Dec 4 12:56:26 master sys_mkdir+0x20/0x30 Dec 4 12:56:26 master [] Dec 4 12:56:26 master sysenter_past_esp+0x6b/0xa1 Dec 4 12:56:26 master ======================= Dec 4 12:56:26 master Code: Dec 4 12:56:26 master 83 Dec 4 12:56:26 master c4 Dec 4 12:56:26 master 44 Dec 4 12:56:26 master 5b Dec 4 12:56:26 master 5e Dec 4 12:56:26 master 5f Dec 4 12:56:26 master 5d Dec 4 12:56:26 master c3 Dec 4 12:56:26 master 8b Dec 4 12:56:26 master 79 Dec 4 12:56:26 master 10 Dec 4 12:56:26 master c7 Dec 4 12:56:26 master 41 Dec 4 12:56:26 master 34 Dec 4 12:56:26 master 01 Dec 4 12:56:26 master 00 Dec 4 12:56:26 master last message repeated 2 times Dec 4 12:56:26 master 39 Dec 4 12:56:26 master 7d Dec 4 12:56:26 master bc Dec 4 12:56:26 master 74 Dec 4 12:56:26 master ae Dec 4 12:56:26 master 8b Dec 4 12:56:26 master 55 Dec 4 12:56:26 master c8 Dec 4 12:56:26 master 8b Dec 4 12:56:26 master 77 Dec 4 12:56:26 master 10 Dec 4 12:56:26 master 8b Dec 4 12:56:26 master 82 Dec 4 12:56:26 master 98 Dec 4 12:56:26 master 00 Dec 4 12:56:26 master last message repeated 2 times Dec 4 12:56:26 master 39 Dec 4 12:56:26 master c6 Dec 4 12:56:26 master 0f Dec 4 12:56:26 master 82 Dec 4 12:56:26 master 05 Dec 4 12:56:26 master ff Dec 4 12:56:26 master last message repeated 2 times Dec 4 12:56:26 master 0b Dec 4 12:56:26 master eb Dec 4 12:56:26 master fe Dec 4 12:56:26 master 90 Dec 4 12:56:26 master 8d Dec 4 12:56:26 master 74 Dec 4 12:56:26 master 26 Dec 4 12:56:26 master 00 Dec 4 12:56:26 master 8b Dec 4 12:56:26 master 4d Dec 4 12:56:26 master d0 Dec 4 12:56:26 master 8b Dec 4 12:56:26 master 41 Dec 4 12:56:26 master 08 Dec 4 12:56:26 master 89 Dec 4 12:56:26 master 78 Dec 4 12:56:26 master 04 Dec 4 12:56:26 master 89 Dec 4 12:56:26 master 07 Dec 4 12:56:26 master 8b Dec 4 12:56:26 master Dec 4 12:56:26 master EIP: [] Dec 4 12:56:26 master cache_alloc_refill+0x1d7/0x560 Dec 4 12:56:26 master SS:ESP 0068:d67edd0c -- *Tobias Oed* - Octant Informatique tobias.oed@octant.org - 04 76 50 82 38 *La Région Rhône Alpes soutient Octant dans le cadre de son projet innovant... L'ERP OpenSource.* From sandeen@sandeen.net Sat Dec 6 07:38:14 2008 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,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 mB6DcDCb018127 for ; Sat, 6 Dec 2008 07:38:14 -0600 X-ASG-Debug-ID: 1228570691-08a803720000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2632C1B2DC6B for ; Sat, 6 Dec 2008 05:38:11 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id zECBS3FjMrRaIhuz for ; Sat, 06 Dec 2008 05:38:11 -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 sandeen.net (Postfix) with ESMTP id 74936AC6272; Sat, 6 Dec 2008 07:38:10 -0600 (CST) Message-ID: <493A8042.60700@sandeen.net> Date: Sat, 06 Dec 2008 07:38:10 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs mailing list X-ASG-Orig-Subj: [PATCH V2] fix up xfs-cmds build after the parallel-fest Subject: [PATCH V2] fix up xfs-cmds build after the parallel-fest References: <49396528.1090700@sandeen.net> <20081205173716.GA8216@infradead.org> <20081206102415.GA28776@infradead.org> In-Reply-To: <20081206102415.GA28776@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: 1228570692 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.12078 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Christoph Hellwig wrote: > On Fri, Dec 05, 2008 at 12:37:16PM -0500, Christoph Hellwig wrote: > >> Thanks, this fixes the dpkg build for me. >> > > But it misses one hunk to fix the attr build, too: > Grr, quilt is nice exept for that pesky quilt add step. :) ================================================================ My big parallel build patch lost the "make configure" target. This broke Makepkgs... Now, IMHO, running configure from make is a little bass-ackwards; I'd probably prefer to have Makepkgs explicitly run: autoconf; configure --myoptions; make but for now, this adds back in a workable "make configure" target. This time, for attr as well! Also fixed "make install-lib" for acl, which was failing in the man subdir. Signed-off-by: Eric Sandeen --- Index: xfs-cmds/acl/Makefile =================================================================== --- xfs-cmds.orig/acl/Makefile 2008-12-05 10:42:40.000000000 -0600 +++ xfs-cmds/acl/Makefile 2008-12-05 10:46:04.977513746 -0600 @@ -38,7 +38,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoconf ./configure \ --prefix=/ \ Index: xfs-cmds/acl/man/Makefile =================================================================== --- xfs-cmds.orig/acl/man/Makefile 2008-12-05 10:42:40.000000000 -0600 +++ xfs-cmds/acl/man/Makefile 2008-12-05 10:48:20.842513303 -0600 @@ -13,10 +13,15 @@ install : $(addsuffix -install,$(SUBDIRS install-dev : $(addsuffix -install-dev,$(SUBDIRS)) +install-lib: $(addsuffix -install-lib,$(SUBDIRS)) + %-install: $(MAKE) -C $* install %-install-dev: $(MAKE) -C $* install-dev +%-install-lib: + $(MAKE) -C $* install-lib + include $(BUILDRULES) Index: xfs-cmds/attr/Makefile =================================================================== --- xfs-cmds.orig/attr/Makefile 2008-12-06 07:35:37.000000000 -0600 +++ xfs-cmds/attr/Makefile 2008-12-06 07:35:46.973512932 -0600 @@ -39,7 +39,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoconf ./configure \ --prefix=/ \ Index: xfs-cmds/dmapi/Makefile =================================================================== --- xfs-cmds.orig/dmapi/Makefile 2008-12-06 07:35:27.500512631 -0600 +++ xfs-cmds/dmapi/Makefile 2008-12-06 07:35:51.122575385 -0600 @@ -36,7 +36,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoconf ./configure \ --prefix=/ \ Index: xfs-cmds/xfsprogs/Makefile =================================================================== --- xfs-cmds.orig/xfsprogs/Makefile 2008-12-06 07:35:25.450513137 -0600 +++ xfs-cmds/xfsprogs/Makefile 2008-12-06 07:35:52.019575218 -0600 @@ -44,7 +44,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoconf ./configure \ --prefix=/ \ Index: xfs-cmds/xfsdump/Makefile =================================================================== --- xfs-cmds.orig/xfsdump/Makefile 2008-12-06 07:35:23.576512995 -0600 +++ xfs-cmds/xfsdump/Makefile 2008-12-06 07:35:52.598575866 -0600 @@ -37,7 +37,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoconf ./configure \ --prefix=/ \ Index: xfs-cmds/nfs4acl/Makefile =================================================================== --- xfs-cmds.orig/nfs4acl/Makefile 2008-12-06 07:35:21.142512675 -0600 +++ xfs-cmds/nfs4acl/Makefile 2008-12-06 07:35:53.473513505 -0600 @@ -39,7 +39,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoconf ./configure \ --prefix=/ \ Index: xfs-cmds/xfstests/Makefile =================================================================== --- xfs-cmds.orig/xfstests/Makefile 2008-12-06 07:35:21.141513154 -0600 +++ xfs-cmds/xfstests/Makefile 2008-12-06 07:35:53.473513505 -0600 @@ -42,7 +42,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoheader autoconf ./configure \ From sandeen@sandeen.net Sat Dec 6 07:42:36 2008 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 mB6DgZ5A018518 for ; Sat, 6 Dec 2008 07:42:36 -0600 X-ASG-Debug-ID: 1228570953-053503a20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7A8571BF1224 for ; Sat, 6 Dec 2008 05:42:33 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id lwkFEtS6gKSq01uJ for ; Sat, 06 Dec 2008 05:42:33 -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 sandeen.net (Postfix) with ESMTP id 92D29A8480D; Sat, 6 Dec 2008 07:42:33 -0600 (CST) Message-ID: <493A8149.5020704@sandeen.net> Date: Sat, 06 Dec 2008 07:42:33 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: DS CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: kernel 2.6.27.7 problem Subject: Re: kernel 2.6.27.7 problem References: <20081206023608.GA22135@bob.dscon.sk> <4939F104.9060201@sandeen.net> <20081206091022.GA24158@bob.dscon.sk> In-Reply-To: <20081206091022.GA24158@bob.dscon.sk> 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: 1228570954 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.12078 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- DS wrote: > No other messages before. No iSCSI/network messages...nothing. > Only this few lines and FS is down. After remount it works ....while and > hangs again. > Few hours it runs back on 2.6.24.3 and everything is OK. > > It's production system, but I test it again in late night. > What can I do to identify problem? Complain to the iscsi people perhaps...? __end_that_request_first() in block/block-core.c() is what is issuing your first error, > end_request: I/O error, dev sde, sector 351572544 and the rest is xfs reacting to that. Maybe the first thing I'd check is whether that sector nr. is sane for your device (I'd assume it is, but maybe worth checking). If that's all you've got I'm not sure offhand what else to debug.... -Eric From jpiszcz@lucidpixels.com Sat Dec 6 08:34:23 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.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 mB6EYNs9021873 for ; Sat, 6 Dec 2008 08:34:23 -0600 X-ASG-Debug-ID: 1228574061-7b5300180000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 38C6D1B94BD7 for ; Sat, 6 Dec 2008 06:34:22 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id 0tfaFMAuDZkQ3hfB for ; Sat, 06 Dec 2008 06:34:22 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 2D60510050203; Sat, 6 Dec 2008 09:28:50 -0500 (EST) Date: Sat, 6 Dec 2008 09:28:50 -0500 (EST) From: Justin Piszcz To: linux-raid@vger.kernel.org, xfs@oss.sgi.com cc: Alan Piszcz X-ASG-Orig-Subj: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Message-ID: User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1228574062 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.12082 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Someone should write a document with XFS and barrier support, if I recall, in the past, they never worked right on raid1 or raid5 devices, but it appears now they they work on RAID1, which slows down performance ~12 times!! l1:~# /usr/bin/time tar xf linux-2.6.27.7.tar 0.15user 1.54system 0:13.18elapsed 12%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+325minor)pagefaults 0swaps l1:~# l1:~# /usr/bin/time tar xf linux-2.6.27.7.tar 0.14user 1.66system 2:39.68elapsed 1%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+324minor)pagefaults 0swaps l1:~# Before: /dev/md2 / xfs defaults,noatime 0 1 After: /dev/md2 / xfs defaults,noatime,nobarrier,logbufs=8,logbsize=262144 0 1 There is some mention of it here: http://oss.sgi.com/projects/xfs/faq.html#wcache_persistent But basically I believe it should be noted in the kernel logs, FAQ or somewhere because just through the process of upgrading the kernel, not changing fstab or any other part of the system, performance can drop 12x just because the newer kernels implement barriers. Justin. From sandeen@sandeen.net Sat Dec 6 09:36:43 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=AWL,BAYES_00,TRACKER_ID 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 mB6FahpJ025484 for ; Sat, 6 Dec 2008 09:36:43 -0600 X-ASG-Debug-ID: 1228577801-7b5301d30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 922241BF1450 for ; Sat, 6 Dec 2008 07:36:42 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 17Cir51dBTQYj6v8 for ; Sat, 06 Dec 2008 07:36:42 -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 sandeen.net (Postfix) with ESMTP id 45385AC6272; Sat, 6 Dec 2008 09:36:09 -0600 (CST) Message-ID: <493A9BE7.3090001@sandeen.net> Date: Sat, 06 Dec 2008 09:36:07 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Justin Piszcz CC: linux-raid@vger.kernel.org, xfs@oss.sgi.com, Alan Piszcz X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] References: In-Reply-To: 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: 1228577802 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: 0.67 X-Barracuda-Spam-Status: No, SCORE=0.67 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=TRACKER_ID X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.12086 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 2.70 TRACKER_ID BODY: Incorporates a tracking ID number Justin Piszcz wrote: > Someone should write a document with XFS and barrier support, if I recall, > in the past, they never worked right on raid1 or raid5 devices, but it > appears now they they work on RAID1, which slows down performance ~12 times!! What sort of document do you propose? xfs will enable barriers on any block device which will support them, and after: deeb5912db12e8b7ccf3f4b1afaad60bc29abed9 [XFS] Disable queue flag test in barrier check. xfs is able to determine, via a test IO, that md raid1 does pass barriers through properly even though it doesn't set an ordered flag on the queue. > l1:~# /usr/bin/time tar xf linux-2.6.27.7.tar > 0.15user 1.54system 0:13.18elapsed 12%CPU (0avgtext+0avgdata 0maxresident)k > 0inputs+0outputs (0major+325minor)pagefaults 0swaps > l1:~# > > l1:~# /usr/bin/time tar xf linux-2.6.27.7.tar > 0.14user 1.66system 2:39.68elapsed 1%CPU (0avgtext+0avgdata 0maxresident)k > 0inputs+0outputs (0major+324minor)pagefaults 0swaps > l1:~# > > Before: > /dev/md2 / xfs defaults,noatime 0 1 > > After: > /dev/md2 / xfs defaults,noatime,nobarrier,logbufs=8,logbsize=262144 0 1 Well, if you're investigating barriers can you do a test with just the barrier option change; though I expect you'll still find it to have a substantial impact. > There is some mention of it here: > http://oss.sgi.com/projects/xfs/faq.html#wcache_persistent > > But basically I believe it should be noted in the kernel logs, FAQ or somewhere > because just through the process of upgrading the kernel, not changing fstab > or any other part of the system, performance can drop 12x just because the > newer kernels implement barriers. Perhaps: printk(KERN_ALERT "XFS is now looking after your metadata very carefully; if you prefer the old, fast, dangerous way, mount with -o nobarrier\n"); :) Really, this just gets xfs on md raid1 in line with how it behaves on most other devices. But I agree, some documentation/education is probably in order; if you choose to disable write caches or you have faith in the battery backup of your write cache, turning off barriers would be a good idea. Justin, it might be interesting to do some tests with: barrier, write cache enabled nobarrier, write cache enabled nobarrier, write cache disabled a 12x hit does hurt though... If you're really motivated, try the same scenarios on ext3 and ext4 to see what the barrier hit is on those as well. -Eric From pg_mh@sabi.co.UK Sat Dec 6 12:42:49 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 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 mB6Ignj4002611 for ; Sat, 6 Dec 2008 12:42:49 -0600 X-ASG-Debug-ID: 1228588967-37c001a20000-ps1ADW X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ty.sabi.co.UK (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5E28816CAED1 for ; Sat, 6 Dec 2008 10:42:47 -0800 (PST) Received: from ty.sabi.co.UK (82-69-39-138.dsl.in-addr.zen.co.uk [82.69.39.138]) by cuda.sgi.com with ESMTP id h1BIbWZdvVjnjwVG for ; Sat, 06 Dec 2008 10:42:47 -0800 (PST) Received: from from [127.0.0.1] (helo=tree.ty.sabi.co.uk) by ty.sabi.co.UK with esmtp(Exim 4.68 #1) id 1L926p-00078f-L2; Sat, 06 Dec 2008 18:42:31 +0000 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <18746.51094.473042.389299@tree.ty.sabi.co.uk> Date: Sat, 6 Dec 2008 18:42:30 +0000 X-Face: SMJE]JPYVBO-9UR%/8d'mG.F!@.,l@c[f'[%S8'BZIcbQc3/">GrXDwb#;fTRGNmHr^JFb SAptvwWc,0+z+~p~"Gdr4H$(|N(yF(wwCM2bW0~U?HPEE^fkPGx^u[*[yV.gyB!hDOli}EF[\cW*S H&spRGFL}{`bj1TaD^l/"[ msn( /TH#THs{Hpj>)]f>, Linux RAID X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] In-Reply-To: References: X-Mailer: VM 7.17 under 21.5 (beta28) XEmacs Lucid From: pg_xf2@xf2.for.sabi.co.UK (Peter Grandi) X-Disclaimer: This message contains only personal opinions X-Barracuda-Connect: 82-69-39-138.dsl.in-addr.zen.co.uk[82.69.39.138] X-Barracuda-Start-Time: 1228588968 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.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.12098 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS > Someone should write a document with XFS and barrier support, > if I recall, in the past, they never worked right on raid1 or > raid5 devices, but it appears now they they work on RAID1, > which slows down performance ~12 times!! Of the many poorly misunderstood, misleading posts to the XFS and RAID mailing lists this comparison is particularly bad: > l1:~# /usr/bin/time tar xf linux-2.6.27.7.tar > 0.15user 1.54system 0:13.18elapsed 12%CPU (0avgtext+0avgdata 0maxresident)k > 0inputs+0outputs (0major+325minor)pagefaults 0swaps > l1:~# > l1:~# /usr/bin/time tar xf linux-2.6.27.7.tar > 0.14user 1.66system 2:39.68elapsed 1%CPU (0avgtext+0avgdata 0maxresident)k > 0inputs+0outputs (0major+324minor)pagefaults 0swaps > l1:~# In the first case 'linux-2.6.27.7.tar' is in effect being extracted to volatile memory (depending on memory size, flusher parameters, etc., which are gleefully unreported), in the second to persistent disk; even worse in the particular case it is a fairly metadata intensive test (25k inodes), and writing lots of metadata to disk (twice as in RAID1) as opposed to memory of course is going to be slow. Comparing the two makes no sense and imparts no useful information. It would be more interesting to see an analysis with data and argument as to whether the metadata layout of XFS is good or bad or how it could be improved; the issue here is metadata policies, not barriers. From SRS0+e20dc571ea0c1c6d9dae+1931+infradead.org+hch@bombadil.srs.infradead.org Sat Dec 6 13:08:04 2008 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_32, J_CHICKENPOX_43,J_CHICKENPOX_62,J_CHICKENPOX_63,J_CHICKENPOX_64, J_CHICKENPOX_65,J_CHICKENPOX_66,J_CHICKENPOX_74,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 mB6J84uv003765 for ; Sat, 6 Dec 2008 13:08:04 -0600 X-ASG-Debug-ID: 1228590483-30c3029c0000-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 968801670BB0 for ; Sat, 6 Dec 2008 11:08:03 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id XuAEtrmqjdGz83FP for ; Sat, 06 Dec 2008 11:08:03 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L92VW-0006cZ-RI for xfs@oss.sgi.com; Sat, 06 Dec 2008 19:08:02 +0000 Date: Sat, 6 Dec 2008 14:08:02 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfsprogs: resync xfs with the kernel code Subject: [PATCH] xfsprogs: resync xfs with the kernel code Message-ID: <20081206190802.GA18831@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: 1228590483 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Also use the kernel xfs_iread now instead of a duplicated version. Signed-off-by: Christoph Hellwig Index: xfs-cmds/xfsprogs/include/xfs_ag.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_ag.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_ag.h 2008-12-06 20:05:49.000000000 +0100 @@ -91,6 +91,8 @@ #define XFS_AGF_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGF_DADDR(mp)) #define XFS_BUF_TO_AGF(bp) ((xfs_agf_t *)XFS_BUF_PTR(bp)) +extern int xfs_read_agf(struct xfs_mount *mp, struct xfs_trans *tp, + xfs_agnumber_t agno, int flags, struct xfs_buf **bpp); /* * Size of the unlinked inode hash table in the agi. @@ -142,6 +144,9 @@ #define XFS_AGI_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGI_DADDR(mp)) #define XFS_BUF_TO_AGI(bp) ((xfs_agi_t *)XFS_BUF_PTR(bp)) +extern int xfs_read_agi(struct xfs_mount *mp, struct xfs_trans *tp, + xfs_agnumber_t agno, struct xfs_buf **bpp); + /* * The third a.g. block contains the a.g. freelist, an array * of block pointers to blocks owned by the allocation btree code. @@ -204,6 +209,11 @@ #endif } xfs_perag_t; +/* + * tags for inode radix tree + */ +#define XFS_ICI_RECLAIM_TAG 0 /* inode is to be reclaimed */ + #define XFS_AG_MAXLEVELS(mp) ((mp)->m_ag_maxlevels) #define XFS_MIN_FREELIST_RAW(bl,cl,mp) \ (MIN(bl + 1, XFS_AG_MAXLEVELS(mp)) + MIN(cl + 1, XFS_AG_MAXLEVELS(mp))) Index: xfs-cmds/xfsprogs/include/xfs_bmap.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_bmap.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_bmap.h 2008-12-06 20:05:49.000000000 +0100 @@ -356,15 +356,18 @@ xfs_bmap_free_t *flist, /* i/o: list extents to free */ int *committed); /* xact committed or not */ +/* bmap to userspace formatter - copy to user & advance pointer */ +typedef int (*xfs_bmap_format_t)(void **, struct getbmapx *, int *); + /* - * Fcntl interface to xfs_bmapi. + * Get inode's extents as described in bmv, and format for output. */ int /* error code */ xfs_getbmap( xfs_inode_t *ip, - struct getbmap *bmv, /* user bmap structure */ - void __user *ap, /* pointer to user's array */ - int iflags); /* interface flags */ + struct getbmapx *bmv, /* user bmap structure */ + xfs_bmap_format_t formatter, /* format to user */ + void *arg); /* formatter arg */ /* * Check if the endoff is outside the last extent. If so the caller will grow Index: xfs-cmds/xfsprogs/include/xfs_dfrag.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_dfrag.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_dfrag.h 2008-12-06 20:05:49.000000000 +0100 @@ -46,7 +46,7 @@ /* * Syscall interface for xfs_swapext */ -int xfs_swapext(struct xfs_swapext __user *sx); +int xfs_swapext(struct xfs_swapext *sx); int xfs_swap_extents(struct xfs_inode *ip, struct xfs_inode *tip, struct xfs_swapext *sxp); Index: xfs-cmds/xfsprogs/include/xfs_dinode.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_dinode.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_dinode.h 2008-12-06 20:05:49.000000000 +0100 @@ -18,32 +18,29 @@ #ifndef __XFS_DINODE_H__ #define __XFS_DINODE_H__ -struct xfs_buf; -struct xfs_mount; +#define XFS_DINODE_MAGIC 0x494e /* 'IN' */ +#define XFS_DINODE_GOOD_VERSION(v) (((v) == 1 || (v) == 2)) -#define XFS_DINODE_VERSION_1 1 -#define XFS_DINODE_VERSION_2 2 -#define XFS_DINODE_GOOD_VERSION(v) \ - (((v) == XFS_DINODE_VERSION_1 || (v) == XFS_DINODE_VERSION_2)) -#define XFS_DINODE_MAGIC 0x494e /* 'IN' */ - -/* - * Disk inode structure. - * This is just the header; the inode is expanded to fill a variable size - * with the last field expanding. It is split into the core and "other" - * because we only need the core part in the in-core inode. - */ typedef struct xfs_timestamp { __be32 t_sec; /* timestamp seconds */ __be32 t_nsec; /* timestamp nanoseconds */ } xfs_timestamp_t; /* - * Note: Coordinate changes to this structure with the XFS_DI_* #defines - * below, the offsets table in xfs_ialloc_log_di() and struct xfs_icdinode - * in xfs_inode.h. + * On-disk inode structure. + * + * This is just the header or "dinode core", the inode is expanded to fill a + * variable size the leftover area split into a data and an attribute fork. + * The format of the data and attribute fork depends on the format of the + * inode as indicated by di_format and di_aformat. To access the data and + * attribute use the XFS_DFORK_PTR, XFS_DFORK_DPTR, and XFS_DFORK_PTR macros + * below. + * + * There is a very similar struct icdinode in xfs_inode which matches the + * layout of the first 96 bytes of this structure, but is kept in native + * format instead of big endian. */ -typedef struct xfs_dinode_core { +typedef struct xfs_dinode { __be16 di_magic; /* inode magic # = XFS_DINODE_MAGIC */ __be16 di_mode; /* mode and type of file */ __u8 di_version; /* inode version */ @@ -69,33 +66,12 @@ __be16 di_dmstate; /* DMIG state info */ __be16 di_flags; /* random flags, XFS_DIFLAG_... */ __be32 di_gen; /* generation number */ -} xfs_dinode_core_t; -#define DI_MAX_FLUSH 0xffff + /* di_next_unlinked is the only non-core field in the old dinode */ + __be32 di_next_unlinked;/* agi unlinked list ptr */ +} __attribute__((packed)) xfs_dinode_t; -typedef struct xfs_dinode -{ - xfs_dinode_core_t di_core; - /* - * In adding anything between the core and the union, be - * sure to update the macros like XFS_LITINO below. - */ - __be32 di_next_unlinked;/* agi unlinked list ptr */ - union { - xfs_bmdr_block_t di_bmbt; /* btree root block */ - xfs_bmbt_rec_32_t di_bmx[1]; /* extent list */ - xfs_dir2_sf_t di_dir2sf; /* shortform directory v2 */ - char di_c[1]; /* local contents */ - __be32 di_dev; /* device for S_IFCHR/S_IFBLK */ - uuid_t di_muuid; /* mount point value */ - char di_symlink[1]; /* local symbolic link */ - } di_u; - union { - xfs_bmdr_block_t di_abmbt; /* btree root block */ - xfs_bmbt_rec_32_t di_abmx[1]; /* extent list */ - xfs_attr_shortform_t di_attrsf; /* shortform attribute list */ - } di_a; -} xfs_dinode_t; +#define DI_MAX_FLUSH 0xffff /* * The 32 bit link count in the inode theoretically maxes out at UINT_MAX. @@ -106,50 +82,14 @@ #define XFS_MAXLINK_1 65535U /* - * Bit names for logging disk inodes only - */ -#define XFS_DI_MAGIC 0x0000001 -#define XFS_DI_MODE 0x0000002 -#define XFS_DI_VERSION 0x0000004 -#define XFS_DI_FORMAT 0x0000008 -#define XFS_DI_ONLINK 0x0000010 -#define XFS_DI_UID 0x0000020 -#define XFS_DI_GID 0x0000040 -#define XFS_DI_NLINK 0x0000080 -#define XFS_DI_PROJID 0x0000100 -#define XFS_DI_PAD 0x0000200 -#define XFS_DI_ATIME 0x0000400 -#define XFS_DI_MTIME 0x0000800 -#define XFS_DI_CTIME 0x0001000 -#define XFS_DI_SIZE 0x0002000 -#define XFS_DI_NBLOCKS 0x0004000 -#define XFS_DI_EXTSIZE 0x0008000 -#define XFS_DI_NEXTENTS 0x0010000 -#define XFS_DI_NAEXTENTS 0x0020000 -#define XFS_DI_FORKOFF 0x0040000 -#define XFS_DI_AFORMAT 0x0080000 -#define XFS_DI_DMEVMASK 0x0100000 -#define XFS_DI_DMSTATE 0x0200000 -#define XFS_DI_FLAGS 0x0400000 -#define XFS_DI_GEN 0x0800000 -#define XFS_DI_NEXT_UNLINKED 0x1000000 -#define XFS_DI_U 0x2000000 -#define XFS_DI_A 0x4000000 -#define XFS_DI_NUM_BITS 27 -#define XFS_DI_ALL_BITS ((1 << XFS_DI_NUM_BITS) - 1) -#define XFS_DI_CORE_BITS (XFS_DI_ALL_BITS & ~(XFS_DI_U|XFS_DI_A)) - -/* * Values for di_format */ -typedef enum xfs_dinode_fmt -{ - XFS_DINODE_FMT_DEV, /* CHR, BLK: di_dev */ - XFS_DINODE_FMT_LOCAL, /* DIR, REG: di_c */ - /* LNK: di_symlink */ - XFS_DINODE_FMT_EXTENTS, /* DIR, REG, LNK: di_bmx */ - XFS_DINODE_FMT_BTREE, /* DIR, REG, LNK: di_bmbt */ - XFS_DINODE_FMT_UUID /* MNT: di_uuid */ +typedef enum xfs_dinode_fmt { + XFS_DINODE_FMT_DEV, /* xfs_dev_t */ + XFS_DINODE_FMT_LOCAL, /* bulk data */ + XFS_DINODE_FMT_EXTENTS, /* struct xfs_bmbt_rec */ + XFS_DINODE_FMT_BTREE, /* struct xfs_bmdr_block */ + XFS_DINODE_FMT_UUID /* uuid_t */ } xfs_dinode_fmt_t; /* @@ -170,8 +110,8 @@ /* * Inode data & attribute fork sizes, per inode. */ -#define XFS_DFORK_Q(dip) ((dip)->di_core.di_forkoff != 0) -#define XFS_DFORK_BOFF(dip) ((int)((dip)->di_core.di_forkoff << 3)) +#define XFS_DFORK_Q(dip) ((dip)->di_forkoff != 0) +#define XFS_DFORK_BOFF(dip) ((int)((dip)->di_forkoff << 3)) #define XFS_DFORK_DSIZE(dip,mp) \ (XFS_DFORK_Q(dip) ? \ @@ -186,23 +126,42 @@ XFS_DFORK_DSIZE(dip, mp) : \ XFS_DFORK_ASIZE(dip, mp)) -#define XFS_DFORK_DPTR(dip) ((dip)->di_u.di_c) +/* + * Return pointers to the data or attribute forks. + */ +#define XFS_DFORK_DPTR(dip) \ + ((char *)(dip) + sizeof(struct xfs_dinode)) #define XFS_DFORK_APTR(dip) \ - ((dip)->di_u.di_c + XFS_DFORK_BOFF(dip)) + (XFS_DFORK_DPTR(dip) + XFS_DFORK_BOFF(dip)) #define XFS_DFORK_PTR(dip,w) \ ((w) == XFS_DATA_FORK ? XFS_DFORK_DPTR(dip) : XFS_DFORK_APTR(dip)) + #define XFS_DFORK_FORMAT(dip,w) \ ((w) == XFS_DATA_FORK ? \ - (dip)->di_core.di_format : \ - (dip)->di_core.di_aformat) + (dip)->di_format : \ + (dip)->di_aformat) #define XFS_DFORK_NEXTENTS(dip,w) \ ((w) == XFS_DATA_FORK ? \ - be32_to_cpu((dip)->di_core.di_nextents) : \ - be16_to_cpu((dip)->di_core.di_anextents)) + be32_to_cpu((dip)->di_nextents) : \ + be16_to_cpu((dip)->di_anextents)) #define XFS_BUF_TO_DINODE(bp) ((xfs_dinode_t *)XFS_BUF_PTR(bp)) /* + * For block and character special files the 32bit dev_t is stored at the + * beginning of the data fork. + */ +static inline xfs_dev_t xfs_dinode_get_rdev(struct xfs_dinode *dip) +{ + return be32_to_cpu(*(__be32 *)XFS_DFORK_DPTR(dip)); +} + +static inline void xfs_dinode_put_rdev(struct xfs_dinode *dip, xfs_dev_t rdev) +{ + *(__be32 *)XFS_DFORK_DPTR(dip) = cpu_to_be32(rdev); +} + +/* * Values for di_flags * There should be a one-to-one correspondence between these flags and the * XFS_XFLAG_s. Index: xfs-cmds/xfsprogs/include/xfs_dir2_sf.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_dir2_sf.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_dir2_sf.h 2008-12-06 20:05:49.000000000 +0100 @@ -34,13 +34,6 @@ struct xfs_trans; /* - * Maximum size of a shortform directory. - */ -#define XFS_DIR2_SF_MAX_SIZE \ - (XFS_DINODE_MAX_SIZE - (uint)sizeof(xfs_dinode_core_t) - \ - (uint)sizeof(xfs_agino_t)) - -/* * Inode number stored as 8 8-bit values. */ typedef struct { __uint8_t i[8]; } xfs_dir2_ino8_t; Index: xfs-cmds/xfsprogs/include/xfs_fs.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_fs.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_fs.h 2008-12-06 20:05:49.000000000 +0100 @@ -113,22 +113,14 @@ #define BMV_IF_ATTRFORK 0x1 /* return attr fork rather than data */ #define BMV_IF_NO_DMAPI_READ 0x2 /* Do not generate DMAPI read event */ #define BMV_IF_PREALLOC 0x4 /* rtn status BMV_OF_PREALLOC if req */ -#define BMV_IF_VALID (BMV_IF_ATTRFORK|BMV_IF_NO_DMAPI_READ|BMV_IF_PREALLOC) -#ifdef __KERNEL__ -#define BMV_IF_EXTENDED 0x40000000 /* getpmapx if set */ -#endif +#define BMV_IF_DELALLOC 0x8 /* rtn status BMV_OF_DELALLOC if req */ +#define BMV_IF_VALID \ + (BMV_IF_ATTRFORK|BMV_IF_NO_DMAPI_READ|BMV_IF_PREALLOC|BMV_IF_DELALLOC) /* bmv_oflags values - returned for for each non-header segment */ #define BMV_OF_PREALLOC 0x1 /* segment = unwritten pre-allocation */ - -/* Convert getbmap <-> getbmapx - move fields from p1 to p2. */ -#define GETBMAP_CONVERT(p1,p2) { \ - p2.bmv_offset = p1.bmv_offset; \ - p2.bmv_block = p1.bmv_block; \ - p2.bmv_length = p1.bmv_length; \ - p2.bmv_count = p1.bmv_count; \ - p2.bmv_entries = p1.bmv_entries; } - +#define BMV_OF_DELALLOC 0x2 /* segment = delayed allocation */ +#define BMV_OF_LAST 0x4 /* segment is the last in the file */ /* * Structure for XFS_IOC_FSSETDM. @@ -426,10 +418,6 @@ #define XFS_IOC_GETXFLAGS FS_IOC_GETFLAGS #define XFS_IOC_SETXFLAGS FS_IOC_SETFLAGS #define XFS_IOC_GETVERSION FS_IOC_GETVERSION -/* 32-bit compat counterparts */ -#define XFS_IOC32_GETXFLAGS FS_IOC32_GETFLAGS -#define XFS_IOC32_SETXFLAGS FS_IOC32_SETFLAGS -#define XFS_IOC32_GETVERSION FS_IOC32_GETVERSION /* * ioctl commands that replace IRIX fcntl()'s Index: xfs-cmds/xfsprogs/include/xfs_ialloc.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_ialloc.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_ialloc.h 2008-12-06 20:05:49.000000000 +0100 @@ -20,6 +20,7 @@ struct xfs_buf; struct xfs_dinode; +struct xfs_imap; struct xfs_mount; struct xfs_trans; @@ -104,17 +105,14 @@ xfs_ino_t *first_ino); /* first inode in deleted cluster */ /* - * Return the location of the inode in bno/len/off, - * for mapping it into a buffer. + * Return the location of the inode in imap, for mapping it into a buffer. */ int -xfs_dilocate( +xfs_imap( struct xfs_mount *mp, /* file system mount structure */ struct xfs_trans *tp, /* transaction pointer */ xfs_ino_t ino, /* inode to locate */ - xfs_fsblock_t *bno, /* output: block containing inode */ - int *len, /* output: num blocks in cluster*/ - int *off, /* output: index in block of inode */ + struct xfs_imap *imap, /* location map structure */ uint flags); /* flags for inode btree lookup */ /* Index: xfs-cmds/xfsprogs/include/xfs_inode.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_inode.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_inode.h 2008-12-06 20:05:49.000000000 +0100 @@ -19,7 +19,6 @@ #define __XFS_INODE_H__ struct xfs_dinode; -struct xfs_dinode_core; struct xfs_inode; /* @@ -84,6 +83,16 @@ } xfs_ifork_t; /* + * Inode location information. Stored in the inode and passed to + * xfs_imap_to_bp() to get a buffer and dinode for a given inode. + */ +struct xfs_imap { + xfs_daddr_t im_blkno; /* starting BB of inode chunk */ + ushort im_len; /* length in BBs of inode chunk */ + ushort im_boffset; /* inode offset in block in bytes */ +}; + +/* * This is the xfs in-core inode structure. * Most of the on-disk inode is embedded in the i_d field. * @@ -112,7 +121,7 @@ } xfs_ictimestamp_t; /* - * NOTE: This structure must be kept identical to struct xfs_dinode_core + * NOTE: This structure must be kept identical to struct xfs_dinode * in xfs_dinode.h except for the endianess annotations. */ typedef struct xfs_icdinode { @@ -158,12 +167,6 @@ #define XFS_IFEXTIREC 0x08 /* Indirection array of extent blocks */ /* - * Flags for xfs_itobp(), xfs_imap() and xfs_dilocate(). - */ -#define XFS_IMAP_LOOKUP 0x1 -#define XFS_IMAP_BULKSTAT 0x2 - -/* * Fork handling. */ @@ -232,27 +235,15 @@ __uint16_t da_pad; /* DMIG extra padding */ } dm_attrs_t; -typedef struct { - struct xfs_inode *ip_mnext; /* next inode in mount list */ - struct xfs_inode *ip_mprev; /* ptr to prev inode */ - struct xfs_mount *ip_mount; /* fs mount struct ptr */ -} xfs_iptr_t; - typedef struct xfs_inode { /* Inode linking and identification information. */ - struct xfs_inode *i_mnext; /* next inode in mount list */ - struct xfs_inode *i_mprev; /* ptr to prev inode */ struct xfs_mount *i_mount; /* fs mount struct ptr */ - struct list_head i_reclaim; /* reclaim list */ - struct inode *i_vnode; /* vnode backpointer */ struct xfs_dquot *i_udquot; /* user dquot */ struct xfs_dquot *i_gdquot; /* group dquot */ /* Inode location stuff */ xfs_ino_t i_ino; /* inode number (agno/agino)*/ - xfs_daddr_t i_blkno; /* blkno of inode buffer */ - ushort i_len; /* len of inode buffer */ - ushort i_boffset; /* off of inode in buffer */ + struct xfs_imap i_imap; /* location for xfs_imap() */ /* Extent information. */ xfs_ifork_t *i_afp; /* attribute fork pointer */ @@ -271,7 +262,6 @@ unsigned short i_flags; /* see defined flags below */ unsigned char i_update_core; /* timestamps/size is dirty */ unsigned char i_update_size; /* di_size field is dirty */ - unsigned int i_gen; /* generation count */ unsigned int i_delayed_blks; /* count of delay alloc blks */ xfs_icdinode_t i_d; /* most of ondisk inode */ @@ -279,6 +269,10 @@ xfs_fsize_t i_size; /* in-memory size */ xfs_fsize_t i_new_size; /* size when write completes */ atomic_t i_iocount; /* outstanding I/O count */ + + /* VFS inode */ + struct inode i_vnode; /* embedded VFS inode */ + /* Trace buffers per inode. */ #ifdef XFS_INODE_TRACE struct ktrace *i_trace; /* general inode trace */ @@ -306,13 +300,30 @@ /* Convert from vfs inode to xfs inode */ static inline struct xfs_inode *XFS_I(struct inode *inode) { - return (struct xfs_inode *)inode->i_private; + return container_of(inode, struct xfs_inode, i_vnode); } /* convert from xfs inode to vfs inode */ static inline struct inode *VFS_I(struct xfs_inode *ip) { - return (struct inode *)ip->i_vnode; + return &ip->i_vnode; +} + +/* + * Get rid of a partially initialized inode. + * + * We have to go through destroy_inode to make sure allocations + * from init_inode_always like the security data are undone. + * + * We mark the inode bad so that it takes the short cut in + * the reclaim path instead of going through the flush path + * which doesn't make sense for an inode that has never seen the + * light of day. + */ +static inline void xfs_destroy_inode(struct xfs_inode *ip) +{ + make_bad_inode(VFS_I(ip)); + return destroy_inode(VFS_I(ip)); } /* @@ -392,17 +403,12 @@ /* * In-core inode flags. */ -#define XFS_IGRIO 0x0001 /* inode used for guaranteed rate i/o */ -#define XFS_IUIOSZ 0x0002 /* inode i/o sizes have been explicitly set */ -#define XFS_IQUIESCE 0x0004 /* we have started quiescing for this inode */ -#define XFS_IRECLAIM 0x0008 /* we have started reclaiming this inode */ -#define XFS_ISTALE 0x0010 /* inode has been staled */ -#define XFS_IRECLAIMABLE 0x0020 /* inode can be reclaimed */ -#define XFS_INEW 0x0040 -#define XFS_IFILESTREAM 0x0080 /* inode is in a filestream directory */ -#define XFS_IMODIFIED 0x0100 /* XFS inode state possibly differs */ - /* to the Linux inode state. */ -#define XFS_ITRUNCATED 0x0200 /* truncated down so flush-on-close */ +#define XFS_IRECLAIM 0x0001 /* we have started reclaiming this inode */ +#define XFS_ISTALE 0x0002 /* inode has been staled */ +#define XFS_IRECLAIMABLE 0x0004 /* inode can be reclaimed */ +#define XFS_INEW 0x0008 /* inode has just been allocated */ +#define XFS_IFILESTREAM 0x0010 /* inode is in a filestream directory */ +#define XFS_ITRUNCATED 0x0020 /* truncated down so flush-on-close */ /* * Flags for inode locking. @@ -477,16 +483,8 @@ ((pip)->i_d.di_mode & S_ISGID)) /* - * Flags for xfs_iget() - */ -#define XFS_IGET_CREATE 0x1 -#define XFS_IGET_BULKSTAT 0x2 - -/* * xfs_iget.c prototypes. */ -void xfs_ihash_init(struct xfs_mount *); -void xfs_ihash_free(struct xfs_mount *); xfs_inode_t *xfs_inode_incore(struct xfs_mount *, xfs_ino_t, struct xfs_trans *); int xfs_iget(struct xfs_mount *, struct xfs_trans *, xfs_ino_t, @@ -501,14 +499,10 @@ uint xfs_ilock_map_shared(xfs_inode_t *); void xfs_iunlock_map_shared(xfs_inode_t *, uint); void xfs_ireclaim(xfs_inode_t *); -int xfs_finish_reclaim(xfs_inode_t *, int, int); -int xfs_finish_reclaim_all(struct xfs_mount *, int); /* * xfs_inode.c prototypes. */ -int xfs_iread(struct xfs_mount *, struct xfs_trans *, xfs_ino_t, - xfs_inode_t **, xfs_daddr_t, uint); int xfs_ialloc(struct xfs_trans *, xfs_inode_t *, mode_t, xfs_nlink_t, xfs_dev_t, struct cred *, xfs_prid_t, int, struct xfs_buf **, boolean_t *, xfs_inode_t **); @@ -522,14 +516,10 @@ xfs_fsize_t, int, int); int xfs_iunlink(struct xfs_trans *, xfs_inode_t *); -struct xfs_inode * xfs_inode_alloc(struct xfs_mount *, xfs_ino_t); -void xfs_idestroy(xfs_inode_t *); -void xfs_iextract(xfs_inode_t *); void xfs_iext_realloc(xfs_inode_t *, int, int); void xfs_ipin(xfs_inode_t *); void xfs_iunpin(xfs_inode_t *); int xfs_iflush(xfs_inode_t *, uint); -void xfs_iflush_all(struct xfs_mount *); void xfs_ichgtime(xfs_inode_t *, int); xfs_fsize_t xfs_file_last_byte(xfs_inode_t *); void xfs_lock_inodes(xfs_inode_t **, int, uint); @@ -538,14 +528,70 @@ void xfs_synchronize_atime(xfs_inode_t *); void xfs_mark_inode_dirty_sync(xfs_inode_t *); +#if defined(XFS_INODE_TRACE) + +#define INODE_TRACE_SIZE 16 /* number of trace entries */ +#define INODE_KTRACE_ENTRY 1 +#define INODE_KTRACE_EXIT 2 +#define INODE_KTRACE_HOLD 3 +#define INODE_KTRACE_REF 4 +#define INODE_KTRACE_RELE 5 + +extern void _xfs_itrace_entry(struct xfs_inode *, const char *, inst_t *); +extern void _xfs_itrace_exit(struct xfs_inode *, const char *, inst_t *); +extern void xfs_itrace_hold(struct xfs_inode *, char *, int, inst_t *); +extern void _xfs_itrace_ref(struct xfs_inode *, char *, int, inst_t *); +extern void xfs_itrace_rele(struct xfs_inode *, char *, int, inst_t *); +#define xfs_itrace_entry(ip) \ + _xfs_itrace_entry(ip, __func__, (inst_t *)__return_address) +#define xfs_itrace_exit(ip) \ + _xfs_itrace_exit(ip, __func__, (inst_t *)__return_address) +#define xfs_itrace_exit_tag(ip, tag) \ + _xfs_itrace_exit(ip, tag, (inst_t *)__return_address) +#define xfs_itrace_ref(ip) \ + _xfs_itrace_ref(ip, __FILE__, __LINE__, (inst_t *)__return_address) + +#else +#define xfs_itrace_entry(a) +#define xfs_itrace_exit(a) +#define xfs_itrace_exit_tag(a, b) +#define xfs_itrace_hold(a, b, c, d) +#define xfs_itrace_ref(a) +#define xfs_itrace_rele(a, b, c, d) +#endif + +#define IHOLD(ip) \ +do { \ + ASSERT(atomic_read(&VFS_I(ip)->i_count) > 0) ; \ + atomic_inc(&(VFS_I(ip)->i_count)); \ + xfs_itrace_hold((ip), __FILE__, __LINE__, (inst_t *)__return_address); \ +} while (0) + +#define IRELE(ip) \ +do { \ + xfs_itrace_rele((ip), __FILE__, __LINE__, (inst_t *)__return_address); \ + iput(VFS_I(ip)); \ +} while (0) + #endif /* __KERNEL__ */ +/* + * Flags for xfs_iget() + */ +#define XFS_IGET_CREATE 0x1 +#define XFS_IGET_BULKSTAT 0x2 + +int xfs_inotobp(struct xfs_mount *, struct xfs_trans *, + xfs_ino_t, struct xfs_dinode **, + struct xfs_buf **, int *, uint); int xfs_itobp(struct xfs_mount *, struct xfs_trans *, struct xfs_inode *, struct xfs_dinode **, - struct xfs_buf **, xfs_daddr_t, uint, uint); + struct xfs_buf **, uint); +int xfs_iread(struct xfs_mount *, struct xfs_trans *, + struct xfs_inode *, xfs_daddr_t, uint); void xfs_dinode_from_disk(struct xfs_icdinode *, - struct xfs_dinode_core *); -void xfs_dinode_to_disk(struct xfs_dinode_core *, + struct xfs_dinode *); +void xfs_dinode_to_disk(struct xfs_dinode *, struct xfs_icdinode *); void xfs_idestroy_fork(struct xfs_inode *, int); void xfs_idata_realloc(struct xfs_inode *, int, int); Index: xfs-cmds/xfsprogs/include/xfs_log.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_log.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_log.h 2008-12-06 20:05:49.000000000 +0100 @@ -134,6 +134,7 @@ #ifdef __KERNEL__ /* Log manager interfaces */ struct xfs_mount; +struct xlog_ticket; xfs_lsn_t xfs_log_done(struct xfs_mount *mp, xfs_log_ticket_t ticket, void **iclog, @@ -177,6 +178,9 @@ void xlog_iodone(struct xfs_buf *); +struct xlog_ticket * xfs_log_ticket_get(struct xlog_ticket *ticket); +void xfs_log_ticket_put(struct xlog_ticket *ticket); + #endif Index: xfs-cmds/xfsprogs/include/xfs_log_priv.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_log_priv.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_log_priv.h 2008-12-06 20:05:49.000000000 +0100 @@ -245,6 +245,7 @@ struct xlog_ticket *t_next; /* :4|8 */ struct xlog_ticket *t_prev; /* :4|8 */ xlog_tid_t t_tid; /* transaction identifier : 4 */ + atomic_t t_ref; /* ticket reference count : 4 */ int t_curr_res; /* current reservation in bytes : 4 */ int t_unit_res; /* unit reservation in bytes : 4 */ char t_ocnt; /* original count : 1 */ @@ -309,6 +310,16 @@ } xlog_rec_ext_header_t; #ifdef __KERNEL__ + +/* + * Quite misnamed, because this union lays out the actual on-disk log buffer. + */ +typedef union xlog_in_core2 { + xlog_rec_header_t hic_header; + xlog_rec_ext_header_t hic_xheader; + char hic_sector[XLOG_HEADER_SIZE]; +} xlog_in_core_2_t; + /* * - A log record header is 512 bytes. There is plenty of room to grow the * xlog_rec_header_t into the reserved space. @@ -338,7 +349,7 @@ * We'll put all the read-only and l_icloglock fields in the first cacheline, * and move everything else out to subsequent cachelines. */ -typedef struct xlog_iclog_fields { +typedef struct xlog_in_core { sv_t ic_force_wait; sv_t ic_write_wait; struct xlog_in_core *ic_next; @@ -361,41 +372,11 @@ /* reference counts need their own cacheline */ atomic_t ic_refcnt ____cacheline_aligned_in_smp; -} xlog_iclog_fields_t; - -typedef union xlog_in_core2 { - xlog_rec_header_t hic_header; - xlog_rec_ext_header_t hic_xheader; - char hic_sector[XLOG_HEADER_SIZE]; -} xlog_in_core_2_t; - -typedef struct xlog_in_core { - xlog_iclog_fields_t hic_fields; - xlog_in_core_2_t *hic_data; + xlog_in_core_2_t *ic_data; +#define ic_header ic_data->hic_header } xlog_in_core_t; /* - * Defines to save our code from this glop. - */ -#define ic_force_wait hic_fields.ic_force_wait -#define ic_write_wait hic_fields.ic_write_wait -#define ic_next hic_fields.ic_next -#define ic_prev hic_fields.ic_prev -#define ic_bp hic_fields.ic_bp -#define ic_log hic_fields.ic_log -#define ic_callback hic_fields.ic_callback -#define ic_callback_lock hic_fields.ic_callback_lock -#define ic_callback_tail hic_fields.ic_callback_tail -#define ic_trace hic_fields.ic_trace -#define ic_size hic_fields.ic_size -#define ic_offset hic_fields.ic_offset -#define ic_refcnt hic_fields.ic_refcnt -#define ic_bwritecnt hic_fields.ic_bwritecnt -#define ic_state hic_fields.ic_state -#define ic_datap hic_fields.ic_datap -#define ic_header hic_data->hic_header - -/* * The reservation head lsn is not made up of a cycle number and block number. * Instead, it uses a cycle number and byte number. Logs don't expect to * overflow 31 bits worth of byte offset, so using a byte number will mean @@ -404,6 +385,7 @@ typedef struct log { /* The following fields don't need locking */ struct xfs_mount *l_mp; /* mount point */ + struct xfs_ail *l_ailp; /* AIL log is working with */ struct xfs_buf *l_xbuf; /* extra buffer for log * wrapping */ struct xfs_buftarg *l_targ; /* buftarg of log */ Index: xfs-cmds/xfsprogs/include/xfs_mount.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_mount.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_mount.h 2008-12-06 20:05:49.000000000 +0100 @@ -18,7 +18,6 @@ #ifndef __XFS_MOUNT_H__ #define __XFS_MOUNT_H__ - typedef struct xfs_trans_reservations { uint tr_write; /* extent alloc trans */ uint tr_itruncate; /* truncate trans */ @@ -52,6 +51,8 @@ #else /* __KERNEL__ */ +#include "xfs_sync.h" + struct cred; struct log; struct xfs_mount_args; @@ -62,6 +63,7 @@ struct xfs_swapext; struct xfs_mru_cache; struct xfs_nameops; +struct xfs_ail; /* * Prototypes and functions for the Data Migration subsystem. @@ -115,7 +117,7 @@ typedef int (*xfs_qminit_t)(struct xfs_mount *, uint *, uint *); typedef int (*xfs_qmmount_t)(struct xfs_mount *, uint, uint); -typedef int (*xfs_qmunmount_t)(struct xfs_mount *); +typedef void (*xfs_qmunmount_t)(struct xfs_mount *); typedef void (*xfs_qmdone_t)(struct xfs_mount *); typedef void (*xfs_dqrele_t)(struct xfs_dquot *); typedef int (*xfs_dqattach_t)(struct xfs_inode *, uint); @@ -132,7 +134,7 @@ struct xfs_dquot **, struct xfs_dquot *); typedef int (*xfs_dqvopchownresv_t)(struct xfs_trans *, struct xfs_inode *, struct xfs_dquot *, struct xfs_dquot *, uint); -typedef void (*xfs_dqstatvfs_t)(struct xfs_inode *, bhv_statvfs_t *); +typedef void (*xfs_dqstatvfs_t)(struct xfs_inode *, struct kstatfs *); typedef int (*xfs_dqsync_t)(struct xfs_mount *, int flags); typedef int (*xfs_quotactl_t)(struct xfs_mount *, int, int, xfs_caddr_t); @@ -223,18 +225,10 @@ #define xfs_icsb_sync_counters_locked(mp, flags) do { } while (0) #endif -typedef struct xfs_ail { - struct list_head xa_ail; - uint xa_gen; - struct task_struct *xa_task; - xfs_lsn_t xa_target; -} xfs_ail_t; - typedef struct xfs_mount { struct super_block *m_super; xfs_tid_t m_tid; /* next unused tid for fs */ - spinlock_t m_ail_lock; /* fs AIL mutex */ - xfs_ail_t m_ail; /* fs active log item list */ + struct xfs_ail *m_ail; /* fs active log item list */ xfs_sb_t m_sb; /* copy of fs superblock */ spinlock_t m_sb_lock; /* sb counter lock */ struct xfs_buf *m_sb_bp; /* buffer for superblock */ @@ -247,10 +241,6 @@ xfs_agnumber_t m_agirotor; /* last ag dir inode alloced */ spinlock_t m_agirotor_lock;/* .. and lock protecting it */ xfs_agnumber_t m_maxagi; /* highest inode alloc group */ - struct xfs_inode *m_inodes; /* active inode list */ - struct list_head m_del_inodes; /* inodes to reclaim */ - mutex_t m_ilock; /* inode list mutex */ - uint m_ireclaims; /* count of calls to reclaim*/ uint m_readio_log; /* min read size log bytes */ uint m_readio_blocks; /* min read size blocks */ uint m_writeio_log; /* min write size log bytes */ @@ -311,9 +301,6 @@ int m_sinoalign; /* stripe unit inode alignment */ int m_attr_magicpct;/* 37% of the blocksize */ int m_dir_magicpct; /* 37% of the dir blocksize */ - __uint8_t m_mk_sharedro; /* mark shared ro on unmount */ - __uint8_t m_inode_quiesce;/* call quiesce on new inodes. - field governed by m_ilock */ __uint8_t m_sectbb_log; /* sectlog - BBSHIFT */ const struct xfs_nameops *m_dirnameops; /* vector of dir name ops */ int m_dirblksize; /* directory block sz--bytes */ @@ -340,7 +327,6 @@ 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; - struct vfsmount *m_vfsmount; } xfs_mount_t; /* @@ -362,7 +348,6 @@ #define XFS_MOUNT_ATTR2 (1ULL << 8) /* allow use of attr2 format */ #define XFS_MOUNT_GRPID (1ULL << 9) /* group-ID assigned from directory */ #define XFS_MOUNT_NORECOVERY (1ULL << 10) /* no recovery - dirty fs */ -#define XFS_MOUNT_SHARED (1ULL << 11) /* shared mount */ #define XFS_MOUNT_DFLT_IOSIZE (1ULL << 12) /* set default i/o size */ #define XFS_MOUNT_OSYNCISOSYNC (1ULL << 13) /* o_sync is REALLY o_sync */ /* osyncisdsync is now default*/ @@ -439,6 +424,16 @@ #define xfs_force_shutdown(m,f) \ xfs_do_force_shutdown(m, f, __FILE__, __LINE__) +#define SHUTDOWN_META_IO_ERROR 0x0001 /* write attempt to metadata failed */ +#define SHUTDOWN_LOG_IO_ERROR 0x0002 /* write attempt to the log failed */ +#define SHUTDOWN_FORCE_UMOUNT 0x0004 /* shutdown from a forced unmount */ +#define SHUTDOWN_CORRUPT_INCORE 0x0008 /* corrupt in-memory data structures */ +#define SHUTDOWN_REMOTE_REQ 0x0010 /* shutdown came from remote cell */ +#define SHUTDOWN_DEVICE_REQ 0x0020 /* failed all paths to the device */ + +#define xfs_test_for_freeze(mp) ((mp)->m_super->s_frozen) +#define xfs_wait_for_freeze(mp,l) vfs_check_frozen((mp)->m_super, (l)) + /* * Flags for xfs_mountfs */ @@ -514,7 +509,6 @@ extern void xfs_unmountfs(xfs_mount_t *); extern int xfs_unmountfs_writesb(xfs_mount_t *); -extern int xfs_unmount_flush(xfs_mount_t *, int); extern int xfs_mod_incore_sb(xfs_mount_t *, xfs_sb_field_t, int64_t, int); extern int xfs_mod_incore_sb_unlocked(xfs_mount_t *, xfs_sb_field_t, int64_t, int); @@ -524,13 +518,11 @@ extern int xfs_readsb(xfs_mount_t *, int); extern void xfs_freesb(xfs_mount_t *); extern int xfs_fs_writable(xfs_mount_t *); -extern int xfs_syncsub(xfs_mount_t *, int, int *); -extern int xfs_sync_inodes(xfs_mount_t *, int, int *); extern int xfs_sb_validate_fsb_count(struct xfs_sb *, __uint64_t); -extern int xfs_dmops_get(struct xfs_mount *, struct xfs_mount_args *); +extern int xfs_dmops_get(struct xfs_mount *); extern void xfs_dmops_put(struct xfs_mount *); -extern int xfs_qmops_get(struct xfs_mount *, struct xfs_mount_args *); +extern int xfs_qmops_get(struct xfs_mount *); extern void xfs_qmops_put(struct xfs_mount *); extern struct xfs_dmops xfs_dmcore_xfs; Index: xfs-cmds/xfsprogs/include/xfs_quota.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_quota.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_quota.h 2008-12-06 20:05:49.000000000 +0100 @@ -84,11 +84,9 @@ #define XFS_DQ_USER 0x0001 /* a user quota */ #define XFS_DQ_PROJ 0x0002 /* project quota */ #define XFS_DQ_GROUP 0x0004 /* a group quota */ -#define XFS_DQ_FLOCKED 0x0008 /* flush lock taken */ -#define XFS_DQ_DIRTY 0x0010 /* dquot is dirty */ -#define XFS_DQ_WANT 0x0020 /* for lookup/reclaim race */ -#define XFS_DQ_INACTIVE 0x0040 /* dq off mplist & hashlist */ -#define XFS_DQ_MARKER 0x0080 /* sentinel */ +#define XFS_DQ_DIRTY 0x0008 /* dquot is dirty */ +#define XFS_DQ_WANT 0x0010 /* for lookup/reclaim race */ +#define XFS_DQ_INACTIVE 0x0020 /* dq off mplist & hashlist */ #define XFS_DQ_ALLTYPES (XFS_DQ_USER|XFS_DQ_PROJ|XFS_DQ_GROUP) Index: xfs-cmds/xfsprogs/include/xfs_sb.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_sb.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_sb.h 2008-12-06 20:05:49.000000000 +0100 @@ -297,30 +297,34 @@ #define XFS_SB_VERSION_NUM(sbp) ((sbp)->sb_versionnum & XFS_SB_VERSION_NUMBITS) -#ifdef __KERNEL__ static inline int xfs_sb_good_version(xfs_sb_t *sbp) { - return (((sbp->sb_versionnum >= XFS_SB_VERSION_1) && \ - (sbp->sb_versionnum <= XFS_SB_VERSION_3)) || \ - ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - !((sbp->sb_versionnum & ~XFS_SB_VERSION_OKREALBITS) || \ - ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) && \ - (sbp->sb_features2 & ~XFS_SB_VERSION2_OKREALBITS))) && \ - (sbp->sb_shared_vn <= XFS_SB_MAX_SHARED_VN))); -} + /* We always support version 1-3 */ + if (sbp->sb_versionnum >= XFS_SB_VERSION_1 && + sbp->sb_versionnum <= XFS_SB_VERSION_3) + return 1; + + /* We support version 4 if all feature bits are supported */ + if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) { + if ((sbp->sb_versionnum & ~XFS_SB_VERSION_OKREALBITS) || + ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) && + (sbp->sb_features2 & ~XFS_SB_VERSION2_OKREALBITS))) + return 0; + +#ifdef __KERNEL__ + if (sbp->sb_shared_vn > XFS_SB_MAX_SHARED_VN) + return 0; #else -static inline int xfs_sb_good_version(xfs_sb_t *sbp) -{ - return (((sbp->sb_versionnum >= XFS_SB_VERSION_1) && \ - (sbp->sb_versionnum <= XFS_SB_VERSION_3)) || \ - ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - !((sbp->sb_versionnum & ~XFS_SB_VERSION_OKREALBITS) || \ - ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) && \ - (sbp->sb_features2 & ~XFS_SB_VERSION2_OKREALBITS))) && \ - (!(sbp->sb_versionnum & XFS_SB_VERSION_SHAREDBIT) || \ - (sbp->sb_shared_vn <= XFS_SB_MAX_SHARED_VN)))); + if ((sbp->sb_versionnum & XFS_SB_VERSION_SHAREDBIT) && + sbp->sb_shared_vn > XFS_SB_MAX_SHARED_VN) + return 0; +#endif + + return 1; + } + + return 0; } -#endif /* __KERNEL__ */ /* * Detect a mismatched features2 field. Older kernels read/wrote @@ -333,123 +337,127 @@ static inline unsigned xfs_sb_version_tonew(unsigned v) { - return ((((v) == XFS_SB_VERSION_1) ? \ - 0 : \ - (((v) == XFS_SB_VERSION_2) ? \ - XFS_SB_VERSION_ATTRBIT : \ - (XFS_SB_VERSION_ATTRBIT | XFS_SB_VERSION_NLINKBIT))) | \ - XFS_SB_VERSION_4); + if (v == XFS_SB_VERSION_1) + return XFS_SB_VERSION_4; + + if (v == XFS_SB_VERSION_2) + return XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT; + + return XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT | + XFS_SB_VERSION_NLINKBIT; } static inline unsigned xfs_sb_version_toold(unsigned v) { - return (((v) & (XFS_SB_VERSION_QUOTABIT | XFS_SB_VERSION_ALIGNBIT)) ? \ - 0 : \ - (((v) & XFS_SB_VERSION_NLINKBIT) ? \ - XFS_SB_VERSION_3 : \ - (((v) & XFS_SB_VERSION_ATTRBIT) ? \ - XFS_SB_VERSION_2 : \ - XFS_SB_VERSION_1))); + if (v & (XFS_SB_VERSION_QUOTABIT | XFS_SB_VERSION_ALIGNBIT)) + return 0; + if (v & XFS_SB_VERSION_NLINKBIT) + return XFS_SB_VERSION_3; + if (v & XFS_SB_VERSION_ATTRBIT) + return XFS_SB_VERSION_2; + return XFS_SB_VERSION_1; } static inline int xfs_sb_version_hasattr(xfs_sb_t *sbp) { - return ((sbp)->sb_versionnum == XFS_SB_VERSION_2) || \ - ((sbp)->sb_versionnum == XFS_SB_VERSION_3) || \ - ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_ATTRBIT)); + return sbp->sb_versionnum == XFS_SB_VERSION_2 || + sbp->sb_versionnum == XFS_SB_VERSION_3 || + (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_ATTRBIT)); } static inline void xfs_sb_version_addattr(xfs_sb_t *sbp) { - (sbp)->sb_versionnum = (((sbp)->sb_versionnum == XFS_SB_VERSION_1) ? \ - XFS_SB_VERSION_2 : \ - ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) ? \ - ((sbp)->sb_versionnum | XFS_SB_VERSION_ATTRBIT) : \ - (XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT))); + if (sbp->sb_versionnum == XFS_SB_VERSION_1) + sbp->sb_versionnum = XFS_SB_VERSION_2; + else if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) + sbp->sb_versionnum |= XFS_SB_VERSION_ATTRBIT; + else + sbp->sb_versionnum = XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT; } static inline int xfs_sb_version_hasnlink(xfs_sb_t *sbp) { - return ((sbp)->sb_versionnum == XFS_SB_VERSION_3) || \ - ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_NLINKBIT)); + return sbp->sb_versionnum == XFS_SB_VERSION_3 || + (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_NLINKBIT)); } static inline void xfs_sb_version_addnlink(xfs_sb_t *sbp) { - (sbp)->sb_versionnum = ((sbp)->sb_versionnum <= XFS_SB_VERSION_2 ? \ - XFS_SB_VERSION_3 : \ - ((sbp)->sb_versionnum | XFS_SB_VERSION_NLINKBIT)); + if (sbp->sb_versionnum <= XFS_SB_VERSION_2) + sbp->sb_versionnum = XFS_SB_VERSION_3; + else + sbp->sb_versionnum |= XFS_SB_VERSION_NLINKBIT; } static inline int xfs_sb_version_hasquota(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_QUOTABIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_QUOTABIT); } static inline void xfs_sb_version_addquota(xfs_sb_t *sbp) { - (sbp)->sb_versionnum = \ - (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 ? \ - ((sbp)->sb_versionnum | XFS_SB_VERSION_QUOTABIT) : \ - (xfs_sb_version_tonew((sbp)->sb_versionnum) | \ - XFS_SB_VERSION_QUOTABIT)); + if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) + sbp->sb_versionnum |= XFS_SB_VERSION_QUOTABIT; + else + sbp->sb_versionnum = xfs_sb_version_tonew(sbp->sb_versionnum) | + XFS_SB_VERSION_QUOTABIT; } static inline int xfs_sb_version_hasalign(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_ALIGNBIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_ALIGNBIT); } static inline int xfs_sb_version_hasdalign(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_DALIGNBIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_DALIGNBIT); } static inline int xfs_sb_version_hasshared(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_SHAREDBIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_SHAREDBIT); } static inline int xfs_sb_version_hasdirv2(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_DIRV2BIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_DIRV2BIT); } static inline int xfs_sb_version_haslogv2(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_LOGV2BIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_LOGV2BIT); } static inline int xfs_sb_version_hasextflgbit(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_EXTFLGBIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_EXTFLGBIT); } static inline int xfs_sb_version_hassector(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_SECTORBIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_SECTORBIT); } static inline int xfs_sb_version_hasasciici(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && (sbp->sb_versionnum & XFS_SB_VERSION_BORGBIT); } static inline int xfs_sb_version_hasmorebits(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT); } /* @@ -464,22 +472,20 @@ static inline int xfs_sb_version_haslazysbcount(xfs_sb_t *sbp) { - return (xfs_sb_version_hasmorebits(sbp) && \ - ((sbp)->sb_features2 & XFS_SB_VERSION2_LAZYSBCOUNTBIT)); + return xfs_sb_version_hasmorebits(sbp) && + (sbp->sb_features2 & XFS_SB_VERSION2_LAZYSBCOUNTBIT); } static inline int xfs_sb_version_hasattr2(xfs_sb_t *sbp) { - return (xfs_sb_version_hasmorebits(sbp)) && \ - ((sbp)->sb_features2 & XFS_SB_VERSION2_ATTR2BIT); + return xfs_sb_version_hasmorebits(sbp) && + (sbp->sb_features2 & XFS_SB_VERSION2_ATTR2BIT); } static inline void xfs_sb_version_addattr2(xfs_sb_t *sbp) { - ((sbp)->sb_versionnum = \ - ((sbp)->sb_versionnum | XFS_SB_VERSION_MOREBITSBIT), \ - ((sbp)->sb_features2 = \ - ((sbp)->sb_features2 | XFS_SB_VERSION2_ATTR2BIT))); + sbp->sb_versionnum |= XFS_SB_VERSION_MOREBITSBIT; + sbp->sb_features2 |= XFS_SB_VERSION2_ATTR2BIT; } static inline void xfs_sb_version_removeattr2(xfs_sb_t *sbp) Index: xfs-cmds/xfsprogs/include/xfs_trans.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_trans.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_trans.h 2008-12-06 20:05:49.000000000 +0100 @@ -768,6 +768,7 @@ xfs_lsn_t li_lsn; /* last on-disk lsn */ struct xfs_log_item_desc *li_desc; /* ptr to current desc*/ struct xfs_mount *li_mountp; /* ptr to fs mount */ + struct xfs_ail *li_ailp; /* ptr to AIL */ uint li_type; /* item type */ uint li_flags; /* misc flags */ struct xfs_log_item *li_bio_list; /* buffer item list */ @@ -970,10 +971,6 @@ void xfs_trans_cancel(xfs_trans_t *, int); int xfs_trans_ail_init(struct xfs_mount *); void xfs_trans_ail_destroy(struct xfs_mount *); -void xfs_trans_push_ail(struct xfs_mount *, xfs_lsn_t); -xfs_lsn_t xfs_trans_tail_ail(struct xfs_mount *); -void xfs_trans_unlocked_item(struct xfs_mount *, - xfs_log_item_t *); xfs_log_busy_slot_t *xfs_trans_add_busy(xfs_trans_t *tp, xfs_agnumber_t ag, xfs_extlen_t idx); Index: xfs-cmds/xfsprogs/db/bmap.c =================================================================== --- xfs-cmds.orig/xfsprogs/db/bmap.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/db/bmap.c 2008-12-06 20:05:49.000000000 +0100 @@ -171,9 +171,9 @@ push_cur(); set_cur_inode(iocur_top->ino); dip = iocur_top->data; - if (be32_to_cpu(dip->di_core.di_nextents)) + if (dip->di_nextents) dfork = 1; - if (be16_to_cpu(dip->di_core.di_anextents)) + if (dip->di_anextents) afork = 1; pop_cur(); } Index: xfs-cmds/xfsprogs/db/check.c =================================================================== --- xfs-cmds.orig/xfsprogs/db/check.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/db/check.c 2008-12-06 20:05:49.000000000 +0100 @@ -2502,23 +2502,23 @@ inodata_t *id, xfs_ino_t *parent) { - xfs_fsize_t size = be64_to_cpu(dip->di_core.di_size); + xfs_fsize_t size = be64_to_cpu(dip->di_size); if (size <= XFS_DFORK_DSIZE(dip, mp) && - dip->di_core.di_format == XFS_DINODE_FMT_LOCAL) + dip->di_format == XFS_DINODE_FMT_LOCAL) *parent = process_shortform_dir_v1(dip, dot, dotdot, id); else if (size == XFS_LBSIZE(mp) && - (dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS || - dip->di_core.di_format == XFS_DINODE_FMT_BTREE)) + (dip->di_format == XFS_DINODE_FMT_EXTENTS || + dip->di_format == XFS_DINODE_FMT_BTREE)) *parent = process_leaf_dir_v1(blkmap, dot, dotdot, id); else if (size >= XFS_LBSIZE(mp) && - (dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS || - dip->di_core.di_format == XFS_DINODE_FMT_BTREE)) + (dip->di_format == XFS_DINODE_FMT_EXTENTS || + dip->di_format == XFS_DINODE_FMT_BTREE)) *parent = process_node_dir_v1(blkmap, dot, dotdot, id); else { dbprintf("bad size (%lld) or format (%d) for directory inode " "%lld\n", - size, dip->di_core.di_format, id->ino); + size, dip->di_format, id->ino); error++; return 1; } @@ -2535,25 +2535,25 @@ xfs_ino_t *parent) { xfs_fileoff_t last = 0; - xfs_fsize_t size = be64_to_cpu(dip->di_core.di_size); + xfs_fsize_t size = be64_to_cpu(dip->di_size); if (blkmap) last = blkmap_last_off(blkmap); if (size <= XFS_DFORK_DSIZE(dip, mp) && - dip->di_core.di_format == XFS_DINODE_FMT_LOCAL) + dip->di_format == XFS_DINODE_FMT_LOCAL) *parent = process_sf_dir_v2(dip, dot, dotdot, id); else if (last == mp->m_dirblkfsbs && - (dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS || - dip->di_core.di_format == XFS_DINODE_FMT_BTREE)) + (dip->di_format == XFS_DINODE_FMT_EXTENTS || + dip->di_format == XFS_DINODE_FMT_BTREE)) *parent = process_block_dir_v2(blkmap, dot, dotdot, id); else if (last >= mp->m_dirleafblk + mp->m_dirblkfsbs && - (dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS || - dip->di_core.di_format == XFS_DINODE_FMT_BTREE)) + (dip->di_format == XFS_DINODE_FMT_EXTENTS || + dip->di_format == XFS_DINODE_FMT_BTREE)) *parent = process_leaf_node_dir_v2(blkmap, dot, dotdot, id, size); else { dbprintf("bad size (%lld) or format (%d) for directory inode " "%lld\n", - size, dip->di_core.di_format, id->ino); + size, dip->di_format, id->ino); error++; return 1; } @@ -2639,7 +2639,7 @@ "dev", "local", "extents", "btree", "uuid" }; - libxfs_dinode_from_disk(&idic, &dip->di_core); + libxfs_dinode_from_disk(&idic, dip); ino = XFS_AGINO_TO_INO(mp, be32_to_cpu(agf->agf_seqno), agino); if (!isfree) { @@ -2669,7 +2669,7 @@ idic.di_nblocks, ino); error++; } - if (idic.di_version == XFS_DINODE_VERSION_1) + if (idic.di_version == 1) nlink = idic.di_onlink; else nlink = idic.di_nlink; @@ -2773,7 +2773,7 @@ type = DBM_UNKNOWN; break; } - if (idic.di_version == XFS_DINODE_VERSION_1) + if (idic.di_version == 1) setlink_inode(id, idic.di_onlink, type == DBM_DIR, security); else { sbversion |= XFS_SB_VERSION_NLINKBIT; @@ -2901,12 +2901,12 @@ xfs_fsblock_t bno; bno = XFS_INO_TO_FSB(mp, id->ino); - if (whichfork == XFS_DATA_FORK && be64_to_cpu(dip->di_core.di_size) > + if (whichfork == XFS_DATA_FORK && be64_to_cpu(dip->di_size) > XFS_DFORK_DSIZE(dip, mp)) { if (!sflag || id->ilist || CHECK_BLIST(bno)) dbprintf("local inode %lld data is too large (size " "%lld)\n", - id->ino, be64_to_cpu(dip->di_core.di_size)); + id->ino, be64_to_cpu(dip->di_size)); error++; } else if (whichfork == XFS_ATTR_FORK) { @@ -3638,7 +3638,7 @@ offset = XFS_DIR2_DATA_FIRST_OFFSET; for (i = sf->hdr.count - 1, i8 = 0; i >= 0; i--) { if ((__psint_t)sfe + xfs_dir2_sf_entsize_byentry(sf, sfe) - - (__psint_t)sf > be64_to_cpu(dip->di_core.di_size)) { + (__psint_t)sf > be64_to_cpu(dip->di_size)) { if (!sflag) dbprintf("dir %llu bad size in entry at %d\n", id->ino, @@ -3680,10 +3680,10 @@ sfe = xfs_dir2_sf_nextentry(sf, sfe); } if (i < 0 && (__psint_t)sfe - (__psint_t)sf != - be64_to_cpu(dip->di_core.di_size)) { + be64_to_cpu(dip->di_size)) { if (!sflag) dbprintf("dir %llu size is %lld, should be %u\n", - id->ino, be64_to_cpu(dip->di_core.di_size), + id->ino, be64_to_cpu(dip->di_size), (uint)((char *)sfe - (char *)sf)); error++; } @@ -3760,9 +3760,9 @@ sfe->namelen, sfe->namelen, sfe->name, lino); sfe = xfs_dir_sf_nextentry(sfe); } - if ((__psint_t)sfe - (__psint_t)sf != be64_to_cpu(dip->di_core.di_size)) + if ((__psint_t)sfe - (__psint_t)sf != be64_to_cpu(dip->di_size)) dbprintf("dir %llu size is %lld, should be %d\n", - id->ino, be64_to_cpu(dip->di_core.di_size), + id->ino, be64_to_cpu(dip->di_size), (int)((char *)sfe - (char *)sf)); lino = XFS_GET_DIR_INO8(sf->hdr.parent); cid = find_inode(lino, 1); Index: xfs-cmds/xfsprogs/db/dir2sf.c =================================================================== --- xfs-cmds.orig/xfsprogs/db/dir2sf.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/db/dir2sf.c 2008-12-06 20:05:49.000000000 +0100 @@ -73,10 +73,10 @@ void *obj, int startoff) { - xfs_dir2_sf_t *sf; + xfs_dinode_t *dip = obj; + xfs_dir2_sf_t *sf = (xfs_dir2_sf_t *)XFS_DFORK_DPTR(dip); ASSERT(bitoffs(startoff) == 0); - sf = &((xfs_dinode_t *)obj)->di_u.di_dir2sf; return sf->hdr.i8count == 0; } @@ -86,10 +86,10 @@ void *obj, int startoff) { - xfs_dir2_sf_t *sf; + xfs_dinode_t *dip = obj; + xfs_dir2_sf_t *sf = (xfs_dir2_sf_t *)XFS_DFORK_DPTR(dip); ASSERT(bitoffs(startoff) == 0); - sf = &((xfs_dinode_t *)obj)->di_u.di_dir2sf; return sf->hdr.i8count != 0; } @@ -100,11 +100,11 @@ int startoff, int idx) { - xfs_dir2_sf_t *sf; + xfs_dinode_t *dip = obj; + xfs_dir2_sf_t *sf = (xfs_dir2_sf_t *)XFS_DFORK_DPTR(dip); ASSERT(bitoffs(startoff) == 0); ASSERT(idx == 0); - sf = &((xfs_dinode_t *)obj)->di_u.di_dir2sf; return bitize(sf->hdr.i8count ? (uint)sizeof(xfs_dir2_ino8_t) : (uint)sizeof(xfs_dir2_ino4_t)); Index: xfs-cmds/xfsprogs/db/field.c =================================================================== --- xfs-cmds.orig/xfsprogs/db/field.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/db/field.c 2008-12-06 20:05:49.000000000 +0100 @@ -150,8 +150,6 @@ FTARG_DONULL, fa_dfsbno, NULL }, { FLDT_DINODE_A, "dinode_a", NULL, (char *)inode_a_flds, inode_a_size, FTARG_SIZE|FTARG_OKEMPTY, NULL, inode_a_flds }, - { FLDT_DINODE_CORE, "dinode_core", NULL, (char *)inode_core_flds, - SI(bitsz(xfs_dinode_core_t)), 0, NULL, inode_core_flds }, { FLDT_DINODE_FMT, "dinode_fmt", fp_dinode_fmt, NULL, SI(bitsz(__int8_t)), 0, NULL, NULL }, { FLDT_DINODE_U, "dinode_u", NULL, (char *)inode_u_flds, inode_u_size, Index: xfs-cmds/xfsprogs/db/field.h =================================================================== --- xfs-cmds.orig/xfsprogs/db/field.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/db/field.h 2008-12-06 20:05:49.000000000 +0100 @@ -72,7 +72,6 @@ FLDT_DFILOFFD, FLDT_DFSBNO, FLDT_DINODE_A, - FLDT_DINODE_CORE, FLDT_DINODE_FMT, FLDT_DINODE_U, FLDT_DIR, Index: xfs-cmds/xfsprogs/db/frag.c =================================================================== --- xfs-cmds.orig/xfsprogs/db/frag.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/db/frag.c 2008-12-06 20:05:49.000000000 +0100 @@ -308,20 +308,18 @@ xfs_dinode_t *dip) { __uint64_t actual; - xfs_dinode_core_t *dic; __uint64_t ideal; xfs_ino_t ino; int skipa; int skipd; - dic = &dip->di_core; ino = XFS_AGINO_TO_INO(mp, be32_to_cpu(agf->agf_seqno), agino); - switch (be16_to_cpu(dic->di_mode) & S_IFMT) { + switch (be16_to_cpu(dip->di_mode) & S_IFMT) { case S_IFDIR: skipd = !dflag; break; case S_IFREG: - if (!rflag && (be16_to_cpu(dic->di_flags) & XFS_DIFLAG_REALTIME)) + if (!rflag && (be16_to_cpu(dip->di_flags) & XFS_DIFLAG_REALTIME)) skipd = 1; else if (!Rflag && (ino == mp->m_sb.sb_rbmino || Index: xfs-cmds/xfsprogs/db/inode.c =================================================================== --- xfs-cmds.orig/xfsprogs/db/inode.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/db/inode.c 2008-12-06 20:05:49.000000000 +0100 @@ -40,6 +40,7 @@ static int inode_core_projid_count(void *obj, int startoff); static int inode_core_nlinkv1_count(void *obj, int startoff); static int inode_f(int argc, char **argv); +static int inode_u_offset(void *obj, int startoff, int idx); static int inode_u_bmbt_count(void *obj, int startoff); static int inode_u_bmx_count(void *obj, int startoff); static int inode_u_c_count(void *obj, int startoff); @@ -60,91 +61,85 @@ #define OFF(f) bitize(offsetof(xfs_dinode_t, di_ ## f)) const field_t inode_flds[] = { - { "core", FLDT_DINODE_CORE, OI(OFF(core)), C1, 0, TYP_NONE }, - { "next_unlinked", FLDT_AGINO, OI(OFF(next_unlinked)), C1, 0, - TYP_INODE }, - { "u", FLDT_DINODE_U, OI(OFF(u)), C1, 0, TYP_NONE }, - { "a", FLDT_DINODE_A, inode_a_offset, inode_a_count, - FLD_COUNT|FLD_OFFSET, TYP_NONE }, - { NULL } -}; - -#define COFF(f) bitize(offsetof(xfs_dinode_core_t, di_ ## f)) -const field_t inode_core_flds[] = { - { "magic", FLDT_UINT16X, OI(COFF(magic)), C1, 0, TYP_NONE }, - { "mode", FLDT_UINT16O, OI(COFF(mode)), C1, 0, TYP_NONE }, - { "version", FLDT_INT8D, OI(COFF(version)), C1, 0, TYP_NONE }, - { "format", FLDT_DINODE_FMT, OI(COFF(format)), C1, 0, TYP_NONE }, - { "nlinkv1", FLDT_UINT16D, OI(COFF(onlink)), inode_core_nlinkv1_count, + { "magic", FLDT_UINT16X, OI(OFF(magic)), C1, 0, TYP_NONE }, + { "mode", FLDT_UINT16O, OI(OFF(mode)), C1, 0, TYP_NONE }, + { "version", FLDT_INT8D, OI(OFF(version)), C1, 0, TYP_NONE }, + { "format", FLDT_DINODE_FMT, OI(OFF(format)), C1, 0, TYP_NONE }, + { "nlinkv1", FLDT_UINT16D, OI(OFF(onlink)), inode_core_nlinkv1_count, FLD_COUNT, TYP_NONE }, - { "nlinkv2", FLDT_UINT32D, OI(COFF(nlink)), inode_core_nlinkv2_count, + { "nlinkv2", FLDT_UINT32D, OI(OFF(nlink)), inode_core_nlinkv2_count, FLD_COUNT, TYP_NONE }, - { "onlink", FLDT_UINT16D, OI(COFF(onlink)), inode_core_onlink_count, + { "onlink", FLDT_UINT16D, OI(OFF(onlink)), inode_core_onlink_count, FLD_COUNT, TYP_NONE }, - { "projid", FLDT_UINT16D, OI(COFF(projid)), inode_core_projid_count, + { "projid", FLDT_UINT16D, OI(OFF(projid)), inode_core_projid_count, FLD_COUNT, TYP_NONE }, - { "uid", FLDT_UINT32D, OI(COFF(uid)), C1, 0, TYP_NONE }, - { "gid", FLDT_UINT32D, OI(COFF(gid)), C1, 0, TYP_NONE }, - { "flushiter", FLDT_UINT16D, OI(COFF(flushiter)), C1, 0, TYP_NONE }, - { "atime", FLDT_TIMESTAMP, OI(COFF(atime)), C1, 0, TYP_NONE }, - { "mtime", FLDT_TIMESTAMP, OI(COFF(mtime)), C1, 0, TYP_NONE }, - { "ctime", FLDT_TIMESTAMP, OI(COFF(ctime)), C1, 0, TYP_NONE }, - { "size", FLDT_FSIZE, OI(COFF(size)), C1, 0, TYP_NONE }, - { "nblocks", FLDT_DRFSBNO, OI(COFF(nblocks)), C1, 0, TYP_NONE }, - { "extsize", FLDT_EXTLEN, OI(COFF(extsize)), C1, 0, TYP_NONE }, - { "nextents", FLDT_EXTNUM, OI(COFF(nextents)), C1, 0, TYP_NONE }, - { "naextents", FLDT_AEXTNUM, OI(COFF(anextents)), C1, 0, TYP_NONE }, - { "forkoff", FLDT_UINT8D, OI(COFF(forkoff)), C1, 0, TYP_NONE }, - { "aformat", FLDT_DINODE_FMT, OI(COFF(aformat)), C1, 0, TYP_NONE }, - { "dmevmask", FLDT_UINT32X, OI(COFF(dmevmask)), C1, 0, TYP_NONE }, - { "dmstate", FLDT_UINT16D, OI(COFF(dmstate)), C1, 0, TYP_NONE }, - { "flags", FLDT_UINT16X, OI(COFF(flags)), C1, FLD_SKIPALL, TYP_NONE }, + { "uid", FLDT_UINT32D, OI(OFF(uid)), C1, 0, TYP_NONE }, + { "gid", FLDT_UINT32D, OI(OFF(gid)), C1, 0, TYP_NONE }, + { "flushiter", FLDT_UINT16D, OI(OFF(flushiter)), C1, 0, TYP_NONE }, + { "atime", FLDT_TIMESTAMP, OI(OFF(atime)), C1, 0, TYP_NONE }, + { "mtime", FLDT_TIMESTAMP, OI(OFF(mtime)), C1, 0, TYP_NONE }, + { "ctime", FLDT_TIMESTAMP, OI(OFF(ctime)), C1, 0, TYP_NONE }, + { "size", FLDT_FSIZE, OI(OFF(size)), C1, 0, TYP_NONE }, + { "nblocks", FLDT_DRFSBNO, OI(OFF(nblocks)), C1, 0, TYP_NONE }, + { "extsize", FLDT_EXTLEN, OI(OFF(extsize)), C1, 0, TYP_NONE }, + { "nextents", FLDT_EXTNUM, OI(OFF(nextents)), C1, 0, TYP_NONE }, + { "naextents", FLDT_AEXTNUM, OI(OFF(anextents)), C1, 0, TYP_NONE }, + { "forkoff", FLDT_UINT8D, OI(OFF(forkoff)), C1, 0, TYP_NONE }, + { "aformat", FLDT_DINODE_FMT, OI(OFF(aformat)), C1, 0, TYP_NONE }, + { "dmevmask", FLDT_UINT32X, OI(OFF(dmevmask)), C1, 0, TYP_NONE }, + { "dmstate", FLDT_UINT16D, OI(OFF(dmstate)), C1, 0, TYP_NONE }, + { "flags", FLDT_UINT16X, OI(OFF(flags)), C1, FLD_SKIPALL, TYP_NONE }, { "newrtbm", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NEWRTBM_BIT - 1), C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NEWRTBM_BIT - 1), C1, 0, TYP_NONE }, { "prealloc", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_PREALLOC_BIT - 1), C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_PREALLOC_BIT - 1), C1, 0, TYP_NONE }, { "realtime", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_REALTIME_BIT - 1), C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_REALTIME_BIT - 1), C1, 0, TYP_NONE }, { "immutable", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_IMMUTABLE_BIT-1), C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_IMMUTABLE_BIT-1), C1, 0, TYP_NONE }, { "append", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_APPEND_BIT - 1), C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_APPEND_BIT - 1), C1, 0, TYP_NONE }, { "sync", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_SYNC_BIT - 1), C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_SYNC_BIT - 1), C1, 0, TYP_NONE }, { "noatime", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NOATIME_BIT - 1), C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NOATIME_BIT - 1), C1, 0, TYP_NONE }, { "nodump", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NODUMP_BIT - 1), C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NODUMP_BIT - 1), C1, 0, TYP_NONE }, { "rtinherit", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_RTINHERIT_BIT-1), C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_RTINHERIT_BIT-1), C1, 0, TYP_NONE }, { "projinherit", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_PROJINHERIT_BIT-1),C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_PROJINHERIT_BIT-1),C1, 0, TYP_NONE }, { "nosymlinks", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NOSYMLINKS_BIT-1), C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NOSYMLINKS_BIT-1), C1, 0, TYP_NONE }, { "extsz", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_EXTSIZE_BIT-1),C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_EXTSIZE_BIT-1),C1, 0, TYP_NONE }, { "extszinherit", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_EXTSZINHERIT_BIT-1),C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_EXTSZINHERIT_BIT-1),C1, 0, TYP_NONE }, { "nodefrag", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NODEFRAG_BIT-1),C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NODEFRAG_BIT-1),C1, 0, TYP_NONE }, { "filestream", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_FILESTREAM_BIT-1),C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_FILESTREAM_BIT-1),C1, 0, TYP_NONE }, - { "gen", FLDT_UINT32D, OI(COFF(gen)), C1, 0, TYP_NONE }, + { "gen", FLDT_UINT32D, OI(OFF(gen)), C1, 0, TYP_NONE }, + { "next_unlinked", FLDT_AGINO, OI(OFF(next_unlinked)), C1, 0, + TYP_INODE }, + { "u", FLDT_DINODE_U, inode_u_offset, C1, FLD_OFFSET, TYP_NONE }, + { "a", FLDT_DINODE_A, inode_a_offset, inode_a_count, + FLD_COUNT|FLD_OFFSET, TYP_NONE }, { NULL } }; @@ -226,7 +221,7 @@ if (!XFS_DFORK_Q(dip)) return 0; ASSERT((char *)XFS_DFORK_APTR(dip) - (char *)dip == byteize(startoff)); - return dip->di_core.di_aformat == XFS_DINODE_FMT_BTREE; + return dip->di_aformat == XFS_DINODE_FMT_BTREE; } static int @@ -242,8 +237,8 @@ if (!XFS_DFORK_Q(dip)) return 0; ASSERT((char *)XFS_DFORK_APTR(dip) - (char *)dip == byteize(startoff)); - return dip->di_core.di_aformat == XFS_DINODE_FMT_EXTENTS ? - be16_to_cpu(dip->di_core.di_anextents) : 0; + return dip->di_aformat == XFS_DINODE_FMT_EXTENTS ? + be16_to_cpu(dip->di_anextents) : 0; } static int @@ -251,10 +246,9 @@ void *obj, int startoff) { - xfs_dinode_t *dip; + xfs_dinode_t *dip = obj; ASSERT(startoff == 0); - dip = obj; return XFS_DFORK_Q(dip); } @@ -264,11 +258,10 @@ int startoff, int idx) { - xfs_dinode_t *dip; + xfs_dinode_t *dip = obj; ASSERT(startoff == 0); ASSERT(idx == 0); - dip = obj; ASSERT(XFS_DFORK_Q(dip)); return bitize((int)((char *)XFS_DFORK_APTR(dip) - (char *)dip)); } @@ -286,7 +279,7 @@ if (!XFS_DFORK_Q(dip)) return 0; ASSERT((char *)XFS_DFORK_APTR(dip) - (char *)dip == byteize(startoff)); - return dip->di_core.di_aformat == XFS_DINODE_FMT_LOCAL; + return dip->di_aformat == XFS_DINODE_FMT_LOCAL; } int @@ -301,12 +294,12 @@ ASSERT(startoff == 0); ASSERT(idx == 0); dip = obj; - switch (dip->di_core.di_aformat) { + switch (dip->di_aformat) { case XFS_DINODE_FMT_LOCAL: asf = (xfs_attr_shortform_t *)XFS_DFORK_APTR(dip); return bitize(be16_to_cpu(asf->hdr.totsize)); case XFS_DINODE_FMT_EXTENTS: - return (int)be16_to_cpu(dip->di_core.di_anextents) * + return (int)be16_to_cpu(dip->di_anextents) * bitsz(xfs_bmbt_rec_t); case XFS_DINODE_FMT_BTREE: return bitize((int)XFS_DFORK_ASIZE(dip, mp)); @@ -320,12 +313,11 @@ void *obj, int startoff) { - xfs_dinode_core_t *dic; + xfs_dinode_t *dip = obj; ASSERT(startoff == 0); ASSERT(obj == iocur_top->data); - dic = obj; - return dic->di_version == XFS_DINODE_VERSION_1; + return dip->di_version == 1; } static int @@ -333,12 +325,11 @@ void *obj, int startoff) { - xfs_dinode_core_t *dic; + xfs_dinode_t *dip = obj; ASSERT(startoff == 0); ASSERT(obj == iocur_top->data); - dic = obj; - return dic->di_version == XFS_DINODE_VERSION_2; + return dip->di_version == 2; } static int @@ -346,12 +337,11 @@ void *obj, int startoff) { - xfs_dinode_core_t *dic; + xfs_dinode_t *dip = obj; ASSERT(startoff == 0); ASSERT(obj == iocur_top->data); - dic = obj; - return dic->di_version == XFS_DINODE_VERSION_2; + return dip->di_version == 2; } static int @@ -359,12 +349,11 @@ void *obj, int startoff) { - xfs_dinode_core_t *dic; + xfs_dinode_t *dip = obj; ASSERT(startoff == 0); ASSERT(obj == iocur_top->data); - dic = obj; - return dic->di_version == XFS_DINODE_VERSION_2; + return dip->di_version == 2; } static int @@ -428,17 +417,29 @@ } static int +inode_u_offset( + void *obj, + int startoff, + int idx) +{ + xfs_dinode_t *dip = obj; + + ASSERT(startoff == 0); + ASSERT(idx == 0); + return bitize((int)((char *)XFS_DFORK_DPTR(dip) - (char *)dip)); +} + +static int inode_u_bmbt_count( void *obj, int startoff) { - xfs_dinode_t *dip; + xfs_dinode_t *dip = obj; ASSERT(bitoffs(startoff) == 0); ASSERT(obj == iocur_top->data); - dip = obj; - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); - return dip->di_core.di_format == XFS_DINODE_FMT_BTREE; + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); + return dip->di_format == XFS_DINODE_FMT_BTREE; } static int @@ -446,14 +447,13 @@ void *obj, int startoff) { - xfs_dinode_t *dip; + xfs_dinode_t *dip = obj; ASSERT(bitoffs(startoff) == 0); ASSERT(obj == iocur_top->data); - dip = obj; - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); - return dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS ? - be32_to_cpu(dip->di_core.di_nextents) : 0; + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); + return dip->di_format == XFS_DINODE_FMT_EXTENTS ? + be32_to_cpu(dip->di_nextents) : 0; } static int @@ -461,15 +461,14 @@ void *obj, int startoff) { - xfs_dinode_t *dip; + xfs_dinode_t *dip = obj; ASSERT(bitoffs(startoff) == 0); ASSERT(obj == iocur_top->data); - dip = obj; - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); - return dip->di_core.di_format == XFS_DINODE_FMT_LOCAL && - (be16_to_cpu(dip->di_core.di_mode) & S_IFMT) == S_IFREG ? - (int)be64_to_cpu(dip->di_core.di_size) : 0; + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); + return dip->di_format == XFS_DINODE_FMT_LOCAL && + (be16_to_cpu(dip->di_mode) & S_IFMT) == S_IFREG ? + (int)be64_to_cpu(dip->di_size) : 0; } static int @@ -477,13 +476,12 @@ void *obj, int startoff) { - xfs_dinode_t *dip; + xfs_dinode_t *dip = obj; ASSERT(bitoffs(startoff) == 0); ASSERT(obj == iocur_top->data); - dip = obj; - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); - return dip->di_core.di_format == XFS_DINODE_FMT_DEV; + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); + return dip->di_format == XFS_DINODE_FMT_DEV; } static int @@ -491,13 +489,12 @@ void *obj, int startoff) { - xfs_dinode_t *dip; + xfs_dinode_t *dip = obj; ASSERT(bitoffs(startoff) == 0); ASSERT(obj == iocur_top->data); - dip = obj; - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); - return dip->di_core.di_format == XFS_DINODE_FMT_UUID; + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); + return dip->di_format == XFS_DINODE_FMT_UUID; } static int @@ -505,14 +502,13 @@ void *obj, int startoff) { - xfs_dinode_t *dip; + xfs_dinode_t *dip = obj; ASSERT(bitoffs(startoff) == 0); ASSERT(obj == iocur_top->data); - dip = obj; - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); - return dip->di_core.di_format == XFS_DINODE_FMT_LOCAL && - (be16_to_cpu(dip->di_core.di_mode) & S_IFMT) == S_IFDIR + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); + return dip->di_format == XFS_DINODE_FMT_LOCAL && + (be16_to_cpu(dip->di_mode) & S_IFMT) == S_IFDIR && !xfs_sb_version_hasdirv2(&mp->m_sb); } @@ -521,14 +517,13 @@ void *obj, int startoff) { - xfs_dinode_t *dip; + xfs_dinode_t *dip = obj; ASSERT(bitoffs(startoff) == 0); ASSERT(obj == iocur_top->data); - dip = obj; - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); - return dip->di_core.di_format == XFS_DINODE_FMT_LOCAL && - (be16_to_cpu(dip->di_core.di_mode) & S_IFMT) == S_IFDIR && + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); + return dip->di_format == XFS_DINODE_FMT_LOCAL && + (be16_to_cpu(dip->di_mode) & S_IFMT) == S_IFDIR && xfs_sb_version_hasdirv2(&mp->m_sb); } @@ -543,13 +538,13 @@ ASSERT(startoff == 0); ASSERT(idx == 0); dip = obj; - switch (dip->di_core.di_format) { + switch (dip->di_format) { case XFS_DINODE_FMT_DEV: return bitsz(xfs_dev_t); case XFS_DINODE_FMT_LOCAL: - return bitize((int)be64_to_cpu(dip->di_core.di_size)); + return bitize((int)be64_to_cpu(dip->di_size)); case XFS_DINODE_FMT_EXTENTS: - return (int)be32_to_cpu(dip->di_core.di_nextents) * + return (int)be32_to_cpu(dip->di_nextents) * bitsz(xfs_bmbt_rec_t); case XFS_DINODE_FMT_BTREE: return bitize((int)XFS_DFORK_DSIZE(dip, mp)); @@ -565,15 +560,14 @@ void *obj, int startoff) { - xfs_dinode_t *dip; + xfs_dinode_t *dip = obj; ASSERT(bitoffs(startoff) == 0); ASSERT(obj == iocur_top->data); - dip = obj; - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); - return dip->di_core.di_format == XFS_DINODE_FMT_LOCAL && - (be16_to_cpu(dip->di_core.di_mode) & S_IFMT) == S_IFLNK ? - (int)be64_to_cpu(dip->di_core.di_size) : 0; + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); + return dip->di_format == XFS_DINODE_FMT_LOCAL && + (be16_to_cpu(dip->di_mode) & S_IFMT) == S_IFLNK ? + (int)be64_to_cpu(dip->di_size) : 0; } void @@ -609,7 +603,7 @@ off_cur(offset << mp->m_sb.sb_inodelog, mp->m_sb.sb_inodesize); dip = iocur_top->data; iocur_top->ino = ino; - iocur_top->mode = be16_to_cpu(dip->di_core.di_mode); + iocur_top->mode = be16_to_cpu(dip->di_mode); if ((iocur_top->mode & S_IFMT) == S_IFDIR) iocur_top->dirino = ino; Index: xfs-cmds/xfsprogs/db/inode.h =================================================================== --- xfs-cmds.orig/xfsprogs/db/inode.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/db/inode.h 2008-12-06 20:05:49.000000000 +0100 @@ -17,7 +17,7 @@ */ extern const struct field inode_a_flds[]; -extern const struct field inode_core_flds[]; +extern const struct field inode_flds[]; extern const struct field inode_flds[]; extern const struct field inode_hfld[]; extern const struct field inode_u_flds[]; Index: xfs-cmds/xfsprogs/db/metadump.c =================================================================== --- xfs-cmds.orig/xfsprogs/db/metadump.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/db/metadump.c 2008-12-06 20:05:49.000000000 +0100 @@ -501,8 +501,8 @@ __uint64_t ino_dir_size; int i; - sfp = &dip->di_u.di_dir2sf; - ino_dir_size = be64_to_cpu(dip->di_core.di_size); + sfp = (xfs_dir2_sf_t *)XFS_DFORK_DPTR(dip); + ino_dir_size = be64_to_cpu(dip->di_size); if (ino_dir_size > XFS_DFORK_DSIZE(dip, mp)) { ino_dir_size = XFS_DFORK_DSIZE(dip, mp); if (show_warnings) @@ -554,8 +554,9 @@ xfs_dinode_t *dip) { __uint64_t len; + char *symlink = XFS_DFORK_DPTR(dip); - len = be64_to_cpu(dip->di_core.di_size); + len = be64_to_cpu(dip->di_size); if (len > XFS_DFORK_DSIZE(dip, mp)) { if (show_warnings) print_warning("invalid size (%d) in symlink inode %llu", @@ -564,7 +565,7 @@ } while (len > 0) - dip->di_u.di_symlink[--len] = random() % 127 + 1; + symlink[--len] = random() % 127 + 1; } static void @@ -1142,27 +1143,24 @@ xfs_dinode_t *dip, typnm_t itype) { - switch (dip->di_core.di_format) { - case XFS_DINODE_FMT_LOCAL: - if (!dont_obfuscate) - switch (itype) { - case TYP_DIR2: - obfuscate_sf_dir(dip); - break; - - case TYP_SYMLINK: - obfuscate_sf_symlink(dip); - break; - - default: ; - } - break; - - case XFS_DINODE_FMT_EXTENTS: - return process_exinode(dip, itype); - - case XFS_DINODE_FMT_BTREE: - return process_btinode(dip, itype); + switch (dip->di_format) { + case XFS_DINODE_FMT_LOCAL: + if (!dont_obfuscate) + switch (itype) { + case TYP_DIR2: + obfuscate_sf_dir(dip); + break; + case TYP_SYMLINK: + obfuscate_sf_symlink(dip); + break; + default: + ; + } + break; + case XFS_DINODE_FMT_EXTENTS: + return process_exinode(dip, itype); + case XFS_DINODE_FMT_BTREE: + return process_btinode(dip, itype); } return 1; } @@ -1179,7 +1177,7 @@ cur_ino = XFS_AGINO_TO_INO(mp, agno, agino); /* copy appropriate data fork metadata */ - switch (be16_to_cpu(dip->di_core.di_mode) & S_IFMT) { + switch (be16_to_cpu(dip->di_mode) & S_IFMT) { case S_IFDIR: memset(&dir_data, 0, sizeof(dir_data)); success = process_inode_data(dip, TYP_DIR2); @@ -1197,7 +1195,7 @@ /* copy extended attributes if they exist and forkoff is valid */ if (success && XFS_DFORK_DSIZE(dip, mp) < XFS_LITINO(mp)) { attr_data.remote_val_count = 0; - switch (dip->di_core.di_aformat) { + switch (dip->di_aformat) { case XFS_DINODE_FMT_LOCAL: if (!dont_obfuscate) obfuscate_sf_attr(dip); Index: xfs-cmds/xfsprogs/libxfs/util.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/util.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/util.c 2008-12-06 20:05:49.000000000 +0100 @@ -47,126 +47,6 @@ } /* - * Given a mount structure and an inode number, return a pointer - * to a newly allocated in-core inode coresponding to the given - * inode number. - * - * Initialize the inode's attributes and extent pointers if it - * already has them (it will not if the inode has no links). - * - * NOTE: this has slightly different behaviour to the kernel in - * that this version requires the already allocated *ip being - * passed in while the kernel version does the allocation and - * returns it in **ip. - */ -int -libxfs_iread( - xfs_mount_t *mp, - xfs_trans_t *tp, - xfs_ino_t ino, - xfs_inode_t *ip, - xfs_daddr_t bno) -{ - xfs_buf_t *bp; - xfs_dinode_t *dip; - int error; - - ip->i_ino = ino; - ip->i_mount = mp; - - /* - * Get pointer's to the on-disk inode and the buffer containing it. - * If the inode number refers to a block outside the file system - * then xfs_itobp() will return NULL. In this case we should - * return NULL as well. Set i_blkno to 0 so that xfs_itobp() will - * know that this is a new incore inode. - */ - error = xfs_itobp(mp, tp, ip, &dip, &bp, bno, 0, XFS_BUF_LOCK); - if (error) - return error; - - /* - * If we got something that isn't an inode it means someone - * (nfs or dmi) has a stale handle. - */ - if (be16_to_cpu(dip->di_core.di_magic) != XFS_DINODE_MAGIC) { - xfs_trans_brelse(tp, bp); - return EINVAL; - } - - /* - * If the on-disk inode is already linked to a directory - * entry, copy all of the inode into the in-core inode. - * xfs_iformat() handles copying in the inode format - * specific information. - * Otherwise, just get the truly permanent information. - */ - if (dip->di_core.di_mode) { - xfs_dinode_from_disk(&ip->i_d, &dip->di_core); - error = xfs_iformat(ip, dip); - if (error) { - xfs_trans_brelse(tp, bp); - return error; - } - } else { - ip->i_d.di_magic = be16_to_cpu(dip->di_core.di_magic); - ip->i_d.di_version = dip->di_core.di_version; - ip->i_d.di_gen = be32_to_cpu(dip->di_core.di_gen); - ip->i_d.di_flushiter = be16_to_cpu(dip->di_core.di_flushiter); - /* - * Make sure to pull in the mode here as well in - * case the inode is released without being used. - * This ensures that xfs_inactive() will see that - * the inode is already free and not try to mess - * with the uninitialized part of it. - */ - ip->i_d.di_mode = 0; - /* - * Initialize the per-fork minima and maxima for a new - * inode here. xfs_iformat will do it for old inodes. - */ - ip->i_df.if_ext_max = - XFS_IFORK_DSIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t); - } - - /* - * The inode format changed when we moved the link count and - * made it 32 bits long. If this is an old format inode, - * convert it in memory to look like a new one. If it gets - * flushed to disk we will convert back before flushing or - * logging it. We zero out the new projid field and the old link - * count field. We'll handle clearing the pad field (the remains - * of the old uuid field) when we actually convert the inode to - * the new format. We don't change the version number so that we - * can distinguish this from a real new format inode. - */ - if (ip->i_d.di_version == XFS_DINODE_VERSION_1) { - ip->i_d.di_nlink = ip->i_d.di_onlink; - ip->i_d.di_onlink = 0; - ip->i_d.di_projid = 0; - } - - ip->i_delayed_blks = 0; - ip->i_size = ip->i_d.di_size; - - /* - * Use xfs_trans_brelse() to release the buffer containing the - * on-disk inode, because it was acquired with xfs_trans_read_buf() - * in xfs_itobp() above. If tp is NULL, this is just a normal - * brelse(). If we're within a transaction, then xfs_trans_brelse() - * will only release the buffer if it is not dirty within the - * transaction. It will be OK to release the buffer in this case, - * because inodes on disk are never destroyed and we will be - * locking the new in-core inode before putting it in the hash - * table where other processes can find it. Thus we don't have - * to worry about the inode being changed just because we released - * the buffer. - */ - xfs_trans_brelse(tp, bp); - return 0; -} - -/* * Allocate an inode on disk and return a copy of it's in-core version. * Set mode, nlink, and rdev appropriately within the inode. * The uid and gid for the inode are set according to the contents of @@ -229,8 +109,8 @@ * here rather than here and in the flush/logging code. */ if (xfs_sb_version_hasnlink(&tp->t_mountp->m_sb) && - ip->i_d.di_version == XFS_DINODE_VERSION_1) { - ip->i_d.di_version = XFS_DINODE_VERSION_2; + ip->i_d.di_version == 1) { + ip->i_d.di_version = 2; /* old link count, projid field, pad field already zeroed */ } @@ -395,7 +275,7 @@ mp = ip->i_mount; /* set *dip = inode's place in the buffer */ - dip = (xfs_dinode_t *)xfs_buf_offset(bp, ip->i_boffset); + dip = (xfs_dinode_t *)xfs_buf_offset(bp, ip->i_imap.im_boffset); ASSERT(ip->i_d.di_magic == XFS_DINODE_MAGIC); if ((ip->i_d.di_mode & S_IFMT) == S_IFREG) { @@ -416,7 +296,7 @@ * because if the inode is dirty at all the core must * be. */ - xfs_dinode_to_disk(&dip->di_core, &ip->i_d); + xfs_dinode_to_disk(dip, &ip->i_d); /* * If this is really an old format inode and the superblock version @@ -424,28 +304,26 @@ * convert back to the old inode format. If the superblock version * has been updated, then make the conversion permanent. */ - ASSERT(ip->i_d.di_version == XFS_DINODE_VERSION_1 || - xfs_sb_version_hasnlink(&mp->m_sb)); - if (ip->i_d.di_version == XFS_DINODE_VERSION_1) { + ASSERT(ip->i_d.di_version == 1 || xfs_sb_version_hasnlink(&mp->m_sb)); + if (ip->i_d.di_version == 1) { if (!xfs_sb_version_hasnlink(&mp->m_sb)) { /* * Convert it back. */ ASSERT(ip->i_d.di_nlink <= XFS_MAXLINK_1); - dip->di_core.di_onlink = cpu_to_be16(ip->i_d.di_nlink); + dip->di_onlink = cpu_to_be16(ip->i_d.di_nlink); } else { /* * The superblock version has already been bumped, * so just make the conversion to the new inode * format permanent. */ - ip->i_d.di_version = XFS_DINODE_VERSION_2; - dip->di_core.di_version = XFS_DINODE_VERSION_2; + ip->i_d.di_version = 2; + dip->di_version = 2; ip->i_d.di_onlink = 0; - dip->di_core.di_onlink = 0; - memset(&(ip->i_d.di_pad[0]), 0, sizeof(ip->i_d.di_pad)); - memset(&(dip->di_core.di_pad[0]), 0, - sizeof(dip->di_core.di_pad)); + dip->di_onlink = 0; + memset(&ip->i_d.di_pad[0], 0, sizeof(ip->i_d.di_pad)); + memset(&dip->di_pad[0], 0, sizeof(dip->di_pad)); ASSERT(ip->i_d.di_projid == 0); } } Index: xfs-cmds/xfsprogs/libxfs/xfs_alloc.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/xfs_alloc.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/xfs_alloc.c 2008-12-06 20:05:49.000000000 +0100 @@ -2064,44 +2064,41 @@ * Read in the allocation group header (free/alloc section). */ int /* error */ -xfs_alloc_read_agf( - xfs_mount_t *mp, /* mount point structure */ - xfs_trans_t *tp, /* transaction pointer */ - xfs_agnumber_t agno, /* allocation group number */ - int flags, /* XFS_ALLOC_FLAG_... */ - xfs_buf_t **bpp) /* buffer for the ag freelist header */ +xfs_read_agf( + struct xfs_mount *mp, /* mount point structure */ + struct xfs_trans *tp, /* transaction pointer */ + xfs_agnumber_t agno, /* allocation group number */ + int flags, /* XFS_BUF_ */ + struct xfs_buf **bpp) /* buffer for the ag freelist header */ { - xfs_agf_t *agf; /* ag freelist header */ + struct xfs_agf *agf; /* ag freelist header */ int agf_ok; /* set if agf is consistent */ - xfs_buf_t *bp; /* return value */ - xfs_perag_t *pag; /* per allocation group data */ int error; ASSERT(agno != NULLAGNUMBER); error = xfs_trans_read_buf( mp, tp, mp->m_ddev_targp, XFS_AG_DADDR(mp, agno, XFS_AGF_DADDR(mp)), - XFS_FSS_TO_BB(mp, 1), - (flags & XFS_ALLOC_FLAG_TRYLOCK) ? XFS_BUF_TRYLOCK : 0U, - &bp); + XFS_FSS_TO_BB(mp, 1), flags, bpp); if (error) return error; - ASSERT(!bp || !XFS_BUF_GETERROR(bp)); - if (!bp) { - *bpp = NULL; + if (!*bpp) return 0; - } + + ASSERT(!XFS_BUF_GETERROR(*bpp)); + agf = XFS_BUF_TO_AGF(*bpp); + /* * Validate the magic number of the agf block. */ - agf = XFS_BUF_TO_AGF(bp); agf_ok = be32_to_cpu(agf->agf_magicnum) == XFS_AGF_MAGIC && XFS_AGF_GOOD_VERSION(be32_to_cpu(agf->agf_versionnum)) && be32_to_cpu(agf->agf_freeblks) <= be32_to_cpu(agf->agf_length) && be32_to_cpu(agf->agf_flfirst) < XFS_AGFL_SIZE(mp) && be32_to_cpu(agf->agf_fllast) < XFS_AGFL_SIZE(mp) && - be32_to_cpu(agf->agf_flcount) <= XFS_AGFL_SIZE(mp); + be32_to_cpu(agf->agf_flcount) <= XFS_AGFL_SIZE(mp) && + be32_to_cpu(agf->agf_seqno) == agno; if (xfs_sb_version_haslazysbcount(&mp->m_sb)) agf_ok = agf_ok && be32_to_cpu(agf->agf_btreeblks) <= be32_to_cpu(agf->agf_length); @@ -2109,9 +2106,41 @@ XFS_RANDOM_ALLOC_READ_AGF))) { XFS_CORRUPTION_ERROR("xfs_alloc_read_agf", XFS_ERRLEVEL_LOW, mp, agf); - xfs_trans_brelse(tp, bp); + xfs_trans_brelse(tp, *bpp); return XFS_ERROR(EFSCORRUPTED); } + + XFS_BUF_SET_VTYPE_REF(*bpp, B_FS_AGF, XFS_AGF_REF); + return 0; +} + +/* + * Read in the allocation group header (free/alloc section). + */ +int /* error */ +xfs_alloc_read_agf( + struct xfs_mount *mp, /* mount point structure */ + struct xfs_trans *tp, /* transaction pointer */ + xfs_agnumber_t agno, /* allocation group number */ + int flags, /* XFS_ALLOC_FLAG_... */ + struct xfs_buf **bpp) /* buffer for the ag freelist header */ +{ + struct xfs_agf *agf; /* ag freelist header */ + struct xfs_perag *pag; /* per allocation group data */ + int error; + + ASSERT(agno != NULLAGNUMBER); + + error = xfs_read_agf(mp, tp, agno, + (flags & XFS_ALLOC_FLAG_TRYLOCK) ? XFS_BUF_TRYLOCK : 0, + bpp); + if (error) + return error; + if (!*bpp) + return 0; + ASSERT(!XFS_BUF_GETERROR(*bpp)); + + agf = XFS_BUF_TO_AGF(*bpp); pag = &mp->m_perag[agno]; if (!pag->pagf_init) { pag->pagf_freeblks = be32_to_cpu(agf->agf_freeblks); @@ -2139,8 +2168,6 @@ be32_to_cpu(agf->agf_levels[XFS_BTNUM_CNTi])); } #endif - XFS_BUF_SET_VTYPE_REF(bp, B_FS_AGF, XFS_AGF_REF); - *bpp = bp; return 0; } Index: xfs-cmds/xfsprogs/libxfs/xfs_ialloc.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/xfs_ialloc.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/xfs_ialloc.c 2008-12-06 20:05:49.000000000 +0100 @@ -22,68 +22,6 @@ * Internal functions. */ -/* - * Log specified fields for the inode given by bp and off. - */ -STATIC void -xfs_ialloc_log_di( - xfs_trans_t *tp, /* transaction pointer */ - xfs_buf_t *bp, /* inode buffer */ - int off, /* index of inode in buffer */ - int fields) /* bitmask of fields to log */ -{ - int first; /* first byte number */ - int ioffset; /* off in bytes */ - int last; /* last byte number */ - xfs_mount_t *mp; /* mount point structure */ - static const short offsets[] = { /* field offsets */ - /* keep in sync with bits */ - offsetof(xfs_dinode_core_t, di_magic), - offsetof(xfs_dinode_core_t, di_mode), - offsetof(xfs_dinode_core_t, di_version), - offsetof(xfs_dinode_core_t, di_format), - offsetof(xfs_dinode_core_t, di_onlink), - offsetof(xfs_dinode_core_t, di_uid), - offsetof(xfs_dinode_core_t, di_gid), - offsetof(xfs_dinode_core_t, di_nlink), - offsetof(xfs_dinode_core_t, di_projid), - offsetof(xfs_dinode_core_t, di_pad), - offsetof(xfs_dinode_core_t, di_atime), - offsetof(xfs_dinode_core_t, di_mtime), - offsetof(xfs_dinode_core_t, di_ctime), - offsetof(xfs_dinode_core_t, di_size), - offsetof(xfs_dinode_core_t, di_nblocks), - offsetof(xfs_dinode_core_t, di_extsize), - offsetof(xfs_dinode_core_t, di_nextents), - offsetof(xfs_dinode_core_t, di_anextents), - offsetof(xfs_dinode_core_t, di_forkoff), - offsetof(xfs_dinode_core_t, di_aformat), - offsetof(xfs_dinode_core_t, di_dmevmask), - offsetof(xfs_dinode_core_t, di_dmstate), - offsetof(xfs_dinode_core_t, di_flags), - offsetof(xfs_dinode_core_t, di_gen), - offsetof(xfs_dinode_t, di_next_unlinked), - offsetof(xfs_dinode_t, di_u), - offsetof(xfs_dinode_t, di_a), - sizeof(xfs_dinode_t) - }; - - - ASSERT(offsetof(xfs_dinode_t, di_core) == 0); - ASSERT((fields & (XFS_DI_U|XFS_DI_A)) == 0); - mp = tp->t_mountp; - /* - * Get the inode-relative first and last bytes for these fields - */ - xfs_btree_offsets(fields, offsets, XFS_DI_NUM_BITS, &first, &last); - /* - * Convert to buffer offsets and log it. - */ - ioffset = off << mp->m_sb.sb_inodelog; - first += ioffset; - last += ioffset; - xfs_trans_log_buf(tp, bp, first, last); -} /* * Allocation group level functions. @@ -364,9 +302,9 @@ * able to use the file system. */ if (xfs_sb_version_hasnlink(&args.mp->m_sb)) - version = XFS_DINODE_VERSION_2; + version = 2; else - version = XFS_DINODE_VERSION_1; + version = 1; /* * Seed the new inode cluster with a random generation number. This @@ -387,18 +325,25 @@ XFS_BUF_LOCK); ASSERT(fbuf); ASSERT(!XFS_BUF_GETERROR(fbuf)); + /* - * Set initial values for the inodes in this buffer. + * Initialize all inodes in this buffer and then log them. + * + * XXX: It would be much better if we had just one transaction to + * log a whole cluster of inodes instead of all the indivdual + * transactions causing a lot of log traffic. */ xfs_biozero(fbuf, 0, ninodes << args.mp->m_sb.sb_inodelog); for (i = 0; i < ninodes; i++) { + int ioffset = i << args.mp->m_sb.sb_inodelog; + uint isize = sizeof(struct xfs_dinode); + 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); + free->di_magic = cpu_to_be16(XFS_DINODE_MAGIC); + free->di_version = version; + free->di_gen = cpu_to_be32(gen); free->di_next_unlinked = cpu_to_be32(NULLAGINO); - xfs_ialloc_log_di(tp, fbuf, i, - XFS_DI_CORE_BITS | XFS_DI_NEXT_UNLINKED); + xfs_trans_log_buf(tp, fbuf, ioffset, ioffset + isize - 1); } xfs_trans_inode_alloc_buf(tp, fbuf); } @@ -1019,38 +964,29 @@ return error; } - /* - * Return the location of the inode in bno/off, for mapping it into a buffer. + * Return the location of the inode in imap, for mapping it into a buffer. */ -/*ARGSUSED*/ int -xfs_dilocate( - xfs_mount_t *mp, /* file system mount structure */ - xfs_trans_t *tp, /* transaction pointer */ +xfs_imap( + xfs_mount_t *mp, /* file system mount structure */ + xfs_trans_t *tp, /* transaction pointer */ xfs_ino_t ino, /* inode to locate */ - xfs_fsblock_t *bno, /* output: block containing inode */ - int *len, /* output: num blocks in inode cluster */ - int *off, /* output: index in block of inode */ - uint flags) /* flags concerning inode lookup */ + struct xfs_imap *imap, /* location map structure */ + uint flags) /* flags for inode btree lookup */ { xfs_agblock_t agbno; /* block number of inode in the alloc group */ - xfs_buf_t *agbp; /* agi buffer */ xfs_agino_t agino; /* inode number within alloc group */ xfs_agnumber_t agno; /* allocation group number */ int blks_per_cluster; /* num blocks per inode cluster */ xfs_agblock_t chunk_agbno; /* first block in inode chunk */ - xfs_agino_t chunk_agino; /* first agino in inode chunk */ - __int32_t chunk_cnt; /* count of free inodes in chunk */ - xfs_inofree_t chunk_free; /* mask of free inodes in chunk */ xfs_agblock_t cluster_agbno; /* first block in inode cluster */ - xfs_btree_cur_t *cur; /* inode btree cursor */ int error; /* error code */ - int i; /* temp state */ int offset; /* index of inode in its buffer */ int offset_agbno; /* blks from chunk start to inode */ ASSERT(ino != NULLFSINO); + /* * Split up the inode number into its parts. */ @@ -1061,24 +997,24 @@ ino != XFS_AGINO_TO_INO(mp, agno, agino)) { #ifdef DEBUG /* no diagnostics for bulkstat, ino comes from userspace */ - if (flags & XFS_IMAP_BULKSTAT) + if (flags & XFS_IGET_BULKSTAT) return XFS_ERROR(EINVAL); if (agno >= mp->m_sb.sb_agcount) { xfs_fs_cmn_err(CE_ALERT, mp, - "xfs_dilocate: agno (%d) >= " + "xfs_imap: agno (%d) >= " "mp->m_sb.sb_agcount (%d)", agno, mp->m_sb.sb_agcount); } if (agbno >= mp->m_sb.sb_agblocks) { xfs_fs_cmn_err(CE_ALERT, mp, - "xfs_dilocate: agbno (0x%llx) >= " + "xfs_imap: agbno (0x%llx) >= " "mp->m_sb.sb_agblocks (0x%lx)", (unsigned long long) agbno, (unsigned long) mp->m_sb.sb_agblocks); } if (ino != XFS_AGINO_TO_INO(mp, agno, agino)) { xfs_fs_cmn_err(CE_ALERT, mp, - "xfs_dilocate: ino (0x%llx) != " + "xfs_imap: ino (0x%llx) != " "XFS_AGINO_TO_INO(mp, agno, agino) " "(0x%llx)", ino, XFS_AGINO_TO_INO(mp, agno, agino)); @@ -1087,64 +1023,89 @@ #endif /* DEBUG */ return XFS_ERROR(EINVAL); } - if ((mp->m_sb.sb_blocksize >= XFS_INODE_CLUSTER_SIZE(mp)) || - !(flags & XFS_IMAP_LOOKUP)) { + + /* + * If the inode cluster size is the same as the blocksize or + * smaller we get to the buffer by simple arithmetics. + */ + if (XFS_INODE_CLUSTER_SIZE(mp) <= mp->m_sb.sb_blocksize) { offset = XFS_INO_TO_OFFSET(mp, ino); ASSERT(offset < mp->m_sb.sb_inopblock); - *bno = XFS_AGB_TO_FSB(mp, agno, agbno); - *off = offset; - *len = 1; + + imap->im_blkno = XFS_AGB_TO_DADDR(mp, agno, agbno); + imap->im_len = XFS_FSB_TO_BB(mp, 1); + imap->im_boffset = (ushort)(offset << mp->m_sb.sb_inodelog); return 0; } + blks_per_cluster = XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_blocklog; - if (*bno != NULLFSBLOCK) { + + /* + * If we get a block number passed from bulkstat we can use it to + * find the buffer easily. + */ + if (imap->im_blkno) { offset = XFS_INO_TO_OFFSET(mp, ino); ASSERT(offset < mp->m_sb.sb_inopblock); - cluster_agbno = XFS_FSB_TO_AGBNO(mp, *bno); - *off = ((agbno - cluster_agbno) * mp->m_sb.sb_inopblock) + - offset; - *len = blks_per_cluster; + + cluster_agbno = XFS_DADDR_TO_AGBNO(mp, imap->im_blkno); + offset += (agbno - cluster_agbno) * mp->m_sb.sb_inopblock; + + imap->im_len = XFS_FSB_TO_BB(mp, blks_per_cluster); + imap->im_boffset = (ushort)(offset << mp->m_sb.sb_inodelog); return 0; } + + /* + * If the inode chunks are aligned then use simple maths to + * find the location. Otherwise we have to do a btree + * lookup to find the location. + */ if (mp->m_inoalign_mask) { offset_agbno = agbno & mp->m_inoalign_mask; chunk_agbno = agbno - offset_agbno; } else { + xfs_btree_cur_t *cur; /* inode btree cursor */ + xfs_agino_t chunk_agino; /* first agino in inode chunk */ + __int32_t chunk_cnt; /* count of free inodes in chunk */ + xfs_inofree_t chunk_free; /* mask of free inodes in chunk */ + xfs_buf_t *agbp; /* agi buffer */ + int i; /* temp state */ + down_read(&mp->m_peraglock); error = xfs_ialloc_read_agi(mp, tp, agno, &agbp); up_read(&mp->m_peraglock); if (error) { -#ifdef DEBUG - xfs_fs_cmn_err(CE_ALERT, mp, "xfs_dilocate: " + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " "xfs_ialloc_read_agi() returned " "error %d, agno %d", error, agno); -#endif /* DEBUG */ return error; } + cur = xfs_inobt_init_cursor(mp, tp, agbp, agno); - if ((error = xfs_inobt_lookup_le(cur, agino, 0, 0, &i))) { -#ifdef DEBUG - xfs_fs_cmn_err(CE_ALERT, mp, "xfs_dilocate: " + error = xfs_inobt_lookup_le(cur, agino, 0, 0, &i); + if (error) { + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " "xfs_inobt_lookup_le() failed"); -#endif /* DEBUG */ goto error0; } - if ((error = xfs_inobt_get_rec(cur, &chunk_agino, &chunk_cnt, - &chunk_free, &i))) { -#ifdef DEBUG - xfs_fs_cmn_err(CE_ALERT, mp, "xfs_dilocate: " + + error = xfs_inobt_get_rec(cur, &chunk_agino, &chunk_cnt, + &chunk_free, &i); + if (error) { + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " "xfs_inobt_get_rec() failed"); -#endif /* DEBUG */ goto error0; } if (i == 0) { #ifdef DEBUG - xfs_fs_cmn_err(CE_ALERT, mp, "xfs_dilocate: " + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " "xfs_inobt_get_rec() failed"); #endif /* DEBUG */ error = XFS_ERROR(EINVAL); } + error0: xfs_trans_brelse(tp, agbp); xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); if (error) @@ -1152,19 +1113,35 @@ chunk_agbno = XFS_AGINO_TO_AGBNO(mp, chunk_agino); offset_agbno = agbno - chunk_agbno; } + ASSERT(agbno >= chunk_agbno); cluster_agbno = chunk_agbno + ((offset_agbno / blks_per_cluster) * blks_per_cluster); offset = ((agbno - cluster_agbno) * mp->m_sb.sb_inopblock) + XFS_INO_TO_OFFSET(mp, ino); - *bno = XFS_AGB_TO_FSB(mp, agno, cluster_agbno); - *off = offset; - *len = blks_per_cluster; + + imap->im_blkno = XFS_AGB_TO_DADDR(mp, agno, cluster_agbno); + imap->im_len = XFS_FSB_TO_BB(mp, blks_per_cluster); + imap->im_boffset = (ushort)(offset << mp->m_sb.sb_inodelog); + + /* + * If the inode number maps to a block outside the bounds + * of the file system then return NULL rather than calling + * read_buf and panicing when we get an error from the + * driver. + */ + if ((imap->im_blkno + imap->im_len) > + XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks)) { + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " + "(imap->im_blkno (0x%llx) + imap->im_len (0x%llx)) > " + " XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks) (0x%llx)", + (unsigned long long) imap->im_blkno, + (unsigned long long) imap->im_len, + XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks)); + return XFS_ERROR(EINVAL); + } + return 0; -error0: - xfs_trans_brelse(tp, agbp); - xfs_btree_del_cursor(cur, XFS_BTREE_ERROR); - return error; } /* @@ -1232,70 +1209,95 @@ xfs_trans_log_buf(tp, bp, first, last); } +#ifdef DEBUG +STATIC void +xfs_check_agi_unlinked( + struct xfs_agi *agi) +{ + int i; + + for (i = 0; i < XFS_AGI_UNLINKED_BUCKETS; i++) + ASSERT(agi->agi_unlinked[i]); +} +#else +#define xfs_check_agi_unlinked(agi) +#endif + /* * Read in the allocation group header (inode allocation section) */ int -xfs_ialloc_read_agi( - xfs_mount_t *mp, /* file system mount structure */ - xfs_trans_t *tp, /* transaction pointer */ - xfs_agnumber_t agno, /* allocation group number */ - xfs_buf_t **bpp) /* allocation group hdr buf */ +xfs_read_agi( + struct xfs_mount *mp, /* file system mount structure */ + struct xfs_trans *tp, /* transaction pointer */ + xfs_agnumber_t agno, /* allocation group number */ + struct xfs_buf **bpp) /* allocation group hdr buf */ { - xfs_agi_t *agi; /* allocation group header */ - int agi_ok; /* agi is consistent */ - xfs_buf_t *bp; /* allocation group hdr buf */ - xfs_perag_t *pag; /* per allocation group data */ - int error; + struct xfs_agi *agi; /* allocation group header */ + int agi_ok; /* agi is consistent */ + int error; ASSERT(agno != NULLAGNUMBER); - error = xfs_trans_read_buf( - mp, tp, mp->m_ddev_targp, + + error = xfs_trans_read_buf(mp, tp, mp->m_ddev_targp, XFS_AG_DADDR(mp, agno, XFS_AGI_DADDR(mp)), - XFS_FSS_TO_BB(mp, 1), 0, &bp); + XFS_FSS_TO_BB(mp, 1), 0, bpp); if (error) return error; - ASSERT(bp && !XFS_BUF_GETERROR(bp)); + + ASSERT(*bpp && !XFS_BUF_GETERROR(*bpp)); + agi = XFS_BUF_TO_AGI(*bpp); /* * Validate the magic number of the agi block. */ - agi = XFS_BUF_TO_AGI(bp); - agi_ok = - be32_to_cpu(agi->agi_magicnum) == XFS_AGI_MAGIC && - XFS_AGI_GOOD_VERSION(be32_to_cpu(agi->agi_versionnum)); + agi_ok = be32_to_cpu(agi->agi_magicnum) == XFS_AGI_MAGIC && + XFS_AGI_GOOD_VERSION(be32_to_cpu(agi->agi_versionnum)) && + be32_to_cpu(agi->agi_seqno) == agno; if (unlikely(XFS_TEST_ERROR(!agi_ok, mp, XFS_ERRTAG_IALLOC_READ_AGI, XFS_RANDOM_IALLOC_READ_AGI))) { - XFS_CORRUPTION_ERROR("xfs_ialloc_read_agi", XFS_ERRLEVEL_LOW, + XFS_CORRUPTION_ERROR("xfs_read_agi", XFS_ERRLEVEL_LOW, mp, agi); - xfs_trans_brelse(tp, bp); + xfs_trans_brelse(tp, *bpp); return XFS_ERROR(EFSCORRUPTED); } + + XFS_BUF_SET_VTYPE_REF(*bpp, B_FS_AGI, XFS_AGI_REF); + + xfs_check_agi_unlinked(agi); + return 0; +} + +int +xfs_ialloc_read_agi( + struct xfs_mount *mp, /* file system mount structure */ + struct xfs_trans *tp, /* transaction pointer */ + xfs_agnumber_t agno, /* allocation group number */ + struct xfs_buf **bpp) /* allocation group hdr buf */ +{ + struct xfs_agi *agi; /* allocation group header */ + struct xfs_perag *pag; /* per allocation group data */ + int error; + + error = xfs_read_agi(mp, tp, agno, bpp); + if (error) + return error; + + agi = XFS_BUF_TO_AGI(*bpp); pag = &mp->m_perag[agno]; + if (!pag->pagi_init) { pag->pagi_freecount = be32_to_cpu(agi->agi_freecount); pag->pagi_count = be32_to_cpu(agi->agi_count); pag->pagi_init = 1; - } else { - /* - * It's possible for these to be out of sync if - * we are in the middle of a forced shutdown. - */ - ASSERT(pag->pagi_freecount == be32_to_cpu(agi->agi_freecount) || - XFS_FORCED_SHUTDOWN(mp)); - } - -#ifdef DEBUG - { - int i; - - for (i = 0; i < XFS_AGI_UNLINKED_BUCKETS; i++) - ASSERT(agi->agi_unlinked[i]); } -#endif - XFS_BUF_SET_VTYPE_REF(bp, B_FS_AGI, XFS_AGI_REF); - *bpp = bp; + /* + * It's possible for these to be out of sync if + * we are in the middle of a forced shutdown. + */ + ASSERT(pag->pagi_freecount == be32_to_cpu(agi->agi_freecount) || + XFS_FORCED_SHUTDOWN(mp)); return 0; } Index: xfs-cmds/xfsprogs/libxfs/xfs_inode.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/xfs_inode.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/xfs_inode.c 2008-12-06 20:05:49.000000000 +0100 @@ -91,10 +91,10 @@ xfs_imap_to_bp( xfs_mount_t *mp, xfs_trans_t *tp, - xfs_imap_t *imap, + struct xfs_imap *imap, xfs_buf_t **bpp, uint buf_flags, - uint imap_flags) + uint iget_flags) { int error; int i; @@ -131,12 +131,12 @@ dip = (xfs_dinode_t *)xfs_buf_offset(bp, (i << mp->m_sb.sb_inodelog)); - di_ok = be16_to_cpu(dip->di_core.di_magic) == XFS_DINODE_MAGIC && - XFS_DINODE_GOOD_VERSION(dip->di_core.di_version); + di_ok = be16_to_cpu(dip->di_magic) == XFS_DINODE_MAGIC && + XFS_DINODE_GOOD_VERSION(dip->di_version); if (unlikely(XFS_TEST_ERROR(!di_ok, mp, XFS_ERRTAG_ITOBP_INOTOBP, XFS_RANDOM_ITOBP_INOTOBP))) { - if (imap_flags & XFS_IMAP_BULKSTAT) { + if (iget_flags & XFS_IGET_BULKSTAT) { xfs_trans_brelse(tp, bp); return XFS_ERROR(EINVAL); } @@ -148,7 +148,7 @@ "daddr %lld #%d (magic=%x)", XFS_BUFTARG_NAME(mp->m_ddev_targp), (unsigned long long)imap->im_blkno, i, - be16_to_cpu(dip->di_core.di_magic)); + be16_to_cpu(dip->di_magic)); #endif xfs_trans_brelse(tp, bp); return XFS_ERROR(EFSCORRUPTED); @@ -167,6 +167,49 @@ } /* + * This routine is called to map an inode number within a file + * system to the buffer containing the on-disk version of the + * inode. It returns a pointer to the buffer containing the + * on-disk inode in the bpp parameter, and in the dip parameter + * it returns a pointer to the on-disk inode within that buffer. + * + * If a non-zero error is returned, then the contents of bpp and + * dipp are undefined. + * + * Use xfs_imap() to determine the size and location of the + * buffer to read from disk. + */ +int +xfs_inotobp( + xfs_mount_t *mp, + xfs_trans_t *tp, + xfs_ino_t ino, + xfs_dinode_t **dipp, + xfs_buf_t **bpp, + int *offset, + uint imap_flags) +{ + struct xfs_imap imap; + xfs_buf_t *bp; + int error; + + imap.im_blkno = 0; + error = xfs_imap(mp, tp, ino, &imap, imap_flags); + if (error) + return error; + + error = xfs_imap_to_bp(mp, tp, &imap, &bp, XFS_BUF_LOCK, imap_flags); + if (error) + return error; + + *dipp = (xfs_dinode_t *)xfs_buf_offset(bp, imap.im_boffset); + *bpp = bp; + *offset = imap.im_boffset; + return 0; +} + + +/* * This routine is called to map an inode to the buffer containing * the on-disk version of the inode. It returns a pointer to the * buffer containing the on-disk inode in the bpp parameter, and in @@ -176,15 +219,11 @@ * If a non-zero error is returned, then the contents of bpp and * dipp are undefined. * - * If the inode is new and has not yet been initialized, use xfs_imap() - * to determine the size and location of the buffer to read from disk. - * If the inode has already been mapped to its buffer and read in once, - * then use the mapping information stored in the inode rather than - * calling xfs_imap(). This allows us to avoid the overhead of looking - * at the inode btree for small block file systems (see xfs_dilocate()). - * We can tell whether the inode has been mapped in before by comparing - * its disk block address to 0. Only uninitialized inodes will have - * 0 for the disk block address. + * The inode is expected to already been mapped to its buffer and read + * in once, thus we can use the mapping information stored in the inode + * rather than calling xfs_imap(). This allows us to avoid the overhead + * of looking at the inode btree for small block file systems + * (see xfs_imap()). */ int xfs_itobp( @@ -193,40 +232,14 @@ xfs_inode_t *ip, xfs_dinode_t **dipp, xfs_buf_t **bpp, - xfs_daddr_t bno, - uint imap_flags, uint buf_flags) { - xfs_imap_t imap; xfs_buf_t *bp; int error; - if (ip->i_blkno == (xfs_daddr_t)0) { - imap.im_blkno = bno; - error = xfs_imap(mp, tp, ip->i_ino, &imap, - XFS_IMAP_LOOKUP | imap_flags); - if (error) - return error; - - /* - * Fill in the fields in the inode that will be used to - * map the inode to its buffer from now on. - */ - ip->i_blkno = imap.im_blkno; - ip->i_len = imap.im_len; - ip->i_boffset = imap.im_boffset; - } else { - /* - * We've already mapped the inode once, so just use the - * mapping that we saved the first time. - */ - imap.im_blkno = ip->i_blkno; - imap.im_len = ip->i_len; - imap.im_boffset = ip->i_boffset; - } - ASSERT(bno == 0 || bno == imap.im_blkno); + ASSERT(ip->i_imap.im_blkno != 0); - error = xfs_imap_to_bp(mp, tp, &imap, &bp, buf_flags, imap_flags); + error = xfs_imap_to_bp(mp, tp, &ip->i_imap, &bp, buf_flags, 0); if (error) return error; @@ -237,7 +250,7 @@ return EAGAIN; } - *dipp = (xfs_dinode_t *)xfs_buf_offset(bp, imap.im_boffset); + *dipp = (xfs_dinode_t *)xfs_buf_offset(bp, ip->i_imap.im_boffset); *bpp = bp; return 0; } @@ -250,10 +263,8 @@ * pointers. For a file in B-tree format, only the root is immediately * brought in-core. The rest will be in-lined in if_extents when it * is first referenced (see xfs_iread_extents()). - * - * Note: this requires user-space public scope for libxfs_iread */ -int +STATIC int xfs_iformat( xfs_inode_t *ip, xfs_dinode_t *dip) @@ -266,26 +277,26 @@ XFS_IFORK_DSIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t); error = 0; - if (unlikely(be32_to_cpu(dip->di_core.di_nextents) + - be16_to_cpu(dip->di_core.di_anextents) > - be64_to_cpu(dip->di_core.di_nblocks))) { + if (unlikely(be32_to_cpu(dip->di_nextents) + + be16_to_cpu(dip->di_anextents) > + be64_to_cpu(dip->di_nblocks))) { xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, "corrupt dinode %Lu, extent total = %d, nblocks = %Lu.", (unsigned long long)ip->i_ino, - (int)(be32_to_cpu(dip->di_core.di_nextents) + - be16_to_cpu(dip->di_core.di_anextents)), + (int)(be32_to_cpu(dip->di_nextents) + + be16_to_cpu(dip->di_anextents)), (unsigned long long) - be64_to_cpu(dip->di_core.di_nblocks)); + be64_to_cpu(dip->di_nblocks)); XFS_CORRUPTION_ERROR("xfs_iformat(1)", XFS_ERRLEVEL_LOW, ip->i_mount, dip); return XFS_ERROR(EFSCORRUPTED); } - if (unlikely(dip->di_core.di_forkoff > ip->i_mount->m_sb.sb_inodesize)) { + if (unlikely(dip->di_forkoff > ip->i_mount->m_sb.sb_inodesize)) { xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, "corrupt dinode %Lu, forkoff = 0x%x.", (unsigned long long)ip->i_ino, - dip->di_core.di_forkoff); + dip->di_forkoff); XFS_CORRUPTION_ERROR("xfs_iformat(2)", XFS_ERRLEVEL_LOW, ip->i_mount, dip); return XFS_ERROR(EFSCORRUPTED); @@ -296,25 +307,25 @@ case S_IFCHR: case S_IFBLK: case S_IFSOCK: - if (unlikely(dip->di_core.di_format != XFS_DINODE_FMT_DEV)) { + if (unlikely(dip->di_format != XFS_DINODE_FMT_DEV)) { XFS_CORRUPTION_ERROR("xfs_iformat(3)", XFS_ERRLEVEL_LOW, ip->i_mount, dip); return XFS_ERROR(EFSCORRUPTED); } ip->i_d.di_size = 0; ip->i_size = 0; - ip->i_df.if_u2.if_rdev = be32_to_cpu(dip->di_u.di_dev); + ip->i_df.if_u2.if_rdev = xfs_dinode_get_rdev(dip); break; case S_IFREG: case S_IFLNK: case S_IFDIR: - switch (dip->di_core.di_format) { + switch (dip->di_format) { case XFS_DINODE_FMT_LOCAL: /* * no local regular files yet */ - if (unlikely((be16_to_cpu(dip->di_core.di_mode) & S_IFMT) == S_IFREG)) { + if (unlikely((be16_to_cpu(dip->di_mode) & S_IFMT) == S_IFREG)) { xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, "corrupt inode %Lu " "(local format for regular file).", @@ -325,7 +336,7 @@ return XFS_ERROR(EFSCORRUPTED); } - di_size = be64_to_cpu(dip->di_core.di_size); + di_size = be64_to_cpu(dip->di_size); if (unlikely(di_size > XFS_DFORK_DSIZE(dip, ip->i_mount))) { xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, "corrupt inode %Lu " @@ -367,7 +378,7 @@ ip->i_afp = kmem_zone_zalloc(xfs_ifork_zone, KM_SLEEP); ip->i_afp->if_ext_max = XFS_IFORK_ASIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t); - switch (dip->di_core.di_aformat) { + switch (dip->di_aformat) { case XFS_DINODE_FMT_LOCAL: atp = (xfs_attr_shortform_t *)XFS_DFORK_APTR(dip); size = be16_to_cpu(atp->hdr.totsize); @@ -579,7 +590,7 @@ void xfs_dinode_from_disk( xfs_icdinode_t *to, - xfs_dinode_core_t *from) + xfs_dinode_t *from) { to->di_magic = be16_to_cpu(from->di_magic); to->di_mode = be16_to_cpu(from->di_mode); @@ -613,7 +624,7 @@ void xfs_dinode_to_disk( - xfs_dinode_core_t *to, + xfs_dinode_t *to, xfs_icdinode_t *from) { to->di_magic = cpu_to_be16(from->di_magic); @@ -647,6 +658,139 @@ } /* + * Read the disk inode attributes into the in-core inode structure. + */ +int +xfs_iread( + xfs_mount_t *mp, + xfs_trans_t *tp, + xfs_inode_t *ip, + xfs_daddr_t bno, + uint iget_flags) +{ + xfs_buf_t *bp; + xfs_dinode_t *dip; + int error; + + /* + * Fill in the location information in the in-core inode. + */ + ip->i_imap.im_blkno = bno; + error = xfs_imap(mp, tp, ip->i_ino, &ip->i_imap, iget_flags); + if (error) + return error; + ASSERT(bno == 0 || bno == ip->i_imap.im_blkno); + + /* + * Get pointers to the on-disk inode and the buffer containing it. + */ + error = xfs_imap_to_bp(mp, tp, &ip->i_imap, &bp, + XFS_BUF_LOCK, iget_flags); + if (error) + return error; + dip = (xfs_dinode_t *)xfs_buf_offset(bp, ip->i_imap.im_boffset); + + /* + * If we got something that isn't an inode it means someone + * (nfs or dmi) has a stale handle. + */ + if (be16_to_cpu(dip->di_magic) != XFS_DINODE_MAGIC) { +#ifdef DEBUG + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_iread: " + "dip->di_magic (0x%x) != " + "XFS_DINODE_MAGIC (0x%x)", + be16_to_cpu(dip->di_magic), + XFS_DINODE_MAGIC); +#endif /* DEBUG */ + error = XFS_ERROR(EINVAL); + goto out_brelse; + } + + /* + * If the on-disk inode is already linked to a directory + * entry, copy all of the inode into the in-core inode. + * xfs_iformat() handles copying in the inode format + * specific information. + * Otherwise, just get the truly permanent information. + */ + if (dip->di_mode) { + xfs_dinode_from_disk(&ip->i_d, dip); + error = xfs_iformat(ip, dip); + if (error) { +#ifdef DEBUG + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_iread: " + "xfs_iformat() returned error %d", + error); +#endif /* DEBUG */ + goto out_brelse; + } + } else { + ip->i_d.di_magic = be16_to_cpu(dip->di_magic); + ip->i_d.di_version = dip->di_version; + ip->i_d.di_gen = be32_to_cpu(dip->di_gen); + ip->i_d.di_flushiter = be16_to_cpu(dip->di_flushiter); + /* + * Make sure to pull in the mode here as well in + * case the inode is released without being used. + * This ensures that xfs_inactive() will see that + * the inode is already free and not try to mess + * with the uninitialized part of it. + */ + ip->i_d.di_mode = 0; + /* + * Initialize the per-fork minima and maxima for a new + * inode here. xfs_iformat will do it for old inodes. + */ + ip->i_df.if_ext_max = + XFS_IFORK_DSIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t); + } + + /* + * The inode format changed when we moved the link count and + * made it 32 bits long. If this is an old format inode, + * convert it in memory to look like a new one. If it gets + * flushed to disk we will convert back before flushing or + * logging it. We zero out the new projid field and the old link + * count field. We'll handle clearing the pad field (the remains + * of the old uuid field) when we actually convert the inode to + * the new format. We don't change the version number so that we + * can distinguish this from a real new format inode. + */ + if (ip->i_d.di_version == 1) { + ip->i_d.di_nlink = ip->i_d.di_onlink; + ip->i_d.di_onlink = 0; + ip->i_d.di_projid = 0; + } + + ip->i_delayed_blks = 0; + ip->i_size = ip->i_d.di_size; + + /* + * Mark the buffer containing the inode as something to keep + * around for a while. This helps to keep recently accessed + * meta-data in-core longer. + */ + XFS_BUF_SET_REF(bp, XFS_INO_REF); + + /* + * Use xfs_trans_brelse() to release the buffer containing the + * on-disk inode, because it was acquired with xfs_trans_read_buf() + * in xfs_itobp() above. If tp is NULL, this is just a normal + * brelse(). If we're within a transaction, then xfs_trans_brelse() + * will only release the buffer if it is not dirty within the + * transaction. It will be OK to release the buffer in this case, + * because inodes on disk are never destroyed and we will be + * locking the new in-core inode before putting it in the hash + * table where other processes can find it. Thus we don't have + * to worry about the inode being changed just because we released + * the buffer. + */ + out_brelse: + xfs_trans_brelse(tp, bp); + return error; +} + +/* * Read in extents from a btree-format inode. * Allocate and fill in if_extents. Real work is done in xfs_bmap.c. */ @@ -906,64 +1050,6 @@ ASSERT(ifp->if_bytes <= XFS_IFORK_SIZE(ip, whichfork)); } - - - -/* - * Map inode to disk block and offset. - * - * mp -- the mount point structure for the current file system - * tp -- the current transaction - * ino -- the inode number of the inode to be located - * imap -- this structure is filled in with the information necessary - * to retrieve the given inode from disk - * flags -- flags to pass to xfs_dilocate indicating whether or not - * lookups in the inode btree were OK or not - */ -int -xfs_imap( - xfs_mount_t *mp, - xfs_trans_t *tp, - xfs_ino_t ino, - xfs_imap_t *imap, - uint flags) -{ - xfs_fsblock_t fsbno; - int len; - int off; - int error; - - fsbno = imap->im_blkno ? - XFS_DADDR_TO_FSB(mp, imap->im_blkno) : NULLFSBLOCK; - error = xfs_dilocate(mp, tp, ino, &fsbno, &len, &off, flags); - if (error) - return error; - - imap->im_blkno = XFS_FSB_TO_DADDR(mp, fsbno); - imap->im_len = XFS_FSB_TO_BB(mp, len); - imap->im_agblkno = XFS_FSB_TO_AGBNO(mp, fsbno); - imap->im_ioffset = (ushort)off; - imap->im_boffset = (ushort)(off << mp->m_sb.sb_inodelog); - - /* - * If the inode number maps to a block outside the bounds - * of the file system then return NULL rather than calling - * read_buf and panicing when we get an error from the - * driver. - */ - if ((imap->im_blkno + imap->im_len) > - XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks)) { - xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " - "(imap->im_blkno (0x%llx) + imap->im_len (0x%llx)) > " - " XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks) (0x%llx)", - (unsigned long long) imap->im_blkno, - (unsigned long long) imap->im_len, - XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks)); - return EINVAL; - } - return 0; -} - void xfs_idestroy_fork( xfs_inode_t *ip, @@ -1077,7 +1163,7 @@ * In these cases, the format always takes precedence, because the * format indicates the current state of the fork. * - * Note: this requires user-space public scope for libxfs_iread + * Note: this requires user-space public scope for libxfs_iflush_int */ /*ARGSUSED*/ void @@ -1155,15 +1241,16 @@ case XFS_DINODE_FMT_DEV: if (iip->ili_format.ilf_fields & XFS_ILOG_DEV) { ASSERT(whichfork == XFS_DATA_FORK); - dip->di_u.di_dev = cpu_to_be32(ip->i_df.if_u2.if_rdev); + xfs_dinode_put_rdev(dip, ip->i_df.if_u2.if_rdev); } break; case XFS_DINODE_FMT_UUID: if (iip->ili_format.ilf_fields & XFS_ILOG_UUID) { ASSERT(whichfork == XFS_DATA_FORK); - memcpy(&dip->di_u.di_muuid, &ip->i_df.if_u2.if_uuid, - sizeof(uuid_t)); + memcpy(XFS_DFORK_DPTR(dip), + &ip->i_df.if_u2.if_uuid, + sizeof(uuid_t)); } break; Index: xfs-cmds/xfsprogs/libxfs/xfs_mount.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/xfs_mount.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/xfs_mount.c 2008-12-06 20:05:49.000000000 +0100 @@ -265,8 +265,7 @@ mp->m_sectbb_log = sbp->sb_sectlog - BBSHIFT; mp->m_agno_log = xfs_highbit32(sbp->sb_agcount - 1) + 1; mp->m_agino_log = sbp->sb_inopblog + sbp->sb_agblklog; - mp->m_litino = sbp->sb_inodesize - - ((uint)sizeof(xfs_dinode_core_t) + (uint)sizeof(xfs_agino_t)); + mp->m_litino = sbp->sb_inodesize - sizeof(struct xfs_dinode); mp->m_blockmask = sbp->sb_blocksize - 1; mp->m_blockwsize = sbp->sb_blocksize >> XFS_WORDLOG; mp->m_blockwmask = mp->m_blockwsize - 1; Index: xfs-cmds/xfsprogs/libxlog/xfs_log_recover.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxlog/xfs_log_recover.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/libxlog/xfs_log_recover.c 2008-12-06 20:05:49.000000000 +0100 @@ -1238,7 +1238,6 @@ xlog_t *log) { int i, j, k; - xlog_in_core_2_t *xhdr; for (i = 0; i < BTOBB(be32_to_cpu(rhead->h_len)) && i < (XLOG_HEADER_CYCLE_SIZE / BBSIZE); i++) { @@ -1247,7 +1246,7 @@ } if (xfs_sb_version_haslogv2(&log->l_mp->m_sb)) { - xhdr = (xlog_in_core_2_t *)rhead; + xlog_in_core_2_t *xhdr = (xlog_in_core_2_t *)rhead; for ( ; i < BTOBB(be32_to_cpu(rhead->h_len)); i++) { j = i / (XLOG_HEADER_CYCLE_SIZE / BBSIZE); k = i % (XLOG_HEADER_CYCLE_SIZE / BBSIZE); Index: xfs-cmds/xfsprogs/logprint/log_misc.c =================================================================== --- xfs-cmds.orig/xfsprogs/logprint/log_misc.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/logprint/log_misc.c 2008-12-06 20:05:49.000000000 +0100 @@ -642,7 +642,7 @@ mode = dino.di_mode & S_IFMT; size = (int)dino.di_size; xlog_print_trans_inode_core(&dino); - *ptr += sizeof(xfs_dinode_core_t); + *ptr += sizeof(xfs_icdinode_t); if (*i == num_ops-1 && f->ilf_size == 3) { return 1; Index: xfs-cmds/xfsprogs/repair/attr_repair.c =================================================================== --- xfs-cmds.orig/xfsprogs/repair/attr_repair.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/repair/attr_repair.c 2008-12-06 20:05:49.000000000 +0100 @@ -840,8 +840,8 @@ bno = blkmap_get(blkmap, 0); if ( bno == NULLDFSBNO ) { - if (dip->di_core.di_aformat == XFS_DINODE_FMT_EXTENTS && - be16_to_cpu(dip->di_core.di_anextents) == 0) + if (dip->di_aformat == XFS_DINODE_FMT_EXTENTS && + be16_to_cpu(dip->di_anextents) == 0) return(0); /* the kernel can handle this state */ do_warn(_("block 0 of inode %llu attribute fork is missing\n"), ino); @@ -958,7 +958,7 @@ int *repair) /* returned if we did repair */ { int err; - __u8 aformat = dip->di_core.di_aformat; + __u8 aformat = dip->di_aformat; xfs_attr_shortform_t *asf; asf = (xfs_attr_shortform_t *) XFS_DFORK_APTR(dip); Index: xfs-cmds/xfsprogs/repair/dino_chunks.c =================================================================== --- xfs-cmds.orig/xfsprogs/repair/dino_chunks.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/repair/dino_chunks.c 2008-12-06 20:05:49.000000000 +0100 @@ -810,9 +810,9 @@ * store on-disk nlink count for comparing in phase 7 */ set_inode_disk_nlinks(ino_rec, irec_offset, - dino->di_core.di_version > XFS_DINODE_VERSION_1 - ? be32_to_cpu(dino->di_core.di_nlink) - : be16_to_cpu(dino->di_core.di_onlink)); + dino->di_version > 1 + ? be32_to_cpu(dino->di_nlink) + : be16_to_cpu(dino->di_onlink)); } else { set_inode_free(ino_rec, irec_offset); Index: xfs-cmds/xfsprogs/repair/dinode.c =================================================================== --- xfs-cmds.orig/xfsprogs/repair/dinode.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/repair/dinode.c 2008-12-06 20:05:49.000000000 +0100 @@ -41,29 +41,29 @@ */ /* ARGSUSED */ int -calc_attr_offset(xfs_mount_t *mp, xfs_dinode_t *dino) +calc_attr_offset(xfs_mount_t *mp, xfs_dinode_t *dip) { - xfs_dinode_core_t *dinoc = &dino->di_core; - int offset = ((__psint_t) &dino->di_u) - - (__psint_t)dino; + char *dfork = XFS_DFORK_DPTR(dip); + xfs_bmdr_block_t *bmdr = (xfs_bmdr_block_t *)dfork; + int offset = ((__psint_t)dfork) - (__psint_t)dip; /* * don't worry about alignment when calculating offset * because the data fork is already 8-byte aligned */ - switch (dinoc->di_format) { + switch (dip->di_format) { case XFS_DINODE_FMT_DEV: offset += sizeof(xfs_dev_t); break; case XFS_DINODE_FMT_LOCAL: - offset += be64_to_cpu(dinoc->di_size); + offset += be64_to_cpu(dip->di_size); break; case XFS_DINODE_FMT_EXTENTS: - offset += be32_to_cpu(dinoc->di_nextents) * + offset += be32_to_cpu(dip->di_nextents) * sizeof(xfs_bmbt_rec_t); break; case XFS_DINODE_FMT_BTREE: - offset += be16_to_cpu(dino->di_u.di_bmbt.bb_numrecs) * + offset += be16_to_cpu(bmdr->bb_numrecs) * sizeof(xfs_bmbt_rec_t); break; default: @@ -77,11 +77,9 @@ /* ARGSUSED */ int -clear_dinode_attr(xfs_mount_t *mp, xfs_dinode_t *dino, xfs_ino_t ino_num) +clear_dinode_attr(xfs_mount_t *mp, xfs_dinode_t *dip, xfs_ino_t ino_num) { - xfs_dinode_core_t *dinoc = &dino->di_core; - - ASSERT(dinoc->di_forkoff != 0); + ASSERT(dip->di_forkoff != 0); if (!no_modify) fprintf(stderr, _("clearing inode %llu attributes\n"), @@ -90,16 +88,16 @@ fprintf(stderr, _("would have cleared inode %llu attributes\n"), (unsigned long long)ino_num); - if (be16_to_cpu(dinoc->di_anextents) != 0) { + if (dip->di_anextents) { if (no_modify) - return(1); - dinoc->di_anextents = cpu_to_be16(0); + return 1; + dip->di_anextents = 0; } - if (dinoc->di_aformat != XFS_DINODE_FMT_EXTENTS) { + if (dip->di_aformat != XFS_DINODE_FMT_EXTENTS) { if (no_modify) - return(1); - dinoc->di_aformat = XFS_DINODE_FMT_EXTENTS; + return 1; + dip->di_aformat = XFS_DINODE_FMT_EXTENTS; } /* get rid of the fork by clearing forkoff */ @@ -115,168 +113,138 @@ if (!no_modify) { xfs_attr_shortform_t *asf = (xfs_attr_shortform_t *) - XFS_DFORK_APTR(dino); + XFS_DFORK_APTR(dip); asf->hdr.totsize = cpu_to_be16(sizeof(xfs_attr_sf_hdr_t)); asf->hdr.count = 0; - dinoc->di_forkoff = 0; /* got to do this after asf is set */ + dip->di_forkoff = 0; /* got to do this after asf is set */ } /* * always returns 1 since the fork gets zapped */ - return(1); + return 1; } /* ARGSUSED */ int -clear_dinode_core(xfs_dinode_core_t *dinoc, xfs_ino_t ino_num) +clear_dinode_core(xfs_dinode_t *dip, xfs_ino_t ino_num) { int dirty = 0; - if (be16_to_cpu(dinoc->di_magic) != XFS_DINODE_MAGIC) { + if (be16_to_cpu(dip->di_magic) != XFS_DINODE_MAGIC) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_magic = cpu_to_be16(XFS_DINODE_MAGIC); + return 1; + dip->di_magic = cpu_to_be16(XFS_DINODE_MAGIC); } - if (!XFS_DINODE_GOOD_VERSION(dinoc->di_version) || - (!fs_inode_nlink && dinoc->di_version > XFS_DINODE_VERSION_1)) { + if (!XFS_DINODE_GOOD_VERSION(dip->di_version) || + (!fs_inode_nlink && dip->di_version > 1)) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_version = (fs_inode_nlink) ? XFS_DINODE_VERSION_2 - : XFS_DINODE_VERSION_1; + return 1; + dip->di_version = (fs_inode_nlink) ? 2 : 1; } - if (be16_to_cpu(dinoc->di_mode) != 0) { + if (dip->di_mode) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_mode = 0; + return 1; + dip->di_mode = 0; } - if (be16_to_cpu(dinoc->di_flags) != 0) { + if (dip->di_flags) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_flags = 0; + return 1; + dip->di_flags = 0; } - if (be32_to_cpu(dinoc->di_dmevmask) != 0) { + if (dip->di_dmevmask) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_dmevmask = 0; + return 1; + dip->di_dmevmask = 0; } - if (dinoc->di_forkoff != 0) { + if (dip->di_forkoff) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_forkoff = 0; + return 1; + dip->di_forkoff = 0; } - if (dinoc->di_format != XFS_DINODE_FMT_EXTENTS) { + if (dip->di_format != XFS_DINODE_FMT_EXTENTS) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_format = XFS_DINODE_FMT_EXTENTS; + return 1; + dip->di_format = XFS_DINODE_FMT_EXTENTS; } - if (dinoc->di_aformat != XFS_DINODE_FMT_EXTENTS) { + if (dip->di_aformat != XFS_DINODE_FMT_EXTENTS) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_aformat = XFS_DINODE_FMT_EXTENTS; + return 1; + dip->di_aformat = XFS_DINODE_FMT_EXTENTS; } - if (be64_to_cpu(dinoc->di_size) != 0) { + if (dip->di_size) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_size = 0; + return 1; + dip->di_size = 0; } - if (be64_to_cpu(dinoc->di_nblocks) != 0) { + if (dip->di_nblocks) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_nblocks = 0; + return 1; + dip->di_nblocks = 0; } - if (be16_to_cpu(dinoc->di_onlink) != 0) { + if (dip->di_onlink) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_onlink = 0; + return 1; + dip->di_onlink = 0; } - if (be32_to_cpu(dinoc->di_nextents) != 0) { + if (dip->di_nextents) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_nextents = 0; + return 1; + dip->di_nextents = 0; } - if (be16_to_cpu(dinoc->di_anextents) != 0) { + if (dip->di_anextents) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_anextents = 0; + return 1; + dip->di_anextents = 0; } - if (dinoc->di_version > XFS_DINODE_VERSION_1 && - be32_to_cpu(dinoc->di_nlink) != 0) { + if (dip->di_version > 1 && dip->di_nlink) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_nlink = 0; + return 1; + dip->di_nlink = 0; } - return(dirty); + return dirty; } /* ARGSUSED */ int -clear_dinode_unlinked(xfs_mount_t *mp, xfs_dinode_t *dino) +clear_dinode_unlinked(xfs_mount_t *mp, xfs_dinode_t *dip) { - if (be32_to_cpu(dino->di_next_unlinked) != NULLAGINO) { + if (be32_to_cpu(dip->di_next_unlinked) != NULLAGINO) { if (!no_modify) - dino->di_next_unlinked = cpu_to_be32(NULLAGINO); - return(1); + dip->di_next_unlinked = cpu_to_be32(NULLAGINO); + return 1; } - return(0); + return 0; } /* @@ -285,17 +253,17 @@ * returns > zero if the inode has been altered while being cleared */ int -clear_dinode(xfs_mount_t *mp, xfs_dinode_t *dino, xfs_ino_t ino_num) +clear_dinode(xfs_mount_t *mp, xfs_dinode_t *dip, xfs_ino_t ino_num) { int dirty; - dirty = clear_dinode_core(&dino->di_core, ino_num); - dirty += clear_dinode_unlinked(mp, dino); + dirty = clear_dinode_core(dip, ino_num); + dirty += clear_dinode_unlinked(mp, dip); /* and clear the forks */ if (dirty && !no_modify) - memset(&dino->di_u, 0, XFS_LITINO(mp)); + memset(XFS_DFORK_DPTR(dip), 0, XFS_LITINO(mp)); return(dirty); } @@ -1354,11 +1322,11 @@ xfs_ino_t lino; lino = XFS_AGINO_TO_INO(mp, agno, ino); - if (whichfork == XFS_DATA_FORK && be64_to_cpu(dip->di_core.di_size) > - XFS_DFORK_DSIZE(dip, mp)) { + if (whichfork == XFS_DATA_FORK && + be64_to_cpu(dip->di_size) > XFS_DFORK_DSIZE(dip, mp)) { do_warn( _("local inode %llu data fork is too large (size = %lld, max = %d)\n"), - lino, be64_to_cpu(dip->di_core.di_size), + lino, be64_to_cpu(dip->di_size), XFS_DFORK_DSIZE(dip, mp)); return(1); } else if (whichfork == XFS_ATTR_FORK) { @@ -1383,7 +1351,7 @@ } int -process_symlink_extlist(xfs_mount_t *mp, xfs_ino_t lino, xfs_dinode_t *dino) +process_symlink_extlist(xfs_mount_t *mp, xfs_ino_t lino, xfs_dinode_t *dip) { xfs_dfiloff_t expected_offset; xfs_bmbt_rec_t *rp; @@ -1392,23 +1360,23 @@ int i; int max_blocks; - if (be64_to_cpu(dino->di_core.di_size) <= XFS_DFORK_DSIZE(dino, mp)) { - if (dino->di_core.di_format == XFS_DINODE_FMT_LOCAL) + if (be64_to_cpu(dip->di_size) <= XFS_DFORK_DSIZE(dip, mp)) { + if (dip->di_format == XFS_DINODE_FMT_LOCAL) return 0; do_warn(_("mismatch between format (%d) and size (%lld) in " - "symlink ino %llu\n"), dino->di_core.di_format, - be64_to_cpu(dino->di_core.di_size), lino); + "symlink ino %llu\n"), dip->di_format, + be64_to_cpu(dip->di_size), lino); return 1; } - if (dino->di_core.di_format == XFS_DINODE_FMT_LOCAL) { + if (dip->di_format == XFS_DINODE_FMT_LOCAL) { do_warn(_("mismatch between format (%d) and size (%lld) in " - "symlink inode %llu\n"), dino->di_core.di_format, - be64_to_cpu(dino->di_core.di_size), lino); + "symlink inode %llu\n"), dip->di_format, + be64_to_cpu(dip->di_size), lino); return 1; } - rp = (xfs_bmbt_rec_t *)XFS_DFORK_DPTR(dino); - numrecs = be32_to_cpu(dino->di_core.di_nextents); + rp = (xfs_bmbt_rec_t *)XFS_DFORK_DPTR(dip); + numrecs = be32_to_cpu(dip->di_nextents); /* * the max # of extents in a symlink inode is equal to the @@ -1474,11 +1442,10 @@ process_symlink( xfs_mount_t *mp, xfs_ino_t lino, - xfs_dinode_t *dino, + xfs_dinode_t *dip, blkmap_t *blkmap) { xfs_dfsbno_t fsbno; - xfs_dinode_core_t *dinoc = &dino->di_core; xfs_buf_t *bp = NULL; char *symlink, *cptr, *buf_data; int i, size, amountdone; @@ -1490,9 +1457,9 @@ * the inode is structurally ok so we don't have to check * for that */ - if (be64_to_cpu(dinoc->di_size) >= MAXPATHLEN) { + if (be64_to_cpu(dip->di_size) >= MAXPATHLEN) { do_warn(_("symlink in inode %llu too long (%lld chars)\n"), - lino, be64_to_cpu(dinoc->di_size)); + lino, be64_to_cpu(dip->di_size)); return(1); } @@ -1501,13 +1468,13 @@ * get symlink contents into data area */ symlink = &data[0]; - if (be64_to_cpu(dinoc->di_size) <= XFS_DFORK_DSIZE(dino, mp)) { + if (be64_to_cpu(dip->di_size) <= XFS_DFORK_DSIZE(dip, mp)) { /* * local symlink, just copy the symlink out of the * inode into the data area */ - memmove(symlink, XFS_DFORK_DPTR(dino), - be64_to_cpu(dinoc->di_size)); + memmove(symlink, XFS_DFORK_DPTR(dip), + be64_to_cpu(dip->di_size)); } else { /* * stored in a meta-data file, have to bmap one block @@ -1516,7 +1483,7 @@ i = size = amountdone = 0; cptr = symlink; - while (amountdone < be64_to_cpu(dinoc->di_size)) { + while (amountdone < be64_to_cpu(dip->di_size)) { fsbno = blkmap_get(blkmap, i); if (fsbno != NULLDFSBNO) bp = libxfs_readbuf(mp->m_dev, @@ -1530,7 +1497,7 @@ } buf_data = (char *)XFS_BUF_PTR(bp); - size = MIN(be64_to_cpu(dinoc->di_size) - amountdone, + size = MIN(be64_to_cpu(dip->di_size) - amountdone, XFS_FSB_TO_BB(mp, 1) * BBSIZE); memmove(cptr, buf_data, size); cptr += size; @@ -1539,12 +1506,12 @@ libxfs_putbuf(bp); } } - data[be64_to_cpu(dinoc->di_size)] = '\0'; + data[be64_to_cpu(dip->di_size)] = '\0'; /* * check for nulls */ - if (null_check(symlink, be64_to_cpu(dinoc->di_size))) { + if (null_check(symlink, be64_to_cpu(dip->di_size))) { do_warn( _("found illegal null character in symlink inode %llu\n"), lino); @@ -1554,7 +1521,7 @@ /* * check for any component being too long */ - if (be64_to_cpu(dinoc->di_size) >= MAXNAMELEN) { + if (be64_to_cpu(dip->di_size) >= MAXNAMELEN) { cptr = strchr(symlink, '/'); while (cptr != NULL) { @@ -1585,7 +1552,7 @@ */ static int process_misc_ino_types(xfs_mount_t *mp, - xfs_dinode_t *dino, + xfs_dinode_t *dip, xfs_ino_t lino, int type) { @@ -1602,27 +1569,27 @@ /* * must also have a zero size */ - if (be64_to_cpu(dino->di_core.di_size) != 0) { + if (be64_to_cpu(dip->di_size) != 0) { switch (type) { case XR_INO_CHRDEV: do_warn(_("size of character device inode %llu != 0 " "(%lld bytes)\n"), lino, - be64_to_cpu(dino->di_core.di_size)); + be64_to_cpu(dip->di_size)); break; case XR_INO_BLKDEV: do_warn(_("size of block device inode %llu != 0 " "(%lld bytes)\n"), lino, - be64_to_cpu(dino->di_core.di_size)); + be64_to_cpu(dip->di_size)); break; case XR_INO_SOCK: do_warn(_("size of socket inode %llu != 0 " "(%lld bytes)\n"), lino, - be64_to_cpu(dino->di_core.di_size)); + be64_to_cpu(dip->di_size)); break; case XR_INO_FIFO: do_warn(_("size of fifo inode %llu != 0 " "(%lld bytes)\n"), lino, - be64_to_cpu(dino->di_core.di_size)); + be64_to_cpu(dip->di_size)); break; default: do_warn(_("Internal error - process_misc_ino_types, " @@ -1641,7 +1608,7 @@ { /* * you can not enforce all misc types have zero data fork blocks - * by checking dino->di_core.di_nblocks because atotblocks (attribute + * by checking dip->di_nblocks because atotblocks (attribute * blocks) are part of nblocks. We must check this later when atotblocks * has been calculated or by doing a simple check that anExtents == 0. * We must also guarantee that totblocks is 0. Thus nblocks checking @@ -1680,50 +1647,50 @@ static inline int dinode_fmt( - xfs_dinode_core_t *dinoc) + xfs_dinode_t *dip) { - return be16_to_cpu(dinoc->di_mode) & S_IFMT; + return be16_to_cpu(dip->di_mode) & S_IFMT; } static inline void change_dinode_fmt( - xfs_dinode_core_t *dinoc, + xfs_dinode_t *dip, int new_fmt) { - int mode = be16_to_cpu(dinoc->di_mode); + int mode = be16_to_cpu(dip->di_mode); ASSERT((new_fmt & ~S_IFMT) == 0); mode &= ~S_IFMT; mode |= new_fmt; - dinoc->di_mode = cpu_to_be16(mode); + dip->di_mode = cpu_to_be16(mode); } static int check_dinode_mode_format( - xfs_dinode_core_t *dinoc) + xfs_dinode_t *dip) { - if (dinoc->di_format >= XFS_DINODE_FMT_UUID) + if (dip->di_format >= XFS_DINODE_FMT_UUID) return -1; /* FMT_UUID is not used */ - switch (dinode_fmt(dinoc)) { + switch (dinode_fmt(dip)) { case S_IFIFO: case S_IFCHR: case S_IFBLK: case S_IFSOCK: - return (dinoc->di_format != XFS_DINODE_FMT_DEV) ? -1 : 0; + return (dip->di_format != XFS_DINODE_FMT_DEV) ? -1 : 0; case S_IFDIR: - return (dinoc->di_format < XFS_DINODE_FMT_LOCAL || - dinoc->di_format > XFS_DINODE_FMT_BTREE) ? -1 : 0; + return (dip->di_format < XFS_DINODE_FMT_LOCAL || + dip->di_format > XFS_DINODE_FMT_BTREE) ? -1 : 0; case S_IFREG: - return (dinoc->di_format < XFS_DINODE_FMT_EXTENTS || - dinoc->di_format > XFS_DINODE_FMT_BTREE) ? -1 : 0; + return (dip->di_format < XFS_DINODE_FMT_EXTENTS || + dip->di_format > XFS_DINODE_FMT_BTREE) ? -1 : 0; case S_IFLNK: - return (dinoc->di_format < XFS_DINODE_FMT_LOCAL || - dinoc->di_format > XFS_DINODE_FMT_EXTENTS) ? -1 : 0; + return (dip->di_format < XFS_DINODE_FMT_LOCAL || + dip->di_format > XFS_DINODE_FMT_EXTENTS) ? -1 : 0; default: ; } @@ -1738,7 +1705,7 @@ static int process_check_sb_inodes( xfs_mount_t *mp, - xfs_dinode_core_t *dinoc, + xfs_dinode_t *dip, xfs_ino_t lino, int *type, int *dirty) @@ -1746,11 +1713,11 @@ if (lino == mp->m_sb.sb_rootino) { if (*type != XR_INO_DIR) { do_warn(_("root inode %llu has bad type 0x%x\n"), - lino, dinode_fmt(dinoc)); + lino, dinode_fmt(dip)); *type = XR_INO_DIR; if (!no_modify) { do_warn(_("resetting to directory\n")); - change_dinode_fmt(dinoc, S_IFDIR); + change_dinode_fmt(dip, S_IFDIR); *dirty = 1; } else do_warn(_("would reset to directory\n")); @@ -1760,7 +1727,7 @@ if (lino == mp->m_sb.sb_uquotino) { if (*type != XR_INO_DATA) { do_warn(_("user quota inode %llu has bad type 0x%x\n"), - lino, dinode_fmt(dinoc)); + lino, dinode_fmt(dip)); mp->m_sb.sb_uquotino = NULLFSINO; return 1; } @@ -1769,7 +1736,7 @@ if (lino == mp->m_sb.sb_gquotino) { if (*type != XR_INO_DATA) { do_warn(_("group quota inode %llu has bad type 0x%x\n"), - lino, dinode_fmt(dinoc)); + lino, dinode_fmt(dip)); mp->m_sb.sb_gquotino = NULLFSINO; return 1; } @@ -1778,18 +1745,18 @@ if (lino == mp->m_sb.sb_rsumino) { if (*type != XR_INO_RTSUM) { do_warn(_("realtime summary inode %llu has bad type 0x%x, "), - lino, dinode_fmt(dinoc)); + lino, dinode_fmt(dip)); if (!no_modify) { do_warn(_("resetting to regular file\n")); - change_dinode_fmt(dinoc, S_IFREG); + change_dinode_fmt(dip, S_IFREG); *dirty = 1; } else { do_warn(_("would reset to regular file\n")); } } - if (mp->m_sb.sb_rblocks == 0 && dinoc->di_nextents != 0) { + if (mp->m_sb.sb_rblocks == 0 && dip->di_nextents != 0) { do_warn(_("bad # of extents (%u) for realtime summary inode %llu\n"), - be32_to_cpu(dinoc->di_nextents), lino); + be32_to_cpu(dip->di_nextents), lino); return 1; } return 0; @@ -1797,18 +1764,18 @@ if (lino == mp->m_sb.sb_rbmino) { if (*type != XR_INO_RTBITMAP) { do_warn(_("realtime bitmap inode %llu has bad type 0x%x, "), - lino, dinode_fmt(dinoc)); + lino, dinode_fmt(dip)); if (!no_modify) { do_warn(_("resetting to regular file\n")); - change_dinode_fmt(dinoc, S_IFREG); + change_dinode_fmt(dip, S_IFREG); *dirty = 1; } else { do_warn(_("would reset to regular file\n")); } } - if (mp->m_sb.sb_rblocks == 0 && dinoc->di_nextents != 0) { + if (mp->m_sb.sb_rblocks == 0 && dip->di_nextents != 0) { do_warn(_("bad # of extents (%u) for realtime bitmap inode %llu\n"), - be32_to_cpu(dinoc->di_nextents), lino); + be32_to_cpu(dip->di_nextents), lino); return 1; } return 0; @@ -1830,21 +1797,20 @@ static int process_check_inode_sizes( xfs_mount_t *mp, - xfs_dinode_t *dino, + xfs_dinode_t *dip, xfs_ino_t lino, int type) { - xfs_dinode_core_t *dinoc = &dino->di_core; - xfs_fsize_t size = be64_to_cpu(dinoc->di_size); + xfs_fsize_t size = be64_to_cpu(dip->di_size); switch (type) { case XR_INO_DIR: - if (size <= XFS_DFORK_DSIZE(dino, mp) && - dinoc->di_format != XFS_DINODE_FMT_LOCAL) { + if (size <= XFS_DFORK_DSIZE(dip, mp) && + dip->di_format != XFS_DINODE_FMT_LOCAL) { do_warn(_("mismatch between format (%d) and size " "(%lld) in directory ino %llu\n"), - dinoc->di_format, size, lino); + dip->di_format, size, lino); return 1; } if (size > XFS_DIR2_LEAF_OFFSET) { @@ -1855,7 +1821,7 @@ break; case XR_INO_SYMLINK: - if (process_symlink_extlist(mp, lino, dino)) { + if (process_symlink_extlist(mp, lino, dip)) { do_warn(_("bad data fork in symlink %llu\n"), lino); return 1; } @@ -1866,7 +1832,7 @@ case XR_INO_SOCK: /* fall through to FIFO case ... */ case XR_INO_MOUNTPOINT: /* fall through to FIFO case ... */ case XR_INO_FIFO: - if (process_misc_ino_types(mp, dino, lino, type)) + if (process_misc_ino_types(mp, dip, lino, type)) return 1; break; @@ -1914,17 +1880,17 @@ static int process_check_inode_forkoff( xfs_mount_t *mp, - xfs_dinode_core_t *dinoc, + xfs_dinode_t *dip, xfs_ino_t lino) { - if (dinoc->di_forkoff == 0) + if (dip->di_forkoff == 0) return 0; - switch (dinoc->di_format) { + switch (dip->di_format) { case XFS_DINODE_FMT_DEV: - if (dinoc->di_forkoff != (roundup(sizeof(xfs_dev_t), 8) >> 3)) { + if (dip->di_forkoff != (roundup(sizeof(xfs_dev_t), 8) >> 3)) { do_warn(_("bad attr fork offset %d in dev inode %llu, " - "should be %d\n"), dinoc->di_forkoff, lino, + "should be %d\n"), dip->di_forkoff, lino, (int)(roundup(sizeof(xfs_dev_t), 8) >> 3)); return 1; } @@ -1932,15 +1898,15 @@ case XFS_DINODE_FMT_LOCAL: /* fall through ... */ case XFS_DINODE_FMT_EXTENTS: /* fall through ... */ case XFS_DINODE_FMT_BTREE: - if (dinoc->di_forkoff >= (XFS_LITINO(mp) >> 3)) { + if (dip->di_forkoff >= (XFS_LITINO(mp) >> 3)) { do_warn(_("bad attr fork offset %d in inode %llu, " - "max=%d\n"), dinoc->di_forkoff, lino, + "max=%d\n"), dip->di_forkoff, lino, XFS_LITINO(mp) >> 3); return 1; } break; default: - do_error(_("unexpected inode format %d\n"), dinoc->di_format); + do_error(_("unexpected inode format %d\n"), dip->di_format); break; } return 0; @@ -1951,24 +1917,24 @@ */ static int process_inode_blocks_and_extents( - xfs_dinode_core_t *dinoc, + xfs_dinode_t *dip, xfs_drfsbno_t nblocks, __uint64_t nextents, __uint64_t anextents, xfs_ino_t lino, int *dirty) { - if (nblocks != be64_to_cpu(dinoc->di_nblocks)) { + if (nblocks != be64_to_cpu(dip->di_nblocks)) { if (!no_modify) { do_warn(_("correcting nblocks for inode %llu, " "was %llu - counted %llu\n"), lino, - be64_to_cpu(dinoc->di_nblocks), nblocks); - dinoc->di_nblocks = cpu_to_be64(nblocks); + be64_to_cpu(dip->di_nblocks), nblocks); + dip->di_nblocks = cpu_to_be64(nblocks); *dirty = 1; } else { do_warn(_("bad nblocks %llu for inode %llu, " "would reset to %llu\n"), - be64_to_cpu(dinoc->di_nblocks), lino, nblocks); + be64_to_cpu(dip->di_nblocks), lino, nblocks); } } @@ -1977,16 +1943,16 @@ nextents, lino); return 1; } - if (nextents != be32_to_cpu(dinoc->di_nextents)) { + if (nextents != be32_to_cpu(dip->di_nextents)) { if (!no_modify) { do_warn(_("correcting nextents for inode %llu, " "was %d - counted %llu\n"), lino, - be32_to_cpu(dinoc->di_nextents), nextents); - dinoc->di_nextents = cpu_to_be32(nextents); + be32_to_cpu(dip->di_nextents), nextents); + dip->di_nextents = cpu_to_be32(nextents); *dirty = 1; } else { do_warn(_("bad nextents %d for inode %llu, would reset " - "to %llu\n"), be32_to_cpu(dinoc->di_nextents), + "to %llu\n"), be32_to_cpu(dip->di_nextents), lino, nextents); } } @@ -1996,16 +1962,16 @@ anextents, lino); return 1; } - if (anextents != be16_to_cpu(dinoc->di_anextents)) { + if (anextents != be16_to_cpu(dip->di_anextents)) { if (!no_modify) { do_warn(_("correcting anextents for inode %llu, " "was %d - counted %llu\n"), lino, - be16_to_cpu(dinoc->di_anextents), anextents); - dinoc->di_anextents = cpu_to_be16(anextents); + be16_to_cpu(dip->di_anextents), anextents); + dip->di_anextents = cpu_to_be16(anextents); *dirty = 1; } else { do_warn(_("bad anextents %d for inode %llu, would reset" - " to %llu\n"), be16_to_cpu(dinoc->di_anextents), + " to %llu\n"), be16_to_cpu(dip->di_anextents), lino, anextents); } } @@ -2020,7 +1986,7 @@ xfs_mount_t *mp, xfs_agnumber_t agno, xfs_agino_t ino, - xfs_dinode_t *dino, + xfs_dinode_t *dip, int type, int *dirty, xfs_drfsbno_t *totblocks, @@ -2028,30 +1994,29 @@ blkmap_t **dblkmap, int check_dups) { - xfs_dinode_core_t *dinoc = &dino->di_core; xfs_ino_t lino = XFS_AGINO_TO_INO(mp, agno, ino); int err = 0; - *nextents = be32_to_cpu(dinoc->di_nextents); - if (*nextents > be64_to_cpu(dinoc->di_nblocks)) + *nextents = be32_to_cpu(dip->di_nextents); + if (*nextents > be64_to_cpu(dip->di_nblocks)) *nextents = 1; - if (dinoc->di_format != XFS_DINODE_FMT_LOCAL && type != XR_INO_RTDATA) + if (dip->di_format != XFS_DINODE_FMT_LOCAL && type != XR_INO_RTDATA) *dblkmap = blkmap_alloc(*nextents); *nextents = 0; - switch (dinoc->di_format) { + switch (dip->di_format) { case XFS_DINODE_FMT_LOCAL: - err = process_lclinode(mp, agno, ino, dino, XFS_DATA_FORK); + err = process_lclinode(mp, agno, ino, dip, XFS_DATA_FORK); *totblocks = 0; break; case XFS_DINODE_FMT_EXTENTS: - err = process_exinode(mp, agno, ino, dino, type, dirty, + err = process_exinode(mp, agno, ino, dip, type, dirty, totblocks, nextents, dblkmap, XFS_DATA_FORK, check_dups); break; case XFS_DINODE_FMT_BTREE: - err = process_btinode(mp, agno, ino, dino, type, dirty, + err = process_btinode(mp, agno, ino, dip, type, dirty, totblocks, nextents, dblkmap, XFS_DATA_FORK, check_dups); break; @@ -2060,13 +2025,13 @@ break; default: do_error(_("unknown format %d, ino %llu (mode = %d)\n"), - dinoc->di_format, lino, be16_to_cpu(dinoc->di_mode)); + dip->di_format, lino, be16_to_cpu(dip->di_mode)); } if (err) { do_warn(_("bad data fork in inode %llu\n"), lino); if (!no_modify) { - *dirty += clear_dinode(mp, dino, lino); + *dirty += clear_dinode(mp, dip, lino); ASSERT(*dirty > 0); } return 1; @@ -2078,18 +2043,18 @@ * re-process data fork to set bitmap since the * bitmap wasn't set the first time through */ - switch (dinoc->di_format) { + switch (dip->di_format) { case XFS_DINODE_FMT_LOCAL: - err = process_lclinode(mp, agno, ino, dino, + err = process_lclinode(mp, agno, ino, dip, XFS_DATA_FORK); break; case XFS_DINODE_FMT_EXTENTS: - err = process_exinode(mp, agno, ino, dino, type, + err = process_exinode(mp, agno, ino, dip, type, dirty, totblocks, nextents, dblkmap, XFS_DATA_FORK, 0); break; case XFS_DINODE_FMT_BTREE: - err = process_btinode(mp, agno, ino, dino, type, + err = process_btinode(mp, agno, ino, dip, type, dirty, totblocks, nextents, dblkmap, XFS_DATA_FORK, 0); break; @@ -2098,8 +2063,8 @@ break; default: do_error(_("unknown format %d, ino %llu (mode = %d)\n"), - dinoc->di_format, lino, - be16_to_cpu(dinoc->di_mode)); + dip->di_format, lino, + be16_to_cpu(dip->di_mode)); } if (no_modify && err != 0) @@ -2118,7 +2083,7 @@ xfs_mount_t *mp, xfs_agnumber_t agno, xfs_agino_t ino, - xfs_dinode_t *dino, + xfs_dinode_t *dip, int type, int *dirty, xfs_drfsbno_t *atotblocks, @@ -2127,20 +2092,19 @@ int extra_attr_check, int *retval) { - xfs_dinode_core_t *dinoc = &dino->di_core; xfs_ino_t lino = XFS_AGINO_TO_INO(mp, agno, ino); blkmap_t *ablkmap = NULL; int repair = 0; int err; - if (!XFS_DFORK_Q(dino)) { + if (!XFS_DFORK_Q(dip)) { *anextents = 0; - if (dinoc->di_aformat != XFS_DINODE_FMT_EXTENTS) { + if (dip->di_aformat != XFS_DINODE_FMT_EXTENTS) { do_warn(_("bad attribute format %d in inode %llu, "), - dinoc->di_aformat, lino); + dip->di_aformat, lino); if (!no_modify) { do_warn(_("resetting value\n")); - dinoc->di_aformat = XFS_DINODE_FMT_EXTENTS; + dip->di_aformat = XFS_DINODE_FMT_EXTENTS; *dirty = 1; } else do_warn(_("would reset value\n")); @@ -2148,33 +2112,33 @@ return 0; } - *anextents = be16_to_cpu(dinoc->di_anextents); - if (*anextents > be64_to_cpu(dinoc->di_nblocks)) + *anextents = be16_to_cpu(dip->di_anextents); + if (*anextents > be64_to_cpu(dip->di_nblocks)) *anextents = 1; - switch (dinoc->di_aformat) { + switch (dip->di_aformat) { case XFS_DINODE_FMT_LOCAL: *anextents = 0; *atotblocks = 0; - err = process_lclinode(mp, agno, ino, dino, XFS_ATTR_FORK); + err = process_lclinode(mp, agno, ino, dip, XFS_ATTR_FORK); break; case XFS_DINODE_FMT_EXTENTS: ablkmap = blkmap_alloc(*anextents); *anextents = 0; - err = process_exinode(mp, agno, ino, dino, type, dirty, + err = process_exinode(mp, agno, ino, dip, type, dirty, atotblocks, anextents, &ablkmap, XFS_ATTR_FORK, check_dups); break; case XFS_DINODE_FMT_BTREE: ablkmap = blkmap_alloc(*anextents); *anextents = 0; - err = process_btinode(mp, agno, ino, dino, type, dirty, + err = process_btinode(mp, agno, ino, dip, type, dirty, atotblocks, anextents, &ablkmap, XFS_ATTR_FORK, check_dups); break; default: do_warn(_("illegal attribute format %d, ino %llu\n"), - dinoc->di_aformat, lino); + dip->di_aformat, lino); err = 1; break; } @@ -2193,11 +2157,11 @@ if (!no_modify) { if (delete_attr_ok) { do_warn(_(", clearing attr fork\n")); - *dirty += clear_dinode_attr(mp, dino, lino); - dinoc->di_aformat = XFS_DINODE_FMT_LOCAL; + *dirty += clear_dinode_attr(mp, dip, lino); + dip->di_aformat = XFS_DINODE_FMT_LOCAL; } else { do_warn("\n"); - *dirty += clear_dinode(mp, dino, lino); + *dirty += clear_dinode(mp, dip, lino); } ASSERT(*dirty > 0); } else { @@ -2213,24 +2177,24 @@ } if (check_dups) { - switch (dinoc->di_aformat) { + switch (dip->di_aformat) { case XFS_DINODE_FMT_LOCAL: - err = process_lclinode(mp, agno, ino, dino, + err = process_lclinode(mp, agno, ino, dip, XFS_ATTR_FORK); break; case XFS_DINODE_FMT_EXTENTS: - err = process_exinode(mp, agno, ino, dino, + err = process_exinode(mp, agno, ino, dip, type, dirty, atotblocks, anextents, &ablkmap, XFS_ATTR_FORK, 0); break; case XFS_DINODE_FMT_BTREE: - err = process_btinode(mp, agno, ino, dino, + err = process_btinode(mp, agno, ino, dip, type, dirty, atotblocks, anextents, &ablkmap, XFS_ATTR_FORK, 0); break; default: do_error(_("illegal attribute fmt %d, ino %llu\n"), - dinoc->di_aformat, lino); + dip->di_aformat, lino); } if (no_modify && err != 0) { @@ -2247,14 +2211,14 @@ /* get this only in phase 3, not in both phase 3 and 4 */ if (extra_attr_check && - process_attributes(mp, lino, dino, ablkmap, &repair)) { + process_attributes(mp, lino, dip, ablkmap, &repair)) { do_warn(_("problem with attribute contents in inode %llu\n"), lino); if (!repair) { /* clear attributes if not done already */ if (!no_modify) { - *dirty += clear_dinode_attr(mp, dino, lino); - dinoc->di_aformat = XFS_DINODE_FMT_LOCAL; + *dirty += clear_dinode_attr(mp, dip, lino); + dip->di_aformat = XFS_DINODE_FMT_LOCAL; } else { do_warn(_("would clear attr fork\n")); } @@ -2277,18 +2241,18 @@ static int process_check_inode_nlink_version( - xfs_dinode_core_t *dinoc, + xfs_dinode_t *dip, xfs_ino_t lino) { int dirty = 0; - if (dinoc->di_version > XFS_DINODE_VERSION_1 && !fs_inode_nlink) { + if (dip->di_version > 1 && !fs_inode_nlink) { /* * do we have a fs/inode version mismatch with a valid * version 2 inode here that has to stay version 2 or * lose links? */ - if (be32_to_cpu(dinoc->di_nlink) > XFS_MAXLINK_1) { + if (be32_to_cpu(dip->di_nlink) > XFS_MAXLINK_1) { /* * yes. are nlink inodes allowed? */ @@ -2318,17 +2282,17 @@ if (!no_modify) { do_warn(_("converting back to version 1,\n" "this may destroy %d links\n"), - be32_to_cpu(dinoc->di_nlink) - + be32_to_cpu(dip->di_nlink) - XFS_MAXLINK_1); - dinoc->di_version = XFS_DINODE_VERSION_1; - dinoc->di_nlink = cpu_to_be32(XFS_MAXLINK_1); - dinoc->di_onlink = cpu_to_be16(XFS_MAXLINK_1); + dip->di_version = 1; + dip->di_nlink = cpu_to_be32(XFS_MAXLINK_1); + dip->di_onlink = cpu_to_be16(XFS_MAXLINK_1); dirty = 1; } else { do_warn(_("would convert back to version 1,\n" "\tthis might destroy %d links\n"), - be32_to_cpu(dinoc->di_nlink) - + be32_to_cpu(dip->di_nlink) - XFS_MAXLINK_1); } } @@ -2344,9 +2308,9 @@ do_warn(_("found version 2 inode %llu, "), lino); if (!no_modify) { do_warn(_("converting back to version 1\n")); - dinoc->di_version = XFS_DINODE_VERSION_1; - dinoc->di_onlink = cpu_to_be16( - be32_to_cpu(dinoc->di_nlink)); + dip->di_version = 1; + dip->di_onlink = cpu_to_be16( + be32_to_cpu(dip->di_nlink)); dirty = 1; } else { do_warn(_("would convert back to version 1\n")); @@ -2359,18 +2323,17 @@ * to stay a version 2 inode. it should have a zero * onlink field, so clear it. */ - if (dinoc->di_version > XFS_DINODE_VERSION_1 && - dinoc->di_onlink != 0 && fs_inode_nlink > 0) { + if (dip->di_version > 1 && dip->di_onlink != 0 && fs_inode_nlink > 0) { if (!no_modify) { do_warn(_("clearing obsolete nlink field in " "version 2 inode %llu, was %d, now 0\n"), - lino, be16_to_cpu(dinoc->di_onlink)); - dinoc->di_onlink = 0; + lino, be16_to_cpu(dip->di_onlink)); + dip->di_onlink = 0; dirty = 1; } else { do_warn(_("would clear obsolete nlink field in " "version 2 inode %llu, currently %d\n"), - lino, be16_to_cpu(dinoc->di_onlink)); + lino, be16_to_cpu(dip->di_onlink)); } } return dirty; @@ -2388,7 +2351,7 @@ /* ARGSUSED */ int process_dinode_int(xfs_mount_t *mp, - xfs_dinode_t *dino, + xfs_dinode_t *dip, xfs_agnumber_t agno, xfs_agino_t ino, int was_free, /* 1 if inode is currently free */ @@ -2405,7 +2368,6 @@ { xfs_drfsbno_t totblocks = 0; xfs_drfsbno_t atotblocks = 0; - xfs_dinode_core_t *dinoc; int di_mode; int type; int retval = 0; @@ -2420,9 +2382,8 @@ *used = is_used; type = XR_INO_UNKNOWN; - dinoc = &dino->di_core; lino = XFS_AGINO_TO_INO(mp, agno, ino); - di_mode = be16_to_cpu(dinoc->di_mode); + di_mode = be16_to_cpu(dip->di_mode); /* * if in verify mode, don't modify the inode. @@ -2438,35 +2399,33 @@ */ ASSERT(uncertain == 0 || verify_mode != 0); - if (be16_to_cpu(dinoc->di_magic) != XFS_DINODE_MAGIC) { + if (be16_to_cpu(dip->di_magic) != XFS_DINODE_MAGIC) { retval = 1; if (!uncertain) do_warn(_("bad magic number 0x%x on inode %llu%c"), - be16_to_cpu(dinoc->di_magic), lino, + be16_to_cpu(dip->di_magic), lino, verify_mode ? '\n' : ','); if (!verify_mode) { if (!no_modify) { do_warn(_(" resetting magic number\n")); - dinoc->di_magic = cpu_to_be16(XFS_DINODE_MAGIC); + dip->di_magic = cpu_to_be16(XFS_DINODE_MAGIC); *dirty = 1; } else do_warn(_(" would reset magic number\n")); } } - if (!XFS_DINODE_GOOD_VERSION(dinoc->di_version) || - (!fs_inode_nlink && dinoc->di_version > XFS_DINODE_VERSION_1)) { + if (!XFS_DINODE_GOOD_VERSION(dip->di_version) || + (!fs_inode_nlink && dip->di_version > 1)) { retval = 1; if (!uncertain) do_warn(_("bad version number 0x%x on inode %llu%c"), - (__s8)dinoc->di_version, lino, + (__s8)dip->di_version, lino, verify_mode ? '\n' : ','); if (!verify_mode) { if (!no_modify) { do_warn(_(" resetting version number\n")); - dinoc->di_version = (fs_inode_nlink) ? - XFS_DINODE_VERSION_2 : - XFS_DINODE_VERSION_1; + dip->di_version = (fs_inode_nlink) ? 2 : 1; *dirty = 1; } else do_warn(_(" would reset version number\n")); @@ -2476,10 +2435,10 @@ /* * blow out of here if the inode size is < 0 */ - if ((xfs_fsize_t)be64_to_cpu(dinoc->di_size) < 0) { + if ((xfs_fsize_t)be64_to_cpu(dip->di_size) < 0) { if (!uncertain) do_warn(_("bad (negative) size %lld on inode %llu\n"), - be64_to_cpu(dinoc->di_size), lino); + be64_to_cpu(dip->di_size), lino); if (verify_mode) return 1; goto clear_bad_out; @@ -2500,7 +2459,7 @@ * set correctly */ if (!no_modify) - *dirty += clear_dinode(mp, dino, lino); + *dirty += clear_dinode(mp, dip, lino); *used = is_free; return 0; } @@ -2512,7 +2471,7 @@ do_warn(_("imap claims a free inode %llu is in use, "), lino); if (!no_modify) { do_warn(_("correcting imap and clearing inode\n")); - *dirty += clear_dinode(mp, dino, lino); + *dirty += clear_dinode(mp, dip, lino); retval = 1; } else do_warn(_("would correct imap and clear inode\n")); @@ -2529,7 +2488,7 @@ * free inodes since technically any format is legal * as we reset the inode when we re-use it. */ - if (di_mode != 0 && check_dinode_mode_format(dinoc) != 0) { + if (di_mode != 0 && check_dinode_mode_format(dip) != 0) { if (!uncertain) do_warn(_("bad inode format in inode %llu\n"), lino); if (verify_mode) @@ -2549,7 +2508,7 @@ * phase 4. Ugly. */ if (check_dups && !no_modify) - *dirty += clear_dinode_unlinked(mp, dino); + *dirty += clear_dinode_unlinked(mp, dip); /* set type and map type info */ @@ -2559,7 +2518,7 @@ *isa_dir = 1; break; case S_IFREG: - if (be16_to_cpu(dinoc->di_flags) & XFS_DIFLAG_REALTIME) + if (be16_to_cpu(dip->di_flags) & XFS_DIFLAG_REALTIME) type = XR_INO_RTDATA; else if (lino == mp->m_sb.sb_rbmino) type = XR_INO_RTBITMAP; @@ -2592,27 +2551,27 @@ /* * type checks for superblock inodes */ - if (process_check_sb_inodes(mp, dinoc, lino, &type, dirty) != 0) + if (process_check_sb_inodes(mp, dip, lino, &type, dirty) != 0) goto clear_bad_out; /* * only regular files with REALTIME or EXTSIZE flags set can have * extsize set, or directories with EXTSZINHERIT. */ - if (be32_to_cpu(dinoc->di_extsize) != 0) { + if (be32_to_cpu(dip->di_extsize) != 0) { if ((type == XR_INO_RTDATA) || - (type == XR_INO_DIR && (be16_to_cpu(dinoc->di_flags) & + (type == XR_INO_DIR && (be16_to_cpu(dip->di_flags) & XFS_DIFLAG_EXTSZINHERIT)) || - (type == XR_INO_DATA && (be16_to_cpu(dinoc->di_flags) & + (type == XR_INO_DATA && (be16_to_cpu(dip->di_flags) & XFS_DIFLAG_EXTSIZE))) { /* s'okay */ ; } else { do_warn(_("bad non-zero extent size %u for " "non-realtime/extsize inode %llu, "), - be32_to_cpu(dinoc->di_extsize), lino); + be32_to_cpu(dip->di_extsize), lino); if (!no_modify) { do_warn(_("resetting to zero\n")); - dinoc->di_extsize = 0; + dip->di_extsize = 0; *dirty = 1; } else do_warn(_("would reset to zero\n")); @@ -2622,19 +2581,19 @@ /* * general size/consistency checks: */ - if (process_check_inode_sizes(mp, dino, lino, type) != 0) + if (process_check_inode_sizes(mp, dip, lino, type) != 0) goto clear_bad_out; /* * check for illegal values of forkoff */ - if (process_check_inode_forkoff(mp, dinoc, lino) != 0) + if (process_check_inode_forkoff(mp, dip, lino) != 0) goto clear_bad_out; /* * check data fork -- if it's bad, clear the inode */ - if (process_inode_data_fork(mp, agno, ino, dino, type, dirty, + if (process_inode_data_fork(mp, agno, ino, dip, type, dirty, &totblocks, &nextents, &dblkmap, check_dups) != 0) goto bad_out; @@ -2642,7 +2601,7 @@ * check attribute fork if necessary. attributes are * always stored in the regular filesystem. */ - if (process_inode_attr_fork(mp, agno, ino, dino, type, dirty, + if (process_inode_attr_fork(mp, agno, ino, dip, type, dirty, &atotblocks, &anextents, check_dups, extra_attr_check, &retval)) goto bad_out; @@ -2656,7 +2615,7 @@ /* * correct space counters if required */ - if (process_inode_blocks_and_extents(dinoc, totblocks + atotblocks, + if (process_inode_blocks_and_extents(dip, totblocks + atotblocks, nextents, anextents, lino, dirty) != 0) goto clear_bad_out; @@ -2666,9 +2625,9 @@ switch (type) { case XR_INO_DIR: if (xfs_sb_version_hasdirv2(&mp->m_sb) ? - process_dir2(mp, lino, dino, ino_discovery, + process_dir2(mp, lino, dip, ino_discovery, dirty, "", parent, dblkmap) : - process_dir(mp, lino, dino, ino_discovery, + process_dir(mp, lino, dip, ino_discovery, dirty, "", parent, dblkmap)) { do_warn(_("problem with directory contents in " "inode %llu\n"), lino); @@ -2676,7 +2635,7 @@ } break; case XR_INO_SYMLINK: - if (process_symlink(mp, lino, dino, dblkmap) != 0) { + if (process_symlink(mp, lino, dip, dblkmap) != 0) { do_warn(_("problem with symbolic link in inode %llu\n"), lino); goto clear_bad_out; @@ -2694,13 +2653,13 @@ * just leave nlinks alone. even if it's set wrong, * it'll be reset when read in. */ - *dirty += process_check_inode_nlink_version(dinoc, lino); + *dirty += process_check_inode_nlink_version(dip, lino); return retval; clear_bad_out: if (!no_modify) { - *dirty += clear_dinode(mp, dino, lino); + *dirty += clear_dinode(mp, dip, lino); ASSERT(*dirty > 0); } bad_out: Index: xfs-cmds/xfsprogs/repair/dir.c =================================================================== --- xfs-cmds.orig/xfsprogs/repair/dir.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/repair/dir.c 2008-12-06 20:05:49.000000000 +0100 @@ -107,7 +107,7 @@ sf = (xfs_dir_shortform_t *)XFS_DFORK_DPTR(dip); max_size = XFS_DFORK_DSIZE(dip, mp); num_entries = sf->hdr.count; - ino_dir_size = be64_to_cpu(dip->di_core.di_size); + ino_dir_size = be64_to_cpu(dip->di_size); *repair = 0; ASSERT(ino_dir_size <= max_size); @@ -338,7 +338,7 @@ if (!no_modify) { tmp_elen = xfs_dir_sf_entsize_byentry(sf_entry); - be64_add_cpu(&dip->di_core.di_size, -tmp_elen); + be64_add_cpu(&dip->di_size, -tmp_elen); ino_dir_size -= tmp_elen; tmp_sfe = (xfs_dir_sf_entry_t *) @@ -425,7 +425,7 @@ ino, (__int64_t) ino_dir_size, (__int64_t)((__psint_t) next_sfe - (__psint_t) sf)); - dip->di_core.di_size = cpu_to_be64((__psint_t)next_sfe + dip->di_size = cpu_to_be64((__psint_t)next_sfe - (__psint_t)sf); *dino_dirty = 1; *repair = 1; @@ -954,7 +954,7 @@ return(fsbno); } - if (be64_to_cpu(dino->di_core.di_size) <= XFS_LBSIZE(mp)) + if (be64_to_cpu(dino->di_size) <= XFS_LBSIZE(mp)) return(fsbno); do { @@ -2551,7 +2551,7 @@ /* * sanity check inode size */ - if (be64_to_cpu(dip->di_core.di_size) < + if (be64_to_cpu(dip->di_size) < (da_cursor.greatest_bno + 1) * mp->m_sb.sb_blocksize) { if ((xfs_fsize_t) da_cursor.greatest_bno * mp->m_sb.sb_blocksize > UINT_MAX) { @@ -2565,9 +2565,9 @@ _("setting directory inode (%llu) size to %llu bytes, was %lld bytes\n"), ino, (xfs_dfiloff_t) (da_cursor.greatest_bno + 1) * mp->m_sb.sb_blocksize, - be64_to_cpu(dip->di_core.di_size)); + be64_to_cpu(dip->di_size)); - dip->di_core.di_size = cpu_to_be64((da_cursor.greatest_bno + 1) + dip->di_size = cpu_to_be64((da_cursor.greatest_bno + 1) * mp->m_sb.sb_blocksize); } return(0); @@ -2709,13 +2709,13 @@ * is only called ONCE so all the subordinate routines will * fix '.' and junk '..' if they're bogus. */ - if (be64_to_cpu(dip->di_core.di_size) <= XFS_DFORK_DSIZE(dip, mp)) { + if (be64_to_cpu(dip->di_size) <= XFS_DFORK_DSIZE(dip, mp)) { dot = 1; dotdot = 1; if (process_shortform_dir(mp, ino, dip, ino_discovery, dino_dirty, parent, dirname, &repair)) res = 1; - } else if (be64_to_cpu(dip->di_core.di_size) <= XFS_LBSIZE(mp)) { + } else if (be64_to_cpu(dip->di_size) <= XFS_LBSIZE(mp)) { if (process_leaf_dir(mp, ino, dip, ino_discovery, dino_dirty, blkmap, &dot, &dotdot, parent, dirname, &repair)) Index: xfs-cmds/xfsprogs/repair/dir2.c =================================================================== --- xfs-cmds.orig/xfsprogs/repair/dir2.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/repair/dir2.c 2008-12-06 20:05:49.000000000 +0100 @@ -806,7 +806,7 @@ xfs_dir2_sf_entry_t *sfep; xfs_dir2_sf_t *sfp; - sfp = &dip->di_u.di_dir2sf; + sfp = (xfs_dir2_sf_t *)XFS_DFORK_DPTR(dip); sfep = xfs_dir2_sf_firstentry(sfp); offset = XFS_DIR2_DATA_FIRST_OFFSET; @@ -858,10 +858,10 @@ xfs_dir2_sf_entry_t *tmp_sfep; xfs_ino_t zero = 0; - sfp = &dip->di_u.di_dir2sf; + sfp = (xfs_dir2_sf_t *)XFS_DFORK_DPTR(dip); max_size = XFS_DFORK_DSIZE(dip, mp); num_entries = sfp->hdr.count; - ino_dir_size = be64_to_cpu(dip->di_core.di_size); + ino_dir_size = be64_to_cpu(dip->di_size); offset = XFS_DIR2_DATA_FIRST_OFFSET; bad_offset = *repair = 0; @@ -1097,7 +1097,7 @@ if (!no_modify) { tmp_elen = xfs_dir2_sf_entsize_byentry(sfp, sfep); - be64_add_cpu(&dip->di_core.di_size, -tmp_elen); + be64_add_cpu(&dip->di_size, -tmp_elen); ino_dir_size -= tmp_elen; tmp_sfep = (xfs_dir2_sf_entry_t *) @@ -1205,7 +1205,7 @@ (__int64_t)((__psint_t)next_sfep - (__psint_t)sfp)); - dip->di_core.di_size = cpu_to_be64( + dip->di_size = cpu_to_be64( (__psint_t)next_sfep - (__psint_t)sfp); *dino_dirty = 1; *repair = 1; @@ -2069,20 +2069,20 @@ */ if (blkmap) last = blkmap_last_off(blkmap); - if (be64_to_cpu(dip->di_core.di_size) <= XFS_DFORK_DSIZE(dip, mp) && - dip->di_core.di_format == XFS_DINODE_FMT_LOCAL) { + if (be64_to_cpu(dip->di_size) <= XFS_DFORK_DSIZE(dip, mp) && + dip->di_format == XFS_DINODE_FMT_LOCAL) { dot = dotdot = 1; res = process_sf_dir2(mp, ino, dip, ino_discovery, dino_dirty, dirname, parent, &repair); } else if (last == mp->m_dirblkfsbs && - (dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS || - dip->di_core.di_format == XFS_DINODE_FMT_BTREE)) { + (dip->di_format == XFS_DINODE_FMT_EXTENTS || + dip->di_format == XFS_DINODE_FMT_BTREE)) { res = process_block_dir2(mp, ino, dip, ino_discovery, dino_dirty, dirname, parent, blkmap, &dot, &dotdot, &repair); } else if (last >= mp->m_dirleafblk + mp->m_dirblkfsbs && - (dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS || - dip->di_core.di_format == XFS_DINODE_FMT_BTREE)) { + (dip->di_format == XFS_DINODE_FMT_EXTENTS || + dip->di_format == XFS_DINODE_FMT_BTREE)) { res = process_leaf_node_dir2(mp, ino, dip, ino_discovery, dirname, parent, blkmap, &dot, &dotdot, &repair, last > mp->m_dirleafblk + mp->m_dirblkfsbs); Index: xfs-cmds/xfsprogs/repair/phase6.c =================================================================== --- xfs-cmds.orig/xfsprogs/repair/phase6.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/repair/phase6.c 2008-12-06 20:05:49.000000000 +0100 @@ -444,11 +444,11 @@ error); } - memset(&ip->i_d, 0, sizeof(xfs_dinode_core_t)); + memset(&ip->i_d, 0, sizeof(xfs_icdinode_t)); ip->i_d.di_magic = XFS_DINODE_MAGIC; ip->i_d.di_mode = S_IFREG; - ip->i_d.di_version = XFS_DINODE_VERSION_1; + ip->i_d.di_version = 1; ip->i_d.di_format = XFS_DINODE_FMT_EXTENTS; ip->i_d.di_aformat = XFS_DINODE_FMT_EXTENTS; @@ -677,11 +677,11 @@ error); } - memset(&ip->i_d, 0, sizeof(xfs_dinode_core_t)); + memset(&ip->i_d, 0, sizeof(xfs_icdinode_t)); ip->i_d.di_magic = XFS_DINODE_MAGIC; ip->i_d.di_mode = S_IFREG; - ip->i_d.di_version = XFS_DINODE_VERSION_1; + ip->i_d.di_version = 1; ip->i_d.di_format = XFS_DINODE_FMT_EXTENTS; ip->i_d.di_aformat = XFS_DINODE_FMT_EXTENTS; @@ -778,11 +778,11 @@ /* * take care of the core -- initialization from xfs_ialloc() */ - memset(&ip->i_d, 0, sizeof(xfs_dinode_core_t)); + memset(&ip->i_d, 0, sizeof(xfs_icdinode_t)); ip->i_d.di_magic = XFS_DINODE_MAGIC; ip->i_d.di_mode = (__uint16_t) mode|S_IFDIR; - ip->i_d.di_version = XFS_DINODE_VERSION_1; + ip->i_d.di_version = 1; ip->i_d.di_format = XFS_DINODE_FMT_EXTENTS; ip->i_d.di_aformat = XFS_DINODE_FMT_EXTENTS; Index: xfs-cmds/xfsprogs/repair/prefetch.c =================================================================== --- xfs-cmds.orig/xfsprogs/repair/prefetch.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/repair/prefetch.c 2008-12-06 20:05:49.000000000 +0100 @@ -330,7 +330,7 @@ xfs_dinode_t *dino) { pf_read_bmbt_reclist(args, (xfs_bmbt_rec_t *)XFS_DFORK_DPTR(dino), - be32_to_cpu(dino->di_core.di_nextents)); + be32_to_cpu(dino->di_nextents)); } static void @@ -338,27 +338,25 @@ prefetch_args_t *args, xfs_buf_t *bp) { - xfs_dinode_t *dino; int icnt = 0; int hasdir = 0; int isadir; - xfs_dinode_core_t *dinoc; + xfs_dinode_t *dip; for (icnt = 0; icnt < (XFS_BUF_COUNT(bp) >> mp->m_sb.sb_inodelog); icnt++) { - dino = XFS_MAKE_IPTR(mp, bp, icnt); - dinoc = &dino->di_core; + dip = XFS_MAKE_IPTR(mp, bp, icnt); /* * We are only prefetching directory contents in extents * and btree nodes for other inodes */ - isadir = (be16_to_cpu(dinoc->di_mode) & S_IFMT) == S_IFDIR; + isadir = (be16_to_cpu(dip->di_mode) & S_IFMT) == S_IFDIR; hasdir |= isadir; - if (dinoc->di_format <= XFS_DINODE_FMT_LOCAL) + if (dip->di_format <= XFS_DINODE_FMT_LOCAL) continue; - if (!isadir && (dinoc->di_format == XFS_DINODE_FMT_EXTENTS || + if (!isadir && (dip->di_format == XFS_DINODE_FMT_EXTENTS || args->dirs_only)) continue; @@ -367,30 +365,29 @@ * its directory data. It's a cut down version of * process_dinode_int() in dinode.c. */ - if (dinoc->di_format > XFS_DINODE_FMT_BTREE) + if (dip->di_format > XFS_DINODE_FMT_BTREE) continue; - if (be16_to_cpu(dinoc->di_magic) != XFS_DINODE_MAGIC) + if (be16_to_cpu(dip->di_magic) != XFS_DINODE_MAGIC) continue; - if (!XFS_DINODE_GOOD_VERSION(dinoc->di_version) || - (!fs_inode_nlink && dinoc->di_version > - XFS_DINODE_VERSION_1)) + if (!XFS_DINODE_GOOD_VERSION(dip->di_version) || + (!fs_inode_nlink && dip->di_version > 1)) continue; - if (be64_to_cpu(dinoc->di_size) <= XFS_DFORK_DSIZE(dino, mp)) + if (be64_to_cpu(dip->di_size) <= XFS_DFORK_DSIZE(dip, mp)) continue; - if ((dinoc->di_forkoff != 0) && - (dinoc->di_forkoff >= (XFS_LITINO(mp) >> 3))) + if (dip->di_forkoff && + (dip->di_forkoff >= (XFS_LITINO(mp) >> 3))) continue; - switch (dinoc->di_format) { + switch (dip->di_format) { case XFS_DINODE_FMT_EXTENTS: - pf_read_exinode(args, dino); + pf_read_exinode(args, dip); break; case XFS_DINODE_FMT_BTREE: - pf_read_btinode(args, dino, isadir); + pf_read_btinode(args, dip, isadir); break; } } Index: xfs-cmds/xfsprogs/include/libxfs.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/libxfs.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/libxfs.h 2008-12-06 20:05:49.000000000 +0100 @@ -389,10 +389,8 @@ struct cache_node i_node; xfs_mount_t *i_mount; /* fs mount struct ptr */ xfs_ino_t i_ino; /* inode number (agno/agino) */ - xfs_daddr_t i_blkno; /* blkno of inode buffer */ + struct xfs_imap i_imap; /* location for xfs_imap() */ dev_t i_dev; /* dev for this inode */ - ushort i_len; /* len of inode buffer */ - ushort i_boffset; /* off of inode in buffer */ xfs_ifork_t *i_afp; /* attribute fork pointer */ xfs_ifork_t i_df; /* data fork */ xfs_trans_t *i_transp; /* ptr to owning transaction */ @@ -419,8 +417,6 @@ extern void libxfs_ichgtime (xfs_inode_t *, int); extern int libxfs_iflush_int (xfs_inode_t *, xfs_buf_t *); -extern int libxfs_iread (xfs_mount_t *, xfs_trans_t *, xfs_ino_t, - xfs_inode_t *, xfs_daddr_t); /* Inode Cache Interfaces */ extern struct cache *libxfs_icache; @@ -465,7 +461,6 @@ #include #include #include -#include #include #include Index: xfs-cmds/xfsprogs/libxfs/logitem.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/logitem.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/logitem.c 2008-12-06 20:05:49.000000000 +0100 @@ -493,7 +493,7 @@ iip->ili_inode = ip; iip->ili_format.ilf_type = XFS_LI_INODE; iip->ili_format.ilf_ino = ip->i_ino; - iip->ili_format.ilf_blkno = ip->i_blkno; - iip->ili_format.ilf_len = ip->i_len; - iip->ili_format.ilf_boffset = ip->i_boffset; + iip->ili_format.ilf_blkno = ip->i_imap.im_blkno; + iip->ili_format.ilf_len = ip->i_imap.im_len; + iip->ili_format.ilf_boffset = ip->i_imap.im_boffset; } Index: xfs-cmds/xfsprogs/libxfs/rdwr.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/rdwr.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/rdwr.c 2008-12-06 20:05:49.000000000 +0100 @@ -677,7 +677,10 @@ fprintf(stderr, "%s: allocated inode, ino=%llu(%llu), %p\n", __FUNCTION__, (unsigned long long)ino, bno, ip); #endif - if ((error = libxfs_iread(mp, tp, ino, ip, bno))) { + ip->i_ino = ino; + ip->i_mount = mp; + error = xfs_iread(mp, tp, ip, bno, 0); + if (error) { cache_node_purge(libxfs_icache, &ino, (struct cache_node *)ip); ip = NULL; Index: xfs-cmds/xfsprogs/libxfs/trans.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/trans.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/trans.c 2008-12-06 20:05:49.000000000 +0100 @@ -592,7 +592,7 @@ /* * Get the buffer containing the on-disk inode. */ - error = xfs_itobp(mp, NULL, ip, &dip, &bp, 0, 0, 0); + error = xfs_itobp(mp, NULL, ip, &dip, &bp, 0); if (error) { fprintf(stderr, _("%s: warning - itobp failed (%d)\n"), progname, error); Index: xfs-cmds/xfsprogs/libxfs/xfs.h =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/xfs.h 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/xfs.h 2008-12-06 20:05:49.000000000 +0100 @@ -181,6 +181,7 @@ #define XFS_BUF_UNDELAYWRITE(bp) ((bp)->b_flags &= ~LIBXFS_B_DIRTY) #define XFS_BUF_SET_VTYPE(a,b) ((void) 0) #define XFS_BUF_SET_VTYPE_REF(a,b,c) ((void) 0) +#define XFS_BUF_SET_REF(a,b) ((void) 0) #define XFS_BUF_SET_BDSTRAT_FUNC(a,b) ((void) 0) #define xfs_incore(bt,blkno,len,lockit) 0 @@ -300,7 +301,6 @@ /* xfs_inode.c */ void xfs_iflush_fork(xfs_inode_t *, xfs_dinode_t *, xfs_inode_log_item_t *, int, xfs_buf_t *); -int xfs_iformat(xfs_inode_t *, xfs_dinode_t *); /* xfs_mount.c */ int xfs_initialize_perag_data(xfs_mount_t *, xfs_agnumber_t); Index: xfs-cmds/xfsprogs/libxfs/xfs_da_btree.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/xfs_da_btree.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/xfs_da_btree.c 2008-12-06 20:05:49.000000000 +0100 @@ -1539,11 +1539,14 @@ int nmap, error, w, count, c, got, i, mapi; xfs_trans_t *tp; xfs_mount_t *mp; + xfs_drfsbno_t nblks; dp = args->dp; mp = dp->i_mount; w = args->whichfork; tp = args->trans; + nblks = dp->i_d.di_nblocks; + /* * For new directories adjust the file offset and block count. */ @@ -1620,6 +1623,8 @@ } if (mapp != &map) kmem_free(mapp); + /* account for newly allocated blocks in reserved blocks total */ + args->total -= dp->i_d.di_nblocks - nblks; *new_blkno = (xfs_dablk_t)bno; return 0; } Index: xfs-cmds/xfsprogs/libxfs/xfs_bmap.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/xfs_bmap.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/xfs_bmap.c 2008-12-06 20:05:49.000000000 +0100 @@ -169,7 +169,7 @@ * Remove the entry "free" from the free item list. Prev points to the * previous entry, unless "free" is the head of the list. * - * Note: this requires user-space public scope for libxfs_iread + * Note: this requires user-space public scope for libxfs_bmap_finish */ void xfs_bmap_del_free( @@ -3250,7 +3250,7 @@ * Remove the entry "free" from the free item list. Prev points to the * previous entry, unless "free" is the head of the list. * - * Note: this requires user-space public scope for libxfs_iread + * Note: this requires user-space public scope for libxfs_bmap_finish */ void xfs_bmap_del_free( Index: xfs-cmds/xfstests/186 =================================================================== --- xfs-cmds.orig/xfstests/186 2008-12-06 20:04:34.000000000 +0100 +++ xfs-cmds/xfstests/186 2008-12-06 20:05:59.000000000 +0100 @@ -66,7 +66,7 @@ _filter_inode() { - tee -a $seq.full | egrep '^u.sfdir2|^a.sfattr|core.forkoff' |\ + tee -a $seq.full | egrep '^u.sfdir2|^a.sfattr|forkoff' |\ egrep -v 'inumber|parent' } Index: xfs-cmds/xfstests/186.out =================================================================== --- xfs-cmds.orig/xfstests/186.out 2008-12-06 20:05:57.000000000 +0100 +++ xfs-cmds/xfstests/186.out 2008-12-06 20:05:59.000000000 +0100 @@ -2,7 +2,7 @@ ================================= ATTR2 -core.forkoff = 0 +forkoff = 0 u.sfdir2.hdr.count = 0 u.sfdir2.hdr.i8count = 0 ================================= @@ -12,7 +12,7 @@ ================================= ATTR2 -core.forkoff = 0 +forkoff = 0 u.sfdir2.hdr.count = 25 u.sfdir2.hdr.i8count = 0 u.sfdir2.list[0].namelen = 6 @@ -98,7 +98,7 @@ ================================= ATTR ATTR2 -core.forkoff = 47 +forkoff = 47 u.sfdir2.hdr.count = 25 u.sfdir2.hdr.i8count = 0 u.sfdir2.list[0].namelen = 6 @@ -195,7 +195,7 @@ ================================= ATTR -core.forkoff = 47 +forkoff = 47 u.sfdir2.hdr.count = 25 u.sfdir2.hdr.i8count = 0 u.sfdir2.list[0].namelen = 6 From redeeman@metanurb.dk Sat Dec 6 14:36:17 2008 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 mB6KaHXK008556 for ; Sat, 6 Dec 2008 14:36:17 -0600 X-ASG-Debug-ID: 1228595774-26ba016d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pasmtpA.tele.dk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 506D8130D6B6 for ; Sat, 6 Dec 2008 12:36:14 -0800 (PST) Received: from pasmtpA.tele.dk (pasmtpa.tele.dk [80.160.77.114]) by cuda.sgi.com with ESMTP id oMBzY7JBUNvmLNew for ; Sat, 06 Dec 2008 12:36:14 -0800 (PST) Received: from redeeman.kaspersandberg.com (kaspersandberg.com [80.164.32.14]) by pasmtpA.tele.dk (Postfix) with ESMTP id EDE0180039D; Sat, 6 Dec 2008 21:35:41 +0100 (CET) X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] From: Redeeman To: Eric Sandeen Cc: Justin Piszcz , linux-raid@vger.kernel.org, xfs@oss.sgi.com, Alan Piszcz In-Reply-To: <493A9BE7.3090001@sandeen.net> References: <493A9BE7.3090001@sandeen.net> Content-Type: text/plain Date: Sat, 06 Dec 2008 21:35:40 +0100 Message-Id: <1228595740.16555.105.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.4.0 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: pasmtpa.tele.dk[80.160.77.114] X-Barracuda-Start-Time: 1228595775 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.12106 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, 2008-12-06 at 09:36 -0600, Eric Sandeen wrote: > Justin Piszcz wrote: > > Someone should write a document with XFS and barrier support, if I recall, > > in the past, they never worked right on raid1 or raid5 devices, but it > > appears now they they work on RAID1, which slows down performance ~12 times!! > > What sort of document do you propose? xfs will enable barriers on any > block device which will support them, and after: > > deeb5912db12e8b7ccf3f4b1afaad60bc29abed9 > > [XFS] Disable queue flag test in barrier check. > > xfs is able to determine, via a test IO, that md raid1 does pass > barriers through properly even though it doesn't set an ordered flag on > the queue. > > > l1:~# /usr/bin/time tar xf linux-2.6.27.7.tar > > 0.15user 1.54system 0:13.18elapsed 12%CPU (0avgtext+0avgdata 0maxresident)k > > 0inputs+0outputs (0major+325minor)pagefaults 0swaps > > l1:~# > > > > l1:~# /usr/bin/time tar xf linux-2.6.27.7.tar > > 0.14user 1.66system 2:39.68elapsed 1%CPU (0avgtext+0avgdata 0maxresident)k > > 0inputs+0outputs (0major+324minor)pagefaults 0swaps > > l1:~# > > > > Before: > > /dev/md2 / xfs defaults,noatime 0 1 > > > > After: > > /dev/md2 / xfs defaults,noatime,nobarrier,logbufs=8,logbsize=262144 0 1 > > Well, if you're investigating barriers can you do a test with just the > barrier option change; though I expect you'll still find it to have a > substantial impact. > > > There is some mention of it here: > > http://oss.sgi.com/projects/xfs/faq.html#wcache_persistent > > > > But basically I believe it should be noted in the kernel logs, FAQ or somewhere > > because just through the process of upgrading the kernel, not changing fstab > > or any other part of the system, performance can drop 12x just because the > > newer kernels implement barriers. > > Perhaps: > > printk(KERN_ALERT "XFS is now looking after your metadata very > carefully; if you prefer the old, fast, dangerous way, mount with -o > nobarrier\n"); > > :) > > Really, this just gets xfs on md raid1 in line with how it behaves on > most other devices. > > But I agree, some documentation/education is probably in order; if you > choose to disable write caches or you have faith in the battery backup > of your write cache, turning off barriers would be a good idea. Justin, > it might be interesting to do some tests with: > > barrier, write cache enabled > nobarrier, write cache enabled > nobarrier, write cache disabled > > a 12x hit does hurt though... If you're really motivated, try the same > scenarios on ext3 and ext4 to see what the barrier hit is on those as well. I have tested with ext3/xfs, and barriers have considerably more impact on xfs than ext3. this is ~4 months old test, I do not have any precise data anymore. > > -Eric > -- > To unsubscribe from this list: send the line "unsubscribe linux-raid" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html From kyle@moffetthome.net Sat Dec 6 14:55:32 2008 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 mB6KtVii009995 for ; Sat, 6 Dec 2008 14:55:32 -0600 X-ASG-Debug-ID: 1228596930-3f34009c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from rn-out-0910.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2D9AB16D428F for ; Sat, 6 Dec 2008 12:55:30 -0800 (PST) Received: from rn-out-0910.google.com (rn-out-0910.google.com [64.233.170.187]) by cuda.sgi.com with ESMTP id tYJoBFh3jTeldeKL for ; Sat, 06 Dec 2008 12:55:30 -0800 (PST) Received: by rn-out-0910.google.com with SMTP id 56so663657rnw.8 for ; Sat, 06 Dec 2008 12:55:30 -0800 (PST) Received: by 10.101.71.6 with SMTP id y6mr748444ank.44.1228596930040; Sat, 06 Dec 2008 12:55:30 -0800 (PST) Received: by 10.100.38.13 with HTTP; Sat, 6 Dec 2008 12:55:29 -0800 (PST) Message-ID: Date: Sat, 6 Dec 2008 15:55:29 -0500 From: "Kyle Moffett" To: "Justin Piszcz" X-ASG-Orig-Subj: Re: Have the velociraptors in a test system now, checkout the errors. Subject: Re: Have the velociraptors in a test system now, checkout the errors. Cc: "Michael Tokarev" , linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com, smartmontools-support@lists.sourceforge.net In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <493A5E62.1020508@msgid.tls.msk.ru> X-Barracuda-Connect: rn-out-0910.google.com[64.233.170.187] X-Barracuda-Start-Time: 1228596931 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.12108 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Dec 6, 2008 at 7:11 AM, Justin Piszcz wrote: > As far the PSU, just btw/FYI, Velociraptors consume ~4-5 watts a piece, my > entire system used ~100-120watts with all 12 velociraptors on a 650 watt PSU > (now moved into a test system). You should actually break it down further than that. During system development recently, the company I work for was using some 350W PSUs with funny connectors patched in place of the standard molex to drive the 5V power for some small embedded system testbeds and their drives. We were hard-power-cycling the systems by unplugging them from the bus and we kept having problems with the *other* embedded board resetting when we did so. Turns out the "350W" PSU was only rated to supply 100W to the 5V leads, and our 55W systems (40W for board and 15W for drive) were a little too far past the edge. In addition, most hard drives, motherboards, etc have circuits powered separately from the 3.3V, 5V, and 12V busses. If your *load* is balanced too heavily on one or the other of the supplies, you can see extremely weird problems. When the 12V-powered spindle and spindle-controller on your HDD loses power but the 5V-powered SATA or SAS interface does not, its internal state machine gets all kinds of messed up. If you can get ahold of one, I'd recommend finding an oscilliscope to hook up to the 5V and 12V lines into those drives. Cheers, Kyle Moffett From mjt@tls.msk.ru Sat Dec 6 17:27:47 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.7 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 mB6NRkgx019682 for ; Sat, 6 Dec 2008 17:27:47 -0600 X-ASG-Debug-ID: 1228606063-335c01a30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hobbit.corpit.ru (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8B9F016CB3E5 for ; Sat, 6 Dec 2008 15:27:43 -0800 (PST) Received: from hobbit.corpit.ru (hobbit.corpit.ru [81.13.33.150]) by cuda.sgi.com with ESMTP id ASxFKEmp376HrVTX for ; Sat, 06 Dec 2008 15:27:43 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from [192.168.1.200] (mjt.ppp.tls.msk.ru [192.168.1.200]) by hobbit.corpit.ru (Postfix) with ESMTP id 72EC3196E4; Sun, 7 Dec 2008 02:22:10 +0300 (MSK) (envelope-from mjt@tls.msk.ru) Message-ID: <493B0922.2080606@msgid.tls.msk.ru> Date: Sun, 07 Dec 2008 02:22:10 +0300 From: Michael Tokarev Organization: Telecom Service, JSC User-Agent: Mozilla-Thunderbird 2.0.0.17 (X11/20081018) MIME-Version: 1.0 To: Justin Piszcz CC: linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com, smartmontools-support@lists.sourceforge.net X-ASG-Orig-Subj: Re: Have the velociraptors in a test system now, checkout the errors. Subject: Re: Have the velociraptors in a test system now, checkout the errors. References: <493A5E62.1020508@msgid.tls.msk.ru> In-Reply-To: X-Enigmail-Version: 0.95.0 OpenPGP: id=4F9CF57E Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: hobbit.corpit.ru[81.13.33.150] X-Barracuda-Start-Time: 1228606065 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Justin Piszcz wrote: [big skip..] > Very interesting story there, what OS(') were you using at the time? > Windows? Linux? UNIX? It is linux. Since 2.2 or 2.0, I don't remember for sure. With software raid since the day one (was an external patch in a few first years). > As far the PSU, just btw/FYI, Velociraptors consume ~4-5 watts a piece, > my entire system used ~100-120watts with all 12 velociraptors on a 650 > watt PSU (now moved into a test system). Well. Others already commented on this, -- different rail can draw different max power. But it's a bit more complex still. Those 4..5 watts is a sustained power consumption, not peak. When moving heads, starting/stopping the motor etc, the drive briefly consumes much more power. From my choice of cheap PSUs, not all of them can do the work even when theoretical load is below the capacity. I.e., the voltage becomes.. unstable (insufficient filtering/capacitors, bad output cirquits, too thin wires etc yadda). And some parts of the system may "translate" those instabilities into ones and zeros.. It's more: when the drives are in some RAID configuration (esp. raid1 and the like), usually more than one drive works in parallel, at exactly the same moment (think writes to a raid1). So it is more possible to have bad results in raid config than without... But again: I'm not at all suggesting your problem is in PSU. It *might* be here, but I hope your PSU can do the work fine. And in my case there were other failures too, more "mysterious". And by the way, some modern PSUs, especially more powerful ones, has more than one separate rails for 12v and sometimes 5v. I.e. two or more independent (to some extent anyway) 12v circuits. With obvious advantages. /mjt From david@fromorbit.com Sat Dec 6 22:27:52 2008 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 mB74Rpb9005344 for ; Sat, 6 Dec 2008 22:27:52 -0600 X-ASG-Debug-ID: 1228624068-54f902570000-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 D9BC316D546B for ; Sat, 6 Dec 2008 20:27: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 ry4UDN6epAO5ylWx for ; Sat, 06 Dec 2008 20:27:48 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEABvcOkl5LJfT/2dsb2JhbADMXIMF X-IronPort-AV: E=Sophos;i="4.33,727,1220193000"; d="scan'208";a="270850768" Received: from ppp121-44-151-211.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.151.211]) by ipmail05.adl2.internode.on.net with ESMTP; 07 Dec 2008 14:47:12 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1L9B4x-00083U-8P; Sun, 07 Dec 2008 15:17:11 +1100 Date: Sun, 7 Dec 2008 15:17:11 +1100 From: Dave Chinner To: Mikulas Patocka Cc: Andi Kleen , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Andi Kleen , Milan Broz X-ASG-Orig-Subj: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Subject: Re: Device loses barrier support (was: Fixed patch for simple barriers.) Message-ID: <20081207041711.GA22525@disturbed> Mail-Followup-To: Mikulas Patocka , Andi Kleen , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alasdair G Kergon , Andi Kleen , Milan Broz References: <20081204100050.GN6703@one.firstfloor.org> <20081204142015.GQ6703@one.firstfloor.org> <20081204145810.GR6703@one.firstfloor.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-Barracuda-Connect: ipmail05.adl2.internode.on.net[203.16.214.145] X-Barracuda-Start-Time: 1228624070 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.12134 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Dec 04, 2008 at 11:45:44AM -0500, Mikulas Patocka wrote: > > The write block with barrier bit varies, jbd/gfs2 do it synchronously > > too and xfs does it asynchronously (with io done callbacks), but > > And how does xfs preserve write ordering, if the barrier asynchronously > fails with -EOPNOTSUPP and there are other writes submitted after the > barrier? Doesn't matter. XFS executes journal state changes during the I/O completion callbacks a layer above this resubmit code. Hence, if the I/O is resubmitted before the completion callbacks are run, it just appears that the I/O has taken longer than expected and the state change is delayed.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From hpj@urpla.net Sun Dec 7 06:58:16 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.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 mB7CwG1p006856 for ; Sun, 7 Dec 2008 06:58:16 -0600 X-ASG-Debug-ID: 1228654693-478300b60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from moutng.kundenserver.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7857A1AAB804 for ; Sun, 7 Dec 2008 04:58:13 -0800 (PST) Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.177]) by cuda.sgi.com with ESMTP id zB6Bay6WMq9tT0ne for ; Sun, 07 Dec 2008 04:58:13 -0800 (PST) Received: from lisa (p4FD37B13.dip.t-dialin.net [79.211.123.19]) by mrelayeu.kundenserver.de (node=mrelayeu7) with ESMTP (Nemesis) id 0ML2xA-1L9JB106nX-0007uV; Sun, 07 Dec 2008 13:55:59 +0100 Received: from localhost (localhost [127.0.0.1]) by tyrex.lisa.loc (Postfix) with ESMTP id 6BC30F06F0D1; Sun, 7 Dec 2008 13:55:58 +0100 (CET) X-Virus-Scanned: amavisd-new at lisa From: "Hans-Peter Jansen" To: linux-kernel@vger.kernel.org X-ASG-Orig-Subj: Re: 3ware 9650SE-16ML w/XFS & RAID6: first impressions Subject: Re: 3ware 9650SE-16ML w/XFS & RAID6: first impressions Date: Sun, 7 Dec 2008 13:55:48 +0100 User-Agent: KMail/1.9.9 Cc: Justin Piszcz , linux-raid@vger.kernel.org, xfs@oss.sgi.com References: In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200812071355.49427.hpj@urpla.net> X-Provags-ID: V01U2FsdGVkX18r+fhMar7UFdIilVaYHjyS+x8ofzfb0hotqN3 vaDiWCWP9pMGdRrnmSzmxpKl7GQKijG2QviZ4bcdimZXkytJNa Yzga3A214k9ksRtTJOHwQ== X-Barracuda-Connect: moutng.kundenserver.de[212.227.126.177] X-Barracuda-Start-Time: 1228654694 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0208 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.12161 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Am Mittwoch, 3. Dezember 2008 schrieb Justin Piszcz: > For read speed, it appears that there is some overhead (2x). With > software raid6 I used to get 1.0Gbyte/sec read speed, or at least > 800MiB/s across the entire array, now I only get 538MiB/s across the > entire array. However, write speed is improved. Before it was in the mid > 400s for RAID6 and peaking at 502MiB/s at the outer edge of the drives. > For the write speed now, its around 620-640MiB/s at the end of the array > and 580-620MiB/s going in further and 502MiB/s across the entire array. I > always heard all of the horror stories with 3ware cards, it turns out > they're not so bad after all. Hustin, if you're after speed, AND sane support, you may consider trying Areca products. I'm biased, since 3ware fed me up completely, when it came to a single drive failure in a RAID 5 setup: the support only provides an ugly web interface: when posting my problem, they replied with: >>> Thank you for contacting 3ware Technical Support. Your submission has been received and assigned case id # xxxxxxxxxxxxxx. You will receive a response within one business day. Note: Do not reply to this email ( websupport@webrt.amcc.com ). Emails sent to websupport@webrt.amcc.com will not receive a response. To check the status of your case, go to https://www.3ware.com and login. Thank you indeed! <<< Well, they responded within 23-26 hours on average, only to request information, that was given in the very first post! In the end (a week later) they concluded: the problem cannot be solved without replacing the firmware and reinstalling the array! The array couldn't be restored from degraded mode - they blamed the samsung drives for it. Since then I replaced all my 3ware controllers with Areca controllers and haven't regretted it, but I haven't done any serious measurement (I mostly care for reliability, btw) but they where noticably faster. Cheers, Pete From fengguang.wu@intel.com Sun Dec 7 07:32:02 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,DATE_IN_PAST_12_24 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 mB7DW2Z8009085 for ; Sun, 7 Dec 2008 07:32:02 -0600 X-ASG-Debug-ID: 1228656720-3493000b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mga14.intel.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2849D16D621A for ; Sun, 7 Dec 2008 05:32:00 -0800 (PST) Received: from mga14.intel.com (mga14.intel.com [143.182.124.37]) by cuda.sgi.com with ESMTP id SkD17YpPUgQFqF7k for ; Sun, 07 Dec 2008 05:32:00 -0800 (PST) Received: from azsmga001.ch.intel.com ([10.2.17.19]) by azsmga102.ch.intel.com with ESMTP; 07 Dec 2008 05:15:25 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.33,729,1220252400"; d="scan'208";a="87435766" Received: from unknown (HELO localhost) ([10.254.154.79]) by azsmga001.ch.intel.com with ESMTP; 07 Dec 2008 05:15:10 -0800 Received: from wfg by localhost with local (Exim 4.69) (envelope-from ) id 1L8x56-0005aC-54; Sat, 06 Dec 2008 21:20:24 +0800 Date: Sat, 6 Dec 2008 21:20:24 +0800 From: Wu Fengguang To: David Chinner Cc: LKML , Ingo Molnar , xfs@oss.sgi.com X-ASG-Orig-Subj: xfs: possible circular locking dependency detected Subject: xfs: possible circular locking dependency detected Message-ID: <20081206132023.GA21235@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: mga14.intel.com[143.182.124.37] X-Barracuda-Start-Time: 1228656721 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.14 X-Barracuda-Spam-Status: No, SCORE=-1.14 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DATE_IN_PAST_12_24 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.12163 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.88 DATE_IN_PAST_12_24 Date: is 12 to 24 hours before Received: date Hi Dave, I got this warning while accessing xfs on usb storage. Is this a real problem? Thanks, Fengguang ======================================================= [ INFO: possible circular locking dependency detected ] 2.6.28-rc7 #85 ------------------------------------------------------- rsync/20106 is trying to acquire lock: (iprune_mutex){--..}, at: [] shrink_icache_memory+0x84/0x290 but task is already holding lock: (&(&ip->i_iolock)->mr_lock){----}, at: [] xfs_ilock+0x75/0xb0 [xfs] which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 (&(&ip->i_iolock)->mr_lock){----}: [] __lock_acquire+0x12e2/0x18c0 [] lock_acquire+0x99/0xd0 [] down_write_nested+0x57/0x90 [] xfs_ilock+0xa5/0xb0 [xfs] [] xfs_ireclaim+0x46/0x90 [xfs] [] xfs_finish_reclaim+0x5e/0x1a0 [xfs] [] xfs_reclaim+0x11b/0x120 [xfs] [] xfs_fs_clear_inode+0xee/0x120 [xfs] [] clear_inode+0x90/0x140 [] dispose_list+0x38/0x120 [] shrink_icache_memory+0x243/0x290 [] shrink_slab+0x125/0x180 [] kswapd+0x542/0x6a0 [] kthread+0x4e/0x90 [] child_rip+0xa/0x11 [] 0xffffffffffffffff -> #0 (iprune_mutex){--..}: [] __lock_acquire+0x142f/0x18c0 [] lock_acquire+0x99/0xd0 [] mutex_lock_nested+0xce/0x320 [] shrink_icache_memory+0x84/0x290 [] shrink_slab+0x125/0x180 [] try_to_free_pages+0x286/0x3f0 [] __alloc_pages_internal+0x255/0x5b0 [] alloc_pages_current+0x7b/0x100 [] __page_cache_alloc+0x10/0x20 [] __do_page_cache_readahead+0x138/0x250 [] ondemand_readahead+0xdf/0x3c0 [] page_cache_async_readahead+0xa9/0xc0 [] do_generic_file_read+0x259/0x4d0 [] generic_file_aio_read+0xd0/0x1c0 [] xfs_read+0x12a/0x280 [xfs] [] xfs_file_aio_read+0x56/0x60 [xfs] [] do_sync_read+0xf9/0x140 [] vfs_read+0xc8/0x180 [] sys_read+0x55/0x90 [] system_call_fastpath+0x16/0x1b [] 0xffffffffffffffff other info that might help us debug this: 2 locks held by rsync/20106: #0: (&(&ip->i_iolock)->mr_lock){----}, at: [] xfs_ilock+0x75/0xb0 [xfs] #1: (shrinker_rwsem){----}, at: [] shrink_slab+0x37/0x180 stack backtrace: Pid: 20106, comm: rsync Not tainted 2.6.28-rc7 #85 Call Trace: [] print_circular_bug_tail+0xd8/0xe0 [] __lock_acquire+0x142f/0x18c0 [] ? __pagevec_release+0x26/0x40 [] lock_acquire+0x99/0xd0 [] ? shrink_icache_memory+0x84/0x290 [] mutex_lock_nested+0xce/0x320 [] ? shrink_icache_memory+0x84/0x290 [] ? shrink_icache_memory+0x84/0x290 [] shrink_icache_memory+0x84/0x290 [] shrink_slab+0x125/0x180 [] try_to_free_pages+0x286/0x3f0 [] ? isolate_pages_global+0x0/0x260 [] __alloc_pages_internal+0x255/0x5b0 [] alloc_pages_current+0x7b/0x100 [] __page_cache_alloc+0x10/0x20 [] __do_page_cache_readahead+0x138/0x250 [] ? __do_page_cache_readahead+0xca/0x250 [] ondemand_readahead+0xdf/0x3c0 [] ? sched_clock+0x9/0x10 [] page_cache_async_readahead+0xa9/0xc0 [] do_generic_file_read+0x259/0x4d0 [] ? file_read_actor+0x0/0x190 [] generic_file_aio_read+0xd0/0x1c0 [] ? xfs_ilock+0x75/0xb0 [xfs] [] xfs_read+0x12a/0x280 [xfs] [] xfs_file_aio_read+0x56/0x60 [xfs] [] do_sync_read+0xf9/0x140 [] ? autoremove_wake_function+0x0/0x40 [] ? _raw_spin_unlock+0x7f/0xb0 [] ? trace_hardirqs_off_thunk+0x3a/0x3c [] vfs_read+0xc8/0x180 [] sys_read+0x55/0x90 [] system_call_fastpath+0x16/0x1b From maurice@harddata.com Sun Dec 7 13:26:14 2008 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 mB7JQDac030395 for ; Sun, 7 Dec 2008 13:26:14 -0600 X-ASG-Debug-ID: 1228677962-731600080000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.harddata.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3CF5AEFE068 for ; Sun, 7 Dec 2008 11:26:04 -0800 (PST) Received: from mail.harddata.com ([207.148.148.78]) by cuda.sgi.com with ESMTP id beHIAOzq3yVHlrTM for ; Sun, 07 Dec 2008 11:26:04 -0800 (PST) Received: from [192.168.60.190] (gate.harddata.com [207.148.148.89]) (authenticated bits=0) by mail.harddata.com (8.13.1/8.13.1) with ESMTP id mB7IZCbD025213 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 7 Dec 2008 11:35:15 -0700 Message-ID: <493C1765.7070901@harddata.com> Date: Sun, 07 Dec 2008 11:35:17 -0700 From: Maurice Hilarius Organization: Hard Data Ltd. User-Agent: Thunderbird 2.0.0.18 (Windows/20081105) MIME-Version: 1.0 To: Hans-Peter Jansen CC: linux-kernel@vger.kernel.org, Justin Piszcz , linux-raid@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 3ware 9650SE-16ML w/XFS & RAID6: first impressions Subject: Re: 3ware 9650SE-16ML w/XFS & RAID6: first impressions References: <200812071355.49427.hpj@urpla.net> In-Reply-To: <200812071355.49427.hpj@urpla.net> X-Enigmail-Version: 0.95.7 X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on mail.harddata.com X-Virus-Status: Clean X-Barracuda-Connect: UNKNOWN[207.148.148.78] X-Barracuda-Start-Time: 1228677971 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.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_MESSAGE, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.12186 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 1533 Hans-Peter Jansen wrote: > Am Mittwoch, 3. Dezember 2008 schrieb Justin Piszcz: > >> For read speed, it appears that there is some overhead (2x). With >> software raid6 I used to get 1.0Gbyte/sec read speed, or at least >> 800MiB/s across the entire array, now I only get 538MiB/s across the >> entire array. However, write speed is improved. Before it was in the mid >> 400s for RAID6 and peaking at 502MiB/s at the outer edge of the drives. >> For the write speed now, its around 620-640MiB/s at the end of the array >> and 580-620MiB/s going in further and 502MiB/s across the entire array. I >> always heard all of the horror stories with 3ware cards, it turns out >> they're not so bad after all. >> > > Hustin, if you're after speed, AND sane support, you may consider trying > Areca products. I'm biased, since 3ware fed me up completely, when it came > to a single drive failure in a RAID 5 setup: the support only provides an > ugly web interface: when posting my problem, they replied with: > > Nice Areca advertisement. Of course you can demonstrate how their tech support responded, to a similar DISK failure, with a better suggestion, and more promptly? Buried for biased and irrelevant. -- With our best regards, //Maurice W. Hilarius Telephone: 01-780-456-9771/ /Hard Data Ltd. FAX: 01-780-456-9772/ /11060 - 166 Avenue email:maurice@harddata.com/ /Edmonton, AB, Canada http://www.harddata.com// / T5X 1Y3/ / [[HTML alternate version deleted]] From bnaujok@sgi.com Sun Dec 7 18:10:11 2008 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 relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB80AAGb014748 for ; Sun, 7 Dec 2008 18:10:11 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id 76E5D8F809C; Sun, 7 Dec 2008 16:10:06 -0800 (PST) Received: from chook.melbourne.sgi.com (chook.melbourne.sgi.com [134.14.54.237]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id LAA04078; Mon, 8 Dec 2008 11:10:04 +1100 Received: by chook.melbourne.sgi.com (Postfix, from userid 1161) id 2400D58ADC07; Mon, 8 Dec 2008 11:10:04 +1100 (EST) To: sgi.bugs.xfs@engr.sgi.com Cc: xfs@oss.sgi.com Subject: TAKE 989644 - unaligned references in latest xfs_repair on ia64 Message-Id: <20081208001004.2400D58ADC07@chook.melbourne.sgi.com> Date: Mon, 8 Dec 2008 11:10:04 +1100 (EST) From: bnaujok@sgi.com (Barry Naujok) Fix unaligned accesses in IA64 when getting disk extents Date: Mon Dec 8 11:08:22 EST 2008 Workarea: chook.melbourne.sgi.com:/home/bnaujok/isms/xcmds-clean Inspected by: hch@lst.de The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/xfs-cmds/master-melb Modid: master-melb:xfs-cmds:32642a xfsprogs/db/bmap.c - 1.18 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/db/bmap.c.diff?r1=text&tr1=1.18&r2=text&tr2=1.17&f=h xfsprogs/libxfs/xfs_bmap_btree.c - 1.26 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/libxfs/xfs_bmap_btree.c.diff?r1=text&tr1=1.26&r2=text&tr2=1.25&f=h - Fix unaligned accesses when getting disk extents on IA64 From bnaujok@sgi.com Sun Dec 7 19:10:20 2008 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_43 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB81AJgB018404 for ; Sun, 7 Dec 2008 19:10:19 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay3.corp.sgi.com (Postfix) with SMTP id 9D0FAAC034 for ; Sun, 7 Dec 2008 17:10:15 -0800 (PST) Received: from pc-bnaujok.melbourne.sgi.com (pc-bnaujok.melbourne.sgi.com [134.14.55.58]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id MAA04759 for ; Mon, 8 Dec 2008 12:10:13 +1100 Date: Mon, 08 Dec 2008 12:14:11 +1100 To: "xfs@oss.sgi.com" Subject: xfsprogs 2.10.2 source tarball released From: "Barry Naujok" Organization: SGI Content-Type: text/plain; format=flowed; delsp=yes; charset=utf-8 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Message-ID: User-Agent: Opera Mail/9.52 (Win32) ftp://oss.sgi.com/projects/xfs/cmd_tars/xfsprogs_2.10.2-1.tar.gz This version contains important bug fixes to xfsprogs 2.10.1: xfsprogs-2.10.2 (8 December 2008) - Fix an mkfs.xfs regression where -i maxpct option was ignored. - Fix mkfs.xfs -d agcount and su/sw options when used together. - Fix a regression where repaired inodes in xfs_repair were not written to disk. - Allow 64K block size support in xfs_repair. - Fix up unaligned accesses in 64 bit platforms in xfs_repair. From tes@sgi.com Sun Dec 7 22:42:13 2008 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_35, J_CHICKENPOX_66 autolearn=no 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 mB84gD1H031871 for ; Sun, 7 Dec 2008 22:42:13 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id CF168304079; Sun, 7 Dec 2008 20:42:06 -0800 (PST) Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id PAA07432; Mon, 8 Dec 2008 15:42:05 +1100 Message-ID: <493CA59C.302@sgi.com> Date: Mon, 08 Dec 2008 15:42:04 +1100 From: Timothy Shimmin User-Agent: Thunderbird 2.0.0.17 (Macintosh/20080914) MIME-Version: 1.0 To: lachlan@sgi.com CC: xfs-oss Subject: Re: [PATCH] Fix off by one error in page_region_mask() References: <49378B60.1060603@sgi.com> In-Reply-To: <49378B60.1060603@sgi.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Lachlan McIlroy wrote: > final is calculated to be the last bit to set (ie inclusive) but when we > do the mask shifting final really needs to be first bit not to set. > > For example if first and final are both bit 0 (ie only first bit to be set) > then mask is completely shifted and becomes all zeroes. > > Or if first is 0 and final is 63 then the mask is shifted one bit when it > shouldn't be shifted at all. > > --- xfs-fix.orig/fs/xfs/linux-2.6/xfs_buf.c > +++ xfs-fix/fs/xfs/linux-2.6/xfs_buf.c > @@ -129,15 +129,17 @@ page_region_mask( > int first, final; > > first = BTOPR(offset); > - final = BTOPRT(offset + length - 1); > - first = min(first, final); > + final = BTOPRT(offset + length); > + > + if (first >= final) > + return 0UL; > > mask = ~0UL; > mask <<= BITS_PER_LONG - (final - first); > mask >>= BITS_PER_LONG - (final); > > ASSERT(offset + length <= PAGE_CACHE_SIZE); > - ASSERT((final - first) < BITS_PER_LONG && (final - first) >= 0); > + ASSERT((final - first) <= BITS_PER_LONG && (final - first) > 0); > > return mask; > } > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs Gee, I always find these tricky to get right. I tend to like a userspace version and input various ranges, such as extremes like you did, and verify it is working. I kind of like first and final to be inclusive of the range to be set (not so keen on making final to be first bit not to set - name doesn't seem so good then). And if one needs to know the size of the range to use (final - first + 1) and for 0..final => size = final-0+1 = final+1. And the thing about min(first, final) and (first >= final), is interesting - I would have thought final would be expected to be >= to the first ?? Okay, the other thing that interests me is the use of both BTOPR and BTOPRT for given offsets. BTOPR is the typical howmany() implementation, where if you go over a multiple-boundaries worth then you need another multiple. I would expect it to have values starting from 1. So I was thinking typically of BTOPR for sizes and BTOPRT for 0-based offsets. e.g. given multiple, 512 BTOPR 1..512 => 1, 513..1024 => 2 BTOPRT 0..511 => 0, 512..1023 => 1 So I find the code a bit hard to follow then. --Tim From tes@sgi.com Sun Dec 7 22:52:15 2008 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 relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB84qF3b032677 for ; Sun, 7 Dec 2008 22:52:15 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay3.corp.sgi.com (Postfix) with SMTP id CC70DAC002; Sun, 7 Dec 2008 20:52:10 -0800 (PST) Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id PAA07585; Mon, 8 Dec 2008 15:52:08 +1100 Message-ID: <493CA7F8.9070305@sgi.com> Date: Mon, 08 Dec 2008 15:52:08 +1100 From: Timothy Shimmin User-Agent: Thunderbird 2.0.0.17 (Macintosh/20080914) MIME-Version: 1.0 To: Dave Chinner CC: xfs-oss Subject: Re: review: xfstests/192 atime test References: <49192204.3040300@sgi.com> <20081111223810.GK2373@disturbed> <491A13CA.6010404@sgi.com> <491A1709.9020705@sgi.com> In-Reply-To: <491A1709.9020705@sgi.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Timothy Shimmin wrote: > Timothy Shimmin wrote: >> Dave Chinner wrote: >>> On Tue, Nov 11, 2008 at 05:11:16PM +1100, Timothy Shimmin wrote: >>>> Attached simple atime test. >>>> 192.out and group file would be added appropriately. >>>> Thanks. >>>> --Tim >>>> _supported_fs xfs udf nfs >>>> _supported_os Linux >>>> delay=150 >>> 150s sleep? It only needs a few seconds for this test. >>> >> Not for me. Passed every time at a few secs, >> that is why I tried longer as was originally reported. >> >>>> time3=`_access_time $testfile | tee -a $seq.full` >>>> >>>> delta1=`expr $time2 - $time1` >>>> delta2=`expr $time3 - $time1` >>>> >>>> echo "delta1 - access time after sleep in-core: $delta1" >>>> echo "delta2 - access time after sleep on-disk: $delta2" >>> Why bother with deltas? if the numbers are the same, just output >>> "same", if they are different, output "different".... >>> >> Fine, will do. >> > The only other thing is that I am not just testing the bug > as it stands - i.e. if the atime is being lost on-disk. > I want to test that the atime is updated appropriately. > > --Tim > Ping? Not fussed? Thanks, --Tim From lachlan@sgi.com Sun Dec 7 23:15:44 2008 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_35, J_CHICKENPOX_66 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB85Fijl001626 for ; Sun, 7 Dec 2008 23:15:44 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id 795E88F805A; Sun, 7 Dec 2008 21:15:39 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA07855; Mon, 8 Dec 2008 16:15:37 +1100 Message-ID: <493CAD9E.4000304@sgi.com> Date: Mon, 08 Dec 2008 16:16:14 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: Timothy Shimmin CC: xfs-oss Subject: Re: [PATCH] Fix off by one error in page_region_mask() References: <49378B60.1060603@sgi.com> <493CA59C.302@sgi.com> In-Reply-To: <493CA59C.302@sgi.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Timothy Shimmin wrote: > Lachlan McIlroy wrote: >> final is calculated to be the last bit to set (ie inclusive) but when we >> do the mask shifting final really needs to be first bit not to set. >> >> For example if first and final are both bit 0 (ie only first bit to be set) >> then mask is completely shifted and becomes all zeroes. >> >> Or if first is 0 and final is 63 then the mask is shifted one bit when it >> shouldn't be shifted at all. >> >> --- xfs-fix.orig/fs/xfs/linux-2.6/xfs_buf.c >> +++ xfs-fix/fs/xfs/linux-2.6/xfs_buf.c >> @@ -129,15 +129,17 @@ page_region_mask( >> int first, final; >> >> first = BTOPR(offset); >> - final = BTOPRT(offset + length - 1); >> - first = min(first, final); >> + final = BTOPRT(offset + length); >> + >> + if (first >= final) >> + return 0UL; >> >> mask = ~0UL; >> mask <<= BITS_PER_LONG - (final - first); >> mask >>= BITS_PER_LONG - (final); >> >> ASSERT(offset + length <= PAGE_CACHE_SIZE); >> - ASSERT((final - first) < BITS_PER_LONG && (final - first) >= 0); >> + ASSERT((final - first) <= BITS_PER_LONG && (final - first) > 0); >> >> return mask; >> } >> >> _______________________________________________ >> xfs mailing list >> xfs@oss.sgi.com >> http://oss.sgi.com/mailman/listinfo/xfs > > Gee, I always find these tricky to get right. > I tend to like a userspace version and input various ranges, > such as extremes like you did, and verify it is working. > > I kind of like first and final to be inclusive of the range to be set > (not so keen on making final to be first bit not to set - > name doesn't seem so good then). Using an inclusive final means we have to add 1 every time we use it - which we could forget to do and maybe that was how this bug got introduced. I would prefer a starting bit and a bit count but I was trying to limit changes to a minimum. We can change the name of final if you like. > And if one needs to know the size of the range to use (final - first + 1) > and for 0..final => size = final-0+1 = final+1. > > And the thing about min(first, final) and (first >= final), > is interesting - I would have thought final would be expected to be >= > to the first ?? It wasn't the case with the old scheme. If we have a 64KB page size then each bit is 1024 bytes and if we read the second sector of a page: first = BTOPR(512) = (512+1023)/1024 = 1 final = BTOPRT(512 + 512 - 1) = (1023/1024) = 0 So the off by one error creates a special case that we need to handle. This shouldn't happen (first > final) if we remove the magic subtract 1 business: final = BTOPRT(512 + 512) = (1024/1024) = 1 But should anyone pass in bad values that are not sector aligned this assumption wont hold so be defensive and leave the > check in. If we know that the resultant mask should be all zeroes then bail early and don't stuff around bit shifting a mask for nothing. > > Okay, the other thing that interests me is the use of both BTOPR and BTOPRT > for given offsets. > BTOPR is the typical howmany() implementation, where if you go over > a multiple-boundaries worth then you need another multiple. > I would expect it to have values starting from 1. > So I was thinking typically of BTOPR for sizes and BTOPRT for 0-based offsets. > e.g. given multiple, 512 > BTOPR 1..512 => 1, 513..1024 => 2 > BTOPRT 0..511 => 0, 512..1023 => 1 These macros are used to round the boundaries inwards. BTOPR rounds up and BTOPRT rounds down. We cannot flag partial regions as up to date because we could expose bad data. Actually if we have to round then we've got a problem because if we have regions that are active but not marked up to date we risk re-reading them and overwriting in-memory changes. > > So I find the code a bit hard to follow then. > > --Tim > From tes@sgi.com Sun Dec 7 23:48:12 2008 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_44 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB85mCwa003769 for ; Sun, 7 Dec 2008 23:48:12 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id 7D18E8F805D; Sun, 7 Dec 2008 21:48:10 -0800 (PST) Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA08347; Mon, 8 Dec 2008 16:48:08 +1100 Message-ID: <493CB518.7000001@sgi.com> Date: Mon, 08 Dec 2008 16:48:08 +1100 From: Timothy Shimmin User-Agent: Thunderbird 2.0.0.17 (Macintosh/20080914) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com Subject: Re: [PATCH] xfsqa: add testcase for ->setattr permission checking References: <20081202142039.GA25155@infradead.org> In-Reply-To: <20081202142039.GA25155@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit I'd like to check this in. I can do the uid/gid test allocation later. There are a few things below that I want to check with you... Christoph Hellwig wrote: > Index: xfs-cmds-git/xfstests/192 > =================================================================== > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > +++ xfs-cmds-git/xfstests/192 2008-12-02 14:16:12.000000000 +0000 > @@ -0,0 +1,177 @@ > +#! /bin/sh > +# FS QA Test No. 192 > +# > +# Test permission checks in ->setattr > +# > +#----------------------------------------------------------------------- > +# 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! > +trap "_cleanup_files; exit \$status" 0 1 2 3 15 > +tag="added by qa $seq" > + > +# > +# For some tests we need a secondary group for the qa_user. Currently > +# that's not available in the framework, so the tests using it are > +# commented out. > +# > +#group2=foo > + > +# > +# Create two files, one owned by root, one by the qa_user > +# > +_create_files() > +{ > + touch test.root > + touch test.${qa_user} > + chown ${qa_user}:${qa_user} test.${qa_user} > +} > + > +# > +# Remove our files again > +# > +_cleanup_files() > +{ > + rm -f test.${qa_user} > + rm -f test.root > +} > + > +# get standard environment, filters and checks > +. ./common.rc > +. ./common.filter > + > +# real QA test starts here > +_supported_fs xfs nfs udf > +_supported_os Linux > + > +_require_user > +_need_to_be_root > + > + > +# > +# make sure we have a normal umask set > +# > +umask 022 > + > + > +# > +# Test the ATTR_UID case > +# > +echo > +echo "testing ATTR_UID" > +echo > + > +_create_files > + 1. > +echo "user: chown root owned file to qa_user (should fail)" > +su ${qa_user} -c "chown root test.${qa_user}" > + I think the description and command above don't match. I think we have a swap with subtest 4 below. Need to either swap descriptions or commands. 2. > +echo "user: chown root owned file to root (should fail)" > +su ${qa_user} -c "chown root test.root" > + 3. > +echo "user: chown qa_user owned file to qa_user (should succeed)" > +su ${qa_user} -c "chown ${qa_user} test.${qa_user}" > + 4. > +# this would work without _POSIX_CHOWN_RESTRICTED > +echo "user: chown qa_user owned file to root (should fail)" > +su ${qa_user} -c "chown ${qa_user} test.root" > + > +# > +# Setup a file owned by the qa_user and with the suid bit set. > +# A chown by root should not clean the suid bit. > +# Typos: s/clean/clear/ s/suceed/succeed/ in a couple of places. * It looks like you test the clearing of suid/sgid bits for setting the mode permission bits and not for setting ownership as the description suggests; i.e. you test with chmod instead of chown for clearing of suid/sgid bits Ideally in the future it would be good to test a few other things too: * CAP_FOWNER * CAP_FSETID * CAP_CHOWN --Tim From NThiLinhGiang@Savills.com.vn Mon Dec 8 01:25:10 2008 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 mB87P82Z012174 for ; Mon, 8 Dec 2008 01:25:10 -0600 X-ASG-Debug-ID: 1228721071-51d700f20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail190.messagelabs.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 2F5A916DA679 for ; Sun, 7 Dec 2008 23:24:31 -0800 (PST) Received: from mail190.messagelabs.com (mail190.messagelabs.com [216.82.249.51]) by cuda.sgi.com with SMTP id ItYszvLWf7siyNFP for ; Sun, 07 Dec 2008 23:24:31 -0800 (PST) X-VirusChecked: Checked X-Env-Sender: NThiLinhGiang@Savills.com.vn X-Msg-Ref: server-15.tower-190.messagelabs.com!1228720130!63107241!1 X-StarScan-Version: 6.0.0; banners=savills.com.vn,-,- X-Originating-IP: [203.210.210.82] Received: (qmail 16965 invoked from network); 8 Dec 2008 07:09:10 -0000 Received: from unknown (HELO savvnex01.savills.com.vn) (203.210.210.82) by server-15.tower-190.messagelabs.com with SMTP; 8 Dec 2008 07:09:10 -0000 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C95903.D131CE5F" X-ASG-Orig-Subj: Centrepoint for Lease now Subject: Centrepoint for Lease now Date: Mon, 8 Dec 2008 14:08:48 +0700 Message-ID: <4237D1C99E41584EA22F2BF1833C4B7BCDC489@savvnex01.savills.com.vn> X-MS-Has-Attach: yes X-MS-TNEF-Correlator: Thread-Topic: Centrepoint for Lease now Thread-Index: AclEkq2u0pzq8lkqTk69Zq5CsfPo6AAAMAYwAABnPBAAACbCcAAAE1iwAABU2yAAAPxNgAACGsiQAAI18cAAABS30AAAGNKQAABHMGAAK6DSgADDlo0gAC8jKvAAPrY5cAAAH/aQAABh77AAKDSpIAALvHhgAMHLXWAAM0Tr0AAAJtJgAAEmW+AAA421IAAltKpAAAJmlWAAM92BkAAFH6FgAAQFNXAAyTUYgAAoIRwAADE4oeAABLbIQAADVzOQAABZXpAA+dgakA== From: "Nguyen Thi Linh Giang @ Savills, VN" X-Barracuda-Connect: mail190.messagelabs.com[216.82.249.51] X-Barracuda-Start-Time: 1228721103 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 To: undisclosed-recipients:; This is a multi-part message in MIME format. ------_=_NextPart_001_01C95903.D131CE5F Content-Type: multipart/related; type="multipart/alternative"; boundary="----_=_NextPart_002_01C95903.D131CE5F" ------_=_NextPart_002_01C95903.D131CE5F Content-Type: multipart/alternative; boundary="----_=_NextPart_003_01C95903.D131CE5F" ------_=_NextPart_003_01C95903.D131CE5F Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable =20 Dear=20Sir=20/=20Madam, =20 I=20am=20pleased=20to=20inform=20you=20about=20an=20opportunity=20to=20lea= se=20office=20space=20in the=20largest=20and=20one=20of=20the=20first=20"green"=20buildings=20in=20= Vietnam. =20 For=20your=20reference,=20please=20find=20the=20attached=20document=20or=20= take=20a=20look=20at the=20building's=20website:=20www.centrepoint.com.vn =20=20 =20 If=20you=20are=20interested=20in=20learning=20more=20or=20have=20further=20= inquiries=20about leasing=20office=20space=20in=20HCMC,=20please=20feel=20free=20to=20contac= t=20me.=20 =20 Thank=20you=20very=20much=20for=20your=20time. =20 =20 =20 =20 =20 =20 =20 Thank=20you=20and=20Best=20regards, =20 =20 Nguyen=20Thi=20Linh=20Giang Leasing=20Executive=20-=20Leasing=20Department Savills=20Vietnam=20Ltd Fideco=20Tower,=2018th=20Floor 81=20-=2085=20Ham=20Nghi=20Street,=20District=201 Ho=20Chi=20Minh=20City,=20Vietnam Tel=20=20=20=20=20=20=20=20=20=20=20=20=20:=20(84-8)=203=20823=209205=20Ex= t:=20125 Fax=20=20=20=20=20=20=20=20=20=20=20=20=20:=20(84-8)=203=20823=204571 Cellphone=20:=20(84)903712987 Email=20=20=20=20=20=20=20=20=20=20:=20Nthilinhgiang@savills.com.vn =20 =20 =20 ********************************************************************** Any=20views=20expressed=20in=20this=20message=20are=20those=20of=20the=20i= ndividual=20sender,=20except=20where=20specifically=20stated=20to=20be=20t= he=20view=20of=20Savills=20plc,=20its=20subsidiaries=20or=20associates.=20= When=20addressed=20to=20our=20clients,=20any=20opinions=20or=20advice=20co= ntained=20in=20this=20eMail=20are=20subject=20to=20the=20relevant=20Savill= s=20terms=20of=20business.=20=20Such=20electronically=20transmitted=20opin= ions=20or=20advice=20should=20not=20be=20relied=20upon=20unless=20subseque= ntly=20confirmed=20by=20fax=20or=20letter. NOTICE:=20This=20eMail=20is=20intended=20solely=20for=20the=20named=20reci= pient=20only.=20It=20may=20contain=20privileged=20and/or=20confidential=20= information.=20If=20you=20are=20not=20one=20of=20the=20intended=20recipien= ts,=20please=20notify=20the=20sender=20immediately,=20and=20destroy=20this= =20eMail;=20you=20must=20not=20copy,=20distribute=20or=20take=20any=20acti= on=20in=20reliance=20upon=20it.=20Whilst=20all=20efforts=20are=20made=20to= =20safeguard=20Inbound=20and=20Outbound=20eMails,=20Savills=20cannot=20gua= rantee=20that=20attachments=20are=20Virus-free=20or=20compatible=20with=20= your=20systems=20and=20does=20not=20accept=20any=20liability=20in=20respec= t=20of=20viruses=20or=20computer=20problems=20experienced. ********************************************************************** ------_=_NextPart_003_01C95903.D131CE5F Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable  

Dear=20Sir=20/=20Madam,

 

I=20am=20pleased=20to=20inform=20you=20about=20an=20opp= ortunity=20to=20lease office=20space=20in=20the=20largest=20and=20one=20of=20the=20first=20̶= 0;green”=20buildings in=20Vietnam.

 

For=20your=20reference,=20please=20find=20the=20attache= d=20document=20or take=20a=20look=20at=20the=20building’s=20website:=20www.centrepoint.com.vn

 

If=20you=20are=20interested=20in=20learning=20more=20or= =20have=20further=20inquiries about=20leasing=20office=20space=20in=20HCMC,=20please=20feel=20free=20to=20= contact=20me.=20

 

Thank=20you=20very=20much=20for=20your=20time.

 

 

 

 

 

Thank=20you=20and=20Best=20regards= ,

 

 

Nguyen=20Thi=20Linh=20Giang

Leasing=20Executive=20-=20Leasing=20Department

Savills=20Vietnam=20Ltd

Fideco=20Tower,=2018th=20Floor

81=20–=2085=20Ham=20Nghi=20Street,=20Dist= rict=201

Ho =20=20Chi=20Minh=20City,=20Vietnam

Tel       &n= bsp;     :=20(84-8)=203=20823=209205=20Ext:=20125 Fax       &n= bsp;     :=20(84-8)=203=20823=204571

Cellphone=20:=20(84)903712987

Email       =    :=20Nthilinhgiang@savills.com.vn

 =

 


**********************************************************************
= Any=20views=20expressed=20in=20this=20message=20are=20those=20of=20the=20i= ndividual=20sender,=20except=20where=20specifically=20stated=20to=20be=20t= he=20view=20of=20Savills=20plc,=20its=20subsidiaries=20or=20associates.=20= When=20addressed=20to=20our=20clients,=20any=20opinions=20or=20advice=20co= ntained=20in=20this=20eMail=20are=20subject=20to=20the=20relevant=20Savill= s=20terms=20of=20business.=20=20Such=20electronically=20transmitted=20opin= ions=20or=20advice=20should=20not=20be=20relied=20upon=20unless=20subseque= ntly=20confirmed=20by=20fax=20or=20letter.

NOTICE:=20This=20eMail=20is=20intended=20solely=20for=20the=20named=20reci= pient=20only.=20It=20may=20contain=20privileged=20and/or=20confidential=20= information.=20If=20you=20are=20not=20one=20of=20the=20intended=20recipien= ts,=20please=20notify=20the=20sender=20immediately,=20and=20destroy=20this= =20eMail;=20you=20must=20not=20copy,=20distribute=20or=20take=20any=20acti= on=20in=20reliance=20upon=20it.=20Whilst=20all=20efforts=20are=20made=20to= =20safeguard=20Inbound=20and=20Outbound=20eMails,=20Savills=20cannot=20gua= rantee=20that=20attachments=20are=20Virus-free=20or=20compatible=20with=20= your=20systems=20and=20does=20not=20accept=20any=20liability=20in=20respec= t=20of=20viruses=20or=20computer=20problems=20experienced.
**********************************************************************
= ------_=_NextPart_003_01C95903.D131CE5F-- ------_=_NextPart_002_01C95903.D131CE5F Content-Type: image/jpeg; name="image001.jpg" Content-Transfer-Encoding: base64 Content-ID: Content-Description: image001.jpg Content-Location: image001.jpg /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCAPMAtcDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDkl8Z+ Kj/zMOof9/at2/i7xOxGdevz9Za51F5rSs0+YVyTkxnX2HiDxBLjfrF431krorTUtXdRu1G4P1eu Z0mIEiuss4RtFYWk+oCy6hqirxqFwP8AgdYt9rutRZ26rdD6PW/cRgIeK5jVgADT5JdwMi78W+IY ydutXg+klZU3jbxMDxr18P8AtrUOotgmsKZ8mtYJ9WVY2m8ceKc8eIb/AP7+0Dxr4qJ/5GHUP+/1 YA5qVFrZ6FJG+vjLxSf+Zhv/APv7Un/CY+KP+hgv/wDv7WIi088Vldl2Rrt4y8UD/mYL/wD7+00e M/FH/QwX/wD39rFdqbup3YtDoU8ZeJz11+//AO/tTDxf4lP/ADHr7/v7XOo1WFbiobZSsbTeL/Eu P+Q9ff8Af2oH8ZeJx/zH7/8A7+1mseKryGnFsTsaZ8a+KB/zMF//AN/aafG3in/oYb//AL+1iuah JOa2RB0K+NvFJ/5mHUP+/tWoPGPidiM6/fn/ALa1yyE5rQtDyKGI6628UeInxnW70/8AbStW21/X Gxu1a7P1krmrMZxW7Zp0qbsDftdW1Z8btRuD9XrWgvtQYfNeTH/gVY9lH0rct4xtqHfuSJNfX6rx eTD/AIFWVc6vqik7dQuB9HrTugAprDuvvGsXe+5SFTV9XY/8hK5/77q2uoasVz/aNz/33VK2jywr YhtwV6VvTuDMe91TWo1JXVLofR65298S+IoidutXg/7aV19/afKeK4zVrUqW4qpJgmUv+Ew8SBsH XL3/AL+1Zh8XeIGxnWrw/wDbSufmQq5qW3ByK55X7jOtg8T64wGdWuj/ANtK0IfEWrnrqdyf+B1z dqhIFaUSkVyzc+7KVjej13VCOdQn/wC+6nGs6kR/x/z/APfVYkbYq1G9ZOc+7NLI0f7X1P8A6CE/ /fdSJqupk838/wD31VBTmrEQ5rCUqn8z+8zlFGpBf6g3W8mP/Aq0Iri8brdS/wDfVZ1qta0CcV0U XPq2YscJbr/n4k/Onedcj/lu/wCdTrHx0pWi9q70pW3EQrcT95X/ADqZLiQ9ZG/OomjxSKCDTTkg L6SserGpAx9TVSM1ZU10RdwHZb1NJub+8adSYptMYbj604MfWmU4U1cBcn1oyfWiirAXJ9aTJ9aK SkwDJ9aMn1NFFSgFyfWjJ9aKKoQZPrSEn1NLTWNDAjd2A4Y1TmnmHSVh+NWJW4qjKck152IqtbMa K8t3dDpcSD8apzX18Ol3MP8AgVWnGc1TmWvL56je7+8ZVk1LUh0vp/8Avqojqeqf9BC4/wC+6e0e TSCHPatYub6sdyFtU1UD/kIXH/fdV5NY1cdNSuP++6uvBx0qlPB14q3z92O5Wk13WR01O5/77qBt f1vtqt1/38pJoiD0qo6UKpPuPQnbxBrn/QWu/wDv5TD4h13/AKC93/38quUpjLWiqS7hYsHxFr3/ AEGLv/v5TD4k1/8A6DF5/wB/KqlaYVq1Ul3FYuf8JLr/AP0GLv8A7+Uf8JNr3/QYu/8Av5VEpTSt Pnl3FYvHxPrw/wCYxd/9/KT/AISnXv8AoMXf/fys1hUTcVSlLuI1x4q17/oMXf8A38pR4q13/oL3 f/fysIsaA5p3l3EdCvinXD/zF7v/AL+VKnibWz11a6/7+VzyPViN6luXcZ0cPiHWT11S5P8AwOri a9qpHOo3H/fdc5FJirKz471lzzT3GbL69qoHGo3H/fdV28QawDxqdz/33Wa02e9Rl81anLuI1V8Q 6v31O5/77qxH4h1Q9dRuD/wOsHdTlkwafNLuI7nw1q97d6xFDPdSyIVYlWbI6UVkeCpS3iWBc/wP /Kiu7DX5NRHkkY5rTsx8wqlHHz0rQtUwwrGbGjqNJPSurtXAQVx+mttIrooJ8J1rFVLFWLt3MAhr k9XnHzc1q315hDzXJapd5zzXTGVxWMTUZcsax3OTVy6kLuaqhCTWqLERc1ZjSkjjqyqYFRJlIZ0q J3xUr8CqsjUJXBjWekD1ExOaQNWlibltXqZZaoh8U8SVLiO5cMoqNnzUHmUnmUKINjmOaiIp27NG KtEiJ1rQtDyKoAc1dtThhSYHRWPat+z7Vzti3Sugs26VjJ2GkdBZnGK2YXAWsC1kxitFLjC9az9o NxJruTg1jTfM9W7ifOeaqL87VDlcVi1ZRZYVv20HydKzbCHkV0NtF8oropslmbeW2UPFcfrFlndx XolxBuQ8VzeqWeQeK3exKPMLy12ueKjtosMK39Ss9rE4rMjj2v0rnZojTsoMgVprbYXpVbT8HFbU cQZaiUExXMpkK9qFfFXp4PaqEilTXFOFjSLLUclXYW5rIjkINXoJelY2Lepu2jcitm3PArnbWXpz W3aS5AroptGEka0Y4qTaDUMLZFWF5r0oWaIIWiqIx81cK00r7VTgIrquKnXgUbMUoGKSVgHiikBp a1QwopaKLCCiiimMKKM0UgCiiigAoooNMQhNMY04mo2qJvQCCU8VTcZq3IOKrsteRWu2Uisy1VmW rzjAqlPWHLYRU25NSxx5po61ZiFVCSuMjaDI6VUnts9q1wmRTXtwR0rsUboVzmJ7X2qhLbEdq6qa 09qzri1AzxUOkO5zkkW2qr8Vr3cW3NY85wTWTjZjuRkim5qNn5pu+qsFyWkIpgeng5oGRstQulWy M1G6U0wKDJTNtXGSozHVpisRLxUyPimbMdqMEU9xFlZfepBP71TyRSbzU8oF8TZ704PmqKyVIstK wFvfRvqr53vSiWiwHV+Bmz4ptx/0zk/lRUPgF93i23H/AEzk/wDQaK9DD/AScNHB7VdggwRxU8Vv ntV2K29q4JSKQ+0G3FaPn7U61TCbBUU1xtHWsrO5shl/dZB5rmb2UuTWheXG4nmst13sa6qegmii YyzU9Lf2q8lvntUvkYHStXIkpLFinEYqZgBULmlcpEEtU5BVuQ1WetIgysVpMVMVppWtbkjKKdtp wSgRHRUnl0mygBFp4pAuKeBTEIBVmDqKgAqxAvIqWM2rJsYrftH4Fc9Z8YrctTwK4qsi0bMMuBU/ 2rA61nI+BQZDXJzF2LpnLHrVy0TcwrLhyzCt3T4skVtHUhmzYQ9OK3IEwKoWUWFFaiDArtpqxkxH TK1j6hb5U8VuHpVK7jyp4rdknAaradeK5uWErJ0rvdStc54rmLqz+c8VzyNEV7A4YV0VqdyisS3g Kt0rbs1IAzQgZNLDuWsu6gxniugCZXpVS6tsg8VnUhcEzm2UqamhkINS3MBUniqwBU1wTjY1TNa2 l5HNbVnN05rmreTBrYtJenNZqTTFJHT28mQKvI2axrSXIHNasLZFenh53MWiyKKQUtd6EJimkU+k IqWgG0A0hoFRcB4paaKdWiYgpCaDSZoAWikozSuA6ikzRmncYtNJpT0ppobEITTGpTSGspMCJxxU DirLCoHFcE1qMqyms+ZuavzVRkUk1w1nZDIF61biFQonNW40wKxottgTJUmMimAYFLuxXrwdkSxs iAis67jABrQd+Kz7ps5pzqJISOfv161gXKnJro7xdxNZFxATniuF1LyLMVwc1ESavywH0qq8RroT uK5GrHNToaiWM56VZjiPpQx3FxTWFWPLIFQScVCC5ERSbM0bsGnIQaoYwxe1NMVWgAad5YNLmAz2 iphQitEwZ7VG9v7U1MdjP6U0uRVt4CO1QPEfStE0SReYaUS+9NZCKZgiqEdd8O5N3jG2H/TKT/0G iofhwf8AitrUf9Mpf/QaK7KHwiI7aEHHFaKwAL0qvZAHFaRHyVwwjcaZl3XyA1hXlxgnmtnUWwDX MXjEsa15LGqZDJLuanwx7jUCIWatG2iwBT2KHpCAOlRzAAVbYbVrOu5MZppEMqzOBVV5KbNLzVdp KtRC493zURaml6YWrRILj80UzdSg5qhDwKeq01amUVLY0N2U0rUxpppIGRbaAtPxSgVRIKtWYU5F RxrV63i3MFAyx6AdTUyGW7VeRWvb9BTtL8NavfY+z6fMR6su0frXV2Pw91NwDcTQwj06muOdOctk Umkc8p4ozzXeW3w+sowPtF3LL7Aba04PCGi2/S13/wC+xapjhKj3H7RHn1mm5hjmul06I5Hyn8q6 yLS7CAfurSFPogqyqKowqgfQV1QwzjuyHO5l2yMFHyH8quLuH8JqzS10KnYgr/N/dNRyxuw+4auU VXKI529spGBPlsfwrCutOkDHMTD8K76jA9Kh00x3POUsip+6fyq5DBt7V27QxP8AejU/UVE1hat1 gQfQYo9nYdzm414olh3Ct9tJtj90Mp+tRPpHHyS5+opODFc5C7tevFZE0JVq7a60e4wcJuHtXP31 k8Wd8bL9RXHVpMuLMaM7TWjay4IqjJGVNSQPhq4JRszU6eyl6Vt2z5FcvZS9Oa37SXIFdlDQykjW U06oo2yKlr04kBQaKKoBpFJin4pMVm0AgpaKKEAGm06mmm2ITNNLUjGonfFclSrylJEu+nB6qebz 1p6PmsY19R2LW6kNMU0+uyMuYliUmKdijFNoRGRULrVg1G9YyiBRlSqrx81fkFV2UV5teKGiuqc1 YReKRVqVRxWNJJMqw1hgVC7Yqd+lVpa65TsiLETyVUl+ap3zUezNccpuTAz5Yd3aqU1t7VumHIqG W346UKm9x3OZmtvaqUltz0rpJrbrxVOS156VpHmQjFW156VajteOlXkteelW47bjpWc6rQ7GTJb4 HSsy5Xbmulngwp4rBv0xmrozuwsZDvg0JLUVwcE1X8zB613JXGayTCrCSA1ipPircNx71EoDNdAG qXyARVKCfpWhFKDWKi7juQPa57VWktPatbKmgxq1dMYkNmBJan0qrJb47V0kluCOlUprX2q+Rhcs fDuMr41tT/0yl/8AQaKv+BYNni+3bH/LOT/0Giuuh8IihYN0rUY/JWNp7dK1yfkrnpgY+o85rAmi 3PXQXozms3ygWq5NFopwWmT0rQjt9q9KsW8A9KsvEFSsHNFXMi5+VTWHeSda3b/gGuavW5NbQdxF GWTmoS9Ejc1HmuhIB+aWmA1IozQAAUqinhaXbSuA5KlU8VEvFSCpYxxpDUkMUtxKsUEbSyN0RBkm u60D4TatqWybVJBYQHnZ96Q/h0FUkS2cCBk4AJPoK6PRfAfiHWsNBYNFEf8AlrP8gI9vWvZdC8Da BoAVrWzWSYf8tpvmauhAwMAYFXyiuebaR8HrWHa+q3zzsOdkI2r9Dmu103wxoukqFs9OhTHcruP5 mtWiqUUhXExgYFFLRTEJS1VvdSsdNi829u4bdPWRwuay7Pxt4Z1DUo9NtNYt5ruQ4SJCSWPX0xQB vUVg3/jjwxpb7LzWraJtxXbuLEEdela1rf2l7ZJe2txHLbOu5ZVPyketAFiisfTPFmgaxdPa6fq1 vcTxkho1bn8M9fwrUknhidEklRGkOEVmALfT1oAkorOv9e0rS722sr29jguLs4gjbOZD7UmseIdI 8PxpJq2oQ2iyHCeYep+goA0qKit7mC7gSe3lSWJxlXQ5BFSUALRUSXEEqM8cyOqfeKsDiqmk65pm uRyyaZeR3SQyGOQpn5WHbmgC/S15+nlS+NblvDfi8PdtJm70yfLocddp7Ee1d4k0TyNGkiM6feUM CV+o7UAPprxRyjEiK4/2hms+bxFpVvrsOiSXS/b51LpCASce/pWlQBkXvhjTbvJEZhc/xIawLvwd ewZe1kWdf7p4NdvSVjOhCe6KUmjzyOOe0k8u4ieNvRhW1YzdK6aWCKdCksauPRhWdLocIbfbMYz/ AHTyKwWHcHpqPmuTQPkCrQNUI45YDiRfxHSriNkV0wfckkooorQAooopAFGKKKVgEprU+mtUy2Ag c1UkY5q3IKpyDmvJxFykR7jmpoyahxzU0Yrkp3uUWkNTCoUFTLXsUdiGLikNOpDXTYRGTUEjYqZq qymuWrKwiJ2qMnNI7U0V5FapdlpD1FSCmLUmcCs4ysXYa3Sq0gqdjVeQ1MqlxNEDDmlRc0E809K1 pJPczY4IMVFIgxUpfAqCSQAV1cyEVpUFU3jGatSyiqxbJqnawBHCCelXI4OOlMt0zWgkfy1yuPMx mVdQgKa5jU0wTXYXq4U1yuqLnNaxgojOUuxhjVFq1LuM5NZ7xkGuuL0AjDGponNRbDU8MZJqmBft 3NX45SBVS3gJHSrRiKrQo9RNk63OO9TJdj1rHmcoagF4VPWqWgjpRcKR1prFWrCjv/erKXoPetU0 xWOr8HKB4ngI/uP/ACoqDwPcCTxTbrn/AJZyfyorensMwrA4xWsDlKw7N8YrWWUbK8+MrDKl33qi B81XLp85qgXw1TKTZSL0DAU+aUbappLgUyaf5TzWNncZT1CXINc5eNljWteTZzzWLcHJNd1JAUX6 0ypHHNN211CBRUyCmKKlUYpMY8CloFaOi6FqPiC9W0023aVyfmb+FB6k1AGcAc4AyT0AruPC3ww1 bXAlzfZsLM85cfvHHsO3416D4S+GumeHlS5uwt7fdd7j5U/3RXaAY6Vqo9yWzG0Hwpo/hyAJYWqi QDmZxl2/GtqiirJCiiigAooooAKKKKAOD+Lei6VfeErjUr9GM9jE32cq2Pnbpn1rO8B+GNJ0LwHD 4ke0QaibR5vPbkrkHGPSrHxruzH4OisUPz3lyiKo6tg5xVzxw6aD8J7i2iOwi2SBPqcf/XoA4Pwr Y+FdP8EXHinxRbRXF3dyyGFHY7pOegH171Wg1HVdG+GMOkIskM2v3jC1j5ykJxnHpniq2l+Grbwx 4y0OHxJGbvTb+FJIN5O1GYDgj2au38VReb8YvC8LoBbRoWiA6ZGe35UAY3jTwvZeCdL8KvpsQj1C O9RZJ1+9IcZOfbNQ/GbXJYvE2iQxuY5LSMT5Bxgsf/sa2vEMn/CafFfTdHtW32ejET3Dryu8HP8A gKx9U0o+MPiL4rQqJBZ2DRQn+62Bg/nmgDU169g1v4s+HyxBtrKyN3IeyqVLZ/QVmWlhc+On17xn e2z3kNqkkemWeCQxA4OO/wDjXM+Gri+1DTfEGqSgtJY6UttGwHQAhf8A0HNdBeSa9oXwu0bU9K18 WFt5PNugAeWQsc4PegDuvhFpt9pngeKLUIpYZHmd1ikGCqk8cdq67U7xdP0u6vH+7BE0h/AZrF+H 66t/wh1jJrc8k95KpkLSfeCnoD9BVX4o350/4fanIGwZUEP/AH0cUAeafCrxH9li8TJNKdr2z3Kg noRnn/x4Vs+DtTHhL4NXeuMcXF3JIYz3Lk7VP9a43xPpc/hnQ9FvbVPLOq6X9nucDvkE/ieK2tds 7/VbXwx4K0WNJJ7e1W7nRzhQ5GcN7Y/nQAz4a6VdaV8TbIXpJuLqxa5cMOVLdj/nvW9qHiGLwV8Y NVuLtitre2YbnozBcj9Rj8aqeF4NdtvjRFF4ilgkvRYnmA5UJjgVP8S9Hg8RfFDQdKQZaWP/AEj/ AHQc/wAgaANr4X6Pc3095411dSbzUnPkBuscXt9f6V6PUcEEdtBHBEoWONQqqOwHSpKACiiigAoo ooAQjPBHFMMQHK8e1SUUAR8jrRT8ZppXFACUUUUDCiiigApGpaDUyQEDiqsi1ccVXkrza8LlIrba njWo881LGawpw1HcnWpBTFp/Su+CsiR2aQmmlqaWqvaJBYRqqyjrVhmqF+a56klJCKjrSBamKZpA leXODuWho4pGanMMCoJGxXPO8SweT3qtJJ702aXGaqmTJrmUm2BYDZp4bFV0OakJ4rZVuVENBJLi qc0+O9SStVGc9aUazkxWGST5PWnwncapnJar9nESRXfTk5aCsadpHkCr4TC0y0hwo4q064Wun2dl cRk3w+U1zOoR7ia6i96GsC6j3E1yTqWdhnMXFvkniqL2vtXRy24PaqzWme1bxq6AjB+y+1WILbkc Vpmz9qngs/mHFX7W4DbW14HFSz2+F6VpW9thelMu4wENdkXoQcnfLtJrIlcg1uaivJrAuOtTuykI JyO9SrdEd6ok0m8irsB3nw4uTJ40tVz1ik/9Boqj8L3z48tB/wBMZf8A0Giuml8IiC3fFXRMdtUI lNWApxXlsoSaXPeqjSc1PKpxVKTIpxQEvnYHWoJp8iomfFQu9aKJRBcMTms+UVdlOaqSV0w0Aqst N21K1MrYBVFSKKYK7z4f/D+XxHKuoaijR6ah4B4Mx9B7UrXApeDfAd/4qnEzA2+nofnnI5b2X1r3 PRtD0/QLBbPT7dYo1HJA5Y+pPc1atraCzto7e2iWKKNQqIowAKmrRRsQ3cSlooqhBRRTWdUGXYKP UnFADqKQEEZByDXJ+IrzxVcXk1voMCW0dmnmGWcAm6bGdiD096AOtoqppl1NeaZb3NxbSWs0kYMk MgwyN3Bq0SAMk4A7mgBaKQEEZByDS0AYHijwjaeKZdNe6nkiGn3HnKqAYfpwc/Sn+KvC8HirSo9O uLiSCNJklzGAS23tz2raaREIDOq56ZOM0pIUZJAA7mgDn/FPgzTfFekw6fdF4fs7KYZY8bkx6fhT fEngyy8R2VpFJcT2tzZf8e93C2JI+MHn3rogQRkHj1pFkRjhXUkdgaAOf8I+CtN8H2ssdo0k9xO2 6a5m5eT/AOtS6F4OstB1fVdSgmllk1Ng0iyYwgGeB+ddDSBgSQCCR156UAc/pfgfQtIh1GG1tj5e pk/aFZicg54Hp1rB0/4Q6PaahBPc397fWtqxa3sp3zHFzniu+yMkZGR1FI7pGheRgiqMlmOAKAFA AAAGAO1YvizwxbeLtEbSrueSGNnV90eM5B961mnQWzTx/vVVSw8s53fSuZsb7xfq+rQTmwg0rSVO XWZt88o+g4WgC9rHg7SNd0u006/hZ4bNlaPa208DFVPDvguLQvEGpaw9ybia8ASMEf6qMdF/Suno yAMmgDCbwlZN4yXxR5kgult/I2D7pHr9ajbwdaP44Hip7iVrhYfKWE42LxjPrXQK6Pnaytjrg5xS SzRQJvlkWNem5jgUAPpnmxmQxh13gZK55x9KVmXyy28BSPvZrzELp3hvxA3iTVBeWcC3LW1uGYvL eSHq7DONo7AUAeoUU1GDorr0YZFKzKoyxAHqTQAtFJnPSloAKKarKwyrA/Q1yuran4rvb6Sw0DTI raONwr3t44wR32IOT9aAOrpaZErrEglYM4UbmAwCafQA0j0ptSUhGaAGUUUUDCiiikwI3qrMatPV KauSsgIC/NSxNVc9amhrjg9Rl5OlPNRp0p5rs6AMY1GzU9hUTCuKo3coTdmjrSAVIq0oXYmNCUvl 1Mq04rXT7G6FcpSJgVTnGK1JV4rPuF61w18OUmZE+c1AAc1dliyajEOK8ydNxKuIgp56UoXFRu2K 453GRSmqEx61YnkqlI+TXRRiSwRMvWxYwcjisy1XcwrobCLgV62GjdkMvwR4UUswwtTxrhainHBr 0pxtEkxrzvWPMuSa27pc5rKmTk14Nd2kWZ7x89KZ5OatMlKkeTUqY0isLbParMFpz0q5DbZ6itCG 1A7VvQjKTuxNlFbfavSs+/XCmuhlhCpWDqfANeslZEHH6l1NYFwOTW/qJyxrDmXJNRHcZRYUwirf lZprRe1bJjOj+F3/ACP9p/1xl/8AQaKf8MVx4/tP+uUv/oNFdNL4SQgizVxbfI6Uy2A4rRQDFebK A7mZNb4HSsu5TGa6C5AxWJeY5qYqzGZEpwars9S3BwapyPXVFFCSPVZ2pXeoHet4oAZqZmmk1ueD /C9z4s1yOxiysC/NPL2Rf8TV2A3fhz4Gk8UXovbxCumQN8x6ea390e3rXvcEEVtAkEEaxxRjaqKM ACodO0+20rT4bGziEcEKhVUVarRKxDdwooopiCiiigBkkixRPI5wqAsT7CvFNC0O6+IJ1rVdW8R3 lrp1tduERX+TA5zycAAYr1bxZfDTfCmp3bYxHbP19xj+teAaFbatcNpXhfVNRk0zSNTbzl2j/W54 Gfr09KAPTfhLrdxJoWqx3VzLcWGnTEW9zL1ZMEkZ9sD864Kz8Q6rrXxPsNZaaaK1vb0JAoYgNGpx jH4c13PxHks/Bfw9j8P6PF5bXrCFFX7zD+Jvcnj864e0vJJPE3g3Tzo0+mx2TKq+d1mJbLN09aAO ++Mvia/0DR7GHTbqS2uLiYnfGcHao5H61z3jDxrqH/Cq9Iie5Lahqi5ldeG2L1PHvgVP8S9+s/EO 00xQZEsbF7gqBnrnP8hXCD7RdeCJ9VvVyqFNPsVx053MR+WDQB7Z8Kluv+EAsJbueSZ5tzqZGyQu cAfTit7xHqA0rw5qF8W2mG3dlPoccfrSeGbJdO8M6baL0jt0HPuM/wBa5v4vXptvAN1Ao+e7dIVH rlgf6UAcDZeFptU8Bnxdr/ii/jYRvJChfgEEgYyepI6VqXvibU5/gStxeySC6uJBbJIThpFzwc+p ArA8LaRe+JfElv4V8U6hLb2+nRBobFRgSDrjP05rrfiwkaf8Iz4cs4VSKW7UpGgxhVwP60AZnj2w 1zSfBGmanb6/cW8EVrDG9qJCC7tjJ464zXV/DzwM+hCPWrrVLu6uru3G6KU/KmefxrM+L6rcL4d0 GM8XN4qkd9vAFemQxiKFIx0RQv5CgBXdURnY4VRkn0FeM+GPGZ0LTPEfiS/neeW7vDFaQFsh2Geg /EZr1HxXejT/AApqd0WwUtn2n3IIH618/eC7MWXizQn8QRM1heHzrbccoWJwGP4jn8KAPSdJXWtC 8Fa14u129m/tG/gLrGWIEIPCYHY8iqeqalf2/wABEuL+5mnur5QjPMxLEMxwM/QVtfGi9a38ECzj GWvrhIgPXv8A0rzbxL4L1bRI9BsbvXHvl1CVQlsAwEQ47E+5oA6TVL3UYvD3hjwFpMrQ319AjXTq cFFIz+vJ/CtPQFvfBfxKtvDCanc32n3drvCztnYwB5HpyKPCFul98YNcuZVBGnRC3hB/hxgf40ug y/8ACT/GjUNVh+e00qIwI3YtjB/XNAHqNeO/F628QWOow3ltr0621/KsENnG5Xaccnj3r2KvMPiE G1T4k+FtIHKI4uHA9m/wFAFTWdEn+HHgO/u7TWLye/1JoohI7YMZP933680nxLkvB4A8OaVNNJJd 3skMcrOfmY7eSfxxVr4zCbUZdB0G2cLJe3BOf7uMAH9a5WXwnqGm/EvQdH1LWJNVYOJ+c4QLzgAk +lAHReI5r7xT4r0/wHp13JbWljAp1CSI4PAGR+Ax+JpPCenmTx/f+FtVuJdUsdK/0mzFy24xsCAP 51a+FISW/wDE/iG5ceZJdsjO38KqSad8L1bW/FPiLxWQwiuJjDBkdVzn+goA9OryjxNc6h4+8fjw np93LbaZYDdeyRHBLDqP5AV6rK2yF2wTtUnA615l8H1jj0jWtfu3HmXFyxkduwXJP86ADwHqd/o/ jjWPCl7qE17Z2qb4JJmyYwOevpio/AviDUb2x8Wa5f3kz2yMwt0dyVjwG6enasTw1cy6h/wm/jLH 7swSRW598cH8sVYgC6H+z9KzH59TJIJHJLn/AAWgDZ+G+ptonwtutf1CZ5NzyzfvG6kHAA+prk/h rqGr3XxNiudQnmA1CGS42M5wynpx+FS+Mrp9O8BeGvCltHLJJdRJcXEUY+Yr12/XP8qseE9Rk1H4 vWTvpUmmCHT/ACkt5OoUDg/jQB7bRSUtABRRRQAhGaZUlNI70ANooooGMeqsqZq4Rmo2TNYVI3Az zFzU0aVN5QpypjtXMqWoCqMUppwFIRWvLZDGMKiIqY1Ga5aiKQ0CpFFMFOBqYWQMlFLTAadmu2Ei WMkHFUpUzV1+RULJk0ShzElBoc9qjaHHatExVFJHx0rgrUNCkzMkXFUpjjNakyVmXK4zXh1aVpGi ZmzvVXJLVZmXJpkUWX6VvC1iWXLGPJHFdJZR4UVkWEPIrftUwBXs4aKsQy0q4WoJhVk8Cq83Sumq 9AMydM5rOmi9q15VzVWSPNeLUp8zGZJg56VPDbc9KtCEZqxFEBW1LDoTYkFuABxVxYgBSIAKeXAF d8KaiK5WugAhrmNVPBroryUbDXLanJkHmpqVEhpHLX/LGspo8tWtd8sapqmWrOL0GQpb5pJbfA6V qQwZFE8Hynitkiblj4bx7fHtp/1yl/8AQaKt/D+Lb44tW/6ZS/8AoNFddH4QMyCfGKupdcVkxK1W o0bFcm6AsTXBIrJu3zmtFomI6VRuYTjpSUNSkYtweTVCQ1pXMeM1nSrzW8VYorOahap2FRMtaoBs cUk0qRRKXkkYKqjqSa+kPAPhSPwp4ejgZVN5OA9w47t6fQV5p8IPC41PWn1m5j3W9jxFkcNJ/wDW r3KtEiWwoooqiQooooAKKKKAOe8daNf+IPCd3pWnNEs1xtUmU4GAQT/KsXxZ8PW1zwjp1jZyJBqW mInkS5wMgAEZ/DNd1RQB59J4W1jUfHmmalrZjbT9JslIfPyvNj5jg9u/4VZ17w43izxLoPiDSr62 ktdPkPmYbO4Bs8YrtZ4Y7mCSCZd0cilXU9wRg1V0jR7DQtOj0/Tbdbe2jyVQEnqcnk0AcvY+Db1P iVqXiK9eGSzuLcwwoDk4OMgj8P1qt4t+HbanbaPp+iJbWmn2V358sJyOp5I/Wu+ooAREEcaovRQA K5Px74Y1DxQukwWjwrBa3qzz+YSCVHYVoa/4v03QHFvIs13fOu6OztkLyN6cDoPetLSbyfUNMgu7 mzkspZV3NBIcsnsaAOU8X+B7rVPEWleINFmjtr6zkUSl+A8YPt37UzXNAbWviXo18moWzLpiF5rU v+8Ge4HpnFdzWfBoGmW2tXGsw2irfXKBJJsnJA7UAc94i8I3utePdE1kSRCx09CXUn5t+SQQPyrs aKp6rq9joli15qNwsEKnGT3PYAdzQBl+OtEvvEXhK80vT5I0uJ9oBkOBgEEj9Kw9e+HP9qeBNO0e B449Q01FNvMegbuM+hroPDviV/EUtw0elXdpaR48qe5XZ53uF64rcoA4TxX4M1jxFa+HYXu4XOnz JJdsxI3kYyR+tW/EPg271nxtoespcRLZ6adzxNncSDkYrsKKAPPPEXgzxJBr9/qvhO8tof7VjEd2 k45U/wB5TXQ+CPCUPhDQxZLJ51zK3mXM399z/SuirM8SXNpaaDdSXtzLbQlNrPD9/nsvuaANLzEx u3rgnGc1x7+EtQl+KaeJpZYjZQ2xjjTPzBiMVj+CNM0ubXpUkg1SxubYLPFY3dyXQqekgHr6j3r0 qgDjNc8IX+q/EPR9dE0f2GwXLIT827/P8qcPB10/xRbxVLPEbVbYRxR87w23B9sda7CigDy3U/h7 4ot5dS0zw/qNtDo2rTebOJARJHn7wB9K7/w5oNr4a0O20q0H7uFcFscu3dj9TVy+vrXTbOS7vZlg gjGWdzgCsDSvG9tquovGllcW+nqvyX9yPLSVycBVB60AdMRkEHvXjniX4c+LLWwvdO0G6ik0iSdr lYAxWXJ6r7ivY6KAPPPANhBrXwym0KWwn019r28+9CCzH+MZ69axrT4X+KLmWw0nWdXhk0LTpN0S Rk7nGcgYxXrlFAHD6H4Xv3+Imp+IdUt0SGJBBp6ZzhcYyPTj+dWZvCF4/wAT4vFCTQi1Wz8koSd+ 7n2xjpXX0EgAknAFAHK+E9G8S2Grape69qouYrmQ/Z4EJKoueD7ccYrq65BviBb/ANsxQLYTHS5J /s39pE4j830A6kZ4z6119ABRSUtABRRRQAxhSU8jIplABSYpaKQxu2lxS0UrAJikIp1IaloCJhUb GpmFQScCuGqikNLYpQwqBmpA9cqeoy2DTgarq9PD1005CZN1o201TmpBXbHUgTbxUUkfFWMU1hRO KaAzJ46y7pK25xwayboda8XFQRaMaRPmp8MXzVI6/NUsCc15UZ2kaGhZx4ArXh4FZtuMAVfjbAr3 cPVVjNosM3FVpWp7ycVWd81dWqmKw16iK5qQnNJisYK4mRhaXOKU8VBLJgV1LREkpmAqN7njrVKS f3qu85x1rkrYixSQ+8uMg81zt/LnNaNzKSDWJeMTmuWE3NlGXcHJNRxLlqdLy1SW65au1aIRet4s rTpocjpVi2j+UVK8WRXRFkkvgiDb4ut3x0jk/wDQaK0PCEG3xHC+P4H/AJUV20vhA56LTTkcVci0 72raW0C9qlEKqOlc8UguYj2IC9Kyr22Cg8V1NwFCmuf1FhzWlkCOVvI8E1kzJzW1eMCTWTNyTU3N Eii61H5bOwRBl2OFHqasuK3fAekDV/GNlC67oom82T2A5H61UWNntfgvQk8PeF7OyC4k2B5T3LHk 5/l+Fb1FFdBkFFFJQBxPiX4g/wDCP+NtM0H7OksV4FErlsGNmbAqPUfEuqf8LZsvD9pMi2QtfOuF K5z1zz27V5j4+a61bx1rWsWx/d6KYdw+jBf581cbxCJ9c8WeKbWTd5dkkEEn91nAH8waAOj8Q/EL xDqGp6gfDBgh0zRgTc3UwyJWB6D6+ldA3j+X/hVv/CVG3SO5ZNqxnlTJnA/CuLg1jwj4e+HkXhjV jdNcX8K3FyII8NlsMPmPB6Cp/Ht1Yj4W+H9N0KKX7LfSjyEk++dpzz+JoA3fGfizWLX4YaZqUEpt dS1ExKWh4Klhk4/Km+J/F/ijTNQ8P6DoiwTX99ZpJK1wu75jwc88dDXF61L4t1PW/Dmg+ILSO2Tz kaCOPGSFIyTj2rW15vEWpfF68m8L28U9xpcCx5kYBUBXrz7mgDuvB1v45jv7iTxTcWb27r+7SHqG /wAK6+ub8Gf8Jb9luP8AhLPs/nbh5Pk46d84rpGYKpYnAAyTQBxNp8QRP8Srjwo1ugijUhZt3O8A HGPxqjYeObv/AITPxMLydV0nSICwTH8YOMZ9TzXmNreXNv4yXxrN/wAew1N1c+nXH6UPcS6hoV55 TFW17WxGT6p1/wDQsUAdbH428Zw6c3jWe1sv7IkuBGsDR4lMecAhvSuw8f8Ai+fSPAseraS4Wa7M YhYjON3PT6VjfFVbfSPh3YeH7dcPNJHFEijrt6/zqh8Q7d4ovBnhn7zedGze+3AP86APUtKknm0i zluWDTyQI0hAx8xAJ4qr4m1+28M6Dc6rc8rCvypnl27AVqIoRFRRgKMCvLfi5PJqmu+H/DEbDZdT +ZKv0IA/TNAFTw38QPFz+LtPtNZt4WttXHmRQouGiQ9DWn4j8Ua/rvjM+GvCiW3+gDzLme4QMoYd v6fjXQ6vbeHNO1JdQIh/tfTNPc26GTkRKD/D0Nc58JLeOz8Jal4kuj++vJZJHdz/AAryP5mgDoPh 74sufE+m3UeoQJDfafMYJxH90kdwK62vNfgxFJPp+sawyFUv71njz6d/1rufEOpDSPD9/qB/5d4G f9KAPOPGvxE14avf2nhcRLbaOu+8ndc7jnGB+PFa998Q722+F1p4nFtEt7csqLG33SdxBI9uKyvh npWmy/DrUtS191MGqSs108rbflBx1+tVPipFDHpfhjw94fiDxvJut4lOQ442jn3zQBt/ETxJq+n+ H9CSzuXtL+/uIxIYuDgjkfmRUfijxNruoeJrTwj4b8h7yBFku7iZdyowGf8AP1rj7288Tav8QdEs fE1tHBLZKZ0jTGNoUtk4/wB2ur+EMK3EWueKrpv3t5cv87Hog5/r+lAG54B8TXWvz6jaaxbQR6vp knlSyRLgOpz0/Ku0rzH4SB9Q1XxJr2wrDd3W2P3wTn+lemkhQSTgDkmgDzq++J09r8Sk8MR2Uclu ZVhaTdhgx71m+M/iRqth8QbTQtGki8pZI4p9y7t7MRke2Aa8/uNRNv4jbxfMrSE6m5UDqdv+RWt4 e0trj4jaHNfj/TLkPqF0T6HLr9OMUAd7418VavceIrXwh4aSCS+kUPcSyruWIe47etZel/bPHmvf 2B4laOG48PXHmubX5UuMHAGO31qx8Krf+0ta8ReKrohpZblokY/wgcn9MflVTwTOt1r3jXxTGcW+ JFjPr1I/lQB0PgHxPqniLxD4gW5dDY2k/lW6Kv3SCQefwru686+Ctsy+Erm+cfNe3by5/IV391N9 ntJpz/yzjZ/yGaAOF0Hxtc3njDxKt9cRw6PpajaWH3SODz+B4qTwj4r1rxPqWo6x5K2/h6BGS3V1 +eVhzuz6f414zpVzPrmt/wBjT3JtLDV9Q82aTGN+W6Z/zzXvPikW/hj4c38digiitrQpEo9+P60A ZXh3xvf614J1vXbhI4hbeb9mKDHABxn3zWDYePNW0X4W2+o3s7X2rajO6Wgl5JHTOO4FcU974v0j 4ZLZvZxw6Lcn5Zjje245+tdJoOm/2h8QPD2iz/8AHvo2nLNsPQv97n65FAG5oviDxFouv6V4e8XW 9lLDqce+AxIAYmHOG981t6t8QP7L+Ilj4Y+zpJDdKqtLuwUdicfh0/OsTxMw1v406Fp8IJ/s6IyT MO2Ru/w/OuC8UzXV9451jxLAf3GlXkIP0zjj8jQB6m3iXVJvi4dBgnQadBaiWZSuecevbqK5/wAQ fEPxFqGo6jJ4YMEOl6Kpae5mGRKw/hH16YrCh10faPG/im0k3b0Ftbv7OR/QVbXVvCHh7wDH4V1f 7Ubm5jW4ufIjIYs3zKdx4PGKAPUfB2vv4m8MWmqyQ+TJMvzoOmR1x7VuVi+D/wCzv+ES006SkiWR gBhEn3se/vW1QAVG/DZ9akprj5fpQAylpuaN1JsB1FN3Um6lzIY+im7qM0roAbpVeQcVZPSonFY1 I3Q7lGQUzvViRai2815s42YxVNPBpoFPVauDAkSp1qFBiplrspyEPpjmnZqJzV1JWQIrTmsycZq/ M2SapyDNeBiqvQtIz2iy1TwxYNTCPJ6VMkWK8yEW5XLFiXAqfdgUwDAprtgV6MZOKJFaWoy+aid6 YH5qfatsRaU5p3aoUapQ2RXfRkQxsnSs+4frV+TpWbcDk1tUlZEopSPzUZORTnU5pNvFeLUleRZU n6Gsq5QkmtmVM1RmhzW1KVgMR4ualt4juq41vz0p8Nvg12xncLFiBcKKmK0+KPC9KUrXXAlmp4WT GtRH/Yb+VFSeGBjWI/8Adb+VFd9P4RDJJVWqsl2qjrWddagFzzWPc6p1+auNSCxr3d+MHmufvrsN nmqlxqWc/NWZPeFu9aplJDrmXcTVCRqHmz3qFnzQWhGNel/BexD3epagRzGqwj8ef6V5gzV7V8HI AnhOWfHM1w36cVpBaik9Dv6WiitzMKa5IQkDJAyB606koA8r8G+Fby+svGDanZSW82pTSJGJR1zk gj8cVk6H8NtZX4ca5Y3Fq0V/PMrwxHrIE6fnk17VS0AeKzWuveO7TSvDY0GXTbazVFvrudACdoxg Gt7xT4fupfG3hHT7Syc6XY4YyAfKuDyD74Ar0yigDzvUdC1PUPjTY6i9rL/Z9lbb0mI+QtggjP1N cdouo+M/D/ibXZrHw1Nd3F7OxLOh+UBjj8K91pKAMbwpe61f6Ik+v2K2N6XYNEvp2NW9d8/+wL/7 LG0s/wBmk8tF6s204Aq/RQB5Bpngi+vfgxc6fJaSLqMtw11HEwwxYcAfzqA+BNYsPh/ocy2LSahp V99rmtl++6bs4HvXstMmmit4mlmkSONRlndgAB7mgDy/SbHWPH/jmDX9X02Ww0rTR/o1vN1d/X/H 8Kv63pOo6j8ZNHuWtJP7PsoC4mx8pODkfniux0fxHpWvyXKaXdC5Fs2yR0B259Ae9adABXl/xAsN S0zx9o/iu206fULa2UrJHDyVbBA+mc/pXqNFAHmHhPwpq+u3eteIvEcLWtxqkL29vC/WKMjGfbjF c+sXi2Pwwnw+ttEuIpmlKzXh/wBWYieoPpXt9JQBm+HtFt/D2hWmlW4Gy3jCkj+Ju5/E1X8ZaXPr XhDU9OteZ54CsYzjJ9K2qZNPDbR+ZPMkSZxudgoz9TQB4dZaf4m8S6FpXgtNHudOtLST/T7iQYDY PT/Peur1DQLub4taCqW0g0/TbIeXLj5crnj69K9FjuIJXKRzRuwGSqsCQPWpKAPOY/Duoal8XtS1 G8tJY7JbEwwzEfKxI28fgTXMJD4r0Pw9deBLDRLg3FzO4W9X/VmFjyc/SvbaKAMbwl4ei8L+HLXS osFo1zKw/jc9TVrXjOvh/UDaxtJP9mk8tF6s204ArQooA8q8KfDqLWvANhbauJbeZbxrplxgnPBU /lVvw9ol9c/FjWtQvtPkgtIrfybdiuFZeFGPwzXpVFAHiqr4p8KaZqvhHTtEuJZ9Qu3eC9j+4I3w Mj3GK6i58K3Xhr4RXmkadC1zftDmTyxku5I3Y+gz+Veg1iweLtFudfbRIbsPdqDwAdpI6gN0JHpQ BB4B0yTSPBGl2UylZEh3MCMEEkn+tWfFxuh4T1P7FA89wbdgkafeYnjitiigDxxvh5dXnwm05obd otasd1xGAMOcsTt+uOnvWz41Gu6z8JrJGsJVv7h4luYQvzIOckj8B+del0lAHmPj7w1qd94X8MaJ ZWkk0cM0SXJQcIoUDJ9qTXrPU/Bvjo+JrLSZtStrmyEBWHqkgAAz7cCvUKKAPPfh34c1S0/tLxTr cBGrajuZIj1ROoX8eKx/CPg+9vvBvimG/s5ILrUp5PLWUYPHIP5mvWazda8Q6X4eghn1S6FvHNII 0cgkZPrjpQB5Zo/w71hfhTqunTWrRajPOJY4T1bb0/MZxSXNvrvj+DSvDo0GXTLW0WNb67nQBjsA GAce1exwTw3UCT28qSxOMq6NkMPY0+gCCxs4dPsYbO2QJDAgRFHYCrFFFABSHkYpaKAK3SkJpzDD Go2rGo7AgLUb6jY03dXG6mo7Ewang1ArVItaQm2MmzTWozTHbFbSloIikqAnmnSPUWea8urLUpEq 1Mg4qFKnXpTpajHgU8dKaKdmu6OhIE8VBK3FSM1U55OtY16lkNEMr1DuyabJJzUYk5r52tK8jRMs qKlAFVkkFSCUVpSsDZMelQSGgy571G7ZreWqJuQyHmo92KdIetQM2DWDVguWUkqwjVno/NW4nzXX RZLJ25FUp0zV3qKhkWumq/dIM1ouaYUq461C614lV+8aIpOlQNFntV1lpnl1UZjKBg56U+ODnpVs x+1ORK7qUhMYsXHSo3jq8E4qKRK9KEjNlvw2uNXj/wB1v5UVN4fXGqRn/Zb+VFejSd4iR5fd3555 rHuL0nPNR3E5NZ00hzXLCJZNJdEnrUBmJ71AWoBrdRGibeaQtTRSGiwxC1e8fCE58Awf9d5f/Qq8 FNe8fB9lPgOFQeVnlz7fNWkdyWdzXOeM/Gdn4P09JZY2uLu4O23tk+9If8K6OvJtOuLPxJ8UNT17 VrmFNO0M+TbCVwF39jg9+Ca0JOq8F+O/+EmurnTb3T5NP1K0UNJCxyCD3H+FTeFPGTeJtZ1mzS0E cGnSiNJd3L5z2/Cue8HWOmaZq/ibxFb67BqcsgeQrH1iXJYZ/l+FVvhdcw6P4C1jxJcHAkuJZGY9 SF6fqaANDxZ8VYvDviyHRLezF2PlE7b8FWY8AfhXVeI/FFl4Y0MavfK5hLKu1OTlq8Du7VLnRbDx FdzRvqWqaxvKhwWSP0I9M13vxommudJ0XRbVS8t25fYO+1Rj+ZoA6rxV48h0PwpZ67ZQfalvWQQI 3y7gwz/KuptJmuLOGdk2NJGrlc52kjOK8BXUm1zw54K0MtukW9benoqNjn8M19BKoRQijAUYAoA4 jxr8TrfwdqIsX0m5u5DGHLqdqDPvjmmeHPH+qapbX+paloElhplrbGdZmJ+fAzgZ68VR+NUwfQ9O 0xDiS9vUQ46lef6kVd+Jk/8AYnwtltkOCYorYAdxwD+lAFu88eZ+HE/iu0tfKbb+5imOQTnAziql /wDEd9H8GaZqd3aLNqmpqPJtYsgMT39cV5hqfi+W+8C6V4Rj0q4tBvjQzyAgSY9PqTXXeHLL/hIf imFnG608OWiQxRsOAwGP55NAHX+E/Hf9vanNo2paZLpeqwRiRoJDnevqPzFZXxZ8TaVotpYW19YL qMkkhkFu0hVdoGMnHX6VStZVvfj7dTQn93Z2JSZuwI7frXH+JZrfxbe+KPENxPF5OnqLexjaQZZs 4yB34yaAPY/Dup2Eng631iCxjsLd4POMKAAKB9PpVfS/HOm614VvNesQ+y1Ry8cgwQwGQPxrl59R Gm/AGKQthpbIRIf9piRXnnh/VJtF8B+JdJn3RT3McUkQJ5wSAf0NAHsGmfEC3k8BjxVq0AtIiSFj Vtxcg4AH1NZ/hf4onWdbg0vUtIl0975d9kxORIvUZ/Ada49LWHVNV8MeELmVItO060F3eB22qSfm IJ+hH511Ftpmh6t8VodZttetJzbQBYLOPkqVGOO2ME0AekVxfjv4hf8ACHXdlaRaa19NdBm2q+CA MfnXaV4hrPiY3/xstJF0+eePT2ECx7eQe749Of0oA9K8GeONP8Z2kr28b29zbnE1vJ95ff3Fcr8W fE+j6XfafZX1h/abbWd7ZpSqqpwATjvwcVU8CSxSfFLxVqUBEdlCr+Y44UkNz/ImuL18xeI9O8Qe LbuePzHukgs4i43BQeSB6YxQB7Noseh+GfCLazZ2RtYJLcXMily7dMgZP5Uj+O7CfwJc+KLBWkjh jYiOQYO8fwmub8bah9i+C9pCCQ93bwwrj6An9BXnlpqctj8MdV8PzEx3P26I7CedrYyP0oA9hPxA tbLwJbeJtTg8k3KAxW6NkyE9AKq+EPiO2v6z/Y2p6VLp17JH50Ksch0xn8DiuSitrTWPHWmaLeyx xaV4askaRJGCoZABwc+5H5V0Xh7TNIvvijf+ILbXre9laLEVvHyyDG0/hx2oA9FooooA5bxb4/0r wfd2dtfxyu11k/uxnYB3NU/HPxFt/COnWNxDb/apb0hkjJ24TGc15r8WZG1fx1cqrkRaZaruPYNn J/n+lZXi67fxXPa38bt9ljki0+1T1O35mHtmgD2PX/HlppXgq31m5tnEuoRgQ2gb5mJHTNYnhXVd I1PULLw9qnhx9G1C0H2q1Vm+8T1IPXJB71nm0/4SL4t2GjyAmy8PWqboz90uAD098j8qt6qftvx7 0uODn7FblpiOwKn/ABFAHTv4yY/ESPwrFah1NuZZJi2CpxnpXU15f4KK6v8AF3xNqh+ZbcCKNvT+ EgflXqFAHm/iT4ww6HrE2lxaFdXEsT+XvZtgZvYY5q5F8Q9QsfCN3r+vaDJZ+VKscEJba02fr0rM 8eqdU+KHhjSUwyRH7RIuPRv8BTPjfqCQWGj2Er7YprrzHH+yuP8AGgB4+LOqwtFqF94VurXRZGVf tL5+UE9c4wa6rXPG9po2q6PYC3e5fVmwhRgNgOMEjvnNef6jqF/8Vr230LRLWS08PWrKZrmQY3gc f/qFXXt01P44WFjHnyNFs12jsCo/+uKANzxV4nvrvxK/gjS7cie6tSWuRJsMWRnP5VgyeLE0WBPC Nno0niZNKhP2+d+R3LYznpmq8eq+X4/8ZeIXBI0y0aGJ/wC6/CitT4eWEWi/Da/8QXpBm1BJLiWQ jnbyAP5n8aAIfCywG5fxfpNxLY+GbW3Y/YN5/wBcPvDB7ZrrI/Hen3nge68T2Cs8cEbHypBg7x/C fxrzSwuW0z4CXrNlW1C6aOL6Fh/gawLDU5tM+GeuaFMTHctcwsEPXa2M0Aexx/EC2tvAUHijVYPI 89cxwI2TIewH5VT8I/Elte1pdH1PSZdOu54zNbhjkOmM/hxXIpbW2reM9H8P3kscWleHrJJJ1kba pkwCQc/UV0miabo+o/FS61+3162vJBDiG2j+8g27T+GPSgD0WlpKWgCBvvmo2pzN+9b60h5rCpqg IHqOpmFRlea8+UXcoEqZaiC1IK0hoBITxUErVN2qGRc1rJ3Qiq55oXmnMnNCriuGUdRomQVKDUKn FPD1cXYZNmgmow1LmtefQLDJWwKoTvVuY8Vm3Dda4a8mMryyc1D5uKimlwaqvPjvXl8t2Mv/AGrH elF371jPc89aEucnrW0YNCubq3Ge9SBsisuCXOOavxtkV1KGhNx79KqvVpuRUDrWbiFyNDzVyBqp qvNWoeK0pqwMuA8U16FPFIxqqsroRCwqFlqyRmmlM15koXZZUMdAi9qteXTvLreFIVyi0eKRVwat SJUO3BqvhYMcBxTHXNSKOKNua6qdUhlzQ0xqKH/Zb+VFTaOuL5T7GivbwzvADweeBhnis6aMg12F 7YbQeK569g2k8U1GwXMcilFLIMGmA1ZSJRSGm5oJqShDXtHwTuxL4fvbXPME4OP94ZrxcmvRfgvq Qt/EV3YO2FuYdyj1YH/DNXHcTPbGGVI9RXgVlPoGhWniXSPFVm1zdi8822g2sDI2CAQR9a99qtPp lhc3KXM9nDJNH92RkBI/GtCDx7RvD8/hL4U65q93AYbvU4iixAcxxtwAfzzTNRWZPh34W8H2alLv WmEkoB5C55z+Y/Kva5YY54miljV42GCrDIIqo2jaa99BfNYwm5tl2Qy7eY19B6UAeM+PPh7pXg+0 0W407z5JpL1Y5ZHOcjr07c1v60j6p8aNAs+THZWizMCOO+f6V6jLDFMAJY0kCnIDKDg+tJ9mgNwL jyU84LtEm0bgPTNAHiXh/wALT2PxwkgMDfZbaWS4Tj5QrA7f517jSbF3bto3euOadQB5f49T+1vi j4V0rBKRlpXGOOOQf0qT4yiS8i0HSIwSL29CsMdRxj+dejPaW8lyly8CNNGMJIV+ZR7Gia1t7l43 nhSRom3RllztPqKAPMPHtt9v8f8AhDRVjxHG29gF44wf/ZapWOvW3w78VeKm1VZPPuZPOtF2E+du OQAfqa9eaGJpFkaNC6/dYqMj6GorrTrK9eN7q0hmaM5QyICVNAHj9gLzwx8PtY8U6gHXVtek2Qhh 8yhs7f6/pVbU/hXp+kfDWXV5/tEmqLAspXPyoTjIx9DXs2oaTp+qxRw39pFcxxOJEWRchWHQirTo kiFHQMhGCpGQaAPFPE9wx+DnhfT1DFr2RBjHXBP+NV/ij4Ukh8UaI1pC7xXcUVvJsU4+Ugc/hXtk sFk/lQSxQHad0UbAcY7gVOyKxG5QcdMjpQB41qi6T4d+Jmq/8JNEf7LvbFViyhIdQoXAx34qz8Kf C0Vx4hvfFcVgbHTyWSwgcknB/iyfYfrXqt3p9lfqq3lrFOFOV8xAcVOiJGgRFCqOAFGAKAFr5/m8 T3Vp4+8RyabZyXGqX7m2tMLzGDwT+lfQFVk0yxjvmvktIVuXGGlCDcR9aAPJtS0qb4e/DFtODGTW ddlEUhBz8zdVB+nH1rO8YfDDTfDPgAalGZ5tQQx7yT8oz97ivaL3SrDUpbeW9tIp3tX8yEuufLb1 HvVmSKOZDHKiuh6qwyDQB4744drvRPA+jqGPnvC7DHYAD+tUvHHhNx8WdOSCBmttReJn2g7cg4Of wFe2Pa28rRtJBGxiOYyVHyH29KkKKWDFQSOhI6UAeKXEuh6D428VW/i23Z7W8AlgQqf3ozkAEdK0 fhboMOiW+p+M9Qt/sFo6sbaJskxxDnPP5V6ldabY3zo91aQztGcqZEBIrlfiU9nJoUOmXM1xHHPK rSQ2sW55I15YZ6KPrQBu+GfEEXibRY9VgtpYIpWYIsvVgD1+hrXrO0C4sbvQbKfTEMdm8IMKlcYX 6Vo0AeJaPoMvjm/8bTRkJLPKI4HkBABBOf5Cm3vh0ad4q8G+E0G42g+0XBA4aTO4n9K9ogtLa2aR oII4jK25yi43H1NOa2ge4S4aFDMgwshUbgPrQB5S2r2vgT4m+I9R1kSJFfwrLaMELeZjqAfrV74b 6feSjV/HOqxMlzfh2gQjlYxz0/AYr0S70+zv1Vbu1inCHK+YgODUrGKGIlikcajnOAoFAHnHwXgM mm6vqroQ95fuQT1K9f5k16VUVvBb28W22jjjjY7sRgAHPfipaAPMtOR9U+PF/ccmPTbUKMjplQP5 k0nimyi8S/F/S9HuY/NtrSzaaRCOMHj/AAr0lLS3juXuUgRZpAA8gXDMB6mj7Jb/AGv7X5Ceft2+ bt+bHpmgDy/4cvdeEPGWo+Cr3eYJCZrNyMgjr+o/UVnz+IbbwP8AFDxJf6vbXA+1xg2bKmQ/A4+h /pXrd69lYo+pXKKDChzKE3MF9BjmufsNUl8Uaqqy+GXXSkQsl5eqAzN22qecUAcJ4f8ADWqan8L/ ABFfyxML3WmM8aHglVOf15qre+KP7e8F6P4I0BZGv7lViuxsKiJQeQf617cqqqhVACgYAA6VXh06 xt7l7mG0hjmk+/IqAM340AeWfEjT49L0Twr4VtgxT7Sg6fexwSfzNZPxB8JyL8TdMW3gZrfUTCH2 j5cqQpz+AzXt0ttBOyNNCkjRtuQsoO0+op5RWIJUEjoSOlAHi15Jomg+P/E8PiuBms72MSQqVJ80 cYAI78VqfCDwr5V7e+KHsjZwXJZLK3bJKxk9efyr02702xvihu7SGcocqZEBxVlVVVCqAAOgA6UA FLRUNzKIbaSQnGFNJtJXYFLzt0rH3qZXzWPDcZOc8mr0UoNcFOupgXMZpNlIj5qUc1typgRbaAKl xTcVLp2GIBQVzTwKdtq1ACq0dRsuKuFagkWsqlMZWJxSB6STiog2DXnz0Yy4jZqXtVWNqnVq1hqB FMOtZd1wDWtJyDWbdJkGs6sLoRhXDEE1nTSGtS5iZiQoJPsKotpl7N/qraVv+A1xxpO+wXM15eet Phkyauf8I1rDnIsJP0p6+HdXjI3WEg/I11KlLsxEts/StKF+KzksruD/AFltIv8AwE1ZjYrweD71 TVtxGgGyKQjNQpJUgcGs7IoUJ7VKowKapFPqJOwDt2KQvTCcUwtXHOoMm3UoNQbqcr0oNAWAKftG KiRs1L2ruhawiGQVXK1ZkqIisakQGBaeF5oAp4HNZx0YWL2lLi7U+xop2mf8fS/Q0V9Fg3ekSea6 kFANclqJGTXQandDnmuVvptxNbCRmTfeqGpJDkmozQUhaM0lFBQVqeGdUbRfEljqKnAilG7/AHTw f0NZYp23IxQB9XxyJNEksZ3I6hlPqDT64z4X6/8A2z4Wit5Xzc2X7p8nkjsf6fhXZVoncgK5PUfi h4Q0uZ4p9VV3Q4YQoXwfwrrK8b1Tw1pE3xr0/TLLToUt44vtN0ijIcnOc/p+dMD0C3+IHh2fw8mu teGGyeUxK8qEEsO2Kq6R8UPCutasumWl83nucRmSMqrn0BNct8UobN9b8MeHUiihszP50kYAVQgO Dn8M1meIptN8WeJ9L8PeELOJIdPl8ye8hTCoB6H0GKAPTvEvjLRPCUcLavdGMzHCIilmI7nA7Vd0 bXdN1+wF9pl0lxAeCy9VPoR2rzfwnbr45+JGp+Ir1BNZ6a3kWiHlcjgHH0yfqaq+C79dI1bx3cw4 WztgZFC/dDfNnFAHqtrq+nX0E09neQ3EcBIkaJw20jqDVTQPFGleJLKe806Zmht5DHIzqVAI5PXt Xinwx186bpfiiORtoeya4G7jnlc/+PVbtrm60/4XaRoGmkrqHiO4YNg/MELYz+NAHqOnfEXwxqut NpFrqKtcqdq7lIVz6K3Q101eR6t8Ory31vwvp2k2P+gWX7y5u1wCXyCSx69q9coAy/EPiPTvDGnr falIyQtIsY2ruJY9OK0opVnhSVCSrqGGRjg15p8Xme+v/DmiRnJurvcyjrgEf4mvRrq4h0+xluZS Eht4y7ewAzQBwfj678JSa9Z2mpand2Grqo+z3FqWJiyeAccc12cdwmi6NFJrGpI3lKFkupcIGPTJ 9K+eNVhu9Wu4PF92zY1HU/LhUj+BSMH+lek/HG/8jwhaWSH57qdcr6qAT/PFAHc634l0vw/o41a+ nxaFlAeMb87umMdaeviHSzd2dobtVuL6PzIIm4ZlxnOK8X1PUpNa+GnhTR1k3y3F2YJBnn5Tx/Ot e61zR7H41NcapdpbW2m2awoW6BwAMfqaAPRE8YWEnjNvCyxyG7SLzWfHyjjOPyreZlRSzEBQMknt XlXw7uovEXxN8Ra9Gd8IUJC/qOn8hXqrKroUYZVhgg9xQByF/wDFXwdp7skmqiVlOMQxs/8AKtO0 8Z6HdaVZal9rEUF8/lweaCpdvTFec2vhjRp/jZJp9ppsC2FlBvliAypYr3/E1P8AEbUNMsvH/hnT 7ox21hYnz5ABhVUn0H+7QB32s+MLDRNf03Rp45XuNRz5ZQcL9ag134heGvDmqJpupX2y4YZIRCwT 03EdK88vfEun638Vk1m1nW40/SLJpVfsWCnj8yKvfD/RI9R0DW/F2txLLPqQl2GUbgseO2ffj8KA PVLO8t9QtI7u0mSaCVdyOhyCK4vxH4i0PWPEtt4Uk1V4HEwFzCkZPn8ZEe4dB61jfDjWv7D+El5q Vwx8q1llMWe5zgAfia4fQtLu7bxp4Z1a/Zjcavcm5IbsNxoA901rXtJ8I6bDNenyLYusMaxpnk9A APpWrHIssSyL91wCM+hrzP4ss9/rnhnQ4zk3F15jKPQEf/Xr04AKAAMAcCgCtf6jZ6Xam6v7mO3g UgGSRsAE1BPr2lwaLJrJvInsY0LmaNgykD0xXB/G65eTQLDSIRmW9udwH+4M/wBa4GTVJW+EuleH 7Nx5l1LPPPzwI0Ynn0ycUAe7eHvEul+KNPN9pUzSwq5RiyFSG9MH61xN/c+H/FHjaTQdT8QXtw6y siafEpjhyBkgsPvHjvVPwdfJ4O+C8urkYkn3yRA/xOflX+Vcn4N0a50r4i+Gbi9Zzc6gj3L7+uGR sUAe06z4i0jwlbWUd9I0UcziCBUQt0GMfyrZUhlDDoRmvMfiIx1P4h+FdFxuRZfPcDsM4P8A6DXp wGBgUAZfiLxFp3hfTDqOpyMkAcJ8q7iSfatGGVJ4I5o87JFDLkY4IzXm3xjb7a2gaKpy15egMvqO B/OvRXkj0/TjJIQsdvFlifQCgDhvH2v2+n69p1tB4lk0q/x9wQmWNlY4G4evpXU2KweG9BD6lqrz Kvzy3dy2NxP8h7V4FrSXOuzx+M7lnC3uri3gVv8AnmOR+WMV6X8Y7xo/AtrYRf628mjVQO4Ayf6U Ad2Nc0xtJk1aO9hlsolLNNGwZcDr071W8OeKdJ8V2kl1pM7SxxtsfchUg/Q14fDqc0Hwph8OWrL9 qvrqZpBnpEnJ/UV6H8EbA2ngg3DLg3Vwzg+oAA/pQB6LRRRQAUUUUAJWP4iuvKtUgB+aQ8j2rYNc Zq959s1J2U/InyrXn5jV9nRaW70GkNimxV6Gf3rKXIqaOQqa+dpYhweo2jfhm96uRyZFYMNx71oQ z5717dDEqRJpg5pcVBHJkVMDXpRkpAOxS0CirGIahkHFTGoX6VlUegFGYVWJwatTd6pucV4eInZl pEiyYqZZaqwRS3Mm2Nc+p7Ctm2sI4AC3zv6mqwsKtbWO3cT0II4JJecYHqamGnQn/WZardFezChC O+pNyNLaCP7kSA+uKlpKCwUZYgD1NbpJbCFoqrLqdjB/rbyFfq4oi1KxnH7q7hf6OKLoV0Waglsr aYYkgQ++3mpwQwyCCPUUUNJ7jMi48OwPk27tEewPIrIudNvLI5ePen95ORXXUEZGDXNPC05baDuc Wkue9Tq2RW1faHBcZeHEUvt0NYUsM1pL5c6bT29DXk4ihOlvsO4880wilDZoNeTPcZGeKA3NI5po 61lzWAtRNVkdKqRVaU8V30Z3AZJUR61M9Qkc1vMQuaVTzTaB1rjlKzGaemH/AEtfoaKbpf8Ax+L9 DRX0WXu9H5ks8T1G4znmufuZMk81dvLjcTzWXI2TXWSiMmm0ppppFi0A03NKKBjxUiiogalQ0mM6 zwD4hPhzxFFK7YtbjEc49B2P4V9AqyugdTlWGQR3r5bjNezfDHxWNQsf7GvJP9Jtx+6JPLp/iKIS 1sxSXU9Ary/wgp1T4xeI9TzvS0XyEbsAf/1GvT6yNF8MaboF3f3VijrJfyCSbc2Rnnp+ZrYg8z8a aBL46+Jl5pcchH9n6eGQjpvIyAfxNaPwjvLY+F9S0hLSK21Wy3rMQuGkGDgnueciu9sfDen6fr17 rUAf7XfKFlLNkYHTFNs/C2k2HiC61y2t/LvLtQspB+U++PWgDzbwHr1n4U+FV/f3EiJdieRRGW+d pOijFUTYXHh74Lajf3Q23euTBnBHO1zwP6/jXoN38MfC95rn9qzWbeYX8x4Q5ETt6lfWtjX/AA3p viTS107UIibdWVlCHbgjpQB4R450S40DR9BuLZSn2/TUt7rHRmGDj8f6V00mmLB488KafPKbeIaS PKkzgoxBOR7g16pqXh3SNYtbe11GxjuYbZg0Svn5CBgHiqniPwbo3ie3hi1CBg1vxFLE210HoD6U AeW6Dp2pXXxYSysvEN7qlnp58y5uHkO3PdeuOuP1r2+snw94Y0rwvYm00u2ESscu5OWc+pNa1AHk XjHWbCH4zaW+o3SQ2emQCVmPZjnj+VavxL8UQ6h4QtLLQ7hbiTXJhBE0Z/hzz+vFdDqvw68Na3rT arqFkZ53UBlLkKcd8ChPh/ocOsabf28TQx6YrCC1Q/uwWOS3POcmgDyLxR4R13wrbeH4dU1aO6tx chIbeMHbEcgnr1612HjuNNa+J/hfRWG+NAXlTP4/yFega54c0zxElumpQeaLaUSx4OMNTJPC2lS+ JYvELwk38Uflq27jH09aAPFNC0e6g+L0ehSkmCxvnukTsB94fpitzwlo+k+KNS8XeIdVtEuVjnYw l/u9GJ/kK73W5/CHhzV21y/jiTVHjKhowWmcEYwFFT+F/D2jWnht4bC0nitNRBleK4GHAYdCO1AH KfA2z2eHtQv/ACggursmPHZQOn516aSAMnoKoaJolj4e0yPTdOi8u3jJKqTnknJq+VDKVI4IwaAP MfhoG1Hxz4q1kncvnm3RvYNx+gFUV0yz8X/GrVI9SgW5tNPtxHtbpnjH8zXo3h/wzpvhqO6TTkdR dTGaTc2fmNJpvhfTNK1jUdVtY2FxqJBny2Rx6elAHitvpavB49u9Lt1S3gXyIlQcKu/Jx+ArpNY8 Q2+k/B/S9H06RZL3UoBBFEjZYAn5jx9a9G0rwvpGjRXsNlahI79y86E5DE8flzWVpXw08M6PrP8A altaOZlOYkkfckJ/2R2oA4DxPpN1b6D4c+HOnlRe3X726IPyg4yc+3U/hVSfw/rPh74k+FrbWNVX UGLKIdgIWJQcbQDXrUfhOxXxhL4meSSS7eEQqrH5YwO4qxqPhvTNU1ay1S7g33VicwuDjFAHB6mD q3x50+AHcmm2vm8djzn+Yr1CsmDwzplt4km8QRQlb6eLy3bPBH0/CtagDy3xlv1j4u6HpI+dLWBp mUdtwI/oK4T/AIR668MeBNYvNSgkhurudbK2Rxg7Q25iPrivdh4X00eKv+EkCOL7yfJJ3fKV+nrS +IfDGmeKLaC31OJnSCUSptbGGFAHlfiaxu9Wt/C/w/0pwki2y3FwW+6mRkFvpz+dRWGi6vofxi0G 21jVBqExRirqCAi7G4Ga9R0/whp+neJ73xAjySXV0ioA5ysSgAYX8hVq68N6Zea/aa5NBm9s1KxO D0zx/WgDg7cnV/j3Ox+ePTLXb9CVyP516hWTY+GtN07Xb3WraJlu75QJjng4747VrUAeS+ONW09f i7oo1G5WG106HzHY9m5Yf0rU+JHiy2vPBMNvolytxJrUogiMfdc/N9O3510GsfDzw3r2tf2tqNmZ p2UKw3kK2OmQKaPh7ocWrabfW0TW8embjBbIf3e49WIPegDyPxP4N13wnpuhR6nq0dza/bFWK2iB 2xMeSeeveuw8dH+1vHvhTQ+qqvmuB2BGM/pXoGu+HNN8RwwRalCZVt5RLHg4wwqOXwrpcviW38QN G4vbeHyUIb5dvbj8aAPEj4cu/Dfh3xLqupQyQzGT7JZhxjO5ssw/CvVfCd9pnhfwhoGmX93Hbz3M QESOeXLc/wBa2/EXhvTfFGnix1ONnhVw42tggiq194L0TUtT0/ULq2MkunIEgUt8oA6ZHfFAG9S0 lLQAUlLTXdY0LMcAdaTdgKGs3htbMqh/eScD2965MR81sXzm6nMh6dFHoKp+VzXiYv8Afu/QtaFc JikIxVvyxioJExXh1KbgwY1HINXoJves7oamifBp06jgyTchl96uJJkVjwy1dilr3aGIugsaIanZ quj5qUNXpRqJoBzGoXNSE1E1ZVJXQypL3pkFk10/PyxjqfWrSW5mkx/COpq+qhFCqMAVy08J7WXN Pb8xt2GxQpBGEjUKBT6WivWSUVZECUEhQSSABySaDXmvjfxe91NJpWnyFYEOJZFPLn0HtUzmoK7I nNQV2a3iH4hW9k722lotxMvDSH7in29a4XUPEOr6m5a5vpSD/Ah2r+QrNq/peh6lrMm2xtmkAPLn hR9TXBKpObOCVSc2UOtHQ5BP5121v8Mb6RAbi/ihb+6q7qS5+GN/GhNtfRTN2DLto9jPsHsZ9jnd O8Saxpbg219JtH8Dncv5Gu98PfEC11J1ttRVbW4PAbPyN/hXnmp6NqGjy7L62aLJ4fqrfQ1S60Rq TgwjUnBn0ACCMg5B70ted+B/GDrJHpGoyblb5YJWPIP9016HXfCamro74TU1dBUVzaxXURjlXI7H uKmoqnFSVmWcre2MthJg5aM/deqxbiuvmhS4iaKRcqwrk9RtJLC4MbZKHlW9RXzGPwTovnh8L/Ap Mrs1C9ajzUida8poZZiqyDxVRGxUgkrppOwErHNMxSB809ea61K6ATbRtqTFJisJx1GW9L/4/V+h op2mDF4v0NFe/lv8H5kPc+bpZi1Vyc0E5pK7QEpKdTaQwxQBRTgKAAU9TSAUoFJjJ42rQ0+/uNPu 4ru1kMc0LBkYetZq1KrVlJBc+ifCXie28T6StxGQtxGAs8XdW9foa3q+cPD+vXfh7U476zfleHQn h17g17z4e8Q2XiPTVu7R+ekkZPzIfQ1tCd9HuSzWopKWtRBUFxe2loyLc3UMBkOEEkgXd9M9amr5 1+JOq3XijxHe6hA2dO0mVLaNumWJ5I98/wBKAPooHIyORTJporeJpZ5UijUZZ3YKB+JriviDqr6V 8L5JI5ninmhjjjdWIIJx3+gNcRe+JZr/AOAw8+4aW6NwLZmc5LDdnn8KAPbY5o5Y1kjkR0cZVlYE N9D3qvLqljBqEVhLdRJdTLujiZsMw9q8slEsPjbwX4chnkji0+0Ek6h8A5GefXpVwEaz8fMjbJDp lt1HOCV/xNAHqNV7nUbGyYC7vbe3J6CWVVz+ZqxXj0mn6V4u+LetSa2VfTtMtwGV5CqAjA65+poA 9dt7m3u4hLbTxzRnjfG4YfmKSG6t7kuILiKXyztfY4bafQ46V5V8Orq1tdc8US6KZR4ehTdDvJKh gDnbn/PSl+Gjmx+HOv67K5DXTzSbs/xAED9TQBveJbS+vdWnurS9sNIFumYbh3TfdSdlJJ4Wuv0+ 6lfSbe41AR28zxgyDeNobvg9K8f8EfDzR/EvhyDVde1G4M9zIzJGZwBgHHQ++a1Pi34at7Dw3BqF vqN1AlnEttFbLIdr+mfwzQB6hDqNjczGGC9t5ZQMlElVmH4A1ZrhPh34A0zw/aWutDzX1C5tlLtI 2Qu4ZIArt5pBDBJK3RFLH8BQA+ooLu2uS4t7iKUxnDiNw20+hx0rx/4YeMbm58T+IRdXckts6SXU SSOSFw2eM9BisnRtdk0D4fatqNo5XUNb1B4Lcg847sPzoA9y/tKyKzGO6ilaBS0iRuGZcdcgVkeG vGeneJdON9GGs4zcNBF9pYKZSO6+teVeI/CI8D6DoOpQ3E66pc3Sx3jiQ/vAwJKn+Vb3i+KG58c+ DtCtoFigjIuGjjGAoJ5P6UAer1HPcwWyBrieOFTwDI4UfrUleW/F9RrGseHPDqzGM3VxlypwQD8u f50AeoRyJKgeN1dG6MpyDWV4g1O8sLeOPThaNdzttQXU4jUe/qfwrznwjJc+CPiRd+Fmv5brTXtj MplOSmBnPtxmq2jaOPihreseItWkl/s+23Q2MasVAIHDD+f1oA9K8N6drtoJ7jXdWS9nnIKxxR7Y 4gOy+tblcF8H9Tur7wpNBdzPMbO6eGN3OSVHQZrvJHWKNpHOFQEk+woAZHcwSyyRRzxvJEcOqsCV PuO1Ks8TzPCsqNIgBZAwLLnpkdq8O8OeLl8Oad4i17P2jUdSvjBaxZzuI6H6DIrq9D0a68KeDNY8 S61cSSaxfW7STOzf6vI+VfzIoA9FmuIbe3kuJpVSKMFncnhQOuarpqlpc6Y2oWk8U8IQsrq4CnHv 2rymK7k034BT3FxcNLNfqykyPub52K/0rPuftV5onhbwBp7mF72Fbi/K9gecH8M/pQB3mmx+Kn1W 01o6jFe29zIUubCF1MdvGfulWHVh3rtq8o0vT4/BPxZsdF0qWYWF7aHzIXckbgD831yM1U/4S28X 47m0S6k+yNILRoi52dOuOnWgD10Xds1y1sLiIzqMmION4H060kt5awTJDNcxRySfcR3AZvoO9eVa JqsEfxH8X+Jbv/j302Exgg9WXjH14xXL6vYX2q+FLzx7rLzvc3Uyx6dEjECFSeGGPpQB9BkgAknA HUmobe8trsMba5inCHDeW4bB98V5vd6T4u8R+G9B0/8AtA2Ng9ksuo3RbEhP90/hWT8NLKJPiNfH w69w2h2sRjlkkbiaToD+eaAPZaKKSgArHv74TP5UZ+Rep9TRqmqA5t4G9mYfyrMjPNfO5hmK5/Y0 9ur/AELjHqWSMioynNSpyKcVzV0JcyEyvsqOSLire2kZMilXopoRlOmDTRkGrk0VVWXBrxJx5XYG TRSYNXYpenNZi8GrMTGtqNVp2Ga8UvvVhZMjrWXHJirCS169OuMv7s0AbiAO9QJLmrluuV3nv0rs pv2jsDJUQIuBTqKK9FKysiAoopKYHO+NtbOj6G4ibFxcfu4/UepryH+ddd8SL1p9ejtQfkt4xgf7 R61ycUbTTJEn35GCr9TXnV5c07Hn1pc07HR+D/Cra9cme5ytlEfmxwXPoK9NMlppVutvbxKiqMLG gwBUVhaRaFoUNtEuPKQD6setZrMXcuxySeTVTn7GKUd2dUIKC8y2+q3LH5dqj0xmlTVbhT8+1x9M VTVWc4VSx9BQyspwwIPoa5va1N7l3Zrt9i1m1e2uIlkVh80bivLvF3hh/D14Hh3PZzH92x/hP901 3ccjROHQ4INX9ZsYtd8PzQMBl03Kf7rCumEvbRae6M6kFNeZ4oCVIZSQQcgjqDXsfg/WTrWgxSyH M8X7uT3I7144ylGKsMMpwR6V2fwzvTFq9xZZ+WaPeB6Ff/10qErTt3OahK07dz06ikpa9A9AKq6h ZJfWrRN97qp9DVqkqZwU4uMtmBwzRPFI0bjDKcEU4cVt69ZDIu0Hs/8AjWG3Ar5Gvh3RqODHcXzM Unm+9QO5qPec9axSYy+knNWo2zWVHJzV6CSt6dxl4c0YpqNkU8Vo0Mt6cP8AS1+hopdP/wCPtfoa K9zL/wCF8yHufMNOFMFSKK6hoNtIVqULxSFaVx2IsUopxFJTAcKeq0xamQVLAAtO6U8LxSMMVmDQ K2DW34e8QXvh/UFu7N/Z4z91x6GsHOKljak+5J9F+G/E1h4ksRPbOFlUfvYSfmQ/4VsV85aRqV3p d4l3ZTNFKnQjv7H1r2Twt43tdcjS3uttveYxtJ+V/p/hW0Kqej3EWPHevL4d8IX18GAlMflxDPJZ uBj6Zz+FeFXsXiTTvAkdneaG1vYXF2tw945G6Rz0969o8b+E73xXfaPCJo0061uPOuVP3nI6D6Vb 8a+Ex4s8PLpUc4ttkqOr7cgBe2K2A4v4pTfatM8LaLt3C7uI2ZR1KgAH+dcLeafNYeK18DBT9n/t hZVPqGAAH5V7HrHgdtV8SaBqhvFEOkJtaIrzJ7g9ugqW/wDAdhf+NbXxQ0zpNbqAYlAw5HQk0Aee XfhlPHvxU1mCa7ktbfTo1i8yMZJ24GP51d+C+lJb+IfEFxGzSRQSG2jkbqQG/ngV2fhjwXJoN/rt 1LeLO2qy7lKqQY156+p5qfwP4PXwdp91bfaftL3NwZmfGPpQB0cr+XE8h/hUn8q+ftK8JW/jC38R eI73V206NbqQoSBsk6nk5/CvfruA3NnNAr7DLGyBvTIxmvLtJ+B8MMSw6rrlzcW4fcbaElY2+oNA FTRdbVPgVqbLbxQND5lsrxrtEpOMN9ef0pb910H4A21uMiXUI0CjvlzuP6Cu18TeBbbVvBg8N6W0 dhFG6Mny5Hynv65qr4z8ATeJPDOnaRZ362psGUqzqSGwuO1AGJoXwZ0VbKzubq9vGmMaSFFfaFOA SKf8Y5fNg0HRVGftN6px3wOP61N4d+F2paXqlpqF/wCKr25a2dWEQdtjY/hOT0re8Q+DpNc8X6Jr RukSHTCxeFlJL59DQB00ESwQRwp92NQo+gGKxvGt+2l+DdVvF+9Hbtj6nj+tbtYfjHw/L4n8NXOk w3It3mxh2GRwe4oA8Eksp/CPh/RdegiOdStbiGbPGS2QP/HT+lbmlacP7T8A6dPGTDIpuWVhwSSe P0Femaz8PbPW/B1h4euLho/sSoEmjUZyBgnn1o8QeBf7QsdLOlXxsdR0gAWtyV3Dpg7h3oA5vx9K fE/xD0LwvbHctpILm5I5C45/l/OnWROq/Hq6faDHplr5Yx2JXj+ddF4J8Df8IzNdajqF6dQ1W8P7 25IwAM9BUvhzwa2heKda1p7sT/2mVKrtwUA9TQB1NeG+K9Bstc+MV3BfahJb2kVuJ7iXP+rCqOB6 Zr3KvMvEHwjn1/xhc6rJrBisrsqZolB3kAYxnpjigDlLJ7nWk8XeNgjrBFatb2mfTgcfQD9a6jSd Rt/CPwPS7BAkmgYJ6tI5OPyz+ld7D4d0y38PnQobZUsTEYjGO4PUn3rhrf4S3kl5Z22q6815omnu WtrPZg4znDHvQBt/CvR5dH8D2wuFKzXTNcOD1G7pn8BW14tvV07wnqlyTjbbOAfcjA/nWsiLGioo AVRgAdhWN4w0CXxN4Yu9IhuRbvcAASMMgYIPP5UAeCeE7I+HPEnh3V9YgWTT9QO+J2+6hzjP1BAN etfGK/8AsvgGeFeTeSJEPfnP9Kuav8P7XVvA1r4deVUltI18m4C/ccdT9DTPEvgW41/QtF006l82 mzRvLJKpPnBRg9O9AHlHiv4fxeHdK0Job6e4udTdVMTDCpkA8D6mu18FWiN8WtdkkXAsIFgiDfwr xXWeIvBa67rmi6gbry4tLkD+SRkPjp/Ks3xP8P8AUNQ1i51Pw/rX9ly38XlXilMiRfUehoAxfDc/ /CTfFnVfES/8eGlRNBG56E4wcfqa4E2NxLo2oeNowxuINVGGH93Jz/Svb9D8GWnh/wAJy6HZSENN GwkuCPmZ2GNxqjonw+i0/wAA3Hha8uhMLpnaSZFxgtjkA/QUAeRtPPJ8NNTvyCh1rVwGI/ujnH51 1XjDxF4v8JW1laWUGnx6XIiR2q+WJGf5R2Pua69vhnYHwEPCoupCqOZY7ggblfOc/wBKqaL8OL46 7b6v4p1n+1pbJQtrEqbUTHQketAEXji48SX2iaLoVtH5VxqoVb2aPjyxgbgB2rsfDvh+w8M6PDpm nx7Y4x8zH7zt3JrGufBt1d/EOHxNJqri2t4wsdoueuMHPbB611E9xFbRGSZwijuaTaSuwJCQBknA FYWqazvLW9q3HRnH9KpalrUl6TFDmOH9WqgvFfP47MeZOnS27lJE61NH1qBasRjpXzyjeRoi1FU2 KhTiplNe3hpWJYYppFPNIRXpfEiCvKtUZFwa0ZBVKcV42LpdR3K461PHUGcGpY2rip7gWVNSI1RK c1Itd0WNFqHLuqDua2lUKoA7VmabHumLn+EVp17uAhaHM+omLRRRXoEhSUtJQB454158V3n+8P5V U8NxLN4isUbp5oP5Vp+P7Y2/iiRscTIHB/T+lZ/hb/kZrH/rpXmtfvPmea1+8+Z65q7YgRfVqyK1 tY/1Uf1rJqMT/EZ3vc29OiRLRWA+ZuSabqkaNbbyBuU8GpLRtunow7Lmsm5vJbo4fAUdAK6Kk4wp KPdDexBWzpXNlg8/MRWNWwHTTdIeaU7RGhdie1Y4Ve/cSMuXwN4fmmeV4G3OxZv3nc1Y0zwpo+k3 ou7OJllUEAl88GvJJ9Vvp7iSb7XOvmOWwJDxmum+HrXl34iZ5LmaSKKIlgzkjJ6VvGpBySUTnhUg 5JKJ6fS0UV2HWFFFFAEVxCs8DxMMhhiuOuI2jdkbqpwa7WuZ12Dyr4sOki5rzcwpKUVPsBhyVATV mUVXI5rxeQYqNzVyF6qKtWIxirULDuaUUnFWA1UImNWVfisZSsNGlprZvVHsaKi0t86gg9j/ACor 3std6L9f8iWfM4qRaiFSA12DRMDxQaYGpC1TYq4pphNIWpM1Qrki1YjqstWoqljRYVeKa68VKg4o ZaiwymRinJ1p7pQqc0Mmxat+orbschlIOCOh9Kx7ZDkVt2KciuWoI9B8O+K7iBFgviZohwH/AIl/ xrtbe5huoxJBIHU+leW2KYAresbia2YPE5U/zrmWYuk7T1QctzuqKxrXX42wt0Nh/vDpWtHLHMge Nw6nuDXq0MTSrq8GJqw+iiiugQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUlLRQAUUUUAFFFFABR RRQAUUUUAFFFFABSdKoajrVnpqEyybn7IvJritY8V31+TFEfs8J7KeT9TXPVxEKe+4HWap4ls7Am KJhPP/dU8D6muZuNQuNQl8yd8+ijoKwIpOetaVu9eJi69Sro9uxSNBBUqio4eRVlVrx5RZQIvNWE 4pijFO3YpRVtQJQ2KkWSqhk96VJOetaxr2Yy+GzTqrxvmpwc17WHq8yIaGuKpzrxV4jNV5UyKMRT 5kSZcnBpFkxUk6YNVWOK8Rxs7Bcvxyj1qwkgNY6zbe9Tpc471opOO5SZ1elj/Ry/941eqnpX/IPi PqM1cr6zDK1GPoJhRRRXQIKSlooA4n4k6S1xp0OoxLlrY4fH909/wrifC3/IzWP/AF0r2e4gjuYJ IJlDRyKVYHuK8wj8Pz+H/HFnEwLW8kuYZOxHp9a5KsLTUkclWFpqSPQ9Y/1Uf1rJrW1j/VR/U1k1 y4n+Kzoe5uW3/INX/cNYqo7NhVJP0rcsyFsEZjhQuTWLc+N/D1oGAug7DjbGhOa6Z01OMW3bQJNL dmhZacUYSzjkdFrj/iD4mSRDo1nJu5zcOp4/3ao698QrzUEa306M2sLcFyfnP+FceSSSSSSepNZy nGMeSBy1aya5YhXqHw50k2ejvfSrtkuzkZH8I6VxfhXw5Lr+ogMCtpEQZXx1/wBke9exRRpDEsUa hUQYUDsKvDw15mPDw15mPooortOwKKKKACsbxFHmCOQdQcGtms7XFzpjn0IrDEK9KQHIy1BjmrLi otvNfO82o7CouasJHTI1q5GnFbboBqrilLYqUrgVA9efW0Gi9oz51SMf7LfyoqPRP+QrH/ut/Kiv dyh3oP1/RCZ85UoNJRXogOzSE0lJmgAJoFGM0oFAEiVZiNVVqeM4NDQ0y/GeKfgVWjep1epsUBTm lSPJpw5NWIkqJASW0XIrcsouRWfbR8iti0GDXHVdkBsWiYArTQ4FZls2BVzzOOteHWTbGSyS4FQR 6ncWkm+3mZCOwPFQzycdapO5JrSjDl1RLOusfGfRL6HP+3H/AIV0NpqlnfLmCdGPdc4IrzFKsISu GUkEdxXpwx1SGktRWPUKWvPIPEupWWAJ/NUfwyc/rWpbeP7fIW8tWQ/3ozkCu+njKc/IVjr6Ky7P xJpF9jyb2MH0c7T+taSOsi7kdWU91ORXWpJ7MQ6ikopgLRRRQAUUUUAFFFFABRRRQAUUUlAC0UlF AC0UxpY0+86j6moHv4V+6Sx9qzlVhH4mBapCwUZJArPe/lbhFC+/Wq0jSS8uxP41KrRlsD0L02pQ RZC5c+grIvtTuZVKq3lqey9akZBVS4XinJtoi7MK8UsSTyfU1jzJ81b10vWsuSPJ6V5dWGpSZTjU 5q/bkjFRrDzVmOMiuScdCi/A3FXUNUIQRVtDxXlVXZlIsZxUbPTGfioy9Y3bHcfup6tUANSKaloS ZbierSNms5WxVqJ67cLWcXZjZc60x1yKEbIp55Fe6pKUSDOuI+KzJhtzW3MmRWXdR4JryMRDllcT M13waj8/GeadOCKoyEjNVGKkiL2PTNGO7SLY+qCr1ZfhyTzdCtjnOFxWnX1FL4I+hYtFFFaAFFFJ QAtRTW0Nxs86JX2NuXI6H1FS0UAZ+rI7woVUkKecVkV01QS2VvN96MZ9RxXHWw7nLmTJaIY/+QOf +ubV4a4xI/8AvH+de9C3UWxgBIUqVrk0+GmlCQtJczyAnO3gVVSlKUYpdDGtTlO1jzDqcDk+g610 3h/wPqGruk10rWtoeSzD5nHsK9D07wto2lkNbWSFx0eT5mH4mtelDD21kRDD/wAxW0/TrXS7NLS0 iEcSDp3PuatUlLXUlY67WCiiimAUUUUAFUtXGdNl/CrtUdXP/EvcepArKt/Dl6AcqUzTfLq15dKI q+WlozQiij5q2i8U1UxUo4rWEtBNDXHFV3XmrLc0wrmuequYESaMuNTjP+y38qKm0lcain0P8qK9 zKVag/X9ESz5poxSiivQAQ0lKaMUAApwFIBUiigAAp60BaeFouOw5WqVXqHGKcKGBbjbNXrfnFZk Tc1p2nOKzkO5q2yZxWnAMYqpaR5ArTSLArgr7DJ4nxVgS5FUwCKlTNedJJgPkbNVyvNWCtNKURdh MagxUhbApoGKY3SjcBkr1TcFjVllJpUgz2rVNICj9n3dqs29xe2jBoLqaMjphzj8qurbcdKU249K FWs9AsT2/izXbf71yJh6SKK1Lfx5ej/j4so3/wBwkfzrD+z89KcIAO1arF1FsyWdTF48tSP3tnLH 9GBqynjnRTwzzIfeM1xMkWO1UJ1xW8MZUZFz0xPGGhvj/TAuf7wxU6eJdFdto1GHPu1ePOwBpY5B muj61O2w7nuSsrqGUgqRkEd6dXOeC9V/tDSBA7Zlt/lP+72ro67YSU4qSGFFFFWAVjXmvfZrh4Vt yShxkt1rZrkdXXZqcw9wa83Ma1SjTUoO2oFh/EF2/CqiD2HNRHUbqXh52I9uKzS2KcsmDXztTEV5 7yY0aaOW6kk+9WEasyObnrVuOXNXRmWXQadmq6vT91ezRnoZyHMeKpXLcVYd8CqM75rqlVsibGdc nk1RZcmr0wzmqxTmvNqVtS0gjjBq0kOe1MhTpV+KPio5uZARLFinHirBTioZFrzK8bMaIWY03Oac RSYrFWBig04GmE4pN1Frkkwapo3waphqlR6lpp3RSZqRPUwas+GX3q0kma9XD17oqxI4yKz7pODV 4tVW45q69pIlow7hOtZsq4JrXuV61lzjk1hRZlI7TwVOJNFMXeKQg/jzXRVxHge72XtxaE4Ei7x9 RXbV9Lhpc1JFLYWiiiugYma5TUPHttDqD6fpOn3Or3MZxItv0X8au+N9Rl0zwjf3EDFZfL2ow7E8 UeDdGt9H8OWiRIPMmjEsr92YjPJqW3eyM5NuXKjMj+IaW15Hb63ol7pIkOEkm+ZSfw6V2COsiK6E MrDII7ioruztr6HybuCOePIO2RcjIrF8W6/PodlBDYQiW/vJBDboRwCe59hRtuF3FNyZ0FFcRc6N 4ysLE6lD4ga6u0G97Rox5Z9QK2tM1/8Atrwe+rQDy5fIckD+B1Bz+tFwU9bNWN2ivOvDh8XeLNCg uX1j7BEoIWREy8xz1Pt2rV8J6zqq65e+HNblWe4tlEkUyjG9PU/nQpCVS9tNzdutfs7TX7XRZBJ9 pu4zJHhflwPU1p15j4g03VW+JWnRLqzLNPC7QS7B+5XJ+X3rtoINR0vw/dC81A3lyiu6zFduBjgY 9qE73CM227o2KK8w8O6r4w8XaWkNpeLaJCWE94w+aQk8BfoK6XxLrepWk9hoGkFX1O7X5pnGRGo6 sRRzaXBVU1zWOqorhdStPFfhezOrR60+qxw4a4t5YwPl77a7HTb6LU9Ot76E5jnQOKaZUZXdmi1R RRTLCs/V2/cIn95q0KytSffcBeyiubFStSY0Zvl0uypttIRXz1RGiIsYpCac1MxWGowzmloApCaZ Ja0z/kIp9D/Kim6X/wAhJP8Adb+VFe9lv8F+v+RDPmvFGKdijFdoDKMU7FKBQAgFSKKQCpVWpY0K op+KAKeBQhjdtJtqQCnBKdxDY15Fa1iuSKoRpzWrZLgipYHQWEecVsJBlelZ+mr0roIIcr0rmqwu hXM5rcg9KVIPatb7LntR9lx2rx60XEtGaYsCoXXFaUsW0Vn3HGawhK7GQE0hGaiZ8GnI+a6LASLH ntVmKIVFGRVlDisZyZSQ8IMU1kFOL0wvWKuJhsFBAFJ5gqN5eK0SZDIpiAKy7p+tXLiasi6myTXb SiZ2Ksr801JOahkfJojPNdltB2Oq8K6sdL1aKUn91J8kg9jXrKkMoYHIIyDXh1rzivUPCGq/bdOF tK2ZoBjnqV7Gt8NUtLkYHRUUlLXoAFcr4hXZqJb++oNdVXN+K0w8EvqCtedmUOah6NAc+74pgl56 1DLJg1D53PWvBVO6JNJJqtwzdKxo5quQy9OazcHF3NEzbikz3qbdWfBLmritkV30amgMJDVSQZq2 wzULJXTJ3RKKLx5qPyqumPmgRV5tXc1RBFFzV2NMCmpHipl4opzE0DLxVeRasmoytRV94SKhSkK4 qyyVDIOK43BoZXaoi1SPULVpAykLupRJzUJam7605Lk3LyS1ajn96yVlqeOWo5XB3RpGRqiXNMkO RVZJKmByK6Yz5kUyjcrWTcDGa3J0yDWVcx9aUPdlYzkirpt62narBdA8I3zfQ9a9VR1kjV1OVYAg +1eQzpgmu78F6t9t037HI2ZrbjnuvY17mCqfZJidLRRRXplmX4k0n+3PD95pwba00ZCn0Paub8Ie L7e3s00TXXFjqFkPLIm+VXA6EH6V3FZ2p6DpOsAf2hYQ3BXoXXkfjUta3RnKLvzRMzVvHWi6YqJD ML+4kYKkFsdzE/0rF+I9oZoNL1h45xbW8g+0CPKvGh7/AFFakLeCPDN68aGxs7peGyPmH41p23iP QNVc2sGpWtwzjBj3dfzpb6Mh+8mpNHLNYeEhp/20+I7rySuf+P1s/TGc59q2dIs9MtPA9z/ZAlFp LBLInmgg8qfWrS+CvDSXHnro9sHByPl4B9cVstDE8DQMimJlKlMcY6YppFRg1vY5v4b/APIhaX/1 zb/0I1nWP/JYr/8A7B4/mK7GysrbTrRLSzgSCCMYSNBgLWdDNoR8VTQxLF/bAgzIQvz+Xkd/TpSt ogcdIrsc54nuIrH4maFd3UghtxbOhkc4UHJ4zXUXl7a3+hXstpcRzxiN1LRtkZA5FT6lo+naxCId RtI7lFOVDjOD7UWWkafp1ibG0tI4bZs7o1HBz1zTs7sai032ZzvwvAHgW0IAyXkz7/MayPHVhHb+ LtO1a+e4j0+SP7PJLAxUxHJIJI7c13lpZWWk2QgtIY7W2jy21eFXuTTnS01Kz2usdzbyjvhlYUcu lhOneCicLqGneELXT2uLjxBdTQsMbEvGcv7Bc812mjWtrZ6PawWQYW6xjyw3XB55/OqVr4O8O2dy txBpNusinKnbnafatoDHShKw4Qs7tC0UUVRoNZgqlj0FYsjGSRnPc1oX8u1BGDy3X6VnGvLxtS75 V0KSGnimk0MajJryZO5Yp5o20CngU1TuK4zFRsKmNRvScbCJtK/5CKf7p/lRS6X/AMhFPof5UV7O Xfwn6/5Es+baKaDThXWAdaUCilFAx6ipVFMWpFosMcBSgUopwFIYKKmVaYoqVam4D0XmtG04Iqil XLfrSZLOn0xuldRZ4KiuR058EV1NhJwKNyGaqxjFI6ACpIzkU2Q8V5uKgVFmddYANYt0etbF2c5r IuVzmvKp6SLMx2OaWNjmnPEc0ipg123VgRajarCvxVVOKlzxWEkWSNJ71EZfemu9V3k96qMCGywZ qhkn461Web3qvJPx1raNMkdcT+9Zk8mTUk0maqSNk11QjYRGTk1NEOahA5qxF1rRgaNqORXQ6NfP p95HcJ/CcMPUd6522OCK1rdulck207olnq8E6XMCTRnKuMg1JXJeF9V8l/sUzfI5yhPY+lddXsYe sq0Ob7xhWN4oh8zS/MHWNgf6Vs1Xv4PtNjNDjlkIH1q68OenKIHmU74NU2k561YuQVZlPUHFUWPN eBBaElqOXmr8EmayojV6A9KipEpGxbyVpQtkVjQHpWnA3Arlpy5ZWNLF0DIpCtCHNSAZr04u6JsQ +XRsqfbTWGK46yLRERim7qc9RVxXaZVh4andqYBSnpWidyGIxqtIamc1CwzU1NhFdxUDirLiq8lZ 02ZyKznFQNJjvUkxxVOSTFd0I3M2Tib3qeOX3rL87mp4ZsnrVyp6AmbEUlW42zWXDJmr0T1x/Azd O5YcZFUbiPOauhuKglGRSlPUbRi3EXJpumX8ukalHdR8hTh1/vL3q5cJ1rOmTmu+jUas0YM9Wtbm K8tkuIWDRyDIIqavPvCuvHTJ/sly3+jSHgn+A/4V6AGDAEEEHoRX0FGqqkblp3FoopK2Gee6dptl qXxM1uO9to7hVRSBIuQOBWh4w8JaEvh25uorWOzntk8yKaL5SrDpWJ9h1W/+I+sppWpfYJFUFn27 twwOK2G8C6lqjoviDxFPe2ynJt0XYp+prPdPQ5Urprl7mr4d1r/ih7LVtVl8si33yu3tkf0rLj8Y +INRRrvSPDTS2I5WSaTazj1Ud6PiVbmDwSsNrHtt4pog6qOiA/yrq9NktpdNt3syptzGvl7emMU9 b2NPeb5b7Gb4b8UWviOGURxPb3Vuds1vJ95D/hUUWq2x8dz6SthEs62YmN0FG9gTjbnrisawMUvx ZvGseY0tcXRToX7ZqaD/AJLDdf8AYLX/ANCouxKTsr9yzr/jYaF4gh0o2MlwZoi6GPlmbsuKpv44 1bSp4W1/QGtLOdwizRvu2E9N1Nv1VvjDpgYA4spCM+uDWl8REVvBV/uAO0AjPY5ou9QblaTvsWfF 13dReGbl7G1F2ssLhyGxtQqct71g+ANS1kaFpNmNH/0AR4F35g5GTzit2X/kQX/7Bp/9F1H8P/8A kRNI/wCuH9TR9odm5p36HRUtJS1ZsFMkcRoWboKcSAMms27nMrbR90frWNaqqcb9RogllMkhcnk1 EzUjtULPXz85NvUoczVEWpC+abnNRYLkympAagU1KprSMgY41E5qQmonNTUYixpR/wCJkn0P8qKb pJ/4maf7rfyor1ctd6L9f8hM+bRThTRThXYxDhSg02lpDJFNSKahBqRTTQE6mpVqFDU6UMaY8Cnr SLT0GTU2HckiXNaFvEeKhtotxFbFta8DiixLZPZAgiuksX6VjQQbe1a1pxilsZm9C2Vp0nIqvA3F TMciuHE2sVEo3C5qjLBntWs0e6o2t/avnZzcJG8Vcw3t/aojDg9K2pLf2qs9v7VrCvcvlM4R4pGG BV4we1QSxcVtGabJZnytiqcslXZ0IzWfMprshYyZA8tQPITTnBpnlkmulJCImyaiKGrggJ7Uptz6 VXMhFIJUqDFTGLHamhKLgTwHmtW2PSsqEcitS27VhU2EzVgJGCDgjoa7nQ9UF/bBJD++jGG9x61w sPQVoWVzJa3CTxHDL+vtXPQxDoVL9Oo0d9SVBZXcd7bLNGevUehqxX0kZKSUlswPNfEtp9j1eZAM Kx3L9DWE3Wu88cWO+1ivUXmM7Xx6HpXCMOa8WrDkqNCHxCr0AqnFV6HtXLUY0Xoe1aEBqhDV+361 57+M2Wxei6VYWoYhxU44FejTdkKwE4FRO1K7Yqs8nNZzlcaQ4nNAGajVsmpkFZezuDYbaRhUuOKY wFDjYkgIpjLxU5FRvWMhFZxVaUcVaeqsvesIbkSKFx3rMuHxWlc9DWTc969SiZlcy81PBLyKouTm poGwa63HQDct5M4rRiase2bpWnC3SvNrRKiy8p4oYZFMjPFTYyK4WbFCdKzZ15rZmTg1mXC12UJG MkZx611HhrxKbTbZ3rloeiOeqe30rl5eDTUkwa9KnOUHzRIWh7Crq6h0YMpGQR3pa8/0PxDcacRG xMsH9wnp9K7ey1C2v499vIG9VPUV6tHEwq6bPsaJ3M+y8NQ2XiS91tbmR5LtQGjIG1celbNFLXQk CSWxDdWsN7ayW1xGJIpVKup6EVyA+Hs9oWi0vxHf2Voxz5CnIT6V2tFDSYpQUtzI8P8Ahux8OWjQ 2gZ5JDulmkOXkPqTSJ4eiTxXJ4gFw5lkthbmLA2gA5znrWxRRZByq1jGm8ORTeK7fxAbiQSwQtEI sDaQe+etWNe0iPXdHn02WVoUmGC6DJFaNFFkHKrNFSPT4l0pdOkJkiEPktngsuMVz2jeCJdFvong 129ayhbcloSNn0+ldZRRZA4piUE4GTTXkVOpqvJKX9h6VE6iiUJcTF/lXhf51SkFWGNQuM159V85 RTkquxOatyLVZ0Oa4nS1E2R0oo205VodPQlMFFSqMUKtOxisGmjRCE1BI1SO2BVOaTFYzbsBe0ds 6rGP9lv5UVBoT51mMf7Lfyor2sq/gP1/yJZ88YpaKK7hC0tJiloAUGpFqMVItAyZKnQ1XSp1oAmW p4xk1XWrMI5pDNWxjyRXR2kAKisLT15FdPZr8gqZSsSPEOBU0XympCnFRng1xVK6QWL0MuO9W0fd WVG5Bq9A9eXXxNy4xLyrmpPK4psJqfjFcOkjZKxVkhHpVWSEVoyYxVWSuecUh3KLxYqrLHV5zVeT mrpyZlJmVPDms6aCtyRM1VkgyelejTqWIMNrYk9KfHaZ7Vqi2yelTR2wHatnXsOxmLaYHSmvbgDp Ww0QAqpMopRq3IZjyxYquUwa0ZlFVGHNdUWShsa4NaFuelUF4NWoXxUz1KNeFquRHOKyopavwSci uGpAaN3TLx7KbcOUb7y11UciTRrIhyrDINcXA2QK0bDUzYybX5hY8j+7716WDr+yXLLb8gZu39ot 9YzWz9JFIrya6he2uJIZBh42KsK9gR1kQOjBlYZBFcH470z7PdJqEa4Sb5Xx2au3F0+aKmugjmo2 xVyFxWUsmDVmKavKnC4G1C9aNs4rDgmrRgmx3rhnCzuaJm7G4xUhcYrLS5461J9pz3rqpu6GWJZK qs/NI0m7vTOtZzjYpMmjbmrkdUo6uR9KunIlol7VGxqTtUbVNUQwmonNOY1Gxrhk2BE9VpOlWW6V A4rOO5DRnXAzmsq4TNbUyZqhPFmvSoyM2Yrx80+IYNWJIuelRBcGu3muiS7btitGB+lZMT4NXoJO lc1WNwRrRNVpTxWfC9XEfivNatI3T0CbpWZddDWjK3FZl03BrWmveCSMq5bBNVPOw1SXkmCazHmw 3WvWhG6MrGzb3HPWtezu3hcPFIUYdCDXJw3OD1rVtbrpzWdWm90I72x8TyKAt0m8f3l61uW2p2l0 P3cy59DxXncFwDjmtCFw2KqjjK0Hyy1Rod8DkcUVy1rcTp9yZx+Oa2bG5nlkCyNuGPSvWpYhT6Aa NFFFdICUE4GSaKxtZnYzrErEBRk4NYV6yow52BpS31vD96QE+g5qq+pF+IxtHqetYycGp1fiuBY2 U/IC95xPJOaPN96p+ZjvQJa5qtZotF0PmlIzVZHzVmM5p0qnMNkbx5qB4qvFc1GyV3KKaMmUDFTl jq0YxRsApOKEkV9uKjdgoqxJgCsy6n255rjqxRohJpgKoTT571XuLvBPNUZLvJ61xuFwOg8OSbtd iH+w38qKp+E5t/iKEZ/gf+VFe1l8eWk15iZ4hiiloroEJS4opwFMBAKkUUgFPApgOWplqIVKvWkM njGau26ciqsIrStl5FSwNSwTkV01mvyisCxXBFdDZ9BXHWlYEXtmVqvInNWx92oZK8StUdy0iBRg 1ahODVfvUkbVyVFdFxNWGTpVgPxWdE9WFfiuNTcXY2sTO/FVJXp8j8VUlkq03NkMa781ExzTGfmk 310xhZGLFIzTCmTTs5qWNMmru0NIjWGnmMAVcSHjpUVwNqmlaT1KM+ZgBWbPIPWrN3LjPNZE8/J5 ruow0MpISVwarO1MeXNRl813RiTYlDVLG+Kqq1TIaGh2L8T1et5ORWXGauwvjvXPNAjet5OKkmfK 1nQT4HWpJZ/l60r+6UaGleITpkwhuCWtmP8A3x711GpWUGt6RJBuVkmTKOOx7GvM7qXINXPD3iyX Rpxb3GZLNjyO6e4ruwlZqPJPYlnO3MMtndSW0w2yRMVYU6KSuw8caRFf2sev6cRKu3EpTuvY1xMR oq0+V2EasMnSr0c2B1rKiYirAkxXDOFxo0xc471Klxk9ayfN96mikJNQo8pVzZjfdVhVzVG3etCN gByQKJO40yWNKtRioEkTP3h+dToayTsyyTFMcU/PFNNatpohlZxURqw4qErXJOAEZFRMlWNtIy8V i4WJKMiVTmjrTkWqkq8VdKZnIx5o6pSDFatwlZdwME16dN3II1fBq5byVmFsGrMElayjdAbsD5q4 jcVlW8nStCNq8yrE0iyaQ8Vm3Z4NX3PFZ12eDRRWpozBvW5NY80mGrVvuprFn617VNaEWHJNg9av W91jHNY+45qWOUitHG4WOotr3pzWxaXYOOa4yC5IxzWna3pGOa5ZUrO4I7y0uAcc1v6Y4ebj0rgb K/6c11/hq48+5cddqZrqoP3kh2OkpaKK9MQhOBk1zF5L511I/qeK37+XyrRz3PArmm614+ZS5rQX qXFDk61MBxUUYqyq8VyUKbEyBzio/MwetTSjAqhLJtNa1KNyUy9FMM1dilBrn1ucHrV63us96ypx cWXc3EYGnNiqkMoIqZn4616UZaEsGIFRNIBUU0+O9VHugO9clWtYaRNPINprDvputW57rIPNY95L uzzXG6rkUZl1cHJ5qg1wc9aluiSTVMqc10wirEM6bwRIW8UQD/pm/wDKimeBVI8UW5/6Zv8Ayor1 MJ8D9RHkWaM03NLmtBDhThTAactMZIKeBTFqVRTAAKkQc0gFSIvNIaLMA5rTtx0qhAnIrSgXpUSG alo2CK3bSTAFc/AcEVrW0nSvNxEhpG2j5FNc5qGJsiptpNeLO7kUQnrT0NL5ZqRIjUtNoaJYzVle lRxQmrKx4HSslh5SdzTmsV5elUZmrSmXisy4HJrZUOTUzcrlZnoD1G+c01Sc1ty6CLaHNXrdMmqU AyRWnbrgVzv4i0icKAtZ96+AavSSbVrIvpcg16FKCaIbMW9kwTWPM5zWldksTWbIhzXTBJElctzT c09kIpmK3Qhymp0NV1qVDSYFyNqsxviqKNUytWLQF9Zsd6V58jrVESGguaz5Bj5pM1SkGTVg5NRl M1pHQRf0DxBcaM7QuPPsZeJYG5GO+KbqWnwwTi5sX8yyn+aM909VPuKoiLmrUCOEKBjtY5I7Vq6l 42YrCRqcVLtPTFWEhVV3OcD1pk19FbcRAbv7zCiNJtcz2M5VFF26glqxXfIwjX1aka8trfAQGR/f /Cm2uj6nrTmeBiI8/ffgVv22iQaJaeY224vXOBIw4BPpWqw6ltsNKT3MjzNUni8yG0k29toxmo44 NZuZdrI0IHUyHFaksjrrMdgVuizru+0q2EB9MVblEs1vb3bctCxR8fxg8VosLTvqaKJhi01ZQ5DI fLfay7+c9qI9Tv7ZS7iWMA4Jbpmth7aNYTK7ZFuRLIf7xA4BptpDJdQmGcrhomkfP8Rfp+VOeDpt aBqRWvig9J1V19R1ratNRtr1cwyAn+6eorm5fCcSSMsczrGB9eapJobPltJ1MtPCfmBPGfwrkeCl 0Ls7HbkU0rWHpmr6hCVt9atjEx4Wdfut9a3uDyK4K1OVN2kStRm2muKkJqNzXJKQFZ6rSDirT9ag kFYwepEkZtwvFZF0OtbVwODWVcrnNepRZmZL8GpYXwabKmDSRjBrt6Aa9s9aUT8Cse3OMVpQvXDV iCZcJ4qjdDINWwcioZo9wrCGjNkznbxCSaxriI56V1NxbE54rJubU88V6dKaEzAdSKb0q9PBjPFU 3TBrqTuIcj4q1DOQetUhxUkZ5oauM3bW6II5r0LwExmNzJ/dAWvL7djkV6p8OoSujzzEf62X+VKj H96gudfRRUc0qwxPKxwEGTXpN2V2IydYuAZVhB+6Mn61lE5NRSXTTzPKx5Y5pPMr5mrUdSo5G60R aiPNWl6VQifmrsZyK7aJnIjuOhrIuWIzWzMmRWVdQnniupq6MjMMp3VctZTkVVaA7qt2sJBFYcmp SZtWrkgVYd8LVe2jIUVLKDtrZR0C5n3dwRnmsqa7IJ5q3e55rBuXIJriq0rjTLT3me9VZpt3eqZl bNOUlqwVKw7kcq7jTVtyT0q4kBbtVqK19q01Qi74Ng2eIYWx/A/8qK0/DVv5erxtj+Fv5UV6mC/h v1BngNFFLW4gFPWmU9aAJVFTKKiSploGPAqWMc0xRU8Y5pDLlslakEfFUbVMkVs28WQKzkxAiYq9 b9RTBDjtU8CfMK4KqTKNO2GQK0Y4SR0qrZx5xW1BDkDiso4dMTZVW2z2qaO19qvrB7VMkHtWqwqC 5SW3x2pxiwKv+T7VG8eK2WGSBsy5k4rMuI+tbk0fWs+eKsalFE3MOSM5pqJzV6WLmodu0159SHKa xJbdcVeWQKtZ6yBe9OM/vUU6V2U2TzzcdazLg76neTdUfllq9CFOyMmzMlhLGqz23tW79mBHSont vasKk+VjRzssBHaqbpg1v3NvgdKybiPBNa053EUxUi00jBpyVswJ0qUVGlTKtZMYlFPKUm3FK4AK MCijNIB6LV2FERN7nCj9ar20YfLOdqLyT61esrX7axllBESnCp2pytTh7We35kxUqk/ZQ3/IrFLq +YiFDt7HoBWhpvhgzzh72RfLXkjPWtABUXaoAA6AU6N0JxMwEfcE4H41xU8wqVq0U1p2PQWXU6UG 09e5qQXlt5n2KyjLiMYJQfKv41nakt27PbXkRWFuYrmLnYff0o36fJKpk12GGAfchhcIPxNT/wBn 2Vy5a31mRi3AUThh+VfTo4SnFJLPbkyanahRw0qLhqs2N9pdtbpaw3KPEOhIJOfeq6eG9Rt5AVks 7jnh5o/mAq/PcXunhI4dH+1bvvvFtX+dK1h3uQ3dxY2U032uUbLkDgqaqw/OzNGww5BIHp2I9qdf 3+rQ2rXMsVpbRJyVkOSB71X0mS41VllzMyE5EjLsTHsKNxpGnJA7QPESfnBGRWHbnSvC8bQwgvNI csucsx9TSeL/ABUulwfZbFlMv3Wk/u/T3rgBc3l5KZ9zNg/MSapQuDlZWOxHjZby++w3kCx2zfKc joa7CLZ5CeW25dowfUV5JLAjx78lnrs/Bms/aLf7BM3zoPkz3rkzDDc9Pnj0Moys9Tp2NMY09hUZ r5WcWmakbVBIKsGoXGazWjIZRmXrWdPHnNbEiZqlNF7V3UpmbMOWLmoQmDWnNFVN1wa9CMrogdEc Yq/C/SsxWwatwydKmcbiNWNsipQm4VUhfPer0JzXBJWZrFkEttkZxWbdWnB4rotgIqlcwDB4rZS5 dSmcfd22CeKy5ocHpXVXlv14rFuYME8V6FKd0QYxTBpyLzU8keD0pqJzXRcq5Zt1717P4Otfsvhm 1XGN4Mn515DZQmSVEAyWYDFe52cAtbOGBekaBfyFa4dXk2BNWH4kuykK2qHl+W+lbcjrHGzscKoy TXH3crXd087fxHgegp4uoow5e40UskUnmVJImKqSEg15KgmU2XYZea07d9wFc/FLg1q2k/TmuynG xLZrbNwqtNa7u1WYpAw61KQDXYkrEmK1lz0qeC0welaPlAmnpEBU6BYZFDgUSx/KatKopsiZFVdD sc7ewE54rCurYkniuxuLfd2rLnscnpXPNXA5Q2hz0qzBZk9q2hp/P3atQ6fj+GpjTuBmQ2XA4q2l rjtWslmAOlK0AXtTnS0ATRYgmoIcfwn+VFT6aMX6fQ/yorpwitB+o2fNlGKXFLitBCAU9aQCngUw HrUy1EoqRaQyZBmrUKc1BEM1ft06UmBes4+RW9aRcCsuzTkVv2iDArlquwDhDx0qSKHDVaWPinrH g9K82U9Sy1ZJyK3LdeBWTaLg1sQHgV20ZXJZbRBipQtMQ8VIDXoxsIQrUbpmpqaabQijKlUZ04Na ctZ8/euKs0kFjJnGM1nytitK471mTDk14lWd5WNIldpSDSrIWqFgS1WII8100FqEmTxoWqykVOhi wOlTEBRXoSsomZHsFRyIDUjOKYWzXgYibcrFozrmMYNYt3HjNdBcYINYl4OtdGHkDMeQYNIvWnyj mox1r0egi1GaspVOM1ajNZSGTBaQrTlNKayuBCwp1vbvcS7VBI71Pa2jXl0sCnGep9q6G1tUtIti gZ9aVStCjDnnr2Xc0p0p1Zcsfv7GfFpTKyl8BR/DWgq7QFUYUdhUhqC5u4LSPdNIqj1Jrx6+Kq4q a5vkkevh8NTw8bR+bK+rXyafYSTvIseBwW9ay/CvhmXxNA2q6veTNBIx8qFG2hh71zvifVW17U7f TLJ1MbOAD6mvWtB01dI0e3sl58tRk+9fQ5bhPZU+aS1ZxYqvzPlWwDw/pAgSD+zoCiDABQZ/OoLj wpo1wgH2QREdGiYqR+VbGcUZzXrnAYEfhie1DC11u9QHoGIYD86yz4Q14mU/8JRON5/u12eaQk46 UWAwbHwzbWlr5d3NLfyEhneZs5I9qk1fUVsdOkMJUPjaijip9Zu5tP0ya7RQ7RqSFJxmvDNU8Vaj qF5JeyzGMhvliB4FKzuWrWNa7tTcTma4Y5duFHOakjkt7W1MZYPJ2Ve31qnb67BqEEYKFZejH3qE z/vXj2ADHDd62Rmyaa6Z8gKFU9h3q7oV39m1KFwwBU/pWIQQcl8dhUtkzrcBl520PsyWj2wEPGrj owBqNhRYktp8BPUxinstfI1YK5oQEU0rU5WmsvFcziBVdKqypV5xVaQcVEHZkSMqdOtZ04xmte4H FZNz1NenRdzMpl8GpYZORVWQ4NLE/NdbWgjagk6VpQP0rEt36VpQPXDWgVFmxG2RTJlyKjhep25W sL3RoY91FnNYt1D1rpbiPrWVcwZzxW9CoS0c3NFg1AEwa157fnpVU25B6V6KmrCNfwdZfbPENqmM hG8xh7CvYK4P4cafhrm+ZeBiND/Ou2vLqOytZLiQ4VB+ZrvoWjT5mNGXr98EVbRG+ZuXx2FZKYxV Rrh7q4eeQ5Zzn6VMjV8zisVKdVy6DTuOlUEVnTpg1osciq0yZqYYp3GzNyVNWrefB61BLHiogxU1 6FKvcLHQ293jHNX47kEda5iK4x3q5Fd4xzXcp3QjollFSrIKxIrz3q1HdA96iVRopGsrin9RVBJ8 96sxyZpRqXYx7RZqFrYHtVteRTwtdkY3JKAtR6VKlsB2q3s9qXbWyhYRXMQAqtKuK0GFU5xUTQEF gMain0P8qKdYj/iYJ9D/ACop0FaLA8B1Pw7dWBaSNDLCO46iskCvV2iZZOmUbqDWBqfhWK9d5reM wueeOVP1FZRqdzaVPqjigKeBU95YXGnz+VcJtbsex+lRAVsmZABT160mKeq0AWYRzWlbDpVCBea0 rdelQxmracYrctD0rBtzgiti1fpXBXkNI2Y+RUyrVe3OQKuxpmvMd3IZNAMVpQGqcSVdiWvQoJks uRnipQagTipQeK9ODESZpjsAKaz4FV5ZcVUp2QhJpOKz53p803vVGabrXkYqsrFJEE7ZqhNirEsm apyvXjxvKVzUhI5q3bgcVS381ZgkxXZTnyMlo00IC1HLKAKjEvFQSuTW1SvdWIsKZeaPNqqzGk3m uFwvqMkmfIrJuuc1eds1VlQtW9JcomY8qc1Ft5rSkt81XeHHau1SEQrViM1FtxT0oYy0p4p/Xgcm oUNdNoOkBYxqN2uF/wCWSHv71nbqUld2RJpmnCwt/NlXNxIP++R6VO3PepriQu2TjntUFfN4iq6t Rvp0PcoU1TjYY/AJ9BXlHirVZry8ljaVwI2IVexr1S5YJExyBxXj2vnfqs7dF3cV7WSQTm5M5sbJ qKSDwvcx2XiSxnmI2LKCS3avoeKZJolkjYMrDII718yE4kBHavR/APjgWpXSdRfEROIZGPT2NfUt HlHq2aTNQpMGG4EEHoRT9+eKkdh/frWTruvR6Pasww0v8K561PqWoJZQkkjeRwCa88lv4LrVmmv5 DKqtwD0Aq4q5LKHiDxDq98MzuyQE5CrXM29vbz6g8cjAeepZWI6GvV3i0PVrMQhVXI49q8z8XaMN IvIpIH+Q5wwptroNGK0EltOZYx8qNhsdK6K2sTd2RvUKkDhhmuZtr9llaH76SdRjvWno8up2d6Le KJjBIckMOgpcyQWJ5ITn6U/T0L3iwqMl2AGPrWjdQqJ2KjjqfapPCNkb3xGnHyQne39KVSXLBsSP VIF2W8af3UA/SnmkB4ozXy1UsMVG9OJpjGuOUgZC9V5KsNUElZJ6kNGfcDg1k3S9a2ZxwazLiPNe lRZmzGlHNMTrVqaPnpUITBr0E9BFqBsYrShfpWVEcYq7C9YVFcRsQP0q8hyKyYJK0IXyK4WrM2ix 0y5FUJowc1pPyKpy96zi2pDaMqWEHtVdrf2q/IRmrOiWf9oatDDjKg7m+grvp80mkiLHbeHNP/s3 RIISMOw3v9TWD4j1T7befZYW/cwnkj+Jq1/EesLp1qLeFgJ5RgAfwj1rjoiOveuzG1uSPso/MT7F yHgCrCmqqMAKk8wDvXz843BaFndUbniojMPWo2lz3qY02WMmxzVKQ4NTyyVTkbNdtNAKJcGnrcEd 6q85owa9Km9CWaMd371chu/esIMRU0c5FVJXBM6aC6z3rSt5wcc1ysFz05rVtbrGOamKsyrnSxSA 1ZU1kW9xkDmr8Uua76cwLYoqMNTwa6U7gIwqtMvWrRqGVeKUlcRVsxi+U+xoqS2XF4v0NFFNWQke f2sqzwLvJyRnkVIf3SkDpwAagSZUjLOyq/p6Cn2t19o3plcA8GvMjPoz0XG2xX1fSrbUbR0ZQGUZ VsdDXAXunz6fP5Uy9fut2YV6RLMYSUlGQP4vSq+rWFrqFiQwBwMg45Wt41OVmMoXPOAtSovNT3lh NYy7JB8p+63Yio0HNdCaZztWLUCcitOCOqNsvIrXto8ipkwJYkINaVtniq8cVXrePkVwVVcaNS0H SteCPIrNs06Vt28fArOFHUGSRRe1WkjojSrCrivQp07EiKtDHFPxUchxW1rCIZGx3qlPLip5nxWb cS9a4q9WyGkRTTe9U3kzRLJzUBbNeDVm5M1SGyNVOUmrbDNQvFmlBpAyoM5qxFmnC356VagtiT0r SU09ECQIpIoaE+laMNpx0qY2nHSn7OVriZhNFUTRkVsTW2O1VXh56Vj7SzsxWM8xk0CDParwg56V IsHHSm6yQWMp7bjpVOeDHat+SEYrNuowM1tSq3JaMR0waaOKvLY3N3JstreSVj2Va3tM8CXMpEup SiCPqUU5b/61elThKfwoRQ8N6OdQmN1OMWkByxP8R9K37qdppvkbES8Koqxcta/ZhYWJCQQfeA/i qiOCPSvOzHETo/uI9d2ehhKMZ++x+OcmkxUhIJyKYa+ee56aKt7GJLdkA5NeY+KNNkguC23APfHW vVyAax/EGjLqlkyIoEi/dNetluMVColLZnNiaTqRujxplKkgjBpVDg7vTkVralot5ab98R+Xqaom IiNSBjIr7WM4yWjPFaa3Om8N+PtR0orBdt9otx2PVR7V6nYeIbPU7RZ7SVXDDOM8j618+uNpzkg1 e0/U57LEltMyMP7p603EpM6/xhrt9Jq7pGdsa/KPeubN/M3LA5qTUr8atCLmCcx3K/62M/xe4rNj vipIZkyOoxRcLGvb6tdQkeWH/CjVjfazYYZDuQ/Ip71Vt79RhQc/SpLzVpox5cIGR3J6UXQJMwtN tZ/7Yt4zGyOJBwwxiu5LFtQU56Nn8q5i0h1fU7ofZ4pJJM9VXp+NdI1tc2E6RXpRZFTLkHIH/wBe uabUqqVxNMfqMkVtZOeWkc8YrqfBejNpum+fOuLi5+Zgew7Csvw/ocmq3aalexlLWI/uIm/j/wBo 13UaYFcmLxCk+SJSQ8dKQmnEUxq8iqMYTTSaVqYa4WgYjVA4qcimFc1NrElKRM1RnirVdKqTJwa6 aUzNoxZoqpuoBrUuF61nTYBNenTdzMjU4NWI396pluaeknNaNXA1oZPetKCT3rDhkrRt5PeuOrHq XFmoWytVZz1p4k+Wq1xIMGufl9416FOeTGea6Tw9LDoWhz6zd4DS/LEvdh6fnXMRxi6u1jdwkY5k c9FUdar6/rh1K4RIgY7S3GyCP0A7n3r1cOuT3+vQgnutVlv7t7mdsu5z9B6VLFcj1rnknOetXIZz 61nUp31YjoEnyKcZvesyObIqcPmuX2WoyyZqQyZqDk05QafsikOck1EVJNTbaeseTVRiMgWHNSfZ jjpV2GDPara2uR0rqgmSzCktyKhKlTW/LacdKoTWhHat+VklKNyDWjbTHiqn2cg9KnhjIqGCNu1n PHNa0E3Arn7ckYrVt34FYuo4stI2Y5MiplbNZ8MlXI2zXbRq3Bon6imsMilU0EV3rVEkEK4ugfY0 VMi/vQaKaA81lsobuNY3XYE9D8xqCW0uUK264IdgNyjtV55Rc2icbD345qWxEyO0cgXKrkHPavCj q7HqvRXKlxZGKcQ+YVB5bdyDTI2XDxjhF6k9Me1a92imLeBu9d3es+W3iijLkNgD7i81q3yuxkld Fa4s7S+snjnXIIyjf4Vxt5pc9hL86Exk/K2K7VVGzfFheOEPYU6aJbmy2yqNrdjWtOo0ROFzi7Ze RW1aJ0qO70wWk26IEx+n92rNoOlXKel0czjY0Io+BxV2GLnpUVumcVowx+1crlqBatI8EVs268Cs 62TGK04BXTTJZcjFSVGnSpM12xEIarytUztgVSmes6srIRWnfrWZcN15q5O9Z8zZrwMTV1NIoqSN zTAeaWQ0wHmuJaosnRd1SiDPakg5xWhEgIodNsCqlrk9KuwWoHapUjFWo0ArShSfNqNsI4AB0pXj AHSpxgCopX4r13FKBkZ86jmqTrzV6Zs5qo3Wvn8TpK6NYq4xUFXbPTpLs8fKnc1HBEhV5pm2QRDc 7GsDV/GF3P8AudP/ANGgXuOrCu7LMulin7Sp8K/Ewr14UVrudcdP0qOUQz3AMh/hLYq0mi6cvItk b/e5ryhLqWaSSVndmX5i5OTXbeDtf+27LSWRmcZK7vSvonhaNBpRgjGjW9qdbHDFCu2KNUHooxWZ q16rL9ht23zScHaelRatrLxytaWq/OR80pPA+lGh2SxwmcqS7n7x61U60V7sGrmvK36FCWwFhCsZ ILty1VmXnFaGpPvvH5zjiqBPNfB4ufNXk13Pew6tTSFX0pCeeaKAua5TYaTg04YNKUpmMGnoxlW+ sIruFo2RefauB1/w7NZhmQAxjkYFek8VWvbOO7hKSLkEV6WCx9TDySvoc9bDxqLzPEJkZSQcGq4D RHI5z2FdvrHhMRTM8f3Sc4FQweGwbbd5ZZj0r62OOpuKkeZ9Wnexx8bOk6yAHKnNemR6Joup2UMz WSfOgO5eCa5y60iJIVQp5Up9e9bnhmR4rJrSU5aI/L9K58TUdSHPB2sROLhoxw8GaPuyiyqPQPWh ZeFdHgbcLXzD/wBNG3VcjPNXIa8116mzkyB6xwWNszRwBVQcJGvX2rJsPDkt9etqOrgZZtyW4PA9 N3rW/GRUysKITlFPl6gSxoqqAAAB0A7VOuMVXD4pyyUo6FE56VG1AfNL1olG4iI03FSFaaRXLKAh mKCKfimsaza0EQSCqc9XJDVGc4zSp7kSM25PWsq4bk1pXJ61lT9TXr0kRYrs/NKj1E5waaHxXTYG jShk96vwS1jRy4q3FPgdaxqQuCNkTcdaq3M/HWoEleTiNWb6Ch7K8mGQgQf7ZxWUafU1uZ1zcEZA YgHr71myS5PWtW40wg4e6jBPYc1XfQnP3bqNq64uMdyLopJJz1q5DJ05qF9Ku4T91XH+w2aIw6Nh 1Kn3FN2ewGvA2cVfiUms21OSK2LVM4rlk0mNEiQk9qk8nHarkUWQOKkaHimpJlGcVxTk61LMmDVf ODVxSYrmnbAHFakMQK1iW0uCK2bWYEda6oJCJXtgw6VUms89q1FIIoZAa2aQGC1lz0pBa47VtmEH tUbQD0rGSQGYse2rETYqR4sdqjC4Nck43ZRehetCE1lwda0oO1dFCFgbLa0+mrTq9SOwgUfPRSr1 oqhHl9jveQMSFReo9a2IGR5sBA28ceorCjnVCPK+Z+w9avWt0zIWIKt3A614EJcrPWkros6tPsUw hdvI3MeKcqhoBsILY9aZKBPH+87cjuaphjCMIWLEdB2q5TvK7JjGysOniEatI5xIew64qGK8SWFV kJ3g8cdalhvVuwEmUbiduc1I+n+RIsseBxwDzQr9BO3UjkhExVgwPHzCs8R+VcMhULg8YPBqK6kn N5uU7cduxp0Y3ttZsEnNaKSaM5Qua9rzitWBc4rEtmMDYY5Q9GrctSGAIORWTVmc0k0X4VxV6Kqk Q6VcjFdNIzZYU04vxUY4FNduK7L2RI2WTFUZpfepZpOKzp5feuDEVbIaQyWSqcjU+SSq7tmvAqS5 pGyViGVuah34NOkqDnNbRjoK5oW8vNasD5FYUBINa9qTxW0LPQDTSp1NV4+lSk4FdEY8upNyRpMC qs03vSTS4HWs+a4561nVr2VgSJnkzTY0MrhFGWY4FVBNk9auJP8AZNOnvB/rANkf1PeuajR+s1VD uaSmqcHJ9DF8W6ixiOl2z7YY/wDWsP429K5YSeXCvyluOtT6pcHcIwxLE85qlIwQcNkGvuqNKNKC jFaI+VrVpVZtsGuTFFhGILn5vcV1ngKzMl8t6/yAbgg9a5G2tG1C4FvH8p9T6V3WiRiGSGCJ8LDh d3vXz2a4z2c1GO97s+lyzCuVJzl2NzULKOJGnZt0rN+AHoKtRXiwaWGz82MKKz9RcvNw2VHAqoCe Bnivm6uOnGvOcOqt/wAE9WFDmppS9RzOSST1NRtTmpp6V5aOxCA04NTcZpMEVTVyiUNTTTN2KTdS URWHZFBpnU0vOKqw7Fe5t0kHIzSx2qKowo4qR+RT1I4Fa+0ko2uJoytZ0SDVbF4mAWTGUYdQa4PQ ftWl66+n3jMWzgFu9eouh7VlXejWt9qcM7ptkTq1engcbyRlTnqmcWJoqautyCM4NWo3xUd5ELe6 dB0zxUXmYrpcb6nlvR2NFZsVKsuayhPz1qxFLmnHQDSD08MarRtkVYWqGmToamXkVAlTrRcGKRTS KkpprKYiI1G1StUTVx1GBXk71Rn6Gr0nSqM3NOiRIzLgE1nTpWrKuapzR8V6kJEox5lxVctg1duR jNb3hjwTJqm2+1ImCyHIU8NJ/gK7aactEMxNI0jUNZm8uygZwOrnhV/Guvh8J6fpSCXVLrz5F5aN DhR+NWNb8S2WjW4sdKVECcYTgD6+prkXuNW8QXSwxq7BuSTwPrWk4cui3JUlc2tS1yKMtaafEsSH gLGvJrInh1ycZhtHx78Zrdh0dNKSOKIhrqU4eZhnH0qta6yj6nLawvOZIhk+YOHGecVoqSt7+o+S 7uzKstHvr1itxKIMAkj+Ljriq9zby2lwscUnmpIuY2P8X/166G+VoNViMf8Ay3ZXVv7h7/hVa4Qz SiEw5WS9/clRyuPvfhWjpRasPkRzv21hwSRQ+pKB+8AIFb0+lW148UOzywLpkGB1Heoo/DdtBeTS TEmCE5+boawdFXGoGTBqcCuOAPpXSabPFcoGiYHHUelQWtjpWs2snkQLtB2hlGKtWXhE6dIlzbXJ BH343P3hWVbC80G4vUHFo2IcYFTEAioE4/Cpc8V877aUWCK08fU1nyqQa1XGRVKaOuiliWBWjkKm tG3ucY5rMcbTSpLtr06Va4WOkhu896tJOD3rm47rHercd5710uWgjeEgNBIIrMju896sLcA96wlM omdQarlealMgNNyCaUXdgySEc1owdqz4jV+A9K9CkiS4tOpq06utAKvWihetFMDy8ATw+YUGB3UV NCUU7c4K8iuf0/WoSohZ3TBxu6itSS637jkBRjBIx+Oa8BppnrrUtOZt4O4Ak9PUVLyVZdu5/Wq8 V0ueMHjhqU3cUW5jPiQ8kHvUjK89oYpvOD9Ou3tUtpqMgOyRSCf4WNQx3YvmcJ8nOSc9ainFwFaW bChehFUnZktXNBhBfPsUiN+ufSozZNHIDL1HcdDWVDJGsn2h5gqjnOeprXstQF1N5DAOh+62egq7 E7EyRKVfzTj0ANNt717C5Cht8DHp/dp9xb5TMZJX+VZrQyRGRywKdcHtVJ9GRKKkjt7O5inUGNwc 1oRmuE0y9UsSpK7e+eRXUWGqLKAkhwx6Hs1dFOxyTg0bGeKhlbAoMnFQSvWlSVkZFed+tZs0nNWp 361nTHJrxMRVuy4oYzZNNPNMJ5p6c1xWLI2jJpvkc9KvJFntUq22e1J1GgSKkEBz0rVtocY4ohtg O1aEMWK68MnJ3YSFjjwKSTgVZ24FVpzgV6NSNomZm3T4BrKmkOetaF2ayps14z96ZYolOcCneINQ +y28Vghx5a7pD6sadpMQlvg8n+rhBkf8K5zXL43N5LKSCGY/jX0WTYZXlVfoebmNdxgoLqZczmWY MSevNJKcuqYGDRE6uhyMMW60yYqFd8cKOtfQydonj01zTSJdMuzb3Mjxgs23av1rudNiaC1jD/fx lvrXL+FtN86UXDj5U5+prsgMCvz3N8Qp1Wkff4Km6dBRHMxbqelIeKcAKQ14l9TpGk0maDSdTVIo XOKM5pKKAF6mhUHWm04NxQ7gBFGKXOc03JoQDZBxxTQcCnlu1NPpVrazGiSM5U1ytt4nEt7NHIu0 oxAPrit++uDaabczjqkTEfXFea6Vm7VpicHcd1e/k2Cp4hz9otDyMyxEqCTidhHfG+3SOMOOtNdj VPTJAkgjY/eyKvtEc16+Nw6p1FyrSx5VCpzxuyNWJNW4CeKgSE56VchiIrglTZvcuQtxVpGqrGuK mXisnFoaLKGrCGqiGp0NKwyfNITSA0hNZVBjWNQtUjGo2rgmwIJDVOWrcneqUprakjNlWQVUnxg1 bkNa3h3QBfSC9u1xbIcqD/Gf8K9KjBzdkSihpOhW0EA1nWhttlP7qEjmQ/So9b8SXuqsYLKOSKBR jYBitvxHajULuOZZHFtF8qqOFyPSqQRI/uge59aqtmMKK5KSu+53UcDOrrN2RzFpo893dKLwiGAH LMx6iuzgu4FiMWlW5kdRtDbcL+JrHv45JFBj2BhyMjNFhaeI9SBJvXso1+6do5/CuvA4j20bvciv hlRdkW7m6kYr9tiNlcK3yseUb8akh0wSO00ccUZkHzyLzkVRvF8RaVuN2kerWWOQVww/CorS40m7 t2aPWZLXdz9nJxsPpXoOzMUbGo6dHJ5c+4GNU8twfQ9/rVK4SLRorKQSmSKGQtk8nBFV7vXbO3sl gXVGfnDSGLP/ANaub1XVrK1u7dZLma5ONzK/GB6ADvT3A6mwmtZmjcy9JWdMd81du7T7ZbyQSD5J OWI4yKx9Hjtpo21i5ia2hH+rhPBb8O9V9Z1m9vVaOH9zCR8qqefxpJXKvYufb7HRoxaWYQbR1HQV iL4nu5rzfI+Yw3ast4nWP5m+bNV4+M+9bRiomUm5HpNtOtxCsqnIYVYDVy3hnUdyNasckdK3zNXy ePw3s67S2epMWywzDFV5SOaaZqhkl965YU2iiGYiqzPg1JK2arHJNd9NWAlExHenpckd6r7TSEEV 6CehLNOK796uRXfvWCrkGrEVwRUSjcEzoUuc96lWXNY0VxnvV2GTNKMbMq5rQtk1owGsq1OcVq24 6V6FIRdWn0xafXWgFXrRQvWimB84xkbwI23Kw7VqWuqTw27R8SjGNjj+VcnbXT20gIJK9xWvDcRy p5olJB6AHkV506djup1eZHQR+I7VUVWRopTwBjIzTwzzPyoZ3PJ7AVy00jO5TAY+tb9lrdutukE8 ZVlHysvOTXPOnZXRtGd3qSyyyW4CJJgscYHWppdRLQJavuGDkkmo38uF/OlIkLcqfSqyvBcySbyB kdBUJFMlMwjbblSh/hI4p2nGWMkLNtiY8n+IUjRx48gnIIyH9PxqKWKW2hLA4A+63Y0/IR1cUs+x RE6lQOc96dIiXEXADdnUdq5LTL6bzdjS9ehz0rprPy5SN5ZJAOcH71DViRsFtHbMVUHbg5PrV60k ITI5RRgD0ps4YxkCMlj3B4xUMCkAKuRj+GnGVmJxujT0/V5YUZLokorYDdwK0/tKSpuRgwPcGubu pVjgI4B9PWs601CW2kYxP8ueVY1c7zjZbnPOn1R1kr5qlIabHd+dEGYbSe2abI9eHUjJTtJEWsRk 81LC3NVHfmnxSYIqlERswAGriIKzbaTpWlE2QK19mmFyxGgqymBUCHFP3gCuujFQE2Su/FUp3zTp Zsd6pyzZ70VqqasJIrXPOaz5Uq+53VBJHu4HU15Tve6NktCvcP8AYdCdxw9y23/gI/8Ar1xlzukl 2gZGa6TxNdqZEtk+7EoH4965yUbYmYHk96+9wNH2VCMep8tjantKzfREdvs84q2FU/dJpl8gmmjt IcYZskjvTMD5VHc1XsZfN8RIwJwZAgHrSx8nTpNo6cspqpUTZ6JpVqtpYxxL2HNXwM1HGu1AKlAy K/L6knKTkz7vYWmk0tGBWeghtGKD1pM1VhiGkJpTTaqxQuc0gNJQoxyadhkimnbRiogSDSh/eocW S0SKgNROpWT2xT1cUyVxjd6U43vYWtzL8SMU8PXp6HyyK4TRI/KsVkH8fJFdh4nvI20m4gDjc6kY rmtNtilnHGB91ea+0yCLjB37nzmeN8qsXo5I5NRjCqQp6/WulhgEsKuOQRXLLKyzoSBtRhXTeGbl blbq1Jy0EnH+6a9rG004pnkYGo27FlbT2qdLfHatBYB6U7yQK8txR6pREWKXZVsx0zZXFVsWkRot TotCpUwFc5Y3GKY1SkVGwrCohERpjDipDTWHFccoiKkvANUpTV+Val07R/t7ebO/lwA4z3b2Fb0Y NuyJtcqaNo76rc75MrbRnLt6+wrpp9Sit0a3SPy41G1OKpNeSWN08NsgEKrtRQOnvVG4u5p0CORh egxWtbGRpx9nRevXz8vQ78PhG9Zobc3jzIqEgKvQCqbsFUsTgDvTyQOtc74q1QWmnttcAnsOtcFG nKtNRPVbjTjcrX3iJY9R8ixja9uzwka9Aa1LKy8eXsYeW5hs16hMc0z4beGmt4m1y8TE1x/q1I6L 616AOK+uoUI0Y2R4VWq6juzlvsHjCNQPt9pIO4ZKrRaF4iklfzE06Ik8SiIE/lXYHdu9qN2TnnFb 3MrHKS+B2uE/0nU5GdvvFVAH4CqMeneF/D1yWkjDzDjzJ23HNbfijxBHpsHled5O4HkdT7CvI77d qN+7IHbcc5JzTUWwuludF4g8Ti61mF7aX/RUXaFXgKaJLhZIN8bfeOOtchqUP2BUbdnceR6GtLQL nzJSJCfLAyataCepvR2rtFvA478VQnhZCwNbk2pw7YoYE4yM9qr34imchAAmOPU0XFYztDnZNSQH jBxXYtLXH6NBu1fB52nNdWQa8rHR5poVh/mGkJzTO9PUVw+zGMKE0qwk1YSPNWooBxxWkIAymtt7 U17U46Vsx2uR0pz2nHSuuMWSzm5IStRgEGtuaz9qpvaHPSqcREEJOa1LbJxVWK2IPStK2gII4pKI zSs16Vr268CqFrHgCtOEYFddNATrS0g6UhNdNxj1PzUUxDmTFFNO4M+V8UI7ROHQ4Ipc001iNGna 3qzHZIqhj+tXbZ488pzn06fSudrY026SVBbTkhifkkz09jWFSnZXR0QqdGXbiCaHElpcLz95WPSo 45ZN3mn5SOdy9CakaIQygXAwg6nrmrBgtZQpjGFzng84rBvQ6EaNpqxeFRdW6CP++vFW9kV3Azo6 yJ2Hp9ayJF8wIrALGPun1qNjLA52OSueo6GsXFPUtMmaH7OSUCvg5ITn86saXq5eZbdmEe44Bb/G qHnPbzLI3Bbk8cGnGdWnDmLBB4wOKpruI7NLgwYSVwcc88VT+3oJHGAGHUg8GsK2WZ5VFxI20jjJ q9JaEIFTjd3NZ7aMdjdUw30XllMn36Vl3dibaXJXcqngkdKnsBKVG0gBf1q0zvLFJHjBPQtzVpkN FNJmaNSh57ZNTma4TaHVdvqKjkt9kZUISRyas2wWaFVI5UYJNU+WatIzlEjLbhkdKfHnNNWFYnwz EL149asqoLjC8Hqe1ctTDu3uGTh2LdqTxWtb9BWdaKr/AHSDjrWrCuBUUYt6MhonXgUyR8ClZgBV O4mwDzWlX3USiOe4xnmqbT5PWoribnrVQzc9a89tyZaVjRWXNODjcD6c1npP70+SfELnPatcPDmq xi+6HUlywbOb1WbzbyQ7gSzVmGQSMVH3V4/GrVwy5aXJLfXpWfbsduT/ABHNfoEFqfFzd16jpXEc Mkv9xePrSeE4lk1yElc7QW59ahvXxaFehd6t+FFJ8RhIzkJHliK8TOKnuSiuiPp8mpfaZ6KnvUu7 jFRrwKdX5yz6pjsU09aXdxSE0WEhKQ0UCqGJjNG2l6UU22MaRxSHpTu1GKLjuN6CoyRmpiueaTYK akguQ7j2FRzMxU1bKjGcVBOBtNaQknILnk+u308+pXETOdolwK2I2b7OgBOQBn3rKeFJ/Ed1G/Tz CfyrckKmP5UK4A696/Q8vSVtOx8jmzvoSsPk3454NXPB12F8S3Vv/wA9I92aoIxNu3PQcU7w4Sni uJ8/ehOa7cWv3cjysFK0kemBhigsKqCb3o8+vmXWPesWCwpuRUHm5o31hN3KROGqQMKqb6cslZoo tZzTGFNDZp2aco3JuMIppFPNJXO4CbI47V7mURp1Pc9q3Bbxw2sduDuKDsOpqtpcWDJMegGBmql5 qc6zsscg2jgYFOpOFCnqtZHRh6Upv3RWkSy8871eQ8YIrJZwST606SRnYsxLMepNRnjvXkt3slsj 26cOXV7mbrWqQ6daM7vtOOB3NeX3uoyapqsRlYtH5gAHtmuk8XyLcXOz5yFPLdq4tpDBdB4h9xsj PtX1WW4eMIc3VnlYurKUuXofR9iUWxgSMBVEYAH4VMfTNec6F8SrV0ht7yNozgBpOwNdxHfRTRrL E4dGGQQc5r07HCXsdgc1HdXC21q88hACLmmLID3rlfH+tfYdLES9ZD0osBwWu6zLq+rySSnKKxCL 2FW7K6tLa2LsAZCOa5c3BeQtjk84qxHKdmWNWhWL93GNQWWJQuW+Zc+orPF4kboLdWjGMOvvVm2Z 3mQAYBPBqO8sFF20yyBCDyp6GgZo2108g6/Nir1vdkrhzkjjmsBZASSkmcVoW5LfOOcDH40gNjw4 vm6lI/sa6kxcVieFrQosk7LgtwK6UJkV5OImnUYigyYoXirMsfFVWGDUJpiLUJrRtwDiseJ8GtK2 lHFaxSEbEMYIqfyQR0qrbzDjmrqSAiuiNgKstqD2qo9lz0rX4NNKA0OwGUtnz0q1Db7e1XBEKkWP HahWASFMVdjGBUKLU6jAroigH9qYxp/aopOlVN6FISF83AH1oqK2P+mL9DRSou8QlufMGaTNBoAo EKBk1bt0yRVeNea0bSPkVLYzShtzdQ+U7HHY+lRyWN3YfPt3r0D5rV06LOOK6KC1SSLY6hlYYINc 82kXGbizgxcPki4Iz2Kmr9jG7yDzZV254XPWtLU/B06b57H96nXyz1H0rnIZJrWbGCGDYKOORWWk lodUaiZtzW0plaTeHVf4cYqONis/7yPajDqOaeJWUBTJvyM8VFLchcrn2yKzNS+9whRSpC46bh0p 8V800ZdjhhxkVmKwmAUsM9ge9IVeAFJgQT0x2pWGb9jeATeWpwT0Y9j6VrsHmTeMK3QgGuGTz4CX 37lHQ9DV7TNecMFd8xr13en1p8j6EuSOpSVSGWQ5wOvpUCL9iuoyGMiSn8qoS6hHeKEh4yfvY4xT 3F1JEI4V3CPDD3qdQsbDYlL4BVl7EcGoHOV3R5Bx0NMtr3dERKpyB1PY+9Shgy7lIy/Xnn601K5L jYIzcCYSwSFPVfetmy1iObMcoEbr3PQ1hJdrEwQkZzgsOuaWe3FxvxLt9WI61V1e7IcEzpZbkY4I rNubnrzWJHc3NiwiY7o2HHNE97uXcDkHoazqrmV0Z8lmTzT5J5quZuetUnucnrUfn5PWuRU7D5TT Wb3pLu42WUhJ7VRSbnrS3beZZSD2zXRhYWrwfmZ4hfuZehkTSEw8DnqTVeJv3SgdSKc0hZH9qrxv +6XnmvsIyPk3S2KmrzCOMZOdozW38MY3nlvbtxwMIDXPaijTB5c4RDg+9egeB7EWXh6M7drTkyGv ls4rr2M+7dj7DLaLio+h03agGm/Wl618ZY9sOtOxxSZxQTmgQZpM0YoxQMQ+tFLnNJ3oAB0oxRml BpAHSg0E80meKADNV7lsRMfQVMeelUtRfZZzNn7qE/pW9GN5oHsea6dtuPEs+44y7EE1t3G8Eqcb SODWB4dQXGqMSfmckg1uXLDz2XJ+UYINfomCdpW7WPkM03T7oaJNkEn+7mrHh9CNagc/88SazbqX y7VznqpFbPh6P/S0f+7AK7sZpTn6M8nC35o+p1nmUeZUAOacK+LufRE6tUwPFQIKsIpYhQMk8AUX GSQW8lzMIohkn9K2Y9MsrRc3UgdupycAVBPdQeHdOLuN87DJArzrU/Et9f3MpMhRX7A9BXtYXBK3 NJanNWxMaejPSYxpF+rfZJ0VlOMg96z5A0MjRv8AeU4rzOK7kjOUmZcH+E967PTr2a4so5Z3LOR1 NPGYWMIqSIo4j2mljVMlOhAlmEeeTUVjBLfziOMfKPvN6CtJbW2tbrbCfnyN7HsPSvOVKKXPU0X5 nVFOTsi3dEQWRRBgAY4rm2PJrZ1a8CDyUPJ6n0rFPJrwcbPnreh7eDg4wu+ow5pjglSB3qQjHNRy nAz6Vzx3O04XxnJbwIIhnzc54rhZPl6MCTXXeMFebUNwGVIrkJlCuQOtfaYFWoo+fxLvUYI+AQa1 9J8R6nphAt7lvLH8DHIrFC9utKDhsA4ruOZHqGmfEKCeHF1mJ1HOO9QeMZ013SY57ORZDGeVB5xX nsQJIq5HdT2p3xsfcdjU2L5rlaLaeOc5wauBo1Xbn5u1VJZbWQbtrRyE5OOQa0NHtre8SRpHLMhw F6cVEp8quBJDI2wsg5HTPalgtpJ5NzgsCea04rOKP7ifnVuKHHQYrmlX7CbRk3GnrbW/mbvmLdBU +lKZH8oDOTxTtVbMqQr/AA8n61p6DYGJfPkGC33QabquNLmluK/U6SwjEEKRjsK00GRWdB2rRhPF eDUm07iEkjyKpSx4rTYAiqsyiso1ncZn/dNTwzbailXBqLfivQpVGxNGzDc471eivPeucScjvViO 6967FIR0qXII61OkwNc9Fd+9XIbrPek2xm2j5qZeazoZs96vRNmqg3cZZUVKKjTpUi12wELjiopO lTVE4yKqQ0V7b/j9X6GinwD/AEtT7GinTVkEj5dpyrmkHWpUFRcRJEmTWpaR8iqcCZIrXsoskVhU lZFI2dOTpXSWa8CsbT4enFdFZxcCvKrVmmOxfto84pmpeGdO1eIiWEJL2lQYIP8AWrtvHgCrqjAr KFR3uO1jybXPC+p6ETMmZoR0dRwB71gJdNkxyxgFjkn1r3SZQyFWAYHqCODXEeIfCEM+6exRV4y0 PY/SuyGJg9JmsZvqebzEx3wdpJBGPukcZrXh1hL9fLnADDgZ9Kzb61lgk2SZwvQN1WqZQBFDMQ5P HHGK7XFSRSk0zp5xDcxIqtuI4wD0FY01s6TuqOTGehHGT6VQMpt5MrMysORipbq48wRys4O7qF7G koNDckzasbhyVErFCvY8VqwajOspQOo29CehFctFdYjUSlmBP410eiNDcI8EgWQDoTwaynG2ppGV 9DoY5PtAy+EfHLr0NI6vbOr4yMcEdKqeUFjBhkJI4OPSnmaSElJh5qemelc++ppaxJcrbRyxzA53 LyPSr1icn98eCM4P6VnCBHGYy0gAzgjkU1WaFgUcjJwc0KVtxON9jYmh3lXiIYMDn2+lZc9ntdlD nZ121oJK0MSo4GW5DA5ppi80u+7np+FWnbYhruYFxZzlHlgRiE+8p6getZwueetdFJFJCzbJdr4y C561SvtCe80x9Rsoh5kJPmohzuHqBV8iexnsUop845q4ZN1rKP8AZrAhufetGK4zGwz1GKuhC1WJ niH+5l6GcrYeVc9KrRyfKOelSSNtvHHqKo+ZshcnsDXuuVk2eBCF5JE0rfaoIbaMfNPJivVrCAW1 lDCP4EArzLwlb/a9diyMpAN1eoocivis2lqofM+xwkfduTdaBTQaXNeFY7BaWkzxRnNIQ7PFIelJ SE0gsKOtGRupBR0H1qrDDqaXpSBuaC2aVgAHtQaZnBpRkinYLADiszXSV0q6I/55mtM1m60u7TLk Huhrow/8RClszzPQopGv4vLbBGScVt3DbpyGBDevrVLwkVXXYt4G3BrV1GQSXZcDqxwRX3eDqXrO NuzPlMzguRSuZOpN+4RB/EwH611ehRBUmkx/dQfhXJT/ALy+touuGLH8K7fRl3aerYxuYmu3MZWo z89Dy8HG84l9alUU1UqQLXyLi0e4SIK1dMSOFZL6f/Vwjj3NZiLkgDvVbxfqqado62SthnGMA8km uzA0PaVb9iKk1CLkznNe8TNrGoSMu5YEY7V9axXmLHOMBvWo4CoQ98U13LnOAAO1fXRgoo+YnUlU qXZNaoZ7lIVySzYAFeqWXhUxRxrPcjYqj5UHNeb6GAl8tyRxH0+teoWmotc2QkQZkYYAzya+ZzDH KFbkaul+Z9Pg8E3QU+5dWe1sh9mtlVQoyxHb/wCvWRPLulaSPcqbs5Pc1IlsciAOPMkOXPpTtQNu kCQwtu29TXzWJrVK6cpuyXT9P8z2KNOFNpR1uZ0jNI5JySe5pBHx1p60uQK81yZ33toiIjtUbruG DU7DPbFRFeeauLGmcf4lsvL3SAEhhXCXtr5ZDbcCvYbu1S4Xa4DD0rhdc0vZcNuTameBX0+XYpNc rPKxlFp8yONEXPXionULICa0ri3AkPl884NU7m3ZJwD6V7ikmedaxNGAUFT7N64HBqsvyKAaebll HyjHuadwsU5TyR0YHkVoeHXP29RnhuDUMGmz3yyyr0Tk+9WfDcX/ABMUyOmazm1yMbOtjjzVtIiq FguSBwPWkgTOK0reKvInOxJl2OjEyG4u/mdjnb2FbKQ47Vajh46VN5OO1c9Su5bgyGJcVcibFQhM U9TiuSb5hFktxVeU0u/io5Dmsox1KKkxqsc1bdCTTRAT2r0aURFbmnLkVaFsT2p4tT6V3xJIY2OR V+BjUSWp9Ktw25HatFG4F61Y8Vqwdqz7eIitOBK1jTGWo+lTCo4xgVKBXTFWAKYwyKkxTTTaGRQr i4B9jRUiD96DRTirIGfKy9asRDmoVFWYhzWDYF62TJFb1hDkjisizXJFdNpkOSK5Kz0KRs6fbcDi ugtLfAHFU9Pg6cVuQxgAV5UldlixpgVL0pQOKRqhxsMikqs6ZPSrTDNM2Vg7tgYWr+F7HWoWWWMJ N1WReDn3rzLWNMk027e0uY9ki8At0I9RXtyR1Q13w/Z67ZGG4QCQD93JjlT/AIV6OGrSgrS2GnY8 EuITuK4znoaSLdbhl+R9w+6wre1zw5qmjuyXEJK5O2RRlTWH9mbJZ85PU9K9WM1JaMp+QwSSx8SD jsams9T8m5wr9O+OtQBmjcqSNp7Gqrqpl3dATgVfKmF2jq7fXPLQAsV3H0yBWt50k8STBucfPgVy VtYHckwlWRRyyA84rprLUoYEEVxwW+43t6GuOrFL4Tog29zV07UByH4cdx1rQkMVwBIgVpB1GetY EV3D/rlk8p1PI7GrMl2NqyW0qjdyVx/WsbM0djSmMqplQTGBjA5K1E/2glXicspxgjt9apRapJ57 OISu4YcZyD71owOSFVSDDIOMUWsST3UayRDdySOCe1VIZHtrlZhI1uVGN6ngH6entWjGqSRiHIBT oc0k+nJIjMOGXkjsauLZDRia1otjqP8ApujzKl03Mtq3G892X/CudhlZHaNwVdeCp6iuoltUWYBc xEc7h6+xpPsdtqIeG8XEwHy3Kj5vx9RXRTqJTTZhVg5QcUcbI++6LDOBwaz7t9kTgnHzYra1TS7r SrlknjO1+UkA+Vx6g1g6jlpVQfxMDXpSleJ5NODU7M7HwFa7YpblhyxwPpXdIwxXM+Go/I06MAdq 6BXr4rHvnqtn12HVoJFoGnA54qANnrUgavNaN2iQ0Cmhs0ZqLEjicmkpM80Zp2GLmhm6D2pueKaT ySaaQWFBOOe9LSAk80p4oYwpc0ZpO9IQvaqmopvs5l9UP8quA/pUF0u6Fx6qaum7TTE9jyjTpWtd TVlGSDjFbDsRIoIPJJ5rBkma01JjjkSkfrW/O/7tCxBZULEiv0LB7nyOZRbsU7NfOvpZT0HyLXoW j22zTYlx2rhdLiK7F7k5P1Nek6Sm7TIWPUirzCX7v5nLgl7z9A8rFHl1aMdJsr52bR6iEtIsy7j0 QbjXnPii6N5rkhM3mAHA9q9D1OZrHw/dXCYDkbVzXkwzNdlic45Jr6DK6VqXP3PMx9TVRLSBUgwO pqPrnjpStwQcUsg2qFHcda9ibSieNRhzT0NjSctbJGB1bNdvp832VAgHHc9xXJ+H4NzID0jXn610 y8dK/N8yrN1m4n6VQp8tCMH2LYnVDIyg7nPBz2qAnNNzRmvJd2aqNhQcUZ5puaCaLFWJM0xqQNQT SSswsMYYqhqFjHeQlXXJ7GtHANRsMGt6dRxd0EoqSszzxtEltrxhKv7s96gutBPm+YAWz6V6BfWy 3MDRkD5qpWmm/ZYipcvzxmvcp5g+W73PPlg1fQ88bTXLFdpwD6VWutNlEZfB2rXpc2mKynCAE98V H/Y0DwOHTKhcmuhZityPqlk7nJaLAFtWx3NaVvZwxNujiVSe4FXI7RI1CxqFUdBVhLerlV5m2edJ DIExWnbr0qvHDjtVyFcVy1GZl2FeKn2DFQxNip93FedUbuMhdcVETippD1qu7Ypwuxi7qOtQF+ae j110qdwJ1jzU6W4NRxNmr8GDivQhCwhqWme1TLZe1XIUHFWkiFdMYiM5bL2qZLQDtWisA9KkENdE YgVIoMdqtxx4qQRgU8LWyQABTxSAUtUAUGiimMFHz0Uq/eooEfKyjmrMPUVWU1ZhPIrlY0bFiMsK 63SUziuT0/qK7HSB92uKqWjqtPj+UVrIvFULAfIK1I04rkULsY0LQUz2qcJTttbKhcVymyYpu0Zq zIoqEisZ0bDuIBSt0pVFOK5FJQ0GULlQylWUEHqCK4zxF4Tt9QBktQIJhzgD5W+td3LFmqc1tntW DVSnLmixJtHh+qaXdaY228ttik4DdqyJYZHUkLlR0PpXu93pkN1EYp4lkQ/wsM1x2seAjl5tMbAI 5gbp+Bruo45bT0f4F819zzyzlaCRWAbI4NaAm3sJC24A881He6fcWc22eOSJ1OGDDBFU50VeYQy+ pz96u+ynqaKTijaWeMcKQFPY9RUkUkifcPHoe1YVsoMmXchs8c1qHekQBYEE8kVlKCi7GsZcyNNd SUAAplh1IPWui067tzEqkBUccZNcYFRUbbw3XFWLaaXYRuKkdAe9YyiUjszM0LFWj5ByrDtVmPUI bgAO/lsTg56GuVg1G5CiNn56DPNW7dvMfZIPm7g1naw2bV5A0CAjgk9MZFR2kqRkF12EnrWXdzTo TGZnKA5U+lJb343BJ33YIwTyataEtXOpWKO7s2s7iKO6s3bLofvJ/tKexrh/EPga7sLxL2xb7bpm 8AygfMnsw/rWs2tTW903lgEbgcDjIrotL1yAS7lIQyDDpJ91x6fWt41Go2MZU05c3UyrBPKtI1Hp VxZMHrVrV4LWKA30Ki2j37TEWznjqKzd4IyDketeJXpOMtT1aM1JaF9HzUgcZ61RSXApyy471xSp HRc0Q4zS7uapiUZ61KsgPesHTsBYzR2qMOKXfxWfKA7JoAGPrSLlqdjHB7UDEPBFGe9BGeaTvigQ 4UYyaAaUGkAvtTJRlaeKST7tJPUR4z4gXb4leEcDzcn8TWyMbPKPIUfpVLxjbLF4oL5xuIIFWoci EknnPFfoeBfNCMvI+SzHRtGxodq1zdhFHQE/0r0a3iEFtHEP4VArlPB9oUJmP93musLVwZpX/eKC 6EYSFoc3cUmm5pC1ESmWdE/vMBXjczk7I7EZHj+VYNCtbfcQ7ncQD1rz63i2wlzxuNdd8RJjPrqW w6RLjFc04CIF9K++wtJQoxR8xjqvNWaK0kioMkcZqzchmWI42nAOPaoI4/OvIEc4VnG76Vbv5Fn1 SRoxiNflUVy46fL9x6OWUFdebOm8PxbbHzD1c1sAcVU0+HybOJPRat9K/Nq8uao2fdLYXNIaKKwA QjNMJNPNNPSrRQgNOpnSjOOKdhi7sGgnJpCc0lOwhrE5NN68VIaYcmrQC4yKjluY7eWG3kAxcZU+ 3vT0yTXLatqLSeIxBn5YAAPrXo5bRVXEKMtjz8fUdOi2tzXa28qVoyOVOKljg9qcXMxWQ8lgMmrM Sg101E6c3F9DyebmSZCIcU4JirezimmOsZTuRYYnFSg8U0JTwlZOFxpETmq8hq40eageE+laQpMZ UOc0qk1MYDSiA+lejThZEsdExzWhbuciqccJB6VdgjIroURGrbNkCtCIZFZ1spAFacA6VvTQFhRT 9tItOrrSATFLRRVDCiiigAooooAVetFC9aKBHyqtWYeoqsoq5brkiuSQ0bGnj5hXZaQOFrlNOj5F dhpSYA4rzq0rMtHWWH3RWtH0rIsjhBWksuB1pUpIGWsgU1nGKqvcAd6rvde9dXtEhWLjOD3qPrVT 7SD3qRJc1lJqQ7FpBzUwXioYzmp1PFXGKFca0YNQPCKtmoZDxUVIKwIpPEPSoGjGelWpGqAtzXl1 UkykVp9Ns71dt1axzD/bXNc54h+HFhfWRk0qLyLpOQgPyv7V1yHmrEbYrfDScXox3PnnVNIvNLuj Dd2rwSL/AAkfrmqv2mZBsc+2a+hdb0PTvENn9nv4txA+SQcMhryTxP8AD3VtIVprYfbLUc7kHzL9 RXrRmpblRkc5HHMEDb+TzjPWpYLl1kzIGwD0rMkdhhdzDHbpVmCcshzk8U3HQ2Ujfhl+0OoX7/bP erAu5I5g0hQEnkelYNpeGGUMDwPfpV8XMUshbqWH61zyjZmqaZ0guYLz5IyN3cnpVWVIogW2AH+F geDWRbzPEco2D3U1ejuFlHz8Y6D0qGrAWlHzB3iBzzuBp9xI1s6jAkV+efWq/lusjCKYHABx3FAu Js7cB2HYrwaewjZttU1CO0FvKsc1ux+aF+QRUreSEDQkqhOAjHJH/wBaofJ8+CNoCu9fvgH7tVbo hGVXco6ngr3pSUZrlYRlKLui9v7Z5pGlw4Gap28hQMs4I/uv60ySUqwz69a450HF+R3U6ymvM0Fu cHFWI5/Q1jGYKeuTU0U5PSsZUk0aKWptrMCKkEg6msqOY8ZNWEmzxXLKjY0TuaiyDHFLuqqknFTK 9ckoWZRLupF9aZup2e1RYB+aRT2HWkHJpUGGOfWkBLTX6UoIPNBGazWjIPMfiDbFdbspAP8AWDH6 0sKGR4ox0re8dWBlitLoLkRSbW+hrP0+2abU44lHQACvv8omp4VS7HyOb3WI5e52+gQeVYbsY3HA +grUIplvEIoEjUcKMVKRXh4qXtKsp9zopx5YKJHVzSYvMv1J6ICarEVpaViC3ubluir/ACqcHDnr xRTeh5v4lf7V4nvJD0RtuaxZ+Dtzya0tRYSTzXOfvuzH6VlOQELkdea/Qoq0Uj5Cb56jk+4y0iM+ qRoD8qAsatWEX2rVEUd3yar2jeVBLcdGkyFPtWn4Sj+0Xb3J6AcV89nFZwhI+tyekm+Y7BRgAelO pB0p1fn7PqBc8Uh4oFKcYqRDfwopRSGmMay03FPJ4ppPNUhoTpSU8AdaXaDTuFyPikOTT/LoK9hT uhEFxOlpbyTvwsa5NcLpVzFqWq3M8w5lJKH09K6vxM/k+Hrpv9iuD8On/Si55CLkD3r6DKY2jKot zysfK7UWd5Zkm0jDD5lJBrQhNZdlfx38SyIu0kfMPetKI4p49NVm+55dP4LFxRkUpWmoacTXm31L ALUqpmoQ3NTxNzXXTVxjhDntQbXParcSg1ZSEEV6FOncTMsWftTlsvatdbcelSC3HpXXGmSZK2ft U8drjtWkLcelSLB7VqoCK0UOKuRpilWICpQK0jGwCiloorUAooooGFFFFABRRRQAq9aKF60UCPlh BzWhax5IqtFHk1q2UBJHFcM3oWjX02LkV1mnptArB06A8cV0Vqu1RXj4mTLRtW8m1RVgzgDrWWsh A607zie9cMazQ7FuS496qvMSetIMtS+STXZTlKROwiynNXLeQkiqogPpVmGMg11xi0Js0oXq0r8V RjO2pfNx3rbnsSWi4qCWQYqFp/eqk11gdaznUTQySWUetQGUZ61Rmu+etQi65615lValGwklWFkr Jhnz3q0JeKzjWUALhmwOtRSXWAcng1WeXjrVG5nIHWtI4tt2QmjC8SeENM1fdPbItrdE5yvCt9RX BanpN3os4ikjGT91gMq1eiz3ZB61RvFg1K2Nvcjcp6Hup9RXfTxMuuxUZWPMZfM35ZVGePlGKlhn 8v5FLEY5JrZ1TSDYMfNBaM/ckA/nWO+9Ts6r1969BTU1obJ9UX1uSEUlc+4qWJjLGdhAPXk1nQo4 kzGct6HpVqCeBnbIw46gVEo9jRM1obYx7ZZJuo/hPP0q2hKsjKTvxkk9KowBpATuDIP89KlGXkGN 30rBl2NGKaVbyOZX2D+L3p9xc+bK3mKrjsV6iovsskcCzJlkfqCPu1AfORhAqAx7sgnqKkZoW6wy 2yoZGcsfuY5X3pZEdWMbjMYHBp0qD7UEU7XC5BA4qH7dM4kVog3GAB1qlLuQ11RXkiKksuSvrSQy EUsUzoc7HVD3YcZqyIY5UDLhZCelKVO/wmsazXxBFNkirKzY5qi6NG2MYNP8zCiuSUDsjJPU045y TgVcjYkdaw4ZsHrV+G4yK5alLsapmmGApRJVRJM96f5mSAK5HTKuWt/IA71N3A/E1RWUFwM96txu GGfWsZwsFyXtThTVOacOCK52SyjrFqLzTJ4iM/LuH1FZPhGAzILqVcMPlH4V0rgEfWq+nWq2qMiD C7jgV72VYp06NWH9djxcxoqdSE+xqJTqiU0/NW0cwGrGo3H2HwrKw4aUFR+NV+vFZfju9Fv9is9+ AI95QdzXo5TR569zlxdT2dGUjlL5BHE4z/BWLOSbU+uK1dQuBMPKXILDk+ntWXNxCRjFfZ9D5iC9 7QWZwNKBA4VMD6mup8K2n2fTA5GC9cu0YbTYIxnfPMB+Arv7WEQW0cYH3VAr4LOq924rv+R+hZZS 5KKZMBinU0UtfMs9QWikzRupWAUUGkoFAC9aTaDSiigBNuKXGaKUHihsQAcUbcCjNKT0pCMXxSpb w5dj/YrhNDCRwqe7V33if/kAXf8AuGuE0Zc2kbAc55r6vJNaUvU8TNHZpnQ6CBHO8QOcZrok4rnd BPmarOAOFrpduDRmrXt16I4KHwkqNxTi1RA4p2a8hLU1F3c1PEeagAyasQpz0rvoxGaNtzitKJeK oWyYxWlCvFevSiSTIlSBBQowKeBXWkITbS4p1FUAmKWiimAUUUUDCiiigAooooAKKKKAFXrRQvWi gR8228GTW9YWmSOKz7KPJFdRpluDjiuDcsvWNngDitZLcgdKlsrbKjitH7MAOlcVajzIdzJZCKFU 5rQkt+elRrBg15cqFmUmJBFmr8duD2psMWMVfiQYr08NBEsr/Zh6U0xBavMABVSdwK7ZxSRmQs+2 q8lyB3qG5ucZ5rNkusnrXm1WUi/Jdcdaoz3PXmoTPu71DISa502URyzknrRE5JqIqSasW8XNKWwF +3Jq6vSoLePAFWguBXnVKbbGRSNxWXeS4BrRn4BrFvmODWmHhrqJmTdXHJ5qqtzhutMvHOTVHzDu r3IQVjM3Yp1kTY4DKeoIzWRq/h8St9o0+NQcfNHn+VSQSn1rSglNTZ03eI4zcTg5FZJNp3o47EYq qSUkJXO4da9LuNKtNUQCePDdnXg1y2teGptKQzOQ0LNhZP6V0UsRCT5XozpjNSMaO/wVBB+ucVpW l07SIxbBHQGsN1VmKnGOn1qa2mltMgASL6HtW8oJrQ0jJ9TpY7vzCyTSbWHbPBqeG5LEbvnA7VzQ nSVvlJXPr2q1Hc7GX5ske9YOBpzHQLdh7lnkcBWIBwea044Qih4irDHGT1rnY1E8e4kE+lWrKeS3 ZU8wbM9z0rNoZZltfPbADHPUHjBqW2hlTcolVmUYKjnNWJ9zKPKfLAbgKiiR7xNylVmTkAcZpKTQ NXHvImwCZSueAcdDVaZCnGc56EdDWq1pJcQqsgwRySeTT/7OVrbHmK46bMVV4z33EnKGxhIxB54x V2KTA4omsTHhY1JC9Qx+Yf41BkJKUzyOx61jUpM6adaLL6TnGBSmfHfFUwxX8KoXd+YQzE8CudUu Z6HQ52Rp3GppBlt2MECtPSNQS+iLxngV52l5Nfuc8KSTXSeGJxFO8KnhhyKuvhEqTfUwjWvI7SJ9 4JHrUo5FVbcbUA981aBxXz1RWeh19BW+7QhzzSZzToxyRXTgXary9zixkf3dyZaeKEWpAte5ynkD raPzLmNfVhXH+PJxN4mlA6Qxha7rTEzeqf7ozXmGv3Hn69fvu3ZkIBr3cmgk3I8vNG/ZJLuUp2yV b1FVJTlSCcAkCpi26Mc9KhlGYT2+YV79bSm2eJhVeqi9p0RuddtIAPlhXea7la5rwvAJLm5vMdSE U+1dMBX5hmVXnrtdj9Nw0OSkkOpvQ0tBwK806A7UmKXNITQAtJnFISaTNFhjgc04KWPy0wHFSR5C k+tGwmNKkHmlxxSsabnip3AXNKTxTaaxzRYRleKpPL8PXR9UridD/wCQcp3YweRXXeMJP+JDMuev FclopVbbD4AzX1uSRtSfqeDmj1R0nh9c6q7YwGSujcYrmfDU/n3pkAwvKrXTSGsc3VsQvRfqcNB3 gRk4pVbmo2akV+a4Kcbs2LcYzV63QZFZ8L1pWzdK9SlGwjRgTpV+JapwEcVdjNejACcUtIDS5roQ haWmg0tMBaKTNFAxaKSlpgFFFFABRRSGkwFophajdUcwEi9aKRDzRVpiPn7Tzkiuw0kD5a4rTm+Y V2ekN92vKnU5SzsLFRtFaG0YrNsn+QVoCTisXXTCwx4xUYj5qYnNAFcspJspIEXFTK2BTQtIxwK2 pysDFklwKzbqfg1PM5rNuMnNFTEWRFjOu5zk81mvMc1euEJzWbMpBrmjLnETRy5qcEMKzlfBqzHL x1qmrDTLAQZqxDgGqgkqRJeayYzXhYVZByKy4Jc1owncKyUk3YZHOmQaxb6I4NdE6ZWsy8hyDxW8 YrcDjb2I5NZrIQ1dHewcniseWLDV3U56WM2iOEc1p2y5xVCNcGtO1HIpVHoI1LSPpWoLG3vIDDcw rLGeqsKp2ijitq2TivHqzfPoaRR5J498L/2LeLPYRv8AZZRn1EZ9K5Bbq5Ttn1r6C1OBJj5ciK6O uCrDINeVeKvCo0uY3FsP3ErcD+77V6+Bx8Z/uqm/5nZKhLkU4s5iKYEg9G7irKSr1JwapvGyNwc0 +OQZAbBz2Neq4p7GKbRqw3TK2Vcg1cXUJIzv2K3pisMOiNzkA+hqyJCMA4x2NYSgaqR0thq3zMZA MkcHsa1rWQqpuIm2nGcetcXbmRQSOR6Vq2OpPE4DMNuMcjkVzzh2NUzqF1WchD5Y2tyTitCOeKZM qQGI7d6xIJUnX5ACCMYB4BqMJNG5Ecm1/eskhs3GiSdGDyAMB171RexSdXEnWMZV93P4VAxyU812 3MOSvSrMciW6bThkb2rSM7EONzLaOeBCc+bF2cD7v1rB1ORwdjcKx69Qa7YwiWNXiIKgc44z9ay7 zSortCqL5bDt/Dn+laRjFu6J9pJKzOR27I+F4PcVJoN4bDXUyxKuMEVcu9Nkssghg3oeQfoawLcS tqYkjVmCuM+1bqN00zPm1TPZbWXzEDdAatg5FY+lzhrVOe1a0ZBFfH4iHLNnt0/hHr1p8f3qQEYN MDbTSwn8ZM58W/3TL6GpMiqSy4qQS173OeKX4rlbS0urpjgRx15BcXHm6lM399ia9E8QXQh8MXGS cyOFFeWNMPtwPqa+myxctJS7nk498z5S6vCkGkkYeQwPYZpkcm6Qp6CklG9HHfFevV1pv0PIoJxr L1R2fhWLZo0bd25raHFUtEgMGk26EYOwZq/jFfkdeXNWk/M/UI6RSGmm+1OPSm1kUBo7UmaCaBiZ pOtLSd6YxeaeThQKYCM0rHNJiFzkU09aM0dTTsAbsHig0oUCkxzRoJnNeNSf7IEY6s4Fc2qfZbFX 7hc/jW943lHlWsOcb3rA1Vtiwwr3xn6V9lk8X7BM+azSX7yx0XhOMk78cIvP1NdG5rO8LW4XSfNx zI1azR15+YydXFS7LT7jOhDlpopvTVzmrLQ00Q1FKFimLEa0bdsEVTjiwauQJg13xJNW3bpV+NuK zYOAKvRtxXTFgW1anZqFWp4at0wJM0Zpm6l3U7gPzRmmZpc1VwHZpc03NFO4Ds0uaZmlzTAdTSaM 00mpbAQnmm5oamZrmlKwyeI5YUU2A5kFFb0pXiDPn7Tl5FdhpfAFcxpsJyOK67ToiAOK8XEvQZ0V m+FFX1es+2UgCriV5d5FJlhTUq1ApqVWrSEtSycCmOOKVW96djNdsNUSynKhNVngz2rUMWaa0FN4 fmJMC5tuDxWJeR7c8V111EAprmtRTGaxdLkYjCdtrU+OWopgdxpIgc1tbQguq5NSxkk1HFGTV2G3 PHFc85JFpNlm2BOK1rdeBVS1t+nFacabVrii+ady7CPwtZt2w5rQnbatYl5NjNdilYkzbzBzWNPj Jq/dzdeayZ5eTzXVTTEwDYNX7V+RWSHya0LQ8itJrQk6SybOK3rblRXO2brGm9zhR1q3F4msYsKR IfcCvNWHnUk3FXNEzV1BR5av3BrHu7eG8geC4QPGw5BrVkvLW8tiY5lPGcE8isskM4ViQD1xXLKh U9qklZnr4WpH2TUuh5nr/hyXT7h5LNXmtxz7rXOOvzbgMetesNOrzXUO0rGh+Un+LiuP1jRopZ2u Lchc9Ux1NfQ0MRJPkqbrqctSmn70DmVQvzilyyurAk4PK+op+0xylcsh9D0oWMSclyrg9+hruuYI twShz5kIIHdfSp/tEZyXBRvXHWs0xNE4ZW2n1FWFkWaP5+CvesZRW5omaFjqL2twHUPsPXB61uwa iLlFbdk84B4rlFVl+625fUVYhuprdPMJ3KvJX1rKUE9i1LudgLjzdmWKlTgbRnFSMrqPMb95GRgh a5ux1NZ3DD5A3IU1prOQ3yPtLHJOeD9KycbbjTNKO6dU2xkFSOD71LDdKZWJPzDhkbuKogSSRRtg ZAPHTNQWsoE/LkHOCGpptEtJmreRKI0KgOjDJB5GKyJtNtpM+RJHAx5IHf3rYYvD8sbZQn7p6Un9 nedMGtYm3dWQitFUuyHAj0+Q28axk5A4zW5bzgqOayZ7R4sF4SpXqoNNtb0hwjgqfevNxWF5lzRO 2hXW0jo433ZqCaXbLj0qOymEjEZqteS/6U4HY15mHptVWh41/u16l1Z/epklz3rHE4X7zAfU1bt5 lflWDD2NelqtzyCv4xudugwQ92kLGvOHfE6t713HjWbNpaxgDgE/WuCkPzcdjX12D93DxPIxHvVW akeDLuH8XFX9KtTfaikA5yct9Kz7PEjonSut8HWWPtF4w6nYhrTM8T9Xwc6nW2nqzHAUPbYuMe2v 3HTxoERVHQDFDdaXpSHrX5YfoBG/ApuelObkgU1uKtFobQaO1JmqGGaDQaaTTsA5etLSKMAZozSA M4pQcU2jNOwDyaQHA5poPPNDHAJNCXQlnE+MpBNrFlF/dyTWLIXu9UEY5C8VPrl6J/E0xzlYVwPr UVtm1tjLjNxctsjH1r77LafJQjc+Sx8+asz0zw/Eo0iIJyvatIw57VFpFp9k0y3t+6IM/WtAKK8S padWUl1ZvFcsEmUjB7UfZ6vbBSbBmtErEsqrBU8cWKlCinACrTAfGMVZQ4quDT1bFaqQFoNTg9Vw 9OD1opiLAal3VXD04NVqYE+6jfUO6l3VSkBOHpd1QbqUNVqQE+c0uahDU4PVJgSZpDSBqM0NgNam GpDTCK55oB1v/rh9KKWAfvh9KK2w+kRs8d0y2yRxXV2MGAOKw9MQACuktSABXj1LMtovxpgVLnFQ iUYpDMPWvPqNISJ99OWX3qkZqUTc1xe0dy7mkklWI2zWZFID3q7C9elhpNibLyinMvFNibipG5Fe 3BaEMzbsfKa5nUUyTXU3S5BrCvIMk8VwYp2EcxLBlulPhtuelaZtcnpU0Np7VwSxCSBLUgt7bpxW lBadMipre2AwSKvJGFFcUpSmzdIjihCjpUpwBTjgVBLJgVUXygyrdyAKea5++l681pXtx15rnb64 yTzXVRTm7mTZQupuTzWZLLk1NcS5Jqk3Jr1oRsiSRH+atO1kWNd7HgVlxISwA6mnandJZRhd+WHJ ArRU+d2GkaEurtJJtWRxjoirx+NUR4gxcNCyLheAwFZGn3Vw4knMbbMnBrZtPCV1q8CXqSLGrDLb eTXV7lNWRpGLZbg1b7zbQG9QeM1fbU505TJJHT096wpfCF/NOI4L8CMjJLDB4p0EmpWkX2WKS3mZ QeX4Y1PtIsrlZv2us4DLPGJRj723pWHrV1En7xQDvznHSm2F5qDb4ZrVV3t94c4q1q0Frb2MuJEw Fzz3pNQmP3onI29sZ2ljZjuQ5Q+1MmQ25Czp1+61Thza3UTlSFcd/StRTb3P7iQK5HIBrpjT5onJ Ku6c9djCLB0wT+NQbnjI29+v0rR1G0jhO60OW/ijPIFZ9w5hl2yDAwOQMVly2djqU+ZXJrefdL5Y GARx9ajkleQHIIOPuim2pjlnVQpfceg61faOKKIyR42ZwwPUVLsnsWm2VYbn5BuO0dOKv2l/JE4b JkHbPasOc7ZMZyM8EUouZOAp6GnKnclSszsINTheRY5WYd1OfumtzR7T7dIZJUOxOrf364O3aa4u I4Lb968mBjbnBr0/S0SwtIrRpgZVX5vr3rmnHlNU7l+ONcFnjXA4UAcAVbXYF68iq5nT7OFXBGeS OaRJAMgfLk5FZc1i7EtyCI9xKkAfMP6VgX1q2RP5ZT+lbqMDJj14PpRNbrIMsCSD07VV+pFrGBb3 VxajzFZXU8bqpy6o0c7Pd5RG7jvWleWhDZVOGOSg6EfSq13pamHG1XjYc5ohyKV7K4T5mrN6FeeC PUinlTEqSNwB7Vm2Gp3dn4jW3kxHAzbSnYDsaqNHdaPfZtpmijf+GTkCoJLieaZrmTZJ82AMdTXW 0pppmEkrHQeL5xJJEg6BeD61x8nU11+rGC/0SAJuF3aJ8654aP1H0rkJO+K9KhZUlFdDx6sWqruX 9OYtOgHJJwK9R0y1Fnp8UAGCBk/U15t4XgFzrEEbfdBya9RBr53iLFOShh1tuz2Mnwyi5VnvsONN Y8ZpWPSo2Yla+Vkj30hoOATTGNKemPSotwLcdqpI1Q4GlpAKQnFMYE0A7iBSduaWNcZan0ESt/Km Ggmmk5NJIAxzS9qaWGaQEs2aqwxWOFyKjuG8qzLsegJp+CzAds1R8Sz/AGfR5nHZa0px5pxj3Im7 RPNoAL3Wrpifl3Ek1seGoRrXi6LaM21pyPTIrmvPNrYSFT++uT+Qr0H4bab9mtJblh8zgDNfc1Z+ ywzt2PkJR5qt31Z3yVIDUKtil318/F2Olsl3Um6ojJTDJWnOQWN9G+q3m0nm0ucC4JKcJKpiWnCW mqgy6Hpwf3qmJPeniSrVQC2HpQ9Vg9OD1aqAWd/vSh6rb6UPVqoItB6UPVYPTg9aqYFkNTg1Vg9P D1opgWQ1LuqAPTg1acwibNFRhqeDRuMlhH7wUUQn94KK1prQDyexlwBWzBc8da5q1kxitaCQ8V89 VTNro2Bce9BmNU42zUoyRXBKN3qIlM/vQLjmq75FQNIQaapJga8NzyOa0be4B71zCXGD1q/b3fTm uqlaAjqYZc45q0HyKw7W53Ac1qRSZAr06dZNEtCzLkVmzw5zxWsRkVBJDmssRHnQWMY2/NSRwY7V eaD2pNmK8eWHsykMRQO1SZptFNQLuNc8VRupMKavuOKyb9sA03QbJbMW/uMZ5rnbufJPNamoSHJr AuGyTXoYeCSM2Qu240JHupFGTVuBM11t2BEfl+Whb0rntSmM0whYbdx5rqbxSlsNgBYkcHvXKXjA arG7LjcwDD8a3oP3Gy47nf8AhjRovsgjaPKY4Dd66OzigsB9kjQKpORt45rAs9RiLx/ZSU8pRweh rTWT948jSEsDwQO/pXJJu52LYuXcNrEjSOFGepP+FZF3FaNHvkgRYyMCWPHFR3+oDc0jxkFTwf7w rIubsyj/AEfco+9tzwKL6iL/APZaxsk1picMOSpxWBrCRtcCC8R4+2GH9a1LbVBDsK4gyuHGfvGq 2pIuow+dGu88n5myTWkXZiexzWp2080SPBGWjU8BaraXHPLqDNJuQxryCPyroLFWSNeAV7gdfxqx P5ckhUxhRwAw6muj27s0YOlG9zKQGOYMzB8nDAr2qu+nyXkrkp+7HCk+lbUlijkhRhhjPvXQ6ZoG bILcAc8j3rB1WtjVRucBBYPEJPLTleeBzj600WEyOkfmkYQjGM5BrqNU0kafdI0KsEPB9AatLYFo lxGoJHLdzT9sy+RHEXvhzUgPPS23RnGGDVSh0XUZRlYQfbcM13V5EbSz8gXRf5ifKZu1VdPvLa2g byoMztkO/t7V0Rquxi4q5V0nS5dFtBcqubidtqsw6euPSrsUlzHcN5jHLj7zd/apYryUyBQHUdfm 5wauWhjuGdpwG2/d9qwcm3dmi02Fgvp7dDyMHGR7V0Ebq8EZTncM5rAeJVlKpk5GBWjp13Hb28kU pIYDNZyV9i07F9pm2oYhlg2CfWr8J3Y44bqTWIk+UhZGG2QYGeuavWM6i5SB5fvjKZ70RHINQsnT btc53Ej3HpWY2o+S4t7g7TnjiujvApUZbDL2Nc3qEIaUeYuWGcN61MlZiTuUNRs4buGZ2Ytz2rnY rRkmkjC/Ip+X2rbkuDHAURseqkVnO89pbTzyMuwqee4ralU7kzgRR3jSK6xTYdVOMDr7VjTEDn3r Z8E3T6fqi6k1us6pn5G6Nmu2u/CWheNLR5tIX+y79OZIyPkcn/PWvQhVUW4nnVaUpWl0OH8FyiXx BHtJ2rmvURIo7VwOkeFNZ8J+IY11G1IjcELMnzIfxrsVYnnNfMZwnLEJ+R7mXxj7KyLuQ1NYVFG+ Ke75WvD5Xc9C1iGaQKCarW8gkBOeM1W1O9W3gZmbHYVX0a486EnPQ16EaDVJyBSV7G1n0ppNMD0Z Jrn5bFi8k4qbICgUxR/EaUmpeogJ5phNDGoi2TVKIx5ojPz01W3ZxTxhQB3qmugEqkGQCsbxi6po M5b6CtiFctk9q5T4iXXlaZHADy7ZrXBw5sTBI5sRLlptnA2UbahqIDD5Ur2Tw1ALbSIwBjdzXlnh yJY7dp2HLNgV63p6+VYQKeuwGvq8zkoYaK7v8j5WDcqz7Iv7qQvURbFMZ6+f5zoJDJ70wye9Qs9R mSlzgWPMo833qqXo30c4i2JKeJPeqQkp6yU+cZdWSpFk96pK9SK9UqgFwSU8SVUD04PVKoBa8ylD +9Vd9L5laKoBaElOEnvVTzKUSVqqgFwSe9SCT3qiJakWSt4zEXlenq9UlkqZZOa2UhFsNTg1Vlep A9acwFy3bMwHsaKitGzcAexorppO8Rnj9rnite3HSs22jxite2XpXg1mVctxL0qysfFJCnAqzgBa 8+/NIoqypgVm3BxmtK4cAGse6kzmu2KVgIvOwat285yOayixLVbtm5FVOCsTzHSWU3I5rdtnyBXL 2b4IroLSQYFYUpNSsM10ORQwFQJKAOtI849a9RaoBz4qF8Uxp896jMma56iTGKTSqajLU0yhaxjD UTZLKwCmsPUH4NX57jise8fdmu3kVibnP35yTWPKpJNbd1GWJrPkgPpWcfdAoKvNXIBTDFg9KmiQ g1UnoBX1eJ2WJ0RpCudqL2Pqa5G98836ed98Hmu+ucrp1xjqYyOK5vwzYWmqRzNdFpHibhSegroo 1VGk2+haYkE8hjUK7DHvW1pWsPiWEs7EHKsecVky2zWd2yEZXdj8Kntv9DnE6DIzyPUUnZo6E+pu tIpTZcPl3GVY1jF/KnAjAOMgjOa2Z3tb50G4A7c4z09qrGzWZcx4UBs4HWsVpoUypqVsyWy3JVSr JkHHWsqZvJ1CP7OzmBo1bard/pXS3tpJJpjRlgY85UbuQa5xtO3RRGMFZd3z89B2rWD7iZeMZ+1t IqlI2GGHrx15q49qqmLYXbzQCPSsu8+0LthdWZkcBh2x611OnxJcWcOxgwi4J7iondIpakNpZyyM gZV3JkKT3rqLbJt40JBZRhhVKKDahMcYcgdQetTw5jYknaWHesIt31GUfEcQeykUD50G4Y71yt9e XBeIozKhjGDmu01C2a5hYEguVxXDXtxIENvJGEETYHHX1reHxEy2KCybphI7H5jzzyakiykzbMHv j1pJIQf3sY6AZFTwrG7K4ycdu+a6HsZ2L1tESRI/GOuPWr9ttgu1cICjg8+9RW6iQnAIHfHQ1Yu4 Ps8InVcqCG49KzZRPPakoJImGevWqsu2Qh9rEk/NVyKL7Rbkk4B5BzTZ42Fk2RhumRSHcBIjCKNV C7G3AjpVtM7bdRtKlywfbkpWfax5gWRpNueB65rXsUeWePKqqRdah36FrzL0gZ2EykMAPmzWfcfv JA/BycDI6Crst1bNMYg5yRgEDiqkqnzGCjIHf0qZMEjmbyNTeyxsMFTgr2rmtQnk1W7TS7DLKD8x HTNbXie2vGux5M3lJMvzt3NJpFpBYxL5EeyRTnc38X41UWoLmB3loaGnafHp1pHatjK/fYd6vWN3 Jp9+JoZmRDwSD2qB9zsJgAGI5T1qOSMEHaCpxzio53cOU6rTvHMUBms9WH2mInKSDBOPQ1bvLW1u IBf6Q4uLduWROWT8OtefBQrIygMueQBWoHn066W8sZmt3IzhD/MVdWEK0eWf/BFCUqUuaJpTatZW 52yTqG9O9VB4lt5JRGqkgnAOa53Vla7uJbicgyyZbcBisjT78WswinCkj7rdjWdLL6EdWrmk8XUl tobviNLyS7V1w8GMhVPI+tO0W+2LsJ61BazXAMl7gsAeFPQ0y0mR5z5kCoSScqeRXRUwycOWKCli bP3jq47kN34qzHIGrnILsZC5rRhuweAa8OpQtserGSZsF+KQtVRJwR1oMvvXL7Joq5OzYqCWQLnm oZbjaMCs28vGaRbWD5ppeAB2HrXRTothfqaVndNcOVQZVTyauxq28u3QCmadZrZ2yx9W6sfU1cKA 1z1akeZqOxQ6IjbmvOPiHdebqIhB/wBWuMe5r0YDYpPYCvJNbmN/rrEnOZCT9BXoZPS5q7n2R5uP lywt3J9Chaa5tLFVPyuGavXMBQFHQDArz/wVaCXV/NPOwbq79jXoZzO1SNPsvzPn6Ot5DWNRM1Oc 1ExrxFqbjWamFqGNRk1okTcdupN1RlqTdWnKFyYPT1aq4anq1S4hcsK1Sh6rK1PVqzaKuWQ9PD1X DU4NSuxk++jfUG6jdTUgJ/Mo8yq5ekL1rGYi0JPepFlqiJKeslbwmBoLLUyS1mrLUyS11RmI0lkq QPVBJamWWt1IDTsGzdqPY0VFpjZvUHsaK7qHwgeeRQY7VfgTFIIwKkUha+bnK4FyM4FLJNgVV84A daglnzXPGm73LTEuZuvNZsrbjUsrk1Bjmu6EbITYwJk1ZiGKjUYp+7FW9TM0IJduK1ra82gc1zIu NvepY73HesfZ2lcuLOuF8NvWo3vc9655b8nvUqXJc9a3dWyLNlbgsetWY2JFZltliK1IU+Ws4T5m AO2BVOaYjPNXJlIWsu5JBrsiiGRyz5qq530jE5pyKTWlyCu8G7tVaW19q1xHxUcsIxWE0UmYElvg 9KRIcGtOWHnpUYhx2rDnsURLEGjKMPlYYNcbaF/DHiOSCdT9muThH7e1dzjArN1S1t72AxXMYde2 eo+lXRqWbT2YyjqUQmG7v61RgcYeKReT0PofWpUtfsyGMXEsidAH7ULDn588jj611w0Vi6b6D7U7 GKScZ7+lbWn2xcSR8NGx+Ug8j3rI5bBK5Iq7YXZspAeNhOSBSkjZFp7aTbtf7qn5R61VwIBiRDsL ZVv7pqxDdC9kQJkyMxIj7r9a1bqyWS1aMqM45Hak3YZyTWi3OpTwNNscLuibOAfatLw+xngkSMMr uw35GArA8kGlvNES5tjKCUlgxuI6n3pfCdxNb3MttcMAF+ZTng1U7OOg43uddZQhASA3Axk0SW7O wfsO1SrJvJAICYzn1ptxL5ShwQq98nis0lYoz9V1K302MPIN8j8Kg61xF1cm7vnUx+XG5JUHvWzr uowXLMIMPL0MhH3R6CskReZH83OB1HetUZvURFjRGRgOlWLW1yquCoBOBWQrOZyHbOzp7it60ZIr aPccEt0qmrIVyzEkcLMqvg46jpV20bzoGgkPLIdvvWeWLI/7rILYBz0rVKIkcM0IP7s5YUkBDoyF bd4ZOTExGfrU8luWkKjkAVJHtS4ZwNvmDJIqbyx5qtuHIxkd6LFGclsLeZQxDpnOP7tXrJ/KZ2X7 zHqaguFy4UDBOenelWYW8YYEbyQM9cVDRSeo6BWglc3Q5LkIB/OpN5LyKo2jZyT3q1LGSgOQWJAy aqyRgDAYhm4NZFmPrkeLBpdoLIOrHtWLayIttsViRL7/AHDXU3tt9shmt8K4MZz/AErze3vnt5Wi l6xMV960jHmWhN7M6m3uUiiEEzlsHCsetWGzsYhv+BA8Yrl5NYDP8secDoeoq3Dd+dGpSfAY8qam VN7lJmzDLDA2WAZT6VMxilO6OXqeDVF1MK4CbgwyRTLef5CMFADSiwaLl8iuqx8HtXNXmnbmZgOh 4PpW1E7vk792DwTSNEHjaNsqzHg1pztGfKjKttQa3i8uVHO3qB/FUts6zXE0qgRAjhauXNp5MUbb Qz47d6pDTbuO5SVxiNRk47GuiFRWuzOUdSeGUh+atJclG61EY0fHBB/vU1o2VhnkeorknDuehCqm bMF3lRzVvzxt45rEiUjHOaupKFA3cCuKdNHVGQ++uFtbdpnOTjIFM8LWUzPJqN2v72Y/ID/CtY89 8L/XUtCcxpycV2lthUVQMADpU1706XL1Yoy55+SLopwNNA4604CvFZuQahMIdOnk6bUNePCTzL6S TuTgfjXqHiu5+zeH7hs9RivLdMjae+ijxkk5xX0+SQtTlLuzxcxldpHp/guw+z6e90ww0pwv0FdA 1Ns7cWljBAvREApzV5WLrutXlPuzz4rlViFqiapWqFqziBGxqJjUjVE1dESWNJpuaDTa0sIeDTwa izTgaGgJwakBqupqUGsmikTA07NRA04NWTRQ/NIWpu6kJoSAUtTC9IWqMtVqIEm+nB6r7qTfVpWE XFk96mWWs8SU9Za2jIZppLU6SVmJL71Yjl966YyA3tIbN+n+6f5UVBob7tSQf7Lfyor1MN8AjlWk xUL3OO9Ryk1QnkIrw4U0wLjXfvSCbf3rIM5z1qzBNkitXTshmht3UhjxT4SGFTFMisXKw7FNuKhd 8CrckdU5UIrSLTFYgeU1GJjnrQ6nNNWMk1tZAi3DKSRWrafMRWPGFiUvIQqjqTWtpkokZQ0bxFhu QOMb19RWU6cpRcktEVc6GxiziteOPAqjZKABWmpAFTTSWoFadOKybmPk1szEYNZ04BNVOsoisZLR 80+OPFWTHk05Ifas4V7sloYqcU146uLD7UjxcdK6W7oEjLkizUDR4rTki9qqSpjtXHURaM+XgGs2 5PWtOcdaoSxFjV0wZkyg5pkZw20960JLY+lUpoSnNdkZIS0dx0ZKyDHIp7orgEDKn+dRpnblTg1N tDLkHGew7GtWdO5YtUFlPDqacRsdsnsfWujiuI7hm8vLhhwTXKRsSHjZsLjp71q6NPNLcRoqDcq7 DzjIFZyVykWNRkFnBJIx2jGDnpVDSI47m/8AMRcArgkdx61o36pqlvNEQh2gq6Ng496w/CE0h1Ge 3lc5g4WPtj2oUfcKT1O2SNVxkfdrK1tAbKYSXDHfyg9DWjLcBF3OQigd+9c9eXb3mfNAAB+UAUKw PQ577M3lkg/M3YmnoXji2lcGrNzGqSIQTSvgRFtvTse1aJkGPc7XlR1BBX71aFnIsrou8nAxWfOo aZoz1YU7S3CSmJhyvT3rVq6J2Ojb5lwv3T0J71oWkubfOCQo6eorPDmWIORhAMGrunNGpIJyG4Ir ICzL9wFcjOOPSrCxmSKLcPmHfNU0uE86W3/u4x6EVeiAMfB5HSqWpRBcjE4GegOKrzIsahiM9Dir c6AvGTzn/CoLuRQcqOMDmpktxotSyR7EaQkM4DKvtUdzI0TjABOeKjJDo1xljgBR+dNmY+ayYJyw GM8isTS5bt9rA/uwrsMEjvXkerxhdWuhvUESHjNerWj7ZcMc+5ryzxNHHDr94FbOXyK3ob2M5FSN GzuAJ96tqVXg8e4rOjnkj2hT9RVqNs8AjJ5raUWCZuWeoyLGyzDcFHy56kUyW9SQsFJA9qoxSsDh hwOlTxbCxYrxXO4pO5pcupMYbZXUFzjkVPbX8dwi7B84PBPrVRGBjBUZXH5VEq+TJuj6nnHvU2Q2 bkMLTMHWTa6Hp6itmS3U2oJ6uOa5iPVUVS6HEgxwRW5FqEV7AojcrIg+Zex+lS0ySjLbFtoBxlsD BpLiCW2cFfnibrir8sK+UmWPJ4IHepAoMAhIH+96VopdyWjLUD70WSPSqd3etHGzHgqOlas1ssMq 7Tt45I6Gquq2dtcIIWBBYffFLki3dGirSSsc3oEu/VmmY85yTXd21+uRkgVxVjps2m3EhfDKT8rC tu0iTImklIJPyqOc1nioRlI0ozcYnYR3CsoOetTq2axIGljQb1YfUVo20+7ivDq0OXY74z5kc78Q 7kppUMAOPMfn6Vh+ANMN/rBnZcxxfMT9Kk+Id552owWqHOxcn6muu8A6YLLQBMRh5znPtXsUpvD4 BPq/1PFxb5qrOjaomqVhUbCvDOYgaomqZhUTCtokkDComqZhUTCuiJLIjTTTjTTWqJEpwNNzRTAl U09TUINSA1DRRMDTs1Epp4NZNDHZpCaTNNJoSGIxqMmnMaiY1okAFqaXpjNTC1aJAS76USVWL+9A f3p8oF5JferMcvvWWsnvViOT3qloM6jw6+7Vox/st/Kiq3heTdrUQ/2G/lRXsYT+GIwpoOKy7qIj NdHNFwayrqLOeK8KjUuI52RSDUkDEGrE0Bz0pI7c56V3OSsUjQtXzitGNdwqjawnjitm1gOBxXJK PM9C0V2t8jpVSa1PpXRJaZHSmSWOe1aexaWgzljaEnpSSQx20XmSnA6D1J9BW3frHYQedIrNkhVV Rksx6CkttPjtEGqauVaXrFD/AAp7f73vW+Hw9Sq9dIrqQ2QaToJlK6jqo8qJOYoD/CfVvU+1dNeW VjqtpGlu/l3AjEsZXqPp/hXGarr7XDGSV9kKdEB5NaGh3/8AaKQWuUs7xU32rkn957H3r2UlGPLF aCsbWn3D7nt7hRHcxffT19x7VoedgVnkf2uhKgW+qWv3lPGfX6g02C7MyEOpjlTiRD1B/wAK+dzC hPD/ALyn8L/ApPoy3LNVR5Mmo5p8Z5qm9yM9a8lKc9WFy+uCasxoDisqG5BPWtGG4GOtdlCm+oWL gQYproMU37QuOtMe4HrXfshpEcqCqU0easvOPWoGkB71lJXHYz5YMmohaZPStLCsaljiBqFHUdjK ax+XpWXfWe0HArrmgG3pWXf2wKniuhaIlo4wgxOQehqxb8Yb+E1JfW2CeKrW8mxirVvCV0XB9BzI Q5J7dPepIJp4JBMvGDwRQw3LkdVpVBdDGWA3D5frTZoTLPKNyhwGkHPuKxInfQvEi3LudrHDntg1 svEmxGYgsh/KqniWO2vbJXhU/KAXC9hTi9bDOzl8q/07MRDLIuUYVzzO4dgAMrwR71d8KXKT6Bbo hLeV+7YH1FSanbrHPvAwJP51GzNHsYpImxuGSpokZTuyc7u1Kbd0aRznjkYqC6Uj5hxxx9a0RBnX sZMiyBuc4PFSR2u8eao+YAkY9QKZBIJ8rL1XrWvHEnkhIyMnkkfyq27EvUbZSrLp+Qclzg+xq9C6 xQjg7l5rJdG02Zd+PKnPIH8J9a13kiS1cbvmxkepqJIERidTcLMwO0tycetbNr8u4HoDwaxoJPMh XICkjBGK047hVuChGflwfrRFjLbMRAeM/h0qq5QxjJwwOcetWVEhgLO2MnAFZ7oGkZmP3ccihsEX GhH7iDdgSZYnPSmyFEmdsZKtw30qsG2uSGZsHpVm4lVbQ7QNznvWVi7kSuBJtABzk8deled+J44h r05Zdu4gj8q72MG2uFkYqQvXHesvXvBy6tM95bzlJ352v901UZxhL3nYiUrI4B7cDlTkVXJaIkq/ HpWjqGnX+jMYb23KBj8snUH8azGO4Elcj1rug767oi66Fq2u2fClsnPFasMwzjIz3FYCDHzQnkVb hvIyMMCH7nPWoqQvsXGVtzXE6jhBT1lfkjGTxWWb0KyrGPbmrFuX3hs7h1NYuFjTmuaUdo8MYuDj PZSOtOtruSC5EsYHJ5SoxdmUFedoOearXUm1zt6nuKzSb3G7HULcpexlTL5ZAyF9apNdXFtJ8vzY PPuKyLSdo5QpbIIrSiu4vOIbI54+tGxNrmoJvMgWQHBPQGmeS5bc7DBHApkmNg8tgT+optveLO32 aZ9rKfvAUJ9UFh4jDo7NGSqinWMMdsBeYMgAJSM+tS3ETyD5WIxxx3otYIUQjzic/wAPoapSV7sT utip9q1eS8Sf7cuwn5oXHGPat6G4jLZVSAR+tYVwgZmDrgjoV60ttetbYWRt8Q7jqK2qU6dde+iI 1KlPZlDUPCuo6hqr3rSI+9+F9BXpWn2os9OgtwMbEAP1rkYtTwR5YBQnrmuh0rVWuU2zLheit/jX Nj6EpUlybLoc7bvdmkwqJhUzCo2FfOMRAwqJhU7ComFXFiZXaoXFWGFRMK6YshldhTDUrCoyK2RI w0UGkzVgOHWng1GKcDSaGSg08GoQaeDWbQyTNNJpM0hNKxQ1jUTGnsahY1pFAMY1EzU5zULGtUgF L0m+o2am7q0sBYD1NHJVINUqPUtDOp8JPnXoR/sP/KiofBrZ8Qw/7j/yor1cJ/D+YMmnFZ80RbtW i3zULb7jXzlFXCxjGyLHpU0Wne1bcVlntV2KwHpXp06dxmRb6fgjitW2ssAcVfitAvarCRBa6Y0k guV47YY6U5rcY6VYJAqNpBSnKKQFG6tLdoH+0BfLAyxPb3rzzxB4lSZBZRv58cLkRsR8zfWu38SQ tc6TLtuvICKSfRq8k84WiumPPuDJkNjoa6MIk4uSYmSqMv8AbNSfoPkhHWuo01bXWLW3068dLG4K brKccZ9ATXJ7Y4X+06g/mSEZWP8ApXVaZ9g1W0t9K1bZZySJutLheMHsCa7BG5p99JLqUVjqQ+y6 xaZ8uYnC3CjsfWtCULrKNdWiiHUIMiWEnG4elYbkTzx6F4jUQ3MQP2S/BxuHYE9/rT9MvJ2ukspA ttq9sD5MpPyXaDsfU1MoqSaaumG42e84OQVYHBU9VPpWbLe/N1rp9Z0tdYszd2iiK/RAZ4B1rz6a V0lKOCGBwQa8eeDVJ6bAjchvuetaUF7kda5aCQk9a1rYsQK55R5NjRM3Rd8daY9571TAOKilYgVh ztsq5Ze996YL73rKmmINVjckHrWqg2FzpIrwE9avQXIPeuRivCD1rTtbskjmk04judQsoZarXKBg arW8+4datZ3CtYyuSzCvbTdnisO6tWiO8Doea7OSDf2qpNpokUqV6itYxa1RKdnc5eEgqT3pE+/h hkK3X2pXia1unhPUHHND8DIFanQSlV81tvAkXIyO9VRtACvzg4YDuDVofvLXcx+7yMdQKjltwJgV 5V1yMVJRBo00+k6t9nEv+j7wXGPvZrsdSjD25bGdvzCuPWJRcRGQclthOe3rXRX975ESWiMfN4yf anLUpPQraihW2Mw4Y4GKySGccn5utbzGL7OkrAMCcgVn4jSaRXQKXztNNbCMpbRkdnC9T2q5b4Ru MEEd6bKzSMVXIAxn8KkKKpXOMHimySPUoxLGr7ckn8qpmcy2qtk5U7cV0E9mkcSfNlWGQD2rHnhW GXZ8uCdy49c02xImSWQExMOg4yPar8KBBE+RvzzjuPWqDvJLduWPTGQB2q6ql9hVeF4pIZsIdlqQ xJBPWqEkZ3kg8HsatSuQqJjI71WJBlB7Z5pNggP3JQvXcKmuV8xEwCP5VHtxI5RsbjkVYlRwSxXa OO/FSykVWUK+NuVyAa1AgCgdqoBR5hKjJJGcVqOuBiuWvujGoc34ziSTwxdllBKAMuexzXllsrTB lAHHJr1fxcrv4avVQZOzp+NeUWL7ZH56rXfhP4bITFMZz8nWmPHIQC0RyKh8x0mO1iOanGoXCrt3 8V22l0HzIYs+0hSuOa3IICsazJIGVh0U1l+fDPxOg3HutIryW0n7hyV9DWc4uWmxpGSNaNmVmyCc 9vQUOyM7BQCSOaqxX+Izv4c+tNjkEpJBOc9qw5H1NLo0ol2xLv8Al7g0QXQWfjk5yc9KqG4ZWCs5 IqwzoQVgGCe9Q13Hc3opoLiL52AK9MVHI9umMEZP8QrHBZ9q5wR6VpxxrKnABB61k1Yvc0HunlCQ oGUgdR0NMtp5bPctzCdr8BgKhS4EFwnlF22jhcd6lW7uJ0li2Axn1H3TQmS0W8K0TLOAvuOeKpz2 7qCuRyOD2YUpMifu8bARy394VeupYnsbRIyMqCDuraL00M2u5gaIQmqtbTS7VByoPSp7fVJ4dZun diY1+UDPHtUb2sc7Sz/cKN19KpK8cW7JzuPJPOa6KcrmU1oeraXd/btNin7kYNWGFYHhrU7aCwhs 5W2MxJQnofauhYV8zi6Tp1ZKxkQMKiYVOwqJhXKnqDIGFQsKsMKhYV0RZDK7iomFTsKiYV0RZJEa aetPIph61qhBSg02lFAx4NOBpgp2aloB2aQmjNIaRQjGoWqVqiaqQyF6gap3qB62iBExphNOaozW qAcGqRGqDNOVqGhnU+Cmz4kgH/TN/wCVFReBznxRbj/pm/8AKivRwv8AD+YMvxHJrQgQHFY8Mwq/ BdAd6+apvkkUbMSLiriKtZEV4vrTrm9ulEf2YoqE4kdhkoPXHevXoz5rJCaNrgCoZZ0jBLMox6ms XUpksbcS6hq1y6EcNbKIwa5m48U6IpzHpj3kg6STsWNd/sZPdiudXLrlkGKpcLI46onJ/KlgumuV kkaGeCONdxaWMrke3rXHXHi/VyAtlZwwpjgpGBj8a7DwReXt9oM8upzl23kb92do+tZPBQl8TYXM PXL/AE/UdOdY1u5RtJV0TYPqc9q84Ept4jFZxmZy5xIeQDXrWvtoD6DeKJWmkCEbySGP4kDivJUm l+z+Xp8fymQ4fsK7KVONOPLHYlhtgtX86/fzZsZCda6zTJNN1Gyh0nXBHbCWMG1uAPu+mTXIBLSw fzb1/PnPOzPeut0q40q+s4dJ19Et1ljDW1yByvpk1owNIzNYvFofiiITWhz9kvgM7R259KrNjyod H1p1ji5OnamnReeASO1WvtF14fMel+IIRqGjykm3uQNxT0war86ZYLb6kG1Lw5dEmGdRloDnt6Y9 KQF+2utQt9UEFzLHHqcKL5Z6Ldp6Z6ZpPEWhR6xZDWNPhMc2Mz25HzDseKo3MUFssVjfXLz2cyqb HUVbmA9gfQVoW2oalaalHBdPH9uji+Vw3y3qe3bNS4pqzHuctZwEkZFbtrbcDitDU9LhZRq1kpWG T5poiOYifanW0YKgjpXz2OUqLs9hoi8jC9KqXEeBWwyDFUbmOvOpVLss565XGazpMg1uXEOc1my2 5z0r1KclYRTQndWpZkkiqSwHd0rWsIeRxVT1A1rRSQK0okJqKzg4HFaccGB0qY02FyJIc9qlFsD2 qZUAqVcV204knB+LrI2uoxTKMLKvUetZIJOCw+v1rtvGVqJtGE6gFoHB/PiuHRicg/iKJKzOiDvE mtDuhYYwQcH8aIc7yG6KMAelNt87mQHk81LE4huclQRKOSexrNmiKeqwYtvPTLFOcCrk8zXscMvG 8xr39qnmhxaAPyCMc96p6QEst8EqlgrZHf8ACl0AvWquIgjfc689qSXE94PlB9cdqt3cEyQpNHjY /p2qCFNs+/OQw5z3o8hkN1boLoeVnYw5FEluTGm09MdqmUZLSDt+gqzBC8tsXXhehBHOKrckfOqS 2SscHAwRjHNYU8QF7GVUBcZ5PU+1ad2siLhMjPIqrcwNJtbH3fXt3psCvGrfaJSvAAwSeprRsYGE aO4571RtE/euSMsDz71sW3yqFZeCcrQhErtlN5PUZFV40U87cYIzVtwoU4AJBquCqgDHPXihjRKT GNzdlP5011Mkw/efIxBGOaewxEpO0jdzTA6xu4CbQo4x70mCEgi33cajj5ua1JjjNUdOib7S0jEk beKsztXn15e/Yym9SleIJoJYm5DqVx+FeKsv2e/li/uMy/ka9pd/m/GvHNZj8nXbpcf8tWP5mu/A P4kZlNFL3GKQjkj0qezXderxxSXcflXDLjjrXpp+9YTWlxq/dqRc9eaiU/lUwkVR61pZMi7Ww0sc /OM+lCuVYMuQaQuTmmBsGs3GxtGV9y5FKZCElbbj+KpxLtJ8tufr1rOyc0h3q/Bx71k4JmnMdBZS hl3MwVl5571eaYRoGQ49a5+y+YsGfnt71fhmCyCN24HY1zThqbRlobVhcR4Ik4fOd1WoLhWvChPy HndWKWiIDqSG/Q0xLjZIWBrFwuaXOmvFyxRRuA6YqldoUTzNwXIxg0WF8/mZiXduXBpzos4KMQ0h OQCahXTBpMz54J5tNeTzSsQPIHesyzieYCRjiJW4B710+s7YNNVUj29sZ4rEs7dLbTBcTsdhfCgd 67qT0OWojYJ820RkBypAwK6DRvEBgKWl8xKHhJD2+tZcRhazzGOD6dqq3iFo1ZVzjrXPiIRqtxkE Y3iehHBGQcg9DUbCsHwxq5khNjct8yf6tj1I9K6BhXz9ejKjKzMpRsQMKhYVYYVCwpRZmyBxUDCr LioHFdMWSyFhUZqVhUZrZEjaKKKoBQacKZThSGOpaSipGhDUbCpTTGFNDIGFQOKssKida1TGVGFR MKsutRMtapgQ0o604rQBTA6HwMf+Kpt/+ucn8qKXwMP+Kpt/+ucn8qK9HC/B8wIY1uh/y7y/98mp w10P+XeX/vk16fsT+6Pyo2L/AHR+Vczy6L6jueaxzXQP+ol/75NX7ea44zDJ+Kmu72L/AHR+VRzr EIW8zCrjkgdKuGBUX8Q+Y8i1o635kkMMQuIQ+QrnhR6Yrn5m1Zd2+SG1ToQBXZ3aqbifN6VTecDu ayL7TNJul/feZI/95a9IzOdkSFW/0rWCVIxiI/4V6p8OGhTwaxs1e4UTOArcFjn3rzi801bbcLTS /tOOQW4IP0r0j4eLcHwUAQtrOZpPvDIXnuKGCHeKL9BoFympaYkBMZ8tXYNgd8Ed68iR7iaAJZIE hZz83pXrHiq4Np4fuYrm5a8Mg5kUDavsK8oH2y7tVFsohjZyOmCKEDI1hstPJe6c3Fx/d68112mX Wk3dpDpPiGFLeKaENb3C5ynpk1yixafpzFrhvPm7r1Ndbpt5od7awaT4htxbJJADb3OclR2yaGCN FZdW8JmK11CMatoUxPluvzbQehB7VFax3OkWJ1LS86noc+fOs3OTHyc8djU0UWveEWjVB/bGiTE/ KPmCg/yqvYWTxo2t+EbgOwz9o052yevIxSAbE1vaQyXekxLf6NOo+1WjDLwepH0pJorSKCFVuJbn SZADb3K/ftHzxmprcm+vmvtDU6fqSIDcWDjCTDuAD1psMgmnkutJshDcFSL3S5Bw4HXbmgZfsL+7 h1LyZWSS5ZFHB+S8j9c9N2KuzQxWzCe0bfZSNgesTf3T7Vz4+xmItEJX04kFlGfOsH9R7ZrS0vUh AXWf980oIb+5cpn7w9GArnr0IV4OEv8AhhpmoYpSP9U/5VWmtZj/AMsX/wC+a6PSr9UMVrI/mRSj NvIRyR/db3FbW1fQflXlRydRfx/gVzHmsthM3/LB/wDvmqsmmTn/AJYSf9816ptX+6PypNq/3R+V dEcvt9oOY8m/sufd/wAe8n/fNaNlYTKRmFx/wGvSNi/3R+VLtX+6PyrVYK32gucraWzqOY2H4Vd2 MB9w/lW7gegowPQVssOl1Fc5xy46I35UzzJM/wCrf8q6bA9BRtHoKr2PmFzlb2J7rTp4TGx3ocDH ftXngsrxW/49Zs/7hr23aPQUmxP7q/lSdC/UqM7HjMFpdCcE20uCOuw8VI1ndLsl+yykJIDjaeRX sWxP7q/lTC9uJRCWj8wjOzIz+VQ8N5lqrboeT3MF20x/0eXaVyBtNZS2t0NSUC3nzIN33Tj6V7hs X+6PypNkY5KKMd8UfVl3D2vkeZItzJBFE9vKNgwcrVe4tblJlVLWU7hnIXpXq2xf7o/KmSyQQANM 8cYPALkCj6t5j9t5HmUdrMC6+RIT6lOtSJa3WwL5UoYjGcdq9LTy3UOm1lPQjBBo+QsR8uR1Hen9 X8xe18jziXTpJfleGUgEYbHSrM1o6RbY7ZyQO4zmu/wvTA5ppaNc5KDHBzjin7DzF7Q8jis7vzCz W8ud+fuGtmG0m8td8D+3y16LsX+6Pyo2r/dH5Ulh7dQ9p5HnS20wQjyZM/7tRQ2txh8wvg5x8tel bV/uj8qZK8MCbpWjjX1YgU/YLuHtTzWOO6bKm3k+VuBtqaSznwziGQbsZ+XpXokLwzxLLEVZGGQw HWn7V/uj8qX1Zdx+18jhLK2mW3JMLgnj7tQzwT84hf8A75r0ANGW2grn04zS7V/uj8q5pZepScuY zcru55i9vcZ/1En/AHzXl3ifSdQHiK5KWNwylgQRGSOlfT5VAMkAD6U0pCRvKoRjOcCuijhlSd7i ufK9lpWoi8QmwuAP+uZqfVNH1Assi2FwfpGa+oRHERlUQj1AFL5Uf/PNfyrfk97muPm0sfJ66VqX /QPuf+/RpTpWpf8AQPuf+/Zr6uMUQGTGn5CopprG3RXmeFFc7VJx8x9vWtbkHyodL1Lgf2fc/wDf o0f2VqWf+Qfc/wDfo19Y+VF/zzT/AL5FNKQKMssYx6gUnqUnY+Uf7L1IH/kH3P8A36NO/szUn4Nh cj38o19WBIC5QLHuAyRgZFO8mL/nmn/fIqeUfMz5X/sjVBjFhcEDoRGaU2Oqp/zD7kn18o19TCOI 9ET8AKTZDkjbHlRkjA4qeQr2h8zx2uotAqnT7j/v2asx6ZfSf8uM4x6xmvo/bAFDbY8HocCj9wNv +r+b7vTn6Vm6CfUtVn2PnCOy1OJvks7hT7IatwxXvmBpbK4VgfvCM19C7IsE7UwOvA4pNsJAO1CD 0OBzUvDp9R+3fY8DvrW+umxJbTuvUEIaoXunah9nhtUtZ2UPuxsPFfRvlR/3F/Kjyo/+ea/lVRoc rvcmVW6tY8O06zvUsQptZhkdNhqeOzvJLd4vsswPfKGvaisSDLBFHqQBS7E/ur+VQ8Nd3uNVrLY8 HsrfULa4MotpwU4B2Hmuw02+uJowlxbzbieDs6V6P5af3F/KjYg52qPwpTwkZrlkS6l+hxD28wP+ qf8AKomt5v8Ani//AHzXeDYTgbSeuKa0kCIXd41UHBYkAA+lcKylLaf4GZwDW0//ADxf/vmoWtZ/ +eEn/fNeiQTW9zH5kLK65IyPY4qQBCOAp+lWssS+1+BNjzJrW4/54Sf981EbW4/595P++TXpkdza yzGGOWN5Au4hecDOP51MVQDJAAHtWiy9L7QrHlZtbj/n3k/75pPslz/z7yf98mvVAEYAqFIPII70 uxf7o/Kn9QX8wcp5V9luf+feT/vk0otbn/nhJ/3ya9U2L/dH5UbF/uj8qPqC/mCx5aLW4/54Sf8A fJpfstx/zwk/75Neo7F/uj8qNi/3R+VH9nr+Ydjy77Lcf8+8n/fNIbS4/wCfeT/vk16lsX+6Pyo2 L/dH5Uv7PX8wzyprO4/595P++TUTWVz/AM+8n/fJr1rYv90flRsX+6PyqlgV/MB5A1jdf8+0v/fJ qJrG6/59pf8Avk17JsX+6Pyo2J/dH5VSwX94Dxc2F3/z7S/98Gj7Ddf8+sv/AHwa9o2J/dH5UbE/ uj8qf1PzA828F2s8XiaBngkRRG/LLgdKK9JCqDkKB+FFdNKn7ONgHUUUVqAVFOWELlUDnH3T3qSo rr/j3f5ynB5FAHnVxj7RITZsWLnI7VBILgrlLSNBnr6VfdLolit0FUseeKoXMak/vL7eSegNUSVZ 1vWLF7mOMe4xiu08MRQjwjtuHMkZdyzLnJ59q4kwWMlwsbNKzMwGOo5r022sk0rTBbWEIcIMrGzY yT70mNHNeIXgh8N3I0zTm8ojLkx7ST9D/OvKGj1G7hUJmAMzbh0YV7H4jutUGiTl7JV45CSbuK8o 1KG+u1iAfykYneBwfxpoTKSw6dp5Jnk82XH3RyScf5611um3egahawaZr0P2bfCPIuCeQO1cktpp un7jdzh5AOV6kn6V12nS+G9Vs7fTtciNrJ5AENyxxx2/OhgaFvZeI/CUsc2nSjVtJlJ+TOQFNU7G ws9Wk/tHwxfjTtZQnzLQnhjnp/nirdtpHifwvMk2jXQ1LTXYkpncoHuO1UIIfD3iRsW850bXEY4x 8quc+tAFm7MeqX6Q60f7I1lFBguFyFkI9frRetcS30Nvrzix1GMf6Pfx/dkPbOPWm6hPLbOumeLr YXELRjy72EZZT2O6iZG06yRZHGu6M4xlTl4R2OevFIB5lu/7U/0l4rTVQoUHH7m7Hv25qAEqsyhS qK+ZrXPz27f3k9vpTG+zrB+7eTUtJIB9ZbY+o78U1pV8vzHk86Jf9ReJ95PRXoGd14OvJ7uKTzVi lSMDZcL1cH19K6euM8DBRcXW6zaKbC7pEP7ts9x9a7OkMWiiigAooooAKKKKACiiigAooooAK4e0 Okpbo+opJJrRuiCEJ8/O87cdwm3HtXcVn/b9JMvnia3aUIx3jG7avXnqKAOYPiLWj4ingVCsUU0k YhOzBRVJD/3+fyqG6udcl0W8S41Vn8/TmnUrAqmIg9BjrkV0mka1pmsQpfIiRSyyGFd6gOxHb16V pQyWt1CXhMckfKEgAjg4IoA4+bWNZtdPmuIrs3ESSJACsaDYpUZkyeOvrxVeVtT1uPRRPDa3Un2q YD7WAUdQhwTs4z9K6aPXdHuNR/sqB4Zcxs0m0DaoUgYPbvVi41PS9McRTyxW4jXcMgAL7D39qAOf lW/0KG1sWv4bCO4aWWSeNN0UBGNsabugPPXmq8Wr61e3EUUcq2kk7ohmEAJK4+9g+tdNdavo32SG W6u7doLjmIvgq2O9TXV/ZWmmSao7IbeOLzd6jOVAzxQBzNlcahPrehyXeoscfaY3Xy1USkYwT7n+ lRazcyx3N9bpMYftF4ilyqnACkjG7jOQK3LXxLot3dwwLLEryIskBYY3bvT0NXmvNMnvHsWkgknX 52iYAke9AGJba7fS+DYL8uBO0nlSzFQfKXcVLkdMgDNZ2oa9qFtZrHba2Lk4ldbmOFB5m3GE5+U/ hya62yvdNvhLBZywSiMlZETGAfcVRn1bR4b2bS/Lh8+0RZfKZAFUMcZHGB1oAwk8SalOEuPtqQuq w+XZiIE3RZQWOeowSRx0xVnxYTeXEVrd3CWcEcXnxs6BhLIOijPQ/rzWtBq+mza1c2PkokljHu80 qMAHqAf51oF7O7dYz5UzACRVIDYHY0AcvZa1qFzeQi4vY9PkAiA08w58wMoJ/wBrj26d6vazqepW eqLYwvj7dsW2byw3lkE7yfUAY/OtW6vdLtb6BLqWCO6k+WLeBuP0NV7HX9N1GR1jdDcw7iYj98Ad cUAcjHq11Frt3dJcb5JoZ1RWVdsbKpK4A5zx0PWuh8OXeqG7NrqN59s32UVyHMQj2s2QV47cVea+ 0+30Z9auLdIIhGZnJQbsY7+9Q6Z4m0jUrgwwzIkpIRFbguCoYY/OgDnF1rUrkXSnU1ud8txA9osK jyUCNhiRz1x7c0+DUNW07SoLKW7+0pJZWzmZ4QPIVztY4HUADPNbWl6jo0WpahY28aRtb5eWVgPm z97n0Faljf6bqkTtZTQ3CL8jbOcD0+lAHJ219q7tHptjqv8Ao8Xmbb1YFbzQozgDpx6imX3iDVU0 5p31RbGSGzEkYMCsLl+556fQVvXXiXR9NuLmyO1XsVQugXAVW9P61DfWeja5PaXAut0MoZCI3AR1 Xkggj+WKAIPEV9dPa2Ns1/8A2fb3ds7T3OwH5goIXngZyfyrlzduljpZExP2JI2VXRctuIy3zc9O 46V21jr2k6jps00yJFa20vlfvxxx0ODWjavp2pQJc2wguI8FUdVBwO49qAMCDxJNJfw2X2hPOa+8 sxBORFgH8uetQavNd2uuak63m5THb+XbPGCoBcAsPXrXSrPpu5Zw1uGdtgfAySO2aoxeINNvLqQQ iOTYdgkOPm5wR09fzoA5a11bVP7cv7xYmjlZZleNihEYThDj73PXmuj0C41Q3sttf332oNbxyq3k qmwnqOOtat5Pp2mq13dmCAP8rSMAC3tnvTLTV9LvJGW0u4JXRN7BDyF9fpQBxcWqalYaQsEWqyee bq4ZiY03ABjtX5uPfHWt7Qb+XWLi48/ZsmsYWJVQCS24Nz+H4U+21fSdatnkNrEwhvFTEgAy+Rhh WhqGq6fohtVuNsX2qZYI9q9znHTt/jQBhWMdw80Gly7gNJEjkHkOvKxg++MGsW+1TU5b3TysJWS2 jWWALsVZWZiCMHnp/drvre+sLmeVIJ4nkVtjhTzkdqzr/VtHils3nETHzikTYGVPqPb3oAz7I3C6 X4lEt69w6tKVRlAMQ2HA49ax7SW50Z9G0ifzpbd9lxaTEFiBtyyMfUHn8a7KHV9IlvPssdzB9pmG TH/E2B3p1vqulXl39lguoJZ4yQEHVcdcUAcWnijWTFOq3weSWASRsY0IibzFXAA68E8HmtS3vNct tXdJ9TNzDBeJbFDbqvmKyg7iR0IJ7V0s62VjbSXMkESRxgsxCD6/nVGw1n7ZcxpNpc1slwDJFJIo wwAz83904oA5/wAa3M88l7ZzaibKCGOJ4YlQZuST8wz1446etWpdekVRp+/bcC4jjSJThymAc/T3 rStPEGkanFdXE4iRLKQoXmA49xmrLatogtl1Nrm28pjsWfAyT6Z60Acude1VUF0l39sm8mV3tFj2 /ZiCAM45PGT83pWzZ3Fxd6NqiJrK6gVjPl3EcQUqSucccGte0GnSo+oWghZbldzTIBiQDuT3qGy1 XRpI5Vsrm22QrvkEeAFHrQBx0E2p2xa/t9UaX7NpcLPmJSJzubIPp6cVHruo3t1bmzkgHkPcTvvC xqCysNqndwc5z611UniXQYLeOSOeB4JHEbMg4TPqKXVtb0uytbSaSJLmK6lAjKqGAz/F/wDXoApa Qbn/AISlfPuGRX0qJhbbQApyc49ayLbWNXs11JBAyxo0rWqYB+0nIDEn+HGeB3rtb67tNOspdRuN ojgjLM4GTt9qzrXxNo93eraLLGrPHHLFuGPMDg4x+VAGZ4G83yLyNFAiLBkl/dk7iOfuce9QS69q slpdo8wiazi8m4cxDDSsfU8AAfhzW7ba3p0es3OkRRpAbePzGYAKp9amj1fRbq3uZEuraSGLmc8Y H19aAM/wbfTXVjcW00vm/ZJfLRiFB24yPu8fTFdHVLTbzTryNn06SGRAQGMQAxxxn8Ku0AFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAlQXpAtZMx+YNp4qxVa/3izl2OqfKeT2oA8+f7CO WVySSdq9qhZ4TjZasOepqy0lyQu2GIg5+aon+2EqS6KM9jVEkETTPfRILNFDOMtnpzXpU6SPAVil 8p8DD7QcfhXnECTnUYN10CPNHy+vtXoWom1Fk/21gsGBuJYj9RSY0c94lGoQaJKFnW5GQS5+Un2w O1eW6lBqN35a+Z5fJ3heMV6dq95pMmkSWlpOqkncuQW5Fee6pYXFy0Sx3Dx5z5gVep9qaEzHTSbO 2GbiYM47Z716Ja+GtH1LTbWz1dvsl4LZPKbcBxzz6elcfD4WYJ5sqOV/vyEAV1Wn21hq13Hba1qU HmiIJD5cw3KOwodwQxPDfi3wvdpLpN4bqyJJ2ZyoH0rOF94b11DZaxbtpuoKSBcxjC5z/nrXW2mh +I9HvYvsGppc2TPh1lPKr/X8KyLu68Paju03XdOe1mQsnnhMZ560kxtFKT+1fD+0FRr2mGPD87gB 6io7c2szx3HhafyZ2LGSzm5zx0FTHQdS0iWO48MX4uoVjJaNmyHGeBis+6urPVHhGoWr6Jdq7AzJ 8qlse1MRZaRZbyP7Ko0fUecxN/q5eelMkYrcXCZWyvSMSQt/qp/p2zS3v2qKGNdZjXVLXaQt1B/r Ixng8UgAaOTyANSsQP4j+9j460gOo8CPAl3NCrTxSbRmBslR9DXc1wfgSdnvWWK9SWHZwjr+8X2N d7SGgrmvEnjS28N3kVtNayzNIm8FCOK6WvKvip/yHbT/AK4H+dJuyPRy2hCviFCotNTY/wCFraf/ ANA64/MUf8LW0/8A6B9x+YrzCio5mfS/2RhP5fxZ6f8A8LW0/wD6B9x+Yo/4Wtp//QPuPzFeYUUc zD+yMJ/L+LPT/wDha2n/APQPuPzFH/C1tP8A+gfcfmK8woo5mH9kYT+X8WetaX8R7LVNTgsY7KdG mbAZiMCuxrw3wh/yNdh/10r3Kqi7ngZrhaWHqRjTWjQVyX/CK6gs+q3Ils2k1SMq8bIdsZH3QD1I I6111cevinWZlhaLTrfZc+cYS0vaI8k/WqPJK1xoeo6dZ31xIUN1O0P2Mws8hjkAKk5I6YJrq7DT ls9IjsQcER4dl7sfvH8yTWC/ia6a7CWdsHkuWgVEkfAXejMfyxUH/CSatPJDdQW8e1beVp4Wf5QU cqSPrigBn/CIatNthmksUit7R4IXjDb3JdWBbjgfL29at2Oh6nd30l/qiWiM14s3lRlmACps7jrk ZrZvdXWz0FtVMRYCNWCZ7kgAZ+prGu9T18ahptusVukz3EiMFkyjqI92T3GDQBm6pZT6AihUhne4 hli2tE7oATkY2g4PPfiukstNmfwbFpsgEczWPkkNztYpis5fFtzcwiW0s48Q26zzrJJjIJIwp9fl NaWra1LaaRBe2cCyvcOiosjbQNx6n6UAUB4au5LacStbLPLBDEGTOBs96qQeCrhdTmeW4JgZ5ZI3 Fw5YM6lTlMbeM+tLLr+rzataW8EUSyQvcR3C7/kfaisCPzqK58Yy3lxaR21pPsCwyzInVg/QZ9ut AGto+i31rewT3htlW1txbxfZ85kUd2yP0pNY0G81C5vDDJAsV1DGuWzuVlcHt2wDUVv4lvZLlZJb SJbJ7r7KpV8yZJwGI7D2qbW9TvrDW7IRSRC0MUjzK5wWI6YPagDOsvBlxBfStNPuiHnGF/tDscyZ zlCMd60dC0rVrXUHudSa02rbpDGtuWP3e5yKxdO8Sapa2Vykkcl1dNcReWJ2AULI2MAjqB6966bR 9UlvrO5e6hEc1pM8MoQ5BKgHI/OgCpd6PfnWJri3Synt7tozKLkEtHtx9wAY9+e9MtvDc1v9nw8O YmmZyAQW3jArOuvEup+dZ3nlRR2jee4RZAWcIhIDfln2q5d+KbiOaOC1tY5ZZVt9oL4GZc9T7YoA 0YNKmi8KDSWdDMLQwb+du7bjP0rKtfC95HbgSvbCb7bDOSgONqKFx9eKdH4m1G4QQQ2cIvEM3mB5 MIRG204PqT+VadvrRk8Nf2vLEqMIi7IXwAR2z/WgDAHhLVWui8klpsKSRnDvhg/OduMA+wre0vR3 0++acGIIbaOLagxyvesKx8TaiBdQfZPNvPtMar5jbVKyAkY9hj8akbX9YnubQwQRLIvnC4jL/Idn cUAXtS8P3V7qN5KrW5gulhyHzuBQk/kc1X1LwncX8koFxHHHJLK/y5BAaPaB+da0msMPDv8Aa0du XYxhxFu5JzjGaxZ/E99Np3kxRRrevKYiEb50+XdnZ1z7fjQBFpnhO4EEq3BQy+dErh5nlVlj6Y3D jrXRaTpz6d9qDFCJ52lUJ2BrnU8X3v2JZ7WwV4ILWOaYySfP8zFcfXjNXZPEt6LoPFaRGzN19lJZ 8SAg4LY9M0AJd+FJbzUrx3uVW0lRjCq53JI4AY+mMKMfU1G3hvUrueO5uWs4HhVY0S33bWUMDk5H Xjiruv6jf2Gpab9mZPs7FzOh6sAOgqez1k3+owQxoER7Xz2ywJGTgCgCXV9MbUjaY8vEE6ykOM5x 6e9ZEfhOVViXzYk22s0LsgOSXYEH6cc1Ne+Ib+21OaKOzje0t5Y45HL4Y7vQe1U7LXtSjWcXcavB JLOsLhvmG0ZGfagCT/hGtSuZI57l7OKSLyI1SDdtKRvuycjr2xWxrWnz34smtzGHtbpJyJM4IAII 4+tcwPE91NrNiYFujFBHEk8KYKyGRQd34A1r6Z4hvrvUIEuLOOO2uTIInV8t8p6ke9AES+HdQs1t pbJrVp4L2e42yFgrCTd1I5yM1Wg8K6pa2qxpJZSvNbCC48zdhAGZspxz97v6V0uqX403TZbvZ5hQ fKoOMk9OewrA/wCEivlvks72CKN0mg+aGTIYPu6/lQA6Pwk8VssPnRlhcmUy4+crtI6+vNZmi/bb jXrNYLaHbp0UyeYYnQ88DeSMHp2zRZeIp7fUdRuhalzcW4uIF83MZAYLgH1JOcitK38S6oLwR3dj CsS3aWkjJJk73AII9hmgDoNQsxqGnzWjtt81cbh2PY/nWOdL12/i+yahd28FssDRE22S0pIwCcjj HXijxZf6jYix+wzJEksjrKWHJxGxGPyqja+IdQWxhhv4VEptoJ1kR87lY7effjNACT+Hbu7khW/l 0+B40EUMUROJlBBJYHuMdvWk1izl0S8XUlET7rl2SMxMyAFMchQSD9BVJdTXUvFP9oSQXMsEG8QR tjbG6qTvPcZ5rp9M1w6heW0HlqPO09LskNnaScYoAg8LWc8Pgq0tJoxDMYXBTGApJJ/rWZc+F5LT TYnLxgWunrCwiUks6uHzjupxz3q7qXiHUrbVZba1sYZIYnjj3PJgsz5/liiDxE93aPFcxNbzBZt7 xSDjy2wcZ9aAMrRbG61zVJNTlt7eKNZ42+WNlVyo7BgDmnal4PvGZJUmVgwkidFneMBXbPG0Vo22 vahKkUdvbxTGKFZZmkk2lgxOAPfA61b1+9v7W90hLORESe5KzK/8S7CcfpQBdm07foR02NgP9HES luegwM1inwzeS2155jWqz3MNsgK5wpiOTz1we1Zc/im6mvLQWwugtq26dI8HzgWxtrfTxGXmjjMK gyak1ngtzgKTn9KAKE3hbUJUey822Fqsss0cwz5pZyTg9gOcfSmapoD2Vk12vlhbe3iUJGhIZlPc DqOfrVzxRf6lZ31ilnMkcMsc5kBHJKpkVBaeJb+3tNt/bR+aI45FZXzkMcc+9AEvg/7RPNql/NBH Et1OpTy0ZVbC4JAYA9faugnnEChiCcntVbT9R+3XN5EFUC2lCAg5zxmn6j/ql+tYYicoUpSjuioJ OSTE/tFP7jUv9op/cas+ivD+v1+/4HV7KJof2in9xqP7RT+41Z9FH1+v3/APZRND+0U/uNR/aKf3 GrPoo+v1+/4B7KJof2in9xqT+0U/uNVCij6/X7/gL2US/wD2in9xqsxSCWMOBgGsetW0/wCPZK7s FiatWbjN9DOpCMVdE9FFFeqYBRRRQAUUUUAJVPVgh06YursAvROpq7VDV7iS3sJGhLLJjhgucUAc DKqqF3XTRqB0brVfbaNKoFwXYnGK0ryayuJA9zKXbHJEBFVc2CSRmOKQ9yQuDVCINPNkNZtVRnZz OMc8V2viqWSPSXxbCeM/e+faRXLWEls+r2ixWcqsZ1+d8YFdN4rmaHS2JhEkWfmJbGDSA8+lv9Q4 +z2FvH/vjf8AzrN1KTXriVVj1JrdSPmSHj9Kv3GqS3SmK1tbSLHVzIc/rVayutQhtnt4iknJJbaD j/gXpUyqJEt2MqXw7LLh7m4uHyBnJNdTYeEYdamVb5vsrlMRvGwycdOKZa2Ebwu+oXbO5wdqng+m KbcaHHfXvmi+ex2J8sobjjp0781EKvMyVK5pQ+HfF/h2Vf7N1T7VaqceTL/gahHi+IPNaeJ9CYB3 y7qm4Bv6VDaXfijSpkii1iC9tt2CsjDJI+vNW4vFEqyzxaxoblWfc5iG5QfofatLoq5N5Wn3sdqf DmqpblNwCg4z35z+VN1IXK2kR8RWUdyA7KTCvIGOGqldW/hPWJYfsl19jkJOWx5ZA9s+9WTp/iLS rZPsl+mowlxtWY9fT5qduxRQj04xiObw5ffIQxMM/IPPTnvVeWWFL4/boZdMvD/y0i/1b8dDWhfX 9pPDGmrafPpzRsSJYRlRnuMVZjRrtlisri3vbZlG4SHLr70AaXgsznVW822t23R5+0xH74/xruq4 bwZp1tDqckkNvPbhUwUcnbnPau5pMELXnPxG0TU9S1a2ms7R5o0hIZgQADmvRq5L4kSSReGCY3ZD 5i8qcUnsehl1SUMTHl3en3nmv/CMa3tLDT5GA67CGx+VZskUkMhjljaNx1Vxg1Paanf2M6zWt3LE 6nIw5x+I716LNDbeOfBbX7wpHqECnLqOdy9fwIqLXPrK2JqYdp1EnFu110+R5hRR9RiipO8KKKKA Nnwh/wAjXYf9dK9zrwzwh/yNdh/10r3OtI7Hyee/xo+n6hVJNLsEWJVt0AhDhAP4Q/3vzq7XE2mh 6jZi2u4Yp2unS788PM2CSf3Y5OB7VR4Jv2EWiXk7PZxo8lq6gnYRsYAgdfQE1ZTStPjQhbeMKysp 9wxyR+JNcVaaJqTxXNt9muore4MTEeaw5B+bqcj+tWL+y/s144LsStp63EvlW/2gq7DbkEHOSM/l QB2U9vaf2e8E8aG1WMh1YZG0VT07TNGgtoLuyhjWIfvo5fquN2T/ALNUPDKyz/D+1Q72le0YAO25 iTnGT3rNa31i206LTxZTTCaC3QBW+WMAAOD/AJ5oA6GXQtEkSBJbSArHxECeoJzj355p+saPb63Z paTkeUsiuVAznBziuY/sy8OpLAYZDfRTmZ5zJlDFtIAUdAenHbFRx6Le6Xpg8uSWBH09DdNNO3zS BxuGSeCVyM0Adfb6Rp1uIvIto0EQbZt7bvvfnUTeHtIZ4XayizAoVPYDp+Vc94XvYIdQvmt4LhLa SWKJEeUybWI689BW14h06TU5tNhxIbdbndPscr8u09SO2cUAR6doukadqjH5JL+RmmDMuDhj19Pa rmpQ6TcXNvHqKRtJhjF5g/A89O9cvF4bu5rZBcRTl4LaVYj5rAhvMO3nvxinX2kancyNHNbSzXUh ia3nLny4gpBIYdM4z9aAOhtPDWmWm5hbRFiVO4LjhTlfyNSWF/pDR3sllNHtjlZrkqDw/fP5VH4l trq60kx2gdmEqNIiNtZ4w2WUH3Fcta6NcR+dKdKul0x7h3a0Ep8x8gbW65wOeKAOph8P6HK/26Ow iLSqx3FSMhx83B6Zqrp2neHbSB7m1SJkBE/mKpOAhIH5c1d0O1uotGSC/JLndhS2SqE/KpPcgcZr j4tD1mDRFtbWCWFY0xLEXPzjexIHuQRQBqX1vp/iC2hSykjtYp5maNp4Mid2BLbcnIPXNbcNlp2n 6XbaJOVkjkQxLG44k9RiucstEu1h0ma4t5nW3v2l2FjmNSpGfXGccVr+K9M1LU/saaZP9nkVnzNj O0Ef1oAmTTNA04z3CW8cZtgskrgE4wOD74Gat2lrplxDHeW0SMkqlkfBGQ3Xr61yl7p+rtp900cE sEAFuZIGkJyqqd4B69cH3pkPh+9u9MtVk+0NEsUzxBZmXBYfL7/TNAHatYWclgbFoEa2xtMR6Y9K pDwzoqxrH9hi4feD3LYxnP04qp4d0ufTb+63CUQyQQEeZIWy4B39fwqDWbOeTXQ81ndXcTKv2doJ SgiYHnP88n6UAaFppuhHT5Ra28RtWQRuFBxtUkgY9jmqMvhZL/XI9Ve4iMAcSqqw7XyBx81ULXQL 2zjjmhjnSeQTed+9JHPTjpW3erPD4KuVcus6WDgnd8wbYe/rQBb1JNNdrZr8RkiYJCW5+c9APrVa x0vSdCuQ0EaRS3bbEKqckdQv0GK5Sy0O5vrSx8uzuobNmtTMsszFmIyWYc5HUc9629O02+tbm2Xb KIYr6cjc5OIj938KAN6TTrOQyNJAhMrB3J/iI6GqNk2iak8tvaoHNu7b1MbLtZhg9QOtM1rT577V 9LePeIofOZyrkAMUAUnHXms7w/YahBqUDSQ3EPlQst28spZZXJGMev1FAG0dA0kzxTmzi8yEKqHH TH3fyquk2hG2nljeNI7JnidypHlM3B6/WotZ0y8vdVEtuzp5do4ibeQqy54JHeuVttDvrvRNViaG V2KIjRbz80qsCevfr+dAHeSaeG0Y6cjjHk+Uruu4dMZI71yWkp4d0jUZbe8vEmvZXT92tq6qCmQC OOvJ5rtLdy0ePKaNVAC7u4xVC4trh/EUFwinylt3Uv2BPSgCG20Lw+LuWGCziE0ChXABG1T8wH0q /wD2ZYuzN5CEmYTE/wDTReAfqMVyi6ZqyXRaK2n+1oZTczNMdk6FTtC+nODx0xVnwhZ6hZ6hP58E 8VvJbRkCRyR5gJ3delAHSX2n2eookd5CkoRtyhuxwRx+BNV4LTSb1d0MccgiUQcDoEPA/A1iazol 3ealqV4izmRTbfZCsrKOG+fgHHSmQ6JeWl59utoZRcPczM480hSpHy8dKANq10zRZr25u7e2jM4d o5mCkfNj5uPcVLp+h6XpMzS2NpHA7qEJXqRngVz3hWx1Gz1lnltp4oJYDv3uWG8H3579as+ItFuN R1We5VZiItNYW+yUqBNuJHA6npQBflm046+1hPbjz5FSVX2k7iM4z9KnudA0i7h8m4s4nTez4P8A ebr+dctcWGsHXYbv7JPviuELyJIcNFsweOn3u1Knha48tmZLov8A2fI4zcN/x8bsr39KAOnutC0Z vLuLi0iAtkAVjwFUdB9BViaCw1S3hlkVJo1Ikib0OOo/CoZrWS78Nm1nUvLJahXXOCW288/WuZj0 LUW02T7LHLBNHZRxwK0hwCPvjHqRkZoA3bXTfD+qpFe29tFKsRKq+0rjB6c+9WT4f0ltSXUjZRm6 Vt6y9w2MZ+uK5TT9AvprNIZoriO2e7R2i8xlIAHJ9cV1Hh+0ms9Na2mDgJK4jDsWITPHJoAlkg0z Wo45nWO5WFmVG/un7rD+lLcaPp11C8MttG6SRiMgjqo6D8K5vS9Anil06B7eaOKC+uZZgJCA24Eo fcdKpwRa7cW8dlHBNFcWdnLHI5l+87MCB/3yDg+9AHY6VpVnpNsYbONUVjucr/E3qfenaj/ql+tU fDdukMVw0VldWkTuCqXEpYnjkgHkf1q9qP8Aql+tcuM/gSLp/EjPooor5k7QooooAKKKKACiiigA rVtP+PZPpWVWraf8eyfSvSy3+K/QxrfCT0UUV7xyhRRRQAUUUUAFZniA/wDEqlBICnrzitKsrxC2 2wO0bmJwAegPrQByMkzrxHZKy47vmojLcB1ZreFAASAwPNXZFuxuZ5VGByBgVVWWZ8tLcDbtIXkC huxItjNctqFrJKLZYlkDExL81R/ETUZpraOPT5953DfCOv1INVobgB82yHzCccHOKs+K57F9BjvL 22810yoUkrJn147VF29wPO7r+0UG92CKSCT0YE1LYXVzbXAtJX8kAglimdw9+afYzefuM7JLGSNi ysQV9PqakfUI47uVjbI+/AQE52+9Q0rEtHRxS2ER3fabhoHAJjdgoUjuBUZNpcTGC3MpZhvG1ug7 Z9Kof24JoZYrWzjiUYLNIoO446e1Vre21fUSbi3SMyDOccA1KixWJpZnN/8AvLtUO4fMPmJ/Guo0 fWfsMcsBt2uJV+YuRu3ivPzZao98A8Kq7MVCryBW9pd7LpkizeTK2w/OyyBSx9MGly63FbU2LjUP Cmq+U1zELWVmIImjKkfTFVLu2sNNjY6RrE8bqw4R9459M0upeINLuLLf9juIbjeW3zRqcA8HBFcy Lq3Qu0SyuzPwBxkf0raUmloU2dnDea+9srvbQaiivjGNrnioZ30h7uNrmxudNnYdUB2qfciqmk6l dRxbknCZ6qGyR6detQarq13ITPJcBSQVPGDx6ikqmgcxu20uoombHU4b+JXGPMbDAfWu70G5ubnT g91GUcMRyc15HpN3G7lSglJAO8fKce3vXovhbVrJRHpwlke4k3MA5JO0c96pSuUnc6quQ+Jn/IrH /rqtdfXIfEz/AJFY/wDXVab2O7Af71T9TyKvQPCF6uleBNVvZjhGYrHz1OMcfnXK+G9Fi17VUspL xbbdyMjl/Ye9T+Jr51uDocEZgstPcokZ6u3dj7moXc+vxSjiJLD+jfp/wTC5PJ6nrRRRUneFFFFA Gz4Q/wCRrsP+ule514Z4Q/5Guw/66V7nWkdj5PPf40fT9Qrk5/GMh1e1WC0kXTX8zfdSLgPt4O3n 19a6uuf/AOEQtzOu+8na0j8wxWvG1N/3uep55qjwSe/8Qw2zOiBmJhDJtGWLN90Be/rWa/iG2u7e O31LSJ7i580xi3SMNIGCBiSM/Lxz1q3H4TjCzNcahcTzOFCSkBTFt+7jH+TViz8PQQXMN61zJPcq 7yPKcDzGZducDgYAHSgCs3i6wisop7ayvJoTCJWEEQPkqem4Z46H8q0LvW4LS0tphDPO90MwwRLm R+MnAz2HNc9qvhq/ghitNIEnlvCIJZVdQSAcjcD2GT05rdutFE9lZRrdvbXFmAIp0AJU7dp4PHIo Azf+EvSPVZFlsrn7ILeKUyiLmHcWB388dKW68VwQXN3bXNpPdoqs5SCIMEjXhixJq43hu2mguY3u ZZDcQpDI7HJ+Qk5+vNOHhm0Fzdz+ZJuu4Hgcegc5OKAM+x160s76SyTTpEtPMj8uaKMbF3gEbjnr Wlq/iK30e4SB7W6uHaFpiIEDbUXqTkigeHrYRNH5kmGeN/xQAD+VTXmlW13dPcSSlWNq9qQCMBWI yfrxQBi6p4hmluoBZSSpYBFN3OkWfKDDIy2flIBB6HrWvbatD9hvLl5JJI7SZ4ydnPy46evXrVZ/ C0B2ol1NHbuiLcQDGJ9oABJ7cAdKtrosEdjeWiyyIt3K0rMrYKk46flQBmXnippNHM9haXAunk8u OKRF3dMk43Y6e9L/AMJpZra28otLycSwCZ2hjBCKTjJ59aRfBkKxD/TXM3mmQv5S7TlduNmMdO9T 2fhO0s7FrNZ5WjMIgGcfKoOf50ASa1rcmmT6aYbeS5ju5GVkiXLkbSRioZ/GNlBbxyta3Z3AmRAg 3Q4OPmBP8s1b1LRlvxZiO7ktprNt8UiYJHG3kHqKzrjwZZXKiP7XJll2z5CsZD1zz90/SgDQHiKy MoiCzGVphCqbeSSNwP0xzTNQ8S22n3bwG1u5xFtEssMYKRk9ATmorbQ3TxAt9NzFbwLGhJGZHAxv IHQgZH40zXPDsl+0txZ3jwtKF82IY2SlTkEntQBb/wCEhscDcJArXL2xJXgMoJJPtgGsew8Ryi7k m1R5obc7msUEWxZ1x0HPzHHI6dasp4esbrVRLHqLyRRym4a1QgpvdSpJPXkE8VL/AMIpbSAxXF5N OsSFbVGIBtgf7vr9TQBbj1ozaXd3S2N1DLbKx8idNrnAyMc9DXPz+Lri6i07yi9qJY0N4Nilot44 78dcggGuks9PMNnNbXN/LePMCHkkwCBjGABwKyl8FWJmt5jP5nlqqsWiRjIq/d5xxgccUAa9xqlv YSQwSmRt8LSCTHBCgZyfU5rHu/FiTJCLO1maNzH9oklj+SJX6K3PU5Faus6Na63ZrZzuyKrq4KHD cHp9Kr3Hhy3ub15luZI4JWVp7dMbZGT7vPUdOg60AMudbMPhe81O3Kk2ytjem0DBx09KrTeLgTZy 2VncXVvPIyZiQEyYGcrz0rSfQLWTRbjSmZjBcbt34nNRweHLS1uVkhd0jRy6Qj7qEjBx9aAEPiew EMs22YrFa/amwn8OSMfXINXLjVLe1aATB1WcEq+OBgZwffGaybrwdb3CbI724hRofIlC4/eJuLAe 3JNX9Y0201DSfIuJzBHHhhMGAKY46/TI/GgCNfElpNp8t1CrkoFwjjbnd938DSwa/BNfi1S0uMF/ La4WPMXmY5XPXP4VUuvDcOoSwzWV8YrNthkijwVkCfdwe3SrcOirZ6g90l/Mls0hlNtwE3njOeuP bpQBU1iXXINYs7e01G3ihvXZFD224x7VLdc89KsL4ktluzaPDcMyXK2jTCMBDIRn16VfutPjury0 unZg1o7OgHQkqV5/OqVz4et5YLgC4kheW6F2soxmOQAAEfl3oAhuvFtpb8JZ3lwweVCsMYJHlnDH r0pt14wsraIzLaXk8KxrJLJFGCsWezc9aksvDNvYxHfdSysRKXkfGWMhyxrH1bw5fTH7HpZZbS5h WOSZZF2nB6sDz0/u0Abeqa4+n39hAtpLLFc7i8qrkIAueazLDxl/o9zLf20+8SIYIkjBZ43OEIAP rW1qOjJqKW4eeSIwZ5T+IEYxWba+DLa3mSY3cjsvl5wiqG8tty9KAJ7DxVbX96tr9ivIGZ2j3zRg KJF6pnPWma3LrMGo2qWWoQQw3T+WFe33leM5znmrkehW8dwJhI+4XT3WP9phgj6VPc21tf3Nu5mB e2feqqR1xjmgDmdT8RX1jqs9mdUt43t40IiNozGcn3H3a663keW3jkkjMbsoLIf4T6VDDZRW17cX gc7pwu7PQY//AF1OkbLLI5csHxhT0X6UAcrF40D6bbOyn7VJcGJx5Z2gbiOD9BVy3vtcvR/aNu1q toZdqW7jBZM43F+x74xV5NBt00qDThI/lwyeYD3J3Fv61XfwvC8pT7ZOLEy+cbQY2l8569cZ7dKA M7/hK7uKbXoZYUZ7Eb7QLx5gIwFPvkVteHL+41Tw7Y310FWeeEPIEHAJqrceE7K5vort5JA8dwZy AcBjjAB9hWhp+mrpttb20MrmKCMoFPfnqaAMEeKrqK91y3miQmzTzLUL/HxgKffNQ2/irUJNE0q6 +ymW7nj8+7jhjzsQHnvx9fatS58KWV1ex3TySB0uftBAP3jjgH270N4XiS2gitbya3aKMxM6gEyR k5KkH69e1AFzTNVh1K4uRbymSOPyyp2YGGXcMHvUuo/6pfrTNN0e20p5jbbgsoQbSchQi7R+lP1H /VL9a5cZ/AkXT+JGfRRRXzJ2hRRRQAUUUUAFFFFABWraf8eyfSsqtW0/49k+lellv8V+hjW+Enoo or3jlCiiigAooooAzdc1P+y7RZsZ3Nt61xGp+PJnLQixMiA9S2M11fi22W606NXbAEgNcLLpVu7E u4P0andBYg/4TMqGU6QmD6v3qpJ46w5LaLC2BjGelX10CzmJ9/VyKlPhbQra3829BJPHE5GTSAzI fH/lSq8WjRRsO4arFz43OowhLvTEdQc8nmpY9E0ASHfZSlB0UTnrVyDSvDSR7W0u4du+JzzQBzza zZyZH9lLlm3feH+FZGsyxyS+dBbmLemHUNnmu0MPh43v2eLRbgzAZ2+ac4rK8SabbCSJrbSprdGG 07nJyalpDRzu2RdiS53IqkAdOfWui8TGbQdShsbGYxwz28chz1yetUk083sitBbsGZQpYkkAjsaf 4iuZdeubLULe2d5hGtuYo8kfLnJrOUbXuWraaFS3F9fPGIpyXFz5A5+Ykjg06a8uLUvA9tDI0Lkk OcjcO9WtAaL7ak4t5oZIZSyq4PJArMv7a/k1OchpCXkYknhcH0NTYajG+xp6n4ing0awup7SCSO7 LcbeFwcVXgvku7aXVPsPyLII2K9FPb8K2v8AhCtQ1zwzptnHd2sU9tvLLI2fNyc/Lim6Z4b1Gy0K 70ueB4pmukOTGWG0dTxV2YcsHuYdpeWTRyBmSRl+Y7eo+lJqS6eVtGgiuQ1zGXTcc7ucdPrWuPAF 7azeYlzHMs+QEiibcPrkU3UdIvmTSVit3eWyQpIqjH8ROKSTW4nCD+EraaRAjG0Lw+W4VwwBwTXW eGW8zxpCTOJSsDA4XHOO9cvZaVqmnWV9E9lIXnYOhyDznNbngNNUbxSk18ixgxvlcgknFWrIz5bH qdch8S/+RWP/AF1WuurnPHmnz6j4XnjtomllQhlRep55qnsdeCko4mDfdHjUUskEyTQuUkjYMrDq DXZ3tmnjbR/7WskA1a2ULdQj/lqB/EB61yv9kap/0DLv/vy3+FX9EbXdC1OO9ttOvMrw6eS2HXuD xUI+zxCUkp05LmW3n5PyZispVirKVYHBBGCKSvT9b8LWvi2z/tbTI3tL0j95HKhTefQg9/euAuNB 1i2maKXTLncvB2xlh+YpNBh8bSrLe0lumZ9FXP7I1T/oGXf/AH4b/Cj+yNU/6Bl3/wB+W/woOn2k O6LvhD/ka7D/AK6V7nXi3hTTNQi8T2MkthcxosnLNEwA/GvaKuJ8rnkk60bPp+oVxGkXGoRvbWcN /I/m3VyZi6klQoyF9utdvXOReL9OfRb/AFdbWVRZzPG0e0b5GHHy/WqPCMs+K7y7jtlg2vcxWbXE 8SIRtcMFwfYAk49qhgu72OdbPSdSMtu7IpuRGSqszZZcHvznPaurt9W0xobad5IbaS7QOqSEKxz6 1ZtpoJYXZY0jSNyD0wCO/FAHH3eu6lDaeVcaiLQQJP8A6SYifNZMbQfTrz61o313Nd+DtKvJWLSy vaySFARkllJo1260C9W1ea/by2n+zlrecKoLAn5vY4rasprICGxtAjwJAGjKsGG0HAFAHDJ4hv4J b2WC4jeS6gkkB2nKOrBR8vbg/jWuLzXLPVJo5b/z47W4hjK+VjzBIuT+R6Vs22s6bd3E8MKIWguW gkzgYYDJP0qini23ZLy7mgjis7RwjuXDM5JwrDHbHrQBZ8R6pc6N5N1GrSQsrRlAuSZDjZ+ua5fX by/EMml3oWSKR0Wa4OVydpOAR0/+tXfG4tmMKu6ZlG+MN3AGciq8lzpt5byg3ERjBXeytjBJ+Xn3 oA5h9cvUgs4p7+HTgLQSJIELrK2SNv0wAce9dPdadHfbZpJ5kbytmY22jBIOfrxUdzqNtBpU9/LB vSzDHaMMfl9KcdZtBqMVg7KHmi3jLjj0UjrkigDmIvEeolNUae5KLbny7VxAcSqWx5mPQfd/DNMs dZ1jUESxTUEVxeGMzou4mPbkc4HOe9dXDqekXLSRw3drIYVO8Bx8qjrn2p9jfabfM4sZ4JmjxuEZ BK+maAOPa71aW8+3rdlJbXSpWYCM4lZJOMj3xXV6fZRP5WoneJpkEjDdwCyjPH4VDBrlnPFPJ5Pl pCsu7eVGQjbSPxNOs/EenXGlQ38s0dqkuQEkdcgjtwetAGA2o6u9w7yXW63mu7m28ny8bUVWIOfX I61FDf6jpmkPDcXZlSSyDqxiJ8piSPyxXV3mo2dppZ1H5JbcYYMmCCCcZz+NQ3Ot6bHpEuoRPFcR xrjYjLlj/d54zQBxOlMUextopxBFb6oNzQEneGRj8xPXnj8a6vXHbStTh1lFZozC0EwBznumB67j Wjb3lnNpA1FY1WExeaQADgAZ7elU9O8QJqRQzadNb28qeZFPIVZGA55IJ28c80AYGqXF9oVhHbRL 57G0PnSuCcbjyx/PFV9OMy2WkRrc/Z7a3vyiGJ2bzFI6Nn34rtItT0y9XEV3BLvbyvlYEkntVSbV tPsIo4ETz4ldEBVg2GL7P0NAGRrtvef8JT/aVg0huLC3DiEE7ZkJO5Pr/hWTH4guBoST2Fy9ubme 5uE85SNwDHCk9vpXZwa7p0saSyzR27SOUUSsATg4q7LGiQllt1kKAsqADk+1AHFprGuagI7iG+WJ JLiG3CLFkDePmb/Cuh0LUJpLV4b+ZWnjupbdHI2mQIeuPXFQ6Vrz6hczwvok9nHbSFZZZWj2owAP Y+/WrFxqml+VHeRMl0EmCDymB2s3GaAM7VNXnj1xrVtRSxEQUxRNGW+0Z68+nasm3udSs9IIefz4 rm3nYRNH9zHSuzurq2hs5L5081YFZvkXc3HUCsg+J4lglWXSp47qNlQWrbdzbwSOc4GQD1NAEEt9 LYeHdGRJBZQ3ESCa52ZEXyAjj1J4rMvdYuJUQT6lGyW8Uc9tKImC3b5IPHtwMe9dTaaraX2iHUDE VgUNvjZcldpIIwOvIqjH4kSSKTzdHuY7iEK0NuQpeQN0IwcD8aAGa/JM7aJcPNLaf6QplRe+R90/ yrnpPE+ouLlWuUnSaCV1TYQUZGAA29uD6812VrrFvd2Fxc3MDW/2Unz45cExlee3BrOh121jhuZ5 tKngdk85I2CsZwe64P0oAd4mELPpov8AcNPMv7/BIGdp27sds/risi61eHTtOlbw+siWsl2I5J3z sU4Gdmf59M102naqmox3CXFq9pLb486CYglQRkHIyORVJPE1mbeY3FjLb26RNJEXC7ZlXrtH+PrQ BkDVdcu7a3CXiREWc87PGm7zNhAX6E96he+1JdSFzHeuk95DZjyyhKJvOGIFdZpN8dTtzM1i1so+ VQzI24f8BJq95UZIJRcjpx0oA4uPXtYPidrJ3QRx3Jg8t+DImM7hx1P9KTQdFu5jDe+RFCIZ5JPN V2MkvJ+X2zXa+WnmeZsXfjG7HOKcFCjAAA9BQBwM3iHUJLJ2FyLmSaJ2ntxGR9nIcAfoauxahrEt 4he8/cXV1cWwjEeDGqq2CD65HWuv8qPLHy1+b73HWlCIMfKvByOO9AGJ4RmX/hH7SF7pp5grFmfO 4/Ma3aaqqgwqgD2FOoAKKKKACiiigAqnqP8Aql+tXKp6j/ql+tcuM/gSLp/EjPorFvNauv7SfT9M tBcTRrukZmwFosNauW1H+ztStBbTldyFTkMK+d9lK1z0vYztc2qKwW1zUL26mi0ixWWOFtrSu2Mn 2qE+Jb2KK5insES8tgGaPcdpXuc01RmV9Xm/+HOkqtcaha2txDbzShJJjhFPenW93HcWCXikBHj3 /pWDBrX2+6spJtPgIllYQyEklQO9KEG73WwoUnJu62NEeIdPMYkDvtMpi+7/ABVqV57GP9AT/sIN /Oulk1vULu9mt9JsVmW3bbJI7YGfQVrUo2+E2q4e3w+e5u1q2n/HslcppWsy3lzNY3tt9mu4RkqD kMPaurtP+PZK68vi41mn2PPxMHDRk9FFFe4cYUUUUAFFFFAHP+MGCaYjE4Afk15jdXcsRdtwdc8b CSfyr1LxVqVrplhHLdNhS+B7muDn8eacsu2OAYHUstYzlGL1K57KxzseuyIx/wBGncf7KnNM1C/u NRi8mPTrpiVJX5TkN2rr5vGukxDA2biuR0xmsi7+IqLbskMEfnZ4ZSMAU1Uj0JcjT0K8ay00TXeh Xl1d7ABEy7Rn61rQeItYmUmPwtDbHHAklU5/HFcVH8RZRCU3Ay544zVWPxdrc0zsILmVW6eVExA/ Sl7R22FzHWWNv4gbxK2s3dnawSNkbEm3DBGMVuXQkvdpube2k2/d35wP1rzWK98WXdwJUtrkjP3Z Bs/nVltO8VyRnzXjt0Y5+acHH5Gjmb6BdnSpo8H22aSPUY4lLBvLiOAlLINB0ZFJuURs8KjnJP0r kovDt5Ex83X7dd3VYwzH+VPbw1Yu4afUb6dh/dhUA/jml7z3HzSOwTX9GiAKXgBxuwFBIqpfeKtD GTMTOT1yoHFc/FoOkxnJs7ibsC9ww/QVZisLWA5i060x/wBNk3/zpqMgvJiJ4r0WN/NttOlDof3Z DN8tOtfHXiOO5861Sa5BJAQxnAH41aja4j/1EkduP+mKBaZM7ud1xdGQ+rGqs+4rMtt4z8Xy27xL YpbmTP72chWH0rOe48STwhZry2XH8Ucm4n8qjmv7a3PzTqMe+arP4mtkOFJb6LRyhYRtDvJgd+tz sp6jYwP55rovAOgx2XiiO6+0XEjiJl/ePkHiuWm8V5BCIR9RW58ONWnvfGEcbyZQxOduPamo2HY9 elljgiaWVwiIMszHAAqh/wAJBpH/AEEIP++qj8Uf8izqH/XE1j6ZJq39lWoTQbV18lcMZByMdelV c66VCMqfO+9t0vzOjbU7FbQXbXcQt2OBJu4J9KhXXtJZgov4SScAbq4xI5F8M5KRxzPrKkwsfkjO fu/SukjW/wDNTdHpG3cM7WOce3FFzaeFpw3fV9TSn1nTbaZoZ72FJF+8pbkUserafLC80d5E0cZA dt3AJ6VzVpDey+K9c+yQ2sgEibvPzx8o6VN4kiuovC1z9rito2MsePIzg/MOtFxfVqfNGF9Xbr3t 0N+91fTtOKi8vIoCwyA7YJFR2uv6TeziC21CCWRuiq3JrHslt38aaj9qEZxbR+X5mOntmtDUU0NZ LKS4MSSLcr5BiIBL84HHagzdGnG0Wm21fTzV9v8Aglm717SrGcwXV/DFIOqs3IpbPW9L1CXyrS+h mkxnarc1ieF1tGfVWuRCZvt0mTJjdjPHWna4tqmtaGbRYRKbrDeXjO3HPTtRct4enzunre2/Ta/9 anT1xqeDbwPAjXEf2cqzTIB1cOzIR/31g12VcZpTXd5qJmmj1px9pYealyBBgH+7nOPwpnASzeHL 2OQRIkMwu4oopJHTd5GzuPr/ADrStvD8sXh270oz4acOqydxnoT71mv4p1syS+VptmYx5xjLTsCR H1J470+58YzxT2hjtYTBKsJk3O29S+DgYGOM9yKAHx+Hbu4Nqbu1sIlguY5CkSffVVYZPY9ePSrO iaBPpmpNcu6FPKkQKo6bpS4/Q1X07Vbu71mSKEnaqviOSQkEgjnPbg1c17UpNNv9Nk3uIP3zTIv8 YWMnFAFG58K3FxLdp5kcUU121wsiDDDK4x+lVbLwdeRaddRzGEzNGsaDA2ttOcn61JaeNp7i3uX+ yxF1jEkGC4DZ7NkDn6Zo/wCEyvWsi0dnbNOkxjkO9tgAGcgY3fpQBr61pd3f6XCtnJHb3sO0o5GQ OMMv0IrJu/C1/EZLXTGt1tLgW4fzAdyCIg8euakuPEt39rWLT7aOeWfywvmTEIN2cnpxTZfFepva E2tjatcQW8s1wksxVRsOCFOOaANB9Enbw/qGnh1El0ZCp7DceM1SuPDN3K81srQeRcyCVrkj99GR j5VPpxx7E1PrOq3zaBpd7YKiXN1Pbfu2fC4fGVJHbmox4l1Gci0trK3N+rSiRXlIjxGQGwcZ5yMZ oAr3Xhcw6Z8qohjin8wwRZZ92SBgfe+lHg5ZptY1K9a0jghkhgjRo49gYqGz+PNPl8T6wb2WK302 1MUcsUO55zuLugbsMYGami8R6hc29rHaWNt9skR3lSSUrGoU4ODjmgCndeDbu5iuE+0ohkDlSPUz eYB9McVNp/hKSJoZblYWIlkleMqGALLge2aqeJdduzq2n6Wtwtkt5bmXPm7CWHJG8e3p1NLo/ibU x4ckuGEV5Kl35EbM5xt9yOWI9hnmgDZ/sKU+FhpOU3AAdPlxuzjFZur+FJ5UnmtSq7ZklSGNQA4A AIx0zxxRd+M7iGCCWKC2kATNxl2+U5wQuB/6Firc/iaYSG1S1X7Q0h2oXIzEFDF8/jQBc0fS5dP0 A2isqTOGbJXIVm9R6Vkx+GtSeSST/R7KQwPE5hJKTsRgEp0AB5qC31u8ee2kE0nltcqPLL5yvlud uT7gVsaDr82pzTQ3UUMUiIJFWNicKfXIHP0yKAMm18J6jEL6XdbxXE0cRt3Uf6qVARuOPXJqw3hO dWtfLkjHlxRCQ4+84l3u3481I3im8jspNUeyhOnshMJWX96TuCjcp6cnt0pJvEmrQXS6a1hatqDy AALMfK2kZznGc+2KAKl34T1Bypga38zJAlZctGC2e/BFddCJQpExUkHgjuKwNE8R32oXNql7ZwQx 3kUjwtFIWI2HDbsj8qlvfEU1rfSWKWyNcGVVgUuQJFK7mb8Bn8aACbw/NcadrdoZxGdSlZ0deqAq o/pWfp/hS6gtpfMaNJZJYmIHon04q9omv39/dxRX1nBBHcxtJAYpCxwpwdwI4qp458San4ehtW06 084yt8zFSwHt+NBE5qEeZnQXEV3Lp0sduyW1yQdjYyoOeM1y7eELySOWQpAoedJXtN7FZdoIOWJy M5yPTFdGuoTf2EuoPblZfJEjRHtxyKzrfxPJdXk9rDar5kTFhl+GiAzuH48Urg5xVrljTNLvNL8O yWkJh+04dolIyiEkkD3AzVGz0jV4rOb5Io7t2DSytJvNx1yp/ujnjFSweKHutQ+ww2q+a4RoiX4d SMufwpo8WM16loloPMljBiJbhnzhl/Ac0XF7WHcn0bQpbHS7y1cRolzkrAMskWRgjJ5OeprMtPDG rWS3NzFPH9q8oQ24LEhFzyRnp7V0GoX1xDNHbWcUck8gLfvW2rge/rWc3idxfCD7OuEcJKPmLZP9 3Axj8adxucVuWtG014NNmtbm1SEy5Dssm9pMjkk+tZ3/AAjuoXEAgu2tZEtYJIbYMpKyb+PnHpgA VNJrmotBM32aGNWSUQsJCWBUHkjFDeILu0gQzwRMEs45pHDHlmOAAMdOKVxe0iTeH9IubC5urmdI bdZwgW3hJKrtGCfxrdrnY/EV1NDGsVtE073AiGWZUwQTnkZ7elSR63ezytaw20H2qEFpt0hCYBx8 pxyaLh7SJvUVzkPiC4uY0extlZ55igE0hAHHX26VNp+p3t7rEaskaW5tS7ruJIYNjIouCqRexu0V jvq9z9plMdvG1pBKYpGL4fcBnIHTFVZPEV5DArvaQl50R4AshIIZgPm9OtFwdSKOiorCttav2vvJ ubWBI1n8h2jkJO/AIIBHTmrOoas1hO0RiDbkDRYP3juAx+tFx88bXNSisS01i+lvIkntYUgkkaMM shLbl9sdK2qY4yUthaKKKCgqnqH+qX61cqnqP+qX61y4z+BIun8SONuLCSfVp7zRb9Y7hfkniI4z TU1K6tdTgh1yzi8xwRDPFz+FWLzQ7xNRe/0m6WCWQfvEkGVaiDQ7u4vkvNXulneIfJHGMKD614fN G2r6fM9rmg4+801b5lbT7rVdQSR9Ltre0tC5AZvvE96hsbWZ/E93b31wtxJJAVdlGAMjpVmHRdZ0 4PDpuoQi3ZiwEq5K59Km0vw/Lp+pm+e7MzOpEm4ck03OKvZry7lOcEpWa1Wnf5mMl/JaeHbrSmbF wk3kKO4BPFaFzarZX+iWwGPLBB+uOatXHh1J/ECan5gCAhmjx94+tW77TWu9RtLoSBRbkkr60OpG +nW7frYTqwurdbt+rRxqHFgh/wCog3863U0+6F3cXmg6ghSV8yxN03Uq+FpBbrF9pXi5M3TsT0qV tE1Gxu5p9HvI40mO5ophlQauVSL2f+RpOrCW0vv2F06/n/tr7JqdnHFemMlZU6Mtdnaf8eyVyWna NPDftqOoXX2i6K7V2jCoPauttP8Aj2SunAuLrO3Y8zGOLtyk9FFFeycAUUUUAFFFFAFW+06z1KIR XtukyA5CsOhrP/4RDQMf8guH8q2qSlZAYn/CGeHD10i3P/AaP+EL8N/9Ae2/75rcop2AyYfC2hW/ +q0q1X38sVbGmWartSBYx6J8v8qt0UAZcnhvSpSTJbF8/wB6Rj/Woh4R0EdNOjH4n/GtmigDIHhf RR0sU/76P+NPHhvSB/y5L+Z/xrUooAyx4c0gdLNfzNL/AMI5pPezX8zWnRQBmf8ACPaT/wA+SfrS Hw5pDDBsYyPfNalFAGOfCegnrpdv/wB80f8ACJ6D/wBAuD/vmtiigDH/AOES0D/oFwf981NZeH9J 0+4FxaWMUMoGA6jmtKigCK4t4rq3eCdA8cgwynuKWKJIIkijXaiAKo9BT6KB3drFGbRdOuLV7aW2 Vonk81lyeW9arr4W0ZHV1tMFSCDvb/Gtaig0VaqlZSf3kENlbwXE1xFEFlnIMjD+LAwKW7tIL6Aw XMYkjJBKn25qaigjmle99She6Jp2oyJJdWqu6DAbJBx6ZFR23hzSbS4S4htFEicqxYnB/E1p0UFK tUUeVSdvUzbrw7pV5cNcTWamR/vMCVz9cU6z0DS7C4E9vaKsoGAxJYj6Z6VoUUD9tUty8zt6i1kr 4Z0pLz7WkMiSb9/yzuFz/u5xWtSUGRUGlWI6W69HH4N9786rTeG9JndWe0HCBMB2AwOBkA4JHr1r VooAoro9ghYpAFLDBKsQex6/gKnmtLe4lilmiV3hzsJ7ZGD+lT0UAZaeHdLS3mtxbkxzHLBpGOPo Sfl/Co28K6MyMv2UgsQzMJGDEgY65z0rYooApJpGnxyJIlsismNpHbHSsjXvCg1SNIrV4oYirrIr A9G6kEHOfY8V0lFAFGLSbWO0t7Zk8xYPL2lvVBhT+lR3Xh/S7xCs1sDmRpSVYqSx68g9/StKkoAq LpVipJW3UZdX4/vKMA/gKhufD+l3cMcUtqNsTFk2sVIz15B6H0rSooAztR0DStWt44L6yimSHHl5 GCmPQjkUh8P6V/ZqactoiWyNuVUJUhvUEc5960qKAMmTwxo8iKjWg2qhQgOw3A9d3PzH3NWRpNgs 6zi3XzVg8gOckhPSrtFAFBdF05AoFomFO4D3wR/Imm2ehabYFjbW+wsRkl2OAOgGTwPbpWjRQBmp 4e0pLme4FopecEOGJK4PXAPA/CnWmh6bZKghtgCj7wzMWbOMdTzWhRQBTi0qxhEIjt1XyFZI8E/K G+8PxpW0yze7iumgVpoozEjnqqnqKt0UAVYdOtIHieKFVaFSqEfwg9asMiuMMoYA5wRmnUUANZQ6 lWGQRgg1VttKsbORZILdUdY/LBHXb6VcpKBWRUg0mwtpUmhtkSSPdtYdRu5NIuk2CzicWyCRZDKG 7hj1NXaSgXKuxUudLs7yMRzxblViwwxBBPXkUf2VZfaEnEOHQADDEDj1HQ1booHyrsV/sFrtC+Su BuwPr1pi6XZrGYxCNpjEZySfl6gfrVuigLIzJ9BtJoYIAGWKKXzCCxJY4I65z3qaTRrCSCOFrcbI /u4Yg/iepq7RQLlj2K66faI4dIFUhtwx2NNGm2iurrCAyqVBBI4PUVaooHZFQ6VZG8F2YAZR3ycf XHTPvTY9G0+IOFtxhyCcknGDkAegz2FXaWgXKuxX+w228v5Q3GTzCf8AaxjNEljbStCzxBjA26Mn +E1YpKB2RAtlbKVKxAFGLL7E9TVikpaB2CiiigApjxpIMOuRT6Sk0mrMCL7LB/zzFH2WD/nmKmor P2NL+VfcVzPuQ/ZIP+eYo+ywf88xU1FHsaX8q+4OZ9yH7JB/zzFH2SD/AJ5ipqKPY0/5V9wcz7kP 2WD/AJ5ij7LB/wA8xU1FHsaX8q+4OZ9yH7LB/wA8xUioqKFUYAp1FVGnCLvFWE23uFFFFWIKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigD//2Q== ------_=_NextPart_002_01C95903.D131CE5F Content-Type: image/jpeg; name="image002.jpg" Content-Transfer-Encoding: base64 Content-ID: Content-Description: image002.jpg Content-Location: image002.jpg /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCAQ5AuEDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDmIvGf iljzr96f+2la1n4q8SSEbtbvD9XrlLdcmt/TY8kVwzk+jGjr7HWtbkA36pct9WrVXUdVK838/wD3 1WXpsI2itpYhsrNRk+oGbd6vrEYO3UbgfRqwbzxPr8edur3Q/wCB1u6ggCmuP1TgtRyyXUaIbjxp 4kTONbux/wADqhJ468UDpr96P+B1mXj8ms5m5rogmOxv/wDCdeK8/wDIwX3/AH8py+N/FZP/ACMF 9/38rnlqeNatuxaSN9fGvio/8zBe/wDfynf8Jn4p/wCg/e/9/KxVFDGs7sqyNg+NfFQ/5mC9/wC/ lC+NvFP/AEH73/v5WGx5pAead2KyOjTxn4oPXXr3/vupR4x8TY/5Dt5/33XPRtUwPFZtvuUkjZbx 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 +wQ+/wCdH9nw+/51aoo+q0P5UHPLuVfsEPv+dPitI4X3rnP1qeinHD0Yu6ihOcn1EpaKK3JCiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKAGuiyLtdQw9CM0vAGAOlLRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/9k= ------_=_NextPart_002_01C95903.D131CE5F Content-Type: image/jpeg; name="image003.jpg" Content-Transfer-Encoding: base64 Content-ID: Content-Description: image003.jpg Content-Location: image003.jpg /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAA2ADcDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD12iii vzg9QKKKKACiiigAooooAKKKKACiiigAooooAKKKKAD3owa5LWrU/wBvzXOp6ZdajpphVYRbsWEL D72UBByeOaqebp58N20X9tXU1i16y+Usb+e6jnyP73Hc+ldKw90mnv5HQqF0mnv5f1+h3FGK4I2U MutRafYWF7plvf2kyOspKh2ABVgMnBB71bk1O41PwrplhuZL+9mFlPg4ZNh/eH8l/Wm8NtZjeH2s 9/8Ag/5M2rnxDDDf29rHDI7SXn2RywKhTtLZH94VZ0bUv7X0uO98ryg5YFd2cbWI6/hXHZP/AAka R7mKR68FQEk7R5PQUyztLifRtIlazmv9Nia48+0hfDFjIdrEZG4DnitZYeHKrGssPDlX9dz0Pt7U VzfhdtPFzfx6dNcRxZVm0+4Rla3buRu5wfbjiiuKrFwlY5KkOSVi1caRqSapcX2kX8UDXAXz4biM uhIGAwwQQcVUHhW5jEdzBqQGrLctctcPENjsyhSu0dFwB70UVuqskkaKrNJWLFvoV/8A21batqWo rNPAjxiKKPbGA3pznPqTUlr4eS18R3GrCYskgJSArxG7YDsD74FFFJ1JXav0sJ1ZXav0t8iAeGM6 p9t+1cf2h9u2bP8AY2bc5/HNRw+Frmyis30/URFfWwkQO8e6ORHYttZc9ieoooqvbTdk2P209Fcv abpFxbalPqOo3S3N/LGIcxx7ERAc4A+vc0UUVz1Jty1MqknKV2f/2Q== ------_=_NextPart_002_01C95903.D131CE5F-- ------_=_NextPart_001_01C95903.D131CE5F Content-Type: application/octet-stream; name="CentrePoint - Email _new.pdf" Content-Transfer-Encoding: base64 Content-Description: CentrePoint - Email _new.pdf Content-Disposition: attachment; filename="CentrePoint - Email _new.pdf" JVBERi0xLjIKJcDIzNINCjEgMCBvYmoKPDwKL1RpdGxlIChNaWNyb3NvZnQgV29yZCAtIENlbnRy ZVBvaW50IC0gIEVtYWlsIF9uZXdfLmRvYykKL0F1dGhvciAoR3Vlc3RIY20wMSkKL0NyZWF0b3Ig KHBkZkZhY3RvcnkgaHR0cDovL3d3dy5maW5lcHJpbnQuY29tKQovUHJvZHVjZXIgKHBkZkZhY3Rv cnkgdjEuNTMgXChXaW5kb3dzIFhQXCkpCi9DcmVhdGlvbkRhdGUgKEQ6MjAwODExMTIxMDU0MDIp Cj4+CmVuZG9iago0IDAgb2JqCjw8Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9MZW5ndGggNSAwIFIK Pj4Kc3RyZWFtDQpIid1XSW/bRhS+61e8owOIo9k59KmwltZBoqY1kZMvhExLTEUylmin+feZjeSQ dNQAQS+5COLb+JbvLbxJZ4sNAaIgfZwpgbCCWAgkKKQruII3kH6akYQhzgEHJKpiNKRElEuUSIgo RrEcMhTC3DIkD2309IHCYkO9P5HkSDiT3qHlepv+vf7w5+02da7RZOCF1RVWl0qMqILImNJ8giVs 91YII5JomR1cPTsPMeLUPn9t+co+5u7R/q/gY1ZBK0+kM5AGEqe6gLvmlOfNHD4cnmF7eNYaq+Lc nIqdpnW6TvWPQHX5fmmf1qmOiCFCQQqCYgosISYD9ueUw+PsJp0JwpFUWoIjxQexkzZ2zpnJaURM lYbZsTnXMhgiQYnJkOHfZS/F8Xh2dRFBtT8WeVP1nmPKrcNZ4HwJ75oHNLcUQcdIWWwYWGAYv+IY KVMSLeWrojohW2otFJvgWCvQHCZWmAk76iRgc6zrU1s4LIgr5TzwEDYtm3HlSlsE7Ie8ZTvVXcCr Ia2/5CdnTUoj4qNTxHcHMbB2xHtKpSVaHy0t9AkCw0rAxKkQElk5CSlU3+4PhXvm3JR60IqEtXm2 1BaCFw2S+Sv+LPvKx9LR3oewvZx1jZ2JQBO2lI9R6QwOA7AUAxMfQZofr+H+SnEHUNZnPHKUbhip +zfOhtI96mnMUUSfJ0XZxWQkFIuLAnCRu8m6vDnmvxPx69BYF5keWTH9XyPjIibOcNKbaWGjJziR HWzWZVbotHtlDAROe9Ajg7Vqxzw7X2ysaj/xBQXsw67c/TZsvXPYAXYkoQu9WaKXqp2bCTWzTHeo dk8PTTOFzIRoh6YJAJsAiGImxzK24yYIXqNNhZjrx1di5yWKBfQ/JhVskC5XLzZck2ZvOQLxlcJt PRdjCTGWmNiIJrOwC2v43nXaV+wJiF4YibSSzJp3WYoZMznYlbAoSgKrGv6aEXirtT6BxeEXkyV9 EBC9EXTDlTMhafB8nN3NnkA6F4QytgSWxtsYJyih3jJ1lm9St5xJt3/agmBlhqWkfJh5vaDMogv3 V6TnmrY7oTvRwRHxivYvSvolwv49r/JTNzSZas+MY4f4DjicjDtkgCvfCG5C3FaP9anMmqLu5kSM DYQoxwZ0BFsP9BnUDQoSC4Nkqi8oOrydAh8ir3g5/+/qXdbkD/BKXMEUa/wM590SJHiqISfLx7Bj 7Kfuthu0xPijKftAoTtzyeDMdTeuO2zTyfU69eEQmhyctsGhkEhGp4eCm+J0fKgwhv2ij6et70/+ VT7y/iX0/lh/9sAReLzQhOwp169MZ13Ojv9zCXyG2+qSl+emzKf5rKYo+C5KqgdY1pXO9/POoNmv Boz7S+htXVSBFcn8wXYXvqXe/aPtlJ+zsbthRDD36cHjTos4szmLKHGfY9rUMbcOrTTU22suGdZB T3b2g3V4DUFBTbKvPu4ubO+xzkTiITa+JYlUBl3mI1Kp773DWa+yiyjIy7xy96v+LqWDt3Dafxn8 F9TSG9ctdJIoFjOzX0eb/AkYlea4sQucC/2RJ0woVCWoXbLMLtlvInVoVmVuZHN0cmVhbQplbmRv YmoKNSAwIG9iagoxMTcyCmVuZG9iago2IDAgb2JqCjw8Ci9UeXBlIC9QYWdlCi9QYXJlbnQgMyAw IFIKL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1Jlc291cmNlcwo8PAovUHJvY1NldCBbL1BERi9U ZXh0L0ltYWdlQ10KL0ZvbnQKPDwKL0YxIDEzIDAgUgovRjIgMTQgMCBSCi9GMyAxNSAwIFIKPj4K L1hPYmplY3QKPDwKL2ltMSA3IDAgUgovaW0yIDkgMCBSCi9pbTMgMTEgMCBSCj4+Cj4+Ci9Db250 ZW50cyA0IDAgUgo+PgplbmRvYmoKNyAwIG9iago8PAovVHlwZSAvWE9iamVjdAovU3VidHlwZSAv SW1hZ2UKL05hbWUgL2ltMQovV2lkdGggMTU0Ci9IZWlnaHQgNDcKL0JpdHNQZXJDb21wb25lbnQg OAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9GaWx0ZXIgL0RDVERlY29kZQovTGVuZ3RoIDggMCBS Cj4+CnN0cmVhbQ0K/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgN DRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/ wAARCAAvAJoDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY GRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKT lJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP0 9fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA AQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2 Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOk paanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMB AAIRAxEAPwD3q4uIbWCSeeVIoY1LO7thVA6knsK4MfESTxPbalD4FggvtRspEBW8PlpIjZBdOQSA R3I/lnjPjt4puZbyz8I2Em0Sqstzhgu8k4RCTwBxk59q3vht8L5fCCHXJNT+0ajNbMoggYeQQQCA W6tyAcjH40AdFqFx8QLc6QbGz0a78yJRqCuzII5M8lDu+726E8VZ0Dx/ofiDXdQ0W1nK31nK0e18 ATBTgsnPIBBqTSvEU3iDwlc3lnZTi/iV4JLdmETeeowyqxyOG4B5FfPni7wPrfgXU7TWdNh1FLYK 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 L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1lIC9pbTIKL1dpZHRoIDgwCi9IZWln aHQgNzgKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9GaWx0ZXIg L0RDVERlY29kZQovTGVuZ3RoIDEwIDAgUgo+PgpzdHJlYW0NCv/Y/+AAEEpGSUYAAQEAAAEAAQAA /9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0 NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgATgBQAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEB AAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQci cRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpj ZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfI ycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkj M1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2 d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ 2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A9dooor84PUCiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK5vxBquoJrFhoulvDDcXSs 7zyrkIq+g7mqd3c+IvDtzaTXN6uq2UsojmAt9jx57jb2reNBtJ3V2bxw8mk7q72R2HSiua1fUdXu dej0XR2jtyIvOnupE3BFzwAOhNU7u817w3eWUt9qMWo2NxOsEm6ERuhboRinHDt21V30COHcktVd 9DsaPxrndC1i7m1zVdI1FlM1s4eFgu3dEen9Pzp2sardp4h0rSNPkRZJi0twSu4rEv8ALPNT7CXP y/MXsZc3L5X+Vrhq3iyzsNKuL61xeeROLeRFO3axOOuKtR62H8TSaP5GNlss/m7uuTjGK4DVbo3X hXW8wwR+Xqyp+6Tbuwerep966RJVg+Il3KwJVNKDED2Oa6pYeCi9Ndf0OqWGjGL011/T/M7H3ori 9Jm8R+J9PGpxaxFp8MjMIoI4FkwAcfMT3rX8N6jqV2l5aatCFvLOXyzIi4SVT0YVzToOKbutNzmn QcE9VdbrsV9ctNI1vWYNKujPFqMcZngmiO0gZ5w34dKy9UHiDwlANQj1g6hYRuokhuUG/aTjhu9d Drfh611swySSS291Dkw3ELbXT/EVnp4N86eN9Y1e81KOJgyQykKmR3IHWt6dWCirvTs1c2pVYKK5 np1TV/u7EFxe6trniO50zTr5dPtbSNGlkEYaRywzxnpWT4r0pdOGmNPq17eXD3sYVJ5QRjPJCgfT n3rptU8Kpf6iNRs7+40++wEaWA8OOwINVf8AhB7WYJNfX93d3iyLILiRhkBTnaB0AqoVqcbNOy7W /UunXpRcZJ2S6W1v6jPEEY0rxVpWuL8scrfY7n0w33Sfx/lR4ajOp+I9Y15xmMv9ktj/ALCfeP54 re1fS4Nb0yWyudwjlx8y/eUg5BFO0nTYNH0yGxt9xihBALdTzkk1l7Zey89vkY+2Xsrfa2+W55fe f8ir4g/7DI/nXUtNHbfEG+nlBaOLSQ7ADJIB54q/J4MsZdPvLIz3Aju7kXTkEZDZ6DjpWkNEthrk mqlnMsluLcocbdvWt514Nf15G9TE05J/P/23/I52x8N2t5ZLqfhrVbzTo7j51RWymfdTV3w3q2pP q1/omrSR3F1ZhXW4jXAZW9R6803/AIQryJHGk6xfadBIctBG25M+2elauiaHZ6LHJ9nMkkszZlnm bdJIfc1lVqQ5Wm79tNUZ1KsHFpvm7aar1Z//2WVuZHN0cmVhbQplbmRvYmoKMTAgMCBvYmoKMTU4 NwplbmRvYmoKMTEgMCBvYmoKPDwKL1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1l IC9pbTMKL1dpZHRoIDY0NgovSGVpZ2h0IDg3OAovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNw YWNlIC9EZXZpY2VSR0IKL0ZpbHRlciAvRENURGVjb2RlCi9MZW5ndGggMTIgMCBSCj4+CnN0cmVh bQ0K/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCANuAoYD ASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0 NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKj pKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QA HwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEE BSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZH SElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0 tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDn aKKK904Q5paSl4oASl/CijigBKKWlxQAlLRTsUANxQBT8UY9qAExRg08UUAN20uPajNGaADik6Ut HWgBKXFFLQAmKKWkoAKWiigBKWiigAooooAKbk0ppKACj60UtABikx7U6imAmKSnUUAJRilxRSAT FGDS0UAJilApRS0CG4op1GaAG0UtFABRg0UtACc0YpaMUAJSU6koASjFLSgUAJSUtHagAoo70UAH aijtS0AJil70lFAC4paTNFMAooNJmkAtLSUtACUtFJTAKWkooAWkozRQAtFFJSAWkpaSgaDFJS0G qAQGiiigCCjGaKWoATFLiijFACYpcUUuKADFFLilApgJilpaSgBaKBRzQAlGaKKACiiigBRiilpM c0ALiiikoAWjvRRQAUUUUCCilooASiiigAxQRRRQAYopcUdKAEopaKAEopcUUAGKTFLS4oATFGKW jFADcUtLjNLj3oATtSUppKACijFKKAEooooAWigYooAMUYopKAFoNGaBQAlGKWjFACYop2KMUANA pRS9KTFMAoxzRS4oATFFGKWgBtFLSdKQBS9qTtS/hQAUUYooAKKWg0wExQBRS5pABpKKKAFoopRT ATmjvS44pKYBiiiigCDFFFLioGJR1pcUAUAGKXFL2oNMApRSAUtACUd6WkoAKKWigBp6UU40lACC lxRRQIWiiigAooooAWkwKKKAD6UUUUDFHSg9KSg0CCijFFAwo70UtAgo60UUALRiiigApMU6k70w CilooASilo4oASilpKACjNFFIBaCKKKYCUlOIpKQCUtHaigAopc0UAJRRRQAvSikopgLS02loAKK WigBKKWigBKUUYooATFGBS0tIBtFLijFADaKdij8KAG0U7FGKYCYopcUUAJRTgKTigBKUUUooAMU UYpMUwDFFFFAEOKXFApe1QAlFLRigBKUUYo6UAFJmjNFMAzRRRQAtFJS0AJkUtNpaACigjNAFAC0 UlFABS0YooAKKKKACijFFABRS0lABiloooAKXikooAWlpKWgAoopKAFyKKQUtMAozSUUALmkoopC CiijtQAUUUUDAU4UgpRTAUikxS0uKAG0hp1IRQA2il4ooASilpcUANpcUuKTFACUtGKMUALxSZFG KKADNGaMUYoAXNHWjFGKAClooxSAKKWkoEFGKKWgBtLS0UAJRxS0YFAxOKXijFJigApRRRQAlGaW kxTAM0UUUARUcU2ikA6jFJS0AFJS0lABilpKKAFopM0UAFJS0UAJS0UvFACUUGloEFGKKKBhS0lH agBaKKKYgNFFFABRRRQAtFJRSAXApcUlGfrQAYxS0maM0DF7UYoFFMAooooAKSl7UUAJijApaXrQ A2lxQRR2oEGBRiiigBaKKKACgUZpaADvQaKOtABjvRiiloGN+lLR+FKBQAlJ3p2KTFACUtGKWgBt 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 6sUCT03gyW50rl4hmbhNBdY4auul93po5zMOWV5sLTOcGn3Y9NPWlbU4oTJ408YCKQ4mtQwvrqWF OxSBgVoajdddwhV8ubjvd3k9G09eZqMU+60M+2oa7Xdf3VgXQiXb94NJOLiwPQnGk+b7CT6N997s i7Hj9bFdk7phNT4d9pe6HYQdC3V9w4RiP5e/X4oasqpcF4prC7uDRhM139C5cDXVSoBIC+NEiPuN exzQlf/uySz4lWrafGcE4ngKXiJG1Mfmd8VLa0ZJno1Wd1kOxC5FVQH7tGlOU+uprqstjR0fo6N4 aR2Wcz0iAVmrUJ11s17IjavJs0N98hXGoMlfGI/JTH45XQqtz/u6BwxTli8+xuf1uGje7RKaIwtT dczcQCL3J3Q9f9/mWVs53pYbuxj3u9xaRd/vT2l9OhrX/yzqG8R+RrK+i86lLLyIh8FRx7iXSSx8 In5WdS5sKdmk9YU3XGdpMoBNdagvap05zFT71u1t8gHaTX2E4w+zk7E5pmGZQ6LsiDkGX0ErRpkS UHM+/naw2frvzx10uI/CfwFkiNMAZW5kc3RyZWFtCmVuZG9iagoxNyAwIG9iagoxNTkxCmVuZG9i agoxOCAwIG9iago8PAovVHlwZSAvUGFnZQovUGFyZW50IDMgMCBSCi9NZWRpYUJveCBbMCAwIDYx MiA3OTJdCi9SZXNvdXJjZXMKPDwKL1Byb2NTZXQgWy9QREYvVGV4dC9JbWFnZUNdCi9Gb250Cjw8 Ci9GMSAxMyAwIFIKL0YyIDE0IDAgUgovRjMgMTUgMCBSCj4+Ci9YT2JqZWN0Cjw8Ci9pbTEgNyAw IFIKL2ltMiA5IDAgUgo+Pgo+PgovQ29udGVudHMgMTYgMCBSCj4+CmVuZG9iagoxOSAwIG9iago8 PAovRmlsdGVyIC9GbGF0ZURlY29kZQovTGVuZ3RoIDIwIDAgUgo+PgpzdHJlYW0NCkiJ7VZLb9tG EL7zV8zRBszVvneZU2FbQhskqlsTOekiKIzFQI9aovP499nZ5S6XZqFemkvRiyDOfDP85s3bupgt GDAL9afCKkItGKWI4lDfwxVcQ/25YJUgUgLNRNwaMpaUXGpSaSg5JUaPFZZQ6RVa5j4G+chgtuA9 n1JLooLLntDdfFn/OX/4/bdlHajxasTC2ypvyzUl3EKJrpyeUQ3LJw+ihFUOs4Grl8CQEsn98/eo t/6xCY/+/wE+rA8Q8UwHB3WGOB1beOxOTdPdwMP2BZbbF2dx3567U7txsmQbTH/NTO/e3/mnee0i EoRx0IoRw0FUDDPgf04NfCpu60IxSbR1CEmsHMXOYuxSCsxpybBK4+z4nDsMhVJxhhlC/eP6S7vb nUNdVFbtD23THQbmlEtPeJ2R38O77iO58RLFX3fKbCHANwbyMoZYLIlD9VWxCeRL7UAGgxMR0G0n XgSGXSYELHbH4ykWjioWSnmTMYRFVAtpQ2nbTP2xiepgusl0R6iPX5tT8KY1QvroLOung2FbB+GK c+2FnqOX5Zwgc2wVTEjlLbHeT0LKzZdP2zY8S4mlHo0iEzHPXhpb8KJDdvM3fO6GyhsdZO/ztr2c ddc7E0CXj1Qfo3UZHAfgJdgmfQR1s3sDqysrQ4OKIeNlkKRlZFfXwYd1M9rLRJCoIU+Wi4vJqDhV FwFwUbtYp7wF5bcJ/E3uLEXmVpbhPzUyqQwLjqvBTWwbt8GZTm0z369bl/bemAKD0xO4lSGi2a5Z ny8O1uFpwoVk6u1mv/llPHrnfAL8SiIXZnNPvhzi3qw47jI3oY6eW5q4hXBDxKWJAVAMgFmBOdbG r5sseNdtNu+5YX1Vfl8So2D4wVSIUbpCvcT4TOLd6kvVV4rGes5eI9RrxMRHOdmFKazxe+f1ULFn YO5gVNojhXcfsmSEwBxs9jBr9wzuj/BHweCts/oMvg+/YpbcBwFzF8EN3L5QmmfPu+KxeAYdKCiL vhTVyNbQilS898yD52eQlQrdTV0XKayWoQgTVYV0Alr+E5pZiRwCWgX0bR0OP0u3rc9KMNFcEh7u YJ0GU9j+lH3POuqvdrPe4UFJMKlkgB3zSw8Pu6mj/CZ2YfNVBt/fV2Z1xdIVjvXDppPgi4KYczd8 xcRg/M0pEwRGbZYOTn6Z1OQ1FcafXKSbOnqLG5bsLf6orq5jN8VEMqTLjG989/GQxotL3ylZpuNY BWzJ2auhyopV4ndIbkX9HOqJxPB/C/S/7/+O759DYF7/ALITwlNlbmRzdHJlYW0KZW5kb2JqCjIw IDAgb2JqCjk1OAplbmRvYmoKMjEgMCBvYmoKPDwKL1R5cGUgL1BhZ2UKL1BhcmVudCAzIDAgUgov TWVkaWFCb3ggWzAgMCA2MTIgNzkyXQovUmVzb3VyY2VzCjw8Ci9Qcm9jU2V0IFsvUERGL1RleHQv SW1hZ2VDXQovRm9udAo8PAovRjEgMTMgMCBSCi9GMiAxNCAwIFIKL0YzIDE1IDAgUgo+PgovWE9i amVjdAo8PAovaW0xIDcgMCBSCi9pbTIgOSAwIFIKL2ltNCAyMiAwIFIKL2ltNSAyNCAwIFIKPj4K Pj4KL0NvbnRlbnRzIDE5IDAgUgo+PgplbmRvYmoKMjIgMCBvYmoKPDwKL1R5cGUgL1hPYmplY3QK L1N1YnR5cGUgL0ltYWdlCi9OYW1lIC9pbTQKL1dpZHRoIDY2MwovSGVpZ2h0IDMzMgovQml0c1Bl ckNvbXBvbmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL0ZpbHRlciAvRENURGVjb2RlCi9M ZW5ndGggMjMgMCBSCj4+CnN0cmVhbQ0K/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgH BwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/ 2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjL/wAARCAFMApcDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQF BgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS 0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4 eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi 4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl 8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImK kpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP0 9fb3+Pn6/9oADAMBAAIRAxEAPwD36iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAorI8RF2sIIY5pITPcxxF4nKMATzgjmo10WSMts1jUwCchWmDAfmM/rUuVh2Nui sVrDVlI8nW3UA/dkt0cEenY/rU0UOrIPn1KCRv8AatcD9G/rRzILGpRWYG1hUwzWLt6hXUH8MnH5 0G71dAN2n2snByY7o9foUHv3o5kKxp0VkHUtVUfNohY/9MrpD/PFL/bUq8SaTf57lEVgP1B/SndA a1FZA8RWoYiW2voQADultmUfhxz07UN4n0ZBmS9WPJAAkRkJJOOhFFwNeiqK6zpjkAX9sGPRWkCn 8jzViO7tpW2x3ETt6K4JpgTUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBj63ua60mNMZ+1 hzn0CsDj8x+taVZupMp8Q6PEWAOJ5APXCgf+zVpVlLcpHyj8Q/iB4sT4iaokOr3tjHY3bw28EErI gRWwCVHDbgM85zn0r6W8Jaldax4Q0jUr5Al1c2kcsoAwCxUEnHbPX8akvvDeh6pfRX1/pFjdXUX3 JprdXZfTkjtWpQ3cLC0UlLSAKKKKYBRRRQBQv/7JsLKW61AWcFrGMySzhVRR7k8Vl6RJ4R8R28r6 O2m3cSMBKLXaME9NwHrjvXLfG7wvq/ifwfbpo8T3EtpciaS2T70i7SMgdyM9Pc1yPwD8H6/o+uan quqWF3YWzWwt0iuYmjaRy4bcFPOAFPP+1x3p20Eeynw1pRZStu8e05AjmdRn6A4NO/sNB9y/1CP0 23BwPw6fpWpRQMyV0m8hULDrV7kDG6YI5P6AfpS/Y9ZVyV1lXTHCvarn8wR/KtWii4jKb/hIVU7J NNc9gyuufxBP8qd9q1yP79jaTH/pnOVA/Ej+ladFF2BljVNUBYS6I4AP3kuEYH+v6UNrzIVEmkam ATgssIYDjPY5x+FadeLat+0Rp1h4hlsrbRJbqwhlMb3QuArNg4JVNvI9MkZ9qabA9WXxLZ7nWaG8 t9pAHm27fNx2AyfzAp8XiXR5wuy+TLdFKsD+RGasWF7BqenW1/avvt7mJZomx1VgCD+RqzijmYWK 6avpsjbU1C0ZsZ2iZScfTNW0dZFDIwZT0IOQaoalHCbC4klRDsiY7mGcYBp2ix+Volim0KfIQkAY wSMnj61SdwL1FFFMQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFAGPP8AP4ogXtHaM/0JYD9efyrSrNX5/FNy4x+7tUjPt8xYfzP5VpVlLcpB RiilpAFFFFABRRRQAUUUUwCloooAKKKKYBRRRQAUUUUAFeF6n+zlDd6zPcWniH7PZyys6wtab2jB OdoO8Z+uBXulFF7AVNL06DSNJs9NtQRb2kKQR7jk7VAAz78VbopDSAz9eYLoN9lioaFkLDGVyMZ5 9M5q/aRtFZwRt95Y1U/UCsrxK2NBnG1m3tGhCjJwXUH9Ca26qImFFFFWIKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDFsm3+INYJBG1oUB7 EBM/zY1qVmaT89xqcnJzdsgPsoH9Sa06xluUgooooGLRRRQIKWkopgLRRRQAUUUUwCiiigAooooA KKKKACiiigANJRRSAy9b+aOyj/56XkS4z1Gef0BrZrF1VRLqGkQnOftPmrj1VT/QmtqriJhRRRVC CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo pCQASTgDqaAMXQFH2O4lXpNdSyde5Y5/XIrVrK8Nb/8AhHrRpFCyMGdgDnksSf1NatYPcoKKKKBi 0UlLTAKKKKYgooooAWiiimAUUUUAFFFFABRRRQAUlLSUgCiiigDKvNzeJNIXClVWdzk8g7QB/Nq2 qxg6v4uSPcNyWJcrnnl8A/o1bNXHYTCiiiqEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABVbUZFh0y7ldtqJC7Mx7AKeas1na9II9Bvi33TCynHo eD/OgBujqV0ayzjcYELY6EkAn9a5nx78SdJ8AxW63kU1zd3OTFbw4B2jqzE9B29/zrrrZDFaxRt9 5UCn8BXmHxd+F9944mstR0m4gS8tozC8U7FVdM5GCAcEEnr1z7c4q19SjqvA3j7SvHumzXWnpLDL bsFnt5gNyE5wcjgg4OD7Guqrzn4R/Du78BaZftqNzFLe37IXSEkpGqbtoyQMn5zn8K9Godr6AFLR iigAooopgFFGKgv7xNP065vZFZkt4nlYL1IUEnH5UAWKK+Y9E+PfilvE1u+oi1m06aZUktY4QuxS cfK3XI9ya+nKbVhBRRRQMKKKKACiig0gEooooAKKKKAM21/eeJrx+8VvGh+hLEf1rXrH0sE65rMh OQXiVfoE/wASa2K0jsSwooopgFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABWR4mBbQJ41Ygu0anHoXXP6ZrXrH8QN+6sI8E+bexLwO3JP6A0nsBp UUUViWFAopaBBRRRTAKWkozTAWkIBGD0ozS0AcHpfwe8GaRryaxa6fJ58T+ZFHJMWjjbsQp9O2c4 rvKKKYBRRRQAUUUUAFJS0lID51/aOXVf7b0ln83+yPs5EeM7BPubdn327Pwz712vwBXVV+H8n28S i1N0xsvMz/q8DO3/AGd2ce+a9SlhinjMc0aSIequoIP4GnAAAADAHQCnfSwhaKKKQzM0FhI2qSAH BvpFGR/dAH8wa2KyfDvzabJNx++uJXOPXcQf1BrWrRbEhRRRTAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACsjWPnv8ASofW4Lj6qpP8s1r1kajG X8QaS5ztRZzwTjOFAz68ZpS2BGjRRRWJYtFJRQIWikpaYBRRRQAUUUUwFooFFABRRRTAKKKKACii igBKKWikAlFFMmk8qCSTGdilseuBQBT8OKyeH7NWHz7Tu+uTn9a1Kp6RG0WjWKMAGWBA2PXaM1cr VEhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFeV/E34o/8ACB+KNNtxpAvy9m8mPtHlEbnAH8Lf3D+deqV87/FKWa5+PmhR28InltoINkTP sDEO79cHHX0oauBYT9pVC37zwoyr6rqGT/6LFaVv+0doLY+06JqUfr5bRv8AzIrp7WE6jC7apo8M EgbGx2SbcPXOKyNW0/wXZTrFqOjWKuy7w39m7hjkffVCB06ZqeVDuS2/7QHguf8A1i6nb/8AXW2B /wDQWNakHxp8Az8f255beklrMP124rhr7S/hdLbTMU0qORUYqnnmEkgdANwNc54H+Hmha54MttV1 BZPPlkkXiYpuAYgY9+D2OaORBc9yt/iT4KuceX4n0wZ/56TiP/0LFatt4m0C8/49tc02f/rldxt/ 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 iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAjuJfItpZcA7ELY PsM155o6bRcEHgStH+Ksw/lium8d6pLovgTW9Rg2iaC0cpuGRuIwP1NebfC7XL7xD4Yub6/EQlN7 IB5a7QRtUk9fUmgDtq5X4bQ+R8PNGQ94mf8A76dm/rXSXglaynWEZlMbBBnGWxxzXB6LrfiLw7oF lp934LvStnbrG0sN1E4baMFsA8evWgDsr/SrK8i/e2MExByVZBlh3GazbTw14Vi1iG7tdOsotRhU ugQbXUHjcU/TJFZP/Cy7aKaOG68O69DLISEAtQ+7HJxhucVF4e1JfEHxJvdVhtruGCHS0tl+0wNG cmQsRg0AZ/xwEQ8HWZZcyfblCHPT5HJ/kK6L4bRLF4B0kAglot5APTJNVfiR4Q1HxhpVna6fPbRN BMZG+0MwB+XAxgH1rlfDHgXxvpGv6b9u1PzdLgYB447x2VUA4AU4wOnSgD1+qi/NqjN2EZT8Rg/+ zVz3jqPxDFoMbeFxM999oXeAyt+7w2eHOOu3pzXnH/CQfFKyIM2jXMxGTu+xsxOcd0PsPyoA9zrm fiHP9n8Aa0/GTblP++iB/WrHh281W68LWl7qSJBdtEXliaFlKnJwMFs9Mda8X8Q/Fa78QeH7nSrn TvKaYAeYswwuDk/LsyfzoA9o+Alv5Hwwgkx/r7qaT9dv/stenVw3wdt/s3wp0JMctHJJ/wB9Su39 a7ms3uUFFFFABRRRQAUUUUAFFFFABWVES/i5/lysdkAG9CXyR+QWtWsyw+fxDqjcEIsKDnoSCT+m 2hbiZr0UUVoIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigDgvjRK0Xwm1vYCWcRIAB6ypn9M1474BvvHOmeE7f8Asfw9Z32nSSPIkjTBHJ3E HILjuMdK+gvF8pj8N3QHVgf/AB0Fv/ZawLJAlnGB0I3D6E5/rQBwX/CceM7b/j68A3MmOpgnz/JW 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 pI1YgdMkZoAmoNFBpAJRRRQAUUUUAFFFFIBKKKKBhRRRSAKSlpKQBRRRQAlFFFIYUlLSUgCiiikA lFFFIArlfiNJrcfgXUD4dSd9UJjEQgTc+PMXdgf7ua6qkoTs7gfMkXjL4m6XEsWo6DdzqrBi9zp0 ik4OeqgDFWP+F2axaHF94cjU9xveP+YNfSdNIBBBGQexrX23kTynznN8coLqxuIW0OWGSSJkVluQ 4BIwD90Vw+h63pNjpUMEmo+IbW5G7zBaTL5OSxwQp56Yz719aT6Do93n7RpNjNnr5lujfzFZdx8P vB91nzPDOlD3jtVQ/wDjoFHtl2DlPnrwhH/wl/xk0VBe3l/awSJIst4AH2RL5hBA4A3Aj8a+tq4P wx4L8O6D4zurrStLitZUtQgKMxABIJ4JPPT8q7ytoy5lcTVgooopiCiiigAooooAKKKKAP/ZZW5k c3RyZWFtCmVuZG9iagoyMyAwIG9iagoxNDYyMgplbmRvYmoKMjQgMCBvYmoKPDwKL1R5cGUgL1hP YmplY3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1lIC9pbTUKL1dpZHRoIDY2MwovSGVpZ2h0IDMzMgov Qml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL0ZpbHRlciAvRENURGVj b2RlCi9MZW5ndGggMjUgMCBSCj4+CnN0cmVhbQ0K/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgG BgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgy PC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjL/wAARCAFMApcDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAA AAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEI I0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlq c3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 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 ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBGUMpVgCCME HvWK2hz2Mhl0a5ECk5a1lBaJvXHOVPuM/TtW3RSauBj22sK1z9kvoGsron5EkYFZB/st0P061p0y 9sbXUbdoLuFZYz2PUe4PUH6Vji11PRFAtS+oWK8eTI376Mf7LH7w9jzUuI7m3RVTT9Ts9UhMtnOs oU7XAPKEdQR2NW6kYUUyWRIYnlldUjRSzMxwFA6kmuE0P4xeEPEGux6RaXVwk8rbIXnhKJK3YA9i e2QPzpAd7RRRQMKKKKQBSUtJSAKKKKAEoOce9LSUgPmbxZ4R8X+CfGb+Mbq3i12ATtO9yqHapP8A eTOUx2PIGBzXa+Hfip4d1yAfabhdNusgNDcuAMnj5X6EfkfavZCARg8ivIvG/wACtJ1vzL3w8yaX fnJMOP8AR5D9Byn4ce1aRqdxNG9b6XY2WsT6lbW6LcagFWeQE/PtBKn06Z6dePSo9WSFZoDMhW2Z 90rqMhiOQCPwznHavJdM8WeJPhxqqaT4wsLqW2GfKYtkgdNyN0cc+vf8K9HtNbtfErR3+j3qXMIH l+R05PPzDqD8pOD2X3rUk0dRIu7yFE2yRxoZCfmK5PAzt9ga8/8AihqSWvgpoozmS/uAhIK/cHzZ 4yeiqME969GS1sYbeY28CrKFA2sPmDdBwenP515Z8XLRdQ8ReGPD1oz+fKSoDMW/1jqi9fdTQB7F 8ING/sT4Y6PGwxLcxm7k4xkyHcP/AB3aPwruKitreK0tYbaFdsUKLGi+igYAqWgAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo Az9Q0e11ErIwaK5T7lxEdrr+Pf6Gs/7fe6O/l6svnWvGy9iTp/10Ufd+o4roKQgMCCAQeCDSauBl apZW/iHw9e2Hnj7Pf20kHmxnOA6lcj868C8KfAfxHaeLbO51aW0isLO4WZpIpSzS7TkBRjIzjqcY r3mXQWt7n7TpF0bJid0kBXdFLx0K/wAPbkUkOtqlwLXUoDYzk/LvbMbj/Zfp+FRqhmrRS0VIxKKK KQwoopKQC0lFFIApKWkoGFFFFIClqelWGs2EljqVpDdWsn3opV3D6+x968Q8V/A/UNHujrHga9mV 4zvFo0u2RP8Arm/f6N+Zr3uimpNbCaPnjw38XI2nXTfF9n9muon2/afKICsP76dVPuPyFSeFTF4w /aJN7C6z2WmxtIjKdykIgQEH03vmvWPGHw78P+NYD/aNr5d4BiO8gwsq+mT/ABD2OfwrnPhJ8PG8 Fa54hka8jvYz5VvBOEKNxlpAV5xyU7nOK2jNSJaser0UUVYgooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACoLuztr+2e 3u4I5oXGGSRcg1PRQBgNZX+i/NYb72yHW2kb95GP9hj1HsfTirmnatZ6pEWt3YOv34pFKSIfdTyK 06pahpNpqar56ESJ9yaM7XT6NUOI7k9FYf2zU9GLDU0+1WYPy3cC/Mox/wAtF+ueRxite3uYbqFZ oJVkjboynIrNqwyWkoopDCims6qyqzAFuACetOoAKSlpKQwooopAJRS0lIBsjrFG0jnCqCxPoBVH wupbQ4rk/eu2a4b/AIEcj9MVH4hkZdGmiTHmXBWBQe5Y4x+RNbUMSwQRxJ91FCj6CtKS1uTIfRRR W5IUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFY0+giO7+2aXP9imOfMjC5il/wB5eOfceprZopNXAwf7 b+xzrBrEIsnYhUmLZhkJ44bsfY1r0+aGK4haGaNZI2GGRxkH8Kw207UNHBfS3N1aj/lylb5lHojH +RrNw7DufM3xlbXP+Fl3n9ofaAgZf7P67fKwMbPx6475r6R8CnVj4G0c655n9pfZl87zPv8A+zuz zu24znnOa0LDUbTVf+WRjuYeXgnTEkR/z3FaNKTurDQlFLSVBQUUUUgEopTSUgMm/U3ev6VaBiFi ZrqQDHO0bV/DLfoPWt+sLSz9q8RapclW2wBLZGI4PG5v1b/PFbtdFNaEMKKKKsQUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQBT1DS7XU4lS5Q7k5SRDtdD6gjpWSH1bRQRd7tRswSRPGuJYx/t L/EAO49zXRUVLimFylb3MF5As1vKksbdGU5qWs648PRC7a906ZrG6fAcoNyOB/eTp3PIx1qE6w9j dR22rwrbtIcRXCEtFIe+Tj5PofzrKUWi0zXopAQwBBBB5BFBqBhRXn3jr4t6P4H1SHTZrWe9u2QS SpCwHlKemSe564/xFbkHimw8Q+CG1rS3dobiMogYbXRydmCOxBP/ANfHNFnuI1/DMZGiRzuMSXLN O2O5Yk/yxWvUcEK29vFCmdsaBRn0AxUldKVkQFFFFMAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKZLFHPE0U0ayRsMMrDII+lPooA5+XSL7Sg0uiSCSMZP2G4c7D/uvyV/lVmx1a2vm aIborlPvwSja6/h3+orXqrf6baalCIruFZAOVboyn1B6iolBPYaZ4v8AFL4P6r4q8UjW9FuLbNwi pcR3DlNrKAoYEA5GAMj27546vwt4SPhHQtA8NGYXEz3TXVzKvCkqNxAB5x90e/410uzUtBUBzPqd iP8AlpwZoh/tf3x70ulXMOq+IJ723ffBBbrEjYwCWO4/pgf5NR711Fj03OhooorYkKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACo47eGF5HiiRGkO5yqgFj6mpKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/ZZW5kc3RyZWFtCmVuZG9iagoyNSAw IG9iagoxMjU0NgplbmRvYmoKMjYgMCBvYmoKPDwKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0 aCAyNyAwIFIKPj4Kc3RyZWFtDQpIibVWS3PbNhC+81fs0Z4xIbwB5tSxLU3baVS35uSki0ZhLGb0 qGU5af59dwGCBM1GMznkohF2v11++8AubutithAgPNSfCm8Y9+CMYUZCfQ9XcA3150JUimkNPBNJ 79hYUkptWWWhlJw5O1Z4xnVQWJ37GOQjg9lCdnxKq5mJLjtCd/Nl/ff84c/flnWkJqsRi2Brgq20 nEkPJblCveAWlk8BxJmoELOBq9fIkDMtw/lb0vtwbOIx/D/Ah/UBEl7Y6KDOEKdjC4/nU9Ocb+Bh +wrL7Sta3Lcv51O7QVlvG01/zUzv3t+F07zGiBQTEqwRzElQlaAMhJ9TA5+K27owQjPrEaGZ16PY RYpda0U5LQVVaZydkHPEcCiNFJQh0j+uv7S73Uusi8mq/aFtzoeBOZc6EF5n5Pfwx/kjuwkSI992 ymyhIDQG8XKOeSoJorqq+B4USo0gR8GpBDhvJ14UhV32CFjsjsdTKhw3IpbyJmMIi6RW2sfStpn6 Y5PU0XST6Y5QH782p+jNWoJ00XnR3Q5BbR2FKyltEAaOQZZzgsyxNzAhlbfEej8JKTdfPm3beNaa Sj26ikKlPAdpasGLDsXN//C5GyrvbJS9z9v2ctaxdyaAc36luhg9ZnAcQJBQm3QR1M3uHayuvI4N qoaMl1HSDyO/uo4+PN7RTqaixAx58lJdTEYlubkIgIvaxbrPW1T+O4G/y531keHIcvKnRqaNE9Fx NbhJbYMTXNi+beb7dYtp74w5CDg9AY4Mlcx2zfrl4sU6PE24sEy93ew3v4yv3kt+A8JIYhfu5p59 OaS5WUmaZXhDkR4OTZpCNCHS0KQAOAUgvKIcWxfGTRY8dpvPe24YX1WYl8wZGH4oFWqUrlgvNV6T tLeiQHeV4qmes7cI8xYx8VFOZmEf1vi783qo2DMIXBiVDUgV3McsOaUoB5s9zNq9gPsj/FUI+B2t PkPow6+UJXwQCNwIeOH2hbEyO++Kx+IZbKRgPPky3BJbxytWyc6zjJ6fQSsZoAJrUzkCaGw4bJuI s9/HKS4HnPs+TiCLHucj7rYOCcMpnfZelzHHycTKtwsyQ2aLqu5vtPLdDvyWteI/7Wa9o03Uw7TR EXbMnwjwsJs6ypfpOY7MGE9X0tWV7dmlwlO3agjVHK3JjL8l7mUPgW4x9RusX1b5VhN6+ilD3fJD nworeXWderFLNXaFoKedpHGFT4/+ckqjwosG/Y0envP6P91uSPtlbmRzdHJlYW0KZW5kb2JqCjI3 IDAgb2JqCjkzMAplbmRvYmoKMjggMCBvYmoKPDwKL1R5cGUgL1BhZ2UKL1BhcmVudCAzIDAgUgov TWVkaWFCb3ggWzAgMCA2MTIgNzkyXQovUmVzb3VyY2VzCjw8Ci9Qcm9jU2V0IFsvUERGL1RleHQv SW1hZ2VDXQovRm9udAo8PAovRjEgMTMgMCBSCi9GMiAxNCAwIFIKL0YzIDE1IDAgUgo+PgovWE9i amVjdAo8PAovaW0xIDcgMCBSCi9pbTIgOSAwIFIKL2ltNiAyOSAwIFIKL2ltNyAzMSAwIFIKL2lt OCAzMyAwIFIKPj4KPj4KL0NvbnRlbnRzIDI2IDAgUgo+PgplbmRvYmoKMjkgMCBvYmoKPDwKL1R5 cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1lIC9pbTYKL1dpZHRoIDU3NgovSGVpZ2h0 IDE5MgovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL0ZpbHRlciAv RENURGVjb2RlCi9MZW5ndGggMzAgMCBSCj4+CnN0cmVhbQ0K/9j/4AAQSkZJRgABAQAAAQABAAD/ 2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0 Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCADAAkADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJx FDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNk ZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJ ytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQF BgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMz UvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3 eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna 4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiq d9fPaPbxx2zzvMxUKrBcYBPf6UAXKKzV1WYD95pd4rZ6Lsb9d1NOvWyyeXJBdxtjPzQGldAalFZZ 8RaUH2tdhWyBhkYcn6irEWrafM21LyEt6Fsfzp3AuUVGk8UpxHKj/wC6wNSUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAVmXzA6zpsZIziVwO/AA/9mrTrNm51+Iddtsx+mWWlLYC2zBFLMQFAySegFcJ4b+LvhjxT4nO haeboXBDeVLLGFjm2jJ2ncT0BPIHSu6kjSWNo5FDI4KsD0IPavOvC/wY8P8AhXxUuu2lzeTPFu+z wzMpWIsCCcgZbgkDP61mrDPRyARgjiomtLZwQ1vEwPYoDU1FICkdI04qF+xQKo6BUC/ypg0TT1JK wFM9QkjKPyBrQoqgKB0mPI2XV7GAeFS4YCg6fOAdmp3gbsWKsB+G2r9FFwKIttRUDGqFj/00gU/y xQF1dCcXVpKCeC8BUj8mqp4t1W60PwjquqWUAnubW2eWNCCQSB1IHYdT7CvMfgz8SPEnjHXdRsNa MdxBHb+ekyQhPKbcAE44IIJIzz8pp6gesmTWAQBHYsO53uP0wf50rXupKpP9mI5A6LcjJ+mRV2il zMDPGrzgnzNKuwB/dwx/nQmvRFC0ljfwgHH7y3IrQop8zAorr+nEgPMYmIyBIhX+lTLrGmsu77db gf7UgX+dWKjeCGQ5eJGPqyg0cwD1u7ZsbbiI56YcVNWdLY6bHG8sttaogGWdkUAD1Jqra6dot1AJ 7JIJImJIkt5OCc88qfWjnCxt0VlDR7dGLRSXURIwdlw/P60HTXxhNSvkGQeJQf5g0c6Cxq0VmaO1 wy3QnuXnVJ2SMuoBAH0AzzmtOrTuIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKyY1LeJLt8khYI169Mknp+da1Y9lltc1aTIKlolGOvCc/qamWw0adJS0lZgLRSUtABRRRVA FFFFAARkYNV7WxtLIOLS1gtxI25xFGE3H1OOpqxRSAKKKKQBRRRQAUUUUAcX8U/DGp+LfA8+l6TK q3RlSTY77VlCnlSfyPPcCsb4MeCtc8GaHqEet7YpLqdXjtlkDiMAYJJHGTx0P8Ir000lO+lgCiii kMp6HlrGSVgB5k8r4Bzj5yP6VpVnaCwfRLVxzvUv+ZJ/rWjWq2JCiiimAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABWTpgVptQlGfmumXkY+7gfzzWtWXpPzWbyd5JpXP13n/ConsN F+igUVABRRRQAUUUUwCiiimAUUUUgCiiikAUUUUAFFFFABRRSUDCork7bSZs4wjHPpxUtU9VIGkX e44BhZc/UYoAn0tduk2Yxg+ShP1wKt1FbIY7WFD1VAD+VS1siQooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigArJ0RQujW2B1UsfqSSf51oXjbLKdicYjY59OKq6arJpVorY3CFA cDHO0VExotUtJS1ABRRRQAUUUUwCiiimAUUUUAFFFFABRRRSAKKKKQBSUtFAxKz9c3HR51XG59qD PTlgP61o1nauR9ngjOdstxEhwM9WFAGtRRRWxIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQBS1dwmj3hP/ADxYfmMVJEhjhRD1VQKg1z/kDzr/AHtqfmwH9atVExo8y+I/xei8 B63a6XHpRvppIhPMTN5YRSSAB8pyTg/TivQdI1S31rR7PU7Qk291EsseRg4IzzWN4l8A+GvF13b3 WtaatxPbjakgkZCVznadpGRnPX1PrXRQQxW0EcEEaxxRqFREGAoHQAVOgElFFFJAFFFFUAUUUUAF FfP3jS/+JEXxhWHTG1UWfnRfZIoQ32Z48LksB8pGc7i3T24r6AGdozjPfFAC0UUUAFFFFABRRRSY BRWBa+N/DV74ik0C21i3k1SMsrW4JzkdQDjBIwcgHIwfSt+kMKoajzLYL1zdKSPoCf54q8aoXQD6 xpg6lWkf6DYR/WhbgatFFFbEhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA GbrSh7WCNgGV7qIEHv8AOD/SrlU9WBabTkU8/agxGOoCtmrlZz3GgoFFFSMWiiimhBRRRTAKKKKA CiiigAooooAKKKKACiiikB47oXwRk0f4kDxE2qxyWENw9zDAEPmEnOFY5xgE9ec46DNexUUUm7jE rNZS/ii3w4xHbOxXHPLAZzWlWbAQ/iib5WzHaKuexyxP+FOO4mbFFFFaiCiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKAMy/bOr6bGBkgyOT6Dbj+tXazpyj+J4Uz88dqz49iwH+ NaNZS3GgooopDFoooouIKKKKLgFFFFFwCiiimAUUUUrgFFFFFwCiig0XAM0UlFAwqjYqrazqMn8S +XH+G3P9avVS0pQbjUpMDe1ztJHfCrinHcTNOiiitRBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFAGQMP4mmbb80dqqA+xYmtGqNsM6zqTkkkGNR7Dbn+pq9WT3GFKKSlpDCiii gAooooAKKKKYgooopgFFFFJgFFFFIYUlLSUAFFFFABVPRQfs9y2Swe6lYE+m7irlU9BJbRoHZdpc u+M9AWJFVHcTNKiiitBBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHgOq/ G7VdE8Y67pltoMN9Hb3sqFldw+EOznAPp+tWYP2jtPXC3vh28icfe8uZW/QgU/wH4U1bSviR4m1f UIo1iuml8t1kDZ8yQSfUcYr0uaOOSMiSJZFAztKg5pcqA4W3/aI8IyYEtlq8J9TDGR+j5/StS3+O vgObHmajcwf9dLSQ/wDoINNmk8NT5+2+F5uevmaI8v8A6CjVwevaV4V1H4i+GbKx0i3hsylxJexC ya3DKEyMqVUnGDS5UO56jb/FzwHc48vxHbD/AK6JJH/6EorUg8eeEbnHleJ9IJPY3kan8ic14n4Y 8C+HNZ8Q+KVudJ82K0vhDbW0czoUUZ3AEMPbrx+dc14w8GaRp/xG0PQtOSSK2v8AyfNUSFim+UoQ C3OQBS5EFz6kg1nS7rH2fUrObPTy51b+Rq8CCMjpXz7ffAnREEjQ67dRFQSFkVG/DtWRJ8IJLCLz bTxf5fIwBCVOSVAGQ/qwo5AufTNFfNqeAPH9pFG9p42li3sqKDfTxjJYgdM9SP1q0dC+Mmnvth8T NcEDPF0ZP/Q19qOUD6IoryH4Z6h8SpvFs9n4sed9NjtnYO8EYVpNygYdVBPBPftXr1JqwBRRRQAU UUVIAaSiuN8a/EzQfAlxa2+qLdTXFyu9YraMMVTONxyQMZz78UDOyoqjo+rWevaPa6pp8nmWt1GJ I2IwcehHYg8fhV6gBkz+VBJJx8qlufYVFoyhdFs9pypiVgfqM/1pNQYppl0ynBELkfkasWShLG3V RgCJQB+FVATJ6KKK0EFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVHO5jt5ZB 1VCR+AoA5DTTvkuZezMBn3Ax/QVdl8zyX8kKZdp2b+me2cdqp6UoSCZR0E8mPpmrN0oe1kRp2gDL jzUYAr7gnjNAGX9o8TJ10zSZR6rfyIfyMJ/nXm/iXxFb6d8WdMuPEgTTYIdMYExs0+dzMB91c849 K9HGi3wGYfE+p47Bkt3H/orP61xWnW9y/wAZdWW6uDevb6QkfmNCvO5lYKQBj8aAOf8ABXgXRfHs et6/fT3gkl1WcRSW8mzKHDZwR/tVlJ4attE+Ouk6TZ3F3cxQvHKXunDuPlL4yAOOle8WiR2trDDb wRqzIGKoAo6DJNeTaS39oftIalKVH+jwkYznBWJE/maAPWblnSGYx43maNVLDIySo5rNayvLh2jd rZtqgFVc4OMD69vStK6hZrK4jkhikjIYkM3XuOMVlrY26uEitJI1WTGEk28BsY4b/aX8qAFkint5 Zrl7GGREPmExyAlSCG7gehrbkjYusiEBwMYPQj0rBe3SVAx+1JuQgt5hbI29DyeMq1WNB8U6d4it 7uayFwq2j7JRNCUIOM96AIvAHj6z8XarqtjbWc8L2OA7uQVb5iOMc9q76vBv2b4zK3ie9frI8C/+ jCf5iveah7jCiiipuAUUUUrgJXDePPhfpPj66s7q9ubm1uLZTHvg2/OhOcHIPQ5wfc9a7qkoGZ+h 6NaeHtEs9JsQwtrSMRpuOWPqT7k5J+taFFFAGfrgLaJdqrMpZNoK9ck44rVAAAA4ArK1nJsBGoBa SaJRk4/jFa1XATCiiirEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAf//ZZW5kc3RyZWFtCmVuZG9iagozMCAwIG9iago0ODE4CmVuZG9iagozMSAwIG9iago8 PAovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL2ltNwovV2lkdGggNTc2Ci9I ZWlnaHQgMTkyCi9CaXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0RldmljZVJHQgovRmls dGVyIC9EQ1REZWNvZGUKL0xlbmd0aCAzMiAwIFIKPj4Kc3RyZWFtDQr/2P/gABBKRklGAAEBAAAB AAEAAP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicgIiwjHBwoNyks MDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAMACQAMBIgACEQEDEQH/xAAfAAABBQEB AQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYT UWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZX WFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE xcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAA AQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGh 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 t8RbDWdU8BarZ6C7rqMkaiMI+1mUMCyg9iVyPxrqaKAPH/gX4c8VaDb6p/bsNza2Uuz7Pb3D5O4F tzBc/L29M/hXsFFFD1AKKKKACiiii4BRRRRcAooopXAKKKKBhSUZooAKKKKQCU2TeImMYBfB2g9M 9qfSVIz53+Ht/wDEDV/iK9pr8d/cWWX+3R3iMI4OuCnZDnGNvUe1e6b9R0thtV7+zHVcgzIPbONw /WtOiq53e6FYLS+tr6LzLeUOBww6FT6EdRVism90uO6Jlidra7xhLmLhl+vqPY02PU7ixwmqRfIO PtUQyh/3h1X+VaRmnuKxsUU2ORJo1kidXjYZVlOQR6g06rEFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBkXGjNFMbnS5hbS k5aIjMUn1A6H3FEWphJRBfRG0mPC7zlH/wB1un4da16hurWC9t3t7mJZYnGGVhwaiUExpjWYKpZi AoGST2rB0fxt4a1/VJ9N0vWLe6vIAS8aZ5AOCVJGGHuM1JqGj3UemXVnbvJc2U8LxNAzYkQMCDsY 9evQ/nXmPwy+E48O+LzrcmriYWqukVt5RSVSwK/vBnAwCemRnvxUcttx3PaqKSlpAFFFFMAzS0lA oAWiiigAooooAKKKKdhBRRRQwCiiikAUUUUAFFFFABRRRQMSiiigApKWkqQCiiikMSilpKQBTSMj BGRTqSgDM/s2SylM+lusJP3rdh+6f8B90+4q1aawksot7uF7O6JwschBD+6sOD/P2qzUNzawXkDQ 3EYeNuoNONRoLXL9FYca6hpWRAxvbQdIXIEkY9Fb+Iex5960rHUbbUYi9u5JU4dGGGQ+hFbxkpbE tWLVFFFUIKKKKACiiigAooooAKKKKACiiigAooooA//ZZW5kc3RyZWFtCmVuZG9iagozMiAwIG9i ago4NDg1CmVuZG9iagozMyAwIG9iago8PAovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UK L05hbWUgL2ltOAovV2lkdGggNTc2Ci9IZWlnaHQgMTkyCi9CaXRzUGVyQ29tcG9uZW50IDgKL0Nv bG9yU3BhY2UgL0RldmljZVJHQgovRmlsdGVyIC9EQ1REZWNvZGUKL0xlbmd0aCAzNCAwIFIKPj4K c3RyZWFtDQr/2P/gABBKRklGAAEBAAABAAEAAP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRIT DxQdGh8eHRocHCAkLicgIiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIh HCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEI AMACQAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMD AgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUm JygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaX mJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4 +fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncA AQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6 Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeo qaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhED EQA/APf6KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqd5pltesHcNHMv3 Zojtdfx/oauUUAYvnX+mjF6hu4AeLiFPmUf7Sf1FX7e4huohLBKsiHoynNW6zZ9HiMzXFm7Wlyxy zxj5XP8AtL0P86hw7DuXKKzBqc1pJ5WqW5hHAFynMTfj1X8fzrTBDKGUggjII71GwwpRSUtABRRR QAUUUUxBRRRTAKKKKQBRRRSA8u+Nei+LNZ0Sxj8N+fJCkpN1b277Xfj5T1G4Dnj3B7cdP8OLHXNN 8Caba+IndtRRW3CR97qu47VZu5C4/l2rqqKd9LAFFFFIAooooASiiigYUlFFIAoopKkYtJRRSADS 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 RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFZd7owkdriwm+x3ZOTIgyr+zL0P161qUUmrgY66m1u4h1O H7M54EucxOfZu30OK0cgjIqSWKOeJopo1kjcYZHGQR6EVk/2Zc6aS+mP5kPe0lbgf7jfw/Q8VnKH YdyjaeOfDF94gbQrXWbaXUlJHkKTyR1AbG0kYPAOeDXQV4X4Q+D6ab8QINWfVWjgtZTPHZzxbLgn nAPJUj3BOR2GePdKiSS2GhKKKKkYUhpaSgBKKKWpY0JSUpqC6uI7S2knlbCIMmkBR1F2vblNJhPz SjdOwP8Aq4vf/ewR+dcX45+CGheJYnutHWLSdT67kX9zL7Mo6Z/vD8jXoGjWkkMEl1cLi6um8yQf 3R/Cv4D+taddNONkQ3c+YLXXvF/wyuodK8WWFxLpSsscUqAMu1efkfo3HYkGvRLHxDY+KSk+kXsd zAq7XgwAwY4ILA8jGDxxnnnkV6lf2FnqllLZ39tFc20ow8UyBlYe4NeHeKPgZqGjXZ1rwDqE0c6E t9jkk2sPZH4BH+y35mtBHbC0tVgdIg437UZSzAgHjp+ZrzPWbCLxL8edD0MDdb2io0y4GBtBlPT1 G0VZ0P4qNbagNK8a6a+m6hEcCdoSoGf7ynlc+oyD7CrPwZQeIfir4p8Sj54IlaOJv99/kP8A3xGf zoA9+ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAq32n22oxBLhCdpyjqcMp9Qaz/+JjpmfNDX9tnh0UCVB7jo31HPtW1RUuKYXKFtd295F5lvKsi9 DjqD6EdQfrU9VbnRoZJ3urV2tLpvvSxAYf8A3l6NVU6nLYyrDqkPlA8Lcx8xN9e6n68e9ZSg0Vc1 KSgEEZByDRUDENLQaQUmNBWVJbprWqJE4zaWMiyN6NMOQPwHX61Z1K7e1t1EKeZcSsI4U9WP9B1q 3pliNOsUt95kflpJD1dzySfxq6cbu4my3RRRXQQFFFFAHOeL/A2heNrAW2sWxZ0B8m4jO2WIn0P9 Dke1Z3w5+H0Pw+0/ULSO8N39qufNWRk2kIFAVSM8kfNz712lFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFNdEkQo6hlYYKsMg06igDHf SbizbfpU4SMHJtZeYz/unqv8valtNTjuZTBIj290vWGXg/Ueo+la9Vr2wtdQiEd1CsgB3KSOVPqD 2NZygnsO5FPPFa28lxcSpFDEpd5HbCqoGSST0FZeieKtC8SCY6PqlveeR/rRG3K+hIPOPfpVDxXo N7feGtQ0lpprqzu4TEZFUGaH0OON46ZHBPrXn/w5+GzeGNUnaPWor2a+iMEggQr5UAYM5bPIYkAD jjJ61nydx3PV9MQ6hqEupucwx5htV/H5n/Hp9BW1TIYY7eFIYlCxooVQOwFPraKsrEsKKKKoAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAqJbeBJ3nWFFmcANIFG5gOmTUtFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/9llbmRzdHJlYW0KZW5k b2JqCjM0IDAgb2JqCjYxOTIKZW5kb2JqCjM1IDAgb2JqCjw8Ci9GaWx0ZXIgL0ZsYXRlRGVjb2Rl Ci9MZW5ndGggMzYgMCBSCj4+CnN0cmVhbQ0KSIm1VktP20AQvvtXzBGkeLPvXXOqCInaClJaLE5c rGASozguSYD233cfXnuNq/TUS2BnvpnMfPPKZZ5MFwSIhvwp0QJhDUoIJCjkV3AG55A/JyRjiHPA kYhqhYaSlHKJMgkpxUjJoUIjzJ1C8thHLx8YTBe0jSeVHAnvsg1oNl/mP+a3374scx8azQZROFvh bKnEiGpIrSujJ1jCcu1AGJHMYFZw9uojxIhT9/4d9No9S/90/+/gvthBwBPpHeQRYt9UcHfcl+Vx ArebV1huXo3FVXU47quVkXW23vRzZDq7mbnXPDcZMUQoSEGQosAyYhlwH/sSnpLLPBGEI6kNgiPN B7mTkDvnzHKaElulITuOc4PBkApKLENWf1e8VdvtwddFRNW+r8rjro8cU+4CLqLga7g+PqKJkwj6 sVOmCwauMWxcSiFtS2JQbVV0B3KlNiBlk2MBcNyMvDCbdtohYLFtmn0oHBbEl3ISRQiLoGZc+9JW kfqxDGpvuop0DeTNe7n33qS0kDY7TdrpILatvfCBUumELkYni2OCyLEWMAoqbomiHqUUmy/Xm8q/ ObelHowiYYFnJw0teNIhmfwlnllfeSW97CZu29Osm94ZAY7xSLU5asPgMAEnsW3SZpCX2wt4ONPc NyjrGU+9pFtG+uHc+9BmRlsZ8xLR86QpO0lGRrE4CYCT2kXR8eaVv0bwi9hZl5lZWYr+18y4UMQ7 zno3oW3MBieya5t5XVSG9tYYA4H9GszKYMFsWxaHk4O1W49iQZF6s6pXn4ajd4gnwK0kdGI2a/S2 C3szo3aXmQk14ZmlabeQ3RBhadoEsE2AaGY5lsqtmyh502067rl+fWVuXyIloP+wVLABXb5ebHgm 7d3yAtFWCod6Tv+JGPlIR7uwS2v4vfO8r9gLEHMwMumQzLn3LCnGLAerGqZVTeCqge8Jga/G6hlc H75blswPAmIughm4OhGSRu9tcpe8gPQhCG19CSxttApnKKOtZ+o9X+b+OJPu/rSRK2yxkvJA/HWz Ko5V040QF5y3JzgkF2zcjeTCLltzyrpit2rzXe76+W65KX5+MMeZbedM9rZeQRm1f3gmEB06FoY5 Ez41NDI65PvF4j3HyvEafDmopyJzVPwBVzAIIWVuZHN0cmVhbQplbmRvYmoKMzYgMCBvYmoKODU2 CmVuZG9iagozNyAwIG9iago8PAovVHlwZSAvUGFnZQovUGFyZW50IDMgMCBSCi9NZWRpYUJveCBb MCAwIDYxMiA3OTJdCi9SZXNvdXJjZXMKPDwKL1Byb2NTZXQgWy9QREYvVGV4dC9JbWFnZUNdCi9G b250Cjw8Ci9GMSAxMyAwIFIKL0YyIDE0IDAgUgovRjMgMTUgMCBSCj4+Ci9YT2JqZWN0Cjw8Ci9p bTEgNyAwIFIKL2ltMiA5IDAgUgovaW05IDM4IDAgUgo+Pgo+PgovQ29udGVudHMgMzUgMCBSCj4+ CmVuZG9iagozOCAwIG9iago8PAovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUg L2ltOQovV2lkdGggNTk0Ci9IZWlnaHQgNDQ4Ci9CaXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3Bh Y2UgL0RldmljZVJHQgovRmlsdGVyIC9EQ1REZWNvZGUKL0xlbmd0aCAzOSAwIFIKPj4Kc3RyZWFt DQr/2P/gABBKRklGAAEBAAABAAEAAP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8e HRocHCAkLicgIiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAcACUgMB IgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUE BAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1 Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOk paanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAf AQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQF ITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdI SUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1 tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APZ/ 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 Jznt9KzIfBWmxRorz37zQgRrM1x+8RUR4lUEAYADtjHc5OatqL94SvsSJ4us5IrKSOx1KQXkxgi2 QA/OATjIbHQE5BIwOvaobbx3ol1JsV7mPLKoaSIYOXKbuCcDcO+D3xV2w8MWGnJAImndobw3wd2G WlKFMkAAYwegA9arQ+CdFtzH5UUqBShdQ4xMUcupkGPmILMM+hxU+6Gor+MLNNNOoHT9W+z5j2t9 lxvWThHGTyCcD1GRkDNX9S1uC11vT7WW1vg9xBHFHiAlUdtzFXIPykBcn2FQ2nhOxW0OnGe9lglM KgS3Bfy0jYMir6AY+p7mrslrDd6y+pvuMsUkqRc/KAQqE49cJ+p9apWUWGty3RRRWYwooooAKKKK AEIBUggEHqDT47ma3Qp5Quo/4Ed8bPxINNopqTWwNXHPqF2w/d2NrF7+dn/2Si1udQSdri6uoxaw o0kiKgPAHrgU2kvP+PaC073L+ZJ/1zTB/U7R9Ca1jOTZLSK9rCfJEsqn7RKTLI+fmDH39hgfhWlb 3+2IQ34Mq/8APbGfzA6fXmq1Ub/UDbEQwqHuXGQD91B/eb29B3x+NFFVJz5Yatim4xjzSNwWlqw3 LcREHkHd/wDXorhW02ORzJJNcM7HLMHxknqcDpRXq/2XDuvxOD69HzP/2WVuZHN0cmVhbQplbmRv YmoKMzkgMCBvYmoKNjU4NzYKZW5kb2JqCjEzIDAgb2JqCjw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBl IC9UcnVlVHlwZQovTmFtZSAvRjEKL0Jhc2VGb250IC9UaW1lc05ld1JvbWFuLEJvbGQKL0ZpcnN0 Q2hhciAzMgovTGFzdENoYXIgMjU1Ci9XaWR0aHMgWzI1MCAzMzMgNTU1IDUwMCA1MDAgMTAwMCA4 MzMgMjc4IDMzMyAzMzMgNTAwIDU3MCAyNTAgMzMzIDI1MCAyNzgKNTAwIDUwMCA1MDAgNTAwIDUw MCA1MDAgNTAwIDUwMCA1MDAgNTAwIDMzMyAzMzMgNTcwIDU3MCA1NzAgNTAwCjkzMCA3MjIgNjY3 IDcyMiA3MjIgNjY3IDYxMSA3NzggNzc4IDM4OSA1MDAgNzc4IDY2NyA5NDQgNzIyIDc3OAo2MTEg Nzc4IDcyMiA1NTYgNjY3IDcyMiA3MjIgMTAwMCA3MjIgNzIyIDY2NyAzMzMgMjc4IDMzMyA1ODEg NTAwCjMzMyA1MDAgNTU2IDQ0NCA1NTYgNDQ0IDMzMyA1MDAgNTU2IDI3OCAzMzMgNTU2IDI3OCA4 MzMgNTU2IDUwMAo1NTYgNTU2IDQ0NCAzODkgMzMzIDU1NiA1MDAgNzIyIDUwMCA1MDAgNDQ0IDM5 NCAyMjAgMzk0IDUyMCA3NzgKNTAwIDc3OCAzMzMgNTAwIDUwMCAxMDAwIDUwMCA1MDAgMzMzIDEw MDAgNTU2IDMzMyAxMDAwIDc3OCA2NjcgNzc4Cjc3OCAzMzMgMzMzIDUwMCA1MDAgMzUwIDUwMCAx MDAwIDMzMyAxMDAwIDM4OSAzMzMgNzIyIDc3OCA0NDQgNzIyCjI1MCAzMzMgNTAwIDUwMCA1MDAg NTAwIDIyMCA1MDAgMzMzIDc0NyAzMDAgNTAwIDU3MCAzMzMgNzQ3IDUwMAo0MDAgNTQ5IDMwMCAz MDAgMzMzIDU3NiA1NDAgMjUwIDMzMyAzMDAgMzMwIDUwMCA3NTAgNzUwIDc1MCA1MDAKNzIyIDcy MiA3MjIgNzIyIDcyMiA3MjIgMTAwMCA3MjIgNjY3IDY2NyA2NjcgNjY3IDM4OSAzODkgMzg5IDM4 OQo3MjIgNzIyIDc3OCA3NzggNzc4IDc3OCA3NzggNTcwIDc3OCA3MjIgNzIyIDcyMiA3MjIgNzIy IDYxMSA1NTYKNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNzIyIDQ0NCA0NDQgNDQ0IDQ0NCA0NDQg Mjc4IDI3OCAyNzggMjc4CjUwMCA1NTYgNTAwIDUwMCA1MDAgNTAwIDUwMCA1NDkgNTAwIDU1NiA1 NTYgNTU2IDU1NiA1MDAgNTU2IDUwMF0KL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKL0ZvbnRE ZXNjcmlwdG9yIDQwIDAgUgo+PgplbmRvYmoKNDAgMCBvYmoKPDwKL1R5cGUgL0ZvbnREZXNjcmlw dG9yCi9Gb250TmFtZSAvVGltZXNOZXdSb21hbixCb2xkCi9GbGFncyAzNAovRm9udEJCb3ggWy01 NTggLTMwNyAyMDAwIDEwMjZdCi9TdGVtViAxMTAKL0l0YWxpY0FuZ2xlIDAKL0NhcEhlaWdodCA4 OTEKL0FzY2VudCA4OTEKL0Rlc2NlbnQgLTIxNgo+PgplbmRvYmoKMTQgMCBvYmoKPDwKL1R5cGUg L0ZvbnQKL1N1YnR5cGUgL1RydWVUeXBlCi9OYW1lIC9GMgovQmFzZUZvbnQgL0FyaWFsLEJvbGQK L0ZpcnN0Q2hhciAzMgovTGFzdENoYXIgMjU1Ci9XaWR0aHMgWzI3OCAzMzMgNDc0IDU1NiA1NTYg ODg5IDcyMiAyMzggMzMzIDMzMyAzODkgNTg0IDI3OCAzMzMgMjc4IDI3OAo1NTYgNTU2IDU1NiA1 NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgMzMzIDMzMyA1ODQgNTg0IDU4NCA2MTEKOTc1IDcy MiA3MjIgNzIyIDcyMiA2NjcgNjExIDc3OCA3MjIgMjc4IDU1NiA3MjIgNjExIDgzMyA3MjIgNzc4 CjY2NyA3NzggNzIyIDY2NyA2MTEgNzIyIDY2NyA5NDQgNjY3IDY2NyA2MTEgMzMzIDI3OCAzMzMg NTg0IDU1NgozMzMgNTU2IDYxMSA1NTYgNjExIDU1NiAzMzMgNjExIDYxMSAyNzggMjc4IDU1NiAy NzggODg5IDYxMSA2MTEKNjExIDYxMSAzODkgNTU2IDMzMyA2MTEgNTU2IDc3OCA1NTYgNTU2IDUw MCAzODkgMjgwIDM4OSA1ODQgNzUwCjU1NiA3NTAgMjc4IDU1NiA1MDAgMTAwMCA1NTYgNTU2IDMz MyAxMDAwIDY2NyAzMzMgMTAwMCA3NTAgNjExIDc1MAo3NTAgMjc4IDI3OCA1MDAgNTAwIDM1MCA1 NTYgMTAwMCAzMzMgMTAwMCA1NTYgMzMzIDk0NCA3NTAgNTAwIDY2NwoyNzggMzMzIDU1NiA1NTYg NTU2IDU1NiAyODAgNTU2IDMzMyA3MzcgMzcwIDU1NiA1ODQgMzMzIDczNyA1NTIKNDAwIDU0OSAz MzMgMzMzIDMzMyA1NzYgNTU2IDI3OCAzMzMgMzMzIDM2NSA1NTYgODM0IDgzNCA4MzQgNjExCjcy MiA3MjIgNzIyIDcyMiA3MjIgNzIyIDEwMDAgNzIyIDY2NyA2NjcgNjY3IDY2NyAyNzggMjc4IDI3 OCAyNzgKNzIyIDcyMiA3NzggNzc4IDc3OCA3NzggNzc4IDU4NCA3NzggNzIyIDcyMiA3MjIgNzIy IDY2NyA2NjcgNjExCjU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDg4OSA1NTYgNTU2IDU1NiA1NTYg NTU2IDI3OCAyNzggMjc4IDI3OAo2MTEgNjExIDYxMSA2MTEgNjExIDYxMSA2MTEgNTQ5IDYxMSA2 MTEgNjExIDYxMSA2MTEgNTU2IDYxMSA1NTZdCi9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nCi9G b250RGVzY3JpcHRvciA0MSAwIFIKPj4KZW5kb2JqCjQxIDAgb2JqCjw8Ci9UeXBlIC9Gb250RGVz Y3JpcHRvcgovRm9udE5hbWUgL0FyaWFsLEJvbGQKL0ZsYWdzIDMyCi9Gb250QkJveCBbLTYyOCAt Mzc2IDIwMDAgMTAxMF0KL1N0ZW1WIDExOQovSXRhbGljQW5nbGUgMAovQ2FwSGVpZ2h0IDkwNQov QXNjZW50IDkwNQovRGVzY2VudCAtMjEyCj4+CmVuZG9iagoxNSAwIG9iago8PAovVHlwZSAvRm9u dAovU3VidHlwZSAvVHJ1ZVR5cGUKL05hbWUgL0YzCi9CYXNlRm9udCAvQXJpYWwKL0ZpcnN0Q2hh ciAzMgovTGFzdENoYXIgMjU1Ci9XaWR0aHMgWzI3OCAyNzggMzU1IDU1NiA1NTYgODg5IDY2NyAx OTEgMzMzIDMzMyAzODkgNTg0IDI3OCAzMzMgMjc4IDI3OAo1NTYgNTU2IDU1NiA1NTYgNTU2IDU1 NiA1NTYgNTU2IDU1NiA1NTYgMjc4IDI3OCA1ODQgNTg0IDU4NCA1NTYKMTAxNSA2NjcgNjY3IDcy MiA3MjIgNjY3IDYxMSA3NzggNzIyIDI3OCA1MDAgNjY3IDU1NiA4MzMgNzIyIDc3OAo2NjcgNzc4 IDcyMiA2NjcgNjExIDcyMiA2NjcgOTQ0IDY2NyA2NjcgNjExIDI3OCAyNzggMjc4IDQ2OSA1NTYK MzMzIDU1NiA1NTYgNTAwIDU1NiA1NTYgMjc4IDU1NiA1NTYgMjIyIDIyMiA1MDAgMjIyIDgzMyA1 NTYgNTU2CjU1NiA1NTYgMzMzIDUwMCAyNzggNTU2IDUwMCA3MjIgNTAwIDUwMCA1MDAgMzM0IDI2 MCAzMzQgNTg0IDc1MAo1NTYgNzUwIDIyMiA1NTYgMzMzIDEwMDAgNTU2IDU1NiAzMzMgMTAwMCA2 NjcgMzMzIDEwMDAgNzUwIDYxMSA3NTAKNzUwIDIyMiAyMjIgMzMzIDMzMyAzNTAgNTU2IDEwMDAg MzMzIDEwMDAgNTAwIDMzMyA5NDQgNzUwIDUwMCA2NjcKMjc4IDMzMyA1NTYgNTU2IDU1NiA1NTYg MjYwIDU1NiAzMzMgNzM3IDM3MCA1NTYgNTg0IDMzMyA3MzcgNTUyCjQwMCA1NDkgMzMzIDMzMyAz MzMgNTc2IDUzNyAyNzggMzMzIDMzMyAzNjUgNTU2IDgzNCA4MzQgODM0IDYxMQo2NjcgNjY3IDY2 NyA2NjcgNjY3IDY2NyAxMDAwIDcyMiA2NjcgNjY3IDY2NyA2NjcgMjc4IDI3OCAyNzggMjc4Cjcy MiA3MjIgNzc4IDc3OCA3NzggNzc4IDc3OCA1ODQgNzc4IDcyMiA3MjIgNzIyIDcyMiA2NjcgNjY3 IDYxMQo1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA4ODkgNTAwIDU1NiA1NTYgNTU2IDU1NiAyNzgg Mjc4IDI3OCAyNzgKNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU0OSA2MTEgNTU2IDU1NiA1 NTYgNTU2IDUwMCA1NTYgNTAwXQovRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwovRm9udERlc2Ny aXB0b3IgNDIgMCBSCj4+CmVuZG9iago0MiAwIG9iago8PAovVHlwZSAvRm9udERlc2NyaXB0b3IK L0ZvbnROYW1lIC9BcmlhbAovRmxhZ3MgMzIKL0ZvbnRCQm94IFstNjY1IC0zMjUgMjAwMCAxMDA2 XQovU3RlbVYgOTUKL0l0YWxpY0FuZ2xlIDAKL0NhcEhlaWdodCA5MDUKL0FzY2VudCA5MDUKL0Rl c2NlbnQgLTIxMgo+PgplbmRvYmoKMyAwIG9iago8PAovVHlwZSAvUGFnZXMKL0NvdW50IDUKL0tp ZHMgWzYgMCBSIDE4IDAgUiAyMSAwIFIgMjggMCBSIDM3IDAgUl0KPj4KZW5kb2JqCjIgMCBvYmoK PDwKL1R5cGUgL0NhdGFsb2cKL1BhZ2VzIDMgMCBSCj4+CmVuZG9iagp4cmVmCjAgNDMKMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDE2IDAwMDAwIG4NCjAwMDAyMTc3ODkgMDAwMDAgbg0KMDAw MDIxNzcwNCAwMDAwMCBuDQowMDAwMDAwMjM5IDAwMDAwIG4NCjAwMDAwMDE0ODUgMDAwMDAgbg0K MDAwMDAwMTUwNSAwMDAwMCBuDQowMDAwMDAxNzMxIDAwMDAwIG4NCjAwMDAwMDQ1MjkgMDAwMDAg bg0KMDAwMDAwNDU0OSAwMDAwMCBuDQowMDAwMDA2MzE1IDAwMDAwIG4NCjAwMDAwMDYzMzYgMDAw MDAgbg0KMDAwMDA5NDUwOCAwMDAwMCBuDQowMDAwMjEzOTQ2IDAwMDAwIG4NCjAwMDAyMTUyMTQg MDAwMDAgbg0KMDAwMDIxNjQ2NCAwMDAwMCBuDQowMDAwMDk0NTMwIDAwMDAwIG4NCjAwMDAwOTYx OTcgMDAwMDAgbg0KMDAwMDA5NjIxOCAwMDAwMCBuDQowMDAwMDk2NDM0IDAwMDAwIG4NCjAwMDAw OTc0NjggMDAwMDAgbg0KMDAwMDA5NzQ4OCAwMDAwMCBuDQowMDAwMDk3NzI4IDAwMDAwIG4NCjAw MDAxMTI1MzIgMDAwMDAgbg0KMDAwMDExMjU1NCAwMDAwMCBuDQowMDAwMTI1MjgyIDAwMDAwIG4N CjAwMDAxMjUzMDQgMDAwMDAgbg0KMDAwMDEyNjMxMCAwMDAwMCBuDQowMDAwMTI2MzMwIDAwMDAw IG4NCjAwMDAxMjY1ODIgMDAwMDAgbg0KMDAwMDEzMTU4MiAwMDAwMCBuDQowMDAwMTMxNjAzIDAw MDAwIG4NCjAwMDAxNDAyNzAgMDAwMDAgbg0KMDAwMDE0MDI5MSAwMDAwMCBuDQowMDAwMTQ2NjY1 IDAwMDAwIG4NCjAwMDAxNDY2ODYgMDAwMDAgbg0KMDAwMDE0NzYxOCAwMDAwMCBuDQowMDAwMTQ3 NjM4IDAwMDAwIG4NCjAwMDAxNDc4NjYgMDAwMDAgbg0KMDAwMDIxMzkyNCAwMDAwMCBuDQowMDAw MjE1MDMxIDAwMDAwIG4NCjAwMDAyMTYyODkgMDAwMDAgbg0KMDAwMDIxNzUzNSAwMDAwMCBuDQp0 cmFpbGVyCjw8Ci9TaXplIDQzCi9JbmZvIDEgMCBSCi9Sb290IDIgMCBSCi9JRCBbPDc2NTY4NUQz QkJENUFEOTUwQTg2MzM1RjFGQTU2MjlGPjw3NjU2ODVEM0JCRDVBRDk1MEE4NjMzNUYxRkE1NjI5 Rj5dCj4+CnN0YXJ0eHJlZgoyMTc4MzgKJSVFT0YK ------_=_NextPart_001_01C95903.D131CE5F Content-Type: application/octet-stream; name="CP_High-LowRise_8Tenants_Mixed.pdf" Content-Transfer-Encoding: base64 Content-Description: CP_High-LowRise_8Tenants_Mixed.pdf Content-Disposition: attachment; filename="CP_High-LowRise_8Tenants_Mixed.pdf" JVBERi0xLjQNICAgICAgDTMgMCBvYmogPDwvTGluZWFyaXplZCAxL08gNS9IIFsgNjY3IDEyNl0v TCAxMzY5MjYzL0UgMTM2ODY2OC9OIDEvVCAxMzY5MDkwPj4NZW5kb2JqDSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IA14cmVmDTMgNiANMDAwMDAwMDAxNiAwMDAwMCBuDQowMDAwMDAwNTA4IDAwMDAwIG4NCjAwMDAw MDA3OTMgMDAwMDAgbg0KMDAwMDAwMDk0MyAwMDAwMCBuDQowMDAwMDAxMDQ4IDAwMDAwIG4NCjAw MDAwMDA2NjcgMDAwMDAgbg0KdHJhaWxlcjw8L1Jvb3QgNCAwIFIvSW5mbyAxIDAgUi9TaXplIDkv UHJldiAxMzY5MDgyL0lEWzw2MzRkMDVlMmY2MTQ5Mjg5OGU4MGUyMGIxYTQzYjk2ND48ZTE1YmM2 NDA4NjVhOTYxZTc0ZDZmYTFhYzRiOTAzZGI+XQ0+Pg1zdGFydHhyZWYNMA0lJUVPRg0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDTQgMCBv Ymo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvUGFnZU1vZGUvVXNlTm9uZS9QYWdlTGF5b3V0 L09uZUNvbHVtbi9WaWV3ZXJQcmVmZXJlbmNlczw8L0hpZGVUb29sYmFyIGZhbHNlL0hpZGVNZW51 YmFyIGZhbHNlL0hpZGVXaW5kb3dVSSBmYWxzZT4+Pj4NZW5kb2JqDTggMCBvYmo8PC9QIDAvUyA0 MC9MZW5ndGggNTAvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCnicY2BgYGZgYJrNwMAgct+Z ARUwMzAxsDBwJKCLQjADQyaDKANjBgOD5u5tDACRJQTPDQplbmRzdHJlYW0NZW5kb2JqDTUgMCBv Ymo8PC9UeXBlL1BhZ2UvTWVkaWFCb3hbMCAwIDEyMTcgODYxXS9QYXJlbnQgMiAwIFIvUmVzb3Vy Y2VzPDwvWE9iamVjdDw8L0ltYWdlMCA3IDAgUj4+Pj4vQ29udGVudHMgNiAwIFIvQ3JvcEJveFsw IDAgMTIxNyA4NjFdL1JvdGF0ZSAwPj4NZW5kb2JqDTYgMCBvYmo8PC9GaWx0ZXIvRmxhdGVEZWNv ZGUvTGVuZ3RoIDM4Pj5zdHJlYW0NCnicK+QyNDI0VzAAQgszQzCdnMuloO+Zm5ieaqDgks8VCACA 6gfQDQplbmRzdHJlYW0NZW5kb2JqDTcgMCBvYmo8PC9GaWx0ZXIvRENURGVjb2RlL1R5cGUvWE9i amVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDI0MzQvSGVpZ2h0IDE3MjMvQml0c1BlckNvbXBvbmVu dCA4L0NvbG9yU3BhY2UvRGV2aWNlUkdCL0xlbmd0aCAxMzY3NDYwPj5zdHJlYW0NCv/Y/+AAEEpG SUYAAQIBAJYAlgAA/+EWlkV4aWYAAE1NACoAAAAIAAgBEgADAAAAAQABAAABGgAFAAAAAQAAAG4B GwAFAAAAAQAAAHYBKAADAAAAAQACAAABMQACAAAAHAAAAH4BMgACAAAAFAAAAJoBOwACAAAABwAA AK6HaQAEAAAAAQAAALgAAADkABbjYAAAJxAAFuNgAAAnEEFkb2JlIFBob3Rvc2hvcCBDUzIgV2lu ZG93cwAyMDA3OjEyOjE4IDIwOjU5OjI0AERpeG9ucwAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAAB AAAJgqADAAQAAAABAAAGuwAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEyARsABQAAAAEA AAE6ASgAAwAAAAEAAgAAAgEABAAAAAEAAAFCAgIABAAAAAEAABVMAAAAAAAAAEgAAAABAAAASAAA AAH/2P/gABBKRklGAAECAABIAEgAAP/tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQA DAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwM DAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAwM/8AAEQgAcQCgAwEiAAIRAQMRAf/dAAQACv/EAT8AAAEFAQEBAQEBAAAA AAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcG 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 L2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAA AAEALQAAAAYAAAAAAAE4QklNA/gAAAAAAHAAAP////////////////////////////8D6AAAAAD/ ////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP// //////////////////////////8D6AAAOEJJTQQAAAAAAAACAAE4QklNBAIAAAAAAAQAAAAAOEJJ TQQwAAAAAAACAQE4QklNBC0AAAAAAAYAAQAAAAY4QklNBAgAAAAAABAAAAABAAACQAAAAkAAAAAA OEJJTQQeAAAAAAAEAAAAADhCSU0EGgAAAAADiQAAAAYAAAAAAAAAAAAABrsAAAmCAAAAKgAwADYA MAAxADAAIABTAHAAYQBjAGUAIABQAGwAYQBuAG4AaQBuAGcAIABNAFQALQA5ADAALQAxADIAMABE AGUAcwBrACAAUAAtAEwAZQB2AC0AVAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAJ ggAABrsAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAG51bGwA AAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExl ZnRsb25nAAAAAAAAAABCdG9tbG9uZwAABrsAAAAAUmdodGxvbmcAAAmCAAAABnNsaWNlc1ZsTHMA AAABT2JqYwAAAAEAAAAAAAVzbGljZQAAABIAAAAHc2xpY2VJRGxvbmcAAAAAAAAAB2dyb3VwSURs b25nAAAAAAAAAAZvcmlnaW5lbnVtAAAADEVTbGljZU9yaWdpbgAAAA1hdXRvR2VuZXJhdGVkAAAA AFR5cGVlbnVtAAAACkVTbGljZVR5cGUAAAAASW1nIAAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJj dDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAAa7AAAA AFJnaHRsb25nAAAJggAAAAN1cmxURVhUAAAAAQAAAAAAAG51bGxURVhUAAAAAQAAAAAAAE1zZ2VU RVhUAAAAAQAAAAAABmFsdFRhZ1RFWFQAAAABAAAAAAAOY2VsbFRleHRJc0hUTUxib29sAQAAAAhj ZWxsVGV4dFRFWFQAAAABAAAAAAAJaG9yekFsaWduZW51bQAAAA9FU2xpY2VIb3J6QWxpZ24AAAAH ZGVmYXVsdAAAAAl2ZXJ0QWxpZ25lbnVtAAAAD0VTbGljZVZlcnRBbGlnbgAAAAdkZWZhdWx0AAAA C2JnQ29sb3JUeXBlZW51bQAAABFFU2xpY2VCR0NvbG9yVHlwZQAAAABOb25lAAAACXRvcE91dHNl dGxvbmcAAAAAAAAACmxlZnRPdXRzZXRsb25nAAAAAAAAAAxib3R0b21PdXRzZXRsb25nAAAAAAAA AAtyaWdodE91dHNldGxvbmcAAAAAADhCSU0EKAAAAAAADAAAAAE/8AAAAAAAADhCSU0EFAAAAAAA BAAAAAY4QklNBAwAAAAAFWgAAAABAAAAoAAAAHEAAAHgAADT4AAAFUwAGAAB/9j/4AAQSkZJRgAB AgAASABIAAD/7QAMQWRvYmVfQ00AAf/uAA5BZG9iZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoL ERUPDAwPFRgTExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4N EA4OEBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM DP/AABEIAHEAoAMBIgACEQEDEQH/3QAEAAr/xAE/AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJ CgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUHBggFAwwzAQACEQMEIRIx BUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNUZEXCo3Q2F9JV4mXy s4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3EQACAgECBAQD BAUGBwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNTFWNzNPElBhaisoMH JjXC0kSTVKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2JzdHV2d3 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 sO0jThvpMRCyx9UF3pWEauYd0f1fUbt/zmJKSJKvj2B/577ASYL2lhEBvtjZWjx8fvSUukgmm3fu F743A7IZEfuTs3/9JZ5yM8fSdaGuB2kVtJH7m/2eTv8AhElOsmg/vH8FXwrHWVltji+xn0nFjmSD qz6ba/zfpbEfaPE/eUlLwf3j+CaD+8fwS2jxP3lM5rgPZ9L+UTCSljY0P9MuO6N0RwPF2ntTktDC 4u9oBJOnAVO7Ev8AVe9rrCH6h1ZYDw1m2xlm1vs2fo3VP/wln/GKvWbrH5bGPiqphF79C42HfZ6I j9Ez0KfTrsd+l/R2M/SerUkyDHex0ABJf//W9KHA+CS+YEklP0+kvmBJJT9PpL5gSSU/T6S+YEkl P0+kvmBJJT9RWfwCgvmBJJT9Pore6+W0klP1FZ2+aYcL5eSSU/USBm/0Wz4D8oXzIkkuh88fMP0O OQh4v80z/jH/APn1y+fEkm/+j9R/3T//2ThCSU0EIQAAAAAAVQAAAAEBAAAADwBBAGQAbwBiAGUA IABQAGgAbwB0AG8AcwBoAG8AcAAAABMAQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAIABD AFMAMgAAAAEAOEJJTQ+gAAAAAAD4bWFuaUlSRlIAAADsOEJJTUFuRHMAAADMAAAAEAAAAAEAAAAA AABudWxsAAAAAwAAAABBRlN0bG9uZwAAAAAAAAAARnJJblZsTHMAAAABT2JqYwAAAAEAAAAAAABu dWxsAAAAAQAAAABGcklEbG9uZzR2mPMAAAAARlN0c1ZsTHMAAAABT2JqYwAAAAEAAAAAAABudWxs AAAABAAAAABGc0lEbG9uZwAAAAAAAAAAQUZybWxvbmcAAAAAAAAAAEZzRnJWbExzAAAAAWxvbmc0 dpjzAAAAAExDbnRsb25nAAAAAAAAOEJJTVJvbGwAAAAIAAAAAAAAAAA4QklND6EAAAAAABxtZnJp AAAAAgAAABAAAAABAAAAAAAAAAEAAAAAOEJJTQQGAAAAAAAHAAgAAAABAQD/4T0SaHR0cDovL25z LmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlI enJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4Onht cHRrPSIzLjEuMS0xMTIiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3Jn LzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjph Ym91dD0iIgogICAgICAgICAgICB4bWxuczpwZGY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGRmLzEu My8iPgogICAgICAgICA8cGRmOlByb2R1Y2VyPkFkb2JlIFBob3Rvc2hvcCBmb3IgV2luZG93cyAt LSBJbWFnZSBDb252ZXJzaW9uIFBsdWctaW48L3BkZjpQcm9kdWNlcj4KICAgICAgPC9yZGY6RGVz Y3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAg IHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6 Q3JlYXRvclRvb2w+QWRvYmUgUGhvdG9zaG9wIENTMiBXaW5kb3dzPC94YXA6Q3JlYXRvclRvb2w+ CiAgICAgICAgIDx4YXA6TW9kaWZ5RGF0ZT4yMDA3LTEyLTE4VDIwOjU5OjI0KzA3OjAwPC94YXA6 TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhhcDpDcmVhdGVEYXRlPjIwMDctMTItMThUMjA6NTk6MjQr MDc6MDA8L3hhcDpDcmVhdGVEYXRlPgogICAgICAgICA8eGFwOk1ldGFkYXRhRGF0ZT4yMDA3LTEy LTE4VDIwOjU5OjI0KzA3OjAwPC94YXA6TWV0YWRhdGFEYXRlPgogICAgICA8L3JkZjpEZXNjcmlw dGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1s bnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZv cm1hdD5pbWFnZS9qcGVnPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxkYzp0aXRsZT4KICAgICAgICAg ICAgPHJkZjpBbHQ+CiAgICAgICAgICAgICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+ UDpcMDAgUFJPSkVDVFMgKFApXFAtMDEgQ1VSUkVOVFwwNjAxMCBCSU5BUlkgQ0VOVFJFXENBRFww MSBBVVRPQ0FEXDEuMDIgVGl0bGUgU2hlZXRcMS4yLjEgQ3VycmVudFwwNjAxMCBTcGFjZSBQbGFu bmluZyBNVC05MC0xMjwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpBbHQ+CiAgICAgICAgIDwv ZGM6dGl0bGU+CiAgICAgICAgIDxkYzpjcmVhdG9yPgogICAgICAgICAgICA8cmRmOlNlcT4KICAg ICAgICAgICAgICAgPHJkZjpsaT5EaXhvbnM8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2Vx PgogICAgICAgICA8L2RjOmNyZWF0b3I+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8 cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXBNTT0iaHR0 cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0 dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiPgogICAgICAgICA8 eGFwTU06RG9jdW1lbnRJRD51dWlkOkE5QzI2RUVBNzBBRERDMTE5QTk1QTc5MDI3NEFCNTRGPC94 YXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eGFwTU06SW5zdGFuY2VJRD51dWlkOkFBQzI2RUVB NzBBRERDMTE5QTk1QTc5MDI3NEFCNTRGPC94YXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eGFw TU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RS ZWY6aW5zdGFuY2VJRD51dWlkOjVBNUNCMTM4QjVBOERDMTE4OUIxQURERkQ3Q0FBRjUxPC9zdFJl ZjppbnN0YW5jZUlEPgogICAgICAgICAgICA8c3RSZWY6ZG9jdW1lbnRJRD51dWlkOjU5NUNCMTM4 QjVBOERDMTE4OUIxQURERkQ3Q0FBRjUxPC9zdFJlZjpkb2N1bWVudElEPgogICAgICAgICA8L3hh cE1NOkRlcml2ZWRGcm9tPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNj cmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFk b2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9y aWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj4xNTAwMDAwLzEwMDAwPC90aWZm OlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj4xNTAwMDAwLzEwMDAwPC90 aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJl c29sdXRpb25Vbml0PgogICAgICAgICA8dGlmZjpOYXRpdmVEaWdlc3Q+MjU2LDI1NywyNTgsMjU5 LDI2MiwyNzQsMjc3LDI4NCw1MzAsNTMxLDI4MiwyODMsMjk2LDMwMSwzMTgsMzE5LDUyOSw1MzIs MzA2LDI3MCwyNzEsMjcyLDMwNSwzMTUsMzM0MzI7QTNDNEUyNzU2MTVGQzhDN0M2QzkyRUM5ODU3 MTVCRDE8L3RpZmY6TmF0aXZlRGlnZXN0PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAg PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0 cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNp b24+MjQzNDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVu c2lvbj4xNzIzPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFj ZT4xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOk5hdGl2ZURpZ2VzdD4zNjg2NCw0 MDk2MCw0MDk2MSwzNzEyMSwzNzEyMiw0MDk2Miw0MDk2MywzNzUxMCw0MDk2NCwzNjg2NywzNjg2 OCwzMzQzNCwzMzQzNywzNDg1MCwzNDg1MiwzNDg1NSwzNDg1NiwzNzM3NywzNzM3OCwzNzM3OSwz NzM4MCwzNzM4MSwzNzM4MiwzNzM4MywzNzM4NCwzNzM4NSwzNzM4NiwzNzM5Niw0MTQ4Myw0MTQ4 NCw0MTQ4Niw0MTQ4Nyw0MTQ4OCw0MTQ5Miw0MTQ5Myw0MTQ5NSw0MTcyOCw0MTcyOSw0MTczMCw0 MTk4NSw0MTk4Niw0MTk4Nyw0MTk4OCw0MTk4OSw0MTk5MCw0MTk5MSw0MTk5Miw0MTk5Myw0MTk5 NCw0MTk5NSw0MTk5Niw0MjAxNiwwLDIsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYs MTcsMTgsMjAsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMzA7RjJGQzQyQTVFQjA3RkVDNjRFNTVCQUVF NjA4QkVEMzA8L2V4aWY6TmF0aXZlRGlnZXN0PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAg ICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6cGhvdG9z aG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIj4KICAgICAgICAgPHBob3Rv c2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHBob3Rvc2hv cDpJQ0NQcm9maWxlPnNSR0IgSUVDNjE5NjYtMi4xPC9waG90b3Nob3A6SUNDUHJvZmlsZT4KICAg ICAgICAgPHBob3Rvc2hvcDpIaXN0b3J5Lz4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwv cmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9 InciPz7/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAx AABhY3NwTVNGVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNkZXNj AAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFlaAAACLAAAABRi WFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAADTAAAAIZ2aWV3AAAD1AAA ACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAAAAxyVFJDAAAEPAAACAxnVFJDAAAE PAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHlyaWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2th cmQgQ29tcGFueQAAZGVzYwAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdC IElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAWFlaIAAAAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABv ogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAA AAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5j aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAA AC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAA AC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAA AAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElF QzYxOTY2LTIuMQAAAAAAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2 MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPt zAAEEwsAA1yeAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAA AAAAAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAoAC0A MgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQAqQCuALIAtwC8 AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEyATgBPgFFAUwBUgFZAWAB ZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJL AlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3ID fgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTw BP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8G wAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjS COcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkL UQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3DDd4N+A4T Di4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4QmxC5ENcQ9RETETER TxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTO FPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y 1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0e HUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h +yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcY J0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs 1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMymzLU Mw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQOIw4yDkFOUI5 fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0Bk QKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BI BUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/d UCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9Y fVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFP YaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q 92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTM dSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7CfyN/ hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gEiGmIzokziZmJ/opk isqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLjk02TtpQglIqU9JVflcmW NJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqIm opajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGv Fq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7wh vJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnK OMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk 2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/n qegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0wvVQ9d72bfb7 94r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t////7gAOQWRvYmUAZEAAAAAB/9sAhAABAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgEBAQEBAQICAgICAgICAgICAgICAwMDAwMDAwMDAwMD AwMDAQEBAQEBAQIBAQIDAgICAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD AwMDAwMDAwMDAwP/wAARCAa7CYIDAREAAhEBAxEB/90ABAEx/8QBogAAAAYCAwEAAAAAAAAAAAAA BwgGBQQJAwoCAQALAQAABgMBAQEAAAAAAAAAAAAGBQQDBwIIAQkACgsQAAIBAwQBAwMCAwMDAgYJ dQECAwQRBRIGIQcTIgAIMRRBMiMVCVFCFmEkMxdScYEYYpElQ6Gx8CY0cgoZwdE1J+FTNoLxkqJE VHNFRjdHYyhVVlcassLS4vJkg3SThGWjs8PT4yk4ZvN1Kjk6SElKWFlaZ2hpanZ3eHl6hYaHiImK lJWWl5iZmqSlpqeoqaq0tba3uLm6xMXGx8jJytTV1tfY2drk5ebn6Onq9PX29/j5+hEAAgEDAgQE AwUEBAQGBgVtAQIDEQQhEgUxBgAiE0FRBzJhFHEIQoEjkRVSoWIWMwmxJMHRQ3LwF+GCNCWSUxhj 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 6LTY3/Xv37r3Xv8AR/3H/wA//r//AEWmxv8Ar37917r3+j/uP/n/APX/APotNjf9e/fuvde/0f8A cf8Az/8Ar/8A0Wmxv+vfv3Xuvf6P+4/+f/1//otNjf8AXv37r3Xv9H/cf/P/AOv/APRabG/69+/d e69/o/7j/wCf/wBf/wCi02N/179+6917/R/3H/z/APr/AP0Wmxv+vfv3Xuvf6P8AuP8A5/8A1/8A 6LTY3/Xv37r3Xv8AR/3H/wA//r//AEWmxv8Ar37917r3+j/uP/n/APX/APotNjf9e/fuvde/0f8A cf8Az/8Ar/8A0Wmxv+vfv3Xuvf6P+4/+f/1//otNjf8AXv37r3Xv9H/cf/P/AOv/APRabG/69+/d e6QHZ1J3d11sjMb2ou7VzE23psNXS4jLda7USgylEc7TU+Rx88uNaCeMzU7yxpNFKDGxV7OF0N7r 3RsPfuvdf//Q3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+690x50OtNSVkUVG1RjsrjKtJ62ISR0NJJVrQ5qtib UvjdcfNVqJdVlDEtddSn3Xunz37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdAd8kv+ZI7+/6gMb/ AO72l9+690OPv3Xuv//R3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691EraOnyFHV4+rj8tJXU09HVRB3j8lPU xGCePXGQy3UkXUgj8G/v3XuoeCrpsji6WoqWp2rU81Fk/s0qko0y+MqHxuYio/vUSRoUqoplidlG tAGFwQT7r3Tv7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917oDvkl/zJHf3/UBjf/d7S+/de6HH37r3X//S 3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3ScVhjM/JG7BaXcpE0DSSC653H0KxT0iGonLH7ihgSWGCn pwqfa1MsjFpR7917pR+/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6A75Jf8yR39/1AY3/AN3tL7917ocf fuvdf//T3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3TVmaKor8dUQUcy09enjqsdPI1SsMWRo5VqqFq oUjxyPAZUVaiJXHkiLxn0uR7917rJjMjDlaCmr4FeNZ0Pkp5mgepoqqJzBWY+sFK8ka1FNMrwVEa yNokRkvce/de6cffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3QHfJL/AJkjv7/qAxv/ALvaX37r3Q4+/de6/9Te H6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+690mKdnxe4p6Jg38Oz8T5ChkLSNHT5qkVUy2PDSyBIx Uw+KspqeCK7vHkJ5Dci/uvdKf37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3WLzReTxeSPy/8AHPWnk+mr9F7/AE5+n09+691l9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdYzJGHEZdBIwusZZdTLzyF +pHB9+691k9+691waREKh2VC5CoGYKWY/wBlb/U/4D37r3XP37r3XB3RFLuyootdnYKoueLk8fX3 7r3XP37r3Xvfuvde9+6910SALngDkk/j37r3XSsrKGVgykXDAggj+oI9+691y9+691jkljiAMskc YPALuqAn+l29+691k9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690B3yS/5kjv7/AKgMb/7vaX37r3Q4 +/de6//V3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdM+bx81fQsKMxRZOkljr8TPMWSOHJUh1 06zyxBpFgmGqnqhFZnp5JYwRrPv3Xus+LyMGWx9JkYEmijq4VkMFTH4aukl/TPRV1PcmKogkDQzx MdUcisjcqffuvdOPv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de61mey+zfln/ADn/AJVd1fGj4kfIHenxL/ly/EjsQdRfJP5LdSwZbB92fIvvLbOQjquwenum d/ymKChxGMiU4vJVNIkkYEwrak5KkraLH+/de6Emg/4S4fyeqPb8VPUdP9zZXsSPHfav3lX/ACj+ QEfa8+V8n3P96JZcZn6bACv+5/yyyYBabzer7a3p9+690LHww+Hn8zH4M/KLC9TU3yym+aH8s/ce 1d15MZX5VZ6pyfyx+Ou4cHTfbbQ2Ltfe+NpWk3bR5OSootEuSaKkpqSirlSnx060i5T3Xukl83N3 brxf8+X+SDtHG7n3Djtqbo64/mO1O5tsUOayVJt7cVThOg6epws+dwtPKtNVvRyM0lK9RE5iYloy pJPv3Xur8vfuvdaVeI/nd9p5D+e4exI63Jzfynct2cf5UuM7PNbI/UyfJCnxydg0e+oa6ky0uIbI Vm43aCHOGFQ22JFaVVMQdfde63VPfuvde9+691737r3Xvfuvde9+691737r3XvfuvdVw/wA175L9 3fFX4R9mdg/GbZOZ378i9z5fYvUPSWIw23Rud8Xv7tnd9Jsui3lX46ojmpPBgaaqqsyGycZoTLTR R1gNPJID7r3VeeD/AOEzvwE3Vsijzfyhz/yQ+RvzAy2BpZt+/NHP/JXu7Bds1vY0tFA9fvHZmHxO bXb1BFSVsKTYWjyGHrzDHFTpWS18sbzSe690x/An5+dnfGb4ufzWetPlz2BlvkFu/wDk4737JxNL 3Dl46+hz3d/TNP15UdkdJY7dO6K6fIw1m7qiKllxOSIq5amB5aKKsSSb/K633XuiwfD7+Rh1/wDz Neg9l/Pn+bfv/vPvH5P/ACz2Nje29s7aw3bO7ev9ifGXrbsKKo3T1nsvq/bm3JoRBPDhsnT1VbSZ BZKSlnnkokoF8M0tT7r3Ruf5T/YXyA+JHza+U/8AJo+Rnb2+fkPtvpbqzafyi+EndnZJbKdk5f4u 7rz6bSynXvYG6ZZmlylVtzNVMWKxkjQBtFLXCIxY9KCgofde6r9+CPwmw/8Awoax3an8xX+Y92X3 Ru/qDI96dsddfEP4j7K7Pz/XfWPT/WWy8suAkz+dTZMtNPUbgq5Y1pJpaWeDyLR/cVctc1Ui0vuv dGR+F+3t6/yhf5vPX/8AKp2z3L2P2/8ABr5l/HzsHuv4ybP7Yz53jvr459r9aS12e3rsXGbmdI2b bFVi8Vk6qmUwx6p56dHD1NPVVdf7r3Vlfyi/kvfFX5b947z7/wCy+x/l5gN6b5TbceXxPVXyk7N6 y2NTLtbalDs/HHD7N2xURUlMz0tBDJUui6pZ2klY3fj3XuqF+3/5VXx6yn8134pfAn4td0fM+sh6 +25W/Kz58ZvdHzA7P3tgdudFY6rixnXHT0mMkzlNV0uZ3hlWhjndNM1LjqinrY46iKWQw+690eH+ aRtmk+ZX83L4Z/yx/kj2b2X1X8F+wvi7vLvKbaXX2c3R15jvlP8AIHbXZMlLQdE7o37hp4IPtcdh cRFmUo4j92mp4qdqeqyNFVQ+690bf4X/AMnmu/lx/Lin3n8L/kbvjZ3wM3jsDc1H2x8J+0Mpu7tn E47s+FaWm2Ru3pHdm4MmJcHHIoefLzZIV9SPtmpIzNBk0bC+691j/nA/zDe9/j/nvjl8FPgdg9vb p/mF/OvcGW2x1HkNznHVu0uhevcNTu+9fkBvfC1C1Mk8OKgSqqcfFLjqmkYUOQqKiKp+yXG1/uvd FW2J/wAJe/ibv6Cn39/MW78+U38wf5I5Wjom3T2l2R3Vv3ZuBx2QpVaSmpOvNtbUr46/H0FHJLM1 JBXZms0tJI6rEr+JPde6Lb8jviX8wf8AhPbg6f5mfy+u++3fkd/L+68zWEq/lX8CvkdvWv3ymyOq 6yujxOf370RvBozLi/tPuEqKh6THfdUbwwVdb/GsWlbRR+691tT9K929c/IDpPrP5CdZZ2PMdW9t debZ7Q2hnZglM021N14KLcGPmyMGpvtqiKGUJWU7tqglWSKSzowHuvda+P8Awmo/mx57+Yn0j351 r3BlnrO8uiO394bnoqityC11TubozuDe+X3HsOroK2abyVse3q5cltt5Kaip6Smo4cVDGilio917 rZjkkSFJJZZEiiiRpJZZGVI440XW8kjvYBQASSTYD37r3Wtl/Jy/mrzfzH/5kP8ANjpMNuDI1vR/ W1L8cts/F3FS1NSuGretev8AOb82lvTsPE42qpqOSOTcmaqIspPLNC84hlpKKWQpQwge691spe/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 oDvkl/zJHf3/AFAY3/3e0vv3Xuhx9+691//W3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 690maRf4Tm6rHhNGPzfny+P0R6YKbKKw/jtCPDDHFH9wWSviVpJJp5Xr5Wskfv3XulN7917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917przUeSlw+WiwssMGYlxlfHipq i4p4cm9K4oZZyFb0LKULek8X4P09+691ruf8JV67aH/DPvWO18TSUVF2RsHu/wCS20fkBTw45cXk 07ej7kymcC7ipykUprE2xXbaiHniR0gSGHQqxKPfuvdXZfKfs7ufpvojfXZHx++PWQ+VXbm21262 0+hcV2Ht7qnIb8/im66HC5tKXfu6qaroKFsdjqiryv8AlEBEwpjACjSq6+691Qb2z/PW+f8A8bcz 0VH8of5Iu/ejdo9//IPrT417N3hkfnB1BvZZux+0KqoXBYyn29sTa9fXTSfa0VdVAMkcTeDxGZJJ Iw3uvdDL86v+4gf+RJ/4jH+Zj/8AA+Uvv3XujCfz1vnfnPgV/L17T3h1lPkJvkf3K0HQPxnwuBx+ Xy+5qrtXsWmmov7wYLHYCOaq+5weLTIZWil8RhOQhoaWUg1cYb3XutT2r+SnwDm/kVxfysKf4kfz J6TtiPrik7CPai/DbNy0z/NSKqXsKr7HfOtlhXHHTbi8mF+4MJqk28wpFF0VffuvdbbX8j/535X+ YB/L26k7M7Aetp+/uthVdGfJDC5mmr6HcVB251vDFj6zM5+kyNHj2WrzuMkxufqxBSJTxVNZUUsR P2zAe691bt7917r3v3Xuve/de697917qu3uf+Zz8d+iOzd1dTb02B8xcxubZ9RQU2UyXWnwW+Xnb Gx6p8liKfNU7YHsLrnZuTwuSRYamNJZKGulWOUSQuVljkRfde6N30j3FtXv3rHbHbeycZv3DbY3a mVfF43s7rjfPUe+KYYfN1O36oZzrzsmgxmaxxaekleBa2hiMsJjnjDRSo7e690K/v3Xuq1v5kH8w ai+E+xtp7S612VP3r8x+/wDLTbD+LHxwwMi1Wd3zvSop3vuzc9FTzw1FLtTCkLUZrIB4ltpg89OJ Hqqf3XuqPPnB8Cu2/hx/wm+/mH4be29Jez/mT8hJqf5VfMjtHAHH7ej3Z2TvLurau4u28fiWompo /wCCYbbFDPiRTxlY62OGrmipYvvzRr7r3Wy/8PZaCo+JHxbnxctHPi5vjn0jNjZse8MlBNQS9Z4x 6OWhkpiY2haMqYmjOkrYrxb37r3VN/YhqK7/AIVE/Hqn27WY+Kswn8njsfJdhQGlD19Rsyv+TVXj tuUpq/t5NP8AuZaGeNfNGVVJfUBN45/de6CSm+DH8zT+VR2x8oOxf5c/b3w53h8A+2s/vT5Ebm+P vzc3D2L1/jPjBu2tpanP9iZ3r7fPXVBPFFt6KGnimleumANKmiqgNZTyZes917oHv+E++yfl18/u 9ey/56fzwrtsjcHZ3XOQ+OPw86+2njEx+ztl9N4neDZDee5Nm4bI/eV+NoDlqesxeNlq8xUV1Y82 alr10mill917rZe+UXyL64+I3x47i+S3beSTGde9MbDzu+dwOaugoqnJfwultits4ibJyQwNkcvX PTYvGRSyoJauohi1AuPfuvdVr/yUPj52TtnoTfPza+S9LIfmD/Mf3jT/ACY7iNX98s+xuv8AJUJp /j50ni6XIVVU9Hj9tbXlp2jx7MJKSorKijkLLTRafde6NB/MQ/lw9DfzIOqMFsbtg7g2d2F1nuFd +/H/AL52BX1GD7S6K7JpjFJTbo2hl6SSJpaaoanp4stippBDVxRxurU9bTUNdSe691Xv8Ffm/wDM P4+/MKh/lQ/zQIsZvjtjc+290b1+GvzW2bipMXs35WdcbYppMrWbW3vhqWLw4neuGoaes+/8jQ+c UwWRZ5pqTJ5n3XughyLUNF/wrL263alZjgMx/KCyVJ8Z4KmWZZ23JTd6vVbqpcfBI5Brf4ZDvWd2 RFRqUMOXjY+/de62BvkD3Vt7449Ldj967u27vrdO0+rNtVm8d04frXbM+896ttvFOsmeyeG2vSyR zVgoKUy19VFCxkFPDK0aSOqxt7r3RMK75qfD/wCaf8sHvX5V7E3zid9fFvdPxu75k31VZOOPEVmG wWG6+ylF2LszfGDy9nxuRpoBPBU0dWtmV45ozLTTwyye691Uz/Kw7C3x0N/wlMxHa+cepwe6+ufh P83uwtpzZqPPUjQ0mO3d2HuLqysKh6euNPUUn8LmpHpJk1wSRvRyCNoW9+690X7CdUVP8tn4QfyT v5r/AFziqmlxPx0+KnQfSfz4wOEirA27vh98pcXjN4br3ZVY+esg+4qtjb4za7kpKaKlaaonqS0x ipqZkX3XurYv50fyB3dkvjN1h8N/i5uOmrvkd/NE3fjvjj0vnMDKMxQ4Hp7clBDmfkF3lPU46lr1 OBwuzJ5kqcjToWg/iNNVwt+3rX3XuiqdPfGbpn+XT/PG+FnUPT+29tbG6s7i/lA9kfGTZVFjqPBY DL707H+NHd2L7cz+7dyw4laSHKZ3JYavqK/KVy0f3M8onndzEkgT3XutmL37r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdAd8kv8AmSO/v+oD G/8Au9pffuvdDj7917r/194fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdMmdx8lfRxvSq hyeNqYcpiWeRKcff0gJFM1W0UxhjqomloqmRImcQTShRc+/de6cKOrirqSmrYBKIauCKojWeGamq ESVA4SemnVZI3W9njkUMrXVgCCPfuvdS/fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvda3vfPxI+bv8tH5b95/P3+WL1vifk90V8oaiq3780f5e+U3LDs7dld2tiMe9 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 uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3QHfJL/mSO/v +oDG/wDu9pffuvdDj7917r//0N4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690ms eDjM3kMVoCUeSE+4MWIogkUUrzJDuKkK08IRf8plirvJNMZJ5KubSumBj7917pS+/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XumrN4TDblxORwO4sRi8/gsvSTUGWwuboKP K4nJ0NQuiejyOOrkkhmideHjlRlI4IPv3XuvYTCYbbWJx2B27iMXgMFiKSGgxOFwlBR4rE4yhp10 QUeOx1CkcMMSLwkcSKoHAA9+6906+/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917oDvkl/zJHf3/AFAY3/3e0vv3Xuhx 9+691//R3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3TBuOkqZ8eKzHU33eYwsw zGGpw9LC9VXUsDxyY1KmtVoofvqeSegedlPiSdpFsygj3XunSjq6fIUdJX0chmpK2mgrKWXQ8flp 6mITQSeOUKy6lYGzKCPyAffuvdS/fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1xZlVWZiAqglifoABck+/de6Sew9+bL7R2XtfsbrndGD3rsTeuDx25No7u23kabLYDcWAy1MtZjc ticlRs0c0M0bKysrf4GxBHv3Xuu9+b52l1jsfefZW/8AOUW19idd7U3Fvneu5skZFx23do7SxE2f 3Hncg0Ku4gpKOnmqJSiMdKGwJ49+690Hf+zKdEf7L1/s1/8ApQ2x/suX+jT/AEyf6Xvupv7of6L/ AOCf3k/vr954/J9j9j/lWvx30c6fx7917oRNh752l2dsfZnZWwM5Rbo2J2JtTbu+dlbmxpkbHbi2 ju3EQ5/bmdx7TKjmCro6iGoiLop0uLgHj37r3UTsbsrr7qHZ2W7D7T3ptrr3YuBkxcWa3du/L0WB 29i5M3mKfb2HjrsrkXjhjaqrqumo4AzAvNLHGt2YA+690uPfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3RHdr/wAyn4G72+TNT8NtofKfqTcvygpdx7t2hU9L4TPtkd4Qbo2Fha3c O9cBLDTRNAtXiqTHV8tfAZ9UJp5o3AkRkHuvdHi9+691VH8nf54f8qj4ddnZDpr5B/MjYG0OzsKX j3BtDA7e7F7NyG2KqKdqafG7pm6swuap8ZXROjLLj66aKqT6tCBz7917o/nRPf8A0v8AJ3q7a/dX x97M2j231ZvKjFbt7emy8tDlcTVqAPuKKp0WlpKynY+KsoKyOKpppQ0U8Ucisg917opPzK/m0fy7 f5f248Bsz5b/ACi2R1Tvbc1E+UxOyUxe8d97xXFKQIstl9r9bYzMV2NpJ7kUtVkoIIqgrIsDyNG4 X3Xuh7+KfzK+Lvzh6xh7i+KHdOze6+vnrZsZV5ba1TWQZHB5WB2D4jde1c5DSZfD1hVfLHSZWhp5 XhZJkRoZEdvde6M37917oOtxds9c7T7B656p3Du3FYzsftuHeNX1zs6V5nzm6qDr3Fw5je+ToaSB HK0mMgqqT7uqmKRJJU00JfzVEKP7r3QNfLb5u/FD4JdeQ9p/LXvDZnSmzK2s/h2Iqtxy5Gvzm469 ZoYZ6Pamztt09bmctJAaiF6pcbQTmCNxLN44/X7917pEfC/+ZH8H/wCYZg89uD4efIfZ3c0W1ZIk 3PhKGk3LtPeu3o6gL9tW5rr/AH9Q4rOU1JKziOKtlx4p5JA0aSs6Mo917o75IUFmIUKCWYkAAAXJ JP49+691TX3l/wAKDf5OXx037W9Zdm/OXrlt44yWCDJ0XXe1+0e58VjKqaaSA0WS3X07gc7iIKiJ 4nFTTy1yywekzpGHQt7r3R0PiR/ME+FnzvwNfuL4j/JDrPu+nw8MdTncNtjMS0W9tt0s8ghp6vdH Xe4oqLP4uGVzohlyGNhSRrqjMQQPde6ON7917pO7X3Ztne2Hi3BtDP4jc2Dlrszi0y2Er6fI0Jye 3czUbc3BjWqKVmVaihyFJVUNZAxDw1EMsMirJGyj3XulF7917pOUm7tsV+6s5seiz2Kqt4bZwe2t y7h2zBWwS5rC4DeVblMdtTMZOgQmSGnyM+Fy0VJI6gSNSThb+Nre690o/fuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690B3yS/wCZI7+/6gMb /wC72l9+690OPv3Xuv/S3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdJf HSxYvOVmAeSNUycdduXCxF1ErRGtjTc8KR+p2WGsqoKlpZGAJrVijUJD7917pUe/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917qPV/8Ban/AKh5v+tZ9+691oEf8J5vl98ov5bfxF+L fYPyx3DQ7v8A5UvzP3X2RgOsux4587k8p8JO7dtdsZzrisxG/amqiEON2fuurwtRkfDC8tLDPLNk Y3o5kycWS917rcZ/mayRzfy1f5g0sTpJFJ8GvlfJFLGyvG8b9B59kkjdbgqQQQQbEe/de6qF/wC7 TD/zDH/87X7917q37+WN/wBu2P5ev/ijvxN/98LgPfuvdUKf8KB8n3V/MU+Q/wAdv5GPxO3LTbc3 j2JtTcPy0+UO/pJ6psF151p15Q1kXU2D3dLgaz7iKnyW4Y4ZKmkqaO5qJsBLE4WVmHuvdWdfyKPm 1ub5o/AbZi9tplcd8n/jBuLN/E35Ube3JUNPujH9x9LpDgqzM52SomlnmqMvjzQ5CtqZDZq966FW c07Mfde6uT9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Wt386+teudifz6v+E/OU2R sDZWzcnuuo/mrVW6MhtTauC27XblqaT4o46opKjP1eHghkrJIpKuqeN6hnKtNKwIMjk+691sJ9hR bwm2DviHr2aip9/S7P3LHseoyXj/AIdBvB8LOu2Zq/yq6+Fa0wNLqRhpBuCOPfuvdao3/Cd7e/8A Lj63+EW7evvkPWdDdY/PbYfY3dOL/mAUvysl2DtDvnJbypexMrUw5belV2uKPK1O3IMLJQ01OJEF JSyx1UUyis+7lm917oRf5FuV6zwfyq/nY90fFrG5Da/8rOv7b6u3H8fa+Cjrtu9N5HsLZ/XWRqvk 3uXpPGVwp8TBgHylpoKnFRxU7Y9sWjMYYKZYfde6X3/Cer437E7++Pe7P5tHyI2JtTsj5c/zA+3u 6ezq3e+9cIm58v1d1RjOwcn1js3qPryXdD174fBpTYeerjpqGYBqWqpqN2amoqWCD3XuovdXTW0P 5bf89b4Hd1/HPb1F1f01/M7xHdPxp+U3V2xsPDi+vcz2/sbasO/eo+0aba9E0VBj8zkatooK+to6 dS0NFWSNGZ8lXVEvuvdbDXeXdfWPxv6f7J747m3VQbJ6s6l2fm99b53PkSxhxmCwVG1XU/b00QaW pqpiFp6Kip0eeqqJIqeCOSaVEb3XutKf+XL8kflL80P+FDvRHzH+QG3q7r3q75IfCz5A72+GnVWT +7hyezPi1idwvs3ZWWyVDV3KT7jq8dXZ56pX8dd9yK+njgo6mlhT3XurJ/5oua6++Nv863+XX8wP mttvEbi+CuX6M3f8bdj7x3jHkM51x8ePmLlN+1O9tv8Aam8MFVU02HoZa/FCgoMflK2RXj8E+Qj0 Pg0lX3Xurm8b/L8+HVZ8vtlfzENjbBx22+/qPrPcGyhvnq3cNbtPaHa21t7UlN/D8/2Vt3Zs1Pi9 2VNFRCWHDV+USoVYqhJHE8lDh5cd7r3VRf8AOS7H7p+Y3zT+J/8AI76E7H3H0/tj5GbD3F8gfnX2 jsqSGk3ljviPg6+u29N13tvN+Zvs23NUY7JYytSShlWZ6jGRzF8dJkaWq917q4f4s/y4vg78Luv8 b1t8cPjL1L1/hKKhjoq/LptLFZ3fG6mWFYZshvfsDcEdVmcxUyhRrlyFbLYAIgSNURfde6px/m// AMpbaGw9kbh/mc/y1cBS/FL5+fEXG5Lu6kr+jcTidobX792ZsvGS13YGw+wdgUMa4avranBDJLT1 DY6WTIhpMVkIq2nq4xTe691cV8HfmptD5kfA3oz5u0dNTbfwXZ3TcXYe7MVFUXodqbm25T1GM7Q2 5T1tYw1wYnN47KUMdRMw1pCJH03IHuvda2X/AAla+XPfGP21ub4g/LNMnianv/be5/n78JMxuXJY upquwund99nZbbPdOPxiUFfNBRfabjpkztJgoaOCYR1+RrjH9u0b+/de628+zOx9m9Pddb97Z7Gz cG29gdZbN3Lv7eu4KmOeaDC7U2jhps/n8pLBSq8sngpaeWQRxIzuRpRWYgH3XutSb/hPr8vPkD8i v5nP8ynsX5K7G3Z1llfnJ0j0D8w/jnsveWJqcZXQfFXrfsDdXSnWVfiGlo6H7jHfY5PHQ09c8C/e 6TWpq88jt7r3W4j7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3XugO+SX/ADJHf3/UBjf/AHe0vv3Xuhx9+691/9PeH6//AOZx9/8A/Uf1p/7w 0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691hnnhpoZqiomip6eCN5ppp5Eihhh jXVJLLLIQqqoBLMTYDk+/de6YF3LT1Sl8Pj8tnVXwMs2Po0p6GopqmAVMFdj8vmXpKKrhZStnpKi XkjiwYj3XupjVGfMy+LF4r7YzRgvPmqqKqSmZQZZHpoaGWPyqbgRLOVNv86L8e691NArtF2kpBIA fSIZil/wPIXBseLnTx/j7917qFLNuBZ1WDHYean1Qh5pc1W002kg/cOtKmPlW68aFM3q/LLbn3Xu sTZwwymOtw+co0erSjpZ1oFysVWz6z5wNvvWPBEAlzLWJCo1KCdR0j3XunKir6HJQGpx1bSV9OJZ oDPRVMNVCJqeQxTwmSBmXWjgq63uCCDY+/de6me/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917pjz1LVS0cdXj43myWIq UytBTo4Q1ssETwVWN/dmgh1VdNJPSxyVDGOF5FnKlolt7r3TjRVlLkaOlyFFMlTR11NBWUlTGdUc 9LUxCenmjJ/sujBh/gffuvdS/fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdR6v/AIC1 P/UPN/1rPv3Xuta3/hO30l1T8kP+E6fxh6L7x2Ngeyep+zsN8otr732XuSl+6xeZxNX8ut9ypypW WnqaadIqugrqaSOopKqKGqppYqiGORfde6J73V3D2J/KU+LfzT/lV/MfsTM7z+M3ZHwt+WmG/lif LXsatpIJa3EHovP02A+GXae6mgpKOTcmIjEdFtpmYPUq1NSU6JDV4vH0XuvdG8/7tMP/ADDH/wDO 1+/de6s0+FXbOyOhf5P3xC7u7KyUmG6+6j/lw/HnsjemSgppa6ppNsbM+NOH3DmpKHH095KmoMFO 609NEDJNKUijBd1B917rWS/l37V/nz5Dtf5K/wA1jo34k/D7fOR/mZVm2uwttZD5OdubzoN99ddF YGqrYeq+vNp0OKfET0eDbFNjZKf7mHyVdJSYuaQao1Pv3XuhP+ImS/mB/wAub+cc/d/z36O6S6F6 X/nDbmoOn90UPxt3fmd39R4f5X7Yw9PUdZb23A2Sgr6uhy246p8hQrDV5OGnqJ8vla9RI9PKsfuv dbpXv3Xuve/de697917r3v3Xuve/de6rt7o7K/mj4Ps3dWK6D+Jvw77D6jpKigXZu8uyvmN2d1rv jN0smIp5slLntkYLqbcNJQPFXNVQRJDmakPEkcpZGkMSe690bvpHL9zZ7rHbGV+QeyNhdcdv1SZU 7v2Z1hv3L9nbGwrxZypgwwwe+M9hNu1dcJ8etJUztNhqfxzSSQqHWMSP7r3Qr+/de618f5i3/b93 /hOz/wCZXv8A4EvDe/de6s3/AJjnypr/AIQ/Bf5Q/KzEYH+8+e6V6m3DunbOElx+QylDWbrm8eE2 m2aosW0c746HI1dLPkyk0OmlSZ2ngVWmT3XuqGvhR/wn0+H3zJ6H2V83/wCaGm8PnF8yfmZsDZff XY3Zmd7R7M6+23tGm7J2NSZLaWxevNsdS5XAUcVDgcJPj8ZTGqhniiamUUEVFRpT0sXuvdYPiVs/ fvwJ/mAfJL+QxtnsvdXY3xC7t+A28Pk18NKffCU+6N5/HCbdWcy3Wm8erqncVClF9xhKrIxZfKU0 VbpCulKyyLV19dPV+690eH/hM7urD7l/ko/DCkxlQr12y6DuLYe56BpaaSpw+5ttd97opq6grFpJ JVUyRtBWQXa7U88MhC69I917oJ/5x2MxPa38zL/hP70JA1ZU7mPzG7Q+SUtPiaqEVuN2z8atkYzf s9blIGgqPHR1NSkceuRU8qQ1MUTrIGlh917qtf8AnUfOra/yi+eXU/wU7U2R8rIv5anx53gnYPy6 z3S/Q/Z29m+VPaezpy+F6Gx0+2KATPtrG1wFPlKsVsFPPL99PEtRNSYWrHuvdIbcv83H4e5P+fD8 Pvkfh+vvkz1x0f1p/L97O6KTAZX4ldu4fdVFln3dksphaTaPUu1sVWZWfDU1JLT0/wB1QUDU9MQI 38aISPde63Rez+sOpfkd1Zubqjt3ZO3uy+reydu01NunY+8MWtbjsth691yGNlrMdVhZqaognhjq qKpTx1FLVQxz08kVRAjp7r3WuF0Xieyf5I/8y346fA3E9p7i7R/lq/zFK3tsfF/YXYWXr9x9hfEz vfaFFTbs3VsXbOdeGpqK7Z+RmraRaWColp0hkybVD66qjr6vLe6907d0bowXxE/4VDdAds9sTZDE ddfPz+XhnPib1XvfPTRw7Px3eu0e48fvgbFo8lVOFgqK2nxWIpIKRVHkrs5Sqhd6l1T3Xuthj5CZ bu/AdKdlZ3427Y2PvbvPC7Xrct1rszsfJ5PCbN3huHGstau1ctm8QRNRNkYUlo6SsJ8UFRJFLODA kgPuvdUM9bfz7Oi++P5VXzR+R3cuAo+g/kX8Uth9i9YfJP4v7sqic7tfvDI0Nfszr7a2Eos8KWpr KHdWZ8WOoVqI0eCqFXQ1DE0clRJ7r3QV/Fram/Pgz/wk1zdF2S2S2xv3D/y+/lNvujSmyddSZrAV /wAh6jd2/uraRMhDFFUUVdTw7pw8TKq6qScGMO4iEh917p9+QHxK7Q6a/lFfyxPlZ0Vt2eL5d/yk eguge7sRttK2SOq351xj+l8RiPmD0dlquCrpoTTZ/ApXz1DqksjNRCCjjV6r37r3Sz/mF/ILaH81 fC/Af+Xd8ZNyVWd66/mI4PZny1+S+78Of8v69/l/9c5Ok3fmKPMz01LkIcXmN27jp6batCJyUjrq Osx9UF8tx7r3Qsdy4HA/HT+fl/LOy20sCcFtb5K/y/flj8MsXg8BQUlFtPbGE+NeWwXyL2jj6bHQ zRQ0UMFO89FSrBTEhfHCimLyNB7r3V+/v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de6A75Jf8yR39/1AY3/3e0vv3Xuhx9+691//1N4fr/8A 5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdRKuto8fA1VkKumoqZHhiaoq5 4qaBZKiZaanRppiqhpJHSNFvdmYKLkge/de6YUyuayxYYfFyYykvGY8zuSmlgFRHJAk4kodtpJFW tpYvTzJXtQujDyRrPHbV7r3Umm25QR1MddXPUZvJQuksGQzMkdXJSSxrJCk2No40jpKJzHIY5Hoq eFpVA8pkYavfuvdKD37r3Xvfuvde9+691737r3XvfuvdMtdgcbX1K5B4npcpGsEceWx8stDkxDTT NU09JNV0xVp6ZZGMho6jyU7t/nInHHv3Xum5qvN4MxJkopc/iyyQ/wAWxtI7ZqjAprJNmMJRKRUh 5IyJKnHIpEkyAUMcEctQnuvdP9DXUWUoqPJ4yspcjjsjS09dj8hQ1ENXRV1FVwiekrKOrgLRyxSx srxyIxVlIIJBB9+691M9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+690msUBi8nkMK8jGOqmrdw4nzTmSWSCvq/NnKaNqmolnk+ 2rZvKx8ccMUVVTQRC0dh7r3Sl9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691hnQywTR qQGkikRSb2BdCoJt+PfuvdVj/wAm34S9l/y6P5cXx6+HXcG5djbv7D6jl7cfP7h62rc/kNl147A7 x3L2dif4PWbox2KrnMVFmqaCo89BFadJAmuMLI3uvdGE+cnwk6B/mF/G3fvxe+R+1huHYW9aaOpx +Vovt6bdnX+8carttnsTYOamjkNBmMZK7NDMFaOaF56KriqKGqqqab3Xuis57+X5v6H+TJmf5ZW2 N7bQr+xIvg1kfibt7sLOjNYjZlbnk6yfr7E7qzMePpa6upaSRhHU1EcFLUSRgsiCUqC3uvdAF8n/ AOWf8mPkF/Lb+Bn8tyh7A6t2v11sbCfEnr755bkpd1bohyG+uofj/tPCY3e2xOk6ao2lXCubNZTG rX0lbl3wzRrRU0cqFayoSn917q8Pbu3sFtHb+C2ptbDY3bu2dsYfGbe25t/DUUGNw+CwWFokxuIw +Kx9IqxQU1NTxRwQQxqERFVVAAA9+690Rj+Z58G8H/MP+GHbfxsqqzG4DfGUoqPefSW+8gFi/wBH PeWyJjmutd4RZJaLIT0US1inH5Kqo6OWpGOqqxIFMjge/de6NP0PR9x43pfqvGfISs2XlO88ZsLa +N7azHXVdlshsbOb/wAdiIqPc+f2tPncfi6xaOvqkkrIYKihiaESeH1iMSP7r3Qte/de697917r3 v3Xuve/de697917r3v3Xuve/de6q8+VXwh7N71/mSfyr/mVtfcuxcX118F/9nVHaG3c/W7gh3ruf /ZlOkaDrPZv9wqPH46poZ/sq2lknyf8AEK+j0QFTB55Lxj3Xuj3d5dMdf/IvpvtLoXtbD/x/rbuL YW6et974kSCCas23u/DTYTKfZVWljBUpHMZKWpQa4ZlSVLMgPv3Xutcvqz4t/wDChb+XNsvD/Fr4 b9hfA75mfFjZ3l2x0Luj5Zp2vs7unpfYI0Hbm1d2SbIyFHS5PD4PyTU1HDFPkapaSGCGmempo4aC D3Xujw/y1P5ZPb3x+7u7x+fPzs7twnyL/mE/JHD0mx90bk2DQZLbvSfS/TeFrqeqwXT3Tu3q+Omm mpi9DQ1FZk66jimYwxQxxiQ5Cuy3uvdFtyH8vD+Z58D/AJMfIHtr+U12j8U9z/G/5U9jZ3ursr4e /Lun7LwG1eu+5t1iBt17z6i3L1fHPJTLkpkmlqIwaSBadaKhegq2pIq+P3XujD/BX+XN8lMP8qt1 /wAx3+ZZ271f3X8zsv17N091Rs7pLbuYxPQPxg6mqctNkslt/q07xX+LVGQyXlb72vqVFRGKivp5 KvIxVEckPuvdXZ+/de6rL7S+F3Zu+P5q/wAV/nVi9w7FpuqujPjJ3n0purbOQyGfTsHJ7k7RzVJl MLkcBjqfGy42ShgWl01T1GUhlBb9uJwOfde6LT8p/gR82+svl/vj+YL/ACte3epMN293dtLbez/k 98bPlbP2FkPj13VTde7amwXWm8MLV7FkNfg89iFZIo/thDHIrzsaiJKmup6/3Xukx0D8Bfnb8ivm z058/f5p+9egMVlfi9gN60PxS+JnxgTdO4evOvd1di0hw+5ezewuwOw4ErK3N/w5Yac02NQ08lRD S1S1MMVMtFJ7r3Vhv8wX+X18ff5k3x9yfx9+QWMyy4xctR7q2PvjatZFi99dZ76xcUkOL3ftDKTR yxpOkcssM0M0TxSxO3pWVYZovde6qS2P0f8A8KYvifiH6l6r+Rv8uj53dZYGmixXX/bPzHw/feye /IcVj6CGKi/v2vVckdLXStK06PJWZfK1sqRRyTZMyu4PuvdVE/J3+Qp/Mn3f34f5tHyY298MfmL3 9truTqPfvZ/8uf477B3Ns/qvvPq7Z321Blqek35vabGtlty0EVmTH7kxlfHkIKY/c5HIBUw1X7r3 Wzj/ADQPjH2x/Mu/lhdofHTpiDD9Ub9+Q+3um66PF/IRty7G/ubicN2dt7srde1d8QbIoc5WUmTW ixlTinio4Z4RUtcTSU41v7r3VpNPj6Olx8GLhpoVx9NRxUEVH4o/t1o4YBTx03hA06AgC6bWtxa3 v3Xuqaf5V38mnpn+WD2v81ezdhS47MVfyQ7gqsl1cqwzzVPUvx5RU3ThOoKOqy0clZEYNw5DL/et HkJ4a6npMTUuIqlJYo/de6Hf5ufDXsjv75Mfy2Pkp1Nk9g4zc/wp+R27d47y/vzmc9hajL9Gdv8A WlX1n27gtly4PC5gT5mSB6Cqo6OtNHTTmnMUtbTF1nj917qyz37r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdAd8kv+ZI7+/6gMb/AO72l9+6 90OPv3Xuv//V3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3UDIZPHYqFKjJV1LQQ y1FPRwyVdRHAs9ZVyiCjo4PIQZJppCI4oku7sQqgsQPfuvdNiV2WyZjbG0f8MoX8T/xDM086Vk8L eCotR4G8c0euN54S9c8EkEyAmlmjPPuvdcsZt2loGpqqsqq3P5imgEJz2balmyLM1NHS1U1NBQxU 9HRGoWKNqmPHUtPFIw1tGW59+690oPfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3SYrcbX4+ojyW3VgAarefOYOQFYMxTSrI88uLcyJFSZETOs4ndTFUgPBUBGkirKT3XunuirqXI 00dZRTiankaVAwV0dJqeZqeppp4ZAHjlilR4poZFV43VkdVdSB7r3Uz37r3Xvfuvde9+691737r3 Xvfuvde9+691737r3SU3pvnZXW+3avd3YO7dt7H2tQTUNNWbh3Zm8dt/C09VlK6PF4qkkyWVkiiE 1VVTQ01LDr1yzSJFGrSOqn3Xupu19z4Leu2tvbx2rk6bN7Y3XhMVuTbuZoyxpMrg83Qx5LFZGm8g VtE0EqSLqUGx5APHv3Xun737r3Xvfuvde9+691737r3Xvfuvde9+690wbhiqxRRZHHpJLXYergyU VNEs0stdSxEx5bGw0sc9Oks1RRtPHSLPJ4kqTDM6nxD37r3TxT1EFXBBV0k8NVSVUMVRTVNPKk9P UU86CWGeCaIlXR1IZWUkEEEG3v3Xus/v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3XugO+SX/ADJHf3/UBjf/AHe0vv3Xuhx9+691/9beH6//AOZx9/8A /Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691ArsjQ4yFJ6+pipkklWCBXJaaqqXUvFR0VOgMk87hT44IlaRyLKpPH v3XumlavPZVx9jSJhMc2k/xDKoZctURiZC32WDQhYFlgZjFPWzCWGVdM1AwuPfuvdS8fg6Kgn+8P nr8q0JgmzOSkFVkZY5FiFTFFLZUp4ZXgjmekpI4qcSXdIVJPv3Xunr37r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690j8tHFtqas3PQ0DNTVc0M+74KFaOGWqh jghx396p0naMTT4+lhiFQVfzS0UXjjWplp6OmPuvdK8EEXHIPII/Pv3Xuu/fuvde9+691737r3Xv fuvdJbd+9tobAw/94N7bmwm1cKchjcTFkc9kqXG09VmM1WpjMJhKE1TKaiurqqSKloaKAPPUTukM MbyOqn3Xutcv5if8KK+teqOydh9S/HXqHfvacu9M7ufbuR7crNp5PIbU2fuDae2sZvabaeY2HjJ6 fOUWUrMdU5SGqxmXFLuPDy46eeTaWVSShpq9bYbZuG6zrbbfC80jEKFQEksQxCj+kwVtK8WoQoJ6 Q3+5bftcDXO4zJCigsS5AAUFQWP9FSy6m4LUEkDqkzvrtf5P/LXNy7t7d7DyqVEGNlx2GwOWz+6a Slp3noKPHZmJ6/rLJYOroYq6fE0c9RVbUk21isxRzN/GNi02SQyiftj+73u15YPc7xcC3lKkxoBW pGqgYEVCONDam0SRnWjwE0YQJvn3gNps79LfaLc3EQIEjk0oDpqVINC6HWpVdccg0Ok4FVOwj/Ij +Xmb7S6p3H8deyq2ql331nPls1tary0cEebz2Bgq6KLsFM61BSU9LNmqbJ5bF7h3FJSs1JTZDcs2 Eoi64Oo0Y+X1ncbddyWN2pSWJirKQQQQaHBAP7R1kBZ3lvuFpHfWjB4pVDKwIIIIqMgkfsPV/wD7 T9Keve/de697917r3v3Xuve/de697917r3v3Xukth5Tj8pk9tyJOIYEjzWFnkD+GXGZKpkFXjKee aVmkfH1KsGiiiSKnpZ6CJbkn37r3Sp9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+690B3yS/5kjv7/qAxv/u9pffuvdDj7917r//X3h+v/wDmcff/AP1H 9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+69035DJ0OLjSStqBEZTKtNAiS1NbWyw071clNjqCmV56mbxRyOIYI3chSQpsffuvdNHn3D l9aU1M22aItPEa2vFJW5yVFeamE+Ox0Dy0tOHXwVVNPVyTOPVFUUCH6e691NoMDjcdUzV8cT1GTq EeKoy9dNJW5OSGSb7lqRKuoLNFTeUtIlHBop42J8USA29+6909e/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XumDC0s+NetxH23jxdE8 UmDmjWBKdMbVBiMQsURXQaKRJI4kWFY1pWplV3kEun3Xun/37r3XvfuvdB32f211n0ttafena2+d ubC21FOlFFktx5KCh/iWUmieakweCo2JqMjkqkRutHjaGKaqqHGiCGRyFPuvdUUfJr+exsPG4uqx HxWwJ3rmZ63KUNDunclDUx09c23clTLuFcNgoj5EMdGclFWR08eZ3dt+spo58n1tX4uZZnX7btW5 bvci02yB55G4KgJJNC1PtIVqDiaUAJx0X7luu27PbG73SdII14s5AAFQtfsBZangtakgZ6oY7F7X +UPyDzeSz/dna+bq6nJ0VRi8jeTHV1XPQ1VBDjczhocd/lWNXGVlVisbk8hgiX2TmjLPO/XmArmJ XIjlP7vl3OwuebJvCT/fUZq5HePi4LUFHRjkEMjxEZ6x55s+8BaQA23KkPiv/v2QUQHsPw8WoQ6O owVKukoOOmTB7Y2/tyGCHCYmjx602Op8PSmGMtLS4SiqZqnF4CkmlLPFjqEzypj8fGwp6SIiGmii hVUGS2y8t7Hy9CIdotkhoCKhRqoWLkV8lLktoWiAk6VHWNm9cyb3zDMZd3uHmqQaEnSCFCA082CA LrarkAamPT97POiLpOdefMLJfAH5UdKdzUWxN9b/AMP2BunEdby7f6329Nnc9UZiskrq6DHVL1lb hcNS0lTTVWcxNBDlMo1NBUbnzu6ZaSsr8DjYWw79/wDlIbdvMXMtolIrwUkoMCZeJOlABqFCSzln atBRT1mH7B82Hctlk5bu3rLZmsdTkwtwAq5J0moAVAqLSpqw63/dn7u2z2BtHa+/Nl5qg3Js7e23 MJu7ae4sXL5sZn9tbkxkWZwObx09hrgqqWaKeF7cowPvHrrIPpS+/de697917r3v3Xuve/de6979 17r3v3Xuk/n4Zo4afMUcU01dg5WrBBTxtJUV+NddGXxccUQ1ytLDeSng1KrVUVMznSnv3XunmnqI KuCCrpJ4aqkqoYqimqaeVJ6eop50EsM8E0RKujqQyspIIIINvfuvdZ/fuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3QHfJL/mSO/v+oDG/+72l9+690OPv3Xuv /9DeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3XvfuvdNGTzmKwxp0yFakNRWmoGPoI0lq8pk3pIDVVcWKxVGslTVPHErSvHTxOyoCxA UE+/de6bKhNyZqKoghmk2fSyRzwpWxDGZPc6OyzU61NJFOtVjKZo3WGohadK5ZY2KSwQOPfuvdO9 FiaGgkmqIIWerqV01NdUyy1dfURiolqo6eWtqS8hhjeaUwwBvHEGKxIi2X37r3Tn7917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de6DXs3uDrLpvD0+b7M3nhtqU2RbJwYKhqpZavce7cjiMJU7kr8FsbaWMSfK53JrQU dVVpisNR1NZJHFI0cD6T7917rXw+Xf8APdNPW5brv4e7Tgz+QeLLUS9q5Oros1RN9tW5ba1Vldnj b9LuDHGKlrosTO2SoKDdtZiZJ/td0bQxaa54zPbNj3jeJVh2q1luGcsF0IzAlQGYVApVQyk5wGFe I6K9y3vZ9niabdbqK3VApbW6qQGJCmhNaMVYDGSDTgetf1cv8sO/osrm/mz3Dk+3tyybj3pT4ebL LteWSs67zWXqqvD7e3dtbbuPgwIi8NVPTZHak0md2u8LxSUWPoq+J62XIjlD7vtxLS85xl8JfKCJ qsRRh3yU0qa6WGnVwIbjjHrm77wFvFW05Oi8RvOeVaKDVT2JXUwpqU6tPEFeGRExO38PgvL/AAyi EM1RBR0lRW1FRV5LK1NFjDKMPQVuZyck1XPBQxzyQUEM07pSwEQQCOFVQZJbHy1sfLdv9NstskC+ ZUdzZLZY9xGokha6QSdIA6xv3vmTfOY7j6nerl528gx7RgLhR2g6QAWpqIA1EnoLt7d5bV2xl63Z O1sTu7uLuBMTW5LDdI9M7Zy3Y/aOfnpI45VxlLtrbUU7wTuk0cyx1ZjdodUsaSKtiFubfdDlPlFZ YLmcT3UY/wBx4jV68KMfhTOCCdQGdJAPQo5S9sOa+bWimtoDBayH+3kFEpxJUfE+MggaScagSOnz p3tvZ3evW21e1tgVFfPtbd1HPV48Zai/huXpHpayTH1+PylDrkWOenqIZYZPHLJGxXXDLLEySMJ+ WuYtu5p2eHe9sJ8KauGoHUqSCrAE0OK8cqQwwR0GeZeXdw5W3mbZdzA8WGmVqUYMAQykgVGacMMC pyD0J9xptbkEnUD9QQLLb/Dn/b+zsBg5JOKCgpmuamtc1ximKHJrgjJURgAd1TU1xTFBSmKZzXNR gUyld4bbo904GsxdVQUORcxzS0lNkJ3oaaolemkpKnG1GXpqepq6GmyFLLUYzIVWPRataOpqFppI 5WVwGec+W7fmvly42eZQWdS0ZOntkUHSQWVwpNSuvSSoYkZA6E/JnMlzypzFb7zCxCowWQDV3Rkj UCFZCwFA2jUAxUA4J62Yf5JfzGpu8ul8p03u/cFTUdrdfV+4M3PQ7knSj3bl6WtyVJmN75WswmUy VXlFllrM/h9311OaGiocHBu/FbYpYUfDzxRc57y0msLqSzuVKvGSCCGX7DRgrAEUIqAaEGnXROzu 4L+1jvLYhkkAIIKt9oqpZSQag0JFQRXq8b2n6U9e9+691737r3Xvfuvde9+691737r3XvfuvdJjA xJiJarbSRLBR48R1WASOIQ0yYGpYrFjKZYoYYEGPlD0sdNThhDS/Z621y+/de6U/v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917oDvkl/zJHf3/UBjf/d7S+/d e6HH37r3X//R3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3XvfuvdNdfl8djHgjq6jTU1Wo0lFBFPW5CrWOaOCeSkxtEsk8qQmaMzvHGViVtchVAWHu vdNq/wB48ryyrtaiZY2UBqLJ7jfVErskvE2PpGjlDIQprlljNw0D/T3XunPH4jHYvzNR0+map8f3 VXNLPWZGtMOoQGuyVY0lRP4wxWLyyNoX0rZQAPde6c/fuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3QNd0/IPpf 48bdp9z9zdh4HY2PyLZOHAUFc1Vkt07vrsNiJs/lMRsPZGDiqs1uCvgoKeorZMfhaCqqRTxSzeLx xuy+691QR8kf58dJlf4ts/4qbVNTUZGGuotu9g1mRxOZmy8f3uT2lLujauUw1Bubb5xcGSGErqDd GAot9YoJUvjt0U21KkPNAdbJy7vHMN0tptMDSsxpUKSBQqGJoCSE1qz6QSqnURTPRJvfMWz8vWzX e7TrEqitCwBNQxUCpABfQyoWIDMNINcdUYb9yXc/fu5M3vLvLsvP7hn3fC9NuPb1WZqyizG35M5P uqg2buHEZ3IZ2CsxNLLlcvRf3f3Fktz0OOcx1e06jbihKWPJPlD2Bji8O+5plq4o3gppah7GoT3R nS6urVEqSxN8MbjGOHN3v7JL4llytFRDVfGfUKjvWqjtcakZGWhieKRfikQ5d8ThMbhInioIZfLO KU12Qrq2ty2ay81FQxY6mrM7n8rJNW19StPDFCaqtqJZmVFDObD3kRtOy7VsVsLTaYFhQBVxUsQg 0oGdiXbSvaupjpUBRQADrHjdd53XfLg3e6ztM5LNmgUFzqYqgARdTdzaVGpiWNSSenX2adFXQD/J 3Z3YW/eg+0NrdUbozuzuxa7bv3mz87tjJ1WHzwzODyEGegxGNy1JWUDUr5MUrYwzmqRI1qGaTUgZ WB/P+2bnvHKF7Y7PI8VyUDIUJDMY2EmhSO4FwulaEdxAJ01BGPIO57Zs/N1lfbxGstsHKuHAKqJF Ka2B7SELamqD2gkDVQjZ1/lF/IX+V/1H/LQ+OvyH6X2p1T8a6Pujb+P2rvbaG36bLb27w7A+Q2w6 c7d7B64pIKYZnf8A2JnqOvp6lsRRxR5LIzY16aop6daaRAOdEhkMh8UktwNTU4xx66JRiMIPCAC8 RQUGc8OtdvcfX3UPUnyL+Y56R2f2ps3rffnyNz3b0XU+4thVbbl6Ng7Bhxu2txPvramxIsodoYKp 3lTZiHFz5+akgoqWSgx9YtDWwT0yZhezs1nydy1HBvl0Em3KVJIoQdehJIg6SME1eF4kYaRml0Dw 4i1dKEjEH3hiu+cOZJJ9jtS8W2xPHLMRo1vHKUeNS+nxfDkKxqsWs+JKFpqcVc9u9N/Ov5N9gJ1N 8HPj9iN8y0MdCvY/yJ7X3A21Pjr0zkK2pgqotsbmyWPD5HL584uWPJT4LDRS11LS1uLrXpZ6asGl d7o+78vJ1+eX9mhWW70K7yOarFrrRdApV9NHBY6RVaowOEHtf7RR842I5g3iZorXWypGgo0uilW1 mtE1VQgDUaNRlIyj9n7f766r3d258b/lJSYYfID4679q9gby3BtbD5XGbS7F29U0qZvrrtbbxrI0 pxDuTDTU2UNLB43gEimWkovLHADv2g56u+dNjk/e7h723fS5CBAyEDS1BRS1a69IoKrgagOiX3c5 FtOTN8j/AHQhWyuEqgLlyrgnUtTVgtKaNRqaNk6Sehz+Jfb9d8RflvsTszCS5CDb29d0bcxeZweM WSKiyuQyOaqsQm10xsFft/ESVO4KrceYwmDpMrWVT1e6d2U24K4ij2pCqQr788nDbN4XmSySkV3U yADAkqNTHSlBVmBZ5JKs0qoi0Q0mj2J5xO57Q3Ld49ZbSgjqcmOh0qNT5oqkKkcdFWJndquOt7bb u4cFu7b+C3XtbM43cW2dz4fGbh25uDDVsGSw+dwWaokyWIzGKyFIzRT01TTyxzwTRsUdGVlJBB94 +dZBdPXv3Xuve/de697917r3v3Xuve/de697917pM7ipnjONz9OZhUbdqJ6uojpoY5JsjhKmmanz OLfx0tTUugUx18VNSeN56qkpUZ9GoH3XulICGAZSGDAFWBBBBFwQR+Pfuvdcvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690B3yS/5kjv7/AKgMb/7vaX37r3Q4+/de 6//S3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 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 17r3v3Xuve/de697917pNYDVQy5Lb5iWKDDyU8mHEaqsZ29kIy2OiVKengghFLNHVUEVMjSOsFPD LK2qYX917pS+/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917oDvkl /wAyR39/1AY3/wB3tL7917ocffuvdf/T3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3TJX5/G0FUuNaZqvMy04qoMJQKKrLS0zyGCOrakQ/s07Sr4TWVBjp0cgSSpf37r3UF 6PcGXMTVNfJtuhWeGY0GKakqsvVwI4dqTKZSqjkip0mjYxVENBH5Y2UPT5AX9+6908Y7GUGKhaCg pkgWR1mqJLvLVVtSkCUprMhWTlpqmoaOONZKid3kfSNbE+/de6cffuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 QI9z/Izpf4/YefM9r79wu10gxNRn/wCGSTNWZ19v0eTpcNktzNhaISVEOHoaquo48rnKlIsdjlmS bIVdLBeUe691q89nf8KON5d17z7M6y+KnSW+uvU6/wAjh6Q7j3pQ7My+5t4Y3O4zE702luzbOYw9 fm9vU+OytHBuOhggeKXF5enWlqKLfe36isoXkEfLvKe+803H0+yQGUjieAFQ2kk5opZdGsgRqxUS MgYHoN8w82bDytb/AFO8ziIHgOJNCuoAebANr0D9RlDFFcgjqrPc+G333BuWv3r3lvHKbvzeUrcV XVtFJl8rlaWprNvUFPhcJlanI5t5q2espocdjK7EZnK1WT3XhahJIKfeFbTEE5NcrewG0WyLPzPI Z3qDoQlRhmIDEGgDKVEkY10dKpPpYqcaOaPf/drl2g5ZjECUI1uAxyqglQRUlWDGOQ6Ko9Hg1KGC zx2Lx+Jglp8bRwUcdRV1GQqjCgWSvydYwevyuRqDeSpq6lx5KmrnZ5pnu8ru5LGfNr2nbNmtFsdp gS3iWlFRQBgAVPmxoANTEk+Z6gbc923Pertr7dZ3uJWrVnYk5JNB5KKknSoAHkOteL+dn2VuZuw+ pOnkqp4NoUmxP9Jc9NDPWxU+U3BnNyZPa0RyNOsv287UNPiiaVnh8kP3c2l9MzD3in94rdrt99st lqRBHB41PIvI7qSfWixqBWunNKajXKn7u202ibFeb3QGeSfwa8SEjRGAHpVpGJp8WK10jqjH3jl1 kX1ah/KG7K3Rtb5Z4fr3G1NQ+2e1tt7tx25McZ6449KjaO1a7e2Gzf2cUqwfdQyUL0cVRLE7JFVT xpp8zEzL7GbveWHPkFhCx8K8SRJF8jpjaRTTgCGQd1K0JUGjGsO++e0Wl/yJPfzAeLZvG8befdIs bCvEgq57a0qAxFVFNqn3nJ1g31imRpIZI455KaSSN0jqYFgeand1KrPElSkkRZD6lEkbKSPUrC4N JVaSJo1YoWBAZaalJFNQ1BlqOIqpFeIIx07C6xyrIyhwpBKtXSwBrpOkq1DwNGBpwIOerJv+EzPV /wASOvaj5U9Vf6H9j/7Or012jW7pyPfW6aWi3d3T2f0D26HzXXu4jv3LGSammo5PvMLnsdgYKClT x46asp5Kqt+4n5x88bFPy3zTebTOWbw5CVZyCzo2Uc082Ug066Lckb5BzHytZ7tAFXxIwGVAQqOu HQV8lYEV6GTE786p/l5/zUczsrZ2W2/TbF3huOhpO1ht3Ibdq6HbPTHyiy+V3TsPbHZcGMqTkKHM 9U9o47OZHb75Slgx2O673tW08c6phKKndXt/LvMvOG2Xe+LMbhduVFYSPLJKRI0jKkShZCQXJNCV GqQsKjxGVLuHMPLXJ+52mxtCLdtxZ2UxpFHEDGsas8rFowDoAyAx0xhTQ+GrXNd2/PnpbqndG4Or NlUu6PkZ35tvHvkc/wBI9E0+G3HntiUP2z1MWY7v33m63HbQ65xZRGl/iW/Nw4mOSMMaUVMgETAr oa9al3yh+ZsfzH+QG1u3t1UPV/XWU3b11UbN6m29s2syWT/0q7B2juHI7oXI0HaW54qOPfsm3TWV 8skm1cZRQYb+I1tPkoaiR6WoizD9m9u5e5bvJ9tt98gvLqYUa3hKaC1dQdJKVmZY1ppRnSKshB76 9Yfe8W47/wAyWkG43Oxz2drCarcShtYWmko8daQqztXU6o8tIwR2U6DIksSzEliSWYklmYm9zf3k OAAKDAHWPpJJqck9de9dU6TvxG3vlPhP/MV2n8o8Pld+5LZ288DVbN3xsOnz9fPsii2vuXO4qDfP 8F2nHU0tMmQyNbHRvjaMvPPnN3ZXBR01PBHSZGaowo99uUjsnM/79th+huNXPymFPEHEnuw/ADuI 8us1fYvmwb1yz+47g/r7dRR84TXwzwA7cpxJ7QevoIYnLYvP4rGZ3BZKhzGEzWPo8th8vi6qCvxu VxeRplrMfksdXUrNHNBPE6SwyxsVdGDKSCD7g3qcenH37r3Xvfuvde9+691737r3Xvfuvde9+690 ltzMmMjp902524lVLkWSJpZZNtVKo2fiRYYaiZvEsMOQWGmj8s0lLHApAla/uvdKn37r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3XBwxRgjaGKsFewbQxFg2k8Gx5sffuvdaeP8w3bn89r4OVHw4lo/546dkU3zC+ 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 f8kyp/mq/G7AY3OZLf8A1318es9t7tlr3w+1uz+x+x6HpzKYjdU0NLHLVrtTPVOQhqRFTJHWy0Gh XignE6e690WrJfDr/hQX8csJt/5K9ffzNMD85+4qdNsZfuD4U9hdI9WdZdK7+SaFzuzbXTnY1PPj Tifs5Hgjx05psI1XFDNU1E0UsiUDe691sB9od3bG6E6N3h8gO/cxjerNidZde13YfaGSr6x8zR7P xuFw/wDFM7SQz4uIy5KaJw1LSRUVM01ZMY4qaF5Zo4z7r3Wtv1h2h/Ot/nQrUd4/HfuLB/ylP5dm 5qnIR9H7myfWW3O3vlz35saOoSnxnZNVgM1IlJgKTJeGqkpZqbL0Pijmh+1jzUCR5Wo917pV9n/F 7/hQV8C8HW91/Gf+YNjP5oe1toLNuLenxL+R/Ru0didhb0wlDC5yFF1f2NtOpq6+ryYiYz0+NXI4 7yGPRBHXVDRUc/uvdW//AMtT+Yj09/M2+MW3/kX1Rjc5s/IwZav2N211Pu2N4939P9s7diiO69h5 uVooVq0hM0U9BkYoo1qaaSJ5IaWpFRR03uvdFfz38z/DbB/niYz+WdvDP0abV7b+GGwuwutkenxo /u/8hcRvze2Y3Jt6oydFT+df7y7Ohx0wjytaI4qjF0EOPp/Nl6h5fde6ug9+691T589f5peyviN8 3P5bHwspchianfvzH7ujw2+qKZKWvq9s9T5fDZTYmyamSiEyVVJPuDfNTi4MZXpDNCY8XlIJRGXj kHuvdXB+/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XugO+SX/Mkd/f9QGN/wDd7S+/de6H H37r3X//1N4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3TPW5qko5no4lnyWUEQlXE41 EqK4rJDNNTNUa2SKljmMEscM9ZLDC0g0eTUQPfuvdQGoc9lfKmUq4sPQF5oxQYGpmlyFXTa5oEer z80cLweaF4pGioYY5qeZLxV0i/X3Xunmhx9FjYWhoKWGljkmlqZREoVqmqqH8lTV1Mn6pZpWu8s0 hLuxLMxJJ9+691O9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdFY+S/wA0Pjd8R9vV2e7x7NwO2aqjwdTuOLak NVBX7wrMLSiVXzjYKFw1FilliaCfP5V6TE0shH3ldTIdY917rX++Tv8APD7N7EjyGzfivtDKdfuK iMzZfP46lrd3jFpJBlqV8kHkENN/EqOmylJ/DIZcPj8rSy0uS2p2klYr0sQm5d5N5i5quPA2W2aX 1alEGGpVzgAlCoY9oagJFegzzFzhy7yrb+PvVysfooNXOVrRBkkBwxUdxWpUHqm/KYXfm+66pyfa 3Y25t2VdXmqfctawzuSkrK7dlBh12tS70qdxuKeqbNx0VDiJcfuwQpvKEwNS5TdmehZpHyb5T9gd psCLnmaX6t8/prUR/jHceOVZagdyOgZJaY6xn5r9/d33AG25Zi+lTH6jUL/gPaOGGVqE9ro5V4q5 6WFJR0dBE0FDS01HFJU1la8NLDFTxNWZCrfIV9U0cIAMk9RLLPNIRqeR2diWYkz/AGtlaWEP09jG sSVJooAqTxY+rE5ZjVmOSSeoCu727v5vHvZGlegFWJNAOCj0UcFUUVRgADqT7U9JOve/de6q+/mY fC7P/J/Zm194dZ0mPqO1Ouf4jTQY2pqoMa+7tqZWSKepxCV06FDU0U8RqKCKaWKMiaqBcyPGjQd7 ze3N5zfZQ7xsqh7y0UqUrQyxE6qL5FkNSq4LBmAOoKrTj7M+4dnyjeTbPvDaLO7YMHpURygaat5h XFAzZClVJGksy6x9f092zi93x9f5LrHsKh33NMtPBsyp2ZuKHdNRM6s0cdNgHphVSF1VmTREdQBI uOfeHEu1bpFdGxltpVmBp4ZjYPX000rX8usxot12ye2F9DcxNCRXxBIpSnrqrSn59XkfylviTkdl 7x3h3F2xi5tr9i7co5trbS6y3Vjq/Bb+2xSZukjfI7/zG28stPV0kFdTO+NxUssJSeNq4i2mNmyM 9iOTGt96uN73msF3agxx20gaOddaLqmaNgrCMo+hDQgktkUGrHT325zW52W32TZ6T2l0VkkuYyrw NodtMKyLqUyB01uKggBcGp030+8rOsU+ve/de6A/sLrLszMb7252R0r8i+1/jBvODZ25uqt/bx6X rkwO+N+dO7ty+Oz2V6+p94wyR1mGCVuPWrpa6jLtHLIztE7LGyRV7ge1thz9f2t/PcG2a3BR9Kaj IhOoLUuApU1oaH4jWtABK3t/7pXvIVhdWEUAuVuCHTU+kRuAVLUCMWDClRUfCKUqSZnVXQfWPTux sx19tLCT1eA3Vksnnd7vuzJV278jvvce4MRTYTcuf3bVbgkn+6nycNJEa6MIlO7F2EK+RwRTy7yT y9yxs8mx7ZCfBnBEutizS6l0MXOBlcEKFX5VJJC3MPO3MXM27x73uUw8eAgxaFCrFpbWAgycNkFi zfOgAB5v5Y+6/j1kP5iVN8O/k313iMt1h250gnZvxu27uKtyEXRO4+9eot2Zvd3ZOH3j1aq022dw Z2DB1kW4sG+dpMgMP9lWVdCaOsysplxe9/op7Pe7HbIIFgsYYWaEIAFZ5H/WY0UUclEDAliQoc0L nrJ32Clgu9jvdynnae+mmCzFySypGv6KirGqAO5UgKAWKCoUdCP/AMKJvlP8QvlDsLqXqr4h7jqe /fnj8We4cH2j1Dm+j8XQbq6o69xdPkU2x29192v26lTTYGmxeWx1O1NXYfFVlZWfxOgxtHWwUsUx Zoq5SseZbjeYLvliCSa4t3EqlFLadBBq2KUyAQeINKGvUrc133Llvs89pzNPHDb3CGNtbBdWsEUG Qa4JBHAitRTonD6A7BTdQzaTqJut7A3IW/8AySP9Ye+j0XiNErSjS5A1AGoBpkV86Hz65ySrGszL CdSAnSSKEiuDTyqPLrj7c6a6SW+MPW5nbWRgxT5CLNUsM9dhJsRWxYzNxZFKKWkb+7+XqZoIsfkp aeaopsflmkDY6oljr4Ss9PE6gj3D5YXm3lS52sCsoHiRca+ImQAAy1LCqgMwWpBbA6G/t7zO3KfN dtuhNIifDl4U8N8EklWoFNGJUFqAgZPW05/Jh+Y1P8mPjbDs3MPjYd6dRR43EyQYbHNitvSYCtok mjotr42lx+Px2OxlDUs822tt441UuK2VkNlS5Kf73KFffO+WN4ZDFJhlJByDkGhyKg/aDTroZHIk 0ayx5VgCMEYIqMGhH2EV6uQ916v1737r3Xvfuvde9+691737r3Xvfuvde9+690mtvf5B95txgR/A /t/4d/te3qzX/Bvpexg8U1B+5I0r/beeS3mW/uvdKX37r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Wvj/AMKA f+6LX/je7+Xn/wDLb7917q5X5Uf9kw/I7/xA3b//AL77I+/de61Tv5R+6P8AhQrB/LX+HVP8X+sP 5UmQ+P8AB07iYeqq/u7dXybp+163asWQqkpave9PsmoXFpWSSCR9FGAioUBAcN7917rYi+CGW/mi 5ROzz/Mm2r8KtrvA2zR07H8Pcn3BlErFkGUO/X7Al7YnlKlCMOMWtCi/WqMzPeMJ7r3Wu38BP5dt L85P5aO+NzdX7upOkfmh8fP5jXzc7H+JnyMgog1bsTsLD941lfRba3ZUUkUtVU7Xy08cUeVpESXx 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 pkmhxHV+X2VS1FP27hc1lsjHTkU23sjj8nBJXyxRpNTwLVoPDKjH3XutQ/5N7Fynbvxa7T/4UUdr bPzg39RfzEPhd3f8StvZXHud2dWfCHoH5D4vp7aeKxmLr6iA4+o3qMnPmNwUMNXLjMgaagy0JQVk k6+691vhAhgGUhgwBVgQQQRcEEfj37r3XL37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdAd8kv+ ZI7+/wCoDG/+72l9+690OPv3Xuv/1d4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdMGQ3DS0kstHR01 ZncrD4/JiMMlNNVweRVlQ11RWSwUlJqjJli+9qYfKqsIfI9lPuvdYWxuYymsZev/AIdRtrT+F7eq qqGWWM+aEtV7j0w1XqUwTxiijpHikVo2lqIzc+69080VBQ42nWkx1HTUNMryyinpII6eLyzymaol KRAAvI7M7seWYliSST7917qZ7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6Kz8hvmb8d/jFidxVvaXYmDosxtn Bw7gyu0KDLYQ7ix+OyNFX1O3a7c0uVqqTG7boMtLjKyhxmb3XkcXipqxBS/frMyqfde61eP5gX86 P5t90Ynd3XX8vqh2/wBM1mH3HSUZ3bvDHZmnz24cNi9xVVBuPE5DJ7ixsOQwU1bjJ8ZWSUTYjBVc MbGv21ubcMDrpF/L/IPNnMzqu02bOp4s1EVQUDqWLEaVdWBjYikmdBbS1Afv/PvKfLaMd2vFRhwV auzEOUYKFB1MjKRIoNY8awtVrXxXYXdG+9yHf/bO4Kzcu9pss24EqlzeSyUuHz8k1TVfxjH7geHH L/FqeWrqo4d04rDYfNVlJK1JnKvL3kmlyW5Q9gtl20Ld80yC9m/32tVhHxChOGfBB/DRlxUdY283 +/m8blqteV4zZQ/78ajTH4TUDKpkEfiqrUND0qaDHY/FUkdDiqChxdBDJUyw0ONpKfH0UT11XJXV rw0lIqRoZZ5ZJpNKjU7sxuzEme7OztNvgFtYxLDGtaKihRU5JoPMnJPEnJNeoGvL273Cc3V9K00j cWdixoOAqfIDAHADAFOpntT0k697917r3v3Xuve/de697917r3v3XuknurZO295xUIzlFKa/ESVM +Cz2Mrq/Cbm27U1saw1lTt3cuIkgraJp40WGqWnnVKiHVBULLA7xMUbtse37yii7UiSPMcqMUmjO cxyLRlOeFSp/ED0c7Tvm47M7G0YGOTEkTqHhkHpJG1VYY40DD8JB6T4l7H2oAs9Oe1cMoREq6L+7 +2OxYSfHErV1BUtj9vZPXK8s09RTy4YU1PGscVHXTsWJbq5j2c0cfvO3HmumO6UfNSVhmoBkqYnY mgjPRjp5c3g1Q/uy4Pk2qS1Y/JgGmhqTgMJUUCpkHSgwG+dr7lq6zFYzKGPOY9WmyG2cvRZDb+6a Gj8328WTqtsZ6Kmr0o5nBFLXGn+3qB6oJZF59r9u5g2rc5WtreXTOmGhkBjlU0qQY3AY0/iUMpoa MRnov3Hl/ddsiW5uItUD5WaMiSJhWgIkQlRXHaxVhUVUHHSs9nXRL1737r3QNdz/AB+6l+QWJweF 7Y2nT7no9uZmLN4aQ1mRxVfRTaRBkqBMliJYJzR5Cm1UmRozIYp4mGpfJHDJGFea+TNh5yt4YN8i LiB9aFW0sK01LXPa4ADDzAFCCAehXyrzlv3JtxNcbHIEM6aHDDUp46WpjuQklTXBJqCDToRttbV2 xszExYLaO3cHtfDQyvUR4nb2LocNjlqJUWOap+zx6RxmWQInklK6nsCxJHs52zaNr2W2FntFvHbx CnbGoUGgoCaCrGnmak+Z6Jtz3fc94uTebtcSXEhr3SMWIqakCpoor5Cg9B0/+zHot697917r3v3X uha+EXyYofh38xdn7iy6VUWzt9DNLlqiippsjkKmjy06SbyxUNBhqPO7hr/vCyzVENPDTfxjcUXW G3aZo6XHPpwm98+UxsfMv73tlpBf1b5CQfGBVyTTjRUVI0Ma5J6zY9j+bDvnLX7ouWrPY0X5mM/A TRABXhVnZ5HEjYC9bz1PUQVcEFXSTw1VJVQxVFNU08qT09RTzoJYZ4JoiVdHUhlZSQQQQbe4P6m7 rP7917r3v3Xuve/de697917r3v3Xuve/de6S24ljx8lDumyKcAlXFkpXKqF2zkmibOPrmljjjWna npshJJokkZKZoYl1TH37r3Sp9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691r8fz+aWpqv+GYft6aoqPt/wCf P/L4qqjwQyTeCmh/vZ5qmYxg6Y1uNTtYC/J9+691cd8qP+yYfkd/4gbt/wD999kffuvdavP8of8A n7fyjfjN/LP+GnQveHzCw2xu2er+mMJtjfe0Zepe/s9LgM7BW1NTNj5Mvtbaldj52VJUJelq5UBN tVwQPde62D/hP/Mz+D38xdeyH+GfedJ3UnUTbSXsOSj2H2jsuLbr75GSO1kaXsfB4dapqoYjIErR GYxCIGYR+SLX7r3Vf3/Ccz/shjuD/wAX/wDnD/7+6s9+690rf5un8unurvDG03zM/l57zi6W/mQd KbMzeD2jnoKfDHBfIvq2roZhn/j52RS7hBxUxrEkf+A1+Xhkp6epIinNOjwZHGe690Vr+Uj8gsX/ AC8P+E1/VHfHd2AymFqvjZ1/8m23DsLNU9dhNw1fZOG+V29tp4Hq6rpXp5aijyWR3JJSYHRJTM0N RN+5H6GHv3Xul1/Km/lFfHrcXxLwfyG/mEfFr49/JD5i/MbdW4/lt3VurvrojrfsTcu08t3fNHuj CddYqXfu31rsXT4zGPSPW4qSFGp8lNXRksqpb3XuhK/mKfyOvh53B8R+1cP8O/id8cPjX8sdn0FJ 2h8ce2ehumevOmd/YrtzrqqG6NrYCHenXsOBq4qXNvA+Gn8+QEEBqUrShlpYWX3Xug47e+auL+f3 /Cb/AOWfyQRaDH75zXwU+RO0u6tqUf28E2xu8di9eZHbfaG16zExVFTJQBclBJW0NJUTNMKGppJH J8gY+691aV/LG/7dsfy9f/FHfib/AO+FwHv3XutXX/hSl/K275676A+WPyf+AlVmsd0l8jItr7r/ AJjnxc2nicVWbe3VVddb1x3ZmN+Um3sDMhkpq+gr8NSz7qqcQFq/CaitmWajqMtLB7r3Wx3/ADXf gQn8x34M9hfHjDZzG7O7ao5dt9p/HrsLJrUrB1/3x1xMcxsHPvX0KSVNFDUlqnDV1dSRSzwUVdUy RQzsBDJ7r3RF/il/Pl6d2xS4X43fzXoa3+Xt85th4rG4HsnDd649ts9N9nZShkq8NL2h1Z29QxHb TYbNPjpshTiorIKceXx4+oyFOi1Le690PvyD/n3fy0+nsXHiurvkFtH5jd17ij+y6w6C+HeUh+Qu ++xd0VVVBj8Vt+mrurxlcZjfLUVMPklyNXG4iErQQ1Msfgb3XurBPiB2R8ge3fjv132R8n+jaD43 9zbroslkty9OUW8It7SbSoTmaiLbYymWhghWGsq8ctLW1OPJkkpGl+3nZaiOWGL3Xuq7v5sn/ZRP 8lX/AMaj7X/+Bq7E9+691dT7917r3v3XugG+VH/ZMPyO/wDEDdv/APvvsj7917ogH8g//tzh/L1/ 8V529/7tKz37r3VvHv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917oP+zeqOre69n5LrvuXrXYPbfX+Xmx9Rltjdm7O27v3Z2UqMVXR5PFz5HbO6qarop3pqmK Kop2lgYxyosiEMoI917oFet/gp8Ium96YbsjqD4cfFXqrsTbn8R/u9v3rf49dSbG3pgf4xiZ8Dlv 4NunbGIpa6l+6oaqpoqjwTr5IJpYX1RyOp917o1Xv3XutVn+c5/O2672B3bsb+V/8fvlX1x8beye 2M1X7b+V3zQ3DV1uQw/w26vpsNPld04zZceIilSp7CyVJTz43Gs9RCmMrZqaDzU9fO1dhfde6MV8 Lf5j3/Cfb4H9CbJ+M/xm+avx62zsXbOqaeefcWSym8+wd5ZNY48/2B2Bn48dHLls/lpY0erq3RVC rFS0sVPR09NTQ+690OHz8/kidTfzDvkj1z8n+yvmP89+od89M4ejxfSuH+OHb3WvV+2+oqqGRqnJ bp2DPJsvIZikzeSqHM2QzD5eSqkVYKdZY6SlpaeH3XuqFP5sH8oV+gu0v5T84/mZfzX+6q/uD+Zr 0N0NS5v5BfLWl7Qz3TMPYMdZUVXaXRGRrtuQLt7d1A2PibH5fw1AiYK/hLRqffuvdWPfzQ+kOxP5 fM38rX+YtsHK9/8Ayuw/8sjdPY/XXyc3Bv7NJ2l8iOwfi/8AIfbC7T7D7R3luBRi4ctV7bWOSoXR RJ+/U0sjinpKeoqIvde6Gz5Nf8KKf5fmE+N2Q3J8OO8cT8sPk72ptvIbd+Mfx76c21u3d3aW5+3N w0n8J2JRbx2H/DDX4CljydRSvVrnaOnllQNDTQVNQ8cL+690EnUFf8mf5B38oT4P43KfHat+S23u t9y5PdH8wXIbMz2Rm7V6Q2T27u3L9rb/AN7bP2TRR5Oi3NJtWfLPQZmtfcVLTk0SzRoaSvlrMV7r 3TB/Nv8A5sn8sj5U/wAsnvPozo/uXYPzP7g+XPV03W3x1+OnS/8AFd+9xZjt7eNVSU3VmczPWuIp mzW3qnb+cmx2dFPuCjoZnloxSRRyVTrA3uvdHp7P/lpZn5efyS+sP5dfyAyw2927S/Dz477Fym7p ZqHMHZ/yF6f69wb0edqq2nWtjqKaPcGManyUtJreajkqRTSrJJHKvuvdEX+HP89HGfFLGYX4T/zt sdu34hfLLqPC0m06DvXfG1N15fov5Tbb28rYbDdobZ7D29SV1NDkq6GlkfKyzsMbUVMcs1JWiSf+ H03uvdU9fzMf5hfxB+Kf8yLq3+ZJ/Jp+QWzfkF8lOyv4vsj5v/D/AKfwW+t19afIjrLD4qbK1/am W3Rs/FzYmhy1KKGJa2qgqZpnnjoczHTusOZOS917q/b/AITsdGZWb4v7/wD5jvavZW2O2/kt/NJ3 lD8iu29zbJyArNo7QwWMq8ji9g9O4ungqJ6enq9sCqyVDlqeKOF6Sp/3ETo7YlZpPde6VX8gCmp9 0dNfPz5FUC4+XB/K7+bH86O69nZPHmWVMpsdd9UnXeBqTVuNEoMuBrGV6djCdRKhXaRR7r3VZHzD +L/y263+cPYn8qP444qtwPwh/nKdp03yg3h2Zh8hV4vIfHDbmy56ev8An5tDZxp4KpXm3PHFgJoY 8j9vh4abI4/b0ELvkJmX3Xurs/5wHx32Nnv5L/zg6H2ntfEYHYvXPwy3rX9f7PxcUVBhdu0Hx22a nYXXeExMDKyQwUEu3KCKlTgKI0GtANa+690dH4Tdr1ffHw1+Jnd1eIlyPb/xq6M7NyUcFbHkYocn vnrHF7lyNOmQhihScRz1MieVYYw9tQRQdI917oz3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 A75Jf8yR39/1AY3/AN3tL7917ocffuvdf//W3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Sdl3NjPu6rG49pM7laG oSlyGNwxgqp8XO0VPVmHMVEkkdNRSfbVMVUkNZPFJNFdoElNlPuvdYP4Xmso0c2ayj4+m0MHwW3K mWCB2kSI/wCW7jaOGumaKWNngejFCuiRo545wA3v3Xun6ko6PH08dHQUlNRUkJfxUtHBFTU8Xkcy yeOCEKq6mZmNhyST9T7917qX7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6J78nvnZ8bfiXgc/lO099UMmb27B jXrdk7fr8DNuSmrNwYzIZXZ2M3DX5+tx2E25JuFMVkafbc27Mxi6bK1cDUNBPUVpSnb3Xutdv5L/ AM6jvTvCDdnXXx/23kOq8TPPndrVO4KSPdlFn6KllFZt+TK5XJTz7S3Vj5RSZLB5x8RPL1/ubDzx tUYwbyxhtONeVvb7mbm2cJt9uwiqNUjCiqDoNasVFdD60BZRIAQhJFOgTzTz/wAtcpwF9wuFMtDp jU1ZiNYpRQxprTQ5VWMZILqAa9VOnY+U3Fm4N3dg7q3BuPci5nLbnS+Sggjxe4dyZA57PZHF1GBo 8VT0VVU1lVlYMpWbaxmDjz1JVuu4qPJ1JkqJMoeUPY3YNj8O73ljdXK0OCQisNB7Wor9sia42Xw3 AZo3Mi8cYubvfHft78S02ZRa2zVFSAXZTrHcKsndG+iRWMiEqsiCNuC8xuNxuGx9HicRj6LFYnG0 0NFjsbjaWChx9BR08Yip6Oio6VVjiijUBUjRQqgAAAe5stre2soFtbONYo0FFRFCqo40CqAAK+g6 hS5ubm8na5u5Glkc1Z3YszHhUsxJJ+09Tfb/AEn697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de6Y87tnbm6IKam3HgcRnYaKriyFAmWx1JX/AMPyUHNLksc9SjNT1UJ9UNTCVlja zI6sAQX7jtG2bvEIdygSZRw1CpWtMq3xKcDKkHAz0Zbdu25bRKZtuneFjx0mgalcMvwsMnDAjJx0 koNj5zA6f7n7/wBx01LFTPTw4Lfc1R2Xg/uKioNRWZesy2dqI90z1RvphSTdH2kQ4WlI49lEewX9 jIG2jcJUjrmKf/GY6UoApdlnUD5T0+XRtJv9jfRld42+J5KYlg/xaStaksEVoGJ+cFfn0sKuuytG tfKMHJlIYp8fDjYsNkKJ8pXR1BWOuraylzZoKWlSAlpDGldO7IPQHf0+zL6ndYT+tbCUV4wyCv2l JfDAp8pGqATxopLfptqm/sbkxGnCZDT7A8XiE1+ca0JA4VYTRXRHIx4sQ5A1b0z1LsmKycmOhjja zrUZuKE0KsLghfubn8X5tpt6tIlLXKSw0rXXFJTBpXWqsmeI7sjPVl2a8lYLavFNWlNEsdcitNDM r44Ht446bv71bW+6r6JdzbeesxUUc+Tpo83jZZsdBKrPFPWxxykxIwRirPYHS1jwfexvuyFS/wBZ DRQCayoKA8CatgHyrx6qdi3oEL9JNViQKROakcQKLkjzpw6dMfWUWWgjqcVVU2Tppi4hqMfPFWQy mJikgjlpiytpIIax4IIP09uw7vtM4BguoXB4aZEP+Bum5do3aAkT2syEcdUbin7V6yyyxQxyTTSR xQxI8sssrrFHFHGut5JHawVVAJJJsB78d22pQWa5iAHE+In+frS7TurEItrKSeA8N/8AN0F9d3n0 hi8jVYfKdzdTYrK0LUq1uMynZGzMbX0j1yJLQpVUlbWxujTLIjRKyguGBUEEey2XnDlWGviblagr So8eIkV4VAYnPljPRlFyjzXMB4W23RDVofAlANONCVAx55x0hu3967Xy23qrHUWM7ezOaxEsG5ds 1XW3WPZGWerzOJWeWjl2hvOOgTay5eIRyzYKtyuRakoMkKDJFGlgpSY79xrjZ+cuVLnbtrjnu7hR qh8K2umUyCtAZFjVCppXL6NQRmDUUGQvbi33jk3mq33HdJILS3Y6ZvFubVWEZ4kRtIzhhwwmvSXV StSRtt/yIvmXmvlt8KNu0+89gL1dvDq6rqtu4/ZlLlcRnMJRdXTZSsp+t023W7Zx2Px1JjKKnpZ8 Xg8L+9XU2BpsLXVs9SuVpK+twfkQxSMj8VJByDkYORg/aMdZvRusiLImQwBHEYORg5H556ux906v 1737r3Xvfuvde9+691737r3Xvfuvde9+690mduaqKKp27PMsk+CkWOkBYeWTb1VJI23pislRUTsI 4UagepqGV556WeXSFYe/de6U3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917qFWY7H5H7X+IUNHXfY1kGRovvKWCp+z yFMT9tXUvnVvHNHqbRKlmW5sRf37r3UiSNJkkiljSWKVGjlikVXjkjddDxyI9wVIJBBFiPfuvdJP /R31/wD88Ls7/wBBnCf9ePfuvdPGJ27t/AfcfwLBYbC/d+H7r+E4yix33Pg1eD7j7NE16Nb6NV7a jb6n37r3Uyhx1BjIWp8bQ0ePgeaWoeChpYKWF6idtc8zRwKql3bl2IuTyT7917qb7917prrMLh8h RyY3IYnGV+OmneploKyhpamilqJKg1ck8lLMjIztKzSs5W5clibm/v3XunT37r3XvfuvdNMeDwsV LkKGLD4uOiy01VUZWjjx1IlLk6itQJWT5CnVAkzzKAJWkBLAAMT7917qfT08FJBBSUkENLSUsMVP TU1PEkFPT08CCKGCCGIBURFAVVUAAAAC3v3XuuckayKyOqujqyOjqGV1YWZWU8EEcEH37r3WT37r 3QYdrdJ9Nd77bGze8OpOsu5Nofcw1n91e1thbV7E2395TypPBV/wPd9JWUvkR40dJPFqDKpBBA9+ 690l+nvi38ZPjzLk5+gfjp0V0dNm1jXMzdQdR7A60my6xACJcpLszH0TVGkAW8xa1vfuvdDv7917 qJU0NFWPSyVVHS1UlDULV0UlTTxTvR1ao0S1VK0oJjkCsyh0sbEi9iffuvdS/fuvde9+691ikjSZ JIpY0lilRo5YpFV45I3XQ8ciPcFSCQQRYj37r3WGjoqPHUsNFj6WmoaOmQR01JRwRU1LBGvIjhp4 AqIv+CgD37r3Uv37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+690k6jYex6uonqqrZm1KmqqZpaipqajbuHmnqKiZzJNPPNJCWd3YlmZiS SSSb+/de6xf6O+v/APnhdnf+gzhP+vHv3Xulj7917qBWY3HZE0jZDH0Vc1BVw5ChaspYKo0VfTm8 FbSGdW8cyXOiRLMPwR7917qaQGBVgGDAhlIBBBFiCD+PfuvdF869+JHxS6k31lO0eqfjJ8e+suzM 6cq2b7F696X632XvrMtnKg1mbbK7u23jabIVBrJmaWqM1Q3lclpNTG/v3XujBkBgVYBgwIZSAQQR Ygg/j37r3Re+vviP8Uuo995XtLqn4x/HzrLs3PHKNnOxOvumOuNmb6zDZuoNZmmym7duY2mr6g1k rNLVGWobzOS0mpjf37r3RhvfuvdBz2f1B1N3btefZHc/V/Xfbuy6qaKoqdn9n7J21v7bFRUQMHgm nwG66arpHdCAVZoiQeQffuvdJLqD4wfGr49/xP8A0BfHno3o85ok5j/RB1NsHrT+L3VF/wByf9y8 fRefiKMfu6uEX/Ui3uvdI/4w/DH42/DOg7Kwvxm65HVW2u2exM12vvDZuH3XvXI7GTfm4pGlzma2 jsjcGSrMTt1aq8cctHt+joqYxw08Xh8dNAsfuvdGUx2Nx2IpI6DE4+ixlDC0hiosfSwUVJEZXMsh jp6ZVRSzEs1hySSeT7917qUY42kSUxoZUSSNJSimRI5GVpY1f6hWKIWANiVF/oPfuvdcaingq4J6 SrghqqSqhlp6mmqIknp6innQxTQTwygq6OpKsrAggkEW9+691xpaWnoqeCjoqeCjpKWJIKalpYY6 emp4Il0RwwQRAKiKAAqqAAOB7917qT7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XugO+SX/ADJH f3/UBjf/AHe0vv3Xuhx9+691/9feH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+690wTZ+naolocVBNm6+GY09TFQFPs8dMrxJMmVykpE EDxLNFLJTB2qjETJFTygW9+691hgx2WyCRS5+sSmNoZHwuBqamKhilXwVHiqcyyw1dYIpo5VV1Sl hmhkMc9I3v3Xunylpaeip4KOip4KOkpYkgpqWlhjp6angiXRHDBBEAqIoACqoAA4Hv3XupPv3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917okXyV/mGfFf4svPi+xexcdkN4w5XH4KTYu1KzD5DcFJnsrJj/AOGbezdb k6ujxOKylZDk6SqxeIy2Spq/KRMRiqWulAiPuvda13yI/nC/Nn5ndmVXx0+DHWvY82Qq6KgmqNnd Gbe3HWdgLSVk8dM1Z2R29kp9t0+ycYKylq6KprNw5vYmYwtVpWowm56V2p3u8UsYDSKVDCoJBFR6 j1H2dNpLFISI2DFTQgEGh9D6H7eqp/kV8BflP8BPld8fvkB8yp+upaT5tYDc/VCTdZ7grMzUdcd8 7Ykot07PwHae/qDE7aoMlmN3YUZTG10O1Nv4zB5SqFUtRj5yZKyskj2mPL787W1tzBEJYpuyPUSA k+pWibGcsujiB391VqDHXuwN+Tkq5ueXpTFLD3yaQCXg0ssq5x8La+BPZ20ahBgKSkpaCkpKCgpa eioaClp6GhoqOGOmpKKio4VgpKOkpoQqRxRRqsccaKFVQFAAAHvPmCCC2hW3tkWONBRVUBVUDgAo oAB6AdYETzz3MzXFy7SSOaszEszE8SSakn5k9Z/bvTPXvfuvde9+691737r3Xvfuvde9+6912AWI VQSxICqASzMTawt72SAKnAHVwCTQZJ6UG39i9n722HvDtbrrqrsDsTqvrvEZfc3YfZ208PTy7A2n tjbPk/vflRurKT0tLmajDrE8mSwe2pMlmIEHkbHeIM6xtvfutybs10lkLkXMrSRxsISr6NZ+JqGr AKCf0w9G0q+gupMi7L7Vc47zbPeC2NtEsckimYMmvR+FaiiksQP1ClV1MmsIwCfIKEqwKspIIIII INirA+5IVlZQymoOQRwI/wBX+r0jplZWKsKEYIPEHrr37qnXvfuvde9+691737r3Xvfuvde9+691 737r3XYZkDaWZdSlW0kjUp5KsB9R/h7bkhinXw51DqfJgCP2HHTsU0sEniQMUYeakg/tGekXl+uO u9wU1RRZ/YWy83R1k0VRV0mX2tg8jTVU8FUtdBPUQVsDq7pMiTIzAkOocHUAfZRJyxy3KCsu32zA 8awRGua+aeuft6N4+ZOY4iHi3C5UjhSeUUxTyb0x9nU6PZmz4ZEmi2ptqKaJ1kilTBYtJI3VtSSR usQIIIBBBuD7uOXOXRkWFv8A84Iv+geqnmLmAihv7gg/8Ok/6C6VBkkKCIs5jVrrHqYohsSSq/Qf U+zKG2trdaW8aoP6Khf8AHRbLcXFwddxIzn+kxb/AAk9LjqrqftzvrdNZsvovrDd3bW5MTW4+g3H Htilo6fbuypcjTQZKnO/995+ejwWDdqGdcjBR5LIxVlZTKzY+lrJNMTA3mr3C5a5RQjcZg0ox4a5 Neyuo5+HxI2dFDyrG4kETLnoY8q+33MnNjg7dCViOfEbAp30oP6XhyKjsUiaRDGZVbHRi/j7s3vL +Ud/MO2Tiu7q/Y0W1+7NrJu7NLsTM57cm15Nsbonp8N2lSUu5dxYAZqunwMmHiyWYrFoMdEyYbrb bWPSIZaaIYGc0bvbb9v9zu9nGYY7hg4jJB0VUVQEY0qaqlAo0AUVB2jO7lfabnY9gttou5BNJbqU MgFNdGNHIOdTCjPUsdRNWc9x3NwQwDKQwYAqwIIIIuCCPx7Iej/rl7917r3v3Xuve/de697917r3 v3Xuve/de6TmdkONkoc9rKU+Okany+qVkgTCZB0SrrZfLNDToKOVYauWpmDmKmjqVjAMpv7r3Sj9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3XvfuvdYEqKeRgiTwuxvZUlRm4F+ADf6e/de6z+/de697917oO8z251Tt3dFLsj cPZ3XmC3nXJTyUW0czvTbeL3PVx1Zb7V6XAVtSlXIJdD+MpEQ2k2vY+/de6EMEEXHIPII/Pv3Xuu LuiKXdlRRa7OwVRc8XJ4+vv3XuuMcsUt/FLHKVtq0Or2v9L6Txe3v3Xusvv3XuuCOjqHRldTezIw ZTY82I4+vv3XuvO6Jp1sq6mCLqYLqduAq3+pP4Hv3XuvO6Jp1sq6mCLqYLqduAq3+pP4Hv3Xuufv 3Xuve/de697917r3v3Xuo/3dL/ys0/8A1Oj/AOK+/de65LPA4ZkmidUF3ZZEYILXuxB4HH59+691 kBDAMpDBgCrAgggi4II/Hv3XumzM5rD7dxlZm9wZbGYLD46E1GQy+Zr6XF4ygp1NnnrK+tdIokFx dncD/H37r3TLs/f+xOw8fJltgb12lvjFRSmCXJ7P3JhtzY6KdSQ0MlZhZp41cEG6lr8e/de6V/v3 Xuve/de697917rgjo+rQytpYo2lg2l14Ktb6Efke/de65+/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3XuuDuka6ndUUcanYKtz9LsffuvdeR0dQ6Mrqb2ZGDK bHmxHH19+6912SFBZiFCglmJAAAFyST+PfuvdYfu6X/lZp/+p0f/ABX37r3WR5I4heR0jUmwLsqA m1/q359+6916OWOUExSRyAcEo6uAf6XX37r3WT37r3Uf7ul/5Waf/qdH/wAV9+691zjlilv4pY5S ttWh1e1/pfSeL29+691xFTTltAnhL6tOkSpqLXtpC3ve/FvfuvdZ/fuvdMu4Nx7f2niK7cG6s7ht tYHGxGfI5vcGUocNh6CBf1TVuSyLxwxIPy0jge/de654PPYPc+Ix+4NtZnFbhwOWpo6zFZvB5Gjy uIydHL/m6vH5LHvJDNG39mSNyp/B9+6907+/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917oDvkl/wAyR39/1AY3/wB3tL7917ocffuvdf/Q3h+v/wDmcff/AP1H9af+8NH7917o cffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690nJtwxyyy0mFpZs9VxTPTTtRPHHi8f PHLLTTLkszMRCrQTReOqpqfzVcWpW+2ZTf37r3WM4Sryo1birWmgZlb+B4t56LEqAwkENfOpWorx y8MyzMlLURkeSiU39+690oKengpIIKSkghpaSlhip6amp4kgp6engQRQwQQxAKiIoCqqgAAAAW9+ 691n9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3XvfuvdV1/Nn+Z/wDFv4M9Yb77E3/n8h2FkthfxKkyPXvVU+28zuyb cGHegly+z/vc/kcbh4M7SUeRp8tJtufJrmZsclRV0GNrUgkUe691rm9q/wA6/wCVnyxwGOyfR2Dg 6q613fg8Fn9v/wADz1RSSmlraLGbipxl994ox19QI8jQZTHJk456KeD7haDc3WGQo/JPLIvKftfz RzYFmtIvCgatJXwv4xXy+F1Ada+KEcSJHIvUdc2e5/K/KRaG7l8Wdf8AQky34DTz+JGJRqeEWQxv JG3VemK6wo2rTmt4ZBt2Zs0mSxSyS0lPjcTT4DKBqXI7bo8JQBKSkxNfTJSDLbaxcNHtueqp1rab A0MzsvvKHlb2V5U2NVl3KMXswIb9QVUFWZl+bFQxQkaI5AqM0IdQesYeaPenmvfHaPbpDZQkFaRm jEMqq3yUMVDgHXJGWdVmKGnViH8vj5AD4s/Kzr3dks8GL6y7HhxfR/cFOoio8dR7TzOQCdcb0qlp 6Y8bSzskR89VVQ0eOwmS3DUEF2T2V+9vJEe8cvR7ptkIE1iAoVEFTFXtRQqMx0saJGmlaya3OlOj P2U53k2nmGTa90mJhviWLOxoJadzsWdVGpQC8j6mpHoQan62Lf5qnwZxf8w/4PdzfG8VEGH7BrcZ Tb86I3lJIaao2H3z1/IdwdYbmpckn7lKjV0f8NyE8X7n2FXVopu/vC+N3ikWSM0ZSCCOIIyCPsPW ZsiJKhjkFVYEEHgQcEH7R1pS/HrtDJ9r9X4fNbqxku2+ytu1WT2B3Hs6rhpKPKbJ7f2NVtt3sLbO VxVLLKaKSKvhkngpJmEqU0sBkRWbSOiXt7zQnN/KtruxIM2nw5x6TIAHrQAdwIkAHAOBxB655e4H LEnKPNV1tIBEOrxIT6wuSUpWp7SDGSeJQngQehv9jXoE9e9+691737r3Xvfuvde9+690P3x8+Kny M+VE+MqOiusavcGzshJGz9v7srZdk9KU1EJKZ5qyj39U01XLmwYppkRdp4zMNHUwvT1gpLPIkQc3 e83KvLVbe0b664/hjI0D4DUvwNVcOumquAQHBHUvco+zXNHMoFxdr9Db/wAUgOs/GKBOIoyFG1UZ CQShB6vs+PX8mLoLYsOKzvyNyMnyU3hTiGoqNtZTHTbZ6JpqtVTXC/VyVVU2fhOm0sG7sjk6KRwJ 4cfRvpVMXubvdXmzm6sFxN9Nbn/QYSVU/Ce411P3LqGomlSMjrJ/lL2r5T5SpNbw/UXA/wBGmAZh 8XwimlO1tJ0gVoDg9WFd4d//ABq+L+ysTB3VvnYvXe2sxS/3S2ZsOelGR3BvoQUqY+LYvV3Ue2qe rzO5avwMkMOC29iKyoaMhEpyvHuNupJ60wezevNw9U9g57aeT6o7Q6h2dk5snvLovB9vYvH4Pe+V 6Dym6snhuusjncDRVdbPjK6nhx0uPqsXmpIsyiQQVuTo6OTIRQ+87PZrnE80crJaXdRcWQETE0pI qgUK0CiqKVDqoOgNHViX6wW94+TxyzzQ91a0+nvSZQBWsbMTUNVmNGYMUZiNZWSigJ0gpammgenh nqIIZKuQwUscskcb1MyxNO0NOjkF2CI7lVudKk/QH3Ks13a27pFcSojSmiBmClz6KCQWORgVPUVw 2l1cRvJBG7rEKuVUkIPViAQo+ZoOs/tR0m697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de6tB/lIfJGXpP5M/6H87UGHrb5NrHhkbRIKPb/ee2MdJU7JzVQKanEMKbjxMVXt2vyFb VGSaspdsY+nQ6jbGP7wPJ7TJFzVYx1ZeybSuSAKq7aULNRFNWdlSNI/Nn6yb9gucBDJLypfSUVu+ HU2ASaFF1OFWrsKKis8jyeSp1Z1/Ot+Jtb8jPiFluxNjRV8HdHxZrZu8OvcjgaKlyG5KrBbaMGb7 C25g8fXEU9bkFpcfS7n21QVYamk3PgtvS1CNHTkHFLrKvp5/k4/LGf5KfFLB7c3O2Oh7E6Zpsdtb K0uJqPvMTV7Ilq67DbEyuBr0paVavGUs2IzG16HJtGHyiYQ5kItPkqYt7r3Vtfv3Xuve/de69791 7r3v3Xuve/de697917rFJGkySRSxpLFKjRyxSKrxyRuuh45Ee4KkEggixHv3XumDb1Q8aVeCqppZ q7b8sVKJamSSSprsTNH5cLlGkqJZZ5i8INPUVUmkS1cFVoUKvv3XulJ7917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917qPV/8Ban/qHm /wCtZ9+691od/wDCf7+Q1/LZ+dP8tDqD5SfI3qrfm6O6t87u7lxO5t04Lu3tjZceRodrdqZPb2Ij bE7Vy1LTKVpqSBZGWIGRl8jlnJPv3XurAvh1tPdf8pf+d/1//K76m7x7t7n+FHyx+Je6+6evunu0 93r2JV/FXe2x8zuHLyVeOy1XDHUUGAyCYXJY+kkiMf3U1dTQV6VlRQ09aPde6HT+ZD8kfl/81Pnv t7+TT/L47Zrvjqm09gYPu7+YN8tduR18O/en+sM5NSVG1+res68rAKfOZmjrqCtEtBUCon+7pY1q qOipcx5Pde6EnYn/AAl7/k0bY2W2296fG3c3eG6chTMm5+3O2u8O5q/s7deRlh8VRm8hk9nZzDY+ kqXJLk4nG0iarHRcX9+690Q7vXY/yF/4TXbr6w+QHR3cvcPyL/lAbq7J291t8hfjJ3DnU37u34j0 ++c40WD7J6U3rkBDKmJSsqqinFDUPAstQ1JR5CatnrIMjQ+690cL/hUzmqLL/wAjH5IZ7A5KGuxW az3xsyGLymOqRLS5HEZfvbbUtPVU1TCbSQVFPKCCCVdG/IPv3Xuo+S/4SnfyhEwlfQbC2D311JuG TRU4PffXvyT7Wh3RtHNwyJNRbjwEW567J4w1kDxo0b1mOnUWB0XCke690rv+E+3yM7+7L6a+bPxu +Q3bm4PkPu34E/NnuX4s7W+Q+cqHydb2jsHZfip8BXZDcdRJNU5DIRVMNdUzTVVRNJHTVVHEJWjR AvuvdQP+ErVdWZP+Sd8Za+vnkqqur3r8jJJ55CNTN/swW5FAAWwVVACoigKqgKoAAHv3Xunf+e5L LH2d/I/SOSRFn/nWfESKZUdlWaIQ5mYRyqOGUOiOAeNSg/UD37r3Xv57kssfZ38j9I5JEWf+dZ8R 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 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdJhNy02 Tjf+7Cw7kdZKqnFZSVaJgIKujlqaOaCrzyCWMtFVUslJVRUiVFRBIR5YFW5HuvdefAT5GSVtwZKX JUkgeMYKmiGPwJiLTxha2BC9RW+SCfwVUVXUvSS6FkWkib37r3SijjSFI4oo0iiiRY4oo1VI440X QkcaJYBQAAABYD37r3WX37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691W38r/5qPxP+KT1O38ruuftDs5clXbfp Os+rUXdOa/vTj6OorKva+QrKDyQjL06U7TVG2ccK3cbU956TCViKR7917rXz+T/82X5O/KNZNvdP VdX1V1/NIGqH2zkqSmoK1KcwV60k26oo6r+J6Mhja/HQZKofJY2toq2XGb06px1TGHMj8p+1fNnN riW1hMEGQZZQVWo1jA4tR10sFBZQwbSR1HHNfulyrympjuZhPPgiKIhmodJyeC1RiyliFYqV1A9V zUfWeMfSd0ZGv3iseBXaSUmYknkxB2jBDNj4dpPjaqaodsE1KaTTtN6htuUNRTRT4TDYgBYlyj5T 9l+VOXSLi7X62cVzIBoHxj4PPsco4P6bgAmMMK9Yv81+83NXMYNvaN9FAaYjJ1n4D8fl3oHQj9SM kgSFTToSfcvKqxqEQBVUUAGAAOAA8gOojd2kYu5LMxqSckk8ST5k9d+99U6jVlHSZGjqsfkKWmr6 CvpZ6OuoayCKqo6yjqojBU0tVTThkkjkRmR0dSrKSCCD7ZuLeG7t3tbhQ8cisjKeDKwIYH5EEg9P 29xNazpdW7FJI2Dqw4qykFSPmCAR1spfCf8Aml9Ry/GrYe0e9N6bgz3ya2blMl0/D1dtLbe7+2e+ e8V2dj6Oq2r2XtTrzZWPqc1l4clg6/DS7p3JHjocLjsy2Shq6ylp6ZpRzx9weWJOVeaLnbiP0yxZ DQAFTkfCiRioKvojBWNXVCxZT10I9v8AmWLmnli23EH9QKFcVJIYYPxO8hoQU1yUMjIzhQrDrXK+ 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 l/5hdbtP5C9fbH+PfS/fFJU7+2zhMR2hBvTZfXnTe5MlWQSbVy3ZWdp9qYdqjZeJw1JFkdOOrDhc Lsfb+3cFJkKzehrciTdHXW5N7917r3v3Xuve/de697917r3v3Xuve/de697917pNZn/cbWUW4U9M MGnG5y3Cth6qUeGvmtpB+wqCsxlmfRBTPWuAWYe/de6Uvv3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuo9X/wFqf8AqHm/61n37r3W i3/IR/l6/wAyDuH+Vl8c+1vjt/OR7C+JHVO+cp3XXYLobb3xL6k7Txm0KvBd6bk2ZmquLe27MxSV tU2TrMZNk3SSBVhNR4U1KgY+691sX/y+P5QPXPwk7e7I+VfYfffeHzH+aPcG1qXZXYHyQ74zomr4 9qU9fFkZNtbE2XQPJSYegkemoUEUlRVyQQ00VPSS09O08U3uvdEc/lU1uJ2l/PG/4UB9cb18dP3H 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 utqX+WH/ACqeoNj9lbT/AJmPYnzY7c/mcfIvf/VaYnqb5L9tTUMO09ndY7pppZFh6c2N5sjNt5p6 SsrqOrh/ih8Qq8hCaanlqapW917o938wn+W/0N/MV6521tzs05/Yna3VG4Yt+/Hb5Gdb18+3e4ug +yKGeGtodzbK3JQSQztSzTU1N/FMVJMsNUsUUitT11NQ11J7r3RBP5d/zW+WHT/y93H/ACjP5mGU 2zvn5CYXrur7g+KHys2q9FisN8sei8dUvT1FBufa87RVdPvLBxwVorZoaUx1cWPrnqXM9LHkc37r 3V//AL917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XugO+SX/ADJHf3/UBjf/ AHe0vv3Xuhx9+691/9LeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690lpdxS 1scg2rQx7gmMbmKtlrGxu2fKq3RJM+kNQZVYq8ZbH01WY5F0TLF9ffuvdc229/EdR3JV/wAbjcyK MUKf7PboiYzRaJ8RrlNVrikjEq189RGJY1mgjgPA917pTe/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 rX+S38074rfHijyePpd44/s7fMEedpsZtvZtTW5PE1ubwUGbhyeKTcG36PKT5WbGZDBVeO3HitmY zcGdwxK1FfhY6VXmXcUUs0iwwKXdyFVVBJYk0AAGSScADJPVJJI4Y2mmYIiAlmJAAAFSSTgADJJw B1q4/JT+aL/Mb+W3c8VJsDO7R6x+Gtds/c1HUYHbNZBgN1Vudmy9dR4PLSbtxlRujD7ooMptvK0j RRVMWc27W/aTNkMNhslLDBQybyt7Sc4c0Mk0UItrZlDCeUgIQwqNIWrOfJgB2NVX0sCOo15p92eT +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 U1C0VQMS5xTjfk73A5g5KufE26TVCdWqFv7NyRgtgnBAOKEAuFZS5boD85cgbBzrbeHuUemYadMy /wBogByFyBkEjNRUIWDBAvVBOeMu0u4O6Ohtxy4qPtH4/wC7KHZnZmN2/lJdwbdpMtksSmYx9Zt7 crU1J97Q1CGZIXnpKWqV4JUqqOlkXx+81+RfcDaOerN5bANHNCF8WMhiFLAEUfSAwrVfI6lagKgM cLueeQN25Fu1ivyrwzFvCcFQWCkjKaiVNKN5ijLUhiVGX2O+gF1737r3XvfuvdWtfyevkUnT/wAj cx0Vn6o02xfk6DV4LU6xUGH772Ntx5qGqaJdKiTdO16GfG1lfUMSZsFgaCEF6pR7xV+8PyuyNbc1 WqAIx8KchVDa6KI2ZviYFECKuVXSSAC7FsqPu9czh47nla6cl1HiQgsxXRUmRVX4VIdy7Nhm1AEk IoU6f8/n4IbS+Ynw9ouw67bC7i3r8Rdw1ndeGhhxlZmMlW9eR44Qdu4ylw2NZanLGgoqei3pR7cj OjNZTbuMxc4aCqkHvGDrJ7oy/wDKf+WW1vk/8Wdp0dBVUtLu7qfD4TaG4drNuJdx5fAYOlNVt7bt LW5Wry2YyWSTFVmIzWzJtyZOqEmdyW3snlYkFNUwk+691Z37917r3v3Xuve/de697917r3v3Xuve /de6wVFPBVwT0lXBDVUlVDLT1NNURJPT1FPOhimgnhlBV0dSVZWBBBIIt7917pk29JPHSzYitlqJ 67BTLj3qqp5ZajI0SxiTFZWWplji88k9OUFVLHGI/ulqIkJ8RPv3XulF7917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6wVCNJTzoguzwyoou B6mQgDnj6+/de6p7/kFfGLu34b/ynPiz8cvkXsuXr3uLr2bvNt37RnyuHzMuJXd3yM3dvjb5bJYG eppJPPjMlRVI8U7aRJpazhlHuvdXF+/de6oz/mhfy1O/O3O6Oof5if8ALo7M2v0v/MN+Om36/amP p98xVr9R/JjqWvrVrMn0x29DRl1jQo9WKCvFPqZ5I4paikNPQZHGe690W1v52H8yHqfHVmy/kV/I M+cOU7rweMp0qKz4wSJ3j0ZunL6Y1kqcV2LtnG1kVBBKVqXNLDLlZKfRGhmqFk84917pMdYfD/8A mLfzbvkR0t8k/wCbP1Tsj4s/Dn457yoO2+gf5duH3FB2FnN/dl01EKnbG/8A5JZiMimrpMX9w1MK CvpaYaI6miOEpIq+tqar3Xuj0/z+fjL3n8vf5YfcnRXxy2BXdm9sbk330FmMJs7H5Xb2Gq6/HbP7 xwG69yVMeQ3TWUFGopcfR1NSyvUqzBCsYdyqn3XurnPfuvde9+691rGdcV/zX/kkdj/InrjF/CPu r55/y+u6vkRvr5C9Ib1+ISw79+QvQmS7lr6jcO+uod9dI7jrI6vK0FHkolqKTN0uQgpgs71Esz1F ZJQ473XuljsjaPzB/m5fND4s/Iv5CfE/sH4Q/Ar4M7xqu8+ouqvkK1Njfkx8hflDBBUYXZG8t3dd YmoP90sRs5R99SQ1rTGpeb9mWtWtl/gvuvdDf/PB6M+S/atL/Ld7J+M3QO6Pkfm/ih/Md6T+T+/O u9nbp6/2ln6zYPWW383WZFaDKdj5TFUAkqKmSloo/wB92Vpg5jKKxHuvdCpsP+YL8890742Ztjcv 8mD5Sdfbc3HurbuB3BvzNfIL4kZPD7IwmYy8NBld35bGYPdU9bUU2NgkkrZ4KOGSeRI2SJGkKqfd e6QWM+LnyA+Sn86LN/LL5C7CrNrfFX4K9Owdc/BbHZbMUVQvZPdPb1M47x70fbeNyFSKdcdSwNgq VcpRxtMqYjI0njmppffuvdXee/de6pNx/wAUO8PjB/OZr/lD8f8AYNRuL4ofP7p+bbXzSx+Fym1c RS9V/IfpikV+pe86vBVv21bkEzuOlfAyxY5pTFPPlMjWI0k8J9+690of5wvxg7v+Tn/DX/8AoT2V LvP/AEAfzd/hp8lu2PFlcNi/7q9L9XDcX9+N4yfxiog+4Si++pr01L5J31/txtY2917o8Hz0693j 218Gvmf1X13hJtzdg9m/E/5FdfbG25T1NDR1G4N47z6gzG29s4SCrycsFNE9XW1MECyVE0cSlg0j ooLD3XugL+B3xcqsX/Kk+Lfw9+U3XUUdZS/DPrfovvXq7M19JWpFKesqfaW99qVmW2zVSxFkvPB9 1j606WAkgmDKjj3XuqdOo9ifzd/5GeK3B0p1J0FkP5sX8tja1bn8r0VQ7Q3zjdr/ADN+PWzKzJR5 WLr/ACW3qyjmO8I6eWrr46LH4TGzh44VmhqMTHLFhYfde6WW8P5sP84D5VJJ0/8AA3+Tb8hPjpvn cFLjKPIfI35900fV/XnVKZSYY7NZ/G7Iy9JSw7imxgaargSPLSyEQDXh6xpUpH917q0f+Vr/AC4d u/y6uk9z4TMbwqe4fkn3vvSt7j+V/wAgczF5Nwdt9vZ5pKvIT/f1KLVNisfLUVS4yGoIOueqq/FT vWSQJ7r3QN/Af4y959Q/zPP503e3Y2wK7bPU/wAn99/C7MdE7xqMrt6tpOwcd1l0dldqb6qaHH4q snrKQY/ITxU0i5Gmp2csGiEiXYe691Yt8p/i50r8zeh+wvjh8gdo028usOyMNJi8xQSeKLI4ysQ+ bE7k25kJUk+0yeOqAlVRVIRgsigSJJE0kb+691Vt/Ia/ls9sfysuifln8b+z89Qb1xma+cXYfavU fZFBMgPZHUu6+mNg4rAbpymHlqqyrxmRWuxmSxuToK2Z3SrpJnhmqqSSmrKj3Xurzvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3SY3pQVWU2fuzGUERqK7I 7Zz1DRU4ZEM1XWYuWnp4leUqoLOwW7MAL8kD37r3VWP8h/4590fEv+U/8SPj18hti1nWvcfXOK7Z pt6bJr8ngczV4KfcHfe6t24dJsntirrqGXz46vo6lTT1UgCyBWIcMo917oN/ndQ/zDPi98yOu/nt 8V9q9m/Mf40SdP5Tpj5QfBDbnZmfx24MEsOY/vVhvkf8e+vs5Xtt7J7kQU1NiKvG02NXITxgwwye HJ11bjPde6JZ8qO9f5gn85nrvJfBz45/AH5TfBH499uV+1tufK75UfPLaWP6a3Tt/p+orp8lv3Zn T3TeHy1VXbhrMrTUtLQisgyvidaiahrIKKCdslT+690b7+ax8IOxt/8Ax6/lgdHfErq2t3Ptb4of zGPghvnI7doM1gqD+4Xx0+P+Jy+3spuGoq901tJ9zDiaFqCJ4YHlqpbjxwyHVb3Xur0vfuvdJjel BVZTZ+7MZQRGorsjtnPUNFThkQzVdZi5aeniV5Sqgs7BbswAvyQPfuvdakH8sXub+c1/Lo+C/Qnw yn/kU9k9vzdLY3e1HN2LF83vjdsOLcUu9Ozc12PI0e1HgzBpVpTmDRAnIymUQ+YiLyeGP3Xur7/g n8qPmt8jsj2TS/LX+XDuj4GUW0qLa1RsfI7j+RvWXe47Mq8zPXx7goaOl69oaNsacUlNSSSSVRYT /dKIwDE9/de6AL+TJ8Ve1fj78Ne3um/k31fDtnJ75+Wfy83jPsjc821t143cnWPavZdZk8BU5Kmx FTkKGajy2NnvJR1LFjG5jniUkp7917oJPgz8WflN/LG+ZO/Pi71hs3encH8qPveq3P2501uKq3bt zM5H4L9oZeqlye5unZaTcmTj3HWbRy1Trkx5pqWvWnlmp6iSRKhs5V1XuvdNvcfef8zj+XR8ru7+ xtydI9//AMzj4DfIDeFBu7Y2J+PuE2dub5JfEHNHAU+IqOvsH1TjYML/ABnahNIqU5SRtAAyNfkl yc+QOT917pEfGbrX5f8A8xH+Zr0p/M2+Q/xr3x8Jfjp8QOpe4uvfix0v3JWYyj+RfY+8u6aao2dv Pf3aWxKCmkfb9CcK/ox1VkPJDURUoplq4pKqq9+691sce/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917oDvkl/zJHf3/UBjf/d7S+/de6HH37r3X//T3h+v/wDmcff/AP1H9af+ 8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 TG8ueqZZFpaahxVOjlY6nJM+Sq6gwVckEo/hlBJFHHFLEsc9POa5ns+mWnjcED3Xuu48PJ5nkq8z mq9fKZaeCSopqCKlOh0KIcJDSPKml7aal5QCFYWcavfuvdYKfbGNpmgaOp3Cxp4p4IvuN3brq1ZK lmaRp1qq1xK41HxyShnQWCMoVbe691llxeSQyPjc9VwssBipaTJ0tJlcXHIV0rNUgLBXzW+tjkVJ P1NuD7r3XGXIZajZFqsNLXQNKkZrcLPBMYIVi11NfXY2vaGVF1XCQUbVkp+gBP1917qbR5Wgr20U 9SPuFi8z0U6S0eRiiuAHqcbWLHPEDqUjyRrcFT9CL+6905e/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de64khQWYhQoJZiQAABckk/j37r3SbG4Hr3VNvY+TMRstPKMpLKcf t4wzCKdJKfKskjVQkgkZ4ZKCnqIi6eOWWEnUPde66G3BXaJNy1jZ1wDqoPE1DttS0UaShcCJJVnU vEs6fxGaqeKQs0Lxg6R7r3Sn9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvddEgC54A5JP49+691V78tP5sHxs+ MmNjosNk4u4t/wCYoNw1O09ubQrq2bbuZl25HkYMlUJuTblBmq/J0FDksXUYXcFXszA7hk2/VtG2 4KfF0Zkq47RxvK4iiBZmIAAFSScAADJJOABx6bkkSJDLKQqqCSSaAAZJJOAAMknh1rq/Jv8AmV/K 35kYXMbKo5j151juBK/HV1FjKXB4/DZDauUqKykjStxTVO6cDmJa3beao3q6SrrN+bXzMlGZqKr2 fkUMayvyh7O808zFLmaP6W1bSdcnbqU6G7MEnUjNpZVcK66ZAta9RXzf7v8AK/LAe2hk+qul1DRH 3aWGte/IA0uq6lZkLI2qMtSnRKMd1rgkrKrNbh+43XuLLSY6qzuVztdmsy2ZrsXU0+TxUuWm3JV5 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 gk3Fv7d+wcxFltix7iNHFio9tbJhhqqz7DB4akpKfD4SglqZaiOipYjWT1dc1VWVHQT222fYNh5c i2vZrqG7kUappIpVlDSGpNCpNEUkhBRRxagZmrgB7kbvv2/8xy7pvFrNaRsdMMcsTRFYxhahgKuw ALGrHgtSqrSX7kHqPeve/de697917rLT1+bxNZjs1tjMzbc3PgMridx7U3FTxGoqNu7s21lIc/tb cUFKZI1mkx+RpqatjgkcRyNEEkuhYEk5i2W35i2O52W6A03EbLmuGp2ntINA1CQCKio8+jvl3ern l7erbeLYnVbyK2KZWvcO4EVK1AJBoaHy62xOvP5pXxs3d0n0zvDNZipy3dXbm2qlV+LXUmGyfcne bb221lptmdlYTGdb7ESvyH8Gw+fpK3Hz7pyKU2FihWOqqshBTyrJ75v7rt1xtG5T7XdjTJA7IwNK gqaZ0lgD6ipocVqOuje1bjb7vtsG6Wh1RzorqRWhDCuKhSR6GgqM0z1Rh8NM9n/5aH8wrP8AW3ZW xNx/HTpruuoym8uvur97b32ZlqfY3SW82yC7axudrtq7jOzKav2zhtnF50oKzKtt7bGwMoxqqrIb yR6pD0Ydbgvv3Xuve/de697917r3v3Xuve/de697917r3v3Xuk5k4zQ5XHZuJDok0YTMCOJmeWir KgHFVUgpoZJZTSVbaU1yJDBDU1czkW9+690o/fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdAd 8kv+ZI7+/wCoDG/+72l9+690OPv3Xuv/1N4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 XvfuvdQK/GY3KxxwZPH0OShhqIquGGvpIKyKKqgv4amOOoVgsiXOlwLi/B9+6901vha+jp/Hgc1U 0kiLJ4o8793uehaSapE009Ua2ojr3IXUkSJkY40uPQQuk+691y/ieVollfLYd2hjlrWFXgZpcwi0 FLAJYKmqxzRQ1gnnOpVpKKCr0kAeVr39+691Lx2cxWWaeLH19PPVUkdJJXUOow5PGiuiM1ImUxk4 WopZHUEiKoiR+CCoIIHuvdO3v3Xuve/de697917r3v3Xuve/de6wVFRBSQT1dXPDS0lLDLUVNTUS pBT09PAhlmnnmlIVERQWZmIAAJJt7917pPxZ6XLpE+2qUZCjnWKRM/VSNTYF6aYQyrU4yVQZcgHg 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 pBT09PAhlmnnmlIVERQWZmIAAJJt7917rHR1tHkaWGtx9VTV1HUoJKaro54qmlnjbgSQ1EBZHX/F SR7917qX7917ooPaH8wX4G9IblrtmdzfNj4ldTbwxcy0+U2p2T8i+oNkblxlQ4ZkgyGC3LmKaqgd grFVliUkK1hwbe690JnSvyc+NvySosnlPjv8guku+cdhHpkzVb032psbs6lw7Vsfmo1ys+yq6tWm MyWeITFda2Zbg39+690NVTU09HT1FXV1ENJSUsMlRU1VTLHBT09PChkmnnmlIVERQWZmIAAuTb37 r3WHH5CgytHDkMVXUeSoKjyeCtx9VBW0k3ilaGXxVNOzI2l1ZGsxswIPIPv3Xup3v3XumrGZvC5p Z3w2XxeWSllEFS2Mr6WvWmntfwztSu4Rrf2WsffuvdOvv3XuoGSyOOw2Or8vl6+ixWJxdHVZHJ5P JVUFDjsdQUcLVNZX19bVMscMMUatJLLIwVVBZiACffuvdE92n/Mf/l5b93VQbF2N87/hvvLeuVr6 PE4vaO1vk30tn9y5TKZE2x2NxuExWblqaioqP90QxRs8n9gH37r3R0ffuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdcHdURnc2VFZ2N ibKouTb6/T37r3VEP/QTX/I4/wC87sF/6I75O/8A2E+/de6sX+Mv8w34OfMupqcd8XPlT0n3XnKK lqMhW7U2ZvnEVO9aTHUjRJV5Oq2RWPDl46WJp4VkqXohErOilwWAPuvdGR7O7I2X031r2F2/2Pmf 7udd9VbG3Z2Rv3cP8Oy2Y/gWy9jYCo3PunM/wnAQVVdVfa0NLPP9vRU008mnRDFJIyofde6pX/6C a/5HH/ed2C/9Ed8nf/sJ9+690e/4U/zNvg7/ADE4uy5/hr3rSd0w9Qf3U/0iy0mwu0tlxbc/vuuS fbCtJ2Ng8OKpqoYjIErRGYxCIGYR+SLye690aPpfufqz5FdU7D7w6S3xg+yOqOztuUO69jb225PJ Nis9hMgp8cyJUJHPTzxOr09ZRVUUVTS1EctNUxRTxSRr7r3Sw3VufB7J2vuTee567+Gba2jgcxuf cOS+2rK3+HYPA46TK5au+zx8ctRL4qeKSTxQRPI1tKIzEA+690GHUXyN6T726K2t8m+sOwMTm+h9 57PqewNv9lZWmyuzcHPsujSaSt3LkYt60+OqqCkhjp5pZpchTwhI0MjWT1e/de6qv2//AMKM/wCT nuXtOPqWh+YOKo8pPuFdqwbz3B1p29tfqSTNtkExAjk7a3HgaXAQUwq38ByVTXx0YKs5qPEPIfde 6tF+SXya6O+InR29Pkl8h99w9e9Kdew7eqd4b5OC3Ruumw9NuvdFDs3AVBw2x6HJZKdJ8lkqKn10 tHIIxJ5ZCkKSSL7r3RW/mD/Ns/l6fAfMdeYH5b/Iqg6fy3a+1Zt7df0lb112/uz+8O2KerWinycV RsHb+Vjp9MrorQ1bxSi4Pjtz7917orG1v+FIn8lbeu59ubM2v83cNltzbtz2I2xt3FRdJ/JWGXJ5 3PZCPFYjHxz1ezI4kaaoljjDyyKgJuzAXI917qzLrv5c/HjtTv3u34t7J7Ejr+//AI60O0ct291h ldsbz2puDbmE33StW7U3DjH3bjqGmzeNqolVv4lgaitpY/LTiaWM1NOJfde6X3d3dnVXxw6l7B72 7w3th+ueperNs5Dd++96Z01LUGEwWNTVLKKWgjmqqqolcpT0VBRQTVVXUSRU1LDNUSxxP7r3Tp1V 2fsruzrTYnb/AFvkq7Ndf9mbUwm9tk5vI7d3LtOrzW1dyUCZXA5g7d3hR0GTpkqqaWOohSso4nMb q+nSwJ917oQPfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3RUfmF83/i18Ber8d3P8ue2s d071rlt34zYeM3HkNvby3Sa7dmYx1Zlsfh6bDbDx2VyDM9NQVczSik8SLGdbqWUN7r3Sz+Mnyd6L +ZHSOzPkd8bN+QdmdL9gtuRNnb2psFujbcGabaO667Y+4gmF3nQ47JQ/bZXG1tIfuKOPWYi8euJk dvde6Hv37r3Rct//AC0+PPWHyA6P+LO9+y8XiO/vkdQ72yfT3WUGOzuZz+6MV15h3z+68vWfwOlq YcVRQUsVQ0VbmJaWnqHhmhp5JZ4njHuvdKH5DfIzpD4n9Rbu74+RXZO3eqOpti0P325d47lkqftq VXOimosfjsdFPW19bUP+3SY7H009VUSERwQyOQp917og3xO/ng/yyfmr2vTdHdEfJGkyHa2UGQO2 dmb62J2N1XkN6HFBWyEOyansbE4ymys8aOsgpKOd6h49UkcTpHKye691bL7917qpD5Vfz0v5Wnw1 7Kk6Z7r+VO3m7cpa5sXk+uesNo9g90bnwWVirJsdU4bckHVGKzEGNyENRBJDNjK6eKsRrBoBqF/d e6c/iJ/O8/le/OPfkHVPx7+Vu0st2tWM8eN6z33t/e/Ue9M3Ux1MlK2P2ziu0sZiBlqwGJ3agxcl RUpGPJJEiEH37r3Vrnv3XukHtTs3Yu+Ny9nbQ2ruKly+5umt34nYfZmHigroKram6s717hO1cRjK r7yKNZhUYDcWHr46ilaWA+cw+T7iCoii917pee/de6S9fvPaeL3ZtzYeR3FiKLee78RubP7X2xUV kMebz+F2XNjqfdmVxdAx8k0GOky2MSrkQERmqgDEGRb+690qPfuvdFo+WXzC+OPwa6grO+vlR2TB 1R1Lj89g9sVm76nbW891w0+c3JM1NhaF8VsTHZSv/fkRlEopfGptrdbi/uvdVr7S/wCFIP8AJO3t uPE7Vwfzy2NFl83UGkoH3H1t3vszCecRNMErdz7y2rQYyl1BSqNVVcYdysakyOin3XurksNvvZe5 tkY3sra+6sBurr7NbZp954Leu1MrR7n2xuDadZjRmKDce38zgXqIK+iqKVlqKaoo3kSaNlaMsGF/ de6pL/6Ca/5HH/ed2C/9Ed8nf/sJ9+691ah8ZPmB8X/mbseXsj4s96dc95bPpJ4aTKZPYO4aXKVO ArqlGlpsbujCPor8VUyIjulNkaWCVlUsEIBPv3XujI+/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917oDvkl/zJHf3/UBj f/d7S+/de6HH37r3X//V3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+69 1737r3XvfuvdNVZmMdQzxUk1QGr50SWDHUySVeRmgepSjNUlBSh5fAkkiLLUFBFEDqkdFBI917pu 0bjybQyNMm2aEqrvTRxUmS3DISKepiWarcy0FKVYVNPUwxw1gkRlkiqYXHHuvdKb37r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdQavHUNeIvvKSGoendpKaR0HnpJW Qx+ejqBZ4ZAD6ZImVh9QQffuvdNcGGrseVGMztf9skKwR4/N6s9TRAOZJKkV1SyZKSZibaqjISIF 9Kxj0lfde6yx5LKwsEyWDkUFql3q8RWw5Whp6eIsYGnSoWkrGldQLxU9HKASAHbkj3XustLm6Osk eKGHLoyI0hNVt/PUMZAqZKUiOaupo0ZtUbEKrElCsgHjdGb3XuuM2eoaeoNK8GZaQGIaodu7hqae 80UkqWq6eleIgCJg5D+liitZpIw3uvdYpazO1Inix+JTHurzQrW5yogeEXQrTV9Lj8RJM9QgazPB PPSOVsA6kkr7r3XUOAhkmirMxUS5yuhmjqIDWKqY2gqI2EsUmLxCfsxNE+rwVEglqlVijVLr7917 pQe/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3XuoddXUWLoqzJ5OspcdjsdS1FdkMhXVENJRUNFSQmerrKyrnKxx RRRqzySOwVVBJIAJ9+691St80/56fxJ+KW5Ov+tNsVdZ3V2Z2ri8tuHZS7WM8fXc+1cDhcbu3Ibs bfMMNRFU46rwmQkyG381TxjbtfLR1lLVbixQpayqpW5HSIeJKwVcZJAGTQZPqSAPUmnWwCTQZ6Ju 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 +SrgK2WiarqnMdBVUdCixLQmJPde62Qvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Uer/4C1P8A1Dzf9az7917rWo/4TNfHnoLfP8kb4Ubp 3r0d0/vDc+U/2ZD+J7j3T1psvcGeyP2Xy337jqL77L5aimqJvDTwxQReSQ6I0RFsqgD3XuhP/mV/ yE/ix311vuHuf4YdWbT+IHz26mpv9Jfx87g+OeOi6Y/jXZWy513Tt7bG+8N182NoaqLLVlJBSjNm AZGgmMNXDUPHDLSVPuvdQ+r/AJyZP+Yn/wAJyfkL8nd1U1NQdl574BfMjZfb+OpooqaOm7V626i3 PsveFaMfBDTx0q5OWjXMRUccKrBFVpCt1QMfde6FP+T/ANp/DrE/ysv5fWN3D2P8Z8ZuKh+JPR9P uLH5rd/VtHmqPcEexKNc3BmqWuqFnjrFqvKKpZ1Egl1+Qa7+/de6tr693l0hu2l3J/oa3V1Vub+H 09H/AHj/ANGWc2jmvsvu46n+Efxv+60snj8viqvtvPbVol0X0vb3XutB3/hP38m/ln/K8+HvRnyn 72qJO0/5R/ys7K3psjemV2lR7j3Fvv4K9u4jsGfq7Cdp7z29S4+aSbZu4ajGwUNa2NqZPHJJE3ij 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 /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XugO+SX/Mkd/f9QGN/wDd7S+/de6H H37r3X//1t4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3XvfuvdM+QzdDQTCj LS1eTliE0GJoIzV5KaN2MUU7U6cQwNIviNVUNHToxAklS9/fuvdQI4dxZX1V8sW3qLykrQ4yZa7L 1VOsscsIr8rLGIqUyR+WGqpqOOV0bS9PkARc+6907Y7F4/ExNDj6ZKcSuktTLd5aqtqEgSl+8yNb OWmqZ2SNFeond5H0gsxPPv3XunH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdN2Wy 2KwGLyWdzuTx+FwmHoarKZfMZaspsdi8VjaCBqquyOSyFYyRQQQxq0ks0rqiKCzEAE+/de6pm+U3 867ofp7P5LrXovbOc+RvamPVPv6TbjDD7QwsdS1XTUWQmzeTEfnpqmaldMXmKs47a1fMDRnddHVE J7alljgjMs7BFHEsQAKmgqTjjj7ethSxooqeiTZjqL+Yn/MWyuPzXdu68p8d+nKao++pMC6ZnB5F 8tjKj7rE5TbexUNBXUbY/cGDx+Wx87R43dGGjrZ/7v8AaWdoJVvB3OPvxyxsGq12X/dhcCnwmkQ+ A0Z/mC64qyOvchHR9Z7BdXHdP+mvz4+fl+w+hBwerHPj18AvjH8bHpclsjYVLl91UmXq9wwbx3gt LnM5S7irJsj5d04+IxR0dPnJKXKVWNrdzR0v8bydJ448xksi6CQ4r81e5XNvNxKblclYTjwo+xCC FBDUywbQrMtfDLjUEUnoV2m22dnmFat6nJ8/8FTQ8aYr0c72BulnXvfuvdEu/mJfD3B/Pf4W9/8A xOzWSTBv2zs1KbbWflsIMBvzbGZpd6dfZmuYQVL/AGkGbx1A9csMJlem8yRlXZWAl5K5ml5Q5ptO YEUusDHWo4tG4KOBkAnSxKgkDUBXHTF9ai8tXgbGoYPoRkfz/l18hX5b/Df5DfCLt/cfSvyK643F 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 7oHWGPx1RUweuRFo8DDXIJbFXq5dICsCfde62gPfuvde9+691737r3VQv86f+W3R/wAyD4fZrauz pYttfKDpOsqu3vil2VTPBjc7tbtLB0Rl/u3DuMPBPSY/cMUSUNWFq4oVqUoK6oWYUCRn3XuqOf8A hOb1/wB9fzN+8d0fzw/npn8RvrsfZO0aD4l/FvFYylmxO39uQbM27Fju0OzqXaoL09DWVsldWIrU k320tdlM7OlHRhaMJ7r3W6B7917r3v3Xum6HFYunr6vKwY2hgylekUddkoaSnjyFbHToEgjq6xFE kioqqqB2IAAA4A9+690Sb+Yp8/8ApT+Wz8Yt5fJLums+7ixfjwPXmwKGtp6Xc3avZGVicba2JtpJ RI5kndGnrKiOCY01JFPUCGZo1hk917quH/hPt8O+5Onele//AJtfKnDDbPyy/mcdwSfKDtLZ8MdX jqfYe0coa3M9c7Om27UTVC0FWJM3msrNB5fNDBXUtFVJDPRPBF7r3WwR7917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6j1f8AwFqf+oeb/rWf fuvdUE/8Jcf+3FHwZ/8ALmf/AIMPsH37r3VzvyA7061+MfSfaPyC7i3FR7U6y6h2XnN8bxzlbKka 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 J1KwYA+/de6WG2f+EyX8jvaeWoszjvgxhq+qx9fQZKCDc3dvyV3hiXqcbUiqpo63B7p3lWUVVAzD TUUlTBJBOl454pEOn37r3VxdZsbZfWfSOY2B1ztPbexNi7R65zmD2rs7aGFx23dsbcw1DgZoqPF4 TB4mOKmpqeNeEihjVR/T37r3Wnr/ACJ/5CH8p/5efytPiT8nPkT8VV7H7r7IxXatVvXdtR3T8hdu 0ucl273nunZOHaTau0d2UGHg8OMx9HT2pqCPUY/K15maQ+691td/E/4P/Er4M7JquvfiX0J1/wBH 7ZyQx/8AHRtLFyvuDdDYg1LYmXeO88zJVZnMyUpq6s00mVyFQ0Xnm8ZXyvq917o1Xv3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de6A75Jf8yR39/1AY3/AN3tL7917ocffuvdf//X3h+v/wDmcff/AP1H9af+8NH7917ocffu vde9+691737r3TJkM7R0EjUqR1OSyYSN1xOLhFXX2qElakapAKxUscxhlSOprZYYC6lTKD7917qI 1Jm8trGQqv4Jj38ifw/ETs2UqYG80Nq7O2U0/kikjZoqBElgmj1RV8iH37r3TrjsXQYmn+2x9MlP Gz+WZryS1FXUFFjkrK+rmLS1FRIFXy1E7vJIRqdmPPv3XunH37r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3XvfuvdJ7dO69r7G25m94723JgNn7R2zjavNbk3VurM47b+3Nv4egiM1dls3nMtJDS 0lNCgLyzzyoiKCWYAe/de6qC+SH84/p/YtbuTr74+Yms7g7UxNZBtydaihfFYLbO5s/WZLau1Is7 is/V4RqcVecpsbFjX3dl9p4bPUtdC+A3JXVMkFNMkvL202+A3F7II0AJzxOlWchQKszaVZtKgsQD QGnV1jd20oKn/Zpn0yRk9Vd9QfH3+bR/MNx82+vnj2RL8dcAu7dx/wB3Nk7Zw2Z2rT5XZS1VXVbK 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 S00Mal5JppFVQLk+/de6L98Ovmt8afnx0+O+Pip2RT9o9YDdWf2VNn4cJuLbs1JubbZhkyeLrMPu mkoqyJxDU0tTGXgAaKaNgbkge690aKr/AOAtT/1Dzf8AWs+/de61kP8AhIl/25p2D/4nnvj/AN6W H37r3Wzv7917r3v3Xui4fLH5Y9FfCXore3yL+Re9qLY/Wux6JpqqqmaKXL5/LyxO+K2ltLFO8bV+ Vr2jZKWlRgLB5pnipoppo/de6oB+HHwo7y/mr/KLa382L+Zptiq2z1Pseqkrf5dHwaypq/7v9dbD fIrk9u9y9p4arIWqzeXWKkyU7VEKyZGVKdpEhwtHjaGb3Xuto337r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3WKZPLDLEDYyRulzzbW pW59+691qw/GH+UX/O1+C/xv6y+MHxS/m1/HzDdVdZndX93tq7u+Em2axsL/AH13lkuxNxmLduWr c3kK/wAuYy9fKn3Sx6I3VU0oixr7r3Qi138h35J/LzfGys5/N/8A5nvZfzp6k2LlqfcuM+LPXnUm 2vi50nl9y0E8c2Krd603WOQjXLxwRtW0hkONp8gYZiI8jCGlSX3Xurxvkp8f6ft74d9+/Fjr0bb6 7pe0PjT2p8f9jinxMdDtDYtNvbq2v6620IMFhURYcbjFqYNNJSRqEhjEcSgBR7917qkP49fAj+fl 8ZOjOpfjx1h/MO+C8fXXSuwds9abHhz3xR3bl8zT7W2ji48NhKfJZT+JRGoljp4o0aZkDPbU12JJ 917q1r4S9dfzEtkUvaMPz6+Q/QffU+YG0l6qm6O6jynVUe1Y6WPKrvVdzQ5SoqTXNWGbEmkZHAiE EwK/uXPuvdB//J9+Be6/5aPwH6l+Hu9d/be7O3H1xnOzsrWby2ti8lhsLko9+9k5TfVJFTY/LM86 NTxZBIJC7WZ0LDgj37r3RsvlX8WelPmj0N2D8bvkHtKHePWHY+J/h2YofItLk8ZWU8oq8PuTbuS0 uaTI4+pSOppJ9DLrXRLHLA8sT+691XTmf5NnWe+/5WnT38tjf/Zm5qfIfHuiwtf0l8i+vaaba2+e uezNgZrIVvWva238RPV1AjqYKatalyWMkrpFlgnqoIquORoa2L3Xuim71+FX/CgTvnr/ACvw77x+ b/wZwfxY3Pi8p132H8kequrO1z81Oyupa+gqsJkcZmdsbnB2RQ5PMUEkUGTnx8sbKXmK1EwDCq91 7o6PzH/lV4Dt/wDlBbn/AJU/xw3Pi+q9uf6Nen+s9hbu3vRy5qDH0HWXZ239+ZHObpp9tQ0n3Nfl BiKqaqkpKeCN6ypaRYoojoX3XurYts4qTBbb2/g5ZUnlw2DxWKlnjVljmkx1DHRvNGrchWKEgHm3 v3XuiB/yw/hPun4FfH3evTW7t74DfuT3V8j+/e76fM7cx+QxtDSYvuPfk28MfgpoMmTI1RRJN4Jp V9DsNSgA2HuvdWM+/de6rm/lh/CfdPwK+Pu9emt3b3wG/cnur5H9+930+Z25j8hjaGkxfce/Jt4Y /BTQZMmRqiiSbwTSr6HYalABsPde6sZ9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691imTywyxA2Mkbpc821qVuffuvdVw/yj/g9uj+W/wDy++hfhnvPfWB7L3J1BJ2rJkd6bYxeRw+D zH+kLujcXaFGKLHZVnqI/t4M1FSyeRjqkjZl9JHv3XukR/NG/lp5D564PpTsXp3vTcfxZ+ZPxO3j lexPi78htuUC5yn2vnc3SwUe59p722vK8cWTwWbgpYKWthk1hF1B4KuklrKCs917qtLen8sf+dP/ ADAaTbnRH80v5r/FbC/DLH5LbGW7R60+E2zt8YvfnySbamQpMvRYTsbce/MPikxlHJVQNVPHjJHo jOkM0mKkMUC0/uvdWCfOv+Vh/psyHx+72+F3ZuO+G/zG+H20U2N8d+yMNtOkyvXtZ1ljsdJS4joj s7aVJ4nqtpxh5qelhjMsdFDWV4FDVpUvCfde6J7uf+Wp/NG/mJbr6v2r/N679+HlD8S+oew9pdrV Xxw+CO1+2aOm+Re8NkV9RU7fx/dm8O64/wCIUWHQvFLU0WGnaOoDTRCGnqUpMlT+691sB9q9Vddd 49dbx6j7c2dg+wOtewMHV7c3js7cdItbiM3iK1R5IJ47h45I3CTU9RC6TQTJHPBJHNGjr7r3Wupt n+VV/Nl/l6ms2X/KV+fHU25fjFVZPLZHbfxZ/mD7U3Huvb3UC5CDy/w3rftDrjH1uZFD94ZZ0xsE OOo4vIXanqKjyy1HuvdEi+b3/CfX+ap/Ndw1V2P/ADDPml8RsX3B1DsrelB8bOtPjN0ZkP7hT5rO YuHKR4TsDuPeFJhN1Q42sy1LTwtFNT5eKhjMtZSQrNU1MMnuvdbHPxTpO+98fy6tudebp+PmD+FH yDxHQ+X6bpepTUYLMdYde74wex32ntjN7Ln2bWZRJdptP9tW0VOZnqoYNdLN5ZoTLL7r3Qhfy7vi ZB8FfhF8afiTFlMPnqvo/rDD7Uz+4cBjDh8PuTeE80ud3tuWgxzAPGmRzFXXVv715WMpeZnlZ2Pu vdFR2b/J56A2Z/N07F/mxY9KQb43r0vjdnY/YyYuOKhwXclfHLtTf3dNHV05jSOrye1afH4Yw+Jy 8tRlauZzLUpp917obP5rHwq3F/MK+CncvxQ2du/b2wN5dg1/VWZ2pvfdNBlcjhds5nrjuDA9lLkK mkwbx1bM8OImpoxBIh1SgMwjL+/de6sJpRUCmpxWGJqsQRCqaHV4GqRGBMYdYB0lr6bi9vr7917q u7+Z58J90/PX4+7K6a2jvfAbCye1fkf0F3fUZncePyGSoavF9Ob8h3hkMFDBjCJFqK1IfBDK3oRj qYECx917qxn37r3TFubFSZ3be4MHFKkEuZweVxUU8is0cMmRoZKNJpFXkqpcEgc29+690Qz+VH8L d0fy8fgB8e/hxvLe2B7E3J0vQ9g0WR3ltnH5DF4PN/3x7az/AGJRy0OPypNRF4qfLxU8qyE/uRuV JUg+/de6sQ9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3XvfuvdAd8kv+ZI7+/6gMb/7vaX37r3Q4+/de6//0N4fr/8A 5nH3/wD9R/Wn/vDR+/de6HH37r3SfrNx4+nq6jGUnmzOapo4pJ8JiPBU19MKmCSppDkXleOnolnS GX7eSvnhSUqUjZnsp917rC2NzeUa+VyZxdFeZGxO3ppEkqYZI56Uiu3DNHHVAMjQ1EX2EdHLBKpU zzpyfde6e6SjpKGIwUVNBSQmWado6eJIkeoqZmnqZ3CAankkZpJHPqZiWYkkn37r3Uv37r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3XvfuvdJ3dW7dq7E29ld2733Lt7Zu1MFSvX5vc+6s1jtvbe w1FGQJKzK5rLyQ01PEtxeSaVVH9ffuvdU1/Kr+cVtPr/AHJkenvjPsLMdudzfxQbRWXK4Sohw22N 65GasweIwue2bksht+pgr48vHjI5MJvLO7PqMpjslS5Has+4y8dJMjvb2z263a6vpFijQElmNMKp Y08yQqk0FTQGg6ukbyMEjFSf+K6KBJ8X/nX89snhN2fK7feS6b69gymP3Lhtp43NZpN20lFUkZGm otuNhKfa2WxFTJgNwZ/atRnaDG7AztK0EdPn8Xu+lCVDQFzl94HZNsD2XLK/WTDUviDEanvWoYgh qHRIhUSK61Rwhz0IbLl+eSj3R0L6efkeHl5g1oQcivVn3x++HHx6+NGHwGP6x68wFHldu02RhoN2 12HwX94qaoz+PoaDd9dhVxFJR4/CNnmxtHV56n29QY+lr6xDWVNPJVO8rYs8y878y82TvLu9yzI5 /s1JWMDUzhdNSWVGZjGHLeHqITSuOhVa2FraIPBUVHmePCn5VAFaUr59Ge9hfpR1737r3XvfuvdF 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 4jF7w3Ni+y6zw00UdPHDTwCnpyAdENPpIk917pX1v8gj5dfMnP4DI/ze/wCa32/8ret8FloM0vxr 6Q2Ngfj71Bkcjiaxnw8+dG2zHR1ivTSVNJWONtw1xgqJIocjE6rOfde62QOl+l+qfjt1bsnpLo/Y W3OseqeuMHBt3ZWxtp0K4/CYLFwSNO6xRgs8s9RNJLVVtZUPJUVVRJLU1Mss8skje690Jcsflili vpMsbpqte2tSt7cXt7917qsn+UX/AC41/lXfDjCfElO4D3jHhOwN/wC94t9tsMdcvNFvfLLko8TJ tsZjOANShBG1QK60p9Qii/T7917qzv37r3Xvfuvda0v84D+RL8m/5t3aO38xuv8AmVU/TXQ/Xs8V Z1f8eMH8Vqrd2AwWZWMLWbt3bnqjsjGpnsxMboKufGQxwwnwQQIrStL7r3SZH8mT+c+OB/wpF7xA H4/2T7b3H/sRffuvdWM/y6fgx86PibvLsfcPy2/mi9gfP3Abt2xiMNtDaW8elMd1XS9fZihyrV2Q 3HR11DufPGrkqoCtM0TQxaANQc3K+/de6tn9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690B3yS /wCZI7+/6gMb/wC72l9+690OPv3Xuv/R3bNm5ynpO8O/sZDSZLJZMz9WVv2dBRO6pSVG0VpBPPk6 oxUUNtEriOapSR1jfxJIwCn3XuhlTHZrKKrZytGOhZRqw+3KyrjXVaxFTuQpT1coDKskZpYqO12j lE6G5917p8pKOjx9PHR0FJTUVJCX8VLRwRU1PF5HMsnjghCqupmZjYckk/U+/de6l+/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917pKb03zsrrfbtXu7sHdu29j7WoJqGmrNw7szeO2/hae qyldHi8VSSZLKyRRCaqqpoaalh165ZpEijVpHVT7r3VJXeX87jY8eartg/EvrDePdu64c3SbVbcs 20s/LhaHddbRUOdpttDZkLUOQOXahmr5JdsZqvw25TFSy12JwOdpoyroL3ctu21DJuE8cKhWeruq 9qU1MKkVC6lqRwLKPMdORxSymkalsgYFcnh1VZ31/LS/mPfzGMbgu6/kt3xujrfcXU+7cJ3J071R TZ5v4jnMttvGw1c/X8mMwUeMxW21zMYmxlDummxuKrIopQdxbOr6+niqkhDf/vAcrWN8Ns2dWutT aGuAQsUdSV1jUCZQuGoNKste8Ho9t+XbqSPxZiE8wvEn5fKvD1Hp1d78VunPiD0X0ptXtjqDb+2t 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 qGuOB6xh+8fdx+BtViD3appCPQUjUfI1OrzxTPEdVAe8qusV+ve/de6etrbs3T13vHZnZew56Ok3 91runEb62TV17eChXcGAqPPHjMpWRU9TPFjcpAajD5r7SPzy42rrII2UzX9hbnPlu35r5cuNnmUF nUtGTp7ZFB0kFlcKTUrr0kqGJGQOhVyZzJc8qcxW+8wsQqMFkA1d0ZI1AhWQsBQNo1AMVAOCet0z E96dB9yfFeDvTe2c2nt7499idW1GX31V9sZPC7Y2ztzauexr4jem2OzqzcE0NFj5KCR6rD5unrJk EFRHPTykMpHvnRfWVxt93JY3SlZImKkEMpx50YKwBGRUA0Ix10SsbyDcLSO9tWDRyqGBBVuPlVSy kg4NCRUEV61a/wCTLvfrz4S/NTsb4udXZFqz409k7ibB9b7nyG0s9tA712RX5eWLoDszFNltvrkc 7RVRq8fiqLOSV8dPns1lt/ZeF3xO3qbxJulXW5b7917r3v3Xuve/de697917r3v3Xuve/de69791 7pMZKobE5rF1umVqHMyxYDJSGVFpsfVaJanA5GdqyqijjSWYvjSKenlnqKipo0No4iV917pT+/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de6A75Jf8AMkd/f9QGN/8Ad7S+/de6HH37r3X/0t4fr/8A5nH3/wD9R/Wn/vDR +/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdIvfnYmxOr8Eu5uw93YDZ2Dly WNwdHX5/JU2PXKbgzdUKDAbawsMzCSuyeRqWSlx2No0kqqudkgp4pZXVD7r3VAHav8/jrvsfP7+6 r/l/7Jz/AHv2V19vmq683NLmtkb3xFcu5MZi6LdlXQbP2Ll6XG1GU+4xUe5abxwVc+5KKuxFTNTb I3FRQzD2Xbjuu27Pbm63SdII1FSzsAANSqW/0oLLqbgtQWIGenI4ZZm0RKWPy/b/AJD9vSM238DP mT8oshT7y+bnyEz+JimgyNDNtfatbT1Gdix+Rx527nqbEV1BHS0tHFkmxeAzrJFTY/a+XUz0m4uq 4aj9xMb+bvvE2tvqtOU4fFcU/Vk+EHsbhnVQiSN1WqupV4p1PQms+W3buu2oPQcfP/YIJ4HBU9Wr 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 jfT2/wDIybfoqrK7ikEn8MhxGXykuLrtwiGSTCbY3Ju+uh8ch80ePvWQPVov8vj5PRfLX4rdb9p1 lVPUbyhxlDtnsRazFSYDJSbtocLR5WHPZHbc0MDYqTcGIrsVuZMS8YkoYslHSTWmhkA917o7Hv3X uve/de697917r3v3Xuve/de697917qDkKGHJUVVQTNNHHVQtEZaaV6eqpmYft1NJUx+qKaJrSQyo QyOFZSCAffuvdQsDk3yNG6VT0/8AF8ZUPi85BT6ESnylMiPIy0omneGKpieKtpI5pPIaaaF3AL+/ de6e/fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3QHfJL/mSO/v8AqAxv/u9pffuvdDj7917r/9PeH6//AOZx9/8A/Uf1p/7w 0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdIXsLszYPVG333R2LuzDbSwolalpqjLVYjq crkVpJa+PCbfxkQeqyWRmigmamx1BDNVTlCsMTtx7917qiDtb+d3kOxd7jqv4H9JZ/ufKfxOox9d vrMw11FSTRYurrqbPRbcwmNpchNTzRCgqIKlpqXJ5/B1IE2W2JUUKSMS3c942nZLU3u73CW8S8Wd go4gfacsAacKivTsUM076IVLH5dBNiP5dPyX+Wm7W7I+dvbmcxWNrMVmsFV9a4PL0WZzGVxGWpji Mpjsw8M+Qw9Jjq2fE7fztdttKiu2Tl6hZKp+vtuVzSIMcecPvE2kANnydD4r4/WlFEHwHCHLfjRh 2gghkfoS2fLbHvvWoP4Rx8/P9hH7COrZulPjJ0H8dabJw9LdU7O2DU52Okhz+aw2JgG5c9SY55Gw +NzG5anyV9RRY5ZXp8Tj5Kg0uPp9NLQw09NHHCuMm/c1cwczTibfLuS40/CrMdK0FMLwBpQFqam/ ExOehPBaW1qNMCBa+nE/n/k4enQ5+yPp3r3v3Xuve/de6Lp8mNm7hzOzMH2FsLG1eY7P6J3XR9vb CwmPkaOs3e+GxlXht7dcQhZYEkk3NtqvzGEolqZRTxV9RR1kysKUD2ecuXkEN6+33zBba9QwyE0o mogxy5wPCkCuWoSE1hcnpq5VigkT4kOofP1H5iop606cvjR3RsnBbuzm1INz4teou5NkV3y06H3d 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 W8k8yT8q8x2+7RtpQELJ8VPDYitQhVmVSFcoGXxNPhk6WPW7Rgt5dMfKf4yw7zy0OIz3Q3efT1dV btxO8WpKTGv19vTa0tJvXau/IZJRHRyUtLNWYzO0k8qtSyx1EExR4nA52X9jPt15JZXIIeM04MtR xVgHVW0upDKWUEqQaCvXQ2wvYNxs4722IKSCvFWoeDKSjMupGBVgGIDAipp1rI/yiPl1tv4/fL3s n4dTdt4LtbqCv3zndh9cd0Y7d2N3JtPsamye+Equtd/4LdIya4qpkzWf3PTyZg7fo6+qzu8N+5eN amPEbJZKdL0s627/AH7r3Xvfuvde9+691737r3Xvfuvde9+691737r3SYqFXD56KvRVSh3C0NBky oCRxZqGPRh8jMRpRTURA0Es0haSR1oIEFh7917pT+/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XugO+SX/Mkd/f8AUBjf/d7S +/de6HH37r3X/9TeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690FXbnd3VPR O3P71dr72xO0MZMuUGKpakVeS3JuiswuEqdyZLDbI2dhIqnL57JR4+jq6wYzDUNVVvDDK6QsqMR7 r3Wvx8u/50XevY20ctsf+Vh0w3bHa+VzE2D29uzcNDRbjoslicXvCXY+9909fri6qXAZKLGGrweS TK4mt3ScOKll3jtzCRQuzEu78xbJsEJn3i5SBRSupgKag5Wv8IcoyoWoGcaASxAL8NvNcNphUsfl +Vf2VFfQZ4dMWyP5X3dnyPyz9q/PXuve1Znd04+ojz3WmGy2Ir3bB5gy5k9f7ojqajcOIfG0NXks vRVeAq8pubb06GlyG3qDaFQj0oxr5r+8Y8csltylbo68FmlDUwx7lQlWYOmkaXVDG4bMoKkCa05b BAe8Yj+iKenCueB8wTUU4dXC9QdDdQdC4OXb/U2xMNtClq0o0y2Qg+7ye5dxNjo2hx02694ZqWpy uVkpo3aGmkyNbM0UVooysSqgxu33mXfuZrr6ze7p7h/LUe1cAdqiirgCtAK0zU9Ca3t4LRNEChR8 v8p4noW/ZP1fr3v3Xuve/de697917r3v3Xuve/de6IBs7rDYsHcnYfxj7f2VtnfnX38fn+V3xjxm 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 A7cpxJOkE8ehb/4UOfFrtnH9Y9afNn4kVGH2R2z0xJhuod/ZGlxdbHVU3U27lyeytg7m27Jg56X7 XIbbyG58xtujqJyKGgxG787X1LUpoqavoYO6nDq7L4O/J3bny2+N+wu2sJuHG7hyk+OocNvKtxtJ jcOlRuSHDUmZptwna2OymZOEg3JiK7FbtxWFrMlNWUmNytFFWEVIlUe690bn37r3Xvfuvde9+691 737r3Xvfuvde9+69015jFxZrF1+KmqKqkFdSywJXULxRZDH1DLemyWNmmSRY6mmkCT00pRtEqK9i V9+691wwtfNkKCN6uJIMjA8tFlKeNJ1igyVI5gq/thVKkrU8jDy0sjoplgeOUDS49+6907+/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917oDvkl/wAyR39/1AY3/wB3tL7917ocffuvdf/V3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+690FPafeHVHSmMhyfZ298Ttg1tFnMjh8KRWZjeG56bbGNOZ3H/AHN2LgIqrNZqSgo1esrIMTQV EkMCtNIixqzD3XuqMO6/5ufcHdm7j0r8AutKvPZXPU9TDRduJNhd1U0GMlrpNqS7327uDD0O6dtL iqPIV238lQbkw2L3zhaqmnqqDPnaNVBLVU5FvvMmx8tWbXu83CQoorQkBmNGIVQSMtoYLWgLDTWv Si3tZ7pwkClj/wAV/grnpIbZ/lldqfI3OR9i/Pfsw7oky38KyGU6t28JK+gydKmVpN8QbP3rBuSv 3HSTYqir6vcGJl23nsxvampIZoqnamZ24qpSR4zc5feJllD2PKEOlTqXx5Kio711Ioo/cpR1J8N4 5FofEU9Cay5cpSS8b/aj8jk8ONQeIIPkerfOuOquvOo8Em3eu9qY7beOMOKhrZ4TU1+bzbYPDU+3 MTW7n3NlpJ8llquCgpKWjStydXPP4YY4zIVRQMbd23rdd9ujebtO88hLGrHALHU2lRRV1MSzBQAW JJySehPDBFAmiFQo/wA2BnicevS/9oOt9e9+691737r3Xvfuvde9+691737r3Xvfuvde9+690VL5 dbZ3MmxML3Z1vgJ9xdsfG3cUfbW0sFjo2bMb22tR0cmJ7h6tx601HWzzz7k2pUZWjxdGkWlsymJq GIaljdBJyndQG9fZb99FruK+C5PBHJrBLTUo/TmCkljQIXrg9MXasUE6CrRnUPmPxDgeIr+dOjF7 Q3bt3f20trb72hk4s3tPeu3MJu7a2ZpllSny+3dx4yLMYTJ06VCpIEqKaaKVA6KwDC4B49h+7tZr G6lsrkaZIXZHFa0ZCVYVGDQg5HSlGR0DrwIBH2HpRe2+q9e9+691xIV1ZHUMjAqysAysrCxVgeCC PqPdASpDKaEcD1voGOqe1p/jPgcX0723id5VfW21GnwnU/eGMot1dj4qPrrG4mfKYHbfdlZTpX5j B5XAUdLLiJdwZbz4zJwwUFZLlostkpsTS5ue2Hu/tW+WUe1b9NHbXUYRFBogc4QBQKKRwZStCi6l kQCITzgnddmlgkMtuCyGpPnTzz5/I14mhB7tKq+X59/F7c2Jzn+gPtbY/wAq9642krkx/Xvxr3nt btvLVm4KdAuPwW4c9tGrqsNtlamoeKnOT3TkcfQQa/JUVMcaswlnmDmzYeWLD947tcKkdQKBlLGp yVWoLaRViFqzAaUV3KoxPbWdxdyeHCpJ/l+358PT1oKnpP8ATexMzs7AZ/Mbz/g83aHaO8s92n2x W4KrqMliX3rudYaWHA4nNVtJQVOQxu3MPR4naeFr6uhpqifGYujeeCGUvGvPnnvm25515km3ufCk LHGKaaRp8PbVtOolnK6n0liut6ajIu32a2NqIV48T9p/ZX0rQVpwHDoqP8zT4bVvzT+MuU2XsvL1 O0+8euty7e7g+Pe/cdX1GKy+y+3thVy5ba+Xx9dTVNGPNHKgnoY6qpWjXIRUNVVBo6UD2v8AbXnJ uSeaItymJ+mfsmAz2HgwGcqeJCswQuEFW6b3SyF9bGIfEMr9v+z+ytK9Vd72+GX83L58NN1t/MF7 5y+O6Nw2jDZnonqbLbB6a6F7posfuo4aTcHbHZnTeSrd/wC+KLIYynXPVW0Z9t7Ioqh3pqSCowlR JUTUOUe6feF5ItrAT7X4tzMw/szGyFSUJGotRDR6KwVjjUylqKGCkXLt60mmWir61rXPlTPDIqPS vyub2nR/Hf8Al9fHTZOyc7u7Z/WnWmxqBsDhpqujwu1Y8/nahanO1OG2VsbbEEYqK2qYVLYvbmAo ZZREiUtFTMsSJ7xL3GfmH3C5kn3GGBpridtRVPhjXAGpjREUYqzFE1EnFadC+NbfbrZY2YBVHnxJ +ziT8snpMVPZvyj71pzS9FdcR/HnZNbJkqV+6vktt6rm31NRxitoaTM9cfGfGVVNXnzSx0tRTTb6 y2DmhR9cuEq1Hid1dt5Z2M697uPr51ofp7VqR17TSW6IpwLKwgVyGGHHXjLdT4gXw1/ifj58F/Ye 4jHl0uuuPiT1bsjdkPaG6ptzd492xGcw90d3ZGj3nvbCJPVVdQ1F1/QQ01JgtoUYWtmpzRbQw2Mh liCCpWeRfIUW4817neWp260C2Vnw8C3Hho2ACZDUvMSFBYys1TkAdWjtIkbxXq7/AMTZP5eQ4+QH Wp5/P26Af4Q/PPpH+Zrs+gaj6b+SjUPQHyoSljLU2L3nT0EY23uqVbVU98hi6CCvioMPj1knqsHW S1VQGrjqze+5l7uvy/uibNeyEi1NCOJe0lYBxT4mMDkMoJCj9FeAPUN+9PJCc18tTwRqPFpriJxp mQErk4UOKoxoTpZ6ZPWBHSVFkjZXR1V0dGDo6OLqysOCCOQR77PRyJKiyxMGVgCCDUEHIIIwQRkE ceuaMkbxu0UqlWUkEEUIIwQQcgg4IPDqJHkcfLkKrExV9FLlcfS0FdX4yOqp3yFFRZRpo8ZWVdEr GSOKpamqFgkdQshikCE6Gs3HdWss8lvFIrSRaS6BgWQNXTqUGq6qHTUCtDTgenJLa4it0uZY2WOX UEcqQrlaatLEUbTUaqE0qK8R1N9vdJ+twH+V7go8B8FOiIIBF9vmKXsHedO9PXTZGGen7A7Xz2+q eqiqpmc6ZUyKyiNToj1eNAqIqjmnzTdNeczbhdMdWu5nNa1x4jUAr5AUA9AAOulHK1stny1t9so0 6LaEUpQ18Nak08yak+pJPR68thsRnqGTGZ3FY3NY2Zo3mx+WoaXI0MrwyCWFpKSsV42KMAykrwQC OfZF0fdABuv4cfETfcddDvn4r/G/eUOV+7/icO6+jusdxR5L7+JoMh9+mXxcwm86OyTeQHWpIa4J 93immhqYHZCwKnSSKg8QacQfMcOm5YYZgBMgcKQRqANCOBFeBHkePWsd/Mc+GuJ+HPdOBPXVPloO hO5cbkcp19QZPITZeLrvfe3GjbevWFPnsvPJXTUdVTT0+e27T1clTOkYzNPHLFj8XRwRZc+x3uHe b0ZeWt8m8SZKvAxCqdH4ogARULlkCoFjQaa6dCjEn3u9vbLZRFzLscPhwvRJ1BZhr/DKSQaFjQOW ctI5DU1a2JA/eRvWOfXvfuvde9+691wMmSp5aLIYPL1e3tw4XK4bce19xY8ashtjdu18vBuPaO6c chZFapxeTpaTIUwdtPlhTVdbj2S8xbJbcx7Jc7JeDsuEK1zhuKtgg9rAGgIrSlc9HfLu93XLm9W2 9WZ77dw1MZXgy5BHcpIqQaVr5dbt/wATPkNt/wCVnx7687nxEVBTT7oxVVjN6bdpKpMhT7V7D2zX zbX7G2c05uZY8fmKStpoJnA+4gWKoUeOZCeb+7bbcbPuk+2XQpJbuyNw4qaZoSAfUVNDg5HXRvat yt9422DdLU1jnRXU54MK4qASPQ0FRkYPWj33T8ej/L++evyM+EkWOmxHT+6Kqq+Vvw41zTPik6R7 PzTrvvq3BmS0NMmzN2ff0VLQIzztRzx1coCOHbJv7vXNwkiuOT7x+5azQVPlwlQVPkaOFApTWfXr Gf7wXKRSWDm+zTtakM9B58YnNB55QsTWugenTx7yf6xh697917r3v3Xuve/de6XfVfVm4e8e0Ouu m9p7w25sPcXZW88Htmg3Runblfu/FYuleq/iWfnG2MZk8NPXVIxdPXGkgXJ06+YI8j+JXBAXuTzZ ecl8rvvlikckqyRoFk1aTrah+FlNQKkZ8sg9D3245Utec+Z02S+eSOJo5HLR6dQ0LUfErChNAcee COrQt1/yRfk2mMr6HbPaXR+46qTHstFlMlmewOtpo8oZH8NVTRUO391NRvB+1NT1KTTOkyhlQFVP vHm/9/5932ufat22iKWOdCjaZmUZ4GjRyA0NCAaiozjHWQlh7BwbRukG67Tu0sUkDh11QqxxxFVk jIqKgkUNDjOehT6i/lkfzZqvo3r74tdvfzNdgfH745bGwcm1Zdu/BbpHKYDurIdfy5GWrxnWG3Pk N23kq2p21jdv0c0eBwFdh9vrVpjKOkiqDNN55pMeeshero/ir8UOh/hZ0ttroH457FpNh9dbakra 8061NXls9ubcmXlFTuHem9tz5N5a7L5rJTDy1uSrppJXskalIYooo/de6oo/nkbDg2tUdXda/A/e XZ/R/wDM0+f3cGz9n7JxPx+7Gy/Vm3+0cX13kqPdG+++fk3iNsm0uN2LiqSGqk3hRQR50hKXEy1V bg3r8ZJ7r3Q//wAnbbWH+GPx+2Z/La+VW2tp9Y/KfGZzuqvNJlcdXV20vlpg9z7yq9xZbtDrzuPc 9TU0/ZGWymLlo6zd9OY8bl6Fh4a3beNx9PSSTe690Sj+aIO+fgX2r0D0b/L/APkBvT47dBdvYjsn fPaHS+0cv17ubE9TY7bk9Ht+ig6R2/v/ABVfkuu9vZ7+N5IQ4/btVLjkydBTSYPF4T7TL1tRIXtt yXd84cwwwhStvG2uSQqrIBGVLKQ4KthlBXS4JZFcKr6hHvuPznacocvzTswa4kXRHGGZXJcMFYFC GXKsdWpCArshZk0mpPObJ2jufaVVsPce38bntn12KgwtXgMxTjJUFTjqWNEpIZUrdbFofHG8Mury RyIkiMJFVhnhc7FtV3szcvzQqbRo/D8Mio0jh8VasCAwY1OoBq1z1gnb77utpvC8wQzMLtZPE1g0 Oo8fhp2kEqVFBpJWlMdOMWGgioFxgqJ5YJ9s0W08/k54cdLvvfeHp4oqerxvaHb5pxvPdmMrIoY4 6vb+59xZDDMusJjoxI4Ma7H7Jck7RcreTRtdOpqBIaxg69anRmpWgUVYgoKMGJYtJO+e9vOu8WzW kMi2qMKExj9SmjQw14oGyxooIY1UqAoV1REiRY41VERVRERQiIiCyqqjgADgAe5fjjSJFiiUKqgA ACgAGAABgADAA4dRFJI8jtLKxZmJJJNSSckknJJOSTx65e7dN9e9+691737r3Xvfuvde9+691737 r3Sz657O3d0l2JsXuXYEMlbvPq3c1JvLBYlKuChXcf2dNNj89syesq5I4IIc/iarI4CoqZjaCKtk nW0kaMoI9w+WE5t5Uuds01lC+JFStfETKgDUtS2VAYhakE8Oht7e8zvynzVbboWpET4cvCnhvgkn S1AuGJALUBA49brWPrOnPmD8dYqg02N7G6H+SXUckVXjq+PVj929a9obVamyGJylMraozUUFZJTV UBYSROXjbS6G3O6SN4ZGifDKSDkHINDkVB+0GnXQyORJY1ljyrAEYIwRUYNCPsIr1rb/AMoXvPC/ Fr5d99/CPdPauH3jhqftXdPXGF3MN8YXNYXJ7lxe4IsvtrOUVR/GosZTV+YrN0UWQ3HS4jFS1DZv f2C2rT2p9m1Qp3JLe4jjWWVGVX+ElSA1ArGhIoaKynHkyngR1WO4gldoonVmT4gGBK1LKKgGoyrD PmrDiD1tde2unuve/de697917r3v3Xuve/de697917r3v3Xuk08b43ccVTFGq4/cML09foR7x56g hD42saOmpyP8po0mp6mqqqkAGmoYIlJf37r3Sl9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3QHfJL/mSO/v8AqAxv/u9pffuvdDj7 917r/9beH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3XvfuvdAj3X8jelfjvg33B2/v8Aw+0qf+H1OWpsYy1mX3Nk cRQ5Oiw+UzGL2ng4qnJVFDQ1GRoVydfFSmmoUmSatmggvIPde6oz3t/N4+Qfyaq5dm/AjoLddTQ5 Wlw1XiOzq07YymVqcNnTA+P3Fh5a5Mjt2KheakztFTbho4twbRrZaX7Go3ZgMnIiRBjfeceWuWka TeryOHTqwTU6lVW0UFaSFXVlQ0Z1OpQVDEKreyurs0gQt/qIr9lQQTwBweq8NwfAvpj4xb23v88/ 5zHzoc4rsrDbGx1V0tvPfO6t4bVyW5Ov6ukyWMqsRity1mfymSrYFP7e38BR5Sqwk7PV4ncBUxyR wXuvvHzLzhdSbH7XbfJIwqGuHAqFIcAgNpSKuGRpHBqpGnB6P4dltbNRPusgA/hH5fmfQgD8+rAP h7/OJ/ktb43TQdCfGT5KdY7W3PuTMmkx+H3Ls3sfqmTsDclJRUuDpq+r352vh8ZDnczWxRUlLTz1 +UnyNeY1RDO6WEOc2+3fuu4bfOYraW6wWZlkSYoGJJHhoxKipLMETSKkmnHo6s9y2kEQWzBPIChF afM8fzNersPcTdGfXvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdFK6 OrIuqu1uyvjHVs0GHjirO9ejBLqEUvWW9txOnYGysfI8jtL/AHR3XUS2jURxUeJzWBooY9EN/Yn3 xTum2W3Ma5dqW9x/zWjUeG54f2sIHwimqNyTVumIP0pWtxw+JfsJyPyP+EenRtfYY6f697917r3v 3Xuve/de697917r3v3XukF2J2l171PiIM52HuzFbYoq+rXHYiGskmqMvuHLSDVBg9qbeoFmr8tkJ R/mcfjaaepkPEcTH2r2/atw3WUw7fE0pGTTCqM5djRUGDliB16SSOIapDT/L9g4n8ui9U2/vkx3d ND/ov2PF8detZmVj2V3rgKjJdtbhoW0t5NkdB01TTHDCVdaJXb1yFPV00gUy7bqIzyfGx5b2Yf7s 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 NS4vLRyQ5vBRVVQ874qtoZ5CfKCcM+syujM+/de697917r3v3Xuve/de697917r3v3Xum/J4+PKU NRRSOYjKEeCpWKnmloq2mlWpoMjTR1aSReamnSOeEvGwDopINre/de6w4XIvlcbT1ksBpqoPU0df T6akJT5LHVb47JwU8lXFC8sKVEUiwz+NVmjCypdHUn3Xunb37r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691wcMUYI2hirBXsG0MRYNpPBsebH37r3WnL/MM6u/nPfByX4WSUf883sPsVPm B/MC+PHwlmhb4R/HXaUXXdJ302YaTsSlZ6rKvk2xIxYCYqR6f7gSeqtiKXb3Xurt+k+hPnN8Pug/ l9uz5J/zG9zfOHcc3UeY3L1Fl898c+sujanp3NbG2XuHJZKsoYdk1uQp8v8AxOefGSlK6FRAaEAe VZ3VPde6qT+AXxo/nNfN/wCGfx1+Wc/8+fsrrSbvfrjGb7m2HF8Fvjfu+LbEtdUTUsmNj3K9ZjDW KDCWEpoITZrFeNR917q7v4J/Ff5rfHHI9k1Xy1/mPbo+edFu2i2tT7Hx24/jl1l0QOs6vDT18m4K 6jquva6sbJHKpU0kckdUFEH2qmMkyvb3Xuqvf5K3887CfNXtvuz4PfJHMY3bvyv6o7Q7ixfVeVq6 aiwNF8iOrdibyyVG0234aZIKWXcW36Kkb+K0NLGrz0UTV6RyfbZGWP3XutjLelfVYvZ+7MnQSmnr sdtnPV1FUBUcw1dHi5ainlVJQykq6hrMpBtyCPfuvdVY/wAh/wCRndHy0/lP/Ej5C/IbfVZ2V3H2 Niu2anem9q/GYHDVedn2/wB97q2lh3mxm2KShoYvBjqCjplFPSxgrGGYFyzH3Xuho/mpfOjAfy5v gp3z8psm+Pqd0bS20cB1Lt2vejc7t7i3jJ/AOvMJDjKqppGrooq2YZPJUlNMJzjqSskiBaP37r3Q HfyPfn3uD+YR8BOvOw+0pKin+SnU2Uy3QXyjxGQw8u3spR909bLFRZbMZDCS01GsEuYopaLKVcVN Sx01PXTVlDB/wDYD3XujPfzLO5ewvjt/L6+Z/fHU+Zi292b098bO3eydhZ2oxmOzNPit2bP2ZV5z B1tRicvFNS1MaVEMZeCoidHW6spB9+690Xr+UH/NO2D/ADRvjZjd/riD138gNj4va9D8gOmqykr8 TWbWz24MQMjhN5baxWZkkrG2xuOJJa7BVEssxCCSmaoqWp/uZvde6TP8/X5O92/Df+U58pvkb8dN 6S9e9xdezdGLtDd0GKw+ZlxK7u+Rm0dj7gC43PQVNJJ58Zkq2mPlgbSJNS2cKw917o/fyr+U3U3w v+Nnafyl72zU+G6z6g2bNuvcc1DBFVZjLVBMdFhds7doJXhSfJ5bITU2Nx0Dyxo9RPGJJIo9Ui+6 91Qp1T0t/OW/my7YxPyB77+YO9f5U3xl7Fkxu6OrPir8U8NjT8j5uuaqWvqcHl+xfkLmY6XJYjKV 9DNip3FPBPTzBHf+D4vyCM+690Km4f5Yv80X4pUdX2T8C/5t3yQ+QO6MMv8AGMl8df5kFXt3v/YX bi42vgrV2nj+z0p8Xk9qPVUcVRRiTHpCJ55o2kr8dGrzD3Xuj90W6PmL80P5c2V3HtrbO/f5eHzQ 3jsnMPtbD7uh23ma3YfaOzs2649K6mzdHko321uKWhNK8mQxArYsbWtUw0/3EdNO/uvdYf5Wvzwm +bnxaTdnaeMx/XHya6L3FuPo75j9XVEpoJ+s++Or6qTA73mloq1IWp8Xk3ppMpj3s8ESPLRrU1El DPJ7917ovH8uP5OfIn+YT8ofkx8vMNvnLbZ/lt7KrKz46/ETrcbSpsSvf27Nj52al7O+UOWz2apo 8tJjHqUbHbfp4PFTSxSNHURR1+KnM/uvdXc+/de611c7uj5Z/wA3z5S/KvpjpL5Qdu/Bb4G/CXtu s+Nm+uyfj5/DNufJb5M/I/a1NR5bs/HbU7IztJPLtHA7TmkTGRzUNPMtf5WnkFfHWRJhPde6SNWP mB/Jr+T3xIwu/wD5o93/ADj/AJf3zH+QuA+Kdcnytym196/IfoPvHtuhmfqfP0nbsceLqs1h63IU E8VXFLEsFHSGoSPHyVBpahfde62WPfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3WvF29vT5a/zR/m/8lPh18b/lJvr4VfDj4RNsvYfy N7o6MoKek+Rvd3yB3xiqfej9d9Vdl5aKWn2zjNt44Gmy9ZRxNVx1jaJYqynroPsPde6CPsqg+Z38 kvuj4ydj5P5wd8fOb+Xf3333sz4195bO+Y2VpOyfkB0Xu3uKrjxPXXcOy+5sBi6eetxVJkYZoq/F 1NLTU6xTLSiGpqaqlrcX7r3R1v5lO5P5gfcnfHx/+B3whqux/jztDtfau6+xvk/89Mb1rXZfbfTf XGMqmweE69633zkoziRvXMTRV0iY+CRcjTr/AA6pWakpJ56lfde6ro+WOyPmh/IowfX/AM19m/zE flT82fiTjO2OptjfLP4/fNjc2A7k3vNs/f8Anf7iTby6W7FeHFVWKq6euyNJLT4ykjQLMkUtY+Qp Fqac+691bn/NU7n+bXX/AFN1d1P/AC+Ousrn/kp8le3NvdR4zuDIdf7m3n1X8Xtj5HneffXaFdi8 VlcbSw4pZKVKKmzCLHUGSeaKOraiakm917qqn5QfBH+Yj/Le+NvZXzs+PH83r5ffIftr42dc7i7s 7l6e+ZmexPZXxr7r2X19CN9dq7e2n1+kSTbNapxNFkVxooq2rqYwVo6SuoZJI66D3XujwfPv+Zrv zqj+SbP/ADHOhtsLtzsftnov497w63xefoI91RdX575MVu3sNS5jM0NfDTRZF9rLn5apUqqVaeon pYxUU5p3kiPuvdFRz/8ALT/nCfHfB4T5P/F/+bJ3R8t/k9QVeP3Jv/44fJmvxI+H3dONyGZpcjnd ldd7ZE60+zYWo1mpKSup5VlZG8lPU4uQqR7r3V+fcff2zPjR8dt6/Iv5IZTAddbT6p65m352pPi8 3PuLC4Oox2LSfK4La+ZylHiJ8u8tawx2HMmOpJ6+aSnQUsM0whX3XutbrqrFfzl/52+Bg+Qh+UO4 P5SPwF3v48r0P150rt3+K/LPuDY6SvNhex9z9j1M+MrMBRZZJEnoJ6SpiSrpo43TD/bTxZCp917p d9jfy7/51PwTweW7o+Af80btv5yVe2Zptxbh+In8wHH0nZidp4XHoZpcBsztuWsTIY7IvDGsUFBQ yYiOplLP9/AxEUnuvdWz/wArz+Yz19/Mz+MWP7z2vtfMdZb+23uXNdZ96dKbo+5TdfT/AG3tWRYt w7Tyi11PSzSwMGSejqmpo9SM0MqRVdPVQQ+690VbdP8ANQxXWf8APdwP8s/fGeo6fYfdHwy683X1 vJVtiYY8D8mMZvve24Mpt1qxBHMv959npQBI6ueS9XjsfDRwRvWzSVHuvdXie/de6pW/mGfzXNt/ EP53fyxvhDhKqjrN8/MHvjHY3s6kMS1VRtrp3cVHkOtNju8Rpp3hmzm963HGjqYiumDEZCOVoklE q+691dT7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6A75Jf8AMkd/f9QGN/8Ad7S+/de6 HH37r3X/194fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3RWvlH80vjL8M9kZnf3yL7Ww2w8PgcAd1V+OipMvujdq7XXPUe 1pt0rsvaVPXZUYiDJZCgoa3NPSLj6OWphFZVU6yK3v3XuqUey/5sfyX+WRxe1f5c3VuVnx24sBt7 dVHvTKYuMZ+p2/uPFQbw2xX1eRz8TYzF0eThxu4sGtT4BtzLuac4Xs7E5EaEC3MPOXLnKtubjerl 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 ruR/pmJ+fGuWVl7Ie3traiCe1e4alDI80oY/OiMig/6VQPlwpcB8Bv5idJ8qKmp647ExOE2n2/jc bUZWkXCST0u3d6Y2icCsmw1DlZ554a2CNllqKQTzBkWWePxxIyJPPtX7tHnCb9x74qx3wUsjIKJM FFW7anS4ALY7SNWFoA0D+6XtKOT4f35sjNJYlgrq5q8JY0XuoNSEkLnuB05bUdNonuc+oN697917 r3v3Xuve/de697917r3v3Xuve/de6h5HH0OWx9ficnTR1uMytDV4zJUUxkENbj8hTtSVtHMYyraJ YneN9LA2JsR7T3dpDfWslndLqjmVkYeqsCCPlg8RkdKrS6nsbqO9tW0yRMrqfRlIIPzyOBwej9fy P/m6nUfzE3R8BeyN31+byfc+2sv2htJJKPK1NFiM5iMnUJTZnM5VCuLoKnPRioSriRYaeFKrZ23M VHNJj68x85uc+WrnlPmO52SfIiaqHHdG2UalWpVaYJr69dFOTeZLfmzly23uDBkWjjPbIuHWtFrR q5Ap6dbiPsL9Cjr3v3Xuve/de697917r3v3Xuve/de697917pM6TitxakW1FufiXRHfx7ixtF6Jp PDCzn7vHwaHlmmSKL7OJEUyVHPuvdKb37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Wvj/woB/7otf8Aje7+Xn/8tvv3XurlflR/2TD8jv8AxA3b/wD777I+/de61Tv5RP8A0EU/ 8Nq/Dv8A2V7/AIZx/wBl8/0QY3/RN/p9/wBnK/0x/wB0f4rV/Y/3/wD9HX+4T76+u/8AD/2/Hov+ 5r9+691sT/BP/h0vwdmf8OXf7Id9z5dpf6Hf9ki/0/eDwaMj/fr/AEj/AOnL1a9X8J/hX8N4t935 +fF7917rXz/l8/y8dn/P7+V3v+kocwesfk10R/Mi+bnbHxF+RWGeoxu7ule5ML3lNkcVWU+bxqNW fwTKT0dJT7gx6B0nijhqBE1XR0jxe691bf8AAT+YZuH5Ndd/IT4p/KbAx9SfzFviRtLL7Z+SPU2Q gGKXe+J/gLUu3/kX1VF4oKfJbU3IHiqPuMWr09JNPEoIoq3Fz1nuvdB9/wAJlP8Atxx8Ef8AtRd4 /wDwTu9vfuvdVPfzXvnJ8Ru+/wCdr8UPh38ovkFsfpv4efy5Jab5T9/S73zNdT7b7g+T8lLj831D 1F/CqEVVPkRhaeqxdfWfc0pQU1TnqCUxyMgk917pp+OX8w/4O9Af8KDcxJ8Rfkb1z2t8Wv5vG18H Sdm4fr+umloOsfnTgsvLj9s7gyOOONNWU3fJUeNJjURQy5LPZGeciOij9+691sUfzm/+3S/8x7/x TH5Cf++1yHv3Xuqg6f4Ids4z4X/yy/5pv8u2Cm2v8+OivgH8Tcd2XsWhogdsfOf48UHQW2Z9zdDd nYWlQtX5uOjo402nlVIq4pI4KVZPLT4ifGe690nf50vzd6g/mA/8Jpfln3/1FVtSCpyPx02r2R19 kqlJN3dO9sbd+W/X8G+OrN70hSGWDIYuocANLTxfcU7wVcaCGoj9+690ZL/hRhQQ7u6q/ladR7tp 3qele6v5wfwg6270pGrqmixeZ69zFVmpq7b24fDLHHJQ1BiM7rUq8Sy08MnplSJh7r3Wx0AFAVQF CgBVAAAAFgAB+Pfuvdcvfuvde9+691qSfzsfhx3Xtn5b9Q5v4e9xQdGYX+cru/ZH8vb5uYT7OtyW PztBjsXkN50Pb+IwRqYqVstJs/GZ/beTZHp3ko2NOnkkytbPH7r3W0B0R0f1p8aumesugem9t0u0 eruotmYPYmydv0gUiiwmAolo4JayoAVqisqGVqmurJby1NTJLUTM0sjsfde6Fv37r3SfwO1drbUG a/uxtvAbbG4s9kd1bh/gOHx2HGd3Pl9H8W3Jmf4fHH91X1Pjj+4rJ9UsmldbnSLe691rkbr7CpP5 138xXpTZHRs9bnf5d38rH5Abe7/7a+QeKSgbYvyF+bfXtNUp1j1B1LnqmGX+MYvaD1TZHOZLHs1H UJPIC6LLgq2u917rZX9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3XvfuvdBX3P3j058c+vcz213z2fsbp7rHb8+Kps7v7sbcuK2jtLEVOcykWEw0GQzuZkip4nqqy eGmgV3BeR1Rbkge/de6Ll03/ADL/AOXv8iOxcF1H0R80vjR2/wBobnjysu3ev+uu4dk7t3dmosDh 6jcOakxuCw1XLUSrS0NLU1c5RCEijd2sqk+/de6PD7917pOYHaO1NqyZyXa+19vbbl3Nm63c25JM Dhcbh5NwbkybBsjuDNvjoozV11QQDPVzl5XIGpz7917rXZ+TO7ct/OE+eXTXw56QpKbLfBb4D/IH Z3yF+bvf0VXW1G2ey+9epz/GOqvit1tV4p/scqlPkJzNvAVEjpEEZ0FPUY+j/ifuvdbJPv3XutMb +aL01/M2647w6w+Yf8yvMdbfN3+U38bO8sd2xur42fGaKl6uzPWdANwUuK2R2v2lsXe9Arbzp9rv VrLPSPuSpSaNapZTicfXV00fuvdbhmw987S7O2PszsrYGcot0bE7E2pt3fOytzY0yNjtxbR3biIc /tzO49plRzBV0dRDURF0U6XFwDx7917rWL/npfFf+cv3li+yMn1b2J1n3F/LqwlXtHdnZXwe6iao 6j+UHcnVW0pcZluzNjydp57E5imyU1bBTZmWKkpqqJZY5IIIsNlK6OnRvde6tw6cxXwk/mmfyvdk 7M2Psh6n4Wd99F47rjA9bZLCx7ezXXWA2QV2hQbQXE5BauLH5rZOWwyQUM8ZqYIa3HQ1VLLUwCGa T3Xuqp9j/JL5b/yKN6bC+OXzmrKj5Hfyu83uDbfWvxq+cOFxdS/Z3xwx1fGuG2x1H8ltvY5GSoxm ISCP7TLQoCKBpJaWepSk/gmM917pQf8ACp3dFVkv5avT2ysbuUUXVPyE+bvxc6y7e3DiawSY6q6c zkmX3rNWNmKR/FHRtkMRh6pasyiNtCLqIkB9+691sqYPC4jbWFw+3MBjaPDYHb+Lx+EwmIx0CUuP xWIxVIlBjcdRUsQCxwwQxpFFGosqqAOB7917oE+oPlZ8bO/929obB6U7w6z7P3z0nnP7tdvbM2du zFZndHWm4BkKvEnD71wNNIarHVAqqCtpzHUxIRLBKh9SED3XuqGv5bOLwvXP/Cg3+e51v1glNH1x ujbfw+7g33Q4zFSR0GG7s3d16NxbgWXLRARPU5Oqzmcy1QpJLTzTqLSU9Rf3XuiZdofAN/5kHzU/ n09+9aQjHfJ74z9wfCrC/ALuGhyOfpM/118jfin8fqXeO6Ns4w1VXj8ctNmcvNR4mq+4kenjepFb JEzU8E0vuvdbFnwo/mB9YfKf+XzsD54biyON6+2qvVW49396QV0jrQdT7t6mp6vH96YbIAPNMtLh cli8oYHe8k1GkM4X91Qfde61Ou9+r9wdp/CPt3/hRJ3fsetpO9898+vhj8oPi/t7NUZp929N/Cro /wCQ2I6m6q2JjGmTEz0su5sTmKvMZymWreiylsfkY9M8olT3Xut8oEMAykMGAKsCCCCLggj8e/de 65e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917oDvkl/zJHf3/UBjf8A3e0vv3Xuhx9+691//9De H6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3XvfuvdBD3zguxdx9R70xnUufrtvdirj6TK7XloKzFYuTP1m38rT5+o2BVZ7L0lcuKpNz09N NtyuzVLB99jqaulrsdLT19PTVEXuvdanXwW+KXUHzZ7G7fT5kbvyvc+79o5iaSo61zk02I25vmWP ZY603jv3cm2s5UfxsZqTH1W28rBlazHUm88dhMrtel3NujOZKetjhx/98ed+bOUYLWLYQIobgENP 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 fZI+B+30B6KJvYDnyIVRrWTFe2Zh+XfGuT+z1I6BmpyFPQb67B6wyceQw3Y3VGRwWJ7I2PnsPl9v 7n2bkNz4GPc+3qfNYnNQQSJ93QSpUQsgZbXUkOrKJB5T555d50SZthmMhgK6wyMhGquk0YDBoaH5 H06AHNXI/MXJrwrv0IjE4bQVdXB001CqniKio+Y9epnsXdBDr3v3XukJmdy53qne2zO69n4/I1m5 NsZnbuPnTbtJiaveFRTjNMuBG0kzYngqM3TT19cNm0TUM0MW7KrAZ6pU/wAAh047+/3KP1+0x802 q/qWnZL84mOCasANLGhwzMWRRQV6yH9gubP3fusnK1236d33xfKVRkCiknUoqMqqhXY1NOt7P4qd 94f5M9Bdb9yYmfDzS7r29Ry51dvPmJNuLuKmiEOWq9p1O4aair6rAV7gZPbOUqqKA5PDVNBk44xB WRE4fdZf9GH9+691737r3Xvfuvde9+691737r3XvfuvdNGbxUWaxk9A5jjkMlLWUVRJAtStDlcZW R5PD5IUzkLI1LVww1Cox0syANwT7917rJiMh/FMdT1jQ/bTN5Yaul8nmNFkaOdqPJUJnCqJPBURy ReVRpfTqW6kE+6905+/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xutfj+fzS1NV/wz D9vTVFR9v/Pn/l8VVR4IZJvBTQ/3s81TMYwdMa3Gp2sBfk+/de6uO+VH/ZMPyO/8QN2//wC++yPv 3XutVf8AlF/8KG/5Qnxh/lq/Dn4/95/K+p2N251R07itpb92mehPkpub+B52iyVVJNSLntnbPyGM qgUdHWWjrZUIYDUGDKPde62Ivgx/ND+DX8yiDsuo+F3dcncUPT8u04Ow3k617a68/gEu+EyMm11C 9p4HCGr+5GJrzeiEwj8X7ujXHr917ohv/Ccz/shjuD/xf/5w/wDv7qz37r3Qn/zb/wCWzvn5V7ew Pye+G+716N/mOfHnbO5KPo/tvDw4Chn7D2dmaaQbm6D7Gq81BJS12HysUlSmOiyuqkpamomWRoKW urpPfuvdEr/ldfIWD+WZ/wAJsOtO5+9ttZPbe6vjTtD5PYLMdZ7kocpjNxz9z4j5ab42Pt/qjK4u CGWtpa2p3M1Ph6xRTs9LeWWRQkMhHuvdGx/k+fy5Nu9R/DTbu/Pl31VsLsj5hfKrdu6vld8nN19l bA2tuHdw7M7qrhuRNr5GTO4immo5cRjGoKPIY9II4osmMhIi3mZm917oTv5nv8rTqD5e/CfubqTp rq7rDqvv6jxdB2P8d+yNlbH2js3cu0u8es8hHvDryag3PiKelmoo8hV0v8GrakS/tUtZPIAWVffu vdE47D+Zk/z6/wCE33y37wy+PnxPb4+EfyK6x792TNR09Bmto9/9e9dV22+xMLkNu0Us5xzV1Uke aoMdJI00VDX0iyfuEj37r3Vrn8sb/t2x/L1/8Ud+Jv8A74XAe/de61kf+FK/8nztSq6h+SnzL+A2 Z3Ls3Edu4Pb2b/mLfGTZtW9BsD5AYXq7dFP2Ftn5ASbMpEFK+49vV9KchnK7QJZYPPXiSJ5MxJkP de62Qf5m3wQwH8xr4V9hfGuuzUGz951qbe31012K9MlRN1v3LsWqXM7H3XTs8U7RRs4mxlfNDC86 UNZVGnAn8bD3Xuqx/j5/Pa278aaHBfGL+dPtXfvws+WOx6HFbbr+290ddbpznxu+SMVLUw7fj7S6 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 o6llBIRyrkKRD9jfoD9Rq2kgyFHWY+p8/wBrX0lTQ1Qp6ysx9Q1NWQNT1CwV+OkiqIWKMwWWCVJE PqRlYAhNeWkF/aSWVyKxyqVahoaMKGhGQRxBGQaEZHSqzu5rC8jvbc0kiYMtRUVU1yDgg8CDgioO D1bH/Ix+WEGy+xdyfDvdUlNDLuCpyuZxBx2MpqHH0u8qenbLU7/w3bOPqaekWvx8dVGVyOfMGCwH +jLbkETZDISqecnOHL0/K/MVzs04A8JjppgFDlSBrdgpGU1nWU0sQNXXRflDmCDmjl623mAk+Io1 V4hhhgToRSwOH0DQH1KCdPW1L7DXQl697917r3v3Xuve/de697917r3v3Xuve/de6S/OJ3MxaXTQ 7qRFiiPgVItyYqkYy6XdzNI9bjolIjRBFEtA7E+Sf1e690qPfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3XB0R9OtVbSwddShtLryGW/0I/B9+691yIBFjyDwQfz7917rB9pS/wDKtT/9 SY/+Ke/de65xxRRX8UUcRa2rQipe30vpHNr+/de65KqoLIqqL3soAFybngfk+/de65+/de6xtHG6 6HRHUm5VlDKSDe9jx9ffuvdZPfuvde9+691jEcYDqI0CyFjIAos5ceouPyT+b+/de65ABQFUBQoA VQAAABYAAfj37r3XL37r3XvfuvdMG5dq7Y3nianb+8NuYHdeBrLCrwm5MRj87iKrSCB9zjMpHLC9 rm2pD9ffuvdNGy+teuut6arouvOv9lbCo6+f7qupNl7VwW16atqfGsX3FXBg4IEkk0Ii63BNlAvY D37r3S29+691xZVa1wDpOoEgelrW1D+hsTz7917rl7917r3v3Xuo/wBpS/8AKtT/APUmP/inv3Xu vClpgQVp4FZSCrLDGGBBvcED37r3Uj37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691HNLTEktTwMzElmaGMsSTe5JHv3XuvfaUv/ACrU /wD1Jj/4p7917r1TTU9ZT1FJV08NXSVUMlPU0tTFHPT1FPMhjmgnhlBV0dSVZWBBBsRb37r3SQ2V 1p1x1tT1tJ131/snYNLkpkqMjTbL2pgtrU9fURJ44562HBwQLK6r6VZwSBwDb37r3S39+690gdv9 V9YbTz2T3VtXrjYe2t0ZoynMbk2/tDb+Gz2WM0hlmOTzGOp46ifW5LN5ZGueTz7917pfe/de6Q+C 6z642vuHLbt2z19sjbu6s+rJnty4LamBxO4M2ryCZ1y2Zx9PHU1ILqrkTSNcgH6j37r3S49+690z 57b+B3Via3A7mwmI3FgslBJS5LC57G0WXxOQppUMctPW43IJJDKjKSrJIhBBII9+690ybN666+66 o6jH9fbE2bsWgq5fPVUOzdsYTbFHUzgW81RTYSCBHf8AGplJ9+690Cfxw+Gnxs+IlX27UfHHrZeq 6PvPsTI9s9kbbwm7d912xsh2JmJJZMzujbXX2eylXg9uzVnlEdXHtzH0MU8cNLFLG8dHSJD7r3Rn EREUIiqii9lRQqi55sBx9ffuvdc/8fz7917riQGBVgGDAhlIBBBFiCD+PfuvdeACgKoChQAqgAAA CwAA/Hv3XuuXv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6A75Jf8yR39/1AY3/AN3tL7917ocf fuvdf//S3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3XvfuvdV1/wA034P7C+f3w6390lvbY9Fv+vw9XjezuvsHURw/xCffOyo5 pKfH7drKqux1PR5PK42oyeCoa+rqhTUstctRUxzwRSQSe690Rn+UL3q/Y3xsoess1LiItx9Oy/3a ocZgsXWYnB4vayKsmN27gaaRpaSDH0CyRVm2cVQVNQaLZeT2ZPVuk+SCe8EPfjlldl5yk3G1j0Q3 oEhyv9oR3MFT4FchtOujO8cxAKqGI92G68eyETmrJjz4eXHiRitMAFfPHVsPuF+jnr3v3Xuve/de 697917r3v3Xuve/de697917quH5odFd/0fZPVXzP+EVR1XF8vup6Sbrat2531ujd1D1P3H8cc/8A fZve/Sgo8V9zT4bO5LOfwTJYvc1HSwVUU9DDT1dTLjTNRzTT7Oe5B5LvJtv3FHfb56u/hRh3SXsA kYijeGEVgVFcmoWtT0T71tn1yh4yBIuBU0BGcelanpLZ/wCTneG46Hrv5p/M/wCLGY+JexPh9iu7 chsXpPOdk7a7W3n8ifmfviml+P8A07jeiqTZMAyGThqsPW7xwe3PucLTVuZm3PQT42mkpI5Jpc4t uvbfc7CDcrM64biNJUNCKo6hlNDkVUg0OR0BJI2ikaJ+Kkg/aDQ9WjfDjpzPdD/GnqfrrelTS5Hs 6PA1W9O6s3RiFabc/fnaOaquzu+d2w+AuujK7wzGayCfuSELMoMkhGtlnVOnn5VdHda/JT449z9G 9vz09B112P1/uDB7kztRNSUx2ikdKcljN90NbkSIKaswFbBTZqhq5SFgqKWKYkBPfuvdVE/8J6fl ptPuX4e1fxfj3Ns/P9gfB3MRdO1lZsnJ0eU2xurqeWrrU6l35tLIUJMdZh5I6HJ4ChyQYtkExIyj LGmQiT37r3VgW9sPWdS/Jv7+npgOu/lDRPLO1LQwQx4T5C9c7XCzS1bYvGB5TuvZmOUmqyWT0QPt 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 vpzon387KOfM9WfA3r+Ncw1L2j/Nv/l1bNy4w1UlNMmDpO8Id8ZiqqBKGjkjp6fDPUKskbqsscch RjGPfuvdXP8Av3Xutb/5F9R9C4f/AIUIdGZz5S9fUO+Nh/Mb4Rxdc/Hubexrsl1avyf+L/ZmW7Fy W1tzbNqpv4Bk699sZuLKbcqM5R1EtLkIbY1Uq5lkT3Xuu/56u1umNkVPVPa1XvjYmx+yOxcbnep8 jtfJ7uxW2s5vyr652PuXuP437oiwEMqZWvTD7poMhsGtrcfTymh27vvckk6NTK3jEfKG5bjtPMln ebYaSrKtKlgpFRUPpIOimWrVaCrAio6DnN222G7cuXlluYrE0T1oFLAgGhTUCNdcLShqe0g0PVIJ ABIBDAEqGAazBT+oFgDY/wCIB99I438RFkAI1AGhFCKitCDkH1HkeucDx+HKyEg6SRUGoNDSoIwR 6HzHXH3fpvpAZnNTdbdhdad0YybI0GS2Xuvbhly+HxmNzedx1PSZpMpjJ9vYvNpWx1WThrlirdsY aixcsuS3jTbRepdabG3XHj395TS/2mPma2X9S27ZD5aDkE1dUUfhLFXkdhBEgFT1kP7Cc2fQbrJy 1ct+nc90frrHECiM7fxBQyRopmlcmg630vjt3ThPkL0xsLtzAvjTDuvEt/FKfDVmQyeGx+58NWS4 LduMwuXylHj5shQU+SpqqLH5T7KGOvpRDWwL4KiInD3rL/obPfuvde9+691737r3Xvfuvde9+691 737r3TXmKB8njqmjhn+1qW8U9DVETOlJkqKda3G1csMMkRlSKeOOSSAyBZVBje6MwPuvdc8TkFyu Opa4RiCSVGSqpPPBUtQ19PIabI42eelZo2lpp0kp5dDEB0Yfj37r3Tj7917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xukd/pE6/8A+e62d/6E2E/6/wDv3XulcjpIiyRusiOoKujBkYEXDKy8EH+o 9+691z9+690WDeXzb+GXXW/W6r7B+XPxh2J2eldQ4x+uN5d+dU7X36uSykqwYzHNs/N5aDICepd1 SCI0+qRiAgJI9+690Zemqaesp6erpKiGrpKqGOopqqmljnp6inmQSQzwTREq6OpDKykgg3Bt7917 rBkcljsRSSV+WyFFjKGFoxLW5CqgoqSIyuIoxJUVLKilmIVbnkkAcn37r3TPQb02flKqKgxm7Ns5 GuqCwp6Khz2LrKuYohldYqenlZ2IVWY6QbAE/Qe/de6U/v3XuoGOyWOy9JHX4nIUWToZmkEVbj6q CtpJTE5ikEdRTMyMVYFWseCCDyPfuvderMljscaRchkKKhavq4cfQrWVUFKa2vqDaCipBOy+SZ7H RGl2P4B9+6916syWOxxpFyGQoqFq+rhx9CtZVQUpra+oNoKKkE7L5JnsdEaXY/gH37r3U/37r3Xv fuvdcNa6/FqXXo16NXr0X06tP1tfi/v3Xuufv3Xukd/pE6//AOe62d/6E2E/6/8Av3XunGh3VtfJ 09fV43cmByFJiofuMpU0OYx9XT42nKPKKivmgkZYU0xyNqkIFlY3spt7r3TvS1VPW08FZRVEFZSV UST01VSzR1FNUQSrrjmgniJV0YEFWUkEcj37r3SQ7C7L646j2rkd99r7/wBk9Y7Iw6h8tvLsPdeB 2XtXFoVZw+R3DuSempIBZWN5Zl4BP4Pv3XukT0/8lfjl8hYMnU9A9/8ASfeNPhZvBmajp/tXYnZk OJnCRymHJybMr61YHCzQtplKmzobWZb+690N3v3XuuCOj6tDK2lijaWDaXXgq1voR+R7917rn791 7qFR5HH5H7r+H11HXfY1k+Orfs6qCp+zyFMR9zQ1XgZvHNHqXXE9mW4uBf37r3U337r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690iuweyeu+pdqZTfnau/tl9 Z7GwkYmzW8+wt04PZm1MRCfpLlNxbjnpqOnU2NmlmUe/de6TfUffXRvyAwlZubofufqfuzbePqxQ ZDcHUfYuz+yMJQ1xDEUVZldnVlbBFN6W/beQNweOD7917oWffuvdMO4tz7a2hQU+V3ZuLBbYxdZn dsbXpMjuLLUGFx9VuXe25KTZmzNu09ZkpIo3rsvmK+hxWLpFYy1VZUwUsCSTzRo3uvdSsrmcPg6d KvN5bGYelkmSnSpyldS4+nkqGRpUgSardFLlUdgoNyFJtYH37r3Tdj957Qy1VHQ4rdW28nWyhjFR 4/OYysqpFQanKU9PKzmw5Nh7917pRkhQWYhQoJZiQAABckk/j37r3SQ/0idf/wDPdbO/9CbCf9f/ AH7r3Ttidx7ezxnXBZ3C5lqURmpXE5ShyLQCYsITOKOR9AbS2nVa9jb6H37r3TVL2BsOGSSKbe20 YpYnaOWKTcmGSSKRG0tG8bTAhgQQQRcH37r3SnpaqnraeCsoqiCspKqJJ6aqpZo6imqIJV1xzQTx Eq6MCCrKSCOR7917pEdmdsdWdK7SrN+9ydl7A6m2LjpqamyG9OzN5bc2HtOhqKyTxUkFZuPdNTSU cTyt6Y1eYFjwoJ9+691n667N637g2njN/dS9hbH7R2JmvMcNvXrrdmA3vtLLCnkMM5xm49tVFVRz 6HBR/FM1iCDY+/de6XPv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6A75J f8yR39/1AY3/AN3tL7917ocffuvdf//T3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 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 i+SPfeGxVS+5O+et+wqBt5dBdh4LL5tfu6TbJxCS7STFUKUmPjzO2suIKGARqPeMm57lfbxuEu67 jIZZ52LOx8z/AJgKADyAA6yZ2zbLLZ7CLbNuQRwQqFRR5D/OTUk+ZNeruZJEiR5JHVERWd3dgqIi i7MzHgADkk+0PS7rSa/ns/zz/hlg/mX/AC0Oidib8wXcu1fin88up/lZ8pt+dcV8O6tt9fU/X8Ff sah2lgczgpHgzOao6DcWdyuUoaOoKU0tJSUUzvUzVENL7r3W5t192JsLtrZO2eyusN5bZ7C6+3pi abO7S3rs3NY/cW2dx4erBNPkcPmsVJLBPExBXVG5swKmzAge690WD52/Bvqr589KwdUdi5XdOxty 7Q3ltztfpDurrrIDCdp9C917Inas2R2r11nLHwV9DI8kckbDRPTyyxEozJLH7r3Wop8g/gr3l8N+ xafcPylmyvb+5crX4rb22/mbm9efxnbuay9J/d7HU2e3bk2qMxj911KmaOLF7vrqmsT+I1uL27lM niEljgyl9k7z27j8MFBHuyqKvLlQXpGRG5ACFyq4JYAyqsbhpWhXFz3rsvcGTxCHMm0s2EiwxCVk BkQFi4QM2VVSREzSIViWUh77yk6xc697917pvyuNp8zja/FVUlXFT5KkqKOWbH1tXjMhAlRGY/uM fk6B46imqI764KiCRJInCvGyuoISbhZQblZS2NzXRKpUkYYV4Mp/C6mjIwyrAMMjpZYXs+33sV9b U1xMGAOVNOKsPxKwqrKcMpKnB6sr/wCE33Y28ej873X8Qe1uzspv9t37so979fT1mGweAwm3cpgu vqPbFNs/bO3NsU0sWKjqdvbaarXEtlJKbHYuhwM6RUM24Y8fHzi5q2CblffrnY5yS0DU1FSoYEA6 lBJJQ17GJqy0YhSSo6M8q79DzNsFtvkAAWda6QwYqQSNLEAAOKd6gUVqqCwAY7cnsPdCHr3v3Xuv e/de697917r3v3Xuve/de697917pNCUYvP8A20juKTcavUUhkZzHFm8fTqKujjknnIBqaRFqIaan gVQaarmdi0h9+690pffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdR6v/AIC1P/UPN/1rPv3XutF7 /hPp/Iv/AJWXzn/ledM/JL5UfF6TtXuvee9O6cfube0vePyO2dLlaXa/auV29g0kwXX+78Ti42ho 6eGIyQ0SPIV1ys8jM5917o5fxH6so/5Sf8+XY/8ALg+KHYHZO6PhX8wfilvLvfOfG3dG6852JjPi p2HsqTKjEb8w+YzjVVZj8VmYtvfwaJ6urMtVPXxRVr1JpcW6e690Ov8AMO7d+TX8xz+YR/wzJ8Ru 3N4fHDpzrLrLDdvfzIfkt129Rj+y8bs7dhoshszoPrLcJSOPH1uepKqkNTUQVTvURVNUk8ElBjMj R5L3XujX9cf8Jzv5NfXHXkvXn+yTbB7AWvoftc9vntLM7x3z2bnayTQ1Zm5N85PICsx1XUSJ5XOD NDEhZ1giiRih917qq75PdH9of8JsdybD+YXwx392tvz+Vhmey9r7H+WHwi3/AL0y3YWO6Kx+/s7H hsf2h0Jmd61qvRxy1E0NEwrsglQMi1CtbW19FVyx0XuvdHH/AOFTGaxO5f5FXyK3HgMhSZfB5/O/ GTNYXLUMy1FDk8Tle+NsV2OyNHOnpeKaGRJI3HBVgR9ffuvdLHOf8JZ/5IGQw2Vx+3/iTuPYGars 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 m+jfgn8oe0O8PihuzenTfS/buyKbFbu+Hm3HppujD2NTZj76Ps7C02XNTU46WOnMkNNjqHwpA09Q IplopFoI/de6tS9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3QHfJL/mSO /v8AqAxv/u9pffuvdDj7917r/9TeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3RE/wCY18aKT5QfFvfe0oKTcE28 tpUsvYPX0+zoWqt60+6tr0klZStsagkyeIpKjcSLqqtpDK1y0FLuKDD5OpSQY9F9+691r8/8J4fk ZX9L9zdt/wAv3eWR2+NjdkUVb8gvjg+269KvY+J3fjteA7r6p66rrtHLg51xkme2NS07s9Xt3Gvu mdpF3HDK/uvdbN/yz7FzHUHxW+THbW3sJk9y7g6u+P3c3YuC25hkL5fP5jZPXOS3LjMJilDITU1c 9MkEA1rd2XkfX37r3VHnSmzOkvjL/MY3P8kvmP2VhMPsrb/xX+MnT38uPuPe+35Mb8d9t9Zbl6+W j7pXD/ImsoItuw7ry2eowtPT5rJ0OR/hWQkFDFNRZadIwnyjypbcp7fLaxOJZbiaWeWQLo1vI7MO 3U4GhSEBrkKCfTpZe3bXkgcigVQoFa0AFONBxOfz6Xn8xrdnXOH/AJl/8nav6k2n0RlvkJ3fuz5F x1XbGf2pityZpfjBsXp2LcfaE+G3TgaijrFq5sdNJSbYyM9fLSU7VFbalqoZaqFg57x21pce3e4/ WFwqKhUIaFpTIqwq2DqUyslV4mmCDnpRszOu5R6KZrWvkKEn86A9HDyWyvkZ8supux871h2Pk/jD tfP7W3ZR/HncFBhcBmt89mTZPZUkOx+2t5VGYjqW29tasydUtVRYLGwU24J6Kmpq+TMYiaskxdNF vtr7GbYLSLeeb08d5FDrDVgqEOaq60AkGlR3VaOQOdA0ossptue/S6zBZnSBgtjOOI9PswRTOSQB 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 KdqRhhJ5VpIqqOlx9IKeT3XujrfBf+aB0b81snuXqatwW8vjd8wusIvH3V8NO+aBdpd2bAqYFVav NYOiqRHDufbUrMkuP3JhPJTzU8tNLUR0j1CQ+/de6ff5mPyT2X8evjHuygzm1tpdl7z7josl1h15 1TvPHYrP7Z3XkM5Qmnz+f3ttnLEQ1m2tv0Mj5TOQylFqlWDFxSLX5KhSQUcm8sX/ADZvkO2WQYam GqRRiPBIYkkAfCTUVYKGZUcrpIW5w5msOVNjm3O+KnSp0xscyZAKqADX4gKGiklVZ0Dahp+4nHfw jFYzFGvyOWONoKSgOUzE1PUZbJGkp1gNfk5aOKCFqiYr5JmhgjQuTojRbKOim3WS7bYQ2EbtIIUV NTmrNpFKk+p40FFHBQFAA54bjePuF/NfOixmZ2fSgoq1NaAeg4VNWPFiWJJcPa3pD1737r3QcZvc G7eod/bK772DmXwWa69yuOztdWQ45sk8C7eylLuSDJCjgp55p4oXoKbKVGGoozVblyeH21gWb7V3 Q4zfeC5ONzbxc4WKd8VI56DJX8Dmin4cqzMwAXSB1kx7Ac4/T3EvKF8/bLWSCpwG/GgqwHdhlVVJ Laiet+P4/wDcWF+QHTPXfcGBhioqbe+3YK/I4aLJQZc7Y3RRTSYfemzanKUqrFUVGFy9NXYmpmiU I01O5T0ke8T+sruhj9+691737r3Xvfuvde9+691737r3XvfuvdNGaoJshQSJSSpBkYHircXUSPOs UGSpHE9J9yaVklankYeKqjR1MsDyRE6XPv3Xus2MyMOVoKavgV41nQ+SnmaB6miqonMFZj6wUryR rUU0yvBURrI2iRGS9x7917px9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdR6v/gLU/wDUPN/1rPv3XutE /wDkN/ynfkT8iv5Wnxw7v67/AJt/zr+LG1uwsj3TWUnSHSG4aHFddbRqNtd77l2LWVGHppqhWMmS kxTZOrcot5qhxYgaj7r3WzR8Av5R3x3+AXYHbPeeB353t8jfk53lS0WL7O+TXyj7Bi7P7jze3aKO i0bSpNwQ0VCtPjHmx9HUywtFJK7xQo05p6algg917qub+VpmsT19/PZ/n59Mb7Wlou4Ox8/8VO8t jS1OU+9yW6elsdsOupCcfDPZkpsM25MFDKIyQGrEhYKtPEW917rZp9+691Rj/wAKR9+7K2P/ACZf mZR7zahnn7E25sXrDY2Gq3pRUZ3sTd/ZmHh2tTYyKrIV56J4pMwxBvHDRyzgjxXHuvdEP/nd9Tbm 6k/4TE7O6K7Cgiod5dZdQ/y6Opd702OqBUQUe59mb12Fs/csFBVyoNaR1VNOsUjRjUACVF7e/de6 MQ38hz5Cbkhq9v8AZ/8APP8A5rW8dhZqknxm6NrYbtvH7Pq8/iKtPFW4mTPItcYoKiMtDUoKZvJE zxn0sffuvdW/fCn4Q/Hj+X58dNp/GD4y7QfaPW+1vva2pqchVJlt2bz3Vl40XcG/N9Z8xxHIZjIG OPzz+OOKOKOGlpYaejp6emi917qp3/hLTjv4R/Jg+O+J0zp/C+x/k7jtFUumqT7L5HbnptNQulbS DTZxpHN+B9Pfuvdc/wCfNMlP2X/I6lkErKP52XxCW0MMtQ95KfNRqfHCrNYEgs1rKLsxCgke691l /nwf8zQ/kcf+NsPiN/7iZv37r3Wwl7917qjb+f8AfMLf3xt+DuS6c+PVBX7p+Xvzgz/+yt/HDYu2 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 691737r3XvfuvdAd8kv+ZI7+/wCoDG/+72l9+690OPv3Xuv/1d4fr/8A5nH3/wD9R/Wn/vDR+/de 6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691oafzpej/kr8I/5kXWvyn+O9PgMb1vgA/ya66qqr+9Nfm5+ydsyV2U7m2pNUw1NYyYhcDicNgs tSRUdJSf3dh2btDDg1VRLFP7r3W6x8bO+th/Kr4+9Q/IfrqVqnY/c/Xu3d9YilrNDV+Kjz2OWoyW 187T2HiyOLqvPjMpSuoeGqgmhkVXRlHuvdFci+EnYnS2OrcT8M/kRXdWddlsk2P+LHdewMD3v8V8 VQZWWSrym2dl4lJcDvnbGOqHlmipcZjd7y4TGRSeOiwIpoo6T37r3RUsf/Lt7L3pFu7rbKfFD+XB 8Oer+2KvE4n5H9gfFnI7u7J7X+QXU0Ocly29+n8dtjM9a9cUGxsfu6KoyVDm6r+O7lKUuUyawU5r 6gZNfde6u+hhip4ooIIo4III0hhhhRY4YoY1CRRRRIAFVQAFUCwHA9+691Qj8mP5gXxd/lFfMTs6 l7g3/HJ1x8zdpw91YTpvrmCHfHbe3/lls2PFde7ix+L60xMv3dHQ9pbebCVuMrK1aPFrmdvZuoq6 1arMqX917qvL5Y79/mufLWvwnzq2Z1/lv5Svxm6z2bVda7+7j3Z9tm/l9lviv2p2Ttis7M35unq3 MR0yYui2hBjzuqWlqkw+UwtPTZWqw2cySVslPV+691Zbtb+RJ8Xunuluwqvput3RvP5t5yowXamy vnD8h9zV/a/clL8iOvc1R78613/W5qs0w0dDJmsbQ024abC01NNlsO9VjsjUVkdRKz+691ax8Y+8 ab5HdEdd9wLgKrZ2Z3Niqmh31sHI1MFXmOtO0dp5Wo2d2v1dnKimJjav21uSgymCrWT0malcr6SD 7917oh/zz+YtX1p2Pt7p2h7yz3xj2TTYjBVPY3dmyuqsX273LvDtPsrKy4noT4n/ABS2RuzC7kw2 a7A3LDjdwZ7JQSbYz0+Nx1JjQ2I05+nyNEkS/sWvDtyzRm4VdRiDr4gXt7ildQXuXNKdy+o6v4cg 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 P2QXl6i/X3Qq7AEFY6lkTu7gaULiiZCqU1IWbBf3b59fm/ezZ2Lt9BamiKSCGkppd+3tIrUIavgs wfS4VY3uW+oi697917r3v3XuoWRojX0NTRirrsdLUREU2UxjQQ5XE1i+uiy+HqKmOZIaykmCVNJO Ym8UyJIFJUey3eNrtd72ufabwVjuEKHANK8GoQQSpowqCKgVBHRns+53OybpBu1maSW7hxkitOK1 BBAYVU0INCaHq5/+Rf8ALutpM7uT4fdjTUuGqYqfGt1Xj5qiSlpFl23turocRtXaUW4K/wC+lxp2 1trJYjbOJx2HhiosFsiPPZaokyG7oGm5xcxbFdcubzPtF6pVoXYCtaMoJAYEquoYpqChSQaY66L8 u75acx7NBu9mwZZkBNKVViASpAZtJzXSWLAEVz1s2+yXo8697917r3v3Xuve/de697917r3v3Xuv e/de6TFKv8JztVR+paDcDSZSh1O3hp8xCirl6GEMVjjFRGErooYlLySivnc/n37r3Sn9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf 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 u4eDI0fZVBvGjqabFf3kw7rUQfe7dRaxqtBZaOYgL7917oeP5r3wZ3/3D0x/Lt6l+HXSu0qTavxv /ma/EXvncmxNkN151btDrno3qmo3DXb1zuDwNdUYmg8NG9dBoxeJieplea8NO4EjL7r3V2/v3Xuk zvOgq8ts/deKx8P3FfkttZ3H0UHkii81XWYuWnpoTLOyoup3UanYKL3JA59+691qWfy0d8/z2P5c fwi6N+F0P8ipe54ukKXfmPTs5f5lnxO6/Tda7x7QzfYoqU2fLDl3olg/jH2iq+QlaQRCUiMyGJPd e6vs+C/yN+eXfc/YifNP+XP/ALIZDtuLbr7Bn/2bPqT5NnseXIvVDPReLq+ipDif4cIqY6qvUJ/P ZLeNr+690B38mD4s91fFn4ldn9VfIvr+PZO6t0fLr5XdkUW26rP7O3dBk+vezez6rPbSy09VtCuy VEI8hQSrI1JNMJ4w2iohje6+/de6Bj4efDv5V/y0/nL2F1L0Js+Xtv8AlPfJutzfauEw53TsbDbr +Bfd1UFOc23gsRuDIUNdndj50oop6fG0tVVUVqbUplpa2qzHuvdNvbOT/mv/AAC+Wfe/b3WHWnYP 80z4RfJLKUO/aDp2m7K2hs7v/wCGnYVIKfC5PaXVtDugQ0Oc2RkKTRNR4ykjSWCSDXO1PUpV12f9 17pK/Fv4/wDzm+b/APMl64/mdfN3pZfhr1b8VOsOwOtfhj8VqreO3d89pZLLdzbc/gHaPbvdGe27 qgpXqqKeWggwmmB4Wp6QrEVgkrsr7r3WxD7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3XugO+SX/Mkd/f8AUBjf/d7S+/de6HH37r3X/9beH6//AOZx9/8A/Uf1p/7w0fv3Xuhx 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd V0fzPPikflP8ZszSbe89D2r1VkKbs/rHO4vDxZzcFDlduSJX5SkwOLamqWra/wAMK5PAUDIYW3BQ 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 697917r3v3Xuve/de697917r3v3XumTP4+pyGPcUDxQ5ajliyOHnmcxQpk6JvLTw1M8cckiU9QNV LWeJdbU0syKQWv7917qbj66HJUVLXwrNHHVQrKIqmJ6eqpmYfuU1XTSeqKaJrxzROAyOGVgCCPfu vdTvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3QHfJL/mSO/v+oDG/ +72l9+690OPv3Xuv/9feH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691oo/wA3749dt/y+flNB8qvi yn91N17D3jVfI3oTI0mOhp9v1kkGx62PtTqLLxfw/D4E0tXsrB5jGVcM+QnOM21tHA46Jlye7jJJ 7r3Ri/5ffeP803+dt0idkV/ze2z8e+sOl225138ke2Ontlrs/wCT3b27s1t2Hd0qLT7Vix1Dt41e NrKdJpdt5LASYPJRVOPrcfnRFUwJ7r3Wwx8Of5XXwy+D1Ji63p/q2lznZePhyC1HenaD0e++5a2q zaj+8lXQ7qrKeKDBJlnVZ8rj9rUOLoKqcfcTUjzs0je690P3e3yl6q+PtZtXbm6zvTdvY/YCZibr 3p/qXYO7O1O196Uu31h/j2Wxezdl0tVNS4mgappY8jn8s1JiaOSop46uugeohV/de6DbD/PnojLU 08ku1vlXhMhRLIuUwO4Pgt81cZm8XWU+OmylTj5qV9gMlRIscDiOShknhqC0H2ss4q6QzkW68zcv bG/h71fQWrkBgskqIxUsVDBSQxXUCNQFBQ1ODR+K1uZhWGNmHqASK8aV4V+XRaut6XvDEdufIvNf HzBUvUvQfyJym0+4Tne6du1UW+dm955Pb1FtvtbPdZdK0tUshxu5MZjsXUVUW7KnBy4vdEGSyzYj cdLmpljhXm77wOxbSfp+XU+tmViCT/ZEDUKiRWp3dkiFfEquqORYnoVPLPl24l7rk6AR+fl5ftBr TNCCR0LmzPjrsDbG9ZO2txyZztrvCox4xVR3b2vVUG5+wKXEiorKlcFtP7WmpMTtfFg5CrviNp4v GULmV3kp3leSR8ZebfcfmznJiN3uSIfKGOqRDhxUGrfCD3ls5FOhTabbaWY/RXu/iOT+3y/LodvY J6VdcJI4p4pIJ445oJo3imhlRHilidNEkckb3DKwJBBFiOD7qrMjB0JBBqCMEEcCD5EdbwRQ8egT 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 PwVbvLLyVtRQrisJV4vb0NLhaWTJLs/cm7K0EZuCWbnpzHslxy/vE+2XKlTGzAVqcBiMMUQPpIKM 6qEZlbRVaHroPy7vNtv+zwbpbMGEiqTSgyVByodymoEOEZi6qy66NUdbL3sk6O+ve/de697917r3 v3Xuve/de697917r3v3Xuk3RRnF5qtx6RlcflUlzdBoiIhpsiJVjz1L+xCkUSzPJDWoHkeaeaWtk PpTj3XulJ7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3XuuDuqIzubKis7GxNlUXJt9fp7917rXXl/4VXfyRYZZIn+ Ue7S8TvGxi+PHf08RZG0sY54NuMjrccOjFSOQSOffuvdH9+IP84j+Wl879zS7I+Lfy3667B32ph+ 12FmKPd3WG+cyZqGfJkbY2f2xjcHkcuYqemnnqhi6aoNOiMZ/Hb37r3R7u1+zdn9KdW9ldy9iZKb Edf9SbB3j2bvnLU+PrsrUYvZ2wtu1O6tzZGDF4yOWpqXgoqSeVaenieWQqEjVmIB917qiiL/AIVI fyZJ4o6iD5CdlTQzRpLDNF8X/kjJFLFIuuOSORNrkMrAggg2I5Hv3XurDPgp/NG+GX8yKHtKf4ld ibj3ynTX9zz2ANxdZdjdcS4ld9rlG209LB2BjMc9Wsww2Q1NSrIEMYDkFlB917o0Xx4+Q3Tnyt6Z 2D8gugN9YnsjqTszDDObQ3dhjOlPXUqVElDW0lXR1iR1FJWUdVFNR11FVRRz09RFJDMiSIyj3Xuh G3dunC7G2pufe25ap6Lbuz9vZrdWerI6eoq5KPC7fxsuXytTHSUivLK0cEMjiONGdiLKCSB7917o GupPlZ0L3X8adtfL/ZW/8bB8dd09eV3a9D2VvCCs2Hh8d17iqWeuyu6tyJvCOilxdJSQUs89VJXp EIo0Z30qL+/de6p02/8A8KZv5a+c3phqStx3yq2h0RureEuw9m/NHe3xt3jt34j7x3SsOuDE4PsO pkbLK8zrLEv3m34Ahikkn8UAEx917q4H5NfLXob4i/HLefyx7w3p/A+h9h4zaub3Dvfb2Iy++Ilx G9NzY7aW2sli8bs+Gtqq6GqrMrQqklHDIPHJ5b+NSw917orPzV/m/wDwP/l9Zrrbb/yi7N3Xs7Kd t7Rm31saDb3UXanYSZLbVPVpRSV1XPsTEZBKNvI6hYasxyNyQpANvde6KDs3/hTP/J939unbOzdr 9+9iV2d3duTFbSwkUvxs+Q1FSTZzM5ZMHRUlTkq3bSU8C/dSLFLLPIqR2YyMoUke691atsX5idA9 hfJnuD4eYLd1TS/Ivo/au2N+b2613Dgszt7KVOwd3MkeG33s6qy0MdPncOJZqanq8hiZp4qWonhp qloqhxF7917pefILv7qX4tdNb/7/AO9N4UGw+qessKM5u3c+QjqahKWCatixWNoKGhokkqKutr62 opqDH0VNG81TVTQwQo8kiqfde6VfWfYO3+2Ou9jdobSXMx7W7E2pgN67aG4sFldsZx9v7mxkeYw0 2V25nYoK6gnkppo5HpKyCOeInRLGkgZR7r3S59+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvdVifzAP5u3wv8A5b9btLaPeu692bs7m7Bojldg/HfpPakvZXeW78OtW1AMzj9nU09NDTUkk8cs NNPkq2lWpeKoFL5vtarw+690mPgL/Og+Ev8AMQ3bn+q+q812N1T37tiCWvy/xz+R2xpOpu5lw0cB rUzeLwEtVXUORgelH3jR43JVE8NP+9UQwpz7917q2L37r3Ve/wA7/wCaH8NP5bS9Xt8t+wtx7FHc TbxXYK7d6y7F7Ilyn9whizud6qLr7GZJ6RYP4zjwrVSoJDIQhYq1vde6rwl/4VIfyZIIpKif5Cdl QwwxvLNNL8X/AJIxxRRRrrkkkkfa4CqoBJJNgOT7917q0qq+f/xWw3w0ofn5vDsSp68+LeT2TSdi UO/exdobw2Tk6raeYrPstt19PsfPUMOckkzDNA+HpUx5nrY56eSnjkWaMt7r3VfPxv8A+FC/wL+Q 3b3XvTOX278nvjLm+7GoV+PO6/ld0TlOo+uPkMcpUNFiT1PvdK3JUk61i+F6KTKGhSpM8EEDSVUg gHuvdXp+/de6pS+XX8/3+XX8R+15/j7Nuzs75KfIqiyTYnJdE/EjrPKd178xmQhqDS1+Orq2mmoM CtbRyLLHXYxc01dTyRSRTUySro9+690mfjX/AMKJf5b3yD7ToejN27g7h+IXdOZyq4fbnWnzP6rr +jsxuGqkikkh+zzxqsngqYytE8EEWSy1LNLPpgijeWSNH917q9P37r3QfYTtTr7cXYu/epcJunGZ LsfrDDbI3Dv3aVPI7ZXbOE7JGSOxslkUZQojyX8Hyf2+lif8nfUFGkt7r3Qg+/de6Dfd/bnXWwt5 9Tde7s3Tj8PvXvHc24todV7blFRNk9353aWwMr2fuWGip6ZHMcNDhMLX1dTVz6IEYQwGT7ippopf de6Ej37r3RdPlh8q+kPhL0Fv35OfI7ddTsnprrRdttvDctJgM7uepx397d3UGxsCsGC21T1VdUNP k8nR04WCByNeojSCR7r3VM+P/wCFU/8AJArq2lo3+V25cetTMkIrch8dvkTHRU5c2WSpkp9ryMqX sCwQgfU2AJHuvdXf9BfITpT5S9U7U7v+PXZe1u2eqd60SV+3N57Rr/vMfVrYfcUVZBKsdTRVtOx8 VZjq6CGqppQ0VRDHIrIPde6pY3n/AMKhv5MGwd4br2Juj5L7toNzbJ3LndpbioY/j531Wx0Wd23k 5cNl6SOso9uvDKsdRDIglidkYDUrFSD7917qxX4SfzPfgp/MWx+5Kz4e/ITbPbVbs1KWbde2f4Pu 3ZW9cFTVcMEkeQq9l9g4/FZOSiDVEMD5CnpZKVZ28BmEwKD3Xuj7e/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6A75Jf8yR39 /wBQGN/93tL7917ocffuvdf/0N4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3VX/82n4s0/yV+KG5 63FxxUu/uoEl7E2xnYNuUm481Q4vBVFPuHPjHY+PDZrJ5A42oxuL3lRbcxUEb5zL7fxOLqJBR1E6 t7r3VK3/AAmg+bGyn3B8jP5c43viMxSdb52v7i6HxtFmJ87R4HD7hNJW93dSYnc1RLKuVTbucyVN PHlxUTyZ7Iy7my9OxoIo2X3Xutun37r3VEm8d2bp7Y3L3zv/AK63RnNo9k/Nf5WbQ/ltfHvem18h Ljt27L+MvxQzmfm+VnYuy81TI0uIy0FTQ955LDZymdEeog2syy+daQn3XugG+U/xaP8AJ8m3Z8/f jJ3Z3bkfjzku0sRlflN8J+0+0N1ds4btHdfeu6qPrak7I6e7J7Unzmawu6G3RlcLltwvlaqtSvoa eqVKzGhGWojb3H9v9n512iVrlEjvI0/SuCpLIFJYqdJUstC9FJpqNadGe2bjNYTDSSUJyvka4/I8 M+nV3V72uCCQDY2uP8Da4/2x987iKNQZ6kPrv3fr3Xvfuvde9+691737r3Xvfuvde9+691737r3S U2zv/Yu9q3deO2bvXaW7chsPcU20N8UG2dx4jPVmzN2QUEGTm2xuumxU0r47IpTVNPUNRVaxzCKW Nyml1Jeutvv7JI5LyGSJZl1xl0ZQ68NSFgNS18xUdWWSNyQjA6cGhrQ+h6VftnqvXvfuvde9+691 737r3TXnsFhd04PM7Z3Jicdntu7jxWRwWfweXo4Mhic1hcvRPj8picpQVStFPT1MEkkNRDIpV0Zl YEEj3u3nmtZ0ubdikkbBlYYKspqpB8iCAR1ZlV1IYVBwR8utePoPY38wzpfZfcv8v+l+YfUnw5+G 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 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdR6v8A4C1P/UPN/wBaz7917qgn/hLj /wBuKPgz/wCXM/8AwYfYPv3XuhP/AJpP8lz4zfOnp/dO4utettm9IfNfY2Nqd5fHP5J9W4nHdcdg YLtTbULZbZmP3XuXa60cmSxFVWRx0tQmRaY0aytV0ZhqY0k9+690XnpP5u7q/mC/8JvvkZ8hux6Y UXbzfBH5qda9y04pmonk7M6t6n3PszO5ipoxSUMcFRlY6Wmy9VS09LHDTT1UlNCPHCpPuvdKH+Ur /M5/lv8AXf8ALF+A2wewvn58MNhb62X8T+kNrbw2Xvb5OdL7T3ZtXcmB2HRY3MYLcW28/mqesoqu mnjeKaCohR1Ycj37r3VxfSfyw+LfyjoN3z/Gf5I9D/IWHZCY6LeU3SHbmwe1Ytpy7hhqnwMe5JNj V9cKFq0UVYaQVJQzCCYx6vG9vde60Nv5CnZHyW/lRfBzqD+YZuHdme7f/ljfJ3sDf+B+VvWWJ268 2W+He9NpdjVXUO0PkDt5TkJnr6PMtQ0dNn5aWkplaJIKSeGpq0xMw917re3763btbf3w37q3zsfc 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 jrRJPO0kr1cqxqI6c2917pS+/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de6j1f/AWp/wCoeb/rWffuvdUE/wDCXH/txR8G f/Lmf/gw+wffuvdW8fK35PdSfDP489r/ACY7x3JQ7Y636k2jlN0Zipq6qClqcvVUsBXC7TwMUxH3 OVy9YYMbi6OMGSepmiiRSW9+691rdfy5ent9dTf8JZ/kdluxcXVYDc3e3xD/AJgnyO/u9WUUlBNh 9vdv9f7qz2zjHFLJKzQV+IWhy1JI7amgq4taq2pR7r3Rt/5Sv8sb+W/2J/LF+A2/uwvgH8MN+763 p8T+kN07w3pvb4x9L7s3Zurcme2HRZLMZ3cW5M/haisraupnkeWaeomd2Y8n37r3VxfSfxP+Lfxc oN3wfGf43dD/AB6h3umOl3lD0h1HsHqqLdku3oapMDJuSPY1BQiuaiFbWCkNSHMInmEenyPf3Xuq Pv8AhLjtrbu8/wCRD8fdobvwWI3RtPdeW+T+29z7a3BjqTMYLcO3853rujGZnB5vE16SQVVJV00s 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 m5JPv3XutnL49/E74xfE3b+S2v8AGT4/dQdCYPNyUU2eoeqOvtsbHO4p8b5v4bU7kqsBTQzZGWn+ 5qBBLWySvGJZApAdr+690YX37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3QHfJL/mSO/v+oDG/+72l9+690OPv3Xuv/9LeH6// AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3VWv8ANv8AjZQd5/FHem8cbh8ZV9h9Lba3Hu3bGTrM VRZKajwET0O5dyQzrJTz1k+Moq/B4HduUwWLanqNwx4FNuS1MVDlqwP7r3VU/wDwnC+XNeKbuP8A l77+rMoMj1pJnu9fj6u4MrDncyvVe4d5vge3uu8puClLQ5HJbN3tNPRZnJROYavMVWYioi1JjQ/v 3XutgHsH5PbDw2YyXX+yNv7g743/AE07YnP7K63pMZk8PtaSQ485Cl7N3/nJqXbW35IqHJw5P+FZ TJplK2iWZ8ZjshInhIA5u5+5S5as5Id4mjkLq6+Dhg/9ohRlAYsutDFKFSRoywMiBDXpfZ7fd3Lg wqRQg14U4Go4ZoaipFaYNegj6M2VvHYOz63Absk2vQ0H94shX7F2NtKozOZxHVGya6kp5aPq+j3r nI6GbPUmKrfv1w9cuCw6U+Lehxa4/wD3HmsrMCObd12net9m3HZrdreGQk6XarMSzEMctRtBVXJd 2kdWmZtUhVZBs4poLdY52DMPT/B+2tMCgoPKvQyew9091737r3Xvfuvde9+691737r3XvfuvdV/f OD5g/BPpfYu5NnfKr5M7E6dlpsv1zVJJFl6DKdjbC3xJnRvfp7feK2jBQ5qVKzGZbCQZ3HT5HDVN CslJE9bDNTP4phzyTsHPE25W+9cq2kkjp4jI47EYINEiiTUlKhylUdXBJKMrIWVHfXFiIWgu3ABp UcSK5BpQ+lcgj1wcif8AEr+Y/wBddydfbNzWW3vs/tHaNbujavUi/KvqmuxQ6f3L2dmqSGkxWG7B 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 MV4SzKDWn4khyig8QJDIf9KcdOtNS0tFAtPRUtNRUqPO8dLR08NLTRyVVQ9ZUtHT06qimSWR5X0q LszMeST7M7a1t7OIQWqLGg8lAAr5k+pPmTknJPRZcXVxeSGe5dpHPmxJNPID0A8gMDgB1n9v9J+v e/de6jVlbSUEUc1ZURU6TVdBjafW9nqsllq6PF4jGUkQ9U1VV1U0NLSU0QaSeaSOGJXkdVKPcNxs dpspNx3KVYYIhV3c0VRWmT6kkAAZJIABJA6Xbft19u17Ht22xNNPKaIiirMaVx8gASScAAkkAE9Z qgVtJEj1u3960FQsT1OUxeT6+35ic5tahgpWrazKb4wmTxsNVgaOliXyVdbmIqaCBSrTSIGUkC2v u17fXlx9LDuKaiyKNSSKGL/DQlACPU8EOHKkgEcXXtN7gWcH1U23PpCux0vGxUJ8VQHJB/hHFxlA wBIyMrISrqyMDZlYFWB/oQfciqysAymoPmOo8ZWUlWFCPI9de99U697917oKNsVlb8fPmR0l8xcD urdWOyewMtE5wtTvk4PrCGugwFdgMvn95UdZDlZqagfA1Uy7qy2LxbNjtnUG6PDC+UyVHV0eJ33g uUTb3cXN9qOyUCKYVFA4+AirfiGNKKcq7sR1lh93/m4T2kvKN0e+ImWE0NSh+MGin4TnU7DDIig9 fQj693zhezNi7R7B27HlqfC7y29itxY+iz2Lq8FuHGRZSjSqbEbkwGQVKnH5Kjdmpcjj6pFnpamO WnmRZY3UYz9ZLdLP37r3Xvfuvde9+691737r3Xvfuvde9+690wbhx8tXS01ZRxebK4KsTM4iPyLH 56uGmlo6ihLysI1+7pJ6mi8soZYvN5guuNSPde6dKOrp8hR0lfRyGakraaCspZdDx+WnqYhNBJ45 QrLqVgbMoI/IB9+691L9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3XvfuvdYpY/LFLFfSZY3TVa9talb24vb37r3WrJ8f/5Dn8zX4kdJ 7J+PPxf/AJ9e/eqeoOvn3Cdo7Jh+CHUmfxeDj3Xuiv3vuJaWqze7566RqrLZOtrWaescKZGRFCaF T3Xuhg2Z/wAJ6/8ASp2bs7tH+aN/ME+Sv8zX/Rlutd39b9Rdg0lL1R8ecJlxStG1Vm+o8DksvT1s xlfyPJR1VBHNFHDS1MM9IskMvuvdXifJPo6m7++MHfvxrx+aptg0fdfQvafR1DuGlwUeYo9l03ZH XtfsKmzVPtmCooFqosatas6UCVdOJFjEQmhDa1917qh7pb+UN/OV+PPUvXPRfT//AAoDbaPVnUu0 MHsLr7a7fyvPjVuL+720tt0KY3B4dc5urcddkalaeCNIklrKyaUqBqc+/de6tY+DHx0+dHQ9D2nS /Nb+YZ/s+tTu19p/6OKz/ZVeqPjH/otgxMOTj3XB9v1dWVa5r+MNVY5tVaUNL9laK4qJLe691B/l WfASD+WT8JusfhxTdpTdyw9bZnsXLJ2BPs5Nhy5b+/3YGR301O22Y8nlxD9qcgaYOK5/IE12TVpH uvdGw+QPQXUXyl6Y7F+PvfGycR2H1J2ptyp2xvTaWbh8lLX0E0iVdJWUs6Wlpa6hqooK/G19M6VF HVwwVVPJHPDG6+691X9kf5P/AMbd5/y0+vP5ZXalbnN99ZdSYegpOsuyRSY3Ddk7F3LtXMV1f172 LtmsdauCmz2Kp61qOWqWPxVcb1UUkC01XLTD3XuiPbt/lY/zfe6uuJPiN8hf5wWK3Z8QMziMXsvs ndmxvjThdkfLTt7q+BKaDcewtzdgnJVdNRNmqNKrGZDLxT1NTPDIXyAyaT1lLU+690f/AOX/APK7 61+Q38rrcv8AK36j3PF8eOrazr7qLrTZm5qTaY35JtDbfU/YGA3tTyVO33yOHOSrMguEaGrq5shH I9RUyVspmk1xye691Zbt3E/wDb+CwX3H3f8ABcNjMT914fB9z/DqJKP7jwan0a9GrRra17XP19+6 90R3+XJ8H2+AXRm8Ol37OXtg7r+QHePef95F2YdjCgHcu95t5Da5w7ZXMeU43zfb/e/dJ9xbyeCG +ge690fv37r3RBP5cnwfb4BdGbw6Xfs5e2Duv5Ad495/3kXZh2MKAdy73m3kNrnDtlcx5TjfN9v9 790n3FvJ4Ib6B7r3R+/fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdVp/wAyD4AZ f+Yjh/j/ANSbn7kyGx/jPtPujDdlfJfqHD4nIxZP5EbZ2gq5rZ2w597YnI0c+Ox0eVgU5CjMEqVC zpVpJDV4ykEvuvdWPY7HY/D4+gxGIoKLF4rF0VLjsZjMdSwUOPx2PoYFpqKgoKKmVY4YIY1WOKKN QqKAqgAAe/de6re/mA/Cr5IfLfe3xG3J0P8AObs74fYL4/8Abk3YPau1evMZlayDvzb8lViqmi2v uGrxebxKRx0iY+upVgraetpZ4slUCWD0ASe690pP5jnwey/8wTqrrboDKdqf3C6N/wBOPW+/vkjs qlwGSrcn3x1RsLMDcUvUEG6cZlKCbBxVmQhoqx8hBFNOk1NTSxNF4WWb3Xuj/wBDQ0WLoqPGYyjp cdjsdS09Dj8fQ08NJRUNFSQiCko6OkgCxxRRRqqRxooVVAAAAA9+691Xn/MO/lzbB+fW1eua89gb y6F+RHQm5KzfPxu+SXW5D7z6m3jWRQ/cNLjXmphk8PVzUlBLksWKulkmNNF4qumIZm917quHcP8A KV/mKfMms2J1t/NH/mQbZ7u+J2wd5bY3ruHpH45dEUHQWU+R+S2fPUVuEoO7d4YiqElLjGqxRVdd i8RE0EpRxTfZVcdJkIPde62Fc1tTa+5Nr5bY24tt4HPbKz+Ar9qZzaGZw+Pye181tfK458Pk9t5X A1sb0lRQVNJI9LPRzRNFJEzRshQke/de61yoP5GHya+G27927h/k4fzIt9fDTrHemUrc9mfiT3N1 5ivkr8e8fnctWS1GSyGwU3tUTVGAHj+0iV46Cqr5FgVJ8lJFpiT3Xui9fJn/AITu/Nv+ZViaKf8A mefzV5+2Ml17t3fA6M2T0l8Zes+sdj9f793FjIKPF7nzOXgjjrcrQSzUsMubxzUcNTVII4afJUa0 8RPuvdXk/wAsfFfKbanws606i+VnRu0fj73N0fg4Ol4KfYmU69zvWG/tvbEwtPh9pdtbIwPW+UqY 8VQZSAI1Rg6z7GphqYqjRTU9PJT2917pRfyz/hNF/Lr+FPTfw/j7ETtuTqmTsWoq+x02XD18266z sDtTN9mz1k+0qfI5VKWSE5kUcjLXyCYwme0Xk8MfuvdB9uX+Vn8dtzfzPdhfzSqyhjj7l2P0fnuq TgYcTTw43N7sq3jw22u28llKWWJ58pjdtz5XbnhrYKlHp5KCWB6STGr9x7r3Q9/O/wCJ+B+c/wAP vkH8SNyZ9dp4zvXrrKbKTdr4GLdB2ll5Josnt3dcW35qmjWskxuRpqWuig+7hLPEtpYzZh7r3Q+d YbYzmyutevNmbo3HDvHcu0djbT2xuDd1NiJdv0+6c5gMBT4rLbjgwU1XXvRJXVEMlUlI1dUGEOIz PMV8je690Tr+aH8GIP5lHwa7r+F1R2XL0/D3FJ1rI/YcG003xLgP9HnbWB7TULteTI4kVP3Zwgoj evi8Ym8vr0eN/de6P1FH4ooor6jFGiarWvoULe3Nr+/de6y+/de6IJ/Lk+D7fALozeHS79nL2wd1 /IDvHvP+8i7MOxhQDuXe828htc4dsrmPKcb5vt/vfuk+4t5PBDfQPde6P37917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X ugO+SX/Mkd/f9QGN/wDd7S+/de6HH37r3X//094fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu 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 W17jBu23Q7lbEGOdA6kVoQR5FlUlf4W0jUKMBQjrYY9oel/Xvfuvde9+691737r3Xvfuvde9+691 737r3SWxerF5rKYWaRPtsg9TuPBIFSNkgnljXcdFzLJLK0NdMKx53WNNNdHBGpEDH37r3Sp9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv 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 CopqiMSwTwyJcMjqQysDYg3Hv3XupPv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917oDvkl/z JHf3/UBjf/d7S+/de6HH37r3X//V3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3WK SNJkkiljSWKVGjlikVXjkjddDxyI9wVIJBBFiPfuvdabHefY3cf8mj5Q93P1z1avc2w+xaegyG29 s5nfS7eqcltitrI1wOcqsrKm7t05rIY+Ni2HgzFVi6bK5aj7e3BVS0UFTFXU0Z+4ftpYe4UduLmc 2zwGutULsVrlFBcIgYEliFLMwiJJWMKxpt26SbcWKrqDeVaD7eFTTyzgV9a9bH/WfQuE7l2f132x u35Jdjd07a3hhNr9n7Rl6o3BX9B9OZjHbm2tj6/C5bauJ6uqafc9Zt+tivkqXFbr3jnUYVki1ElR GlOsKLl/2X5D2OApNaLeSEUMk1WOGYhgCSEfSVDMmkErqVUqR1e43vcLhqh9A9Fx5fzHoDXjmvQR d99cdE/Evd/xv7H2Zh9tdVY7N9q9obe7g3jVrlqtsl1lS/FrfvcO5MnvjeGQkqJo4aPJ7Nw+Tlye Xq/ArJMpY1Vahcr96dgs5eQZItttUEvjWyxCNEVtTyrGqrQCtQ5UKPWvAdO7JcSDcAZHOnSxNSTg Amv8uiK9J5H+aP8AzDevsT8xPj33T1t8KOocvUSQdIfH3tfqDbvecHyH2Vt3eOUkHbPYPYGLnoMr s2m3LTNQ43Gx4SXMxy4+i/jVL4xl4FpirYPu+8qQbOYd913NzJRvEDSRGOqAaQoYAgPqcalr3aG1 BQenrjmK6abVbUVR5YNc8a09MYPzFK9HC+F3yA7p7ZpO6Or/AJQbN6i65+Tnxs7JxvWnau1eoOyR vbbmepMxsLE712p27hNtZVI89t3A7mWvrTt2h3ArVU9NRtUmQ+Roocb/AHQ5Di5B35dutJZJoJU1 o8iaaZoU8QAJIyjSzFVXTrUEcCRNtV/+8LcyOApBoQD/ADpxAOaV406EHcXyj2QOw6HpLqugyPdP eGcxG/ctgdjbQqKDG4B4essxBtjsM5ztTcclNtylfbmVrcbQbixdNX1WaoWrKdjiJfKis5yf7S82 84FbiCH6a1JFZpe0UOk1VPjbscOuArLkNw6pebxZ2dVZtT/wj8+J4DIp8vToJe6Np/IDYO+/jv2d 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 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917oDvkl/zJHf3/UBjf8A3e0vv3Xuhx9+691//9beH6//AOZx9/8A /Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 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 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdAd8kv+ZI7+/wCoDG/+72l9+690 OPv3Xuv/194fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r 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 1eSniadqo033c5LR06yu7x0sWiCIsRFGi8e/de6d/fuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3XvfuvdAd8kv+ZI7+/6gMb/7vaX37r3Q4+/de6//0N4fr/8A5nH3/wD9 R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdUk/zwPhthvkb8a37Gx+3YMlvzqxvt/NTw mhyFftPccrYOqoarcWOx1bXY+j1Vs+Ky2ZWSNMPtzMbnr4yk/jlj917oj38iH+Zf1Vs7oyj+Cfya 7ewO0O0uk+1dn9L/AB5k30y7WznbHWvbmIqt5dLbax+2piz4/I4qlgqKF8C3ODxcu3qHISJXzmM+ 690e7v8A/nc/Hva+/ZehPhzs/dXz/wDktIGEPX3x+aqy+xMKqTmkmyW6u0sHRZdJKCmnBpslV7Zx eaTFzFBmji4GNSnuvdFypv5f38y/+YzmTun+Zp8kv9l0+OVdG74v4G/F+PCUs+UoZ5/LBT97b5lq c/ishN4AtJksNU1m6sbM3+X42XCVfjSn917q5z4yfDj40fDracuzvjn1HtnrqjrocdFuHPU61uc3 7vWTE0oosbWb+7H3LNWZ7Oz08IENPLlsjUNDEFih8cSqg917oO/nXs3eI61278huo9uV26e8PiPu pe8th7Xw1hnOyNo4/GTYTvPpOgQi1RPu7ZlVmMdh6adhAmeXC18g10ETL7r3Tb8hO5/iZ3L8ZKLb +7t61O9Ov/l11HJkOrML1VQZ3dna/YW093bYiz2D331NtjaVPVZdJsclVQZSm3AlNHT4ip+1q6qq pNKyAp3LfNn2aN5t1uordY1Vm1uqlVYlVYgmtGZWCmmSpA4Hp2KCaZgsSFq4FB6cf2dIDrPPfNXs PqfYOA7pz22Oj9yUGz8VhOx9xddPiN19n7/3Lj6CowuZ3Xi6rIU9RtvZkOUmjp8qmPpYM/PCk7U8 WQpJoRMcb+cPvFQRarTk2DxG/wB/zCi/hPbHxP41Oqg4Mp6E1ly2x771qf0V/Pif2HpedS9EdRdG YqbEdVbEwu0oaqIU9fX06VNfn8pSxZeuz1LR5fdGYkqMjVwU9Xk8hNSU9TVPHTmomWBI0cr7xm3z mXfeZbn6re7l7h+I1HtBoFqFFFB0qoJpUhRUmnQngtobZdEChR8v8/59EU7Q6c/mC9B/Iztz5O/B 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 Fw6Spj/4xubNRRTfbAQT7q3LV7qyEEKUcUMaxJU1swiVYwQltRZrs008v7FY8tbRDsm3avBh1adR qe52ehNBWhagrU6QKkmpMMcwb7f8y7vNvW408abTq0ig7VVKgVNKhamlBqJoAKAP/s66JOve/de6 7ALEKoJYkBVAJZmJtYW97JAFTgDq4BJoMk9Dd0N8Y/kR8o66mpehOrsnurCzPpqO0txzT7M6Ow4E 32881b2dWU9RHk2hkDQ1VDtOizWRppAPuKGKMmRYk5u95uUuVibaBvr7kU/ThI0j4T3S0KiqtUaQ 9aEGnUs8peznNnM4FzOv0Nsa/qSg6j8Q7YsMaMtDqK0qCK9CT8vvhR2l8Lc51pR763bt/sDAdn7V rqyj3Rtja+Q21idvdibeyDy7q67nmyuTrXrEXGVeLqsNWmCmmyAp8xUvSUkVOlPEWe2nusedd5u9 svVWJgNcA7V1IpIPbrZtRXSzLWQIQ58Qqyqhj7le1Y5L2a03OzZpVJ0TnubS7AEd2hV0htSq1ELg oPDDKzOWb44fITM/C75P7W7nx9VPBs3KVWEod04datMZhcvR1O5Hxx27PHJW7dwgrZ6zcGXx22I8 1k54v4tvXM7nyaml2vTmGI/fzlNNq3yPmK1ULFfEhgAB+qBVvhTi3xlncs5airpjNJa9hea33TZJ OXrli0tkAVJJP6RNF+J+C/AFRAqBdTNqkFd7/am6dub52vtve2zs3jdzbR3hgMNurau5MLVxV+H3 BtzcGOjy2DzeJroSUmpqulminglQlXR1YEg+8f8Aqf8ApQ+/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XugO+SX/Mkd/f9QGN/93tL7917ocffuvdf /9HeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3TLuLb2C3dt/O7U3T hsbuLbO58Pk9vbj2/maKDJYfO4LNUT43L4fK4+rVop6app5ZIJ4ZFKOjMrAgke/de6+al/OI+AuT +MvyUzMtPka7E7OhzNVDUbuzuJym6cNPs/d+46Ndxbp3DtumxmJoM/I1buPD7tqYMTQS12U3juGr w2Lq6ej2pPURe6919A34SfGnpn4x/HzrjaXT+0+rcU+Y2LsXLb6331di5kx/cG7V2pTQ1nY+Q3Tm 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 aRkqI8vLLGqiMee/vNblzXuaRzu1zCrjvcFIYwcF4rddJJCnNdDNShJPd1E+071yfyc4suUrIIrE LJcPUuy1GTX9RwMsFYoAahQAetxD+Rn8j8Tuv45Y34rZbJKu8vjpgsbh9u0FfTVOCyuR64gpqUUE 429uHL5DK07xQV2H3C+KakpINv4nc23MD4lqaOdFHtrcxXdul1Caq4rxU0PmCVLLVTVTQkAgivU6 QTx3MKzxmoYV4g09QSpIqDUGhIqDnq9D2o6e697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917rg6a 0ZNTLqVl1IdLrqFtSkfQj8H37r3Wlj/M++APyb+FcvwIk6x/nOfzcM8ny3/mS/Gj4Xbzg3p8rM1X RbX2L3s2abM7o2kcPBQuMpQDGRij++eohYOfLG5AJ917q+DqT4S76+Bfxz+ZmaqPnj85flnnN4dM bhy23c58re65+w8t1Pktg7F3HV01d1bW0FLQNiZ62avimrp4v3Hejo2DgwJb3Xuqef5aX8r/AOQv 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 8NT1FdhRnsb1Dv8A3V3JQdFdoZ6nxeQm0TU+DyD5abC1FfK0RC0dVURTxl6eX3Xuk/X/AMm35o9R bP2F8hvhF/N9+YXany1wMmzd4Zan+WvduW7M+H3yKoHoUg3Xg8j11iqeqOHxmWpKietxkoqMsIpV pQkkUojydN7r3V53yJ+Suxvh98X+w/k58j8rjNv7V6c66G7+xJNu1Cy0lXnIqeGgh2vsyXcT0Qnq MtmJ4MTg462Sn81RUU6StEXYr7r3Wud0l8Z/5q3863b+3Pll8t/mR3p/LQ+JHYijdPQPw3+F25aj YPcuV6ozkMFXtjeHbvdcqLI1XkqeKnyFLBX4mujeOYzxUOJSX7U+690KvbX8n3+YN8RqGt7z/la/ zS/mf2F2Xs8VO4pvix88e3KH5B9N92UkUi1OU2DQZncFHQQ4GsrKaCOkxuRrKWaVJSU/imNSeStg 917qx/8AlIfzKMd/Mp+N+R3nujZ0PUPyZ6V3llOl/ll0NJJXQ5Dqvuba7tR5iCHE5zTk6bG17xTS UcVejSU80VZjmqKyXHy1UvuvdFE3/wDzU8Z0r/woP2v/AC+t9bompOru/wD4Z9SYra8OVyzQYDa3 yfouxN87q25FQUuRqoqamn3XgK+mwtQ1HTTVOQrYsFTkqlJ7917rYL9+691Qp/Mn/mz4/wCKv8xb +Vp8EdnV7zbp+S/fm3qjvCOjVZZcT1RviPI9Rdc4SrFTTPCVyu6cgmVnaGrhqaaLDRsUeCsAb3Xu r6/fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3QHfJL/mSO/v+oDG/+72l9+690OPv3Xuv /9LeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdUc/wA7b4XT /IPpKLs/ZO1odwdg7QpYdtZrFUCfw/Pbw25WrkMbtbDUGexGJr8pBWyT5zObKosiKujosBjt6bg3 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 fsLUofwkdXrdSdKdSdD7Up9kdN9dbT632vTrSh8XtTDUmL/iE9FQRYyDJZutiX7jIVnghijkrq6W aokCjySsefcI7lu+57zc/VbpO875oWNQK8Qq/CoPooA+XUW325X+5zePfStK2fiOBXjpHBR8gAOh O9lfRd0TPZHyC2x8Jf5iHWW8cNuWgGP3XRtkeyOt8Dm4IsrSbS3ZuubC12Xym0cbV42EQ1+4tzVs eOOSaonzu5txYupkMdBs8NDlR7Rble3/AC80F2G027BEZg1GWhA0sTpooUJoQDSVLMS0hpkD7dX1 1d7M0VwDphIVSQ1CKUGkk6aKAF0qBQgsxJc03bcTlsXn8VjM7gslQ5jCZrH0eWw+XxdVBX43K4vI 0y1mPyWOrqVmjmgnidJYZY2KujBlJBB9yx1IHTj7917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3XutfH/hQD/3Ra/8b3fy8/8A5bffuvdXK/Kj/smH5Hf+IG7f/wDffZH37r3WrR/KE6T/AJ5Gf/lo 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 fdHxI68+GvcFClNBvLq/5RfC748Q5OY7f3tUJfDrkM3WUeAzU+Pninjo5pxIUmhppl917q9X4S/z G+vfkN/Lf2/85+zq+n2OevOsd313ypwv2TRV/VPaXR2Nnpu99tV+1qSasq6SWmraCqrMfi5Xerej no/SXmUH3XutXLvjpfcWe/lm90fz+/kBsShj+VnaHzk+GHzq6fos4mNg3B0v8Vup/kLt/rr49dZY HcVZjqWamiq9rZabL1dTH4jXUs+Nkq1kqaQK3uvdb30ciSxxyxsGjkRZEcfRkddSsP8AXBv7917r J7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3XugO+SX/Mkd/f9QGN/wDd7S+/de6HH37r3X//094f r/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690mt4bR2z2BtHdGw9 6YWg3Js7e23M3tHdm3cpF5sZn9tbkxkuGz2EyMFxrgqqWaWCZL8oxHv3XutBek2N2X/JB/mnD5Gb u7E7I7K2jnezeysT8gNzbz/gtPjdxfGvsnsCLPbsk21T4HE4PGwjbT7k2Xv2txOEganqNx7kwW3a Gz4rNSy+691vjdj9c9b99dZbl637EwWJ391j2Rt18XncRLUzNjc9gsnGtRBPRZTEyxTROD4qmir6 KojmhlWOop5Y5UjkX3XuqbPk5/Lq+Oe1aLMdnfKvrbrT5ldKY6LDUG7O3fktsjr7PfJv469aYmme M5PL/IqPHUWZ3TsbBzaa3ITbgrRmcVRzZHIVeYy1HAlJSQ77o7FzrMi8w8l7hcQzQRaGt0cmKQBm bUIsqZCGK66Me2NSAmqSM52qexH+LXsasGNQxGR5Ur6Y4fb54Ni20tg7F6/gzFLsPZe09k0u4c3L uXcFPtLbmH25Dndxz46mxFRn8zFh4YVqq56Sio6V6ucNK0UEMZcpEgXBC8vr7cHWW/medlXSpkdn KqCSFBYmigsSAMVJNMnofpHHGNMShQc4FM+vSr9s9V6oU/m+/wA/H49fysquh6poNryd+fKDN4KL cUXU2H3JDtzBbHwdfaPD5fs3dkVNkHoZqwMaqgxMNE9RUU0bTSPSRTUctTLntt7Q7vz6h3O4k+ks FYr4mnU8jD4hEpIBAyGckgN2hWIbSV7nvEO3nwgNclK08h9p/wAnp6Yrrr9M/wDCyv5EU/YNN/sw fxL6SznVtZWxwTxdRZzf2zN8YCgmqSrZH+IburdxUWTeniIY0y0VF5mU2mh1ALMu4/dq2FrRhtW4 XCTgYMojdCfQqqxkV9dRp8+iSPme41jxo1K/KoP8yf8AB1u+fFH5edE/ND4/7C+SvRO7o851rv8A pKX7VstFHh9w7b3DLPHRVmyN34WV3NFmKWqljpZKUSSJMXimpJamlqKaomxZ5h5Y3nlreZdi3SKk 8VT21ZXQAnxEag1R0BOqg00YOFZWAFVtdQ3UAuIj2n14g+h+f+HyrUdGX9knTvXvfuvde9+69173 7r3SQ372J1/1VtXKb87Q3zs/rfZGDSKXNby35ubDbP2rh455Vp6eXKbh3DPT0lOHkdY0Msy3YhRc kD29ZWF7uVwLTboXnlbgkaM7GnGiqCceeMdbeRIV1yMFHqTQfz6lbN3tszsXbuN3f19u3bG+tpZi L7jEbq2bn8VufbuVgvbzY3N4SWemnT/aopWHvV3Z3m3zm2v4XgkHFJFZGH2qwBH7OvI0ci6oyGHq DUfy6UvtrrXXvfuvde9+691737r3RVt0N/og+Ru0t5QBodkfJF6Tq/e8aI/2eK7f2tgqzM9Wbyqm UeOEZjE0mQ2tXVMpDTVMO3KSO7aVIltf93HL0tmczbdWaP5wOyiZPIdjlZRWpoZKClemGpDcB/wy dp/0w+E/mKj9nRqfYa6f697917r3v3Xuve/de697917rHPPBTQTVFRNFBTwRST1FRPIkMEEEKGSW aaWQhVjVQWZmIAAuePdER3cRxgszEAACpJOAABxJ8h1vtC1PRWZ/k/Sb6mqMP8YtpS/IPJxzVFFU b4xuYTbPx927W08ktLKuf7smp6ymyDQVERp6yg2fQ53I0zlPuaKCNvKBMvLZs0E/MUwskIBEZGu5 cEVGmEEFAwqA8xjTUKE16ZNzrOm2Gs+vBR9ref2Cp6Q0vxJ3X2Nuaq3f8ne5tzdz7bqaWUp8W9t4 3Dde/Fmhq2r6LIwVmS2pTpNuDd1XGKWWOaHeu5q7CVckz1CYPHSlDCYDmu0sLYWfLlotpIMfWOTL dlaOpGo9kKsGGIUEiaaCRxxa+leRtdw5cfwDCeX5nh+I0PoOjp4nH4nE4ygxOCoKLE4fEUdLjMdi MbRw42gxVBR06w0WPo8ZTqiU8UMQRI4ERQiBQFAsPYNnlnllaa5Yu7kksxLFieJLEnUSfOpr0sUC mlRQDy6cPeuq9e9+691CymMxubxmRwuaoKLLYjL0NXi8ri8lSw1mPyWNr6dqSux1fR1KtHNDNE7R yxSKVZSVYEEj36GaW3kWeBijoQysDQhgagg+RBFQerHSwKvkHr53+3+mc1/Lc/mKfJn+XVnqaqpO q92ZjJ9+/EzI1K1j0+V693ArZD+BUFfUUMT1s1LjoWo6+Y1Jhgq8NWpH5HlZz2z+577sQ8zbPHtd w4/xtS2mvwXUS0mWnkJFGoFjUhUoO7rCf7yPI1IE5mtV77UiOQ/xQuexvn4bmlAKAOxJx0ef3nb1 hz1737r3XvfuvdCJ/KQ+BXT38yvuf5V7Q+cu+d77rwvxs3l1bmR8QtmZ/IdU9Ndstn48wNk9/diU m2FodzZyjg/hb4vb+Hy2cqhj3p6ytFTJj8/TUcXPH3Jvd9uubryPfyPFikZQFDBAK0qgbuKkAAMx Y6VVA5RFp0L9uLPYrXlGzk2EHwpY1YlipcnjRyvaGBJJVQo1MzlQ7tUzn83z+V70j8RO2fhp8mvh tsTrjoXaeez28vjP3R1VtoV23Nub0xeW2bmu3dl7lwmCxkgiOSoJMLn5K0tGVq5ZqOepu9KJfZ17 LS7ivuFZx2DquoP4gYkBowhLig4tpBKVBGoAmnEEvvPHYN7f3kl+jNpKeGVCkrIXAQ1PBdRAehB0 kgV4Ej/vPTrA7oB+0/kZ1l1TRZebLZmDKV+DptyVOYoMXW45IMDFtHDxZvcr7nz2Sngx+Oko4Kmg 1Y6ep/iVVLXY+jxtBX5DJY6jq405u91uUuUUeGab6q6XHgQkMwOcO1dKZFDUlhjtPUl8o+1XNnNr JNDD9NatnxpgVUjGUWmp8GooApz3Dou+A+QfbnZmd2/ldm4CWgwEWV2o2TpJZMXh9tVlDVZ6fEbz 29h8luuhkzWcrI6jHZmnpdwyYvb2Fp8bt/e2UQ5SPCw1tHj9c+/nMl7vdvcIiW1nHIpaJaksmrOt 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 afIDgB8gAOhA9l3SDrkBfgXLE+/de6MH8W/iPvT5dRTb0z2VzfWvxknjFNgt2bcrBj+yu9CKhDkK /rnINHIuD2fJEJKODdMd8jky01TgxQUkWNz1fPvI3tYXEO78xqCjDUIGrUDBXxFoK6q1Kk0ULpKs XrHL/K3IJcRblvSgqe4RGtaY06xTz4kE4AoVYvVA8/nj/wAunqja3x062+VvQfW2P2Nl/iDm8pVd kYvrn7LaGf350N2bL/BO0avJbtEbzjNUVRVnJSbvr5Zq7GUNZuDJwSPkZEcz1aWttZRCC1QIopgD jRQoJPEnSoFSSaAVPUtwW8FrGIrdQiinD5AAVPEmgAqamgGejc/yMPlTVd6/FNOtdy5Wmy25+ka+ n2/hcvQ46txWJ3D13lsTSbk2rU4CjrZpvtaOGlyFLWYXCCQ1OL2pktpHILFUV6h1PT/V2/v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de6oU/nv7P3bu/wD4Z3/untbce6P7s/zzfgJu3cn93cJk 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 e7S+Std8bMtDuf5odVYvBV2X7R7L2nvncVd2F27R/H3MYx6GOorMVk8pXUdAZ8FUV1dSRUdQkKyw T0dZ7r3RUPnR/PB+J38xf4Z9vfB34C9a94fK/wCYfy864zXROK+PFd0H2Xsuq6RyXYuJTC53fvdO 79642l23iotlirGQlrqHMVtLT10NNLLUw0Hkr4vde6uLzH8tfa/c/wDKP69/li/IjMJlIsX8Reke g90b12zWZSqGN7E6f2JhcdhewduVUpx1VVx0Ofw1NkoYagU4rIUNPVRrDPNF7917qo3of+at8k/5 Q209r/ED+c/0X3LlNqdW4/E7E6d/mL9IbGzPa/TPcOyMaJ8XtGPsoYq+RodwQUdEkMgjhnyNRH9v PksfSzzGpq/de6qO/mCfPjqv5Y/Nvo3+YJ/wn+2H8qu3f5gXV+Pkw/fVfsL4tb7rOju2OiJcZPil xveFPknoK+espnpYcXEUxpWqpGW2QpqzD45o/de62E/+E2nUnWFF8FMj8vsZ3FF8hfkl88uwsv3z 8w+1qikgxucxvdsk00eb6SyWHSCmkoE2dWVWRhWlkhWN6isq6yitjKyhVfde6FD+QxtDccPQHzF7 13Ph8tg5/l7/ADN/m58lMBj8/tiq2pmodlbi7Fi2LtN6uhrmM8qT0+3zV01RKiF4ZkC+RAs8vuvd VtfOD+W78s9w/wAxrLfDzo3yYv8AlefzYOwNt/Kr5xmjx2Ynl623X8c6+kyvfm09r5mGqlpMCO15 W2tLV1b0BqK/JS6IpIqOgq0l917q7v8Am39HYntL+U787OmsBteklpYPiH2vUbH2jhsKstNDmest jTby69xGCwWOibSYMhiKBKGClhLIyRiFCyqvv3XujG/Bve+5uzfhZ8RexN60FXit6b4+MvRW6t54 rIUFfiq/F7vzvWGLyO58ZW4vKqlVTTU9dJUQy09SiyxspSRQ4YD3XujTe/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917oDvkl/zJHf3/AFAY3/3e0vv3Xuhx9+691//U3h+v/wDmcff/AP1H9af+8NH7 917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu 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 9pFhvlt4bRpQSLpKPpIH4WNGIIxpA7WIOdK7HeMyXVnyO6cocrj5cD2d0p3p1rBWUsrwNWba3/1j 2XtkSR+WlqlRpKLKYuts8UqKTHIVdQbgDjoVdaHvx63T8mP5P383ZPjB/dWiy/QWxt8VsGf7G3DW ZfIbx7O+K/ZEVdkOtsbsbB7bw+TyuWz0+XzVBR1kdKqJnd6JtTbclRR0eIoy/uvdfQKp6iCrggq6 SeGqpKqGKopqmnlSenqKedBLDPBNESro6kMrKSCCCDb37r3Wf37r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvdcSAwKsAwYEMpAIIIsQQfx7917rikccQtGiRqTchFVATa30X8+/de6ye/de697917r3v3Xuv e/de64OiOpR1V1Nrq6hlNjxcHj6+/de67ACgKoChQAqgAAACwAA/Hv3XuuXv3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e66t/vH0/wAOLe/de679+691737r3XBURWZlRVZ7F2CqC9vpqI5Nv8ffuvdc/fuvdcFRFZmVFVns XYKoL2+mojk2/wAffuvdc/fuvdcSAwKsAwYEMpAIIIsQQfx7917rikccQtGiRqTchFVATa30X8+/ de6CbrDoPpTpTI9gZbqDqvYvWdf2tuqp312TPsfbeM22N7b0rZZZq7de44cVHHHU5Gd5pGnrJFMs hPrZrC3uvdC77917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6A75Jf 8yR39/1AY3/3e0vv3Xuhx9+691//1d4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Se3btbBb42tuTZe6KL+J7a3dgcvtncGO89VSGuwudx8mLylIKuheOe IyQSuglhkSRCdSMrAEe691rF/B7c2T+Ffze7u+Fe/wCSCi2z2ZvrcGf2bk56jFU6zdhNFBlZKiah pMpUpTrmKOsx2UEkkY+1ody7D2tTpG+OaFMcvvC8nPuuzRc12SlpbEaZABkwMSa4UnsY6iWYKqli BUnoS8u3oimNo/CTI/037fMfLq/z3hr0Meve/de6jPTyNUSS/eVSxPBHEKVBSCnjdHcvUI5i82tw wVrylQEXSqtqLWSVUUAxqxBrU6q+WKagtBSvCuTUkUAsQWNCetQH+fN/wnM3f8yuxsx8xfhFLhP9 PW5IaI9w9Rbw3Q2EoO06zGUUOGxe6dk7m3A7UNBmEpIYKero8jVUtFNFCsqTxVAZKjJH2n967XYb FOW+bKi3jxDMiV8NcnQ6IK6QfhZVJzQigr0G932N7iQ3Np8R+JSePzBP+XrWk6r/AOEyX84bsXeW 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 1WPepMeUvtC+1/1fK2hX6lmZpkXUSmdKV1E6daoCBWhoSBg9T77cNt/7nKQFfHLFpFFSVzpWta01 BQaVoaYGD1aV8nMJHtL5a7S33uj5FdqUmE+EfxY7t+ZfeXbkuxfiwm+9p7SzOAy/VfV+wMRnqfrq nMuL3DR0nZWYyFFWNLTip23jnEH3BhqKWW+pE6Mj8Hvi13X1d8RPjxsre3yQ7y2fvbH9XbZye89l 4vBfHKoxWx937opP71bo2PiZ9w9eVVa9Jhq6tqMXSvPLcxQIRHCtoY/de6pv/wCFDXwP3yentifO /bnb/dHYG6PjdWRbS7ehXGdG4XdlR8eN9V7Y2tzu1slszZ+FX+MbWzFbHX4GtyrTUeDkrqzcREcm LUt7r3VgP8lv5IZ/5FfGKg2ZuXtWty+8enosTjqSu2ltXZu3toZzrPNxSVfX9VtzGx7UoaGjoYKa NocLjcfJJIu2m21l6pKJs7BSR+691duoKhVLM5CgF2ChmIFizBABc/U2AH9B7917rl7917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d 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 YrHbi7Y37tnYWKymVSlevfF4mq3NU0y1VStPFLUNT0+uQRRySlQiMw917qV0l8g+ifkrswdifHnu PrLu/YgyEmIk3b1Vvjbm/Nv02XhpIa+bEVmT21UVMUFWkFTTzvSzMsqxyxOUCyIT7r3Qxe/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917oDvkl/zJHf3/UBjf8A3e0vv3Xuhx9+ 691//9beH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Wvt/Pi6xyOzOqtlfNHYe0exd2716i371FhsvhOo8b/F+xcrHN2EMLsKp2zS5CvWnSqhqNw5 egxkNHhMlVT7krtrZOWlrItuQ0UqDcrJNy26fb5ApWaN0Otda9ykVZarqArUjUpPkw49ORSGKVZB XtIODQ4+fR2/h38isf8AK/4zdN9+0WOiwdZ2JsbAZzcO3YHqZ6bb+56rGxS5zHY6rrY4ZavGtMxq cLkmiRMjjZaPIwA09XCzc1ubeX5eV+YrrZJTqEMjBGwdSVOk1GCwHa4WoWRXStVPUl2dwLu1ScY1 DI9D5/5x6ih6Mr7IOn+ve/de697917r3v3XuiR97fKruPrve9dtzor4Vd0/L3b3Xy4x++9zdOb16 SwuR6tqdwYc7gwO3MDsjsjcOIye6s4ceaXJ12JxUavBR12OmjeoeqMMUvcjezW9877FJvkFxHbR6 ikQdWYylcOaj4FB7QaMSwbAAqSm/3qCwnEDKWNKmnlXh9p8/LpSfFH5s9KfMGm31Q9dU3ZOy+yOp KrbmL7r6P7s6y3d1F3N0znt10VRkMFg+wNmbsp4gktTFSVTQVWOqaujmETtBVSqNXsGc48i8w8jX aWu/Rqom1eG6OHSQJp1FeDCmpahlU54dLbK/tr5C9uTjiCKEV4V/Z5Ho3HsKdKek7u7Z20N/7dym 0N97W25vbaecpnos1tfd2Dxm5Nu5eikFpKXKYTMxTU1REw4aOWJlP5Ht20vLyxmFxYyvDIvB42ZG H2MpBH7etusci6ZAGHoRUfz6Jh3Zs7of4x0u2PkC2ewezt27F7jwfZWz5+3u68hFh8rkMbsbc+09 39ZbAyPc+Wq8Vt2nqdjbi36cXiMW+NxFDVVVVlZxSQrX1gmf255+50uObrSZ1l3NLaB4fDSPUUgO k1pEmohWVO4rI4FQiO1EYl3Lb7FbN1BERZg1SeLZ9TTIJ9B6kcehw6L/AJtH8vD5FbT25uXrb5S9 Y1GY3Ppp8d1Znc3Bge7pcssqU1XhaDp2uI3BkpYZnEYqMPQ1lJOo89JU1FKyTtm/e3tpt1u93eyL DGgLMzGlAoqfmceQqTwAr0BY43kYIgqTjolvQm2N5fJD+cdvv5WdtYR+rtodSfEXrTb/AMXenN5Z bblL2Tnsfv8A3pv7DUfeG79jU8kmTw+aSig35SJi6wiSiw2eoYatafM/xvF4op2Hmzl3mdZW2G6W 5ETsjFQwGpNOrSWVQ6jWlXTUlHU6qMtXbi0ubWnjoVqAfLzrStOHA4NDg+nSk7u3DQ4H+bz8X+hv jnj9rbB0fHf5BfI75z0+z9tbWxw7A2RmK7H9bfHLG71NFTiZsm+65szmKTIMyVXhop4NclNVTKsT /eCg2VOSTd3cSG7aWNYH4MGJBc1FNX6SMM1oOHRvy605vdCE6ACWHl8v5nqy/wB4RdDfr3v3Xuve /de697917ouvy4+OG1Pl38ae5/jdvOY0OH7Z2Nldt0udjimnq9pboQLk9k75xkdPNTyGswWZp6DM UeieM+emj9a/X2d8rb/c8r8wWm/2tdVtIGIH4k4OmcdyFl+Va+XTd1brdW728nBhT7D5H8j1TD8c +kuu935nbXYHc+3e/v5pP8xLrRjszf8AmvktXfa9DfFrtTbQo6PdmB2x/H8dS7D2rQjKYuLL42fb uBze5Zo5qfMQU4p69GM6888683b1K3124R7RtEoDwmElp7iJhVWVUPisRULIKwxipUtJpqSGwsbO EfpxmaYYbVhVI41JwPUfEfPFerXl+OfZ/bhep+Vfbbbl27PJ5U6F6Tiz/WHT6QNpZMdvvca1su6d 4+MrplSryGNxFWrOtRgCrBVhn+sO3bT2csWvhyD/AIk3GmWf7UWngw4JU0V2IodYIr0d/TyTf7lP UfwrUL+Z4n14j7Ohl6+2Zh+u97bp2jsjbm0dl9awbH64rcBtDZ21MdtjHYzcMNbncDnK1UxEyUpi kxlDt+jp6aLGQeBKQ/v1CyJFSFl/PcX+2Q315I0s3iyoXdi7FdMTKCWFcMznLn4sKtCWvGqxysiA BaA0AoK1IP8Ak8v9gZfZR051737r3VBvavS3ev8AL/8A5hPanyt+BO39g9qZ3559WS7N3h8NchWb nxuXrPkPhd4Um44/lFgdv7KxH2FThqfHjLJuSbdu5tsYxMrlpZajc9LUZeGF8zfu/wDOt7vW0Nyv fRSObBSY56fp+ECirCzVxIursUChjX1UkgzmGxSGb6qMgeIcr51zU09DTPzPRregf5Tfa/ae8Mv8 iP5pPfmY797m3ni5sHVdQ9XZzMbH6V2T1/V1S156ekzu348Tl8rt0yxU0uU2/jVw+EzMsUbbnoN0 VVLSZJMiug51drsrZGy+ttq4LYfXW0Nr7B2PtbHw4nbOzNlYDE7W2ptzFQEmDGYLbuChgo6OnS50 Q08KILmw9+690qffuvda9XzH+Cmcy/zw7P3T8aflvvb4l7r+fnxxwOzPk9RdUbcod0bpztD0Fuig oIOxYFdUk2vm8vtTKzbQxW+jXQDFtC0dPSZDI5KCWgjP3M58ueRNqTcbSGK4LHSyPKsbLrBEbqMs /crVUIQVViXTT3Gm12C38xjclfMECoxxB8h5Zr6YNejP/DP+Xj8W/glt+THdF7Jq23bksRR4XdXb O+stLu/tTeNNSxUyzR5XctUkcVHT1ElJT1VTi8JSUGOepQVP2YnJkOEPNvP3M3Os4k3yfVGp1JEg 0xIc8FqSSKmhdnZQxAIU06HNpt9rYrSBcniTkn8/81Oju+wl0p61cf8AhTb8Oc7uHpTqz+ZJ0piI H7z+DG4Mdl93PBSTNUbr6Frs0tTlcfmjiqeSvq6LCZGZp5KSOop6ePHZLNVVTKEiFsk/uz+4d3yl zjHtSSaRPIs0FeC3MVDSnCkqLRqnOhUUVfoIc77Ba79ss1rcrqjkjaOQeehwRUfNSainma+XWt2v ZPd/y26523uPCLtjAbA7B21gctRDcddFTbXnqotyZCHcO18ps7E18zVWOqzgdzUGTyu7cg9NR4LZ 29t0U+32kbCUtL0L5t90+beb9UF3N4Fsf9BhqiEYw5rqfIr3EipNABjqEuUva3lPlHTPaQ+Pcj/R pqM4OcoKaUwadoGAKknPSyrsV0r0zk9vVWbyO/s1vveueirdoZrKUFRuLvfMZvcg/jP8N6y62pYi cJuVzuCDcNFtzA4n7Oi7G3Xteiq2f/R/nakRx1I3U5cl2L2RtDHyYt9n/HvrzKbLzlBSZDJ1WL3b DQU9U7DG4p6HLQy4PF7GotpbI8UUlY+Yq6vrjZlXJPSxN2AE3D7r3Sl2jsPbGxszmazadNv/AHH2 fnM3mcrl5K7LZDN98S1Ne9cNx0/Ye8quYJi83jo62qxj5ityFLj6DsndO4qqhbxdY0kcJ1snLu98 w3P0my2z3D+ekVAFQKseAAqKknAzw6Jt65h2Xl22+r3q5S3Ty1mhJoTRRxJNDQAZOOPQ57L6r3hk 6cV+/m21s6DJY3BpW7H68ooI2pljzW3935bb026pYx9tiGk27t7a8GGxkGqi25tvb+Hp8xUQRZWb L5I8nfd+jiaO/wCb5tTCjfTx0Ir2mkjmoNCGVlUMrKcMD1jfzj7/ALyiSx5Qh0qar9RJUGncKxoK EVBDKzFWVhlSOhx2vs/a+yqCbGbUwWNwVJW11RlsiKCmSKozGarFRa/PZytN567IVWhWq6+rkkqJ 2GuaR3ufeROz7Fs+wWgstmt0t4hTCChNOBZss5pirEmmK9Y87xvm77/dG93m4e4kNcuagV4hVwqj zooArmnSj9mvRR1737r3Xvfuvde9+691737r3Xvfuvde9+691sU/yUfkSMt17vz4u7qzBky3Vlfk uxOrRWPpebqHeOVFVuPBwVEx1T/3a3LVVWrSFhosZlsJRRDTDxgn7zcof1Y5qe7tVpa31ZUoMIxP emFCjuqVUEnTk9Z0+zfN/wDWXlVLW7at1ZUiepyygdj5Yse2gZiANWB0d7JfPPau/wDN5vYfw12H nPmPvzB5CbB5vcmw8pT7Y+Mew85TTPTV1D2R8pspT1W3xNQzIYMrhdm0+5dw0blfNgghZ1iLqXeq Rcx8DfkFvCu77+KHdvcdbkez+ksPu75y/wAuL4+9TRbe2h8Y1wHYW4s3S9kdW4zJbmw8+6MxWbYy +byPX7V2byhoMHg907frsVhaCUxU9MJuTuYJuVuZLXe4RmFjXNAVYFWDHQ500PcFXUVqFKsQwDPO HL8XNHLl1sk3CZRSgqQykMpXvQaqjtLNpDULBlBU047oMuc2tid4bax1ZlMvgTRb52rjKikmxGUy LfwyWGtwX2G4PtftKzJ4qrrsWn8SiX7OapE0kaSwDTnzuT/vXZ4N+2hTJLBpuIRSjMNP6kJFCQ0k ZeMpikmkNTTjAnbI/wB1bxPsW7sEin1W8xrVVOr9OYGoBWOQJIHzWOpWurKyxOWxuexWLzmGrYsj h83jaDMYjI04kFPkMVlKVK3HV1P5VVvHNDIkiFlB0sLgexDZ3cF/aR3tq2qOVQ6n1DCo/wBn0OOg /eWk9hdyWVyumSJijD0Kmh/2PUZ6n+1PSXr3v3Xug17S7k6t6T26d1dr7629sXBEusFTm6wiqyMk UkUc8GEw9KstbkJY/NE0kFDTzSKjaygUEgh3/mjYOWLb6rfLpLdTwBNXby7UFXbJFSAQPMgdH+w8 s79zNc/S7HavcMOJAoi+fc5oi44AkE+QPRBcF8r/AJO/NPNZjZX8u/pWprsBichDiNz/ACK7UTHY nae1pJ56eCeqxWCyMopmqIIp0r4YKx6urnphIRhyyEe8TPc371m37FCYNkpahgdMsq65n+ccI1BR XBZtYFQSF6nnaPZzYOXI0vuf7sSOcrbQlgDxwzga3HCugIAeLEdHa6F/kw7EXN43tX5xdk7g+XHb iw0kz4TPV+Sg6k29NFURZcYqiw8pjqcpS0lcaz7VKhaShkpqmSnmxJX3z+5299+auabl5LeWRNWP GlbxJyBw4kqlASKDXQU0leHQqn5xjsYP3Zynapt9uK00KofPE0HapP4viJPdqB6udwO1ts7W2/j9 pbX25gdt7UxNF/DMVtjAYfH4bb2MxvIGPx2Fx0cdNBB6m/ZiiVOTxz7hOa8u7q5N5cSu8pIOtmJa o4HUTWo8s48ugZLcXE831E0jNITXUSS1RwNTnHl6dVqdhfyZP5dXYu6594ZDoZduZGvyc+Vy+P2L vTe2ztt5OapqTVVFOu2cLXx0NDAxLKIsTBSKimyabLYd2PunzlZW4thcLKAKBpEVmAAoO7BP2tqJ PGvQttefuZbWHwPGEgAoC6hmGKccV+1qn16O90V8cuj/AIzbQ/uL0T1rtzrbbT1DVNXS4WGpqMhl aoyyTJVZ3cGUkqMhkJIzLIkMldVStGh8cZWMBQEt437dt/uBdbtO0zDArQBR6KoAUVoK0FTQVJ6D u5btuO7zCfcZTIw4VoAB8gKAcBWgqaCtehn9k3RV1737r3Xvfuvde9+690H+6uzdtbVrqbAr9/uX eOQyWzMJjdlbWp4cluCbMdk7nXY3XFPmZZ5YMfgaXPZ6SDBYzM7krsdinyE0NK9dHLIoIm2HlTfO Y5hHtkJKn/RG7UABAJ1eekkatIYrUVAHR7tHL+671KEsYiVP42wgoQCa+dCRXSCRUVHQ49wfyj/k h8lNoHE9ndA/FDcGKjqaqTbmH7N+RfYm3t7YijWox2Wh/iWR61613FT42WqyNBDJWUWKz1dTSRUt HJNLO5ampps5c9r992Rhd2u7G2lYAsqxa1rmqsDIAdINAwoe5gpHEylsvIe7bW31EG4eA7AVVY9S 1zhgXANAaBhnLUI4k1nSvwI7dj2ltP49Zrp+l6f6dky3SuT+VHb/AGV8tt7fMbv35RYP485WmzXX vS+G3Ju7C440+0MnU0oj3DNkI8XBHjanK4vGbYp2zM+Qo5u6lLq9X37r3VSf83r56fH74l/Ervfa W89+dAZTursPpzeeB66+Pfcsm6dy4vtJd1YuXa8mK33sTrIvuCLa+QWokx1fl5DRUERlVKnI0isZ V917rTq/kZ/Nuq+MPf8AQxbipsnitp4nJ5HrzdGMzCzV+8qjquSppI3zmeSPC5LJNV4mnjWPOxYg pT1NZietNp4ytmX7iM+6919HyORJkjlikSWKVFkiljZXjkjddaSRulwVIIIINiPfuvdZffuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691Hq/+AtT/ANQ83/Ws+/de60tf+E4n8pX+W98rv5TvRvdnyL+IPUnbfau4t593 Y/Ob43ZjsrUZrJUW3u28thMJT1MtLVxIVpqSCKCOyCyqL3+vv3Xuhu+MnUnWv8s3/hRLhPhV8E5s rRfGH5TfETcvbHyM+OeO3Zm917L+N3ZO2WyeW2XvimjylXVTYxsyuLpKekx1fNJLCmamenEdBVUc cfuvdC5889zdxfza/wCZLuX+Tj1P2RvHpf4d/GzrbanaX8x/tLrzIQYrfO/q7sChgy2wfjltLMlK mOJchQ1lJPUNUx+C38TlqKepmxdHBP7r3VpHWf8AJW/lOdT9cr1Ztj+Xv8VMnthsemNra3sDp7aH am9stDHEkcc2Z7I7KpsruCqmVkE0U02SLRTXliKSHV7917qjP5zfFbN/8J4tzbX/AJlv8t3I7v25 8Jl7L2LtX5+fBDIbj3Lu/qqs2DvrckG14O3uq4dyVVTNhMxTVtXDRU8n3D+CsqaIRXxTV+Nn917o 3n/Cobde3t9/yGO+977SytJndqbyyHxb3VtjN0DmShzO3tw947Wy+FytHKQNUVRTTRTRm3KsPfuv dGy3R/wns/kxbl27msBX/AfprEUeWxtXQ1GU25PvHa+dx0U8RVq3E7iw2UgqqOeL9cc8MqlSPyLg +690UP8A4TW9hbnqvj984vjpRdm7n71+Pvw7+dHdHQHxS7w3JuCLcsm7uj9tQ08e1sLh81RQxU1R RUFOlPXQT0jPAxyLfbFKVYI0917pXf8ACVGWWf8AkkfGKeaSSaebenyPlmmmdpJZpZPkLuV5JJJH uWZiSWJNyeT7917p6/nwf8zQ/kcf+NsPiN/7iZv37r3Xv58H/M0P5HH/AI2w+I3/ALiZv37r3Wwl 7917rFPPDTwy1FRLFTwU8Uk8888ixQwwxKXllllchVVVBLMTYDk+/de6+f8AUX8yP5GN/NRT+emo m/4axy/yXb+U0+VroqxarF9DJRUmXi7Z/hzYP+KRbffdJbdxsCwzKy4Y1Fm0e/de6+gAjxVESyRt HPDPGro6MskUsUi6lZWW4ZWBuCOCPfuvdaiX87/+WZ/L16ll/lPz9X/DL449dzdufzoPhL0x2hNs vqnae2pewOqewm3K+99gbtkxFNEa7F5Q0lOaylqCyyFAT+b+691b38sfhr8T/iN/LU/mbRfF746d N/H+Pfnwg+S8m9I+o+v9t7ETdL7b6D3UuAfOpt6ngFSaMV1YKcy30eaTTbUffuvdF9+NnzD2p8A/ +E5Pxn+Xu8MbJncd0r/Ly6Gz2I23H91Gd1b2y+w8RtbrvaUtTRxTSU0OUz1fjqGprRE60sMslS6+ OJvfuvdF0/l1fyY9sfJ3b21/5i384nF/7OH8w/kLg8T2RiurO3GrM50f8cevNzQPuHZHVeG6jrH/ AINWVdHSV7y18GQoZKOhnnko6GjjNPJWVnuvdHu+WP8AIM/lcfKzZ82I/wBlb64+O/YFBQeLZHdX xW2tt/oLsnY+XpaIUOGzVLUdeU1Fj8r9kiRxwUudoayBY1VESPSjJ7r3Rev5LPy/+StJ3F8uf5S/ zy37Tdn/ACu+BVftvIbG7nqpqobl+RXxi3XQ0k2yOxtxx1XkepydDBX4QZPIy1UtRL/FKWGtMtfT 1VXV+691VO3zN+Yvwe/nW/zf/kNtbb9X2/8Ay8etu4viJt75r9WYuqyFdvrrKh7W+O9BFtX5M9ZY NKOaMjb38CqqbcUIrIY62nqaaKpjAjiymJ917rc9637H2L3BsHZ/aXWO6cRvbr3f+3cXuvZ27MDU rV4jP7fzNKtZjsjRTWBs6MNSOqujXSRVdWUe691RR/wn+/7rS/8Aje7+YZ/8qXv3Xutg737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690Vf5f/GL48/KTp7cG 0vkb01173XtjbmJ3HubAYDsfbWP3TicLuSHbtTR0+4sZRZNHjgr4YpJEgrIwJog7+N11Nf3Xuqxv +Eyn/bjj4I/9qLvH/wCCd3t7917pafL34Sdp/O3+ZL0DgfkVsSq3L/LB+OfROe7iptqy7rwkeyu6 /mvlt3naOB232zsOhzK5TK4nAbXqJMti46zCfZCqWqp5aqWnr6mhqPde6Av+dn/L1+E+1/5eXePy R6/6k6l+L3enwx69/wBPXxt7z6V2ntvpXeuxeyOmz/eDrPaeL3FsGPFSyUmSrwmFocbLI6RVFak1 HHHWLDIPde6JD/P13dmPkv8Aye/5S2/O59s0EGf7/wDmL/Lr3b2vs44+rxuKjy/afRm5MvvnbgxV W7VFPTeavqqYU80hljT0OdYPv3XurRezf+E9f8l7cmwN3YjK/C7qnrWhqcDk5J+w9lZjcuwt07FF NSPULu/C7tgyKpRT40qKxJapZKa8dqqGaAyRN7r3RWP+E4vcvYvan8qPuTaW9OzMr3TtL439/fJf 439D9rZypr8jld7dC7B29jct19Wy5nIyzPWU1OuVqaLFtGwipsfDS4+FVjo1Hv3XugW/4T4/yxf5 d3fv8nz4a9ud3fCT4w9r9o7ww3b8u6t/7+6Z2Nufd24ZMP8AIXdu38XJmM7laOWoqGp6GkpaSIyO SsUSIPSoHv3Xutir47/Cj4ifEip3XW/F740dJfH+r31Bh6XeVT1H1xtjYlRuin2/JUy4ODOybep4 DUpSNWVTU6ykhDLIVtqN/de61bP5Fv8AK1/l8fMfoT5ddt/J74o9Wd0dk038yH5d7Pg3hvOgydTl 4ts4bOYutxeGElHVQp4YJaypkQaL3kbn37r3S8yvxn6I/lVfz+/5cvWn8vCKt6w2r88eu/kVifl5 8UdrbmyuZ2HTbV6y2ZLuXrfuF9v7jmyNRixPWrlHphRyU0KNg5Y6fRHVZCKo917oWvlBtL47bn/4 UYda7Q/mObH2fv3pztf4VYPbH8v/AB3dWFj3D0PU99Y7fFd/pK2lNidwUMm3ardWQpKisWip8rUO 58mPhSnkrK7Dafde6t7+Ov8AKv8Ait8R/ln2h8r/AIyYrdHRk3c3W2L2D2T8fet8tQ7c+Mm5MvhM 2Mphuzh1JSUn29DuCipwcbRSYyemo4KaWqEVGstZVSze691ZF7917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3XugO+SX/ADJHf3/UBjf/AHe0vv3Xuhx9+691/9feH6//AOZx9/8A /Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 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 1o6mrElQJFUeaMSc9EUEsm62ctpcMZJo6yxliWZsfqpU1Jqo1gDzViePRlfYV6D3Xvfuvde9+691 737r3Xvfuvde9+691737r3SCr8V2x3PtDdb/ABo6q373sNnSpmd21uw65dq7LyeF2TmZMrvzq+h7 nqq/FUyZ7M02Kr9qim2pkqnOYqtrqapkhoVUVkUqch8kbnfbtDfbjZhrRG71lxUY/CfNdavpk064 6mMP1IPKfK1/d7jFdXttqt1PcsmKjH4T5jUr0empKlA3WwxtLon4kd//AA1r9hdRbX2xjfjb8p+p TmqXL9cUcW28juPAdrbaXKYzsmDPU6iubcJWqgykGbq5Hr465EqXl+4TUMo7a0trKEW1qgRFAFB8 gFFTxJoAKkkmgqep6gt4baMQwKFUUFB8gAKniTQAVNTjj08/CXtffXZHTH91+5qyhqfkT0HurM9A fId6Gn+wp8r2Z1/BTmm7DocXYfaUG+Nv1eD37iKW7eGgzVNCzF43sp6e6C/5q/zSvhd8CqV6DvHt SlrezaiKgbA9Edcx0u9e6dw1GZbx7ep12lTzww4iLJyfsY7JblrcZj6ia0EdYZmWM+691WhHvT+d n/M3Sqj2JtbC/wApD4lZpqcUO+N8Jmd1/NDfe3KsMKmeg2bNBiana4kiADwyHb+SpJnElFlq+mjW Wp917o/fw0/lD/DX4ZVEO8cDtHLd1d5zZpt2Zn5D/IHJRdmdp129p4fFXbwwtTkolx+EyMy3jnyG GoaauqYworquskBlb3Xuqff5838vfqbonqnZPze+MHUGB6rqOtN6123vkTjuktjbUwdXn9l9zb7O bou5ajb9LTR02W3PtPeNcchtl65ftqTK5WDM1zGnwcCxe691ZX/JI+cPXvy2+K6dfYTeOys92T8X 5cV1h2BgNk5iDLYrbuGIqqTYi4c01HRgYONMdkMNtuqkVpchjMZTZSVr16j37r3VzPv3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de6j1f/AWp/wCoeb/rWffuvdaJv8hv+SLsb5Y/yvfjP8k8p/MB/me9G5PsTJ9y1dZ1 b8bflFjerunsFJs3v3c2woH27tM7br6imkrosRHW5CUV5aSqmmkUxgqF917raO+Af8p74g/y5avf u7OkMHvbeXc3a0cVN2l8i+8t41PZ/e+/6GGvOVGNzm962GnSKmkqitTVQ4+jplqpYqd6sTtSUhg9 17qrz+WJuTGdO/z5f56vx17BjgwvZ3euR+MXyZ6nmqY3jm7A6jwWyshj85Pja2cgVEWFqd0YymWK HVplevX0imcD3Xutm/37r3VEn/Ck7tXaHW/8nj5V7f3CkOT3L3hR7E6J6r2mHpf4pu/snf2/8auJ ocHS1N/PUUFLTVubaNBrEVDIyEOFPv3XuiV/z0Onc30x/wAJnNv/AB+3pPFJuTqjrD+Xl05uyoxr D7d85sXf2xNlZ2ageTWNBnpZWiJDcWvf37r3Q1H/AITSdFZWmr8Lvr+ZV/ON7L2bm6R8XufYW9vm vQV20d2YSolRshgdx4/H7SppKiiqo1aCoh8y6kZrFXCuvuvdXffGP4qdB/DfpXbXx8+NvXOG6w6r 2tFU/wAPwOHaqqaisr68D+I53PZrJvPWZHIVGlBLWVs8khRI4lKwxRRp7r3VOX/CXXGnB/yb+iNu y0s2Oq9t9qfKPBV+IqkmhyOGrMf8j9zRSYvJUtV+9DPEukPFMBIONQuffuvde/nxNo7N/kdvpZtP 8674jtpQanbTSZs6VH5J/A9+691y/nwf8zQ/kcf+NsPiN/7iZv37r3Wwl7917qhX/hQh8n+1esPh zjPiN8WsVlN4fNH+Yvumf4vdA7G27LiIM/V4LNUSy907sFXnzHQUdDQYCVsbV5SsqYIqBslDWyTw RU8k8XuvdVMVfWn802f+VJJ/Kbi/4TqVFL1Eeg16mj3jF/NK+HrZePf8bDcyd6HBNiPC2YO8B/e9 6Y1PjarvFrER9+691bt/wn2+WHYndvwqb40/JCll278yv5e+6JviZ8kNk5TJ4DI7hoDsXzYnq7dN dNt2qrIZochhqL+GnI+dhXV2LyFTE0sLxzSe690jP+FAP/dFr/xvd/Lz/wDlt9+691ZZ/M5/7dsf zCv/ABR35Zf++Fz/AL917rWg+enWW8ezv+EeXQVPsuHNV9bsr4mfBXsPMYXCUddkKnMbY2zkdr/x 9Kmix8U0r01DBOcvUPpCQpRmeV0iidh7r3W298e+6OvvkX0X1B3v1TkaHK9cdvdc7R7A2bVY+WGW nTB7nwkOUpKCRYQoinpBIaWqp2RHgmjkhkRJEZF917oY/fuvdaznxHMPe/8Awpi/mR989cx4+r6z +Mvwp6m+HHYu5sVXaqbOd57p3hguyZsfUQKGWeqw9PgsrhK19SfbS0Xg0OzMy+690vv5bGGxG4/5 v/8Awo129uHE43O4DO77+AOGzmDzNDS5TEZnD5T4x52hyWKy2NrleGopqiF3hngmRkkRmR1Kkj37 r3QY4Ss3B/wn3+RR2nuPPZXP/wAmH5UdjzSdfZXP11Zk6/8Alzd9b0rnyWW2nk9xZiqP/GMM3Kar IQSTAtQMJpHcVNPVTbg917oTv+E7+4MDuzA/zid07XzeI3Ltjcv89f59bg25uPb+So8zgdwYHM0e z8jh83hMvjnkp6ukq6eSOemqYJGjljZXRmVgT7r3WxL7917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de6L38ouyO9epul9z75+N/xxm+V/bmKqcFHt7o6n7Z2b0jPuumr81BQ5qoi7G3 9FNiqNqCjkmrhHUp+/4vCrKzhh7r3RF/i/8AMj+aB2z3fs3YXyL/AJOuY+KHTuaj3I+7++K/55/G 3umDZb4vatbltvxDrTrulXLZJsnk4KLEg07otP8AcmqlJjgZW917q2z37r3SO7E/5l/vr/wztzf+ 6Sf37r3VJ/8AwmU/7ccfBH/tRd4//BO729+691erXV1Fi6KsyeTrKXHY7HUtRXZDIV1RDSUVDRUk Jnq6ysq5yscUUUas8kjsFVQSSACffuvda1G+23h/P178xPXu1p85tr+Tb8ae2KDOdm76xeRyOCn/ AJiXbnXdZ9xRddbZq6dIp5uuMPlEByNVTyiKtkiE0MxrBQy4n3XupP8Awp860x/bnxR+A/TtZms/ tHE9nfzaPht1pVbi2ZVwYrdG2MfvTB7w2tPmtqV0scsdNX0UdSZ6GVoXWOZEYowGk+6907Sf8Jnf jpuHH122e1v5hP8AN17w69zZpYt09X9pfNKHK7C3hjaaXyy4PdGIw216F6mjn/TKgnSQCxikja5P uvdXabI6E6e+L/xgToPoLYOB6w6i6y6y3Dt7ZeyduQzR4/FY9MVU1VRNPU1by1NZWVdRJNWZDI1s 81VWVUs1VVTTVEskje691qbfyL/5KvxR+V/8qn4ld/8AZHZHzCwW9OwMN2jJmsT1l8ru1+vdj0h2 33lufZ9B/AdnYGrWkoVelx8Ek6QKFedpJSAXPv3XutlT4Q/y2eh/gJX9jZLpjeXyF3XP2fR7Yodw J3l3tvjuSnootpz10+NbbcG8Zplx7yNkJxVPT2MwWIPfxrb3XutE/Afy2fk3ub4I95fzDPiv8q/m Rt+Dr3+YT8r8p8oPi90z3xuHqvEbn+P+ze33x+9d7dIybbpKiHHbvoMbTz1WQnzNBlIKilAnSBXx q0OT917rbj/k7fy9v5cXWWzcN8+viRvTtr5O7z+Suzhkaf5SfJLs1+3O4325XypSZrZE+TigpKPH VWPraOXHZSNKQ1sU8NRSTVUkYdD7r3VjHzY+Dfxt/mDdGbi+Pvyc2HT7w2dl/wDLsFm6GVMTvzrf dlOn+4jfvWe7UjefE5iiezxTxh4Z010tbBVUU1RTS+691T/8Cu9flX8Dfnljf5PPzT7Ny3yU2T2v sDefcP8AL6+Ve5VyknZW5dnbJiny++OjO2qmRJ4a6swNFTVlXSZCevNVTxRRwOaikrsatB7r3Wx1 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XugO+SX/Mkd/f9QGN/wDd7S+/ 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 uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917rDOhkgmjW 2qSKRFvwNTIVF/fuvdVRfyPPh93N8Cv5YHxp+KPyBpNu0PbfV0vdD7rpNqZ2Lc2AjG+O/t09i4H7 HNwRxrNqxuWo2lsg0SF4zcrf37r3Vsfv3Xuqgf5nX8rao+aOb6o+S/xy7fq/ih/MJ+M61kvx++TO DxaZFJcPUCpnrOqO0sWiscptevkq6uOWnmiqUp1rK3/JKuGrq6Sp917ok6/K/wD4UzdU0NT19ur+ Vb8TvlHunGxjFYzv/p35abI6l663E8CRwU+58t1n2ll4M2GluZaunhFApk8nghhj8ae/de6dfi// AC0vnj8rflH1V89v50fY3WeS3P0JWjc3xZ+DXQMlTP0N0dvGoMVXDvzetfkDVNlNy0FRCk0M0OVy WqWOAnJvRwJQH3XujqfzwPh33T88f5c3bPxp+P1Ft7Jdo7u3n0jnsLSboz9PtnDS0Owe48JvfPif L1KukbihoKgwqw9cmlLi9x7r3Vtvv3Xuve/de61u8V8cf5nv8qHtn5E5D+X90B1X/MD+GvyX7u3b 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 sTZPxtyfx9623v1V8PPhv132cvbdX1tL2TDWYDsvs7tDsvbcseBydblcTP8AaQQ0NJqmV6dqiOgf FQR1fuvdbAHv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6A75Jf8yR39/1 AY3/AN3tL7917ocffuvdf//R3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3SB7S66wHbvXG9+sd0tXR4Dfe2cvtnI1eJqFos1jY8rRtTQ5n A5Bkf7XIUUjJV4+rVC0FRHFMvqQe/de61uf5a+b398Ufkj218GO16KkxmMzGayub6wixmFbF4mkz 23YKunyOLwlJjsLDoxNTjMTUnbyV+UZcTtKh2NTOi1WciWTF/wC8TyeJ7SHnGzHfFSKbPFDhDl/w ngqIAAzux6FXLd5pZrJ+Byv2+fl/Mn0A6vr94kdCzr3v3Xuq8/kVX/NTcG88t2R8COtdsbk7H+MW 4sRtDdNL2H2dkNi7f73xe89mQ753x0rHsXL4iPDZqno6Wu2nkcVumTd2HmxWWkqoqarenp87hc5l 393bljcLSxl5nmnX6e7V41h01dWR46Sa/wAOoBgyADWBE5LUXSEeZLqN5BaBTqSh1eVCDinnTGfL I9aqPq35T/NL5V7R3t1ru/ovH/y9uz8VTphuwpcj2Dle3O5Ng43PRRR4feXUWI3BsLEbLzMOT8G4 KTC7rTMZfF0ddQapsdlXhq8dEN/dL3Uk9vnhtbezM006a0dqeCcurKSHDhkOh/hIdSUBUnWqHadp G4guz6VU0IHxeRB4Uocjjg5zwPvhBtrrn+Wx0rmvj/lOru28Tsuk7h7c3rjO3duYDcPfdBvzF773 hltz7Oq92nruDJbtpMlhNq02F29l8ln9vQ0sktHCRlcjUTvUSX5P96OUeYrW3hv7hbS9aNfFWT9O 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 33Nitodw/Hzd+Y+OnyHpaTH1CVW6e+dhimo6Ws622fQJLW13+kLHVmD3ltDC0EU9VLj85j4Qhm1q E13d2tlGZ7uRYkFcsQowpY8fRVLfYCfLpme4gtYzLcusaiuWIAwCx4+gBP2Any6pt6n+T/yL7y/m nYvp3Yu+cb0Bn/ll1/u7urvzP4LFdfb8+RHT3xs+PeKO0/jD1H1blOwcZuDZlNQy7iymcyO8GyG2 c0WyubzIxGQjp1o54gpynzQ/NEt9cRKv0sEojhYKQz0BZmarMKUKaaAYqxpq0qQcvb6+/PdTRAfT xSBI2AIZqAlie5hwK0oB6n4tKnV+cO2Ml8c+r6HuP59VXxS+a3xY643l1zhMz2f3b1pjui/ll0hj uxexcV12nYmyexuuqWv25m8zRVOVhq0pduYHYtR445Pt655/HGwzJAFT0JCadHc+BG6tw1uA+RXV ddvfO9pbH+OvyQr+oel+1N15+r3duvffUWT6R2N3Vt5Nx71yMs9XnarbVZvDI7IbOZCeavyCYRKv I1FVkJqqqmYt7i2vIVuLWRZY2+F0YMpoaYZSQcgjB4jpuGeC5iE9u6yI3BlIZT5YIqDnHVNX/Chr 4mHFV3Sv8xvYdRXbazvV2S2l033tm8Diky2Vi2Hl9+0uc6V7KpMMoJyWX2fvNqafbuNCOK3O1WA+ 7vR44hVHTvVo/wDKV+UVN8jfixgMRkarFDe3Tni2BmsZQbiG4nh27iqqq2/tqWCvyGUyuZrqHHVW Ly+z6Xcmemjq9yS4Cp3EsKUmTpi3uvdWi+/de697917r3v3Xuve/de697917r3v3XuoNBRtQ05ge trK9jVV1QJ694ZKhUrK6SsjpFeCOMeKnWQU8F1LCJEDs76nb3Xup3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XugO+SX/Mkd/f9 QGN/93tL7917ocffuvdf/9LeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691rJ/zzfh42I7j+OH8znrmHdrdj/G2fI00uPweR3TWbZp czFTCto99ZHr7beOq4q/Jvg6bIUsdTUzRvlclitobZkjqqasWOEu3ba7XetruNovRqiuI2jYZ4MK eRBxxwR9vTsMrQSrMnFSCOrdug+4cF3707sLt3b8IpKPeWEFVXYn7kV0m3Nx46qkwu8NqVFaiRpP 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 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdY5HEUbyG5WNGcg WuQi6j9fz7917rWF2j/wq3+Du/MNjNy7M+IH8z3dO1svLOmP3Ttv4sbT3Dt2rSkrpMbXS0uWwW9K mKZaeeKaGYQF2V43S2tSvv3Xuj6/D/8AnzfywPmz2HR9OdT/ACGTa3c+SrXx2K6m7p2fuvp/eGay BrYKCjxeBfedLT42vr6qWphWkxdFkZa2YsdFOSjhfde6sz717f218fOkO5O+950Ocyez+kOquw+3 9143bFNQVu5chtrrXaNZvPO0W3qPK1NFSy10tLRSx0kVTWQRNKUWSaJCXX3XuqH9o/8AClHoPf8A tjB712H/AC4v5xu9tm7ox1Pl9t7u2j8HoNybY3DiatddLlMHnsNuyalq6eUcxz08row5DH37r3Vl fwV/mI7Y+eMXadRt34ufNf42xdUjaBrf9nB6E/0HvvI7wTKPEOvoZctknyX8PGKb+JsViWH7mlAM hlbx+690OHw/+XfRfzn+PnXvyX+O+7E3V1v2JiKWvp0qPtabcu1Mw1LHUZbZO+cNTTT/AMOzWNeV Ya6jMrqCVlglnppYJ5fde6Gzf+88X1zsTevYWbgr6rC7D2luTeeYpcVFTz5Spxe18NNm8hBjYauW CJ6h4oHWFZZ40LkBnQXYe690W/pH5vdE92/C/anz3pclm+uPj1ujqjJ90z5fs6hoMRnNq7Aw9PU1 mTyW6MZtyrysMcsUNJLL4KOqqGYaUTVIwT37r3VQ8X/Clj4wUNLhuzN7/Db+Y91r8Q8/uOl27i/m 5vP4wTxfHGRKzMthKfdMufwWWrq84h5Y53SenoZal0SyUjSssXv3Xuravl986ujfhn8N97fOvfMu 4ex+h9lbe693c+Q6Xj2xvLLbq2x2bu/D7P2ruDZbZTK4zGV9JLJnKKu84yiI9JrlgMz+OOT3XugO +Zv80fZnwuyfV+OzHxD+fPyKi7U2W+9sZmPiX8cD3XhNs0a1KQLht7ZClzNCMfkXEiyxU+mRXjuy yGx9+690RPpL/hSZ8bPkPksHTdSfA/8Amu7ww2a33D1zNvfC/EDE5rYe3N0fxeLC5ak3XurA7uq6 ahGMlmVsosp8lKgZpEFre/de6tW62+dPVPYfzH7z+C1XtbszrjvjpHZO0OzoKTsbCbbxm1+5er93 1EtDH2J0jncBl8m2XxmOqlgo8v8AeU9FUUtRURQPAZY6pKf3XuhF+W/yo6i+E/x17T+T3eWUyOP6 46n25LnctTYGjgye6Nx18syUGA2ds/EVM1NHV5jL10tPjsbTy1MMTTzIZpoIRJMnuvdCT1D2J/pc 6t687SXZW+euYuxNnbf3nTbF7NxmKwvYe1aPcmMjy1Hht64TCV2SpqLJRRSoKujStlaCTVFIVkR1 X3XuhG9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdE7+bXzO2n8Guo6Ht3dvTfyR71pK/ dVDtWn2J8W+pK7uTslXrMdVZSo3DWbbpqqijpsTRxUjCsr6mrjSN5IYxqeVVPuvdSPgj80+p/wCY Z8V+sPl90dit84Tq/tl96ptrGdk4jDYLelMdhdhZbrTNDMYrb+Ry1JFryGGqpKfxV8uqBo3bQ7NG nuvdG89+690V75M/Lvp34ot0dQ9oZeoXcfyN+QXUvxu6j2niEp6rcO6N99s70otpw1sNJPJEseMw sNW+VzNbI4SKniEUflramjpaj3XujQ+/de6D3tXtXrro7rrePbnbm8cH1/1r1/g6vce8d47jq1os RhMRRKPJPPJYvJJI5SGnp4UeaeZ44II5JpERvde6pBr/AOf/ALGi2vX9y4P+XB/NI3d8VKE1dePl Jt34z4eXrfJ7LpKGryY7Sw2LyO4qfMT7YkpqRqsZg0CRxxPGtQsFW32nv3XurfesvlV8eO4vjfh/ l31523s7P/G/NdfZXtKLtsZNMftTG7H2/RVFfunL7iqskIXxjYZaSsizVNXpDPQTU1RBVxwzQSon uvdUn1H/AApV+LcVAva0XxE/mIVXw1/vGm32+dUXxonT40fZvuz+57bxXcFRlEyBwyzn7lpDQCt+ 3B00LVNqVvde62BNgb+2X2psjanZPXG6MLvXYW+cBjN0bQ3bt2vhyWD3Dt/M0q1uMyuMr6YlZIpY nVlP1H0YBgQPde6qy+ef87n4RfALf+H6O3hkOyu/Pk5n5McuM+L3xa2UnbvdkcWYpJazGVGawSVl DQ44zokbxUdZkUrpY5oZ4aSWncS+/de6KRW/8KROjOrMxgx8xvgP/M/+DXX2frcPQw90fI74nZfC dWYiTM04qKeTP5fAV9dWoFaSnp5YKHH1dTHPKIpYI2jl8fuvdX69Ydo9cd17C2x2n1HvjbHZHXO8 8cMttTeuzszRZ7bucofM9LNLQZPHu8bNFNHLT1ERIeGaOSGVUljdF917pF7u+Q3Wexe/OlfjfubJ y4zsf5AbM7m3p1hFOcfFis9F0TJtqTe23IZp6hKl8q1HuaLKUVLT0sqvR0GTmkkh+2RZvde6HL37 r3QWdxd0dc9CbMj7A7U3FBtjasu8OvdiRZKaGep8m5u0d+Y7rfZuPjp6ZWkb7jK5WjikdVIijLzy FYopGX3XuhT9+690kN/7zxfXOxN69hZuCvqsLsPaW5N55ilxUVPPlKnF7Xw02byEGNhq5YInqHig dYVlnjQuQGdBdh7r3WtxtH/hVh8Id9Y3D57avxB/me53a+cdf4fu3C/FXbWe23PTiraiqK6DJbf3 lVieGF0kEppVlYFGVVZxp9+691cR8E/5k/w7/mP7K3NvP4odr0+9ZNiZSkwnYuyc1h8vs/sbrzLV 9L93QUu7dlbiigq4Yp1EiQV0Cy0cs0NTTx1DVFJVRQ+691Xj8nP+FFfxE+Lvyg7s+JWb+Ofzu7a7 N6AyW1MX2Jk+hOh9p9kbOoqjeu0aTeu3ngyibspKtEnpKvShrKCAtLFOqB1jLn3XuhZ+Hn8+z+X9 8x+2NvfH7EZnt74+/ILdtMavanSnyp6pzHTm9NyxNWTUdFHga+WWvwdVPWGEmhpYcw09QWEUUbTh 4k917q6P37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3XvfuvdAd8kv+ZI7+/wCoDG/+72l9+690OPv3Xuv/094fr/8A5nH3/wD9R/Wn/vDR+/de6HH3 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Qedq9cYTtvr7dPXmfeSmo tx48RUuXpqPD1+T2xn8dVR5fau9NvwZ+mrKJcpg8pT0eXxU1RSypDWU0EpjbQB7917rXh/lrdgyf HzuvtP4L7/wmK69r5NwZbcXWG2aUZSkwq1uLgrsZlNm7MrN0pjqrJUWOptt5zAbfixuDp6f+7ez8 duislln3lTvLib94jlKcyxc324LKAscpyQq1CpwVVVQxFKs8kjSt8McQHQu5bvFzZtjiR8/M+dTj 5AAAeZ6vI94tdCjr3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuij7cpoukfkzuXbXopev/lZPWdgbUUJS01DhfkDsza1PRdi 7WphHpJbdG2sbTbnpIEiJ+5xG46yeVpKuNQKLpzvXLkVycz7XSJ8klraRz4LEk0pFIxioK9skeAF PScDwLkr+GXI+TAZH5jP5H16Fvcnde0cTuau682rTZjtjt2hxzZF+n+sFw+d31TQNj2yVDLuiXKV lBhtr01bGuihye78viqColaOCKraeWON3uWvb/mvmxlfabRzCzKpmZWEQ1NpBLBWJXVhiisEFWfS oZhq63G0tARK41Z7QRXGfX9lSK8BnqfF0N3h27i85SdwdgHpTauaoMni6TY/x7z1Y/YcFLW0+Uwv 8Rz/AH7l6SCenqJKeoxmVpabauExlRi8hTvF/G8vSMS+T3JvsBsu2GO95jY3co0t4ZC+GD2NpZO5 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 86JDTTHFXQvGmqhOTkkkVPlWukKDTpW+0HSHr3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de65O6Ro0kjLHHGrO7uyqiIq3ZmY8AAckn24qs7BEFScADJJPkOnFUsQ qipOAB59VzfzFqvuSn+JGG+T3THWNdPsLbnZnWtHiPlFuPHwx9Zbbos/u77zHbmwFLj1qN07ixab hw22ZqKp2/i5cRlslLhaUVOXpXr8ZJkH7VcpcxbTfHdb8GCCRCDGSQzGgKFlqMAOaA6gDq1BXVep j5A5d3nb7o7hegwxOvwGoZjQFSwxwDGgNc1qFYDrZ1/k8/KTOfJD4X9Z4rsvc9JuPv3pbbG3Osu5 61aygnrc3uHb1C+3W3bJHDm89UzrLX43K4OuytVW2rsziMxLTj7dUJnnqWurVPfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Uer /wCAtT/1Dzf9az7917qgn/hLj/24o+DP/lzP/wAGH2D7917o1P8ANR/lUfHv+ZZ0Nu/b259lbawH yS27gqvNfHb5EYugpMR2N1n2hgadshsiSfdtJCaqqwMtdHDBl8PVGWCSmd5IUhroqSrp/de6r2+M XzL3/wDOn/hND8he5+35p6nujB/Bf5u9Pdv11VTVlPWZbfXUXVm6Nlz7hyf3jOZK7KUNNQ5PJSI+ g1dROFWO3iT3Xumr+Vb/ADqf5VfT/wDLY+C3VXZ/zh6Q2R2L1x8W+l9lb42hnsxlaTM7a3VtrY1H ic5hclT/AGZCy09RFJG2liptdWZSCfde6ux+MHzy+HvzeoOwp/iZ8gdgd8Q9ZpgYt+TbDrqyui2x Lu6GvfbUeSepghAasGMrzEFLG0LE29N/de60Y/5FzfLr+V/8Eelv5pnXmd3D8h/gZ3pvjsPa3zz+ LWOw2nePQWF2T2bkOudrfKfpmresaHJHHpR6tz0UkNLelIjlM0Tpk8D7r3W9Z252XsPuP4P9tdrd X7nxe9eu+w/jF2Ru7Zm68LK82Mz23s51lXV2NyFMZVSRNcbjXFMiSxuGjlRJFZR7r3VH/wAWfiXu L50/8Ja+ofijs7cb7W3n2/8ACfGYvZWX++kxtG+8tu7obee08Lm66L1RYvJ5HG02NyzBW/yKee6O PQfde6Mj/K8+fHRfzF6Qk/l1fKTrzAdLfMzozrSi+PXyX+E3a+GxWOpt4YLbeyl23Xbq6xwNZDHj 9w7QzmJp3rhSY5JGoIGaOaM0P2VfXe690wf8KQdq7X2L/IS+Zmytk7cwOztm7R2P8ettbU2ntbEY /b+2ttbcwfyQ2NjcLgNv4LExRUtFRUlPHHT0tLTRJFFGqoiqqgD3Xurz+u/+Zf7F/wDDO2z/AO6S D37r3VH/APwnM/7IY7g/8X/+cP8A7+6s9+690vv5xnxZ7Sy+3eqv5i/w92/SVnzm/l9V+V7G2Vjq XCTZPKd7dCzU7y94fGzIU+Mlp6uuXNYr7qTEU8byTrO1TS49YanKNOvuvdV/9W9+bW/4USfNLpTL 7C2/uv8A4bC+BFHsHvfszGdhbLyO34O9/nJn8WuW2N1XXUObmi+9oOtx9yuY00MtJNVLW07GrxuV xlY3uvdbWfv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuo9X/wABan/qHm/61n37 r3VAP/CWv/txZ8Jf+oj5L/8AwXO/PfuvdXqdg7/2Z1TsTeXZ3Yu4sdtDYPX22M5vPee6cvKYcXt/ a+28bJl83mK6RAzeOnp4pJGCKzG1lVmIB917r553fncPyV/mDfzNv5Sn80Tfzbi69+IHZH80bpb4 6/ArpDcLwHI1fU3XHauPrd3995ajxkppKaq3Pl49DNeqml8DU61b43H4ySo917r6Mfv3Xuq/v5i3 wWX+YP1P1R0hm+1Mh131jtr5K9L90d07WpNv1O4KLvzq7qvMT5/L9BbhFNlcX9nj85WfYVEte33Q gko4nFJKwUp7r3R5cxl9u7O25lc9n8phdrbS2rhK7L5vM5esocLt3bm3cHQtWZLJ5TI1jRU1JRUd NE8s80rpFFEjMxVVJHuvdatX8qb46Vfyu/lOfzYOvOlan/Rn8dvnP8qv5hz/AAKNVRNt3a21Ojuz cTHsTYeY29jcY1XNi9vDcFNklOMjoYpqUw1YSmu6A+690aD+UB83Osew+hNmfyo/mP1/jOh/m38Z OocF8Ye2vit3DjMY+G7n2PsTryn2xR7u61fLPVYreGF3FtiOLI19JSTVBkheqnWGbFmKrl917o+f z7742N/K9/ln/IXunq3aG2dh7e+OPSdZj+ndm7Z2nSps7Ab0zlTBsLqTGJtLEfbRfw4bjymM+9iR olMJld5Eu0g917opn8iD+Xlsr4ofETYHyJ37hYd4/Nz5j7ToPkJ8nO+N2LU53s/NZ7ujx9kJ1/Nu ncHlyMFFioqukgr6NKgx1WShqK6Uyyyqy+691dVvPZez+xtqbi2H2BtXbu+NkbtxNbgd07Q3bhsd uLbO48JkYTT1+IzmDy0c1NVU0yEpLDPEyMOCD7917rV8/lsbCqv5VX86T5Mfyp9h1OQh+Fnya+P8 Pzu+KWz8pV12am6u3ZT7mi2N2JsfF5iomLGmmko80D94s1X9ljcMJpncvNU+690Xv+e5F8uOxf5t XxizPw8y2Cx/Y/8ALB+A/Yv8yhsRmcpnwexdtVHftBsHsrqulwu1YhW1E2WwmA0pRPMYcpH5ccTA 8itL7r3W1n8XfkX1x8ufjx078lupMkmT697n2Hgt87fcVdBW1ON/ilLbK7Zy82MkmgXI4iuSpxeT iilcRVdPNFqJQ+/de61Af+FMfaXyK+Xe4+0ugPilkEp+q/5SvXexvnL8u9yrUZSiWt7czOdpY+pe tsBkaXGVATM4Pa8ua3ZDNFWrAY/voqnRU0UKn3Xut1bZ+5sbvXaW195YaZajD7t27hNzYmoWxWfG Z7GxZShmQqSLPFKjCxP1+p9+690FPyo/7Jh+R3/iBu3/AP332R9+691rhfyFf5pn8uLoj+Uj8L+o u5/m78aOruz9l7I3xSbs2HvjtraW3N0bdqartvcWbpabL4nJVMcsMktJPBPGjqCySIVB1C/uvdNP 8uHf3V/zO/4UG/Mv5y/CLbVXL8PcP8NcP8f+2+98TtSPb3Xvf3ye/wBI+F3EcvtyprkpqquqIsPR RU0mQWl/dXGmeSQQ1lE9X7r3XH4j/Nb4j/D7+d7/AMKBP9mn+RvT/QH+kTeP8vP+4n+lffGD2Z/e z+6Px83B/ef+A/xmWL7n7D+J477rx38f3EOq2tb+690Fn84/5l/D7+Yr3b/LA+Nv8v7f20flN8zt s/PDpTuDbvY/RBqt6Yvo7qPbQqsz2HkN0dobVpqqkpaSpWKjyGQxyVEgp4sXLXZFKZaOEy+691uQ +/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17oDvkl/zJHf3/UBjf8A3e0vv3Xuhx9+691//9TeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Wvx/N66bTqTduxPnN19TTY Hc+2c1TV2+M3gcFmsjUBNo4uj3JuncOfxWyaOKuyVINt7SxW6MsmSzlNT5J+utt7RjWSPcdVFKRc x7JbcxbLcbTcqGEqMBWgyVI+Io5TUCUZ1UuqsxQhqHp+2na2nWYGlD/qxUVpxoTQkCuOrK+puzNv dw9dbV7H2vPSyY3cdBMailpsxhM//A8/i66XCbs2pW5fbdRV4+asw+VpqzFV5o6qWIVNPKqSOoDH mpve03WxbrPs96pWSBip1KUJHFW0tRl1qVYBgGANCAcdSbBKlxCsycGHrX7RUYwcdCH7QdW69791 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 xuV3GFj/ABCoLJmgLD0J9CfnToUfYK6CvXvfuvde9+690Z/4L/HDrr5Pdh793L3LX4nO7d6K3Xg6 LA/HWqlSVdyZasw65nD9w9vY4OYsvgJ5JJqXamDKS437vH1lbkWqsnT09DgMkPazk/Y32td9nZbm 4c4AJpCAR20xVjQhzTSylo+5S2qbuQeW9qNgu7TFZ5nOAK0jFR20xVjSjHgVJTKlq3dd4dL7G+Qf TXZPRXYlBJVbG7Q2Xmtk52KgdaTIUNFmKFqSDLYGsCk0mQx8vircbVxjXTVMMM8ZDxqROHUp9aZP 8qb5H7x+BPzw3r8YfkVUR7Zk29vQfF7sanp5a7H7TpslR0sEXUG/MVh5a2loabE1+1sRjslt7y0s rYjaeBz2cyMwrt0lpfde63j/AH7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691Hq/+AtT/wBQ83/Ws+/de6oJ/wCEuP8A24o+DP8A 5cz/APBh9g+/de6tF+cfzQ6T+Afxm7N+Tne+58XgdqbB2/karDYeqyNLR5vsLeZoZZdr9c7Mo6ll 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 Zf40/wAu3sLZP8l35j7J7lo4Mx81P5hnRvyg70+T+ZzdDTwZCo77+RHV+UbCbPyYoKWB4E2vBUY7 FNT08fjirYq2opQhqPfuvdHx/k2dnUPb38qb+Xpvegq4q4SfEnpTamSqIJ/uUO4euNlUvXW6IWlL MdcWSxVXFIrsXV1ZXJYE+/de6Np8qP8AsmH5Hf8AiBu3/wD332R9+691RV/JG/ltfy8Ozf5VHwT7 N7J+CPw77E7I3T0lg9wbn7A338aum93713FnZcvVu+Xzm6dw4aprquouqgTTzswCqoIVQB7r3Ww3 sHrvr/qjaWH2B1bsXZ3WuxduwNS7f2VsDbGE2dtLB0zSGZ6fD7c27BTUdNGXZnKQQqCSTa5Pv3Xu tZj4a/ET4pfKP+c1/P5n+THxm6A+Q02yeyvgVFs2bu/p3r3tWXacW4fjdkXz0e25N84+uNCtaaKj NWKYoJjBCZNXjS3uvdbEPSvxZ+MvxtjycPx3+OvRfQ0WbjpYc1H011LsLrFcxDRgLRxZUbKoKL7h YQAIlm1BAAFsB7917oeffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+690B3yS/5kjv7/qAxv/u9pffuvdDj7917r//V3h+v/wDmcff/AP1H9af+ 8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690FHeH U2E7y6q3l1bnpo6GDc2Pp3xGcbEYfPzbS3hgclBuXYe+sfhNxQ1GPqqzAZujx+aoYK6nlp2qKWIT RSR6kPuvda2P8oLtDuXp/uT5GfBTvrrA9Pba2Tu7KZD4xUea7G/vdVZvae395bq66fa+3GzctHO+ Jo8bsubHbZjxeGiWspttZncFb+5lIqqtxL+8PyakJg5vsUPcTHPpXtFSCjkqoUEuzBi7F3ZxQ6Vo ov5bvcNZyH5rn9oyfT0wAPn1sGe8XOhP1737r3Xvfuvde9+690H/AGL2r1/1Ri6TK793LS4QZWes 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 uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3XuscsYljkiJsJI3QkfUB10m3v3XutYvqf/hOd2l8euttn9OfHf8AnR/z I+muq9l0GQjwvX2z907Yxm0sTk8/n6zdO5qzb+EwyUUNFBXZKuqq16fTK/mllkeeRnJHuvdDb1P/ AMJ1Pi3Sdv7Q76+ZnyG+Xv8AMr7K2HUHIbPpfmr28/ZHWO18u2RpMv8AfYTrn7WNBAtTSApiq2uq cc0TeGajmVIyvuvdXTfIrpzG/In4+d6fH7L5mt23ie8+m+zunMnuDGU0FXkcBjezdk1uya7M4+jq isUs1LFXNPFHIQrMoViAT7917qjXq7+Rx8qek+udk9R9V/zu/nhszrfrnbeK2fsbaOK2p022L21t jB0q0WIwmN+8oJZFp6aFEihRpDpRQo4AHv3XurNvhJ8Q+8fi3TdoU/dHzt78+bB39/dH+7s/eWJ2 bi5utU27HlI8vHtkbPgp0cZb7+mar86Eg0cOk2JA917rL/LS+Bmz/wCWn8P+ufh9sTfm5Oyts9cZ XfuVod37tx+MxedyUm/d85DfNZFV0WH/AMnVaebIPBEU5KIpb1E+/de6Nl2t1V1z3j1xvLqHtzZ2 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 wlbtaoyWTx+PpqKTsPc2WeXJ57GrVe691vZ+/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de6xvJHELyOkak2BdlQE2v9W/Pv3Xusnv3Xuve/de697917r3v3Xuve /de697917r3v3XuuCyI5YIyuUJVwrBirD+y1vof8D7917rn7917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XugO+SX/ADJHf3/UBjf/AHe0vv3Xuhx9 +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 r8r+yv8AShvbb/n29Qbf/utt7MfbU32+KX7D7tabQbTzzvf12Huvda6n8jX+fzT9mfJ3ub+Wl8zN 7LB2Phu9+29tfFLt3duWJHYeMouxclTY/o/dmey85c52CPxxbWeVm++iU41WWrjoIKv3Xutx737r 3WuJ/Nw7e7W2L/Nw/wCE+/X+yOy9+7P2L2p3T8qaXs7Z+193Z7Aba7Eotv4DYbYOh3xhMTPFT5WC kasqmp4K6OWNGldlUE39+691sd+/de6Ib/M1+bW1f5ePwd+QXyw3JUYw5LrnZFdF1zg8p+7Du7tv cf8AuA6x2t9jHPTzVEVTmKilauSnlEkdElTPdVhZl917qnP/AIS6fzOd9/Oj4j9h9K/IrdO5tyfK n4r76q6beuY3zXZSt3dvHrftHLV+6dh7lylVn5XrJZ6GqXK4GaJgRT09Jj7kedFHuvdbP3v3XutP f+cZ/Oo7M/lI/wA6n41fxts/vv4h9sfDXryk776kpK6omlxQfv3flAO4OtcXUzJRx7nxdOiCSJ/G mWo4hj6iaFhR1lD7r3W2N1T2r1z3j1xs3t7qPeOD3/1t2Bg6Pcmz94bdq1rcRm8RWqfHPBILNHJG 4eGpp5kSaCZJIJ445o3Rfde6Jf8Azcd17o2L/K8/mA7z2TuTP7O3ftf4jd753bO69q5jI7e3Jt3N Y3ryuqsdmMFncRJDVUlVTyqskFRTypIjAMrAgH37r3Xv5R2690b6/lefy/t5723Jn947v3R8RuiM 7ubde6sxkdw7k3Fmsl15Q1WRzGdzuXkmqquqqJWaSeoqJXkdiWZiST7917qnv59/zN/mp8svmNvD +U7/ACZKra+I7f64ppI/lr8wtwjCZjafx7hFfT4zM4HbslWtfSxV2OmlkxmXmOPq8lHW/cUuPpIa yhE8nuvdJzBf8JQ/jz2ese9Pnp84fnR8xe8a6jnhzm/Mx2xT7ZwwlalEWIfEYvcFJuLLK+LlWOop ZajOyRyzoJJqYxsYB7r3SH3n/IV+cX8ubFxdufyU/wCYX8jZq7ZLybhyPwx+Tu9MFvHqzt946Wof LYvGVMdLits0+QrQ/iply231tNK065ejeOIj3Xurz/gV332j/MN+BmI3h8o/jl2z8Ruzexdu706s 7a62yku7Ostw02UgpZNrbg3t1Nmoqmn3LiMdXeWSpwlXNLT5LHzq6RzzmlhyNT7r3VTn8n75N98f EL5md/fyS/nh2dvbtHsbauW3H3N8HO/Oy8nkMtm++uhs1JVbgqNstuHPzzVtfX4+jgmyyI1VkWpp Y85QT5BRjqOmHuvdH4/ndfzJJf5cnw5yub64pqjc3yv79yUnS3xN6+w0dDkdzZjs7ckK0dRvahwF VFVNV0214KhMi8YoKmKatbH0M6Kld5F917oZf5TfxN7f+H3wp6x68+RnbXZXdXyO3RAeyO995dn9 h7i7JylD2HuyjgmyGxtv5ncORyngxWBhjgxsMFBVmjlqY6qugRPvGUe691ZR7917rWv/AJr9T/MC +b/zP6d/lafEjN9x/GH45ZXYMnbHzK+a2ycJvHb4pMBPVSQ0vTWyOwoIaSkasloxTyVFDjclJLWT ZGnp61aShp6uST3Xuizdmf8ACXDrP4y7Bz3eP8sf5cfM7of5idabQyec2Pnsr2zic9tvtbNYGGfO jZu/cfgcXgpwmdaCgxMjw1q0MUcFO82OqSsxl917q3/+SD89d2fzIf5cHRfyX7HpIaXtWoG6Ouu1 J6Sio8fj83vjrjPS7drd10NJjkhpohmKWOkylRDS08EENRUTQQQxwxRqPde6tq9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690B3yS/wCZI7+/6gMb/wC7 2l9+690OPv3Xuv/Q3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3XvfuvdaxH/Cu3/tzTv7/xPPQ//vSze/de62Ruu/8AmX+xf/DO2z/7pIPf uvdaX/8ANX+V3Qnwl/4VSfAH5J/JvfT9bdL7C/l55em3XvFNr7x3k2Ln3fVd6bM29GNu7Cx+Uys/ 3GSyFJT3p6KQR6/JIUiV3X3Xura/+gpT+RZ/3m1Uf+k0fLn/AOwP37r3Vonwo+evxR/mJdV5zuv4 e9qDtzrTbe+8p1nm9xHZfYOxHx+98NgsbubI4STCdk4rD5AmOhy+OqBOlKYWEwCSMyuF917r5+H8 mX+VHvH5Z/y7e6PnP8L915Hqj+Z58Tvnv2fL8fd9Q7klxu3+wtt7V6o2BvGDpzdmNy/3GHCVFVkM o1BPW0f2s8lXNQZZv4fUmoofde63Xf5RH807a/8AMm6WzFNvDbEnTXzF6IrE2H8s/jpmKXLYnN9d dh42rnw1dk8bitwRQVqYyuqaSoIpalDUY6oElBUvN44Kys917qvT+c3/ANvoP+E3X/icfmD/AO89 117917rZ/wDfuvdaev8APy3TuH+ZR8+/gz/Ii6izk1Lt7cW9MJ8lfmruDDVNLJLtXrfbWNq8rjdv 188FSJKWrpNvrks1DQ11N4a2tyO3DFMkiMD7r3QaYbbGK/kO/wDChrae3No4bHde/wAvH+bvtmg2 vgcBiaWqotldX97bbenxdPR0VLCfFAaDctXSvJMypSUWJ3axYhKFmj917rdV9+691pGfzXvix058 1/8AhUf8IvjD37t99x9W9s/yzN94XPU1LJTwZXF1tFQd9Zrbe6tvVdXFUQw5PD5OmpMpjpZ6eaFa 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 ZnsX1/vKv6q29hc7ncjLNVVMdJkMbn8lB9xKziXJVLlmMpY+691tG+/de697917r3v3Xutf/APn6 fy8t+/JzpDYvzE+Jobbf8wP4B5sd1/HvduFxK5Hce6cBt6uh3FvDrH7FElGRlkWkGTwlFUUlYHrI ZKGCAfxapc+691V7/J4rO4/58Hzri/nHfLHYdHsXon4i7fwvTfxD6Gp8xFu3YlL35R4iDLdg9rY6 bI09PLLPi6qslyUNRU49KiKqrMTDBX1IwTE+691uhe/de697917r3v3XutJP+ep/Oj/mz9RbS+R/ x+6b/lydw/Gnqml3lvbqKr+fWVxu+uy9r57q+s3FU7UwW/etsthdtUWH2zWbjoEEkU1bW5GpoFqQ tHau+1rI/de62E/5J3UHxU6O/lpfGnYXw37bxvffTcO28lnG7noMVHgKrsffe4c1Plt+5/NbaKJU YmpTIyy0aYivDVlDTwQUlTLPLC00nuvdWs+/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de6A75Jf8yR39/1AY3/AN3tL7917ocffuvdf//R3h+v/wDmcff/ AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdaxH /Cu3/tzTv7/xPPQ//vSze/de62Ruu/8AmX+xf/DO2z/7pIPfuvdalXzS2rtfe3/Cvz+W9tnee28D u7beT/l17z/iW3tz4fHZ7B5D7LG9+ZCj++xOVjlp5fFURRTxeSM6ZER1sygj3Xuto3/ZV/jD/wB4 49Df+ig6+/8Ard7917oStmbA2J1zjKjCde7J2jsPDVVfJlarEbM23htr4ypyc1PFSTZGoocJDBE8 7xQQxNMyFykaKTZVA917rVG/4Rn/APbuL5S/+NFO4P8A3xPWnv3XujC/zf8A+Xz8heoe4sF/OR/l X0EGL+ZfSVCs3yI6LxeOb+A/Mno+hYS7twGXwOMMP8VzcVEn79K5+8rqeCGXEz0+doMeKz3Xuq3+ 9/5kXx5/ma/zGf8AhM53d0huLEQbipe4vlXS9xdOSbgx+U350hvmt21sCKp2pvPHxLBVJBLNSVjY bJVFDTLkKaIzJDDIs9PB7r3W4r8kfkB1x8VOhe3fkd25lkw3XPTOw9w7+3TVGooaepqaPBULVFPh cSclLBDLkMlUeHH42meZPPVzwwqdUg9+691oZfy4/hb/AMKBfkvvztT+dB8T+6fhz0fu359VW9aq nk+R6bs3N2DQdUQ9hSjD4DbOJyewd40+I29I2KoUxcNNkVM1DR0LCNadYAfde6HH+Y7/ACf/APhS 187OjYMJ8p/kd/Lz73xHSeTyvc+wtpdcYzM7V7Pr937c2vWwpt/ZGap+qMHG9TlopDSR4/IZWnoK io+1aqkjEEc0XuvdbL38kT5+p/Mc/l2dJ95ZyvWp7f2zRT9PfICikac19H3F1zBDjc3k8l5aWjQT Zyhkx+4nSnh8MJrzTIzGB7e691UH8q/+4xn+Wj/4zr35/wC6H5Ae/de6vT/me/y2OkP5ofxf3V8f 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 8mP4IbB3LTtV7c3x8Cemtn7gpUkeF6nCbl6fpcNladJoyGUvBNIoZTcXuPfuvdVB/wDCYruLI/HD GfKn+S38hKj+7XyR+FXeHYO4diYfIJLSUPYHSu9couUqszseesp6aSvipsu9VmGnMa+ehzFFUUwk gSYw+691tq+/de6xSSJCkkssiRRRI0kssjKkccaLreSR3sAoAJJJsB7917pBdYdsdW927NxvY3TP ZWwu2uv8xPkKbE756z3ft/fWz8pUYmvkxeVgx25dr1FVRTvTVMMtPOsczGORGRrMpHv3Xul1V/8A AWp/6h5v+tZ9+691rIf8JEv+3NOwf/E898f+9LD7917rZ39+691737r3RQOmvnX8aO+fkX8hfif1 7visn7/+L82KXt3rnP7Y3JtTLYzH5uVosbuHb0m4KanhzOLk/YJyWKknp0+4pg8itPGp917o1eZw 2H3Hh8rt7cOKxudwGdxtdhs5g8zQ0uUw+Zw+UpWoclisrja5XhqKaohd4Z4JkZJEZkdSpI9+691q of8ACePEwdOfPn+fL8Teoa4t8Tuk/lrs7N9XbVp656nDdd733rXbtxW+ts4OOqmknCRRYOgxMjvq uuJhu+vVq917rbD9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+690B3yS/5kjv7/AKgMb/7vaX37r3Q4+/de6//S3h+v/wDmcff/AP1H9af+8NH7917ocffu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvda//APwpe+MXfvy7/lcbx6Z+ NXV25+4O0cj3F0/naLZe0oaWbL1GIwOdlq8xkEWtlhjEdPGQzkyD6i1z7917q9bZFHVY7Ze0MfWw vTVtDtjAUdZTyWEkFVS4mKCeGS1xqV1Knn6j37r3WpL/ADXesf5gPUX8/L4i/wAyL4p/Absv5rdf 9HfCmTrTLYPZ+7sTsDE1+8d2ZrtnbGSwlRvGuo8rJSz46i3Vj8oyjEzCVWSLVGZDJH7r3Rhf+Hm/ 50H/AHzdd4/+lg7e/wDtde/de6uQ/l7fJr5MfKzpjcnYXyr+Eu7vgd2Jhuysxs7F9Rby7Foezshu HaVBtrEZrH9iUe4aDD4RUpqurr63HLTNRlkkoZG8jK6hfde6qR/4S0/Ef5J/DX4L/ILrv5Q9P7u6 V3vuz5vdm9j7d21vOno6bJ5XZGa6f2Fg8XuOnho5pgIJqvG19Outg2uBwVFhf3Xutl337r3WqX8l f5CsWwv5zHws/mcfD/bOKodgVHyCpc38tOqMWlLi22hlsph8isnd2z4ZZo4psZXVUscOcxVPD9xS VUq1sAmopp0xfuvdGG/n59E/MH54r8Rf5c/x+657AT4898d0ba3f84+/cLFTY/a/X3Sux89T1+L2 rUZbJ1MEFZUVc8Vbm3oIkkmWoxmKTSfvUST3XutgDYGxNo9W7F2X1n1/g6La+xOu9qbe2PsvbWNV kx+39p7UxMOC29haFZCzCGlpIIYI9TE6VFyTz7917pXe/de61nviF8P/AJD/AMuP+eB8pKPp3pbc +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 ZrP5PsLufuPc1MlHuft7tXcYQ7h3bXY+OaoTH0Y0JBjMTDUSpSwKPJNU1ctVWVPuvdWJe/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6A75Jf8yR39/wBQ GN/93tL7917ocffuvdf/094fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf 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 XQUwTgNqbUNI0igornUwNKKVZXyrzcOXLOeAx+IXZWUeROA1W1DSNIoKKxqQeC0Zl6s+NGD+e/zM go/nH3n3l2jiMVsGDsTqjYdNvqo2LsXPb02xumrpt842nxmzaagi2rJiMVlcImHOyajE5nM0DZZc 7X5anoJmkmH2756k5nSW13EhbhG7aaQCmkaR+Es50ux0rQaXY6FKKJI5N5sffVkgvaCZW7eAqtMD y1MaMTpWnaxOkFV6Ff8Am7fy+uvOruqujvkR8VOrNodXRfHLJ47YG69k9ZRr1Hh8j1tvDI1WL2pk ZNwbLNFNh2pM5nMltnL7njkjlxG2t67xzjziopYpklLoe9XGfBn5J4r5V/Gbrbtmkz1BuHOVeExe M3lXUdHjsLPU7jjwtJlqfO5LaOOrcgdvy5/FVmM3NFtyqrJKvGU+SgoqwiphlA917o3fv3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917oDvkl/zJHf3/UBjf8A3e0vv3Xuhx9+691//9TeH6//AOZx9/8A/Uf1p/7w0fv3 Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvdapf82ba3yQ+G38wv4x/NH477P2zlOmd3T1NP35QtTV0eWymT/vfitt1mzMSKHFy 0FFPkKbcmcy2LraupIhky2881W+OCkaqgCnOvLNtzfyzdbFccZVJQ57ZFzG1KqDRqYJp69K7G6az ulnXyOfmPMfs6u23Pt3rf5PdMUlP/EJMxsDszbW3t27V3LiY6VauOkyNPBuTaO7MTS7gpaimdk1U 9SKPKUFRSVCFqTIUdTRzVFLLzrsr3duUt8M0BMVzauyMKmlVJVlJUg0NMMjKymjxsrhWEjyJDeQa Wyrio/yHP+AinkQRUdU3dT/8J7/jHs3LR4Ls/tbu7u/4/bJ3DUbh6R+Ne5N6ZvbHVHWOQy38Rq9w 5mn2ns6ro8PFlqnIV8eTgzO3cRhq6lqqceCpWjk+ximDefvCc2bjtaWVlFHbTFSJZQNWokg9iMCF AoRRtYKsVYEjUSaDl20jlLyEsPIcP2kcfypkVHp1b18lpctt3q7Jds7XdYt59B1P+m/ayt52TKvs PHVNTu3Z0iRVlCmncm3Zcztsy1ExipzXiqMcjQIpAftfzFcctc62d3ACyyuIXUUyspC8SrUANGJA 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 GlfUcQR8mBBHyPSn9oekXXvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vdN1dlN37UyO1uyeuFgbsvqfdGN7F6/hqagUdNlc3hI5abJ7Or8gWX7ah3NiKnJ7WydSLtFRZKpd PWqkCzkzf25b5hg3I/2ddEn/ADTagbyPDDYFcUHQj5Z3f9ybzFen4K6X/wBI3HyPDDYFcdbKlJJ1 P8tvj2BkMVTb16W+RPVE9Hl9v5uGPx57YPZe12oszt3PUtNI4ilejq5qOugEpaKTyRlg6H3mhHIk sayRmqsAQfUEVHHPDrJxHWRBIhqGAI+w5HWuL/K87A338FvnD3J8FO5t5V2a2xX73yeyMHmdw5F4 hPumpzMO9dldgxplspSUFMd5PvPDZrNDD4Wepye6N/piKeUYzZkop3OrdbVPv3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de64OmtGTUy6lZdSHS66hbUpH0I/B9 +691pSfzTP5XNZ8NJf5e03VX8y/+bjlH+WH80D4r/Drsob0+cG4chFjere8DnW3fk9mQbfxGMSjz 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 eiNJTxQxGomg80dVCJaef3XujWfOP+Yp8jx/wnPpPnz12azqnv3tX4+/HLI7h3LhaVdvVHW1d3Nv PbuwuyN87TgyrVZxuiHJ19TgZZZ5JaQzUsqTPPEjt7r3QcD/AIT9bT2X19tH5O/y0Pnb8h9jfOCv ocJ2Zivlfvvu/cPafWHyjk3Bk6Pe8M/de1oUr8fktt5WAaKRcbTywSUU+mthy2syH3Xur0/lZ8qd mfBT4g9m/Kb5GZikyWF6Q64p9w71qdn4KuwcO894slPg8dgtmbcr6zKzULZ/O1NNQYymrMlUilNT GKqseOKWp9+691rv9H/y3Pmr/Oj2Vg/lp/Ne+VPe/SvRHcuHwm8Omf5dHxh3RV9RbK251hkPJldr VfeuQqYqyfJ5HK0tRHWyUk0T5GmikiSXJwuBj6L3XuhH7D/4Tx7m+KW38p2v/Jk+anyf+KHf22qy bduG6i7A7dyXZXxf7hrqJBOmzexdnbkp5SGrBDTUkeTyTZKCJI0WaidiKmH3XurHP5Pv8ybLfzDe it9UnceyKLpz5l/GDsXMdHfL/o6CSNf7jdlYLIVeNps1iaFqutqIcTlzQVq0q1MzMlVR19PG88NP FVT+690R3tP+bHF0J/wo42f8Gd57mmi6O76+I3SvVXgqsjXSYTZPytrd9707B6yrftZQ1PSVG58P loNuzLTIklZNLiGqJnioY0h917rZS9+691rofzOP5uzfG7+aV/Kr+AHWeSlqsx3F8gdn5b5Kpiqi NjjtgdsU2S6W6m2TlzHOqAVuXyk+6K2mnVZY4sTjp41kSpCt7r3Wxf7917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de6A75Jf8yR39/1AY3/AN3tL7917ocffuvdf//V3h+v/wDmcff/AP1H9af+ 8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 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 EH5g9TvbHSbr3v3XuuwL8Dlj9B72AWNB1ZVLGg6KHlu6dv8Af2+l6T+LvQmZ+fXc2ztxYvLy7Y65 xW3cn1V1Bu3GyGXC7h7U+QO7VO0tn1NKxmETitnysUgZIqFnaxlLlP265s3I/VKzbdDIpUuxZXZD xURgqxUkCoYqDg56H/L3JfMV7+urNZRuCCxLKzKeICAhiDQVDFQcHPQudhfEP5UdY5zYbfPrM9WZ bAd2UOfh2J1F0hktxHp7Ze6tqioy2R6z7O3VueTG5Hf+Zy+3Ko18dDLh0wjR4XMzih/ZgmY95x5P PI21xX2w9xrSWd11SqSaAqdOiEVOmqnW+unBCxNeZOWzyrYpd7T3GtJJWGqQVwCpppjFTpqO9tVP wkkVMbjMbhsfRYnD4+ixOKx1LDRY7GY2kgocfQUVNGIqekoqKlVI4oo1AVI41CqAAAB7hWWSWeQy zMXduLMSSftJyeowlkkkcySsWY8SSST9pOeggwbDYXbeY2h649sdq0mV7C2uAjpR4re2Gelo+xtv xSWSCH+KR1FFn6KljDTVFSM/WSHShIO7gfvHZkvP9FsysT/OJqmJvL4SGjNKmmip6NJv8c2xLn/R Lakb/OM1MZ/2pBQ8TTTXoavYe6JOve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917odPhsO3uxu09w/ETIfKTeHSnRNVh9yd47G2j1JhsLgO4Ox5c1uBIe8euou99x5 HLZLBYbGZXIUG40XamCxGZL5+pWhztPT45olyq9p+YRuuw/uyY/rWdF+2M/AcKAPTLFmIY8Osgvb 7eRuG0/Quf1Lbt/2n4TgU+WSSSCeHQKfznPhH178LOqdjfO34mdaZTZs/SOdpY++aHrBt213ZfZd Plp63H7G7I3FuzHVEu6NwbqauzeZ2J/eGvyctbSQ7xk3DVVTvtqhMMrdD/q9X+Xt8u8J85PiJ0z8 isbSVOHzm8doYN9+bXyeOocHmdr72bC02RydJkttUOSzAxsdfT1NJnMVSy5KokOLr6GcyyLMrt7r 3R1Pfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691r4/8KAf +6LX/je7+Xn/APLb7917q5X5Uf8AZMPyO/8AEDdv/wDvvsj7917rVO/lE/Br+cN2B/LV+Hm9ejf5 3/8AsvHUe5eoMblNgdJ/8N0/HDtz/Rvt6fK1f2u3P9I+8cnBk8t4yGf7iriVxr8YGlFJ917rYn+C fx3+dXQcHZsfzV/mGf7PtNuiXaT9dVH+yqdT/GH/AEXxYdMiu6YfF1dWVYzP8XNTj21Vuk0v2dor +eS3uvdUkfyu/hF1F8/v5SvyB6F7Ziqsc8n8wj5t7r607Dwvlj3d1B2rhe4spDs/s7Z9VBLTyLW4 6SeQPCJ0Spp5JqWVhHMxHuvdHE+BXzt7jTJ93/yu/wCYhDHtb5+/HrrDceZ2bvqSWV9l/N348U+H qaXbXyB6rztRHEtbkooI0i3Vjii1EdQssxjE8GXo8T7r3Tr/AMJlP+3HHwR/7UXeP/wTu9vfuvdU xfzCfn/0R3V/Pj6cxvduz+6ezvht/KZh3FmaOHoXpjdHe1Hvb55ZJsZWT47dH9zKdzj49nSx0J8F ZL5Icpgp4/G0FexHuvdMWyf5nfx/6q/n29f/ACo6Q2n8iOtPjJ/MV2ntL42fLim7z6J7F6R2htv5 E01VFhOlO26Or3W1FhXmr/tsZj6+qlEk1PTjNVTXasZx7r3WzX/Ob/7dL/zHv/FMfkJ/77XIe/de 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 qsjk8pkqqChx2Ox9FA1TW19fXVTJFDDDGrSSyyMFRQWYgAn3jdFDLPIsMCl3Y0CqCST6ADJPyHUJ xxyTOI4lLM2AACST6ADJ6CPvXrX5M7/+PHY/d/x2+PW6t8v8e8XXd3bZ3huln68w25avrOOvqt04 DqmkzNLNm901WUw1PksSP4PjI8bk6HITUtJnYqiZbTHyX7a75csbrc6W9tNGyMhy8iOqleHw5Kur AmjJRgOBkrlnkfdJ2NxfUhglRlKnLOrAEcPhzpZTmhWhA4FT9TdobQ7q6z2L21sHIplNndh7XxG6 8BVeWlkmWiy9ItV9jX/ZSzRx1dK5emrYBKxhnjkiY6kPuJ912252jcZttuxSSFip8q04EV8mFGHy I6j2/sZtvvZbG4FHiYqfnTgR8iKEfI9CB7LukHXvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvdc6LdO6Ou9zbL7X2NTT1+9ep900u+dv4aCpFP/AHoipaKow269kOaisoqM HcGCrcrg4ajIStT0c1XFXmNpKSKwt5M39+XN/hviaRk6JK0ppbBNSrUp5kKW06guT0JOWN3bZd3i uq1QnS/+lPnWjUp5kAnTUDJ62Rauk6k+WXx/qqCrjx/YfR3yI6omo6mLU60G7et+ztrGGaPXEVki +5oKwi6sskTG4KuvGZ0ciyRrLH8LAEYIwRUYNCPsIBHn1k0jrIgkXgwBHEYPyOR+eetdP+VZ3nu3 4hfNjuz+Xx8gcvMmU3Lv7cmO2rnMm/gptxb/AMPDDuhN3QtVVcEEQ3hj8zjNz1UlJjo6SCXdu1Np 45EOGmhV3q/W0t7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3XuqN/53nT3a/b//AA0p/oq623z2P/ox/nV/Bjtvsb+5G18zucbF6t2b/ef+9nYm7f4PDN/D8Ljf uKf77JVWing8ieSRdQv7r3VrvyTxeUznx179wuEx1fmczmOle08XiMRi6OoyGTymUyGxa+koMdjq CkV5Z555XSKGGJGd3YKoJIHv3XutXD+WR/Nj3/8ADD4DfFr4sdp/ycf53ue7B6Q6ux2xt05jYHwE zWV2dkclQZCpqPutv5DcWdxVbJA0cqG9Tj4HDahpIAY+691fv8FPn3/s80HZk/8AsmPzx+IX+jSX aUQh+bvx8/0Dz78/vYmRfydcR/xbKfxNMb/DrZU3j8BqaQerzen3Xuim/wAhLqvs/qD4adqbY7Z6 4351fuTIfOD5jbroNvdibQ3DsnOVu19zdwVeS25uSjxW5KemqJaDIUzLUUNYkZhnjIeJ2Ug+/de6 Gj+a3/LS2/8AzGOjKXGbX3hlOmPlP1BJld3/ABc+Qu181mNqbm6435NSprw1bujbKnJQYLMtBTQZ UUiySRGOGrjgqJKYU83uvdEU+AlN8pv5ZX/CebaeArPjh2nvP5e/HnafyN2bt7oHZ+wM7v8A3fm+ 2Mn8p937e2LX0e2NvAT5Xbhmr6HcUuToJDT1WBDZCknkp5YZX917o/f8oD4TZX4IfBfrDqvfdXV5 nvffdRle9fkzufKVtXkszuPvztcxZzexy+UrayverlxUa0W3lrPunFRHj0qOGlYe/de6Ff8AmR/C faH8wz4Wd6/FLdb0uOrOxNpzT9fbrqI7y7D7Y23Ku4Os97U1RHHJNEtDl6elas+20yTUbVNMGCzt f3Xuqzspu/5bfLf/AIT1/JbaXd/QvcmA+a8Pw+7++PvYPVub673nBvvsXtvaGxq3aGM3TsvF1WKo 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 HV5/r/B7X2zgB9zWVkmVoqGGgoKVGaaXxwrG+rQfde6Gn4SZbsDO/DT4mZntnC7g232rkvjZ0dVd nbe3Xhs5t3cmE7Ek6zxh3vis7gtygZCkqqfJ/dRTQVv7yspEhLXJ917o0Hv3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de6A75Jf8yR39/wBQGN/93tL7917ocffuvdf/194fr/8A5nH3/wD9R/Wn/vDR +/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3RQfnN8aML8rPjhvrrCv25jN05yPHZTN7MxOTqsdiosrnjtyv21l9of3 kydFkVw0W6sBk81s6vzkFFLVY6iy1VWUQWshgdPde6qJ/lGfLfZfYeN7c+Hdd27Qdldx/FzLLPlZ 6iatp9z5bY+6cvVwUW4szjdxZCoycVbVV8EucyGHahootsQZvF7Weniq8VPGuD3v3yYdh5gTf7OM La32DpAAWVR8NFREQFMIo1EiNnZizHodcv3pntzbuavH/MH8yTniccQB1c37gno8697917r3v3Xu ve/de697917oJqrtugyuZye0eqsBmu6d64evlxGdxGw2x0m29m5SmmpYshQdi9i5WenwGEqqNK2m ranC1Fe+blo2aooMTXBChHHK3tvzTzXMEsrdo46Al3BUaSGZSAaYcI4jdykLuvh+KGIHSS73O0tV 72qfQfkP5VFQKsAa0p0XXZPzG6VxOD7H7B7V3xtPp/b9NTbR3buir35uLB4rCbH3ZU1df0bvXprJ bzFVJicnurbe8tk5vA5fH4mplkSqakhSN2qad6hTvnIPMVlNa7bDaTyTapogPCdS6pJrSYKQCkTp KO58KySqxBjcLS33C1cPMzqF7TxGCRQrXzII8vIgjiKoeo+T/wAk/kBhcjnPix01R9JdHUGPGazf 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 3JdwhXXQFWWtNSnyrQ0yAa08upG5xuLsbdtN2B3BvXdXcO+sdV1NXgc/v6qoqqh2Y05rolTrvZeH go8BtwrR182NlqsLi6arrKVY0yVTWyKZSp3/AJ25g5iJW8mKxnHhp2rQhQa046tKllwhYaggPSne Oad43olbmQqhxoXApQA19a6QSMKWFQoPUn2Eegz0mt5bXg3jtyuwUlXJjKtpsblsFnqakx1dX7V3 dtvKwbk2XvTDU2WinpjkMLl6Siy2OaeF0Spp4nKMFt7Mtq3GfaNxi3G2JDxNXBKkg4ZdQyupSVqM itQQejDb72Xb72O9gJDRmuCQSODCoyNSkioyK1Getk/4sd603yM6O2T2c9LSYjc1ZTVWA7F2zRSV MlPtTsza1W+B31gKNq4JUvRR5CCabEVU8aNWY6WjrkXxVMZObOy7gu7bVBuScJkDVppr5VC6n0hq VCliyggNRgQMotsvV3Hb4r1OEig1pSvzA1NQHiASWAIDUao61TqvqFPgT85+/PgosC4vpjfy5f5g /ChABFjMb1V2JuiVe5ej8QtxFCNk7wmqZcbQI0k5xORp6iXSgFoP95eWzHLFzNarh6RzUHmP7NzQ eY7CSfJR1FfuXsmiSPfLdcNRJaev4GOPMdpJ9FHRh/cCdRD1737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3XvfuvdLD4+L/ADOe6cXnPjP8Ke4etOhfjBhOzN6VvYXy33Ns HJ9mdodY1G45os9vbo3oLD7vycuDzOZiz1Vlq6XI1NDJjsFHXHFKaarxENFPl57Z3u5XXLMUe5RP GYwNDMtBJGSwVloBX4SWLEuxOs0V0JyP5Gur242ONb2NkKAaWYUDoa6WGM8KkkliTqPay1rM/mX/ AASyv8sn5SdTd2bH7g+SXcOE+SUO3YB2f212HX9p92Vny26kkqavCyy7pyclBFJl9w4uvFH17ioI qfGUGclqMxVxrS4LGwQyJ0MutzL4s99YD5MdC9cdzbfyGGyMO79u0FXkqjbrZVtuzZdaZPvcjteT PwUlfNg8iCmV25X1dJA9fiKqhyCxLHVR3917owfv3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917oMNidJ9M9Xbi7B3f 1n1H1l1zuztrOJuftXdGxdhbV2juHszckdRVVke4Owc3gKSnqczXLLXVsoq8lLNKHqJ2D6pZC3uv dCf7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6A75Jf8yR39/wBQ GN/93tL7917ocffuvdf/0N4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdasXzM 6nf+Xh/Me278uOqtvQ7f62+Q24juftvG7WxS0NHvHN7k3HBtne9LuSjx+VxkNflpdwbiQ4Soyazy 5HO71xzyr/DtoKYAJ7icpw838rXO2Mo8YKXialSrrkUIVmoSBVUoXoFqAT0v227ayu1l/DWh+z9o H7eHHq/fF5PG5vGY7NYWvostiMvQ0mUxWUxtVDWY/JY2vp1q6HI0FZTM0c0M0TrJFLGxVlIZSQQf fOOaGW3kaCdSjoSrKRQhgaEEeRBFCOpJGlgGTIPU337qvXvfuvdF03P8h6eeTcmA6I673p8mt+7b psyuS2/1UcFBtTC5fDwZWF8DuztzdlVQbYx9eMjiZsVUYhMlUZaCokiMmNELNKsmcn+0fN3NzLLF D9LbEisswK47T2phmOl1cV0hlqVJ4dF93vFnZ4La29B+fE/aKedDx6hdH9d0nzX6k61737E7UzuY 6g7W2djN44PozrCozXWm01xufp55f7t9wbmheDd+ayeOWb+F5zDtWYfGNUwVFLkcHMyMq5Ucl+yn KvKoS6vE+uvFofElFVRhpP6afCKMCVYjVQ0J6Cd7vl3d1RD4aeg4njxP2eXDo3W+uwvjf8N+m5d0 dg7q6j+NXRHX1EKSOuzVbtbrDrrbdO5kqKXD4imJpKKOWd/IKWgpI/LPKdEMTyMFMwIiooVRQDAA 4Aeg6Jetdrq3snFfKj5hdrfJL4P/AMvrbPcvVubqsN2N0j8yvm1smTpXq7rnvvcOJi2Z3b2l8b8D n8Xkd/Z/CbpxG19kVAXF4DCIc3R5epkytMczPUPHHOHutyhyZqhvJ/HuR/oENHkHD4zULHg172BI 4A9GlntF7eDUi6V/ibA/LzP5dWNwfCqPtfOUG+vnF2fmPmNu7HZBcvgtgbnwVNsv4odfZCGapaim 2H8YcdU1uKq6imjqFWDM74rtyZeJ41lpshTf5tcV+cffLm3mXVa7Y37utTjTET4rDHxS4IyK0QJS pBLDoV2exWlqA8g8Rvnw/If569HoREiRI40WOKNVSONFCIqINKoirwABwAPcLszOxZjUnJJ4k+p6 OSaYHXvd+q9J/P7UwW5TRTZSjf77GSeXFZehq6zEZ7FNJUQ1NQmMzuJkhqoIqgwRJWQRzCKpiBgq ElhZ42ct7ue1JEZqrfErAMjf6ZTUGlcGlVOVIND1tkVuPEefn+3pM0G1d94iKWKl7Rrs+ktfW1ay 752ptrJ1VHTVuZkyEeJopdlR7dQwUlNIuPo5KmOafxxRSVU1VUeaWZeb7a5F/XsgG9YpXQHFPhcS 0qe40oKkhQq0Ab0Sj4Xx8wD/AIKf6vXpkzHTWK3jmdqZ3sPcO4N41Oxd0YLfeyscXodsYbaO98DB kcem5MI+1YKTJu9TRZOox1ZS5LKVlLNSF6doPHUVa1Di70bVJotrhS3WdGjc90jNG2mqkuSoyuoF UUhsg1VCu/A1EGVi2k1HkAR54z+0n/D1Xz2bURfBP+Z7078uYJpMT8fv5gVHs/4W/KpEkWnwm3vk HhZJaj4Z935xSxOqtDZPrmsqm8cECVuOaVmYi2UH3dOcfqLOfky8bvgrNb1842P6iDH4XIcVNaOa YXoK8yWWl1vYxhu1vt8j+Yx+XVuvyf6+3HvnrGbK9fUdDV9s9YZig7R6nSteho1r93bXjlWt2a+a rMflGx1LuvDT5XaOTr6WikqYKHKVL0+mYIyztzly3b818uXOy3AJ8RSVpxDgHSQNaKWByms6FfS5 B0jogsrlrS5WYeRz9nn5E/bTNKjz6Rmyt34ff+ztq7529/EBgt47dw258OuXxWQwWXjxudx0eTo4 cvgstHDV0NWkcqpU0dXDHNBIGilRJEZRzYvrSfbr2WwuaeJC7I1DUVU0qp4FTxUjBFCMHqTI3V0E i8GFf29KX2z1rqkj+e/8fs73f8PcpXbXqETeOzIK2r62kylVTJtvCdt0m5cD2P1playjzdbBijkc 9kNqjrHEVFZR1beXd70QjSlr61jPX3ed7s9t5rm265Vdd7GqxsRVgyEnSlFZiW1VYVVQitI7Uj6I uY4HltFkU4Q1I8s+uQPs4mpAHHozPXX8/H+WznviJ1D8h+3/AJH9V9f7u7K2XjDur48/xuPP90bc 7HGFR967Bq+o6PzZ+Cno6syIuVylDT4/7KSmr6iqhoqhJzmzIwRDI3AAk+eB8hk/l0BwKmnUDsb4 e5/5Bfy88h8cd6bc2ZtPfVJiM5m+isBnMLtXKYjpOt2ru6u3D8Xtm7g/gsWQxwrNrYJcDtfcmT24 xDtDkJ8NUxCWmnTn+Odds2H3Ul5q5e1iwafuBLapIm0iYmpDNrfVKoY1Y6Q/mOpD+hkuNpFpcU8T T8sEcPlgYNPy60pu9MFitkfedxxCeTffV+96bCdyyb8l3s+ZpH3A8GK3htXdG6cpNtHPHfWO+3oM vjo9xS7V3tXR41YcB2DvmJ4Kujz7tLuC/tY7y1YPHKoZSCCCCK8VJB+dCRXz6j2RGjco4oRjqL2R RZDqnePVnf2A3Dt3Z9XS74wG0tw5vG7dkzW4MD2DXZQ7p663biP4XSbUNJuLDZ6vE1ZBUYrZvYox +XyWUzmC7AxCZGqr/X1nb7haS2N2oeKZSjKQCCrChFCCP2jryO0biRDQg1HW/N8Jvk/gPmB8aOse 9MNPhv4ruDEy4ff+GwVTUT0O0+0NrVLbf7D2vHDkFjroI6XKQVBpIslTwVhpXp5KingkkMa82Odu WJ+UOZrrYpgdMTExsQe+JsxtkCuMEgU1BgOHUnWN0t3apcL5jPyPmP8AV5dGq9hjp7r3v3Xuve/d e6Iv81/5lHww/l9bTl3L8oO7ds7Mys2PlyG3ut8bMNx9r7xAp6mWjj211/iS9c8VTJSTUsWQqkgo EmASerhvf2KuVuROaOcZxHsdqzpWjSt2QrkA1c4NKiqrqamdPSW7v7WxSs7UPoMk/l/noOtJD+YH /wAK3fkh3BHn+vfglsOm+NGxambI49O3d3DF7y7vzOJaSWlp6zDY2aOXB7aeop2V5FSPJVUEljTV 8TJrbKXk/wC73sG1FLzmeQ38wofDFUgU4NCPikoajuIVhxTy6C95zFcS1S1Hhr68W/zD/D8+tfzr f4lfOP58b1xvZ+RxHavYWS7i3Tk8bj+5eyqbsffGW7T3VjtDZ2h2SmOo81ufelbjzNT/AMVh2zjM k2MjminyX2VGfOuQNraWthbLaWUaxRIAFRFCqoGAAAAB0HXd5GLyEknzOT1uKfy9f+EisUKba7A+ VWdqdogpRV1Vgd34LYe+eyJlZTLPFiusaepz2wdsyqH8Hl3TW7+SrhtI+FwNcNML/Vetx34b/Aj4 lfAPYuW2D8Uul9q9V4/dNdS5ffeex8EldvXsTOUfnenzG+t45Jpa/IvC9VWPR00kwpaIVE0dDT0s LmL37r3Rwvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdA18hOjdj/Jfo/tToLsimqKjZPbOy M9snOvROkWVxkOZomgo89gqt1b7fJY2o8OQxtUo1QVUMMy+pAfdHVXUowqCKH7D1plDKVbIPWp1g tm1u99sZ7qH5JbdxOa7c6K3/AF/U3cFO1NLRU1Z2H1xkaLLUW9sMtPHSvT4vd2N/gm8cfRx/tSYv K01NUCWNpY2xD5mtNx5D5qmi2uRokY+JFQ4KNqoCKkHQSyqT3LQMCGoRjlvlve8pb/JHYOY1PelD go1aAj+iSyg8RQMCDQ9In/ZPvjRhpKvO5fqjoSgxeMngzAfBfGP4h9MnEUOIgpqiakyu+ekthbVz 2SxjyUn3eRpNwZqtp6ovKtWktOViRdde6fOe6W5sI2RDINNYoyJDXjQ1ahIx2gGnDOelVxz9zNfw m0jKqXFKxodZr6ZNDTGAD+eel4vZFdn8bQ4zoPaWO3XjEpIKXH71ylVLtPpzFY2PHQS4ybA5akpp 6rcEJp5o2oBtuhnx0hilpZ8rj5UFgodsigmabmKcxuTUxrSS4Y1zqqdMZNa1lYMa1CMOg/8AQxxS l95lKMTUovfMxrmuaITWtZDU8QrdZ6DpmLNVDZTuLcc/b+TlMLpgctiqfD9T4SWnrlyVK+3Oq45a qleSCeOGelyG4KrL5OmdT9vkI42Mfuku9+Eng7NELReBZSWncEAHXMaGhpXSgRPkaA9Uk3Tw18Lb YxbrwLA1laoAOqTBoaV0qFX5HobPpwOAPoP6f049kJJYlmNSeJ6KSSTU5J66906b6Ru5Oyeudm5O gwm8OwNkbTzOWo5Mji8TubduBwGSyWPgyFPiZ67H0OVqIZZoUqqqlpmkjUqJZooydciAmdptO6bg hksbaWZRWrIjMBQEmpAIFACePAE8B0YW23X94pe1geRRxKoxAoKmpApwBP2CvT3t/ce3t2Yqlz21 s9hty4OtEhocxgMpQ5nFVYhkMUppMjjnkhk0urK2hzYgg8j2luLW5s5fBu42icZ0upVqfYwB6Ylt 57Z/CuEaNvRgVP7DQ9O/tN0m697917r3v3XujW/AXuNelfkTmdj5/JU2O6u+R2Olr5anI5Cnosbt jvXrna5losxI1bOiJHuXaGOmx9fUEaY5dvYeFF11kre8iPZrmTxIZeWrk9yVki/0p+NcDyOak+dB 1NHtnvmuJ9jnOUq8f+lPxDh5HNSfOg6L/wDziOwuqvl1/svO5Ph657S+THxJ7obf2zO3MRU02D6O qdi5ygrtn96dJ5Ht2uhqY8tT7poKP+HudpY/LJSZOmofv6nGx+SZRjztzNykNum2LdZwzXC6aRgO yE6Sr8QBSodWJp2niRpIl5o3zl4Wcm1X8wJmXTRAGKk0KtxoKVDAnGDxIoQz2jujEb32rtveO35Z p8FuvBYnceIkqaaWiqnxuaoY8lRGqoqkLLBL45FEsMqh42ujAMCPeKN5ay2N1JZT/HExU04VBpUe oPEHzBB6x8ubeS1uHtpfiQlT6Y8x8jxB8xnp/wDaTpL1737r3UeurqHF0NZk8nWUuOxuOpaityGQ raiGkoaGhpITUVdZWVdQVjiiijVnkkdgqqCSQAT7djjeV1iiUszEAACpJOAABkknAA49PojyOI4w WZiAABUknAAA4k+Q6pc7l/n2fBfqjeWW2Zhv9K3cUuEqmoa/cnWG19v1G0GrYnkirKbG5neOXw71 ggkjCmppaeSmlDK9PPMl2Eq7X7P8zX8AuLp4rXUKhXJZ/wDbBQQPUZJ9QOh9Ye2++XcQmnaODUKh WJLfmFBA/afnTo6Pw8/mE/GX5wY/JnpfdddBu3AUj5TP9ab1o6XA9gYjDDJNioc4+KpairpqqieQ RaqigrKhYPPTpU+CWeONgrzNyTvvKrB9wQNCxosqElCeOk1AKtT1FD5E0PRBvvK27bAwa9UNGxoJ FNVr6GoBB+0U9CaHo7XsH9Bnr3v3Xuve/de697917r3v3Xuk/u/DT7j2puXb9JmqzblVn8FlcLS5 /HVFdSZDDVGUoXoYMlQ1WMqaOrimhaQPHJSVlPOrAGGeGUJKq/b5hBfRTGIThGDGMioYDJFKEHA8 wR/EpFQVtjIIruOVo/ECsCUIqGAyRSh8vUEeoIqDcx8Ivmr0Fndi9SfHrcGP2P8AGHubD4KDYe1+ gKrNRY/bO5k2bTrjFf487izAp490Y2SmjiroqGBjmqKnlj/jFDSTtd8zeW+Ztq5ltDcbWSBHpDIQ AyEjgVBNKEMuaVKkrVCrNk1sm+bfvluZrA/BQMpoGWo4EAmlCCuaVKkiq6WK+/mb/C7F/PX4Zdt9 AFaOm3zV4v8Avl03n6qeShG2+4dowy1+y6xspT/vUlLXs0+Dy09ORL/Da+tSMhnBAk6OuqGf+E8v ytkxu692/HTc2RjgbftRuLP1uAnoBjMvtjubbE8K7uo9wbZw+L/3FZKeCphmz6ZnKx0+BxmT6y2d jYDVxVca+691txe/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XuuJIUFmIU KCWYkAAAXJJP49+691XDSfzh/wCVJV1smPX+Y78J6WqiMomTK/JTqXDJC8D+OWKWfL5WCNXB48Zb Ve/HB9+690dnqvuHqTvTaNN2B0n2j133BsSsrKzH0m9Ort67b3/tOpr8dL4MjQQbh2pU1dI09O/o niE2uNvS4B49+690u66uosXRVmTydZS47HY6lqK7IZCuqIaSioaKkhM9XWVlXOVjiiijVnkkdgqq CSQAT7917qpveX8+T+T3sLsWg6s3F/MC+P8A/evI+Tw1O385l95bHpvHTGr/ANy3aWzqKv2xQ6ox eP73MRayVVNTMoPuvdWU9VdwdTd6bNoOxelOzuv+3dgZSerpMdvbrPeG3987UrKzHTmmyNFT5/bN RU0rT00oMVRCJdcTgpIqsCPfuvdQu5+8enPjn17me2u+ez9jdPdY7fnxVNnd/djblxW0dpYipzmU iwmGgyGdzMkVPE9VWTw00Cu4LyOqLckD37r3RR9u/wA23+VruuoipMF/MY+EVXW1FR9rTUEvyh6Y x9fUz+MSaKahyWZhmk4PDIhBIIvcED3XurAKGuospRUeTxlZS5HHZGlp67H5ChqIauirqKrhE9JW UdXAWjliljZXjkRirKQQSCD7917oOune6uofkJsLF9pdF9lbK7b63zdXmKDEb56/3FjN07XyVbt/ LTYLOUlHmcRJLA8lJW089LUIr3jljdGAZSPfuvdddkd19RdO1nXdB2r2Vsrryu7b7BwXU/V9HvDc WMwNT2B2bucSHbuw9ow5CRGr8rWiKU01FThpXCMVU2Pv3Xuvdkd19RdO1nXdB2r2Vsrryu7b7BwX U/V9HvDcWMwNT2B2bucSHbuw9ow5CRGr8rWiKU01FThpXCMVU2Pv3XuhS9+691737r3SYXemz33j L14u6tttv+DbVNvSfZAzeNO7odn1WUlwdLuqXbgk+8XHSVsM1IlaYfC0yPEH1qVHuvdKUkKCzEKF BLMSAAALkkn8e/de6rUl/nLfynYJZIZ/5jXw1hmhkeGaKX5BdbxyQyxsVkjkjevBVlIIYEXB4Pv3 Xuh06n+fHwn742f2p2D0t8rOhO1NjdGbf/vX3Ju7YXZ21N0bf6x21/C6/N/x3e+VxFTLDjqX7PFZ Kp81SyL46aZ76Y2I917oxWwt+7K7T2VtTsjrfdeA31sDfWAxe6tmbz2rlKTN7b3PtvN0i1+IzuCy 9AzwVNJUwOksE8TlXUggkH37r3QIfJf5pfE34b7fpNzfKX5D9TdE4vJxVE2Fj7D3liMJmdwxUc0V NWNtjbUkhyWT8LzwrMMfSTGPWuvTqHv3XugF+MH83H+Wp8y8niNvfHH5m9I7+3dn6yTH4DYVbuOb YPZOcrovuC1Jh+teyYMPnqqQpS1EypBjmLQoZlvEQ5917qxj37r3Sewe7Nrbnqty0W3NyYHP1uzN wNtPd9HhstQZOq2pumPEUe4X23uOmo5Hehrxj8jj677SpVJft6mnn0+KaJm917pQ+/de6Dfrrt/q zt3+/H+i3sHaPYH+jLsPcnUvYX90s7QZz+5fZ2zvD/erYW5BQO/2mVx/3EH3dFNpki8ialFx7917 oSPfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3QJ98/JH 4/8Axa2VT9kfJLujrLorYNZuCh2pRbx7W3ngdjbdrdz5Ojqchj9v0eV3DPBFLWzU9HVzx00bGRo4 JpAuiNyPde6UXUfcXVXf3Xe3O3Okew9n9r9XbwjyUu1ewNg57Hbn2juGLD5io29lJMPncU8tPULT 11JVUkrRuQssTofUpHv3Xunvfu/dldWbK3X2R2RuvAbF2BsXAZTdW8957qylJhNt7Y23hKRq/L53 O5evZIKakpoEeWeeVwqKCSQB7917qv7/AIeb/lL/APex74Y/+lCda/8A1w9+690bnvP5P/HT4ybC xPafyH7u6w6U63z2bxm2sNvrszeWD2ftXKZ/NYuqzeIw1DnM3NDTyVNTSUVXUwRK5Z44ZGUEKffu vdF32l/Nb/lh76rKTG7T/mHfCnM5Wvqo6KixFP8AJzpqLMVlXPMlNTwUuJqsxHUyNJLJHFFpiOt2 CLdiB7917o+s9ZSUtHNkKipgp6GnppKyesllRaaGkijM8tTJMx0hFQFi17Ac/T37r3VbP/Dzf8pf /vY98Mf/AEoTrX/64e/de6Mh8d/mv8RPlvU7rovi98l+kvkBV7Fgw9VvKm6j7H2xvuo2vT7gkqYs HPnY9vVE5pkq2o6padpQA5ikC30m3uvdAZX/AM3X+VriNx5LaOa/mHfDXBbjwuWyWDzWJz/yI6uw VRiMxh6iSkymMypy+ShSmmgmikikjmZSHUp+rj37r3RsumvkL0H8jNv1e7Pj53f1F3rtfH1UVFkN x9O9k7N7MwVBXTwCqgoq7LbMra2nhmeIiRYpJAxU6gLc+/de6D75TfNb4n/CTZ1Jvz5Xd+9bdGbc ya5E4Jt75+Glze6Gw7U65aLZ+06IT5bMSUpq6QVMWLoqh4vPDrVfImr3XunH4w/L/wCMPzQ6+TtL 4sd4dfd4bIWaGlrstsbOQ19Xga+oiM8OJ3XgKgRZHD1rRjX9llKSnn0+rx259+690ZH37r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdAd8kv+ZI7+/6gMb/AO72l9+690OPv3Xu v//R3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690TH5+fHSL5O/FzsvrinxmRz G5IsJlM7tHH4XKS4TO5TK0+Eq8Tl9s7fzK12OiochnMNWZTBUGSqKpY8fU1kWRFpaSNl917qr/8A lC/I/cXZ/TO4+lOyM1S5/sjobMpjYtxUaUlNQ7w693IGzWztwYvH0tXVLRU0tNLFX4rDK2vHbcyG 21qT9xUMPeDPvzyavL3My73ZJptdwq1AKKsy01jChRqFGAqSTqJ6HewXv1Nr4Dmrx/zXy/Zw/Z1K /mLfzp/g9/Lh2xuin7G7LwnYHe2MxWRl218c+vsxTZfsHMbgp4YGocPuupx6VVNteCRqqmllqs14 5BTGSelpaxo/CwT5L9rea+dZ43t4Wt7RiNVxIpCBT5opIaXFaae0kULr0svt2tLFSGbU4/CONfn6 fnn5dGe+GC9efzHfjd098utz9m5Xs/qHu/ZcW5sF0bt+CTYnVW23nOW21u3YPaeGxNbV5Hd+Sxsl RU7f3HRZ7MVGAnrcatXR4SkcBjlnyd7M8q8q6LqWP6u6Wh8STOlhoYaRgDSysAVCakcpIH49BC93 q7uqxg6EPkPz4/aKca0IqKdHp7p77+OXw86sk3/3j2V1p0F1Rt2OLGUeR3TlcTtTCLUeMtQbb2ti V0SVtdNpKUWJxdPLUztZIIHchTLSJHDGI4wERAAAAAFAFAABgADgOAHRQSWNTk9a/nS/yV+dPZe8 fkDtf+V10bj9jfDfuntip7v61+XXzT2xujrva/X2S7Tp6XP97L8efji3g3RuzE7lzVTkN+bZy2ah xdDHmcll6SugNEaQiMeb/d7k7lLXbSTfVXS1Hgw0dgeFHaoRKGhIZgxU1UNw6NbLZry8owXQh/E2 P2eZ/Ifb0aTq7+Vf1KN54LvD5mdgb9/mHfJfCyvX43tH5OvRZnYPX+UrKem/iqdEfHWivs7ZlBJU 0y1tNBSUFRVUszSNDXAOR7xW5u96+cuZmeC1l/d9q2PDhYhyOPfNQMSMjsEYIwymlehXZ7HZWtCw 8R/VuH5Dh+2vy6tCAAAVQAAAoCiwAHAAA9xCSa1OSejbrv3frXXvfuvde9+691737r3Xvfuvde9+ 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 4zDK1Lk6zKxVAWSooGYNTU1OVWnqYvLO/wB3Tz0zRqmkayppNbhu4txKVyAvo+as3xKaKNLBqqWf 6Wmn+2OS3mtcgD0bzZuKmgGkhqrIAKAAFACgAAWAA4sLey0li1Tx6L2Ysanrr3XrXXvfuvdUnfz8 e497dUfBunw+yMtU4R+4O2ds9YbqyFDM9PXPsyp2xmt35fGUtVFaSMVs2IpaWp0MPJTPPA945WUy 57PbXbX/ADNJdXQDfTRF0BGNbMFDfkCafM18upG9trCC73t55gG8CMsoP8RIWv5An9vy60aveUnU 99GE+Kvd25Pjj8iunu6dqy1f8R2HvvBZSroaOvnxhz+35axaHdG16mrp+Vp8pjpaqgqAQymOVgys OCWb5tlvvG0XG23QqkqMOFaGmGFfNTQg8QRjov3Wxh3LbprKcVWRSOFaGmCPmDQj5jr6YXvBLrE7 r3v3Xuve/de697917r3v3XumH+Xh8Qunv5lncvzu3x8laGr7V+OfTm7tt/DrYPUEO/N7bd2jU782 djsV2r3JunemG2Nm6aCsyVDlavCQ4WpmWOemCzeVDJFSPDlh7ccr2Fly3aX08YaeU/UB81UsCFoc EfpnSRXSQTjuNchuSdhtLbY7a7lQNK/6wbzBYELQ8R2HSRWhFcdxqMG/Phh8R/hPif5hnQ3ROA37 gvjRtn+X1ku9+4tjbh7J3z21Bsv5D5fc2db4k57ofM77qMpufD70pW27u+u/3H596s1cu16iCKCo SimmkqO3gidpIkVWagJAAJArQEgVNKmleFTTj0N0hijYuihS1ASAATStKnzpU09Kn162OOtF3onX GwE7HNKew02TtVd+GheKSiO81wUA3QaOSmJjaL77z+MxkqVsVNre3unOtIb+c38Eqr4vfzP+rvlz 1nuLf2xtld471x3fW1KDrnIChgx3yn2BuvFZnsLHwYSppq2grcvuWZcblNp46ppJps1vDMo1UsmF wdVSye691ubfGLvHGfI7obrTubGR0NP/AH029FUZWnxEuXqsDTbjxtRJhtzR7Yymdo8dU5HDGvp6 h8JmGoYY8lj2pchAn29VET7r3Q9+/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917q PV/8Ban/AKh5v+tZ9+691qIf8Jm/5f3wP79/k/8AQ3ZHenwo+JXc/Yub3r3xRZfsHtX45dP9g75y lHie4MxisVTV+7t2YeryEqUtNHHT0yvUkRRoqR6VUAe691m+PHUXUHwR/wCFLlB8Y/5d+Ll290R3 n8Ltx9ifN3ofY+462s6m6K3tg6rJVXXm8l2y1RNSYvIV1RS7dpIcYYlqKKLNPJStDQZNqY+690KP zix/Z385T+aTuX+VLhuxN8dV/Ab4QbN657c+fNX19khgdx9/dldhU9Lu7qXo59z42oeogxK0jLVN C0MQWemyVS6TVVJhqil917q7rrL+WR/Lu6e66Xqnr74R/F7C7CNCuPyGEreldg7ll3DTrGYTJvDN bpoa2vzc7IdMlVl6qpmccPIwA9+691r4fzIviG38ijcWM/m3/wAsXDVfXHTmD3vsTavz5+F2Ky1b B0N2F09urdKbex2/tj7W01A29k8ZlcmlKI8dBJTUxrlraSlpY4MlFkvde6Mv/wAKc997U7S/kDd1 9nbDzNLuPY/YzfE/fezNwULa6LO7U3f3VtTcG3czRufrFVUlRDPGfyrD37r3VlXYf8nb+UlvHZm4 dv7q/l1/CTb+3q7F1q5bNbS+O/UvV2exdAtM5qq+g37sPGYrKY1ok1SfdUtfC0dtesabj3Xuqv8A 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 0+y+kt2TjM0+X/0gZfq7AU8FG+4itLFTGsDiAr5JzSmummq5Pde6P57917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3XugO+SX/Mkd/f8AUBjf/d7S+/de6HH37r3X/9LeH6//AOZx 9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdfK6/4UJfJ/56/Dr+Z/8m+rNi7wz3xq 6835T43c3XuR6iyOdwuU7D6j35VVO88jXSdlV0MGXliyW4a3MR7ixmOqkoBPR0uGk+7x+3cIlGVb lse0by0T7rbpceAxaMSDUqvjvCnt1ina9NS1OkjU1Xop5oAfBYrqwaeY9K+nqOB8+HWqrU1VTWzv U1lTPVVMoUSVFTNJPPJoQRp5JZSWNlAUXPAAH09mqhVFAKD5dMmp63Bf+Ez/APMJ+elfhd8/yrfj F2J0L1od15DP997M7n74oM5vXMdSbep3xuE7c2v0n1fSvDRbhz1atRTbjxWMytXDjqY0eYqqmKcV MjRA7nvm+DkfYH365gkuFVlQLHTDODpLkntTUApbJqwABJp0tsLNr+4FurBcVz8uNPU0z1uP9Lfy tOkNm9hYr5A/I7d/Y3zq+VGPgpTS98/KvK0e+JNmVaihrKun6V6tihi2tsugGQoUyNDT4jGfc0kr vorX1MThZzh7yc482arfxforU1/SgJUkZoHk+NsGhpoVhxQ9Daz2WytKNTW/q3+QcB/Mj16sy9xZ 0Z9e9+691VH/ADBf5rnSXwe3Pg+n8hklyveW7tvUW4Nv7KoNrbs7A3ZX0O4I83QbVg2B1bstY8hv DM1ORw0scmGTK4aipqYrNk89i5q3C0+Xl32y9pb3n1W3O4l+nson0Ej+0cgrqCVBAorEhyrKWUpj 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 tiGqj3btx8OmK89FFNi8e5w1Ll8qBidpUWwqTxtW5v8Ac917rbt9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Uer/4C1P/AFDzf9az7917rRL/AJCn8iP4z/Lv+Wd8XflT2N8jvnft bcPYVf3RPuHq/qX5IN1x02P7m99bp68oUxm28Lhf4lSiopMVTVNa8OYDyVTSyB0R/GvuvdbW3wX/ AJXPwk/lzUO6l+K/T6bU3Tv/AMb9h9mbp3PujsPs/fMy1H3sz53em9KutqY456jTU1FHQfbUskyp K0BkRWHuvdVK/wAtvcdD8f8A+fd/Os+M/ZENNgN6/J6T47/Kvo3JVtBV4kdldf7a2bW0G86Lb+Ry aRx5RsNUbjpozFQPL45IMqT/AMBqkQ+691s4e/de6oX/AOFKncW1us/5RXyP2NkViy/YHyTm2F8d ultjQIKrO797J39vrHzQ4nbuNW8k9TR42kyOWCxqT/koA9bID7r3RQf56nTeV6O/4TU4P4+bwnpc nm+n+uv5e3Te6KqiLxUWQyvX/YexNkZuekMbsyxSzUkrRlZCQpFmP19+690Nu2/+EwfwHplrsf2Z 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 FFKkqpJLCxaCaaKT3XuqM/gVv75L/wAs/wDmFbX/AJOvyO7R3T8j/jT3h1bv3tD+W533vdMjle0t ubf6sjlzW7/jX2puH7cQV8m38NFVS0mQNQUhpoMfHDFSwZKlxuO917rZb9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3QHfJL/AJkjv7/qAxv/ALvaX37r3Q4+/de6/9PeH6// AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvdal3/Ctr+Wx/s1vwix/y86425/E O7Phl/EM7n/4XjvuMzur4952ZP7+46X7Cjnq6n+7tSsG4aZZKiKnpaQZiZrvL7917r5bHv3XurCv 5Xv+zgYL5s9C9k/CfrLffaXc3Wu+sLumi23szE5zIUuS27DkqfD7uxe8anDPCKfA1lDXtQZyepqI oIqSpdp5I4rsApzr/V6Tlq7s+Zpo4LWaMozOyrQsDpKlvxhhVKCuoCmellj9SLlHtVLMpriv5/l6 /Lr7IGBr63LYLDZTJ4PI7YyWSxOOyGQ21l6jD1WW29XVlGlRV4LKVe3qqtoJaikkZqeeShrainZ0 YwzSxlXbmpcRxxTvFE4lRWIVwGAcA0DAMAwDDIDAMK5AOOpMUkqCRQny9PljHVaf8wb+aX1J8C8Q aWt23ku0+zJ6za2NxHXGFn3FQVW5dy7vyaQ7b6v2tkdtYPcFRkN6ZihStyOH2/TY1oxDTxzZmuwl HX42rrJR5A9pd+58hN8jC1swzIJmXVqcKT2prQsgICM4JozABWo5Qr3DeLexbwyNb8dIxj7aHPmB 6D7Koz4MfzXdpfJHtGv+KHyG623f8S/m3hsO24Y+iO19r7v2HWdk7VjpKjInd/V9F2BQ47IVELUd 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 hSkUzMKMzgdspFWNHUUqxqShqKk9Gq9hHoNde9+691737r3Xvfuvde9+691737r3XvfuvdIjLbuw NN2l0R1Vk+w9r9dS9y9qbX2FW7pz2KO7JtrYrclX/AcNl22dS5PE1EkOW3HU4LZ1PlGqvtqDI5qg nqYqiINTyDvkTlWHmjdDa3rPHEFajqvaZAKhC3CtKtoBDFQxDLSpF3KfL8W/X5guS6RgGjAdpcCo Un1pU6QQxUMQVp1ax3J/L0270F1XjPkF8dcTvjtr5Y/GjeeG7/2lnt9Z2LcO9e3cdtDBTbd7W6Kw eJpYaHAYRN7bOqMxhqCjwWJx9EuekxeZqopqqiExyn2TlvZuX4fC2uER+p4sctSp8yAxXUe4qAGJ oOp92zZNt2eLwrCIJ8/M8aVPmQDSpyRQEmnVrnW/YW0e2uvti9p9f5qn3FsTsnaG29+bNz1JqFLm drbuw8OewGUgEgDBZ6WoikCsARexAII9n3Rt009s9ydTdDbKyHY/dXZGyeqtiYyampazde/dyYra +E+/rmMeOxNPW5eWJZ62rkHio6KDXPUSERQxySMFPuvdUWbu/nF9/fLvdu5umf5PHxS3R3rksBmJ 9rbs+W/fm3txdYfGPr7Kxwo9ZJSUud/hlfmKijEoFVQVNVQZGFwXp8RlkSSL37r3T/tj+SRm/kFl YOzv5p3ys7L+YHZkdJPNtvY22Mg3X3SXU+ZrqIxtkdo4bG09KlVWUUrFYqnHYnAY3JU6xw57A5Qo Xb3XutfX5QfCnIfyNPll0jR9Sbr31vLo3sHE7b7L6p33vOlxOf3Lgu5uqJsXSdy7STG4fHrRNNmT Fht5YzCUOPWfcm6l2tiURcdhp/fuvdbzPxt7z2x8lujOte8doiKHFdgbchyVTjYq1ckNv7joaiTD bv2rJkokjjqZMTlqatxslVCnimaAywlonRj7r3Q4e/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de6wzoZYJo1IDSRSIpN7AuhUE2/Hv3Xuqxf5NXwm7M/l1/y4fjz8O+4dxbI3Z2J1HL26+4M/ 1xW53I7Nrxv7vHcvZuJ/hFXuSgxla5ioszTQ1HmoY7TpIE1oFkb3XurQPfuvdVKfzPf5UezP5gp6 i7d2J2pur4sfNf40Zsbh+OXyu64pkn3RtRZKoVWV2PvDFCWnGZ2/XfuH7SWdWpZZJXiMlLVZOgyP uvdEKre2P+FTfS2Ox/XMvxW/l0/MfMlKbG0HyI2l2hmuqsXAEMKTbg7O663fmdsTVMr+Z2eLbFBT RgQSaINTRCT3XuhA+JP8qf5ddtfKLZHz8/nK997B+QXePT1Ycn8W/jJ01ishQfF34x5aoWCufeuJ oc3BTyZXc0NUifbV1TTSz08lJS1L5PIPDRDH+690db+cr8Iu1P5iHwB7S+K3TO4NhbY7B3ru3p7c WIy/ZeRz+J2hDT9ddsYff2Up8hX7YxuXrEeemx0sMBjoZB5GXVpW7D3XurSvfuvde9+691rmzfD7 +Zn/ACyu4fkPvv8Ali7V6E+WnxQ+SncWc+Qe5vhn3LuyHovsrqPtne6Sy9hnontOgpotuthcpPHR OlPn49VLDDDTRxSyJPkKn3Xult0B8M/5gfy6+ZHSHzu/mlR9M9PbY+L2H3Llfip8FelMyvZdFsrt PfdNUYXNdqd59pZKB6TKZzFYs00GNXATPTfdLHVU8lAtPUQ5b3Xuhx/nB/CX5T/MTbvwt3L8QMz0 LjO3/iB80+s/lriKL5G5vsDB9cbgn6zwGWhxGDyU/WuIy2TkjkyFZSPUwRLTNJTrKiVUMjI6+690 lOt6z/hRrJ2DsdO3cJ/JZpuqm3bt4dkz9dZz5v1fYEexf4tEd1/3Ip9yUkOObLfY+cY/76QU4n0G a8YYH3XuhJ67+B/bm4P5tHc38xj5G5brLL7V2Z0ltv46fBbYm0snlNy5zr7ZeTnmzPbvYW/G3Bt7 FrityZStkqqWkGGyVdEcZkaqjqJCYIZJfde6tt9+691VDuz4K9p7T/mx9dfzCvjvlessHsjtLozP 9CfPHY26q3P4fcfYmM2yaXI9F9k9frgsXW0tbuLFzwQYyvlzVVAqYmiho6J4mqqqT37r3Tz/ADPP hH2d81/+G/P9Gm49jbd/2U7+Zf8AFv5n7+/vvW52i/jnW/R/8c/vPt7aX8Dx9f5c1U/xOD7GGs+3 pm0v5aqKy6vde6Nt8xeody/IL4i/KfoTZdZhMdvHu/4494dRbTyG5qmuott0G5eyus8pszBVu4Kz GU1ZUw0MVVWxPVy09HPKsQdo4ZXARvde6D/4OfGbL/Hb4FfGX4j9vDZm+Mt1L8buvej+xo8VFUZ7 YO7Jtt7Ig2luWClp9yUdLJV4ytVJU8VbQx+SJyssQBK+/de6pZxf8rz+Z1/LE31vjJ/yZ+++jt7f Eje26c9vk/y+fmku96nZ3VuXzj09Rkcd0V2htqSTKU8M1Q+Rngiq8lj4I9VMMgmYqEkrH917pn3J Q/8ACnz5zY2fqjc+2fiN/Ke6uzkkGH372tsne695/IifblbGtNuJusKva+YzuKoZZaeWUUshfFZC GeNXgylMdM3v3Xurtf5f/wAC+jf5cXxu218bOhqTJy4LHZPKbq3hvLcklJVbz7L7B3D4/wC8O+95 5CkiiWetqFhp6aM6P26aCnh1P49be690Bnw6+EXafx5+f/8ANR+VO8dwbCynX3zk3b8V9xdWYfbe S3BVbw27T9IdT5PYO7KfftBk8bSUdO9RU1UE2POPrqwPH5PL4WVVf3XurFOyOuNi9wbB3h1b2dtb Eb2693/t3KbU3jtPPUy1eIz+38zStR5HHVsNwbOjHS6Mro1njZXVWHuvdVq/ykf5YuG/lUdZfJro vZW76fdvVHZny63r3306skNXDuPafXm7+qtmbSpNkbzMw8M2RxlfgMhAKyjcw1dN9tVeKklmkoqb 3XurYffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Sf3V iqjObY3JhKR4Y6rMYDMYqmkqGeOnjqMhjpKSF53iV2CBnBYqjEC9gTx7917qvP8Ak/8Aw27L/l+/ y5fjd8Qe4M7snc3YvTlD2VRbizvXOQzuU2ZkP73dy7i7BxEuGrdyY/FVraaHLUqVCzUEeidZUQyR qsr+690XH54/BH5a0/zC62/ma/y2d2dQY35RbT6hzXx97v6S75pcjQdVfJfpGSvk3btrEy7x2tCc nic9i8ysD080ki09QiUZkqKaPHvT5L3XuiqdzfG7+cL/ADc8Xt/oD5pdW9Gfy5vg3U7u23lvkJ19 1z3PRfI35E/IDAbRzb7hg2Xh91YTHptvD4bIVVLjGLzqtVTMpqZI63QtAPde6sG/mafAXfXy860+ DXXHRFZ1nsHE/Fb57/FT5L5fF7pqM1t/Bw9R/H6my9LkNobHotr4vIr/ABExVlHT4yjmjpqURo+u pi0Ir+691a/7917pP7qxVRnNsbkwlI8MdVmMBmMVTSVDPHTx1GQx0lJC87xK7BAzgsVRiBewJ49+ 691qxfB74bf8KTv5fvxb6r+IPSWc/kn7m6t6cg3bRbSzvaGQ+b+U35kabd2/Mp2DXy7hrdrY/FUD SLWZaoSJaagjCQrGjGR1aV/de6uw+C3/AA6x5+xf+HK/9kE+28W3v9FH+yS/7MF5/Prqv71f3/8A 9OPp0afsvsP4fzfzeX+x7917pJ/ynvhh2l8Ffjdvzp/t3ObD3Bubc/yg+RvdWPreu8rn8vg4dq9u 9i1G7dtUNZVbjxeJnXIQ00qpXRJTPEkl1inmX1n3Xuga+PH8uvuj4Q/zB+2O1/iVufrnE/y/PlgJ 9+/IH4u7o3FurF1fVPyKMNQtZ2z8a9uY3DV2Lpoc44pf47i5spQQukkiohix+Jhpfde6CDt34tfz LvhH8qO/flf/AC3v7jfLfqP5Wbkp+yPkB8Kfkd2/ujaO6MX3BR4ml27DvX459ubpqKrE4WlqcfSw 0tVjMmVpqemp6PH0tNJSU2OGI917px+H3wk+bPd3zj2x/NA/mbxdWdc9odWdWbn6w+KvxN6Z3PkN 8bb6AwvYsD0m+M/vffTaKHJ7lq6Gapx9dPjmqqefzFo6mKnpaOki917q+z37r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3XvfuvdAd8kv+ZI7+/6gMb/7vaX37r3Q4+/de6//1N4fr/8A 5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690y7i29gt3bfzu1N04bG7i2zufD5P b249v5migyWHzuCzVE+Ny+HyuPq1aKemqaeWSCeGRSjozKwIJHv3Xuvmjdkf8Jutn/Cf524LK/Lf emJ3p8H9z9wVNf11tnY+e3DDvrdPVdfn8lJjcdv+tx+Ep62nrMLS0lDSZ6i21iqpKrKZnbGDoclB U7iSpxwf5qm3eHly8m2EqLxYmMRYAqGGSTqZAABXJPbx0tTSVFqImuUW4+AkVp/xR/1enHrfL+Pn xv6B+LXXWL6v+OXVOxuo+vqCGjaDCbHw1LjosnLTUEWPp8vnsoNdXla56eGGOTJZGonqZVVTJM5F /fNzfd93vf71rzf7iS4mqf7Q/DnIVcKgrxVVUV8q9SXb28Fumi2UKvy8/tPE/aehv9lfV+tXX4kZ rraP+fv23D/MUpcx152fsf8Av/j/AOV9jO3KFKPrbfNV2v27uLN7r7K2vu+tyuTxtbvWr2sNrbY2 qizwyHGUEuKgo6eswtNTxdE/aq52mfkTb49qkjfwoUWXw8UlCjXqFFOqvEsKnjU8eo73dZlv5DMC KkkV9K4p8vs62KPlHi+vdy93fHuiwW0MXlvkntHLndmN7GocfgjuDqHoWqrDSdmx7ozdU6ViYTea 0rbaoMPCs/3mUMWSjpguBqchjQ9747vs9jyPPYbkFeS5osSVIYPkrIoAIOhhUhio0hiCzKEZRsMM 0t+skWAvE+VPMfn8q+XlkDE6JKjxyIskUiskkbqHRkcaWR1bggjgg+8ClZkYMpoRkEcQfUdD4GuD 0kNy7v2P1phaKs3RncDtDDS12P2/ho62ppMcmSzOSk+2wu2du44WkrMhWS2goMbRRSVFRKVigikk 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 H7+Zf8oe0N690/ET+Uf0Xg+y+utz9gdl9y/GX5HfIk1/W/WHXnU+5NxYx+7Ns4zr/KPQ5PI0Oyuw c/kIkiEi5Pb9BmdvY99n19LFb37r3R6+oP5HmB7B31jPkD/NM773t/MN74plmmoNq7xmm278atgL X2evwO1eqMX9vTVlFIP2MhQvBQ4DI6EqZds09Tqf37r3V6e2NrbY2Tt7D7R2XtzA7Q2pt6hhxmA2 xtfD4/AbeweNpxpp8fh8LiY4qamgjHCRQxKi/gD37r3T/wC/de6rL/m3/Cis+c/wr7A642a8uO70 6/qKXuj43blo2oYMvge6tgUdRPgabE5DIhoKSTNUU+Q261ZKrLSrXmrVfLTxsvuvdUX/APCa/wDm AZDeu7u2/iVunqiq6b2RUQbR3Z0+dx5baWA/iHa8u1sjL2T1BsLrqjqpa6LE4XB7cK4SKBZTS4nC RVubkhyebhWp917rcE9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3QHfJL/AJkjv7/qAxv/ALvaX37r3Q4+/de6/9XeH6//AOZx9/8A/Uf1p/7w 0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691Xh/M++MlR8ofiV2BtbCpnpN27UpTvbb1LtVI pdyZyPAWyGX29gqOWGaOry3jiTMbTp6lTTw7qx238jMpOPjI917onv8AKl7yyXZ/xsoeu92TY077 6Gloev8AJRYqOeHGzbWp4Hpto1uEpnxeLSPDRmlrsZtp2jeevwlFjc1Ow/i0d8BvezlEcs84PdWy 0t78GZfk9f1BlmY5oxZqFmZqCg6kHY7z6qzCt8UeD9nl5Afs4CnVnHuIejXoGO5Pjj0D8iaTA47v rpjrPuTHbYrZq/B4zsvZeB3pjaGeoaGWoUY7PwTwSQvNS0dU9PNG0RqaWjqSn3FJTSRGe0cwb7sB kfZrqW1MgAYxuVJpwNRwIqQGFGAZlBozA0mt7e4AE6B6cKiv+r7Ps9OolZV9EfGnEmqqDgNind+R emoqSmgr83vrsbPYrDz5KHAbbwtEtbn9y5Knx9NUNRYrHQVdSlNC608AijKqaNJzhz/uShzNuNx2 qCchdRCrVjRE1EKtWK6jpFSadNUstviNNMa/4fP7TTJx05UuL+Sva9eafam2sb8ftga6iKo392fS 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 A8aHIP5jI86HIBqBqE/zBOi8l/LU/mdVndvX2SbY3VnyEy2W+TPVeTo481Pitr9l4Wup9yfJ3ZdV trb1XjZcnjkrMfg+y58GtfC248hjdp7KhRqGprF9mHSzrcv6b7SwPdXWGzO0NttTLj92YkVNTj6X M4TcQwGfoKmTEbr2nVZvbc9Vj6mqw+Up6zFVstFUywGop5PHI6AMfde6E737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691jkcRRvIblY0ZyBa5CLqP1/Pv3XutZPrj/AIU07F7V2Hi+4Ngfynf5wnYn SObbKrhO5OrvibjewOus7/CM/PtStkwW7sZuGLGVKRZWmnx0+mtDRVMckDqJ43jHuvdGp+I//Chb +XR8se36L48VO4e1/i58gczmaLb+1+nfl91xL0vuvd2YyR8ONxm36/7zJYdqyrntS0OOqsnBW1U7 JDTU0sjqp917q2vv7uDBfHnonuvv7dGMy2a2z0d1J2P3DuLD4BaN87lsF1ns6t3pl8ZhkyMsFOau enopIqYTzxxmRl1ui3Ye691Q9sf/AIUMZ3s3Zu1+xOuf5Mv847fewt74LGbo2dvTaPxewm4dr7p2 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 yi5Huvda63VP/Ck/bHcOzML2jsX+UX/Ob3v1HuSgrMlt/tXrP4d0vZGw8xRY+vkx2QyOO3Rt/cP8 PqKSmlgqo6mopaqXxyQvGULK2n3XurP/AOX1/NO+JP8AMqwW9qn4+Z7eOF371dkBiu1+ke3tpVHX vcvWdfJXz46KDde055qmAgzU8kcklBXVMcL6Yp2ildYz7r3RJu9v59u0eo/lt8hviD15/Lv/AJkX yz3r8Ycv1/iu2tz/ABL6Dxnc+18A/ZezIN77Umrf4HmFq6MVdLJVRUgydPTfcS0dUIS6Qu4917pe /GX+fR8Ru/vkTt34n9mdUfLj4L/IPff2UPWHW3zv6N/0B5ftDJ15qBTYLZkwyuVhauk+30U0NfJS irmmp6SiaprZlpvfuvdXb+/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917oDvkl/wAyR39/1AY3/wB3tL7917ocffuvdf/W3fthVdKndHyAgeqp 0nSr6wmeFpollWGbZASKUxk3CsUcKx4JVgPoffuvdDl93S/8rNP/ANTo/wDivv3Xuvfd0v8Ays0/ /U6P/ivv3Xuvfd0v/KzT/wDU6P8A4r7917r33dL/AMrNP/1Oj/4r7917r33dL/ys0/8A1Oj/AOK+ /de6993S/wDKzT/9To/+K+/de6993S/8rNP/ANTo/wDivv3Xuvfd0v8Ays0//U6P/ivv3Xuvfd0v /KzT/wDU6P8A4r7917r33dL/AMrNP/1Oj/4r7917r33dL/ys0/8A1Oj/AOK+/de6993S/wDKzT/9 To/+K+/de6993S/8rNP/ANTo/wDivv3Xuvfd0v8Ays0//U6P/ivv3Xuvfd0v/KzT/wDU6P8A4r79 17r33dL/AMrNP/1Oj/4r7917r33dL/ys0/8A1Oj/AOK+/de6993S/wDKzT/9To/+K+/de6993S/8 rNP/ANTo/wDivv3Xuvfd0v8Ays0//U6P/ivv3Xuvfd0v/KzT/wDU6P8A4r7917r33dL/AMrNP/1O j/4r7917r33dL/ys0/8A1Oj/AOK+/de6993S/wDKzT/9To/+K+/de6993S/8rNP/ANTo/wDivv3X uvfd0v8Ays0//U6P/ivv3Xuvfd0v/KzT/wDU6P8A4r7917r33dL/AMrNP/1Oj/4r7917r33dL/ys 0/8A1Oj/AOK+/de6993S/wDKzT/9To/+K+/de6993S/8rNP/ANTo/wDivv3Xuvfd0v8Ays0//U6P /ivv3Xuvfd0v/KzT/wDU6P8A4r7917r33dL/AMrNP/1Oj/4r7917r33dL/ys0/8A1Oj/AOK+/de6 993S/wDKzT/9To/+K+/de6993S/8rNP/ANTo/wDivv3Xuvfd0v8Ays0//U6P/ivv3Xuvfd0v/KzT /wDU6P8A4r7917r33dL/AMrNP/1Oj/4r7917r33dL/ys0/8A1Oj/AOK+/de6993S/wDKzT/9To/+ K+/de6993S/8rNP/ANTo/wDivv3Xuvfd0v8Ays0//U6P/ivv3Xuvfd0v/KzT/wDU6P8A4r7917r3 3dL/AMrNP/1Oj/4r7917r33dL/ys0/8A1Oj/AOK+/de61E/ld21tP+U3/Ni6y3DXS1WE6R+YGVpN vVWKxGEr6nbtPg9yVeH2pW7imy1DhIMTj5dsTxUyZOkjyMtTR7W2vtWko4JFyGRlpoy92eT15w5Q nt4hW5tgZof9OgJKcQO9arU1pWvRptF79FeKx+Fu1vsPn+Rz1sqrVUrKrpU07o6hkdZUZWDC6srA 2II5BHvnubacGhjYEf0T/m6kTUPUf6vy6L38jN55raOB2NU0fYsXVOyNwdlbb2L2f2hj8Bt/cm5+ vdvb/iqdobS3TtZN2vPhaORN21e3KWuyOZwuWoqSgnqqqpohBDJVU0ie13LOzczc2Q7PzCHWOQEo KsquydzRsRRqugbQVdKOAe/+zYu3W6ntbNpralRx8yK4qPLBpXBx6cQPfXm2fix1nmshu3b25uva 7f8AmaNcbnOzN17+xO7uyMxjEy1dm6bDVW9NwVlRXJjaapyVc1BiaeWKho0laGjpoIAsa557Dy1s vLVqtntECxKopUAAkkIGOAAC+hWcKFVnGrTUk9R/cXU905eZiSf9mn7KmlammOho/wBLPVf/AD8v r/8A9DLbn/1T7PumOgg7j+aXxQ6B29FuXtnv/rHbFLWvPDgsRBuWj3NvTeFfTBHmw2wOvNqGuz+4 siBIhXG4LG1dUwIKwke/de6Afc/Y3Z3yn2Dm9rUnX1P0h0x2PtnI4DcEndeDxG5O4N47I3Vi4KTK 4wdONNPiduRZHH1VbA396KqtroP8zkNuU0utI8eOdvfiw2mWTbuVoDezKSpmz4II1qShAPiUIVlZ axupOfPoR2OwSTASXbaAc6fxeXH08wRxHWPqvbPyE6R2LtLqrZvfGyt97D2Fgtl7N2dk+8OtMxuz til2ltPbkeAeDeG/9lbp29RZ+ulFPTvHkJMFS1H+daslrppPKoN237xu9RW3h7ptayyhW70ZkBcm qkoVNEUYKhizY7gakrZeWoWasUtBUYIBx55rxP2UHp0q9ubE3Rks5hN+9x9hf6V9/wCBpshHgnx2 3KXZHWeyK3MxPR5uu6569gqslPST1FK5ohkM5m8xk4aV6ilgyEdNW1sVRFHP/uZvvPNwFu4xawKA FhUscVBozGlQWAY0VQzKhcN4UWg327a7ewXsOtvU/wCQfZjiaZpSpqK/uOOl/XTEKCxsqjkkkAD/ AF2PuiqznSoqfl1sihz1iaqpVVnepp0RFLO7SoqqFF2ZmJsABySfbotpyaCNiT/RP+breoeo/wBX 5dUGfzKP5+/8tX4o7N351Xk+xZ/kh2lltu5jBSdYfHbcKVdTjq2voq2hpzme5sPJ/DNvVNPWUrwS VGOq6rLYypEU32KuqN7mDkP2j553m9g3RIvoIY3DCS4U1NDkCA0dwRxV9COhNGIJ6Jr/AHiwgjaI nxGIpRT/AM/cB9oqQetFz57/AM//APmb/wAxdX663b3Jl+tuoctTwbbXo/4/QZfrzb+9oaiJcc0W /pcZWVWZ3HLkSI3qMbkcnUY/zm9LRQ8D3njBG8UCJMxkdVAZjQFiBliFCqCTnCgegAx0AWILEgUH p0Ivwl/4T0/Iv5B7Tg7x+Wfc3SP8ur4xUi0tfmexvktvHbuE7CqcLO4BqtvdQZDIY+qgdrgQjc1f hlm1K1MagEAuda6HT+br/KZ+KvQnxM6/7+/l67R+RO5+sul81Ntb5F/In5CZPb+05+8anfmUocLs 7d3WfTObmxO6KLDYXKJNj5Mm2zKHH1cOUoJKStyqwzVvv3XutoL/AISa/wA0nbXf3wcrPh93Tv8A wWM7e+GUmO25s+bdefoMZWbu+O+feV+vZaF8pLF9w22KiOq23PFTqUpaCPDCRtdSL+691t30VdR5 Kkp6/HVdLX0NXEs9LW0VRFVUlTC/KS09RAWR1I5DKSD7917qX7917onXyu70x/xkyPSPb+5KvHUP WuV7SwPTXcGQrslT0CbZ2f2zULtzaHYjwSMnnhwu8G27TZKokPix2HyWXyMpSKnkb37r3RFMz3h8 Svh5218muie/u0utKb4mfL/B757963weRzNJuHFS7/3rVU2zfmB8e8FtfbZqq+vqNz5PNYrfWGwe PpqjIZau3Bun7SnaOgKj3XugH6cqvk58pPjN0v0nundOyfjttzobsrbOb64+Yveu58Pk/lbvna/R PZTz9E9jbZ+NUk1Idubj3DtCkosdvao7EycLiesy9JU7SyuMr3U+691ZF0t8cvh109vyTurKdjYr vT5I1mOfD5H5N/ILszaXY/dP8IleSSowG0cnpo8Ps7DSNLI8m3diYbCYguzSfYeV3dvde6ON/pZ6 r/5+X1//AOhltz/6p9+690RPdv8ANG+OmV3rkenvi7ntr/LbuvH4+HI5PCdb9k7Iw3UexaCqrZsX TZntT5A5uoO3sbSpV09RT1FBhTmc6rxSiHCVDROq+691WNvnsXs75X/F/HfL/wCQHyWoZdtdRdpT 5fvz+Wx0fmo+vdjU3X3Ue+K7YnyW6k7N3Thsk2/OyNy4Gkpq/cWDSDI4nb25JMdQUy7ZnoMss0nu vdHfwmf+PPxB+V3Uu9Oi850rtT4m/M7aO2+md4bc6zy2xNv9bded6ddbTqMx8be0cRh9uSRY+hx2 79qwV+wq+qhjjikrKDZVFCDJUWb3XuhA+IXZ/Vnx+7P7q+EM+/NlY/ZuxqqTvv4v1LbowaYmp+Pn cO562uz/AFriq37gwmXr3eRy2Gjx8TD7Hb1dtVCtpgze691YN/pZ6r/5+X1//wChltz/AOqffuvd e/0s9V/8/L6//wDQy25/9U+/de6A/wCSlH8WPkN8fu5+ju8OwesarqPtPrXd+zOw/wCI762lQwUG 181hZqbJZuPJ1tR4qOfHqfvqWuaxppoY6hWVoww917r41GzOwt8/yu/5iVBv3p7sLY/aG6fh78i8 g21t/bC3JjNw9cduYLZO5ZsRWSY3cO35quCXC7qw/npKnwTNIlNWSxEpMhC+6919on4vfJbqb5fd C9WfIvpTctDuTr/tnZG3N74Z6esoqjI4dNwYyOvm25uOlo5JPs8pjpWkoslRSkSQVMUsTgMh9+69 0P3v3Xuve/de697917r3v3Xuve/de697917os3zA+OmM+WHxv7T6Ircwdr5TeGDp6vY29oKWKtrO ve0dpZWn3j1V2LQU0wIkmwO4sfjMqkfHk8HjJAc+2J4IbqB7a4UMkilWByCCKEH8um5oY54WgmGp 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 T/8AU6P/AIr7917r33dL/wArNP8A9To/+K+/de6993S/8rNP/wBTo/8Aivv3Xuvfd0v/ACs0/wD1 Oj/4r7917r33dL/ys0//AFOj/wCK+/de6993S/8AKzT/APU6P/ivv3Xuvfd0v/KzT/8AU6P/AIr7 917r33dL/wArNP8A9To/+K+/de6993S/8rNP/wBTo/8Aivv3Xuvfd0v/ACs0/wD1Oj/4r7917r33 dL/ys0//AFOj/wCK+/de6993S/8AKzT/APU6P/ivv3Xuvfd0v/KzT/8AU6P/AIr7917r33dL/wAr NP8A9To/+K+/de6993S/8rNP/wBTo/8Aivv3Xuvfd0v/ACs0/wD1Oj/4r7917r33dL/ys0//AFOj /wCK+/de6993S/8AKzT/APU6P/ivv3Xuvfd0v/KzT/8AU6P/AIr7917r33dL/wArNP8A9To/+K+/ de6993S/8rNP/wBTo/8Aivv3Xuvfd0v/ACs0/wD1Oj/4r7917r33dL/ys0//AFOj/wCK+/de6993 S/8AKzT/APU6P/ivv3Xuvfd0v/KzT/8AU6P/AIr7917r33dL/wArNP8A9To/+K+/de6993S/8rNP /wBTo/8Aivv3Xuvfd0v/ACs0/wD1Oj/4r7917r33dL/ys0//AFOj/wCK+/de6993S/8AKzT/APU6 P/ivv3Xuvfd0v/KzT/8AU6P/AIr7917r33dL/wArNP8A9To/+K+/de6993S/8rNP/wBTo/8Aivv3 Xuvfd0v/ACs0/wD1Oj/4r7917r33dL/ys0//AFOj/wCK+/de6993S/8AKzT/APU6P/ivv3Xuvfd0 v/KzT/8AU6P/AIr7917r33dL/wArNP8A9To/+K+/de6993S/8rNP/wBTo/8Aivv3Xuvfd0v/ACs0 /wD1Oj/4r7917r33dL/ys0//AFOj/wCK+/de6993S/8AKzT/APU6P/ivv3Xuvfd0v/KzT/8AU6P/ AIr7917r33dL/wArNP8A9To/+K+/de6993S/8rNP/wBTo/8Aivv3Xuvfd0v/ACs0/wD1Oj/4r791 7r33dL/ys0//AFOj/wCK+/de6993S/8AKzT/APU6P/ivv3Xuvfd0v/KzT/8AU6P/AIr7917r33dL /wArNP8A9To/+K+/de6993S/8rNP/wBTo/8Aivv3Xuvfd0v/ACs0/wD1Oj/4r7917r33dL/ys0// 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 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XugO+ SX/Mkd/f9QGN/wDd7S+/de6HH37r3X//194fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3XvfuvdVwfzQ/jHifkZ8Yd11ccL0m9+rcXl96bX3HjNs026tzYfHUMUOXz8 +3sKmGzVfk63FzY/G7wwmAoKZDlNwYDB0s8gpzID7r3Rav5ZXyPre8ehjszeVHQYDtrouvk693vt GmykuUOIxmLy2Q2ztuShq8lkMjla7GUlVh8xteg3DmZY6rcJwk2fWFKTJ0pfnx7vcnycpc1yFAfp 7stJGx82wZBXSik1ZZG8NBGhk8JK+GepF2e8F1aD+JMEfLy8z6ECpqaVPHo/G89o4Hf+0N0bF3TS zVu2t5bdzG1s9SU9bW4ypqMRncfJi8jHS5PGSQ1NNKYpW8VTTSpLE9pI3R1VhGljeXG33sV/aHTJ C6uppUVU1FQcEeRBwRUHB6MpFSRDE3BhQ9I3qv5W7M2L1Vi9s/IHsbGSd19f7gyfTu5MFjaOXO9j 9nbt2jgTuTD7j2h1Zsypz2br6vc+1RQbxjxdDHU1MMFWyzJG8Mqx9F+Xee9k3TlO35nvJ0gjdKuX NNLKVR6nSgIRmUSMi+GjEjVQV6je5sJ4rxrWNSxBxTz4keZ4gYBNT1J3R2B8ie1ZajF7LgpPjfsG oWspZt6ZuHA7576ykTPksS9TtLaDCt2ptlioxeYxOVzc+4JWRpaPI7bophrWGebfvEWkAa15ThMj in6kgGkHsbhnVRhJG6qCroVkiuFOOjuz5cdu67ag9Bx8/wDYIJ4HBU9V+fFD4AfHH5N5zsr5Ub57 V7O7ljzPavdPT9Ltym7c3vTS0FL0d2xmunczhOye4sbk/wC/e6Eqq7DVmRfaddudNl0CVSQ4fbEE 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 nknD4+hyj0y09V7GHLnMljzJaLc2YkBCoW1oyCrV+EkAOAVIJWo/wdCTZd7td7thPbBxQKTqRlFW r8JIAahU1K1HRnvjz/Kl+WW9e2e8/k18k8r8cvjp2f8AJ/duH3Z21h+gtsZjd2SyNDtvb7be2bRU eDrqyl25trO0SS1VXl8vLXb0fLVc7y1NU0S08FMV8zclWPNl5bz7lK3h247Y1AAOpgZNT/H3KFCg EBSNXdWnSDfuV7XmG5hmvpG0QjCAAA1NXq3xZAUAAjSRXNadFQ+BP8sn4pfJz5k/NPY/8x/ZO4e8 /mP8Je5Nv4HamC3d2Jvui6T3R8Yd+7Ex1b0n27tHpnF5Cnwwh3YmPyFZu/ELHUYxMq89NLTqrCAC DZdk27YLEbftkYjiBLeVSSeLEAFiBRQzVYqq6iSK9HG27XZbRaCysU0ICT5VJPmTSrECi1NWoBUk 56R/81jbPxa+C/z06a3D1Jldh7Mreytl1+Vzfxw6qooMjuvDblyHauwOn95Y3ZPSfW8FRlqek3xg t4Y/sPJY+jxTQ1dZ1kK2khFfXZB60k582mHe+V7m0l0h0XxIyxVQJEBI7mIC1FVJJGCamleivmzb oty2KeB6BlGtCxCgOoJHc1AKioJqME5pXoePeGHWMXQM9TR0G1q/e3U2JWNsF15kcdVba+yjLYzB bZ3tFPm8XsJpolSnpqjCSJUQ0uIgUfZ4STCMw01KMwg3l2vI4N3l/tJ1IkrxZ46KZM0qJBQlgNOs OKkg9He6FrmOLcW+OYEPXiWSgL/MOKGoFNQYVqD0M3sP9EnXvfuvde9+691737r3Xvfuvde9+690 y7a2vtrZmEottbP27gtp7cxiyrjdv7axGPwOExyVFQ9VOlBicVHFTwh5ZJJXEcYBdmY8kn2qubu6 vZTcXkjSueLOxZjThkknHl0qnuJ7mQy3LtI54sxLH9pqenr2l6S9e9+691737r3XvfuvdJTCbE2t gK1sjjsdI1cK7dVbQ1OUyeWzsuC/vzn23ZvLH7V/jk9R/CKDJ5V5MpW43F/b0ktY8lU0JnkeRja7 3vdb62isrqdmihRUVMBQqV0ghQNWmpoWqRU5yejO43TcbqBLaeUtHGqoq4A0r8IIAGqlTQtUipzk 9Kv2U9FnVbXyN75wnxi+T/SvcOwt47ep+z9t5Xc27q3bUrZOqhxcWydu4TI9j53cabVfHTU0Um2/ 7t5TO/xDPU81disDSbcoKSoi3TXCTJL2Zud0NjPZ3EbC2SjRs1aHUxwgJAArrJYKS5NC48MKZu9s 5twNpLbTIwhWjIxrQ6icLkCldRJCnUTQsNAHW8H0h3Bs/v7qXYHcewqyKr2v2Dtyiz1Ci5HDZWox NXJemze2srWbeqayiOQxNdHU4zJR01VKkVVBNEJG0X9zd1KfQqe/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917qPV/wDAWp/6h5v+tZ9+691QT/wlx/7cUfBn/wAuZ/8Agw+wffuvdWQfzBvnr0Z/Lo+M+/fk V3buXE0X8EwuWh632DJlKWl3b3H2QuOkn2x1psPFSt56yvyFSI45DDGy0sBkq6gx08Mki+691R98 Fvjd2T8Z/wDhL58hsL3FjqzB9odu/Cz54/Irdu3KxKKKTbx7q613TvDa2O+2o2fwO+CkxdXU0s7e anqJpqeZY3iMSe691bJ/JioaJP5TH8uMJR0qB/hr0BM4WCFdUs/XVBNPK2kcs7szux5LEk8n37r3 Vl08MUVNVeKKKMtTy6tCKl7Rm1wo5tf37r3Wuz/wlQjim/kf/GGKVEkil3b8jo5Y5FV45I3+QW5V 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 CjVIoo1HCpGgA/A9+691rG/CX4xfGv5Hfzl/5/v+zDfHro7vj+5vZvwL/uh/pm6m2F2h/dX+8Pxs yH8f/u3/AH3x9d9j999jRfefa6PN9vB5NXij0+691sk7D6v6z6rxkmE6w672L1xh5mgebEbC2jgN n4yZ6anWkpnloNvU9PExjiRYkJT0oAosAB7917pd+/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917oDvkl/zJHf3/UBjf8A3e0vv3Xuhx9+691/ /9DeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvda xm/aSg/lhfPTGV3gm2/8ZO8ao4Woq0ipcNsTYtBkcOsm25qmTTtzbGKiw+3dsz4uSV5MpWYzbPW+ Kp0jOU3sWqIf95OSzzXyw89mmq7te9KCrOFrRe1GdjllVS6Rp4jyPXSOjnZb76S6CyGiPg+g+fEA epNCTQAcer2veBHQ96Yqfam1qTc2T3rS7awFNvHNYfFbdzG7afD46Hc2WwGCqqqtweDyeejjFVPR 0c9dWzUlNNK0cL1E7xqrSyFrtd3b2y2TyuYUYssZYlFY4LBa6QxAAJAqaZ6sEQMXAGo4Jpmn29Pv unVeta3DfFD+bP8AAjuv5a9X/wAsmTp7a3w0+SPZFF3ptfM9jbd2r2Fm+h+xd+0klL2hi+jesEzu 1aGiSCSmx4p6XcSVmLalgiZX+7knUZmci++PLP8AVq2tuaLlkvYUKv2O2oRiiuXpRnloMLwY5AUF ugbf7DdG6ZrVaoTUZApXiKeg/wAHz6M78Bv5Ym6utu48l8wvmFvre/yJ+UGcx9PFSdhd95zFbu3/ AI2eOm00FdRbH2vWZHY+wRh0qcpRYbBbQrc1JRJXZFo901FDkExGOjj3b947Xmq1/q/ywZBak1kl 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 sm3G+RVcqR2s2nUM1APkfTDVPbSpBFYfxz+D3RHxsr67d23cbn9/dvZ2TIVO6u9O2s9V9gdtblr8 vX1eTzFbU7nzF/tXrJq2oauOPigasJEla1TMDKcWuZeeN/5oYx30miCtREmExw1ebnAPcaVFQF6g Leuat334lLp9MVcRrhflXzY4ByaVyAOjK5mqnyWUg2rj6iSnLUkeU3JWUdXDT1uOwc00lNQ0cLxy CphmycsNRFBUxR+iKnq2SaCpWnZg7bqkURvJRqodKKeDPQEk+RVAQSDxLICCuromhVY4zdSCuaKD wLcST5EKCCR5kqCCK9KKjo6TH08dJQ00NJSx6/HBTxrFEpkcyyMEUAXZ2Z2P1LEk3JJ9pZJJJnMk hLMeJP8Aq/Iegx0nd3lcu5qT5nrP7Z6Z697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3XujDfFH4lbj+X08e/tw53K7M+LFJU7gw0ddtbJ1uD7E77zOLrXwOVi2hufG vHV7c2nQ1MVbSSZ6gkiy2Tqo/Lh6jHUNPBk8rkDyJ7XI8MW9cxLliGSBlqNGSC4rxbt7SCAmoFdZ Vo5i5R5DRoo903hctRliYV7cmrZ4nGCDRdQI1EFBi/nGfyz+vPkH/LU3t1N0T1JtnD7v+PuLyXa3 Rm0Nm7boqSSpyWExE0W9NsYbFUKx/fZPM4h6uXGRVMmio3DBiK2seRqbV7nuOOONQkShVHkAAM54 D556l1ESNdKAKB5AUHRJ/wDhNv8ALzrus6xqPhnhKSh2tt7F4fI9vdDYaPOV+Zo49q7h3DXPuraO Jy24K6Wsqo8fWxVtDSVclNHLnK3C7p3Cka0NRBZzq3W1F7917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu sciCWN4zcLIjISLXAddJ+v59+691rf8AWv8Awmx6y6V2Nierelf5rf8AOw6b6s282Y/u11h1X838 JsLr3bUWfzNTuLMwYDaG2tmU9DSpVV9ZV1lT44QZp5pZpS8sju3uvdC58eP+E6PwB6V7rwfyJ7Pz 3yW+bvcO0/sZdl7r+b3dEvdsO0a6ghNPBk8dt6lx2Ix1ZKE0GNczS1sUDpHLSxQSxo6+691cj3v1 Btv5CdIdy9B7xr83i9od4dU9h9Qbqye2KigpNx47bfZe0azZmcr9v1eVpqyliroaWtlkpJKmkniW UIZIZUBRvde6og2T/wAJx9l9a7S27sDrn+br/PF2BsTaGKo8DtPZWyfnZidq7S2vg8fEIKDDbd23 gtmQUdFSQIAkNPTQpGi8KoHv3XurMfgv8Ax8HaPtKhb5mfPH5er2hJtKRqn5ufIH/TxV7AG04cnC 0PWsxxOL/haZP+J6sstpfuDS0Z9Ph9XuvdLj4BfBrqL+XJ8Xti/ErozM79z/AFr19k955XCZPsvL YTObvmqN87vrd65dMhktvY3E0rolXXzLAEokKxhVYuwLH3XujP792Hs3tHZO6+t+xNs4feew99bf y21N4bT3BRRZHCbi27nKJ8dlsRk6GcFZIZ4ZHjdT+DcEEA+/de6JrB/LW+Kc/wAFsH/Lq3Vs/J79 +NG3NqQbQwmG3Xlw26MZQY3OSbh23ksfufAQ0ElNX4qpdDQ1lNHG4WNVl8qtKJPde6q8m/kD9k7w xVD8f+7P5tPzl7k/l/YatoZcd8SM7Js3B7jz+AxbrJjuuezvkNhETLbg2pHpWBdvnE0sEUCQR0xp 3p4JU917q135W/AHoP5afCPdP8v7ctPuLrD497l2p1vsemxnTtRgdtZnae0uq924bdu08DtKbO47 K0VNTxvg6OjdZKCU/bGRUMcpSVPde6OVhsVT4PD4nCUjzSUuHxlDi6Z6h0aokp8fSpSQvO8Sopcq gLFUUE3sAOPfuvdFV+FXwv6w+CfVG5Onuptwb83Jtvc/cPavddfXdiZLb2VzcW6e391S7u3JjqOo 23jMTTrQQVMrR0MT0zTJGAJZ5mu5917o33v3Xuig/Cr4X9YfBPqjcnT3U24N+bk23ufuHtXuuvru xMlt7K5uLdPb+6pd3bkx1HUbbxmJp1oIKmVo6GJ6ZpkjAEs8zXc+690b737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3WORBLG8ZuFkRkJFrgOuk/X8+/de6KL8D/hZ1T/Lx+KvV/wAQ OksxvfO9ZdSvvd9t5XsfK4fNbyqjv7sPLdl5n+L5PAY/F0kgSvzNVHT+Khj0wLGra3VpG917oM/5 hv8ALW6A/mQ7B2Ttvtqu35sDsXqDc5310P3907uWTZXcvSu82kppqvK7J3XAkjRQVxoqSPJUpUeV YYpIpKergpaqD3XuiA9V/wAhyPPdqdadq/zEfnn8nv5lf+gjecW9ui+q+6ZcdtDpDaOdxs0k23ty bw64wlTXR7lzdGXXVka2piiqVUQ1NHJSlqc+691ZN/MY+Dm0v5jPxI7I+JG+Ow9+dXbc7Fq9n19V u/ryppYs7RVey93UW8sVHNSVwMFXTNVUMLS00tgWVHBDIvv3XupW+vgP0L238IdvfAjuWl3J2p07 gOo+vOp0zu58wB2NVt1hgaHD7T7DbdGOihEW4oZ8fT5FqyKBYXn1pJTvSyy07+691Vvmf5HHyH3z t2r6A7T/AJzXzv3z8J6nEVW3Jug48Z1dt3tDMbVqqOpxkmzd4/JrH0b5jMYZqSpNLNjavFeKWJUR wUSNY/de6thPwJ+IR+HI+AJ6L2UfiMuwP9Gy9NGlqTg12994cv8AfjIGT78Zn+KE5z+8H3X8S/iv +5T7r7//ACj37r3VQNX/ACCO0Mptyn+Nmb/m5/OvM/y84MTDgT8UK+XZUu+6nbdLjFxFJsOs+TQj GWl2vFTpHCm3mwv2yRqqx+PSpX3Xur8em+nOsfj31XsHpHpfZmG686r6w2zjNn7F2ZgIpY8ZgcBi YBBS0ySVLyTzyudU1VV1UslRUzPJUVEss8kkje691Vb81/5Hvxc+W/dFP8rtgb972+FPzKpKOSkP yc+IvYNT1lvXc0QhWCCm7BxKRy0OVj0KI6iaFKStqogsFTWywRxRp7r3RP8AIf8ACefsnv2OXa/8 wn+bz89fmP02MpQ1R6NoM5SdG9cblxmIy0GYxeL7Jw+Ers2mbcSROktciUlSFcNSyUk0ccq+690e X+Vb8Ee/f5bVB3L8VBvPrHsL4F4XfWf3v8MKkZbddN8herMLvzK/3q3j1N2hhanDfwfK0EOWrslV 0Gfp9wNVO+t5aNIq6KkxHuvdHG+N/wAO+tfjFv8A+VHZmzM7vfcm7vl73nV98dn5Detdt6sXHZ59 uUm08PtXaMW38Zjft8LjKCihgoYaw1VTy7zVUzuW9+691w+TPwj+PPy53d8aN8d27PXcW4/id3Xj u+OpK6FqOnmpN3YzFTUUWKy1VLBLPLh5qo47KVmPglhWqqsZQfcNLTRS083uvdG0ZVZWVgCrAhgf oQRYg+/de6KX8Gvhx1r8Afi/1r8TOns/vjcnW3VTbv8A7r5LsWt23kd1iDee+clv/JUlbV7TxeGo WiirsrVLTCLHxlYtCsXKlj7r3Rh9/wCzMZ2NsTe3XubqK+lw2/No7k2Zl6rFSU8OTpsZujDTYSuq MdNVxTxJOkU7tC0sMiBwCyMLqfde6B/4h/GLYfwv+NHTXxZ6wzG7s/sDo/ZtHsbauZ35XYbJbwyO KoZ5aiKp3BXbeoMZRS1BaVgzU1BAlgLIOSfde6Mf7917onPRPwj6p+PnyY+ZPyo2Xnd+ZDsH5w5n prPds4jcmUwNbtDB1/R+zKzY21f7hUGOxlJWUqVFFWucgtfXVmuRI2iMI1q/uvdHG9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdAd8 kv8AmSO/v+oDG/8Au9pffuvdDj7917r/0d4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +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 k+JxUIym4g/tX0o63cuuN/YDtPYWz+x9rfxFcBvXb2L3FjqbM46qw2ex0WTpVnkxG4sHXBajH5Oi kL0mSx1Siz0tTHLTzIksbqPde6W3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de6A75Jf8yR39/1AY3/3e0vv3Xuhx9+691//0t4fr/8A5nH3/wD9R/Wn/vDR+/de6HH3 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3WohsPqDPfyuP5vHbVRlu1941vx1+X OSwMO0di7hr6Kh6v612RPtuU9f4vZ+FhyNLRU1VhGwuXoWyM9LLLRbb2pkqnIO9RnMc3uHverk8c 0coyXFrHru7L9WOgqzKtdaCiszVUmi1VQ3cTjo52O8+lvArmiPg+lfI8aD7fy62PNy7l23svb+a3 ZvDcGE2ptXbuNqsxuDc25stQYLb+CxVFEZ67KZjM5SSKmpaaFAXlnnkVEUEswA94FW1tcXky2tpG 0srmioilmY+iqoJJ+QHUgMyoDI5AA4k4HWrz/MF/4VWfDD40f3l2B8UsTWfLjt7Hfe4yPP4yol23 0NgMvCa3HySV285lNfnPtKungd6fDUYpaunlD0+WX6+595P+79zFvOi75lcbfbmh0CjzsMeWUSoN QWLEHDID0H73mG2hrHbDxG9eC/5z/L5HrSc+X/8ANL/mQfzUt/0WyOw+w997sxW9tz4fb+xfjJ0r jc1i+v6rM7g3KMbs3bGI632uZZ89kZK6vp8dj58qa/ITyPBCJpH8a+8puVPb7lXk2EDZrVRLTumf vlbhWrnIBIrpWiipoB0E7rcbu8aszmnoMD9nQ4/Fz+R73Z2Z2z8SuuvkfuvA/Giq+Yu7aWh6Nx+9 3lOO7CwOFwG4s3v/ABtT2Ht6PKY7b+5cdW7fj2rLtStpqjO0uayePp8jiaNJlkcZ9IujB/JP4h7o +Cvx5+JX81z4P4fcXSG8Pjp8xPkp8Y+7BiN3r2nVdf8AcnU/yC3LW9T7om3XuPFJj85jq3AvLs2u qqjAwYytp8fjUq8e9RlKuGT3Xuvo4fyz9s/E/t34/dL/ADm6WG6e1t4fILrDFbjq+/e9N41vcHf0 YyjMu8etshv7O6kwtPhszFXYuu2ztWmxmCpqullWkx0KKo9+691W0d69YfydP5k/yUoNw9Ddhdi9 b/zDtuzfIv4sz/H/AKIy3cXeZ7423m6TDfJX4p7bG16SXIR4bI1WWx3YuFpK+uoMDjZa3Mnywy1D tJ7r3RpPjx0h8zu//wCYVs/+ZL271Ls34M7DwHx53p8dz0FV7qi7Z+R/yC683FuODe+xK35DZHas y7P2kdtZVZMtg8dharMZGB6vI0FdVpHOVj917q7n37r3Xvfuvde9+691737r3Xvfuvde9+6918/n /hZ3/Lohp5+nf5mXXOCZXr5sX8fvki2OpNSPURU01b0z2HlTALgmKKt23W1k3p9GFplIYqG917q4 7/hKp/Mam+a/8vDH9I79zTZPvD4Szbf6e3DLWVInyW4Ooaygmk6O3XUaiXJioKKs25IzXZ3xHnkY vUe/de62ePfuvde9+691737r3VO+SyPx7+O+U+ZHwf8AlZujZfXHxG7e637Q+RvV+4ex9zYTYmxK Lp3ujNS7d+W/UsO6M5PBT07bU3rn0z1Nd4lpcfvLD4+ij0Ywke691qgfNT/hVDsXDdCdIdLdJ7Wy XyO+YXxd7VxeWxPzOzlVLtfqDPZ/pfdGS6+xnbWC27oTO59O0NjtW0m8cRLFg4oKbcWSpqGulaOC oX3XutWjv/5SfzC/5wvyWhye+6zsX5Kd4b7hwu3ds9adV7Gkkp4MDtetyVdtbb23OvNgUix/ZYZs 1lZIKmpillhFXVz1FSzz1Er+691slfy5/wDhG18hu1J8J2D/ADFuyKf457Bk+zrn6T6ryOB3r3lm 6eRFmloM9u8LWbZ21dXFpIP41PqV4paambTJ7917rey+Ff8ALd+E38vbZ0Wz/iZ8fdjdXPJQrQ53 e8VAc92nvFbpJM+8eztwNU5vII8sYmWklrftIWJFNTwR2Qe690eL37r3Xvfuvde9+691737r3SS3 rsLY3ZOBqNq9ibL2nv7bFXLHNVbb3pt3D7pwNVLDfwy1GHzsM9O7JqbSzRki5t9ffuvdAps/4XfD nr3OU259g/E340bH3LREfZ7h2f0T1btrOUmmZKhftsthcVBUR2kjjcaZB6lU/UA+/de602P5q9Lm /wCRx/Pl+PH81vY2LqqD4ofNieq2H8p8ZgaSo+xTNVf2eI7qirqGj1B6mqpEwvYWJjZo3r8xj68W 0RTM3uvdb2OPyGPzGPoctia6jyeKydHTZHGZPHVMNbQZCgrYVqaOuoaymZo5oZo2WSKWNirKQykg g+/de6ne/de697917r3v3Xuve/de697917r3v3XuiB/zOvhFhf5hfwn7r+M1ZWx4DeO48HFujpnf Pmno6zrnvPY1QNzdU72osnRWqqVabLQQwV8lIyTPQTVcCsPMffuvdEZ+Bf8ANm7Y+Wvxe68xmx/i 32h2v85Nj/xfpb5ZbOytG3THRXRPyI6rr22f2HF3B3tuSjnxtEtbVQJmo9vbMx+5c9S0ldTeXECI +Ye690VDtHqbtvoDuLObI7n/ANHLZLtqDcnfeyJ+osFuTA9a4+HcG62PafWm24t2VNZX1Uu1sxkK Grq8jPLBHVQZ2galx+OhU4+kxo94eXPodzTf7Yfp3XbJ8pQOOST3L8gBpp59Qd7kbJ9JfLu8I7J8 P8nHnxJ7h8gBT59J73C3UX9FWpvlXv7+Wx8oMd8gds9Ybx7u2Z2nT5PZ2b6g6w2xuPce/wDfmLzd PRZTcm0dqUe26CtjpM3trJYgb72vU5Uw4utpstv6jyddjKp8FPNk57W832U3Lx23cZViaxHxuwVf CY9ncaCoJK09APWnU7chcyWr7ObG+kEbWg+JiFXwye3JoME6afIevTb3T8l/n3/Nkp8PtD5K/G7p b4kfDfD7/wBu9u9f4psjvjLfOfB7z2niMkmxt17W31S5RcLt2qgmrUaonyG1aDKwRvPTpSxu5mVT zP7sbLtcT2+yMLu5HAgEwg1HFgV1YrTQSK8T0o333C2zb0aHayLmbyIBMQ4cWqNWK00E58+jo/Lb +bT8zupfj/hNzy5joLo9MVk+p+u+xu4arC7o7PemqN9bhxnXmW7vrspUY2ixmzMVj8jkP4vkaI7E 3h4qSN4II5pJEaNTy37nWfMm8Q7PbW7IXVizu4XKqTREGvUSfIutBU1alC9snPdrve5RbbBCULqx ZnYLlRWiKNWok+RYUFTU0oRl3R/KS7KynTXZ3ye7L+bXdfzC+X+P6J7R3V0ZuLGYvq09aUG/cp1h kJNht1LhN34rdFViIKyonhjmi2nmMPh8oJpJJMPFFP4EkW/sbPdLR7C+QSQyU1KSQDQhhWhB4gef 8uhpd2dtf27Wl2muN6alNaGhBHCh4gdUD9O/JX5Udb7I+KP81b475Te+8uw9o7OwHWXzd+Pe3Hpq /D/JvrfZm4KvA73r6XauGEWMXL0eVXI5fAZCmx8ckFHXJUwyRUdPJRV0P8t7xBybzXecnXxEdrI/ iWzHAXX3BKnipqVSprqBFWLDqN9k3KLlrmK55auiEt3bXCxwBr7glT5ZIWp+IEdxYdWKfP8A+amJ /nI9OUnxx676eTEfGbdGSx+76jfO4s7112HvrL7n27RpWbSz8u5eoctntsbExmCyNTHV5DHUO859 85lk/gT4fbmLqczmKaQOZecdl5as3kupFeWnbEDVnrXyzjGTwFRUgEHoYb5zJtmyW7PcOGkp2xg9 zVr5enqeAxWlQehJ2fjM9hNpbXwu6dzS713PiNuYTF7l3jNiqHAzbsz+PxkVJmNzy4PF/wCTUTV9 QklWaSn/AGoTJ44/So94b3k0Vxdy3EEfhI7sypXVoBJIXUQCdIxUippnrGm5kinuJJYU8NXYkLWu kE1C1oK04Vp0EW5uy89sjM5zYe0+q96dg7wqFrN1bRocTTZHG7Lnw+dlNVUZDeXbm5KSn29iHXNv kYZMPTV2QyyUSRVdPjZ4pFiQ9jsLfcbeHcLq5itoVVYnJ7pNSY7IVOt+woS1FWpNWwSTZLOG9hjv LidII1AjauXqmO2JTqft0EmirUmpxUls7l37gdvVmN298n+0Mnund+74qmPZHwt+LGM3jn93ditP R5RqPCPhdpId77x+7gjlpGklTC7fqHj8VbjSfWRNsG1X24SBOTLEkg5vLkA6TUZQUMaaTX4RJIAc kdHu0bfc3jBeWbU4ObmcA0OMqKFFof4Q70OadDnW9UfMbrXYG1fkH2bsTpX4F/GrYNbCmwPiz2Bu HD1fyj+RmGzFc2ArMDhuu9gM+G2xU0WNyce5sTtLGtls7V5XHxYieGhirpZYx9N7V+HsN5c7jcNd 38iAhmICxspBrqc1oACHYn+zrpStARdLyD4e03M99Mbi7dQQxICoVINdTGtAKhjX4K6VrQEz6Oki LJGyyRyKro6MrI6Mt1ZWHBBHII947srIxRxQjBBwQR5HqGGUqSrChGCD5dcfbfTfXvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+690DPVvZHVHQn80f49fIH5b5qh2H8cNndF9jbD6X7T3LW 4uPYWw/lp2llGpMnk97zrOKjBUcmwsZlqBdyZSm/hUMlYtPLW0MktqvIj2TudtW1u7RSPq3fURpN fCVVC93A9xY6a14mlM9TR7YXFisFxbg/4wzajg/2YAA7uHxFsVrxNKZ6uD/mc9tYTccPxm672tns RlcLuDI7r+QuU3FipqPN4Ku2Ps3abbI21Tx5yimMMCZWv3dFlsfWq7JUQ4esjQsnkIEXuxvDWnL5 2q2o0l4ypQEFwC2odlCSr6HUMCCGUAVqaHXuDuTW2zmwhoXuSq0BBYAmo7aEkNpYAih1AAVzQ0/8 trYNdsX4fdX1uUhrqXK9qS7s71q8fkkjhyGGo+6t11nY22Nu5GmgGiKqxmGyGOx1Yilh9xBK2pix Yjzl3b22rY7TbXOowxIpNCMgZwcjPr+wcOhZs1kdv2m3sWNTFGqk0pkDODnj/qHRUP55fxCk+S3w 3yHZWzdv0uZ7t+JeWPfPWuvFS5moyOC2+IqrtTaT4WkH3GWgqcPTfxiHbsLKMvksVjKGU+GVwTro z6Lb/wAJ+flFgd7dN5ToCjytZVYTb9EnYnU9PX1BzFVjtm53J1GPzGArM9jMZSUc81Lkaaqx2Syt fW1GS3HvPF9h5VL4+liZfde62L/fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+690B3yS/5kjv7/qAxv/u9pffuvdDj7917r//T3h+v/wDmcff/AP1H9af+8NH7917ocffu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdaZX/Csf+Y9sD407f6Y+N9D03u/cvyC 3Ph6TtnYvaGXklxPUeB2U+6qikzGEhrcZWrV5XLw5rbeEq8nijTwQ/YSQU81VPR5OuopKFFdSrgE EUIOQQeII8wadbrTh1oq/In+YP8AzGP5i0eI2V3J3N293dh9kbXbJU/X23qWqh2vj8JsfCVL5XfW f2hsynhpJp6PHPUyZbcORgeYwB5aypIDP7Dexclcr8sPJLs1nHC8pLM4FXOo6qajUhQcqoIVeCgD HSq4vrq6AE7lgOA8vTh6+p8/Po+fwt/kX5jthOxd/fKnt+h6o616A270F2N8itj9dRNn+6erupe8 87m8Dlt6bsgzVGcdhpdk0FHht87iop4qoTbZr1q6adZkdEE/STq8DZHwe7X+C/Yx+I/Vnwp+Tezf mDP82vhRu/qPvz4xZPurN/Bj5G/FbY+f27ld11nbmcy+dkxGIko8zgs1verj3fLWZTD5aahix2Ri x9HAR7r3W2Lvv4F9Qdz9g/IT4n/JLoqLuT4c97bgovmN1u9V/H8Njen/AJAxbhp8d3ftfAb02ZU4 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 zpcCtGg0xgfLuDFgRTUCQDkHHUobb7bQ2VJnvZVmFe6KiD7MhiQfME0PDpO9HfyP6jrWgo+pUg6J 6u6Elq1o+wR1em7d3di9ubGkzmS3Fm9iV9VvzHUz4aHLVOWyEdRXVWYzs9HSVtdBjhTVc1PkaM1h 9u7i45iXeN/v5L6OIh41bsIcBQCVSigdoJKaCSilq1NF8fJk029Dct3u3u0jOpFPYQwCgEhe0fCD VNJJVa1qabFsMMVPFFBBFHBBBGkMMMKLHDFDGoSKKKJAAqqAAqgWA4HuUuh91Vn/ADFf5rnxM+C/ WPaFHunvTbVF3xjtpZei2jsDalDieyd5bc33msFMdgVe+NqSZPF47E009WYpqSPdWdw0GS0NS0tU 08iKdEgCp60TTrRB+D+9/n18aO3ej/kftroXau2Nl0vam2NxS7731VY3qTbcu0twiDI9xYjA9c7h xR3FgcU23xXUtDU4/aENJtvaw3ZUUlRk3y9dlVJbbmXYr3czs9pcrLcqCSiVagFa1YAoKUoatgkA 5YVK4d82m5vjttvOskygkqtWoBxqwBUU4GpwSBxIr9OfZW78L2Bs7au+ttvWyYDeG3sPubDNksbX 4bJjGZzHx5KjTJ4bKxxVVHUrHIq1FJVRJNDIGilRJFZQd9GvSo9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+690B3yS/wCZI7+/6gMb/wC72l9+690OPv3Xuv/U3h+v/wDmcff/ AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvda53/CnD+W9 /s/X8ubdu8Nj4L+Kd/8AxD/jfefV32sHlyue2nQ4xf8ATL17SeoFv4lhqZMnTQRo8s9fi6GCMDyt f3XutA3+Q/uPpnsX5E71+BXfu4K3rTaXzt2jP1P1j35tT7PH9hdHfIk4yvxnV+VwuZm0tUYjckeS yO1cztyVxS5OauxrymGehpaum917r6PXwU/l2fJ7Y/eXyL+Tf8w7ufo75Bdsd9/HbqT4q5rbvTHW WX2X1xufrPq9csmS3b2lQbsmqHy+49x/xMjICmpqWgp4zUU9PAaaSCGl917qzr439V7i6O6P646d 3Pv6u7QrOssEdk4jfOWopaPPZvZm3q6bG9epueSepq5KzL0mBjxtFl8o82rIVkM9cyRGoMSe690N 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 JWbsq900tMWpcIzjNrbr6Lc7GK/gIKyqCCK0+eksqllrXS2kBlowwR1lHZXUV9ax3cRqriopWn5E hSRXg1AGFGGCOtgv2t6Vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdAd8kv+ ZI7+/wCoDG/+72l9+690OPv3Xuv/1d4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3XEgMCrAMGBDKQCCCLEEH8e/de6+OZ/Pe+AGb/AJWn8zLf u2OuY67a/Ve+cvSfIn4x5zGVEsE2C2pn87LkYMDi6w1dVVJPtXOU9ZiYpqiVZ5EpYKsoqzx3917r 6fv8n7+YDg/5l/wD6O+T0FTQLv8ArcOdhd7YLHiGKPbPeWx4Icbv2jFFB6aanyLPT5/GU9yUx2Qo 9R1lre691Zx7917r3v3Xuve/de697917psx2ZxGYbILicrjcocTkqjDZQY6upa44zMUapJV4rICm ZvDUxLJG0kElnUMpZRcX917ojH8wYdnHYHSUGwuyNzdabZ3B8neoOuO3Mrs6GP8AvHXbP7lq6vpv ZVPSZLXHLT01Nv3P7OyOUjgkRq3H01Vj3kjjq3dfde6It/LR3dR/HDtH/ZZMriI9j7d72qN+V+G2 YK+uyeN6/wDl/wBI0cVL3xsHGZer/Zmj3rtOLHbzoocVFFj3zeA7BqaRVhaONPde6O38gcpRdr/N T4YdC4GA5bIdGbk3j81O4Z4ZD9ps7ZVH1HvH479N4nNSwukkFdufdO7KvJYOO5FTTbVzYcGOJlf3 XutLX5EUVV/wnU/4UbbP7+2/C23Pgx87arJ5LdVDTFaLbWB2F2puenpe59vhCY4IzsTdpod30NPC irDipaGhRwJZvfuvdfRNhmiqIop4JY54J40mhmhdZIZYZFDxSxSoSGVgQVYGxHI9+6918u/+aL0T 2t/JP/nv7L7Y6K3JS9T9B/Jru7rf5GbDzFRSQU+wsRh63tijyXcewckTTVK0FNhMlJk6acY2JZ4d tZZKIH7XIVVNN7r3X1EY5ElRJI3V0dVdHRgyOjC6srDggjkEe/de6ye/de6Kn84vidsX5z/Ervz4 m9jeODbXdvXeZ2lHmGoochNtTc2lcnsne9BST+h6rB5mnoMtSqxAMtOgJsT7917r43vx/wDjp1v1 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 2BsHfG/KmjlyFPsjZ25931GPglSCavh2zhJ83LQwzyBlVpVgMauykKTcg2t7De0WD7rulvtiMENx IkYYioBdgtSPOleibb7M7hfw2KNpMzqgJyBqIFafKvRQeiI/5rHy36t2z8huivgPvPM9O9o01dlO utwf7OZ8WumKDObGjqZBgNz7b2f2v1zubcUdRVq0kDZHLyrR1hggraHHw0M6yVOTdh7Q8q29okV8 rzygd762UMcVooNFHpTNOJ6nK09ueX4bdEulaWQDubUy1PyANAPSmfU9Kf4wd5d2b/318hukfkP0 bVdEdu/GfdG1No702tl9+4rfe5Er9446t3LiKfPV22MLisJNKuGTFVseYwMk2OysdYtbRxUVO8dO Ii9x+SbTlK5hnsJCYbovpjIzHo0fjJJauvzAIpxNcR1zpyvb8uzRS2jkxzl6IRlNOn8VTWur08uO cZ92dp7o+GPyk6o+Ue0cJU5rFVGeoMbunGUdRFDUZWkkjlxWc2xHNV0NaqvPTVUsmIiHho8TR5Lf 246yQT+KaORvZvf4rnbZdhmIEsJ1r6uhAGc1YpQLw7U0itAB0NPbTd0nspNpkoJIjqHqymg9akrQ LwwukcAOt0bZW8dtdibO2nv/AGblYc5tHfG28Hu/a2ap0nigy+3dyYyLM4XJQxVCpIqz000cgWRF YXsygggTX1KHSo9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdAd8kv+ZI7+/wCo DG/+72l9+690OPv3Xuv/1t4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvdazv/Cpz+XZJ82v5c+a7Z2NhEyPdnwyqsz3RthoUJyGX6rbG LD3XtWnaarpaZFGPpqTcJlmSaT/cQYKePyVJv7r3Wq7/AMJB/wCYtD8afmtub4Y9h51qHqv5oUuP o9lmuq9GLwHyI2bTTzbOEKzHxwHcuNkrcHIYwHqa1MPCdQRdPuvdfUE9+691737r3QfbN7Y6s7Ey +7tv9f8AZewN9Z7r/IU+J35hNnby27ufL7IytW88VLjN3Y3C1M82NqJWpapY4axI3YwygAmN7e69 0UL+ZnNuag+J2bzW3+xd3dbYrB9s/HOu7Kr9kz42jzu5ul6rv7beG7l2NDkq6irpaYZTbVXk4Vej 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 hTQVycih6iznzmGDfL5LeyIeC3rRgCNTNTVx4qNIoaDz4jPTR2vsak7E2BubalRicLm5cjichFQ4 rcfkj2/laqeglpJMBuOenhnnXE5aCWbEZtKeMyTY2qq6deJiCDuWd7m5e3uDdIiQEYB6VyhNGBAK 6sZpUAkCvQb2LdJNn3WG/Q0CkBuOUPxAgEVxmlckDo+/8jT5hbE3vsfe3wnrt/JmO3Pj3/EN10u2 txzYzHdhjr3c+cTJ11RuHbySrWNWUdTmMVkdw1Ax1HQY3J559r0SSnb9RM2a9tcR3cCXUBDJIAwI IOD8wSP2EjrKGCaO4hWeI1VwCCCDx+YJH7Cer/Pajp3r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917rg7oil3ZUUWuzsFUXPFy ePr7917qLQZHH5SmjrcZXUeRo5heGqoKmGrppQCQTFPTsyNyCOD7917qb7917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XuoEOSx9RV1dBT19FPX0CwtW0MN VBLV0a1IJp3qqZGLxh9LaC6jVY2vb37r3U/37r3UVKulknlpI6mneqgSOSemSZHnhjmuIZJYVOpV YqwUkAGxt9D7917qV7917rFLNFTxvLPLHDDGpeSWV1jjjQfVnkcgAD+pPv3XuouOyWOy9JHX4nIU WToZmkEVbj6qCtpJTE5ikEdRTMyMVYFWseCCDyPfuvdT/fuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3XvfuvdAd8kv8AmSO/v+oDG/8Au9pffuvdDj7917r/194fr/8A 5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv dYKingq4J6SrghqqSqhlp6mmqIknp6innQxTQTwygq6OpKsrAggkEW9+6918bv8AnYfCHc/8qL+a N2HtDq+bNbM2Y+6sD8j/AIs7poqmSnyOI2hnc0dx7YkwVfPWVla0u185S1uCWvqmjkmqca86xhGU n3Xuvp6/yl/5ovSH8zH4vdS792tv/aFV8gY+odnbi+QvUeNqUptx9e71krazZW6Kubb0hM0OIrc9 h8pJhpzcS0hgc6TIB7917oaP5nWKy+R/l+/LTIYLJ5rG5XYnTO5+3qWnwOYqsDVboHSaJ2/UdeZD KUcsDx4zdEWDfbmYXyqslBXVMT3R2B917qr3adMP5f8A826os1LiNmY/c1JtbsuuqIIaVt6fDr5E b2psF0h2XmswyzZLM1/TfZ1Rj9u5LPZ6sIiw+8s/PqWkxaGP3XurIvnBnKftXOdKfCPascOd3r3f 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 ySxPV0jVW7qnEy0VRHHOuJy1M2lpf5c9oNxvKXG+t4CfwD4q9w7vWjKNQBUMjho5ainUkbJ7cXlz Sbdj4Q/hHGvcM/YQKgUDKwZJOjE99/yweu9h9E1W++l6LefYXyU6rqqfftP2DvjNVO5uxe0tvYzG DHdl9U47G4qTD4TGwbiw6Sz47b+EoMZhDuSlw2Uq6N5qPy+5T3fkLZv6sXGz7ZF4eoagRUksmooT RWZiuqnaPEkCqjucnoe7jyltv7hm26xj0VGoEZJZalSaKSxFaYGtwFVmPVFXX9Ttb4rfMnrD5h9R YfFRU3Z24sLmt9ZjZ2Oo2g7Kwm7kxeyJqWtr6ObBYapmq/vqSg29LnMxPTwNuzcm8sij0+z6IwEX tPzBNcWUnLe4nTPZEqoY50gkactUlaEaUWiqlWNWHRT7fbvJLavsl6aS2p0gE5oK9uWqStCKKtFC 1Jz1uubY3JgN57b2/vDamXoNwbW3VhMVuXbWexVSlZi83gM7QR5TD5fG1cRKy09TTyxzQyKbMjAj g+5h6kjp99+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691wdFdGRxdXVkYXIurCxF/r9PfuvdaN/837+RL/Lh+Lkv8tObo/rHsTZr/JT +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 fuKHJ19ZiqiHx1FDHUwzQtTVUCNF7r3ST2z/AMJzfhJR9T9QfIP+Wl8hu8Pjz8pqXE7O7M63+dO3 e5N99pyd00mWoIci2T7V2Tncn/AMthtxY6olFRS4eixsTLOBNHUUvmoqj3XuruPmf8udq/y/fhd2 v8ru9KpN10nSPXlBk87FtrE1+3ot+79yE9JtXb2FwmKR81PioM3n6ykpkaSWtXHwzmaeWaKnkkPu vda+fx6/lBd+fzddrbR+Z387zu7tvNUHZ9M/YPTv8vXqTeO4Op+jOkdgbrp2rNo0+9KHEyLkJc+2 Kq1gnEE8GQig8ceUyNdVtUxQ+690Nfav/CbPpzpemftr+UL3n3b/AC7vk7tIwZXZjYnt/szsXo/f EuKq1zUGxe1drdgZDM5GbEZCrhjjq2WsqacRSTipxmShdqZvde6PD/Jp/mL76+d3S/auw/kZtSk6 2+bnw07SyPx7+W3XlKKWOCHe2EaekxO/8XT45pKVKDOtQ5GOM0spp3qqGtelVKNqYe/de6IV27/N SoPjr/wpU2x8TNz5VYul+/PiP8fPj1uquLSzUO0PktV77332n0XNkZKamqDBLlqLccuESnMlOrjI xVlQ7w0cfj917raA9+691rOfzT/5ssvRv81z+VD8DussnPUS7p+TfXGY+TVTisg8VJi8X3pRZTpH pvrrcFTj62NVlq2zOS3RUYnI058sdJiaqASHge691sx+/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3XugO+SX/Mkd/f9QGN/wDd7S+/de6HH37r3X//0N4fr/8A5nH3/wD9R/Wn/vDR+/de6HH3 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691q6/8ACrL+XB/s5f8A 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 cuYzWRmWlxm39u44aqrJZKrldIaPG4+GapqJGWOGJ3YKU9zdW9nEZrlwigE1PyBY0HEmgJoKmgOO mpp4beMyzsFUVNT8gSaepoCaDOOtTvvPYuyO84+9sfsjbGfi6h3LvfObt6Ow/YmJbY+4/wC7u99p R1O89oVdHkxlMpgMHl6jL7o2zEJsfjstjtv5CTGJjaF6SGefGHduYdo2Xntd55dlDRE6ZQo7CK0O nw9AZAApVENGCLrcs7hYJ3Dedu2vmwbnsz1jJ0yafgIrTGjSCoAUhVNCEXUxZmAtW/kofJLOb46d 3L8c+y9z1Wd7H6XzGRnwWV3LNLQ7w3lsLLvS5589lsLncrW5QV1sziNxZakShoqDb8e5sXtenhWT ETKMnbS6hvbZLyAgq4qKFTT1BKllqpqDQkAgivU6288d1AtxEaqwrxB+0VUkVBwaE5Bz1d/7U9Pd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691r4/wDCgH/ui1/43u/l5/8Ay2+/de6uV+VH/ZMPyO/8QN2//wC++yPv3XutWf8AlC/y yvl72x/LQ+G/ZGyP5xXzQ6N2nvHp3F5vA9RbB231RV7N2Bj6nJ1Yi29t2pz1FNWPTxWJUzyk3Y2s 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 pRWhqkf37r3VY/8ALqqqDc3/AAoK/nq7m6ydG6ww+0/hdszsCTGyxx4Wt71xnVsVBl5Y6CO2iqpj j8xRV0pRDJVxVLnysxkPuvdF+2l8GOv/AOad3p/wo4yOabby5TenyK6H+NPQvZNTt/Gvnul+/PhJ 0BQwUO88Dudfua2AUu5clRR5OKlSKSSkjqabyMlU8MPuvdWe/DD+aJt3cn8r/d/y5+WEr7C7Q+G+ E7G6t+bu1a80ONzm3PkJ8e4/4Bvrb9NT18WMojkNy1K0FbiKKn0wGfKU9DFIzoffuvdUUfI/oTsr rj+SL3r/ADUe/wDCwH5ud3/L34jfzO91Q5SDIVk3Wm3dpfITbmH+PnTOMNbJX1NJQbV2Jl6iOOkZ Wko5MhW0cgMcdx7r3W7HS1VPXUtNW0c8VTSVlPFVUtRBIssNRTVEYlgmhlQlWV1IZWBIINx7917q V7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3XugO+SX/Mkd/f9QGN/wDd7S+/de6HH37r3X//0d4f r/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691AyeMx+ax2Qw+XoaPKYjLUNXjMpjMhTxVlBkcdXwNS1tDW0lQGjlhmido5Y3UqykqQ QT7917r4zv8ANv8AhPvv+UJ/M83115sGfKbe21tje2C+QHxU3hIjTyP1vls825OvpoKmvjCVdRt+ vpajAV7vGUlqsdMxUxuL+6919Nv+SNuz4ab+/l3dQ/KT407D271VjOzOvcIO6qjK7q3HuzcW1N39 Q4x9mbh683F2N2VkMlmztzZ70dVQ7Tx9dkFosdhPtvsKelpJVT37r3QldVfzXfiX8gdxbB2XLs/v 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 rdTfHt9i7gpck1Rk89Jl+ulWbIiqpitOKap9Edta+o+/de6s+9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3VKv8574990/IH/hq r/Qz13n+wh0t/OQ+E/ffan8CSlf+5PTvXv8AeX++vYGZ+5li00GO+7pvuGj1OPIulD7917q0b5E4 LMbp+P3em2dvY+oy24Nx9OdnYHB4qkUNVZPMZfZVdj8Zj6ZGIBkmmkSNASLkj37r3Ws5/Lm+an8w n4UfB340/FLdv8kX5y703H0X1rj9h5bdW3dydQUeEztTQVtRP/EMdSZPIieON1lX0Si4IIuRYn3X urzPg98vu9PlU3Zw7p+BvyA+Eo2IuzDttu88tsnKDsw7nOVGYXa42dU1Gg4b+H0v3v3GnV99B472 e3uvdFl/kb9C9xfHT4idnbG7v6/z/W27sv8AM75a9gYzA7jhggrq3Zu+u1qnO7S3DClPJIv29dSS JPCSwbSfUFNx7917oVv5r38sDqL+aV8aqzqTecw2X25smpqt4fHTvLGLVQbp6d7KWKPRkKKtxzxz yYvJrDFR5qg1MksQjqEQVtHRTwe690Sj4Q9b/Mn+W1/IE271DgejN374+bHSWyvkTsnYPVGzKPBb qyWQ7K3T8j93U/Xe8KdJatMbV4SCnydDuudpK1FnxkbIjGeWONvde6Pj/KX+ETfAH4L9PdF7ikhy nceUpaztf5I7v1UlTkd8fIfswpn+y85l8vR8ZGSkmMODpcg5Mk9FQUrys0mpj7r3Q0fPX4j7P+df xB74+K29DBTUfbWxMjitv5yZ66I7R37jWTO9d7zjkxjxVP8AuJzdLQV0kcMimaON4GvHK6n3Xuqt 48P82/kp/wAJ/PkB0f330T2Vg/nDT/EDu74053Ym4hRV25O3N/7Y2HVbN2fvzbmaSvrKfKDdtIcf kJa1a5ozkJquEORFrb3XurSv5f8AsjdnWnwO+E3XG/cDX7W3z1/8Rvjdsjem2MrGsWU25u3anTeF wO48DkokLBaijrKeanmUMQHQi59+691Rr/wop/kT0/8AMd6xyvyP+MOOh2783dhbUpsFkMdQVgw+ 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 9+691737r3Xvfuvde9+691737r3Xvfuvde9+690B3yS/5kjv7/qAxv8A7vaX37r3Q4+/de6//9Le H6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691qdf8K2/wCXNP8AK74KYz5V9d7eOT7i+FdXld1ZZMbQy1GX3B0FufwQdlUH jx9LNPU/wOeCg3BGJZY4aWjhys1w0hDe691r3/8ACTL5x4eDffyG/lLd1bjqqHqD5v7F3zVdVzNW Cn/u93C+wp9u77wWJkmKxwy7n2rG0iSSMb1mGoqeFDLWHV7r3VpnyR/mO7LwH8pzsj+V18q8H/oH +a/xKk2B8Vm3nlM9tTbexMHvD4zSbb3l8cvljsXHzVM+8szR5/H43A7ixOG2XtHLZKeoeaKKmgxe rIw+691Uv89f+FN3avcPYfxg7z+PXWVL8Tvkz0J1DuXrfsDtXNJgt+753lW9ybMw69tbMwHUNdS1 OGo9vYfO0kOZ27PuvKS1JmjjkFDDKtbSv7r3RBvib/Ki/m3fziuzsr8ito7F3ht7b3aO7G3Xu35q fJfcVZgTuGoroEhbMYLec9FDmdwQwxRSUlMNj4I0kaBKOqeNI0Ke691u2fy3f+Eqv8vj4U/wHf3f GO/2dfvjHfbVv8e7YwNHS9ObbysVpNe0Ok/LV0NR42/TUblqco+pVmgSkb0j3XutnDH4/H4fH0OJ xNDR4zFYyjpsdjMZjqaGioMfQUUK01HQ0NHTKscMMMarHFFGoVVAVQAAPfuvdTvfuvdBd2/0r1T3 9sms667k2Jt/sHZ1XWUWUTEZ+lMrYzOYqX7jC7l29kqdo6vF5agm/fx2Wx1RBWUkoEtNPFIAw917 qubv/bdH8Gus8t2Puj+bB2d8cOmcNS/a4+H5WVPSXe+ExMsAieLGbY3v2lho+x9xZOaKN44aTKbw zVbUSSftJJJZW917rR//AJoX8+fuv5XS1Xx9/lx/J/8AmP8Abeax1ZUbjzvcOxqPZXxwwGQ2ltHG VOQ3Z/o46d+Ou0Mbv+bC1EGitr8rvPdoalgpnjbFxxSTTv7r3XL+Un/Ks7l/4UVvnPlP8+P5jfZO /di9Ibyg6sy/V8e4s7vXviliiwVFmaOKirt9xPgNp4jLQSmSnylBj8oa6pp60TQR1Uc0q+691dj/ ADx/+E8Pw52L/Ke3Vl/gh8eNu9c9t/EJpO7jnsPBX7i7M7d6+xVAabuPBb83zm5KvLZUw4vybloo ZZnSCoxwpaCGmhqpE9+691bB/wAJ2/5jE/8AMZ/lt9Ybr3rmv4t330PJH0F3tLVVcdRl85uPZmKp ztTsWvDN5nbcmDloa+rqXjRHyQyUUQKwX9+691ev7917r3v3XutJj/hTP0vv/wCCny0+FH8974zY WZN5dS9hbW6s+RdFjw1NQ7nxdPTzw7Hqd0z0YMqUmfwUmb2Jma11IEEuJp0ZZDEG917rcN6H7p2D 8juluqe/OrMumd667k2BtTsjZuTRoi82A3fhoc1QRVsUTN4aqFZvBV07HXDOkkUgDowHuvdC1791 7r3v3Xuve/de697917oC/kJ8m/j18T+vsj2r8k+5eu+k+v8AGRzNNuXsPc+N29TVk8MYf+G4SmrH FRka6S6rBj8fDNUzOypFE7sqn3XutJn+Y/8A8LNcBiXznW38sbqddz1SNPQH5L994avx+37AmM5D rjpmOSnr6kMjCWlr9zVNGY5F0z4WdDc+691qB5zdX8zn+dD8jKeDI1nf3zY7zyTSNjsLj6ery+B2 JichUgTvjsJjUpdtbMwQlAM0iRY/Hxt65WViWPuvdbX38uP/AIRj5uulwvY/8zftuPB0KSQ1q/Gz oHMQ1+YqlRvItD2J3NPE9LSqWUx1NBtqkqWkicNDmqeUWHuvdX6/E3qXY2zehuwcn1vmug/5QnwV 6e7A7N6w7N2f0xUbbx3yWzmZ6b3lXdd7nqvk/wDLLuCijp9tSTzUhmhbE0mTzE9BVUWQx2940np2 PuvdGo6Gz1K2HzWF/lifEvF7L2nvLIxV28Pmp8ntv742jtfsnIRQCCPsJMduqZO3+68oFI8OY3HW 4bG5KmKy0W8J0CK3uvdDvtv4L9dw5ug7t+YvZWc+XnaWyZH3Zi9294xYPC9GdO1mMheplzvTvx5x nj2dtdqGJWMW4q6DI7iSFbVW4KkAt7917qL/ALPbUd2ZGp238EOqMl8pfDNUUNb8gK/NP1p8Mtu1 cLmCYxd9VlHX1G83jbnw9aYLcUAdWgra3HP61917pn3P/L1h+SmNyS/P3t/dfyYos5ia3HP0VtM5 bpP4nbUevp5KdqrD9S7XyE+V3HWwJJenyPYO5c/4KhErMbTYuYIsfuvdEk72+JeX/mf/AMr/AOTv 8uLvrJrmPlV8aMtU9U4nsrckaQ1m4O1+ssFTb3+LfyNlrNIVYt+7VrsJU7nmo18cFRkdw4mIl6OQ D3Xuvm8/yj/m/vr+Ul/Mu657X3tQ57bO3trbyzXRXyo2LVU1TDlU61zObTbfZeIyeIj/AHJK/btd SwZylo7gtX4yCJiFZwfde6+zxjMnjs1jcdmcRXUuTxOWoaTJ4vJUM8dTRZDHV9OtVRV1HUxEpJFL E6yRupIZSCDY+/de6n+/de697917r3v3Xuve/de697917r3v3Xuq3P5o/wAcsz3t8aKrd3XO3ZNw d8/GvcVH8gOk6Gg+0p81uPL7Toaii3/1dj6+airpEG9Np1ec2yEjiH+U1dLPqV6eN0Jd/wBnh37Z 59qn4SqQDxo3FWAqASpoVrgMAfLot3jbYt222Wwm4SKQPOh8jSoFQaEVwCAfLqhrMwbT+QPStSMO +H3Hs3tfYUNfhv7x4murNt5zCboxKZHFQbr21K9JPVY2qjkjjymJneI1FO01JOFDuPeHFjNdcscw JLMKS2ktGAAJGk0JXUCpNKlCQVrQ0I6xptZrjYt4WSUUkt5MjB4GhK1FCaZUkEVoaEdWvbu/nNfy 9OkPj71QmSqY67fO9tpYrZ23fhJ0ZtbEdkdq4Dd0MU21cj0PXbL2ky4DBTUFfQ5LBwJnMhjsfUmi mWjlmjQA5pbbfQbnZR31uwZXAOCSKkA4JCkjNVbSNSkMBRh1k9ZXcV7apcxEEMAcVIyK4JAJHmDQ alIYYI6qBwu88N1F11Wtv7afZnT2G20nZWY2V1/2l1J2t1vvqi6n2rkM1uXZu0dsbV7E23t7L7mq MBtPHxUE9XiMTOauShmnRpixkfFXm7lbeW5iedbFraK7lUJqYMoZyisWcFqKZWrqfSe4VCk6esf+ Y9h3M7y0y2rQR3DgLUhlDMVUksCaAu3FqHuFQCadHR7G+DPzyn+O/Y/cfVkvSeP7K25seXevU/Qu Uos32xlu156A/wAYm2xuDfO0M1hMTh6/I4xZaXEU2GlzNM2RkpJpMr9os1PLI+0ey23rak71cO8z DAjIVUODxIbUQag/hIyBXoa7d7ZWq25bdJmaRhgJRQpweJDVINQfIjgK9FL6G7n2l8huneve6djP Uf3a7C25S5ulo61DFkcPXB3oM7tzKxkALWYuvhqsdWKt1E8MgUstmMEb3tFxsW6z7TdZeBtJI4EU BVvOmpSGp5Vp1E26bdNtd/Lt0+WialfUcQfPiCDTyr0LPso6LOve/de697917pCdjdn7H6nwVLuH fmaOHx9fnMFtnFRU2Nyucy+a3HuXJxYbBYLBYDAQVVdW1VTUzRxxw0tO7cl2CorMDfaNl3Pfbr6P aojK9KmlAAPUk0H5cTTAJ6M9t2u/3e4+msIzI/E+QA9STj/KfIHqsvtb53dg7uw9TT9Q0MHTeLrd rVu48dv/AH5isXuzNDGPSU+78Pu6DHYmetwceJi2nj9z73rjDUZSWswEeFFG1Jkd0YUNO3Lns3bW 5FxzHL4zcfDjJCA5qC1AWp2kEUByCpGTLGy+2kEBE29P4h/gQkLXPE4JpgjgDkEerL8T+8cd198o avpnLdk5/d1J8g8NXZamw++d4neXYOwO6ur8HFFUYTdzwCsemlzWy4qLGZqepyMdCm89pbrxeFpk oqeBfdfdfk+0i2eHddohWIWnY6oKDwmNa0H8DmtBQBWdjw617g8t26bbHuFhGIxb9rKooPDY+g/h Y1oKABmJ6uJ946dQr1737r3Xvfuvde9+690Zr4Sdw0/SHyUxWIybGm2P8kjh+ts/UJSsaXE9qYVK qr6k3DXT00BWCPKLLX7WqKiolvUVlTgKZCBEAZ49nOYzHNLy7dP2v3xVPBuDKKsAK1BAUFmJJ4Dq XPbTejHLJsk7drd8dTwP4gKmmcGgBJJJ4Do0H86P4n71+R3xHfsbpCgnrflB8Pt2Unyc+P1JR/fi p3lltkY6eHsLpyphxc1NUVdLvPbM2Uwox4qI4p616Fpm0Re533Tbbbdtum227FY5lKn5VHEcaEcQ eIOR1LO4WUG42cllcCqSKVP5jiPQjyPl1T7032vs/vXqvYPcGwa5MhtHsTbGL3Rhplno6iemiyVO HqcVkXx8s0KVlDOJaOuhSVvFURSxEkofeEe7bZcbNuU213YpJCxU+VR5MPky0YfIjrFrcrGXbb6W wnHfExU/P0P2MKEfI9CR7LOi/qx3+V7l9qx9k/IrAGOKn33V7Q6UzTzzUwp5szsmiym76DHU1BVv Cn3YxWRmrnrI4p5ftP4jSmVIPvYTPk77MzWR2CWBMTeKxYV4gBaELWvaGAZtIHcq6jSizv7Zvbfu eSNMS+IS2eIAFCFr5AgFqDioqaUFyvuY+pK6qa/mbZXKdbbg+K/dPU25KTZXyQwu+uxus9p7hrNq 1288RWdNdhdaVuY7gwG9MBQzUqvi1yGB2nlcfU1VZDTwbhosH5fuYppcfWhfm3mSHljZ5NyZRJIK BELAFiSB61KjUNRUEioqKZ6IuY97j2HbXvWAdxTShIGo1A+2gqK0BpUYpnqp/NR5vce4qjsXsLdO 8O4uzEpMlFDvTsDLUeV3DT09ewqKzB7PoYIqHCbboKl44vLi9uY7G495EWWWAy6pDilvvNe8c0XY fdJtCNpUqgIQKDiqjL6SSwB1EEtpoWPWPu68wbjv1zqv5dKNpBCiihQcVAy2mpYVrQk6aVPRzv5S v8yP4eQ/y4NuZTtHsLqT4vbi+MGR3H018kdp9k7325s/cGI7S2rlqkVu/t1Rbheir8jlt/IF3TLW y0rVeSydbWx2mroqhRmRYGI2MJhIKaFppppppFKUxT0A4dZL2pQ2sRioV0rSlKUoOFMU+zqijG9u 7X+RH82DvX5TfDTYW4sJ8Lvk/wBeT5fdfYu89jVuwcF3z2R1BBhtmzd5dR0dQoyz0ldXVzYmMbgx mMp6yal3FW0ctZk4ctS0MT+80e1tscUtwf8AGlkAipQmjV1BgTUIwU5AyyqDWg6jz3MTb22uN5j+ urgR0oTQ11VFahSFORxZRXh0dztDtnrPpXaGR3921vra/XmzsWkv3Wf3Xl6TEUTTR0stb9hQ/dMH qquSOGUwUVMkk8xUrFG7ce8ddt2rcd3uRabbC00h8lFaVxUngo+bED59QxY2F7uEwt7GJpXPkorT 5k8APmSB1SH218++5fn7WZXon+WR8Rt+/JGow2Xp2zXdm54JNh9d4jHzR5PC7iosblsrV4f+Fxbi wIymGgzNdn8PXxR1lQtDHDkFpp0Hsu98g+wCx84e7nMVpsyurIkLvqeTUFJVY0DzSstVcpDGxGnV UoCep39vfbPmCO/F+gLyaSDHGKqAw/G5ooofSg1Adx4dbX38gf5ZdjdvfGTKfHf5F7yxu6/kb8d8 xXU+UytHjIdurn+sd4ZGTdPX8tHt95vJTpisdX0EEFEKSmajwlXtw1dNR1lZJSQ5U2l3b39pFfWj B4pkWRGFaMjgMrCtDQgg5Feh86MjlHFCCQR8xx6vw9qeqde9+691737r3Xvfuvde9+691rAf8J3v +ylP5/3/AI19+Q//AL3u4ffuvdWD/wA/D/tzh/MK/wDFedw/+7Sj9+691UL/AC8/+FLn8n3of4E/ Cjo7tH5Ebu252X0z8T/j11T2Dgouhu7s1Did6dd9T4naO58fT5jB4Gpo6qKOto5liqKad45Fs6tY +/de6st+Of8Awov/AJTHyt7v62+OvSHyD3RuntjtncUe1tjbfrOju6tuUuVzUtLLWJTTZzcOCpqK mXxwyN5KidE4te5Hv3XuqwP+FBHRPVPyb/m6fyG+gu8tpQ776l7T3P8AJna2/Noz5XO4OPPYKph2 nPLRnMbZqqLIUx1xo6zUlXFKpUFXB9+69118X+1ex/8AhOt8r8J/L8+VO9s1uz+VV8iN35ur+EHy c3xX+f8A2Xzc+eylPV1nUXaOaqKj7fE4imqa3wV1V44KDzSx5yOLHx1mViT3XutiH+ZwQ38tb+YS ykMG+DnyxKm4IIPQmfIII/Hv3XuiBf8ACZT/ALccfBH/ALUXeP8A8E7vb37r3R7/AOZn82dqfy8f g78g/lfuapxv8S652PXxdc4TJjzQ7u7c3EP4B1ftU0KT001RDVZiopWr1p5RJHRJVVAIWFmHuvda W23/AORVv7t/+QL2V81t2YbO57+Z725v6X+ZXiN6ZJ6qp7LrtoYo1Wax3W/8QmElZUS5ratXld40 1FY1E2crKGnkJanRV917rb6/k4/PvFfzJ/5e/Q/yW+7oG7Dnwrded6Yihnp3bA92bAjixG9o6ilp wBSplAaXcVBSt6koMjSXLX1H3XukR/Pw/wC3OH8wr/xXncP/ALtKP37r3Wsh0t8G+3P5aPwf+Af8 7X+WNtnMZXPRfD7p3dn8xT4upuHc2T218hOuMjsGPdG++0aGmrqqrmpK+i8klRVUePp3paWSOnyt PRRmlrnm917rc0+EfzW6B/mCfHHYXye+OG7I9zdf73o/FW46qakh3XsHd9JTxSbj657Aw1LLN/D8 3inlRKqmMjxyRvDV0stRRVNNUze691Rn8CP+4nH+eb/4g74Tf++I2T7917ov/wDM32uP5iX/AAos /l0fy9t+pBuX4x/GHpjN/MHt3YVRjcbkMNuPd0s+WrqXG7zocm8sFfjqz+D7RxD00tKXipclkPG3 +Vs0XuvdbfoAUBVAUKAFUAAAAWAAH49+691y9+6900yYPCTZuj3NLh8VLuTH4rJYKg3BJj6R83Q4 TMVdLkMthqPKshnipKqehoZ6mnSQRyyU8DurNFGV917oEPlZ8ZerPmP8de3PjH3Tif4z1v3FtCu2 pn4o46V63GTvImQwG58Ma2OWFcjh8jBSZXHSTRSRpU08TPG6Aofde60N6j+Y3/MH+G3QHa3/AAnA bYnYG9Pn5L2ri/ix8TO+sBlcHNich8TO1Fc43dP8Vz9Y9XS1yYOQLgKiQxpjcXXky1GIn29Gk3uv dbsn8t/4Ldb/AMuT4e9R/FfroUmSm2dhkyfZG+YqCKgyPafbudgjquwuyM0BeV5chWKUpFqZZZaa hhpKLyulMh9+690en37r3Xvfuvdanv8APV+WndPy/wC+eu/5CPwFy+Qo+6/kNFi8z8y+38LVOMT0 H8ey1Nm8vgdx1GKlWsiSvxkiZDPxGSlFTQzUOGglq5c5NTRe690U3/hOp8cOvviF/Oi/nC/GPqpM kOv+kNi9V9fbbqMzWPX5nJU2DzNPDVZrMVT8NV19QZq2pESpEskrLDHFEEjX3Xut3T37r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3VfH82v/ALdXfzKv/FCPl7/8D/uD37r3RJf+Eyn/ AG44+CP/AGou8f8A4J3e3v3Xuq/P+FVnZO1Om6/+Tz3BvurqaDY/VP8AMX2R2TvKuoqKoyVZR7U2 NNjNz7iq6THUitLUSR0dLM8cMSl3YBVBJHv3Xuja/wDQVp/JC/7yi3j/AOk5/IP/AOxv37r3R9fg X/OC+A/8y7de/tlfD3trOdj7j6x29i907yo8r1j2TsKPG4XM5JsTj6mKr31i8fFUM86Mhjgd3Ucs AOffuvdawFd/LX6H/mhfzxf5/HQnclM2E3BSdafGvOdOdu4nH0dbvHpjsX/RtthMfu/bi1lllhk0 JTZWgLx/dUjSRxzU1SKerp/de6t0/k+fzEO/dp9q57+UH/NDrYsT89Oh8bUQdTdq5GpnOF+ZPT2E Spnw+9dp5usp6YZXJ0mIp4qiardUrchTJNUV1PHkaPJPJ7r3SN/4V2/9uad/f+J56H/96Wb37r3W zfSf8Bab/qHh/wCtY9+691rVf8KcfmJvjq34gbL+Cnx4/iOX+V/8yjfeK+OnXu3dvz1MOcHX2bzN Fh+w2hqKeN44nzhr6HasUVXJAk1PkchPFKWoJEPuvdVC/wAxv+XrD/IOof5Sv8yr4q4GTIN8Ml2V 8dPm3Ltengo4e3MJvSqq8nuvsHLT1dNUNSf3mrcvuzb9TXzUsksS5HBUsLRfaQD37r3W9H11v/aP bPX2xe0+v8zT7j2J2Rs/bW/dlbgpBItLnNp7vw0O4Nu5enWUK4SppKiGZQ6hgGsQDce/de61Yf8A hUlsnavZe6P5MfXG+sLS7k2R2B/Mq652TvLbte060We2rurI4nBbhwtY1M8cgiqqSeaCQxuraWOl gbH37r3QWti91f8ACYH5YSZHEjee6/5H3y77F82Wx7Pn96ZP4Mdx7jajxy5Gasmjq66swjRxLHTg SvX1+OiZJhkspi0nqvde63CNtbl27vPbmA3htDO4jdG1N14XFbk2xuXb+RpMxgdxbfzlDHk8NnML lqB5IKqkq6aWOemqIXaOSNldGKkH37r3Wqx/wjo/7dkd7f8Ai/8A3l/76vr/AN+690gf5QO25/nf /PL/AJuv8wHuSGq3DU/EHtnIfD74x0eTx8z7f2di8Xns/wBfV2f2v97JMKLKQ7f25FFWxUZijkbP VlVPC1RUq8fuvdbgPv3Xuve/de6Z8dgMFh6zPZHEYXE4vIbpysOd3PXY7HUdFWbjzlPhKPbMGZz1 TTIr1lWmNx2Px6VFQzyLTU1PAGEUMar7r3VQf87v+WxV/wAxb4jTU/VtbV7S+X3xzy8vdfxG7JwF RQ4fdmE7IwKRV9dsjG7nqHp5aCn3NFR09KZYq+kSLIQYytnmMVEUf3XutZLCfOv5D/8AClbdnw0/ lg1+wexelNrdQ+HtT+bhuwzYbbdJufJdQbjXbg2ztugx0okjostURHTjq7GvHDncnTh8b9rgUyTe 691vu7P2jtfr/ae19hbHwGJ2nsrZG3cJtDaG1sBRQYzBba2ttvGxYbb+38LjaULFT0lHSQw01NBG oWONFVQAAPfuvdKT37r3VV/87ffu6+vv5UXzmq9ibV3Nvfe+9+js10ntDaezcFPufdOb3D8g8lSd GYynwu3qQNNWSxybiE5ggjkkKRt44pXAjb3Xuteb4AfzEf5qf8vz4D/HXoyi/wCE8vydzfVXQWw4 Ntbl3dB3BWYrsPdOYyWbqc3uzfVP0fJsCXO46Ouy9ZX5KoppUqEpopdclX4kMz+691sq/wAtj+Z9 8Xv5pfSdd3B8cc7labJbSzCbW7X6p3lSQ4fsnqndciPLSY7dGGiklSSjr4opKjE5WlkkpqqNJY9U dZS11HS+691Yp7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917psocNh8ZU19Xjc TjcfVZWf7nKVVDQ0tLUZKoDvKJ6+aBFaZ9UkjapCTdmN7sb+6905+/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3XugO+SX/Mkd/f8AUBjf/d7S+/de6HH37r3X/9PeH6// AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 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 8Jlfkj3C/wA0vjcuRq8fBjN27c3Vkszv7cOL29JUaaqvrxhdx48yLE0yxrg8l5PFJBJ5fde626/f uvde9+691xDBiQLEqbMBY6TYNY/0NiD7917rl7917rU5/wCE+CJ/w5z/AMKT30LrT5+4pEfSNSo3 avbxZFb6gEqtwPrYf09+691tje/de697917pJVW/Nj0W7cd1/Wbz2pSb9y+OfMYnZFVuHEQbuymJ i8/kymO21JMK2emX7Wp1TxQsg8Mt2/be3uvdK337r3Wp/wDGzZWzOkv+FY/zN2t0rUU9FtrvL+Xz i+5u+do4HHJjsDt7ujJb/wBrSzVWQpMasdO+RysRj3NPX1aSVEk+arCsgWeRT7r3W2B7917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917rg7q iM7myorOxsTZVFybfX6e/de6pB2x/wAKRP5Je7souIxXz22DSVbQTVAm3P153jsnFiOADWGzm89r UFEJDf0RGoDvzoVrH37r3Vonx4+U/wAbvlrsp+xfjL3l1d3tsuCpjochnesN5YXdcGFyUtOKpMPu KnxU0k+NrfEyyGir4oZwpDGMAj37r3Qs7u3htPr/AGvn98b93Rt3ZGytp4mtz+6d37vzeN23tbbW CxkBqslmtwbgzMsNJR0lPErST1NTMkcagszAAn37r3VI+8v+FLv8k7Y++6zr7M/NrB1uWxlXX0GU y+1+pu+N47OoqvHsyzRJvPa216vG1auyMsU2PqKiNiBZ/Umr3XurYPjz8pfjj8tNkL2P8aO7ete7 9mBqOGszXXO7MTuQYWsr6JMnSYvctBRSGqxVa9PJHP8AY5GCCoCMrGMAg+/de6jfKT5V9BfCzpfc vyG+TfYMHV/Tmz63b2P3JvSq2/uzc8GMq91Z6n2zgIXw+yaDJZGT7iuq6enDQ0bqpcNIVQMw917q vLrv/hQb/Jm7Rngptr/P7pqknqsrBhYIt80m/OrHlrqgIYbDs/D4f9g+RV+7P7AbUpkDKwHuvdW4 bV3Ztbfe2Nv722RuXb+8tmbtwuN3HtXd21czjtw7X3Nt7M0aZDEZ7b+fxEk1JW0VVTyJPTVVNK8U sbK6MykH37r3QP8Axh+UvQ/zM6b298gPjXvyPsvqLdWQ3JisDu6Pbm7tprXZDaO4Kna246VsHvmg xmSialyFJU0z+ejQMyEoWQhj7r3Xu9flN0P8acl0liO7N+R7IyPyM7o2h8eemaWTbu7twNvXuLfr yrtTZsT7VoK5KFqrwyk12Sano4lUtNURqL+/de693r8puh/jTkuksR3ZvyPZGR+RndG0Pjz0zSyb d3duBt69xb9eVdqbNifatBXJQtVeGUmuyTU9HEqlpqiNRf37r3Rgvfuvde9+690HC9udYv21N0Mu +ttnuan66pu3ZutP4nAN4L1jV7ll2bT76GHJ8pxrZWCXH/cgFRONBIJW/uvdCI7qiM7myorOxsTZ VFybfX6e/de6ojl/4Uy/yPYJZIZ/nThop4ZHimhm6L+T8ckMsbFZI5I32SCrKQQQRcHg+/de6Nv8 dv5vn8uv5ZdZ/IruL49/I2l7G63+JuyP9I3yB3NR9Zdz4OLr/Z38AzW6P4s2N3VtyhrMo32G3svU GlwtPV1FoAvi1zQLL7r3R3une3Ou+/uquvO7uo9xx7w6u7X2fgd/df7qixuYw8W4do7nxyZXBZiP F7hp6Sup1qKeVJFiq6WKVQbOitce/de6K18xP5nHwL+AceKX5cfJvrvqDLZpaWbFbRrJMzuzsCto q5p46PLR9d7DpMrnVoJHpqiNci+PWl1xuhmDKQPde6LR8Zv5+n8o75a7qxmw+ofmd1/BvjMPHFi9 rdn4XfHS9dkqupya4jH4zF5DtjF4fH1lbV1DxR0lBSVktTM0kapEWcD37r3Vw3v3XukRtLsfYu/M lvvDbP3Pis/lesN4PsDsHG0E5eu2jvKPb2P3Z/d/N00gV4ahsZlcbXxgizwVMMqFkcH37r3S39+6 90AXQ3yg6K+Tn+mP/QZv2Dfn+y/96b/+NPb3gwO6cF/c7u7q37T+/mxZf70UND95Jj/vqXVXY/z0 Uvk/YqZdLafde6H337r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+690VH5hfN/4tfAXq/Hdz/LntrHdO9a5bd+M2HjNx5Db28t0mu3ZmMdWZbH4emw2w8dlcgzPT UFXM0opPEixnW6llDe690uPjT8lukvmD0lsj5GfHPe8fY/S/Y8efl2VvWLAbp2vFm4tr7prtlZyS PB71ocbk4VhyeNraYGpooxII/LFrheOR/de6LL80v5rnwA/l47o2Ts35j/ISh6X3J2JgchubZuOr evu2t4/xvB4vIDFZCuirOu8Bl6eLxVBEbRVEscnIYIVIPv3XuiXf9BNf8jj/ALzuwX/ojvk7/wDY T7917o9ndn8zj4P/ABy+L/U/zN7s7rfr/wCNfeNXsyj6u7JyvWfcFSu55ewtpV2+9lP/AHQxO36j PUUWRxGNq66nnyOLp4zGqAuGmgWT3Xui39bfz/f5N3a8+OptqfzAejKKfKZNsRRxb/qN1dSu1aqK 4+4Ha2MwvghbUFjqZ9ELtdEkZgQPde6tlp90bcrdsQb1x2bxuW2jV4GLdNDuLDVcWZw+T25Pjxlq XN4quxZmSqppqYrPBLTl1lQq0ZYML+691R9/0E1/yOP+87sF/wCiO+Tv/wBhPv3Xujx/Cn+aL8EP 5imQ7Dxfw078oO6q/qmj2zkOwIKLYfaezf7vUm7562n25NLL2Ng8OlR9y+OrQq0jSsniJkCBkLe6 90VOo/4UTfyZKHf+X6wy3zl2Zt/ee389n9sZyh3P1v3ntfGYnO7Xmnp85QZDdG4drU2KiaKWmmhR 3rQksgWOFpHkjVvde6sU+NvzI+KfzDwWT3L8XPkJ1L3vicGaL+Pv1tvXC7kr9uHJtMmOG5MNRymt xxqDT1C04raeLyGKUJqMb6fde6C/5r/zKPhD/LswG29w/MTv/bHT0O8ZqyDaOFqMZund+8Ny/YQt NXVOH2RsKgymXlpYdIjlrfshTJI0cTSiWSNG917p4+F/8wr4a/zC9kZjf/w8762h3PhNs1VFRbtx +Lize3t5bNqsmszYqPeHX+8aXHZzFpWfb1P2M9bj44arwT/bSSiGQr7r3Rzvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+690B3yS/5kjv7/AKgMb/7vaX37r3Q4+/de6//U3h+v /wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691qJ/8K6f5ba/Jz4Z4X5odc7dWt7k+HrSvu5sbQLNmd0/H3c1eibipJTQ 0dRWVR23k5IcxSwmaGnpqSozFTISbe/de61zf+E2HzC3XldofIf+W9Q5COftLM5DC/OL+X7T5PJ/ YUp+XnxlaDf+X6lpq2TW1PT7/wAHhY8bkvGoj/hlPl4ZFlNeY3917r6aPS/bO0O+eoer+7dgVNRV 7I7c2BtHsjak1ZA1HX/wDeeBg3Di4slRP66eqjiqFjqqeSzxSq8bgMpA917oTffuvde9+691737r 3Xz8O+P+E4nzR+Sf81rtndny97Gy/wAm+jt2bs3ZvnoncPYfymyPVlTvbqil3DDmV6ml3nSbO7Hy 236za9JlKWgfbtBs2hpK+COpqcRkqOGmmaD3XutmT46bZ2v/ACqthHaEP8srr/46fHuljD7o7k+F HYeR+VAwOKxgdl3n8jo937O2N2dkY6enV5azLUGG3R9nH66meGlSSaL3XurGe9OqeqPnL8T+0enK 7dS53pr5SdI7l2Ym++us5ja8Vmy+0tpSUOO3psfP0/3NDUFaeriyGOqCs9NKRGXSaFmRvde6qM+Q vxM+enaPQtT0N8+f5oHTPV/xYqMbJsbsjdXxV+POW6f+Tfyl2MMDJSZXZW595b83ZurFYKrzdJDM +VxextqTSV6tPSRIKKWWkk917qg/+dB/Ka+Ie9P5dfaHyA+CHxS3Z02nxHx+3+3x35ujd+4xJ8jt qNk49vdoyT4/e+TqpMpXVWNq6Tdz7vErZGsnxMuKyEcFUtHA/uvdbIn/AAn+/mIr/Md/ltdP9kbo 3Cub716lh/0FfIQVEgOWquwNiUMEeM3nXq7F5DuTCS4zNzVKosTVk9ZBEL0zqvuvdEV/4Vd/y4pv l78CD8nOt8LJU98/BuTM9n0k2Lhb+Mbg6Lr4oX7jwSSU4V2bERUlHuunkkc+GLHV0cC+Wta/uvdH 3/kIfzHYv5lv8unqftTc2ajyXe/V8adI/IqGWZWyNV2TsjG06Qb3qoyQxXdGJlx+eeVI1hFXUVlL Ff7R7e691dJ7917r3v3XutH/AP4Ua9Z74/lqfzCPhP8Az3vjtgKyT7LfGC6i+VGGxKimot2HHYOX FYYZ+eMsR/ezZYzG056yZBDTPjsWyn7mWPV7r3W0l2l/M0+CfR3xv63+WPcvyV626z6V7f6+292b 1fmN1ZlINydhbX3Pt+n3Riv7jbBoBUZzNVpo6qGSXH4nH1NRHc641CsR7r3Wlj/Mi/4WYb53L/Hu tP5ZfVv+j3EN9zj/APZk+8MRjM1vepXmL+JdedRa6nE42zL5Kas3DNkWlie0uKpJRx7r3WrPsbqr +Zx/Og+RORr9u4jvv5pd25SSmi3FvTP5Oty+B2Ri6yd2oIdx723JNT7e2lhY2LpRU09VQ0Uf+Zpo wdMfv3XutlD4af8ACbD4x9Odh0e2vnh2PvD5u/J3EfaZDIfy+vgEKnO0m0BUKZ8dH8mfkHl58Hjd pUdWv7YGby+1o3kA+yymQU6D7r3W2LifjjR/H3pjGY/vHtToz+Vz8LNu1FFBjPjD8Nd0U/VeV3Pk 67TFS4jtb5e1VNhNx5XNZYpEjYzrjE4PLT1uqn/vBnklBl917pV0uwd2909J7v8AjL8Mfh7138ZP id2vtvdu0+w+4/lL1vmdt1/YO2d9YuXCbxzG0PiRRTYjeefyWZpqup+5zvaWY2zVmo1Vc1DmYpQZ vde6st2fR4H439C7Ow/Z3cNVmcB031rtfbu7u8e6dwbaweRztNtDBU+Frd/djbkEeOxcNXWtD91X 1PjgiMsjNYX9+691K6S746g+R+xIuzej9+4PsjYc+c3HtyDc233qWx82Y2pmZcHm6WP7yOKQqlRC xhmCeKohaKpp3lppoZX917qub469E4r5F7/71Pzk3PuL5E91dA/ILc+3ound9GgoPjHsLaFVXjfv xz3/ANa/H3DxQYXKnJbRrsLXpuTeC5/LUGdizFBRZaI0Ekae691blHGkSJHGioiKqIiKFREUWVVU cAAcAD37r3WT37r3Xvfuvde9+690HXbnVeyO8urew+muy8PHuDr/ALT2XuTYO88M7mI1+3N1YqXD ZWGCpT1wzCKZmgqIyHikCyIQ6qR7r3VH/wArviblP5qf8qb5HfBPuGsh3F8wfjLXVnX9PuzJGlhy eS+SXS+24d19F9zeSpZY6Sm7Q2rkcRkshILrS0u48lRBjPSSaPde6+dL/JE+f+4P5Vv8yjrXsrfT 5bbPWObzVd0H8ott5GCqo6jHdd7nzMOLz2Ty+JlUSJV7Uy1NR50wmMTE0MtKNInkB917r7K1JV0t fS01dQ1NPW0FbTw1dHWUk0dTS1lLUxianqaaohLJJHIjB0dCQwIIJB9+691J9+691737r3Xvfuvd e9+691737r3XvfuvdVefzX/jpne4vjpTdudZYF89318S87Ud8dW4uhjg/i++MHi8NPi+5emaSaWG Yk7u2pNkqDHx6dC5mPEVjeqjQgk5i2aDmDZp9pn4SqQD/CwyrcRlWAPRXvO2Rbxtk23zcJFwfRhl T+RoeqrOgfkbv3qitoe9vjrXbT3zgOzNl7cyGY2PvLK5/EbB7Z2p/DKjcHX2Uxm5sVBW1O18qhyH 7O4YcJk1egqJqetxNe8eNlxuNHKXOl9yLdz7VfRa4hJpkAALoUajBKlagjUFBYKrMXocq0Hcu8z3 PKlzLt91HqTXRxxZSrUbTkVr3AAsFBbXnIYb878n/wCZX/MclznSnxs+O/VfSHxyqMxnNh94/KXK 9471zdBuHEY7Kz7b7F6q6jzo2dtzJwZiLxVWIy+W21isvHS1SZDDrm9sZyljydJkrY3icy8vLdxo 0K3kTUEiqxUOCoJWpVgR3AHDKRUCpAm+1uU3zZxcIrRLcxmgcKSAwIBK5VgeIBwykVAqR0A259j7 q6f39vDpLf0mEm3l1tJh4Xye3cYNu7d3ntDOY4Vuz+w9q7UqchkqzG4zIIlVQmjqquf7XI0GSoIq uujohWz4o88crzcr701sWaWKWrpI9at/EC1FDMKgsVxVqVrXrH7mvYZNi3Mwlmkjk7ldq1b1qaAM wqCxGM+tem32Cugr1737r3Xvfuvde9+691737r3VIXzq6V2RtPt6v352lmtzJ0NvraWQrMrtzGT4 ig2ttzLY7MjO7qygw1PFTnLZSfI1f8SwOMzdVV0ua3rkdqfd0bYvbtRbKj2k5iG6bD+6pj+tZUUf OI10HhTtynEnAPU/+3e8i/2j93yn9S1x9qH4Twpj4eJOOii4zdLZFZ6L477N2NksTtStZ8pV5+eq 2r8bV2tl9r5Gt7AwG2clXwCqz2yBtrak+PaqxdBNBUdc7OzlVNk48t2FkI1ljqQujnfy8d+7x6v7 UzPVfZ+78nvVPkzW7o7Ox27s1tePamVm+Re2cTSZbtHFZ/B0iVckGS3LtOfB7iy/3+TYUu6cbvTC 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 h+d/wtfK4Wi2JvqvbH7Z756Xy8ORlyfVtRX1NTSUkMryZXK0jR1NXRrNR5SuKV9PVU9GJPde6LDL /PS/muZzAz9bbX/4T4fMLCfJipq6jalHlN3T7tl+NGIzxop8dTbzyHZA2vjoKzER5WJXlpYspTwS UJEsebBkheT3XujZfyZ/5Y/e/wAbt7fIX5//AD73XRb7/mI/NJse/ZEONytNnsF0f15T1UWWo+nN uZnHvJRykTU+OjyCY2V8ZAmNx9Hiz9rS+Wf3Xur+Pfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdR6v/gLU/8AUPN/1rPv3XutWv8A4S3/ AB96F7B/kyfH3ce/Okeod77hr99fIGnrs7u/rXZm5czW09L3RmqSmgq8pmaKaeRI4lWKNXchUAUA KAPfuvdBL0JtP4/9Jf8ACn3/AEafy1qHYWE6p3R8LN8Zb+Yf1p09U4yDqHr3sDGZ2rG0snjtr7dk /hmJ3CcpFs+lytDQ08UNOK52dErK2rDe690JHyr2ZuT+dV/N835/Lz3jntwYX+XH/Lc2d1l2J8q9 p7R3Fk8RP8kO/u2KAbl6/wCs9z5XCTxvS4eno4p4nTTHWRjH5laaaJ8hTVNL7r3WyD1v8bPjx071 0eoOqejOo+uurHx8OKqOvNm9ebU29s6voIFYJBlNv4ykjpqu5Z2dqmN2dmd3LMzE+691rD/zfvhd jf5Sdfg/51f8sfbGM6J3L0nu7beM+Zfx16/jg2x0j8iOiext14/a+amyHXtEDjaKtiysuKWtGLoI dSSfxiN6XJYuOrl917of/wDhTP2FtXt3/hP53F2vsXIrl9kdnQ/EjsPZ+Wj0+PKbU3p3NtPcm3si hQsLT0lTDKLMR6uCffuvdXL9y/D3+X7kusN6Qd6/G34nU3Uy4LIS74yO/uruqsDtXEYJadkrMtk9 w5Ojp48aKdGMiZAVML07ASxyxuqsPde6pK/4S+5GkHxp+eOz+o81n9z/AAn6/wD5hPyE2x8Idwbm y+by9bUdJRikq8fQ4ubNzSyLjUgkoauPRHCJauqraiWFKmae/uvdCr/wlL/7chfF3/w8fkZ/8EHu T37r3T7/AD4P+ZofyOP/ABth8Rv/AHEzfv3Xuvfz4P8AmaH8jj/xth8Rv/cTN+/de62EvfuvdMu4 tw4LaO387uvdOZxu3ds7Yw+T3DuPcGZrYMbh8FgsLRPksvmMrkKtligpqaniknnmkYIiKzMQAT79 17r56VD8rvllF8s6X/hTxV5XPn4LZb5nT/CeTraagzUkuK+AckzdYQdvVmKpMrPSRQQ7gRVNPA7R vupTU+ErKA/uvdfQ2xOWxefxWMzuCyVDmMJmsfR5bD5fF1UFfjcri8jTLWY/JY6upWaOaCeJ0lhl jYq6MGUkEH37r3Wuv/P62Hsem/4Zm+22ZtWn/iH89v4A4Wv8G3cRF97h8n/eoZHE1fjhHkpqjxx+ aB7o+ldSnSLe691Z9/Mk27t/Afy2P5iX8CwWGwv3fwd+Vn3X8JxlFjvufB0LuHwfcfZomvRrfRqv bUbfU+/de6rJ6u+a9N/Lx/4TQ/HD5cHG0uazfV/8v/44w7HwtdoeiynYm9dqYTYewIchTmanaeki y2TpKmvginjkkpYplidZCpHuvdK/+Un/ACiOuOquu9tfM75tbTw3yT/mTfJDE4ruHuvuTubEUG+M x1pm95USZzHdY9aY3OpUUWBXb9JPFi6urxcSTTzRzIk4x60lLB7r3VnPy/8A5f3w9+eGxslsT5Rd D7D7Mgq6N6bE7urMNSY7szZdWEIpMzsHsvGLFmsNWU7WaOWhrEVheOVJYWeNvde6ph/kh9ud5/GT 5V/M/wDkifJTsjdHclZ8Nsbtvtv4gdr7whqa3dG6PiHu4Y6mw22twbhUeGY7eOXwVNSwyMzwS1Fd j6Zzj8ZSwUvuvdVmZHffzN+L/wDOu/nWfPT431mR7H6M+M2+/h/Q/M/4q0MDS13a/Ru+vjrHkMj2 ltWWZzDFm9hJhKnI0siRxyLT1NU0tR/DxX0lV7r3W5f8dfkN1D8ruk+ufkN0NvPF7+6p7S25Sbl2 nuPFTxTLJTzkw1uLycEbM1LkcfUpNQ5OgmtNS1UM1PMqyxso917qlz/hP9/3Wl/8b3fzDP8A5Uvf uvdbB3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917oM+3 tt7e3J1zvam3FgcLnqePZu7FjgzeLocpDGtRgpknCRV0cigOoAew5Asb+/de6pq/4TKf9uOPgj/2 ou8f/gnd7e/de6vEyu2dt52SKXObfweZlgRo4JcriqHIyQxs2po4XrI3KqTyQDa/v3XuteH+aPs7 Y/z2+Xvxl/k7bCwG3qPatXV7b+Zvz73DtvG4eiyW2Pjb1fudJevurlrsW1PWUlbvTckVPEaikqIa zH6MZWiKroKiqiPuvdIf/hUXhsPF8MPgnt6PE42PAR/zTvh/ho8GlDSph0w6bV3lQri0xgXwimEP 7IgCaNHo06ePfuvdW6fKD4d/y08n0T2NF8pvj58TsD0XDt3IT773LvnYPW+x8NtnGGmenbPQb3FP RVGGrafyE0WSoayCrgmKtTSpLpPv3Xuqff8AhNBmN7ZX+Uf3PTV+U3znukMB8j/lbgfiBn9/49sb mc38Y6XH0NVtnJQwvTws0cu4JtytUOzzEVhq4/KBGIo/de6UH/Ccvsv4s7f/AJL/AMJcR2Pv/oDC bzpMF3J/GcXvbdfXWN3PS/cfI3eFVjv4nRZ2dKtNdI8EkPlUXiaNl9BU+/de62B+tN69F7slzEfT m7eptzT0MdC+fTrPPbPzMtHDO0q45swu1pZDGrlJhAZrAkPp+je/de61yv8AhOd0L0Z2b8UfmFme yemOp+wsw/8AM1+ZWJfK73662fuzJPi4snhmjxj12eo6iU06mWUrCW0DW1h6jf3Xugb7T68+LPRH /Ckb+W7hf5b+I632P2b2F1T8lsd/MG6w+P7Y3bXWuO6ew2xo8h1hmuxtobCRMJRZapyENfM9PUQL NNUUmFqJ445paOqk917oavk/vrrP4Yf8KGOtPk982tt4uD4+/JP4gbT+N/xX+Su8sfHlNgfHXvbA 9g1WW3Js3M5bJMabbDZ6KqJfcJhURLkUjkqqehlyskXuvdXmbN+DvxU2X8qN0fN/r7q7DbS+QnY3 W69b7z33svJZXb+I35tWpzce5zXbq2ngaiHD5bIy1EVO5zFdRzVRSKECayLb3Xuje+/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917oDvkl/zJHf3/UBjf8A3e0vv3Xuhx9+691/ /9XeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3SY3rsvavY+zd29e77wON3Vsjfm2M9szeW18zTrV4fcm1dz4qX B7hwOVpX4lpqyknmp54zwyOw/Pv3XuvjOfOz4592fyU/5p24tr7Ey2Ww25Pjx3Ft7uL45dg1lNL4 tz7Iiy8O9esM9VtTU1BRVglozDRZ+holalSoWtxru4jlHv3Xuvpv/wAmn5ZbC+QHXG8cRsBo6brz fFJgvmR0LjFqRVjBdW/KbM5bLdq9WSVYVY2ruv8AuTFdlbYqaOnGiixq4JbLHUQavde6ummmip4p Z55Y4III3mmmmdY4YoY1LyyyyuQFVQCWYmwHJ9+690w7T3ftPfu3cXu/Yu6Nu712nm4XqcLufaeb xu4tvZeniqGpZZ8Xm8PLNTVCLLHJGzRSsA6spNwQPde6Ufv3Xugf7o2hmdy7Vos3s+jhrOx+tM9R 9kdawTT09IlfujB0FTja3az11aRBSxbjw1bltr1VdMjikgyUtVGhmhjI917qvftf+cB8dMPt6Cb4 60eQ+UG6a2jgkafauQTaHTOycjUY6PKS4TtHvLM01RQU2WoopP8AcrtHalBuLdtGVby7bsrMvuvd A18JqD5mw7D3/tHqPZGzequt+0O3t6dvbe3nXYHK4LqbpbCdjR0lbuXYfxo2PvCqrczmKCpystdv vF7gyeFpcRX1uTyVH/BNvQrBSwe690L/AMiNgdMfCHozf3y673wm8vmh3Jt6baOA2hi9/wCRhyUu 8e2e0ex8Vsvqbq/rPbG4nrcVt6iyG9cvjo8dPPHXSYOOpnlgmNNCYffuvdVefzPvjb/MI378fV7i /mB/O7qDqz450vY/TmN3v8bvjPsKg2H1J01mN09kYzbPU/evYPfHc8mYzXYVDsbetZtjcW5Ns1mI w2PyONoa+SkigqhS05917rWN/wCE+Hz42l8Av5s1H1Zjc9j6L4jfzDY9rbI/hGOy82QwHX3Y+4Mx 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 Tiq5ovov/u4PfOX3O9pG5J3dte48t6ImNMtA9fCkfRAqLrAr4s9xLc3dz9bJpWOEE48e4eyDbd0+ tiFI7ip+xhxAq1ceiqFRdArU9bhEciTJHLFIksUqLJFLGyvHJG660kjdLgqQQQQbEe+jHUe9Zffu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdR6v/gLU/wDU PN/1rPv3XutGL+Qv/wAJ/f5WXzY/la/F/wCUvyV6E3H2F3D2TXd0ybwzMPdPcmz8Xk4dkfITdPX+ Bo48DsfOY6mp40xeIo4ZDTokjsHkL621D3Xuttv4b/y+vhn/AC/dpZ/Zfw9+P+yuk8Ruuupsju2t wZzOc3Xu2poWmbGLujfW76rI5vIQ0ZqKn7Clq8hJDSCaUU0cQlcN7r3VJfwA3jSfFf8A4UEfzdvi v2z4Nv5/5vY/oT5afGjP5ShqcHB2ftrZmzslj9/bd21V166MnPjZ8tWQrHTSkqcPl5ApEcog917r Z+9+691QZ/wpN7txPX38rTt7pLFwPuTuv5l53Ynxh6E64xsE+T3Jvnee+d6Y+fNjE4THE1sy0GGp 66oMtPBKq1Jo4HW9VGG917orf8+jpafof/hN5SfHbOZCHP1PTWyPgB0tl8rTrJS0+an677L2Nsev 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 3Z/wHy29DT5nfPQ24enKSbdPY3SWY3RJOtZU4uDEI9QGqIJYGlkoJqJ6WWqylJH7r3Wzh7917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XugO+SX/ADJHf3/UBjf/AHe0vv3Xuhx9 +691/9beH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvdaa3/Cw/+XLJ318UdjfPXrrBR1XZPxJkk2z2oaGi hbKZ/wCPW9sxGFrqqoX9+ZNq5+ZKyGBVKQ0uUy1U5VY2J917rXZ/4TZ/zIdyfHfuPavT2TyGLmpd u7k3U+y13TmnxWDPXPyGXEbF7b2fX1irPNFQ43eWM6z7InqYaaRcXhcFvKpVFORqJR7r3W0v1NJs 7+ZV8xNtdDfzFPlnlu4Y96/G6g7y2h8Aeqd1U/x96c2F2R15v/MdZfKToP5OdL7HzOT3buHJ7PzE OMixcu7N31WPy6w54wY/7XHzIfde6PZ8AqSh+Avza+RP8rN4afBdF9g4/OfOT+Xxj4FWmwu2utd6 7n+x+Svxy2/TrogpodnbxqRnMJjIFZxis0zmyU5C+691eZ7917qJXUNFk6KsxuSo6XIY7IUtRQ19 BXU8VXRV1FVxGnqqOspagNHLFLGzJJG6lWUkEEH37r3VMnVH8sbtzqDsjcFX192R8Xtj9ObW3FS0 nx/2nU/GTdXZe89gdZ4XG082zdrrkstvrDbZoZ8NlPvaqmrodqVmRYzytHlKeOdqWL3XujJbl7J+ cnxjpqnefbuA6z+X/SGM1Vm8c98cetd6dT/IvrXbsAD1u5oujs5uLedB2HT0UQlq8lBtvM4fMeFN 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 RJ7kQSzQ2Ut2LcCV1IC/NWzpve0SW9KunclASajiAAVLEjKrqClwmrA6H7+TL8n8j3j8ZJOqd6S4 d+zvjLX0PWeffbMRbaOQ2eyTx9e5fZtZQ4rGY5sG1NR1NJtkUrVEtTt+nw+ZqZf9zERb6n9uv7Xd tut91sixhuY0ljLxyRPokUOmuKVUljbSRqjkRJENVdVYEDGGSNopGielVJBoQRUGhoQSCPmCQfI9 W/8Atb1Tr3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917rFMnl hliBsZI3S55trUrc+/de6rh/lH/B7dH8t/8Al99C/DPee+sD2XuTqCTtWTI702xi8jh8HmP9IXdG 4u0KMUWOyrPUR/bwZqKlk8jHVJGzL6SPfuvdWR+/de6rC/mZfyt+ov5k+yNiHNb13p0R8huj85Pv L43/ACe6tnlpOxenN6ExVVPX0yQ1FG9dQfd01HVzUcdbST64ENNW0heVpPde6rzpusP+FSfU2Pn6 32h8i/5WXyW24ambE4LvXvLYXdOxu5MfgIJ/Bjc5uDa3V9LQbbfJGB9dREKSvQtECZZXd2b3XuhK +E/8nbuXG/Jjbn8wH+ar8ppPnL8ytk4yvoul9uYjCjbXxo+ME2VlaPI5HqHZP22PiqckadYY6fJy 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 p/lPmE3p8lPiH8xqbsDJdH57tenoKyKft/rLdvXYfOYfKZOeeGXI40SwUry/cTvPPE1JQ0XuvdKX 4bfy5/lhnvmrL/Mz/mg9pdOb/wDk9tTrOr6c+NvSnxvxW4qP4/fGfY246QnfOawmb3zDFnMvuLMP VZGjkqazUtPS1NVEamtjmo48X7r3V53v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de6A75Jf8yR39/1AY3/AN3tL7917ocffuvdf//X3h+v/wDmcff/AP1H9af+8NH7917ocffu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3SR 3/sTaPaWxd6dZ9gYOi3RsTsTam4dj7021klZ8fuDae68TNgtw4WuWMqxhqqSeaCTSwOljYg8+/de 6+KT86fjRvj+Vx/MR7w+PM081XUdHdj5Gk2xV1lXSO29un954oZfZ754YqSRRFuLaGVp48pRsQ3j qpoJUUlkHuvdb8P8urqbuP8AmefGXqr5efHPtvqroDJdtbq6z7Z7h78i25Lun5V/H75zdC7eyvQH yCzHVu0a3Ff3YymI7Y2pLT5GvptxZd6THT5vN15xGUqc3I1J7r3V/wD8T/5anxx+KG7a/uGkbsPv v5Q7hw74PePy4+Te+cp3L8htxYqd/JU4LH7v3ABTbdw7EIowO1aDGY4IkammYxq3v3XurBPfuvde 9+690kN/772n1bsXefZe/czDt3Y/Xu1dwb23jn6iCsqoMNtja+KlzeeyklJjo5qiUQUsEsvip4ZJ XtpjR3IU+691Sdvf+aD3P8gcli9pfCbrmTbWC3PTxVu3+zd/bSqeyO3N44Kcqq7g68+OG2a2nj29 jSs1M9Tmeyc5j8rjIZosg2xcvQNrb3Xuha+Mnwd+SOF6yXrLszujc3UvUFZure2/qzrnYeewmW7b 3LuXtLeFd2TvqbsDsbA4+g23iRNncjX/AHGD2Tg6fblVR1MiQ4rGykke690oPmVVZX4V9LdJdO/B vAdY9JdsfLj5M9VfE7aXcW88C278J1RJuzAbh3nkO0N5UubqVqt15HG4XAZPFbRxOYyvhqMzWYqh Z2pnNLJ7r3WuR/Pj/l2fGzoDr7r7f3ZfzJ+SfyM+afb9ZvHa3V1D35vKp7v7k3F2Bh9rVXY/V2b+ L/SXXuJo6PAad/4jbm0qzG4nCR4b+D7jyEM6CuXHVUPuvdU6/wDCYj55J8D/AOZtkPjL2D/FNldJ fOH+FdZPhNyLl8XF1535h8tVUvWNDWRZwrNLJS5yTN9eVE7wq9RV1EFRI0cUDKPde6+oduHb+D3b gM5tXc2Jx+f21ufD5Pb+4cHlqWGuxWaweZonxuWxOToqgNHNT1NPJJDNE6lXRipBBPv3Xuvn4/yo tw7h/kT/AM//AL8/lg9iZOsxXxa+YG4KPGdKZPcNdUS0MtRmair3F8Ut2QZKpBE9ZWQVVd19l2hR BUZeRPK+mgQe/de6+hP7917r3v3Xuqiv54n8vai/mT/y5+7+isXhocn2/tfGt3D8eKnTEK2l7n69 oKmtwOHoqif0RDcNFLkNsVEj+lIsi8vDxoy+6918zn+QL/MHqP5aP8y/qzfG+8pXba6X7Oqqj4// ACLoq93oaTEbO3lk4aWi3bnKSrX9k7Wz0GOzFVJ4vOlJT1tPHb7iRW917r6b/aHW+wthfzOeke7e 29vY/sjaHyI6/TqTovdHYMlRvHG/GP5SdXUWV35j6fqWi3BJPjtsN2fs85danJYuGnqJMjtinpRL JLm/G3uvdWue/de697917r3v3Xuve/de697917qvGgno/jB86arbvjXHdS/zB1yO68I6xLDi9v8A zN6f2JT027sL5RZVl7C65w9Pl6KljVUWr2Zm6uVnqssNXuvdcfkNXf7LP8oelvlPBF9p1f3XUbS+ IPyfqkfxUOFq9yblnb4kduZdSAix4zeGWrti1c+tSY93Us05NPjEMPuvdWIe/de697917r3v3Xuv e/de6ru+Y+7u+YO7fih07tDtqboDoz5B5rsrYO+u5Nk7K25ujt+g7awe01351f1ntjO9g/xDbm2q DdGGxm71kz9btvJ1C5Chx2NoRTVmUgnX3Xul1JD8MP5bHVG9uyN9b82b0js/M5KLcnaXdPeHZdfm N89nbrpcamOpMnvns/smvrM7uXLmniSjxtHJV1EqRiOjx9PHEsUA917r5Ff86Ltj4bd9fzIfkj3f 8FctubM9H9t7qXf1XX7h2fUbKoqvs7cMX3fZ2W2hicky5BsRlMt58xBLk6KiqRLVzwmkSKKKSX3X uvpDf8Jkv5iI+eP8tTYe2t4ZmbJd6fElsX8fe03rqh6nJZzAYTFiTqHfs8sup5BksDHHj6momkaW fI43IStZXQn3XutiX37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Wlttvcf8Ao871+T/xp2X1 jvnB7Z627/7zh6Gh3xidw7Q2q/VOJ7GrsXX4bFby3EtV/Esfgs+KuhxibchyK0GAr9qrUpTPUyxU +NXurytDY7sN9DiK3uQA1FLN4qjgqjSoqgBFWUdrEkk9Qh7gbBFa7kN11eHDOADQVPiAcAooBVQK VIGCSanoYqvZabgacb0yMm5MfMlRAdrfb/w7ZclLMlfQvFlMEjyvlBUUNbHBW0+XqaujaWniqqak pJR7iUXwt+2xTwj/ABk6pPLg1AEoRgxqrUJVmYdR79V4OLNdB/j4v5cGwFyMFArUNCzDpxrKdE3X t+uFVXRgYTcmJXHwSquMqGq6nHZCKsrqa3rlplo5I6Z7+gTzACzn27bq0213JY/2bxPnJqdamnpW oLeulfTpyJDJYT1PwMjfOp1Kf21FfWg9OlJ7Keivr3v3Xuve/de697917r3v3Xui5/KnpX/Tr1Bl tqUuZ3ht3PYnJ4XeG285sHKT4jedDmNr5FMnGNr1iV+NgjyrxJKuFqq2qENBk/ssmAJ6GB0GHJPM L8t7/FemhjbscE0FGwGrRtOk8WClgmoAZ6E3Ku8tse7R3RpobtYE0FDitaGlDxYAkLqA49a/e3N4 dedVZeTBdHbI2vuFqOPfq7iwey8c1d1Bt6vwONqtz1j9s7+3FJSUsW2lqNuTYytn3BkpMtluttnN MIZj2NmaiPM2ORZo1lT4WAIqCDQiowaEfYQCPPrJlHWRBInBgCMEYOeBoR9hz0pMLtLuCtlyW+Kj fA2F2X1zlNp9mdWbCNUz4nC9h4HcWQkott9u9gZVcXXZ+prN47uyOw92SO+Jpqnde+N7z1MCYzY1 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 Vb/s4fzMl+zq5IGSmqfFNRujeNyr6XRlNrEEce/f6zXNf+/bb/nJJ/1q69/wSPIP++L3/nFF/wBb ukf1ju7+avt3Ye3ML2R2xsLsDe+Po5Ytw7x/2bP5d4X+O1Zq5Jo6r+F4HF0NJDpiaOLTBSRqdNyC SSff6zXNf+/bb/nJJ/1q69/wSPIP++L3/nFF/wBbul5/pI/mQf8APT7C/wDSx/mj/wDUvv3+s1zX /v22/wCckn/Wrr3/AASPIP8Avi9/5xRf9buvf6SP5kH/AD0+wv8A0sf5o/8A1L79/rNc1/79tv8A nJJ/1q69/wAEjyD/AL4vf+cUX/W7rXi/nu/NH+aB0FW/GQUXyr7b6Pxe8qbt0rTfHX5e/KBzuKv2 vLtsVE+7arcVVi6gCmjycS0UcTyxnyTllRgCwS5o5N3XlJoU3No28cMV8Nmb4NNa6lWnxCnHqQuR vcXYPcGO5k2NJkFqUD+Miqf1A5XTpd6/Aa1pTHVImzfnH/Ow7FxDbg6++YH80rfeBSsmx75vZvyB +We58SmQpkSWooWyWDy88ImjWSNniL6lDKSAGFwn0PelX/s038+n/vI3+bt/6N75lf8A1x9+6917 /Zpv59P/AHkb/N2/9G98yv8A64+/de69/s038+n/ALyN/m7f+je+ZX/1x9+6917/AGab+fT/AN5G /wA3b/0b3zK/+uPv3Xug43l/MT/nD9XZSgx/Ynzl/mT7Ay9VTplMdi99/JT5O7bq66hSoaBa2DGb kzMJnpzLG8ZbxtGSrIb2I9+6919a/wDlHfK2p+bX8tv4e/JLLV1fk92746b2/iuxchlXp2yWQ7Q6 /eXrnsvL1QplRQK/OYmur4PQuqGaJ9IDD37r3VjXv3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917oDvkl/zJHf3/AFAY3/3e0vv3Xuhx9+691//Q3h+v/wDmcff/AP1H9af+8NH7917ocffu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691XV88/5r HwV/lubXqM38pe8tvba3S+NkyW3uoNtyRbs7m3eGo6mrx8eD6/xsn3EMNYaSeCmyeVejxxmXxPWx sQPfuvdaHH8xb/hXP8yflDX5bp/4CbOq/i111uCrqNs43edIE3f8lN7RZKarwtGMRlKaJqTbk1ck 1FPS0+CppMlS1aaIctMrAH3Xuqc/kR/Jp/mi9cfD3dP8y35TdX7g2hsCs3ttobmpO2Nw1q9/1UPa Oamhh7M3TsLIRzV2Nx0mbqKeirBnZ6TJGqyFPKtBJTyTVMXuvdX9f8ItfnMdkd6fID+X5u3MNFt/ u7Anvrp6jqJVSlh7S68x8WG7Iw+OhB1PV5rbIo8hISpVYdvt6lJAf3Xuvoi713vsvrbaud352Lu/ a+wdj7Wx82W3NvPeufxO1tqbcxUBAnyed3FnZoKOjp0uNc1RMiC4uffuvdES+Lv81L4X/Mzu3dHR fx27Cz2+c7gNg1HZOC3nLsTdu2+sO1Nq4fc8ezt6V/TO+NzUtJT7pi27kqrG0uaq8SstJE9dTLFU TkzCH3XurFvfuvdRqukpa+lqaGupqetoK2nmpKyjq4Y6mlrKWpjMNRTVNPMGSSORGKOjghgSCCD7 917qnvqX+Xlg9idi9k9T7y+Tfy1q6fctdkO3eq6zYHcNT8fzLsOfMvisvsbL5Hoal27ldy1uz6ms oKWXMboyORqZKDJYhPL5IpdPuvdDPu7afy7+IsdZ2V1t2Zv75o9GYRTkewPjx2rjdrZD5Gbe2tTR M2Wz3xv7f2nRYh9xVtBEDWNs3e1FkK7L2eHH7ioahaaiqvde6Hjtik+IHy8+Kore5X6t7W+JXdGz to7vhy29K6mpdh7l2xuL7TcOxdy4/M10lLLR1LSyUVViquCaCsgqfE0DR1Crb3Xuq1eiOlPjFsLs bO7y/lpfBba+W7VrNeAyvzG78TfOTxW36WmgGPnxGI7B7Trsnvetgp5IZMZlsDjqzHz0xMNSKSsg uD7r3Wh7/wAKK/jDhfjd85Mtk9g/IbqjuHsbtzIbr+TW+KXpzJbJ23vDpDvOmqVfujDbu2rs+uer xsmQp6DCblxuRrFpJqirp8pJTUFO7zk+6919Dr+Sj/MFpf5lX8u3oz5D5LJUFZ2xjsW/VvyBoKEx o2N7q6/ghx26K2oo4VVKZc5TPQ7mpaZLrFTZKGLUxQn37r3VNX/Cuj4A5DuT4lbE/mB9R0mQoO9f g/nKCt3Dm9tien3FWdG7j3BTtWZGGroCKnzbSz7UWdpJkIFHSzZepJXll917q6n+TP8AzAsf/Mt/ l69GfJWono/9JP8AC5etu98XRiGJMR3bsCGHG7zcUlP6KaHLI9JuKgpgSYqPI0yMdQPv3XurTPfu vde9+6918oL/AIVV/wAuBPhT/MJr+9dhYNcb0V82l3B25t9KKnEWN273FRVsI7v2nEsYCoJq6tpN yQCyoEyrU8S6aVre691tkfyLvlAn83z+TUvQ2799Q4/5U/Eeq2b1xT76rIxlNw7N351LX03YXw0+ Q01JKWkqDS1GHxyVTzSlslVYXKpN+1UOG917rYv+LHe8XyP6N2b2fPh12ru2Zs7s7tXYf3JqqnrX unrjcFVsHuLrasnYBpHwe5Mdksck7KoqIoo6lAYpkJ917ow3v3Xuve/de697917r3v3XuizfLnoi s+Q/R24tlbcytHtrs/b2U212j0ZvatSoan2L3t1ZnYN8dT7nrfsis749MvRU9Nm6SF1Nbi566gc+ KqkU+690lNl5vq3+Yl8Mpo94bZyFFsjv/rfdnXXa3X1ZVCm3X1zvCF6zr3tvriuyEKhqLcW0NxUm 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 SoKbA7XxctR+399l8jLSYugV+GqKiJTwffLf2o9ud693PcbZ/bfl6gut3uFhVyNQiSheaZlqupYI UkmZQwJVCAQT1Ju6blDtO3zbjcfDEpNPU8APtYkAfb18v35x/wA235qfOreW7q3f/cm9tq9U5+Ss ocX0VsfcmV2x1hjNsyzT/bYfKbcw8sMOWk8U7RT1eWFTPMulZJHVEA+nz2S+677P+xeyWtlyvtFv JuEKr4m4TxJLezSChMhnZdS9w1KkfhxoSfDSNTpGNW9cz7vvczPdSsIycRqSEA9NIwcYqak+ZPQ9 /wAt7+eJ8vPhH2ltVN+9p9id5/HOprcVit+dUb/3Nk97SYza6VRWryPWNbuapeXEZKlillkp4aap ipah1jjq45I0TQB/vG/cz9p/fblm6W22222nmDQzW2420KQyeMB2Lc+Gq/UQMRR0kqQrMYmjkIkC 7l7nDdNjuVLSNLBXujYkinmVr8LehHyrUY6+nFtbc+397bY23vPaeWos/tbd+Cw+59tZ3GyrU47N bfz+PjyuGytBULw8NTTSxzROOGVgfz7+Y3fNm3Hlzerzl7eIzDd2E8tvPGeKTQSNFKh+aurKfs6y ShmjuIUuITVHUMp9QwqD+YPSg9lXSnr3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917ovHyt+SOw/iH8cu3/kp2 U8p2f1Fs6t3NW0NPIIazO5NpY8XtjauOmZXVKrL5SoosXSu66FmqEL2QEiSfaH2z3n3j9ytn9tNg YR3O7TiISMKrFGqtLPMV1LqEMEckpQMpfRpBBNeirdtyh2jbptyuBVYlrT1NQFHyqxAr5V6+Xn87 /wCap8xPn/u3dFV232tunGdUZjJJNhOhNq5rIYTqXA4vHZR8ngKWp2pQPHT5SrpHZWGTyq1FWzJG TN+3GE+n/wBjvuz+0vsJslvZcl7VD9fHHpl3GWNJL6dioEjPcFdahzU+FH4cK6mEcaKdPWNO9cyb rvszPeSnwyaiMEhFHlReGPU1Jpkk56En+Xp/N0+Rfws35tXF7r3rvXtv43hcHtzdPUe5M3U7lO2N o40/a09b0824agLha3HQPIabHU1RT4+sAWCrRStPVUmXHKfPe8csXSDxGmtKgPCzEjT5mOp7GA4U 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 eOGj2/mRg63LRf3TyOUx2RxzvLRzR1+LyFTEsVZR/cGnmqEh9peWOc9n5qhLWLaJVrqiegcAYqKE hl4ZHCo1Baiqznf225j5DuAN0QS27U0TxgmIkiuliQCj8e1sNRtBYKxByPYs6j/r3v3Xuve/de69 7917r3v3Xuve/de61Lf+FSH6fgx/r/Jv/euvfeP/AL4f2u2/ZP8A4YesuPuvf2G9f6a0/wAFx1sz /wDCNv8A7dH7j/8AFv8AuX/3idoe4G6yu62vffuvde9+691737r3XvfuvdaUn/C1H4njfnxJ+Nvz CwePWTN/H3tbJ9W70np6ZvMevO7cdHUY7JZGrXjwY/P4OgpKdHHEmVcqRqYN7r3SF/4RP/LSn3L0 R8rfhRm6+gjy/Vu/cF3/ALAo5snVy5nJ7T7Mx0ezt+w0eMqAY4qHEZPDYiV3p3sZ8wTJGjsJJvde 63lffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691ilk8UUsttRijd9N7X0KWtfm1/fuvdaqHx1/4UUfNH5I9X7U796+/kQfLLfnQO 90z67V7K6Y7iwXaz52s25uWs2dlI8Ztv+6OImkip8pj66iqpzMvieFvS4sffuvdG86H/AOFEnw73 33Ttz42/J7qb5Ufy7e9t3R0ce1to/Njp6u6swO6MlXV38Pjx+D3hHPVQxIXGtK/MQY+idCuioMpM S+691cN8ne5v9lx+NfyF+Q392/75f6B+ju2e5v7ofxj+7396v9F+wshvf+7f8f8Ata77H777H7X7 z7Ko8OvyeCXT42917qhXp3+c9/NT7+6s2B3Z1H/IC7L3h1h2ltXDb42DuuL59dC4eDcW1NwUi1+F zNNjdw7cpK2KOpgdJY1qKaNyrA6QCPfuvdWofBb5RfMz5Fwdqz/Lf+XjuP4Gf3LXaB2DFuL5D9dd 8S9pfxtMq+52pT19j6NMUuH+zx4Y1TSGoNaNCoIGMnuvdKL+XX/ME6K/mW/GLZvyZ6IyRTG5kyYb e+yK+tpKrc/WO/sdEjZ3ZW5koyP3ItcdRR1DRx/c0ksFR4ojI0UfuvdGt7U3v/oz6w7H7I/hhzf+ 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 aeGKo1B5mQRv7r3VgHwU/nQ9DfMvvvdvxA3p098gfhr8x9mbWj3lWfHL5T7Ig2PundO3Ywz5bKdc ZOmqJ4cvHRReKskSRKaeejl+9o4amlp66Wk917q4z37r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3QHfJL/AJkjv7/qAxv/ALva X37r3Q4+/de6/9HeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3XvfuvdEA+dn80D4Rfy39nndHyv7y21sfMVuJmy21er8ZJ/eXt7fUQi q/tBtTrvEF654KmehqaOLKVa0+OSoXxT1sJ9+691oWfzIf8AhXP8vPk/lMp05/L32jlvi91rnqmf bGP3yIqbdHyZ33/E6isw9IcNV0KzUe2JKyOegkpaXBpPk6arjPhy8iyCNfde6B/4Jf8ACXb+Zf8A zDd0J3x81ty7h+K/X+9clLufcO7e84crvH5MdgNl6tspkK6g6uydTDW0E1VK83mqt212PnjeQVEd DWxkhvde63x/5d38kj+Xl/LLx+PyPQHTNHn+3aej+2yXyI7aah373VkXlh+3rXxm4qmnhpMBDOno no9s0GOp5VCmeOVwXPuvdWEfITorrv5O9G9s/HjtrDrnet+5tg7m673hjj41qDhtz4uTGzVuMnkV /BW0jOtVQ1SjXBURxTIQ6KR7r3XxmM1jPkN/JS/mivTWWPur4R/IKlr8fLOk+Ow/Ym2MZVJXY2qZ CHmTCb12vVozAfu/YZEi6yfT3Xut9T57bp278ta/oH5W7F6G7Y/mC7U+Smy/jX8pf5fPTiZLF7w6 p25u/pfOU8nyw+OnanRu/M/RbJRs5tOvSsbNPia7cdJkkzbRpPSbbhgh917o2H80b5Z/GTA9Z/y7 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 3XukVs7/AIU/fyS9tdYbVxsPy6ze5t07e2HgqSTZ22vjX8pp89lMrhtvxRVeHxU+W2XR45pi8Tos k9fFBxqaZU9Xv3Xum/8A4T5dV9z5jdP8y3+YH2J07un429a/zFvlDje3eg+hd9YuXAb0xGwNuRZq Z+1Ny7eUiGkqd3PnYppSIleokopKtXqKOeiqJPde6rE/kvfzrf5Zf8v7pr5b9E/Lr5L/AOiXtWr/ AJivy137T7W/0NfIDfnk2nuDcGOx2Hyv8c6y2pmsaPNNQVaeBqwTJ47vGqshb3XujTdad97f/nI/ zvfhN8ufhV1vvqT4kfy9Ot/kDiuy/mRunYm6utsP3duLt7Ysu3tv9T7Jpd10FNX19HinyMNbBS5K OjqVGRytV9qsUMLVvuvdbcHv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3XugO+SX/Mkd/f9QGN/93tL7917ocffuvdf/9LeH6// AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3XvfuvdfMh/4Wvf9vJ/jZ/4o7s7/wB/12D7917rbr/kk/yg/gR8OvjN8aPkV1Z0ni818iO1ehOq uytzd6dkyRb47Hx+a7J65odxbgx+yMjXxJS7doQ1dPSLFgqOkklp7JWS1Tanb3Xur8/fuvde9+69 1737r3WhP/ws3/lxyZbb/Uv8zfrjCySVO1I8P0D8k0ooWZE25kclLP0z2LXLHZEWmyNTVbar6mQs 8jVuFhUBIT7917oDf+EqvyO258q+mt+/yrO1u2Oxurd+9KdjUHzI+FPafW+V2fQ9k9dzUtU+F7j2 z1zV9gYbO4iIvHlq81lBU4is+9xm4tyKUjRTIvuvdbxHxc+A/wASPhqdx5H4/dKbR2fvXfFVW5Hs Xtaqo/7wdvdk5bKV7ZfK5DfPZudM+XrhPWSSVK0TVS0dOzaKSmp4VSNfde6OF7917r3v3Xum7LYn GZ7FZPB5vH0eWw2ax9bicvisjTxVePyeMyNM1HX4+upJwySwzRO8csbgqykggg+/de6IBtr+Uv8A y1tuYPA4Kq+FnQnYQ2vT01Lt3cfeOyqX5DdhYaGjijgpBju0O923HuSNolhh8TrldSGONlIZFI91 7oLO8utq3+XNsTdHyg+N2+M5iujusMfJuzvL4l9m9kVme6mz/W+KcVe7sz8d8z2lk2fYO8KCgSWf CYXH5an2vlZUagqsVTVtcmao/de6Mx2/8s/ixRbF2/RbsraXt6m7cwO28ltDpzb2yarsbeXYmP3f ik3Ns2ik62qaZnpjlIAstAufjo45JF8YYTKVHuvdFi3juntjEdV5bd/ZO4uov5W3wp2fjXrcpkKj cG1NvdqJt+urNOjI5JI6Lb2yhlaetQ0y0NUcxQ5WPwtHVCUK3uvdfM2/m2UXxwPzE373v/Ld7P7L 7J6DbeEfZ+y++8ntTsnbwHyV2/HQ5n5DbZ2T2TurH4xs3kqSsGM7EkqaOFIqaPI1E1NppzFJP7r3 X0+f5P38wHB/zL/gH0d8noKmgXf9bhzsLvbBY8QxR7Z7y2PBDjd+0YooPTTU+RZ6fP4ynuSmOyFH qOstb3XuqF/+Fc/wE3DvnonqT+Zz0TBXYjvX4U57BUe+c9t1DFuF+nK/dceW2tu2nqIQ0pn2XumW Gup9CgQ0uSyNVKwSmFvde62AP5TPz423/Mp+BnRfymxcmPh3duHb67V7l27jyqx7R7r2aiYjsPCr SgloKeepC5XGRyHUcdWUcjf5z37r3VkHv3Xuve/de6+Sf/wqH/l0zfBr+ZBu7srZ2CXGdD/Mps33 p149DSfbYjC79qsgg7t2JThAsaPSZqpTNQ08KLFBRZaigQftNb3XutyX+TZ8s8n/ADjf5NlFsmu3 lT435m/FeTa2xE3zl5JamvwHfHST0u+/iz3vlimqpqaPJvj8V/eJbgZNoM9QSA01RIje691sE/Fn vvHfJnofr/uOlwlVtHMbgocjh9/7AyU0c+Z6w7a2TmqnZHbvVWfli9LV+2dy47K4OrdPQ8lK0kZa N0Y+690YL37r3Xvfuvde9+690Rn+ZLit8ZD4Vd65HrzsrJdXbk2Zt3H9jfxbHdky9NDduB67z1Lv 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 /DdebB6WzWFpNip1/F91k9/bh3zQ52pylTvDAZmV7RYDHrAkLxIlpCVYvcQf7pc2cw8vbtbW2z3J hR4dTAJG1W1sK1dGPADgadZQ+xPIHKHN2wXt3zFZi5liuNCsZJUovho1KRyIOJJqQT8+tT3/AIWI 9C4noPffwLwWE3xv3edBndpfIbLFN8vsl3xlZFmdn0cxxh2ZhMMLTosQlFQsp/bTQU9eqEt55k3v mJo33mczmLUEqqLTVTV8CrxoONeHWTvLXJnLPJ6TJy5ai2FwVMlHkfUU1af7R3IpqbhQZ6v1/wCE bf8A26P3H/4t/wBy/wDvE7Q9kfQo62vffuvde9+691737r3Xvfuvde9+6918bX+ex8bsz8Cf5xXy dwmy1qNq4uv7ax/ya6byWFqqrG/wvD9qVEXamLO3aqhaCopVwmanr8TTtE6PE9D+1IQqSH3XuvrU fCb5JYT5hfEX43/KDb7UAo+8enNidg1tHjata6kwu483gYZd3bZFSFQtJisqK3GzBo0ZZIHVkRgV HuvdGi9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691Hq/+AtT/ANQ83/Ws+/de6oJ/4S4/9uKPgz/5cz/8GH2D7917o7f8zP8Ama/Hj+Wj 8e94do9pby25U9pVOAydL0b0dT5CDIdi9xdj1VM1LtPb2A2bQzLkZaBq96dcrkkRYaSnLO8gkaKO T3XuqrPiN8TeyPhz/wAJlPkR133RR1OL7l3z8IfnP3r2fhqtJ6aswW5O5usd070osJkMZVUlDJQ1 1Lip8bDlMc9Khpa5amn9fj1t7r3Vo38mT/t0v/Lh/wDFMfj3/wC+1x/v3XurKKv/AIC1P/UPN/1r Pv3Xutdj/hKX/wBuQvi7/wCHj8jP/gg9ye/de6K589Opt9fyPp/lL8ovjFsrcu8P5ZPy02dvyg+V nxS2FS4uSD4xd9b82lVbXxPyR6SwVX9lR4nAZWoagotwYsV8NIjuIUjKfwWHF+690b7+Vz8xPjt8 KP5HX8sXsf5Mdi0PWGyN87O6n6awO5svQ5KbCJvjf+eyUWFhzmWo4ZKbF0MUFNWVtbk8nLBSwQU8 heXyGOOT3XujZ/zlfiN8fPld8D+8M12/Pjtn7l6L6s7A7m6X7/x/8No95dLb22btxt3Y/Pba3JNH JImPr58bR0+Zx0bBa6AIEMdZDRVVN7r3VJ/ze797j+UH/CP3cHenf+NyOP7e3v0H0Cu8qjLyTS5T c1Rtf5cbX2diuwci08cbCfc1Bj6XcMqlfS1aVDOAGPuvdbcHXf8AzL/Yv/hnbZ/90kHv3XuqP/8A hOZ/2Qx3B/4v/wDOH/391Z7917q/H37r3VB3/Ccz/shjuD/xf/5w/wDv7qz37r3V+Pv3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3XugZ7+6jyneXVu4OtcL3N3D0Bkc5NipaftLobM7VwHZ23v4XlIsk8eBym9 MPnsciVSxGmqlnxcuqF3VdLEMPde6KR0F/L/AN+dHdr7Z7Ozf8yH+Yh8gsbtyPOJP1P3z2H0Lm+r NzNmdv1WChl3Jitidc7eyUzUL1IyFEIcrEq1UMLyCRFaNvde6sd9+691Xn/M7y/wc68+JfZPfHz2 6W6r7u6l6TwGU3HjNq9kda7T7LymS3TmIkweF2n11jtz0lV4MzuCrkpcTBJTmIfuhqmWOljlkT3X uq2v+E+v8sTF/E/q/sz5q9o9M7J6h+UHzo3Fl+0X6w2tsXG7Kxvxc6B3dlF3V138a9p4OEyTYuGm jNNX5mjaSOXypQ0ddE1Ximnk917rYVzG5du7dkw0W4M/hcFLuPM023dvxZjK0OMkzm4K2GSoo8Fh krZENVWSxwyvHSwBpGVHZVIViPde6J/v753dUdXfOPpr4K79wm8Nsb1+QXUW5uzen+zMnQUMXVO9 tw7OzsmO3H09jc8KgzruanoUXMfbTUyQvTywpHM9TNHC3uvdQv5l+yvjRvz4IfKTEfL2jwM/QlF0 9vbN7wrs5TUdTPgZ8RgpqnAZ7ai1aSH+P09f9ucClOjzzVxgp4Y5ZJRE/uvdV5fynvmvt/pL+X5/ J96N+cnZdLs35PfLzqOs250Vjs/RZRaHf+3NmpLkusKafeaRNh4MhVbOq9oQUtLVV6VNfXVsEFJD NLKVX3Xugc/4UsdK9cbF+IqfzLNgV8vUnzp+GW8+q8r8fe6NiVeJ292Ju6m3F2RQbWzfTOdnqYZv 7wYZ6HJ5HNR4iop6gwtS1DRKlHU5SKq917pY/wA83pnv/u74GfFz5q9LbDp6/wCTnwF7q6C+fdH1 kskxq8jj9hY+PP8AamxsU0uoO1IJIq+eOdJfNS46eBIZqiWFD7r3Vr/we+cfx4/mI/Hna3yA+PG9 aLcG3Nw4+not4bWXIx02++p96tRLJn+t+xcPSSLVYnNY6RyjK4VZo/HWUck1JPT1Enuvda7e5/n1 37/IO+c/YPVH8w/tvuz5G/yz/lDR7w7M+JvyO3vVZ7tvtXpTe20sR/EMv8ftw5N/LkcjHIhpsdSp UyFWd8fko3hWfOGD3Xujlf8ACe7pntPJ7E+Y38yXvLZuY647H/mk/Iyu7/2515mv4jBX7T+P+BfI Q9GUdfjslT00kMz02YybwS+NxWY/7CuSaSOpjWP3Xupf8iXZWzvkZ8Ffmr2rvXF0O9OrP5jHz/8A 5gvceQwOSxlRRUG4Or+xt9y9K1WByEUiU9RLFU0O3p4pHljimCyGNgrp7917qqyt+SnyE6W6I33/ AMJsdv7k3TlPnJm++af4kfHTtDJYTceS1fyyO1MRNv0fJTOblmp8jjZ5dqbEGX2xkMbBV089EI4R RqZMfI3v3XurQf52vRux/iV/I/fC9FYKLb+F+AW5Phj2R0tSmjrq1sVUdH/IDaWPps1l02+9JLUT y0U1dVZasBV5HlqKpiJj5F917rYdx1fTZSgocnRSCaiyNHTV9JMAVEtLVwrUU8oVuRqRgbH37r3V A3/CpT/txZ82v+oj40f/AAXOw/fuvdXsbf2bs/AQ0c2C2ptvCyxUNPTRS4nBYvHSR06xoVgjejiQ hBpWyA24HHA9+690rvfuvda9f/CdvZ20cn8J+48nktrbcyGSl/mAfNxpchW4PGVdbI0HdNXFC0lX URNISiqqqS3AAA4A9+691sJKqqoVVCqBYKAAAP6AD37r3XL37r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3QHfJL/mSO/v+oDG/ +72l9+690OPv3Xuv/9PeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3XvfuvdfMh/4Wvf9vJ/jZ/4o7s7/wB/12D7917r6D/8vb/sgX4P f+KgfGn/AN8xhffuvdG/9+691737r3XvfuvdAZ8mPj5138r/AI+9x/G3tnGrluu+6+vdy9ebogCR vVUtHuHHPSQZrFvJfxV+OnMOQx9QtmhqYYpkIdFI917r4zm1c58jP5L38zmjyM9O2N7z+E/f1Rj8 1jlkqcfid94HEVb43N45JyDKcFvPbVVKkcwGqTH5BZUszKR7r3X2OcJ8x/jTl/jV138vKzt7Ze1f j/2lsrZu+Nn793lncXt2gyNBv3GRZPbODVK2a75qoaUUaYWDyVjVgajjheoHj9+691VD2/8Azie/ dw9U535P/CH4F9mdx/DDqXH0Ha3a3yf7rqano2k7N6E2/VQ53sTO/ETpjcMKbt3dIdtisyeLz+Xo sTjCYD4o8iGRG917q9LZG9dq9k7L2h2LsPO4/dOx9/bXwG9dmbmxMxnxW49qbpxMOd27ncZOQNdP WUc8NRC9hdHBt7917pU+/de6JR/MB7r7q+PPxo3P2x0fjuuZs9tzPbTi3buLs6n3BmMD1711l81H h919i0mztv1OK/j1XiVnhnXF1+5MBj/F5qqvzdBS00jN7r3VA21t0fG7vbsHb/Z/zK/ma/Hemy+2 lhzOL3JvL5A9Pb57C2BX0kcv8QyWxaXBVFJ1R0/OkCpV0eZxW2KXeNJAzUWdyVcNFTJ7r3Wxr8aO l/jZ17s/H7r+PdNtXc2L3bRVFWO3sbuSHsjNb7pchWisydYezJKitkq6Spronq3paOqWhSpMjwwR MWHv3Xuq3/5g2Fwe2PnJ8V+/PlZ1D2h3z8Futuo+xaDAYDrzpLffyQ210t8y8jvTEVWze7u2OlOt KHN5qvjk2vHksHtXP0+3MhHha+WpDmklycE4917qkz+ap8UvmV/OFreyO2vjH8OZPjP8fOmuj8bu DGb8+YO3sn1J3D8o9+dEDO7o66251r8e/HBm8FSpQZrce1KTJb3+xpKvGZ6tD06+Km8PuvdVE/8A CSz5/U/xS+cuf+GG+twtD0x85cLgK7rOtrJ5ocLh+99vUE9Xs+Gm+7LRRy5mkfJ7TrzTu5my9Jjq QvJ4AV917r6VPaHWuyu5etuweoeyMHS7n687S2TunrvfW263X9nntn70wc+3NyYepMZDBKmjqZoW KkMA1wQQD7917rQy/kI9hbw/k2/zj/lf/Jh7+zdZ/o67w3Z930NurNSNS47Mb6wOIl3L1HumjT0U cDb92XUJSZDwl2/jFDjcWl5UcD3XuvoEe/de697917qjb/hQt/Loh/mMfy3O2do7XwJy3fHRdLW9 +dAGipPuc1lN4bIxFRNuDr3HrEBJKdz4Zq7E09LrWJsg+Pnlv9stvde6+ff/AMJnv5kX/Dfn8xzZ mA3xnv4T8fPln/Buh+3vu6nwYfA53KZQ/wCiDsmu1lYk/g2bqPsqqrncR02LyeTmNyq2917r6Ze2 aFPjF85N07dDvRdOfPlZ9/7Rp7CPFbX+YnVuzhB2jt6mJ9Mb9gbExdDuWio4VVBWbV3LXTM1Tk/X 7r3Qvbh+cfxT213ttL401/c+163uveG5BtCDZm3o8pun+6+55sJW57F7f7L3BtynqsXtSuycNBUR Yai3JW0U+SnC09BHUTME9+690YTe2+tkdabVze+ux947V6/2Ttqhmye494733DiNq7VwGMp11z5D N7hzs0FJSwIOXlnmVFHJI9+690Ret+WPevfkq4b4NdGSZfbNZGC3yz+TmO3V1f8AHqippGKJlOtO tylJvvsdvQZKZqGkwW366Fo56TdbI66vde6DvvP+XPuTuHp7tDK757uzHefy+n683ufj/wBjdu7f wc/x+6E7nq9tVMPX+9usfirHHVbOomw2VanqaLNZ+izu4oFX1ZyoZV9+6918q/rz4G/zWf5nfyk7 I2xR9V9//IL5AYHfmb2T3j2N2plMrVYvr7d+2MvJhdw4TtDt7fdQMXjZsbNFPEmMlyHmKxNFQ00p VYz7r3W6J/Ln/wCEbXx56rgwnYP8xbsio+Rm/o/s65+k+q8jntldG4SojdZpaDPbvC0e5ty2ZBaS D+CwaWeKWmqV0ye/de63G+punep+hthYLq3pLrbY/U3XG2Kf7bAbH682xh9o7XxUdh5GpcNg4YYB JIRrmmKF5Hu8jM5JPuvdCT7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3XusckaSo8ciK6OrI6OoZHRhZlZTwQRwQffuvdaZG3u1NuZnvj5J/HT p2gO2ts/HTtjPbWwg33jFxG5MT16u75sfgNqU3VNGaSvxcWL+wzu3MW+dmpapsZR4HcX2uRos9AW xY9yuV7Xl/eP3gNTw3dWVVqAriuoPIxc1Pa3BmlPiGqUHUB877Db7PuX1nc0dxUhVwA3nqdixzhu BLnWapToa8btugoaiDI1UtVm85DC8K5/NPDVZJBPR09FXfYJBHFTUCVS0sD1VPjaenglkXyNEZCW MZyXkrqYkpHGfwJUDz45LPSpoXLEA0BpjoCvcyFTGlEjP4VwPz4lqVNCxYjgDTp+9ouknRBfld/M u+JvxCFbh9+78XdfY8DSwxdS9bpTbs34tTE9OJ4c1S08qUuJMUdVFVPHlKqCZ6fXJTw1BQr7Guwc icwb/SaOPwLfFZpexKH+EHLV8iBpJwWB6Fmy8nb3vjBoIjHGfxuCBT+iOLY4EDTUULDoteyun/50 X8zVIKqjxtB/LA+L2ZmpnfP7kizNV8itx4Q1EX3D4XD6aHLmSOaleWCoYbbpKyiq08c9amsmEvc3 72f3ZvYQy7da3Dc5cwQgj6ezKNbRSio0zXPdbxaXGmRF+puoWB1RDtrknyV7Bu2i7vkxg+JMMfbH D+wqW4eT9XKfB3+Sv8Gfg4+O3Ztnr9u4e8Kd6asrO+e8BQ7431Fl4Sk33+0qOqhGM2+Y5VY082Lo 460RkR1FbU21Hlt75ffi99fe15dumvzsWzOWC7ftzPAjIdQ03E4InuSVbS6sywPSogU9ZMbHyRsW xqGjjE0o/HIAaH+ivwrnIoNQ/iPVtfvDnoZ9e9+691Xx/Mo6Br+6vjXuncGy8bhqjuPpqhyHZvVV blqCrq4Bm9sRR7hOHyKYHAbkzNZj3qsfj8tNgcTjJHzFVjaGgqEmpZZoZMxvuP8Avhd+yvvhYNPI w2ve3jsryMMQhLtpt5SpntoS8cjmNZLiTwIFnknZWMYHQN512RN52Vwo/VhBdD54HcPhY0IFSFGp tIUcetQ2t6ny1Pi6fc3fedx2a2lkqnY+Jk6yzO7ptkdQ7Z3LtLFV2xdu4DemdaunbLUtbWUu8uss tm9y11VDQQYzuPfRRa54K+r+ny2ube9t47u0kWWKVVdHRgyOjAMrKykhlYEFWBIIIINOsamVo2KO KEYIOCCOII6m7L733ntyv6w7H+NGwtwb43b0h2S3aHXnZOdok6rwW68TtOnWqn2XhMEaabL18naG H3fmdt5DDYnEwY6Ou3r1ztemyVPHtKghrwR7oe3mxe6/t9u3t1zGmq03W3kgY0BaNiKxTJqBAkhl CSxmmHRT0s2y/n2q/i3C3PfEwb7R5g/IioPyPW51vLtfZXcfxU273TsncGbqemOx8L1H2DuXcm3M rR7R3BB8c9x7pw2a7kyUOVzMlNJiaqm2TLm2qzHNBkaRklWkkgyMcLp80fsNyfsnIn3ttn5H94YF EO2brJa3EciSvG9xF4iWxVIlMsqzXAha20ArKXhbviYhsjt8u5r7lWa92hsyRBlIIBCmhbJwKLXV XhQjB6Of8jv5e/wu7M/l3ds/DXG7B6b6P+NWa6vzmR25k9o4HbO0djdSZzGYU57a3e1BV4w0dLHW YOsp6bPS5iapVqgQu1XPJFLMX+pjrGPqlj+SP37mvkX8O139uTckG4t0DeM2J3yaatXIQQ9g4vbO Nod1bihracJTTybz8VN2NlqijiWKTMbiymoR1K1NNT/PR/elbPse3+/lluG2Wr211ebdE102iNYr hkdxHOjRjvfQfBl8VvHBhWqLCYJJZ+9spp5NieOVgypIdIqSVBAqpB4CuRTtzxrqAuK98z+pL6Dv s/be5NzbPrY9i5qLbPY+AqsbvHrHc1Q88dHguxdo1yZ7aFVlxRgzS4uasgjo85RJxW4yasoZA0NT IrS57F+5kntB7r7Jz/4YngsLqF7iErrWWASKzgpqUO8ZVZ7fUQEuYYZQVeNWBNve2jd9rmsK6WkU hTwo1MZzQH4W9VJHA9C7X/zHOg927L23tHb2yt897d+9h7Doazc3w06gwGN7H7a2RVZ6ifG7g2d3 jNXT0G2NkUtLWLXYipy2/c1hsbUSwTR0087lY2+tPYN+2nmfZLXmPYp0ubO9iSaGSNldHRwCCGQs p9DQmhBFcdYqzwS20zW86lXQkEEEEEfbnrWu/lPdYfIT41fNjvn+Rr8jO4u1Pix0ZX0e5vmj8UOq emN/0c+7eweouyssKvcfRcXyvioKLcFDS7ejjmbIjYtPh6+oy9HuKpp84KNF+8OOmetiPvr4w9Uf Frauwe3uhdibY6y2d1rlsvi+88dhEOPp909Z9l1lKu6u1995jJZKljyOc29mqbF7ky27txSZDIDE Ln1Ejz17ye8Gfv7ew494/Ze63DZ7Yy7zso+ptvDj1TSiMNWECOCSeXUryRxxGWG3iM8l1MWMKjob ci75+6N4WOZqQzdrVNAK+eWCjgCTQsdIUcT06+/me6yT697917rFJIkSPLK6Rxxo0kkkjBEjRBqd 3drAAAXJP09uxxyTSLDCpd3ICqASSSaAADJJOABknpokAVOAOgqj7Lk3XTQTdSYen39R1cFNVUu9 KjKtgur5qOqioq+nqsZvGGnrZMylRR1ck1HUbeoa+jaankpausoZLMB2nJltskpPuBdHbGQmtnHG JtxJBIKvbF40syCAGF9LBMFdZIredK9ITdtOP8QXxK/jJpH9oahL/wC0DDFCynpF5z447Z7Oq8fk /kBXP3MaAQS02wstT1OL6Loq+BoZ0yEfTn3VXQ5SdJ6eKqparddRmamin1tj56RJDH7PrX3av+VL WXbva+2XYUlDI94pEu7SxsNLI24lEeBGFC0VilpGSqlldhqLDbUl24k3JjORkIcRA+ojqQxHkXLn 0p0YiCCGnhip6eKOCCCNIYIIUWKGGGJQkcUUaAKqqoAVQLAcD3E88891O9zcu0kkjFndiWZmY1Zm Y1LMxJJJJJJqc9GiqqqFUUAwAOAHSJ3DvGvotx4DYGzdlbs7J7K3XR1eTwOztrUKRww4PG5rHYPN 7r3bu/LtT4bCYrHPlKaepmr61ameJZY8XSZGtRaN569h/u3+5P3hN4k2/kiBPAtq/UTyOiqlEMml EZlLyMq6U1GO3Erwxz3Fv40bEj3zmLbtgiEl6x1N8KgHOaVJpgDieLUBKq1COuXaf8s3cPyt6H7Y 6++S3ce4tr7g7O65zu19qbW6J3FuLb/XvSm6MpiclQ4jeUuYpzistv3JUEtbSTuNwJS4aSShpZ6X A0FYjVknev7vf3E/aL2KMG9zR/vvfIwa3tyiUR2WKv08Z1eAEZZkUxsjSwXEkN144CFYM37njdt7 1QqfBgP4FJyM/Ecaq4Oa0ZQV056VX8pT5cb0+Rnx8z3UfyAxuJ2j80fhXvKp+MHy42FjUhpKaDfe yKcUu0+0duUMUcKNt7fGEjpdw4aspIFopGkqqejZ4qQn3m50C+h2+fvxt378lfjnu/AdHb4oup/k 3s7H5nd/xr7cq8JhM2uw+1I9vVeFpoa2nz1LWQDG5yhq6zAZdzTStFSVklTFG1RTwWBnPft/yd7m 8uycpc+2Kbltsro728jSLG7RNrjLiN0LBXAcKxK6lVqalUhXY395tlwLuxcxyAEBgBUA4NKg0qMf Z1WB/JJ+WnxU2l1nJ8IN6pi/iz/ML21vrdGX+THxY7SjpNg7yzfbuVqIqCozfTEORqZqXdOz48RR 4nE7MnweQrpItvUOMSoZ9C1E4os7SDb7OKwtQRFCixoGZnIVFCqC7lnY0AqzszMcsSST0md2kcyv xYkngMn5DA/LHQN/HKLZXYvzs+UvY/x9oKnaHxB67o02L1HtXBVLSdd7n7Y3fuWqy3fHbWwX+1kj xeEz1XjaKWh2phcpDhpoo6TeRxss+56Gth49f3r/ADjy3b7VsHJdokDbvdOZ7h9ETzLaW4fwEZtZ kipLPK0LPEG0S3KW8qpNeRyy57WWlw0s945YRKNKipALtTUeFDhRWh4hSwqEIs998SOpr697917r 3v3XuoVbRUWUoqzG5KjpchjshS1FDX0FdTxVdFX0VXEYKqjrKWcMksUqMySRupVlJBBB9qbO8urC 6ivrGV4Z4XWSOSNijxuhDI6OpDK6sAyspBUgEEEdMsqupRwCpFCDkEHiCPMHoOuofmD2Z1p978Jt h9Mb/wDkt8j+tcJt7K9bSNkMptLq6i+N268jkMF1Hv75F/Inek+eOMmxkmGzG2cm8ceY3LnZ8PLl 6HA1CVcyUn1Hfcu944/ez2F2zmGVVju9vY7ddRosaIk1tHGaRxQwwxRQGKSM28SK/hw+GjyySiRu sZecdoOzb7JADVJP1FJqSQxPEkklqg6iaVapAAp0l/mJ/K27p+cfxs7OxvyD+T+cy/yanxdPvH46 Y3rN8z1t8VPjz2/srP0e/OsavHdWiesqN4tFlMbSUOX3Dv2bKzyU0tXLicfghP8AaJlh0Fujb/yz vmm/zj+Le3+xd2YD+4ffnXm4M/0b8q+p51EGQ6q+SnVk64DtDas9FrkaKlmqgmUxWp2LUFXTFmMm sD3Xuk7/ADQ/jR3H8gfjRu3K/FyvxWH+WHXO2901fT02YyWWweJ31htx0tPB2Z0XuDcGArsXX0FD vHHUcNNT5GjylFNjsxTYjLxVdNNjo5kjn3L9reUPdnZrfZOcoPGitLmG8gYLEXiubc64ZEMscq9r 0ZkZTHMo8GdJbd5YZDDbd0u9qmaazahdSjDNCrYINCOI4GtRxUhgCCqfydPmb8JN3fGjbHxWwG6x 1L8men8Nmaf5VfGT5GY/G9VfILCd0ZmqqNz947n3L19nhSpkMfkczV1+SSswscuPpqKopqVkoRGt DBIENvBaQJbWqLHFGoVEUBVVVFFVVFAqqAAAAAAKDHSBmZmLMak5JPEn1PROfgfgMHu7vn5O959Q 4mv2N8OpZtsde/DbrelzWbiweO68qqVN37o3NS7eyKIU27mw2A3H13hZJXotq4vLV+Kw9BhZa3Ow VfED+9a9ztg3jeOXPbjZJLa5ns/qbq8kWJHmhcObaCBboVZV1i8FxbqdImjj8QCSOizV7XbZPDDc bjOGVX0qgJIBFNTNp4Vpo0t6E0werVvfH3qXuq6Nr/3G6p/mw7Ck7+x53f1F3jg9q7h+PFXu+rxJ 2z098x6Sb/Ry+48XtqjkiOWfKYym25gKPcu46Opqds5rK4PEYOuSPdr0dB9A/wDdec/7DzD7Q3XJ 6wQx7ttEzJK8UTCWSzLGa2adlQxIqy3NwtuDIjTyC9mWFpVu7iaAfcywng3ZbwkmKUAgE4D0o2kE 1Joq6sHSNArTSoRf84f5SdW/LzevU/wh/l4ZrH/Ib+Z3tXsSlymyt09YCi3d1Z8RtsZl0wfYfYvy X7Io4azEY7G4oR0edpcJHJU5GHcWI2/XGh+5pKCKo6R8zcs7HzlsNzyxzLbi6sL1PDnhZnVZY6gt G+hlZo3ppkjJ0Sxlo5FaN2Ux3bXM9nOt1bNpkQ1U4JB9RWuR5HiDkUIB62Fvjh0nS/H7p/anW7Z2 Tee5aSGozfYvYtVhsRgMp2d2buCc5bfnYeXxOCjipaabKZGSaeOjgXxUkHho4LU9PEqtcqcqbByP y3Zco8rW4tdu2+JYbeEM7iKJPhQNIzuQPLUzH59burqe9uHu7ptckhqxoBUnzoAB+wdVUfzmO4N+ dnUfTX8pn44Zlcd8if5jVVm9p7/3VSRPXT9AfCzb8Ov5H925KCK0cc9TjfLtzb0FXLAtdV1NRHSz rVUyj2Iuk/Ri9m/BPsL4Y7a27jP5d3aFVgdg7RwuEwr/ABC+R+7N4dgdAbkxmAxUGGiPX3YlWMru 3rTKzRw+eWpw65XAyTtLLPtaSqqHrY/de6Bvefe28vll2ZiOqt99Idi9E4j43Vu2OwO5evuyqbaO dx+7+8ayaXI9Q4ra+7tunLYXP4HbcNL/AH1iyONr4KlcjUbamkioqqhraFeWX95t7+y8le39t7Sc s3Gm+5gMq3jRyd0NlGieJDII5lKm6WdU8OeF45IGd10yLGwk7222IXl+27XK9kFNFRxck0IqPw6S aqQQ1AcEjoZffAXqe+qS/wDhRT/250+XX/BugP8A4J/ZPvOH+7m/8S65a/5pbp/3a7zoE+4X/Kp3 X2xf9XU6s2/4T2/9u1Olv/DA+Nn/AMBD1V7+mbrGzoOPlh/2Xh3r/wCIi+On+97s95D+yP8AuFuH +ni/46/WH/3n/wDko7R/zTuP+PRdBn7nLrFnorPZH+mHuvvnqX4hdQby2B1J/pYzNBiN89ubzyu6 KrJ4fHbh2HvfeGC2ZtDa3XtTjMxFk89SbG3LLQZZNw4dguKraWiyVBk5KGrSGfdHnbcdkI2TbKwy SrqaUGjaTUdlMrn8dQaqwAFKnJP2K9stm5mD8y75puIrd9CwFaoZBpastcPjjEQV0srMTqooo95f FLdP8hZ9o/zDvjH2Z2r2X0HLv/buN/mq9Mbp/u/UYLsnYO/8/T7fqvln1rsLaVFjMbhd37Trqqne tXH04fKULGbKVkkyZWuyGN8srTSNNKas5LE+pJqTj59ZnQQRW0CW1uNKRqFUZNFUUAqanAHnnraZ x2Qocvj6DK4yrp8hjMnR02Qx9fSSpPS1tDWwrU0lXTTxkq8ckbK6OpsQQRx7p071Ub/MljjPeHxd mKKZU6q+UcaSFFLrHJu7qlpER/qAxRSwH1sL/Qe5n9lP+S7d/wDND/rInWNv3mT/AMhXbx/y9/8A WGTqujM0fyb7Q252/Q/DDo2HvbsfqTNbE21nDn97bF2L11jt17ljoN25vZGSzu5MzQVbZvH7Tr6H cDUcNN4vHk8R5KhFq2MUic6e5NjyzLJtlmnjXqBDRgfDXV3UYgg10UNB/GmT3AQ37a+y2587QQ75 uMn022SGUBlI8ZzHVAUUqVCmWq1PlHIKA6CxRetvlZ8hab5Z5j4d/Kn4k1nxv7Gw+z8pur7yPtfb /aSVqzVsU2waoUHX9FWUdPhdw4uLM1NLuGozQpYcjjpsFKP4nNTxSpeS/c1uZtz/AHXe2625Kkq6 uzBmBFE0lcVGo6ywFQqfE6gmPuX7Ix8kbH+/dsvHu1V1V43jVSqENWQOH7iraAY1QtpLSYSNyD/+ 5Y6x+697917oJMNtCiou9+x9/pU1DZDcnUfSez6qjZU+1gotj7y7AzVDUwkDV5JZNw1Ky3NtMcdu dVyuG3VN5uLkHMkUAI/0j3FKf710e3N5JLy3Z2LAaYbi7YHzPiR2la/ZoFPt6Fv2adEXXvfuvdEV +adF8ftnY/bnffZHZVT0h2n1djs3/or7V2lmN4YrsTHnM5DG4upx+Io+tMlidx5CiOTnwwrExWRp JY1k8EldS0NdXpUx57hbXytebaZ9+kW3kUHRIBWQ1oKaAQXAbTQkgKaAsEZw0xe0O+897dvIteVo Xu4XZfFiLFYhTUamQhhGSoeoAYuoJVGkSNks4/l9/CXvz5Fb56D/AJin8xruzH/IXcnXOx5cr8B+ sMVUbIyuzOo9j9mY/wDiFL332Rm+taPH7b3V2Vn8HNjojksPSHFY2GNHoZa2q8NdT4mz+AJn+nr4 eo6dXHTXtrQAVpStAM+XWftr9R9NH9Xp8XSuvTXTroNWmpJ06q0qSaeZ62BPbfT/AFQl338huqMJ /wAKH/gN0jk92Y2k7Cr/AIDfLajpcPJV0yu+U7H3ztfdO08TJrcaamqx/X+46mKDmRkhQhdMisfd e6vt9+691S7/ADBv5eXfO5+4qf8AmAfy3e3Nv/Hn544DrTIdUb7j3ZQYuq6l+UPTuk1lBsjsyHKY /K01BuDCVKQ1m1d0zYusWnkhio8hT1FAI/tPde6pF+H+6+le+N2bn78XvGf5EfIyeGs2rvfd+7Nw RZ/dWBgpRR5OrxeGn++yVLUUUdNksVHJXbbrX24Hlb+AUuJpK2agOTvtltnKUFt9XtUwnuiDq1gK 6cCQF86AqC649Ahdw2D3vfvnuBcXv7v363NpYqRo8Ni0UpFQGLfhDFXZY2AJNatKscTLYV7lzrHr ouu9vk51fsbdL7Wy24tg0U9Bk0w24shvP5E/E7pCl2zkanHrlKCCrxnyL7A2dlK8VMckYikwWPr0 DMokaO9wAN79yeWti3BtruzI0ifFoQMFPoaspr9gPkeBB6lrln2V515q2dN828QpDJlPFkKs49VA RhT5lhmo+IEBx6r+RfXfbOSo8DgcnhDuLIYHM7qocXt3svpTubG1G2MLkMdQ1OYG/wD447o3ptVB J/F8XNBSSZ5auSKoVxT/ALVQITDlrnnY+apnttsMgkjXWVkTSdNQtagsvEjFa54caFfOvtdzTyFb RXu9iJoZn8NXik1DXpLaSrKj8Ac6dOOORUefYv6jnqt7e2RoenflXt2h+C3d+3ek/nj8mt50+xcJ taPdC7d6r392DhdtJlTH3kklNkduBTQ1WJmrsdncFlsnUwSxLteixudzDZpsffdDbOToZHu45PDv XqPDjypZVPxUqsZqylxpLNRP7PW0hy89jd89x7qKPbpoTLtkZBE0xo6o7D4NVHmFFdYiGCJWT+18 NIhsm/y9PgFUfEGm7h7e7l7Om+RXzW+VW6sfv35QfIiuwsOAgzlfiKAY3aHVnWm3UZ/4PsratKXo sDjdZchpJpPGrQUlJBHWVXVk3v3XuqEP5JHyH6q7q7X/AJz+H6/3Ti8/kcF/Nm7j3PVQ46tp6uOf aWU6j2V1Zt3dNFJGby0OSyeyM+KOpRTFKsGqKSRfV7917q+/37r3Wpj85fiX33/Ko2j2j2D8V/lF kumv5W3bnbNLu/vrojG1Ue295/GjfPbOYg2hHW/Hrd2Dkx25v7i5/cNfjRmNnbM3Dgs9jyVk27XG I1VDMt22Oymvo4tykaKFjRnUaitQaNpNKgGhIqMVoa9Fm8zbnbbbNPs0Sz3KLVI3YorkEErqAOkl ahTQgNSoIr02/FnA9A4fqfHVXxyy+A3PsncNbkdwZDd2JraLJZXc25s9WSbhz2S3jW00cMq5d6mt llraSqghmppHaJ4ISDGMxuUrHYLHZ4xy6yyQn8YILMePeeIIr8JAK1yKk15ye4O6c3bnzFK/OKPD cqTSJgVVFB0/pipUqStNakhqYNAADHexN0B+ve/de6ADbmzMnQ/KfuPsWWSnOG3T8fvjRsqghVr1 SZPYPY/bWdy0syfiN4ty0QiP5Kyf09k1vbPHzBd3f4ZILZR61R7on/j46E15exS8o7fYIDrhur5z 6UkisQtP+cZr0P8A7Oegz0nd17pwuy8BkNybgq1pMbQCmjOmOWoq67IZGsjxmGw2KoadXmq6+vrJ oKHH0VNG89TUyxU8Eck0iIyLdNwttpsJdxvGCxxKWJJoPQD7SSAPmR0a7Ls97v8Au0Gz7chkmuHC qAKn1Y0xhVBY54A9ET+Kvyo+aXzBO191dN/ywu7d0dH7q3DjKKi7xx3bnUtHs07ZmxQk3Dl6KTec uFhyGQw+U82HyOMx1ZPFDUU9RDJXJWQy0aQ3D722TzqktgyRlgGYShiF82C6BUj+GtD/ABDrI+5+ 7HuUdq8ltuscswQlEMJRS44KX8VqKRxfTVT+E9HgkzMWc2rn6tcdncPUUa7uwWVwu5sHlNt7gwue 2xXVe3NwYfLYbMxQzxTUtdS1EBbQYpQolgklgkjleVU3S03rl59ysGLRSxORUFSO04IOQf5EUIJB BMDSbFuPLXN8Wy7qoWeC4iDaWDKe9aFWGCD+0GqsAwIGxL0HhKfbPRXSu26SWaopdv8AUvXGDpp6 jx/cTU+K2dR0EM04iCrrZYwW0qBcmwA94RddO+q/v5snzI7f+NHVXU3TfxRocNmPm982O2KH46fF qnz9J/EcDszPZDFTZrfHdu6cdLS1cM+J2biYnyFSlRBJAJ5aVqqJ6IVIHuvdVF9//wArTvn+XH1f 2d8wemPlDn/lHuWDD0vafy1x/wArMtmpuyu+9z7dwBx+Qx3WO7tpUVfDHNlKqaSl2jtqowzV9NWz Y+kTP1mNpxhKsWcq84bnyncGSxAaOQqZEatHC1x8jmoalQRQHSWDADnz262Pn+zWHdNSTRK4hkWl Y2Yqa8O4dtCldLAkkFlRkFjaO5Yt3YKHORYrJ4Xy1uYxs2Ly7YmWtpavBZqowNcBWbfq6/H1UDTU 0j0tbj66opamBo6imnlhlSRsvNn3a23vbId1tlZY5hVQ4o1KkZFTxpUZyKHrnnzHsF3yzvdxsN8y PNbMFYxnUtSobBIGRWhFMMCPLpTezHok6Oz/AC3P+Z1fJ7/xF3xg/wDer7T942e9f/JdtP8Amh/1 kfrNL7s3/Kr7h/z1D/qynWp5/wALi/8Aman8u3/xH/yO/wDej2f7hnrJTq3/AP4Rt/8Abo/cf/i3 /cv/ALxO0PfuvdbXvv3Xuve/de697917r3v3Xuve/de60D/+FtnxK8lD8PPnLg8dGGpKjcfxb7Iy KU153iq0q+0uoEkqYkv442j3kr+Z7BpYhGLs9/de6Px/wjY+WI7e/l3djfGLM5eortzfEruHIrha Gelmijx3VPd5qd87Zgp619SVJG4oN2tIFYNCjwo8aIYXl917rb49+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691jkQSxvGbhZEZCRa4Drp P1/Pv3XutdfHf8Jif5eG2dp0myuvuzfnV1dgcdURy4qh6++XvYGFocVG+a/juTpcbhKmOoxsUdfI 1QtWVotZE80kbx1BWdPde6Ml8U/5A38rz4g9nYfuzYHQlfvruXbtYtftzsvvLsHevb+ewNbA0UmP rcVjN21kuIjqqJ4IJcdXfw01VJJGstNNFJdz7r3VonevUG2vkH0h3J0JvOuzmM2f3f1V2H1BuvJb YqaCi3Lj9tdlbRrNmZ2t29WZWmraWKuipa2WSklqaOeJZQjSQyoCje691Q/tH/hNd0HsDbGD2VsP +Y7/ADjdk7N2vjqfEbb2jtH5wwbb2xt7E0i6KXF4PA4bacNLSU8Q4jgp4kRRwFHv3XurLPgp/Lw2 x8DqbtWl298ovmr8k4+1zs01rfMHvn/ThNss7Njy0cQ68nlxWNfGjIjLN/FFJlWc01IQIzE3k917 pf8AwF+DfUH8uX4wbF+JXROZ3/nes+vslvLKYPJdm5nB5/eMtRvnd1bvXMJkcpt3GYikkRKuumWn CUCFYgqsXYFz7r3RsNx7c29vDb2d2lu3BYbdO1d04bJ7c3NtnceMos1t/cW381RPjcxg85h8kktP V0dXTyyU9TTVEbxyxuyOrKxB917oqGM+AnxUpPhr/wAN/wCZ6uoN6/E5do5LYEXVe9K2vzdLT7Lq twTbjw2Cps6JIslHJhZ5IThMqlWMlSPS0tUtaa+EVZ917qrKm/4TmfHTIJg+u+yfmf8AzIe6PiPt iXA/wL4Q9ofKSuzHxwpsTtSohn2ttCoweMxlFk3w2OEKx0tNFkopwgVXqnGvye691aZ8wfgv0f8A M/4c73+C++4twdcdEb32/wBfbTfHdKttbZWV2rtjrLd+H3jtTb+yIslislisfRwyYOioRTri2SOj 1xQLC3jkj917o2+GxVPg8PicJSPNJS4fGUOLpnqHRqiSnx9KlJC87xKilyqAsVRQTewA49+690Vv 4YfDLq34L9Vbj6g6hzO+s5tjc/bnZ/dGQq+wsrgsvm4919tbkfdW6KWjqdvYzFQLQpVSP9nC9O0k aHS80lgffuvdG49+690Uf4YfDLq34L9Vbj6g6hzO+s5tjc/bnZ/dGQq+wsrgsvm4919tbkfdW6KW jqdvYzFQLQpVSP8AZwvTtJGh0vNJYH37r3RuPfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3XvfuvdEp+XPwK6K+bm5vjNmu/TvHcW3Pi93NB3ttjq2k3EaTqvf+/MTiJMftap7a2dJDJFm4MP O/3mPhkdFDNPTzeajrKunm917o63v3Xuq3/nn/K6+Of8xTenxW313tnO2cPmPiF2bWdo9bQ9Z7xx 21qDM5bJV+HyGTw+9Ya/G171NDUNg6KNvspKSpSMzpFUx+Uke690JXzl+AHxu/mGdXY3rD5C7dzb TbUzUm7Or+zth52bZvbvTm9vs3oIt6dY73pUlegrkjcExzwz0srJE89NK0EJj917qunbf/Cf7orM b12vuL5W/Mz+Yr899kbF3MN2bO6H+XfycyG/+jKHNU0bxYnIZ3ZGGx2MbKyUitoWOsqzSzJrhqaa aCWaKT3XurL/AJlfBb40fPToyt+PfyO2BFuTYy1NFltp12DrJtsbv6z3XiKd6fbu9etdzYrTNicn jg5+3eINC6XgqYJ6aSWB/de6ru6x/kOdF4btfY/aHyU+WHzv+fVF1Pnqvc/UnVfzS7/PbXUexs9L LA1BnRsmPGUMNfWUaU0UcH3bGmdTItRTTqUEfuvdXne/de6op+QP/CfH4S9q9u5P5A9C72+TP8vf u7PpVtujfvwF7hfoI7urKjw+Os3Bt+moK6hj0GG7R4iKgWV5JpZvJPIZffuvdAq3/CYX4K7/AP7y 5j5Z95/Or5zdg5raWS2vt/sT5VfJvP783B1rV10UsUG6tgpjqSgh+/pmeCSKLOJk6Fmp4llo5I2n jm917q2D4FdGfJn4+fFra3x9+UfeeA+QO9etIMjsTZ/eW3MHkttbr3b1fjoRRbCruwcTnmrYTuWh o9NJV1kc9RHVCGKedpqlqiWb3Xulp8Jfh/1j8CfjD1f8TemstvjPdcdSwbrh29mOyMvidwb4yJ3j vnJ9g5ebcGZwlBi6WeT77LVKxNHQxWiEatrZWdvde6eMj8Seh8p8sdt/Nqt2VSzfIranSWe+PuH3 rJIZRT9b7g3ZT7ynpEoZwyR1kFVFURU9fB45hTVlZTSNJFKqx+6909fKL46dffLn479yfGTtR83F 133hsDcHXW7qrbNTjaLclDiNw0ZpJclt6uzFJX0sFfTNpno556OZY5kRzG2m3v3Xul51V19Q9TdX 9b9V4vNZ/cuM6z2Fs/r/AB24t1zYmfdGfodmbep9uUma3LPgaPH0L5CqjplnrHoqCmgMzOYaeGPT GvuvdAD87vhZ1P8AzDPiv2f8Qe8crvnCdX9svsp9y5PrbL4bBb0pjsLsLE9l4U4fK7gx2WpIteQw 1LHUeWgl1QNIi6HZZE917o3EaCKNIxcrGioCbXIRdI+n59+691k9+690Uf4YfDLq34L9Vbj6g6hz O+s5tjc/bnZ/dGQq+wsrgsvm4919tbkfdW6KWjqdvYzFQLQpVSP9nC9O0kaHS80lgffuvdG49+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3QHfJL/mSO/v8AqAxv/u9pffuvdDj7917r/9TeH6//AOZx9/8A/Uf1p/7w0fv3 Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdfMh/4Wvf9vJ/ jZ/4o7s7/wB/12D7917rec/l6/Jzq6T4FfCuOhx/c2Ziofil8fcTLkdu/Gn5Iblws1dheqcViMnH j89gdp1NFVpFUwSwmalqJI2KnS5HPv3Xujhf7Mv11/zznyA/9JN+U/8A9hvv3XusfX3yh6a7O7Oz vTe1stvKLsrbW1Yt65ra28Oou4Ot6mj25NW0+PFYtb2LgcVSyyq9ZRtJRwzvUJFUU87xLDPFI/uv dGE9+691737r3Xz+f+Fnf8uiGnn6d/mZdc4Jlevmxfx++SLY6k1I9RFTTVvTPYeVMAuCYoq3bdbW Ten0YWmUhiob3Xugn/4TZ/LHe/yX+HvY/wDL/wAXkKXI/KL4E7+xfz9/l3pmsjT065uTAZKrou0u jTNWOq0+Oza53M7brKhVeWKg3plJ0Mf2MBHuvdXqfCr+YPB8WOnx8Wu59pZD5idtd9baX5XfF/oP 4OdH723Hg8h0v8qM3mNybq6Fqdodh11b/cjF9e7iXK0uUk7Ez1BSUWJymOoadQuPnoaT3XurOv5O 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 RnqPOf8A3DsPb5LObcYGlju3dNStTwyqggsNJJQ17itWUCqo57eivdyfNz5dfNCg6t6a7D+Nuc+N OS2NWbZ7P3nOcjjN9dcb67Mwe4Zsj1Z2Lh98bblyOMpMXsCpx9JvH+5lZkXzVXvIbdok+72njsvu OqONp9teZJt7i27c7V4ojl5Kgoq0461qrEH8AILUoGWocB7fverky35Xn3nZL6OecdscNCJWevAx vpdVI/0QqypUMUcqYyKWAwWI2tgcJtnAUaY7BbcxGNwOFoI3nmSgxOHokx+NoklqWeRhFDGiBpHZ iBdmJufeVttbR2lvHa240pEqqo40VQABU5OB59YDXt5cbheS3922qWZ2kc8Ks5LMaDAqScDA8unf 290m6Hf4ZZrv3D91fID/AEHdadP9ifcdXfHT+9H+lfu/enTP8H8O7Oy/4J/Af7ode78/iX3Gqr+6 +4+x+38UPj+587/b42+9f/JdtP8Amh/1kfrNL7s3/Kr7h/z1D/qynWqL/wALNcz3rl+zPgO3d/XP UvXlVT7F+QC7ch6q7p3h3HT5Snkz+1Dkpc1U7u2DsRqB4mEIgjgirBKGcs8JRVkhjrJTq9j/AIRt /wDbo/cf/i3/AHL/AO8TtD37r3W177917r3v3Xuve/de697917r3v3Xuqhv58HxLb5nfypPmF1Lj cS2X3vgOtaruXrOnp4kmyb7+6UqE7JxWMwwchRU5enx9XggWsClc63W+oe691oCf8JI/lkvx5/mt 7e6nzWSSj2b8uutt29M1i1VVUQ4+LfGFp/8ASP1zXNAh8clVNVYmpwlIZEJDZNlVl1sG917r6unv 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de6A75Jf8yR39/wBQGN/93tL7917ocffuvdf/1d4f r/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+6918yH/ha9/28n+Nn/ijuzv/AH/XYPv3Xut7j4MbdzWxvhB8L+wevsdNlKbJ/Eb40VnY nXdGY0/vTo6TwcL7s2mkzJFDuGGJFWSNmSLJxIsE7JOlNUxe690YfcndNZ2HWUnXPx2yuNy+78vj aXJbp7Amo2yG2ekts5BniTLbkxtSIzPuWcxzRYfa1QI5vNG8+RSCjgcTe690w7b642z1b8gelds7 ZirJI5Oi/lFmM5nMxVvlNzbu3NlOyOpZs1u3duamAkrclWyDXUVD2AAWKJY4I4ok917o3vv3Xuve /de6Ld8v/i/1z80vjH3f8WO2aX7jYfd/X+b2TlamOniqqzAV9XGKvbW8cRDOQhyGDykNFmMcXOla qlhZgQCPfuvdfHQ6T7G+Qn8lH+aJhtx5nGVGP7d+G/fGW2l2PtelqJqbH782jQ1ku2N+7epKuZVE uL3Rt6oqDja0oVaGqpq2IXEbe/de6+xH8TsB8WqjqnD91/Evr3q/Z3XfyepMb8hJtxda7I25sx+z a3tKkG8031u9sDTwSVuUq1r2kqJq5pJ0ZmiYrp0j3XujO+/de697917r3v3Xuqvf5sGY782n8d8N vXpzs/sLrraG3d9Yym7ypOn9m5jcvbO7dibopZdsbdw+y8rtCiym5cYG3LVYWDJ1G08cMuKKeeel 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 JQ18D4aKSfrDbwrKaOelmg3gdDQ5Gnk9+690cLub4XfDr5HZmk3H8hvib8aO+dw0FOlJQ53ubojq 3tDM0VLGNEdNSZTe+Krp441HCojgAfQe/de6VvTHxs+OvxwxNbgPjx0H0r0NgslMajIYXpjqzY3V 2IrqguZTPW43Y9BQwyvqJbU6E3JN7n37r3Sy7I7N656c2RuLsztrfmz+suutoY+TK7p31v7ceI2l tLbuNiIV63Nbgzs0FLTx6iqhpZVuxCi7EA+691qO9i/Mz5e9/wDzR2v2Z/J93Vu74/fBz5Vdpbd6 y7m+X/ya6Mx8fxO358oM51vkut9jdp9F7L3dDT7zzdXmqXH7d2vQ5FI8Xtuv3Vi8HRV/3MmSdq33 Xurrvgj/ACZ/iT8It3ZvvKXG13yH+X29c1uXde/flb3TjsDk9/1W6t756t3bvWr6329jKeHDbLos hlcnkqyWk29SQyyGpkWqqqq+r37r3Vtvv3Xuve/de6IH/MWz1Dmei1+NWK2ZsPsztf5g5iToDqrY fZO0sP2DsWlrM7ip8nvft/sLY2bjmpshtvYOAp6/deUp6iNY6uWlo8Sk0VZlKPV7r3Wtl2b/AC0/ mV/Ia6F29kv5W/yt3lvml+QnZ23ule5+ue1equt83trb+T3jPml2F3V1vuWqOQzW2KzCwtFjJKeW h3FiZMjWzZzJ0dFiIqmOjXbZt11ut4ljZIXdyowK01MFqfQVIBJoMjor3nedv2Dbpd03ORYoolZi SQC2lWcqo4sxVWIUVJocYPR0NpYjNYnEvNuzcEm799Z/IZLdnYm9JYJ6STePYG5qx8xu7ccePqai qaipqisll/h+LjqHgx9GtPj6XRSUsEaZq7FtMOybVDtsWfDUAnPcwABNSSaCmlQSSqBVrRR1zN5p 5huOZ9+ud6uMeM7FVwNKEkgUUBdRqWcqAGkZ3pVj0p/Zt0H+ve/de6SVH/x/e4//AA0tlf8Au4z/ ALSJ/ufJ/wA04/8Aj0vRlL/ySIP+a0//ABy36VvtX0W9e9+690W6n+HXxRptw1+7/wDZcul6zdWT zWd3FW7iy/XO1s5m5czuXdJ3vnMiuTzFNPKklRl2ORPjdQs9nQKVWwai5N5WjuDdCwhMjMWLMgY6 iak91fP9nAY6G8vuRz3NaLYtutwsKqqBUkKAKq6QOzSaUxxzxNTnof8AMQS1WJytLCnknqcdWwQp qRdcs1M0caXcgC5IFyQP6+zy/jeaymhjFWZHAHqSpA4449Bba5o7bc7e4mNEjljZjk0CuCTQVJoB 5CvVgmy/5kW2dsbC2lg634yfJmpye3toYLE1dPRSfGhhUV2JwsVJPDSTVXZUSEPJGVjaRkU3BYqL 2xTb2p51EZf6ZTTyEsdT8vi/y0+dOs9I/fr2zdxH9Y61NKmCYAfM9laflX0BOOiq92/IVfkp2RiN 3UPUHavVON21shtuNF2lU9RSVuYr6vPPkzLiYuqt2bpQRRRgCRqySnbUwCK41FZN9q+VN+5eu7ub eIPBWVEVasjVIYk/Azev+rHUJ+/HPvKnN+3bfbcuXYuWgkkZ6JIgAZQB/aIvmP5/bQN/c0dY09e9 +691737r3R2f5bn/ADOr5Pf+Iu+MH/vV9p+8bPev/ku2n/ND/rI/WaX3Zv8AlV9w/wCeof8AVlOt Tz/hcX/zNT+Xb/4j/wCR3/vR7P8AcM9ZKdW//wDCNv8A7dH7j/8AFv8AuX/3idoe/de62vffuvde 9+691737r3Xvfuvde9+691imhiqIpYJ4o54J43hmhmRZIZYZFKSxSxOCGVgSGUixHB9+6918Wn5r dZbv/lL/AM4LtvbXXlOm3Mn8TvlljO0+kkqYFycVJsWHclF3F0bNUwSugnLbfrMOZ1EqksXUOjDU Pde6+yn092jtbvDqXq/ujYtTLWbK7c682Z2ZtGqmjMU8+2d9bcptz4OWeFuUkNNVR+RCLq11IBHv 3XuhI9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+690B3yS/5kjv7/qAxv8A7vaX37r3Q4+/de6//9be H6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3XvfuvdfMh/4Wvf9vJ/jZ/4o7s7/wB/12D7917rea+HvY+5sv8ACv4R9MdMS0cnY8nw0+Lt ZvTelZSJlNs9I7ZynSuGalzudpWIjrc9Wxhm2/t9mBmI+8rPHj4yZ/de6NPt/p+P4+UUmZ6focxn qCurKnN9r7WyWRbK7l7Pz1cRJnO0octXMgk3hMRrq2cxwZKJUpGEBhopKf3XuuR3Fhd2fI3ovcW3 chDlMPlPjz8mJqOshEiavH2T1RBUQT086pLDPDKjwVNNOiSwyo8UqJIjKPde6M37917r3v3Xuve/ de6+eL/wsz/lwPt3fXVn8zXrjBt/CewVwvRnyTNDAWFLvTA4lo+oOwMiYwzEZDD0su3KqokKRRHH YqEXlqufde6On/wjw/mWp2f8bOzf5e/Zuaqq/ffxepcp2p0lAwnyOa3D0HubMGbde2MTQwiWpqpd sbjqwyIt2NNmaKlp4/HSED3XurfKH5u/Oz599i4Pqz4Tbf6z+FfTe9ej9nfIPAfKr5IwYfufu3sX pnf24MjtnFbw+Ofx12NkKja8FZR1ONifJLvjcstRjYcnijldv0tRWw07e690OH8tTufuvafZ3ym/ l1/LftDOdvfIT4s7spOyOse5t40WIxO6PkX8O+8q+qznU3ZddSYaGko5slt3KR5jY+4jjqOOmgnx 9JYXqVLe691b37917r3v3XuoOQyGPw+Prstlq6jxmKxlHU5HJ5PI1MNFQY+gooWqayurqypZY4YY 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 iukV1ZIRSteJZ9CgnqDNp99uW7jfLnYN3U2skNxJCklR4UipLoD6m0hO0NI4emAEj8VyFIv7r+ZW E/mFZbY/dmwsTvHb3QGzMZVJ1Pt7fdDg8dnM/wBi5SllxO/uyM1hcc9f9lU4mCSo2hi0TJeWEncC zxlKyHQN/aDlZoIX5jvkozEpDWlQKUZuFQclKBqHuDKGUdRh94fntbu4j5N2ySsaASXBBNCxIaND 3UYUCyVKAjtKMVc197nLrFvr3v3Xuve/de6DXF7lwdV3BvrZ1PkI5dy4LrXqjc2WxQjnEtHgt2bp 3pitvV7zMgiZamowuUjVUcupgYuqhoy5fFPE+6z24NXSKEkegZp9J/PSf2dHE9tOuw2t260jknuV VsZKR2pYeuNa8fXHQlezDon697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuhv+IvyB 6q+PXb3eWS7czmZ2xjt8db9CUW1q6j2Lv7dlHlazaG5+w6jcdItVszF5BIpaRMrjnkjnZGKzoVDC 9sePeSwvrve7V7WGSUCChKIzAHxGwSAc9Zh/dw3Ta7Dlq/jvrmKFmugQJJEQkeEgqAxBIr59an// AAsk+QXU3f3ZHwLyHVO4shuKk23sjv8Ao8zNXbP3vtEU1Rkc9tOekihXeeNx7T3WJyxpw4TjWV1L eFp7K7tCBdxPFq4a1Za040qBXrJe03Db9wDGwnjnC01eG6vSvCukmlaGler5v+Ebf/bo/cf/AIt/ 3L/7xO0PabpZ1te+/de697917r3v3Xuve/de697917r3v3Xuvm8/8LWfiYNmfJz4v/MvA4xosR3l 1jmum9+1VJTP9qm/em8ouY23lsvUkWFXlcFnkoadddmhwjWRSjM/uvdbDn/CTb5Xn5E/ymNjda5n Jw1m9Pibv/ePRuRhmzJyWam2VPVjsDrbK11JM7y0lLHQZeTA4+JrJ48SwiARQo917rZq9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+690B3yS/5kjv7/qAxv/u9pffuvdDj7917r//X3h+v/wDmcff/AP1H 9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XzI f+Fr3/byf42f+KO7O/8Af9dg+/de6qL6S/nEfzruiOtds9a9JfITuzaXXODx9Im38biumtg5eOWi WiipqGqnz2X2tV1le32sVPDFU1dXM/gjijV/FHGq+690LH/D9X/Cgj/vKz5Af+iM6y/+w737r3SI of50P89HG7yn3/j/AJG98Ue7aijz1DNlIOlNgRxtDuiXEz7kcYwbT+0E1c+CxDVVQsAlkNLFqc2N /de6W/8Aw/V/woI/7ys+QH/ojOsv/sO9+6917/h+r/hQR/3lZ8gP/RGdZf8A2He/de69/wAP1f8A Cgj/ALys+QH/AKIzrL/7DvfuvdAL8nP5wX84P5D9Kby6S+UvyF7Q3n0j2HHi8Xu7au+eoOtcNgc2 2Oy8G5MNGclDtejnhqIK2igrKaWmqY5UkhV0YFb+/de6LP8Ay0vm1uv+Xd84Pj78t9rxVmQp+r96 Rf3523RyBH3j1duakk2v2XtPRIywtNV4asrBQPOGSCtWmqdOuBCPde6+jDnOq92dN/LnZ/yp+EW3 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 X19/9jvv37gb/o4Xf/ORP+tfXv62R/8ARp2//nDJ/wBbuvf6K83/AM/s7g/86+vv/sd9+/cDf9HC 7/5yJ/1r69/WyP8A6NO3/wDOGT/rd17/AEV5v/n9ncH/AJ19ff8A2O+/fuBv+jhd/wDORP8ArX17 +tkf/Rp2/wD5wyf9buvf6K83/wA/s7g/86+vv/sd9+/cDf8ARwu/+cif9a+vf1sj/wCjTt//ADhk /wCt3Xv9Feb/AOf2dwf+dfX3/wBjvv37gb/o4Xf/ADkT/rX17+tkf/Rp2/8A5wyf9buvf6K83/z+ zuD/AM6+vv8A7Hffv3A3/Rwu/wDnIn/Wvr39bI/+jTt//OGT/rd057M6A7h7M3HuTa/WO4fkLv7I bPwe1c9uSbE7l+POEo8ZR7zr8vjsBGZN8xYl5pZXweQLrTxyKiqhdgXUewNzXv23co3UVpf3W4SN KpcGN4SAASM6gprUenUoch8qbz7hWM9/tNjtEKQSCNhNFcAklQ1RoZxSh8yDXy61X/8AhUN092r0 5uL4X4btOj7Uoa7LYTvrJ4mLsfcvUOfpWpFrtoUlRLgk6oqKhYZC6AVprmBcCn8IsknuF+dOZLDm N7ZrF7p/BDg/UmM01aaaNHD4Tqr8uslfbLkzduT4rxN1jsYzcGIr9Esqg6A9fE8UCvxDRTh3V49b QP8Awjb/AO3R+4//ABb/ALl/94naHsDdSl1te+/de697917r3v3Xuve/de697917r3v3XutfL/hT z8TD8q/5QfyCqcXi5snvX41VWA+UWzkpqZZ5ooesfPSdkyuQDIIo9m5LcdQ3jI9cUZa6qffuvdal /wDwjI+WZ6r+evcPxQzOSiptufK3qCbM7dohjGnqa/tfohqnduGiGTjYfbwDbFbu6WRJY2WSSOEK 8bDTN7r3X03ffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdAd8kv8AmSO/v+oDG/8Au9pffuvdDj79 17r/0N4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+6918yH/ha9/28n+Nn/ijuzv/AH/XYPv3XuvoP/y9v+yBfg9/4qB8af8A3zGF 9+690b/37r3Xvfuvde9+691737r3XvfuvdaoX/CyT/t0ftz/AMW/6a/94nd/v3Xuvlie/de6+mf/ AMI7v5isXevxL3x8CewdwSVXaPxNrJt1dYRZGqWWtzfx23vl9Yo6APeaVdrbinno6h5G0Q0uTxNN EAkelfde6tt/mMf8KCv5b38tyTMbR7E7Uk7j72xfnpm6B6E/hO+t9YrJRAoKXfuWerp8LtvRIYzU U+XyUdeIm8tPQ1NtJ917rQ9+fn/Cmz+Zt/MZz1T0z8c4858Weqd4Vc2DwnUvxxqc/nu7t+QVmpIc TuftnF08OdrppkaSKSh21R4qmniYxVNNUgaz7r3Q2fy6P+Eknzo+WlXiu0vmtnaj4bdUZqoTNVmE 3RRjdfyZ3jBWSfd1DjYU0ywbdkqT5I56ndFWlfTykSNh6lDz7r3W+N/L9/kz/wAvX+Wlj4Kj41dG Yv8A0k/Zmjyne/ZMsO/+7cuksP29WE3nkoUTEw1KWFTQbdpMdRykBnpi3Pv3XurTPfuvde9+6917 37r3Xvfuvde9+690UD+YT/2QL84f/FQPkt/75jNe/de6+eH/AMIqf+3pvfn/AIoB2n/8EV1V7917 r6ffv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3XutCv/hSX/JS298i/n91R8hOp+5uq+sd0fInZdPiu4ur58fvjsXvbfG7eulpt t4DfHS3x66jxWZ3NuqoyOFFNi654aWkxlFLjI6jK5Shiq5KmP3XurY/5OH8gD+VX0B1H018pdq7a qvmF2TvraO3d+7c7h+RO2seYdrVmRpEq5KXa3RE7VOJ2xk8bVKYaiHKfxLM4yvhmgGSjeN0HuvdJ j/hTl8INkfzFP5Y+T+RfQdTtXs3sv4XZbeHZmzdx9fZjEbogzPW+Aq32r8k+vaHJ4F6mCR8cmLGU q6ON/NHW4E0dklaWJvde61Rv+Emf8xeb4kfzA4vjDvnPLQ9JfN6HF9eMuQq/DjNud8YJair6bz0X lJCPl5Z6zajxQoDPUZKgeZ/HRrb3Xuvqo+/de697917r3v3Xuve/de697917r3v3Xuve/de6rj/m BYrP7C2/tb5M7Ko8LVZHr+qoNhdnUu5tw5Dbe1ZOoN+7ipMfU703DkqV3ggGzMq9LnWr6mhqjT4l s7BCKc1z1MWEv34/YHa/en2ubc/BlbcNjb6pDawxyXc0MYYyW8Q8IySu4LxwxtPDbxPM11N4ngqh GfJW/S7Nufh1Hhz9p1EhATSjHNABgk6SxACila9E16i6r+QW0J935/s3ubqzsLeu8auSpq87gej9 67OpMXQ00l9s7VxmKyvYedjixOJjlq4oKem+3ed5WrKl5K6WrqKrgPzb7ge1G72dnsfL3LV/Z7fY AiON92gZpXb+2upzHtMbPdTkR62eSVYkRYIFjgSOOOd7Sw3SJ3nuLlHkk4kRMKAcFWspoq5oAAST qarEkiYmW7V2rTxT7oxu3uw6BJayXK5XrzF5Taedx9LPlETHih6+z9fmBkI6SjeSbITQbgWqlMJF DjKiaeOlQFCw5D32kWzXFxtNyaBUv3juLZ2pQg3sENs0Bdvg8SzMK6h49zCiNKyzxL2HMyrKvrGC rD/aMW1U86PXGFJNOhCwucxO48ZTZjB19Pk8ZVmdYaumYlfNTVL0dbSzIwDxT088ckFRBKqyRSo8 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 Y++KDcG6aHFdvZOKpXcW9qL7YxUOP6+ocxNjK9BFmqnDA6mzI6CHRovhF/Kt6++Lmz+q5e7u4+3/ AJyd4dW08tbtzuD5N7sz+/KPZO8MplJ8/uTd/UHX26a7KUe3MlXV9VVVEubaorc5olalOXNEsVLF 7r3Sn+fm/tk/wzb2C2DXxb1+WPWufw+9+vOrNqVb1u4a7DZaKSj3btrsyaikSj23t7c2BTJUlBmN 1zU+MTLxY2thWsrqClpnw0++4nsruntDdcue8G6ptP1CO9nN4SyzCZCgXwxp8VgkpiuXtreWO4uo 7Vwi3EUU8LDDks7zFu63G0xGXSQHFaChrxzQVFVDMCqlhUqSp6a/fzB9ZM9Ul/8ACin/ALc6fLr/ AIN0B/8ABP7J95w/3c3/AIl1y1/zS3T/ALtd50CfcL/lU7r7Yv8Aq6nSg/l1did8dXfAv4ebL62+ QXYGztl4745dR5HEbZotpdE5mjw7bl2XSbpylNSZLdmzsjkZIjWVs7x/d1szqrBdZVQB9fmze1PK l/tFrfTibXNDFI1JKDU6KxoNJoKnHXJXmT35582rmK/2u1Nv4VtczxJqhq2mOVkWp1ipoBU0FT5d HP8A9mF+WH/eVHZP/ov/AIz/AP2A+zL/AFoOUPSb/nJ/0L0Tf8ET7h+tt/zhP/QfQe4zefe2I7T3 l3Xj/kX2TT9m9gdf9adXbu3L/dL4/wAv8X2J1BuPdm7OusF/Bp9ktj6f+HZDfO6aj7qlpI6io+90 VUs0dNSJT+/1oOUPSb/nJ/0L17/gifcP1tv+cJ/6D6EL/Zhflh/3lR2T/wCi/wDjP/8AYD79/rQc oek3/OT/AKF69/wRPuH623/OE/8AQfSO3l2R8hOwKbAUm7vkl2Vl6fa+8Nr7+wUf9zfj1QfY7s2X lUzW2srrxmx4Wl+2qo0l8ExeGS2mWN0JU+/1oOUPSb/nJ/0L17/gifcP1tv+cJ/6D6WP+zC/LD/v Kjsn/wBF/wDGf/7Affv9aDlD0m/5yf8AQvXv+CJ9w/W2/wCcJ/6D69/swvyw/wC8qOyf/Rf/ABn/ APsB9+/1oOUPSb/nJ/0L17/gifcP1tv+cJ/6D6KRsLoTYnWuxtmddbTynZ+O2rsHaW3dlbZx8PdH bVNFQbf2th4cFhqKKnx+ahgjWKmgjRUhhSNQLIiqAoPIvbrkyONY2sUcqANTFqmgpU0IFTxNABXy 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 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3XugO+SX/Mkd/f8AUBjf/d7S+/de6HH37r3X/9HeH6//AOZx9/8A/Uf1 p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdfMh/ 4Wvf9vJ/jZ/4o7s7/wB/12D7917r6D/8vb/sgX4Pf+KgfGn/AN8xhffuvdG/9+691737r3Xvfuvd e9+691737r3WqF/wsk/7dH7c/wDFv+mv/eJ3f7917r5Ynv3Xuhv+P+6PkZt/sWmxHxZzncuJ7a7E xOU61ocX0LX7zpexd7YbdUSxZnY2PotgMMnkIMgkSrUY6FXWZVAaNgPfuvdbUf8ALt/4R+fMn5ED Adj/ADm3lR/EHrHIyQ5Go69o1od8fI7O46W1RoqcTC74TbTVKMNMuUrauup31LVYdWXSfde63xvg P/KZ+Bn8tbbceL+LPRe39vbumx4x+4u5d1Km8u693RsoFUua7Dy6Gpgp52AkkxmKWjxwb1R0cfv3 XurIPfuvde9+691737r3Xvfuvde9+691737r3XvfuvdFA/mE/wDZAvzh/wDFQPkt/wC+YzXv3Xuv nh/8Iqf+3pvfn/igHaf/AMEV1V7917r6ffv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917rXq/mL/8KXf5bHwBmz2xsdvyb5Ud9YhaulfqX4/V+J3BisFmYLxx 4/sPtd5GwOIKTK0NZS0k2QydKyny40cA+691ozfLv/hU1/NS+Tnbe0949b9j0/xZ652HvjBbx2h0 z0nJX0tBnJ9v5ePJY7Fdt7znZMvuqlqhGKbKYqSSlxNbEzo+LUOffuvdfSb2n/Mo6Pqvj38c+2d+ Y7fG1u2/kZ0/sntDanxKwGyd1b8+T1TWbnwkFbk8FjemdsUk2dkpcdWytRVefqqKnxNOoWprK2mp m8o917ruhofnh8mnkn3RV0PwC6Wr1Hh2ttep2b2580dx492/TuPfZ/i3XXX5lQtDVUODpN31pjZZ qPP4mrT0e690Y/o74s9DfHU7gruqev6HE7t3i1NNv/s7cGRzW++4+zKykQJTZDs7uPfVTkdz7inj AtFJmMrUGIeiLQgCj3Xui1Uv8tfqqr3V2fBvTsnt/e3x47B7M3X2zQfDiq3JjttfG7A7w7HqE3F2 rNuDb+z6OhzG78buPccuV3FXbY3fmsjt1KvIVDw4ZJD5T7r3TP1xsjbfxI+X+5ukcNgMBtz4zfNz b9dvnqzZeOw2PxmydkfJnq/Z0OH7k6uwWDpY0oqaj3tsagoN3YzDUtOsX3O3t310t3rLN7r3XyyP 52vwLzP8rL+Zh2n1XsI5bbXXOQzWM79+MeeoJK3H1eM643dl5sttqiw2UGmTz7Xy1LX4BKqOQu0m OWe6s4A917r6i/8AJk/mD4z+Zj/L46S+SUtVRt2ZBj5Ose/cVRrFEmG7w2DSU9HvJhSQDRTw5eKa i3HQUyk+KjyVMjHWrW917q1D37r3Xvfuvde9+691737r3Xvfuvde9+690x7j29ht3bfzu1dyY6mz G3dzYbJ7fz+IrEL0mVwuZonxuUx1UikExzwSSROARdWPPtiaGG6he2uUWSORSrowDKysKMrKahlY Eggggg0PWwSrBlNCMg+YPVQfWVFuHY028OjN611dlN29GZ1NlxZ/K1DVOS3z13U0SZXqfsSpqKqv yFXUz5DCSU9JmK6rkRps3RZcJGsca+/mC++97GSeyPvhfWtlGV2reC19ZNpIUCRqzxAiGCMmORtR SBPBhWVIVYmNusluS97G9bKjOayw0R/XA7TxY5HmxqSCfPoRcrlcXgsZXZrN5Kgw+HxVHUZDKZbK 1lPj8ZjaCkiM9XXV9fVskUMMSKzySyOFVQSSAPeJNhYX+53ke3bZBJc3ExCxxRI0kjseCoiAsxPk ACehW8iRIZJGCqOJJoB9pOOgn27PUV3Y9VuDZNDUy7G3Lip33nlq2mlxuGye58WlPS7Z3Fs01DJL XST0N6atrYqJ6KspUoZKfIh6B6aqkffLRLPkxNq5snjXdrKRRZQoRNcJbuzG4trxkJSBEcia3jeQ 3EMpuI3twlwJIS+Fy94ZbZT4Tg6ycKWFNLJXLEjDEDSRpIaq0I1e4r6N+ve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3XukNu7rza29arA5XLUlZR7l2lWpktn7125lcptXfO0K0VtNX1LbZ3lt2amyNHDWNSU8WTo4 qkU2Qplajr4amjklgeSfbX3c9xPaLeP317f7rPt0rVEixuwilBR4yJI60LeHJIiSrpmh1s0Esb0Y FW47VYbtD4N/EsgHCoyMg4P2gEj4TTuBGOlzsv5P919LRU+M7rxWW+QHW1FSxQ/6Xeu9rU693beo 8diaiorMr2f1BteOKm3S0hpU113XuPgrpqmqhpqXaBijmrR2p+7r/eXclc4RQcte9IGzbq7kfWlo 1sJDLKmkaisa2kcKvKf8Yc6LeCNWuLu6kJeG+Yfbi8tC1zs360QHwZ8QUB+3WSQPhGWY9qKMDP8A IXub44djfEjsLd1Thut/lX1duulTryg61V9p7z2z2f2DuXMQbS231Xl6TNO1DS1cuaqqWkySZLxN i7S1FYKdaWVk6I80e6HJvKfIUnuJud9FFtwt3uInlLx+KEt5Lnw1Tw2n8QRRSPJGsDzRJHKzRfpO BH9rtl5dX42+NCZNQUgUNKsFrWoWlSADqAJIocjqvv4j/FjrT4fdMYnqPrLAYnC0r5Kv3bvGpw8e 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 vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Uf7 ul/5Waf/AKnR/wDFffuvdc0mik1GOWNwti2hw2m/01EHj6H37r3XD7ul/wCVmn/6nR/8V9+691zj lilv4pY5SttWh1e1/pfSeL29+691kBBFxyDyCPz7917rv37r3XBHR1DoyupvZkYMpsebEcfX37r3 XP37r3XQIIuOQeQR+ffuvdd+/de697917rg7oil3ZUUWuzsFUXPFyePr7917rn7917pM7r3ns/YW Ik3Bvndm2tmYCGWGCbObszuL27iI56mQQ08MmSzEsMKvI5Cope7EgC5Pv3XumjZfafWHY/3h677G 2Hv3+H6f4gdl7v2/un7HVbT95/A6ifxXuLa7fUf19+690undI11O6oo41OwVbn6XY+/de65+/de6 xmSMOIy6CRhdYyy6mXnkL9SOD7917rJ7917r3v3XuocVfQz1VXQwVlJNW0C07V1HFUQyVVGtYjSU jVVOhLxiVVZoy4GoAlb2Pv3Xupnv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917rg7pGup3VFHGp2Crc/S7H37r3XkdHUOjK6m9mRgymx 5sRx9ffuvdYaurpaClqa6uqaeioKKnmq6ysq5o6alo6WmjM1RU1NRMVSOONFLu7kBQCSQB7917pC 7J7a6q7KmyFP1z2Z19v6fExwTZWHZO89ubqmxsNUzJSy5CLBVM7QrKyOI2kADFWAvY+/de6EP37r 3Qb7Z7j6i3pn6zamze1OuN27ox8VXPkNt7Z3xtjPZ+hgx9QtJXzVmGxVVLURJBK6RTM8YCOyq1iQ PfuvdCR7917pA4LtXq/dG48ns/bPY+w9xbuwv3P8a2tgt4bey+48T9nMKerOTwePqZKqDxSERyeW JdLEK1jx7917pfe/de6TO7N5bP2Hh5txb53XtvZm34JoKefObszuL27hoaiqfx0sEuTzEsMCvI3p jUvdjwAT7917pg697e6n7boGyvVPaHXfZuMSnpKtsj17vbbW9KBaXIQipoapqzbdTUxiOeNlkhct Z1IZSQb+/de6EX37r3Xv8Pz7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de6A75Jf8yR39/wBQGN/93tL7917ocffuvdf/0t4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6918yH/ha9/28n+Nn/ijuzv/ AH/XYPv3Xutzf4L/AMzT+X9tP4S/Dvau5fl50ZhNx7a+LHx82/n8Nkd8Y2nyGIzeG6lxGOyuMrYH N0mp545IpUPIZSPx7917o1H/AA6p/Lj/AO8z+gP/AEPcX/xX37r3Xv8Ah1T+XH/3mf0B/wCh7i/+ K+/de6WfVX8xD4Nd5b22n1v1B8rej+xN+b8/iH9ydp7W35hsnm92tituVe8Mim3KKKTVWtDiaCty Ui0+oimp5p7eON2HuvdHM9+691737r3WqF/wsk/7dH7c/wDFv+mv/eJ3f7917rTj/wCE+/8AJF2v /ON7I70qeyu7M51L1J8Z/wDRHU76xGysBRZLsLsFu25dyricRtbPZtpMdhlp02xWNU5CqoK8gyQp HSPqeSL3Xuvps/Bv+V38Fv5c23HwnxN+P2z+vszXY+HHbk7LrYp919ubwhjRDKm5OytyNU5WSnkl T7j+G088NBHKzNBSQg29+691YB7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 KB/MJ/7IF+cP/ioHyW/98xmvfuvdfPD/AOEVP/b03vz/AMUA7T/+CK6q9+6919Pv37r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3VNf8AOC/nT9AfyeOvdhZ3tTrzsztbsbuO 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 e0/iUN9bw2L8dvjHsbcEMOa2v1tSbQ2jWUNTLkqSL7afLU0dZDRfd+SOrgyVSk2Qqfde6Hz5H/8A Car4QZulpuzfgM27/wCXN8ttkzT57qzu7oTee+IcHSblgx8tHjqTeOwMrk6ijkx7LLNFNJhhQVgW Vy000eqnk917owX8lD+YF3b8vere8egfmTgsTtf55/A7tSboL5QUeCpzS4TedTC1VBsnt7Fw0dNB jY13AmOyHljxMklHLJTHIUi0tFkKSjg917qvDvX+aYvxm/4Uz4Po3P19VH8fu1viv8aPiT3BkhGH wWye+d07x3x3L8es/m6qhhnaGeVNzy4sff1VHTwY/I19fIjrTRyH3XutsH37r3Wrv/NV/mkby6w/ mwfyu/hv09T5av2Ntf5a9Hr8vt34x6mn2vt7c/yexuV6u6R6k3buKid4qSufA5HO7wGDydMy5KP+ GVFJJHNRPLF7r3W0R7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6A75Jf8yR39/1AY3/3 e0vv3Xuhx9+691//094fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+6918yH/ha9/28n+Nn/ijuzv/AH/XYPv3Xutzf4L9u/zAaH4S /Dqi218J+jM/tyk+LHx8psBncj83MlgMhmsJT9S4iLFZauwKdU1gopqmARzS0grJxCzGPzS6dbe6 90aj/TP/ADHP+8EOgP8A0vLKf/ag9+6917/TP/Mc/wC8EOgP/S8sp/8Aag9+691X/kc12Pt34qf8 J2sx1JsPb/ZvYVH2B06Nv7I3Tv2XrHBZv7j+TJ3nS5X77fEOHzzUP21C9TVxWxM/mkiSn/aEvmj9 17qwD/TP/Mc/7wQ6A/8AS8sp/wDag9+6917/AEz/AMxz/vBDoD/0vLKf/ag9+691rNf8Kv8AsT5d 7p/le4DGd4fGLqzqHZi/Kfqiqj3Xs35P1vb+XkzcOz90rQ4ltpz7B20qwzRtO71f8RJjMar4X8mp Pde6LP8A8IY/+6on/lk3/wA1z37r3W/57917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917ooH8wn/sgX5w/+KgfJb/3zGa9+69188P/AIRU/wDb03vz/wAUA7T/APgiuqvfuvdf T79+691737r3Xvfuvde9+691737r3Xvfuvde9+691gqKiCkgnq6ueGlpKWGWoqamolSCnp6eBDLN PPNKQqIigszMQAASTb37r3UPDZnD7ixONz238rjc5gsxQ0uTw+aw1dTZPFZbG10IqKPI43I0TPDP BNGyyRSxOyOpDKSCD7917pz9+691QH/PN6D+Hv8AMZ6Vo/gzvbfW9s58mNr762Z2/wBc7D+NGxMd 3b39tCqphPh6yXc+1nr8Xidr4LcGHrMjjkzW/Nw4LBrUmmqpK2WWjigf3Xugh/k6fy0/gz/L33F2 rtjdnxU2n098quntt7R7VXuvuztLbveu/Mt0JvnEVNJjOyaDsqfD4Lbu1a6izWH3Jht14faFAtNj Pt6Mz5bK01fR19T7r3VzXRfzr+NPyT7JzPWnS+88pvSsx+z6rfe396wbO3bjOqu0tsYfPU22d25r pDs7M0dPh97UOCrchh6fNZTa9VXUFLJkqCJqozTGNPde6Kr8iuntqb9/mCdPbb+VlPmu5vjN3b1l U4boHqfd2UyD9C7K+VfTE+R7E3Rid/dWY0wYTd9fuzaDTZ7a8+76PJfwqXama+0eBqykjT3XurYa SkpaClpqGhpqeioKKnhpKOjpIY6alo6WmjENPTU1PCFSOONFCIiABQAAAB7917qT7917r3v3Xuve /de697917qtzZGHh6K+ZHb/x63HQUuR6B+b+B3d8guq8dlIqeowGG7tw1HRbb+WPTbUdTqjaDdND VYnsTH0TXerq5t61JTw0zEe6918pP+b38Fd5fyof5knZ/TW06rPbe2rgt1Yzuz4wb1pauspsq3Vu 4cvJn+ucnjM1dZmr9vVlNUYKqrVKs1fjJ5UAUoT7r3X1b/5TPz423/Mp+BnRfymxcmPh3duHb67V 7l27jyqx7R7r2aiYjsPCrSgloKeepC5XGRyHUcdWUcjf5z37r3VkHv3Xuve/de697917r3v3Xuve /de697917pB9n9bbK7k64391J2PgqXc/X3Z2zdy7C3tt2t1/a5vau7cPNgs9jJWjIZRNTTyJrQhl JDKQwBFGUMCrCoOCD59e6pN+KWZ31hNub7+OXcOYrM/3V8SN+VHRW+N0ZV1bJ9m7YxuEo9zdLd2V Guonllk3fszI4TKZSdiqLmjl6NB/kbAfMT9+z2NX2R9+L6LaovD2ffQdxsqKQkfiuwubZSFVB4E+ orGmI4JYFOT1kpyRvf762JDKazQfpv6mg7W9e5fM8WDdGt94Y9DXr3v3Xuve/de697917r3v3Xuo EGRx9VVV1FSV1HU1uLkhhydFBVU81VjpaqnWrpo66CNi8LSRMssYksWQhhcEH2un27cLWzgv7mCS OC5DmGRkZY5RG2hzE5AWQI/a+knS3aaHHTAkjZmjVgWWlQCKiuRUeVRkV6n+0PT/AF737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3VJf8Awop/7c6fLr/g3QH/AME/sn3n D/dzf+Jdctf80t0/7td50CfcL/lU7r7Yv+rqdZvhJ/2Rj8Rv/FYug/8A31WJ9/aJyz/yrm3/APPN B/1aTrhbzt/yuW7/APPbdf8AV+Tozvs76DHUatoqPJUdXjsjSU1fj6+mnoq6hrYIqqjraOqiMFTS VdNOGSSKRGZJI3Uqykggg+9OiSoY5AGVgQQRUEHBBBwQRgg9ORSywSrNCxR0IZWUkMrA1BBGQQcg jIPQsfHP5P8AcfxU6ixHRWxeiuk9/bF2RW7qk67r27b3p0nLiNs7i3nVbkxWycltWi2bviBjiYK2 WmXLUuRhjqhHEq4uiW594+b77OblPuE91tE8KxOxZEbWpWpyCaOMZyOJ4KowMuuV/vG7LabTa2PM NrctPEgWSVPCcMVFAwBaM5wNJyBxd2FWLnVbUh3h8ie7PlnvHbWF2/3F3lUbdx2Yx+2Ny57P7c2v sXZO1cXs3aW1KCryFNiosjOY8SuSrsxPhKerkqKl6UN9jSUUUUlck8k23Klrqej3TjS7gmmnB08F BGoFgSupQ2jUwUMYV9zvcy95+vwkWqOwibVHEwWuujDWcuVOghCqvoYr4uhGcqq99jrqK+ve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 6C/E7RxVH3Tv/fsLVZzm5eruoNoZBXlRqBMVsjdm+M1hmpqcIGWYzbhrxO5kIZREAqlGLl0NvGm7 T3QrqkihU+lEaelP96Nejm4u5ZNgtLFqaIp7ll9ayJahqn0/TWmMZ6FD2Y9E3SD7J3NktqbXGQw1 PQ1OYym5tibMxH8Tro8fj6XKdib6xuwMdkqyaRXMkdHNk0qmpo18lQI/BFaSRSCHmfeBsGxXG6kV MYFOHFmCgiuCRWoU01EaaitehXyPy4ebOabTYQaCdjU0J7UVnIOnuAYLpLiugEvQhadAf/K//l+f Lr5tfGr48/Ovtf5/7n2e3a9GOydr9LbR6xpsltTH7ZjqqvbuNwu/q9s1jabMffU8ctXV08GHpFp5 JYhFPNUUiVr4rx+4fN8d0t0b120tXQT+mfkyilV+R48TnPWeE3tB7dy2D2C7ZEmtSviKB4or+JXN dLehAxwAAx0YnLUG5tu/6Ttib2qcNW7y633LvbYu46/b9DUYrDZWTDu82B3DQYasrMjNQplcRPjs qKCavqXpvufA08xj8r5Jcu8xNzPyi26SqEkKSq4HDUoPDJNCKHj+zh1hhzjyenI/uCmxQOZIhJA8 bNTUUdlPdQAVBBGB5cTx62MOoYYqfqfq+CCKOCGDrvZUMMMKLHFDDHtqmSOKKJBZVUABVAsBwPeH XXRrqkL+dXuF+/O3f5eP8qSXs+j6p2H8+u4N65z5H5wbqi2jn93fHP464ah3fufovbGSkkikOQ7A yVdj8LTw0vkllSKeN4ZaRqmN/de6Vv8ANg+Hnw8xvxnxdbt/rra3Unf0rdY9A/FTe/WlZN1fl9u7 uoKuP/RtVbm/urLRRZvaXW2Ooa/feQoMqlQmKxGFyGQxv2dbBFUoqs7i7trhZLFmV6rTQSCSGDKO 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 CCk1NVRCeCVSPqGVgR7917qX7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XugO+SX/Mkd/f9QGN/ 93tL7917ocffuvdf/9TeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3XvfuvdfMh/4Wvf9vJ/jZ/4o7s7/wB/12D7917raK+GG5Pi3F8P PifFmP55e+uvsrH8auio8psGn+VPwMw9PsfIp1dilrdoQYjceyKjIUqYyUNRLTV88lREIwk8jyqz H3XujLf3o+JX/e/vsD/0rr+Xl/8AYF7917r396PiV/3v77A/9K6/l5f/AGBe/de6A/s6q2lRfCj/ AIT4VO+u/wDIfF3asfYHR38U71xW7+vNiV+xtf8AJ27tjoft919rUGTwFL/E6kw4dvv6GXyrVmGD RUyQyJ7r3Q4f3o+JX/e/vsD/ANK6/l5f/YF7917r396PiV/3v77A/wDSuv5eX/2Be/de612/+FOm a6IyH8uDB0/XH803dPzI3CPkr1jI/UmZ76+J3ZNHS45dqblFTvAbd6V2vh8wr0TGOBalqs06CoKy Rszxlfde6Zf+EMf/AHVE/wDLJv8A5rnv3Xut/wA9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+690UD+YT/wBkC/OH/wAVA+S3/vmM17917r54f/CKn/t6b35/4oB2n/8ABFdV e/de6+n37917r3v3Xuve/de697917r3v3XuoOQyGPw+Prstlq6jxmKxlHU5HJ5PI1MNFQY+gooWq ayurqypZY4YYY1aSWWRgqqCzEAE+/de61dP5jX/CsH+X38OZs11/8dJJvnB3VjWqaOWn6uz9JiOj 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 z7c+NnSG3u2sNmqnCVmWx3ZWC61xmJ3xTZGr21PU4+SUZOGp1vRTyQseY2K29+690aH37r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3XvfuvdAd8kv+ZI7+/6gMb/7vaX37r3Q4+/de6//1d4fr/8A5nH3/wD9 R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6918 yH/ha9/28n+Nn/ijuzv/AH/XYPv3Xutzf4L74yVP8Jvh3An8svvPdiwfFj4+QpurHt/L+FBuVY+p cQo3BQ/3l7eosj4a233MX8Qoqep0uPPDFLqRfde6NR/f3Kf96q+//wDkr+XH/wDbn9+6917+/uU/ 71V9/wD/ACV/Lj/+3P7917ogGRr5cX8VP+E7VdD1VuDu2WDsDpzT1htY9cDO7m8v8mPvOE/YntvN be29/kQY5CX+IZin/bgfweWp8MEnuvdHczvdeK2xWbWx+4/5ZvcuCrt7biG0dn0eXyn8tjH1G590 nB125127goqrupTVVpx2MyNaKaHVIYaaaQLpjYj3Xuklu35M7S2dn6baWf8A5c3ZW0s9VYn+O1uV 33X/AARodh7C25PPPQ0O+O28/sLsvcuTwWAmq6ealgq4MFXVdZNFNTYrH5Ktial9+691qtf8Khtr dk1PwZpN+bx+Nuc2fg5PkH1NS7Z7vym0+oNrYjL4/ObHzeRl2fsPrim3Y28tg4tpomlq8dnNoz5n MzU9LNnspj1xmOw0fuvdR/8AhDH/AN1RP/LJv/mue/de63/Pfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3XvfuvdFA/mE/wDZAvzh/wDFQPkt/wC+YzXv3Xuvnh/8Iqf+3pvfn/ig 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 /r/Ed+bExE+T7M6Ap8xlshiMZFA2U390tlRDUdq7FgVqWpmqKymhpKbc2BpaYRT1OTxcGNSop6bJ 1pcZ8hcyf1c35LqRqQyDTJ6FeP8ACST/AAiqLr0l3CBuo391uTf66cqSWMKarmIh4acQ/D+NQBnv OmR/D1rEjSMvVXeMyeNzWNx+Zw2RosvhstRUmTxWVxdXT1+NyWNyEC1VDkMdX0jPFPBNE6yQzROy OjBlJBB95hxSxzxLNCwZHAZSDUEEVBB8wRkHrnTPBNbzPbXClJI2KsrCjKymjKQcggggg8D1O926 a697917pL0n/AB+mf/8ADX2h/wC7bOe0qf7myf6SP/j0vS+T/kmQ/wDNWb/jkHSo9qukHXvfuvde 9+691HqqeOspamklL+Kpgmp5DGQJBHPGYnKFgQDY8Eg/6x90mhWeF4GwHUqacaEU6ftp2tbmO5QA mNlYA8CVIIr8sdL3B97/AC029hcRgMd8m9ypjsFi8fh6BJesejJZUosZRpQ0qyynbV2YIi6mP1PP uGv9ZLZv+Uyb9kf+brJD/gm+ZP8Ao223+9S/9BdJTPbn7Q35uRd1dqdnZfsbK0mEg2/iDkNtbF21 S4jHrXy5GqEMOy8Zj/M88ki6mqGfSEUIFu2oX8ociWPJ8009pPJKZ1VTrCimkk40gevUde4Pupuf uJbW1tuFtFbi2Z2BjLkkuACDqJ4U8uovsc9Rb1737r3XvfuvdHh/lvf8zf8Akv8A+I2+NX/vUdne 8bvev/ktWn/NE/8AHz1md92T/lW9y/56V/6tL1qaf8Li/wDman8u3/xH/wAjv/ej2f7hfrJjq3// AIRt/wDbo/cf/i3/AHL/AO8TtD37r3W177917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X utMj/haL8Sz2X8JuhflzgsS1Vn/jD29UbM3fXU8Sp9r1V3zSU+JnyOUqFsZEpdz4jbdHSRuGEbZG dkKeSQSe690Av/CJr5Zw5vqj5bfCPPZykOU2Lu7BfI3rfCyys2UqNs7zoafYPZ8lNG6ACix+Qx+3 HsrtabJOWVNYMnuvdb2Pv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XuuCoiszKiqz2LsFUF7fTURybf 4+/de65+/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XugO+SX/ADJH f3/UBjf/AHe0vv3Xuhx9+691/9beH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdfMh/4Wvf9vJ/jZ/4o7s7/wB/12D7917rdx+B /SnyKr/g78NK/F/M7fWBxlb8UvjvV47B0/TfQ1dT4ahqeosPNSYqCuyODkqJkp42WFZZ5GkcKGdm Ykn3XujW/wCgn5M/95ydgf8AokPj1/8AWD37r3Xv9BPyZ/7zk7A/9Eh8ev8A6we/de6rQTA7l3N8 Y/8AhOng9nb5yPW+463sDqEY7euKwe3tx1+F+2/ku961VX4MLuqnqqCb7mCOWkbzwNoWUyJpkVGH uvdMHzh6d7Y+Uuy8f0Nt75gdrdiO2/sduHa249r9ddQ7UkyXZvVOYFWcF1XufYeJpMu9biq9oKHc G7qKvoMRtgzvLVZgZWkGJl917owHUPwk+ZEHZW/KjvD5ZZbdSbO3dhN4dQdt0HT/AEYT2BNX7RpN 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 N2hs2lqpoKZp5PDFWZBqanllSSKGWSWN0X3Xup3wU/mZfDP+Y9tjcO4/in23BvLIbLfHRb82HnsJ m9l9jbHky1KtZjW3Ds7c0FPU/bzxuoir6Pz0bSB4RUGeKWNPde6Px7917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3XugO+SX/ADJHf3/UBjf/AHe0vv3Xuhx9+691/9feH6//AOZx 9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvdfMh/4Wvf9vJ/jZ/4o7s7/wB/12D7917rbD+FHVvw8rPhp8SavOfyhDvfNVXxl6FqMxvP/ZR/ itmv73ZSfqvFSZDc/wDGcxlkq6v7+UvV/dVSLNL5NcoDsw9+690Zz/RN8KP+9LZ/9Iz+In/149+6 917/AETfCj/vS2f/AEjP4if/AF49+690Rb5L7Aw/af8AL2/kC7C3B01Q/IDC7g7G+O0OS6lyeOGd xu56aj/lI9yZN6nIbcasxy5WDF+EZibDvkqJa9KU0bVtGs5qYvde6PRBsD475fF4aHtb+WP3D3tu HDYukwtFuvuP44/GTe+QxGDx8Qgxe0dl4/LZ+Si25t3HoPHjNuYGnpcfSgySJAamepqJ/de67/0T fCj/AL0tn/0jP4if/Xj37r3WuL/wqM2J8ctufy1cHkOqv5dZ+LW52+TfVtPJ2Z/svXQvV/nxUm09 zNV7Y/vL1rkKnIt906xTfatH4X8OpyGRL+690Hn/AAhj/wC6on/lk3/zXPfuvdb/AJ7917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917ooH8wn/ALIF+cP/AIqB8lv/AHzGa9+6 9188P/hFT/29N78/8UA7T/8AgiuqvfuvdfT79+691737r3Xvfuvde9+691737r3Xvfuvdagf/Cvb +XA/yU+Gm3fm113g2re2fhm1Y2+UoYDJXbj+Om662MbraZYgXlO18n9tm4y1kgoZcxKeSPfuvdUp f8I3/wCYonTvyX7I/l89ibiak2D8nqWfsHpiGvqAmOxPfmx8KWz+GpPIVjhfc+2qVtbuxMlTh6Cm iUy1PPuvdbzPw9of9l07T7q+D1bL9vtHbOQyXyH+KEDp4oE+OPam45Kjd3WOKkYny/6O98T5PFxU 0dkx+3srtOmAAYD37r3ViHv3Xuve/de697917r3v3XusckaSo8ciK6OrI6OoZHRhZlZTwQRwQffu vdV6/Cuqp+jt6dw/AWvjbH0Hx9bD9hfGyOZEigzHxA7Xr62bYG38NpOlk69ztJnevvtY9UlPisdg KmqPkykbP7r3XurmovjN8zux+hXC4/rP5hDd/wAp+kV0SRY/D934R6HH/LHrOicgQxHMtU4bsnG0 +tqisrchvKp0rT0II917owfd3yr6Q6ArMNt7fW7Jq/sbdcNRLsbpfYGDzfZXeHYApmWOol2X1Hsa CuztZSQO8a12VFEuPoFdZshV0kGqVfde6LtRN88fk5K09bFR/wAv3pGujIhx6nZXb3zY3RQSsHSe srkbL9b9ctJGSklNFHvSsZTqWpxFUtk917p+j2v8Fv5cGAzfaW5sntXrXcfYtdR4Xcnb/aG59xdm fIrvTcZKvitpvvfd0+Z3xvPIvJzittY+SsaNm8WOoI1IjHuvdMsvanzM+SuPb/QP11H8OusK2MN/ px+VW0mzPduWxjsDLX9bfFChrqU4XyQazT5LsrM4+toqhV+62dXU7En3XuiyfEDetHgPmzntj9Af ILv7509L796rz0PyY7q3tuvL9m9a9O/JrqrcaLtms2r2TQ0mN68pKjdeKymUwe5dhdbxRR4WqwWG nkwlCK3I1b+690WP+a1/wos/lcfEXZfZvQecyuP+bnZe6Nr7p6/3l8e+ncpi83s2TGbjxU2A3FtT tztkefCYmnqIJamgyNFQnJZSnJKzYxQdQ917r5TGxe0Nx9R9vbR7m6ercjsPdnWnY2D7L6wyK18e Vy2z89tDckW5tm1JybQQJVT0E9PTsZjTRrKyFjEobQPde6+2j/Lm+a2yP5hvwu6E+W+xhR0UXamy 6Wo3htqknM/9x+y8HK2A7K2RL5WM2nG5mmrIKWWYK1RS/b1QXxzoT7r3R3ffuvde9+691737r3Xv fuvde9+691737r3QS979LbE+RnTPZ3RPZuN/i2w+2NlZ7Y+5qVBEKuKgztA9IMli5p0kEFdRSGOs oKkIWgqYopks6KfbMsUc8TQyiquCpHCoIoRUZ4enWwSCCPLrXj+PXROS7hwm4NufN7fmZ+RXdPx1 7N3H012Z17n6KDbXRGP3hsWWlr9o70i6aw8FLjc6+49uVO3d70GQ3SMvJTvldWPOOUCjp/nB+9hB vP3Yfdnc+QPa3a7flmwv0+pt7+3Bk3K5tbkESxrfStJJZwrKrRi2sjbaViid9TOWbIflVoeZdqiv tzla5kQ6WjbEasvAlAAHJGdT6skgYHVl0EEVPFFBBElPBTokMMMKLHFBFGoSOKKNAAqqAAqgWA4H vAGeea6me5uXaSSRizuxLMzMaszMalmYkkkkkk1PQ8VVRQqigGABwA6z+2uneve/de6p/wBv9t/K T+ZL3L2x0B8Tnqeltn9P7hqdkdvby3fXZDBV/XWSw24cptnPDt/+5LR5ybIZuoxxm2VsnYG7cHlH xML7hz268LT5PD4mr7u/c5+4J7eWPLlh7ne6H03Ml1eqLi1jQtLtqwyJG9tNCdUZuCVeTxvqrcAT BBAixwme8gvm/nvcHuH23bNVuqHSxOJKgkMDg6cgadLcK6iSdKARs7Z+9vgX3tu7+TV81t3LvT4m fLTrXeG2fgd3JHiN0bLwUu2N17YfEdjfFaDcm6M7ubJJVYyXJ1uO2pSZrddbl6elgx0ZrKz+LY6K kt9+z7tp5U3ez+9j7R2ITc9iu4L/AHWCMHRMltJFIl6EFQphMdLoBNDwM80hBiIk1yRzF9VE/K27 PWKdGSJjxBYEFK/OvbmoagHHBwf5bv8AMM2R/Lx/lh9R9a/PyTs/Z/bHSW7u4umKXbGL6i7T3StX g9odv5rC9YYuh37TYiHalFjarGCiotq1WWzNBRy0Qx9NHUTTsjz9MOQ/cTk73I2KDfOUdytr9JYI JnEEqO0QuE1xiWNWZ4iwDaVkAJ0tSuk9Rxfbfd7dcNBdRtGQzAagQDpNDQ0oaY4evSG/l/8AWffO X7v+bvenx9+FvyA6m6N+X3Y21u3utOvPkfujA9V9c9f9hxYarpOy935V82Z9yY2n3jNUY6qjo9jb L3XhKaCgiloNwV1PVU9BjsOfvm/c43f7z/MPLW58vbhZ7QNtjvYr65mjlknkjla1a1WGKNFWYRlL kt4txDo1r4YbW+kXcn83w8tW9zHcRvL4hQooICgjVqJJOK1WlFNaGtKDpI9c9D/KD+bn3J8terOw vmZvv4NdcfEjvhvjx3R8M+kdkKO4dwY//R9S5PHduwfK9cvjJ3w28Zq3LT7cp5dp1GNnxtJTyVmM knZj7O/u+fcL9mfZWyt9x3q0h5j3+MlmvrqGsaN4muP6e0kkmhhaEAIJgPFkozEqGEaM79z1vG8u 0cLm3gONCnJxQ6nABNeNOA4ZpUuVR8Rus/5N/wArthbN6bOQwvxg7p2ZjKmnqs5/v4dzUtFRduYT qLdWzOwd1Gpopsl/At59nbL3XtjdWdFfXUGEyO9cTJqxVJi5MOX/AH+fYLa/dP2Svd+2u0U7xy+j 3dqy1DlFAa4hijSJ2lluURYVhRovFk8B3Mr21vF05yHvsu2b0kErnwZyEavCp+EkkigUmtTWg1AU DMeri/fzV9ZIdYZP82f+Wbf8R7XbZ/yUYP8Amon/AB4dMzf2T/Yf8HSZ+B/wz6hzvwd+Gebrd4fK yCtzPxT+O+Vq4cN88PnFt3EQ1WR6hw9XURYrb+3+xKWgoKZWciCjoaaGnhTTHDFHGqoPs56w86r4 /ljYOi2xtv5x7axs+Yqcdt7+aj/MYwlBU7h3Dn93Z+oosT8lsxQUs+c3Xuuprcpk6x0jVqnI5Ksn qqmQtNUTSzO7t86396P/AOJMx/8ASmsf+r131kJ7Zf8AKtH/AJrP/gTo4fyD+OfTPym6zyvUneux MJv/AGRlpI6v+HZikimnxeVponhpc1hK11L0tVGkssJkjOmWCWamnWWlnnhkwo9rvdjnz2b5ri5x 9v7+SxvIxpcKT4U8R+OC4jBAkiceRoyNpkiaOVEkUYbntdjvFqbO/jDocj1U+TKfIj+fAggkEA/i r8efl78S+i9y/GTZ3zx3HvrpqbKTYbqmv7T6m/vX3h8f+nZ5IaKHrzq7t5N0U6S1tBjfuqfC5fcW EydNjpvs3pcUlDRfw2fpvJ/e3c3ts5t4uTbVb76coJzfytF9V4bKJzALVD4IkKyG38bUVVohcKXE qRsPam08XUbximqunwwDpr8OrUc0qNVKVzpxQmO8lTsqXrfojpPZdPvHsPceHzKbC2Vl95TYTG4/ aOxoKODdnY/Y29spHlsrFg8bU5LEUmYzUWPy2QlyGVoI/tqqprdRwq9ifYr3E+977mXrfUmNA6Tb lfmLWsHjswiRIU8OJKrFL4MWqCCOC3aKGsi29tKMt83vb+U9tQaamhEcdaFtNKkk1JyRU0ZizAnG pgazq/4PbfiyOJ338lNw0vyF7FxdYuWwWEyOD/gvQ/XGT+3oPDL1909U1FbT1NdR1FCaqh3Nuqpy 2bpZqmuGOrcbQ1Rx8ffn2N+6D7N+wixXfKto1xuUYGq+uG1XMhHjAlmUL2OkkfiWwpZGa1truO2j uoxMYJ3vm3d99ql04WM/gX4Rw8vUEGjfHRmUsVNOk18zaKp+Pm/ev/5hO2Iqxcb09g5+tPl3icZT NUvu/wCHWdyxy+W3vWUkQ1S1nU2al/v1R1HrkgwT7voqSKSpzCj3lL0GOiP/ACh+X+wflbuz4c7y /l91WzPkbuHbXd+5tv8AdPYWFO5KGg6Z6CmoDhe6tmdg1eSTE0lFka7KU+3podqZKuGdSrpMdnKT b2XoMdWeLBL7/HMPsbJ7MbnyT7qbpHZ7hLEtztkSoZLtrtRKLeSBBFIzIroy3OhoUEbLFcXFulyj sOORbbexvEd7tcReMHTIa0XRjUGNRQ0PbUE1BKqxUgJf+ZZ/27k+fX/ilvyl/wDfHZz3we+63/4k hyH/ANL7a/8AtMh6nHmj/lXr7/mhL/xzo7MP+bh/4Iv+9H3C+6f8lS4/5rSf8fPRxD8C/Yv+Dqu3 5k/y5OuvlHuDa3c+wd6bk+MHy+63ytFnOsPlX1HTpTdhbdrKWCPG1FHuCkp56IZqhqKGNKOemqKq NpIY46aWWSg89FPll92b75vuV9266G22gG88vvr17bPKyKjOWbXazBZDbt4hMjJoeJy0p8NZJWl6 CvMvJ+3cxL4j/ozilJFFa0xRhUasYBqCMZoKdG9rMB3Z2TWdex/I/tza3bG3upq+DcWzcPtfq2r6 ubcm/wCgNVQ4Tsnt+Om3HlsZncnjKGWN8ZSY7E4nFU2VafMxY5aqPCphJV+8H/eKc+++Hty/t5te 1Jy9Be0W/kgumma5houq3WsMTRRSOpMlHbxInNu4ZAzylew+31hsu4DcJJTcMmYwygBTnu4kEgcM YI1ChoA+7QwfbHyNz26tu9MZXBbB672dmMns/enf+ZoYN4VMu88ZNDT7g2V0zseKWOjyWRxOurpM vn81WLj8PloUoTis/NFlaPGjD7o393ve+6+0bb7n+6cj22w3bLJFZIXguLq2o7LMZdBIilKxqqR+ GZIJ/qI7tHh8CVJzXz8m1yybbtYDTqKFzRlVsClK8RUkk1oy6ShB1CwDpT419VdDnMZTaGJrsvvv dMENNvbtjele+6e0d7Q02VrM5R4/O7urVEkeMo6vIV0uKwGPSlxGMWd4MZQUdPphHbzkD2r9vvbD arfZ+R9rgsIrZGjQxxqHAdbdZqNSq/UG1gluQmlZ50E8itMS5ha+3S/3OVpb2VnLGpqcYLUx/R1M FrXSp0jGOiBUXfnT38sTvDcHQPfm+sH1R8YvkVvDJdqfEDeG4jXwbP2Vv/e27If9PfxxyeTp45aT B4ugz+Wpt6bcqa9qXH0+NzOTo0emoNu3UfO6RIZJCFVQSSTQADJJJwABkk8OkIFegD643xv7sD5g fLDe2z9mR0nw17DHWm8OouwclkdyYrLb27Sp9mUe2u0tx7f2Fu+hpK+kwuV+0pTE8MMOLmeiTOY6 pysu5cj/AAvgD/eX7z7C8wc52F57e30UvM1m81tucVoga2khZnnE0k8beCLuO6edJEAM8hleSfSq QtLPHtxDvsFm6bghFs4DRlz3A0C0CnOgqFIPwigC8TRU75/7KX+Pn/iPvkB/1v2b7wu5J/6cVz3/ AM9PL/8A1e3DoZX3/Jcsv9Lcf8dj6MHV0lJkaSqoK+lp62hraeakraKrhSpo6ujqUMNRS1VPMGSS ORGKOjghgSCCD7hS0u7mxuY7yzkaGaFleORGKOjoQyujKQysrAMrKQQQCCCOjdlV1KOAQRQg5BB4 gjzB6rg6R/l9V/w0+SG4+9/gV3bU/GvZnZM9Xk+5vjHltk1/aHx47Hz9TWUZhzdPss7hwb4Gakp4 68UM2FqIKiCSpjhjqBh6ZcNJ079qP70X3R5H5Uj5d552qLma4t6JFeSXH0svgqrgCcR28onlVig8 WsZeNArjxWedo23T2z2y9ujcWUptlbJQLqFcfDVhpHHGaE4xRQc2aSu2NT9m97d17qj3v2BlcImV 7D3htTYecoKWPaGwqaurdr7F6461xNTuDLpjcXHV174zCw1uSrqqvrayYSVNZXMGxi98ffP3D+95 7nWAnhFuskgt9vsTOrxWxuGQSM9w6QRqlUUyTMkMcUESvNVxPcSiXZNk2/lPbnodRA1SPpoW01pR QWNcmgqSWNBjSoFzrb4xdvd20GH3T35ks/0bsev+zy1N0FsLcENL2bkKH7qpmgxfdnb23ZZDj5Jq c46WtwWxauFqSpjqKZty5iilZD1p+7t/dtche208HMXus0PMe5qlTCVc2UMrJGQ0KkxljC7Tx6p0 l8XTb3MQs3WSFoq5g9xb/cQ1vtYNvFXjjWRU8TmlRpNFIpVlOsUPRme3viT1f2H8asn8a9m4nGdO 7exmOwtb1DluvMLjcLP0r2NsXLwbu6p7M2NQUaRww5LbmfoqDMUpsBLLDom1xyyhul9pa2tjELey iSGMFm0ooRdTsXc6VAFWdmdjSrMxY1JJ6jhmZ21OSTjJzwFB+wYHy6r8y/8AMZ+PncPx07p+N/yA otr5D5nYPrLfXVHd3wwixu+qip3d3RR7cymMr9ndd1mKxldUZDDZw0Me4sVk8Z9zU47buSxObyKU cdTBI4d5z5m5S5S5dut352vodv21EImmml8JFRysZJcEMorIoLKQV1A1HHpRZ211d3Cw2SGSQnAA qSRnh+XDz6ZvipV98Vnx26kl+TuCpdu97x7SpKPsbHU2ZwGeqJMtj6iWgpMvmq/aaLiFyuQooqXI Zilw7S4+lrpqiloaippYYaiX5NveyL24h91t8HtHcNdcuNcs9lI0Twjw5FV3jjjk/UWGGZpIbcyf qNBHGz9zHrKjZjuJ2uD96rpuAtHFQcjAJIxUihamNRIGOoPx/wD+Pm+Tv/ix+V/99Fs/2Jfe/wD5 JvIv/isWX/abuXSfY/7S+/56X/45H05fJf4wdGfL7qfN9LfIPYGG7B2JmXWripcnTp/FNvZ2Gmlp KHdG1Muo8+OydNHPNHFV0zKxilmp5RJTzzwyBH2q92+fvZbm6HnT28v3sbyLtdQSYbiIkF7e5iqF mhegqpoysFkiaOVEkVVum1WG82hs9wjDoeHqp8mU+RHr58CCCQQS+Kvx9+ZfxO6Hyfxi2l8/M7vn qKKuyGE62z3ZXSWL3L3v0Z1NNNHSYTYvVfaZ3HHjjWYvHeaDHZLc+2MzS0s/27UmKpsdSpim6Ybj /ez8z7hy/cbYOTII7qa1aITrulyirO8TIZgsNvDOiByJFSK6jmQLoS6VysyRuntXax3Cy/WMVDV0 +Ep7Qa0qWZSaYJKlTxK0wTKUVNVbOm6w6C6Q2NHuXd2WwdZT7L2vlNx5LD7b25sHYC4/H7p3zv7f dfBlq2Ogx7ZHF0ss60uQyNbX19Kghl81TVU+FnsZ7G+4v3ufcq9ma5ajSrNuN8Y1bw2uDIUCwoYo 0UiOQj+yt4IYjFCrztZ2VyMt73vb+U9uQBfIiNK0qFpXJqScj1Ziami63U1vV/wkwFNktt7++Re5 F767PwM9LmcTjp8dU7e6M2DuBcZBTSVfX/Tz1VXTTz09QlRU47ObpqcvmKR6iYUddSQOtNH9AfsN 90z2h+77A0nKdmLm/kUK97dJHLcsFlaRWEpQvEzAQCVIWjtjJbpNFbwO8muBt85q3bfmAun0oMhF JC5FOFaGndQmrUYgswAolPmZFL8dt/defzBcAv2+C6nw7dW/MCmghZhnviBuHNfxet7CyEcCNJLU dT5uU7zppSHaDBVG7aenjafJL7yd6DXRHPlT8r9sfKffvwd3x/L/AE2V8gK7b/dO58f3r2hSR57D QdSfHDL4OTb/AG9sDeVfmqPHfa5CvysW3stHtCpr48z/ABLEYbJnCV2NpqqemwC+/wD7z7C3fs/u PKvujuq227LbtPtMEbSSXBvKnwZIrZQ0b98BgmnZUe3tp5ofqLZL5jKO+Q4d8Td47rbItUWrTKxo F0fiBbBGG1BRUMyg6WKYIP8A8KJ/+3Ofy+/4P8fv/gn9k++S/wDdz/8AiXfLf/NLdP8Au13nUr+4 X/Kp3P2xf9XU6yfCT/sjH4jf+KxdB/8AvqsT7+0Pln/lXNv/AOeaD/q0nXC7nb/lct3/AOe26/6v ydGd9nfQY697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6LFtT/ss/vv/AMVf +Iv/AL9fu/2QWn/KzX3/ADz2n/H7voW33/Kk7Z/z17h/1a2/ozvs/wCgl1737r3RNvmL8eM58mE+ M2xto7Gy3am+trfKfY3b+yOpKLIYPb2D7azHT2xdz9hZPrffO9tw11BSYDCZbEUGTpqzKPI7ajFS xwySVKj3GHu7HbScqfruy6ZlZaLqq4SQBWyNKmvxUOaCgB1Cc/u9zXsPPp+jjWTXbur6m0lYzLCW ZBQ63FPgJXt1MCSoVjo/Intz+dx8oPjv2x8bewP5LnTeK2x3l1Z2V1J2Bn4P5ifUm5xTYTsPbNXt hcpt7apxmHkjqqGOqE0ZbOBmmRZYpqZgunFXrPPoDegurd6fHfqrq74w9k7P3bsvfPQHTXT2wK6l 3keuf4luXCbf2TDtPDb6o4OsNzbtxkFLlJMTWFKU5mWWGSKWJ9WhZHy79ud/st55dhtrQMGso4oZ NQAqwQCq0JqpINK0NOIrUDnl7ycp7ny3znc318yMm5TT3EWgk0RpSQGqq0YBhqAqK1oSKEjV7H3U TUxXr3v3XunX+Ql8UOruwP5SPw63hnd0/JWgy2b252ZPW0eyvmf8wutNrQvB3juejRcRsbrjfeKw mPQpGrPHQY+FHctK6tK7u2BU39q32n/D11hg/sU/0o/wdcewuvsD1h8ifk7s/bdfvfJ4mi7Q2ZUx VfYfZvZHbu6HkrvjfsOrnWr3v2xls1mqiNWYiGKfIOkKWjiVIwFGUfs+D/VD7Z5P8CdYK/eJJPuH T0tYf8Mh/P8AP7OAHTZ7lLqCOmDdO1du71wGQ2vuzD0OewOVjijrsbkI/LBI9LUJW0dTGws8U9PP HFU0tTEyywTRxzROkqI4TXtla7lavZX0YlikFGVhUEf7ByCMggEZHS7bdyvtnvotz2yVoLiE6kdT RlPD9hBIINQQSCCCR0u8z8w/mt0r0/v3bHW+QxvedTksFV4Tr7cvY9TV1XbHS+V3Hk5aBt+zZCNJ U7FxW16aqhyMO2sitHnKuKgmi/juWrKqnpBBHN/tKIoZL/lkFyDXwSc0qxbRX4jkaVqulUoBIzVG VPt394Az3EW087FY1I0i5ANK0UKZKZQdpLsQ+p5NRMSJRrjfhjT/AB9wvx1672T8Z94Uu9us+vsb LtH+NS5CWu3dUbroqqSq3tkO0Y6+KnyEO7chlpqzJ7mTK0sFa+RqaiaqhSWRh7gy6tbmymMF0hjc EghhTgSp+3IIqMVB6ylsr6z3G3W6sZVljYAhlII7lDCvoSrK1DQ0INM9Kb5MfFP45/MjqzLdK/J/ p7ZPdXWeZbzzbb3njPuTjsgIHpoc5tnNUjQ5DD5OGOSRafKYmrpquEM3inTUbs9Kuqbsp0n/ADNP 5T+Oqdw/Endm6v5m/wAGtq0v3uS+IPeu5/J80entqUSNPlE+NvfckBXedFj6dS2P2huWmesMEMON xcsk8nlPuvdAD03/AMKEO0/5n+Rz3SP8oD4R9oZHufAwUQ7S7m+b7bP6y+O3xsostVNQUG4t4UfV m4NyZncdVJNBWR0e36M0NbN4JZ445oqapjT3XurAfjj/ACfNg4HtPFfK356dr7m/mKfM+iY1eF7M 7rw2MoOmulpnmWqTFfGr44UJl25tWCneOF4sg8VXkfPG1VFVUzzSR+/de6uR9+691R18i/kjRdL/ ADIqex/h6u1u6N39i7QyHTfy82Uucq8X1fs7dPXWHOc6O7e3FvvF01TSPuXB/e1e187tjGmoy+Qx uRxbVIoKbCQzkWcucl77zLOEtIikX4pWFEXAI4kE1DKRpqSDUA06j7nL3L5W5KtmfcJ1kuKVWBDW R+4qaUBC0KsCWIAYaWIqOiz7urd79sb1xnZfeG9arsve2Besm2hTtj12/wBd9YyZXDR4TMx9Vdew TVEWMeqi+6STK5CryObeCqqKKbLzULJTR5McschbJyuy3EC+LcgU8VhkVUK2gVOnVSpyclgulTp6 wo5491uZ+eA9ndSeBZFq+AhwaMXTxCAuvQTRe1ahUL6nXX1L9jXqMeve/de6CrEbQoKLu7sHf0cs 5y25equm9n1cDEfbR47Y+7995vGzRD6+R5NxVayf4In+Psuhto03e4uh8UkUCn/aNPT/AI8eju4v JJOX7SxIGmKe6cHzrIlqDX/nGKdCr7MeiTr3v3XuizfJj5YdU/FLY2b392XJmKrFbcx9Jls5R7cX Avk8fjsjLUUuEaofcmQxlH91lKmkqqXCYtas5DKy09WuNpKsUNcaYKcyc57Jyr4Y3N2MknwxoAz6 f4iCQAtcAk5OBWhoPuSvbbmfn0ytssarFDhpZSUj1HggIViz0yQAdK5NKqCHPxO+eXTvyqrd0bJx 80mwu7+vqz+Hb96c3PPNFuHHyikWr/i+1qrIU1C2axLKxMeQpqVCU0TPDHT1FJNUMcq887PzUhjt 28K4XjExzTjVCQusU44BFDVaUJW8+e13MfIcgmvFM9m9NM6igBrTTIoZ/DatKdzKQVo2olQd/wBj LqNOve/de697917r3v3Xuve/de6Gf4q/GfpT5Mdq9z0Hd2z6je1DsLr7pCs2jRNu3eu36TC1e8Nx 78h3LVQU+1MjQpJJWJiMakjzK7aaeMKQAb44e9rMd3soycCFiB5VLmpp86Cv2D06zN+7Kif1d3KQ AajcoCaZIEQIBPoKmg8qn1PWpt/wsY+M3SPxt7J+B9B0vsn+5lLuzY/flXuCL+8m7txff1GJz21Y cfJr3XX17ReNZ5RaAoG1eoEgWhXrJnqzf/hGF81uqM58d+2P5fdLhd+Q91bG3h2F8ocpn6rF7eTr is693LLtLrykxuKzEWUfKPloa5Q9RBLh46dYXVkqncmMe691u++/de6r7/mU/wAyLor+Vj8dKf5N /IXbXam7di1XYe2OsqbDdPYHau4d4S7h3XQV+Tx8wod5Zvb9CKWOHG1LTyNkQ4OkJG5aw917qgb/ AKDVv5WX/Pg/n/8A+is+Ov8A9tX37r3Xv+g1b+Vl/wA+D+f/AP6Kz46//bV9+6917/oNW/lZf8+D +f8A/wCis+Ov/wBtX37r3Xv+g1b+Vl/z4P5//wDorPjr/wDbV9+6917/AKDVv5WX/Pg/n/8A+is+ Ov8A9tX37r3Xv+g1b+Vl/wA+D+f/AP6Kz46//bV9+6917/oNW/lZf8+D+f8A/wCis+Ov/wBtX37r 3Xz3vnh3j0l2/wDPL5D/ACR+J+F39srqLs3u3Nd1deYDsbE4La29drZTd+Sj3vuDGVeJ2TmMxQ0k NHnqivjxi0OWktRrTt+w5MMXuvdfZi+AvyfxHzR+Fvxj+UuHrcLWt3V07szd+4l27LJNhsTv18Wu N7J2zRtMBIP4RuGnyeLkSQB0enZHAZSB7r3RvPfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Uer/AOAtT/1Dzf8AWs+/de61bf8AhLZ/oH/4Zm+Pf9+v9Ef95P7+9/8A 3n96/wC538b8X+mjNfafc/xj9/T4tPj1cabaeLe/de6CPof/AEAVv/Cnyny/8sqj6wqeoR8Kd6Y3 +YrmOkqPCp02N+T5qtyG0FxeQ2gqYibdMuWXZrZs0LPG375nvkkrivuvdLv5AdeD+dt/Oe7L+GXa mZy9d/Lo/lS7Z6x3n3R1Rgtw1lJt75EfKvtvESZnZeI33/CvtJvsMRRplaGSIzTNCcZkKeBoP4vU PF7r3W0JsDrXrvqfZmG656u2Fs7rnr/btCuMwGx9i7Zwu09o4THImhaLF7dwUMFJBFbjRFCAfyPf uvdauP8AO3+F2K/l4wYr+dv/AC6Nr4Lofv343722nkflJsDr7Fpt3rb5P9Db33jQba3njd/bDwJp qGaujrKqlqa+vp44JpqaSrrZ5mr6ShqYPde6FH/hSp2ftfu3/hPV2l3Rsieaq2X27jPh92ftCpqI mgqKja+/u39o7rwE88DgFHekq4mZSLgkg+/de6uo7jqv5fdH1jvSfvmT4iJ1CMHWDfq9mr1BLsab A6ddVDuGDcIajlhawtHKram0hQWsPfuvdUj/APCX+BIvjl8+p+qKPPU3wiyP8wzv6v8Ag1Ubop83 T5Gu6PNLQ0ONmw4zwWdsOlLBjYqVitxVrXpIfMkir7r3Qq/8JS/+3IXxd/8ADx+Rn/wQe5PfuvdP v8+D/maH8jj/AMbYfEb/ANxM37917r38+D/maH8jj/xth8Rv/cTN+/de62EvfuvdJ7de6dubG2vu Te28c3jds7R2fgMzurdW5M1VxUGH2/tzb+Oky2czeWrpiEhpqSlhlnnlchURGYkAe/de6+ePj+7P l5B3rD/wqtyLbmovjNkvmWvxzrejwk65I/y8ZAejqDfxgjy4xE/2uZZ8SsfnNLJuIfxtYEBMh917 r6H+3dw4Ld238Fuva2Zxu4ts7nw+M3DtzcGGrYMlh87gs1RJksRmMVkKRminpqmnljngmjYo6MrK SCD7917rX/8A+FAdBRSf8Mva6Kkfyfz5/wCXzSyaqaFvJTVH97PuKd7rykmldaHhrC4Nh7917qzP +ZtDFF/LY/mF+KOOPV8HfljqKIqXA6F3Ba+kc2v7917qpzZ/zVrf5en/AAmJ+PvyxwVBTZXefXP8 vr44Y3rnH1xpjQydl7/2tg+vdh1uRgq7JPSUGTylPka2luGnp6eWGM+R19+690Yr+T1/Kf65+HHU m3fkD3jgaXt3+Yj35QL238kPkN2RB/ezsPC797GDbr3H11sbcG4hPV4rF4yorJaSreleObJ1KSVl YSGp6el917qyv5S/D/40/NTq/N9PfJ/pvY/b+yM3j62hWl3VhaSqzO3pa6HxNmdl7mRVyGFyURCv T5HF1MFRGygrILe/de6oj/kn777b+H/zO+bX8kHuTsHdnbW1fixgNrd8/C3sXeMC1W5J/i1vWTHw NsvcO4IpBFUPg6jN4aipo46SFRUplfCqUiU1PTe691Wfl4/nR0t/Ow/nS/Pj4YVknaWG+KXYXw5x fyW+GD0uSWX5KdB9n/HqCr3hldl5ihWtNLunaJ2/DlMOI8XJLJG9VplmRHxOV917rcg+Lvye6b+Y 3RmwvkR0LuqLdnW3YWKFfjKkolNlsPkIHNLmdrbmxqu5osrjalZKSvpGdtEqEo8kTRyP7r3VOX/C f7/utL/43u/mGf8Aype/de62Dvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3SG7Mpaar6733DVU0FTE+y91RvFURRzRvHLg51ljZJAQVYcMCLEfX37r3VK// AAmU/wC3HHwR/wC1F3j/APBO729+690jP+FPfam0tg/ynd/bB3juZ9m4z5K95fHL4/ybnGG3Pnos HjMx2rQ9jb0ydXjNoJJkJoYNubZzUz09MjSVAX7aJJJZo43917o0PxS/nTfynflTv7bXQnx1+T20 azfldRwYzZGxN4dbdr9KVO4Ex/2+NpMBsw9ybd2/T5KsHmp46fG4+WWpkF/FE4R9PuvdEJ/4VM/a /wCyffB/777f7H/h1n4jfd/d+P7X7X+7e8/uPufN6PHovr18Wvfj37r3VuHyYqv5aNJ0f2FN8qpP iAnRI2/X/wB/B2WvVsu15cWKV3aHwVYaSWsYA/Yx0StVtPoFIDUeMe/de6px/wCEyv8Aeb/hoTt0 qm906Hf5HfLVviCN+Nryn+y1aacbe+zcqrNANwDcgmZ1BNaKzSBH4x7917qJ/wAJ3/nH8Gunv5N/ ws657i+YHxP6s7G27gu4P7xbE7L+QHUGyN7YL+L/ACH3dncR/Gtsbpy9LX0v3VBVUtZTeeBfJBLF KmqORGPuvdbC3THyg+L/AMh59wUnx3+Q/QneVVtaHG1G6qbpftrr3syo25T5aSaLDz7gh2PkK1qN KlqeoWmapCCQxyBCSjW917rXt/4Tlv0enxT+YMnYz9VJm0/mbfMh9e9W2guUTGrlMM0Tas7+8IA3 kKn9F9Vvz7917oHO1sh8V9wf8KQ/5bUv8t3Jda1HZ1H1j8l63+YhkvjlDgch1lWdVzbFdOr6TuKu 6z/3ENuE138UDPmJRVRyPt4vqc46J/de6H/5XdkbR/l9fz5euvmd8u8NPF8VvlT8Vds/FTqL5MZv DTZLYnxb76wO7q/OVGzdy5z7idNvQbpoJKhjlnooA61c9qhaGkzckfuvdXo7U+K/xXX5FV3zo2N1 nshPkD2L1LQda5Tu/aNXUJNv7q6ryVLuvFLko8NUjEZZpWp6J6fNzUstY1LFT06VZpI4ol917o0P v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6A75Jf8AMkd/f9QGN/8Ad7S+ /de6HH37r3X/0N4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+6918yH/ha9/28n+Nn/ijuzv/AH/XYPv3Xut3H4HbP+cU/wAHfhnN t/5D/FLF4Gb4pfHiXCY3M/DPt7OZfHYiTqHDtjaLKZuh74x0NZUwwlI56uHH0qTOGkSnhVhGvuvd Gu/uV8+v+8lviB/6Q93P/wDdCe/de69/cr59f95LfED/ANIe7n/+6E9+691WelFv/I/GT/hOlR9X 7m2fs/fM3YHUX8D3Hv3Y+a7I2njvH/Je71lyYyuy9vbh2rWVvmo1qIIPDn6XwzPHO/nSJqeb3Xur MP7lfPr/ALyW+IH/AKQ93P8A/dCe/de69/cr59f95LfED/0h7uf/AO6E9+691rCf8K19ufKPFfys 8BVdxdx9B762iflb1JFHhOtPjZ2J1PuJMu+zt1/Z1z7o3T2vvSmamjjEyy0gw6vIzIy1EYRlk917 onv/AAhj/wC6on/lk3/zXPfuvdb/AJ7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XuoO QyGPw+Prstlq6jxmKxlHU5HJ5PI1MNFQY+gooWqayurqypZY4YYY1aSWWRgqqCzEAE+/de6rdwXZ Xya+cTJuH4/buk+K/wAQquSUbc79qdl4bdXyO+ReHEngTd/Re0Ow6ep29svadUA02G3RurBZuszV OUq6LC0FDJR5Ks917onn8wvoij6C6n3dkdvdyfKPeuU7G+MHzz212B/pX+UXevYW0N243D/DLeu6 MZJP05mc6diY+ogroYZ4qnC7WopFKKoYIAvv3XutPf8A4RU/9vTe/P8AxQDtP/4Irqr37r3X0+/f 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 GxujPk1sPtPorsrDbA7j2HWSJsLtzrvLS4vclFjsnPiMfvSgwW6MdTyPNjcpDSVuIzmPL+GspxLQ 5CmaNmpp/fuvda9nxBwHY38on+a119/K/wBvb93X2b/L/wDnT1t3R3R8Rtrb8yj7n3p8Xe2eqKH+ +vafWWI3VWTiql2jV0KVlZT01RTtpqKmiaKT7sZmqyHuvdbO/v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de6A75Jf8yR39/wBQGN/93tL7917ocffuvdf/0d4fr/8A5nH3/wD9 R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6918 yH/ha9/28n+Nn/ijuzv/AH/XYPv3XutsT4UYb+XXJ8NPiS+6Piv3nmNyv8ZOhX3Dl8f8BfnduTH5 TOt1XijlslQbi27sKpx9fDPUeSWKtoKiWnnVhLDI8bKx917ozf8AA/5Z3/eIvf8A/wCm6v5hH/2u /fuvde/gf8s7/vEXv/8A9N1fzCP/ALXfv3Xuiv76g6zqfhv/AMJ6YO4do7g331y/YHSf94tqbX66 7C7ZzuV0/wAnDu98R9j1/wBVY7LZ7IeCvFLUy/YY+XwRxvUz6KeGaRPde6NB/A/5Z3/eIvf/AP6b q/mEf/a79+6917+B/wAs7/vEXv8A/wDTdX8wj/7Xfv3Xutcb/hUbjfhxSfy1MFL0P0L2n1tvb/Zm +rUl3DvL4k/KzpPEPgztLcxr8cu8u6Np4TDtNLIIGSiWsNRKEZo42WOQr7r3RO/+Ea3yx+LHxf8A +HHP9mX+S3x/+O/9+P8AZQf7lf6dO5OuupP74f3Z/wBKP94/7rf3+yWP/iH8P/iFB999p5PB9zT+ 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 HWe0tw5DqHouhb5WfKAwtHjegOnM5jMnWbbqZW8FLne+d/0wqsR1ztyOWxqszuV45ZFV4sVQ5bIm DHz+690sPip0Bunp7C723x3BuzE9jfJTvTcdLvnvXfuBx9Xi9qjJ0GOXDbQ6z60xWReSpotobRxi picFBUP56hvu8tWj+JZSud/de6Nd7917r3v3Xuq7us8zTfKX5obi7rwCtX9H/D7bPYfx4653KUgk w3Y/yM37ncXL8hNzbYm1Fp6LY1DgMbsqmykX7cuUyG6sfa+N1ye691Yj7917r3v3Xuve/de69791 7qp3+eL8Tz80f5VnzJ6Wx+PbI7xpuqsj2r1vT09MtTk5+w+lqmLtPbGHxOr9E+XkxTYMuCP2q2QE 6WPv3Xuvnn/8JOvlpB8bf5s2xevc7XUGP2b8tNh7s6AylTk8nV0NLSbsmSLfvWk1JTRhoKiurc1h qfA0iThSP4lIIpAzGKb3XuvrJe/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3XusUsflilivpMsbpqte2tSt7cXt7917qvv+Vh8Gp/5bfwS6Q+GFR2HF2rN09J2bI++4Nvv taLOf6Q+3c/2ioXBSVVYYftRmxRm9S+sxeT06tI917qwn37r3VcX8x/+WJ8fP5mHWu19r9r1e8uv O0Oqc228fj/8ieqM0+2e4OjN9LVUteuf2bnEBVop5aGj+9o5ls4iSSCSlrIaarg917qr6p+I3/Cm fqSgqut+lv5mvwq772JS4Gnw+2O1vlD0dnNpd4YuWLQoq6+j2Ft/cGNr6iJIQqV2YrsjLN55DVJL KiTn3XujB/Bf+TFl+nvkTH87fnz8qN8fzAvnNT4l8Ps3sHemHpdp9X9G4qtpXXI4bp3rXHyNR0Si aqyDwSwQUlLGKhpIMbT1V6lvde6OJ/NV+CmR/mR/CnsT4lYnsmi6krt87o6r3HFvjIbWn3lSY4db dm4rsKSkkwFNX415DWLjTSrIKtfGZBIVcLob3XurF/fuvde9+691Qh2N/LV+dfxl767z+Q38pD5T 9R9dYj5Ndh/6We7fh38wdlbq3x8cch25l4poN69q9fbx2DIdz7bqsqDT1FXiaCMQT1EdpKkUcdDR 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 X11XT1EtE+TyLwyfb1FVHUJWTSrUx+691dh7917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3XugO+SX/Mkd/f9QGN/93tL7917ocffuvdf/9LeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdfMh/4Wvf9vJ/jZ/4 o7s7/wB/12D7917r6D/8vb/sgX4Pf+KgfGn/AN8xhffuvdG/9+691737r3VH2G+Hn8yfBbS+Auza XefwdqaL4B57b2b2ZXT47vqKq7BfbnxB3t8QKaLc8EbMlIJcbvaqzD/as1qmmiiBMTOffuvdHB/7 Gnf+C/8A/wBmL9+6917/ALGnf+C//wD2Yv37r3VUn847+Wz/ADSP5qHxFo/jNLu74CbMfH9t7M7Q gyseX+RGCWeXauJyuHNBNkmwufKK6ZR5Aq45izIo1oCT7917rVf/AOgKn+ab/wA/8+AH/o0/kV/9 qr37r3Xv+gKn+ab/AM/8+AH/AKNP5Ff/AGqvfuvde/6Aqf5pv/P/AD4Af+jT+RX/ANqr37r3Xv8A oCp/mm/8/wDPgB/6NP5Ff/aq9+6917/oCp/mm/8AP/PgB/6NP5Ff/aq9+690z7h/4RlfzM9p4DOb p3H8jf5fOI29trD5PcGey1X2p8jFpMXhsNRPkcpkalk6pJEcEEbyOQCbKePfuvdFQpP+E0nyqr6W mrqH5W/Ditoq2nhq6OtpNs/zCqmlq6WpjE1PU0tRD0EySRyIwdHQkMCCCQffuvdAh8jf5A/zK+P3 WlV2Lhd19b/JCupcxicSvWXxy6y+bW5+y6mPJytFJmKXFb96g21jzR0mnXVu2UWRVIKRyG4HuvdC 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 sHYOyeqtk7V63632rgdjbB2NgcbtfZ+z9r42lw+3tt7ew9KtHi8Ph8XRqkUMEMSKiIij6XNySffu vdLD37r3Xvfuvde9+691737r3XvfuvdfFp/mF9Q7x/lV/wA37u7bHW3m2tk/jb8o8b3J0RUxoYlx +z6vP0fdXSbo5BSUU+JrMXT1BVSjSRyoUFmQe6919j7ont7a/wAgek+oe99kGc7P7m6z2L2ltlat QlbDgt+7Zpt0Yymroh/m6iKKqWKojNikisrAEEe/de6Fj37r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690B3yS/wCZI7+/6gMb/wC7 2l9+690OPv3Xuv/T3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691xJCgsxChQSzEgAAC5JJ /Hv3XusP3dL/AMrNP/1Oj/4r7917r33dL/ys0/8A1Oj/AOK+/de6993S/wDKzT/9To/+K+/de699 3S/8rNP/ANTo/wDivv3Xuvfd0v8Ays0//U6P/ivv3Xuvfd0v/KzT/wDU6P8A4r7917r33dL/AMrN P/1Oj/4r7917r33dL/ys0/8A1Oj/AOK+/de6993S/wDKzT/9To/+K+/de6993S/8rNP/ANTo/wDi vv3Xuvfd0v8Ays0//U6P/ivv3Xuvfd0v/KzT/wDU6P8A4r7917r33dL/AMrNP/1Oj/4r7917r33d L/ys0/8A1Oj/AOK+/de6993S/wDKzT/9To/+K+/de6993S/8rNP/ANTo/wDivv3Xuvfd0v8Ays0/ /U6P/ivv3Xuvfd0v/KzT/wDU6P8A4r7917r33dL/AMrNP/1Oj/4r7917r33dL/ys0/8A1Oj/AOK+ /de6993S/wDKzT/9To/+K+/de6+ZN/wtakjl/mTfG1o5EkUfB7ZwLIyuL/6eewDa6/n37r3X0Iv5 e3/ZAvwe/wDFQPjT/wC+Ywvv3Xujf+/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917pPbs2xiN7bV3Ns3cFOavA7t2/mdsZuk9H+U4jPY6TFZKn/AHVZfXDK6+pSOeQR x7917onX8ure+Rz3xW6/6z3lUwN3J8XqWH4q9745Uipqml7T6LxtNs6u3A2OiLfb0W6cbFjN54Nb kSYnL0EykiQe/de6PN7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3XutJz/AIWSfy5Ye1vjx1z/ADGOvcKr78+N82O6u7uejpr1Wc6M3tuHxbQz tY8YZ3O2tzV3hjVVA+3zVVNK+ilQD3XuiGf8Iz/5iJ2z2X2//LN7MzEMm1O2qHM93/H6ny1Qrwwd ibexUNJ2z1/j4KjWZBmsBTw52GmULDF/CMjIQ0tYb+691v8AvTHRHS3xz2NQdZ9CdU9f9Odf42R6 ik2j1xtTDbRwQq5lVKjIVFDhYYVmqptKmeqm1zSkXkdjz7917qvjM9nd9fJLJfI2i3N3xs/4CfH/ AOM3bm7+qu2cptbIYLM/IrN4rbmMo904veec7b7SoYNo9bYHcm28thtw49qHCZzIti8hTVEecweR WWnpvde6Cvr3tXYHWe0t61v8un4+7do9mVNKmZ7h/mM/MndO8tgdIZyDEU3iG/dzd1dqy1PZnc8t LAG+zycM6bfljUU6bvoUCqvuvda6fzz/AOFCPwK6Vzc1HSZzcn85v5L7ZqBPidwb4o6Xqn+XX1Ju +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 T/f3zDmq1m/h+5+mtgwbZ6SqlUER5Kj+SfedbtHYOVolN2mfbO4MtVBAfFSTytFDL7r3XBsP/MX7 cTy7i3r8evhZtKaGU1WM61x+Y+VfdYpXDeKspuyuyKLaOzMBWxxlXmpZti7npklGlKueJdcnuvdf PM/4Va9F9D7X+Q3Rfd3TPyoqflhvbd+0c91l8kt1ZfsvY/Zm79s9g7DnpsjsVN7nq/H43b2Aqcnh shUR0eCoaCiCQ41p1ooo5Fkl917ras/4SR/LRfkN/Km2/wBSZjKJV70+InZG7OnKynqMtU5PLybD zk/+kjrnK1cVaWkgpVhytdg8fErNEsWKMcJRI/DF7r3W0L7917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3XusUsniilltqMUbvpva+hS1r82v7917rVU+OX8+z+Z98sOndqfIz4// AMg7fXaHQu+V3XNtLf8Atz529YwTZ+n2bubI7MzpodtZzZVJXeWDK4uso3haHUzxsYfMpjL+690Y jpr/AIUQ9V0Pbey+gP5jHxH+Sf8AK67W7FyLYvY+V+RmFet6I3RWtlqfCUcGJ7rFHionjmqalEbI tiVxlOElkrK+mjVXf3Xurtfk93Ofjl8avkN8hl26N4/6COje2e512kcv/AF3Uer9gZDfA24c99tW /ZCu+x+2+8+zn8OvyeGXTob3XuqFelv5vP8AOV+Q3UvXPenT/wDwn8bd3VnbW0MHv3r7dDfzQ/jV t3+8O0tyUKZLB5hcHurblDkaZaiCRJUirKOGUKRqQe/de6tW+DPyM+dXe9H2jUfNb+XifgXNtI7V PXVOflZ1R8m/9KMWViyT7pk83V1HSjC/wg0uPW1aHNV95eK3gkv7r3TZ/K//AJmHQ380/wCL+2Pk T0zK+382kdNhe3eosvkYK7dnT/YKQE5LbWUqIo6f77HyuksuEzkdNFFkKUeTxU1VHV0VL7r3R3O1 N7nrPq/sjscYz+NHr/YW8N7jDGs/h38W/upt6ozv8M/iAin8Hn+38Xm8EmjVq0PbSfde6Ih01/Mt 663j/K62t/NE7e2lVdRddZDoCt773ZsTGbipd85TA0NEtQI9pYLcOSpsBBkq+tniio6BqinoY5Ki eJJGiQmQe691Vd/w9L/ND2l1rj/mr2r/ACadx4T+XrW7TwnYeS3Xsf5EbJ318kNrdU5qSjrZO1sj 1JTw09XPR0mLnqMpPRSY+kRKeI1FRkaaj/yo+691ap84/wCZDs74mfy1d5fzKNhbIqu9Ov8ADdf9 Ndn7O2lUZfK9U1m9tndz7125tvA18lfn8PXVuLkSi3DFkvtqzD+UmP7eVIGcyR+6901fMT5ZfzCu pajqio+GH8sT/Z5Ntb52R/efe24P9nJ6a+N3+jjOTyQvjdr/AMK7Px9RPl/PBI0/3tKI4006GUMe Pde6rU+H386X+aT80aLHbz6o/kaPWdQU3cWa6d332S/8x7omgOys3sndKbY7Ln/ufuna+KyeROEc zOy0cJjqmiMdNM5Ooe691abt35/NSfzHN7fy8e5epJOpc1mOq8P3D8UO2ZN+Y3cO2PlHtelp6huz 8DicLJQ0FRhtxbZkp55JsIJq+SeipazIl6eligaq917pefzD/nJsX+Xr8Xt4/Ijd+3cl2DnqauxG yeo+n9vZCjx27O6e4t3SvS7I6z2tPVrKRNVPHPWVssNNUzU+PpayripKp6cU8nuvdGf6oz+/d19Z bA3P2nsKk6q7H3FtDb+b3x1lQ7tpt+0/X+6MpjI63M7NG9KGloqfKPjZ3eklrqalSGV42eHVGVdv de6EL37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690UH5p92fJ3ofqal3h8Tvhxlfm32ZNu Smx1V1Xj+8OtOgafE7ZOMq63Ibtrt79meWCQQzQ01KlBR0k1RKZy4AWIh/de6Dr+Vv8AOlf5lPwW 6Q+aSdYt03/pj/0jo3XDbw/v9/dyXrztjO9WzKu7RjMN94tU+EatVjjYCgmEZDFNbe690wfzAP5h +N+GEvTfVXXPTu8flN8wfkzuWv2t8c/jD19XU2Cyu8f7v0y5Te+997b4ycM+P21tnA0GuryGWrkb hToj+3hrqui917qvLfX82P8AmM/CPHbc7d/mc/y3No9Y/E3Mbk2pgt+9+fGP5A0neFT8dU3pUrjM Tke3ev0x0dZU0NPXy02PrspjJhSCaVEp5KieWkpqr3XurFv5hf8AMU2X8Fuguve18DsLM/I/sHvv sbY3Tnxg6c65zuOpMj3p2h2RQz5bZ2Ewu6HjrIIKOqpKaWZMhHTVIZmgjjjdp0Pv3Xuq9+vv5t3z 36T7z6X6z/mlfyz6z4tdZ/JvsjF9SdL969JdxYP5G7Vwfae55oIdmdcdqYrY8VXJQz5NpZYqXIfc wtLJTzGnx80Mc00HuvdX/bv3ftXr/au5N9773Jg9nbL2dg8pufdm7Nz5Siwe3Ns7cwdE+SzOdzuZ yTx09LSUtPHJNUVE0ipGiszMACffuvda3+L/AJ4nzB+ae5dx0/8AJ+/lj72+U/Su3M7XYEfLrvzs TG/G/o/dNZhcpPjMy+wqDeMFLU5iENApjFNkRXxLNGa7G0jhoj7r3XOf+ev8m/hvvHZ+3P5x38tn fPww6y3tnqbbeJ+WnUPY2K+R/wAfqHOZSVVxdFvJtkU1RNhQ0a1M7RvkamueOGSSLHOiOy+691si 7c3Ht7eG3sFu3aWdw26dq7pw2M3Htnc23MnRZrb+4tv5qiTJYfOYPMY15aero6unljqKapp5Hjlj dXRmVgT7r3RUejPmj1z3f8ofmh8TcWlPjOzfhpu7qTF7ipRlv4j/AHr2b3D0vhOz8BvKlhNNTrSy U+Srsvga7HRy1TQfZUtZNNGMpBTRe690cn37r3RVN1/MDqXaXzF6i+ENXko6nuft3pftDvPHYumr 6AS4DZnXGfxO3qSozGMkcVOnNzVuV/hk0UbRn+D16yMrLGG917o1fv3Xuqzv5sv8wrIfyxviLX/K DE9K/wCn/KQdldcdbY/rb/SEvWByVb2JmjhKWrTdj4XPLGYZNJETY8iS9jJGBf37r3VcmT/nCfzc Nh4Ou3j2t/wnf7+xezMA8dfums6x+XvV3cO7cftiB1fL5PA7A2xtdMjl6yGHyyRY+nVPIUCtPGrM 8fuvdW4fDX5+9A/PX4p0Hy4+OGUyWe2LU0W5IsntzcVPBgd5bO3jtOhFZn+v9742mkrI6HJ0oeAy CKaeJopoaiF5YZY3b3XuqNvjN/Pk/mefLvqTaXyD6A/kJb47M6M3/wD3l/uPv/A/PHqegTcP9092 12xs3pw+6dn4+qp/t8nja+ll8sf64T4/JGyyn3XurL/5dn82/Y/zi7K7T+M3ZPQ/a/w4+avRuHpt xdo/F/uZKeszNJtiqnpqZN27K3bQw0sWZxIaux5WsehpPNHV081Mk8DNKnuvdW7e/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917oDvkl/zJHf3/UBjf8A3e0vv3Xuhx9+691//9TeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3RfPlpRUWT+KvyZx2Rpaavx9f8fe56KvoK2CKqo62jquuMlBVUlXSzhkkikRmSSN1KspII IPv3XutDXB/DPq3szfXcvhwm29u0W0d47AxdHTU2P3ewqZd6/HDYvdebqTT4fcOOoaaNcpuuupqS koqGGGCligiVCVLMKtk5di3W0Ny8pQhitAAeABrx+fQ95Z5Og3/b2vpJ2jIcpQKCMBTXJH8X8upW 9f5XXU299o7j2fVZemw1NuTD12GnyuExW7Rl8fHXwGF6vGnMblrKTzIDqj+4pZY7/qjYcezn+pVv /v8Ab/eR/n6En+tlbf8AKW/+8D/oLqft7+WV1Vt3AYPb8OQoK+HBYfGYaKur8VvT+IVsWMokoo6u u+w3TTweaQIHl8MEceonRGi2Ue/qVb/7/b/eR/n69/rZW3/KW/8AvA/6C6e/+G4urv8AjrhP/PTv /wD+y737+pVv/v8Ab/eR/n69/rZW3/KW/wDvA/6C69/w3F1d/wAdcJ/56d//AP2Xe/f1Kt/9/t/v I/z9e/1srb/lLf8A3gf9BdI3ef8AKx6l3rQYygqs3Fh0xe4MRuGObC4rdInqZsRMZkoKr+L7krE+ 3lJtN40SW36JUPPv39Srf/f7f7yP8/Xv9bK2/wCUt/8AeB/0F0+5H+X90th3xkeXze0cVJmspBhM MmRh3rQvlc1VQyVFPiMatRvFTPVSRwyvHTxapGVHIUhSRR+TrRKa7krU0FQoqT5DOT8umJPbjb4t PjXpXUQoqqirHgBVsk0wBnp1/wCG4urv+OuE/wDPTv8A/wDsu93/AKlW/wDv9v8AeR/n6f8A9bK2 /wCUt/8AeB/0F17/AIbi6u/464T/AM9O/wD/AOy737+pVv8A7/b/AHkf5+vf62Vt/wApb/7wP+gu gX33/LI6yqO2OitzR52kpVxGT7CwU2Ghwu7Gx2Xi3FsebICpyE1TueSqR6R8WngFLURK3lfyiQBA qWblCCKeKHxmPiFs6Rii19ekM3t5bQ3UFutyx8YsK6BjSpb1zWlOho/4bi6u/wCOuE/89O//AP7L var+pVv/AL/b/eR/n6Xf62Vt/wApb/7wP+guvf8ADcXV3/HXCf8Anp3/AP8A2Xe/f1Kt/wDf7f7y P8/Xv9bK2/5S3/3gf9Bde/4bi6u/464T/wA9O/8A/wCy737+pVv/AL/b/eR/n69/rZW3/KW/+8D/ AKC6D6D+VD1FTdm5HtBdxPJX5LZ9Hs19tyYvcX92Kemo8ocqMtTCPcC5L7x2PifyZJ4NH6YFf1+/ f1Kt/wDf7f7yP8/Xv9bK2/5S3/3gf9BdCHQfyz9gbi3PsDaWKy21sRV767S6s66/i2Q2t2NmqbFQ 9jdi4zY8+V/hdNvqhadqVMgalIvuow5QIWUNqCDceVYbGyku1mZigrQqBXNPXop3nkK32vbJtwS4 ZzEK6SoFcgca/Pq1r/oF827/AN5ObA/9Ju7S/wDt1ewX1GnREvjz/JDx/eHzO/mGfFOq7g6y27j/ AIP7i+MWDxW9Kfo3tvJVnYifIPoWm7mrKnIYSTuCFMccXLUGgiWOpqPOq+VjET4x7r3Q2dj/APCZ La/x26l+RXdVF8m9q7yn21s/sXuaXbeX+Pm/sbRzVWz9nVOfXbWMyOL7aWSnpp/sxEJqlKuWMuWJ kACe7xp4kiofMgftPTsKCWZIjjUwH7TTokn/AA3F1d/x1wn/AJ6d/wD/ANl3uQP6lW/+/wBv95H+ fqXP9bK2/wCUt/8AeB/0F17/AIbi6u/464T/AM9O/wD/AOy737+pVv8A7/b/AHkf5+vf62Vt/wAp b/7wP+guvf8ADcXV3/HXCf8Anp3/AP8A2Xe/f1Kt/wDf7f7yP8/Xv9bK2/5S3/3gf9BdasX80/4l 7R+GXa/TnT+zNwZfdGLh6PgzjZvOwwQZasny3au6atzXR0jGAvHq8KNTxQoYkiDRmUSzTBffNrTa blbdHL6l1VIp5kU/l0A+aNhj5fvY7SOQyB0D1IA4swpQV/h/n19ff+Xt/wBkC/B7/wAVA+NP/vmM L7JOg10b/wB+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv dEP726G7g2p2zL8tPiNW4CTteo23jts92dBb1yUm3esvlXs7bKzPtSCq3dS09XJtXfWBWeeHbm7R Q1dNPTSNh8zSy0Zoa7De6901p/My+K20EGP+TO6cp8It200kdJmNufMfGp0ZgqTJNAZjS7f7o3DK evdywsyyRQ1+1d25KllkRoklMyvGvuvdHH677T6x7ewC7r6m7G2H2htZ5IoU3L13u/b+9cA8s9FF koYlzO2qippyz088FQqiS5jkjcel1J917pe+/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xug27i6m2F3z1P2T0l2lgqfc/XHbOx9z9eb4wFTbx5Xa+7sPNg8z SrJYmOQwTOYZk9cbhZEIdQR7r3Xxeu/+qvkD/Jk/mbbh2fiMxV4rt34ed64fd3WW8J6aWno95bbx eQh3d1tu2ejiZVmx24sHNSSV9DrKNFUVFFLe0i+/de6+v18a/nl8e/kT8I+qvniN/bP656Q7C6zx u/8AcG5d+bswm3tu9cVsZbFb02tu7dGalpqKCowWZgrcNWySSKhqKd9BIKk+691qE/zRf+FHv8q3 ZfdeZ7L+I3xwxvzq+UOOxO2ttUXa/ak29ML8R9r5jryuyVTs3fVF1lmJ4491bjxM2Trqak3BS4LH VS0jRpQbj+2VYj7r3Woj8qf5h/8AMw/m69r4na3bPZHbnfOb3RnEh68+N/VOFzK7Do8kWZ6Cg2J0 hsOJqeprIoxoFfPS1WSlRAairmZS/v3Xur8f5dX/AAjr+VfekW3+xfntv+n+JvXFZJS10vU+01w+ +PkJm8TIvlenyFSrz7e2rJKjI0UlW+VqoWDx1WLhdbe/de63v/gj/K0+C/8ALe2oNvfFDoba+yc7 WY+PH7m7UzEZ3Z3HvWMFZJxujsrO+XIvTySr5xjKSSDHQuSaajgU6ffuvdWEe/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de6rF76/mg9RdffLLb/APL26OxeN+Q3zy3TtWbe kXSEG/8Ab/W20evdsxYc7jXN909pZqKuOID4wDKJhcDhM7uFqGSHIJg2x88dU3uvdKyu+Ge/fkQs dZ86+5K7s7bVS5km+K/SzZ3qb4rR07i6YfsKCmqX3b2QFFo66PdmaTb1cUWZdqUDFo/fuvdHt2pt Pa2xNuYXZ2x9s7f2btHbePp8Tt7a21cNjtu7bwOKpF0UuMwuDxEcNLS08a8RwwRKijgAe/de6UPv 3Xuve/de697917r3v3Xuve/de6ps+Uezm+O/zL2p3XRSCi6k+ZtNiOo+0I5JjHjdvfJ7YODkl6W3 o7VdakFP/fDbFLX7Rrnhoy9RX4nbVMGMk4Dcwf7zf2K/rv7Xw+6+x2+vceWiTcaFq0m3y0ExYKlW +nYJMXkfTFEkoQVkPUl+229/Rbmdrnakdz8NeAkHDifxZFAMkivDoUvfz7dT91737r3XvfuvdNGK wWDwQyC4TDYrDLl8rXZ3KjFY6kxy5POZNw+SzORFKiearqGAaeok1SSEAsxI9mN/u26bqITulzLc /TRJBF4sjyeFBHXw4Y9ZOiKOp0RrRFqdIFek8cUUVTEoXUSxoAKseJNOJPmTk9O/su6Ude9+6917 37r3XvfuvdYZP82f+Wbf8R7XbZ/yUYP+aif8eHTM39k/2H/B0Yj+Xt/2QL8Hv/FQPjT/AO+Ywvv7 OesPOqKPhR2j1n1JgfnnuHtTsPY/WmAyH83z+ZLhKLO793ZgtnYiszNR8l9xV9PiabJbhnp4ZKl4 KaomSFHLmOKRwulGI4Bf3i3IXO3uH96sbPyHtN3vF3HsVlK0Nnby3Eixie6UuUiVmChmUFiKVI6n j2+vrLb+VvGvpUhQzuAXYKK6VxUkZx0bn/Z1fhz/AN5Y/Gz/ANHl1l/9cveF3/At/eQ/6YPfv+5X ef8AWnoY/wBaOXv+U6D/AJyp1gqPm78MaOnnq6v5bfGalpaWGWoqaio736ugp6engQyzTzzS5QKi IoLMzEAAEk29+/4Fv7yH/TB79/3K7z/rT17+tHL3/KdB/wA5U6z/AOzq/Dn/ALyx+Nn/AKPLrL/6 5e/f8C395D/pg9+/7ld5/wBaevf1o5e/5ToP+cqde/2dX4c/95Y/Gz/0eXWX/wBcvfv+Bb+8h/0w e/f9yu8/609e/rRy9/ynQf8AOVOo1P8AN/4XVYn+1+XXxlqftaiSkqft++OrZvt6qG3mpp/HlTok S41I1iLi49+/4Fv7yH/TB79/3K7z/rT17+tHL3/KdB/zlTqT/s6vw5/7yx+Nn/o8usv/AK5e/f8A At/eQ/6YPfv+5Xef9aevf1o5e/5ToP8AnKnRZPnX370V23/L3/mEYfqrujqjsvL4z4PfKTJ5LF7A 7D2jvHI4/HHpfNUoyFbQ7erKiWKDyukfldQuplW9yAZH9j/Z73V9ufvCe325c/cubls1vPzDtcUc t7Zz20ckn1Ub+Gjyoqs+lS2kGukE0oD0X71u217hsF/HYXEczLbykhHViBoIqQCcV6Nvuf5U/GDY W4stsnfPyM6K2bvPbT4+m3FtLdXbWwtv7mwFTksNTbgx1NmsFlq+GqpXqKCspK6FJ4lL088Mygxy IzRPtnsN718627cy8ocp7tue33Es/hXNrYXM8EnhzSRSaJY42RtEiOjUJ0urKcg9Gku+bNZt9Pd3 UUUihaq0iqwqARUE1yCCPkemD/Z0/hv/AN5X/Gz/ANHl1n/9c/Zh/wAC995D/pg9+/7lV7/1p6b/ AKz8vf8AKfB/zlTrG/zd+GMc0FM/y2+MyVFQsr08D969YJNOlPpadoYjlNTBNS6yoNri/wBR79/w L33kP+mD37/uVXv/AFp69/Wfl7/lPg/5yp1k/wBnT+G//eV/xs/9Hl1n/wDXP37/AIF77yH/AEwe /f8Acqvf+tPXv6z8vf8AKfB/zlTrDV/OH4W0FPPWV3y4+MlFR00bTVFTV979X09NTxILvLNPNlgq KPyzEAe/f8C995D/AKYPfv8AuVXv/Wnr39Z+Xv8AlPg/5yp1m/2dP4b/APeV/wAbP/R5dZ//AFz9 +/4F77yH/TB79/3Kr3/rT17+s/L3/KfB/wA5U69/s6fw3/7yv+Nn/o8us/8A65+/f8C995D/AKYP fv8AuVXv/Wnr39Z+Xv8AlPg/5yp0m8t2X1zvDuL4+dmbS3/srdHXLdafJqvG/tvbpweZ2WaLbeT2 tj9xVg3Tjp5KHxUE9JVQVsnn0wSQypIVaNwBFsHJfN2we2XPfJG+bZdWm8C95aiNlLBJHdCWeW9a GPwGUSa5VkjMa6auHXSDqHSe4vLSfcbG9gkV4dFydYYFaKEqdXCgoanyoelGnzY+G0qLJH8sfjU6 Oqujp3n1kyOjDUrqy5SxBHII9h3/AIF77yH/AEwe/f8Acqvf+tPSj+s/L3/KfB/zlTrv/Z0/hv8A 95X/ABs/9Hl1n/8AXP37/gXvvIf9MHv3/cqvf+tPXv6z8vf8p8H/ADlTrBB84PhdVPUpT/Lj4yVD 0dQaSsSDvfq6ZqWqWNJzTVKx5UlJAkkblGsdLKbWIv7/AIF77yH/AEwe/f8Acqvf+tPXv6z8vf8A KfB/zlTrP/s6fw3/AO8r/jZ/6PLrP/65+/f8C995D/pg9+/7lV7/ANaevf1n5e/5T4P+cqdYm+bv wwSoipG+W3xmWrngnqIaZu9esBUT01K8cVTPFC2U1MkbTRLIwFlLoCQWW/v+Be+8h/0we/f9yq9/ 609e/rPy9/ynwf8AOVOsv+zp/Df/ALyv+Nn/AKPLrP8A+ufv3/AvfeQ/6YPfv+5Ve/8AWnr39Z+X v+U+D/nKnTji/mD8S85k8dhcL8n/AI9ZjM5ivo8XicTjO5uua/I5TJ5CoWkx+Ox9DS5JpZp55XSK KKNSzuwVQSQPaTcPu2feD2qxl3Lc+Sd7gt4FLySSbZeKiIoqWZjEAAB5nq0fMWwSuIo72FmY0AEq Ek/t6QGwe0esupa/5J7i7U7D2P1pgK/5RV+Eoc5v7dmB2fiKzM1HTG1a+DE0uS3BPTwyVLwU1RMk COXMcUjhdKMQOOfOQud/cNuSdm5E2m73i7j5Us5Whs7eW4kWMX+4KXKRKzBQzKCxFKkdI7G/s9v+ tmvpUhQ3TgF2CiuiPFSRnHSx/wBnV+HP/eWPxs/9Hl1l/wDXL2E/+Bb+8h/0we/f9yu8/wCtPSr+ tHL3/KdB/wA5U6i1fzg+FtBS1NdXfLn4yUVDRU81ZWVlX3x1bTUlJS00ZmqKmpqJsqqRxxopd3cg KASSAPfv+Bb+8h/0we/f9yu8/wCtPXv60cvf8p0H/OVOpX+zq/Dn/vLH42f+jy6y/wDrl79/wLf3 kP8Apg9+/wC5Xef9aevf1o5e/wCU6D/nKnXv9nV+HP8A3lj8bP8A0eXWX/1y9+/4Fv7yH/TB79/3 K7z/AK09e/rRy9/ynQf85U6wQfN34Y1Ikan+W/xmnEU0tPK0He/V8oiqIH8c8EhXKHS6MCrKeQeC Pfv+Bb+8h/0we/f9yu8/609e/rRy9/ynQf8AOVOs/wDs6vw5/wC8sfjZ/wCjy6y/+uXv3/At/eQ/ 6YPfv+5Xef8AWnr39aOXv+U6D/nKnVQv8+j5F/H3tf8AlJfMTa/V3enT3ZG5aTH9CZmq25sLsvZm 7s3T4eH5UbHpJsrPicBW1FQlMksscTTtGEDuqlrsAcvvuH+xfvTyP96Hl7mHnHlPd9rsIo9xElzc 7fdQwRl9tukQSSvEI01uyomphqdgq1YgdBLnne9mveWbi3s7qKWQmOirIpY0kUmgBqaDJpwGeho+ En/ZGPxG/wDFYug//fVYn39d3LP/ACrm3/8APNB/1aTriJzt/wArlu//AD23X/V+ToYdxYTDZ/dG Cx2dxGMzWPfbG8TJQ5egpclROWyOGgJamrEdDdHdDdf0sR9Cfa65hhnu4450V10SYYAjjH5Hots7 m5tdvmktZGjbxYcoxU/DMeIIPEA/aOubbNGLmpazZuQqdsmjTHU5wETtU7LrcXi4Kmnp8P8A3amJ gxyAVTSipwwpJ2lipfuXqqWD7SSn0Ah77BjEcdvGNgK40HC8eMek4FaqAvVxupuf0t2QTihAfCzK TTuEgoXOPhl1qasRpZi/T7gMy+ZpJXqaP+G5WhqXx2axRqYaxsbkooknaFamGwkilikiqaaQojPB LE7xxMxjVRbzrODqGl1NGWtSp+3zBGVPmCDQGoCO8tDauAjeJE41RuAQHXhwPBgaqy50sCKkUJT7 5PJ7trBBtPN0uNwGIzlbjtw5+lggyOQr6/BzNS5Hbe3TVpJRxmGtQ0mVrpUnMLQ1VBHDHWE1dAnM kt42m1fRGrEM4AJYrgqlaqKHDPmhBUDVVlWLDb7bHrv4/EmdQyRklVQMKq8lCGJK9yRgrUMsjNpo jgZ8pNh7Pxvxq+Qmeh2/j6ncuF+OvcFJi92ZdHzu8aOmp9iV9fBGm7821RkyEnjjmXVVEh0Vh6lB Bbve3WUWy3kqxguIJqO3c47GPxtVuIrx4549HXLO77lccy7bA8zCJrq3rGlEjP6qj+zQKnAkfDwx wx0a/wBiLoG9e9+691737r3Xvfuvde9+690WLan/AGWf33/4q/8AEX/36/d/sgtP+Vmvv+ee0/4/ d9C2+/5UnbP+evcP+rW39Gd9n/QS697917qqL+bjn83sbqr4u9q4PK5HbNR0984+h+yxvKiqMhj6 TZ2TwWK3BS7NzmezGOimeix8m4anD0FVUsmgCpCMQHv7ij3lRm5TRlBIW4jJ+Q0Sip9BUgfaR1P3 3cJETn+VXIBezmCg+Z8SBqD1NFJ+wE+XWwV/Nb+d/wAYcb/LI+X2Z6++XXQT5ffXx735tHY+W2b3 f17lNwZt+wdtTYB260TB1tZPkcy2Oqaupw0OPikllmjRoyoBkTF3rOjqq34N0uQx/wAJvh3Q5aGo p8tQ/Fj490eUp6wMtZBkabqTEQVsNUreryJKrLJq51A3595tcpK6cr7cr4YW0Na8a+GvXMn3AeOT nneHiIKm8uaU4U8Z+jS+z/oH9e9+690av/hO5/25o+Ef/hrdp/8Av/N1+8Cpv7VvtP8Ah66wwf2K f6Uf4Ogg+Qv/AGVh8qP/ABJPX/8A8DPsH3lJ7Qf8qgP+a0n/AD71gp94n/p4Z/55of8AC/QZ+5R6 gnr3v3Xuve/de697917qBkMXjMxSvQ5fHUGVopCGko8lRU9dSOy/pL01UroSPxdfae6tLW9hNteR rLG3FXAYHyyDjhj7CR0tsdwvtruVvNtmeCVeDxsUYeeCpB4gH7QDxHSa/wBGvXP/ADwGyP8A0E8D /wDU/sk/qfyp/wBG22/5wx/9A9Cb/XD58/6PV7/2Uzf9B9e/0a9c/wDPAbI/9BPA/wD1P79/U/lT /o223/OGP/oHr3+uHz5/0er3/spm/wCg+ucHXnX9NPT1VPsXZdPVUdRBWUdVBtbBxVFLWUc61NJV 000cAaOWKRFkjkUhlYBlIIB9vW/K3LdpOtzbWEEciGqssSBlPqCBUH5jpNec8c539s9lfbrdzQyg q6PcSsrKeIZSxBB9COlj7Pegr1737r3Xvfuvde9+691737r3RYtqf9ln99/+Kv8AxF/9+v3f7ILT /lZr7/nntP8Aj930Lb7/AJUnbP8Anr3D/q1t/RnfZ/0Euve/de6Ceo6F6MrMnT5qq6X6mqczR7qT fVLlp+udnS5Om3shZ03jT170ZlTKguxGRVxUAsT5OT7KhsGxLIZRZwai2snwkJ1/xfD8Xz49CFub OaWhEB3K50KnhhfHlA8P+CgbKf0TjjjPQlZKnkq8dkKWLT5amiqqePWbKJJoGjTUVvYXIube113G 01pLEnxMjAfaQQOirb5kt7+C4lwqSIx+xWBP8h0dHZX8yjcW2dnbS23V/Ers2eq2/tnA4Spnp+x+ nvt5qjFYqKgmlg8uWVvGzRkrqUGxFwD7xX/1puc/98x/85U/z9Z3/wDBAe23/KRN/wA4JP8AN0X3 uHv7NfI3sPG7urep9x9WUG29mR7cgp9ybl2huCpzNZWZufJzzUq7SqqpYo4EEasZ2UsXGkEKxEoe 2XJ2+csXd3Lu6KiyogXS6tlSSeHDj1B3vf7jcr88WFhbcvSvI1vJIz642SgZVApqGcg9B97l/rHX r3v3Xuve/de6PD/Le/5m/wDJf/xG3xq/96js73jd71/8lq0/5on/AI+eszvuyf8AKt7l/wA9K/8A Vpeq8v8AhS//AMyJzX/igP8AMJ/97HpH3C/WTHWz97917r3v3Xuve/de6+ML/P3/AO3yX8wn/wAW AzH/ALo6D37r3X0xut8J/LXPXmwTXfEzvuorf7l7Warni/l5/wAwCsinqv4HAZ5oauk6+eKVWe7L JE7IwOpSQQffuvdLX+B/yzv+8Re//wD03V/MI/8Atd+/de6Jh/Mfw38vWL+Xj89JdlfF3vDb28Y/ hh8opNpZ7LfA35z7PxWE3MnR+dbA5fJ7t3dsSjxOLp6aq8U02RydXBSUyKZqmaOFHdfde6qZ/wCE pGfzXSX8qD5F/JXaeLbKVO1vmT3jtLsDCxJKUze2qr43dY5Hr7PVsdMAZDtzcskOuoqZRBQYbK7h qirSaPfuvdE079612p/Js/4VC9F7o/0Ry9t9MfJTB7Crdo7RbDdbJlM5urunakvSlTX7VznZNdiN t4jLQ9l45c3JW12VoI6KkqSs9VBTy/cP7r3W8H5P5jvcGnRT/HT4WbSqo31NVTbh+W/e01K+oJem pv7lbI2vkkOk8VG86TSp/U0v+T+690Tzf2G/l3UG66zZXyb+RHcH8yPuvFxlcx0Tlstuf5RVEclR UPSxwbl+DfxMwsGwMbDNP5KdMluLYUKRxpIKivWnhqJF917quz+fb0Z3h8zf5Tnce0OtfgTj/jv1 H8Y6Og+Te06ztvf/AFvszsbF47p/DV1fuiXqz4+9B0W9cekdRtmszNMYM9unb9XCkjmSiLp4H917 rXa/4Rq/LP8A0Q/zCuzPi9mcnVQba+W3UNZ/A8bHTNNST9q9ILV7627V1VXqtTKNuz7shF0tNLJB GXDiNH917r6e/v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6j1f/AWp/6h 5v8ArWffuvdUE/8ACXH/ALcUfBn/AMuZ/wDgw+wffuvdWjfOf4adO/Pr4vdr/F7uzbmLzu2OxNt5 GlwuUrqGCqyWwt8x0EybP7H2tVSKXpcph6uRamnniILJ5KeQPTzzRSe691QN8AfkD2L8gv8AhLj8 hartmvq8z2F038Mvnx8dc9nauWjmbMUfTXXO6tr7SljmoUjV1pcIuMx3ldPJI1O0kjSO5kf3Xug6 /ll/z1Otul/5efws6iqf5d/82vsmq6x+NXUWw63fnUXwrn3t1huuu2rsylwtbm9ibuj3FTjI4yeW F2pKsQR+RLNoW9vfuvdX0fBv+YZtr57UHbc22/i980/jYnVke0Y6sfMLoY9HS7zbesWXaE9ewSZX JPklxwxLfxVysSwGppADIZWEfuvdaZP8l34nfI74l/y1vj//ADlP5f1Tu/svs+kzXc2N+cPwuyeb aXZ/yk+POxO38ztyWv6wiVQ+J3ttjF0JrsXZakVToTDDJIs2NzPuvdbn1N8qumvmp/Lk7O+R/Q24 zuDrzsP439t11LHWJTU24NsZmDr3IQ57Ze8cXSzTpR5fFVIekr6dJpI9a+SCaenkhnk917qs74Ff EbbHzy/4TTfH34ibtyhwOM7x+GdFtbH7l+z/AIiu1d3Uecn3DsLd0mNDxGqTE52ix2RelEsZmWEx CSMtrX3Xunr+XZ/My3n09urrf+Vp/NW2tP0B83Nn0GN6v6i7Vy0tbX9A/OLaWFoHxmxN9dYdk5AG H+8GVoqM0+RxORlV6jJIY42hydb/AAOj917pef8ACmv/ALccfO7/ALUXR3/wTuyffuvdXYdd/wDM v9i/+Gdtn/3SQe/de6o//wCE5n/ZDHcH/i//AM4f/f3Vnv3XujNfzbfhNvT5Z9C7c7C+PWTfZ3zb +Iu76b5AfEHf9BDhBlIt+bZmp8nuDqyrqs7E8D4jeVHRR4ytoqmSOjlq48dNXF6aleJ/de6qb/l4 9j79/nx/Mbrn+YR3X05nOovij/L2xcGzuiekt5TbbzdJur57ZLF0dZ3H2rKiRTzyQ7FmCUWCnqDT yJKuJr6cQVn8WpIvde62u/fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdR6v/gLU /wDUPN/1rPv3XuqAf+Etf/biz4S/9RHyX/8Agud+e/de6tFl+FPU9V87qT+YTXZPd+Q7qxnxhm+K OGwVbPtebr/Bdf1PZJ7Oqc9iKH+FDLw5uWtealkqhmTTtSSyRGl1ESD3XuiO/wA+r5HbI6e/l1d1 dIVONG+u8/nNtPc3w2+MnTGKhqcnvLs3tnvPCybCo6nbmDx1LW1EibfjyP8AGZ6j7dYhPFSUnnhq q6j1+690CPzI/lffIzeX8tv+Xhsj4/bi2PkPnX/K2pvi12j0vU7qmen2F2b2V8eutaHZm7NiVWVc 0sNLTZ00xmoJ6yJaV56elp6v7Slnnqab3Xuja/y5/wCbB038759ydObn21uP42fN3qGgof8AT58P u3qGq292NszImnUV2c2f/FY4BuDBCYlfvqEGalDQivgpvuaV6j3Xuq7f+FHGU3J3lkv5Yv8AK9xe VzW3tlfzFPmZgcH3nm8FkYcfV1PRvSWRwu4d7bYDyuNUk8uZocxRqUIaoxUSk+rS/uvdbH+wdhbL 6s2RtLrXrjbGF2VsHYe3cRtLZu0duUMOMwW29tYGhTG4fDYmgpwEigp4I0jjUD6Dm5uffuvdMPcv TnWPyE6s350n3PszB9h9Wdm7byG0977N3FSLWYrN4XJR6JYpF4eKaJwlRSVUDJNTzpHUQSRzRRuv uvdUC/8ACbHL75606P8Amr/L831uDKbxj/lw/Oruj45db7tyP8ODZXqL+I/xfZ66KA3SRqoZXINF ILxR1kUI0+Ixx+691TT0/l+zfjl/MQ+bn8+k77rMx0Ng/wCbF3v/AC5/lnsGgw1YaDEfE+gl2v1v sXvT+8NXNVV9RHt3cAwiVWGoaSRaqqhxyUjQU/mjh917re23FvLam0dn53sHc24cPg9jbY21k947 g3bkchTU+38NtPC4t83ltxV+UdvDHR09JFJUy1BbQsalydIv7917rR96Xi7Q3x/NM/lufzyu7M/u PbG1fnj8z/kN8Uel+qNx1YxmJ2X8a8/8fc91p8TJkxuWkieizOdylDk6iuhpjNRZUyUmUo1jnyIW T3Xut6n37r3Wtz/wqnyNNiP5Vb5as832mL+VfxhyNX9vBLVT/bUfYAqp/DTU4aSR9KnTGilmNgAS R7917pxzP/CpH+VrU46qpepq35M99dj1FPVLtDqPrP4wdvtvffGZjpJKmlwuDG6MbjqMSSlLF5ap Qi3ezBSPfuvdOn8ir4zfIHoX4H/LDsz5KdYy9Ddg/ND5K/JD5gUPx6dqimbpLaXa236NMDsmswFV BTyYqpj+ymdsdLGssNOaZaiOCoE1PD7r3VRv8iX+fb/LY+Ev8qn4rfGP5C9mdkbY7f62j7rl3ZhM L0L3Du/F0kW+fkVu7sbbUtHuPbOHqaGpWfE5egqCYJ2CFzG1nRlHuvdH3+EW4O0/5mf86k/zRtof G/tf47/Dnof4b5X4z9b78706/quvuwvkzuLdG9KrcX8exmBrZVkGEpPv69qKWNqtYkpY2qGp6jIr TUvuvdbTnv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de6A75Jf8yR39/1AY3/AN3tL7917ocffuvdf//V3h+v/wDmcff/ AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+690A3yo/7Jh+R3/iBu3/8A332R9+691pKbG746P6u7K+RW3+zO 5uqOu89Wb66NzFJhN9dibR2jl6nEVHwY6io4MnT43PVlPM9M81PUQpOqFC8UihiyMBIvKl3aW+2M k0qITIxozAGmlc0JGMdTJyDuFhabI8V1PHExlY0d1U00oK0JBpUHPyPRmtgdwdSdr/xb/Rb2l112 V/APsP47/cDe+2d4nC/xTzfwz+LHbtVU/bfc/bVHg82nyeKTRfQ1hbBc289fp5FenHSwaleFaE0r Q9SBbXtneVFpKkumldDK1K1pXSTStDSvGh6Er2o6W9e9+690gMTV717W7Qm6Q6Z29md49gRUrR1e 3NqHEnfEk+QxcFXS5CCTcaSYnau3KKGtgqsn2Nu2nmxEU+nE4LFbxzqZLCY0I7/zC+3SfSWy/qUy x4CoxTyJ4E+Xlx4R5zZzjLs8x2+xSs1Kl2GFqKjSCKMcgny8uJwtPlx8Uvkp8DKfqzv7fW5uvdzd S9l7nl697y2XtGq7t3uvUGdlw1Vn+u9xYDfe+MrU/wAZrMzWjJ4Kf+AbB2zRZGubbmJoNu0dXWNV ew5tXMt1Dear1y8bnNSTp4/Dxp6U/aRxAN2HnXcLbcS25ymSGU92osQgyaoM09KcCMEj4g+fy/dk fDT+YT8l+xesfkNsr/Sns7r3r3rftD46YLeNflMB093m029MtT9i9jbLxb5fHp2VjsTVYShwtQ1H hspgaSmlroq2tnjz0dIPcz7wt/cC3t2Bij8weLeZ9COFOPCoIqevc78xJul4LOzYNBDwZSaM2akU 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 P/iwGY/90dB7917r6v8A1fjvnmetOuzSbx+Iy0p2LtI0y1HW3cslQKf+AU/hWd4t1qpcLbUVUAm9 gBx7917pd/w359/89l8P/wD0WndH/wBlnv3XuiL/AMz+g+bafy0v5iD7r3Z8WKnayfBj5atuWn29 1723RZ+owC9BbgOZgwdZktz1FPDWNT+RaaWogkjWQqzxuoKn3XuqKP8AhJ/iMNu/+Tj3P1jmqHE5 yi7Z/miVexcjtXN0wr8ZvLaZ6j6h3T2ltitx7emeCfZ+L3C9TE4KNAkvkBj1D37r3SJ/4Vd/Hnee 6/hP8ffkxLVZeq7x/l8/IOr6M37vOiqKn+LZjqPtihpcv1L3RmMuzeZ6qqqMVtI1FQhEUOdymWpY Wb7Zj7917q13419/fBH5U/GH4294/MD5f9xfLXtvvXpbaXYec+JsO99wb4nx+ey+IEW+NmQfA/4Q 4fGRbkxmNyq1uGppd0bNzErpEvmqZJ5ZHk917o6PWfyp3ZPvyf4d/Cr4RbE+MmS2v1vh+08Pt75R Zfa/xiwv+jHcOfqdp0/YvU/xy6Px2583naGjraI0mSx+U/utNSzNTwV0tF91RPUe690TjvzfO9+z oMfB8qv5g1Pg+it34qEbh6+2RVbT+APRnZ2yt042THU+Q3n2Dncnnez9tbVyqVBhx1NB2R/eHd6N IcJt6ixdNUZ737r3XzYeud6Zn+WN/M42nvnbeWq90Q/EX5V0OYw+fixua2snZvWuzt8B6bNUmLri tZBjt3bYIqIIpixejrlDeRHOr3Xuvto7a3Hg94bdwG7ds5OlzW2904XFbj29mKJ/JRZbB5uhjyeJ ydHJxqingljlja3KsD7917p79+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691Hq/+ AtT/ANQ83/Ws+/de6oJ/4S4/9uKPgz/5cz/8GH2D7917o0n80D+bD8df5dHS27cjk96bd3x8m89i cht7oD417WyVDuLs7sPtPKUj0W0aWu2ljZWq6DCQ1rRTZfK1aRxRU6SJD56x6eln917qvX4t/Dvs P4Qf8JnvkL1D3LRz47urcXwb+cXcvbmNqZq2StxG9O3+st1b0/gWUgrooGp6/HY2ox2PydMsKrFW Q1ChpeZpPde6s0/kyf8Abpf+XD/4pj8e/wD32uP9+691ZRV/8Ban/qHm/wCtZ9+691rsf8JS/wDt yF8Xf/Dx+Rn/AMEHuT37r3Ra/wCZl0t8gP5Q1b8pfnH8HOvKnuP4W/KnYe+sJ85/hjj64YFepext 07Xq8HhPl30bW0OOrmoqRZ6uT++GIMDRlXuAKRqWfbfuvdGZ/lq/NPoj4I/yJf5aPb3yIy+4tv8A X+5NldRdULn8FtXLblo8Bmd+7nrqKHcO7ajGoYsZhsdTxVWQyVfVyKBFAYKVKrIT0lFU+690cb+c x8ePip8pP5bnyLq/kdLtCn2f1/09vPtzrLt+pMNXWdb78wu1pctsLeGycvjpI6meSsrloaVcfjql ZMsky0MWqWeEj3XuqRPmV3F3h39/wjsyvbfyOpspF3Duz4+/H/8AvLXZyfIVWd3PjMF8udr7a2Tv vO1uWlmqqit3DgaPGZ2sqaiVpJpqt5XOpyPfuvdbd3Xf/Mv9i/8AhnbZ/wDdJB7917qj/wD4Tmf9 kMdwf+L/APzh/wDf3Vnv3Xur8ffuvdUHf8JzP+yGO4P/ABf/AOcP/v7qz37r3V+Pv3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3XugB+TXQn+zL9O7i6f8A9NHfvx//ALw1mArP9KPxl7G/0U9xYP8AgOcgzRpt vb2+zr/toa3wfaV6fat5qaSWK669Q917olXxu/lZ/wCy490bN7m/4ca/mp98f3NO4v8AjFHyR+Xn +lDpfdX94dqV21f9/nsX+71D999j99/Esd/lSeGup6Wo9Xi0N7r3Vqfv3Xuo9X/wFqf+oeb/AK1n 37r3VAP/AAlr/wC3Fnwl/wCoj5L/APwXO/PfuvdWifOT5tdLfAHoHPd+d15GqeggyON2nsHYuC8F Tvjtrs7cbtT7P6y6/wARKytWZTJTK2lFBWGCOaql0wwSMPde6IN8CPgv3LvnvKo/me/zFSMp8vt4 YzI0XQ3Rgr2yOxPg107uGCeKi662vCFjhqN0z4+qkp9w5gQhtctTEpaWernm917o/fZ3zn+O3Tny t6I+GvY+5M9tXuP5I7U3bujqWpyu0NxUXW+4ptpV0NFJs2Ps+rgTCncNaZJnosJDVyVJEUa1CU8m QxEeR917qjb/AIUu7F2R1D1f8av5hXUGSpuuf5h/QPyN6g2x8cN2bTx9VUdh9yYHc26hSb06Ny2I w8iS57Cignq8rNR10FVEkMdZQokaZipE3uvdDr/woI+PPdeb6s+KX8wT4zbSn3z8gv5YPyAxnyMo thQVmQ829emK9qId47RpcfRxTJUvPT4rFTVTlElix0FfJTzJJaKb3XurQ/hZ85PjL/Mb6BxfdHxw 7Bp90bbzuLhx29NrwZZ8F2Z1PuTIUTJlNjdhYbF1CZHBZqjcTIkiyIJAgq6Comp2hqH917rWb3b/ ADDu+/8AhOp8uu5eh/nh2V338x/gj8i9r9i96fBjursPsLcnb/euzd6bQxUcmQ+Nm9Nzb1qqzJPS vUSY/DpXSySUsElRjssqwx1+Yhx3uvdWi/yGPjx218evht3Z8q/ldiodn99fPXv3tf55ds7eq6R6 DJ9f4DsmnizW3No59WmnKSU1JFVZVafRC9JHXrST00NVTzr7917pH/yJuiNt9/fyLdh7Q74wtduD G/NOH5Yb57ihyNLBgctuSk757w3YJc7TnGKq0dTPiZKGroKyk0mJxDUUxj0xhPde6q4xXefyJ7i6 22L/AMJoNwZLelH8pNl95zfH/wCRPdeGwuSxuPg/le9W0FJ2LtvuHG7goo5sfjMhuzaMmL23hMPk Zav7uli+1yzR1GYiv7r3Vrn897Z+zfj/APBr4ddv7SxOO2V1l/Lq+fv8vvuvGbewmJkfEbb60697 Gp+lKbbuLoaOnqpIKWkx244oIFgj8gWNI49TMqP7r3WwX7917qgr/hRtGk3wV6jimRJYZfn58II5 I5FDxyRv3ZRo6OjXBBBIIIsR7917q/X37r3SO7E/5l/vr/wztzf+6Sf37r3VJ/8AwmU/7ccfBH/t Rd4//BO729+691fD7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de6A75Jf8AMkd/f9QGN/8Ad7S+/de6HH37r3X/ 1t4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 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 3cPY2/e18rja7cW4NzzVG+OzM8+5d45RchuSpqp0SprJHkSmSQRRA6IkRQB7917oxPv3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3XuuDoroyOLq6sjC5F1YWIv9fp7917ovXxU+LPSXwq 6G2N8aPjptSTZHTvXLbnfaO2JszmM/Ljm3hvDIb83AWy+emqKuXzZPJ1tQPLM2kPoWyKoHuvdFO+ bn8of4S/zEd/7G7I+WW1ezuwtw9YUP2PW1Jiu9+4Ov8AbWwzJWR5Gtym2Nr9f5nGUNPkqqoiglq8 t4DWzeGmjeoMNJSxw+690B//AAwL/Lx/45/Lf/0vX5mf/Zv7917o3PeH8tj4gfI34u7H+IXc/XOU 311J1jhcBiOuK/M763vUdpbIrNr4gYXB7owPb8ledxrl44ABUV8+RkerGpa0VMbuje690U742fyL fiR0D3bsn5Eb67Q+XPzP7Z6oenqeltxfOHv/ACXftP0tkqWKSGDMdbYSooMbRUtXGJBJTT1MFQaW eOGqpBT1UEMye691dD7917qjX5J/8J5v5c3yC7Tqe9Nn4LuD4ed15TIjJbg7O+E/aNX0Lm9xz3jk dsjhKWkyGDieSaGKpmqKDE09RLOPPLM8rOze690EOE/4S8fysE2n2VjOy9vd7/InsXsbZuW2YO+f kP3buLsLtzZUFfFIMbmtj1lHHjcNSZDGSvHLQVUuFlYeIRy+WGWojm917q1H42/GDtDYXw2oPib8 p/kPk/ldlIevdw9Q5vuyPauU6h3/ALx64zOCk2zQx7oq8Xn8xUybgpsfM9LJuSmr4KqpKQ1UwNf5 6uo917oe+h+kOtPjT011l0D03t87V6s6g2bg9hbD28+QyGWlxW29vUa0OOpqnLZaWarqptC6pqqq mkllctJI7OzMfde6bqH459K475DZ/wCVlF1/hoPkDubqjB9H5nspfuv4zVdX7f3RU7yotrpCZPto 1kyFQs1XURwCepWmoYp5ZIqGkSH3Xumr5S/GDpv5mdD78+NfyA29kN19R9lR7cj3dgsXuTcG0chW rtTd1BvjBtS7i2tU0mQpWiyWMo5tdNUozBCjEozA+690PcEK08MMCFykMUcSmR2kkKxqEUySPcs1 hyxNyeT7917ovvya+K3Sny/2BhOse+tsVm7Nm7e7G2F2visbQ7i3Btian3x1nnk3Ls7KNkNt1NLO 6U1ZGkj0zyGKUDRKjqSPfuvdGJ9+691AyWOpMvjshia+NpqHJ0VVj62ISPEZaStgamqIxJEQylkY jUpBH1BB9+690BPxU+LfS/ws6C6++Mnx521W7P6c6vg3BS7L23kNw57dVXjINz7sr97ZhJs/uaoq 66o8mRyVZMpqKhyquI1IRVUe690YX37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690B3yS/5kjv7/qAxv/u9pffu vdDj7917r//X3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690A3yo/7Jh+R3/iBu3/8A332R 9+691Vz/ACOv+Zf/ADd/8W/6t/8AhYHxx9+690EH8zL/ALLKT/xWXpn/AN+p2T7kTkr/AHHn/wBM v+A9TD7Zf7i3f+nT/A3RHfY26lDq0T+Uj/zM35U/+GL8af8A3ouzPccc6f7lw/6Q/wDHj1C/uX/y U7f/AJpn/jx6u89gzqNuve/de6Ll8qvkDifjL0hu/tWtof45m6NKPb+wdqIxSfeXY25qlcPszbYd SGjp5ayRJsnVi4o6CKqrZLRU0hD1tbS3c628IJLEDHlUgVP7fMjpXY2U+4XSWtupZnIGBwqQKngA KkcSBwFetXqiTMv9/ktz5qTc279x5fL7q3ruiaKoppNy7y3NkZM1ubOLRVNRVNSwz1k0rUtClQ8V HT+KkgIggjUTRZWqWVslsn4Rx9T+dT8hUmgAFcdZKbXYRbZYx2UXBAATnJpxySaeQqSQoArjpy9r OjLpA7ooaus3T1pPTR+SHFbjzdfXv5Ik8FJJsjKYtJdMjAteephTSgLerVbSGIQXAJvLcjyL/wDH D0T3iMdxsyPIyE/84yP8JHS+9r+jjr3v3Xuk/ufNPtrbW4txphM9ueTAYHL5uPbe1aKDJbn3C+Kx 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 fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xxhf5+//AG+S/mE/+LAZj/3R 0Hv3XuvrAdX7z+eK9addpSfG74jT0q7F2itNNUfNruWlqJqcYCnEMs9NF8f5ljdlsWjWVwpuA7Aa j7r3S7/vr8+v+8afiB/6XD3P/wDc9+/de6Iv/NB3d82qn+Wl/MPpt1/Hz4sYXatR8GPltBuXM7e+ YvbW58/icBL0FuCPM5LB7ayXReIp8jWQU5klpqGoy1FHPIqxPV0yuZk917qk/wD4RM4XKv8ACj5W birqWqbB03ykqsLteump4BRU+Vreptq12/aXHVS/uGWaGn229bG3pCxUrLyz+/de63Pdw7fw27MB nNrbjx1Pl9vblw+T2/nsTVhmpcnhszRPjspjqlVIJjngkeNwCDZjz7917r5lWwekG+BX/Ckjun4h 9995dgfHT46/LPObxpd39n7V3H1ztOg7N6r7NoW7x2DSbuznYeDy2Lg2/uDdWLpsBuShpqenQM1b izU/Yiojn917rcx63yX8vLC7jxW8viv8a+3/AOYt3Bjo6lMD3zhsDuL5IvGAEWrk2v8AOj5b5mj2 DQUsjxQn+E7a37HHHEsIpMctNHAi+690cIw/zH+39Qlqvjh8Ltp1UaFRQx7l+XPek1JLpYj7qtXY +ydr5SO7KwNLvSiGn0tL5A8Puvdaqf8Awpk6B+MfYPwc3fkcF8yO1PmD82fjXvzZ/Yeax2Z7QqO1 cxtPrXIyHaHZlHnukvjxjcZ1t15SmmraTP1uYqtp4eaeLErD97KCIZPde6KB/wAIn/ledrd9/K/4 ZZ7JwxYvtrYG3e8dg0tfmTAF3r1dkTtjd2KwGElfTNVZPD5mnrauWGPWIMMvkJRE0+6919Gf37r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv dAd8kv8AmSO/v+oDG/8Au9pffuvdDj7917r/0N4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vdFu+Y+KbPfEP5U4NMrl8E+Z+OHeOKXN4Cqjos9h2yPWOUo1yuErJ45khq6cv5qaV4nVJFVijAWP uvdUJ/yM/h/j/wDRL8u8Rlfkb8vc5U7f+WuyaP8AvDP8gtz4LN5uLNfy9eht5xvuEbMjxdHUy0P8 U/hNDOaNZExtJQ0zvIacSN7r3Tj83+raHqn5aZDD0G8+zt6pkvjr01knr+0uwtxdiZekk/0ldjUv 2mOye5JZZYKa0YfwRkLrLPa7H3IfJI/xec/0l/wHqXvbFQbW7J/jT/A3Ra/Y36lPp92T2F3H1Tl9 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 9xsLeIzzzIqjiSwxXH+HH2449XXfygfkpjuxOp9y/HmrfKQZHoGTGHrJ87jK3A1e4/j1ulpv7hyY rE5aGkqEptsZCmyuzoIBSL4sZQYWqd5VyUE00Ub9bR298XhUiNxqXFAR8hQGg4VNSxq1c9QJzXYw 2e6lrVSsMo1ISNII/orQGgwKmpcguSdWLh/ZN0Geve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r4wv8AP3/7fJfzCf8AxYDMf+6Og9+6 919UHrL4Gfd9b9e1f+znfPil+62PtOo+2pPkV4aSnE2Bp5PBTQ/wc6I0vpRbmwAF/fuvdLn/AGQT /wADV/mAf+lHf/kb37r3RN/5inwEzP8Aw3586v7ufKn50b83B/snPyc/gOx9w99rm8BvPM/6E82M XtPO4Z8VCKujyM+ijqaUyoJY5GTWuq4917rS8/ljdvf8KK/5ZXVmI+KfxQ+CWPzuE+Q+Q7B+YW0M d2T1bV7s3TuvBY7bnXvXG9d27er8VurFwjD0MNfslGjkh8izZJG1MsmmP3Xuj9v/ADm/+FVEe0O0 t/P8DupF2d0nWb3oO1twHojcH2Gxq3rfGfxnfNNnH/v3qRsZS/v1IRWsv0v7917qsf8AmA9df8KE vnb8pvi18gPkV/Lun2x3/wBWtS4DpqfYHVy7fTeEfXW4KjuWgw+4MZnNy5VK+LFTrka5Ig8KiKep Vtesafde6+hdtXdX8yPvbbG2stQdefHr4M4DPbdxeUnj7MrN2/KTvLFjJY5ZpsFX9Y7RfYm1tt5G lLhVmfd244o5FKzUDaSh917p9/4b42Bv3VU/Knt3vv5jVNTGi1u2e6N+U+3OkZ19LS0NR8aujqLa WwMnSqV8cB3Lt7K1ixXSWtmeWokm917od99fF3pbePxs7N+KGM2DtHYHTHaHV2++pcps7YG1dv7W 29its9gbXqdp5cYXbuHp4KGB0p6lmiCQgBlU/ge/de6+Pp/Lx7f3b/Kq/nBdLbl7FlXbeQ+Nnylz HS3ehmw9RkGx2z5tx1vSXd60+NcxT+aLE1WValZfWkio3jksYn917r7R4IYBlIYMAVYEEEEXBBH4 9+691y9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+690B3yS/5kjv7/qAxv/u9pffuvdDj7917r//R3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+690A3yo/7Jh+R3/iBu3/8A332R9+691Vz/ACOv+Zf/ADd/8W/6t/8AhYHxx9+690EH8zL/ALLK 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 9fau3hB4NyY+sajrqWOnmgxaNQVdDV09TUoa12JWnqsZGzJWVZ5CrCqIRj1bj+xcU45+a9F7ot1K UkAMcZGPVxRhXyITBHEFia0KdDF1X3BH8bu4uv8A5DzyvBheu3y+L7KMcssYq+kd3rTw9oQzqksa yJjFo8duuKDQ7T1WFpYEC+UsCbmbb/rduLqO+LuH2eY4gcM1PCnQb522f957S0qD9W3q6/Z+IcQO GamtKHrbKpKulr6WmrqGpp62graeGro6ykmjqaWspamMTU9TTVEJZJI5EYOjoSGBBBIPuKOoC6k+ /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r4wv8/f/ALfJfzCf/FgMx/7o6D37r3X2Oupv+ZV9af8AiP8AZv8A7zlN7917oQPfuvdF/wDl l/2Sx8l//Ff+5f8A33WS9+690QDpT/sqb+VB/wCMgPmP/wC/F+Hvv3Xug/rv+yBf52v/AIkH+ZJ/ 75g+/de6P/3t/wBlM/Bv/wASB3f/APA9Z/37r3RwPfuvde9+691737r3Xyc/+FZPxLb44/zZN7dl 4fFzUWx/lvsHaXeuJnjQnGrvOGnbr/s3G085UXqXyWIXN1cZZiv8UjYEI6InuvdfQz/kifKyb5mf ysPhp3ZlK58hvH/RLiutOxampykWWydV2B05Uy9X7nzWYqY2dlqMvNiRmzFKfIiViB/Vc+/de6tZ 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690 B3yS/wCZI7+/6gMb/wC72l9+690OPv3Xuv/S3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 0A3yo/7Jh+R3/iBu3/8A332R9+691rW/y/Pm3vD4wP8ALPZO3+mdtdk0e4u/end7y5rM9uZTr6qo Kqs/l19E7bfDx4ei2juBJo0TFpUCrNZGWMzR+BREJJRBtXL0+62xuYpFUBitDXyAPl9vQv2Lk+63 6yN7BMiAOUowatQAa4Bx3dNHy2+XOB7E7S/07d2t1Z8dsNU9e7F6pxFNn+5aLJYvI1+1dz7o3XNW Nubd2I2vCksy59Y46OOGVgIGkMlnCqMtnsF5fikS9mQCQgg108Aa/FT+XUj8t7UnKUEybncxASlS p1afhBBHdSvEcK9Bjszfmxux8MNydd702nv3brVNRRLn9lbkw+6sK9ZSkLV0seVwU09OZIzYOgku txcD2IYbiC4XXA6uPVSD/g6GFvd2t2viW0iyKPNWDD86E06WHt/pX1737r3QLbr+PfSu9M5kt07h 6q6xzG580KcZvNbk6v6032u4hRxUtLS/3r292LiMxh8y0VNRwUdPJl8dUvT04aGnaKORwxNfbJt2 4nXOlG/iXtJ+0+f59BvdeWNn3hvEuoqPx1J2sftIGfzr/g6U20OsNk7GnWp2vgMLgGhxbYalxu2M BtzY20cTjnq1q6mn2z1vsGjxW2MN9w0VKtY2Gw1IalaWkWoMopKbxO2G0WO25tVoxFCSakitaft+ VfLgB07tPL21bLVrFKMRQsTViK1oeA4+dK+VaADoQ/Zp0f8AXvfuvdMVVJG2fw9KXCzCgzWQRSV/ chpZKShmVRe9w1XGeARYG5BtdHMC11DTyDn+QH+XotnUm9gYfhEhP7FH+X/Vjp99rOjLr3v3Xuve /de697917pBU+297YrfOf3RtbvbvbYu2t3bRrtq7x6u2L2luva3X25zloqejzWfq8Ni6lPs8pWUu OwlJUZbFNSV5gxlLTLVpSS19PWkV1sNhe3v10wJwAV8jxyfyPlQ1AIPQUv8AlPa9x3T953YLdoBT yYioqfyPkAagMGBrUP8AfObk6U3d8YN7bQ2tjV2fsD5HdSZzf2BxeU6z65xtP1VsHf8AQ/IDcNJj 929r5fa2xsBNU5fZuHip63c+5cNQyTyrRpXGsrKejrSnmyzX92RmBaCN+AHkwNeHDI4n9teJD7gb cn7lhktU0iGSmlVxRganGBkCpPEnjU5tR+fP80rpru34Q/LzorZvXfY1Pvnu34v979P7fly3a3wh 29iMTuLtPrPIdf4CtTce4e4aLHZlYazKQO9NtatydZLbwUtPPWS09NNHQjkLFACSPKmfT/D1DYhl ZiiqSw4ihqM0yPtx9vVduy8PWx7Z61y2SWp2xv7bGG27lKXPbRzW4tv7g2hulaSlrMw2092Uq43M Ukb1MRimW1O1RTg09XCYnlgMwQ7ZbSbbDaXKagqKM8QaA+g8/KlDTI8usirbZLKfZLfb72MOEjQd wyDQE5IB4jIIANMrTHQh5ncXY2+Ny1+9u2uytw9r73rMJtnaybq3LQbdxNdBtTaOPanwuGGM2fR4 7GIWq6nJ5armp6CEzVlfVPpSLwww22zarfakdLep1GtTxpQAD/KSKVPkBQdX2PYLPYkkjtKnxGrU 8aAAAcTnzJFASeAAAGL2bdCDr3v3Xuve/de697917r3v3XukLvnsvrnrDHUuX7L7A2R13iK2q+xo 8rvrdeB2hjKut0eRqSmr9wVFPE8mn1FFcm3Nre089zb24rPIqV/iIFfsr0iub2zs1DXcqRA8NTBa /ZUiv5dStmb82N2PhhuTrvem09+7dapqKJc/srcmH3VhXrKUhauljyuCmnpzJGbB0El1uLge9w3E FwuuB1ceqkH/AAdWt7u1u18S2kWRR5qwYfnQmnSw9v8ASvr3v3Xuve/de697917oPt4do9edfSQD fG78HtWGVYXmyOerBjcLi46vzjHS5/O1OmixqVj01TDQPkJ4RVTRSQ05llRkCSe8tLZ1SeQIW4VN B58TwFaGlSK0NK0PRddblY2UixXcqxl+Go0HAnJ4LXS1NRGqhpWh6wY/tX4YdY/KD4i75+auX2nj +n33pWJszdG8N2UW2+vsF2zVZTBV3We7935KuyuMoJsPj54nyFUa9qmjhji+9qKdoaVpoQhzk6ta 27IQQWbIyOA6jz3JdJLO0eMhlLPQg1BwOBHV1HyF+f38iqv6D7woOyflZ/Lx7J66ren+y6Tf3XXX vfvx53Hv7f2yqjZdbDunZextvbJzseZr8xlaFp6HGUWIkWtnqZY4qVlnaMiP+oi6AL/hOLsfqDdX 8sDamexeyto5vB1/yN+YUu28jlcfhN11022f9mX3MNvLLuSoevatC0fhVan72cSABxNICHPuvdH5 /mPYDBbc+L8eP29hcTgaBu0dl1DUOGx1Hi6NqmWSdZJzTUKImtgqhm03IAueB7OOX/8Aks2/+m/y HoScof8AKy2n+nP/AB1uteDO9p9dbZzq7Xze8cFSbn+xjy8+3ErUrc/jsBI7I+6cxh6Hy1NDh4Sr GqzFZHHRQAXmnjHPuVZr6zt20SyKpqBSuRXAqOIHzNB8+p6uN126zYR3MyIxIFCRUajQEgZUE0Go 0XIzkdCH7W9GfXvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdIHf3aX WPVWNpM12j2NsLrTDV9U9DQ5fsDeG3tmYusrY6dquSkpchuSppoZJViR5WjVywRSxFgT7TzXNtbC txIqA/xMB/hPSK5vrOyVWu5UhB4a2C1+ypFep2zN+7G7Hwq7k683ntPfu3JKqooV3BsrcmG3Vg3r aQhaqkTLYKaenMkRI8iCS63FwL+9w3EFwuuB1ceqkH/B1u3urW7XxLSRZF9VYMP5E56WHt/pZ173 7r3XvfuvdHc/lQfKb4x9I4v5ybU7o+RnQ/UO6ch806DcNBtrtDt3r7YGersBVfCHpXG0ucosNuvI UlRLRy1FJVU8dSkZjaSGVAxaNwIm5p/5Lcv2J/xxesfee/8AlZ7j7I/+rada3v8Awoy7s6a7w/nb /wAqLcHSvbfWXcGBxFJ8eMNlc31bv3avYGIxmXHy1rq04rIZLadXVww1Phlim8Ejq+h0fTpYElm2 f8lGD/mon/Hh0R7L/wAlm0/5rRf9XF6vil+NXXm/vjp8c99be+LfxZ7q75znz7xGCpav5BbVwdPh tx4Vuv8AMYbJ4zem+4dubjy38PpMTSiaCiTH1KSS0lLD44xpliWcwMzbvOCSQGx8sDoz5wd25jul YkgPgE8O1eH7Ojjf7Iz2p/3q7/kg/wC23H/9o32S9BnokHyf6T3r0x2d1TT7p+Mfwo+NdDuXYfa8 +Ig+Gk2Vam31V4bP7Sjy0vZdPkNlbLRJMSlXSLg3iirS4rcgHalEaCpGnJZP1cwrjQP8I6kv2zY/ vC4WuPDBp5fEM/4Ogc9yN1M3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvdJzbVOaWgroWrKiv/wB/LvKQT1U0k8qLPu+unSjDyqhEdOGFPEgGlURVUsoDFNa5jqeJZv8A jx/1D5dILE6oC3mXkJ/3tv8AJQD5UHTpXZChxkK1FfVQ00TyrTQmVrPU1cwJgoqSIXeaeWxWKCJW kkb0orNx7ckeJFrIQB8/P/P09PLDEmqYgA4z5/Knn9nRnPgx/OR6g6J3RQfCj5a5rYHx3686Y6Qy 28+vvkP3z3ftfYp3rsF9/Y3bHRXX2I2Hu6WXIS1S4ubcWJjNVmGy5j2lUVlfiaOOugcw7vNobPcH QKVVu5a8Sp88kniDxofkOHWOvMm3nbt2liCFEfvTVxKMTkgkniCM0OK0HDrYK6Q+R/x8+TG2JN6/ HbvHqPvbaUEkMFXuPqHsTaXYuHoKqcOY6LI1206urSmqLxyK1PUFJFZHVlDIwBZ0Q9DT7917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de6LZ8gPmP8TPijT46p+TPyW6J6D/AIzC1Rg6XtztTZWw snn4UmNPJJt7E7kraeqrwrKwf7OGTTpYtYKxHuvdKrpD5H/Hz5MbYk3r8du8eo+9tpQSQwVe4+oe xNpdi4egqpw5josjXbTq6tKaovHIrU9QUkVkdWUMjAe690NPv3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917otHyA+ZfxG+KUWPf5MfJzoXoSTMQvUYSh7b7X2RsPL56GKQRTy4DC7jraerrwhY eT7SCTSLlrAEj3Xull0l8iOgvkttM78+O3dnU/euy0qBRz7p6i7C2p2JgqSv0eRsbXZLadXVxU9U guJKWdklQgq6KQQPde6GX37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690Wfv8A+Z/xE+Ka 0H+zMfJ7oToSoy1OavDY7trtjY+w8znKZZvA8+Bwe462nrK5Va4c0kEmkBibBWI917pa9KfIfoP5 J7VffHx47t6l712ZFVGgqN1dP9ibS7IwFJkFTU+OrcttCrrIYalLHXTyusikEMoII9+690Mfv3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917osnyA+aXxE+KKUB+TPyd6F6Fny0IqcNje2O1tk7 GzWcpzUClM+CwO4K2CtrkVz+41JBIEAZnKqjEe690vOmPkD0R8jdq/35+PvdHVPeGzBMtK+6upOw dqdi4CCrZS32VVltpVdXDFOLHVBI6yKQQyggge690L/v3Xuve/de6+ML/P3/AO3yX8wn/wAWAzH/ ALo6D37r3X2Oupv+ZV9af+I/2b/7zlN7917oQPfuvdF/+WX/AGSx8l//ABX/ALl/991kvfuvdEA6 U/7Km/lQf+MgPmP/AO/F+Hvv3Xug/rv+yBf52v8A4kH+ZJ/75g+/de6P/wB7f9lM/Bv/AMSB3f8A /A9Z/wB+690cD37r3Xvfuvde9+691p0f8LN/iavanwH6g+V2Gxyz7j+KXcUGH3HWrGFNL1R3ylNt HLTTzJyxTc9DtOGBH9KiomZSrEh/de6KL/wiU+WUVdsz5hfB7NZCmSr29ndufJ3rrGrR6ayrx24q Wm6x7aqZq5DZ46Sei2eIo3QMDVSEMy+mP3Xut9H37r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3QHfJL/AJkjv7/qAxv/ALvaX37r3Q4+/de6/9Pe H6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3QA/KyRIfi98kpZXSKGLoPuGSSSRgkccadeZFn d3awAABJJNgPfuvdaOuX76250H1d85++6mXHZrF9eZnq/N4+njyMK0Od3DT/AAP6exe3tvfxGIuq Gtyz0+OLLqZHkIClhpMg8vXYseXp7siuh2IHqdKAD9pHUvcobgu1cnXO4MK+FI5A9WKxhQeGCxFf l1o393d6dp/Ijf8AmOyu3d45jee6MtUVTrVZapEsGLoJ62WugwuFooVSno6GnaVlp6SlijhjWyoi qAABri6mvJjPcMWY+Z/wfIDyAwOosvb663G4a6vHLux4n/APIAcABQAYGOlX8Y/lB258TO1MD2p1 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 7r3v3Xuve/de6rb/AJunzhqv5dP8vH5J/LLCY+jy+9tg7Tx+F6yxeSp5KvF1XZ3YW4qPYGxKrL0s ZXzUNDkMlDkq+DyRmWmp5YlkR3U+/de6+L53P3X2z8iezt49z949g7o7R7S3/mKjO7u3vvDJzZbN ZfIVLXAaWX0Q08KaYKSjp0jp6aFI4KeKKGNI1917oZvhP82vkP8Ay/vkBsv5G/GzfWS2fvPamSoX y+JWqqztPsTa0VdHVZjr7sLBwSJHksNko08NTA5DxkrUU0kFXFBPH7r3X2zPjD3ttv5RfHDoX5I7 Qp5KLbXfHT/XfbmGx08yT1WJouwNp0m50w1bKgANRRGpNLUCwtJGwIBFvfuvdDr7917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917qtH+cB84sp/Lp/l1fJT5Y7ZxtDmN+7D2zhsD1njsnC1RjJOx+xt2UHXuz8j lKUC01JjavJplaumZ088FLJCHVpFPv3XuvjDdz919s/Ins7ePc/ePYO6O0e0t/5iozu7t77wyc2W zWXyFS1wGll9ENPCmmCko6dI6emhSOCniihjSNfde6HH4N/Oj5F/y8vkHs/5GfGvfOS2nuzbldSr uDAfdVDbP7K2l9wsmY2D2FgEYQ5HFV0YZGjlXyU8njq6SSCsggnj917r7MXxo+ffxt+UsXSuG683 3j6jszur4sbM+XuN6zpo8tlcrtrqbd9LgXWfdGdo6QY2irqaq3HjKR8XWVMFfJ5DMlGYEleP3Xuj qe/de697917r3v3XukB2t2fsbpHq7snujtDPJtfrPqLYO8ez+xNzPj8vl027sXYO3qnde7c62KwM FVXVQpMfSVFQaeipZp5NGiGKSRlQ+691j6p7W687w682r2v1RurG726+3tjf4rtvcmK+5SmrqZKm Shq6eopK6OGppKukqYZqOvoKyGKppKmKWmqYop4pI1917oQ/fuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691WD/OP+eVd/Lc/l2/IT5U7bo8bl Oxts4XD7Q6jxWXSOoxtV2n2LnafZ20a/I0Mjxfd0mJkq3zldRrIjT0tFNErKzhh7r3Xxju3u4O0e /eyd4dw90b93R2d2hv7MVGe3hvjeOWqc1uDO5OoAUy1VZVElY4kVIaanjCxQQokMKRxRoi+690YD 4I/O75E/y6/kTsv5H/HDemS23uTbeSoBunaxr65Nl9rbLSujqs31v2RhKWRI8hiMhGhR0ceWml8d ZRyU9bT09RF7r3X22OiO3ts/IPo/prvvZS1SbN7v6p677e2klcIxWptnsnaNHvPBLWCIlRKKWtiE gUkar2JHv3XuhX9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691Vf/ADo/nrmv5bf8ubv/AOUWzaTH5Ds/ DY/A7H6ho8rTJW4pey+xc9BtXb2ZydFIQlRT4hKiozc1K5C1CUZpyR5b+/de6+M12t2z2Z3n2Hur tnuPfm6uzOzN85afObu3xvXNVu4NyZ7KVFtdRX5Ovd5GCqFjhjBCRRqkUapGiqPde6MX8D/np8jf 5dPyF2f8ivjdvbJbb3BgcljRu3ab11auyu1tm0+QSrzHXXY+Dp3WOvxVfGrRsGAmppCtXRy09ZDD PH7r3X0Y6H/hZP8Aymp6Ojnrto/L2hrZqSnlrKJOo9kVaUVTJEHqKVatN2oJRG5KCQKA1rgC9vfu vdSv+gyT+Uf/AM858v8A/wBE1sn/AOy/37r3XzwP5pXyW65+Y38wf5XfJ7qSDctN1v3R2pkN5bPp 934ylw+5osTVY2lpI1zOLoqmsigm1wvdI6mQWt6vfuvdfQU2L/wsK/lObc2Rs7b2Q278uWr8DtXb 2GrjT9PbKkp2q8ZiIaGpMErbuUsmtG0sVBIsbD6e/de6Vf8A0GSfyj/+ec+X/wD6JrZP/wBl/v3X ugr70/4V4fyp+xeke4+vdv7e+WSZ7fnVfYWzcI+R6h2ZT49MvujaVZhMa1dURbskaOETToZXWNiq 3IViLH3Xuisdc/8ACoz+WptTu34Ndg5PB/JtsD8dfgL8g/jRv9KXq3acuQm7F7O3b8f83tufb1O+ 5lWpxqw9ZbjFTUyyROjNRhYXEzmH3XukpU/8KdP5cEvxb/mPdOpg/kr/AHt+Ve6/l/musJD1jtUY ino+8+vDtbZS7prP7y66R0qTeuWGGcRJ6kMp9Pv3XujT9nf8K2P5We7+5PjXvzFbf+Vy4PqXdXZO Z3SlX1Js6Guko92dUZTZeLGLp03W6zOKyshMqvJGFj1MCxAU+690P/8A0GSfyj/+ec+X/wD6JrZP /wBl/v3Xuvf9Bkn8o/8A55z5f/8Aomtk/wD2X+/de69/0GSfyj/+ec+X/wD6JrZP/wBl/v3Xuio/ On/hUR/J6+Znw4+THxZzG3vljTp3n0zvrYOIyeS6W2ZNR4Dd2Vwcp2PuqWKPdxLHE5lKDJoAD6oF 4P09+691qVf8J3Plf/sof83P4nbvyNdWUmzu1N2S/HPfkdPXUlDR1GB7vRdm4apzb1rRo1Fjc/Lh czMgkV70asgkdRDJ7r3X2QPfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3XvfuvdAd8kv+ZI7+/wCoDG/+72l9+690OPv3Xuv/1N4fr/8A5nH3/wD9R/Wn /vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3XvfuvdF1+X2Lx+c+JvyhwmWpkrcXmPjt3Zi8lRylhHV4/Ida5OkrKaQxlWCy RuyEqQbHgg+/de60Adx/Afo3tPp35tdTbJ6m69xG8parYeM6r3VPgsY259sbmr/hX1X2HiqKh31k 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 kytFRUGSrcYlVA+QpMflJ6mmxlfVUSt5I4amSjq44JXULI0EyoSYnC+691O9+691wZ0Row7Kpkfx oGYKXfSX0ID9TYE2H4BP49+691z9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdAd8kv8A mSO/v+oDG/8Au9pffuvdDj7917r/1d4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdAN8qP+ yYfkd/4gbt//AN99kffuvdadvRf/AB+fyS/8SX0n/wDAHdOe5N5O/wCSW3/NRv8AjqdTf7df8kCT /mrJ/wAcj6Sff3wW+JvyhyMGb7v6V21u/cVNGIk3RSVm4NobomiSCOlghyW5NlVmOrayOGOGOOCK snljjUaUVQSCcXuzbbuDeJcxgt/ECQfzIpX869CHc+W9m3d/FvYQX/iBKt+ZUivCma4x0nOvvj18 IPgNhczvLZexuv8ApiKvpa2Kv3bk67L7g3fkqHH4o5fJYbF7g3XU5LNzwimx718+LoJmRvA9S0BZ GcMx2ez7IhmCrHj4iSWNONK1PDiF+09MQ7dy5yuhulVIcfGxLOQONK1bhkhRwyel90B8q+uPkTm+ 0tq7Ww+/do7u6h3DjcRunafZO2o9r52qwu5MWme2R2Dt+CnqqyKswG4MfIlfhq5Zg09M8VQYkgqK aSZzbN3tt0DiCoMZoQaZHqKE1H+rz6e2XmKw3zxRa1VojQhqZHky0JqD/LFeI6M57N+hF1737r3X vfuvde9+690E/cm5cvt7ZU+P2pVik35vjI0HX/X04plrZKPdm6Waji3H/DmST7mnwFGKzceSi0H/ ACHH1THhSfaG/leO30xfHIQi/Itiv+1FW/Loq3aeWK0KW+JZSI0+TPjVgH4RVq/0elztjbmJ2ftr b20cBTGjwW1sHiNuYWkLmQ0uJwdBHjcbT+Q21aIYkW/5tf2oihWGJYk4KAB+XSyCBLaBLeP4UAUf kKft9en/ANvdKeve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de6KH378EPiR8nstDuHu3pLbW7dzQxNEd00VduLZu56pBTU9FAMtuHZFbjauvEENLBD TJXyzLDGuiIIrMCU3uy7duDa7mMFv4gSD+dKV/OvQf3PlvZt2fxb2EF/4lJVj9pUivAca4xw6ffj /wDDH4v/ABbbIz9E9NbW2JlMrE1PkNxrJltybuqKJ44Elxh3hu+pyGUSidqaGV6GOrWnaVfMYvIS xvZbTt+391rGFb+LJb9pqR+VOr7ZsGz7QdVhCEY/iNWb/emJI+YFAfPoz/sz6Peve/de6a8jkUxy Y+9JlcjVZfcG19qYfGYPD5TPZfL7l3ruSk2htbD4/FYiKaeSWsyVdS0qEJoQya5WjiV3VNc3MNpA Z5zRR5/6uH2mgHmQOkN7e29jAbq6bSi8T9vD5D7TQDiSBno2GT/lqfLfdPSWe7XzcGF2pvPZ390+ ytofEqny8eU3J3JR7G3HHurdfSvcPae06z7LCvuzE082Ap6XatZVx0tbLBVVWarse1XipI93fmma 5/QsexMZ8z6ggjhwBHDiKsCD1D/MPPdze1ttr/SiwdX4m9VYEUpwBGRUMKupB6vv+Mu9Ol+xugOo 99fHbF4Pb/Se6tj4XNdd7d29tqi2Vj9tYKsg8n92Zdl0EUEeGrMbN5qHI4loY5KOrinppo0lidQE ak8eo9JJNTk9Ad81f5jXxN+Ae3cJkPkH2K0G996zR0HVfRmwcVV9gd/dxZupqDQ4/CdY9S7d8mUy L1FUFpBWvHDQRTOiVNXBrUnXWuquM70p/M//AJv+Ey2I+SWV3V/Kn+AG8aWtoKn49db5TC5j58d+ 7LyNO0DUHc/Y08VZhuvMVkYJEas29jqSrr2Q1OMykbRSCY+690kdq/yBdxfy+KzIdufyWPlVvz44 9sVNPQJvXoz5KZOo7q+JnyIosRUSz47C9nYelpYM7hayMTzR0248PPPVUsRkhpYYDU1FQfde6NR0 F/OPwGK7J2/8Xf5mXTWc/lxfLHNSVFBtWPs/MUWT+LnfU+O8UU2T+P3yWhKYGvadpYmGEyVRT1sE k0VGDVVRZffuvdDD0a/XX8wH5C9p/JfKtsntD49/HfNb++KPxx23WQ4XdeAym/8AF5CnpflJ3ZmM ZUpPAZ6zI0tFszbP3CGSLGYzI5GlY0W5gX917qv/AOQHwN3/APNn+ZB212/8U++KPoPrvqCh6t6Z +StRk+tsXvPYXcncmOqqnsLeeL2Ztnb9VgY6jcGEwNft/E7p3bmqmvrZfvo8LQVmNfA1ERMdv3S8 22XVbuQPNfI/lw/OmK9HG077uOyy+JZyEKaVU5UivoaivEVpUVxnqlD+YBvXcHX3WPzj6D7Z6y7S GV+P9ZsTYXYXZGyeuO4Z+lsziuxPFncNuur3pQ4gtgsNX4qmrZqyDcLxY6eM/wAPhyeUjqVmmE19 zNBf7RJbsCkzACmSpyK0PliuD5eZ4dDndOd7XduXZrRlMVy4UaclWGpdVGHDFTRsUoKmpHW3N15/ Mi/lu5XpXaeerfmz8HqDa+V2FjcnnKMfIPo3EbdpYsjiFqNx0dZhJsvHHTIsz1EdVSTRKUbXHKgc MvsEdRd1rXfy+tuZz5dbUkpPhnszN9hddLubH1c/Y256DL9edM7Jr91YDGbu7Qpq/sTJ4wx5Oppd y1+fAxW16TMVoleAzJDjplyKDbaeYLfbNnEb1eQMaL6A5Bz5cTj7CRUdSfy/zba7Ly4sUpMsyuwC AjtUmoJr5fEcVzQErqUm1HO/Bvb3w87e+MndvyN3PL8mel90Z+l6T7xxm5Nq4vAdNdI9tdh57EDo HvjC9dxTVGvb8e5qRdq5E7vyWenoKvOYvLU9VQU1BWN7IL/ftwv3Jdyq47RgAjNR58eB4gYqc1Cm 6807vushMkpjTFEU0UEUNRQA1rwJJYDGo5JtR+cPxq/2ZPojJ7e2zR4yPtbYFWnYfSORrhTUtPSb /wADjp6SLbdTkKiOVaPH7jxtRXbZydUIZGpqWvkqoYzU08BVJt16+3XaXSZK+XqPT/PShIqKivRd tG5SbTuEd9FkpxGMj0qQcHzpQkVFRWvWtdg8xT57GQ5GCCqoZPNXUGSxGSjggzO3s9h66XD7j2tu KihklFLlMVXwVONylE0hemq4JqeS0kbATNbXMd1AtxEaq4qP82PQ4Pz6yQsruG/tY7yA1SQVHA/a MVFQag08x09+1HS7r3v3Xuve/de697917ooXf3wP+I/yfy0e4+7ek9ubs3PDF4Tumir9x7O3LVot PBRwDK5/Y9bjaquEMNNBDTrXSzLFGuiMKhIJTe7Ltt+3iXMYLfxAkH86Ur+deg9uXLWy7rJ4t5CC /wDEpKsftKkV+01NMcOlB0B8NvjF8W/v5OiOn9tbEr8rHJBX55ZszuTdNRSTpTLU4/8Avbu6qyGT SjlajppZKKOrWnaWMSmLyXb3ey2qw2/NtGFPrkn9pqR86Ur09tmw7RtGbCEIx/Eas37WJIr5gUB8 +jO+zPo7697917r3v3XujafyuvintTvKm+cG7c72x8n9iVeO+ZeO27FiOlPk33R0ztWppqT4T9MZ NMlkNrddZfH0NRkHareKWvlhad4Y4IWcxwRKsTc0/wDJbl+xP+OL1j7z3/ys9x9kf/VtOtcv/hQx 0fg+iv51/wDKn27gt89z78p8xH8ec1Nke7e5Ow+6s/RzH5Z1tD9lic92PX5CqpKPTEJPs4JVi8jP Jp1uxJZtn/JRg/5qJ/x4dEey/wDJZtP+a0X/AFcXrZz2F/2TT8L/APxqX1R/1tyHtVzB/wAlm4/0 3+QdGPN//Ky3f+nH/HV62DfZP0G+tfT+cF/2Vt8F/wDxXT56/wDvy/j57F/Jn/JRk/5pn/jy9SJ7 a/8AJam/5on/AI+nRCvcl9Tb1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691TJ/OZ+NnRW4fiP3V8gcr1ltuTufZeM2UcB2LSRVeK3EhyPYOA2vU/xafFSw JkwMc7UcIycdQIY7CERlVICvM232b7fLe+GPFULRhg5ZRmmDg+degDzvtG2Ps8+5mIeOgWjioOXU GtKBsGlSCejcfy0PjJ0J078W/j32N1x1dtfbfYPaPx86j3ZvvfMdLLkN2Z7L7269wu5NzrJuDLPP VQUdVXJHUvjaWWKkDpGywAopHKD3Y5t5i3jmzcdn3C7d7W1upo4ogQsarHIyrVVADkAYZ9TCpoRU 9ZteynJHKuxclbVvu2WUcd7e2dvLNOQWkZpIlZ6MxJRWJyselTQVBIB6O/X/APM0to/+I87K/wDe m2j7Bll/yq19/wA17P8A47ddD2//AOVw2v8A55r7/j9l0/5/cOH2vjnyeaq2pqZS8cMUFLW5LJZG qWmkq0xuFw2LjmrK+tljikMFDRQS1ExUrFE7ceyizsbu/l8K1TURliSFVB/E7sQiKPNnIUeZ6PL/ AHKx2yHx7x9IOFUAs7t5JHGoLyOfJEVmPkD0ntq0OcyVTU7v3hiaTE5avgloMDt0tSZCu2dtad45 5MVlctSzVFNNk6+WKKqzJxr/AGatHS0UUlemOTKVpjuFzb28KbVtcniRRsHeQAqJZqEalBAYRxgl ItQDGryEL4nhoWbXaXV1O+87vEI5pFMccRIYwwVB0OVLI0srAPNoJQUjiUuIvFk6xVUNnLBtzLvU x4Omagxu1tx5LIS5BaimqZFocZgM3la0mcV0Uhio4J62WR63VAWqJ66WZffrqIbtq3CyA8Y1aaJR Qg8WkjUcUbLMqj9I6u0RhT1q0mOyadsv2PgLRYJ2aoI4LFKx+GRcIjMf1hp7jKWXpC/Kn/smL5Hf +IH7f/8AfeZH27yj/wArbtn/AD12v/V5OmOd/wDlSt2/54rr/qxJ0PPsi6FnXvfuvdCD0t3l3d8d tz9gZ3qfJdVtRdiYvZFFmMd2H15u7dVVR1OyJcw1LVY3Jbc3bgEWOdMsyyQy0shUxBhJZiqzXyF7 0XnInL42G3sEuAJHkLtKymr0wFCGlKepr8usdvcr7v1h7k8znmW83OS1JijiEaQqwAj1ZLM4qTq4 UFKefRiv+HGPmR/x3+M//olu0/8A7ZXsZ/8ABPbr/wBGiL/nM/8A0B0AP+A/2P8A6Pc//OCP/rZ0 F2/vmP8ALHsDdfSW7MlmPjvQ1nRvZ+V7RwFNRdLdlGnzOVy/TG7ulJcdlvP2OzfbrQ7wratfCyP5 4ILsY/IjbH3nNzNa7TF8v13/AOtecfZ/kND9z/Z8U3ub5/4unCh4fqYzTOcVFM1Ao/8ADjHzI/47 /Gf/ANEt2n/9sr3r/gnt1/6NEX/OZ/8AoDq//Af7H/0e5/8AnBH/ANbOgv7t+Y/yx7y6Z7c6Vz2Z +O+GwXcHWO/urc1l8R0v2Scti8T2BtSr2nkcjixWdjyQ/cQQ1byweWNk1qupWW4Pl+87ugYatpiI /wCa7j/rGf8AAeqN90DZtJA3uYHyrboRX5jxBX7Kj7eiv7sylZt6hoN9Y2hzOUyvV279idz4XB4C SqXLbiznS++cf2xg9sQJRywPMmTq8PDj56byBZ4pnhkDJIymFPb/AHpdl5627d3UMFnAIYgKPFrH UsQdIXXXVQlaVAqOsh/c7YH5g9uN02NHZS9sSCoJYmHTLRVBGot4ekLqAaukmhPW01vfurqTrXqr I949gdj7P2d1BiNt0u76/sbcOcocZtODblfTx1ONyYy1U4jdapZYVpEjLPO8kccKvJIinpTHJHPG ssLB1cAqwIIIIqCCMEEZBGCOuSEsUsErQTqUdCVZWBDKwNCCDkEHBByDg9FFk/mA/wAGw8HZm/Pi J8t+tPjdU0dPl3+R289s9QQ7Y29teoZpV3/2F1HhN51vZu29v/bNBWVFfmtj082Ng+5qM7S4empm ndzpvo/+PyGPzGPoctia6jyeKydHTZHGZPHVMNbQZCgrYVqaOuoaymZo5oZo2WSKWNirKQykgg+/ de6qP/n1f9unvlZ/5Qz/AOCS2d7917o/3xN/7JY+NH/iv/TX/vusb7917oQO1O1Ou+kOu93ds9s7 uw+xOutiYefO7q3VnZ2hx+Lx8LLEvpiV5p6ieZ46ajo6aOSoqqiSKnp4pZ5Y42917okdZ/MWxWz8 bt7fvdnxY+Uvx46F3XlqLE4nvvt7E9K0O2cSmSpKivxef7E642jvbMb/ANq4qogg+4mrs/tGl/hU ImqNxJhKammmVFd39jYCM388cAlcRp4jqmuRgSqJqI1OQpIUVYgEgYPS6x2zctzaUbbby3BgjaWT wo2k8OJSA0j6QdMallDO1FBYAnI6ev5juSx+Z+FG8MxiK+jyuJyu8/jPksZlMbV09djsljq75IbN qqKvoK6mZopoJonWSKWNyrqQykgg+wX7mSxT+3G7TQsHR7V2VlIKspAIIIwQRkEYI6kH2ihmt/dj ZLedCkiXsasrAqysrEFWBoQQQQQRUHB61avkF/L3+HHyjz67t7t6N25und3h8M268Zk90bI3JkbU 9LRRPnMxsWuxsuReGnoqampnyDTmGFBFEUjJU4M8te53O3KMAs9nvWEA4RSKsqDjhQ4JQVJOlCq1 JJFTXrozzd7Qe3vO9yb7ftvVrk8Zo2eGRuGXMbKHagA1OGbSAoNBTpa/Hv4cfGP4qU+Rh6C6e2x1 9U5VJIMlmoJMvuHdNdSTeBpcfU7v3ZU1+VakZ6WCU0f3ng8iCTx6/V7Q8zc+82c3kf1gvHmRTURg KkYProQKpIzQsCRUgEA9GXKHtryTyLqblmwSCRhRpCWklI8x4kjMwBoKqpVWIBIJHRmvYU6HvQof Gv8A7LY+En/iaez/AP4DXtX3kP8Ado/5XK9/54n/AOr8HWKP3t/+nf7f/wBLBP8AtGuerzvkL8u+ r/jxlNl7JyNDujs3ufszKUeK636D6pi2xlO094mqr48dPmjFu/K4TB4PC00k0cdTuHdOcxeLWokp 6Fax8jW0NHU5k3W67XZTJBe3MUMkjIiK8iIzvIWWNVDEFmkKsEUAlirBQSD1gRZ7NvF/BJc7faTT xxLI7vHE7qiRBWld2VSFWNXRpGJAQMpYgMKsHVPzIwO8+1qPoPtnqXtj4u9553b+V3XsPrzu3/Rr V03be2tuiL+9eX6h7B6h3HunbebkxAmhkyuGGVhzNHBIlZU4yGjdKgmHRb0cn37r3VP/AHL/ANvl Pib/AOK/7j/90XZfv3XurgPfuvdFo70+T+1elM7tDYOO2R2N3f3T2BDWZLZnRXS9BtLKdkZbbGHr YKHce+8pUb9zO3tu4Hb+MkqaeKrzm5M/jqJqiWCip5p6+op6WX3Xukp1T8x9p717Jpui+1evOwvi /wB/5PCy7i2t1H3hVddffdnbfoIQ+dz3Te9ess/uPbm6IMa9xlKLHZb+K46NoZ8njaGKqpml917o jP8ANZ3dT5ffXxo6lC1VQm35Ox++8pJSxQGnwuaxODTp7YUWbqGYSxrlqHdW8WoYlUrM2NqHYqad NWPf3it7js+TU2ZSpkvJo6jUNaohMgYJSpUsmnVUUOADU0yh+6py9Lf8+yb8wcR2MEmltB8NnkAj KF60DBHLBaEkZJWg1Vv+8I+ui3XvfuvdG+/k3f8AZVH8xr/w2fhV/wC6PsH3nv7Af9O1tv8AmrP/ ANXD1zK+85/09m6/5oW3/VodS/5t3/ZZXwU/8Vl/mA/+/V+Ofsg+8r/ypNn/AM90f/aPc9CT7pP/ AE8G/wD+ldJ/2k2vRNveE/XRHr3v3Xuve/de697917onvyj+UlT0Vmer+tNobC3J2D3B3pLn8f1b g8Rj6PJ0FblNt5rAYWrwxxgyFFXZLN5GbcNDR7XwVDo/iuSeKhnr8VFMa6KVPar20PuLuE6z3HgW 1n4Zl0/2rCUSaRHVSgzGdRbgDgHqE/ej3cHtXtds9va/U3d94og1YhUwmLWZaMrkESjSE4kZKjji 7Z3N/Mg6L2Xle0+3f5ZnyI616z21g8fvHee+puxfjb3hhNubOxk6VO4sjl9l9PZ+DNbehajFRNkc jkK3IjBwqaypoayKnkimyIvvu58mzbcIbKSaK5Cn9TXVWbSadjagq66EgajoqtdRDjFXbvvWc+wb objcYoJ7UsP0tGllTWK96lSz+HqAJ0rr0tQKCjGA6m7Lw3cPXO0+y9v4/NYnEbuxpyVHjdwRY+HM 0KpUy0c1NkI8TU1lMHWSJxeGpkUixDc2GHvM/L9zytv1zy/eOsklq2ksldJqoYEagDwYVqONePHr O7k/me05y5atOZ7CN4orxNapJp1rRmUg6Sw4qaUORQ4OBT5/O5+K3x7y/wAQu7/kzU9VbYp++Nmw 9bJiOzMTDVYTcFWuf7Y2vsjIHcxw0sEGaZcVK9FSyZiGpeli9NM0PuZ/YbnHmX+t1nyq1277fIs1 YXoyrohkddBYFowGUHSjBTmoJ6gL7ynInKR5Hv8AnNLGNNziaACdKozeJcRRt4gUhJCVYjU6s4xR gMdEO+LXWPX+w+n+usxtDaGFwWa3V13tHLbjzdLS+XN5mtzmAoMrlBXZqrMlU8ElTGk60nm8EbgG KJLW9nHO/MG87rvd3ZX1wzwwTyoiYCAJIyr2qACQMBmq3HOT11W+6x7Oe2XIftZy7zTyns0FruW7 bTt9xdXVGkuJZLi0glmpLKzvGkkh1NFEUiJC9natDCS/8XKj/wCoPI/9bab2FoP+SfJ/p4v8E3U8 3f8Ayu23/wDPDuH/AFf2zrLPVU9L4fuJli+4nNPTrpkklqJ0pZa94KWnhDSTSCCCeYxxIz6I3YKQ rEUtbWe7YrCKhcsxwqjhVmOFHlUkZoBkgdL975g2rl+BJtzl0tKxSKJQXmnkoW8KCFAZJpNILaI1 YhQztRFZhhpo5fPPWzCaKSYotPTmsqZVpaOElqcPTlzTR1LlmkqXp0vcpC01THTwylRdTwoqW1kx KRnVrppLuaVb1CrSiA5Aq1FZ2HRPsO0X91NccwczRKt1eIIhb6hKlraqWKwVzG8spZpLuRBpdjHD qlitYZDwhk+yH29S0/hWeGCkrKmokqvKtZOKeipairnJlMwldadWnZmmLRHyyzyOquzQjcQbuzH6 nGSMDIPEug80PxMB/ZmuAgB6L9s3GTk105d5ikIswQlleyN2MhosdrdSE9lzHiKKSQ0u18M+I100 idITub/mUHbH/iNd9/8AvLVPt3YP+S/Y/wDPRD/1cXpP7zf9Oe5s/wClNuf/AGhT9CZ7KepJ6979 17odfh18bezPm38u9gfFzrCSh2/i4tu1fbfyB7NzWGy2So+sOj8dkG25T1G26aOSkpKzcu4Myy4z BU8tVLHCIayrqqSWngJEqe2/INtzOsu5bvq+mjOhVU6S74JJPHSoNMcWJyNJB53fff8Avf777ETb fyP7ceCd8u0+puJZo/GS2tiXSNVjroM8rqWIk/s4lVvDcTKyGE+eP8vHuf4G7uwkG88jtvfnV+95 clBsHtXa0iYhMnkMakVRWbb3P15lKqpymGyMcUjzIYanJ454I0ZsqlZOuPRnnX21uOXUO4be5mti yLQ0D6nNAqgEl8j0BAZaazq0mX3XPvybJ723K8oc4Wi7ZvaxXMxeMs1qYLVFkknmkdUS3BjbFHkV ninLi2XwBNX+tVRSU236yHIY2opd1UtRW7ZnpsjQ1Mefo6WmatqqvD+CRvuY4olaSR4tQVQSxAB9 gK42He7SD6q6s5o489zRuFFDQ1JFBQ4NeBwc9Ze7N7ue1fMW7/uDYeZNsvL4lQLeG+tpJm1oZE0x pIWbXGDImkHUgLrVc9Wy/F3+TT8sflh0kO7MFujrDprbO9eu6neXRlX2LHkd713ZVVlsFNkdg1uU 2xsaupmwe3cqZqCpbK1mTbK0qeaOXbjNocy7y57OS3MIuOYJjEGFQkRUsKhSKsQynBYEAYZQQXU1 65we9H95ptmxbg+zezu2JfvBIVe5v0lSJ9DzxuEgR4ZV7o4ZEZmPiQSsrLbzIVFO208vna+mzWE3 rt2s2V2b17uvc/WPbuwcl9suU2F2tsDLy7b31tOuWnmqEtT1sDvSyCZvLSyQTceTSIy5u5cl5X3u Xa3JZMPGxpVo2rpJpTIIKtgVZSQACOs7fu5e9e3e/vtVY8/2iLDcktb3sKhgsN7CF8VE1Fj4bq8c 0Q1uVilRWdnDHpcY/wD4uFB/1GUv/W5fYeh/tR9o/wAJ6mjcf+SfP/zTf/jp6+hN/L2/7IF+D3/i oHxp/wDfMYX3nv18gXXz8+1/+yp/np/40W+fn/wW27/eLPvH/wArcv8AzQj/AOPN19An92h/4jg/ /S3vf+rVr0DvZG7q3Y+z8juehw9PmZqKrwFGyZTLNtnbONTP7jpNtw5feO85KWqpcHi4p6yGOXKZ BFpxNJBTa/uKqnjkCXKXK13zZuo2+AmONQWklC6xGKHSSupK6mooANaEtSitTIn7xvv9y793j2/f nDdo0vLyWRYrKwac273kmpTMqSiG48MQweJMzvEULKkGoSzxBh1238Yv5gsG2sl2B298Fu5Oqus8 bsybedVvObb/AGPlxicfA1PUTPu3b+a2pha7D08NHLPW1tXWxLHRRU8zVop0VnUdb97Pbltm3/Wb bc/WOp7o/DERCUNWDGVgaYqMYJNcU6xH9pP7y/knnznCPlrnjY25atp0Iiu/rXv1a41II4Hii2+B 0EgLaZAXAdVQr36l3CP5C6PH8KtxRyKyOneu7EkjdSro6bB2urKyvyCDwQfc0cgqU5OsEcUIjIIO CCHbB65f/fDlhuPvMc33Fu4kjkvFZWUhlZWt4SGUioIIIIINCMjq7D2MesauvmNdY9ddndtzbN64 6Z24m6+0t50+C27sfCTpG+PqNy5lYcbi6jNeWsx4XG000qVOTl++g8VJHNKZoghdcN4dml37nWbb I1LBrmUuFNG8NZGL6SQQGIwpI0gkFqKGI+mvdfc6x9ofurbZzvdzJDLBse3x2zSoZIhdy2MSW5lR XjZ4UkIklSNxNJEjx26yTtFG58/k7/Ip+bXw9+L25/nNvr5F4XvDd3Sz0fYHd/xV6cwG4MTtyj+P OIdl7UXqjsfcciUGW3DiMQ8mbOQ3F17HA4oRN9tJPRxR1mTcXIvKsO2ttKWaeE/xE5ckVoTJ8dRU 0NcDHDHXB/cfvZfeD3PnqH3EuOZbobhb1ESowS1jRwokiWzUC3EcgRfEXw+4gMTrAYUv/Kj46dJb 12p2VvzcG1Ns7s3PiOns3v8A2b2LhIdw7RrNxbfznUNP2V09vfJ0NFVRzOchtybb+Up8PmanIvi4 qj+GSzSSwTkw/Dfcx8k84wcqQXTtYySx6EkCP+lI+mgJ1FKd1ArLWgYqCaDpTufKfsj96X7su6/e F3rYbeHmuxsLz6q5s2uLYHcbO3ExaRV8GO61homZpopimpoI55EjWRhS636X6q6gpaik602Jgtor WJLHVVdFHVVuaq6eeSGeSirNx5mWpyM9OJIIZFgnq3jV1DKobn3GG9807/zCR+9rlpVBqFwqA+uh Qq1FTQkEipz1nn7Xfd/9nvZkO3t1scFhNIul5yZJ7llxVfqLh5ZVRtKlkR1RiqllJAIVwoe6d7b/ ANrdVdAdM5juvsjcsOarU2ZjKjcWKzr4vEUNNkZsvgaPG4PLPlKKCKZjlq2nUU+MLUaVssT5GiWU W8n+2t5zVYNuL3H0seqiVQSa+NTiRStD5EZBBGCOsdvvKffl5b+75zfByXa7Od+u2iMlyFu2tPpi dJjXvs50mEiknXG5CMjxvR1YAR+yukfkh09srHVXyO+P/Y3Q+b3Vjt1w4+g3fgNwpt6vnw2oNT4L eeQx9DSVk70jwVbUmiKqRTKTAYoTO3tz5C3XlTfrWV6z2omg/WC6V1M47SupiDUEVrT4a01AGnIn 3vfbv7wntNzBYW+naN+bbN3J2uSbxpTFBasTLHL4MKyKUkV9IRWxLpDrDKy/TL95X9fPJ1Qh/wAK If8AsjzpX/xbPaP/AL47sH3Gfu5/ypU3/NSL/j46zn/u6v8AxJ/bf+ePcP8AtGbrWd+MPwA+U/z6 3Bmdm/HDNbE68xm0JNsVfZ3b3ZMdbXYTY2C3RU5GPDttva+PV6jcWXqnxFdHHiozT06RI0lbksc0 lF93FPtjyZY8xyzX26rrhhIAUNSrce5eJB8q1U6XVlOKdDvv5/ee5r9lNv27lH2/mNrue5K8kszQ FgtvlCIJjVFlU18VVCzx+LbyxSpRlbH8qv5b3Zv8sfuzB9H9md1Zrv7Yfe3T++O0vj93ZXbRqNu1 mX7T+P8AgKjd3enRW9cFWZXOyUuSrdnQpmdmVePyUVNXV1JHh3xslbk6nM0crc4e32y7rtbSWcaW 00EZ0MO1QqgsFNMBQa+RABIp8JXnj92n75Puj7ec+w2fMt5c75tm73cf1MLnxp2mnaOJ5oi1GeZ1 C1GtWeRUYsR4sc5G8gjx91bQSRWR4+oO4UdHVlZHXf8A16GVlPIIPBB944WwK8t3ykUIuLSo/wBp d9dvt9kjm98uU5oWDI2zcxFWBBBBueXCCCMEEZBGCOhH9kfUydJbem78RsLamc3lnkyMuKwFIlTU 02JoZMnlq+eoqY8djMTiqBCvmrK6rmgoqOJnRXnljRnQMWBhsm0Xe/bpDtVkO+ZqVPBRxZj8lFSf M0oKkgdAD3S9yOXvaTkHcvcHmhiLTboi5VfjmkJCwwRgA980hWNSRpXVrcqiswsj7R/lc/O3pPob aff/AGb0xRQbdyWxabfHZO2ev92P2Hu7oOI4+bL5PG9p4ePH46eUUEHgWuyG3YMlSUriqkrZKOjp fu5ZO5h9ody26A3O0yi4VBVg1FbFKkcAMk4OAqlmcEhRgd7M/wB5HyPzruybB7i2DbLPcyaIZYg8 0ILGTRGwGqRqIiVkUK8k9wkEVqyxtOxCvt6j979ib/Jjao/aceAi4ImsPSbgj1W+h9w+UcEqQQV4 44fb6ddKUu7SRI5I5UZZgDGQwIcEAgoQe4EEEEVBBB8+hY6O6D7l+Sm+f9HXRPW+5+z9209PQ5DM UO2qajWh2xh8hWPS0mY3hufNz0WGwlPOIK1qCTM5KkFc1JUwUJqamFofYl5e5Q3zmdi22xVjU6Wk bCBtOrTX1I4eVSoYrqHUG+9X3k/ar2HhROeb/TezRiWGziGu4kiMoh8XR5RLITqOZCiStFHL4UgV o+QPS3cHxS+Q+6fjF8gtn0G1Ox8LszbHZu2sptnPSbt2D2V1puZjiDvDY+5KmixlVIuOzUNXhctS 1uMppKeoSEqZoqmOT2dc5+317yhBFdmUXEMhKlgunQ3EAgs2GFaHhUEHyrF/3Yvvlcq/eR3XceXo tufZdyskWaOCScT/AFMBOmR43WKIBoW0h4yCxVxItVDhA59gLrMnrai/4TE/9ktfNn/xopvb/wCB H6a95mcjf8qft3/NCP8AwdfL397H/wASS50/6Wlz/wAe6LJ/woW/7KW6l/8AEGYD/wB77dPuMvfD +x2z/TT/AOCLrPP+6i/5KXPP/NPaf+Pbl1r8e4A67I9e9+691737r3XvfuvdNCT7pzm+Nh9X9bdf 737V7O7BzUdBtnYWwcHi9w7jzopHWtq8ficLksvhjVTz0sVY8sqVccONo4KvMV0i0dBJFPI/IHIC 82rLe3U3h28LaCF+Nm06hxFNIqNXAkYBByMF/vh/e/m+7lJY8scv7cL3d9yiFwrzGlvFbiYxPUKQ 5mbS/hGjRowDSJIv6bPnzE/l0b42/s0d1fJz+Ur3x1NhcVLi4N0du7t7U6y7DpWp8vPSYLE0Wfyn x83Nt2owzCSmix+Kq90UmZR56mkxQbHpVx5GlyLt9ik2bYn2nl2Zo3GYmmYyhD24owNEx8IFBUkU Jr1xR3r3ftPc73atvcP3n2yC9tnIW/g22JNve5j/AFf1NULIWugZAfHldmcRRpIXRdJBDo3r7pvZ +zMJn+ndh0OzMJvbA4zcUDyQSy7nqMVn6Kny9HQ5zM5CqyFZJoXwsaZ8jPFHICYyf1NinzVvnMO4 7hLYb5dGc20jpQUWPUjFSQqhR5GhIqAfLr6E/u/e03styVyft/N/tTsKbWu92VtdCSUvNeeFcwxz rHJPLJM64ZPESOTwmdQaNQHo/Hxk/wCPp7P/APEJ1f8A7/PYHuR/Y/8A3Nvv+acf/H26wi/vVf8A lTuUP+ey9/6sQ9fRk95FdcVuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XuuLKrKysAVYEMD9CCL EH37r3Wmv/On/lFfy1eh/wDhqn/Q78O+oOu/9M/8434U9A9p/wB2cblqH++/TnY395P777Azf+Vt rocj9lS+YJpkHjGh1ub+691fmvwF+G/wf+MfzJf4l/Hnrvoc9m9C75Xfx2FjqqgO6hszr7cJ2sMr 9zNNq+x/iuR8Gm1vuJL3uLe691UT/Jp/k0/yue9/5XPwm7g7g+E3SfYXZvYXSeH3DvTem4cPkqrN 7izdVkqtajI5GoWrUNIwVV9KgAAAAAe/de6vn+K/8vv4X/CKs3pkPib8dOueiK3sWmwVHvio2Hjq ugk3LS7Zlq58BDkzUTzalpXrqtorWsZX+t/fuvdam/8AJl/mc99/DjeG7uv/AJuYuuxf8tz5BfNf 5K9PfFb5UZPLYSbZPRffeK7Yy9bmOn+zqsVIn29gs/I9RWY6sycUVKtWJ6mJmp/4xU0XuvdbrvYZ B6+3yRyDs7c1rfn/AHCT+/de6pP/AOEyn/bjj4I/9qLvH/4J3e3v3XulB/P4+aO6vip8Fsr1l0pB WZv5XfNzc+P+IXxo2ngqwQbprd39tL/d3cO5cJHS11DXRyY3H1LwUlfQyl6TKVmMkcaCT7917oH/ APhOz3/2qPjt2t/Le+Uc5i+WX8r7sN/j3vGKSfJ1se5empWnqui944bK5OGAVlD/AAyCXG49qdWt i6bFVM3jevRB7r3R9P5y0ssH8p3+Y1PDJJDND8NfkFLFNC7RywyR9b17xyRyKQVZSAQwNweR7917 qtT+Rx/Mw7n3XtToz4K/zGMgMV8u9z/HHrf5A/G3tDO5Wlnpvl98cd77Lpt3bczuPzcqU38S3dg6 GV6bPRLCamdaOqnnaprKLKVcnuvdCl/wqU/7cWfNr/qI+NH/AMFzsP37r3R0P5sHz7X+W/8AB7ev yAwuExe7u2sxktqdRfHrYmYTLzY7fHevZEzY3ZeJrqXBI9XUU1HFFW5qso6d4paqmoZqaGeCWWOV fde6Iz8S/wCQd0dlf4d8mf5qcI/mGfPLsGkpdx9n7r71q5t39P8AXeVydO89R1f1X1AZf7srg8OJ xQ05qMdLCxgWeigoIWSmj917ownyL/kKfy0e7dvwy9cfHTYnxA7h2148n1h318QNuYv4+dgdebso K6HK4XcUUPWCYqgyvgqqeFngydPK3j1rTzU0rLOnuvdGC2X8New+4/5elT8MP5jnYu1/kpu3eWws xsDsvsnaW3XwEmYpoMs1XsHdtI+cSUS7kwngxeSgzb0EJOSpYqpqdpUaWb3Xuq+v5cv8wCL4tdHf KX4cfzF+yMVtvvX+UvtIvvfsPM11GajvH4hYnAwVPTPf+28dFoqa2esopKPAT0aRS1kta2NWoLZP K/br7r3St/k3dQdnd6bm7m/nDfKbBT4XvL5xUeNxfx72BWZytztF0D8HMFV/f9RbP2+tVTUkVNUb oRabcOXmo4RDXqlBkdMNXWV6N7r3V93v3Xuq2+7v5P8A/LL+SPaW7e7O9Phl0v2d2tvupx9Zu/fW 58NkKrO7gqsViKfb+PmyE8NVGrNDRUlNTJZBZI1H49+691Qr1Z/LO/l+d7/zyMFgvih8Xer+qegv 5SuBpt3987r69Rkxvb3zJ7Knoc11P1dk2pctI0kGw6fFS5eqVqchMgtdjK+ExzRFvde63Dvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3RP/mz8RPjf8w+mMvsn5NdT7f7i2htOjz+89vba3VUZo4TG7tpNtVdBQ7ljx2NqqeJ66mhmnjpK mVWkgWWYQsnlk1e691W9/wAJlP8Atxx8Ef8AtRd4/wDwTu9vfuvdWG/KT+XR8Ifmxntq7o+V3xr6 171z+yMRW4HaeU33jqyvqsDh8jWDIV2Px5p54gscswEj3BJIHPHv3Xutaz+aP/KR/lobs7q+If8A LO+Jnw56j6z+Qfyl31juzu3O2NgYuupd1fH34e9UZj+M9j74grJKmpjochuWSiqcDtyavopaKsmp 67Hu9PVT0ko917q9L58/y8t2fKj43/H/AOFPSfZmN+OXxX2pvvqvF9+bW21T5aLdG+fi91dQR46D 4/bDyVPrjx0NfHDSrPW1JcotJAhWWOSdH917qtH+cX/LK/lRfF7+W92529sTo3pX4d93fHzYlZu7 4i92dJ42g6l7yPyQ2Th3zPTe3cZvfa5gze6chlclRw0lTFlZshP4XqMjqiqKYV0HuvdCB/NG7J+X O7P+E3Ob7QqqfeGA+Ru+Pid8WtxfImDa+J3Lhd547C71rdpTfJmM4PbVLSV+ODYirza52kWkhSjo mrUqEigilK+691O2/wDySv5OvzI+GfQe/PhFsza/STpt3Y3ZXxn+anxwY7c7625uLAZCLMYrdG5N 60UtPkMtlqeup5aPOUGel+9oqlKimjbG11LG1N7r3Vk38x75p4j+WX8Au3/lFu2qreys91FsbCYT acW6G2/Q5fs/tTcFVS7M2adw0+24sJQ3rcpUx5HNRYelpFWmSraipogkUI917qpb4X/yLNp/JOkw Hzo/nOruD5f/ADM7mweM3lVdRdlZzPxdH/Gfb+all3FtvqDbnWmPmpaSqqcPFXzw5Knro5MZT1Ut RT0NEqxfe1XuvdDz8tP+E438vTunbq7l+MXX0HwF+T2zp4NxdOfIf4sSZLrau2XvXDVC5Xbtbmdl bbqaTF19HHXQ080xghpsggQGjr6V/Ufde6Wv8kX539+fJfZHyQ+KfzRx1JR/OD+Xp23H0P3tm8XT VUGD7SwVRBUp113Fipainpkc5xMbkWlMEQSaKKmyIWJMlFDH7r3VaPyS/mhZT4u/8Kd9rbAzWSnp PjNvD41/Gz4X9/ZeYVY2rsjtftHcO7+6fj7uTcVes0VHR1f3ecFHFU1+pIcbWZN41TVJJ7917rb4 9+691qZfzXP5nO/tr/zkP5X/AMSeoaLMzdS9JfLvoOH5Z75goaiLZ+J7U+XGCy/WvT/WW4tw1mOk pqeth2bkdxbhpKaOtP333OkLHPjzLF7r3W2b7917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e6A75Jf8yR39/wBQGN/93tL7917ocffuvdf/1t4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vdAN8qP+yYfkd/4gbt//AN99kffuvdadvRf/AB+fyS/8SX0n/wDAHdOe5N5O/wCSW3/NRv8AjqdT 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 Uo+beTZi0ZoJYnAEsLkVAYAkMpzpdSRqWSJ9FxDPDEO/8vrtXrb45fPz40/I7tbJ7hxGwdhZDsTA btyOC27ld4PiqTsDqjPbEwGal23tilq8vURQ5TKUsVV/DqaoaOGZqmSJYKeaVZI9qebbTZp5Nl3B khhmLSeK7EdyqAEGKCoBIJIqRpFWZesIf7wz7uPMPubtVl7m8mw3W57ltiRWP0FtEjnwJZ5JHuj3 eKwjZ1RkjRtKv47lYopSNkT+bz87vjZvH4Odr9Ibd3Nvqq7D72x2G2psbF13Svb+2qdlx278Tnd0 ZzIZffOGw+MggxeOjlqnhqcjDLUSCOkphJVTxRmc+ZuZbHlnbnvLp08TSxjjZtJkK6aquCSRqGKf aQKsOSvsN7G81++vOtty3sVvcfRCaGO+vIYRMljHMJSkswLxqqN4Mg1FvIhVkk0RPp27R23R7O2p tjaGOmqaig2rt7C7boqitaJ6yejweNixlLNVvAkaGVkiVpCkaqWJsoHHvDXcrxtx3CfcGXSZ5HkI GQC7FqV86Vp19OvJPLMXJfJm0cnQSmdNpsrWyWVlCtItrBHAJCoJClwmoqCQCaAno2Pxk/4+ns// AMQnV/8Av89ge5l9j/8Ac2+/5px/8fbrmL/eq/8AKncof89l7/1Yh6+jJ7yK64rde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691r4/8KAf+6LX/je7+Xn/APLb7917q5X5Uf8AZMPyO/8AEDdv /wDvvsj7917rVO/lH/yQOuvkD/LY+HXdFd/ME/mudU1vZHTuJ3PWdedI/Myq6/6p2tVVmRqlqMfs jZi4CqGPoy6mXwCoezu7X9Vh7r3WxF8Ef5eW2fgUvZ6bb+UnzW+ScfaTbNarHzB77PeLbNfZgygh PX0smKxr40ZAZRv4opaVZ/tqUgRmJjJ7r3VVH8lv469PfLP+VX8pPjv33s3H796o7R+cHzn29uzb mRWwlhPeVVWY/J42qX10tfQVUUFdj6yIiSnqYopoyHQH37r3WH40fK7sP+Wpvrcn8p3+Y5v9Zdr5 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 Y+O3/Cfj5EfLzt/H11R8++1/kB0D/M573zdHg6qXP7X7Mi+Ru19zba2FHQinoa6lxmxdpzvQHG1T mLFzDJNHIkAuPde63KsTk6LNYvHZnGzCox2Xx9FlKCoUOonoq+nWrpZgjgMAyOrWYA88ge/de6cf fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+690B3yS/wCZI7+/6gMb/wC72l9+690OPv3Xuv/X3h+v /wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+690W75jZ3E7W+Inyp3Nn6yPG4Lbnxv7xzubyMqSyxU GJxHWOUyGRrZI4Fd2WKGN3IRGYgWAJ49+691pe/DXtnrvvKDv3szqnc9LvHYub7Z63xuK3DRUuRo qerrtofDbqnZm46dKfKw086mlyePrKRy8QDNEWQshVmk3k7/AJJbf81G/wCOp1N/t1/yQJP+asn/ AByPo55KhSSVtpuSeBYfUk+xYSAKnh0PiQo1NgDoJtr7A6T+TvY/UdHhp/jpnaXu/Pp0NVd8brwu K7L21jdu1FZXZCl2HPXbchlTLR5PcNKuFx2ByOdxuPlzdVBAan+IyU1JVhjfbuzSzN7FFHcZClsM BnANAaitcEhajzNAQRzTuG3xbad0t4IbzKqWOlwO7AOkNqFakBiE1AVqaA7T3x8+FPT/AEDmz2Hq z3bXfFbt6j2rmfkB2zUY3P8AY392qOMRxbM2LS4ylosHsnbCFVaPaWx8TiMOGUTPRSVJed4t6gnq tT+Z/wDH+t6z3tN8pOtsBHSL2rWbCw+7N+YfEYyq3N8dflZ1xXU0vxU+XWHlro3ebHVZpk6z7CwE TIu46Cr29jqqWlx8FfUhft8b3s6ba8pjjdifMqGoaHTUCp4V8gfTo32mGTc7qLaJbhooZGJzVkD6 TRtFQKn4dWKA1JoOq/f5m38znvj5WfH2q+CHRnwZrsrvv5C9L46m737w7uzn8F+NfQ+Sy1THQZCv 6w3BtCsfL7k3DgMvTnNYGRRQ1VGYMdkjj6wtLSxL05c3Y3X04jI/p8F+3V8vQZ9K4qaJybzB9d9I sJFP9EOEArx1cKj0FSadtcEhD1Ds/cewOruv9kbw3vleyd07V2lg8FuDfubihhye68vjaFIK7N1c cI4M0isV8jPJpsZZZZdcryjZwyW1rHBK+sqKFj5/6uA+XU67bbTWdhFazyGV0UAsfM/5hwHyHSj3 Tl6jF46OHGSUq7gzdXFg9tRVS0k8cmZrInlWrfHVNZQNWQUFPHUZSupaaqWd6OlqDDeRVBvM5VaJ 8TYH2nz+YAqT8genriRo46R/Gx0r9p86VFQoqxANdKmnTti8dTYjHUWLpXqpKfH0lPRwzV1XVZGu mSniEQnrsjXvJPUTvbXNUTyNJI5Z3ZmYkuIoRRGvAf6v29XjjWKMRjgopnJ+0nzJ8z5nPTj7c6Ud e9+691737r3S16u6r7X7s3Fu/bfU/W2e3tVbFwuz85uSsoc713g8fRU++a/NUGCpo33lncZPNMWw Nc8oigZEUxfuFnKqRbrv1rtEqxTo7FhUaaU408yOgpvvNdhy/cpb3kcjl11AoFIpUihqwNcdDf8A 7JD8vf8AvH/cn/ofdE//AGXey3+ue2/77k/Yv/QXRF/rk7R/vmb9if8AQXXv9kh+Xv8A3j/uT/0P uif/ALLvfv657b/vuT9i/wDQXXv9cnaP98zfsT/oLoCOwOuuw+pt2Psjs3ZOW2RuP+7uF3TT0eRy uzM1HW4TO5LJYiiqqar2ZlcpECJ8VVpJHM8bgBGCsGuDfat6tt21/Tqy6KV1AedacCfQ9CLYeZbH mHxfpEdDFpqHAHxVpShPoekl7OOhN1737r3Xvfuvde9+691737r3Xvfuvde9+690LvX/AMafk72t tal3x130flNybPyWS3JjMTnP7/dUYdcm219y1m1MlURY3OZymq4k+7oZ1jE8CMVAbTYj2ELnm6zt rh7domYoxUkUpUGnn1Hd57g7bZ3cto0EjGJmUkFaEqaHiQeI/wCL6Wv+ySfNT/vHXKf+jP6R/wDs j9tf11s/98v+1ek/+uXtn/KPL+1f+guvf7JJ81P+8dcp/wCjP6R/+yP37+utn/vl/wBq9e/1y9s/ 5R5f2r/0F0WCA5WOpz2Lz2DrdtZ/a+797bH3BgchV4ivqcbuDYe767Zecg+9wNRV0k0Zq6CZoZYK h1aMqxsSVAnsbtb+0S7RSocVAPHiR5fZ0Odqv03Swjv41KLKCQDSoFSM0x5V6m+1vRn1737r3Qm9 B9/y/FDujA911NW9P1vW01Dsf5A0n3eLx9A3VM+Raopux8pUV0YLvsOqqKjPITUqVxU2egp4pqut hUBXmfazfWn1MQ/Ui+wVXzyfIVJ4gcSeA6AXPOxHc7D6y3AM0H2CqVzUkYC1LcVFKknA62IvlN0F jPlF0XuXreDckmzt0zSYHfXT3auIp4shluqO5dh5aDefUXa+3kDoJ5MNm6SirJaXyrFX0onoKgvS Vc8bxf1BfVfuC/nAdcDp/Ew5jZtXur5g7fr89113b8dtg1c64DqjuDrzd8nXPY43Z2ZnIjQ4vbX8 UpqnKbeqZfuctl8GY8hisTkdM0aGG37Vd7lLot1wKVJ4DPrwrxNK5oaZoOjnaNiv96m8KzQ0FKsa 6QCaceFaVNKitCBmgNUE3Zfyw/mPfzEutvjN3f8AKfuzoj475frRt71PWHw23c3QFPujNPj98V2Q wmW7OpYazeOWpcbFt7AR5RWzENLUtWmVKHHR1Apfb+87V+6JY4S2ssmomlBWpBA+Qp5+vSrmXYP6 v3MNsX8RnjDMaUGrUQQvnQU4nOeA6WXz7/l5UH8qz4rbi+T/AMHPmh/MA6m7U2lvbZlNjKDdHygy nb3Um4q/dWVj2zAOx+o+5qbJ7by1JE8sMkhqqeN1RDaZQLeylQWYL5noPKpdgi8SaD8+nT4w/OHt 74+fKX5MfJL52ZSDufY+++lettl7D7E6R6cyU+7+tcL0zLksh/cnJddY7L1lVR0u4q3N1WVyFbga bIQVuV81fkX23hqPHUFII9w5XvrJTLF+qgFagUI4cVzTzNakUGSOHQz3fkbddtjM8BFxEoqSoIYc K1SppTJJqQAKkg0HVkf8vnv/AKx/mW9vdkfPnaeXhyewOoRV/GL42df5cY4bt62pcxg8J2B3n2lv jDUktUlBnd61c2Fx2JMNTPCds4fH19BUmLcNcjBvoFEUwei9/ID+XL8af5s/zv7K7k7Ho9/Y/ZPx H6+xvxj2b211r2BubYm/ZvlJgt0z9i5nd/Ue9MRUF8OnVwyf8LeXGotNlNxZDJUmap6yTa1Ekfuv dRm7V/mrfypxHSd+bZ3h/No+DWFjaJO/eotuY6g+f/SO26SP9io7d6lp5Isf2TQ0cKxxz5vCyQZN lWpyOSYkLC/uvdHY2n/Oj/lUby6VPf8AjPnp8bqDruGhlra6PdHYuH2hv/FzU4UzYbKdR7nak3XB kwXRUxj4b7qQsniikDoW917olA+Yn8xz+aQ4w38uHryu+Dvw5zIgWr/mLfKfYMs/bHY+3qun8kuS +IvxYz3gllgnR4JaDde73ioZ4JJTTww1kAX37r3SHxX8qz44fyufk/8AGv8AmHUW5O7O5s1j8luf qH5hfIPvPtjce++0spmu+YI9j7D+TW+MxUNFBLisNk6w7b3FhlSHF0+MytNuGeJqra8U8nuvdH1/ mUb1218QZ+of5jv8VOGyHSG6NudJ9xbdo6F63I94fG7vjfWM23uPYOLxlGhnrtybazbYzeuzIlJk eaiyWHg8a7hqpBsAk0Ga9bALEKoqTwHRQfnJ879ofK/qrdHQ3RO1Y8v1xvE4STIfIDsDCZbG08E+ B3Cudw25+hti1jUWTqMxisljqPJYPdGdSlxsFQtDkqKi3HQMUYWbNy5fySrdO3gquQaAk8cr5ehD cMhlNR1IPLnJe7TTpfyt9MqmoagZjxFVHD0KuMUIZGqOiJH1EmwFm+gvpA/1Iv7k3qbI/gHXP37q /Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdDx8Rvknv/4h0fe2K2vgdnbzx3dfd0HdDtn/ AONY2t27Ux9G7I6XlwCyY6aSOqjK7MTILUFIiDVNCUIhEsgN3blibcb97xZQobTggngoHr8uo23/ AJHud63WTcUuFjDhe0qSRpULxqPTrXP/AOFA/f8ALvj+YN/LF+X/AG7JgNk7Z2Punae1tx0G3sdn 8vDh9pdQd24ztDPbumkVqirqpGp89MgoaWiaQClBjMrzCNA7d7OdhvLa4nkDqXBNAcBGUn1rg9A2 /wCXjypuFjdXUwkRpQxopGkRshJ4knB4D06XuY/md/yh9xZZs9uDsvrzO51snBmmzWY+N3buTyrZ ilwo23S5ZsjW7LeY1MeOVaCOcvrWmAgDCIafYqk3zlmRvElKsxzUxMTWlOJT0x9nQ9k5p5JmYyzF GYmpJgYkmlK1Mda0x9mOs3/DoX8or/n6GwP/AEnDt/8A+wz3r9+cs+q/84j/ANAdV/rPyT6Rf9k7 f9a+rAug93dE9rbBwvdPx/h2vkNj7/pKyLF7uwGzqjZ8+epNsbgrsBU09XRZagx+QVaTIQV8KxVd Olm1ug0uGY7sWsZ4heWCrpeoqF0k0NKcAeI6FG1PtV3bi/2tECSVGpUCEgEgg4BwQcHoc/Zh0cde 9+691737r3XvfuvdVK/M/dWzsD8lOmodx9ndf7InjymCyElHu35QdE9HVNPjX6s7NoEzs2I7T2tn aiCjapeOiXPSzNQPPImNWlWuqIaqOLebv+Suf9Iv+XqCPcH/AJWAf80k/wCfugZg7P6mHdmWqj8j OjBRN1Xt6nXJH+ZF8KUoJKlN25OR6GPdD9aGhkmRGWRqBKUTxqyyvK0cqIoX6AvXuvezup4d296S z/Izoyjiq+0sRUUVRU/zIvhVh4cpTL0ls6keux9fketJocrCs0UtM1fQRwQJLDLRNEaqjqZ5vde6 Cybsfq8/DvdOM/0/dMHLSdIb8pI9uj+YJ8QGzc9ZNtivjgxkPXA68GanqJWKpHi4sklVOzCKKeN5 EZfde6FPszs/qaev6rNN8jOjKxaftPEVFS9J/Mi+FWcWgpl23lo3rqyXF9aQLQQqzKjV9WJYEZ1j aIvLGye6917L9ndTN3b17Vp8jOjJKOHqzuKnmyafzIvhVUY+kqanduxZKShqdzw9aLQ0c1QkM0kF BU0sk9YsEstNLDHQ1ST+690ydbdmdUwdpfImoqPkR0hRU1bvjZE1BXVX8xf4Y4WkzEMXUOBppqrF 57J9bz0mZjilR6eSqxsFPFBJG9JKj1EEs0nuvdBZiuxOsl+IPbONfvnptMrU4P5PpS7ef59fEenz de+Q3juibGxUfXU/XzZnINXJJHJSRUeRibJrLHNQtSx1UCRe690t+0eyerKjr3qGGm+QfSldPTdp /H2oq6Sj/mHfDnO1OPpqPfWLmrq6tw2K65p6nHQ0iK0tTX1s00GPRWnq4qiKKSN/de6J5/NK3tsL cHVsdPtruHq/fNT/AHH3REaHaHzI+Nne9Z5pO3euamKl/gXVGy8BViR4oKioSlNR5ZYqeerR1p8d WQ1PuvdbMHwc/wCyKPh3/wCKrfHj/wB9Fh/fM33E/wCV93n/AJ7bj/q8/XXf2s/6dpsH/SvtP+rC 9Gi9hHqQOve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X ug37b6p2T3h1xu3qrsXFDM7P3ni2xmWpQyxVMLJMlZj8pjakhjBWUVVFDWUVQATFPFHIASvs02Hf ty5a3aHetpfw54TUehHmrCoqrDBFQaZBBAID3MvLe0827JPy/vcfiW9wtGHBlPFXQkGjoaMpoRUU IKkgoXI5z+Zxuf4yL8NM/wDPeXC9U4nK0G2o+89rdeVn+zidg9ELiaaGs643f25W5hKTF5OJlqMd HunGY2bKVdMYp6ypef7mKpybl+8zGtmgt9tJnMbatTgIste0qRUuhGWqqEEUAIaq4hQ/dDc3zm43 ZVthKujTGS7Q0qwYEgJIGFFo0ilW1EqVo9yP8ob4d7e676u6/wC3KnK7mr9qbB21vLp/4j9d5fPV +S251B1N/eYY/sPe9BA1bVwVud3/AJjErkpMszBIcLDjYKKlx89Znmyc5+2439uWV3HmaVpLq9c3 BDFqRK6oFiRGUeEkYWgVS6sazayZTTHH3YflqPm59q5RhSGy2+NbZSoSszRs5eeSRGPjSSFql2Eb INMHhqIQSu/59X/bp75Wf+UM/wDgktnex91GnR/vib/2Sx8aP/Ff+mv/AH3WN9+691RX/N3+Fmdg zuyd3dWdsdrdM7I7Q78XufHZLqrc+4sRnOi/nLtfrjNU+3O8NlR0lStJT4neW2G3Bj97YuojSlqc jTUUtN9vX7hzVTWR97k817jyXy4N/wBtijnMc0Ykjk1VaJgwbwypFJAdLaiHUIrkqeIk/wBpOStp 9wOazyzu00tuJYJWili0EJMpQoZQ6nVGw1JpUozSNGA4rQkG763J/Mj+YvVmxPix8rPkp0/l/jUM HQT/ACBz3RvWu7ene8fknX4nIgU/WHYMyZrJYak21XQxxVmdrtuJi3r38mPOJgpH8vuE93+8razb TMmy2EkV4xKxmRlaNV0j9RtNDrDEgRgEEAEyCtBkJsX3R72De7eTmDcoprBVDSrEjrKzhj+kuqq6 CoBMpIYElREQNRHPE4rF4LF43B4TH0GHwmGx9FicRiMXSU9BjMVi8dTLR47G42gpFSKCnghRIoYY kVERQqgKAPeJ1zcT3dw93duZJJWLOzGpZmNSSfMkmp6zZtbW2sbWOys0EcUKqiIooqooAVQPIAAA D06cvdelfXvfuvde9+691737r3Rc+0up9+J2TsD5RfGre1H0/wDL/pPHZrH9adiVdJPVbY3btnMR tLl+nO5sTRAtl9o5OYkywSxzPj5navoI1qxd5V9r/dK99vrxoLhWn2+dg0kSkalalDJHUhdRUAEE qGotWFMwh7x+zVh7oWKXVu622526lYpmB0MtSRFLpBbQGJKsAxTU1FOrDl3Tmf5gnyz7h6M7H787 52XV1vVfaPQ27Pjf8V+gNv7v60+Oz/K6LfmGTrbdveWS3Dmsjn94YXC7rejndquqp4zRRPVwY7Hy GppKnIHY/fSfnDmax5e5b2/w/GmbxpJyXpbISxZFiK6ZGjFasWSNyAfEXu6xg5j+7jbcico7lzRz Zuni/T26+BHbgR6rtwFCu0wbVEkrAUQLJLGCw8JiE62wPjR8eds/Gfqyh68web3BvPO5DMZne/Zv Z28ax8jvjtztfd1QMlvrszeNazMv3mTquYqSn0UtBSJTY6gip6CjpoIsiusVuiA9y/8Ab5T4m/8A iv8AuP8A90XZfv3XurN+4Optjd79Xb96b7NxEmc2D2TtfLbR3RjqfIV+Hr5MXl6Y08lTic3iJIay grqditTQZCiniqKWojiqKeSOaNHX3XutRnefRfyn+O/zl3r3X1f8ruyevPktsvcm1uue8917zw1B 2b1v8z+mdubcpq/qzO9rday5Kipny525XY+l/jGPkomxlfDlaTFQUsJWUYyc0+5nMXtbzVebZucb bjZ3eu4tS7sGi8RmJhEhWjRI1QqqD4SMqBmChRl7yb7Rcq+8vJdhu+0SrtV/ZeHa3gjjRkm8JFUT mNXqs0iULMxHjOrSFELlixDaHffevfjfLj5u9j7e7M7uw1Fm9tdOdf8AXVFmcN0F8a9k5aSSmyOM 6qwOddqyqy+YpyDm9yZUGunRlodZpaaJmiz3N96LznW0GzbRG1rZEAyaqCSZhQ0IVmCIGzpDsWoK kCoMz+z/AN3+x9vr08wb7Kl5uILCLRqMUCmoqpZUZ5CpoWKIFqaKTRgYT3BvWSfXvfuvde9+690b 7+Td/wBlUfzGv/DZ+FX/ALo+wfee/sB/07W2/wCas/8A1cPXMr7zn/T2br/mhbf9Wh1L/m3f9llf BT/xWX+YD/79X45+yD7yv/Kk2f8Az3R/9o9z0JPuk/8ATwb/AP6V0n/aTa9E294T9dEerNv5U22t vVWd+SfYFSIX3xSZ7YHWFJDKlU9RjuvsXtRN9UWUx7VRMcSZbMZvKUtY9IF+4OIplqNZo4PHnH93 narK35IG6xCs1xLKHJCkrpYLQGmoBlSMsurSdKsFBqTzh+9LvW43XuIdnmJFvbQwlACwDalLVZdW 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 /ab7nXncw/vjdk8GJIXdxFY60dfEfV4bNO0aTIqxJJEh0zMzsYoK8fcXddCOve/de62ov+ExP/ZL XzZ/8aKb2/8AgR+mveZnI3/Kn7d/zQj/AMHXy9/ex/8AEkudP+lpc/8AHuiyf8KFv+ylupf/ABBm A/8Ae+3T7jL3w/sds/00/wDgi6zz/uov+Slzz/zT2n/j25da/HuAOuyPW4//ACB+t9n7W+JW+N+Y erhyW7eye369921DzJU5DBUm1Nm4jHbc2Szj1Q0kAnrM7T0psFlzFRMB/lBJy39srW0tuT7Vramu QFpCKV1FmNGIFcAigapAI8qdfN19+7f+Yd7+8pv8O8mQW9o8cVojGXwhCkMUZkhV2KASSRsJGiCo 0iNUa1bq9P3IHWHfVQfZfxV+L/yY/mjdjU3yO+N/QvyBp9sfAn471W2YO7en+vO1odu1WT+QnacG SqcFFvvH160klRHBAk704QyLGgYkIoGtK11Uz04JZQgjDEKCTSppU0BNPU0FT50Hp0afA/y2v5dm 1IJ6ba/wI+Fm26WplE9VT4H4s9G4eGpnVPGs08WOwUau4X0hmBNuL+2pLe3lzLGrU9VB/wAI6X2e 9bxt6lLC7mgDGpEcroCfUhWFT9vT1D/L/wDgdT6vB8JviNAX06/D8bum4tWm+nVowova5tf3qW3t 7igmjV6cNSg0rxpUfLrW3b1vG0a/3TdzWviU1+DK8erTXTq0MurTqNK1pU04nqR/shHwW/7ws+Jv /pOfTv8A9Z/bX7u2/wD3xH/vC/5ujP8Arnzh/wBHa8/7Kp/+g+tcf+eIfhr8Ee8PiDlaPZ3Tvxow fb3x7+ZWyHn686vxGzaffW88V358bty7XxWag67xaGplpMfBnp6OWuTRArVKo6NOVkditbaAkwxq hPHSoFf2Dov3Dfd73ZFi3W8nuVQ1USyySBScEgOxANPMdbdft/oq697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917qnv+b18Ue9vlSf5ZP8AoM2dBvD/AGXP+bX8OvlH2959zbW21/dfpHqc7h/v 3u6H+9FbR/fyUf39LpxuP89bNr/Yp5NLW917qyjv7bGc3t0R3XszbFD/ABPcu7upOx9sbexv3NHR fxDOZ7Z1bisTRfd5GSKni8tRLHH5Z5UjW+p3VQSPde61kvgh2F/P/wDhD8QOgfibSfyW+uOyKXoj YVJsSm3zUfzD/jztSo3LT0NdPVw5Gfb0T5BaVyswRo1rJQSpYEBtK+691eD8EO9f5gHdKdof7PT8 Etu/CmXbjbN/0ZDbvyV67+REXZCZYZQbvNU+w0jbEtiTTYzSKtLVIrCYmPgkC+690Cv8l74u94/E j4q9j9ad/wCzE2NvTP8Ay8+UnauJxEe5NqbpWp2N2b2bUbn2bmDkdn11fSo1TSSq700kyzxNdZY0 P1917ox/8w34BdE/zKPjHvT4y99YdJsRnEbL7J3jTUiVG4usOw6Gimp9ub+2yzPEfPSGaSOen8yL VU0k1M7qspZfde6rm+OPxb+eP8v3+RIvxG6A2JQdj/ODq/bXyB606og27v8A2Dt3ESVm/wD5Ibpm 2d3Ji94b7q6HFwJR7bzFNu6jpMgFqPKkVFVUSVHmpk917qxL+Wr8L9t/y/vhP0J8XMHFjZc1sTZ1 NX9m5/GCN4N5dx7qY7k7U3cKsU9LJPDV5qpqxQGaFXiokpaeypCij3Xuhg+W3xl64+ZXxp7p+Lvb NFHV7E7q2HmNmZab7GhyNTgq6pRavbW8MVR5JJKdshg8pDRZnGmdGRaqlhZlYKQfde6qR2v8efn9 2P8AyHO/PhJ8gOsll+YuF+Mfd/xP2NN/pF62y2I75x2L2XUbR6W7Hxu7qTLyU1HHlsZNj6Gul3NJ ja5q2lq6yro6SKohB917q074Kdb706b+EXw46g7Iw393OxOqvir8eut9+7e/iOJzH8B3psbqTEbY 3Thv4tgZ6qhqvta6lng+4oqmaCTTrhlkjZXPuvdVV/z6/wCSZ19/Ni6IG5dm4/C7W+ZvTuArz0t2 M8dPQybxwkLT5WbpPfGRkeKOTE11VLLPi6ira2MrpXmieGCryAn917q4b5GfHLqn5Z/H7sz41957 bg3X1d25s2p2fu/DzR0ck8cUwjqsdmsRLWRTxQZLF10NNk8VWGFzTVlPBUIC0a+/de6oj6kxP87j +VliaD4/7Z6B2Z/Nx+I20YIMR0dvTbXcWy/jp8mupthY2PGYfBdfdgY7s2STG5ynoIvu/wCEpjzV PFTxBJslT0/2tBR+690JG7/lv/PL+U2JfYPxd/ls7e+Bqbriqce3yk+Zfe3WG+6vrqgq8BKXzuI+ PfXC19fLlqesaP8AhgyEeQomZP8AL6JYnIHuvdW5/D3obe3xm+OfWnSvZHyE7R+U2+tnYusTdXev cVYtbvnfWdy+VnzeUrKkvJUSwUMM9S9PiqKorauWko0gpWqpxCrn3XuiufzB/jp3B3p3J/LG3b1d tSPcuB+Ofzy2/wB2dwVr5/bmFfa3WtH0pvHZlVuCKlz1XSy17JkMxQRGjxyT1JVy6wlEcj3XurPP fuvde9+691TX3L8WO9vlj/Nk6I7C7g2M2D+DPwL69Pa3TLZDP7ZyVH3r8xd91C0tBu2p2pja2qqY 6LYtFBFUYufK0dDW0WYpBNRmpoMpIw917q5T37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3SZ3nQVeW2fuvFY+H7ivyW2s7j6K DyRRearrMXLT00JlnZUXU7qNTsFF7kgc+/de6q+/kafGLu34a/yrvil8afkZs5Ngdz9YY3tij3pt OLce1t2x4uXcXfG6d44Mx7h2VW5HGVC1GMyNFVA01Y5QSeOURzJJGnuvdJ3+b/8AHH5JfNnZ/wAb vhR1dtispPjZ373rhaj51dw0e6NqYqo2T8eermh7An68x+DyqVOTqa3eddSxUdFXY+ikgpZaRaev eOCvGr3Xurb9u7ewW0dv4Lam1sNjdu7Z2xh8Zt7bm38NRQY3D4LBYWiTG4jD4rH0irFBTU1PFHBB DGoREVVUAAD37r3VSP8ANQ+F3yT7h3N8X/mr8E89svGfN34L7j7Bz/W2zuy/tabrbvfrPs7bcWE7 X6N3ZlDCJ6KozVNRU1NiMj9/SQU0ktQZZ6ZpYq+h917os+7fmx/PV74wGc6U6T/lH4z4idrbix1f tmo+T/yB+WnUnYHS/T1dWTmhO+cJtXYVDLltzmno5o66gWlpJ0SsHhqKKsggmEnuvdKvc/8AKt+S /wAYf5cvxQ+O/wDLe+T+Z2N8gPhdvCn7Xgqt0z121erPlvuTNZ+u3f3BsjuTbm1Z4o0xueyWTrqj C0tdJWU9IqwUNVIwb+LUnuvdFv8Akf25/Ox/mKdF7++BlH/LGg+EFT3dtvJ9R/Ij5S9nfJPq3sLr HavVu6MTUYnsCXq7buz6atrcvLn6Iy4xFpzVy0MVYygtIv8AEqT3Xur2Np/Dvp7E/C3ZPwR3jiB2 X0ftT47bL+NWTx+6IIaaq3XsjZmwqTYFNXVpw4gFHXSQUcdXFUY8wvS1ISakaF4omX3XuqBOougf 52P8mGKq6T+J3XGzf5tnwAx2WzM3SnW29+49tdCfKX4/7XqaqOsx+xanfm8Y2xOSxlPJUzwwLSUV eGEBmgpcLBItAvuvdE1/mOfGH+dF/OL7B6D3lsL+WhsX+WV298XNy5rdfW/zB7C+bG2c721HRQ0c ldSbDxFX0XjzkKSCtrjTVlF5MdXR0dXDNprqKGtqzUe691cR/wAJ0do9ZdU/y8sF0hhOs99dSfIL qvfO6MN8y9p9o0tRDv8AzHyRkqvst4dhVVfU0lGMjh8sKNIcFXQRSRrT0jUMtTV19DW1MvuvdD7/ ACbvjL3j8bvjt3jk/knsyp677x+Tfza+VHyx39smq3RtbeMm3H7f36E2rQDObLy2cxr3wWNxcrRU 2SmETu0TMXVmPuvdFG+Y/wDJSqfkp/Nh6A+WNBunJ434p7mg212J85uk49yVNNsvuzuT4shI/irk d2bGrJ6mhz33AyjUlXBPi1gpqHE1TGpSsyMXk917q1n+Yp0fn/kp8B/mf0FtHb43VvXtv4w93bG2 Ftz7/DYps12BnOu8hS7Dx8WW3JNT4+kkkzBohHV11RFBC9pZZI0RnHuvdKz4R7X7T2N8M/ibsfvL ET4DujZPxu6R2b2zhqnMYLcM1B2TtXrbG4De0LZ7bE9Tj60fxKnqWWqo52ilUh1sDYe690aH37r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3XvfuvdAd8kv+ZI7+/6gMb/AO72l9+690OPv3Xuv//Q3h+v/wDm cff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+690APysjSb4vfJKKVElhl6D7hjkjkUPHJG/XmRV0dGuCCC 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 iqyWUYh6d5twUeYjkapkmqaeoIKOQ2nJ8kU6y3EqkKQaAVrQg0NcUIx+f5EKbd7czQXKT3lwpVGV qKpNaMDQ6qChAI/OuaUK19j7qWugJ7Mqd0dXbI3tU9K/JbtH4cZzsbMYqfObk6dyOQix27tzUWVf dAyW4OuscVSurJGgeszmaxBoMvNjKWaCvywwcddTuFd92naJITPcMIGr8QAyfQjzrXNKHzJoOgHz Ty/y/NbNeXbraSEj9QAdxrwK/iqSSSKH8TGg6uV/kn/zD+he8enti/EBdhby+O3yS6i6xi3XW9U9 m5I7jl732FWZ6aDLfLLpvtyHXj+wMFuzOTVuUy2eoKmaUZSpqjO08TwV9ZF/UFdXw+/de61HvkZ/ Ko+HG/f+FMXxk3/neq9rz4bfnxM7U+VvZ3WcmCo5OvuxO9Oo99UWwtt763Dt5ClO9RO2doMtk4jE 0FdW4uKeshnlra55/de624ffuvdVX/zPf5g/x++I3X0XS2+epd4fLfuf5JbP31trYfwp6r28d577 7h2N/d6ppOxMpvDFxxVMeI2XS49qpM9m66nkjWnFR4KeseGaJPde61nfjZuzePcXQ239m9vfKDtH 5PbexGTxG9U607K7Eg7C2Z19X1lEseAwJqaOryFNu6kw8tCafHZmtyeUxIytBVV2ATGypLDDInLe 1bVJCLmomlFCwNKISOFPzOTg+gIxMXJmw7BNaLehluZwFLK1KRsRWmnNaVIqcGnAMuDZext1J/Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdBrv8A6f6k7X/hP+lLq3rr sr+Aff8A8C/v/sjbO8Thf4p4f4n/AAkbipan7b7n7an8/h0+TxR676Fsnntreen1EavThqUNSvGl QaVoOkVzZWd5Q3cSS6a01qrUrStNQNK0FacaDoPf9k9+JX/eLnxz/wDRI9a//W32z+7Nu/3xH/vC /wCbpP8AubZf+USH/nCn/QPXv9k9+JX/AHi58c//AESPWv8A9bffv3Zt3++I/wDeF/zde/c2y/8A KJD/AM4U/wCgehm2ntDaWwtv4/aWxdr7c2XtXECrGK2ztLC4zbm38YK+ulydcMfhsPFDTQ+apnmq JfHGuuWR5Gu7MSpjiihQRwqEUcAAAP2DHSuGCG2jENuixoOCqAoFcmgFBk56U3t3pV1737r3Xvfu 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 Ntb7w+OyBkGhgYlpiwOkW9aap9h37YriMSxXkDKa0IlTyNP4v+L4jHXHncvZ33a2i8aw3PlndIZk ClkawuqjUoYA0iNDQio4qaqwDAgErwf8yH4X038w3tHtKfuYRde5n4YdDbAxW636+7VGKrd5ba7w 7I3DntvQSfwPUailosrjqmUFLBJ47EkkDz8w7BE2mS+t1PoZowf5t1e09mPeG/i8ax5T3mZK01R7 XeutRxFVgIqKjHz6Oh/w7B/L8/7yHx3/AKL/ALZ/+sPun9ZeXP8Ao4W3/OeL/oLpV/rFe93/AExu +f8Acpv/APtn69/w7B/L8/7yHx3/AKL/ALZ/+sPv39ZeXP8Ao4W3/OeL/oLr3+sV73f9Mbvn/cpv /wDtn69/w7B/L8/7yHx3/ov+2f8A6w+/f1l5c/6OFt/zni/6C69/rFe93/TG75/3Kb//ALZ+qSv5 ovyT+O/y07/+O1X0xuyh7Qx/W/xX+YY3TUPtDdOOo9t5PeHyU+M391g8u7sbRp56yLF5bw+As+iG a9lPKyz3TbdwLLYXEU5WmoRyI9K8K6SaV8q9BjmXkHnvkuOGXnHZb/aUuCwia8s7i1EhQAsIzPGg cqGUsFqQCK0qOtsb2v6CXXvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3XvfuvdAd8kv+ZI7+/wCoDG/+72l9+690OPv3Xuv/0d4fr/8A5nH3/wD9R/Wn/vDR+/de 6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3XvfuvdAN8qP+yYfkd/4gbt//AN99kffuvdadvRf/AB+fyS/8SX0n/wDAHdOe5N5O/wCS W3/NRv8AjqdTf7df8kCT/mrJ/wAcj6FTsXr7aHa+xt09cb9wtFuDaG8cPVYXN4uughqIpqapW8dR AJ1cR1FPKEqaSoUa4J445oyskasBLc28V1btbzCquKH/AFeo4j59DW8tIL+1ezuBqSQUI/yj5g5H oQD0TXD9E/N7u3EdRbF+fHzT3R3H0r8bIdnYjpvovrOSu2ZsjeUXW60n9xN//IXJSQxZHdOepvBo K181QUkiiqkrjLNVJKD9v5REM/jXzhgpqqrWh+0kA/kP29R1s/t4tvdfUbpKHCGqolaGhqNRIB/I cf4h0ars3a1W+3t6by2BtXa+S7tx+wtx0vW+Zy9BilrDuqi27lYtl4+fOVyhoaZavJ1cJZ5QkUVZ VjhJ5g4qu4AyPPAgMwQhD51oaUPlknPzPqeh9uFsHiku7eMNcrGwjbzBo2mhPA1JofmRWhPViv8A L0/mzfyzeov5Z3W3fufy2z/j1vXJSbk233z0rBVZzffyM3N8pOvKSKi7gG4aPJSZDeO68nUzmmyc u6NxVM5ioK6inzGRpE8jRQrobVopkeX2cesZfDfWY6HUK488cf2dUudBbT3jVfLH5o/ITafUGQ+M /wAWfk3v3G9qdbfHXeGcps1vnbfYWRx8f+kLflbhcGY8XtdNwVJlrK7AQfePFVHwR1ZoaGjkrJG5 WsNxslc3A0xSAEA8dXrTyxXyz9lKzJyJtW87bHI96uiCUAqpPdqB404rivlnB4AVM32hujJ7a2yt Pts0r743bkqXZuwaeshWpp23Xm0kMGUrKDywvU0WIpIqvO5WGGQSmgoqpowXUAie8maKGkfxuQq/ 6Y+f5CrH5Doc7jcPb29IP7WQhE/0zcD6UUVY14hSOlLtHbGM2ZtnB7Vw7VT47A42lx0FRX1LVuTr jBGBPlMvXyDXU1tVJrqayqku807ySyEu7EuW8KwQLCnBRT/Z/Pj09a26WlulvHwQU+31J+ZOT0pf b/Svr3v3Xuve/de6LhkPlL1LiN1Yba2aqd040btbb6bB3JFs7cO4Nqb5fc2UzGIw6YjMbVgyH2X3 UmAzVTjTnY6AZTHUVTmcR/EMLDJkVIRzHtJuWtvEyDStCVY8O0itc48vlUZ6Cic5bAb1rHxjqUhQ 2klWJxRSta0OOAB4ioz1fB/KJr8Vl8x8hMzha6gymMzG1OgclRZTGVdPXY/JUtTXb4NLX0dbSs8c sUkQQxyRsVZbEEg39gvm5o33NZIyGDRqag1B7m8+oz9wXil3tJoWDK0KGoNQe5xUEY8uhw/nW/8A bo/+Y1/4qB3h/wC8TVewv0Bejf8AxN/7JY+NH/iv/TX/AL7rG+/de6pw/m4ZfFYP5KdEZDM5KgxV D/oQ31jxV5Gqho6Z6/M9qbaw2HoElmZQ09XWVEFJSwqS800scUatI6qRfyfJHFczPKQo0DJ/0woP tPkOJPDqRPbqaKC/uZZmCqsYyTTJcAD5knAAyTgZ6qF2D8ner+zdwZXEbN/vbWYbDSYPHVm98rtD NbU2k+4c7uLJbSptv0LbsjoclVGDLYubDV+WpcbJh6TLz0OBqslDnsjQYyoF0PMW13F2tpC9S3A0 IUn+Gpoa/lTyrXHUhW3OGxXl+u3W8pZn4NpIQnyWpodR+ynlWuOjE+z3oV9e9+691737r3Xvfuvd NeVycOIojVywV9bJJVY7GY/GYmgqsrmc1m83kosLgNvYLEUCvPWZDI11RT0OPoqdGlqKmaKGJWkk VSnuLiK1ga4nNFUVP+r59Iry8t7C2e7um0ogqT/gH2k46A7AfJzqbM7g/urX5DN7Pz7fxWeni3fg Mhjtv5TGYnddRsg7l252LQiq2tl8NWZWmegxebxGcqqCvnZIKOpnnbxeymz5j2u8YIJNDHybH8+H Qf27nDYtxYRrL4btgK40+vnw4epHGgqerg/5ZHzg3ptb4hde7T3j8BflViodqy12C2XvDpnrxO0t ldybGpIYHwXcEOaEeAakqcuzzx1GNeCq8JgDJkKuKWOT3FVz/byf6Y/4T1Al3/uVL/p2/wAJ6LV8 vfknvbvD+cD/ACXsHN8RO3+meudu90drZXHd1d24GTY+695b1yXx633R5rq7E7JShqk/h+HoYaDL DKybiJmmyDwR45BTyVMjHSbraX9+691pyfKHuPrTqHt75IZnsPddHgaWn+QneNXLClNkMxlVoW7a rcfLk/4Fgoaqt+0imqaeOorPt/BCZI/NIgZSZH5f3CzsNlRruQLVmoPM5PADP58Pn1M/KW8bbtXL ET38yx1eSg4se48FGfz4ep6Ruwe0sF2BCslFiN27aqKhtwmgxO+tvVG0tw1kO1NxPtTc33G28i33 +MrsbkESHK4DN01FmsclTjqnI42kpMviJ64823ebLdHdLcmqeRFCR6j5dCjZuY9r3x5Es2OqPyYU JX+ID0rj1Hn0Jvs36EXXvfuvde9+691737r3Xvfuvde9+691737r3QddTbY+Ou2/m/1b298ots4L srYmIkrsPV0nb8lFuPrXrHYvYcGE27Rdo4PYVbLNj4Ytjdg4HZ6Z3NZDFx6It/jJ1tfNTbWxy4eN ucY7hbpJXYmNh2g8FNKGma5pVseYqeAEK+40F4l9HPI7NC47FJGlGAowUVrmlWoKZWpNQBYN/wAK K+weoPjz1L8fPmpiOwsHs/5vfCXuDa3eHx225jJTV9h9qdVZDdWO2R8l+q8hhMTHNkTs3M7arZf4 9XOsFFDLT0sc9ZTiciQHdRx1sYYzJUGZx2PzGMqFq8dlaGkyePqkEiJU0NdTrVUk6pKFYB43VgGU EX5APv3XuqT+1f8AuIX+IX/jMD5T/wDv/Nm+/de6u/8Afuvda1X8ovf3SXyG/mG/zNflh2X2Djcn 8v8Ad/yG7X+MfQvXm7jW4fcGyfhD8U90xdf0C9R47NQ08FfSZbcNNUZPeMu3Za2CmrRSfeyQVlRO J/de6AH55DoDfHz+3Fu7o/ZW3du7g2rBkese0ewOtoxtOTt3tvCZSm3F3juXsmPFS0lJur+4cNHs vr+mraiOuY5Lc+5aSVVyG0Y5ccJOVo7iTc18Fiqrl6eYHAHPAn7ehpyJDeTb2v0zsiKNUlPNRwVs g0LUHnmmOkl7lbqfeve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6ErqjovvfvN tw1HU/U2e3Pt3amah2zmt3ZDM7P2jt5dxy4Gm3PLhsSu7MjR1+R8FFXY+SoraChloVkqVplqnqqe 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 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3XB3WNHduFRWdrcnSouxt7917rXJ2p/wAKn/5Tu7zR T43P/JZMLWyToNzD4v8AaeXwUDU4YSeSbbFLXzPZ18REEEhDmzAAMR7r3VqPwl/mUfCb+Ynt/cW4 viF3vt7tb+5s1JT7y25/C9y7O3xtOSuiEtJJntj74osdlIqeQkxR1q0rUzyrJEkzSRyIvuvdGK71 796X+MfV+6O6fkD2Zs/qPqzZtE9duHem9svT4jEUahGaCipjKTLV1tSy+Kix9HHLVVMpWGnhllZU PuvdUON/wp3+Fedrc9keoPiz/Mo+QvU+Aq6ymm7/AOlPiJXbi6dr4qBUNZkMfmc7m8ZkVp4i0qyN WYunYeGVtBUxGX3XurU/hP8AzLvhJ/MOwGUzPxN742z2PktuxGXduw6mDKbR7P2eiPDDNNuTrnds FFl4KdJZ4qc1y0r0hmbxJO0gKj3XuhA+a3zO6Q+AXx23l8ovkTkdw4rqfYlftTG7grtrbeq90ZqK q3nuik2fhBTYWjZZJVatrYFkKn0IS54Hv3XuqksP/wAKhP5SlSlRVbu7A786uxdNU4ynkzfYPxc7 wo8KoydX9kKibIbdxGTSCOGQxiVqjxk+RBEJDqC+691eH0j3p1B8kuqtnd4dD9i7W7T6l3/iv4zt Lfe0MlFksHlaJJnpatPKNLwVNLPHLS11FUxx1FLURy09TFFPFJGvuvdBh8M/mJ0x88fj/tb5MfH+ u3DkOr94ZfeOEw9TunAT7ZzRyGxN21mytwxVOIqXdo1SvoKhI31EOgDrww9+69175LfMTpf4nZn4 54Pt6u3DR5D5TfIfYfxf6lTA4Cozkdb2t2MKhtt0mckhdBRUJWmmaeskuqADgkge/de698lvmJ0v 8Tsz8c8H29Xbho8h8pvkPsP4v9SpgcBUZyOt7W7GFQ226TOSQugoqErTTNPWSXVABwSQPfuvdGn9 +691737r3QDr8lumG+S0vxDXeVMfkBD0vH8gZNi/aV3mXquXeR2Cm4BkzH9qX/ia+JqQTGdUKzNG InVz7r3Q6swRWc3sqlja5NgLngfU+/de616tzf8ACmj+XNsv+Cf3y2b819p/3lzlFtnbn95vh72x gf4/uTI6v4dt7CfxSCL7uuqNLeGkg1SvY6UNj7917o6vQX82/wCL/wAiepPlD3ZtTafyQ2bsf4id bS9rdsTdvdA756rydVtKm2zn921kmxaDd8VOczUQUe28gZ4KVrxu1MrlfOh9+690ePoHu/YfyX6Q 6m+QnVtTkqzrjunYG1uzNjVeYx02HytTtbeOIizeFmyOKnJenmaCZDJC5JQ3B5Hv3Xuq6PnB/O/+ AnwO7Fg6L7A3vvXt/wCStUMY1N8ZvjXsbIdxd0Wy9O9fRRZHD42SmxmOqWpU+9GPyeVp6xqV4qmO neGaJ3917ou/W/8AwpG/l/ZrfOA67+Q+zflv8CdybufFwbPf5wfHXP8AT+A3PU5apjpYYaHc2Fq8 5RU0cTSxmorcnNS0kakyGo8Ss4917q+jA57B7oweG3PtfM4ncm2tx4rH53b24cDkaPMYPO4TLUiV +JzOGy2PeSnqqWqgkjmp6iCRo5I2V0YqQT7r3QWdafIfp3t3fveHVvX++MVnexfjhvTCbD7p2Yhm ptwbFz+59n0W/drtksdVKjvRZPFV8NRQZGAPTTulTTpKamjq4ofde6Gr37r3RW/i/wDMDpb5ef7M F/oZyGfyH+yy/JntP4ldqfx7AVWB+y7i6d+x/vrQYb7on7ygj/iNN9vXR2SW7aQNPv3XujSe/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XuidfNX5ydI/AnrH Fdq94U3ZGVwWb3Gm2sdhepuudydp7xmnGMqMvXZeTa+1YpaiLGUUFOTXZGULBA0kEbuHniVvde6V 3w9+WXUHzl+OPW3yo6FrM9kOpe14Ny1O0Kzc+Dm23nKiHam88jsTKvXYWpZ5IP8AL8XVCIM12j0P YarD3Xui+/Nj+Z58ffgVunZG0e5dlfI/dWT37gMhuPDVHSHQW/O48XSUONyAxk8OdyGz4ZkoqhpD qihnszpdluAbe690QLdv/CmT+XTsHA1e6d+bK+beytsUD00dfuPdvw77a23gqGStqUoqNKvL5iCG njMs0iRRB5AWdlVbsQPfuvdHy+Uf81H4t/Df4k9N/NLvuLtXavT3eeY68wOyaGm66r8r2FDk+0dl ZDf+z6TcWyKOY1NDLLjsbOZ4JCZYJSkE0aSllT3XuiIYL/hT/wDyjKxfPvHtLuvqSg+8joxlezPj D3rjMQDJEZFmkyW38Jk4UUlSio7LIzWCI17+/de6vK2V2/1n2X1fie6Ot967e7B6u3Btyfdm3967 NydJn8FnMFTQySz1WLrqB2SRkMUsUkVw8cqPFIqyIyj3XuqONsf8KW/5eW9sFj9z7M2F84N3bYy0 csuK3Ftj4a9u57BZSKCoeknkx+XxVPLTzKksckTmOQgOrKeQQPde6sL+EP8AMm6H+fdf2NjemNm/ IXak/WFHtiu3A/eXRO+Om6eti3ZPXQY1dtz7xhhXIPG2PnNUlPcwhoi9vIt/de6royf/AAp6/lb4 jeu5tjVeU+Sctds3fGc6/wBzZbEfGzsPcW3sTnttZl8HndeR25FVtNFTSxs7fbRSSMlikbllU+69 1YH8HP5sfwC/mN5Hdu3viR8gcN2FvTYmO/jO7eu8xtzeXXnYmGwQygwsmf8A7m9hY/GV1VQRVTwU 9TW0MU0NNLUU0VS8UtTAknuvdMvzx/mvfGH+X9urrLqzsDE9y91/IXuOmqsr1r8Y/i/1rV9y9+7n 2xQTTU1fvOPZFDUUi02Kjlp6mKOoq6uJql4KpaKOpNHWCD3XupvwE/mqfFf+YnNv/a3Ujdlda91d SuW7U+N/yD2NP1Z3zsCgfNVGBpc1mtl1FRVxS0ctTTtG8tDWzmlaSnjr0pJqmCKT3XurJvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690B3yS/5kjv7/qAxv8A7vaX37r3Q4+/ de6//9LeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3QDfKj/smH5Hf+IG7f/wDffZH37r3W nb0X/wAfn8kv/El9J/8AwB3TnuTeTv8Aklt/zUb/AI6nU3+3X/JAk/5qyf8AHI+jF+xb1IXXvfuv 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 8f5nX8u7oL+T58Neo+7vm38YeqO0dn4bt+LdWwN/dzbG2xu7b0mY+Qu7dwYuPMYLK1kVRTtUUNXS 1cQkQFopUcelgffuvdbFXx3+a/xE+W9Tuui+L3yX6S+QFXsWDD1W8qbqPsfbG+6ja9PuCSpiwc+d j29UTmmSrajqlp2lADmKQLfSbe691r1f8J4fld8W+l/jD8vtn9xfJPoLqfdkv8zP5iZiPa/ZfcfX exNxviK3L4eGjyqYTdORpak00zwzJFOItDMjhWJVre690HXavdnxe+aX/Cjz+WXuv+XXu7rntzff RvVfyX3H84e/OlIcXvnr2r6gymyBtbrjbG5exdoM1BkauCsqMjjYawVssdPJmMbEJJG/yUe690ZX 5j9jVn8sv+c3h/5infm1Mlmvg98nfittL4pbx73o8fXZtvif2Ztjfb7joanOUlDFUyU23M5DHSSV xjWJ55DLNCKiTHmmqPde6va2Z1d8Xuw+yMD80+vtq9Tb57I3d1fQbP2v8i9oLgdy1+5Oqa2rObx9 Ht/fGHeaCqx87vrjqaaVvJHaMSNEFQe690Yv37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3XvfuvdAd8kv8AmSO/v+oDG/8Au9pffuvdDj7917r/094fr/8A5nH3/wD9R/Wn/vDR+/de 6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3XvfuvdFy+YWT/gvxJ+UmZ/h+Ty38J+Ofd2T/AIVhaT77M5P7DrPJ1X8PxNCWTz1U2jxw Rahrcqtxe/v3XutJf4v9wZDeFd35uik6Y7owkeV7O6vjfB7t2/tnau58W+D+GvVW2iMtg81mYpYl qxRDI0LrqSaiqKaYMDI0aSHyrcmHbWURu/6jGqgEfCuMkZ6mLkK9NvsroIJZKysaoqkfCmMsM49P MdGt/v5mv+fV9kf+uB/9fvYo+uP++Jf95H/QXQ2/ecn/ACiT/sX/AKD69/fzNf8APq+yP/XA/wDr 9799cf8AfEv+8j/oLr37zk/5RJ/2L/0H17+/ma/59X2R/wCuB/8AX73764/74l/3kf8AQXXv3nJ/ yiT/ALF/6D69/fzNf8+r7I/9cD/6/e/fXH/fEv8AvI/6C69+85P+USf9i/8AQfSA7O7f3JtXZOXy tD13vPCZCabDYDHbjz1JtKu2xtPI7sztNtXH7y3jBis29QMHhpq1Mpm5o1/aoIKiUsqoWCe53F0h YrFIpNAGZRpUkgAnJwK1OPLpLebxLFbMyW8sbGihnVQqliFDN3HCk1OOA8uPQxbR2xjNmbZwe1cO 1U+OwONpcdBUV9S1bk64wRgT5TL18g11NbVSa6msqpLvNO8kshLuxJhbwrBAsKcFFP8AZ/Pj0cWt ulpbpbx8EFPt9SfmTk9KX2/0r697917r3v3Xuk3uTc2C2vQRVWfrBClfU/w3GY6CkrMtmtxZaWll q4NvbZ25io567K5GoihmNNjMdTT1U+llhhduPaW5uLa2iMl0wVc8fP1xxOPIA46QXt3Z2MBmvnVE oa6vPGQBktjiADjoL/hf/L+ofmN8ou3ugOzKf5TfCH49bfx0W9O4/idmMLvPotv5ge233VRDNSV0 NLT4+Gt2dg66LDUGcqFyeVyNPj8rjMJSf3Wp6ielqIl3m4sLi6L7fGUUVrwoTWtQB868ScUpQAAY +8x3e03d8X2iIxIKg5FGNa1AHDJPFmqKAUUADdW2xtnbmytt7e2bs/A4fa20dpYPE7Z2ttjb2NpM PgNubcwNDHisJgcHiMekcFLR0dNFFT01NBGscUaKiKFUAFPQf6pp/wCFDvyL6q+PX8ov5kp2RufH 4fK9z9Sbm6K6x2/JVQJnN59gdmUJ27jsZgcfIwkqPsoZp8rkDGD4aOmnlb9IB917o3X8rv5I9U/K 34AfFLt/p/c2O3Jtyt6R642zm4KKsiqa7aW+tn7Potvb22LuKGOzU+RxWQgmpqiJ1XUAk8eqCaKR /de6Nr231L1t3v1pvjpvuHZmD7D6v7J25ktpb42XuOlNXhtwYDLQGnrKKqjUq6MARJDUQuk0MqpN DJHLGjr7r3WmJ3B8IpfiP8yMT8ZtlS/Lv5/7H27sXEZzYWRyWyN/d4Zr4UbJGPqa7YnQO5OwqOCu imxb4XbuUzGH21Q1NBJNDR44jbuYy9Tj66Q92K52q1uA+4IWNcHyXhkjz86+g/irQCrle+2KxuxL u0bO1e1uKpwoSv4vOvCi1w+qgGHb+5dv7rx7ZPb2WosxRxVlXjaqSimV5aDK42oNJlMLlKY2lpa2 kmV4KyiqUSeCVWimjSRWUSvFNFcJriYMPl5H0PoR5g5Hn1PsNxBdR+LbsHXhjyPmCOIYeamhHAgd JffO/F2pluttrY+lGW3d2tvqn2Ls3AR7e7i3bkcxkUwNduzLJjttdDbO35uapkhxuNrJUan249JG 4Q5Csx1GZa2Eu3fdE2m3E7rrqaAVofmfPh+z1IqKk/MO+xbBZLcyJ4hZgoXUAfmRg1p9lPIkEirh 2tWdtdMde7x7T7D6N7S2fsXZOKqdy5PcO5elPlr9hPt3HpDPX1ET7R6uzTY6Zo3bwPupcLRpIVFf WUFPHVVdOGYudSz6ZLegJ8n+z+j9p/lTz6BNv7l65gk1pQEgAiStKkDPZ9px8hTz6WSNHIiyRSJL E6q6SxsHjkjI1JJGw+qkcg/09jsNqAYcD1KSsrIJFyCKj8/sx02wbNre6s1UdMbO2Dmu4d35SnxN VkdibShgqK3BYyozEKY3d+6c9VT0lFtqlpahRW0WXyeQo281MTjpJa+KKIk277jtltC0F8Q+ofBx J4eXlxrXjTIr0H+YN52Kyt2td1Kyax/ZcSQaZI4ilQa8QMqCR1ZP8C/5JW0uge4tv/J75Gb4yPa/ Yuw6zP5v47dB0eUlrvjX8Rs5vekp131ubrPAS0WNiy+7snLC5rN4VWJo6iUMsksE+SjOVmia5eGS dpLdSiE1Cnyr5fYDw+XkOHWP169tLdvLZoY42NQpp214io4gGoBximBw6vw9s9JetU3+eR/MX+NP xi/mbfyW9odg78w1HluqPkRvbtTuqVa2kmo+nusO0dgP0lt/du/gkoko4Z5MzW5WMFWZaLG1NQya Wp1n917rakx+Qx+Yx9DlsTXUeTxWTo6bI4zJ46phraDIUFbCtTR11DWUzNHNDNGyyRSxsVZSGUkE H37r3RMPnT8COk/n31ng9k9oVW9Njb4683JHv3orv3qLclXsXvHoLsqlpzT0e+Or98Y/92lmKWjr KOZZKWqRYzNCZYKaaD3XutRfoTZ1X1zS9s7ty3XHcW8+surdzbg2Sn8xDdfV2R231b39t4bilgrO 5RmmEooqDcFTjPvK7dz1WSoMlR0uFqs3uqsyj09PAOOXNy2a1AilXw5SAPEalG+Vfw5NBxqACSAA BKXJm98uWSrbSp4M5ABlalGqakV/D3MQK1qoBYgAKpvaeogq4IKqlnhqaaphjqKWqp5EmgqYJkEk M8E0ZKujqQyspIIIINvY/VgwDKag8D1LSsrqGU1ByCMgg8CD1I936d697917r3v3Xuve/de69791 7r3v3Xuve/de6jVFJFkIJ6CZpkhrYpaSZqeaSmnWKpQwyNBUQkPG4DEq6kFTYg3HtqVRJEyHgQR+ 0dJp4xJA6HgykY+Y6uk+Ovwkrt2fH3ovdWS+aHz0gyO5em+sdwV8OO+QwpcfDW5nZNDkKqKgpFw7 CKFXkYRRgnSthc29wV1iv0Ia/wAr3oyftbanfGa7V+WW5O8dl7B3D1dt7tnMfJbsePd9DsLdWbp9 w7g2xG+HqKSjWmqaujpJpFjo1JMKG99Rb3Xuhi/2Tbbn/P8Az5gf+lQdqf8A1b7917rVv6WymUzv TfUuezuTr81nc/1lsPPZ3M5OoapyWYzmb2rSZTMZbIVL8yT1NTNLPK9hdmJsPp7mbZwF2q3A/wB9 p/MA9ZJ8uKF5fs6f75jP7VB6FD2adH3XvfuvdR6iogpIJ6qqnhpqamhkqKqqqJEhgpoIUMk0880h CoiKCzMxAABJNvdGYKCzGgHE9NMyopZjQDJJwABxJPQWwQfLDdkW4ewOkvjtk+9eoNkjZlP2wdqr msZ2B1HPuunO6KZY9t00GVym882NtVOJz+Z2Vt3AJk8DBkcRFVyVldkMlQ7dBUvOCxXrQ+FWIGlT VWBrQk4OPlQEHGePUZz+4kcG5vB4FYFOmpJVlINGLCjVAHkFBBqM8SYT+Ut3T8gu4flT8kd+/D09 Jb/6q2Z0n8fNgd8dbdwdhbn6vzEPa1XufsDdeyjt3f8AsTZG/aWc4XHVtZFl4qKaWlknq1pjMlVQ VMaBrmHcLbc71bm2JK6ADUUIIZjT+Y4VHQK5w3ez3rc0vLIkoIlU6hQhgzkg+XAg1BIzx6Pb/OCq f5im7/5ZvzeoqDYvxe6a2xjfi18ic92nuHavyX352nufP9S4no/cNRvzZGA23vPovFUS1OTpP2lq RkaWYKrRQVdFLKtbTkXQU6XX8sWr/mObP+AfxKxG4NgfFjuWmk6E6pymzt5bh+T+/wDrDcEPXOY2 Jj8j1/tjNbU2b0PkKBKrE4qSlx81RHWTPMYvJLNNIWmk917qq3+a32h8i+pvnT8Y9+/MSu6o2r11 2L0T8m9i/HHqrp/emX7OG395UO7Oncn2LS5nf+7dh7Akmr9wrT0k+Ioqyec1MtKMXi4Tkqinp8mf 8ubjbbZdST3RNChAoK1OpT/gBP8As46F/Ju82WyX811eEgNEVAAJJYuhpjhgEknyGKmgIN1UXy76 /pttb8+RXx0k6G6z7EpNwzdRYnJVG5N09idhQbLpKjcm7zmMO+PxOR2puT+7kUm59vde5fbsmXy+ MxuftNRZnG0uCyYig5w8a8WNotMbY4lmqT8gP2UJPrnAutPcb6jcY4Xt9ELELxLvUmgIoAKfIKST 55wL8UqTJHLFIkkciLIjxsHR0ca0dHTggjkEfX2NwVdajIPUnqysoZTUHII4EdZvduneve/de697 917r3v3Xuve/de697917r3v3Xuve/de6TdLuvAVu685semrxLunbe3trbrzOK+1rkNFgN65LMYjb GQ+9kiFNJ91UYDLx+KGZ5Y/t9UyRrLA0rIlRpTCD3ABiPkSQP5qek3jxG4a2r3hVYih+FiwBrw4q 2OOOlJ7e6U9e9+691737r3Xvfuvde9+690mK/Zu08plJc7kdsbfrM7PjqTDzZyfEUEmakxFBVzV1 Fimy5j+4+2inqKiaODyaFeWRgoLsSiuLCzu83MSufUgVxwzx8z0WXe1bbfmt7AkpxllBOK0zxxU+ fmepmI29gNvjILt/B4fBpl8lUZvKphsXQ4tMnmauNIavLV6UMcYmqZUiiSSeQF2VFBYhRZ+OCKGo iULXJoAKn1NOJ6Uw21vbA/ToqAmp0gCp9TTifmc9Pft7pV1737r3XvfuvdVqfzgP+3cvyU/7VXXn /v4NveyPmT/kiT/Yv/H16C3Ov/KsXX2J/wBXE6fPiF8zvjbs/wCGfxQodzdnbfxFdhOhfj5sXJ0M 9ZTy11JuRNoYbY/2c9FSvJKi/wARKxvM6KkUZM0zRxI7rzK5w9kuf955s3LdrGCJobm5mlQmZASj yMy1BNQaHIPDqf8AkX7w3tlsXJW07LuNzMtxaWlvDIBbyMA8cSowDAUIqDQjiOjL1fzc+L9DXYrG 1Pbe1Fq81NVQY5I8lR1EUstFRvkKgT1MEjRQARRsVad0DGyKS5CkOf8AA/8AuR/yjw/854/8/Qr/ AOCb9pv+Uuf/ALJpf83XcXzd+L8uWrsFH23tQ5PG43FZaribJUiUyUOaqqykx0kNe8gp5XaSgqg8 MUrSRBUaVEWWEye/4H/3I/5R4f8AnPH/AJ+vf8E37Tf8pc//AGTS/wCbr2P+bnxfyj5KOi7c2m74 jJS4muEuTo6RY66GniqpI4Wq5EEyBJoyJoS8ZJKhyysB7/gf/cj/AJR4f+c8f+fr3/BN+03/AClz /wDZNL/m6bh88/ii21abeg7f2z/d2rw9FnoKkzkVzYzI0yVVLK+DP+XJIUkQtTvTCVDdXRWBA9/w P/uR/wAo8P8Aznj/AM/Xv+Cb9pv+Uuf/ALJpf83ThXfNz4vY2qw1HV9t7UWoz+RlxOLWLJ0lSktd DiKvOyR1E1LI6U6CmoqhhNUtHGXCxBzLLEj+/wCB/wDcj/lHh/5zx/5+vf8ABN+03/KXP/2TS/5u u2+bvxfXLxYI9t7S/ic2Nny0cQyVGac0NNVR0c0jV6yfbq4klQCFpRIwJZUKqxHv+B/9yP8AlHh/ 5zx/5+vf8E37Tf8AKXP/ANk0v+bpZ9Y/Jro/uPdme2P1xv8Aw2590bapqqtzGKoJhJLT0dHT4mpq quFx6J4UXOYtWngZ4xJMYi/ljlRAtzZ7Yc3cl2Cbnv8ACiQyOIwUkV+4gsAdPCoU0rk+QNDQZcle 8HI/uBucm0ctTvJPHGZSrxNH2BlUkaqE0LCtBQVFSCRUfPYC6lPr3v3Xuve/de697917r3v3Xuve /de64kgggG9/oPbYAYaV6bJAGpuiq0Xzf+JmQyrYel742I9W2+B1zRzy11TS4jL7vGDi3HPQ7fz9 VClBkYIKOemkqshQVM1JTtUU0U88ctTAkg+k9rufY7BNyO2SmJo2lwBqVVIFGWuoOaikVPEOeyqt SM4veP20l3J9qXd4BMkqw5J0s7AkFHppaMAHVNXwhir0ZSdl3+WB2xt3efxZ2h1LTZZ597fFmlxf x63phclXyV+5KHF7Gw8FL1PuTNVNRLNJVHcOz/4JmDX+aQPUzVdNK4raSshhz85J3yHmPlOw3mEB RNEKqOCshMbrwWml1ZSAKAigJFCeZfuHy7PynztuWwXDFmgmajNxZJAJY3+Jq6kdWBJqQQSASQAY /n1f9unvlZ/5Qz/4JLZ3sVdAzo/3xN/7JY+NH/iv/TX/AL7rG+/de6rz/m0977K21tbrzpDJ57G0 NTlc3T929mzV+Z/g2J2Z1L1kairwG4N15P8AzFKK/dyYn+FU9fLAlbFjcvLC0oxdTGIf96d3ubPl B9lsIzLdbofAjRV1FuBcABtQOira9LIApDFGZCZ1+75sVtfc8pzDuUqw2ezD6mV2bQqYYRsxK6SP EoujWsjFlZFdUkAoh2R8yvjl2Nm9g4XZ/YcWTTtTDZLM9b56bBbkxG1d6tg82du7hwWC3NmKSnpJ Mvjqs00ddiXkWqi+7o9UV6qAPh3uvtbzzsm0ybxudi0UULFXFVZgAoYyUUkGMA5ZSaaWLAKpIzx2 X3k9uuYd7i2HZ9xSaadA0ZoyoxLFRFVwpWUkCiMq6tSBSWYKTRewH1KPXvfuvde9+691737r3Xvf uvdBv2t2z170jsfM9jdo7oo9pbPwNPNUV+TrEqamVzFA9UaXHY2gSWqq6gxxySLT0sMkhVHYLpRi DTYth3Xmbc49p2aIzTSeQwFFQCzMcKoJAqeJIUVYgEPcycy7LyltEu9b9OILeLiTksaEhUUZZiAT QDABY0VWISvUnzQ6hou6Nq5vZm5K+s7R+O25+su1+wOqKnF7v2v2rgevdz41G7Doo9j1WP8A4jkc tHszLZeGXA0lNNMK6SDHVYpZ50tMnJGyc1+1nONtvPMNk8drK0lsZAFZW1HSKEumgSOEWN5jGlGD klAQYF9w+YuS/ebkO82DlfcI5r2FIrsREsjrpXW1QI3MhijLtLHAJpKoYwA5BG5Dt7cOB3bgcHuv a2Zxe49sbmw+M3DtzcODr6bKYXO4HNUSZLEZnEZOiZ4ailqqeWOennidkkjZXUlSD7zo65x9VMdy /wDb5T4m/wDiv+4//dF2X7917q4D37r3WpX80PmN0NnPkh2N3pu7sTbGzdiZbLbZ+M3VG69wZ2Gh w++tsdNbiydFXbtoI2/aTGyb13RueKnz5kNFU4s4qvNStJVUzHDr3wt+YOc+dP3BsNq13+6YNb+G h1KZkWUoamjuUVXRU7mBKqhKMTnl93S65Z5B9v8A+svMt4ll++rjRH4zjSwt3eEOoArHGHZkkeTs QgM8iq6ABV073z1L35h8zm+qN30256bbedrts7nx8+Oze3Ny7W3BjaqSjq8NunaG6aaiyuNqBJDK FirqOIuFLJqUX9wLzLylzByheLY79bmB3GpThkYeelxVSRXuFaioqKEE5Lco878r882DbjyzdLcI jaXFCroc01IwDANQlWpRqGhqCAMPsPdC/r3v3Xuve/de6rH7e3517H8hu0dr7w2b8/exc7t/D9e1 tLQfFur+ZGU2BtrbG4sHI2PTL4T44ZmkxlJkquvosnK01fSComjRNErojKmQ/KHJXNvMHJNhdcrQ beyFpxM11b28kjOJm090sErFQtABqAHp1inz17g8k8r+4W5WfOVzuauFtjAtndXUUSRmBdfZDcwo GZ6knSSfXpv2lmejd5bzpOvqTq/+ZvtreOR2xuHeeJw3aHZfz06bfNba2nlcThNz5PBVvbW+cJTV woKrO4eKqipJpJI/u4WZAravdd95L555ZtFvt+/cltC7iMM9pZ0LlWYLiyJqVRj+R69y37ge3PN9 8+28tHmG8nSMysiX19URqyoWzuAFAzqPtYdGb2HgMR1xlqrN7d6x+VFfXVmNlxMq78713n2tjY6O erhrZfs8J2l2LmaKnnMlPFasp6dJwuqMSCOSRWA242tzulr9HNuezRIWDHwY44CSoIGpobRGIGo4 JIrmnUjbVd2e0Xv18G0b9NIFZB9RLLcqoYqW0rPfSKpOkdwANMV6Fj/STnP+fO9rf9S+u/8A7IfZ D/VGD/o8bf8A85pv+tHQn/rxP/0ZN0/7J4/+2jpize5n3CuOOU6T7Xarwte2X29mKGfZWH3HtXON jajDJuLaG58PuaDI4jJx0tXVQQZLGVUFVEk0gjlTW1zPaNr3DYb1dx2ffrGCZadyzSZoysAymAqw DKrBWBGpValVBBRvu87ZzNt7bXvvLW43MD1qrW8WCVZCVYXIZGKO6FkZW0Oy10sQU2RDPX4fI5Xr H5MbpmwVY2RxtNvntvMb/wARHlDjf4UmVqMDvffuQoZ6qOIsYameneSOV5J42WaR5GF+6c1c9bxY ttm4c02TROAGCyFCwDasslsrDPoRUdp7QAAHs3JvtvsO5Ju22cm7gs8ZJQtCJApK6DRHu2U9v8QN Gq47yWK/PZOcJYnp3tUki9ynXt+Pybbh9x4eUoianeNvJP8Aw6X/AK0dSkOeJVAVdi3QAf8ALvF/ 20dBdiNu7D29n92bp2t8Yd67N3B2FPNUdkZPZNB17suftB6isGRm/wBKa7V3HRpuZDODN488tWgd pGCgySahpZ7xznYbf+6rXmq1W30CIR/USMqxhdIVdVudA047aYpXgOo/v9i5B3Tc/wB9XvJl490Z DMZfpY1ZpGbWXcrcjWxYV79Wa04moiY3e1Vhsdj8Ph+jex8ViMTRUmMxWLxuP61ocdjMbQU60lDj 8fQ0ufSKGCGJEjiijUKiKFUAAD2EZ+WTdTNc3W9WMkjksztPMzMTxLMYSST5kmp6HVtzetlbpa2f L+5RRRgKiJawKiqMBVVZwFAHAAADqtT+chv3KZL+XH8iMXU9Y9i4OHIt1HA+Zy0GzmxGN+37y2zX pLknxOZqp0SQwinjZKd/3ZI1bSrFlk32X5eisPcSyul3GzuCiz9kUrtI1YJB2holBpWpyMAnqIff 7mqXcvazcLJtqv7YO1t+pPDGsS0uYm7mWZyK00jtNWIGK16JX07iMPg/jf0HubM9ldLY+gzXXvQ2 FpaWXuvq2TP0uV7ApMLtPblHmNr0+WfJUBWvyNLHknrqSJMbH5qjItS01NUzRSHvftfzdfb1eXtv FGY5p5XWsqg6XkZhUVwaEY6zT9rPv7/dy5U9seW+Vt53C7W723a9vtZwtjcMomt7SGGUKwWjKHRg GGCMjoYcjtrF4rO7d23Wdp9CLlt0/wAX/gyU/f8A07XUDnBUa1+R/iOZoc3JR0No2Bh+/qIfM10h 8jgqCz/Wl5x/3xH/AM5U/wA/Q8/5OLfdf/6ON5/3L7n/AKB69T7cxdXurM7Mi7T6DOfwG39tbnyU cnf/AE7BilxG7sjlsVhHotxz5tcbV1DTYTICpoqSrkqaRBBLVwwxVlG9R7/Wl5x/3xH/AM5U/wA/ Xv8Ak4t91/8A6ON5/wBy+5/6B69gNt4vc/8AGv4R2n0I3939wZLbGT+/7/6cwunLYnR96lF/Gs3T /d048i+OtpPLTS8+KV9LW9/rS84/74j/AOcqf5+vf8nFvuv/APRxvP8AuX3P/QPTeuP2+2x6PsUd rdGf3Wrtv47c9NKe8eqhmziMrSx11E820Dlv4xFUGOVDJRS0C1MTXSWJHVlHv9aXnH/fEf8AzlT/ AD9e/wCTi33X/wDo43n/AHL7n/oHpwzO3MVgMjtPFZLtPoRa3e2fqdsYBaP5AdOZWmky9JtXJ7zm TLV+Kzc8GMp/sMRXMtbk5KemacQ0azNWVdJBN7/Wl5x/3xH/AM5U/wA/Xv8Ak4t91/8A6ON5/wBy +5/6B67/ALt4r+9X9zP9KfQn8f8A7v8A95/H/p/6e/hX8I/iP8K1/wB4/wCOfw77jzcfZfd/c6P3 fF4vX79/rS84/wC+I/8AnKn+fr3/ACcW+6//ANHG8/7l9z/0D0kKnIbbhz+b2rQ722FuTcG3chW4 7L47Z+9Nt7vNNJjsBt7clZVxVe26ipp6ijSm3ThEFdTTSU7VEs9GkrVdBkIaUi3/AJH5g5atFvt1 jVY2YICrhu4gkVpwwD/qr1LHs/8Aeu9mvfPmOblX2+vJ57yCBrlkmtpIP0ldI2KmShajSLWgIFRU glQ2b2Fesj+ve/de697917r3v3Xuve/de6m4/wD4uFB/1GUv/W5ffof7UfaP8J6R7j/yT5/+ab/8 dPW/V/L+6v60rPgd8Jaur672LVVNV8RvjdU1NTU7SwE1RUVE/TeGlmnnmlpyzu7EszMSSSSTf3nv 18gXWhN2bSUuP+T3zroqGmp6Khov5h3z2pKOjpIY6alpKWm+WO7YqampqeEKkccaKEREACgAAAD3 iz7x/wDK3L/zQj/483X0Cf3aH/iOD/8AS3vf+rVr0w+4u66C9e9+691737r3XvfuvdYZpUp4TNKs xQyxwIkSLJPUVMqs8VJTRuyq0rqjsAzqqorySMkUckiP2tm90xoQqIKu5rpQeppU5OFAqWNAoJPR DzBzDa7DBHrRri5uG8O2totJmuJaV0RhiqhVWryyuVihiVpZXVFJ6gR0tXWUoGVmaGSZMVUPRYmt raOPHV9DVfxJhS5qkNPWVA1sKaZnMUFVDGpeiiLuhVNe29sdG2xAj/fkqq7t89Dao0HoAGZT/ojY oHYuVt831Bc8538qMaH6Pbria1toqHUFNzF4F7dMD2ySPJBBMoA+iiDSK4X9t5bJ5Lr/AOR8dfX1 VVFTdOb6amgmmdoKZqjrHJmoamp76IzIVUyFFGogFrn2OLCRriblu6loZHuJAzAAEhZ4wtaAcBge nWKPOFnDs+1e92wbeXSzttns2iiaSSRY2m2q8klZfEZiDI51Oa1YgVwBQZfcbdZ3de9+691737r3 Xvfuvde9+691ANYJp6mkoJIJaijR0q55VknoqCtemWejoapKd43kqHEsNQ9KksbLTHySSwmakFSs htYkhF3fEhG+BBhpKGhoaEKgNQXINWBVQxDaQdue/wC4Xm5Sct8qqj3UQAubiQaoLEumuMSIGRp7 h1KyLbI6FYmSWeSFJIPHdcRE1Pl6Oojqq95XP8Pd5qtgktFPkXqEjnoqMQ0hlRZBCKhKZJGRE1sz gsXot0ljnX6SOOFQcBUVjnBq7hnNRxGrT6KOivcOQrC72m4HMd3d7nK0bFmluJYoqqNS6LW1aC2Q IwqreEZaYeV6V6LP1Rkchl6j485bLV1ZlMrlfitufI5LJZGpnrshkchW5jrOprK6urKlmkmmmkZp JZZGLMxLMSST7EW8Isce+RRgKq7hGAAKAAG+oAPIDyHUKe2VxcXl/wC013dyNLLLyZfO7uxZ3do+ VWZmZiSzMSSzEkkkkmvRkvYL6yw697917r3v3Xuve/de697917rtVaRlRFZnZlVVVSWZibKqqOSS foPbQDatK9eZlRS7kAAVJOAAOJJ9OhYxHQvdufxWMzuD6n7DzWEzWPosthszido5vI4rLYrI0y1u PyeLyFHC8M9PPC6SwzROyOjBlJUg+xUvI/NzKGXb5iDkELgjrH2X7133cYJWgn5y2xHQlWVpwGVg aEEEVBBwQcg4PRN0xEm/ty9jUeJ6k+aXYmW687B3H1fv6bp7a/zBz+xtt752i8S5PZzUnTE/8Doc lj6eajXJUjwRVazs8lQrGYSySenI/NrWFqm3W1nGghj1rPBC0vi07yxeF2rX+lT5dYIXf3rPu4W/ OO/3POe98zXl025Xn0821brukVibHWPpVt47Xc7WEKIwASsIY5qx6iTbLwmPyE2K3D1T8wdkZOGj o8j9h2RXfMnrOrqKGvmnpqSroYOwMzjWqY3kpahNdOHAaNgbEeyncuXOZtnCHdW2m3EldOuG1XVS laVt80qK/aOpF5H97fYz3Le5i9v4PcPeGswhnFrue/TeEJdYjL6d6OnWUfTXjpanA9Kzb02J2rBW 02H2/wBpvBkJaaepj3DuHsHfAEtIkkUD0Z33mMmaXiVxJ9oYvL6PLr8cegO322Xl/AtvLuG1oitq pE0MQLUpU+HCtTTGa9TLynz3y3yduc287dybz5c3U0QhMl/BuO4ssQfXojN9uM/hqX7jo01IFehA jmyMsaOuDrAskauokym1YZAjrqAeKXIqyn+qsoIPBAPsjPLsYNDuFnj/AIa5/wCsXUsx+9N5IiyL yXzLRgCK2NqpznKtfgg+oIBHAgHqfjcruvBZKnzm3H3ZtLcdHT1NNjN17M31jdm7wwsdaqLWHAbu 2vmqTJ495VRUlkoquJ2S6MxQkEz2mHcdjuPqtq3e1hf5SOQcECqtCVNAzAVBpU04noBe4m5cl+7O z/uH3B9tt/3O2FaB7K3SRAWjdhHNFuUc0YZ4omcJIocxxlgdC0d9xbz7G3fXY2v3bn+zN2TYTzy4 WDePb1dvOhwtZVK8VTlcLQbu3JXQUda8MklM1bTRpP8Abu9P5PDI6McblvPMu72xtL3fLZozQlVd krpFBUrCGPzFaE5IJz1G3Ivtv7F+3G9jmPlT2n32K+USKsstpFcFBK2p9CT7nJEprUK4QOiHw0ZY 6J0nfLk/+dFV/wDn42j/APXL2Ev6uR/9HGz/AN7f/rV1kP8A68t7/wBMXzJ/2Q2n/bf1gwMFTtbb +69obV23/dbZm+5I599bJ2xkNlbf2Rvashj8VPkt37Nw2RgxmUq41ssdXXUssyBU0yDQlhS26czt bmzbmCExmnGZycUpRvC1ClARRhnPEk9QLDyD7D2++x8yW3s5ucd3GHAK7XaLGRJr164BuIt5NYkd W8SJqoRGexVUSGlyrsZHwtW7uxZmbM7SZnZjdmZjkrkk8kn2GW2BZGLvuVoSTUkyyEkniSfCyT1O 0Hu/PawJbW/JHMcccahURbCzVVVRRVVRfgKqgAAAAACg6W3WnbFV1bufcstR1P27vz+9PV+QwKp1 btvC76lwJTuDY2UOX3RFisnqoqA+D7cVLggzyRRgXe4mL2e21bC7vmW5hn1pGKRMzEUL/FqRaV8u PXM/+8o54n5t5f5Uhm2PdNo8G5vmDbhBDCsuqK3BERiuJ9RWlWDBaAilc0+mL7nTrkv1737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691Hq/8AgLU/9Q83/Ws+/de61Ff+E5H8sL+Xd37/ACd/ih3H3j8L Pjb292rvqv79qN29gdk9UbS3puvOPt75Jbv2bg46vMbgpqiYR0uMxtFSQwoyxqkQIXUzs3uvdbSX S3x+6I+N2022H8fOmOq+jtlS1v8AE59qdSbB2t15gKrKfaRUDZWtxW1KWkhnqmgghhaplRpWSNFL EKAPde613vi1vim+A3/Cgn+YR8fe7q1dqbF/mk4jpD5E/E3fe5JqCjwO8Oyev9v1u1t9dTY/LwhU GYrKuuygx+PrHSR48ZAkKvPX0/3fuvdbQPv3XuteT/hSV8gKXB/A6r+EHXgh3Z8rP5im9thfGzoP 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 T8QN1tk02V8nOgdi9a7R643f1d3ds5ZItxbH7Ch23Q0U+Q+zmqaibD11amuSknGqOlqfuqSD3Xur EnzXQ3yIwvbHVcmV6p7t29gsnlOqO7uvnrNqdh4fE5ifGRVOZ677L2uWq4YahqWpiapxeShD6HGu Pn37r3Wuf8YuvMr/ACgf5yvWH8vjpXceUy/wE/mKdU909tdN9JZbP1WZrPjD3Z0zg33hvaPC1m4K mtr5dv5DG0T01CQ8JkNTDTzipfDfdTe691tIe/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917oDvkl/zJHf3/UBjf/d7S+/de6HH37r3X//U3h+v/wDmcff/AP1H9af+8NH7917o cffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+690A3yo/7Jh+R3/iBu3/8A332R9+691p29F/8AH5/JL/xJfSf/AMAd057k3k7/AJJb f81G/wCOp1N/t1/yQJP+asn/AByPoxfsW9SF1737r3Xvfuvde9+6901ZnD4rcWHyuAzlBS5XCZzG 12GzGLroVqKLJYrJ0rUWQoK2B7q8U0LvHIhFipIP19tyIsqGNxVWBBHqDg9MSxpLE0Mgqrggj1BF CP2dBT0vl8rDh8x1xuivqsju/qnJR7Tr8rkpGlyG6dsPSLW7A3zUTuqmolyeKaFMlUxxrD/FqfJU 8VxTn2jsXYI1rKavCdNfVeKt+a/zBr0XbXI4jawnNZLc6Cf4lpWNvTuWlcnINehr9mHRx1737r3X vfuvdMWC/uL178hfjf8AKfd+0avd7fGbfGX3TLR42r3PHmKTaO79tVGzt75vA43b2Qo46/IYikqV zdLQ1lJXisWjlxsFMtRXpUwBrmbbfrrAyRCskVSPmPMcR6edaCtBUjoE867L+9NrM8QrLACw9SvF hxGcYrUAaqCpHV8H8zPc+1esfjZi/n7tzM4v++nwuqKTvfrfcWOWtzGP7G2PuaOm2x2R0jLk9tx1 V8R2Jga3+FU2QnWTG43KjC7kq/2sIkscVEFSVYUIwQfLqBmVkYxuCCDQg4II4gjyI6JdVfzkO0fn UU62/kp/H7IfInNZHF43++HzL+QeJ3P1H8MPj7VZumhmaky9bkKeLO733FjBKy1+2ttU14X0yCoq oknjX3VehR6h/khdJbk3inf38yzeuS/mhfKWthqVbdHyM29ipvj71tRZCoWqrNodFfFpTUbVweI1 RweT76nr6iaSMziWDyvCPde6Zeyf5LOH6W3hle//AOUV3BW/y4++avwVm5OsdtYybdXwi72ehaNq fC9w/G2rdsfjmkhiNBT53aaUVVj45p6iGmnqW1H3XukBnf55Od+HG2d37J/mu/FreHxV+Q+29qbk yPWGd2C+S7D+JXzA3VhcZPW4PaHQne8MElPhM1mmgGjAb0+0mx8ciNV1RY6ffuvdH6+HWW626K+D I+WXZvYuLy3+mXY9Z85fkn3nUYXdWAx25s12Jsek3vls9jtu7sp4c5R4PA7dgxW2Np4euo0rqXB4 vGUEkJqYmDe691W/0z/Jy2pu7F9v/NfeG5u8Pj3398nanszvU9E4TfuGj6z6ZrOxN313ZO1dq712 9vCkykFfmVpKv/f6JV5CTG0mayO4avbseHarFV7X2O53e3SiSByAOIrgj0oajzNMGhz0a7VvW4bR cLNaSMAKVWuGFSaUII8yRg0JrTqq7ovL/JfYeb/l4/zDfkV8Fu49y9XYel3Zu/KdrfGDbEPfC7J2 3uyHH4b+/E/WO1MhU7xpNv5qmoKrNUlRTY/J0pw8uKrJKtqueekxxjvO9jd7eJXTTJGTUj4TUDhx IyPMngD8gdcx8zjmG0t0ki0SxFixHwnUB8NSWGRkEngDXNBZR8tv54nw8+S3x17P6G+L+wvlL8le 7O1Nsw7d2z05sL4nd05TcOWpq3cVLQ7hTN0+UxVPTYwQUYqXkXMTU6gqPKBGWYB/oIde+Bf8q/5I 7z6P6Sh+YmUy/QlBgeq9kbd3j1ptncGG3B3tvLNYvZOPw+bn3V2PgZ67EbUgmrosgxiwU+Sys9PJ TVKZTb+QSalQWT81XH0SWloChVFUtXNQACRx459CDQ6uK9D+657ujtce37epiKRqheo1VVVBI40B 7sCjAhW1cU6sd6l2Ptv4DfKdOl9q4hdvfFz5pV9ZuTqkNLW11P1t8vdobP8Auew+t6zN5KSaqel7 E2th33fhvu5XIzeG3Q89S9RmqCnIWklklYvIan/Oa/lknoCzTy3EhlmYsxrk/Mkmnpkk0GM9G6+U fy6+Nfwr6sync/yk7k2T0z13ilmVcxu7J+GuzlfDAakYLZ+3KJZsnm8nIis0OMxFHU1UgBKQkAkU 6a6pxXv3+aV/NWmbHfEXZ24v5XnwbyUwiqPl335s6lyHzL7w2zLYTVPx1+P+Vf7bZ2Or4C5pNzbn Z6l4J6XIY0Rzwz0g917o0nT38in+V11bsrMbb3Z8U+t/kxvTeH3VZ2P3v8ttvYb5F9+dibiyUcqZ Xdub7P7HpqutochUmZ3eTBfYIrhJI40kjRx7r3RZar+XP83f5bFTU7w/k/8AcEfZ3QFJUVeTzX8r v5c72zOc60iopCaiox3xP+QmclnzWxqw6SlDh85U1OHkqaiWrrqmyLEfde6DXtL+dT1F8l4etv5f WR238gvhL8z/AJO9vbI+Ofc3UPbewd1YDtPpHrXftb/C99b3693Jt6kqaXORbjp/JtfZ+68DNpx8 2Ti3PWigxuJqpk917qzb59U20tufE3G/CnrTYu0cnun5V4WL4Z9A9TVtFWHZOFweZ2VUY7c279xY fCyQ1C7S6+2dRZLcmWjhli80NBBi4JkrcjRrJ7r3RPu1P5SezOgOmqTK/GjtSbaWI6m6/krd5ba+ QW6s7uPY+8KfaG1Iv47vms7NqBW5na+TrWopctmq0QZPGSTS1Uy4mnqKiWr9iPauY72xIik/Vj/h 86+VD5VP25JJBPQz2DnLctqZbeb9eHPYRVq+QU1FKnjxyxYhm41jbZzf95dubf3GMTmcCM/hsXmh g9yY98TuLD/xOhSuGLz2KkLNTVtPr8VVTsSY5FZDyp9yjBIZoVlKldQBoeIr69TnbTG4t0nKlNah tLcRUVofn/qND0oPb3Svr3v3XukLWdl9cY/e+K60yHYOx6HsnO0D5TCde1m7MBTb5zOLipqmqlyW L2jNULkKinWKjq5Gmip2QLBMxa0TlUzXNuJhbtIokPBajV+zj0ia9sluRZmVBKchCw1H7BWvz+zP S69qelvXvfuvde9+691xVtLIwtdX1i/0uG1C/vRFRTpphqqjef8Aq/ydGr2R83vkt17svaGwdubw 23Ht7Y+18BtDAx1eyMRV1UeG21iYcLi0qapmBkkEECB3Iuxufz7Bp5MsySwlcfKg/wAueo5b212w sT9RIK+QC0HyFQT+0k/PpVf8OG/LD/nstqf+gBhP+j/ev6lWf+/n/YvWv9bTbP8AlIl/Yv8A0D17 /hw35Yf89ltT/wBADCf9H+/f1Ks/9/P+xevf62m2f8pEv7F/6B6IPtHbdDszae19n4t6iXF7T23g tr42WrdZKqSg2/i4sRRS1UiBVaRo4VMhVQC1yABx7FlrAttbpbpkIoUfYBTof2VqljaRWcZqsSqo r6KKdKX2o6W9e9+690k950FRksBJT0+BoN3JFlNuZDI7Jy+VXCYTf+AxW5KTKbm673DljTVZhxu4 MdDVYXINHEJDT1MojlgcrPGW7rBPc7fLBbGjsKDNP5/Ph9leiXf7W7vdontbI0kdaDNPtFfnwPyq OPVkv8vv+af8DOrfghia3tntfNdH786i6+3f2X8iMJ8j9t03VnZ3YHcFTkqre/yM3ptLEioqMZun KZXeOQydRVYnaeSyFVQ1lbTY2rp6SpkgpjDUkMsLaJVKkeRFOBof5gj7R1jbNBNbyGK4QowrhgQc Eg8fQgj7QR0L/wDJL2F23m+n/kP85++9iy9Ydp/zJPkduH5R4/rOtpoaPNdb9Eja+M6/+O2ztzQw qobJjbWKhytZMwWSRq8NPFDUeaJKdNdGp/mxf9usv5ln/igHzI/+B13H7917oQP5e3/ZAvwe/wDF QPjT/wC+Ywvv3XuiF/zptidrbO2h8Wf5iXRGyajszsv+Wf3pke99z9a43H0uT3D2D8at7bByHWfy b2vs+mq7KmYXb9YmUo6gsTCtFLJHFNULAnv3Xugj+f8A/NH+DfdnwsyeO6G7HyPyL7M7P2tsnsTo Kj+PmMxu99w9W9x4iqpO0Oh977+r8jW43FbdymA3BQ4rL1G1MrlqfcFXBT1MVHi6sJUBHYbea4kE UKlmPkP9X+rgM9KLa1nvJhb2ql3bgB/q/wCLNAMkDqtXrzFZbC7VpsZlsBtnaTU+V3Q2G2bszL1O e2rsjZ1TuqtqthbFwGYrcXhZqmmwmDfH4qOWXGwswp7t5D+48y7bDcW9hHDdEGRRQ04cTQDAwBQY FBwHWSOy215abXDbX7BpUWjFeHE0AwooBQAAAClBgdLn2YdHHXvfuvde9+691737r3Xvfuvde9+6 91737r3XvfuvdM3xr6q2z2L8tPlXmN0wd65+l2N8T/iNW47Yvx9ouu8jvneGY3P8gezNo46npqPs ijmom+2arMryPXUcUUJnmnlKRjSAuZ9xvdv3JTZvo1xLXANaM9OIPqeol533rcto3mM7dKYvEgXV hTWkklPiB4VPDo0eyaH4o7x7QwPVNd1t/Nh2DlM/XUFB/evfnQ3UeN65wrVdNUZKsq9yb8w+36/H 0NNRUVOaupqZpRGfJFSwNPXv9oA9/WTe/wDf5/3lP+gegj/XXmf/AJSj/vEf/QHT5WdUdD7v2535 g9oY7+Yj1l2H1d8ed+9w43P9zdQdY7a63FTiNjRbp2zjo97x7TqsPW19QtbS1K4qGsacxw1iSLHJ R1UcXv6yb3/v8/7yn/QPXv668z/8pR/3iP8A6A6qY6M7tzWwM7Dt/wCSHSH80bvDrWpxlJkou7eq /ifsTbe8sS1QlDH/ABeh2Rhds5HC9gbTrJq2SooNy7VqcXlaWnikp63acj0OQyMfv6yb3/v8/wC8 p/0D17+uvM//AClH/eI/+gOjJwd2/A/5Ebi6k2b8c8/859yyV3zR+MHUO+a3svrXFdfdW5bB5rv3 DbX7T2bUb+2xgsNXR1dNBI2NylNQZKKppKipp6arWM1SJI1Nvu7zxmKWclT6BR/MAH+fTFxzZzDd QmCa6Yq3GgRT+1VBH5HrZC/4bT+F3/PpMp/6Nzu3/wCyT2h+su/9+v8A703+fos/em5f8pEv/ORv 8/Xv+G0/hd/z6TKf+jc7t/8Ask9++su/9+v/AL03+fr3703L/lIl/wCcjf5+ix/Cj4B/FPsH4a/E nf29OvNwbi3jvj4ydC7v3ZuDIdvd1PkM7ubcvVeKzWezNc8e4lUzVVVPLPKVUAsxsB9PfvrLv/fr /wC9N/n69+9Ny/5SJf8AnI3+fozn/Dafwu/59JlP/Rud2/8A2Se/fWXf+/X/AN6b/P1796bl/wAp Ev8Azkb/AD9Fi66+AXxTyvyk+TWzch17uCr2xtDZXx3yG2sLL293UaPD1u6aPdT7hqKNRuIMGqzR Upl1Mb+NbW/PvrLv/fr/AO9N/n69+9Ny/wCUiX/nI3+fozv/AA2n8Lv+fSZT/wBG53b/APZJ799Z d/79f/em/wA/Xv3puX/KRL/zkb/P1q3/APCuD4wdL/Gr+Wh1ZuXpHb+4diZfe/zM60693fLTdldn 5mj3Jsmq6a7B3jNtvM4ncmZrKSemOVwuJrwskBKzUsLqQUHurXVxICjyMwPkWJH7K9NvfX0qGOWa RlPEF2IP2gmnVEHU3YPWtP8ADD424uq7z6goMvQ/7K1/ENt1vzw+J+387hv4f2rtqoyX8V61zOwa jN4X7GKOSes/ieTqf4XHHJVV33VPTTxSsdJOjF7z7P6ml7C6cmh+RfRlTT02c3g9XVwfzIvhVkqX HJJsathilrsxQ9aRU2NWRyIklrYZlmdhBGqSusi+6917EdndTL3b2FVv8jOjI6Obqzp2nhyb/wAy L4VU+Pq6mm3bvqSroabc83WjUNZNTpNDJPQU1LHPRrPFLUyzR11KkHuvde6z7P6mgr+1DU/Izoyj Wo7Ty9RTPV/zIvhVg1r6Ztt4mNK6jlynWk618LMrItfSCKB2Ro1iDxSM/uvdBZD2P1ePh3tbGf6f umBlo+kNh0km3T/ME+IC5uCsh2xQRz4ybrg9eHNQVETBkkxcuSeqgZTFLPI8bs3uvdCn2F2d1PNu 3ouWD5GdGVkVJ2ll6itqKb+ZF8KsxDi6Zukt40iV2Qr8d1pDDioWmliplr6+OeB5ZoqJYhVVlNPD 7r3Xp+z+pj3ZiaofIzow0S9V7hp2yQ/mRfCl6COpfduMkShk3QnWgoY5nRWkWgelM8iq0qSrHE6N 7r3Q3fBXdO0c98u+50232TsPfEjYLfdcsW0fkt0j3pI9Ado9KUIzCUvVW2MDI9L9xFNR/wAZVxRm eGXHCm+8o6mpmx/+8j/yoMP/AD2xf9WbjrJ37p3/AE8u5/6V8/8A1fturmveD/XRrr3v3Xuve/de 697917r3v3Xuve/de6Jz87/tR8a93NuDOdg4brc5zZVD3PB1LjJa3tPcHTOZ3fR4HsjbvX2QSoiT HZGox1VK4rpoKqIQpNBJSyLOWST/AGai2+T3BshuMSSKCxXxGCqjqNQfSQRIQAQqmlCRIDWMAwv7 +SbpF7X7i+1TSRMQquI0LNJG50NHqVlMasWUs41alBiKkSEjYt7d65/lZ7I/ll7L6r3P1X1jvj4B 7j2LsXb3RnUux9uTb5n7bq+wqMVXVOK6JxWIZ8zmt67knrfvMRksdUfxWernmyU1ZGwqqtOiPXLD op/wD+NlZ8Ze3/gT0jjafJYXuPqP4pfJ2D5EY2o3c3YO7ttfFXc/dgz3ww6g+Q++sc0mNyW58LNk 5afBywWpfPit4nbRiwpqopfde6MZ/PynSl/lL/LOpkWZo6eHpGeRaenqKyoZIfkfs+RhBSUivLK5 A9McSM7GyqpJA9+691YL8Tf+yWPjR/4r/wBNf++6xvv3XuqAO8/it1/3ruXuPO9y9I5j5E74+P8A /M5z/dnzE6d2/WZb/TR2r8O8x1huDb/xWm2rhhURVG79kbewWU27kP7k0AFJmajB7lxVCtXnIcji 8mmltLOaeO6miR5YgwR2VSyBipYKxFVDFELAEVKKT8Ioriv763tZLKCaRIZipkjV2COUDhC6ghWK iSQKWBKh3AoGNTj/AM2XsD4FVf8AKO7D7V3tV7TzXSMPWVHWfE/J9TR4uDOzdu5fBTYLofCfH/8A hMDmlydZWSpinoqam8Ixr5ClycBxYyEPu1xFbzwtHdAGMju1cKDNflSla+RFQQR1S0mube4SWzZl lB7SvGpxQDzrWhGQQaEEGnVVXUcW4oOqus4N35bN57dUPX+zo9y5vcuAg2ruTMZ1NvU65bJ7i2zS VNZFj6+ecSS1tFFVTJDMzxpI6qCeXvMbWbb/AHp2+NIoPGk0LG+uMKHIHhvpXUnmh0jtpjrsZyot +vLO3jdJHmuPp4vEeVPDlZiik+Kmp9MnlINTd4OehF9lHQj697917r3v3Xuve/de6DL41ZPoF/5w Xxz2j8nMlnKyk3D0fubKfE/be6sPicX0aPkrtffNJlWqZs5W1LyZ3eLYxFqsLj56aKjxlTR4upiW ozVZiZaXMT7tUW1ybJezJFGLqOYBn1hpSpTtJTSPDjALKjam1MZvhyDgP97ebeIuYdvgeaU2csDF Y/DKwhlfuAk1ESykhWkXSmhRBXUaEW4/zEejOgflV8ifjNsnb3VmB3z8s+gO3OjO99x9xQywYnFf Gz46bU7VoN4b6pu99wwzQJlMXvbE4vMYLb2wa41DZSplmyS01Pj8ZkMlTZJXlpaX9u1pfRJNE4IZ JFV0YEUIZWBBBBIIIyDTrEqyvr3brlL3bpnt5oyGWSN2R1IIIKspDAggEEEEEA9GK/ll/wB3Kjpn tbL9UvS/7LDnvkz3HlPiPSYmF6batJ0QKuixsknXtNINKbUrd4U+7cntL7X/ACF8NVUMmKC4l6FV VdJegM7oroY/50fxExrJWfcVfxz3jXRSJj8hLQRw4/E9h086VOVjiNLDMzVUZgp5pllmVZXhSRKe do/de6N//MPx2+cr8JPkrRdepvGfPN1ll58jQdcvkYux8zsSinhre0Nvdcy4X/Lk3Dktsx5egwb0 BFUtdNAaYicRn37r3VWHTHQnwh61/mZ0fyn3tsHZufwHya61+Puwv5V/ftDXU27PjTsDYPXnSeJw cfQXWdFWPNj9mdg5Sspcxndv1NHHBTZnCzijwskeWh3DDkvde6Lv/Nw2L8ZtrfzLfiZunqmObaXz L7N2N2I/yHn2JjYavB7y+Ou3dvyPsiq7/wAZRz06w11VmqGSh2hnZlaaU0NRTTLUxUVEtLDXvstg fby5e8jSVkZDHqYKyuWCB0NCSV1AsoprWqEgN1Pf3bX3Me6VolhK8KOkglKqXR4wpcxyCoAD6CFY 10PRwCV6TnvATrp51737r3XvfuvdG+/k3f8AZVH8xr/w2fhV/wC6PsH3nv7Af9O1tv8AmrP/ANXD 1zK+85/09m6/5oW3/Vode/m4/wDZbHwM/wDFWP5iH/v2vjZ7IfvLf8qLZ/8APfF/2j3XQg+6V/08 e9/6Vs3/AGlWfRQfeE3XRXr3v3Xuve/de697917r3v3XuurG54FgVv8A4ahdb/645HvbQTRxrK6M FbgSCAfsPA/l0mS4t5JGhjdWdPiUMCR9oBqPz67966U9Va/zp/8At2Z8m/8All0x/wDBB7T9y57D /wDTzdv/ANLcf9o0vUE/eS/6c9uf+ntf+0uHqrXD9g9ar8Mfi7jH7z6gjy+P/wBkN/iO25Pnh8T6 fO4P+EdqbEqM3/F+tZtgtm8F/CooZ58j/FcnVfwKOCaqyv38FDVRT9BOuX3Q4b77M6pm7l6HqoPk P0hVUlH/AKUPvclT/wAxn4Y5WgxX3G1IUpv4juTH9bxUOJ87Axw/xCmn+6YGKDxSAufde69gOzOq U+SXbFc/yG6Qix9R0h8fKSlzMn8xj4Y0uKr6ui352bNXYyj3pUdbvjMhUUiT00tTi6OiiqselTBP WT1EWToY6X3XuvdJdl9U0v8Apc+8+Q/SGM+57v39V0v3/wDMZ+GO2P4hRzfaeDJ0X8d63qv4jTy2 PjylH4aWex8UEehr+690iIex+rx8O9rYz/T90wMtH0hsOkk26f5gnxAXNwVkO2KCOfGTdcHrw5qC oiYMkmLlyT1UDKYpZ5Hjdm917pb9sdmdU1G/PjLNS/IfpCvgoO7s/V5Gqo/5jHwxz9NhKN/jb2DQ pk8tlsR1vT0+Dp3qJoKJcplIaqlknqIcckC1uQo6mn917r3+kzqn/Zkfv/8AZh+kP4f/AKEftP4x /wAONfDH+Ffef38838M/vp/o3/hn3Gj93+F/ZfdaP3/P4v2/fuvdAVh9xbWz3yP7jbbu/wDZe9kf Pb7ro5Np/ILp/u9JqB+pOgaBMxFU9XbdwSTUr1NPVUK5mJVo5KilqMYlMtdiq+qq4k95f+VWi/56 Y/8Aq3N10X/uw/8AxIW//wClHef9pm3dDf7xj675de9+691737r3Xvfuvde9+691Nx//ABcKD/qM pf8Arcvv0P8Aaj7R/hPSPcf+SfP/AM03/wCOnr6E38vb/sgX4Pf+KgfGn/3zGF9579fIF1rafyaP ib0D8pPlf/Pdqe+9hy9iSbD/AJtnyYxOzo6/d++sTSbex2a7U3Nk8rTY3H7dydHAgqKgCaVjGWZu SfZbd7NtF/L9RfWkMz0pqkiR2oOAqyk0FeHQ35f9zPcjlKwO08qcwbltlqXMhhtL66totbABn8OG VE1sFUFqVIABOB1fz/w0/wDy/P8AvHjHf+jA7Z/+v3tN/Vrlz/o323/OCL/oHo9/19fe7/pst8/7 m1//ANtHRL/lF/Le+F+ze8P5cG3dsdMjC4Ttf5n752B2NjaPsLtVabd2zcd/Lx767TodvZZXzhLU 8W4dtYHLKEKnz0UJvpBU+/q1y5/0b7b/AJwRf9A9e/19fe7/AKbLfP8AubX/AP20dHQ/4af/AJfn /ePGO/8ARgds/wD1+9+/q1y5/wBG+2/5wRf9A9e/19fe7/pst8/7m1//ANtHQL/I7+WF8GNo/Hnv jdW2+iaXE7i2v0z2huHAZWm3/wBqGpxeZwuyK7JYzIU/lzrLrhnijkTUpFwLgjj3o8scuEEHb7bP pBGD+0LUfaM9Xi9+Pe+GVZk5w3slCCNW6XrLUGoqrTlWHqrAqRggjHWk7u3b/wDdzf2+sJPPiK+t 2ju7dmwpKzDtUy0Sz7S3JNg9wQwNkKWnmjvkqSeJxGfFNDT0khRJVYDETmGyk2O5fYHI1xOWlK10 s5roAJAJVYyCtQCDI+M9fSF7L8z2Xuvslv7w2qyC1v7dIduWfT4sVsqp9UzqrSLHcT3ySRz6ZHV4 7S1IYgVLR7D/AFOHQA9uOydafKJ1ZldekN+srKWVlZerMsVZSOQQfofck7KBr5XB/wCUmT/tJj6w R90mZLT38ZCQRsViQRggjZbyhB9et8H4UfyzPhB2F8NfiTv7enR8O4t4b4+MnQu792bgyHYPar5D O7m3L1XisznszXPHnVUzVVVPLPKVUAsxsB9PeSf9WeW/+jfbf84Iv+geuHP+vt73/wDTZb5/3Nr/ AP7aOjOf8NO/y+v+8dsZ/wCh92x/9fvfv6s8t/8ARvtv+cEX/QPXv9fb3v8A+my3z/ubX/8A20dE w+O/8t34W7q+TH8wDaO4el0y22use6Ol8BsHD1XYPajUe1sNuD4obI3rmcfi1XOArHUZXI1tdIGL HyTOQQCAPf1Z5b/6N9t/zgi/6B69/r7e9/8A02W+f9za/wD+2jo5/wDw07/L6/7x2xn/AKH3bH/1 +9+/qzy3/wBG+2/5wRf9A9e/19ve/wD6bLfP+5tf/wDbR1TL/Oi+E3x1+OXS3Wm5+geqMftDcmW3 ll8dkm/vtuyeLK0UGEWppMYz7wyVdTQyS1PiihljhMoZ9K6ldkYC+4PKG2T7D4m3WsMDRyI0kiLF EUh/0RvwBiBSi5Y/CoyQcsfubfeR582v3c+i525h3PdobyzuIrS0ubi+vluNxIAs4gALh4VdmfxJ SFhQASzMPCRl1sKSB6akgp3qZqt40IkqqhadJqmaRjLUVMsVHHFCjSyM8jJBFHGCxCIi2UYw3dwb qdpiNI4Ko4Kowqj5KKCpyeJqST13q5f2aPYdpi25ZDNItWlmYAPPO5LzTuB2h5pCzlVARK6EVUVV Dvj/APi4UH/UZS/9bl9tw/2o+0f4T0t3H/knz/8ANN/+OnoqvS/+Z+Nf/ipWe/8Ac7rH2NN74b7/ ANLGP/j991ir7Vf23tH/AOKVef8AVrlXozvsF9Zbde9+691737r3Xvfuvde9+691Nx//ABcKD/qM pf8Arcvv0P8Aaj7R/hPSPcf+SfP/AM03/wCOnr6E38vb/sgX4Pf+KgfGn/3zGF9579fIF1WB/IL/ AO61H/jf7+Y3/wDKb7917oiH/Chf/spXqb/xB23v/e/3R7gf3w/sds/00/8Agi667f3Uf/JT54/5 pbT/AMf3HrX69wB12T697917r3v3Xuve/de697917rPPSVVKV+5p6in8gJj88LweQD9RTyAXtcXt 700ckdNala8Kgiv2V6TW17ZXmoWkyS6DRtDq2k+jaSaH5HrB730p6MV8Zf8Aj7ezP/EH1/8A7/Xr 73OHsh/uZuH+kj/48/XJj+9a/wCVa5M/56dw/wCrVr19Gj3kP1xd697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de6xSx+WKWK+kyxumq17a1K3txe3v3XuiD/AMr/AOC9N/LX+DnSvwuo+zZ+4abp2Tsm SPsWp2hHsSbcH+kTtrO9puH2rFksutL9o2bNCLZCXyiES/tmTxp7r3R/ffuvdEQ+f/8ALh+LP8yr qSh6o+TGz6yufbOSmz/WnZu0Kyl292z1Fuapjjiqtwdb7xmp6o0Us6QwrVU89PPSzmKCSaneampp Ifde6qfpP5XX88HqTDnrP4/fz6dwZLqVnmoMRW/Ir4j9Xdu90bM2+JyKGOLtLc02SyGdrkpI6ejm qa+emVmM1VTx0krKqe690Z7+X1/JR6w+H3dGW+YXfnenbHzx+d2fwlZtyX5O9/VctTUbHwNfNWR1 mI6f2XV1eSXbyT0NX/DZ5v4jUyJSrLTUJoKSsraWo917o1f80L4IRfzJvht2D8R5u0ZOnE33uLrP cQ3/AB7LXsBsVL1v2LjOwYKU7WbK4UTrVvjVpXb+IxmNZC4DlQp917qwb37r3XvfuvdUad0fyo/k PsTvjtr5M/ywPnPmPhTvXvzcNVvzvfpfe3Uu1e+vjp2r2PUVMVfVb0i2xuOSCr23kspKtV/Gcjjm nnmNVI8H24RYm917pa/EP+V12psn5IUHza+f3y7zXzn+V209rV2zOnMmOtNt9NdQ9AbfzuObGbpH XHW+1JZKaTJ5GKWpinzEyxStBUSRSRSyqlSPde6E/wDmi/y695/zC9p/Gik62+TFZ8U+yvi18m9m fKPrrs+h6iwHdM1NvjYODyWM2zGdobqyuMxzinqq+OuvWrVQuYBFLTOkjW917oEOt/gb/OB2t2Fs bcu/f57Wd7Q2PgN27ezO8et6v+W38UNpU+/dsY3LRVmf2fJurbtYtfjBkaVJaQV9JeWnMglRWZAp 917ozXSHwBl66/mAfKn+YN2R29J212L3vsnY3UHVO112dlNqYT47dJ7Ol+8rtgYCav3Fm48lJmqy mxuUylfBR41XroqmdKVFrWii917qxz37r3VevanwOTd/8wX45/zB+ue05erN+9V9Y9gdGd07STaN XubE/I7pjdkyZnbOzM5WRZvGR4ifb+Z8uZoskKCukkmFPHKngpljf3XupXz5+CdN85v9kz+57On6 z/2UL54fH75vU/g2gm7v7/VPQ/8AFvF1tN5Mnjf4ZHlP4odWWX7o0/j4o5tfp917ox3yd6Z/2Y74 1/IX48/3k/ub/p46O7Z6Z/vf/B/7w/3V/wBKGwshsj+8n8A+6ofvvsfvvuvs/vafzaPH54tXkX3X uk38NvjtF8R/ih8dfi7Du6TfsPx+6c2B1HDvWXCLtmXdUWxduQbejz0m31q68UTVIgEpphWziMnS JXtf37r3VSHdX8ilttd374+UH8sH5mdufyzO6uza1cp2dtrr7bOA7S+NfYeTpzUVcGQzXQO55qTG RVT1U+tpHkqaWCMGKioKYSTGX3XugS3j/Jg/mf8AzDVNifzGf50W/uwfjpLVLjt4dH/F/obZfxyH a21IaSWnah3jvLaM1IoNZMYauroq/EZWjDIY44tPheH3XuthDoHoHp34t9O7C6C6C2Fgus+pOs8F Bt7Z2ztvQNFRY6iiZp6mqqqmdnqKyurKh5azI5GsllqqyqllqamWWeWSRvde6K38YvgjF8b/AJk/ zC/lxH2jJvF/npuP497in2A+y1wK9WS9DddV/XwpYt0rlaw5pcqlYlUWOOoTTNGUtUCQNH7r3VgM 8ENRDLT1EUVRBURSQTwTxrLDNDKpSWKWJwVZWUkMpFiOD7917okXwd+AnR38vzDfILZnx5xx211v 3t8jNyfI2n2FBTiHD9eZzd3Xm2Nk57a22mEj3xhqNutkKOLRGKdKr7VVZIFkf3Xujxe/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XumbcWJ/j+387gvuPtP41 hsnifuvD5/tv4jRPR/ceDUmvRr1aNa3ta4+vv3XuiVfyz/hNF/Lp+EPRvwyh7Jk7fh6VpN90cPYk u0F2HLuKLevaGb7IjaTaiZPMClalGYFESMjKJTD5gIvJ4Y/de6Snzv8AgMPndvj4cwb87Kix/wAe Pjp35H3/ANs9CT7JxmdpPkDufaGEkHUOPze58lOy0eLw2UeebJ4lsbUR5SnqnVpaaSmgZ/de6sZ9 +691X1/MM+CEXz12z8Xdtz9oydWJ8bPmp0N8wxVx7LXerbzl6POVeDr3wtlcT/DlyT5JS+V1VJgW IgUkpkDR+691YL7917pm3Fif4/t/O4L7j7T+NYbJ4n7rw+f7b+I0T0f3Hg1Jr0a9WjWt7WuPr791 7rWZ+Of8jT+Zd8S+mNk/Hr48/wA+bsHrTpzrmDM02zNkY74DdFZmkwcG4Nx1m7cwkOT3PuWurpfP ka+sqWNRVSENIVUhAqj3XuraPgn8V/mt8ccj2TVfLX+Y9uj550W7aLa1PsfHbj+OXWXRA6zq8NPX ybgrqOq69rqxskcqlTSRyR1QUQfaqYyTK9vde6UP8uv4PxfAHo7d/S8PZknaybr787s7zO45NnDZ DUMvcu8pd4T7ZGJXKZYSrj3laBKv7lTMoDGGM3B917oJ6b+WiOuf5j9Z/MH+NPd1X0RTdv7UTbHz O+OcOwF3b1b8pa7F6l2p2TUFc3ixtnd+NVuM/R0VW8xVvLCVrcuuT917oBvkd/KV7cxvyj7C+cH8 sn5fVfwV+QXdWIoKX5GbHy/WGE7i+OHyKzW36iOfAbw3h1tl6imjxG4GjFRSV+fx6TTyJPNUQRU9 dU5Cqr/de6XXwh/lZbw6Y+SW6Pnf81flBuD5t/OPcuwoup9v9jZDY+C6x6w6V6rHiqqvZHTXV+De enxrVdWKueuyUckTTLUzKKeOSorp633Xurjffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+690B3yS/5kjv7/AKgMb/7vaX37r3Q4+/de6//V3h+v/wDmcff/AP1H9af+8NH7917o cffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+690A3yo/7Jh+R3/iBu3/8A332R9+691p29F/8AH5/JL/xJfSf/AMAd057k3k7/AJJb f81G/wCOp1N/t1/yQJP+asn/AByPoxfsW9SF1737r3XvfuvdFJ2f83fjdvfurfXQmE39HDvvYWUO 3shNm8fW4DbOc3bR5GPFbg2dtHcuXWGnyWUxVRU0EVdSQMWvWU/25nBlMRPFvm3S3b2QejpipwpP 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 mChZlkSqmhTprP5bdfUHVe6M/V/f53cnXGxtwZqu8FNS/e5bMbYpcjkqz7aiSOGPyTSO/jijVFvZ VVQAMLOYbWCx3++srVdMUNxMiLUmipIyqKkkmgAFSST5knr6jPZrf925r9oOVOad/l+ov9y2fbLq 5l0oniT3FlBNNJojVI01yOzaY0VFrRVVQADp/GX/AI+3sz/xB9f/AO/16+9y77If7mbh/pI/+PP1 zg/vWv8AlWuTP+encP8Aq1a9fRo95D9cXeve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de6A75Jf8yR39/1AY3/3e0vv3Xuhx9+691//1t4fr/8A5nH3/wD9 R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3XvfuvdAN8qP+yYfkd/4gbt//AN99kffuvdadvRf/AB+fyS/8SX0n/wDA HdOe5N5O/wCSW3/NRv8AjqdTf7df8kCT/mrJ/wAcj6E3s3sfbPUmwd09k7xnqKbbe0cXLlcm9JCK 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 n/6uv13V9iP+nHcmf9KLaP8Au32/QreybqVuve/de6NP1L8FPmv8gtijsfoP4wdidr7RfI5PF0uZ o871Z1xR5SvwWZmwGdTBVveG4tq02Rjo6uCannnoJ5ohLHLCrtNDPHHIGz+2HNG9WaX0IiijkFV8 RyCRQEGiq3Gv2g1BoQR1hd7l/f29hPa/mW55U3SS+v7u0YpKLK2jkRXDMjJrmngFVKk/wuhSSIvG 6Oxf98bH3p1hvXdPWvZW18nsbsbYuTiwe+NkZyTHyZvamclxlPmkxeTkxE9VSSF6SrpaumqqOqnp aqmmgq6OeopJ4J5Anvmxbhy7uDbbuShZAKgiullqRqWoBKkggEgVpUYoTkP7T+7PJvvRydDztyPM 0tpIxjZXCiWGUIkjQzBHkRZVSSNnVZH06tLEOGVUx7K+pK697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6m4//i4UH/UZ S/8AW5ffof7UfaP8J6R7j/yT5/8Amm//AB09bn3wX/lx/FfdPwl+He5sxi+83y+4/ix8fM7lXx/z D+YeDx75HL9S4jIVzUOEwe/Kaio4TLIxipaOnigiW0cUaRqqjPfr5Auq6f5JXwU+OfZv/Duf97sd 2/N/o+/nffPfrDbH8A+UPyh2V4tobT/up/BYc1/cveWP/i2QX7iX7nN5b7nJVXp+6q5tCafde6LB /Oo+O3Vvx27/ANhYXq6l3xS4/cPT21splF3v292729VNWUu9d00kJocl29nc7U0cej9UFHLFGx9T IW59wP74f2O2f6af/BF113/uo/8Akp88f80tp/4/uPVNPuAOuyXVqH8r7+W1L8+tz733DvLdO5di dEdVZTC4Tc+49nx4b+9O8d/1dNDuT/Rrtmuz9NXUdF9rjJaCu3DW1FBM6UWSoqegUVVY1fiZj9uP b223yz/fm75hYssag8SuNZGQaPWisCp00ZHVscwvvtffP3r2n5h/1qfbchN0iSCW9uGU0RJh4n0q sCjoZLcoWlgZZlFwrQXFtNBWTZJzf8lb+XZl9gx9f0nT27Nv01HSwRYjc+I7z7zqd54utotUmOyr 5zcW4q/+JPBKRKaXNRVtHPYR1VLPBeIzlNyny3PbfSmxgVe6lIo6qWBFRVSKjiKggEDGBTk3tn3i ffDbN8TmFeat1luAYtfibheFZViZWEcmmdGKvpKyFWSR1eSr1kctrQ/ID+VZ8gusvlPvn42dOYTP 960m2+v9m9ubb3ZR0+IosvW9Y77z+Z2lt87zo4JIYIM7S5Lb+Uo8j9pBFR1QSDIUcdKlXJi8ZCfM vtBuC3/icshWt3qdDvRozXgC2WWnAkk4NTkddTPYv+8n5Nn5QFl77NNBvFsVX6i1tC8V2hX+0ZIS FilDAmRVSOMh18NcN0rPjh8Cf5i/xs+RnUnyT2R8YaubsDqfI51MNVbpwWOz2Nm27vfbtTszfGBr ocfkKGv+3q8bWSyRrR5GnKVsFFUyiojpmpZzTkblDnblfd0lmjR7VzSRPH7V1UBlCDDSItQKipUl QRWoAX3sPvIfdV9/vbe627a724t9/tk8SzuTtNZZvBEkibdJcOBJFaXExRn0yBElWOZkcIUazj5m b6/mp/Lrobf/AMeMh8GNsbM2V2BkMFRbkydJkK3fea3Ds3Cbkg3JPgZMLuiGhxmPGReipabItKuT BpJaqmgSKeSHIU0t8zDen2iWHYED3EgKAl/D0BlYeID/ABKaUAzU8RSvXOj2Kb2tt/cix3X3gupL fZbF0uXjjtWu/q3hmiZbSSIEUimTWJHaqhVKlW1BTS9RfynfndjqOkx2O+M26qDH0FNBRUNFRR4W lo6GjpIhBS0lJSwTKkcUaKqRxooVVAAAA945y+1PO88rTzIju5LMzTAszE1JJOSScknJOT12z2/+ 8K+6ntNhBtW1XF1bWttGkUMMW2SxxRRRqEjjjjQBEjRAFRFAVVAVQAAOsGC+OHd/xe7KyO3O9uus 91/k+y/j12Lm9lplUpnizND158guo6HdjxzUkkgVqaTcWJGlrFhNcX0n3JvtlydvfK9xdybsqqJl jC6XDZUsTWnDiOsDvv4feY9q/f3ZuXLH25uLieTbZ7ySfxrd4AFmjgVNJf4iTG1QOFM8et/v3L3X N3r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 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 jqkC1VBU1dFNT1MvuvdUb9+fzqO9u3u9OwfiZ/Js+IR+dPbHVtUcP2x8hd3broNmfEDqTPsyaMVk N6mtoFz04UVmqmpMxQyzGnY40ZGN/KvuvdIHd/zT/wCFHPxPxtR2x8kv5dXw2+VPSm3sZX5TfG3P gr2P2Zje7dv49ZhKmUxeB7IrcvNmBRwK33NBiMFVSzFhKssEUcgHuvdXNfA357fHP+Y58fsD8i/j TuarzG0clV1GE3FtvP01Nit9dd7voIkmymyt+4GmnqVo8jTrLFJaOolhljdJoJpYnVz7r3SU+QPz 365+Ofza+EXxB39JjMZL82dvfIen2ZuatyMFG+N7I6hG0chszbFQlVJHF4dxU+YzNHTEFp5MjDQU 1PE4nmaL3Xuj9+/de6JP87vnJ1V8BuqNkdo9qTRyQ9id89KdCbRw/nrKefLbi7Z35S7fyNXHPR0t YyphsJ/F9wTh4gssdA1OJElniPv3Xujse/de6Dnt/etV1t1N2j2JQ0VPkq7YPXe9d60eOq3lipa+ q2ttqpzlPRVMkPrWOV4BG7JyASRz7917rWj+I381v+ez8vuket/k71H/ACmvjXv/AKQ7SxOXy+z6 +l+Zu3OutwZimxObrNsTyGm3j9xNSFK6hnQpU0ALqoIKqwf37r3VjH8t/wDmzN80u3u8fiN8gPjN v/4T/Of444nF7o7M+PG+tw4zfmMyew8xUU1FR9gdddj4Omo6bLY0TVmPE0gpI4ildRS0dRXQyvLF 7r3RNOyf5qX81TfXz5+cXw9+BfwH6B+Qe3vhLnOksTvPeXYHfsfVmalj7w62/vzteWTH5+elgmZ5 aPLwEUTSCNKeNpdJlW/uvdLbaP8AOk+SvSHyj6L+Nf8ANM/l15v4Q4f5Q7tp+uOh/kHsvvjavyN6 bzvaOWmoqPbuwd25XZ+Npf4NNXVNU1MtRVT64pPHLJSjHfc5Gl917rYf9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3QHfJL/AJkjv7/qAxv/ ALvaX37r3Q4+/de6/9feH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 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 ar3/AAokzneuB70+Dk/Qmxtlb8zlZ8ffnBQ7yod8bnqNrUWH2G/fXxlqazO4mqpo5DUVqZOLFUyU rCxhnmkveIA+691tQ+/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6j1f/AWp/wCoeb/rWffu vdUE/wDCXH/txR8Gf/Lmf/gw+wffuvdW3/Lj4udV/NH439wfGHufCUOb2D3BsnN7UyDVePpcjVbe yVbSN/d7emASrGmLK4SuFPlMXUqVeGpgidWBF/fuvda4P8uHuHfnbP8Awll+RmK7IyVTnd1dFfED +YH8cnz9TkJck+WwPUPX26sFtFYZ54oHFPQYlqLE0aPGHFPSRayXLE+690lf5Zn85jsrp/8Al6fC zqqm/k9fza+2KTrz419RbOouz+ovjPT7s6w7Aodv7NpcbRbx2JuSTKU5rMZkYo0qqSYwrdHH1tqP uvdX0/Bv527m+bNB21JuT4RfNT4ZP1rHtFKSD5h9QjquXsRN4Q5ZppevTHV1iV64r+FqMqA6tAau kuLTKffuvdaeX8mf4KdsdW/yvfit/N1/l14bLVPzP2Bm+/8AHfI7pmn3Duip2/8ANf47bc7qzNFk urpdp6q2lG4qChxdL/d846hSaaRA0SVGUhx4PuvdbdeyPmp0f8//AOWr2t8leg86+S2puroLubGb h25k0FHvHrHsDDdeV0O8esOwsI9paDNYiobxVEMi6JomhrKV5qKqpqiX3XuiK/y5firsb5vf8Jw/ jd8T+x5Fpdqd4fDel2dNl/4euVk2zm3ytTlNobypcY81OJ6jC5imoMtTRfcRapadB5I76x7r3SL+ D38yHsv4Lbw6a/lbfzc8NUdW9x4zblPsL41/NBq013xp+WG2tmrDhsHQDf8AlhBPjdzU1BJjoJhm EMtSdMmTlpMjURxVnuvdDb/wpr/7ccfO7/tRdHf/AATuyffuvdXYdd/8y/2L/wCGdtn/AN0kHv3X uqP/APhOZ/2Qx3B/4v8A/OH/AN/dWe/de6Nt/Nd+C2X+b/xshi6ly9Lsb5c/HjdmN+QPw27X8NOm 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 P+8U+qP/AEa+7v8A6xe9/wCvZsP/ACiz/tj/AOg+tf8AJrL3Y/6aPaP2Xn/bP17/AKCM+9P+8U+q P/Rr7u/+sXv3+vZsP/KLP+2P/oPr3/JrL3Y/6aPaP2Xn/bP0U7uf589hfzB+5dp7p3j1js3rCk6N +MvfeApKbbO683uio3BUdw/IvojItNU/xXH0SwJRLtAqNJYuaj6AJyL+Ueetv5wlnisoZIjAFJ16 c6iQKaSfTz6xq+8d90znH7tdhtW4c0bnZ367tJPHGLXx6oYFjZi/ixRijCQU0k8DXreC9jjrFPr3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917qPV/wDAWp/6h5v+tZ9+691rnf8ACZTtHrPaH8iz4VRb s7E2LteTEw/Jioyqbi3bgMI+Mp2+XW/6tZ8guSqIjChiZZQ0lhoIa9iD7917ocP5ln88T4p/EDqr N7P6H7R2V8nfm52TTNsL42/G3obOYbuHfOb7a3fF/B9i1m7MFsuWu/h+Nhrp6epeGt0VFeqmmoIa ieQKPde6Arob4Uby+AX/AAm1+RHQHaHPcb/BD5r9m9yg1zZGem7H7U6q3TvTL4bI1wqayKatxVPV UmJyE9LVzU81VSzTU8skMiMfde6O/wDyad/7Dg/lPfy6aWfe20oaik+HXQdHV08u5MNHPT1lH15Q 0tXSVETzBkkilR45I2AZWUqwBBHv3XurPaTcW38/TZH+BZ3DZr7SnP3QxOTosj9t5438H3H2bvo1 6H0arX0m30Pv3XutfL/hKX/25C+Lv/h4/Iz/AOCD3J7917oFv5rPxr7s/lu5H5SfzLP5f3WsW++s e++r95YL+Y18TcHKNvYvc9JkdsVeHg+WeyKTE0k60+ZwH3dVktzzx0czyRPWV0sZiq8tVw+690Kn 8vf5xdSfy+P5BX8t/v8A70wfYlb1XNsnpzrfdu6dgbUfdVH1fQ9g7srcMnZfYwimieg23jpNKV1d Ek0vmmpqaGCWapjU+690d/8Am94D4ad+fyr/AJJ7l+Re5Ouc10OvSmb7W637T/j2AraDFdgUe2J8 j0rvzqTd8NQsUmYqslNR0uDbGVgbJCrOPUzQV0kUvuvdUafLPevfPYn/AAjXO8/ksa+XtzN/Gv44 zZHIZdKhczndmUvyv2pQdR7ozctZJLNPXZXaEWCyVbVyvrqJ55J3CtIVHuvdbf8A13/zL/Yv/hnb Z/8AdJB7917qj/8A4Tmf9kMdwf8Ai/8A84f/AH91Z7917q/H37r3VB3/AAnM/wCyGO4P/F//AJw/ +/urPfuvdX4+/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6B7vfpDZ/yJ6yzvU2+8t2NhNs7hqMPUV2S6 o7T7D6Z3xBJg8vDm6NcZ2F1bksTmqNHmgRKmOmrkWeIvDMHikdD7r3RWujP5anx9+PPaG3O3Ni78 +Xma3PtiPMx47G9qfN35Ydy7GqFzuCqdvVv8Y687R3flsJWskFVI9M9VQyNBOI54Sk0aOvuvdWDe /de6j1f/AAFqf+oeb/rWffuvdUA/8Ja/+3Fnwl/6iPkv/wDBc789+690F/cG/ti/y/f+FEG1O5e3 67C9ddG/zO/hnhei8X2fm3wWF25J8sei9+U38A2/ufNyFZYTV7XbFY2lq60xxyVFVQ0wlcRqsHuv dG4/nyfLjafxq/lx/IfYdLkVzff/AMrOtd3fF/44dRbemeu7O7I7C7xxMnWZqNjbXxzGuqjhaXKT ZaeeKMxxtBFESZqiCGX3XujPfGXG7A/lw/y4PjFsv5L9kdddQ7d+NXxs6M617R37vPeWIwOwcPvD A7Nxe0s4x3bnTRU7RVWaMkNG7pG07SRhYwzhPfuvdGj3T3z0vsvpXIfI/cnZ+yqHobG7Dp+0Je2o c9Q5PY1X1/W4qPN4vdeHz2KaeHIUldSywS456FpjWeWFaUSvLGre691r39DbF3L/AD5e5tk/OP5D T/wj+VN0xvnKZX4QfELLJj3Hye7H2Hm6zaGT+T3ygw/mqYKzF0OSpa6l2vtiqXxsEcvF9i1TUbl9 17q6/wCbvzR6t+A/x43H8nO4Nvdh7k6v2bndpYbd9R1hgMbubKbXoN25+DbkO6s1TZKvx8MOKo56 mH7yf7guutEiillkSNvde6Cn5vQ/Bz5Zfy6u4tw/ILemw90fDjfHTeX3xUdsUNXjM5isRiVxElZt vsHYNeqVAkzdFVGJ8PBBDLPPW6KH7edpnpZPde6q1/l5fHnsL+ZJ/wAJmeqfjR8jshk6ffHd3xm7 E6725uHe+PraCowMeyO081TfF7dORoIaamnkocRS4baddSlKcmoo6eJ1eoEoml917pT/AMln+aFt vIbCwv8ALN+cmXpPjx/MY+G2PxHQ25+uO2cli9pVXeW19lUEeG677J6syOQmFLnpclg46Goq4MfU Ty1BvlKUTY6qhnHuvdF1/nTr3T/Kb+TnXH86n439lZDJ9VZTMbc6h+c/w63X2ZJj9odr7P3BW0uF x/Y3Um0Nw1YpYdxRMlJHV/weHzxVcdHkjTy0k24TP7r3Su/lDZLeH80P+Yv8i/55Gb2dnthfHBen /wDZIPgbtneuOSDduf642lvls92R2fkHpZjTxM+ciykASkNXTxz5LIY1ayWbFTvL7r3Rq/gD4ewv 50n88jtn/KclQbGPwJ+OW0s1L/C6ihx391ui6/d/ZO1cPVU2qZPDmK+nnroncfvOqumqIBfde6r3 +b/yO7f/AJG3y4+UeJ6L6r3p2j1//N1xdb2D8O9o7Qx9PnqDrX+aBX1FD1zvijyeFyWQkmfD7mTJ Yjd2RFNQu01RTwY2ipvGtRNF7r3Vw/Qf8trD9Afyl95fAZco2Y3x2h8cu6dud29jUs9LNm+we+O/ tj5KHtbsKpz1RQo9ZNLlslLFjqyvo5J1oqejjmWQw2PuvdZP5FHap7j/AJQX8vvdrisFRh/jrtPq quFejx1n8S6KnqOksmahZERrmo29IQzrqYEMWcnW3uvdHs+VH/ZMPyO/8QN2/wD+++yPv3XuiAfy D/8Atzh/L1/8V529/wC7Ss9+691bx7917rXt/lf/APb5f/hRD/4k7+Xn/wDA2Zr37r3Wwl7917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e6A75Jf8yR39/wBQGN/93tL7917ocffuvdf/0d4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu 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 nitRKsJglGq3lQTPI4Y6ZEkXxHAKB6r4gjU4Hxl/4+3sz/xB9f8A+/16+9jf2Q/3M3D/AEkf/Hn6 xW/vWv8AlWuTP+encP8Aq1a9fRo95D9cXeve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XuuDoroyO Lq6sjC5F1YWIv9fp7917qiH/AKBlP5HH/eCOC/8AR4/J3/7NvfuvdHa+J/8AKn/l1fB3KU24fi38 Reourt30KV0ND2BHh63ePZlDBkkqIa+noezewKjLZ+GOaKqnp5I48kqmBvAR4VVB7r3Rzuzut9l9 yda9hdQdj4b+8fXfauxt2db7929/Ecth/wCO7L3zgKjbG6cN/FsBPS11L91Q1U8H3FFUwzx6tcMs ciq4917qlf8A6BlP5HH/AHgjgv8A0ePyd/8As29+690fH4U/yzPg/wDy64OzKX4a9GUnStN3E20n 7Ggo9+do7zi3G+xUyce1nZOx85mBStSrmckC1D4TKJR5jJ4ofH7r3Q1/Fv4qdBfCzpfbXx5+MnX0 HV/Tmz63cOQ23sul3Buzc8GMq91Z6o3Nn5kzG9q/JZGT7iuq6ioKzVjqpcrGFQKo917owEkaTJJF LGksUqNHLFIqvHJG66HjkR7gqQSCCLEe/de6B/bfx76P2l0w3x1wXVmyqfod8DuDajdQ1eDpMv17 JtPdNVVVed2jJtbMCopGxMxrKiIYwx/axwMKeKJKdEjX3XuqnNrf8Jyf5R20uwcbvik+N2XzGEwe 4KTdu3+mt2dwdubu6Ewm6qSqpaj+OU/Um4s1UYuoMy0FDT1NFXx1FFNBTxQSUrRAofde6tP+SXxl 6O+XfR29Pjb8h9iQ9hdKdhQ7ept4bGOd3RtSmzFNtTdFDvLAU5zOx67G5KBIMljaKo0UtZGJBH4p A8LyRt7r3Q14/H0eKoKHFY+H7egxtHS4+ig8ksvhpKKBaemi8szM7aUVRqdixtcknn37r3QJ/Hj4 ydH/ABQ2Rl+t/j/sVOvtl57fm8+zcrhYtwbr3ItXvnsLLnPbxzxr94V2Qqkatq2ad4I51gRiRFGg NvfuvdD17917oBfjx8ZOj/ihsjL9b/H/AGKnX2y89vzefZuVwsW4N17kWr3z2Flznt4541+8K7IV SNW1bNO8Ec6wIxIijQG3v3Xuh69+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691wd FdGRxdXVkYXIurCxF/r9PfuvdAP8ZPjF0X8N+kdmfHH42bDg6z6X6+bcj7O2TTZ3dG5IMK27t112 +NxFM1vOuyOSm+5yuSras/cVkmgylI9ESoi+690z/Kz4gfGr5vdR5Dov5VdQ7V7l6wyGSx+bXb+5 YqyCpw24MWHTHbk2tuHDzU2TxGRijlnp1r8ZWQTmCaemZ2p6ieKT3XuiM/FD+RV/LA+GfaWJ7t6a +OMdV2xtqk+x2fvjtLf/AGL3FlNj00dZFW0P9y6XsnKZKjxtRRtBCtBX0tMtXTIriCePz1Bm917o 8vyz+Ivx8+cXSO5Pjt8nevqTsvqfdNdgsrktvVGSzODqIcxtnKxZrBZfF5zb1RS1tJUU9REpDwVC +SMyQSiSCWWJ/de6Dfuz+XR8PPkT8b+u/iF271VlNyfG3qzCbO23s3qbG9sdzbL29BgOv8BFtnZm J3DPsXcOMrM5BjqSCEU8ecqqwCVFqTepAl9+691X1/0DKfyOP+8EcF/6PH5O/wD2be/de6sK+LH8 un4W/Cvp7f8A8f8A43dD7f2N0v2nlMzl+xOt8znd6dnbY3fUbi27DtLP02aou18nnPJR1uNgjpKv H6hSypr1wsZJC/uvdEMpv+E4/wDKMpuyo+wx8bs1U42LcdJvFOosj3N3JlOjf73UNZHX0uebq7JZ yXHtpeGNDQMDQNCDTNSGmZoT7r3V22Gw2H25h8Vt7b2KxuCwGCxtDhsHg8NQ0uLw+Gw+LpVocbis VjaFUhp6anhRIYIIUVI0VURQoA9+690SX5o/yzfgr/MLxONxfy9+OWyO263CU60mB3fM+b2l2Lgq OM1DxY7E9kbGq8ZnIqJJKuonGP8AvzSGVzK0DPz7917oivXX/Ca3+TP1zvHFb5T4hUnYOawX2C4m k7k7T7i7e2xTxY2F6aipKvZm/wDPV+JrqVI3KCiyFFPT2CnxXRCvuvdHD+D/APLv2f8AADePf1D0 Lv8Ay2M+NHc+9Zuy9q/Fyp27jIdl9Db5yqxtuibqPNY+aJ6PD5R/K0+EloniiEdGtK8HgqDW+690 ZvpX4zdJfHnN917i6h2ZLtbOfIrtvP8AevcmTqd1by3TVbz7S3NSwUGW3HI+8MjkPsYzT0tNTU2N xgp6GmhiSKmpoY1C+/de6VnYnTXV3bWS6xy3ZWycHvPIdNdj4/t3rGbOU71S7Q7KxGAyO2cRvDHU +oRtV0lJlq4UpnSRYZXSpjVamCnmi917oTvfuvdAF8ZPjD0d8Oumdr/Hv44bIPXPT2y6vctbtjZ3 95947uixNTvDc9ZvLcskOZ33kMpkXFXlK+srXWWsZRJM+gKDb37r3Qvbq2xg97bX3Jszc9D/ABPb W7sDmNsbhxv3NZRfxHB57HSYrLUP3mPkiqIvLTyyR+WCVJFvqR1YAj3XukH0T0X1X8ZuoNg9DdH7 Uj2L1N1fgYdsbE2jFl8/nosBgoJ5KmHHx5jdNXXZCdVeVyHqquVwDbVYAD3Xuhb9+690X3rL4s9D 9Ody/IL5Adb7Cj21278qMh19le+93JuPduVbf+Q6qwFTtbYVVNg83X1ONxzUGPq56YfwijpRMrA1 AldI2X3XujBe/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3XugO+SX/Mkd/f8AUBjf/d7S+/de6HH37r3X/9LeH6//AOZx9/8A/Uf1p/7w 0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3QDfKj/smH5Hf+IG7f/wDffZH37r3Wnb0X/wAfn8kv/El9J/8AwB3TnuTe Tv8Aklt/zUb/AI6nU3+3X/JAk/5qyf8AHI+jF+xb1IXSf3Ftnbm7sTU4DdeBw25cHWGJqrD57GUe YxlQ9PIJ6d5aOvSSNmjkVXjYrdWAZSCAfbUsEU6eFMoZT5EV/wBR+fSS4tre7jMNygdT5MAR9ueB 9DxHl0C3x9+LHSHxex+7cf0zs9Ntf37zwz+6K6avr8tlMlJSeWHBYx8hk5JJEoMTTzPR4qhjKxU0 JYIuuSV3RWG2Wm2qy2q01mpJNT8h9g8ui/adj2/Y0dLFCPENWJNSeNB9gqaDoxPsy6O+ve/de697 917r3v3XumXPYLE7nweZ21n6GnymC3Disjg83jKoMabI4jLUT0GSoagKQSk0MjxvYg2JsfbUkayx tE/BgQfsIoek88STwvBJlXBU/YRQ/wAukL01n8zntgYtNzTzVW7dsV2d2Hu2uqITSy5fcews5UbR yW50on9UMGaajGZoo3JP2tXCdTAhmTWEjSWw8X40JRvtU0r+eD+fSLaZnlslWb+0iJjf/TIdNf8A bABvz6FT2u6Neve/de697917r3v3Xuve/de697917r3v3Xuo0Ow9j9n7w6e6/wCy9mbU7D2Hu35D /G3B7r2TvnbuI3btHc2FyHfe3Keuw+4dt5+Gooq2lnjZo5qepheN1JVlINvZJzCobZp9QrRa/nUd BbnAI3Ld1qANFBFfI6hkfPrYK/4ad/lZf960/gB/6Rv8df8A7HPcQdY79e/4ad/lZf8AetP4Af8A pG/x1/8Asc9+690Un5w/y1v5c/W/xq3jvfrv4BfCnYW9Nvbr6Zq8Bu/ZfxX6L2tujB1Uvdu3KSSq xGfweBgq6aRopJImeGZSUZlJsxBWbcAdwgUioMif8eHRjs6q+72qsKgzRAg8CNa4PVWnubusoOve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuu +ivlXQfATuuDt7dldQ0XTeXxGY2l2Rh0gqoKzMdY5bc9b2vkcntiUyyCt3N11uSu3lvejwaBZ89g t17uioIJMnt7GUuTjHmnamt7o3sY7JT8/iNa+oz+XyBoSIP572KSyvzuUQ/TnbNASdZqTU5GaY+H iKAkMQz/ADU/mLN8i/lR/L9+SuA6nynQHx8+FHzA2Pu/cfeXdG39wYHt3LdW90zp0P2RT0+zUjRs LgcvjM/jsg1FEMrX1EcJXMRbZr8WcXkSV9ovo7Rr2RCqLStcHJAFB55Plwoa0xUMScv7rDt77nPE UiSldVQe4gCgIzUmhplSCGAxXYSi/mm/A6oiinh74jmhnjSWGaHrXuCSKWKRRJHLFIm3yGVgQVYG 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 oxG5cpBlsxlabEZDDblTHUtDi/4ZVU+YNTTZCF6ef/aznHYLDZm2S/lFvLGzSVc0WTUeCU/EoCjS e5iewGhpxq/vAPu0e7/OXudD7n8o2DbzYXcMNmY7VS01l4CAh7oMQBDK7zN46/owqh+oaLUhc1/8 1j+ZD82f5gXx2xPxM7I+NvQfQuyt17+2PvXeO6+s/ktivkHlcvj9i7mTcOFiQwbegxWHpqargp6y qpKxchX1skUFMlFTUdRV19FJu984cu7NZtPdXUZ1AhVRtbMeGAhLeYqcUGfLrAz2t+7V71e5XM0W 1bBy/eRrE6NNNcQm2hiSparSXSpESQjaFOrWwC0OoA1xdgbNxnYuzNz7LzYieh3NiavHyy1VPPXQ wVMy66LITUMFRStUinqBHOadqhEm0eORtDNfEjl/eJNi3u33dBqML1IxUqQVcCuKlSwBPA0PX0d+ 8vttZe7ftbvXttduIl3O2Mcb9wWOeNlmtncJRjGlxHE0iKQXjDICK16s26t/ncfzP5fjR1v8YTn+ jPj1vfrrbNN1lmPljvnYnaHfvcvY2E20lRidq7k672Jt2hrOu4d0PicfE2VyXYO7sdjayv8ANIqU y1eNkrctRzzyn9Kbk38PatSocaq0B0qDQk5ApSvHhRqfOe33S/vEjfo9iTlHcwZZfDWVrWTwQut0 EssqCSOKP9NmLFioUoQW8SLXWviMDBjcluvPT5zfW8M9vXc+Z3Vnt79q58bp7Q3Rks/lajcmbzu+ szTu1CuTyuZr8tna6jxKiko5a449KnLfYrmshjz7jc6R8136Q7eWFpb106sa3NayaeIFMKDmmSAT Qdn/ALk33Xbz7vvJ9zunOSwtzHu5UzeEQ/0luoUpZ+MCVkYSAyTNHWMvRUaRYxI5q/jL/wAfb2Z/ 4g+v/wDf69fexZ7If7mbh/pI/wDjz9Y7f3rX/Ktcmf8APTuH/Vq16+jR7yH64u9e9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690B3yS/wCZI7+/6gMb/wC7 2l9+690OPv3Xuv/T3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690Wz5lUuarviB8rKLbeVg wW4qz42950uAzlTQx5Snw2aqOr8pDi8rUYyVlWpSnnMczwMwEgUoSAb+/de60YfjDsr5gYWbvLFZ v5A9Jbm3NR9ldbtuPc25PjfuatqM1NX/ABF6wym3PsKXZ3YO2qOjgoMFPicS0JopZJZ6Saseob7o QwyJyql4+2sbeRUHiNhkLGulc1Dr8sU/PqYuQor99mc2kyRr4rVDRFzXSmaiVMUpinlWuaA1P92/ ln/z+j44/wDpL3aX/wBuP2JvC3P/AH9H/wA4m/629DX6bef+UqL/ALJm/wCt/Xv7t/LP/n9Hxx/9 Je7S/wDtx+/eFuf+/o/+cTf9bevfTbz/AMpUX/ZM3/W/r392/ln/AM/o+OP/AKS92l/9uP37wtz/ AN/R/wDOJv8Arb176bef+UqL/smb/rf1L2n19879/UNfltgV21d94THZvK7cqM/s/wCAfyS3DgWz WEqjRZigpcxje0pKedqaYNFK0MjKHBAY29kNxvy2s7W81yoZDQ/oOc/85egtec2RWN09ncXqB4yV YC0kOR8/H6m53q759bTgpK7eVTtTZWKra6PGRZzeHwH+R+2sClfNBJUU1LU5vL9qRU0LSiJ1i8si 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 Ss2zuvd+9Y62XZPc3xq3pFjXpo8nLs7Zef3VHi5K1ZGoUyMmA7LqBAZhFKYRKVLhH030NYv3Gw2/ agp3PZ7y3D/D4lwErTjTVZivQ05P5s5w9wZJoeRfcnljeHtgDKtns73JjDGilxFzKxUEigJxXpTf w/ub/nr+nf8A0UG//wD7Yfsu+s5Z/wCUK4/7Kl/7ZOhz/V333/6avZ//AB3Ln/y4ujr/ABl/lvfz FfmTt3P7v+P2f+Jtbt3a2RpsFnJt+bW7O2tXx5upikq1goaWj3nWiWEQCJzKzIdTFdJ06jKvJnt/ yrzVs371dbiD9Rk0iZH+EDNfAXjXhT8+uen3m/vj+/8A93r3L/1vbeXZd2AtILkzttd1bZmaQaBG N2nwoQHUXBJJGkAAkzP/AAwx/OU/52nwS/5I7Z/+yX2LP9ZrlT/ftz/zkj/61dY9f8nO/vD/APKD sf8A2R3f/ew6qu3Rsv5AbJ3Fm9obj3b0lFuLbGSqcFn4qDqbsGroYc3jJTSZWChqm7BUywpOkiRS lVLqAxVb6RCW/W3LOzbxc7ULS4k+nkZNX1SLqoeNPpTSvpU/b11O9pt499/dD2z2T3C/rFs9kd3t IrkwfuC5l8IyLUoJP3/HrCmoDaEJFCVBx0wfw/ub/nr+nf8A0UG//wD7Yfsr+s5Z/wCUK4/7Kl/7 ZOpC/q777/8ATV7P/wCO5c/+XF17+H9zf89f07/6KDf/AP8AbD9++s5Z/wCUK4/7Kl/7ZOvf1d99 /wDpq9n/APHcuf8Ay4ul/wBabK+VO6M/uWPrrvfq7rirxXX0uQ3NU0HRmTyp3JtP/Sts+kqtvad2 7qzCU8hr5cdWJU08cbhaeSIsVlIEyez0+1y3t8Nut5ITojLF5hLXualKQxU868a44efMr+8r2nn+ x5Y5Vn523iz3NTdXixLabZLYaCYoC5dpNyv/ABagKFCiLTRiS9Rp+n57nbrkd1737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3QHfJL/AJkjv7/qAxv/ALva X37r3Q4+/de6/9TeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3QDfKj/smH5Hf+IG7f/wDf fZH37r3Wnb0X/wAfn8kv/El9J/8AwB3TnuTeTv8Aklt/zUb/AI6nU3+3X/JAk/5qyf8AHI+jF+xb 1IXTbk8nj8Li8jmMvW02NxOIoKzKZTJVkqU9Hj8bj6dquurquaQhUihiR5JHYgKoJPA90kdIkMkh oqipPoB0xJLHBE00h0qoJJPkBknoEX+R/XuM3dWbG3nR72683FRZfLYXTvbZWex2Cmrtvbbp92bt phu+hiqsPBU7foqlDuvH1lfDW7enD0uepsbVKYfZDb8zbVPIYi+g1oNXA+meGf2fPh0FbPnbYLuU wmXwzqoNQoD5DIqM/sHmciux3/KHq6Wu+I9XV0VTT1lJUd798y09VSTx1FNPG3YdVpkhmiJVlP4K kj3HW9srbtOymoLmhHUN8ysrb/duhBBkYgjII9Qelz/M2/7Jqh/8SZsf/rbUe3OX/wDks2/+m/yH pRyh/wArLaf6c/8AHW614t2bkO18NW5Ck27u3e2dFHk5dt9fdebbyu9eyN/5jHYqfMJtPr/ZOBjm r8tlamOnk+3o6SFmIDO+iJJJFlW+voLC3a4uDQAGg8yfQfb1PG6bnabRatd3jABQaDzY+QHzPDon +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 qj/zfk/wL18+395T/wCJJH/pV2P/AB6frYP9yl1z/wCvm6fJH/soPuz/AMSpvr/3pZ/eGPPP/K3b h/zXb/D19Qn3TP8AxGzkv/pV2/8Ax09Ax7C3WQvXvfuvdGO+Mn/H09n/APiE6v8A9/nsD3Nvsf8A 7m33/NOP/j7dcn/71X/lTuUP+ey9/wCrEPX0ZPeRXXFbr3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3XugO+SX/Mkd/f9QGN/wDd7S+/de6HH37r3X//1d4f r/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3XvfuvdAN8qP+yYfkd/4gbt//AN99kffuvdadvRf/AB+f yS/8SX0n/wDAHdOe5N5O/wCSW3/NRv8AjqdTf7df8kCT/mrJ/wAcj6MX7FvUhdAT3pvuk2FgqLLZ TJQ7VpIJ6Sbb++87gJdxbB2j2lX7nxOzOpNzdh01LR1kkGK2rm8zT9k1k05pqWop9qz4qSpepydH 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 Vu5KrdUHyC2L1tvGgzuZ2zhqLDS4PD7dbMZ/FGLHUWVGUqHppq+uxsiUtH7nvlvbtz5XudMIWSBW mjKAKQyKTngCukkEGuDVe6nTn3RPfDnTkP352Jpdxkms92uIttu0uXknVre7miU6KlmjlEqxNG66 RrUCU+EX6Jn7xF6+kzox3xk/4+ns/wD8QnV/+/z2B7m32P8A9zb7/mnH/wAfbrk//eq/8qdyh/z2 Xv8A1Yh6+jJ7yK64rde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+690B3yS/5kjv7/qAxv8A7vaX37r3Q4+/de6//9beH6//AOZx9/8A/Uf1p/7w0fv3Xuhx 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3QDfKj/smH5Hf+IG7f/wDffZH37r3Wnb0X/wAfn8kv/El9J/8AwB3TnuTeTv8Aklt/ zUb/AI6nU3+3X/JAk/5qyf8AHI+jF+xb1IXTBPHFu/PUnUmD2rkO1N973xOTXG9RbZxFNujcm6MF 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 tDDinp8vPbnZLDbOWLS7gUGWeMO7+dXOogeQGFBIywRNRIVafN599j3V5v5699eYdg3adl27ab1r a2thUIFtVMMcjg0ZnOqaRVftge5uPCVDPOZLCv5vP8qL4CfDnaWL+U3xr2Fi/jr2R2NvfC9TZDqz YdXWYnqLsWGtw2S3hU1mH69DPj9v5PF02Imro5sTHTUU8KVNNLSPXVsFXEj91dvsrzlSW4u3KNbk OhArV8qqmnANUipwK8K0IEX93zzjzTy594Sx2Xl22W6i3eN7e7VnCmO2GmWWdA3xNF4auVQeIwWm oRiQMev/AITyf9k/d4f+JTxX/vNr7T+0H/Ko/wDN+T/AvR5/eU/+JJH/AKVdj/x6frYP9yl1z/60 bNr/AMzH5K/Bfu/5QUPUO3OtOx8FvLtDImt2V2TSZ6igosjgd51lIc7gNxbYraRqeZsdWVC1kVZS 1YqzSUEUclDpnmlhFvdCbaOa7vZ95Aa1SdwJAO6NAp0oFRQWq9O5iTQkfMdVbf7hO2e5f3euXvcn 2yZoN/utqtZHs2kIhvLuSdPGuJJ7iZlgC2xkpDEkaF1Vgf8AQ3IX8s/mL8kfnD8lMV3x23gevdh0 uK6JzHQtNtzYi5lqbHbSl7Z2t3TjchgK2rr5a2HO1Wc2+9Nm8jV1VTQVOEdcZTYijq2ny0yfnT3P 2PcNgl27ZqzSXA0NrVk0KRXWKihIIAAqKEhvw0Jz9177hXuvyd7vbdzr7naNts9nYXcX01xBcG5m Rgq2sgR9UcUiuzSPpdWjjeEgGUOoKe8fuuzfRjvjJ/x9PZ//AIhOr/8Af57A9zb7H/7m33/NOP8A 4+3XJ/8AvVf+VO5Q/wCey9/6sQ9fRk95FdcVuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de6A75Jf8yR39/wBQGN/93tL7917ocffuvdf/194fr/8A5nH3 /wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3XvfuvdFy+YWM/jXxJ+UmG/iGTxP8W+Ofd2M/iuFq/sczjPv+s8nS /wAQxNcVfwVUOvyQS6TocK1ja3v3XutMP4g7F/0bN8gNnHeO/N/fw3tfrKs/vV2XuH+9W8q/+PfD DqfcP2uSznhg8sNF939jQJ4h4aSGCG7ePUZN5O/5Jbf81G/46nU3+3X/ACQJP+asn/HI+jk+xb1I XQifEncPXfQnza66+RG6sBipIN17Or/jfuneFacpLWbAxfYe6cZXbW3pQeSuXH0VGuYpKTGblqv4 d5Wx9TFW1VbDRYPxSAzmzazcwi9hWrpQEDiQcDFf24JPaBgdRpz/ALE13bLudouqSOisACSVJoCB WlamhwWPaBQDq0r+ZX3Dsj4Ob2+Mvz0yFbX4+uXtLa3xH7Y29icJm8vL210b3JW1Wclx7rhaedEz Oxslj33ntiStINUiZrbWNEmW3VRxSxyqs7BUFSeobRGkcIgqTgDovnyF/ma9pdmrktq/GSir+nNk TrVUbd0by2/R1PbOfo6rHRSUmW63623NDNRbbVXlYx1e8KGrrdUUkM+36NjHU+xjtfKU8xEt+dCf w/iNR+WkjPHzHAg9SNsXIFzckXG7HwoyPgzrNQPs0kVPEHuAwynNaqrBSZ+OOOPde8N/9l7oVFVB u3s7tXsndeUqdOuR2/ieezMtNE2qSWRpY8djoC7tTY2jZoBp/ut2S2/DEn8ya/zyfsFfIdSV/ul5 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 RiTWYjWFJjTQrSB7uv5GXcG99i9MdzYnZvxn7v71pn7GxM+Rz3Vm4PjXicTg8g+3gy4LJw91dh7P r2qvAYarVSUM1P45U/f8muNJu9oFK8ngkcZpSPs7R/hB65V/3k0sUv3lZUjapj2yxVh6MfFeh/2r KfsI6vI/2Zbuf/vXt8v/AP0NfgL/APbw9yj1gL1obfJeg3ZhPkf3lgN/7C3f1dvfH9jbgrs3sHfd HjaXcmEh3DWNn8LPJU4GryGLr6WqpKiKalyeGyVbQVCkmnqpQrWw59wbK5tea7yeZSEmldkPqKio zkEVBoQCVZHFUdGb6Zfua80bJvv3eeWNu2ydZLjbrC3iuIwQSjENpaqkq6MVdNaMypPFcWshS6tb mCEFfYO6yk697917pfda9Zf6Ucvu7G/6Qez+u/7vdetun7/q3dn90clnPt+2NnYb+7m4qr7eo+5x b/ffdyUmldVTT0suseLS02+x/wDubff804/+Pt1yf/vVf+VO5Q/57L3/AKsQ9fS095FdcVuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3XuuJIUFmIUKCWYkAAAXJJP49+691X5N/Nl/lZwSyQz/zJfgZ DPDK8U0Mvy66BjkhljYpJHJG+fBVlIIIIuDwffuvdDp0/wDMb4j/ACFw++Nw9CfKP47927f6xo6X JdkZvqXujrnsXEdf46upauuoq/euR2hkqyHFwzQ0FdNFLXPErJTzspKxOV917oCf+Ha/5V3/AHsq +BH/AKV78f8A/wCyD37r3RgOi/lz8U/lA+4ovjV8mOgfkJJtBMe+64+ku4evu1H2ymXMq4p9wJsf IVxoxUmCcQGo0eTxvpvpNvde6Gvbu5Nv7uwtBuPamfw259vZaJp8Xntv5OizOGyMCStA8tBk8c8k Eyh0dC0bkBlIPII9+69061FRBSQT1dXPDS0lLDLUVNTUSpBT09PAhlmnnmlIVERQWZmIAAJJt791 7pFdado9adz7JwvZfT/YWyu1OutyfxH+7u/eud1YPe2zc9/B8tPgMt/Bty7bnqaKp+1rqWqoqjwz N454ZYntJGyj3XulvJIkKSSyyJFFEjSSyyMqRxxout5JHewCgAkkmwHv3Xumnbm4tvbw29gt3bSz uH3TtXdGGxm49s7m27k6LNYDcW383Qpk8NncFmMa8tPV0dXTSx1FLU08jxyxurozKwJ917rluDcO 39pYTJ7l3VnMPtnbmEo5shmdwbgydFhsJiMfTrqnrsnlci8cFPCg5eWWRVA+pHv3Xunn37r3SC7M 7S6z6W2Tmeyu4ew9kdVdd7dOOG4N+dj7qwWydm4M5jKwYLEjL7m3JPTUVMaqtqaajp/NMvknljiS 7uqn3Xul2CGAZSGDAFWBBBBFwQR+PfuvdFi+RXzW+IfxGpKWr+TnyX6S6JbIY6sy+JxvZvY+1tq7 gzmNoJFgq6vb22clUpkciiSOkR+xpZT5HSMDW6qfde6DP4/fzOv5eXyp3HRbN+PfzO+OnaW9snNL Bi9ibe7Q2wm/MtLDBLVTLidkZOenytVoigmlY09G4EaM5OkX9+690ajtDtrqzpHZmR7G7m7J2H1L 19h58fTZbfPZW7sBsfaGLqMtXR4zFQZHcm5qilo4XqamWKngWSYGSR1RLswB917pfQTw1EMVRTyx VEFRFHPBPBIssM0Mqh4pYpUJVlZSCrA2I5Hv3Xug4re5uocd2rieish2p1zQ92Z/a02+cH0/V712 3T9oZfZMFVU0Mu8MZsKWpGVnxaz0dXC2QjpTAJIJk8mqNwvuvdCZ7917ou/yM+Wvxi+Ie1aTe3yf 776q6I2zk5aunw2Q7N3phNrPuGqoEjkraLbWOyMq1WTqIlliMlPQQzSKHQlRqF/de6j/ABu+YHxb +YW2a/eHxd7/AOqe99v4eWkhzlX1rvLDbkqduz15mFBT7lxVFKazGyVH28/gjroImkEchQMEa3uv dGQ9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3XvfuvdF9+Rfys+NPxG2ZD2D8ne9Oruidn1dTLQ4zNdmbxw21kzmRhjE82L25SZGVKjJVaoR IaWgimm0+rRbn37r3Tb8bfmN8VvmHt/Jbo+LnyE6m74w2F+x/j8nWm9sHuWv22co88eMTc+FopTW 4xqlqWqFOtfTxGXwy6A3ja3uvdCr2d2r1l0psnNdk9w9hbK6t6+27HBJnd79g7nw2z9q4laupSio 1r87n5oKaN555I4IEaTVJI6RoGdlU+690Wr4zfzG/gl8yczkdtfF/wCVvSXdG6cVT1VZW7R2fvbF zbxXHUCwNX5an2lXtBkp6KnNTTrPWwUrwRvIiPIrsFPuvdHU9+690l96bz2p1zs/dXYO/Nw4naOy Nj7czO7t4bqz1bDjsJtvbG3MdJl87ncxX1JCQ01JSwyzzyuQFRST9PfuvdPtTW0dFR1GRrKqno6C kppa2srqueOnpKWjp4jPPVVNRMVSONEBd3cgKoJJAHv3XuiL9VfzRf5c3efbUnRXT/za+NHY3bX3 YoKDZG0+3NoZXK7ir7anoNmywVJp85OgBMkOHmqXTS2tRpa3uvdHz9+690Wz5F/MX4pfEXDUef8A k98iunOh8fk6WurMMvZ/YG2tpZLcMGMaNMgdsYPK1CVuTaFpYkePH08zhpEXTqdQfde6DD48fzLv 5ffyyz9PtH45/Mf48ds70rGqRRbE2v2dtlt/14o4JKurmx+xa+eDLzxRxRSyvLDRMgRWctpBPv3X ujxe/de6YafdG2qvcuX2ZS7hwdTvDAYLbu6M7tSDLUEu5MLtnd9flMTtPcOWwcchqqahydVhM1TY +rmiWKoloK2OFnelnCe690/e/de6hVeRx9DLQQVtdR0c2Urf4djIqqqgp5cjkPtJa/7GgjlYGabw QTzeKMFvHHI9tKMR7r3U337r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690B3yS/5kjv7/qA xv8A7vaX37r3Q4+/de6//9DeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3QDfKj/smH5Hf+ IG7f/wDffZH37r3Wnb0X/wAfn8kv/El9J/8AwB3TnuTeTv8Aklt/zUb/AI6nU3+3X/JAk/5qyf8A HI+jF+xb1IXTdk8bj81jshh8vQ0uUxWVoqrG5PHV0EdVQ1+ProGpa2hrKWYFJIpY3aOSNwQykggg +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 804/+Pt1yf8A71X/AJU7lD/nsvf+rEPX0ZPeRXXFbr3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 riQGBVgGDAhlIBBBFiCD+Pfuvdal388j+Xj8B+sJf5S0/Wfwo+KHXM3aX8634PdTdlzbC+PnVOzZ ewur98tuZt59e72k25iqY5XC5U01Oa/G1xlgnMamSNre/de6vY3l8Tfi18XPi98tIvjR8behvj1H vXonsmTeMfSHUWweqk3W+A68zK4J9yLsbH0IrjRCsqxSmp1+LzS+PT5Hv7r3VVP8k3+Wp/Lr7V/l R/BjsXtD4G/DnsnsDeHRuGzW7N97/wDjR01vLeW58vVZWs8+T3BubcWGqa2snYBV8tRO7BQqghVA HuvdXldF/Eb4p/F99xS/Gr4z9A/HuTd6Y9N1ydJdPdfdVvuZMQZWxSbgfY+PoTWCmM85gFRr8fkf TbUb+691ptfye/nd8nPgBW9hbs+VORg3T/Kp+RPzo+TXVPX/AGWMhlMrlPhr3pju4slBVQ7y+9SO LF7K3NI0tXLBC81NDUioyUb0k339Pkvde63dt+zQ1HXO9Kinlingn2TuOeCeGRZIJYZcFM8UsUqE qyspBVgbEcj37r3VKn/CZT/txx8Ef+1F3j/8E7vb37r3Uf8A4UK/LbfHRvwtx3xh6AhTOfLf+Y1v ii+HHQG1aaeAZc03ZCpgu0N5QUsysRTY/FVseLeuXSKKsytBUswVD7917oLP+E7/AHb2bsnrb5Df yoPk5l0r/k3/ACv+yW6xGTkrqmoXsL49bxkm3F01vnAyZmqlyFRRLTM8VNrpoY6XFzYWDQruUX3X urD/AOctLLB/Kd/mNTwySQzQ/DX5BSxTQu0csMkfW9e8ckcikFWUgEMDcHke/de6qf8A5Hv8wv5H 7I238Z/gR/MwanXtLuH449Xd7/Bj5OJlpcntP5N9L762JQ7xoerN0Z3KCCdewtpw1Zx1Uk1Mn3sN OAxef7Kuz3uvdGH/AOFSn/biz5tf9RHxo/8Agudh+/de6Nh/OB+du4/5fXwa3D2t1nhRub5Adl7q 2T8evjPtuSgqcnBl+9e2ZZaDarzUNNS1vnOPpKbI5aGkkpnjq56WKifQtSXX3XugF+EP8i/4v9OU Ld4fMnZ+3fnF86+z6XG7j7075+RtLD3PS027ZaGiefbHWOC37DUUFDicPNSJDjMgaBchIFaQy09O 8NBSe690Zb5a/wAnb+XX8x9i5ranY3xj6x2hueupJl2/3L07s/bnVXdGyMyuKqcVh9wbe3/s+kpq qV8eKl5qegyf3ePeQKZ6OZQF9+690uusfhFl8v8Ay/1+Cvzj7nyPzeTPdabj6p7M7c3ntCh2nuff +18nU1EW2q7JUrVeXc5zC0TUKU+4p6yavmrqOLKyy/fM0nv3Xuqr/gr894f5cnTvy4+EP8xrf8FD vL+V3s1939Z9l5CloNvT/JX4SVawUnRW5diUuXyH29fmqGarxmxJaOOpjRa+XG41pZq5a2b37r3Q 8fyYvj92Vu+l7e/mtfKzENQ/K7+Yd/A91YDa9YmMnPQHxMx1PFN0h0lt6rpIVlWOejSmzOSdpy1S Djmq40r6eqeX3Xur2PfuvdajvX/Wnxm+Qv8Awo2+e+z/AOZjs/aW/wDs7Z/Wvx5p/wCWp1d33R0+ 5umst0ydpPl+zM91TtnfOrDZjPjMzUtXJSU9BJJR1f8AGpYDNNBVT0/uvdT+1+rfjT8cv+FF38ur b/8ALj2hsLrvtfsDrX5I4r+Yj1X0Rj8btPrDHdIQbLgzHWu4O1NsbDjjxWKzU2Wo6yrp6apolkrq qmxU1R4JXpqmo917rbT9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3XvfuvdVUbi/lYdbdvfzCd6fPD5T7ow3yRxeI682N158YPj5vzrbCy9a /G6l2/E+Q3juzRlazIQbkzeVy0k2TosjWY+mONMrCJJpYaKopPde6qc722l8derP+FAv8taj/lvb b6m253XuPCfJrA/zFtqdARU2H2tQdEf3Wod17ZyPe+2uvXp8BSZmbKVeQyNG+WiGRqa3+EzTpKP4 aze691bv8zP5Z22vnj8nfi12X8h9+0O9Pi18YRuLeNP8OMpsitrNm9r93ZiKaiw/Yfam4jnUoctj sLAtCcXt6s23MiypWrNVTUeTqqM+691Tx/Pu6/8Aij0Zifi1mvhRszqTrD+bNhvkz0NjviTt/wCP W3Otto9sbiosru6lwu4Nq9j4LCR0nn2bV4zXSomYVaZ6n7ekicU1RXRS+691tlf6/wBffuvdaF// AAql/mUdnd0bJ7z+DHxBk/j3R3xeg2Nn/wCY52xg6hp8DjN4b037jdpdR/HNM1GRRy1kOUqGyWax sbzVBqqNo9NNJgsire691sPf8KE8F3HuD+Tf8waLpGl3PkNyU+zthZjdmM2bLmYd0ZHqHBdl4PMd y02NbBNHUmMbZgycuRjEqJJQpVRzFoXkjf3Xug92N/LI/kufzIPg50/m/jT0f1RsTrPI7Z2hk+oO 9/jpt3Z2wPkP1nl9qUgpqemruzqaircnPnce7T0ubpdyyZAy1LS1FSstV4qoe690cD+aj84aX+V/ /Lu7j+S9JDHvTe3Xm09vbH6jwu9K+pyM++O2t21tNsrYv95JYJIKrIpDUznNZuOnminqKSlrDHLF IRIvuvdV8fy+P5E3Un8Kx3zG/mm7dpvnB/MP7wgxvZfbWZ+QlPR78676ez2do4q2Hq3rrqqvjO3Y IcBCtJjfPLj51gekEWKFDj0hph7r3Rnfml/IV/lu/MDYWQxWL+P/AF78Ye4aCFq7rn5E/GHZG2en ezNh7spINODzlTLsSDGwZymp3VFlx+WWQGLUtNNRz+Kpi917oLP5GXzE+R/ZmG+VHwG+b2bk3d8x v5bPaWM6f312dUI0VT3Z1VuSOun6Z7ZqnqWWprKnJY7GySy5Gogjmq6WSgrKvXXVNVI/uvdVw/J/ +Ypvr41f8KWpdxy4zdtV8P8AYXxw+L/wr+Ym9aPGVz7A6d3D8hc3ubufove/YWYqjS4/G00ORycD /wAYqmmWGjOSpKeVKiqlpn917rcP9+691qIfzYP5gvbx/nFfy3ukOnKKaq+OfxD+ZnxfwHy13vBP TvgcP3p816fMdcdabPz9NLGJ1kotjz7gqcdkKKc061GRrqTIBHgiDe691t3+/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3XugO+SX/Mkd/f9QGN/wDd7S+/de6HH37r3X//0d4fr/8A5nH3/wD9 R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3XvfuvdAN8qP+yYfkd/4gbt//AN99kffuvdadvRf/AB+fyS/8SX0n/wDA HdOe5N5O/wCSW3/NRv8AjqdTf7df8kCT/mrJ/wAcj6FHffZnW/VmJiz3Z3YOx+uMDUVJo6fN7+3Z gNn4earERnNLHk9xVFNA0mhWfQJL6QTaw9iaa5t7YariRUB/iIH+Hoa3N7Z2S+JdypED/GwWv2VI r1l2T2H1/wBlYl891xvrZvYGCiqpaGTNbI3Phd2YhKyIAzUjZPBT1EIkW4LJruLi496huYLgaoHV wP4SD/g69b3VpeKXs5UlA4lWDU+2hNPz6WvtR0t697917or3yW+JHUPyrxG28X2ZQ1yVW0swMzgs 5hodvy5SjlNJNRvTmHc9Bk6J0tM0kUj0Zmgk9dPLEXl8hTue0Wm6qq3FQVPEYNPT/N6fmeg9vnL1 hvyIt3VShrqXDUzVfSmaioNDw4mqt6q+O3VPTOJ2/t/Ye2sfidv7Oqa2r2Xg6TDbYw2M2zWZLCQ7 fyOYSk2tj8emSzU9JHLTSbnzi12cNLPPQfxL+HMtIlNv2Lb9uk8WBavmhOSK4IH2/n50oCemto5W 2jZpTcWqVkzRmyVBABC+laedTk0IBII6eznoTde9+690G28P+Pv6k/8ADvzv/vts17QXP+5tt9r/ APHD0TX/APyU7L/TP/1bboSfa/o5697917r3v3Xuve/de6TuR29TVm4tjb1oKyu292B1duKo3f1j v7BPSQ7n2DuufC1W3nz2Ckr4qilkZqSsqIJ6OvpamjqEbRVU06AL7L77b7XcYvBuVqPI+Y8sH/V5 HiB0UbptFjvFv9PfJqArQjDKSKVBz/MEVoaVAIsm2D/Oq2P0XHgNvfP3Mbc2ZhstNNS4n5E7WoKm n2ykceWx2DpJe2utqNqzI4SP7nK0NJU7mxIq8Ks8iyZBNvR1FHDNG+9bA+2MZVdWQ5A4MMgUpUmm ePDhU1IBhbmblOTY2M6SK0TEkDgwFQANJJJAJ+KtBQAtqYA3zYPOYXcuFxG5Nt5fF7g25uDF4/OY HPYPIUmWwubwuWpEr8Xl8RlKB5IKmlqYJI5qeohkaOSNldGKkEh3oHdV7fzHf5YPxt/mSdVV22O0 duU22O59uYarbor5LbShOF7l6P3hAXr9v5rau8cW0Fc+Piris1dhZKj7WpUudMdR4qiL3XuqJf8A hNL/AC39h9ifGfYf8yb5mVuf+WPy03jvjtPb/VO+O/d3bh7hfonZvT3aGY6leg6+h3xVV0NNkqrN YTKV7Zfx/cRRPBHSNTqag1HuvdbfPv3Xuqnvld/Nq6C6M7Qy3xi6oyW2e7/lljaFp8x1nTbupdv7 V6zeoxU+Yxp7X3nFDWSU9XPBTyzQ7ewtBkMuYwtRU0lDjmbIxL9u26XcpvAiZVP9I09eHrw4DPmA QDQ42bZp97ufpYHRD/SNOIPD14ZAq1DUKQGpTD2vmt5fIbtPbvdvyEzmH7I7J2TiNx4DruWi2fiN qbN6qwe7MhR5HceJ6225E1ZWwCtkx1A01dm8xlclaLxJXpTO0HuTNr2Cz20B/wC0kH4iBivp+wcS acRSprNexco7ZsoElPGmFTrYDBNPhH5ClSaEErpLNXr2f9C7r3v3XukBv/tHrLqnHUma7R7G2H1p hshVPQ0OX7A3ht7ZmLrK2Knarlo6Wv3JU00MkqxI8rRq5YICxFgT7TTXVtbd1xIqA/xMB/h6RXN9 Z2ahryVIgeGtgtfsqRXqZsrsHYPZWIfcHXO+dndgYFKuagfO7I3NhN2Yha6nAaejOUwU9RB5UDKX j8moAi45Hu0FzBcJqgdXA/hIP+Dr1vd2t4he0lWUDiVYNT7aE06Wft/pb0ZX+XJ/28z2D/4op8w/ /f8A/wAf/YC52+G2+2T/AJ86in3Q+Cy+2X/BH0MP/CjD/smr4Tf+NSvhz/1u3D7Cmz/8lW2/5qJ/ x4dR7y7/AMl6y/5rR/8AHx0Qn3NHWTHQY9pda0XZ+FwmNqM5uDbeQ2vvLbG/tuZrbmTq8bV0W5do 138QxRrRSPG09I7Fo54lkimQMKijqKOvgpK2mL9wsItxt/p5iQK1waZHr6j1FQfQjj0TbxtNvvVp 9LclgKhhQkZFcMARVTXIqCRwIOerlNqfzl9kdd7CzuW+XnX25NnZbbFDFUR716Z21nd/9db7afKS Y+lhpsR5JsrtSvZFiqaqn3BLJiKdZo4o9x1k2tEjPc+Xb3bqyAeJHXiAfU8R5eVa0ycVoT1Cm98n 7lswMwHiwg/EoJwSaVA4UGmtaZai1AJFEW5ui+n+4dy/LPtLCbXzGF298xu3t49x4zA78oMrLlNu 4TdEskuCGf2zk5qaoikyyzVWTzOEqxBNDSZFtrVTPj8ZTxoLdq5fgG0tDc5aajVp8P8ADStCPU/C SDQgEdD/AGHlC3HL7217RnuaNWh7aZQgGjCvE/AxBCkKRgzuO+ZP8wPe/QO0Pjz2ju2rxL7UwUXW m6+wthmi2buzvDbGzczHtiDsLsDvek3JltxYer3XhUiymQ23s3Z2MyMjvVRJv3b1XIn24eh5T3B7 ho5KKikjVjIBGQMkVFaYORQgcegfbe3+8S3jRT0SJWI1kjuAIyBUkBlJ0mhyKMBxAe9fbGx/X+B/ g9D9kXmnFTVjFYbG7awVM8dJFjqLF7a2rhUSjxeNoqWCCko6OBWcrGaitnrclUVtfVSBt+3wbbb/ AE8H2k54n0qTQDyFTTzJNSZd2jaLXZrMWlqMVJJNck5xUkhR+EVNBxJYlivPZh0cdF42v/2Vh3j/ AOK8fFf/AN+T3H7QJ/yVJP8AmlH/AMfl6KY/+S7N/wA0If8Aq5cdGH9r+jboOt99d4bfH8Oq62nx 0uTw0GSgxpzNDVZTEPFkZaWvMVbSY6rx2QgeGvoMbk6LKYPK4zM0FZR09Vi8rQVMYm9lW6bXBusH hS4IrpPGlfl+Q9DilaEgh/f9itN8tfAnOllrpbjpJp5fkOFDildJZWXPZ/ym+f3Y/wAcd1fESbfu Mr9sdmYXBdfbr7l7CwlHnOx9nda1VCKnsDDY3svYWbwE2+zmaClk2jUT5TYu08rTJkZsl/GstVL5 oQIvKO4fUiKQgIfxjPlU4+3ArSv7aRWnt7u/1qwSMoiJzIM4pUkLx44GqlcGnEAJ+u9u9DfFb5Hf Gr5p7823uPJYD4oxdj1G7sjtChhTcZwG/dl5vE5vset2ztDGRR5Wposnma7K5WiiNBQmHIZTKTpL U0OPjjOuYdiiG3rNarQwCmPNeJJAHGteAAyTUAU6EvN/K9uNoS4sUo1qtCBiqVqSQq0JBqcBR3Ek hVp1cX29/Nqw3cvWVDSfEXZmZrsR2h17j8l/pi7fwe59j4bbeN35tI5Gng2z17TVGM3Hl8rSLUwR 1EzVmIoImfzUOTyLwSQew/tfLN1uAEs/6UZ4E8SCOIH7PkcioI6CWxclbhuyie4rBEaEMRlgRxUV rg04gAjUNSkCtRfUHVW2ekuuNsdX7Qmy9Tt/a1NVU1FV56rgrczWyV+RmytdXZSrpIaeKSonqJ5Z ZpI4Iw7szldTMTJVlaRWNstrCSVXhU5/1f6uPU07Zt0G1WSWNuSUThqNTk1+wZ9B/Op6E32s6M+r Zf8AhP5/26r6O/8AEx/Oj/4Pns73Blz/ALkSf6Zv8J6xWu/9ypf9O3+E9V/fK3/suD5rf+Jk6w/+ A26s9yJyZ/yTZP8Amof+Or1MPtt/ySJv+ax/44vQN+xf1JHSA392l1j1TjqXM9pdj7C61w9dUyUV HluwN47e2bi6usjp2q3pKbIbkqaaGSVYkeQxq5YKpa1gT7TT3VrbCtxIqV/iYD/D0hur6ysxqvJk iB4a2C1+ypFepmyuwdg9lYh9wdc752d2BgUq5qB87sjc2E3ZiFrqcBp6M5TBT1EHlQMpePyagCLj ke7QXMFwmqB1cD+Eg/4Ot293a3iF7SVZQOJVg1PtoTTpYAkEcm97gj0kFfoQfb/StlDCh6PP8Xf5 h7fGvo2s6H3H11vXszc/Xs1LRfHuDERVOL2lX9VZKXxYva2+eyKyi/heAh2VUF8XBRU8NbXvt9cW +OoMrVU+RSGNd05aun3MrZr+m+QeAGQCOFMfMktQmtSB1C298l30u+mHbUpFIAwPBVFQCKgAAgZo SWahJOpgDXB8y+0+zPmDvP4ubF+V3e+/MB1Z3J8yvi90juX4+9Fb53f0l0/vfanbHc1NtbP9c7jk 2fWQ7qz/APEcVVrT1dbX5+4mpRX42mwqPPAK7zy/Btm3LcIxL6gDU4odRoPUjGcAgVoDWtOZuUbX Y9mS7jYtLrCsScUIY0AplhgaqKCq10qSQbQPkp/IY/lK7N+MXe2b6++F3XHXW89m9H9kZ3Y/YWys tvzBb+2dufa2x6zKbZ3RhN3UmXWvWuo6ungqBNLO/mKlagSxySI4R6jzqpTo/ffyR6v7d+JfyMwH fna/yY67+LlN8gdsbe6a7p3nSZjPdo9XdrR1G3aPLYbuvedDlspDlnpMdt3KY98w03lFMmOp8rg8 ZX5Q1QwTld7vbYru1NJCtWVvM1PA+R4YOPmOpFj5Flv9kg3CwbTMyVaN8BjU8CfhJoMEU4mo4dXB fFj5b0P8zP5j0s+/+u858fNjfC3I7r3T1B0b21m8ND2L393Dn6nLbIw3yDp9rU3+T1m39k7SM8dE +LqMlRR5zcU8q1kr4TGV9SGLm0ubNzHcoUI9QR0B73b77b5TDexNGR6ggH7CeINMeo6Nz/Mt+Sdb 1B1VjOodiZ2bE9w/INM7t3BZHFZChpNw7D60w8ECdp9p42OrjnImoYa6hwuKmWCQQ5bK46eRGghn ss2bbn3O9WIfCDVjjA+w1r6cKVIBpUdGfLWzSb3uiQD4FIZzjCjPAg1qRTI01IBIqOqGcZjcfhcd j8PiKGlxeKxVFS43GY6hgjpaGgx9DAtLRUNHSwgJHFFGixxxoAFUAAAD3MKIsaCNRQKAAPQDA6yK ijSFFiiFFUAAegAoB+Q6cfbnT/XvfuvdF42v/wBlYd4/+K8fFf8A9+T3H7QJ/wAlST/mlH/x+Xop j/5Ls3/NCH/q5cdGH9r+jbr3v3XusLMqKzuyoiKWd2IVAii7MzHgADkk+6khRU4A6aZgoLMaAZJP l0Fm0u9ekt/U4q9i9v8AWW86M5amwP3m1d87Z3BSDN1zxJjsSarE1MsYqarzwNSQltc6yRtCHV1J Qx7nt8ziOGZGLcACM5p/hpT1qKcR0WQ73tE8ixwXMbM5IADA1INKftIp61FK1FT3/Df5PU3xS7h3 Rl964nL5np3tzbmz9tbtyW18FUZ7cvWW5tjZTMVu294/3bwsUmSzGIyUOcq6DMR0EVVW0clNjZqa jlpZMlNTBfmvZ7m6kW9tV1aRRgBnjg/MeVPKlfXoD8+cu3t/JHudgmsqul1AGrjhvVhmhH4QK+Z6 2Nev+w9idr7PwXYPWW8dtb+2PueiXIbe3btDM4/cG38xRlzGZ6DKYySSGTS6tHIoa6OrI4DKQI/K lT3Ch6h9lZDpcEH0OOOR+0Z6q8/mwdQbS+S2A6M+M+1tl7Gyny17T3nlsl8f+3txbekymd+KW0th xUeZ7q+SuLyeMlo6+KmxdLLitvrjIcjFT5bLZrD0FfFU4+WqRdwyyQSLLEaMpqCPI9OQTy20y3ED FXQ1BHEEefVO/wAiOm+7Pglu/wCMnU/de4qf5CT9+bfy2Kpe4uuuvslsGhwPZHX218NWbxwu+cVl KiXCtHkTPmc3iJsTlIq+WipapBt1afGVmSaQdj5mmvZls7pCztwZafKpIwPUmnADgcnqXuWOdrjc bmPbb6IvI2A608gKllwKcSdIGlRwbJ697G3UndGh+GXfPWPx574k3p2vlc/hNs5LqPf216XJYLYP YXYBGdr95bRytFQ1VF13isrUU/lp6CrkjlqIkjbxMofVYEE83WV3eNAbSNpNIeukVpXTSv7D1GPu Dte47i9p9DC0ugSatIrSuilftof2dV4f8KvPm98Ze/8A+Wbt7rHrDsDK5HfR+SfWu9qbAbn617W6 2kym3Nt7fzmEztRhK3svB4imr56afMUDSUFFNLV+FpKkQGmpqmWECXFnd2ZAu42j1cNQpWnHqKr3 bb/biovomiL1pqFK0pWn7R0nPgVu/bO4Pg38WK7a+cxO7E238bOlNv5mLa+UxubmoNy7b6pxVHm9 sVYoZXEOSpaiNqaoo5mSSKUGORUYEDmp7i7Zexe4e5R3iNbrcXs5R5VZEKPM1JAxGY6EHUtRTIr1 1W9qt3sJva7aZbGRbprXb7cSJCyySK6W61iKq2JagqEYqdWDTo73/Cbfszrjtfc/zc7C7I7FxEXz U3L20cDkfjvuDPUsG+ulvjrtXEUOS2fHhNnZGOjyEcGQyOTniztd/D4J/wDIMPj8sgq8ZCz558mc t7Ry5y/aWm1qjBYVHigLqkDAMW1LUHWe86ToZiXAz1zT9webN95r5nvr3eHdS07kwsW0xFSUChGA IMYqi6xrVAEJx0KX8xvcfxp6l+d/UPR3WeAk2v29290t2r2/2/gdhYOtTZbywbj29g+rd4dg47CU 70GLy+XpsRvOno8xL9qK1ce1NWy1FS2Ij9w794jlzbH5Vj323hjS6hnQM40qxifxNWMF/wBWRWYL U9xZqgVE8/dX5r3dOcpeXLq4lezuLeQoh1uizRiLQa5EY8CJ1UtRaKEWhNCVDG7wwk3za+APx+7B wcOR6c+SvcXZOzuxatdxVeJqa6faPQ+5N7bB2LPR49YKh6PM7ipcW1dNDkIxJBSyY6enqabIzKsY /d75V2jfd/uN03LTM1iqlIXSoLOe2bVWlYyhXQy51hge0jqYPvQ86b5y1yza7PtGuBdxdg9wkmlg sa90GnTqpIHDa1eo8MqVGsHq3X+Zh8VfjN0d8Avld3v0z8cPjr1r2r8duj9+d99cbv231fs7YeUo t0dNYCt7DosTUbj2dS4/JSUeYWGtw+Ux8NbEcjSZCsoXcLWyMcw915c2bedrm2i9gTwZ0ZG0qoI1 ADUpphhpUg0OVWoNB1ghsvNe/wCw7xb75YXL+PbOrqWd2B0FiFYahVDrcEVGHehBYnqozqHeNV2H 1R1nvyuagav3psHaG6MicVS1FBjFyWdwFPksgmNoqqoq5IqdZpHWFHq5mCAAzS/rbmvzVsw5d5kv tkUkrazSRqSQSVVjpqQFBOmlTpWp/COA62cl763NHKe3cwuArXlvFKwAKgMyguACWIGqtBqagxqb iRG9kfQp697917r3v3Xuve/de6uG/k4/9kG7X/8AFkfn/wD/AAwHtD30v9vP+VC2b/nitv8AqynX IX3T/wCnlb//ANLC7/6vv1WJ8V/+4q7+Z3/4oB8f/wD3H679jHoBdHh/nOf8ez8C/wDxeqr/APgE e8/cQ++3/Tsdw/01v/2kxdTn92//AKfFtX+luv8AtEn6rT98/euonXvfuvdJ/cu28XuvEticslR4 Vr8NmaCsoaqfHZXC7g2zmafcu1tzYLKUjLNR5LFZOkpMlja2B1lpqqCGeJlkjVgY7LvG4cv7pDvG 1P4c8DVVvtBVgeBoykqaEGhNCDnoj5g2HbOZ9mn2HeY/FtrldLr9hDKRxFVdVZagioFQRUdGA7W+ a/8AMM7d6T2T8TOkavYGzfkT2tvrbPT1V8t63Jz02SXYe5K9cfk987V6ywVLAKLd1FihW5LPVNPX Q0tPTUVTXYRErqmlo8TnT7d+8Wz86yW2zmORdwdXMihR4aCNal2eoFGNFUKCSxBKoCQvOD3S9h98 9vorrfVmifa43RYmLkSu0jUWNYwGOpRVmLlVCqwDuQC9j3U/8ov4q9edW4Pr3ctb3R2Xm6DbOL2/ luwsr3l2zsfMZSbG0cFLHksbtjqnM4PA4hlMCFBjcZHI41NVzVc0tRPONrvkLky+nkur3bYJZZnM ju6BmZyWNWY1JHcaLXSKKAKImmPbL3N9wNutorLb93uYIYIxFHHHIUREAUUVVooNFFWA1ElyWJkc tWX1Vnvmt/Ki7R77+GOB3zgPk38ck2ntrtL4f7j70qshtvdXQG1uxq7LbdxnWUs+xsbLSbnxO3cj gMqRtuniwMNJRfwtMdWUlNkGocQU+4nuRtnt5bQSX8Esz3QkEXhqpQNHoqJCzqRXxAV0g10sCVwS ee1ntNvHuld3Me2XEEEdkYTN4rOHKy+JQxBY3DU8MhixXTqUgNkALzJlq6uy+f3LncnuzeG6MnJn 95bxzkkUuc3ZuSpp4qWqzOTaBUijtFDBS0lHTRx0tFSQ09DRQU9FS09PFgJzTzRuvN28S7zuzlnc 9q1wiV7UXgKAfIV4066a8m8n7NyNsMOwbJGEjjA1NSjSPTudskksfUmgxU8es3sg6FnXvfuvdB12 H251R1HRUOS7X7P676wx2TlqIMbkOxN7ba2TQ5Cekh+4qoaKs3PVUscrxRkPIqMSq8mw9mW17Dve 9sV2azmuivHwonkpXhXSppXyrx8uiHeOZeXeXlV9+v7eyD1K+PNHFqA46Q7AmnnStPPpz2T2DsHs vCjcvXG+Nn9gbcaqmol3Dsjc2F3ZhGraUhamkXLYGeopzJGSA6CS63FwPbW5bRum0SiDdraW2c5C yxtGSPUBgKj5jHT+1b1s2+QG52W7hu4waFoZUlUH0JRiAfkaHpZe0XRv025XFYzO4vJYTN46gzGF zNBWYrMYjK0dPkMXlcXkaZqPIY3JUFUrxT088LvFNDKjI6MVYFSR73BNNbypcWztHJGQyspKsrA1 DKwoQQcgg1ByOk1zb293A9rdossUilXR1DKysKMrKQQykEggggjB6dt7dv8AzX3L8faT4YdU97xb L272jvbr7pjbHcFViMnne8+v9l9r7sx/VtLsnHbtqMrRo+Ox1TlYayTcLeTOw4enqMbRM+Tmo8xQ 5b+0XvFc301lyfuMBkmkfQsoYKiRhWNaAE8QqpEAEQk6HjhCRRYQe+HsNa7dDuHPu13Iigij8R4S peSSQuooWLKvAszzsxkkABdJJzJPNeZ0f/LJ+D/RfUG3OmsR8dusd/4LB7SxGzcjuHuLZm2e1t57 uxGGxpxdNS7o3FvSkq5ZqRImkjpcTCIsdRQuaWgo6WkVIFyaG2baGZlt4wWJLHw1qSzB2JxklwHJ OSwDHIB6xBbd92ZVRrqYhAqqDI9FVUMaqBqwFjZkUDAQlR2kjqoLtXqHsL+V78y94p8Qu8szsrrj 5odU9gdk4Xozs3GZnubrPZvYXVhxOxd+7z2xjcllcfV4+fF1G6Ng1OFDZR1qKOTKYesiq8dQ7dTb sce5/Pd77cbVZ7jY2kc8EkhhZCxQodOuPRpBGnQkikae0lGGFKNK/s97b2HuvvF9te43sttcxRC4 VwokDjUUl16iCWEkkTg6u4CRTQsHQEMLiHxMNZNW5jN7o3DmshUZ3d29N01kWT3hvjdNeiDLbs3Z lIYoUnrqoouvwwRQQxrHT0sFPSQwQRYE8wb/AH/Mu7TbxuTAyTMzUUaUTUxcqi/hXUzMfNmZnYs7 Mx6W8sct7XylskGw7QpEUCKupjqkcoioGkbizaVVRwCoqogVEVQ+eyroRde9+691737r3Xvfuvde 9+691737r3QX7K/4/fuX/wAO/bv/AL7TB+xVvf8AyrOy/wCkuf8AtJfoCcv/APK3cwf81LT/ALRF 6FD2Feh30w5bbmLzFTj8jMMhjs9hfvP7u7u21ms1tHfO1Jq8RrWVmzt97VqKLMYepkEUWqqxddBN 6F9fpFjjYuZd+5ZuvrNguntpPPSQQaAgakYFGoCQNSmgJHmegzzJyjy1zfZ/QcyWcd3FmgcEMtSC dLqVdalVJ0sKlVJyBTnUYZ8rmKfcO69zdh9i57HVX3mDzHbfaHY/cGS2rO+FO3qn+5VZ2hlcvJhE qKRpIquLENTJUGSaSdZJJpXc133n/nHmW3W13zcJJ41BGntQEMQxDaFXWKhTRqjtWnwihPy57Zch cpXLXnL22RW8rFTq73IKqVBQyM+ghWYVTSSGavxNV79hLofdO/8AKX+eXQ3S/ffzm6/+VfyN696f q872PtKg6WyneG99n9ZbU3PgNh0+VO6di7E3HuWXH0NXXbfOaxdbX48ztWCHK01QRKju6dFPaTbN vsOQdunsoUie5hjklKihkcrQsx4k/wAsmgyeuUnvjvG6bn7mbrbbjcPMlpcSxQqxqI4w1QiDgB/M gAEmg6Qf82j58fHfvn5b/wAubbHxJ+T/AFr3U+DyHdtH2rWdGb62/wBm7Ig2x2TW7PoNvbe3Nu7a UlfhZKivkwWVqKfHrWGriagaoKReON237ubZt+4e325S3sKytbwvLEWFSkijDKeIOafMYPWvY3d9 02v3O2mPb53hW6njhmCmgkiZso44EVAOeBFRQ9KX3zq66ude9+691Ut/O33VtfD/AMuXvfbmX3Jg cVuHd8vVlJtPBZLL4+hzO6KrEd4bYzWVptvYupkWetkpaOGaqqEpkcxwxvK4VFZhMvsJYXsvuLZ3 0ULtDEJw8gRiiFreUKHcDStSQBUipIA49Y+feW3Hb4Paq/26aeNLiZrYxxM6iSQLdQliiE6mCgEt pBoAScDqtToPN4eboLqrK01bDlMbh+tdpUeTfDVFPXvDXYLatLHm8SGgLqtZTurRSwN645PS6g8e xZv+2XT84T2twjRC5u5ApZStVkmIDrUCqkGoIqCOupntBz1sdr92raOYNluoNwbY+XrRp44Jo5TH PabZG8lvKI2YxzK0ZR430urAggEdXvfynP5MfxV+ca/OTd3yzqu3N95T46/NTs34Ubfodrdtby6v w2SqOgtp7eXfW/8AIP1ZV4yDIT5XM5aro4BCfsoKSihWKN5nnqZsvdr2u22jbo9stVAjjXTTND5e ZYkUwNRY0ABJ49fNtz/z9v8A7h863vPO9zM15eTGUtVQymuoEeGkUatWrt4UUMfiMzJFGCFB5tlf DHYfw0/nd/E/ZHTEm5Z+qarr6s3bLDvLPvubPbd3j2H0f3jhEwsO4a9hXV1DVUuxqivietWoqIag 1SzVrQTUFNThG35Qt9r5zi3nabfw4XhlExDLpEhKaKITqqwDFiAQTk0PHJDevvJ7zz991+/9r/cP eDfbpa7nt8m2pJDK0zWkaXP1HiXSqYWWJmhSJJGSRVqF1rQJtMe5A6w4600v+FA3/Zde1P8AxU3p b/38fafuBvfH+w277bj/AAQ9deP7qP8A5KHPP/NPaP8Aj25dUbyRpKkkUqJJG4KPHIA6PG40ujq3 BBHBB+vuAYppraQTQuUdeDKSCPLBFCMY67Cbltm27zZSbbu9vFdW0tA8U0ayxuAQwDI4ZWowDCoN CAeI6DTBdL9W7WyqZvbmyMPgKw1FPkY48WtXSY3+LU0xlTPph0l+zGQZx68gsH3DBUQyFIo1QU3P PXNl5atYXF47RSKVZdKZBFCK6a0+w0B4U6gHYvul/d25c5jg5s2Xlm3h3G0lWWKYS3JKSo/io+gz mMsGIqzIWdaByw6sW/lN/wDb6X4A/wDhl/Mv/wB8Qfcm+x/9ruX2Qf4ZusEf713/AJJ/I3/NTd/+ O7b1tLfz/P8At1X3x/4lX4Vf/B09a+5e5t/5VXcv+eaf/q23XNv7tn/iQvI//S92r/tNh60ofeFf X1O9e9+691737r3XvfuvdN+VyNPh8Xls1VrUPRYXFZPNVwpITU1X2GIoZMjXNT04IMjiKJyqA3Y2 A5Pt/b7Kbcr2Lb7emuZgoqaAEniT6Dj5n0BOOg5zjzTtvJHK24c3bwHa126CSeQRKXkZY1J0oo4s xooqVUE1dlUFhcR8Uv5CHyg+UXxNk+RW/vkRTfF/uvt7ZlLur48dS0+x8Z2Xs3rzZ+4YIczgKzu8 ZNqOavzeZpYaCYLSJbBpUVOqGulmegpspbD2q5Wtdujs72M3EikM8hJVnahBoVOpUzhA1MAmrDV1 wC5y/vBvf7fOdb3mXle+XZ7SVHgtrNVWeK3gLxspZZVMU11WOrXTxeINckcfhwsIgZH+Txj/AJsf CbevfVB8h9obGw2x9s/Kzo74c/IPrjbO7xm8pjeye3sftleh/kx1VPK0dHUbcylX2BtzC5GlqZVy 1Vj6qOrnhpKjboxVSd8p8tT8sfU2Ec3iWbMrwKSS8ZOrxFNe0r8DKR3VLBq6QzRV94j3z2n38bZO a7vbjZcy28MtvusyLEtteqgt/o7iPSTKswH1EU8b/ohY4JINHjSQxbVPbP8AzKvsv/xH+8v/AHnK n2MOsa+qwf5Cv/bp74p/+Vz/APgkt4+/de6Jz/PA3f8AIrvLY/aPQ/Q2D2tP118da342br7mgz2/ RtfM9zdvd/dh/wBxfj/0tjKOWgq8dTYTDZGfGbt3Bl87V0UMNU2Fq6acJiq9Jg1zTs93v22/uy1l 8FZHAlarA+FpYOqqO12aoWj9oBL/ABovU4fd/wDcvlv2h58PPvMG3nc5bG3d7CDRE0Z3ESwtayzS uVlt4oCrTmS1PjyNGtqaW9xcEEcw/wDwmr+UFX8Y8puveHzSxafOCnnqd77K692hsjAY/wCI+NrJ KNkfpDfGQyOOl3bnsZJDro6bdMNTj6mjmm+9ehyE1NBISWP205OjtmtRag6kCFiSXFCTrBJ7XJOS KVFF+EAdSheffq+8peb9Bvjb+8Ygu3ult40RLdg6on00kajTLbIiAJHIGCuXmB8V2c0L4DKZHJ0t fBndtZ7Zm59vZ/cez94bS3HQ1NJkts7y2fmp9t7rwD1ToKetFHX01RTGsoZZYHZGUOJUljjxl5q5 fk5Z3mTa2cSBaMrAgkqa01AcGFCCDQ8DQAjru/8Ad9947P329sLLn+1tXs5JS0U8To6qs8YXWYWc DxIWDKyupdQS0XiO0bHp99kPU1dJ7cm7tpbOpqWu3jurbGz6CtnmpKPIbs3BiNtUFVU08H3M9PBX ZuaCJpEj9bIHuBY25HtXY7Vuu6EjbbaWfTx8NGen26Qafn0EOa/cLkLkSNJedt6sdoEoJT6y6gti 4HEoJXQuF/EVBoMmg6lYTP4HdGOjzW2c5htyYaWoqaWHMbfytBnMTNU0bBKqCDJ4ySWB2jJAcJIb XF/qPbd5YX22yeDfQvA5yBIjISPUBgKj58OlvLXOHKfOdkdy5Q3O03S3U6WktLiK4RWpXSzRO4Vq cVYhh5jp39sdCLqTtnrXunvrtLqT43/HbE4uu7n783dU7N2jmNzK67L2PjsRg6jde9+wd3zo8eqm wmEo67JR0MbNUVjQmOmgqSkkfsc+3vKUPNW7FLtwtvBRnUNR3rWir5gGhLMMgCgoTqXD775f3jNz +777dx3HLFs0m87sZIrSdojJbWmjR4k8tRoeRfERYInOhnbXIHWPwZriPmF/wnq+R3xl6Pp+6fi3 8wG+QFb0xsncm++6upfkptzY3XidonHUdRujfOX6v7d2jTwna6wKtTJt7B7gFdS0YEUNRmGpIBE0 /bl7a8p30LJb24tZe3TJESpVlFFIWun/AE2BqOSdQDDj1yN9+j7wvKW6wz7xu7b/ALepmE1juASa KeK4bVLE0pUz04CEmRxAo8KNRC8kT7C38sTe/ZeA63xPxS7ercfufO9MdB/HXtDq3svEpNQU2+Pj p3fQZ/G9WYTPYTKzS5Cm3FtGbaeW2zl5J3nFbS0+Ky71P3mTq6SjG1nA9tZw28jB2jRVLBdAYqoB IWp0gkVC1NOFTTrFnmndrXf+Ztx32yhe2hvbq4njhkmNxJEk0ryJG9wUjM7orBWmMaGVgXKKW0hG fzd/+6YP/jX74V//ACy+1XRF1bXmctQ4HEZXO5ORocbhcbXZbITJHJM8VDjqVqyrkWGIFnKxoxCq CT9AL+/de60qPlp8dvnz/NE+Uvx13P15WbA66rflj8bsL8h8ZlN21kW5No/Df4kYzdUVL1dgs3gq KVf737zzkWemztdTwU8cEeXyFbikrarDUEeToAVzByVZczbtBf7rIWggQqIANOpySdTSA1IAIASg oQTqozDrKP2c+9LzR7Fe3G7co+39kkG77vdLK+6ySeKYLZY40Fvb2bR+GkrMrs9yZGLq6L4QaCKQ A1/Mv/lGd3/y5di7e+S+ze3cn8mfj0uU2Xtf5D43KbGhwPYnVO6N45XH7EwfZXXG3NmR1prtpzZC aio63BBqnI0UkyVKy5KSor6pArzR7XbFLsv+6dBbT26nSxbEmSdMjMcliaByar2/hGk5BewH3/Pd uw90R/rmXEm97VvEyieFIqvaVVE8axiiUlFiVPEe3RTHL+qWAlcTpW2QQxDWuCQdJDDjj0svB/1x 7xm67yA1FR5/l137317r3v3Xuve/de6m4/8A4uFB/wBRlL/1uX36H+1H2j/Ceke4/wDJPn/5pv8A 8dPX0Jv5e3/ZAvwe/wDFQPjT/wC+YwvvPfr5AuqwP5Bf/daj/wAb/fzG/wD5TffuvdEQ/wCFC/8A 2Uz1H/4gvA/+9/uj3A3vj/Ybd9tx/gh668f3Uf8AyUOef+ae0f8AHty61696b6yG0us6yqoKJq7J 7E7X+PXf+xUVytLH2f0l3jt/P4uo3IIoKip/hC7Yn3fDUfY0tdU/dzUBTHVCLJLTkvs9zDZ7dez7 PeMEN0VKGhyyhqgtWigL6jJ8wBmTv7yz2a5k505Z2n3J5cha4XYlmiu1DqCsM8kAjZIiuuV2lNDp caVFAjs407NnZn/Cjr4h/I7499l7G6X6U+VNXuztTozduHxWR3713tLZfXm0M1vzatZt+hot8bvX cVZIXpJ54zVwYGhyU9j6IyqVDwTZzFzXtPL23vd3My6uCqtHYsQdPYGBIqM5UU8xx65X+y/3e/cf 3m5wtuXNh2yYQGkk88oe2hS3V1Ep+peGRFfST4YEcrFh2xPQr1V//LY+fNV8F++c5u/cGGzO5umu 1sXQbZ7e27gWhrNy0EGDyNXldj752xS5GaGCoqMFPkcrHU4+OWnaso8hVyBqispMfSvBHtxzzb7L uM1nuh8O2unLBsERuT+I01aCMVBAU1JWhJXrn9937p29+6XJO2czcgJ9bvnL9slu8Pesl7axrQiB fE8IXCtVyrK0kyhY0lBjSOXbZf8Amkfy+02N/f8Af5VdY/wv7VKv+7i1WXbtQRPRDIBD0olId4iU RHU0BwXkBupQMCvvIkb3tAtvrfqovC06tWtaaaVrx/2fLj1xTHtX7lnff6sjYL835l8DwPpJtfi6 tOj4KcfOumndXTnrVo/mnfzIP9ns3jtXamwcPmNt/H7qvK5TMbRodxJTRZ/fu96qmlwQ7Sz2KhaU Y5YMbLWUO3sf5fuYaSvrpckEq60Y/E4/e5fP1vvUZ2LZ2D24YF5BwcrkBSfw6s1GMA1NaL2P+4t9 zzeva6+T3c9yYWtt4eGSO1s2I1WyTqFeSUKTplMWpCrksPEdTHGYg81Pm5N47P2bBR1W8t2bW2fS V0k8NFWbr3Fhtt0NTNSxCepipqvNTQRu0aMrOqsSAQT9R7iqx2jdN0JG3W0s9MHw0Z6H0JUED8+u hnNfuLyByIE/rrvdhtJkUsgvLuC3Z1BoWRZZEZlB4lQQKGtKHpww2awu5MbT5vbmXxW4cLVy1MNJ msFk6LL4iskopjTVaUuTxrywSmKQFJPHIdLCx59s3Vhe7fJ4N9C8L+jqyn7aMBj59GPLfNvKvONj +8+UtytdztwaGW1niuEB/hLRM4DYNVJBBBBFR0aL4yf8fT2f/wCITq//AH+ewPcz+x/+5t9/zTj/ AOPt1y//AL1X/lTuUP8Ansvf+rEPX0ZPeRXXFbr3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3XutfH/hQD/3Ra/8b3fy8/8A5bffuvdXK/Kj/smH5Hf+IG7f/wDffZH37r3Wqf8Ayj/+E9n8rf5P fy1/h13/ANz9O9ibn7S7V6dxO696Z2i+Qveu2KKvy9VkKqAtR4DbGfo6CkiSOOOKOGmpkUKouCxL H3XutiH4IfyvPhp/LaXtBfiR17uPYo7ibZzb+bcXZvYvZEuU/uEMoNsJSy9g5PJPSLB/GcgWWlZB IZAXDFVt7r3VY/8AI26X6t+RP8sP5PdH92bJwnY3VXZ/za+eG1N8bL3DA8+LzmFyPddYJI2eFkmg qIZFSoo62lljqKWojiqaaWKeKORfde6D7ofvLfH8nTeOd/lk/ODtOpz/AMP917L3nJ/Lg+aHa+Ro MJSYnaVHhWiofiL3bvepipsYM1gwWp8FkameASwtR0sUccFXjaKi917o0H/CZT/txx8Ef+1F3j/8 E7vb37r3VJu+u8P5hHzY/nI7s/mLfCD4BRfPX4xfAiTsb4c/HOTIfJzqHo/YFN3Fi6P7DtXuKgXe udmizlRPHmstT46socbEDQ1GKkmlFTQRJ7917pk7s72/mgfGj+Zr8dv5xHyz/lfVPwm6RxeD2/8A Ej5pbu2F8nup++8BvrqHsjdEWH2hvDfO1+rJ6rKQ1O2a2enqaWtmpTBVVFHhqCerpUjiWb3Xutnf +cnUU9X/ACkP5i9XSTw1VLVfCv5AVFNU08iT09RTz9ZV8sM8E0RKujqQyspIIIINvfuvdFn2l8Bu sP5hv8ln4DdO74zOa6+3vgfhh8Q98dHd6bMSJOw+iu28H0NgKjbO/wDaNS7Rs4jlVYshQ+aL7qnL LHNS1SU1ZTe691Q5/Nk/mFdl7r/kt/Pj+Xn/ADEpdpdcfzKejJfjhjapKWupsXtT5j9b4n5WbHqs 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 37r3Xvfuvde9+690B3yS/wCZI7+/6gMb/wC72l9+690OPv3Xuv/S3h+v/wDmcff/AP1H9af+8NH7 917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+690X/5YVFPSfFr5K1dXPDS0tL0B3HUVNTUSpBBT08HXWSlmnnmlIVURQWZmIAA JJt7917rRwqvkNs7pbqf5y/IaDJ4Pc2B2Bmuts3i3oMxTVGI3DuTHfBPqDCYPbMeXx7Sxq9XmvDi nZNRjlcqV1qV9yDy9dfQ8vz3ZFdDsQPU6UAH5kjqXeUNwXa+TrncGFfCkcgerFYwo+wsQD1o9d6d 89pfI/sXNdndubtym7dz5ioqXjlyE+qkw2NlrJKumwODoYQkNJQ03kZKemp40RF+i+wPdXU95KZ7 hizH1/wD0A8h1F19f3W43LXV45d2PE+XyHkAOAAwBgdKP40fJrtr4p9pYDtLqfc1ZhshjKuBc3hJ JqybbO8cA9VFPktsbswtPPTrWUVSIk1oZUkR1jlhlhniilS9ne3FjOs9uxUj9hHoR5g9Obbud3tV 0t3aOVZTkeRHmCMVB8x19DHq3sDE9s9Zdd9p4CCppsH2RsXae/cPTVr0r1lJjN34Gn3BQUta1FJL D5oo6hY5vFK6hwQrEc+5ltZxdWyXKcHUN9lRw/Lh1klY3aX1nFeR4WVVYDjSorSvy4dCB7U9L+ve /de697917r3v3Xuve/de6DbeH/H39Sf+Hfnf/fbZr2guf9zbb7X/AOOHomv/APkp2X+mf/q23Qk+ 1/Rz1737r3Xvfuvde9+690m921W4aLam6K3aVBTZXdlJt3N1W18XWBPs8luODGSy4Ogq/JUUa+Ka qEUcmqrgGkn96L9asTmVYHaEVcKSo9TTA8vPpHeNOlrI9uKyBWKjjVgDQcRxPzHR6/5WfwT+G3du yu0O1O56OL5cds47t3eO3txU/dFLid0dS4La+foRv7ojdXXXS1bSpjKWk3F1nurbe48VWbhgyuXx seXq8bRZZaFWiaF7y7ubudpLpqtU/YPs+X+SgGAOsatzv73cbtp79tT1NfQZyBSop5DJwABgDoSv 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 7A5XbFNBvbdEEmJwkPxu696+oZKeZv3pGyVHVzh+I5kj9HuBvfH+x277bj/BD114/uo/+Shzz/zT 2j/j25dU1e4B67I9e9+691737r3XvfuvdBL3r2Y3TnT+/wDs6OgiytRtLCR1FBQVDWpJ8vlcnT7e wK5BEmgkam++rKY1SQyrKYdfjIfSfYg5R2Mcxcw221OSI3YlyOIRQWanzIGkHyJrwHUH/eQ915PZ X2a3r3BtFWS7tYljtUc9rXVw6wwlqghljZ/GZDTxFjKAhmHWsLvnfm8OytzZPd++M/kNx7hy9Qai rr6+cyFV0iOGlo4FtFT08MapDT00CJFFGqRxoqKqjM2xsbPbbZLOxjWKNBQKoAH8v2/b18xHNPNv MnO++XHMfNd7Lf3t05eSWZ2dixoOLE0AACqBgKABgDpd9F96b16H3rjd07WyVaMcK2kfcu2kq/Fi 904uLXFPjsjBKkkWrxSSCCcxl4XIkjKuoIK+Y+XNu5l257G+QGoOh6d0beTKfIj9hFQQVJBHXsv7 0c6+x3OttzhyfcvH4br9Rb6j4N3DXvgnTg8bj7GVgkkbpKiOu398at87Lpq/eW46ndeBodv7o6Sj bbWXyuTpMPR5wZTuHYeXxqY58m8XklnpI5KhIR6/GjtpsjWhz2btZbLe90s5/jhCo3+mSR1P8x10 0/vMt+sOava3kDmfaiTa7lJNdQkihMVxaW0sZI8iUcVHr19I33kD1xv697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917qrH+aL8K+0/mf/w3p/ouyu0cX/sq38zr4q/MbsL+9uQyGP8A4h1j0n/H f71Yzbf2FLU+bKy/xKD7SCbxRvZ9UyWF/de6P93Zs/Ldh9MdubAwL0cec3z1hv3Z+GkyM0lPj48r uXalXhcc9dUQpK6QiadDK6RuVW5CsRY+691rV/EDo/8A4UrfC/4y9L/FfrTr7+T1uLYnR+yaHYu2 s5vnfXytrt25THUM0lQKvO1eAjx1G87PK9zT0USgWGm4JPuvdXOfBDLfzRconZ5/mTbV+FW13gbZ o6dj+HuT7gyiViyDKHfr9gS9sTylShGHGLWhRfrVGZnvGE917pB/ykvhx2v8HvjVv7qTuOt2bX7p 3N8pfkl3NjptjZfJZvER7S7a7HqN27YgqqvKUNBItalLKq1cKwskcl1SWQeo+690ZD5u/CjoL+YL 8cN+/GD5H7UTcnX+96Xy0WSpEood2bB3dRQyJt3sTr7M1sM4x2bxjyyNS1IidJI3mpamOejqamnm 917quz4/fA35hfDL+SZL8APj9vfrjKfKvaOy+9us+su1K3cW5do7NxtF2p3tuTN4TswZWgoZslQ5 bHbXziZSCkgppBFl4kpVqWgX7z37r3Vg3wF+I21Pgn8Peg/iptKSlrYepdg4vE7l3BSDICPePYWR 1Zvsje1stNUVSjL52pr6+KGeokaCKWOnVtESAe690KfyR+P/AFx8q+he3fjj25iUzPXPc2w9w7B3 TSmnoaippqPO0LU9PmsSMlFPDFkMbUeHIY2peF/BVwQzKNUY9+691VLsr4RfNbMfyRe3v5c/d+4O pc/8i4vjb3H8VerOxMPu/N1exN5bIk2tVbR6P3Ju6sbb1BV4manxc1FjMnTxY2rZfs/ufLO87Inu vdWafDPqXdHQXw/+KXRW+JcTPvXpX42dF9S7vnwFXPX4KbdHXPV+L2duCXCV1VDTyzUjVdHMaaWS niZ49LNGhJUe691XB/O4/k1dWfzcfjnNt6OXC7A+UXWtLV5boHuOqpmhpoMmkUzt1x2RUUFPUVdT tbJvK/lEMck+PqWWvpEltU0db7r3Vq/dXR3VvyN6a390F3fs3Edg9U9pbQyGyt97RzCSmizGEydN 4ZhDU07R1FLVQSBKmgr6WWKppKmOGqppYqiKORfde6oH67+PH863+VThcZ0/8Qh1J/NO+GG1ZY8X 1T1X332VTdC/LbqXaDVlW2P2HRdxZhf7sZPD4iCWigpamvinmaGFoaShxlNHT0vv3Xul3uTsX/hQ 18vaKv612v8AFX4zfyqdq5dKGg3N3jv75IYT5ddtUODra2KPN1PT23eqsdSYuDKpSCoEL56CJQ7I YainlUVEfuvdW/fDv42RfEX46db9AJ2p2j3ZUbGoMguV7Q7j3PX7q3zu3N5vLz57MV1TV10kv2tE lRUyQ4zHRuy0tIkMLS1EqyVE3uvdAL85/ir2X8ju2P5dm9tgVm1KXD/FX5qYX5Bdlx7kymQx1dWb Fx/T+7NiT021IaKjqkqsh97m6Nlp6iSnjMQlbzBlVG917qxX37r3Xvfuvday+4vhv/NG/lg/Jr5L 92fytdk9QfMT4t/Mjt+t787R+G/bm+MZ03vnqfu/dsjSdibz6l7Fr5qDDHG5NYadGjrPLOsS01N9 lO1CK2p917qPgvhZ/M8/mj/J/wCOHdv81XYHTfxI+KXw+7Qj7r6u+FXVu+Mb3NvLtfufb0KLsjen bvYuLnrMM2Ox7S1HjipfFKYfNRmgiNdLXRe691s4e/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xute7tD4mfzBvgB8r/AJC/LL+WD1r1 V8ounPmJvTGdnfJP4SdmdpL0xuKg7wlp0xe4u4+jey9xRzYSilzIBrtwxZSRfI5dY6as00C4/wB1 7pip/jT/ADOv5oHcvQ+5f5j3UfTPwj+GXxy7hw3fFH8RNh9mYn5D9v8Af3a/X8cc/Vzdr9p4SFNv U+1cdWzVNfJQ0NPHUTsn289Izy02QxvuvdDn87fhH8wMB8wdjfzNv5bO4er5vkTguo6vob5BfG/u ZRgutflT07RZOfdG1KODfWJhFXht04rIui0WQq6gU7RR0qvNBT0lTR5X3Xui1ds7K/nY/wA0zZeV +LHfvxr6f/lcfFXf1HDtz5JbwxHyS258me++2eushH4d1df9Qy9cUtPi8LT5SNZKLKfxlFMlLUWS qmhiqaHJe691sNbA662X1dsHY3WGxNv0WA2L1ts7bOwNk7fp1eWkwG0NnYWHb228JSyVReQxUtHT wwIXdmIUEkm59+691XH/ADovhF2P/MJ/ltfIf4kdLVWycL2d2lUdQT7Xy2+amrxW2qJtid47a7Fz TV2RxlLWTxNJjsTWQwmOnbVI6o2lWZh7r3T7/Mq+FXdvyp6b65n+KHyI3H8X/k98dewcL3B0Vuqi zu5KfqPP7s2/S/b/ANye6tgYkzY7MYHIxqtNLPV4etnpIWnhhhko67JUVb7r3VWvfWL/AJ/X8xXq HdXwT7Q+I/xs+BXXPbG3sp138jvmRiPkRh+9sdunrauyMGK3pjOiel9vSw5vGTbjxLVsEFPuOonU 0sslNU1eMqJFnj917q/rZfxf6g2h8V9n/DWo26m7+iNo9Dbb+N52vuwxVx3H1dtvYUHW8eK3DJRJ TrJJU4yAJUyQJF62Z4xGdOn3Xute7ZHwW/nI/wAomfcuzf5Yu6+k/nT8Hq/PV+4Nj/ED5P7jreu+ 3ukJtxZqqr8vt7qLtSSrosQ2MUGmqJf4lkY6V5pKuSnwlLUSS1NV7r3RRPnn8Bf54/8AOuyHUNN3 T8Wfht/LZm+OG9K3sDq3u9+/M72r8h6HKVdEi/wHZe9Okqqvp6PGzVUNDX1i1FDSTisoaKppp4/C 8c/uvdXG/wDCfXYp6Q/l7bP+NG5fiT2n8RO6OgNy7h2V8gtvdj7UytPje4e3Y656bcnyB2B2nJSx Y3eOI3OaZZqatx1VULQRRRY2OSbHU2Mra33XujBfynPhz2j8N+g+4MR3lJtCTuv5DfMH5NfLHs87 E3Hm91baTO93b+fIYenos1naSgkklhwlJioarx0EEYnWSyuxaeX3Xui3/Kn+TFtL5IfzTfjP87n3 SMN1Zsynxm8Pk10vFlM1jcR3j3L0TB4PijvrL7fxKLR5aqxK5CqpMlUZuaSOLGYylxtNSuuSrJof de6sj+dvQ2W+Uvwo+Wvxw262LXc/efxw7n6s2lNm62pxmGpd4b16+yGB2jW5XIUkNTJBTQZKelmm lSmmKopbxS20N7r3T/8ADrrvsTp/4kfF7qTt2vx+V7U6s+PfTXW/Y+WxWbyO5sblt8bG68x21905 Wh3FmIKWrr4qmtpZp0q6mmillDa5I0dio917oyHv3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6A 75Jf8yR39/1AY3/3e0vv3Xuhx9+691//094fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdFy +YeGxe4/iP8AKXb2coYMnhc98c+7sNmMbVKXpshi8p1nk6HIUNQoIJjlhkeNwD9CffuvdaGMnw+6 /wB4/GT50/FDq3a+J2TtvcW4uvptl7exdTPicNQb6yHw36i7QxtXNVN53ihqtzsK2ubS4Ill9BU6 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 lVZvBkZdXkyqSGHoRmnDjQkAnqdPuz82z8l+/HK28xzywRHcbSKfwif1IZZ40aKQVAaJiVLghqUD qrOijrRj94XdfUr1737r3XvfuvdTcf8A8XCg/wCoyl/63L79D/aj7R/hPSPcf+SfP/zTf/jp6+hN /L2/7IF+D3/ioHxp/wDfMYX3nv18gXVYH8gv/utR/wCN/v5jf/ym+/de6Ih/woX/AOymeo//ABBe B/8Ae/3R7gb3x/sNu+24/wAEPXXj+6j/AOShzz/zT2j/AI9uXWv17gHrsj1737r3Xvfuvde9+690 B/yU64y/bfRHZfXWAanXObjwdJJh0qmSOOsyu3c7SbsxuLFRLLDFC1ZPQR0izzSCKIyeST0KfYq5 F3mHYeaLXcLo6YqlHPorqVr9gJBPyBp1jj97P2w3P3c9g9+5P2KPxdw8OO5tY6keJNaypMIhTi8q I8cYOPEZNWK9aveUxeSweSyGGzOPrMVl8VWVOPyeMyFNLSV2PrqSUwVdHWUk4V45I3Uq6MAVIII9 5lxyJKgliIZGFQRkEHzHXzG3lnd7ddyWN9G0M0LFHRwVZWU0KsDkEHpU9cdebq7V3pgNh7Mxs2Tz 2frUpoI4o5Ggo6YHXXZTIyxg+GkpIg89TO3pSNWYnj2l3LcbTabGTcb9wkUSliT8uAHmSTgAVJOA OhHyPyVzH7i812PJfKds93f38qxRxoK/Ee52JIVI41q8jsVREBZmAFetu3o7469Ob9oKzrjsHZmN 7A2t1X0/i8nsmn3TE08uNzW2uydl7LxW4AKZ0X7sY2uradjcraeQW5BEH+0d5+8OYd3vyNPj0kp6 a5Xan5V66q/3j3LY5N9mfbfk9ZPFG1BrMP8Ax/TWNrBq/wBtor+fX00Pc+dcfuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6A75Jf8yR39/1AY3/3e0vv 3Xuhx9+691//1N4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdAN8qP+yYfkd/4gbt//AN99 kffuvdaV2x+x9qde717v/jm5euQm6d69X5fGI/e/x1wmQp12x8UOuOq9xY7N7e3bu/HZTHV1Dntu ZegqaKvoYpVaDVpKOjEacvb7YbXYm3udWouWwK4IUevy6kvlDmratk2trS+16zIzdq1FCqgZqM4P Rd/lntn+XR2/g8t2n8m+vuqd4x7EwldmMpufb3efTK78fD42kV5acDpjsCPcea8MUKrS46JKpxyt PDqchld7u/K1+3iXUbM3qFIP5lWFfz6X7lzByLuz+LfQOz/xBSrH7Sriv51xjpUfGPB/Ajofb9Bu n44bG6e2LTbzwVHlKfP1Xe/x/l3zVYDcFHSZKLH5DK9k7/n3FRxSrDSS1GKq5Iik0a+aBJ0IG7Pe eWbA/wCKxspPnpJP7SxI/Lj59W23mXknaatYQujH8Wgs3+9MxI+dKV8+rLPiV/MG6b+N3ftd2Huu ipN1bbyPT+5dlrJsj5C/CGorKbN5TemBzlIlVSbq7WxB8ZgxtQWkiLgMUFuTpI+ZN1td0lie1rRA QainEjoL8579Yb7NBJY6qRqwOoUySCKZPp1aB/w/V8Sv+eF7A/8AR5fy8v8A7ePsN9AvoqPzH/ns /ErM9WbJxCbM7Gp6h/k78O9yRPF2n8H9wK9J1l8qdn9t5+GWDZ3cOTqIC+LwFckFTUwx0izmJamo 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 YDJwU7027qXbCVlalbilmqoaOqqKecy0k7wrWQU61dC9V7r3Vn3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de6A75Jf8yR39/1AY3/AN3tL7917ocffuvdf//V3h+v/wDmcff/ AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+690z5/A4PdeCzW19z4bF7i21uXE5HA7h2/nKClyuFzuDy9I+Oy +GzGLrkkgqaWqp5JIKinmRkkjZkdSpI9+690B/8AsonxT/7xr6H/APRTbE/+offuvdNWa+FPw73L iMlt/cfxT+OefwOYo58dl8Jm+luucriMrQVUZiqaHJY2ux0kM8MikrJFKjKwNiCPfuvdSMf8NPiJ iKChxOK+Lvx7xmKxlHTY/G43H9OdfUePx+PooVpqOhoaOmx6xxQxRqscUUahVUBVAAA9+691N/2U T4p/9419D/8Aoptif/UPv3Xuvf7KJ8U/+8a+h/8A0U2xP/qH37r3TNmvhJ8NdyQUtLuH4n/G/PU1 DkKTLUNPmuk+t8pBSZXHv5KDJ0sNdjZFjqIGJaGZAHQ8qQffuvdPP+yifFP/ALxr6H/9FNsT/wCo ffuvde/2UT4p/wDeNfQ//optif8A1D7917r3+yifFP8A7xr6H/8ARTbE/wDqH37r3TFXfB74X5PN 4Pc2S+JXxryG49rx5aHbO4K7pDrWrze3Ys9BHS5yLBZWfGtPSLWxQxR1a08iCZURZNQUAe690+/7 KJ8U/wDvGvof/wBFNsT/AOoffuvde/2UT4p/9419D/8Aoptif/UPv3Xuvf7KJ8U/+8a+h/8A0U2x P/qH37r3Sej+DHwrh3NU71i+Ivxni3lWYeHb1Xu2Po3rNNzVWAp6r76nwdTnlxgqno0nJmSmaUxq /rChuffuvdKH/ZRPin/3jX0P/wCim2J/9Q+/de69/sonxT/7xr6H/wDRTbE/+offuvde/wBlE+Kf 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 Q6/3Hvb4HfJL407K+J3yM7c2liJdz5/4k7w23vr+KbG31uTbuMoJsgdpZOoOOo6yalqwHqKmZmgl rKTF0uR917q+PrGk+L/duY218xeoaHpjs/cW7evpdh7W+SWx6LaG6NwZnrSl3JNX1myMZ2biUlqm xcGYjqGqsWtWI4q2OVZolnjcL7r3Rg/fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+690B3yS/wCZI7+/6gMb/wC72l9+690OPv3Xuv/W3h+v/wDmcff/AP1H9af+8NH7917ocffu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691xJCgsxChQSzEgAAC5JJ/Hv3XuuKSRyi8bpIoNiUZ XANr/Vfz7917rJ7917r3v3Xuve/de697917r3v3Xuve/de64syrYFlUsbKCQCxteyg/U+/de65e/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3XusSzRO5jSWNnW+pFdWddJsdSg3FjwffuvdZf fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691wd0RS7sqKLXZ2CqLni5PH19+6912CGAZSGDAFWB BBBFwQR+Pfuvdcvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Uer/wCAtT/1Dzf9az79 17rU9/4Tdfy8vgR3X/Jv+IHbfc3wm+JvbXam5q35AT7g7J7N+PHUu/N+ZqXb/wAn957dwLZPdu6c TVV832VBRUlHSh5yIoYY400qgA917raN636t6x6b2pRbE6h652J1VsfGPJLjtm9b7Q2/sbalBJMF Ez0W3dsU9LRxM4VQxjhBNhf6D37r3WtN0N2BB/Lf/wCFCXza6d73qH2f0x/NxwXTvdfxY7S3FL9t s7Md39WbeqNs7y6fk3BIiUVNmK+qyGXNLSVE6yMsOFgVWnytGs3uvdbS3v3Xutdj/hRv8gkn+IVL /Lj6cek3n8yP5jO69hdH9S9XY96KuzeP2Jk+wKCfsPs7c1DNIgoMHDR0k+JTKVTxxrVVAlRmSjqm h917oNv+FCnT2B6H/wCE9+a6Bwc02V2x0zj/AINdP4eoyIWWoyWB677g2XsvHzV6vcM81PRo0oNw STe/v3XurgMF/K1/ll7XylLm9ufy7fg3gsxQzQVFFlMR8Tuh8fkaOopqhKqmqKWtpcCskckcsaSR ujAqyqwIIB9+690eiClpqWmhoqangp6OngjpaekghjhpoaaGMQxU8MEYCLGqAKqKAABYC3v3Xutf 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 ogDvTTzUdfQVUbL5EqqKdRPTVUMXuvda7nRXXNJ/KV/nk9U/Cj43bnqU+Gf8zXqfujuJvjRXbtfK 4r45d29Nbcrt2Zbf2wtvZAT1WOxm4qXGtjkKVMcdaxnimSb+CULRe691tM+/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917oDvkl/wAyR39/1AY3/wB3tL7917ocffuvdf/X3h+v /wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdJHf001PsXetRTyyQVEG09xzQTwu0 U0M0WHmkjlikQhlZWAKsDcHke/de6V3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3XuqIfl7/JBl+U/fXaXyCp/5nf8AM76Gn7CmxdfD1T0b8jW2d1BsyXCbTott x0+09opQOaaCoNCK2qjFRd6iaZwy6+Pde61w/wCQb/Lz7g/mw/C3ePyT7t/ms/zUuvN37c+Q+9+n 6XB9WfLPdFLtufB7Y2JtfddHk6iLdsWUqvu5Js7URylakR6I49KK2ot7r3Vzn/Cj7K9qfDn+Rxhs D073z3dht69Vbq+MHV9P3XR9jbiwHcm7Mft8JtnIZ3du+trTUNXU1+XSmFTlpFdVqJndmWxt7917 rHtH/hOdWZvae2MzkP5yf85IV+X29hcnXii+W0sFGKyvxsVVUikgnxszpHrdvGjyuwWwLseT7r3R wfhv/JS/2T/5EbF+QX/DlP8AMu+Q39x4N1wf6JfkV8iP7/8AUe5jurZ9ftHzbk2t/D6f7iSh+++/ oW8o8dVDDJzpt7917qrj+ZR/O73t/Ku/nwbE6+7OzuY3B8I+5vif0dD2zsmZqzKRdbbiqOzt6Y6n 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 Kd1yNTU08zTx0lKy+691cP7917r3v3XutVb+eZ8pu5/lt371X/Ig+CeeyeN7j+QzYfcfzJ7e2xko IY/j58f4fDuefA56so6iKopZcrjIzlctTmanmqMa1FjqZa5s21MPde62auq9hRdV9ZdedZQbo3nv iLrzZG1tkx717G3BPuvsDd67XwkGF/vPvjc9WFkyGWr/AAfdZGsZF8s7yOFUEKPde6X/AL917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917rHLGJY5Iib CSN0JH1AddJt7917okP8uH4PbS/lwfDTqD4abG3xuLsfa/T79hSYzeO6qDG4zP5g9hdoZrtCtFdQ 4f8AydPt6jNS0sXj+scaM3qJ9+690eL37r3RO/m98DvjH/MO6TyfQvyk6+h3rs6oqP4rt/LUNZNg 967A3RFA0FDu/YW6aP8Afx+Qp9VwbPBMo8VVBUQM8Te691Tf/wAMqfzK+uaKr6++Nf8AwoF+WXX3 Ryp/DNv7N7j6O2V8iextr7aRUio8Fiu6M/uLE5CIUsKmGkko6OlEMYjSONVT1e690dD+Xd/Jo6H+ Bu9ty/ILdPZnbvzC+Z2/6D7Lfny0+Sm4Zt39hy081GlDXYvZFNWvUHC0EsaeILLWVtasLSUxr2pX aH37r3Rm/wCY98GdqfzHPiZvr4m7131uHrfb++NwddbhqN27Wx2Ny2ZoKnrnf2O3/j4IKHLEQOlR Pjo4JtRBEbsVIYA+/de6PT7917r3v3XuqOe+P5OW74PkL2b8sv5b3zi7S/lu96d+ZKLL/Iei2t1v sjvzoPuPPRLWztvvP9Cdiy0uLi3RPVVjT1OdE8hYefwwQVFdW1U/uvdCB8N/5UFf0r8iqn5q/ML5 X9kfzA/mdSbczGxtgdvdk7H2X1ls3pXYmdhNPmMH0v1Dszz4/b9RXxS1UGRrKSqCzR1FSsVPTfd1 pqfde6Fv+ZZ/Lmo/5i2zugcHH332L8cN3/G/5B7Y+SHW/ZXWWG23mdzYvfuz9v5LC7eqIIN0pJTR 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 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3SO7E/5l/vr/ AMM7c3/ukn9+690sffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvdR6v/gLU/wDUPN/1rPv3XutSf/hGB/26i7U/8Xi7b/8AfN9d+/de6Gn/AIV2/wDbmnf3/iee h/8A3pZvfuvdI/ZH/Chj5IUmy9oUsP8AIQ/m3ZOKm2vgaePJYroHfdZi8hHDiYo0rsbWrt0CWnlA EkMoADIQ1uffuvdHx+CX83Tub5ld+0PSu9v5UX8wT4h4Ks2tuXckvcfyO6k3VszrWjqMBBHLTbfn zWWxFHCK2vaTRSRGcFirWBtb37r3VZvyO6q657x/4VX7M6j7c2dg+wOtuwP5SGf23vDZ+46Ra3EZ vD1m9N1eSCeO4eOSNwk1PUQuk0EyRzwSRzRo6+690nfjl2H2j/wnI+WWL+EHyS3ln99fyjvkxvrI V3w/+R28Jo/tvilvTdOQqMhkOouycxS0NPSUNLPXSeSuGuPHFJUztItA8maoj7r3Vx38+ySOb+Tb /MHlidJYpPjtnpIpI2V45EfJ0TJJHItwVIIIINiPfuvdDr/KU/7dXfy1f/FCPiF/8D/t/wB+691X R/wpY+duY+JP8v7I9J9UyVld8mvnjnJPjD0nt7DiOXPS4rdIgxvau4MdSyxsJDHi6+HBQFHSSOuz FDKh9DEe691WV/MS/kbT/HH+Q98cqfoOmlovmd/LBiT5Yf392E9VS7j3TvLOVNHuv5VnGZuikSsa Kn+1p8zip43+58G2sbRweNW0D3Xutlb+V984NtfzFfgx8f8A5X4H7Sly2/8AaEND2PgaTwRptftj asrbc7IwKUkM9S0FOuUp56jHJNMZWoZqWWQK0lh7r3VQv/Cu3/tzTv7/AMTz0P8A+9LN7917oIvn j8Au0P5fO/thfznP5U2w8bhN87S6/wBr0/zk+JuyMLSYXZfyQ6cEVFk917twm3cFRtHSZlUjNVuC SGApMYYs4qw5Kjqqmt917rYV+C3ze6F/mGfGnr75RfHbc0ed2RvWjNNlsPUvFHufrze+OijG6euN 84tSWo8ti5pFSVCPHPC8FbSPPQ1VNUS+691r9/8ACe//ALeb/wDClL/xf/Ef+/U7g9+690m/jhta s+Uv/Csn509ldnPLnsH8Afi91xsbonEV+UeWDZea7D2VtpjXYrGxU8aSRSjcG962QVEjtDVV6SIX KQtT+691tz+/de697917r3v3XuizfMT4pdV/N/4z9xfFfunHz1vX3cezq/bGSqqIxpl9uZMla7bW 8tvTyAomRw2ShpcnQmRWjM0CLNHJC0kb+691oR7BxH8zL5j7066/4S6910s+B65+Jvb02Z+S/wAj cDvPcQ3TvH4O9b1dBm+osTPRZSlnvjxFVUMu2Jq2Fqerar2tSyUeNTHtVVXuvdfRF6/2Fs7qvYmz esuvNv4/aWwuvdrYHZWy9s4mN4sbt7a+2MXFhcDhqFJCzCKmpYYokLszELdiTcn3Xulh7917qn3+ en8Pvj580v5cXcXXnyM7b2v0JtrYlRiu3tld070yM9Btjr3svaUFTjNt1mYgpnElbFk4cjW4H7KC GpqJWrwaOkqq1aaB/de61lvg9/wp2/mJ4b4uVeB3H/LH7m+flV0zjKvZWL+YPR2O7Xw3W+/KLatS 228VunstMbsXOU8FS4jp3rayCspTUuxD0dHMzH37r3R3P+E2OJo/m/8AIf5dfzle9/kfsHs/5l9w 0MHSuf8AjnsCgqMHB8TutlraCXD7f3FgdwLJXqchTbbxlNt6ehqZaT7SlrTW1uQzlRkocV7r3W4f 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de61V/5bH/AHEt/wA9j/xG/wAX/wD33u2ffuvdXjfzOf8At2x/MK/8Ud+WX/vh c/7917rT5/kb/wA5ru74pfywfjh0Ds7+UJ/MX+Uu3ev6ruZaDvToDp/d27+q96ndPfG5971abdzu LwtVBI+MnycmJrUSok0VNLMrFWBRfde6ut6g/ny/IftLtbrTrXJfyNv5qfW+N7A37tLZmS7D3z0X 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 sjj67HbYpq2gr6KpVo5oZo2aOWKRSrqSrAgke/de6BnfWzey/wDhNL8xsx3v1nDurfv8lX5h76o2 7t6zpYq3M1Xwh7kzmRio4N+7fpaSGV1wj0zGOmqY1MmRpo1xWWL12Pw+Uqfde62d+7t8bR7M+Fvc XYuwNxYrd2xd9/GPsbd+zt1YOrSuwu4tsbi6trctg83i6yL0yU9TTSxzROPqrD37r3VTH/CXBxF/ Io+FMpBIjl+TLkD6kJ8t9+sQPfuvdEP/AOElGDpu9esv5gv8ynf4ocx8gvln8z98YHeGZGGo6P8A gu39v4TGdothtvzM09RTUlZkt4TvU0oqWRlo6EP5Hp1kPuvdbfXv3Xuve/de697917qmf+d//Lar P5ifxFni6pq6rafy/wDjjl27s+JHZGBqaXD7twnYmAEOQyWyMXuaQwz0UO5YKOGmDRV1KiZGDF1k 8wio2Vvde618P5ZO5flH/wAKH/nH0t8pvmz11jtjfGj+VZt7FbPbrf7WerxPbfzjWjpZ927ozAej xkMMsk9PSZvNYCFKikx1PSYrFy08qZGSsm917ren9+691737r3VZX83L+Y3sr+V58Jezvkxn1xmW 31HHBsnpDY+RWeaPfHb250eDbNBU0lJLTyy4/Hqs+Zy4SpgLUVJPFHPHUSwX917rSt/kq/zc/j38 BOue7fm58uviV8/e6fkL8tewdw53vj5v7Z6B2tl+p6LA/wAfqKvB7C2b2NuHcVAk8dZWolfmihoE mrDTUzU0q4inqp/de639/ih8tPj/APNvpHanyH+M/YmJ7L6s3ca2mo81jlqKWtxeaxM/2mb21uPD Vyx1NBkaKX0VFLUxq2kxzRmSCWGWT3XujIe/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917oDvkl/zJHf3 /UBjf/d7S+/de6HH37r3X//R3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd I7sT/mX++v8Awztzf+6Sf37r3Sx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691Hq/+AtT/ANQ83/Ws+/de61J/+EYH/bqLtT/xeLtv/wB83137917oaf8AhXb/ ANuad/f+J56H/wDelm9+691sjdd/8y/2L/4Z22f/AHSQe/de6WPv3XutVffP/cXt03/4yryn/vbb q9+691sFfMT4gdF/Ov49dg/GX5FbV/vR1v2FipqOeSjliody7UzaQumG3tsjNyRynH5jGyOZaOpE boQXgqIqikmqKeX3XutGz5Y/K7vv+V38BvnH/JC/mL5/cW/MdXdAZjD/AMt35Vwbdz2UxHb3WbZm CHbPVO45aFayXGy4ymh+1ooq+aRMUYJsc9dLj0xkq+691uVfylP+3V38tX/xQj4hf/A/7f8Afuvd aovaHxc7j/4UmfzSfkj3L058t93fFv4v/wAt/NbL6c+MPefXeBzO58pnO3dv5mbNbh3p1rPt7c2E o/uHy9NkMvBuzGZaCup6NcFTS0rExzU/uvdHYq/+E4X8x2vpamhrv+FJ/wDMTraGtp5qSso6ur72 qaSrpamMw1FNU003dTJJHIjFHRwQwJBBB9+690E/8lbZG/f5I/8ANC7i/kv9xdj5Dsvp75QbBwPy R+I3Z9bgZNrUO5d+be2xND2LFS7Qo67Lw4n+J0WLyOPrHrMkGar29RR06TfxBH9+690cr/hXb/25 p39/4nnof/3pZvfuvdbI3XgB6+2MDyDs7bN7/n/cJB7917rUs+XvRu//APhPh8stxfzNvhpsnKZz +XD39ubFR/zCPiztGGiSh6qy+WzLU9H2/wBVYmVoKeio1qa+STF0DSR0tFWzTYqGakx2UpqWD3Xu ov8AwmK7d6/+QHzc/wCFAneXVGcfc3WPcHzE6+7M6+3FJisxg3zmzN6767Z3DtrKyYbcEFLXUrT0 lRFKaespopoydMkasCB7r3WbuzeeL/lRf8KaYvkz3LkKbZ/xP/msdA7d6kre0c5kK7E7G2J3hs+l 2/tWhgzdU4NGrRVO2MI1dXVhjpqCk3G9XNUwxRzh/de63BwQRccg8gj8+/de679+690HmN7a6tzX ZO5+nMP2PsbKdtbKwOF3RvDrPHbqwlZv3a229xsyYHO7g2nTztXUlLVlb0888Co4ZCDaRC3uvdCH 7917rU8+Iv8A3F3/AM1D/wAUA6f/APec6O9+691th+/de697917rUO/4Ui4mDv75yfyOvg52zubJ YX4n/Ij5PbmyHc23qesyGJxm/s5t7cG0tu7T21lMpTSIFlqKbM5TE0DIVkhfJyTKdaxlPde62zdp bQ2psDa+A2TsXbWB2bs3amKocDtnam18TQYHbu3sHjIBS47EYXDYuOKnpaaCNVSKGGNUVQAAB791 7rTl/mL4rbXwh/4Uq/ytez/iLiY9q9qfONz158wOutkR1NPh9+dd7k7DpNl1vaW7tpYVfHJPLQtk slWVs8RgM+3IclIqVdPUVj+691ufe/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XutVf+Wx/3Et/z2P/ABG/xf8A/fe7Z9+6 91eN/M5/7dsfzCv/ABR35Zf++Fz/AL917qtv/hLX/wBuLPhL/wBRHyX/APgud+e/de62Bvfuvdaq /wDwpa/5m9/Iy/8AGqnTH/vT4P37r3W0buPbm3t4bezu0t24LDbp2runDZPbm5ts7jxlFmtv7i2/ mqJ8bmMHnMPkklp6ujq6eWSnqaaojeOWN2R1ZWIPuvdaeVbPuj/hL/8ALGeukO59y/yQvmD2VPNN T01NlN1Zv4Ud1bihE0jQUlDDLWV+KeKBhDDAs2QrcRTaAuQyGHUz+690Lv8AwjfqYK3+V/3bWUz+ Wmq/nx3ZU08ml08kM/U/X0kMmiUBhdSDZgCPyL+/de6DP+e1R71/m4/zCPjB/Ir6O39XbH2rtHDZ r5R/NLsrH7bfeGJ62jg2jLL1NQ57EQ/ayNUUtJVLNDSyZSmpqufcOJSSWOSMPH7r3Sjwf/CbL+YZ tnDYjbe2/wDhSD/MI2/tzb+Lx+DwOAwbd4YrC4TC4mjSgxeIxGLoO6I4KalpoI44aenhjWOONVRF CgAe690QbJ/EPu7/AITX/wAxz4n/ADs7Z+X3ZHzG6D+Z2/N0fHD5od1dh7PzGG3Lt+XeEFBX7UzG /czlMzvLJ5aSOalfclPULWx1MwwU9IfRJ+57r3W4P/M2dZf5a38wh0ZXR/g38sHR0IZXVuhM+VZW HBBHII9+691W/wD8Ja/+3Fnwl/6iPkv/APBc789+690h/wCcN/Lg7rx/aG1/5uX8svHRYT+YH8dc fHX7768wuLjlxvy76qweOlpctsrc+3qAwPmc8mMMmNph5lra3H6aGlmNVS4yE+691Uz8BP5l/U/8 1n/hRn8U/kv1ZtTd+wKvDfysd29U9q9f7xp4fvtjdv7b7D3Xubd+28XmKY+LK4yKLNUUmOyqxQPP DIpqKSjqVmpYfde6Ph/wpM25vn439n/yy/5vOwdvZLOYj4EfIhcN39TbbpZ5dyVPS3a+WxVNUiSq 8E1NT42QUmVwFRPVBbT5umSGSN5C3v3Xutmvp/t7rbv3q/YvdHT278XvzrHsrbeO3ZsvdeGeb7LM YXKQ+WGRoKpI6imqIm1QVdFVRRVFLOklPUxRTxSRr7r3Qk+/de6DzdXbnVWxN27A2FvfsvYO0N89 r1+WxfV2zdz7v2/gd1djZLAUaZDOUGxdv5Soiq8tNRwSRS1UdBFK0SuhcKHW/uvdCH7917rWA/nN /wDb6D/hN1/4nH5g/wDvPdde/de62f8A37r3Xvfuvde9+691qs/zfcjmP5of8w/4q/yTes8vO/Ue xcjhvl3/ADIctg8x9jNh+qdtGGfZXVldNj6tKqOfKQ10Aennx9TTNUZ3A1upGoZCnuvdbSWFwuH2 3hsTt7buKx2CwGBxlBhcHg8PRU+NxOHxGKpUocZisXjqNUhp6angjSGCGJFREVVUBQB7917p09+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691Q9/wpr/AO3HHzu/7UXR3/wTuyffuvdH a/lKf9urv5av/ihHxC/+B/2/7917ql7+cf8A9v1v+E7X/iSPkj/7i7W9+691tUe/de697917rUX/ AOE4P/bx3/hSh/40Uq//AH+3dXv3Xurgv5uH8rfZ38y/omgxmD3AvUvys6Xrajf3xT+QuMkqsVnO uOy6CL7rFY7K5/Cxvk48FXVcVM1eKEmaCSKGshSaSnNPP7r3Wop8pf5p3aHynm/lWfBT5z7EzfUv 8zb4i/zgviXB3ztaq27VUmA7K2dg8hNtzH924fKYqlXB08uUlyNDJU0eOqpKOqFRFlMOz46q+3oP de63+e9u6NhfHLpbtfv3tLKHDdddNdfbt7L3pkUET1EO3dm4SbO5KOggleMTVUscBhpKcOGmmaOJ fU4Hv3XutET4A/ygvm9/NxrO1f50NV/MW73/AJeHavy/7R7WfYmO6Wxe7sjuep+PVPuCjx22cJF2 Htjf+2cpBg6epxX8HosHURGM0+HoqoakeDR7r3R8+0f+EuvzU7w2NmusO6v+FB3zc7e613L/AA8b j687R292x2BsfcH8JycObxf8a2nuzuKroKr7atpqerp/PTt45oo5Us6Kw917o2X/AAmw+T2/YOpf kB/Ky+SuW0/KL+Wb2puTqj7HI5Kasr9z9EHOz0uyNw4evzE/32UosbWJU0MNclDTU0WLqMEkUaiV R7917pC/zj/+363/AAna/wDEkfJH/wBxdre/de62Zu1uquue8euN5dQ9ubOwe/8ArbsDB1m294bP 3FSLW4jN4itUeSCeM2aOSNwk1NUQuk0EyRzwSRzRo6+691pb5XsPtH/hOHke+Pgp8idx7/7P/lOf Jjr3uiX4Ud7ZHF5XeOb+N+/t17UyctT0tvSPbOPep01eQqR91FTQtTStLFmqKGikqMzSH3Xurgv+ EtoDfyLPhMrAFWqPkwGXggg/LjfoIIP49+690QT+QJvKh/lz/Of+Yj/JN7iyEe1svF37uH5M/D6b Py4unqO2Ott5YGFK6HHZIVJNbkDtnGbdy8dFEjyqIcx5TG1G8S+691uB+/de697917oOet+3uqe4 8duDLdS9k7E7Nxe093Z3YG6chsHdeD3bR7b3ztiZYNxbQztRgp51pMnRGSM1FFOVmRZI3KaJEZvd e6Eb37r3WsB/wlh/7Jr/AJkH/jX35Z/+8FsL37r3Wz/7917r3v3XutOT+dZtfbvyg/4UB/yUvhv8 jMZh634oS7Z3121/C9xUkz7f392jNWZ7IS9f50NqirKevqNmbQxT0DJpkTKSRT6oqgBfde62/H2r tiTbDbJk23gX2Y+Bbaz7RfD49tsPthsf/CW242AaP7Q0BpP8lNGYvF4v29Gjj37r3WoX/IWosf8A Gn+cv/Ov+BvQFLU1Hw62PubB9mbVoaXLVtVtXp/sX+Pw4+o6y27iqmpkjpxbM5nEvJHH5pItuU6V UrtDFb3XutxP37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3WGdzFBNIoBaOKR1BvYlELAG349+691qC/DT+ZT/AMKVfnj8bOt/ld8f/iJ/K+yPUXap 3h/dKs3TujuTbOdn/uPv3Kdb5777CVO+neDTk8PWpFqY64wkg4cD37r3Rl2/np/K74c772Xtb+cV /LT3v8QOsN/bjotqYH5XdKdgY35F9FY/cGar4qbB43eMWy4auXFhoTV1MqfxObIvHTO9Niphr8fu vdXl/K/vTI9M/DP5J/JfrCTae7Mt1T8Y+4+9OvJck8+d2NuXI7F6qyO/9pSV8m3qullrMTWS0tOZ TQ18LTU7nw1EZZZB7r3VDfxq+VX/AApb+U/x/wCnPkj1z0v/ACcsbsHvLrva3Z+zKPd24vlpjdzw 7Y3jio8zhf45j8Vk66ngqGp5Y3kijq5QhOktcED3Xurdfgxmv5o2Qp+1Zv5ku1PhRtiWkTaLdORf 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 JujvFfyp7r3Vmf8AK3/mX7Z/mTdUdkZus6q3T8e++/j/ANoZzpb5H/Hre2SosxuDrHsHBzyRKseV o44GqaCsENQkElTR0sy1FPVwNC0cMVTUe691Sh8cv5m3/Ch35s0vdO/fiT8Vf5a+5OoOr/kZ278f 6LMdiZ7uDaW6KzK9W5qOkmmrsW299LF6Wqo5GmjVUZ2cKihbe/de6sE+GH82L5H5f5mYf+XB/Mu+ IlN8UPlbvrr/ACvYvRm9Os94Hsv4/wDyDwu1KOuye9YdoZqL7iXE1NFRUEtdHTVmQqXKrPT1Yoai OjTJe691fR7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917oDvkl/wAyR39/1AY3/wB3tL7917ocffuvdf/S3h+v/wDmcff/AP1H 9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3XvfuvdI7sT/mX++v8Awztzf+6Sf37r3Sx9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691hnQywTRqQGkikRSb2BdCoJt+ PfuvdUc/8J+v5Zven8qX4U75+N3yD3Z1VvLee4fklvvt3F5fp/Nbszu2RtXcuwtq7VxlLW1O8cLg qqOvE+Dq3ngjpZIlR4itRIzOqe690vv5638vruj+Zt8Adz/FfoPcfWe1ew812Z1pvKly/bea3RgN nJitm5eSvykE+R2hhs7Wid0cCBFx7IxuGdBz7917qvvDdJf8K18HiMThKT5QfyiZKXD42hxdNJUY Luh6iSnx9KlJC87xddopcqgLFUUE3sAOPfuvdHb+CWwv5/G3u/aHJfzEe7f5fm+fjgm1tyxZDAfH HE9k0nZU28JYI12rUwTbp2jh6UUUUnlarH3ocjTpR+R7917qduX+XH3Zl/56/Xv8zyk3T1gvRG1v hZkfjjlNo1GY3TH2u+859w5jL02VoMLHh3xEmMKZKNXlkzccylGtAwI9+691dT7917qt7+aT/LL6 K/mpfF3cnx57iibAbhphVZ/pztzF0n3O5uo+xUpDFjdxUVOssH3+NnYRw5vBzzrBXU4FngrIKKtp Pde6R0/xd+X/AFf/ACe9g/C345bz6hw/y+2D8Ken/jFguyN1bk33g+rMFu/bPWWI6u3tvzB7j21h 6nOxtS0sGRr9uz/whZPu1pHqIo1Eij3Xuln/ACnvgBt3+Wl8HeofjBQTYfL74xdHU7z7u3nhby0u /O693rHWb53AmTlosdPXU1MY6bC4qurKGCplxtBRGpiSfyD37r3Vj/v3XuqSf50H8sjtz577Z+MP a/xP37sHqT5ofDbvLC9udIdhdkVGdotpfww1FPV7n21l6zbuMzM0byVePxNdSTzYiuiQ080BgArH mj917pz/AJ138v8A+Qn80D+XJL8Xetst1B153PuLe3T299wy713ZvGXrTDVG06z+JbxxeH3RhNu1 OTrljleSPGzTYOlNQqq8yUhYovuvdXB7VxVRg9sbbwlW8MlVh8Bh8VUyU7PJTyVGPx0dJM8DyqjF CyEqWRSRa4B49+691k3Ltrbu89uZ/Z+78FiN0bU3Xhcrtvc+2twY6kzGB3Ft/OUMmMzODzWJr0kg qqSrppZIKmnmRo5I2ZHUqSPfuvdUxfyov5PG1P5UffXz7yvTm4aGr+N/ykz3Rm7Ontj1Vdma/ePV U+xl3l/fHYeYrMlEy1eKpWz1AuAyDV89XLAJYq5RLTiprPde6Pf87vgb8cf5jfx73H8bPk7tOp3D sbM1MWZwmYw1bHid59f7yoqOehw2+9iZuWKdKTKUSVM6xNPTz08qSSQVNPPTySRP7r3Wu1s34f8A /ClH+V3iB158L++vjv8AzL/jPtmnosJ1l1d8pJ6rafbez8BBT0+Nx+Noc5l8tgUhosbEgSnojv2o pIqaLRS0ULusQ917oWa/df8Awq6+UWGr9gwdN/AP+XNS1uQnFZ3BW74Pbu+aTA/fGeKg2pi9uZXf uOFS9IyUc1TVYyB2dZZ6eSgZoTF7r3Vg38rL+TV05/LXqOwO2Mx2Rvj5R/MfuqbLzd0fK/tuWpm3 pualzecXceR27t3H1lXXyY7H1FckdfXtPX1dXW1gM9RVNGKenpvde6uQ9+691SD0V/La716z/nsf NT+Zvntz9VVXQfyM+L+w+ldj7WxOe3ZP23jN1bXxPXFBkK7dOArMHBiIKB32hkzDLS52plIkptUC F5RD7r3V33v3Xuve/de6qo/m4/yseuP5qnx3xPWmc3TVdV9xdXboi7D+P3eOGoDV57rTe0KpHWRh qWWmrP4fkY4oBVpSVkMiVFPRVg8rUawS+691SNt7eX/Cxf4+Yd+kKboz4NfL+k29TfwDCfJ3dW6N r0u4s9QLTfb0OclR9+dfyz1FKjJrnzOzfuJ5Iy9R947ySTe690dj+V7/ACcPkH1b8q91fzO/5ony AxPyc+f279sPtXaNDtKmjTqvoHb1dQVGGrqTZUxx+LDVLYmofExUmOxtHj6RJsjJpyVTXCsp/de6 2OPfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3VK3xJ/lyd2dB/zeP5knz73bunrDJ9PfMXZ3TeC6425t7Mbpqex8Dkevdt YnB5k70xGRw9LjYIZWx7vTSUWWqmYOoeOOxPv3XurGvmL1DuX5BfEX5T9CbLrMJjt493/HHvDqLa eQ3NU11Ftug3L2V1nlNmYKt3BWYymrKmGhiqq2J6uWno55ViDtHDK4CN7r3WrT8Lf5cn/Cnv4EfG 3r34pfH/AOSv8qaj6j6wl3fLtOj3avd25c7T/wB+N75LsLPJV5uTriF5w2TytbJFrW6Iyxg6UW3u vdHq6h6u/wCFSFJ2t1pV92/JD+VZkunKTfu0qvtbG7G2/wBvneeU65p89BNvTG7TbI7Go6dcjUY5 aiGikmqokSVkZnAHv3XujJ/zdf5cfdnz737/AC39zdRbp6w21jPiB809h/I7suPsXMbpxdbmtl7T ymPyVXitkQ7bw+VSpycv2bpHFXS0cI1Amf6j37r3V1Hv3Xugl726L6n+TPT3YfQneeyMN2L1N2pt qu2nvfZ2dikkosria4B1khqIGSekrKWZIqzH5CkljqaOqihqqWWKohikX3Xuq1/5Of8ALKzH8pz4 7d/fG7Fb0xXZu0tw/KnsrubpbLVNVW4/Nv11uzrrae3tt7f7IkFAIaXL0tbha2mrJsdFVQSQCGrj CyTPRwe690G/8oH+WR3X8Pt//NL5Z/NTdXVPZ/zc+aHdGR3Tu7e3U2T3RuLZe1+pqIJX7V2FtHIb /wANicxj4fvZqgVWLUy0cdNRYiCBtNGoX3XuryvfuvdEO/mY/CLav8xL4Qd//EzcqYinyPZGzKqT rvcOaWRaTZnbG3XGe603a9ZS09TU08NLloKZa96WB5XonqYAjrMyP7r3Rf8AqP4lfMep/k37s+Cv yS3x1Du35UV/xB7t+LWP7N2vubeWS633Gub6+zHWvTu6N05rM7focvDNHiqjEx7ilXE1MrTw1NTG appQp917pXfyZPhP2j/Ls/lufHX4e9z7g2JujsvqU9tSblzfWeRz2X2TVv2B3fuXs7GJhMjufG4i ulENHmaeCdp8dD+8kgUMgV2917q0P37r3VJWA/k19ZdT/wA4HCfzR+iJds7Ep98da9qbW+RHV8FJ VY6LcfYW9KOEUXau0Y6CKSlFZkpUvuCnl+2DzB68SVFRVTIvuvdW99m9abE7k693p1T2jtfF7167 7D23ltobz2pmonmxme29nKNqDJY+pETJImuNzolhkSWNwskTpIqsPde61Wz/ACcv5q/8sTfe8N0/ yS/l7srPfHTde4ajeNd8Hvl/UZXNbPwmQkijgfAbFzJhnp1ilCgPkqetwGQaCCipKmsq1gaeT3Xu hKwnyL/4Vj9hJT7Nn/l/fy8+hMjlYqamqe4t3dtR7s2zti9VVivyMOzNldi7gyMk328tB9rGaSqj SWnqHlWZKqKGl917oYPg3/Iv3ntz5S4n+Yp/NN+Sk/zw+cWApMceuI48ZUYboToLJ0U89XFW9bbY qo6RauaimqJajDEYnGUGPnlmq6bFJXCmqqb3XutjT37r3VOH8wH+Xr3L8q/5gP8AKV+VvXm5utcP sD4G9l967u7cwu8ctubH7t3Fh+0cRtajwsfXdHhsRX0dVUwSYKo+5jyNbQoFkjKSudSj3Xurj/fu vde9+69035N8lFjchJh6ahrculDVvi6PJ11RjMdV5JYGahpshkqWnq5aeCSXSss0dLM0akssUhAQ +691S5/Jn/l5du/EXB/KL5DfMCswG5/nV80PkH2D2N3huvbuQky23sds/C7tyGN6x2nsqb7meCHE SUjS5qkWGno51pKyhoK+linxccUPuvdXZ+/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917qs/wDnC/DftD+YD/Lh+SvxC6YzWxdu9l9x43rmj2xmey8pnsLsiil2h3Ht3sHJtncn tnGZiuiV6LE1McBgxsxaZo1YIjNInuvdGN+EHSO5/jP8L/iR8ct65DB5jeXQXxo6L6X3ZltsT19T tvKbk6v6xxeyc5kNv1OUp6SpkopqmilkpXqKWGRoypeKNiVHuvdU/fzm/wCWj8+Pl98o/wCX38sv gL2T8aevuzPhLW9s5mBvkbkt+QYitzW/JcEMRNQ4vZ22dwpWQxRYyqSpjqWgN5EKEkG3uvdBJ/om /wCFcH/eTv8AKC/88Hdn/wBr337r3Vo38uDaf82bbFN3B/w6X2d8SOx6yun2J/oR/wBlUx+8qGlw 1NSpmP8ASH/ff++G3sC7SVDyYT+H+DzgCKo1eIkeT3Xuiz/ym/5ZPe/wQ+Wv83PvXtndfVO49m/P b5VN3p09Q9fZvduT3Jt7a03Y3YO8pcb2PQ7iwmLpqOvWDdmPiWPG1lfEzxVF5lVYzJ7r3V6Pv3Xu qT/5nf8AJt6z+ePdXxK+WGzajbfXfyh+LHf/AEV2Ad5ZOhrRjOz+o+vO0sdvDdHXO6Z8QrzpWw0s FTUbeyJgmVJtVFUIIKlKvH+6908/zsfgr8rf5kXxw2F8R/j92L1b1X1Vvzt3aea+Vu6t+Znc8W4s j1FtDIwZej2hsXamCwOSgy08+REeWkSry+HMdRjaJEqzHPP4/de6tf6z642b0911sLqbrnCQbb2B 1ls3bWwdlbfppJ5oMLtTaOGhwGAxcU9UzyyeClp4ozJK7O5Gp2ZiSfde6XHv3XuqLu8/5Z3feL/n I/Hf+aR8QN1dTbUxOc2DP0f8+evOwM/vTb9b251jGabGYPdOzYdr4XLU+Qz+PoY6OSCmydTj6dps HiEM4SWqdfde6VPz6/lyd1/Kb+ZD/Kp+YvX26esMR1z8G949r53tfA7vzG6aDem4Mdv2mxCYwbAo sNh6+hqpomxziaPIV9EtnUrI1iPfuvdXUe/de6K58yPh70T88fjv2D8ZPkVtZtzdb9hY00801BUj Hbn2nnadWbB712TnQjtQZbGyt5aafQ8UimSmqoamiqKmmm917oAf5Snwf3N/Lg+A/Tnwy3ZvbB9j ZLpzcXeaUW+NvUVfjKHcm2N9/IHdPZWy8jVYnIjyUde2HzNCuToklnip6wTwwVVXCkdTL7r3QS/z Uf5OnQf8z7E7B3jldzbm6E+VnSM61vQvyo6zEkW+tiTQ1xy1Lhs7RUtTQnMYmCvtkqOmatp6iirA 01DV061NfDW+691Vjtr/AKCyvhnS03WeO2l8J/5nuzKGM0e2u1tz7xpeuey6LDY7HjG4iDedVuTN 7BaqrJGjiq6yWaHL1EkjTLJk5S6SRe6905b3+PH/AApU/mU7WbrT5Hdo/FT+Vn0Juqgqdv8AZmA+ PtVl+1e/tx4l45Iq6IZnGZbL480VdJGiTUFDvHGiWgqJaasM95Im917q8/8Al/fy7vjR/LX6Nouj vjdtWfH0dRNT5Xfu/twzRZTsPtLdUcBhl3RvjcCxx+aX1SGnpYI46Wn8knhhR5Znk917o9Hv3Xuq cP5Lv8vXuX+XR1B8sNg917m613Rmu+fnZ3l8n9rT9Y5bc2ZxeM2L2Vt3beEwGHz1RujEYeVMrG2F nkq4aeCWBA6COol9RHuvdXH+/de697917qnL+cl/KXwP80zpfYMG1uyst0N8qfjlu6Ts34ud74af KQtsveokpauqw+fGGkjrEx9fNj8fOuQxzrXY2spaSupTMsM9FW+691T7VR/8LFsngn+LJxfwhw9D E42u/wDMCpcpstN4ZHDR0gp5N2JgFzE/immRiDJH1NDVrMNaLFxMfde6uV/k7/yoNn/ysOit3YHI b9yXdvyX773UvZnyh77zYq/vOwN+SGonp8Zh1yLy1gxONkrK54Jq+aSrrKuqra+oaI1SUlL7r3Vv Xv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuo9 X/wFqf8AqHm/61n37r3VBP8Awlx/7cUfBn/y5n/4MPsH37r3VyPyP+P/AFn8q+h+2fjl3FgKPc3W ncmx87sXdeLrKaCpZKTMUpjpczjTUqwhyGNqRBkcZWJaSmq4IKiFkliRh7r3Wsj/AC1e1d+dlf8A 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 dF0rsDZC5in6/wADmM/hTJTzZaaPOVgqo46mcrTQ0UlS8eQlrqan917qkf8Ak9/zTt9fC7qn5U9P 4b+WR/Mi+V9Bmv5hnyw3tR9sfFz495HsXqgnN7so8HLtx93JLFAMhRS452rYidMSyRlmFzb3XurI Oi9mfNv+aZ/NX+LP8wXu74f9gfBH4kfALaHc+L6W2R8hqFcN8ju6uyO5dqzbL3Jlsxs2mmhnweNo lWhqIFrKeaBkpnFPNVNXs9D7r3W0Z7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917oDvkl/zJHf3/UBjf8A3e0vv3Xuhx9+691/ /9PeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690juxP+Zf76/wDDO3N/7pJ/ fuvdLH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdR6v/gLU/wDUPN/1rPv3 XutXr/hNf8x/iJ1V/JU+F+wu0PlR8cOt99YH/Ziv45svfvePWOz92Yb+KfLHfeZxv8V25uHKU9ZT /cUdRT1cHmhXyQyxypdHVj7r3Rgf5if8/n4l9HdbZnq34Tdn7Q+bvzo7TpazYHx56W+MGUx/ey0/ ZWfb+AYTOb8zPXstdjqOlxlbPDLJimq/4hWSBaaGnVGnqab3Xumnqf4Q57+Xr/wnE+Qvxq3zUU9d 2piPgL8zt99x19PJFUmbtPs7qjdO+N1Y+fIQVNZFWSYpq2PCmuhqXjqRRieMhJFUe690Yf8Ak8/J L464L+VX/Lywmb796Vw+aw3xA6GxWYxGV7T2Nj8ni8pj+vaGkyGNyWPrK9JYKiCVHimhlRXR1KsA QR7917q1XafavWHZlLnf9G/Y+w+wDhKeD+M/3I3ht/df8I/iUc4x38T/AIDUVH2/3H28/h8unX45 NN9DW917qhb/AISl/wDbkL4u/wDh4/Iz/wCCD3J7917oN/5sHw47y+GO4PkN/M3/AJbW0Rm63uDq beey/wCYd8P8WZaDZfyL2xmMDXYqg+Ru38Vi6Kqei3vth8jU5HKV9JGrVkAmqpyPJmhlvde6fPgt 86Nm/wAu7/hPp/Lq+R/ZHXfYu/OtqHZPSex+w8v19jafJQ9T7O3zvqowuc7b3wHczphsRCxW1JTT yVFfNQ0bfbQ1MtdS+690d/8Amt71+BXef8qX5Gb178351Xvr437u6S3huHrvfGN3VtjJRZPf/wDd OufrLLdP7hEzxPuT+JaIsWKZyWcywVKtStVRn3XuqS/ljU95Vn/CNOOo+RjvJ2lJ8ZfjWaiWVdNV LsRflVtNOnJa82GqpbZwwLVUnOuUu921XPuvdbf/AF3/AMy/2L/4Z22f/dJB7917qj//AITmf9kM dwf+L/8Azh/9/dWe/de6vx9+691Qd/wnM/7IY7g/8X/+cP8A7+6s9+691fj7917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917ovfyi+LPRfzO6X3P8e/khsqbsHqPeNTgqvcO16fdW8tlT1lTtvNQbhws8W49g5D F5WnaCspoZgaatj1adLalJU+690Rf4v/AMjP+V/8Nu79m/Iz46fHTMbF7i6/j3HHtLddf378kt+Q Yld2bVrdk7gI212Ju/LYmZp8ZkaymD1FDI0fkLxFJFV1917q2z37r3RBf5lHzs2T/L0+K28+9txY afe296yaDYnRPUuNiNTne4e79zU8sew9h4ukR43MUk0T1mSljYyRUNPUSQpNUCGnl917oB/5P/wC z/wv6P3v2R3pVJuf5u/MvfuU+RnzF3xLFgVqG7H3nkavcVB1ljDtqKOiTF7VTJVNHDDSPLTCrlrp KN1oZKWCD3XujsfIX5lfFv4n5jp3b/yO7x2F0/mvkBvuLrXp7G7xyjUNVvjeD+ES0WOjiSTw01O9 TRxVmTq/FRU0tVSRVFRFJV0yS+690Vj5R/zI8T8Ofmx8a+gO+9h0GxvjR8ndibpptp/LnM7yosdt HanyC2vlmf8A0S7/AMTXQxxYuirsXJQTY/Nz1wSSqqTEYkgpqqpi917pW/zPflL8Svjf8Ie/9z/K 3de02613n1NvnZFJ19U5eil3P3Vkt57WqcJjOteu8FBJ93ksnl2nEEJo1IpkL1s8tPS001TF7r3V Ynwy+XP/AA0H/L0/k8/H/wDmBUHYGBqO9sHXdcbu+Qe7KOXGdY/HbM5+HJdidU9a905nKlq7EZCO jyOI2vBHkaampqeKhyNXVVVPFjJ4/fuvdNv/AAqGrehM9/LSjyrZvA1vyupO0Oo9zfAap2jlppe2 q3ter7CwuPzuR6ok2s7ZCenbbVXXyVskZNDr+xeZvuBQ+/de6Ml/OF+E3yN+af8AL66j3B1O+Pof nl8S989KfMHp+ngjxtLTZnvjqbFfd7i2bR1dVDOsAq5KmrqMfDH40nrqWhppZ4KaSWZPde6EX+XF /Oj+I/z92BS4fNbz2z0D8rdqQT7d74+Jnbubo9l9k7B35gycdu2jwWL3Y1JJncMtSrNT5CgSQxxP HFXx0lYJaaP3Xutd/wCTHzD2/wD8Jtf5g+995dMdjbV+SfwD+beJ3Xvjcnw42x3HtfNdrfGjvnEY Y1eHzezdv1+QqKjG7Wy1VJT09PUmFKYY6WaiMMk+GxRq/de6vL/kHfEjtrpP449u/LX5RUeKovlp /Mm7jzHy/wC5aShoBQz7N27vaJ8x1n1lWt91VLoxNPkMjkIadfCKIZJqB4RLSySS+690z/8ACerE UXaP8vbtbv8A3Th2r6f55fNL5wfJLdG3tzU0ddS1WP313PkuspcJXY2unrEekkoNuRQvTyO8bIzC 8iMJJPde6pk3bQfJLrLde7f+EteycH2Pjto9199Ue++kfkpRSwxYrYf8pXeuYrO3O39rLnKepx1c +fwFdQ5PZkEtTDVUmT+4rMfI9Ov2Uc/uvdXQfz9+qML11/JH7rwfT23E21jvivjPjJvnqXDbfhxp TY+E+P8A3btGrxpw8ec1xePFYOiqAsbsXkijMV3LlW917q9bbe4MXuzbu391YSphrMNubCYrcGIq 6eaGogq8ZmaGPI0FTBUU7NG6SRSIyujFWBBBIIPv3XuqFf8AhUp/24s+bX/UR8aP/gudh+/de6v+ pP8AgLTf9Q8P/Wse/de6ke/de6oO/wCE5n/ZDHcH/i//AM4f/f3Vnv3Xur8ffuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 690B3yS/5kjv7/qAxv8A7vaX37r3Q4+/de6//9TeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3UOur6HGUk1fkqykx9DTqGqKytqIaSlgVmEatNUV DKigsQoLEckD37r3TK+ayVW2jB4CpqVCFjX52SbbeP1xVhpamjEdRBNkTMFBmib+HfbyJYrUXIHv 3Xus74/OVPnWo3B9mv3Jko2weKpKWaOmKW+2rpM2cikzA8+SKKD/AIL7917rPHhaOOYzmXKSu0k0 rrUZvMT07PU28oNFLOYAnpGiMRhE58arc3917qPUbV2vWUiY2r23gKrHxVElXHQ1GHx09HHVyO8s tUlNLGUEjNLIzOFuS7Em7G/uvdN3+jvr/wD54XZ3/oM4T/rx7917r3+jvr//AJ4XZ3/oM4T/AK8e /de69/o76/8A+eF2d/6DOE/68e/de69/o76//wCeF2d/6DOE/wCvHv3Xuvf6O+v/APnhdnf+gzhP +vHv3Xuvf6O+v/8Anhdnf+gzhP8Arx7917r3+jvr/wD54XZ3/oM4T/rx7917r3+jvr//AJ4XZ3/o M4T/AK8e/de69/o76/8A+eF2d/6DOE/68e/de69/o76//wCeF2d/6DOE/wCvHv3Xuvf6O+v/APnh dnf+gzhP+vHv3Xuvf6O+v/8Anhdnf+gzhP8Arx7917r3+jvr/wD54XZ3/oM4T/rx7917r3+jvr// AJ4XZ3/oM4T/AK8e/de69/o76/8A+eF2d/6DOE/68e/de69/o76//wCeF2d/6DOE/wCvHv3Xuvf6 O+v/APnhdnf+gzhP+vHv3Xuvf6O+v/8Anhdnf+gzhP8Arx7917r3+jvr/wD54XZ3/oM4T/rx7917 r3+jvr//AJ4XZ3/oM4T/AK8e/de69/o76/8A+eF2d/6DOE/68e/de69/o76//wCeF2d/6DOE/wCv Hv3Xuvf6O+v/APnhdnf+gzhP+vHv3Xuvf6O+v/8Anhdnf+gzhP8Arx7917r3+jvr/wD54XZ3/oM4 T/rx7917r3+jvr//AJ4XZ3/oM4T/AK8e/de69/o76/8A+eF2d/6DOE/68e/de69/o76//wCeF2d/ 6DOE/wCvHv3Xuvf6O+v/APnhdnf+gzhP+vHv3Xuvf6O+v/8Anhdnf+gzhP8Arx7917r3+jvr/wD5 4XZ3/oM4T/rx7917r3+jvr//AJ4XZ3/oM4T/AK8e/de69/o76/8A+eF2d/6DOE/68e/de69/o76/ /wCeF2d/6DOE/wCvHv3Xuvf6O+v/APnhdnf+gzhP+vHv3Xuvf6O+v/8Anhdnf+gzhP8Arx7917r3 +jvr/wD54XZ3/oM4T/rx7917r3+jvr//AJ4XZ3/oM4T/AK8e/de69/o76/8A+eF2d/6DOE/68e/d e69/o76//wCeF2d/6DOE/wCvHv3Xuvf6O+v/APnhdnf+gzhP+vHv3Xuvf6O+v/8Anhdnf+gzhP8A rx7917r3+jvr/wD54XZ3/oM4T/rx7917r3+jvr//AJ4XZ3/oM4T/AK8e/de69/o76/8A+eF2d/6D OE/68e/de69/o76//wCeF2d/6DOE/wCvHv3Xuvf6O+v/APnhdnf+gzhP+vHv3Xuvf6O+v/8Anhdn f+gzhP8Arx7917r3+jvr/wD54XZ3/oM4T/rx7917r3+jvr//AJ4XZ3/oM4T/AK8e/de69/o76/8A +eF2d/6DOE/68e/de69/o76//wCeF2d/6DOE/wCvHv3Xuvf6O+v/APnhdnf+gzhP+vHv3Xuvf6O+ v/8Anhdnf+gzhP8Arx7917r3+jvr/wD54XZ3/oM4T/rx7917r3+jvr//AJ4XZ3/oM4T/AK8e/de6 9/o76/8A+eF2d/6DOE/68e/de69/o76//wCeF2d/6DOE/wCvHv3Xuvf6O+v/APnhdnf+gzhP+vHv 3Xuvf6O+v/8Anhdnf+gzhP8Arx7917r3+jvr/wD54XZ3/oM4T/rx7917r3+jvr//AJ4XZ3/oM4T/ AK8e/de69/o76/8A+eF2d/6DOE/68e/de69/o76//wCeF2d/6DOE/wCvHv3Xuvf6O+v/APnhdnf+ gzhP+vHv3Xuvf6O+v/8Anhdnf+gzhP8Arx7917r3+jvr/wD54XZ3/oM4T/rx7917r3+jvr//AJ4X Z3/oM4T/AK8e/de69/o76/8A+eF2d/6DOE/68e/de69/o76//wCeF2d/6DOE/wCvHv3Xuvf6O+v/ APnhdnf+gzhP+vHv3Xuvf6O+v/8Anhdnf+gzhP8Arx7917r3+jvr/wD54XZ3/oM4T/rx7917r3+j vr//AJ4XZ3/oM4T/AK8e/de69/o76/8A+eF2d/6DOE/68e/de69/o76//wCeF2d/6DOE/wCvHv3X uvf6O+v/APnhdnf+gzhP+vHv3Xuvf6O+v/8Anhdnf+gzhP8Arx7917r3+jvr/wD54XZ3/oM4T/rx 7917r3+jvr//AJ4XZ3/oM4T/AK8e/de69/o76/8A+eF2d/6DOE/68e/de69/o76//wCeF2d/6DOE /wCvHv3Xuvf6O+v/APnhdnf+gzhP+vHv3Xuvf6O+v/8Anhdnf+gzhP8Arx7917pxpNqbWoI4oqHb WAo4aerOQp46TDY6nSCvaH7Zq2FIYwFmMf7ZkUBtPpvbj37r3WZsHTiWaogrMzTVU0ZjWVMzkqmG nJ16ZYMZkJJqMMvkJGqmI4UEEIoHuvdRzS7jo1Bo8pSZhIoZWFPm6RaOsrKkhjErZrDIkNPECUFx i5WsG5YsNPuvdcDuIUOldwUFThbQmSbIc1+3kMFIamvlbNU6gU1PDYgT5OKk8nGhS11X3XulBHIk yRyxSJLFKiyRSxsrxyRuutJI3S4KkEEEGxHv3Xusvv3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XuuL KrKysAVYEMD9CCLEH37r3VUOX/kXfyf80mPSs/l2/F+JcbSLR0xxHXdFt95IUUAPkJMC1M1XLwLz 1RklPJLkk3917o1Hx3+BHwn+JVY+V+M/xR6B6Pz02MbDVO6euerdobc3jW4mSOCObH5HeVHSjKVM Uv20DzpPVuJZEEkmqS7H3XujF782NtLs7Y+8+td/4Oi3RsTsTam4tjb12zkhI2O3FtHduImwG48F kFhZHMFXR1E1PKEdTpc2IPPv3XuqtP8Ahg/+Th/3r1+PP/oPZT/6s9+690b34sfAv4d/CKDfdN8T vj7sDomn7Nfbj79g2JQ1lFDuh9pJXx7bfJx1U8wY0i5OvWIqFNpmBv6be690KXx/+PHSXxX6uwPS fx463231L1RtipzVZt/Yu0qaakwWKqtxZifcGbmpIJ3kYNU1tTPUy3c3d2PHv3XuhoIBFjyDwQfz 7917oNcJ031NtvrKbpTB9bbHx3T1Rhc/tqbqun2vh/8AR3JtfdMlS+4dqts2SFsd/CqsVlTFLjPt /tvDI0IiENkHuvdVcbQ/4T7fydNi9y0nfO3Pgz1vD2HQZ+fc9EMnuXs/cOxKbNVDTvJUJ1LuHO1W 1DEGqJWjpGwpp4z4zHEphhMfuvdWbd6dD9QfJjqrdfR3fWwMD2h1JvmPERbu2HuaGefBZ+LAZ+k3 Th48hDTSROywZChpKpFDga4lvdbg+690KNFR0uOo6XH0UKU1HQ00FHSU0Y0xwUtNEIKeGMH+yiKF H+A9+690FnS3QnTvx02pktjdIdfYDrfaWY3funf2TwW3IZ4aCs3lvbJtmd17hmSokkY1FfVM09Qw azOSbC/v3Xuhe9+690EPS3QnTvx02pktjdIdfYDrfaWY3funf2TwW3IZ4aCs3lvbJtmd17hmSokk Y1FfVM09QwazOSbC/v3Xuhe9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690Afbfx e+P/AHvvzons3t/qva+/9+fGbfNf2V0VuTPwVM1b11vfJYg4Wsz2IjilSKVzF4Zo4quOaKOqp6Ot jRKyipJ4fde6Hz37r3RUfkr8Hfif8w870nuX5L9J7W7bznx134vZfTOR3FUZymm2TvETUlTNWwJh KulSspZ5KCgkq8ZkVqKGoemp2nppGhjK+690JPfXx66Q+UfWO4umfkN1bszt/q/dMDw5jZ2+MNTZ jGSSmnkpocnQNKBNRV9OsshpMjRSw1VOx1wTRvZh7r3VePxv/kQ/ylviZ2jju5ujPhhsPb3ZOEqI K3b24t07o7N7UXbWRpJ4aqhy+2sR2vnM3Q0FdTTU8M9LX0lMlRBKolilSQsx917qyrtzp7qvvzrz cnU3dfXm0O0+tN30sNJuTZG+cFj9x7dyq0lXHkKCefHZJHRaikqoYauiqows1NURRVEEkc0aOvuv dVzfFz+Rt/Kp+Gfa9H3h8d/h7svZvaeKVxgN253dnZ/ZtVteZjERkdqUXaeczVLi61fCnjr6CCKp S76JV8suv3XurYvfuvdVxfMH+Ub/AC3/AJ65iPc/yq+JfWvZO81eJ5ewKB9y9cdjZEQYz+D0tPnO w+rK/CZrIQQ0wSKCnr66aKLREY0VooyvuvdBP0z/ACG/5Q3QmF3fg+uvgr1AKffOBrNtZ/Ib7k3h 23uFMVkMXNhqtdu7n7ZymbyOFqHpqiaP73DVVLUesuJdZ1e/de6Nd8Ifh7i/hF8ccD8XsJ3F273b 11sirzdB11kO7Mnt3N7z2X19knEmK6wp9zbax2LkrcViNU0WKkr0lqoIHWkWf7WnpYYPde6G7o7o vqH41dWbT6R6H6/291d1NsWHJ0+0dh7VpnpMDgIc1nKrcuVjoKeV3ZRUV9bVVUl3N5JXP59+690o KjrTr+p7IxncM2ztuy9p4bZOb63xnYDYym/vXR7C3HnKDc2a2hHmQvm/h9RkMZQVjUzMUEsQdQCX 1e6917szrbYncnXu9ep+0Nr4ve3XPY22cxs7fG0M3E8+H3LtfcFC+NzWEycMbIzQVMEjxSKGBKk8 j37r3TvtLam39ibU2xsfaeOXD7V2bt7C7U2ziYp6mpjxeA27jYsRhselTXPLPIIKaGOIPNK7sFu7 MxJPuvdIHvnoHpr5QdU7o6O+QPXe3e1upN6tg23XsLddPLV4DOHbW4qTduBNdTwvGzGlyVBR1kVn FpIkJuBY+690LyqqqqqAFUAKB9AALAD37r3XL37r3QQ9LdCdO/HTamS2N0h19gOt9pZjd+6d/ZPB bchnhoKzeW9sm2Z3XuGZKiSRjUV9UzT1DBrM5JsL+/de6F737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdAd8kv+ZI7+ /wCoDG/+72l9+690OPv3Xuv/1d4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3SSOdrcyZYNpx01RCjTwSbmr1eXb8E/2LSxNjqeneOXKlJnp1lWnmhp7eeP 71KmnenPuvdONHgaSnnSuqZKnL5ON5JIsnlnjqKmmaWEUsgx8MSR09GrxKscq0cEQktqlDyFnb3X unz37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdJqp294nmr NvVf8AyMr1U7iOn+6wdfV1CVDmbMYHXEkheonFTUT0stNVzNGiNVeLUje691zo83J93HjMzQth8l USyxURE/3uKy3hplrH/hWVVI9UgRpAaapigqCYaiSOKSni87e690ovfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3XvfuvdAd8kv+ZI7+/6gMb/7vaX37r3Q4+/de6//1t4f r/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdRquspMfSVNfX1VPQ0NFTz VdZW1k0VNSUlJTxmaoqaqomKpHGiAs7uQFAJJAHv3XukgtFW7virl3BQy4/bE0wp6Lb1QTFXZyip p2EtbufwuQtHXWQxYc2JprrkQzVM2OpPde6W4AAsOAOAB+Pfuvdd+/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6jVVJS1tPLS1tNBV0s40zU1TF HPBKt9QWSKUFSLgHkfX37r3SVFXPs+mqGzlfLW7apXaSDO1YlmrsFQSSxRRUu4aga2np6cvIzZaT T4qZA9ezNFPXTe690s/fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3QH fJL/AJkjv7/qAxv/ALvaX37r3Q4+/de6/9feH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+6910SALngDkk/j37r3SLpKabdVVDl8iIW2zTyUdbtrENFrevrKSoNRTbry8wdkddQhmx NGEHgKismZ6p4Isd7r3S19+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+6910QCLHkHgg/n37r3SOpFo9mvSYoWpNsVdRDRYVp JG+0weQrKgQ0e3UeS4gpJ5HWLFxkiONytDDoVqKn9+690svfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+690B3yS/5kjv7/AKgMb/7vaX37r3Q4+/de6//Q3h+v/wDmcff/AP1H9af+ 8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3XvfuvdJLIaNxZKbADwVGGx2ht0BatW+5q5oUqaDa9VSQqxMckM iVlfHNLHeBqaJoqinrJfH7r3St9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdRqulpq+lqaGsgjqaOtp5qS rpplDw1FNURmGeCVDwVdSVYH6g+/de6Y8FU1sMlXgctNLV1+KWGSmyb0ksAzOGqCy0FbLIoMDVcZ R6euSFwfIgqfBTQ1VPEPde6Uvv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XugV+QUS1 fV+RxchZafPbq6z2zWPHYTR0G5+zsNt2vmp2YFRMkNTI0LMrKHClkdQVPuvdDV7917r/0d4fr/8A 5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+6902ZfIfwvHVFYsP3My+KGkpfJ4TW5GsnWjxtCJ yrCPz1EkcXlYaU1amsoJHuvddYjHtjKCnpJKh6yoHkmra2TWHra+okNRXVfjd38aySs7JCjaIlKx RhY0VR7r3Tp7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917pObgpZhHTZqhgebJ4J5KqKKCFZarIY2U AZjCQqXiLtUxKHp42mSP7uKlkl1LFY+690+U9RBVwQVdJPDVUlVDFUU1TTypPT1FPOglhngmiJV0 dSGVlJBBBBt7917rP7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6Bvvj/jwKX/xJnR3/AL+z b3v3Xuhk9+691//S3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3SaqEOQ3NQwusop 9v0LZcl4Z445MplxNicdJTVcThJDBTJkVqKeRWA89PJbUFI917pS+/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuk3g2WjqstgWnaR8dUJkaOORxJNHhM5JLNQqfGqokUVTFW0dLEoukFPG Gvwze690pPfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3QN98f8eBS/8AiTOjv/f2be9+690M nv3Xuv/T3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Sc22kEtPXZmBYj/eTJTZnz 08vlp62kEEWKwlfAVklULNjqWjc6WFySxRGYovuvdKP37r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3TL/ AHhwriXwZGmr5IJXhmgxRbL1UUsVT9nOr0eMEso8Ut0lJSyEHXpsbe6913Bm6apaVYKXMM0IjLib B5egUiSSSNTFLkYYUksY21CNmIBRiAroW917px80n/KpUf8AJVL/ANfffuvde80n/KpUf8lUv/X3 37r3XvNJ/wAqlR/yVS/9fffuvde80n/KpUf8lUv/AF99+6917zSf8qlR/wAlUv8A199+6917zSf8 qlR/yVS/9fffuvde80n/ACqVH/JVL/199+6917zSf8qlR/yVS/8AX337r3XvNJ/yqVH/ACVS/wDX 337r3XvNJ/yqVH/JVL/199+6917zSf8AKpUf8lUv/X337r3XvNJ/yqVH/JVL/wBfffuvde80n/Kp Uf8AJVL/ANfffuvde80n/KpUf8lUv/X337r3XvNJ/wAqlR/yVS/9fffuvde80n/KpUf8lUv/AF99 +6917zSf8qlR/wAlUv8A199+6917zSf8qlR/yVS/9fffuvde80n/ACqVH/JVL/199+6917zSf8ql R/yVS/8AX337r3XvNJ/yqVH/ACVS/wDX337r3XvNJ/yqVH/JVL/199+6917zSf8AKpUf8lUv/X33 7r3XvNJ/yqVH/JVL/wBfffuvde80n/KpUf8AJVL/ANfffuvde80n/KpUf8lUv/X337r3XvNJ/wAq lR/yVS/9fffuvde80n/KpUf8lUv/AF99+6917zSf8qlR/wAlUv8A199+6917zSf8qlR/yVS/9fff uvde80n/ACqVH/JVL/199+6917zSf8qlR/yVS/8AX337r3XvNJ/yqVH/ACVS/wDX337r3XvNJ/yq VH/JVL/199+6917zSf8AKpUf8lUv/X337r3XvNJ/yqVH/JVL/wBfffuvde80n/KpUf8AJVL/ANff fuvde80n/KpUf8lUv/X337r3XvNJ/wAqlR/yVS/9fffuvde80n/KpUf8lUv/AF99+6917zSf8qlR /wAlUv8A199+6917zSf8qlR/yVS/9fffuvde80n/ACqVH/JVL/199+6917zSf8qlR/yVS/8AX337 r3XvNJ/yqVH/ACVS/wDX337r3XvNJ/yqVH/JVL/199+6917zSf8AKpUf8lUv/X337r3XvNJ/yqVH /JVL/wBfffuvde80n/KpUf8AJVL/ANfffuvde80n/KpUf8lUv/X337r3XvNJ/wAqlR/yVS/9fffu vde80n/KpUf8lUv/AF99+6917zSf8qlR/wAlUv8A199+6917zSf8qlR/yVS/9fffuvde80n/ACqV H/JVL/199+6917zSf8qlR/yVS/8AX337r3XvNJ/yqVH/ACVS/wDX337r3XvNJ/yqVH/JVL/199+6 917zSf8AKpUf8lUv/X337r3XvNJ/yqVH/JVL/wBfffuvdNsubpIHaOamzIkSBKlhFgM3WJ43d41V Z6GnljZ/22JiRy6gqWUB1v7r3WWLN4eat/hsWUoGyQXU2MNXAuSQeMTHy0DsJlIQhiGQEDk+/de6 dffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3XvfuvdQXoUbI0+S81QkkFFV0JgSUrS1CVU8FQs9TAOHkhMJWBz +gSygf5w+/de6ne/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xugb74/48Cl/8SZ0d/wC/s297 917oZPfuvdf/1N4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdMW46uejwtY1JUGjrqv7fFY yr+3NWlJls1VJiMTUzU4/VHHUzxPL+AgYnge/de6dqeCGlghpaaJIIKaGOCngiUJFDDCgjiijReA qqAAB9B7917rP7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917prr8vjsY8EdXUaamq1GkooIp63IVaxzRwTyUmNolknlSEzRmd4 4ysStrkKoCw917pqhm3Nlkjk+1h2nSSJGWhrvtcvuMLNE6VETR0Ez46jmhk0PFIs+QjkB9caEaT7 r3WYbWxMykZVJ9wO6UvmOfnkydNJUUsTRCuixE3+QU0zh31tR0sIOogALZR7r3SiAAFhwBwAPx79 17rv37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdYKmmp6yCSlq4IaqmnQxzU9REk0 E0Z/UksUgKsD/Qj37r3TFJtqlj9WJrspt5/HDBGmIqYzQQ00MvlaGmwWTjqcdCZDxJLFRrKQT+4L n37r3Xnrs9jdByGPizFLpj89fgUeCqgJMsk00u3q2SRzBFGqC9LV1FRK7aUpbC/v3XunPHZTH5aB 58dVw1ccU0lNOI2/dpKuG33FDWwNaSCoiJCywTKskbel1U8e/de6cffuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+690DffH/HgUv8A4kzo7/39m3vfuvdDJ7917r//1d4f r/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3XvfuvdMNd5ajN4OlQ1UcNIMhmamaB7U8jQ038JpMbXpo IKzGskqYvWp10vAYBtPuvdP3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3XukZT5mr3XBBUbWqY6bb1XBLNHu1okqGyMLyCGmn2 nSTgxzQyp5Z4cpUK1MyiCSnhrqeoMkXuvdP+Ow+PxZnejpys9W4esrZ5Z6zIVrK7PF95kKxpJ5RG HZIVkkKxJaOMKiqo917p09+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3TLX4OkrqmOvR6nHZWFFjiyuOkWGsMMcc0cdNVrIrw1UCfcTPHT1 kUsSSN5kRZlSRfde6g0WZraSqpcPuSGOGvmpo2ps1QwTR7ezNQsv281PTmZ5XoqokxyrQVMrlkkt TVFYYKpofde6VHv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xugb74/48Cl /wDEmdHf+/s297917oZPfuvdf//W3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690ncP4qvI 53MIYZBLVRYOmqKeaZ1lotvNJDPFPAzFFmhyU2ShdlRSyqgOoKp9+690ovfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691gqKiCkgnq6ueGlpK WGWoqamolSCnp6eBDLNPPNKQqIigszMQAASTb37r3SRpIqvd8VTPmaA0m1qtfFjsBkKWSOuzWPlg lp6ur3XQ1fEdPVrIphxMsQkSNQ9YRNM9FR+690tffuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691Gq6OkyFJU0FfS09 dQ1tPNSVlFWQxVNJV0lRGYaimqqeYMkkboSro4IYEggg+/de6RtJV1O0KmiwmXnqKvbdTJSY7bm4 66qqq6soauQrTUW3N2ZKueSWaWZyseOys8haqcrS1bffmCbJ+690u/fuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3QN98f8AHgUv/iTOjv8A39m3vfuvdDJ7917r/9feH6//AOZx9/8A /Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691ByNYmNx9dkZY5po6CjqqyWGmUPUSpSwNO0cCsQC7BbKCRc25Hv3Xuu GJpJqHG0NJUyrUVcNNEtbVJGIhWVxGutrDGPoZpS8rf4sb+/de6cffuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690kYZshn8zUXgip9rYacwwT /czff5/cFHU6ap1hpnVIcfQOjQFZ9clVU+Q+OngpYpMh7r3Su9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691Gq6Slr6Wpoa6mp62graeakrKOrhjqaWspamMw1FNU08wZJI5EYo6OCGBIIIPv3Xuk1infb 9VBt3JZSashrJJhtSrybTSV9RBBTGpn29W5SZnNZV0scck0M0pWpqKVS8oqJqWsrJfde6V3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de6Bvvj/jwKX/xJnR3/v7Nve/de6GT37r3X//Q3h+v /wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3XvfuvdJ/OB6mTC41FmtV5mjqqmWmqY4Z6OkwjHOCpMbxyeSGSpp 6ainX0+mo4dX0g+690oPfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+690mtwS1lQaTAY6eSjq8yKj7nIRxzmTGYSkCLlK2lmjaNVqmMsVNSEy6o 5JhU+KeOnliPuvdPlJSUtBS01DQ01PRUFFTw0lHR0kMdNS0dLTRiGnpqanhCpHHGihERAAoAAAA9 +691J9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3TZlsbHlsfPRSTz0jSNFNTVtL4DVUFbSTr V4/IUy1SSwtJBMkcqJNFJGxULJG6FkPuvdYcJkZshRMtYkMWVoJmx2ZpoHRooMlBGryNCoeRlhnj eOqpRKRIYJYmkVGYqPde6effuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdA33x/x4FL/wCJM6O/ 9/Zt737r3Qye/de6/9HeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690n6fx1m4shUBqeZcLRwYeNo 3k+4pK/IhMtl6WojB0kPTjFSoSCRzYgMwPuvdKD37r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdJ3ABatajcDhTLnfDNSuYtEsWCgDfwOlJmp6 eoUMkj1jwVCs0M9RPGGKhffuvdKL37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3SbrlbHZugyqH/JcksWCyuqTTHE2uSfAV2qeYItqiSWiMcMJkmerhLtop1Hv3XulJ7917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917oG++P8AjwKX/wASZ0d/7+zb3v3Xuhk9+691/9LeH6//AOZx9/8A /Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+690w7bLy4inyEonWbLtNmXSshjp62njykprKSgrVjZwZKSB4qQnWRaIAW AAHuvdP3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuk5uTxVFFBhZpIU/vLWLhDHP9yFqaOSnlr83Sxy0jxyRyvjqesEMquNEmluQLe/de6Ufv3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6b8nQR5TH1mPllqIErKeSAVNJL4 Kykd1/arKKoHMc8LWlhlXlHVWHIHv3XuuOJrjkcdTVT/AG4qCslPXRU0wqIKbJ0crUeUokmXhvBU xywsf6qffuvdOXv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917oG++P+PApf8AxJnR3/v7Nve/de6GT37r 3X//094fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+690ndzp9ziZcWqiRs7LBhGj+6ipJ2o8k4gy9RRvKrhpq eh+5qkTQdXiIItf37r3Si9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3TCvkqNyOf8rjgxWICBlmk/h9ZVZur8kscsAAQ1FJHRRsrEllSqPCh 7v7r3T97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de64gBRZQAL k2AAF2Opibfkkk+/de65e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xugb74/48Cl/wDEmdHf+/s29791 7oZPfuvdf//U3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3SbqPHXbmoaYvSSrgcfLmJ6aSNzWU1fl2fE4 TIUsv6Qpp4svBIt7nWvH59+690pPfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+690ntvIslNXZQRU6S5zKVmTaalkEsNdSLpxeEr1dXcfu46mo2 NiOedKm6j3XulD7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917oG++P+PApf8AxJnR3/v7Nve/de6GT37r3X//1d4f r/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+690yYbVP/EcizSFMjkZXpFku3joaKNcbSmnl1urQTmF62EoFW099 Oos7+6909+/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917ppwdPNSYTD0lRKKiopsXj6eeoUSqs80NIkUsyid5HAZgWAeRm55Zjyfde6dvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3XvfuvdA33x/x4FL/4kzo7/wB/Zt737r3Qye/de6//1t4fr/8A5nH3/wD9R/Wn/vDR +/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv dJ/cVZVwUCUmOkeHK5mpixGLnjSnkejqaqN5KjKCOsBhf7GmjnrvDLYS+HxC7yKp917p1oqOlx1H S4+ihSmo6Gmgo6SmjGmOClpohBTwxg/2URQo/wAB7917qX7917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XumPbRqDt3BCsM7Vgw2MWs+5YvUirW iRalaljFATIHDCS8EZ1XvGn6R7r3T57917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917oG++P+PApf8AxJnR3/v7Nve/ de6GT37r3X//194fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3XRIAueAOST+PfuvdJPBGTNVcm6pkqIqSaneh2zTSvT8YO aSOonzMkUCl1kyUkcUqRyzOUpoqa8VLUPVxH3Xulb7917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6TWDZKWtzuDJQPR175qmTymWokx2 5qibICqqbIqJfILkoIowSRHCjMSWufde6Uvv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xugb74/48Cl/8SZ0d/wC/ s297917oZPfuvdf/0N4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3SSr8fDvCGhU1xk2q7RVtTBRSkRbqRdM9FTTV0D3fF MfXUQJ6a5dMMrNQtUQVnuvdK337r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3SezcUtPLRZ2mFRJLhxVCrpYEqqmSuw1YqHJU8F HTiQyTI0UFVCI4Xmdoft4ygqJCfde6eqeogq4IKuknhqqSqhiqKapp5Unp6innQSwzwTREq6OpDK ykgggg29+691n9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3XvfuvdA33x/x4FL/AOJM6O/9/Zt737r3Qye/de6//9HeH6//AOZx 9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Tdk cpQYmn+5yFSlPGz+KFbSS1FXUFGkjo6CkhDS1FRIFbxU8CPJIRpRWPHv3Xuk7UY2v3StRTZ6mWg2 01QYzgWdZa7cFLAALbhngdokop5NWvGRl/PCsa1cvjnqsePde6WQAAsOAOAB+Pfuvdd+/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917pgZVwC1M8FNV1OPqauWsqKejiapmoZqlvJWVFPRx+t4nfVNJHCrSeRnZUfWQnuvdO1 JV0tfS01dQ1NPW0FbTw1dHWUk0dTS1lLUxianqaaohLJJHIjB0dCQwIIJB9+691J9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Q N98f8eBS/wDiTOjv/f2be9+690Mnv3Xuv//S3Zdqbt2phO7u/sfmtz7exFeZurqwUOTzWNoKw0c+ y/BBVimq5Ufxu8MqJJp0lkcA3U2917oYv9InX/8Az3Wzv/Qmwn/X/wB+6917/SJ1/wD891s7/wBC bCf9f/fuvde/0idf/wDPdbO/9CbCf9f/AH7r3Xv9InX/APz3Wzv/AEJsJ/1/9+6917/SJ1//AM91 s7/0JsJ/1/8Afuvde/0idf8A/PdbO/8AQmwn/X/37r3Xv9InX/8Az3Wzv/Qmwn/X/wB+6917/SJ1 /wD891s7/wBCbCf9f/fuvde/0idf/wDPdbO/9CbCf9f/AH7r3Xv9InX/APz3Wzv/AEJsJ/1/9+69 17/SJ1//AM91s7/0JsJ/1/8Afuvde/0idf8A/PdbO/8AQmwn/X/37r3Xv9InX/8Az3Wzv/Qmwn/X /wB+6917/SJ1/wD891s7/wBCbCf9f/fuvde/0idf/wDPdbO/9CbCf9f/AH7r3Xv9InX/APz3Wzv/ AEJsJ/1/9+6917/SJ1//AM91s7/0JsJ/1/8Afuvde/0idf8A/PdbO/8AQmwn/X/37r3Xv9InX/8A z3Wzv/Qmwn/X/wB+6917/SJ1/wD891s7/wBCbCf9f/fuvdOa7o20VgkG4sEUq6cVdK4y9AUqaUzJ T/c07eSzx+SRI9a3GplW9yB7917r0ufh81TS0mOzWQqqeOOXxU+Kq6WnqEkcJ/kmZyy02PkIB1FV q9VgbAmwPuvdYb7mr3ddGPwFEwhMcpkbMZuWCemYVEb04WKjoqmCUoUcS18T2N0ta/uvdSKDAY+g qFyDLJkMwKeSmkzeSZarKvDOIDWQQzlVWmgmkp4ppKSjSGm8g1rCp9+690+e/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917pMz7fenqJq7b1cMJVTvrqqV6Y12ArZXq5KqoqqrCrLBoqHaed3qaSaCSW Qo1S1QkUcY917rKMzW0gIy+ErqcRwLLJWYkPuHHvLJUGJKOljokXIvIE0ySO+OSJbkCRrXPuvdZT uTb6TGnlzWLp6pIZamWjq62no62CCCFaiokqKKpZJYxGkiPJ5EGgMC1rj37r3TV/pE6//wCe62d/ 6E2E/wCv/v3Xuvf6ROv/APnutnf+hNhP+v8A7917r3+kTr//AJ7rZ3/oTYT/AK/+/de69/pE6/8A +e62d/6E2E/6/wDv3Xuvf6ROv/8Anutnf+hNhP8Ar/7917r3+kTr/wD57rZ3/oTYT/r/AO/de69/ pE6//wCe62d/6E2E/wCv/v3Xuvf6ROv/APnutnf+hNhP+v8A7917r3+kTr//AJ7rZ3/oTYT/AK/+ /de69/pE6/8A+e62d/6E2E/6/wDv3Xuvf6ROv/8Anutnf+hNhP8Ar/7917r3+kTr/wD57rZ3/oTY T/r/AO/de69/pE6//wCe62d/6E2E/wCv/v3Xuvf6ROv/APnutnf+hNhP+v8A7917r3+kTr//AJ7r Z3/oTYT/AK/+/de69/pE6/8A+e62d/6E2E/6/wDv3Xuvf6ROv/8Anutnf+hNhP8Ar/7917r3+kTr /wD57rZ3/oTYT/r/AO/de69/pE6//wCe62d/6E2E/wCv/v3Xuvf6ROv/APnutnf+hNhP+v8A7917 r3+kTr//AJ7rZ3/oTYT/AK/+/de69/pE6/8A+e62d/6E2E/6/wDv3Xuvf6ROv/8Anutnf+hNhP8A r/7917r3+kTr/wD57rZ3/oTYT/r/AO/de69/pE6//wCe62d/6E2E/wCv/v3Xuvf6ROv/APnutnf+ hNhP+v8A7917r3+kTr//AJ7rZ3/oTYT/AK/+/de69/pE6/8A+e62d/6E2E/6/wDv3Xuvf6ROv/8A nutnf+hNhP8Ar/7917r3+kTr/wD57rZ3/oTYT/r/AO/de69/pE6//wCe62d/6E2E/wCv/v3Xuvf6 ROv/APnutnf+hNhP+v8A7917r3+kTr//AJ7rZ3/oTYT/AK/+/de69/pE6/8A+e62d/6E2E/6/wDv 3Xuvf6ROv/8Anutnf+hNhP8Ar/7917r3+kTr/wD57rZ3/oTYT/r/AO/de69/pE6//wCe62d/6E2E /wCv/v3Xuvf6ROv/APnutnf+hNhP+v8A7917r3+kTr//AJ7rZ3/oTYT/AK/+/de69/pE6/8A+e62 d/6E2E/6/wDv3Xuvf6ROv/8Anutnf+hNhP8Ar/7917r3+kTr/wD57rZ3/oTYT/r/AO/de69/pE6/ /wCe62d/6E2E/wCv/v3Xuvf6ROv/APnutnf+hNhP+v8A7917r3+kTr//AJ7rZ3/oTYT/AK/+/de6 9/pE6/8A+e62d/6E2E/6/wDv3Xuvf6ROv/8Anutnf+hNhP8Ar/7917r3+kTr/wD57rZ3/oTYT/r/ AO/de69/pE6//wCe62d/6E2E/wCv/v3Xuvf6ROv/APnutnf+hNhP+v8A7917r3+kTr//AJ7rZ3/o TYT/AK/+/de69/pE6/8A+e62d/6E2E/6/wDv3Xuvf6ROv/8Anutnf+hNhP8Ar/7917r3+kTr/wD5 7rZ3/oTYT/r/AO/de69/pE6//wCe62d/6E2E/wCv/v3Xuvf6ROv/APnutnf+hNhP+v8A7917r3+k Tr//AJ7rZ3/oTYT/AK/+/de69/pE6/8A+e62d/6E2E/6/wDv3Xuvf6ROv/8Anutnf+hNhP8Ar/79 17r3+kTr/wD57rZ3/oTYT/r/AO/de69/pE6//wCe62d/6E2E/wCv/v3Xuvf6ROv/APnutnf+hNhP +v8A7917r3+kTr//AJ7rZ3/oTYT/AK/+/de69/pE6/8A+e62d/6E2E/6/wDv3Xuvf6ROv/8Anutn f+hNhP8Ar/7917r3+kTr/wD57rZ3/oTYT/r/AO/de69/pE6//wCe62d/6E2E/wCv/v3Xuvf6ROv/ APnutnf+hNhP+v8A7917r3+kTr//AJ7rZ3/oTYT/AK/+/de6nY3d208zVCiw+6NvZWtZHkWkxuax tdVGOPmSQU9NK76V/JtYfn37r3Sj9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3QN98f8eBS/wDiTOjv/f2be9+690Mnv3Xuv//T3h+v/wDmcff/AP1H9af+8NH7917o cffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6903ZXGU +YoJ8dVy5GGnqPF5JMVlsrg68eKZZ18GUwk1PVRXZQG8Uy6lujXRmU+690C29fjh1r2FDQU26K7t 2WHHSzzUkWG+RHyC2oPJUIqSPUnae6KIz2CgJ5y+i7aNOtr+62CRw6SVN8NujqWIQRDuRkUsQ1T8 nvk5WTeptR1VFXvB5D/hduBwOPfuvVPr1J/2T7pH/Udvf+lLfJP/AOy337rXXv8AZPukf9R29/6U t8k//st9+6917/ZPukf9R29/6Ut8k/8A7Lffuvde/wBk+6R/1Hb3/pS3yT/+y337r3Xv9k+6R/1H b3/pS3yT/wDst9+6917/AGT7pH/Udvf+lLfJP/7Lffuvde/2T7pH/Udvf+lLfJP/AOy337r3Xv8A ZPukf9R29/6Ut8k//st9+6917/ZPukf9R29/6Ut8k/8A7Lffuvde/wBk+6R/1Hb3/pS3yT/+y337 r3Xv9k+6R/1Hb3/pS3yT/wDst9+6917/AGT7pH/Udvf+lLfJP/7Lffuvde/2T7pH/Udvf+lLfJP/ AOy337r3Xv8AZPukf9R29/6Ut8k//st9+6917/ZPukf9R29/6Ut8k/8A7Lffuvde/wBk+6R/1Hb3 /pS3yT/+y337r3Xv9k+6R/1Hb3/pS3yT/wDst9+6917/AGT7pH/Udvf+lLfJP/7Lffuvde/2T7pH /Udvf+lLfJP/AOy337r3Xv8AZPukf9R29/6Ut8k//st9+6917/ZPukf9R29/6Ut8k/8A7Lffuvde /wBk+6R/1Hb3/pS3yT/+y337r3Xv9k+6R/1Hb3/pS3yT/wDst9+6917/AGT7pH/Udvf+lLfJP/7L ffuvde/2T7pH/Udvf+lLfJP/AOy337r3Xv8AZPukf9R29/6Ut8k//st9+6917/ZPukf9R29/6Ut8 k/8A7Lffuvde/wBk+6R/1Hb3/pS3yT/+y337r3Xv9k+6R/1Hb3/pS3yT/wDst9+6917/AGT7pH/U dvf+lLfJP/7Lffuvde/2T7pH/Udvf+lLfJP/AOy337r3Xv8AZPukf9R29/6Ut8k//st9+6917/ZP ukf9R29/6Ut8k/8A7Lffuvde/wBk+6R/1Hb3/pS3yT/+y337r3Xv9k+6R/1Hb3/pS3yT/wDst9+6 917/AGT7pH/Udvf+lLfJP/7Lffuvde/2T7pH/Udvf+lLfJP/AOy337r3Xv8AZPukf9R29/6Ut8k/ /st9+6917/ZPukf9R29/6Ut8k/8A7Lffuvde/wBk+6R/1Hb3/pS3yT/+y337r3Xv9k+6R/1Hb3/p S3yT/wDst9+6917/AGT7pH/Udvf+lLfJP/7Lffuvde/2T7pH/Udvf+lLfJP/AOy337r3Xv8AZPuk f9R29/6Ut8k//st9+6917/ZPukf9R29/6Ut8k/8A7Lffuvde/wBk+6R/1Hb3/pS3yT/+y337r3Xv 9k+6R/1Hb3/pS3yT/wDst9+6917/AGT7pH/Udvf+lLfJP/7Lffuvde/2T7pH/Udvf+lLfJP/AOy3 37r3XKL4h9KQyxzInbmuGRJE1/JL5ISpeNta6o5N2FWFxyrAg/Qgj37r3Shy3xn6ZzWUyOZyW2sx NkcvkKvJ100e/wDsWkjmra6oaqqpUpaPLRxRhndiI4o1RRwqhQB7917qD/sqXRf/ADyub/8ARj9m /wD159+6917/AGVLov8A55XN/wDox+zf/rz7917r3+ypdF/88rm//Rj9m/8A159+6917/ZUui/8A nlc3/wCjH7N/+vPv3Xuvf7Kl0X/zyub/APRj9m//AF59+6917/ZUui/+eVzf/ox+zf8A68+/de69 /sqXRf8Azyub/wDRj9m//Xn37r3Xv9lS6L/55XN/+jH7N/8Arz7917r3+ypdF/8APK5v/wBGP2b/ APXn37r3Xv8AZUui/wDnlc3/AOjH7N/+vPv3Xuvf7Kl0X/zyub/9GP2b/wDXn37r3Xv9lS6L/wCe Vzf/AKMfs3/68+/de69/sqXRf/PK5v8A9GP2b/8AXn37r3Xv9lS6L/55XN/+jH7N/wDrz7917r3+ ypdF/wDPK5v/ANGP2b/9effuvde/2VLov/nlc3/6Mfs3/wCvPv3Xuvf7Kl0X/wA8rm//AEY/Zv8A 9effuvde/wBlS6L/AOeVzf8A6Mfs3/68+/de69/sqXRf/PK5v/0Y/Zv/ANeffuvde/2VLov/AJ5X N/8Aox+zf/rz7917r3+ypdF/88rm/wD0Y/Zv/wBeffuvdR6j4ldB1aCGq2blamESwTiOo7B7KmjE 1LMtVSzCOTMEa45USSNrXVlDCxAPv3Xuhl/uPtr/AJUqn/j0/wC5H/F2zP8Ax7P/ACo/8CP87/02 f8CP+bvv3Xuv/9TeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691//1d4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3X//W3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvdf/9feH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691//0N4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X//R3h+v/wDmcff/AP1H9af+8NH7917o cffuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+69031eQpaJA9VMIgzaI1szyyva+iGGMF3NubIpPv3TkUMkzaYhUjj6D7ScD8+uIy1EQDqnAIv6 qKtXj/FWjB/3j37p36Sf0H+9L/n68MtQn6PP/wCcVb/179+699JP6D/el/z9e/i1D/qqj/zhrv8A r379176Sf0H+9L/n69/FqH/VVH/nDXf9e/fuvfST+g/3pf8AP17+LUP+qqP/ADhrv+vfv3XvpJ/Q f70v+fr38Wof9VUf+cNd/wBe/fuvfST+g/3pf8/Xv4tQ/wCqqP8Azhrv+vfv3XvpJ/Qf70v+fr38 Wof9VUf+cNd/179+699JP6D/AHpf8/Xv4tQ/6qo/84a7/r379176Sf0H+9L/AJ+u/wCK0X+rn/8A OKt/69+/de+kn9B/vS/5+uv4tQ/6qo/84a7/AK9+/de+kn9B/vS/5+kfvfs/YnXWBl3PvbPw7fw0 VRBSCpq6PKSS1NZUnTBQ0FDSQyVFTO/JWGnid7AtpsCR5RVqDiejXZeV9+5j3Bdr2S3NxOwJ0qyY UcWZiwVFH8TMFrQVqR0Fq/L348N/zUBh+PVtHfKc/wBDrxgsf8Paj6Wf+H+Y/wA/Q1/1lfc3/o2f 9nFr/wBb+pmP+VHQ+WrqTGYvfE2RyNdIlPRY+j2lvepq6qdzZYoKaHGl2Y/0A+nP09++lnC6itAP mP8AP0nuvZ/3Esbd7u928RRRgsztcWqqoHEljPQDocly9EVD6qmzgMoNBXq1iOAytECD/UEXH59p +o8NrMDTt/3tP8Oqh6yfxah/1VR/5w13/Xv37rf0k/oP96X/AD9e/i1D/qqj/wA4a7/r379176Sf 0H+9L/n66/jFB/q5/wDzirv+vfv3XvpJ/Qf70v8An67/AItQ/wCqqP8Azhrv+vfv3XvpJ/Qf70v+ fr38Wof9VUf+cNd/179+699JP6D/AHpf8/Xf8Vov9XP/AOcVb/179+699JP6D/el/wA/XX8Wof8A VVH/AJw13/Xv37r30k/oP96X/P17+LUP+qqP/OGu/wCvfv3XvpJ/Qf70v+fr38Wof9VUf+cNd/17 9+699JP6D/el/wA/Xv4tQ/6qo/8AOGu/69+/de+kn9B/vS/5+u/4rRf6uf8A84q3/r379176Sf0H +9L/AJ+uv4tQ/wCqqP8Azhrv+vfv3XvpJ/Qf70v+fr38Wof9VUf+cNd/179+699JP6D/AHpf8/Xv 4tQ/6qo/84a7/r379176Sf0H+9L/AJ+u/wCK0X+rn/8AOKt/69+/de+kn9B/vS/5+uP8YoP9XP8A +cVd/wBe/fuvCzuGNAB/vS/5+k5lOwNpYV41zGXXGLLIEFRW0ORpqFSx03mr5YRDGL/2pJFH+PvY BPDoztOW97v1JsoDMVFaIyM35IGLH7ACelZDPDUxJLBLHPBLHHJHLE4kjljlGpJI5EurKw5DA2Pv XRK6NGxRwVZSQQcEEcQQcgjzB6le/dV6/9LeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691Gqp46WnqaqX/NU 0Ms8pAu3jhiMj6f9gPfurxo0kixrxYgD7SadM+Lo2dDk60B66rUFwfpRwnlKGC30VOA5H62ux/Fv dP3EgVvAhwin/ej5sfUny9BgdP3jj/45p/ySvv3SXrxjjP1jQ/66qffuvde8cf8AxzT/AJJX37r3 XvFH/wAc0/5JHv3WwSOHXvHH/wAc0/5JX37rXXvFH/xzT/khffut1Pr17xR/8c0/5IX37r1T69e8 cf8AxzT/AJJX37rXXvFH/wAc0/5IX37rdT69e8cf/HNP+SV9+610EHcPb+zOk9pS7n3RIZZJZGos Bt+hWGXN7nzDR+WHGYmByLkAa5pntHDGDJIwAF/KhkYKoqT0KeT+Ud5513hdo2lc/FJI1RHEnm7k eXkoGWaiqD1SV2X2dvPuHdL7u3tVoZYfPDt/btHNI2B2fjpns1BiYnt5J3AH3dc6iWZhb0RBI1OI IFgWvFj/AKsdZ68mclbLyPtY23aFqzUMszAeJMw82PkoPwRg6UHqxJLp1d1LvLt/PLg9p0GqOFkO WzlWHTEYWnf6TVtSAbuRcxwpd3/AtyHJWWBav+zzPW+b+dth5I276/eZO5q+HCtDLKw8lHkP4nPa vma46uF6Y+PmyOmsepxVOMvumeLTld2ZGKNslVax+5TUKG4paYH6Qxm5/wB2M559lEtw85zgen+r /D1hDz17kcwc93R+ufwbRTWO2Qnw19Gfzkf+k3D8IUY6Hvxx/wDHNP8AklfbXUfde8cf/HNP+SV9 +6917xx/8c0/5JX37r3XvFH/AMc0/wCSF9+63U+vXvFH/wAc0/5IX37r1T69e8cf/HNP+SV9+611 7xx/8c0/5JX37r3XvFH/AMc0/wCSF9+63U+vXvHH/wAc0/5JX37rXXvHH/xzT/klffuvde8cf/HN P+SV9+6917xx/wDHNP8Aklffuvde8cf/ABzT/klffuvde8cf/HNP+SV9+6917xx/8c0/5JX37r3X vHH/AMc0/wCSV9+6917xx/8AHNP+SV9+690gN/7dxuX25lI6ynikT7OckMoJ1eI2AFvftXhjUPLo Rct7nd2O6wyQMQdQ8/n1Wb8YvkNXbC+Qknxv3NkJKjaW9Hyk/XrVcpdtvbloIJMlNgKWVzxR11PH M0UP0jqEAQASsPbopKniDiOPz+fWT3uv7eWvMnt2PdDaowl7ZeGL0KKCaFyqLMwH+ixOVDNxaNqt UoK26e2usP8Ar//T3h+v/wDmcff/AP1H9af+8NH7917ocffuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdQskA2OrwwBBoqoEH6EeBvr790/a/7kx/6 Zf8ACOudH/wGiP8AVb+/dUl/tG+3qV79031737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvdBd212rtXpzZeR3puypkSlpWSkx+MpAr5XP5mpUjH4PDU7EeSomYcX9KIGkcqiMw9RmYKvE9C PlPlbdecd6i2TaErI+WY/BGg+KRz5Ko/MmigFiB1Rl2J2Nu3treNXvnetQrZGoVqXDYWmkkbD7Sw TP5KfB4hXtc3AarqSA9RLdmsgRFObeBYFqcsfP0+Q/y9dAOTuUNq5J2ZNn2kV4NLKRR5pPN3Pp5I taIuBU1JEzojoHcndWbBiE2H2hj50TObieMlODeTG4lW9MtU44P9mMHU/wCAfT3C26aeLeQ/ynoP +4/uVtfIdjoxPfyg+FBXh/TkplUH7W4DzPVz2yNi7X6629RbY2ni4cXi6Nf0oA1RVzkWlra+psGl mkPLu3+sLAAAoZ3c6pDU9YKb9v8AuvMu5SbtvUxmmkPE8FHkqLwVRwCj/DU9LT3Xon697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3XumbcCK+Fygb6CjqD/toj7pJ8BHSywbTexH+kP8PWs/vutmg+ePx2WCVo2PyG6ugLxF o2MVTvqjpqmMsvOmSN2R1+hViDwSPd7KnhvX0P8Ag66a8tQrL7Bcy+IAR+6L40OcrayMD9oIBHoQ D1s8+/dcvuv/1N4fr/8A5nH3/wD9R/Wn/vDR+/de6HH37r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3ULJf8W6v/wCoKq/60N790/a/7kx/6Zf8I6y0 n/AaH/lmvv3VZ/7ZvtPUj37prr3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuk/uHcOG2ngs tuXcWQp8RgsHQVGUy+SrZPHTUVDRxmeeeRuSbKLBVBLGyqCSB78SAKnpXYWF5ut7Ft23xmWedlRE UVLMxoAPz8+AGTjqiPuvubOd7b3bdmRFRQbYxX3NH1/tqoOj+D4iZws2YyEP6f4nkQqyTsb+GPRT qbKxY1tbfwv1D8R/kP8AZ66A+3XINnyDsgs0pJeTUa5lH4mHCNTx8KPIXhqNXPEAKnoHonN917kE Vp8fs7ETRPuTOBeVVjr/AITjWkFmqZhf/CNfW34BcuJxAtAaseA/y9J/cr3FseQtq1LSS/nBEEVf yMj+iL/xs9o8z1ddtfa2C2ZgcdtrbmPp8XhsVBHT0dJToFCqo9UsjfV5HN2kkbliST7JySzlmNSe sC913W/3vcJd03SVpp5mLMzcST5D0A4ADAGB0pfeui/r3v3Xuve/de697917r3v3Xuurj+o/249+ 69137917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 pqzn/Fmyn/UBVf8AWk+9N8J6VWX+5cf+mH+HrWO3+L/PT47H+nyN6l4/19/0J93tMRuPkeunnLHd 7B8yt/0h9w/7RJetob3Xrlz1/9XeH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691ByH/FtyH/UHWf9am9+6UW3 +5Uf+mX/AAjrLR/8BYf+Cf8AE+/dNy/2jfb1J9+6b697917r3v3Xuve/de697917r3v3Xuve/de6 6JAFz7917qoj5sd4HfO65Om9t1mvZ+y66Co31UU7jxbh3jTWno9tvIh9dNi7rNVp9GqiqEXgPtVa Raz4zDtH8z/sdZg+wvt+NssRzruqf4xcqRaqw/s4ThpaeTy8EPlHUj4+i29W9aZ/tfeWN2lgoyrV LCfLZJ0MlLh8ShH3eQqiOOAbRr/acqo+vszlkWFDIfyHUx85c17fyZsUu9bia6e2OOvdLIR2oP8A Cx/CtT1epsLYm3uttr4zaW2aNaXGY2EIWspqK2qYA1WQrpABrmlb1Ox/wAsoABK7tIxZuJ6568w7 /uXM+7zb1ur65pjX5Ko+FEHkqjAH58Selt7p0S9dXH9R/tx7917pM7n3ftTZeOfL7v3LgNrYtAxe v3DmMfhqFSguwNTkJI0J/wAAb+/ZJ0rk9GG27Tuu83Is9ntpbuY8EhjeRz/tUBP8uiT9h/zLviR1 +0lOm/5t6V6XRaTZOLnyUU0gJVY4stXGlonufzHUMP8AX9rodsv5V1CMgerUUfzp/g6nflr7rPvR zIon/df0EJofEvJFhABzUp3SD80HQBSfzI+3OwCY+gvh92jvGElvBm8tjNwTYx1P+bld8VRJSKv0 POTt9OR7e/dsCf7k3Man0Wrn+VOpBX7sXJPLdG9xeettsW/FFA6SSA+YGqTV/wBUvy6gzb+/m09g BpMH1FsnrKiqGKo2ZyOyqOeFJB6TJHXV+Vq1tf6iDUD+PdlTZY8M8khHoAo/n0qXYPuY8uALf7xu G8SL/vqOYKSPmIoVz/pqfPptfoP+axujW+Y7+6+2uJeWipd3bhVozaxtHgMAiD+npex97FxsqfDb u3+mb/Z6VL7k/dA2mi2PKd7eU85EiNf+cl0x/l00S/CP+YjWBpKz5abT8jFj4xm+xpYWFiAzXo4x cgsD+39P6+3BuG1j4LQU+Z/2OjCP7wH3a4O235EemOK2tf8AjxPkPPpll+F/8ynCx+TDfI3YuTkU q328e+d+4ss0QIiAerwc68XNr+7jctrrm1p9hH+x0vT39+6/eNovuTZ4l9fAtXwfsnU9JfIbV/m9 dbq08UFdvygpvr/dbf8AtPcbyqqk3XG5+XEVT8D6LETfgAk+7ifYpPijZP8AV8q9G9tzL9ynmgiK 4tf3a7f79tpowPteIToPzI6R7fzLvlT0tkKfGd8db5jbhDCO2/dkZTZ61RtYCkytdBFST3/BiyDA /wBT7uNu2u5/3FlofQ/6v8nR4v3Y/Yvn+Brj293lJGPlBcJMV/0yBiy/nEOjq9S/zSepN6tR0e7s dUbYrajQiVEM6vSSPIBpMMdYwRxf/jlVyMfwp9pJ9juoe5O4fL/V/kHUJ87fc8522BHudimW9iXN KGtB6lASP9tGo+fVjWzuwNn7+of4htHcGOzVOERpY6aTTVUoccfd0MoWaK/41oAfwT7KnjeM0cU6 xY3zlvfOW7n6Xe7V7dvIsO1v9K4qjfPSTTzp0tvbfRJ1737r3Xvfuvde9+691737r3Xvfuvde9+6 900Z7/iy5T/qBqP+tZ9+6UWf+5kf+mX/AA9ax3YH/Zevxz/8WL6l/wDfg0Xu1p8D/Yeun/LH/Tgu ZP8ApT7h/wBoknW0R7r1y46//9beH6//AOZx9/8A/Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691ByH/FtyH/UHWf9am9+6UW3 +5Uf+mX/AAjrLR/8BYf+Cf8AE+/dUn/tm+09Sffumuve/de697917r3v3Xuve/de697917r3v3Xu i3/J7uNumOq8rmcY8L7w3BMNrbGppvHzuLJwtoyTxE+qGghWWtn4sfGENtY92RS7iNeJ6kL2x5Ob njmuDbZQfpYv1rhh5RIRVa+TSEiNfMaifwnqjqhpKiNYaWF6iuq6mZi80jSTVmTyNbOZairnflnm qJ3aRybks3s8RVRNHko66Ds0NvFUUjjjXhwVEUUHyCqo/IDq7z4z9L0vUexITkIFG7tyxw5PclUw AkpmkTXR4WOR+QlOreoD6yFifoPZPcTG4kr+EcP8/wCfWAvurz1LztzGzQMforUlIF8iK90hH8Tk V+S0HQ6bm3ZtfZeHqdwbv3FhNr4KiVXqsxn8pRYfGU4IJUSVte8cYJsbDVc/QAn20AWOkZJ/b1H+ 2bXue9XaWG0W8l1PJhY4UaR2+xUBY/s6r33r/M06jGZm2b0Hs/f/AMlt9XaOLF9cbfyhwSSBfrVZ qWnkmMQJF6inoZYSLnyAc+1ybfOF8S6Kwr/TND+S5Y/sHWRey/dc5zWxXevcW9s+VLA58S/mQTEf 0YFepP8ARd0bypXpHNj/AOZ98gBqqq3rr4jbNq1UimpmXdPYbUkn+qNE1YUlCnm1bQOD/ZB921bZ AODTt/vC/sy3R2tz91X27xDFfc6Xyfif/FLHUPRTpdkr6pMCPPp723/K26rr8jHuLvfs3tzv3crS iWqn3LuatwOHmYnXIq02LlfI6CeNL5Zhb8e9PulwnbaqsI/oKK/70anpHuH3s+c7W2O2+3m2bdy1 aUoq2tsjygfOSRdBPzEKno5/X3xo+P3VYiPX3TnX22qiE6kytJtrG1GcuBp1SbgyCTVrn/F6gn2j kmmm/tmLfaSf8PUG8ye5fuDze5bmXeby8DcUknk8P8ogRGPyUdDkqhf03tYAC/AA/p7aAAFB0COu XvfXuve/de697917r3v3Xuve/de6Z8rhcRncdVYrOYugzOKrY/FWYvLUdPk8fWQsPVDVUVarxSKf yrKR790otbu6sp1urKRoZUNVdGKMp9QykEH5g9Vl9+fyovj32XFX5rqVar4+75qhLPHVbKpkquv8 lVsTIP7wdbVTrQ6GPDPjGo5Be+pjwTC23W8tT8RZfQ5/1fz6yf8Abn723uZyZJHa8wS/v2xWgKXL EXCr/wALugDJUekwlXyoOqi89UfKj4AdgYfC9l01TjcTVVrUuz98YHJ5Cr663cIn1SQbc3HKqzYq uKDVJiMgi3B/zU0dnJ/HPYbqmlwEk/1cfX/VkcOs29m3H2f+8psEsm1hBdhazwSIi3ERPAzQ10zR 1wJ4yc8JEbHV3nxS+bu1O76Cjwm46umx26S0NItXKI6OOprZBZKDJUinTTVT2PikjPgqP91lH/b9 kV9tslm3aKr/AKsj5dYJe8/3e979u7p7/bEaWzy2kVfSo4vG3F41/EG/Ui/FqXv6sDBB+nst6xq6 79+691737r3Xvfuvde9+691737r3TXm/+LRk/wDqBqP+tR96b4T0os/9y4/9Mv8Ah61it/f9l6fH b8afkb1EP8STv+h49+sv7N/sP+Drp/yv/wBOB5l/6U9//wBokvW0T731y46//9feH6//AOZx9/8A /Uf1p/7w0fv3Xuhx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 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 n6c/m6/FDtXt7Y3Q+6cH8kfjL2p2u0kfTW2/mB8ZO5fjTT9y1MMAnlxvWO5ey8VSYnJ1+lkEWMWu SsnZtFPTyurqvuvdHfw3f3UOf7y3x8a8ZvfEy94ddbB2X2lunrqcz0uepuvN/wCUyOE21u+giqkR K2ietxVZSVUtG8v2kvgSqEJqqXze690HHZXzV+NvTvYXbPWnZ3YcOy9wdG/Gak+X/aNZmMPnF29t boKs3Rndnx7wmz1NTyU88or9t5aI4ylaSsPjQrA3miD+690EPxA/mafGP5rb13J1n1gvcGxuzdu7 DwXblL1x370r2L0TvTeXSm6a1cZtruzr/B9i0NFJmdq1tU6U0WVotarI8SyrGJ4DL7r3VhHv3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuqf92fzzP5fWxN39pbZ3juTvvBYPpTtjfnSnavbT/Ez 5L5bovYu/utd5Tdf7zodwdybf2vWYCGlosvA1JNkDW/bJqSR5FiPkHuvdDR8jf5pnxM+MfZOy+pd 51fcm/t89gdT0PeO1sX8fPj93J8i4q/qrJ5+XbWO3q9f0vhs1DFQz1kJjhnkcI4eJlJWWMt7r3Qw dVfO74ldz/HDcny12L3dtN+gNjx7u/0i783QMnsJesK/YAJ3xgOz9vb4p8flNu5TE+n73GZiip6l A8TeIpNEz+690R+g/nu/A+aHD7u3BRfKvr74/wC5a2go9rfLzsv4a/JPYfxN3F/GJ46XBZKk7s3H tyGgpsfXSSKtPk8ilNSAXklnjitIfde6uKx+Qx+Yx9DlsTXUeTxWTo6bI4zJ46phraDIUFbCtTR1 1DWUzNHNDNGyyRSxsVZSGUkEH37r3VcO+f5s/wAMth9GdQfIeu3H2huTr7vfuDsvonqqm686O7Z7 F31u3szqLce5trb8wVB11szE1uaK0dVs/PkVBovFJFTeZGaJ0Zvde6EDoz+Yv8bu9tld0dj0R7g6 f2B8f9v4zdfaG8/k90N2/wDGLbWE2zkqLKZGXOUeZ7yw+DgrqWhgw9ZLlJqN5Fo1MBqTH9xDr917 optP/Pg+DL4yn3/kNufMXb/xzrKuKGg+YG4vhD8ncR8UK2iqqoY+h3CncVRtv7WHFT1B8KZOqgip l5klkjhBlHuvdCR35/OV+Enxz3ltXZm+K/vrcbdgLsn/AEZ7z6k+MXffcfV/adT2Ls47/wBnY7q3 tDrXAZLBbiq63EJNWx0mHrqiXxwznRaGXT7r3VjPV3YmC7c662V2htii3Rjdu7923it04Wg3ttLc Ww93UmNzFKtZS0+49l7tp6TJ4usVWAnoq+linia6SIrAj37r3S99+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691Vr3R/OK+EPQ3fu4+gN /wC5uzkruvN1dd7D7o7e290v2RuX459A757ZhhqOutod4d7YjHybf27W5RKqkKCrq/HB51+6kg8d R4fde6Hj5bfP/wCMvwsl2Rgu4917iyfZ/ac1fTdSdD9TbD3j3J352xU4qPy5MbC6k65o8hl6uCmX mpr5KeKjhNllqEdlVvde6QPxp/mffGD5NdrVHQGOg7s6M+Qybfq934zoT5XdC9p/GrtXdWz6ABq3 dGx9v9q42gjzlLApMlUuJqKieniBmqIYoSsh917oy/anyY6O6U7I6C6k7P7Aw+0uwfk/vTcPX/SO 3ciKgVG9t0bV2hU71zlDTTxo0UCxUlMsSy1MkaSVVRR0cZepq4I3917qX3H8hOruhsp0liOys1WY ev8AkN3ZgPj11ZFSYbK5dc32luXaGc3ziMLWS4yKVaKGTG7dyszVtWUgVoljZw8kYb3Xug5+YPzW 6K+DWxth7/75q9+Jieze1MN0vsTFda9Yb97d3hubsbcG1czvPFbfxey+tqDJZOZpMdgMpN5EpSgM QUkM6A+690zfFX50dOfMPIbzx3Vm0vkRtqo2JR4SuzL95fGfvLoClq4c/PUwUSbdrO38Fh48nIjU shqY6FpWgBjaUKJELe690c337r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdBr3H2xsjoXqHtTvPs zJVGH636Y633x2x2Bl6THV2XqsVsjrrbFVvDdeSpsTi0lqaqSCgo6iVKenjeWQqEjVnYA+691Wtt f+eL/Lry24No7b3v2N2x8fqnsDKUOG2NnPk/8Yvkh8dtgbmyGRi8tJBSdpdr7Wxm2KfWNAjNfl6c SF0Eest7917qwMfInqo/JF/iY2crIe8P9B8XyJp9tT4TLQ4+v6qO/H61rM5jNxvCKComo8uIKeuo op2np1qaSWWNY6qFn917qT1l8g+ne4t093bM633zidz7k+OfY0XU/cmNo/uI32ZvubZWK7AGGqpq lEjmC47MUZkqKZpIVqFqaRpBU0lTFF7r3Rasp/M8+Em3/h5tT547r7oo9o/Gjf0lTTdfbx3Ltvde Mz/YNcucr8BicTsPrx6JtwZiuysmNqqjEUGOxk1RV0oFVDE1OTIPde6APaP87X4VZLeWytnds4v5 OfEpO0MhRYjqre/zJ+K3d3xr6r7JzGTRp8Zi9sdodkYmlwazVUK+alGRraVZgVWJnlYR+/de6tT3 luzCbC2hurfO5qmWk23svbec3ZuCshp56yalwm3MZLmMtURUlKrSyskEMjLHGpZiNKgkge/de6R+ wO7eq+1undt/IDrTeuH310/vDY8HY+1987bklr8VnNn1OMOXiylGiqJtQhDCSmkiWeKRWhljSZGQ e691h6G7u67+SfTHWHf/AFHlqrPdY9w7JwHYWw8zW4rJYKrye1tz0CZPEVtTh8xHDVUzyQurNDUR I6nhlB9+690Lfv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3XuiE/Kn+ZB8b/h92NtHqXtSj7y3F2FvbZWT7Fwm2Okvjt3T33kk2Zh87Ftqv z2Xp+osLl2oYErpoacPViMF3UC+oX917p5+NH8xf4dfMHAdl5v469vx7/wAl05HVSdodeVWy+wNh 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 VtWUgVoljZw8kYb3Xuis/Jz+aN8Uvi52tjvj9m6vtjun5HZHBx7pb47fFnpbsf5I9z4bacgjePc2 7Nm9V0GQfC0cqSxS07ZaWmeojYSU6Spdh7r3Sm+JP8yD4o/NDcW8+vOpt4bm233Z1tSw13ZHx27s 693r0d8gNjY+eVIUy2b6o7MosdlJKASSwxSZKgiqKSOWWKKSdZZEQ+690e737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3UHIf8W3If9QdZ/1qb37pRbf7lR/6 Zf8ACOs1J/wGh/5Zr791Sf8Atm+09SPfumuve/de697917r3v3XukF2H2TsLqfa9dvLsfdeG2ftj HhRUZbN1aU8LSNcxUdHCLy1NRJYiGmp43lkPCIx492VHkbTGCSfIdHfLvLW/82btHsnLVpLe3cvw xxKWb5k+SqPxOxCqMkgdVcZH5f8AyV+YGUyGzPgzsKbaWwYqqbF575KdmUYocXSKG+3qztbH1Ec8 fnS5KRRw1lWLjywUB/cC8WtvZZvm1P8A77Xj/tm8vs4+nWU9v7O+2fs3ax7z787gL3cioeLY7F9U h81+qlUrpU+dGjTjpkm+Et3YPwP616O6I7a7Y39mMx3z31kMBHFW9odjySZQY7K53KwYaWq2vt/I S1EdK6LUEQ1dVLU1aWHjnjX0BqW+lnAgSkcdfhXA/PzJ+Z6ts3v3zTz5zttPJ+wQxcv8vRzVTb7I CNWSNGkAnlUK0tdPcoCRt+JCc9FG0hY/GbtZFQN9bKo0A3P+AHHs0J7qr1kX8P5dbAHTdFHQdW7C pohojTbGMcKOPVPD524/12Psjk/tD1zW5yna45q3CZskzyfyNP8AJ0J3tvoM9Ui/8KMQT/Jz+YFg TbH9TFrAmyjvDbdySPp/r+9jgerx/GOoH8ifubqDbP8AKS+EOD3J2v1rgM3j+rcpFX4fN782vi8p Qyvv7MSpFWY+uqo5YmKMraXQGxBtz7116T4z0RL/AIVYdqdYb1/ld0GI2d2RsLdmXj+TXUlc2K21 vHb2dyK0cG3txpPVtRYupll8aF0Dvp0gkXPPurGinr0fxjrYL+Ev/ZEHxG/8VU6E/wDfRYn3bqnW qv8A8JO+xevtjbe/mMRb331szZ0uS792BLjU3VujB7ekr4afG7gSaSijy08LSqhZQzICASATf378 R+3p2bgPs6PX/wAKbe2Oq95fyn+ycLtHszr7dWYftzo2ePE7e3ntvN5OSGn37BJPNHQY6pllZUX1 OwQhRcmwB9609pB/1Z61H/aD/V5dWk/yf/8At1z8B/8AxVjp/wD95SD3vrT8T9p6oA/4WG/8yO+C n/ift+f+8TTe9+X59Wi4n7D1uAbV/wCPY25/2ocP/wC6+P3rprrWt3f/ACZf5ome763L2fhv513e W3+vsx3Llew8Z1VBB2icThtlV2+X3NS9cQNDvFIPtoKBhi1KUyx+McRBfR791cOumhUV6ub+efyN +G3xj+P+e7A+ceR6/Xpx6mPHQ7V35tfHb9ffm5DSy1OO2ttTYFdT1bZfJzIkpigip28aB5ZXigWS VfdVAJNB1ra1/wAnf5kP88WX+6Pxvz2M/le/y1KuWXB5Dujdm48LQ/IPubatL/uOrcftHFYytpqi GlliV4xS4qeloUBaKozFbY0x91cBE45Pp5dWz/yktn/yz/ipuT5BfAT4Ubly+4O8+la/be6Pk1mt 202aye8d/wCWyuJp0wm963fBp0w1dRKlYKalosRKkVGzSp9usjTSSe6qxY9x8+ruPfuq9dH6H/WP +9e/de61JPn1sROqvnj3FQ4uI0OM7MxG1e4sSEBREy2Wg/h24qmEi3qfJUtTOSPy1/r7F2wS64DG 3Dh/q/I0/LrsX91bmN+Z/ZTbkuzrksGmsXrnsiYNGD9kEqJ9i9Xw/wAvrsl99dPpRzyaqjGmiysK l7mODOQN99CqfhY6+CqNvxr9ke5wGG5Nfs/Z/sU6wE+81ymOXOejPGtEl1xn5mFhoJ+bQvH/ALz0 fv2W9Y39e9+69031tfR4ykqK/IVUFHQUcM1VWVtXPFTUdHT06GWeoqqmYqkcaKCzO5AABJPv3V4Y pbiVYIFLu5CqqgszMTQBQKkknAAyeqdflV85ardy5DrnpPI1GN20xmotwdh07y0eU3FDcxVGM2iV 0yUtE4uJcidM0y+mnEcZ8shhb2ZNHl/Iev29Zme0vsGm2mPmXnyMPcCjQ2bUKxniHufJnHFYcqpz JVuxa9NmbK3DvjP43aWzsNNlcxX60pKClQLHBTQJ5amrqZT6IKaFLvNPIQqjkm5AJnI0UMZaQ0AH +oDrJTfN72zYNvk3be5hBbxDuZvMnCqo4s7HCoMk/KpECbbsu0fmH8Vdt1FUlZUYv5AdQxVM8YCw vVNvzHmo8IYBtAYaVLWJABIF7eyb6p7tnbgoBAHy/wBn/Y61Huy777N82brGmhJNp3DSD8QX6WWm ryrTjTAOBXj1tae0vXJ3r//S3OOqf+yyvl7/AOI/+K//ALg7z9+690cD37r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3WuN/O53V8wdi/Lf8Ald72+B2zOp+x/lBtHB/zD9yd e9edz0W6K/Zu+ocN8e8NXbm2nTU+0MthKs5iuxiVcOCD5Snp2rzTpUyJAzuvuvdEF7i21le4P5J3 83H+Zpv7vrYvdPb/AM+Pjl1rjd54Lqnq7MdNdddG4b40VVXsvBdKybG3Zls7uBdz4TJZjPQboqc7 lpphU6KWmH2tNHUVXuvdbCvRXU/8zbH9i0D/ACt+UHw+7j6NqsTuHHbv6962+JO++tt0545LCz0W Ljh3VubsPcdFHTJUvG9ZTzYmUTwh4QUL6x7r3Wvfk8v2DtPaW+f+EzmAyu4MdvDevyzh61653mtT lJ8jiP5NvamPr/knvXc9JuDIeP7yqweBpNw9OywlvEHkpqaN4yYD7917qyn5F9b/AB/P807C9Kdt y7V2B8Y8t/IU+XHSu+Y8vuOh2LtLbnT24/k71X1zk8RJuXIzQQ4ymTF1Jo4ah518V0s2oD37r3Uf o/fff/wi7Xov5X3yrzVD8gdqbs+K3e2Z/l+/MSPE4vG9p7h6k6M29jYN9/H/AOSmGxyqo3HtzH1m Bkg3bQRw0Wep44JauNcsJh7917oiv8t59uP3J/wngi70bEr13D/Jz7Dm+JP94YYhipfmVNUbEi33 Hhp6hPE2fHWy1rYxWfyLTivMFndtXuvdW0fz9qnp6m/lR/LE9sy08Wbl2XGnx4+0naDfL/LBKtaj 44DqpqIHItuJNzpRS064kfdfbLVm604nYe691WT2f8TO+Pkf/NQ7g7g6w3/D01/MN+Lv8uv+X12d 1Du+rnrW62y/Yud3H2rjO3+i+4tv0TSCu2RvQRfwvMGBTV0TR0tfRyeSlMVR7r3UPqXvrof+ZP8A Pb5q7Y+UO3st8bqDMfydunfh580+qux9yUexM50T3Pm/lr2Rtjd+waXfuX8NDUCobcWHr9nZ2HVD lKXI4qpSHyVRpF917qwr4edl/IzpT5JZT+VP8z9y4vtLeMvxfz/YPxK+bvXFBDsrsHtT4/bLz1B1 xuPafb+Fp2qHwe/ttVOTx1XHlse7Y7Jofu9MVdE4qvde6tO+MfQmN+L/AER1x0Jh+yu4+4Mb1th6 rDUvZPyB37Udndw7rWrzFTmXrt673qIKX72aNqlqenWOmhigpo4aaCKOGGNB7r3Q8+/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3XutTT4tdCfzI/kr1j/NK6L6N70+GnTvxc7o/mV/zVerN253f3QXbXav yN2/Qb3+Qm4ttdgZHbM1PvbEbPqGkp6l0x0OQwzLGGJmMrBffuvdB/8APHPfMH+XB82+rpv5dOze ru1KD4h/yUOsNldj4XvXavYHZu7X+L3VXyVj2dn967I231vuHac2Y3Lh6Wjo8xWUc2SiSqpIa0QD 7nwI3uvdKDuno7ZXVvwR+LHb3bnyJ2j8nugfnf8AznPjb80/n13Nsra9LsP4z5frruLBjCbTxke0 6ioqzjuuqTdeA6wx2VbcVbPUzyCefKyRNM9PT+691tSdnJ1VH1Pv2Pt9dkp0omwdyp2Um+VxC9eJ 1quBmG613WuX/wAhGIGN84rBUfs+DVr9F/fuvdVj/wAhObNVH8pn4jz5Sfc9TiJcf3FJ1lNvH7r+ PnoNvkJu0/HFJhXBZhTpsH+7aUAkFxSiEc/X37r3VGHW+D7mzPw1/kXYzoLeWx+uu3cz/Ni/mL5P rze3Y+ysj2PsTGRZbe3yXzdPl8ts/B5XC1GSpa3EyOaT7fKwC80U4d0XQ/uvdHM/mdbH+aO1/jj0 VB/MU74+OHdvxVy/8yr4AQ/JKPqzoPd/SWy9vfGWDsDMrv8Aj7rfdO7t2Q5Db9bvCXro1LO1HDTQ U9UJmn+4RY/de62ZcjSba/u1XUOWpsH/AHO/gdTSZKjyENB/dr+7X2DQ1lNXU9SPtfsftdSSpIPF 4rhhov7917qmf+YqnXMZ/kgx9PrslOp4/wCaj8ck60TrUYJevE2GvxD7eXaa7GXa/wDuNGIFD4Bj hj/8n8Hj8P7en37r3VkeJ+NeOxHys3d8sE7g7+yGW3f0zgel5ejsn2TLVfGzA0GA3Md0Q7+211SK RVpt0zyM9LUZd62S9M8sUcMZmmaT3XujJe/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de61yvltXbn/lqb0+Rf8yz457k2L8j/AIMdjdvY Xc/8yD4n1+W25l67rjsra82E6m3T8lPjzu6l+4SLdOFlxWIO7tj5hWFU9Ixp5KOsSBqP3Xuhp+JN XsvN/wA7P+aBl+xCtZ2/U9I/B/K/FWq3VTwxV6/Div6omO+Zuo48jFHVJjm7Mlz396XpiV+6kx8c +lwi+/de6t93fQ9Nz796qrt/UfWM3Z9Dkd1J0jWbvp9qyb9ostV7bdN7L1VUZoHIR1MuIWQZUYgh 2owwqLwg+/de60xfm0fkP/Mu+UHy8+S/Q3w7+UXeWJ+MlPiPjp/Kv+RHTWa6Hpeveqvkf8aO6oOy u5e/1oez934esrJMzv3buP2kMph8bUpLtqjqEieaap8MXuvdWo92/K7b3zf6J/kC/KDb1C2Fk7S/ mkdF1m7dqzQz01ZsbsvAfGTuna3afX+QpKtmminwW4qHJ4qRJjrvBqb9Xv3Xuhx/neY3tTMw/wAq zF9Ibt2hsTtit/mzdMwbE3fv/aWR35s3AZ0/F7uEw124doYnJYepyFOEDq1PDk6diSD5Bax917oe 4fiN83++ulu8+iPm980MH/d3s/F7HpNl9h/APr3eXxD7v63rdtbwi3ZnKrHdibk3TvcMuTFHR4+W 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 7YpccslFhsx90YsTvPa5qS9FlP36YNRVcSwe690Vqo+O/XPyy6G/l9/HbtiHMvsPtL+e5/NXwWXq ttZqt23ubCVlNW/IDNbd3PtjO45llpMniMnS0eUx041KlRTxGSOSPVG3uvdGR7j+Qnf+0fkj/Ko/ ly/N+qrN1fJ/pf8Amh9P9j9UfImlwklBtT5pfFzE/H/tfZtH3b4aATUmF3dg63J4jBb72/PVGQV0 8GSo/LRV6mH3XurH/wCS8dh/xL+ZKmfajf5kxfzH/lBH8qZM2gTseTCjsGsb4xyTGvVaxtnnr44X +5phH8N8X3YorOKoD3Xus+2fm537B/ND6D+Mne38t/o7rnfXc3XPyEn2x8kNlfK/bXdPbmyvjn1T Cu4xmd1bOoOtMTk8Tt7c25BgMbDj6jc0VKcjMzo1XPj2R/de6u89+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691ByH/FtyH/UHWf8AWpvfulFt/uVH/pl/wjrN Sf8AAaH/AJZr791Sf+2b7T1I9+6a697917rizabcE3NuPeiQBU9e6rN+Rn8xnaexdyR9P/Hnb0/y C74y1VPicdgtqrPldsYfKRXSojyVdiiXr5qU81NLRSLFAA33tZRWv7XQWDyr40x8OMfiPn9g8z1k v7cfdx3jf9rPOnuLcjlzl6IB3nuKJNKhyPBjf4Q/BHcEuaeFFLWnQddafAPsTu7ctB3N8/8AetV2 FuND9zgukMRkfFsLaMEtpUxuYlxTJBMo+kuPxgSnci1VU5G5b2499HEDFYDQPNj8Z/PyHyHQk5l+ 8Fy9yNtcnJf3ebEbXat2zbnIuq+uSMakLgtGDxV5KuK/ppBw6tgw+Ew+3MVQYPAYrG4XC4uniosX iMPQ0uMxeNo4F0Q0uPx9EqRQxIOFSNQB+B7LsnJyesTbu9u9wupL2/leaaUlnkkYu7sclmZiWYnz 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 pfMSrLXdUdP1XZeUrzt7DOY4VZKICoZI1R6hk1K3uvdCLub+XF8O97/EjrX4Qby6lj3L8eunMPsX FdWYKv3Tu+m3h19VdZwpBsTdOy+0MTXU25MXnMaqaYM1QZSGs0tLG8rRTSo/uvdA31H/ACg/iX1p 2rsTuzeWb+Sfyj7J6jyAy/S+a+ZHye7p+TmP6YzAA8ed6y2n2jlqzD43JRMkUlJlBQPW0kkaSUlR BICx917o7eC+PfV22+/+w/k5icLWQdwdpdb9d9T7zz75nKz0OR2R1Xmc3n9mY6DAzSmjp5Keq3Dl HkqIIVllEirIzLGgX3Xugq7h+Anw+793D3DujtzonZu8s38gencX0N3VW1aZLHzdkdabf3Am6dqY 3cUmGqKZzX4WvjSpwucgaPJULpEaWri+3pvD7r3QX/Gz+WD8Y/jHu7ffZG3sh312p2rv/rUdK1/b fyG+RPcPd3aG2+l4618pD1P17vbe+WqK3buESrf7sQ4aSnladIZXmd6enMXuvdC38EurehulfiN0 Z1j8YP71HoTa20ZYOtP77Z3ce5NzjBZHNVeZlXKZfdkktcxFVU1AihkYRwRBIKdI6eOKNfde6Nv7 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de6BLo7499XfHXGdjYfqnC1mDoO1u7O2vkJvWKtzOVzbZH tLu7d8++ew81Ty5aWVqeGryVTLNFRQFYIFIjhREAHv3Xuu/9l76t/wBmM/2az+C1n+mv/Qn/ALL3 /eP+M5X7D/Rb/fr/AEj/AMF/u95fsfN/Fv3/AL3wefT+1r8fp9+690FvWHwP+K/UfS3anxu2n1Ti an48dxbq7A3Xu7o3dtVkN69V00naNWclvfbW09l7plq6LDYCrq3mrI8BjY4cfTTyyyUtPCXPv3Xu iU0v8ij4MGLC7R3Jlvln2H8fds5Cgr9s/EDsz5m/JPf/AMSsF/B5/u8DjYOktzbiqKCpx9BOWlp8 bXvUUp1NHLDJCTH7917o2Hyn/l9dE/LE9X1+5893p09uvpjD7m2v1rvz4wd89n/HPd+2Nlb1p8fS 7w2LBWdX5GhppsPkkxGJFRR1NLIFFHAsJiUOr+690gd/fyn/AIV79+PPxw+Lq7I31sDqP4lZanzv QdH1H3J2t1Zu7YeZh21ktpz5Wl7F2Xl6TPVFTV0eXyYrqiqyMklTJUzSzvJI7Mfde6W3Rv8ALp+N vRGzO5euqEdwdv7C78wmH232bs/5Pd89v/J7beX2/h6bJ0Yw9BiO8sxnIKCnq4stVJkY6JIhVhaf 7jyfbQaPde6K3T/yMfhOmGXrrI7s+Ze4PjnBeCh+I2e+cnyiyHxdosOjQvSbVXqr+8yR1GFp2hXw 4atqpqIKXjaBonaM+691YLvr4p9Edg43444PMbEocXt/4m9pbO7h6D23tGWo2bt3YW8tgbEzPWu0 BQYPbbU1K+OocNnslRwYqSI0oVoyIrwxlfde6b8d8Z+lMF8u9xfLamn3FF8guweicZ0nkKer7G3N U7arurdi7yXdQqMR1lV1jYyKemyOSplqclTUYaLzqoaN66paq917ozfv3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuqoeyf5LnwR7U7Z3 h2fufafaVPgO0OycT3L3R8eNvd5dp7e+J/eXbWFraXJUfYfb/wAbcZk02rm8jJVUNFVVxnx4hrpo hLXQ1Mkk7S+690Yb5dfy+vjN816jYe4O4tt7sw3aPU8+Qquo+9+nexd79K979WzZZBFlo9mdqdbV 2PycVLVKLVGOqZZ6ORtMrU5mjjkT3Xugv6e/lTfFTqPfeR7hrK3vzu7v2p2fubYWD+QnyU+RncPf XcvXW0920c9BmcV1FuvsLK1abQZ4qmeP7vbdLRVJVtDzOgCj3Xujg/Hn4/8AVHxX6T62+PPRu1od l9UdT7ZpNqbM27FV1uRkpMfTyPU1NXkMpkpJamsrayplnra+tqZXmqKmWWeV2kkYn3Xuibdmfykf hV2ls3c2wsvtPsjbG3dz/LrLfOmSPrXu3tjrXJ7f+TO4dn1+ydx7/wBkZzZmWo6zBrkKbKZGorMd ip4KSSsqZqwwieRnPuvdJ/O/ydvh/urpnCdFbpy/yk3PtLa/fGH+SW1dwbj+YfyVznZ+0+18DsLJ dbYvL7U7Xym5ZdwY2ljxWXyEf8OoshHTGWZ5zF5jr9+6917/AIZ7+JU3SPfHx8y+5/lhu3rn5F4f ZWE7Cp9/fMb5IdiZulpdgbui3tt6TZed33uLIz4SQ18MRrzjmjFdAopqxZ6cmI+691ZvhJsM1Gcd hMhT5Cn2/Iu36gRZVsxU0FXjYI0fH5SsmlmmNVHG0ZlFS5mOoNISWufde6effuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3XvfuvdBr3H1PsjvrqHtTozszG1GY637n633x1P2BiKTI12IqsrsjsXbFVs/deNpsti3i qaWSegrKiJKinkSWMsHjZXUEe691WXhf5GX8vany21shvzafevfOL2RlsTntq7E+R3yz+TfevVuL zeCmSbEZKbqzsbdddt+uNPoCRwZLHVEGngxHi3uvdWQ919E9UfIrrqo6m7m2Zi99ddVm4+vd11u1 MqJ1xVbmOrd/4vs7ZT1cVK0ZkhpszhsfUSUzHxTJGYJkeGSRG917rl210Z1V3rS9f0na2zsbvCLq vtrr/vPr7+IGoV9rdq9XZj+N7H3jjXp3S1TQzF9GvUrI7qykN7917pH/ACg+Jvx4+aHVVd0t8mur sD2r15WZKhztNi8tNk8XldvbkxauuK3Zs3dm3Kijy2Ey9IJZVpsriK6mqo1kkRJQkjq3uvdEo2L/ ACaPiPtze2w979kbt+WXymfqbcWL3h1Fsz5efLrvn5FdYdXbvwfGE3TtLrLsDM1GE+/okCJRVFfR VJp9EckPjmRZB7r3Vnu8tp4Tfu0N1bG3NTS1e296bbzm09wUcNRPRzVWE3HjJcPlqeKrpWWWJngm kVZI2DKTqUggH37r3SD696G6r6z6C2N8YdubUo6vpHr7p/bXQ2C2PudpN2Y+p6r2psuDr7F7U3C2 4DUPkoXxFOlHVmuaRqhS/mLl2v7r3RXuyv5Ynw/7M6L6I+P9TsfdWx9r/FiGiT4w706p7Q7F607m +PtRjsIdt0db1b3HtLJU24aF/sCtLURy180NUkcX3cU5ijK+6904dDfy4PjF8edqd44LaVD2luzd nyX26m1u/e8O2u7O1O1PkN2lhqXbdTtLEUme7s3llarP06Y2grKiLFRYyrpY6JnaamSKYmQ+690P /wAc+l+sfjN031z8aepKnJHZfR+ydu7L2/jdxbrrd37roNv0lO8OHl3DlsrLJVyPOI5TG8oVLKUg RIo1jT3Xuhz9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3RCflT/Lf+N/zB7G2j212pWd5bd7C2TsrJ9dYTc/SXyJ7p6EyT7MzGdi3LX4HL1HUWaxDV0D 10MNQEqzIA6KRbSLe690pvid/L7+KHwnqd8ZroDrasxO+e0JMfL2d2tvvffYHb/cHYcmL1tQpuzt LtfKZnN1FPFJJJLFQrWpSRyO7xwIzE+/de6HXbfRnVW0e4ez+/Nu7OxuL7a7m211ttDsveNOZ/4h urA9RtlxsClrkkcxqaBc5kIw8SK0iNGshcQxafde649fdE9U9Wb47q7I2Fs/H7e3p8h96YLsHt/N 0clU028N17a2Di+s8Lk6iCaRooPDiMPRQmOmSNHl81S6tUVE0j+690TLv7+VH8U++O4s38iaGs76 +OXf+7sbjMNv/uX4hfIftr4yb57Mw+Fp/tMNQdk1XVmToaTOGkiCxU9VkKSSqSNViE/iVUHuvdDR 8Svgl8bfhTQb5PSO08829O181Sbk7h7h7L3zvHtvu7t/cWPpjSY/Ldkdsdi1uRzOSNNGzrSUz1S0 tPrkNPBEZZC/uvdCr338e+rfkvsvD9fdvYSsz218F2R1f2xjaKhzOVwM0O9+nN+UHZWwsk9Zh5YZ XjpcvjKOeSnZzFMqmKVXjZlPuvdd/wCy99W/7MZ/s1n8FrP9Nf8AoT/2Xv8AvH/Gcr9h/ot/v1/p H/gv93vL9j5v4t+/974PPp/a1+P0+/de6BPJfy9/i5l/i13F8NK7ZWYl6B743J2vuzsvay7z3THk sxm+6uxavtTsKppdzx1QyFGtXmq2oqIo6WoRYEYRQhI1Cj3XugHo/wCTv8Pl6r7p6Xz+X+UfYfXf fm29ubW7AwfavzD+SvZ5/hu1N4Um+sLUbUrN9blr5cJWR5GhppHrcW8E7onidzGSvv3XulB1T/Ki +MvT+X3LmNv74+X24m3bsDe3WmaxnZHzb+U/ZWBl2zv/AAkm39wNR4Tem6qynpcgtPK/2OUpo0q6 SS0tNNFKAw917o3vx16X6w+MnT3W/wAZOp6rJLs/pLYO2drbbxO5N11u7d30W1IfuMdgq/PZPLSy VkoqZKSsSGaQLETDLFTqkcHjj917oc/fuvdF5+UPxZ6Q+Y/UWW6S7+2lPuvY+Sy2A3JQvjM9n9o7 q2nvLaWTTNbQ3zsfee1KmjymHzOKrI0qKKvoKqORSGjfXDJLE/uvdFV6+/lL/D/YfUvyd6nyWO7c 7Yk+ZW112R8mO2+8e7+y+2e/O19n0mAm2tgts5vuLduQnzMNDisfUTUuLpqGeBKcOzqplZpD7r3V jWJxFFg8LjMBilkpcfhsXRYfHLraeWnosfSrRUa+Wp1l2REX1SarkXa/Pv3XugY+M3xn6e+IfTm3 OiOitu1m2+vds5DdOZpqfLZ7N7r3Blc/vfdVZvTd249y7r3NPVZHJ5DIZOvqqqprK2pkkYuF1BER V917pI0vwo+M8EnyohrOr8Tndt/NPNUW5PkfsDcs9buHrbsDcFPsek67yGck2BlpJcXRVeTxdBQx 5eooaaJ62WnhqahpKiNZPfuvdEUx/wDIp+ElLgaXrXI7t+Zu5/jjj2jixnxH3X85PlFnPjBR4elm hnxm1ZOrKnc3jrMNSNTx+DE5GqqKUrqSWKRHdW917ofPkD/Ku+IPyL3T1ZvHcWD7S6yz3S3VM/R3 W1T8cO8e2fjXDtvqSfKUeZPX9NS9J5bCRtikqMfQPFROpiT7eAKgEUen3XujK/Gn40df/FLrqfrD rXO9sbi27PuTJ7pev7k7i7K7w3cuSytLTUdTTx7z7VyWVya0arSxmGiWqEETGR40VpHLe69089Lf Hvq74/f6Wf8ARfhazC/6bu7N+fITsT7zM5XMjLdpdk/a/wB7c1TfxWWX7SGf7Kn0UVNogi0nxouo 3917ot/yq/lrfGf5idnbM7l7Wl7s272ZsLYea6y29vDpP5C9y9C5pdi7i3DTbqzO2snW9R5nESVl LPkKOkqniqWdTJDE1rxoR7r3S4+PvwV+P3xr7Azfa+wKDfmc7Oz3UfXfRdb2B2r2hv7t7eMfVnWG Vymf21tSi3L2NX5GshhkyGYrchkmSbXW1JimqmleGIr7r3Qn7++OPU3ZHcvRnyC3Ngax+3Pjp/pE g6t3di85mMNU43D9r7dj2zv/AGzmqPGzR0+VxeRhp6Kd6DIxTRJVUlLVxKlRBHIPde65fHn459Tf F3ofrz41dPbdmw3T/Vu1V2XtDbWYyuS3RLS7cEkspx9fldwSVFTWBjNIHapkcsDYkjj37r3QUbK+ AfxW64f4uLsHrVdoY/4Z7u7l3r8dMFhNwbhpsD1/mO+sFuDbXY8FPiWqmiqaKai3Pl4KKhqhJBRL JGKVIhBCE917oZeyugOoO3t59L9idhbIxe4d8/HjfGR7E6b3VM1TS5vY26c1tSt2RnKrGV1DJG70 9djK+opqyhnL00xEMskRmpqeSL3XugM2t/L3+Lezf9EH939lZil/0FfI/uD5Ydb+Xee6qr+Ed297 f3m/0k7jq/uKpvu6es/vdnfFjqnXTU/mTwxJ4YtPuvdDn2t8f+oO7cx1JuLs7ZGL3PuPojsvFdv9 R5+oappsxsXsHEUNRiYs1hshRPHIFno6uppKulkLwTxSWliZkiZPde6Kp8mv5XvxU+UHaVF39mqP tjpX5HUeDh2pL8i/ix3X2X8bO6M3tCDx+Pae7d4dU5HHnN0KCGBYEzENTJTpGkdNJCmpW917pZfE 7+Xt8bPhxnt87960xO/t59z9o0uOx/ZnyE757U7A767733isO/kxOCzXaPaNfksjFjKchGTFUD01 GZESZ4HnHl9+690d737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3UHIf8AFtyH/UHWf9am9+6UW3+5Uf8Apl/wjrLR/wDAWH/gn/E+/dUn/tm+09Sffumugs7Y 7i646O2hWb47P3RQbY29TP8AbwPUs8+Qy+QkUvS4fb+JpQ9TX1s1j4qWlidyAWICqzC0aPK4jjGo n06EnKfJ/MnPG8x7Dyvavd3MmaKO1FqAXkc0SONa5dyFGBWpANO2T7c+Vn8yjN5LZnRVJkOivjFB kKjE7r7HyRlFfuClRvBXYypyOJlRshVshIbAYWqWliLaMnkXB+39mvg22391xSSXyQcF/wBMf8nW ZNvyd7Tfdlso949wGTmDmsqHgsIyDFbscq7BgQig58edDI1KwQLTX1Zz8aviN038WtunFddYPzbj yFHDT7o7AziU9bvLc7Q2dY6uvjREpqNG5gxlDHDSxWBWLXqdi65uJLl9cxr6DyH2DrGD3N93edfd fc/ruZ7j9CMkwWsdUtoAcdkdTqemGlctI3m1KAGj9s9Rj1737r3SE7N2lDv7rrfGyZdBXdW1M9gk LGyxz5LHSU1NKT/tEjI/+w9+6OeXd1bY9/st4X/iLPFIfsRwSPzAI613cW1QtDTJWgw19KWoMlTu NMlPkMdIaHIU0gbkMk0bqQf6eztXEkSuPMDrpmkkUyrNAQyOAykcCrDUpH2gg9Wn/BTsmGrwWa62 r50+/wAVO+XwyM4BnoKkAVMUYPN0ZQ1h+Ln2hvYypDqMHj9vWIn3hOVpLXdIeabdf0rgCOQjydeB P2g9WHe0XWN3Xvfuvde9+691737r3Xvfuvde9+691Xd/NW+QnaPxa+C3cHdnTO4MHtTsfbOY6hw+ A3JuPA0G5cNho9+d07e2DmMjWYTKSRU8/iocnUuiyyKocKxIA9+62oqwHRW9h/J35B9TfPT4zfFn c3y86Z+b21PkhtTu7Ibrx+zutNm7A7Q+P8nU21YN1YTf+VbrXM5Kil29mJpf4HImWo4JRWSQNSzy /uwj3Wui8fBX5afNL5W723LlOwPlAep9l7d+Q/e2z6Mv1N8RX643LtvqXvqs2BhOt8bWZHeR7ATL ZPG0whkrp9rRRiVZpIZWBgaWzLpanW+0Y+XWP5lfM755bJ+Unyg2f1VvjKY7p3qTH7GTY69L7L+F /atbiKmq6opd4bzXuWDvLsna+4cblI6+dpqbGU+LKy44wTRMzSqzaAqadexT/i+jgbH+a3Z+8+z/ AOTpiMJu3DZ3YXza+OvePZ/a2Sn2DTbVye7crsjo3a2/dp5nCYd6/IvgFauy1XPUY6KuqlCusJnk WMO2uvUwSfLqtffP8wX5pU/RHyR+TkXyuhwWL6y+Q3zC68p+pesfjZ8bewB1Z198dd/Zrbu39279 HaG/9sZ/JUdTR4yJ6pMUs9bLI7CCJQ0be7oAePWzTAp6dHe+QXzs+ZuyPkT8VMd8durdvfIvrbdX wiz3ym716Vo6ODaPdO9MBRbv2rt6pz3Q1TWVc1L/AHgx0edNXDtTIVTQ5CMS0kVWtX4JTTrQp59G L/lt/OWL515H5h722xuem3P1D158h8NsDpx22lXbL3Hg9tHpDam6NzbW3vh8vHDXx5nG7jyGYo6+ GugjmgkjNOVKxqze68QRx6s/9+611737r3Wsx/OCy8WT+ZfTmFhkDttroatrquO+oU8u4d318cdx +CyUyH6Xtb/D2JeXl7mb5n/B/s9dQvuPWLw+3O637Cgn3HSD6iK3i/yyEdCx/K9zGOwW6MjlMvkq LE4igqN0z12RyVXDQ0FJTrtqndpKmrqmVEW4BJY/Ue3d/FSAoqaD/Cekv3xbK4v9qitbKJpppFtw iIpZ2PjuAFVQSTk4A6OV3t/MOwmJWs270fTQ7iyq64Jd8ZWCYbconsULYXGSaJK9x9Ulm8cF+QJl 9kkNgxGqfHyHHrG/kH7uF9e6Ny58c2sWCLWMgzN8pXFViHqq6pPI6D1U7uzd2598Zys3RvHPZLcW dryHq8llahp5Sim6QRpwkMKfSOGFUjQcKo9maoIowIxQdZd7Ps21bDYptWy26W1vH8Mca0Ff4jxZ mPmzEsfM9Gh+O/w5393fLR5/Lx1eyuudYkk3HW02nJ5+EPZ4tqY6oA8gbkfezDwL9V8zAp7YnvUg FB3N6f5/83+DqK/cn3o5e5FR9usyt/ufDwVb9OI+tw44U/30v6h4HQDXq8DrTq/ZHUm2abaWxMJT 4fFU+mSZx+7X5Sr0aZsll6+T9yoqJP7TubAWVAqAKCh5HkNXNesEeZ+a995y3V943+czTNgDgka1 wkaDCIPIDjxJJJPSxzv/ABZsp/1AVP8A1qPtpvhPRNZ/7lx/6Zf8PWsdv/8A7Lz+Ov8A4sd1R/73 tB71aVKuxyaH/B10/wCVv/Ef+Zf+lPuH/aJL1tDe7dcuOv/U3OOqf+yyvl7/AOI/+K//ALg7z9+6 90cD37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690T/AOAX/ZGvx6/8R/R/+51R7917pP8A zQ/mCfHT4HVfxro+/s/WYeX5R/IPaHx16+GPipKk0O4t3RSn+9+5FqpoTT7fxkopIcvkV1/bGrpy yFXJHuvdHVra6ix1O9ZkauloKSNokkq6yoipaeN55lp4EeecqoLyOqICeWIA5IHv3Xugh+SHduB+ NHx476+R268TmM9tb4/9L9o927lwe3vsjn81gOqdj12+8zicGMlLBTmsqaegkhpvuJ44/Iy63Rbs Pde6Lbsj+ZD8b93/ACm6y+HVfmK/ZfeXc/xE62+ZPVe3t1JQ0lLvvr3f2a3Bh8jtjb+Qp5pI5twY JcBJXZLG3DPRzfc0hqIqWuam917oRN5fL/ZGyvlTS/E2v21uqr3nVfErtH5fJuSjGI/uwuyOqux9 v9a5jbLNNUrV/wAVqavcVLPTAU/2/iil1zI+hW917oqPwn/ma9kfNefpbcu3/wCXV8terehe8drS 712x8jexNwfG+Xrmi2tVbOqt2bZy+Uw20t7ZHcYTLvBT46kSPCs6VFVCZ1ihEskfuvdI6T+bVu7t rcnYUXwM+APyV+dPVnU28tydf72+QWxt4dB9OdOZ3d+zan7Dd+H6TzfeW58LW75GMq0qaGprcHQN RS1MRSiqquN0lPuvdCthf5sHx43H8Lfkr8ycXtbtfFyfELbe98l8jPjXvra9FsT5K9Rbt2Fgm3Fl eud9bDzdYKajyVRSBJ8dVJkJcfWROJKaslRZCnuvdIHrX+bXDXdq9EdYfJL4QfL34cUfye3NR7D6 G7V7hx/TG6Ood59j5TBT7j2/1xld2dP7v3DNhczmqWCRsDT5KijStaOdBLG8Vm917o7/AFF8uenO 6e/vlX8Z9nZqV+2/h3ubq/b/AG3t2rWnjaOk7h6qx3a2xty4Z4JJDNQVEFbVY13cJJHW0FXE8YVY nl917rhlvl30/iPmRsn4My5Sao7z3r8euwPktHjKf7Z6PCde7G37gevKT+MlpBMlTmqzMV0mKWOJ 0aLEZEyvEywLN7r3SA+XX8wX46/Cff8A8SOuO8c/WYncXzL74oOguq4qKKjmjpM/X44sN0bj+7mh MGFp8nU4PDVlZEJDBUZajeRBB5pYvde6ifPf5pbh+DHU1d3VB8We8Pkj1/tHafY2/wDtnL9NZLqi h/0RbD6y20N157dm7KfszcOClqad6JKyWGLEJVzn7aUGIFog/uvdAv0r/M+bsvdPxG2h2P8AEL5D /HXM/NPfnY20ul4u0cl03lFr8D158ca35Jy9hZB+utzZoQ4vIYygnxtHGxFWKwDzU8cB8vv3Xuk7 vj+ahuDcnb3anTHwc+EHyF+euX6E3NUbJ7t7G663R0r0/wBEbM39QQeTNdaYTt3vPcOFotxblxLl Is1isJDOKF2WOaYT6oV917oSOof5onS/a/TPyl7Brevu4upu2/hZsndG8vkn8U+4Ns4zaHffXsO3 dkVm/ca0eNjrqnEZTGbgoKGabbm4MXlZ8dWoQfPE6yxx+690Znob5adH/J7407Y+WfQ+7qfsTpze Ox6/fOCy2LUQZBqfFUks2Y29lcbVFZKHLUFRBPQV9BVaJKepjeKQAqT7917py+KPyI2x8t/jV0Z8 ndlYTPba2l3z1ltLtLbu390DHruLD4jeGJjy9Dj80MTNUUwqYkkCy+CeRNQOlyOffuvdVry/zmcJ vbrf4rZv40fEPv8A+SPcny5233zv/r7oXbma6o2LmtvdafHDfD9f9mb23zv/AH9m6Pb1HGMg1HDj KKCtnqauSpiiWNJWRH917pfdi/zXKDDdY/EDMdR/EH5R9v8AyB+bdP2JW9R/E3Kbc210d23tvGdL UkVV3Zl+367ubIYrEbbo9uvUUlJ91PWSxZCesoP4e1RS1aVQ917oR8L/ADLNgV/WHw27E3D0n391 rlfmH8po/iFjOse0NmUmyOw+qu1qbBbyzGem33i8tVCCpxFHLsnJUseTwdRWxVPnpZacujSeL3Xu jE7q+Um0dqfLfp74f1u3tyVO9+5umO4u7MFuelGM/uri8B0xuTbG2c9ics0tQtX95VS7po5KTw0z x6IpvI6NoDe691XZ8X/5uvbHy12t032f1X/Kw+bc3SXddRt6p233Jkd0fFGn2nQ7SzmaXD1O98pi /wDSCcwKGhXzVNTFFjWqTHE4igkcqre691dh7917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917ogHY3/AG9N +G//AIoB/Ms/+CK+J3v3Xukh8uPmL3xsz5EdRfC34Z9N9e9wfJjsvrrdXeu7sz3XvzcfW/SPRvQ2 0NwUuzm3zvfM7Rw+by+Sr81nauPDYLC4miMsjpU1VRLDT0zF/de6Wnwq+aeQ+Q+0O9MN3rsHFfHn 5C/EXsnJ9TfKLrx95025tkbZy9FtCh7E292ZsrfdfT42Sr2duTbeSos9iK/JUFHNFE09PUR6qVpp fde6L315/Naxu5vhR8n/AOYhuXpzPYv4v9f723VjfilLhqyuq+zflVsHB5Kh642dvXG7Sy1FRpiE 3vvWaXG7SSeoYzUUtLV1KwRuHl917rD1T85fmlsD5C/Hbpb+YP8AGLpTpLBfMmPd2L6H350R3fub tig2H2/tfatV2PF8c+9E3ZtrAQrnq7btDkqjH5zBzzY6qrKCeigRmmhk9+690YTq75T94Z75892/ EDtPprYGy9m7T6TwHffTnY+0+0MvvPcO/Ni5zsau61i/vxtOtwOMp8HXGqxtVUClpchXqsRjBmLF re690Tbsj+ZF82s1W/KjuD4mfDXrHuP4j/CzsLsrrHsnL777t3BsHv3v/dHRTS0nyAf407Kxe28r hjTbWr6WvxVM+4MrC2ZrKOaCiVGIK+691cB032xsjvjqTrHu/rPK/wAc677f6/2h2bsXMGI075La W+cBT7l2/VzUzEtFI9LUxGSFvVG10b1KffuvdCT7917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917qvT4JVRoqL5wVi01VWmk+e3yVqVo6KN Ja2sMEWHmFLSRSMitLJbRGrOoLEAkfX37r3Sp+CvzaoPm7tPu/Of6Eu1vj5ur4/fIbdHxt7F607i n2FVbuxe+NqbC212HW1AqOt8xnMW9M9HuihjQxZB28kcoI0hWb3Xusny++ceyvipieqcXhtg75+R Xd3yF39lOr/j18f+mJNrz737U3nt7GVOb3iy5zdmQxuEw2G27RUlTW7kzmXyMNNj4kPkLTNHC/uv dFhwv84fqPbHWnyt3D8pOkO8/it3D8NKPrev7c+Oe78ZtPsHsHdVF3dkpNvdE1nQed6yyeRwW9od 4ZqKTbmJfG5FPFlUelrxRponk917pYdI/wAzUbh7Yqej/lt8XO5PgV2Lkum92/IPro947j6p3VsP szqfruGkquzqvBdh9V5rLUFLntqwV9JWbj21kfBWUlLKtUomgWV4/de6C3qj+cZh9+7j6G3Hvf4c fJ3pP4n/AC07CwPWHxa+XnYcXW39xuyNz74jX/RPV7z67wWcqt17NxW+ZilPs3I57FItdJPRrMlJ 90NHuvdWu9q9pbC6S653p212juOj2lsDr/b9fubdW4K1KidKHF4+LW601FRJLU1dVO+inoqGkhkq KqoeKnp4pZ5Y42917quOt/mFd+0tVLl3+FVDhdsxY2n3P/o1358u+iNgfMaXZNbPHTYrOP8AHHP6 cJQ1dc81OKPFZnsKhn1Sx09UaWtJpR7r3VgHRPeHXnyO6p2l3J1bk6zJbO3fT14p48tiq/b+48Dm sFlqjbe7dm7w21lkirMVnMHlqOtw+bxNZElRRV1NUU0yLJEwHuvdF9+cv8wX43fy8tn9Sb5+Se6m 2zgO5e9evOhdsTwfayS0mc33WulZu3MxVMsRhwWAooajKZ2vGr7enjsiSVEsEMvuvdL35hfKvaHw 36SyXcm69n9hdk1cm5tm9f7D6t6nwEe5eyO0OzOxdwwbU2NsTZ+Lqpqam+5ra2oTXUVdVDBBCks0 j2TS3uvdAb8SPn1kfkD3F2V8ZO7/AIz9qfDr5R9Z9d7M7nqunO0d1dV9gQ7v6W39nMhtXA9k7D39 07mc1ia+lgy2Lq8Xlad5IZqSp8cRWRmk8XuvdWKe/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuif8AVP8A2WV8 vf8AxH/xX/8AcHefv3Xujge/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de6KBsr/ALL6+S3/AIqB8Hv/AH8/yE9+690b/wB+690Q/wDmJfMjKfCvoPF702P17/pg707d7X64 +N/xo6jfLR4Ci7G7+7iyr4jY2FzedkuKPF0kUNdmcvUixShoqghozaRPde6J9P0B/PPwu0/9KVD/ ADCvivvXuKnpRuWp+K+W+HVNtv40ZLJ+I1NR1di+7MbuB9+01FqtS0u46mOWcn96ahCt4o/de6Vn yN+XHzH3T3D8dPgj8W9odTdTfL7tnoGH5L/JnsLtCXJdydZfDTpuPLQbGq6jC4Hb0u3zvnceU3O2 Rw21oWq6CimOMqqurQUgcxe690C/cfbv8x7+V3T7b+Q/yh+SPXXzw+Ei7y2jtT5IZeH48bd+O3en xp25vTNxbUx3d+2pdgZeqwe4tsYmvqqNtzY2soEr4qeQ1NLMYoptHuvdP0H822s6v/my9/fBP5C7 Uj210Ecx8ddl/Hz5G01DUQ7YwfevcXT9HvSg6A7WycXkhpardMkWUrdpZKrNOks9NU44tM7weH3X uhO7d/mLV3xu+VP8xCj7krKWT41fDT4D9CfKikxOEw1Gu9Mhujee6OxcdunDUWVqZY1qp8ou2sPj 8TSzvHElTJ6pFWRmX3Xug16y65/nc/I/YeJ7+3Z8y+iPhBnd+Y+k3psn4g4D4kYTv3D9dbby1KmY 2zsvu3t7ee4cVmMlnhBJHSbifb1PQU9PUCY0ZkXQqe690h/lf8qP5kHV3U/8vfYfZfY3xc+E/wAk PkX8r999D91dvY7bid+dCYrZ2zup97b62/2JtPbvYWX2xPR0+5Dt3G1EGNyWcSqoVrBBPPJMjxe/ de6T/wAiPkV81fiz8CvlR3VQfzLvi58vO1sPvz4YbL6y3b118YtibJ270RF3F8psD03vvM772tt/ sTdUWfXKYrPvJjoquqxopnx0rRyTGZ2p/de6c8L8h/n71l8u+rfghvL50/FL5L7k+YHR3yK3P1h3 d1t8YqfZm/finvrpnb9BlsJvPsfpbD9h5zF7j2hlmq56OlWpyuMnmyMJgjqfGki+/de6Xv8ALM3n /Mh7j70+VEvyL+afUnZfVXxD+WnZ/wATM51ztP4cYrrDOdsVm2ul9pdhYTsim7Apd8ZN9vrHV7vi STCjGZDyLQm9cBVWp/de6vT9+690U75mbc+S+f6Xrqr4r/IPaHxv7B2nkKreWY3hvXoik+QeK3Hs 3A7UykmR2NT7SrNx7YWhqKuufHVSZgVsxhSlkh+1kFSZIvde6pl6G+fXzl6s/lq9I/MzvTsvrj5h d+fzBY/i3sL4SfG/afSFF8dsPtTvvvuhydcNpb47Fx+4s6c7h4KInOZTJfw3FtS0GCrSiBqzXTe6 90ZTc3TP883rvZlZ3Tt35xfGDv8A7VwWHn3XlvhvWfEKl626N3rWQU33+U6s627xpN0zbyxtQVV6 LA57PGpjlqTHNkaSCCR0g917rl1v/M9z3cnZ38qbtjZ1BDt74ofzDtm/Ivqjd21N14uFd6dR/Lnr HDf3v23svI7lgCa54ptqdh7RrKUxrFLWUcUqKHZVX3XusfxE/m3435A/P759fGPduHododOdC0OS z/xs7VqaKupMZ23tr4/5JervmXlY85P/AJLWxbU3tLT0kLUWq9K7Sksq6vfuvdExm/mD/Ovs3oT+ VLuul+RfS/xCz38yfuD5Wbqru0uzuldtb+2f1P8AHrbvXW7e7/jVgJds53cO2YKqsyO3MTt+kqMh UZqnkkqsiXtKUSCX3XuhY79+Q3zh+Pnxy23WYH+Z18WPkl2X3P8AN/4W/GfA9w7I+K+w9v7R+Pm1 O/uy2683hnt37DwnY+4KfOyeOqhyVMlVl8VpWiliWUCZpofde6HX4v8Ayg+V/X38wLAfBL5E/JT4 5fNnE9nfGrsL5C7d7a6Q6nbo7fvUGT613vgNo1m0e0+vMTujeGKkw2dizqzYHLJk4Ko1NLVQSU7R GKQe691d17917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6g5D/i25 D/qDrP8ArU3v3Si2/wByo/8ATL/hHWSjsKWI3403v+Pr791Sf+2b7T0RT5gfPTrP4s4yswSNS727 ZmoUqMfseirxT0uEjrfTQZnfmUhWU4+lkYg09KkclbWGy0sDKWljVW1nLdt24UcWPAdTn7OewPNf uzdLeIDY7QjES3brhtPxpbqSBK4/ExIii4yPWiMR7pf4ad2fMreFB8hfnHlc9Q7UnUT7Q6eYVW3M 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 od4/+MwOtf8A4K3dnv3Xuq1/jH87vi5/L2+Of8wj47fJjs3ZeyPkD0R8svnTvDFdAb8yFNguzPkB tbv7uLcHdPQGR6V64qaiLK7so95Y3cONoqNcEs5SpaaCZ4dHlPuvdW//AMsbprenx5/l1/CHpHsf HyYjsHrL4udKbT3zhJk8c+B3fjtg0K7j2/UC7XkoKwzUcjg2ZoywABsPde6PR7917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917qv/4Cf9zq /wDjQD5Hf/Ib37r3QAfyoP8AmYv84X/xr/3X/wDAs9N+/de6cm3H/K1/lmfEet706zw3WJ6Y6n7O 7UfrtussynfO/cv8h+5N4T4Lf3VfSuazGSzGUk3XuTPGTDVWCoclDHTiN4KpaPH0Mxp/de6qD+Q3 WnYmL6ob+Zt8u937B2/272J/MZ/lSdsd4dXbI3ljt27M+G/wX+PPy0xcmwOrdx5vCvMmayeGl3HX bh37uBVjoJshNL9nElJj4pZvde6Mp/PXpZO899fGrpDpRF3p3gvxK/m29tQU+0sxLWZbb3VW6/5b W+ehdu52tpMKsrrRZ3fO8dnUOKq2YeapitTCZo3MfuvdKD5fdt9U9x/yWPhHtvrPcGB7A3B8od2/ yvevfjpi9u5qKDIbj7FxPe/Xm8sgmNalDTUk+2cfgsxkc5FKkZokoKmnrjTWl0e691aT/MWppoPj hS73qNvVm7No9Md8fGLv7s3bePoa/L19Z1X0X8hNt9pdhZuhwWMjmnyVRt7G4ufc9NjYYZJKuXGp Two00kYPuvdavMPV8NJ0V0NvLsb4B9o94dxY7+aRS/ND5M/zF+t8P1b2TsbtjqPaHcWb7i2j2r1d 3hQbkFVV7Q3JtKnwW0KLEz/ZYTBY/wC5/i0mPeKCorPde62gv5ctKuU+NcXb4qcHIvyc7U7k+UNN jtr5Zc7trb2G7x7Gr957W29iM5Ru9DkJKbEzUAymWxLtjslkjW5KgkmpauKeT3XuqEPlb158mf5r fzp+Se7Omfjf0F8m/h/8R+te9P5cuzI+7u/t09KYwfILtramNg+XHb3W0+3tm7qeryuEpamn2DBX 6YYaWooquSneaYsYPde6Pp/Lm/mO4rq34e9Z9P8A8wvd0fXPyk+OHyT29/LM7xy+S/iueweS7sot vy1XSfZOf3ZFABR4Hf8AtumxdfQ7qzMdJQ1WSqjTiUSTRB/de6QfxU6ZyfxB/nc9n9azd/8AYHzJ y3yj+EFZ2pvDf3fWYx+7O/8A4yYXpXuHH4Pr/rb+PbSixuGo9j7ofdWVqsZjRt2hnevxstR56q0p 9+691sT+/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuif8AVP8A2WV8vf8AxH/xX/8AcHefv3XuhT+R3SOP+SXR 3ZXReV7B7U6qx/Zm25ttVXYvSO7Idi9sbSinqI6g5bYu7qikrkoK5fGEWdqOUBWYaebj3XuqrIv5 GnX0XxcrviuP5iH81x8PXd+4r5AN3I/y2wh7/psliuu6zrpOs6TsL+6QiTZ00Va2VqMN/Di75KKG p+5AQxN7r3VoPxd+P2N+LHQnXPQOI7M7i7jxvXGNyWMpey+/t50/YXb+6kyefq9wPV723lS0WOjr p4WrGpYJFootNPFDHYlNTe690P8A7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917ooGyv+y+v kt/4qB8Hv/fz/IT37r3Rv/fuvdVi/wA1b47d2d59HdRdgfGjGY3dPyJ+Gnyh6h+ZvT3XGbzse18J 2/nepoMrt7dPUOS3JOVioTuLbGfz2No6mdlhSskp/PJDDrmj917oFl/nP7bzOz2odl/Ab+Zdnvkr JSSUdP8AGHM/DPuHZeYot36YoIMXuvu3O40dfYzD/czL5tyNuOWkSmBqVWQNFHL7r3SI77Hyx+OH y56M/mhn4u7w7Z2p2H8L9n/FP5vfGzoOvpu4O7vj9V7f37ku7NndkdSUNFFjj2DQ4fM7hzm39yUO IhjrZac02Qx1LViOSJfde6CT5j/IfeP83zqWv/l//EP45fKXb/X/AH1mtmYL5S/Kn5C9Adj/ABs6 u6Q6Bxu8KPcPY9Bs5e6aDE5TdW98xRUS4rDYXDYueGIVv3lbV0kUJdfde6Hza/w3298i/mV/Ou63 +TfSef3D8bfkxgfghgMRXbs2xncRtHsOHZ3Q9dS5vJ9cbwnhihqMjtrMJSSrkMRUtPi8jHTyB4al IyPde6rl2v8Aypvmt21vD+bB8RPlfvyq7I2p258Avjt8dfin80NzYWSY9oYXrbsXsHenVeR7rkxq yRSbx2pX5HE47df28UVTXU9LBl0RpcgJ3917qwzq/wDnA7i2DsLF9f8AzX+D/wA9+vfl9szH0m19 +bF6h+IXbvf3Xnbe88XRCmqt4/H/ALa6fxuQ2xlMHnKhPLQCsyNE9LLK1JONNO1S/uvdFs/mL5nf 3yN64/led6fKj+Wp3Ru3rrbHza7B3z3T8RMH0rL84N9YLpebofsPZ3WG4u4Oq+vsPlcZFWVs9Zt+ vyGJf7yDFVk6UxrZqmDV7917oN/k51z8Xvkb/La+YfU/wb/lR9yfGXKbm7b/AJdsXZ3Xlf8Ayz9y fEzLd8bUxvzc2tn8icftig21jajeNDtbB0W46/NukNRHhqKqknqDBBVu7e691fp8dvgp8MfiNks9 m/jD8Wehuhc9uihTFbk3B1Z1ftHZ24s5iIqiOrjw2Tz+HpY6yaiWaKOdaN5zCJVEgTX6vfuvdFd/ lm9e7/2Fvz+anWb62PvDZdJ2H/NP7e7C2BV7s21mtuU2+dg5P43dUYLG742dNmIIVyeHqK7HZCjg ydEZKaSelqIlkMkEir7r3Rh/kN8RMt39vPGbxofl58yOgYsbtei2y2zvjz2dszZey8lJR5atyh3L k8XuLbGankykwrBSzVCVSI0FPTIIlZGd/de6Mf2dSVVf1t2FQ0NNPW1tbsfdlJR0dJC9TVVdVU4G oipqamp4QzySSOwREQEsSAASffuvda9W1/iN8qs5/Je/lM1fVHW9RS/Ln4AH4m/KXC/HLt6nyHWG T7C3R1J1dltgdgdC7nn3NBFPtvMZLBblzVLj58jTolNk0pRVeGEyyR+690ZvP/zlZ89s+fa/R38v j+YrvL5d5ahkw+2/jlv/AOJ/ZHVWE25v6pp3gpE7X+QG74aXYGK21R1fhbI7ipNy1UDUrpNRipMi L7917osXev8ALo+T/SH8jXqrp/pzIr2J/MA+Hu/tq/NzrfI7OxsuaoM18rl7/wAl3/2tgdo4eZIH yOOqxuvd+38dTzxRfdUs0azxIskkXv3Xugo/mAfygO6Nm/yxPhN1R8MMrkpflf8AF/GyfH7dW/MB RV+azPYPX/zxwj9D/ObdVZ5A9WUrMrueTsOqyE02rHJjpa5WWWnSVPde6MN/NS6J6y2DvT+T7jNy fDDs/wCX3w++MO++6drdk9N9c/FrcHzApsTsOn+HOa6r6fk3V1RhcRlqeop6XPPg3pp62lVIp4Fq IiJYFt7r3RdPkP0j8Tvlr8aetuoPin/Km7e+OnW+b/mY/wAuP/Zmus81/Ln3b8QI+y+mh3X4ewN0 57B4jb+Iny+3sDgJMqM9m3/YxNNUlpp6dZtR917o2X8pv4g0f8sbvnvj4P0fxfx8HX2ao6zt/wCO Xzp2L01TwVHZ3TtVuBox8cvlN23t3GIi742TV1DrhpMvXKubxUi1kESVkNYJvde6v79+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3XvfuvdQsgCcfXKoJLUlUFA5JZoW4A9+6 etzS4jJ/iX/COqfPl1/MQr8ZXx9EfFaKo3j2ZnMg+0pt5bdoIdxyU+4NRp6nbHV2MIeDK5eFgwrM nKGxuN0sZGqJo5IoTO0sA6G4uTojX18/+L/1evWYPs793OC/tW9wvdlxt+y26+P4MzGIvHgrJcth ooWBHhwrSeeop4aMrOrPhl/LqpOt8nSd3fI2Wn393fW1sm4sbha6vl3Lt/rzM1h8tRmKrI5AyPnN zsSfuc3Ul1he6UQUKJ5KXd+Zl8C3GiIeXmfmf83Doq96/vITc1Wjch+2yHbOXYlERKKIpbtFwFKq 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 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3RAOxv8At6b8N/8AxQD+ZZ/8EV8TvfuvdHb3 VtDae+sLU7a3vtfbu8du1rRPWYDdOExu4sLVtTyiaB6nFZeKaCQo4DoXjOkgEWPv3Xupq4DBrhDt lMLiU22ca+GO31x9GuEOHkpzSSYo4lU8H2zRExGDx6ChKlbce/de6bNobI2X19hk25sHaG19j7ej qJ6uPA7QwGJ21ho6qqcPVVKYvCwwQCSQgGRwl2P1J9+691g2p15sDYkubn2RsfZ+zZ9zZA5bck21 ds4Xb0u4MqzO7ZLNyYiCE1dQTJITNOXe7Mb+o3917pTChohWtkhSUoyDUy0LV4p4vvWokmNQtG1V bWYhIzOI9WkMSbXJ9+690mMt17sDPbnwW985sbZ+Z3nteN4dtbuyu2cLkdz7dikL+WLBZ+sgerpF YySalp5UB1Nf9Rv7r3Sy9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Vf8A8BP+51f/ABoB8jv/AJDe/de6OHsjq7rrrWr35XbA 2VtzZ9Z2jvzI9o9j1W3sVS4ybe3Y2XwuP25k967kkplU1eSnoMVjaSWqlu7RU0KE2jUD3Xuilbg/ le/y7t2dd7b6j3R8Mvj1uLrDZ+8t99hbW2Fmut8Bk9qYDe3ZuSXK763NisLWRPBDV5GVEEkiINES JBF44ESMe690/dQ/y4vgR0BQ9jYvpb4ffHfrPFdv7Pquvu1MXtLqzaeLxnYmxa5JI67Z+88dFTeH I42ZZZVmo6pHidXYMpBI9+690+/GX4G/DX4ZT7rq/iz8bOpejsjvlaGHd2Y2HtShxmd3BRYq/wDC cRkc9IJKx6CkuxpMf5xTQEsYokLEn3Xuk/1h/Li+B3S3eGa+SfU/xK6K2B3pna7P5Sr7L211/hMf uGkyu64ft91ZXb7Rx+HFVeUjLx5KqxkVPLVK8izvIssgb3Xujr+/de6IlmP5Y38vrP7sye8sv8Qu jKvJ5zcn98twYk7Jx0Gxty7yNZ/Epd4bn60pgm3MllpakCqnyVdipamWYLNJK0iqw917o9EMMVPF FBBFHBBBGkMMMKLHDFDGoSKKKJAAqqAAqgWA4Hv3Xug+6s6k6x6O2XQdc9PbB2n1nsPGZDP5ag2l srCUO38DT5XdWeqd07myceOxyJH9xkMlWVddWTEF5p5pJXLOxJ917oN9/fED4t9qDutex/j91Nvb /Zj8Ds/bXfJ3LsjBZb/S1huvIZIOv6bfRrIW/iD4JZXOGqJrzULaXpZInRGX3XumH4u/Br4f/CnE 7gw/xR+OfVHRNLu2op6ndVV1/tSgxWa3O9FrOOi3DuRxJkK2Gl8kppKepqnigMkhhRDI+r3XujWe /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuif8AVP8A2WV8vf8AxH/xX/8AcHefv3Xujge/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de6KBsr/ALL6+S3/AIqB8Hv/AH8/yE9+690b/wB+ 690nd07s2xsfA5HdW8twYfa22cPHDNlc/n8hS4rEY6KepSjikrsjWskUStLJHGGdwCzAfX37r3Sh t/j/ALH/AFv9b37r3QQ1/f3SOM2/15uyu7X2DT7Y7a31husesdwHc+KbDb97C3FV1VBgtmbVyMch ircjVzUVXDBSwOzu8MigXRvfuvdKLN9oddbb3/sXqrP7123iOyez8XvTNdd7HyGVpabc29MR1zFQ T78yW28VKwlqocQmVxrV7xKRCKmEvbyLf3XuktjPkN0ZmunNxfIbE9sbDyPRu0cX2Pm90ds0e48f PsPAYjp/KZLDdpZLKbjjc00MGAq8PlqbKyO4FPJSTrJYxtb3Xuir7D/m1fyyu0txDaHXPzu+L29t 0HA7v3QMDtvt7aOVyh27sDaNdv8A3vmhR0tQz/bYrCYzIZWultphpqeaVyEjYj3Xujj13b3V+M6k rO+8hv7atJ0tj+uajt6u7RqMxRx7Jper6PbR3nUb+n3AzfbrikxKtkWrC/jFODJfTz7917ooXWv8 1z+Wp3JvCi6/6p+cvxk7C3tkcZujN0O1dpdt7TzWdq8Rsratbvjd2Sgx9FUNI0ONw+Or8lWSAWip 6eWRrKhI917qL15/Nq/lk9tb52l1l1l87vi9vvsLfmex219mbN2t29tHL7i3PuLL1K0mLwmFxdJU tLUVNRKyxxRRqWZiAB7917o8uzN7bO7G23jd5bB3Tt/em08v92MXuPbGXoc5hK58dXy4rIxU2Sxz yRNJTVUE9LUx6tUU8ckUgWSNlHuvdNewe0Ouu1KXc1f1vvXbe96PZe/d5dXbtqts5Wly0O3OxevM 1JtzfOysvJSMwgyWJr4pKSvpHs8MqsjgEe/de6cNqb72Tvv+8n9yt27b3Z/c3dmY2Hu0bczWOzI2 zvbb3j/j20c9/D5JPtMlReaL7qim0zRa11oNQv7r3WTbG9tnb1/vD/dDdO39zttLdGW2TuqPA5eh ysu2t4YHx/xja2fio3dqPIUyzQyTUlQElVJYpCuiRGb3Xui1dyfP74S/Hmp3XR95fKjo7qeq2JvL bfXu84N+dhbe27NtjfO8Nip2btbaeaTIzIaevyG3pI8zSU8gDyUbCZQUN/fuvdKj44/Mn4p/L+i3 Xkfi58hOpu/aDY1ViaHeVZ1VvXC7yp9s1meinnwtNmZcPLIKd6pKWpaBXsWEbkfpPv3XujK2/wAT /sffuvdet/vfv3Xuu/fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3QWd2bfze7em+2tq7adYtx7n6y37t/b8r1hx0cebzO1avG4qRshH6oAJ5Iy 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 b3Xurl/fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3XvfuvdE73t1lvnK/P/AOM3cmPwMlR1rsP4efOXrLdu5xXYyOLEb57a7p+PG6uvMC+NlnWt lbJUGytz1Cz09M8MQoWWokieamWb3XuiAfNqXf8A8zP5iXUv8r+j7Z7D6S+PmD+KOY+bPymyHUG5 M1sLtDvHb1b27/oU6s6Jw3ZeAaGuwODlyFJl8pumXGTpWVlPHTUaS0yStI3uvdCftP8Ak1fGvons jq/tj4Y7478+H+7dkb027ld94/r7uvs7sLr/AL66/oslFNubrHuHrfuvMbixFfDkKQTw02Zhp4sl QzyJVxVEkkESD3XuqLaeg+Gu/wD5ffzPZ/lz8Tv5q3yj3xtj+YN2LtXZO8fiBiP5jO7ep9n9Y0fS +wcnh+up5/ivufFbbo8pSZOszGRnoZ6X75KeupZJXNPLSqvuvdGU7F+YXyS+H/8AMW3r2V0/s/s/ fP8ALy6R/l6fBDcvyZ+Mm6U3nWd3dRdRbxyfYWIofkFtPbO+qmozDbo2LS4elj31hqx5cnk6A1H3 jSVmNhqab3XujcZbF9NfPb+Z/wBr9bZreOe7U+Jvd/8AJz+HvaeDg627f7K2DgN0U1X81+w94bZ3 vtXd/U2YwuUo5atcbizNV46vglqaaIUdSZKVpIG917qoPHfHDrjpj+Rx/NO+VvXeV7nxff2KzHz7 +PuJ7Ay3yU+Rm75cP1T1r81qrbGyMFh9t7z3XkMPSVlBj9t4elTOU+PTKukMglrZDVVZn917qxP4 lbN/l8bd7WyWY+O/wY/m5dD9r0fVfcUm3+zPlTtP+ZvhOl8HCetcmMrDnsl8kd1ZPaUdVU03kp8Y a6jaU1TxClZKjxsPde6pK+C3Y/QPanx0+FcX8thP5h+5/wCbrtvcHxEHyA33ht0fM/c/x6wlNn8/ ic58g6n5MSd0Zyq6xp9m5fakebqKOKjo4/u6v+HnHIYiT7917o+nf1Z8Id2/zU/5se2/mFsz+Yb2 dvrau+vibRdER/Ddv5gWd/0fYzPfB7ZGSnhxGN+KuQh2zRZeqzjSVtAm4aVvNUapGV4TKD7r3Rhu vq353/IDp3+VB/LM+S3bfenRPYvffQfyC79+a/YtPlpMD8oNxfHzoreuK271N0XXdl0o+6xe7NyY 3c+3Yux8xCseTU0tZG0izV9Qp917owXy/wD5YHWHwY+P/anzS/ls7j7G+LvyJ+Lmwd1d8TUNZ3n3 R2F078itqdVYmTfW9eofkPsbtXcOYpMvRZ3FUWQoqfLiSmr6KtqI65a5WhuPde6KD8rfk7vvfmP/ AJvHe3X+798bDiz38hX4dfIfrWjwu7c3j6rrnc2/Ye1d40uc21U0MkBospCPs1bIUscMzGniJI0I F917ocNxfPPuzPfy1v5kvxE+Y80fXP8AMM6K/lmfJ/tbCby2vO23dv8Ayk6Rl6Fz8Gwflx0hVY94 2ppjVLBS7qxdK6y4XNKwCwRTQwwe690GXyw+D/x97K7I/kxdgbtp+5pt0/Mrsfq/rj5IVWB+U/yl 2bjOw9n7S/l85/O4PGRbb2bvPH4zCyJW7YwlXUVu36OhqqmWB5KqaZqqrM/uvdbQ3Xuw9s9WbA2P 1hsulyFFs3rnZ+2dh7SostuDcO7MrR7Y2hhYNv4Glye6d3VVdlsnUR0tPEk2QydbUVdQ4M1TPLM7 yN7r3Sx9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3ROvh/wBZb56z/wBmj/vxgZcD/pA+Yndv Z20PJXYyu/jOxt1/wz+7+eT+GTzeFaj7eW0FR45k0/uRrcX917o4vv3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6LZ19sTdeE+TX yQ39k8S1NtLfezfj/jdqZc1mPmTLVuzKbdEO5qdaSCV6iE0rV9ICaiKMP5AYy4DEe690ZP37r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Rbdr7E3Xj/AJfd5dm1mJaHY+7v jd8VNibdzpq8e6ZHdfXXZ/cu4N54kUEcrVURoqPdOBmM00CRS/dBYZJHinWL3XujJe/de6px/nwY +q3z/Lp3h8fMVmarAbi+XffPxD+JO38vRRrNVY+fvn5S7R2bnamlheemDyx4aTJyQo8oRpAokvFr Hv3XuiU4P+Yb33Vfy66n4g5bcS0n82mm75j/AJTM0itVy5OPvPI45qOi+ZaU0R+9fb0XWYk7ebLi n+2eeCSkFgR7917op3RVHVbK/lz/AMpb4/ZTJ5DMbg+I38/3FfE7O5HKSyTV9TJ0h8o+0ts4E1ck iqDIuG/hiyCNVQMCESNAIk917q5b5V/9vkv5Qv8A4gD+af8A+6Lpn37r3Ub+RbS0tf8AyxOuKGup qetoK3vf+YHSVlHVwx1NLV0tT/MD7UhqKapp5gySRyIxR0cEMCQQQffuvdEk2xs3aGP2T/wpxrKD au26Kswe+O5KTCVVLg8ZTVOHpqn+WDs41NNi54Ylanjk802tISobyPcHU1/de6ub+ANLS1/8vz4U UNdTU9bQVvw5+N9JWUdXDHU0tXS1PSeGiqKapp5gyyRyIxR0cEMCQQQffuvdVR9A7N2hj87/AMKJ 6yg2rtuirMH3vvKkwlVS4PGU1Th6Wp/lx7FNTTYueGJWp45PNNrSEqG8j3B1Nf3XumP+UdVfzBz8 TP5a8Vd8Hfg3SdA/7LF8SkTuyj+RW55+7n6vHT+BGP7Ffr1utY6Ybjnx3ir58V/eQxpVO8Ir3VfO 3uvdET/lh7/7m/lrfHTb3zWzGc3j2r/Lt+R/yR+YdF8vdoGCr3Jn/hT2Ntr5o7/6s2r8oeu8Xj4P I3Xldi8Ri6PsjHa5JcfNGuepRKj1lP7917o4/wAX/mzsn4d/y3P5qHy6x9Vjd/R4n+aB/Mxq+kcR tuVdzwdxdm9i/KTJYLozaW0kwEjyZSLcGayGMjSTGtKxpJJKqPVHGW9+690SX+Rn3xjviX8wMB8Z t17m+Sm4aT+Y11fL3p2nvf5F/HXu3o7Hf8Ol4n+I74+QGH2Pme28HgabIY7du2neSkkpleV5tv0y NFHLWAP7r3Ql9L0/ya+Lfys/mu/zHvj+N9d09Y7M/ma9ndR/NP4eYUPmsnvXoLa/Q/We8cR3r8ed vwxhm7D2XUbhzFTV42SoWLO4ZnoQ0NVS0jt7r3RlPjt2L0p8ot5/8KFu6etM1s3t3qnf2F+Oe+uu 930cNDncPX0Vb/Kt2oaXI0P3aM1NVwN5KephkSOopp0lp50jmjkjX3XurSv5RuAwWH/ldfy5avEY XFYuqzPwL+HFdl6nHY6joajK1r/Hjb0rVmSmpkVp5S0jsZJSzXZje5Pv3XurFvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691Cy X/Fur/8AqCqv+tDe/dP2v+5Mf+mX/COslH/wGh/4J/xPv3VJaeK2nhU9Sffum+ve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917riyKwswuDe4/Bv9b+/de6Kh2Z8OenOwqiqy1Fiqjr/c1U zzT57Y7wYxK2pK/53K4CWOTH1RJ5d2p1lb/jp7ukskZqhp8upW5V95OdeVkW28cXtsuBFcVeg9Ek qJE+QDFR/D0STenwa7m268ku1chtfsbHKzNEiTttHclvqNdDlGmoXY/7TXJc/RRx7WR3x4Sr+Y/z dT1sX3huUr8Km+QTWD+bAePFX7VCyAf82z9vRatydd9j7OaQbs663xt2ONiDVVm28jV45bX1Fcxi VqaQr9TcTW9qRdQu2Gp9op1K+1868n71QbXudtKTwXxVR/8AeJNL/wDGekImRx0jiNauhMqjSYxU xLKCOCDGSGH+sQD7vq1cCD9h6FABkGpRUHzGR+0dSSUkC+jWPqWEauBf8avbvWizL6jrmkSG4WGP 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 l/8AzG+/9zZjaFds35fdn/HXevWuMweQzVVubB4rqP4t7Z6R3JT75oshj6WlpqifLYWqqKFKCtrU ekaKSWSGZngT3Xukj88Phr2f3puXor5LfFfs3bvTfzR+KmT3dP1DunfeKyOd6i7F2J2PTUWP7U6I 71wWCK5Cp21n4cfRTR1mPb73F11NBXUQ8qur+690Tzuj4+/zb/5gmya34wfJ+n+IXw6+LO/EpsF8 ktxfHDtjtjvPvnuTrk1CSbo6s62l3htXaeJ2pjNy08cuMy+Vrnr6yGjqGSGmm1TI/uvdT/lP/K37 X7ZyX8yek6kzPT20dnfLL+Wd0z8IuicDm8zvDHLsndvVtRv6MVG9oMVg65aPbyUu58VDR1GOkr6o +GoD0aBIjN7r3Q5fzHP5Wmxf5h/w7x/RW49xydad6bC63ze3emO/NqSZCPMdfbh3T11J1zvrB1M9 E1LU5HaO6sVPU4TdOCmKxV1BLqMaVUFLLD7r3Sg7I+FPae8Kz+U1U4zPdfwJ8Eez8JvXt0V2V3HE 248Vjfibufoien64FPipRWVBy+apalEyZx6GjSWQyCZUp3917q0D37r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+69 1737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3RZPkn8Xtp/Juq+O027tx7mwVN8dPkz1z8ocJQbdfG x0+7d29X4jMUO2dubnkr4JpRjFq8rHkpRRPDM81JAhlNO08UvuvdBQP5dHxuH8wpv5lgwNd/swzd HL0i1paT+6rIlaYU7KbG+Hync4wrNtcZLz8Ykml0WJb37r3QS7w/lQdK7t6m+R/WEfYvbG18h3n8 18h/MC2X2TtfK4LG77+OvyWkbBZPC7s6lrnoZIDDQ5XCvkftsvBViYZCupnYU7wpD7r3T78cf5fW 9OvPkVB8tflH8u+0Pmh33tnqvO9KdUZfeWwerepOvuoev9252h3Dvip2Z1f1Vj6SgXcW4JsXjY83 uKaRp5qemjpIUp6QCAe690nvir/Lh7O+IdbtnbXWn8wP5H1Xx72z2R2X2JD8bM/1f8RK3ZVc3bPZ Ga7Z3ntur7AXrxd8CjnzmeyFXHJFudaiIMsMcyQosY917oZqT4F9c0eG/mDYRN472an/AJima3Nm +z5XbBeXZFRuj4/Yn471cWwrUgUJHjMRBXR/xAVJ+6d9RMWmMe690ZvpTq3EdHdNdSdKbfyGSy+B 6f6x2F1bhMrmTSnL5TEdf7VpNqY3IZY0UcUP3M0NIkk/hiRNbNoRVsB7r3RftofCbYGzqj5z1FDu zeFU3z03pkt69jCrbC6dnZDJ9GYboaak2T4aVbQrjsJT1i/f/cN9zJJdjFpjX3Xuip/GH+WB3P8A F2Ponau2v5onzP3d0t0Fi+v9pbZ6L3Xtf4sDY+W6362xVLgNvdc5rK4XYFLnDjxjqSChkngyqVZj Gr7jyEv7917o5nxZ+IHW3xZ+NVN8WcRU5Dsnrhdwd7ZvKx9kUOBy77ipfkF3BuTuHee3s/jKalho KnHrU7nrsbHTyUpElGiJP5XMjP7r3RNeqv5MPxe6Xofjpsjr7P8AY2J6M+Mvy97Q+a+wehpchgan YlR3BvbGz0uwYctUmhXIvitg1NZWV+06RatXSZoTXTVn26E+690cj5h/EPY/zH672Zszde4NzbE3 L1b3N1Z8gOouz9kPjot6dZ9q9Sbnjz+39x7fky0NRTMKqmNdhsjBNCyzUFdVQ+lnWRPde6dfjj8W 9o/GnOfJ3O7U3DuXPVHym+Tm6/lJvCHcJxhh29u/d3Xm1uuK3b+2/wCG08DDGxUu1KOeIVRlm8s0 2qUpoVPde6A7pf8All/Gj46RfNzG9H4nJdb7Z+dmWrdx9k7M26mFo9p7K3Jmdh1GxNw5PrLDQUiJ joq4VMuSlopTNBHVu5gSKnZadPde6NL8b+ksD8aPjx0L8cdqZbMZ7a3x/wCl+rukttZzcP2Rz+aw HVOx6HYmGy2cONigpzWVNPQRzVP28EcfkZtCItlHuvdDT7917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XuoOQ/wCLbkP+oOs/61N7 90otv9yo/wDTL/hHWWj/AOAsP/BP+J9+6bl/tG+3qT79031737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3XvfuvddAAfQAf6wt7917pKZjYmx9xFjuDZu1s4X5Zsxt7E5In /XNbC59+6M7Tet42/wD3Au5oKf77ldP+OsOg1yPxm+P+Tdnqun9hqzfq+zwFLjb/AJ5/hgiH+8e9 6n8if2noR23uTz9aikO73Qp6zM3/AB4nplb4j/HJ+f8ARVgVsCB4qzOQqB/rRVQH+xt73qf+I/tP +fowX3b9yEwN3n/PQf8ACp6kQ/FP47wkMvU213IAW1TBXVYsP6ipmcH/AGI9+1yfxH9vTUnun7iy Cjbxcfk4H+ADpX4zorpfD6Djup+vKd0A0yjaGClmUqP1eeeBnv8A43v70STx6JrnnfnG8qLndbtw fI3EtP2BqdCJj8Lh8RGIsViMZi4h9I8fRUtEg/1lpkUe9dB64u7q6Ou6leQ+rsWP8yenQgH6+/dM dd+/de697917r3v3XutfX+cj8q6mrXEfC7rbJ6szuc47cXdFdRSuf4XtyN1yO3tm1DRng1ZRMnXx nkU8dPGbrUsPZttVo00ni086L9vmfy/w/Z1n59zX2ia6uX92d9i/TgLw7crD4pcrNcgHyiBMUZ85 C54xjqoPFY6kwuNpcfRraCip1iQ2GtyvMksn9XdiWb/E+xwiiNAi8B10b62IP5YnRL7Q2XV9i5uj MWVy/kgo/KhLfc1saPXyAtz/AJPTiCkBHAdqgfW/sG77diaXw14D/V/M/wAqdct/vee4437mFOV9 vesMFC1OBVCQg/2765P9KIj1bN7I+sMOve/de697917r3v3Xuve/de6as7/xZsp/1AVP/Wo+9N8J 6UWf+5cf+mX/AA9axW/Sf9nz+Ov4H+zG9Q/7G+/qG3vdp8Mn5/4Oun/LH/TgeZf+lPf/APaJL1tF e/dcuOv/0dzjqn/ssr5e/wDiP/iv/wC4O8/fuvdHA9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3XvfuvdE/wDgF/2Rr8ev/Ef0f/udUe/de6OB7917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de6J/87/lb/sk/wAZt0fIr+4X+kz+7fYHQGxv7n/3p/uZ97/py+Qm1uiP4p/eD+HZbx/wv+8v 8V8H2Lfc/bfbeSn833EXuvdEV7F/mZfKib5LfIjrT4xfAeq+SvTHw37O6r6n+Rm6sL3ttra/euU3 L2btDDb6yVV0Z0hkcZLDmKTbeLztHV1kmZz+M+/aOqgo7fbvN7917qf8h/5k3yl238nfkF0L8Qvg tH8q8V8Ndn9Mb1+TFVJ3zgut+zstD3Zjp904Tavx26yqMRkv7yZSjwNLUZJxlMljIqqoQ46mLVHj aX3Xujm4z5cvkfnPj/hbL1nXYp6/4ZUny5ffmT3NBHk8a9V2+vVD9Z5DY1JRTRLPCW+8lycWcdA4 NOtMwtUH3XuihfJD+bBW9CbY/mj53G/HmPfOQ/lvb0+MOy6HES9uDasXeVb8lOvtlb4paiXJnbOQ G2FxL7xWiYGHK/cik82qn8/ih917odehfkR/MC3Jvman+V3wM6a+LvTGN2zuHPbg7gwnzxwfds+C nw1F97TQVuzP9He11WkkVZGqchJl0SmRDI6OL2917o8uwOwtg9r7N2/2N1bvjZ/ZXXu7semW2pvv YG5sLvLZu58VJI0UeT29ufbs9TQ1tOzIyiamndCQQDcH37r3Sx9+691737r3VZuw/wCaT0H2B/Mw 7a/lk4iGuXsvqzqLC7/Tfb1iNtLdm+6dqfL9ndNYQ+ARPmdr4HN7SzdWsNbNI6ZGshlp6VsW71Pu vdWZe/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XuiM/Pf5c7l+JPW3V03WvWN L3D3n8jO/evfi98f9g5rdH9xtm5Htbsigyeepsx2HvOOkyE+NwGGw2EzOayctJj6mpljpPtaeLzT o6e690SKh/mldz/GLJfLXrf+ZJ0x1ztTtH42fGB/mds/PfEzd25+xOs+9OkqndE3X1NtjbVL2PQ4 jN4rd1PuZaTAGiycC09ZLVR1MEkVOpLe690+dc/Oj57dUdy/GTbH8xD4z9AdSdV/Njdo606h3J0J 2zvXsDcnQPd+V2jkd+7K6K+SEe9MNiqLI12coMbWUFJn9rN9ouWgajNM1PLDWt7r3V0/v3Xuve/d e6rd+Pnyw+QG9vn38v8A4ed09ddO7Y270l1r093P1Duzq/em9d25rdXXPce8d3bWwMXZEG68PhoK DNxptZqmsosXHU0sLTiKOtqgvkPuvdE87K/mM/zAc7gPlJ8lviz8Teit2fDv4fb+7U2duOk7u7U7 A66+RnyQxnx3aop++t39H4rGYGs29hMdSVlHkaHbku4qud8p9nLOYqUTQwn3Xulxnv5hXy3+TPZj 9cfyyOjujt6Y7YPQvRfyA7i7O+W++t+de7Vhf5GbMHZXU/QuxMN1pi8tWy7prdutBlsnlK6RcdjI qmnEiVMkixt7r3R8Pg18s8R81vjltbvGl2ZmOr90PuDfvXHavUm46+jye4upe5OpN7V/W/aPXeZr 6AJHO2PzGNqRS1QiiNTStT1Jii83jX3Xuq/9ufMv+av2nu35Jbh+PfxI+F3b/TPSPye7n+PO3tvb k+U3anTHem6z0vueTCZPL1i1/X+4Nq05yCokdK38WASWRXljESuB7r3UTsj+cHkp/wCXb338p+o+ lP7p/Jz47979R/GHtz4qfIbNtiK3qbvDsP5BbO6WyGD3vuLr7+IfdYcUe7Ic7hs9h0mgyFL45Ik1 ieni917oyHXXcn8w/qOHsjtr+Ypt/wDl8dVfF7qzqjfPYu899fHjuD5H7+3xgP7m49M/U19fgOyN h4ChbFxY6DIzVTwVj1XkSGOCnlMjafde6Lj1/wDLf+cN8p9n0nyC+Mvwx+JHUnx83RRruXqHZ/zM 707Z238kO3ev6ulau21u/Ibb6k2tmMJsts3TSU9XQ47L19ZPCLR1QjScVMPuvdK/vH+Yr8p+tfgV SfIWt+Gx6L+UVV8k+n/i+/QXyG30mQ6+h3j2j3nhel6feuH7T6rirZcxtGR8wldj83SYtJaiOOQp ROqxmb3Xulb0x81/l9tD5edS/DD56fHfo3YO7fkL1j2v2H0V3J8Xe7d49rdYbuyfR7Ymt7M2Lufb fZ21Np53CVtJj85j6ylqdFXT1N3jRgVYp7r3Rffgh8wf5w3zX6X+OXykx3Rv8tXafQPedHtreVZR 1vfHyiHcOE67rM+aHcLU23IOv6rCvmo6WGpeipWzZpnl8Sy1MaMzL7r3U3qv5f8A83f5Q7l+SuX+ NHSP8uCDqLpL5gfJ34tberO9O8/k3tXsbPH47dsZDrdtyZnCbB2FuDGQ/fpSRVAWDItZmYaEAAPu vdH7/mF/Kjd/wm+B3yH+WGL2ltvee9ejeq33wmz6/I5Ol2tmc1TVVLR1WOfKUyJVrS653McgjWQq FJUEkD3XuiQdofPD+Zv8MNtS9t/NX4FdH7/+N2zo5Mp3f3L8FPkfvXs7dPT+yIZPNlOy6zojuDZG 1svmcPiYHWTNDE5GSopaeCqyBjNNEVHuvdLDvf5v/MjdfzA65+MP8vrYfw/7Kw+9PhbhPma/ZPyT 7M7j2Jgcns3cPaD9e4al2hN1RtrcktR9zFLQV8JqqSFTG8hMgKoje690i+3vmr/Mv643x8VPh9S9 L/BCb5z/ACcxfyK7Gpctke8u7Kf4qbd6v+PlLhKybE4vK1+06DeOc3Vlxm4tVBQ4gRUEEM1bKaim SUxe690Ie+v5mG/ehYP5ddX8vumtp/E5/lFkPkvQ/Jyg7E7NwOeoPjtTfHX487s7lnz2F3tteWTF 5PH5ebbcElFJOY5/sK6JZqeDICSlj917oyHwj+UXcvzAo9892ZTozIdHfFvN1GJp/i7N2bT5vB/I DuTbKU7S5juXePXdckce1du5SRk/unj6wyZKtox/EqqOihnpopfde6Pp7917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de6g5D/i25D/AKg6z/rU3v3Si2/3Kj/0y/4R1mpP+A0P/LNffuqT/wBs 32nqR79011737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690UL5p/K3bHxC6Qz3ZWX+2yO6 asvt/rfacswSbdW9KyneSgpnRfWKOkUNWZGZf0QRsAfI8YZ22ha4mEa/mfQf6v59Sp7O+1u6e7XO sHLdnqjtkpLdzgYgt1I1tU48RyRHEp+J2GNIYjUYwg3NuLObl7P7ByVVnewewctW7j3Dlq//AIFP VZaoNZNqH0j1ki0S+mONY4lAVLex7Y2whiBpSuPsH+rJ67X7Ns+3cv7VbbJs8QgtbSNIoY14JGgo o+Z82Y5ZiWOST0bD4y9PZbujtnb228fSfcUdNX0VTXl0LU5fyGSkhqSP91jQ9RP/AM2on/qPetyu ltbYsDQnA/1f6s9AD3g58s+QOS7rdZ30yOjKlDRqUoxHzyET+m6+h62y9n7Xxmy9tYba+Ij0UGFo YaKIkWknMQvNVzaePJNIXlkP+qY+wAx1sXPE9cT963W737dbjeL41luHLn0FeCj5KtFX5AdKn3Xo r697917r3v3Xuve/de697917ppzf/Fny3/UDVf8AuOfdX+HpXZ/7lxf6Yf4etY3sCx+enx1b6n/Z jupRx+QN/wBD9Pe7IaUdj/Cf8HXT3lU/+A/8yj/pD7h/2iS9bRHvfXLfr//S3OOqf+yyvl7/AOI/ +K//ALg7z9+690cD37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+690T/AOAX/ZGvx6/8R/R/ +51R7917o4Hv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917qoD+e7/27O7Q/wDE/wDw C/8AhhHVnv3XuqyP5m3yZ+IHWO8/kd89viL8mcP8df5oXw53pguj+0vj/uium2plfnPjtp5LHjbn RnZfxry8lPlt643cGMyyDYG/MHQNURRtFU0Ne1FRqab3XulX/NA78+GcGZ7/APln1n8osZ8Fv5rn 8vXregjp8fvnLRbJyfyG2tV7Kou4dufHPffUe5ZKJ+1dj7oqa2TAYatxVNLU0WaLz4ydGjVKr3Xu hxf5NbN6w/mt/E75GfLTK7b+LeD+Vf8AJ6ptq7cyHa+dptmbIx/emI7uw/cnYPSs+9N1GkooMxis bl0lWmrZYZJUjKqDMUjb3Xuq4/mRu7Znd3xC/wCFI/yV663bR7j+OnbnyT+EG0OvO7dsZf7fZ+8Z uiOv+nOq+289sHeULLBWY/D52kraBM9j5ZKOSenlamqJBEzD3XurTfixhv5WGE37urJ9efzed7fM hqXqbsyXffSvb382Cf5i9dVvVabbkfsbce6+k83ujMUlTRY/GCaSqrqihZKaJpGdlVjf3XurWfiH mPi/n/jZ1FmPhd/o3/2V2u2v5OnF6jxlJhuvYttJkp4aiDb+Iooadabx1y1aVcDwJKlSJlnVZhIP fuvdGQ9+690VP5vfKraXwm+KXd3yd3lTSZOk6s2XV5Hb22KWOafJ787Cy88e3Os+ucJS0/7ktduH cFZjcNSRx8mWpUkhQWHuvdasdR/Lm/m/fGP419YfLPL5X4Xdhd3fFzvrff8ANC7Fw+ytjd6Y35a9 wdl9k4Soyvyk6RzPaJ3PVbYr4MztaoqNnLQ43a8MdRTYvFQUmmaNJZPde62/em+29id99S9ad39X ZqHcXXPbextrdi7IzcBTTktsbww0Odw88kcbOI5fDOizQltUcgaNrMpHv3XuhL9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691 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 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3XuoOQ/4tuQ/6g6z/AK1N790otv8AcqP/AEy/4R1mpP8AgND/AMs19+6p P/bN9p6ke/dNde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3SR3tvTa/XO0txb73tmaDbm0tp4 mszu4M3kpxBR43F46I1FRPKx5JsNMcags7lUQMzAHYDMQiipPl0ZbNs+58wbtb7Js0LXF3dSLFFG gqzu5oAP8JJoAKkkAE9adXyX+Rm5/m73pX9rZ2GsxfVW0JKrA9P7Mq20rQ4aOqEj5fI0wJQ19fIi VWQe5sRFSqTHTgkYbVt6xxh3HzPzPp9g/wAPXaL2R9o9t9ouTI9lh0y7hcaZb24H+iTUwiHj4MAJ SMYrVpCAXICRpqapraqloaOnerrq2oipaOmhUNNUVNSwihijVfqWcgf7H2fOwQamNAOPUvTTQ20L z3DBEjUszHACqKkn5AdbIP8ALr+O0HWWwv78ZOnQ5rPxyxUVQUW88buBlcrESLmKR41pKRvzDCZB xNcgTdb36u4IX4V/1f8AF/Prkx96L3Tk5z5oOx2TEWtqRqWuARXQh/pKCZJB/vx9JzH1Zh7K+sVO ve/de697917r3v3Xuve/de697917poz3/Flyn/UDUf8AWs+/dKLP/cyP/TL/AIetY7sD/svT46/+ LHdSf+9/Q+7Wvwv9h/wddP8Alj/pwPMv/Snv/wDtEl62iPdeuXHX/9Pc46p/7LK+Xv8A4j/4r/8A uDvP37r3RwPfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3RP8A4Bf9ka/Hr/xH9H/7nVHv 3Xujge/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XumXO7ewG6cZNhNz4PD7jw09Rj6 ubE57GUWYxk1VicjFlsTUy0GQSSJpKarggqqdyl45o0kQh0Vh7r3SEz/AEZ0luvsLbvbe6OnerNy dq7Qjhh2n2bn+vdpZjsLa8VM8klPFt3eeRo5MlRLG00rItNUoFLuRYs1/de69vPovpLsbdm1N+9h 9O9V783zsOSOXY28959fbT3RuzZksNYMhFJtTcWco56zHMtQqzq1HNGRIA49QB9+6907dkdVdXdy 7abZnb3W2we1dnvXUuTfanZGztu75202SoNX2OQbBbnpqqlM8Ot/FKYtaajpIuffuvdcoerOsqfY UHVVP1zsODq+lx8GJpet4dobfi2FTYqlqFq6XGQbPSnGPSnjlVZY4VpwiuAwAIB9+690ndsfH7oT ZORkzGzOkeodo5eShrMbJlNsda7MwGRkxuRi8GQx8ldiqKKUwTp6Joi2h14YEe/de6X+19rbY2Rt 3C7P2XtzBbQ2ltrHUuG25tfa+Ix+39u4DEUMQgocVhcJiY4aalpoUASKCCJURQAqge/de6UHv3Xu mLP7Y23uumpKLdG3sHuSjoMpjs5Q0mfxNBmKWizWIqBV4nMUkGRjkSOqpZQJaeoQCSNwGRlIv791 7p99+690y7f29gNp4bHbc2tg8Ptrb2IpxSYnA7fxlFhsNjKVWLLTY7F45I4IIwSSEjRRcnj37r3T 17917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XusFRTwVcE9JVwQ1VJVQy09TTVEST09R TzoYpoJ4ZQVdHUlWVgQQSCLe/de6z+/de6YsVtjbeDqshXYXb2DxFdlpPNlKvF4nH4+qyUvkaby5 CopI0eZtbu+qQk3Zj9SffuvdPvv3Xuve/de697917r3v3XumLObY23ueKCDcu3sHuGClkM1NDm8T QZeKnlddDyQR18cgRiOCygEjj37r3T77917prmw2IqMnSZqfFY2fM4+GanoMtNQ00uSoqepBWogp K91MsSSAkOqOA1zcH37r3Tp7917r3v3XukNuXrHrbeeXxG4N4de7H3Xntv8A/Fhze5Np4HO5fCWc yj+E5LKU8s1N6mZv2XXkk/U+/de6XPv3Xuve/de697917r3v3Xuve/de6bsficVifvf4VjMfjf4l kKnLZEY+ipqL+IZWs0/eZOtFOq+Wol0r5JpLu1hqJsPfuvdOPv3XumDce1dsbxx38H3dtzA7pxAq qWtGL3Hh8fm8d97QyiejrPscnHLF5YXAeKTTqRuVIPv3XunuONIkSONFREVUREUKiIosqqo4AA4A Hv3Xusnv3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3XuoGS/4tmR/6gq3/rS3v3Si 2/3Kj/0y/wCEdZ6T/gND/wAs19+6bl/tG+3qR79031737r3Xvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3UaW VIEkkkdI44lMkju6oiRoNTs7MQAALkkmwHJ9+68FZiEQVJwAMmvkKfPrVf8A5kHzYqPlrv2XoTqL Lyx/H7YGYjl3nuiglJg7R3VjZykb0sqcS4mhlUrjkuVqJg1awaOOm9iLadtYt4zihP8AIf5yP2Dr qt9132D/ANb/AGted+bIf93d7H+lEwzZQOPhoeFxMD+p5xxnwsFpOiVUVHTY6lhpKWJKekpoUip4 k4SNI1sqi/8AtyTyTyefYtVVRQqigHWYPVjnwR+MOR7Y3vQ53MU9RT4WjhjyNZVlDGcXtuodofu4 nYemuyuiWkxo/UkIqKsD0R6g9vW4eEn00Zz5n/V6f4esSPvMe8ltyhsUmx7bIrXMhKAA11yih0ke ccFQ83k0hjh83psoY+hosTQ0eNx8EVHj8fSQUNFSQRiOCjo6SIQU1PDEvCpGiqqj8Aewj1yknnmu Znubhi8kjFmYmpZmNSSfMkkknpy9+6a697917r3v3Xuve/de697917r3v3XumnNm2Hyx/pQ1R/20 B91f4eldn/uXF/ph/h61i+wGUfPT452IsfkZ1IOLfVewKHj0+72ZrG5+R66e8sKR7A8y1/6M9/8A 9okvW0V711y36//U3OOqf+yyvl7/AOI/+K//ALg7z9+690cD37r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+690DHx56qqOj+leueparNQ7iqNibdhwcubp6F8bDkmiqJJvuY6GSWZogddtJlb6fX 37r3Qz+/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3XumfcFStHgc5VtcrS4jJVLAC5tBRPKbD/Ye/dLNui8bcIIv 45EH7WA6g7bzdHlsbTT0s8csbQo4dG1Agjn6f7x72QRx6f3Sxns7x45lIIJ6UgZSbBgT/gfeuizr l7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de66PA/1v9j7917rXX/md/wAwOu3nks78Q/jpmz4WNRiu8uysTUE0 8NNGxgyXXm36+nP6R6o81VRtdjehibmoIONs25p3ErD7B/z8f8nrx9K9EPutfd1MJt/dHnu37sSb daSDh5reTKf220ZHGkzDEdamNvYHH7extPisZCwip1LO5UeWaQqBLUzleBe3+sosBYAexqiJBHTg BxPz9eugzSJGC8rADzJNP5nozXxs6I3j8g974zD7G21V7txkFfHHntwrFWR9abYhjb96feO9YQKe VowCVw2Jknralh4m+1QvOhVf7tFAhWI1Y/6sD/Kcfbw6hT3a94uXvbrY5Zr26WC4ZT4UYK/VSnyF vAe8V/5SJlSCMHUPFYKjbT3T/VG3enNmUO0sCGqZFK1uczdRBDDX7hzUkKw1WUrIqf0RLpRIqamj /bp4Ejgj9CC4KeR5XMj8T1x95x5u3PnbfJN73Q0LdscYJKxR1JVFJyeJZ2Pc7sztlj0LHunQW697 917r3v3Xuve/de697917r3v3Xuve/de6Crtfe2K2js/OV1dVxQCPH1Q9UoUkmE8D23KwC0Pn0JuV dlut43eCCBC1XHl8+tXTAbrn7T/mC/Hei29G2Rlg722LmpkjYMFxu29yRbkzVUSONMFHSVEzf4Lb 6ke1FpEUgd29Kf5OuqN3tEXKf3duZLncj4QbarqIV/jnhMES/a0siKPt624PbfXIjr//1du/A9yd RdZfNT5X0PZPavW/XtblOt/i5VYyj3xvjbG06rI0sNNvOGapoafPVVO80aP6GeMEA8E39+690Yn/ AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H// ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r 3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x /wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBc vfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf9 5L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9 cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+L H/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcv XX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2 bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9 HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/ 2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf /wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6 917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L /H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDX L37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8A eS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX /wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL 4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL 11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9 my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/ AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuv de/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H /wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfu vde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS /wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1 y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4s f95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11 /wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4 sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0 cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/ AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H// ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r 3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x /wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBc vfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf9 5L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9 cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+L H/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcv XX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2 bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9 HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/ 2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf /wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6 917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L /H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDX L37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8A eS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX /wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL 4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL 11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9 my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/ AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuv de/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H /wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfu vde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS /wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1 y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4s f95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11 /wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4 sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0 cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/ AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H// ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r 3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x /wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBc vfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf9 5L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9 cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+L H/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcv XX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2 bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9 HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/ 2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf /wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6 917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L /H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDX L37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8A eS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX /wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL 4sf95L/H/wD9HL11/wDXL37r3Xv9my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL 11/9cvfuvde/2bL4sf8AeS/x/wD/AEcvXX/1y9+6917/AGbL4sf95L/H/wD9HL11/wDXL37r3Xv9 my+LH/eS/wAf/wD0cvXX/wBcvfuvde/2bL4sf95L/H//ANHL11/9cvfuvde/2bL4sf8AeS/x/wD/ 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 917r3/pv/wB+6917/wBN/wDv3Xuvf+m//fuvde/9N/8Av3Xuvf8Apv8A9+6917/03/7917r3/pv/ AN+6917/ANN/+/de69/6b/8Afuvde/8ATf8A7917r3/pv/37r3Xv/Tf/AL917r3/AKb/APfuvde/ 9N/+/de69/6b/wDfuvde/wDTf/v3Xuvf+m//AH7r3Xv/AE3/AO/de69/6b/9+6917/03/wC/de69 /wCm/wD37r3Xv/Tf/v3Xuvf+m/8A37r3Xv8A03/7917r3/pv/wB+6917/wBN/wDv3Xuvf+m//fuv de/9N/8Av3Xuvf8Apv8A9+6917/03/7917r3/pv/AN+6917/ANN/+/de69/6b/8Afuvde/8ATf8A 7917r3/pv/37r3Xv/Tf/AL917r3/AKb/APfuvde/9N/+/de69/6b/wDfuvde/wDTf/v3Xuvf+m// AH7r3Xv/AE3/AO/de69/6b/9+6917/03/wC/de69/wCm/wD37r3Xv/Tf/v3Xuvf+m/8A37r3Xv8A 03/7917r3/pv/wB+6917/wBN/wDv3Xuvf+m//fuvde/9N/8Av3Xuvf8Apv8A9+6917/03/7917r3 /pv/AN+6917/ANN/+/de69/6b/8Afuvde/8ATf8A7917r3/pv/37r3Xv/Tf/AL917r3/AKb/APfu vde/9N/+/de69/6b/wDfuvde/wDTf/v3Xuvf+m//AH7r3Xv/AE3/AO/de69/6b/9+6917/03/wC/ de69/wCm/wD37r3Xv/Tf/v3Xuvf+m/8A37r3Xv8A03/7917r3/pv/wB+6917/wBN/wDv3Xuvf+m/ /fuvde/9N/8Av3Xuvf8Apv8A9+6917/03/7917r3/pv/AN+6917/ANN/+/de69/6b/8Afuvde/8A Tf8A7917r3/pv/37r3Xv/Tf/AL917r3/AKb/APfuvde/9N/+/de69/6b/wDfuvde/wDTf/v3Xuvf +m//AH7r3Xv/AE3/AO/de69/6b/9+6917/03/wC/de69/wCm/wD37r3Xv/Tf/v3Xuvf+m/8A37r3 Xv8A03/7917r3/pv/wB+6917/wBN/wDv3Xuvf+m//fuvde/9N/8Av3Xuvf8Apv8A9+6917/03/79 17r3/pv/AN+6917/ANN/+/de69/6b/8Afuvde/8ATf8A7917r3/pv/37r3Xv/Tf/AL917r3/AKb/ APfuvde/9N/+/de69/6b/wDfuvde/wDTf/v3Xuvf+m//AH7r3Xv/AE3/AO/de69/6b/9+6917/03 /wC/de69/wCm/wD37r3Xv/Tf/v3Xuvf+m/8A37r3Xv8A03/7917r3/pv/wB+6917/wBN/wDv3Xuv f+m//fuvde/9N/8Av3Xuvf8Apv8A9+6917/03/7917r3/pv/AN+6917/ANN/+/de69/6b/8Afuvd e/8ATf8A7917r3/pv/37r3Xv/Tf/AL917r3/AKb/APfuvde/9N/+/de69/6b/wDfuvde/wDTf/v3 Xuvf+m//AH7r3Xv/AE3/AO/de69/6b/9+6917/03/wC/de69/wCm/wD37r3Xv/Tf/v3Xuvf+m/8A 37r3Xv8A03/7917r3/pv/wB+6917/wBN/wDv3Xuvf+m//fuvde/9N/8Av3Xuvf8Apv8A9+6917/0 3/7917r3/pv/AN+6917/ANN/+/de69/6b/8Afuvde/8ATf8A7917r3/pv/37r3Xv/Tf/AL917r3/ AKb/APfuvde/9N/+/de69/6b/wDfuvde/wDTf/v3Xuvf+m//AH7r3Xv/AE3/AO/de69/6b/9+691 7/03/wC/de69/wCm/wD37r3QnbH/AOLNJ/2Sb/xcKz/jx/8AizfrH+c/6aP+O3+Nve+rjh59LH/0 n737rf7evf8ApP3v3Xv29e/9J+9+69+3r3/pP3v3Xv29e/8ASfvfuvft69/6T979179vXv8A0n73 7r37evf+k/e/de/b17/0n737r37evf8ApP3v3Xv29e/9J+9+69+3r3/pP3v3Xv29e/8ASfvfuvft 69/6T979179vXv8A0n737r37evf+k/e/de/b17/0n737r37evf8ApP3v3Xv29e/9J+9+69+3r3/p P3v3Xv29e/8ASfvfuvft69/6T979179vXv8A0n737r37evf+k/e/de/b17/0n737r37evf8ApP3v 3Xv29e/9J+9+69+3r3/pP3v3Xv29e/8ASfvfuvft69/6T979179vXv8A0n737r37evf+k/e/de/b 17/0n737r37evf8ApP3v3Xv29e/9J+9+69+3r3/pP3v3Xv29e/8ASfvfuvft69/6T979179vU3F/ 8XLGf8yL/wCB1J/xa/8Ai5f8Cl/4tn/N/wD44/7Xb37r37ehiqP8xUf8W3/gPP8A8CP8x9D/AMCP +bf+r/2PvXWk+NePEcOP5fP06pa7U/5mBuT/ALckf8XFv+Zqf8zA/wA2P+Pk/wCmj+v+FvalPhHx /lw6za5R/wCVetf+nlfB/wAQP9xP+bH9DoPz9f8AugR/sfr7v/zk6En/AKNbrr/0wP79/wA5Ovf+ jW69/wCmB/fv+cnXv/RrdeP/AJgH/wBj71/zk62f/Qrde/8ATA/vf/OTrX/o1uvf+mB/fv8AnJ17 /wBGt17/ANMD+/f85Ovf+jW69/6YH9+/5yde/wDRrde/9MD+/f8AOTr3/o1uvf8Apgf37/nJ17/0 a3Xv6f8Abgf6f8T+Pfv+cnXv/Rrde/8ATA/v3/OTr3/o1uvf+mB/fv8AnJ17/wBGt17/ANMD+/f8 5Ovf+jW69/6YH9+/5yde/wDRrddn8f8Abgj6D6/8R/h79/zk69/6Nbrr/wBMD+3P+cvWv/Rq9dj6 j/twR9fx9f8AYe/f85evf+jV6831H/bgj6f2vr9fx/h7b/5ydb/9Gt14/Qf9uCPoPr9P9h/h71/z k635f+DW66/9MD+9/wDOTrX/AKNbr3/pgf37/nJ17/0a3Xv/AEwP7c/5y9a/9Gr17/0wP7b/AOcn W/8A0a3Xv/TA/v3/ADk69/6Nbr3/AKYH9+/5yde/9Gt17/0wP79/zk69/wCjW68P/MA/+w96/wCc nWx/6Fbr3/pgf27/AM5eq/8Ao1euSfqH/bgn6j9H6v8AYe2v+cnVh/6Fbo5Hwz/4+/M/9u0f+Aif 9kZ/8ff/AJp/+Lz/AM2f9T/tOr2zPxX4v9t/k6hf3s/5JVv/AMrn8R/5WT+w4j+y/pevzp1Zav5/ T+o/p/1/z/j/AF9tdYy9d+/de6//2Q0KZW5kc3RyZWFtDWVuZG9iag0xIDAgb2JqPDwvTW9kRGF0 ZShEOjIwMDcxMjIxMTEzNjI0KzA3JzAwJykvQ3JlYXRpb25EYXRlKDIwMDcvMTIvMjEgMTE6MzYp L1Byb2R1Y2VyKP/+UABEAEYAIABDAE0ARAAgADcALgA4ADMAAAApL1RpdGxlKP/+MAA2ADAAMQAw ACAAUwBwAGEAYwBlACAAUABsAGEAbgBuAGkAbgBnACAATQBUAC0AOQAwAC0AMQAyADAARABlAHMA awAgAEwAZQB2AC0AVAAuAGoAcABnAAAAKS9BdXRob3Io//5CAG8AbgBnAG8ASQBuAFMAYQBpAGcA bwBuAAAAKS9DcmVhdG9yKP/+MAA2ADAAMQAwACAAUwBwAGEAYwBlACAAUABsAGEAbgBuAGkAbgBn ACAATQBUAC0AOQAwAC0AMQAyADAARABlAHMAawAgAEwAZQB2AC0AVAAuAGoAcABnAAAAKT4+DWVu ZG9iag0yIDAgb2JqPDwvQ291bnQgMS9UeXBlL1BhZ2VzL0tpZHNbIDUgMCBSXT4+DWVuZG9iag14 cmVmDTAgMw0wMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDEzNjg2NjggMDAwMDAgbg0KMDAwMTM2OTAz MSAwMDAwMCBuDQp0cmFpbGVyPDwvU2l6ZSAzL0lEWzw2MzRkMDVlMmY2MTQ5Mjg5OGU4MGUyMGIx YTQzYjk2ND48ZTE1YmM2NDA4NjVhOTYxZTc0ZDZmYTFhYzRiOTAzZGI+XT4+DXN0YXJ0eHJlZg0x NzMNJSVFT0YN ------_=_NextPart_001_01C95903.D131CE5F-- From ms@teamix.de Mon Dec 8 02:41:06 2008 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_12, 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 mB88f6YW016432 for ; Mon, 8 Dec 2008 02:41:06 -0600 X-ASG-Debug-ID: 1228725663-778e011e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from rproxy.teamix.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 80888F08 for ; Mon, 8 Dec 2008 00:41:03 -0800 (PST) Received: from rproxy.teamix.net (postman.teamix.net [194.150.191.120]) by cuda.sgi.com with ESMTP id M70R50XKvsiKj3sc for ; Mon, 08 Dec 2008 00:41:03 -0800 (PST) Received: from mango.of.teamix.net (unknown [172.21.123.1]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by rproxy.teamix.net (Postfix) with ESMTP id 0917A7DCD; Mon, 8 Dec 2008 09:40:30 +0100 (CET) From: Martin Steigerwald Organization: team(ix) GmbH To: tuxonice-devel@lists.tuxonice.net X-ASG-Orig-Subj: Re: [TuxOnIce-devel] hangs with MTRR_SANITIZER? - solved Subject: Re: [TuxOnIce-devel] hangs with MTRR_SANITIZER? - solved Date: Mon, 8 Dec 2008 09:40:28 +0100 User-Agent: KMail/1.9.9 Cc: Martin Steigerwald , xfs@oss.sgi.com, linux-kernel@vger.kernel.org References: <200811252244.14718.Martin@Lichtvoll.de> <200811290824.38750.Martin@lichtvoll.de> <200811300002.45669.Martin@lichtvoll.de> (sfid-20081130_000254_807842_E480F4DF) In-Reply-To: <200811300002.45669.Martin@lichtvoll.de> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart1299583.gNlHiHnN2i"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200812080940.29371.ms@teamix.de> X-Barracuda-Connect: postman.teamix.net[194.150.191.120] X-Barracuda-Start-Time: 1228725664 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.12231 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- --nextPart1299583.gNlHiHnN2i Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Am Sonntag, 30. November 2008 schrieb Martin Steigerwald: > Am Samstag 29 November 2008 schrieb Martin Steigerwald: > > Hi! > > > > CC'd to linux-kernel mailinglist, as that might be something that goes > > beyond any possible TuxOnIce or XFS issues. I know I am using TuxOnIce > > which is not part of the mainline kernel. And I am even using an > > inofficial patch - which I will use again unchanged for the non > > MTRR_SANITIZER kernel, in order to know whether its the MTRR_SANITIZER > > thing. And anyway before knowing whether it might be MTRR_SANITIZER > > related I need to run the non MTRR_SANITIZER kernel for at least a week > > and have quite some hibernate cycles. If someone else had issues with > > MTRR_SANITIZER I would like to hear about it. Also if someone thinks I > > am completely off track on trying to track this down I appreciate a > > hint. > > Ok, its not MTRR_SANITIZER. It hung again on hibernate, again before any > serious hibernating work has started. I will add debug output to my > pre-hibernate script as it might hang already in there, maybe while > disabling the network. I want to know whether it hangs before calling the > hibernate script or after it. I think I will go for the latest official > hibernate patch instead of using the inofficial one, although I am not > convinced that it makes much of a difference. Lets see. > > The syncs I added to my pre-hibernate seemed to help. KDE configuration is > intact. As a safeguard I rsync ~/.kde to a backup directory before > hibernating anyway. Okay... thats solved now. Conclusions: 1) There was no XFS problem as the sync I added at the beginning of my pre= =20 hibernate script did avoid the truncated files the one time I still had the= =20 hang. Thus those appear to have been IO in flight. 2) Its not MTRR_SANITIZER as explained above nor any other mainline problem. 3) Instead problems gone, when I replaced the inofficial TuxOnIce rc7a for= =20 2.6.26 to 2.6.27 forward port patch I used[1] with the official but still n= ot=20 officially released current tuxonice for 2.6.27 patch[2]. So sorry for the noise. I just learned to prefer official upstream patches.= =20 Whether they'd be officially released or not. Can ask whether they appear t= o=20 be stable before trying one. ;) [1]=20 http://lists.tuxonice.net/pipermail/tuxonice-devel/2008-November/000357.html [2] http://www.tuxonice.net/downloads/all/current-tuxonice-2.6.27.patch.bz2 Ciao, --=20 Martin Steigerwald - team(ix) GmbH - http://www.teamix.de gpg: 19E3 8D42 896F D004 08AC A0CA 1E10 C593 0399 AE90 --nextPart1299583.gNlHiHnN2i Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkk83X0ACgkQHhDFkwOZrpDbHQCfYabC/cJcXse+xfB8z4nRz8KK TRoAnAkyr7feChoLQ0cCLGibN2Bpaudn =Z1Po -----END PGP SIGNATURE----- --nextPart1299583.gNlHiHnN2i-- From raziebe@gmail.com Mon Dec 8 06:50:23 2008 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 mB8CoM3N031222 for ; Mon, 8 Dec 2008 06:50:23 -0600 X-ASG-Debug-ID: 1228740620-6d6900020000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from yw-out-1718.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9EE2616D60F6 for ; Mon, 8 Dec 2008 04:50:21 -0800 (PST) Received: from yw-out-1718.google.com (yw-out-1718.google.com [74.125.46.152]) by cuda.sgi.com with ESMTP id aIJuHtIq4LQUFHz4 for ; Mon, 08 Dec 2008 04:50:21 -0800 (PST) Received: by yw-out-1718.google.com with SMTP id 5so405987ywm.32 for ; Mon, 08 Dec 2008 04:50:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:mime-version:content-type:content-transfer-encoding :content-disposition; bh=E7H/1FnrsMLr7iri9HR2TssXqKQ1FDkqSIlvpPt5aO4=; b=sbfbFIK+ta6wNBKJj1Brh6y8wv6C4zd6IpKkzputsqTW24FXyYzsTwbEv8uAZmmIru Hk1g3Ybw53viq6WCPGUijux1XEchAdypapQh8wFBrJy2kn32wxHLBhgJMkyWYgOdK2OF HZGDfsDGz9lk11Cx2DDX8FrjcPUIPPbQZGBiw= 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=kPaeQh/ChNXMioeBQfubUZYMc7COf3Y3MN9eEdX+SjWPEo+sbeLRnC5L9ehMaObajV JdRvi5CnAT4cyr91XPkOKUMtjkD04Y6L9ofG+mueB2gIdijdWo6Envj/9SH+MoSUC/F+ QVQRYIRqfNDhTLd9iZ2EOXPDuXlFk0mCSuM6M= Received: by 10.100.108.2 with SMTP id g2mr1399532anc.94.1228740154934; Mon, 08 Dec 2008 04:42:34 -0800 (PST) Received: by 10.100.166.19 with HTTP; Mon, 8 Dec 2008 04:42:34 -0800 (PST) Message-ID: <5d96567b0812080442r131d9fc8t4019c99ffbffa290@mail.gmail.com> Date: Mon, 8 Dec 2008 14:42:34 +0200 From: Raz To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: XFS over SSD Subject: XFS over SSD MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Barracuda-Connect: yw-out-1718.google.com[74.125.46.152] X-Barracuda-Start-Time: 1228740621 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.12244 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- I am thinking of using XFS over a SSD disk. 1. Can I separate xfs meta data ( not just the logging) from the SSD ? can I put the meta on a different disk ? 2. When does a file's meta ( its block maps ) is being flushed to disk ? can I control it ? thank you raz From jpiszcz@lucidpixels.com Mon Dec 8 07:31:48 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.0 required=5.0 tests=AWL,BAYES_00,HEADER_ESQ, 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 mB8DVk2J001001 for ; Mon, 8 Dec 2008 07:31:48 -0600 X-ASG-Debug-ID: 1228743105-03d3002f0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8705E16DBD5D for ; Mon, 8 Dec 2008 05:31:45 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id eSqWb3ew4CasKLFL for ; Mon, 08 Dec 2008 05:31:45 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id DCE3D1003F5AD; Mon, 8 Dec 2008 08:31:13 -0500 (EST) Date: Mon, 8 Dec 2008 08:31:13 -0500 (EST) From: Justin Piszcz To: Raz cc: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS over SSD Subject: Re: XFS over SSD In-Reply-To: <5d96567b0812080442r131d9fc8t4019c99ffbffa290@mail.gmail.com> Message-ID: References: <5d96567b0812080442r131d9fc8t4019c99ffbffa290@mail.gmail.com> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1228743105 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.12246 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, 8 Dec 2008, Raz wrote: > I am thinking of using XFS over a SSD disk. I am currently using XFS on an Intel X25-E with the logdev internal, using the defaults. I see the point for putting the journal elsewhere; however, that may defeat the purpose of an SSD, if its latency is 0.01 or 0.001 and the HDD is 8-14ms, then it may defeat the purpose for writes or fast access anyhow? > 1. Can I separate xfs meta data ( not just the logging) from the SSD ? > can I put the meta on a different disk ? Yes, see the logdev option on the mkfs.xfs manpage. > 2. When does a file's meta ( its block maps ) is being flushed to disk > ? can I control it ? I am not sure you can control this, will let the XFS devs/others take on this question. From sandeen@sandeen.net Mon Dec 8 08:46:40 2008 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 mB8Ekej1006222 for ; Mon, 8 Dec 2008 08:46:40 -0600 X-ASG-Debug-ID: 1228747598-642c00e40000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7A011E41 for ; Mon, 8 Dec 2008 06:46:38 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id kAZDnXXe9tFpEXOh for ; Mon, 08 Dec 2008 06:46:38 -0800 (PST) Received: from Liberator.local (sandeen.net [209.173.210.139]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id 583A7A9ABF7; Mon, 8 Dec 2008 08:46:36 -0600 (CST) Message-ID: <493D334C.5010006@sandeen.net> Date: Mon, 08 Dec 2008 08:46:36 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Raz CC: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS over SSD Subject: Re: XFS over SSD References: <5d96567b0812080442r131d9fc8t4019c99ffbffa290@mail.gmail.com> In-Reply-To: <5d96567b0812080442r131d9fc8t4019c99ffbffa290@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: 1228747599 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.12249 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Raz wrote: > I am thinking of using XFS over a SSD disk. > 1. Can I separate xfs meta data ( not just the logging) from the SSD ? > can I put the meta on a different disk ? Are you talking about just the log (see the mkfs man page for external logs, as Justin suggested) or all metadata? For the latter, using the realtime subvolume does accomplish this (data on one volume, metadata on the other) but that's not used very often. -Eric From jpiszcz@lucidpixels.com Mon Dec 8 09:08:32 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_56,J_CHICKENPOX_75,J_CHICKENPOX_82,J_CHICKENPOX_84 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 mB8F8WY8007967 for ; Mon, 8 Dec 2008 09:08:32 -0600 X-ASG-Debug-ID: 1228748910-040d01af0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1631D16E0E67 for ; Mon, 8 Dec 2008 07:08:30 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id chUhC9Z0rHaqL1Et for ; Mon, 08 Dec 2008 07:08:30 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 3EC961003F5B1; Mon, 8 Dec 2008 10:08:30 -0500 (EST) Date: Mon, 8 Dec 2008 10:08:29 -0500 (EST) From: Justin Piszcz To: linux-xfs@oss.sgi.com cc: linux-raid@vger.kernel.org X-ASG-Orig-Subj: XFS benchmarks on 3ware 9650SE-16ML Controller: RAID 6 Subject: XFS benchmarks on 3ware 9650SE-16ML Controller: RAID 6 Message-ID: User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1228748911 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.12249 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Just one question, using -d agcount=2 seems to speedup XFS but by only a slight margin (on a 10-disk raid6 of raptor150s), the default it chooses is -d agcount=4 and when you increase the agcount, the performance decreases quite a bit. Are there any downsides to using -d agcount=2 (the smallest number allowed)? Overall question, see the benchmarks below, is it worth tweaking XFS to obtain a 3-4 second improvement on various benchmarks? Or is it best to just leave them alone? I have chosen to go with the default mkfs.xfs options as they are optimal within a few seconds of further optimizations shown below. These are more or less the raw benchmarks, I did not pretty them up in any way. ================================================================================ benchmarks.txt ================================================================================ 1. Run a single and fast bonnie++ per each test, ALL for raid6. 2. Need to first test: a. XFS filesystem creation with the different parameters. b. sunit=128, swidth=512 c. sunit=128, swidth=576 3. Then, after XFS: a. blockdev --setra 16384,32768,65536 4. Test other various 'tweaks' recommended by 3ware: a. scheduler changes (cfq,noop,deadline,as) b. echo "64" > /sys/block/sdb/queue/max_sectors_kb c. echo "512" > /sys/block/sdb/queue/nr_requests notes from websites a. Changing /sys/block/sde/queue/nr_requests from 128 to 512 does a moderate improvement. Going to higher numbers, such as 1024 does not make it better any more. b. Must apply read-ahead settings AFTER applying changes to max_sectors_kb etc. http://www.3ware.com/kb/article.aspx?id=11050 ----------------------------------------------------------------------------- benchmark: /usr/bin/time /usr/sbin/bonnie++ -d /t/test -s 16384 -m p34 -n 16:100000:16:64 > $HOME/test"$i".txt 2>&1 ----------------------------------------------------------------------------- cd / && umount /t && mkfs.xfs -f /dev/sdb1 && mount /dev/sdb1 /t chown jpiszcz:users -R /t defaults: p34:/# cat /sys/block/sdb/queue/max_sectors_kb 128 p34:/# cat /sys/block/sdb/queue/nr_requests 128 p34:/# cat /sys/block/sda/device/queue_depth (already the best/highest) 254 echo noop > /sys/block/sdb/queue/scheduler echo anticipatory > /sys/block/sdb/queue/scheduler echo deadline > /sys/block/sdb/queue/scheduler echo cfq > /sys/block/sdb/queue/scheduler # key test1: defaults: 27:22.89 elapsed (CFQ was used) test2: defaults,su=64k,sw=512: 27:34.46 elapsed (CFQ was used)**slower test3: defaults,noop: 24:26.36 elapsed (noop)*** test more test4: defaults,as: 24:22.01 elapsed (anticipatory)*** test more test5: defaults,deadline: 24:43.54 elapsed (deadline) test6: defaults,cfq: 27:23.53 elapsed (cfq) test7: defaults,noop,3run,avg: 1:13:45 elapsed (noop) (60+13.45)/3 = 24.48/avg test8: defaults,as,3run,avg: 1:14:21 elapsed (as) # future tests use noop test9: max_sectors_kb=64: 24:48.15 elapsed test10: max_sectors_kb=128: 24:26.36 elapsed (same as test3) test11: nr_requests=128: 24:26.36 elapsed (same as test3) test12: nr_requests=512: 24:22.50 elapsed (512, slight improvement) test13: nr_requests=1024: 24:22.68 elapsed (no improvement past 512) # re-test deadline once again w/optimized settings above (can deadline win?) test14: deadline+req=512: 24:21.29 elapsed (wins) [deadline=recommended] # future tests use deadline [can get it under 24.21?] # 16384 has the best re-write speed so that is what I will be using test15: same_14,setra=4096: 12:40.55 elapsed (deadline+others+setra=4096) test16: same_14,setra=16384: 11:42.24 elapsed (readahead=16384)*too_close test17: same_14,setra=32768: 11:40.70 elapsed (readahead=32768)*too_close test18: same_14,setra=65536: 11:47.66 elapsed (readahead=65536)*too_close? # all tests to use 14+readahead=16384 (recommended by 3ware) # does sunit,swidth/su,sw matter on a 3ware card? it appears not # below is for 10 disks in a RAID6 using a 64KiB stripe # same as test 16 above except use these parameters for making the filesystem test19: defaults,su=64k,sw=8: 12:06.68 elapsed (again, slower, dont bother) # same as test 16 test20: defaults,agcount=2: 11:28.02 elapsed (wow, anomaly?) test21: defaults,agcount=4: 11:42.24 elapsed (same as 16) test22: defaults,agcount=8: 12:08.67 elapsed test23: defaults,agcount=16: 11:49.64 elapsed (fewer=better in general) # redo 16,17,18 3 runs and take avg. test24: test16x3: 35:28.64 elapsed (avg=12:16.00)*3ware rec'd test25: test17x3: 35:10.75 elapsed (avg=12:10.00) test26: test18x3: 35:01.74 elapsed (avg=12:07.00) (re-write=worse) # now using results from test16+20 for all future benchmarks. test27: mount -o nobarrier: 11:45.95 elapsed (should be close to test20?) (do not specify barrier) test28: re-run of test20: 11:42.93 elapsed (agcount=2/4 no difference?) # need to run 3 tests and take average for agcount=2, agcount=4 test29: agcount=2 (x3): 34:28.51elapsed => 11.42/avg **(best) test30: agcount=4 (x3): 35:22.15elapsed => 12.14/avg # all tests use agcount=2 now # test below is with the log options shown below test31: xfs_mount_opts_1: 34:18.96 elapsed => 11.39/avg *(slightly better) these options will not be used regularly as they are mount opts, the filesystem creation options are more interesting to me, once you make them, that's typicall it, they're set with the exception of some that can be modified at mount time. # last changeable parameters: inode size & sectorsize (256,512 by default) # and naming size (4096 bytes by default) # sector sizes test32: test29+'-s size=512': 34:28.51 elapsed => 11.42/avg (same/29) test33: test29+'-s size=1024': 34:48.47 elapsed (slower) test34: test29+'-s size=2048': 34:18.40 elapsed (slightly faster) test35: test29+'-s size=4096': 34:11.92 elapsed => 11.37/avg (fastest) # and inode size test36: test29+'-i size=256': 34:28.51 elapsed => 11.42/avg (same/29) test37: test29+'-i size=512': 35:08.45 elapsed => (worse) test38: test29+'-i size=1024': 35:02.99 elapsed => 12.07/avg (worse) test39: test29+'-i size=2048': 34:41.93 elapsed => 11.47/avg (worse) # block size tests, default is 4096, is a smaller blocksize any better? test40: test29+'-b size=512': 37:47.06 elapsed => 12.47/avg - test42: test29+'-b size=1024': will not bother - test43: test29+'-b size=2048': will not bother test41: test29+'-b size=4096': 34:28.51elapsed => 11.42/avg (same as 29) # naming size tests (mainly directory tests, did not test these as it is set to 4096 and the defaults for inode,sector,block sizes seem to be optimal for the most part) xfs_mount_opts_1: defaults,noatime,logbufs=8,logbsize=262144 # results test1,16G,73586,99,505013,61,27452,6,38169,51,55322,5,629.8,0,16:100000:16/64,7246,61,+++++,+++,16773,95,7751,70,+++++,+++,10815,81 test2,16G,72826,99,493247,59,27232,6,39367,51,56890,5,610.6,0,16:100000:16/64,1857,14,+++++,+++,1220,7,1983,17,+++++,+++,13976,82 test3,16G,70669,99,519085,61,42716,7,36064,48,54080,4,626.0,0,16:100000:16/64,81663,+++++,+++,19710,89,7268,58,21372,50,8407,68 test4,16G,73554,99,514691,61,42878,7,36338,50,54848,5,365.7,0,16:100000:16/64,63851,+++++,+++,19942,94,8479,72,+++++,+++,2400,19 test5,16G,69311,98,519464,60,42081,6,35590,49,54188,4,622.2,0,16:100000:16/64,7941,64,+++++,+++,16050,91,7340,66,+++++,+++,5660,42 test6,16G,71880,98,501459,60,27424,6,38524,52,55889,5,594.6,0,16:100000:16/64,7226,54,+++++,+++,7941,36,8823,66,+++++,+++,11536,72 test7,16G,72018.0,98.3,518441.3,60.3,41961.0,6.0,35626.3,48.7,54213.7,4.3,619.7,0.0,16:100000:16/64,7996.3,61.3,0.0,0.0,15897.7,72.0,7687.3,61.7,6653.7,16.0,7408.3,58.3 test8,16G,71409.0,99.0,517795.0,60.0,42724.0,6.0,35215.3,48.7,53733.3,4.0,373.0,0.0,16:100000:16/64,7918.7,64.7,0.0,0.0,10267.7,58.0,7383.3,67.3,0.0,0.0,10234.0,77.0 test9,16G,73394,99,497319,56,41768,6,35832,49,52654,4,607.6,0,16:100000:16/64,6318,53,+++++,+++,5414,31,6988,64,+++++,+++,2064,16 test10,16G,70669,99,519085,61,42716,7,36064,48,54080,4,626.0,0,16:100000:16/64,81663,+++++,+++,19710,89,7268,58,21372,50,8407,68 test11,16G,70669,99,519085,61,42716,7,36064,48,54080,4,626.0,0,16:100000:16/64,81663,+++++,+++,19710,89,7268,58,21372,50,8407,68 test12,16G,72165,99,522318,71,42710,6,36269,49,54723,4,608.5,0,16:100000:16/64,74061,+++++,+++,16233,93,7605,66,+++++,+++,1795,15 test13,16G,73729,99,529523,73,42792,6,35624,49,54835,4,614.4,0,16:100000:16/64,74757,+++++,+++,8084,49,7803,68,+++++,+++,2367,17 test14,16G,73047,99,538036,72,42695,6,36004,49,53519,4,618.8,0,16:100000:16/64,80762,+++++,+++,20157,91,7060,59,+++++,+++,9729,73 test15,16G,73431,99,537298,72,109922,15,76890,99,179542,14,609.4,0,16:100000:16/64 8287,67,+++++,+++,8688,51,7853,66,+++++,+++,1795,13 test16,16G,73353,99,539162,72,144432,19,77645,99,218854,17,613.0,0,16:100000:16/64 8046,61,16890,41,12677,62,8257,62,+++++,+++,2602,18 test17,16G,73370,99,541903,71,152908,20,77661,99,205225,16,595.5,0,16:100000:16/64 7241,57,17943,41,19245,93,8454,69,+++++,+++,2603,20 test18,16G,73172,99,543663,71,151835,23,76110,99,212243,16,608.5,0,16:100000:16/64 7867,64,+++++,+++,16582,94,7597,67,+++++,+++,1516,12 test19,16G,73711,99,538586,72,143378,19,77618,99,220458,17,600.5,0,16:100000:16/64 1277,10,6665,15,5048,27,2321,19,+++++,+++,1378,10 test20,16G,72996,99,575247,76,159371,21,77828,99,218462,17,809.0,1,16:100000:16/64 8430,65,+++++,+++,5916,31,7909,68,+++++,+++,2491,21 test21,16G,73353,99,539162,72,144432,19,77645,99,218854,17,613.0,0,16:100000:16/64 8046,61,16890,41,12677,62,8257,62,+++++,+++,2602,18 test22,16G,68813,99,514195,68,142659,19,76527,99,212022,16,570.3,0,16:100000:16/64,7919,63,+++++,+++,6513,36,7621,66,+++++,+++,2284,16 test23,16G,71620,99,509930,68,144200,19,77249,98,212428,16,610.5,0,16:100000:16/64 6144,50,+++++,+++,17671,97,6843,57,+++++,+++,6810,33 test24,16G,70914.7,99.0,541021.7,72.7,144413.7,19.7,76949.3,99.0,219469.7,16.7,605.9,0.0,16:100000:16/64,8459.7,65.7,0.0,0.0,20287.0,92.0,8131.7,63.7,6973.3,16.3,5203.3,39.7 test25,16G,72205.0,99.0,542056.0,72.7,152582.3,20.7,77241.3,99.0,210399.3,16.7,608.8,0.0,16:100000:16/64,7440.0,60.7,6687.7,18.3,8244.3,47.3,7610.7,66.7,0.0,0.0,4485.0,31.7 test26,16G,72696.3,99.0,538011.7,71.7,150574.7,22.3,77091.0,99.0,215220.3,16.7,608.3,0.0,16:100000:16/64,8458.7,66.0,0.0,0.0,19090.7,93.0,7921.7,63.7,6303.3,15.3,4422.0,33.0 test27,16G,72231,99,573898,77,159439,21,69398,99,230125,17,834.9,0,16:100000:16/64,8561,69,+++++,+++,17847,96,8152,69,20708,49,10811,93 test28,16G,69455,99,574361,77,159450,21,76103,99,218771,16,822.9,0,16:100000:16/64 7961,68,+++++,+++,7422,49,7408,69,+++++,+++,3077,26 test29,16G,72030.3,98.7,575339.7,77.7,159421.7,21.7,76765.7,98.7,229605.3,17.0,821.2,0.7,16:100000:16/64,8238.0,68.7,0.0,0.0,9759.7,61.0,7820.3,70.0,0.0,0.0,4351.7,36.0 test30,16G,71785.7,99.0,514180.7,68.3,143635.7,19.0,76987.3,99.0,215108.0,16.0,606.1,0.0,16:100000:16/64,8346.3,66.7,0.0,0.0,16396.7,87.3,7928.0,67.3,0.0,0.0,10893.0,76.0 test31,16G,71116.0,99.0,576581.3,77.0,160511.7,21.0,76481.3,99.0,230528.7,17.0,836.2,1.0,16:100000:16/64,9056.3,69.3,0.0,0.0,19033.0,85.7,9337.0,72.7,0.0,0.0,11281.3,68.3 test32,16G,72030.3,98.7,575339.7,77.7,159421.7,21.7,76765.7,98.7,229605.3,17.0,821.2,0.7,16:100000:16/64,8238.0,68.7,0.0,0.0,9759.7,61.0,7820.3,70.0,0.0,0.0,4351.7,36.0 test33,16G,71408.3,99.0,573249.3,76.0,157130.0,21.0,75766.3,99.0,228602.3,17.3,816.1,0.7,16:100000:16/64,7892.7,67.0,8322.3,21.7,11643.7,75.0,7336.7,69.3,0.0,0.0,4493.0,37.0 test34,16G,71926.0,99.0,567184.7,75.3,159568.0,21.0,76963.7,99.0,229259.0,17.3,830.0,1.0,16:100000:16/64,8045.7,68.3,0.0,0.0,13918.0,84.3,6960.0,65.7,0.0,0.0,6410.0,54.3 test35,16G,72578.3,99.0,575499.3,76.7,158285.0,21.7,76653.3,99.0,231374.7,17.7,825.5,0.7,16:100000:16/64,8045.0,67.7,0.0,0.0,11675.7,72.7,7319.7,64.7,0.0,0.0,7244.0,59.0 test36,16G,72030.3,98.7,575339.7,77.7,159421.7,21.7,76765.7,98.7,229605.3,17.0,821.2,0.7,16:100000:16/64,8238.0,68.7,0.0,0.0,9759.7,61.0,7820.3,70.0,0.0,0.0,4351.7,36.0 test37,16G,70425.3,99.0,537817.7,72.3,152487.7,20.0,76437.7,99.0,227308.7,17.0,813.5,1.0,16:100000:16/64,7142.0,57.7,0.0,0.0,7702.7,42.3,7125.3,59.0,0.0,0.0,4676.0,35.3 test38,16G,70280.0,99.0,539463.3,73.0,152248.0,20.0,76865.7,98.7,225277.3,16.3,816.5,0.7,16:100000:16/64,7730.7,61.7,5636.3,14.7,12740.7,69.3,6141.7,53.0,10464.7,25.0,5829.0,52.3 test39,16G,71871.7,99.0,537393.0,72.3,152217.7,20.0,77026.7,99.0,228184.3,16.7,809.0,0.7,16:100000:16/64,8115.7,64.7,0.0,0.0,12403.0,68.0,6717.3,56.7,0.0,0.0,6662.7,48.7 test40,16G,61452.7,96.3,319687.3,86.3,158370.7,36.0,77324.3,98.7,228657.7,18.0,808.9,0.7,16:100000:16/64,4947.3,82.7,0.0,0.0,11052.7,83.3,5085.7,87.7,10442.7,26.0,4714.3,46.0 test41,16G,72030.3,98.7,575339.7,77.7,159421.7,21.7,76765.7,98.7,229605.3,17.0,821.2,0.7,16:100000:16/64,8238.0,68.7,0.0,0.0,9759.7,61.0,7820.3,70.0,0.0,0.0,4351.7,36.0 An untar-like test with the optimizations shown below except the mount options. real world tests: 0:40.10 elapsed 91%CPU (default mkfs.xfs) real world tests: 0:39.86 elapsed 92%CPU (mkfs.xfs -d agcount=2) real world tests: 0:41.89 elapsed 87%CPU (w/noatime,etc) Final optimizations: echo 128 > /sys/block/sdb/queue/max_sectors_kb # 128 is default echo 512 > /sys/block/sdb/queue/nr_requests # 128 is default echo 254 > /sys/block/sda/device/queue_depth # 254 is default echo deadline > /sys/block/sdb/queue/scheduler # distribution dependent blockdev --setra 16384 /dev/sdb # set readahead defaults,noatime,logbufs=8,logbsize=262144 # add to /etc/fstab Kept the defaults for mkfs.xfs: p34:~# mkfs.xfs -f /dev/sdb1 meta-data=/dev/sdb1 isize=256 agcount=4, agsize=73236819 blks = sectsz=512 attr=2 data = bsize=4096 blocks=292947275, imaxpct=5 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 log =internal log bsize=4096 blocks=32768, version=2 = sectsz=512 sunit=0 blks, lazy-count=0 realtime =none extsz=4096 blocks=0, rtextents=0 p34:~# From sandeen@sandeen.net Mon Dec 8 09:50:57 2008 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 mB8FovLF011151 for ; Mon, 8 Dec 2008 09:50:57 -0600 X-ASG-Debug-ID: 1228751456-643901a90000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BCE34E46 for ; Mon, 8 Dec 2008 07:50:56 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id oJi2Kja5EQY9gPIi for ; Mon, 08 Dec 2008 07:50:56 -0800 (PST) Received: from Liberator.local (sandeen.net [209.173.210.139]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id BCCA6A883C6; Mon, 8 Dec 2008 09:50:55 -0600 (CST) Message-ID: <493D425F.2010904@sandeen.net> Date: Mon, 08 Dec 2008 09:50:55 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Raz CC: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS over SSD Subject: Re: XFS over SSD References: <5d96567b0812080442r131d9fc8t4019c99ffbffa290@mail.gmail.com> <493D334C.5010006@sandeen.net> <5d96567b0812080711x34bb93d6vd8e4f88d9b190e9@mail.gmail.com> In-Reply-To: <5d96567b0812080711x34bb93d6vd8e4f88d9b190e9@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: 1228751456 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.12254 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Raz wrote: > On Mon, Dec 8, 2008 at 4:46 PM, Eric Sandeen wrote: >> Raz wrote: >>> I am thinking of using XFS over a SSD disk. >>> 1. Can I separate xfs meta data ( not just the logging) from the SSD ? >>> can I put the meta on a different disk ? >> Are you talking about just the log (see the mkfs man page for external >> logs, as Justin suggested) or all metadata? For the latter, using the >> realtime subvolume does accomplish this (data on one volume, metadata on >> the other) but that's not used very often. >> >> -Eric >> > I am referring to all the meta data. 128K of erase block for some block map > update is a big penalty. I do not like much rt volumes. I tried that and it is > cumbersome. UBIFS cannot handle 80GB Flash disks ( well, they say it is up to > 16GB in MTD web site) . I am about to start benchmarking the SSD with XFS > ( versus raw access ) and see how performance degrades, in read and writes. > If there was a way to set XFS meta data ( superblocks, allocation groups... > on a different device) it would have been nice, since we plan to use the SSD > as a fast IO device and data persistence is not the main thing here. > > we use XFS on all our SATA based servers, we tweak it ( extents and > raid awareness). > XFS proved to be the fastest file system for appliances that use > Multimedia files > and big IOs ( 1MB). > I have yet to play with xfs on ssd, but I would imagine that setting up the fs geometry to match the ssd preferred IO sizes and/or erase block sizes might at least help. -Eric From raziebe@gmail.com Mon Dec 8 09:59:17 2008 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 mB8FxGcr011628 for ; Mon, 8 Dec 2008 09:59:17 -0600 X-ASG-Debug-ID: 1228751955-6d7803330000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from yx-out-1718.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9452216E12E4 for ; Mon, 8 Dec 2008 07:59:15 -0800 (PST) Received: from yx-out-1718.google.com (yx-out-1718.google.com [74.125.44.158]) by cuda.sgi.com with ESMTP id SxatzLRdqvtIm2qw for ; Mon, 08 Dec 2008 07:59:15 -0800 (PST) Received: by yx-out-1718.google.com with SMTP id 36so445482yxh.32 for ; Mon, 08 Dec 2008 07:59:15 -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:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=+ikSxRcG0Q8NxnnhZjsdMhlFZZWERDC3J0KF1tX+IvI=; b=B9AVa7t4GkxJBuBfIBEiPa6W4NVc0wFZmAzLCQCX5EFN0H+NbftHIHLP6mTbShC7VL LMPZrGGEzbHs3OVCvgomAXUtlxAVz7Sr6neQIgeO3OjpBgVhk/GORQPJ87ouWtOyO2hz TxpCDOinDHNluR/wGrZ8+MN6kmmDGVLNlC5W8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=gqFxXyLTqgSsZVF6kpVs1T9gDkFpU6HflxeUcl2JqPA7/I8q76JKLcA+65Q43w9Eb5 Tt0aBYxi1ldgIX6IJw2yvuzSbq2FjPrcxZmGy4Okf1QbqfaWw6CkSVp00FmmaaCk0RzT OkhaTkGaa9J73iSEN8FtY/YEODA9SA4Epq9HE= Received: by 10.100.138.10 with SMTP id l10mr1501622and.25.1228749118156; Mon, 08 Dec 2008 07:11:58 -0800 (PST) Received: by 10.100.166.19 with HTTP; Mon, 8 Dec 2008 07:11:58 -0800 (PST) Message-ID: <5d96567b0812080711x34bb93d6vd8e4f88d9b190e9@mail.gmail.com> Date: Mon, 8 Dec 2008 17:11:58 +0200 From: Raz To: "Eric Sandeen" X-ASG-Orig-Subj: Re: XFS over SSD Subject: Re: XFS over SSD Cc: linux-xfs@oss.sgi.com In-Reply-To: <493D334C.5010006@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <5d96567b0812080442r131d9fc8t4019c99ffbffa290@mail.gmail.com> <493D334C.5010006@sandeen.net> X-Barracuda-Connect: yx-out-1718.google.com[74.125.44.158] X-Barracuda-Start-Time: 1228751955 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.12254 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Dec 8, 2008 at 4:46 PM, Eric Sandeen wrote: > Raz wrote: >> I am thinking of using XFS over a SSD disk. >> 1. Can I separate xfs meta data ( not just the logging) from the SSD ? >> can I put the meta on a different disk ? > > Are you talking about just the log (see the mkfs man page for external > logs, as Justin suggested) or all metadata? For the latter, using the > realtime subvolume does accomplish this (data on one volume, metadata on > the other) but that's not used very often. > > -Eric > I am referring to all the meta data. 128K of erase block for some block map update is a big penalty. I do not like much rt volumes. I tried that and it is cumbersome. UBIFS cannot handle 80GB Flash disks ( well, they say it is up to 16GB in MTD web site) . I am about to start benchmarking the SSD with XFS ( versus raw access ) and see how performance degrades, in read and writes. If there was a way to set XFS meta data ( superblocks, allocation groups... on a different device) it would have been nice, since we plan to use the SSD as a fast IO device and data persistence is not the main thing here. we use XFS on all our SATA based servers, we tweak it ( extents and raid awareness). XFS proved to be the fastest file system for appliances that use Multimedia files and big IOs ( 1MB). From Martin@Lichtvoll.de Mon Dec 8 14:40:07 2008 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_36, J_CHICKENPOX_43,J_CHICKENPOX_45 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 mB8Ke7WX029639 for ; Mon, 8 Dec 2008 14:40:07 -0600 X-ASG-Debug-ID: 1228768801-10e503500000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.lichtvoll.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EEB2516ED93C for ; Mon, 8 Dec 2008 12:40:02 -0800 (PST) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id aEIWmGlcPwEnyFuG for ; Mon, 08 Dec 2008 12:40:02 -0800 (PST) Received: from shambhala.lichtvoll.local (DSL01.212.114.236.144.ip-pool.NEFkom.net [212.114.236.144]) by mail.lichtvoll.de (Postfix) with ESMTPSA id C4A835AE2A; Mon, 8 Dec 2008 21:39:59 +0100 (CET) From: Martin Steigerwald To: xfs@oss.sgi.com X-ASG-Orig-Subj: benchmark: write barrier/write cache on XFS Subject: benchmark: write barrier/write cache on XFS Date: Mon, 8 Dec 2008 21:39:53 +0100 User-Agent: KMail/1.9.9 Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart8219326.HcRJf0m3BK"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200812082139.58328.Martin@Lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1228768802 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: -0.02 X-Barracuda-Spam-Status: No, SCORE=-0.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE_7580B, BSF_RULE_7580D, BSF_RULE_7582B X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.12263 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.75 BSF_RULE_7580D BODY: Custom Rule 7580D 0.75 BSF_RULE_7580B BODY: Custom Rule 7580B 0.50 BSF_RULE_7582B Custom Rule 7582B --nextPart8219326.HcRJf0m3BK Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hi! I got curious about the recent discussions about the write barrier=20 feature[1][2]. Thus I did my own benchmark this evening. Since I use XFS and tested with= =20 XFS for now only. Write barrier + write cache, no barrier + write cache,=20 no write barrier + no write cache. I just did tar -xf=20 linux-2.6.27.tar.bz2 and rm -rf linux-2.6.27. My conclusion is: At least for this metadata intensive workload enabling=20 write barries is complete nonsense for XFS filesystems, cause it runs way= =20 faster without write cache and without barriers. I am completely puzzled=20 about this, cause I always thought that barriers where meant to provide a= =20 performance improvement versus disabling write cache. I actually=20 advertised them as such in my Linux magazine article, should have benched= =20 them before it seems. Write barrier seem to be a slow down feature for=20 XFS. See for yourself. I am interested in other benchmarks like this.=20 Automating this would be good and running it for different filesystems.=20 Maybe adding some different workloads as these are highly selective=20 tests, testing with RAID systems as Justin did and of course testing with= =20 different filesystems. I think I will disable write cache and disable barriers on that ThinkPad=20 T42 and I think also other machines. IBM ThinkPad T42 with 160 GB IDE hitachi drive via libata: shambhala:~> grep "model name" /proc/cpuinfo model name : Intel(R) Pentium(R) M processor 1.80GHz shambhala:~> cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ondemand shambhala:~> cat /proc/version Linux version 2.6.27.7-tp42-toi-3.0-2008-11-25 (martin@shambhala) (gcc=20 version 4.3.2 (Debian 4.3.2-1) ) #1 PREEMPT Sun Nov 30 10:29:09 CET 2008 shambhala:~> hdparm -I /dev/sda | egrep "(Model Num|device size|power=20 manage|acoustic manage|DMA:|120 ns)" Model Number: Hitachi HTS541616J9AT00 device size with M =3D 1024*1024: 152627 MBytes device size with M =3D 1000*1000: 160041 MBytes (160 GB) Advanced power management level: 254 Recommended acoustic management value: 128, current value: 128 DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5 The default - write barrier and write cache enabled: shambhala:~> hdparm -W /dev/sda /dev/sda: write-caching =3D 1 (on) shambhala:~> hdparm -I /dev/sda | grep cache * Write cache shambhala:~> mkfs.xfs -f -L xfs -l lazy-count=3D1 /dev/sda6 meta-data=3D/dev/sda6 isize=3D256 agcount=3D4, agsize=3D134= 4188=20 blks =3D sectsz=3D512 attr=3D2 data =3D bsize=3D4096 blocks=3D5376750, imaxpct= =3D25 =3D sunit=3D0 swidth=3D0 blks naming =3Dversion 2 bsize=3D4096 log =3Dinternal log bsize=3D4096 blocks=3D2625, version=3D2 =3D sectsz=3D512 sunit=3D0 blks, lazy-coun= t=3D1 realtime =3Dnone extsz=3D4096 blocks=3D0, rtextents=3D0 shambhala:~> mount /dev/sda6 /mnt/zeit shambhala:~> grep zeit /proc/mounts /dev/sda6 /mnt/zeit xfs rw,attr2,noquota 0 0 shambhala:~> cd /mnt/zeit shambhala:/mnt/zeit> sync ; time=20 tar -xf /home/martin/Linux/Kernel/Mainline/linux-2.6.27.tar.bz2; time=20 sync tar -xf /home/martin/Linux/Kernel/Mainline/linux-2.6.27.tar.bz2 46,01s=20 user 5,59s system 41% cpu 2:03,01 total sync 0,00s user 0,18s system 3% cpu 5,303 total shambhala:/mnt/zeit> sync ; time rm -rf linux-2.6.27 ; time sync rm -rf linux-2.6.27 0,08s user 3,49s system 6% cpu 51,482 total sync 0,00s user 0,15s system 45% cpu 0,320 total shambhala:/mnt/zeit> cd shambhala:~> umount /mnt/zeit Write barriers disabled, write cache enabled: shambhala:~> hdparm -W /dev/sda /dev/sda: write-caching =3D 1 (on) shambhala:~> hdparm -I /dev/sda | grep cache * Write cache shambhala:~> mkfs.xfs -f -L xfs -l lazy-count=3D1 /dev/sda6 meta-data=3D/dev/sda6 isize=3D256 agcount=3D4, agsize=3D134= 4188=20 blks =3D sectsz=3D512 attr=3D2 data =3D bsize=3D4096 blocks=3D5376750, imaxpct= =3D25 =3D sunit=3D0 swidth=3D0 blks naming =3Dversion 2 bsize=3D4096 log =3Dinternal log bsize=3D4096 blocks=3D2625, version=3D2 =3D sectsz=3D512 sunit=3D0 blks, lazy-coun= t=3D1 realtime =3Dnone extsz=3D4096 blocks=3D0, rtextents=3D0 shambhala:~> mount -o nobarrier /dev/sda6 /mnt/zeit shambhala:~> cd /mnt/zeit shambhala:/mnt/zeit> sync ; time=20 tar -xf /home/martin/Linux/Kernel/Mainline/linux-2.6.27.tar.bz2; time=20 sync tar -xf /home/martin/Linux/Kernel/Mainline/linux-2.6.27.tar.bz2 26,77s=20 user 3,20s system 67% cpu 44,236 total sync 0,00s user 0,17s system 5% cpu 3,224 total shambhala:/mnt/zeit> sync ; time rm -rf linux-2.6.27 ; time sync rm -rf linux-2.6.27 0,05s user 3,20s system 43% cpu 7,442 total sync 0,00s user 0,14s system 44% cpu 0,309 total shambhala:/mnt/zeit> cd shambhala:~> umount /mnt/zeit Write barriers and write cache disabled: shambhala:~> hdparm -W0 /dev/sda /dev/sda: setting drive write-caching to 0 (off) write-caching =3D 0 (off) shambhala:~> hdparm -I /dev/sda | grep cache Write cache shambhala:~> mkfs.xfs -f -L xfs -l lazy-count=3D1 /dev/sda6 meta-data=3D/dev/sda6 isize=3D256 agcount=3D4, agsize=3D134= 4188=20 blks =3D sectsz=3D512 attr=3D2 data =3D bsize=3D4096 blocks=3D5376750, imaxpct= =3D25 =3D sunit=3D0 swidth=3D0 blks naming =3Dversion 2 bsize=3D4096 log =3Dinternal log bsize=3D4096 blocks=3D2625, version=3D2 =3D sectsz=3D512 sunit=3D0 blks, lazy-coun= t=3D1 realtime =3Dnone extsz=3D4096 blocks=3D0, rtextents=3D0 shambhala:~> mount -o nobarrier /dev/sda6 /mnt/zeit shambhala:~> cd /mnt/zeit shambhala:/mnt/zeit> sync ; time=20 tar -xf /home/martin/Linux/Kernel/Mainline/linux-2.6.27.tar.bz2; time=20 sync tar -xf /home/martin/Linux/Kernel/Mainline/linux-2.6.27.tar.bz2 35,22s=20 user 3,89s system 53% cpu 1:12,71 total sync 0,00s user 0,17s system 7% cpu 2,355 total shambhala:/mnt/zeit> sync ; time rm -rf linux-2.6.27 ; time sync rm -rf linux-2.6.27 0,07s user 2,82s system 12% cpu 23,391 total sync 0,00s user 0,14s system 44% cpu 0,329 total shambhala:/mnt/zeit> cd shambhala:~> umount /mnt/zeit shambhala:~> date Mo 8. Dez 21:24:42 CET 2008 [1] http://oss.sgi.com/archives/xfs/2008-12/msg00219.html [2] http://oss.sgi.com/archives/xfs/2008-12/msg00161.html or=20=20 http://lkml.org/lkml/2008/12/4/169 Ciao, --=20 Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 --nextPart8219326.HcRJf0m3BK Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkk9hhkACgkQmRvqrKWZhMdz5gCeMyJdo63zAhZuv1HQDAwV/ou1 6rcAn3m8x+orbxX0LDZEJLezUFszJRUT =lzgX -----END PGP SIGNATURE----- --nextPart8219326.HcRJf0m3BK-- From Martin@lichtvoll.de Mon Dec 8 15:43:55 2008 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_28, J_CHICKENPOX_41 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 mB8Lht5t000327 for ; Mon, 8 Dec 2008 15:43:55 -0600 X-ASG-Debug-ID: 1228772632-7ad201fa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.lichtvoll.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E71A35E5 for ; Mon, 8 Dec 2008 13:43:52 -0800 (PST) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id EoBZ14DhxEHAK0HS for ; Mon, 08 Dec 2008 13:43:52 -0800 (PST) Received: from shambhala.lichtvoll.local (DSL01.212.114.236.144.ip-pool.NEFkom.net [212.114.236.144]) by mail.lichtvoll.de (Postfix) with ESMTPSA id D38B05AE2A; Mon, 8 Dec 2008 22:43:20 +0100 (CET) From: Martin Steigerwald To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: benchmark: write barrier/write cache on XFS Subject: Re: benchmark: write barrier/write cache on XFS Date: Mon, 8 Dec 2008 22:43:14 +0100 User-Agent: KMail/1.9.9 Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org References: <200812082139.58328.Martin@Lichtvoll.de> (sfid-20081208_214015_115571_1580D367) In-Reply-To: <200812082139.58328.Martin@Lichtvoll.de> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart8041931.ao1rTqzOyJ"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200812082243.19525.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1228772633 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.12265 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- --nextPart8041931.ao1rTqzOyJ Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Am Montag 08 Dezember 2008 schrieb Martin Steigerwald: > Hi! > > I got curious about the recent discussions about the write barrier > feature[1][2]. > > Thus I did my own benchmark this evening. Since I use XFS and tested > with XFS for now only. Write barrier + write cache, no barrier + write > cache, no write barrier + no write cache. I just did tar -xf > linux-2.6.27.tar.bz2 and rm -rf linux-2.6.27. I disabled write cache and barriers for my XFS filesystems on my TP 42=20 shambhala. During that I did further tests. This time I also include IO=20 scheduler settings. They are default and have been the same during my=20 previous tests. Write cache has about 13 seconds benefit on the barrier enabled XFS for=20 the tar -xf linux-2.6.27.tar.bz2 workload but no benefit at all for the=20 rm -rf linux-2.6.27 workload! And again nobarrier and no cache wins. On a heavily used /home-XFS - I know it should have more free space: martin@shambhala:~ -> LANG=3DC df -hT /home/ Filesystem Type Size Used Avail Use% Mounted on /dev/sda5 xfs 112G 107G 5.1G 96% /home It has been grown two times - since 6 AGs instead of the default of 4: shambhala:~> xfs_info /home meta-data=3D/dev/sda5 isize=3D256 agcount=3D6, agsize=3D488= 3256=20 blks =3D sectsz=3D512 attr=3D2 data =3D bsize=3D4096 blocks=3D29299536, imaxpc= t=3D25 =3D sunit=3D0 swidth=3D0 blks naming =3Dversion 2 bsize=3D4096 log =3Dinternal bsize=3D4096 blocks=3D32768, version= =3D2 =3D sectsz=3D512 sunit=3D0 blks, lazy-coun= t=3D1 realtime =3Dnone extsz=3D4096 blocks=3D0, rtextents=3D0 IO scheduler settings: martin@shambhala:~> cat /sys/block/sda/queue/scheduler noop anticipatory deadline [cfq] martin@shambhala:~> grep "" /sys/block/sda/queue/iosched/* /sys/block/sda/queue/iosched/back_seek_max:16384 /sys/block/sda/queue/iosched/back_seek_penalty:2 /sys/block/sda/queue/iosched/fifo_expire_async:250 /sys/block/sda/queue/iosched/fifo_expire_sync:123 /sys/block/sda/queue/iosched/quantum:4 /sys/block/sda/queue/iosched/slice_async:40 /sys/block/sda/queue/iosched/slice_async_rq:2 /sys/block/sda/queue/iosched/slice_idle:6 /sys/block/sda/queue/iosched/slice_sync:100 Write barriers and no write cache: shambhala:~> hdparm -W /dev/sda /dev/sda: write-caching =3D 0 (off) shambhala:> cat /proc/mounts | egrep "(/ |home)" rootfs / rootfs rw 0 0 /dev/disk/by-uuid/7fcd9766-bf1a-426a-8a07-2c3e0c510898 / xfs=20 rw,relatime,attr2,noquota 0 0 /dev/sda5 /home xfs rw,relatime,attr2,logbufs=3D8,logbsize=3D256k,noquota 0= 0 martin@shambhala:~/Zeit> sync; time tar -xf=20 ~/Linux/Kernel/Mainline/linux-2.6.27.tar.bz2 ; time sync tar -xf ~/Linux/Kernel/Mainline/linux-2.6.27.tar.bz2 36,71s user 4,22s=20 system 36% cpu 1:51,58 total sync 0,00s user 0,05s system 0% cpu 12,689 total martin@shambhala:~/Zeit> sync; time rm -rf linux-2.6.27 ; time sync rm -rf linux-2.6.27 0,06s user 3,90s system 17% cpu 22,906 total sync 0,00s user 0,01s system 6% cpu 0,103 total Write barriers and write cache: shambhala:~> hdparm -W1 /dev/sda /dev/sda: setting drive write-caching to 1 (on) write-caching =3D 1 (on) martin@shambhala:~/Zeit> sync; time tar -xf=20 ~/Linux/Kernel/Mainline/linux-2.6.27.tar.bz2 ; time sync tar -xf ~/Linux/Kernel/Mainline/linux-2.6.27.tar.bz2 34,38s user 3,91s=20 system 38% cpu 1:38,84 total sync 0,00s user 0,04s system 0% cpu 10,493 total martin@shambhala:~/Zeit> sync; time rm -rf linux-2.6.27 ; time sync rm -rf linux-2.6.27 0,07s user 3,98s system 17% cpu 23,511 total sync 0,00s user 0,01s system 5% cpu 0,126 total No write barriers and no write cache: shambhala:> vim fstab shambhala:> mount -o remount / shambhala:> mount -o remount /home shambhala:> cat /proc/mounts | egrep "(/ |home)" rootfs / rootfs rw 0 0 /dev/disk/by-uuid/7fcd9766-bf1a-426a-8a07-2c3e0c510898 / xfs=20 rw,relatime,attr2,nobarrier,noquota 0 0 /dev/sda5 /home xfs=20 rw,relatime,attr2,nobarrier,logbufs=3D8,logbsize=3D256k,noquota 0 0 martin@shambhala:~/Zeit> sync; time tar -xf=20 ~/Linux/Kernel/Mainline/linux-2.6.27.tar.bz2 ; time sync tar -xf ~/Linux/Kernel/Mainline/linux-2.6.27.tar.bz2 30,36s user 3,31s=20 system 48% cpu 1:08,94 total sync 0,00s user 0,08s system 0% cpu 17,462 total martin@shambhala:~/Zeit> sync; time rm -rf linux-2.6.27 ; time sync rm -rf linux-2.6.27 0,07s user 3,87s system 20% cpu 19,172 total sync 0,00s user 0,01s system 4% cpu 0,142 total martin@shambhala:~> date Mo 8. Dez 22:38:06 CET 2008 Ciao, --=20 Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 --nextPart8041931.ao1rTqzOyJ Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkk9lPMACgkQmRvqrKWZhMdGpACdG0Sbfn1QSynsFIjNlHXGC1EM oXAAoLF2KDf9MK5+jpQHGrUVGOLXW9iN =Vk// -----END PGP SIGNATURE----- --nextPart8041931.ao1rTqzOyJ-- From SRS0+b7a191f62885ad41fb66+1933+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 8 16:51:57 2008 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 mB8MpvfV004562 for ; Mon, 8 Dec 2008 16:51:57 -0600 X-ASG-Debug-ID: 1228776716-603100330000-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 DF00B606 for ; Mon, 8 Dec 2008 14:51:56 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id fALiI8MBYJ9x0T25 for ; Mon, 08 Dec 2008 14:51:56 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L9own-0005ip-Pt; Mon, 08 Dec 2008 22:51:25 +0000 Date: Mon, 8 Dec 2008 17:51:25 -0500 From: Christoph Hellwig To: Lachlan McIlroy Cc: xfs-oss X-ASG-Orig-Subj: Re: [Fwd: [PATCH] Fix race in xfs_write() between direct and buffered I/O with DMAPI] Subject: Re: [Fwd: [PATCH] Fix race in xfs_write() between direct and buffered I/O with DMAPI] Message-ID: <20081208225125.GA15647@infradead.org> References: <493779B1.3010703@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <493779B1.3010703@sgi.com> 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: 1228776716 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Dec 04, 2008 at 05:33:21PM +1100, Lachlan McIlroy wrote: > --- a/fs/xfs/linux-2.6/xfs_lrw.c 2008-09-22 15:47:38.000000000 +1000 > +++ b/fs/xfs/linux-2.6/xfs_lrw.c 2008-09-22 15:50:56.000000000 +1000 > @@ -707,7 +707,6 @@ start: > } > } > > -retry: > /* We can write back this queue in page reclaim */ > current->backing_dev_info = mapping->backing_dev_info; > > @@ -763,6 +762,17 @@ retry: > if (ret == -EIOCBQUEUED && !(ioflags & IO_ISAIO)) > ret = wait_on_sync_kiocb(iocb); > > + isize = i_size_read(inode); > + if (unlikely(ret < 0 && ret != -EFAULT && *offset > isize)) > + *offset = isize; > + > + if (*offset > xip->i_size) { > + xfs_ilock(xip, XFS_ILOCK_EXCL); > + if (*offset > xip->i_size) > + xip->i_size = *offset; > + xfs_iunlock(xip, XFS_ILOCK_EXCL); > + } > + > if (ret == -ENOSPC && > DM_EVENT_ENABLED(xip, DM_EVENT_NOSPACE) && !(ioflags & IO_INVIS)) { > xfs_iunlock(xip, iolock); Moving these updates to before the dmapi nospace callout provale doesn't make any changes to the non-dmapi codepath, so good from that perspective. And as you say above it makes sense to have this update before the dmapi callout. > @@ -776,20 +786,7 @@ retry: > xfs_ilock(xip, iolock); > if (error) > goto out_unlock_internal; > - pos = xip->i_size; > - ret = 0; > - goto retry; > - } > - > - isize = i_size_read(inode); > - if (unlikely(ret < 0 && ret != -EFAULT && *offset > isize)) > - *offset = isize; > - > - if (*offset > xip->i_size) { > - xfs_ilock(xip, XFS_ILOCK_EXCL); > - if (*offset > xip->i_size) > - xip->i_size = *offset; > - xfs_iunlock(xip, XFS_ILOCK_EXCL); > + goto start; Again all this won't affect non-dmapi operations, so OK with my mainline hat on. Now if we check what start does over the old retry labels: - calls generic_write_checks. This could and should redo checks based on the new inode size, ok. - dmapi write even - shouldn't happen because eventsent is non-zero, ok. - O_DIRECT alignment validation. Superflous, but harmless, ok. - check for exclusive lock. This is what you said you wanted, and indded due to the lock dropping we need it. But why don't you duplicate this check in the dmapi case below so that we only have to go to start once instead of possibly twice? - i_new_size update - needed due to the possible i_size changes, ok - ichgtime - if time passed since the last time we might want to re-updated it, ok - zero_eof, ok - setuid clearing, superflous, but harmless. So the patch looks good to me, but as mention above it might be possible to optimize it a littler more. From SRS0+b7a191f62885ad41fb66+1933+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 8 16:54:27 2008 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 mB8MsRGe004748 for ; Mon, 8 Dec 2008 16:54:27 -0600 X-ASG-Debug-ID: 1228776866-7637036f0000-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 6B9DA1B4320C; Mon, 8 Dec 2008 14:54:26 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id trsBRK6qK4QVZ2oR; Mon, 08 Dec 2008 14:54:26 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L9ozi-0005se-5c; Mon, 08 Dec 2008 22:54:26 +0000 Date: Mon, 8 Dec 2008 17:54:26 -0500 From: Christoph Hellwig To: Lachlan McIlroy Cc: xfs-oss X-ASG-Orig-Subj: Re: [RFC, PATCH] XFS_TRANS_DEBUG fixes Subject: Re: [RFC, PATCH] XFS_TRANS_DEBUG fixes Message-ID: <20081208225426.GA22003@infradead.org> References: <4938D3E0.5050501@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4938D3E0.5050501@sgi.com> 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: 1228776866 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Fri, Dec 05, 2008 at 06:10:24PM +1100, Lachlan McIlroy wrote: > Some of the things I had to do to get it to work (and could be done some other > way) are: > - all buffers that are logged need to be mapped into kernel space so the > debugging code can make a copy of the buffer data and compare it later. > The easiest way to do that is to make all buffers mapped in xfs_bug_get_flags() > when XFS_TRANS_DEBUG is set. Need a comment similar to this next to the place that sets the flag. > - Some bit setting functions (btst()/bset()/bfset()) appear to be missing so > I've coded up some trivial versions. There maybe some linux kernel functions > that do the same thing. Just use the Linu set_bit / clear_bit / test_bit / test_and_set_bit / test_and_clear_bit helpers, or the __ prefixed versions if you don't need atomicy. Note that they want to have pointers to unsigned long passed. From markgw@sgi.com Mon Dec 8 21:04:25 2008 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 relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB934P1o019990 for ; Mon, 8 Dec 2008 21:04:25 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id 335DA8F8081 for ; Mon, 8 Dec 2008 19:04:18 -0800 (PST) Received: from [134.14.55.22] (dhcp22.melbourne.sgi.com [134.14.55.22]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA29389 for ; Tue, 9 Dec 2008 14:04:17 +1100 Message-ID: <493DE01B.6050303@sgi.com> Date: Tue, 09 Dec 2008 14:03:55 +1100 From: Mark Goodwin Reply-To: markgw@sgi.com Organization: SGI Engineering User-Agent: Thunderbird 2.0.0.18 (Windows/20081105) MIME-Version: 1.0 To: xfs-oss Subject: What's left for 2.6.29? Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit I think we need to freeze and start testing, i.e. git-cherry from the master branch over to for-linus and start some soak, stress amd regression testing. What's still left? Outstanding reviews? Dave, ...? Cheers From lachlan@sgi.com Mon Dec 8 22:01:25 2008 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 (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB941Prq023654 for ; Mon, 8 Dec 2008 22:01:25 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id CE8058F8065 for ; Mon, 8 Dec 2008 20:01:20 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id PAA00395 for ; Tue, 9 Dec 2008 15:01:18 +1100 Message-ID: <493DEDB5.8010401@sgi.com> Date: Tue, 09 Dec 2008 15:01:57 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] Remove unused tracing code Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit None of this code appears to be used anywhere so remove it. The only changes going to mainline are the one-liners in xfs_inode.[ch]. diff --git a/fs/xfs/linux-2.6/xfs_ksyms.c b/fs/xfs/linux-2.6/xfs_ksyms.c index f5c7b0a..c144a91 100644 --- a/fs/xfs/linux-2.6/xfs_ksyms.c +++ b/fs/xfs/linux-2.6/xfs_ksyms.c @@ -88,9 +88,6 @@ EXPORT_SYMBOL(xfs_itrace_hold); EXPORT_SYMBOL(xfs_itrace_rele); #endif -#ifdef XFS_ILOCK_TRACE -EXPORT_SYMBOL(xfs_ilock_trace_buf); -#endif #ifdef XFS_ALLOC_TRACE EXPORT_SYMBOL(xfs_alloc_trace_buf); #endif diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 872191b..50ceddb 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -3304,8 +3304,6 @@ corrupt_out: #ifdef XFS_ILOCK_TRACE -ktrace_t *xfs_ilock_trace_buf; - void xfs_ilock_trace(xfs_inode_t *ip, int lock, unsigned int lockflags, inst_t *ra) { diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index ae5800e..9e6d916 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h @@ -223,7 +223,6 @@ struct xfs_dquot; #if defined(XFS_ILOCK_TRACE) #define XFS_ILOCK_KTRACE_SIZE 32 -extern ktrace_t *xfs_ilock_trace_buf; extern void xfs_ilock_trace(struct xfs_inode *, int, unsigned int, inst_t *); #else #define xfs_ilock_trace(i,n,f,ra) diff --git a/fs/xfs/xfsidbg.c b/fs/xfs/xfsidbg.c index fe0a674..30aa344 100644 --- a/fs/xfs/xfsidbg.c +++ b/fs/xfs/xfsidbg.c @@ -99,7 +99,6 @@ static void xfsidbg_xbxstrace(xfs_inode_t *); #endif #ifdef XFS_ILOCK_TRACE static void xfsidbg_xilock_trace(xfs_inode_t *); -static void xfsidbg_xailock_trace(int); #endif #ifdef XFS_DIR2_TRACE static void xfsidbg_xdir2atrace(int); @@ -649,26 +648,6 @@ static int kdbm_xfs_xilock_trace( xfsidbg_xilock_trace((xfs_inode_t *) addr); return 0; } - -static int kdbm_xfs_xailock_trace( - int argc, - const char **argv) -{ - unsigned long addr; - int nextarg = 1; - long offset = 0; - int diag; - - if (argc != 1) - return KDB_ARGCOUNT; - - diag = kdbgetaddrarg(argc, argv, &nextarg, &addr, &offset, NULL); - if (diag) - return diag; - - xfsidbg_xailock_trace((int) addr); - return 0; -} #endif #ifdef XFS_LOG_TRACE @@ -2410,8 +2389,6 @@ static struct xif xfsidbg_funcs[] = { #ifdef XFS_ILOCK_TRACE { "xilocktrc",kdbm_xfs_xilock_trace, "", "Dump XFS ilock trace" }, - { "xailcktrc",kdbm_xfs_xailock_trace,"", - "Dump XFS global ilock trace" }, #endif { "xinodes", kdbm_xfs_xinodes, "", "Dump XFS inodes per mount"}, @@ -5031,63 +5008,6 @@ xfsidbg_xbxstrace(xfs_inode_t *ip) * Print out the ilock trace buffer attached to the given inode. */ static void -xfsidbg_xilock_trace_entry(ktrace_entry_t *ktep) -{ - static char *xiflags[] = { - "IOLOCK_EXCL", - "IOLOCK_SHAR", - "ILOCK_EXCL", - "ILOCK_SHAR", - "IUNLK_NONOT", - NULL - }; - - if ((__psint_t)ktep->val[0] && - (__psint_t)ktep->val[7] == 0) { - printflags((__psint_t)ktep->val[2], xiflags,"Flags "); - if ((__psint_t)ktep->val[1] == 1) - qprintf("LOCK\n"); - else if ((__psint_t)ktep->val[1] == 2) - qprintf("LOCK SHARED\n"); - else if ((__psint_t)ktep->val[1] == 3) - qprintf("UNLOCK\n"); - qprintf("ip 0x%p %llx %ld\n", - ktep->val[0], - (unsigned long long)((xfs_inode_t*)ktep->val[0])->i_ino, - (long)ktep->val[6]); - qprintf("raddr 0x%p\n", ktep->val[3]); - qprintf(" Pid %ld, cpu %ld\n", - (long)ktep->val[5], - (long)ktep->val[4]); - qprintf("-----------------------\n"); - - } else if ((__psint_t)ktep->val[7] == 1) { - if ((__psint_t)ktep->val[1] == 1) - qprintf("FlushLOCK "); - else if ((__psint_t)ktep->val[1] == 2) - qprintf("FlushTRYLOCK %ld ", - (long)ktep->val[2]); - else if ((__psint_t)ktep->val[1] == 3) - qprintf("FlushUNLOCK "); - else if ((__psint_t)ktep->val[1] == 4) - qprintf("FlushInode 0x%p", - ktep->val[2]); - else if ((__psint_t)ktep->val[1] == 5) - qprintf("FlushInodeInt "); - else qprintf("FlushUNKNOWN "); - qprintf("ip 0x%p ino %llx @ %ld\n", - ktep->val[0], - (unsigned long long)((xfs_inode_t*)ktep->val[0])->i_ino, - (long)ktep->val[6]); - qprintf("raddr 0x%p\n", ktep->val[3]); - qprintf(" Pid %ld, cpu %ld\n", - (long)ktep->val[5], - (long)ktep->val[4]); - qprintf("-----------------------\n"); - } -} - -static void xfsidbg_xilock_trace(xfs_inode_t *ip) { static char *xiflags[] = { @@ -5149,49 +5069,6 @@ xfsidbg_xilock_trace(xfs_inode_t *ip) ktep = ktrace_next(ip->i_lock_trace, &kts); } } - -/* - * Print out the last "count" entries in the inode lock trace buffer. - * The "a" is for "all" entries. - */ -static void -xfsidbg_xailock_trace(int count) -{ - ktrace_entry_t *ktep; - ktrace_snap_t kts; - int nentries; - int skip_entries; - - if (xfs_ilock_trace_buf == NULL) { - qprintf("The xfs inode lock trace buffer is not initialized\n"); return; - } - nentries = ktrace_nentries(xfs_ilock_trace_buf); - if (count == -1) { - count = nentries; - } - if ((count <= 0) || (count > nentries)) { - qprintf("Invalid count. There are %d entries.\n", nentries); - return; - } - - ktep = ktrace_first(xfs_ilock_trace_buf, &kts); - if (count != nentries) { - /* - * Skip the total minus the number to look at minus one - * for the entry returned by ktrace_first(). - */ - skip_entries = nentries - count - 1; - ktep = ktrace_skip(xfs_ilock_trace_buf, skip_entries, &kts); - if (ktep == NULL) { - qprintf("Skipped them all\n"); - return; - } - } - while (ktep != NULL) { - xfsidbg_xilock_trace_entry(ktep); - ktep = ktrace_next(xfs_ilock_trace_buf, &kts); - } -} #endif #ifdef XFS_FILESTREAMS_TRACE From lachlan@sgi.com Mon Dec 8 23:09:56 2008 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 mB959uif027427 for ; Mon, 8 Dec 2008 23:09:56 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id EE095304086; Mon, 8 Dec 2008 21:09:49 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA01499; Tue, 9 Dec 2008 16:09:42 +1100 Message-ID: <493DFDBD.7060909@sgi.com> Date: Tue, 09 Dec 2008 16:10:21 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss Subject: Re: [Fwd: [PATCH] Fix race in xfs_write() between direct and buffered I/O with DMAPI] References: <493779B1.3010703@sgi.com> <20081208225125.GA15647@infradead.org> In-Reply-To: <20081208225125.GA15647@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Christoph Hellwig wrote: > On Thu, Dec 04, 2008 at 05:33:21PM +1100, Lachlan McIlroy wrote: >> --- a/fs/xfs/linux-2.6/xfs_lrw.c 2008-09-22 15:47:38.000000000 +1000 >> +++ b/fs/xfs/linux-2.6/xfs_lrw.c 2008-09-22 15:50:56.000000000 +1000 >> @@ -707,7 +707,6 @@ start: >> } >> } >> >> -retry: >> /* We can write back this queue in page reclaim */ >> current->backing_dev_info = mapping->backing_dev_info; >> >> @@ -763,6 +762,17 @@ retry: >> if (ret == -EIOCBQUEUED && !(ioflags & IO_ISAIO)) >> ret = wait_on_sync_kiocb(iocb); >> >> + isize = i_size_read(inode); >> + if (unlikely(ret < 0 && ret != -EFAULT && *offset > isize)) >> + *offset = isize; >> + >> + if (*offset > xip->i_size) { >> + xfs_ilock(xip, XFS_ILOCK_EXCL); >> + if (*offset > xip->i_size) >> + xip->i_size = *offset; >> + xfs_iunlock(xip, XFS_ILOCK_EXCL); >> + } >> + >> if (ret == -ENOSPC && >> DM_EVENT_ENABLED(xip, DM_EVENT_NOSPACE) && !(ioflags & IO_INVIS)) { >> xfs_iunlock(xip, iolock); > > Moving these updates to before the dmapi nospace callout provale doesn't > make any changes to the non-dmapi codepath, so good from that > perspective. And as you say above it makes sense to have this update > before the dmapi callout. > >> @@ -776,20 +786,7 @@ retry: >> xfs_ilock(xip, iolock); >> if (error) >> goto out_unlock_internal; >> - pos = xip->i_size; >> - ret = 0; >> - goto retry; >> - } >> - >> - isize = i_size_read(inode); >> - if (unlikely(ret < 0 && ret != -EFAULT && *offset > isize)) >> - *offset = isize; >> - >> - if (*offset > xip->i_size) { >> - xfs_ilock(xip, XFS_ILOCK_EXCL); >> - if (*offset > xip->i_size) >> - xip->i_size = *offset; >> - xfs_iunlock(xip, XFS_ILOCK_EXCL); >> + goto start; > > Again all this won't affect non-dmapi operations, so OK with my mainline > hat on. Now if we check what start does over the old retry labels: > > - calls generic_write_checks. This could and should redo checks based > on the new inode size, ok. > - dmapi write even - shouldn't happen because eventsent is non-zero, > ok. > - O_DIRECT alignment validation. Superflous, but harmless, ok. > - check for exclusive lock. This is what you said you wanted, and > indded due to the lock dropping we need it. But why don't > you duplicate this check in the dmapi case below so that we > only have to go to start once instead of possibly twice? Thanks for looking at this Christoph. I'm not sure what you mean by duplicating the checks. I assume you mean this check: if (!need_i_mutex && (mapping->nrpages || pos > xip->i_size)) { xfs_iunlock(xip, XFS_ILOCK_EXCL|iolock); iolock = XFS_IOLOCK_EXCL; need_i_mutex = 1; mutex_lock(&inode->i_mutex); xfs_ilock(xip, XFS_ILOCK_EXCL|iolock); goto start; } This check is there because the default case for direct I/O is to acquire the iolock in shared mode. If we have work to do which requires the iolock to be held exclusive then drop the lock and get it again. Since we dropped the lock then restart. In the dmapi post-write event it doesn't matter if we have the iolock shared or exclusive - it will be dropped regardless so I don't see how checking the state of the iolock will allow us to avoid a restart. > - i_new_size update - needed due to the possible i_size changes, ok > - ichgtime - if time passed since the last time we might want to > re-updated it, ok > - zero_eof, ok > - setuid clearing, superflous, but harmless. > > So the patch looks good to me, but as mention above it might be possible > to optimize it a littler more. > > From tes@sgi.com Mon Dec 8 23:25:16 2008 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 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 mB95PFuo028603 for ; Mon, 8 Dec 2008 23:25:16 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id 22AE2304062; Mon, 8 Dec 2008 21:25:10 -0800 (PST) Received: from chapter11.melbourne.sgi.com (chapter11.melbourne.sgi.com [134.14.54.96]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA01733; Tue, 9 Dec 2008 16:25:05 +1100 Received: by chapter11.melbourne.sgi.com (Postfix, from userid 16305) id 9FC4C1C033D; Tue, 9 Dec 2008 16:25:05 +1100 (EST) To: xfs@oss.sgi.com, sgi.bugs.xfs@engr.sgi.com Subject: PARITAL TAKE 988581 - atime testing xfstests/192 Message-Id: <20081209052505.9FC4C1C033D@chapter11.melbourne.sgi.com> Date: Tue, 9 Dec 2008 16:25:05 +1100 (EST) From: tes@sgi.com (Timothy Shimmin) Test out that access time is updated correctly in memory and on disk. Date: Tue Dec 9 16:12:48 EST 2008 Workarea: emu.melbourne.sgi.com:/home/tes/isms/xfs-cmds Inspected by: Dave Chinner (with unused recommendations:) Author: tes@sgi.com The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/xfs-cmds/master-melb Modid: master-melb:xfs-cmds:32647a xfstests/192 - 1.1 - new http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfstests/192 - Test out that access time is updated correctly in memory and on disk. xfstests/192.out - 1.1 - new http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfstests/192.out - atime output for 192 xfstests/group - 1.129 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfstests/group.diff?r1=text&tr1=1.129&r2=text&tr2=1.128&f=h - add 192 and atime group From eflorac@intellique.com Tue Dec 9 01:53:49 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.7 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 mB97rnOq006242 for ; Tue, 9 Dec 2008 01:53:49 -0600 X-ASG-Debug-ID: 1228809226-6e2f03cb0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp5-g19.free.fr (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7085024CE for ; Mon, 8 Dec 2008 23:53:47 -0800 (PST) Received: from smtp5-g19.free.fr (smtp5-g19.free.fr [212.27.42.35]) by cuda.sgi.com with ESMTP id IvVHahTvCg3pkMJs for ; Mon, 08 Dec 2008 23:53:47 -0800 (PST) Received: from smtp5-g19.free.fr (localhost.localdomain [127.0.0.1]) by smtp5-g19.free.fr (Postfix) with ESMTP id 1C0333EA1CB; Tue, 9 Dec 2008 08:53:46 +0100 (CET) Received: from galadriel.home (pla78-1-82-235-234-79.fbx.proxad.net [82.235.234.79]) by smtp5-g19.free.fr (Postfix) with ESMTP id BA30B3EA1B4; Tue, 9 Dec 2008 08:53:45 +0100 (CET) Date: Tue, 9 Dec 2008 08:53:28 +0100 From: Emmanuel Florac To: Raz Cc: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS over SSD Subject: Re: XFS over SSD Message-ID: <20081209085328.001d483d@galadriel.home> In-Reply-To: <5d96567b0812080442r131d9fc8t4019c99ffbffa290@mail.gmail.com> References: <5d96567b0812080442r131d9fc8t4019c99ffbffa290@mail.gmail.com> Organization: Intellique X-Mailer: Claws Mail 3.0.2 (GTK+ 2.12.9; i686-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: smtp5-g19.free.fr[212.27.42.35] X-Barracuda-Start-Time: 1228809228 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.12304 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id mB97rnOq006242 Le Mon, 8 Dec 2008 14:42:34 +0200 vous écriviez: > I am thinking of using XFS over a SSD disk. > 1. Can I separate xfs meta data ( not just the logging) from the SSD ? > can I put the meta on a different disk ? > 2. When does a file's meta ( its block maps ) is being flushed to disk > ? can I control it ? I've made some testing on a bunch of MTRON SSDs. Actually, the best bet is to use one SSD to store the XFS log for an array of SATA or SAS drives, that's the highest performance gain ; it offers tremendous IO performance. -- -------------------------------------------------- Emmanuel Florac www.intellique.com -------------------------------------------------- From SRS0+1426bc5743abca691148+1934+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 9 03:17:29 2008 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 mB99HRoB011236 for ; Tue, 9 Dec 2008 03:17:29 -0600 X-ASG-Debug-ID: 1228814246-2db002530000-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 45EF12986; Tue, 9 Dec 2008 01:17:26 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id rXdNuOLuUw5fjt8J; Tue, 09 Dec 2008 01:17:26 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L9yib-00078v-L5; Tue, 09 Dec 2008 09:17:25 +0000 Date: Tue, 9 Dec 2008 04:17:25 -0500 From: Christoph Hellwig To: Niv Sardi Cc: Russell Cattelan , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: New XFS git tree on oss.sgi.com Subject: Re: New XFS git tree on oss.sgi.com Message-ID: <20081209091725.GA26180@infradead.org> References: <492BA7AD.5080007@sgi.com> <20081125081644.GA20644@infradead.org> <492C0B3D.3040002@thebarn.com> <492CA07F.1030803@sgi.com> <492CC201.3080304@xfs.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: 1228814247 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Now that the xfs-dev branch was updated after a while I tried a git pull an get a useless error message: hch@bigmac:~/work/xfs-dev$ git-pull You asked me to pull without telling me which branch you want to merge with, and 'branch.origin/xfs-dev.merge' in your configuration file does not tell me either. Please name which branch you want to merge on the command line and try again (e.g. 'git pull '). See git-pull(1) for details on the refspec. If you often merge with the same branch, you may want to configure the following variables in your configuration file: branch.origin/xfs-dev.remote = branch.origin/xfs-dev.merge = remote..url = remote..fetch = See git-config(1) for details. Can you please make each of the current branches a proper git tree that is easy to work with? Alternatively I'll just completely stop bothering with the dev tree if it's such a pain in the ass. From SRS0+1426bc5743abca691148+1934+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 9 03:23:07 2008 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 mB99N7T5011508 for ; Tue, 9 Dec 2008 03:23:07 -0600 X-ASG-Debug-ID: 1228814585-66a103be0000-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 8FBB716F2885; Tue, 9 Dec 2008 01:23:05 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id jEJU4Gu75w4OHipe; Tue, 09 Dec 2008 01:23:05 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L9yo5-0003oX-6S; Tue, 09 Dec 2008 09:23:05 +0000 Date: Tue, 9 Dec 2008 04:23:05 -0500 From: Christoph Hellwig To: Lachlan McIlroy Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] Remove unused tracing code Subject: Re: [PATCH] Remove unused tracing code Message-ID: <20081209092305.GB23915@infradead.org> References: <493DEDB5.8010401@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <493DEDB5.8010401@sgi.com> 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: 1228814585 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Tue, Dec 09, 2008 at 03:01:57PM +1100, Lachlan McIlroy wrote: > None of this code appears to be used anywhere so remove it. > The only changes going to mainline are the one-liners in xfs_inode.[ch]. Looks good. From SRS0+1426bc5743abca691148+1934+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 9 03:23:12 2008 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 mB99NCq8011518 for ; Tue, 9 Dec 2008 03:23:12 -0600 X-ASG-Debug-ID: 1228814591-2dbd02580000-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 2482822E0 for ; Tue, 9 Dec 2008 01:23:12 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id S4046OTVFxTWqfZI for ; Tue, 09 Dec 2008 01:23:12 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L9yng-0002qD-PY; Tue, 09 Dec 2008 09:22:40 +0000 Date: Tue, 9 Dec 2008 04:22:40 -0500 From: Christoph Hellwig To: Lachlan McIlroy Cc: Christoph Hellwig , xfs-oss X-ASG-Orig-Subj: Re: [Fwd: [PATCH] Fix race in xfs_write() between direct and buffered I/O with DMAPI] Subject: Re: [Fwd: [PATCH] Fix race in xfs_write() between direct and buffered I/O with DMAPI] Message-ID: <20081209092240.GA23915@infradead.org> References: <493779B1.3010703@sgi.com> <20081208225125.GA15647@infradead.org> <493DFDBD.7060909@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <493DFDBD.7060909@sgi.com> 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: 1228814592 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Tue, Dec 09, 2008 at 04:10:21PM +1100, Lachlan McIlroy wrote: > Thanks for looking at this Christoph. > > I'm not sure what you mean by duplicating the checks. I assume you > mean this check: > > if (!need_i_mutex && (mapping->nrpages || pos > xip->i_size)) { > xfs_iunlock(xip, XFS_ILOCK_EXCL|iolock); > iolock = XFS_IOLOCK_EXCL; > need_i_mutex = 1; > mutex_lock(&inode->i_mutex); > xfs_ilock(xip, XFS_ILOCK_EXCL|iolock); > goto start; > } Yes. > This check is there because the default case for direct I/O is to > acquire the iolock in shared mode. If we have work to do which > requires the iolock to be held exclusive then drop the lock and get > it again. Since we dropped the lock then restart. > > In the dmapi post-write event it doesn't matter if we have the > iolock shared or exclusive - it will be dropped regardless so I > don't see how checking the state of the iolock will allow us to > avoid a restart. All very true, but it doesn't matter :) When you do the goto start after the dmapi post event you will run through the above check anyway, and take the lock exclusive even if you don't need it. By doing the check right after the dmapi even you only run through the sequence of checks leading to the above one guaranteed once, instead of potentially twice (in addition to the initial once or twice before the dmapi event). Alternatively you could also have a flag that sais don't bother with taking the lock exclusive that gets set after the dmapi nospace even code. From SRS0+1426bc5743abca691148+1934+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 9 03:48:02 2008 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 mB99m2d2012815 for ; Tue, 9 Dec 2008 03:48:02 -0600 X-ASG-Debug-ID: 1228816081-35bc03670000-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 51D7316F371F for ; Tue, 9 Dec 2008 01:48:01 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id gV4UC8lapTyAmguI for ; Tue, 09 Dec 2008 01:48:01 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L9zCD-0005V2-1A for xfs@oss.sgi.com; Tue, 09 Dec 2008 09:48:01 +0000 Message-Id: <20081209094729.939583000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 09 Dec 2008 04:47:29 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 0/5] Patch queue for 2.6.29 Subject: [patch 0/5] Patch queue for 2.6.29 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: 1228816081 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com These are my outstanding patches for 2.6.29. The first two have already been rewied by Dave, the others still need review. -- From SRS0+1426bc5743abca691148+1934+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 9 03:48:03 2008 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_63 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 mB99m2Ar012817 for ; Tue, 9 Dec 2008 03:48:03 -0600 X-ASG-Debug-ID: 1228816081-2dc602990000-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 9A838738 for ; Tue, 9 Dec 2008 01:48:01 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 0ChFf9krfsQZQqov for ; Tue, 09 Dec 2008 01:48:01 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L9zCD-0005VZ-6X for xfs@oss.sgi.com; Tue, 09 Dec 2008 09:48:01 +0000 Message-Id: <20081209094801.116064000@bombadil.infradead.org> References: <20081209094729.939583000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 09 Dec 2008 04:47:30 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 1/5] replace b_fspriv with b_mount Subject: [patch 1/5] replace b_fspriv with b_mount Content-Disposition: inline; filename=xfs-add-bp_mount-field 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: 1228816081 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Replace the b_fspriv pointer and it's ugly accessors with a properly types xfs_mount pointer. Also switch log reocvery over to it instead of using b_fspriv for the mount pointer. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Index: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_buf.c =================================================================== --- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_buf.c 2008-11-15 15:27:32.000000000 +0100 +++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_buf.c 2008-11-15 15:28:01.000000000 +0100 @@ -1085,7 +1085,7 @@ xfs_bawrite( bp->b_flags &= ~(XBF_READ | XBF_DELWRI | XBF_READ_AHEAD); bp->b_flags |= (XBF_WRITE | XBF_ASYNC | _XBF_RUN_QUEUES); - bp->b_fspriv3 = mp; + bp->b_mount = mp; bp->b_strat = xfs_bdstrat_cb; return xfs_bdstrat_cb(bp); } @@ -1098,7 +1098,7 @@ xfs_bdwrite( XB_TRACE(bp, "bdwrite", 0); bp->b_strat = xfs_bdstrat_cb; - bp->b_fspriv3 = mp; + bp->b_mount = mp; bp->b_flags &= ~XBF_READ; bp->b_flags |= (XBF_DELWRI | XBF_ASYNC); Index: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_buf.h =================================================================== --- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_buf.h 2008-11-15 15:28:08.000000000 +0100 +++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_buf.h 2008-11-15 15:29:12.000000000 +0100 @@ -168,7 +168,7 @@ typedef struct xfs_buf { struct completion b_iowait; /* queue for I/O waiters */ void *b_fspriv; void *b_fspriv2; - void *b_fspriv3; + struct xfs_mount *b_mount; unsigned short b_error; /* error code on I/O */ unsigned int b_page_count; /* size of page array */ unsigned int b_offset; /* page offset in first page */ @@ -335,8 +335,6 @@ extern void xfs_buf_trace(xfs_buf_t *, c #define XFS_BUF_SET_FSPRIVATE(bp, val) ((bp)->b_fspriv = (void*)(val)) #define XFS_BUF_FSPRIVATE2(bp, type) ((type)(bp)->b_fspriv2) #define XFS_BUF_SET_FSPRIVATE2(bp, val) ((bp)->b_fspriv2 = (void*)(val)) -#define XFS_BUF_FSPRIVATE3(bp, type) ((type)(bp)->b_fspriv3) -#define XFS_BUF_SET_FSPRIVATE3(bp, val) ((bp)->b_fspriv3 = (void*)(val)) #define XFS_BUF_SET_START(bp) do { } while (0) #define XFS_BUF_SET_BRELSE_FUNC(bp, func) ((bp)->b_relse = (func)) Index: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_lrw.c =================================================================== --- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_lrw.c 2008-11-15 15:25:29.000000000 +0100 +++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_lrw.c 2008-11-15 15:26:27.000000000 +0100 @@ -847,13 +847,7 @@ retry: int xfs_bdstrat_cb(struct xfs_buf *bp) { - xfs_mount_t *mp; - - mp = XFS_BUF_FSPRIVATE3(bp, xfs_mount_t *); - if (!XFS_FORCED_SHUTDOWN(mp)) { - xfs_buf_iorequest(bp); - return 0; - } else { + if (XFS_FORCED_SHUTDOWN(bp->b_mount)) { xfs_buftrace("XFS__BDSTRAT IOERROR", bp); /* * Metadata write that didn't get logged but @@ -866,6 +860,9 @@ xfs_bdstrat_cb(struct xfs_buf *bp) else return (xfs_bioerror(bp)); } + + xfs_buf_iorequest(bp); + return 0; } /* Index: linux-2.6-xfs/fs/xfs/xfs_buf_item.c =================================================================== --- linux-2.6-xfs.orig/fs/xfs/xfs_buf_item.c 2008-11-15 15:24:38.000000000 +0100 +++ linux-2.6-xfs/fs/xfs/xfs_buf_item.c 2008-11-15 15:25:05.000000000 +0100 @@ -707,8 +707,8 @@ xfs_buf_item_init( * the first. If we do already have one, there is * nothing to do here so return. */ - if (XFS_BUF_FSPRIVATE3(bp, xfs_mount_t *) != mp) - XFS_BUF_SET_FSPRIVATE3(bp, mp); + if (bp->b_mount != mp) + bp->b_mount = mp; XFS_BUF_SET_BDSTRAT_FUNC(bp, xfs_bdstrat_cb); if (XFS_BUF_FSPRIVATE(bp, void *) != NULL) { lip = XFS_BUF_FSPRIVATE(bp, xfs_log_item_t *); Index: linux-2.6-xfs/fs/xfs/xfs_rw.c =================================================================== --- linux-2.6-xfs.orig/fs/xfs/xfs_rw.c 2008-11-15 15:26:37.000000000 +0100 +++ linux-2.6-xfs/fs/xfs/xfs_rw.c 2008-11-15 15:27:17.000000000 +0100 @@ -406,7 +406,7 @@ xfs_bwrite( * XXXsup how does this work for quotas. */ XFS_BUF_SET_BDSTRAT_FUNC(bp, xfs_bdstrat_cb); - XFS_BUF_SET_FSPRIVATE3(bp, mp); + bp->b_mount = mp; XFS_BUF_WRITE(bp); if ((error = XFS_bwrite(bp))) { Index: linux-2.6-xfs/fs/xfs/xfs_log_recover.c =================================================================== --- linux-2.6-xfs.orig/fs/xfs/xfs_log_recover.c 2008-11-15 15:31:41.000000000 +0100 +++ linux-2.6-xfs/fs/xfs/xfs_log_recover.c 2008-11-15 15:35:12.000000000 +0100 @@ -267,21 +267,16 @@ STATIC void xlog_recover_iodone( struct xfs_buf *bp) { - xfs_mount_t *mp; - - ASSERT(XFS_BUF_FSPRIVATE(bp, void *)); - if (XFS_BUF_GETERROR(bp)) { /* * We're not going to bother about retrying * this during recovery. One strike! */ - mp = XFS_BUF_FSPRIVATE(bp, xfs_mount_t *); xfs_ioerror_alert("xlog_recover_iodone", - mp, bp, XFS_BUF_ADDR(bp)); - xfs_force_shutdown(mp, SHUTDOWN_META_IO_ERROR); + bp->b_mount, bp, XFS_BUF_ADDR(bp)); + xfs_force_shutdown(bp->b_mount, SHUTDOWN_META_IO_ERROR); } - XFS_BUF_SET_FSPRIVATE(bp, NULL); + bp->b_mount = NULL; XFS_BUF_CLR_IODONE_FUNC(bp); xfs_biodone(bp); } @@ -2225,9 +2220,8 @@ xlog_recover_do_buffer_trans( XFS_BUF_STALE(bp); error = xfs_bwrite(mp, bp); } else { - ASSERT(XFS_BUF_FSPRIVATE(bp, void *) == NULL || - XFS_BUF_FSPRIVATE(bp, xfs_mount_t *) == mp); - XFS_BUF_SET_FSPRIVATE(bp, mp); + ASSERT(bp->b_mount == NULL || bp->b_mount == mp); + bp->b_mount = mp; XFS_BUF_SET_IODONE_FUNC(bp, xlog_recover_iodone); xfs_bdwrite(mp, bp); } @@ -2490,9 +2484,8 @@ xlog_recover_do_inode_trans( write_inode_buffer: if (ITEM_TYPE(item) == XFS_LI_INODE) { - ASSERT(XFS_BUF_FSPRIVATE(bp, void *) == NULL || - XFS_BUF_FSPRIVATE(bp, xfs_mount_t *) == mp); - XFS_BUF_SET_FSPRIVATE(bp, mp); + ASSERT(bp->b_mount == NULL || bp->b_mount == mp); + bp->b_mount = mp; XFS_BUF_SET_IODONE_FUNC(bp, xlog_recover_iodone); xfs_bdwrite(mp, bp); } else { @@ -2623,9 +2616,8 @@ xlog_recover_do_dquot_trans( memcpy(ddq, recddq, item->ri_buf[1].i_len); ASSERT(dq_f->qlf_size == 2); - ASSERT(XFS_BUF_FSPRIVATE(bp, void *) == NULL || - XFS_BUF_FSPRIVATE(bp, xfs_mount_t *) == mp); - XFS_BUF_SET_FSPRIVATE(bp, mp); + ASSERT(bp->b_mount == NULL || bp->b_mount == mp); + bp->b_mount = mp; XFS_BUF_SET_IODONE_FUNC(bp, xlog_recover_iodone); xfs_bdwrite(mp, bp); -- From SRS0+1426bc5743abca691148+1934+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 9 03:48:03 2008 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 mB99m2fc012823 for ; Tue, 9 Dec 2008 03:48:03 -0600 X-ASG-Debug-ID: 1228816081-2db802af0000-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 AE47973A for ; Tue, 9 Dec 2008 01:48:01 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 4vfnu5lveay3phHE for ; Tue, 09 Dec 2008 01:48:01 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L9zCD-0005W0-Ar for xfs@oss.sgi.com; Tue, 09 Dec 2008 09:48:01 +0000 Message-Id: <20081209094801.249246000@bombadil.infradead.org> References: <20081209094729.939583000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 09 Dec 2008 04:47:31 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 2/5] simplify projid check in xfs_rename Subject: [patch 2/5] simplify projid check in xfs_rename Content-Disposition: inline; filename=xfs-rename-projid-check 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: 1228816081 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Check for the project ID after attaching all inodes to the transaction. That way the unlock in the error case is done by the transaction subsystem, which guaratees that is uses the right flags (which was wrong from day one of this check), and avoids having special code unlocking an array of inodes with potential duplicates. Attaching the inode first is the method used by xfs_rename and the other namespace methods all other error that require multiple locked inodes. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Index: xfs/fs/xfs/xfs_rename.c =================================================================== --- xfs.orig/fs/xfs/xfs_rename.c 2008-12-03 23:26:34.000000000 +0100 +++ xfs/fs/xfs/xfs_rename.c 2008-12-03 23:29:09.000000000 +0100 @@ -42,31 +42,6 @@ /* - * Given an array of up to 4 inode pointers, unlock the pointed to inodes. - * If there are fewer than 4 entries in the array, the empty entries will - * be at the end and will have NULL pointers in them. - */ -STATIC void -xfs_rename_unlock4( - xfs_inode_t **i_tab, - uint lock_mode) -{ - int i; - - xfs_iunlock(i_tab[0], lock_mode); - for (i = 1; i < 4; i++) { - if (i_tab[i] == NULL) - break; - - /* - * Watch out for duplicate entries in the table. - */ - if (i_tab[i] != i_tab[i-1]) - xfs_iunlock(i_tab[i], lock_mode); - } -} - -/* * Enter all inodes for a rename transaction into a sorted array. */ STATIC void @@ -205,19 +180,6 @@ xfs_rename( xfs_lock_inodes(inodes, num_inodes, XFS_ILOCK_EXCL); /* - * If we are using project inheritance, we only allow renames - * into our tree when the project IDs are the same; else the - * tree quota mechanism would be circumvented. - */ - if (unlikely((target_dp->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) && - (target_dp->i_d.di_projid != src_ip->i_d.di_projid))) { - error = XFS_ERROR(EXDEV); - xfs_rename_unlock4(inodes, XFS_ILOCK_EXCL); - xfs_trans_cancel(tp, cancel_flags); - goto std_return; - } - - /* * Join all the inodes to the transaction. From this point on, * we can rely on either trans_commit or trans_cancel to unlock * them. Note that we need to add a vnode reference to the @@ -242,6 +204,17 @@ xfs_rename( } /* + * If we are using project inheritance, we only allow renames + * into our tree when the project IDs are the same; else the + * tree quota mechanism would be circumvented. + */ + if (unlikely((target_dp->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) && + (target_dp->i_d.di_projid != src_ip->i_d.di_projid))) { + error = XFS_ERROR(EXDEV); + goto error_return; + } + + /* * Set up the target. */ if (target_ip == NULL) { -- From SRS0+1426bc5743abca691148+1934+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 9 03:48:33 2008 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 mB99mWE8012889 for ; Tue, 9 Dec 2008 03:48:33 -0600 X-ASG-Debug-ID: 1228816112-2dc302a90000-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 4A462742 for ; Tue, 9 Dec 2008 01:48:32 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id MlKKiDIFxubKDC8R for ; Tue, 09 Dec 2008 01:48:32 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L9zCD-0005WS-Ey for xfs@oss.sgi.com; Tue, 09 Dec 2008 09:48:01 +0000 Message-Id: <20081209094801.381484000@bombadil.infradead.org> References: <20081209094729.939583000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 09 Dec 2008 04:47:32 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 3/5] resync headers with libxfs Subject: [patch 3/5] resync headers with libxfs Content-Disposition: inline; filename=xfs-resync-with-xfs-cmds 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: 1228816112 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com - xfs_sb.h add the XFS_SB_VERSION2_PARENTBIT features2 that has been around in userspace for some time - xfs_inode.h: move a few things out of __KERNEL__ that are needed by userspace - xfs_mount.h: only include xfs_sync.h under __KERNEL__ - xfs_inode.c: minor whitespace fixup. I accidentaly changes this when importing this file for use by userspace. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_sb.h =================================================================== --- xfs.orig/fs/xfs/xfs_sb.h 2008-12-04 08:03:24.000000000 +0100 +++ xfs/fs/xfs/xfs_sb.h 2008-12-06 13:22:03.000000000 +0100 @@ -79,6 +79,7 @@ struct xfs_mount; #define XFS_SB_VERSION2_LAZYSBCOUNTBIT 0x00000002 /* Superblk counters */ #define XFS_SB_VERSION2_RESERVED4BIT 0x00000004 #define XFS_SB_VERSION2_ATTR2BIT 0x00000008 /* Inline attr rework */ +#define XFS_SB_VERSION2_PARENTBIT 0x00000010 /* parent pointers */ #define XFS_SB_VERSION2_OKREALFBITS \ (XFS_SB_VERSION2_LAZYSBCOUNTBIT | \ Index: xfs/fs/xfs/xfs_inode.h =================================================================== --- xfs.orig/fs/xfs/xfs_inode.h 2008-12-05 17:19:55.000000000 +0100 +++ xfs/fs/xfs/xfs_inode.h 2008-12-06 13:22:35.000000000 +0100 @@ -483,12 +483,6 @@ static inline void xfs_ifunlock(xfs_inod ((pip)->i_d.di_mode & S_ISGID)) /* - * Flags for xfs_iget() - */ -#define XFS_IGET_CREATE 0x1 -#define XFS_IGET_BULKSTAT 0x2 - -/* * xfs_iget.c prototypes. */ xfs_inode_t *xfs_inode_incore(struct xfs_mount *, xfs_ino_t, @@ -509,8 +503,6 @@ void xfs_ireclaim(xfs_inode_t *); /* * xfs_inode.c prototypes. */ -int xfs_iread(struct xfs_mount *, struct xfs_trans *, - struct xfs_inode *, xfs_daddr_t, uint); int xfs_ialloc(struct xfs_trans *, xfs_inode_t *, mode_t, xfs_nlink_t, xfs_dev_t, struct cred *, xfs_prid_t, int, struct xfs_buf **, boolean_t *, xfs_inode_t **); @@ -583,12 +575,20 @@ do { \ #endif /* __KERNEL__ */ +/* + * Flags for xfs_iget() + */ +#define XFS_IGET_CREATE 0x1 +#define XFS_IGET_BULKSTAT 0x2 + int xfs_inotobp(struct xfs_mount *, struct xfs_trans *, xfs_ino_t, struct xfs_dinode **, struct xfs_buf **, int *, uint); int xfs_itobp(struct xfs_mount *, struct xfs_trans *, struct xfs_inode *, struct xfs_dinode **, struct xfs_buf **, uint); +int xfs_iread(struct xfs_mount *, struct xfs_trans *, + struct xfs_inode *, xfs_daddr_t, uint); void xfs_dinode_from_disk(struct xfs_icdinode *, struct xfs_dinode *); void xfs_dinode_to_disk(struct xfs_dinode *, Index: xfs/fs/xfs/xfs_inode.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode.c 2008-12-04 14:50:44.000000000 +0100 +++ xfs/fs/xfs/xfs_inode.c 2008-12-06 13:24:23.000000000 +0100 @@ -870,7 +870,7 @@ xfs_iread( * around for a while. This helps to keep recently accessed * meta-data in-core longer. */ - XFS_BUF_SET_REF(bp, XFS_INO_REF); + XFS_BUF_SET_REF(bp, XFS_INO_REF); /* * Use xfs_trans_brelse() to release the buffer containing the Index: xfs/fs/xfs/xfs_mount.h =================================================================== --- xfs.orig/fs/xfs/xfs_mount.h 2008-12-05 17:19:56.000000000 +0100 +++ xfs/fs/xfs/xfs_mount.h 2008-12-06 13:31:27.000000000 +0100 @@ -18,8 +18,6 @@ #ifndef __XFS_MOUNT_H__ #define __XFS_MOUNT_H__ -#include "xfs_sync.h" - typedef struct xfs_trans_reservations { uint tr_write; /* extent alloc trans */ uint tr_itruncate; /* truncate trans */ @@ -53,6 +51,8 @@ typedef struct xfs_trans_reservations { #else /* __KERNEL__ */ +#include "xfs_sync.h" + struct cred; struct log; struct xfs_mount_args; -- From SRS0+1426bc5743abca691148+1934+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 9 03:48:35 2008 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 mB99mXfI012896 for ; Tue, 9 Dec 2008 03:48:35 -0600 X-ASG-Debug-ID: 1228816112-2db802b00000-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 92912D9A for ; Tue, 9 Dec 2008 01:48:32 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id fFVfW6ThL7XU7OQL for ; Tue, 09 Dec 2008 01:48:32 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L9zCD-0005XK-NV for xfs@oss.sgi.com; Tue, 09 Dec 2008 09:48:01 +0000 Message-Id: <20081209094801.643772000@bombadil.infradead.org> References: <20081209094729.939583000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 09 Dec 2008 04:47:34 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 5/5] use inode_change_ok for setattr permission checking Subject: [patch 5/5] use inode_change_ok for setattr permission checking Content-Disposition: inline; filename=xfs-setattr-use-inode_change_ok 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: 1228816112 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Instead of implementing our own checks use inode_change_ok to check for necessary permission in setattr. There is a slight change in behaviour as inode_change_ok doesn't allow i_mode updates to add the suid or sgid without superuser privilegues while the old XFS code just stripped away those bits from the file mode. (First sent on Semptember 29th) Signed-off-by: Christoph Hellwig Index: xfs-master/fs/xfs/xfs_vnodeops.c =================================================================== --- xfs-master.orig/fs/xfs/xfs_vnodeops.c 2008-12-02 14:00:52.000000000 +0100 +++ xfs-master/fs/xfs/xfs_vnodeops.c 2008-12-02 14:00:52.000000000 +0100 @@ -70,7 +70,6 @@ xfs_setattr( gid_t gid=0, igid=0; int timeflags = 0; struct xfs_dquot *udqp, *gdqp, *olddquot1, *olddquot2; - int file_owner; int need_iolock = 1; xfs_itrace_entry(ip); @@ -81,6 +80,10 @@ xfs_setattr( if (XFS_FORCED_SHUTDOWN(mp)) return XFS_ERROR(EIO); + code = -inode_change_ok(inode, iattr); + if (code) + return code; + olddquot1 = olddquot2 = NULL; udqp = gdqp = NULL; @@ -158,56 +161,6 @@ xfs_setattr( xfs_ilock(ip, lock_flags); - /* boolean: are we the file owner? */ - file_owner = (current_fsuid() == ip->i_d.di_uid); - - /* - * Change various properties of a file. - * Only the owner or users with CAP_FOWNER - * capability may do these things. - */ - if (mask & (ATTR_MODE|ATTR_UID|ATTR_GID)) { - /* - * CAP_FOWNER overrides the following restrictions: - * - * The user ID of the calling process must be equal - * to the file owner ID, except in cases where the - * CAP_FSETID capability is applicable. - */ - if (!file_owner && !capable(CAP_FOWNER)) { - code = XFS_ERROR(EPERM); - goto error_return; - } - - /* - * CAP_FSETID overrides the following restrictions: - * - * The effective user ID of the calling process shall match - * the file owner when setting the set-user-ID and - * set-group-ID bits on that file. - * - * The effective group ID or one of the supplementary group - * IDs of the calling process shall match the group owner of - * the file when setting the set-group-ID bit on that file - */ - if (mask & ATTR_MODE) { - mode_t m = 0; - - if ((iattr->ia_mode & S_ISUID) && !file_owner) - m |= S_ISUID; - if ((iattr->ia_mode & S_ISGID) && - !in_group_p((gid_t)ip->i_d.di_gid)) - m |= S_ISGID; -#if 0 - /* Linux allows this, Irix doesn't. */ - if ((iattr->ia_mode & S_ISVTX) && !S_ISDIR(ip->i_d.di_mode)) - m |= S_ISVTX; -#endif - if (m && !capable(CAP_FSETID)) - iattr->ia_mode &= ~m; - } - } - /* * Change file ownership. Must be the owner or privileged. */ @@ -224,22 +177,6 @@ xfs_setattr( uid = (mask & ATTR_UID) ? iattr->ia_uid : iuid; /* - * CAP_CHOWN overrides the following restrictions: - * - * If _POSIX_CHOWN_RESTRICTED is defined, this capability - * shall override the restriction that a process cannot - * change the user ID of a file it owns and the restriction - * that the group ID supplied to the chown() function - * shall be equal to either the group ID or one of the - * supplementary group IDs of the calling process. - */ - if ((iuid != uid || - (igid != gid && !in_group_p((gid_t)gid))) && - !capable(CAP_CHOWN)) { - code = XFS_ERROR(EPERM); - goto error_return; - } - /* * Do a quota reservation only if uid/gid is actually * going to change. */ @@ -276,36 +213,22 @@ xfs_setattr( code = XFS_ERROR(EINVAL); goto error_return; } + /* * Make sure that the dquots are attached to the inode. */ - if ((code = XFS_QM_DQATTACH(mp, ip, XFS_QMOPT_ILOCKED))) + code = XFS_QM_DQATTACH(mp, ip, XFS_QMOPT_ILOCKED); + if (code) goto error_return; - } - - /* - * Change file access or modified times. - */ - if (mask & (ATTR_ATIME|ATTR_MTIME)) { - if (!file_owner) { - if ((mask & (ATTR_MTIME_SET|ATTR_ATIME_SET)) && - !capable(CAP_FOWNER)) { - code = XFS_ERROR(EPERM); - goto error_return; - } - } - } - /* - * Now we can make the changes. Before we join the inode - * to the transaction, if ATTR_SIZE is set then take care of - * the part of the truncation that must be done without the - * inode lock. This needs to be done before joining the inode - * to the transaction, because the inode cannot be unlocked - * once it is a part of the transaction. - */ - if (mask & ATTR_SIZE) { - code = 0; + /* + * Now we can make the changes. Before we join the inode + * to the transaction, if ATTR_SIZE is set then take care of + * the part of the truncation that must be done without the + * inode lock. This needs to be done before joining the inode + * to the transaction, because the inode cannot be unlocked + * once it is a part of the transaction. + */ if (iattr->ia_size > ip->i_size) { /* * Do the first part of growing a file: zero any data @@ -360,17 +283,10 @@ xfs_setattr( } commit_flags = XFS_TRANS_RELEASE_LOG_RES; xfs_ilock(ip, XFS_ILOCK_EXCL); - } - if (tp) { xfs_trans_ijoin(tp, ip, lock_flags); xfs_trans_ihold(tp, ip); - } - /* - * Truncate file. Must have write permission and not be a directory. - */ - if (mask & ATTR_SIZE) { /* * Only change the c/mtime if we are changing the size * or we are explicitly asked to change it. This handles @@ -410,20 +326,9 @@ xfs_setattr( */ xfs_iflags_set(ip, XFS_ITRUNCATED); } - } - - /* - * Change file access modes. - */ - if (mask & ATTR_MODE) { - ip->i_d.di_mode &= S_IFMT; - ip->i_d.di_mode |= iattr->ia_mode & ~S_IFMT; - - inode->i_mode &= S_IFMT; - inode->i_mode |= iattr->ia_mode & ~S_IFMT; - - xfs_trans_log_inode (tp, ip, XFS_ILOG_CORE); - timeflags |= XFS_ICHGTIME_CHG; + } else if (tp) { + xfs_trans_ijoin(tp, ip, lock_flags); + xfs_trans_ihold(tp, ip); } /* @@ -471,6 +376,24 @@ xfs_setattr( timeflags |= XFS_ICHGTIME_CHG; } + /* + * Change file access modes. + */ + if (mask & ATTR_MODE) { + umode_t mode = iattr->ia_mode; + + if (!in_group_p(inode->i_gid) && !capable(CAP_FSETID)) + mode &= ~S_ISGID; + + ip->i_d.di_mode &= S_IFMT; + ip->i_d.di_mode |= mode & ~S_IFMT; + + inode->i_mode &= S_IFMT; + inode->i_mode |= mode & ~S_IFMT; + + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); + timeflags |= XFS_ICHGTIME_CHG; + } /* * Change file access or modified times. -- From SRS0+1426bc5743abca691148+1934+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 9 03:49:33 2008 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 mB99nXlc013127 for ; Tue, 9 Dec 2008 03:49:33 -0600 X-ASG-Debug-ID: 1228816172-2dbb02b00000-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 7D1141017; Tue, 9 Dec 2008 01:49:32 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id gouPB7KfD3NPObFw; Tue, 09 Dec 2008 01:49:32 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L9zDg-0008W2-6y; Tue, 09 Dec 2008 09:49:32 +0000 Date: Tue, 9 Dec 2008 04:49:32 -0500 From: Christoph Hellwig To: Mark Goodwin Cc: xfs-oss X-ASG-Orig-Subj: Re: What's left for 2.6.29? Subject: Re: What's left for 2.6.29? Message-ID: <20081209094932.GA21925@infradead.org> References: <493DE01B.6050303@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <493DE01B.6050303@sgi.com> 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: 1228816172 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Tue, Dec 09, 2008 at 02:03:55PM +1100, Mark Goodwin wrote: > > I think we need to freeze and start testing, i.e. git-cherry from > the master branch over to for-linus and start some soak, stress > amd regression testing. What's still left? Outstanding reviews? I've resent my current 2.6.29 queue. > Dave, ...? Dave, a while ago you mentioned you still had some sort of check in xfs_iread pending from the new inode cache, but I don't remember the details. Maybe you could find and submit that one again? From SRS0+1426bc5743abca691148+1934+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 9 03:56:18 2008 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 mB99uI3E013637 for ; Tue, 9 Dec 2008 03:56:18 -0600 X-ASG-Debug-ID: 1228816577-35bb03dc0000-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 78D4516109AD for ; Tue, 9 Dec 2008 01:56:17 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id i6B9e5FlqAJ2VhyU for ; Tue, 09 Dec 2008 01:56:17 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L9zJi-0002Ul-Bf; Tue, 09 Dec 2008 09:55:46 +0000 Date: Tue, 9 Dec 2008 04:55:46 -0500 From: Christoph Hellwig To: Timothy Shimmin Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsqa: add testcase for ->setattr permission checking Subject: Re: [PATCH] xfsqa: add testcase for ->setattr permission checking Message-ID: <20081209095546.GB8599@infradead.org> References: <20081202142039.GA25155@infradead.org> <493CB518.7000001@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <493CB518.7000001@sgi.com> 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: 1228816577 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Mon, Dec 08, 2008 at 04:48:08PM +1100, Timothy Shimmin wrote: > 1. > > +echo "user: chown root owned file to qa_user (should fail)" > > +su ${qa_user} -c "chown root test.${qa_user}" > > + > I think the description and command above don't match. > I think we have a swap with subtest 4 below. > Need to either swap descriptions or commands. Yes, I swapped the descriptions. > > +# > > +# Setup a file owned by the qa_user and with the suid bit set. > > +# A chown by root should not clean the suid bit. > > +# > > Typos: > s/clean/clear/ > > s/suceed/succeed/ in a couple of places. Yeah. > * It looks like you test the clearing of suid/sgid bits > for setting the mode permission bits and not > for setting ownership as the description suggests; > i.e. you test with chmod instead of chown for clearing of suid/sgid bits Yes, that's also what I intended too, as XFS had some code to clear the suid bits for changing permissions, but those shouldn't happen for the restricted_chown case (and don't even happen in the XFS code, it's just not obvious when reading the old setattr implementation). While for sgid we want to clear it on mode changes if the gid is not in the group list. So what needs fixing here is once again the comment. Btw, I just noticed you checked in another testcase as 192. Do you want a respin or do you want to fix it up yourself? From Martin@lichtvoll.de Tue Dec 9 03:57:26 2008 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 mB99vQtM013774 for ; Tue, 9 Dec 2008 03:57:26 -0600 X-ASG-Debug-ID: 1228816644-480400f30000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.lichtvoll.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5C1E016F3664 for ; Tue, 9 Dec 2008 01:57:24 -0800 (PST) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id 1nKDw2KbXFGMAtB3 for ; Tue, 09 Dec 2008 01:57:24 -0800 (PST) Received: from shambala.of.teamix.net (blackhole.teamix.net [194.150.191.251]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 4EBB35ADF2 for ; Tue, 9 Dec 2008 10:56:52 +0100 (CET) From: Martin Steigerwald To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 1/5] replace b_fspriv with b_mount Subject: Re: [patch 1/5] replace b_fspriv with b_mount Date: Tue, 9 Dec 2008 10:56:47 +0100 User-Agent: KMail/1.9.9 References: <20081209094729.939583000@bombadil.infradead.org> <20081209094801.116064000@bombadil.infradead.org> (sfid-20081209_105430_370632_621C9505) In-Reply-To: <20081209094801.116064000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200812091056.48281.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1228816645 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.12311 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Am Dienstag 09 Dezember 2008 schrieb Christoph Hellwig: > Replace the b_fspriv pointer and it's ugly accessors with a properly > types xfs_mount pointer. Also switch log reocvery over to it instead > of using b_fspriv for the mount pointer. s/reocvery/recovery Can't comment on code ;) -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From Martin@lichtvoll.de Tue Dec 9 03:58:23 2008 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 mB99wMQb013895 for ; Tue, 9 Dec 2008 03:58:23 -0600 X-ASG-Debug-ID: 1228816701-480401010000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.lichtvoll.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2271816F366A for ; Tue, 9 Dec 2008 01:58:21 -0800 (PST) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id k9zjoqW7AvjEtrTH for ; Tue, 09 Dec 2008 01:58:21 -0800 (PST) Received: from shambala.of.teamix.net (blackhole.teamix.net [194.150.191.251]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 1F3B55ADF2 for ; Tue, 9 Dec 2008 10:57:50 +0100 (CET) From: Martin Steigerwald To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 0/5] Patch queue for 2.6.29 Subject: Re: [patch 0/5] Patch queue for 2.6.29 Date: Tue, 9 Dec 2008 10:57:48 +0100 User-Agent: KMail/1.9.9 References: <20081209094729.939583000@bombadil.infradead.org> (sfid-20081209_105430_313295_CF3FFFDA) In-Reply-To: <20081209094729.939583000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200812091057.49292.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1228816702 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.12311 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Am Dienstag 09 Dezember 2008 schrieb Christoph Hellwig: > These are my outstanding patches for 2.6.29. The first two have > already been rewied by Dave, the others still need review. Patch 4/5 appears to be missing. -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From SRS0+1426bc5743abca691148+1934+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 9 03:48:03 2008 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 mB99m27J012824 for ; Tue, 9 Dec 2008 03:48:03 -0600 X-ASG-Debug-ID: 1228816081-2dc302a80000-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 07B1573A for ; Tue, 9 Dec 2008 01:48:01 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id QB6LsnAiiFcEw7EG for ; Tue, 09 Dec 2008 01:48:01 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L9zCD-0005Wt-JL for xfs@oss.sgi.com; Tue, 09 Dec 2008 09:48:01 +0000 Message-Id: <20081209094801.514516000@bombadil.infradead.org> References: <20081209094729.939583000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 09 Dec 2008 04:47:33 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 4/5] add a FMODE flag to make XFS invisible I/O less hacky Subject: [patch 4/5] add a FMODE flag to make XFS invisible I/O less hacky Content-Disposition: inline; filename=xfs-add-FMODE_INVISIBLE 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: 1228816082 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com XFS has a mode called invisble I/O that doesn't update any of the timestamps. It's used for HSM-style applications and exposed through the nasty open by handle ioctl. Instead of doing directly assignment of file operations that set an internal flag for it add a new FMODE_NOCMTIME flag that we can check in the normal file operations. (addition of the generic VFS flag has been ACKed by Al as an interims solution) Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_ioctl32.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_ioctl32.c 2008-12-04 14:15:20.000000000 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_ioctl32.c 2008-12-04 14:30:21.000000000 +0100 @@ -599,19 +599,24 @@ out: return error; } -STATIC long -xfs_compat_ioctl( - xfs_inode_t *ip, - struct file *filp, - int ioflags, - unsigned cmd, - void __user *arg) +long +xfs_file_compat_ioctl( + struct file *filp, + unsigned cmd, + unsigned long p) { - struct inode *inode = filp->f_path.dentry->d_inode; - xfs_mount_t *mp = ip->i_mount; - int error; + struct inode *inode = filp->f_path.dentry->d_inode; + struct xfs_inode *ip = XFS_I(inode); + struct xfs_mount *mp = ip->i_mount; + void __user *arg = (void __user *)p; + int ioflags = 0; + int error; + + if (filp->f_mode & FMODE_NOCMTIME) + ioflags |= IO_INVIS; + + xfs_itrace_entry(ip); - xfs_itrace_entry(XFS_I(inode)); switch (cmd) { /* No size or alignment issues on any arch */ case XFS_IOC_DIOINFO: @@ -632,7 +637,7 @@ xfs_compat_ioctl( case XFS_IOC_GOINGDOWN: case XFS_IOC_ERROR_INJECTION: case XFS_IOC_ERROR_CLEARALL: - return xfs_ioctl(ip, filp, ioflags, cmd, arg); + return xfs_file_ioctl(filp, cmd, p); #ifndef BROKEN_X86_ALIGNMENT /* These are handled fine if no alignment issues */ case XFS_IOC_ALLOCSP: @@ -646,7 +651,7 @@ xfs_compat_ioctl( case XFS_IOC_FSGEOMETRY_V1: case XFS_IOC_FSGROWFSDATA: case XFS_IOC_FSGROWFSRT: - return xfs_ioctl(ip, filp, ioflags, cmd, arg); + return xfs_file_ioctl(filp, cmd, p); #else case XFS_IOC_ALLOCSP_32: case XFS_IOC_FREESP_32: @@ -687,7 +692,7 @@ xfs_compat_ioctl( case XFS_IOC_SETXFLAGS_32: case XFS_IOC_GETVERSION_32: cmd = _NATIVE_IOC(cmd, long); - return xfs_ioctl(ip, filp, ioflags, cmd, arg); + return xfs_file_ioctl(filp, cmd, p); case XFS_IOC_SWAPEXT: { struct xfs_swapext sxp; struct compat_xfs_swapext __user *sxu = arg; @@ -738,26 +743,3 @@ xfs_compat_ioctl( return -XFS_ERROR(ENOIOCTLCMD); } } - -long -xfs_file_compat_ioctl( - struct file *filp, - unsigned int cmd, - unsigned long p) -{ - struct inode *inode = filp->f_path.dentry->d_inode; - - return xfs_compat_ioctl(XFS_I(inode), filp, 0, cmd, (void __user *)p); -} - -long -xfs_file_compat_invis_ioctl( - struct file *filp, - unsigned int cmd, - unsigned long p) -{ - struct inode *inode = filp->f_path.dentry->d_inode; - - return xfs_compat_ioctl(XFS_I(inode), filp, IO_INVIS, cmd, - (void __user *)p); -} Index: xfs/fs/xfs/linux-2.6/xfs_file.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_file.c 2008-12-04 14:15:20.000000000 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_file.c 2008-12-04 14:30:21.000000000 +0100 @@ -45,81 +45,45 @@ static struct vm_operations_struct xfs_file_vm_ops; -STATIC_INLINE ssize_t -__xfs_file_read( +STATIC ssize_t +xfs_file_aio_read( struct kiocb *iocb, const struct iovec *iov, unsigned long nr_segs, - int ioflags, loff_t pos) { struct file *file = iocb->ki_filp; + int ioflags = IO_ISAIO; BUG_ON(iocb->ki_pos != pos); if (unlikely(file->f_flags & O_DIRECT)) ioflags |= IO_ISDIRECT; + if (file->f_mode & FMODE_NOCMTIME) + ioflags |= IO_INVIS; return xfs_read(XFS_I(file->f_path.dentry->d_inode), iocb, iov, nr_segs, &iocb->ki_pos, ioflags); } STATIC ssize_t -xfs_file_aio_read( - struct kiocb *iocb, - const struct iovec *iov, - unsigned long nr_segs, - loff_t pos) -{ - return __xfs_file_read(iocb, iov, nr_segs, IO_ISAIO, pos); -} - -STATIC ssize_t -xfs_file_aio_read_invis( - struct kiocb *iocb, - const struct iovec *iov, - unsigned long nr_segs, - loff_t pos) -{ - return __xfs_file_read(iocb, iov, nr_segs, IO_ISAIO|IO_INVIS, pos); -} - -STATIC_INLINE ssize_t -__xfs_file_write( +xfs_file_aio_write( struct kiocb *iocb, const struct iovec *iov, unsigned long nr_segs, - int ioflags, loff_t pos) { - struct file *file = iocb->ki_filp; + struct file *file = iocb->ki_filp; + int ioflags = IO_ISAIO; BUG_ON(iocb->ki_pos != pos); if (unlikely(file->f_flags & O_DIRECT)) ioflags |= IO_ISDIRECT; + if (file->f_mode & FMODE_NOCMTIME) + ioflags |= IO_INVIS; return xfs_write(XFS_I(file->f_mapping->host), iocb, iov, nr_segs, &iocb->ki_pos, ioflags); } STATIC ssize_t -xfs_file_aio_write( - struct kiocb *iocb, - const struct iovec *iov, - unsigned long nr_segs, - loff_t pos) -{ - return __xfs_file_write(iocb, iov, nr_segs, IO_ISAIO, pos); -} - -STATIC ssize_t -xfs_file_aio_write_invis( - struct kiocb *iocb, - const struct iovec *iov, - unsigned long nr_segs, - loff_t pos) -{ - return __xfs_file_write(iocb, iov, nr_segs, IO_ISAIO|IO_INVIS, pos); -} - -STATIC ssize_t xfs_file_splice_read( struct file *infilp, loff_t *ppos, @@ -127,20 +91,13 @@ xfs_file_splice_read( size_t len, unsigned int flags) { - return xfs_splice_read(XFS_I(infilp->f_path.dentry->d_inode), - infilp, ppos, pipe, len, flags, 0); -} + int ioflags = 0; + + if (infilp->f_mode & FMODE_NOCMTIME) + ioflags |= IO_INVIS; -STATIC ssize_t -xfs_file_splice_read_invis( - struct file *infilp, - loff_t *ppos, - struct pipe_inode_info *pipe, - size_t len, - unsigned int flags) -{ return xfs_splice_read(XFS_I(infilp->f_path.dentry->d_inode), - infilp, ppos, pipe, len, flags, IO_INVIS); + infilp, ppos, pipe, len, flags, ioflags); } STATIC ssize_t @@ -151,20 +108,13 @@ xfs_file_splice_write( size_t len, unsigned int flags) { - return xfs_splice_write(XFS_I(outfilp->f_path.dentry->d_inode), - pipe, outfilp, ppos, len, flags, 0); -} + int ioflags = 0; + + if (outfilp->f_mode & FMODE_NOCMTIME) + ioflags |= IO_INVIS; -STATIC ssize_t -xfs_file_splice_write_invis( - struct pipe_inode_info *pipe, - struct file *outfilp, - loff_t *ppos, - size_t len, - unsigned int flags) -{ return xfs_splice_write(XFS_I(outfilp->f_path.dentry->d_inode), - pipe, outfilp, ppos, len, flags, IO_INVIS); + pipe, outfilp, ppos, len, flags, ioflags); } STATIC int @@ -275,42 +225,6 @@ xfs_file_mmap( return 0; } -STATIC long -xfs_file_ioctl( - struct file *filp, - unsigned int cmd, - unsigned long p) -{ - struct inode *inode = filp->f_path.dentry->d_inode; - - - /* NOTE: some of the ioctl's return positive #'s as a - * byte count indicating success, such as - * readlink_by_handle. So we don't "sign flip" - * like most other routines. This means true - * errors need to be returned as a negative value. - */ - return xfs_ioctl(XFS_I(inode), filp, 0, cmd, (void __user *)p); -} - -STATIC long -xfs_file_ioctl_invis( - struct file *filp, - unsigned int cmd, - unsigned long p) -{ - struct inode *inode = filp->f_path.dentry->d_inode; - - - /* NOTE: some of the ioctl's return positive #'s as a - * byte count indicating success, such as - * readlink_by_handle. So we don't "sign flip" - * like most other routines. This means true - * errors need to be returned as a negative value. - */ - return xfs_ioctl(XFS_I(inode), filp, IO_INVIS, cmd, (void __user *)p); -} - /* * mmap()d file has taken write protection fault and is being made * writable. We can set the page state up correctly for a writable @@ -346,25 +260,6 @@ const struct file_operations xfs_file_op #endif }; -const struct file_operations xfs_invis_file_operations = { - .llseek = generic_file_llseek, - .read = do_sync_read, - .write = do_sync_write, - .aio_read = xfs_file_aio_read_invis, - .aio_write = xfs_file_aio_write_invis, - .splice_read = xfs_file_splice_read_invis, - .splice_write = xfs_file_splice_write_invis, - .unlocked_ioctl = xfs_file_ioctl_invis, -#ifdef CONFIG_COMPAT - .compat_ioctl = xfs_file_compat_invis_ioctl, -#endif - .mmap = xfs_file_mmap, - .open = xfs_file_open, - .release = xfs_file_release, - .fsync = xfs_file_fsync, -}; - - const struct file_operations xfs_dir_file_operations = { .open = xfs_dir_open, .read = generic_read_dir, Index: xfs/fs/xfs/linux-2.6/xfs_ioctl.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_ioctl.c 2008-12-04 14:15:20.000000000 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_ioctl.c 2008-12-04 14:30:21.000000000 +0100 @@ -319,10 +319,11 @@ xfs_open_by_handle( put_unused_fd(new_fd); return -XFS_ERROR(-PTR_ERR(filp)); } + if (inode->i_mode & S_IFREG) { /* invisible operation should not change atime */ filp->f_flags |= O_NOATIME; - filp->f_op = &xfs_invis_file_operations; + filp->f_mode |= FMODE_NOCMTIME; } fd_install(new_fd, filp); @@ -1328,21 +1329,31 @@ xfs_ioc_getbmapx( return 0; } -int -xfs_ioctl( - xfs_inode_t *ip, +/* + * Note: some of the ioctl's return positive numbers as a + * byte count indicating success, such as readlink_by_handle. + * So we don't "sign flip" like most other routines. This means + * true errors need to be returned as a negative value. + */ +long +xfs_file_ioctl( struct file *filp, - int ioflags, unsigned int cmd, - void __user *arg) + unsigned long p) { struct inode *inode = filp->f_path.dentry->d_inode; - xfs_mount_t *mp = ip->i_mount; + struct xfs_inode *ip = XFS_I(inode); + struct xfs_mount *mp = ip->i_mount; + void __user *arg = (void __user *)p; + int ioflags = 0; int error; - xfs_itrace_entry(XFS_I(inode)); - switch (cmd) { + if (filp->f_mode & FMODE_NOCMTIME) + ioflags |= IO_INVIS; + xfs_itrace_entry(ip); + + switch (cmd) { case XFS_IOC_ALLOCSP: case XFS_IOC_FREESP: case XFS_IOC_RESVSP: Index: xfs/fs/xfs/linux-2.6/xfs_iops.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_iops.h 2008-12-04 14:15:20.000000000 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_iops.h 2008-12-04 14:30:21.000000000 +0100 @@ -22,7 +22,6 @@ struct xfs_inode; extern const struct file_operations xfs_file_operations; extern const struct file_operations xfs_dir_file_operations; -extern const struct file_operations xfs_invis_file_operations; extern ssize_t xfs_vn_listxattr(struct dentry *, char *data, size_t size); Index: xfs/include/linux/fs.h =================================================================== --- xfs.orig/include/linux/fs.h 2008-12-04 14:15:20.000000000 +0100 +++ xfs/include/linux/fs.h 2008-12-04 14:30:21.000000000 +0100 @@ -81,6 +81,14 @@ extern int dir_notify_enable; #define FMODE_WRITE_IOCTL ((__force fmode_t)128) #define FMODE_NDELAY_NOW ((__force fmode_t)256) +/* + * Don't update ctime and mtime. + * + * Currently a special hack for the XFS open_by_handle ioctl, but we'll + * hopefully graduate it to a proper O_CMTIME flag supported by open(2) soon. + */ +#define FMODE_NOCMTIME ((__force fmode_t)2048) + #define RW_MASK 1 #define RWA_MASK 2 #define READ 0 Index: xfs/fs/xfs/linux-2.6/xfs_ioctl.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_ioctl.h 2008-12-04 14:19:38.000000000 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_ioctl.h 2008-12-04 14:30:51.000000000 +0100 @@ -68,13 +68,13 @@ xfs_attrmulti_attr_remove( __uint32_t flags); extern long -xfs_file_compat_ioctl( - struct file *file, +xfs_file_ioctl( + struct file *filp, unsigned int cmd, - unsigned long arg); + unsigned long p); extern long -xfs_file_compat_invis_ioctl( +xfs_file_compat_ioctl( struct file *file, unsigned int cmd, unsigned long arg); Index: xfs/fs/xfs/xfs_vnodeops.h =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.h 2008-12-04 14:15:20.000000000 +0100 +++ xfs/fs/xfs/xfs_vnodeops.h 2008-12-04 14:30:21.000000000 +0100 @@ -53,8 +53,6 @@ int xfs_attr_set(struct xfs_inode *dp, c int xfs_attr_remove(struct xfs_inode *dp, const char *name, int flags); int xfs_attr_list(struct xfs_inode *dp, char *buffer, int bufsize, int flags, struct attrlist_cursor_kern *cursor); -int xfs_ioctl(struct xfs_inode *ip, struct file *filp, - int ioflags, unsigned int cmd, void __user *arg); ssize_t xfs_read(struct xfs_inode *ip, struct kiocb *iocb, const struct iovec *iovp, unsigned int segs, loff_t *offset, int ioflags); -- From SRS0+1426bc5743abca691148+1934+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 9 04:08:20 2008 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 mB9A8Kje014319 for ; Tue, 9 Dec 2008 04:08:20 -0600 X-ASG-Debug-ID: 1228817298-2dc502d20000-w1Z2WR 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 30357277A for ; Tue, 9 Dec 2008 02:08:19 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id sOsx33m1Nrf0pRaQ for ; Tue, 09 Dec 2008 02:08:19 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L9zVM-0001Ww-3d; Tue, 09 Dec 2008 10:07:48 +0000 Date: Tue, 9 Dec 2008 05:07:48 -0500 From: Christoph Hellwig To: Martin Steigerwald Cc: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 0/5] Patch queue for 2.6.29 Subject: Re: [patch 0/5] Patch queue for 2.6.29 Message-ID: <20081209100748.GA25897@infradead.org> References: <20081209094729.939583000@bombadil.infradead.org> <200812091057.49292.Martin@lichtvoll.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200812091057.49292.Martin@lichtvoll.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: 1228817299 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Tue, Dec 09, 2008 at 10:57:48AM +0100, Martin Steigerwald wrote: > Am Dienstag 09 Dezember 2008 schrieb Christoph Hellwig: > > These are my outstanding patches for 2.6.29. The first two have > > already been rewied by Dave, the others still need review. > > Patch 4/5 appears to be missing. It's now there for me, unfortunately the oss has some rather non-deterministic delays.. From SRS0+1426bc5743abca691148+1934+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 9 04:16:09 2008 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 mB9AG94i015348 for ; Tue, 9 Dec 2008 04:16:09 -0600 X-ASG-Debug-ID: 1228817768-2db502d60000-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 E2BBD2807 for ; Tue, 9 Dec 2008 02:16:08 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id jsWBucwamlMwJC4k for ; Tue, 09 Dec 2008 02:16:08 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1L9zdQ-0000Ml-KE for xfs@oss.sgi.com; Tue, 09 Dec 2008 10:16:08 +0000 Date: Tue, 9 Dec 2008 05:16:08 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsdump: cleanup _rmt_dev Subject: Re: [PATCH] xfsdump: cleanup _rmt_dev Message-ID: <20081209101608.GA28348@infradead.org> References: <20081206102709.GB30364@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081206102709.GB30364@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: 1228817768 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Sat, Dec 06, 2008 at 05:27:09AM -0500, Christoph Hellwig wrote: > Rewrite _rmt_dev to be proper ANSI C and readable. Patch withdrawn. I'll do a bigger one instead to give this treatment to all of librmt. From Martin@lichtvoll.de Tue Dec 9 05:03:05 2008 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 mB9B34Cg018027 for ; Tue, 9 Dec 2008 05:03:05 -0600 X-ASG-Debug-ID: 1228820583-5c9702090000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.lichtvoll.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D4EB916F36C4 for ; Tue, 9 Dec 2008 03:03:03 -0800 (PST) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id rh8VwU5BPJfwgQmD for ; Tue, 09 Dec 2008 03:03:03 -0800 (PST) Received: from shambala.of.teamix.net (blackhole.teamix.net [194.150.191.251]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 2934A5ADF2; Tue, 9 Dec 2008 12:02:31 +0100 (CET) From: Martin Steigerwald To: Christoph Hellwig X-ASG-Orig-Subj: Re: [patch 0/5] Patch queue for 2.6.29 Subject: Re: [patch 0/5] Patch queue for 2.6.29 Date: Tue, 9 Dec 2008 12:02:29 +0100 User-Agent: KMail/1.9.9 Cc: linux-xfs@oss.sgi.com References: <20081209094729.939583000@bombadil.infradead.org> <200812091057.49292.Martin@lichtvoll.de> <20081209100748.GA25897@infradead.org> (sfid-20081209_120026_444741_AF18F82F) In-Reply-To: <20081209100748.GA25897@infradead.org> MIME-Version: 1.0 Message-Id: <200812091202.30353.Martin@lichtvoll.de> Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1228820583 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.12311 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Am Dienstag 09 Dezember 2008 schrieb Christoph Hellwig: > On Tue, Dec 09, 2008 at 10:57:48AM +0100, Martin Steigerwald wrote: > > Am Dienstag 09 Dezember 2008 schrieb Christoph Hellwig: > > > These are my outstanding patches for 2.6.29. The first two have > > > already been rewied by Dave, the others still need review. > > > > Patch 4/5 appears to be missing. > > It's now there for me, unfortunately the oss has some rather > non-deterministic delays.. It appeared. I didn't wait long enough for it to appear. Sorry. -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From a.beregalov@gmail.com Tue Dec 9 06:54:44 2008 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 mB9Cshup023990 for ; Tue, 9 Dec 2008 06:54:44 -0600 X-ASG-Debug-ID: 1228827282-566e01160000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from yx-out-1718.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 168AE170027F for ; Tue, 9 Dec 2008 04:54:42 -0800 (PST) Received: from yx-out-1718.google.com (yx-out-1718.google.com [74.125.44.153]) by cuda.sgi.com with ESMTP id ZSNSau7erdHvbKHr for ; Tue, 09 Dec 2008 04:54:42 -0800 (PST) Received: by yx-out-1718.google.com with SMTP id 36so653727yxh.32 for ; Tue, 09 Dec 2008 04:54:42 -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=s0BvQ76UmzS0aB7KChVxnNjSH4gx8T9zvwCDAjAsQcw=; b=b5AYW/OEGZdbTQhuy1kHS6jiZmGq4plAdl94e0ujAYEMpLY7tT99tTq/RMJIc00oWy 2qHTOVa4eltKtR95Azd3bXEahtaOr4EgC7ya2fw+C2yzXZLPFDIKUNXmqUsu5j8vGuPC S821WSYCH+yJa/Yitp0fXQiWPfc5C15nQ6JyU= 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=DWdKme7y0siaVX/U41AigQ/UQIC5UfidkTxBxfJwrYeWsDn78BCCZ0GcsKN0KbhGWP UMlWwbTUP3xW2VqssoqAKTpcyyz6ErjRHyrNkEuDp5DWOJw6eF3gjqpM5CuJOK+1W1cp nNNbTS19azehM3qdjvm6ZvU/U4wUx/H7q3Nr8= Received: by 10.100.125.12 with SMTP id x12mr57020anc.4.1228827282123; Tue, 09 Dec 2008 04:54:42 -0800 (PST) Received: by 10.100.14.13 with HTTP; Tue, 9 Dec 2008 04:54:42 -0800 (PST) Message-ID: Date: Tue, 9 Dec 2008 15:54:42 +0300 From: "Alexander Beregalov" To: linux-next@vger.kernel.org, linux-mm@kvack.org, LKML , xfs@oss.sgi.com X-ASG-Orig-Subj: next-20081209: pdflush: page allocation failure (xfs) Subject: next-20081209: pdflush: page allocation failure (xfs) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Barracuda-Connect: yx-out-1718.google.com[74.125.44.153] X-Barracuda-Start-Time: 1228827283 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.12321 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- I got the message during compiling of the kernel. (tainted by previous warning) x86_64, 2Gb of RAM pdflush: page allocation failure. order:0, mode:0x4000 Pid: 30415, comm: pdflush Tainted: G W 2.6.28-rc7-next-20081209 #3 Call Trace: [] __alloc_pages_internal+0x469/0x488 [] ? bvec_alloc_bs+0xdc/0x11a [] alloc_slab_page+0x20/0x26 [] __slab_alloc+0x26c/0x596 [] ? bvec_alloc_bs+0xdc/0x11a [] ? bvec_alloc_bs+0xdc/0x11a [] kmem_cache_alloc+0x7b/0xbe [] bvec_alloc_bs+0xdc/0x11a [] bio_alloc_bioset+0xa9/0x101 [] bio_alloc+0x10/0x1f [] xfs_alloc_ioend_bio+0x23/0x52 [] xfs_submit_ioend+0x56/0xd4 [] xfs_page_state_convert+0x5e9/0x642 [] ? xfs_count_page_state+0x97/0xb6 [] xfs_vm_writepage+0xbe/0xf7 [] __writepage+0x15/0x3b [] write_cache_pages+0x1cd/0x331 [] ? __writepage+0x0/0x3b [] generic_writepages+0x22/0x28 [] xfs_vm_writepages+0x45/0x4e [] do_writepages+0x2b/0x3b [] __writeback_single_inode+0x186/0x2fa [] ? generic_sync_sb_inodes+0x2bc/0x30a [] generic_sync_sb_inodes+0x22c/0x30a [] writeback_inodes+0x9d/0xf4 [] wb_kupdate+0xa3/0x11e [] pdflush+0x11d/0x1d0 [] ? wb_kupdate+0x0/0x11e [] ? pdflush+0x0/0x1d0 [] kthread+0x49/0x76 [] child_rip+0xa/0x20 [] ? finish_task_switch+0x0/0xb9 [] ? restore_args+0x0/0x30 [] ? kthread+0x0/0x76 [] ? child_rip+0x0/0x20 Mem-Info: DMA per-cpu: CPU 0: hi: 0, btch: 1 usd: 0 CPU 1: hi: 0, btch: 1 usd: 0 CPU 2: hi: 0, btch: 1 usd: 0 CPU 3: hi: 0, btch: 1 usd: 0 DMA32 per-cpu: CPU 0: hi: 186, btch: 31 usd: 109 CPU 1: hi: 186, btch: 31 usd: 154 CPU 2: hi: 186, btch: 31 usd: 76 CPU 3: hi: 186, btch: 31 usd: 39 Active_anon:46892 active_file:71530 inactive_anon:10315 inactive_file:243246 unevictable:0 dirty:15089 writeback:1402 unstable:0 free:1877 slab:116494 mapped:672 pagetables:401 bounce:0 DMA free:1452kB min:40kB low:48kB high:60kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB present:15072kB pages_scanned:0 all_unreclaimable? yes lowmem_reserve[]: 0 1975 1975 1975 DMA32 free:6056kB min:5664kB low:7080kB high:8496kB active_anon:187568kB inactive_anon:41260kB active_file:286120kB inactive_file:972984kB unevictable:0kB present:2023256kB pages_scanned:0 all_unreclaimable? no lowmem_reserve[]: 0 0 0 0 DMA: 1*4kB 1*8kB 0*16kB 1*32kB 2*64kB 2*128kB 2*256kB 1*512kB 0*1024kB 0*2048kB 0*4096kB = 1452kB DMA32: 204*4kB 59*8kB 6*16kB 4*32kB 1*64kB 1*128kB 1*256kB 0*512kB 0*1024kB 0*2048kB 1*4096kB = 6056kB 314797 total pagecache pages 0 pages in swap cache Swap cache stats: add 0, delete 0, find 0/0 Free swap = 3911788kB Total swap = 3911788kB 523088 pages RAM 22877 pages reserved 224954 pages shared 276682 pages non-shared From return@gwmail3.grupos.com.br Tue Dec 9 09:26:39 2008 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 mB9FQcp4031290 for ; Tue, 9 Dec 2008 09:26:39 -0600 X-ASG-Debug-ID: 1228836393-787101fc0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from out05.grupos.com.br (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5230D1626318 for ; Tue, 9 Dec 2008 07:26:33 -0800 (PST) Received: from out05.grupos.com.br (out05.grupos.com.br [67.205.113.29]) by cuda.sgi.com with ESMTP id Zlx0RJmfUr1TXS7Y for ; Tue, 09 Dec 2008 07:26:33 -0800 (PST) Received: from gmail02.gruposinternet.com.br (out05.grupos.com.br [67.205.113.29]) by out05.grupos.com.br (Postfix) with ESMTP id 4CB6D109B27F; Tue, 9 Dec 2008 13:26:21 -0200 (BRST) Received: from gwmail3.grupos.com.br (retornadas.grupos.com.br [67.205.103.7]) by mail.grupos.com.br (Postfix) with ESMTP id B7FF711E053 for ; Tue, 9 Dec 2008 10:42:41 -0200 (BRST) Received: from smtp.bol.com.br (smtpout2.bol.com.br [200.221.4.213]) by gwmail3.grupos.com.br (Postfix) with ESMTP id 744AA5C3E for ; Tue, 9 Dec 2008 10:42:35 -0200 (BRST) Received: from localhost (localhost [127.0.0.1]) by smart6.bol.com.br (Postfix) with ESMTP id 14D0D734 for ; Tue, 9 Dec 2008 10:39:28 -0200 (BRST) Received: from adm1 (201008250131.user.veloxzone.com.br [201.8.250.131]) by smart6.bol.com.br (Postfix) with ESMTP id 1C957268 for ; Tue, 9 Dec 2008 10:38:32 -0200 (BRST) Message-ID: From: GrupoPJ To: grupopj@grupos.com.br X-ASG-Orig-Subj: =?iso-8859-1?q?=5Bgrupopj=5D_Divulgue_os_lan=E7amentos_?= =?iso-8859-1?q?dos_seus_produtos_e_servi=E7os=2E_?= =?iso-8859-1?q?Evento_In=E9dito!?= Subject: =?iso-8859-1?q?=5Bgrupopj=5D_Divulgue_os_lan=E7amentos_?= =?iso-8859-1?q?dos_seus_produtos_e_servi=E7os=2E_?= =?iso-8859-1?q?Evento_In=E9dito!?= Date: Tue, 9 Dec 2008 00:38:32 -1200 X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.5512 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 X-SIG5: 9bf0829c37d62ec26d947d361e6eb4da Sender: grupopj@grupos.com.br X-Mailing-List: grupopj@grupos.com.br X-Grupos: Controle Errors-To: returns@gwmail3.grupos.com.br Precedence: list X-BeenThere: grupopj@grupos.com.br Reply-To: Treinamentos e Palestras List-Id: Treinamentos e Palestras List-Owner: List-Help: List-Post: List-Subscribe: , List-Unsubscribe: , List-Archive: MIME-Version: 1.0 Content-Type: multipart/related; type="multipart/alternative"; boundary="----=_NextPart_000_00A4_01C95996.7656DB60" X-Barracuda-Connect: out05.grupos.com.br[67.205.113.29] X-Barracuda-Start-Time: 1228836395 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 This is a multi-part message in MIME format. ------=_NextPart_000_00A4_01C95996.7656DB60 Content-Type: multipart/alternative; boundary="----=_NextPart_001_00A5_01C95996.76586200" ------=_NextPart_001_00A5_01C95996.76586200 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Divulgue os lan=E7amentos dos seus produtos e servi=E7os=20 em um evento in=E9dito em Fortaleza informa=E7=F5es: (85) 3253.5135 nutrivitale@hotmail.com=20 Forme o seu grupo, re=FAna os seus colegas de Faculdade e trabalho Comunique aos seus colegas que s=E3o profissionais da =E1rea. informa=E7=F5es: (85) 3253.5135 nutrivitale@hotmail.com=20 ---------------------------------------------------------------------------= ----- =20 ENVIA PARA OS SEUS AMIGOS! Fale com o professor, clique aqui visite o nosso site e mude a sua realidade.=20 Muito obrigado, $UCE$$O, Pedro J=FAnior www.professorpedrojunior.com.br=20 cancelar recebimento de informativos pjtreinamentos@bol.com.br N=C3O RESPONDA ESSE E-MAIL - ENVIO =B4CANCELAR=B4 PARA O E-MAIL ACIMA |-------------------------------------------| | Grupos.com.br - A vida acontece em grupos | | http://www.grupos.com.br | |-------------------------------------------| ------=_NextPart_001_00A5_01C95996.76586200 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Grupos.com.br<= /head>

3D''


3D""
 
 
 
 
 
 
Div= ulgue os=20 lan=E7amentos dos seus produtos e servi=E7os 
em um evento in= =E9dito em=20 Fortaleza
 
inf= orma=E7=F5es:=20 (85) 3253.5135 nutrivitale@hotmail.com=20
Forme o seu= grupo, re=FAna=20 os seus colegas de Faculdade e trabalho
Comunique aos seus colegas que s= =E3o=20 profissionais da =E1rea.
 
 
3D""
3D""
3D""
 
 
inf= orma=E7=F5es:=20 (85) 3253.5135 nutrivitale@hotmail.com=20
 
 
 
 
 

 
 
ENV= IA PARA OS=20 SEUS AMIGOS!

Fale com o profe= ssor,=20 clique aqui

visite o nosso site e= mude a sua=20 realidade.
Muito obrigado, $UCE$$O, Pedro J=FAnior
www.professorpedrojunior.co= m.br=20

 

 

 

cancelar recebi= mento de=20 informativos
pjtreinamentos@bol.com.br
=
N=C3O RESPONDA ESSE=20 E-MAIL  - ENVIO =B4CANCELAR=B4 PARA O E-MAIL ACIMA

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<= /DIV>
 
 
 
 
 

<= td height=3D6 width=3D"100%" bgcolor=3D"#CECFCE">
cancelar assinatura - p=E1gina do grupo
------=_NextPart_001_00A5_01C95996.76586200-- ------=_NextPart_000_00A4_01C95996.7656DB60 Content-Type: image/jpeg; name="Logo_Nutrivitale.jpg" Content-Transfer-Encoding: base64 Content-ID: /9j/4AAQSkZJRgABAQEAXABcAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsK CwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQU FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAA5ALgDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9U6K5 aX4jaYJGWC01e+RSR51rpVxJE3urhNrj/aUkH1pn/CxrP/oEa/8A+Ce4/wDiKrll2Oz6niP5H9x1 lFcn/wALGs/+gRr/AP4J7j/4ij/hY1n/ANAjX/8AwT3H/wARRyy7B9TxH8jOsork/wDhY1n/ANAj X/8AwT3H/wARR/wsaz/6BGv/APgnuP8A4ijll2D6niP5GdZRXJ/8LGs/+gRr/wD4J7j/AOIo/wCF jWf/AECNf/8ABPcf/EUcsuwfU8R/IzrKK5P/AIWNZ/8AQI1//wAE9x/8RWT4q8R6d4t0G60m4s/F Vnb3ICSyWOm3EUpTILIHCZAYAqSMHBOCOtNQfUuGCrOSU4tLq7XsXtG+M3grxD42ufCOm+IbS98Q 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 ------=_NextPart_000_00A4_01C95996.7656DB60 Content-Type: image/gif; name="Projeto_Parcial_1.gif" Content-Transfer-Encoding: base64 Content-ID: <97E9B225356743CB9FBF79C3BE45DB2E@adm1> R0lGODlhegKCA/cAABgZGgYGBikjJTclKDY0NR4fIEgnKVspKlUoKlg3NlAyNGQpK2sqLGInKXUq LXYtMmk3NXc5NmsvMF8TDw9iM3hEPGtCPExBPikXcDcmeTE6RUwXRE4ZRlQYS1wZUmUbWlYySmcv VGwdYXsdZnQdaHUtakhGRlVFTVdGSFlXWFRMVHlJRWFSWWZYWnFNTXNRa29iaGlnZlNkZjVSVoY5 Npc2OYwtNKg0O7QzO6ccFtYkHMs0PPAvJ4hGO5ZKO5pSPqRTPqRMPJU8Q7M7RIEda4cdcIwddZAe eJMjfJYpf4Q3ecs6RYhLRJdMQ4pTSZxTRJhXSopXVZhbVItOWqZKRqNVQ6VbRaxaRaVcSqxeSqlV RLFcRrJeSrhbTKZcU7VbVLRIUJpjWZhiT61iTaZjTLJkTrNiTbplTKRkVK1jU61rW6lnWLFiUrJl UbVlUbJlVbRkVbtlUrRqVLtrVbNsXLtsW7NlWrxzW7dzXK1xXppoZZFxcqlrZbRuYrdrZ65yY6p0 arRzY7l3Z6h4drZ7dKxtcppWadBMU8NpVsJzXMV2WsxsUsJ7ZMZ5ZdNubNllZe5DOySfWkmcbbiD erKCd3d0dMiFbeSLdEc4hGdamRISyDAwz1BQ12pq3Xp64ZgtgpszhZ47iaA+jKJDjqhPlaZKkqtV ma5anKlSl7Ben5NPh6h1jrNkordsp7p0rL56r7B1po9yl799seNgnt4fgmrMlXKmiYeGhpqYmJOM jLiJhrqWlbCOjbaUqqqpqLm4uLarq5qZrceUj+eXiMKEtcaKucaNusqTvsSXvMykmu2Gu8aop8+2 s+q3qOepk6DRtdfDu+fJubWuzZKS5qio67e376KawceZwM6bw8uWwNChxtStzdOmytmz0dy61d++ 2Mq0yvGt0fCZxsjHx9fJx9nY2NDL1enNxOLD2+TJ3urW0cfH8tjX7ubM4erT5e3c6urZ5ujm5/Hi 7fTq6PXr8/Pm8PTz9Pny9vr1+f////39/fv6+/j4+O7s9ejm3LHixywAAAAAegKCAwAI/gCPCBxI sKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bN mzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jT 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 73rfO9/77nevBwQAOw== ------=_NextPart_000_00A4_01C95996.7656DB60 Content-Type: image/gif; name="Projeto_Parcial_2.gif" Content-Transfer-Encoding: base64 Content-ID: R0lGODlhewKDA/cAAB8aFxkbHCIdGiYhHh4hJSQjIyslJCkoKTMtKjcpJzgxLSgpNTo2Mzo3Ni8w NxsfIUkpKFgpKUc1LFg2LEI+O0g6M1M5NGk1K3c4LGYsKmATDxpZNEdBPFlHNmZIN3VLNDA3RzUp eCsacTVGUzNOb0pFQ0tHRVJNS1RRTlpNRlpVU1tYVkdRV2JdXGhYV29USGRhXXdpUGViYGlmZG5r aWtpZ3FubHhoZnRxbn57eXl2dG1vdFZfa1E4Sog7LKkoIdYkHN8uKIlGLZdKLZxTLYZMMolWNpZZ NZNNMadXLKVbM69VLJljOoZmOrhkLahnOLhrNrpyPKxoM8ZzO8drMd1RNZAeeJMke41bR5lnRpJu U6VsRql0Srd4R6h3VrZ7VbBrToF+fYh5dpJ1aal7Z7BXScd6Rs12UNtmW0qTYbmFWbGGU5GGdLiI ZrCNdKafZMiDTMeIV9WIWNGQV8aMZMmVZ9eXZ8aZddmbddWMZ+WWbtmoeNWoceSreNqdW+/rUvDt btXRc7u5T0Y2gy5pnlVJjVFxkGxsmSYmzWBg25w1hqhOlbhvqYd6nOJZn9omfm2NoF2ptYWCgYmG hI2KioqIh5COjJmJhpSRjpaTkp6bmpqXlouQk6KdnLOWirKok5KPs6Wjoq2rqqmnprOtrLSxrbWz s727urm3t6ywtJ+iqciaicimiNmqhty2htCwluK7iOS4l+WrjMaKucK9vc+3p+i6peuVjqfOtOfH l+XFjPTxivPvk9PKserKp+zSsvPwsNTPkrS3zImJ5JiY6LCw7Ziow9W10NSfxrnI2brW3MTDwszL y8jHyNXTzMfM18rR29TT09zb29fX2NLOzeLe3efN1Orn1/f22PHrzcnX49Xa5dDQ8ezZ6OfN4dnj 6uTj4+rp6e7t7ezs6+Xo6vLo7ff16eft8uTs8ejv9Ort8urq+fXq8+rw9Ozx9e3y9u7z9fLy8vD1 9/H29/b19fHz9vj09vX2+fP1+fr6+v////39/fz7+/n39+ry7tTn2SwAAAAAewKDAwAI/gD15ZNH sKDBgwgTKlzI0OA8fOKy+fpFsaLFi9kyatyY7aKvWK3IaHET6yJFjihTqlRpsqXLlxV9yZxJs6Yv W6/YwFjBc4UMSc/QvYNHEN7Qeu+SvkuIr6lTpw0XPp1KtapVfPOkXt3KtavXr2DDbpVXr6zZs/Ku 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 lbtc5jbXuc+FbnSlO13qVte6Pg0IADs= ------=_NextPart_000_00A4_01C95996.7656DB60 Content-Type: image/gif; name="Projeto_Parcial_3.gif" Content-Transfer-Encoding: base64 Content-ID: <2BB2676471C34823886FA5C788F2FA61@adm1> R0lGODlhewKCA/cAAB8aFxUXGBYYGhgZGyIdGiYhHiolIysnJjItKzgmJzo2Mz05NjYxLh0gIUI+ O0k5NFIvK20zLV4SDxZcMkZBPVlHOXBMNigWbywbcjcmeSc3c0lFQ0tHRVFNSllLRFZRTFtXVWNf XWFdW2haVG5XR2ViXHhoV3hnTWllY2pnZnFubHdpZXVxbXZxcXt4d2xudlpjZzBAdow2LaknIdol HdAjG9srJds2MfAwJ5FONatWN7VqOopoPNBiPJAeeJQmfY9YR45uUrl5WLJwTIh4Z4J+e5J3aLJ4 auRTTcl4TOVmWst4bOhxbMxVU9YoXzqVYLSIVpiFaYOAf5iJdriGZ6eUereXeK+KcaeWYcqFWNeL WNqRXdKDTMiJaNOLZtqWaMeJd8mWeNiZdtKNc+GaaOWSeNujedGkdOOleOOhbtmXWq9XSkc3hCxz riVWk1ZIjmZZmG1xkHZupUt5rUhLVpw2h5gtgaA+jKxXmqdLk492iouDd7RnpLt1rL58sIZ5rd9d ouExizuDu1CIuWyWtHekt26Pk1qXx0mOw2WbyXOcyGmhzXSm0FqypoqIhomGhZKNi5aSjJaTkp6b mpmYloiSlamZhrWah6CdnKiclK+Ti7ekiqekmripl7aslpORsq6PqqOYrJCrtqWjoq2rqqmoprOt qbizqai0ubWzs727u7i3uKqts5WkmMqYhNeZh9GQi+uTjtqmiMaqltqplsW0mtq0mcqqieSqh+Or lOW2memxjMSIuMqTvMe5p9q3pcO9utSupua7pfCxrqbPs9bHt8/EsOrEquzKt/DQut3Vopi6146w zqe6yqS+1bW0yZ+dxM6ZwtCrzdarzdOlydy41cO90ue31anC1rbI1rfDzKvO3cTDwsvKyc3MzMjH x8bJ2NTT09zc29fX19LQze3TxPHXx+PF3PjZ1uvSzvPn0trZ5c3T5OzZ6OnO4uTj4+rq6u7t7ezs 6+Xl6vTn6+vq8vbq8/Tz9Pn09vr5+v////39/f36/Pn1+fby69fl5SwAAAAAewKCAwAI/gA/vRhI cGCcgwgTJpTDsKHDh4QiSpxIUaKiixgvMtu4MaNHjxUJPRzZEJq+kyhTqlzJsqXLlzBjypxJs6bN mzhz6tzJs6fPn0CDCh1KtOhJORqSKtUQY+nSGFCjuonhpqrVqVetUs2KNWsbQW3miB07aKzZsmbF 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 xWJsxmrsxnJsxwt67MeCbMiKLHMEBAA7 ------=_NextPart_000_00A4_01C95996.7656DB60 Content-Type: image/gif; name="Projeto_Parcial_4.gif" Content-Transfer-Encoding: base64 Content-ID: <5BA10E58740244E5A052F1A88FCCD423@adm1> R0lGODlhegKCA/cAABsdHhcZGgYGBh4hIR4mJx02LCMkIysrJiYpKTIsJzctKCg0KzQyKjwzKTo5 LCYrNCo2NjY5OBwfH0Q0Kks1KkQ6K0w7LFM8LFk5K2c4K3g4K20tKzdGOC5KNCBaM0tCLVRDLVtD LVpKLkdHN1dKNVhVOUhXOGZILXdJLHhWLmZLM2lXNHZaNG5PMVFpOnllN2xoOzA6SjI1bSobbjlG RjNPUjRHaTNMby9sbyRgXUdIR1VKR0hVSldXSElWVl1bWlVZVklMVG5VSltjWVRqS2hnSHdpR2dp Wmt0Wnd4WnRxTk1YalpmZ1h3d05ucGdpZnVqZ2tzZnZ5ZWl2d3d4eGprdWZaW0wxL4Y7KpIzKqgq INooIIhHK5hIKodYLZpWKotVNaVZKKtPK4ZoNYp0Opd3OJVnMKlmKad5NLNyLc1yLNdbK4h4RpZ6 RoZ6WI5sUKl3TIV7d412aZdkVd9oVyGOcXWIVXaFcVaJdF6JO7OIOJmFPNSLM+aVM5mHSYiGWpeK VpSPVaeHR6eXWLGTTbemU4iIZJWKZpiVZ4eGeZmYdpGOcqaaZ66TcJincbepZ6mmd7epd7Kub5Wq VcmWT8ytVsqYase2aci3d9CubemwW7fGa9XEe9XNbunPddzNXUc4hCxxlVFyi3J4iF9dl0BA04d7 kwiNjTKMplORjnqFh3GMkHOXq3WotFOUqzis0xib0Umz12Wv2oeIiJWKiJaVioqVlpeYmIuOkaaa l62Xipillamnh7m3h6emmrm4l7Sqj46Trpukpo+stqeoqLWqqLa2qKmvtbe3uK+wrZycpMe4hsu0 ksu4p+Snl7nFkrPLsofItNjHh8jFmtTPkufYmObTjuvjl8jHptnXqNTMsufaqOrVtOjlqevptvTr uvTqqt3ip5O2xrS5xZiZ4cS7vOZSnZbDybXJza/S3cfHx9XLydjX2M7T0enayObb2PLax+roxvTm yffzxurm1vPo1/Xz2O/wzdTY5Ofn5/b05v////v7+vf29PHt7Nji3SwAAAAAegKCAwAI/gD3CRxI sKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bN mzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jT 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 DJLAlEv5DI3ZC4vgCBZLsSBbsT+JsdAwsk6pDRWrU+FAswXYohSrDQ37DLtgKhmLsU7JhgV4QNrQ DkyLsxJLs1+oU0F5QEZ7oiCRU2a1okfLhkQ0sxVLoxiLKf+7wK+7cFTz+gRDYChqWwNMhT4pRgV3 YBAaqnQb2pMoqmlXhwQ8cAe+cAurYAuYAkC8MAQQAAHiigd3sAvAILfBwpQXdDAGYRCK4Ah/Yq87 GCCugA7toA7qsA5M+7lMyw6g2w6eK7pMuw6o2w6im7qfa7qkm7quC7qxG7qzG7qja7u3S7r35Lm4 O7q1q7q5+7vCG7y9C7y3a7qom7ybe7zEe7zs8Lyuyw6cWw7GwKK5cAfEoA5UAAS+4AvJYAz8ZwzQ sAo7eA7/oLnokL7py7Tq2w7q+77w277t8A/LS7/sq7num7v6u7//0L/9+7nr+79Ma7/zS7/+e8D+ W8AIvMD/DNzAAuzAEDzAByy69gvBFnzBGNzAEpzBHNzBHvzBHny/8TvCowvCCRzAEjzA6iC/A1zC B6y/+NsO6TDD6aDAJnzDOJzDOrzDPNzDGVzA+cvAMpwO+bAPRnzESJzESrzETNzETvzEUBzFUjzF VFzFVnzFWJzFWrzFXNzFXvzFYBzGYjzGZFzGZnzGaJzGarzGbNzGbvzGcBzHcjzHdFzHdnzHeJzH erzHfNzHfvzHgBzIgjzIhFzIhnzIiJzIirzIjNzIjvzIkBzJkjzJlFzJlnzJmJzJmrzJnNzJnvzJ oBzKojzKpFzKpnzKqJzKqrzKrNzKrvzKsBzLsjzLtFzL/7Z8y7icy7q8y7zcy778y8AczMI8zMRc zMZ8zMiczMq8zMzczM78zNAczdI8zdRczdZ8zdiczdq8zdzczd78zeAczuI8zuRczuZ8zuiczuq8 zuzczu78zvAcz/I8z/Rcz/Z8z/icz/q8z/zcz/78zwAd0AI90ARd0AbdyuMQv+mQ0O97DucgDsJg C8IwDMMQDMMgDhVN0RQtDueg0RVtC8Hw0OIw0iN9DMlQsehAwylNwyqdviydDisN0zCNDgwNvzX9 vuPg0Drt0DW90xy90+eADj8N1EPt0zo90g6N1CSd1D7N0UXd1ERN1E991EDN1FU91Q9d1Vkd1Dg9 wjetvv9fzdTwO9PqO8M0bdYzLdMvLdMu3dZmjQ4OTdMxrdJmHQ358A4Fh9d6jdf08A4USZFh8tfh JNiDTdiBLdiH/deJDdiCHWDwgBLugBIFVw977Q5+vdiDrdcosZ2bvdn58CygDdr+INqi7Q+mfdqj jdqnrQ+qbdqs3dqjHdrPEtuh7V+o7RIuIQ6tcA790Nv9wA/9INusLdz2QA/aoAtkAiPMAA/ZpDiH AAzA4E8yAiTIkwvK1Aj6RQ/64BJaQoMIyAjKVDkBFxL79SWs7dv14E0XJN7aQA/NoA/uLW+N8Dou cYDhjTzLwAzsxg36wA9GzA8AHuD+cA75gA6cu79Miwz/yUALD4I5tBAHmJMLcWAKt1DhFq4MmUMF UGAKuaAMHu7hxFAM2yUN7JAPJn7iKJ7iKp4P//AO0Pvi+8u5Mi7j5VDj5UDjyJDjOr7jyGDj5cDj Op4MxJAMRF7kxDDkR47kSS7kS57kIX7k3fvkxTDlUw6+Ux7i4JvlWq7lRQ6+QP7lOf7jPH7jM17m Zl7mTHvmvvvi7ODAbA7jrdvmwtvmB7ziKv4PrdAOLbrnfL7nNPjngB7of96iAtfnhn7oiH7ogr7o gN7nFRbZnR3pkt7Xmi3Ze33phJ3pmr7phC04xmBurfDZz2IPLkHquL076aQNjSAEV7ABGjAH0P0G GaAB/2AABso0B2+gnrV6CHPQ6/MNUFoCDPM2B2CABVjABbWO7HCw7My+7NetTMDQbj/iEvKgDZEA B3Ow7JbADS7BDZYAB18QBr+u6r0OB5Yg7N8OB5FQD7/t3/sQ4PngCu1wDjM+uurwuQqeCA8iBw8u B9p0OQxuCgJvCrRwC7RgChPe4R+eCwz/CJBI4nYe8Sjev3jN5q1r72euDj4+4zUO5jre8V9ODMpQ 5Eau5EPO5E7e5EdeDEnevQxiDFReDFZe5VT+veBr81u+5SSfDF++8RlP4zb+8/fuvG8Ovb67uWgO 53HewBLf9Cye54ke9X4e6FJf9VZP6Iw+6H2+6ARIkf6nPulgL+mXPvacXvZmrw0keqF4cAquIOrQ 0iynfurVLusb4OqH0AyN0AIZMAfzLQdv8Ny60Ou+XqzcIA/C2gjEzgXHDgZw0AiWEAmVk+2FXiAz IhLxpkzO/jr3UN+NoAtgkO2RwA2bzw3AAO7L/jrMIAd8b+70R3+NwN/+HeD8EO/z3uNkPvSgq/HJ EAdxIAfJDQj2Z3/6zuABT/ABz+AWzvAM/x2wQecrbtoTv8B6XfSi67o/7+O3D/Ieb/var+Miv/NC TvJHjvInz+S+AOUrX/PJwPLnnwxRPuQ5n+XrD/8kbww9j/02/vFizv1Cj+C5DxDqypVTV1DgQIPt 2v6xU8jO4UOH/yROpFjxXz6M+SRmzDiRocKGDF2101bS5EmUKVWuZNnSZctmMWOa5ObO5k2cOXXq pFfP58969IQOpffO6FGkSZXCY9rUKbybT5vutKntl6JDh/6wsYPnVKp/+sTaIwvUbL1mKjBs2ACG WbM3GeYw09bMiJE5uuag0DBXGzemzQ6x0KCBy5xGzN4yiwTnDRgwWLhAhjwHzuXE2uRtdqeNsWM4 zLi95XaIWaM5cyxxq2ePG+rLcJxp0/WmUSM4lnLjbqZvH7/f/PKNPEfQ4HF1INUhi9M8Di1d0aPT en7belbri2ht357Le6RIy5atu+jP/HmO6d/9W/4P0f1DhciPD6SP0CB9ZPn179+PP38yYoQhZsBk CiQQQGIKRHBABg80kBhffEkwwmKSMaaYYozR0BgEI7QwmQo15G9E/Qok0T75UpTPP2SMO6ggkN6T cUaHYmRIRuWOC+mjkDbqiBWSXhJySCJb4iYlmUpyh6mf6GGKKCjpcUeonaBiyiafohxKKS67REoq MMPUSZtpeEHkDzfc+ANNNv7wyolxxNKHLHvGsgcobeRYawMUGhEMjDm0gUebRYRohJHCwLiNGXi4 aaYRMDQANJKYgEGNr8IkA7SLL2Lz9IwwvqgsN7q4kQeeR+FAjJFI5LFHHmbmACM0ePRxRw45dP6B w89mcD0NjjMsYSa3evrhp59+hmunOBdVVCcZ6riTljrrbntkkEHkYOQRbm9bRLvtoosEGGDUuSg9 dNNjr6L13oEIpHWcPai++8oh8V4SA2wQQH4X3LfBASMMOEF/KwT4Qws3VLjADRVUcMT69GNR4ohb tLfZhEDSeGONk+tYxY9T1PijiM7tSCN1J8Lon1aCLPJlmI3kZuaSZtLGJqHO0vmnzXr2+eefgeop KKK89DLKL5kyakmobJLqJquAwWpNNKl2gw0lvMLBln7srNNOn4wRYs83dGlEiDeAgUoXJfDaiws4 mmk0Vzkgg4NSYA55LFPJJOOCCywCF3xwLv66CCOMMxL3dFFBS4MD0MRYcwcYWWmtJ5dczRaWFjmA GXY3RbkxVjjiMFaRmFzAncUU1k1p7rZtuWUE10O4tb1bRbiTrhyT0/WdI4/g21heeSfGl0R/HyT4 YIAbjFDgYg7GcHrlFdTQehHvTeb4/Ozljz7iU6zPRe+7ty9HkA0aZxz9jjkmwFtsEaYditihaGUf T0Y5H3aAjPl/AJbkSDWbCc52dsADAg1oO9NSAx3owKa8g2lOcVrTsPELXkACEVmhWgfd0DYYOOEU ORiFP+T0tTmVRRdjY0te3tAXzbjjEC1AQWrekJdGHKkRKIBcTA5hhBYURgODGyKgdtUIS/5U6zaX mcMXvtAFKHLKMoRQYiN0cQhdAcoS2qiHO/Qyq2bUoxxma4bmGvGGWmgDUo/jQiO0YSxloUNkw0Od c6ZFi0Voy3aNOIQcDtEITAQykOIRTyQgkbvo8O53i8Qfe97FMWehCDnG495+ksev5TFIQgETWPOe Bz0IMQhD1/vQwhxmvVNy72LjYyUlB3Iv8BUklq9EhvuIoQxb4EKXqlDFKKZQhScwQZhLWAIQfHBM ZPogCEGYgjpwNDwbCa8d6hhJAK05pAESUBvrmBICvflNBW5GZw8kZzmd8o6nOM0d2AAGLxTxTkRs 8A+GsJqa0mSEFYgwB0ygxwnn5BN70P9jERjAQAYwgDYNZEAOpsJGXDRgxbJpBjWAmgMwuAGMFxYG cELEgqI89xd4hFMe7qBZMxSDm0gZZlbCgpQZcuiO0xxui/Xghq7EsBp6PKoZaszNG+QABV0dEQ7U SNZIxEGQZsULRtNMxi5wpURGNEIRiYiDHw+BiNsIMpCXwAR4lkENsGKjF8DQhTHOdR60mhCtGfFH I/9hP2kuJEVKRQ5dZVk+/rBvRHpFRoMq5K8JbZJByfikwAjbSQJN76/KM6zBTpkw/lRoryQax/bM hwy+AkgYwlBGZ5VxC9DuUhVU+KUwf5DMZdKAAzGIAARc69oFvNa1EWhtBGJwW9zS4Lb+NOAtb6uA DPnwqGTs0Ej+2qqRlpUkGypZbkqai5LnniS6JpmuclEys22YpIAMHGd3zzI0n/QsHj5rkllyBiWj EA1K6iUKe50Ej3oorWncuKA7FQGJQy5CEfJckxsM8cEOGkEJ+vSBOrJEJ59oAwoUyIAQhCAHIWgA Bbk4lS4IE7dauEFQj4JMJuBRm5SCwQuZmpVomPYz8AJlvPIAaFle9ai9oMALskIMYpixDXdYYg5d iFs9tqGb3NREF8twRzMuA4ZDrIMelnGGrpzxj1Qsi16TRGoyMowta3VLqu/81h8bEQmtGvI2vRAP WKmRDWxoo3eM/F3w4jrN8ImPlpX+tKSAmnfnwub5k5pEbIIM5ufHBlrQqTxRK+86EFUEQQe8ZS1r WwuBB0Ra0pOmdKUtbWnZvna3vZ0CcHdkP4tUpLgeqeY1TZ2SbBYwxd9kdQIVeMAGGqWcD2zKSDtT El4YwhD4ve8736mVDlLNEPE8BBvY4JUcRCAX7jiL2K7QYBU4GFDMGCmk/BKHRNRFb3JohqUgJSnI GMbGgBEpi1tzp1e3mE53uqgc5nCYxODmbo6S9xbfwYwkRo6sZbSMqrydGF0xYxXLopgkDYKMXPiB EAvH3W3C04stbzk8XVWEfsMjHmmYmRrcsB+bQ/1W93AMznGmMiXpHErl4VnPKy//bCafd7BBMyx7 dKa5fp6Q6UdHmgAIIAABKt3zS0cat0O3QdGNbvQbJJ2YueXtFI5BkB29tSIzUk6pTx3AmWVdu79o Rjdb/fWv9wyBQxHarGldlW7vVBuKcMMhIJFBeBJb12vKSlYQ8U5GAMINyF6AEBbxC1PVQx7A2MEV NpCBDKjghm+gdmny4ig51ILDFbVJI7ggqclIKjMhZYpI73EPe9xDgfcwy7rXXQ/ayGqluJlDJOh9 GWYU2RL59owRGrGOYqgKMTlFDDDkgAeCf2/KA/GFGwRBiEEw4hCL+DIhxdPV2/i64vptBMY1rphs gHplJ7MIjUQ+8ji3spIx19ed/gH2vF2AVv232EUublEL0L58QBWKHjEwpKDFxtxhltw/LFtpn3K4 OaE7OqOTgaQ7QAREwFBYQAZsQAZMwKRrwFd4BVkIBhvYrRigASa4BWE4BsxaKkhCDo6xuqvDur8o CXK5ma9DMLADJ3H6up4wu6I4LynpjJmQml/4i/9yu0OSvg26qniCp3fCL14gl1QYoQP4ACEwgjc4 hF/QhQt4NiFgCxSQA8aDqRtqhsFzA3KJFDnQDLtggcfBAs2Tm3I7w9H7CdAzvXUrMkiBmySattHA jJnRhTLKjV1pBn/QBmAxg2boh2YAA0sABuA7h0ryHmWAgjTpoz8KD2l4xEcs/qRD0oVa8LXmY4br IxdsoB826wj2WA+JeKaQiaT/q7kS+Y87+yxdwoVZmIVEoAJYjIInGAIgoALuqAVc3AWWkz8HETQO eRhTpDPveQKhCwVUOEZjRIUJnEBXiAVUcEBjbMBjfEZXqMZmlAVZiAVsxEZx6EZxOId0SIdxQIcl wEAamIIOBC6PkZGKwIfui7L/UbuYSDNryrojSTtmAzsWbMHwChrBe8FWAy+zg4ojmQauo8e60IWb 4Ya2+QP8+pYM4rUhxC/88pxpyIbmOsIcQIAKKIEV+MgovIKCKigrbAE32qFGWBu6aTBgoAdtOAQh +CMWyAAw0IWQQsNyg4d4/7jJBTo3NjS9eqAcOGQEMwiNVAmN14gO1WAGXWCGoKQopywHMJCDgTNE /2uR/PAFOXADXJGD5oPESFwGYMCvSBirQ/qyIvyFaVhLZvgFTVyI+/k4kKO64SG5UsQX/TORZLAz OyOGWTCmZVqmGhhMwowABKABKYDFO0gEWqgFXcyzwcpLyTSRYLwXYnyAGGgFcAxHzuxMz/xM0AzN zsQH0izNcCzHDMzAKVCG7Vmq95DL+gESmZhN2qzNnbJNtYMZe6yL7WK1nzw9sOtJseNH9yK7oJCg msEgYJgGleAmbRAwRHi7dyKXdno7YCAzZljLbOAGjFwubNBIBFAAElABFf8IScRjCyFwAyHQBXfr E5W8lDfQwl9wN9TQPFPByXDivHiIB3fAyZ/4TXvwosrRDUXpFa/0Ewjztki4DTuknNBwh0ZgAScI vhPpD19ABEAABD8CD0d8RGYgq7LMTrbsBfAgq+igTovMhnUANdicy/f4vvATP7ziv8ncy/OjgiUQ BR3d0R11BVbwAQSIgB4YgiOIAilIhFlwzJbblxp9rJr7vykTiMsMgnMoTXwIx3YIxysNTXTQUtEE TSsN03QIAghITQ1UBfnxQIuJs+EZCdx8UzilzSKhGd68GXNDIAD9TeLkGYDc0/aSEt7EBkF1y+VM CahRgj9QBLNMy174hez/TDOMtMeZycgRQoAEGE8KmACRzAAqVAsjkAMW2AA40ElFwJU38CltiAf2 vA0v1MJ+RMMweQr8FCcEuxMEUyPIwI3DOA0sYlUkugwdawRm04VZyQRLYIRCPJ7x8QVGQL5GeAQG 5QUyE0teCA9mwAY0Q7O1HCteONFcIBdmwMh1gMupc9GQq0s5K0XvmdEScZjm2SyY06zmSYQpGAZv vFdxWB8meAAI4IAeGNIouIMkfUxeND+DZdImnUxkSAYBDIJxEFMr/VIvldjR3NJ0sFJ0INPbioAz TdMWyRiOIZmFgI+RUAyTfYs4TdkkKRKZCDxvylMA3dNXbcGcaRIqqQtB/81ZbagvXsjBk6gJd4gH bWi7nnXLa1WuSI3UrNtObtgG7gTPJKSAKxBJtTg8g1pCTmUBFuCjG8KVRSCpPooVw9AFdygLwSO9 /IxVK3GKzeg8NCw9oECVvXiDx1GNPiLWNECDNEiDx1GVzoGDJ6IETZCGKBMHy9oP9mGlXFAEbHmE PgIPXSCXE10GbJgGhNzZIiSXX9jcduLcZkgOuHrNuOKR+FAHuzKIdRA/ymrXAqk/BtksZYDdWxis 5YldztosX5gFp0MHzFof32WfKoi0BYgADuCBH4iCRMhFXcwFPWPe5ukXh8k//eArxF3d/lglZGhY ZABNdAhT0mQH78UH8P/13vENU/ANxy69UnRAhxgo0/algSdQhdn92IX4tNB1D5BrB1dQBzhIPms9 2WU4WZMN4NrEBts04Ny0LpRohmUQFPMap5/0ydPbx6Dwrgcezgr+LqFpkqow4MotiZwVVIPkhZ4V IBwL2v18yUi4yKRtWkmdVGyghmnYKZuQB1ao1ANQAAVgsLHJACbMACWIiw2wPUVoATKcA1wxqTlg BGCIlED5JxdDtxX7mQmaiqZZEpxg283YSZ7c4gWiB4DcoSKwQsQ4BBTggi9InDP4gsARMTD4my7A AkqwBlVYlgJRU/8jBrYbhEfwKvEYK3IJYMs9iQvSXLUz4LX8BV8ohnL/oB+5pBHSRR8VQQgo5Q93 NT9lSF5iYL9dMJC+DCVcqIJWwFd8HQVIQ4AHiAAdGIKATVLQIlg9O9jITFjKpLmGFYcupVhd5sws 3WX0bd8yhQANHAX5+UCPiSZIFgl1aIM2uIxBcLgAFmBpNlmZUIyURRLPIbdWg1lupmBvwuCAdId1 AGGdNYkQ3lnlpMeZuQn+5IaLfGF4xkjGWIZq4IY6qYd4uOGNTAAFeLYWKKj0JE8UQDxD8b0M0AA4 0JsrQrIdeqiy9Ro6EScFoiB1uol1Xmed0EkUVluomOK1YQGKsgwweCIsOBzDMQPI6IIswAJRwYJG qErhiyVZghZA4GNC/5oGGZ4GxZiGsfoFerwgR2XOlABqY2jkFq2fNyse1cVLBWkQ2V0/KTACWqAC TR6QznoeYfCFWmgCV9hGr95GU34AVFbl40VS+IPlJTU/BFHYyhwRAbSBr45ruZ5rupbrc7hrWbjr cxiHGODX1tLAKZDfdMyP9ZFpgZgPWRoHVygHMyiDMogNQRCEZ+bQaJ5my7bmN9WubA6pbaaTE+rm mJXZ7wJUlRBUlLhcoP4Li4Zn1n7hbFjLanDa/dxPjTSAfj4oDLiC9BQCFTCCDdAAFVgEs+ELQDGC L8INw0jJ1pCTFLoTPu2ZK7lim2BtAaKZ1m7tjLaJWIEMFECBLwiDOP9m6cNp6S4Qgy7Qg0yYAxWY 0HM4XO5JBl3YlkHKOLDiac1FUbdUS3pcB/7m77rY3GYgiGR+M4U43UObMzpr6nflrM9aPzk4jICt BQYBrauOkFuogq6ma1GIALFOZRoAgiegglnABfhjv5Zbuazus1kmtCcVv7fWxrqOcRmf8b3uawj4 ayYYBVxIx3EQwe+DpMU2g8YuAzRAg8g+ckHYFQ5dcucTD2ao7Mumzc2+Sd9EIeZmbtD2ZpklbZo4 bZagmTS7aOzOievOOpzIZyScWt4uqDcQghAwggzo7rJZoYeK0DPqkzmQFNdzFbEYnT4Xi+c+lVOR bpKSVFOT1Ao6FT7//JsMQOM43oCSjmMh6oI0mGNMkFA7pjnUkW9M+KpE9hy3TDODzO9B3qb+Hmdj 4Dpj2CYQhCTwS45JruT3vuQBYfAGvwVW1KVZePAuEIIjmAX4KfFdGHZfuAUmyPC5XgUOjzRhBoJW Vl7IfN5/adIRSVhiYAJIs4FYgPEZ73Zvx8ZzOAYbx3E0JYaPPeaRHXCGSAXGHvIiRwM4QPJ4l2zr WHJ7v/cSRdGTnXIq/yayuHKAz3Kg5McaNAmSqm7mYlqgxYmFpwqHf/gstgk0r4F+VgALWAsweAMa grYWAJRIOQNCeIMUGGgr3IC50GZ9GJ19GB1+aPlj6ZrP/mzTIz01//y8zwuvV7W1nJjiBdoMPkyo gw5vKBIDDWALtviCTPAETGiDQjyGZHB698HLWoiqi5uGZRirRz3tZrBcAzZ1/y5n/oa6ECS5emFX GhU0gNksBgetWmBFV1SFOJiDLNCAIkgEYbiFVlw/9jN2ZJdrVqABsUaAZo8CERd2giV2FZflXgy0 tra5bOf2b4/8GD+HYbBx16KBJQhsjz13kH115NhfIn/3d9cDJC99Z3U4fLf3KrIOhQQMt61ygL9y gYdZWIMa1a6JAWptb5D42Q7aiLeSM99PiEdh/vT94L9hip+ABDA8LjiDNDADCYPzNx4iSleDNAAD k89zt8g6FpMTY/5BFpcXC/OIfX2owZ2f7f28h3i4eYE3C5oXPJ+Ihyb+7d+Goi8w7y4weg34gjQw VqYHiHbniCU7ZvBYsoQJDRZMVuvQIUSRIvHSBYzZNG0atbnr6E4btmYhm4kEWZJjx3Xl1LVr6bKd upgyZ8osZ/MmTmQ6d/JU6NMnsaDChClTduuWLVy4ZlFJJCUKlTlisvRIdAtJIly1ah3leotJKlli x5JlRQPBAwQQaAB5QmXW1lu7fNH1tWsu3aBBf+ol+PMvYMA8df5lAuGBjVhkFzNu7Pix43PBDkOo TGPJFFW3iB1DNm4lTZg0aY5zpQ4N6tSo9bAW5Po1bEKEBjWqbf77Nm7bEN000sYNHnB58uoRL26c uL3k+pYzb748OfTo0qdTP17Po0duHblpd8cdu7t44sWHHx8POHr08oCbH5/+ffv24LWlOlVDwQQM GzZ8SZOmywYoCPgFFhtg0YUaanSBRQZzaADGRIpg1Isii1SYyFa+lKOPO7UsYkgiFgLDCzDDxaOL G0q44UYSK8oB0YeHKIIIJIoAg800Od74yy/AADMNLyQGSSI2IIE0JDAkAdMICvtpgIUYYqTBhxgF GnhGGHCg0cgqAi2EUEJ7NdTQQxA1ooguuiyT0UbdrQMSNsZohA2dxhhTJEfrhNeOTaO9NBqgNeFU Tk98iRmmUP9DEWXUUUslEsURUbQVBxhZcNECClK8NYtSW3H1hCiQtXJWWmtNCpdcdaka1Kp9uaqX YIPJOiutyTDxAGKKQbYrr71Khmtla1WhijKdyfQSsn+yJJo6pgnCGrTRRgubILJZe20jluSG2yCH AMKCHNypN5x1x0HnHLr6ULcuu9MRRw+89Jjn0Xj0xqORO8LpK5x5+/LrL8D+qgcceNxlM80yE0FS Xw0TZLAfFmGo8cUGGnBxcRcadLFgGAtSvEEGKqwAwgckkGCBAxVU4EDJJZRgyC+KFFECCCCsAAMb bpRojzyQuGEEJJAwwggkPvp4yCI8MsMMR9xhowg30zADCSL/bMDgRhFFuGGIIYrwgogiirjMxh8V KlKLGw9r8OQXYVBCiRhg7IcCGBrAsUyX4vS10JhgJlPMLnJIZBsvGOHbUTtwaqTOOv+s8+ZG2mTz eEorsZMs44Cuo86g5Ywz6+fIJCN6QsUgCisxizK6yy1KLTVLIlNE0UMPR1AhhBZZiPEGFVQshQst ntYSRaistNLKYqmwEgRaD6zlg1twxcX6Xb4QQ1cu1u9t+l/cE1Y6YKEPJj5P4t+K2CuN6brY+mS1 P9b7YsUvCzqmAGsZE5kpw5lnyGi+7Esu1xLTyKYSbztga6Qlm0Fcy1oMdKAlLJGJCFJQW35gAwvc IC545Itc/sWhh3XsUQ97oMsf6TJhCU+owhJC5zj0uAcM75GcEdojhjCMh3BgqK/x+AuHAPPhvtzB Qe5oI0fMkAQkGjE0RjQCEpGojw9OoIGKfUENaYDYFy4WMStWCQteDJARriaFHSwiF7fIni8SQYsi KIEXv+jFjyJhhBVo7Q9GMAQ8+qGPp8HgDzAoQiAkkY14EMcXuWhhC7GxCF4wAhGBGAQgAsGNWtAi Htn4RZAgAaQS4AwQiJBRLRQhBwxkYG0H6sLbwoCFK1whAy3QwBua0A69vWovfkuILxTxCEz0YiK9 gOMvitQRxemJHcY0Zjse9zgj6UkloAkUoDpHKFqRzlC1/kydMhZ1lEY5qndHUEELjFApLMhhFlFI BOxmoc51Es8VrmCF8Y7XCne6wgdoIcADIqCDIbxlenZRFUCv6arAKISashrdrIhxvsT0qqEOXUw6 7Oc8yyxhWJvpjKzGodGNavSZMSmNOg4o0pGStKQHbKC1KFHBRoxhDC94A3d+Aw/hlMtcykkXTnOq 053itF3QkWF0YiiPe8gjHvmSoVADVlTvFHFpv4xEEici1alCtT5EQMHaNBCGNBRIA184w9q6wJov ZKELZ+jqIWBwM0MMYRd28oWdarELKRTBEBnpBdGUsAIl/OEQRlgEPfihj2YoAgaGhcELyBCIXmgj HnSZ/+E74HWPbChCCYZlA2bJgAhtbEUbVEMEjZ5hCBLcDAaAACUvFiEEDDzJYgd6WxeuoAD8XEEF TpilQBtiEILkMhKYWAZwmWE0HtGpJMU8JnLZoczIcc6j0IzJSjpn0EJZsy+q2yZSXpeI3kXhBVnQ ghY0MIKsRAF2VLgDOhOh3nbG4hXuPB4r6LkEXOETAvvsZ6oAWj267EIY2tvL3ggq4IRMdzALfSiC HZqOUeBqokEYli3416fnOvejprHE2yqhYU1UQhMe5rABTSrikzbQEm3wwhhgukF91ZSGPH0xc0gY Y5/SWDntAuq65MEdHLdwqO6Q2tKY0UuqRqIXwB3yRP6IBglJPIIR9RkCVr2Yho9x4QwUw8KU4HAg NYB1AxhYRAlEAANDHMGtX+OFMZKQBCnwlRr2iAci/FgCNlrNEPTQYzN4kYRQ+nEFL1CCI9wRJPK0 gx0d8ZkROKkEQACCDZDokCJ+8Ye+LrIXfyDtzU4bNl54KAQY4ELFFgSHTNRNtviZAA5wK1DUXQ8S uwTuNOA4XB41QxvrMDSuk3vMlGjkJtDFiaBuwpNB7WSaswLKNYdSFEZx07xUiMITjJACLmQBBSVA 7xHUSwVN9a53T3ACKhTzinG3Ap7uXAJa0BIBHvBTel65BUDjXZdEZVMYh/oJNUdH4J3EKhk/wJUN Ev4slnMQnDHnSPCCG+w8GjBhFBHWiUeT1RIBIqtZ6rCEhjv84Y1zHMQZDzHIS3otSsABxWPwjUxn yuIQyhjGPG25umpM45ivi4Y5Fo8MaR4dbLgBEkYGLtAxMg1qUCNhSh4aJAfh20jg4RREyAAXNCCG s+7nq1EPAx8oQSD/FAgFFCgCCESQMxc4pQQmgEESTDBnNzBikN5AhGFLoASv8UIb9VAXjhYBDWz8 IcxsYEQvYgaM8bTkI4pYURL+4PNeZGQdH0LE1oL0o0OQwLAqklGkawGMUVrMQF0AgyVKmYEJKOAA BsiBqu3tqqGsnhePkKoTZZ2jafyi1rbGjnJ1/f6OyA6TUNKEbk1mIs2DDvhV2tymLZKv3ThIAQlH COMKSFkCKQzBBEAYwhCeAJXeSeEIS0DFuGUxbljIwtxOSHc+eWA7VN2l/XbBrjL426pVDxRWBS1w T/6NGIGfQxwFJ4v//Z/BCaBYpEMVKBwEBEH+4IIwGIROfMZzhQZMuAI6tEEZtEG1ZNiGdRwHetjH feBIEQIlCIIZmMEYZMOK7Uu53JTL7RTMydzMtYvNUQdRyYOMRYe6DNbfLYM0EJ00/KA0YMJvLQMm RMIjDAISJiES/lZ98ADUYcEZZMx+gMEXaEyCcJUYKAjIsMAHlEAIhMBeTV8iAAEHsEwFzFkR4P7M pMGACLiAEhhCLWiDW8VDDU2DzCCBEswRDFBNkYXNR2iDOrADPcyJnGADj2hEMiUC1yACMFCOOygC pq2I19RCzJDIatUN20yRxWRAAxjAAKAeLREEQ3wJ36ROLQxN2DRRJCwNSQhXkDEDSdierSmTOxhT ZMELOxBKc/3eLhLbdAEG/V0X8nUTXbnA2a3ACKTMCBCBDnDAAnCACfTAE0zjERzBEPgAPbkTKsAC KrjC8TQBAoQjBOgTP6HTux1F9bhfXajjP83bq/zFQCFKYORfWiTG/AicrxwcWaTDfDVYAkIY/zxg +YyGr3GOOpQGOszRCqwAC7DAC4wBGbQBBv9WiwiK1AdmnEWGmEiJICGUoBlQQwqunE214Ms1BwzC 4IzVWA22HAm1HDAYARtIQzVUA9HNpDVgwiNIQiQwwiP0pGwUQk8i4S41IQociCoBCMiszRmkwRlc DFNuoRLwQBEs5AqUwAgcwR1IgQmwTMq4DAmIQJiRTAm4wJ7JoS+4wzd4Qy8ogcuEmQpk0KRx2i4k TpGIB538gjHsnTbwAjRAg0bcARIYwiI0Ir4sAgmIzIoMyS8MZmqBU91UjClxQRZhgAOAIkG8CkLY X+rMgouYSW2kCWiGptH4SDHEYjPc2u7RQ2S9g+9Jk2sa2y8Co0AdH/IlBexkpRIYo8s4wAL/OIAD jIAzdoAJRCP2FecQ0MAqwFM8HY83isMqhKNa0IAPlKO7YVf73cVRKAN24oU76sV/5daAyea/EYAN jNsrxAJ6pic+Chw/IqAPWBQxQNxMVNxzIaQbqMAJiIDIMGRD9udDtlRLkQEcZCAlpNTIoRRFjkEJ SkNIetBIkqROveBJzhy62Bi7CAfM5aA+9EMuiAw1zCQ1bEM3eMM2FB2THaEg+EG1FIIQXsIjcII0 WFVRhgEXfBEGXIGBfMGCeBWNbkALyMjsGIEbfAjt6NUKXEAFjMAIWGUFfICTUoAFgGURxKEv8EI8 pKWe1RXNiAzQIE1nwUk20Ak2AMMvFJEh/+olNnBNhfDC00RaEnxAVbrBH/CC1wBDnfICFGDAY1YM FuiolJSBEdzWQGDmQbzKLFgBFECBHLzIIdhGaD7qo17EabJDasILayLUaw4f/sHj6rEeNhXFMDrK HUQBG8EANG5lb/rmAiDAAnQAB1wf9gGBrEbAA8RADNjADYRCKNBTuYUjASAAOTaFVsRFVxAr9ajK XSjbsmUTq9wb/d3b/fHbeJYneq6ntRZgECCgAk6BLdgbRn1GhR0L5lDgzzjkC5wrup6rubLAQrZA Q0JkREZkG/iBilKLH0ikRPrBIKRACrAAM4iLENFUTbEghKaLhE6oT1VoS7akSdaQDaKLHv/1A4q4 wTZU7ExW7DbQ5A9ywiMIwhgIAlBKgzVwwiXAaH04wQlEzNpkAAYoAI5ezNp8ARpU4QacgBvwQiKY gBscAplKwQe8ZQtgAAXInSGMgMqYzARQAAkYghJIwcEogjekZSQswtx9gAicgBG0QM8tgoVkg9ce jEasg+aFwzRcUjDBkSF8kmBWVhKAWQXopxsAgiIIZtfU6SjRzX54XsekASU0Ah4IRL15ajLUUjII Ay5YAeIqahwsqhzQguMGz+NGbi2EZi7cmmpaqkokQ+jkBPkgg02QzzSRj0IUg5iwml4oCrMdhfKJ 6uy4agck4wIswAg0QOwigAOYgJLyAA//0A72cQACHMADLMA4QoCt3oDxIgAB/GoETGdTqJNWBA86 bhPrGOtRyFv2EIXgBtjf8MXfvOPgDu60vgIsjJuuiMP86Er/wU9jnCdjzA86ZKs/Qg+37g9nIIQD foZGea7njINMbI46oAMFGkKYmQwJtGUJFHBbfmUIhJ0KiExDwkAevgFMYhYbkAEFX3AgnMAXAoNv CFFwGAcIFYdyoJBzkHBzmDBzoPBy+EN1tDAO6oMJncsKz5i63F2G1oM8fIQ6uAM9wPCGLkcu/Mg3 WOxM2mTFEt0yDMIY+EFPimwQWkM1rMIp+ABrYYEGjN4AKECOZhGWcRXInAALgE0JMMIh/0zEHDEC Eo6BCoCABRiBzayACBQBlGKAChiBEWDCBFmDN3BDJPjVH4hAQ+Iko32SRCgMIyzDLyRDIkQCNUjD mkQCjDKDESACI5TNISgBJjvpCqgAIgAC186tYvLCG+jpfpTSgfRp1smSOCiKdXmq6hGDMuCCrP5A oirqosYBLueyLueyKZhCFTxBFSSDLdKDchEKQg1GTgib5+YbQbWy6oAqdmXX6zzbEfSACXRAB6wq 8saub4bjAjDAb+qA7vYAEJwFdCpcWkBn8jrPPk2BOQoPsZ4jOrbfLcSf6viXpz4rtBIYPAoDEDwA ecLC+Ao0+7bvYoiDwSE0/OhKe5mnQ/+nTzrAL7C8p2YQhHyOxkbtBAQe5OcE8MlYAEiHNEhXwAEc QAMk7QWkNAUowElTAANMgAWkNAh8IU2TDAiYjAq8wQdMwAXoQgd3BLy0mIsVbAtSaIT2lM45Rz0A AxTowA4AgRT0cD9MdT/4gjbogzzsMcZmrNduQzYUnRITwi7NZCaIrDVIsQ+UkoFwwRUkAI52QRiE gVbpwce40hi0ASOogCBYYBuwgF6XgRe0ARkYwQUc6QoMdvSdQAoQAiB4QSaQnDTs8TIAwgocwgq0 ABlwAidkwiR/EicIIR4XYS8AQotigjRkAid4AiYYwSMQQhv8zB+VQJNuMkQcgmDOHd3/8cIhqHXe PomUwcHfrnI+n+6rKIMtLEEQAEHi1jIVxEHvVAF0R3e3VcES+EAQLMEoEMOycA5hyIoy4x+/cWqy KSt2JV9SKAXsdF8PyJ0JrGryEkABxG7t2i4HcEDuAoEO0EB9R0AELEA6Qyfy4hM5ujOnwPOwdkU0 w99/5YWiqN4rNzN4hsk/B7RiCLSFn+f6xIJCJ1hDi6/4Wvj4noNEO48COlwDesZGA4qyyAQAo4Mi 1PYh9NUhxC0guIEDkMDPqEBKX0AI1HEeOkAd27GQ27EQlMAENHADG0EFuGxvdIcHCzXBEvXLJawL IvULM0cz9MABSMAAGMAB5MJy8AM///RDMXCEPKTlVm/1V2OCEg/CIyxDNViCGESQNKA1Vm3AUkZd qKWBKvEtqMFSCwhCJmDCC2SCAVUCI7wAJnjsI1xQCLDBBWDAGDACIFzACXgBYwe6GUDIN/AxG4gA IDxkG2CCZrfBIP/gTZYsI0TCH1D6IGCCNWTCJaj2GxQCCWZABpyAyzDA21a2bXNtEtSIItQIIqgA y+YtxHDB593WKjszK1vXLSB3EPjAElT7EjBBdGf7tUM3E1R3tUM3KZjC/uhbZ+wbeBNf8bXysqYu Upy3OqkCNQNBDxhj7L537R4AA6zqftu3OMPqEOC3DgQ8B0TAYUCnqUSP68CzpyS89P/aBetAM7M+ eC0N9z4rRF8ogw8AtA2Mr/ihp3leePiJxYbLwobro/yMxUOLn4WfgiuIw4gnIGbgwi2o3rfm70ZF IAUuQtGMZo/AYjMcgRxIjRvQNAsAwjJYAzUYASNotllLA4xKQySswNIAV9RXAAUcQgcHh8CuYIZK eYRS+VFDqC4wAACUPZcfwYb2Az/4gy40AjN8wzeAQ5pvdcK0+ZtbAx1oAcZlghRf1ZMkiI5S0X98 AR+kwRRlABxkgICgQAYQAodlQqUHLQZgwAm0gLviOgs0AjAogQqggF+D8QsYATB0eiS8AAhkVkO2 wBuMgQargKjPRpMxglqBMSDsNRn+lMEYhEAKgAEK3CgGkMAHKEAFgIBpIQKIGEJdcY2FKEISCMEV 6Aey1+gbMPvqrZow3EI500AN1EAQXLe1fz/4W3u4K0MyBIMpBEMw0K/nIsS561utIJvxoS40q655 u867P1v1cQA2x258L0DyAsQAAgQQOIhwkIMOHkCGDHnysOEQIBN56IhAIwjDKIlm1br18WMtkSJv jSxpy+PHXcJ8EfPVkpgwmcRi0iSWDCdOmzt53sypE8gDAjZgFYX1KlYsWbJiFX1l1OlSqbLEVVU6 VRZSVK5kcb36VNaxGAQelIXgg8koW8SQjXNbTl3ccuOQ1R2nbq5bvW5doVtUBED/4MAMDjBAYGCA ghMqVIQIceIEBhaEBq0Y4+mTp2vgwF3zbI1M52rVOBn5YEGONm7u3MmTVw92bNn17NnTdxt3bt27 effWVxt48Nq+cdsmztveIgUJmE9Q0CNfv378/OlqxOzbN27buHfnTm3ZI0AsBkWiZilLl0ycCOE5 5SPDhi9q+ITBcp+L/TN8vmzYcOWNF1JAAw4vBMkkE/EuwCCDE1pgoQw9+JgQDRQyuHADDDG44opF vvGmFzdWaCTBRzIZBA4wTjBCBRLXs8YaaaQxApJHHsFERmk4GaQFMnjk8IIRHKAAiy7ESAOONwxZ kskkFjFEDhIwwMC/KjXgwgg8/9oRJyaZvBTGJjDFFOYWIGKggYYa1KzBhiXcfBNON0kZxRRliiFG mWBMMSUYZdhCJhmf6hqU0EIN/UmnnsIURplGP1IGJJBswQWXWSxVRRUqohiChxE4+HSBBUAlCAEE QoUAggg4GEEhII54KIpYZX2CiSF+YOKhKajgaKSUIgWJpJJ+XalRZbxUFFmafkqWJmWCQGAoqIxa KilppX1lqXPOqaorV7hyBalXXtmKK1TEBWuYsch6AIIgmFDllj/jmnfeduxth1513tLXlXYUSWSA g2hYdYQdImjAgSvcWHgFFVYQwggjIonEjRc8uRice+b5prNr2OhmnnrgWcYNEv9AcEMbbdwxxpdi mqFnNntiM+64mmsWDmeafdPZZn3qaSQDDVBAAYw3aNFnOn7ysY4a17zZLpuouYkavEjaeIER89CD A8ZC3Kvhig3EoO8LDcT44j4NzqCEC/8UCEGFFsYgYwUW2HjhhTHkLkMQQcogRJM++tBEkzOqPHzD Kw75kGIhABmkbz/aUNHhEFh4A5BIlpFmmWWMYCTrRzjhBBNMAFmhDUFOuIKCD0awQIM1ZJf9DDaM eOONNg45RBFD4lhwAw0O90+FJto5hyYwFy22US9vYSKCM9Nc080qqiAlTlJI2dPPYoP53s9jkDlG 2ZwMPR9QRNXn6csvi5WU0vj+Kb2UiimYAEKHT03owAEHoA0VgKdSVUIWMgRcTQGBCKRC/RK4wF1Z Kn7BApavbrGLXz2KUWDyRftm4hNm2UR9OnEWtGpgLVhcJRZPMSFUlKKtrkhFXEl5YSxcgQob2tAV wYAAQcxCgyVUQRW2AFNb3JIvddwLiUhUR790sQgL6AIZ5UDGIuQADF3MQRdWcEc8tFEEEajACM3Q xT3ugQ0PeeMbNNtYNwCxDXv0Qx/ayAYwYGAEleViBAyIwAgSATPa0EZmtOnZIHeWM+AcZziE9Jkl zBAGLnwBDpaIh3T40Q96WGcb8vjQ07jjjXi4IxvLiEQj7pa1aliiC5aohjX+MvG1sI1NDVzAghrU 0AUsaCAMesCCfw5QARGIYAVGKAEJjFAEN2SCEoT7xCcEgYbArYEPfUhDBhhETWom7hDe2EYjjCAC I7SBDBEzAgsWw5gTyEERjOjFNKbRiyIoohET60XnmHGIIjzuBScQAQlIEIIuzE52YkBBGNQgO1om KQkquAKV/DOlDVkAB1vKoLGS18GdkCkKqTpTDYLwgzjMQhWjGIX2SKo9U+CiUd9TKU3IRz4QJuN8 iELfspglE0dd8COTuhSmeFq/J3AKTTwwAQ8WMJBQlYogqIIAB2igA4U05AlRUKADqUoFnkKwV5SS 4EcoBRJlvOQljMKgnxT+dayXJmpRyguTDwgwAKKssChXoZYKrYWtbUmFK3hdire4Mi5ZBEMoZXlA BNw1BZQS4xjiG18yEktEvRhxXkzUhRCagbR+NAMOcHCGNugBBXr0Ix9J+CJleREPb1AjCbrIhTYs mxtgZGMeSMNGNnhRR2zkggESEAwDaCGbQAJSkT3TmSGDg0jbSAe5cCROPaQBhzSEIZLSeCM/KskO XkAiHvdwjSZdc4/aaMNGjRiDERqxjFNaYhur5IQrN5AFMZxBA12YkH2+cAYuCA8DBjiABS7QAryx YJxt8ETgNHGxSphBcLPrwoI0kIEJUGBBHJLD1BgBAxLUEQQggFsLMsD/mAygQAUXAIEQdCGSIyhi EY1oBCR4AYxfSKEIh3gDC1KwghKUwAJYAOgasMCFHcsODm54g0M3kDgOTSAHx2NfBjs40VtQAQIY AUIU4lAL1d7CFKMQRUlNmqc97alPjMrTSkPYlvPRRX3FQJSyKuo+SIEEFzq1FEh3qgqQVoEJP/BB UIfaAQMMZAASkAABaMADCCAgAk7lAQ9+YECpOlBXVuWpKio151lQihZZpRRKhAUSC34ErL4IVAY3 KIxA9YSiPFGzB5Ulk1sEgQASsAFdoUJXbFFLFnWFiiy2dRVx7NUVSrFhKmooDlwEtiwRAAIQ46VY upQD2tB2y6Ccbea2/vSrEbogrzbiQQ9tDAINa7CENqAAjHr4wxBwWwEwIHEJa0CiAgqYwAWAYRuZ Saccv6iHPuixjGkcIpjNEMIELMAcAEhAi/Xw48wULpzb+IM3EL/NISU+8doIUjj+oBlwACmcjtOs 4sWBeCL1cY9llCEM0LVEM+xBXequgxe9iAdtNKbJb8jDH+5YxhngAAgYuGFipeNMNTxxCfcMIT7t bdt81IC2NOzSPxQwQAJYgAY1CI5wlDBDJfoATU18QhMoGAMf1iCGLGTgAirwAhgu8GAOXSEO20GE CCwANxBMKW5TykALNLAhDISgxLQ4Ai3ioIQkKKIWwMjFEEiQBCG0/wAMKUiCESZwhX+uoZYZuLxB aZeGNAQvPkTeQPG2tOQmi9lYt1BFD44gB97RAvaw3xOXSfrlL6sU93uKifliipP0hRCtFxXTTX1B 50vHb86ZWqCuQEorIPAgqIvmALR0OwADGACpA6DBRJ7PEIc8mqqTtrOlj98RkURQq/LDBU5vUayy qpXNPbHoS53V1hokJYVwdQpSkkLra/FaHFohAPlqKXDIhmTBFJBtsArrsMRnHKINsuhFL+riGLCt EdxACNRplOBADDqQGd5As9wBERajBdLpEjrBD1ogcYRgkkruHvTBGCaMG7CBEUimBIqgnjLrDMAg AQxACNxhNmDjt/98y2YOaTdwxo/szTiWkLiM0Lhugx6AQQ7MoAvAIJKYQR6Shh+0QREcIR7sgYy0 Kx7iQR7yYR2oQQ3EoMb+ABIaYRCqYegywWtOgQiCZgNuaQOMpGyKBOpGrwJawBP6gJboY0L4QBPI bg0EhxIAARAIAQ7MAAwuBxDIgBDEiQWEQAgaIb24SQgaw6HiZqEwQGj8DgOEQAqkoASO4AiEgPWS QAmQYAQq4DRa4GqMQAkqYAIyoEi+4ARCwMd2TAv2gw+Gp0qwoA20hEvazFhsinkcBRdcbxFijxZs b6Rob05sDxtNik/KB/hgClAIZc144tRQL1LgxRfiwHrGL/kwpX7/JkJX7Of5BmZgIqCoBG0AoIVU EAACWsUhfur7wE/SMIX8OmIX2AIu8CIZyGR+Lu3SakH91u9R3gxSUo2mFkUc00qsdKCtaGAYxCEd tOUc5mqFzkX/TggAf81bqKKGtoIqVEEBY4ABbwFMEguxvPGxDjJf7GWJ0AEOvmAOMoAM2sAPvkAM ym4O4KANxMAZ3IEX6uYNdAEbqqEbmIEQzIALUAAO3EE6fMYetMENPokb1klE3IAZMIESzlIPLgQO uCE26GHhgnBmEKmQgMMYkiARpKAWDqkJc6Y37O2TgsMY9sgq4YAZLMESskEfXK4Z/gARyGgM72EM yRA24IEOtIAL/0LgEBhBxbxBk6SBEDIhFU5hCOLLSt4rDOJLDLqgSlDgBBBsEAdRcBBxdiiBcyIB EgDhEHThFyIhEADhD9zACDLnESKhdCIBdFTQoU4gA0Lxw97u75TgEBbGDZTAFm2HRX5JBF6gDVhg Bf6AMb6IBViAnzKgKGfH7GhpDYjRP4wRGcOkS5gRp55RDuIg9r5MpKqxGq2RpOiEFILhLo4IGZTH 93qvGxMF9ZbRWG5KFZatJKigCqiAfqhqCmjFByo0AlClLBYAAjQUHweiVExFQwnIBzRigWKlqiwN FzyCGOACX/ACHHMCT2wBpMZP/SAoztpvGcVMrUJI+MrHJm5BI/8HAALwoBWGIdh4TVvS4SNDkin8 ryRNUltagSuY9EjPYRQUkAaYYArgZSYTS7GozUsLZS/GAdvgYA40AAzmBgu0YGywqBHgAB76YR1g 4AXcwNxsQx4aAUnSgBK0wR+20h7cwQ3mQWaaQRsMIZiAIRLgIAy+QA88zxLgATbkoTXgMgh5Rjcw NTeAwx2sQAEagAIUQS/30uH6khtWzh7ooRziIAKsbwXg4BDkQA4iqR5c7hfYABHAcAzlITK1wVC5 gQ7MLgNMAAmYobL0oRnmwBLgIAreQwP6QwGuwGyeCwvGpgu64AuygBBl8+oIxxMQhBLUgBIyAUaW oRGiExjcQR//vME4f+EXGiF0bMRGGKENrulCVMDImrPy8O4F2KAN2IANxgBv/ssxgOkFyAAG2GAF VuAERMxhGgMFiLIDscAMCmoNhIcYNaAFnKD0DlSsmvF9cAEK4oBk7TMb9ZNPgkEYDvIB24EdXjZA fU9mB/T3KlL+muXNfsUWqEAHfIAKGrSqlG8KqgAieOBCUwUhBgZVFuBDQXRpU4UfhwAgHegW6iIZ pIhm0SemyIR+aHR+5AdHL2ongE/4wARI20oCCoADagAHQoFcokIpqgIkz0EpUsjWTKiF7grXeK0K XpIB/aRQpI1Qpm18GqtwmQie5IYF/GAMmqkKGwEMvoC16GGc/5RAEdzBGzLXEjzvDJCkFtbBG8LB 39gAHL4hHiIhG5JgYXUhGyzhLCmBD9TAEl5D4bbIUmcjuDZVZuRgAvZVBbTh40jVCXcDWNdSH54g Ag5gBBBAAhhABY7gAEggkuShkvqBF+zAEcBQDMeQGyBhDpRVC7QgCzbgA0qgEdbBH5rhdpxBDI7g PYrkCirvDrvgvt7rWlMTmhLMoAhHE2gzG7aBGSIhgAcBnMbgDRhhGuJhG4yzF3ohEh4BcvpGKAHh BVTgmvzOOZdzX//uBLSzDQqYDMZAYI3AdmDAhJXgDxZ2YPNGYLmTxlpgBcBgdjSAhodHaDiWS9TK S5pHzCJlZ/9JVqROKsvqhBiCgRSqIIgTaxiEYV7WQYlcFmb9pEAr8tQUpRkvaFJwgQmaCgioABeo AAiCoKMeNIGI1vmgD03SmAMOYmlPRane+CK8D1dkZVfYwR/ygR3KQVm0Nn34OFBuoVIy5ariB5Bt AYM+yCfC8WwJIAAaGQAGoCxiIAZs4AZuIBRC4RROAYfyiipA8tdEstayRVs+WRbSoQoGQrBgUkuD SCZnwnDtAi70Ai7mggIRVxFizBDYIBAYgXHf4APBgBtuQwmCyQ16ARK6oRswwQzMoL5YwAF+wA0O wQ8G4QWoAZkfYRqSAAZW4BCyQRpgN3bTwBLYsh4olXZvNzb/ctfi3EEIiCazwMDcgld4c4MeJg5Y xa0e1gH7GMABHlkCnlkCGmAMLEErpaMWlIAXtHd74wEbuEGMuCALxjcDRmQdtOENMoAF5GBjnVUD OMQ/7DC+0OYLvqALri4212ALAIo2qYEZgEHI2sAMyIAMBAETrKEatsEbQqlzMIGAP9inxwBfHcrI OIRBnJODe8SnyQBgZTqcjMCE2cAN7oaEP5gNmJoFRGCYSiCGZzh4bBgMkNGsdHSHfwUXRoFSkDhB 96QtjqFPoiguWhRfkiiuX5YdkIGiePQiE3l5xKwlbuoWbAGw52fPmuoHwNgsdMB6EvshIEIi8mdg PuVTjnZD/5VKQ5H2IA5CB7yPIZ4gHzo7H/4BIW+Cj0ebUGJC9cLv0h6l/XT0rJAlJ5RBI9sKABo5 AHTLkVE5kmXAkusgky95K25NHOaWlGWhFbKC1z6SKtKBCVAZAR4gS7fUkHNUbFnqSx1LL2xZDhZB EVBYmuu0GXhBCbTBHvJBChYWBiBBETwJGHAMBD+AIAqjv1gAE7rBG7A5CV6ABQChoQkhDM6gv+FA DtahnG1XNtzyLYVQU2+mHrQBDpKJcOCgEc5ZnokLN7ztC+XBElLaGeyhHAbgABxgAQ4OABAgCASC AsZADowB4mihCOrtHraIV+OBG6Yhn4FhDm4JBUDABKSgHP8OIQSEAAMugANw4D2syT+4AAza5qOx gKTlqw8KcQ3Cl03FmROkgRkCeGIsgTilgTs2QzuygZeHU3LeAGDZgJyEOgTejqg1eKEcJDzH4IP9 wA8YkREZ9wVs0Q3onM7lvIBZQAVA4ALSrgW8oCj9o4YP5wRw+KKYh/0AmUvpZFAaBSebWB2cOC6c OIneOi4C9CYs8qzGcf6qWKzYr9JmYQqCII27OAKaex+fgIGINlaeIIwpAk0gO7IlW6kuG1U+FAKi Klam4LP/4R88+7PVIVC8sS6iDdoIJdqiCNrqpR2UQVcEeYHsbP3IKnma59NFXRhwgQYGoq1oW9wd OTAGDdz/c9uST+GS191tuUJulXRJzwHe5X25yaJUaAAt4OVPCMVL+909+318+oUXrMwYCr4YjKEZ GuEF3oAXsMEQgEEf/GERVmCbESEQpuEejIEGEGAEIgDcPbS/IoG+ByFE8IYsf8ENIjcMKEEIEEAH jGEdWEPC6YE1Dhw2BimRZIYbXjeZDBMetksehJfkfuY6nIEOtoAO4MEeaMEA+FkgDg7RDs4ASGAE mKAd8mERlOAX7oEbgIHbZDwbsMEt16ER7msDSqADTIAW+IkEGOADHCAHTqEGohUFhKe+rLLBdLHJ r24Q+SANINEMIokTbPqmvWMbOAPxtWkbIBgTMiESG+MQ/mxzYlSMm6J1od5ug6tJ7CZ4EDp/XrfT ToEhM0GHETq/8wVBcv41YFmgBU5gaAwdY6tkY4+HGRH0iiuIq27h4H1hF5y9HIwBLtbh0tWhLtSB HdDhiJCIHfAFGYgBiY+BUcTxTnpCzWgqR1GPTHIqzgJ7fqIA1ZnqB54AAsyCB54g0qiAVn7q+Rri +ZjqUzxFB2igA472aBfgAJAKAWjA/KtgCmYhHwCiXbt/+fzlO4iQ3ThkDBmWK4fsoUR16tapEyiQ IjJiT5gweVJF1axZuEriunVLGLGVLIUpIyZMJbFkyYrRVBUBAQECBggMkCABgNCgAQIIBQB0Z5AY Dx4Q/kDwIIaMG1RDoQoV6lSdU65kxZIlLp3YdOiY7EQAlYaPJ6Nm2VIWcyaycRDnllvYENmxY8lW CnPVzletWhEfRgSWgsWhbIoW6dMHDMYKGIDY8LqHLAjanTt78rwCSNqyPYyUgLggxMqDAyreWDp0 4OyPWuvo1btND547ePBu17N9+/Fjf8KLEy+u77e8TGngwKGUyZq86fDiyfttL7t2e/W2C6/nbM2W 8XS4zYt3RIEDBgAGHIAKwSiAAwceqKJnKE+ve9uAZYvnTTjY9CJJM8C88QYKFHTAAQMklMAAAw7A AIMTp/gwAQZcoJDBF2jAAQYXbaCARRdfZLEGH2r0/qFiGiyw8EYjjUiCSY2YSCNNNdZssw04PvrY zTbV6AgHhxu0gOCLLBgxxxsnXAElBldQAOUVUmKQwQUZjNGGH4IMMogkj9QYCSONUNNNJGqu+YiY jLwJJiB7tEHGCSG0gIEGWHCBxQYbYLABBUG0I05MhrqEUqKKonSSL8YUc0syEhGDDEUUrYPMFFSU 0w466GAEqjrE3OKDD7co8xJLqrJEE02rvorooomWNNJIUwQRhA406HAEEBA0FYEPVFARxRMdeTRE D0AMMQQQQPBAQ7Qc6MBDtbpGAAFaEGyLAAQR6ACEsbPkI9BBBCGEbj7/qFOXQ5aGShFex4xqrLFV /kxxLxWqnIQSqv7G9SpMMqmSKw0RPKATZ5wNwDDDQCE1wLbZNjwAZ03FIBVVN2QFyymvfCVLyDYM 4NkDNCwREr9wAczSMXlFhNdc4xzjCjpxSGHFsFBQcQsyubzIRi+GJEEPZCWoAAMbbCiCzS89WKzw TjsIYYgURbihRAUTOADVAxVccMgOFZ8VARTr+EaPO2q7A5xvwSEHtz72fOebNJRQYgklmmwjDz3x xKP2dbdtR3h2wsljyXhrOCNPNpF84ADXQQmVrVEDBDCAyeUYosQz97jzizYAepMNI27owkwzjJRg QgcmODDCCCUUkUQji6Ry4QkZaIDCBl/AIUiI/s5xwcUZKKqxRvJrcBECBS28SEYbbQjyyDLSWDNk NTx2E+SQ1lgjTSaNYACon+afX2X6UWKJZwtd+gHmII+MWSMnOFIjDSc21jh//480AiY/1OkC5NOA BoingQ1ASQE5INShVOISf8nqFrY4yaNyYQzDvMRSGmFCFSrlKVCBai+q8AETXBKwmbgqhS2Jib8k eAuT1GokqqiCrnRwwyfooCkPiAATimUsjyCLWURslg9owAEO+ICIPoAWB6IVAQf8qikQUIsq1HUu c6Vri+zQyEXaYamF7EVVwsDFD5z1A5BMQRVsFElJTiWTCMIlVSvpC0xmMYSPdAQIQaDBrxJ2/5an AHInDhuKBCimMB5GRQY2wEEoXPGKV8BiZADYicmWsMZbqHBeLJTJXlzGkIW4YhwMQIspE/CEYvjC CCtgAyMUIQR36MMYJAjBCVSwAhWUwAgk0ElUYqAwCSDAAAigzw6K0IAE+LKHDRCCTirWFAIcgBbA Sdva3OE233gnbsLhjtu4QQk10IEPmpCGO95xTWxqs3DdmRs95gYPOmxhDXSgAxy4oAAJMewoETCA USRglJ1UIQl58Fw8tOGOv5HOD7xwRz+0AQjWucAEsUvCL3TRiEi4wUJEGAMKDOg755ihC5QAERbU kAUxKG8NYsgABShwgudxaRCY0F72buo98P7hSBqYiAT5zgdUBapPAQqwgApwyQIMGCF+YOpfJuqX P07ob381yoRV/ceIQfiBDUnFABZK9AUubCADCkBAA8XxQmUoSoIwvMUsVFEMY2RQIqgqBweJ4ZFI jWMcXxShOoKBi1zBhVVkVIkdW8VCYqiVUbUwCS7eqophUeFW0dqVDnrwhIM9AAI6qFcQP1LE0DZL B09c4hGGcMQIYAtbCqsiFbC4xX+wI4tbPAg7IDLGwhpqFssSokeeoKmS2IKCwz0VHWHyL5bFUBXH UmMVmJBaHppyutPlDFB+wjBCNixqBPjlAwZQyaeohQmjwMVbDBuRvCSDL5/0i0rmRbNxWP+BGMWo r1zV8Y53rEMbunCDHITQjH6UYwdWah4uVRACX05hFU7ZiQQUAKUDJIAEJPhJdxGGFmJ+9ylOMQAU 2GbNdMJDcNls59y6+Rhv4mYdurCEGvjQB0o0ggQRoMEPisENtq2TcCZ2hzayow15Kg4FDWDAAQzw AH5ezihFkUB3OfAHatzjoMBIRCJ+8Ys/ZIMeaQOGElwQCBfAoASL0EYzmBGJJODgFERAAxoSuAEw fGiklCAEGLAghpSyVAxhMEMLYoqCFHDJEtgTEo9wqiOdRrWnPw2q+a4wAUhDKdIUCMELpHeCN/jP qfWzn1SnSlWqWjUT/xsEIE6goQOGoQv+ByTrWR94qMUmyhbFfWtcjbGShxDDFJVSBzJswYRoBWEJ qxAHX8FIEYGMYxVBmBZKXGjYVkmbVXb0i6wXRasZ0nCyR4TirtI4RR9WIYjMeoJoy21uIDQxiTxY 1hBI+0e09JBauJDtudhxEIPIFt+1VVc5jhHrOB5KFeoOQrjyJVl9FVeOah2sbq8dw1lQ4VgfmQK+ mMBHg01xuorEcNSyOwCdHEUoRWmyJcfbFn7B0VAui5kYQakXmKTCZvl4TNrWsQ5Z8qMftZhAAjCg C3ogYwQQvoACQhCCK5CAAd31QRV8shMAXOFPkEaBERIQXqhFU2ED+HB+18aNsOcY523+K7HZ0YaM WQRBAZbgg9v5QAkh8BAK2uAGiU2sncHZ4x6/YAY3shGeLdDBGVZgQAWEyZ72jIDkACi5kxdQBGzE gxvAGAHmRpAEO2ADG9rAhpcNcYgSKAFrQhCCLnqxCDywGQ18+IKfuGAGNJiBC8+BwxfOcKIvmKEM cBhEG17AAi+QAQ6NyBGib/q97+1Uqo2gkqPNNwEJG+AARGXBC67fJfeFGqo7zd/2P40J8NtIfBnA ABg00IVVY+ELWJjAq+eYVlkV9xZsdFQyRlEFZSDDGKZQBkVssQQ1UFk10ATDYGwcdBHEsAQc8C2n oirTlljxpyiO9ViPBVmRNSxAUFn/ldVZNEBFQTBE5RZaTxAFJWhuqMUDGIdENMADPvAsOlBj0VIt prIuBMEOuEAFxMBvBtFv+cAOyBBBsPZA/JJtKjcsJGFe/fJAL8QyisUo2RZZU0Bx9VIF4/YDBbNx poRh1AVIDUMUJZd1JsMEUzALKeFe0PZAxLAXL9MQNQMF9NAP+rAOxgAMv1AO9dAP/ZAMPncFRgAF VjABEDYBE2ABkHYBCUBIBJAUijh1QpUBZBACnnFh3KUwVOAPl+gPaHNNOXd2nXgbxaADv2IAjaAJ MEZORsBDQGAM7jAdJZZ3eqcNcFBPdEBPzsANRVABDRAATxEAThYBTAYAOmE5HYAE/5KHDVYQFBAW AobQedqgDb+gCL8QekUgGRTGC8zwC7hDBGfAB2ngJ+t3BneGBoRge2ZgBljQJIBgJmoiI4+QCddz fDmlfN3HUywAJc/nJwpgAAkgYQowAW9QGWMwBiyQAYAgfvZDjwlJj5+WkMuwDHCQAUIwBxrwBWHA BV2QBl8QAu/HcBO0KKpQXsZwf8M2CspgCqOwV6sggAO4BMFwgBexDgKhCgYTARyAEjORWCvhC8Lg C2nVk4tSQTFkgTTURpP1AxsIRUCgA12jA74lgszyQ1QgBRTHLDQQLubGAxxQRdXCgtXilVPADgNB LlRQYz8wC+VwLpfIRUCIKkJ4KP+zkAwVUQy6oAvAgAyQUoVrVIaysjLuxYQwBIUYOFmf5Vv3YoV9 FG9cqJg+0XiWYzFWGRJvwRINsV5nCEEs80k1IwdwqA/qsAu78AvGAIf9oA4NQFSQlgAJcJrqg4iM 2R5RpwB+co8sQAEGAE1PAXWUSAV5mF/0oF84Vw61cU6eaHa2cQs8ZABu4AmawCKa4AYKQEW1wIp3 p3f1AA/cYIv1cA+BtwVaYAnuwA1G8CQG0HhIgQARMHJMQAUHEDHEKDq8UAEAYADmVwZMw3nP+AvY EFElUAIwwAIrAAnLAAy4AwTcqAZwhgIhogFn4GZdEI5YAAf+hTrMcD3Jhz0WiqH/yaeQgCAl6uOh RAWi/hgjjAAIZMACJwAINvJpCKmQLHo9Ctl9mPAGGMACH/UFXbB+dzMGRNAOw5BW8NdWivJWo1BB S0CTQUAKoxAMx7AK3VYDT7oEtuApFlERMYkLDFiTewlHMMESPYkqvkAMvgCmP+mRFIiEb5VwcXAE SClsPAAfNOCUTFBuURAHE+dbcjoE7WYsJqiB28IBXmktOqAKwkARx2ALVBAE3hIBQIALyNAOtfWD QbgysKYMObgOxdAI9UWXxZALEjcsbOQWP7pyZARxKFFBFliUw4Iv48YEZwQEHqQpVPBcqZWFivlM Y8MZEACCZDhcybUSLtMuudVC/zExc4nwDju3LuqAb3nYD+xgAafpc/1oJVgiJc/EmIQEAAkwrVai AgpwZN1lMT6wBA12FlTAD/8QEcCpDqrUDOj0DsSJNlzGZb6gSCRgDcxJToygWQTwA2ozYmYHD84w i5Zgd9wgBgdrCdvADXCgBXmWAEURjEnmME8gpsggBSaQBFV2BFFyQG2wCLxQC7TAC1iGDW5gAvxp BGDwBpAQCbxAoGGgBgdaJbuzAQ56o2lwBlgABkJgBHKQUY9gCe+oI/KYoQkJfgBkaoCAIEtrBNfn tMBnfYywP4/QBo2wDCu6kC4Kozs1j/ljCRxyCHrSBazWBeSUCXjQDufgQi+0C/+osii7kCgkMQqi EGzYUkVLwAricAzDEIBPKoA3MApz8S5gdAtYygFxgBJi+i/KMKZiupOL5bYpMSuzVkFEqQqxOllR MAQruIHgUh899ANCZCxDIAV1+gRA8AOpm0dC5IJ7WoLFsrl+Gi3bsgBAMAW3sIbsoAy3Yrcc8AOq kAzo4g/tAHCLK4S7QAXKcKm6IAe0kAuZmguTJRK0NlzUmxJLaIYtoVZwS7208lhtxEaTNVkW91xD cEahi3BSqJSq9SvvwYXu+xQQYLtuoYbrNS99IROs8jJ7kQwxV6zssA/8sHP9IMD9sA/9QA8kQFQY IAQwQAITQAEYcAIp8AaI0AP/SNYe7dETEsAAPfABJCAEcSAjiyAFEdAZljQMw1ADisgZu5kPFUER 0AANvrALxqAb7+o2ZRevXKY2cYAwTaEAjXCvlNAJkaBZPWTDvNE3aCMP3GAJs5g8tsgMswcHmcAM YjBPa7AB5fkrIMcAEzACUAAFGWAE8SkBU5cBLSAEU9kRQ1ALwGAM2MAGsiMELKABYHAItoM7PtAF axAGV5AAY5UBG3BAXHCzaUA8b3AIZjIIhNAIQfs9OBXJirZ83ueQNXIJmJAJlsDJlhAJpLZpbfII n/xUNcIMntZ9LoqQCImhOkKP1oCQcLABKSDLF4kF6HcGlMAJquBAkhqkQIkL/6tgC6sgCgG4gksg DHaFDH37pDawBKJwDHzFQbfABFgaATzTLy8kphFkXBI4QUM5Q4KpqlGgK0ipA0PAQ4u6R0cQB4kw cXzkLPEcz0ygpyT4uq/7RBBQADwwBMaSvHbVDuzQRchwC1VwRL8CAT7wqAhBvHIkhGpVQ7ewrrmQ CxiVqcTgqWx0Em0pDIvSl2vL0dxMXDIEvuArWeTLqq4qRPeiKVXwAz4Ag9miE6Z0FgkdmcIAc3ch L5/ESe+1hgxBM+qwCOvArHlYwHmYDztAVEIADMDgBkdlfWxwCIbAAQwDsdjaHhJgAP/YCHQZByas MAgQzTpwSJxRBf0wvDIMDf+74Aht/Qtqg8NnJ68hpjZUoEgIQALL4AmeYA2NcDBdEwe7Idgk1sSc 7AzO8MRiAAd/4AIk8AKCAAdYXE8aAFAB8CsLkwANMAEfEAIagAG2+WAYEAIjsABN6RFRAAwj+wtu AANKIAeErLJvYAiq5wPopwH+iH5hRTzEYyI42gVwwMmPUAic/FQZqqEwCmr7c1XzQ8pPBcqhPMqf rKJStbWvPMnKh6GiAQZxlkBYkAVfdXtpYAmrQCiRC7nn3XCzggsqQWtVUFlLoAzK7AR++6ROoKTn gIBTQJOq9QTZPFgN15aMq7ge2VgUiKpFGYUlWM5IeQRTxFkGJwWLoKbwLM//uGLhz9LPrlss0OUt NPAEyRDQ79BvsiUqqhBsVcQOPEguxTup3IwLl6uBm1IOulBfMlIMGK0vwpUobeleaxVHkXsq/WKq tBaYJT0KqorSz+URqesssKqqp6sr2UI2HrQv56WGDWFXFHEXQM3TLeQK6nAI2kDAeXiJxhEHCbDV sWMBF6ACTWsERrB4PxFQrnkUD8YCXa0IX81d0ZJkWfcEeQhGav0Mg44N7rAOcV2cdL02udBxCdAD kVAN0pAEOXFhTyBi0yEPvGGL7mAMvgAMltAGreM6JWDHWUAHYnAF5VlKY+Meml0BgHIAlTQAELYD CFAxNJArUtDUdFmXkdAI/yECBmDwIhZS21iQAROwAeuXBhnZBXzyVWGQBmHwBZ1M3PZj3NWNI8lN JpkQCfNjVeM3auFeytNN3d3XtVybfJKcoZYgtubzVeAYBnCAtufA0XMUhNkMtxRUEvZnDKqwkkHQ qA+BCzbgt3CqDC7JV8GpDjMZARESAT9gXDsu4CvhtnDrC7lwCxh/C7SQKLXwhNr2Vpg7vqTFpg0O LDqgBBI+BBbO8j7A8hbeghn+BEe0AJtxnlWggwVhEJioD+nyDuywDsRwEgXhg13E4qiyC7YwC6Ng cRbnAxEQBXZVDnOZCzYBKZD1RisT4PkrMDseF0CeKNzbvUUOqkeO5KvKqv5CpNIeoS+aAl01tkbm FdI4+UmCS6XqsFcLIUbEkArqMAfA0DZzXQ9qAwU70AANUAEWQAGosbQhUNaN52SKCLFNpgAqcAiK oAtH4BQk83HdolrX7A9xSBzZ4Tf+ilBzbRtznU5qk2PFkBN3fQAWsANN4ARO0RRP0A6sn2Nroxsg hg2LkASGEAii3gEM0gEfcAL66E/CVNadQVSaTZ4ZfAA9EAFAodUKUAEiLCONAAdjAAZmgHs4ygUt QOzoxwVXkAElkgZqkAYlUiJZEAbdeAZVHNyRYD3506L0aD0IuQz7cwkAkQkTpkyPMmW6dFDhwYQH By5bJo3TRGkVJVrDaP7NIidpGat9tPZRJEhrczR0wYJFQ4YNG7B0CXPGS5N2w5TdvCns1s1bPW/Z svUT11BcvowdxRWEBo0guMo9TbakxtQaS3AhE3fs6VNVHCIwYBDhR0+cyoTh7OnLVy5lvpT5hNuT 6NBZuGbNUpVXL5UpfXksBbz0CIcHEYwAcvNDx+IgjYPocBxZx18aOoAMYbI0wgMEnREUZnKrXT5/ pU3nQ506XztkyNj5y8eOnbpjb23hUjWq7yjeVYDQ4BBFnbqnyJIRS1aMrFxcQc0SIybs7HPo0c/6 zDm9J1DuP4ESvas3LxXy5Puen1LlyRMm7YG8/8GkyhQqjaeosqWM2P6x/cmS8a9uv2MGRGacp4bb ahxX1IFjjkYOgfAQRRbRZREjwMigBQwomAADIQ4BppE3WjihiCNGOECBBiQIoEUAJAAgAAAUUMGN RRQ5AgECACCgRx8HQCACISM4gp5+9EESyXrqcccdbbRx5x16ppzyHSubxJIbbp7UppYHvnyAgC91 jKGVVmLQUcw4mtySmybhwbJJbBRRwgUTOijAAw866EDPDhYYoEUgAQBgAB8PSEABA1qUEYADejBg AAMMUOAKFcDAlAsuUOqiU0+7AMOJU4ZA4QswWjopDFVfgqlTNfgQ4wxLPNqm1m0+oiZXiypiRhpm lvkVIogwiWQgY/8jecRYghaKJJNmHVIWE452rQijjjSqNqSRtv3IEpe6yEKlllp6KQwUfGhHHOve 8iko79r9bhajkKqBqaaQeYoYqaiqoYpjhhnmmNaOGeUrsBgAgiy0zJpOLXbhyiWuW2q5xa67LsZL lfLM+y0wwX7YwQ0ldhByqcVORlmHwHQYcqnGVMElCh3A/AyCIGZRBhnSTOM5tXZqu4UYdVAbR5nc yBslr1GYUKplKooz7rjkcKEPF4Z5wi7A6aTTWuLlvOMu7Nsszni8jc1Drwq112sPMyZ8YCKv5m7h +pj/Wht4P+gG3Lu1cf5eEA4uNCD8BCPkcEOON1IAQ9PBMwADjkb+gA3RiEMiOcSIFjI4gFFCY6TU cDnkOOKBQA398UUDav7hnSSRtGfJJp+Mkh4rb38nTi53TwRM03sMM4Jgjvkhgh4R+GGdLbGB8k15 4mwmCRc4cCBPPPnEftEAJDXgAAQGcFQB8WGUNIEGSBBigiuuQHVTlDRFKaVyzzjDDDxO8eGEwcct N40wuhCDGMKQBTGoQQ1hgIMzQrINLTWwgd7ghje+MUEJesOCWrLVNnJFDV8x41ceFJawjhWtZShL WNTqiEWooS1ubUsaYNAAHLIQrnFhAFVYaIET0qWdh8ErbN6ZxS6OYoxb+GAJo6jCLfBVDmJMhQb9 qooyABYMKuL/gglfgQBYeoAd/dyEGG7Bzi1yAUav1eIucwmPKjJGnii0cQgqWxkUaJGEEXQGAhBo WWCGtMcI0KAzX7rjZ3yAiydE4I54xCMN+liFcfCsHe2YDYKQcYxbpEcVysCFbvIyi6Wx7I59NFlo hAIUn6gCCHC7z06gI52HPec40cmOMFZpmx8+LGxDuaVdxKOXUZztbOg5jxpJuROcyFJAAisH3vjG t70dIxUMih+mgKGLNrwBDHMwg6fC9QVufsEMcIBDG8QpThUk4HONAp0CQmCExAnhAODr0QDkSShJ AQkCQFgH7JZUD3pgSRvN4AbursSm3TXDoAbVhe/gCSaVgUxM/g/QgTGW17ws+dMQRSjBBxZQgALw yQQmWMAIPsAiSRUKfAZQHwYygAEVGOENbwAnHOQnv03NkAtYcF8WOkW/+t2vBhjQwLhcEoZXqeFT 4DIgJeBACWswsIFOdeAEpfoNechjHlP9xgWfmkGuZrAatvoqWGsV1gx2oxsRtCBW1TrBbcBBA4do RKew0BIMKMCGLTmBDsXRQ1J2Jy63sUUQhyiMJVRBGaZQIr6MsQTAqIJppgAYK3BRH0XeESw6wAVZ rkMWt7TFaxGrBS4oNrGKYexiGitPX9ZzBCDAkQZAgMIRIiCpzzwAj3wc0iG/JCQDEMAz35PR6gjQ Wx8VlwAQ/qCCMKz4gynUZRZKLA4xVFEFJkwBN1NgLCBBuTIe/OAH7wGv28KLmftk1piwzNorYZmT 6lxnbEOBy3fm0hz5plE8vTwbb8qTNGGe1zrSAbAs+YPMcRRokgPiTyrKAYcvpARU4Pym5CxhiU8F UAxH7SZKNnCFBExKUu88wAQywII3uEEIDPiRPFFHABUbYATISJI71vHP5v1zHbeLk4wLalAPNgMY m/kS+FYcph4cwVBfeoI2mKcNN+V4doZQAhtWwIE9wWAPbIDBFVDAhQ0L9YYz7MIXzkAJMpOZEOCa oYPB1SkufOF/nfpCGuRMCJ9iAAtfYAnhiMoHPpxhrhqY/6EY0sAJS8DBEtuQIDfA4cAHYrWqU7Ug BLdaK250lavgsJWWzBppCa51HladxzzucQ9RkxrUoZZHI1DwBmaAQcxn+ALhrtAAG2ogVDXx2l9J ObfABu0o+lrCW6yWjNZQwQc+oEEVfhAEUwhjGMGgQhUUuZQsMgCzmQ3jTnK97fmedi/mqUIbWTuE 1gJmMTryjG1vm1sI+K4zEQDUpHoUKUZ5DnW97a2KvycBAohFFcJAxnDUMY7a4KIKjaEBICHgscDw AAhMIHd42wNxt7VnPU+4D37oVp0eUge9xDSmbebbV+6MXL663CUVeMNf8ZzROQI6MILbe14C+W2S rkCGp/4QSIkJWyITznBGNZzxZgtfuOgWRvMMZ0g4TMHQ1mB4qRCEAAUhKCABV8f6pCYVAV/w83lO 4lIzmAEMisp4xjvmsQeZ0QwrgClQANA6AgwgBDk4YHUJ0IEusNGMaVCDyVr6OzeAAYxICIIFd1IC GfZQCD0AWumPhzyYx2xmMjf4qEeNSRhilYYyU+J+PshAmymgAMJ14VWUSEMXCPeSWGVCGoSAQybQ yugHdnqtWaV9pRlo6QzqvlaL5vTtpVrVU4fa+KG2R6oxZQmTmCENZ2gcGtAwhhPYUAU4wHW7tuM1 wJY2aMkwBjGYlllTmIIWyCHGT3gQhCcswRQD0sktiv932yzqoC5c9FoP4zJfupgWL6lVrYh7AsUw GR3wLXRTt0NqtzH5rSD5HuLysHqrtxdBHXmSgAuEEXqymbVZNpUREgXsI1DarsY4toejuCHADPYg N7dZD2DqCyrQuPPaLLLoGuwIMKGgC1xyl/fiP/Aom12Smx+CC2MSGIFpDfXimroZEFcoh0/5gpia MKALOjgAoKKrsKILNC14vCosOs0zFTBQiaAiHMLZAAxYnwyYg0OAgwiZEDlYhBBpBGZ4koMyKGdQ uzsEoV+ZAzNcHwrAgD/MgJXiAjgAA6lzqckRFik8CLWLBIiwBBYYAROAARggAzQIAyyIvEzMAm46 Az3/IDM9AEVYczNVIcWYkDMDUoMyywROsIZVwB8704AJSACXwIIzKKov0BQwCAM9AKeKACdmcCqo YrS0wipJ471gxKBjREZOqyAKyqrhqyrji8ZQuwd5WAZXS4NYazNYuzM5QwPB0QAFyAFc07+g6L6/ sota8AX/8IXMoIK3kIM5oAVd8I9kKKQfqAJTIDZhOAZjwAUdSCSw4AAq0DaJwRq48AXmgAuysQtd Ig+N0Zg2aqMnaC2HI8DJ8AzfSsAFbMB0Mx4f6a3OkEAJVB0Ww8AM/Bx+My6NhIAYUCQ+cpkSfI8h WA+atALvmjgUnLgogEEARA+YUaVVmkH2+jgbJAaR/2NId8FBhtTB/jMt+tKPWSoLhmkmvJmk6Jg5 BetCzYMzcPI5Sji6sDw6LSBLMOPCo+sUTYw8TFSJE1ABEoACK/iAItCFRpiwg7jLhdBLhZgwsKyw MwigNTC6WOm5wjTMw+w5FrAAEVABEXgBL8BEtXy8JxQzPSAETwRFOdPMU0TFV+EDStAETfAET8CI bWCFU/gpDcCClXKJk0gDPjggnGozOJAGOCAEa2CGb5K9SouqSLs9Y7Q03lRGS/PNtLI9Rzu+Tyu1 T2u1LgBMnMKpBsOCMEADXkQDLiAEIRhHcXgX79gFdCQKoLiLdfwiKqCBsZiYOVDPXPCPW+AAZjMF 5P/gx2KgBU/KIgjoACqYm7cwC4gRo+8MLbjYBaKYGKJQo9Pii41RjyeIgtbiAB4YAqXYgQX4ntqC gAVotwb0Hs/AIwI4gMKIAA4ASEIZSRlhFAkwlAG4wM9hURdRSd8CwT4S0SCQSSD4AZp8giPwrhu1 ggFkwShg0J7cpPEAJqCkG1bSDnc5r4fBNmPSCfDYpNtYSv7Lpe/gju/kRyNEP1g6C2F4JSM8QgDR SgEKgzRQAzkDTM0bzABS06Nr0wAiyy8QyzfNAi2MTMi7U6XDgjcwgkXIBTloBF0AA0FAzEwoVMME SzVdAzVYg0ZlVAtTg7s8VMMkhEqwBErgMlQBg6T/01PI08InVIMAop80QIPNfE0+6AM+64M+0ARW rYTQHM1YrQZXBD3VRAkxJCD/4YIM0IA2S4OKINRqaAQuMANL+CotkTQMiiBIC8ayyjRK6wZLi9au 6gZm9E218obkpMZ5gIdhnc4u0JQwVAkuCAMz+EYzMANKwASasAnuoy+l9AmLuQVfOMpZqIxZyIU/ Vc9DKIbjeI/yg45hkKVZ+I0hCYsqwDa40L8yGq1aCC3/+z+zoQKJvDgUtNgh4IEeWIDj8R3O6Mg/ WjeT4QHKAJQSHUkUVbGTZNGU9BEESKTKoNFj8wETnDiI21GcrNn1iIK+eJv1qAIY/Da+uI+6yKxY /5pBGjxKdiGl59AOi5Gbd62v8ITXuCim/RiY/xDKABMwMGVCCyvTzuxM+hHLsSVbstVCyXw8LYQ1 S2CGpaKEMKADnkPMuTXMMw3MRsXbUBU0MqPbnpNbS9ADObswpdMmpSPLwy3bzUNFPkNVVg3Nx4Vc WI1VT3BFIkCB0ruwP9MplWCJO5MVQisDcDqEOYicZUC0bli0YeQ0BxpO36NWW8G0bYjWa82q41Sr 47sHbmgE0m2zL5A+GEIVWxOzL+gCMnsEPMi+7VNe7WsX3KiFiLEFWkC2OLgFWojH9YSOJ9CBfMyF 6AiGt6AFaVMKPELYbTNf0got8LCYRCibjaEPIP+tSRSED++KAANwt4/9DFAagRCdDId7o89YigWI EZOdQBVL2ZUlFBT1EdtiCpmdWfCCD4v1roqzuIl8m2lzGSB4Ahhs3/MAWmybyoPcCa45yp8w4SOV Dua4mHfdDqldWukAkK2hSqs1wlfSWlkShjGNlTMwU7D1YQPCW7FN3CE+3CLWAgsr4gCSM57rYVT8 2749TDKDTSDO28XtvEvl284rMz5TA8AcYrK1RbBt3FUlYzKOXMeNXNGk3FOwXJXAAgtz4zFciQ0I szKFgzAAA0DIhmsk1kPrKgdK1mQczkGmNGRFKwqy3an6NHmgKnlghkaAZDO4Kd/VAzRoMDGUzTb/ IzNBQN5hMMdPzjX+o4LnEk+WSSJaIF311IV81V4riIPupaLvxaTGMKQIeIKEjQu1IKPR6olaoIWh cFgz8r/yQK1om8gnuFj5vQwawFCa6cgIWAz+9YrJ6AHw4gF0WzgaIAACJsl6UlEETmCUPZ6F44Ea LcFkPkEmYA91fgIfaJqSMSST8YEqONC9eMG+gBkQDuF3oQ73GqaoPIuxWeHmQAuxGWGrvcoAm+Ga GxitHdOY4OEm/uGJpmgqxtuLxuhGtbBF9eGLFuPO1OIyw+KQlmIuZlSPrmiORkWN/uIAqmjPZNwy lumZhtxVTWNYrVwUuFUAOoP/CcMx/JYqTANw/1oGSzBX4qXNP2Y0QmZqrjortGJG4UM1brCEyKEE NGiclDBXNOiCbzqVDVg9Sm6DTi5I5h257ZsFKogDXFiFVZgFZKsCWoiDVJbHXKAFK9ABK7ACU1CG WB6KUWCskkHYhC2LiaEYJhUtwxbmWTAju1Dru0iEOPili4vfyyA3xeAAjkw3m/kNBgAUCBDRERiB /nU4gEwTMcmMQOFmezvglMRAFSuuIIEMB57ZZKbJtlFnZKushQtBQwrZIGACDl4jtKGPfM6PspiO f4aOZIi/HzqvFiab476Og6RKq9SareEaqzwGYehaARpViX7pH2bc8Sbv8p7i8LboKkbvlF7pjP/W 6EUVTMH02rA8AzQQ7/JOVfM275nmb5vWhFdF45um1ZNQPQIyIDEQF1QB60CTMzhoW+fjOQY7g0GQ BrJq6mO08GM0q0qzVtqdqm3IzTh7PpTAxUkOs+pUKjFUTS4AgxfQoWEAz7GBl/BM61HOjaWhgcKq AisQAvWkBVqAAqV4jL22BSrKD2KghR8AjFsua4Zt2Idl7MU2LdRKBADkC/hVZ4uFj5GlgQwtjNcC gvoFACERsggQ7dEe2daCZghIkwfo8hJ1FAQYSQq0wJOUp5Vs2YWLWcu27Sx/5w+EyYVDpFquDPnY pP8j7ozT55wQ4Y1bF7DJDydt7rlQJUnHbpj/myT/EEqGUUKc42meAu/w1u+YXtUx7u9TP3X8DulR X+/1HvX8Hm9UH/VYR/Uyvulb/7zQu6k3NqAz0IC7AmtWmZ8vIAg3A01NoAQz8KbJyfALb2rfMytE M05ucMapqoZlIAQxO9P/CRfZdGNK9kS3KsMNCL0xIGsTBqz36r6xuY3/46RREAXGyvEloHcomAM5 qI9ahgAdgIJ8tAXkKIZcOLilYIL7y7VgVuzQclha8GX/SwT2ffgqd1+KVUFlBoIdmIxpA4KM1QEO AJ8AAG0KPQAzP3Nqnpl10xHOKNERoAUqkPM5R1kDXrF4mnkYjQAa5fOLZYIwV8DKimf6+/la/xZ6 GoCbUU4jofXgUVaYfTbKWQKbEXZSpV3aZorhAOsbI+SbG1YwOTVFzmz18V5cUq/1sR/7W39csq91 VSX1WI9pUydvWZ91VUV7s49cz8MfXpUfAhKgDFAAXtV71dsAnRIgT0yDADr2QlN23Wx2Z2f8SIPq 2s0qaogEu7QENL0wcBHDXe/V+kYDpeKCK6AUlcqhmpibp3eXsw4K3MhHeI/3GIgBG4D9ILCCOYgD KOjyBVgABqgAIbACKvj35CAGU1iCIKiBgoevhUxsivFlhg9mi1l+iIXIYqaPKYDfygavHtiBHvgB isT4aIaRADiAMyf5M0dz0y6MIIAAjZzzH/4wjiiIgBgBADdHuAcwqZoHH0I5wPx3WWgeLwmOAIBA IPABhAc0IkBASCNhwggGIyAkSBBCwiBPVOGapWojlSkep1TxOMuWMmXCSqIsecvWrVsmicEU1tIW S5fCjiVLRkxlS5vEjiELSkwY0aLCfgINiuxYTFflwkCFekYN1apWr17lU5UPVz59voINK3Ys2bJg NaFNq9Ys27Zfu8KNKxcu2blz3fZRqzctJa6U8JyqcWWDBiwaNHTpguXKgSuIxYjRsGFDlixd0lhN IyaNJk6W0IT50gUMHEvWtqFOrXo169asuan2JpsbN9newG1bBgdMI2aR4JwRk7iy4clYjv4f5vLl zJcvcCYYmDA4hI924nriwmVLe/bsM3fd6o5LFROQVZYsCRJjyQ8rQsDMoQWFxoL6CxyoaCHHlzJk xozlQsUSTDAxCy4t1aJdT+EZCF4ttcxi4C20JBhhheOpEqEqVHTEYUdPRBHiE0OQOAQQQPjQQw86 sKjiDjuMEIEEAABwgAgljMDBCDuOIAIJPHJAAwIHQEDfAw8EEAAASSYJwRO3IFNMFDowUYWVU3AY hAESSDCAAQQMAMCMSkpAgEBmCnTAkUXycOIPJfqwEAEGIHDkmghBoEOREEWwwEIRQYDAAg8IRAMQ TFCh0UYbYhnSE+VhdAtRKZUkU00uEf6TDDI7KfMdpkAxlcxJnZokjKbIjMMUTKUadcw4yJSDjFNQ LXeGVJitgZUafVClVVV9aNXVW16JRWyxdSErliaV7LVssseORSxdcb017LRyARsWV8Biu622dTXL bF+UpFUJYDUoMNkGGWxw3AYTJHBFBlhkgUUGGGiQxRdZiKGGt32c0UUYiYUBBxpwmAEGF2ZYkgkn 1lRTjWoQs9ZNaxarBhvGqGHcDTXMWALHG41kIggccDRiyRdYKFavZIStS9hhx2EhCCUZZFAYFycE 0c4wNGkH9IHhbSdeTeP9UAUUUFjBdBBP66ACGGDIEUcQENjHAAktzGFKf/4Rc4spVv4aWEtPD2Zn dnjdmY122hlFGLdGHHLUYUdRPJH3iCae2AMPf//9Yg8l4DgjAAi8yKMOO7LI4wIR6BCBQHUiyWSS h+twRBy+ABhHFU9YSYUqpjwhIwADDGA4jQAQ0DqaZhJaZwEQcKBDmyZyQBFCkw9EEJ4LLZTQA3g6 FGidDRkERBUbaejhR+WJfiClKC3Ykqk6xdQSSpkGdYyqJxX1U/feMzWpUcTMGsYZ66eRhq3qY6ar VdjiVb/9zaZlv1nCGktXtdHSr1h2MVb98keJvvCBXHtZRWASMBnJIAcDV5DOAzcgBBTwazj9kpYa 0tCFyoSBKu2Dg2bEcIaTESJlmP6QhjQykQmIVYNirJEYbbYBmxpuI2IfW4YlLEGJk5FMGp5xHxwI ETKZqQsxXDiMuh74BUqgQQNcmCIXUOAEnwFNaN0RWtGKlpEqQWEOQnAaniyAAhVAwWpYY8ACGFAB FQjBFLg4VTGIkQtTjEJC2FHbgxJ0trW5TW4aylDdPHS3KeBtb3xTUQ9epIMXQRJGqTtcJF3EIxiN 4AAIKNJBYGe5JA0gT0ewwhMS4Yti1IIKj6oCFUxhCioEAUyTXN3pzOS6PPFgIbGbXQdowIM4ceB3 QAiC5GA3EYr8ySHFKx5BJheoNdHAIhka5IY64pGQJMom1EvJgpSRqZzEJCVH8f/e+IZilJuQcynl K0oqnqI+9sWvg+1jX68G+C/94XMs+MtfPp+FzwAK8C76i8sB96kJBuagAYThgrs2IEEMsEtmQshX ZSyTmKlQRTiJSYwJ/YWVNNDqC3NgHyV6WNIXxtAaKrWGNKpBDRYuYxmZsEQjTnay9qmBEjGdKSVE qJkOcmEDU5SMBr6AGfd1QQNXwMBkhirFKWIBDHjA4kyy48UtDu1o5FEa06xghYXUBz8ksIIcrIAQ BqBVa0KogimSUY5YdQqPFvLOHqv3tgdFqDuCnBsVEmFIDiFSbyTqGyNdFMnETdIAIygBCXbAyMVZ cgGwy5PkHrAky7HuAY+MQA/+olCLYhiDFqq00ihKW7rUGU5JA7AlASBwhET4FQgREUgBZhckFtGA BuV5VJwQYEzdMUR4BaEI5RIikIJssk4R8AEVRvE5AjFhCNE9EXXLg4tSdcol3NQeTICSjHVWapxK WUpRStVdVHVPGO18Jzzl5z711ZNa/ZzvWQyKFvri95/UEtb+tILTbdk3LQyswQSYyrINLBVnJ8gZ Fpb4wOMIbH1dgExlEvOFqHAUMrniXxoQNmExqE80kBGpGaBiBjPYtIgpa5huDgiXAxKifZCxCmQM Ewbh8MujXEnDF14mr5kNlQtwmOowxGPkntDEJQuyhSqq0DSmtedqawRBY8v+ehAIpHUEOxiF13ii vVvMonpipiteDaRXQTKvkB4KkYiOYKIh/KCwhsXkjmQ0owFoWcsuYuQOWLQAA3iptc+8LJMAYAA6 6QB4QPCsMYohWtCxsrQ/gECYVrdaM3EgComgRSKAsIBNfppQC6gtRTjwS+lG1wcn0pNvKTeRY0pk k8OrbKBeh4AIBOEH5UFzNRk1oiqpgiQn6Ul4syspUynle+EVX/fCueykOOXC6zsDTuWXmTOgYSv8 za8/87KsAN+XgNweNwClNRef/ldZ4D5oAwcjmSvAG2YaAMMXHLxQ+HUFC4RhWYTbd9QP8mszVTkY GDaoiZClwS8hC0PDetj/Q2msVBrLYAYcQsgVquQKM2FYA8dFSGENaDThBxwXHzyogQkoQF40K0wa CEHkqiYZaEs28nimsISuLsEK6qEIBBxQAR1AoQpBCKYDIlC7H4xiaKQitpgRRGYIzSJB2ckr3DQS t79ak0N4i8IRuk6iH4DdCnEWnGMbGSMunY5xj9SBi2y3IggA2ktfEsgnVds6BkQuIToAQhxuYQxf zMJKoXtlEB5guNYhgAaJooXVCBWBok/uSPXheZCA4BEmoMgHmndIq490axqsyU6zFojkfGumIlGE RUy4SPSys6hFqVK6T8gm9bQ7KVK9JCnkGwqrmL178xElFeqQdnutHV/j/m8bv/et77rXQu7nl9tX V6n2PdUNboQaAN7wngAFJEgYMJzY3lgwKma6otR2WUYq0w7DYbrQnBtDpuVwmLC/eBw/91FbE5SY 9hlG7sMOwwFkCOBUeFsfCKC/DUwWFAYWhEECldTI8YFwLMZSPdBhfIEauJzPbFGSVRXNiYcq2JxX WUHOBcGVYRkD4NoS+IDtDEEUJMqlGNuS2dXQrE3USR3V7dUs+BUhGRLeSEEcSEEQct0ogR0QgB2f NVIjORYHTJIELMAIsMgOAA6LsF3kRACgyZKZENrlJMShQSHPQc5rcQ7gCV5zOVcQIADrFIAObBrj 6cDkLM4IfFrkPcDk/1FEB9TAEHgEb2neCjoE4nkeRIxeQbiO6d3aMjlENEVOEAABRhSNosBeFUAX K4XZqIjT7dlEUgTFd5VX7qXTOgnf+7xTPFmbPUkfVlSfWzTfukEfuV1cVZCitokbW6wbQg1AyqUc vFFAvHEBGHjBYRSGFJUfV5yBQxFGhdFKYkgGF1CbHuiBjDEHhE3YwEBGaHAUVQxMhE3be2XYZnhF /oQBFpyBVjBHFzgYA+YUWvSFGphQGnBBvDVRF0yFIBAZDbZE1XEHd5jZ1MFSzlmBDQRBDRwEWj0O lYxChlhV02XXdszggkjdLaAN1VVd3MCWDm4Im0FBFEiBRgKhiEQBFP8QIdjFWWGVnWONwCwZAORQ IQ1Q4d9YoeSgzmql4ScBAK4JCeLgie7sQBTMgqb4gueETmlVAX3wQCLUgmi9IZo80g7MYewcE89B QC/5AKQxgQ/8kubpyZwYk0HEDuIZokQwhEEshDM9QRD4wBQETdW9XkdMoipICu9VirNxVzohg07c Xu4lm/CZwfrcSiyWIkBxC1yg4ix62yquYivixSv6FLX5pb8kn/6A21+cQg54CbzkYi7iiwawixQ1 xxTdn2IkBs2sHDAW1RnoASU4IyWIHAT1C0iFgb+JQY51kDkypr8FjGUIxwYVJh8oxlE1h2I80GUc UMiIRlUo1WAkkVH/qYEeTNV1rIQXeRHVHQ0/+oANoIcNCKQv9cDsRV1L7II9eid2eAd4rE1NfCeZ aUfUTV1eNU8iREgcUIEULA0UBGESSAEVxEF+UsHWLQ0SjBKJ9MBIqsgRxBkPnGRMHgBEsGQQsIhV uuSn0U4EoI4WKkmhGQDqPWEP5OQCJMSi9SQy+EIiCB4rgeAs0IJold4BEMAC8EAjEYom1cnxBA8N 5M4d0sAQPAFIDIFVMiIQ0IfraBKhEBcCzB3kXNmgJFqtxQ7v4NoUYIRVwc3rgeDqQcqBlNdRhBN4 4CWqeA9cxuUxuII6lNg7QQVO5QpWnKlj+s+3REu0pGk9lQWx6AWz/+wFna4FYeIpssjFm6oBX1Kb tmXLtwxQmxJqYX6bWhxQJdiiBERHvGif922mcsDPyphQYmjccbqbFBkGA6aBM6JBsKBFUGGBR2FG ovKBbPJBGHAB/MxTOFIUvYjBv6gBhJEfGqwMglFAUcHBD7nfGpRcF2xAysUMUS2HFzSBBnrgPnog PwaBdQ7IrtkjTVxKeKxEPg7NgSTkc5IZICUILbCnhsyNRuJnfAZhEI6rfuanEC6Nmw2Bm3XdEYDI RkZBdA2B8dwaFSYaS7rkivwZnSDE3G2hkszdE4KdFQZXkQABFUAJgFDBiHKZRrzhmWzSifDAHEYe GHKAD+wojfIcDf/4QJVMQaq1CRBEjm/JJO9ILAQ8TQlGwEH4lkHowJJGHq5ByloC1hQcJAiuEhUc CEyYE5ZyinZ5k+516aiol5iyF/9Vm64EC2C6omA6bV2Yoj0Z318+ZpyaIlikoj7txcjZqS2KSbyk nAQ9arsQX/u0jGyGQQZoX7uE5syYUG064BIlXJ8m3H1RAr9MRckhxt56hRr0GMxgQb/QWPulwQ+d gRlwQQZQUFEpBvndZnFU4MtgQQtcUZElq7Ima5NR4rRW64KIx9psEdEkpBaJZ9tUSNQJkl/tpwvC ViIAoX7ip7ne50fu57segQtyCGxVk+hsyBBARKLxSQSoXRS+XSH/1tpMftLwHJcOxBlEQGVBhGEc KEM5GEMqCV5pqcITxCyaRACJ8IDMDsSeQMDHSiIwUV4ehkQUmMgvoUjkEECXuI7nnV5D6BIBaJYy RQShoImMMoEj6pWUYshHZMgt+CxR+OyqqIRJgMr4HG0ZqB880RPT2gViPp9XTG0GR622bK3WZvD/ qGK4JdBe3MFkhgmjOiq8KYACFBhhaOP6rAysUgWwJlH6rcwCWpSlgtRlEOPeokXJsQzhglT5aUsx GkfAcZxwzMxrhobiosBSEVWDgQEKFMaHBQwTqQu7YEB1DEPcWKt4SCfpZkTQrERVzQSDeIc+Ksh2 5BW1dgd2SEgf/5loRMInfsZBRsZnfsJuHeMn63oIfcrnRtJnX7Eu3ngdnA0WS/6AKvEAQuiI2pVd IxMpmBRiwAbAA6zgM3HWDkBvTuqODpSSWyED9rKS6DhXxOoAicQsym6S7ngsEODoFDyBVQYPMk3l o0TX36gayS7AhKJJQfBv/z4EMh2JINrJL9PAk9aEtAKNRqTlRmCJWwJtAocTsSFFUIQpcCStv83T n8qiQFlwWzRfOGttuVnLsARm1g5UV+xTCVPm6hhAyknHCrubC2MYrH7QhCXVy5itba6M+ymGaApM nw50Au1YFcff/EjfGRjGYfALx11Unx4HF7gfGGgmvtBMvSAYZf+IQcZZlL6tCwpswAXkABadmV69 8VVNHQ3KXA1mhNCY2T2OMbaGruhea0xDyB7/YBzAVnzu7qYlwn16CE97yA+SqyD7dBWQrBH+AGH5 TeS0SaKl8hAcRO20aA8wtWwJxKGhjkAErKElXglOTp9Bb/Tq5BP0pDpcb8MGJeHB8hHcZOQdT43q IRM0dY6OiFXW6Oz40qGMCIrcjlYXojM9QOsMD0WAJWXxnOclhA+MBDMrWfV00TJvREhUIjUnsEyU cUkInyDYitL6W1VMm0LLFzknC7gxi2lHn7kFkDq3xSt+o0G5c6XRyC1qHxQ3WHKcYwghlWiqy6oO o1b0GFQ90I3/AVyFfRho4tiHCWBzz2q70EtlTAbhasU+o8C9OEYQT0UxYsDg5kpsjiM7VtAGUEBJ d7HmLisH3iNLbIdKL+t7G5nUpY3oGoi37rEevy585ncb7vF9c8hG7nS50q6P+tYIqAh1USxL+ugc ZuzGsl2cwfIPSPJWH5pX0yTiFQkx3ZqGlrVZPwAHAAEU1IJbORpbB2XDPgEHsPLxJITHEkje2PXq PQoQ5FIHQAAvufij7Kj7kmwxeaVvod6R6BInFQ9URgAPPDYzJ9n0qIS0as92bEiGsATQTvOw2YLw DQJosBc3f1QslrZqkwW4gXn0nbMGg3M6+woB2dds0xKjSkfb/9ILSDuUBrxmVYgBcvAzcMOpGkTR uwlVRkFYwpFjYvhLbH5YPL3iYUyFZizGBnQ0Bs/qBMVbEFuFCwugPH6FeKsLY5i3RHqg54onlK60 kXn6TKM0TY8x6UZIf3Maf/d0X+VnrLdhq8c6hwxyupbruOpA6wxABDQ1ibiZj+4dDwQTCnJA7cAZ i1y1FQzBhPdJhVtWoZ3OodHJ8CTpi5igWUsvDSwylJRDMQQegZCWKcTBD5QeyjJExkriocg4u+cN jXPs7LAJqmEej2cyJbeO8BwXQZQgYoNlyzqpk8+E57IKJhIbUbAxSPDsAYfPUAhfI2j5NoZ21X4z YYJ5gI15QP/xz7aYuV2QdlnI9mSqDo1IQGNIegU20eDC4kbJebvAj2MCCxRxgfd1wQy3yziihRpA RazyCm4iuq8AqwacAbBoehfkCliEgQRF1OAOYxq4raEnXKaLAYJdgQJoknlbaxiPmRfTdxrjYw1G iEy3cepm1SzwNGzpdxz00VFyWh2jPU+ffau/vVDLrh7Hen7yAJEaAA+MCLv+gL6uSI4E0yPvAI6u oIoAqPHsTrVf1qXNCaDRSaHkyQ+QtbYPV+ppji+ogzr85CqxkinMAhUAgb3KWour2m6dSJU8wYm0 IPvC+43zUg3Act40+1XCMg1k4fgOF0Rski4NDw1MAZQ7Ik3+mIQy1MSkvOXPIv+UEwWkeMh1xQT4 YDlwgPbEU7z79Eo5k/M4ZzwA9ZeZy1NwW7z1qYW5iDwtwbN0NC4/t4sQR0ZhTEa8FcZyCHq28ME7 TgBlUIW+CT0G2wpApBFDSRMfLF3EnFGzkGGXDVc0iOGjZo0YDRuyiFHTZ6HFDQ83YAmjhk8fPmdC ZsnShWQfk2rEbMCg4IACBTnaicM1axYuXLdu7bply9bQnTt73vI5y5ZPpUidIuX5U+pPW1OpzopD hUqcRIloJXpCZRatWrVomQ1LJUrXRF6/Jjr7Nk5duF7x3q0rBUoUIDp4/Bjy5MgTJkGC8NCxWEeP HT1+8FD+rAPIlMg8hhwBAsEAggMIEHR+ACCABAkDCKQmYOD0AAMQIIw4EnuHjggRYC+AvRvCgwU6 jiQipk6drzhVkFcZZcrUrB+4QUOIsIADkypDgAypEuUHEOtPsP94UgX83w4LChSAQIOH9yhMgPiQ 7D1IBAQEUBNAsCDCg/v6/bvNByamoOoooopSRhhhblFwQWUUJIaYBYVJZkKgbmHCFgWVuWUWrphy MBV1GhEkjDPSOENFFNFgyMU1XFyopIkWSmOhNfjI0SWXStpxxx59NClIHl3SxEgjKzlSySSHBNJH J38cUsgmpXQyRyCtvJJGNdBIkaQeoSSySSWNpKSSVU7+yQGANQGQgE0ADLApgY8+wmADDbgQCSYs Psrgzgz81ACLQVdC0cY10sjgijvFCCMDBTIYSY0wuhjpjDIzwAALMThttAs8ufioCxgnvWilTsP4 4ooJrli00o1MCuMjLljScaIw+JwgAQWuOACHdobBpSgMMVyqp56q8slYZKti9ihlnV3LLa/KCisR stI6y6wPoYArkVm+iiOtsNKKiy67qJDCW7qiaBe8waJ44gkggmCMhx6OGEIw7ICYDAgqnugBiO7s C82AgxEYLQAABmh4AAQicNg1/CI4ggbpdNiBhtt42+2BjyPoIYpZhivHuOSWMwUXKoC4+AHpOPDB O8P/Zi5vMMOGgLc8Hi5ODwIOaBhQXuzmw842BPJLWOmPYfOOCQJVYQpBYRGk0OqrJcxaQmU0hNBq W1ThigpVRmyEkBXRTsPGGNlmW0u3r5RS7h01GZLMu/GeW++9+a4STC23ZGhtLfuWckmCjLwjTdIC WJjxhSVQgFU67dy0CyxU0uAiDbpA8YzLB+0C9NBFv+hOLDS4woAJUPiCi4gWurSPNGzSwHWZQvrC cw0yWqMi1FVCaCFVWYVI9DRcUsOhkBSSEaYsULdpggMIwGkYYoFaalllk4XWWZ6+R7YpnsI1F65x wa0rW7TSYosKc80tFyxr038rXCmm/YqtKKCQorB2/qkwhHoBpj0/OMIBoaCZfimGBkC4Vg96YBv7 HKxhBFAYwxyGgIshTWIRgMLFpEOD2nCsY71hWgR+QIVbIEMd5bgFFZBDhZR9iAm2gUAHBoQdJtBs CDuETw+HBq949QuE6lmPD24GHvnIDAgt46B+Evay9XgHOVOYggxVISygIKgoC9KaML4IxqzN4gkU 6pDXFnQVspGoEWhIW4pQ1DY5TgRwdQzcl8LEN7zt8W6F82PhZvS2Gq3NRXa0lY6epLe6UQJxR1Kc mhr3pkgyjFeLwt2mxLC8O2FEIwwJQ55o1YUviO5ymhPUoLCgqOJBRCEqyhEXroCCMKRIURqYpRrU /pYnhHAqCx/hHKmwcIVKHqRSExEDn4zXSeUJ6lOtYk312oEOcUxzGNW05jWHIQ5sbpOb3dSmNSnU TXFic0HbFMY1z2nOq63znBQiijCIMgxbrIKeq+BiGrlYz1Wcc571tOI/pzAKgAKUnqoYqCrmqQqF qsKeq1joQkcxCoVGVKK2OOc50IGOYwwjGMHYZjD0yUWR2iIYI62aPImiz5Dmk54IWoVAASrReiJI nN+s5jTPkVOd7jSn4jiHODzq055qE6c+FUcr/tGMaTAjEo2wxFOhCtVMTJWqVbVqVTmRVa1yQhpb 5cRVqcpVa4yVrGU1azWsUQ21rnWtZnXrWz3h/wlpzDWucaVrXeeaV094NatTjepTwTpVr2aCr4Xd al7zOtbEqjWtaRVGK1bRRMlOVrIGhMJlLysHpzYis3LQrCUy4QzRZsISh5DDIRqR2kaY9rSoTe0h WCsHKJx2s40grWdTa4nVala1qvUsb2Vrhdlu1rNWEC5va9sI4w7Xt541LRSs0J0hrCIf+7DudbGb Xe1ul7vd9e53wRte8Y6XvOU173nRm171rpe97XXve+EbX/nOl771te998Ztf/e6Xv/31738BHGAB D5jABTbwgRGcYAUvmMENdvCDIRxhCU+YwhW28IUxnGENb5jDHfbwh0EcYhGPmMQlNvGJUZxiFf6v mMUtdvGLYRxjGc+YxjW28Y1xnGMd75jHPfbxj4EcZCEPmchFNvKRkZxkJS+ZyU128pOhHGUpT5nK VbbylbGcZS1vmctd9vKXwRxmMY+ZzGU285nRnGY1r5nNbXbzm+EcZznPmc51tvOd8ZxnPe+Zz332 858BHWhBD5rQhTb0oRGdaEUvmtGNdvSjIR1pSU+a0pW29KUxnWlNb5rTnfb0p0EdalGPmtSlNvWp UZ1qVa+a1a129athHWtZz5rWtbb1rZHcD33owx72cIc2gB1sYWuDG/GIhzzi8Wtiu4PZ7qDHrn3d jGLkghnVtnYzsM0MbG9729hAxjHAHe5wj//DGL4QhrjFPQ5wj0Pdx2D3u+EN72Ogwxe3cHe88c1u dXCD39zANrCxnY1tZKMZwO63O4x9bHnIYx73cLjDex1xiU+c4hW3+MUxnnGNb5zjHff4xzP+j3S0 4x//aAc0kpEMaBADGsdgOTSEsQtb7GIX5z4GhW5ec5rvnOe7IAbNw3lNdKQDH+kwutHxkfSko2On GWW6T8M9jHUGBUE8j7lIZU6UXQwD3dUEd093atNtUhOd1mT3Ta0pjnQ4/Rhkv+Y0nb52aTodHUq3 +9rPcc15jwObOQU31zMq7gXVnEJAjznN37kgl09I6oe3uuOx3nOZG37d6RiHMIIBT5NufvP++Lxn NcdB9KIb/Rz5sMc3vgGOayyDEYNw/ethT4hLaBUTjWAEJCKR+2X0Qhv38EYkXnACDGjAC15AAQq8 YIYvmAEFZkAbGsyABjQcIQfVx8H1se+EITggAjnA/vfBH37wO+H6TvDBKnjAAB+IwglOEAX729/+ 978/EZTQAyOljwY9uPH++xcEIQrhES7hEjBBq6TBrdgqAavhGhiwAR3wASEwAhsQHCiwAivwGiww AzVwAzmwAz3wA0EwBEWQA7uhBE0QGlAhGaZhGqhhEuwgD/LABezADgwhEOzABFygA3SwA5AACVzA A4ggClzABfLABDzgCJHQA4gQBvOAB2r+oAaqLwee0BbwoeSs8B/yIR9KLh/aQfOIQhmIQlhwIWwM Q176RQcm4AIYYD86ID0KwAQ4wADQowAWQAfTowOIYKDIYywYahRswRVOARVSYQmcoAZ84AmfsP2a oBBrwAmWABF9AKGmwAlGoQkWsQlsYQpqLqCmwAeWgAl8wAecYApW4eaOwRZOcRXkSRiUQR3YIQth 0eRWwQmehkBmwaCsiEDGUBXAIzhqYQZf0AVMoAOGUQdN4Bh3sAM4AAJ4AAnyYAZjkAh2kAhhYAiF MRnb8A4LYAc5gBsrY9006jBc5mPI8WOiqBylqByZcQRMiGmYQBWEoR3uThxQAR/qAfX/KFAaHmEQ Wg/2XK/1HmGrmqoRci8Sdq8XusEbeuEFVAADMsALwMD4ki/5uAAM3EhFoK9LkgAHvA/7OhIHmIAD IgAKxe8jv88kcUAR2+/8gCABeKAJ2G/+3A8m508U7oAQ+gD/UGT/wqD/0OD/CkESCLAAuUoa0Kqs GEsB1SoCFxACm/IBn3ICu2EDp1IDqzIDr9ICs7ICt5ICuxIcvjIsqXIsrZIssZIrTXAbwAEFd2EG A2EJY9AFlKAXkkAYS8AIiZEIivANddAakXAIPaADPOAZrzEGaAARDfEY8sEfYBEW/eExH7MLIUTm IKRDmmIXucIwfkAEMOAKKsAB7PAA/w5gV2giAT7AAnTwCE0gCgxKbGBoLGZhCmwhFU4hJVfyEBGx EpeAEJcgGEbhMAyRQKaAQKqACT5xOG8hGXChEg0xFAeECXDh5sZBFZBBWIQBoaizurCwH/jBH9pB FdriON7HflTBB3CBGHBhCqIgCZLAEBzhD4KRCI5RGI+xB0YgGWmAAzhgBGTwBWGwCDhgGKmxGrGR G+1wG5WROhwoGeSxHdihHdRhHGxhFGLAP9DRHC8UAhZAHe1zQz8mBqYAGfCBHfAhH5QuJ0IBH04v 9cChGjDBH2G0EIqSEyKBEVIr93qhF5Zh4CIBEFjAIYvP+FpnIr3gDC4S+qKvDcQP+/9qyAFqYEmh dPziz/xSgQkSgAZg0v1qckrf7yb5QCfTYP/MwCeBUgAxgSgTCymVciklsE3ddAJHME7ldE7ptE4/ 0ARLcC1R4Rf2AAYnAQZ/UAlfEBmPsAOWMBvTow5zsACUEAZicAdVUwdjIAZqoAOYoB0W0zEhc1PV gUO8hhgUhCi26BapwIqiILp2YAQqYARMwAEkZwIwYCYmYAIoAASO8QjGkyfERl6qQDZpEwcI0fxw 8wkn0TlHYRz80BYOMRRrET5CkQd8wBaSQRWWYFmdc0BUweXUgUFU4Q7uIAqm4A7UgTu3sx/yARlu sSy6pVxoQRl+oCiYIDgUwREMYRH/iqAI6PMY55MIiIAHulEZ9RMCthEuYRAZhxAZcdAE5nAB6lAH f0YkeWAKbqEc2OEf8KEdMDajIHQcgqEKJvVCP8aCyBE21JEH2PFlaiBbkQEd5DHpMDYd6FFFUS/1 roET+hFGXw9NMYERbBT3IgEYImEaegEQViAEYpULvABpke8LKNJIMfIMom8PyG9Jm4AHHIAGojRr yy/+fMASE4ADaLIm3y/+upQQvtT+jFRMyRQAK2Eos2quEHBN33Ru29RO7fZu8TZvvRJPuwEFn2ES +vRPs1EwlTAw21AwiXEvCxVB5zMP9uAPHAA9iHEIeaADJvWGmEAdHDNTF5NTIUTc/7TGa5SBez4E YOTFCnrAAkjgMUggVkngdR0SA+TgW85iKcJGbPyQNuugBngTN4NGWD1xGJD1FtqBGEDRB3p1CYbA OSVjCFTheJ8wFD8RaizqFv7pPaLgFvKBH/hhO4sXbJ6iCrIILWqBa8YGCKIACQzBEO4gEaRACgxB CoagcnHwYP1VB2kgf/UVB5mwCK1xGOs3BxfgPnQjAtjDeYejZV02o9ZO3TD2gTu1CoJgUmOAZNHR gslxBBwANoIAobboFqymmlihHleURa1hH/0READh9QKSqzDBDdyADd5ACYyghmv4BAAlU5BPaSfS DLgg+txI+qJPEKhvSZ1ABxggAv+0NmvbLyVroAlWIQEiQEvFlmzZ7ybvD231Tw/G1P5+EgAH8Ezf 9gDjNgHp9owhUG/VeI3ZmATxFAWToQaD8Q6NsHA9YBuT8AjdcBtx0FAB1QE+hj+aURGgYQp0ADZi JhEwtXMZMws3FRmIAd3A6BhSbkJYkRWzZydu97L+57Ks4Aj4xwqEwArK4hZqwSi0CBmQYUJHgTZD IRQdcVg90VjBLRhwgRWJgQpqUXqrdYmGs1qbU3qZoAkYahOnABenQBj8gR/6oR/8oR+2tSnABhea QIUYRCmYYGyUY4ek4A5qQWyKcwn+V191EGj0M0CtMZ3rtxhz0A4HmABoIIuEQR3/MJbdWPaB6Y5j bYHdFPhix4EYTOE3aSBDe6OCX8YERiACYuDcMnmkVqEJTkFm8VH1XtT1VFiF/UAQXE9G52oZgu8E hI8CWuUKMmX4MsV2ig8FfriHpc9IM1IPNhJK06/7lniJGzEVpJiKdXpKR5EQslgP0hao+2//wDgT xLgoyVhN2QqNmRpO2/ipoVpvpxIFxyEReEEJ+rgDRiAJrzFQCXeP04MIAdgEIGA/fGAKEmGF1OEf 2CEZSveAbuEVH7Mxn9kf1OHbVDnlkkGViUGvtUZCgKJDliVsbldsvIUWbiEXKpMYWOgVL/YYguFX o9cQIbGXz0+eXsqgomZ5cfM5/2uxV43zWj1xmI/5Ko75FrJoFo7hmc31MdXhKrxVFXbhFqtXKarg DsYwPaugVH95CWxAPkygCI6AB4qxnPWTf/PAUQFVGIfwPOjQDctxCcbB6fD5nunO6ez5nu3OZdsB GaggCC7YY15mBD4gAnzg5q6iJ0SKWnEgokuYAq9BGgbhoi/aDzLa9TBhrjgBEEA6pEfaIWMJBQAl SI3PDLyAab0g/5xW/9ggStOPAZ60prOWd1OBAdRPJrWUp3v6p4P6DIYaDYr6qNNUqdm0qZk6qlE8 xe0UBdGBChRBCYixGz2gjo8wBt0QCcGaL/G3NwggAs6ThRz0Hxo5H9hhZWZBGf+wsDGzkB3UwUJU GRn2uhzymrGn3EIkRIyumViwQiu+xSwC2xeGo0SzcLtboTYRs7OvdQlGYRWexhN7mQaCYFgVERPt STd3k1mboBIVyoqGIxmAAhnqGmPVIZd1OQra9w4Q6gtjMxeNczdt4NEhPc6HwBf8/H650QRgwA72 YA8At09h0A5cYD/vkw4Z9gFiYAlUYRio+0QfOGPprtUxlh1kfdaDfB2UoT9GVkNh4zZUNQLW/Jij hovSMwiYgDZVdB4mukUfgb4x2r5d7xHy6hFeoAVAWqRjdfiG7/ge0oeZr4cTvKVbWg8EwQlQEvt8 gAEWIMIl3Iif0BUi4MJpMsP/eboJfJqRgHqLjdT+9KAMwNhtkbqMl9rE6VbFCb7g77RvUWEcouAF kcAskiA1k/BwCVeP9XiPdYPHn2CvicNBk+Exm9kfygF8QDgZyqEc7jrlSl6vWUjKpfzJVVnKU27K vwhCsMeUceGUG6RDGFvMT3QcLrbMceDMozcUn7AJrCg+njB/D5MJRqGXm2A3MXGf4WkJpqBaP7FX j3k4R2EXIPSSKbYf3iEZ7uCfhHOgdtO3IT3t1f7RmYAYSg4fjmF+/9UFikAJYODuYcDun/HuD3YE qpEDeCAKbGHo1q6ftxvWW93oWFbWt1sLLbYdJPhyf+Y2KH8EEtowaeAdmWUU/nwgCGQTTY4d2Vn0 Gl6U2e37vgNyrjCBDVKA2jszdjUAULhAwH8YaZPWwA08//JvTAWBCcr9+mpgOrB23aH0EF2BBg6g a2VybOMvJZtgELKYEqJPD/YPDfSd3wshjNEUbs9KAQV+4A0+/MUfLBH+GKIAPhUBLe7gQAOzUANY Cb86PQJzNxBABzSe5LYQMj/+On+iQ3gCIHwlG1iuHLKD5dSpM4isIEODDA8OTIZsoDBlxDIqu8Wx o7KPGZHhG0kSX7uRrU7h8FGjBo2WNVjCXNKECQ8aOHH6mLLK1igmNJc4mWIL17hhq5w0WbLEB5Mm U6aoesJE1Sxi6ohhJFYu/p86ZLZUTWFC1glTG2jTql2LlukoW+ryyZXLTthPHjyI8DABAUIECBxc mAgsmAOPIYuEHUOXjvFJfHP/lRzZrrLlyozRoWvHbvJkdupuVQmCMwaNCDE4jBjBwTQNH6piq2IS ZImqoqtO4as3r/c3cOCucWIEqHhxP3v8+BlUCBMnTswAsUjR4gQFDBsyaECRwQsKFC3MeBnPRXwY LmjSqx+DRg8SHPBx5IgvP8IBCPTjz88vn39/+DW4wsMBPjjhhCgIGtiEgfE1MYgglFRCiRnp6ZEG GpTooUcZhBRySSaYOMeJNNJwYs2JKFZjTTUssnjNNdW8KOOLMc5Io403/s4IXDfA9bijjz3yCCQ4 QgJZpI9HBjkkkUsm+eOQTjIJZZNUDrlNN9CgcowUf9TiSy2JIMFBB2QuUEABZHZgggsjuCCYCR7E uUCZDxDwwC3rcPbPP3Pp448//fTjTz634FJLLrfMUgsxyYxjDEUJGbTOQgUpBJFClB6kKTLHJHNM MYwSc9Etwly0EUYUSeZZZ/iktJJLL8EEqw+03kTDmBy8xsQoPVXxlFKjqLJKMsKswhNQTAw1BRVj MTFFFVPcQswx41TGzjG4/HQWUGzdwJYNNyxhwxJVmEJMO3/ONRc77Yxjy1g1mBbDAw/45QCbEQQR 7THqcFYZZHMNqu6e/6xe5q9mCHPGzsIlsbNnPvioo0wcQ+R062ocyNoELqoMoUNVuOBiSyp14GNP b/N88xs41jxi3HHKLTfIJc9JM8gL07WAAQYZaOdFBlxwgYIGZojnnRdGU4jGhWhQqIcb8O1HXw4c JACB1P5lnTUNrvhwAA1O4KCUKEo1sWDYODTBSBqUtK20HmickeGGgniYCYgjkigNiim22CKOgAcu uIxLFm744YgnrvjijDcOJZZaLqJILrXUMgsQBxCAZpwedFCA5mia0AECm7sQp+gAADDALAs7zGc+ f8YeOzGzJDILLbf4krsvxBiDDKblJKPOpAthanxBCCG/6UAZaaQV7/+M/g5xSaqipNISMOXU0ku0 Wux9gU2sYmwTo0A1xSjDHGPsu0M8NUUTs5HV/hT8UoZZMFWc9e3+4zJhCi7HaAfsYpePhDxMMu1A xzjGgT8azAsCMYDAYYiyGIRtRjKvU5dc9vQPdinwGCA8hi1scZF3LcFZwqgWZ0bCp4dtkB3IMMUS guASDuRKVksYCxCYUAWrhCwVujkZylQWHEwM4mUxk9kjaiYJMkwnBSHgmQY08IXvmOE7XkADF8hj NC9cKA1MO4Me2hC2HGANPjRgwAJqoLWptRE+MUiFEw4QAfgcKBWjyOPZ7HgItrmtQk2bGxrq9qEQ 5Y1EfFuR31i0Ihn+nWhwkMRRj67huEpa8pKYzGQ3uvEMVKgDGLrIBS2qEIEBpG4BcOrcmTxQgM4h YAAE0Nya1uSCBaQuAA/QkwblAqg/GSMOqqBCHOKgu1vkwhfGcMhXykG8dRBveM4snqWmaZCFVIR5 GbkFqpKRkfqNZHokaYersLc9WcWEVrCqwVOwpxOaiI98UBnFFFIYjHlOYYdRkQpQ5GkLdMgFH5pJ IMIYOAr98a8twehXXGAXsH+oA4SPsYxm+jWOUZAmCFVQRr8wg45jCEMVUXgWCZtXqlJtZIRhAQIN ILATGgBhCj74y2ueYBVbSItRG3XhBv/RDmIUVAcjiBVM8jIEH8D/LzarAKLJUJYyIkqDOMZJoiAG 8QgRYaINOEvBCTBwgqF9wTtXRAF6vPBVFIjHDFz4Yhj14IchnDE+aTwAG9+Ig7n6x4w1gIAc78NG WvkACDzQAU7+Uq83YEhCSkuPGTQEN0KCSER6S6QiFzlJFEXysjbKpGY3y1nOdlIdvsgFFGiAgDqp bk4mMMEqOfe5OZHJBXnoABGKsAAJSAABEFAFnwiYrtixAwpWsAoVoGC5WdyiFr+zJjOjqRDmtuMr yQXe8RjiKW42jxjXxC4yHvPPkoxTJjiRlQ+Ychoa5BAqTmCCX4eSx3z6xBbjUF89mfAEqYhlCkYp iUCrZUEFKnAY/jL8lrfGdQyAZfCfHKyeRDUzDnQoRBgoXKACkSGqsPiKKBvpiIZROsKQVUEHIJap DoYwhVmY+MSzCCaJbTEtheiJg6Ahxj15ABOW8KAIRPgrE0I6ClEEkalNBUc1JHFEmClnqjOr2SDG MIYUpAAD30HBF65YVhScwWhbLBp6lga3uOlBEEf4T35qwIADxKCNZoxgDOIVwb70ZQELQAACXHIA q0FAjQfIc54NYIABSMAAL8DQH9WzWMYKghCXuIQhDynZRbKostbA7OA6S+lKW7pxWUIHFXRQp1iC Tk2qRBOZziRqMpmgCFHYRTKoEIEFcEAHPYiLwAYou1wIQQVU/rBKFKhAC1xosyEJae6kClKZaI6j IdI0HvAcIhGKVCQjA6EwLXLhGZJ8F1Y6iQlTggAYpwAlvWZrilDOJ09e5XEYSHmfs6YQhVn0U78C NVhj/jUSdASjoGu5wQ1IYYpxAGyX1at2RCvzFZ9ASxUhq50UgEBiX3PEphyOeFFwMQtfWfQBEaAp ik9slRTfcwgIt+kuSnVdYdyCCmTxa62K0AO8jIAH48XBj4H8m20so8hGVqJzpPEIMjBZq10dzxWR ZsWzeqE84jkDly+kdD0oQT5mnFoOIMDXlsSgzRCgl5wNQAA5b90ACNCznhMQ9gOUfet69ksEcOIG DbXtDEzT/sNi+aChQ1fibpBFZKMpC5xreCLSRpp03zN76cIb/tJZwgW9Ok2ABbCylawtAJzPRCYi UNxL/epgMi4H4ifgKWDp+gcyoCCE0gMzZJXjijGMIexgRzOaB4HmVzZK8OMptyISiR4xaCEEKCAj 4JRxlV9vhZObjNcHt1I5Or0NlBOe7/nGWgUrVtEEp9R3ngKEN73pTZLX1fsYAQYXKYLR4Gqb//z4 UJVAsaVeGrQJBkr4gyESkYjKcdj+KA1ZyFTxgyfggtU6QAUbl2KyIRtUAARAkGsbR3EcRwW+NgVM QStFUAQ3YRgxN3M01w3UAFU5h2RW1QZM5gXVgQJHJx7l/nE0aIA0JYg0X2AhFqIeesAGTmBGNIhX eRV2fAZ2YYcAOuh1X+eDeZYADDCEEBB2CbB2NTYE9cUEQGAgNXAHbkcJZ6B07TF3dUcId4c3jLZ3 fkNJL+IJnkBJKjOGRHR4ZniGaBgcWTIK9BJLD2AmcQJ5cShqlOcCifA71pJBf6IOOgAEPXAEtcB6 oJEMcQAEI7ADQtACLSAEcWBTHFEMyVQQ0SSJefJcyCCIC7MO7PI77IIpz6UQyKY8mpIMuRAHpVd6 tJAQBYMOrqAStcIBEWBDNPYUyPcatXITNXZCTEETZhNPTSAKZhMTVdBPe1JtxegZekhAAAVgwbAZ j4F+/5QBjS5kEv2CDsJQBTzwB4GAHHlgAg5gAkSABEhgCIZwB1JwB+gYG+h4B0/AA1EQGx9TYgRY gPMYGwfIA8tCf4kQG/VoYoshGk3hAhS4GjC3BDK3VECWMuCwDZGAREk0CIOQCUoWglpFgkhnVt6B HmbwVSooHi7YZWLUBrYCi28WZzsoZ2YndmbndXDmZhBkGjCxH2k0Z1A3H+n1A0IwAqbhBFCoB29H hXogRpRAd3aHdzWjd1xYIzIChmJIhk75lGSYhlI5lYpzDZ3EhvVCaqTmAbCVBy7QAZyzAAQAAVIg PP7yXLTWD/kwBH8oBVTwlsL0lkewAz0gBCwABmBgBP+JYFPHFGyUInudSGzPZRkLs0zW8onFUynW 1BDIIFpC8AaltwPDeBXjEDzCAESvciuweENKUYt4MZI2VHzaxhRl84u92ATl4m8ctEEk8VDVkn7q IjuBki4QE2+WYX63eX4c9E0DI1DokAy+oAh/AAOi42ocYAIwYAcwAAMj0AGAEZq30mo0wAMqxQS5 VoDYSQV3AJdTcBNDEAXruJ32SAVREFKzUFA+wAMwQIGpBXM+cJD18A0J6Q3eYHM4t40xA5GPoGic 0HM/pwJYNGVSNgZCc2VT5gVjoIJp4ILpEZIlkGdlt5IHYAAT6oNwtgAQJFRs9FZnVAMRgAA0UJMx 8QT/EdAACmAAEdAEdyAIghY36cGiPskHlIAGiFZIR2kiSamUMcKU4KAy3gCVP/qUP9pUYxikY/gk RlIlSTolTLqkTookSgqlTSqlTxokVokKquBmZqKVBaAERNCNHeAmHbAAB0AFZuk6eyKb/oALPwAF bkmecTAFtkMFP0ACKiAEXjAHcwAFuONsx6Mwz5UQnFGJ6tATCrMODdE6z+VMn8hsB5ELcvAGkloE VgAFcyAHs/AR9TcyrlgDNsQBgPEaM3ROtNIUyPepFlOqBqIgwDgK5AcZsxYZ6yAMMMUEHGML23Vg +eBBAXWYBnOWC4YMC/SMHaRTvLRL+AAaoOgLd6AD/3B2nMkpGEUwAmIZSyhpkmfiZsWHF+mZnp95 EzrgAzoAqhGgA3nxA0PQPky4F37VFERABDBgBG7iAu6JAyVjD/KZkN+ggRwICFJFVYZ0VUzGAicQ dF5wBisoZQgrHlO2ke3RHkwHN7QFoXLWknFmAGtUAzVIV1oTU3SkH2ZUEx9KR0NBCC3adHATo3TX ITa6hUlpI0wJlTI7s06ZkL7xlFSZs5jkhZ2kCmQCAQXwAFyKWmPqWgQQAf3iOrE5KLGTDEcABVBw BEPggG9KBU/wAzugAkagp5fqC8FWKc6kie1QTa0zKeMgCqEgCsEAqMLKLgQ3iaFYDpAqB3MgqULw BP+zIAdQYFykZwS0AEQ54BIREIt+wT0x4SxlYxY88Kmo2k6keSCjsBi091zj0E0lJBZN4RL6Uioe VSrp01Gca0G+OVAgZFI+cUJGsUKvo6sb1FPTkkIKoUC06n6wVUuB4QDV2nWAcaFiuQAPgAC8Oyda uaWSd6HFK1t6YTGy6FdD8KVswAYw4CbcepD4arM1Fwk4l0SAAJE0wwmYAAg+J4IGe2UYKVZo8AUH elaLBbHpsaBsIFQ1GLhxtgBvxbFZwwH3IXVm5AQ0MJZpQwh+lAZNxzRDmSEsq4WRJVmT5SJLGYY0 +8Aya7MSzFQzq7MW7CM8i6U/G7SU5zl1aEuaA2f/t7AwkhEwtPYn70ALUHC1NPWWifCWtJAIUICI kioHtNAMzFRNzsQO6wAR7PAO1qIOrIC2qBAKocAK7dBBMMSJmYgpw5YVcSAHUkx6O/ADJjZMpIcB KmAFgFsAbgaq3EOavWggPvBmoYoT0CmqOWQKIRdxuAAtEjdCqoB8zhJxw6AZ4hAMcYwLURHHETcL 3MZDqkAq3dQpIaQVtjAL6mWdtkARC7RAuzAEazK/1IoAnoZbK1W8jfeGvMulkkdqC4C7W7oAPHAH RCA6HcC47kkrX2oHe7AHeeCVMEe9+Upz9flUUfWQAMsJy8AIPtdkXZVlaICR3mGgRlc0KbtWZOAD //FbgwsAdjRov3a0NQfwAPlRgzXQSmIDwBEiwBALN0O5snYjInmjwAuslH7nwBC8zmM4we78zkQa lRdshhnss0B7JkKrlQ5QBCVgSo0XZ0+gSyacD4Kyh1DwA1HwBEBQnk8Aw7kgSlcLBXKQCMXgEMw0 PJ3IxAvTDkgRCqjw0R99xAqzxCOtEDw8KdxEC1MsBDpQxUwABSqgAlOEAUJABYALtBgKi2osFKva FC4JATkRBKRBA87JAUtgFCKkf/p3X348QjA1CsPIYeg2DMGgxxE3G/7X1BOHC0xAA1PQPtgZ1vYo FgwnFe6WyFEABBwAZ5fsadZaksALvJwcvMQ7vP+TdyYcQARDsLipjBMOYIEq96WxHMsu8K60XMsU rIEuk3M65xyRAIIJWrAk+AUpqIJmtZEMWzRvk7JiRAZM0Mw0WIRzFnV0xSBowx80YHb6G79iMwhs Uwly982CJs5GeZR7syJ904V9x5RGys5QSaTwHNzCfbNHOs+ZhCOdtAp9QWq/S3nuyAu1EASwBGcM AATloKtq6g9xQJdP4Cvpumu0cCiIAiZxsCjAFrbORLYL8w6gMcQeXcQgXcSsoA4Oww7VpDAmXTzH cHLAVcVV8JZWoAJgMDQZAAWcWlcQkNNrp6oGkrkOZDFD7VcVaBi4IAxyjHD7V8daPcezcRtazTH/ U/AEe01iSLUKHTePzKJSNAZz66adqnAHsoGOUiAFSNADL5euQDCuxOvWPF6xZmKScs27CW68Wlm0 xJvKqSw6GaOZq+xXtNSVeUAETqAbTWW99XlzuZyfMxMi3xu+I0hWTXOCKZBF6Jt0SPPNC5oeZYAE oG1Goh2iHOsEQmAFYlPnYxZnWLOx9AEIrx3bDNo2BlwIdyORz3FI1bANiI7oLcI3YPh319Dbvl2z 7TzclF7pQ1Tcxm0412ANYIgiye1mQfsATjEFu8AvnaEOuFAxgxsEwnBgssNLyJC1JNADVFAFT9DQ 06Y7ubB6xMA7lAhNPWxA7zDsMCQK8V3E7x3S/6tA3wsTPMDqYs8lDP+3a6qAxUIwByiQHYyoCpiZ V8ZZuKXaPTbkGt7zPRPOAzuGnUMABLySfx0WMqswCjsx6sIiPuIjTzWRnowbmp95i59pdRDQAUTd ATHxrXlBBG/iAtE7Jhh612ZiyTzu1j7uu3LWdXPd8ERu16QDyqh1Qxdji+PVFCOQWmtC2E5QMvAw pPq6rxuY5X6wvQCLCb38yxW5RVemgkfXNOk7ZWK0oGCk5krQ5jkQAzx4NRw7BGJA52Fz2vFRA3Fm V1FD2vHRRxHi5xoiaIE+6IW+c9Jw6Im+SZu0DSrS6I5On5H+25Nu6Wq/9pfulBf8IkDy6W72AP86 sF2WYaz5gAxr9wTnAnq0uQ47YKcx3XtvWd6h5QvIxJgNEbY8vBDrwN4//A7owArJfuzHHgrL3jqz t9EYzS7lwBHKIAyOCQZT1DN3SwWXqRK38px94Rr73gGD+5yMO7ix+Gp4MSbUOQTbuWsLNwTqpBRR YTbJ0hRrJlRGZTZkPJ2ayRr7bgJo/KkC70B9MSZkkj3UryZhKqbY78GkBvERL/G8q3V2cvFzYryj dibYSmrTPxgvQQMOwBqjSSs2lFpdWdglkw09itg3W58NmXPFARCDHmHCxClSmzFjUpxIwcXLFzRe zHjxwsWMmS8TL17U01FPmo9ojPjIUdJkyRr+CAxAyIGjJA6YMWUaETMkphOZMGtAMEAj50+YhkBW 4mMGjUc0fCgtJVQo01NOUS9dkiaN2jas27p528q1Wzdw18Re8+bt21m0adWuPTsP7Ty4ceXOpVvX 7l28eeWyBdfX71/AgQUPFgwN1SoIiRNTadcO379/+STn81c5nw4dNIJMudWOcj9//5DdgqJjhxAh LFBTUTWLVi5fxmQjK1du3e117NapK8fu3W927Ia5QlXc+HHkqEKtUhf8nzpk6toFZ9dY3XVi2eWg 5o76R5xbxFydwlGDBgcaOhLTYM/BPXsaERRDiBDB/f0O93nwQA8kyp1EqKBCiih4gI+GGhL+VDDB GBasYYkmImzCCSZ84MEEDDO8j4MMTcAPvRgS2xDB9DjooIACOlDRARUxVBHFAgiQcUYaZUSgAAQW SGwBHSFAAIEHHuCRRwhUhADFDhxYAMUfbxwSAvc8JHEEDHnwgYklfPDBRBNc8NKFPPKoA59pqmkr rnvc+sabbZYZJBBAAPFjTj8AYWSQTAjCxA8yXhijhRZQeAiNMSTiwqIzvgiDIjQuAkmQjyJ9waaT TKJhAQMeeKmll2T6AQwxwMAJppZyqgFTCGTqNKc/hqLkjKMg7WgpSgh5pBKopHokKmmy2SabbLoq q6yv/iprTbbMWktZtZj9Bs260qRL2rn/qJXLWminjXbbadkCK7BvAQv3r27EAswbcAxTRbEFmBjH Mcj+GQe0fPoBzZ8pMAtCB/9uGeeWWWah4gkgRvgANTDAEMKKOGqBTbZyZpsON95y++03dVYJJTlU Ynnl4+M2Vm6VcZyDrrng2tmtunKSIS2KOeZAzQorqMAlvPFwiA+9+CCAL78IYugZggOGfHKBDTmw z0Ie/quFikSSOIIH8xRE0EEansByQgmdkJAJIjCkUkMOx/YQP/ZEFNuEn09csoAFCCjAxLdhlNGA Gu8m4MYcdSw6sSaFfBKCo41GoOjBzzPBQPOoHEFLyH2goYERvvQyDxzIXAact+JCqxtq/xiJU046 ARlEID0HISOhhQT1olGJKHo9IzO4aBQij0ACaYwhKj2JJwRq4PSknMDY4osibALKpQhWyqnUnO6Y lRIzQPJID1qbwjWTqDjBpJBHKLHkKmC1GnbYr4pFli3221dLL/jjl39++tMibDBz/TorXVRUQREC H4wDHwPEh2Qik49/+MNe/rhFBHQQhCDwAAhAeILACBSFJ/xgBCQQghHeMAcjQMEXxYCYMcrBm+a4 Yx0nXMc7fPOOdgxDFBwrzsds+AqOkWw61YlOythxncaMZhZxkAMUhPCDCt5MGeIhj2I0Ex/4KKY+ hDMak/bmJCiZYARK4sCF7rALXCRCCv5DYJyDFOQD80xhCk1YYxPwgAcJ4SEKRHCBCUqQoRFEqUr8 UVF+OkCDxLTIRX08EdyclKJC2m1veWtS3/pGOMU0SUeDmw8VjTYkFaFnP1QzzwdIYILIoZEGDviA l2AQJiKMKRuRMNOZ0MKVakhDdHGi05xMNwg9PWJ1CjmB62AVu4o06gxnQIEZzmCU3EWqDEXwnUkg QAADxGBVq4oJF7SghSMszyUcyBT0tCk97L0KJHzwSPYKsb2CRIUQglBDJpaxDWr4SljoSx84huU+ fLKPfvvkZz/7iZawCOYaYRloYNSlGHQQkICTqUxD+9EOK4wgCD7YVxCoMMREzOIJUv6IAxR6wMGY vSERxaiNMUhKsd1Ix4XBecc4WCGy49xQpiBLTiqOwQ7JtIM2vgnOdXhTjlsICApQCFh4siOMVJCn ZxE4kIXQwwEidWCK7ApSk1CENB1wAEo9uEMtlDGLMbLHQVqqAVlpwIQIrdEJb2SrHOlYgjuSrUMm ymQN9sOlDhGykEvqEYwUmTcbLeBHlyQS4AYLyR7RZz6E1dEf2cMDKk2pBD0IpXk4UDkYFMFLqcTH NiLBjG2AoxtYyQY1prGMSDxiEKOjZelOdwk9tWF1LzhBLyVyu4mgYJjDHJQxr2c9NMCAJM3sgEpY 4ruf+CALotJmDmhgAAQ00yQxAf/nUqqHPeuZE528IsQZ0mCJR8BTnvNMX7HOl0/0ds6f62Vve+cC jmoINKCF6d+RIHAMAsZrMpRpqD/eIYcLPJCiOqBCHAQkoFnUghZx+MEO3vAGOdTChLW5Tm5+GJ0D urAdwSBOcmbqsVfEAsQ4RI4ojjGZdowDZT88IW9Go4qL4kIZS0wGMY4xnhzchz0Q1BJ/3FNJHv0o SEMG0lWJ5J4eSKEWvhAjEMS6IDSStQYx8IHXpuAEr8GRrXOsIx7v0yEa9JE9HfAQ0vCKnw4soI9V /CsCANvIID8ykoedpGK0utijFUmsPpbs4kJJAxPAAAZkYIOgOZuNRzBC0YBow+n+TsdaSNfylgMh CCB22QLbQiQiESkmGoZZO0+b4bcegUHvmpmSARxXuiXhAQqyIAScOEEIc3iCS0hFgx8JzzwdqOSD cCC9NCwFVtgr51L0cM6npNN73RWDJbIxjfESq7xeOZ+z0ts+92Zb2/zMX2C6DRh1FUBoVdAvAg/4 mQUWQwUhkOgEffCDIxxhQIlwWC5qEYcjSCERuYCYOlB6Qs80NB/jWAUNUfExEItY4TdEDnFcIQ52 VAYf6GhOhX3asuzMIjzHWGI5xoFj+sAnCEsAwn6iOGSUpzzll4QAEZKwCF/cAQlAMKOClsAEBl0p QliOEFvvwOW4avHLGhIzmV3+ANUicYiuaSazCV6UZr/SyM2MHOwChAQ3INOZivT5MZATywGr6ZgG I7ijlSLHgxK8YA9rJ7SYyKRaP8iWDW0oHaRHV8s6DaIQsMWELll3ghY45JdnqMjrhokGLsDqC6Pu CO9WvYABLEB40nVJDa4JayKMQQtimINLOJWSlSiNAQk4gEqgGwEf/JoSwX4VGoJdbEpgb7tR6bsg 0kAI00bbK9Oep7WvzZZtB1/4d/nGt/0ylsGoq6w+GMIx/oHT/U7GXv1gxw9UoIIL7OAHTMjgEaCQ CFrUQvy5yM4tEhGb6NiGYshYB2Xc345WwNQ4N1R4/esfYpqWeBgJROA43pX+shWqjdogBmRAhmQo QGT4uFPIgSCBjyspOQMJkap6AMAKEkYaEgQwgSQwhF2QgiOguZqrASdYgpxDKyZgAq9xozf6ubDx Mj0iOkKqozQrkj5yj6Zzm75CERkZAMCiERzJkSDhqzvbEcHakfmwD6UBMsWyDwWBLLZpnLLzgSzJ kguBATYIBBgoARfgLGaIBNGJuzagu7qzO7zzg9OhNEyQrTFgAUxzCKPAiImwnd3CiEY5io6wHj1Y plXjCQKYvErxASHoAiEYAjjAAhKgI9UQAijwvJLogANIgARgAAdwANIzAEvMEbC7g9UTNjRAg9ib ntijhNnzHjgIAzNQA0z/WIar+Appm7Zq873fe5/hm8VZBAdrKCjAQD76sgUgWIIfGAJcKDf3kz5/ oIII2IEMCIHse4InKLCGgQ1fuIViICHZMCF/243b4I3gqBd/YIdjSAX5qyH6sz9yHDESqyFUEIVh KKDquI6U+akWg47ocDFkwLEGNJAgAAImKDkIkECV+0cKlDoioYE7kIKf+8AQrIEmiDIaqLIoQME4 WsE5csEXxBATeY8L4bXGEjPFMYG4WZId0cG84cEa8asCEJzEkqKUJBIkrI+u47qQsystiSwo9DO0 Wsix+wATKAIkIAIeyIFTwAdmSLRHK0O7a61aOsPUubRe4gJNi53E87Rj//KC3boej1im4fIdnhgA aaoUHHiDNdCCLMACLjiBD2gRVcmBnVCJw4kAA4EAByCcwYqAHIiCTWw9OwRF2XsK7umeTKAEOPgC QXiEVWTF8nLFaotFfaJFxtw24zs+XDQoVLCFE9QaVWiHeIkMf9gvfygHHdigELi+ENgBKIAa8ION aYwNAWQh3KiNFnKhd8gHdWAFGvqwciRHhjMO4hCFYGiMd7xGFruO1RTOelzABoQPIJiCCokBf0Q5 IAHIB2ikHKEPAUGiJ0CjmvOBJkgQybm5E0xBFcQDFuyQPOKQDjmb96ArwumjItm1/KBAJ6kbwCJJ H/QrS5IPKXIABEgM+f9gyQ3xI/qYIqaiAbMTO7JbHCZQoylAoy3igHhDI6DEB15ghES7EznZA7yL EzhBSj/AUNN5BL5rhF1KAUDxgjDoRGCqnk+7iEaRlUjRAzRQgqycLuciAAk4LkbEgTlYAzDYARXQ gAtgkRThgNRzieIigNJLNT/8gQW5rBx4gldZijRIAzRwUVrRg0rYnr6sCk2gBEEYAzqAg2UYLfNJ H6xIn3u6p1dKFjZVL2yBizedhzidU26pljq9ljvNFjuFi2+ohoEal764hvgCF/4RhiqogimIgii4 KHWAjHzQB/5qB2KgAiDoABK4PhVoARUQgowKvxGaDWOgDdxYh38QQIv/eYd6EI4OKw6RkanbDLGF E7GZYlVU2E1WmI7nO5nqaAwKu7gVUkAGJIAFYA+KYgIyooHm1BsCSDkgyRu80ZEgYAKLmgXsXJCJ agISXIIl0AwKucmIZME6cpwN0SKh0zH1XCzHUpEQwZur0kG8qZEBeNcZGSwj45EhpA8G2E+kiYDC Ahr8iIARyI/3sCsDMdASIAF9vIM7WNCyopITlJwcGJNIGIRGqNCiHEPWKkMzRB1MOAjWKVGqxC1G gZWN8DSr7Ag0eAEikK6UkIACaCY5MIKM5IAKcAAk6ZLKS4wE4YAbPQknOAka6B0keBXsGjZyCiem 0NLu4YS/HAMYgIMU//gDRJiGMy0vrdCK3lNTxVSvxuxaf/qGW8SfyASMZ0AFQ1UjDNq+KlAFZIiM clAGVYjbKSCYDcrUFlCN77sFX1DN1cSNC+uhd3AHd3gHdHgpjpkpWH3VV82/WlUOVsiNbDwG6WgH 4ZQO4rwOkHuAfowBCAoCMmLOSoJO0XWiINCa7KyyspqQhjxBtGojn+Oy84zdpKErCawkP+K1GJGR k8zdHqyRQ4Ibo0lC/sxXJYwAFnkq93CgrBrYTRo7nhkBEeiBI5gChV1QCxkBHjhB/ojQRvADRoAE RbuT1TrKuytDpay01fECTW2B24qIiXgdqbyIw0OKMlhDEli6PlKQBf+QAAJYtRxwgT5ikQUwASJA QWPdORzggMg7CTKaPBxgghwgAj04A+zxtKP4RFqpFaXlhKrIhEoYAxNoARJwgUAoLV/JiqrditGi hmVArUhYBmZYRVjEJ6+t4X6aL4Ea278oW0OtgifogSsgge2bICqYApu5KBjz4R7YIO5QmDjIBWrs VRai3ANsh4uBoWEwOFdFuNvsYlk9x+IgjlBghZLpKdqYXMr1KcotB3SwxyCJAabSgSvxAdC1wLxR ud6Nzgd4oCeDMshhIydAkCuxsp6TyBaMXbIZkTCrXb2iK7jZGxgJyEUSySsqyXolnHuNAOLlT0hS mvw4j+RtD+bdpBH/yKOxK4Ei+A9VWNiyKhgOGAIn4wDubYPwDd9HI0ONtSW94zvVSQhMOwGnRNH3 NQrvOiZYsUMyWOLRK73DOQBnbiQCGIAB6IBmwgEnOOQSCFgTsAPxS7C93YVZ4AG88cMe+MlSYQKY mOAKHrbY4wOlSFq+XNpCEIQXcIE7goFBmAZo24ZqyAoV3gZpwIRGEASCLmiKjQRMiOFtiEUbbuj4 KT4dDtSI9ouyHYZD3QEMyOgdOMEJSqIEe5opSIQ4GIIR2NQ36CBaoEaIGdVyKMDmuBh2cCkaggVX 9WKbXjgb0k1XcAWSoQ7oKIfG4FXbsA5gHTIpmig6bk7RVbnAMWr2/wiaq+HO5fOBNWICYm3dNnIj NgIbRJ4rG9SrHdErPyoAwoFkFAnIH6FkG8mbS64kfE2s/oQS+TBXDsgMHSPY6zVlsisCg1zlKSir JR4BnzwP7iUDO6llRbtlR+NQSXstgngEhOAlFRAUYaYIo6DSYzKKo0CDEuABH3FmA3BmZ04AlZDm AZAACXiABhEeHGCjO1hlItAsgyGzO7iFXdiFvZWNXzgCN3NgJDA1mKAUQaBgSrBgT9QDcrrSSriE XPGeQOhQGFiBtPODF44lDrYKfnYTgu5E7q5SgiYEQjjoZaiGGcY2hz5vuujTiZ5oijbbQ+2BEMho EJggYz2CWsAFjf8TmI9OhCPgoA56Yogx1dswQKC+YlVNjlB4BZq2oZtucJwmsY3Z6XQ8Bmxch2M4 BuvwKYtz4yHTESpLaghYamaVzmUdsvqoj6uJahJsAlXAydX1VgmJECI45K5GM7BWM7EGybqxoqjr 3RkxMrceXriGpB0xVygBZU3yASDI6/3Ya4NU2CcoKx6ogC4q2AhdBDOgZcRObEe75VzeWDTkkzU8 ARU4gdvaCIvo7mPqxI5YAUD6EdHukQ5QEF6z0QKwqyG4g4ARv1oQo4LcogogAUOohdveW1/gBSmA qj40Cak5CSIgiTbwrtg75nZGWixl7r6Mikd4hD1YARMQgRUAhEj/4GdrKHVpWIZHEITuXnXuLuiC Du9IuIprQ29ajwsczkX27gvDEAYm8OEdCIH43ugngAJmjIIhWFR6u4VbqAWBsQIoSGmTqg1tyEZ5 3CHgGIdUKA5YOI4F52IH//YR4xgTuw0emsd1yHDMNc4SB5Kg0VbQXVYZEV0fl5EFaEkSuZo5XgXl lJyGHOQYjxCwuRDy9BCL/GqxXk8P8ABCMske5915111KUqzh1Vz+xE+tMrOngoARAOWGBIIh+Pgt WRzIEmyFVVic84HPLE/3iNBESIjDRuwu9/JcFgS9W8oxeAFMU4Fg3rRBcb1Q02w9MAMLIL0DUADK 8cOTaNmXlQJF/+DzPk8EMVoEQ2ABwGsBNmh68TMEJOiBGugABhgAGuCUKOgBn13ZSH+96jnu5Da2 LIWKvnsEL0QEN1CCuRuEF0atRyAE7j5mVkfZVnf1gm6Ed1oLNUmLWq/1x7wfcEMFiz7BXwf2ZZzb j68CKqAFZa+FW4BG8SsG2hDwdSBw4PCNwg1Hbe/2xAX3Bsc/MDaOcW/HAgzq3WixzA3CeqeBLGFO +RBx3YeSumYqP/74O6gQ8+j3E/z3CBkCGpddGyckHiEkp0skRHqbhwcs4LVdJFSar9PkHsH4++gB jmc+1iVpAvaBSSSCkg/+suIABlCz+2B5FhgDLd/ymF+tL6f5Qf7gu0gYUTKnbJ6nyikFCDRnzphB g0YPmhYTFDTAIGJEjRwSJ+aosWAAAR53FimqpUhREkNujPxx8yIFCxZs/iRBQqTExBoRHtBY4mSJ lBE+dvLgQSQHmTNpKOkxkwYNUT56KDHVU6hSpkyYHkWalm1btmzTIEV6JKgNGRYoTqDwYqagwbQG 9bBla1AQ3LhxBy3b9u0u3rzf5vHt6/cv4MCCBxMubLjwt2vXwDFu7PgxZGiojo1i4kPHjgshQlz4 8eRJlClUZtWqdauWL2LEkiUrZgxZOXXqyq0rhwzZunXs2K1rN8wVquDCUcF6Zdx4rFexljNv7vw5 dFnLj1MfHv5clDDZvW+rWydbNjpXp3I8GICAAfoINHbSiAGBwAMC8ufTr29//gIOI3TooFHjfw08 cKBRFD78R8N6PgzRxBR44NEEhE4QQYQJFVpYIQcZZtgBhx1yuMACHnbAQQcFFBCiCSWaeB+L85kI IgQxcgDBiCRyEMECMUKQoQMMdABBfjRoGMEIGtIAxBBMMBHFEBkSAYQDDvRwB5V3LPEfjiHWmMMp +ODSwxhjIMIImY2QeeYggzAyCCB+uOnmHm/6keYjl2CCCVhjpHBCCCdwcQYaZ5kBhlBHGWTUQWi8 EAIFE1QwgY8eTITDfzlAMMAAHfhQhBFueGoEG2SESoYRL/68sMIORPAgkQn/cUBDjP75sMQTPCAY AQMD4lCGUER9kUYYbS3FlCBPRZWJIICYSWYkgLABCCNwtPHGGCzsqUJZZ6Vl6EFtCSKst3rARcgj 1HzjjV53eRPYPey6C1i78L77V7z0zutXvfjOA45ijXUDGTjo3uXYv5IdM0UVPnCAGQkhZHCBFaKp ogppqCXjSzLGGFPMbch8pw4yyajzjzvurOOOOqugEop1qCiHnHLTQRezczQ3ZzNzL1PnCsvCiRLM yLuVQwxuvakT3nhAHtCjejTw4EN77un4AAIPWH011VhfDeMCD0BA5Af9IVjDEDyMYMKEBtaQoA9M THGHg/4QQjgEhWi7cGGFRYo4It9a8s1hAR1USAQHIK5IgAH1LYB4fSYeAKOMNJpAYgdcQyBkjz8e MKCAPNZIwxBJMvFEkx0QMUSUQ1Q5hYE0gAjijxzkUAc+tvDAwhhtnLk7mWmmCUibcsopyCCP3InJ IGSM4cUJfHKBlhdnmKVWoIAiZMYYZniBQggVONCBB/95sLClBAwAQUU99TShqiaUEGAPJqw6UZEx xicfAl/3MAIC+f3XE6+GoocvCERYTCFKIS5xLDiAwQxteCAE2wCHCUYQLGBoAQqyhRbqgetbwpIL IaSxl3Td5TAmPCEKU3iYbiwGYI7Ry2MMNrFbKIMJmP5RAQ5JAIU4zAIXcaBFLlbDmmTAJjaxqQ3R 1vGOd5hMHcMQRcteAYvi2Axn0LkiFmeWnOO0LBRA2007kKGMorUDaTkw0YkioB4dnA5B75mP1q7W IgQ4oHD9y1CRMjQ4tBGBQxw4UBCW0La3OehBEJoQ3jCkoQ7FqEMZwlGHLKShFC0AAf1Do336hz/6 nChHOvrajixUOU8iSD8ReGQPyiakCNQxQ6AL3ZJKx4MhjCCVVYrC2gr3Og1xqXYvGQMZeLc73/1O eMNLk52mojw9nUAEKCAgGqJnBmgaZCAbxN5ZvuCFFZjAA970Zg2KkIMOEEACBUgfRSYiP4n8cZ0S 4f9BRCQCAQQQQEc6KIHsJFIDIhRBEIAiCgr0lKiDMIUQ5HoEQgUhrQpOsKEOjWBYMqhBDoZLXGyR C1xESMK9qLCjHv3oYPrlQsgMzDGSGYctsjMOZQRhB0J46Ut3OItc3CIXGeuYdrwzNJGx4x09Zcc4 eGad4lAROVk8KlKxuLMurqJo60AGMWKjjmOkYjxoXAADTskBtGUoRl2LYxwVByJdPlKNgqvQ3YiA hBR1wGnrUdLbGhS3Q9btQpTzEJBo5KGxitKPDACRJS+JyflYcnGWxF//LPfJs6aIAQ6IUQQ6QCSt OsAnApKshgYUuiRFgQkcqKxnRwCE0EyBCWurXAH+HJBH2XVJFT7oAe6gJcze+S54xnQTnY6Xpz2J IAPRC9RZvICGNBjqLIAKVPYI4gUYvO+b3iRCDTyAAAksIHzzowgPYMLOiLjTQBOZJwHiuSkT6LMG PSgBG07gBXFhIAMnGAMaytAGQRACoxR0qEPhMsG4UBCCZVhmClLgBbOg5YNxuShGQygwEoK0wQ5G 4Teq0cLHTHikjDEYLmxxjGOoggYRcClMhRCHW6gmF64pB4pp452Q4canS1RHMIAz1KIaNak2vrHM XiHj4YhCGd1Z8TFuc4uqjrNDCzglh9g6oqmB1WtxBJLg/Igrrd7trEhYK9964oPSTkEVVCokXev+ iqG9/WhvO7qrIz1ZyQWgsc39K2xgEQu5GMVgRpJzwYccALkR5YoDDDBBlTswgs45DZZRiMITRlDL IUSgAQNqW+tQu4BWshYfUXhaCcbAhtnStra3fdMgCnG85FWLBUZQQht8J8E2DBS4hUKD8qz5ghLw wJsTUVUN5kkjCJDAAx2ISQ8kpU/y1qBVOdjJRDow3YjUwAdKGEF7vlYCEIQAAy0Yw38faN+H4ne/ CsUouOHywDKQuwzY80KACdwtjIqL3SHcaAkfLO95/4VfLqwwOEoaQ1SMYxRT+AETlgAEHYwgxFYA omt8cYsifgequNnNEt8xjlT0rGcuo07Maoz/YxtbcWY7RoUrhEEb2SBDGLAhxhRwcAociCg/e3vR /ezjNQjc7wGwA3SFOFTHycHgboAuwuR4IL8hAAEId3hblRwkV7qJ2QR5FNIi/UiDto7gexy63Gk9 +aIPsfmqiX0z/l6no7baeat4rpyeDZcfB1TI6o6cXIZmOYRDH5rgPWDCCCrQtKetDQImqhGHenmE p5ng2rLlHTF/Z1tjIvNOkoAWL34xjWn8QvKTv/wvGHEQQQkFudZkAa2bzQSi96AHsBp7q2ydA3cO e9gR+cl/IGAAAEBgbRFQAgka8IESFCEJbgCemhqRJoVKsNvGhwO4kR9u/jbUv2FqQfNSUJB2/sMF wQlexoL5ghd6c3/eIqXwNbbRmLxEBhXoUEUVlFQFKkwBCCC2ghRqUYzUcIwYPx6aMsrRjp76VB2s gGIUYZzGbRxSSUdS6YxwsMIxqMNurEMyEI1s3MKqWJUjoZmIfBIGYqDV7MjZJdmIANrd+BwIVkjp 7UAP7MAO3MHEHN3qOAjTuQAMys8IqBENKporIcithIiOAMjp+Z2WtNmLHMDjrFklHUB6fNKQZAgM ch3svEh+mICeYQgrrdYsLUkUSEEU6Mfd8UcqER3UwAqIqJbeqBw+WMEIOAEPkEAK6A5CDVPisclt JYuaRMIyVN40YAMeagMe7mEeaoMxLMK3/wQKF2yABhQiF3CBWbAACOxH0RVd6c3EBuZAT9hascXT rc2P0IEODj6AARiAY43ADoxEHNQCL/DCIjSCmfzO8R3f8i2fQbWifi0UGVxQBqDA9FVfu9UXRpXL gqVL9/1iR32DhV2DNRRjNfxLvpUfSs0CFYzGLDCjFVgBFCRCLviCNRbRbZSDMSiD/eVGbviGKFic cGAcAZZjOb4CyAWDVLWDOhBRw1EBDXDJOP3g3wWOI41IzMlHfGwgzVnNAvTVPVKOC8BAheSBC5RA DxQdiB3BLHjZFCDdl+EBkxCBCBIcf1zkDAJeh0QABgJIrtGIParIYfVPBGAkfygaKFYd3/8omeBU mZ7pWZuNVeVAQE/QoA5oSBXSHS2dDRAomg4kJA/wx60QiQ1yABlawQcQgQ+MwAm8gJo8wu5EQiQk HvAYE7REQuXxITZoA1d2pVdy5S5IQRtczyBugFmeZSGiAA7B1AmWwEwgwPlUxE+803VVBNlAF4KQ wAj8wBQqGgkUwSLUQi4cghvogi6gIvAAgvF9m/LJBfI1JiwmmC5GprSYAQtAXwqUAVygAS7q12YS j0Yx2GB8wzZMHjMww+Rlw7oA47yRH/hZAydkwiVwAm0aYzVI2DU8g/kRgzJk2C38pjIw4yz4QjEU ZzGk2FOpBm3wRm4cwyqIo3DQWMeZI3X/epwCdgc7hoz+sWNsIIMqqNw4vYqtVM4o7U3hNJn92NxW UU7QzRIS9MAsDSQMHmTpRSMUyIEQHMEKRkETVAmVlBbd+JxP8gcK7sBq3VUG1h6ANBITwkd8nAdm FKiEouAIeCBLnlUH6BlqxWSIgMjkxAilccDpWOEdRIFfoiSK+iRK6oBeZggZ/kAF8IATcIAFtEAb NAJUkkm5LIPwEVObxAm0QAIw/AI23GEfcmU2fCWS6qEhSMEfCAIajEFZnuUGZEAhXmkhYoEGYMAi khMAHMBzSYQHOF0HxICZxsCRGAGQMMAHqIAR9MARJMIiGMIhKMIvAMNgtgHwNJRC7Zfy//lBuAEq uAmqQb3iIEimHxSqXAgqRvlBG5ibnqQAGvgBZ0Kp9cnFIFBDL87DXbRLvHFqN0wDJkQCKqIiIzSC VC7DNHDDPORLX7gqX8Bqq97Lq9JqrPoFXnhDY1QDbMpmJfwqsFaCAjnCbqrGLpDYahDDLmAMd3CH OqwUbOwGO5hMMITjcLDMFFHHFtWMFj1Hx31rt96MjrXCOCxnO7CG/rEDO4IMMlDVyq3HE4xC6VAO icBOhlTS1aSnms0IvT7NklAJEkwBLgAdrfEAiL2BHBwCFPTAD3hZZzHBHawCFcDNFESBSzid04Fi ge7PhtBr5OjIAvhH7IXIvVaSgx4AAv9o7MZKaJR8YIf4Wo2QSI+8DuCciONEiZ25nJMcwb9SQRQQ HAlEaA9cJNEG5Q6QAAmkyOzgQ6KZABo6AAa8QFRSg1ZMpY8G6ZBq5VYqKTdwQ8l8LTdggyIYgiEo wiAgBBdogFlmAVpiqQZoqVmSQLAVAAAQgDfZSgwITgSgKUdW0gi4gQkegRSMBGr8Ai8gwiEkpmJG JuMybqG+4rgoKn09rqJKrlyUwfJAqVwgBPXEVxtEAgl5g+iK7jYwwyOEGuUSQo8OQqmqql2w5i8O DDF6QidkQrBCRSUQ67mqxgMS0W0Ygy8w3Gwgw8IxYG68wzpMHHQGhwDCTHLcTHVm0XT/OkcriAMD ssPRHANPtQP3toNtlIMZJQgQ1CsTqgibLY7W6KOOWJIr9cQSNMHoFQESJEItAJ0J9EARKIEcyAEq usEPKEhpKQkTTIyX4UHFDoHPGeiE3mTHohlH6hXWxV4BAMnr0NP5luSESqhKkpkTdtJf/Z35vkiU PBYEtNIpEcERHFpcBSWBFuhF7sALH+0KlADadIktvESSOAAFtIBsPUI1TAMzUEMkrImaMIKQaozW emXXeu3XukM8xEPJYAMvjC0SJEEkQGnabkAWaEEWdLEXqy0hqi0G+EQN0C0A5I+iRcAHkACOfCKc JkEjKMKy+gIvGMEhNELiQmbjhttk/+4x5UZu6gZy6o4LXGgLlMaXQZSboJyFINiFN2QDNVADj6Li IxTCAV2yIBOCJVhCqVZFNnCDPMAu9+EFYxCjNUgDbXICL5gfEaEYi5WDO0oVyBDDLRiDtCLvOLBC KEBntkqRAD5v9AYzMJNrd6irw0nrus6GdwTVytUI3J3v+b5I4JhAgurIA+9IBGBI28xdCSBBFCQC hZSAG9xxqbpBD+xE0TGB3EzMKsBNEwyBS5ygyhZoHl3gj6jRrkUwrBBAGpksPx+ZomUwCpJABVBO SNZsTH4wEHbSCENWn52wFb4NFbifQEtohI4ACajACkCEDTsBrTWBCVRACGwaI0QCJP+rqtUyAi8A g8YYg1Zy5RI3cck8MU3HgzYAw0cYQgmUgNnqARio7RZ7cVCzLZVmgE/4AAQAwBlDwBo7gAggpPxK QSIogi6sNDBcNTDwQpvw8R5L5uTWVx+3YuVmMln/8aGUQSKbgbmdxfIMWJjAwTIsQ1cMgkFdsl3b NSEUVOqmCSpKJWpuQzyIMmL4ImCMEAwxxjboJjokQ4qhGGOjmGzERjLcAmOrw/7txhMt7zhKpzAL M3XIgvVi73Ycw3aqK3d+jDqIxzgFjh4VTidBs5YsjoPqo9fQ4CQ5XdsUnQkMwRO4RBGMc6k2AiDM sPrwwJIoyQo6SBSwj9lksA1ODiP/6ZVZ/Yg+v0cQ0tM/z3MGs5Lb7U3XvchfffdVvc6Rvc4p7cjp HNp/VrSEBgFmKNpO708NdMksNMFLSIgDWAALPCU1bIMkLwMkRF5Lu/SRagMTN3FN17Q29AIkQIIi 9MBWKUEkFIUKaMBQd7EWcDEYnyUPFAH/GMABKABGr0ARsEDZKkIpluJVR96Ku8F8JRh9dXWMx7gg g9BkljWOU267pYW5rfUia4+AlQHy5TUlEPkB8cFdJzkmB3JwS2UvTMNqCvZfkDJjfCquwttdSEYY FVFj61Q7CkNU5QbIYK8uX2twhMIva2vOdDaOOS8riMNlYy93SKvQyHJ3MPMZsfZW/3nIePtNvm5g DASBgkTBERyBF+pAbvfkESDBQSoBOZeqCpxNTyC6AEPsl9GV2Wi3gY4Zmd3I1aFZARBAYpnsiWi6 Bv8VB9vjeCt0qIc6Vr1OVnlSV3FA6Kg3FTwBe0+oSo7ATv9Rl8QBHgwBfDpBSJ9AGyBUXXRD5f1C S/MhTMf0TDtxgtO0NtwpL0ACG1TAT/bAIRBCGeAQFmSBlgr1hpvlFSQA0o7AGvcA2SqBIRhBVac4 Vme14eJ0qZgBID/uV8cFWX91IPt7jlOukut19W1mfP149pTBgKVEj3cLuCgFWwy8kpM16/Z1JDCD NgS2lGsfKVv5lTNYlqOC96bYx//QRjkoHGN7I/ZmdsswLzlukcZNL5tnUSugA2+oKyx7TANib2x0 b4odg2qj0YaoOgjD5AT3I9JvWZft5xDshGhUrNuU6B3QAi3EgRxAgRs82wicjpaJzmaFDk9MunNn Vpl5SNQxaM2OetdVQK73wF9plQXu1QiHN5sVFt0vjZ7JCL/C86HdOgzneoFWAN3nynzjQxwMAR4Q QQ8k/giAgBEwwiMsAx4ye7NvbVZ0rUxPe4JXey9ktRuoQAgMmgkIgeahABd0ARcLNVFT6Qb0nhEs gqeceNa/AVXL+7xnNTDoghHgzhgAfMD/PvCn7sAbVAeltfZ4QVubBaTO1ys+qqD+oLXDD8uwSPxd U3wnr+rGi2ZhbxSnfoOWu7KKRTYt+0L4N+dzVpzF9fJxAPNRDeDMP0f1xjm7MiD38sZsWHb3sisy EBngkKyJAISJDgUILjBYAAIEBAQeNHQIIUIEGjQ4VKQx5Y4JHjx8MJkyhQpIOVZ69DhCxEQJHk9w DRnCxKUPjht51PARJMiOHUB+WAFCcyKHDkOJcqDYgUPCoQ4WECxgEGoFI0KE6LRKVcgIBhAqjhjx oUJFsQ4ccPD6wQEDqAsYMD0AlekChVy5EkES5eMPq3v56hzRgIHatA48nMJ3pwceIj1cjiDB4hAv YMYoU8Z2WVtmd5s3x/P8GTT+aGy/SPMytELFCRImdPR4I4hLlixaZMumvQF37g2LFinh/ceQIkVu YLgRzgs5MOXLJesaw4IFGDKCCFW3fh17du3btVPy/h18+O/a9QhCU8aMmTFevKBAwd7LmDbUq1vC LkhQGzJjxqQ3U0aPACkRcEA++NBDvAS1G2SQRhyMZBpu5pmQwgotvBDDDL8Bh0Nwvslwnm9EDFHE EUWEBpV2ylFHnRXXWQeZW25J5sUaxwlGlFBQQSUUHXdEBZYgXxmSyFiMNPKVI5VckskmnXwSySNb GacddthpRx1kjlHnSnZeZFGddtYJs8VyyjkmlVNyqIGGBTjQgQex1pLLIAj/FmgoITwTiiioioC4 wwUTNPIojjie6EGORg4xoqQhUOKBCl+i8AgmHmhgkwYemPgBCCaYqGIUVXDBRZUpJvWBIqGGmiiK OFXlqqIO1iLIASHeeGMqrGx9QwimuOJBhxE4KGsEB0YwIS6xGHgLrrSYZavOBSJIigMijogiiiH6 2qsHq0r4AC3B2ioMHypKiAKPEohowgQSkuDFl8qMmeYybDLTxh143Iln38/koQfggOORxx1spvmF mV8MaWEF1FR7UwlBsMBiNtkovi23CzbQ4JDhOkakY0UMecG4RZJbDhjkdAFGkTFaYCGFF6a7bpAF bc6u5uwqoYQQ73qmZGfx/oKujmdCciYkQDTQ6M8M9lJIAYUWUpAPDgYtYcSSrLOu7mhCBIEDDj/A gHpqM9BIA40A1S4vwaDHMxq7BhlpBMJ4KLwHQ7wv1NtCvif80JsNR5zQbxK9IbHEefBGER91xhxT nWRwIYbFKl8UJkcfe/yRyM6LTPLIIZsEfUnSozQ99NGZHGYcdt4ZU0syq7SyxSurzBIZx9URJk0c ZOqAh5eATcogphyIQAc4dQjCiuab78kK6HsoYQcpjiiiCJPwikOOI3aQ45BGilgh+5OGSIYdVe64 Y1JLkTLhiCqC6PQJUFcJJhhbVHliCEtTFYoIQ0BGFI5iFCYAAQgl6YEP/nTAgQWU4FZvmAMUhAAF N8hBDm8IAVMqgioeyMpNDtgIB94ikKQYgAAHQEBbGJAAFb5FLXSKQAcgwoMj3LAk2+pWDqdXAmEJ 5ngdwAE+ElEBIDRhMXepRbwqQ5p62QtfoflMwKhIj3hoYxpZnEYv3FCChjXsBCAwVg/cgIKN1aY2 GtANBjYWGTcY5xAhWwTJFHEylClnEYo4hBla8LLojIE6CeKZgoo2SJ9hR5CJ9JkeiFY0pOlBaehp mtOexgL5NKgRWtPkJi3xturgpw1teEELQnCC95gtbWv7DoIEuR0GOchBzLAbiGhZy8QlTkMmKtGH JsS4dYgpS7fwRTlq/vSicaxicz/yESpeAQvPfe5JpEMdlKgZzVi0YhjqcAftiHGMcljJS1cKE5aq hCUzgUkdrjhFKJaAwCHUjwmomsi0OPBOKlChCk94AhSaBwV/Nk9XARVCP/3Jz+aBD4NysB4SEuE6 yT0hWzQYCgd4MAsg8OUnCAyCTPw3Ef8FTx1UmAjwZuGDipAlhhHoARTeIAclKCEJBf0np945hVJR IVs0kQkHVjisEURgAAQgwAqXpcKhQstOCJiWXEywmG5tyyo9oMoKPmCWDqglMDM0zBMQYJARHKEW xJAXZUjzC8z0KzRVpMc92HqPKxrMYMAgDvZWAIMVnCAEFeDBCIxg/4QMbEA2Z8yCGnPDRg3AgReH eMMi4phHRRjBOJK543Li6AYzpMCP0THDzxTZWc+CZ2ducyQrD5m086QHPvB5wRvaMAhOvva1hejZ dfADhza84QUs6GMKvIDKVK6NQOJZUM0YNIhIZIOXtVTucjF0y11SCEXkLAcxJue4GpUDR5pb5jNF 17lYeK50TJpmNclrpCm96ErTTcY3rSSmFbUXSy0a54rUMQ51hqIJngLCEKYQTx1MZCI6sOk9carP IfzggDyhwhPmt9cg/Dd5OgBCFSgs04LO4Q0FlYMudEELmVZFJ1Q4AlV2gJUdSBgIOOEoTViciHzc Qp53mEIM7LSAA/4YoKsOMAIGaXHBhMohDp76SKhwYQtb4GIWqlByf3WgkK5ygBY/QCECqFzlhXQ1 AglZgFIj4CYOmECqAhWoEd5AVVURLzAdMMwQCLAAHURqrE00q2akGA8qtvUea72iFqfBiyQU4aXj a1hqPqCDCJAAEC1gY240kAXdbOAKV9jAG3jx2DgeAhHCeWMdUVZW0ojsDZftI3QsWQbOfhbVoK3E qkVbSPA8MpL+WQ98wMDaBsE2trE9JG1te9vn9LEFp/St0tSmIJxxzWiNYMY2mNvsZu8S2tBNkZmI sd7HvYgYmetRMnfE3Wd+F0mgE/d4yys68rqiFVx6xzuyRAxk1P/IcmBqx7yxlLt5s6gcWrpvE0A1 BVA1YQn/BfCDgfAEKsQhEbOYBU4VrvBSIRBYGw3CEijukSpM4Qk+6Yk/M0hmOdCCFgmFQgaxEgcp WMUrOpHwTX6wvBWzeAjQ6Ec7nkADJszC0EKxcVcXYIQ4AoMW4XMQHN5w4hQ/gQlRoEKpVHFPU/2k ywjAMQ+SwVUCFMDKVJYWDZIH4K4LhQdQIDOusNJXs5OZBSIYQVFklWbDACECUahFnOU15yhO8c54 bqs2nthnJQD6pUoogRfvukEHgAC3kmb0YNfIRkpDwg2YxnQjHuuGk/WCNMzQPDMg3x8vjBo6YJDP qVPdNlafftX+njWtJGU96zFULZO4lj0nKaHJXX/ya6F8AwtUEIILXOAEvPVPsYUbt6MJApPTcPby aQnt5/YSFY2L0btfZCZbaHuZP3LmkLb/OXNLs7zkNTc1WyGOKq27HckgRjlm5yUwidO9uaNvi5CB DPuuM7+jWMUoRlGFJTx4eXBieX7gCUBCFRSuCqjA4UrFU+bHU5bAUyjM30ahvzpiU/YJCmhBCnxh HcqBFnyhFo6gJLyCB1TBVTggIiSCCf5PB/TJCp7gho7AJVyiFt7BH16MB27hCbyiAhygARQACIXA QTgMluJIDqBgAhgA7jZqBHQAVVziJ3ggImqszYAgGazgAaj+jAAiIgsXwOYezCjo6U0sJQrE7lb6 ysKOQAluiAR6sCiIxwFqoA7wIRdyge4sAxuMwV7QyjPUqh7sARDZ6q3q5RcWAXtgKvBKgAS8qPcs YAeKgMwWjdEI69GEIGXeCBEQYW4gQREgYTkQZvM2DxjewPNADzrGgLV+BvXCo9WABvVeUbRSz20e CZJOyz/Sgz/IAA5ib/Z60fa+I2tebbZwD2xuywhWwPcw4AR6S2nSZkDC49g+iWsYIRKYjfmukUKc D5fmAUX+4UWSIXfkax1YYdu2Tfu6z7u6C7xMB3XGrdzI67zegXaOIRnEBJy8hP3ozZzIRL7yzUzu LxVWQRX/VkEglYz/DlLJElIhE5IJQiUh+4sJEnJUSOUWSEUV+E/IquBTpsAWtoQdlAEZ/qEdhAHj PKXphgCBfEAlfSC/bMIHqqBQuCcOQI4WOEwXQvEmibAIMQiWdEHo4GAO5kAOhGACRoAkduAIkofg olAK5cJOCAACooAdTCELqYwjIOABIKAKfAACAmNOkGcIpMAKxM6f4gAKYjAG9ekHRuAAykIsuswB OmAO1eEO9RCK1mFfqAgQAVEf+tIv9cEe3IHv6kWuAC0JDjPwimAECC8EQKAExucNTuDRJjPSNkAI eAESDsENNLERICESPrMXegEYQjEUlwEQmCYFSA06XgAV/+HAFWERNmHT9FJvlUzLFm+xDMCGF30x E3rTF8EjGGtPa4Txk3qtDZ4jNVqgt1Cp2AgkbmjLaBhkGboBG69RGweHG1HBG7HtFsLxRZDJHLvN 274rSbgr/MjNmpxEFtJt3a4EGdbPStArvrxkTMzJ3uKr/sykHADSyIzsFmxBGQJUQAeUQANUGGxh FGREGfSnIfUHF25BGWTkGIThFohBGXCB/y6yCpzACUZBGN7zFmgnRmQEQisSyZLsIj1iCjKUCqDg B3oCAwvl44gQg24lgyLoDIWgUKiCBYSAzCjIn1oKCopgCCZioziKeGqsAIjAGPKhHXSgyiwFAR7g JYdlLf+0LgJKrOygYBYSgSrQcKCeIKNOalhOKi4NYx3iDDMy40XowS/7AU77gR/mlE7jtB/0ITOy ge/8zDAPMwkCrQgGTxFDIAREQAhcQwUUbzJxozJboDMbgQ2E7jOBIRKWgTQv9RBQUzVZgDVvRRBe MzYrQRNEVRNKtVRp8ztWcZFqMdZwE/Y2qTdjNRN8UWtmlVZ/sZN2rbaMEzlPIPi8AEBU6fZwz2uo g0EI4RGm4XCq89muU9q2s0WUgXIchx3KAZl+BEjG83TAK9zEi1vD70nKL5zYIUus7R4rh97wjb7m zx9XZD/VKRXwRxjm9RiOof7uFV/v1V615BiI4SL5TyP/IVAjP4UCDxIkAJZgP2IKcOEYLnScxgEZ KHRGigzJDFLJIHBFKVAjB5biJiwODq4c3gEEoeDEDC0iKiAiGmAEVEEHDmAEFKABKqAJzSLlSuKA cALi4iTLamwBEoEebnAUslArdeABImAKdGABUMogYogBrCBXqCIOfEHszq4q4CQCRgAIfsosBMWB 1AwfsqEy1lRPX2Qz6EFO7/Qv9cEfAHMvAbEevCEbsgEbHksJpMAN/PRPlQAGApUEQMBvG5MEigA6 FO+vJpMCJA0MIgEYIC8QPhM0e8FSmWEZIlfzDIYZGoFpvCA1Se0F+moO2sA1T+8SSNVUR7V0R5US RvcV/0e3tMoj1iSpP3Iza3rzEmLVEmK1dmV1Vm0VVl+LdzXpd7WmEnJ1PHLma/KjDfxgDF6g95TR C8ggaVjJaOijWAXBD6yDQahDEqhhb/LGe7u3QkQkcKJtcaIPclTEFojB/erLFbJVSMizmdYxHcev W0NnvO53dEBnStrhHf6hWpGBmMh1HdoLXW0HgMGkA/MNTOxPHY5BnVxhGIRBGei1Xus1GfqVGOZ1 Xic4QE2UAj0FwVaQCZAOAj3FU5DOhDNSAZXhGIrsXi2UVIzsIj+C35rA35bAB5YAI0f44lL4GERy gNkBGdiBGJ7gJh4MwCCCwh7AACJiAA4gARggBeHEB//oB+58gAADLFi+ogfKgR7y4R2QYQdUNikj QJ98kCzSImaB0Ch15Qho4RamNleiYAcigIE4YAd6AAKMxYQWQC7xYR3W9F424160IRsKR7nuIW6n wRCSwA0MwQ2k4DADVRFJwJL7llAJtQh8VBIXFQMkDQUiITQBARAcd3JPWfMsNYuogZWlgRH8wws2 1exuZT6A5nRv+VRdsXRZ7W3KwzzOowyCOZjNgAxaa3Z1F5mTOXhv9Vbf5m2yt9dwhfeUEZDO42es o2jw45MYaXrxYxCWwRqZFUSuM7mii5h+SYhvYUtsxBXidzy9DZ6dBH/BVRayaVyni/poR3fubYH1 E53/1uucxsFCdyFNIHgYDvqgg0GDNTgYChR/+nNUFlKiFdIhC5bCDpICbcrhEFIZKIzCTHgJbvj/ GrCKKayKb+4f8sEf+uEf6nXeZkG/EEimh+AWfoAHdgAAvWIKGQAwaAAIaKAKIgAB/mufYvLHFoEm Q+7HEuppxwxH3yAOiuFGeQUrLCACOMXQhkAHyMKBDMJrBbOQM6Ne+GxZmQsQ3woYDEGtDUGSKbmS LzmTfW8FhOAFMKCTH82uMQAFlG0ZPrOv/RqVU3kaWLmV9wi1VPPsImg+SBeXR5XVTpWXVxU/fhmY /aMMQDeTlFmzN9s3a/V2P7tWd/d2O5v2ig97B+Fr/2zrDFHDknqLkRzJOugDtWUbECabEZYhG8Q5 l5LrlrJTRV6kGIxhHZKhI8Xkl8ShneFZuUtHHVOHmtBTScT1dcpBcm7BXYNYRcZp3vItHMvEn/MT GVQhCIwCB04BgisYvcdBvdcbvSt4oRu6QOM7Qo3MIlOU4iruI/5VYTH0oyNQyCDyUzSyU/KJCRRQ HVTaH/yBu9XXGJAsERIO5GYBBD8W6XAW4pJnBIKACZKHCoKAAd6EAVZqLGVqqUt8qYNyDuAAgy7t 0jZMF+QAw3A0V5Sgr3rAJyCCZyHAMOhBrC/jYDyNNKYhG+TB2exBkS9DZCDZenpoES+ZBOKaAlTA R/9D4K7XKNI0oBEm9zMxAbBP2VKlQfMImxqYARBgWbegw0dn+VbggBAY21Qf+80ju2h8mbKFWZh3 cbQ5W8/1HLRDW3dxTZG0I7V1zwh0y1fHAA24g2uoFz9qOz8AQfl0G3GeD3FCJDv/gUWQIQ6EIBfU YUFbB3KGIbnVMR3BzTzpl37BVUn0t3XWLaRMaghqYRZ24d3iS95axJvwLUtyPdORYQggoM0gIAdO ARVWgRWG4RjWW9mXvb2FAaGf/aDbu1+lnRgyOEJxIREILCFRVMlmYSIbDkUdUmEVlsCqABd8AX0Q vB2OwXXWTx18oQ5roRZArhZ2oSQ5hYFWMoEQSCP/fcCmqoAjgKA1VCHBhqCgnAfh/YnEVIAEdsDJ VQDipRwrlEBqhWAFSgDiG15XyEwJXjDLoAIhDKNgfhzIfwEYghwbiLzI4+Ey0pqt/6yHBs/JCTWM KMBQjSBR7XpRIU3S5uCUI4HLgd7Ll0Eaip4ZpKGVyfwWMatH07yvFDt0T7cSMsF0HVu0cA8/mhGY 0WM+MnvPvx7s8zyZYSvQF4SUQem2hKD3UsDUYLtYY7tYAcEPQimUBiHSxVkbs9FEsrNxkuEWrGAE hIAWysHIxLEdWmHUzZM84bdI4Ne5xeu5l8QVxIFa2e0WmKApOkAjkKAW1M8W6q/assRdwYS7AVi9 /ssBFyLgKQxi2FFBFF7/9fUvGFhn2ZUdvZ+9vevv9OcPgWvEu83kXo0hGYaf+JOhGIqBGHyhg4+s vjM0IRPQF9x93tzNS5IhF+Bd3uWdFiR8FvxtBdvpSFeypBHoI/hnhGHwnl4UF8oEGYohF2SdCqKH AEWqK6U4BVOwAvIfBEggEXBhBwBiRIUROiIwOMggQoQRO3TweBIEgUSJMU7h0wYsY0ZevBQZSqJk 0a9f07jNO4kypUqU97Jhw6ZIipQjPXqUuFmChE4RIkKcAEHhghAjKq5gMLohqdINV65smLMME6ZI VCNhWoYVKzNpXLdyXdbGjFgzKViYHWok7Zu1/m/awKGkKW6lTHIr2a1EKS8lQoT0CBKEJnCZwYPd NrKUKbHixYwbO34M+THiTJYqW66s15LezXs78/08KPRfOHDavFERgoWgz59XE1r9V1Cb2bTbAMo2 79vK3bxzf/sNPPjv3POgocLXrt06Kjt2yCmH7Nat5MrVtXqFPXv2WLFedfeunbt48NvFmz+Pfnys VuPYvWPXrtwdHxwK2O+An8MQHjSiTJmiii3IqEPgONAhc+Ax44xDTBUL2EcAATmcgoorroSCYSii 3CCKKKwEM4yC6CSHDjoLnngigdStyOI66qwDY4wywujeOzaygyOOMKqTIDHCKKOMLbjMgkuR/7io UgUutwhDDDHSJWNMMb7UckstVtIyiyq3KDPFE0z8AIQPPgShQ5lBBAEEE1V8OUUVPxzxRBVPHEGF Kj9Q0Y4//vTDZz/+5MOOMkwwEcWWP+gwQqIjKBSBA44uNAQxVlxhgQMMQIApBBHQUCYNEfgAxBBP PCBRhBBYhA1HiizykRJFvFqEEryQpM1wve3mzUu8yFRETTblpNNOIvwUFAtGrGDUUUthkFRTG7xB 1VRVWZUVM8wswxVX1FAD1lhmeNHCWWqxxRYceuQVV7p2UYJXXn39hQZggg1G2mGYRIZvvvrie1m/ mGmGGSWWbcYaa6GJVtobK7QwhmsOvxZbG/9l7EEbILMxEo9uKNl6a0rCfcyxcf/kyM4sO9DiIjLK HKMcjOhcp51344H33Xcym0czdzerl555w6DjHnzRMVGffUYbTUAB+fkwBTEE8njMMTyOg0zUxyhT BQRJIyAhhRZqiOGFoliYSoeirMLKhyCKg+I46KjDIosFtt3203CTTHKMBCZ4DDFA3mKLkEauWUXh hSs5ZBxxzELFE3P+8IQwVPzwgxVWUI75m1BsDgUVVHROxRGJJBLH6EQ+QUw+e/bp55/lPEHF6Lng ksgiti8ihxRQ0FSmDkUWZBCpEz2gqUI0eBrBEzogYAABBpyKDzCtwgqrEkm4Mes0JQHXsUr+Lv2y CBK91nRTsCTwNOwFE1CwQlpNOasUs0w5BUYj00Z7VbXYSkONtt2OBQazsAAt5CrXX9ilrna56zXx CowD6TWIyewLMpqYoAUZU5lK+AtgA9tgZQpmsIMJwmJGMAsZCvaX19CGYrUxDTY2xr3ugWyGwREZ ycoRh1wkoxzrQIYtnKail8VMZtjpjs2KmB7y9GyJ2WmFOF7UDnUkYxb+iYLWIBShASTtaAWAAA+i 4DSqUe0YyCjj1YhhiybQYAAL4NqEKnShDHXIQq5oBSssZLY8jgJta6NbiUxEt3FYLWqBtNvTyhFI M0atST9SBuCO1CbDUWEWlJwFLWhRi1n+lC4OsauF7jgnE8WNDpO10EUtaJGLXFCpFqlkZS52cYtJ qo51fsrHP2KpC14AIxezqMUvNKILOezuckOgAjKq4JAeNEQHx1MIAw5wAIlAEwEPSYABrgm9RbzK elIwxCIOoYhwKmJWv8BGNoJzknvsRp0oyRU2FkET8t1EBMFC3wkwsD4VGMENR6GAU5aygQwwZQMa AARVJHE/rVgrW9viBLfCMpYxCJCAcyggaQSRl7vgZRCf8Qsa2uAHwpQBDoJoxCUYwwlOSCOlnMhE SzNxiZcu5qSJqWBiaMoYnM7UMTqlTGI2SBl/BbVfQeVLITLqrtA0ohGMGETCzCIIjkL/TDYgnU0Z xjCYN7zACIo4CXC8obGUsNNjYP1YWYUDVuO0AxrQwFE7iIGMHRIoGbhwWjtwNI5UxMyI4SkiEnVW Hp6pJ2fmYQ+NypGIKvDABCbgwYMKYIABSECLW3ysfWiAOkEiY0FRQ0Yx4EqMUThhCQ8AgGnfGApU oCJDqyWbheBYx7JhqEM4EEUTOoS2YQxDHJulW2/b9tsSEchFhnzRIQu02TJWrW/KaOTfcuGLVPrC FxpRpZWsNF3otvKUp7wkLRLxuSr8x3OajJ0tepmLYiCDCuXQx+r49Kf1EsMXugSGlYzRjGYAgxZQ eALlhjAEWDKBBzwAAuWAAISaNEdR/oqCwAiQyQAEHAACOMDHL8TJkQxzRCMjIclZu8cSbEwDGEnw FU7Mx5MThIACLD4BC9wAgvcBNH5JgcMjIvGIG1slf1ph6Lak8T8AmiUtRijgWkoDB0JkFC96aM1f WigIxLB0ypzwBJWn7NLHWFmmF7RgZYaaQQ3aZYMCs0whBkaJM1uiEIQIDWgGAQg/vIEFDeOLIJBc msGMYc8CdANuNMaxW9EQZL4xDjQQ4YhnaEMdyvAFgowrDAHddWTicEVfa2azTN/Mr0lEYnhiIYth vAhH6rAFD/CDH6QRQLJJi1CEjkYDVRCDjMmtGpOIsThVLMEGNYjBA7p2ChxkaNiw/qWjsVULR1Gk dth5TNtu2fbHt8GNOsWNWxQJBMhAnmiQPpp1Z5VbjnCXQxvaeAl+jRElKbXSu1eaBXg95zgAeW6S 6PVFOXCBJ3qoTk/5aAeRjMHdUyaClbzQReOYAOBiHmNNQNABqBAM8ZrwoEw78FUPnhAFIPBgBzVA lYbrOxJ0m3sk0zjncALdm3BM4xeJkOeJzycCFaiYAusLwQvcUAIDKEABSJlxUt4wiEbkuCpSwYqP t9W/IIvFC0MuspHfUJo2fGZdKYQYbeAQQZdeucpV3vKVs6yYlnI5pV0uu2LCbIm79CszZL7MUfcS GksczGISbQNgalMGMlx1DOCS/rkReuGbsIKYODActKER7YjE12IXA7Ib4O6WD3UM44icVuLOAItp nPl1r+z5Bz3gs45bMAECXIQQqwmwAFermgNUoLVykeG3ITWHCkvodQxuP6Fg42D3GRL2sWGLbNV+ zRWrRfawOZS2Dw3DbSNKjluvXdynlUjbnB2k9Qf5+teHO/voLob3o5vK8E83u9I5pXSnq+5ilMMY UqgFNrThonDfIknu3qTnFKc4KkThCQBmgjBwwQRLAARk4nBiIiYRVxMQ9yZUMAQG5gSoAgwhZwwv 8X7kRm7Y0GHTMGi3snK80Cs4ASw8oQIydwE0NwEY8AJvUAQJoAAHwII8909L/gEGg5BjOiYV+XN0 SLcMgGAGfOcFXgAGATQUTwd1ZCB1fMEulBAYEWN3jZAYKeUJURiFXTeFW7dlWkeFVfiEZEd2Zrcv /jJmG9QuG6Rmb5dmH9RmbQYHc4ZVtJF3WPWDKSBzLoYI3uBVKMcbg0ZDhuYIvAAJeWAHiPALCBJu cDMOtnAL6pAPgGIdrwALn4ZpQxSJgkVE5PEKriBqi/gn7YAMuDAFNNABWPRqEfIgqedqpwgBQABX VTNrTXILcQAEV7ADVgARMRABmJJ7ciQKu8d7w4YhFbJav6havjiMc+QhduQKY+MKaMMKu8V8wvU2 0ZZt1Ec3hEQ1vZV9ZZQM/8mgjVbDjdpXRuK2fcr1WfMlfr7gfVJSDMaADIxjb9uHNVRwJFTwH5EE b47zJWBCBclQBWHiAxPHAcdzPGXiAw6BYP3nOFEgBVEABU1gEevwEhYokRO5cr/ADNywgbyRDSMh BS8nLCrQAidgASaIgm/gBhqgARlwBROwczAIPygQdEO3Y1mRgz8WCYwACG/ABi/AAmUxLkYGB2Pw BnamF2hgBrFBCFIGhVLIlE3plE8JlSyVCVvmdYkxhYphUzVldpaRGBrkQQHjL2rWL3whVW0mGyak d3tHFuASAj7RAi9gCL/gDdywLdkAVr2hh3uICslgB0qgBCYAiI4ADMZgXP+GaAvj8A/+8A//gA6s 4IhDVB5ENFiXl3nZUUfj0A6L+A+RR0bCoAo0YFkFoHoFsAALwAMR8GqiuUUQsIrLdQy3sAM/sAMX gAE7AAVVEAS3GAO5qCG0xYu/+ZvEOIzEGDYW0gpOJA6tYGx0hFvNCG3SSDfiwDYoIo3RZ52HJI7i qH3lUFzaqY3b2CSOJB1FMguD0iaDkib/gY+DQjmwAyYRp4qzAHEJhmAFJiqOcwSiEgVRkJ+UYwWJ MH6scBza0GEFaqAdFoHlNEOBJ3gnEQ8d2AMmYD47MYIhMJIsdgHGgghe8AVfEAYd6gUogE8s+D6h IZNFZ3TZoi3UUA0/hnT/08AMkQAIP0kuchCUQ/kaSqaEY5BklrCUUAmkUyiFWeh1UzakW5iFL8Vl XtgYX+lBZdZBYWkJjSBCbTAGDDMGPbhnZJEC94QBGHACK6AINxkJ+7MM1LAN3cAxc/lh8hBDJycc xrELjGUCLgCIdvAHjlBO0OdDx9BvyDEOrUB5luhplbgze0Uz7JGZ+YAPtgR7yNAOyaAKOrBFSKM0 UXAHOjAEy1OpRlNMZYQiyJALViAEO0ACVkAFo8BwPoADp3AKs9UhoQCcwHkDtVqrvoirwkhHTqSc y9mrFlJbHqJ80hlIf5Qc+ICsyYoPi8msI4M38JEcOxJ9hXid3bl9iwQk/4JjCqOwBGeiA2iiJl4y KABmOXQCBVZwBOkKO8TwBFAgBfg3OqUzOqNESqxkJaMzK+g2DMeRKhqmEf+aoBlhkRiZlytBoMBw BAw2AsIiAiBgAevDYizwAorAoWFwBmmQBnqgsWjwAiGwkgoACDRogzymotRgDSdbDSnLotWwDSlb DcxwCERoo1t1UUh4VYTgUkGqszvrlET6o0w5dkwKGZYxF2C2dk7aLxxFVVf6AnvGdHyHAiJKAV+K ASoACUBmplmxDNOApt6QDYsgBYswK+Z0l/MgDyoBp8ZhCy7Atm2Lp4iACJDAnTzUDscgIMzKDpW2 VzMjWEsEWN7RCj/TDv/vsIjJcQzCgAzrsH6z4AOlt0U0wAMcECpXdB+kOQI9cAvjoA4nUka0QKq0 mKrnyQSt+qoaIlvCNqu8aKurewO5+ou+epzLaZx1REd31GxpszbTWSLtoKzIuoi/a0uLiQ8k46w5 8h7PSjLK0TLSajfcySPipkg/cgtZogqe8x+GUwVR4DmjRDr1SiWjowsZoQvja11YUklYgkm3AF3o iI76yq8ft2EA+68jYXJ5GUPc8EuLUAIK+wEgwBMgUAEVMAHrYyyLYAZfcLFpwAd8wBmC0AIKYASD wAgji4PagrIum7LWwLLbwMHbIA0xa2RyAAhmQRp88RZRNZU8q8IrHKT/KcyUWUkXNQXDWxlmmTAX SOukg0BVZWCl4eK0KcB3JyC1X0oBVkuTWGt0WrEMh9ArQ5CuSBC2wKAN8ZAx8mDFwOGm36C2dcq2 eXCngeAIhgAMTxNFQYKYbqW3j7h5fMUdsuDGbwzHcSwLTgQ0ObKI6sAkAyIfREAEochFlYUAC8AB XHOK9rEAJvADszAgnFVGxLA59FgF1VsFVFAFreq6soohwYkDN7B7rMvJrit8dRS7dIRstDvKxqZs vZlHfPScvIusm/m7zAq8s0zLwGsjx+t80Co31TqO4NlIt2AkQ2JJ13WviYAl1+UL+aXM6JZu5igd wIwLgYOI6ru+ydAK/+8Lv/K7EQk6DWDlDWcVHOA8HPIwYopQBIryASPwAf0LAh8gwANMASygBIrQ BgiswAsMF5UQhZUABgqgAowwwTeGoiq1LReswRjMst3QwdvADG5gBBXFFjbak7PBF2XAF4zgwlLY CU+50U7Z0U350UwZ0hrds52gCZ4QFyitCZWQLi1dtDnFUzx1GXYBU0DldhlUGWz2ZH5ABmPQpS3Q gyzAMCmQASdwBUGBARcAA2WqxFq7DNayxOPTA0NQcT1QBEcQtr+wDVlsxWabVqhgC1xsp15sB4GI CGNMxocoDNMGH8NgadvBaXJ8M26sM25Mx3f1eW6FDMJwDOzAI8bAA/9GY1kdwAH5UR+oRwBc0zwS IAFJswAM8ANAZDXCkAyUrAqXHcmzMAqjkAqu+ou+KGzBSJyy+puoEJyfHQrLmQqkLHyrLbup8KvE Fwo20LqwKgqq0Ixuc6x/oie93Q/8AF+9nQ/uxW+aSNy/iyP/YG3wMW1PQ1zYqVzc1lxAQt1LcmvE sI3GYCDi5tzZWUbFkAzhOZ6CoyRbwgqhgA/NAL/xK78Fapf2yz3ygBG8kAQ5kSjrzM7u/M4hYJL0 fLFqwMAsfdKZAAdYoAFNYaIzuT/8Y7IHjdAuu9AcHAkhHJQssBZ8YYSE0AhKdtIs7OEfjtJRmC4q 3dLpIrRnN9M2rBj/XvmkKhR1Pd2lIXABZCDUKQAuGaCSR40BKwAJWovETg0IJGBxQz7VQ3DVIsEN 8ZDFv2Ecs8C2HuABXQyIgYAIvOC8PEIgQKIObmUdR9QdcLxEbuwdc/wz73FXxytFTuNWinsHfnw0 HYAEQCDYiV2ajY16hLwAhB0FfK0ggnQMU8AEAKIKmnTZqtDZpXvJia7omSxsxBZ8sgvpyUjKtZ1a xZjKzblbI+K7+ybc+WAjv1vcs7yYObLcugx9V/68iLQg0d03wuDqr3594Ibqw0VcxNXLfuNI4gkk wiCg6b3e/jq/GcgN3wzfv+ENv8ALi9ADwYLf/avfA6wCbvAHigAY/xmLQHFBCWZAUFnAFIDACPaD oj7m4BDewRu80NOQkzUalEKJoz3NUZXA4SAu7zxb4vVe4ieO4l92F0H1Uxv0Gi8+BgGUAivWABLV AjbupU3BPkwdFU6ttY1gBDygKKbaA0QQKgBm1VeNBInAC9hwVsaxClAO5WNtB5PgCIrgC3vjvPGx JWzdiDID5mEuC8a5fEHjVuywDnSFCwOSI+tADEdQ2KXXAY+VaoLMAwgwWaBpyKK5AD4gIMs1C3Ey BaNAJNRr6J4NyqK96JeMuo3u6MAY6cP3NaxFfMGYjK1luxaCu8s3IrBsSzhCuLN8I1xuSCuCN9RW rZvLuazoIz/y6v6wbjXZR62GBL2vt419w0jE0OvNME6/zt7Bvg3fTOz2Kw+pAglFECzt3OwBTMBu AE5+oLHXTuBckBQawO0T8AaPMAgzyVAXnLIRDvsLPeHqbgZsgeEsAAjsgoQdPu+975T2ntL37hgm 3mWXYcM3jNOXsRej8YYC1AIY0AAVQBYHjwIZ8KVHvQKM4PAN79SHMNUJJhATYAE8cIBG3iuwgtW8 8GdqK/JR7sWAaAiGQJjQYTeRqgrCQDKBOuay4Ldl7woAwYrVMHTs2LUzeLBdsllPpkRRdavcQXW7 hnQokFFjxgUbCyzgEQUCAQI0OAwggIDkAAhBqMxSVeXJkypVVP/hwjkLJo5Tp0L9RBVUqCuhP40e RZpU6dJQQ1G5ghr1KVGkQY2i+umqVauoWqMKBDtsHDqE+Mz+Q5uQIjq2bdmqaxdXbcK469TdxZtX 3bhy4/yOQ3ZMsGBhwpQFK6xMmbDBx5A9Lhf5bmTKlB8HHkyMGCtU+IwpUgQJEi/SpUsDQ50a2C9s 3ly/fv1N9mza3EgnKSFCBIkPFT58sFBhwgQKRtwsOtRGEKVKmjRRAqNhw/QNWTQoYPGI0SNMy5ZJ A2/NWjXy1badR59e/flIb9zLeQPHTBn3hAiRafGGuX1ClDJ5AjBAAQcksEADDzSwEk+cY9CT5hjU JBMJJ6SwQgv/L6wkE0ss0XDDSjL00BJKCBGkRDjKMGOMFFZMoYUQGvjAjBROaOGEDDCgYAISGPGu O+9+BHIZTAZZYQQehjhihwuuGM5IHnoooochhuhBSimwkQ0aVFbxoEsX8gATTDt2keyudu6ySxlb xjmInXWOaUWWWOaM5ZVY5ExFKKxCCeaYchD6hx11klHnoHIu4oGHDmiIAhe8ytnFhwIIQCkjAhbg QCMCMuoAgkkvXWAAACQgCQEIeBiByQl+eIIKVW7CCZdZqsihp6b0dArXppjitdejsAoKKlytumrP W59qhRWoZJHlq61cEQUqUaZdZSBxxkIHrjPVYcsvt9rSVq65/9SKC69y9eoLsMaOKaxddxkb7LLK 5i3nMnsfa6Wzz0IbzTTTVFONGW5gg402g7+J5xdeFFlBNxB6860CiSe44A03FDkEkOUqoQQN6aij LosrVGgkkka6A08aasYjLz3z1oN5m2XaeAM+Qcyg+Q378NOvkhLtYw5BoYcmmkBNAnRuQQidyyRC C52+MOoKOcwEREs+pGTEEgWRzwuvW2wBBRQwgNEML05AGwMMriiuxyC9A+/HSAYBpA0WSChhhyOg EEKFta+oYIQqkTyiCEOY2cYbLVXpsnEX7DBkEWMii2vbM8uB6xZc/lQHczjnfMXOV/YMSpRVxCp0 HYPUIQYXVf6mECYZVTDitAAapiATrnGmgIBUSy/N9FNNNaWBBgRMhYADDnog4e8doJgl1pxw0aHW YfUkSk9ftzeWqaKS6v5YoKZyRVlXmM2KWVm4EkccVkQZRtlppy0/mGGGufYv/b3NtvLKxzXI/+hS Ob3sRX/rgte6BHMvBt4rGQ/cjL5AAxrR9MtfvAAYarJBsNgcjDbYEE0RRACChzlAYiecgArc8Ade ZGw5ggADyDZwBQVcoToYuMAgIvGISHxHZSwrz8tiNsRGAMI9ghhDznbWgjZ8iET8CVrRpDhFoS3N igySEISaJrUsQo1CVNNQ1bRmojKMwQtjYEEL1Cg2spHAbP5ou5HarsAGt70tEr0AEiYeMYg2sMEI K8DbERZBCzkIwQIjQOQITAAlRECiF9PwBSoY5zgwOcIYxcCcmTpXQFvYgnJxGYYrREesp7DiGHCB C0XUcYsnFO9IRODBAja1kZAgo3PIsAUNINARkhAgeZ+a5aR+twAmMCEIPmDCEpgAhB2QYAc7sEIi cHELzekEJ0Gw3vWGBT5gbe9YuloKKqblzfEBpStbEef51CeOc5wjWe17VvnmN79qscJ+7eNf//yH kADuk5/j8h+3urU/BRYUM+tKhmYUSoxkQKYcw5DgBPllwQtiMDUC42AHPZgNYEDCDQ8r4QmFQwEY HKeFGf4zw8emowEMKMAAE6jOBjAABx72EDwrA+IQ1wMOnvaUGo14wxwEQQY4HPE+THQiHKBIiaNR 0alObeoVpSpVLnIxQ5WwhH22hoYyes0LYFPjCVpKgjJ4IQNnVZvaxsCdSPQQEz46hEkh8SNMtJUR dfPjCkpQBCnQQgpIGAKqEKkESNxxGbuQZOPCxNdE+IIYhdrWJs2FS2WgyS5cIVb5hnEM1R3kGP0k xhN4kKkOlNZSHoEADXCRiDtQMwpA4MACEBABGjCBB5+S5QJGMkwOQAQnVKiCMXWwA5pQgZrKuIU1 Z5VNbV7vVr8yVnOl+z2mTCt8VRlKV86pFWadQxzr5P+KVraylffNc36jEIj9vBWuf87Fnwip3Le+ 9ZfGjKMxhSnoAg/KwMhAFB/PkOgEI0FR0gDjNKkJR0a/UTDZeKPBv4AEIkhggd+YUKQXMI4iGnEI RgQCBSBDgRleIAQQUKA6LJ1DTX0InvKkpxswezFPt9HTboBjG5EwoiCUAweh3ocFcLgEx+Cg1P5w rKkB6kSBkkygJQ+oyQJ6MpKNpiAAQUhBSWPQg5aWIQtd4kJevhCJBGEfFL0ADCn4mhpVYKOxmk2m acVABszAo7f20DuXYEMRjiCFRPACj0CKxF330EcjlKAEPThCEv7agxIc4o7MOCwqbNE4IuSBCEio hS/+pFALZHAOLpizC16OoQplnMkux2DFT1oxjE6L6x+sO9OZZoER05aWAAbwSEYOMFoIDIEYx8BF FYDABCrgggo0KIABLvWR4PGyABDwgS2UsYtZAPcHQGjVFIpNzWnmZAo8OYVVhuWKb3aTWEApJ7pJ Ke5tPqUqR5nfdXdlTqikIntdSUU8uWs+roSXFeGVpyhSYV7TtSIY12JLXAJFrnb8I7J4sUu29IeM /fklGYRpzMUVqPH9UbxzmRxGKPDxiwBPkMAVRc00upFRDs7GNSCERAl+8wELS4wCK3DDIRSRc0YM ggUrBUMbylCGNrSBDBnQQBY20IaaRkJl1GixTtH+09MZ91TGRRzykN8w5jL8GGtcW2qGnjr2sR/5 aEtTWoSYVtUuTi2rYyYRGsYwdxawIM01EisFEuBGs8IZAyhIgxkG8VYf6VEQbNBrD5KQiFqkxs5C ekSJ/MCGF6gABILrgREKa1jE7sIDLgC9C0zgAiK4IAlKkIIvMhmXTOZFGKN4LObaYV90dDZcAVQF Ms4kjNtuinbA9AilSFIAICymHOxSxq9t0XuUCJ9TI/GlD1RBDOQamwlVcNUsNDdNamrudaHoiTaF 1dxykw5Y18uedNN9lVSkAijtFwV0z08+7XIX4PWPynjxL5VQEFwU9rwfvzATAiqgu6i4ihso+vL+ i8FIIAXan7wQh84AhkUoOQo6OX8Bhl7IhpVjOZbLhoVRgpmruQqwACFQAl4wBJ7jo+kAAzIYuqIr uhOoji6gqUhAGahrGak7D6uzMR4Eh5/KOkGQA6XqOkHAGkIgMqBhjv8guyZ0wrTDMrX7Dy+qECp8 O7gTBBQ5o7qzu68KK7WZgANwIxTIgBCIowzogjRIgzLgDh9ZhrZ6hLr5I0NDgjgIDWbAwx4JtEHw A0JbARgAhLbqhR5CLFUwAS8BvdIrvcfZNFt6lNa7C2WYhcdah3JRi1cLF9ZxxHa4A+HppV46rQIA AAAYAE6JgCfoNMxABlyggZXYFN8pANoZgAX/eAJbSAxbcJ3s6zZcUAzkSq4mAL/mGj/yK7/pmoqi MMZ2a7+BCwUcMIpokRanqD9m2T/t0jftgkaoSBZo8b9qsZ9j+Au9aAv9kS+8WC8Doi/DyK/6Ckd1 8K9acAM3iJwAqyBeqMcLAoZp2IZu4MAOJJheUARD4A2IIUEKCAEjOARgyDkOa4RBOKsWJAMXhMEW qI4soCkfkYackjof5Kka48FlGISfGUJC6DpC+JBKQMJBWCoOObIndMmnOjuqqqor1Cq58xowYIEX 6MIWOYEQwBEFOAARMAMuyAA2w4AN+II04IMzKINCILy3oqs9agMjgIFDMxxFAIY8FJId6jkd/9Mh QewOxOrEWCwtEzCBDgg90EMCXyhAvcDFTRxAhUClR4ELYvABWeqlAWi+BcDLjBgAUpklCJgCeakX YZgClRg+CRgABOBLvjyeIUgGw+jF5IKV47oFxaCmWRgF8As37JGKZASnYswu6Uq/XBkWZsQBZ4S3 +IOu9POKaoRNabkBrUCW+/s3aLmBG5gnUvDGPvmLbMkLf5rL4dQLgsqvivOvcuCFWlCEAvuF52yG 6GwGbKDO6rRObNAGebiH7eTO7rwHewDP8LQHbfgFYEgEKYCC9FRPOdAFbWgG1PgFZpgGZoCPQ2iE +2yrtjqEORgyS2CGbNgGbuAGeIgHeTDQA/9FUASdhwVl0AZtUHuQB0jzDtR4w0ZYsWXISjyENGbI SPGoBo4E0RDlwWu4BnAo0Wq4hpdJ0W0IohZ10ReF0RgNIiCqBmuQhjfskbraMPvcsPu8z0M4BDmQ g/S0AiuQgw0TUiGtmQ2REEuIhP/MhiiV0m2Q0mnohYUxhESIg8bCTm3QBinFhvmchij10mzQBmho BWGYkmKKgjaNgjuA0ztgvF34B7PAh7RAizp1OMFghzxthztFi3xYODxlB3QQBlVYJiBQ1EUdtilx VEUdAiCYkil4LG3Bh9mzhUiFVEidkieYEiCIAkIRwL2Il3HoHMBYQMEYr1VtBfdpVVaF1Vj/lVVY hadZFQdWrdX7gVWw4NVe7VVZ9a72aZ9gbdVaLVZxuJ+BcCdxSId2GlZhdZ9/s6deDYZ7Ege2OIs6 PQs7FVRARQs7BVc7ja9veS90aIV82Id0Vdd1Zdd2ddd3hdd4ldd5pdd6tdd7xdd81dd95dd+9dd/ BdiAFdiBJdiCNdiDRdiEVdiFZdiGddiHhdiIldiJpdiKtdiLxdiM1diN5diO9diPBdmQFdmRJdmS NdmTRdmUVdmVZdmWddmXhdmYldmZpdmatdmbxdmc1dmd5dme9dmfBdqgFdqhJdqiNdqjRdqkVdql Zdqmddqnhdqoldqppdqqtdqrxdqs1dqt/+XarvXarwXbsBXbsSXbsjXbs0XbtFXbtWXbtnXbt4Xb uJXbuaXburXbu8XbvNXbveXbvvXbvwXcwBXcwSXcwjXcw0XcxFXcxWXcxnXcx4XcyJXcyaXcyrXc y8XczNXczeXczvXczwXd0BXd0SXd0jXd00Xd1FXd1WXd1nXd14Xd2JXd2aXd2rXd28Xd3NXd3eXd 3vXd3wXe4BXe4SVe1aWHaUDeaXjO5WXe5i3P5ayF6KWF6aVeWqgFXcDe7NWF6NVe7c2g7wXf8M2g +GQG6YxODZVOL1Xf9fVSbDDf89XQ+I1f8c2g+aXf+8Xf/NXf/Q0YZuDf/wXgANZfDRVg8f/t3gMG BuxNjQNm4AZ24AeG4AiW4Amm4Aq2YAou4AwWXzy8KPn14A8G4fnFXlo4YHaYBj9AYRRmgxVm4Rb2 IyOAYZn7gIchSN/4ABFYgRxeARVQAd0QgRAgIRAIgRBAGzVSIxZB4iRWYiT2AjJggz4igzF4gTEA BEZoBF2YnHJoBgldhvJtBvYFY/eFX7qqqx16hDNmhDQehDWmG0Bw4xTemp+RPBQuOjqGwT5yYRa+ Yzfm4z4GhD7M44gU5EGOyLkz5EOOYkQW5EMeA0J+4jbYg0HD4zwO5EV+gUue4rkjZENOZEb2ZE++ 5E8W5VE2ZDMwZTNAA646ZVLO5LlrZSn/luKc5MK6W+Ik9qpaxmUWMWKwMuJe7mUlFhsU8OUaGeZi NuZj9uUixju0YeZmduYibuZlphFkpmZkRuJZrjtMJmVS9qpu9uZv9oJTFudxJudxPoNzRud0Pmcz +AKv4QIynAALOKuiVAFiwIYUxuc9sGMWdmIWXoEZBuKZm7kQUIEXgIGDzuEWyOEe1g0gHuIhRhse bgElZgEmXhG7Y5FG9oM0hgRGQIQq7iFscAd68Id+MGl+MOmUPmmVTmmUZul+4Ad90AfwvId5kAfX eLEopQZqiBu66mIh4QRp4IRLeARJOGM0TuOGTOOltmKOrqDCeuoKGjCmXuo1DoRA+GM//9BnfE5h GMxnrkbhrW4DfMbqNS6ER8iER2gEqk5qtk7jq87qsMZnQFhjRhAEP3hjuY5koRs6NiDkiPTrv/br oXPBwh66wybsw05lPdADjqEEPUhlrnJBxCbsv3Ziyw7sRYZlT2aDMtDszU7kiJziKC5kJ/7kVtbm VzYjWqbli06Bisbm18Zm2J5t2Y7t2YZtXm4BFShm3pbmE1gzZaYR357oFUEB4u5l5DZi4mYR2s5J Q85kQU5syvZsFBFnLwADcM7ucBbnMShn7zbldA6DM4jsyE6D8k6DM0iRdvaCdxabFsiACfgAZlYj YjhhsMZvQGZhGLhh3RDo3wCBFXgBGP+GASPAZITW4TVr6IeGaBrJZRa55TMig7EeBEaQhAu/8Dua Bm2gB3vQB37gh38FcZkGzwWNB9c4DyndaZ6+qWrgBnnYBmnAhEvA8Bo/au044wuP6h3ncdGgajZm Y0JoY0C4aqzm4yK/6kEo8j42crym6wrfDkygBm6ghjLOz14YxDvKT0jQ8aoG8jS+8UcoBCAHcsnb A0GIZOqe7Mpec+p288PeAzQ4cz3wD2nIhMfWA0FI5Ujegzc/7IhEbMsWdDYX5BUGbErGY6/O7z7s aqMD9DJAA8guI+ieYky29EvH9Bc4dErmdBeeZH4mg0zHdNzmwow2Iy8g9UvX5H5+Yjf/pjxNbwNE WGr8jATwBbT8NJmGPJGhM2WvKudfT+fyRm/0Vm92dmcucG+x4QIvQAH5DhsUSIEXSAZsQPJFB2s2 gAEQ8GGQmmHdEHBKhuFLZ4GEDm4Gb/AjtuVuRrNunrsy8IMKR2oLf6RsiAcPB3F/HfGZtgebXjBv yGmd3uls4AZ76Ad98AZqIOMaV3hJEEQsd/iHh/iHHzBJ6Gg1ZuNCGHMy1/hAUHKNB3KOd+O6LmpM yIZ66Id7yIZliPiVz/KKZ+obx/Awv/ExfyISSXM/x/mcL289IARMiId68AZOIATGjuybz3k/J2Sk j8g7ZvqxtvanD+tBK4M9IIRMWAZL/sjCTt5mTx7kFk5hIydyuJ7ruebjyWvhP3DyP/bjtfdjvFZJ Ma9rphaNWnf455wG6vzSbLBSRlAE1hhpeqCHehB8mfaHkjbpwkf8xC/8egB8d8gGZugFSPCDpUdh 6/51Mwh2YS/vdTb29g7mZQdnZp8AEEBiaad2JEd9a8/2be9vH2YBVu90Iwh1TB73hGZmBqfvdA99 r/LuMhCEuAfzHpoGbqAHfYDpEN9XEC94fZ+HezhxFKfSKN2Gegd6akDeIMHyK3f4Z0DeML1O5XVe iI+ELj/qGY93t0b/H4/7ojYseo8Hx5+GZ1jeZ6D/5pV4ir/wHMfwp3zKmBdzgCBE/qgQJT2C9uwp o3Ahw4YOHaKJGFEPRUqc5NnzxokQRT0SJT4M+ZAMyYZoHLZJucdPSj8uX8L0EygmzZgI9wjCxE0e t0xoyIwJKnQoUaIkybBJyuZloKaAmsp02dSpU0CAWCpV+scq16leAyEKy2gs2UeYqG2jxmxZr7bP pk3DJlcbXXfu4sVzR1cuNm3v9PXjt2+f4MGGDyM+zK+fPnrusC2LxGgQ10EHy5jJrHlz5jOePZsB rdkLaS6muaAgrVr15qApJohIIdvLi2TYBuH++jWqn6d+YJAQoUKECBDERZxQ8aKNzD/OnzvPmtXI i+osWKxY0ULFie4hQnTv3qKF/+zrq8+rDkqmjSDc7geZnbYtHuDCie/f57dYnz578/7H442A3GxT IDfcZJMNNXAxOM0ybLXlFlx8UVghNnD9kqGGEfYSiSSSYCLNNtVwgsmHJ34ICSQnroiii2StGImE 0yR4YYM3MvjLMzs+05aHH0aCCSYPRvigkEea+MgjhVSSSSaVEHJQQiJRqRBCH03UESGVcOLJkx1R hCVIVZKpEBphLpRSSzU19Z6b73l1lSAw4fRINdtIU0gZQBXVZ1EkZSXTVO7phohXgxg6lVV/6NYo ImRBOpaKK2KSjT2NZTPNjhP2Rdc669i1zl59rUOPP/0MZh9++O1nTzzZRDZZm/+UsYQZZ7fiOpoX qKHQa69cnJerGbamQEFsqtV225uDNOrVb8Jtd5xwKqwwRnvM6gadtn8oRVJ11snWQnjffSceebOh N8ZqQQ1bxrXuFfLIMvPVt6q9ivFnj3/z4IWXNwQmWKNcN/K4aVx80ZWwwtpQSDCPvSwzjTv8cSMN hBxGGEkkLUqisYsoymiwhSOTrCnGD6LsIMorCymJkvJy4w41jwgi5U0332zzlWjkfCaYYFJCSSVB /xymmHtEVGZIghBiCSWCpNnGSmy+F6nVZL05px84EVLQSXz6GfZRSgkayLK4XQ1pomCJFemkMWos o48Yv8VNPfW4k+nBnX7ajt/+2kATeDumBnavvfoxdg831GDySJRM09qGregJq6sXvmKOArqkcVal F8amQFpQtp3N7LJmBwIDtC0cl512Y1SNNiNh0V57WE1FlxWf1rEw3rjlnjCebKF7EVTxRG1WBteD CDTQWfQWbrh+07dqzz339Ju9N+4gqE02CzNcIfgJf1r+Ou2Yr/DI2bhz92M4wo+jjjty+MvB44MP qvmiqn+hXAEDMIABVJml9OGNSzyuZgpcIAMZSJGaFQ1oQauEJoZGtAg+UBBiigjSkiaSiDwiG/Xo yUFcsixGPOJEcftRx1b4sQ+9zD01u4lCjhI2o4yNDcx5iuzkRRcTvfBtkHr/GxFjhDG6GQwub6FR NijkqfO1Qx3qCJw6/uEP/RhuVfrRRz28kQ1pYKIQj8PNnDCjLvSgET0p6FV4MIcuHCqtDJ9TgfHG QIZkZKN0ehzEC4STHeJQSzstIMMgyvKyR6SNLLTTjR90963rpMB34ZnkuUIXtuS5i2nNK8QlloGW e+hDVYhhjL6sdz3t/etAdlklK91RvvGByi7smCUtafmPd9CDHv/YJS0/hT9tdO+XwlyY+J5Yvlba JR657Bcy+UeXbMQse9KUphcztQxpME6MAmkgNxuIQT00r2sT1IQnKhi0cwrkmxlsIE52xjOJCKIQ 1PBiJmoGnxdKIkIF2yc//nsEsWtaDIiTGcRL1HSUgyI0oWRrk6RWtAz61ANWR5woRes3v30yiGQI I1876BI4aKiDHfkIjCizaJjELW4ZjdtmzWplvDTCdI2+mmSvhic6oZREIWqSGs56uocxUKBa6rKj McJxwqO6xwgiGM8KhuM68hDykClUkos2JgkiRsIRWh1LWA7hlax86wUsiKQKxDXJ5Jzrpi8YimbG 0C6cQG4gj+hkNuJxRcTwwx+mzJ48phkPeeQysLmsh2ADS1jB5iMf9UgsYxPrj8Yy9rGNHWxhKVvZ wxYWs4I9bF5WqVnDFpY//nhsZpeZzL8qkx7Xuwc96rHa1aLWmpi4RLyY/sdAP3ATtwwkBPPC2TUL nrNJ1fAGiSphXKGdM2gC6W3zKKLb2+aWaZyEEiFQGDIeXXRv0xjf90Yll3BkwxuvgksvPjTQmWyN JQZFSlIOygb2MkdQjWDEhyI0jXAgqIl82Zv/bKRE7HJqv52ai/e4+8R2sOMf7Oio4P6Rj+llsaR5 VZyDIvGIQrZ0SmNY6xlVAwY0giFcKAgPd07Qq3NdxyjvXQ9P00sTuN7WDBcQalDYAI087vFsZChr drjjuuxE9ZD4bKHcOhS3IkJiq7cLBLfau2GxjlWSZ00r8nC1EK4NJF6ejEc9QkkYfaw2sJfiD38Y A5h+oDnN1EtzYNiM/2bqTY+kaoYznRfj5juTdDFwxjOfzdxnNxcmzncmM6H/zOb+aKMXkDhvTHaq EqlBGmfd9K04L9IPeUgDuJSgdAIX2NOURA3UaoLxtSDxC0/B8nysnOZd7tKvLvfDHnq50C98tOix 5MYqNYGJVx6lol7saKPdXZgzh0nsY+aylezI3jJ1Gdh8+EMfkY2eSQ2zH8dgo7wXxo1LEgK2DsPU C8Mz65QryWH1IDS+u25gpxcoYxrb8caFyPGydpyC3qmAxyu4TlRPlEIVrrCiAu8FL1Sk1SUHor1k eGS4pBy8Sh6PXZlxKyaxHK8hUSO88ZjHKXNZr2qDPOQiHznJS15t/f6so+CSwBrCm9WVqnDFKm4K J5MuUY1uVOMSlSgEz7UZTvdwxSUxF3pMtlITroRFEes4lZtH63Sm//nMb54ef/KRbP7RutYbuzVX rfbrttwPVJWlB2TL/uyxP9uxp7Izodve9jkTpqTSY4xjtDGN8g7UMlvb0w3BTRrZsLHc5Tm3e9fE 61nNnNMsVeC7Kb4nY2Sj5z2n9yDsHeWyXoff9/xY3AYO7H7uqNYRKrjBZ5coJz95rJGU8ngg3qfO KQ/L8DGLJ7MRDrzYA1Um3z3ve+/73fODHcDgRXlTxPVEIn8sUlXSJZqfCU5wwhrSh/5sm9/85Sff arRLpMF58Q+5+/5+z42hR15GZTKKbqpT2nAH2aMN6DrDX9B4prO1449F8Jv02nq5+8pluHe++4kZ CMVqyNSImYvm3BsLVIcdAYoOMcVXmM7Z8Fxv+ZxvMd6MaYbyyJvkSd4eWV4KuE7msUC/cZ7GoJ9b LFH8hB79tAXpJdmSKdzuiFXDkVsLIOC9XVJmXJk94UYKRUxdfdzvCeEQEqHvsYPosdALId/yvYz1 XQImQB8nSIP0SV81VAMVWoM0RKGQWB8TYl/2gczGAMM7FOGq0B1e6EXCDEyDbJQ24IXHkVQZyuHh 0N3+KVrezdBCVE5r/F0BnlglKSBOsdcDDoqbYA0KvQwHciBvWf5gzbybrWhgNgjEBCrivNUbeYiV dojgCA4CPnXeEbFgCsZPg7Agh0yKIySKS8RgUDDc6tUgxEWcn5CB8jBFIUXCdrlDPgThHPJiLw4h P7yD6HXIC1GVy3ihVFmfkEThFFahFV4DOIDDNVjhFWahFlJf9XXhMWpjVSkaMNCDL55UYzBT/zhR wriax8kd/oHjyO2HPsSD3XkIHv6freyhrvjhDSog4cGXVBwKpBQSIlKVNi6JIjLX4snYC0DiHkAD M8BTzSyXB2Ki6iWgApZBJ75QwJ2MP4niKDIIP5niojkLViCUUMygK1ISLMKUeuzQP0JCL8RFqbgd mUWbPoyWaP+RGZshjvwZGp7NJE0+3U8+HU3GJH/czd20lkzW5Ez+GeLk2fzZH521gzAaGTFqoxM2 nzJCHzNagzNCY1d2pTRSYxZGYYlg4/UJ5PKBjKLxwjvcXy/yw/ihITm24fq9IT142ToW4WLgjd3h nQxdhkIMywZJxGaoxvDYVCwyIKDwo9nIzligCFr622MunyI2oiCQwQUgpA4qJDNYGc/AVfO8BxlU 0vB8yxhUZDGWoMBt5CiCHsb0X25AxdbsQQySBCuWpEmai2GGm0oCAkuqiIxkCEdm1P8EzPqxkrER 034J53Jqyo4QCcpAzI1QiAAN2y9NpwANEy8oAsQgice4yDH/WuUTQmFWNuMzeuV5RqMVUqE1XmN4 XsJZch4mKJoiYAP7IZba9aShwRlesR324AUAaZT3JIirKVMoqSNenhxj5E2FuQxuREkHCeYGnUFm pNGfHJS6MRRZDNmQJcljGmMiUmbzKBAZYABCXhk0LAOuUJwZSMRKLJBopkCIbU51nObLuExVRcLF cEjKFIyNpOAzXBQL6igMvSazdNvN1NCKDcUL3Nu4jUeJ+Up5bI64jZV6OKBimlAhIZV7KB/AEel3 ugxAjsV85R3abGnszFxBNs9AxouNHpL1ZcIldIyHgmibouUhkUUjDAIb/EGOciGScGGchqegJuNs jaVWcmVX/3YDel7DVoalNEDqFsKpe0rCe87VXF1CnEbCVQpJIyjBHyDC20QCLxDfjibRhFBDqmZc goCXAIUDg6zMEybhjQKJCUIIj2xXNohdLjkWtI2WLvqkUCZlTEIdm+1DnlFP/vnDeN3dj9iWBkVE GoiJQYBJRJyBW30BawjgrSDFUSCE0M0KfdFqxxRJhADRuILIl9Ipm/Kc44RTSx0kQ/jBQtbjQqBB Ho7BbNjUUJnm7AlZfFLUgzzDyjinc57MRM0qIrmHTdxEQi3pbcoUuZ3Vw7VexTKVCIZVaZYmul2o Djmao7FYDe0UmfhUybqTYHYEBBlEN7GsAvWUQ0yJQywcG//4KaCWpXta5ZEcKhVOI3p+wzec5zSu Z6S2J84abc4KCSPAwAq8QAN6LE1IIAd6oeRxmgK12wKdjWMCycAVzHLyBXVCEzKtEhpmj15kCodY mGVAa4SKyYRmxhcIC5V8a7hqLbkO3LluqGQeUgc2IiGMAWYyxGZSjpXFHmBeTmrUlE2ZwbUApFSl peddDJFwyJBgzKz6W94xLJLuyUEtqWGGywkAz8RSbMVOZOZlLHYE0r5hbMaybuvm4yNZx7r0XZXt 4YpqxiyKxCxyrp/ElOeOG82qlM1y4dHa7DIiajWYp1f+7HmC5aOyJ1ne7NE6IaAywgogx+hu4uvK Iu7GUff/kuy37hpMPIVVMOYeGdK/EdkKmaCP/MiFjVHN6GE9mkEa3UqV3MRL9BBqFtnAESNVShUH qqkC/W1mWslCogGuaGsG0qMXZIAGoIYGZEAGYM6wwBWX/iuRgYiQTJTkQszkdqfe/puSWKKbKJBs IoTujuQAipuThofFCs/wmO4C4hBQYMfrhhXHJlQO6/AO83BONUTMxuxDmOzLMkQOzy7vhAvwCu+R iGd4Fq/xNiPyoucUNy8WEq2kSq97Uu8KgEAIXC+J5VtZkS4k+S7xhNsZo3GFzu4N8UkPp1sZfGwc M4T8Ws4Ka06wZOCY/HDOvEsPXnB93e3HBCQIizBBMtcC/w0wZhQwNRjNR9AjhXoBJF9OA2sABEdw AzcwF+igQjgkvNioixxJL2iwKFOuzeLTMY7weyzeDP0UDtuQCjsp6XpuDPfJQdXQtyTUEO8a+L7E zRwpnQwxH7fsMHcTbnWbCQfznmzu7o4BCyjxEi+xeOrsoUJqFCfvFH/lNIalWI7ln/5pFlMvC4jA j9WwAsZw657bGqszUaDHC4iOxt4wSa4VOstwPW9sOq+z36WxuGUOAq4GJm2QpC0Qb+GGnX4yighc y7iInKrrZFKiKotozYwBBrBA8hgDI2MQljwyaaAAJUPwBlxyJrfLJpPachk0pkKzzcqpNvZcITvo Q76ry/++QAuorgz3yQrP8ibadC0fxUK0MRmULDEL9W5d7aQp3lErniYVNQMFM874tA05c44Gb0ov 8VhmZTVbMzZ7ZfOq59Ba9TUiyfRW3xI/wgvsW8a6Mg/DbFN7b0iURELpVBu4sRurRz7fdLjdY+Ka cfEANJaACbsRdEF7oYtMFKBW6okAkUBOoHtENARFxOeggGl4QbYmA0aHSbVOxAZdTiVbMgaEdAYA S/xuchlgSUlPop0aLUtXIs/9nJpu0x7MdBhTywvbEVFAmU5vLE/3tJXsQRsLtNUidXAL93ATd3FX Zjc1NUL4dDMD78oYCVVjpfFidRRLsVanpzZb8RV3M3T/k7VZlyZc+3DsJfd4k5rONHUvh296p3fJ NoQOq3PvHmZ6KLBEfBNgv0ebtrTjAol8toVhfwhDrzQTLmI4NTIafMYXYMEVZAAWAEvxXHRHfIRH sO0BRzYXVPJnN3AkEyYec8ZneEaEa1K7snQhr3YFHvVBzHTr5Vt4pIDuFgVas/Fu8zYN2ZF4l7dx 43iO6/hwt+x4L3dUR+GDfPU0fzU1H682X8M1My9Xd7X0aXeRczeSlDXTrpUt7zF5D3WWQ9eWl3D4 7pHW1AQRF/EstgZnsHMaTSlftwt9qxNRb9IgVCITfkg0f2ilWur/snY6GU0a8LmHh8EXALoGKHgl /10y/3AChEuEtIqJokeEGUQ2g1/4JW8ACrDoR+CumQN6pn/BGYSBh3+4omsJb0meCLNrS1PtcnFa b8H25W3HcJxACijzt21Yn3AYQrHBHsvmZZAEMpdwqvs6pbk2IwL7r582I5p4sCN7qkcXK3+rU28u C7hBJGjhk2dlkT9vtU+3ejpjkif5on6lNDqq0G6lkxPttVc79VHfJWy3iXg3ut164K6ETyHz/S47 ly/Qc937bs0JuzFXjpUpl74Hejs19+qh7bbVwU8ciIlOBoL6X4MJaPq6IpZ6vBjjnHuzWaYQxrer nkt4n3t6p3vGnwN6GAg6JkcwCAiDNEj4hIuJo58GFv9YMmdTOsvrsWYAemh8BqOjLEVkWYkPOFL7 wW3LRnaICwsUsQCKDVxf+U247Cz+tlIXN2sPeInTnM9bPdX+vI6zk8nuyQuwQYhEKqSau7WLfdlj YbhPI7erPbdrc9tnt9gXedzLfVmzAAMu/RC7rJY7ZFIDNzfheG9R3tl0ueY6BB3fCofrIJs/fI5f fX5nvJxeJakPpJ4nehp4+seHgchzdEdnAAZMQARjwAVcwAcIA0PSfMtHdhdwAcyDNGdr8oR/E5Zc fs7zORpY/hlYvs6H+mn7vG/9VObFstEHcW26sRALcx4ihJtTWuMzf/M7//P3/olvvXJ7PdiX/fVr N/b+Y//Ztz2SJ3n3u/3Zaz+1y/1YPsKG4S7TL9DPcMSOu79xQz/zH7ezP4ThU2j9Kj7P77jzC7gY YTZAoEGThuAZgwcNmjHzxYsXLihQZMiAgSIFChMmNGhQ0QKFCsKYCSRIUGBJkyfNcFHJBYuGDRpg auBi5mRNPTdx5tSZZuDANAiBngkT1KDJnISQEiq0tFBSpHvGsEiRQurUFilelNlThitXMl/BhiXT lewes2f3CFK7dmvatYKcOmU6l25du3fx5tW7l+/SuH8JvRVk9gUbTNIQJ1asmBOnxY+lWZM8uVpl y5cxZ7Y8WTLkxI6lNRY9mjSnR2Oyns0pCCdg10n/6cJW2hc209l9cedu6vSt2ZJdBZZBw1VhcePH j3MVePR189q6keIsSdInyYTFG0I8IZEiBovfMYbXWNHiR2Yjz1DnSb1mypUtY8KcqbAkTaPSdebP P7LgwTD/v/hvKKJOYs6vwMogY4wFX5hqqjG02oosrxIEa0Ku0EJLsKfM2lAu3UAMUcQRnWMLKjeW 8UzFFRHjzBrNYITRxc5YRKyx0EDDUbTTUkurNeeeG1HIIUmMizXpaqppQuSQE265H2cD8i+7AMtP pJ/So+4M7LxIQbsTQrjggu/ILBM8jDbyrjyQ0MuyOpEOQiMhlbpgKT75vlDoujNM4kmPgfTDKY1A /2/ir82DvvhiSzOIQmi5KAMbzKwEGRwDrQsx7SpDDd9y6iy4ACNS1LkqWaqSU1EtBNVVTzV1VNfY GgPFGmltccYYcb1sRhprXSxHaR5R8FPWnBvVWN1KZbVV6JzSL8nfnByOrOSiRQPK22zbTcqkrJzu 0EXNaKjLFk4AMwQMxKTAgjEv+q67d7uzSDzyPGITS4PQ4y9Og76g0847uVD0ID15qm6knQgqdND9 clrY0IIKRojRLYX67ww95vpLrUkj5DjTsjb10cOkznItxFJVZUpZU5flS9mXYYZZSFgHG8OPFHtl cdcXc41xZ2tyXjESYX28yeRjkcYrZlZVbTnlvP7icvZZJYUrwzjgnjQaKbz+6vbZQ7mcCoVyQzj3 AgsqmKCCtdXtqIKOyLwAA4no5o68jNL87gN7EeoPX6L6fe9OmQQeOD2DDRU04YMZFlThQfnbz6Qz ElUUY9sA6+3SjzUNeQ89RuZQj6P3WjrZmJvOy/TVWRcxc6huDlrFn3nuGTPagZb9MUyEVUvruJIO 3i7WV9cr6kCn/u234pQr6drYotNpukYlVqghL8c2V0y3MVrbAQfWDv9tj+C2iCKJ7rRbzYzo3XsZ vw0aECj5KVcJC5XuvL/w+A/iD3E91hM50C2sUKArIAADyLgj6UQQchIYxh6BOaQMIilv8QPHxv7Q kBcsiINjMIMHkzOW5olkOdJCwwJzQsEPRbAuLKSLC+cCQ6bIcCk0LEQEV6WqS7xsh8rq4eluaBcb sjAuFyQDIHAWGsj86jOPedGuqlG7zWTmiVHkjBUnY6MlbvExl2ADGdwyOhVurYZCNGMLz/jCNMaw LpX44ap6eAk5ztGNc5RjJnJYKhuOkRA4QeGfelKTggVHISJ0ngE1hrDqIGRAC8mTF8DgBRSQC0xy O5sF0PY2taWtAuDjpPjWNgG3la87GUDBe1piN3VhhF4WsNe9qAeUwNWJC4PjAv2A8jBdPgyBimsY 5HRJKJwg5HIZ09jGfMMVSUKEmcxcyTOh6f+Fyk2zctKcWFGSlzVhbpOb3fTmN8EptTKMoQ1J1F1i qIE7Kd5OnS465+7YYKnP6SQulLDnPSlxF5QJ72l0IR6r6GjHNzLtLseTWjaHoxCyHFI6u4Sf9bLT zEqCAJOf7OT3PAnKi2LUe6AcpbvmdsoAhaELXUjlROQ1AXqZ5yewjCWi/FXL+NwPl/tz6E0T9jid HixxwuxfMSXIG2TuQVqSHBwWkIoCpC4Vmisp6VO7ELiAUVNAL8XpVW8aTq1yU5fJu06XyvlOJ7aT MmR1p1gVwzsvFOdKCezpVuH6zaTg857DIx7Xuoa8qS2JSY6snMUAl6jrfclcZQNBmMKHUcX+Klaj 3uOo2jL6NguoDZNiCuktsyQUk2oApReZQGfrdR6XvpRf0IRPTAImMZtiNZg67SUCWxuoew2qLpkz kYSMqgGINDWa4polNRNVS1M2k7jNdJCDxJVc5a41ueFa7nO9AMK+Tpco07XudZkkrkkaBq1jNet3 c9ddxGBiDClYa3FIy9rWqhenccUJH+AbX7gOcj1yGhiTqJlcZ/KWC1Cl5UqIS0kRlE0EIgDBgRE8 2cVitAEMbuxFxfc98WGSfJYN6RfSEF81nGGzncUIaPfGDNI2Sqr2m2lq+RegvrGXcQLspUOFOVug HuiYkiKq1XorTR03pHIKyRNwLdaviYj/yZJlM/KRkZzkJJeLyU128pOh3OQWTJlcU54kRI7rJbE1 k8pMrnILJknlKUeZzOcKAXfFqxjwmjXNicHEC0JQruI6E7rSTJQjsZtnPT/LOAj15k3ty8gwADdR Uf1vU+GDvsGhT6InYOaTCxzpAiM4wRVo8IIdO2HxNTjCkaXwuuQ2N5mcgQ99MDUf1CAGLExkfZ/N gEUuEOIRAy6mp9WA/uI3FBWvuKWsfRwBF7dLAMr2pwU1ElsI+Uwe59fOhkvUoAErFC5k4Aptw6QF PpBtbWebyCDINqUpfTZwh2Dc5Ka0Yctt4MOWDcpgRoF5j0tYJhtWyQc2N7i9/YELgOCS/pdEmyiV YM42d2bNuGuzNN5MJlBTJNTnMzLZojxniUt0zmQ+gZgxLuYsb/y4dfb4YCdO3PjUjeTcucIV4nUm CsSZyRCJKCVPEGkQSBrcaPMkpiX8No1uMm3dm/Ao5WZKL5C6Ep7whCb6oIYucFZNnpUIrGU9a1nW OiZIRXGQcZkvX8M22MDM6n4oN5QZ09hIoPMNGtyjEjsTOlH+EcpIoy1ki1w7k9fe9gf4Heu7a/vA 30bwve2N78P+3dyTtvfDvfzu80LUSzAnG7mNPHhK+73ve8/kpj8Q8INDpuC7iszB32xpn1fA2kQ2 fbfNrGTEW7ywSD7wBQAPeMHLft2R/6b97I887tef/vRmSml4gK+RBiggAQlQwPGRrwAGMKACIGj5 2rMjYEnbHt1n6zRHM3p5UEp49KSncNsw0AJBWCIT0qgGOMDhiT6sYemsTunT1RV1qcO0vya+tdUH hPX+4avXWP114q5KP9JgIYbCWvSjSnCCqNDOIdSO7SrH7aCNf0rr1Xju8jBp78Rk7/gu3/5O8DyQ 8A7M8JCs5RSPJtAjXBrP8SAv8sCN8vJt27AtfGyuATJP4A4unXKn84AmvNos4RrA5+iusnhPTAhP 9VhOzorr8VyP28INwfju7jjQ28DNwDSwCjXw2jSqohxA+LiQC5Mv+Yqv+BDgAMjwAP/CMAEY4AdZ rgXWKj0oZ5nKZfpkjsAoSvtuDnwi68Eyiue8D27WBQNeABO84R7sQR/6wR6qoQ/EIAuYbn2uQCLO JtaEYRmIApcksLQCxv5uTSUKZygGLSgGIktGAnFIouvcCoFI8RRvQhAGcH8GZJAC6SRg0T3uZ+2e jZokMAIpB6Ze7cHa5u6wzfL8DtskTwoPzAJmLwQ7UATpreXMawwyTL7SIINSwPEGL/dkL9vM7QMu sCOwraL+rQEsQPO06DGYqBx9hYsiozMcI4vQkTHUER7NETIugQU8awK+Q7KEEAO40fSu0cgwYAWP 8OJ2C8AoyfUQbN8Cb/I+IASucPb/qBAGr1ADKUv7NsnmGKwBlk/40JABlC8Mia/4DsAAxnAMzzAN kbFczCsN1GANfuILJinmQkAOByzcMAmyQIkPw0cnQykLFU5uWIAZ7IEf+GEf9qEfroEPxKD9OIIC HjEDLMuVKDEoLFEoECJwvqBObE0l8s8T9+dw+q8UH8YnuC4VzbKnQlHFAKSqKmbQgEu6woUlapGq cNEqKadw8HLaPKKxvhEYHxLvOJDcADPBPlD3ZvLw2C3xaIIPKuETHLMP+CANxmXeihDyZk8D1UWy drIBKsAIkugclWgeRTMdR5MxePAdm6g0U3Mx6rHn8HGUrs2y+o3I0OXIYG/djnCS/7jAFr0AzOaN 3siNCIux7w5r2zoQ3wTTL4Vx20IpCP9N59amwRRA+Jbv+DrSOosvJBNgJBGgO80QJH/Q+djQDPSg 1CITJuNwJuWw8PjtJhuLJz9p9MIDlORFXeSmBSThHvqBKPlBH6xBEZnSO+Dm6dbFlURs/uiPlmyp E90yKCBGFFksQlvsJfslPgrymbKy0J6KvxzwAf2j7dpyAi9ibSpqbbjxAq1wMPtuXT5wAw/v3HBT 3WbyyMoFzLxADzzhGr5hHtKvEtBAklQQMdFN8CjP35wzIyzACA5j85i0SSOBBTrpBzNTH4Vwe7oN 9owwN6WJ/+rnS5Is7wxLRQvzA/8jMkUtLxixsEShM226cPk88gvPUCQRgCTH8Duzk/nE0wvQgBI0 QRP44AwkKT1pcubC9MEeTPvSJue6b3zIxwIw4AT8YBvmwR7sgUc1YQ0WkenAgwKYLgNBAkETFH9O rBPvMpce1A0hVEK3rk2mDQNQrpRKbnBgwuo40QEbNH6eLdcEBCZfzdpQ9ESDETCfUEy5UVhd0AMj T/UOK9KkLAW+gBKsYSj5oR++QRMkMyZ/EzeHlEgB00iD0NKSdEmbdFzT7EkzwpPQhu6G8EqxtGwC kkblbOhYEr42rF+y50vFhPZub0xn7gXNFE37Uk0nbC/xhgurEwzjdDu5s07NkPj/0rD5TiAFyFMT jo4PwiB7mIwmae4CDDULBXYCcu6T9vL7OkJuxuASriFlr0H92C+V7oZTh0wSmcFi2NIuGSlBtbLq cK1iSjWXfNYNVVW9HscgUODkjHYCjDZpT85Vl5YiNiADXqK/oorQatYt5QfuhExAnZPusm1dtm3f XLBYcQ9ZCUxZ1XMg3+0LcHQoj/IbKuFaMRbdEJJbtc1bsRBclZRc9ba7zDU85i4I15XIkOxd4RUF vCDDTA0y1SAMuOA3bVM4h5Nf743mzLRr0VQz15STvg9NDFYjlA/5ElZhu9M77fRhQSAFBKExc9QT lA5jyYYm6fADOtaj7rYn+fLa/8oEA1CAEBzTMTUh1RjxaV+2U2UWQJ7NeOEO2naVTnJ2VndW/352 /4A2aCOUaJMWI5Q2aZm2aZ9WPuiEagFrV692eXv154LQcr9WIScPGceWbGcUIVcPCfW0EnSURz1B D1AQ5uSWBdet8vxV37bnWzOiM8V1bw04aPoWI/4WcIcQXdo19Qr3cPtAEzrhE5DuDO41ySBX8oi1 f1+U0tStcrv2RE+URMXnIkOpYDUiDVcYYc+QDOnUJO+UARwABFjgEa4B/b6BdbsAW193PQ9Tdju2 +yxSJ1GYUckkA8zg1ExtEU9qeFmNHz8VAgWkit1ymqguPgJmLXVRfn7Ci/+Gev99rU2KNnuzFwM2 II3VOI038X6+F8gisIqvcldXrTxIdGu/0WsBWH2dkEWT0X3rDTedzOUmtnd9NKKaDDj5F9+AEY8n izPz9oAluVcSGB8XODZnUzYRk3AR75T04BNyNGU14QywQAlzb9+21X1BEMFqcjnPdGtPOCc5d4U9 F/k8MnRHsgy/E/k483QLARwmdR5+FyZhTmMLzMiEeIg1bSflk5PapjxIKQVK7dTEACboBoq7I8RG i366cnml9l9mdYurOHnZ0hOzLizF+KaIdnvh5V3WeI03sanYzopr9i4BJCLsmEqptB9Pz0WJszAX OUvNLX4J0nBJLXHTgCEgQgX/w+RLC9NyYXmAI3mSKXpFHmEFgK8PGbhKNdnIHjgxTykNPiGHweEa NCEMStmUDatdcU8gk/UwQzA5YRBNtY1Kv3UnZVmFhe/4li9O7XROdblh0bCXxS+HvwEcRpmYM9aY jxlRZ1dgd64C4QaJKSADSI1es+Bp1ac+G1GKD3R+LDF8sbKkZCqcdy1E52fE0hmr1vldSg5q2Rie ZeLQ3pguxZd+jpdX85nubLobM9BYAZN9x1RfFRmmCfribPQM1EANEvoh5E17XpqRd6+Rg1CiC7ii MVsxHoEFMrqvQY2jUa9sPprlTukMis7oPIEP0FOlg9ODy01I5RaEy1TbthZY/2/6hPkw+LxQ+Xr6 hcMQqMswO5WPM+NsDEB5ZZUSJjFWY9VzwDh2dn8Op3cufNRlRMuHAjDgcBe7miciitcHZrN5Ev8G USxx1waNK7MSPqwuqvA6rDMLX8zSQemnIMKgTcTSUHzCILggjSdCq/1bjWfq/jKRJZzqqcB3pARN QPTSAnGXa0f4bCTy9ZAxlRdS9yQPOBFTBZ7MyjAsDRj3yp7sH/fV3vBO77LNV7GQBicaNFk8HldT HkkzxmF8xl88MSTBHvHGktM1NjFACAEYXXDzNuH14m40cfsgDbAgbjGcpZHz3JKVlentf60NWFGc wmQwhUlPPDjTYKvzTc8wJP9hmAy1MzvDMwRS4JMtGFMfQn/Xc/Cc+zmn++fUppkV+I7lBYkdFQUO Qgw2oOHIY7IwoKtD4FNdqirFur8KTb2t7qx10UHXWutGa7Tcbr/f+SXeWVbvx9B4C6rmWX6s9rzL 945rm7ZN3Djbsxj39aWNUEg3/N32NDKXyXVZu8IFr9TxGEknOrN1XRoiAaM1os5l0JEtzDaXDAm/ QA3oVblZOzhdb3+NbMDgN/doO48dma/jPJN0WyPflLfHPAzJUIa/fDqbL86W2NQ4zLHnDYhtz6kN tXbnPIX3uiNE6bqzeySquZ3XBwNaojtAYIpjqStxFdHT+/4W3dPPmtcenbX/MstvKP3SLz1/aNX+ rM6N+Utqb3FqE4WzRlTU8ZjbIBwK846P/7kyYfvZZfTh0BYFzGCa/xTdE5nZKfz1iFPvqt2yd13X HaPXNfLXN55Eq7yyKILYR7DluECxN+whHPeUBTrJahKEc+9Xqx2WczKnM8JNPXL4QPeFy7BOw13c GzJiy1O1HZvNB3XSENWTNinn3N2zUng+Se87rvsEyiC+VE14U+4i9D2K+/2rBc3tePbtBH6zlgoL 2BtRDr5/Ep569Ts+5Pqo3JipVsJ5I95+kAq1mJfT26/nOX7HAfZrv80fJdvJB1r1Tp7dctNw06BP ka6x5W2lWXBbRX7a7zYc/pM0Em5+1y9a21lY+IBvk4Bv4YR+yB2t6AsC6ZPeXTl56d/XCC9p2j07 TdndiAuWhW05641PJA8AuLu+ASjgsC5u5ZVu7NOduQcMqrcv2C8PH+XTkn3eTDDgzBNX6TjL/cBD 3zUAXTBg7xslrPOvXwwNILpg0aABi8EuX8KcWRgm4cKHC9NIjCixosWLGDNq3LhQoEGCBDcQHAjS IJcuXbgYxHKSi0uUML/InMlFQwYNXL7ARDhTYAYMFCoIrWChqNGjSD9cuPChKYinFi48nUq1aogQ U69q1Sri6dYTYMGiQPGFkidPnTz1OeNlLIqwJ65e2KpVatWlFyw0/XB0/miFBg0sGIkkrbDhw4gT K17MuLHjx5AfrWiQIAEDBYABT6BAYcIEoZ47T4i69CqGuV/hktXDpw+fMFzehqVbemtVEHSx4qab FUTTvkKNDhXut8JnoQ0cWOAsOnNmBZcVSK9cWQH1AwgMHKDOnUEDCrhPpNDj+kts2XHjhhDBXsRV 97jzFp/vtyhoz8fxcx7KvAJzCieUoYkmlfTRhxhZ2ITBgldwNkEGAy2IAQjCMAMRRApdGIZCG5qH UEokrdTFhg+ReCFFaaC40YostrjQFyuRVFKMIqKkEksn7TTTTB3KhMJNXDQUU08RBlUcUhYQZVRe eDH1AQhLFeXUVE/e/uZVbrztppVqXKShyTXzzAOOJ2mYNxZccvF21VNTLsXmXnz1NUFgg0Fm5514 5skYJ4lJ1sBlfzagH3Oh/TfaUhiYhlpqJ6DgRRoGGqjGF2eClduiWlmVJVVrUgUncfYNF6pQ+w31 maFzOgcYdNJNx9112lW2XXXeVRCeGQWu9UVb6HHFXqZeXUCfqccFl6RxxuGn33HL7dcsBixU4ok1 13iiiRo+/WQohBpISKGFJ5qIIYkN5QhiQSKKK+6FFp3RYorvxtvuGTBikcVHI7FE40k6ufQSSjrt mNCGPZqXE7078eQTUBQca2xfSDbpG5tRTVlVlZwCm9uVdIlVljXz/vTTjz7XvHYemiFgCuzFcO6F pHF0EqbnzDTXXBif0uCcM59+YpaZspsNullneCUawmkdh4WCGXx84rQmfaQR22xb4aWlbrhltbKV VH4KsbHB8WfkZ4UCrWoDraZt3avYzcoddA3YGkILhDytRhi8Ur3er+tR5TCyyeJXn8NAA01qf8+2 4Qk434jpCR9iYLHBTwx3lkFNRotQ4YlnqMsQuR7aOFCMI2bYuensVuSui/K2/qK9HsXYEukfqvTv kDIRrLvuL+qY0MLMISk8X3xZPWXxFnOdMdZZYukxJdfYww8/JFNyxslUq9zpbVHGGSdScwoms83k l9+YzoZxwvNk/j4LCrRoQyuLqNELJt3oo19eo/8nfFAqG21u0hLXbKM8qDRFSRAjjn/4QywHxG9O njmb2l7FnbYdwG0JgJutTjAGTuhPLfSqlKX25h7d6GZUgHOQZ4iiJGIVTlmECg4FQkCIa4DDHvqY h1oQpKDKXeFy3UqU5pbBOYec7kW681C/RmeS0pXoC5wLg+pWh4aMVBFeFUGDijpnxS6mQSE6+RCN xFgjIeEIJWEAGI8G5rneqVEmC2sWUhqGJDqSpnsuswAITrMUp+TlNljB0m6udAItNQoFZ5AWOMI0 JpOJsJBQ2h7WONWkvCynjuGr080Ug770cfKTienkJkMJSsTg/0x96svZYVApCfY5J1mi4UyzlGWB BaGmfoYUSxj0sLh52GMe17jE9d6SKbmg5koZ41ggk/kUS/7Gjkcxkn+C0jC/RNABgRPcc1qVwbVR x5sWRMCrMDPDFgiiG/awxzcqMamphaCQvoJPpo6Vn/tYYIX2ued9QpPN0CznVJxpwSU8ASbH9SEM WZjcgmT5IMzVr0Ip0hC5Jkowg4kOXSYZ2Oc4t7qIcmQiKHrIvFQXLw6J4aRi6EIWVroT2sHRXzwR GBsneqEwvhF4siSKLIVXlCg1KY+VdBKU7MK8Ym5sN3DxWBr4oIlPnOUTrinT1LK3Ne5Vkqf/jJn5 tgqZVC7mlP6ovBkqUdmz9i1raCrET1T4KCH7kYUPBP3GL6+hCakRE4BYMqHWsqapNTHJksIrjiz7 YyrAwDKCzmGAYtNGwesg4IIYtMx3QpCCR8xDH7/0xKT+R5f2dGWe9HTfCmGYpH+O9oEwdNDhXlAJ p34QapGjXOUehAXKZUBz4Nro7nbbIXPdSHYaPSJHQequjhI3dRA57kRK2jmUnjRhMDmjwmAKx5jm jmActakacWokrN4xqFbrqcSoQlRmGjVli1KNF6CohtYMyDVqoFdbWjCbSFbVLuCtI6G0usryiZKr oATrWAdMVvZJRzMwDM1Zv2tLt36haQQFx5iu1YVe1WVRmv5aXlU79dfA0mc/McRP3LKZGe8odrGu aixkL/iqWoVgDJgI0zfGVCbOBnJvfRvkBVQo2rgJzllpfaE//3m4MVCiDwN6L7Z6uC0uUG49myvR 53hbUYuCaF9GFC7njmvciJ5IuV5O7rtM6tydPFcg5qpuShQmU94VMWFwrC3DkPIw4VkyqHGSitWa CSVAbuzCW1Kao6TYXj4YWg1f9AL24mLfSTYTvID9AAJnORpNerJm/wWwWD1J4E4PuGeKRfBZ4eeg O0pIex5jqlPPArU0VFhv6OWr1iZ5VGQ2kzQeFux/OoMq+CF2VdA5sTdVvOIWCyoELyjEWQj6ic2O sFN8Q/9mUYSsrLA1y9fVHlpROnO4E3jBDBJRg7jXkNCF/kcBEHoybkuUIexSWSa3oxFLjIjd4Ya5 yxz98r1F2iIyOzelJw1DSuFsU3NZd6aog4h2FSbn4FXTP95dkpSAGsBHV3zWkpQLUlWDgpwoJNwp agiveoWX7U0FLy17mVEcFDdNglXT5AvrKMXq6Zqrz08ZFHWQ33eo+Z3maldpFNOQXIn38qHGVHt0 Xk2oMUdPkqc7LdWueQ7BnW8z2JepTjcr+FgWdyduIBCPGfTgNP5d79nLIy89C+fAzZBKSdgWMVpj +B8M3KQLzi135TiDbjkv6FsYOh2VkxhvLLe7jfzWN5f+8834MTf33wAXg8Chq2aCI3xdCocuShS0 62tX07vO1EueA1hJKxGwee9M6li8sF7T7WrkaCq5o0nvNax2puWE8eqe0JdpTvZelZdOXyrHujOb G18y1sEM1cumYFPb8paJut8Z2hsp+IbwBBlQj1yMZptiWqWAIHjZNHVqJEJRW1BBlmCKGyurYr8t bqhBARpaE9W2bHj2wnJA2389qJz2831TN03MYXcFEV0bsHd8l27eEmVTNniE51uGxxDBZToft2/z wnjJtWX99nj/hhKSN3A7ISSaxyO7lV2a1wWcR03/wUKTZmc/JSU+5SZ75meClEscx3o7wnpugTLh J0D/Fmc83uUXhlUnukdKOyN8X8V7OlOEMwd8R0hzxheFN6cCaOMz1LZziHIBz6eFgTZoaVBoh0Yv J4NXS2dyu2EXVgJYoDJL00RtIvYdynI2VRhs7Nd+Xvc2CjAB8Td2hqYHbHFXRTV7SaJ/DqAqqVUq b/hCU7drFECAGJWChNJ3sgV47OaADxhdEdg5uRMuH6d4+4aBGsgi/oZSHviBCSN5CwdHJLg7Jqh5 DVd+pVJnR6GGPoUUfwVeXENUTRd0qtdxXMB6iraDKFM8K8MUe/YbWDUUQxgJxNeEXqV7AyZ8SwiN Seh7UCiFx0eFByZah4htkFY/Qbd6UBRuiKaJ2FM1/5iCcVtzcXchfr22c4Ujar/mHIy1flx3h9/E AMpxFS3gBVeUIm2hfSlDQCd3LPr3M4KiGap1Hz+jiITCiI14EyABiQ4iiQtIRJV4eQ1RZS4RRvvi cRKIefTSiVI2LwnHEFGUOv9oEVdEZgJ3ZgEHgh74OzbCZte1kfXWOQ9hUwWnAQfoMLFIKtEkPKeh FKWlhXj2Xc3kaFljTIPEi2HRAm4xlfTFg7KXKaWXMt+zbQ/TGYVYAYMRVjZXfKoUjcV3Sk/4jAQm jcO3lp12lmJJYJKgAsmnfP0EYrHUMHzkc1woFh0HBll2Oi5RKTdWG9vDhUczF3ymhaYXfuBzOKpl fv+nlSqAsX+IVYj0WJfDtjbY8VgZlABuIx1EEX0pYAadYwY6qB6DlIv0hJkJOQGYCUPJ0pDZ5HBz 1zARmQG6mQEKZSgVYJEPlVuCZ4kNYWW/tRIgKXj59olTBIoY6HgvWWalKJN4tyEwYXA7UoJvBl01 oS0AxW3DAU08xSRHiWfFM4OPtjyGaT+HNJVJJZBMohv4hRd3tJXCsW23h3tjyZZmeZZl+ZbYGKAC OlaPQJfd5BwOWSjipYUSYjSC9osyNZjooX3rWRuJMlRzEUBPsmd6Fk3S9I7LpxncGIeAER2M9ZkU lB2QRUF5WEvv5CjrpYMoUGvcE1oISZluOKK3WSj/u7YguylbU6cAHTeJDLg7GsmR5iJvyVlvmMec n+icnrhc7aIQkAeCpGhm1nmC2cmKJ7JwNsJ5kFksh2OLEQNYQbWgeBRUGbOeufGebkobUZGeTYFy URJxLKefA9qMNAeXcFmEefqnnVaglLGN7jOiDlJqTdKggeaXvwiMirZo8IkpDJooeoaGilmplQol wAEakolacvep8ViianOibNN1K1oZinUoqYcCKSCjAqlxfFUleQE/DVk4xoFtokVq5nerc9egEmIo nSGkfjchRZpEDghvSbovTpST6+KkUAqKLkIwkGdmJ6h5t/NGOLlbJ1gTG9Agt3qoK6RTEUefaHpn /+YJaVpylW3qps8Gp6hBehLDFHaan2DJjAF6jXvKp4C6r9hYoHV5Nt2IqEXDR4vanv4ioY+0FeCI XqX3rhyKi5uaYBIbhyQaqmiDYmvDTRRkQadqGfoYFbw4lYAIq2siq5SGo7bahhRbOAEIgJzRoFPn GcJKpLlFnEZaeLKzrEx6eFKWeOECihySk/cGUhtSpVY6cGc2IjqCZgRniTrSISjYrZK5grJYpqex JOSKa0iZF0rBoDKIjlKxdG/aPHe2hZBWp4F1p/XKr2zbtvzqrwdqiP1HATvWMIlqS9yXen4pshPa rpPKsPGqpmerhp2alytrNvJImVVootUxbLBiqv9etx3eQRpQiTJHI5/GhF/NUavoN1rwqKMxm1YQ OboTMLMLCC67daQ9ohKYmLNJ5BC81YAmYrOsGLuhGHLROa1XeqVphEZplCNbyqWZh3BR2yC+RrUC KJ5YuxR2C2n1WUl85BU/ZzVluCV5VZBrtZdnm4xtuIxu+73gK4Vw2ypyuyy42bw+t7B6u7fCaLmJ ORcN2rA/2CTfFSVwp0LwOI8kimAJGShYh2J1CJoIALmzsh2YcUeV+6pMB7jhBxoIGkHZ5qluaH6L OLqoYrp/VyHGuooDIzAgclFjJFMJQYKqK7tB627MyqUrcjpGG3lI+1xJq2YCY7vDuzsCcYC36Zv/ wYOfysu8y9tT39W1A0uwF+Ym1Vu9P/i+lXSeakhnDImn4RvFUYwJ6sMIBkq+D+yym3G3bcWe7CqQ icJWYiyDVgNpc0qfutap+1uobLzGwsYq9sg2B2AAkCsrGXQo2Zu3l0JUEnMsAJu4bpiIPDonQWbB kmm6jFkhIrzIYRRG/6ISGMUSPFGcbIRwyqllGzVl7DYuFaUiGMHCVTqdpTjKvos7Nym8vXPKUTtb hqy8ULe8g1tJiRnGmQu/pnHEeSXLZypeEde9UCzFwMyvmDDMVGzF/5rFWky3k7qXXRwC2ceuWHJq XhvG0xvLfSTECpS/88jG3PyGJWqiGhvAc+x+/980GqThq7nxfD6oqUHxx4BsmYc7yMkBj4aMHzOL KB8gDMuQO9mJEJRcMP2SEyjxkQinkfSWIYGpiZWokwlXySOikxhRRaAseXgHk71b0WgEgtYZMNl5 eTrZOQCDkzohZ55XahZcR7gmS9pbNOBVzVlIqbUBfUYDdH6lFQ0qXmxVi7bnofshKEVgr3wCoG45 1NEo1EVN1MRn1OpDxTtDzFTcCFfsM7EZwbR0GvHrc5cbSO9J01Ytxl0dvWe7l3qBKMSxGaZF1ZQ5 1SW6f85hGdIBzo3lTQN8QQRsGRAXVOqbMtE7FROCF6Lhms4x1Z6BTdtciKkVOCr0f2RzVr+JAv9y FiUaXDD/TMIdfDvHOW+0y7NHFFE7izrqkkQIwW+fbJ27+8IwAZMafdFtpp0MAROg7ZMIeKiG7F2y hLbWHIMMWsvzg5ReTcTcJ9bfVb9NfJ/EcacN8NPBnNz7SsxVHNXlS20L+ny+mtdasZumMd1DPKlq 2mdXRb+MGMjezL9o02PPgbHhzH5zvWJel4c7tSTxqygPW6mba4iAHN6vmVoTC97KogAF8RNamM/M 8LodfV1rZNmGZ6xUhpIbxdmz29mVCLWmoxHNVdGm7YGnbaWufdHWleAlkuFQC9utPLqXJDycQb/C fduVWr9Xrd0l57wnbuK2Zyr56QBFwAiYEAn/kYAJl7DjTt3jPv7jQB7kQj7kRE7kg0ACx/zcheN8 va2o0YzdZK3dK721Q4Wh5urXMRs0gpwqivsc3Fxi4Jx84kzAsyId2jaLXrvbg2taAMvl8djlbs58 +k1t/P3YTBHZPULJI9zB/GzgwPW6g5fJJMLgJ/zgD16cqXMRp0PhpIzRjo53ru3I/OKAGOLhQgLi IS7iEoefHUafaW7Ntwa9WciX1lyu+WV7eEmZHwADRtDqrv7qbBDrsj7rtF7rtn7ruB7rbaDrbdDr vv7rwB7sv+4Hv24EFqCZbX6452xLeTzdbVU/zk6/LI7inu7dWY64/CeHyqd+rbJYKKp1FaTe/+vN 3nY25dY833I4ouleqwr2QvwbzzJLEP595wFeZULCz3xenKwrOn9eUZR+RDk5nCnc4K+b6FOaRqR4 pY6e8FYaRhqAAv4c6E8U0h9+gPgLrjxa0ju8cnSL5tS+vXh9t4lKxlcb3NUeFR4GkaliHZexWHPo M/+bWCc28zTvHev+GSX6zTZfYuue7m44m2gjWYTK7kv+6cqcvorq7NGexx9/VSmNKhab7RLUv6IK x+ddh+K+ogeGVSBv5XixzXKIWj1/VstSqKDq7uhmEzumF3gu0v58kwR+EPyOnKWT5wJP8AEf6G6W 4FJ6bwTD6I9+tBVO0TXRcarb0BRvRhYfd/+HqPEk3vEef6aDa7bf2PQvjvLc24a0uioBbIcrClnZ YQCiP8cDLPqin96PNcCeCZqkb/qm33V0TNdZL+6db8ei+RdDX9+eUa7CrfS+H79rlZT5Za6Pr8b8 h7LaTvVzGOa1z/oYtN7mjKamHrj0G0E7H/a+5vO5qqsQ1P36nfaVA+AIHjAdYu9LdJ3yVvfZGrus ffe8U7uxK6ULYQb0bwa5A/hJe7QX7oFpVFuXAxBfvoQhWNDgGYRnvnRhWHAhlg0YKEycUNFixYkZ NU600LHjBQsZP1q4UNIkyZIoTZrEsLJkS5cxY6pc6dHjSZs2OVbgSdFiA6BAGTBQUNRoAqT+SZUi PZDgwAEECJ5KhUr16VWsTbNmtbr1KlOtX5caNcoggQKgH0A0KBrU7cUJQW+elPkSw128eWFeuJuS L0u/dUGOzBnS58UGcCsGjeuWAVC0i4OSLYpUwVLMCaKKfYr0cQXDHSnYrLkShMsPFhY/bjDUbWLF r2VbzIgYtmLccRVo0NCSwoUPwpgZHBhmYfHixgcK5MKFYRcuWKRP75Lc4HWCZ7An1I7d+/eCZ9Kk EU/ezHn0AxmKEbO+/frn7OO/F7OQi4YMXASC567weUGGsOhNo4tq2+hA0gzj6KOaVGJQsAdLk3Cw 1FZKrTCaMAyNpwooquCnyYhSYKgESMz+bKmppurKq61WxMrFrZwKS6ykKBvRLLQU+IAEttCaDa7E fnNJSLtY0guDEPpSsrQjZaJpMJc8ogCj3GyTrTXWImsMsh6LwrHGzA4wwACvLKuow4lAI40ukGIC ITXJhpKTtSCtvJKxCWpDLDegYtuttwtGC24Z4hzaD7n9jItuIeimwyK66grtzqEwEJLUUoKso/Qg 464TD43xzDtvjPPU60KMMNx7jtFT32P11IcE1A+57SrV7rkuMg0wIgWnzNOwPEU6cLReOTJWysL+ igmmB5k9idghGUQ2QgwwJDajDg3jKVgHHBNRTsvOUuoqBMBikVyvVpQKRhc160xGqMb+uuzGG5Fi a0e2Guj2rQkquC1Iw+hqqckj++ILL2WLTBiwmEaLcrQpfe0Xt31f23cooxzYMuMuj6pMqcuQskoq GS1DE8E2UxKy2ZLgrKjbx+TE86KK3aoZI9Vue5nfCboFUd8EMuiNpI6EK1S5Qw1VDlKGonMUi0g9 /W7S8DDVlD/vygtVIYG6FghXVcGGT+z3uni0ukRrBRBXVjWIiMBg9SRw2IwCXVC0ZNeEMsonUx6s 75xwivDvlHRKE26KZKNMxLLGbcrcFOHF6qzLzrU8Rhqdkpcsmcuq4IN8X6sybgZ/00tZJREu0mAj oxSM8Jn05PPOoORsyy0bcw85s83+HmfKTLodFnzwllWLE8sfJbuzsbjjsvNKyXQLemiQghsuU0SX S9TrL5g2+2mok9uPak49tXpqqbcjrzxLE+pUbPjjg7/sVdNOnyCw235bYowQpyh4iA0rQTghIN+G JyHCaEhvf9MQtui2JSw95kbfmtOJHGcusJylAZLz3eUe967MJWVOnOtcjybDsyrdzW4He93BDHa6 ZRXQgHkTTbBmdyU6hSgyr+EcZSzolN75LilBotuTFoiTnyHPNX1KYu1EZ8PoLY8xfWJL0PZHAesd rWtIQ9rXvAc+54hvIOQLz3bOV6n7ZSdr3BkPQtbHtfjFcX7wSxp4UhU/t0mEf/3++x8A78ZHiAWu cC0cZOH65jdDaqhBCizW4XxFxdqNSChzAtcPLfgueDkuhJlEEWa8RElJjtBH87rdzP5FG46UZCKE VFjrVkKkBiFykQyU3U+a+Bo60aktEMyRl47iyXEZwCqeRGXE8PagufBNeT7CGAohOEmeSYx2OlOc FfVIgQoYTXvb9Br2vAi1AD0tjHZMY3bOSD50krE/b3zj17LwznfiCp5yxJV0xHYc+61NbPfZwBX6 GDE/AlQkHeHjMSN0RNgh8pB1WZMgGZhABZ0Mm9tinrdqRxRKjjBMQkQRR81iSUyeyCwZJcqdSlrF Ur4FT7fRyGBW9pKVNEkmezH/okNrSktsxuZ504RMDiGju92dSExZAZmWbKgRBdZlSrKR2cx+clLo Ucl5z1zMTouSgbeFJIveNA7attjFRj0HjGgrZxnNuKlyktFW/UkIee7IkHnKM55x1BU469dN78SP n/4EKCANFDyb9G9ayAwcMg0Zy4QmsrA8mYtHGEss0RirNhQ1KUkt+1EUlatES8GsZ0zUWUt6dqSW 9dGdRkm50kaVeXUDifDqAsMCGmyhfkvmQ6W0RyAp75m4u1FiJgPUj1kmqAkg0+RAVidfIShZEloq Ln3qJ5+qNE9AEp1voXfVDOjRAlvFXlfx6l3m2HWsabta+Q5iNeuUF41mXN8b/t0nV7HNtVVgMwjb 1KtGNL4KV3n0icQEGrdhMZagwVKTIodXWwQnFUMMFHACIZuTAFJ0pxe9LCU5WbJKglYpFczMR01U ogqPkHanTanyptingQZqtqycyWxRskDSzG2PPA1dJCUpmREBV1zh0mQIjQrA0LiWQoHabWvQwprY 8PSG0i3yBLB7zWwOB1HKiZT4vPpFcUZNOXZUp6W+ykW1ma+97r2VPOsH1/i8tSG6YsiX15gQ/T6H v3BDpV+LGdhg5aTBGVquKh+syKQyGDS2/TOE0/QhDm2pYjED5QQtrLmkdGZEnP3whsdVoqBilIIj zCgzL8qlKmqQmk9E8d2E/vy6vcQ01adO2YsBFxK8bWTCjhmxJHWo40tOTog/DuiChkcBHJbUNVZK 7Y/4R+PrKiAD2cWWMAiF1699lXuNso84w8dV7JR3jF5OL62yXSvtfMEM7vPPc7IAzq7Bsc2uihSc 8bnFL3DnvP6B90LyqKALhCAEIIgsUjkCAhHoe6B5LrSGWiItWIfGoDahqZRKE5I9K3A0j+03hyrg AJ9dFGagJGm9wqWAppCIAQ6wAAlUoAIRgGACmu6sjkqwApSDoAKUw1iOO36li9WuW6QEisae+SFb BlA0oGF1qhkGGJj42lkuHRxSY62YmgUl6mipGVl4SEobZSZkXOGoAoCO/8oPIUiFCQ9JUBLQU4yd /V89aqq+eAb0E0a959U9y7KvOQFtfpl7yEFbWMP5tFyBmZzmC3c+r0PetMEZBSdAAQq88Phxdy1A vGnO471ghrRBp/H6OU8ZMC9GgSAEDaBqK0K8dobRKwQi18TACVrAAha8YAX83ogFQnAC2L/gBSoA QZoAbOq73SQEKyD+ClI+2AuIoPjG53eyQqCCFkRfBSEACYdS+XyUh6AwjE3+yVFuAQ7tyyKfAwG/ /TXJED96ThVQvvFVsAIWrOADJHUACWDvfeKDLv1tp935f3q70ZmquIGpFXsd4gkJ2CGahlLA2qsl E6s1T8uXYsO1segoGv95HAWgDQ30K2yxiQJ7pJ+yHR95QBNKnsRBthrzrSdrtuvRO+7Rla+xp7+b DufAtsFLn+MwFDFas+6ZFXEDFS+wgKLIEwzIgBa4vHFTCBS4gDxZtgw4gRQ4D9RTwkApwidkASlE A9NbPBRoDscbvfHQA/LwAsbjAss7Dy5AgRSAuROgvpIAgfczvnzzPhVoQ32DvvgTgT7iQIfBPhEQ AdcjvtybPQsAgRD4Q+hbPtgjRJQwxPeDvdxjARHAm3xzvdiDxO8jjeHTvUs0PvD7kAYADeWDxBaY vfPbvzkJuaGoAOKTucSoABDIP0qqgJebxDP5AOWbvwqDpiv5nENEORH/+ADdAMDfuD2UIzIBLEZL bIE2VKUXK4nbY8ZmrIvbOwFrpL4Fq8aTo74AGhbceI1CLD8mFArOCcUPSI3mqgyjMMecCS4R+hxh bI0OIz9sBEEmKkR9a63FcAA1WSW7QbtSeqaUQqHmsi7e+ikmqgjs0ogo6yJuejd8+h6xyrIpQ6vv KI7uYJS9izfTOxQUkIj8gDw0GIMKOIABGIAEoIgLQMLz8AIQkJEGMIkjhDwzYIG1GEIkOQFSgTwv aIGA0yMMwMIkPI8XsAArlAidfLwUiL0XEIEN8i0LUAEWKMXYG4MxkL8usQDiIzIBQolNtMoXIAOb vAkRiL8TWAHdGwMy/7jK5rO96NO3s4w9MniBFqA+ELBE6ns+tFTL3YPLUpzEQpRKtRRLa8Q9FjgB 8OuXWOTLwwxEEfAXVJSTpxiK+lsBC/iSErGA+KsAOak/mxyuBlA+ziSp1uAp9oPEqmxKYLudWFyB 6GOBMWCB6XukCbAAw1xKL4jNumQWkjBMFljKqWzDvXg+2EsB4GxDcWyT1zNO2GNGfctHb0wyWIS/ 5gwBYIMk9lu+E5AI2aBF4qtLJtyluKhMmNs38+OJc9wR+CO+6aM+iwOND3i5a6yWxuBHtRCBOszH dvyMyOIlqDqpAhHIK1lHnVlIFnRIh/Sq4winiXSUcRK8Q9meFzyDz/9rsy/gwlkxAy0sCBSYAANI yeziC518gRJwgAOICzFpANfTtxZ4gavkTAtogKdogNazxDGQPdAhicuwvSJMAbCUTXH8DWvMrhOQ PfhjxoDTN4mozfdLOeJLudcTAWg8gfZzAAQ4SQNogDo0npYaPup8geB8P90TAQY4AAaARRYgg7ls gUSEPaecURWwSrWMTTAF07WwlxYNSzWl090TwrMTAWZUAT0F0+pMDBFIAe2LRTIogzKIzanUvhDw SQd4DH7siIurMAc4RxCQzU+0OK0kg2DU1Pjr1J3ZVBXgCYzLqLmbmKDIzjbEvcG80cdMi1a8ACiU U7rUPiZlxnxrATn/jc0UaMZIdU5YXcvfPEwWDdbn9NUxAM66jFRkrUTY5ETZHJK++gmtVFaTuEsq ZU/8fFSTeM72Qzndm76a+ACphLnYQ0znsT2AQ0swtcoTeJMPAI13XURItM7k6ghcJD7jbIElBQqK wMVrTJIpqbno0pmfYZzUsrqrWzaGzLt6kzyv6TsZ/B4HJastKjxW6ZrmMENxM4My0MKu6VAFuAIN aDzj1FA0MIMQSFFgQ4oJwABmhYHZS4ABOICJ2KAEmABYBdMVKEkDUACSmJKoxMPYk78yVQAhGT7e i1MyIEQnO4sLeD3jA1Q7Lb+4ODtBhTmUQ0sW+ABS6lmUY4CTHAAD/6CAuiSJfGw9SPzVU02MqLTJ BojPFbDKtTRFQ5XEs7M/Nd3TFFiLqFTaA2DFv93TSYxUFWgAqZgAZv1b2bzDFijJBABUqVxUY53K 6GNCOKxXdKXO/BtNSsrUP1S+0j3dP0RLmMPP9UTd083DYBTdzqwAEsDPkzM/EGgBJvwA+LNGXy2D qN23OpyABPiA4Lw92IzNk9NdtChLZrzL5H0B5rwAoChL2QTUFHDReFUBJ2uAELjE14NEFw1cf6kA qWTO8I2+UqxDJgQS9mNepdDKRRTEw3SY5gvf+IPEE4gLCjDEUcTXqaQAkDs7XGTK/GXGmDVT9gvL MaDK7WRCdwnN1/9r1uiDCeIdEwmW3u3cCMsIRZrALRwTkVsbyJ+C2AN9wWmr2BgEJ6cBPAUViPRg lUw5Ab5wPPRIve6hgDGZWSKrWg3dgxJoigs2gAk4ie+dyw/IVKHN2QmoxjSdSxJwgAsAgTJ9Cqa9 1bmMv3qVubPQjQt4YuXN0eargB31VU6EuY7YN848Cwsoy6BFgDHBYBX4AJOUAJSUytRcSvC8S0OE v8ecTt1b3du7w81MgAUegzg8uZSzXjJNgE2VvbKMzUmEw/hbiwpg03MkgTEog77Ez+jjtz8sUwvY 5EaVxhatyxNQAdWwXQaWXk5UZfSjzPec5fSsZVu+5Vu+VJnJ1L3/dFGrdD9LPrmOwONfpcuSdACY A7Ymhk019bwUIF7jDQEnI1pmXlQzeIEL0JEVkOaisABfVVMzkOTaROPEyLc0bdT4mz3ls86i/eK1 BEu6tBuf+ADdFZM4lmDrhA3bs8ROnEq7uT0kATipTMsUwADFRMC46Fdf1t1C5F/iZQAS2MsGrhYB PjsBLlxBBdY2pACnyECQg+gX8IJgzQAIPgCPVmDXlMYkMR7qYqIRJtDfMuE0kdgIpVibho4wag4N yDIv7EIYZtmvQoENooBBRt6RNYMTOAAJSIAYFeI59FUjKAGnNIABUICSPgAVzU21ZIMgRtsijtEM hD6wHAMYGAEG/8DgfStEOWRWEgWdpiBqfQPTb51KFSABmbuMCnA9F/3D8H1ZYRoTISY+sz3bAYjK mYPjBvDVt1VLFjBRtWsAbwZa+HsBRrVMtNCcCyC+l9O9v23K1hDi73VSFwVeRl3czpiAXNTSdyaD NigDFgiBfPFmy0TtN1mBMhCERvXECWjNu4RtEHiBNtiDRr3RNuxaJhy5SzXTkvmKoVgAszBTknJu OZHuOZFufuQJ62VKtWTUBq5e2NbSyHW9RW3UGJ0+kAPvZ2WB0SODp31JMuFdII1T7u5dBRgTBhAB ugREZjRj3bsA4ipctNzvKc7oFiCBD0GLEgDWZ4W+/WZT6gs4nP892wMAVAqw58kUAavkvViUXgwo Clis67tFVrS0xg5vCq8TzAZe13yUUapmABAoARgg1BMQEo6m6ix98XdOASbkCx0+yZ7l3bUsaF9R Daru2QRAZgoWTpIIWFuqRG7skv9LrbrLgIh9tmiDQXxSs48FA8t7vOhgGhSwgJ7dgC6/bTTolCDE agtwAHuxTcr2gxUYE2AbAASYAGEcYHdugyBmagXAUliUuQoIAcomg7L+ANhGWzJpYtdLAeDVPQO3 zqtoDZ/1UeCNTebjWZ44C6i9UU5kUyEs4jJNgC9eAQeIY7RFWy0FAaVGWwZYgbWky/X0v97cTNpt ARiATdcGHVH/12sWqABhqtsSeIE92IMVmJLnjD0RUAA4RoAGsG1OrsNghUNjhuMP3dQUWFSrbAGA 81HTxmpAZL9F3QNEht7YFHPHVYF8Gz5GJVTtfczv5V54rAB26YwDWIAUWQB8r3d7t3euuwp7b4D+ BTgwfT1q3WRxT2OgeL9AmWwXJYM9YAPZJC4GgD6Dzuw5JQM2uNEKNwAHeIH9hWxXH+syCNqmUAEd BzkF2NSqNNZTvWQW4OizK5EQ2GRONz7c++5pngBXr/QbTYEW8NBTJ2LuHRMsRQAS8HjifQqNsU0V iHHYw/YTwGsBjknqhe82aG0voOg292+ObwHWJgOf39+cZYBA/hETiGbtBkZgkiFytBUBNmiDBm5G MmbaPidiDBD2nrRD7lSlX6EA571Gvr8dnwMRA6UI4dhIKoufxROaj00BJHQa6LiAp+DhNtFJQTjz M0gBgSUupj7Eb20DNjDrkhwAyK7iniXOMWADGOA9AwCAqmZCqMBqLGYDJDbJoZ1i/s0+4M54ETDR RE/rL0Z3nZzLFSgBLj59qw2JSL1ROtYKONZZ4zNJws5Z0XwK823du3VtE+2Mx7iAQC6+J2YBEgh1 tPjeoG3Nhlde1bgMFbVJpODdOa1TFhDClJfN+iYTEGDt4Y5NlTtNMgUIAwcaqFjxok2ZMmNYqABh IQSLFQ4O/lRQceHEi4RkFrLoyOLFCgsiWoAAIQJEhQMqVS5YmYBBy5ULZsZcafPmTQYWQJzw+IJF CBAhWrAgI2gPwwsKQKwo2dFiCBUZj76owICECgoNRPwUYaHCBRYJX5xc0aJBAhI/LU6YAILFQhEr xqhoIPDDiqQiT4j4OGYMyQYqHeRtcaJFCJFFWYgg4bBBBYMtDIcIIZcFCAcfSHBeESLBgNADDDhg cULwTcILT+wck+LEiQsVQKjgfIEoixYqcmMQeqEBg9l5Q5DwaNHChRBKE0RmzNR1CAoTKFy4MEEl CRgiPoB4QaYFBQUKGlCfkKCBwwpcy5jJMEH8eOkTLmAI/nE4hWsM78c3mD4BskkqnFDZBdIloEAG GVCwIAUVCMNMF1984YWEX5hxoRkSdrHhhlxgoEACV2SAAokpkIGGGVyoiIICB0xQQYsqNXCRUWic cYIC7xmQgAUWvHcgBS2QwcYKHxzAowIGGKAAchY0AJlUZLzgAAI8MmDAaDxaVlILZUhZAgM8WpDA AQLNd1hRCrFAQgXojXnkfwpcYGIZbUi5plBOvkjmeRBJpCSgAlnQQgVYhmbAVd6BZJAKFRg4QVQd WVUBZyXMRUaj5yU3FFlkHuAAV2RIGZJJ1e3GgpFKNsDoXH95dUFfIKWUwAVNNeAACWQo1FSkEcH4 VqoN/oilEGIi7EZWBRasIAKZPLGwhyBqqkDUTx95JeAH2TLAEk7d1mRTTN/e1NJ5iqXAUI9SVTtG QmOEMIEIQa2QFXp5+TQqC78Vl5V4Fb3w1xgbldHCBB/k5iSITMK10UaMVYBXCxaAWG5fuprxAkgg 4MUCBg3kiFZkXmIckb3vtuWxAh9411Fe/+Jo6AAHiHBamYEmUIJpPzYQHQVzVUvyXyE8aUF4Cqi3 gkEYA4yCdBM38FBBSi8dnkoJnBfgvx6xgMKHSqqkAAUWqPVCC/+mwHWSgCYwgQVSsZCCF14g9lvN Aj3N1NuGYVAdBkUnyGCDD3bBBQonoKDihF6YgWKF/190ccIBMU9QX2U9lYGiihicR0HkO84XKRl7 oLFCmzs2eAACSvLYk6gvkCBCoQPwSLXXFJzA7guWihC5BAbMBqNKE6iQgndG5JWqmUFJF9a8GIP0 wbZeQ8rXXCftNsYKdglk85wqRC7aaArwBZoEFBVk78IvQF+1eBZEJBdIH4laZNVkEvRCZiQYxK6X Dod54KBY4IAdqUxXXpJSCBIGr4jYJQHq8o6oFvKBJy2QdAowlgMiw4Y97MorT9tNo5SVEpW14Sgb eYEKegQRjKUgOSD4H+q6JcMZ0pBbqKPVuU7wIsnYZ1oZKQNIBqSCuiTAYKYpkEj4R4btrIBmB1AZ 2f6UAxGNmI0CnkoZXAzTgtdEaSNCK9NA3DYtxDxHVw6bWGR+8prqhMAg+crWB2CkGrL95kwn+FDV 8HKBBARKSQZzIvvUAhjrvEgEKQCPAoIDAhJkK4vKURbZdEgmzWAlI0ChQHdSUJmu7agBH4ABGcyg yajEpjqcAxQDuiOq17xmQQVKkgQkAIADrEBXXsAPCt7zIlgCoHwiYNctB2SdHA3zb64kwYO+gILo YCBBCdpbCi6kIS40oHzUMdCRFHYhL+zRigAYAJMu4KP/WAAj2KsAAl5kAAmM5m49uohfVrCtF9Vt IBeZVprGUIKJePJKarsIUfgnq7X9xlPMAYuQ2v7QhkVBD1JvQo9gmFM2EnwPfDELywcMJRAHvGUM sEPPSf4Ttuq8xXUO0AwcW4A9lDztJG103ZWO9LTFNAVqlTGIRGqWgBCMwXU4zY31PtKoMvHIVwVc CFSORTqrKUueE0gaUgsCF/wxYCmMASleRJWbqMWFbUR5TWJqhgAE1HCG4iorAkbjPoI1JzFc6WnA QoeUE6jgOhXITXjU45e/nJAFExjrXfPlMXixK2AIGQMIUGOwFvwmR5EaQxv2sJGQvEQqOhxPW7LK wZ4yxgIbq6POfqkQ58XvBe8CkUuENy+keWepgaLly16rFkR66gA5oo29MMaGv6TAijLSykMsY/8Q MthpDEx7SZs0pRRQQdA1d1xQjGZklye2KjewAU8CquSoBPTyACNAyCEn8y4wmkeWEnCAEfYAGGG+ Ek4iUhCs8kIMZgRTBPZNrKcmcAJpKrNM5RyQxkYwEdvyFLFPMgAAaLW3C5RkBBV4kVRIZ0VZDuBp berPfOJVNhV8YEwDiKUBZmSd/vBUSmOAgWMGyM6YzSY9YSHbR5Y1wNGo7iHXRWpekAaCetZsID3J KDtjeSgFRKVzCcDbv6pFlm1lM78fIVnLAlaXr6FlbbuBHQgsNRfJWrA/VttZRByQAFwVxU4baYjE DqRX0hkAAaVhmJcWktjx+EsiVVLWIkM3KhD+/Gc21qoqUyoQmbiC5CTViZUIIFM2xFhArGQtK6Rp 2JK0GsACpl0KYz+grmLtJnRAZBYDpmWeQTNGnLTxjkdfYikrMseNKlBOrCLyFbNcRyBpZAg+WSaC ErxAkmTdylMO0xC52KtjDPDYSwzG2diY5CME+xpqKeIz3cTYImnzXb4UkDpAlebZY310lUjwF6Aw GGOGsSJZD2S0lb16LnesDLq9VpH9/YuxYQOBdb4XYtmUYCOv+Q9k6GMXFk8AUf02bt/aErbrDODY CKZlG8YgTAa1JUkJoEAG9nYqEQhDF8weyQtQvIBDNaAFZjjDFzKwNthYpiBGMEIJFrCjC4D/xAIM 6F05K+dymI8AzCFBcPks4IDbng8GyzoVkGPJowp8uW0B846XVkC+3qGH6V8zCURCN6V1stMADh2s ChK9s3+JAGYWDXFBGPBhdh7pQLe5UirDjhzYvBVVMUSd17iCrmTRmwQMSN22bes2pBmLtEVqkdre siykIY2zGCtSbY/MkFuppXWs/ckLZQQRZoW4VSccGYfDVBHMDOQkINBzT53XFL6zQGJh0WSjlTTW SJf1rDehtMGc9GplMaRBTBluGfawhxUYLSSfyktdQaSZKHkp7Cu4AOoI02utWI0BmlaUywTj5ryc gPoifosBW8BI4BQnYuJpi9XU868hDlFj/rNFonmQOxL3D5GR+kuKx5CDSREoxfpzWQEj8ZFAlAB4 1E2gVMBPvAuZMAD/sQ2fHYD16Q8M+MHAhMcHKODTvIvqZFW0HFL3XRFyKMCHkYZBIITc6AeZaNce sVNwVAAMgJfeoMWRPJiqYEfD6MaAKMd/mMcBXEDGSYUmIRMtCIbdvAUbxNyhTEAKoIEyNUmV5YgI GAGRxFQIoBADAID4bAfAucVcGAGb3E7Z9RLbsE1lBAhcGA9clB2ICZpKqAf75UXoCAIZOMDaHRmV jMZA/N6/CB8M3KEEEFlKCMR5oEZRCRDXxZKQ9c4EoMo6hZj+IA1coERJyODFeUwFrBCb/wiaoGnG SThJ1byTQfidSlTVePRFCoGIWwia3iEPBLrPZDmJejgJJDEioByA4iGffUnMB/2L36lOX0DPBwRM ZyXLc+BPdhFE9vDIcKGQQ3wA/OROBs3Lk2xRWI3G7NEeTtTEWV0j6oyGwRQSBRQHCBgNr5EBlKFa QTDLzRjjkXyS83REXLFASjAAziSQS+DKvwSMyBRJc+yRSpBV8emjOT4eDKDQtf2jm5VAYUWEX7AB C/iWTdhaUYxMR7zAbtlj/bRhbv3FCxgBWQgGA3AMH50dA8DAQwqgIILRJTIFxuiKayDGj/QYWOzQ D0XSgFhRLToK6rhgw8SLZYxXaFAEBf+s0xMZAQWCVWVEBx8dgMSAUwPkirSIE1j0zZMIBsZhxGus AAwkQyIoyYeFDwic2M0BgAFcwBiYAQrEnlcGJZGdWAOVzUQUSPR45ZJMgJAUSQusAAKQJUkhTOrA iQqMARtICR1KQBGByEN8AA9WCQUEpiDAwAGQpaBhSe84wJZoIm30FJj0YEocSh+1mV3K0wB8k5Ct HQJYRjsWxhAVxWQdpEpgCVOOgWQpGRsQifalG+ogAJFFhJZVJJGkRNX8nUZS1QSUQEHqChmEhAMc m0FV4dbZ2gl4WsYAT9Wk0e4oSajp1miFnm0xSSiWiQM0RBHpCtlsR3IxB1eQTts4SQj/wJ5YydCj 3V63xKdNkNW3rUTvfEAKFIzGMNaYFaRyisfdzAUbfEZk7NGSjA1reIwDDErWcId/AgoCjMCTvYpZ YETrQB+WeM0nrZR9+EhWtR6giManFORkXJYnScZ11M1oEIZQ7Yd6iBdq/ONdeAdiqIB+PIyA9MgK rGjqkCjOFJzZhQY7NUDWhADEtElw1dqKIUDl0UXOHMiMgADnIGIPUsDBpYB73JBOUOkBxBJTgoYD HMT0odbmeBgDDCWPhA5dOEl2tR1kTMfFZcC5lA1QCAMVrBgilo9ZrkBk/uEW7ZiQrWVQ9umV9Ewc NRqNfaYCBKZntIADlM+ABOJnFpWX/4DAOj0NjyQWjXrNxQkJRYXpCLqFxLymQICNVMBASfDOilnU ACCA+2BqIupppZ3AbGyHDA4ERPSUkYjGWtoiXHhUslRM7vjTiLbTRAJgZk4W8gRKOv3UapGMd8BA swpKRDAAPf5Lw3zE88wlAqyK+rQZAioUR+QjijHZ/RiJLW7HBG5E6oVc5h1Z7qhHYoGAe7YZN2Jj pHHjthkMdVhGojlAQY5jsj3iT1iSeohAkhzAbMXfmOFFS6qXaaRNi3qk0NgPsWWEH3jUHY7GCPxE QUFGi7Qa9sQREZKGSSbWk9QWevwEZ8TR3wksUHhMjx0IXgBgCeSs/XXEcrTJSvgfxv/Uhs4OEGlw DKuuHSIigEI+G0Xw4JE8RAN8JaIYgSAIAmAwFuKR1WxMwGh+0wgYpdXmRmIg3kD4yGj6jgIIrB9E HEN4Bdkmi5IwHQOswB6YAQsIQRGUgH1FBxhZgH7YjhfU2wWMAJ4CgOEarnn14Bhk1CxhwAncnHnt qZAdAAa4jm2x3NS5avhgBLbIDmusk6/CjIuIhZ8OQFvMxpUs6oiGWNl8AHNwXdXVjX22WVuOAQmk VZAl4lfKzhAlgOQGmenSFadu26k+jUH0qp4+0atkBlElS4TRoUUxZfvFCKTAk/roG4l2h60wyQTt 4vX6qi0uCgyEnUUMjbqAiYTelTz/3VoKPclsBCZMtdmqyBMC3BUEeUZJPCPpHIn+4Nu72GtYCUS+ 6itaXWO/9lZytK9avIn0vetH2Ims7eT4NsBYXUVBPt7CJOcdomzrLSU+3gm39hQJ8JHMnpJLUMpw SclPlEAFuOiYeM3PgsALfp7xGGfrGaDs0WMEMWRHmuMp4SYYqYwf3IlW1lwqtYAI/i6IfexpbOhK eCVFKCo9SqE5zkvYKYVXuhn0fdMCFAEgRFwL2NfMdMyGzsif4opRtgFDJGVlMBxF2AVaOIBRlAEb GI/p3WSZ7AwFYAAKjFsIFIESHAMVHC7imlcC9MTNGUDYIFgv6Wkjh8YhCxDlRsyH/xVyLD3ykhBF C2TUUrCqEvcOBfSU2k3HbxwikdJqyaFKocySbFRUoBwKrWDP9+zpV65YpanAWNLyhxEE5zmrhIIr kI3gJRIi3rXZklShaNryJVqdTo1sGlGUaLDTUiSap2DrSnin+qQVjc3tOdFZjMygQaCv17zF+QzT TWBzCQhgZDQaAqKQm/6sv1wvA8bG/85NmdwnAUPat4GbH4HHRehQZIDa2Kye+7KklBRKAhiLXWxf AvpIQePUADHsC5yS7+BUCLTJePweDLAwzlA0hxoB9pzESAwRaWlo6Epf2+6e/vzLZ7zyq6ZRGPOL /+EVzEhoh6KQVtAZbchFCHwpIv+esgQwgEFSZqsSqewopsAawSWhDIBgMdu1SVAXARuYFtUASXXA 0ht7LRuAMcLI1ExGjk68xM34gRwyGsrQGdV8AH308UIYQXIKQy1MhCwRciwpYUZV2HTR2QeMAAdc yU+X3O7YTqRGLh6+RDcq8rnsmDp9si3vFKpU2AUg7+8irSJLSqbuEdLmbmkeQBUm3U8D7y6LQGFO NnqoXWm6aucJ0FcSmV0UNfjsSHeUgL6hR8F55memq6EEXWIRL0J6DbjGzmiEmgj8XZv1dpsxoOWi kkEk2nvS6LdyBUUJREjJxZt0izJWBVPmoFvMDR8BXj7rs+x16geAR865xWlMsQX/DcZmWAoE4XJF FAoHX+w/QiClgBK14sWOjQYCYgZqzB5z4EVtEkmt4SGvhQRq6cSorcBgqoCDidlYjUDKogwb0ncJ MPgIvKyg8Zr5GU3aDMRsfBEDOMAIjHgJeGTHnKwgbsXzeY2Ij3jPpYVfEfWsIiIJLsRyGKAKiiBZ clQFKMEQX1KM/GWDimDDFQoDpNc+hlQK8oiQOsmTvIB6dSQMjC+BgMjTDA0G4IcwXgAD3MIvwNwA EbLhHsAJgEBaVWVwycXLwZzMdVdUONYVTq7RZFkR5O1EiE+nOElm0zh9X/hcyDYgHmLkSq7sdDaW NIigfzI45eU9fxtQxxIgrl0j/xuuIqsl+Jy2WmFGI/aIKUdzaSa0PMJmh1WU5o7GU0mdaKAHlXxm H1EEC6TzoaiH9rA6oDQqm+GhQtN6oCAj0TrjzKhlcRezRMrTVrSxvQ5Idwf7d9PQtn0boIx32Bi7 UnzslEGgO5IWqokxaCRAXrxwDo+AceqWCr/ABSiJCwvgfeIKDEihQoEECUxEoiQab1cfhG+1CiMN Z4AEurHPPTtACdSmRyINKE21hgoEDvufcV6wRarxmMyuhKbSRZNAuKteX5zA1DG2AXyAD5eJ6hqK UH7phK67nfwEZeBkaLgZ57BYSVJgTy3LzIxtjdmFA7TF6XlJHS8LG0UHiATHdP9k+Vn2FgNwQMeV Df3MteEOQHKUyXyI0xZqmluXwAcgADvp15N8Ri/tyE5UhpqTwUbzRArUxZhc8k/bk1wcp504WKJl diP/rtcxhpLoOWPvaVnyo8TnrFXI+JEVCiL2Ui8ldAm4eAun7mfLjn1FzpGp3au+xHJGz9p1nqAu hV+v3clDoDVLXgUIc6qUumcm9K3bIjppvmc+1Y5hJ+wMKaGevOhHzryBAErqOrBaBU+8i34axl95 N7PT5742+1jJHgiQN7xR6fwutL8/nkP0CG1w63XmHscHd4krddgV3rgtZ3HEnmcywAi4mrFAGc72 WpLY9qeU+KKYhklopUea9Gf+TrG5fQWl9FTE+LRFsdMC/LuU1MZckEz3saivJrVDoplnjf9nAMQA CQAkFBwIgKCEAyvGUDAgsOAAiQYHHKjQgMEIGGReqLhwsYKFECEoHDBoUcEABCRWtBnjcYKCBAka TLBgoYEBAw1K1vzwYk+ZjhYUHDBKkwKFBgkqXKCAIUUZLxgqlFCSLE4CCy1ekDiAEOyEEAwUXCB6 QOcAnQnEsuiKQIKCEA3kMgCw02zMmTQtqHgx5sWLFQ0qJDAY8YBIEDdDimBBZgyLFQ4gHh5oeYCC FiJ0Eh2QsCDowwYoSF4R+AVHGCQcGCh44MIHAwkRVrSQ2oiRwDBglGhdWa3+hRMMMoM4wJQEb+Ur PjB4qBCECMMVPhyobIBBBZbKS5BwzFnhh98SyUtc62DEhxIvpO8EQXyihPLlDSQQsXrEiBKTETyc //+A6BIYwIEVWGiOAaPS0onBtUQQoYEPQgDBphROaEGFBtAywKgOEegQxBBFHLE/BktEwAEVUrjg ggmpm+CDFSrQqcAXTqCgKLSMUqACxwZjQIQQEvDPAAfWW+GCpY76QAQVJBNhBSEnkoiBIylM4LgP cNIOBiNYaKAy+Qyo4DQVKlCggSsPiHCFFhwKk8r1VLCAggk2dGCxDyh0TT6KDiDhBRZCmABLEFjA gLDoJuAzoopIYMNGQkv+5JABPSsw6bL55KvghRAYRcggUAEgEIQVyBAUxw05ZIpOPglclAEjTr2g qAYN+NCmlFDKDgY/ylgRowRVXfOiBkLAgIIXzMhgAhjYWIGYKSQwQLMxSoALLLnysk6t4xgIlq0W rEUggRAKS5JAC+z07zIOJ1BhjDJYcIDQg+RT4KaldBKzLHjZ8Moyey1DIIQV0KJgQFAtA22ngkNQ t4EG+nrMiBGsM8ACED4DqzgVViBBy4ydZMMIryAatQEIB6h0gvUEUwHmFP6CYQTnBuiROAtmNGjM 0wRrYQWfySADBl2bY7c8BBggoQUjIB1j6BUeFIFbisiTj0oSjGiDDTL+umajN4sFGvU/tSYQoYIq uzZCOZqJszWtHpsaaQIKLExhjAvQqsioD/smEfADEPBbQRN1UgDeFEYK4QIYLRDBuCKLYMGCIW9F QAEGHHCAOsdaiC4ngXYy8AIsB9dR8wpAeAFSCxCASKX1RFCgRJVmEnxpydJGKyIHWKDc8gPIUpWB EMxkwHSBGICBhdIv7+/0W9NMm4HqGVBazpweQrEwndYE4VLhN1fv1JIWtLV4O7t1AOT8qhehBQVA A4sgsApywNkW1mVQrYew+2ACEGFKlfwgGBKALCave85OEEagiH2ADXuwUAmKUASpOWVI8mHKBMxC gTGg4AIMmZMwZsH/LcS9YAQbA0C5TrCzATAFBB4zghJKRi8VsKFmZtFKTI7WKLV8SHPC8doIMGIv rVyKf+Tx3m3YYAJGLWw0IWjBkBqosIBNK01JSsCk6pOmFxihBM6hgHHspwAQPExDDaIJCdwSxsqU qwKZaZIKQOAALB2lLYJxAAKMBSaduUYtZFoB+JA3EzaNgQ2+YUDlynaAGAVKBZCT4l+8BgPiHGZK 8kHACHwmmBA4JjBsSOQlsfafBgRtI5D53V+4JqO9qaV/KcsY3UBwNzOEYEMjCtHp/Ea40wmul1ws EQMYorgQnIAkF4jOjA5QAhZcyjwHMJJyUOM19nBrZQaygKpuJU39/pyGDG1oAwx6uJJODck8JtJc cobGthJYrEhtUp8SGyTN9bBtBd2pQI30Rp+0FAQ7JWBb21YAg5ekpJT8A2iMCsobp/nqBArwn63M Mz32FcFpXzSC1ATFJ/p9FCEGGMEYIvoc81xNPos0DAAsUgI2CEKUuWFBC+bi0Wk5QEM1OVtQxuA0 L0ntBCeg1WdWZgGnWMBCpkqBCoxwjF8YoTo74coCwGKAFiXgLmk6gQq2epoxAKYEhnrBB1iUAArE pjX2q8gESqUEN2w0XjDY58ZIs82BCKQ8PDtlxWYjmlAB9AItcMDSmsM7+lHEjEiEG6VWN0q2fkWD IPiA5Ra7JhWQ/6EINqsI+AzwrveoKp1rEsEXiQgCMF1kNjuBXIK4yCF8sWCcWhpQnxYqGdPWyiKM 88s4SYm1iGwSBoMUyaW0oq7RkiGM/vmPAX5yKhW0IEloEgkLAANPWFJJBLNkXAhSgDczYGBDg/Ml MMVb3vL+bZe2GmYxMXBMkoAgOs4p0DbxeoARKMEPpwqagcbQhjKs4JIGYCN9p7QAq7ABMPuF2gvI mYACSSdMmuQkalaJmo8Z6E0BU4uRcvPVyLglN2zAJZxou8kidG0MGPLYC9pABlxeJjSgWVmv2vAy hnw4BBKliGWY2yVIqeBhGYOSoAxzEJBehpjxOxltjDyqCiwKAP4GZoMfxiDcm5xxUF8BFUp88gJB CCLFjbsjj1iUEwAgQEIwwlBqIGOEZABjZpMtjQjoSgFmikSLR1FAW6xZZfgqgAInMI6RVQuzoAVm aILwg282hq+V2q9+9NsJC2BAGSaHhmcXYPDWSLbR7lkxMa7DqxKZQsGt+SEQRfDO24xVHeDMBzsk IIMfSpYfPKVNstxarFoSsLquqGCyuXYPNPu3WMRxZHbd6lCMIMSgDX3LKO+yFqZ4TCYIAXFIwpOo aPWoXCXijwUgkMlgTXQAM7qFBAMqT69v4t4TpMAMZTDDBRT4S/Pe27x9+6WH1PsQYv4KAxd6L3yx 5J0MrqwEHP5RgVL2smfHVNk5DADybLGmNjJ4REla6apgVpChJxJEykOhS5reywJRqoDaoB6BEaqc zEHxKDljGLG9QDUAA+sGyHMxytLaNKe+HnZaHJAVqmbygebZJEhmhuLyEKxzIn1PBHoT1UcHImAW OASkWQdAdoziUpKuK5pk3mZVI1YTGAyiDSlA2BO95wCcPKQCGFDAI9sA5rnsIg5tsVYFTsACu9xl Aksp8yspgjkQQK0MVYbQBFq4MQloJQQfUNJxeHSCMeS3BF8ZwARmpHWqk+aaMZ7fWsX1swqD1Tl3 tQnFEVMBJ7HNLYj0Q34tlgBlmgToiPmAs7oWTj8AgmSDdP51REo5nwSoQJyQYR3Y9kOC3v4nIvYB DAn00yUGi9I3RGqQecolGGrXh32B8Y3g4BbN1QH4ahs+DXMGy1pbWbYr2NysUY8ZcC+UQd4W8N++ 9Y1v/4uXvPrthVbgV96Nps6qrIBkRjYMBmxkKSbFb77l/BojJyiCmDqCULiJLSLGUGTOOkIlmy6O UBakJnauVE6gyA6rSsqnVrIjeBgABE7Arg6DIBgAoxbOkC5GmiLmcbDOfiQAAUxAN1JFJ1CkctZC T8CENkZleUgqdGDtViqldDDtsLJJBRSgyTzvLiqgAvIH7BaLVbRsZTgPgtogxyglAgZrb1IKtRiA VozOD/8E4QVKggBsgQrqgwK4YgXerQJCqiZuYrbKRiIOIA/LYA/Y48nGAiy0QvI2ZNTwEF7IYAQ6 gwGy0PMUou8oI8bsxSKCStD+MGJ65DFoBi4SY2fq54U+AGbAp+zYiro4ogQkJI60DjugpONAILA+ DJHAZhIF5orG5DFaLFAoacoqBvf8ajQaALbIQDeqyWt4UbMi7IVGSzawQyOcRpxIZjUcQP4axT66 QrksIpW6hjfyybqUqAE8ZgEHcTEuIKhaZAzQAA3mTdcIp//+Dx8H53zSIgFYQCq6i6aUaTEcLNmK pAHPsO0+4IBKgCGhRDCEitoQrlMkCm68hX0YYjI+kAn/T+MM04lD9qY+PmAzNgd5dEROFsXZsKSe KsBcEkBzSNIBikDm0ghuSuR7KhA7Nsel2uAKlYtDXqe+miIFR2UBYKANmocb00JTXogkXMN+OAQ9 Em6sMkgLQ2r3SErHfAiTHAnKVihCDGouHEA9jOCtooQoZmNlCoMBlGJ19sALsK4OqYAgdsLyIuMD iIqDQGClxOQAFoD8IKKzooIMZCRNtAxjJkv7+GctNA2FVKoqqa40ZGPqQqpHcCJijoMmD4Dxeirz tOLRCCIBmAQnVJJB2OICRotkwsgSUeZBTCvbNA1CKEAEEKnSVGgJAYpMZoq6IKRFQoC6sI84rEg0 CCQ1/zoCfMTicxySaEYALn7xlGTkkb6K4/iLGZMrYKjFYwYkoJyGIwLFLbwGjPYIdsYkktRt/tzx BNorHuVNSCLieUBEH/MR35Tyhx6iH6ViDLwgqEZiIFXHOv7kBZxHJdinS4bGayAjnIRC/wzCnDrS I71JoHoPFmuGQwBFSEyqkTQipnQjn0gge1zlpOKDQEpAOXTDoQBhDOgroehTJahDc0g0xGYvkaDJ ty5jVEITyipCP+KwxnjjAyQqTObSWFJiLitlBbhTGOdEoqrSAEogxXQM6KjOMVeITMhABl3GwrgK mezkpmJiAoAEMsBrVCJAGOKArhqgBRKPM0aFAuaCqP/WRCErqDuS0mz8cawiBLLShPWKD3YSA92q 4zEJIpY2Q8skTSyIzdmUkkNuA7m4sFBZSplocrE4pAJgywgcwBLjYkIklVoWAy3MiiFqkxZdD23w hY7YQl3abRRbgwZBwz5YAG1UMjGMw9wswFQSCVv8ChgDgwXoaCRkgi/8gmg+oDkpYkxa4FLIJDBg YuQ4iCuIJt38xB0XhR2NqgVaIKjWEythJ50AMN88BB/p81Zc4z7jzQuwdSRkyz8JZA8p0r5SaaaC 5JNOo+7KYNBSquOA1FiNhM0AY5UMlJxiRAX2FJNQZCchw1//Ysry5lMChgkPNlAOLflkBERpywJh tGv/UiPFCkowxG1sIk1QG4BW7Asblc8tAkUGP9DIpuUD3mQBAMVfncRCmgRbfVDrDuAF1M4pH3NM ECo0X0A/WYykcAJYeeSMjnCHFAB/xiADDEOklAAagGH4pIpoTII0Bi23gMYtlEA6P8ZmkoUMnM+u YEMJYUxgGAZsryXrVtYad6AHDGoMSGABdlZTdwaTMA0xDs8PViP1AK/ZRq34KAJNB1NYJqVc9BJr 6qk/zEMBRACzSOmkUARyKJKPlgIjjKIi0pEZLW0TFcJ4tqlBKleNQiA1iJXmIoIB3GJQZiLwFsTc pG2ssAWxPgkEmGd1Kaub2AI1VyBh7iXqniNAlOlC/1KABcwADRLvBEJn1zrEJasnc6ynkIB1LzC3 ntbCH+NtDFLgc1yEVThEFVFyBcNs8iqCLTrwBVyHZfVnNgpv5SADumJCASrvBLwqMjTRF1NKoJyr 3XBEYk7gL9Bv6g6iInYPUmp2ixTAQLZKMmbQYVViBNjgKG/EUCLqOB6HppQO6A4gBJIDgnMWAxwg fmsiOlRA7myzINxQaZ3lJVLlA+TuOFQnZScTLEbgUI5RCw+CARZFApbmq9yXUET0PMiqKIS4AV5A yVZiaJLhF6rM0kgDMFoj1MzNHR+mWGyiYFKDZo4jBJi4MACgLB4VZI8sQIjm72ixLI40N4amDMCm h/8wZtAC+LCKhIMVLZEKCwbt9op4bAJYrAgoqDdABmYq0IfwCpPsA7mwJHVGwEODhk6LrXYYF14A LFNWpVQQs1GSiDz8dKx+DlTQDFYbwCbJz1Z6LTB6cTQs4HeYI0d2CXq0wlQyDyJgwzgkAgHOSAQu 5KuMV95uBH7j15d9OWImQJifjAufbJiFOZgD75eXGZXlDf9Iyr22KSTqI0iGRG2aJ0fUyyjS5HeY qZqBY5NYTkm5STMDz1ZPBaFOd2WKwCVWt1ZREjOhJMfWtpkgZVBqAp0OIEhkokdUQIeRMZxXGEsc QATMZ1V6JMdsMyEQwKXY4OhGMLSyY3JNOEC0hgz/3ISycGpYKpOTOaZNsDBQwSKH4Q4GykAQpgKd di0kk0SIfQcDbkXWUgAEhEEXqGtePuMALK/2bkIsruSf+KUvvso3JsAtcIo4CKOjbzguuAJTb7Yv pGYxbqLvPOwFMq9SlPASHWkFUCxeykD5goZqVhZvDysxXsAPWmxooIYMhKKHkFFgMkNcgiY3sBEQ 8msFKJRP4+NeLosE2k4/fOqdOOB18tg9LWAMLOkzNCn8BpP6HGABJgVAbuMF7Ld3ljU/8mOfEqQi J4AhAGZaWJJbAsQTWwAydNkM0jMpUlu1UxsDWtu1X7u1WYRFXHu1VTvg4sV4wQyZgkqa9Q9IHKKZ /05lf7yH37zH6AYjRS6A7VYubyiyIkukcZvHhhOinq+OsrStcOqjLzwFpEQKUpznI72HLPwHBlXm B+/igfPmukuydhqmdD7PAWTF44oNk90bq+innq00dMRk+8SkRwIIpBAgSnJEc6yjKjVTJz6ADMCs JEYtRC0QF8uqAtQ3vUvCFvLO8iZbIiYgBajG9j7pCIvNI/EwBYa17y6iNfZpNde26m6jr7MONuhI Q8ZGAhrgHeFlnOgIjD8qM5zkc54s0B7SH/eg0pLaRmtDn39HZmTEivGmnSYx0sx2NC4gnDhCauAn MKCG1kw5wvQK3bRGlNpg9sQJEP4g+6yocw1gdf/6emVG4MTEXMwBARDcoI+5EXCxBjaqLCIZug32 AIJnzw9ESQmSiz4QgKg1HItKhx09MSri7XjNAAUywLUzgNIxgNIvHdMzHdNhm9NfOwNQIN5yG5qx tXSm2QFqagQChVr9SVzfVRsFA68JhOX6idXJ40PCL26T8jKQWH3pafvIo9cGaXO4sT8cIFAcYkXp M/oITnzaj7n7qfiSCHUXwzUoxQFMAL8oZ321EtNWhtrphwFe6iVGQA2lkWdY8r7px9hNwwj+ABCg akg8D8H5vCGe46+OvDZOnSRCM6Liu97jMjO2eLIfb6uM4gKArTl9Pa+oVjAOxMEIsQFWXOsG4vj/ qAakAkQExJM+mYIbzYq028BgPI8uZRCdpsVWJ4vPcJXqut0+PqcmdBwhEmMkYOtfDLx+8DalZNa0 NkQ2E/ExEuk38lgtqJxrOlaKtktcvHoynFLKC+L4mAPMVSnnVqwNBgEQ3AgzpvEFdkZy6joyrvVa H+PLcCgabwWVw3oARDafzwiXBQH/Hh0FIp3S4z7ug4ruPfEE6B4FTkDTNb3TM+AE7s8M9sDtLYTU uxdPZMJA1jGvCo8DeuCh4lAQxInWWOMCaR2lxCQjBGrMx7yqayacv+SJgMM9OawMZg8Q2oBtTixF n0jDCs/oKA2CRWnKAOEFBPlur5OgLSA6p0zR/gJdLx2PFvEk4tu8Vyafa0RpBY6QnkHAZuPpy7w6 rTkCuoj04nMiVshATEP6zD7gRkIzxxjipYtEGKjgXiwPBuYWAwZWlqkt9zGJLhdMBLjuSyU+cKvK eMo4pB6HVfk7UQFiwAADCk6QITNiAICFDAEMaCAChIIDBipWVGChQcUDEwyyMYGAoQQJDAckAKGi AsUDDRpQrMggQYKOY9jAYKBwIUkAI02KaAFiQgIDAg1UAJHgwMwQL/ywGWFgpNSpB0CMeSGiQtIJ IjQewHjiRZunB3bynGrAAosxZF6oABEixMQDSieAYEGmDQwHUacObACU7ggYbU9kVCAzQQMK/iHw kjEy4oBAgQlErGAgYYCCEBViMhBxovEeQWXKoDHjBQWKDKxZq3atOrbs2ao1tL6Nm/UJL2bMjN5D JsWJ0A0sWDDg4IKCCitCSJ48YKoEAwxKuBHU5kULFWtTtGDx4uoKtwmiC8zc80AJJWzIXN3eIjxb myVgvKDQV7rUAQgclDDSRhljDMhCgWL5QQYIZeknnUMLjPBCaW2xsMJaZYy1gkY7NXjWdA6sRWB8 Y3gHHgsnTGBAQyryhMAHGQ120BgsqKCCCCpUOCOKKzpUwQUH8FTdC+61gAEFE7R01AktnKDRigwo MMAIZKAApVk7qjiAAyFQwAAIGFSgXQMM/pBgRDJU8GTABCmQUYIBFJzImAM56TRSQ34ZAFgbZLAQ kWKY7TjAAQ6MYMIIFTjAAAICUaCCAypCVEFUHWYGnQEIIMBRC4/9qaICICBFVFEWIRDqQJvVZEKK Kx5wgQh8TWbAAaRaZJECF4zRxgo/rijBSSnJSitLLpGKQAJq6SUng0ZtpxVFCDTwwVCxfmXBCmyw UcKuPIk0wARrtXBBA4q5FOxMF+AFGQL6HRBCVx+84BYFE81aUbEKTHDuWJHBakELFQjUQAgXVECw CqGNscceZphmBgon5JabBrRNHJvEEN+GAm9moCHIHgIOd8IFIRzXYwMgtIDiZOhJZcAI/0XoyUII EyjgqXAtXaCCkC8cFx165lXHRnYhN4AYRCGHsEJNbKyQAINTLVBCe2O0MDJoM5uc9FXHcWgWckW0 x0IKMtMMmHfftWDBrhwuhBxhU19wZIUY0FxBCDSmfeVCWY43YApii0vXAQwctSQF2orU5VAOrECG F1STKyq1IsisKkMxGVDCGBhImjevXR4pAgYisPBl0i8kk0hfrMLLQAMnYJCBgp2LtF+aLADnxWUt zcm2Ah+oAMO1bb1gBAwjMGBBShIEwPanZdG+7UDVFVFECRWS4QcMC1hpwAUg4KTfeT1h2uXtZPE+ QAVZEbUfdOIPtDqbinJvwQkVkCrqqP8VFZUpGTA8576CdIVW9nqJRb4SgpqUQF0rMsBdmPSSwMnq UrKqi6aeIimSZKYCNCqQcpwVOEzRhYITUMFBPqAogTBABR8gymYy0gAODgdhZegNGlJzMdxIjGI8 XE0OM2bDjgloSaHZklEGNrnyqAwtIwgaC8KVFEw5QAUXSEoCMFIhBbXPQ0UojLykFaseFQ0EQmpB 05wWqBIgCFyAOwqUDGAska0AbfmhE5pGYAQ2xIwCFkhZoCZ3pOSBKz9SYUjLjBAcDIgrVpNTwEYU A4KQHU5FCCjBkC7AR8jVSykBM8wkAVAVaMFgavKaCK0sRUHfUa4hDqDLHBVgpdnpJJT+ELnAHHM2 NQsIgxckWEB0EnCCMXygIMOJ1LZUZKUNZcYAGBiDgDKkgAbMSQIIqMAJbkmjE3CHLcNjAQhyEgAF uIp3dMITCKzVnoOQoQyCyJ4jGbKZZNnpLA5Bzn/Y0wY/OMUIJXDkSNj1gQXVqZDSGUg1VzAWEhxK ASmESNp61hP3lUogE2hBG0rggEF9wFAcXEGkKDUQiwykUgloJga7ZhQW+Os5pyTKKZ9lwhfIyU4M OJtKWrq/lp7qBZESCLtA4MKxRVMFLdCUx5xZhtS8ZgOteQ0KWiAbLkgVC1ygDVRpw9TWPExJGhuN hLzzOsrhK3lbMw8TD4KyCaZyAkL+oUugIIIyQiIHQGiTlghllQAG0CWMJ3giIfcDtBeAYFiXGlxS 6HJYa7agSfNEQBPHYD8J1utZpkRAl1SAojrpBAAtYwNkJ0AvBNBMMrQy1gkMtyMEmMCzIXBJoEaI KUxZJAEfOC05EXAyI0CWXNO6K/7g9wGZRa+Vi8OAQnqCyoHE0iysUoADQHAu+cjlALZgxkW356YU XCYEw5mpLDfLk4e04Jla0RFPEnCBE4ggI4dVigIY04Ix+GEP/1tIAOzyPCwdIHkrWMHkoGu3+ObT eOoagAW0mDfqfIBv8IKXM9sJAxLodQKthWghJ5WZA1TgP2zQ50Ho84HniqA8Tov/aM9UqAI/AMII eRyLe8ZSAgawz8TuW+ZJxnATnw6qPm1ZwQhauT/3VYogKhgD0zYEgARUKCuHYoBe6SVkUwXzMtFx oII0M1i6iBMve0BDDUvjBaX2MDZS5UKYpeoFqY7Zh7NJgRcQRprSjOi0cDti/TL7Pg8hEoKn1HLr YvIS153gjJlhAGHS+tLA9ZmDcV1X1FJgATBucq+nhIhcLOyQx8qlVDiF1UmYpJCQDgSPY9j0kIMM nQPUdgI5mU6sotYGzFIkf7RKdXAbYCUEWKsNKbhARjOq11q7jwEh2BzbKuC7FuCHOg6owAhKAO3j SWZHxlpOCMjYBshCiQC20AVb/rKlmWs24AJLwsl3d8QuAkWrASHpVbsswNAZhzdW42ZBGdj0owBY oIW8Qm8L1svbilyRUULC1gJYZcwr4Wl0KwBBH1uCrxRw038kiMjzNIhMkgygSy/w7AsKNKABqfMF JBBoiVe28aj5QRATAnlesAODgFoYjURm046NoOL5lsEP2VnBB2QMUbNSCk/gMeZIjKIzI7iBDS9Y QQkUCvSC/uU7H+2eczYeFJkEDGFe/nJSw0wxM4sdzWEuu9nLvubY+G0MgoiznGV2gbR9ALqgRrkK g6cCdufUsg74AAlWUDwS/DgmHNwaNTMXV4niVFAj+Lv/pN2zzo7BcBMd+kR9/voBPh0KUXRxwChD QGKpM2jjEUFMBUig0BEooQ2L/SulRl8ZH02HASN4NiAI4YcXlODHUYly0LvkI5E4gA2kaUse3cDP aIVKP0Y5gQLYlpGfUMABZHIPGa7FBiPwaQKTlADyVCkCP5TB+QrhdiLOhe8DYKAFDqDAdsx9bhVl VzsfiGFZTjJAWovKpzTB9wAGVjk64SuRhj8FRRBvgiswAAJdQU6GVEJvATmUkgAhQDWNQQbA0UKa dUx08hAVQjUUQDQXkAIqwEejgz0vgEK0U2LUwThT4zfKEU3kVlTORAY+5nr0dBZ4ojRSEx4zogIp EB6loXvgA1ImhgDnIgJl/kEdeKRPbeCE6nQhfgAZMuYXRWEBKZCE0yEykjGBxYYB3EVDpbEwX+cF KaAaZnZ2aaiGaYgCVdVDZogCLCBEYwhZIsMZk5Ne0sR8JKBHKBIq/cFhTigIg9BOY5F8NlIWWfJx +CE+PQFSS2gtOucHg+AUPkZcurU5M1di/TECjHNv2AcDMKAEftACVXJykzIQJPBxTYEd2EOI2MIX KmgWmuUh6+UfHRYgTjgW12IEKqGJ0oEcckES1FEEhHhv1od9LxBZPbMtGQYCFKAQB0ABzHEVeZFt SxIX7eKBoDcnG9cZwQUDbYACrLYQ3EYFrOJMJed+FdAReRdL8ScBBcEC/8bhPXplASJAhI8YZCyD XgizAlriXQxxACIwQDjVUsbCAgFyE+/IWRzUWrNCLxXREkmxdWWwFw1YThUFFIsEMP8mGSyBfvim QbToFw3AHac1bo0SahQ2MwgoCICwQCNJJ9LBANizJ0HxJlXkXoyRkIKgBBzAPhZmHgpAI4mCR4BQ BtoxMhTARyITX/oEGZJBY8C0WANhAVc3gSAzHPZWGl6HGmiXMWsolmqYdhkjcQnjdZDFXVWDARhA fivzT+PhIy51i4TYFkREVGuRT9n3AtJkAJnnI0J3J9UBIAEyIimwFgdxIW5QBKM0aE6DYdRhHXFm BlcRHnkxCIPAAqY4Ff/NWFBQwwYeIyAkEnL5hIL51TmFNh55ERxrETIW4JQfh1mqokwiURX4cQCr JX5iAzdE0wD48oNiUx70dHR18yMLMAEVYAQdU4eAU1p2YTDmhRwTwAC11Tj4wRDmaBIhcEIVVQGu o5K8ImoaSDvswgIOcJWtFTAfJYvLlRn9qBfhaUjJoxGwYpCTIY3jRQb/wiuW5ki01lIDgV4pYJEB KX+CFnACZxxgNBPBdFEmh2Ga8RNZxknSwhJt9RX5wgYld3ISMJAy0lqy4jv1CT/vFRZOsS/7QRUn AwLVZyLwZkAbYaJigS35aIVoY5XcSEy3wZViyBa9UXZoOJZDCpZj5mb/b9ZlaekwoaE+ceF8DLI4 pVgvTCg0cIMYibEYjdFhflBylcEkrpceI5AESGkivUkzJxMXkegHkzdzM9kTDxKOQuOWpxVN/cJN ecc5BEVQXoOUI4IBM7NlW4IzBSI7GWcnBrBaQwQ3FTKXsZIAdVNUhteZOmEUIFABwRMcMjMUJ+ao XEE1sFRQxJYAADAm4UgG4GJKQcc/RoOdRiEU50QGztcQ5jgdgGGRFdAC0WI3/FkSglIC1FMoQBZL 3cMC7BgXIoMU5IklojYZE3iCvMoTBSGpIAUdtDgQFaUX26MiVYGP+eF7JiaNTaE9vBKP7UKi5ZIU lZZAfpAtysRcJ6N8/wRkKYp2QB1xfQu0WdJRFSpFgI8URfPqXsxxr1JpgP0SHso4MwZkn7GCESaE LELpOkCVFiMWbg/TGj1aQy3gZl9JpB0bpEZadm5WQ73hHmX4OF7CXaCKFpmHASsRNUlJpwobUldE YTT6Acwhe6MHmm2wR6bkUgEjFOPWghfwVzPpEA7wNZnaVnXTNH8UGtyBpxgmHY4VNGr5p1GBACKQ AkKhGIIEesvVjFRbBimgSHQBGv8ZUp0HGvhxYRuSPsFTBjGTsBN1SrQ1ORDaK1UUJQHiBSFqkKfU JSdiKR8AN6PjBcaWnbZABUd3AUJCAuqFXimhKniCNB3Hc8noY1IJff8pUH9Oaj+cg0xL2APV83SD Z5IXAhXzmYXkulkGJTgMoCW4gq8NwRXs6aZck2GNiy0BuBCskn80hmqVYisKFBIrYmAnoHyKJ2yw 4jrXlxAq2JDbATmiElst9SweEZPh4y0jEmmjQiy+tREmIxZGgBn7AUwhUBHW5BLWZLGs0aOooRpm NzFk57H1K78o0Bu9EXJjqxwo+7XAKH2x0gOAcKpfJEEHfFjGYkIq1WjhwwAv81kJQCqUxrAWChEq xWq4myWjGMEThDwWeiSQtCTSJLUZNsCklBgWSrhzQRcmExh5U0medSIR1BIvEZHUEUmZBb2YM18o QAGSFqD4aU3Bp1n/rNIAwycIh7upCytS5xEowYUYLlI/Zvh8s2oLU6ATBSEjNcIAb4JC8Vg/20GQ k6MkiWkTH+BLDqEmlspd5YZxthkwLMAGbuBiI9dfCJMtDDGBFjBN8+QQB+AySsBi1UgGgsAG/NY8 IMBAyJQ303FQbbAHP+YAS+wA9jM/HVqF6scWUDEtI8UAJwAqxOkX+lFPgOE/nII4w1GfhWSfTgwr BdEeGVhQuKpsLHVKBnXL6CUkunJc23l1FQUCwbUkGHABrEGgIwsGYYl2VzUbV3V2YKCG0JyG0vzM Z5YC+Tsgbza2fwoXcUFoZ3EABuMSfFhqgHNXKfwVe4UprvMtnHkW/xv3Mi+gHMGiKH97EtvRNB3y zg2gBPzrSC6lFO0lWxuRPMlKnDwBNXoiFzeMShR8EZFEtCJhSGo0BvPcyrfcyydRYTKZaes0jkFJ rSPFLRpmP7zDKhYAA3ugxKVSwp0poUWSEbhqIpNkAIprSCJoIirQxaDcOgs4MizsXsBZcAQmXg2X Xh4ZSyZxTgWyHQZTxmyRTwkzrjwBEajMKxqmAnkkNSLHToQAiylSGbEIj74aPJnZHiD2XNzIkAeN igpgUfz0dzDwdB9gPew5UAMFPe8sjXjxvI4sOCTAJ4nSiCfHvEV2GetyMnOpvE1sebYiJFCRHluY Pv/2AT/RvhnAlf+9YYZsqHb269lqWJkhp82rMaehYXL/JM5Ssls3fMAxuhEd4TgqOxUxrDlLDKBN XBT3vDV24n0vo2xL/LcTpWoh0xcQJXmmVikjxaxFEbi4ZicDwAHt4XzL54gnhxwiEHzcwgAcHAKc N2NroxOBAhejOkvnJH7g4mwjEAERQBFrTanWtCUYobHGlmEMwAHCcCZ64zpmw47DsYBZIcHMGN7U UmR7QBbA5E0V8CaFakgBUyNBgRiIdS/plZCEYMix2C2ruyO9chcUogICA5si01frlB0Spj75fG4p p9XppJhOKDXg5t4bPh3KuXJOUePXpycYtSB5zcjvfGM3wXj1ETz/2SHXPzc/GCa117oWstwTi+Nz vxZsSwSXyEUQ3Ell/yTZFTUyFHjZXiCGSqUxnw3a9pu/ZxdyIUfaIOMc+pEAHy6wX0q3wR04xlJU eugXDqBboEdI5lGtBvgZrcc+CxHDLEB5JxbSg/2ekdQZg8N5eBSr/4nJwPgZLTsdr6t6glDRodeZ yXTX1SRcLFKdMAAIpDEGLFY9MiZLtYidQGIthXgVbPAHbqAEJQBvGCkSXiovH+A3xgWJMFAm+b0Q E+g3uUphLdBwgi1sEcWw51IGsIg0WrEZKeiAoNG98jbgFGZv9MUXlcq7JbFlEDhrotKg8XEhxcPg spQWptMcF5Be/97Rxs5k4DFm61ei1DinJzJSVGtXBnvgFBgFuoZKkniiKb6+pQFSGvnkFLr3c6Dr rvvBKnyyIPzheYYYNEwn17VHhWg0dTylOpIdsfiS77GBVGMQv/lr8ieP8imv8hwL2mWeZiggcWdO 8qGh5j9Ckx9+F3FF3UIWK7BL1zDQmNYTHlc220nzlnc9ki4dKztGGLrXAyMgLY/VsojOINwCiO5h udmndIBQagR7TCQ5TzOuAvvGYZiJe0bgY+ADXj3eE59BtIAYNAZ/EE4ICG4gz++UmlXRsjyhHh3W dtlmIA2mHSrROX95IpXhN9NX9jJCDMDOWSLoHV1BgUhxap0WKP40QV/9pRLoJe1q/OHnituehvlk UQGIfKBKYuSlkvR4MgEuSQg59l37GjPI9hJqkoRfwZMDlrrf9RA54xYUWFdaB/wREu/w18gcaGiT CPjDUVROaiH8rgQjsMgN/85E2XqA/DWEyHNdGYWTGP0EGz78oRZZ6KHpJRmuA2/uxxbCgQJIlRob u/Lxf/Km0XULA6Qsb3YmD5ZvduZ+A1YAcSLEAQASDBZk0OJECxYXDhgYMMDgRAkRD4woYoRNGz+E CAny42fQIDYlHCCQKIEBixQUDEgAEDMmRZgGBxxwUAJGSD97BP0cBMhICRIwyIRIkHLmxII0CxrI qaSNoD1lrP6SKTOVEMkPB2DKZNpUZsGCCD68INNGbRkybcekbcMGRgWvZMfOXCrhwAcVH0psbDPG SwsMFyxcuBBiBQsWLSwYuHtXgoEKSKGu8CNoTIoTGCg0UKCgwQQLIlq0AJE08swKJyhMWMh4IxkW ISg4EEZlrAEKKVK0EAFbBIOUEyMOMADxeEXkDU6M2UOb7gELIAjGVHBiOETmyJN/T+5dwYUXgtiM +PBhQGQJ2VVYOHDcO3j641OU8VOEwdfVMQ+AUKiCBBBQbgAFVBDBK+QSgG2MMkpagL/+BmiAIcdC C0GFBtYDwAALQphgghBYwE8JByQEK6+CDiCBDdpEsKCBBP8aCMGCBA6Y8UMSB/GjBK9ooqipAy5A rYIi/vCjjDFYEAixEDJkYYyp5KoAJSCZU+C0DfVKzCvnKGDwBDL24AwFB83wAgUvvDCjTTffhBPO MtBAY04676SzjDjRZDPONVFAIYUxBh30PjI46+y6gwZw4LTfGiiwuIqgKuGPj5Rk7DcWXpASJDZ6 IM6AD2pL4KC8wtILIzaqwpQxLwZNSyRAyHDpyisLGmCBEdj4ScnfCkushVfTGsM6FFEcSy8TVvW1 sxM4o4CCC1TYtDYFkE12IgNGMEKtQ09ojIKHvsOxAtMcu25CB0Dktg0yWgDxoeIiMmBGEFQIAdL+ HGhyxDb/CCkjBdsSMIAAW3STaYAJWvhNoBMqgEwyWykywDkzBCHjAwIncCgmA0A4gYGXaupOvoiY q/eC+9hY4YOIxzoghIet7A48k5E7ALYyBCkCgf48tgA4SOdL7oAK6AIPAfvKGKQEn3+WIIGF8iWw 4hiVM2ACuhBIgIIWyBDECAc4xOsrilh84QURGhjXAAVAgBRlBkN4Ab8ixgarJrCybuGF2Ro7YYK2 i1bAAnDHzI+4K5EDIYXHJjNcgYoJi/YEq1DI4Dk911xzT8/NsBNP0UXX83M4OQ+U0ELBTiFzy+ir gGGBk5Lo5EkZ6AFJJeH9LLQEZqwsyjYASWIEBkyr1dSm/igagIEiABGkjMEwmAC01mwrjQUy/Ggj Qb1TdGpbJZIcg7ALTnAouQRESKEwFdJW4dqfx2oeBujHQJ/tvVjAYFwGASQVtsrWvCIMImCBa8AH LnAtm9DLAEYzDXygxgCdsCFg+SLYzcJjEXOBiGxjYUAILtCAFu3BDCgAU3gMhrCZZOc3pzHW/PBy F+ToTBA+yhoI9qMwFUDsWLZqikV6s4c9rOBlHqPACeBjNubJp4kVsxwgTHDE3UxABakpEH0euEF6 5awFcTHB09iTgBCgC2vJqZoBEHCAth2ARiQ6z0tmWLb/NOYCBAOPG/FIn649ZxAmIpuEbNIAEtFm hA1g/5uk5CaiHYltZDQZQNBA8BIPKbEBRDpBBjI3hhNq0kGC6Vyb7lS6N+UJdKNDJZ5M9ybOtVJ1 giLTQlzTAAbUUjSN880FuMM8qChhEG14gWsUMC6T1etDJ3iBWmCwghAoQCmnKssIxnfBFKbkP+lz I5E45T2zSaYsJrifMHEEAl0WZH3xSoAFqBW/DyovJgjYVWBaQIFhQsQsKpgARMhFI3jJ72eM2kkZ XIPHNWpxgwZgAMjKuRoJOIBX+EshyuhTzAaIIHDISugE4umFDAxTPgabwl3I2JjTQGwp3ikOQ3Hl xeiQoDUqOJEBMOC9ZMlweVHDwBjMswC7AEABIbAO1P6CRBabVEwFfjhPOwvy0+FI6mZOhAnOKkQG NriMPXvpS3zW00CUfsdk6UyBH0wkR/BNJnaueUjNvGoz5BgoBFIS21ZvChPKbCpw+kxjeLSYgNaM AakjkCNTJFChgUBOiRPAgEIwgIHnlG+TAVMTGNyEJ6xYBU9pMMPo0oDKzdLpTZyEExowyycvcAEF USKUoMqgEIVYoHoNcECI2OebCXRHWx/oFv4s4FGDeoeNfH2fkvp3EJJRBAEl+CWTJpAUmxkthUVr QOMa8qOynY0EgCATBup5E0T6r3rjcqMI8OXMn20rJO3bbkQQwAAZeZVeCeBLMwWoEql4wTLGOQ5b U/4ygASAjAISiQyL9oC/fM7LZEEsqgNEgJSaJlQE3UrBAh9pEAMc7C4HwIBvWqACxSF0BDvoQQnQ UwEGpJWhN7mATsvHgh7yVwQmtWl/KvLT7Y2APwo7Ad5iLLHJLKwNMGBAZCrpQ+Iyb2LeWdiDdAyW iqYmpU00GfMSQJ4f74c9zbMo0gyc36cuiG5VDuSijseCtWXRoO5V40+TyQYHTNggDMAXQSjznksq VmavymQG3pKCUIpylKkMXSpRSco9eZa0aRJUat8CL4V8BpGjmcBsW8BAinFAKmPI1+DOnMeKcqqw dmEiApbVhghLzoFoxNGN+Bg0x5B1eWWpVBvmmf9B37IRAbc+QNXoldAWdCxFMRlAPFtC6/y692Qr 5YuvJXOAIvhhDNp1Na6irDwsnyABQi5BYE4Qt7k65VSUEYFL7pKTurUvKSha4V14o2ER3Ci6KzDC HwCBVDawwQgwMEl8rpwltojgAiCAWEWJMyE1stHg3Nmbj2EgxiENZMc8togFtAfYuyhgwfHhD6qK XFwhpqANPpLQx0TQ5meeytu4qhcIpFSCI35FVCpwyJMnBkm3vfXjCGAiXUdV5opwVT6Ryu/bkglk RSYgzh1qzWeCdoJnpYBTeS4U5yYr6D9THZWrrFObWgmoVzqIMwqZgAJsicjZWhuSzgtMMzetxZ/+ W5xJ5F3Ntiw4z7Ryle0/p45CNhT3Xa1WXNwp9kTnhVCL5pM9DJBKhDEOZajSby93FTI4MS05ZOkt LHtzgArEnTAH/EGg+RTg/CryHwaDxQE7efa5I5Nu+k2A3dVZDGNWMHvGvEUtchmBvpPFmyjpkAJV ogBN1U3BIihBCfeGAb5J4IAMGmRILGDzV36qnh1PZr0OcMAHRuyAoJEByMmKtA+9mTdTQZK/b42j qbLTFQAL1Z1BJCNVdWyq47W7/TPMua1qTtUKtJNCKtg2N6udk7GdJ5qyMSiJH5mIc5Kz1lgu2FAt QmmBTdqMPpk6q8PAq2uTQLMsQ9u6Z0ktL7D+Ct/Ytt8xQYsjwVIxjgPItheAtqc6o+WoGRRUNvpx gMRziftrop6jub2Al3QhqhuUNXFRJCMDEpRTsGYKsCJoA/7BOG86wozDMgy4tmRxKDI4AcoLPdH7 D2sDiwVgQhQAvYeLDEYJjhvLNixkoNVgvbHIkhc6jRMAuOoJjdE4Ju3Zgx8bAZxLFqkZg+Egja4J qr3pNDYICXdpC45AKnxzAK3KjjEggYihkROJMajogSJIAjeot7iot3qLDurzmAtoqi1kIrEYvexT ge0xguUrsUriNjIkv4pZgZJ4mp77mB56pF+rqaUAi+b4GpADi/9oNR2cOVOclPh7gbHRmwP/EIEE QboA/CkRlJ5XmUBkAqVSykA00INt5MZu9EZuzMZDA5RXKZT7MKHWkZyiwZGyU0EKqwAymDzlOLIi LKoGAMC9AzVmIzUiLL+bejXy4y+QmYAwQwAmZAF+/J5ucwqbMAvX+KBgY4PU00FYFJXA+aCCbAMU wEdYtEF84pBt2cdoa6CJ+plrehkEMAoUur+7aEOZkBrfWAEYYZtdQpkDUAAKGJExKYmBkwkDUJkV cIAGsAAGsACrmon/WIG0WQEEASoQEK9NiRWWOYkhSYEVuI7oCjIZ0gvcmjd3UR0H+YmfMAIO4MOY 6Yot7KnlWS+McAM36AlBIASkurcSmD2e/+TIvBmSFwBKrnGACsg+FlgBLcu48fvHpaAOwGwACYEz EUhHeSwy8guSeuwbZyQLZmy3ZxScBsAAFoie08KfzGEYC/QzVOpGOvnG0zxNDNQ6zuEzcvQNnUID 9KIPZkzBsxGB8ikwepw5mjCLXqMiRoFHpHgm5dk4jZsM5ygs43AoTKOd/LuVbkMogSCISRHCFhCc aCPDN4ORI1rO/nEg28lOZnyMmFgAGCiDDCiVhDGABXCAERgBEiiB+OwB4/mgnqyMdGEAI3g2IFw9 C7uwZ0ENkfGqE+uj+/ADGFgyCVgYoEynBqAAo4waEQCcD5CRNpoRnGwBsNzJClmBrMRKGf+ikKRc EuAAAQsw0X+LDbA80LEhI/GDmpqKmh5wg66ER9XBipAgiRKwy7vElQp5ARjAREQAhHnzFEbUPZXK lpPKEhYwyg4BAcDUPvgkgQ9oRIQzuYxDmSft0OVhRrPzEMq5gAzTk9TBHE06AdEMNNEpTW1EzTbV A220utX8E6Z7lde8HM94jRAJkaZDCuVkiZjTzd00joqxqCqUCQQgAfx5xTniRV1sCsJrGexzgBJL VOvMxbkiqpm7CZBRgPXyC1/CGCMoApNAibuUAAQAgdIDgAEogXeZAAaogBGITxHzSxOrRHKCjIZ6 gZbgkJuQVSUwRO4RCUaABERQAhJITxv/dLiCGIEXEMP6ZElbCKlkORAl0irkWCMC+U5yKZy+2QM2 4ACyyQ4WaEQ9FTcKEYEVADha6yZgq5hpqRs/WEWGSMzBuiNGTRiJA8x1Bc9JQYDoYoid8QOXejEq Yg91MxIXAUwRICfG+g2L6hteMY/cg1ZH1cVTJYE/YAQeaQO2GBQL2hlPKQHKI0yo+ZgU8B6oKCBG AAm4HAmqkNd8A7ChytSKqJAUoD7nyxC6eBtEAcAUMIMKLB9AURM34aQ0TYNvFC027UZBOE2nBcdt dFrNQgM5HYyFEJTXHJQ8M1MQwIAy8o3knIwnzUJBBRKcwQn0cM8RWIzxnAkGWIGW4EP8/2MoIHGb EYABQ/wJP2AERgAEt2zCLVnI8iMufyyLs/AbQGDZn/CJrWgEQGCDIuCAwEJSGqoMBTjUImCLIQ0J QeARP1DcP1CCEVjJCfmA/umQUfFSCgrWMngBL/AN32AM7SkDFkgNy0soggiAASABc2vXnmSAESAG FooJMirY/ZqPvEKznEGmb6U4AIiZFhAQCogRH6ooEWC/SdGv+cimDO2JJek/ALgkQw0wVtOhqrm8 hMmZ8yERpHoBGNuxOnoB4IgR8AqadrNJIoGlFTXYGGueEpg3MthVgXiSOATBMTGPu8FOrVSYDWvP InCDkYiOQSHHtyiDPdgKIxgB1TDGnP+rIxF4pOgdIQh0mEAJWj4bA6IVzdFk2tR00xeGU0E7tDVJ gdSx08/UJBF6jaAJWwU8gLjVJbNlyOAtAY0QiY/giQSm2AGogLerWPZgIl/NWwm+ikGxiswYiWNN l/wzXI67CDYYBKpQEhp+oU2RkiHV0SdWFxDAXIQqgY7wCEzRMIZ4C6TqISB8PwmogI6hTQxwY15p lhp5LUQijTJiDHx6mdwNAOgtgXnq3z/2A2ggXnCrEiwtGaga1DdiC9LtkPsFkJHrCot7MYw7tarJ K99KIujAGKsqHPLdDXV6GHm5O6LBkTrTqR4RI5uqIzITkFzTK9gAAZzjrwr4kBTYHjb/CCOKdIAV GAO9FAh6MrjECDuOWQjoIAmKfTiDOJAXUIIAbmaULVETPQwocZA8hAGKLS67jR0VUEBUJYwJSCKB SYxnOeFXUWE5MU0YfuF9proZrmEUkB0+U5LOWCzXChEeFhgFhNsWENzdRA4HgOCQqAq3IBSs8Fyh MIneHS4VMcW8WdWLgAGO8Fg4BCqZiZK0GNIVUD2FzOPJOL3MGDCFEEUmoSfRqIB7Qa3A5E/RSyi2 KeKeQBN4uYA8RSRiVoxqUdW0jAkH6JiFvgBuIR/eUTWneqAESlfNuw6ijBi4zcKrahfXTQbi7a8Y StIOBjUKU7M9MIIga+BEGzkLuOlR/96y3iLAm2Akn3AaAEinrLRcBIEYAkwaNEoj32qQiVXjV14B 1GiANLI1NzLRcVkjHKEAFdCpQAgjtLTPpKyNCgANeYEc6/COuTHmb01jMoTbkBBgfKmRPeJWjnmf MfkxZYxCmz2NdvyYdxYReT4BExbae34TO9nn4ObnVLJa3wDo2GUTjlos6mEvoZSd5GSUALoVimHd QQCYJVFtYJGZROOIv2WDgwyshJwQ54Ge3bGN6klVyTmA43khtCADDQkkicmWBfiLqiifC1iu/enT SbFJc9Fst7UplQCBovheaJlJ2+kioZRQxZufPYaMZU4B6Buw9lmuXZqr+WAAvrBWlf8Yz4ZiJlcG AAbI290Bgdwgl9JYssqt28n4KehYuMECl814mPPpIZwjmbyQwchk8QvgTD8gXaPhayZjOiLDL7ou mZqTkqSSIcrYMKSZTYPDEV+mD03ukbpY8gZYjBfrVHIhEAQ4msHhGkYak3M+7N34gLcIpt1KAAXA Ixh0bGRimtG18SvNjhawbQBZIBoRGLrpHKGt4RXOrHwW7kFPTQ1spT/hM994FRbIgMXSjlclSobx TWCrgPZRQEGyiQNYFvLhjBhRNfCoKPSRUDIABJKwgDDbQsowgp/AnxGS5T2+DrOwDQUwlyhZgYHc MQIahD3wgvyR5Q9YgVo5tQeqdUf/jrGGytsJB5HtumQ+8u/UkLEKqBUHQIskEZhqIpq7O0WLuiMH cIndjR0/tkEjmHAMYBtbiINc+1cQ6AoezZaseQ5BIF0yIkECBg7qKlml7sX+go61pgxKhJl7qeSz farFqTkW2AMTCT2VUIEar+tsF7ygI5LhyWueNo3h0DV1/K0bwTXI7ladYrMyX1UHiJJeqyc1iuxb S3kp795j3sPiNAgymjRtARBxSYAMA5dpPOFCKdrQamFCB/o3Je4Zht3YReHWYaytpaUPkPSFGoAP iDCysuRc6YFAwBh4CTt5ebK9aCa+ktCNWAG4sylRW5XN0C4wJ2atcqNEqhdgb4y9/rvxRq0fQYhN c9c07lvsu0MoprdOkWfBJFEu1l672kEABVuBey1DCq0IE8iMMkABCVsOiA8P5qCwUDcMXH96Y/eY eIKo+DCYdGcjc4FfdxeS3kCqEsuwPWe6FiN9+HsrP3ABWK0AQYIN9oPidH7M5UHy/OCp/hBG9qPH gsevBZG4uHhehhLG7YiUpFH5MzuAVBarFD88anEM1n4IKI9yW8ujSPOr9DtrvSijxPSYD7grqiSR gHFNCu55bPz5oB90QCN6zsiAQBEU5X4WeNQhqP+NIHbSlhgZgAAgUAJBAAMYFAHkZ8yJCQkOGIiI ICJFAwccTICIIIEFFS/GiEgg/kEgyZIkDYz4I8jLCQoJDAwYQPEAAwUQK8aUeaCCChYhEgwYWZLg yIMJzaC48DJnTAMIDtysCDOogQQfVpxQYHKrgRJ+yqTA0MCABKZSKTIlaICBiBYXDHD9oPUADEJl WlA4EJQoUaY5+RI14ECEioYAAhgA0VDoAA5s2qQIMYEsAAK24kDlKIKB0K2ePw8smyDEmEElElxo ocJC6hYiDnQGLZukBAMNTrTxY+JDhQElD4DYvHc28dq3yej2vVXCBNdAg3oGLL2vxQss/LBxELuk gQotToyNydcsWr85D0xQUboIZ9DAWaioALFpxQMIntqHevbA7TF+3HDgG1ED/gHXQgPKGfABXlVd gEIZgiDlxRhjpDChFyh44YUZG3KIhod66PEhiCOSWOKIlJiYIokesoiGGRnCmCEKJ6CQgoQsZZDB CSmUQYYIbbXgFlwAJNbCZNsRtUBCYGGgwFlP3YefflPJ1EAILLAAwpDLFTWCGwuFEJ5fZ1EZVE6C qdCCBWRtR9IBPQByV14wEWSmWeaNlwAIK4RwAGgDjBBnWEBJZ5540q0lAnjKuQnCSyZ8lcKaBY3U GV8AXDpUd4VpFcABimolEANsrBSCkyRZNkVEB1zgKKbRvToUrJjadkIZRmDkWgMTnKDCB1sONKtJ SBpgQQuCsEFCBXAJpYAI/7/GOqywQ6nVXBlK+LnVAIQ5wGa0xWFaaUwKhPCCH0VkG5sEzjZEJ7WA hTtdTAgcx0gRCHw2QAUrtFDBRHTWSR9OMJUZEbn+KaGdugeEYKBQxRZ2AQY6koHGCxiO4YWNXrSA AoYcmjFGiyMKkmLJJFJCSSUpo0iyHi27PCKLaXjIYYZgZJiCxza+cKGOOo4hyB4MnSCkQEUeGG9o C8AACBlG3kReRDLh5NuZemLZm7SYDhCBSj4tNWDAZZmZaWAN8DtBmyN15cfTecEb73SU8sWWkULF 1rUhfgy6V9y0FRRaYA6oYKpJDICgAAd/7IECBcyuPS1tB3ygwgRBMXDCCf4JCLSAEoKAkRWjRNpC xbwWfJBtSQMcEAEHI8A+AgcRMIAAdNHVZgELZHzAqwgT8KqCA6MTNxtBCWCA3Aqpl1SBCMMXXzxR rJo7ApIKqAACbNHLFrACJ5DxxwjEE2ls6sNxiTve8zbXRiDWe/bp8nodOredflNnG2l+lIAv4AUm rXwp0NmMTjCGMlzoRgMk4Mc0tKEytAgNKjIRy1I2wQlGsGYbipHGZtRAFGRgRiGEoBd0lIK3HE0x AQwNkbzytMn8pS+Gql+eRMCCE6huWJ4bxBhMdahhVWpA3xpIgvjEueUsDjKPEyLeKKW0d8mEJ5tb DgOUwDcMEKpS3BsWAv4q9zjaOAAEFbCiFzCwvS3+aTBY7I4RWzgIMzSEeJahglpQ5z+B7IQERvjD IRgRCD/4ARCIMIQSesABvXBpAN8DSQU0V4EJhGAzbcqXU6BiyYkwqjbNIcMLXkOSAVgABAxAY/EG 0AD1rOCOR/OO1kgJxMDojgwlyCEeI8kAb7kScKy7gLlWAKyB7EsETsLf3IpJHQQ0Zwwv0A7guqim mwAnBScIgeZO4AUE1ihjC/QYhmK0oQxK8IIlsqA4VwTODcZogCBswY1y9B0MGNAMLaBmZF5ikbYc yFKYcgAbwLImYhrzUnQzpQhW0EqTdAUQDAnPJGlTnAEkgDCX2woCiv7gBxaYsaGfCdywWAcCIxEP AXBiiJM4mkuDsKVPn3RACFbgBzgqgHwnBQBwslIgDJCFn21w3C8rU7qjWWBZeHQeC15g1I8ocwxk yM0gBhEIJZhgAcQjCMNYYNAQrAaS2iveAUbQgyQoIaxGCGsSimBIBFRqNEVdwShTyLyZhotqMWFV UdtzEhCowK5wjZcBDsbW7TRABNq7HVzVssgxMJM7BV0WQOkW0PFYxAIVEsEvE9QCUTKAAVaSJmuo ecALVUhjMvIYB7+ZwRDJLJzlLCc4NQijbXpQQinIADVPgAEMvOBpFwiBNBuQ2VMa6HZEQQAJyMAC pfzwlU7U5+T2pf/SYTEABneBoUa5pxaeXICWA+DnQglbWMGsAIUlcYAb2mAkXBa2i1l5WCP7mYIv 7pU7jaSAs1qA04pe8YwlmSPbKLAs/a0gwCIIAQguYAHW7LZoLBhDG5rqhhJIFaHGWh5WP9CAC7x1 o8CBgRsAoZA2kCHEgBwEIxDhhh5EYCLeecEKEgscobrSAAtwwAhKAIMb49jGL2DDCIAFHE/GF3AG oEAKXvCrslxXBAc9KWBkkkzKDoUBK3gNdDhqqcdC9ntWbetJjBWm3/K2IRTAAGmwGVrYdtOBZjht ilS7WnG21mavZaBsaTvN27JAnhYQgTQn8Nsg5bMz2/2IqQCmxe7+TbJOBZoodz6Qsex6t7ARzYpJ EFCCMSyouqRknaKOeLQSsCEs6N3rdkVAAQRdhQw9FEmQVyoCDExAUad2gBFImq/LWBJ1DXCeCp5V gQY8BJoHSIACGmCBhr2AqUoYAVrxdhsWfOAC2btwhrmyr6NadQW97lULirrUpgaiCCOoHJagBwA9 wXiLa/nqHwIBiNzsYQ+A9ENTGZGEESyAAAKJKLRabRCLfCC3LyhB7GRXghKYu9WiKdcKWH20D2SJ AZackncdG9DIdvsDoyvWPH2b2TBTIMHXlGYLMlbAnWWIQxBk0ZtBBDMUkbPlIGqRnHNGwDpTMwR4 vksov+NnBjj/ANCjqw0IXrAggM60Ng5YwVZ/swJMx1TTaKyN8xiNKSmDzaR7lUAXVdAAvNGFpOqS OnHYIt4ufsRxMi0sWzIg7XaN4AUn7KlALJOIBiggART40Y8sfJOGyiQBE8Brsp1KhAjv+0ogsMAJ lIw6PwVgK8AJ8JTF+OuaFHsCFQhOt8kgiBIrAQYvYIFQPQWCbm1RApRbARtab1Qswf4jyCExIpIQ 1ao8i+6urM1FSlAENvhBEE4FZCAC0W42lKB2a8+l6inQbehZpAIw4CSOc6wsibMJy1k+AQugfBLv hIABCUgAA1Jzgo4YfeQ0MjmZ0wyykcm8gvKXuTldVHON2YhC/jo6QQZ2DpKGNcT4Ld2iDEUCrMAL /AQxLQcpScCkhcpAOAALzJ3WkdpgrMm/od1xhQ1okN1Q6MsKMNqgzd0A4EdmmaB+LJ97iEB24REJ UAilyYZM3Id9oEV1fco0fYdNlMANPeBW2B3eKcAFNJ6S6UVZUMTayGACVEDDBM0gJIxyIAAIpIAI MJ6SVcAHqFLk0dSeTJnfwQS1BN4ECOHufN4gsIGR4YunWADqEUfkScApvV7lfUBQVQBrBIcKHKDn MYK9mcBg9BtcbVcJKAEgNJXbkEGPhFgZ7IHwOVgPOIAqJV1taFnqMMAIFMEfDAIhCMImcqLwARIb rMAI3NKV/02H4OwSC7RADnXHPD3E+Jlf0YHFZ3mMydGIN5mWm72Z/FUQ/dVfGYAMB8mW5szTbfFI GWBFb43fKa3XUETge41a4HSgZ1iW1Q1AwN1NB0YjRAlWZnHAwQHfHrAYCYyAA0BENHYP4cBXgrxA Q1RiD4SVErRe68HAChCc8nFPF7GgBEgZhZhRviAAA3BADxSBEhRBgJWAODrALX1GTRVNBpDfCoQF Le3XZTTArvQdZ+QPwZyFTDSFEvJWg4kPXAyA81GhIxkb5NGGs3ThUnCkunwSf/QcGRDCIwyCCyyA BCDGGg5Joq3UCqDis5DjFzKGRQRhmlTIHpDYH4jbL/HkRv+hxB8wAnZYVZAESeEIY1ExGCM8AiKw x06Cy0apnnW8wB7t4R6UgTItkARKyCEKAiFEJcLZjsWJDXWkR8NxR3P8xKp0RAuswCGiwAGBAWmB lhfgjJqtGc2YyMmUiGJW0Mrsoh4oJolEpsvQXMjcX89wk21hAAtAEKb11lMwQGF83epAXAsogHTI zdghyUDoxALQBAlkyXwQCWz+hEY15dachAP8nhsEglZm4iAUgibOJCC4AQyIImUES/TgTWjC1wGU gFEpgSFEAk1qYrwBkrzt4SEoQQmc5gJWGmv4yUEcoOUwJQI4gCAiAiREgiQMwiaOGCQ0wh+QwKkk Z4EEiVL/7AteaJQB2AItTAAFRNIHAEW8SM2/lImZ2EZqyKT4BMWEKYavMMAHcJmoEMbzUIlElMeZ VIQCoF8bFML7DEAA6Eu6xeC+TFkF3NJUgAa5uEZb+McjMIILSGTqJQAJsAEnfcfiGVvRCGgyMl6Q kOEg/IEJ6BfzzSYgMMIguI0EpkDhGNiBtYqitECFtEFbIl+3BFHcjIeWjaZA6Ms80Y8B8EoKeN4Y /KWZXUiapVyH4GLL6SLLnIjMVSY6jdZoiVAIHRBYRIaT3JPocAdtwgZzJSdu0sZaeJUSuMEfAJ8f tIER0OM4qsDc+RtJIMAIKIFWamKPTMimTkgZtAEhCmkR/yTW7rHFF22XEgzCI9DkWVJIClAlVS4Y GyjEC1jAjFZatPkJeElTdw5EpSIBItCkILSBNrnqlC4YGdxoJ8XUb4BACDQMFl0FeMgGAggDLQDo szDA0DVZDM0Ng7SA52UHc5wA01VYhI7qj4nSgVbEfZDJmUASZxICGwTIiEKiNPIE0zWA7VDNv4hH aPyYA+woGfJPvXKPlBmVa3jhuWFVBfzGBaxgw+wOTcJAwuXSdrmBko4BfBTYCaTOhVqE4O1Z5y0i 8m0PNLJQnYxGChyUmIJpROjdlWyimY7Bi9SINGXAxqypGawcL1IQnPJsiLDIL8IICA0QjdwphjwI pmFRUP8cAKfExqccl+4N6tTSSiX+XlNlYiduIiEUAnbcqJZMqmAUQSC051kWbdF8B4FRU5rkViAp AYyZ49X9jkxYaiYOjQRO0wVQAPBUpOZ9ADUd4ISsAK8uZIHBRRdJ4E+cBAcggVYKQhnI3TQtXgVU AAUcWLMqGIulm560SkvUqH15mkl0DREcQy04bLpKDwXyFUd8a7wuwG2Qa68xAOWGKJE4j4TSENlQ DVocqFpsFrhyAAJcYbZo4XIEFtOxpMA4hYFWUmZNBH98VNAMrCtFVIDFRwIYqEethlAgxhWK3+CV 3Mj22EnpixEMa/dZALAF1pKFRhgim+cNQhFIFWpCYwP/ggDpMcoANEdLTEAoOWsKmOWFzCxoqROG CKaawd/PKnBqeYgv0mmaaozmHC2ZCgJDYAB9JUAD5ODTRip8KSfeiC3ZZqqqKRPsYeUhIuUjAMIs BZkELEAPBAIh7IGqSdMFTIACeEdDQMSw4TBeeVsn2arxsIWflQAgyDCFzBN9RY14dKSxFVRRBZd7 gMAXQa19hWcEFAEitCcShwAFABsm0cdGGFvD8AsLAgDi7F1L2A1OeQYBmABUQoMuRBIbFpaiGYvn wYDzMJ1ibMYVimRg4a7WBcz9NFbgpUbQyKsDSOhhrGjf0Y8Mkcny8ivVKKENyRsMFClxyA++Tg1F bMTm/zGWDGYWNEHSUfJPEMuGOmbsatjTsP2aoQ2yREBv+JphjxUTgaTGQZlSmjhrNTVMGYDFX5oB ARUwN7nfLbLcAmOQimSQA6fTANnpyR0lS/jyjizjqxggSIULoW4zrTgADPgBIdgFEuetBVDAR51A lHYbgyXlCKBy8aAEGzwCIbxgCFjASxCElF2zWsBkQRmVCoRu9ASiIA7C0HBWA5RjohkhVISRT57X Z6BxRCydqz6OSGlxBdewTUSaB1bFFRJG4hzEFCvKGmLFqW2FkjCCIJBBMujCswS0QBTv1InGHQsC DBTUszQewGLhFlpoQ90y4PTFARhL0MDAByyyFPtKEf8WitTU4CDzx5WUwSlzTxH5yjAhKEUQG/ZG CbtOTeChHyBBGBpt14L5BEJrpJTYB1dLckUIHveRgZDacqwIlFD3S/5q8Dz1sjCSwTALMwQzEDdt DJtGkDIzc4m0lv3NGTdFswRXCFhUUzXtamxk89cJ0bvIDeuAmh/swYskMbBFhdntcAN8VJGRgYfN UtwSiI0+LkPYcN51NeEkIH1MXITiYfe9s7Z8gBEEn2NfgE1g6IHurlpXMlasUEkwQBfTxGjjBQOU gBbzNrABDBTtB6+FyebtWUtEq9qYxAKUQCBU8AoQQ0vTscJB1AUAMDh2IbdEKGwAciYXFqt8qx/A AML/Ad4pbUb2vcsgp8W26g8LyBsLEwdB+Ury6u7utuuY7IQB5ca9WBdbjF6YqKssT1yUDIxFWMnu YEdcpyZVmU/2mdJ9JhgO7rXODLAHGTNg5+zKJfDMtSn9JfNhuxb+MVAx818IpYDOUvOd8ZaBlIk+ E67xoFRCzPANwdoGDgRbTIrSDdj7kgFAx60Le4VBS4Y9ScR9ROg9bzWFr8pg+KQZSw8CwEB7DvOU T0UlpfUMonlXz4vzzFMPkgRLOQThFG0IgPNCzFNGRPJ+TDIJDobkXoAUTUC0urlzajZLfIAw6IKj oLb06M8YEIIfdNIHFJSESmiCWKi/FQVqtMAlUyyz/yoZciIa3gRLE1WJDQmCH4yP8VSvo8CyfjcF nsgQ6/CKubyP1DrUe/iEVY+H8koFR46JAkSvEwZIMSGAl2GvJXmHW4Scs8LTiAuzztxWCJ04jAj2 YKeWMr84jKNTMc8INXlMje+IyOT4BVsHXgQbQ2PFj/s0kdBaQWPalNNgdOvjCj4EaFaAAihArBUV EKORpXk3pvV2JD/F+E04mZhnQT00PI9A8AG8VWvoujLvVARMd7SFlwNTmOzElKYAC7BBQWd0wVgE VKR5efCFYBCGCmBARzTEVSjuSUQ5S+SFLeQCiQ4R1dq8XGuSCtAbKP6tazgAigK7gKrubcoKC0FU uf8oaQkwy7BYifa4JCA2uhO6+aAWkTDhT34bk+Bc1wmYC4NyoJeaKEijT5amRdmTfeA531srAUZu +JDpSmYVW8O4heZJzAagwIaQeMaiwAVLOwp0DM5uSMVkEM18yIdMJogcPmSaCBqkAYvPTARtCM5w u94abY1H6mfxX8r3LypeQEUmZISmO91wIEoYAg9FhkuE/LDVu+2YfOfDfbz3FeNhicXPhqUpaZ/N h5oLDOtERSf7/nETdyZFB0p4N8zHJSE/vF/MpREOhgp4sEF8ABZRjrF2/B5ERkYMRyyTjZoLcqnN 00eFAJtjEW0s/B6wxGTwZy1kK0ybREwzGV1p9vL+AOjyfIAD7NlOT+pJ8MpbY7I0SjpAOBggAUBB gwcRJlQIQIIEAxNakAFUBMFChglEqKhgoGFDhAQ7huz4seOAAxNOjBmUZEHCkQUPiFghQsHAlwwZ itQZMqdDAwkupCDjhwTHnQYstDjRgAEDBQ2CtrgwocKFDBlQmDGTAsWYMVwznEAxlmwKL160akWz lm1bNHre6pE7l25du3TjutWr9awXrmRPhB0bWPCYMl4yYMAwocEHFlKZNmXwYcWJBAQL3vTokMOf QWOkKjhggLQBBAcOJECdIAEDxqpRly6doIIIpRMMWDxoYEQgPy+WGhgwnHjxAbJlGydOmoFMEAf+ dAMY0JmQlxMUDtjcKYF4Q+0vSyKovRQzAAMfLqgG0YIFG0JlUgTnCXK7R5cNDVQ4sb/FYtsXcivI ATb2sI4CjgiwpRYGDAoggAYfPCjC6BQaoAEVDHsBBAouOIEFET4AQQQHAgRgQgpRLMiAC1jwgw0G E0pARAbKS+jEFDNr6AAW/Qgkghp3s2CF52zCkULvDqCghTYQKaHECitYQQUSgbxPM5F6Ii6BEFgg 4wUa53MoqaVYYwCqFlr4oIEKQggsq626+oqsOcfqKy219FpLLj3v6tPPvPJkiy+/6Cz0qrHMgO+q ECxo7DEKFFCAtQQcswyknCrsTBDQLhhNuOL/SDsNtVFVS26g4ww4wIETWgghgSM788M63Iarjzvl atVpuPyknGAA3RhQ4rMWsNPOoPowXQjJD6QqEYEPQmDMNjIIQSM+3LD8yMiLQFBhhf7GO7AgBIr4 7LoDCEqQFugUcnBbiyTYUagxpBShw5lEAIHGd42UoIGUyPigygZAZJffIyVQQIQx/HByoZhGNOpg eIeTkYU2vtQtphU+QLfKbYG81YB/vQKBo57wq6AFFRqYNIGkWmjUghe+SqGMrVIYwwwv6qTTrLPu NCNQt/ws2i5AA73zrBT+KhSFwE7IGb6oQZvAMWJZW80xV2u071gGkmCE0wRIy7WkXZEr+7vl/w6o QAUVLPhVNwSQEJvY7GpFebvvbsrJJBCGNDghA3oYhAypsvO6p4M+htcAB1Q4QQGDDqBMBRE8DKS6 EyZIfGKFHHJApuvG81U6EwYpAwUMLitI3YokLOjGz6VDySsWWEjhAgxOEKHgxmkPsgV6BS+oNoGC h9ehCTDMOKEBmntO8eRzNECBE14oo6iFBmBeBAYk7pekro9DIKkxWGCA79BXboBUlWMmuIzDvLgZ aOvE8oILFPqyM62h9cQnuvCBgASkxAH5YLQAAjAtS+NK0wZzlatILT5e2MMYLgACFnBuVKnRoKso dIASAAI0FvCU2XSlnPoQp3KRm5xFBjACP/4cDjubAR19ckSSY3mnOSyTG0Km45sUYMBjwJtYvD4A N8w0ZwUrYMEK/GAu3CSLegw5QLcWE6UQvJABf/BDCrb4Q3UJbnZV3FLOXrBBCvCudx2rIgz/9YIX OACIFtDXD9+YGW6xYAwfwKOKavOB8OUxMwc4HwtaN7gLcAxdVQwZdzDCghcIUicjU0EL3DcqiKTA AhV4wQXPYj+0pCAsXDgLCn4GtP8B8C0CnAsl+HBAWcKyaKx0y6B4NhamPU0xGLgK1VSHlfmpgEst 6NwBEHCarRUPSAPwJBl0RzYUbsZW02PIcpoTsych5AAwgKarjEW98FDGAtscVwnaMIalDP+EkJnJ DzFzIwEmfusFqUNceYz4LofoJwQUWA/rThcIdU7RIGNsl4PKeDCkYIgFIGhApCYQAhDBrp0HAcoK JlmjAVjgA4msKEPyM7wSFM88HxgROz/KHYVJsgJ/hEkIpnSyN2ImJEhpwQtE0MgsXagF4CPNSdgj 0TbAh3+iNMMY6nQWLjDtZ3cqAwD3FJcB6iGWs0xgLVkpNKVBcDC9PJTUUBCWMWyqBddCQGmexYIQ kJRxB1gBGTaogE/RRyd6zJYec+Qd8awAhKCrABkGOsg8hk4EfWWcA2h2N2tWEXqYm9wARLefEwwl rvn8HHciC1PEAQAB3tzsQQzqLgghFEL+E3sI9lhQAVJZQAQVoOhHzeM2nD4JKR2zLO1UyqUVwOgg lfueSwcrJoyaTCEK+y0haVqS6z0RTPSx0NvUt6t/paBL70FlonaGluz2xZT9uxNUo2qXAlYVgQrM atAcuEuyJMaXUUsUKVMiCLKGoAGfOo5jOqUbyMqRWPbFIU9yaKVjZeY4PZzAxwxQAmh2qm/Kui1e udMcyQHJACT4ShgffDAkLiW2hYUpYPsLW+lIOATfOpAEHABNzv0xQbWADkIf1BAELCACJugBD0aQ Ywcw4KyNa5wCuMSCjomKAq0N0MeQDDolM6QBXBLBazf6gdcO2CVL1tYOD4AB3DkAnwD+uKL0kpfk azbnMa/6CPPAjJMUiZlxOdoR7hrAtwEkwFtyTdXLQmAzQhDiK2DArirB0L++BPq7aEhDntIwFz4J Qi7kpUQlZElAuTDaLofWi6XnlxadZZepLACMBFWQgveKJQV+IAQZTrAY1RynciwAkJo/ggASvEB3 idsJFSEM4K75ba8gcGnCaL3OBuP1ysV2iW99VSO3vkAF4jqSldv8vNpMoKRvw96F2UrsaBubyvEC wX4i56sKg4aILrEFLVpiEJNUgARFMMQiGMEISDACEfX+gxKIMAIeA1chL2PPkE9Tm43IzkRrLt9Z kynTfoMgBSt4sYM2akIRuxMiQv7/o4ykPPFCanC3zXQbJSuKz306MW4os1DUplKVNrGqDPKlNVpE qTOepdK7qwSvK6k6S6tetU+snN/NlNYXrkoQmPFBZcvHwN4LUIAxExCB7gT7NScGh29rTi6mvIYf yBnWIOfhFHQW68j8iICgBnEA7raY4c9BVgQU4OwHTlBir6x44hsOwW3iNXXTAfHc6rvIB2DAhja0 ARBsYMMYDM8GQDAiEsvoBSLcAAN987u3SfkQA0ZFsIw3KDoDQAADKlCCI0hBCkhIwh3y7YAFKBwm SdmtiRwkAapM+aMDWK4gEYJx2ofcpitA3kE2qhFzig/WjrtQQ42i3KfHnT8rG94e//ZAa6nt7Gd/ YSrT/JcoW7JFvDqHpaSxCkCg43JpdCJ6zszwtLGQYQ9D7OX7y1rOxY3kPLkDQQKmmddk2Qc8dc1S TFgGSGSN2bBFn6DteUTH2QpiAByj1sLujRrL7WKCUUSA1rZI47wMWu5uwhgABsDohfhuHW5hFmbh FoChGVDwF1QQGFiwBX8BBbVBG7hhBrHBGHKBFkgwB3WQBGkhF4DhF3yhFoRQCH0hF2phB5FQB2nB F4yhHLBBG9whCt0hHu7BHbShBn3hFo4wB3vwB3NhB3PBCJNwDMmQDHHhFtAQDX0QCJGwFooQB8sw DuVwB3tQBb8QCX3wDudwD+WwFv9+0BfgUAf98Bda0AVf8Aqb4ReYAQWbgRkIsRAVURGZYRIXkREt 0RJjMAZhcBs4sRM98RM/MRtEcRSzIRMv8RQZkRJVsRAhEQULsRmwgRDDcBbD0AsDEQlxwRdk8Rb5 sBcF0ReAQQ9zcBCBYQt98Rhz0ARvcAd1MRh5ERn50A2/UBp9MBGXERp90Q2BARiLcRZyYRfHsB32 YRzJsRzN8RzRMR3VcR3ZsR3d8R3hMR7lcR7psR7t8R7xMR/1cR/5sR/98R8BMiAFciAJsiAN8iAR MiEVciEZsiEd8iEhMiIlciIpsiIt8iIxMiM1ciM5siM98iNBMiRFciRJsiRN8iT/UTIlVXIlWbIl XfIlYTImZXImabImbfImcTIndXInebInffIngTIohXIoibIojfIokTIplXIpmbIpnfIpoTIqpVIe +4EfpvIqsTIrtXIe+8EZzKEf+tEfqCAOyBIst/Is0TItobIrzWEdrLIfoQAZfEEd/iEO1BIk+SEf 1oEZcqER4GAOuiAw5+AN5qARdKEc3uEt73IxGZMd18Ec3gEg/UEL2yEO/mEWFLMxKbIf1sES5kAL QDM0t2A0STM0QXMDNgAMdGEdzFIzXXMp36E129EfzMEZMrMf1QEZagEKqGAfiOEfXlMi3YEOQJM0 jfM4kXM0QxM15YAdylEZiME5/4NzOneyH8zhOt/RK/1hIP1BCPMBCvoBM6nTIDmzERnRGdYgOdVz PY3zNIVgHfaBHZIBGdRhPO2zJmnzOs1BHNeRH67zNgESCoihH+TTLu9TILdhC0KTOMWgOE1TC7Lg QbVgPbMgC7pADDAUQwlzDsphH5QhGfjzQEW0JddhO98BO9WRNp3hIP0hDqiACmZBNkd0H+GhNJ1h C+hgCzZgHXg0Ct/hR+shH/xhSOuBG3IUObVADvhhSQG0H2R0RqFUJc2BDrYTHWkTPhMSQKM0H3MU QpuBDujgRrlAF3ShGMrRH5zBEgwzH8jxRo8TQis0CzaAFsiRH4hzAzp0S/W0Hv/9Uz/99E8BNVAF dVAJtVAN9VAPdUX3lB/rYTThoBycgQ7qgQ7W4DSvQDGPVAs24ApaE0zVU1NzgRy5QTkVwEwX9VTd ETKr0klZ1Un5oVVZ9VVhdVVnVVZh1VZZ1R/o4CthVR9q81ZnlVaBtVaD1VaZAUtR9R4jlTixoBn2 4UhHcwOggBzrYUJHMwsUQDr3IVKt9TixlU3HsUsVVAHyNFnN9UzNYSL/sxz9U1ETkjbP1R7BFEwb QQzelFzbtD0VoEq3FVqPcwOEgBz1YQvSUzmvAFzj1Vxp8x+gIRqiYRz94R/QQRwZNhqgQRz74R80 dh8aNh0cFh0a9h/44R8+th3/0gEawNUf2uFjwdUrI5Mcr7NiL3YfPPZkowFkowE4x5Ef0MEc26Fh Z5Yc82Flb7YdGBYd4DVh59FTP/VSyZFSSRNgy5Fp35QCTHVbkVNqlTZZ4bVh6wAayLFnxxEavrYc wTUawDIaPAAs8QBs90Ftz9YDELYOcqAcHxNZHxMsydZt0fZt64BN8UAYyDEd6uAc1VZb67QO8IAc 2wEPknZr4RFq1XMDDHQfarQ0S5UcLzc5tYBTnxZJFQBZIVdPu7YfUmFtx5YcyRYZyhFs+WFx/RYs 1WEXxjEa/nYckcEDiIEcTxdd03UfaPNlV3ccYdd22ZQdbIEco6EDdFZ5cSBE/xMXdsfRFh53dNvx RrtVX7UVPaM2A96yH/z1X+WAWie3cq03Srv2bT2AdjlWdeuAdVV3H/pBcPfhdMGSH9jXeGu3AOC3 fj3AHFG0Nt0XfvNXbseRff02ecsxGnIAendWccdRHIX0d8+3HUeVczOgTtegSzcAA14WfNdTCxSg PsfRTbM2YCsYfdMVbPuhDupgO49BdT2gf/dBbN/SfsfRLFvhduuXCBQTB/63HLETHsxBMaFhhnN4 HM/BgOV3HDW2DnjAHNXWgfeBH+ogFeSXfas3hdWxHjb4X3VBcxVUCzSAFqoUHgq2aRVzDdLYODdA BbgYStOXY+ugFfYhhscWif/D1hxxuBx32BZC1hzrIIhhNl3bsnX1WHmZOH6joQD4VX2p2IrxwBaI QBUgloLjWB0jVV8RVh/gwR0SU37XIXyTc07FeHLHN5NFdI73oQ5w4B92N49pWGx5twNktBU6gE3b 4Ryat5UJeRyn9DHN8YhpWH0RNnWPOBkWuAMiGYLHwZKBF5NV+Rw32Vq1toqdQRcagRHooEGz4E03 AAvslVS1lQ7UoDQxt1yneTzhNR3C1gPwIJY5NpHbtxz7mBxbgYmjgQjKcZAB+DpFd56LGW7N1mLV lgkW2AOg1yqt2AkOWH63eJ3bFFq1wGrzVTSTU07LwSq5IT2zIIN3lmBLWQX/tFSiNRNeexkPCkCB Bbp1+Rh1/ZiJT1cx/bkcI7WIh5mejbl1h9Qf6qAAFHOKyXFjG3oc2TQaItqkN1k5KaBT2VNBM4Bf +WGDNyBUx/GCkfQKXtakqROly5EdAoCl0cED6Fd+3ZZ3C0BGU6EAwPWn+bUOOuCf3VWGi7kV2Loc 3fmAC4CE37YAQjQa2JQfPGAIytFxpZmrl1pHp3UcG5U9RVh0G1WEEZaUFfQK+Jqrp5OVx3EKWLof PMAH3lIYZBQPAkBGVyEAwJW0tdUD4tqmIfMcoSEAivm0EbYfaLkdAgCa98EWAIA//cFxq3iwGdcD klqil1qEy9UZsveE2TVH/zMAhfehsdsTNbE0YjE7OBcWGpChef2Bhv9BFXDhGFD2TKFBGGyBPne2 vG0BROXXFmzhH/IBGnbhvHsZQNHhGGyBGNzWH9Q7GeqTYaGhQxnWFnaBdfsbGRo2eQe8wKFBvneh uNd5VNOzczG1jbM2jN8hBrs0dD93uuegSv2BHYjhka97MSHcJ09clac6Wul0HGuUsqM2jCl6A8K4 hKdbA9QZGUC0pEv8LP2BNY3SK3vcxRWUArbahCk0YN0UVHfWEkpzA1CgGd6SH9pBxOV5yBvzOncV ULf8T7vcT79cP8NcywN1zKe0zNGcy9Pcy/WTiq/7HZhhq/dBH7hhG6hWOf+VMwNogR/qIRuAnB86 eow3QA5Elx+IYUDzgcexfNEZvSHZoTXrwRkkfdLvHJxRQBdQME0nPAvmoBnM0iyrPBny4ZgbvdRN nSFvAWHhYanZ+KklVAvmYDVlkx9EfbuJIR+e9NQdcgd0oNdvgRypQJ3TkR+owApwYRxnYQfAkyHZ 4RaUQdGNuhbScdQd87LlkdrfkRhY9xZyHdvjsx1IfMj/QR0QF2LdIU3pYA7mAEMf1ELnAA4wPZR3 th02Oh/YQcfbQUh1vSIZwCr7QQf4U5nJMdf34RZ8YR+gIDd/gB/KYbET8h90oB+Qwc3NsR8iIB9m 4RzVQdjPEQqAwB7R+x3/b+EA2uHYydHhy6Fc5TPcexzco5Md/CHR+ZEYRL0daL4fSH3fI7LfxxEI ykEdduAIRkBkreAHfmAHzvEH2BQZZqEWfr0fRmAhb8FA++EJqCAZgIAWfqAdrKAWEiEZdoAdIiDZ 2eEJEh4IrGAWcIEYqODXfTMOnmAc733ob4EKkOEJEqEdoAAKsD4R1gEIEqHsn6AdeuAHEkEZbkFA x3HqqYA3dQAKDBQNdQAXakEZrIAYDEAdeiDtRzAOsjAulQHuoX2dcd0XRDwf1CHRCX4dcZ4cud0f iIHidR4iGeBFdQAI+AEZ2DQRfIEYfr0dkN4cI34f1IEK1AHg12UhicEK/sYxGaCgHdC+HSJAHSIg DmaBGIBA+pMhDrQwGagg+5MhEcjy4/dh7JVhHGtB60uQAZw/AohhBOKAHX5AB9ZhBKyA95VhFnQg H9CQN+MeIPYlmJWMSrkI7Hbs23er344dt249UcdgXw92xGYd2McPChUqEfIBabewpMmTKFOqXMmy pcuXMGPKnEmTZbt+xJCVY4fsVr6c6vKty9cuX7J+7PLlY1eSGMmFxGpKnUq1qtWrWLNqXcmgXdGF 6n786KEsDrJ9DlH28LcP2ax9BZH12Pqy3484VNoBoUKsR7kExGgBIWZFB7EDyXSEnTiinDIqIxKN WJiIirKFQNpGuAXl/lacH8h01CqXaEcyWoqfHGnnoB2tRBHizN0HJQ6xJ8kSlJu8jwo7dkCQAdmB jMFBdbeoPLEdgYoVWp/70Z1Ovbr1qkj7JfOFrLs6ZeySlfuXDNlPZEw5+pJ+vb379/DjU2XAz6SO fL1vZdynTuHJOOXsMwsy7SSzTztQyFcSe2idxB6DJfFTn0kSUqjSgwtJx4907E1ooUkQplRfiBFG xSCJCqao4oot9eMiO/38808/6vxz000s5qjjjjy+RJ9Jt1gBxRNvPbGDFZlNVFI+OwzJERBP/IBf j1RSh1SVWGap5ZZcdullTf1M2I46/FFxIYhfpqnmmmy26eabcNKV/s8TVvzwT5x45qnnnnz26eef gAYq6KCEFmrooYgmquiijDZaqFiQRirppJRWaumlmGaq6aacdurpp6CGKuqopJZq6qmopqrqqqy2 6uqrsErqz6y01mrrrbjmquuuvPbq66/ABivssMQWa+yxyCar7LLMNuvss9BGK+201Nbq6LXYZqvt ttx26+234IYr7rjklmvuueimq+667Lbr7rvwxivvvPTWa++9+Oar77789uvvvwAHrK8/uMQRRyJT LuQPFTtE8FZNtJBpUj4JlqROemhB0YMVbJVD5535RPGDgfxQ0QMUEz7Rj8Yc7+OxFSCLbODKQMzi ITI/TAiEh02Z/oTMZSYRc1QxKCGzS0z/GDlCVFPFkVSAKvVEk2nXlXOLVfmEtFAtEpuUjIf+PFE0 FYlgDBMQOkQwgg5An8ROHFtZvfBKtyDTz1k6IoGiwFlawU45yPzzA4M9RMWPFb5k6OBKG07InkgN 0vbUPrW8VVA/OsSYGRTq8LODUWbScjU7teBCyz7EUOEQUkm243k+rzF0NVQHzB4Bz/v44x9HLjqI lNiKw3V65Cv1EwGZxj8V4om4L/REeLUsSGHvaDVPYjkMo7nQhtoHzxHPEEr4oPWLE79PPgdktg+A KGW+fe4RLgTj5Oa3pKT3aCGYoYdhogQhind7C1s4Ij209EN//vgjEf+6Z77mNXAfO8BQAfnGo3YQ oxbEUId48OYPHZRkVvugE3H2oQM6mUkHbMGFcH6wnHLo7gd7ydoPdEALdkRgcAqTDjKg0A4zkZAf HtwHLZLRDjs94Sy3aIc/pFMQdfhwMkEckJLaATzUzWIETLldHMhEjFvUIgG++IxhPHMWJ+onDg4Q z5Huc5reACE4K8HekvrhDyjtoCg6GM5bEvGDHSSONxF8Xg90UKAjJWgWQBhBMmx2hCfoYHYLoQIQ eoA3563jByRpxw6eAATt7OAHZlJHCZ/Aj/7QaR/KAMIPLGdIISZykfx4giMh6UY4NmkHytnBw853 ssQByC3n/vtBOQ5ABblEQDioEwsxYjlLuLTyJUoy5eD8sTEgHPKNV5vFWCDJj0buIECyVMySSqjL fxwBiI8MzRMSVItkQOGY0uzHOjaZs5LoYAeJEKUsS0nPfbCjhD/wRzka1hle2uUJS2PIkRhwwE0C wR8J4eTeKCgf8FTRHw9TRxUXkoxEoCUC+9Aa52qRuMztgEwAMgvqqJC1DYGUh24bwT+ACcGsLeQW yqgj2vBTRXbIdJEL+RxvbuELibADCrsjBi76ww8tcvEWulvf1ZJRC3aIjQrIIYZV4YIfKiTjNB77 KN2iZ5JEGAg4+XCAhECKxX4EiDeZex5Vm1qfYs4CF22Z/4VR9vGPILpMbMb7oAeRYaZbzIJGYTPQ WUaAH4Ik4hb8KEc/gEAmZDRVOnY9nVv22teShLWpIf0HPwyQD37whpf+CMkv35KPH5Dwbq4VCeY4 4hMD5WMEdO1NJVmiJBTKTnRwgQI7XFtTQvKjkoHJ3Qj8wViilMSrDJnFP6zAjwNIJwJsMQguiJig +/yWFm5lUALwo4M70SIjtYhsP47AxVmUIzOzJSpP+BNQkPKDoUC4U0fLgliK6kiDW2SHMtSBt3z4 1R/t2G5QO3hTYojEiRBkC4CkdCCWqm8yMC3JP5miDrj9kDftNCt/VFaxDbvMwx7kjQoZUswqKnV9 tXAq6v6gqhD2UTXCHtTPVt9rBdOc5hYjsEKd2APkEbCHsCX5Rz78tpCQzGYyYRnBHxcSV+hBbsYD yuvKfgCF0wJZyDhEpQOGc4AlxiECT/DHP94Zh9GC2cEggcLvHHblLhJEy1DgspeDXKfULoQ3p83H XIRjEGC29rXI8KhItpqhPHf5ykU9SZEhpCSQuowKUFiHP6FAU6yqwwqbKUki8Ja5ZOxAB1DbBxDw Uw7pUteD/jgAmJGxXf1Z2okLiwAUBhjShci6Tr7ItZxvWCdclMPDwt3BrKLESSpiJrD+VBlsjpAw /6rocP/A6ZIZhOqFxGG7Hu3HZLAruX2wkCTKXt+xDf7kCwv/uTeT++edeIkWD656H34rJn2RcVbv ni8zUb03zJDx1KbgVdwH4IeIHxtVG0dPGU/Aq36SFlK2QEFotECG2PiBV5Wk9k78AMK6/SmlC/Pj dP6oCEj7kYB+yBUXuTVIlt1CDI/asCQaR0vHSTilONSNJHyBqudsiB8CEeNOTyhHLVwUktutzy1n obnNLd2WjeMV0O9eiKAXAgXjyLEcrs2coR8axCP4YurGq2uqeUsm3+IUg23hIXE/95Z+/Ggfvjj4 fS6jyecGSBmuBuJCGMAWrda6u2yJSDKYAgUDZV2mbSkQ43EWIHWU49hgkeU+cHG1cqzFg/xwgEP0 O/8gkiSibdZWUT4+gpd5y08HPdC1hGQJxwio0sPJAKSEyyGSHcTwwgzx9xMYoAMdmAkXYiGTKd/y j00SkqX7OALxjS/E5PNnk8zXwZA89GL+AIAf7RgBna42AugE6Mb+IC1DiGE8wB8BClZo5+mgoEqm Rc32DIieSDSWFODHAQhW8Bb/ZwVG9jw2VA7J0APrxA8zJ1249E4eQn8/wDQJoWEj0A4ltGrEMEqR JX5W4FYA5Q+3sEkJkoAL2IBMgmlOx3X1tw9Y54JLMhspJ1kllGduNHYMAUM+8YC30xcLCE1kMlDw 5yIAaE37wEc/kE0A6GFoYQWcVA6HcwQ94HjncyT/5fRqHCV+YrNdqZVBTfKB+vRQJcEb6uCBNJKB EAVQ+YB5TRYgmvQROdYDQBABDZVnaagx1ZZ6K+JAufM/Y0g8yUBLOMcUXSQiLLE8JjFAvOY/08NA jBM+MDEiKTFRJ+EP4FM8J4ISE8I9Z8KILcEPvMaJ3gOKC8IgouiJ5SMVkIgSkYY/pygTfrgg/EMi EGKJqDiJmjiKi4iKpDhBxeOIpriLergmuyMgEZQS7SBkT6APw3guCyOIzRiN0jiN1FiN1niN2JiN 2riN3NiN3viN4BiO4jiO5FiO5niO6JiO6riO4gIPdLAGdOAMifiO8FgPJeGOdJCP8VgSzvCOdAAP /ypRD/qYj/JoEvCwBYvojvDIDSbRjwMJkOwYkRI5HQdJB9zADFtQkP2wBWvADP24Bfa4D86gBQNZ kBjpDNxAB1sAkSfhDBypjwW5EPWwBQhZEtuwBRZ5kiXhj/roDlXSD3n4EvyADzjiHvmAD/iQD8Ko IP2ADzwzlLS4lC6hlDGBDxTilFcZIv4QlCyxlYm4iyDUHkOJlGRZFWGJHfRjEvigDlaZIWRJlpR4 EmvZlhzxlkjJFkeJlKXVlXlIlStBl99TIXPUlYsIlSDClf4AmAsBD4wJDyFZD43JkibBDSEJD5S5 IJEpHc5AIu84IS5ZHy45QPyAkwuRj/6TkSUBj/8p8Y4q4ZI0yWumWZprUBKouSWkMAOK2RLoMAOg AAozEAwy4Q+mUBO3KQMzwJtpuRX4AJwqMQ68OQPjoHW9KQPMWRKkMJw0QQrV2RLBQAolgQ/TGZ3n M53M2Q+k0JugEJfWiZslYQrbuQ/BgJ11IZ8zgQ8zIAP4iZ98aBKmwJXw+Z5SgQ/eKZe9SQoyQArS oQ73mZ8yIJ4tAZ6gcJ6ggB/2yaAycAz7UJzGeaGTKKGgwBbmWaAOdAygYDHHeZzR6Q/oCaAZAgrV OQ4yAAoNuhDjgJ6KqQ4DuiA0SZN0UJo7OpuV2KP7YAk4WZuuSZMM6QyWgBKMyY9boJkxuQ+xGZv/ FMINsCmkJ0GlBpmRoXmPLOmSMrmSW+IPM2AK9OkSM3o+M5CcK6EOJZqd5RkMH1od3Xkh0LkP9ikd 2pk7MkCXwVCmxMmiDmIKM5CjoICh9skWe5oPfQqfA7qnLkGm7tme7xmfVTkDAToD6nkSM+CfwSCo 9ZmjWjcDGIoWpOCdCkoT/eCi23OqeKqpKAGp+3AMnYoSdZqhwFmn/EAKpbogf/qmjiohE2KmaAEK XfOdvsmcZGqVCgqK7FmjJ4GjJwEPQBohNakS+ziT9niQ9WEJUboQaxCSKVEPqokS/rAFSzqa+QiP kumkDIkSOOmP75o7bMEN1zqttWmvDkkHUrki/8dACnmKp9V5DA66IOxJo1bJD/+qndIxDuPQnabg Irc5nP3QnaLwFAJ6nbsoq7g6qxKjDsDpsN0ZDPwwshnSnaTwFMHQDqawpxDKov2ADhlSq7W6D5OK py56pvswDqdKshyBsj67pxXbs7hjpskwoPkwAxPCq/xQs7MAnI1Kry/xrwFrs8z5r+6JnTjKqxZD tBlapi4CtPv5nbB6EjyrnfWBDuNgpn8KsLPas9LxqTR6quJppnYbnfjQsikrl6LqqGoJnKk6E8kA rLlDslVrEhw7A8e6EKDQliBECuL5ryfRndC6EEzrIY27EJZ6EocKqbd6PjsLrFELFn3bj/0grv/c Wg/Nc671ca7bugX1YZFL1JBYSiE0uQbCyA8qyRYziZMfGaWuuaQo0btr8JHMcBL2uou9Swfs4ZId 6Zr9miKgEJ2HihbsyQ+jy5+FOg4M0p3tUKPAaQrU6aamULKZe6r44Jwk4aJ527ccW6eQKrl/Ggww Or3OSSboC6Nk0psEe6jC6bYrgbVqWhJ1uqrLeabtYKwJjKEt+72suqf5y6EWwrMLkcCUmrQEHLHQ eZ6gyrnUW7e52rjOOZw1Og4CCrgNmrE7u6a7CrAwWrAqYZ/q4BVKFLomfJ3w+ZvBYJ/cK6cOnKvA SaJeUb3qUMR/ig9kegzLWbYLIaCcy6IKWsT/UvwSOIwSPCzFndOxYFGzBsuzrLoPmcsfhEtAFsy4 vlmmEjIDAyS5J1EfkJq1EWqVbAzGBSutJvGOt2uPR7oF87oQ/ciP8Fi8C8GRPDohBzmJ3MANawCS IKKS71oPziCuKukhkOmStaswzsCSkzyZ97oQ+gAPzisdoDwhM3nJLBKwcroQk1q5KbG2xlm+/IEf /NCyNjugFOymr8oe3dm0xxAmefi+JRq/3nmrVcyrSTtAdfrFxPq5k6i3TYmpCyG5k7q5JVGjrgNC QWGqw7mn4wCiHFvNtgys8YkPMkDAAFuoR1m9DwqrqWy1YPwUxMq1B4KpkEqmRwnN3WyqHdzE/7yJ njKrzklbscBaq+2QsHUqt6Ags6G7JNObO+KZtIDpxCahztHaz+hJxSxqn+jZm4oao735myiRtKSQ zsBZs+SMjMAKufyQDy6atBPCyicBqbc5DvkgpyUrn5BrEnbMjwXJmikJmp0cm/1AkPm4If+YO4Kc O51ciei6ICrZrg3JyC0ppizhkpKZvCpxkN8qmz1CqKfqm1Zpwd+M0sCZD6aAnt55s9CKy6wMrTVa qIvLsbQszPCJnTfLq7i8EOhQog1d137rEtqJwZprCm5a0C0LmCWLn/2Jp2fdm9sMnAK6oq08oGVs tYJd1xAdzaIqpxGqvV/Nnu7ZD2oczcO5of/42anGWhLGap9N7KHbydmiergLMbq4+bm1atZo/Z9N u6DG2bpf/LYfHdHue6ZsEbgqIaH0ScsTk8uxSgpFjA8osqyavQ9Rm9cnUdkm0Z2ivcYjjZ6T88Y5 KgPt8Lmp3bUrMZPMaBJ8fMcF+cccsQbt6t77INWLKa77UK7+sMiS2Q+S6ZL1wN8ecpB9jBZXTdUL gdUcAQ+L2NT1YN+suSPYq8RISQoPY6yjjRIwnczKgB91qtYlisvsUM7TzYxLvIiyir3A6bmi4Nfu nKFKDM076519rQzDycwTU51m2rRT4p4kip42IKrc0w6u2tI2+9jYu+EZqrMxrjBKa7ncKwP/U/K0 +zAD6UHB3+kVgEmqZInDk3qwNA7GCs0PzNjXU56YmCrawYAfHIsP7FDQaikDIQIKmma9Q1sStQoK psAUBw21bck9/CAK8lmjnSPagMkOfRsMIl7BmroOMJ4SROnm1QwKHpK090wiY40SB4sMMh65K44S 7PCm/uCzfhu1yhAMB+QVvOa5hpq+b6rjJrEOpUsPYdoPmUybfRyb8h2PkMyPQnqui6gGWLqR8tgP a7AGsh7Vx37fsAsPWhCT/j3Vkgy7nCyaJFkSMymPVLqR1ZojMO2ccdvZ/LGIaM4W4Emyips7ne3h OLshDb2qac6elI64wTArkS0dtLyqw2zX/8zJtNXr7nQ82G9bwdVGptHJ0tG5qNlLzdEs6Y4q3Szt nYEN7zKg5Fbu4q+q5mUN2t65q/vc7Zo6qTi8qjVOCvWRyto9qyXq0vFOzkoul0ysuSQPnyVq21Z5 p/j+nxka82ed8x5yq0esln0r8hSK5/yhxrWinvwQofjx8Bd/9Fr8nYpJyxz/thJSvf5wrGUs2hiq otFpqSq6uNbJnPZplXu9IY0K0/zRt0UtpT3qDGugmdLO6wfOyDOp4Oud3wV5yFG9mQJZky7pDIAP +Ax5rnTw33/vo/DQD/YqpO4IkPqAk4ZfmyWB4CKZkfygkHDP9ypp3yzCsUmPoUkrnuduEv8JfJzU qbn9nMrqrqKaCqFf/KukGtMnqvTSGaMHre+Wi6joiZ19bakaDcbvWb+nP54yWqlnuqv9bJW/6qLB HL68eZ19O7fIKqMPTZ4Kg9yAvZ0RPqkhGqEU66EJK769KctgTajeH/1W/PKmip4cnqMzvfwmD5z+ AP72eaLovPtkjqfRL6D3+Zv1ARDqZgwkGGzfQYQJEfojNUPGDFP99uEjSJDUPlIGE5q6mJAhKFCm DvYjBdIUv30CE7YDhVAdSFAaP8rQqPBgRoTjZIDEd1AnT4XqOiKsR2fLFjr+9vEzumYNPIX1tiB0 tmXNFmcHuVnFSpWOzapH6UDdd9Ts0TX+B+FdPZr1oD+jYiXuq8pNbdyuCrcqPcjPklk69aiafWrT 8GHEiRUvXswvn8J+fBXP3ecPJULHjBU+1vz2cmKJ48YZzvf5LeXFkROqNuxPsubSCv2h3tePdufW pmtzRsi699vXuCHf/l07+Orjm3UfxDcUcmzhh/tBjy6dtm/G1E8LD57ZplDD+q4n30fHbt/jwQvb 5FePOGJ/gm32q7dcoT75mtsTd1/d/38AAxRwQMSCeY9ABBNUcEEGE2yuQQgjlBC8AIvCbZuvJNRw Qw479PBDEEMUcUTF8qmJRBQ5xOfE/5zJbzFnyEtxRhprtPFGHHPUcUcee/TxRyCDFHJ9SCKLNPJI JJNUckkmm3TySSijlHJKKqu08koss9RySy679PJLMMMUc0wyyzTzTDTTVHNNNtt0800445RzTjrr tPNOPPPUc08++/TzT0ADFXRQQgs19FBEE1V0UUYbdfRRSCOVdFJKK7X0Ukwz1XRTTjv19FNQQxV1 VFKTDAgAOw== ------=_NextPart_000_00A4_01C95996.7656DB60-- From cattelan@thebarn.com Tue Dec 9 10:33:48 2008 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 mB9GXmqK001714 for ; Tue, 9 Dec 2008 10:33:48 -0600 X-ASG-Debug-ID: 1228840426-787103a30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from slurp.thebarn.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B7B331700C58; Tue, 9 Dec 2008 08:33:47 -0800 (PST) Received: from slurp.thebarn.com (cattelan-host202.dsl.visi.com [208.42.117.202]) by cuda.sgi.com with ESMTP id 2Qiwz3QgKVcYTKWL; Tue, 09 Dec 2008 08:33:47 -0800 (PST) Received: from funky.thebarn.com (slurp.thebarn.com [208.42.117.201]) (authenticated bits=0) by slurp.thebarn.com (8.14.0/8.14.0) with ESMTP id mB9GK4O2064172; Tue, 9 Dec 2008 10:20:06 -0600 (CST) (envelope-from cattelan@xfs.org) Message-ID: <493E9AB4.1050505@xfs.org> Date: Tue, 09 Dec 2008 10:20:04 -0600 From: Russell Cattelan User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070728) MIME-Version: 1.0 To: Christoph Hellwig CC: Niv Sardi , Russell Cattelan , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: New XFS git tree on oss.sgi.com Subject: Re: New XFS git tree on oss.sgi.com References: <492BA7AD.5080007@sgi.com> <20081125081644.GA20644@infradead.org> <492C0B3D.3040002@thebarn.com> <492CA07F.1030803@sgi.com> <492CC201.3080304@xfs.org> <20081209091725.GA26180@infradead.org> In-Reply-To: <20081209091725.GA26180@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/8735/Tue Dec 9 02:53:21 2008 on slurp.thebarn.com X-Virus-Status: Clean X-Barracuda-Connect: cattelan-host202.dsl.visi.com[208.42.117.202] X-Barracuda-Start-Time: 1228840427 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0033 1.0000 -1.9995 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.00 X-Barracuda-Spam-Status: No, SCORE=-2.00 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.12328 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Christoph Hellwig wrote: > Now that the xfs-dev branch was updated after a while I tried a git pull > an get a useless error message: > > I agree that is a worthless error message and does nothing to really tell you what the problem is. The problem is that you have a tracking branch for xfs-dev so git wants to leave your branch untouched until you actually want to update it from the remote branch origin/xfs-dev What you can do is: % git-fetch % git-pull . xfs-dev That will pull the latest xfs-dev stuff into your current branch. > hch@bigmac:~/work/xfs-dev$ git-pull > You asked me to pull without telling me which branch you > want to merge with, and 'branch.origin/xfs-dev.merge' in > your configuration file does not tell me either. Please > name which branch you want to merge on the command line and > try again (e.g. 'git pull '). > See git-pull(1) for details on the refspec. > > If you often merge with the same branch, you may want to > configure the following variables in your configuration > file: > > branch.origin/xfs-dev.remote = > branch.origin/xfs-dev.merge = > remote..url = > remote..fetch = > > See git-config(1) for details. > > > Can you please make each of the current branches a proper git tree > that is easy to work with? Alternatively I'll just completely stop > bothering with the dev tree if it's such a pain in the ass. > > of course this would be so damn confusing if somebody would document the procedures someplace?! Hmm I wonder where we could do that.... ohh wait maybe the WIKI! From SRS0+1426bc5743abca691148+1934+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 9 10:57:30 2008 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 mB9GvTWi002861 for ; Tue, 9 Dec 2008 10:57:30 -0600 X-ASG-Debug-ID: 1228841849-2ab802020000-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 4B09F4385 for ; Tue, 9 Dec 2008 08:57:29 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id D03fjpMx10tfZMlS for ; Tue, 09 Dec 2008 08:57:29 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LA5to-0000nn-To; Tue, 09 Dec 2008 16:57:28 +0000 Date: Tue, 9 Dec 2008 11:57:28 -0500 From: Christoph Hellwig To: Russell Cattelan Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: New XFS git tree on oss.sgi.com Subject: Re: New XFS git tree on oss.sgi.com Message-ID: <20081209165728.GA18536@infradead.org> References: <492BA7AD.5080007@sgi.com> <20081125081644.GA20644@infradead.org> <492C0B3D.3040002@thebarn.com> <492CA07F.1030803@sgi.com> <492CC201.3080304@xfs.org> <20081209091725.GA26180@infradead.org> <493E9AB4.1050505@xfs.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <493E9AB4.1050505@xfs.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: 1228841849 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Tue, Dec 09, 2008 at 10:20:04AM -0600, Russell Cattelan wrote: > The problem is that you have a tracking branch for xfs-dev so git wants > to leave your branch untouched > until you actually want to update it from the remote branch origin/xfs-dev > What you can do is: > % git-fetch > % git-pull . xfs-dev > > That will pull the latest xfs-dev stuff into your current branch. It might. But remember more than a single command to update a repository is just a braindead design. Especially if I have to remember a branch name. Even CVS got this right.. From cattelan@thebarn.com Tue Dec 9 11:33:51 2008 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 mB9HXm0Q004975 for ; Tue, 9 Dec 2008 11:33:51 -0600 X-ASG-Debug-ID: 1228844026-2ec503960000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from slurp.thebarn.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 195C617012AD for ; Tue, 9 Dec 2008 09:33:47 -0800 (PST) Received: from slurp.thebarn.com (cattelan-host202.dsl.visi.com [208.42.117.202]) by cuda.sgi.com with ESMTP id 2quH1f85kZp2Ia7S for ; Tue, 09 Dec 2008 09:33:47 -0800 (PST) Received: from funky.thebarn.com (slurp.thebarn.com [208.42.117.201]) (authenticated bits=0) by slurp.thebarn.com (8.14.0/8.14.0) with ESMTP id mB9HCd2V065566; Tue, 9 Dec 2008 11:12:39 -0600 (CST) (envelope-from cattelan@xfs.org) Message-ID: <493EA707.3000409@xfs.org> Date: Tue, 09 Dec 2008 11:12:39 -0600 From: Russell Cattelan User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070728) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: New XFS git tree on oss.sgi.com Subject: Re: New XFS git tree on oss.sgi.com References: <492BA7AD.5080007@sgi.com> <20081125081644.GA20644@infradead.org> <492C0B3D.3040002@thebarn.com> <492CA07F.1030803@sgi.com> <492CC201.3080304@xfs.org> <20081209091725.GA26180@infradead.org> <493E9AB4.1050505@xfs.org> <20081209165728.GA18536@infradead.org> In-Reply-To: <20081209165728.GA18536@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/8735/Tue Dec 9 02:53:21 2008 on slurp.thebarn.com X-Virus-Status: Clean X-Barracuda-Connect: cattelan-host202.dsl.visi.com[208.42.117.202] X-Barracuda-Start-Time: 1228844028 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0368 1.0000 -1.7837 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.78 X-Barracuda-Spam-Status: No, SCORE=-1.78 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.12331 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Christoph Hellwig wrote: > On Tue, Dec 09, 2008 at 10:20:04AM -0600, Russell Cattelan wrote: > >> The problem is that you have a tracking branch for xfs-dev so git wants >> to leave your branch untouched >> until you actually want to update it from the remote branch origin/xfs-dev >> What you can do is: >> % git-fetch >> % git-pull . xfs-dev >> >> That will pull the latest xfs-dev stuff into your current branch. >> > > It might. But remember more than a single command to update a > repository is just a braindead design. Especially if I have to remember > a branch name. Even CVS got this right.. > > Agreed, I'm not going to defend git cmds, frankly I find most of them confusing and poorly documented. It seems like the only way to figured this stuff out is read as many howto's as possible and then make some swags. What I did was clone the tree and then have my "master" branch track origin/xfs-dev vs origin/master. That way I can just do git-pulls and have an to date xfs-dev tree. -Russell From cattelan@thebarn.com Tue Dec 9 14:04:56 2008 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 mB9K4uMj013026 for ; Tue, 9 Dec 2008 14:04:56 -0600 X-ASG-Debug-ID: 1228853093-1ba002820000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from slurp.thebarn.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 21DDC1703E59 for ; Tue, 9 Dec 2008 12:04:54 -0800 (PST) Received: from slurp.thebarn.com (cattelan-host202.dsl.visi.com [208.42.117.202]) by cuda.sgi.com with ESMTP id HaexrBiqjrxOTlm8 for ; Tue, 09 Dec 2008 12:04:54 -0800 (PST) Received: from funky.thebarn.com (slurp.thebarn.com [208.42.117.201]) (authenticated bits=0) by slurp.thebarn.com (8.14.0/8.14.0) with ESMTP id mB9K4qE7070152 for ; Tue, 9 Dec 2008 14:04:53 -0600 (CST) (envelope-from cattelan@thebarn.com) Message-ID: <493ECF64.7060800@thebarn.com> Date: Tue, 09 Dec 2008 14:04:52 -0600 From: Russell Cattelan User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070728) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: Re: [patch 1/5] replace b_fspriv with b_mount Subject: Re: [patch 1/5] replace b_fspriv with b_mount References: <20081209094729.939583000@bombadil.infradead.org> <20081209094801.116064000@bombadil.infradead.org> In-Reply-To: <20081209094801.116064000@bombadil.infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/8738/Tue Dec 9 13:31:40 2008 on slurp.thebarn.com X-Virus-Status: Clean X-Barracuda-Connect: cattelan-host202.dsl.visi.com[208.42.117.202] X-Barracuda-Start-Time: 1228853095 X-Barracuda-Bayes: INNOCENT GLOBAL 0.3468 1.0000 -0.1642 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.16 X-Barracuda-Spam-Status: No, SCORE=-0.16 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.12340 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Christoph Hellwig wrote: > Replace the b_fspriv pointer and it's ugly accessors with a properly > types > xfs_mount pointer. Also switch log reocvery over to it instead of using > b_fspriv for the mount pointer. Not that I object to cleaning this stuff up, (it's messy and hard to follow) But currently the code maps well on freebsd since it has a b_fsprivate1-3 buf field and the macros handle the setting reading currently. Granted I could simply un-apply this change for freebsd but I would prefer we keep un-needed differences to a minimum. I would prefer if we came up with a structure that could be attached to an opaque b_data field that would be able to hold all current private info. Currently it looks like b_strat is used for wrapper functions that either check the mp for shutdown or iclog->ic_state & XLOG_STATE_IOERROR. Maybe we can collapse b_strat, fspriv2/3 into one structure that would have something like a can_io function that would either allow or disallow io. We could clean up more of the buf macros then. -Russell From xaiki@sgi.com Tue Dec 9 16:20:32 2008 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_41 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mB9MKWvd021560 for ; Tue, 9 Dec 2008 16:20:32 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id C44FF8F8069; Tue, 9 Dec 2008 14:20:21 -0800 (PST) Received: from itchy.melbourne.sgi.com (itchy.melbourne.sgi.com [134.14.55.96]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id JAA19771; Wed, 10 Dec 2008 09:20:17 +1100 From: Niv Sardi To: Russell Cattelan Cc: Christoph Hellwig , xfs@oss.sgi.com Subject: Re: New XFS git tree on oss.sgi.com References: <492BA7AD.5080007@sgi.com> <20081125081644.GA20644@infradead.org> <492C0B3D.3040002@thebarn.com> <492CA07F.1030803@sgi.com> <492CC201.3080304@xfs.org> <20081209091725.GA26180@infradead.org> <493E9AB4.1050505@xfs.org> Date: Wed, 10 Dec 2008 09:20:05 +1100 In-Reply-To: <493E9AB4.1050505@xfs.org> (Russell Cattelan's message of "Tue, 09 Dec 2008 10:20:04 -0600") Message-ID: User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.0.60 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Russell Cattelan writes: > Christoph Hellwig wrote: > >> Now that the xfs-dev branch was updated after a while I tried a git pull >> an get a useless error message: >> >> > I agree that is a worthless error message and does nothing to really > tell you what the problem is. > > The problem is that you have a tracking branch for xfs-dev so git > wants to leave your branch untouched > until you actually want to update it from the remote branch origin/xfs-dev > What you can do is: > % git-fetch > % git-pull . xfs-dev > > That will pull the latest xfs-dev stuff into your current branch. > >> hch@bigmac:~/work/xfs-dev$ git-pull You asked me to pull without >> telling me which branch you >> want to merge with, and 'branch.origin/xfs-dev.merge' in >> your configuration file does not tell me either. Please >> name which branch you want to merge on the command line and >> try again (e.g. 'git pull '). >> See git-pull(1) for details on the refspec. >> >> If you often merge with the same branch, you may want to >> configure the following variables in your configuration >> file: >> >> branch.origin/xfs-dev.remote = >> branch.origin/xfs-dev.merge = >> remote..url = >> remote..fetch = >> >> See git-config(1) for details. >> >> >> Can you please make each of the current branches a proper git tree >> that is easy to work with? Alternatively I'll just completely stop >> bothering with the dev tree if it's such a pain in the ass. Please read git documentation. You don't want to be pulling xfs-dev into a xfs/master tree, you should setup a remote properly and have local branch tracking them. > of course this would be so damn confusing if somebody would document > the procedures someplace?! > Hmm I wonder where we could do that.... ohh wait maybe the WIKI! http://xfs.org/index.php?title=Main_Page&action=submit --> out of captcha images; this shouldn't happen you can read this: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Disposition: inline; filename=workflow.txt Content-Transfer-Encoding: 8bit ----------------------------------------------------------- * Where is it? * Checking out a tree * Tree Status * Modifying files before checkins * Commiting/checking in * Going back in history - changing one's mind * Tracking remote trees * Publishing one's tree * Reviews and requesting them * Importing changes to our development tree * Lost your quilt ? ----------------------------------------------------------- * Where is it? A git server is setup on git.melbourne.sgi.com which is serving out of /git. A user, git, has been setup with the home directory of /git. The xfs trees are located under /git. The main development tree is a bare repository under /git/xfs.git. (So it has no checked out files just the .git database files at the top level) So far, it has a master, a mainline and an xfs-dev branch. The master branch is used for the checking in of development, it is mainline+latest XFS. xfs-dev will be set up to track ptools, checkins are currently closed to that branch. Additionally the config of the git setup (gitconfig, gitdescription, and git-hooks) as well as some home scripts (git-finalize and git-ptools) can be found in git+ssh://git.melbourne.sgi.com/git/git-ptools) * Checking out a tree: o Ptools: $ mkdir isms/2.6.x-xfs; vi isms/2.6.x-xfs/.workarea; cd fs/xfs; p_tupdate o Git: $ git clone git+ssh://git.melbourne.sgi.com/git/xfs/ ( for local trees you can use the path directly, if the machine is running a git-daemon you can use git://, but that will not auto-setup push syntax ) this will clone the tree (all the commit objects), and checkout the HEAD branch (master for our case, other branches can be seen with git branch -a, to checkout a branch (local or remote) just use: $ git checkout $branch * Tree Status: o Ptools: $ p_list -c # shows file you've informed ptools about o Git: $ git status # lists modified, unmerged and untracked files. $ git log # shows all commited modifications ( you can use git log $remote/branch to see the log of a remote ) * Modifying files before checkins: o Ptools: $ p_modify file # modify $ p_fetal file # add $ p_delete file # remove o Git: # no need to mark files for modification, git will find out about them automagically, just edit them. $ git add file # add $ git rm file # remove Note: that if one uses "git-commit -a" or "git-finalize -a" then you don't have to add files which have been modified or deleted as git will detect them, you only have to add new files. * Commiting/checking in: o Ptools: $ p_finalize file o Git: $ git commit From man page - useful options: -------------------------------- -a|--all:: Tell the command to automatically stage files that have been modified and deleted, but new files you have not told git about are not affected. --amend:: Used to amend the tip of the current branch. Prepare the tree object you would want to replace the latest commit as usual (this includes the usual -i/-o and explicit paths), and the commit log editor is seeded with the commit message from the tip of the current branch. The commit you create replaces the current tip -- if it was a merge, it will have the parents of the current tip as parents -- so the current top commit is discarded. -s|--signoff:: Add Signed-off-by line at the end of the commit message. I do like to git commit -asm "Commit message" -------------------------------- remember that a git commit, only commits to YOUR local tree, you then need to push things over: General form is: $ git push git://uri/of/the/other/rep +refspec ---------------- For XFS project: ---------------- Using the wrapper script, git-finalize, this would become: $ git-finalize -a # it asks questions to set up commit description git-finalize: [-d] [-a] [-p pv] [-u author] [-r reviewer] [-s summary] [-F desc_file] [files] noting: -d: debug option - doesn't run the commit command -a: the all option passed thru to git-commit pv: bugworks pv number which will be looked up using bwx author: author in format: Andrew Morton reviewer: in author format and can have multiple -r options summary: summary 1 line description of the commit desc_file: a file containing body of the commit description [files]: explicit files for commit (can't use with -a option) $ git push melbourne Where in workarea/.git/config it has the few lines: [remote "melbourne"] url = ssh://git.melbourne.sgi.com/git/xfs.git push = master (Or modify the config file using "git remote add" mentioned below) * Going back in history - changing one's mind o Ptools: $ p_unmodify file o Git: [the STUPID (ptools) way] $ git revert $mod will introduce a new commit reverting $mod. [ the OH GOD WE ARE DISTRIBUTED way (for mods not pushed anyway)] if the mods to revert are the last n one: $ git reset HEAD^n if not (dangerous) $ git rebase -i $mod^1 # considered harmfull read documentation ! Other related commands: $ git reset # see doc for --hard * Tracking remote trees: o Ptools: remote what ? there shall be only one tree, MY TREE o Git: $ git remote add $name $uri # adds a remote tracking $ git remote update # updates all remotes $ git branch -a # shows all accessible branches ( including remotes in the $remote_name/ namespace ) $ git checkout -b $local_branch_name --track $remote_name/$remote_branch # creates a tracked local branch, git will warn whenever the remote adds commits. * Publishing one's tree: o Ptools: Be Andy. o Git: give shell access to your tree, use git+ssh://machine/path or direct path or $ sudo git-daemon --export-all --base-path=/srv/git --base-path-relaxed --reuseaddr --user-path=public_git # exports all git trees found under ~/public_git and /srv/git Or set up indetd etc. * Reviews and requesting them o Git: [ Developer ] (A) From a git tree: É™ publishes a git tree at git://dev/tree, containing his feature1 branch É™ Requests a pull from the reviewer. or (B) publishes a series of patches: $ git format-patch $since_head # create ordered patches since head $since_head, i.e. on branch linus-create-ea, I'd $since_head would be linus/master $ git send-email --compose *.patch * Importing changes to our development tree o Git: [ Reviewer - typically us at SGI ] (A) From a git tree: É™ Adds a remote locally called "dev": $ git remote add dev git://dev/tree É™ Looks at the differences between his tree (dev) and feature1: $ git log HEAD...dev/feature1 # differences in both ways, read man for more detail… List patches of commits from HEAD or dev/feature1 but not in both (A...B in one branch but not both) (A..B in branch B but not in A) É™ Reviews the diffs: (-p adds commit change in patch form) $ git log -p dev/feature1..HEAD É™ For each commit he accepts, imports it to his tree, adding a Signed-off-by: automatically: Whilst in our own development tree, cherry-pick from the remote $ git cherry-pick -s -e $commit # easily scriptable with git cherry É™ The only trick there is putting the description into our preferred format, with summary line with [XFS] prefix, body, and SGI-PV. I guess we'll need to do that manually. É™ Pushes it to tree git+ssh://git.melbourne.sgi.com/git/xfs.git $ git push melbourne # if you've set up tracking remotes correctly if not $ git push git://chook/xfs/xfs-dev # read man… of form: git push repository where of form: The canonical format of a parameter is `+?:`; that is, an optional plus `+`, followed by the source ref, followed by a colon `:`, followed by the destination ref. The local ref that matches is used to fast forward the remote ref that matches . If the optional plus `+` is used, the remote ref is updated even if it does not result in a fast forward update. or (B) From emailed patches: · From a plain patch: $ git apply $patch # evil · From a mailbox: $ git am -s $mailbox # the way to go, adds Signed-off-by In order to modify the commit description, it may work to apply the committed patches in another branch and then "cherry-pick -e" them into the development branch. * Lost your quilt ? Hope you use underwear. if not, you can look at many projects made of awesome: guilt (written by Jeffpc, an XFS hacker): quilt for git; similar to Mercurial queues Guilt (Git Quilt) is a series of bash scripts which add a Mercurial queues-like functionality and interface to git. The one distinguishing feature from other quilt-like porcelains, is the format of the patches directory. _All_ the information is stored as plain text - a series file and the patches (one per file). This easily lends itself to versioning the patches using any number of of SCMs. stgit: manage stacks of patches in a git repository stgit provides similar functionality to quilt (i.e. pushing/popping patches to/from a stack) on top of git. These operations are performed using git commands and the patches are stored as git commit objects, allowing easy merging of the stgit patches into other repositories using standard git functionality. Homepage: http://www.procode.org/stgit/ topgit (house favourite, we may want to impose this one, but needs a bit of git knowledge to fully understand): a Git patch queue manager TopGit manages a patch queue using Git topic branches, one patch per branch. It allows for patch dependencies and can thus manage non-linear patch series. TopGit is a minimal layer on top of Git, which does not limit use of Git's functionality (such as the index). It rigorously keeps history until a patch is accepted upstream. It is also fully usable across distributed repositories. Homepage: http://repo.or.cz/w/topgit.git --=-=-= if you s/git.melbourne.sgi.com/oss.sgi.com/ Cheers, -- Niv Sardi --=-=-=-- From cattelan@thebarn.com Tue Dec 9 18:07:28 2008 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 mBA07QVd029102 for ; Tue, 9 Dec 2008 18:07:28 -0600 X-ASG-Debug-ID: 1228867643-201902800000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from slurp.thebarn.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 57F751705A7D; Tue, 9 Dec 2008 16:07:24 -0800 (PST) Received: from slurp.thebarn.com (cattelan-host202.dsl.visi.com [208.42.117.202]) by cuda.sgi.com with ESMTP id TiwaBB8UVvBv0jwb; Tue, 09 Dec 2008 16:07:24 -0800 (PST) Received: from funky.thebarn.com (slurp.thebarn.com [208.42.117.201]) (authenticated bits=0) by slurp.thebarn.com (8.14.0/8.14.0) with ESMTP id mBA07EAb078613; Tue, 9 Dec 2008 18:07:15 -0600 (CST) (envelope-from cattelan@xfs.org) Message-ID: <493F0831.8030405@xfs.org> Date: Tue, 09 Dec 2008 18:07:13 -0600 From: Russell Cattelan User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070728) MIME-Version: 1.0 To: Niv Sardi CC: Russell Cattelan , Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: New XFS git tree on oss.sgi.com Subject: Re: New XFS git tree on oss.sgi.com References: <492BA7AD.5080007@sgi.com> <20081125081644.GA20644@infradead.org> <492C0B3D.3040002@thebarn.com> <492CA07F.1030803@sgi.com> <492CC201.3080304@xfs.org> <20081209091725.GA26180@infradead.org> <493E9AB4.1050505@xfs.org> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/8739/Tue Dec 9 17:50:52 2008 on slurp.thebarn.com X-Virus-Status: Clean X-Barracuda-Connect: cattelan-host202.dsl.visi.com[208.42.117.202] X-Barracuda-Start-Time: 1228867645 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4199 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.40 X-Barracuda-Spam-Status: No, SCORE=0.40 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA085b X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.12351 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.40 BSF_SC0_SA085b Custom Rule SA085b Niv Sardi wrote: > Russell Cattelan writes: > > >> Christoph Hellwig wrote: >> >> >>> Now that the xfs-dev branch was updated after a while I tried a git pull >>> an get a useless error message: >>> >>> >>> >> I agree that is a worthless error message and does nothing to really >> tell you what the problem is. >> >> The problem is that you have a tracking branch for xfs-dev so git >> wants to leave your branch untouched >> until you actually want to update it from the remote branch origin/xfs-dev >> What you can do is: >> % git-fetch >> % git-pull . xfs-dev >> >> That will pull the latest xfs-dev stuff into your current branch. >> >> >>> hch@bigmac:~/work/xfs-dev$ git-pull You asked me to pull without >>> telling me which branch you >>> want to merge with, and 'branch.origin/xfs-dev.merge' in >>> your configuration file does not tell me either. Please >>> name which branch you want to merge on the command line and >>> try again (e.g. 'git pull '). >>> See git-pull(1) for details on the refspec. >>> >>> If you often merge with the same branch, you may want to >>> configure the following variables in your configuration >>> file: >>> >>> branch.origin/xfs-dev.remote = >>> branch.origin/xfs-dev.merge = >>> remote..url = >>> remote..fetch = >>> >>> See git-config(1) for details. >>> >>> >>> Can you please make each of the current branches a proper git tree >>> that is easy to work with? Alternatively I'll just completely stop >>> bothering with the dev tree if it's such a pain in the ass. >>> > > Please read git documentation. > seriously?! you need to say this? > > You don't want to be pulling xfs-dev into a xfs/master tree, you should > setup a remote properly and have local branch tracking them. > Ya and this is a non trivial thing to do without proper instructions. > >> of course this would be so damn confusing if somebody would document >> the procedures someplace?! >> > > >> Hmm I wonder where we could do that.... ohh wait maybe the WIKI! >> > > http://xfs.org/index.php?title=Main_Page&action=submit > --> out of captcha images; this shouldn't happen > Ok fixed. > you can read this: > Sigh .... Honestly you think ptools info is useful here? > ------------------------------------------------------------------------ > > > if you s/git.melbourne.sgi.com/oss.sgi.com/ > > Cheers, From webarnetweb@arnet.com.ar Tue Dec 9 18:34:39 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.0 required=5.0 tests=BAYES_50,HTML_MESSAGE 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 mBA0Ydsf030734 for ; Tue, 9 Dec 2008 18:34:39 -0600 X-ASG-Debug-ID: 1228869272-20a503360000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from arnet.com.ar (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 87AA6162E555 for ; Tue, 9 Dec 2008 16:34:32 -0800 (PST) Received: from arnet.com.ar (host73.201-252-122.telecom.net.ar [201.252.122.73]) by cuda.sgi.com with ESMTP id c4Fe53abTGgvXag6 for ; Tue, 09 Dec 2008 16:34:32 -0800 (PST) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=send; d=arnet.com.ar; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type; b=iibCiuR8gpjytbr71Kv0JUYccMp2z4vZ6ypGzR1ruOkpBPjJhXNIj12ZyW8csj1VafjN6UdtqThCXE899Zj9GPd2u4iDeien7ajiiofX8J7Qr7poqbQ7TCUWw/TF4Lg6AjyyXqgJK4kELe2RnQi/vmKmuJGEL1I1fT6cytsPUyE=; From: webarnetweb@arnet.com.ar (Digital) To: linux-xfs@oss.sgi.com (linux-xfs) X-ASG-Orig-Subj: seguridad a linux-xfs Subject: seguridad a linux-xfs Date: 09 Dec 2008 22:34:25 -0200 Message-ID: <20081209223424.04CEE175E0AE3667@arnet.com.ar> MIME-Version: 1.0 X-Barracuda-Connect: host73.201-252-122.telecom.net.ar[201.252.122.73] X-Barracuda-Start-Time: 1228869275 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0003 1.0000 -2.0191 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_MESSAGE, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.12351 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-length: 207 Estimado linux-xfs: Clic aqu=ED para ver=A0la info http://electronet-sa24.com.ar/cam/index.htm =A0 Para darse de baja, responder con asunto: remo [[HTML alternate version deleted]] From markgw@sgi.com Tue Dec 9 18:47:22 2008 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 relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBA0lMQr031588 for ; Tue, 9 Dec 2008 18:47:22 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id 9F4218F808B; Tue, 9 Dec 2008 16:47:17 -0800 (PST) Received: from [134.14.55.22] (dhcp22.melbourne.sgi.com [134.14.55.22]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id LAA23188; Wed, 10 Dec 2008 11:47:15 +1100 Message-ID: <493F117B.70107@sgi.com> Date: Wed, 10 Dec 2008 11:46:51 +1100 From: Mark Goodwin Reply-To: markgw@sgi.com Organization: SGI Engineering User-Agent: Thunderbird 2.0.0.18 (Windows/20081105) MIME-Version: 1.0 To: Russell Cattelan CC: Niv Sardi , Christoph Hellwig , xfs@oss.sgi.com Subject: Re: New XFS git tree on oss.sgi.com References: <492BA7AD.5080007@sgi.com> <20081125081644.GA20644@infradead.org> <492C0B3D.3040002@thebarn.com> <492CA07F.1030803@sgi.com> <492CC201.3080304@xfs.org> <20081209091725.GA26180@infradead.org> <493E9AB4.1050505@xfs.org> <493F0831.8030405@xfs.org> In-Reply-To: <493F0831.8030405@xfs.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Russell Cattelan wrote: > Niv Sardi wrote: >> You don't want to be pulling xfs-dev into a xfs/master tree, you should >> setup a remote properly and have local branch tracking them. >> > Ya and this is a non trivial thing to do without proper instructions. well, see the man page for: git-remote add ... But maybe Niv could spell out some specific examples for the XFS trees > Sigh .... > Honestly you think ptools info is useful here? the original document was written to help SGI internal developers migrate from ptools to git - and given most XFS oss developers are familiar with ptools, the analogies in that doc are probably useful. But whatever we put up on the wiki for longer term reference should probably have the ptools crud stripped out. Cheers -- Mark From xaiki@oss.sgi.com Tue Dec 9 18:49:33 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBA0nXL0031808 for ; Tue, 9 Dec 2008 18:49:33 -0600 Received: (from xaiki@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mBA0nT4B031766; Tue, 9 Dec 2008 18:49:29 -0600 Date: Tue, 9 Dec 2008 18:49:29 -0600 Message-Id: <200812100049.mBA0nT4B031766@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, xfs-dev, updated. v2.6.28-rc3-204-g8555dd6 X-Git-Refname: refs/heads/xfs-dev X-Git-Reftype: branch X-Git-Oldrev: 82bc38b6cda6effeeb1dc55b54f3b1163660f91a X-Git-Newrev: 8555dd6ff672fdab85a017e3e71ee5a0674824e0 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, xfs-dev has been updated discards 82bc38b6cda6effeeb1dc55b54f3b1163660f91a (commit) discards 626c102444e329abaf1be850b7baec03af945eeb (commit) discards 7656d30b550376edcc7525b481ba37110795ad76 (commit) 8555dd6 [XFS] Fix bug in xlogitm idbg command 41e6898 [XFSIDBG] Port mainline changes to xfsidbg a204902 DMAPI port to vfsops.h, dicore and XFS_DINODE_VERSION changes from 82bc38b6cda6effeeb1dc55b54f3b1163660f91a (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 8555dd6ff672fdab85a017e3e71ee5a0674824e0 Author: Lachlan McIlroy Date: Fri Dec 5 14:28:13 2008 +1100 [XFS] Fix bug in xlogitm idbg command Print out the correct field for the back pointer in the xlogitm idbg command. Signed-off-by: Lachlan McIlroy Reviewed-by: Christoph Hellwig commit 41e6898b59fd39259a4506de421cac5d99802669 Author: Niv Sardi Date: Mon Dec 1 15:38:41 2008 +1100 [XFSIDBG] Port mainline changes to xfsidbg commit 42547de962feb780878eba2ad0e3263acf021d7f Author: Christoph Hellwig Date: Fri Nov 28 14:23:39 2008 +1100 [XFS] kill XFS_DINODE_VERSION_ defines commit 084dc9eae047653d1040cbd7bae773fdb2da3cab Author: Christoph Hellwig Date: Fri Nov 28 14:23:39 2008 +1100 [XFS] kill xfs_dinode_core_t commit 9b4fb46c5a37269d548d51c290858ab7f335ccb9 Author: Christoph Hellwig Date: Fri Nov 28 14:23:38 2008 +1100 [XFS] sanitize xlog_in_core_t definition commit bab371f63710f2a315c66476a2af40fa9162b2df Author: Christoph Hellwig Date: Fri Nov 28 14:23:41 2008 +1100 [XFS] embededd struct xfs_imap into xfs_inode commit 19fb0833fd1eac6918bcabe7a1fe6086415a2452 Author: Dave Chinner Date: Fri Nov 28 14:23:37 2008 +1100 [XFS] remove i_gen from incore inode Signed-off-by: Niv Sardi Signed-off-by: Brad Scarlett commit a204902098d17d75e8a2ed55cd4edc476714d510 Author: Niv Sardi Date: Mon Dec 1 15:29:46 2008 +1100 DMAPI port to vfsops.h, dicore and XFS_DINODE_VERSION changes Removed in mainline by hch in comits: commit 42547de962feb780878eba2ad0e3263acf021d7f Author: Christoph Hellwig Date: Fri Nov 28 14:23:39 2008 +1100 [XFS] kill XFS_DINODE_VERSION_ defines commit 084dc9eae047653d1040cbd7bae773fdb2da3cab Author: Christoph Hellwig Date: Fri Nov 28 14:23:39 2008 +1100 [XFS] kill xfs_dinode_core_t Signed-off-by: Niv Sardi Signed-off-by: Brad Scarlett ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- XFS development tree From xaiki@oss.sgi.com Tue Dec 9 18:53:50 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBA0ro7j032069 for ; Tue, 9 Dec 2008 18:53:50 -0600 Received: (from xaiki@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mBA0rnbN032039; Tue, 9 Dec 2008 18:53:49 -0600 Date: Tue, 9 Dec 2008 18:53:49 -0600 Message-Id: <200812100053.mBA0rnbN032039@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.28-rc3-1484-ge055f13 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 14d676f56fad26fd3c31eeff5d4ef8ea4a163571 X-Git-Newrev: e055f13a6d8448d4f23121b7b11340c3fb55cce6 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated e055f13 [XFS] Remove unused tracing code from 14d676f56fad26fd3c31eeff5d4ef8ea4a163571 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit e055f13a6d8448d4f23121b7b11340c3fb55cce6 Author: Lachlan McIlroy Date: Wed Dec 10 11:51:54 2008 +1100 [XFS] Remove unused tracing code None of this code appears to be used anywhere so remove it. Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_inode.c | 2 -- fs/xfs/xfs_inode.h | 1 - 2 files changed, 0 insertions(+), 3 deletions(-) hooks/post-receive -- XFS development tree From bnaujok@sgi.com Tue Dec 9 19:01:36 2008 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_43 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBA11aJB032491 for ; Tue, 9 Dec 2008 19:01:36 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id CBE6D8F808E for ; Tue, 9 Dec 2008 17:01:31 -0800 (PST) Received: from pc-bnaujok.melbourne.sgi.com (pc-bnaujok.melbourne.sgi.com [134.14.55.58]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id MAA23417 for ; Wed, 10 Dec 2008 12:01:29 +1100 Date: Wed, 10 Dec 2008 12:05:28 +1100 To: "xfs@oss.sgi.com" Subject: Re: xfsprogs 2.10.2 source tarball released From: "Barry Naujok" Organization: SGI Content-Type: text/plain; format=flowed; delsp=yes; charset=utf-8 MIME-Version: 1.0 References: Content-Transfer-Encoding: 7bit Message-ID: In-Reply-To: User-Agent: Opera Mail/9.52 (Win32) On Mon, 08 Dec 2008 12:14:11 +1100, Barry Naujok wrote: > ftp://oss.sgi.com/projects/xfs/cmd_tars/xfsprogs_2.10.2-1.tar.gz > > This version contains important bug fixes to xfsprogs 2.10.1: > > xfsprogs-2.10.2 (8 December 2008) > - Fix an mkfs.xfs regression where -i maxpct option was ignored. > - Fix mkfs.xfs -d agcount and su/sw options when used together. > - Fix a regression where repaired inodes in xfs_repair were not > written to disk. > - Allow 64K block size support in xfs_repair. > - Fix up unaligned accesses in 64 bit platforms in xfs_repair. I released the wrong tarball - it can't create RPMs and has other unrelated build code. The tarball has been updated with the correct build infrastructure (mainly for RPM users). Barry. From xaiki@sgi.com Tue Dec 9 19:14:55 2008 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 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 mBA1EtER000843 for ; Tue, 9 Dec 2008 19:14:55 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id E4C0D30408A; Tue, 9 Dec 2008 17:14:50 -0800 (PST) Received: from itchy.melbourne.sgi.com (itchy.melbourne.sgi.com [134.14.55.96]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id MAA23636; Wed, 10 Dec 2008 12:14:47 +1100 From: Niv Sardi To: Russell Cattelan Cc: Christoph Hellwig , xfs@oss.sgi.com Subject: Re: New XFS git tree on oss.sgi.com References: <492BA7AD.5080007@sgi.com> <20081125081644.GA20644@infradead.org> <492C0B3D.3040002@thebarn.com> <492CA07F.1030803@sgi.com> <492CC201.3080304@xfs.org> <20081209091725.GA26180@infradead.org> <493E9AB4.1050505@xfs.org> <493F0831.8030405@xfs.org> Date: Wed, 10 Dec 2008 12:14:35 +1100 In-Reply-To: <493F0831.8030405@xfs.org> (Russell Cattelan's message of "Tue, 09 Dec 2008 18:07:13 -0600") Message-ID: User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.0.60 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Russell Cattelan writes: > Niv Sardi wrote: >> Please read git documentation. >> > seriously?! you need to say this? OK, ok, pre-coffee mail was a bit harsh, but it's not all that hard. >> http://xfs.org/index.php?title=Main_Page&action=submit> --> out of captcha images; this shouldn't happen >> > Ok fixed. http://xfs.org/index.php/Git please edit accordingly >> you can read this: >> > Sigh .... > Honestly you think ptools info is useful here? nope, edited on the wiki, this was just a dump of the document that was produced for in-house use. Cheers, -- Niv Sardi From tes@sgi.com Tue Dec 9 21:17:39 2008 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_44 autolearn=no 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 mBA3Hdib007526 for ; Tue, 9 Dec 2008 21:17:39 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id D0EBE30407C; Tue, 9 Dec 2008 19:17:32 -0800 (PST) Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA25843; Wed, 10 Dec 2008 14:17:30 +1100 Message-ID: <493F34CA.3040101@sgi.com> Date: Wed, 10 Dec 2008 14:17:30 +1100 From: Timothy Shimmin User-Agent: Thunderbird 2.0.0.17 (Macintosh/20080914) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com Subject: Re: [PATCH] xfsqa: add testcase for ->setattr permission checking References: <20081202142039.GA25155@infradead.org> <493CB518.7000001@sgi.com> <20081209095546.GB8599@infradead.org> In-Reply-To: <20081209095546.GB8599@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Christoph Hellwig wrote: > On Mon, Dec 08, 2008 at 04:48:08PM +1100, Timothy Shimmin wrote: >> 1. >>> +echo "user: chown root owned file to qa_user (should fail)" >>> +su ${qa_user} -c "chown root test.${qa_user}" >>> + >> I think the description and command above don't match. >> I think we have a swap with subtest 4 below. >> Need to either swap descriptions or commands. > > Yes, I swapped the descriptions. > >>> +# >>> +# Setup a file owned by the qa_user and with the suid bit set. >>> +# A chown by root should not clean the suid bit. >>> +# >> Typos: >> s/clean/clear/ >> >> s/suceed/succeed/ in a couple of places. > > Yeah. > >> * It looks like you test the clearing of suid/sgid bits >> for setting the mode permission bits and not >> for setting ownership as the description suggests; >> i.e. you test with chmod instead of chown for clearing of suid/sgid bits > > Yes, that's also what I intended too, Oh okay. > as XFS had some code to clear > the suid bits for changing permissions, but those shouldn't happen > for the restricted_chown case (and don't even happen in the XFS code, > it's just not obvious when reading the old setattr implementation). Yeah, I didn't see anything about this in posix under chmod. But reasonable to test this too - I agree. > While for sgid we want to clear it on mode changes if the gid > is not in the group list. So what needs fixing here is once again > the comment. > Ok have found it in posix (thanks to gnb mentioning www.opengroup.org). For chmod: "If the calling process does not have appropriate privileges, and if the group ID of the file does not match the effective group ID or one of the supplementary group IDs and if the file is a regular file, bit S_ISGID (set-group-ID on execution) in the file's mode shall be cleared upon successful return from chmod()." reg file + file's gid not in process' group set + no approp. privileges -> clear sgid Which is what your test did. Cool. For chown: "If the specified file is a regular file, one or more of the S_IXUSR, S_IXGRP, or S_IXOTH bits of the file mode are set, and the process does not have appropriate privileges, the set-user-ID (S_ISUID) and set-group-ID (S_ISGID) bits of the file mode shall be cleared upon successful return from chown(). If the specified file is a regular file, one or more of the S_IXUSR, S_IXGRP, or S_IXOTH bits of the file mode are set, and the process has appropriate privileges, it is implementation-defined whether the set-user-ID and set-group-ID bits are altered. If the chown() function is successfully invoked on a file that is not a regular file and one or more of the S_IXUSR, S_IXGRP, or S_IXOTH bits of the file mode are set, the set-user-ID and set-group-ID bits may be cleared." reg file + mode-bits set + no appropriate privileges -> clear suid,sgid reg file + mode-bits set + appropriate privileges -> maybe clear suid,sgid non reg file + mode-bits set + chown success on file (??) -> maybe clear suid/sgid By appropriate privileges, I presume they are referring to extra capabilities. I will add a couple of tests for this suid/sgid clear after chown. > Btw, I just noticed you checked in another testcase as 192. Do you want > a respin or do you want to fix it up yourself? Don't worry about any respin. I'll fix up based on your reply etc. and check in myself. Thanks, Tim. From lachlan@sgi.com Tue Dec 9 21:27:07 2008 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 mBA3R7CG007998 for ; Tue, 9 Dec 2008 21:27:07 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id A001630407C; Tue, 9 Dec 2008 19:27:05 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA25930; Wed, 10 Dec 2008 14:27:03 +1100 Message-ID: <493F3732.9030907@sgi.com> Date: Wed, 10 Dec 2008 14:27:46 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com Subject: Re: [patch 4/5] add a FMODE flag to make XFS invisible I/O less hacky References: <20081209094729.939583000@bombadil.infradead.org> <20081209094801.514516000@bombadil.infradead.org> In-Reply-To: <20081209094801.514516000@bombadil.infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Looks good. Christoph Hellwig wrote: From lachlan@sgi.com Tue Dec 9 21:28:09 2008 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 (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBA3S8d8008099 for ; Tue, 9 Dec 2008 21:28:08 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id 627048F808D; Tue, 9 Dec 2008 19:28:04 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA25942; Wed, 10 Dec 2008 14:28:02 +1100 Message-ID: <493F376D.7030202@sgi.com> Date: Wed, 10 Dec 2008 14:28:45 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com Subject: Re: [patch 3/5] resync headers with libxfs References: <20081209094729.939583000@bombadil.infradead.org> <20081209094801.381484000@bombadil.infradead.org> In-Reply-To: <20081209094801.381484000@bombadil.infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Looks fine to me. Christoph Hellwig wrote: From lachlan@sgi.com Tue Dec 9 21:39:55 2008 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 mBA3dsL7008515 for ; Tue, 9 Dec 2008 21:39:55 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id 5096030407C; Tue, 9 Dec 2008 19:39:53 -0800 (PST) Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA26219; Wed, 10 Dec 2008 14:39:51 +1100 Message-ID: <493F3A31.6000703@sgi.com> Date: Wed, 10 Dec 2008 14:40:33 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com Subject: Re: [patch 5/5] use inode_change_ok for setattr permission checking References: <20081209094729.939583000@bombadil.infradead.org> <20081209094801.643772000@bombadil.infradead.org> In-Reply-To: <20081209094801.643772000@bombadil.infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Looks fine to me. Christoph Hellwig wrote: From xaiki@oss.sgi.com Tue Dec 9 21:45:32 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBA3jWiQ008846 for ; Tue, 9 Dec 2008 21:45:32 -0600 Received: (from xaiki@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mBA3jS1D008816; Tue, 9 Dec 2008 21:45:28 -0600 Date: Tue, 9 Dec 2008 21:45:28 -0600 Message-Id: <200812100345.mBA3jS1D008816@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, xfs-dev, updated. v2.6.28-rc3-205-g26b6017 X-Git-Refname: refs/heads/xfs-dev X-Git-Reftype: branch X-Git-Oldrev: 8555dd6ff672fdab85a017e3e71ee5a0674824e0 X-Git-Newrev: 26b6017312c4f2ab0fa5f8554c0c8a650b3a8ac5 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, xfs-dev has been updated 26b6017 Remove unused tracing code from 8555dd6ff672fdab85a017e3e71ee5a0674824e0 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 26b6017312c4f2ab0fa5f8554c0c8a650b3a8ac5 Author: Lachlan McIlroy Date: Wed Dec 10 11:48:45 2008 +1100 Remove unused tracing code None of this code appears to be used anywhere so remove it. Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_ksyms.c | 3 - fs/xfs/xfsidbg.c | 123 ------------------------------------------ 2 files changed, 0 insertions(+), 126 deletions(-) hooks/post-receive -- XFS development tree From tes@sgi.com Tue Dec 9 22:36:33 2008 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_44 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBA4aXVx011786 for ; Tue, 9 Dec 2008 22:36:33 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay3.corp.sgi.com (Postfix) with SMTP id 5A4B7AC01B; Tue, 9 Dec 2008 20:36:29 -0800 (PST) Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id PAA27118; Wed, 10 Dec 2008 15:36:27 +1100 Message-ID: <493F474B.8020106@sgi.com> Date: Wed, 10 Dec 2008 15:36:27 +1100 From: Timothy Shimmin User-Agent: Thunderbird 2.0.0.17 (Macintosh/20080914) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com Subject: Re: [PATCH] xfsqa: add testcase for ->setattr permission checking References: <20081202142039.GA25155@infradead.org> <493CB518.7000001@sgi.com> <20081209095546.GB8599@infradead.org> <493F34CA.3040101@sgi.com> In-Reply-To: <493F34CA.3040101@sgi.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Timothy Shimmin wrote: > For chown: > "If the specified file is a regular file, one or more of the S_IXUSR, > S_IXGRP, or S_IXOTH bits of the file mode are set, and the process > does not have appropriate privileges, the set-user-ID (S_ISUID) and > set-group-ID (S_ISGID) bits of the file mode shall be cleared upon > successful return from chown(). If the specified file is a regular > file, one or more of the S_IXUSR, S_IXGRP, or S_IXOTH bits of the > file mode are set, and the process has appropriate privileges, it > is implementation-defined whether the set-user-ID and set-group-ID > bits are altered. If the chown() function is successfully invoked > on a file that is not a regular file and one or more of the S_IXUSR, > S_IXGRP, or S_IXOTH bits of the file mode are set, the set-user-ID > and set-group-ID bits may be cleared." > > reg file + mode-bits set + no appropriate privileges -> clear suid,sgid > reg file + mode-bits set + appropriate privileges -> maybe clear suid,sgid > non reg file + mode-bits set + chown success on file (??) -> maybe clear suid/sgid > s/mode-bits/exec-mode-bits/ --Tim From tes@sgi.com Tue Dec 9 23:09:13 2008 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 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 mBA59DeA013435 for ; Tue, 9 Dec 2008 23:09:13 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id B7E0F304079; Tue, 9 Dec 2008 21:09:08 -0800 (PST) Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA27559; Wed, 10 Dec 2008 16:09:06 +1100 Message-ID: <493F4EF2.1020300@sgi.com> Date: Wed, 10 Dec 2008 16:09:06 +1100 From: Timothy Shimmin User-Agent: Thunderbird 2.0.0.17 (Macintosh/20080914) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com Subject: Re: [patch 5/5] use inode_change_ok for setattr permission checking References: <20081209094729.939583000@bombadil.infradead.org> <20081209094801.643772000@bombadil.infradead.org> In-Reply-To: <20081209094801.643772000@bombadil.infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Christoph Hellwig wrote: > Instead of implementing our own checks use inode_change_ok to check for > necessary permission in setattr. There is a slight change in behaviour > as inode_change_ok doesn't allow i_mode updates to add the suid or sgid > without superuser privilegues while the old XFS code just stripped away > those bits from the file mode. > > (First sent on Semptember 29th) (No reply from Question on Nov 12th:) I just wanted to run this thru an amended xfstests/193 first. Thanks, --Tim From tes@sgi.com Tue Dec 9 23:16:59 2008 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 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 mBA5Gxsc014051 for ; Tue, 9 Dec 2008 23:16:59 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay2.corp.sgi.com (Postfix) with SMTP id 96858304079; Tue, 9 Dec 2008 21:16:54 -0800 (PST) Received: from chook.melbourne.sgi.com (chook.melbourne.sgi.com [134.14.54.237]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA27651; Wed, 10 Dec 2008 16:16:52 +1100 Received: by chook.melbourne.sgi.com (Postfix, from userid 16305) id CB97F58AE1F6; Wed, 10 Dec 2008 16:16:52 +1100 (EST) To: xfs@oss.sgi.com, sgi.bugs.xfs@engr.sgi.com Subject: PARTIAL TAKE 990768 - setattr perm check test - 193 Message-Id: <20081210051652.CB97F58AE1F6@chook.melbourne.sgi.com> Date: Wed, 10 Dec 2008 16:16:52 +1100 (EST) From: tes@sgi.com (Tim Shimmin) Test out the perm checks in xfs_setattr - chmod, chown, etc.. --Tim Date: Wed Dec 10 16:12:22 EST 2008 Workarea: emu.melbourne.sgi.com:/home/tes/isms/xfs-cmds Inspected by: hch@lst.de (authored by) The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/xfs-cmds/master-melb Modid: master-melb:xfs-cmds:32713a xfstests/193 - 1.1 - new http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfstests/193 xfstests/193.out - 1.1 - new http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfstests/193.out - Test out the perm checks in xfs_setattr - chmod, chown, etc.. xfstests/group - 1.130 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfstests/group.diff?r1=text&tr1=1.130&r2=text&tr2=1.129&f=h - Add 193 for setattr permission testing. From SRS0+48039a3a062cb3400783+1935+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 10 00:51:49 2008 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 mBA6pj6k021611 for ; Wed, 10 Dec 2008 00:51:49 -0600 X-ASG-Debug-ID: 1228891904-0182033c0000-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 1E03D170C9A4; Tue, 9 Dec 2008 22:51:44 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id GaeMEdzS59N8mOv0; Tue, 09 Dec 2008 22:51:44 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LAIvA-0001bD-1G; Wed, 10 Dec 2008 06:51:44 +0000 Date: Wed, 10 Dec 2008 01:51:44 -0500 From: Christoph Hellwig To: Niv Sardi Cc: Russell Cattelan , Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: New XFS git tree on oss.sgi.com Subject: Re: New XFS git tree on oss.sgi.com Message-ID: <20081210065143.GA5834@infradead.org> References: <492BA7AD.5080007@sgi.com> <20081125081644.GA20644@infradead.org> <492C0B3D.3040002@thebarn.com> <492CA07F.1030803@sgi.com> <492CC201.3080304@xfs.org> <20081209091725.GA26180@infradead.org> <493E9AB4.1050505@xfs.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: 1228891905 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Wed, Dec 10, 2008 at 09:20:05AM +1100, Niv Sardi wrote: > Please read git documentation. > > You don't want to be pulling xfs-dev into a xfs/master tree, you should > setup a remote properly and have local branch tracking them. Sorry, I'm not gona waste my time on this shit. It works just fine with a separate git repository that has zero downsides. From murrayma@canal.cps.cmich.edu Wed Dec 10 04:13:59 2008 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=BAYES_00,J_CHICKENPOX_43, J_CHICKENPOX_44,J_CHICKENPOX_45,J_CHICKENPOX_46,J_CHICKENPOX_47, J_CHICKENPOX_48 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 mBAADuwe030555 for ; Wed, 10 Dec 2008 04:13:59 -0600 X-ASG-Debug-ID: 1228904035-2765024f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ob3.cmich.edu (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7CA5780F6 for ; Wed, 10 Dec 2008 02:13:55 -0800 (PST) Received: from ob3.cmich.edu (ob3.cmich.edu [141.209.20.10]) by cuda.sgi.com with ESMTP id vz4yUyFSrR5HYE1U for ; Wed, 10 Dec 2008 02:13:55 -0800 (PST) Received: from mail.cps.cmich.edu (cps1.cps.cmich.edu [141.209.168.41]) by ob3.cmich.edu (8.13.8/8.13.8/Debian-3) with ESMTP id mBAADrn3027494 for ; Wed, 10 Dec 2008 05:13:54 -0500 Received: from mail.canal.cps.cmich.edu (cps-io [141.209.169.66]) by mail.cps.cmich.edu (Postfix) with ESMTP id B76CA25613F for ; Wed, 10 Dec 2008 05:13:53 -0500 (EST) Received: from [10.255.254.50] (covenant.labnet [::ffff:10.255.254.50]) by mail.canal.cps.cmich.edu with esmtp; Wed, 10 Dec 2008 05:13:53 -0500 id 12000114.493F9661.00004E04 Message-ID: <493F9661.20603@canal.cps.cmich.edu> Date: Wed, 10 Dec 2008 05:13:53 -0500 From: Martin Murray User-Agent: Mozilla-Thunderbird 2.0.0.17 (X11/20081018) MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: repaired xfs corruption causing invalid directories? Subject: repaired xfs corruption causing invalid directories? Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Canit-CHI2: 0.00 X-Bayes-Prob: 0.0001 (Score -0.5, tokens from: @@RPTN, default) X-CanItPRO-Stream: default X-Canit-Stats-ID: 6444139 - 82c86f38005e X-Scanned-By: CanIt (www . roaringpenguin . com) on 141.209.20.10 X-Barracuda-Connect: ob3.cmich.edu[141.209.20.10] X-Barracuda-Start-Time: 1228904035 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0014 1.0000 -2.0116 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 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.12388 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- I've got a ~3TB xfs filesystem build on an md raid5 of four 1TB drives. Ignoring a long, embarrassing story, I accidentally nuked the first 32 odd megabytes of the partition with dd. xfs_repair was able to recover almost everything. Unsurprisingly, I must have zero'd out a number of directory entries, as, suddenly, everything appeared in lost+found. We've been identifying, renaming, and moving entries in lost+found back to their original places, but have encountered something strange. I'm hoping someone can give me some advice. I do realize that my problem is due to operator error, but I'm hoping someone has a suggestion. Recently, after a reboot, doing an ls -li, as root, on the filesystem gives the following: ls: cannot access debian: Invalid argument ls: cannot access Documentation: Invalid argument 6988868050 ??????????? ? ? ? ? ? debian 13645710122 ??????????? ? ? ? ? ? Documentation 1073742080 drwxr-xr-x+ 2 nobody nogroup 35 2008-11-03 20:20 temp/ 536872760 drwxrwsrw-+ 51 nobody nogroup 4096 2008-11-01 06:20 TigerLineData/ 3221230395 drwsrwsrwx+ 23 nobody nogroup 8192 2008-12-09 22:52 Win32/ For brevity, I've omitted most of the working subdirectories. The strange part is that some of these directories, for example, the debian one, was created after the xfs_repair. Also, I cannot remove files in the directories nor even the directories themselves. I tried doing an xfsdump over the net to another machine and noticed screenfulls of errors similar to: xfsdump: WARNING: unable to open directory: ino 4296482141: Invalid argument xfsdump: WARNING: unable to open directory: ino 4296482142: Invalid argument xfsdump: WARNING: unable to open directory: ino 4296482150: Invalid argument ... xfsdump: WARNING: unable to open directory: ino 16796385598: Invalid argument xfsdump: WARNING: unable to open directory: ino 16797367298: Invalid argument xfsdump: WARNING: unable to open directory: ino 16797367299: Invalid argument The xfsdump is still running. I hope to backup the still-reachable data before addressing these invalid directories. Right before I did the xfsdump, however, I ran xfs_db and printed out one of the invalid directories: xfs_db> inode 6988868050 xfs_db> print core.magic = 0x494e core.mode = 040755 core.version = 2 core.format = 2 (extents) core.nlinkv2 = 5 core.onlink = 0 core.projid = 0 core.uid = 65534 core.gid = 65534 core.flushiter = 7 core.atime.sec = Sat Nov 8 00:50:05 2008 core.atime.nsec = 694489000 core.mtime.sec = Thu Oct 30 07:38:40 2008 core.mtime.nsec = 000000000 core.ctime.sec = Sat Nov 8 05:05:42 2008 core.ctime.nsec = 589799654 core.size = 4096 core.nblocks = 1 core.extsize = 0 core.nextents = 1 core.naextents = 0 core.forkoff = 11 core.aformat = 1 (local) core.dmevmask = 0 core.dmstate = 0 core.newrtbm = 0 core.prealloc = 0 core.realtime = 0 core.immutable = 0 core.append = 0 core.sync = 0 core.noatime = 0 core.nodump = 0 core.rtinherit = 0 core.projinherit = 0 core.nosymlinks = 0 core.extsz = 0 core.extszinherit = 0 core.nodefrag = 0 core.filestream = 0 core.gen = 3924941202 next_unlinked = null u.bmx[0] = [startoff,startblock,blockcount,extentflag] 0:[0,436805271,1,0] a.sfattr.hdr.totsize = 62 a.sfattr.hdr.count = 1 a.sfattr.list[0].namelen = 15 a.sfattr.list[0].valuelen = 40 a.sfattr.list[0].root = 1 a.sfattr.list[0].secure = 0 a.sfattr.list[0].name = "SGI_ACL_DEFAULT" a.sfattr.list[0].value = "\000\000\000\003\000\000\000\001\377\377\377\377\000\a\000\000\000\000\000\004\377\377\377\377\000\005\000\000\000\000\000 \377\377\377\377\000\a\000\000" Lastly, here is a copy of the xfs_info for the filesystem: meta-data=/dev/md0 isize=256 agcount=32, agsize=22892816 blks = sectsz=4096 attr=2 data = bsize=4096 blocks=732569856, imaxpct=5 = sunit=16 swidth=48 blks naming =version 2 bsize=4096 log =internal bsize=4096 blocks=32768, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=196608 blocks=0, rtextents=0 I've started reading the XFS filesystem structure PDF, but I cannot yet infer which field in the block would cause the invalid argument error. The one thing I've noticed so far, is that it appears that all the invalid directories are the extent format. Oh, I can provide an xfs_metadump as soon as the xfsdump finishes. Thank you, Martin Murray From davidsen@tmr.com Wed Dec 10 18:20:41 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.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 mBB0Kfqf005229 for ; Wed, 10 Dec 2008 18:20:41 -0600 X-ASG-Debug-ID: 1228954838-52b1019c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from partygirl.tmr.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 50664170E203 for ; Wed, 10 Dec 2008 16:20:39 -0800 (PST) Received: from partygirl.tmr.com (mail.tmr.com [64.65.253.246]) by cuda.sgi.com with ESMTP id 96bKd2JRC89BOjGj for ; Wed, 10 Dec 2008 16:20:39 -0800 (PST) Received: from partygirl.tmr.com (FC9install.tmr.com [127.0.0.1]) by partygirl.tmr.com (8.14.2/8.14.2) with ESMTP id mBB0Kb1B019153; Wed, 10 Dec 2008 19:20:37 -0500 Message-ID: <49405CD5.4070704@tmr.com> Date: Wed, 10 Dec 2008 19:20:37 -0500 From: Bill Davidsen Organization: TMR Associates Inc, Schenectady NY User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.18) Gecko/20081112 Fedora/1.1.13-1.fc9 SeaMonkey/1.1.13 MIME-Version: 1.0 To: Justin Piszcz CC: linux-raid@vger.kernel.org, xfs@oss.sgi.com, Alan Piszcz X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail.tmr.com[64.65.253.246] X-Barracuda-Start-Time: 1228954840 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.12436 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Justin Piszcz wrote: > Someone should write a document with XFS and barrier support, if I > recall, > in the past, they never worked right on raid1 or raid5 devices, but it > appears now they they work on RAID1, which slows down performance ~12 > times!! > I would expect you, as an experienced tester, to have done this measurement more rigorously! I don't think it means much if this is what you did. > l1:~# /usr/bin/time tar xf linux-2.6.27.7.tar 0.15user 1.54system > 0:13.18elapsed 12%CPU (0avgtext+0avgdata 0maxresident)k > 0inputs+0outputs (0major+325minor)pagefaults 0swaps > l1:~# > > l1:~# /usr/bin/time tar xf linux-2.6.27.7.tar > 0.14user 1.66system 2:39.68elapsed 1%CPU (0avgtext+0avgdata > 0maxresident)k > 0inputs+0outputs (0major+324minor)pagefaults 0swaps > l1:~# > Before doing any disk test you need to start by dropping cache, to be sure the appropriate reproducible things happen. And in doing a timing test, you need to end with a sync for the same reason. So: echo 1 >/proc/sys/vm/drop_caches time bash -c "YOUR TEST; sync" This will give you a fair shot at being able to reproduce the results, done on an otherwise unloaded system. -- Bill Davidsen "Woe unto the statesman who makes war without a reason that will still be valid when the war is over..." Otto von Bismark From davidsen@tmr.com Wed Dec 10 18:36:27 2008 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 (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 mBB0aRGZ005823 for ; Wed, 10 Dec 2008 18:36:27 -0600 X-ASG-Debug-ID: 1228955780-302702350000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from partygirl.tmr.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 78087C850 for ; Wed, 10 Dec 2008 16:36:23 -0800 (PST) Received: from partygirl.tmr.com (mail.tmr.com [64.65.253.246]) by cuda.sgi.com with ESMTP id Ajxg84Axej31n1TE for ; Wed, 10 Dec 2008 16:36:23 -0800 (PST) Received: from partygirl.tmr.com (FC9install.tmr.com [127.0.0.1]) by partygirl.tmr.com (8.14.2/8.14.2) with ESMTP id mBB0B0Hx019135; Wed, 10 Dec 2008 19:11:00 -0500 Message-ID: <49405A94.8080601@tmr.com> Date: Wed, 10 Dec 2008 19:11:00 -0500 From: Bill Davidsen Organization: TMR Associates Inc, Schenectady NY User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.18) Gecko/20081112 Fedora/1.1.13-1.fc9 SeaMonkey/1.1.13 MIME-Version: 1.0 To: Justin Piszcz CC: linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com, smartmontools-support@lists.sourceforge.net X-ASG-Orig-Subj: Re: Have the velociraptors in a test system now, checkout the errors. Subject: Re: Have the velociraptors in a test system now, checkout the errors. References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail.tmr.com[64.65.253.246] X-Barracuda-Start-Time: 1228955786 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0030 1.0000 -2.0014 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.00 X-Barracuda-Spam-Status: No, SCORE=-2.00 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.12438 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Justin Piszcz wrote: > Point of thread: Two problems, mentioned in detail below, NCQ in Linux > when used in a RAID configuration and two, something with how Linux > interacts with the drives causes lots of problems as when I run the WD > tools on the disks, they do not show any errors. > > If anyone has/would like me to run any debugging/patches/etc on this > system feel free to suggest/send me things to try out. After I put > the VR's in a test system, I left NCQ enabled and I made a 10 disk > raid5 to see how fast I could get it to fail, I ran bonnie++ shown > below as a disk benchmark/stress test: > > For the next test I will repeat this one but with NCQ disabled, having > NCQ enabled makes it fail very easily. Then I want to re-run the test > with RAID6. > > bonnie++ -d /r1/test -s 1000G -m p63 -n 16:100000:16:64 > > $ df -h > /dev/md3 2.5T 5.5M 2.5T 1% /r1 > > And the results? Two disk "failures" according to md/Linux within a > few hours as shown below: > > Note, the NCQ-related errors are what I talk about all of the time, if > you use > NCQ and Linux in a RAID environment with WD drives, well-- good luck. > > Two-disks failed out of the RAID5 and I currentlty cannot even 'see' > one of the drives with smartctl, will reboot the host and check sde > again. > > After a reboot, it comes up and has no errors, really makes one wonder > where/what the bugs is/are, there are two I can see: > 1. NCQ issue on at least WD drives in Linux in SW md/RAID > 2. Velociraptor/other disks reporting all kinds of sector errors etc, > but when you use the WD 11.x disk tools program and run all of their > tests it says the disks have no problems whatsoever! The smart > statistics do confirm this. Currently, TLER is on for all disks, for > the duration of these tests. Just a few comments on this, I have several RAID arrays built on Seagate using NCQ, and yet to have a problem. I have NCQ on with my WD drives, non-RAID, and haven't had an issue with them either. The WDs run a lot cooler than the SG, but they are probably getting less use, as well. If the WD are still on sale after the holiday I may grab a few more and run RAID, by then I will have some small sense of trusting them. -- Bill Davidsen "Woe unto the statesman who makes war without a reason that will still be valid when the war is over..." Otto von Bismark From xaiki@oss.sgi.com Wed Dec 10 20:15:10 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBB2F9cW010016 for ; Wed, 10 Dec 2008 20:15:09 -0600 Received: (from xaiki@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mBB2F3LV009959; Wed, 10 Dec 2008 20:15:03 -0600 Date: Wed, 10 Dec 2008 20:15:03 -0600 Message-Id: <200812110215.mBB2F3LV009959@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.28-rc3-1489-gc4cd747 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: e055f13a6d8448d4f23121b7b11340c3fb55cce6 X-Git-Newrev: c4cd747ee6c3ba1e7727878e3fce482d0d8c0136 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated c4cd747 [XFS] use inode_change_ok for setattr permission checking 4d4be48 [XFS] add a FMODE flag to make XFS invisible I/O less hacky 6d73cf1 [XFS] resync headers with libxfs 2175dd9 [XFS] simplify projid check in xfs_rename 15ac08a [XFS] replace b_fspriv with b_mount from e055f13a6d8448d4f23121b7b11340c3fb55cce6 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c4cd747ee6c3ba1e7727878e3fce482d0d8c0136 Author: Christoph Hellwig Date: Tue Dec 9 04:47:34 2008 -0500 [XFS] use inode_change_ok for setattr permission checking Instead of implementing our own checks use inode_change_ok to check for necessary permission in setattr. There is a slight change in behaviour as inode_change_ok doesn't allow i_mode updates to add the suid or sgid without superuser privilegues while the old XFS code just stripped away those bits from the file mode. (First sent on Semptember 29th) Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 4d4be482a4d78ca906f45e99fd9fdb91e907f5ad Author: Christoph Hellwig Date: Tue Dec 9 04:47:33 2008 -0500 [XFS] add a FMODE flag to make XFS invisible I/O less hacky XFS has a mode called invisble I/O that doesn't update any of the timestamps. It's used for HSM-style applications and exposed through the nasty open by handle ioctl. Instead of doing directly assignment of file operations that set an internal flag for it add a new FMODE_NOCMTIME flag that we can check in the normal file operations. (addition of the generic VFS flag has been ACKed by Al as an interims solution) Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 6d73cf133c5477f7038577bfeda603ce9946f8cb Author: Christoph Hellwig Date: Tue Dec 9 04:47:32 2008 -0500 [XFS] resync headers with libxfs - xfs_sb.h add the XFS_SB_VERSION2_PARENTBIT features2 that has been around in userspace for some time - xfs_inode.h: move a few things out of __KERNEL__ that are needed by userspace - xfs_mount.h: only include xfs_sync.h under __KERNEL__ - xfs_inode.c: minor whitespace fixup. I accidentaly changes this when importing this file for use by userspace. Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 2175dd95741bda5f438e4efe388a8c1bb5abf1cc Author: Christoph Hellwig Date: Tue Dec 9 04:47:31 2008 -0500 [XFS] simplify projid check in xfs_rename Check for the project ID after attaching all inodes to the transaction. That way the unlock in the error case is done by the transaction subsystem, which guaratees that is uses the right flags (which was wrong from day one of this check), and avoids having special code unlocking an array of inodes with potential duplicates. Attaching the inode first is the method used by xfs_rename and the other namespace methods all other error that require multiple locked inodes. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Lachlan McIlroy commit 15ac08a8b2c129abccf1be47b6ab09491e013db2 Author: Christoph Hellwig Date: Tue Dec 9 04:47:30 2008 -0500 [XFS] replace b_fspriv with b_mount Replace the b_fspriv pointer and it's ugly accessors with a properly types xfs_mount pointer. Also switch log reocvery over to it instead of using b_fspriv for the mount pointer. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Lachlan McIlroy ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_buf.c | 4 +- fs/xfs/linux-2.6/xfs_buf.h | 4 +- fs/xfs/linux-2.6/xfs_file.c | 145 ++++++--------------------------------- fs/xfs/linux-2.6/xfs_ioctl.c | 29 ++++++--- fs/xfs/linux-2.6/xfs_ioctl.h | 8 +- fs/xfs/linux-2.6/xfs_ioctl32.c | 56 +++++---------- fs/xfs/linux-2.6/xfs_iops.h | 1 - fs/xfs/linux-2.6/xfs_lrw.c | 11 +-- fs/xfs/xfs_buf_item.c | 4 +- fs/xfs/xfs_inode.c | 2 +- fs/xfs/xfs_inode.h | 16 ++-- fs/xfs/xfs_log_recover.c | 26 +++----- fs/xfs/xfs_mount.h | 4 +- fs/xfs/xfs_rename.c | 49 +++---------- fs/xfs/xfs_rw.c | 2 +- fs/xfs/xfs_sb.h | 1 + fs/xfs/xfs_vnodeops.c | 149 ++++++++++------------------------------ fs/xfs/xfs_vnodeops.h | 2 - include/linux/fs.h | 8 ++ 19 files changed, 149 insertions(+), 372 deletions(-) hooks/post-receive -- XFS development tree From jpiszcz@lucidpixels.com Thu Dec 11 03:25:30 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.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 mBB9PU7T032570 for ; Thu, 11 Dec 2008 03:25:30 -0600 X-ASG-Debug-ID: 1228987529-4f33004e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7F273170F86E for ; Thu, 11 Dec 2008 01:25:29 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id f4Y0TzrRUIGPCc5x for ; Thu, 11 Dec 2008 01:25:29 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 5CBD410050A13; Thu, 11 Dec 2008 04:24:58 -0500 (EST) Date: Thu, 11 Dec 2008 04:24:58 -0500 (EST) From: Justin Piszcz To: Bill Davidsen cc: linux-raid@vger.kernel.org, xfs@oss.sgi.com, Alan Piszcz X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] In-Reply-To: Message-ID: References: <49405CD5.4070704@tmr.com> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1228987529 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.12462 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, 11 Dec 2008, Justin Piszcz wrote: > > > On Wed, 10 Dec 2008, Bill Davidsen wrote: > >> Justin Piszcz wrote: >>> Someone should write a document with XFS and barrier support, if I recall, > > Best not to do things in a rush, here is the correct benchmark: # rm -rf linux*7 # sync # echo 1 > /proc/sys/vm/drop_caches # /usr/bin/time bash -c 'tar xf linux-2.6.27.7.tar; sync' 0.13user 1.62system 0:46.67elapsed 3%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (17major+955minor)pagefaults 0swaps Justin. From jpiszcz@lucidpixels.com Thu Dec 11 03:18:11 2008 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 mBB9IBrd032296 for ; Thu, 11 Dec 2008 03:18:11 -0600 X-ASG-Debug-ID: 1228987089-4f2d00360000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F05CB170F7CC for ; Thu, 11 Dec 2008 01:18:09 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id FyHsCKoxYLlwMZjb for ; Thu, 11 Dec 2008 01:18:09 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 28B2010050A21; Thu, 11 Dec 2008 04:18:09 -0500 (EST) Date: Thu, 11 Dec 2008 04:18:09 -0500 (EST) From: Justin Piszcz To: Bill Davidsen cc: linux-raid@vger.kernel.org, xfs@oss.sgi.com, Alan Piszcz X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] In-Reply-To: <49405CD5.4070704@tmr.com> Message-ID: References: <49405CD5.4070704@tmr.com> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1228987089 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.12461 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, 10 Dec 2008, Bill Davidsen wrote: > Justin Piszcz wrote: >> Someone should write a document with XFS and barrier support, if I recall, >> in the past, they never worked right on raid1 or raid5 devices, but it >> appears now they they work on RAID1, which slows down performance ~12 >> times!! >> > I would expect you, as an experienced tester, to have done this measurement > more rigorously! > I don't think it means much if this is what you did. > >> l1:~# /usr/bin/time tar xf linux-2.6.27.7.tar 0.15user 1.54system >> 0:13.18elapsed 12%CPU (0avgtext+0avgdata 0maxresident)k >> 0inputs+0outputs (0major+325minor)pagefaults 0swaps >> l1:~# >> >> l1:~# /usr/bin/time tar xf linux-2.6.27.7.tar >> 0.14user 1.66system 2:39.68elapsed 1%CPU (0avgtext+0avgdata 0maxresident)k >> 0inputs+0outputs (0major+324minor)pagefaults 0swaps >> l1:~# >> > Before doing any disk test you need to start by dropping cache, to be sure > the appropriate reproducible things happen. And in doing a timing test, you > need to end with a sync for the same reason. > > So: > echo 1 >/proc/sys/vm/drop_caches > time bash -c "YOUR TEST; sync" > > This will give you a fair shot at being able to reproduce the results, done > on an otherwise unloaded system. > > -- > Bill Davidsen > "Woe unto the statesman who makes war without a reason that will still > be valid when the war is over..." Otto von Bismark > Roughly the same for non-barriers: # bash -c '/usr/bin/time tar xf linux-2.6.27.7.tar' 0.15user 1.51system 0:12.95elapsed 12%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (4major+320minor)pagefaults 0swaps For barriers I cannot test that right now but it most likely will be around the same as well. Justin. From a.beregalov@gmail.com Thu Dec 11 04:17:09 2008 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 mBBAH8q0002991 for ; Thu, 11 Dec 2008 04:17:09 -0600 X-ASG-Debug-ID: 1228990627-4f2900f60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from yx-out-1718.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E43AB170FB43 for ; Thu, 11 Dec 2008 02:17:07 -0800 (PST) Received: from yx-out-1718.google.com (yx-out-1718.google.com [74.125.44.156]) by cuda.sgi.com with ESMTP id suDCBxnsnXu1lnm4 for ; Thu, 11 Dec 2008 02:17:07 -0800 (PST) Received: by yx-out-1718.google.com with SMTP id 36so424312yxh.32 for ; Thu, 11 Dec 2008 02:17:07 -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=gYuyIZo/Mw3OUNtbJewYcWHnumo1wGhbCJxBD+vqCEM=; b=wsrytQdrgiUO7Wcce17x8kVXbofefvl/ssHyAeAcj17iT+rFpl9civgcYIPjceX2As 39lDSIMI2RBSFBGoQcJaRFiq9/1eQ66EkonjIx19R7srDiL+ozlHudkyNYeL1kMCPl5J r2+CchrQ31ohUh6AtzOlaU3eJaamre72RJoi4= 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=Ek/4MqqBS8oABWNzuuVAbz6XFjBhZZw5mErT5FQNLCnZLejfsvway+pr/QqVqVoEj4 8lmQRugmN0dfBsr3MAx2fljZxzszTgczVwQ4e3+JKQh61KRp59pq3DiByy67uR/Bx9Ru znttrZh90x6HABt6Cqc9zAGwy/DwjITortgF8= Received: by 10.100.9.19 with SMTP id 19mr1883792ani.8.1228990223523; Thu, 11 Dec 2008 02:10:23 -0800 (PST) Received: by 10.100.14.13 with HTTP; Thu, 11 Dec 2008 02:10:23 -0800 (PST) Message-ID: Date: Thu, 11 Dec 2008 13:10:23 +0300 From: "Alexander Beregalov" To: "linux-next@vger.kernel.org" , xfs@oss.sgi.com, xfs-masters@oss.sgi.com X-ASG-Orig-Subj: next-20081210: BUG: sleeping function called from invalid context at mm/slub.c:1619 (XFS) Subject: next-20081210: BUG: sleeping function called from invalid context at mm/slub.c:1619 (XFS) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Barracuda-Connect: yx-out-1718.google.com[74.125.44.156] X-Barracuda-Start-Time: 1228990627 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.12464 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- BUG: sleeping function called from invalid context at mm/slub.c:1619 in_atomic(): 1, irqs_disabled(): 0, pid: 8096, name: sh INFO: lockdep is turned off. Pid: 8096, comm: sh Tainted: G W 2.6.28-rc7-next-20081210 #2 Call Trace: [] ? __debug_show_held_locks+0x1b/0x24 [] __might_sleep+0x120/0x122 [] __kmalloc+0x70/0xfc [] kmem_alloc+0x75/0xd7 [] xfs_fs_vcmn_err+0x46/0x94 [] xfs_fs_cmn_err+0x59/0x5e [] ? trace_hardirqs_on_caller+0x1f/0x15f [] ? xlog_grant_push_ail+0x26/0xed [] ? _spin_lock+0x68/0x70 [] xlog_space_left+0x62/0x6b [] xlog_grant_push_ail+0x3e/0xed [] xfs_log_reserve+0xa8/0xbc [] xfs_trans_reserve+0xe0/0x1bb [] xfs_create+0x138/0x431 [] ? d_rehash+0x23/0x44 [] xfs_vn_mknod+0xc9/0x139 [] xfs_vn_create+0xb/0xd [] vfs_create+0x58/0x7e [] do_filp_open+0x249/0x7d0 [] ? get_parent_ip+0x11/0x41 [] ? sub_preempt_count+0xba/0xce [] ? alloc_fd+0x11d/0x12e [] do_sys_open+0x53/0xda [] ? do_page_fault+0x394/0x887 [] sys_open+0x1b/0x1d [] system_call_fastpath+0x16/0x1b Filesystem "sda2": xlog_space_left: head behind tail tail_cycle = 1802201963, tail_bytes = -690563584 GH cycle = 3078, GH bytes = 69183384 From hch@lst.de Thu Dec 11 12:30:01 2008 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 mBBIU0Pa000309 for ; Thu, 11 Dec 2008 12:30:01 -0600 X-ASG-Debug-ID: 1229020198-09b8032e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from verein.lst.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CFB2A103C5; Thu, 11 Dec 2008 10:29:58 -0800 (PST) Received: from verein.lst.de (verein.lst.de [213.95.11.210]) by cuda.sgi.com with ESMTP id NRRh2pu60lLdiEWx; Thu, 11 Dec 2008 10:29:58 -0800 (PST) Received: from verein.lst.de (localhost [127.0.0.1]) by verein.lst.de (8.12.3/8.12.3/Debian-7.1) with ESMTP id mBBITtIF029056 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO); Thu, 11 Dec 2008 19:29:55 +0100 Received: (from hch@localhost) by verein.lst.de (8.12.3/8.12.3/Debian-6.6) id mBBITtcp029054; Thu, 11 Dec 2008 19:29:55 +0100 Date: Thu, 11 Dec 2008 19:29:55 +0100 From: Christoph Hellwig To: Alexander Beregalov Cc: "linux-next@vger.kernel.org" , xfs@oss.sgi.com, xfs-masters@oss.sgi.com X-ASG-Orig-Subj: Re: [xfs-masters] next-20081210: BUG: sleeping function called from invalid context at mm/slub.c:1619 (XFS) Subject: Re: [xfs-masters] next-20081210: BUG: sleeping function called from invalid context at mm/slub.c:1619 (XFS) Message-ID: <20081211182955.GB27952@lst.de> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.3.28i X-Scanned-By: MIMEDefang 2.39 X-Barracuda-Connect: verein.lst.de[213.95.11.210] X-Barracuda-Start-Time: 1229020199 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.12485 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Dec 11, 2008 at 01:10:23PM +0300, Alexander Beregalov wrote: > BUG: sleeping function called from invalid context at mm/slub.c:1619 > in_atomic(): 1, irqs_disabled(): 0, pid: 8096, name: sh > INFO: lockdep is turned off. > Pid: 8096, comm: sh Tainted: G W 2.6.28-rc7-next-20081210 #2 > Call Trace: > [] ? __debug_show_held_locks+0x1b/0x24 > [] __might_sleep+0x120/0x122 > [] __kmalloc+0x70/0xfc > [] kmem_alloc+0x75/0xd7 > [] xfs_fs_vcmn_err+0x46/0x94 > [] xfs_fs_cmn_err+0x59/0x5e xfs_fs_vcmn_err does a sleeping memory allocation under a spinlock, nasty. I have an idea that will get rid of the memory allocation completely, I'll come back to you once I have hacked something up. > Filesystem "sda2": xlog_space_left: head behind tail > tail_cycle = 1802201963, tail_bytes = -690563584 > GH cycle = 3078, GH bytes = 69183384 This btw is a bug, too.. From xaiki@oss.sgi.com Thu Dec 11 22:27:40 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBC4Re9p030093 for ; Thu, 11 Dec 2008 22:27:40 -0600 Received: (from xaiki@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mBC4RbhO030058; Thu, 11 Dec 2008 22:27:37 -0600 Date: Thu, 11 Dec 2008 22:27:37 -0600 Message-Id: <200812120427.mBC4RbhO030058@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.28-rc3-1491-g4d9d4eb X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: c4cd747ee6c3ba1e7727878e3fce482d0d8c0136 X-Git-Newrev: 4d9d4ebf5de848e3450e23e4db9ac74e23e5daa6 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated 4d9d4eb Merge branch 'master' of git+ssh://git.melbourne.sgi.com/git/xfs cfbe526 [XFS] set b_error from bio error in xfs_buf_bio_end_io from c4cd747ee6c3ba1e7727878e3fce482d0d8c0136 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4d9d4ebf5de848e3450e23e4db9ac74e23e5daa6 Merge: cfbe52672fbc6f333892e8dde82c35e0a76aa5f5 c4cd747ee6c3ba1e7727878e3fce482d0d8c0136 Author: Lachlan McIlroy Date: Fri Dec 12 15:28:02 2008 +1100 Merge branch 'master' of git+ssh://git.melbourne.sgi.com/git/xfs commit cfbe52672fbc6f333892e8dde82c35e0a76aa5f5 Author: Lachlan McIlroy Date: Fri Dec 12 15:27:25 2008 +1100 [XFS] set b_error from bio error in xfs_buf_bio_end_io Preserve any error returned by the bio layer. Reviewed-by: Eric Sandeen Reviewed-by: Tim Shimmin Signed-off-by: Lachlan McIlroy ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_buf.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) hooks/post-receive -- XFS development tree From news@studiokappa.it Fri Dec 12 00:13:33 2008 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 (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 mBC6DXwC004003 for ; Fri, 12 Dec 2008 00:13:33 -0600 X-ASG-Debug-ID: 1229062409-146501dd0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtpsmart2.aruba.it (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id E133F171F194 for ; Thu, 11 Dec 2008 22:13:30 -0800 (PST) Received: from smtpsmart2.aruba.it (smtpweb130.aruba.it [62.149.158.130]) by cuda.sgi.com with SMTP id pWCEpND1gXemgHc7 for ; Thu, 11 Dec 2008 22:13:30 -0800 (PST) Received: (qmail 27522 invoked by uid 89); 12 Dec 2008 06:13:27 -0000 Received: by simscan 1.2.0 ppid: 27489, pid: 27491, t: 1.2489s scanners: clamav: 0.88.4/m:40/d:1945 spam: 3.1.4 Received: from unknown (HELO webxc08s03.ad.aruba.it) (62.149.141.95) by smtpsmart2.fe.aruba.it with SMTP; 12 Dec 2008 06:13:26 -0000 Received: (qmail 21488 invoked by uid 18002703); 12 Dec 2008 06:13:27 -0000 To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Calendario degli eventi formativi 2008-2009 Subject: Calendario degli eventi formativi 2008-2009 Date: Fri, 12 Dec 2008 07:13:27 +0100 From: news@studiokappa.it Message-ID: <91ce07839ebb3df8d5e56bf6dfaa797c@www.studiokappa.it> X-Priority: 3 X-Mailer: PHPMailer [version 1.73] X-Mailer: phplist v2.10.4 X-MessageID: 83 X-ListMember: linux-xfs@oss.sgi.com Precedence: bulk Errors-To: news@studiokappa.it MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="UTF-8" X-Barracuda-Connect: smtpweb130.aruba.it[62.149.158.130] X-Barracuda-Start-Time: 1229062411 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5775 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=NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.12524 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name Caro amico, sperando di far cosa gradita, le indico che può trovare sul sito il Calendario degli formativi 2008-2009 che terremo a Biella. Può trovare ulteriori informazioni anche all'indirizzo: www.studiokappa.it Sul sito è anche presente una rassegna stampa di alcune delle attività di consulenza e di formazione realizzate dallo studio in questi anni. Cordialmente, Segreteria Studio Kappa www.studiokappa.it -- Per cancellarti da questa lista clicca su http://www.studiokappa.it/lists/?p=unsubscribe&uid=f95d79661173a656ad12f819a35cc5d5 Per aggiornare le tue preferenze clicca su http://www.studiokappa.it/lists/?p=preferences&uid=f95d79661173a656ad12f819a35cc5d5 -- Powered by PHPlist, www.phplist.com -- Questo messaggio contiene allegati che possono essere visti con un browser: Calendario degli eventi formativi 2008 - 2009 Luogo: http://www.studiokappa.it/lists/dl.php?id=12 From wl_partners=easydate.biz__2qkqw2751mt@9emom4pap9gm2rv4.7bs532fiyupivtku.pfcowd.bounce.salesforce.com Fri Dec 12 06:33:37 2008 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 (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 mBCCXaMG026522 for ; Fri, 12 Dec 2008 06:33:37 -0600 X-ASG-Debug-ID: 1229085215-189300310000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp13-sjl.mta.salesforce.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E1B38171FFFB for ; Fri, 12 Dec 2008 04:33:35 -0800 (PST) Received: from smtp13-sjl.mta.salesforce.com (smtp13-sjl.mta.salesforce.com [204.14.234.76]) by cuda.sgi.com with ESMTP id G51yLaYmFUQkHhAp for ; Fri, 12 Dec 2008 04:33:35 -0800 (PST) X-ASG-Whitelist: Sender X-ASG-Whitelist: Barracuda Reputation X-SFDC-Interface: internal Received: from [10.226.68.37] ([10.226.68.37:47467] helo=eu0-api3-4-sjl.ops.sfdc.net) by mx1-sjl.mta.salesforce.com (ecelerity 2.1.1.25 r(25708)) with ESMTP id AB/56-15896-3D852494 for ; Fri, 12 Dec 2008 12:28:03 +0000 Received: from [193.201.100.233] by emea.salesforce.com via HTTP; Fri, 12 Dec 2008 04:28:03 -0800 Date: Fri, 12 Dec 2008 12:28:03 +0000 (GMT) From: WL EasyDate Network To: "linux-xfs@oss.sgi.com" Message-ID: <18818836.176141229084883770.JavaMail.sfdc@eu0-api3-4-sjl.ops.sfdc.net> X-ASG-Orig-Subj: EasyDate now sharing their money making platform! Subject: EasyDate now sharing their money making platform! MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 X-Priority: 3 X-SFDC-LK: 00D200000001oyP X-SFDC-User: 00520000000x5aW X-Sender: postmaster@salesforce.com X-mail_abuse_inquiries: http://www.salesforce.com/company/abuse.jsp X-SFDC-Binding: iCBT705cy8bBFz3B X-Barracuda-Connect: smtp13-sjl.mta.salesforce.com[204.14.234.76] X-Barracuda-Start-Time: 1229085215 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id mBCCXaMG026522 Dear webmaster, We would like to work with you developing our white label dating project. We can set it up for you at no cost if you have strong interest in this field or work-at-home business. You can pick the name for your own dating site, own the domain and brand. We take care of all the backend and engineering work. Why you should sign up - Create dating site with over 5 million member’s database - Earn an attractive revenue share - No setup charges - No on-going charges - Build unlimited sites - Select a dating niche - Select a ready-made template or create your own - Assign your own meta tags and modify at anytime - Track confirmation and payment pages - Benefit from automatic and customised reporting - Restore site settings and back-up data - Plug into a database of more than 5 million members Revenue share - Earn 80% on all first-time sales during your first month - Earn 60% on all first-time sales after your first month - Earn 50% on all repeat sales http://whitelabeldating.easydate.biz/ Additional revenue opportunities 1. Our white label engine comes with a banner advertising facility you can use to display your own advertising on your dating site. So if you are a member of other affiliate/advertising networks, you can add your own code and display the adverts of your choice. 2. Join our affiliate network, promote EasyDate sites and earn money for confirmed registrations and sales. Please note that our affiliate network is independent from our white label dating network so you can join both and make even more money. EasyDate is the UK’s biggest online dating solutions provider. Launched commercially in the UK in 2002, EasyDate has over five million registered users. We cater for four strategic markets: mainstream dating, casual dating, mobile dating and leisure retail, and have a range of thirteen websites catering for the varying requirements of their users, including flagship sites www.benaughty.com and www.datetheuk.com. If you want to know more, contact us to get site creation guidelines. We look forward to working with you, White Label Dating Network http://www.easydate.biz From pavel@ucw.cz Fri Dec 12 12:57:00 2008 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 mBCIuxX6010384 for ; Fri, 12 Dec 2008 12:57:00 -0600 X-ASG-Debug-ID: 1229108215-24b6018b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from atrey.karlin.mff.cuni.cz (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7A2AE15F69 for ; Fri, 12 Dec 2008 10:56:55 -0800 (PST) Received: from atrey.karlin.mff.cuni.cz (atrey.karlin.mff.cuni.cz [195.113.26.193]) by cuda.sgi.com with ESMTP id svMD94rEFocIzOuM for ; Fri, 12 Dec 2008 10:56:55 -0800 (PST) Received: by atrey.karlin.mff.cuni.cz (Postfix, from userid 512) id 87BB1F0141; Fri, 12 Dec 2008 19:56:20 +0100 (CET) Date: Fri, 12 Dec 2008 19:58:03 +0100 From: Pavel Machek To: Justin Piszcz Cc: smartmontools-support@lists.sourceforge.net, smartmontools-database-owner@lists.sourceforge.net, linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org, xfs@oss.sgi.com, Alan Piszcz X-ASG-Orig-Subj: Re: Intel X25-E running Linux using XFS Subject: Re: Intel X25-E running Linux using XFS Message-ID: <20081212185803.GE11974@elf.ucw.cz> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Warning: Reading this can be dangerous to your mental health. User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: atrey.karlin.mff.cuni.cz[195.113.26.193] X-Barracuda-Start-Time: 1229108216 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.12563 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi! > Due to the 100k write cycle lifetime, I will not be performing any more > benchmarks on the SSD itself, such benchmarks are available on > techreport.com but just wanted to send out the smart data for the > smartmontools list and point out it is working with linux+ich7+xfs. > > Overall, whenever I do anything now its just like the entire machine is > sitting in a ramdisk (similar when you boot knoppix and load to ramdisk). > > The techreport benchmarks are here: > http://techreport.com/articles.x/15931 Actually I'd like to know... how does it behave during powerfails while it is being written to? Flashes I seen (USB / SD) developed bad sectors in that case, and ext2/ext3 can't handle that. (And I don't think xfs can handle that either). Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html From jpiszcz@lucidpixels.com Fri Dec 12 14:24:07 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 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 mBCKO60l014239 for ; Fri, 12 Dec 2008 14:24:07 -0600 X-ASG-Debug-ID: 1229113431-71e6024b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0EBC9165E3 for ; Fri, 12 Dec 2008 12:23:51 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id mdwOy1JV07vs1Spn for ; Fri, 12 Dec 2008 12:23:51 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id DBB20100E6EC5; Fri, 12 Dec 2008 15:23:19 -0500 (EST) Date: Fri, 12 Dec 2008 15:23:19 -0500 (EST) From: Justin Piszcz To: Pavel Machek cc: smartmontools-support@lists.sourceforge.net, smartmontools-database-owner@lists.sourceforge.net, linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org, xfs@oss.sgi.com, Alan Piszcz X-ASG-Orig-Subj: Re: Intel X25-E running Linux using XFS Subject: Re: Intel X25-E running Linux using XFS In-Reply-To: <20081212185803.GE11974@elf.ucw.cz> Message-ID: References: <20081212185803.GE11974@elf.ucw.cz> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1229113432 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.12568 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, 12 Dec 2008, Pavel Machek wrote: > > Hi! > >> Due to the 100k write cycle lifetime, I will not be performing any more >> benchmarks on the SSD itself, such benchmarks are available on >> techreport.com but just wanted to send out the smart data for the >> smartmontools list and point out it is working with linux+ich7+xfs. >> >> Overall, whenever I do anything now its just like the entire machine is >> sitting in a ramdisk (similar when you boot knoppix and load to ramdisk). >> >> The techreport benchmarks are here: >> http://techreport.com/articles.x/15931 > > Actually I'd like to know... how does it behave during powerfails > while it is being written to? > > Flashes I seen (USB / SD) developed bad sectors in that case, and > ext2/ext3 can't handle that. (And I don't think xfs can handle that > either). I have a UPS for all of my machines, so that will not be a problem in my case. I do not wish to trash a $720 SSD or my current install, if someone else wants to try feel free though :) With barriers, presumably it would be safe-- but as always, a UPS/and barriers and/or RAID, there is no excuse not to have regular backups incase of a failure at any time.. I do recall however one instance where there was an apt-get dist-upgrade going and the power was cut to a machine on purpose (before/not using barriers) and suffice to say-- it got mucked/suffered many corruptions all over the place. Justin. From sandeen@sandeen.net Fri Dec 12 14:36:43 2008 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,WEIRD_QUOTING 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 mBCKahUW014736 for ; Fri, 12 Dec 2008 14:36:43 -0600 X-ASG-Debug-ID: 1229114200-49cc03e60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BD4EE16C8739 for ; Fri, 12 Dec 2008 12:36:41 -0800 (PST) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id AMOZYsaNCYDcRFqy for ; Fri, 12 Dec 2008 12:36:41 -0800 (PST) Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id mBCKHiQq026469 for ; Fri, 12 Dec 2008 15:17:44 -0500 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id mBCKHeoV010159 for ; Fri, 12 Dec 2008 15:17:43 -0500 Received: from neon.msp.redhat.com (neon.msp.redhat.com [10.15.80.10]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id mBCKHcFX028624 for ; Fri, 12 Dec 2008 15:17:39 -0500 Message-ID: <4942C6E2.4040506@sandeen.net> Date: Fri, 12 Dec 2008 14:17:38 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (X11/20081119) MIME-Version: 1.0 To: xfs mailing list X-ASG-Orig-Subj: [PATCH] xfstests: test 194, test tricky mapping/conversion around holes Subject: [PATCH] xfstests: test 194, test tricky mapping/conversion around holes Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.58 on 172.16.27.26 X-Barracuda-Connect: mx2.redhat.com[66.187.237.31] X-Barracuda-Start-Time: 1229114201 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: 0.97 X-Barracuda-Spam-Status: No, SCORE=0.97 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_MJ615, WEIRD_QUOTING X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.12568 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 2.80 WEIRD_QUOTING BODY: Weird repeated double-quotation marks 0.20 BSF_SC0_MJ615 Custom Rule MJ615 Related to http://oss.sgi.com/bugzilla/show_bug.cgi?id=801 Latest patch posted on that bug makes this testcase pass... (are we at 194 now?) first 2 tests are simple buffred writ tests making sure stale data isn't exposed, and hole-blocks aren't mapped. 2nd 2 tests are more related to the above bug, tricky testcase uncovered by fsx on ppc64 which actually re-maps a block which should be a hole, bringing stale data back into existence. -Eric --- /dev/null 2008-12-01 16:01:41.522110504 -0600 +++ xfs-cmds/xfstests/194 2008-12-12 13:57:13.000000000 -0600 @@ -0,0 +1,200 @@ +#! /bin/sh +# FS QA Test No. 194 +# +# Test mapping around/over holes for sub-page blocks +# http://oss.sgi.com/bugzilla/show_bug.cgi?id=801 +# +#----------------------------------------------------------------------- +# Copyright (c) 2008 Eric Sandeen. All Rights Reserved. +#----------------------------------------------------------------------- +# +# creator +owner=sandeen@sandeen.net + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $tmp.* +} + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# only xfs supported due to use of xfs_bmap +_supported_fs xfs +_supported_os IRIX Linux + +# real QA test starts here +rm -f $seq.full + +# For this test we use block size = 1/8 page size +pgsize=`$here/src/feature -s` +blksize=`expr $pgsize / 8` + +# EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL +# 0: [0..63]: 160..223 0 (160..223) 64 +# 1: [64..127]: hole 64 + +# Filter out file mountpoint and physical location info +_filter_bmap() +{ + tee -a $seq.full | \ + sed "s#$SCRATCH_MNT#SCRATCH_MNT#g" | \ + awk --assign blksize=$blksize \ + '$3 ~ /hole/ { print $1 "\t" $3 "\t" ($4 * 512) / blksize; next } + $1 ~ /^[0-9]/ { print $1 "\tblocks\t" ($6 * 512) / blksize; next } + { print $1 "\tTYPE\t" $6 }' +} + +# Filter out offsets, which vary by blocksize +_filter_od() +{ + tee -a $seq.full | \ + sed -e "s/^[0-9A-Fa-f ]\{7,8\}//" +} + +_require_scratch +unset MKFS_OPTIONS +unset XFS_MKFS_OPTIONS +_scratch_mkfs_xfs -b size=$blksize >/dev/null 2>&1 +_scratch_mount + +# 512b block / 4k page example: +# +#1) Write 1k of data (buffered): +# +# |1111|1111| +# +# 2) ftruncate back to 256 bytes: +# +# |1100| +# +# 3) ftruncate out to 4k: ("H" means hole (expected)) +# +# |1100|HHHH|HHHH|HHHH|HHHH|HHHH|HHHH|HHHH| +# +# So we should have 1 block of data/0, 7 blocks of holes. +# +# 4) check what's there with a direct IO read +# +# In fact what I get is 1 block of data/0, 1 block of 0's, and 7 blocks of +# garbage: +# +# |1100|0000|GGGG|GGGG|GGGG|GGGG|GGGG|GGGG| +# +# The garbage is in fact stale data from the disk. +# +# Check that we don't get stale data and that the hole is a hole: + +echo "== Test 1 ==" +# Write, truncate in, truncate out +xfs_io \ +-c "pwrite -S 0x11 -b `expr $pgsize / 2` 0 `expr $pgsize / 2`" \ +-c "truncate `expr $blksize / 2`" \ +-c "truncate $pgsize" \ +-t -f $SCRATCH_MNT/testfile1 >> $seq.full + +# directio read of entire file +xfs_io \ +-c "pread 0 $pgsize" \ +-d $SCRATCH_MNT/testfile1 >> $seq.full + +xfs_bmap -v $SCRATCH_MNT/testfile1 | _filter_bmap +od -x $SCRATCH_MNT/testfile1 | _filter_od + +# Similar but write another block to create block/hole/block/hole + +echo "== Test 2 ==" +# Write, truncate in, truncate out, write to middle +xfs_io \ +-c "pwrite -S 0x11 -b `expr $pgsize / 2` 0 `expr $pgsize / 2`" \ +-c "truncate `expr $blksize / 2`" \ +-c "truncate $pgsize" \ +-c "pwrite -S 0x22 -b $blksize `expr $blksize \* 4` $blksize" \ +-t -f $SCRATCH_MNT/testfile2 >> $seq.full + +# directio read of entire file +xfs_io \ +-c "pread 0 $pgsize" \ +-d $SCRATCH_MNT/testfile2 >> $seq.full + +xfs_bmap -v $SCRATCH_MNT/testfile2 | _filter_bmap +od -x $SCRATCH_MNT/testfile2 | _filter_od + +# 512 byte block / 4k page example: + +# direct write 1 page (8 blocks) of "0x11" to 0x1000 +# map read 1 block, 512 (0x200) at 0 +# truncate to half a block, 256 (0x100) +# truncate to block+1, 513 (0x201) +# direct write "0x22" for 1 block at offset 2048 (0x800) + +# |1111|1111|1111|1111|1111|1111|1111|1111| Write 1's +# |MRMR|1111|1111|1111|1111|1111|1111|1111| mapread +# |11--| truncate down +# |1100|0---| truncate up, block+1 +# | | |HHHH|HHHH|2222| Write 2's (extending) + +# |uptodate?| +# |1100|0000|1111|1111|2222|----|----|----| <- potential badness + +# We're looking for this badness due to mapping over a hole: +# Exposes stale data from 0x400 (1024) through 0x800 (2048) + +# 00000000 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 |................| +# * +# 00000100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +# * +# 00000400 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 |................| <- BAD +# * +# 00000800 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 |""""""""""""""""| +# * +# 00000a00 + +# We *should* get: +# |1100|HHHH|HHHH|HHHH|2222|----|----|----| + +echo "== Test 3 ==" +xfs_io \ +-c "pwrite -S 0x11 -b $pgsize 0 $pgsize" \ +-c "mmap -r 0 $blksize" -c "mread 0 $blksize" -c "munmap" \ +-c "truncate `expr $blksize / 2`" \ +-c "truncate `expr $blksize + 1`" \ +-c "pwrite -S 0x22 -b $blksize `expr $pgsize / 2` $blksize" \ +-t -d -f $SCRATCH_MNT/testfile3 >> $seq.full + +xfs_bmap -v $SCRATCH_MNT/testfile3 | _filter_bmap +od -x $SCRATCH_MNT/testfile3 | _filter_od + +# Now try the same thing but write a sector in the middle of that hole +# If things go badly stale data will be exposed either side. +# This is most interesting for block size > 512 (page size > 4096) + +# We *should* get: +# |1100|HHHH|33HH|HHHH|2222|----|----|----| + +echo "== Test 4 ==" +xfs_io \ +-c "pwrite -S 0x11 -b $pgsize 0 $pgsize" \ +-c "mmap -r 0 $blksize" -c "mread 0 $blksize" -c "munmap" \ +-c "truncate `expr $blksize / 2`" \ +-c "truncate `expr $blksize + 1`" \ +-c "pwrite -S 0x22 -b $blksize `expr $pgsize / 2` $blksize" \ +-c "pwrite -S 0x33 -b 512 `expr $blksize \* 2` 512" \ +-t -d -f $SCRATCH_MNT/testfile4 >> $seq.full + +xfs_bmap -v $SCRATCH_MNT/testfile4 | _filter_bmap +od -x $SCRATCH_MNT/testfile4 | _filter_od + +# success, all done +status=0 +exit --- /dev/null 2008-12-01 16:01:41.522110504 -0600 +++ xfs-cmds/xfstests/194.out 2008-12-12 13:57:14.000000000 -0600 @@ -0,0 +1,59 @@ +QA output created by 194 +== Test 1 == +SCRATCH_MNT/testfile1: TYPE +EXT: TYPE TOTAL +0: blocks 1 +1: hole 7 +1111 1111 1111 1111 1111 1111 1111 1111 +* +0000 0000 0000 0000 0000 0000 0000 0000 +* + +== Test 2 == +SCRATCH_MNT/testfile2: TYPE +EXT: TYPE TOTAL +0: blocks 1 +1: hole 3 +2: blocks 1 +3: hole 3 +1111 1111 1111 1111 1111 1111 1111 1111 +* +0000 0000 0000 0000 0000 0000 0000 0000 +* +2222 2222 2222 2222 2222 2222 2222 2222 +* +0000 0000 0000 0000 0000 0000 0000 0000 +* + +== Test 3 == +SCRATCH_MNT/testfile3: TYPE +EXT: TYPE TOTAL +0: blocks 1 +1: hole 3 +2: blocks 1 +1111 1111 1111 1111 1111 1111 1111 1111 +* +0000 0000 0000 0000 0000 0000 0000 0000 +* +2222 2222 2222 2222 2222 2222 2222 2222 +* + +== Test 4 == +SCRATCH_MNT/testfile4: TYPE +EXT: TYPE TOTAL +0: blocks 1 +1: hole 1 +2: blocks 1 +3: hole 1 +4: blocks 1 +1111 1111 1111 1111 1111 1111 1111 1111 +* +0000 0000 0000 0000 0000 0000 0000 0000 +* +3333 3333 3333 3333 3333 3333 3333 3333 +* +0000 0000 0000 0000 0000 0000 0000 0000 +* +2222 2222 2222 2222 2222 2222 2222 2222 +* + From david@fromorbit.com Fri Dec 12 16:02:52 2008 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 (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 mBCM2oQO018449 for ; Fri, 12 Dec 2008 16:02:52 -0600 X-ASG-Debug-ID: 1229119368-414602860000-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 2F34A1726F for ; Fri, 12 Dec 2008 14:02:49 -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 DHpIFmBQ3lPL5FSC for ; Fri, 12 Dec 2008 14:02:49 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAPxsQkl5LCOr/2dsb2JhbADPbIJ9 X-IronPort-AV: E=Sophos;i="4.36,213,1228051800"; d="scan'208";a="274902051" Received: from ppp121-44-35-171.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.35.171]) by ipmail05.adl2.internode.on.net with ESMTP; 13 Dec 2008 08:32:46 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LBG5s-0008T8-1k; Sat, 13 Dec 2008 09:02:44 +1100 Date: Sat, 13 Dec 2008 09:02:44 +1100 From: Dave Chinner To: Wu Fengguang Cc: David Chinner , LKML , Ingo Molnar , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs: possible circular locking dependency detected Subject: Re: xfs: possible circular locking dependency detected Message-ID: <20081212220243.GB22525@disturbed> Mail-Followup-To: Wu Fengguang , David Chinner , LKML , Ingo Molnar , xfs@oss.sgi.com References: <20081206132023.GA21235@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081206132023.GA21235@localhost> 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: 1229119370 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.12572 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Dec 06, 2008 at 09:20:24PM +0800, Wu Fengguang wrote: > Hi Dave, > > I got this warning while accessing xfs on usb storage. > Is this a real problem? False positive. I haven't had time to add and test the lockdep annotation Peter created last week to allow us to avoid this, but hopefully that will make it go away. Cheers, Dave. -- Dave Chinner david@fromorbit.com From list0570@paradise.net.nz Fri Dec 12 17:37:49 2008 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 mBCNblAF024737 for ; Fri, 12 Dec 2008 17:37:49 -0600 X-ASG-Debug-ID: 1229125061-0f7402e90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp4.clear.net.nz (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AE196171F3 for ; Fri, 12 Dec 2008 15:37:41 -0800 (PST) Received: from smtp4.clear.net.nz (smtp4.clear.net.nz [203.97.37.64]) by cuda.sgi.com with ESMTP id aVan8AG2t7UoUSe9 for ; Fri, 12 Dec 2008 15:37:41 -0800 (PST) Received: from kereru.site ([202.0.57.237]) by smtp4.clear.net.nz (CLEAR Net Mail) with ESMTP id <0KBS006UPDJ2PW10@smtp4.clear.net.nz> for xfs@oss.sgi.com; Sat, 13 Dec 2008 12:06:39 +1300 (NZDT) Received: from kereru.site (localhost [127.0.0.1]) by kereru.site (8.14.1/8.14.1/SuSE Linux 0.8) with ESMTP id mBCN6TAK031878; Sat, 13 Dec 2008 12:06:32 +1300 Received: (from volker@localhost) by kereru.site (8.14.1/8.14.1/Submit) id mBCN6TJ5031873; Sat, 13 Dec 2008 12:06:29 +1300 Date: Sat, 13 Dec 2008 12:06:29 +1300 From: Volker Kuhlmann X-ASG-Orig-Subj: Re: Intel X25-E running Linux using XFS Subject: Re: Intel X25-E running Linux using XFS In-reply-to: <20081212185803.GE11974@elf.ucw.cz> To: Pavel Machek Cc: Justin Piszcz , xfs@oss.sgi.com, Alan Piszcz Message-id: <20081212230629.GA2791@paradise.net.nz> MIME-version: 1.0 Content-type: text/plain; charset=us-ascii Content-disposition: inline References: <20081212185803.GE11974@elf.ucw.cz> X-Barracuda-Connect: smtp4.clear.net.nz[203.97.37.64] X-Barracuda-Start-Time: 1229125062 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.12574 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi guys, can you take smartmontools-database-owner@lists.sourceforge.net out of cc please? The list owner can't help with your discussion ;) Did you mean smartmontools-database@.. ? Though that list is for collecting hard disk data. HTH, Volker (list admin) On Sat 13 Dec 2008 07:58:03 NZDT +1300, Pavel Machek wrote: > > > Hi! > > > Due to the 100k write cycle lifetime, I will not be performing any more > > benchmarks on the SSD itself, such benchmarks are available on > > techreport.com but just wanted to send out the smart data for the > > smartmontools list and point out it is working with linux+ich7+xfs. > > > > Overall, whenever I do anything now its just like the entire machine is > > sitting in a ramdisk (similar when you boot knoppix and load to ramdisk). > > > > The techreport benchmarks are here: > > http://techreport.com/articles.x/15931 > > Actually I'd like to know... how does it behave during powerfails > while it is being written to? > > Flashes I seen (USB / SD) developed bad sectors in that case, and > ext2/ext3 can't handle that. (And I don't think xfs can handle that > either). > Pavel > -- > (english) http://www.livejournal.com/~pavelmachek > (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html -- Volker Kuhlmann is list0570 with the domain in header http://volker.dnsalias.net/ Please do not CC list postings to me. From www-data@monsoonconsultant.com Fri Dec 12 21:09:36 2008 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 mBD39aHG001353 for ; Fri, 12 Dec 2008 21:09:36 -0600 X-ASG-Debug-ID: 1229137128-75a402300000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from zangetsu.cyber-isp.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D2F9D1B971D5 for ; Fri, 12 Dec 2008 18:58:51 -0800 (PST) Received: from zangetsu.cyber-isp.net (smtp5.cyber-isp.net [202.58.65.20]) by cuda.sgi.com with ESMTP id TbjnFyJPPXqnoBQ6 for ; Fri, 12 Dec 2008 18:58:51 -0800 (PST) Received: from localhost (localhost.localdomain [127.0.0.1]) by zangetsu.cyber-isp.net (Postfix) with ESMTP id F02322B0E3 for ; Fri, 12 Dec 2008 16:24:10 +0700 (WIT) Received: from zangetsu.cyber-isp.net ([127.0.0.1]) by localhost (zangetsu.cyber-isp.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id AL5KP-uZ7ixh for ; Fri, 12 Dec 2008 16:24:09 +0700 (WIT) Received: from mx.monsoonconsultant.com (unknown [202.58.65.175]) by zangetsu.cyber-isp.net (Postfix) with ESMTP id 1B2512B0B9 for ; Fri, 12 Dec 2008 16:24:02 +0700 (WIT) Received: by mx.monsoonconsultant.com (Postfix, from userid 33) id 0CF24FB8320; Fri, 12 Dec 2008 16:54:43 +0700 (WIT) To: xfs@oss.sgi.com X-ASG-Orig-Subj: XX Open House SAP eAcademy Subject: XX Open House SAP eAcademy MIME-Version: 1.0 From: sidharta@monsoonacademy.com Cc: Content-Type: multipart/mixed; boundary="=_3d7e59c074e4dc3e3001bb0c19da8f27" Message-ID: Date: Fri, 12 Dec 2008 16:54:43 +0700 (WIT) X-Barracuda-Connect: smtp5.cyber-isp.net[202.58.65.20] X-Barracuda-Start-Time: 1229137774 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 --=_3d7e59c074e4dc3e3001bb0c19da8f27 Content-Type: text/html; charset="ISO-8859-1" Content-Transfer-Encoding: quoted-printable Untitled Document

Dear ,

We will be having our 20th SAP eAcademy Open S= ession together with SAP Indonesia at SAP Indonesia.

 

This is a free event and will last about 2 hours starting 16:30  to= 18:30

This is a very favorite event and is usually attended by many, and dinner provided!

 

Date : 17th December 2008

Time : 16:30 : 18:30

Place : PT SAP INDONESIA

            = Kyoei Prince 22nd floor

            Jendral SUdirman, Jakarta Pusat

 

We will be sharing many topics:

  • The Big name and Big advantage of the SAP brand
  • What are your career options in today's environment
  • The prospect of being an SAP consultant going forward.

Seats are limited.  Please register now at our website, www.monsoon= academy.com

This event will be hosted by Abdy Taminsyah, founder of www.mySAPexpert.com and ex SAP head of Consulting, Indonesia= .

Welcome !

 

NOTE: Each registered pa= rticipant will be given up to USD 200 worth of voucher. *

* Validity for 5 days only. Cannot be used along with other promotional = programs and can be used only for eAcademy courses. Applicable only&nb= sp;if you register coming to the event ONLINE.

Thank you for working with us.

With Best Regards,

Customer Service Officer
mySAPexpert Member Services


To see a list of current SAP Job Opportunities, click here

To browse current available SAP consultants, click here

Forgot Password? No problem. Just cli= ck Forgot Pasword link in this login page.

NOTE: Always update the information on your DAS= HBOARD.  We want to ensure that we have the latest informati= on from you so we can do quality and effective matchings for you. =

 

--=_3d7e59c074e4dc3e3001bb0c19da8f27 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="200810161802310.Master proposal-eAcademy_2008.PDF" JVBERi0xLjMKJcfsj6IKNSAwIG9iago8PC9MZW5ndGggNiAwIFIvRmlsdGVyIC9GbGF0ZURlY29k ZT4+CnN0cmVhbQp4nN3bX48kV32H8dhgMA3CQJL7lgLKDNHMdlWdOn1OhLjwH5J1ggTOKEixuQLs gFhbNkF5H0jcR1Fucp9XkleU6p46v98YbCW3+eyuZ2tqqqb7abe/Xj/W8/HxdD/Nx9Pl5zj42YvD s3fOxw9+c7iePr7zN/vBJx8cPj60++Xy43ri6fHPXhxff9hu7Md+fHj/cLrvvZ3q+fq16dj69nlf j+e53c/t+PDicPPS7cOvDvNU78vUtmsefr6feuvh8OPDx8e6TNd75+335Tz1Yz3V/vjcptPxzY8u F/2vT2Yj+qxns87zHz2T68Xbr7i6/8FTX/rl4ndvXr69K9udvU03X7i9265dz6e53XzxyfErt/P9 cq7L+eZLt3fz/fm0rMvNlx8vqGU637x6u9yfTutpGrddz37l8eIylXHf5fC9D+Pir+bZl27vpmmp 8/1887Un3+Kly3E597LEs7uef3xG6+ONlytaKe1Td47j1uvjNz/35VMXvPfJk0++/vhM5v7ph3/t 8bi1uoxL1qXefOPJ6fFt/viTb37qGfz04e3Ht8LpfkPv6/Y39o8Orm/IqZy3vznzejq+OCzneT/+ 9ePxdng5vl6zH//z4SffPX64vcOWx7f73fb79vXlct98eYO9/vzw7PkPj//yyW9/cXj2k+NUD8/+ 9vrx9R+9cZwOz958dzqcfnp49oNnb7zxg+3TH33ve8/+7ni3feWNj3792xcf/ma7+PvfPzx/8/gX //7Xj7+++K3/+N3zb//u+T9dPnzn8uHbv/uvy4e3r6e/88vLmd9fT7/935cz371e8/vrXQ/Xa/7q euY/r9f84/XMO9cz//bynxwPbz0//vgPiNZT2d63GtRSQajaPKh6OoFQywxCVXAoageH4vJHFg+q gkNx7uBQtBkciraCQ9EaOBR9Boeir+BQ9OYNxXyavKGYT8UbivnUvKGYp8kbinkq4FBsf6L1oLZ/ qECoAg7FfAaHYgFl5ryAMnNeQJm57QQ4FAWUmXMBZeZcQJm5sYBDsYIyc15BmTlXUGbOFZSZcwVl 5vaHdHAozqDMnM+izGyizGyizGyizOyizOyizOygzFxOoMxcTqDMXE6gzFwmUGYuEygzlwmUmcsM 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 7FQdouhhKahhXSioYV0kqOhhKahhXSioCg5F9LASVPSwFFQFhyJ6WAkqelgKagWHInpYCSp6WApq BYcielgIKntYCqp4Q5E9rAQVPSwFVcChiB5WgooeloIq4FBEDytBLaDMzB6WggJlZvawFBQoM7OH paBAmZk9LAUFyszsYSWoCsrM7GEpKFBmZg9LQYEyM3tYCaqJMrOJMrOJMrOLMrOLMrODMjN7WAoK lJnZw0pQEygzs4eloECZmT0sBQXKzOxhKShQZmYPS0GBMjN7WAmqgDIze1gKCpSZ2cNSUKDMzB5W gqqgzMweloICZWb2sP+/oX58mI6Xn598sB388jCVed2Y1tNxnrcP5+2vT35xeP+7h3q/feFfD+34 w+26tz/nun+4vEbr3K6v0lyn5Xhu6/Yq1e0PYO18eZmevbOdfPOj7WFP14u2h/340O6Xy4/riafH P3txfP1hu6Ufp/n48P7h8i5qp3792nRcp/N9bcdyqvelHB9eHG5eun341ePlLS6f9quX0/YkWr8/ 17z0ri/3cz8vx7vt32SXL/z88O7Ny7d3031ZpnO9+cLt3em+rKXXevPFy3EvZTqft5vv5vvz6VTK zSu30/3l/xWdx8V17eebL10vXudlufnydsG51tN68+rt3bbC07JM17seT37l9q7dr/20lpv3Prxd 78/z+bQ8fYCv5uHX4q73Prk+QD2VVj7n4nzcr+eTeW18vW53/fTh7cPd9iZudXv5Lq9ALf+XV2D7 74NpPOY016ff/ht5+M3Lw5d+Ljff+oyjJ/fkS/FaPvknSK/G11/J1+9PP+v+/PZfyyv/7OkrPW0n p6k9uefPP+vR92c3tXV9+kweX7HPezde31/L9n568laclvvtjfj3l8/+8vM/vPVwuPxj+D+Zeis9 ZW5kc3RyZWFtCmVuZG9iago2IDAgb2JqCjcwMDAKZW5kb2JqCjE4IDAgb2JqCjw8L0xlbmd0aCAx OSAwIFIvRmlsdGVyIC9GbGF0ZURlY29kZT4+CnN0cmVhbQp4nK1c3W8ltRVXAjfJJlG+Nks2Jbtc WDbcS8kw9ow9nteqFVLFCyhv0CdakCpBBf3/pR6Px/bx+OeZm+0CEs5cj318vr88v6/rSsh1bf/1 g59+Pf76+279y3+Ph8fr778ZB3/8cvz7saka+8/wgI9/+nX9l0d6sV/368efj+uq702tu+E3sTY9 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 mOjbB8Ve+V/0W4+TWukL22sU06wJ4t6EyVSXWb206F5w1ARQ3w/3C48sRb9P6ne35v+F779d+HBF QJBfRkMsGpq9zrpS7m/Ed7q6CnfLBwljAYEL6f2KkGOsbgbWo/R2wsuvdbPFuX8e4BiWm168Rfq1 f30yxtUStTPSGy6aYQ/POlP40Rk8posFFE9fXvca89TmvwO6naZ4UbqZmmm3tyDL9qnsfwNlCo9n dflzRPskTD1UN8r9Agn6DEdxsWenU2/UOx9X0KaqhEdbyEZqTA4ZVDf2+rLOJvRF8yfurAQVPu6a kvKk5MmkNyZGpIltXKXXTbOxZRSeesAo8av+c3A//WT3DPWtU1DZtJq1Cct7GPEqTPn/3Sb8GsSO wEkpD296V3QShgjHxE0b0c/jbMsgV+sLwPakR+FQ/Yv9+BiLPZ6u01108q6KWbhf7fS4U+N0A4RY rhG8XkuuCbYb3WaNjp1yaNxbn6I2FfOujwTpds2Z7QdG9vkNA+PTMoRNvXvtTYAftkt8LIy/r8aG yzW6xtwuxWXXiaDAbyNXpx3vwhTWF4kyOVghzUrZRGHSrbntHTs/NaLnuCSZ53tVMu4WH9dra3x4 yBIeE49mUwB/OrHfvqhO0Vx7MD3rBM1R38FTsdavzN0m4Pw6StSXyqzMhA59Aa54Kd3su/Lprc+N R50YD78Q2VuhX0D+E/jRKGFlbmRzdHJlYW0KZW5kb2JqCjg5IDAgb2JqCjI1NzIKZW5kb2JqCjQg MCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1BhcmVudCAzIDAgUgov UmVzb3VyY2VzPDwvUHJvY1NldFsvUERGIC9JbWFnZUIgL0ltYWdlQyAvVGV4dF0KL0V4dEdTdGF0 ZSAxNCAwIFIKL1hPYmplY3QgMTUgMCBSCi9Gb250IDE2IDAgUgo+PgovQ29udGVudHMgNSAwIFIK Pj4KZW5kb2JqCjE3IDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9Q YXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvSW1hZ2VDIC9UZXh0XQovRXh0 R1N0YXRlIDIyIDAgUgovWE9iamVjdCAyMyAwIFIKL0ZvbnQgMjQgMCBSCj4+Ci9Db250ZW50cyAx OCAwIFIKPj4KZW5kb2JqCjI1IDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDYxMiA3 OTJdCi9QYXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvSW1hZ2VDIC9UZXh0 XQovRXh0R1N0YXRlIDI5IDAgUgovWE9iamVjdCAzMCAwIFIKL0ZvbnQgMzEgMCBSCj4+Ci9Db250 ZW50cyAyNiAwIFIKPj4KZW5kb2JqCjMyIDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAw IDYxMiA3OTJdCi9QYXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvSW1hZ2VD IC9JbWFnZUkgL1RleHRdCi9Db2xvclNwYWNlIDM4IDAgUgovRXh0R1N0YXRlIDM5IDAgUgovWE9i amVjdCA0MCAwIFIKL0ZvbnQgNDEgMCBSCj4+Ci9Db250ZW50cyAzMyAwIFIKPj4KZW5kb2JqCjQy IDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9QYXJlbnQgMyAwIFIK L1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvSW1hZ2VDIC9UZXh0XQovRXh0R1N0YXRlIDQ3IDAg UgovWE9iamVjdCA0OCAwIFIKL0ZvbnQgNDkgMCBSCj4+Ci9Db250ZW50cyA0MyAwIFIKPj4KZW5k b2JqCjUwIDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9QYXJlbnQg MyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvSW1hZ2VDIC9UZXh0XQovRXh0R1N0YXRl IDU1IDAgUgovWE9iamVjdCA1NiAwIFIKL0ZvbnQgNTcgMCBSCj4+Ci9Db250ZW50cyA1MSAwIFIK Pj4KZW5kb2JqCjU4IDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9Q YXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvSW1hZ2VDIC9UZXh0XQovRXh0 R1N0YXRlIDYzIDAgUgovWE9iamVjdCA2NCAwIFIKL0ZvbnQgNjUgMCBSCj4+Ci9Db250ZW50cyA1 OSAwIFIKPj4KZW5kb2JqCjY2IDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAwIDYxMiA3 OTJdCi9QYXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvSW1hZ2VDIC9UZXh0 XQovRXh0R1N0YXRlIDcwIDAgUgovWE9iamVjdCA3MSAwIFIKL0ZvbnQgNzIgMCBSCj4+Ci9Db250 ZW50cyA2NyAwIFIKPj4KZW5kb2JqCjczIDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJveCBbMCAw IDYxMiA3OTJdCi9QYXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAvSW1hZ2VD IC9UZXh0XQovRXh0R1N0YXRlIDc4IDAgUgovWE9iamVjdCA3OSAwIFIKL0ZvbnQgODAgMCBSCj4+ Ci9Db250ZW50cyA3NCAwIFIKPj4KZW5kb2JqCjgxIDAgb2JqCjw8L1R5cGUvUGFnZS9NZWRpYUJv eCBbMCAwIDYxMiA3OTJdCi9QYXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERiAv SW1hZ2VDIC9UZXh0XQovRXh0R1N0YXRlIDg0IDAgUgovWE9iamVjdCA4NSAwIFIKL0ZvbnQgODYg MCBSCj4+Ci9Db250ZW50cyA4MiAwIFIKPj4KZW5kb2JqCjg3IDAgb2JqCjw8L1R5cGUvUGFnZS9N ZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9QYXJlbnQgMyAwIFIKL1Jlc291cmNlczw8L1Byb2NTZXRb L1BERiAvSW1hZ2VDIC9UZXh0XQovRXh0R1N0YXRlIDk0IDAgUgovWE9iamVjdCA5NSAwIFIKL0Zv bnQgOTYgMCBSCj4+Ci9Db250ZW50cyA4OCAwIFIKPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUg L1BhZ2VzIC9LaWRzIFsKNCAwIFIKMTcgMCBSCjI1IDAgUgozMiAwIFIKNDIgMCBSCjUwIDAgUgo1 OCAwIFIKNjYgMCBSCjczIDAgUgo4MSAwIFIKODcgMCBSCl0gL0NvdW50IDExCj4+CmVuZG9iagox IDAgb2JqCjw8L1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDMgMCBSCj4+CmVuZG9iago3IDAgb2JqCjw8 L1R5cGUvRXh0R1N0YXRlCi9PUE0gMT4+ZW5kb2JqCjE0IDAgb2JqCjw8L1I3CjcgMCBSPj4KZW5k b2JqCjE1IDAgb2JqCjw8L1IxMwoxMyAwIFIvUjEwCjEwIDAgUj4+CmVuZG9iagoxMyAwIG9iago8 PC9TdWJ0eXBlL0ltYWdlCi9Db2xvclNwYWNlL0RldmljZVJHQgovV2lkdGggMTA4MAovSGVpZ2h0 IDgwMAovQml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIvRENURGVjb2RlL0xlbmd0aCA2MDUwMz4+ c3RyZWFtCv/Y/+4ADkFkb2JlAGQAAAAAAf/bAEMABgQFBgUEBgYFBgcHBggKEAoKCQkKFA4PDBAX FBgYFxQWFhodJR8aGyMcFhYgLCAjJicpKikZHy0wLSgwJSgpKP/bAEMBBwcHCggKEwoKEygaFhoo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKP/AABEIAyAE OAMBEQACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQD BQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygp KjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJma oqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/ xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQID EQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RF RkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqy s7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/ APqmgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKAMTW/Edpo91Hb3MdzJJIm9RDHu4zigDSa7RbA3ZDiMR+ZjHOMZ6UAZGkeK9O1W7S2txOksilk8 xNoYD0NAGhqeq2+nTWcU4ctdSeVHtGefegA0nVbfVDc/Zg/+jymJ9wx8w9KAM3VPFun6bfS2syXL tFjzHjTKpnpk5oA345FkiWRTlGG4H2oAytE8QWWsz3ENp5u+H729cd+1AFbV/FVlpV6bW5iujIMY KRZDZHQHPNAGs17Gumm+ZXEQj80gj5sYz09aAE0u+h1KwhvLfcIpRldwwfxoAx08Y6a98LYJc4Mv kiby/wB3vzjGc/0oA19W1GHSrCS8ud5ijxnYMnrjpQBSg8RWU8mnJH5pN+rNEdvp1z6UAXp7+KF2 EiuMd8DHTNAFygAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKAGgg9DmgB1ABQAUAFABQAUAFABQAUAFAEU08UOPOlSPPTcwGaAJaACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoA4jxQt4/jbTF06aOG5Ns+15F3KOTnigDptUDjQbsSkNILdtxHQnbzQBwPhs/wDE08J/ 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 AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAH//ZCmVuZHN0cmVhbQplbmRvYmoKMTAgMCBv YmoKPDwvU3VidHlwZS9JbWFnZQovQ29sb3JTcGFjZS9EZXZpY2VSR0IKL1dpZHRoIDEwMQovSGVp Z2h0IDM3Ci9CaXRzUGVyQ29tcG9uZW50IDgKL0ZpbHRlci9EQ1REZWNvZGUvTGVuZ3RoIDI0MTA+ PnN0cmVhbQr/2P/uAA5BZG9iZQBkAAAAAAH/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQ FxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYa KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAl AGUDAREAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIE AwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJico KSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6 /8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAEC AxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNE RUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmq srO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEA PwD6Z1zVbTRNKuNQ1CURW0C7mY/oB7mqjFzdkZVq0aMHORl+CNT1bWtOl1HVbWOzt7h99nBz5ixY 4L+568UTSi7IzwtSdWHPNWuaXiCHUbjSLiLRbmK1v2H7qWVdyqc9xRG19TWqpuNqbszlvh14k1XU NT1nRPEQgOpaY6gyQrtWRT3xWtamo2lHZnHgq9WcpQrbo7qsD0CqNRsmdkW7tiyqXIEq5CjqevQU WJ549xWvrVbQXTXMAtiMiYyDYf8AgXSgOaNr30FlvbaGJZJbiFI2G5WaQAEYzkGgHKK1bA3lsPJz cQjz+IsyD95/u+v4UBzLTXcVru3W5W2aeEXDDKxFwGI9QOtAcyva+oNd263K2zTwi4YZWIuN5HqB 1oDmV7X1EF9am4EAuYPPJIEfmDcSOox14osHPG9rligo8u+I0p13x/4a8LsT9jL/AGy5XP39uSAf bg110VyU5VDx8ZJV8TDDv1PUFAVQFAAAwAO1ch7C0OXePxR/wnyyLJbf8Ix5OChxv34/POfwxWq5 OTzORqv7e/2Dm/DDLY/GjxTBcEI95bxTQ7uN4AGcVpP3qUbdDlofusZNSfxbHpcpZY3ZF3MASB6m uY9R7HlOi+AEC+FP7Q0eLzFa4udUdgpLMwJVHOfmGSOOR8taue9jzKeD/h80e7Yy38NahYWukyXf h86lYQzXjtpavHiJ5JcxvtY7SAgxjtuo5k+olQnBRcoXSvp6vQtaX4Numm0CDWNNilsLNb26NsWE kULyMPLhGfvBRn2pOS1sXDDSvBTWiu7euyKNl4W1OBfCEbaEZbizRRLJM8bwxo0pd1Kk5Vl4Ksuf TpTclrqRHDzXs1y6r7t/06E03hjUrjUbm2l0QNqMuqC7GvNKnyQiQMoXneCFGzZjFHMhuhNyacdb 35vIWXwzqVxqNxbS6IDqMmqfaxrzSodkIkDALzvBCjZsxijmQOhNyacdb35vIsWvhG5N7ZajLpaJ qM3iCS9uJyV3x24L7RnPQgJwPWjm6FRw0rqTjrzXfoeoVkekeU64htPj3os8uBHdWjIhPqAw/nXX DWg0eLWjy4+E3s0erVyHtBQB5J4usG8c/EZtFt2Syj0mJZZr5FzNlsEIDxgc11xahSu+p4tek8Ti uVO3Kej63qcPh7QJ7668yWO2jHC8tIeFAHuSQPxrlSu7Hq1JqjDmfQ5lvHF3p91cw+INEax8iya+ JjuBNuXeEVAAB8xY4xVcl9mc/wBblBtVI2srl0eJ9TsdPvb/AMRaE2n2UEHnq8dyszMcgCMqAMMc j1HvS5U3ZMr284xcqkbJeZUTxteWd9LB4g0Q6ckVjJqLOtyJcRKQMYAHzZOMfzp8nZk/WpRlapG2 lzPuvFerDXNGOq2Euj2IiuL+ULOsvmwpFna4A4YFlOPpzT5VZ2IliJ88edcq1fysTaF8SI9Ru2iu NPEEb20l1CyTiQgIu4rIABsbHPU0nAdPGqbs1bS//DiWXjzV7t7OKPwwRNf2hvLVWvVA2DGTIdvy jkY65zT5F3COLqSaXJurrUsRfES1Wzgu72ze2huNN+3w5fc0jh9rQgY5bJXHrupcg/rsVFSkrXV/ +Adjpk1xcafbzXluLa5kQNJCG3eWSPu574qGdkG3FNqzOV+J3hy51jTbXUNIA/tnS5Rc2vbfjkpn 3xW1KfLeL2ZxY7DyqpThvE2PB/iO18S6Ql3bZSZDsuIGGHhkHVWHas5x5XY6MPWVaN+vU17m4htY HmuZUhhQZZ3YKo+pNSk3ojaUlFXZ5n8ObiLUvib401CzYS2j+TGJV5UsBjj8q6a0eWEUeVgJKpXq 1Fsei6xpttq+mXFhfx+ZbTrsdQcH6g9iDgg+1c6dndHp1IKpFxlszn7fwJpSfbvtc1/qDXtsLWZ7 y4MjFAcjB4wQfT0p87MFhIK923dW1ZPa+DrGOyvbW7vNT1GG7i8hxe3TSbUHQL0APv196HJjjhop OLbd+7I7DwPpltLdSXE9/qD3VqbKU3twZcxE52+34UczCOFgm223dW1fQbYeBNLtbgzTz6hft9le yxeXBlAhbGVA7cDFHOxRwkIu7beltX0JLHwbZ2ljeWn2/VZ4Lm3Nrtnui/lRkYwnGB9eTQ5NjjhY xTjdtNW3LyeHbJLuK4QyrJFY/wBnphuFiyDxx97gc+1LmZaoRTv5WMVvB0b6v4eiMcf9i6FDm3Dt ulkm4A3cfdAGfc49Krm0fmYvDJygvsx29Ts6g7AoAr29nbW0081vBFFLOwaVkUAuRxk+tFyYwjFt pbjNW02z1ewlstRgW4tZcB426HnNNNp3QTgprlkR6Lo+n6JafZdKtIrWDO4rGuMn1PrTlJyd2TSp QpK0FYv1JoFABQAUAFABQAUAFABQB//ZCmVuZHN0cmVhbQplbmRvYmoKMTYgMCBvYmoKPDwvUjkK OSAwIFIvUjEyCjEyIDAgUj4+CmVuZG9iagoyMiAwIG9iago8PC9SNwo3IDAgUj4+CmVuZG9iagoy MyAwIG9iago8PC9SMTAKMTAgMCBSPj4KZW5kb2JqCjI0IDAgb2JqCjw8L1I5CjkgMCBSL1IyMQoy MSAwIFIvUjEyCjEyIDAgUj4+CmVuZG9iagoyOSAwIG9iago8PC9SNwo3IDAgUj4+CmVuZG9iagoz MCAwIG9iago8PC9SMjgKMjggMCBSL1IxMAoxMCAwIFI+PgplbmRvYmoKMjggMCBvYmoKPDwvU3Vi dHlwZS9JbWFnZQovQ29sb3JTcGFjZS9EZXZpY2VSR0IKL1dpZHRoIDU1OQovSGVpZ2h0IDQyMAov Qml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIvRENURGVjb2RlL0xlbmd0aCA1MzYzMj4+c3RyZWFt Cv/Y/+4ADkFkb2JlAGQAAAAAAf/bAEMABgQFBgUEBgYFBgcHBggKEAoKCQkKFA4PDBAXFBgYFxQW FhodJR8aGyMcFhYgLCAjJicpKikZHy0wLSgwJSgpKP/bAEMBBwcHCggKEwoKEygaFhooKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKP/AABEIAaQCLwMBEQAC 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 QAf8LN8If9Bf/wAlpv8A4igA/wCFm+EP+gv/AOS03/xFAB/ws3wh/wBBf/yWm/8AiKAD/hZvhD/o L/8AktN/8RQAjfEzweylW1YFSMEG1m5/8coA5zQda+G2hatf6jp95HHc3j72/wBCcCP1CYjBAPfm gpyb3OjHxN8IDpq2P+3ab/4igkX/AIWb4Q/6C/8A5LTf/EUAH/CzfCH/AEF//Jab/wCIoAP+Fm+E P+gv/wCS03/xFAB/ws3wh/0F/wDyWm/+IoAP+Fm+EP8AoL/+S03/AMRQB5v8RH8L+MNcXUB4wFoq W6wJCdMmkwQzNndx13dMdqlxub0q3s1ax5bb+EtPv/EM6an4jtbXTkwFuY7aaRpf91Nox+OPxpKN jSWIT1PafBM/wu8IxRNp90kt8ow17PayvKx7kHZ8v0GKpI55VHLc7H/hZvhD/oL/APktN/8AEUyA /wCFm+EP+gv/AOS03/xFAB/ws3wh/wBBf/yWm/8AiKAD/hZvhD/oL/8AktN/8RQAf8LN8If9Bf8A 8lpv/iKAD/hZvhD/AKC//ktN/wDEUAH/AAs3wh/0F/8AyWm/+IoA+aKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/9kKZW5k c3RyZWFtCmVuZG9iagozMSAwIG9iago8PC9SOQo5IDAgUi9SMTIKMTIgMCBSPj4KZW5kb2JqCjM2 IDAgb2JqClsvSW5kZXhlZAovRGV2aWNlUkdCCjI1NQo8RkVGRUZFQzBDMEMwN0E3QTdBMDAwMDAw NTM1MzUzRTFFMUUxRjVGNUY1Njg2ODY4Q0NDQ0NDQjRCNEI0RDdENwpENzk5OTk5OUVDRUNFQzhC OEI4QkE3QTdBNzM5MzkzOUY4REJCNEY0QzQ3QUY5RTBDMEYwQUIwMEZFRkFGNUYzCkJFNjhGQkVC RDdGREY1RUNGN0Q2QTdGMkI4NTNGQ0YwRTFGNUNBOEIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMAowMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwCjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAowMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCjAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAow MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwCjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAKMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAowMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAowMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCjAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAKMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMAowMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwCjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAowMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCjAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA+XWVu ZG9iagozOCAwIG9iago8PC9SMzYKMzYgMCBSPj4KZW5kb2JqCjM5IDAgb2JqCjw8L1I3CjcgMCBS Pj4KZW5kb2JqCjQwIDAgb2JqCjw8L1IzNwozNyAwIFIvUjM1CjM1IDAgUi9SMTAKMTAgMCBSPj4K ZW5kb2JqCjM3IDAgb2JqCjw8L1N1YnR5cGUvSW1hZ2UKL0NvbG9yU3BhY2UgMzYgMCBSCi9XaWR0 aCA1ODYKL0hlaWdodCAzMDAKL0JpdHNQZXJDb21wb25lbnQgOAovRmlsdGVyL0ZsYXRlRGVjb2Rl L0xlbmd0aCA5NTI4Pj5zdHJlYW0KeJztnYl68zZzhbmA+4L2T5r+be//PovZgAEJyrItJZI953mS z6ZIEMshZgiZL6vKZDKZTCaTyWQymUwmk8lkMplMJpPJZDKZTCaTyWQymUwmk8lkMplMJtNPV920 bdvU8qtrO/y3b0lD/GRsHf0wtVNexFzN7YI/NW3D/65fq83k5JTrFs6+97Ix1XDhGhaa0m43ih58 Ve3tePHpfOtDOp46JFXkWuOxhz6pWX7YeBTa/fOFLFIJT0VsMiSxm3YufOm/Vdt4Pi6Nfp3lJ3FS GztllPYcnLQOYbN3XGlP/7pv1QbKd/iTw/PpetTtpZPCNXHDwLechG24z0mxq27oe07CypC+4yQv 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 6kD71guRsGwaZuY1vuRNY8YXCf/BsFtOMNVlqkWF8aeuTL6/5jTs2xsEjneo46+Th1ebyEtEQN3r v5LmJ3+D+76SFCZtWV7+bzZ+z1+VvJUghcmu8d69+BX/m/7SzWQymUwmk8lkMplMJpPJZDKZTCaT yWQymUwmk8lkMplMJpPJZDKZTCaTyfSj9P/jGdHOCmVuZHN0cmVhbQplbmRvYmoKMzUgMCBvYmoK PDwvU3VidHlwZS9JbWFnZQovQ29sb3JTcGFjZS9EZXZpY2VSR0IKL1dpZHRoIDUwMAovSGVpZ2h0 IDM1OAovQml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIvRENURGVjb2RlL0xlbmd0aCAyODg2OT4+ c3RyZWFtCv/Y/+4ADkFkb2JlAGQAAAAAAf/bAEMABgQFBgUEBgYFBgcHBggKEAoKCQkKFA4PDBAX FBgYFxQWFhodJR8aGyMcFhYgLCAjJicpKikZHy0wLSgwJSgpKP/bAEMBBwcHCggKEwoKEygaFhoo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKP/AABEIAWYB 9AMBEQACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQD BQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygp KjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJma oqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/ xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQID EQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RF RkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqy s7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/ 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 b2JqCjw8L1I5CjkgMCBSL1IyMQoyMSAwIFIvUjEyCjEyIDAgUj4+CmVuZG9iago0NyAwIG9iago8 PC9SNwo3IDAgUj4+CmVuZG9iago0OCAwIG9iago8PC9SNDYKNDYgMCBSL1I0NQo0NSAwIFIvUjEw CjEwIDAgUj4+CmVuZG9iago0NiAwIG9iago8PC9TdWJ0eXBlL0ltYWdlCi9Db2xvclNwYWNlL0Rl dmljZVJHQgovV2lkdGggNzEwCi9IZWlnaHQgNTMzCi9CaXRzUGVyQ29tcG9uZW50IDgKL0ZpbHRl ci9EQ1REZWNvZGUvTGVuZ3RoIDc0MDIxPj5zdHJlYW0K/9j/7gAOQWRvYmUAZAAAAAAB/9sAQwAG BAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAt KDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgCFQLGAwERAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAA AAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGh CCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp anN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV 1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkK C//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy 0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKD hIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm 5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+qKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC 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 AZjlktwKZW5kc3RyZWFtCmVuZG9iago0OSAwIG9iago8PC9SOQo5IDAgUi9SMjEKMjEgMCBSL1Ix MgoxMiAwIFI+PgplbmRvYmoKNTUgMCBvYmoKPDwvUjcKNyAwIFI+PgplbmRvYmoKNTYgMCBvYmoK PDwvUjU0CjU0IDAgUi9SNTMKNTMgMCBSL1IxMAoxMCAwIFI+PgplbmRvYmoKNTQgMCBvYmoKPDwv U3VidHlwZS9JbWFnZQovQ29sb3JTcGFjZS9EZXZpY2VSR0IKL1dpZHRoIDcwMwovSGVpZ2h0IDUx NgovQml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIvRENURGVjb2RlL0xlbmd0aCA2OTY3ND4+c3Ry ZWFtCv/Y/+4ADkFkb2JlAGQAAAAAAf/bAEMABgQFBgUEBgYFBgcHBggKEAoKCQkKFA4PDBAXFBgY FxQWFhodJR8aGyMcFhYgLCAjJicpKikZHy0wLSgwJSgpKP/bAEMBBwcHCggKEwoKEygaFhooKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKP/AABEIAgQCvwMB EQACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUE BAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1 Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOk paanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAf AQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQF ITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdI SUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1 tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APqi 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 KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKP/AABEIAgUCwAMBEQAC EQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAA AX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4 OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaan qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQAD AQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEG EkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpT VFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4 ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APqdmCqW YgKBkk9AKAIPt1p/z9Qf9/BQAfbrT/n6g/7+CgA+3Wn/AD9Qf9/BQAfbrT/n6g/7+CgA+3Wn/P1B /wB/BQAfbrT/AJ+oP+/goAPt1p/z9Qf9/BQAfbrT/n6g/wC/goAPt1p/z9Qf9/BQAfbrT/n6g/7+ CgA+3Wn/AD9Qf9/BQAfbrT/n6g/7+CgA+3Wn/P1B/wB/BQAfbrT/AJ+oP+/goAPt1p/z9Qf9/BQA fbrT/n6g/wC/goAPt1p/z9Qf9/BQAfbrT/n6g/7+CgA+3Wn/AD9Qf9/BQAfbrT/n6g/7+CgA+3Wn /P1B/wB/BQAfbrT/AJ+oP+/goAPt1p/z9Qf9/BQAfbrT/n6g/wC/goAPt1p/z9Qf9/BQAfbrT/n6 g/7+CgA+3Wn/AD9Qf9/BQAfbrT/n6g/7+CgA+3Wn/P1B/wB/BQAfbrT/AJ+oP+/goAPt1p/z9Qf9 /BQAfbrT/n6g/wC/goAPt1p/z9Qf9/BQAfbrT/n6g/7+CgA+3Wn/AD9Qf9/BQAfbrT/n6g/7+CgA +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 QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQBHc/8AHtL/ALh/lWOI/hT9H+RM/hZgV8secFAHl1ppHiOb T5NMlHiOFRJEUeZtNNvDtuY33xbMykhQSokBHXIJxXa500+bT/ya+3Xp9xq3G9/8zRt/CusjUv3u rais4vHmfVoxa+ZLGYdqKUMZRSPunCc4BzyQIdWFtlttr39f1FzK2xq614cnbTtBsNJurq2W0vBK 93EYjKi+XKC+HUoSWYAjafvHAHaIVVeUpLdf5EqWrbKet6FrF5cmEX2qPbRwHbNFefZ3klEWFLeW UHL8kABc9scVUKkEr2X3X/MakkYd/o/i2819pootRtbd/LhmZNSfbIN8RMiDzyqfKrghY0OScFgT WkZ0lG2n3evl+pScUi1Ho/iO21OBGXWLm1id1s5I9U2iFRcSEm43OTMGiMQXKuw2tyhO4LnptdL9 dPLp219BXjYo3WkeLbvUNrWV6sH2E207Pfl452MAwwUzlQRICD+7U5IIYgmqU6SW/Xt5+n6jvFHU +C7TV7TV9b/tKO9NnJMXgmvJtzN8x4VRPIoTGMYWLtlc81hVcHGPLv8A15L9SZNNKx11YEBQAUAF AG/bf8e0X+4P5V9Th/4UPRfkejD4USVsUFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBHc/8AHtL/ALh/lWOI/hT9H+RM/hZg V8secFABQAUAFABQAUAFABQAUAFABQAUAFAG/bf8e0X+4P5V9Th/4UPRfkejD4USVsUFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU 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 QAUAFABQAUAFABQBt2n/ACJeq/8AYQs//RdzUv4l/XYtfA/VfqYlUQFABQAUAFABQAUAFABQAUAF ABQAUAFAG343/wCR01//ALCFx/6Maph8KLqfG/UxKogKACgAoAKACgAoAKACgAoAKACgAoA2/CP/ ACFZ/wDsH33/AKSy1M9vu/MuG/yf5GJVEBQAUAFABQAUAFABQAUAFABQAUAFABQB7V+zh/zMX/bv /wC1a5sR0OzC9T2muY6woAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD 5t8V+BPEN54p1i5t7OFoZryaRGN5CpKlyQcF8jg9DXZGrBRSbOCdGbk2kZf/AArzxN/z4wf+BsH/ AMXVe2h3J9hU7B/wrzxN/wA+MH/gbB/8XR7aHcPYVOwf8K88Tf8APjB/4Gwf/F0e2h3D2FTsH/Cv PE3/AD4wf+BsH/xdHtodw9hU7B/wrzxN/wA+MH/gbB/8XR7aHcPYVOwf8K88Tf8APjB/4Gwf/F0e 2h3D2FTsH/CvPE3/AD4wf+BsH/xdHtodw9hU7B/wrzxN/wA+MH/gbB/8XR7aHcPYVOwf8K88Tf8A PjB/4Gwf/F0e2h3D2FTsH/CvPE3/AD4wf+BsH/xdHtodw9hU7B/wrzxN/wA+MH/gbB/8XR7aHcPY VOwf8K88Tf8APjB/4Gwf/F0e2h3D2FTsH/CvPE3/AD4wf+BsH/xdHtodw9hU7B/wrzxN/wA+MH/g bB/8XR7aHcPYVOwf8K88Tf8APjB/4Gwf/F0e2h3D2FTsH/CvPE3/AD4wf+BsH/xdHtodw9hU7B/w rzxN/wA+MH/gbB/8XR7aHcPYVOxrWngLxH/wi+o2osYjPJeW0qqLuE5VUnBOd+By6/n7Gp9rDmvc pUZ8rVv61Mz/AIVv4q/6Bsf/AIGQf/F1XtodyfYVOwf8K38Vf9A2P/wMg/8Ai6PbQ7h7Cp2D/hW/ ir/oGx/+BkH/AMXR7aHcPYVOwf8ACt/FX/QNj/8AAyD/AOLo9tDuHsKnYP8AhW/ir/oGx/8AgZB/ 8XR7aHcPYVOwf8K38Vf9A2P/AMDIP/i6PbQ7h7Cp2D/hW/ir/oGx/wDgZB/8XR7aHcPYVOwf8K38 Vf8AQNj/APAyD/4uj20O4ewqdg/4Vv4q/wCgbH/4GQf/ABdHtodw9hU7B/wrfxV/0DY//AyD/wCL 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 h/jQAf2fdf8APL/x4f40AH9n3X/PL/x4f40AH9n3X/PL/wAeH+NAB/Z91/zy/wDHh/jQAf2fdf8A PL/x4f40AH9n3X/PL/x4f40AH9n3X/PL/wAeH+NAB/Z91/zy/wDHh/jQBoaVbyweb5q7d2Mcg+tA F+gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//9kK ZW5kc3RyZWFtCmVuZG9iago1NyAwIG9iago8PC9SOQo5IDAgUi9SMTIKMTIgMCBSPj4KZW5kb2Jq CjYzIDAgb2JqCjw8L1I3CjcgMCBSPj4KZW5kb2JqCjY0IDAgb2JqCjw8L1I2Mgo2MiAwIFIvUjYx CjYxIDAgUi9SMTAKMTAgMCBSPj4KZW5kb2JqCjYyIDAgb2JqCjw8L1N1YnR5cGUvSW1hZ2UKL0Nv bG9yU3BhY2UvRGV2aWNlUkdCCi9XaWR0aCA3MDMKL0hlaWdodCA1MjMKL0JpdHNQZXJDb21wb25l bnQgOAovRmlsdGVyL0RDVERlY29kZS9MZW5ndGggNTc5NDk+PnN0cmVhbQr/2P/uAA5BZG9iZQBk AAAAAAH/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwg IyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAILAr8DAREAAhEBAxEB/8QAHwAAAQUB AQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEG E1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLD 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 zQBq3P8Ax7S/7h/lWOI/hT9H+RM/hZgV8secFABQAUAFABQAUAFABQAUAFABQAUAFAG1p3/HnH+P 8zX0eA/3ePz/ADZ3UfgRSi/5Gu6/68ov/Rkldhqa1ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAVtR/485Pw/mK48f/u8vl+aMq3wMxa+cOEKACgAoAKACgAoAKACgAoAKACgAoAK AOjr689MxrT/AJHLVP8ArwtP/RlzQBq3P/HtL/uH+VY4j+FP0f5Ez+FmBXyx5wUAFABQAUAFABQA UAFABQAUAFABQAUAbWnf8ecf4/zNfR4D/d4/P82d1H4EUov+Rruv+vKL/wBGSV2GprUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAjKGUhgCD2IpSipK0ldCaT0YzyIf+eUf/AHyK y+r0v5F9yFyR7B5EP/PKP/vkUfV6X8i+5ByR7B5EP/PKP/vkUfV6X8i+5ByR7B5EP/PKP/vkUfV6 X8i+5ByR7B5EP/PKP/vkUfV6X8i+5ByR7B5EP/PKP/vkUfV6X8i+5ByR7B5EP/PKP/vkUfV6X8i+ 5ByR7B5EP/PKP/vkUfV6X8i+5ByR7B5EP/PKP/vkUfV6X8i+5ByR7B5EP/PKP/vkUfV6X8i+5ByR 7B5EP/PKP/vkUfV6X8i+5ByR7B5EP/PKP/vkUfV6X8i+5ByR7B5EP/PKP/vkUfV6X8i+5ByR7B5E P/PKP/vkUfV6X8i+5ByR7ElbFGNaf8jlqn/Xhaf+jLmgDYIBBBGQeoNJpNWYbjPIh/55R/8AfIrL 6vS/kX3Inkj2DyIf+eUf/fIo+r0v5F9yDkj2DyIf+eUf/fIo+r0v5F9yDkj2DyIf+eUf/fIo+r0v 5F9yDkj2DyIf+eUf/fIo+r0v5F9yDkj2DyIf+eUf/fIo+r0v5F9yDkj2DyIf+eUf/fIo+r0v5F9y Dkj2DyIf+eUf/fIo+r0v5F9yDkj2DyIf+eUf/fIo+r0v5F9yDkj2DyIf+eUf/fIo+r0v5F9yDkj2 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 WyX4f5kKlLVW0vf8f8j03y77+0/M+0239neXjyPs7ebvz97zN+MY7bM+9culvM6db+RbqRnR+Hf+ PJ/+uh/kK9jL/wCG/X/I8rHfxF6GpXecYUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBW 1H/jzk/D+Yrjx/8Au8vl+aMq3wMxa+cOErapbtd6Zd28ZUPNC8alugJUgZqouzTBaM4LTfBmoywW ltqcT2lvDPHK7weJb66kYLFKnyM6oYuXX7hGRkHoAemVeKu46/8AbqXb7zRzXT8kXdO8CIr20WpT 3EkFtHNGJINQuYpLjfIGDTFWG9iB824kE8gAHAmWI35evkvwE59jt4o0ijSONQkaAKqgYAA6CuZ6 kDqACgAoAKACgAoAKACgAoA6Ovrz0zGtP+Ry1T/rwtP/AEZc0Aal3/x6zf7jfyoA5ugAoAKACgAo AKACgAoAKACgAoAKACgAoA39L/48Yvx/maALVAFXVP8Ajxl/D+YoAwKACgAoAKACgAoAKACgAoAK ACgAoAKACgDqaACgDnfEX/H6n/XMfzNePmH8Ren+Z6uB/hv1MquA7DlPHVve3kukW1gjSNJM5aMa nPYBgIyeZIQW4PbGDW1JpXb/ACT/ADMqibsl+dvyMybV9b0WF4Lq/wBMit7XyoJLu7jeQQs67vMk cyLlFA2c4JLAkjBzahGeqTJcpR0bKepeONVi0+6mtTpn2yKzlmgsXilaW8KxuyyxANny8qBjHf7w OMuNGLdne19+wnVlbQJPHepXl7rr6H/Zt5p2miSSNokaRrhFggcBWDhfvTMd3TCgY53A9hFJc2jf +b/yD2zbfLsv+AJpPjTXdTs45rddK2ojyNL8si3Cq8a/L5M8ip99hy7EFOnPBKjCLs7/ANeqQo1Z SWn9fc2EvjjWrXX7DSp7WykZpjDJONkKXJEzoRGJZwVZVUOQolPzAYHBoVGDi5J/193+Qe1kpKL/ AK/H/Mda+J9cuJNJa8vdLtYbhrO5Zlt3A8uYyKYiTJ94si4b1YDae46cFeyfX8PkNVJO132JfFPj bVdJ1rUNOtrW0domRYndXOBOipblgDzmcSKQCPlAPFKnRjKKk/6tv+ATqyi2l/V9vxMy51jXJvE+ l21nqtrE0l0pit3SRgqG1vCTKPNzIpaPI+7gqPSrUIKLbX9XXkS5Sckk/wCrM6G48T6pceFND1TT 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 gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAraj/AMecn4fzFceP /wB3l8vzRlW+BmLXzhwhQAUAFABQAUAFABQAUAFABQAUAFABQBa/4SSx/wCeGrf+Cq6/+N19eemQ aNcC+8S6ndww3aW5tLaINcW0kG5leckAOoJwGXp60AdBQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAVtR/wCPOT8P5iuPH/7v L5fmjKt8DMWvnDhCgAoAKACgAoAKACgAoAKACgAoAKACgDo6+vPTCgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK2o/8ecn 4fzFceP/AN3l8vzRlW+BmLXzhwhQAUAFABQAUAFABQAUAFABQAUAFABQB0dfXnphQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFACMoZSGAIPYilKKkrSV0JpPRjPIh/55R/98isvq9L+RfchckeweRD/AM8o/wDvkUfV6X8i+5By R7B5EP8Azyj/AO+RR9XpfyL7kHJHsHkQ/wDPKP8A75FH1el/IvuQckeweRD/AM8o/wDvkUfV6X8i +5ByR7B5EP8Azyj/AO+RR9XpfyL7kHJHsHkQ/wDPKP8A75FH1el/IvuQckeweRD/AM8o/wDvkUfV 6X8i+5ByR7B5EP8Azyj/AO+RR9XpfyL7kHJHsHkQ/wDPKP8A75FH1el/IvuQckeweRD/AM8o/wDv kUfV6X8i+5ByR7B5EP8Azyj/AO+RR9XpfyL7kHJHsHkQ/wDPKP8A75FH1el/IvuQckeweRD/AM8o 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 BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAf//ZCmVuZHN0cmVhbQplbmRvYmoKNjEgMCBvYmoKPDwvU3Vi dHlwZS9JbWFnZQovQ29sb3JTcGFjZS9EZXZpY2VSR0IKL1dpZHRoIDcwMwovSGVpZ2h0IDUxOQov Qml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIvRENURGVjb2RlL0xlbmd0aCA2MDM2Nz4+c3RyZWFt Cv/Y/+4ADkFkb2JlAGQAAAAAAf/bAEMABgQFBgUEBgYFBgcHBggKEAoKCQkKFA4PDBAXFBgYFxQW FhodJR8aGyMcFhYgLCAjJicpKikZHy0wLSgwJSgpKP/bAEMBBwcHCggKEwoKEygaFhooKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKP/AABEIAgcCvwMBEQAC EQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAA AX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4 OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaan qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQAD AQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEG EkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpT VFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4 ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APqDULn7 HZyT7N+zHy5xnJA/rQBjf8JJ/wBOn/kT/wCtQAf8JJ/06f8AkT/61AB/wkn/AE6f+RP/AK1AB/wk n/Tp/wCRP/rUAH/CSf8ATp/5E/8ArUAH/CSf9On/AJE/+tQAf8JJ/wBOn/kT/wCtQAf8JJ/06f8A kT/61AB/wkn/AE6f+RP/AK1AB/wkn/Tp/wCRP/rUAH/CSf8ATp/5E/8ArUAH/CSf9On/AJE/+tQA f8JJ/wBOn/kT/wCtQAf8JJ/06f8AkT/61AB/wkn/AE6f+RP/AK1AB/wkn/Tp/wCRP/rUAH/CSf8A Tp/5E/8ArUAH/CSf9On/AJE/+tQAf8JJ/wBOn/kT/wCtQAf8JJ/06f8AkT/61AB/wkn/AE6f+RP/ AK1AB/wkn/Tp/wCRP/rUAH/CSf8ATp/5E/8ArUAH/CSf9On/AJE/+tQAf8JJ/wBOn/kT/wCtQAf8 JJ/06f8AkT/61AB/wkn/AE6f+RP/AK1AB/wkn/Tp/wCRP/rUAH/CSf8ATp/5E/8ArUAH/CSf9On/ AJE/+tQAf8JJ/wBOn/kT/wCtQAf8JJ/06f8AkT/61AB/wkn/AE6f+RP/AK1AB/wkn/Tp/wCRP/rU AH/CSf8ATp/5E/8ArUAH/CSf9On/AJE/+tQAf8JJ/wBOn/kT/wCtQAf8JJ/06f8AkT/61AB/wkn/ AE6f+RP/AK1AB/wkn/Tp/wCRP/rUAH/CSf8ATp/5E/8ArUAH/CSf9On/AJE/+tQAf8JJ/wBOn/kT /wCtQAf8JJ/06f8AkT/61AB/wkn/AE6f+RP/AK1AB/wkn/Tp/wCRP/rUAH/CSf8ATp/5E/8ArUAH /CSf9On/AJE/+tQAf8JJ/wBOn/kT/wCtQAf8JJ/06f8AkT/61AB/wkn/AE6f+RP/AK1AB/wkn/Tp /wCRP/rUAH/CSf8ATp/5E/8ArUAH/CSf9On/AJE/+tQAf8JJ/wBOn/kT/wCtQAf8JJ/06f8AkT/6 1AB/wkn/AE6f+RP/AK1AB/wkn/Tp/wCRP/rUAH/CSf8ATp/5E/8ArUAH/CSf9On/AJE/+tQAf8JJ /wBOn/kT/wCtQAf8JJ/06f8AkT/61AB/wkn/AE6f+RP/AK1AB/wkn/Tp/wCRP/rUAH/CSf8ATp/5 E/8ArUAH/CSf9On/AJE/+tQAf8JJ/wBOn/kT/wCtQAf8JJ/06f8AkT/61AB/wkn/AE6f+RP/AK1A B/wkn/Tp/wCRP/rUAH/CSf8ATp/5E/8ArUAWNP1v7ZeRwfZ9m/Pzb84wCfT2oAl8Rat/Y1klx5Hn bpBHt37cZBOc4PpXlZvmf9m0VW5ea7ta9ujfZ9jqwmG+szcL20uc5/wnf/UO/wDI/wD9jXzv+uX/ AE5/8m/+1PR/sf8Av/h/wQ/4Tv8A6h3/AJH/APsaP9cv+nP/AJN/9qH9j/3/AMP+CH/Cd/8AUO/8 j/8A2NH+uX/Tn/yb/wC1D+x/7/4f8EP+E7/6h3/kf/7Gj/XL/pz/AOTf/ah/Y/8Af/D/AIIf8J3/ ANQ7/wAj/wD2NH+uX/Tn/wAm/wDtQ/sf+/8Ah/wQ/wCE7/6h3/kf/wCxo/1y/wCnP/k3/wBqH9j/ AN/8P+CH/Cd/9Q7/AMj/AP2NH+uX/Tn/AMm/+1D+x/7/AOH/AAQ/4Tv/AKh3/kf/AOxo/wBcv+nP /k3/ANqH9j/3/wAP+CH/AAnf/UO/8j//AGNH+uX/AE5/8m/+1D+x/wC/+H/BD/hO/wDqHf8Akf8A +xo/1y/6c/8Ak3/2of2P/f8Aw/4If8J3/wBQ7/yP/wDY0f65f9Of/Jv/ALUP7H/v/h/wQ/4Tv/qH f+R//saP9cv+nP8A5N/9qH9j/wB/8P8Agh/wnf8A1Dv/ACP/APY0f65f9Of/ACb/AO1D+x/7/wCH /BOj8O6t/bNk9x5Hk7ZDHt37s4AOc4HrX0WUZn/aVF1uXls7Wvfon2Xc87F4b6tNQvfS4/xB/wAg i4/4D/6EK9U5TjaAOV1Px3o9hdPBme4dCVYwICAR7kjP4VrGjJq5hLEQi7GroOv2Guws9hISyY3x uMMufUf4VM4OG5pCpGexn6z410jSrlreR5Z5kOHWBQ20+hJIFVGjKSuROvCDsXPD/iXTdd3LZSMJ lG5opBtYD19D+BqZ05Q3KhVjPYy5PHulR6i1m8N4JFlMJbYu0HOM/e6VfsZWuR9YjflNHxJ4msvD 7QLeJPI0wYqIVBwBjrkj1qYU3PYupVVPcuaFq0Gtact5apKkTMVAkAB4PsTUyi4uzKhNTV0aFSUF AFHV9Vs9ItftF/MIo84HGSx9AB1qoxcnZEymoK7Odg+Ieiyz+W4u4lz/AKx4xt/Qk/pWjoSMViYN nWwTR3EKTQOskTgMrKcgj1rFqxunfVD6BlbUryPT7Ce7mDtHChdggySB6ZpxV3YUpcquyn4d1y21 +zkubNJkRJDGRKADnAPYn1qpwcHZk06iqK6NWoLCgAoAzte1eDRNPN5dJK8QYLiMAnJ+pFVGLk7I ic1BXZzX/CyNH/59r/8A79p/8VWv1eRj9ah2Z1um3keoWEF3CHWOZA6hxggH1xWMlZ2OiMuZXRZp DMO/8TWdlr0GkyxXBuZioVlVdg3HAyc5/SrVNuPMZyqqMuUg1/xhpuiXotblbiWbbuYQqDtz0zki nClKauhTrRg7MSDxhYTanZ2Kw3YmukR0JVdoDLkZ+b0odJpNgq0W1HuWIfE1nN4ibRliuBdKSCxV dnC565z+lL2b5eYaqpz5Oomk+J7LVNYudNt4rhZ4NxZnVQp2sFOMEnqfSnKm4rmYo1VKTijdrM1C gAoAKACgAoAzdb1uw0WFZNQnCFs7EAyzY9BVRg5bETnGG5pA5AI71JZW1O+g02xmu7t9sMS5PqfQ D3PSnFOTshSkoq7Mi/8AFdnY6NZ6lcW92Ibo/IgVd44JBI3Y5HPXvVqm23FGcqqjFSfUyf8AhZGj /wDPtf8A/ftP/iqv6vIz+tQ7M6OPXLI6JHqs0hgtHXcDIOfpgZ59hWXI+blNudcvM9jBX4iaKZ/L K3apnHmGMbfr1z+laewkZfWYXOoF/amw+2ieP7Js3+bn5dvrWVnexvzK1+hy8vxE0VJ/LVbuRM48 xYxt+vJB/StfYSMHiYXOn0y/ttTs0urKUSwv0I7H0I7GspRcXZm8ZKSuiW6uIbS2knuZFjhjG5nb oBQlfRA2krs5RPiFojXIiIulQnHnGMbfr1z+la+wlYx+swvY66KRJY0kjYMjgMrA5BB6GsTfczdf 16w0KBZL+Rgz52RoMs+PQf41cIOexE6kYLUoaF4x0rWboW0Bmhnb7qTKBu+hBIpypSirsmFaM3ZF +PXLVtel0h1lju0QOu8ALIMZ+U55/ToankfLzFc65uXqalSWFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQBo+H/+Qvb/APAv/QTQBZ+Iv/IEg/6+F/8AQWr5Xi7/AHKP+JflI9TKP4z9 P1R53X50fRBQAUAFABQAUAFABQAUAFABQAUAFAHonw6/5Ak//Xw3/oK1+i8I/wC5S/xP8onzub/x l6fqzY8Qf8gi4/4D/wChCvqjyzjJGVY2Z2CoASSTgAetAHklnod3YXty+jQ6Tr1vjHzMkpQE8ZXI IPXp6GuxzTXvXRwqm4t8tpGr4L1HSzLqC2emNp+qLBIcCV3VgOSME8EEDt/hUVIy0u7oujKN3ZWZ n/C/TrPUb6+kv4Y7h40Uosq7hyTk4PB6D86qvJxSsRhoqTbZ1lhpfhyx8Tu1rOsOpK3FuJdoXK9A vfg5xz+lYuU3HXY6Iwpxnpueb3tn9q1DxDIoy1u7yjHp5oB/QmulOyicbjdyNTXrn/hI74z8mOz0 wSP6B9uf5uPyqYLkVu7NJv2jv2R2nwx/5FOH/ro/86wrfGb4f4EbGsa7pujNEupXPkmUEp8jNnHX oD61EYSlsaTqRh8Ra02/ttSs0urKTzYHztbaVzg4PBGeopSi4uzKjJSV0eafFJ2l8S2NvMxS3EKk HsNzEMf0H5V1UNIto48TrNJm9440HSbXwpcS29nBBLCFMciKAxO4DBPU5B71nSnJy1ZrWpxUG0jn bG/u4PhnI8E80LxXvlxvG5UhSASMj3JrRxTqmMZNUdO5qaAdVj0L/hIr3VLiZIreTy7RmbaxGVBY 555yeR6c1E+Xm5EjSHNy+0bMe1XW9X8N6rq0urzGNN0b27cq64BbA6LweMD8q0fLGSjYzXPODncl 8N6zLongK9uLfH2iS98qMkZCkopz+QNKcOeokwpz5KTa7mc2tXsdkl9H4muH1AtlrTbJtA+p+U/T GKrkV7cuhPtGlzc2preK/EN9deG9Dvbe5mtZZvNWXyZCm4qQOx/H8ainBKTTLq1G4RkjsPCenahC pvtU1Ka6kuYlYQkkJFnkgDOPTsO9Y1JJ6JHRTjJayd7lT4of8iq//XZKqh8ZOI+A4PQ/Eenadpsd tdeH7S9lUkmaQrubJz3Q9OnWt5U5Sd1KxywqxirONzofiDfXFjPoyabPNZQPFnyrdyi4yOMDArOk k73Nq8nFx5dCb4g6heWviTSorW7uIY3VdyRysob58cgHmlSinF3Q68mppJlbxP8A8lP0z/eg/wDQ qcP4TJqfxkY1/plyfiC9j/aMwuHlGLrneuUDDvngHHXtWikvZ3sZyg/a8tzoL+9vYPiPZWQvbk2/ 7tWj8xgrfLySucc1kknTbsbSk1VSuQad/wAlbn/3n/8ARdN/wiY/xyPwRx491nH92f8A9GCnV/ho KP8AFl8yh4Zm13WLLU1j1q5iWCMSks7MzEZwobOVHBzj2qpqEWtCKbnNP3h+kXevat4d1CYazPFH p6mTgnzJOM4L5zgY9+tKShGSVtxxc5wbvsaOneLb638CzXMshlvFufs0UrjJ5Xdk+pAz19ql0k52 6FRrNU7vcwW1q9jskvo/E1w+oFstabZNoH1Pyn6YxWnIr25dDP2jS5ubU2fFXiG9uvC+i31vcTWs 0zSLL5MhTJXjsenGfxqKcEptM0q1G4KSKviK717RjpWoSaxLK12nmCJchEwFO0rnDcMOSKcFCV1Y mpKcLSvuHxRglGoWd29w7x3Me5ITnEWAucc9+vQUUHo0GJTumekeH7GfTtMjt7q9kvZAS3nSZyQe 3JPT61zTak7pWOuEXFWbuch8Vp5H/srT0JCTyFm9yMAfzNbUFvIwxLvaI74rxrDoWnRxjCJNtUeg Cmih8TDE6RRzWmXWppYQLB4VsrqMKNsz6czlx6lh1rWSjf4vxMYuVtIfgaPxHklGieH42gW2V4jI 8CJsVH2rkbe2Nx4qKK96ReIb5Yo6NPD3h/8A4RKFrqGKOHyEke6VQJOQDu3Yz36dKz9pPn0NvZ0+ TUxfGQsbTwRBBoc4lsmuwrFZN+DtLbT6c4OKundzvLczq8qp2hsafhLQdGuPB0Mt1bQSGaNmlmZR uXk5w3UYx29KmpOSnoXSpwcNUa/g+20a1s5U0K5E8ZIaT97uIOMAkds49B09qio5N+8XSUEvcZmf FaR08NRqmdslwqv9MMf5gVVD4iMS/cOVN3dweF9NafQbebR4WD+ZKx3O5zluCCASSOQQeK1snJ2e pjzNQV46HpugXFtdaNaTWMflWzxjZH/cHTH4dK5pJptM7INOKaOA8cfvviFpMM3MOYFwemDIc10U tKbZy1taqQvj1RB470mWABZWETHb1J8wgH8uPwopa02FbSomiz8TZDp2t6JqUPEy7skdSEZTj/x4 0qK5ouI8Q+WUZHolcx1hQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAaPh/8A5C9v /wAC/wDQTQBZ+Iv/ACBIP+vhf/QWr5Xi7/co/wCJflI9TKP4z9P1R53X50fRBQAUAFABQAUAFABQ AUAFABQAUAFAHonw6/5Ak/8A18N/6CtfovCP+5S/xP8AKJ87m/8AGXp+rNjxB/yCLj/gP/oQr6o8 s4x1V0ZXAKsMEHuKAPObjwFqdneSSaDqawRPngyPGwHYZUHNdKrRa95HI8PJP3GbPg7wf/YlxJeX lwJ7t12/KDtXPXk8k1FSrz6LY0pUeR3e5l6l4DvINRe68PX4tQ5PyF2jKA9QGXPHtVRrJq00RLDt O8HY0PCXg19L1A6jqdytzec7duSFJ6sSeSf/AK9TUq8y5VsVSo8r5pO7I9K8I3VvqetTXclu1vfx yxqEZiw3tkZyKcqqaSXQI0WpSb6kOh+C7yw0XV7eaa2a6vIxHGVZtqgZ6nGe/p2onVUpJ9hQoOMW n1Oh8HaTPouhx2d08Tyq7MTGSRyfcCs6klKV0a0oOEbM0rzT7O9Km9tLe4KZ2+bGr4+mRUqTWzLc VLdEttbw2sKw20McMS9EjUKo/AUNt6sEktEYXi/wxD4hgjPmeRdRZ2SYyCD2I/zirp1HAzq0lURy n/CCa5c+Xb3+ro1mh+VfMeTb9FIAHHvW3torVIw+rzejeh0es+FvM8Jx6PpbRoUdW3TEjdzkkkA8 mso1Pf5mbTpe5yRNDSNHMHhePSb4o/7popDGTgg56EgetTKV5cyKjC0OVnKW/gnWra0vNPh1WBdP mBbYFOXbHGePlHAzgnj1rZ1otp21MFQmk4p6F/SPBkieFrvSdSmi3yzeckkJLBDgAHkD0P4GplV9 5SRcKHuOMirb+F/FEVvFYprkcNhGflMRYOB+AB/Ddim6lPe2pKpVEuXm0L3i/wAK3erWGm21lcqx tQweS6kYs+cc5wcng1NOoottlVaTmkk9jrbaMxW0UbYLIgU49hWLN0Y/jLSJ9b0VrO1eJJTIrZkJ AwPoDV05KMrsirBzjZD/AAjpc+jaFBZXTRvKhYkxkleWJ7getFSSlK6ClBwjZmd458Ly+IFtpLSa OK4gyMSZCsDjuM4xj0qqVTk3IrUnUtYxr7wbrd9e2V5e6lb3M8e0SF8qFAOQFwvPfk4q1Vik0kQ6 M202zU1jwzeXvjGz1aKW3FtCYyyszbztOTgYx+tTGolBxLnScqikNuPC97J47GtLLb/ZQ6tsLNv4 QL0xjqPWhVF7PlE6T9pz9B1/4ZvLjxvBrCS24tUKEqWbfwMdMY/WhVEoco3Sbqc4Wvhm8h8cyay0 tubVixChm38pjpjH60OouTlBUmqnP0G+HfC97pvibUNRnltmguBIFVGYsNzgjORjt60TqKUVFCp0 nGbkyPwf4UvtFg1NLqW2c3UQRPLZjg4brkD1p1KilawUqThe/UPDvhS+03QdYsZ5bZpbyMpGUZio O0jnI96J1FKSa6BToyjFxfUTR/Bckfhm80vUpot803mxyQktsIAAPIHofwNEqvvKSCFD3HGRWt/C /iiK3isU1yOGwjPymIsHA/AA/huxTdSnvbUlUqiXLzaF/wAXeFrvVtM061s7lWa2zukupGLPkDkn ByamnUUW2y6tJzikuhH4u8K32sWGkQWstsj2cRSQyMwBJCDjAP8AdNOnUUW79RVaTmkl0JvGfhWf XbSxFtNFHcWylSJCdrAgdwD6elKnUUG7jrUnNK3Q3tAh1C301I9XnjuLsE5ePpjt2Hb2rObTfumk FJL3tzmfilp0s+m22oW4JeyclsdlOOfwIH5mtaErOz6mWIi2lJdCz4q0ufxboWnvp0kCbiJsysQM FenAPPNKnJU5O46sHViuUwYfB/iuCJYoNaSONBhUS7lAA9gFrR1ab6GSo1VopHR3HhiTU/C1vp2r 3Je+iywuQxfDZPc4JGDislU5Zc0djZ0uaHLJ6nNf8IHrjRi0k1aL+zweE8yQge+zGM/jWvtob21M fq89r6HXp4XsR4Z/sY7jERkyfxb853fn+nFY+0fNzG/so8nIcgfAeuQo9ra6tGLFz8yeY6Bh3ygB H61t7aL1a1MPq81onodp4V0GHw/pxt4382VzulkIxuPsPQVhUm5u50U6apqxZ1/Soda0uWyuCVV8 FXHVWHQ0oycXdFTgpqzOLbwd4hlsk0ubVrc6WjZC4JYDqOMevbdit/awvzW1Ob2NRrlb0LfifwXP e2GlWmlywJFZI6kzsQWzjngHuD+dTCqk231KqUHJJR6F3xT4TfV4bKa2uFgv7VAgY52tjkc9Rg9/ fpU06nLdPYqpR57NboqaZ4R1GfXYdU8RX0VzLCQUWIcHHTPAwAecYqpVYqPLBExoycuabIPGkB1z xhpOlRDcsKmWbjhVJBOfwUfmKdN8kHIVVc9RRO+rnOoKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgDR8P/8AIXt/+Bf+gmgCz8Rf+QJB/wBfC/8AoLV8rxd/uUf8S/KR6uUfxn6fqjzu vzo+hCgYUCCgAoAKACgAoAKACgYUCCgAoGeifDr/AJAk/wD18N/6CtfovCP+5S/xP8onzmb/AMZe n6s2PEH/ACCLj/gP/oQr6o8s42gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKAEdFkRkkUMjDDKwyCPQ0AMt4IraFYreKOKJfupGoVR9A Kbd9xJJaIkpDCgAoAKACgAoAKACgAoAKACgCGO1t47iSeOCJJ5Mb5FQBmx6nqad3sKyTuTUhhQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAaPh//AJC9v/wL/wBBNAFn4i/8gSD/AK+F /wDQWr5Xi7/co/4l+Uj1co/jP0/VHndfnR9CFAwoEFABQAUAFABQAUAFABQAUAFAz0T4df8AIEn/ AOvhv/QVr9F4R/3KX+J/lE+czf8AjL0/Vmx4g/5BFx/wH/0IV9UeWcbQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAaPh//kL2 /wDwL/0E0AWfiL/yBIP+vhf/AEFq+V4u/wByj/iX5SPVyj+M/T9Ued1+dH0IUDCgQUAFABQAUAQX F5bWzAXNxDCTyBI4XP51vSwtasr0oOXom/yM51YQ0nJL1ZD/AGrp3/P/AGn/AH+X/Gtf7Oxf/PqX /gL/AMifrNH+dfeg/tXTv+f+0/7/AC/40f2di/8An1L/AMBf+QfWaP8AOvvQf2rp3/P/AGn/AH+X /Gj+zsX/AM+pf+Av/IPrNH+dfeg/tXTv+f8AtP8Av8v+NH9nYv8A59S/8Bf+QfWaP86+9B/aunf8 /wDaf9/l/wAaP7Oxf/PqX/gL/wAg+s0f5196PTvhpNFPoMzwyJIn2hvmRgR91fSvvuFaNSjhJRqR cXzPdW6I8HNJxnVTi76fqzb8Qf8AIIuP+A/+hCvpTzTjaACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDR8P/8AIXt/+Bf+gmgC z8Rf+QJB/wBfC/8AoLV8rxd/uUf8S/KR6uUfxn6fqjzuvzo+hCgYUCCgAoAKACgDmdW+Hl38QfFV rBFcrZ2Vpb77icrvI3MdqquRknB74GD9D+ocCYpYfCVm1duS/I+Uz+g61aC6W/U5Lxj4D8E6d4fv b/QvHEN5d2oH+iMqs0rE4wuCD1PXBAr9Bo4mvKajOnZM+cqUaUYtxmavhv4Gz6z8O49fN/NHqU9s 9zBZCIEOOSg3Zz8wAP8AwKs6mYqFb2dtO5cMG5U+e+pU8BfCnSNf8Bf8JNrXiB9Lt1kdJCYlKIA2 0EknuSKqvjZ06vsoRuKlhozp88nYyPiV8L38J6NZ65pWrQazod0wRbiNQpUkEjoSCDg8g9eMVphs Z7aTpyVpIith/ZpSi7o2vgf8J5fFNzHrPiCGSPQYzmND8pu2B6DvsHc9+g7kZ43GqkuSHxfkXhsN 7R80tj6utbeG0t44LWKOGCNQiRxqFVQBgAAdBivAbbd2eqkloin4g/5BFx/wH/0IUhnG0AFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFAGj4f/5C9v8A8C/9BNAFn4i/8gSD/r4X/wBBavleLv8Aco/4l+Uj1co/jP0/VHndfnR9CFAw oEFABQAUAFAGSuv+J9C8Xo/hbSTq8bWRe8tBwSivgMD13AsQOD1PB7fpvA9KlUwlX2jt7ys/kfL5 7OcK8ORX0/U6afwNoXxP8PtqN94Zu/DGsNNhmkh8qUkYJJHG9TkjLAHIr7JYiphZ8sZcyPFdGFeN 3GzO5bTNVh8X6ZPZTWsXh21sXtXtdzB95KlSBjGAEUDJ7tXLzwdNp/E2dHLJTTWxzeq6Dovhn4ce IrLxEsreH2u5LhlgzuEckqsoGOeGIH4VvGrOrWjKn8Vv0MpQjCm1LYz9C0zR/iB4U0zTNL066sfB VjMrr5/D3hQn5FGSdmSSzE5J4Hc1U5zw9Ryk7zf4ExjGtBRS91fieqwxRwQpFAixxRqFREGAoHAA HYVwN31Z1pWH0AUNcR5NLnSNWdztwqjJPzCgDlPsN3/z6z/9+zQAfYbv/n1n/wC/ZoAPsN3/AM+s /wD37NAB9hu/+fWf/v2aAD7Dd/8APrP/AN+zQAfYbv8A59Z/+/ZoAPsN3/z6z/8Afs0AH2G7/wCf Wf8A79mgA+w3f/PrP/37NAB9hu/+fWf/AL9mgA+w3f8Az6z/APfs0AH2G7/59Z/+/ZoAPsN3/wA+ s/8A37NAB9hu/wDn1n/79mgA+w3f/PrP/wB+zQAfYbv/AJ9Z/wDv2aAD7Dd/8+s//fs0AH2G7/59 Z/8Av2aAD7Dd/wDPrP8A9+zQAfYbv/n1n/79mgA+w3f/AD6z/wDfs0AH2G7/AOfWf/v2aAD7Dd/8 +s//AH7NAB9hu/8An1n/AO/ZoAPsN3/z6z/9+zQAfYbv/n1n/wC/ZoAPsN3/AM+s/wD37NAB9hu/ +fWf/v2aAD7Dd/8APrP/AN+zQAfYbv8A59Z/+/ZoAPsN3/z6z/8Afs0AH2G7/wCfWf8A79mgA+w3 f/PrP/37NAB9hu/+fWf/AL9mgA+w3f8Az6z/APfs0AH2G7/59Z/+/ZoAPsN3/wA+s/8A37NAB9hu /wDn1n/79mgA+w3f/PrP/wB+zQAfYbv/AJ9Z/wDv2aAD7Dd/8+s//fs0AH2G7/59Z/8Av2aAD7Dd /wDPrP8A9+zQAfYbv/n1n/79mgA+w3f/AD6z/wDfs0AH2G7/AOfWf/v2aAD7Dd/8+s//AH7NAB9h u/8An1n/AO/ZoAPsN3/z6z/9+zQAfYbv/n1n/wC/ZoAPsN3/AM+s/wD37NAB9hu/+fWf/v2aAD7D d/8APrP/AN+zQAfYbv8A59Z/+/ZoAPsN3/z6z/8Afs0AH2G7/wCfWf8A79mgA+w3f/PrP/37NAB9 hu/+fWf/AL9mgA+w3f8Az6z/APfs0AH2G7/59Z/+/ZoAPsN3/wA+s/8A37NAB9hu/wDn1n/79mgA +w3f/PrP/wB+zQAfYbv/AJ9Z/wDv2aAD7Dd/8+s//fs0AH2G7/59Z/8Av2aAD7Dd/wDPrP8A9+zQ AfYbv/n1n/79mgA+w3f/AD6z/wDfs0AH2G7/AOfWf/v2aAD7Dd/8+s//AH7NAF7Q7W4j1SB5IJUQ bssyEAfKaALHjy2nutIhS2hkmcTglY1LHG1ueK+b4poVa+EjGlFyfMtlfo+x6WV1IwqtzdtP1Rwf 9kal/wBA+8/78t/hXwX9mY3/AJ8y/wDAX/ke79Zo/wA6+9B/ZGpf9A+8/wC/Lf4Uf2Zjf+fMv/AX /kH1mj/OvvQf2RqX/QPvP+/Lf4Uf2Zjf+fMv/AX/AJB9Zo/zr70H9kal/wBA+8/78t/hR/ZmN/58 y/8AAX/kH1mj/OvvQf2RqX/QPvP+/Lf4Uf2Zjf8AnzL/AMBf+QfWaP8AOvvQf2RqX/QPvP8Avy3+ FH9mY3/nzL/wF/5B9Zo/zr70H9kal/0D7z/vy3+FH9mY3/nzL/wF/wCQfWaP86+9HC+O4/Hej65Z XfhKy12NzCVlNraSSK2G4DDaQe/UV+lcDYZUsNVhi48t5K3Np06XsfL59VlKrCVB306amJP4l+NE 1wkzW/iQOgIATSSq8+qiPBPuRX26o4JK119//BPCdTEvXX7jlr3RviHfa22sXWieI5NSaVZzP/Z8 oO9cbWwFxxgdu1bxqYeMeRSVvVGTjWcuZp39D134bab488b3N1bfEK51KHQIghlsruyEBuznKqDs B2grk4Oeg75rz8TOhQSdBLm7p3sddGNWrdVdj2jwvcXM1lJHc2C2KQsI4YkQoAmBgAEDp044rzKq SejudsG2tVY2azLCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAMnx Xr1r4Z0C61e/jmktrfZvWEAudzhRgEgdWHesq1VUYOctkY160aFN1JbI88/4Xx4Y/wCfDWv+/MX/ AMcri/tSl2f4f5nnf21Q7P8AD/MP+F8eGP8Anw1r/vzF/wDHKP7Updn+H+Yf21Q7P8P8w/4Xx4Y/ 58Na/wC/MX/xyj+1KXZ/h/mH9tUOz/D/ADD/AIXx4Y/58Na/78xf/HKP7Updn+H+Yf21Q7P8P8w/ 4Xx4Y/58Na/78xf/AByj+1KXZ/h/mH9tUOz/AA/zD/hfHhj/AJ8Na/78xf8Axyj+1KXZ/h/mH9tU Oz/D/MP+F8eGP+fDWv8AvzF/8co/tSl2f4f5h/bVDs/w/wAw/wCF8eGP+fDWv+/MX/xyj+1KXZ/h /mH9tUOz/D/MP+F8eGP+fDWv+/MX/wAco/tSl2f4f5h/bVDs/wAP8w/4Xx4Y/wCfDWv+/MX/AMco /tSl2f4f5h/bVDs/w/zD/hfHhj/nw1r/AL8xf/HKP7Updn+H+Yf21Q7P8P8AMP8AhfHhj/nw1r/v zF/8co/tSl2f4f5h/bVDs/w/zD/hfHhj/nw1r/vzF/8AHKP7Updn+H+Yf21Q7P8AD/MP+F8eGP8A nw1r/vzF/wDHKP7Updn+H+Yf21Q7P8P8z1mvSPXCgCpq9/FpWk3uoXCu0NpA87qgBYqiliBkgZwP WpnNQi5PoRUmqcHN7JXPMf8AhfHhj/nw1r/vzF/8crz/AO1KXZ/h/meX/bVDs/w/zD/hfHhj/nw1 r/vzF/8AHKP7Updn+H+Yf21Q7P8AD/MP+F8eGP8Anw1r/vzF/wDHKP7Updn+H+Yf21Q7P8P8w/4X x4Y/58Na/wC/MX/xyj+1KXZ/h/mH9tUOz/D/ADD/AIXx4Y/58Na/78xf/HKP7Updn+H+Yf21Q7P8 P8w/4Xx4Y/58Na/78xf/AByj+1KXZ/h/mH9tUOz/AA/zD/hfHhj/AJ8Na/78xf8Axyj+1KXZ/h/m H9tUOz/D/MP+F8eGP+fDWv8AvzF/8co/tSl2f4f5h/bVDs/w/wAw/wCF8eGP+fDWv+/MX/xyj+1K XZ/h/mH9tUOz/D/MP+F8eGP+fDWv+/MX/wAco/tSl2f4f5h/bVDs/wAP8w/4Xx4Y/wCfDWv+/MX/ AMco/tSl2f4f5h/bVDs/w/zD/hfHhj/nw1r/AL8xf/HKP7Updn+H+Yf21Q7P8P8AMP8AhfHhj/nw 1r/vzF/8co/tSl2f4f5h/bVDs/w/zD/hfHhj/nw1r/vzF/8AHKP7Updn+H+Yf21Q7P8AD/M9D8Ka 9a+JtAtdXsI5o7a437FmADja5U5AJHVT3rto1VWgpx2Z6NCtGvTVSOzNatTYKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAKACgAoAKACgAoA4P45/8ks1v/th/6Pjrjx/+7y+X5o4M0/3Wfy/NHyZX zZ8gFABQAUAen+EE01tL0GzeDTINQmdjLb6tYfLqKM5CmO42MYxgbQRj5getelQUOWEbJPzW/wA/ 61PXwyhyQjZKXaS+L0dnby8yz4P8KWkuk3trqNrZw3mrzz2tr9puYvMtfKBClAxDOTLhDsBztPQH mqGHi4tSWsm0ttLf8HsaYbCwcJRmknJtK7Wlu3V66aEempYaV4e8KSajLoVkjmc3sd7pf2iacLcM pAYRMQQBt+8tKKjThBzst73V29fQiChSp03Oy3vdXbs/R/mZMA0K78G+MZdP0zbcRPFLFczEM0aN cgKiDHy/JjJySckdKy/dSpVHFa/8Hp8jL9zKhVcI6q2vq+nbQ0NPnsJNGt7zxXp2kaba3F5bGxWG yCP5SOPOc4Bd4ymR8xbLHjpWkXHk5qySTatp06+djWDg6anXioptW06LfztbuY3jmK3v9Pj1rSpr Z9LN7NapHHpkVk0bYVgP3ed67SMFjkc8DJrHEJSj7SD0u1sl+W5zYuMZx9rTa5btbJflv8ziq4zg CgAoAKAPu+vsD74KAMHx9/yIviP/ALBtz/6KascR/Cn6P8jnxf8AAn6P8j4ur5U+JCgAoAKANzwS to3inT/7Rs5r20Vy8sMURkJAUnJUcsoxuI9Aa2w/L7Rcyujpwii60edXX3npeg2Wn6hquh3bW2g6 tZi8mja5trQW24fZ3cRTW+wLwVJDc8CvRpwhOUXZNXeqVuj0aserSpwqShK0ZK71St0bs1b8SW38 L6TZWXi65ktraSLUIJbjS2liUiGARCXenpjzo1yMfdqlh6cVUbtrt6WvdfeVHC0oqq3b3rteSte6 +8tafo+k6n4s1zSrnStOW00i/thbeXbJGzLhgUdlALhtoJ3Z71UKVOdWUHFWi1bT+rl06NKpWnTl FWi1bT+r/M4i/udLn8P+Htc1bSrZna4u4pbeyjS1W4C7CmdgwAC2CQMkd881xydN04VZx76LS5wS lSdKnWqRW70Vlft8kZHxPtbey8fa1bWcEVvbxz7UiiUKqjA4AHArHGRUa0lFWRz4+MYYiUYqy/4B y9cxxhQAUAFAH1n8DP8Aklmif9t//R8lfSYD/d4/P82fX5X/ALrD5/mzvK7DvCgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAOD+Of/JLNb/7Yf+j4648f/u8vl+aODNP91n8vzR8m V82fIBQAUAFAG/pfi7WtLs7e1s7qMQ27M8HmW0UrQs3Uxs6kpnr8pFbwxNSCUYvbyR008XVpxUYv RbaLT8CjdazqF1d2d1PdO9xaKqQSEDKBWLDtycknJ5JPNRKrOTUm9URKvUlJSb1Ww7Wtd1HWjF/a U4l8ppGQCNEAMjl3+6B1Yk0VK06nxP8AphVrzq253tf8dyC11K7tbG9s4JdltehFnTaDvCtuXkjI wRnjFJTlGLitmTGpKMXBPR7/ACNq88ca9eXMdzPcWv2uMoUuEsbdJk2EFcSKgYAYxgHpx0OK1liq snzN6+i/yN5Y2tJ8zeveyv8AfYzNX12/1dIo72SLyomZkiggjgQM2MttjVQScDnGeKzqVp1FaT/T 8jKrXnVSUnp6JfkZlZmIUAFABQB9319gffBQBg+Pv+RF8R/9g25/9FNWOI/hT9H+Rz4v+BP0f5Hx dXyp8SFABQAUAWdOvrnTb6G8sJnguoW3xyIeQf8APbvVQm4NSi9S4TlTkpRdmjabxrrxnt5Uu4oW t3eWNYLWGJA7qVZiqoASQSMkE81t9aq3Tvt5I6Prta6d9vJf5Ff/AISrWjaxWxvmMMVo9gimNDtg f7ydO+Bz1461P1ipa1+lvkR9aq2Ub6Wt8i1N448QzGEtqAV45o598cEUbu8YwjOyqC+B/eJqni6r 6/kW8dXf2vPZdO/f5mfrev6jrYt11GaNkg3eUkUEcKKWOWIVFAyTyTjJqKladS3M9jKrXnWtzvby S39Ctq+pXer6lcX+oy+ddztvkk2hdx+gAA/CpnOVSTlLdk1KkqsnObu2U6gzCgAoAKAPrP4Gf8ks 0T/tv/6Pkr6TAf7vH5/mz6/K/wDdYfP82d5XYd4UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQBW1H/jzk/D+Yrjx/+7y+X5oyrfAzFr5w4QJABJOAOpNAGZbeINGurK7vLbV9OmtL QkXM8dyjJCQMkOwOFwOuat05ppNO7Hyvawmo+IdF0y7t7XUtX06zubgAww3FykbyZOBtUkE88cUR pzkrxTYKLeyLz3VulyLd54luChlERcBigIBbHXAJHPuKmztcVh8Esc8Mc0EiSRSKHR0YFWUjIII6 g0NW0YAJYzMYRInnBQ5TcNwUkgHHpwfyot1AexCgliABySe1IBkU0U2/yZEk2NtbawO04BwfQ4IP 402mtwH0gMd/FPh+O2uriTXdKW3tZfIuJWvIwsMnTY5zhW46HmtPZVLpcr18h8r7E41zSWv/ALCN UsTe+V5/2cXCeZ5eM79uc7cd+lL2crc1tA5XuS6TqunaxafatIv7S/ttxTzrWZZU3DqNykjPNKUJ QdpKwmmty5UgdHX156YUAR3P/HtL/uH+VY4j+FP0f5Ez+FmBXyx5wUAMhljnTfDIkiZI3IwIyDgj PsQRTatuA5GV0V0YMrDIIOQRSAbJLHEYxJIiGRtiBmA3NgnA9TgE/hTtcB9ICGO6t5biS3inieeN Q7xq4LKpLKCR1AJRx9VPoadmlcLE1IBFdWLBWBKnBweh9KAKWqaxpmk+R/auo2Vj57+XF9pnWLzG /uruIyfYVUYSn8KuNJvYsNdW6ztA08QnWPzTGXG4JnG4jrjPelZ2uKxT0bXtH1xZG0XVbDUViIDm 0uEmCZ6Z2k4qp05w+JWG4tbo0qgQUAbWnf8AHnH+P8zX0eA/3ePz/NndR+BFmuw1CgAoAKACgAoA KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK2o/8AHnJ+H8xXHj/93l8vzRlW+BnA+ONK1fVt Pt4tBv8A7FOku538549y4IxlQT1xXk4GtRozbrR5lbsn+ZwM0YrS5TwylndBL27WzEUgeVgsz7MH L4JAJ/ixnnOKwqTjKq5R0V9PJXGjhJtB1/VoZLBLR7Kyle3R5NWSCdxHCWcR4t5FMkJYIAHYN8z5 4ODsqkI+9e712v19dma8yWpa07wjq17m11u/vLa1j0+LTpjbGHbfokkw+beruoKMp4ZWG8/MSMhS rRWsVre/XTb0E5pao0/Fnh+8vtWi1HS40W9srNxaSM4VWcsMxN32uuQTg44PUCopVFGPLLZsUZJK zORn0Dxo1xpMOnR3WnJa2K28sovmaJ2FoQh2edtG2cKGAjBIAIcgsK3VSjZuWt328/Tt5/Ivmjrc drs+u6Vplnqfiee8trO4uVe9gi1AQGMM85WJZRIqx7c2+W3KG2lQSW2kgoSbjT36aenS3qCs3aJD b6V4s1qDSXaLUEtHshHcTNqMoNzHJbsOV85QjiRuT5WSApDjlabnSg3te/bz9P1+QXirmlcaP4oF jHHaQ6vG4h22Q/tMf6HN5UQV7j97+9QEMCuXyQTg7g1Qp076289N99tNPwFeJ0fhXSNU0/VXuL2a +lS4imMwuLxpkV/O/dhELEJ+7P8ACAOmeaxqTjKNl+XkTJprQ5+O21Z9SstV/wCENvrc2UqxiwSa zC/ZxFOiiPE20sGlyd2wANhc4+bW8bOPPv11308irq1rlC08Ja3FpkOjvpkw8gCYX0V3Gqn/AIlv 2YxhiS4feTgsjLgBiSeKt1oN89/lb+9f+tRuavf+tzvPBNrdWmnXCXFvfWtsZs2ttf3P2meKPYoI aTzJM5YOQN5wCBx0HLWab019NP8AIzk7nQ1kSdHX156YUAR3P/HtL/uH+VY4j+FP0f5Ez+FnFeKr K+1HQLq10m5+y3sm3y5vMZNuHBPzLyOAR+NfPYWpTp1VOqrx7b9DzWM8I2GoabocNtrF19rvFZi0 vmNJkEkjlhnpTxdSnVquVJWXbb8gRxE/hvxI1/PLC9/DEktn5McN+Y4yjX05uiUDgE+Q6HJGem35 lGNFVp2s/Pp5K34m3NH+vQr2HhvX7XQrMS2+uFIGtoZbC31cpK8C2yqwjfzlVT54DZ3AlQR/FguV WDk9uutut/TsDkrjp/D/AIrubhBc/wBovchQYLsagPJt0+yugRk3DdMJSWMgTkMPm4xSVSklpb7v P8rdA5olm9tPFV9cm5lsNaitXkJjtYNTjhmik8mEJIzLIUMass25PnyWU7G6Uk6UVa6+7zflvt/m CcUUYvD/AIjs7q+j+ya3Lo/mhjbWmrCOWYme9ctG5lUrxJbFsshOMc7SDTqU2lqr+nkvL1Dmi/69 DV8O6L4qttes73U7m9lP28JcA3u+E2v9nKCRHu25+1L1Chs5OApOYqTpOLUV07deb/IUnG1l/WpW 1bQdci1HUv7NtdaaKa6nmheDVfLUTOsZjmYNLkxKQ4MeCPSNhjDjUg0uZr7vw238/wARqStqdB4w sr+Wa3lstPvbi4a3a3aezktyMEgsksc+FMZwMlctjOAOtZUpRW7/AD/TqTFrqY7eHPELeIm11xY7 m3Wf2SO3AlW3KbMLN5u3y94Eu3bnt14rT2lPl5Pn8/S3yHzRtY6Xwn4fl0qCCe/1G9v70WyQZuRC PJUAEovlIoIz3OTx1rKrUUnZKy+f6kylfY6KsSQoA2tO/wCPOP8AH+Zr6PAf7vH5/mzuo/AizXYa hQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAFbUf8Ajzk/D+Yrjx/+7y+X5oyr fAzFr5w4QoAKACgAoAKACgAoAKACgAoAKACgBsrFIndY2kZVJCLjLH0GSBn6kCmld2Auf2xff9C5 q3/fy1/+PV9cemTaXqxvry5tJrC7sriCOOUrcGM7lcuAQUdh1jbrigC/c/8AHtL/ALh/lWOI/hT9 H+RM/hZgV8secFAHkkviM6PfajPZaql/dgkTPJqEsqWitMqmS5tGx5CRqc5Rl3BWzjrXcqfOkmrL 0306Prc25b9DSsfGU6ahbXd9fWD6c5jglvIyyWroXnAmj3MQu5ljXO5gc4BPBqZUVZpLX8emhLhp oUbXxnqrq1/JPZTGSCG5itUSRPID2rsXbDnchZWOCvAVsZIyKdCPw/1uNwWxZj8aa5Os7WVxotza 2SvK97FbyNFfxr5XMOJTs5kZdxZwGjPBzxPsILe+vTtvvp/kHIg8W63qek/Ei4+zT3UlpLplpZx2 qktElzPLciOYr2+aJEJHZxngZBShGVLXe7fyVtAik4mfZeMtR0aPRNLiv4r9o7ULdC7iL3BO19sr SGYMQxVRxGwzkFgTxboRnzStb8vy/Ubgndl7XfGut6Ro8vn3OlDVN6tAq2TFJw0W/wAoB7hPnBPX flgDhM9JhQhOWidvXz9H/XUSgmxbv4gajHLO1uunXDLHI409EP2iJVAKysxkC7GzuGQvA+91KpYe PW/r0D2aNPwH4q1XxLeoJW01bSO3EsjwhJDOS8iAo0U8iIMoMjc54IzzxFalGmut/wCu6X6CnFRO 8rmMwoAKALFnq3l26p/Z+oNtJGVhyDyenNfSYFWoR/rqd1H4EXLDVI7y6ltxDcwzRoshWaPblSSA R+Kmus1L9ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAVtR/485Pw/mK48f/u8 vl+aMq3wMxa+cOEKACgAoAKACgAoAKACgAoAKACgAoAKAOjr689MxrT/AJHLVP8ArwtP/RlzQBq3 P/HtL/uH+VY4j+FP0f5Ez+FmBXyx5wUAFABQAUAFABQAUAFAGXbaDp1trEupwwuLyTOSZnZFLY3F Yydik4GSoBOOc1bqSceV7D5naxqVAgoAKACgDa07/jzj/H+Zr6PAf7vH5/mzuo/AilF/yNd1/wBe UX/oySuw1NagAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK2o/8ecn4fzFceP/ AN3l8vzRlW+BmLXzhwhQAUAFABQAUAFABQAUAFABQAUAFABQB0dfXnpmNaf8jlqn/Xhaf+jLmgDV uf8Aj2l/3D/KscR/Cn6P8iZ/CzAr5Y84KACgAoAKACgAoAKACgAoAKACgAoAKANrTv8Ajzj/AB/m a+jwH+7x+f5s7qPwIpRf8jXdf9eUX/oySuw1NagAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKAIrqMzW7IpAJx1+tYYmk61JwjuyKkXKLSM7+zpv70f5n/CvJ/sur3X4/5HN9XkH9nT f3o/zP8AhR/ZdXuvx/yD6vIP7Om/vR/mf8KP7Lq91+P+QfV5B/Z0396P8z/hR/ZdXuvx/wAg+ryD +zpv70f5n/Cj+y6vdfj/AJB9XkH9nTf3o/zP+FH9l1e6/H/IPq8g/s6b+9H+Z/wo/sur3X4/5B9X kH9nTf3o/wAz/hR/ZdXuvx/yD6vIP7Om/vR/mf8ACj+y6vdfj/kH1eQf2dN/ej/M/wCFH9l1e6/H /IPq8g/s6b+9H+Z/wo/sur3X4/5B9XkH9nTf3o/zP+FH9l1e6/H/ACD6vIP7Om/vR/mf8KP7Lq91 +P8AkH1eQf2dN/ej/M/4Uf2XV7r8f8g+ryNavdOwxrT/AJHLVP8ArwtP/RlzQBrTKXidR1ZSBms6 sXOEorqmTJXTRmf2dN/ej/M/4V439l1e6/H/ACOX6vIP7Om/vR/mf8KP7Lq91+P+QfV5B/Z0396P 8z/hR/ZdXuvx/wAg+ryD+zpv70f5n/Cj+y6vdfj/AJB9XkH9nTf3o/zP+FH9l1e6/H/IPq8g/s6b +9H+Z/wo/sur3X4/5B9XkH9nTf3o/wAz/hR/ZdXuvx/yD6vIP7Om/vR/mf8ACj+y6vdfj/kH1eQf 2dN/ej/M/wCFH9l1e6/H/IPq8g/s6b+9H+Z/wo/sur3X4/5B9XkH9nTf3o/zP+FH9l1e6/H/ACD6 vIP7Om/vR/mf8KP7Lq91+P8AkH1eQf2dN/ej/M/4Uf2XV7r8f8g+ryD+zpv70f5n/Cj+y6vdfj/k H1eRo2sZht1RiCRnp9a9bDUnRpKEt0dNOLjFJmdF/wAjXdf9eUX/AKMkrcs1qACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgDzX4l/FH/AIQnXYNN/sf7d5tstx5n2nysZZlxjYf7vXPeuDFY76vN Q5b6dz1MFlv1qm581tbbf8E5L/hoH/qWf/J//wC11y/2t/c/H/gHX/Yf/Tz8P+CH/DQP/Us/+T// ANro/tb+5+P/AAA/sP8A6efh/wAEP+Ggf+pZ/wDJ/wD+10f2t/c/H/gB/Yf/AE8/D/gh/wANA/8A Us/+T/8A9ro/tb+5+P8AwA/sP/p5+H/BD/hoH/qWf/J//wC10f2t/c/H/gB/Yf8A08/D/gh/w0D/ ANSz/wCT/wD9ro/tb+5+P/AD+w/+nn4f8EP+Ggf+pZ/8n/8A7XR/a39z8f8AgB/Yf/Tz8P8Agh/w 0D/1LP8A5P8A/wBro/tb+5+P/AD+w/8Ap5+H/BD/AIaB/wCpZ/8AJ/8A+10f2t/c/H/gB/Yf/Tz8 P+CH/DQP/Us/+T//ANro/tb+5+P/AAA/sP8A6efh/wAEP+Ggf+pZ/wDJ/wD+10f2t/c/H/gB/Yf/ AE8/D/gh/wANA/8AUs/+T/8A9ro/tb+5+P8AwA/sP/p5+H/BD/hoH/qWf/J//wC10f2t/c/H/gB/ Yf8A08/D/gh/w0D/ANSz/wCT/wD9ro/tb+5+P/AD+w/+nn4f8EP+Ggf+pZ/8n/8A7XR/a39z8f8A gB/Yf/Tz8P8Agh/w0D/1LP8A5P8A/wBro/tb+5+P/AD+w/8Ap5+H/BPS/hp4w/4TbQp9S+w/YfKu Wt/L87zc4VWznaP73THavQwuI+sQc7W1PMxuE+q1FC99LnWV0nGFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAGNaf8AI5ap/wBeFp/6MuaA NmgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDJi/5Gu6/68ov/AEZJQBrUAFABQAUAFABQAUAF ABQAUAFABQAUAFABQAUAFAHzX+0r/wAj1Y/9g2P/ANGy14Ga/wAZen6s+nyX+A/X9EeTV5p7AUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQB9Kfs1f8AIi33/YSk/wDRUVe/lX8F+v6I+Yzr+OvT9Wes 16R44UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBzXxI1668M+C9R1ewjhkubfy9izAlD ukVTkAg9GPeufFVXRpOcd1/mcuMrSoUZVI7q35nh/wDwvjxP/wA+Gi/9+Zf/AI5Xk/2pV7L8f8zw v7ar9l+P+Yf8L48T/wDPhov/AH5l/wDjlH9qVey/H/MP7ar9l+P+Yf8AC+PE/wDz4aL/AN+Zf/jl H9qVey/H/MP7ar9l+P8AmH/C+PE//Phov/fmX/45R/alXsvx/wAw/tqv2X4/5h/wvjxP/wA+Gi/9 +Zf/AI5R/alXsvx/zD+2q/Zfj/mH/C+PE/8Az4aL/wB+Zf8A45R/alXsvx/zD+2q/Zfj/mH/AAvj xP8A8+Gi/wDfmX/45R/alXsvx/zD+2q/Zfj/AJh/wvjxP/z4aL/35l/+OUf2pV7L8f8AMP7ar9l+ P+Yf8L48T/8APhov/fmX/wCOUf2pV7L8f8w/tqv2X4/5h/wvjxP/AM+Gi/8AfmX/AOOUf2pV7L8f 8w/tqv2X4/5h/wAL48T/APPhov8A35l/+OUf2pV7L8f8w/tqv2X4/wCYf8L48T/8+Gi/9+Zf/jlH 9qVey/H/ADD+2q/Zfj/mH/C+PE//AD4aL/35l/8AjlH9qVey/H/MP7ar9l+P+Yf8L48T/wDPhov/ AH5l/wDjlH9qVey/H/MP7ar9l+P+Z9K17x9OY1p/yOWqf9eFp/6MuaAL2sXL2Wk3t1EFMkEDyqG6 EqpIz7cU0ruwpOybPLv+Flax/wA+2n/9+3/+Lrf2SOb28g/4WVrH/Ptp/wD37f8A+Lo9kg9vIP8A hZWsf8+2n/8Aft//AIuj2SD28g/4WVrH/Ptp/wD37f8A+Lo9kg9vIP8AhZWsf8+2n/8Aft//AIuj 2SD28g/4WVrH/Ptp/wD37f8A+Lo9kg9vIP8AhZWsf8+2n/8Aft//AIuj2SD28g/4WVrH/Ptp/wD3 7f8A+Lo9kg9vIP8AhZWsf8+2n/8Aft//AIuj2SD28g/4WVrH/Ptp/wD37f8A+Lo9kg9vIP8AhZWs f8+2n/8Aft//AIuj2SD28g/4WVrH/Ptp/wD37f8A+Lo9kg9vIP8AhZWsf8+2n/8Aft//AIuj2SD2 8g/4WVrH/Ptp/wD37f8A+Lo9kg9vI9F8J6lNrHh+1vrlY1ml37hGCFGHI4yT6VjNWdjeEuaN2LF/ yNd1/wBeUX/oySpLE8WalNo/h+6vrZY2mi2bRICVOXA5wR61UFd2InLljdHnX/CytY/59tP/AO/b /wDxdbeyRh7eQf8ACytY/wCfbT/+/b//ABdHskHt5B/wsrWP+fbT/wDv2/8A8XR7JB7eQf8ACytY /wCfbT/+/b//ABdHskHt5B/wsrWP+fbT/wDv2/8A8XR7JB7eQf8ACytY/wCfbT/+/b//ABdHskHt 5B/wsrWP+fbT/wDv2/8A8XR7JB7eQf8ACytY/wCfbT/+/b//ABdHskHt5B/wsrWP+fbT/wDv2/8A 8XR7JB7eQf8ACytY/wCfbT/+/b//ABdHskHt5B/wsrWP+fbT/wDv2/8A8XR7JB7eQf8ACytY/wCf bT/+/b//ABdHskHt5B/wsrWP+fbT/wDv2/8A8XR7JB7eQf8ACytY/wCfbT/+/b//ABdHskHt5Hrl c51BQBx/jHR9M1DU4pb/AE6zupRCFDzQK5A3McZI6cn868bMUnVV+3+Z6+AnKNNpPr/kYX/CM6D/ ANATS/8AwEj/AMK4OVdju9rP+Z/eH/CM6D/0BNL/APASP/CjlXYPaz/mf3h/wjOg/wDQE0v/AMBI /wDCjlXYPaz/AJn94f8ACM6D/wBATS//AAEj/wAKOVdg9rP+Z/eH/CM6D/0BNL/8BI/8KOVdg9rP +Z/eH/CM6D/0BNL/APASP/CjlXYPaz/mf3h/wjOg/wDQE0v/AMBI/wDCjlXYPaz/AJn94f8ACM6D /wBATS//AAEj/wAKOVdg9rP+Z/eH/CM6D/0BNL/8BI/8KOVdg9rP+Z/eH/CM6D/0BNL/APASP/Cj lXYPaz/mf3h/wjOg/wDQE0v/AMBI/wDCjlXYPaz/AJn94f8ACM6D/wBATS//AAEj/wAKOVdg9rP+ Z/eH/CM6D/0BNL/8BI/8KOVdg9rP+Z/eH/CM6D/0BNL/APASP/CjlXYPaz/mf3h/wjOg/wDQE0v/ AMBI/wDCjlXYPaz/AJn94f8ACM6D/wBATS//AAEj/wAKOVdg9rP+Z/edh4OsbTT9MlisLWC1iMxY pDGEBO1RnA78D8q9nLlak7d/8jyMfJyqJt9P8zdrvOEKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoA4P45/8AJLNb/wC2H/o+OuPH/wC7y+X5o4M0/wB1n8vzR8mV82fIBQAUAFAHqN9rH9ne E/CUf/CR69pW6wdvK06Pcj/vpPmP75Oe3Q9OtelUqclKn7zWnT/h0exVq8lGkueUdOn/AA6Oh8O3 bSWvgS3bxFqmnzS28kotoRmK8YTOdjMXA3N0+ZSPeuinK6pJya0+86qUrqinNptbd/XUzrzX00rS dCuZtQ1rRYzfXsrWFhGCrAXGTG+ZEAx937rDrx2Oc6vJGMm3HV6L123RlUrqnGEm3HWWi/xbPVfq XtN1J7288OJp6SQ6Jq0Wp3F3aAfuzl5SQ4HB2jYAT049a0hPmcOX4Zc10a06nPKnyfDLnbX37+hT 8TzzG08XWFyZG0Sy0/T3soTkRxnMW3Z2G7L5I5PPpxFZ6VIy+FKNjOvLSrCXwpRt+G3qcv8AEK9T UfDHg66jtLezR7e5CwW4IRAs7KAMkknAGSepya5sVPnp05Wtv+Zx42p7SjSklbfRepwlcJ5oUAFA BQB9319gffGNaf8AI5ap/wBeFp/6MuaAJ/E3/It6t/16S/8AoBqo7omfws+fq6zhCgAoAKAOo0rV dQTwrqhS/u1MMlukWJmGxTvyF54HA6elZtLmRpGT5XqadtNNPHb2LNcW87WR/wBGlUS2s67Cd+VI wx+9u5we/apempaben/DFW4udTt73SrTRkZrSW2jMcG393OSo37x0bnOSentTSTTbE200omobSG+ 0/RY7gIBpsKXUuCDmIl9wz35jUf8CpXs35lWulfoTandLHeT3WbpLm5u7aNmtXCEAwIQDkHK5J+X oce1JLSw29blVvOt72105ZS+nPZXRuNgxG7hpdzEDjIKrj04p7q4tnbpqefVsc4UAFABQB7d8OP+ RM07/tp/6MauWp8TOyl8CL8X/I13X/XlF/6MkqDQofEf/kTNR/7Z/wDoxaun8SM6vwM8RrqOMKAC gBQSDkcGgDqrvVNRl8L6buvbmRpriaOTfO37xcJ8rEnkcnr6ms0lzM1cnyo0b+X7cuqQzvcwrDsa 4s7tMpbjeB+5dTheDgccg96laWKet0UdXuNWbVNW0+GMNYRo+23bAijhH3XUEgA4wQe59apJWTJk 5Xa6HS3iRP4ii1dgubL/AEVh6yHaIzj6SE/8ArNbWNX8XN2KNwUEkdnbSXMUl4940joy+USHcfvE IO/gAdRgc0/P0J8l5mDd3t1HoE0WrzM8lysYtbYgARKpB8zaOEyOBjrkmrSV9CG3y+8cxWhkFABQ AUAfSdcR6AUAc74i/wCP1P8ArmP5mvHzD+IvT/M9XA/w36mVXAdhU1XU7PSbM3WoTrDCGVASCSzM cKqgcsxPAABJqoxcnZClJRV2Q6NrVjrCStYySF4W2yxTQvDLGT03RuAwz2yOe1EoOO4ozUtiv4j8 S6b4ciWXVmu44W/5axWU86LyANzRowUkkAA4z2qoU5T+H80KdRQ+Ir3njLRrO1t57qS+j88O0cJ0 +488qn3mMXl7wo4yxUDkc8imqMm7L80J1YpXf5Ms3XibSbeys7r7UZ4rxPMthaRPcPMuAdyJGGZg ARkgcZ5qVTk212G6kUk+5VPjbw6LrSLf+04zNqrvFZqI3PmOhAZScYUgnBDYOeKr2M7N22F7WF0r 7ip408Pvd6vbLqSedpTpFeKY3Hlu5wig4wzEjAC5OeOtHsZ2TtuHtYXavsNk8a6CllFc/a5WWR5I lijtZnn3Jy4MIQyAqCCcqMZ5o9jO9rB7WNrm5Y3dvf2UF3ZTJPbToJI5YzlXUjIINZtOLsy001dG cfE2kDXRo5vB9v3bNnlvs37d/l+ZjZv2/NszuxzjFX7OXLzW0J9pHm5eomjeJdM1q7nt9Na7lMLS I0pspkh3I2xgJWQIxDZGAx6H0olTlBXf5oI1IydkbNZlhQAUAFAHR+Hf+PJ/+uh/kK9jL/4b9f8A I8rHfxF6GpXecYUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQByHxa0u81n4farYabD513 N5WyPcFziVGPJIHQGuPH/wC7y+X5o4swhKph5Rjvp+aPnL/hWPi//oEf+TMP/wAXXzZ8z9Rr/wAv 4oP+FY+L/wDoEf8AkzD/APF0B9Rr/wAv4oP+FY+L/wDoEf8AkzD/APF0B9Rr/wAv4oP+FY+L/wDo Ef8AkzD/APF0B9Rr/wAv4o2LLwv8TrG1jtrKXVLe3jGEih1RURe/AEmBWsa1WKspP7zaNLGxVotp ev8AwSlP4C8e3DwvcWlzK8BJiZ76NjGS247cvxySeO/NS5zdm3sRLDYqTTd9PP8A4IX/AID8e6iV OoWtzdFSzKZ76N8FjkkZfv3olOU/idwnhsVU+O79X/wSW38F/ES20+Swt476KxkBD20eoosbZ65U SYOaaqTUeVN2GqGLjHkV7dr6fmFx4L+Ilzp8dhcRXstjGAEt5NRRo1A6YUyYGKHUm48rbsDw+LlH kd7dr6fmVZfh143mgggl0+WSGAERRteRFYwTkhRv4ySTx3qW20k3sS8JiGkmtF5r/Mh/4Vj4v/6B H/kzD/8AF1JP1Gv/AC/ig/4Vj4v/AOgR/wCTMP8A8XQH1Gv/AC/ig/4Vj4v/AOgR/wCTMP8A8XQH 1Gv/AC/ig/4Vj4v/AOgR/wCTMP8A8XQH1Gv/AC/ij68r7A+zMa0/5HLVP+vC0/8ARlzQBa1+J59C 1KGIbpJLaRFGcZJUgU4uzRMldNHi3/CLax/z5/8AkVP8a6PaR7nL7KfYP+EW1j/nz/8AIqf40e0j 3D2U+wf8ItrH/Pn/AORU/wAaPaR7h7KfYP8AhFtY/wCfP/yKn+NHtI9w9lPsPXw5rqxPEtu4icgu gmXDEdMjdzjJ/Oj2kQ9lMnXSPEy2htV+0i1IwYRdDYR/u7sUc8Nx+zqWsEWj+JobZraH7THbtnMS 3QCHPXjdijnhuHs6i0Gf2F4h27fLm2+X5WPtC42Zzt+90zzjpRzwD2cySLSfE8UryxG5SR1Cu63Q BYAYAJ3cgClzwDkqDU0bxKlq1qguFtmzuiFyAhz1yN2KfPDcPZ1LWK3/AAi2sf8APn/5FT/Gj2ke 4vZT7B/wi2sf8+f/AJFT/Gj2ke4eyn2D/hFtY/58/wDyKn+NHtI9w9lPsH/CLax/z5/+RU/xo9pH uHsp9j1rwLazWXhWxt7lNkyb9y5Bxl2PUexrCbTldHTTTUbMsRf8jXdf9eUX/oySpLK/jq1mvfCt 9b2yb5n2bVyBnDqep9hVQaUrsiom42R5L/wi2sf8+f8A5FT/ABrf2ke5zeyn2D/hFtY/58//ACKn +NHtI9w9lPsH/CLax/z5/wDkVP8AGj2ke4eyn2D/AIRbWP8Anz/8ip/jR7SPcPZT7D28Oa60KRNb uYkJZUMy7QT1IG72FHtIh7KZPPpHiae3W3n+0yQLjEb3QKjHsWxRzwG4VHoEmj+JZLRbWT7Q1suA IWuQUGOny7sUc8Nw9nUtYa2i+JGLFlnJZg7E3K8sOhPzdR2NHPAPZ1BV0bxKsU0Si4EUxLSoLkYk J6lhu5/GjngHs6hLNp3iqeBoZpLySFhgxvdgqR9C1LmgPkqMo/8ACLax/wA+f/kVP8aftI9yfZT7 B/wi2sf8+f8A5FT/ABo9pHuHsp9g/wCEW1j/AJ8//Iqf40e0j3D2U+wf8ItrH/Pn/wCRU/xo9pHu Hsp9j3iuY7AoA53xF/x+p/1zH8zXj5h/EXp/mergf4b9Txjx94V1nVfEk11YWfmwMiAN5qLyBzwS DXfgMbRo0VCcrP0Z52PwVatWc4RuvVHSeNdPupJPDOoQQSXEWlXwuLiGMbnKGJ49yqPvFS4OBzjO MnivIpyXvLv/AJnrzi/dfY3dG1VNWSWSGzv4IUbar3du0Bk9SEfDgD/aUZ7ZrKUeXqaRlzGN8UbW 4vfA9/BZwS3E7SQFY4kLscToTgDngAn8K0oNKom/60IrJuDSOb+MGjf2heaZd2c/iDTdWtEc22pa ZaPdRjJBMUiR5f5sDnG31J6Vrhp8qadmn0ehnXjdpq6fdDtD/tzTr/QPEHiu0uZ520Y2d21tbtPJ BN5ivkxxKT8467RgFR2pT5JKUIPqEeZNTn2Mz4lWOoeI9Q0XVLHRdSEtjZXl1AksWGE0UsDxA7Sd pfyzhT82D0B4q6EowTi3u1+pNZObUktr/oc/beFNY8u+uH02/hlmOlandLGjB2f7TLNOqHqzpvzg c8DjOK0dWOiv3X4JIzVOWrt2f43ZuarrXirTvDEmn6baau51HUJYrK+ns7i5ksrHC/vJVCtIXyWC hxuxgnpURhTlLmbWi1WiuzSU5qNknq/PRHpfg2xtdM8K6VY6f9oNpb26RRm5iaKQgDGWRgCpPXBA rkqycpts6KaUYpI89GlanH4tmshY3jGTxONZ+0iI+T9lFsF/1n3d24bNmd3OcY5rp5o8l7/Zt87m HLLmtbrf5WL/AIFsZ7DxJaQ6PB4httIW1nOoRauXwtwZFZNm4lM8yEmL5SMZOcVNWScW5Wv0t/X5 jpJqVo3t1v8A1+R6XXKdIUAFABQB0fh3/jyf/rof5CvYy/8Ahv1/yPKx38RehqV3nGFABQAUAFAB QAUAFABQAUAFABQAUAFABQAUAFABQAUAVtR/485Pw/mK48f/ALvL5fmjKt8DOcvr+z0+NZL+7t7Z GO1WmkCAn0BJr5+FKdR2gm/Q4BLq/gg0ubUA3m20cJn3RENvQLuyvODkdKXI+bkejGtTBi8c6O66 O8jywRanaSXqyzqI0t40UM3nEnCHkjHP3W9K0dCevlp/wxXI9TQi8U+H5ktHh13SpFvG2WxW7jIn bJGE5+Y5BGB3BqXSmr+69PIXK+wDxR4fK3zDXdKK2B23Z+1x4tzkjEnPyHII5xyDR7KenuvXbQOV 9iY6/oyyRxtq2nh5ImnRTcplo1+84GeVGDk9BS9nPsw5X2GW3iPRLp9ltrOmzPseTbHdIx2ocO3B 6KeCe3eh05rdMOV9hn/CUaB5NnL/AG5pXlXjbLZ/tceJ2zjCHPzHPGBmn7Keq5Xp5ByvsWtG1ay1 mza6024juIFlkhLowI3IxVhx7j8sVM4ODtITTW5eqQCgAoAKACgDo6+vPTMa0/5HLVP+vC0/9GXN AGpd/wDHrN/uN/KgDlbq5gtIGnu5ooIVxuklcKoycDJPHU00m9EJtLVhaXVveQCazninhOQJInDK ce4oaa3BNPVGC3i23SR2k0/UUsdzpHelE8qZ0DEqvzbx904LKFPGCcjKGVX8aiKAtc6BrEFy3lGC 2drYyTiRwgKlZig+Zhncy0ATN4uyEig0LVptQMjRSWKm3WWEhVbLFpQhGGUgqzdfY4AFufFptpmW fQtWWGJYzcz7rcpbFwDtcCXcSMjOwMPQmgDp6ACgAoAKACgAoAKACgDf0v8A48Yvx/maAKcX/I13 X/XlF/6MkoAuap/x4y/h/MUAcvfX1pYRrJfXUFsjHaGmkCAn0BNNJvYTkluOe7t0smvDMn2VY/NM oOV2YzuyO2OaQ07nPnxfFHBLJcaRqlu/lmW3ilWINdIGVcpiTAOXXhyh55A5oAik8ZFGjgPh/WP7 SeYQixDW3mDMbSBt3neXtwjfx59qAHL4w+0TCHTdB1e/mWPfNHEbeMwHe6bH8yVPm3Rv93I4znBF AE1v4qSXU1tn0rUYbZ7qSzjvnMJhklQsCABIZByjclAOKAOkoAKACgAoAKACgAoAKAOpoAKAOd8R f8fqf9cx/M14+YfxF6f5nq4H+G/Uyq4DsCgChq+i6XrUUcesabZahHGdyLdQLKFPqAwODVRnKHwu xMoxl8SuLpGj6Zo0Dw6Pp1nYQu29o7WBYlZsYyQoGTgDmiU5T1k7jjGMdIqxeqRhQAUAFABQBiah 4S8OaleSXeo+H9Iu7qTG+aeyjkdsDAyxXJ4AH4Voqs4qyk/vIdOEndpGzFGkMSRQoscaKFVFGAoH QAdhWbdy9h1ABQAUAFABQB0fh3/jyf8A66H+Qr2Mv/hv1/yPKx38RehqV3nGFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAVtR/485Pw/mK48f/u8vl+aMq3wM4rxV4bs/E1nDbX8lxGkUnmK YWAOcEc5B9a8bC4ueFk5QS17nA9Sy+kx/wDCNto8MrLF9k+yJI43EDZtBPTJ/KspVXKo6j3buNaH Kp4Antp7q4sNaaC5eVnt3NtkQKUbKcMCR5kkr9Qf3hAIwDWv1hOya/r/AIaxp7TuibTPAptLa4jm 1I3Ekw5keNmIJlEp5d2YjI4yxI45OKUsRd6L+rWE53M7VPCWuWU8us22oSavqiSI0URjOAqs2Dsk nCEgOchWiB4IwRzUa0JLkasv68v8xqaehVt/hpcXNnA11f8A2aSa1KXNuTMypIUZVZVjmSL5d38S P0wCBiqeKSei/L/K/wCI/aGzqfw+hv01FGvjEl5cm4PlxbWQGzS22ghs9U354644+9WccQ4202/z uSqliPTvh99ms7pJ9QWW6uYZYpJts8mS7RndmaaR+kSjG7B68U5Yi7Vlt6fokN1Dq9B06TS7Oa3k nWdWuZ50Ij2FVkkaTaeTkgsRnjPHFYTlzO5DdzRqBBQAUAFABQB0dfXnpmNaf8jlqn/Xhaf+jLmg DUu/+PWb/cb+VAHF6/pUGt6TPp928qQzbdzREBhhgwxkEdR6VUZOLuiZxU1ysb4e0e30HS47CzeV 4YyxBlILcnPYCiUnJ3YQgoKyMWXwtezRGyl1ZDpCM7wQC1xKpO7AaTfhlUtkAKp+UZY85kopv4Bg sYnXwy+n6Tva3ldFsA0bTQurByqMh5AwRn0PBzuAG6v4Gn1VEmv7nRr6+aczTfb9J+0Wx/dqgCRe aCuAvBLseW9eACZ/AVjK0V3LDpa6vbiD7LdQ6eqLb+UoARFLEiM8/Ju4B4OQDQB2dAC0AFABQAUA FABQAUAb+l/8eMX4/wAzQBTi/wCRruv+vKL/ANGSUAXNU/48Zfw/mKAOG8U+HLTxJaQ299JPGkT+ YDCwBzgjnIPrVwm4O6IqU1UVmWhpVv8A2CNIbe9p9m+yHcfmKbdvJ9cVLd3cpKysYNx4UvNThaHX tUgvokjMEUa2exShZCfNBdt7EJjI2ryflpDIT4KfTpom8LXOnaXDDdm7it30/wAyNGaJo3GEkj4O 7cOeDkcggAAp3vw+km1CK+E+h3d0FJd9V0b7UVkMryF4sSp5fL4xzwq88UAall4J0+y1qLWLeO1T VxczzS3YtV3zRysxMbHrwCoDZyNvoSCAdZQAUAFABQAUAFABQAUAdTQAUAc74i/4/U/65j+Zrx8w /iL0/wAz1cD/AA36nAy/8JN/wmg2f8i/uH/PLpsGf9v72f8A9VC+q/Vtf4nz7/dsQ/rX1nT+H8u3 37jfiFaW13YWovLaS4hSQtsbTW1CHdtIHmwJ8zDJyCOhHUVzUW09Pzt+J1VUmtfyv+BzskGuvqOk aha6V5dlo0cSeW886S4f/XbItjeaPLKYDMCrKR1Fa3hZxb1fp8vQztK6aWiNXwX4Uew1FtVmj063 d3nO2204288m52x50m8+ZxyPlXnmoq1brl/X8i6dOz5v0M6WB7S41GaHQ7q68YpLdy2940DhHjJc wqbjAUptMa+VnOR0P3qq90k37un/AAdP1Jta7t72v9X/AEG/bPE9xayf2df620EVvcTRXF1piRTT SIkZWNkaIYBYuBhVJGcE4DUWpp6pdOv/AARXm1o393/AJIda8SW2uamt0uo3NnFNHKHhsX8uKHzF DRqhgDO21jyjy52MfkyFI4QcVbf1/wCD+iHzTUnf+vw/zIJJta/tC11WSDWSVcs8VvbANKBHd7FI ZcD/AJZjJwAWBJ700o2cdP6sK8r82v8AVyCxv/GV1a3g+0atEsKXM9tLJZIZJwscTRI4a3TBLGQb QgPUAnAam40k1t06+vmxJ1Gnv1/rY2Ug1KbwdqcEn9pT3C6ozzRyR+W72/2gO6RnaNymIkDGc5K5 BHGd4qafl+Nv8y7Pka8/1/yM3U7q70zSVbwNpF3pumvcEuBZywnO0fct/s8rqhPXEQzycjqbilJ/ vXd/11uvzJk3Ffu1Zf10s/yIvFsXiObSby7kuNSnlaK9ii06GwSaBm+zPs3KYi7KzcfMcHIGMnkp uCaWnTW/n6hUU7N+ulvL0LFra6ppB1SVG1JFur6eWe7isEkuI0MpVSgERL/KiYyrnB44AATcZW9O /wDwRpSjf1KWuaj4mvJLu0tTr3ktp8qSH7CIx5nkb0aMeScFiCp/ethvl2glaqMaas3bfv5+v6Ey lN3Svt+np+poi+1+LV444f7Sit2kLWyRaaCl0xncP9oPljygI9jA5TJZjyRip5YNf8Hy6FXlf/gf mbngqTXGlxrc91Os1lBcfv7dIvKlYuHjG1V6BVODkjPXBArOqofZ7l0+b7R6d4d/48n/AOuh/kK9 LL/4b9f8jz8d/EXoald5xhQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAFbUf+POT8P5iu PH/7vL5fmjKt8DMWvnDhKWuI0mi6gkas7tbyKqqMkkqcACqhpJAtzyjw7aX1qljbeHYotKe5nEd5 cad4Tl010jW2uGG9rgOsn7xYwCAME453gV3VHF3c9bbXlfqu3kbNrr+Zp3mqeJbRrOG81HV1a5VZ 91tpsckgcxAmIKIjhA/BJBYBjlh94QoU3dpLTz/HcVosmvNX8Vwi8mCak95bo001jFYhoRGmGAhk KfvJJMFSu5iN3AUgEpQpOy0t3v8An6AlEyb7WviBHDMWiuo44ZIo3kjtDuJdZJSU228zMo3wxEiM 8o+SpORahQ/r7u683uNKBd1m/wDG9vphvFmufMe5SKSK3tjshQQhi0eLaWVg0hIJMZ4AHyHJqYRo t2/rf1S28/vElC9v6/M1NJl1u78U6YdYN55sTF5IY7MrZxA25G9JSgYksWGGbI4yq94koKD5fz13 7CdktDMW513TX102MmpolvNeXzwzWaRwbVn8xRHK6AMZV3qfmOAQRswCbtCXLe3Rb+X6Dsna5s3y z6n4Dsp9ehvLg3UoupIRZC5EUbFnWKWBOZEVSqELlicHnk1mrRqNQ6edvxJWktDnJrHXbux0ZNH0 WKKDRQ19GrmazVn8w7PJidHIzGsq+SxGwTKMjjGylBN8z306P7/8+ti7pXu9za8J+EnbxA/iCaKx tD9uu5lC6aYb2VWeRVE05fLpghguwdE545zq1vd5FrouunyRMpaWPQ65DMRshTtALY4BOATQBb+0 eIf+gXpP/gyk/wDjFfXnpmTbT67/AMJXqJGnaYZTZWoZTqEm0L5lxgg+TyT82RgYwOTngAxodW8b N4o1W2/su2l0xeCZJSscXyD7kuwFv++T+FAG/QAUAeXaZ4TlsdJvtTbTNL+2NdicfZtK8q9KLeCR g8m8mQlUBACrnjrQBaTURF4qGvSWGsDTZpJI0YaXctJxFEuTEqGRQSrAFlGcehGQDO13wnLdaP42 1VdM02W5ubS/W0xpBGoMzwsq4mLZIIJUKEB5xn1ANS9vhHpWt6cbLVmuk1BrnCabcMjx/aFfKOE2 udvOFJJ9KAK3iK5v7rxBB4g8O2OpO4sxYKJbOaEjzZGXcUdVOEfynJxwgY+9AGBougQ6Zq+nw3ml wMlsIo4ZL3wzc6hLtWaTG24U7YjjBywOMhulAG3peg3kWoaNYXuny3eiXNzd3MqXEe9LdmSZXjcN /A5cMuRjJYd1FAG5o/h+00nwPq8GmaRBZT3CXQaO3thG0nzSBMhQCeCMexGKAOwtAVtYQwIIRQQe 3FAEtABQAUAWLGfXRbKIdN0x4gW2s+oSKSMnqBCcfmaAGIniFdVlvf7P0n54Eh2f2hJxtZjnPkf7 X6UAcd4L1Dxrci4XVrZX0necTXXySAbuAhxlx7kfiKAOsoApa2jSaNfpGrO7W8iqqjJJKngCgDgt N0EeErHRr99M0/5LpXujomjPDIENvKil40aR5CHk5I6bicdTQAeEpX0PVnl1Kx1NE1FrmWEx6fPL tEt9PKok2IfLOyRCQ2MZ56GgCLwj4Vm0rw/p9xJp+mR3c81mz/ZNLNvcqBIGbz33sZD0JOF6E454 AKGiaj5HhX4dRTabrqy6NLAL5Do93ui/0GeM4Hl5cByASuQMj1oAr6pp+p6hrfi77Jp2ptpfiR1h kkeGSLZHHZQMDsYAjf8Av4ycA7goxkcAE+n6YkfiS7e40y1+2NnZI/hi4e4P+jgDbeg+WvPHTjle tAFrT/DU7vDpGsaUdQ0q20WQWr3UIlUFjEVhYNn50KNjPO3b1INAHQ6posVl4J0ux0fTEt1TUNNl a3tYAgXbeQPIxVRxgBmJ9ASaAOg8NRSQ6JbRzI0bjdlWGCPmPagDUoAKACgDQNx4gycaZpRHbOoy f/GKAMHxtqHiy28Pyy6fYWkV0JIwjWl09xJy4GAhhAIPfnpQBDZz65cW0D+JbW3trwxj5YWzkZPL DoD9Cfw6V4+YfxF6HqYH+G/UmrgO0xPFd7qVlaQvpaoMufOma0ku/KUKTkQxsruSQBweM9DWlNRb 97/L8SJtpaf5mevi5BbqGt3mdY1WW7gANtHMy5VDkiTnI/h4yASDVey1/q5PtAv/ABgLbRo7mCwu Lu6ZvLEEexdzBkDYLMBj58jJ7UKleVmwdSyvYP8AhM7aE/6RbXjwrL5Mt0kaLFE7SmONGBcsSxAG QCOQTtzij2Lewe1S3LGneK4b7SNQv/7PvrUWluLnyrkIGkjKF1ZdrNgEA8HBGOQKUqTTSvuNVE03 YjTVtW0yHzdZW0vTcBfstvp0ZSUuxx5f7yTa2Mj58oPUCjljLSOnqHNKPxa+hBH47spJgsenam0a ny55RHHtgk3OnlsN+4tvjdfkDDI64INP2D7oXtl2IofiJpUmlyXxtrtUjsrq/ZFeCVgluYw6kxyM of8AerhSexzju3h5Xt5pdeolXja/q/uIdP8AG9wf7WN7pjvFYvNiSGWGNWVbyeADMsqgHbCGJJA+ 9jsC5UVpZ7/5J9F5gqr1utv82ixF48trm1instL1KeOWESJIvk7N7Rl0jJ8zknaRkZXPVgCDS9g0 7Nj9smrpFrUtY1VvD2m31jbfZpLhFknMlq94bcFN3+qicM5J4+VjjPepjCPM0/8AL8xuUuVNf5in xda22jvd3itK0CL5xtRlGYxlzt3EHGFPBwQeKPZNysg9okrshk8bQRkRto+rfacPI8G2LekahGMh /eYxtcHAJbqMZ4p+xfdC9quzFtfGMLTtBPbTvK84jtzCq4mVpzECMtnKgBnzjAPGelDpPdf1oCqr Y6usTU6Pw7/x5P8A9dD/ACFexl/8N+v+R5WO/iL0NSu84woAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgCtqP/AB5yfh/MVx4//d5fL80ZVvgZi184cJU1iaS30m9mhbbLHA7qcZwQpINVBXkk wW55ub7xNFpdmWl8Xie7uYowJV0kyuvlSu3k7RsHKqT5mDj7vOa6+Wm29tP8Xdb/APANbRv0/Eii 1HxFqaaRJbPrU0/k3Do1vHpwmXEoRRc+YNqsMYZYsHIIxkU+WnG97dP5vwt+oWiv6Z6na+d9lh+1 FDcbB5mz7u7HOPbNcTtfQyJaQBQAUAQ3lrb3ts9veQRXED43RyoHVsHPIPB5FNNp3QJ2JqQBQAUA FABQB0dfXnpmNaf8jlqn/Xhaf+jLmgDUu/8Aj1m/3G/lQBzdABQAUAFABQAUAFABQAUAFABQAUAF ABQBv6X/AMeMX4/zNAFqgCrqn/HjL+H8xQBgUAFAEF/dRWNlPdXBIhhQyOQMnAGeB3PtQBmN4n0i GZob++trCYS+Ssd3MkbSNhCdoLfN/rEHHcj1GQCZte003otILuG4uRcC2ljgkV2hcqzASAHK8Kev NAC61q40wQpHZ3V/dzk+Va2uze4GNxy7KoAyMksOoHUgUARw+ItKeSygnvYLS+u03xWV1IsU7DnP 7snJxg9MjigATxNoT2iXSa3pjWzzfZ1mF3GUaX+4Gzgt7daAG65ryaXeWlpHYXt/dXKvIsVr5e5U Tbuc73UEDcvAyxzwDQA2y8VaHdi8MeqWimzMguBJMqGLywvmFgTlQm9Q2cYJGcUAJJ4q0dPEMei/ brdr1kkZgsyERMrxL5b85DsZ02rjnn2yAXrPVLW8vJba2kEjRqH3qQyMNzKcEHqGUgjqDQBeoAKA OpoAKAOd8Rf8fqf9cx/M14+YfxF6f5nq4H+G/Uyq4DsOf8YJZSQWsd1aahd3TuRbx6dO0E5OMtiQ Om0YHOWAPA9BWlO/R/eZ1LdfwMWyk8K3OuxWM0EtlfrbxNHb3dw0QlLGVAPLL4kkXyX+bBOCCGOc 1o/aKN91/wAN/mQuRytsx72/gy7e7uI722njAeG5ki1U+XbbUyxIEgEbYQZKgN8oJ6ZBeqrK34f8 Adqb1v8AiLq0fhO30e48RJGdQtLQkuLG5aVZHEhPKB9jursSM5KnpilH2jlybX7hL2aXPuXIdY8O 6bqdzZFkto49PhmluZ322/kglEUuxxnB/Jhk80nCclfzHzQi7eRVt7DwUzRWkOoW0k1+ivbL/art KUB3L5B8zcijGR5ZAGKblV3tt5fn/wAESVPa+/n+RNaN4Mi095LXUdMFok8cTypqAIEysWUF9/39 zE8nJJyc0n7W+qf3DXs7aP8AEqXGg+B7qOazuLuGZzA80xk1aVpnglRVYu5k3tGyqn3iV+VcdBVK dVapfgJwpvR/mPey8EXXmzJqNmPKR7uR4NWaPYrTvI0pKyDA8xpPm7bmUYBIpXqrS34eQWpvW/4l u1/4Q+3W1tYL7TR9oCXEEf20EyjDBWUbvmXAfGOOD6Un7V6tP7hr2a0TLGnafoev+GdLexkuJNOW IG0ngvZUlVcYx5quH7YILduaUpThJ339BqMZxVtjC8V6boy/abWHS9Umkhsyks9q7NFaqyuFkeNp FEjgFjwGfB9+dKcpb3X9fIicY7WINTsfBlqInuNYg2Wkcnm2/wDaTedO8iqVUsZQ3KwsBGTgjIxg U4yqvZb+X/A8xNU1u/xNaS28OnxFa373+lxNo6STeQ7r5lvJcEAuzFvkUg4C4AyevQVF58rVnr+h Voc177fqddBNFcQRzW8iSwyKHSRGDKykZBBHUEd6xatozZO+qOm8O/8AHk//AF0P8hXr5f8Aw36/ 5HlY7+IvQ1K7zjCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK2o/8ecn4fzFceP/AN3l 8vzRlW+BmLXzhwjZEWSNkkVXRgVZWGQQeoIo2AytK8MaBpEpk0nQ9LsZCQ262tI4jkAgHKgc4Zh+ J9a0lVnP4pN/Mbk3uzQhs7aGZ5obeGOVySzqgDNnGcnvnA/Kocm9GK5PSAKACgAoAKACgAoAKACg AoA6Ovrz0zGtP+Ry1T/rwtP/AEZc0Aal3/x6zf7jfyoA5ugAoAKACgAoAKACgAoAKACgAoAKACgA oA39L/48Yvx/maALVAFXVP8Ajxl/D+YoAwKACgDP1+0lvtGu7e32+eyZjDHALA5AJ7AkAUAcvr3g X+25NTme98hr+wvLPY0AcxG4WAbs7uSvkdO+7qMcgF208LXUF5DIdRt2htZmltUFkFdQ28kSPuy/ L542jjkEnNAGlrOl3t01ndafewWup2ysglltzLEyvt3qYw6nBKqRhuCB1oAw7/wfqd/f6fLd+IXn trVo5Whkgb95IrsWztkCbGDY2lWK4Ug8YIBlT/DS4ubS1S41tmkgMqLGhu0gEMgQPGFFz5mPkGAZ CoyfloA6jxL4fn1a1traCfTxbxgK8N9YfakOMEMvzqyuMcHJHtnmgDntZ+Hl1fW13DDrixie0ubD fNaGV/JnjhV8nzBl90KsG4GCRgnDAAZ4g8F6gkV9dafcLdzJbXUWn28cCRSRyzzxTLI8rNtYRyR7 vu529mYfMAdLoGiyaZdWkfLW9lYLarKzZaZy2XY/98qc9yxoA6GgAoA6mgAoA53xF/x+p/1zH8zX j5h/EXp/mergf4b9TKrgOwy9c066vDbT6beR2d9bMTHJLB50bKwwysgZSQevDAggdsg3CSWjV0TK Leqepg3Hgua6uprq71ZprqVrBjI1uMg2109xgc8Bt+wD+EKCd1aKskrJd/xVjN0ru7fb8HcyZvht dXaau1/4ge4udRs/sjytA524injDANKccT5KrtXIOAueLWIStaO3/A8vIn2Dd7vf/g/5nTf8Iyvl a3GtyAupX0V7gRcRbI4U29ec+TnPH3unHOXtNvJf5/5mns9/P/gGPa+BbrT7WRdM1rybk7lErW5I 8vemxCFdWwsUaR5DAnGcjpVuupPVf1/w+pCotLRk+keBzp1mIf7SaWVZIXEzRZfEcjuMksST8+Mk 9QT3pSrczvYcaVluYt54T8QaV/p9td/21qMrKsuYuAvlujELLPgZBXo4CncQrA7a0VWEtGrL+uyI dOcdVq/68yW1+Ge0Dz9Q3RtbhDExnYJL5KxMwXzhEQQDwY88/e6Uniey/L/K/wCI1Q8/6++34Gv4 i8ER6vC6pefZnMz3CvGjKQ5eJxyjq3BiGdrKSDwR1qIVuXoXOlzdSpY/D1bVWP29TIz2MjERyNlr e7kuWOZJXf5zIRyxx156Buvfp3/FW7Eqjbr2/B3Og03QBDommWF7dTytYEeXJbSy2oYLwgYI/wA3 y4BBJUkE4HQZyqXk2lv8zRQskn0G6tot/cXdzJpupx2cV5GI7lHtvNbgEbo23Da2DjLBhwOOuSM0 lqr2CUW3ozK1HwQZYClhfxWzMlzAxltvNUwzhAw27h848tMMc8ZGOeLjWtuu34EOl2ff8SrB8O0i 1C5n/tBpIpZ/tCJJ5zmNmnWZwFM3l4JXHEYIGMk928RdWt+Xa3a/4i9hre/9ff8Aod7XObnR+Hf+ PJ/+uh/kK9jL/wCG/X/I8rHfxF6GpXecYUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAy aMTRFGJAPpWdakq0HCWzJlFSVmVf7Oh/vSfmP8K4f7Lpd3+H+Rl9XiH9nQ/3pPzH+FH9l0u7/D/I Pq8Q/s6H+9J+Y/wo/sul3f4f5B9XiH9nQ/3pPzH+FH9l0u7/AA/yD6vEP7Oh/vSfmP8ACj+y6Xd/ h/kH1eIf2dD/AHpPzH+FH9l0u7/D/IPq8Q/s6H+9J+Y/wo/sul3f4f5B9XiH9nQ/3pPzH+FH9l0u 7/D/ACD6vEP7Oh/vSfmP8KP7Lpd3+H+QfV4h/Z0P96T8x/hR/ZdLu/w/yD6vEP7Oh/vSfmP8KP7L pd3+H+QfV4h/Z0P96T8x/hR/ZdLu/wAP8g+rxD+zof70n5j/AAo/sul3f4f5B9XiH9nQ/wB6T8x/ hR/ZdLu/w/yD6vEu16RuY1p/yOWqf9eFp/6MuaANeRBJGyHOGBBxQBS/sqD+/J+Y/wAKAD+yoP78 n5j/AAoAP7Kg/vyfmP8ACgA/sqD+/J+Y/wAKAD+yoP78n5j/AAoAP7Kg/vyfmP8ACgA/sqD+/J+Y /wAKAD+yoP78n5j/AAoAP7Kg/vyfmP8ACgA/sqD+/J+Y/wAKAD+yoP78n5j/AAoAP7Kg/vyfmP8A CgA/sqD+/J+Y/wAKAD+yoP78n5j/AAoAtwRLBEsaElR60ASUARzxLPE0bkhT6UAVP7Kg/vyfmP8A CgA/sqD+/J+Y/wAKAD+yoP78n5j/AAoAP7Kg/vyfmP8ACgA/sqD+/J+Y/wAKAD+yoP78n5j/AAoA P7Kg/vyfmP8ACgA/sqD+/J+Y/wAKAD+yoP78n5j/AAoAP7Kg/vyfmP8ACgA/sqD+/J+Y/wAKAD+y oP78n5j/AAoAP7Kg/vyfmP8ACgA/sqD+/J+Y/wAKAL9ABQBzviL/AI/U/wCuY/ma8fMP4i9P8z1c D/DfqZVcB2HJePdDk16fRbdLfT50S4d3/tCwN5Ao8pgCybl5yeDnrW1GfJd/k7GVWHPZf8E5Lxo+ vRaTrXh6wsbprVluIYIrPTiIPsh0t9iIVUgf6SpAXO7OB0IztS5Lqbfbr15v8jKpzWcEvw6W/wAy 7baRf276juhup2ub+4uGke2UMf3jKvzKgJGxVxnPGOcAAJzTt6Iai1f1EWbxdFCGiuNRWNba7lWA WUZCtBNGsMYJTOJEd85OSEypGCSWpv8ADr33+4L1Pz/AW0v/ABneapf2s0k9nEblY96W7M0KGYAG ItbCMr5eSSZJcHB4GRQ40kk1r/Xrf8ECdRtr+vy/zNjwuusvqeof2hc6gZnsI0iee3VY96yzrv4Q LvxsYjod2QMYxnU5bK3f/IuHNd37f5nNLqXjPUzYre6fdQ2801pdSLLZxuYMXcEbRYKnlQss248q CpB4415aUb2ff8n/AMMZ81SVrrt+a/4cu+E7bXLc2Fz9o1X5Usre4juLQKZsGRJC5KBsL1BXHGCS wPKqODutOo4KSs9ehq623iSTxA0dje31tYyXhth5VpG6xxfY2l80MyHnzUCZOV+cjGcYiPJy6rX/ AIP+Rcufm0en/A/zMa41DWtVNxpesRXhtI7OC/uhb2weQiTy9sJjxlgrJOXUfMV2gBskVajGPvR7 2/r8CHKUvdl6/wBfiVptM1bVtGh0vQtJgtLWK6e6jd45tOhbYi+WwidHaMiZtwjwA3k7sgNgtSjG XNJ/r/Wn5i5ZSXLFfp/Wv5GpYeG59f8AEcuuXdraWDfaLacNNpp+2qVhiJRJy42puBUjac/OM88S 6ihHkWu/XT7ilBylzPT5a/eJ4jsYH+IK3N3YWkw22/lyz+G579uGbOy4Q7YiPcHB5ohJ+zsn36pf h1CaXtLtfhf8TFk8K3lrpt8/9mWKve6ddojWWlGOZ5GVv3dy28mTIOQcLlh2OM37VNrXZrr+RHs2 k9N0+n5ne+DfDI8O/bWzpyG5KHydNsfscC7QefL3v85zy2eQFGOK56tTnt+rub06fJf9ND0fw7/x 5P8A9dD/ACFenl/8N+v+R52O/iL0NSu84woAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAxrT/kctU/68LT/0Zc0AbNABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAHO+Iv+P1P+uY/ma8 fMP4i9P8z1cD/DfqZVcB2GR4nudQs9PM+nS2UXl/M5uY3k3/AN1FVWX5mPAOeCRw3Srgk3ZkTbSu jm7vxLrcJmmIsEhmke1t4WgcvBKu1dzsJMOu4twAvAHPetVTg9DN1JIG8Q+IY9StraWK3NrbzGK/ vYrImLG9Qu3dOpQkHt5pBIJGOp7OFr/dr/wP8g553t9/9X/zO7rnNwoAKACgAoAKAIYLS2t5Z5be 3hiluGDzOiBTIwAALEdTgAZPYCm23uJJLYmpDCgAoAKACgDo/Dv/AB5P/wBdD/IV7GX/AMN+v+R5 WO/iL0NSu84woAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDJ8V69a+GdAutXv45pLa32b 1hALnc4UYBIHVh3rKtVVGDnLZGNetGhTdSWyPPP+F8eGP+fDWv8AvzF/8cri/tSl2f4f5nnf21Q7 P8P8w/4Xx4Y/58Na/wC/MX/xyj+1KXZ/h/mH9tUOz/D/ADD/AIXx4Y/58Na/78xf/HKP7Updn+H+ Yf21Q7P8P8w/4Xx4Y/58Na/78xf/AByj+1KXZ/h/mH9tUOz/AA/zD/hfHhj/AJ8Na/78xf8Axyj+ 1KXZ/h/mH9tUOz/D/MP+F8eGP+fDWv8AvzF/8co/tSl2f4f5h/bVDs/w/wAw/wCF8eGP+fDWv+/M X/xyj+1KXZ/h/mH9tUOz/D/MP+F8eGP+fDWv+/MX/wAco/tSl2f4f5h/bVDs/wAP8w/4Xx4Y/wCf DWv+/MX/AMco/tSl2f4f5h/bVDs/w/zD/hfHhj/nw1r/AL8xf/HKP7Updn+H+Yf21Q7P8P8AMP8A hfHhj/nw1r/vzF/8co/tSl2f4f5h/bVDs/w/zD/hfHhj/nw1r/vzF/8AHKP7Updn+H+Yf21Q7P8A D/MP+F8eGP8Anw1r/vzF/wDHKP7Updn+H+Yf21Q7P8P8w/4Xx4Y/58Na/wC/MX/xyj+1KXZ/h/mH 9tUOz/D/ADPWa9I9cxrT/kctU/68LT/0Zc0AbNABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAHI+MtTsNOvYP7QvbW18yP5PPlVN2Cc4yeeo/ OvGzFpVFft/mevl8JSpvlV9TA/4SbQf+g3pf/gXH/jXBzLud3sp/yv7jK1y58J639m+361ahrZzJ E1vqzW7KxGCcxyKehI59TVwq8mzX4Eyw8pbxf4laSDwVLNdyyarau10hSQNq7lRkAFlXzMIx2j5l AbIznNP2701/In6tL+V/iEEPgqCa3lj1W08yD+JtXdjL8xYebmT97hiSN+7BPGKHXb0v+X9IFhpL 7L/E3v8AhJtB/wCg3pf/AIFx/wCNZ8y7mnsp/wAr+4P+Em0H/oN6X/4Fx/40cy7h7Kf8r+4P+Em0 H/oN6X/4Fx/40cy7h7Kf8r+4P+Em0H/oN6X/AOBcf+NHMu4eyn/K/uD/AISbQf8AoN6X/wCBcf8A jRzLuHsp/wAr+4P+Em0H/oN6X/4Fx/40cy7h7Kf8r+4P+Em0H/oN6X/4Fx/40cy7h7Kf8r+4P+Em 0H/oN6X/AOBcf+NHMu4eyn/K/uD/AISbQf8AoN6X/wCBcf8AjRzLuHsp/wAr+4P+Em0H/oN6X/4F x/40cy7h7Kf8r+4P+Em0H/oN6X/4Fx/40cy7h7Kf8r+4P+Em0H/oN6X/AOBcf+NHMu4eyn/K/uOs 8G6pp+pWdwunX1pdmOTLiCZZNmRxnB4zg/ka9jLpJ02k+p5OYQlGaclbQ6GvQOAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoA4P45/8AJLNb/wC2H/o+OuPH/wC7y+X5o4M0/wB1n8vzR8mV 82fIBQAUAFAHp/hBNNbS9Bs3g0yDUJnYy2+rWHy6ijOQpjuNjGMYG0EY+YHrXpUFDlhGyT81v8/6 1PXwyhyQjZKXaS+L0dnby8yz4P8AClpLpN7a6ja2cN5q889ra/abmLzLXygQpQMQzky4Q7Ac7T0B 5qhh4uLUlrJtLbS3/B7GmGwsHCUZpJybSu1pbt1eumhHpqWGleHvCkmoy6FZI5nN7He6X9omnC3D KQGETEEAbfvLSio04Qc7Le91dvX0IgoUqdNzst73V27P0f5lLSbyyuLbVri40bTbbwrBHcRpK1oP tE0jlvJVZTlvMBK8KdoUHIqYSi+aTilBX6avtr3JpzhLmlKCVNX6au+2u9/wR1unaNpOp+KtW0O4 03To7LTLiwEDR2yJIwLKGVnA3PvB5yTXVGlCdSVNxVlbodsKNKpVnScVaLjbT+tzz/xHLFqvgmy1 Z7Gys71dSntGFpbpAHTYjgFVABK7iM4zjrXBVanRU7JO7Wmh5ldqpQVTlSfM1oref4HF1xnnhQAU AFAH3fX2B98Y1p/yOWqf9eFp/wCjLmgDZoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA8H/ahA3eGmwMkXIJ/wC/VeNmyV4P1/Q+gyN/xF6f qeFV4574UAFABQAUAFABQAUAFABQAUAFABQAUAFABQB7t+y9/wAzN/27f+1a9jKft/L9T5/PP+Xf z/Q93r2TwAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDivjNaXF98NdYt7K3luLh/J2x RIXZsTITgDk8AmuPH/7vL5fmjhzKLlhpKKu9PzR8v/8ACK+If+gDq3/gHJ/hXzZ8r7Cr/K/uYf8A CK+If+gDq3/gHJ/hQHsKv8r+5h/wiviH/oA6t/4Byf4UB7Cr/K/uYf8ACK+If+gDq3/gHJ/hQHsK v8r+5m9pcnjvS7O3tbPS9SENuzPB5mlCVoWbqY2eMlM9flIreGIqQSjF7eSOinUxVOKjFOy202/A o3WneMrq7s7qfS9Ze4tFVIJDZPlArFh/DycknJ5JPNRKrOTUm9URJYiUlJp3W2g/WrHxlrRi/tLS NUl8ppGQDT2QAyOXf7qDqxJoqVZ1Pif9MKv1irbni9L9O+/QthvG/wDZdrp0mh3EtpaoUhSbQ45D GD1wzREgn1zmr+sVOVRdrLyX+RfPieVQcbpbe6n+hLPd/EGeKJHsNVHlvFIHTTNjs0X+rLOEDNtx xuJpvFVXu/y6FSrYySs0+nTtt0KWuW3jTXEgTUtI1J44Wd0SLTPJUM5yzbUQAkkck81FStOppJmd V4mskpp6eVvyRk/8Ir4h/wCgDq3/AIByf4VkY+wq/wAr+5h/wiviH/oA6t/4Byf4UB7Cr/K/uYf8 Ir4h/wCgDq3/AIByf4UB7Cr/ACv7mH/CK+If+gDq3/gHJ/hQHsKv8r+5n2rX2B9wY1p/yOWqf9eF p/6MuaANmgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgDhPij8Pv+E6/sz/iZ/YPsXm/8u/m79+z/AGlxjZ79a48XhPrNtbWPQwOO+qc3u3vb rbY4P/hn7/qZv/JD/wC2Vxf2T/f/AA/4J3/25/07/H/gB/wz9/1M3/kh/wDbKP7J/v8A4f8ABD+3 P+nf4/8AAD/hn7/qZv8AyQ/+2Uf2T/f/AA/4If25/wBO/wAf+AH/AAz9/wBTN/5If/bKP7J/v/h/ wQ/tz/p3+P8AwA/4Z+/6mb/yQ/8AtlH9k/3/AMP+CH9uf9O/x/4Af8M/f9TN/wCSH/2yj+yf7/4f 8EP7c/6d/j/wA/4Z+/6mb/yQ/wDtlH9k/wB/8P8Agh/bn/Tv8f8AgB/wz9/1M3/kh/8AbKP7J/v/ AIf8EP7c/wCnf4/8AP8Ahn7/AKmb/wAkP/tlH9k/3/w/4If25/07/H/gB/wz9/1M3/kh/wDbKP7J /v8A4f8ABD+3P+nf4/8AAD/hn7/qZv8AyQ/+2Uf2T/f/AA/4If25/wBO/wAf+AH/AAz9/wBTN/5I f/bKP7J/v/h/wQ/tz/p3+P8AwA/4Z+/6mb/yQ/8AtlH9k/3/AMP+CH9uf9O/x/4Af8M/f9TN/wCS H/2yj+yf7/4f8EP7c/6d/j/wA/4Z+/6mb/yQ/wDtlH9k/wB/8P8Agh/bn/Tv8f8AgB/wz9/1M3/k h/8AbKP7J/v/AIf8EP7c/wCnf4/8A7z4XfD7/hBf7T/4mf2/7b5X/Lv5WzZv/wBps53+3Su3CYT6 tfW9zgx2O+t8vu2tfrfc7uuw88KACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAraj/AMec n4fzFceP/wB3l8vzRlW+BmLXzhwiOyojO7BVUZJJwAKAMrR/EWm6vO8NjLMZFBcCa3kh8xQcb03q N6cj5lyORzzWkqcoK7G4tbl2S/to9Tg095MXc8Mk8ce0/MkbIrnOMDBlTjOeeOhxPK7c3QVtLlmp Ajtp4rmISwOHjJIDDpkHB/UGm01owMzVPEel6XeLbXtw6SlQ7bIJJFiUkgNIyqRGpweXIHBq40pS V0NRb2NesxFe3vILi4uoIZN0tq4jmXBG1ioYD34YHj1puLSTfULFikAUAFABQAUAdHX156ZjWn/I 5ap/14Wn/oy5oA2aACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgCtqP/HnJ+H8xXHj/APd5fL80ZVvgZwPjjwx/wlOn29r9r+y+ VL5m7yt+eCMYyPWvJwOM+qTc+W916HA1cvro6/8ACKjRXmYp9i+xmVVwSNmzcB29awnV56rq23d/ xGtDlNe8La54kisYtXTSIobOaEeXFI8guYluIXkLZQbMpEw8sbgS3LYFaQqwp3cb6/5P+rmiko7G Lq/w11K6u7s2Q0q0jaG5j86JiJLsSXFvKqSq0TKFCQtFyJBt2/KR8o0jiopK93t8tGtNfO/QaqI3 /AXgqbQdTa81AQSsljDa2+ZFle3IluHkVCsUaqmJY1AVV4XGAAM5Vq6mrLv/AJebJnO6sjMsfh/d Wd/ZGDT9Chgt5VMM0TsslmizvITCojAzIrBXGVxzkuMCrliE07t/56dfT+rFOomdVqdjrkWq3cui jTWgvo1WWS7dw9uygjcqBSJQQR8pZMEdTnjGMoOKUr6f18vxITVtTjL/AOH+r3l7rlxcWuisL9Sn lQyJCJiswdJJP9FYE7c5VxKMjg4Y46FiIpRSb0/y9fysWqiVv6/U2tG8FXNrqtlqd0unG/huY3M0 K7SIRa+U0a4UAAuFOAACADgYAGc66acVe3/BuJz0sd7XKZhQAUAFABQB0dfXnpmNaf8AI5ap/wBe Fp/6MuaANmgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAraj/x5yfh/MVx4/8A3eXy/NGVb4GYtfOHCFABQAUAFABQAUAFABQA UAFABQAUAFAHR19eemY1p/yOWqf9eFp/6MuaANmgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAraj/AMecn4fzFceP/wB3l8vz RlW+BmLXzhwhQAUAFABQAUAFABQAUAFABQAUAFABQBa/se+/6GPVv+/dr/8AGa+vPTJtL0k2N5c3 c1/d3txPHHEWuBGNqoXIACIo6yN1zQBp0AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAFbUf+POT8P5iuPH/wC7y+X5oyrfAzFr 5w4QoAKACgAoAKACgAoAKACgAoAKACgAoA6Ovrz0woAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCK6jM1uyKQCcdfrWGJpO tScI7sipFyi0jO/s6b+9H+Z/wryf7Lq91+P+RzfV5B/Z0396P8z/AIUf2XV7r8f8g+ryD+zpv70f 5n/Cj+y6vdfj/kH1eQf2dN/ej/M/4Uf2XV7r8f8AIPq8g/s6b+9H+Z/wo/sur3X4/wCQfV5B/Z03 96P8z/hR/ZdXuvx/yD6vIP7Om/vR/mf8KP7Lq91+P+QfV5B/Z0396P8AM/4Uf2XV7r8f8g+ryD+z pv70f5n/AAo/sur3X4/5B9XkH9nTf3o/zP8AhR/ZdXuvx/yD6vIP7Om/vR/mf8KP7Lq91+P+QfV5 B/Z0396P8z/hR/ZdXuvx/wAg+ryD+zpv70f5n/Cj+y6vdfj/AJB9XkH9nTf3o/zP+FH9l1e6/H/I Pq8jWr3TsCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAOK/wCFo+Dv+gx/5Kzf/EVr7GfYx9vT7h/w tHwd/wBBj/yVm/8AiKPYz7B7en3D/haPg7/oMf8AkrN/8RR7GfYPb0+4f8LR8Hf9Bj/yVm/+Io9j PsHt6fcP+Fo+Dv8AoMf+Ss3/AMRR7GfYPb0+4f8AC0fB3/QY/wDJWb/4ij2M+we3p9w/4Wj4O/6D H/krN/8AEUexn2D29PuH/C0fB3/QY/8AJWb/AOIo9jPsHt6fcP8AhaPg7/oMf+Ss3/xFHsZ9g9vT 7h/wtHwd/wBBj/yVm/8AiKPYz7B7en3D/haPg7/oMf8AkrN/8RR7GfYPb0+4f8LR8Hf9Bj/yVm/+ Io9jPsHt6fcP+Fo+Dv8AoMf+Ss3/AMRR7GfYPb0+4f8AC0fB3/QY/wDJWb/4ij2M+we3p9w/4Wj4 O/6DH/krN/8AEUexn2D29PuH/C0fB3/QY/8AJWb/AOIo9jPsHt6fcP8AhaPg7/oMf+Ss3/xFHsZ9 g9vT7h/wtHwd/wBBj/yVm/8AiKPYz7B7en3J3+I/hRLKK7bVcW8sjxI/2eXlkClhjbngOv5/Wl7K d7WH7aFr3IP+Fo+Dv+gx/wCSs3/xFP2M+wvb0+4f8LR8Hf8AQY/8lZv/AIij2M+we3p9w/4Wj4O/ 6DH/AJKzf/EUexn2D29PuH/C0fB3/QY/8lZv/iKPYz7B7en3D/haPg7/AKDH/krN/wDEUexn2D29 PuH/AAtHwd/0GP8AyVm/+Io9jPsHt6fcP+Fo+Dv+gx/5Kzf/ABFHsZ9g9vT7h/wtHwd/0GP/ACVm /wDiKPYz7B7en3D/AIWj4O/6DH/krN/8RR7GfYPb0+4f8LR8Hf8AQY/8lZv/AIij2M+we3p9w/4W j4O/6DH/AJKzf/EUexn2D29PuH/C0fB3/QY/8lZv/iKPYz7B7en3D/haPg7/AKDH/krN/wDEUexn 2D29PuT2PxH8KX17b2lrqvmXE8ixRp9nlG5mOAMlcDk96TpTSu0NVoN2TIP+Fo+Dv+gx/wCSs3/x FP2M+wvb0+4f8LR8Hf8AQY/8lZv/AIij2M+we3p9w/4Wj4O/6DH/AJKzf/EUexn2D29PuH/C0fB3 /QY/8lZv/iKPYz7B7en3D/haPg7/AKDH/krN/wDEUexn2D29PuH/AAtHwd/0GP8AyVm/+Io9jPsH t6fcP+Fo+Dv+gx/5Kzf/ABFHsZ9g9vT7h/wtHwd/0GP/ACVm/wDiKPYz7B7en3D/AIWj4O/6DH/k rN/8RR7GfYPb0+4f8LR8Hf8AQY/8lZv/AIij2M+we3p9w/4Wj4O/6DH/AJKzf/EUexn2D29PuH/C 0fB3/QY/8lZv/iKPYz7B7en3D/haPg7/AKDH/krN/wDEUexn2D29PuH/AAtHwd/0GP8AyVm/+Io9 jPsHt6fcnt/iP4UuIrmWHVdyW0YllP2eUbVLqmfu8/M6jj1peymug1Wg+pB/wtHwd/0GP/JWb/4i n7GfYXt6fcP+Fo+Dv+gx/wCSs3/xFHsZ9g9vT7h/wtHwd/0GP/JWb/4ij2M+we3p9w/4Wj4O/wCg x/5Kzf8AxFHsZ9g9vT7h/wALR8Hf9Bj/AMlZv/iKPYz7B7en3D/haPg7/oMf+Ss3/wARR7GfYPb0 +4f8LR8Hf9Bj/wAlZv8A4ij2M+we3p9w/wCFo+Dv+gx/5Kzf/EUexn2D29PuH/C0fB3/AEGP/JWb /wCIo9jPsHt6fcP+Fo+Dv+gx/wCSs3/xFHsZ9g9vT7h/wtHwd/0GP/JWb/4ij2M+we3p9w/4Wj4O /wCgx/5Kzf8AxFHsZ9g9vT7h/wALR8Hf9Bj/AMlZv/iKPYz7B7en3D/haPg7/oMf+Ss3/wARR7Gf YPb0+50Ph7XtN8RWT3ej3P2m3SQxM/lsmGABIwwB6MKiUXF2ZpGamrxNSpKCgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAPiyvSPICgAoAKACgAoAKACgAoAKACgAoAKACg AoAKACgAoA27v/kS9K/7CF5/6LtqlfE/67lv4F6v9DEqiAoAKACgAoAKACgAoAKACgAoAKACgDb8 Ef8AI6aB/wBhC3/9GLUz+Fl0/jXqYlUQFABQAUAFABQAUAFABQAUAFABQAUAFAG3oH/IK8S/9g9P /Sq3qZbr+uhcdn6fqjEqiAoAKACgAoAKACgAoAKACgAoAKACgAoA+hP2e/8AkS73/sIP/wCi465M R8R3YX4H6np9YHSFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAfIHhr RZ9f1eKxt3SLcGd5XztjRRlmOPQCvQlLlVzy4Qc3ZFibR7K5ktofD9/PqN3NKYhbPaGKT2YYZlK/ Ugj0o5mviQcqekXcc3hLWxqFrZrZeZPdbjCYpkdH2/e+dWK8d8njvRzxtcfs5XtY0NQ8C6hbWmlS W7x3E15BLcyKHQRwIhA3GXdsK4IO7IFSqibZTotJWOe1DTbrTdSew1CP7PcowDhyCFzgg5GcjBzk VaaaujNxadmdJ448FHwtaW051BbgyyGPYYhGWwobenzHcnOM8c9qiFTnexpUpcivcz9O0CBtBGsa vfSWdlJP9nhEUHnSSMBljgsoCj1z+FNy15USoLl5pMjt/DV3qF1dLojR31nC6oLosIEct90fvCvz Hpt656Z60+dLcFTb+HU2tD8AzaglkLq7aznnvJ7N4mg3GIxxFyT8wznGMfjUSq22LjRbtcwR4Z1c 6P8A2p9ib7Fs83dvXdszjfszu25/ixj3q+eN7Gfs5W5rGjZeA9cnvbOCe3S2S4mSFpHlQ+SWG4b1 BypI6AgE8AcmpdWNilRk3qGpeC7+1khhtUlu55ruW0j8sRlHKdwyyE5xyQQAvPPBoVRPcHSa2K0f g3XZLsW8VksjtA1yrJPG0bRqcMQ4bacEjIBzT9pHcXspXtYzdZ0i90a5jg1GERvJEs0ZWRZFdG6M rKSCDg9DVKSlsTKLjoyhTJCgAoAKANu7/wCRL0r/ALCF5/6LtqlfE/67lv4F6v8AQ37b4ez3Xh/Q dTtrzzDqdylu0Qh/1AZmG8ndyPl9BUOrZtPoaKi3FNdRmt+ALmxv7y0sJpb94ZbeKN1iSNHaYfKC WkyPbAI9SKI1U1dhKi07LUpQeBtZGpWdte2kka3MzW4aB4piJFUkrjzAAeOjMKftI2uiVRlezRDa +CPEF1bwz29irRzxGaLNxErOgOCwUtnAyM+mRmm6kUJUpvZFa88LaxZ291PPaAQW0UU8kizRuvly HCMpDEMCQfu5pqaYnTktS4PAfiMuymwRSsiRHfdQqN7gFVyW6kEY9zjrS9rHuV7GfYz9Z8N6rosE c2pWnkxO5iDCRHw4GSrbSdpx2ODTjNS2JlTlHVm/B4LtHi0BJdXkivNZi326fZAY1bOArP5mRk4G Qp61HtHrpsWqS013MhfCGuNeWVqllme9aZLdfNQbzESJOp4xg9cZ7VfPG1yfZSvawDwjrRjsXFpH i9QSW6m4iDOpUtu27sgYBJJGBjnFHtIh7KWnmaFl4C1WW1v57pra2jtrUXSEzxssynptYNtxwfmz xx61LqroUqMmm2VbrwfqS6hJa2sEjCKGOaR7looVQP8Ady3mFRnt82T6CmqitdidKV7IbbeCvEFw ZglhsMVx9kcSzRx4lIBC/MwzkEYI4ORih1IrqJUpvoR+EreW08e6Nb3CGOeHU4Y5EPVWEoBH505u 8GwgrTSfcTwT4fHibxBDphuvsgkR3Mvl78bVJ6ZHp60TlyK4U4c8rG5P8PLi30LXNRnvCj6bcvbx w+Tk3AVlXcDu4B3Dsaj2qbS7lug0m+xjv4L15JbeJrOPfPP9mUC5iOJdu7y2w3ytjs2DVe0iR7KX YWPwjqaRzvfW00GyzlvFVTGzFY2CkspcFVyeuCfQHnB7RdA9lJbk8vgDxJCzrLYRIY2VX3XcI2Fv u7vn4z2z16Ue1iP2M+xQfwtrUZQSWLIXvf7OAZ1B+0f3OvuOenvT54k+zl28i5D4D8RzKDHp6nc8 sar9oiDM0bFXAG7JwQenpS9pHuUqM30MnWNGv9HeBdQhEfnp5kTJIsiOucZDKSD09apSUtiJRcdz qNW8DW9tqeraXZarLc6pp1v9peKS0EaSptVjsYOxyAw4IGazVTRNrRmroq7inqjCk8K6zHJOj2eG gtReyDzU+WE9G6/p19qvniR7OXYnn8Fa7b3b209rBHNGN0ga7hAjGQBvO/C53DAJGc8Zpe0juHsp J2LsXgLUhp09zeNHbyw3sdk1tvjMm5u4ywGeRgZ5zngc0vaq9kUqLtdlM+DNZlurqOzs3kSG4e2X zXjjeR0zlVXedzADkIW+pp+0j1J9lK+iGQ+DdemsY7uOxzDJE06Dzow7ov3iE3bjjuMZo9pG9rh7 Kdr2IdA/5BXiX/sHp/6VW9OW6/roKOz9P1Q3w/og1O31C8ubn7Lp9hGsk8oTzGyxwqquRlifUge9 EpWsgjDmu3sh50Jb27WLw9d/2inkGeVpI/sxgA+95hY7Bj1DEe9HNb4g5L/DqSP4P1yNLx5rNIUt HEczS3EUYViu4DLMM5BGMZznil7SI/ZS7GtqPw+vLK7ubY3McskMduxkjaLy1MrBcOTIGUAng7Tn rgDmpVVPUt0WnYXxD4Cn0yW4hsZrjUJYZ4rYmOKIKZHzheJSwPTqv1xxkjVvuEqLW2v9epkTeDtc hmSOSzQb1kbzBcRGNRGcPucNtXaeuSMVXtIkeyl2LQ8D6pFpms3d6YLVtNSJzE8yZkDngg7sYxkg /wAR4GTnB7RXSXUfspJNvoMuvBWrDVb20tLaR1tnSJnuHihy7qCq/wCsKljngKxPT6UKorXYOlK7 SIrLwXr97EkkFhw8jwqrzRozSJncgVmB3DB4xng+lDqRXUSpTfQqeHNDl1nUZbYyraxW8T3FzLIp PlRp9446k9seppylyq4oQ5nYlOi299NZweHbybUbq4LKbaS28mSPHOT8zJjGTndx3xRzNfEHInpF 3F/4RPWvtiWwtFLPAblZBPGYjEOr+bu2YHc5o547h7OV7WNPVfAWqWt3aW1ptuZJLGK8mZmSJITI xUIXZtp5GAc89hUqqmrst0ZJ2Ry17az2N3Na3cTQ3ELFHjYYKkdq0TvqjJpp2Z77+z3/AMiXe/8A YQf/ANFx1yYj4jtwvwP1PT6wOkKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoA+R/B+tjQNbS7kiM0DRvDNGDgtG4wcH17/hXoTjzKx5dOfJK5qaFrGheHNc0/UdNXU7ySKV /NNwscQETKVwqqWJYBs7twHHTniZRlJNMuMowaaNfR/G2l6LFp+m2kN7PpcQuBNLKipMfNGPlUMR wMd+faplTcrt7lxrRjZLYs2fjvR7HRrXSbeO9e2SxltXnmtYpGDs4ZWEbOVZeuVJ9OaTpNu4KtFL lRy+q+I4rvxjZ6qyTXlpavDtjuUjRnRCDtIjUKB1wOffNaKFo2M5VLzUjpPFHjbRdb8PXlpPDeXW osztbXlxaxBoVMgYRg7ycAcbhzjtURpyi7mk6sZRt1ObsdZ0+58LxaJrX2uJLa5NxBPaxrIcMMMj KzL6ZBz+FW4tS5kZqaceWRc0/XdCj0q60eaPVIdO+3x31vImySU7V2lX5QcjkEdCe+OU4yvcanFL l6XOhh+JNhJqdteXdpdKyahcXTLEqkbHgMSgZYZbpnoOv0qPZO1kae3V7vuZ3/Cd240O0SEXMGow acNOKJbQMkig4y0rAyBSOqDHPQjrT9m7+RPtlZd7EF94n0ObxZB4kji1M6gbuG4khIjEUaqBvAOS XJxx93GaahLl5ROpHm5+ppReP9Ls5rQW0F7NEt5dTSmSNY28ucfw4c/MCfxx2zxPsmy1XitirYeN NK03ShpVrHfS2ken3duk0karI00xBGVDEKox2JPtTdNt3ZKqxiuVdmc54t1q31iLQ1tkmQ2OnRWc nmADLqTkrgnjnvj6VcIuNzOc1K1uiOeqzMKACgAoA27v/kS9K/7CF5/6LtqlfE/67lv4F6v9Ds9A +IllpPh+2sPs1y80NhJErbV2i43lo2HzZ2gMcnr7GspUm3c2jXUY2Hn4g6Ub6ab7PfbXubCYDYmc QY3/AMXU44/XFHsn+Y/bxv8AcRaR490yzuY5JYL1guuT6mdqKT5TxsoH3vvZIyOnvTdJv7hRrRX3 3ILfxvp0UOnKYbzdbaTcWDEIvMj9CPm+769/ah03r6gq0dPQa3jLSbnRn0u6ivkhl0m1sXljjRmW WF2bIBYZU7uuQfaj2bTuu4vaxas+yNDWviFpN7IDb29+qjUrS8w6J/q4kVWH3uuRx29xSjSaKlXi /vOb8S+JbPVNEvbO3iuFlm1qfUVLqoAjcYAOCfm9unvVxg07+RlOopRsu9zRi8U6G0fhae4XUTc6 HEB5CwpsmcNuHz78qMgfwmlyS18y/aR92/Qv6L4+0pbrRL7V4b77bp0l45W3jRkk89ic5LgjG48Y /GpdJ6pdRxrR0cul/wATKt/Fmlf294eu7uznmttO0xLORWRWKyqGxIik4OCQRnH6CqcHZpdSVUjz JtbI1tR8faXe2M1nK2qSLLpn2J53hj3GQPuD7d+MHnjPHvUqk07lutFq3kVdX8aaTq8Oo2N1Hfw2 N3FagSxxo0iSRDBypcAqfrx6U1TcbNClVjK6exJqXxBsb8IWtbqPZrNveqAFbMEUapgnPLnbnHT3 oVJr7gdZP7zC06/i1T4q2d/bq6w3OsxzIHADANMCM4J55qmrQt5GafNUuu5S8D6zb6DrwvbxJXiE MseIgC2WQqOpHc05xclZCpTUJXZ2erfEnT9R0+WCWxuG820hR0KrteYSBpSTn7pCgA4z7Cs1RaZs 66atYTVvHHh/UILa1ZdWWzi1JL4RpDEnlxqhAiTa/Azjnrgn0FCpyWoSrRemu5V1Tx1peo3uoak9 reQ319pM2nyxrtaNXLLsZSWzjAOeOvQHJpqm0reZMqsW2+6sN1nxxpt7eeI5YoLxV1K4spYgyKCo hA3bvm6nHGM/hQqbVvK4Oqm352LU3jvRLy+eS7g1FIo9aTVofLjQswCBdjZcY5GcjNL2cktO1hut FvXvcafH+l/2xpF2IL3y7ObUpHGxckXDMUx83bcM/pmj2Ts16B7aN0/X8TkvEmtW2p6L4fs4EmWX T7ZoZS4ADEtn5cE8fXFaRi02+5lOakkl0Ok1fxlpDeIda13TBqD31/a/Zo4Z4ERIcoqFywdixwuQ No69ahU3ZRZo6seZyW7JZfHGjy2t5M8N+L+50hNOZBGnlqy/xBt+SDx24x3zwvZv8R+2jq+trEbe NdJl8UeItTaG9h+3iL7LcxxRtNBt27hgtgbgMZByOKfs3ypC9rHmcu5PqXjzSb+71B2jv445dTtt Rh/dIxIjRVZG+cY+7wRn8KSpNDdaLb9bjZPHOj3WoWl3dQagjadqVxe2qxKuJlkfeFf5htIOORu4 yKfs5JWXUPbRbTfRiwfECwN/pN1c290HtrS6hmWNFx5kpJG3LfdGe+DS9k7ND9urps47QP8AkFeJ f+wen/pVb1rLdf10MI7P0/VEvhvWLWz07V9M1JJjZalGgaSABnidG3IwBIDDOcjI+tKUW2mug4SS Ti+pr+HvEWi6DJfW9ml/Ja3tn5Es9xBDIwlzkMISdu3/AGSxz61MoSlqy4TjC6XUk8TeMrbVvD99 p6G9keS5heKSeOJP3aJtwRGABz0AB470RptO4TqqUWi9qHjjSrltVmSO+86/hs0KNEgVGhdS3O/k EDjgfSkqbVvmU60Xd97Fj/hY2nw6lqN5b2t05n1SK9jWRVH7tU2sCQxw3XHUUvZOyQ/bpNvzMnTd d8M6bq15eW8eqSTXUU4FxNBExtnc5RkjLYJAyCSwzngCqcZNWIU4Jtou+IvG2lavb65bgaiqX9na xJI8aMwkhYt83z9DnrnPJ4pRpuNhzqxldd7D9X8b6LrF5di7i1GG1/tGLUYGiRC7FYlRkcbgBnbw wJxnpQqclsN1Yyeve5L/AMLGsbjUNHvLq1uUe11Ge8mSJVI2OCFCksMkcZzil7JpNIft02mzktA1 +DTtd1Ke4hklsNQhmtp0QgSCOTuvbcMA1pKLaS7GMZpSbezL3h7WtC8PalDNZrqd0ssMsF3JKqRH Y4wPLQM2COOS/wCApSjKS1KhOMHdGla+M9KtdIi0GOO+bShYT2rXLRoJvMlcOWCb9u0EYxu79al0 23zdSlVily9C8/j3RjaDTo4b1bEWFrbCaW1hncNCzHmNyUIIbr2Pal7KW4/bRtbpocD4l1M6zrt5 fs8z+c+Q02zeQAAN2xVXOAOg/wAa2iuVWMJy5pXPcf2e/wDkS73/ALCD/wDouOuXEfEdmF+B+p6f WB0hQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAHxZXpHkBQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQAUAbd3/yJelf9hC8/9F21Svif9dy38C9X+hiVRAUAFABQAUAF ABQAUAFABQAUAFABQBt+CP8AkdNA/wCwhb/+jFqZ/Cy6fxr1MSqICgAoAKACgAoAKACgAoAKACgA oAKACgDb0D/kFeJf+wen/pVb1Mt1/XQuOz9P1RiVRAUAFABQAUAFABQAUAFABQAUAFABQAUAfQn7 Pf8AyJd7/wBhB/8A0XHXJiPiO7C/A/U9PrA6QoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgDw//AIVz4d/vav8A+BMf/wAarf6xI5vqsO7D/hXPh3+9q/8A4Ex//GqPrEg+ qw7sP+Fc+Hf72r/+BMf/AMao+sSD6rDuw/4Vz4d/vav/AOBMf/xqj6xIPqsO7D/hXPh3+9q//gTH /wDGqPrEg+qw7sP+Fc+Hf72r/wDgTH/8ao+sSD6rDuw/4Vz4d/vav/4Ex/8Axqj6xIPqsO7D/hXP h3+9q/8A4Ex//GqPrEg+qw7sP+Fc+Hf72r/+BMf/AMao+sSD6rDuw/4Vz4d/vav/AOBMf/xqj6xI PqsO7D/hXPh3+9q//gTH/wDGqPrEg+qw7sP+Fc+Hf72r/wDgTH/8ao+sSD6rDuw/4Vz4d/vav/4E x/8Axqj6xIPqsO7D/hXPh3+9q/8A4Ex//GqPrEg+qw7sP+Fc+Hf72r/+BMf/AMao+sSD6rDuw/4V z4d/vav/AOBMf/xqj6xIPqsO7D/hXPh3+9q//gTH/wDGqPrEg+qw7sP+Fc+Hf72r/wDgTH/8ao+s SD6rDuzUT4d6Dc6HbWxk1RYYbiaRcTx7tzrEDk+X0wi449fwXt5XuP6vG1iv/wAKs8O/89tX/wDA iP8A+N0/rEhfVYd2H/CrPDv/AD21f/wIj/8AjdH1iQfVYd2H/CrPDv8Az21f/wACI/8A43R9YkH1 WHdh/wAKs8O/89tX/wDAiP8A+N0fWJB9Vh3Yf8Ks8O/89tX/APAiP/43R9YkH1WHdh/wqzw7/wA9 tX/8CI//AI3R9YkH1WHdh/wqzw7/AM9tX/8AAiP/AON0fWJB9Vh3Yf8ACrPDv/PbV/8AwIj/APjd H1iQfVYd2H/CrPDv/PbV/wDwIj/+N0fWJB9Vh3Yf8Ks8O/8APbV//AiP/wCN0fWJB9Vh3Yf8Ks8O /wDPbV//AAIj/wDjdH1iQfVYd2H/AAqzw7/z21f/AMCI/wD43R9YkH1WHdh/wqzw7/z21f8A8CI/ /jdH1iQfVYd2WtK+HOg6bqdnfQS6o01rMk6B54ypZWBGcR9Mik68mrDWHincq/8ACrPDv/PbV/8A wIj/APjdP6xIX1WHdh/wqzw7/wA9tX/8CI//AI3R9YkH1WHdh/wqzw7/AM9tX/8AAiP/AON0fWJB 9Vh3Yf8ACrPDv/PbV/8AwIj/APjdH1iQfVYd2H/CrPDv/PbV/wDwIj/+N0fWJB9Vh3Yf8Ks8O/8A PbV//AiP/wCN0fWJB9Vh3Yf8Ks8O/wDPbV//AAIj/wDjdH1iQfVYd2H/AAqzw7/z21f/AMCI/wD4 3R9YkH1WHdh/wqzw7/z21f8A8CI//jdH1iQfVYd2H/CrPDv/AD21f/wIj/8AjdH1iQfVYd2H/CrP Dv8Az21f/wACI/8A43R9YkH1WHdh/wAKs8O/89tX/wDAiP8A+N0fWJB9Vh3Yf8Ks8O/89tX/APAi P/43R9YkH1WHdh/wqzw7/wA9tX/8CI//AI3R9YkH1WHdl2w+G2g29rqMUcuqFbmARSbp4yQoljfj 93wcoPXjP1pOvJjWHirlL/hVnh3/AJ7av/4ER/8Axun9YkL6rDuw/wCFWeHf+e2r/wDgRH/8bo+s SD6rDuw/4VZ4d/57av8A+BEf/wAbo+sSD6rDuw/4VZ4d/wCe2r/+BEf/AMbo+sSD6rDuw/4VZ4d/ 57av/wCBEf8A8bo+sSD6rDuw/wCFWeHf+e2r/wDgRH/8bo+sSD6rDuw/4VZ4d/57av8A+BEf/wAb o+sSD6rDuw/4VZ4d/wCe2r/+BEf/AMbo+sSD6rDuw/4VZ4d/57av/wCBEf8A8bo+sSD6rDuw/wCF WeHf+e2r/wDgRH/8bo+sSD6rDuw/4VZ4d/57av8A+BEf/wAbo+sSD6rDuw/4VZ4d/wCe2r/+BEf/ AMbo+sSD6rDuw/4VZ4d/57av/wCBEf8A8bo+sSD6rDuw/wCFWeHf+e2r/wDgRH/8bo+sSD6rDuzv /AGgWXhzR5rTTmuGhedpSZ3Vm3FVHUKOMKO1Zzm5u7NqdNU1ZHS1BYUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUAFABQB5V4i1ZNE0p72SMyAPHEFztG53CAs38KgsCT2GTQBU0 zW52hvW1mzjshawi4M8ExmtpIyGOUlKJkjacjAxkdiDQBnP4vm/4RZtSTTAuoLexWL2M9xt2SSTJ Gu5wrYGJFf7p4NAFiDxJd2897bazpqx3VvFHMsenTNeeYHYqo/1aMDuHcYA5zgHAAWHiHUtX8P6R qWi6PFMb+3FwRc3ghSEEAhSwRmLHPGFxwckcZAM1fHi3Oo6dZ2UWmxyXVtFcsuoaj9nb52dQkYEb +Y37tjwR29aAOp1fUk08WibRJcXc628MRbbuY5J59lVmPspoAx4/EWoXTyXOm6OLrR4pmgef7QVn co5R2ji2EMoIPJdScHA6ZALkvifS0vpbNZ2a5Tco/dOImkUEmMS7dhfg/LndweOKAK6eKI/+EM0z XpYFj+3w28iQtLhUaYLgM+OFG7lsdATjtQAllrmq6jpMNzpumafdSyOw3x6mrWpUAfMsqoWIOSB8 gOQc4GCQCxo/iAag9iJLZoBeQu6Etu/eI2106duoP8Qz0xyAblABQAUAFABQAUAatj/yD0/66v8A yWgCWgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCWH/Vz/ AO4P/QloAioAKACgAoAKACgAoAKACgAoAKACgAoAKANrRf8Aj1f/AHz/ACFAF+gAoAKACgAoAKAC gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDy3XLe8udOePTZoIrjcpxPHvjkUEbkYej DIyORnPPSgDkLXwbcv8A2ij22naRZ6iYUubPTJ32FUZmdw2xPncFUJCqQuTuJAwAGqeAt/222sHW XTb+azuLqHULiS4LvDOjOSX3Fg0S7cE4+RR0JIAOw0nR9M0eJ4tI06zsInbc6WsCxBj0yQoGTQBy MWgeI9P8F6BoVh/Z0q29ssF+TeSQGQKoG2NxExAPOTgHHTBOQAW9U0LU77Trmwi07RLKLULIWdxN BM4ltlAZQEPljzQA2VB8vac9c0AafiKylN1oN9AryjTrzfIgTezI8TxEjvkeYGJHYH1oAoQ6V4h0 +KfTNKmsU0+WaSSO+kkJuLYSOzsBF5ZRyCxCksOMZBxyAVB4W1NY20xXsv7JF/LqK3BkbzyzyNKI ym3aAGf7+48DG3vQBci8NXK+BdB0lzaSX2lx2Z+cFoXkgC5GcZAO04bGRkHBxigCleaL4mW2uTYH TlfUrw3N9D9skjEaeUkflwyiInkpkttB5OME5ABbNreRy6OBpVva/wBk200/kWsjPADsMcUSP5ak 5XJOF+XA4ORkA6u3d5LeJ5I/LdlBZM52nHIzQA+gAoAKACgAoA1bH/kHp/11f+S0AS0AFABQAUAF ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUASw/6uf/cH/oS0ARUAFABQ AUAFABQAUAFABQAUAFABQAUAFAG1ov8Ax6v/AL5/kKAL9ABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAUAFABQAUAFAHi/wARNRudL8Mtc2VzPaym7tYTLBCJZFR7iNH2IVbc21jgbTz0 FAHN6xrN1Y+F766sdd8SSyrc2cRkvtIELxJJcKjeUhtk8xipbja+DjgEjIAxfEV59h15tN1jVry2 s4VWS5vNPWGe2nLL8ix+Sm47G3YKHt1zigB1zrurWUM7Wd9rF3ZSCGD7XqmnrbSQTy3EUS7FMMe8 bXdjlSMqBnnFAF03OtDWh4f/ALcuMm6yL/yIftHk+QX2fc8vO8ddn3eMZ5oAhvfEmuJ4RtL21a2L R6l9hu7iQfOwW+W3+VANuWGSTkY7DngA67xLez2enxrZ5Fzczx20bjB8suwBfB4O0ZbHfFAGJbNr euHU7uw1drH7NczWtrbG2Ro3MZ2FpsguQWBI2MnBHWgCa48Vz29zPLLpyDSILuOwku/tH7zznZUy sW3lAzquSwPX5cckAjGu3kPw/k1V2829+dFby93zGUovyrjOMjjvigCLTTql7a3VpLruo2EttKsk z3ltam6SIqSMMmYcEjOShIAYEZ5AAuiatqw0/RLm/kM0VxdzWjOyKjTQln8icgDhiETIGB+8JwMA UAdlQAUAFAHm/wAefEuoeGvB0UmkzNBPdXHktMhwyKI3c7T2J2AZ6gE45wa1oxUpe92b+5XFLY5n xPZaj8PtV8MXNj4j1jUDd3S29xHe3BkjcF4lIA6AYLdctkjnrnSLjOE21stPvS/rqJ6NHt1cxQ2c wLp0TbIvPV3EuUUu2WJTgxuW4B6dh7cfn2aVJRxTw7pOU5OT2T0u7atrZfdovI9Gk9Lp6af8En0k N9oZo1YW5hXOY/L+fLE8bVzwQM4HQV6/DFLF0oVPrMeVN6dPwu/V6vtfSyxxTi7Wepq19UcgUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAEsP+rn/3B/6EtAEVABQA UAFABQAUAFABQAUAFABQAUAFABQBtaL/AMer/wC+f5CgC/QAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUAFABQAUAFABQB5V4i0iPXNMNlLcXFsPNinWaDbvR45FkUjcrL95R1BoAz5fDL 3do1tqeuapfxGaCdRMtuhRopVkXHlxLwSoBznjpjrQBPqXhu0v8AUJ7tpbiF7iBYJ0iZQsoVgyMw IPzLyAR2Yg54wAXta06LVtMnsp3kjSUDEkRAeNgQVZcgjIIBGQeRQBinwfGU8z+2NW/tL7T9q/tD dF5u7y/L27fL8vbt427Md+vNAFqTwxYv4di0YyXAtknjuTIGHmPIswmLMcYyzjJ47nGKALniDT31 HT/LgYJcxSx3ELMcDzEYMATg8HGD7E0AZ194Vhu5rtl1DUrS2vTuu7S3lURzEqFPJUumQBnYy56n mgBG8IWJvGcXF2ti00dy2nBl+zmVCpV8bdwwUU7QwXIzjOaAL8Wh2kehNpJMr2pDcs2H5YtkEYwQ Tx9BQBk33gxL21MdxrerNO8qSS3OLffMEB2I6+V5ZQZJxt68nNAFyXRbuRtMjn1Ke6itJXuGlnEa yyPtKopCRqu0bieADlV680AaulxXMOmWkV/OLi8SJFmmAA8xwBubAAAycngD6UAWaACgDx79p1d3 g7TRnH+mOfyt5jW+HV5v0l/6SyZbHjWt6vCfhfo9nDduNRtbmSUpuIePIhO7Pb5t2D6hu4NdFRJK Vv5Y/pf8SV09WfRvwWuJ7n4fWb3M0szrPcoGkcsdqzuFGT2AAA9hXPioqNeaWyb/ADKg7xR6RY2s HlLdGNTcFmj3nkhQAcD06np1/AVyexh7T2tveta/l/TNOZ25ehbrQkKACgAoAKACgAoAKACgAoAK AOHvLjVbX4n2yzX5lsJdJvJobKNCiKUktwC3J3v8zc8YBwB1JAMvwFLcpdeELuTUr64fXdFkvbyG 4upJUM2IH3orEiMDzXXamBhhxwKANJ9d1K08ReKLeDSNX1SGN4vLe2mgCQZgUkASyoRzz8oxz60A c/4f8ZaxH4Eh1RXgmtdE0mzm1D7UjyXF4zWsczlJN4Cna45YNubOcdaANpPGeoNZ6ZL5Npuutavt OcbWwIoBclCPm+8fITJ6cnAHGADMHjLxRF4d0bWLpdMS1v7OK+85dOuJIY96hvJkZHZo8D/lsVKj I+XjkA9RjdZEV0IZWAIIOQRQA6gAoAKACgAoAKACgAoAKACgCWH/AFc/+4P/AEJaAIqACgAoAKAC gAoAKACgAoAKACgAoAKACgDa0X/j1f8A3z/IUAX6ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACgAoAKAPHvHCxP4feOe+SxSSaFfNkBMbHzFxG+OiufkPI4agDkrK5k8Of8JDZ2 mlwWWpC3t/s9lpkqyWrySM6RuqbUMblvvA/LhQd3DGgDGvhNF4S1Hw7c6TLEsGp6fLa2mpSI3nQS 3cfyuyGRdvmCUHG7CkcdBQB0cHh7TtKgvrrxDpei6XpcvlR/2bp7tJDNICQCy7EDsxYKE2HOB14A AKtrocb6pomm61plqujXC311Hp0yq8VuwMXlJtxtyEMrYGQpLYOADQBg+VaXHhTWL+TZdajpuiwy aXNI3mSRjEvlvGSSQWZQNw5bAGTigD0bxTM7X/huxcqtve3+2cHPzbIZJVUY9WjXrwQCKAOesLLR J9Jv9b8Q4GrW15Ost6U/0m22zMI0jIBYDbt2qv3g3Q7uQBJNa1OW3k1GS/YLLqU+mHSzHHsVFd0D A7d+/aokPzYwT8vegCzo2pzaX8JvC8lrDcyTzadZwo0FrJcGLMK5kKRqzEAAnpgnAyM5oA5fQ9XW P4enTLdNcEE15qKTXiWFy8iRieRsZWMkO24DccY+fkMuKAOr8NTgQeCrm2WVftdgLWYOjISiRb1J BAPDKcH0c460AYHxBuYv+EqbV7hSul6EYEvJwM3Fu25Zg0A4wrghJGHUcAfKaAPVLeUT28UqgqJF DAHGRkZ7cUASUAecfHbw5qPiPwhEmkwmee2nMrRKMsyGJ4ztHcjeDjqQDjJ4O1CahO76pr701+pM ldHNa/rel6tompQ6X4D1KHxDqdvLbNIdMUNE0i7GcuOe+c9+M45xSpbc0lb1/QL+R6H8MtEufD3g yxsL/Au90s0iA52GSRn25HXG7Gfaor1FUqSmurbHFWSR31j/AMg9P+ur/wAlrIZLQAUAFABQAUAF ABQAUAFABQAUAU5NNtJNWg1J4s3sEMlvHJuPyo5RmGM45Mac4zx9aAM/RfCuj6Letd6fbSpOYzEp kuZZRFGW3FI1diI1JAO1ABwPQUAaMWn2sNxezxxYlvCGnbcfnIUKO/HAA4oAyB4L0FVskWydYrOG O3jiW4lEbxxgCNZFDYl2gcbw2KAD/hDNB/tL7f8AY38/z3ulH2mXy0ldWV3WPdsUsHbdgDJOTk4N ABP4N0OazsrVrSVLezt0tI0iupY90CjCxvtYeYmP4X3A856mgDoVUKoVQAoGAB2oAWgAoAKACgAo AKACgAoAKACgCWH/AFc/+4P/AEJaAIqACgAoAKACgAoAKACgAoAKACgAoAKACgDa0X/j1f8A3z/I UAX6ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAPNr37P9km+2+V9l 2nzPOxs2992eMfWgDC0ubwjZaOt5pUmg2+lRTZE9s0KQpKflzuX5Q3zY9ecd6ANLURpBvbSPUhYG 8mOLZbjZ5khQiT5AeTtKq3HQgHtQBTubrwz4jsLlLqfRtVsrRt06yPFPHCwB5bOQpAz196AK1jpH g3UdCIsNP8PXWirK0+IYIXtxIBgvwNu4AYJ64oA1JdG0e9ks7qXTdPuJLZR9lmaBHMS9RsbHA+lA FbxBf6Imn20+q6tZ2VuZlkguZLlIwXU5G1mODwCCO4JoAsto+kXeow6s+nWE1+qgxXhgRpAMcbXx nGD2PegBIrHRp9WubyG10+TU4x9nnnWNDMoKg7Hb7wypU4PYigAsNS0ZIZrXT7zT1i09RHLDBKgW 2UDAVlB+QADocdKAG6Te6Hc2K/2RdabNZTyui/ZZEaOSRss4G3gsfmY9zyTQBPHpdtHfw3SJtMEH 2aCMABIkJBO0AcZ2qPooxjnIAXWj6Zd30N7d6dZz3kIIinlgVpEB67WIyPwoAtwRRwQpFBGkcSKF REUBVA6AAdBQA+gAoAKACgDVsf8AkHp/11f+S0AS0AFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQAUAFABQAUASw/6uf/AHB/6EtAEVABQAUAFABQAUAFABQAUAFABQAUAFAB QBtaL/x6v/vn+QoAv0AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAe PeOEtn8Pv9ta6SBZoXMtvHvMTLIrK7L3QMAW4Py5zxQB5vrzQ65aanBPcabrFvc3ekwyajYBlinU 3YXy2XeyF1Gcsp6MAQMCgCtqf2/VrzRJ5w5v9Nnl0aNmhKFp1s7kyuvqrERYxx8vU9gDT1e/sdQs Y7jRLq1ksbKwtRftEQViRLqFmR8dCI1myp5Azkc0AbFxFpPiPTfGdxavHd6ZJh/Mt5D5U8qW4BO5 eHA+UHkjK88igDa16a6t/hjeTWDSLdR6UzRtGu5wRF1Udz6CgCibvSfD3ima41e4t7LT5NOt4NPu LmRUhCqZN8ak8BsFCR3GOuOADFvtQs1ndJ7m/wBC0lbESaRGs7WzTTmWUNhVb94SBEViOflcfL1A ANfwS17M3jBpl2ai9xCXUcYlNjb5H/fVAGJoGq6bpmnWsmq3kGo6ZZ6Pm+aa2j3afIhh2wbQu8Fi SdjktuQUAXP7Ss9V0HxDq9lqGnXF9LJbyxW9pcpKbdlYCAOUYjzGYHpx/CM7ckA9KoAKACgAoAKA CgAoA1bH/kHp/wBdX/ktAEtABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFAEsP8Aq5/9wf8AoS0ARUAFABQAUAFABQAUAFABQAUAFABQAUAFAG1ov/Hq/wDvn+Qo Av0AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAcL9hu/8An1n/AO/Z oAPsN3/z6z/9+zQAfYbv/n1n/wC/ZoAPsN3/AM+s/wD37NAB9hu/+fWf/v2aAENhdMCDaTkHggxn /CgCKz0iWytYra2s50giUIi7GO1R0HNAE32G7/59Z/8Av2aAD7Dd/wDPrP8A9+zQAfYbv/n1n/79 mgCC60aS6MP2iynfyZBKgKNgMM4JHfGc898HqBQBP9hu/wDn1n/79mgA+w3f/PrP/wB+zQAfYbv/ AJ9Z/wDv2aAD7Dd/8+s//fs0AH2G7/59Z/8Av2aAD7Dd/wDPrP8A9+zQAfYbv/n1n/79mgDSs7Wd bFVaCUN5jHBQ5xhaAJPs0/8Azxk/75NAB9mn/wCeMn/fJoAPs0//ADxk/wC+TQAfZp/+eMn/AHya AD7NP/zxk/75NAB9mn/54yf98mgA+zT/APPGT/vk0AH2af8A54yf98mgA+zT/wDPGT/vk0AH2af/ AJ4yf98mgA+zT/8APGT/AL5NAB9mn/54yf8AfJoAPs0//PGT/vk0AH2af/njJ/3yaAD7NP8A88ZP ++TQAfZp/wDnjJ/3yaAD7NP/AM8ZP++TQAfZp/8AnjJ/3yaAD7NP/wA8ZP8Avk0AH2af/njJ/wB8 mgA+zT/88ZP++TQAfZp/+eMn/fJoAPs0/wDzxk/75NAB9mn/AOeMn/fJoAPs0/8Azxk/75NAB9mn /wCeMn/fJoAPs0//ADxk/wC+TQAfZp/+eMn/AHyaAHpFJHFOXjdRsAyVI/iFAFegAoAzp9d0m31a LS59UsItTlAMdo9wizODnBCE7j0PbtQBfkdY42eRlRFBZmY4AA7k0AYdh4x8M6jeRWmn+ItGurqU 4jhgvondzjPChsmgC7pmu6TqtxcW+l6pYXs9ucTR29wkjRHJGGCkkcg9fSgAs9c0m+vLi0stUsLi 6t+ZoYrhHeL/AHlByPxoAP7b0n+x/wC1v7Tsf7Kxu+2/aE8nGdud+dvXjr1oAcdY0waommnUbP8A tF081bXz181k/vBM5I98UAJYa1pWo3dxa6fqdjdXVtxNDBcI7xdvmUHK/jQBYv7210+0kur+5gtb WIZeaeQIiD1LHgUAULnxNoNrp1vqFzrelw2FwcQ3Ml3GsUh9FYnB6HoaANK1uIbu2iuLWWOe3mQS RyxsGV1IyGBHBBHORQBLQBtaL/x6v/vn+QoAv0AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAeeUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBBf3ltp9nNd308dvbQqXk lkYKqgdyaAOS0/4n+EdQ1COzt9WHnSP5amSGRF3ZwAWZQASTxnGe1aOjOKba2/rUV0dpWYy5DeLD YfMh2JMQZGkRF3FVO35mHOBmvNxOaUsPNwcW7b2t2vbVrp2NoUXNXv8AmPtr6K4kCIRlgSuJEcHG M8qT03Dr60YLNaOMm6cE00r2dtvk2FSjKmrst16RiFABQAUAFABQAUAFABQAUAFABQBLaf8AH1D/ AL6/zoAioAKACgAoAKACgAoAKACgAoAKACgAoAKAJYf9XP8A7g/9CWgCKgAoA8007VND03R9R0fX lWbW5L24lfTdym7vGMztE0akgsCuzawICgYJXacAHpQOQDjHsaAOSix/a3jTMNxOPLizFb482T9x 91MkDcegyRz3oA4d5JNRs5NP8O6tput3sWlXNrZyQReTeacTDgLNsbb8zIowUQhsYBxwAdVYaz4V vYNIs9GiiuLq1iYQwWyBX09fKYHzV4MQx8u1hkkjg44APJxbyD4RN4c8tvsJ0L+38+Sdmz7J9zd0 3faf3nr7d6APQNNmNrrnkTajFLqEmqiX+yJIouYCFUXPK+Z8qAYcMF+XbjNAGj4U1vw54g8TWZ0C /wBIjtNNglt7O0tpohLKDt3MIlOUjUKMDAz1wABkA3fHc8NpaaXd3skcVhb6hFJcyS8IiYYBmJ4A DFDk9MUAcWLjTpdRXUX8Vroeny3t5JY3EUcWy43CEEpLKrR53CTAwWYMSpwDQB6N4Yury98O6dc6 nF5V7LAjyptK4Yjn5TyPp2oA1KANrRf+PV/98/yFAF+gAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAKACgDzHVNQh0y28+5S6dNwXFtbSXD5P+zGrNj3xigDIsfGei32m/b7aW 9NoQhjkbT7hPO3Z2iIMgMhOOiZNAFpPEukNpst+bwR28UghkEsbxyJIcYjMbAOHO5cKRk5GBzQBW n8aaDbaZPf3d69rbwSJFN9pt5YniZzhdyMoZQfUjHfOKAL19r2mWOs6dpN1dCPUNQWRraLYx3iNd znIGBgc8kZ7UAVI/FujPa3NwLmVYoEEhL20ql1JwrRgrmQEkAFNwJIxnIoAv6Nq9lrNvJNYSSMIp DFIksTxSRuADtZHAZTgg8gcEHoaAILzxFpdpB5s1ySDM1uixxvI8ki53KiKCzkYOdoPQ+hoAtaVq dpqtqbixlLxhijBkZHRh1VlYBlYehANAEgvbc6g9iJP9KWITFMHhCSAc9OqmgCg3iPS01T+z3uWS 4JZQzQusTMoJZBKRsLAAkqGyADxwaAIrTxXo91FPJHcypHDH5zNNbSxAx5x5i71G5OR8y5HvQBuA 5GR0oAKACgDz/wCOgz8PbkHoZ4SR64cEfqBXXgUnXjf+tCKnws8w8eeIdK1z4PaR/YkUkA065WzY MgTB+xStlcHocKfXjnmjDpwqNP8All/6S2EtV8/1PdvCXiCx8S6LFqGlyvLAfkLOhU5AHY+xB/Gu aUHB2l/Vyk7m8v2hbTyoFkYTys4ZHaMRsqoMsQQSMH7o54/EfKZvlOKxOJh9XnaMneWidrJLr5dP V67HZSqxUfe6FeO4t7fW7GyvtQhbUnileCBdxdkyN7HczHHTkkeldGUZBDLa066m5Slvol+Vvy73 uRVr865UiTTvE2lajqb2FpPK1wu/G63kRJNhw2yRlCvg8HaTivoTnIdS8W6TpuoTWdy18ZoArTND p9xNHEGGQXkRCi8c8kYHWgDbgmjuII5oJFkhkUOjochlIyCD3FAElABQAUAFABQAUAFABQAUAS2n /H1D/vr/ADoAztW1K10mya6vpGSIMFASNpGZicBVRQWYk9AATQAzS9Ws9TsnurORzEjFZBJE8bxs OSrIwDKcEcEA8igDJ/4Tnw4fBx8VDU0/sEf8vXlv/f2Y2bd2d3GMZoA6NGDorKcqwyD7UAR3dxFa Ws1zcuI4IUaSRz0VQMk/kKAIbLUbW+muIrWXfJblBKNpG3codeo5ypB4oAuUAFABQAUAFABQAUAF AEsP+rn/ANwf+hLQBFQAUAFAHPp4T05btbkXOt+YH8zB1q8KZzn7hl249sY7YxQB0FABQAUAFABQ BV1Oxi1Kze1uHuUjfBLW9xJA/Bzw8bKw/A80AU9H0Cz0iZ5bWbU5GddpF3qVzdLjOeFlkYA+4GaA NagAoAKANrRf+PV/98/yFAF+gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgDzygDznSbGW3+GXhKHUNM1AvaRQtKbcOt1ZMImHmLGFLMQTtK4zhjwehAI4LfUGFtqvlajf 2tjqi3JeexEF3dReQ8RZowqFihcEEqGIXgHjIBf8QN/wk8CpDo10LFru0R557Z4pJl8w7wY3UOEU Enc2B8xwMckA5o6Lruo6jpdze2lyl5DLNpqzFTgRx2VwgmPZQ8shwe42ewoAtXNneNp0H9nwa29p ZSWVxew3iTs5lhuYmYQq4+YBFfiIbDhcZoA7DwgZLm+8Q6itrcW1veXiNB9ohaF5AsEaFyjgMvzK QMgEhQehFAHO6FHc6bZeEtUuorq7WysriwvhbRtO8c7NHvkKr8zfPE6nAJ+YcYzQBPrTLqt5Z3up 6BcP4b8yXzoHsnmkuHKRiKaS3Cl8DDqAVJHykgdgCfwHY6la6oX1GGdFNjtiMgPyR/aZmjjJ/vLG YwR1FAGfoNheaPqkEaLrBvF1G8nvMec1o9rI88ikA/uyxLR/c/ebuDxmgC7perWmrXV5rOrWmpWU kVhKiQXmnzwrbwHDSbpHQIXYquQGIAXjPJIB03g6G7t/CWiw6mSb6OyhScscneEAbPvnNAGvQAUA ec/HskeBAASAbuMH34auzAf7xH5/kyKnws8lf4e+MIfC0uiwaZBJZNcC++3G4UIVFs0YO37wG1s9 M5GMEfNUqrFPnW9rW+Vvy/H7ws9j1T9nn/knUP8A11/9px0Yv44/4Y/+koIbfeew2P8AyD0/66v/ ACWuUs57UdMRfG2j39vZAOy3H2i4SLk/IoXe2PbAz6UAYXhlbiS88OaebTUYptIM/wBrlntZI4m+ VkXbIQFfcWDfKT05xQBf/tZNG8V6/wDabDVpjc+Q0H2bTp5kkxHgjzFQovPHzMMd8CgDzvxho2px eFxZr4dWXXLXS42tbhLOa8aKQbnKQOoCQspwM5BbA+VsAUAddd2bz+LL7QYY5/7PgSTW/wDRSqOH mVkWMAn7xk86UE4GdvPFAE/wrsW0+71aOGw8mzZYiLj+zptPMjjdkNC52s4GMyoAG4644APQ6ACg AoAKACgAoAKAJbT/AI+of99f50AYnifV20PSJL2OwvL+QMqLBaQtK5LEDJCgnaM5JAJwDgE4BAMv wgkMmjancRC8e8vJnmunuLGa1LylFXCJKisVCqig4P3eTnNAHlI8N62Ph2dC/svUfsp0H+0tnlf8 vX2PyPsuzG7dv/e7cZ3d+1AHU3GmTnVJ/K0q8HihtStpbfUmtmKLZh4i6ifBVU8sSKYsglsnac5I BUi8JFfDunJFozi6utEvYLwNCcyOQhiWXPUhs7Q3TnGOaAJE8M20ttf6lZ6HLDdQT6adPb7G8MsK KIN/lqVDIOGDAAcAg8CgDR8FaY1h45u5ILG4KyeeZ7i40+W2mTLggSTA+VdZP3SASg4yOcgHptAB QAUAFABQAUAFAEsP+rn/ANwf+hLQBFQAUAFABQAUAFABQAUAFABQAUAFABQAUAbWi/8AHq/++f5C gC/QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQB55QAUAFABQAUAFA BQAyKKOIuYo0Te29tqgbm9T6mgB9ABQAUAMmijmjMcyJIhxlXGQcc9KAH0AFABQBjeLvD9r4n0G4 0u9aSOOQqyyRn5kZTkEevI6dxV05unJSjuhNXVji4fBfjWLRF0ZfGUIsVi8gSfYgZBHjG3Oc9OM7 s+/etOela/Lr66f5/iKz7nZeDvDlp4V0GDS7FpJEQlmkk+87HqT6egHYACspzc5czGlbQ7Cx/wCQ en/XV/5LUjJaACgAoAKAK9tZWtrLcS2ttBDJcP5kzxxhTK+ANzEdTgAZPpQBYoAKACgAoAKACgAo AKAJbT/j6h/31/nQBFQAUAFABQAUAFABQAUAFABQAUAFABQAUASw/wCrn/3B/wChLQBFQAUAFABQ AUAFABQAUAFABQAUAFABQAUAbWi/8er/AO+f5CgC/QAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFABQBwv2eL/n8g/J//AImgA+zxf8/kH5P/APE0AH2eL/n8g/J//iaAD7PF /wA/kH5P/wDE0AH2eL/n8g/J/wD4mgA+zxf8/kH5P/8AE0AH2eL/AJ/IPyf/AOJoAPs8X/P5B+T/ APxNAB9ni/5/IPyf/wCJoAPs8X/P5B+T/wDxNAB9ni/5/IPyf/4mgA+zxf8AP5B+T/8AxNAB9ni/ 5/IPyf8A+JoAPs8X/P5B+T//ABNAB9ni/wCfyD8n/wDiaAD7PF/z+Qfk/wD8TQAfZ4v+fyD8n/8A iaAD7PF/z+Qfk/8A8TQBpWcSCxUC4iI8xuQGx0X2oAk8pP8AnvH+Tf4UAHlJ/wA94/yb/CgA8pP+ e8f5N/hQAeUn/PeP8m/woAPKT/nvH+Tf4UAHlJ/z3j/Jv8KADyk/57x/k3+FAB5Sf894/wAm/wAK ADyk/wCe8f5N/hQAeUn/AD3j/Jv8KADyk/57x/k3+FAB5Sf894/yb/CgA8pP+e8f5N/hQBJbRqLm IiaM/OOAG55+lAEflJ/z3j/Jv8KADyk/57x/k3+FAB5Sf894/wAm/wAKADyk/wCe8f5N/hQAeUn/ AD3j/Jv8KADyk/57x/k3+FAB5Sf894/yb/CgA8pP+e8f5N/hQAeUn/PeP8m/woAPKT/nvH+Tf4UA HlJ/z3j/ACb/AAoAPKT/AJ7x/k3+FAB5Sf8APeP8m/woAPKT/nvH+Tf4UAPRFWKciRH+QcAH+8PU UAV6ACgAoAKACgAoAKACgAoAKACgAoAKACgDa0X/AI9X/wB8/wAhQBfoAKACgAoAKACgAoAKACgA oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA88oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA 4m6+Kfg+11B7OTVg0qNsZo4JHQHv8wUggdyDgdzWiozeyFdHZW08V1bxT20iSwSqHSRDlWUjIIPc VmM1beXy7BQELkPI5wyrhQEySWIGBkVx4rGwwtlJNt32tst3q0uqNIU3MhTU4HbAK4yASs0b4yQB wrE9SB071xUs8w9SrGk4tNuyva1/k3/XkaSw0oq/+f8AkX69k5woAKACgAoAKACgAoAKACgAoAKA JbT/AI+of99f50ARUAFABQAUAFABQAUAFABQAUAFABQAUAFAEsP+rn/3B/6EtAEVABQAUAFABQAU AFABQAUAFABQAUAFABQBtaL/AMer/wC+f5CgC/QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAFABQB5jqkl/HbbtKtrW5uNw+S5uGgTHc7lRzn2x+NAHJad401C48M6drF3pVj bJqZiWyX+0GZcurN++cwgRgAdRuySAOSMgGjJ4mube2WO70l01SS6Wzgt45t0VwzJ5m+OUhcoFDE naCNjDBOMgFXXfFup6Fo1zdah4fL3UMkKiG1uvMjmV2xmORkUlhg5UqO3POaAJNY8awaf4p0fSUt xPBfQyTzXQlwLdRFJIh24+bcIpO4xt70AGk+Kr7VbS6ksNNsbqaPZ5cVtqaPsLH7s/ygxMAcsAH4 BxuPBANTw3rE2qNqNve2iWt9p9wLedIpjNGSY0kUq5VSRtdeqgg5HuQCi3imS4FlHpdit1d3zTNa o9wERoYyAZnYAlVJK4wGPzLx1wAWR4jWzs9+u2k1ldCUwiCBHujKQobdEEXc64PXaMYOQMUAT6fr sGoar9ltAssBtEu0nVuGDOy7cY4xt/pjigDK07xiuo6+9hYw2dxEjzRkJfILpTEzIzGBgP3e9SoY MTkjjGSACRPEepQ3EttqWjJFdm0e9gigu/OLojKGViUUK/zjABYHn5u9AHR2lxFd2sNzbuJIZkEi OOjKRkH8qAJaACgDB8fTSW3gTxHPA5jmi025dHXqrCJiCPxoA8R8KanocnwU8R6VbiH+2obe6u5l 8rBG2TCMGxglR5XTpla6a6lGq5rTV2+X+WhMbNWPTvgvrWnX3gyx060u4pbyxi2zwr1jBdtv4cY4 9MVOJjy1ZWWl2EXdHpaO8GnpPEkkjb5ISkfDFX8vODkYIx1+vTqPnc8wdfEUObDO01otL7tX/LfW yvodNCSTtLb/ACOak1OdvE9voM8NwUuVMrzsJCkZTa4QO7EM3IyVGPXnivLwnC3JWp4mtVblHyS/ Jfnfr11NZYlWaiizo3ie6vtRtEuNNht9PvzKLK4W63vJsyfnj2ALlQSMM3A5xX15xi3eua22tahZ 6Ro1jdwWIj8x5tQaGRyy7sInlMp49XHPp1oAD460KO1tJ7ie4iW4hSdsWssgt1c4HnMilYucjLkD g88UAacniHS4rb7RNdCOL7Q9rl0ZcSJu3DBGcAIxz0wM5xzQAmh+IdN1x7hNOmlaW32mSOaCSBwr Z2ttkVSVODhgMHBweDQBrUAFABQAUAFABQAUAS2n/H1D/vr/ADoAztWnvLeyZ9NslvbosFSJ5hEv J6s2DgDqcAn0BoAoaDrcmo2uo/arVbe90+dre4ijlMke8Ir/ACOVXcNrrztHORjigDkB8UVPwrPi /wDsdvtQH/IN+0jOcb/v7enlfvPu5x2oA61PFWkNqQ083LC6yiPiGQxJIwBEbS7dgcgghCwbkcci gChN4+0L+zru5tJp7lobSS9SNbaVfOROG2EphsEgHGduRnFAEVh8QNLn1F7S7W4tCWgWN5LebaTM iFRISgERLPtAcjJ6elAGxpvibSdS1N9Ps7l2uVDsA8EiLKEYK5jdlCyBSQCUJwSM0AbNABQAUAFA BQAUAFAEsP8Aq5/9wf8AoS0ARUAFABQAUAFABQAUAFABQAUAFABQAUAFAG1ov/Hq/wDvn+QoAv0A FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAeeUAchpnh/VdN8DaHpMM ljNdWEMcVxBMN1vdAIVKFipZRkhgwXOVGQRkUAU7LwheW1ok9nBpenXlvfC9tLG3Z2tYj5bRuudq n51dskIACQcHByAaF1pWu6sIn1R7CFUureVbOFzLGixvuc+YUVmZhxjaAMfU0AYlt8P7sNZrdXkE sUN1MCecpaG1kt4Y145YBwTk4yWwegoA0RpHiWCAzWMejwX9vaCxtgJ38p03KTI37v5GAX5UwwBJ 5NAG34Ws7uz014L+0tbaQuWLQXbXBlLcs7s0cfzE57f4AA5/SNB1Cx03QZNNjh/tHRIZNNMd4WjS 4g+UZDqDgny42DbW7jGegBbm0nxC99aay8lhPqVuZUSxaVo7eOKQIColCFiwMYO4pzkjCigCTwj4 ZuNDv3nmmilEsDB9uRiV7iWZ8DH3QZcDnPFAFa08MX9nc2sFutj9hs7+41KKZnbzpHl84+WV24UA y437iSq4280ALpEHiHT4L+91vTtOudQkgO6ayu3leRx9yJI2iUImSf4jjOTnJNAHQ+GNM/sXw3pW ll/MNlaxW5f+9sQLn9KANKgAoA534j/8k88Uf9gu6/8ARLUAfLvhWG/sNO1d20y+mg1m1u7K2kgi Lgs8sQzx6GJ8jr045r0KyVS8W7WlK/o7f5GcdNfI9G/Zutbmy8TeI7e+ge3uUgj8yJ/vITLKcH35 rHFS53GXe/8A6UxwVtD6Tsf+Qen/AF1f+S1ylmdqGnTXOv6TfI0YitFmEgJO471AGOPagDC0Hw/q trfaXDfLp66bpBlNrJBM7SzbgVXehQBMKxzhmyfSgCeez8RWfiHVbnSbXSZra+8oiW5vJI3iKptJ 8tYmDeuN656cdaAOX8T+AfEF94am0Cw1OOSxbT1tkea6kgxKAdzNHGnzh2OTlgB/dYcEA110e41H xzq0qQbdMityyrdWzeVJfSJ5bMN2N6CJVB24B3tyTnABf8D6DqWjXF6140dvZyBRDZQ3013GjAks 6mVQYwcgeWuVGOvNAHXUAFABQAUAFABQAUAS2n/H1D/vr/OgDE8TrrL6RIvhs2Y1FmUK127Iirkb iCFb5sZxkEZwSDjBAK/hqwvLTQ5bS8sbOzly2Bb3b3PmFhkyO7RodxYkng/XsADgf+FY6n/wj39n fatPx/YP2Py9rY/tD7N9n87fjOzy/l6bsflQB0Fz4U1acT6W0lj/AGPPqEGotcB3FwhjkjkMQTbt ILR/f3DAONvGSAKPB182h6TYvPbK9rpl3YysCxG+VVCleOQMHOcUAPXwvqk+maolybKK6vZrKULH KzovkiLeNxQE/wCrbHHcZxQBJ4c8Oalpviae7K2tnYOZGeO0vJnjuWYja32dxshI6kox3GgDtKAC gAoAKACgAoAKAJYf9XP/ALg/9CWgCKgAoAKACgAoAKACgAoAKACgAoAKACgAoA2tF/49X/3z/IUA X6ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAPPKACgAoAKACgAoAK ACgAoAKACgAoAKACgAoAo67pyavomoabMxSO8t5LdmHUB1Kk/rQB5X4Tk8b+B9JbQ4/CSarFFNI0 NzHeiNSHbceNrEjcx67Tjj3roqclSTmpWv3v+lyVdKxvfCzwvq+m6lrev+I1jh1HVnDfZkYN5S7m fBI4zl8YBPCjkkmpqzjKyjslb9f1Glbc9Zsf+Qen/XV/5LWIyWgAoAKACgAoAKACgAoAKACgAoAK ACgCW0/4+of99f50ARUAFABQAUAFABQAUAFABQAUAFABQAUAFAEsP+rn/wBwf+hLQBFQAUAFABQA UAFABQAUAFABQAUAFABQAUAbWi/8er/75/kKAL9ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFAGN/wjtp/z0n/AO+h/hQAf8I7af8APSf/AL6H+FAB/wAI7af89J/++h/h QAf8I7af89J/++h/hQAf8I7af89J/wDvof4UAH/CO2n/AD0n/wC+h/hQAf8ACO2n/PSf/vof4UAH /CO2n/PSf/vof4UAH/CO2n/PSf8A76H+FAB/wjtp/wA9J/8Avof4UAH/AAjtp/z0n/76H+FAB/wj tp/z0n/76H+FAB/wjtp/z0n/AO+h/hQAf8I7af8APSf/AL6H+FAB/wAI7af89J/++h/hQAf8I7af 89J/++h/hQAf8I7af89J/wDvof4UAH/CO2n/AD0n/wC+h/hQBYi0iCKERK8u0MW5Izkge3tQA7+y oP78n5j/AAoAP7Kg/vyfmP8ACgA/sqD+/J+Y/wAKAD+yoP78n5j/AAoAP7Kg/vyfmP8ACgA/sqD+ /J+Y/wAKAD+yoP78n5j/AAoAP7Kg/vyfmP8ACgA/sqD+/J+Y/wAKAD+yoP78n5j/AAoAP7Kg/vyf mP8ACgA/sqD+/J+Y/wAKAD+yoP78n5j/AAoAWPTYY5FcNJlSCMkf4UAJ/ZUH9+T8x/hQAf2VB/fk /Mf4UAH9lQf35PzH+FAB/ZUH9+T8x/hQAf2VB/fk/Mf4UAH9lQf35PzH+FAB/ZUH9+T8x/hQAf2V B/fk/Mf4UAH9lQf35PzH+FAB/ZUH9+T8x/hQAf2VB/fk/Mf4UAH9lQf35PzH+FAB/ZUH9+T8x/hQ Af2VB/fk/Mf4UAKumwqrgNJ8wweR6g+ntQAn9lQf35PzH+FAB/ZUH9+T8x/hQAf2VB/fk/Mf4UAH 9lQf35PzH+FAB/ZUH9+T8x/hQAf2VB/fk/Mf4UAH9lQf35PzH+FAB/ZUH9+T8x/hQAf2VB/fk/Mf 4UAH9lQf35PzH+FAB/ZUH9+T8x/hQAf2VB/fk/Mf4UAH9lQf35PzH+FAB/ZUH9+T8x/hQBZtbdLa MohYgnPNAE1ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQB/9kKZW5kc3RyZWFtCmVuZG9iago2NSAwIG9iago8PC9SOQo5IDAgUi9SMjEKMjEgMCBSL1Ix MgoxMiAwIFI+PgplbmRvYmoKNzAgMCBvYmoKPDwvUjcKNyAwIFI+PgplbmRvYmoKNzEgMCBvYmoK PDwvUjY5CjY5IDAgUi9SMTAKMTAgMCBSPj4KZW5kb2JqCjY5IDAgb2JqCjw8L1N1YnR5cGUvSW1h Z2UKL0NvbG9yU3BhY2UvRGV2aWNlUkdCCi9XaWR0aCA3MDIKL0hlaWdodCA1MDgKL0JpdHNQZXJD b21wb25lbnQgOAovRmlsdGVyL0ZsYXRlRGVjb2RlCi9EZWNvZGVQYXJtczw8L1ByZWRpY3RvciAx NQovQ29sdW1ucyA3MDIKL0NvbG9ycyAzPj4vTGVuZ3RoIDMyNDQ3Pj5zdHJlYW0KeJzsnQdgFcX6 tzcRCL333qR3AelIkSZwlYCggEizgKiIFy/lr3I/yhUFFESki4iIFBEQFClSAiIISjX0UEMPvajk e3NeGIfZPZudJHtyzsnvUeM5e7bMzuzO++zs7GzI3bt3DQAAAAAAZ4RAHQAAAADgHKgDAAAAADSA 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 Ng3VQReqgwZUhxCF6mAUJjbTMMKmoTroQnXQgOoQolAdjMLEZhpG2DRUB12oDhpQHUIUqoNRmNhM wwibhuqgC9VBA6pDiEJ1MAoTm2kYYdNQHXShOhBCCCFEA6oDIYQQQjSgOhBCCCFEA6oDIYQQQjSg OhBCCCFEA6oDIYQQQjSgOhBCCCFEA6oDIYQQQjSgOhBCCCFEA6oDIYQQQjSgOhBCCCFEA6oDIYQQ QjSgOhBCCCFEA6oDIYQQQjSgOhBCCCFEA6oDIYQQQjSgOhBCCCFEA6oDIYQQQjSgOhBCCCFEA6oD IYQQQjSgOhBCCCFEA6oDIYQQQjSgOhBCCCFEA6oDIYQQQjSgOhBCCCFEA6oDIYQQQjSgOhBCCCFE A6oDIYQQQjSgOhBCCCFEA6oDIYQQQjSgOhBCCCFEA6oDIYQQQjSgOhBCCCFEA6oDIYQQQjSgOhBC CCFEA6oDIYQQQjSgOhBCCCFEA6oDIYQQQjSgOhBCCCFEA6oDIYQQQjSgOhBCCCFEA6oDIYQQQjT4 f8EWXf8KZW5kc3RyZWFtCmVuZG9iago3MiAwIG9iago8PC9SOQo5IDAgUi9SMjEKMjEgMCBSL1Ix MgoxMiAwIFI+PgplbmRvYmoKNzggMCBvYmoKPDwvUjcKNyAwIFI+PgplbmRvYmoKNzkgMCBvYmoK PDwvUjEwCjEwIDAgUj4+CmVuZG9iago4MCAwIG9iago8PC9SOQo5IDAgUi9SNzcKNzcgMCBSL1Iy MQoyMSAwIFIvUjEyCjEyIDAgUj4+CmVuZG9iago4NCAwIG9iago8PC9SNwo3IDAgUj4+CmVuZG9i ago4NSAwIG9iago8PC9SMTAKMTAgMCBSPj4KZW5kb2JqCjg2IDAgb2JqCjw8L1I5CjkgMCBSL1Iy MQoyMSAwIFIvUjEyCjEyIDAgUj4+CmVuZG9iago5NCAwIG9iago8PC9SNwo3IDAgUj4+CmVuZG9i ago5NSAwIG9iago8PC9SMTAKMTAgMCBSPj4KZW5kb2JqCjk2IDAgb2JqCjw8L1I5MQo5MSAwIFIv UjkzCjkzIDAgUi9SOQo5IDAgUi9SNzcKNzcgMCBSL1IyMQoyMSAwIFIvUjEyCjEyIDAgUj4+CmVu ZG9iago5NyAwIG9iago8PC9MZW5ndGgxIDUzMjgvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA5 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 sdhz7YzVYndkMphGZmc/ZizF6dkyxYSAEVRBJ209ZTlr+auFsSwxO99CqgT+XCoQ1VhdFHbFXcSF MGZZzmduMuEeE6Y/LIibhk2nTSMm3hTLOrAzbQNQqUhDq/wjMXCFQDiOnUv9bAOqzmGDLYIAjKAA qCcvf9um0s9QZvEa5G+gE8rk92oB6uNUggicgGe++25ZnmeyIdfbU1fUnP+DCesKbUH2pfG3p479 W8vkYF7HorK2RWS5x7pieiD9HwdN+i+E9ViDu8kyZj5zlt3PdXBn+E+EZ/7noFj2fx4yFtOgOqn5 uTZJg34hDYbphunGi+bSS8HS+l34LnwXvgvfhe/Cd+G78F34LnwXvgv/N4PsF5H0/45jph/iwQHP RNRFRogJzL5+xqxp0xfUNZpNRofFabXZM7PQ/zcPi2bJMUv357w1mYQY05j+A3VEf1MdQLPR9WgG 0E1D09ECVIcaYRdNyIgcyIKcyIpsyI4yUWrTMOCJ/M/ZeaRBaO7c+tKyCZW1EyauLy6W/4k77qP/ Ecl/8VFcXTyPzievQqT/xyM+grMuAR36/xgiiIFFzwQ4D1AAMAdABOgAaAaYBbAF4Pr/CnDz0cz/ F8Dcg2ZcAphHHaSzyDOo8TJEUPQKuIYC0KkB6v8jQF36zvwvHixzChqIHzzWpot+qXCkDu6nv3e9 TNOjvzmc9836sd16pNBCUXnp3P4HQEe8kwplbmRzdHJlYW0KZW5kb2JqCjEwOCAwIG9iagoxMzg3 MgplbmRvYmoKOTEgMCBvYmoKPDwvQmFzZUZvbnQvT0ROTURHK1RURTIzNzhFMDB0MDAvRm9udERl c2NyaXB0b3IgOTAgMCBSL1R5cGUvRm9udAovRmlyc3RDaGFyIDEvTGFzdENoYXIgMS9XaWR0aHNb IDQ2MF0KL0VuY29kaW5nIDEwOSAwIFIvU3VidHlwZS9UcnVlVHlwZT4+CmVuZG9iagoxMDkgMCBv YmoKPDwvVHlwZS9FbmNvZGluZy9CYXNlRW5jb2RpbmcvV2luQW5zaUVuY29kaW5nL0RpZmZlcmVu Y2VzWwoxL2J1bGxldF0+PgplbmRvYmoKOTMgMCBvYmoKPDwvQmFzZUZvbnQvT0ROTURHK1RURTIz NzVENzB0MDAvRm9udERlc2NyaXB0b3IgOTIgMCBSL1R5cGUvRm9udAovRmlyc3RDaGFyIDEvTGFz dENoYXIgMS9XaWR0aHNbIDYwMF0KL0VuY29kaW5nIDExMCAwIFIvU3VidHlwZS9UcnVlVHlwZT4+ CmVuZG9iagoxMTAgMCBvYmoKPDwvVHlwZS9FbmNvZGluZy9CYXNlRW5jb2RpbmcvV2luQW5zaUVu Y29kaW5nL0RpZmZlcmVuY2VzWwoxL29dPj4KZW5kb2JqCjkgMCBvYmoKPDwvQmFzZUZvbnQvTEJQ UUNSK1RURTIzNkM2NTh0MDAvRm9udERlc2NyaXB0b3IgOCAwIFIvVHlwZS9Gb250Ci9GaXJzdENo YXIgMS9MYXN0Q2hhciA3My9XaWR0aHNbIDI3OCA2NjcgNjY3IDY2NyA1NTYgNTAwIDU1NiA1NTYg ODMzIDUwMCAyNzggNTU2IDMzMyA1MDAgMjc4CjUwMCAyMjIgMjIyIDUwMCA1NTYgNTU2IDYxMSA1 NTYgNTAwIDU1NiA1NTYgNTU2IDI3OCA2MTEgMjc4IDgzMwo1NTYgNTAwIDY2NyAyNzggOTQ0IDU1 NiA1NTYgNzIyIDMzMyA1MDAgNzIyIDU1NiAzMzMgMzMzIDI3OCA3NzgKNTU2IDU1NiA4ODkgNzIy IDcyMiAyMjIgMjIyIDI3OCA2NjcgNzIyIDc3OCAyNzggNTU2IDcyMiA1NTYgNzIyCjU1NiA1NTYg NTU2IDU1NiA2NjcgNjY3IDU1NiAxMDE1IDU4NCA2NjddCi9FbmNvZGluZyAxMTEgMCBSL1N1YnR5 cGUvVHJ1ZVR5cGU+PgplbmRvYmoKMTExIDAgb2JqCjw8L1R5cGUvRW5jb2RpbmcvQmFzZUVuY29k aW5nL1dpbkFuc2lFbmNvZGluZy9EaWZmZXJlbmNlc1sKMS9zcGFjZS9TL0EvUC9lL2MvYS9kL20v eS9mL28vci9zL3Qvay9pL2wvdi9wL24vRi91L0ovdHdvL3plcm8vZWlnaHQvY29tbWEvVC9wZXJp b2QvTS9oL3ovRS9JL1cvZy9iL3cvaHlwaGVuL3gvQy9ML3BhcmVubGVmdC9wYXJlbnJpZ2h0L2Nv bG9uL1EvcS9maXZlL3BlcmNlbnQvSC9OL3F1b3RlcmlnaHQvai9leGNsYW0vQi9EL08vc2xhc2gv Zm91ci9SL2VuZGFzaC9VL25pbmUvc2V2ZW4vdGhyZWUvc2l4L2FtcGVyc2FuZC9WL29uZS9hdC9h c2NpaXRpbGRlL1ldPj4KZW5kb2JqCjc3IDAgb2JqCjw8L0Jhc2VGb250L01VSE9TWStUVEUyMzc2 QzAwdDAwL0ZvbnREZXNjcmlwdG9yIDc2IDAgUi9UeXBlL0ZvbnQKL0ZpcnN0Q2hhciAxL0xhc3RD aGFyIDIvV2lkdGhzWyAzMzMgMzMzXQovRW5jb2RpbmcgMTEyIDAgUi9TdWJ0eXBlL1RydWVUeXBl Pj4KZW5kb2JqCjExMiAwIG9iago8PC9UeXBlL0VuY29kaW5nL0Jhc2VFbmNvZGluZy9XaW5BbnNp RW5jb2RpbmcvRGlmZmVyZW5jZXNbCjEvcXVvdGVsZWZ0L3F1b3RlcmlnaHRdPj4KZW5kb2JqCjIx IDAgb2JqCjw8L0Jhc2VGb250L1FSR0hJWStUVEUyMzc0RjkwdDAwL0ZvbnREZXNjcmlwdG9yIDIw IDAgUi9UeXBlL0ZvbnQKL0ZpcnN0Q2hhciAxL0xhc3RDaGFyIDU5L1dpZHRoc1sgNzIyIDI3OCA3 MjIgMzg5IDI3OCA1NTYgMzMzIDcyMiA1NTYgMzMzIDYxMSA1NTYgODMzIDYxMSA1NTYKNTU2IDYx MSA4ODkgNTU2IDYxMSA2MTEgNjY3IDY2NyA2MTEgMjc4IDc3OCA2MTEgNjExIDU1NiAyNzggNjEx CjYxMSAyNzggMjc4IDY2NyA1NTYgMjc4IDYxMSAyNzggNzIyIDcyMiA3MjIgMzMzIDMzMyA3MjIg NTU2IDU1Ngo1NTYgNTU2IDU1NiA1NTYgNTU2IDk0NCAzMzMgNjExIDY2NyA4ODkgNzIyIDcyMl0K L0VuY29kaW5nIDExMyAwIFIvU3VidHlwZS9UcnVlVHlwZT4+CmVuZG9iagoxMTMgMCBvYmoKPDwv VHlwZS9FbmNvZGluZy9CYXNlRW5jb2RpbmcvV2luQW5zaUVuY29kaW5nL0RpZmZlcmVuY2VzWwox L0Evc3BhY2UvQi9yL2kvZS9mL0gvcy90L28veS9NL24vYy9hL2QvbS9rL2cvdS9TL1AvcC9sL3cv cS9oL3YvcGVyaW9kL1QvYi9xdW90ZXJpZ2h0L2ovRS94L2NvbW1hL0YvSS9hbXBlcnNhbmQvQy9E L3BhcmVubGVmdC9wYXJlbnJpZ2h0L04vZml2ZS96ZXJvL3R3by91bmRlcnNjb3JlL29uZQo1My9X L2h5cGhlbi9ML1YvcGVyY2VudC9SL0tdPj4KZW5kb2JqCjEyIDAgb2JqCjw8L0Jhc2VGb250L1ZS UUdPQytUVEUyMzc2Qzc4dDAwL0ZvbnREZXNjcmlwdG9yIDExIDAgUi9UeXBlL0ZvbnQKL0ZpcnN0 Q2hhciAxL0xhc3RDaGFyIDIyL1dpZHRoc1sgMjUwIDY2NyA1MDAgNTAwIDMzMyAyNzggNTAwIDQ0 NCAyNzggNDQ0IDI3OCA1MDAgNTAwIDI3OCA1MDAKNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAw XQovRW5jb2RpbmcgMTE0IDAgUi9TdWJ0eXBlL1RydWVUeXBlPj4KZW5kb2JqCjExNCAwIG9iago8 PC9UeXBlL0VuY29kaW5nL0Jhc2VFbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRGlmZmVyZW5jZXNb CjEvc3BhY2UvQy9vL24vZi9pL2QvZS90L2EvbC9vbmUvemVyby9zbGFzaC9zaXgvdHdvL2VpZ2h0 L3RocmVlL2ZvdXIvZml2ZS9zZXZlbi9uaW5lXT4+CmVuZG9iago5MCAwIG9iago8PC9UeXBlL0Zv bnREZXNjcmlwdG9yL0ZvbnROYW1lL09ETk1ERytUVEUyMzc4RTAwdDAwL0ZvbnRCQm94WzUwIDAg NTUwIDYyNV0vRmxhZ3MgNAovQXNjZW50IDYyNQovQ2FwSGVpZ2h0IDYyNQovRGVzY2VudCAwCi9J dGFsaWNBbmdsZSAwCi9TdGVtViA4MgovTWlzc2luZ1dpZHRoIDYwMAovRm9udEZpbGUyIDk3IDAg Uj4+CmVuZG9iago5MiAwIG9iago8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL09ETk1E RytUVEUyMzc1RDcwdDAwL0ZvbnRCQm94WzUwIC0xNiA1NTAgNjI1XS9GbGFncyA0Ci9Bc2NlbnQg NjI1Ci9DYXBIZWlnaHQgNjI1Ci9EZXNjZW50IC0xNgovSXRhbGljQW5nbGUgMAovU3RlbVYgODIK L01pc3NpbmdXaWR0aCA2MDAKL0ZvbnRGaWxlMiA5OSAwIFI+PgplbmRvYmoKOCAwIG9iago8PC9U eXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0xCUFFDUitUVEUyMzZDNjU4dDAwL0ZvbnRCQm94 Wy00NSAtMjEwIDk3OSA3MjldL0ZsYWdzIDQKL0FzY2VudCA3MjkKL0NhcEhlaWdodCA3MjkKL0Rl c2NlbnQgLTIxMAovSXRhbGljQW5nbGUgMAovU3RlbVYgMTQ2Ci9NaXNzaW5nV2lkdGggNzUwCi9G b250RmlsZTIgMTAxIDAgUj4+CmVuZG9iago3NiAwIG9iago8PC9UeXBlL0ZvbnREZXNjcmlwdG9y L0ZvbnROYW1lL01VSE9TWStUVEUyMzc2QzAwdDAwL0ZvbnRCQm94Wzc0IDAgNjM4IDY3N10vRmxh Z3MgNAovQXNjZW50IDY3NwovQ2FwSGVpZ2h0IDY3NwovRGVzY2VudCAwCi9JdGFsaWNBbmdsZSAw Ci9TdGVtViA5NQovTWlzc2luZ1dpZHRoIDc3NwovRm9udEZpbGUyIDEwMyAwIFI+PgplbmRvYmoK MjAgMCBvYmoKPDwvVHlwZS9Gb250RGVzY3JpcHRvci9Gb250TmFtZS9RUkdISVkrVFRFMjM3NEY5 MHQwMC9Gb250QkJveFstNDUgLTIxMCA5NDIgNzI4XS9GbGFncyA0Ci9Bc2NlbnQgNzI4Ci9DYXBI ZWlnaHQgNzI4Ci9EZXNjZW50IC0yMTAKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDE0MQovTWlzc2lu Z1dpZHRoIDc1MAovRm9udEZpbGUyIDEwNSAwIFI+PgplbmRvYmoKMTEgMCBvYmoKPDwvVHlwZS9G b250RGVzY3JpcHRvci9Gb250TmFtZS9WUlFHT0MrVFRFMjM3NkM3OHQwMC9Gb250QkJveFswIC0x NSA2MzggNjk0XS9GbGFncyA0Ci9Bc2NlbnQgNjk0Ci9DYXBIZWlnaHQgNjk0Ci9EZXNjZW50IC0x NQovSXRhbGljQW5nbGUgMAovU3RlbVYgOTUKL01pc3NpbmdXaWR0aCA3NzcKL0ZvbnRGaWxlMiAx MDcgMCBSPj4KZW5kb2JqCjIgMCBvYmoKPDwvUHJvZHVjZXIoR1BMIEdob3N0c2NyaXB0IDguMTUp Ci9DcmVhdGlvbkRhdGUoRDoyMDA4MTAxNjE3MzM0MykKL01vZERhdGUoRDoyMDA4MTAxNjE3MzM0 MykKL1RpdGxlKE1pY3Jvc29mdCBXb3JkIC0gTWFzdGVyIHByb3Bvc2FsLWVBY2FkZW15XzIwMDgu ZG9jKQovQ3JlYXRvcihQU2NyaXB0NS5kbGwgVmVyc2lvbiA1LjIpCi9BdXRob3IodXNlcik+PmVu ZG9iagp4cmVmCjAgMTE1CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAzMDAzOCAwMDAwMCBuIAow MDAwNjU1NTczIDAwMDAwIG4gCjAwMDAwMjk5MDggMDAwMDAgbiAKMDAwMDAyNzkyOCAwMDAwMCBu IAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDcwODUgMDAwMDAgbiAKMDAwMDAzMDA4NiAwMDAw MCBuIAowMDAwNjU0NzQ3IDAwMDAwIG4gCjAwMDA2NTIyMjggMDAwMDAgbiAKMDAwMDA5MDg1MiAw MDAwMCBuIAowMDAwNjU1MzY4IDAwMDAwIG4gCjAwMDA2NTM5MzggMDAwMDAgbiAKMDAwMDAzMDIw MCAwMDAwMCBuIAowMDAwMDMwMTI3IDAwMDAwIG4gCjAwMDAwMzAxNTcgMDAwMDAgbiAKMDAwMDA5 MzQwOCAwMDAwMCBuIAowMDAwMDI4MTExIDAwMDAwIG4gCjAwMDAwMDcxMDUgMDAwMDAgbiAKMDAw MDAxMTg1MCAwMDAwMCBuIAowMDAwNjU1MTU4IDAwMDAwIG4gCjAwMDA2NTMyNzUgMDAwMDAgbiAK MDAwMDA5MzQ0OSAwMDAwMCBuIAowMDAwMDkzNDc5IDAwMDAwIG4gCjAwMDAwOTM1MTEgMDAwMDAg biAKMDAwMDAyODI4OCAwMDAwMCBuIAowMDAwMDExODcxIDAwMDAwIG4gCjAwMDAwMTM4OTggMDAw MDAgbiAKMDAwMDA5MzYzNiAwMDAwMCBuIAowMDAwMDkzNTYzIDAwMDAwIG4gCjAwMDAwOTM1OTMg MDAwMDAgbiAKMDAwMDE0NzQxNiAwMDAwMCBuIAowMDAwMDI4NDY1IDAwMDAwIG4gCjAwMDAwMTM5 MTkgMDAwMDAgbiAKMDAwMDAxNTYwNSAwMDAwMCBuIAowMDAwMTU4ODUwIDAwMDAwIG4gCjAwMDAx NDc0NTcgMDAwMDAgbiAKMDAwMDE0OTE3NiAwMDAwMCBuIAowMDAwMTQ5MDYwIDAwMDAwIG4gCjAw MDAxNDkwOTIgMDAwMDAgbiAKMDAwMDE0OTEyMiAwMDAwMCBuIAowMDAwMTg3ODY3IDAwMDAwIG4g CjAwMDAwMjg2NjkgMDAwMDAgbiAKMDAwMDAxNTYyNiAwMDAwMCBuIAowMDAwMDE2OTU5IDAwMDAw IG4gCjAwMDAyNjIxNzIgMDAwMDAgbiAKMDAwMDE4ODAwMyAwMDAwMCBuIAowMDAwMTg3OTE5IDAw MDAwIG4gCjAwMDAxODc5NDkgMDAwMDAgbiAKMDAwMDI5NzMzNSAwMDAwMCBuIAowMDAwMDI4ODQ2 IDAwMDAwIG4gCjAwMDAwMTY5ODAgMDAwMDAgbiAKMDAwMDAxNzU4MiAwMDAwMCBuIAowMDAwMzY3 MjkzIDAwMDAwIG4gCjAwMDAyOTc0NzEgMDAwMDAgbiAKMDAwMDI5NzM4NyAwMDAwMCBuIAowMDAw Mjk3NDE3IDAwMDAwIG4gCjAwMDA0MjgwMzAgMDAwMDAgbiAKMDAwMDAyOTAyMyAwMDAwMCBuIAow MDAwMDE3NjAyIDAwMDAwIG4gCjAwMDAwMTg1MjIgMDAwMDAgbiAKMDAwMDQ4NjI1MiAwMDAwMCBu IAowMDAwNDI4MTU1IDAwMDAwIG4gCjAwMDA0MjgwNzEgMDAwMDAgbiAKMDAwMDQyODEwMSAwMDAw MCBuIAowMDAwNTQ2NzY3IDAwMDAwIG4gCjAwMDAwMjkyMDAgMDAwMDAgbiAKMDAwMDAxODU0MiAw MDAwMCBuIAowMDAwMDE5NTA4IDAwMDAwIG4gCjAwMDA1NDY4OTIgMDAwMDAgbiAKMDAwMDU0Njgx OSAwMDAwMCBuIAowMDAwNTQ2ODQ5IDAwMDAwIG4gCjAwMDA1Nzk1NDIgMDAwMDAgbiAKMDAwMDAy OTM3NyAwMDAwMCBuIAowMDAwMDE5NTI4IDAwMDAwIG4gCjAwMDAwMjIwNjMgMDAwMDAgbiAKMDAw MDY1NDk1NiAwMDAwMCBuIAowMDAwNjUzMDE0IDAwMDAwIG4gCjAwMDA1Nzk1OTQgMDAwMDAgbiAK MDAwMDU3OTYyNCAwMDAwMCBuIAowMDAwNTc5NjU2IDAwMDAwIG4gCjAwMDAwMjk1NTQgMDAwMDAg biAKMDAwMDAyMjA4NCAwMDAwMCBuIAowMDAwMDI1MjQyIDAwMDAwIG4gCjAwMDA1Nzk3MTkgMDAw MDAgbiAKMDAwMDU3OTc0OSAwMDAwMCBuIAowMDAwNTc5NzgxIDAwMDAwIG4gCjAwMDAwMjk3MzEg MDAwMDAgbiAKMDAwMDAyNTI2MyAwMDAwMCBuIAowMDAwMDI3OTA3IDAwMDAwIG4gCjAwMDA2NTQz NDEgMDAwMDAgbiAKMDAwMDY1MTc0NyAwMDAwMCBuIAowMDAwNjU0NTQyIDAwMDAwIG4gCjAwMDA2 NTE5OTAgMDAwMDAgbiAKMDAwMDU3OTgzMyAwMDAwMCBuIAowMDAwNTc5ODYzIDAwMDAwIG4gCjAw MDA1Nzk4OTUgMDAwMDAgbiAKMDAwMDU3OTk4MCAwMDAwMCBuIAowMDAwNTgyOTcwIDAwMDAwIG4g CjAwMDA1ODI5OTEgMDAwMDAgbiAKMDAwMDU4Nzg5NiAwMDAwMCBuIAowMDAwNTg3OTE4IDAwMDAw IG4gCjAwMDA2MTI1MDcgMDAwMDAgbiAKMDAwMDYxMjUzMCAwMDAwMCBuIAowMDAwNjE4NzY2IDAw MDAwIG4gCjAwMDA2MTg3ODggMDAwMDAgbiAKMDAwMDYzNzc0MiAwMDAwMCBuIAowMDAwNjM3NzY1 IDAwMDAwIG4gCjAwMDA2NTE3MjQgMDAwMDAgbiAKMDAwMDY1MTkwMiAwMDAwMCBuIAowMDAwNjUy MTQ1IDAwMDAwIG4gCjAwMDA2NTI2NzEgMDAwMDAgbiAKMDAwMDY1MzE3MyAwMDAwMCBuIAowMDAw NjUzNjYzIDAwMDAwIG4gCjAwMDA2NTQxNzggMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSAxMTUg L1Jvb3QgMSAwIFIgL0luZm8gMiAwIFIKL0lEIFsoqL6ZoY9Vb1OCH0Y9ypDgQCkoqL6ZoY9Vb1OC H0Y9ypDgQCldCj4+CnN0YXJ0eHJlZgo2NTU3OTAKJSVFT0YK --=_3d7e59c074e4dc3e3001bb0c19da8f27-- From sandeen@sandeen.net Sat Dec 13 01:07:36 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=AWL,BAYES_00,WEIRD_QUOTING 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 mBD77aij013696 for ; Sat, 13 Dec 2008 01:07:36 -0600 X-ASG-Debug-ID: 1229152054-247d01f40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F2190172A608 for ; Fri, 12 Dec 2008 23:07:34 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id JfeAi3WDGyejC6pB for ; Fri, 12 Dec 2008 23:07: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 sandeen.net (Postfix) with ESMTP id A11A0A883C2 for ; Sat, 13 Dec 2008 01:07:32 -0600 (CST) Message-ID: <49435F35.40109@sandeen.net> Date: Sat, 13 Dec 2008 01:07:33 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] fix corruption case for block size < page size Subject: [PATCH] fix corruption case for block size < page size 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: 1229152054 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: 0.97 X-Barracuda-Spam-Status: No, SCORE=0.97 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_MJ615, WEIRD_QUOTING X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.12600 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 2.80 WEIRD_QUOTING BODY: Weird repeated double-quotation marks 0.20 BSF_SC0_MJ615 Custom Rule MJ615 On a 4k page system and 512-byte blocksize, this: xfs_io \ -c "pwrite -S 0x11 -b 4096 0 4096" \ -c "mmap -r 0 512" -c "mread 0 512" -c "munmap" \ -c "truncate 256" \ -c "truncate 513" \ -c "pwrite -S 0x22 -b 512 2048 512" \ -t -d -f testfile leads to this in the resulting file: # 00000000 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 |................| # * # 00000100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| # * # 00000400 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 |................| <- BAD # * # 00000800 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 |""""""""""""""""| # * # 00000a00 laid out like this: EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL 0: [0..4]: 63..67 0 (63..67) 5 which is wrong. :) The 2nd series of 1's should be a hole; it is stale data left over from the original write which gets re- mapped in xfs_page_state convert; this is largely because on the previous truncate down, discard_buffer() leaves the discarded bh uptodate - due to page vs. bh uptodate rules, I think. This all got turned up by xfsqa 091 on ppc with 64k pages & 4k blocks; see also http://oss.sgi.com/bugzilla/show_bug.cgi?id=801. This would hit 64k page ia64 as well. This could probably use a bit more investigation; why for example is the mmap read needed above; but the below fixes the problem for me, by recognizing an uptodate but not dirty or mapped buffer at this stage as a hole. At any rate it certainly doesn't need to be written (not dirty)... I previously submitted an xfsqa testcase for this too. I've run it through qa but more soak time would probably be good. Signed-off-by: Eric Sandeen --- Index: xfs/fs/xfs/linux-2.6/xfs_aops.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_aops.c +++ xfs/fs/xfs/linux-2.6/xfs_aops.c @@ -1042,6 +1042,13 @@ xfs_page_state_convert( continue; } + /* This means its a hole (discard_buffer leaves uptodate set) */ + if (!buffer_dirty(bh) && !buffer_mapped(bh) && + buffer_uptodate(bh)) { + iomap_valid = 0; + continue; + } + if (iomap_valid) iomap_valid = xfs_iomap_valid(&iomap, offset); From stefanr@s5r6.in-berlin.de Sat Dec 13 05:44:14 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,RCVD_IN_BRBL 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 mBDBiEUo026076 for ; Sat, 13 Dec 2008 05:44:14 -0600 X-ASG-Debug-ID: 1229168651-51dc02fe0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from einhorn.in-berlin.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 536621AB82 for ; Sat, 13 Dec 2008 03:44:11 -0800 (PST) Received: from einhorn.in-berlin.de (einhorn.in-berlin.de [192.109.42.8]) by cuda.sgi.com with ESMTP id BauBR6dq9ws9OSDp for ; Sat, 13 Dec 2008 03:44:11 -0800 (PST) X-Envelope-From: stefanr@s5r6.in-berlin.de Received: from [192.168.0.42] ([83.221.231.7]) (authenticated bits=0) by einhorn.in-berlin.de (8.13.6/8.13.6/Debian-1) with ESMTP id mBDBhrN6026926 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Sat, 13 Dec 2008 12:43:53 +0100 Message-ID: <49439FF9.50202@s5r6.in-berlin.de> Date: Sat, 13 Dec 2008 12:43:53 +0100 From: Stefan Richter User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.18) Gecko/20081116 SeaMonkey/1.1.13 MIME-Version: 1.0 To: Justin Piszcz CC: Pavel Machek , smartmontools-support@lists.sourceforge.net, smartmontools-database-owner@lists.sourceforge.net, linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org, xfs@oss.sgi.com, Alan Piszcz X-ASG-Orig-Subj: Re: Intel X25-E running Linux using XFS Subject: Re: Intel X25-E running Linux using XFS References: <20081212185803.GE11974@elf.ucw.cz> In-Reply-To: X-Enigmail-Version: 0.95.7 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang_at_IN-Berlin_e.V. on 192.109.42.8 X-Barracuda-Connect: einhorn.in-berlin.de[192.109.42.8] X-Barracuda-Start-Time: 1229168652 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.12616 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Justin Piszcz wrote: > On Fri, 12 Dec 2008, Pavel Machek wrote: >> Actually I'd like to know... how does it behave during powerfails >> while it is being written to? >> >> Flashes I seen (USB / SD) developed bad sectors in that case, and >> ext2/ext3 can't handle that. (And I don't think xfs can handle that >> either). > > I have a UPS for all of my machines, so that will not be a problem in my > case. UPSs fail too. ... > With barriers, presumably it would be safe There are other opinions: http://lwn.net/Articles/309576/ (Magnetic disks are discussed there.) -- Stefan Richter -=====-==--- ==-- -==-= http://arcgraph.de/sr/ From jpiszcz@lucidpixels.com Sat Dec 13 06:54:49 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_12, J_CHICKENPOX_13 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 mBDCsnhP029368 for ; Sat, 13 Dec 2008 06:54:49 -0600 X-ASG-Debug-ID: 1229172886-38dc01cd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9F30B1ABEF for ; Sat, 13 Dec 2008 04:54:46 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id RyNWL1jBQSiVtEDh for ; Sat, 13 Dec 2008 04:54:46 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id BE50910050218; Sat, 13 Dec 2008 07:54:45 -0500 (EST) Date: Sat, 13 Dec 2008 07:54:45 -0500 (EST) From: Justin Piszcz To: Eric Sandeen cc: linux-raid@vger.kernel.org, xfs@oss.sgi.com, Alan Piszcz X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] In-Reply-To: <493A9BE7.3090001@sandeen.net> Message-ID: References: <493A9BE7.3090001@sandeen.net> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1229172886 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.12622 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, 6 Dec 2008, Eric Sandeen wrote: > Justin Piszcz wrote: >> Someone should write a document with XFS and barrier support, if I recall, >> in the past, they never worked right on raid1 or raid5 devices, but it >> appears now they they work on RAID1, which slows down performance ~12 times!! > >> There is some mention of it here: >> http://oss.sgi.com/projects/xfs/faq.html#wcache_persistent >> >> But basically I believe it should be noted in the kernel logs, FAQ or somewhere >> because just through the process of upgrading the kernel, not changing fstab >> or any other part of the system, performance can drop 12x just because the >> newer kernels implement barriers. > > Perhaps: > > printk(KERN_ALERT "XFS is now looking after your metadata very > carefully; if you prefer the old, fast, dangerous way, mount with -o > nobarrier\n"); > > :) > > Really, this just gets xfs on md raid1 in line with how it behaves on > most other devices. > > But I agree, some documentation/education is probably in order; if you > choose to disable write caches or you have faith in the battery backup > of your write cache, turning off barriers would be a good idea. Justin, > it might be interesting to do some tests with: > > barrier, write cache enabled > nobarrier, write cache enabled > nobarrier, write cache disabled > > a 12x hit does hurt though... If you're really motivated, try the same > scenarios on ext3 and ext4 to see what the barrier hit is on those as well. > > -Eric > No, I have not forgotten about this I have just been quite busy, I will test this now, as before, I did not use sync because I was in a hurry and did not have the ability to test, I am using a different machine/hw type but the setup is the same, md/raid1 etc. Since I will only be measuring barriers, per esandeen@ I have changed the mount options from what I typically use to the defaults. Here is the /etc/fstab entry: /dev/md2 / xfs defaults 0 1 And the nobarrier entry: /dev/md2 / xfs defaults,nobarrier 0 1 Stop cron and make sure nothing else is using the disk I/O, done: # /etc/init.d/cron stop Stopping periodic command scheduler: crond. The benchmark: # /usr/bin/time bash -c 'tar xf linux-2.6.27.8.tar; sync' # echo 1 > /proc/sys/vm/drop_caches # (between tests) == The tests == KEY: barriers = "b" write_cache = "w" SUMMARY: b=on,w=on: 1:19.53 elapsed @ 2% CPU [BENCH_1] b=on,w=off: 1:23.59 elapsed @ 2% CPU [BENCH_2] b=off,w=on: 0:21.35 elapsed @ 9% CPU [BENCH_3] b=off,w=off: 0:42.90 elapsed @ 4% CPU [BENCH_4] So it depends on your settings as far as how slow barriers affect the I/O. Scheduler used: CFQ. [ 0.168390] io scheduler cfq registered (default) The raw details: BENCH_1 # /usr/bin/time bash -c 'tar xf linux-2.6.27.8.tar; sync' 0.16user 1.85system 1:19.53elapsed 2%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+970minor)pagefaults 0swaps BENCH_2 (turn off write-cache) # hdparm -W0 /dev/sda /dev/sda: setting drive write-caching to 0 (off) write-caching = 0 (off) # hdparm -W0 /dev/sdb /dev/sdb: setting drive write-caching to 0 (off) write-caching = 0 (off) # # /usr/bin/time bash -c 'tar xf linux-2.6.27.8.tar; sync' 0.16user 1.86system 1:23.59elapsed 2%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (14major+953minor)pagefaults 0swaps BENCH_3 (barriers=off; write_cache=on) # /usr/bin/time bash -c 'tar xf linux-2.6.27.8.tar; sync' 0.18user 1.86system 0:21.35elapsed 9%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (14major+952minor)pagefaults 0swaps BENCH_4 (turn off write-cache) # hdparm -W0 /dev/sda /dev/sda: setting drive write-caching to 0 (off) write-caching = 0 (off) # hdparm -W0 /dev/sdb /dev/sdb: setting drive write-caching to 0 (off) write-caching = 0 (off) # # /usr/bin/time bash -c 'tar xf linux-2.6.27.8.tar; sync' 0.18user 1.76system 0:42.90elapsed 4%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (14major+954minor)pagefaults 0swaps From Martin@lichtvoll.de Sat Dec 13 11:27:34 2008 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_12, J_CHICKENPOX_13 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 mBDHRYZO009619 for ; Sat, 13 Dec 2008 11:27:34 -0600 X-ASG-Debug-ID: 1229189252-1ec400c70000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.lichtvoll.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5E23D1B8EE; Sat, 13 Dec 2008 09:27:32 -0800 (PST) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id T9qiPfziRSQDdrXD; Sat, 13 Dec 2008 09:27:32 -0800 (PST) Received: from shambhala.lichtvoll.local (DSL01.83.171.181.147.ip-pool.NEFkom.net [83.171.181.147]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 872F75ADB7; Sat, 13 Dec 2008 18:26:27 +0100 (CET) From: Martin Steigerwald To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Date: Sat, 13 Dec 2008 18:26:19 +0100 User-Agent: KMail/1.9.9 Cc: Justin Piszcz , Eric Sandeen , linux-raid@vger.kernel.org, Alan Piszcz , xfs@oss.sgi.com References: <493A9BE7.3090001@sandeen.net> (sfid-20081213_171213_704814_AA9856DD) In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart3711614.WOcl7pU34H"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200812131826.25280.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1229189253 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.12638 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- --nextPart3711614.WOcl7pU34H Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Am Samstag 13 Dezember 2008 schrieb Justin Piszcz: > On Sat, 6 Dec 2008, Eric Sandeen wrote: > > Justin Piszcz wrote: > >> Someone should write a document with XFS and barrier support, if I > >> recall, in the past, they never worked right on raid1 or raid5 > >> devices, but it appears now they they work on RAID1, which slows > >> down performance ~12 times!! > >> > >> There is some mention of it here: > >> http://oss.sgi.com/projects/xfs/faq.html#wcache_persistent > >> > >> But basically I believe it should be noted in the kernel logs, FAQ > >> or somewhere because just through the process of upgrading the > >> kernel, not changing fstab or any other part of the system, > >> performance can drop 12x just because the newer kernels implement > >> barriers. > > > > Perhaps: > > > > printk(KERN_ALERT "XFS is now looking after your metadata very > > carefully; if you prefer the old, fast, dangerous way, mount with -o > > nobarrier\n"); > > > > :) > > > > Really, this just gets xfs on md raid1 in line with how it behaves on > > most other devices. > > > > But I agree, some documentation/education is probably in order; if > > you choose to disable write caches or you have faith in the battery > > backup of your write cache, turning off barriers would be a good > > idea. Justin, it might be interesting to do some tests with: > > > > barrier, write cache enabled > > nobarrier, write cache enabled > > nobarrier, write cache disabled > > > > a 12x hit does hurt though... If you're really motivated, try the > > same scenarios on ext3 and ext4 to see what the barrier hit is on > > those as well. > > > > -Eric > > No, I have not forgotten about this I have just been quite busy, I will > test this now, as before, I did not use sync because I was in a hurry > and did not have the ability to test, I am using a different machine/hw > type but the setup is the same, md/raid1 etc. > > Since I will only be measuring barriers, per esandeen@ I have changed > the mount options from what I typically use to the defaults. [...] > The benchmark: > # /usr/bin/time bash -c 'tar xf linux-2.6.27.8.tar; sync' > # echo 1 > /proc/sys/vm/drop_caches # (between tests) > > =3D=3D The tests =3D=3D > > KEY: > barriers =3D "b" > write_cache =3D "w" > > SUMMARY: > b=3Don,w=3Don: 1:19.53 elapsed @ 2% CPU [BENCH_1] > b=3Don,w=3Doff: 1:23.59 elapsed @ 2% CPU [BENCH_2] > b=3Doff,w=3Don: 0:21.35 elapsed @ 9% CPU [BENCH_3] > b=3Doff,w=3Doff: 0:42.90 elapsed @ 4% CPU [BENCH_4] This is quite similar to what I got on my laptop without any RAID=20 setup[1]. At least without barriers it was faster in all of my tar -xf=20 linux-2.6.27.tar.bz2 and rm -rf linux-2.6.27 tests. At the moment it appears to me that disabling write cache may often give=20 more performance than using barriers. And this doesn't match my=20 expectation of write barriers as a feature that enhances performance.=20 Right now a "nowcache" option and having this as default appears to make=20 more sense than defaulting to barriers. But I think this needs more=20 testing than just those simple high meta data load tests. Anyway I am=20 happy cause I have a way to speed up XFS ;-). [1] http://oss.sgi.com/archives/xfs/2008-12/msg00244.html Ciao, --=20 Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 --nextPart3711614.WOcl7pU34H Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAklD8DwACgkQmRvqrKWZhMc5YgCdFn8qkAOR8gtbioDIPxoNxa1y Lu0An0vJbORD40lf8QQ5rIKrcxbBLusk =Xes8 -----END PGP SIGNATURE----- --nextPart3711614.WOcl7pU34H-- From sandeen@sandeen.net Sat Dec 13 11:40:14 2008 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 mBDHeEBn010196 for ; Sat, 13 Dec 2008 11:40:14 -0600 X-ASG-Debug-ID: 1229190012-276700f30000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B5870171D722; Sat, 13 Dec 2008 09:40:12 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id kF2B2imHDZl7oIrn; Sat, 13 Dec 2008 09:40:12 -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 sandeen.net (Postfix) with ESMTP id AA911A84804; Sat, 13 Dec 2008 11:40:10 -0600 (CST) Message-ID: <4943F37B.8080405@sandeen.net> Date: Sat, 13 Dec 2008 11:40:11 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Martin Steigerwald CC: linux-xfs@oss.sgi.com, linux-raid@vger.kernel.org, Alan Piszcz , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] References: <493A9BE7.3090001@sandeen.net> (sfid-20081213_171213_704814_AA9856DD) <200812131826.25280.Martin@lichtvoll.de> In-Reply-To: <200812131826.25280.Martin@lichtvoll.de> 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: 1229190012 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.12638 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Martin Steigerwald wrote: > At the moment it appears to me that disabling write cache may often give > more performance than using barriers. And this doesn't match my > expectation of write barriers as a feature that enhances performance. Why do you have that expectation? I've never seen barriers advertised as enhancing performance. :) I do wonder why barriers on, write cache off is so slow; I'd have thought the barriers were a no-op. Maybe I'm missing something. > Right now a "nowcache" option and having this as default appears to make > more sense than defaulting to barriers. I don't think that turning off write cache is something the filesystem can do; you have to take that as an administrative step on your block devices. > But I think this needs more > testing than just those simple high meta data load tests. Anyway I am > happy cause I have a way to speed up XFS ;-). My only hand-wavy concern is whether this has any adverse physical effect on the drive (no cache == lots more head movement etc?) but then barriers are constantly flushing/invalidating that cache, so it's probably a wash. And really, I have no idea. :) -Eric From sandeen@sandeen.net Sat Dec 13 11:40:13 2008 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=unavailable 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 mBDHeDdL010193 for ; Sat, 13 Dec 2008 11:40:13 -0600 X-ASG-Debug-ID: 1229190012-276700f30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B5870171D722; Sat, 13 Dec 2008 09:40:12 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id kF2B2imHDZl7oIrn; Sat, 13 Dec 2008 09:40:12 -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 sandeen.net (Postfix) with ESMTP id AA911A84804; Sat, 13 Dec 2008 11:40:10 -0600 (CST) Message-ID: <4943F37B.8080405@sandeen.net> Date: Sat, 13 Dec 2008 11:40:11 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Martin Steigerwald CC: linux-xfs@oss.sgi.com, linux-raid@vger.kernel.org, Alan Piszcz , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] References: <493A9BE7.3090001@sandeen.net> (sfid-20081213_171213_704814_AA9856DD) <200812131826.25280.Martin@lichtvoll.de> In-Reply-To: <200812131826.25280.Martin@lichtvoll.de> 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: 1229190012 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.12638 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Martin Steigerwald wrote: > At the moment it appears to me that disabling write cache may often give > more performance than using barriers. And this doesn't match my > expectation of write barriers as a feature that enhances performance. Why do you have that expectation? I've never seen barriers advertised as enhancing performance. :) I do wonder why barriers on, write cache off is so slow; I'd have thought the barriers were a no-op. Maybe I'm missing something. > Right now a "nowcache" option and having this as default appears to make > more sense than defaulting to barriers. I don't think that turning off write cache is something the filesystem can do; you have to take that as an administrative step on your block devices. > But I think this needs more > testing than just those simple high meta data load tests. Anyway I am > happy cause I have a way to speed up XFS ;-). My only hand-wavy concern is whether this has any adverse physical effect on the drive (no cache == lots more head movement etc?) but then barriers are constantly flushing/invalidating that cache, so it's probably a wash. And really, I have no idea. :) -Eric From Martin@lichtvoll.de Sat Dec 13 11:27:34 2008 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 mBDHRYln009620 for ; Sat, 13 Dec 2008 11:27:34 -0600 X-ASG-Debug-ID: 1229189252-1ec400c70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.lichtvoll.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5E23D1B8EE; Sat, 13 Dec 2008 09:27:32 -0800 (PST) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id T9qiPfziRSQDdrXD; Sat, 13 Dec 2008 09:27:32 -0800 (PST) Received: from shambhala.lichtvoll.local (DSL01.83.171.181.147.ip-pool.NEFkom.net [83.171.181.147]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 872F75ADB7; Sat, 13 Dec 2008 18:26:27 +0100 (CET) From: Martin Steigerwald To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Date: Sat, 13 Dec 2008 18:26:19 +0100 User-Agent: KMail/1.9.9 Cc: Justin Piszcz , Eric Sandeen , linux-raid@vger.kernel.org, Alan Piszcz , xfs@oss.sgi.com References: <493A9BE7.3090001@sandeen.net> (sfid-20081213_171213_704814_AA9856DD) In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart3711614.WOcl7pU34H"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200812131826.25280.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1229189253 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.12638 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- --nextPart3711614.WOcl7pU34H Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Am Samstag 13 Dezember 2008 schrieb Justin Piszcz: > On Sat, 6 Dec 2008, Eric Sandeen wrote: > > Justin Piszcz wrote: > >> Someone should write a document with XFS and barrier support, if I > >> recall, in the past, they never worked right on raid1 or raid5 > >> devices, but it appears now they they work on RAID1, which slows > >> down performance ~12 times!! > >> > >> There is some mention of it here: > >> http://oss.sgi.com/projects/xfs/faq.html#wcache_persistent > >> > >> But basically I believe it should be noted in the kernel logs, FAQ > >> or somewhere because just through the process of upgrading the > >> kernel, not changing fstab or any other part of the system, > >> performance can drop 12x just because the newer kernels implement > >> barriers. > > > > Perhaps: > > > > printk(KERN_ALERT "XFS is now looking after your metadata very > > carefully; if you prefer the old, fast, dangerous way, mount with -o > > nobarrier\n"); > > > > :) > > > > Really, this just gets xfs on md raid1 in line with how it behaves on > > most other devices. > > > > But I agree, some documentation/education is probably in order; if > > you choose to disable write caches or you have faith in the battery > > backup of your write cache, turning off barriers would be a good > > idea. Justin, it might be interesting to do some tests with: > > > > barrier, write cache enabled > > nobarrier, write cache enabled > > nobarrier, write cache disabled > > > > a 12x hit does hurt though... If you're really motivated, try the > > same scenarios on ext3 and ext4 to see what the barrier hit is on > > those as well. > > > > -Eric > > No, I have not forgotten about this I have just been quite busy, I will > test this now, as before, I did not use sync because I was in a hurry > and did not have the ability to test, I am using a different machine/hw > type but the setup is the same, md/raid1 etc. > > Since I will only be measuring barriers, per esandeen@ I have changed > the mount options from what I typically use to the defaults. [...] > The benchmark: > # /usr/bin/time bash -c 'tar xf linux-2.6.27.8.tar; sync' > # echo 1 > /proc/sys/vm/drop_caches # (between tests) > > =3D=3D The tests =3D=3D > > KEY: > barriers =3D "b" > write_cache =3D "w" > > SUMMARY: > b=3Don,w=3Don: 1:19.53 elapsed @ 2% CPU [BENCH_1] > b=3Don,w=3Doff: 1:23.59 elapsed @ 2% CPU [BENCH_2] > b=3Doff,w=3Don: 0:21.35 elapsed @ 9% CPU [BENCH_3] > b=3Doff,w=3Doff: 0:42.90 elapsed @ 4% CPU [BENCH_4] This is quite similar to what I got on my laptop without any RAID=20 setup[1]. At least without barriers it was faster in all of my tar -xf=20 linux-2.6.27.tar.bz2 and rm -rf linux-2.6.27 tests. At the moment it appears to me that disabling write cache may often give=20 more performance than using barriers. And this doesn't match my=20 expectation of write barriers as a feature that enhances performance.=20 Right now a "nowcache" option and having this as default appears to make=20 more sense than defaulting to barriers. But I think this needs more=20 testing than just those simple high meta data load tests. Anyway I am=20 happy cause I have a way to speed up XFS ;-). [1] http://oss.sgi.com/archives/xfs/2008-12/msg00244.html Ciao, --=20 Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 --nextPart3711614.WOcl7pU34H Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAklD8DwACgkQmRvqrKWZhMc5YgCdFn8qkAOR8gtbioDIPxoNxa1y Lu0An0vJbORD40lf8QQ5rIKrcxbBLusk =Xes8 -----END PGP SIGNATURE----- --nextPart3711614.WOcl7pU34H-- From sandeen@sandeen.net Sat Dec 13 11:48:42 2008 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 mBDHmgvY011017 for ; Sat, 13 Dec 2008 11:48:42 -0600 X-ASG-Debug-ID: 1229190521-276d015c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D09C3172B973 for ; Sat, 13 Dec 2008 09:48:41 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id nWsS2t7j8KNCcSfn for ; Sat, 13 Dec 2008 09:48:41 -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 sandeen.net (Postfix) with ESMTP id CF80EA9C9C3 for ; Sat, 13 Dec 2008 11:48:07 -0600 (CST) Message-ID: <4943F558.4070701@sandeen.net> Date: Sat, 13 Dec 2008 11:48:08 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] fix corruption case for block size < page size Subject: Re: [PATCH] fix corruption case for block size < page size References: <49435F35.40109@sandeen.net> In-Reply-To: <49435F35.40109@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: 1229190521 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.12638 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Eric Sandeen wrote: > Index: xfs/fs/xfs/linux-2.6/xfs_aops.c > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_aops.c > +++ xfs/fs/xfs/linux-2.6/xfs_aops.c > @@ -1042,6 +1042,13 @@ xfs_page_state_convert( > continue; > } > > + /* This means its a hole (discard_buffer leaves uptodate set) */ > I've offended cw's sense of grammar, and I did cringe when I removed the apostrophe in the name of an 80char line, so how about this :) Index: xfs/fs/xfs/linux-2.6/xfs_aops.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_aops.c +++ xfs/fs/xfs/linux-2.6/xfs_aops.c @@ -1042,6 +1042,13 @@ xfs_page_state_convert( continue; } + /* It's a hole. (discard_buffer leaves uptodate set) */ + if (!buffer_dirty(bh) && !buffer_mapped(bh) && + buffer_uptodate(bh)) { + iomap_valid = 0; + continue; + } + if (iomap_valid) iomap_valid = xfs_iomap_valid(&iomap, offset); From sandeen@sandeen.net Sat Dec 13 12:20:39 2008 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 mBDIKdAL012817 for ; Sat, 13 Dec 2008 12:20:39 -0600 X-ASG-Debug-ID: 1229192437-18e103d30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 28F18172B994 for ; Sat, 13 Dec 2008 10:20:37 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id CxtMu5Inp1OAqfHI for ; Sat, 13 Dec 2008 10:20: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 sandeen.net (Postfix) with ESMTP id 4672BAABFC2 for ; Sat, 13 Dec 2008 12:20:06 -0600 (CST) Message-ID: <4943FCD7.2010509@sandeen.net> Date: Sat, 13 Dec 2008 12:20:07 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] fix corruption case for block size < page size Subject: Re: [PATCH] fix corruption case for block size < page size References: <49435F35.40109@sandeen.net> In-Reply-To: <49435F35.40109@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: 1229192438 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.12641 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Eric Sandeen wrote: > On a 4k page system and 512-byte blocksize, this: > > xfs_io \ > -c "pwrite -S 0x11 -b 4096 0 4096" \ > -c "mmap -r 0 512" -c "mread 0 512" -c "munmap" \ > -c "truncate 256" \ > -c "truncate 513" \ > -c "pwrite -S 0x22 -b 512 2048 512" \ > -t -d -f testfile Not to keep belaboring the point, but if anyone reviews this here's a bit more info. If I blktrace the testcase it looks like this: 8,16 0 1 0.000000000 4222 C W 166979666 + 8 [0] 4k wr 8,16 0 2 0.000367043 4222 C R 166979666 + 8 [0] 4k map rd 8,16 0 3 0.002923548 4222 C N (35 00 ..) [0] 8,16 0 4 0.003108924 4222 C W 200708307 + 9 [0] Log?(trunc) 8,16 0 5 0.020357902 4222 C N (35 00 ..) [0] 8,16 0 6 0.020361434 4222 C W 200708307 + 9 [0] Log?(trunc) 8,16 0 7 0.020745509 4222 C W 166979666 + 1 [0] 512 wr @0 8,16 0 8 0.020940005 4222 C W 166979667 + 1 [0] 512 wr @1 8,16 0 9 0.021172749 4222 C W 166979670 + 1 [0] 512 wr @4 and a detailed look at the data on disk is this: 00000000 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 Block 0(OK) * 00000100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 0... * 00000200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 1(OK) * 00000400 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 Block 2(BAD) * 00000600 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 Block 3(BAD) * 00000800 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 Block 4(OK) * 00000a00 And the bmap information is this: EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL 0: [0..4]: 56..60 0 (56..60) 5 So the bad data in blocks 2 and 3 were never rewritten; the buffer heads probably were fine (containing 0's, but I should check) and we simply re-mapped blocks 2 and 3 back into existence, along with their stale data, it seems. So I think this was just a bad mapping decision, and not a buffer head state/zeroing problem...? -Eric From david@santools.com Sat Dec 13 13:03:55 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_12, J_CHICKENPOX_13 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 mBDJ3shA016102 for ; Sat, 13 Dec 2008 13:03:55 -0600 X-ASG-Debug-ID: 1229195032-4bad02e90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from server515.appriver.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3900F1BB42; Sat, 13 Dec 2008 11:03:52 -0800 (PST) Received: from server515.appriver.com (server515h.exghost.com [72.32.253.71]) by cuda.sgi.com with ESMTP id nZtx6E0J4PViaMYn; Sat, 13 Dec 2008 11:03:52 -0800 (PST) Received: by server515.appriver.com (CommuniGate Pro PIPE 5.2.7) with PIPE id 108502185; Sat, 13 Dec 2008 12:02:46 -0600 Received: from FE1.exchange.rackspace.com ([72.32.49.5] verified) by server515.appriver.com (CommuniGate Pro SMTP 5.2.7) with ESMTP id 108502155; Sat, 13 Dec 2008 12:02:38 -0600 Received: from 34093-C3-EVS3.exchange.rackspace.com ([192.168.1.161]) by FE1.exchange.rackspace.com with Microsoft SMTPSVC(6.0.3790.3959); Sat, 13 Dec 2008 12:02:41 -0600 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" X-ASG-Orig-Subj: RE: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: RE: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Date: Sat, 13 Dec 2008 12:01:38 -0600 Message-ID: In-Reply-To: <200812131826.25280.Martin@lichtvoll.de> X-MS-Has-Attach: X-MS-TNEF-Correlator: thread-topic: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] thread-index: AcldSRjzg/X8sq4/QUO1mtugD4rt9gAAdR1w References: <493A9BE7.3090001@sandeen.net> (sfid-20081213_171213_704814_AA9856DD) <200812131826.25280.Martin@lichtvoll.de> From: "David Lethe" To: "Martin Steigerwald" , Cc: "Justin Piszcz" , "Eric Sandeen" , , "Alan Piszcz" , X-OriginalArrivalTime: 13 Dec 2008 18:02:41.0477 (UTC) FILETIME=[FDDCBF50:01C95D4C] X-Policy: GLOBAL - santools.com X-Policy: GLOBAL - santools.com X-Policy: GLOBAL - santools.com X-Policy: GLOBAL - santools.com X-Policy: GLOBAL - santools.com X-Policy: Too many policies to list X-Primary: david@santools.com X-Note: This Email was scanned by AppRiver SecureTide X-ALLOW: david@santools.com ALLOWED X-Virus-Scan: V- X-Note: Spam Tests Failed: X-Country-Path: PRIVATE->UNITED STATES->UNITED STATES X-Note-Sending-IP: 72.32.49.5 X-Note-Reverse-DNS: X-Note-WHTLIST: david@santools.com X-Note: User Rule Hits: X-Note: Global Rule Hits: 94 95 96 97 101 102 170 X-Note: Mail Class: ALLOWEDSENDER X-Barracuda-Connect: server515h.exghost.com[72.32.253.71] X-Barracuda-Start-Time: 1229195033 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.12643 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id mBDJ3shA016102 > -----Original Message----- > From: linux-raid-owner@vger.kernel.org [mailto:linux-raid- > owner@vger.kernel.org] On Behalf Of Martin Steigerwald > Sent: Saturday, December 13, 2008 11:26 AM > To: linux-xfs@oss.sgi.com > Cc: Justin Piszcz; Eric Sandeen; linux-raid@vger.kernel.org; Alan > Piszcz; xfs@oss.sgi.com > Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers > [xfs] > > Am Samstag 13 Dezember 2008 schrieb Justin Piszcz: > > On Sat, 6 Dec 2008, Eric Sandeen wrote: > > > Justin Piszcz wrote: > > >> Someone should write a document with XFS and barrier support, if I > > >> recall, in the past, they never worked right on raid1 or raid5 > > >> devices, but it appears now they they work on RAID1, which slows > > >> down performance ~12 times!! > > >> > > >> There is some mention of it here: > > >> http://oss.sgi.com/projects/xfs/faq.html#wcache_persistent > > >> > > >> But basically I believe it should be noted in the kernel logs, FAQ > > >> or somewhere because just through the process of upgrading the > > >> kernel, not changing fstab or any other part of the system, > > >> performance can drop 12x just because the newer kernels implement > > >> barriers. > > > > > > Perhaps: > > > > > > printk(KERN_ALERT "XFS is now looking after your metadata very > > > carefully; if you prefer the old, fast, dangerous way, mount with - > o > > > nobarrier\n"); > > > > > > :) > > > > > > Really, this just gets xfs on md raid1 in line with how it behaves > > > on most other devices. > > > > > > But I agree, some documentation/education is probably in order; if > > > you choose to disable write caches or you have faith in the battery > > > backup of your write cache, turning off barriers would be a good > > > idea. Justin, it might be interesting to do some tests with: > > > > > > barrier, write cache enabled > > > nobarrier, write cache enabled > > > nobarrier, write cache disabled > > > > > > a 12x hit does hurt though... If you're really motivated, try the > > > same scenarios on ext3 and ext4 to see what the barrier hit is on > > > those as well. > > > > > > -Eric > > > > No, I have not forgotten about this I have just been quite busy, I > > will test this now, as before, I did not use sync because I was in a > > hurry and did not have the ability to test, I am using a different > > machine/hw type but the setup is the same, md/raid1 etc. > > > > Since I will only be measuring barriers, per esandeen@ I have changed > > the mount options from what I typically use to the defaults. > > [...] > > > The benchmark: > > # /usr/bin/time bash -c 'tar xf linux-2.6.27.8.tar; sync' > > # echo 1 > /proc/sys/vm/drop_caches # (between tests) > > > > == The tests == > > > > KEY: > > barriers = "b" > > write_cache = "w" > > > > SUMMARY: > > b=on,w=on: 1:19.53 elapsed @ 2% CPU [BENCH_1] > > b=on,w=off: 1:23.59 elapsed @ 2% CPU [BENCH_2] > > b=off,w=on: 0:21.35 elapsed @ 9% CPU [BENCH_3] > > b=off,w=off: 0:42.90 elapsed @ 4% CPU [BENCH_4] > > This is quite similar to what I got on my laptop without any RAID > setup[1]. At least without barriers it was faster in all of my tar -xf > linux-2.6.27.tar.bz2 and rm -rf linux-2.6.27 tests. > > At the moment it appears to me that disabling write cache may often > give more performance than using barriers. And this doesn't match my > expectation of write barriers as a feature that enhances performance. > Right now a "nowcache" option and having this as default appears to > make more sense than defaulting to barriers. But I think this needs > more testing than just those simple high meta data load tests. Anyway I > am happy cause I have a way to speed up XFS ;-). > > [1] http://oss.sgi.com/archives/xfs/2008-12/msg00244.html > > Ciao, > -- > Martin 'Helios' Steigerwald - http://www.Lichtvoll.de > GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 Consider if write cache is enabled, and 128 blocks are in write cache ... waiting to be flushed. If those 128 blocks are not needed again before it is time to flush, then not only did you waste cycles copying those 128 blocks into cache, but you prevented those same 128 block from being used by read cache, buffers, whatever.. You also have overhead of cache lookup, and no matter what, you still have to flush cache eventually. If you are doing extended writes, then the cache will fill up quickly, so it hurts you. Write cache is of greatest benefit on a transactional environment, like database, and can hurt performance on benchmarks, rebuilds, etc .. depending on whether or not the extended operations can actually save a disk I/O by getting information from the cache before it is time to flush cache to disk. If you have SCSI, FC, or SAS disks, then you can query the drive's cache log pages (they are in vendor-specific fields for some drives), to see how the cache is being Utilized and determine relative efficiency. David From david@santools.com Sat Dec 13 13:03:55 2008 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_12, J_CHICKENPOX_13 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 mBDJ3s0M016101 for ; Sat, 13 Dec 2008 13:03:55 -0600 X-ASG-Debug-ID: 1229195032-4bad02e90000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from server515.appriver.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3900F1BB42; Sat, 13 Dec 2008 11:03:52 -0800 (PST) Received: from server515.appriver.com (server515h.exghost.com [72.32.253.71]) by cuda.sgi.com with ESMTP id nZtx6E0J4PViaMYn; Sat, 13 Dec 2008 11:03:52 -0800 (PST) Received: by server515.appriver.com (CommuniGate Pro PIPE 5.2.7) with PIPE id 108502185; Sat, 13 Dec 2008 12:02:46 -0600 Received: from FE1.exchange.rackspace.com ([72.32.49.5] verified) by server515.appriver.com (CommuniGate Pro SMTP 5.2.7) with ESMTP id 108502155; Sat, 13 Dec 2008 12:02:38 -0600 Received: from 34093-C3-EVS3.exchange.rackspace.com ([192.168.1.161]) by FE1.exchange.rackspace.com with Microsoft SMTPSVC(6.0.3790.3959); Sat, 13 Dec 2008 12:02:41 -0600 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" X-ASG-Orig-Subj: RE: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: RE: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Date: Sat, 13 Dec 2008 12:01:38 -0600 Message-ID: In-Reply-To: <200812131826.25280.Martin@lichtvoll.de> X-MS-Has-Attach: X-MS-TNEF-Correlator: thread-topic: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] thread-index: AcldSRjzg/X8sq4/QUO1mtugD4rt9gAAdR1w References: <493A9BE7.3090001@sandeen.net> (sfid-20081213_171213_704814_AA9856DD) <200812131826.25280.Martin@lichtvoll.de> From: "David Lethe" To: "Martin Steigerwald" , Cc: "Justin Piszcz" , "Eric Sandeen" , , "Alan Piszcz" , X-OriginalArrivalTime: 13 Dec 2008 18:02:41.0477 (UTC) FILETIME=[FDDCBF50:01C95D4C] X-Policy: GLOBAL - santools.com X-Policy: GLOBAL - santools.com X-Policy: GLOBAL - santools.com X-Policy: GLOBAL - santools.com X-Policy: GLOBAL - santools.com X-Policy: Too many policies to list X-Primary: david@santools.com X-Note: This Email was scanned by AppRiver SecureTide X-ALLOW: david@santools.com ALLOWED X-Virus-Scan: V- X-Note: Spam Tests Failed: X-Country-Path: PRIVATE->UNITED STATES->UNITED STATES X-Note-Sending-IP: 72.32.49.5 X-Note-Reverse-DNS: X-Note-WHTLIST: david@santools.com X-Note: User Rule Hits: X-Note: Global Rule Hits: 94 95 96 97 101 102 170 X-Note: Mail Class: ALLOWEDSENDER X-Barracuda-Connect: server515h.exghost.com[72.32.253.71] X-Barracuda-Start-Time: 1229195033 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.12643 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id mBDJ3s0M016101 > -----Original Message----- > From: linux-raid-owner@vger.kernel.org [mailto:linux-raid- > owner@vger.kernel.org] On Behalf Of Martin Steigerwald > Sent: Saturday, December 13, 2008 11:26 AM > To: linux-xfs@oss.sgi.com > Cc: Justin Piszcz; Eric Sandeen; linux-raid@vger.kernel.org; Alan > Piszcz; xfs@oss.sgi.com > Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers > [xfs] > > Am Samstag 13 Dezember 2008 schrieb Justin Piszcz: > > On Sat, 6 Dec 2008, Eric Sandeen wrote: > > > Justin Piszcz wrote: > > >> Someone should write a document with XFS and barrier support, if I > > >> recall, in the past, they never worked right on raid1 or raid5 > > >> devices, but it appears now they they work on RAID1, which slows > > >> down performance ~12 times!! > > >> > > >> There is some mention of it here: > > >> http://oss.sgi.com/projects/xfs/faq.html#wcache_persistent > > >> > > >> But basically I believe it should be noted in the kernel logs, FAQ > > >> or somewhere because just through the process of upgrading the > > >> kernel, not changing fstab or any other part of the system, > > >> performance can drop 12x just because the newer kernels implement > > >> barriers. > > > > > > Perhaps: > > > > > > printk(KERN_ALERT "XFS is now looking after your metadata very > > > carefully; if you prefer the old, fast, dangerous way, mount with - > o > > > nobarrier\n"); > > > > > > :) > > > > > > Really, this just gets xfs on md raid1 in line with how it behaves > > > on most other devices. > > > > > > But I agree, some documentation/education is probably in order; if > > > you choose to disable write caches or you have faith in the battery > > > backup of your write cache, turning off barriers would be a good > > > idea. Justin, it might be interesting to do some tests with: > > > > > > barrier, write cache enabled > > > nobarrier, write cache enabled > > > nobarrier, write cache disabled > > > > > > a 12x hit does hurt though... If you're really motivated, try the > > > same scenarios on ext3 and ext4 to see what the barrier hit is on > > > those as well. > > > > > > -Eric > > > > No, I have not forgotten about this I have just been quite busy, I > > will test this now, as before, I did not use sync because I was in a > > hurry and did not have the ability to test, I am using a different > > machine/hw type but the setup is the same, md/raid1 etc. > > > > Since I will only be measuring barriers, per esandeen@ I have changed > > the mount options from what I typically use to the defaults. > > [...] > > > The benchmark: > > # /usr/bin/time bash -c 'tar xf linux-2.6.27.8.tar; sync' > > # echo 1 > /proc/sys/vm/drop_caches # (between tests) > > > > == The tests == > > > > KEY: > > barriers = "b" > > write_cache = "w" > > > > SUMMARY: > > b=on,w=on: 1:19.53 elapsed @ 2% CPU [BENCH_1] > > b=on,w=off: 1:23.59 elapsed @ 2% CPU [BENCH_2] > > b=off,w=on: 0:21.35 elapsed @ 9% CPU [BENCH_3] > > b=off,w=off: 0:42.90 elapsed @ 4% CPU [BENCH_4] > > This is quite similar to what I got on my laptop without any RAID > setup[1]. At least without barriers it was faster in all of my tar -xf > linux-2.6.27.tar.bz2 and rm -rf linux-2.6.27 tests. > > At the moment it appears to me that disabling write cache may often > give more performance than using barriers. And this doesn't match my > expectation of write barriers as a feature that enhances performance. > Right now a "nowcache" option and having this as default appears to > make more sense than defaulting to barriers. But I think this needs > more testing than just those simple high meta data load tests. Anyway I > am happy cause I have a way to speed up XFS ;-). > > [1] http://oss.sgi.com/archives/xfs/2008-12/msg00244.html > > Ciao, > -- > Martin 'Helios' Steigerwald - http://www.Lichtvoll.de > GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 Consider if write cache is enabled, and 128 blocks are in write cache ... waiting to be flushed. If those 128 blocks are not needed again before it is time to flush, then not only did you waste cycles copying those 128 blocks into cache, but you prevented those same 128 block from being used by read cache, buffers, whatever.. You also have overhead of cache lookup, and no matter what, you still have to flush cache eventually. If you are doing extended writes, then the cache will fill up quickly, so it hurts you. Write cache is of greatest benefit on a transactional environment, like database, and can hurt performance on benchmarks, rebuilds, etc .. depending on whether or not the extended operations can actually save a disk I/O by getting information from the cache before it is time to flush cache to disk. If you have SCSI, FC, or SAS disks, then you can query the drive's cache log pages (they are in vendor-specific fields for some drives), to see how the cache is being Utilized and determine relative efficiency. David From redeeman@metanurb.dk Sat Dec 13 21:29:00 2008 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 mBE3SxkS021285 for ; Sat, 13 Dec 2008 21:29:00 -0600 X-ASG-Debug-ID: 1229225336-119d02cf0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pasmtpA.tele.dk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 73D73172D16D for ; Sat, 13 Dec 2008 19:28:57 -0800 (PST) Received: from pasmtpA.tele.dk (pasmtpa.tele.dk [80.160.77.114]) by cuda.sgi.com with ESMTP id HJbthEBRzNvXcwNu for ; Sat, 13 Dec 2008 19:28:57 -0800 (PST) Received: from redeeman.kaspersandberg.com (kaspersandberg.com [80.164.32.14]) by pasmtpA.tele.dk (Postfix) with ESMTP id 1A71D800DA8; Sun, 14 Dec 2008 04:28:23 +0100 (CET) X-ASG-Orig-Subj: Re: Have the velociraptors in a test system now, checkout the errors. Subject: Re: Have the velociraptors in a test system now, checkout the errors. From: Redeeman To: Bill Davidsen Cc: Justin Piszcz , linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com, smartmontools-support@lists.sourceforge.net In-Reply-To: <49405A94.8080601@tmr.com> References: <49405A94.8080601@tmr.com> Content-Type: text/plain Date: Sun, 14 Dec 2008 04:28:23 +0100 Message-Id: <1229225303.16555.149.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.4.0 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: pasmtpa.tele.dk[80.160.77.114] X-Barracuda-Start-Time: 1229225338 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.12673 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, 2008-12-10 at 19:11 -0500, Bill Davidsen wrote: > Justin Piszcz wrote: > > Point of thread: Two problems, mentioned in detail below, NCQ in Linux > > when used in a RAID configuration and two, something with how Linux > > interacts with the drives causes lots of problems as when I run the WD > > tools on the disks, they do not show any errors. > > > > If anyone has/would like me to run any debugging/patches/etc on this > > system feel free to suggest/send me things to try out. After I put > > the VR's in a test system, I left NCQ enabled and I made a 10 disk > > raid5 to see how fast I could get it to fail, I ran bonnie++ shown > > below as a disk benchmark/stress test: > > > > For the next test I will repeat this one but with NCQ disabled, having > > NCQ enabled makes it fail very easily. Then I want to re-run the test > > with RAID6. > > > > bonnie++ -d /r1/test -s 1000G -m p63 -n 16:100000:16:64 > > > > $ df -h > > /dev/md3 2.5T 5.5M 2.5T 1% /r1 > > > > And the results? Two disk "failures" according to md/Linux within a > > few hours as shown below: > > > > Note, the NCQ-related errors are what I talk about all of the time, if > > you use > > NCQ and Linux in a RAID environment with WD drives, well-- good luck. > > > > Two-disks failed out of the RAID5 and I currentlty cannot even 'see' > > one of the drives with smartctl, will reboot the host and check sde > > again. > > > > After a reboot, it comes up and has no errors, really makes one wonder > > where/what the bugs is/are, there are two I can see: > > 1. NCQ issue on at least WD drives in Linux in SW md/RAID > > 2. Velociraptor/other disks reporting all kinds of sector errors etc, > > but when you use the WD 11.x disk tools program and run all of their > > tests it says the disks have no problems whatsoever! The smart > > statistics do confirm this. Currently, TLER is on for all disks, for > > the duration of these tests. > > Just a few comments on this, I have several RAID arrays built on Seagate > using NCQ, and yet to have a problem. I have NCQ on with my WD drives, > non-RAID, and haven't had an issue with them either. The WDs run a lot > cooler than the SG, but they are probably getting less use, as well. If > the WD are still on sale after the holiday I may grab a few more and run > RAID, by then I will have some small sense of trusting them. Velociraptors, or which WD? > From redeeman@metanurb.dk Sat Dec 13 21:31:25 2008 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_28 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 mBE3VPbT021466 for ; Sat, 13 Dec 2008 21:31:25 -0600 X-ASG-Debug-ID: 1229225482-119f02ee0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pasmtpB.tele.dk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B33AF172D047; Sat, 13 Dec 2008 19:31:23 -0800 (PST) Received: from pasmtpB.tele.dk (pasmtpb.tele.dk [80.160.77.98]) by cuda.sgi.com with ESMTP id 3Eqxv4uVy0xGdR25; Sat, 13 Dec 2008 19:31:23 -0800 (PST) Received: from redeeman.kaspersandberg.com (kaspersandberg.com [80.164.32.14]) by pasmtpB.tele.dk (Postfix) with ESMTP id 9DE4CE30008; Sun, 14 Dec 2008 04:31:21 +0100 (CET) X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] From: Redeeman To: Eric Sandeen Cc: Martin Steigerwald , linux-xfs@oss.sgi.com, linux-raid@vger.kernel.org, Alan Piszcz , xfs@oss.sgi.com In-Reply-To: <4943F37B.8080405@sandeen.net> References: <493A9BE7.3090001@sandeen.net> (sfid-20081213_171213_704814_AA9856DD) <200812131826.25280.Martin@lichtvoll.de> <4943F37B.8080405@sandeen.net> Content-Type: text/plain Date: Sun, 14 Dec 2008 04:31:20 +0100 Message-Id: <1229225480.16555.152.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.4.0 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: pasmtpb.tele.dk[80.160.77.98] X-Barracuda-Start-Time: 1229225483 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.12673 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, 2008-12-13 at 11:40 -0600, Eric Sandeen wrote: > Martin Steigerwald wrote: > > > At the moment it appears to me that disabling write cache may often give > > more performance than using barriers. And this doesn't match my > > expectation of write barriers as a feature that enhances performance. > > Why do you have that expectation? I've never seen barriers advertised > as enhancing performance. :) My initial thoughts were that write barriers would enhance performance, in that, you could have write cache on. So its really more of an expectation that wc+barriers on, performs better than wc+barriers off :) > > I do wonder why barriers on, write cache off is so slow; I'd have > thought the barriers were a no-op. Maybe I'm missing something. > > > Right now a "nowcache" option and having this as default appears to make > > more sense than defaulting to barriers. > > I don't think that turning off write cache is something the filesystem > can do; you have to take that as an administrative step on your block > devices. > > > But I think this needs more > > testing than just those simple high meta data load tests. Anyway I am > > happy cause I have a way to speed up XFS ;-). > > My only hand-wavy concern is whether this has any adverse physical > effect on the drive (no cache == lots more head movement etc?) but then > barriers are constantly flushing/invalidating that cache, so it's > probably a wash. And really, I have no idea. :) > > -Eric > > -- > To unsubscribe from this list: send the line "unsubscribe linux-raid" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html From redeeman@metanurb.dk Sat Dec 13 21:31:25 2008 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_28 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 mBE3VPZf021459 for ; Sat, 13 Dec 2008 21:31:25 -0600 X-ASG-Debug-ID: 1229225482-119f02ee0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pasmtpB.tele.dk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B33AF172D047; Sat, 13 Dec 2008 19:31:23 -0800 (PST) Received: from pasmtpB.tele.dk (pasmtpb.tele.dk [80.160.77.98]) by cuda.sgi.com with ESMTP id 3Eqxv4uVy0xGdR25; Sat, 13 Dec 2008 19:31:23 -0800 (PST) Received: from redeeman.kaspersandberg.com (kaspersandberg.com [80.164.32.14]) by pasmtpB.tele.dk (Postfix) with ESMTP id 9DE4CE30008; Sun, 14 Dec 2008 04:31:21 +0100 (CET) X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] From: Redeeman To: Eric Sandeen Cc: Martin Steigerwald , linux-xfs@oss.sgi.com, linux-raid@vger.kernel.org, Alan Piszcz , xfs@oss.sgi.com In-Reply-To: <4943F37B.8080405@sandeen.net> References: <493A9BE7.3090001@sandeen.net> (sfid-20081213_171213_704814_AA9856DD) <200812131826.25280.Martin@lichtvoll.de> <4943F37B.8080405@sandeen.net> Content-Type: text/plain Date: Sun, 14 Dec 2008 04:31:20 +0100 Message-Id: <1229225480.16555.152.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.4.0 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: pasmtpb.tele.dk[80.160.77.98] X-Barracuda-Start-Time: 1229225483 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.12673 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, 2008-12-13 at 11:40 -0600, Eric Sandeen wrote: > Martin Steigerwald wrote: > > > At the moment it appears to me that disabling write cache may often give > > more performance than using barriers. And this doesn't match my > > expectation of write barriers as a feature that enhances performance. > > Why do you have that expectation? I've never seen barriers advertised > as enhancing performance. :) My initial thoughts were that write barriers would enhance performance, in that, you could have write cache on. So its really more of an expectation that wc+barriers on, performs better than wc+barriers off :) > > I do wonder why barriers on, write cache off is so slow; I'd have > thought the barriers were a no-op. Maybe I'm missing something. > > > Right now a "nowcache" option and having this as default appears to make > > more sense than defaulting to barriers. > > I don't think that turning off write cache is something the filesystem > can do; you have to take that as an administrative step on your block > devices. > > > But I think this needs more > > testing than just those simple high meta data load tests. Anyway I am > > happy cause I have a way to speed up XFS ;-). > > My only hand-wavy concern is whether this has any adverse physical > effect on the drive (no cache == lots more head movement etc?) but then > barriers are constantly flushing/invalidating that cache, so it's > probably a wash. And really, I have no idea. :) > > -Eric > > -- > To unsubscribe from this list: send the line "unsubscribe linux-raid" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html From jpiszcz@lucidpixels.com Sun Dec 14 03:05:13 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.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 mBE95Dsw010044 for ; Sun, 14 Dec 2008 03:05:13 -0600 X-ASG-Debug-ID: 1229245511-4c72004f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A27281D681 for ; Sun, 14 Dec 2008 01:05:11 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id j0fJw5piVyqOSj2m for ; Sun, 14 Dec 2008 01:05:11 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 2565C103B87C2; Sun, 14 Dec 2008 04:05:11 -0500 (EST) Date: Sun, 14 Dec 2008 04:05:11 -0500 (EST) From: Justin Piszcz To: Redeeman cc: Bill Davidsen , linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com, smartmontools-support@lists.sourceforge.net X-ASG-Orig-Subj: Re: Have the velociraptors in a test system now, checkout the errors. Subject: Re: Have the velociraptors in a test system now, checkout the errors. In-Reply-To: <1229225303.16555.149.camel@localhost> Message-ID: References: <49405A94.8080601@tmr.com> <1229225303.16555.149.camel@localhost> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1229245512 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.12689 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, 14 Dec 2008, Redeeman wrote: > On Wed, 2008-12-10 at 19:11 -0500, Bill Davidsen wrote: >> Justin Piszcz wrote: >>> Point of thread: Two problems, mentioned in detail below, NCQ in Linux >>> when used in a RAID configuration and two, something with how Linux >>> interacts with the drives causes lots of problems as when I run the WD >>> tools on the disks, they do not show any errors. >>> >>> If anyone has/would like me to run any debugging/patches/etc on this >>> system feel free to suggest/send me things to try out. After I put >>> the VR's in a test system, I left NCQ enabled and I made a 10 disk >>> raid5 to see how fast I could get it to fail, I ran bonnie++ shown >>> below as a disk benchmark/stress test: >>> >>> For the next test I will repeat this one but with NCQ disabled, having >>> NCQ enabled makes it fail very easily. Then I want to re-run the test >>> with RAID6. >>> >>> bonnie++ -d /r1/test -s 1000G -m p63 -n 16:100000:16:64 >>> >>> $ df -h >>> /dev/md3 2.5T 5.5M 2.5T 1% /r1 >>> >>> And the results? Two disk "failures" according to md/Linux within a >>> few hours as shown below: >>> >>> Note, the NCQ-related errors are what I talk about all of the time, if >>> you use >>> NCQ and Linux in a RAID environment with WD drives, well-- good luck. >>> >>> Two-disks failed out of the RAID5 and I currentlty cannot even 'see' >>> one of the drives with smartctl, will reboot the host and check sde >>> again. >>> >>> After a reboot, it comes up and has no errors, really makes one wonder >>> where/what the bugs is/are, there are two I can see: >>> 1. NCQ issue on at least WD drives in Linux in SW md/RAID >>> 2. Velociraptor/other disks reporting all kinds of sector errors etc, >>> but when you use the WD 11.x disk tools program and run all of their >>> tests it says the disks have no problems whatsoever! The smart >>> statistics do confirm this. Currently, TLER is on for all disks, for >>> the duration of these tests. >> >> Just a few comments on this, I have several RAID arrays built on Seagate >> using NCQ, and yet to have a problem. I have NCQ on with my WD drives, >> non-RAID, and haven't had an issue with them either. The WDs run a lot >> cooler than the SG, but they are probably getting less use, as well. If >> the WD are still on sale after the holiday I may grab a few more and run >> RAID, by then I will have some small sense of trusting them. > Velociraptors, or which WD? Velociraptors or Raptors or 750GiB disks (in Linux SW Raid) the NCQ issue does not appear to occur on Raptors on a 3ware card though, only in Linux+SW_raid. The regular raptor/750gib also run just fine as standalone with NCQ. Justin. From pg_mh@sabi.co.UK Sun Dec 14 08:03:22 2008 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_28 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 mBEE3MuH028068 for ; Sun, 14 Dec 2008 08:03:22 -0600 X-ASG-Debug-ID: 1229263398-2ad902550000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ty.sabi.co.UK (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6B56C172DC68 for ; Sun, 14 Dec 2008 06:03:19 -0800 (PST) Received: from ty.sabi.co.UK (82-69-39-138.dsl.in-addr.zen.co.uk [82.69.39.138]) by cuda.sgi.com with ESMTP id JMurumEvDZoJfEbU for ; Sun, 14 Dec 2008 06:03:19 -0800 (PST) Received: from from [127.0.0.1] (helo=tree.ty.sabi.co.uk) by ty.sabi.co.UK with esmtp(Exim 4.68 #1) id 1LBrYO-0008HQ-He; Sun, 14 Dec 2008 14:02:40 +0000 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Message-ID: <18757.4606.966139.10342@tree.ty.sabi.co.uk> Date: Sun, 14 Dec 2008 14:02:38 +0000 X-Face: SMJE]JPYVBO-9UR%/8d'mG.F!@.,l@c[f'[%S8'BZIcbQc3/">GrXDwb#;fTRGNmHr^JFb SAptvwWc,0+z+~p~"Gdr4H$(|N(yF(wwCM2bW0~U?HPEE^fkPGx^u[*[yV.gyB!hDOli}EF[\cW*S H&spRGFL}{`bj1TaD^l/"[ msn( /TH#THs{Hpj>)]f>, Linux RAID X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] In-Reply-To: <1229225480.16555.152.camel@localhost> References: <493A9BE7.3090001@sandeen.net> <200812131826.25280.Martin@lichtvoll.de> <4943F37B.8080405@sandeen.net> <1229225480.16555.152.camel@localhost> X-Mailer: VM 7.17 under 21.5 (beta28) XEmacs Lucid From: xf2@xf2.for.sabi.co.UK (Peter Grandi) X-Disclaimer: This message contains only personal opinions X-Barracuda-Connect: 82-69-39-138.dsl.in-addr.zen.co.uk[82.69.39.138] X-Barracuda-Start-Time: 1229263400 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1315 1.0000 -1.2073 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.11 X-Barracuda-Spam-Status: No, SCORE=-1.11 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.12707 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id mBEE3MuH028068 First of all, why are you people sending TWO copies to the XFS mailing list? (to both linux-xfs@oss.sgi.com and xfs@oss.sgi.com). >>> At the moment it appears to me that disabling write cache >>> may often give more performance than using barriers. And >>> this doesn't match my expectation of write barriers as a >>> feature that enhances performance. >> Why do you have that expectation? I've never seen barriers >> advertised as enhancing performance. :) This entire discussion is based on the usual misleading and pointless avoidance of the substance, in particular because of stupid, shallow diregard for the particular nature of the "benchmark" used. Barriers can be used to create atomic storage transaction for metadata or data. For data, they mean that 'fsync' does what is expected to do. It is up to the application to issue 'fsync' as often or as rarely as appropriate. For metadata, it is the file system code itself that uses barriers to do something like 'fsync' for metadata updates, and enforce POSIX or whatever guarantees. The "benchmark" used involves 290MB of data in around 26k files and directories, that is the average inode size is around 11KB. That means that an inode is created and flushed to disk every 11KB written; a metadata write barrier happens every 11KB. A synchronization every 11KB is a very high rate, and it will (unless the disk host adapter or the disk controller are clever mor have battery backed memory for queues) involve a lot of waiting for the barrier to complete, and presumably break the smooth flow of data to the disk with pauses. Also whether or not the host adapter or the conroller write cache are disabled, 290MB will fit inside most recent hosts' RAM entirely, and even adding 'sync' at the end will not help that much as to helping with a meaningful comparison. > My initial thoughts were that write barriers would enhance > performance, in that, you could have write cache on. Well, that all depends on whether the write caches (in the host adapter or the controller) are persistent and how frequently barriers are issued. If the write caches are not persistent (at least for a while), the hard disk controller or the host adapter cannot have more than one barrier completion request in flight at a time, and if a barrier completion is requested every 11KB that will be pretty constraining. Barriers are much more useful when the host adapter or the disk controller can cache multiple transactions and then execute them in the order in which barriers have been issued, so that the host can pipeline transactions down to the last stage in the chain, instead of operating the last stages synchronously or semi-synchronously. But talking about barriers in the context of metadata, and for a "benchmark" which has a metadata barrier every 11KB, and without knowing whether the storage subsystem can queue multiple barrier operations seems to be pretty crass and meangingless, if not misleading. A waste of time at best. > So its really more of an expectation that wc+barriers on, > performs better than wc+barriers off :) This is of course a misstatement: perhaps you intended to write that ''wc on+barriers on'' would perform better than ''wc off + barriers off'. As to this apparent anomaly, I am only mildly surprised, as there are plenty of similar anomalies (why ever should have a very large block device readahead to get decent performance from MD block devices?), due to poorly ill conceived schemes in all sorts of stages of the storage chain, from the sometimes comically misguided misdesigns in the Linux block cache or elevators or storage drivers, to the often even worse "optimizations" embedded in the firmware of host adapters and hard disk controllers. Consider for example (and also as a hint towards less futile and meaningless "benchmarks") the 'no-fsync' option of 'star', the reasons for its existence and for the Linux related advice: http://gd.tuwien.ac.at/utils/schilling/man/star.html «-no-fsync Do not call fsync(2) for each file that has been extracted from the archive. Using -no-fsync may speed up extraction on operating systems with slow file I/O (such as Linux), but includes the risk that star may not be able to detect extraction problems that occur after the call to close(2).» Now ask yourself if you know whether GNU tar does 'fsync' or not (a rather interesting detail, and the reasons why may also be interesting...). From Martin@lichtvoll.de Sun Dec 14 11:49:38 2008 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_28 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 mBEHncDP008657 for ; Sun, 14 Dec 2008 11:49:38 -0600 X-ASG-Debug-ID: 1229276975-0d8103cc0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.lichtvoll.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3D1311DD69; Sun, 14 Dec 2008 09:49:35 -0800 (PST) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id Nrv03hbq08QEJPHk; Sun, 14 Dec 2008 09:49:35 -0800 (PST) Received: from [10.0.0.21] (DSL01.83.171.170.214.ip-pool.NEFkom.net [83.171.170.214]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 679CF5ADF3; Sun, 14 Dec 2008 18:49:34 +0100 (CET) From: Martin Steigerwald To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Date: Sun, 14 Dec 2008 18:49:32 +0100 User-Agent: KMail/1.9.9 References: <4943F37B.8080405@sandeen.net> <1229225480.16555.152.camel@localhost> (sfid-20081214_183451_158861_5E7EF8DA) In-Reply-To: <1229225480.16555.152.camel@localhost> Cc: Redeeman , Eric Sandeen , linux-raid@vger.kernel.org, Alan Piszcz , xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Disposition: inline Message-Id: <200812141849.33534.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1229276976 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.12718 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id mBEHncDP008657 Am Sonntag 14 Dezember 2008 schrieb Redeeman: > On Sat, 2008-12-13 at 11:40 -0600, Eric Sandeen wrote: > > Martin Steigerwald wrote: > > > At the moment it appears to me that disabling write cache may often > > > give more performance than using barriers. And this doesn't match > > > my expectation of write barriers as a feature that enhances > > > performance. > > > > Why do you have that expectation? I've never seen barriers > > advertised as enhancing performance. :) > > My initial thoughts were that write barriers would enhance performance, > in that, you could have write cache on. So its really more of an > expectation that wc+barriers on, performs better than wc+barriers off > :) Exactly that. My expectation from my technical understanding of the write barrier feature is from most performant to least performant: 1) Write cache + no barrier, but NVRAM ;) 2) Write cache + barrier 3) No write cache, where is shouldn't matter whether barrier was enabled or not With 1 write requests are unordered, thus meta data changes could be applied in place before landing into the journal for example, thus NVRAM is a must. With 2 write requests are unordered except for certain markers, the barriers that say: Anything before the barrier goes before and anything after the barrier goes after it. This leaves room for optimizing the write requests before and after - either in-kernel by an IO scheduler or in firmware by NCQ, TCQ, FUA. And with 3 write requests would always be ordered... and if the filesystems places a marker - a sync in this case - any write requests that are in flight till then have to land on disk before the filesystem can proceed. >From that understanding, which I explained in detail in my Linux-Magazin article[1] I always thought that write cache + barrier has to be faster than no write cache. Well I am ready to learn more. But for me until now that was the whole point of the effort with write barriers. Seems I completely misunderstood their purpose if thats not what they where meant for. [1] Only in german, it had een translated to english but never published: http://www.linux-magazin.de/online_artikel/beschraenktes_schreiben Ciao, -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From Martin@lichtvoll.de Sun Dec 14 11:49:38 2008 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_28 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 mBEHncnv008658 for ; Sun, 14 Dec 2008 11:49:38 -0600 X-ASG-Debug-ID: 1229276975-0d8103cc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.lichtvoll.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3D1311DD69; Sun, 14 Dec 2008 09:49:35 -0800 (PST) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id Nrv03hbq08QEJPHk; Sun, 14 Dec 2008 09:49:35 -0800 (PST) Received: from [10.0.0.21] (DSL01.83.171.170.214.ip-pool.NEFkom.net [83.171.170.214]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 679CF5ADF3; Sun, 14 Dec 2008 18:49:34 +0100 (CET) From: Martin Steigerwald To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Date: Sun, 14 Dec 2008 18:49:32 +0100 User-Agent: KMail/1.9.9 References: <4943F37B.8080405@sandeen.net> <1229225480.16555.152.camel@localhost> (sfid-20081214_183451_158861_5E7EF8DA) In-Reply-To: <1229225480.16555.152.camel@localhost> Cc: Redeeman , Eric Sandeen , linux-raid@vger.kernel.org, Alan Piszcz , xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Disposition: inline Message-Id: <200812141849.33534.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1229276976 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.12718 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id mBEHncnv008658 Am Sonntag 14 Dezember 2008 schrieb Redeeman: > On Sat, 2008-12-13 at 11:40 -0600, Eric Sandeen wrote: > > Martin Steigerwald wrote: > > > At the moment it appears to me that disabling write cache may often > > > give more performance than using barriers. And this doesn't match > > > my expectation of write barriers as a feature that enhances > > > performance. > > > > Why do you have that expectation? I've never seen barriers > > advertised as enhancing performance. :) > > My initial thoughts were that write barriers would enhance performance, > in that, you could have write cache on. So its really more of an > expectation that wc+barriers on, performs better than wc+barriers off > :) Exactly that. My expectation from my technical understanding of the write barrier feature is from most performant to least performant: 1) Write cache + no barrier, but NVRAM ;) 2) Write cache + barrier 3) No write cache, where is shouldn't matter whether barrier was enabled or not With 1 write requests are unordered, thus meta data changes could be applied in place before landing into the journal for example, thus NVRAM is a must. With 2 write requests are unordered except for certain markers, the barriers that say: Anything before the barrier goes before and anything after the barrier goes after it. This leaves room for optimizing the write requests before and after - either in-kernel by an IO scheduler or in firmware by NCQ, TCQ, FUA. And with 3 write requests would always be ordered... and if the filesystems places a marker - a sync in this case - any write requests that are in flight till then have to land on disk before the filesystem can proceed. >From that understanding, which I explained in detail in my Linux-Magazin article[1] I always thought that write cache + barrier has to be faster than no write cache. Well I am ready to learn more. But for me until now that was the whole point of the effort with write barriers. Seems I completely misunderstood their purpose if thats not what they where meant for. [1] Only in german, it had een translated to english but never published: http://www.linux-magazin.de/online_artikel/beschraenktes_schreiben Ciao, -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From Martin@lichtvoll.de Sun Dec 14 12:13:37 2008 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_28 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 mBEIDbXf010370 for ; Sun, 14 Dec 2008 12:13:37 -0600 X-ASG-Debug-ID: 1229278415-5aa803290000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.lichtvoll.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A6F31172E2E8 for ; Sun, 14 Dec 2008 10:13:35 -0800 (PST) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id NJmgndB7Uz70Upwi for ; Sun, 14 Dec 2008 10:13:35 -0800 (PST) Received: from [10.0.0.21] (DSL01.83.171.170.214.ip-pool.NEFkom.net [83.171.170.214]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 31DA55ADF3; Sun, 14 Dec 2008 19:13:01 +0100 (CET) From: Martin Steigerwald To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Date: Sun, 14 Dec 2008 19:12:51 +0100 User-Agent: KMail/1.9.9 Cc: Linux RAID References: <1229225480.16555.152.camel@localhost> <18757.4606.966139.10342@tree.ty.sabi.co.uk> (sfid-20081214_183524_928808_CA8411E0) In-Reply-To: <18757.4606.966139.10342@tree.ty.sabi.co.uk> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart7278677.KeuEffjm2a"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200812141912.59649.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1229278415 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.12720 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- --nextPart7278677.KeuEffjm2a Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Am Sonntag 14 Dezember 2008 schrieb Peter Grandi: > First of all, why are you people sending TWO copies to the XFS > mailing list? (to both linux-xfs@oss.sgi.com and xfs@oss.sgi.com). Just took the CC as it seems to be custom on xfs mailinglist to take it. I= =20 stripped it this time. > >>> At the moment it appears to me that disabling write cache > >>> may often give more performance than using barriers. And > >>> this doesn't match my expectation of write barriers as a > >>> feature that enhances performance. > >> > >> Why do you have that expectation? I've never seen barriers > >> advertised as enhancing performance. :) > > This entire discussion is based on the usual misleading and > pointless avoidance of the substance, in particular because of > stupid, shallow diregard for the particular nature of the > "benchmark" used. > > Barriers can be used to create atomic storage transaction for > metadata or data. For data, they mean that 'fsync' does what is > expected to do. It is up to the application to issue 'fsync' as > often or as rarely as appropriate. > > For metadata, it is the file system code itself that uses > barriers to do something like 'fsync' for metadata updates, and > enforce POSIX or whatever guarantees. > > The "benchmark" used involves 290MB of data in around 26k files > and directories, that is the average inode size is around 11KB. > > That means that an inode is created and flushed to disk every > 11KB written; a metadata write barrier happens every 11KB. > > A synchronization every 11KB is a very high rate, and it will > (unless the disk host adapter or the disk controller are clever > mor have battery backed memory for queues) involve a lot of > waiting for the barrier to complete, and presumably break the > smooth flow of data to the disk with pauses. But - as far as I understood - the filesystem doesn't have to wait for=20 barriers to complete, but could continue issuing IO requests happily. A=20 barrier only means, any request prior to that have to land before and any= =20 after it after it. It doesn't mean that the barrier has to land=20 immediately and the filesystem has to wait for this. At least that always was the whole point of barriers for me. If thats not= =20 the case I misunderstood the purpose of barriers to the maximum extent=20 possible. > Also whether or not the host adapter or the conroller write > cache are disabled, 290MB will fit inside most recent hosts' RAM > entirely, and even adding 'sync' at the end will not help that > much as to helping with a meaningful comparison. Okay, so dropping caches would be required. Got that in the meantime. > > My initial thoughts were that write barriers would enhance > > performance, in that, you could have write cache on. > > Well, that all depends on whether the write caches (in the host > adapter or the controller) are persistent and how frequently > barriers are issued. > > If the write caches are not persistent (at least for a while), > the hard disk controller or the host adapter cannot have more > than one barrier completion request in flight at a time, and if > a barrier completion is requested every 11KB that will be pretty > constraining. Hmmm, didn't know that. How comes? But the IO scheduler should be able to= =20 handle more than one barrier request at a time, shouldn't it? And even=20 than how can it be slower writing 11 KB at a time than writing every IO=20 request at a time - i.e. write cache *off*. > Barriers are much more useful when the host adapter or the disk > controller can cache multiple transactions and then execute them > in the order in which barriers have been issued, so that the > host can pipeline transactions down to the last stage in the > chain, instead of operating the last stages synchronously or > semi-synchronously. > > But talking about barriers in the context of metadata, and for a > "benchmark" which has a metadata barrier every 11KB, and without > knowing whether the storage subsystem can queue multiple barrier > operations seems to be pretty crass and meangingless, if not > misleading. A waste of time at best. Hmmm, as far as I understood it would be that the IO scheduler would=20 handle barrier requests itself if the device was not capable for queuing=20 and ordering requests. Only thing that occurs to me know, that with barriers off it has more=20 freedom to order requests and that might matter for that metadata=20 intensive workload. With barriers it can only order 11 KB of requests.=20 Without it could order as much as it wants... but even then the=20 filesystem would have to make sure that metadata changes land in the=20 journal first and then in-place. And this would involve a sync, if no=20 barrier request was possible. So I still don't get why even that metadata intense workload of tar -xf=20 linux-2.6.27.tar.bz2 - or may better bzip2 -d the tar before - should be=20 slower with barriers + write cache on than with no barriers and write=20 cache off. > > So its really more of an expectation that wc+barriers on, > > performs better than wc+barriers off :) > > This is of course a misstatement: perhaps you intended to write > that ''wc on+barriers on'' would perform better than ''wc off + > barriers off'. > > As to this apparent anomaly, I am only mildly surprised, as > there are plenty of similar anomalies (why ever should have a > very large block device readahead to get decent performance from > MD block devices?), due to poorly ill conceived schemes in all > sorts of stages of the storage chain, from the sometimes > comically misguided misdesigns in the Linux block cache or > elevators or storage drivers, to the often even worse > "optimizations" embedded in the firmware of host adapters and > hard disk controllers. Well and then that is something that could potentially be fixed! > Consider for example (and also as a hint towards less futile and > meaningless "benchmarks") the 'no-fsync' option of 'star', the > reasons for its existence and for the Linux related advice: > > http://gd.tuwien.ac.at/utils/schilling/man/star.html > > =AB-no-fsync > Do not call fsync(2) for each file that has been > extracted from the archive. Using -no-fsync may speed > up extraction on operating systems with slow file I/O > (such as Linux), but includes the risk that star may > not be able to detect extraction problems that occur > after the call to close(2).=BB > > Now ask yourself if you know whether GNU tar does 'fsync' or not > (a rather interesting detail, and the reasons why may also be > interesting...). Talking about less futile benchmarks and mentioning the manpage of a tool= =20 from a author who is known as Solaris advocate appears to be a bit futile= =20 in itself for me. Especially if the author tends to chime into into any=20 discussion mentioning his name and at least in my experience is very=20 difficult to talk with in a constructive manner.=20 For me its important to look whether there might be reason to look in more= =20 detail at how efficient write barriers work on Linux. For that as I=20 mentioned already, testing just this simple workload would not be enough.= =20 And testing just on XFS neither. I think this is neither useless nor futile. The simplified benchmark IMHO= =20 has shown something that deserves further investigation. Nothing more,=20 nothing less. [1] http://oss.sgi.com/archives/xfs/2008-12/msg00244.html Ciao, --=20 Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 --nextPart7278677.KeuEffjm2a Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAklFTKMACgkQmRvqrKWZhMfDkQCfUtvqiYUWcrUzywC9ABTMfhNx U9kAn3P022QV8h0HhShvjJqC3vZ72INW =nPs5 -----END PGP SIGNATURE----- --nextPart7278677.KeuEffjm2a-- From Martin@lichtvoll.de Sun Dec 14 12:33:40 2008 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 (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 mBEIXe3A011464 for ; Sun, 14 Dec 2008 12:33:40 -0600 X-ASG-Debug-ID: 1229279618-754300500000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.lichtvoll.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 236C31DF86 for ; Sun, 14 Dec 2008 10:33:38 -0800 (PST) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id DWE2DWsuDJegKMVk for ; Sun, 14 Dec 2008 10:33:38 -0800 (PST) Received: from [10.0.0.21] (DSL01.83.171.170.214.ip-pool.NEFkom.net [83.171.170.214]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 0A87B5ADF3; Sun, 14 Dec 2008 19:33:38 +0100 (CET) To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Content-Disposition: inline From: Martin Steigerwald Date: Sun, 14 Dec 2008 19:33:36 +0100 Cc: Linux RAID MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Message-Id: <200812141933.37398.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1229279619 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.12722 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Am Sonntag 14 Dezember 2008 schrieben Sie: > Am Sonntag 14 Dezember 2008 schrieb Peter Grandi: > > But talking about barriers in the context of metadata, and for a > > "benchmark" which has a metadata barrier every 11KB, and without > > knowing whether the storage subsystem can queue multiple barrier > > operations seems to be pretty crass and meangingless, if not > > misleading. A waste of time at best. > > Hmmm, as far as I understood it would be that the IO scheduler would > handle barrier requests itself if the device was not capable for > queuing and ordering requests. > > Only thing that occurs to me know, that with barriers off it has more > freedom to order requests and that might matter for that metadata > intensive workload. With barriers it can only order 11 KB of requests. > Without it could order as much as it wants... but even then the > filesystem would have to make sure that metadata changes land in the > journal first and then in-place. And this would involve a sync, if no > barrier request was possible. No it hasn't. As I do not think XFS or any other filesystem would be keen to see the IO scheduler reorder a journal write after a corresponding meta data in-place write. So either the filesystem uses sync... > So I still don't get why even that metadata intense workload of tar -xf > linux-2.6.27.tar.bz2 - or may better bzip2 -d the tar before - should > be slower with barriers + write cache on than with no barriers and > write cache off. ... or it tells the scheduler that this journal write should come prior to the later writes. This is what a barrier would do - except for that it cannot utilize any additional in-hardware / in-firmware support. So why on earth can write cache off + barrier off be faster than write cache on + barrier on in *any workload*? There must be some technical detail that I miss. Ciao, -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From Martin@lichtvoll.de Sun Dec 14 12:36:10 2008 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_28 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 mBEIaAgF011689 for ; Sun, 14 Dec 2008 12:36:10 -0600 X-ASG-Debug-ID: 1229279768-419d03040000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.lichtvoll.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 717591DF9F for ; Sun, 14 Dec 2008 10:36:09 -0800 (PST) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id uZX9nvVcxpgNNBSN for ; Sun, 14 Dec 2008 10:36:09 -0800 (PST) Received: from [10.0.0.21] (DSL01.83.171.170.214.ip-pool.NEFkom.net [83.171.170.214]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 698215ADF3; Sun, 14 Dec 2008 19:35:37 +0100 (CET) From: Martin Steigerwald To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Date: Sun, 14 Dec 2008 19:35:36 +0100 User-Agent: KMail/1.9.9 Cc: Linux RAID References: <1229225480.16555.152.camel@localhost> <18757.4606.966139.10342@tree.ty.sabi.co.uk> (sfid-20081214_183524_928808_CA8411E0) In-Reply-To: <18757.4606.966139.10342@tree.ty.sabi.co.uk> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200812141935.36744.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1229279769 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.12722 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Am Sonntag 14 Dezember 2008 schrieb Peter Grandi: > First of all, why are you people sending TWO copies to the XFS > mailing list? (to both linux-xfs@oss.sgi.com and xfs@oss.sgi.com). [...] > > So its really more of an expectation that wc+barriers on, > > performs better than wc+barriers off :) > > This is of course a misstatement: perhaps you intended to write > that ''wc on+barriers on'' would perform better than ''wc off + > barriers off'. I think Redeeman said exactly that ;-). Either both on or both off. -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From pg_mh@sabi.co.UK Sun Dec 14 16:02:49 2008 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 mBEM2nuE024664 for ; Sun, 14 Dec 2008 16:02:49 -0600 X-ASG-Debug-ID: 1229292167-615602d30000-ps1ADW X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ty.sabi.co.UK (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 347871E58B for ; Sun, 14 Dec 2008 14:02:47 -0800 (PST) Received: from ty.sabi.co.UK (82-69-39-138.dsl.in-addr.zen.co.uk [82.69.39.138]) by cuda.sgi.com with ESMTP id PaTLpxzeMF2VufiD for ; Sun, 14 Dec 2008 14:02:47 -0800 (PST) Received: from from [127.0.0.1] (helo=tree.ty.sabi.co.uk) by ty.sabi.co.UK with esmtp(Exim 4.68 #1) id 1LBz2M-0002GM-2o; Sun, 14 Dec 2008 22:02:06 +0000 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <18757.33373.744917.457587@tree.ty.sabi.co.uk> Date: Sun, 14 Dec 2008 22:02:05 +0000 X-Face: SMJE]JPYVBO-9UR%/8d'mG.F!@.,l@c[f'[%S8'BZIcbQc3/">GrXDwb#;fTRGNmHr^JFb SAptvwWc,0+z+~p~"Gdr4H$(|N(yF(wwCM2bW0~U?HPEE^fkPGx^u[*[yV.gyB!hDOli}EF[\cW*S H&spRGFL}{`bj1TaD^l/"[ msn( /TH#THs{Hpj>)]f>, Linux RAID X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] In-Reply-To: <200812141912.59649.Martin@lichtvoll.de> References: <1229225480.16555.152.camel@localhost> <18757.4606.966139.10342@tree.ty.sabi.co.uk> <200812141912.59649.Martin@lichtvoll.de> X-Mailer: VM 7.17 under 21.5 (beta28) XEmacs Lucid From: pg_xf2@xf2.for.sabi.co.UK (Peter Grandi) X-Disclaimer: This message contains only personal opinions X-Barracuda-Connect: 82-69-39-138.dsl.in-addr.zen.co.uk[82.69.39.138] X-Barracuda-Start-Time: 1229292168 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.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.12732 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS [ ... ] > But - as far as I understood - the filesystem doesn't have to > wait for barriers to complete, but could continue issuing IO > requests happily. A barrier only means, any request prior to > that have to land before and any after it after it. > It doesn't mean that the barrier has to land immediately and > the filesystem has to wait for this. At least that always was > the whole point of barriers for me. If thats not the case I > misunderstood the purpose of barriers to the maximum extent > possible. Unfortunately that seems the case. The purpose of barriers is to guarantee that relevant data is known to be on persistent storage (kind of hardware 'fsync'). In effect write barrier means "tell me when relevant data is on persistent storage", or less precisely "flush/sync writes now and tell me when it is done". Properties as to ordering are just a side effect. That is, the application (file system in the case of metadata, user process in the case of data) knows that a barrier operation is complete, it knows that all data involved in the barrier operation are on persistent storage. In case of serially dependent transactions, applications do wait until the previous transaction is completed before starting the next one (e.g. creating potentially many files in the same directory, something that 'tar' does). "all data involved" is usually all previous writes, but in more sophisticated cases it can be just specific writes. When an applications at transaction end points (for a file system, metadata updates) issues a write barrier and then waits for its completion. If the host adapter/disk controllers don't have persistent storage, then completion (should) only happen when the data involved is actually on disk; if they do have it, then multiple barriers can be outstanding, if the host adapter/disk controller does support multiple outstanding operations (e.g. thanks to tagged queueing). The best case is when the IO subsystem supports all of these: * tagged queueing: multiple write barriers can be outstanding; * fine granule (specific writes, not all writes) barriers: just metadata writes need to be flushed to persistent storage, not any intervening data writes too; * the host adapter and/or disk controller have persistent caches: as long as those caches have space, barriers can complete immediately, without waiting a write to disk. It just happens that typical contemporary PC IO subsystems (at the hardware level, not the Linux level) have none of those features, except sometimes for NCQ which is a reduced form of TCQ, and apparently is not that useful. Write barriers are also useful without persistent caches, if there is proper tagged queueing and fine granularity. From david@fromorbit.com Sun Dec 14 17:36:25 2008 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 mBENaP2O030393 for ; Sun, 14 Dec 2008 17:36:25 -0600 X-ASG-Debug-ID: 1229297781-27b7012e0000-w1Z2WR 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 0E7CE172E513; Sun, 14 Dec 2008 15:36:22 -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 BVGBgVdAjQu4CAXT; Sun, 14 Dec 2008 15:36:22 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEABMlRUl5LB1f/2dsb2JhbADNWYJ+ X-IronPort-AV: E=Sophos;i="4.36,220,1228051800"; d="scan'208";a="275823881" 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; 15 Dec 2008 10:06:19 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LC0VV-0003W7-UJ; Mon, 15 Dec 2008 10:36:17 +1100 Date: Mon, 15 Dec 2008 10:36:17 +1100 From: Dave Chinner To: Eric Sandeen Cc: Martin Steigerwald , linux-xfs@oss.sgi.com, linux-raid@vger.kernel.org, Alan Piszcz , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Message-ID: <20081214233617.GD32301@disturbed> Mail-Followup-To: Eric Sandeen , Martin Steigerwald , linux-xfs@oss.sgi.com, linux-raid@vger.kernel.org, Alan Piszcz , xfs@oss.sgi.com References: <493A9BE7.3090001@sandeen.net> <200812131826.25280.Martin@lichtvoll.de> <4943F37B.8080405@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4943F37B.8080405@sandeen.net> 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: 1229297784 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.12737 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Dec 13, 2008 at 11:40:11AM -0600, Eric Sandeen wrote: > Martin Steigerwald wrote: > > > At the moment it appears to me that disabling write cache may often give > > more performance than using barriers. And this doesn't match my > > expectation of write barriers as a feature that enhances performance. > > Why do you have that expectation? I've never seen barriers advertised > as enhancing performance. :) > > I do wonder why barriers on, write cache off is so slow; I'd have > thought the barriers were a no-op. Maybe I'm missing something. Barriers still enforce ordering in this case, so it affects the elevator algorithm.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Dec 14 17:36:25 2008 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=unavailable 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 mBENaOQB030392 for ; Sun, 14 Dec 2008 17:36:25 -0600 X-ASG-Debug-ID: 1229297781-27b7012e0000-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 0E7CE172E513; Sun, 14 Dec 2008 15:36:22 -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 BVGBgVdAjQu4CAXT; Sun, 14 Dec 2008 15:36:22 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEABMlRUl5LB1f/2dsb2JhbADNWYJ+ X-IronPort-AV: E=Sophos;i="4.36,220,1228051800"; d="scan'208";a="275823881" 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; 15 Dec 2008 10:06:19 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LC0VV-0003W7-UJ; Mon, 15 Dec 2008 10:36:17 +1100 Date: Mon, 15 Dec 2008 10:36:17 +1100 From: Dave Chinner To: Eric Sandeen Cc: Martin Steigerwald , linux-xfs@oss.sgi.com, linux-raid@vger.kernel.org, Alan Piszcz , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Message-ID: <20081214233617.GD32301@disturbed> Mail-Followup-To: Eric Sandeen , Martin Steigerwald , linux-xfs@oss.sgi.com, linux-raid@vger.kernel.org, Alan Piszcz , xfs@oss.sgi.com References: <493A9BE7.3090001@sandeen.net> <200812131826.25280.Martin@lichtvoll.de> <4943F37B.8080405@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4943F37B.8080405@sandeen.net> 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: 1229297784 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.12737 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Dec 13, 2008 at 11:40:11AM -0600, Eric Sandeen wrote: > Martin Steigerwald wrote: > > > At the moment it appears to me that disabling write cache may often give > > more performance than using barriers. And this doesn't match my > > expectation of write barriers as a feature that enhances performance. > > Why do you have that expectation? I've never seen barriers advertised > as enhancing performance. :) > > I do wonder why barriers on, write cache off is so slow; I'd have > thought the barriers were a no-op. Maybe I'm missing something. Barriers still enforce ordering in this case, so it affects the elevator algorithm.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Sun Dec 14 17:55:31 2008 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 mBENtVSL031847 for ; Sun, 14 Dec 2008 17:55:31 -0600 X-ASG-Debug-ID: 1229298929-3daf00b50000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 39F0B172E6AA; Sun, 14 Dec 2008 15:55:29 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id DtnAZMIgtnKVZDPe; Sun, 14 Dec 2008 15:55:29 -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 sandeen.net (Postfix) with ESMTP id 33C18A9ABD8; Sun, 14 Dec 2008 17:55:29 -0600 (CST) Message-ID: <49459CF2.5070400@sandeen.net> Date: Sun, 14 Dec 2008 17:55:30 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Eric Sandeen , Martin Steigerwald , linux-xfs@oss.sgi.com, Alan Piszcz , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] References: <493A9BE7.3090001@sandeen.net> <200812131826.25280.Martin@lichtvoll.de> <4943F37B.8080405@sandeen.net> <20081214233617.GD32301@disturbed> In-Reply-To: <20081214233617.GD32301@disturbed> 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: 1229298930 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.12739 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Dave Chinner wrote: > On Sat, Dec 13, 2008 at 11:40:11AM -0600, Eric Sandeen wrote: >> Martin Steigerwald wrote: >> >>> At the moment it appears to me that disabling write cache may often give >>> more performance than using barriers. And this doesn't match my >>> expectation of write barriers as a feature that enhances performance. >> Why do you have that expectation? I've never seen barriers advertised >> as enhancing performance. :) >> >> I do wonder why barriers on, write cache off is so slow; I'd have >> thought the barriers were a no-op. Maybe I'm missing something. > > Barriers still enforce ordering in this case, so it affects the > elevator algorithm.... (taking linux-raid off becase at this point it really has nothing to do with the thread). oh, er, so is nobarrier+nowritecache safe or not? If the elevator can reorder for us (even though the drive won't) then a journaling fs which needs these ordering guarantees may still be in trouble? Just when I think I have it all straight... :) (ok, so now nobarrier+nowritecache+noop io scheduler might be an interesting test). -Eric From sandeen@sandeen.net Sun Dec 14 17:55:31 2008 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=unavailable 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 mBENtVWL031854 for ; Sun, 14 Dec 2008 17:55:31 -0600 X-ASG-Debug-ID: 1229298929-3daf00b50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 39F0B172E6AA; Sun, 14 Dec 2008 15:55:29 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id DtnAZMIgtnKVZDPe; Sun, 14 Dec 2008 15:55:29 -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 sandeen.net (Postfix) with ESMTP id 33C18A9ABD8; Sun, 14 Dec 2008 17:55:29 -0600 (CST) Message-ID: <49459CF2.5070400@sandeen.net> Date: Sun, 14 Dec 2008 17:55:30 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Eric Sandeen , Martin Steigerwald , linux-xfs@oss.sgi.com, Alan Piszcz , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] References: <493A9BE7.3090001@sandeen.net> <200812131826.25280.Martin@lichtvoll.de> <4943F37B.8080405@sandeen.net> <20081214233617.GD32301@disturbed> In-Reply-To: <20081214233617.GD32301@disturbed> 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: 1229298930 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.12739 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Dave Chinner wrote: > On Sat, Dec 13, 2008 at 11:40:11AM -0600, Eric Sandeen wrote: >> Martin Steigerwald wrote: >> >>> At the moment it appears to me that disabling write cache may often give >>> more performance than using barriers. And this doesn't match my >>> expectation of write barriers as a feature that enhances performance. >> Why do you have that expectation? I've never seen barriers advertised >> as enhancing performance. :) >> >> I do wonder why barriers on, write cache off is so slow; I'd have >> thought the barriers were a no-op. Maybe I'm missing something. > > Barriers still enforce ordering in this case, so it affects the > elevator algorithm.... (taking linux-raid off becase at this point it really has nothing to do with the thread). oh, er, so is nobarrier+nowritecache safe or not? If the elevator can reorder for us (even though the drive won't) then a journaling fs which needs these ordering guarantees may still be in trouble? Just when I think I have it all straight... :) (ok, so now nobarrier+nowritecache+noop io scheduler might be an interesting test). -Eric From 1stopwebdesign@gmail.com Sun Dec 14 23:30:29 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=AWL,BAYES_50, HTML_FONT_SIZE_HUGE,HTML_MESSAGE 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 mBF5UTrB019891 for ; Sun, 14 Dec 2008 23:30:29 -0600 X-ASG-Debug-ID: 1229319024-581100350000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp8.jaring.my (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4D5B81320229; Sun, 14 Dec 2008 21:30:25 -0800 (PST) Received: from smtp8.jaring.my (smtp8.jaring.my [61.6.32.58]) by cuda.sgi.com with ESMTP id QTkrs8xyq3VcvWX2; Sun, 14 Dec 2008 21:30:25 -0800 (PST) Received: from localhost (localhost.jaring.my [127.0.0.1]) by smtp8.jaring.my (8.13.8/8.13.8) with ESMTP id mBF3G6B5041084; Mon, 15 Dec 2008 11:16:06 +0800 (MYT) (envelope-from 1stopwebdesign@gmail.com) X-Virus-Scanned: by JARING Malware Filters (jaring.my) Received: from smtp8.jaring.my ([127.0.0.1]) by localhost (smtp8.jaring.my [127.0.0.1]) (amavisd-new, port 10024) with LMTP id oYelZqslLkRv; Mon, 15 Dec 2008 11:16:05 +0800 (MYT) Received: from Director (j196.kja51.jaring.my [61.6.139.210]) by smtp8.jaring.my (8.13.8/8.13.8) with ESMTP id mBF3Fb3k040969; Mon, 15 Dec 2008 11:15:38 +0800 (MYT) (envelope-from 1stopwebdesign@gmail.com) Message-Id: <200812150315.mBF3Fb3k040969@smtp8.jaring.my> From: "Sean Wong" <1stopwebdesign@gmail.com> Reply-To: sales@channel2.com.my X-ASG-Orig-Subj: Your Company's Web Site Design Subject: Your Company's Web Site Design To: refer@msia-biz.org Date: Mon, 15 Dec 2008 11:15:06 +0800 X-Mailer: diffondi V4,0,4,0 (W95/NT) (Build: Aug 26 2001) Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_007F_01BDF6C7.FABAC1B0" Content-Transfer-Encoding: 7bit X-Barracuda-Connect: smtp8.jaring.my[61.6.32.58] X-Barracuda-Start-Time: 1229319027 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4997 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.39 X-Barracuda-Spam-Status: No, SCORE=0.39 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_FONT_SIZE_HUGE, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.12758 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.39 HTML_FONT_SIZE_HUGE BODY: HTML font size is huge This is a MIME Message ------=_NextPart_000_007F_01BDF6C7.FABAC1B0 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0080_01BDF6C7.FABAC1B0" ------=_NextPart_001_0080_01BDF6C7.FABAC1B0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Greetings! I'd like to introduce to you our web services which you might be interested... Now you may have a new web design for only RM750 while a full web package for only RM880 including domain name, web/email hosting, plus 4-pages web design! We also provide web page updates and maintenance at reasonable rate. You may also order or renew your web/email hosting=20 at only RM200/year (unlimited email accounts): Domain Name .com RM50 .com.my RM100 Web Hosting Unlimited Emails 1Gig RM200 Web Design 4 Pages RM750 10 Pages RM1490 WebChois 4 Pages + Domain + Hosting =3D RM880 Your web pages will be customized to your corporate image and marketing strategy. You'll be amazed how easy and affordable to have your fresh website online now! Feel free to contact me for more information. Thanks!   Regards, Sean WongMarketing Executive Tel: 03-58822355, 58821580 Details check: http://www.channel2.com.my To unsubscribe pls reply: nolist@channel2.com.my R R R R R ------=_NextPart_001_0080_01BDF6C7.FABAC1B0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Greetings!

I'd like to introduce to you our web services which you might be interested...

Now you may have a new we= b design for only RM750 while a full web package for only RM880 including domain n= ame, web/email hosting, plus 4-pages web design!

We also provide web page updates and maintenance= at reasonable rate. You may also order or renew your web/email ho= sting at only RM200/year (unlimited email accounts)
:


Domain= =20 Name
.com RM50
.com.my RM100
Web Hosting
Unlimited Emails
1Gig RM200

Web Design
4 Pages RM750
10 Pages RM1490

WebChois
4 Pages + Domain
+ Hosting =3D RM880=


Your web pages will be customized to your corporate image and marketing str= ategy. You'll be amazed how easy and affordable to have your fresh website online now!

Feel free to contact me f= or more information. Thanks!
 

Regards,

<= font face=3D"Arial,Helvetica">Sean Wong
Marketing Execut= ive
Tel: 03-58822355, 58821580



Details check: http://www.channel2.com.my

To unsubscribe pls r= eply:
nolist@channel2.com.my

R R R R R
------=_NextPart_001_0080_01BDF6C7.FABAC1B0-- ------=_NextPart_000_007F_01BDF6C7.FABAC1B0-- From david@fromorbit.com Sun Dec 14 23:37:04 2008 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 (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 mBF5b4JK020256 for ; Sun, 14 Dec 2008 23:37:04 -0600 X-ASG-Debug-ID: 1229319421-6311037d0000-w1Z2WR 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 4BFBE1EDD6 for ; Sun, 14 Dec 2008 21:37:01 -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 V1iytyiGKxL34lGs for ; Sun, 14 Dec 2008 21:37:01 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAK55RUl5LB1f/2dsb2JhbADNQIJ+ X-IronPort-AV: E=Sophos;i="4.36,221,1228051800"; d="scan'208";a="276043880" 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; 15 Dec 2008 16:06:58 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LC68X-0002v8-2D; Mon, 15 Dec 2008 16:36:57 +1100 Date: Mon, 15 Dec 2008 16:36:57 +1100 From: Dave Chinner To: Raz Cc: Eric Sandeen , linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS over SSD Subject: Re: XFS over SSD Message-ID: <20081215053656.GE32301@disturbed> Mail-Followup-To: Raz , Eric Sandeen , linux-xfs@oss.sgi.com References: <5d96567b0812080442r131d9fc8t4019c99ffbffa290@mail.gmail.com> <493D334C.5010006@sandeen.net> <5d96567b0812080711x34bb93d6vd8e4f88d9b190e9@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5d96567b0812080711x34bb93d6vd8e4f88d9b190e9@mail.gmail.com> 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: 1229319423 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.12758 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Dec 08, 2008 at 05:11:58PM +0200, Raz wrote: > On Mon, Dec 8, 2008 at 4:46 PM, Eric Sandeen wrote: > > Raz wrote: > >> I am thinking of using XFS over a SSD disk. > >> 1. Can I separate xfs meta data ( not just the logging) from the SSD ? > >> can I put the meta on a different disk ? > > > > Are you talking about just the log (see the mkfs man page for external > > logs, as Justin suggested) or all metadata? For the latter, using the > > realtime subvolume does accomplish this (data on one volume, metadata on > > the other) but that's not used very often. > > > > -Eric > > > I am referring to all the meta data. 128K of erase block for some block map > update is a big penalty. That's not an issue for smart SSDs like the intel one. They internally use a log-based structure that means that small writes don't end up requiring an entire erase block to be rewritten. That is, they have a low write amplification factor. Such SSDs don't really care that much about the filesystem structure and random write patterns. Older/cheaper SSDs have a much larger write amplification factor and so are unsuited to traditional filesystem structures..... Google "SSD write amplification" for more information. Cheers, Dave. -- Dave Chinner david@fromorbit.com From me@ankitjain.org Mon Dec 15 02:04:55 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,RCVD_IN_BRBL 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 mBF84t2L008048 for ; Mon, 15 Dec 2008 02:04:55 -0600 X-ASG-Debug-ID: 1229328293-492e01240000-NocioJ 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 2B6E5172EC7E for ; Mon, 15 Dec 2008 00:04:53 -0800 (PST) Received: from po-out-1718.google.com (po-out-1718.google.com [72.14.252.156]) by cuda.sgi.com with ESMTP id KoAM6d6cNRBAyvu8 for ; Mon, 15 Dec 2008 00:04:53 -0800 (PST) Received: by po-out-1718.google.com with SMTP id b23so6842558poe.2 for ; Mon, 15 Dec 2008 00:04:53 -0800 (PST) Received: by 10.141.50.11 with SMTP id c11mr3579833rvk.28.1229328292819; Mon, 15 Dec 2008 00:04:52 -0800 (PST) Received: from ?192.169.1.100? ([122.167.93.48]) by mx.google.com with ESMTPS id c20sm1532206rvf.5.2008.12.15.00.04.47 (version=TLSv1/SSLv3 cipher=RC4-MD5); Mon, 15 Dec 2008 00:04:52 -0800 (PST) Message-ID: <49460F88.2080408@ankitjain.org> Date: Mon, 15 Dec 2008 13:34:24 +0530 From: Ankit Jain User-Agent: Thunderbird 2.0.0.18 (X11/20081112) MIME-Version: 1.0 To: Al Viro CC: Christoph Hellwig , linux-fsdevel@vger.kernel.org, mfasheh@suse.com, joel.becker@oracle.com, ocfs2-devel@oss.oracle.com, linux-kernel@vger.kernel.org, xfs-masters@oss.sgi.com, xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH][RFC] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Subject: [PATCH][RFC] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: po-out-1718.google.com[72.14.252.156] X-Barracuda-Start-Time: 1229328294 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.12768 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE_7582B Custom Rule 7582B This patch adds ioctls to vfs for compatibility with legacy XFS pre-allocation ioctls (XFS_IOC_*RESVP*). The implementation effectively invokes sys_fallocate for the new ioctls. Note: These legacy ioctls are also implemented by OCFS2. There are some things that I'm not sure about: 1. Should the struct space_resv be exposed to user-space? If not, then what would be the right place to put it? And the ioctl definitions? 2. Should the corresponding ioctls be removed from ocfs2? Signed-off-by: Ankit Jain --- fs/ioctl.c | 37 +++++++++++++++++++++++++++ fs/open.c | 51 ++++++++++++++++++------------------- include/linux/falloc.h | 19 ++++++++++++++ include/linux/fs.h | 2 + 4 files changed, 83 insertions(+), 26 deletions(-) diff --git a/fs/ioctl.c b/fs/ioctl.c index 43e8b2c..5e565c8 100644 --- a/fs/ioctl.c +++ b/fs/ioctl.c @@ -15,6 +15,7 @@ #include #include #include +#include #include @@ -346,6 +347,37 @@ EXPORT_SYMBOL(generic_block_fiemap); #endif /* CONFIG_BLOCK */ +/* + * This provides compatibility with legacy XFS pre-allocation ioctls + * which predate the fallocate syscall. + * + * Only the l_start, l_len and l_whence fields of the 'struct space_resv' + * are used here, rest are ignored. + */ +static int ioctl_preallocate(struct file *filp, unsigned long arg) +{ + struct inode *inode = filp->f_path.dentry->d_inode; + struct space_resv sr; + + if (copy_from_user(&sr, (struct space_resv __user *) arg, sizeof(sr))) + return -EFAULT; + + switch (sr.l_whence) { + case SEEK_SET: + break; + case SEEK_CUR: + sr.l_start += filp->f_pos; + break; + case SEEK_END: + sr.l_start += i_size_read(inode); + break; + default: + return -EINVAL; + } + + return do_fallocate(filp, FALLOC_FL_KEEP_SIZE, sr.l_start, sr.l_len); +} + static int file_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { @@ -361,6 +393,11 @@ static int file_ioctl(struct file *filp, unsigned int cmd, return put_user(inode->i_sb->s_blocksize, p); case FIONREAD: return put_user(i_size_read(inode) - filp->f_pos, p); + case F_IOC_RESVSP: + case F_IOC_RESVSP64: + case F_IOC_UNRESVSP: + case F_IOC_UNRESVSP64: + return ioctl_preallocate(filp, arg); } return vfs_ioctl(filp, cmd, arg); diff --git a/fs/open.c b/fs/open.c index 83cdb9d..0703bcb 100644 --- a/fs/open.c +++ b/fs/open.c @@ -360,62 +360,61 @@ asmlinkage long sys_ftruncate64(unsigned int fd, loff_t length) } #endif -asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, loff_t len) +long do_fallocate(struct file *file, int mode, loff_t offset, loff_t len) { - struct file *file; struct inode *inode; - long ret = -EINVAL; + long ret; if (offset < 0 || len <= 0) - goto out; + return -EINVAL; /* Return error if mode is not supported */ - ret = -EOPNOTSUPP; if (mode && !(mode & FALLOC_FL_KEEP_SIZE)) - goto out; + return -EOPNOTSUPP; - ret = -EBADF; - file = fget(fd); - if (!file) - goto out; - if (!(file->f_mode & FMODE_WRITE)) - goto out_fput; + if (!file || !(file->f_mode & FMODE_WRITE)) + return -EBADF; /* * Revalidate the write permissions, in case security policy has * changed since the files were opened. */ ret = security_file_permission(file, MAY_WRITE); if (ret) - goto out_fput; + return ret; inode = file->f_path.dentry->d_inode; - - ret = -ESPIPE; if (S_ISFIFO(inode->i_mode)) - goto out_fput; + return -ESPIPE; - ret = -ENODEV; /* * Let individual file system decide if it supports preallocation * for directories or not. */ if (!S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode)) - goto out_fput; + return -ENODEV; - ret = -EFBIG; /* Check for wrap through zero too */ if (((offset + len) > inode->i_sb->s_maxbytes) || ((offset + len) < 0)) - goto out_fput; + return -EFBIG; if (inode->i_op && inode->i_op->fallocate) - ret = inode->i_op->fallocate(inode, mode, offset, len); + return inode->i_op->fallocate(inode, mode, offset, len); else - ret = -EOPNOTSUPP; + return -EOPNOTSUPP; +} -out_fput: - fput(file); -out: - return ret; +asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, loff_t len) +{ + struct file *file; + int error = -EBADF; + + file = fget(fd); + if (file) { + error = do_fallocate(file, mode, offset, len); + fput(file); + } + + return error; } /* diff --git a/include/linux/falloc.h b/include/linux/falloc.h index 8e912ab..4f2a727 100644 --- a/include/linux/falloc.h +++ b/include/linux/falloc.h @@ -3,4 +3,23 @@ #define FALLOC_FL_KEEP_SIZE 0x01 /* default is extend size */ +/* + * Space reservation / allocation ioctls and argument structure + * are designed to be compatible with the legacy XFS ioctls. + */ +struct space_resv { + __s16 l_type; + __s16 l_whence; + __s64 l_start; + __s64 l_len; /* len == 0 means until end of file */ + __s32 l_sysid; + __u32 l_pid; + __s32 l_pad[4]; /* reserve area */ +}; + +#define F_IOC_RESVSP _IOW('X', 40, struct space_resv) +#define F_IOC_UNRESVSP _IOW('X', 41, struct space_resv) +#define F_IOC_RESVSP64 _IOW('X', 42, struct space_resv) +#define F_IOC_UNRESVSP64 _IOW('X', 43, struct space_resv) + #endif /* _FALLOC_H_ */ diff --git a/include/linux/fs.h b/include/linux/fs.h index 4a853ef..b1d8f12 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1671,6 +1671,8 @@ static inline int break_lease(struct inode *inode, unsigned int mode) extern int do_truncate(struct dentry *, loff_t start, unsigned int time_attrs, struct file *filp); +extern long do_fallocate(struct file *file, int mode, loff_t offset, + loff_t len); extern long do_sys_open(int dfd, const char __user *filename, int flags, int mode); extern struct file *filp_open(const char *, int, int); From Martin@lichtvoll.de Mon Dec 15 12:49:47 2008 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, RCVD_IN_SORBS_WEB 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 mBFIniKj029699 for ; Mon, 15 Dec 2008 12:49:47 -0600 X-ASG-Debug-ID: 1229366981-629500630000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.lichtvoll.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 31C5F1733A4B for ; Mon, 15 Dec 2008 10:49:41 -0800 (PST) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id 7Jf6IGlHIGRrQyab for ; Mon, 15 Dec 2008 10:49:41 -0800 (PST) Received: from shambhala.lichtvoll.local (DSL01.83.171.170.108.ip-pool.NEFkom.net [83.171.170.108]) by mail.lichtvoll.de (Postfix) with ESMTPSA id B4E055AE18 for ; Mon, 15 Dec 2008 19:49:05 +0100 (CET) From: Martin Steigerwald To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Date: Mon, 15 Dec 2008 19:48:59 +0100 User-Agent: KMail/1.9.9 References: <200812141912.59649.Martin@lichtvoll.de> <18757.33373.744917.457587@tree.ty.sabi.co.uk> (sfid-20081215_095747_992215_AEAEC38B) In-Reply-To: <18757.33373.744917.457587@tree.ty.sabi.co.uk> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200812151948.59870.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1229366982 X-Barracuda-Bayes: INNOCENT GLOBAL 0.3983 1.0000 -0.0043 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.00 X-Barracuda-Spam-Status: No, SCORE=-0.00 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.12806 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Am Sonntag 14 Dezember 2008 schrieb Peter Grandi: > [ ... ] > > But - as far as I understood - the filesystem doesn't have to > > wait for barriers to complete, but could continue issuing IO > > requests happily. A barrier only means, any request prior to > > that have to land before and any after it after it. > > > > It doesn't mean that the barrier has to land immediately and > > the filesystem has to wait for this. At least that always was > > the whole point of barriers for me. If thats not the case I > > misunderstood the purpose of barriers to the maximum extent > > possible. > > Unfortunately that seems the case. > > The purpose of barriers is to guarantee that relevant data is > known to be on persistent storage (kind of hardware 'fsync'). > > In effect write barrier means "tell me when relevant data is on > persistent storage", or less precisely "flush/sync writes now > and tell me when it is done". Properties as to ordering are just > a side effect. Interesting to know. Thanks for long explaination. Unfortunately in my understanding none of this is reflected by Documentation/block/barrier.txt Especially this mentions: --------------------------------------------------------------------- I/O Barriers ============ Tejun Heo , July 22 2005 I/O barrier requests are used to guarantee ordering around the barrier requests. Unless you're crazy enough to use disk drives for implementing synchronization constructs (wow, sounds interesting...), the ordering is meaningful only for write requests for things like journal checkpoints. All requests queued before a barrier request must be finished (made it to the physical medium) before the barrier request is started, and all requests queued after the barrier request must be started only after the barrier request is finished (again, made it to the physical medium) In other words, I/O barrier requests have the following two properties. 1. Request ordering Requests cannot pass the barrier request. Preceding requests are processed before the barrier and following requests after. Depending on what features a drive supports, this can be done in one of the following three ways. i. For devices which have queue depth greater than 1 (TCQ devices) and support ordered tags, block layer can just issue the barrier as an ordered request and the lower level driver, controller and drive itself are responsible for making sure that the ordering constraint is met. Most modern SCSI controllers/drives should support this. NOTE: SCSI ordered tag isn't currently used due to limitation in the SCSI midlayer, see the following random notes section. ii. For devices which have queue depth greater than 1 but don't support ordered tags, block layer ensures that the requests preceding a barrier request finishes before issuing the barrier request. Also, it defers requests following the barrier until the barrier request is finished. Older SCSI controllers/drives and SATA drives fall in this category. iii. Devices which have queue depth of 1. This is a degenerate case of ii. Just keeping issue order suffices. Ancient SCSI controllers/drives and IDE drives are in this category. 2. Forced flushing to physical medium Again, if you're not gonna do synchronization with disk drives (dang, it sounds even more appealing now!), the reason you use I/O barriers is mainly to protect filesystem integrity when power failure or some other events abruptly stop the drive from operating and possibly make the drive lose data in its cache. So, I/O barriers need to guarantee that requests actually get written to non-volatile medium in order. There are four cases, i. No write-back cache. Keeping requests ordered is enough. ii. Write-back cache but no flush operation. There's no way to guarantee physical-medium commit order. This kind of devices can't to I/O barriers. iii. Write-back cache and flush operation but no FUA (forced unit access). We need two cache flushes - before and after the barrier request. iv. Write-back cache, flush operation and FUA. We still need one flush to make sure requests preceding a barrier are written to medium, but post-barrier flush can be avoided by using FUA write on the barrier itself. --------------------------------------------------------------------- I do not see any mention of "tell me when its finished" in that file. It just mentions that a cache flush has to be issued before the write barrier and then it shall issue the barrier either as a FUA (forced unit access) request or it shall issue a cache flush after the barrier request. No where it is written that this has to happen immediately. The documentation file is mainly about ordering requests instead and that cache flushes may be used to enforce that regular requests cannot pass barrier requests. Nor do I understand why the filesystem needs to know whether a barrier has been completed - it just needs to know whether the block device / driver can handle barrier requests. If the filesystem knows that requests are written with certain order constraint, then it shouldn't matter when they are written. When should be a choice of the user on how much data she / he risks to loose in case of a sudden interruption of writing out requests. Thus I think the mentioned documentation is at least misleading, if your description matches the actual implementation of write barriers. Then I think it should be adapted, changed. Ciao, -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From arekm@carme.pld-linux.org Mon Dec 15 13:29:49 2008 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 mBFJTnHt032140 for ; Mon, 15 Dec 2008 13:29:49 -0600 X-ASG-Debug-ID: 1229369387-6bd201590000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from carme.pld-linux.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BAA1617335C9 for ; Mon, 15 Dec 2008 11:29:47 -0800 (PST) Received: from carme.pld-linux.org (carme.pld-linux.org [193.239.45.140]) by cuda.sgi.com with ESMTP id x7GVUGAQAUf8SCcM for ; Mon, 15 Dec 2008 11:29:47 -0800 (PST) Received: from arekm by carme.pld-linux.org with local (Exim 4.69) (envelope-from ) id 1LCJ8U-000HGT-QY; Mon, 15 Dec 2008 20:29:46 +0100 From: Arkadiusz Miskiewicz To: linux-xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 3/6] Apply gettext translation to strings kept in format->{fmt,msg,type}. Subject: [PATCH 3/6] Apply gettext translation to strings kept in format->{fmt,msg,type}. Date: Mon, 15 Dec 2008 20:29:43 +0100 Message-Id: <1229369386-66312-3-git-send-email-arekm@maven.pl> X-Mailer: git-send-email 1.6.0.5 In-Reply-To: <1229369386-66312-2-git-send-email-arekm@maven.pl> References: <1229369386-66312-1-git-send-email-arekm@maven.pl> <1229369386-66312-2-git-send-email-arekm@maven.pl> X-Barracuda-Connect: carme.pld-linux.org[193.239.45.140] X-Barracuda-Start-Time: 1229369388 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.12808 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Patch by Jakub Bogusz . --- xfsprogs/repair/progress.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) diff --git a/xfsprogs/repair/progress.c b/xfsprogs/repair/progress.c index ff42f82..c6630e5 100644 --- a/xfsprogs/repair/progress.c +++ b/xfsprogs/repair/progress.c @@ -339,16 +339,16 @@ print_final_rpt(void) if (report_interval) { switch(msgp->format->format) { case FMT1: - sprintf (msgbuf, *msgp->format->fmt, + sprintf (msgbuf, _(*msgp->format->fmt), tmp->tm_hour, tmp->tm_min, tmp->tm_sec, - msgp->format->msg, sum, - *msgp->total, *msgp->format->type); + _(msgp->format->msg), sum, + *msgp->total, _(*msgp->format->type)); break; case FMT2: - sprintf (msgbuf, *msgp->format->fmt, + sprintf (msgbuf, _(*msgp->format->fmt), tmp->tm_hour, tmp->tm_min, tmp->tm_sec, - msgp->format->msg, sum, - *msgp->format->type); + _(msgp->format->msg), sum, + _(*msgp->format->type)); break; } do_log(_("%s"), msgbuf); -- 1.6.0.5 From arekm@carme.pld-linux.org Mon Dec 15 13:29:52 2008 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_44, J_CHICKENPOX_45,J_CHICKENPOX_55,J_CHICKENPOX_62 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 mBFJTqRj032147 for ; Mon, 15 Dec 2008 13:29:52 -0600 X-ASG-Debug-ID: 1229369390-629401ec0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from carme.pld-linux.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F388217335D4 for ; Mon, 15 Dec 2008 11:29:50 -0800 (PST) Received: from carme.pld-linux.org (carme.pld-linux.org [193.239.45.140]) by cuda.sgi.com with ESMTP id elPFZayxC0kMqNad for ; Mon, 15 Dec 2008 11:29:50 -0800 (PST) Received: from arekm by carme.pld-linux.org with local (Exim 4.69) (envelope-from ) id 1LCJ8U-000HGZ-Si; Mon, 15 Dec 2008 20:29:46 +0100 From: Arkadiusz Miskiewicz To: linux-xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 4/6] xfs_quota: Return non zero exit status in error conditions. Subject: [PATCH 4/6] xfs_quota: Return non zero exit status in error conditions. Date: Mon, 15 Dec 2008 20:29:44 +0100 Message-Id: <1229369386-66312-4-git-send-email-arekm@maven.pl> X-Mailer: git-send-email 1.6.0.5 In-Reply-To: <1229369386-66312-3-git-send-email-arekm@maven.pl> References: <1229369386-66312-1-git-send-email-arekm@maven.pl> <1229369386-66312-2-git-send-email-arekm@maven.pl> <1229369386-66312-3-git-send-email-arekm@maven.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: carme.pld-linux.org[193.239.45.140] X-Barracuda-Start-Time: 1229369390 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.12808 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.20 BSF_SC0_MJ615 Custom Rule MJ615 Patch by Arkadiusz MiÅ›kiewicz . --- xfsprogs/quota/edit.c | 45 ++++++++++++++++++++++++++++++--------------- xfsprogs/quota/free.c | 5 +++++ xfsprogs/quota/project.c | 29 ++++++++++++++++++++++------- xfsprogs/quota/quota.c | 4 ++++ xfsprogs/quota/report.c | 1 + xfsprogs/quota/state.c | 4 ++++ xfsprogs/quota/util.c | 2 ++ 7 files changed, 68 insertions(+), 22 deletions(-) diff --git a/xfsprogs/quota/edit.c b/xfsprogs/quota/edit.c index a60d37e..15c72c4 100644 --- a/xfsprogs/quota/edit.c +++ b/xfsprogs/quota/edit.c @@ -140,9 +140,11 @@ set_limits( d.d_rtb_hardlimit = *rtbhard; d.d_rtb_softlimit = *rtbsoft; - if (xfsquotactl(XFS_SETQLIM, dev, type, id, (void *)&d) < 0) + if (xfsquotactl(XFS_SETQLIM, dev, type, id, (void *)&d) < 0) { + exitcode = 1; fprintf(stderr, _("%s: cannot set limits: %s\n"), progname, strerror(errno)); + } } static void @@ -159,10 +161,11 @@ set_user_limits( { uid_t uid = uid_from_string(name); - if (uid == -1) + if (uid == -1) { + exitcode = 1; fprintf(stderr, _("%s: invalid user name: %s\n"), progname, name); - else + } else set_limits(uid, type, mask, fs_path->fs_name, bsoft, bhard, isoft, ihard, rtbsoft, rtbhard); } @@ -181,10 +184,11 @@ set_group_limits( { gid_t gid = gid_from_string(name); - if (gid == -1) + if (gid == -1) { + exitcode = 1; fprintf(stderr, _("%s: invalid group name: %s\n"), progname, name); - else + } else set_limits(gid, type, mask, fs_path->fs_name, bsoft, bhard, isoft, ihard, rtbsoft, rtbhard); } @@ -203,10 +207,11 @@ set_project_limits( { prid_t prid = prid_from_string(name); - if (prid == -1) + if (prid == -1) { + exitcode = 1; fprintf(stderr, _("%s: invalid project name: %s\n"), progname, name); - else + } else set_limits(prid, type, mask, fs_path->fs_name, bsoft, bhard, isoft, ihard, rtbsoft, rtbhard); } @@ -315,12 +320,14 @@ limit_f( else if (extractb(s, "rtbhard=", 7, bsize, ssize, &rtbhard)) mask |= FS_DQ_RTBHARD; else { + exitcode = 1; fprintf(stderr, _("%s: unrecognised argument %s\n"), progname, s); return 0; } } if (!mask) { + exitcode = 1; fprintf(stderr, _("%s: cannot find any valid arguments\n"), progname); return 0; @@ -428,6 +435,7 @@ restore_f( if (fname) { if ((fp = fopen(fname, "r")) == NULL) { + exitcode = 1; fprintf(stderr, _("%s: fopen on %s failed: %s\n"), progname, fname, strerror(errno)); return 0; @@ -458,9 +466,11 @@ set_timer( d.d_btimer = value; d.d_rtbtimer = value; - if (xfsquotactl(XFS_SETQLIM, dev, type, 0, (void *)&d) < 0) + if (xfsquotactl(XFS_SETQLIM, dev, type, 0, (void *)&d) < 0) { + exitcode = 1; fprintf(stderr, _("%s: cannot set timer: %s\n"), progname, strerror(errno)); + } } static int @@ -530,9 +540,11 @@ set_warnings( d.d_bwarns = value; d.d_rtbwarns = value; - if (xfsquotactl(XFS_SETQLIM, dev, type, id, (void *)&d) < 0) + if (xfsquotactl(XFS_SETQLIM, dev, type, id, (void *)&d) < 0) { + exitcode = 1; fprintf(stderr, _("%s: cannot set warnings: %s\n"), progname, strerror(errno)); + } } static void @@ -544,10 +556,11 @@ set_user_warnings( { uid_t uid = uid_from_string(name); - if (uid == -1) + if (uid == -1) { + exitcode = 1; fprintf(stderr, _("%s: invalid user name: %s\n"), progname, name); - else + } else set_warnings(uid, type, mask, fs_path->fs_name, value); } @@ -560,10 +573,11 @@ set_group_warnings( { gid_t gid = gid_from_string(name); - if (gid == -1) + if (gid == -1) { + exitcode = 1; fprintf(stderr, _("%s: invalid group name: %s\n"), progname, name); - else + } else set_warnings(gid, type, mask, fs_path->fs_name, value); } @@ -576,10 +590,11 @@ set_project_warnings( { prid_t prid = prid_from_string(name); - if (prid == -1) + if (prid == -1) { + exitcode = 1; fprintf(stderr, _("%s: invalid project name: %s\n"), progname, name); - else + } else set_warnings(prid, type, mask, fs_path->fs_name, value); } diff --git a/xfsprogs/quota/free.c b/xfsprogs/quota/free.c index 28b944b..1f10ded 100644 --- a/xfsprogs/quota/free.c +++ b/xfsprogs/quota/free.c @@ -61,6 +61,7 @@ mount_free_space_data( int fd; if ((fd = open(mount->fs_dir, O_RDONLY)) < 0) { + exitcode = 1; fprintf(stderr, "%s: cannot open %s: %s\n", progname, mount->fs_dir, strerror(errno)); return 0; @@ -128,17 +129,20 @@ projects_free_space_data( return 0; if ((fd = open(path->fs_dir, O_RDONLY)) < 0) { + exitcode = 1; fprintf(stderr, "%s: cannot open %s: %s\n", progname, path->fs_dir, strerror(errno)); return 0; } if ((xfsctl(path->fs_dir, fd, XFS_IOC_FSGETXATTR, &fsx)) < 0) { + exitcode = 1; perror("XFS_IOC_FSGETXATTR"); close(fd); return 0; } if (!(fsx.fsx_xflags & XFS_XFLAG_PROJINHERIT)) { + exitcode = 1; fprintf(stderr, _("%s: project quota flag not set on %s\n"), progname, path->fs_dir); close(fd); @@ -146,6 +150,7 @@ projects_free_space_data( } if (path->fs_prid != fsx.fsx_projid) { + exitcode = 1; fprintf(stderr, _("%s: project ID %u (%s) doesn't match ID %u (%s)\n"), progname, path->fs_prid, projects_file, diff --git a/xfsprogs/quota/project.c b/xfsprogs/quota/project.c index e2e61c3..7eac8e4 100644 --- a/xfsprogs/quota/project.c +++ b/xfsprogs/quota/project.c @@ -91,6 +91,7 @@ check_project( int fd; if (flag == FTW_NS ){ + exitcode = 1; fprintf(stderr, _("%s: cannot stat file %s\n"), progname, path); return 0; } @@ -99,13 +100,15 @@ check_project( return 0; } - if ((fd = open(path, O_RDONLY|O_NOCTTY)) == -1) + if ((fd = open(path, O_RDONLY|O_NOCTTY)) == -1) { + exitcode = 1; fprintf(stderr, _("%s: cannot open %s: %s\n"), progname, path, strerror(errno)); - else if ((xfsctl(path, fd, XFS_IOC_FSGETXATTR, &fsx)) < 0) + } else if ((xfsctl(path, fd, XFS_IOC_FSGETXATTR, &fsx)) < 0) { + exitcode = 1; fprintf(stderr, _("%s: cannot get flags on %s: %s\n"), progname, path, strerror(errno)); - else { + } else { if (fsx.fsx_projid != prid) printf(_("%s - project identifier is not set" " (inode=%u, tree=%u)\n"), @@ -130,6 +133,7 @@ clear_project( int fd; if (flag == FTW_NS ){ + exitcode = 1; fprintf(stderr, _("%s: cannot stat file %s\n"), progname, path); return 0; } @@ -139,10 +143,12 @@ clear_project( } if ((fd = open(path, O_RDONLY|O_NOCTTY)) == -1) { + exitcode = 1; fprintf(stderr, _("%s: cannot open %s: %s\n"), progname, path, strerror(errno)); return 0; } else if (xfsctl(path, fd, XFS_IOC_FSGETXATTR, &fsx) < 0) { + exitcode = 1; fprintf(stderr, _("%s: cannot get flags on %s: %s\n"), progname, path, strerror(errno)); close(fd); @@ -151,9 +157,11 @@ clear_project( fsx.fsx_projid = 0; fsx.fsx_xflags &= ~XFS_XFLAG_PROJINHERIT; - if (xfsctl(path, fd, XFS_IOC_FSSETXATTR, &fsx) < 0) + if (xfsctl(path, fd, XFS_IOC_FSSETXATTR, &fsx) < 0) { + exitcode = 1; fprintf(stderr, _("%s: cannot clear project on %s: %s\n"), progname, path, strerror(errno)); + } close(fd); return 0; } @@ -169,6 +177,7 @@ setup_project( int fd; if (flag == FTW_NS ){ + exitcode = 1; fprintf(stderr, _("%s: cannot stat file %s\n"), progname, path); return 0; } @@ -178,10 +187,12 @@ setup_project( } if ((fd = open(path, O_RDONLY|O_NOCTTY)) == -1) { + exitcode = 1; fprintf(stderr, _("%s: cannot open %s: %s\n"), progname, path, strerror(errno)); return 0; } else if (xfsctl(path, fd, XFS_IOC_FSGETXATTR, &fsx) < 0) { + exitcode = 1; fprintf(stderr, _("%s: cannot get flags on %s: %s\n"), progname, path, strerror(errno)); close(fd); @@ -190,9 +201,11 @@ setup_project( fsx.fsx_projid = prid; fsx.fsx_xflags |= XFS_XFLAG_PROJINHERIT; - if (xfsctl(path, fd, XFS_IOC_FSSETXATTR, &fsx) < 0) + if (xfsctl(path, fd, XFS_IOC_FSSETXATTR, &fsx) < 0) { + exitcode = 1; fprintf(stderr, _("%s: cannot set project on %s: %s\n"), progname, path, strerror(errno)); + } close(fd); return 0; } @@ -272,6 +285,7 @@ project_f( setprfiles(); if (access(projects_file, F_OK) != 0) { + exitcode = 1; fprintf(stderr, _("projects file \"%s\" doesn't exist\n"), projects_file); return 0; @@ -279,10 +293,11 @@ project_f( while (argc > optind) { prid = prid_from_string(argv[optind]); - if (prid == -1) + if (prid == -1) { + exitcode = 1; fprintf(stderr, _("%s - no such project in %s\n"), argv[optind], projects_file); - else + } else project(argv[optind], type); optind++; } diff --git a/xfsprogs/quota/quota.c b/xfsprogs/quota/quota.c index b3b65eb..4a1f39f 100644 --- a/xfsprogs/quota/quota.c +++ b/xfsprogs/quota/quota.c @@ -231,6 +231,7 @@ quota_user_type( id = u->pw_uid; name = u->pw_name; } else { + exitcode = 1; fprintf(stderr, _("%s: cannot find user %s\n"), progname, name); return; @@ -280,6 +281,7 @@ quota_group_type( gid = g->gr_gid; name = g->gr_name; } else { + exitcode = 1; fprintf(stderr, _("%s: cannot find group %s\n"), progname, name); return; @@ -336,6 +338,7 @@ quota_proj_type( prid_t id; if (!name) { + exitcode = 1; fprintf(stderr, _("%s: must specify a project name/ID\n"), progname); return; @@ -348,6 +351,7 @@ quota_proj_type( id = p->pr_prid; name = p->pr_name; } else { + exitcode = 1; fprintf(stderr, _("%s: cannot find project %s\n"), progname, name); return; diff --git a/xfsprogs/quota/report.c b/xfsprogs/quota/report.c index 332c3cc..7902dbd 100644 --- a/xfsprogs/quota/report.c +++ b/xfsprogs/quota/report.c @@ -115,6 +115,7 @@ dump_limits_any_type( uint id; if ((mount = fs_table_lookup(dir, FS_MOUNT_POINT)) == NULL) { + exitcode = 1; fprintf(stderr, "%s: cannot find mount point %s\n", progname, dir); return; diff --git a/xfsprogs/quota/state.c b/xfsprogs/quota/state.c index dd1eeec..aa03340 100644 --- a/xfsprogs/quota/state.c +++ b/xfsprogs/quota/state.c @@ -253,6 +253,7 @@ enable_enforcement( mount = fs_table_lookup(dir, FS_MOUNT_POINT); if (!mount) { + exitcode = 1; fprintf(stderr, "%s: unknown mount point %s\n", progname, dir); return; } @@ -274,6 +275,7 @@ disable_enforcement( mount = fs_table_lookup(dir, FS_MOUNT_POINT); if (!mount) { + exitcode = 1; fprintf(stderr, "%s: unknown mount point %s\n", progname, dir); return; } @@ -295,6 +297,7 @@ quotaoff( mount = fs_table_lookup(dir, FS_MOUNT_POINT); if (!mount) { + exitcode = 1; fprintf(stderr, "%s: unknown mount point %s\n", progname, dir); return; } @@ -327,6 +330,7 @@ remove_extents( mount = fs_table_lookup(dir, FS_MOUNT_POINT); if (!mount) { + exitcode = 1; fprintf(stderr, "%s: unknown mount point %s\n", progname, dir); return; } diff --git a/xfsprogs/quota/util.c b/xfsprogs/quota/util.c index 274bfe6..18ccae2 100644 --- a/xfsprogs/quota/util.c +++ b/xfsprogs/quota/util.c @@ -413,11 +413,13 @@ fopen_write_secure( return stdout; if ((fd = open(fname, O_CREAT|O_WRONLY|O_EXCL, 0600)) < 0) { + exitcode = 1; fprintf(stderr, _("%s: open on %s failed: %s\n"), progname, fname, strerror(errno)); return NULL; } if ((fp = fdopen(fd, "w")) == NULL) { + exitcode = 1; fprintf(stderr, _("%s: fdopen on %s failed: %s\n"), progname, fname, strerror(errno)); close(fd); -- 1.6.0.5 From arekm@carme.pld-linux.org Mon Dec 15 13:29:56 2008 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_81 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 mBFJTuVi032159 for ; Mon, 15 Dec 2008 13:29:56 -0600 X-ASG-Debug-ID: 1229369387-3a7903720000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from carme.pld-linux.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 41E66218A7 for ; Mon, 15 Dec 2008 11:29:47 -0800 (PST) Received: from carme.pld-linux.org (carme.pld-linux.org [193.239.45.140]) by cuda.sgi.com with ESMTP id DfwCErQrTIA8oJXo for ; Mon, 15 Dec 2008 11:29:47 -0800 (PST) Received: from arekm by carme.pld-linux.org with local (Exim 4.69) (envelope-from ) id 1LCJ8V-000HGh-1Q; Mon, 15 Dec 2008 20:29:47 +0100 From: Arkadiusz Miskiewicz To: linux-xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 6/6] xfs_quota: Fix range for -U. Subject: [PATCH 6/6] xfs_quota: Fix range for -U. Date: Mon, 15 Dec 2008 20:29:46 +0100 Message-Id: <1229369386-66312-6-git-send-email-arekm@maven.pl> X-Mailer: git-send-email 1.6.0.5 In-Reply-To: <1229369386-66312-5-git-send-email-arekm@maven.pl> References: <1229369386-66312-1-git-send-email-arekm@maven.pl> <1229369386-66312-2-git-send-email-arekm@maven.pl> <1229369386-66312-3-git-send-email-arekm@maven.pl> <1229369386-66312-4-git-send-email-arekm@maven.pl> <1229369386-66312-5-git-send-email-arekm@maven.pl> X-Barracuda-Connect: carme.pld-linux.org[193.239.45.140] X-Barracuda-Start-Time: 1229369388 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.12808 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- xfs_quota report "-L" option specifies lower range of requested IDs. "-U" specifies upper range but "-L" is closed range while "-U" is open range. Make "-U" closed range, too which is something more expected. --- xfsprogs/quota/report.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/xfsprogs/quota/report.c b/xfsprogs/quota/report.c index 21b4edb..2184158 100644 --- a/xfsprogs/quota/report.c +++ b/xfsprogs/quota/report.c @@ -124,7 +124,7 @@ dump_limits_any_type( } if (upper) { - for (id = lower; id < upper; id++) + for (id = lower; id <= upper; id++) dump_file(fp, id, type, mount->fs_name); return; } @@ -398,7 +398,7 @@ report_user_mount( uint id; if (upper) { /* identifier range specified */ - for (id = lower; id < upper; id++) { + for (id = lower; id <= upper; id++) { snprintf(n, sizeof(n)-1, "#%u", id); if (report_mount(fp, id, n, form, XFS_USER_QUOTA, mount, flags)) @@ -436,7 +436,7 @@ report_group_mount( uint id; if (upper) { /* identifier range specified */ - for (id = lower; id < upper; id++) { + for (id = lower; id <= upper; id++) { snprintf(n, sizeof(n)-1, "#%u", id); if (report_mount(fp, id, n, form, XFS_GROUP_QUOTA, mount, flags)) @@ -473,7 +473,7 @@ report_project_mount( uint id; if (upper) { /* identifier range specified */ - for (id = lower; id < upper; id++) { + for (id = lower; id <= upper; id++) { snprintf(n, sizeof(n)-1, "#%u", id); if (report_mount(fp, id, n, form, XFS_PROJ_QUOTA, mount, flags)) -- 1.6.0.5 From arekm@carme.pld-linux.org Mon Dec 15 13:30:20 2008 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 (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 mBFJUKE7032253 for ; Mon, 15 Dec 2008 13:30:20 -0600 X-ASG-Debug-ID: 1229369418-3a9f03750000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from carme.pld-linux.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8A948218BE for ; Mon, 15 Dec 2008 11:30:19 -0800 (PST) Received: from carme.pld-linux.org (carme.pld-linux.org [193.239.45.140]) by cuda.sgi.com with ESMTP id 5qQD11WNDmapID7a for ; Mon, 15 Dec 2008 11:30:19 -0800 (PST) Received: from arekm by carme.pld-linux.org with local (Exim 4.69) (envelope-from ) id 1LCJ8U-000HGR-PB; Mon, 15 Dec 2008 20:29:46 +0100 From: Arkadiusz Miskiewicz To: linux-xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 2/6] Fix build when gettext is enabled. Subject: [PATCH 2/6] Fix build when gettext is enabled. Date: Mon, 15 Dec 2008 20:29:42 +0100 Message-Id: <1229369386-66312-2-git-send-email-arekm@maven.pl> X-Mailer: git-send-email 1.6.0.5 In-Reply-To: <1229369386-66312-1-git-send-email-arekm@maven.pl> References: <1229369386-66312-1-git-send-email-arekm@maven.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: carme.pld-linux.org[193.239.45.140] X-Barracuda-Start-Time: 1229369419 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.12808 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Build fails when gettext is enabled: progress.c:16: error: initializer element is not constant progress.c:16: error: (near initialization for ‘rpt_types[0]’) progress.c:18: error: initializer element is not constant progress.c:18: error: (near initialization for ‘rpt_types[1]’) [...] Fix that using commonly standard N_() macro. Patch by Jakub Bogusz . Improvements by Arkadiusz MiÅ›kiewicz . --- xfsprogs/include/buildrules | 2 +- xfsprogs/include/platform_defs.h.in | 2 + xfsprogs/repair/progress.c | 50 +++++++++++++++++----------------- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/xfsprogs/include/buildrules b/xfsprogs/include/buildrules index 7155b21..1047ec3 100644 --- a/xfsprogs/include/buildrules +++ b/xfsprogs/include/buildrules @@ -40,7 +40,7 @@ endif ifdef POTHEAD $(POTHEAD): $(XGETTEXTFILES) - $(XGETTEXT) --language=C --keyword=_ -o $@ $(XGETTEXTFILES) + $(XGETTEXT) --language=C --keyword=_ --keyword=N_ -o $@ $(XGETTEXTFILES) # Generate temp .po files, to check whether translations need updating. # Not by default, due to gettext output differences between versions. diff --git a/xfsprogs/include/platform_defs.h.in b/xfsprogs/include/platform_defs.h.in index 6682ef6..4f8ebe5 100644 --- a/xfsprogs/include/platform_defs.h.in +++ b/xfsprogs/include/platform_defs.h.in @@ -129,8 +129,10 @@ typedef unsigned long long __psunsigned_t; #ifdef ENABLE_GETTEXT # include # define _(x) gettext(x) +# define N_(x) x #else # define _(x) (x) +# define N_(x) x # define textdomain(d) do { } while (0) # define bindtextdomain(d,dir) do { } while (0) #endif diff --git a/xfsprogs/repair/progress.c b/xfsprogs/repair/progress.c index 0ca9a8a..ff42f82 100644 --- a/xfsprogs/repair/progress.c +++ b/xfsprogs/repair/progress.c @@ -13,30 +13,30 @@ static char *rpt_types[] = { #define TYPE_INODE 0 - _("inodes"), + N_("inodes"), #define TYPE_BLOCK 1 - _("blocks"), + N_("blocks"), #define TYPE_DIR 2 - _("directories"), + N_("directories"), #define TYPE_AG 3 - _("allocation groups"), + N_("allocation groups"), #define TYPE_AGI_BUCKET 4 - _("AGI unlinked buckets"), + N_("AGI unlinked buckets"), #define TYPE_EXTENTS 5 - _("extents"), + N_("extents"), #define TYPE_RTEXTENTS 6 - _("realtime extents"), + N_("realtime extents"), #define TYPE_UNLINKED_LIST 7 - _("unlinked lists") + N_("unlinked lists") }; static char *rpt_fmts[] = { #define FMT1 0 -_(" - %02d:%02d:%02d: %s - %llu of %llu %s done\n"), +N_(" - %02d:%02d:%02d: %s - %llu of %llu %s done\n"), #define FMT2 1 -_(" - %02d:%02d:%02d: %s - %llu %s done\n"), +N_(" - %02d:%02d:%02d: %s - %llu %s done\n"), }; typedef struct progress_rpt_s { @@ -48,35 +48,35 @@ typedef struct progress_rpt_s { static progress_rpt_t progress_rpt_reports[] = { -{FMT1, _("scanning filesystem freespace"), /* 0 */ +{FMT1, N_("scanning filesystem freespace"), /* 0 */ &rpt_fmts[FMT1], &rpt_types[TYPE_AG]}, -{FMT1, _("scanning agi unlinked lists"), /* 1 */ +{FMT1, N_("scanning agi unlinked lists"), /* 1 */ &rpt_fmts[FMT1], &rpt_types[TYPE_AG]}, -{FMT2, _("check uncertain AG inodes"), /* 2 */ +{FMT2, N_("check uncertain AG inodes"), /* 2 */ &rpt_fmts[FMT2], &rpt_types[TYPE_AGI_BUCKET]}, -{FMT1, _("process known inodes and inode discovery"), /* 3 */ +{FMT1, N_("process known inodes and inode discovery"), /* 3 */ &rpt_fmts[FMT1], &rpt_types[TYPE_INODE]}, -{FMT1, _("process newly discovered inodes"), /* 4 */ +{FMT1, N_("process newly discovered inodes"), /* 4 */ &rpt_fmts[FMT1], &rpt_types[TYPE_AG]}, -{FMT1, _("setting up duplicate extent list"), /* 5 */ +{FMT1, N_("setting up duplicate extent list"), /* 5 */ &rpt_fmts[FMT1], &rpt_types[TYPE_AG]}, -{FMT1, _("initialize realtime bitmap"), /* 6 */ +{FMT1, N_("initialize realtime bitmap"), /* 6 */ &rpt_fmts[FMT1], &rpt_types[TYPE_BLOCK]}, -{FMT1, _("reset realtime bitmaps"), /* 7 */ +{FMT1, N_("reset realtime bitmaps"), /* 7 */ &rpt_fmts[FMT1], &rpt_types[TYPE_AG]}, -{FMT1, _("check for inodes claiming duplicate blocks"), /* 8 */ +{FMT1, N_("check for inodes claiming duplicate blocks"), /* 8 */ &rpt_fmts[FMT1], &rpt_types[TYPE_INODE]}, -{FMT1, _("rebuild AG headers and trees"), /* 9 */ +{FMT1, N_("rebuild AG headers and trees"), /* 9 */ &rpt_fmts[FMT1], &rpt_types[TYPE_AG]}, -{FMT1, _("traversing filesystem"), /* 10 */ +{FMT1, N_("traversing filesystem"), /* 10 */ &rpt_fmts[FMT1], &rpt_types[TYPE_AG]}, -{FMT2, _("traversing all unattached subtrees"), /* 11 */ +{FMT2, N_("traversing all unattached subtrees"), /* 11 */ &rpt_fmts[FMT2], &rpt_types[TYPE_DIR]}, -{FMT2, _("moving disconnected inodes to lost+found"), /* 12 */ +{FMT2, N_("moving disconnected inodes to lost+found"), /* 12 */ &rpt_fmts[FMT2], &rpt_types[TYPE_INODE]}, -{FMT1, _("verify and correct link counts"), /* 13 */ +{FMT1, N_("verify and correct link counts"), /* 13 */ &rpt_fmts[FMT1], &rpt_types[TYPE_INODE]}, -{FMT1, _("verify link counts"), /* 14 */ +{FMT1, N_("verify link counts"), /* 14 */ &rpt_fmts[FMT1], &rpt_types[TYPE_INODE]} }; -- 1.6.0.5 From arekm@carme.pld-linux.org Mon Dec 15 13:30:01 2008 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_05,J_CHICKENPOX_45, J_CHICKENPOX_51,J_CHICKENPOX_71,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 mBFJU0L6032171 for ; Mon, 15 Dec 2008 13:30:01 -0600 X-ASG-Debug-ID: 1229369387-3a6f037e0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from carme.pld-linux.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3C2F0218A9 for ; Mon, 15 Dec 2008 11:29:47 -0800 (PST) Received: from carme.pld-linux.org (carme.pld-linux.org [193.239.45.140]) by cuda.sgi.com with ESMTP id K6rKuCtFhribKZHf for ; Mon, 15 Dec 2008 11:29:47 -0800 (PST) Received: from arekm by carme.pld-linux.org with local (Exim 4.69) (envelope-from ) id 1LCJ8U-000HGP-L7; Mon, 15 Dec 2008 20:29:46 +0100 From: Arkadiusz Miskiewicz To: linux-xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 1/6] Polish translation update. Subject: [PATCH 1/6] Polish translation update. Date: Mon, 15 Dec 2008 20:29:41 +0100 Message-Id: <1229369386-66312-1-git-send-email-arekm@maven.pl> X-Mailer: git-send-email 1.6.0.5 X-Barracuda-Connect: carme.pld-linux.org[193.239.45.140] X-Barracuda-Start-Time: 1229369390 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.27 X-Barracuda-Spam-Status: No, SCORE=-1.27 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE_7580D X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.12808 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.75 BSF_RULE_7580D BODY: Custom Rule 7580D Polish translation updated by Jakub Bogusz . --- xfsprogs/po/pl.po | 2900 ++++++++++++++++++++++++++++++----------------------- 1 files changed, 1618 insertions(+), 1282 deletions(-) diff --git a/xfsprogs/po/pl.po b/xfsprogs/po/pl.po index 79cb822..b4e1d76 100644 --- a/xfsprogs/po/pl.po +++ b/xfsprogs/po/pl.po @@ -1,180 +1,180 @@ # Polish translation for xfsprogs. # This file is distributed under the same license as the xfsprogs package. -# Jakub Bogusz , 2006. +# Jakub Bogusz , 2006-2008. # msgid "" msgstr "" -"Project-Id-Version: xfsprogs 2.8.11\n" +"Project-Id-Version: xfsprogs 2.9.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-08-23 19:22+0200\n" -"PO-Revision-Date: 2006-08-23 19:24+0200\n" +"POT-Creation-Date: 2008-04-23 15:54+1000\n" +"PO-Revision-Date: 2008-06-18 17:11+0200\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8bit\n" -#: ../copy/xfs_copy.c:96 +#: ../copy/xfs_copy.c:102 #, c-format msgid "Check logfile \"%s\" for more details\n" msgstr "Wiêcej szczegó³ów w pliku loga \"%s\"\n" -#: ../copy/xfs_copy.c:102 +#: ../copy/xfs_copy.c:108 #, c-format msgid "%s: could not write to logfile \"%s\".\n" msgstr "%s: nie uda³o siê zapisaæ pliku loga \"%s\".\n" -#: ../copy/xfs_copy.c:105 +#: ../copy/xfs_copy.c:111 #, c-format msgid "Aborting XFS copy -- logfile error -- reason: %s\n" msgstr "Przerwano XFS copy - b³±d pliku loga - przyczyna: %s\n" -#: ../copy/xfs_copy.c:120 ../copy/xfs_copy.c:280 ../copy/xfs_copy.c:557 -#: ../copy/xfs_copy.c:564 +#: ../copy/xfs_copy.c:126 ../copy/xfs_copy.c:286 ../copy/xfs_copy.c:563 +#: ../copy/xfs_copy.c:570 msgid "Aborting XFS copy - reason" msgstr "Przerwano XFS copy - przyczyna" -#: ../copy/xfs_copy.c:134 +#: ../copy/xfs_copy.c:140 msgid "THE FOLLOWING COPIES FAILED TO COMPLETE\n" msgstr "NASTÊPUJ¡CYCH KOPII NIE UDA£O SIÊ UKOÑCZYÆ\n" -#: ../copy/xfs_copy.c:138 +#: ../copy/xfs_copy.c:144 msgid "write error" msgstr "b³±d zapisu" -#: ../copy/xfs_copy.c:140 +#: ../copy/xfs_copy.c:146 msgid "lseek64 error" msgstr "b³±d lseek64" -#: ../copy/xfs_copy.c:141 +#: ../copy/xfs_copy.c:147 #, c-format msgid " at offset %lld\n" msgstr " pod offsetem %lld\n" -#: ../copy/xfs_copy.c:145 +#: ../copy/xfs_copy.c:151 #, c-format msgid "All copies completed.\n" msgstr "Wszystkie kopie ukoñczone.\n" -#: ../copy/xfs_copy.c:148 +#: ../copy/xfs_copy.c:154 #, c-format msgid "See \"%s\" for more details.\n" msgstr "Wiêcej szczegó³ów w \"%s\".\n" -#: ../copy/xfs_copy.c:249 +#: ../copy/xfs_copy.c:255 #, c-format msgid "%s: write error on target %d \"%s\" at offset %lld\n" msgstr "%s: b³±d zapisu przy celu %d \"%s\" pod offsetem %lld\n" -#: ../copy/xfs_copy.c:254 +#: ../copy/xfs_copy.c:260 #, c-format msgid "%s: lseek64 error on target %d \"%s\" at offset %lld\n" msgstr "%s: b³±d lseek64 przy celu %d \"%s\" pod offsetem %lld\n" -#: ../copy/xfs_copy.c:260 +#: ../copy/xfs_copy.c:266 #, c-format msgid "Aborting target %d - reason" msgstr "Przerywano zapis celu %d - przyczyna" -#: ../copy/xfs_copy.c:264 +#: ../copy/xfs_copy.c:270 msgid "Aborting XFS copy - no more targets.\n" msgstr "Przerwano XFS copy - nie ma wiêcej celów.\n" -#: ../copy/xfs_copy.c:275 +#: ../copy/xfs_copy.c:281 #, c-format msgid "%s: thread %d died unexpectedly, target \"%s\" incomplete\n" msgstr "%s: w±tek %d zmar³ nieoczekiwanie, cel \"%s\" niekompletny\n" -#: ../copy/xfs_copy.c:277 +#: ../copy/xfs_copy.c:283 #, c-format msgid "%s: offset was probably %lld\n" msgstr "%s: offset prawdopodobnie %lld\n" -#: ../copy/xfs_copy.c:288 +#: ../copy/xfs_copy.c:294 #, c-format msgid "%s: Unknown child died (should never happen!)\n" msgstr "%s: Nieznany potomek zmar³ (nie powinno siê zdarzyæ!)\n" -#: ../copy/xfs_copy.c:298 +#: ../copy/xfs_copy.c:304 #, c-format msgid "Usage: %s [-bd] [-L logfile] source target [target ...]\n" msgstr "Sk³adnia: %s [-bd] [-L plik_loga] ¼ród³o cel [cel ...]\n" -#: ../copy/xfs_copy.c:380 +#: ../copy/xfs_copy.c:386 #, c-format msgid "%s: lseek64 failure at offset %lld\n" msgstr "%s: niepowodzenie lseek64 pod offsetem %lld\n" -#: ../copy/xfs_copy.c:395 +#: ../copy/xfs_copy.c:401 #, c-format msgid "assert error: buf->length = %d, buf->size = %d\n" msgstr "b³±d zapewnienia: buf->length = %d, buf->size = %d\n" -#: ../copy/xfs_copy.c:402 +#: ../copy/xfs_copy.c:408 #, c-format msgid "%s: read failure at offset %lld\n" msgstr "%s: b³±d odczytu pod offsetem %lld\n" -#: ../copy/xfs_copy.c:537 ../growfs/xfs_growfs.c:179 ../io/init.c:177 -#: ../mkfs/xfs_mkfs.c:1253 ../quota/init.c:131 ../repair/xfs_repair.c:261 +#: ../copy/xfs_copy.c:543 ../growfs/xfs_growfs.c:179 ../io/init.c:180 +#: ../mkfs/xfs_mkfs.c:1354 ../quota/init.c:131 ../repair/xfs_repair.c:313 #: ../rtcp/xfs_rtcp.c:57 #, c-format msgid "%s version %s\n" msgstr "%s wersja %s\n" -#: ../copy/xfs_copy.c:555 +#: ../copy/xfs_copy.c:561 #, c-format msgid "%s: couldn't open log file \"%s\"\n" msgstr "%s: nie uda³o siê otworzyæ pliku loga \"%s\"\n" -#: ../copy/xfs_copy.c:562 +#: ../copy/xfs_copy.c:568 #, c-format msgid "%s: couldn't set up logfile stream\n" msgstr "%s: nie uda³o siê ustanowiæ strumienia pliku loga\n" -#: ../copy/xfs_copy.c:574 +#: ../copy/xfs_copy.c:580 msgid "Couldn't allocate target array\n" msgstr "Nie uda³o siê przydzieliæ tablicy celów\n" -#: ../copy/xfs_copy.c:589 +#: ../copy/xfs_copy.c:595 #, c-format msgid "%s: couldn't register atexit function.\n" msgstr "%s: nie uda³o siê zarejestrowaæ funkcji atexit.\n" -#: ../copy/xfs_copy.c:598 +#: ../copy/xfs_copy.c:604 #, c-format msgid "%s: couldn't open source \"%s\"\n" msgstr "%s: nie uda³o siê otworzyæ ¼ród³a \"%s\"\n" -#: ../copy/xfs_copy.c:604 +#: ../copy/xfs_copy.c:610 #, c-format msgid "%s: couldn't stat source \"%s\"\n" msgstr "%s: nie uda³o siê wykonaæ stat na ¼ródle \"%s\"\n" -#: ../copy/xfs_copy.c:614 +#: ../copy/xfs_copy.c:620 #, c-format msgid "%s: Cannot set direct I/O flag on \"%s\".\n" msgstr "%s: Nie mo¿na ustawiæ flagi bezpo¶redniego we/wy na \"%s\".\n" -#: ../copy/xfs_copy.c:619 +#: ../copy/xfs_copy.c:625 #, c-format msgid "%s: xfsctl on file \"%s\" failed.\n" msgstr "%s: xfsctl na pliku \"%s\" nie powiod³o siê.\n" -#: ../copy/xfs_copy.c:642 +#: ../copy/xfs_copy.c:648 #, c-format msgid "%s: Warning -- a filesystem is mounted on the source device.\n" msgstr "%s: Uwaga - system plików jest podmontowany na urz±dzeniu ¼ród³owym.\n" -#: ../copy/xfs_copy.c:645 +#: ../copy/xfs_copy.c:651 msgid "\t\tGenerated copies may be corrupt unless the source is\n" msgstr "\t\tWygenerowane kopie mog± byæ uszkodzone o ile ¼ród³o nie jest\n" -#: ../copy/xfs_copy.c:647 +#: ../copy/xfs_copy.c:653 msgid "\t\tunmounted or mounted read-only. Copy proceeding...\n" msgstr "\t\todmontowane lub podmontowane tylko do odczytu. Kopiowanie w trakcie...\n" -#: ../copy/xfs_copy.c:664 +#: ../copy/xfs_copy.c:670 #, c-format msgid "" "%s: couldn't initialize XFS library\n" @@ -183,7 +183,7 @@ msgstr "" "%s: nie uda³o siê zainicjowaæ biblioteki XFS\n" "%s: Przerwano.\n" -#: ../copy/xfs_copy.c:678 +#: ../copy/xfs_copy.c:684 #, c-format msgid "" "%s: %s filesystem failed to initialize\n" @@ -192,7 +192,7 @@ msgstr "" "%s: Nie powiod³a siê inicjalizacja systemu plików %s\n" "%s: Przerwano.\n" -#: ../copy/xfs_copy.c:682 +#: ../copy/xfs_copy.c:688 #, c-format msgid "" "%s %s filesystem failed to initialize\n" @@ -201,7 +201,7 @@ msgstr "" "%s: Nie powiod³a siê inicjalizacja systemu plików %s\n" "%s: Przerwano.\n" -#: ../copy/xfs_copy.c:686 +#: ../copy/xfs_copy.c:692 #, c-format msgid "" "%s: %s has an external log.\n" @@ -210,7 +210,7 @@ msgstr "" "%s: %s ma zewnêtrzny log.\n" "%s: Przerwano.\n" -#: ../copy/xfs_copy.c:690 +#: ../copy/xfs_copy.c:696 #, c-format msgid "" "%s: %s has a real-time section.\n" @@ -219,7 +219,7 @@ msgstr "" "%s: %s ma sekcjê real-time.\n" "%s: Przerwano.\n" -#: ../copy/xfs_copy.c:715 +#: ../copy/xfs_copy.c:721 msgid "" "Error: filesystem block size is smaller than the disk sectorsize.\n" "Aborting XFS copy now.\n" @@ -227,12 +227,12 @@ msgstr "" "B³±d: rozmiar bloku systemu plików jest mniejszy ni¿ rozmiar sektora dysku.\n" "Przerwano XFS copy.\n" -#: ../copy/xfs_copy.c:736 +#: ../copy/xfs_copy.c:742 #, c-format msgid "Creating file %s\n" msgstr "Tworzenie pliku %s\n" -#: ../copy/xfs_copy.c:754 +#: ../copy/xfs_copy.c:760 #, c-format msgid "" "%s: a filesystem is mounted on target device \"%s\".\n" @@ -241,66 +241,66 @@ msgstr "" "%s: na urz±dzeniu docelowym \"%s\" jest podmontowany system plików.\n" "%s nie mo¿e kopiowaæ na podmontowane systemy plików. Przerwano.\n" -#: ../copy/xfs_copy.c:765 +#: ../copy/xfs_copy.c:771 #, c-format msgid "%s: couldn't open target \"%s\"\n" msgstr "%s: nie uda³o siê otworzyæ celu \"%s\"\n" -#: ../copy/xfs_copy.c:775 +#: ../copy/xfs_copy.c:781 #, c-format msgid "%s: cannot grow data section.\n" msgstr "%s: nie mo¿na powiêkszyæ sekcji danych.\n" -#: ../copy/xfs_copy.c:783 +#: ../copy/xfs_copy.c:789 #, c-format msgid "%s: xfsctl on \"%s\" failed.\n" msgstr "%s: xfsctl na \"%s\" nie powiod³o siê.\n" -#: ../copy/xfs_copy.c:802 +#: ../copy/xfs_copy.c:808 #, c-format msgid "%s: failed to write last block\n" msgstr "%s: nie uda³o siê zapisaæ ostatniego bloku\n" -#: ../copy/xfs_copy.c:804 +#: ../copy/xfs_copy.c:810 #, c-format msgid "\tIs target \"%s\" too small?\n" msgstr "\tCzy cel \"%s\" jest zbyt ma³y?\n" -#: ../copy/xfs_copy.c:814 +#: ../copy/xfs_copy.c:820 msgid "Couldn't initialize global thread mask\n" msgstr "Nie uda³o siê zainicjowaæ globalnej maski w±tków\n" -#: ../copy/xfs_copy.c:821 +#: ../copy/xfs_copy.c:827 msgid "Error initializing wbuf 0\n" msgstr "B³±d inicjalizacji wbuf 0\n" -#: ../copy/xfs_copy.c:829 +#: ../copy/xfs_copy.c:835 msgid "Error initializing btree buf 1\n" msgstr "B³±d inicjalizacji btree buf 1\n" -#: ../copy/xfs_copy.c:834 +#: ../copy/xfs_copy.c:840 msgid "Error creating first semaphore.\n" msgstr "B³±d tworzenia pierwszego semafora.\n" -#: ../copy/xfs_copy.c:849 +#: ../copy/xfs_copy.c:855 msgid "Couldn't malloc space for thread args\n" msgstr "Nie uda³o siê przydzieliæ miejsca na argumenty w±tku\n" -#: ../copy/xfs_copy.c:861 +#: ../copy/xfs_copy.c:867 #, c-format msgid "Error creating thread mutex %d\n" msgstr "B³±d podczas tworzenia sekcji krytycznej %d w±tku\n" -#: ../copy/xfs_copy.c:878 +#: ../copy/xfs_copy.c:884 #, c-format msgid "Error creating thread for target %d\n" msgstr "B³±d podczas tworzenia w±tku dla celu %d\n" -#: ../copy/xfs_copy.c:971 +#: ../copy/xfs_copy.c:977 msgid "WARNING: source filesystem inconsistent.\n" msgstr "UWAGA: ¼ród³owy system plików niespójny.\n" -#: ../copy/xfs_copy.c:973 +#: ../copy/xfs_copy.c:979 msgid " A leaf btree rec isn't a leaf. Aborting now.\n" msgstr " Li¶æ rekordu b-drzewa nie jest li¶ciem. Przerwano.\n" @@ -349,32 +349,32 @@ msgid "" "meta-data=%-22s isize=%-6u agcount=%u, agsize=%u blks\n" " =%-22s sectsz=%-5u attr=%u\n" "data =%-22s bsize=%-6u blocks=%llu, imaxpct=%u\n" -" =%-22s sunit=%-6u swidth=%u blks, unwritten=%u\n" +" =%-22s sunit=%-6u swidth=%u blks\n" "naming =version %-14u bsize=%-6u\n" "log =%-22s bsize=%-6u blocks=%u, version=%u\n" -" =%-22s sectsz=%-5u sunit=%u blks\n" +" =%-22s sectsz=%-5u sunit=%u blks, lazy-count=%u\n" "realtime =%-22s extsz=%-6u blocks=%llu, rtextents=%llu\n" msgstr "" "metadane=%-22s isize=%-6u agcount=%u, agsize=%u bloków\n" " =%-22s sectsz=%-5u attr=%u\n" "dane =%-22s bsize=%-6u blocks=%llu, imaxpct=%u\n" -" =%-22s sunit=%-6u swidth=%u bloków, niezapisanych=%u\n" +" =%-22s sunit=%-6u swidth=%u bloków\n" "nazwy =wersja %-14u bsize=%-6u\n" "log =%-22s bsize=%-6u blocks=%u, wersja=%u\n" -" =%-22s sectsz=%-5u sunit=%u bloków\n" +" =%-22s sectsz=%-5u sunit=%u bloków, lazy-count=%u\n" "realtime=%-22s extsz=%-6u blocks=%llu, rtextents=%llu\n" -#: ../growfs/xfs_growfs.c:82 ../growfs/xfs_growfs.c:443 -#: ../growfs/xfs_growfs.c:444 +#: ../growfs/xfs_growfs.c:82 ../growfs/xfs_growfs.c:445 +#: ../growfs/xfs_growfs.c:446 msgid "internal" msgstr "wewnêtrzny" #: ../growfs/xfs_growfs.c:82 ../growfs/xfs_growfs.c:85 -#: ../growfs/xfs_growfs.c:443 ../growfs/xfs_growfs.c:444 +#: ../growfs/xfs_growfs.c:445 ../growfs/xfs_growfs.c:446 msgid "external" msgstr "zewnêtrzny" -#: ../growfs/xfs_growfs.c:85 ../mkfs/xfs_mkfs.c:1559 +#: ../growfs/xfs_growfs.c:85 ../mkfs/xfs_mkfs.c:1672 msgid "none" msgstr "brak" @@ -393,128 +393,128 @@ msgstr "%s: podany plik [\"%s\"] nie jest na systemie plik msgid "%s: cannot determine geometry of filesystem mounted at %s: %s\n" msgstr "%s: nie mo¿na okre¶liæ geometrii systemu plików podmontowanego pod %s: %s\n" -#: ../growfs/xfs_growfs.c:264 +#: ../growfs/xfs_growfs.c:265 #, c-format msgid "%s: failed to access data device for %s\n" msgstr "%s: nie uda³o siê uzyskaæ dostêpu do urz±dzenia z danymi dla %s\n" -#: ../growfs/xfs_growfs.c:269 +#: ../growfs/xfs_growfs.c:270 #, c-format msgid "%s: failed to access external log for %s\n" msgstr "%s: nie uda³o siê uzyskaæ dostêpu do zewnêtrznego loga dla %s\n" -#: ../growfs/xfs_growfs.c:275 +#: ../growfs/xfs_growfs.c:276 #, c-format msgid "%s: failed to access realtime device for %s\n" msgstr "%s: nie uda³o siê uzyskaæ dostêpu do urz±dzenia realtime dla %s\n" -#: ../growfs/xfs_growfs.c:310 +#: ../growfs/xfs_growfs.c:312 #, c-format msgid "data size %lld too large, maximum is %lld\n" msgstr "rozmiar danych %lld zbyt du¿y, maksymalny to %lld\n" -#: ../growfs/xfs_growfs.c:320 +#: ../growfs/xfs_growfs.c:322 #, c-format msgid "data size %lld too small, old size is %lld\n" msgstr "rozmiar danych %lld zbyt ma³y, stary rozmiar to %lld\n" -#: ../growfs/xfs_growfs.c:328 +#: ../growfs/xfs_growfs.c:330 #, c-format msgid "data size unchanged, skipping\n" msgstr "rozmiar danych nie zmieniony, pominiêto\n" -#: ../growfs/xfs_growfs.c:331 +#: ../growfs/xfs_growfs.c:333 #, c-format msgid "inode max pct unchanged, skipping\n" msgstr "maksymalny procent i-wêz³ów nie zmieniony, pominiêto\n" -#: ../growfs/xfs_growfs.c:338 ../growfs/xfs_growfs.c:377 -#: ../growfs/xfs_growfs.c:412 +#: ../growfs/xfs_growfs.c:340 ../growfs/xfs_growfs.c:379 +#: ../growfs/xfs_growfs.c:414 #, c-format msgid "%s: growfs operation in progress already\n" msgstr "%s: operacja growfs ju¿ trwa\n" -#: ../growfs/xfs_growfs.c:342 +#: ../growfs/xfs_growfs.c:344 #, c-format msgid "%s: XFS_IOC_FSGROWFSDATA xfsctl failed: %s\n" msgstr "%s: xfsctl XFS_IOC_FSGROWFSDATA nie powiod³o siê: %s\n" -#: ../growfs/xfs_growfs.c:358 +#: ../growfs/xfs_growfs.c:360 #, c-format msgid "realtime size %lld too large, maximum is %lld\n" msgstr "rozmiar realtime %lld zbyt du¿y, maksymalny to %lld\n" -#: ../growfs/xfs_growfs.c:364 +#: ../growfs/xfs_growfs.c:366 #, c-format msgid "realtime size %lld too small, old size is %lld\n" msgstr "rozmiar realtime %lld zbyt ma³y, stary rozmiar to %lld\n" -#: ../growfs/xfs_growfs.c:370 +#: ../growfs/xfs_growfs.c:372 #, c-format msgid "realtime size unchanged, skipping\n" msgstr "rozmiar realtime nie zmieniony, pominiêto\n" -#: ../growfs/xfs_growfs.c:381 +#: ../growfs/xfs_growfs.c:383 #, c-format msgid "%s: realtime growth not implemented\n" msgstr "%s: powiêkszanie realtime nie jest zaimplementowane\n" -#: ../growfs/xfs_growfs.c:385 +#: ../growfs/xfs_growfs.c:387 #, c-format msgid "%s: XFS_IOC_FSGROWFSRT xfsctl failed: %s\n" msgstr "%s: xfsctl XFS_IOC_FSGROWFSRT nie powiod³o siê: %s\n" -#: ../growfs/xfs_growfs.c:406 +#: ../growfs/xfs_growfs.c:408 #, c-format msgid "log size unchanged, skipping\n" msgstr "rozmiar loga nie zmieniony, pominiêto\n" -#: ../growfs/xfs_growfs.c:416 +#: ../growfs/xfs_growfs.c:418 #, c-format msgid "%s: log growth not supported yet\n" msgstr "%s: powiêkszanie loga nie jest jeszcze obs³ugiwane\n" -#: ../growfs/xfs_growfs.c:420 +#: ../growfs/xfs_growfs.c:422 #, c-format msgid "%s: XFS_IOC_FSGROWFSLOG xfsctl failed: %s\n" msgstr "%s: xfsctl XFS_IOC_FSGROWFSLOG nie powiod³o siê: %s\n" -#: ../growfs/xfs_growfs.c:428 +#: ../growfs/xfs_growfs.c:430 #, c-format msgid "%s: XFS_IOC_FSGEOMETRY xfsctl failed: %s\n" msgstr "%s: xfsctl XFS_IOC_FSGEOMETRY nie powiod³o siê: %s\n" -#: ../growfs/xfs_growfs.c:433 +#: ../growfs/xfs_growfs.c:435 #, c-format msgid "data blocks changed from %lld to %lld\n" msgstr "bloki danych zmienione z %lld na %lld\n" -#: ../growfs/xfs_growfs.c:436 +#: ../growfs/xfs_growfs.c:438 #, c-format msgid "inode max percent changed from %d to %d\n" msgstr "maksymalny procent i-wêz³ów zmieniony z %d na %d\n" -#: ../growfs/xfs_growfs.c:439 +#: ../growfs/xfs_growfs.c:441 #, c-format msgid "log blocks changed from %d to %d\n" msgstr "bloki loga zmienione z %d na %d\n" -#: ../growfs/xfs_growfs.c:442 +#: ../growfs/xfs_growfs.c:444 #, c-format msgid "log changed from %s to %s\n" msgstr "log zmieniony - by³ %s, jest %s\n" -#: ../growfs/xfs_growfs.c:446 +#: ../growfs/xfs_growfs.c:448 #, c-format msgid "realtime blocks changed from %lld to %lld\n" msgstr "bloki realtime zmienione z %lld na %lld\n" -#: ../growfs/xfs_growfs.c:449 +#: ../growfs/xfs_growfs.c:451 #, c-format msgid "realtime extent size changed from %d to %d\n" msgstr "rozmiar fragmentu realtime zmieniony z %d na %d\n" -#: ../io/attr.c:58 +#: ../io/attr.c:59 #, c-format msgid "" "\n" @@ -534,6 +534,7 @@ msgid "" " e -- for non-realtime files, observe the inode extent size value\n" " E -- children created in this directory inherit the extent size value\n" " f -- do not include this file when defragmenting the filesystem\n" +" S -- enable filestreams allocator for this directory\n" "\n" " Options:\n" " -R -- recursively descend (useful when current file is a directory)\n" @@ -559,6 +560,7 @@ msgstr "" " e - dla plików nie-realtime - przestrzeganie warto¶ci rozmiaru fragmentu i-wêz³a\n" " E - wpisy tworzone w tym katalogu dziedzicz± warto¶æ rozmiaru fragmentu\n" " f - nie uwzglêdnianie tego pliku przy defragmentacji systemu plików\n" +" S - w³±czenie przydzielania strumieni plikowych dla tego katalogu\n" "\n" " Opcje:\n" " -R - rekurencyjne zag³êbianie siê (przydatne kiedy bie¿±cy plik jest katalogiem)\n" @@ -567,7 +569,7 @@ msgstr "" " -v - tryb szczegó³owy; pokazywanie d³ugich nazw flag zamiast pojedynczych znaków\n" "\n" -#: ../io/attr.c:88 +#: ../io/attr.c:90 #, c-format msgid "" "\n" @@ -591,6 +593,7 @@ msgid "" " +/-e -- set/clear the extent-size flag\n" " +/-E -- set/clear the extent-size inheritance flag\n" " +/-f -- set/clear the no-defrag flag\n" +" +/-S -- set/clear the filestreams allocator flag\n" " Note1: user must have certain capabilities to modify immutable/append-only.\n" " Note2: immutable/append-only files cannot be deleted; removing these files\n" " requires the immutable/append-only flag to be cleared first.\n" @@ -619,6 +622,7 @@ msgstr "" " +/-e - ustawienie/zdjêcie flagi extent-size (rozmiaru fragmentu)\n" " +/-E - ustawienie/zdjêcie flagi dziedziczenia rozmiaru fragmentu\n" " +/-f - ustawienie/zdjêcie flagi no-defrag\n" +" +/-S - ustawienie/zdjêcie flagi przydzielania strumieni plikowych\n" " Uwaga1: u¿ytkownik musi mieæ pewne uprawnienia do zmiany flag\n" " immutable/append-only\n" " Uwaga2: plików immutable/append-only nie mo¿na usuwaæ; usuwanie tych plików\n" @@ -627,55 +631,59 @@ msgstr "" " realtime i (zwyk³y) plik musi byæ pusty przy ustawianiu flagi.\n" "\n" -#: ../io/attr.c:168 ../io/attr.c:244 ../io/open.c:403 ../io/open.c:475 +#: ../io/attr.c:171 ../io/attr.c:247 ../io/open.c:403 ../io/open.c:475 #: ../io/open.c:599 ../io/open.c:621 ../libxfs/init.c:108 ../mkfs/proto.c:284 -#: ../quota/project.c:87 ../quota/project.c:117 ../quota/project.c:147 +#: ../quota/project.c:103 ../quota/project.c:142 ../quota/project.c:181 #, c-format msgid "%s: cannot open %s: %s\n" msgstr "%s: nie mo¿na otworzyæ %s: %s\n" -#: ../io/attr.c:171 ../io/attr.c:218 ../io/attr.c:247 ../io/attr.c:318 -#: ../quota/project.c:90 ../quota/project.c:121 ../quota/project.c:151 +#: ../io/attr.c:174 ../io/attr.c:221 ../io/attr.c:250 ../io/attr.c:321 +#: ../quota/project.c:106 ../quota/project.c:146 ../quota/project.c:185 #, c-format msgid "%s: cannot get flags on %s: %s\n" msgstr "%s: nie mo¿na pobraæ flag %s: %s\n" -#: ../io/attr.c:253 ../io/attr.c:324 +#: ../io/attr.c:256 ../io/attr.c:327 #, c-format msgid "%s: cannot set flags on %s: %s\n" msgstr "%s: nie mo¿na ustawiæ flag %s: %s\n" -#: ../io/attr.c:288 ../io/attr.c:302 +#: ../io/attr.c:291 ../io/attr.c:305 #, c-format msgid "%s: unknown flag\n" msgstr "%s: nieznana flaga\n" -#: ../io/attr.c:308 +#: ../io/attr.c:311 #, c-format msgid "%s: bad chattr command, not +/-X\n" msgstr "%s: z³e polecenie chattr - nie +/-X\n" -#: ../io/attr.c:333 +#: ../io/attr.c:336 msgid "chattr" msgstr "chattr" -#: ../io/attr.c:335 +#: ../io/attr.c:338 msgid "[-R|-D] [+/-" msgstr "[-R|-D] [+/-" -#: ../io/attr.c:340 +#: ../io/attr.c:338 +msgid "]" +msgstr "]" + +#: ../io/attr.c:343 msgid "change extended inode flags on the currently open file" msgstr "zmiana rozszerzonych flag i-wêz³ów aktualnie otwartego pliku" -#: ../io/attr.c:343 +#: ../io/attr.c:346 msgid "lsattr" msgstr "lsattr" -#: ../io/attr.c:345 +#: ../io/attr.c:348 msgid "[-R|-D|-a|-v]" msgstr "[-R|-D|-a|-v]" -#: ../io/attr.c:350 +#: ../io/attr.c:353 msgid "list extended inode flags set on the currently open file" msgstr "wypisanie rozszerzonych flag i-wêz³ów aktualnie otwartego pliku" @@ -722,113 +730,117 @@ msgstr "" " otwarty tylko do odczytu).\n" "\n" -#: ../io/bmap.c:116 +#: ../io/bmap.c:120 #, c-format msgid "%s: can't get geometry [\"%s\"]: %s\n" msgstr "%s: nie mo¿na uzyskaæ geometrii [\"%s\"]: %s\n" -#: ../io/bmap.c:124 +#: ../io/bmap.c:128 #, c-format msgid "%s: cannot read attrs on \"%s\": %s\n" msgstr "%s: nie mo¿na odczytaæ atrybutów \"%s\": %s\n" -#: ../io/bmap.c:142 +#: ../io/bmap.c:146 #, c-format msgid "%s: malloc of %d bytes failed.\n" msgstr "%s: przydzielenie %d bajtów nie powiod³o siê.\n" -#: ../io/bmap.c:190 +#: ../io/bmap.c:194 #, c-format msgid "%s: xfsctl(XFS_IOC_GETBMAPX) iflags=0x%x [\"%s\"]: %s\n" msgstr "%s: xfsctl(XFS_IOC_GETBMAPX) iflags=0x%x [\"%s\"]: %s\n" -#: ../io/bmap.c:221 +#: ../io/bmap.c:225 #, c-format msgid "%s: cannot realloc %d bytes\n" msgstr "%s: nie mo¿na wykonaæ realloc na %d bajtów\n" -#: ../io/bmap.c:230 +#: ../io/bmap.c:234 #, c-format msgid "%s: no extents\n" msgstr "%s: brak fragmentów\n" -#: ../io/bmap.c:243 ../io/bmap.c:361 +#: ../io/bmap.c:248 ../io/bmap.c:376 #, c-format msgid "hole" msgstr "dziura" -#: ../io/bmap.c:252 +#: ../io/bmap.c:257 #, c-format msgid " %lld blocks\n" msgstr " %lld bloków\n" -#: ../io/bmap.c:321 +#: ../io/bmap.c:336 msgid "EXT" msgstr "EXT" -#: ../io/bmap.c:322 +#: ../io/bmap.c:337 msgid "FILE-OFFSET" msgstr "OFFSET-W-PLIKU" -#: ../io/bmap.c:323 +#: ../io/bmap.c:338 +msgid "RT-BLOCK-RANGE" +msgstr "ZAKRES-BLOKÓW-RT" + +#: ../io/bmap.c:338 msgid "BLOCK-RANGE" msgstr "ZAKRES-BLOKÓW" -#: ../io/bmap.c:324 +#: ../io/bmap.c:339 msgid "AG" msgstr "AG" -#: ../io/bmap.c:325 +#: ../io/bmap.c:340 msgid "AG-OFFSET" msgstr "OFFSET-AG" -#: ../io/bmap.c:326 +#: ../io/bmap.c:341 msgid "TOTAL" msgstr "RAZEM" -#: ../io/bmap.c:327 +#: ../io/bmap.c:342 msgid " FLAGS" msgstr " FLAGI" -#: ../io/bmap.c:390 +#: ../io/bmap.c:410 #, c-format msgid " FLAG Values:\n" msgstr " Warto¶ci FLAG:\n" -#: ../io/bmap.c:391 +#: ../io/bmap.c:411 #, c-format msgid " %*.*o Unwritten preallocated extent\n" msgstr " %*.*o Nie zapisany, ju¿ przydzielony fragment\n" -#: ../io/bmap.c:393 +#: ../io/bmap.c:413 #, c-format msgid " %*.*o Doesn't begin on stripe unit\n" msgstr " %*.*o Nie zaczyna siê od jednostki pasa\n" -#: ../io/bmap.c:395 +#: ../io/bmap.c:415 #, c-format msgid " %*.*o Doesn't end on stripe unit\n" msgstr " %*.*o Nie koñczy siê na jednostce pasa\n" -#: ../io/bmap.c:397 +#: ../io/bmap.c:417 #, c-format msgid " %*.*o Doesn't begin on stripe width\n" msgstr " %*.*o Nie zaczyna siê na szeroko¶ci pasa\n" -#: ../io/bmap.c:399 +#: ../io/bmap.c:419 #, c-format msgid " %*.*o Doesn't end on stripe width\n" msgstr " %*.*o Nie koñczy siê na szeroko¶ci pasa\n" -#: ../io/bmap.c:410 +#: ../io/bmap.c:430 msgid "bmap" msgstr "bmap" -#: ../io/bmap.c:415 +#: ../io/bmap.c:435 msgid "[-adlpv] [-n nx]" msgstr "[-adlpv] [-n nx]" -#: ../io/bmap.c:416 +#: ../io/bmap.c:436 msgid "print block mapping for an XFS file" msgstr "wypisanie mapowania bloków dla pliku na XFS-ie" @@ -874,15 +886,15 @@ msgstr "" "\n" #: ../io/fadvise.c:93 ../io/madvise.c:87 ../io/mincore.c:48 ../io/mmap.c:206 -#: ../io/mmap.c:301 ../io/mmap.c:407 ../io/mmap.c:554 ../io/prealloc.c:43 +#: ../io/mmap.c:301 ../io/mmap.c:387 ../io/mmap.c:546 ../io/prealloc.c:43 #: ../io/pwrite.c:282 ../io/sendfile.c:126 #, c-format msgid "non-numeric offset argument -- %s\n" msgstr "nieliczbowy argument bêd±cy offsetem - %s\n" #: ../io/fadvise.c:100 ../io/madvise.c:94 ../io/mincore.c:54 ../io/mmap.c:212 -#: ../io/mmap.c:308 ../io/mmap.c:414 ../io/mmap.c:561 ../io/pread.c:360 -#: ../io/pread.c:368 ../io/prealloc.c:48 ../io/pwrite.c:288 +#: ../io/mmap.c:308 ../io/mmap.c:394 ../io/mmap.c:553 ../io/pread.c:330 +#: ../io/pread.c:338 ../io/prealloc.c:48 ../io/pwrite.c:288 #: ../io/sendfile.c:133 #, c-format msgid "non-numeric length argument -- %s\n" @@ -949,7 +961,7 @@ msgstr ",tylko dopisywanie" msgid ",non-block" msgstr ",nieblokuj±cy" -#: ../io/file.c:81 ../io/sendfile.c:103 ../quota/path.c:107 +#: ../io/file.c:81 ../io/sendfile.c:103 ../quota/path.c:112 #, c-format msgid "value %d is out of range (0-%d)\n" msgstr "warto¶æ %d jest spoza zakresu (0-%d)\n" @@ -962,7 +974,7 @@ msgstr "file" msgid "f" msgstr "f" -#: ../io/file.c:94 ../quota/path.c:121 +#: ../io/file.c:94 ../quota/path.c:126 msgid "[N]" msgstr "[N]" @@ -970,15 +982,15 @@ msgstr "[N]" msgid "set the current file" msgstr "ustawienie bie¿±cego pliku" -#: ../io/file.c:101 ../quota/path.c:127 +#: ../io/file.c:101 ../quota/path.c:133 msgid "print" msgstr "print" -#: ../io/file.c:102 ../quota/path.c:128 +#: ../io/file.c:102 ../quota/path.c:134 msgid "p" msgstr "p" -#: ../io/file.c:107 +#: ../io/file.c:108 msgid "list current open files and memory mappings" msgstr "wypisanie aktualnie otwartych plików i odwzorowañ w pamiêci" @@ -1012,9 +1024,10 @@ msgstr "odmro msgid "fsync" msgstr "fsync" -#: ../io/fsync.c:55 +#: ../io/fsync.c:55 ../repair/progress.c:430 ../repair/progress.c:440 +#: ../repair/progress.c:456 ../repair/progress.c:474 ../repair/progress.c:489 msgid "s" -msgstr "s" +msgstr " " #: ../io/fsync.c:59 msgid "calls fsync(2) to flush all in-core file state to disk" @@ -1066,23 +1079,23 @@ msgstr "map i-w msgid "Usage: %s [-adFfmrRstx] [-p prog] [-c cmd]... file\n" msgstr "Sk³adnia: %s [-adFfmrRstx] [-p program] [-c polecenie]... plik\n" -#: ../io/init.c:95 ../io/mmap.c:168 ../io/mmap.c:175 ../io/mmap.c:178 +#: ../io/init.c:98 ../io/mmap.c:168 ../io/mmap.c:175 ../io/mmap.c:178 #: ../io/open.c:281 #, c-format msgid "no files are open, try 'help open'\n" msgstr "nie ma otwartych plików, spróbuj 'help open'\n" -#: ../io/init.c:99 ../io/mmap.c:167 ../io/mmap.c:174 +#: ../io/init.c:102 ../io/mmap.c:167 ../io/mmap.c:174 #, c-format msgid "no mapped regions, try 'help mmap'\n" msgstr "nie ma podmapowanych regionów, spróbuj 'help mmap'\n" -#: ../io/init.c:105 +#: ../io/init.c:108 #, c-format msgid "foreign file active, %s command is for XFS filesystems only\n" msgstr "aktywny jest plik obcy, polecenie %s jest tylko dla systemów plików XFS\n" -#: ../io/init.c:150 ../io/open.c:303 +#: ../io/init.c:153 ../io/open.c:303 #, c-format msgid "non-numeric mode -- %s\n" msgstr "tryb nieliczbowy - %s\n" @@ -1291,7 +1304,7 @@ msgstr "" " -s - wykonanie zapisu synchronicznego (MS_SYNC)\n" "\n" -#: ../io/mmap.c:350 +#: ../io/mmap.c:330 #, c-format msgid "" "\n" @@ -1336,7 +1349,7 @@ msgstr "" " etapie nie ma prób wy³apania sygna³ów...\n" "\n" -#: ../io/mmap.c:502 +#: ../io/mmap.c:494 #, c-format msgid "" "\n" @@ -1366,84 +1379,84 @@ msgstr "" " Zapisy s± wykonywane kolejno, domy¶lnie od offsetu pocz±tkowego.\n" "\n" -#: ../io/mmap.c:538 ../io/pread.c:345 ../io/pwrite.c:249 ../io/pwrite.c:268 +#: ../io/mmap.c:530 ../io/pread.c:315 ../io/pwrite.c:249 ../io/pwrite.c:268 #, c-format msgid "non-numeric seed -- %s\n" msgstr "nieliczbowy zarodek - %s\n" -#: ../io/mmap.c:587 +#: ../io/mmap.c:580 msgid "mmap" msgstr "mmap" -#: ../io/mmap.c:588 +#: ../io/mmap.c:581 msgid "mm" msgstr "mm" -#: ../io/mmap.c:593 +#: ../io/mmap.c:586 msgid "[N] | [-rwx] [off len]" msgstr "[N] | [-rwx] [offset d³ugo¶æ]" -#: ../io/mmap.c:595 +#: ../io/mmap.c:588 msgid "mmap a range in the current file, show mappings" msgstr "odwzorowanie przedzia³u w bie¿±cym pliku, pokazanie odwzorowañ" -#: ../io/mmap.c:598 +#: ../io/mmap.c:591 msgid "mread" msgstr "mread" -#: ../io/mmap.c:599 +#: ../io/mmap.c:592 msgid "mr" msgstr "mr" -#: ../io/mmap.c:604 +#: ../io/mmap.c:597 msgid "[-r] [off len]" msgstr "[-r] [offset d³ugo¶æ]" -#: ../io/mmap.c:606 +#: ../io/mmap.c:599 msgid "reads data from a region in the current memory mapping" msgstr "odczyt danych z regionu w bie¿±cym odwzorowaniu pamiêci" -#: ../io/mmap.c:609 +#: ../io/mmap.c:602 msgid "msync" msgstr "msync" -#: ../io/mmap.c:610 +#: ../io/mmap.c:603 msgid "ms" msgstr "ms" -#: ../io/mmap.c:615 +#: ../io/mmap.c:608 msgid "[-ais] [off len]" msgstr "[-ais] [offset d³ugo¶æ]" -#: ../io/mmap.c:616 +#: ../io/mmap.c:609 msgid "flush a region in the current memory mapping" msgstr "zrzucenie regionu w bie¿±cym odwzorowaniu pamiêci" -#: ../io/mmap.c:619 +#: ../io/mmap.c:612 msgid "munmap" msgstr "munmap" -#: ../io/mmap.c:620 +#: ../io/mmap.c:613 msgid "mu" msgstr "mu" -#: ../io/mmap.c:625 +#: ../io/mmap.c:618 msgid "unmaps the current memory mapping" msgstr "usuniêcie bie¿±cego odwzorowania pamiêci" -#: ../io/mmap.c:627 +#: ../io/mmap.c:620 msgid "mwrite" msgstr "mwrite" -#: ../io/mmap.c:628 +#: ../io/mmap.c:621 msgid "mw" msgstr "mw" -#: ../io/mmap.c:633 +#: ../io/mmap.c:626 msgid "[-r] [-S seed] [off len]" msgstr "[-r] [-S warto¶æ] [offset d³ugo¶æ]" -#: ../io/mmap.c:635 +#: ../io/mmap.c:628 msgid "writes data into a region in the current memory mapping" msgstr "zapis danych do regionu w bie¿±cym odwzorowaniu pamiêci" @@ -2122,34 +2135,34 @@ msgstr "" " (dowolny offset mo¿e byæ w tym trybie czytany wiêcej ni¿ raz).\n" "\n" -#: ../io/pread.c:316 ../io/pwrite.c:215 +#: ../io/pread.c:286 ../io/pwrite.c:215 #, c-format msgid "non-numeric bsize -- %s\n" msgstr "nieliczbowy rozmiar bloku - %s\n" -#: ../io/pread.c:407 +#: ../io/pread.c:375 #, c-format msgid "read %lld/%lld bytes at offset %lld\n" msgstr "odczytano %lld/%lld bajtów od offsetu %lld\n" -#: ../io/pread.c:409 ../io/pwrite.c:335 ../io/sendfile.c:163 +#: ../io/pread.c:377 ../io/pwrite.c:334 ../io/sendfile.c:163 #, c-format msgid "%s, %d ops; %s (%s/sec and %.4f ops/sec)\n" msgstr "%s, %d operacji; %s (%s/sek i %.4f operacji/sek)\n" -#: ../io/pread.c:422 +#: ../io/pread.c:390 msgid "pread" msgstr "pread" -#: ../io/pread.c:423 +#: ../io/pread.c:391 msgid "r" msgstr "r" -#: ../io/pread.c:428 +#: ../io/pread.c:396 msgid "[-b bs] [-v] off len" msgstr "[-b rozm_bloku] [-v] offset d³ugo¶æ" -#: ../io/pread.c:429 +#: ../io/pread.c:397 msgid "reads a number of bytes at a specified offset" msgstr "odczyt podanej liczby bajtów od podanego offsetu" @@ -2246,7 +2259,7 @@ msgstr "" msgid "non-numeric skip -- %s\n" msgstr "nieliczbowy liczba bajtów do pominiêcia - %s\n" -#: ../io/pwrite.c:333 +#: ../io/pwrite.c:332 #, c-format msgid "wrote %lld/%lld bytes at offset %lld\n" msgstr "zapisano %lld/%lld bajtów od offsetu %lld\n" @@ -2419,36 +2432,46 @@ msgstr "Uwaga - urz msgid "Failed forking lvdisplay process\n" msgstr "Nie uda³o siê odga³êziæ procesu lvdisplay\n" -#: ../libdisk/md.c:52 +#: ../libdisk/md.c:61 #, c-format -msgid "Error getting MD array info from %s\n" -msgstr "B³±d podczas pobierania informacji o macierzy MD z %s\n" +msgid "Error getting MD array device from %s\n" +msgstr "B³±d podczas pobierania urz±dzenia macierzy MD z %s\n" -#: ../libxcmd/command.c:82 +#: ../libdisk/md.c:68 #, c-format -msgid "command \"%s\" not found\n" -msgstr "nie znaleziono polecenia \"%s\"\n" +msgid "Couldn't malloc device string\n" +msgstr "Nie mo¿na przydzieliæ ³añcucha nazwy urz±dzenia\n" -#: ../libxcmd/command.c:90 +#: ../libdisk/md.c:84 +#, c-format +msgid "Error getting MD array info from %s\n" +msgstr "B³±d podczas pobierania informacji o macierzy MD z %s\n" + +#: ../libxcmd/command.c:85 #, c-format msgid "bad argument count %d to %s, expected at least %d arguments\n" msgstr "b³êdna liczba argumentów %d dla %s, oczekiwano co najmniej %d argumentów\n" -#: ../libxcmd/command.c:94 +#: ../libxcmd/command.c:89 #, c-format msgid "bad argument count %d to %s, expected %d arguments\n" msgstr "b³êdna liczba argumentów %d dla %s, oczekiwano %d argumentów\n" -#: ../libxcmd/command.c:98 +#: ../libxcmd/command.c:93 #, c-format msgid "bad argument count %d to %s, expected between %d and %d arguments\n" msgstr "b³êdna liczba argumentów %d dla %s, oczekiwano od %d do %d argumentów\n" -#: ../libxcmd/command.c:160 +#: ../libxcmd/command.c:155 #, c-format msgid "cannot strdup command '%s': %s\n" msgstr "nie mo¿na wykonaæ strdup na poleceniu '%s': %s\n" +#: ../libxcmd/command.c:171 ../libxcmd/command.c:189 +#, c-format +msgid "command \"%s\" not found\n" +msgstr "nie znaleziono polecenia \"%s\"\n" + #: ../libxcmd/help.c:33 #, c-format msgid "" @@ -2521,64 +2544,70 @@ msgstr "q" msgid "exit the program" msgstr "wyj¶cie z programu" -#: ../libxfs/darwin.c:39 +#: ../libxfs/darwin.c:41 #, c-format msgid "%s: error opening the device special file \"%s\": %s\n" msgstr "%s: b³±d podczas otwierania pliku specjalnego urz±dzenia \"%s\": %s\n" -#: ../libxfs/darwin.c:46 +#: ../libxfs/darwin.c:48 #, c-format msgid "%s: can't tell if \"%s\" is writable: %s\n" msgstr "%s: nie mo¿na stwierdziæ czy \"%s\" jest zapisywalny: %s\n" -#: ../libxfs/darwin.c:73 ../libxfs/freebsd.c:114 ../libxfs/irix.c:57 -#: ../libxfs/linux.c:132 +#: ../libxfs/darwin.c:76 ../libxfs/freebsd.c:116 ../libxfs/irix.c:58 +#: ../libxfs/linux.c:137 #, c-format msgid "%s: cannot stat the device file \"%s\": %s\n" msgstr "%s: nie mo¿na wykonaæ stat na pliku urz±dzenia \"%s\": %s\n" -#: ../libxfs/darwin.c:83 +#: ../libxfs/darwin.c:86 #, c-format msgid "%s: can't determine device size: %s\n" msgstr "%s: nie mo¿na okre¶liæ rozmiaru urz±dzenia: %s\n" -#: ../libxfs/freebsd.c:47 +#: ../libxfs/darwin.c:139 ../libxfs/freebsd.c:198 ../libxfs/irix.c:106 +#: ../libxfs/linux.c:215 +#, c-format +msgid "%s: can't determine memory size\n" +msgstr "%s: nie mo¿na okre¶liæ rozmiaru pamiêci\n" + +#: ../libxfs/freebsd.c:49 #, c-format msgid "%s: %s possibly contains a mounted filesystem\n" msgstr "%s: %s mo¿e zawieraæ podmontowany system plików\n" -#: ../libxfs/freebsd.c:58 ../libxfs/linux.c:65 +#: ../libxfs/freebsd.c:60 ../libxfs/linux.c:66 #, c-format msgid "%s: %s contains a mounted filesystem\n" msgstr "%s: %s zawiera podmontowany system plików\n" -#: ../libxfs/freebsd.c:73 ../libxfs/linux.c:83 +#: ../libxfs/freebsd.c:75 ../libxfs/linux.c:84 #, c-format msgid "%s: %s contains a possibly writable, mounted filesystem\n" msgstr "%s: %s zawiera podmontowany, byæ mo¿e zapisywalny system plików\n" -#: ../libxfs/freebsd.c:87 ../libxfs/linux.c:97 +#: ../libxfs/freebsd.c:89 ../libxfs/linux.c:98 #, c-format msgid "%s: %s contains a mounted and writable filesystem\n" msgstr "%s: %s zawiera podmontowany, zapisywalny system plików\n" # XXX: msgid bug -#: ../libxfs/freebsd.c:127 +#: ../libxfs/freebsd.c:129 #, c-format msgid "%s: Not a device or file: \"%s\"n" msgstr "%s: Nie jest urz±dzeniem ani plikiem: \"%s\"n" -#: ../libxfs/freebsd.c:134 +#: ../libxfs/freebsd.c:136 #, c-format msgid "%s: DIOCGMEDIASIZE failed on \"%s\": %s\n" msgstr "%s: DIOCGMEDIASIE nie powiod³o siê dla \"%s\": %s\n" -#: ../libxfs/freebsd.c:141 +#: ../libxfs/freebsd.c:143 #, c-format msgid "%s: DIOCGSECTORSIZE failed on \"%s\": %s\n" msgstr "%s: DIOCGSECTORSIZE nie powiod³o siê dla \"%s\": %s\n" -#: ../libxfs/init.c:78 ../libxfs/init.c:169 +#: ../libxfs/init.c:78 ../libxfs/init.c:177 #, c-format msgid "%s: %s: device %lld is not open\n" msgstr "%s: %s: urz±dzenie %lld nie jest otwarte\n" @@ -2588,167 +2617,172 @@ msgstr "%s: %s: urz msgid "%s: cannot stat %s: %s\n" msgstr "%s: nie mo¿na wykonaæ stat na %s: %s\n" -#: ../libxfs/init.c:131 +#: ../libxfs/init.c:139 #, c-format msgid "%s: device %lld is already open\n" msgstr "%s: urz±dzenie %lld jest ju¿ otwarte\n" -#: ../libxfs/init.c:144 +#: ../libxfs/init.c:152 #, c-format msgid "%s: %s: too many open devices\n" msgstr "%s: %s: zbyt du¿o otwartych urz±dzeñ\n" -#: ../libxfs/init.c:187 +#: ../libxfs/init.c:195 #, c-format msgid "%s: can't find a character device matching %s\n" msgstr "%s: nie mo¿na odnale¼æ urz±dzenia znakowego odpowiadaj±cego %s\n" -#: ../libxfs/init.c:193 +#: ../libxfs/init.c:201 #, c-format msgid "%s: can't find a block device matching %s\n" msgstr "%s: nie mo¿na odnale¼æ urz±dzenia blokowego odpowiadaj±cego %s\n" -#: ../libxfs/init.c:308 +#: ../libxfs/init.c:316 #, c-format msgid "%s: can't get size for data subvolume\n" msgstr "%s: nie mo¿na pobraæ rozmiaru podwolumenu danych\n" -#: ../libxfs/init.c:313 +#: ../libxfs/init.c:321 #, c-format msgid "%s: can't get size for log subvolume\n" msgstr "%s: nie mo¿na pobraæ rozmiaru podwolumenu loga\n" -#: ../libxfs/init.c:318 +#: ../libxfs/init.c:326 #, c-format msgid "%s: can't get size for realtime subvolume\n" msgstr "%s: nie mo¿na pobraæ rozmiaru podwolumenu realtime\n" -#: ../libxfs/init.c:413 +#: ../libxfs/init.c:421 #, c-format msgid "%s: cannot read realtime bitmap inode (%d)\n" msgstr "%s: nie mo¿na odczytaæ i-wêz³a bitmapy realtime (%d)\n" -#: ../libxfs/init.c:423 +#: ../libxfs/init.c:431 #, c-format msgid "%s: cannot read realtime summary inode (%d)\n" msgstr "%s: nie mo¿na odczytaæ i-wêz³a opisu realtime (%d)\n" -#: ../libxfs/init.c:447 +#: ../libxfs/init.c:455 #, c-format msgid "%s: filesystem has a realtime subvolume\n" msgstr "%s: system plików ma podwolumen realtime\n" -#: ../libxfs/init.c:469 +#: ../libxfs/init.c:477 #, c-format msgid "%s: realtime init - %llu != %llu\n" msgstr "%s: inicjalizacja realtime - %llu != %llu\n" -#: ../libxfs/init.c:477 +#: ../libxfs/init.c:485 #, c-format msgid "%s: realtime size check failed\n" msgstr "%s: sprawdzenie rozmiaru realtime nie powiod³o siê\n" -#: ../libxfs/init.c:563 +#: ../libxfs/init.c:571 #, c-format msgid "%s: size check failed\n" msgstr "%s: sprawdzenie rozmiaru nie powiod³o siê\n" -#: ../libxfs/init.c:587 +#: ../libxfs/init.c:595 #, c-format msgid "%s: data size check failed\n" msgstr "%s: sprawdzenie rozmiaru danych nie powiod³o siê\n" -#: ../libxfs/init.c:600 +#: ../libxfs/init.c:608 #, c-format msgid "%s: log size checks failed\n" msgstr "%s: sprawdzenie rozmiaru loga nie powiod³o siê\n" -#: ../libxfs/init.c:610 +#: ../libxfs/init.c:619 #, c-format msgid "%s: realtime device init failed\n" msgstr "%s: inicjalizacja urz±dzenia realtime nie powiod³a siê\n" -#: ../libxfs/init.c:618 +#: ../libxfs/init.c:627 #, c-format msgid "%s: failed to alloc %ld bytes: %s\n" msgstr "%s: nie uda³o siê przydzieliæ %ld bajtów: %s\n" -#: ../libxfs/init.c:632 +#: ../libxfs/init.c:641 #, c-format msgid "%s: cannot read root inode (%d)\n" msgstr "%s: nie mo¿na odczytaæ i-wêz³a g³ównego (%d)\n" -#: ../libxfs/linux.c:110 +#: ../libxfs/init.c:660 +#, c-format +msgid "%s: cannot init perag data (%d)\n" +msgstr "%s: nie mo¿na zainicjowaæ tabeli perag (%d)\n" + +#: ../libxfs/linux.c:113 #, c-format -msgid "%s: warning - cannot set blocksize on block device %s: %s\n" -msgstr "%s: uwaga - nie mo¿na ustawiæ rozmiaru bloku urz±dzenia blokowego %s: %s\n" +msgid "%s: %s - cannot set blocksize on block device %s: %s\n" +msgstr "%s: %s - nie mo¿na ustawiæ rozmiaru bloku urz±dzenia blokowego %s: %s\n" -#: ../libxfs/linux.c:155 +#: ../libxfs/linux.c:160 #, c-format msgid "%s: can't determine device size\n" msgstr "%s: nie mo¿na okre¶liæ rozmiaru urz±dzenia\n" -#: ../libxfs/linux.c:163 +#: ../libxfs/linux.c:168 #, c-format msgid "%s: warning - cannot get sector size from block device %s: %s\n" msgstr "%s: uwaga - nie mo¿na pobraæ rozmiaru sektora urz±dzenia blokowego %s: %s\n" -#: ../libxfs/rdwr.c:38 +#: ../libxfs/rdwr.c:40 #, c-format msgid "%s: %s can't memalign %d bytes: %s\n" msgstr "%s: %s nie mo¿na wykonaæ memalign dla %d bajtów: %s\n" -#: ../libxfs/rdwr.c:48 +#: ../libxfs/rdwr.c:50 #, c-format msgid "%s: %s seek to offset %llu failed: %s\n" msgstr "%s: %s zmiana offsetu na %llu nie powiod³a siê: %s\n" -#: ../libxfs/rdwr.c:58 +#: ../libxfs/rdwr.c:60 #, c-format msgid "%s: %s write failed: %s\n" msgstr "%s: %s zapis nie powiód³ siê: %s\n" -#: ../libxfs/rdwr.c:62 +#: ../libxfs/rdwr.c:64 #, c-format msgid "%s: %s not progressing?\n" msgstr "%s: %s nie postêpuje?\n" -#: ../libxfs/rdwr.c:272 +#: ../libxfs/rdwr.c:319 #, c-format msgid "%s: %s can't memalign %u bytes: %s\n" msgstr "%s: %s nie mo¿na wykonaæ memalign dla %u bajtów: %s\n" -#: ../libxfs/rdwr.c:349 +#: ../libxfs/rdwr.c:454 #, c-format msgid "%s: read failed: %s\n" msgstr "%s: odczyt nie powiód³ siê: %s\n" -#: ../libxfs/rdwr.c:391 +#: ../libxfs/rdwr.c:497 #, c-format msgid "%s: pwrite64 failed: %s\n" msgstr "%s: pwrite64 nie powiod³o siê: %s\n" -#: ../libxfs/rdwr.c:398 +#: ../libxfs/rdwr.c:504 #, c-format msgid "%s: error - wrote only %d of %d bytes\n" msgstr "%s: b³±d - zapisano tylko %d z %d bajtów\n" -#: ../libxfs/rdwr.c:493 +#: ../libxfs/rdwr.c:652 #, c-format msgid "%s: zone init failed (%s, %d bytes): %s\n" msgstr "%s: inicjalizacja strefy nie powiod³a siê (%s, %d bajtów): %s\n" -#: ../libxfs/rdwr.c:512 +#: ../libxfs/rdwr.c:671 #, c-format msgid "%s: zone calloc failed (%s, %d bytes): %s\n" msgstr "%s: calloc dla strefy nie powiod³o siê (%s, %d bajtów): %s\n" -#: ../libxfs/rdwr.c:547 +#: ../libxfs/rdwr.c:706 #, c-format msgid "%s: calloc failed (%d bytes): %s\n" msgstr "%s: calloc nie powiod³o siê (%d bajtów): %s\n" -#: ../libxfs/rdwr.c:576 +#: ../libxfs/rdwr.c:735 #, c-format msgid "%s: realloc failed (%d bytes): %s\n" msgstr "%s: realloc nie powiod³o siê (%d bajtów): %s\n" @@ -2768,7 +2802,7 @@ msgstr "%s: uwaga - itobp nie powiod msgid "%s: warning - iflush_int failed (%d)\n" msgstr "%s: uwaga - iflush_int nie powiod³o siê (%d)\n" -#: ../libxfs/trans.c:685 ../libxfs/trans.c:791 +#: ../libxfs/trans.c:684 ../libxfs/trans.c:790 #, c-format msgid "%s: unrecognised log item type\n" msgstr "%s: nierozpoznany typ elementu loga\n" @@ -2996,239 +3030,249 @@ msgstr "rozmiar loga %lld blok msgid "log size %lld bytes too large, maximum size is %d bytes\n" msgstr "rozmiar loga %lld bajtów jest zbyt du¿y, maksymalny rozmiar to %d bajtów\n" -#: ../mkfs/xfs_mkfs.c:442 +#: ../mkfs/xfs_mkfs.c:476 #, c-format msgid "agsize (%lldb) too small, need at least %lld blocks\n" msgstr "agsize (%lldb) zbyt ma³e, potrzeba co najmniej %lld bloków\n" -#: ../mkfs/xfs_mkfs.c:450 +#: ../mkfs/xfs_mkfs.c:484 #, c-format msgid "agsize (%lldb) too big, maximum is %lld blocks\n" msgstr "agsize (%lldb) zbyt du¿e, maksimum to %lld bloków\n" -#: ../mkfs/xfs_mkfs.c:458 +#: ../mkfs/xfs_mkfs.c:492 #, c-format msgid "agsize (%lldb) too big, data area is %lld blocks\n" msgstr "agsize (%lldb) zbyt du¿e, obszar danych to %lld bloków\n" -#: ../mkfs/xfs_mkfs.c:465 +#: ../mkfs/xfs_mkfs.c:499 #, c-format msgid "too many allocation groups for size = %lld\n" msgstr "zbyt du¿o grup alokacji dla rozmiaru = %lld\n" -#: ../mkfs/xfs_mkfs.c:467 +#: ../mkfs/xfs_mkfs.c:501 #, c-format msgid "need at most %lld allocation groups\n" msgstr "potrzeba najwy¿ej %lld grup alokacji\n" -#: ../mkfs/xfs_mkfs.c:475 +#: ../mkfs/xfs_mkfs.c:509 #, c-format msgid "too few allocation groups for size = %lld\n" msgstr "zbyt ma³o grup alokacji dla rozmiaru = %lld\n" -#: ../mkfs/xfs_mkfs.c:477 +#: ../mkfs/xfs_mkfs.c:511 #, c-format msgid "need at least %lld allocation groups\n" msgstr "potrzeba co najmniej %lld grup alokacji\n" -#: ../mkfs/xfs_mkfs.c:490 +#: ../mkfs/xfs_mkfs.c:524 #, c-format msgid "last AG size %lld blocks too small, minimum size is %lld blocks\n" msgstr "rozmiar ostatniej AG %lld bloków zbyt ma³y, minimalny rozmiar to %lld bloków\n" -#: ../mkfs/xfs_mkfs.c:501 +#: ../mkfs/xfs_mkfs.c:535 #, c-format msgid "%lld allocation groups is too many, maximum is %lld\n" msgstr "%lld grup alokacji to zbyt du¿o, maksimum to %lld\n" -#: ../mkfs/xfs_mkfs.c:747 +#: ../mkfs/xfs_mkfs.c:559 +#, c-format +msgid "error reading existing superblock -- failed to memalign buffer\n" +msgstr "b³±d podczas odczytu istniej±cego superbloku - nie uda³o siê wykonaæ memalign dla bufora\n" + +#: ../mkfs/xfs_mkfs.c:565 +#, c-format +msgid "existing superblock read failed: %s\n" +msgstr "odczyt istniej±cego superbloku nie powiód³ siê: %s\n" + +#: ../mkfs/xfs_mkfs.c:847 #, c-format msgid "%s: Specify data sunit in 512-byte blocks, no unit suffix\n" msgstr "%s: sunit danych nale¿y podaæ w 512-bajtowych blokach, bez jednostki\n" -#: ../mkfs/xfs_mkfs.c:763 +#: ../mkfs/xfs_mkfs.c:863 #, c-format msgid "%s: Specify data swidth in 512-byte blocks, no unit suffix\n" msgstr "%s: swidth danych nale¿y podaæ w 512-bajtowych blokach, bez jednostki\n" -#: ../mkfs/xfs_mkfs.c:790 +#: ../mkfs/xfs_mkfs.c:890 #, c-format msgid "%s: Specify data sw as multiple of su, no unit suffix\n" msgstr "%s: sw danych nale¿y podaæ jako wielokrotno¶æ su, bez jednostki\n" -#: ../mkfs/xfs_mkfs.c:1017 +#: ../mkfs/xfs_mkfs.c:1109 #, c-format msgid "Specify log sunit in 512-byte blocks, no size suffix\n" msgstr "sunit nale¿y podaæ w 512-bajtowych blokach, bez jednostki\n" -#: ../mkfs/xfs_mkfs.c:1260 +#: ../mkfs/xfs_mkfs.c:1361 #, c-format msgid "extra arguments\n" msgstr "nadmiarowe argumenty\n" -#: ../mkfs/xfs_mkfs.c:1266 +#: ../mkfs/xfs_mkfs.c:1367 #, c-format msgid "cannot specify both %s and -d name=%s\n" msgstr "nie mo¿na podaæ jednocze¶nie %s i -d name=%s\n" -#: ../mkfs/xfs_mkfs.c:1283 +#: ../mkfs/xfs_mkfs.c:1384 #, c-format msgid "illegal block size %d\n" msgstr "niedozwolony rozmiar bloku %d\n" -#: ../mkfs/xfs_mkfs.c:1302 +#: ../mkfs/xfs_mkfs.c:1403 #, c-format msgid "illegal sector size %d\n" msgstr "niedozwolony rozmiar sektora %d\n" -#: ../mkfs/xfs_mkfs.c:1307 +#: ../mkfs/xfs_mkfs.c:1408 #, c-format msgid "illegal log sector size %d\n" msgstr "niedozwolony rozmiar sektora loga %d\n" -#: ../mkfs/xfs_mkfs.c:1319 ../mkfs/xfs_mkfs.c:1329 +#: ../mkfs/xfs_mkfs.c:1420 ../mkfs/xfs_mkfs.c:1430 #, c-format msgid "illegal directory block size %d\n" msgstr "niedozwolony rozmiar bloku katalogu %d\n" -#: ../mkfs/xfs_mkfs.c:1345 +#: ../mkfs/xfs_mkfs.c:1446 #, c-format msgid "both -d agcount= and agsize= specified, use one or the other\n" msgstr "podano jednocze¶nie -d agcount= i agsize=, mo¿na u¿yæ tylko jednej z tych opcji\n" -#: ../mkfs/xfs_mkfs.c:1351 +#: ../mkfs/xfs_mkfs.c:1452 #, c-format msgid "if -d file then -d name and -d size are required\n" msgstr "je¶li podano -d file, to -d name i -d size s± wymagane\n" -#: ../mkfs/xfs_mkfs.c:1360 +#: ../mkfs/xfs_mkfs.c:1461 #, c-format msgid "illegal data length %lld, not a multiple of %d\n" msgstr "niedozwolona d³ugo¶æ danych %lld, nie jest wielokrotno¶ci± %d\n" -#: ../mkfs/xfs_mkfs.c:1366 +#: ../mkfs/xfs_mkfs.c:1467 #, c-format msgid "warning: data length %lld not a multiple of %d, truncated to %lld\n" msgstr "uwaga: d³ugo¶æ danych %lld nie jest wielokrotno¶ci± %d, uciêto do %lld\n" -#: ../mkfs/xfs_mkfs.c:1380 +#: ../mkfs/xfs_mkfs.c:1481 #, c-format msgid "if -l file then -l name and -l size are required\n" msgstr "je¶li podano -l file to -l name i -l size s± wymagane\n" -#: ../mkfs/xfs_mkfs.c:1389 +#: ../mkfs/xfs_mkfs.c:1490 #, c-format msgid "illegal log length %lld, not a multiple of %d\n" msgstr "niedozwolona d³ugo¶æ loga %lld, nie jest wielokrotno¶ci± %d\n" -#: ../mkfs/xfs_mkfs.c:1396 +#: ../mkfs/xfs_mkfs.c:1497 #, c-format msgid "warning: log length %lld not a multiple of %d, truncated to %lld\n" msgstr "uwaga: d³ugo¶æ loga %lld nie jest wielokrotno¶ci± %d, uciêto do %lld\n" -#: ../mkfs/xfs_mkfs.c:1402 +#: ../mkfs/xfs_mkfs.c:1503 #, c-format msgid "if -r file then -r name and -r size are required\n" msgstr "je¶li podano -r file, to -r name i -r size s± wymagane\n" -#: ../mkfs/xfs_mkfs.c:1411 +#: ../mkfs/xfs_mkfs.c:1512 #, c-format msgid "illegal rt length %lld, not a multiple of %d\n" msgstr "niedozwolona d³ugo¶æ rt %lld, nie jest wielokrotno¶ci± %d\n" -#: ../mkfs/xfs_mkfs.c:1418 +#: ../mkfs/xfs_mkfs.c:1519 #, c-format msgid "warning: rt length %lld not a multiple of %d, truncated to %lld\n" msgstr "uwaga: d³ugo¶æ rt %lld nie jest wielokrotno¶ci± %d, uciêto do %lld\n" -#: ../mkfs/xfs_mkfs.c:1431 +#: ../mkfs/xfs_mkfs.c:1532 #, c-format msgid "illegal rt extent size %lld, not a multiple of %d\n" msgstr "niedozwolony rozmiar fragmentu rt %lld, nie jest wielokrotno¶ci± %d\n" -#: ../mkfs/xfs_mkfs.c:1437 +#: ../mkfs/xfs_mkfs.c:1538 #, c-format msgid "rt extent size %s too large, maximum %d\n" msgstr "rozmiar fragmentu rt %s zbyt du¿y, maksimum to %d\n" -#: ../mkfs/xfs_mkfs.c:1443 +#: ../mkfs/xfs_mkfs.c:1544 #, c-format msgid "rt extent size %s too small, minimum %d\n" msgstr "rozmiar fragmentu rt %s zbyt ma³y, minimum to %d\n" -#: ../mkfs/xfs_mkfs.c:1485 +#: ../mkfs/xfs_mkfs.c:1588 #, c-format msgid "illegal inode size %d\n" msgstr "niedozwolony rozmiar i-wêz³a %d\n" -#: ../mkfs/xfs_mkfs.c:1490 +#: ../mkfs/xfs_mkfs.c:1593 #, c-format msgid "allowable inode size with %d byte blocks is %d\n" msgstr "dozwolony rozmiar i-wêz³a przy blokach %d-bajtowych to %d\n" -#: ../mkfs/xfs_mkfs.c:1494 +#: ../mkfs/xfs_mkfs.c:1597 #, c-format msgid "allowable inode size with %d byte blocks is between %d and %d\n" msgstr "dozwolone rozmiary i-wêz³a przy blokach %d-bajtowych s± od %d do %d\n" -#: ../mkfs/xfs_mkfs.c:1502 +#: ../mkfs/xfs_mkfs.c:1605 #, c-format msgid "log stripe unit specified, using v2 logs\n" msgstr "podano jednostkê pasa loga, u¿yto logów v2\n" -#: ../mkfs/xfs_mkfs.c:1515 +#: ../mkfs/xfs_mkfs.c:1623 #, c-format msgid "no device name given in argument list\n" msgstr "nie podano nazwy urz±dzenia w li¶cie argumentów\n" -#: ../mkfs/xfs_mkfs.c:1535 +#: ../mkfs/xfs_mkfs.c:1648 #, c-format msgid "%s: Use the -f option to force overwrite.\n" msgstr "%s: Mo¿na u¿yæ opcji -f do wymuszenia nadpisania.\n" -#: ../mkfs/xfs_mkfs.c:1546 +#: ../mkfs/xfs_mkfs.c:1659 msgid "internal log" msgstr "log wewnêtrzny" -#: ../mkfs/xfs_mkfs.c:1548 +#: ../mkfs/xfs_mkfs.c:1661 msgid "volume log" msgstr "log na wolumenie" -#: ../mkfs/xfs_mkfs.c:1550 +#: ../mkfs/xfs_mkfs.c:1663 #, c-format msgid "no log subvolume or internal log\n" msgstr "brak podwolumenu loga ani loga wewnêtrznego\n" -#: ../mkfs/xfs_mkfs.c:1557 +#: ../mkfs/xfs_mkfs.c:1670 msgid "volume rt" msgstr "wolumen rt" -#: ../mkfs/xfs_mkfs.c:1562 +#: ../mkfs/xfs_mkfs.c:1675 #, c-format msgid "size %s specified for data subvolume is too large, maximum is %lld blocks\n" msgstr "rozmiar %s podany dla podwolumenu danych jest zbyt du¿y, maksimum to %lld bloków\n" -#: ../mkfs/xfs_mkfs.c:1569 +#: ../mkfs/xfs_mkfs.c:1682 #, c-format msgid "can't get size of data subvolume\n" msgstr "nie mo¿na pobraæ rozmiaru podwolumenu danych\n" -#: ../mkfs/xfs_mkfs.c:1574 +#: ../mkfs/xfs_mkfs.c:1687 #, c-format msgid "size %lld of data subvolume is too small, minimum %d blocks\n" msgstr "rozmiar %lld dla podwolumenu danych jest zbyt ma³y, minimum to %d bloków\n" -#: ../mkfs/xfs_mkfs.c:1581 +#: ../mkfs/xfs_mkfs.c:1694 #, c-format msgid "can't have both external and internal logs\n" msgstr "nie mo¿na mieæ jednocze¶nie zewnêtrznego i wewnêtrznego loga\n" -#: ../mkfs/xfs_mkfs.c:1585 +#: ../mkfs/xfs_mkfs.c:1698 #, c-format msgid "data and log sector sizes must be equal for internal logs\n" msgstr "rozmiary sektora danych i loga musz± byæ równe dla logów wewnêtrznych\n" -#: ../mkfs/xfs_mkfs.c:1591 +#: ../mkfs/xfs_mkfs.c:1704 #, c-format msgid "" "Warning: the data subvolume sector size %u is less than the sector size \n" @@ -3237,7 +3281,7 @@ msgstr "" "Uwaga: rozmiar sektora podwolumenu danych %u jest mniejszy od rozmiaru\n" "sektora zg³aszanego przez urz±dzenie (%u).\n" -#: ../mkfs/xfs_mkfs.c:1597 +#: ../mkfs/xfs_mkfs.c:1710 #, c-format msgid "" "Warning: the log subvolume sector size %u is less than the sector size\n" @@ -3246,7 +3290,7 @@ msgstr "" "Uwaga: rozmiar sektora podwolumenu loga %u jest mniejszy od rozmiaru\n" "sektora zg³aszanego przez urz±dzenie (%u).\n" -#: ../mkfs/xfs_mkfs.c:1603 +#: ../mkfs/xfs_mkfs.c:1716 #, c-format msgid "" "Warning: the realtime subvolume sector size %u is less than the sector size\n" @@ -3255,57 +3299,57 @@ msgstr "" "Uwaga: rozmiar sektora podwolumenu realtime %u jest mniejszy od rozmiaru\n" "sektora zg³aszanego przez urz±dzenie (%u).\n" -#: ../mkfs/xfs_mkfs.c:1617 +#: ../mkfs/xfs_mkfs.c:1730 #, c-format msgid "size %s specified for log subvolume is too large, maximum is %lld blocks\n" msgstr "rozmiar %s podany dla podwolumenu loga jest zbyt du¿y, maksimum to %lld bloków\n" -#: ../mkfs/xfs_mkfs.c:1624 +#: ../mkfs/xfs_mkfs.c:1737 #, c-format msgid "size specified for non-existent log subvolume\n" msgstr "podano rozmiar dla nie istniej±cego podwolumenu loga\n" -#: ../mkfs/xfs_mkfs.c:1627 +#: ../mkfs/xfs_mkfs.c:1740 #, c-format msgid "size %lld too large for internal log\n" msgstr "rozmiar %lld jest zbyt du¿y dla loga wewnêtrznego\n" -#: ../mkfs/xfs_mkfs.c:1654 +#: ../mkfs/xfs_mkfs.c:1767 #, c-format msgid "size %s specified for rt subvolume is too large, maximum is %lld blocks\n" msgstr "rozmiar %s podany dla podwolumenu rt jest zbyt du¿y, maksimum to %lld bloków\n" -#: ../mkfs/xfs_mkfs.c:1662 +#: ../mkfs/xfs_mkfs.c:1775 #, c-format msgid "size specified for non-existent rt subvolume\n" msgstr "podano rozmiar dla nie istniej±cego podwolumenu rt\n" -#: ../mkfs/xfs_mkfs.c:1679 +#: ../mkfs/xfs_mkfs.c:1792 #, c-format msgid "agsize (%lld) not a multiple of fs blk size (%d)\n" msgstr "agsize (%lld) nie jest wielokrotno¶ci± rozmiaru bloku systemu plików (%d)\n" -#: ../mkfs/xfs_mkfs.c:1707 +#: ../mkfs/xfs_mkfs.c:1822 #, c-format msgid "%s: Specified data stripe unit %d is not the same as the volume stripe unit %d\n" msgstr "%s: Podana jednostka pasa danych %d nie jest taka sama jak jednostka pasa wolumenu %d\n" -#: ../mkfs/xfs_mkfs.c:1713 +#: ../mkfs/xfs_mkfs.c:1829 #, c-format msgid "%s: Specified data stripe width %d is not the same as the volume stripe width %d\n" msgstr "%s: Podana szeroko¶æ pasa danych %d nie jest taka sama jak szeroko¶æ pasa wolumenu %d\n" -#: ../mkfs/xfs_mkfs.c:1758 +#: ../mkfs/xfs_mkfs.c:1876 #, c-format msgid "agsize rounded to %lld, swidth = %d\n" msgstr "agsize zaokr±glone do %lld, swidth = %d\n" -#: ../mkfs/xfs_mkfs.c:1765 +#: ../mkfs/xfs_mkfs.c:1883 #, c-format msgid "Allocation group size (%lld) is not a multiple of the stripe unit (%d)\n" msgstr "Rozmiar grupy alokacji (%lld) nie jest wielokrotno¶ci± jednostki pasa (%d)\n" -#: ../mkfs/xfs_mkfs.c:1787 +#: ../mkfs/xfs_mkfs.c:1905 #, c-format msgid "" "Warning: AG size is a multiple of stripe width. This can cause performance\n" @@ -3317,113 +3361,114 @@ msgstr "" "Aby temu zapobiec, nale¿y uruchomiæ mkfs z rozmiarem AG o jedn± jednostkê\n" "pasa mniejszym, na przyk³ad %llu.\n" -#: ../mkfs/xfs_mkfs.c:1812 +#: ../mkfs/xfs_mkfs.c:1930 #, c-format msgid "%s: Stripe unit(%d) or stripe width(%d) is not a multiple of the block size(%d)\n" msgstr "%s: Jednostka pasa (%d) lub szeroko¶æ pasa (%d) nie jest wielokrotno¶ci± rozmiaru bloku (%d)\n" -#: ../mkfs/xfs_mkfs.c:1827 +#: ../mkfs/xfs_mkfs.c:1945 #, c-format msgid "log stripe unit (%d) must be a multiple of the block size (%d)\n" msgstr "jednostka pasa loga (%d) musi byæ wielokrotno¶ci± rozmiaru bloku (%d)\n" -#: ../mkfs/xfs_mkfs.c:1840 +#: ../mkfs/xfs_mkfs.c:1958 #, c-format msgid "log stripe unit (%d bytes) is too large (maximum is 256KiB)\n" msgstr "jednostka pasa loga (%d bajtów) jest zbyt du¿a (maksimum to 256KiB)\n" -#: ../mkfs/xfs_mkfs.c:1843 +#: ../mkfs/xfs_mkfs.c:1961 #, c-format msgid "log stripe unit adjusted to 32KiB\n" msgstr "jednostka pasa loga zmodyfikowana na 32KiB\n" -#: ../mkfs/xfs_mkfs.c:1868 +#: ../mkfs/xfs_mkfs.c:1986 #, c-format msgid "internal log size %lld too large, must fit in allocation group\n" msgstr "rozmiar wewnêtrznego loga %lld zbyt du¿y, musi siê zmie¶ciæ w grupie alokacji\n" -#: ../mkfs/xfs_mkfs.c:1875 +#: ../mkfs/xfs_mkfs.c:1993 #, c-format msgid "log ag number %d too large, must be less than %lld\n" msgstr "liczba ag loga %d zbyt du¿a, musi byæ mniejsza ni¿ %lld\n" -#: ../mkfs/xfs_mkfs.c:1905 +#: ../mkfs/xfs_mkfs.c:2023 #, c-format msgid "" "meta-data=%-22s isize=%-6d agcount=%lld, agsize=%lld blks\n" " =%-22s sectsz=%-5u attr=%u\n" "data =%-22s bsize=%-6u blocks=%llu, imaxpct=%u\n" -" =%-22s sunit=%-6u swidth=%u blks, unwritten=%u\n" +" =%-22s sunit=%-6u swidth=%u blks\n" "naming =version %-14u bsize=%-6u\n" "log =%-22s bsize=%-6d blocks=%lld, version=%d\n" -" =%-22s sectsz=%-5u sunit=%d blks\n" +" =%-22s sectsz=%-5u sunit=%d blks, lazy-count=%d\n" "realtime =%-22s extsz=%-6d blocks=%lld, rtextents=%lld\n" msgstr "" "metadane=%-22s isize=%-6d agcount=%lld, agsize=%lld bloków\n" " =%-22s sectsz=%-5u attr=%u\n" "dane =%-22s bsize=%-6u blocks=%llu, imaxpct=%u\n" -" =%-22s sunit=%-6u swidth=%u bloków, niezapisanych=%u\n" +" =%-22s sunit=%-6u swidth=%u bloków\n" "nazwy =wersja %-14u bsize=%-6u\n" "log =%-22s bsize=%-6d blocks=%lld, wersja=%d\n" -" =%-22s sectsz=%-5u sunit=%d bloków\n" +" =%-22s sectsz=%-5u sunit=%d bloków, lazy-count=%d\n" "realtime=%-22s extsz=%-6d blocks=%lld, rtextents=%lld\n" -#: ../mkfs/xfs_mkfs.c:2012 +#: ../mkfs/xfs_mkfs.c:2140 #, c-format msgid "%s: Growing the data section failed\n" msgstr "%s: Powiêkszenie sekcji danych nie powiod³o siê\n" -#: ../mkfs/xfs_mkfs.c:2041 +#: ../mkfs/xfs_mkfs.c:2170 #, c-format msgid "%s: filesystem failed to initialize\n" msgstr "%s: nie uda³o siê zainicjowaæ systemu plików\n" -#: ../mkfs/xfs_mkfs.c:2265 +#: ../mkfs/xfs_mkfs.c:2394 #, c-format msgid "%s: root inode created in AG %u, not AG 0\n" msgstr "%s: g³ówny i-wêze³ utworzony w AG %u, nie AG 0\n" -#: ../mkfs/xfs_mkfs.c:2332 +#: ../mkfs/xfs_mkfs.c:2461 #, c-format msgid "Cannot specify both -%c %s and -%c %s\n" msgstr "Nie mo¿na podaæ jednocze¶nie -%c %s i %c %s\n" -#: ../mkfs/xfs_mkfs.c:2343 +#: ../mkfs/xfs_mkfs.c:2472 #, c-format msgid "Illegal value %s for -%s option\n" msgstr "Niedozwolona warto¶æ %s dla opcji -%s\n" -#: ../mkfs/xfs_mkfs.c:2360 +#: ../mkfs/xfs_mkfs.c:2489 #, c-format msgid "-%c %s option requires a value\n" msgstr "Opcja -%c %s wymaga warto¶ci\n" -#: ../mkfs/xfs_mkfs.c:2373 ../repair/xfs_repair.c:140 +#: ../mkfs/xfs_mkfs.c:2502 ../repair/xfs_repair.c:168 #, c-format msgid "option respecified\n" msgstr "ponownie podana opcja\n" -#: ../mkfs/xfs_mkfs.c:2382 ../repair/xfs_repair.c:147 +#: ../mkfs/xfs_mkfs.c:2511 ../repair/xfs_repair.c:175 #, c-format msgid "unknown option -%c %s\n" msgstr "nieznana opcja -%c %s\n" -#: ../mkfs/xfs_mkfs.c:2421 +#: ../mkfs/xfs_mkfs.c:2550 #, c-format msgid "blocksize not available yet.\n" msgstr "rozmiar bloku jeszcze nie dostêpny.\n" -#: ../mkfs/xfs_mkfs.c:2447 +#: ../mkfs/xfs_mkfs.c:2576 #, c-format msgid "" "Usage: %s\n" "/* blocksize */\t\t[-b log=n|size=num]\n" "/* data subvol */\t[-d agcount=n,agsize=n,file,name=xxx,size=num,\n" "\t\t\t (sunit=value,swidth=value|su=num,sw=num),\n" -"\t\t\t sectlog=n|sectsize=num,unwritten=0|1]\n" +"\t\t\t sectlog=n|sectsize=num\n" "/* inode size */\t[-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2]\n" "/* log subvol */\t[-l agnum=n,internal,size=num,logdev=xxx,version=n\n" -"\t\t\t sunit=value|su=num,sectlog=n|sectsize=num]\n" +"\t\t\t sunit=value|su=num,sectlog=n|sectsize=num,\n" +"\t\t\t lazy-count=0|1]\n" "/* label */\t\t[-L label (maximum 12 characters)]\n" "/* naming */\t\t[-n log=n|size=num,version=n]\n" "/* prototype file */\t[-p fname]\n" @@ -3438,21 +3483,22 @@ msgid "" " is xxx (512 byte blocks).\n" msgstr "" "Sk³adnia: %s\n" -"/* rozmiar bloku */ [-b log=n|size=liczba]\n" +"/* rozmiar bloku */ [-b log=n|size=liczba]\n" "/* podwolumen danych */ [-d agcount=n,agsize=n,file,name=xxx,size=liczba,\n" -" (sunit=warto¶æ,swidth=warto¶æ|su=liczba,sw=liczba),\n" -" sectlog=n|sectsize=liczba,unwritten=0|1]\n" -"/* rozmiar i-wêz³a */ [-i log=n|perblock=n|size=liczba,maxpct=n,attr=0|1|2]\n" -"/* podwolumen loga */ [-i agnum=n,internal,size=liczba,logdev=xxx,version=n\n" -" sunit=warto¶æ|su=liczba,sectlog=n|sectsize=liczba]\n" -"/* etykieta */ [-L etykieta (maksymalnie 12 znaków)]\n" -"/* nazwy */ [-n log=n|size=liczba,wersja=n]\n" -"/* plik prototypu */ [-p nazwa_pliku]\n" -"/* cisza */ [-q]\n" -"/* podwolumen rt */ [-r extsize=liczba,size=liczba,rtdev=xxx]\n" -"/* rozmiar sektora */ [-s log=n|size=liczba]\n" -"/* wersja */ [-V]\n" -" nazwa_urz±dzenia\n" +" (sunit=warto¶æ,swidth=warto¶æ|su=liczba,sw=liczba),\n" +" sectlog=n|sectsize=liczba]\n" +"/* rozmiar i-wêz³a */ [-i log=n|perblock=n|size=liczba,maxpct=n,attr=0|1|2]\n" +"/* podwolumen loga */ [-i agnum=n,internal,size=liczba,logdev=xxx,version=n\n" +" sunit=warto¶æ|su=liczba,sectlog=n|sectsize=liczba,\n" +" lazy-count=0|1]\n" +"/* etykieta */ [-L etykieta (maksymalnie 12 znaków)]\n" +"/* nazwy */ [-n log=n|size=liczba,wersja=n]\n" +"/* plik prototypu */ [-p nazwa_pliku]\n" +"/* cisza */ [-q]\n" +"/* podwolumen rt */ [-r extsize=liczba,size=liczba,rtdev=xxx]\n" +"/* rozmiar sektora */ [-s log=n|size=liczba]\n" +"/* wersja */ [-V]\n" +" nazwa_urz±dzenia\n" " jest wymagana, chyba ¿e podano -d name=xxx.\n" " to xxx (bajtów), xxxs (sektorów), xxxb (bloków systemu plików),\n" " xxxk (xxx KiB), xxxm (xxx MiB), xxxg (xxx GiB), xxxt (xxx TiB),\n" @@ -3666,7 +3712,6 @@ msgid "restore" msgstr "restore" #: ../quota/edit.c:674 ../quota/report.c:33 ../quota/report.c:632 -#: ../quota/state.c:528 msgid "[-gpu] [-f file]" msgstr "[-gpu] [-f plik]" @@ -3725,64 +3770,64 @@ msgstr "" " -N - pominiêcie nag³ówka z wyj¶cia\n" "\n" -#: ../quota/free.c:137 +#: ../quota/free.c:142 #, c-format msgid "%s: project quota flag not set on %s\n" msgstr "%s: flaga quot projektu nie ustawiona dla %s\n" -#: ../quota/free.c:145 +#: ../quota/free.c:150 #, c-format msgid "%s: project ID %u (%s) doesn't match ID %u (%s)\n" msgstr "%s: ID projektu %u (%s) nie zgadza siê z ID %u (%s)\n" -#: ../quota/free.c:210 +#: ../quota/free.c:215 #, c-format msgid "Filesystem " msgstr "System plików " -#: ../quota/free.c:210 +#: ../quota/free.c:215 #, c-format msgid "Filesystem " msgstr "System plików " -#: ../quota/free.c:213 +#: ../quota/free.c:218 #, c-format msgid " Size Used Avail Use%%" msgstr " Rozmiar U¿yto Dost. %%u¿." -#: ../quota/free.c:214 +#: ../quota/free.c:219 #, c-format msgid " 1K-blocks Used Available Use%%" msgstr " Bloki 1K U¿yto Dostêpnych %%u¿." -#: ../quota/free.c:217 +#: ../quota/free.c:222 #, c-format msgid " Inodes Used Free Use%%" msgstr " I-wêz³y U¿yto Wolne %%u¿." -#: ../quota/free.c:218 +#: ../quota/free.c:223 #, c-format msgid " Inodes IUsed IFree IUse%%" msgstr " I-wêz³y U¿ytoI WolneI %%u¿I" -#: ../quota/free.c:219 +#: ../quota/free.c:224 #, c-format msgid " Pathname\n" msgstr " ¦cie¿ka\n" -#: ../quota/free.c:350 +#: ../quota/free.c:355 msgid "df" msgstr "df" -#: ../quota/free.c:351 ../repair/dir2.c:941 ../repair/dir2.c:1476 +#: ../quota/free.c:356 ../repair/dir2.c:951 ../repair/dir2.c:1479 msgid "free" msgstr "free" -#: ../quota/free.c:355 +#: ../quota/free.c:360 msgid "[-bir] [-hn] [-f file]" msgstr "[-bir] [hn] [-f plik]" -#: ../quota/free.c:356 +#: ../quota/free.c:361 msgid "show free and used counts for blocks and inodes" msgstr "pokazanie liczby wolnych i zajêtych bloków i i-wêz³ów" @@ -3820,23 +3865,28 @@ msgstr " (projekt %u" msgid ", %s" msgstr ", %s" -#: ../quota/path.c:119 +#: ../quota/path.c:103 +#, c-format +msgid "No paths are available\n" +msgstr "Brak ¶cie¿ek\n" + +#: ../quota/path.c:124 msgid "path" msgstr "path" -#: ../quota/path.c:120 +#: ../quota/path.c:125 msgid "paths" msgstr "paths" -#: ../quota/path.c:125 +#: ../quota/path.c:131 msgid "set current path, or show the list of paths" msgstr "ustawienie bie¿±cej ¶cie¿ki lub pokazanie listy ¶cie¿ek" -#: ../quota/path.c:132 +#: ../quota/path.c:139 msgid "list known mount points and projects" msgstr "wypisanie znanych punktów montowañ i projektów" -#: ../quota/project.c:37 +#: ../quota/project.c:44 #, c-format msgid "" "\n" @@ -3916,69 +3966,79 @@ msgstr "" " manuala xfs_quota.\n" "\n" -#: ../quota/project.c:94 +#: ../quota/project.c:94 ../quota/project.c:133 ../quota/project.c:172 +#, c-format +msgid "%s: cannot stat file %s\n" +msgstr "%s: nie mo¿na wykonaæ stat na pliku %s\n" + +#: ../quota/project.c:98 ../quota/project.c:137 ../quota/project.c:176 +#, c-format +msgid "%s: skipping special file %s\n" +msgstr "%s: pominiêto plik specjalny %s\n" + +#: ../quota/project.c:110 #, c-format msgid "%s - project identifier is not set (inode=%u, tree=%u)\n" msgstr "%s - identyfikator projektu nie ustawiony (i-wêze³=%u, drzewo=%u)\n" -#: ../quota/project.c:98 +#: ../quota/project.c:114 #, c-format msgid "%s - project inheritance flag is not set\n" msgstr "%s - flaga dziedziczenia projektu nie ustawiona\n" -#: ../quota/project.c:130 +#: ../quota/project.c:155 #, c-format msgid "%s: cannot clear project on %s: %s\n" msgstr "%s: nie mo¿na usun±æ projektu z %s: %s\n" -#: ../quota/project.c:160 +#: ../quota/project.c:194 #, c-format msgid "%s: cannot set project on %s: %s\n" msgstr "%s: nie mo¿na ustawiæ projektu na %s: %s\n" -#: ../quota/project.c:174 +#: ../quota/project.c:208 #, c-format msgid "Checking project %s (path %s)...\n" msgstr "Sprawdzanie projektu %s (¶cie¿ka %s)...\n" -#: ../quota/project.c:178 +#: ../quota/project.c:212 #, c-format msgid "Setting up project %s (path %s)...\n" msgstr "Ustanawianie projektu %s (¶cie¿ka %s)...\n" -#: ../quota/project.c:182 +#: ../quota/project.c:216 #, c-format msgid "Clearing project %s (path %s)...\n" msgstr "Usuwanie projektu %s (¶cie¿ka %s)...\n" -#: ../quota/project.c:205 +#: ../quota/project.c:239 #, c-format msgid "Processed %d %s paths for project %s\n" msgstr "Przetworzono %d ¶cie¿ek %s dla projektu %s\n" -#: ../quota/project.c:241 +#: ../quota/project.c:275 #, c-format msgid "projects file \"%s\" doesn't exist\n" msgstr "plik projektów \"%s\" nie istnieje\n" -#: ../quota/project.c:249 +#: ../quota/project.c:283 #, c-format msgid "%s - no such project in %s\n" msgstr "%s - nie ma takiego projektu w %s\n" -#: ../quota/project.c:262 +#: ../quota/project.c:296 msgid "project" msgstr "project" -#: ../quota/project.c:263 +#: ../quota/project.c:297 msgid "tree" msgstr "tree" -#: ../quota/project.c:265 +#: ../quota/project.c:299 msgid "[-c|-s|-C] project ..." msgstr "[-c|-s|-C] projekt ..." -#: ../quota/project.c:268 +#: ../quota/project.c:302 msgid "check, setup or clear project quota trees" msgstr "sprawdzenie, ustanowienie lub usuniêcie drzew projektów" @@ -4133,39 +4193,39 @@ msgstr "Realtime Quota Limit Czas ostrz. " msgid " Realtime Quota Limit Warn/Time " msgstr " Realtime Quota Limit Czas ostrz. " -#: ../quota/quota.c:232 +#: ../quota/quota.c:234 #, c-format msgid "%s: cannot find user %s\n" msgstr "%s: nie mo¿na odnale¼æ u¿ytkownika %s\n" -#: ../quota/quota.c:279 +#: ../quota/quota.c:283 #, c-format msgid "%s: cannot find group %s\n" msgstr "%s: nie mo¿na odnale¼æ grupy %s\n" -#: ../quota/quota.c:333 +#: ../quota/quota.c:339 #, c-format msgid "%s: must specify a project name/ID\n" msgstr "%s: nale¿y podaæ nazwê/ID projektu\n" -#: ../quota/quota.c:345 +#: ../quota/quota.c:351 #, c-format msgid "%s: cannot find project %s\n" msgstr "%s: nie mo¿na odnale¼æ projektu %s\n" -#: ../quota/quota.c:445 +#: ../quota/quota.c:451 msgid "quota" msgstr "quota" -#: ../quota/quota.c:446 +#: ../quota/quota.c:452 msgid "l" msgstr "l" -#: ../quota/quota.c:450 -msgid "[-bir] [-gpu] [-hnv] [-f file] [id|name]..." -msgstr "[-bir] [-gpu] [-hnv] [-f plik] [id|nazwa]..." +#: ../quota/quota.c:456 +msgid "[-bir] [-gpu] [-hnNv] [-f file] [id|name]..." +msgstr "[-bir] [-gpu] [-hnNv] [-f plik] [id|nazwa]..." -#: ../quota/quota.c:451 +#: ../quota/quota.c:457 msgid "show usage and limits" msgstr "pokazanie wykorzystania i limitów" @@ -4469,6 +4529,10 @@ msgstr "wy msgid "state" msgstr "state" +#: ../quota/state.c:528 +msgid "[-gpu] [-a] [-v] [-f file]" +msgstr "[-gpu] [-a] [-v] [-f plik]" + #: ../quota/state.c:529 msgid "get overall quota state information" msgstr "uzyskanie ogólnych informacji o stanie quot" @@ -4915,7 +4979,7 @@ msgstr "wska msgid "bad attribute leaf magic # %#x for dir ino %llu\n" msgstr "b³êdna liczba magiczna li¶cia atrybutu %#x dla i-wêz³a katalogu %llu\n" -#: ../repair/attr_repair.c:991 ../repair/dinode.c:2539 +#: ../repair/attr_repair.c:991 ../repair/dinode.c:2563 #, c-format msgid "illegal attribute format %d, ino %llu\n" msgstr "niedozwolony format atrybutu %d, i-wêze³ %llu\n" @@ -4955,746 +5019,751 @@ msgstr "realloc w blkmap_getn nie powiod msgid "realloc failed in blkmap_grow (%u bytes)\n" msgstr "realloc nie powiod³o siê w blkmap_grow (%u bajtów)\n" -#: ../repair/dino_chunks.c:58 +#: ../repair/dino_chunks.c:59 #, c-format msgid "cannot read agbno (%u/%u), disk block %lld\n" msgstr "nie mo¿na odczytaæ agbno (%u/%u), blok dysku %lld\n" -#: ../repair/dino_chunks.c:154 +#: ../repair/dino_chunks.c:157 #, c-format msgid "uncertain inode block %d/%d already known\n" msgstr "niepewny blok i-wêz³a %d/%d ju¿ znany\n" -#: ../repair/dino_chunks.c:170 ../repair/dino_chunks.c:436 -#: ../repair/dino_chunks.c:493 +#: ../repair/dino_chunks.c:173 ../repair/dino_chunks.c:443 +#: ../repair/dino_chunks.c:505 #, c-format msgid "inode block %d/%d multiply claimed, (state %d)\n" msgstr "blok i-wêz³a %d/%d ju¿ przypisany (stan %d)\n" -#: ../repair/dino_chunks.c:176 ../repair/dino_chunks.c:498 +#: ../repair/dino_chunks.c:180 ../repair/dino_chunks.c:510 #, c-format msgid "inode block %d/%d bad state, (state %d)\n" msgstr "blok i-wêz³a (%d/%d) w b³êdnym stanie (stan %d)\n" -#: ../repair/dino_chunks.c:443 +#: ../repair/dino_chunks.c:450 #, c-format msgid "uncertain inode block overlap, agbno = %d, ino = %llu\n" msgstr "niepewny blok i-wêz³a pokrywa siê, agbno = %d, i-wêze³ %llu\n" -#: ../repair/dino_chunks.c:480 +#: ../repair/dino_chunks.c:492 #, c-format msgid "uncertain inode block %llu already known\n" msgstr "niepewny blok i-wêz³a %llu ju¿ znany\n" -#: ../repair/dino_chunks.c:595 ../repair/phase7.c:99 ../repair/phase7.c:106 +#: ../repair/dino_chunks.c:628 #, c-format -msgid "cannot read inode %llu, disk block %lld, cnt %d\n" -msgstr "nie mo¿na odczytaæ i-wêz³a %llu, blok dysku %lld, cnt %d\n" +msgid "failed to allocate %d bytes of memory\n" +msgstr "nie uda³o siê przydzieliæ %d bajtów pamiêci\n" -#: ../repair/dino_chunks.c:692 +#: ../repair/dino_chunks.c:640 #, c-format -msgid "can't read inode %llu, disk block %lld, cnt %d\n" +msgid "cannot read inode %llu, disk block %lld, cnt %d\n" msgstr "nie mo¿na odczytaæ i-wêz³a %llu, blok dysku %lld, cnt %d\n" -#: ../repair/dino_chunks.c:712 ../repair/dino_chunks.c:881 -#: ../repair/phase3.c:70 +#: ../repair/dino_chunks.c:757 ../repair/dino_chunks.c:939 +#: ../repair/phase3.c:74 #, c-format msgid "bad state in block map %d\n" msgstr "b³êdny stan w mapie bloku %d\n" -#: ../repair/dino_chunks.c:716 ../repair/dino_chunks.c:886 +#: ../repair/dino_chunks.c:761 ../repair/dino_chunks.c:944 #, c-format msgid "inode block %llu multiply claimed, state was %d\n" msgstr "blok i-wêz³a %llu wielokrotnie przydzielony, stan by³ %d\n" -#: ../repair/dino_chunks.c:753 +#: ../repair/dino_chunks.c:797 #, c-format msgid "imap claims in-use inode %llu is free, " msgstr "imap twierdzi, ¿e u¿ywany i-wêze³ %llu jest wolny, " -#: ../repair/dino_chunks.c:762 +#: ../repair/dino_chunks.c:804 msgid "correcting imap\n" msgstr "poprawiono imap\n" -#: ../repair/dino_chunks.c:764 +#: ../repair/dino_chunks.c:806 msgid "would correct imap\n" msgstr "imap zosta³oby poprawione\n" -#: ../repair/dino_chunks.c:801 +#: ../repair/dino_chunks.c:852 #, c-format msgid "cleared root inode %llu\n" msgstr "wyczyszczono g³ówny i-wêze³ %llu\n" -#: ../repair/dino_chunks.c:805 +#: ../repair/dino_chunks.c:856 #, c-format msgid "would clear root inode %llu\n" msgstr "g³ówny wêze³ %llu zosta³by wyczyszczony\n" -#: ../repair/dino_chunks.c:814 +#: ../repair/dino_chunks.c:865 #, c-format msgid "cleared realtime bitmap inode %llu\n" msgstr "wyczyszczono i-wêze³ bitmapy realtime %llu\n" -#: ../repair/dino_chunks.c:819 +#: ../repair/dino_chunks.c:870 #, c-format msgid "would clear realtime bitmap inode %llu\n" msgstr "i-wêze³ bitmapy realtime %llu zosta³by wyczyszczony\n" -#: ../repair/dino_chunks.c:829 +#: ../repair/dino_chunks.c:880 #, c-format msgid "cleared realtime summary inode %llu\n" msgstr "wyczyszczono i-wêze³ opisu realtime %llu\n" -#: ../repair/dino_chunks.c:834 +#: ../repair/dino_chunks.c:885 #, c-format msgid "would clear realtime summary inode %llu\n" msgstr "i-wêze³ opisu realtime %llu zosta³by wyczyszczony\n" -#: ../repair/dino_chunks.c:840 +#: ../repair/dino_chunks.c:891 #, c-format msgid "cleared inode %llu\n" msgstr "wyczyszczono i-wêze³ %llu\n" -#: ../repair/dino_chunks.c:843 +#: ../repair/dino_chunks.c:894 #, c-format msgid "would have cleared inode %llu\n" msgstr "i-wêze³ %llu zosta³by wyczyszczony\n" -#: ../repair/dino_chunks.c:1025 ../repair/dino_chunks.c:1060 -#: ../repair/dino_chunks.c:1174 +#: ../repair/dino_chunks.c:1100 ../repair/dino_chunks.c:1135 +#: ../repair/dino_chunks.c:1249 msgid "found inodes not in the inode allocation tree\n" msgstr "znaleziono i-wêz³y nieobecne w drzewie alokacji i-wêz³ów\n" -#: ../repair/dinode.c:70 +#: ../repair/dinode.c:71 msgid "Unknown inode format.\n" msgstr "Nieznany format i-wêz³a.\n" -#: ../repair/dinode.c:87 +#: ../repair/dinode.c:88 #, c-format msgid "clearing inode %llu attributes\n" msgstr "wyczyszczono atrybuty i-wêz³a %llu\n" -#: ../repair/dinode.c:90 +#: ../repair/dinode.c:91 #, c-format msgid "would have cleared inode %llu attributes\n" msgstr "atrybuty i-wêz³a %llu zosta³yby wyczyszczone\n" -#: ../repair/dinode.c:557 ../repair/dinode.c:1207 ../repair/scan.c:154 +#: ../repair/dinode.c:541 +#, c-format +msgid "inode %llu - bad rt extent start block number %llu, offset %llu\n" +msgstr "i-wêze³ %llu - b³êdny numer bloku pocz±tkowego fragmentu rt %llu, offset %llu\n" + +#: ../repair/dinode.c:546 +#, c-format +msgid "inode %llu - bad rt extent last block number %llu, offset %llu\n" +msgstr "i-wêze³ %llu - b³êdny numer bloku koñcowego fragmentu rt %llu, offset %llu\n" + +#: ../repair/dinode.c:551 +#, c-format +msgid "inode %llu - bad rt extent overflows - start %llu, end %llu, offset %llu\n" +msgstr "i-wêze³ %llu - b³êdne przepe³nienie fragmentu rt - pocz±tek %llu, koniec %llu, offset %llu\n" + +#: ../repair/dinode.c:564 +#, c-format +msgid "malformed rt inode extent [%llu %llu] (fs rtext size = %u)\n" +msgstr "zniekszta³cony fragment i-wêz³a rt [%llu %llu] (rozmiar fs rtext = %u)\n" + +#: ../repair/dinode.c:579 +#, c-format +msgid "data fork in rt ino %llu claims dup rt extent, off - %llu, start - %llu, count %llu\n" +msgstr "ga³±¼ danych w i-wê¼le rt %llu odwo³uje siê do powtórzonego fragmentu rt, offset %llu, pocz±tek %llu, liczba %llu\n" + +#: ../repair/dinode.c:597 +#, c-format +msgid "bad state in rt block map %llu\n" +msgstr "b³êdny stan w mapie bloku rt %llu\n" + +#: ../repair/dinode.c:603 +#, c-format +msgid "data fork in rt inode %llu found metadata block %llu in rt bmap\n" +msgstr "ga³±¼ danych w i-wê¼le rt %llu - znaleziono blok metadanych %llu w bmapie rt\n" + +#: ../repair/dinode.c:613 +#, c-format +msgid "data fork in rt inode %llu claims used rt block %llu\n" +msgstr "ga³±¼ danych w i-wê¼le rt %llu odwo³uje siê do u¿ywanego bloku rt %llu\n" + +#: ../repair/dinode.c:620 +#, c-format +msgid "illegal state %d in rt block map %llu\n" +msgstr "niedozwolony stan %d w mapie bloku rt %llu\n" + +#: ../repair/dinode.c:674 ../repair/dinode.c:1227 ../repair/scan.c:154 msgid "data" msgstr "danych" -#: ../repair/dinode.c:559 ../repair/dinode.c:1209 ../repair/scan.c:156 +#: ../repair/dinode.c:676 ../repair/dinode.c:1229 ../repair/scan.c:156 msgid "attr" msgstr "atrybutów" -#: ../repair/dinode.c:562 +#: ../repair/dinode.c:679 msgid "real-time" msgstr "realtime" -#: ../repair/dinode.c:564 +#: ../repair/dinode.c:681 msgid "regular" msgstr "zwyk³ym" -#: ../repair/dinode.c:574 +#: ../repair/dinode.c:690 #, c-format msgid "bmap rec out of order, inode %llu entry %d [o s c] [%llu %llu %llu], %d [%llu %llu %llu]\n" msgstr "rekord bmap uszkodzony, i-wêze³ %llu wpis %d [o s c] [%llu %llu %llu], %d [%llu %llu %llu]\n" -#: ../repair/dinode.c:588 +#: ../repair/dinode.c:703 #, c-format msgid "zero length extent (off = %llu, fsbno = %llu) in ino %llu\n" msgstr "fragment zerowej d³ugo¶ci (off = %llu, fsbno = %llu) w i-wê¼le %llu\n" -#: ../repair/dinode.c:595 -#, c-format -msgid "inode %llu - bad rt extent start block number %llu, offset %llu\n" -msgstr "i-wêze³ %llu - b³êdny numer bloku pocz±tkowego fragmentu rt %llu, offset %llu\n" - -#: ../repair/dinode.c:601 -#, c-format -msgid "inode %llu - bad rt extent last block number %llu, offset %llu\n" -msgstr "i-wêze³ %llu - b³êdny numer bloku koñcowego fragmentu rt %llu, offset %llu\n" - -#: ../repair/dinode.c:607 -#, c-format -msgid "inode %llu - bad rt extent overflows - start %llu, end %llu, offset %llu\n" -msgstr "i-wêze³ %llu - b³êdne przepe³nienie fragmentu rt - pocz±tek %llu, koniec %llu, offset %llu\n" - -#: ../repair/dinode.c:618 +#: ../repair/dinode.c:730 #, c-format msgid "inode %llu - bad extent starting block number %llu, offset %llu\n" msgstr "i-wêze³ %llu - b³êdny numer bloku pocz±tkowego fragmentu %llu, offset %llu\n" -#: ../repair/dinode.c:623 +#: ../repair/dinode.c:736 #, c-format msgid "inode %llu - bad extent last block number %llu, offset %llu\n" msgstr "i-wêze³ %llu - b³êdny numer bloku koñcowego fragmentu %llu, offset %llu\n" -#: ../repair/dinode.c:629 +#: ../repair/dinode.c:742 #, c-format msgid "inode %llu - bad extent overflows - start %llu, end %llu, offset %llu\n" msgstr "i-wêze³ %llu - b³êdne przepe³nienie fragmentu - pocz±tek %llu, koniec %llu, offset %llu\n" -#: ../repair/dinode.c:636 +#: ../repair/dinode.c:748 #, c-format msgid "inode %llu - extent offset too large - start %llu, count %llu, offset %llu\n" msgstr "i-wêze³ %llu - offset fragmentu zbyt du¿y - pocz±tek %llu, liczba %llu, offset %llu\n" -#: ../repair/dinode.c:655 -#, c-format -msgid "malformed rt inode extent [%llu %llu] (fs rtext size = %u)\n" -msgstr "zniekszta³cony fragment i-wêz³a rt [%llu %llu] (rozmiar fs rtext = %u)\n" - -#: ../repair/dinode.c:676 -#, c-format -msgid "data fork in rt ino %llu claims dup rt extent, off - %llu, start - %llu, count %llu\n" -msgstr "ga³±¼ danych w i-wê¼le rt %llu odwo³uje siê do powtórzonego fragmentu rt, offset %llu, pocz±tek %llu, liczba %llu\n" - -#: ../repair/dinode.c:700 -#, c-format -msgid "bad state in rt block map %llu\n" -msgstr "b³êdny stan w mapie bloku rt %llu\n" - -#: ../repair/dinode.c:707 -#, c-format -msgid "%s fork in rt inode %llu found metadata block %llu in %s bmap\n" -msgstr "ga³±¼ %s w i-wê¼le rt %llu - znaleziono blok metadanych %llu w bmap %s\n" - -#: ../repair/dinode.c:715 -#, c-format -msgid "%s fork in rt inode %llu claims used rt block %llu\n" -msgstr "ga³±¼ %s w i-wê¼le rt %llu odwo³uje siê do u¿ywanego bloku rt %llu\n" - -#: ../repair/dinode.c:721 -#, c-format -msgid "illegal state %d in %s block map %llu\n" -msgstr "niedozwolony stan %d w mapie bloku %s %llu\n" - -#: ../repair/dinode.c:761 +#: ../repair/dinode.c:779 #, c-format msgid "%s fork in ino %llu claims dup extent, off - %llu, start - %llu, cnt %llu\n" msgstr "ga³±¼ %s w i-wê¼le %llu odwo³uje siê do powtórzonego fragmentu, offset %llu, pocz±tek %llu, liczba %llu\n" -#: ../repair/dinode.c:796 +#: ../repair/dinode.c:810 #, c-format msgid "%s fork in ino %llu claims free block %llu\n" msgstr "ga³±¼ %s w i-wê¼le %llu odwo³uje siê do wolnego bloku %llu\n" -#: ../repair/dinode.c:803 +#: ../repair/dinode.c:819 #, c-format msgid "bad state in block map %llu\n" msgstr "b³êdny stan w mapie bloku %llu\n" -#: ../repair/dinode.c:810 +#: ../repair/dinode.c:824 #, c-format msgid "%s fork in inode %llu claims metadata block %llu\n" msgstr "ga³±¼ %s w i-wê¼le %llu odwo³uje siê do bloku metadanych %llu\n" -#: ../repair/dinode.c:817 +#: ../repair/dinode.c:832 #, c-format msgid "%s fork in %s inode %llu claims used block %llu\n" msgstr "ga³±¼ %s w i-wê¼le %s %llu odwo³uje siê do u¿ywanego bloku %llu\n" -#: ../repair/dinode.c:822 +#: ../repair/dinode.c:838 #, c-format msgid "illegal state %d in block map %llu\n" msgstr "niedozwolony stan %d w mapie bloku %llu\n" -#: ../repair/dinode.c:900 +#: ../repair/dinode.c:918 #, c-format msgid "cannot read inode (%u/%u), disk block %lld\n" msgstr "nie mo¿na odczytaæ i-wêz³a (%u/%u), blok dysku %lld\n" -#: ../repair/dinode.c:1018 ../repair/dinode.c:1083 +#: ../repair/dinode.c:1036 ../repair/dinode.c:1101 #, c-format msgid "cannot read bmap block %llu\n" msgstr "nie mo¿na odczytaæ bloku bmap %llu\n" -#: ../repair/dinode.c:1039 +#: ../repair/dinode.c:1057 #, c-format msgid "# of bmap records in inode %llu exceeds max (%u, max - %u)\n" msgstr "liczba rekordów bmap w i-wê¼le %llu przekracza maksimum (%u, maksimum %u)\n" -#: ../repair/dinode.c:1048 +#: ../repair/dinode.c:1066 #, c-format msgid "- # of bmap records in inode %llu less than minimum (%u, min - %u), proceeding ...\n" msgstr "- liczba rekordów bmap w i-wê¼le %llu mniejsza ni¿ minimum (%u, minimum %u), kontynuacja...\n" -#: ../repair/dinode.c:1094 +#: ../repair/dinode.c:1112 #, c-format msgid "# of bmap records in inode %llu greater than maximum (%u, max - %u)\n" msgstr "liczba rekordów bmap w i-wê¼le %llu wiêksza ni¿ maksimum (%u, maksimum %u)\n" -#: ../repair/dinode.c:1103 +#: ../repair/dinode.c:1121 #, c-format msgid "- # of bmap records in inode %llu less than minimum (%u, min - %u), continuing...\n" msgstr "- liczba rekordów bmap w i-wê¼le %llu mniejsza ni¿ minimum (%u, minimum %u), kontynuacja...\n" -#: ../repair/dinode.c:1121 +#: ../repair/dinode.c:1139 #, c-format msgid "could not map block %llu\n" msgstr "nie uda³o siê odwzorowaæ bloku %llu\n" -#: ../repair/dinode.c:1153 +#: ../repair/dinode.c:1171 #, c-format msgid "get_bmapi() called for local inode %llu\n" msgstr "get_bmapi() wywo³ano dla lokalnego i-wêz³a %llu\n" -#: ../repair/dinode.c:1161 +#: ../repair/dinode.c:1179 #, c-format msgid "bad inode format for inode %llu\n" msgstr "b³êdny format i-wêz³a dla i-wêz³a %llu\n" -#: ../repair/dinode.c:1225 +#: ../repair/dinode.c:1243 +#, c-format +msgid "bad level %d in inode %llu bmap btree root block\n" +msgstr "b³êdny poziom %d w bloku g³ównym bmap btree i-wêz³a %llu\n" + +#: ../repair/dinode.c:1248 #, c-format -msgid "bad level 0 in inode %llu bmap btree root block\n" -msgstr "b³êdny poziom 0 w bloku g³ównym bmap btree i-wêz³a %llu\n" +msgid "bad numrecs 0 in inode %llu bmap btree root block\n" +msgstr "b³êdne numrecs 0 w bloku g³ównym bmap btree i-wêz³a %llu\n" -#: ../repair/dinode.c:1239 +#: ../repair/dinode.c:1259 #, c-format msgid "indicated size of %s btree root (%d bytes) greater than space in inode %llu %s fork\n" msgstr "oznaczony rozmiar korzenia b-drzewa %s (%d bajtów) wiêkszy ni¿ miejsce w i-wê¼le %llu ga³êzi %s\n" -#: ../repair/dinode.c:1269 ../repair/scan.c:380 +#: ../repair/dinode.c:1289 ../repair/scan.c:380 #, c-format msgid "bad bmap btree ptr 0x%llx in ino %llu\n" msgstr "b³êdny wska¼nik bmap btree 0x%llx w i-wê¼le %llu\n" -#: ../repair/dinode.c:1291 +#: ../repair/dinode.c:1310 #, c-format msgid "correcting key in bmbt root (was %llu, now %llu) in inode %llu %s fork\n" msgstr "poprawiono klucz w korzeniu bmbt (by³ %llu, jest %llu) w i-wê¼le %llu ga³êzi %s\n" -#: ../repair/dinode.c:1305 +#: ../repair/dinode.c:1322 #, c-format msgid "bad key in bmbt root (is %llu, would reset to %llu) in inode %llu %s fork\n" msgstr "b³êdny klucz w korzeniu bmbt (jest %llu, zosta³y przestawiony na %llu) w i-wê¼le %llu ga³êzi %s\n" -#: ../repair/dinode.c:1324 +#: ../repair/dinode.c:1339 #, c-format msgid "out of order bmbt root key %llu in inode %llu %s fork\n" msgstr "niepoprawny klucz korzenia bmbt %llu w i-wê¼le %llu ga³êzi %s\n" -#: ../repair/dinode.c:1341 +#: ../repair/dinode.c:1355 #, c-format msgid "bad fwd (right) sibling pointer (saw %llu should be NULLDFSBNO)\n" msgstr "b³êdny wska¼nik fwd (prawy) (widziano %llu, powinno byæ NULLDFSBNO)\n" -#: ../repair/dinode.c:1344 +#: ../repair/dinode.c:1358 #, c-format msgid "\tin inode %u (%s fork) bmap btree block %llu\n" msgstr "\tw i-wê¼le %u (ga³êzi %s) bloku bmap btree %llu\n" -#: ../repair/dinode.c:1425 +#: ../repair/dinode.c:1439 #, c-format msgid "local inode %llu data fork is too large (size = %lld, max = %d)\n" msgstr "ga³±¼ danych lokalnego i-wêz³a %llu zbyt du¿a (rozmiar = %lld, maksimum = %d)\n" -#: ../repair/dinode.c:1435 +#: ../repair/dinode.c:1449 #, c-format msgid "local inode %llu attr fork too large (size %d, max = %d)\n" msgstr "ga³±¼ atrybutów lokalnego i-wêz³a %llu zbyt du¿a (rozmiar %d, maksimum = %d)\n" -#: ../repair/dinode.c:1443 +#: ../repair/dinode.c:1457 #, c-format msgid "local inode %llu attr too small (size = %d, min size = %d)\n" msgstr "ga³±¼ atrybutów lokalnego i-wêz³a %llu zbyt ma³a (rozmiar = %d, minimum = %d)\n" -#: ../repair/dinode.c:1473 +#: ../repair/dinode.c:1487 #, c-format msgid "mismatch between format (%d) and size (%lld) in symlink ino %llu\n" msgstr "niezgodno¶æ miêdzy formatem (%d) i rozmiarem (%lld) w i-wê¼le dowi±zania symbolicznego %llu\n" -#: ../repair/dinode.c:1481 +#: ../repair/dinode.c:1495 #, c-format msgid "mismatch between format (%d) and size (%lld) in symlink inode %llu\n" msgstr "niezgodno¶æ miêdzy formatem (%d) i rozmiarem (%lld) w i-wê¼le dowi±zania symbolicznego %llu\n" -#: ../repair/dinode.c:1497 +#: ../repair/dinode.c:1511 #, c-format msgid "bad number of extents (%d) in symlink %llu data fork\n" msgstr "b³êdna liczba fragmentów (%d) w ga³êzi danych dowi±zania symbolicznego %llu\n" -#: ../repair/dinode.c:1510 +#: ../repair/dinode.c:1524 #, c-format msgid "bad extent #%d offset (%llu) in symlink %llu data fork\n" msgstr "b³êdny offset fragmentu %d (%llu) w ga³êzi danych dowi±zania symbolicznego %llu\n" -#: ../repair/dinode.c:1516 +#: ../repair/dinode.c:1530 #, c-format msgid "bad extent #%d count (%llu) in symlink %llu data fork\n" msgstr "b³êdna liczba fragmentu #%d (%llu) w ga³êzi danych dowi±zania symbolicznego %llu\n" -#: ../repair/dinode.c:1569 +#: ../repair/dinode.c:1583 #, c-format msgid "symlink in inode %llu too long (%lld chars)\n" msgstr "dowi±zanie symboliczne w i-wê¼le %llu zbyt d³ugie (%lld znaków)\n" -#: ../repair/dinode.c:1603 +#: ../repair/dinode.c:1617 #, c-format msgid "cannot read inode %llu, file block %d, disk block %llu\n" msgstr "nie mo¿na odczytaæ i-wêz³a %llu, blok pliku %d, blok dysku %llu\n" -#: ../repair/dinode.c:1625 +#: ../repair/dinode.c:1639 #, c-format msgid "found illegal null character in symlink inode %llu\n" msgstr "znaleziono niedozwolony znak null w i-wê¼le dowi±zania symbolicznego %llu\n" -#: ../repair/dinode.c:1639 ../repair/dinode.c:1649 +#: ../repair/dinode.c:1653 ../repair/dinode.c:1663 #, c-format msgid "component of symlink in inode %llu too long\n" msgstr "sk³adnik dowi±zania symbolicznego w i-wê¼le %llu zbyt d³ugi\n" -#: ../repair/dinode.c:1675 +#: ../repair/dinode.c:1689 #, c-format msgid "inode %llu has bad inode type (IFMNT)\n" msgstr "i-wêze³ %llu ma b³êdny typ i-wêz³a (IFMNT)\n" -#: ../repair/dinode.c:1685 +#: ../repair/dinode.c:1699 #, c-format msgid "size of character device inode %llu != 0 (%lld bytes)\n" msgstr "rozmiar i-wêz³a urz±dzenia znakowego %llu != 0 (%lld bajtów)\n" -#: ../repair/dinode.c:1690 +#: ../repair/dinode.c:1704 #, c-format msgid "size of block device inode %llu != 0 (%lld bytes)\n" msgstr "rozmiar i-wêz³a urz±dzenia blokowego %llu != 0 (%lld bajtów)\n" -#: ../repair/dinode.c:1695 +#: ../repair/dinode.c:1709 #, c-format msgid "size of socket inode %llu != 0 (%lld bytes)\n" msgstr "rozmiar i-wêz³a gniazda %llu != 0 (%lld bajtów)\n" -#: ../repair/dinode.c:1700 +#: ../repair/dinode.c:1714 #, c-format msgid "size of fifo inode %llu != 0 (%lld bytes)\n" msgstr "rozmiar i-wêz³a potoku %llu != 0 (%lld bajtów)\n" -#: ../repair/dinode.c:1705 +#: ../repair/dinode.c:1719 #, c-format msgid "Internal error - process_misc_ino_types, illegal type %d\n" msgstr "B³±d wewnêtrzny - process_misc_ino_types, niedozwolony typ %d\n" -#: ../repair/dinode.c:1732 +#: ../repair/dinode.c:1746 #, c-format msgid "size of character device inode %llu != 0 (%llu blocks)\n" msgstr "rozmiar i-wêz³a urz±dzenia znakowego %llu != 0 (%llu bloków)\n" -#: ../repair/dinode.c:1737 +#: ../repair/dinode.c:1751 #, c-format msgid "size of block device inode %llu != 0 (%llu blocks)\n" msgstr "rozmiar i-wêz³a urz±dzenia blokowego %llu != 0 (%llu bloków)\n" -#: ../repair/dinode.c:1742 +#: ../repair/dinode.c:1756 #, c-format msgid "size of socket inode %llu != 0 (%llu blocks)\n" msgstr "rozmiar i-wêz³a gniazda %llu != 0 (%llu bloków)\n" -#: ../repair/dinode.c:1747 +#: ../repair/dinode.c:1761 #, c-format msgid "size of fifo inode %llu != 0 (%llu blocks)\n" msgstr "rozmiar i-wêz³a potoku %llu != 0 (%llu bloków)\n" -#: ../repair/dinode.c:1851 +#: ../repair/dinode.c:1865 #, c-format msgid "bad magic number 0x%x on inode %llu, " msgstr "b³êdna liczba magiczna 0x%x w i-wê¼le %llu, " -#: ../repair/dinode.c:1854 +#: ../repair/dinode.c:1868 msgid "resetting magic number\n" msgstr "przestawiono liczbê magiczn±\n" -#: ../repair/dinode.c:1859 +#: ../repair/dinode.c:1873 msgid "would reset magic number\n" msgstr "liczba magiczna zosta³aby przestawiona\n" -#: ../repair/dinode.c:1862 +#: ../repair/dinode.c:1876 #, c-format msgid "bad magic number 0x%x on inode %llu\n" msgstr "b³êdna liczba magiczna 0x%x w i-wê¼le %llu\n" -#: ../repair/dinode.c:1871 +#: ../repair/dinode.c:1885 #, c-format msgid "bad version number 0x%x on inode %llu, " msgstr "b³êdny numer wersji 0x%x w i-wê¼le %llu, " -#: ../repair/dinode.c:1874 +#: ../repair/dinode.c:1888 msgid "resetting version number\n" msgstr "przestawiono numer wersji\n" -#: ../repair/dinode.c:1880 +#: ../repair/dinode.c:1894 msgid "would reset version number\n" msgstr "numer wersji zosta³by przestawiony\n" -#: ../repair/dinode.c:1883 +#: ../repair/dinode.c:1897 #, c-format msgid "bad version number 0x%x on inode %llu\n" msgstr "b³êdny numer wersji 0x%x w i-wê¼le %llu\n" -#: ../repair/dinode.c:1894 ../repair/dinode.c:1905 +#: ../repair/dinode.c:1908 ../repair/dinode.c:1919 #, c-format msgid "bad (negative) size %lld on inode %llu\n" msgstr "b³êdny (ujemny) rozmiar %lld w i-wê¼le %llu\n" -#: ../repair/dinode.c:1936 +#: ../repair/dinode.c:1950 #, c-format msgid "imap claims a free inode %llu is in use, " msgstr "imap odwo³uje siê do wolnego bloku %llu, który jest w u¿yciu, " -#: ../repair/dinode.c:1939 +#: ../repair/dinode.c:1953 msgid "correcting imap and clearing inode\n" msgstr "poprawiono imap i wyczyszczono i-wêze³\n" -#: ../repair/dinode.c:1948 +#: ../repair/dinode.c:1962 msgid "would correct imap and clear inode\n" msgstr "poprawiono by imap i wyczyszczono by i-wêze³\n" -#: ../repair/dinode.c:1976 +#: ../repair/dinode.c:1990 #, c-format msgid "bad inode format in inode %llu\n" msgstr "b³êdny format i-wêz³a w i-wê¼le %llu\n" -#: ../repair/dinode.c:2037 +#: ../repair/dinode.c:2052 ../repair/dinode.c:2061 #, c-format -msgid "Unexpected inode type %#o inode %llu\n" -msgstr "Nieoczekiwany typ i-wêz³a %#o w i-wê¼le %llu\n" +msgid "bad inode type %#o inode %llu\n" +msgstr "b³êdny typ i-wêz³a %#o w i-wê¼le %llu\n" -#: ../repair/dinode.c:2047 +#: ../repair/dinode.c:2071 #, c-format msgid "bad inode type for root inode %llu, " msgstr "b³êdny typ i-wêz³a dla g³ównego i-wêz³a %llu, " -#: ../repair/dinode.c:2051 +#: ../repair/dinode.c:2075 msgid "resetting to directory\n" msgstr "przestawiono na katalog\n" -#: ../repair/dinode.c:2057 +#: ../repair/dinode.c:2081 msgid "would reset to directory\n" msgstr "zosta³by przestawiony na katalog\n" -#: ../repair/dinode.c:2061 +#: ../repair/dinode.c:2085 msgid "summary" msgstr "opisu" -#: ../repair/dinode.c:2065 +#: ../repair/dinode.c:2089 msgid "bitmap" msgstr "bitmapy" -#: ../repair/dinode.c:2069 +#: ../repair/dinode.c:2093 #, c-format msgid "user quota inode has bad type 0x%x\n" msgstr "i-wêze³ limitu u¿ytkownika ma b³êdny typ 0x%x\n" -#: ../repair/dinode.c:2087 +#: ../repair/dinode.c:2111 #, c-format msgid "group quota inode has bad type 0x%x\n" msgstr "i-wêze³ limitu grupy ma b³êdny typ 0x%x\n" -#: ../repair/dinode.c:2108 +#: ../repair/dinode.c:2132 #, c-format msgid "bad inode type for realtime %s inode %llu, " msgstr "b³êdny typ i-wêz³a dla i-wêz³a %s realtime %llu, " -#: ../repair/dinode.c:2112 +#: ../repair/dinode.c:2136 msgid "resetting to regular file\n" msgstr "przestawiono na zwyk³y plik\n" -#: ../repair/dinode.c:2118 +#: ../repair/dinode.c:2142 msgid "would reset to regular file\n" msgstr "zosta³by przestawiony na zwyk³y plik\n" -#: ../repair/dinode.c:2137 +#: ../repair/dinode.c:2161 #, c-format msgid "bad non-zero extent size %u for non-realtime/extsize inode %llu, " msgstr "b³êdny niezerowy rozmiar fragmentu %u dla extsize i-wêz³a nie-realtime %llu, " -#: ../repair/dinode.c:2141 +#: ../repair/dinode.c:2165 msgid "resetting to zero\n" msgstr "przestawiono na zero\n" -#: ../repair/dinode.c:2145 +#: ../repair/dinode.c:2169 msgid "would reset to zero\n" msgstr "zosta³by przestawiony na zero\n" -#: ../repair/dinode.c:2164 +#: ../repair/dinode.c:2188 #, c-format msgid "bad size %llu for realtime %s inode %llu\n" msgstr "b³êdny rozmiar %llu dla i-wêz³a %s realtime %llu\n" -#: ../repair/dinode.c:2180 +#: ../repair/dinode.c:2204 #, c-format msgid "bad # of extents (%u) for realtime %s inode %llu\n" msgstr "b³êdna liczba fragmentów (%u) dla i-wêz³± %s realtime %llu\n" -#: ../repair/dinode.c:2222 +#: ../repair/dinode.c:2246 #, c-format msgid "mismatch between format (%d) and size (%lld) in directory ino %llu\n" msgstr "niezgodno¶æ miêdzy formatem (%d) i rozmiarem (%lld) w i-wê¼le katalogu %llu\n" -#: ../repair/dinode.c:2244 +#: ../repair/dinode.c:2268 #, c-format msgid "bad data fork in symlink %llu\n" msgstr "b³êdna ga³±¼ danych w dowi±zaniu symbolicznym %llu\n" -#: ../repair/dinode.c:2286 +#: ../repair/dinode.c:2310 #, c-format msgid "found inode %llu claiming to be a real-time file\n" msgstr "znaleziono i-wêze³ %llu twierdz±cy, ¿e nale¿y do pliku realtime\n" -#: ../repair/dinode.c:2305 +#: ../repair/dinode.c:2329 #, c-format msgid "realtime bitmap inode %llu has bad size %lld (should be %lld)\n" msgstr "i-wêze³ bitmapy realtime %llu ma b³êdny rozmiar %lld (powinien byæ %lld)\n" -#: ../repair/dinode.c:2326 +#: ../repair/dinode.c:2350 #, c-format msgid "realtime summary inode %llu has bad size %lld (should be %d)\n" msgstr "i-wêze³ opisu realtime %llu ma b³êdny rozmiar %lld (powinien byæ %d)\n" -#: ../repair/dinode.c:2357 +#: ../repair/dinode.c:2381 #, c-format msgid "bad attr fork offset %d in dev inode %llu, should be %d\n" msgstr "b³êdny offset ga³êzi atrybutów %d w i-wê¼le urz±dzenia %llu, powinien byæ %d\n" -#: ../repair/dinode.c:2368 +#: ../repair/dinode.c:2392 #, c-format msgid "bad attr fork offset %d in uuid inode %llu, should be %d\n" msgstr "b³êdny offset ga³êzi atrybutów %d w i-wê¼le uuid %llu, powinien byæ %d\n" -#: ../repair/dinode.c:2380 +#: ../repair/dinode.c:2404 #, c-format msgid "bad attr fork offset %d in inode %llu, max=%d\n" msgstr "b³êdny offset ga³êzi atrybutów %d w i-wê¼le %llu, maksimum=%d\n" -#: ../repair/dinode.c:2388 +#: ../repair/dinode.c:2412 #, c-format msgid "unexpected inode format %d\n" msgstr "nieoczekiwany format i-wêz³a %d\n" -#: ../repair/dinode.c:2432 ../repair/dinode.c:2483 +#: ../repair/dinode.c:2456 ../repair/dinode.c:2507 #, c-format msgid "unknown format %d, ino %llu (mode = %d)\n" msgstr "nieznany format %d, i-wêze³ %llu (tryb = %d)\n" -#: ../repair/dinode.c:2442 +#: ../repair/dinode.c:2466 #, c-format msgid "bad data fork in inode %llu\n" msgstr "b³êdna ga³±¼ danych w i-wê¼le %llu\n" -#: ../repair/dinode.c:2506 +#: ../repair/dinode.c:2530 #, c-format msgid "bad attribute format %d in inode %llu, " msgstr "b³êdny format atrybutów %d w i-wê¼le %llu, " -#: ../repair/dinode.c:2509 +#: ../repair/dinode.c:2533 msgid "resetting value\n" msgstr "przestawiono warto¶æ\n" -#: ../repair/dinode.c:2513 +#: ../repair/dinode.c:2537 msgid "would reset value\n" msgstr "warto¶æ zosta³aby przestawiona\n" -#: ../repair/dinode.c:2554 +#: ../repair/dinode.c:2578 #, c-format msgid "bad attribute fork in inode %llu" msgstr "b³êdna ga³±¼ atrybutów w i-wê¼le %llu" -#: ../repair/dinode.c:2558 +#: ../repair/dinode.c:2582 msgid ", clearing attr fork\n" msgstr ", wyczyszczono ga³±¼ atrybutów\n" -#: ../repair/dinode.c:2568 +#: ../repair/dinode.c:2592 msgid ", would clear attr fork\n" msgstr ", ga³±¼ atrybutów zosta³aby wyczyszczona\n" -#: ../repair/dinode.c:2605 +#: ../repair/dinode.c:2629 #, c-format msgid "illegal attribute fmt %d, ino %llu\n" msgstr "niedozwolony format atrybutów %d, i-wêze³ %llu\n" -#: ../repair/dinode.c:2630 +#: ../repair/dinode.c:2654 #, c-format msgid "problem with attribute contents in inode %llu\n" msgstr "problem z zawarto¶ci± atrybutu w i-wê¼le %llu\n" -#: ../repair/dinode.c:2640 +#: ../repair/dinode.c:2664 msgid "would clear attr fork\n" msgstr "ga³±¼ atrybutów zosta³aby wyczyszczona\n" -#: ../repair/dinode.c:2676 +#: ../repair/dinode.c:2700 #, c-format msgid "correcting nblocks for inode %llu, was %llu - counted %llu\n" msgstr "poprawiono nblocks dla i-wêz³a %llu - by³o %llu, naliczono %llu\n" -#: ../repair/dinode.c:2683 +#: ../repair/dinode.c:2707 #, c-format msgid "bad nblocks %llu for inode %llu, would reset to %llu\n" msgstr "b³êdne nblocks %llu dla i-wêz³a %llu, zosta³oby przestawione na %llu\n" -#: ../repair/dinode.c:2690 +#: ../repair/dinode.c:2714 #, c-format msgid "too many data fork extents (%llu) in inode %llu\n" msgstr "zbyt du¿o fragmentów ga³êzi danych (%llu) w i-wê¼le %llu\n" -#: ../repair/dinode.c:2707 +#: ../repair/dinode.c:2731 #, c-format msgid "correcting nextents for inode %llu, was %d - counted %llu\n" msgstr "poprawiono nextents dla i-wêz³a %llu - by³o %d, naliczono %llu\n" -#: ../repair/dinode.c:2715 +#: ../repair/dinode.c:2739 #, c-format msgid "bad nextents %d for inode %llu, would reset to %llu\n" msgstr "b³êdne nextents %d dla i-wêz³a %llu, zosta³oby przestawione na %llu\n" -#: ../repair/dinode.c:2722 +#: ../repair/dinode.c:2746 #, c-format msgid "too many attr fork extents (%llu) in inode %llu\n" msgstr "zbyt du¿o fragmentów ga³êzi atrybutów (%llu) w i-wê¼le %llu\n" -#: ../repair/dinode.c:2738 +#: ../repair/dinode.c:2762 #, c-format msgid "correcting anextents for inode %llu, was %d - counted %llu\n" msgstr "poprawiono anextents dla i-wêz³a %llu - by³o %d, naliczono %llu\n" -#: ../repair/dinode.c:2747 +#: ../repair/dinode.c:2771 #, c-format msgid "bad anextents %d for inode %llu, would reset to %llu\n" msgstr "b³êdne anextents %d dla i-wêz³a %llu, zosta³oby przestawione na %llu\n" -#: ../repair/dinode.c:2766 +#: ../repair/dinode.c:2790 #, c-format msgid "problem with directory contents in inode %llu\n" msgstr "problem z zawarto¶ci± katalogu w i-wê¼le %llu\n" -#: ../repair/dinode.c:2779 +#: ../repair/dinode.c:2803 #, c-format msgid "problem with symbolic link in inode %llu\n" msgstr "problem z dowi±zaniem symbolicznym w i-wê¼le %llu\n" -#: ../repair/dinode.c:2791 +#: ../repair/dinode.c:2815 #, c-format msgid "Unexpected inode type\n" msgstr "Nieoczekiwany typ i-wêz³a\n" -#: ../repair/dinode.c:2836 +#: ../repair/dinode.c:2860 #, c-format msgid "version 2 inode %llu claims > %u links, " msgstr "i-wêze³ %llu w wersji 2 odwo³uje siê do > %u dowi±zañ, " -#: ../repair/dinode.c:2840 +#: ../repair/dinode.c:2864 msgid "updating superblock version number\n" msgstr "uaktualniono numer wersji superbloku\n" -#: ../repair/dinode.c:2843 +#: ../repair/dinode.c:2867 msgid "would update superblock version number\n" msgstr "numer wersji superbloku zosta³by uaktualniony\n" -#: ../repair/dinode.c:2851 +#: ../repair/dinode.c:2875 #, c-format msgid "WARNING: version 2 inode %llu claims > %u links, " msgstr "UWAGA: i-wêze³ %llu w wersji 2 odwo³uje siê do > %u dowi±zañ, " -#: ../repair/dinode.c:2855 +#: ../repair/dinode.c:2879 #, c-format msgid "" "converting back to version 1,\n" @@ -5703,7 +5772,7 @@ msgstr "" "przekszta³cono z powrotem do wersji 1,\n" "\tmo¿e to zniszczyæ %d dowi±zañ\n" -#: ../repair/dinode.c:2870 +#: ../repair/dinode.c:2894 #, c-format msgid "" "would convert back to version 1,\n" @@ -5712,282 +5781,281 @@ msgstr "" "zosta³by przekszta³cony z powrotem do wersji 1,\n" "\tco mog³oby zniszczyæ %d dowi±zañ\n" -#: ../repair/dinode.c:2885 +#: ../repair/dinode.c:2909 #, c-format msgid "found version 2 inode %llu, " msgstr "znaleziono i-wêze³ %llu w wersji 2, " -#: ../repair/dinode.c:2887 +#: ../repair/dinode.c:2911 msgid "converting back to version 1\n" msgstr "przekszta³cono z powrotem do wersji 1\n" -#: ../repair/dinode.c:2896 +#: ../repair/dinode.c:2920 msgid "would convert back to version 1\n" msgstr "zosta³by przekszta³cony z powrotem do wersji 1\n" -#: ../repair/dinode.c:2911 +#: ../repair/dinode.c:2935 #, c-format msgid "clearing obsolete nlink field in version 2 inode %llu, was %d, now 0\n" msgstr "wyczyszczono przestarza³e pole nlink w i-wê¼le %llu w wersji 2 - by³o %d, jest 0\n" -#: ../repair/dinode.c:2917 +#: ../repair/dinode.c:2941 #, c-format msgid "would clear obsolete nlink field in version 2 inode %llu, currently %d\n" msgstr "przestarza³e pole nlink w i-wê¼le %llu w wersji 2 zosta³oby wyczyszczone, aktualnie %d\n" -#: ../repair/dir.c:155 +#: ../repair/dir.c:154 #, c-format msgid "invalid inode number %llu in directory %llu\n" msgstr "b³êdny numer i-wêz³a %llu w katalogu %llu\n" -#: ../repair/dir.c:160 +#: ../repair/dir.c:159 #, c-format msgid "entry in shortform dir %llu references rt bitmap inode %llu\n" msgstr "wpis w krótkim katalogu %llu odwo³uje siê do i-wêz³a bitmapy rt %llu\n" -#: ../repair/dir.c:165 +#: ../repair/dir.c:164 #, c-format msgid "entry in shortform dir %llu references rt summary inode %llu\n" msgstr "wpis w krótkim katalogu %llu odwo³uje siê do i-wêz³a opisu rt %llu\n" -#: ../repair/dir.c:170 +#: ../repair/dir.c:169 #, c-format msgid "entry in shortform dir %llu references user quota inode %llu\n" msgstr "wpis w krótkim katalogu %llu odwo³uje siê do i-wêz³a limitu u¿ytkownika %llu\n" -#: ../repair/dir.c:175 +#: ../repair/dir.c:174 #, c-format msgid "entry in shortform dir %llu references group quota inode %llu\n" msgstr "wpis w krótkim katalogu %llu odwo³uje siê do i-wêz³a limitu grupy %llu\n" -#: ../repair/dir.c:195 +#: ../repair/dir.c:194 #, c-format msgid "entry references free inode %llu in shortform directory %llu\n" msgstr "wpis odwo³uje siê do wolnego i-wêz³a %llu w krótkim katalogu %llu\n" -#: ../repair/dir.c:214 +#: ../repair/dir.c:213 #, c-format msgid "entry references non-existent inode %llu in shortform dir %llu\n" msgstr "wpis odwo³uje siê do nie istniej±cego i-wêz³a %llu w krótkim katalogu %llu\n" -#: ../repair/dir.c:238 ../repair/dir2.c:982 +#: ../repair/dir.c:237 ../repair/dir2.c:992 #, c-format msgid "zero length entry in shortform dir %llu, resetting to %d\n" msgstr "wpis zerowej d³ugo¶ci w krótkim katalogu %llu, przestawiono na %d\n" -#: ../repair/dir.c:243 ../repair/dir2.c:988 +#: ../repair/dir.c:242 ../repair/dir2.c:998 #, c-format msgid "zero length entry in shortform dir %llu, would set to %d\n" msgstr "wpis zerowej d³ugo¶ci w krótkim katalogu %llu, zosta³by przestawiony na %d\n" -#: ../repair/dir.c:248 +#: ../repair/dir.c:247 #, c-format msgid "zero length entry in shortform dir %llu, " msgstr "wpis zerowej d³ugo¶ci w krótkim katalogu %llu, " -#: ../repair/dir.c:251 ../repair/dir.c:294 ../repair/dir2.c:1041 +#: ../repair/dir.c:250 ../repair/dir.c:293 ../repair/dir2.c:1051 #, c-format msgid "junking %d entries\n" msgstr "wyrzucono %d wpisów\n" -#: ../repair/dir.c:254 ../repair/dir.c:303 ../repair/dir2.c:1050 +#: ../repair/dir.c:253 ../repair/dir.c:302 ../repair/dir2.c:1060 #, c-format msgid "would junk %d entries\n" msgstr "%d wpisów zosta³oby wyrzuconych\n" -#: ../repair/dir.c:272 ../repair/dir2.c:1018 +#: ../repair/dir.c:271 ../repair/dir2.c:1028 #, c-format msgid "size of last entry overflows space left in in shortform dir %llu, " msgstr "rozmiar ostatniego wpisu przekracza miejsce pozosta³e w krótkim katalogu %llu, " -#: ../repair/dir.c:275 ../repair/dir2.c:1022 +#: ../repair/dir.c:274 ../repair/dir2.c:1032 #, c-format msgid "resetting to %d\n" msgstr "przestawiono na %d\n" -#: ../repair/dir.c:280 ../repair/dir2.c:1027 +#: ../repair/dir.c:279 ../repair/dir2.c:1037 #, c-format msgid "would reset to %d\n" msgstr "zosta³by przestawiony na %d\n" -#: ../repair/dir.c:285 ../repair/dir2.c:1031 +#: ../repair/dir.c:284 ../repair/dir2.c:1041 #, c-format msgid "size of entry #%d overflows space left in in shortform dir %llu\n" msgstr "rozmiar wpisu #%d przekracza miejsce pozosta³e w krótkim katalogu %llu\n" -#: ../repair/dir.c:290 ../repair/dir2.c:1037 +#: ../repair/dir.c:289 ../repair/dir2.c:1047 #, c-format msgid "junking entry #%d\n" msgstr "wyrzucono wpis #%d\n" -#: ../repair/dir.c:299 ../repair/dir2.c:1046 +#: ../repair/dir.c:298 ../repair/dir2.c:1056 #, c-format msgid "would junk entry #%d\n" msgstr "wpis #%d zosta³by wyrzucony\n" -#: ../repair/dir.c:322 ../repair/dir2.c:1068 +#: ../repair/dir.c:321 ../repair/dir2.c:1078 #, c-format msgid "entry contains illegal character in shortform dir %llu\n" msgstr "wpis zawiera niedozwolony znak w krótkim katalogu %llu\n" -#: ../repair/dir.c:377 ../repair/dir2.c:1133 ../repair/phase6.c:2908 -#: ../repair/phase6.c:3323 +#: ../repair/dir.c:376 ../repair/dir2.c:1143 #, c-format msgid "junking entry \"%s\" in directory inode %llu\n" msgstr "wyrzucono wpis \"%s\" w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:381 ../repair/dir2.c:1137 +#: ../repair/dir.c:380 ../repair/dir2.c:1147 #, c-format msgid "would have junked entry \"%s\" in directory inode %llu\n" msgstr "wpis \"%s\" w i-wê¼le katalogu %llu zosta³by wyrzucony\n" -#: ../repair/dir.c:407 ../repair/dir2.c:1164 +#: ../repair/dir.c:406 ../repair/dir2.c:1174 #, c-format msgid "would have corrected entry count in directory %llu from %d to %d\n" msgstr "liczba wpisów w katalogu %llu zosta³aby poprawiona z %d na %d\n" -#: ../repair/dir.c:411 ../repair/dir2.c:1168 +#: ../repair/dir.c:410 ../repair/dir2.c:1178 #, c-format msgid "corrected entry count in directory %llu, was %d, now %d\n" msgstr "poprawiono liczbê wpisów w katalogu %llu - by³o %d, jest %d\n" -#: ../repair/dir.c:422 ../repair/dir2.c:1197 +#: ../repair/dir.c:421 ../repair/dir2.c:1207 #, c-format msgid "would have corrected directory %llu size from %lld to %lld\n" msgstr "rozmiar katalogu %llu zosta³by poprawiony z %lld na %lld\n" -#: ../repair/dir.c:427 ../repair/dir2.c:1203 +#: ../repair/dir.c:426 ../repair/dir2.c:1213 #, c-format msgid "corrected directory %llu size, was %lld, now %lld\n" msgstr "poprawiono rozmiar katalogu %llu - by³o %lld, jest %lld\n" -#: ../repair/dir.c:450 ../repair/dir2.c:1248 +#: ../repair/dir.c:449 ../repair/dir2.c:1258 #, c-format msgid "bogus .. inode number (%llu) in directory inode %llu, " msgstr "b³êdny numer i-wêz³a .. (%llu) w i-wê¼le katalogu %llu, " -#: ../repair/dir.c:453 ../repair/dir.c:487 ../repair/dir2.c:1253 -#: ../repair/dir2.c:1288 +#: ../repair/dir.c:452 ../repair/dir.c:486 ../repair/dir2.c:1263 +#: ../repair/dir2.c:1298 msgid "clearing inode number\n" msgstr "wyczyszczono numer i-wêz³a\n" -#: ../repair/dir.c:459 ../repair/dir.c:493 ../repair/dir2.c:1259 -#: ../repair/dir2.c:1294 +#: ../repair/dir.c:458 ../repair/dir.c:492 ../repair/dir2.c:1269 +#: ../repair/dir2.c:1304 msgid "would clear inode number\n" msgstr "numer i-wêz³a zosta³by wyczyszczony\n" -#: ../repair/dir.c:467 ../repair/dir2.c:1266 +#: ../repair/dir.c:466 ../repair/dir2.c:1276 #, c-format msgid "corrected root directory %llu .. entry, was %llu, now %llu\n" msgstr "poprawiono wpis .. g³ównego katalogu %llu - by³o %llu, jest %llu\n" -#: ../repair/dir.c:475 ../repair/dir2.c:1274 +#: ../repair/dir.c:474 ../repair/dir2.c:1284 #, c-format msgid "would have corrected root directory %llu .. entry from %llu to %llu\n" msgstr "wpis .. g³ównego katalogu %llu zosta³by poprawiony z %llu na %llu\n" -#: ../repair/dir.c:484 +#: ../repair/dir.c:483 #, c-format msgid "bad .. entry in dir ino %llu, points to self, " msgstr "b³êdny wpis .. w i-wê¼le katalogu %llu, wskazuje na siebie, " -#: ../repair/dir.c:532 +#: ../repair/dir.c:531 #, c-format msgid "bad range claimed [%d, %d) in da block\n" msgstr "b³êdny przedzia³ [%d, %d) przypisany w bloku da\n" -#: ../repair/dir.c:539 +#: ../repair/dir.c:538 #, c-format msgid "byte range end [%d %d) in da block larger than blocksize %d\n" msgstr "koniec przedzia³u bajtów [%d %d) w bloku da wiêkszy ni¿ rozmiar bloku %d\n" -#: ../repair/dir.c:546 +#: ../repair/dir.c:545 #, c-format msgid "multiply claimed byte %d in da block\n" msgstr "wielokrotnie u¿yty bajt %d w bloku da\n" -#: ../repair/dir.c:576 +#: ../repair/dir.c:575 #, c-format msgid "hole (start %d, len %d) out of range, block %d, dir ino %llu\n" msgstr "dziura (pocz±tek %d, d³ugo¶æ %d) poza zakresem, blok %d, i-wêze³ katalogu %llu\n" -#: ../repair/dir.c:587 +#: ../repair/dir.c:586 #, c-format msgid "hole claims used byte %d, block %d, dir ino %llu\n" msgstr "dziura odwo³uje siê do u¿ywanego bajtu %d, blok %d, i-wêze³ katalogu %llu\n" -#: ../repair/dir.c:702 +#: ../repair/dir.c:701 #, c-format msgid "- derived hole value %d, saw %d, block %d, dir ino %llu\n" msgstr "- wyprowadzona warto¶æ dziury %d, widziano %d, blok %d, i-wêze³ katalogu %llu\n" -#: ../repair/dir.c:721 +#: ../repair/dir.c:720 #, c-format msgid "- derived hole (base %d, size %d) in block %d, dir inode %llu not found\n" msgstr "- wyprowadzona dziura (podstawa %d, rozmiar %d) w bloku %d, i-wêze³ katalogu %llu nie znaleziona\n" -#: ../repair/dir.c:800 ../repair/dir.c:978 ../repair/phase4.c:234 -#: ../repair/phase4.c:718 ../repair/phase6.c:1130 ../repair/phase6.c:1674 +#: ../repair/dir.c:796 ../repair/dir.c:974 ../repair/phase6.c:1169 +#: ../repair/phase6.c:1719 #, c-format msgid "can't read block %u (fsbno %llu) for directory inode %llu\n" msgstr "nie mo¿na odczytaæ bloku %u (fsbno %llu) dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:804 +#: ../repair/dir.c:800 #, c-format msgid "can't read block %u (fsbno %llu) for attrbute fork of inode %llu\n" msgstr "nie mo¿na odczytaæ bloku %u (fsbno %llu) dla ga³êzi atrybutów i-wêz³a %llu\n" -#: ../repair/dir.c:813 ../repair/dir.c:988 ../repair/phase6.c:1140 +#: ../repair/dir.c:809 ../repair/dir.c:984 ../repair/phase6.c:1179 #, c-format msgid "bad dir/attr magic number in inode %llu, file bno = %u, fsbno = %llu\n" msgstr "b³êdna liczba magiczna katalogu/atrybutu w i-wê¼le %llu, bno pliku = %u, fsbno = %llu\n" -#: ../repair/dir.c:821 ../repair/dir2.c:324 +#: ../repair/dir.c:817 ../repair/dir2.c:335 #, c-format msgid "bad record count in inode %llu, count = %d, max = %d\n" msgstr "b³êdna liczba rekordów w i-wê¼le %llu, liczba = %d, maksimum = %d\n" -#: ../repair/dir.c:840 ../repair/dir2.c:341 +#: ../repair/dir.c:836 ../repair/dir2.c:351 #, c-format msgid "bad directory btree for directory inode %llu\n" msgstr "b³êdne b-drzewo katalogu dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:844 +#: ../repair/dir.c:840 #, c-format msgid "bad attribute fork btree for inode %llu\n" msgstr "b³êdne b-drzewo ga³êzi atrybutów dla i-wêz³a %llu\n" -#: ../repair/dir.c:898 +#: ../repair/dir.c:894 #, c-format msgid "release_da_cursor_int got unexpected non-null bp, dabno = %u\n" msgstr "release_da_cursor_int otrzyma³o nieoczekiwany niepusty bp, dabno = %u\n" -#: ../repair/dir.c:959 ../repair/dir.c:1004 +#: ../repair/dir.c:955 ../repair/dir.c:1000 #, c-format msgid "bmap of block #%u of inode %llu failed\n" msgstr "bmap bloku #%u i-wêz³a %llu nie powiod³o siê\n" -#: ../repair/dir.c:1050 +#: ../repair/dir.c:1046 #, c-format msgid "directory/attribute block used/count inconsistency - %d/%hu\n" msgstr "niespójno¶æ warto¶ci used/count bloku katalogu/atrybutu - %d/%hu\n" -#: ../repair/dir.c:1060 ../repair/dir2.c:464 +#: ../repair/dir.c:1056 ../repair/dir2.c:474 #, c-format msgid "directory/attribute block hashvalue inconsistency, expected > %u / saw %u\n" msgstr "niespójno¶æ warto¶ci hasza bloku katalogu/atrybutu - oczekiwano > %u, widziano %u\n" -#: ../repair/dir.c:1067 ../repair/dir2.c:471 +#: ../repair/dir.c:1063 ../repair/dir2.c:481 #, c-format msgid "bad directory/attribute forward block pointer, expected 0, saw %u\n" msgstr "b³êdny wska¼nik bloku w przód katalogu/atrybutu - oczekiwano 0, widziano %u\n" -#: ../repair/dir.c:1073 +#: ../repair/dir.c:1069 #, c-format msgid "bad directory block in dir ino %llu\n" msgstr "b³êdny blok katalogu w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:1103 +#: ../repair/dir.c:1099 #, c-format msgid "" "correcting bad hashval in non-leaf dir/attr block\n" @@ -5996,7 +6064,7 @@ msgstr "" "poprawiono b³êdne hashval w bloku katalogu/atrybutu nie bêd±cego li¶ciem\n" "\tw i-wê¼le (poziomu %d) %llu.\n" -#: ../repair/dir.c:1111 +#: ../repair/dir.c:1107 #, c-format msgid "" "would correct bad hashval in non-leaf dir/attr block\n" @@ -6005,37 +6073,37 @@ msgstr "" "b³êdne hashval zosta³oby poprawione w bloku katalogu/atrybutu nie bêd±cego li¶ciem\n" "\tw i-wê¼le (poziomu %d) %llu.\n" -#: ../repair/dir.c:1249 ../repair/dir2.c:637 +#: ../repair/dir.c:1245 ../repair/dir2.c:647 #, c-format msgid "can't get map info for block %u of directory inode %llu\n" msgstr "nie mo¿na uzyskaæ informacji o mapie dla bloku %u i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:1258 +#: ../repair/dir.c:1254 #, c-format msgid "can't read block %u (%llu) for directory inode %llu\n" msgstr "nie mo¿na odczytaæ bloku %u (%llu) dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:1272 +#: ../repair/dir.c:1268 #, c-format msgid "bad magic number %x in block %u (%llu) for directory inode %llu\n" msgstr "b³êdna liczba magiczna %x w bloku %u (%llu) dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:1280 +#: ../repair/dir.c:1276 #, c-format msgid "bad back pointer in block %u (%llu) for directory inode %llu\n" msgstr "b³êdny wska¼nik wstecz w bloku %u (%llu) dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:1287 +#: ../repair/dir.c:1283 #, c-format msgid "entry count %d too large in block %u (%llu) for directory inode %llu\n" msgstr "liczba wpisów %d zbyt du¿a w bloku %u (%llu) dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:1294 +#: ../repair/dir.c:1290 #, c-format msgid "bad level %d in block %u (%llu) for directory inode %llu\n" msgstr "b³êdny poziom %d w bloku %u (%llu) dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:1352 +#: ../repair/dir.c:1348 #, c-format msgid "" "correcting bad hashval in interior dir/attr block\n" @@ -6044,7 +6112,7 @@ msgstr "" "poprawiono b³êdne hashval w wewnêtrznym bloku katalogu/atrybutu\n" "\tw i-wê¼le (poziomu %d) %llu.\n" -#: ../repair/dir.c:1360 +#: ../repair/dir.c:1356 #, c-format msgid "" "would correct bad hashval in interior dir/attr block\n" @@ -6053,423 +6121,418 @@ msgstr "" "b³êdne hashval zosta³oby poprawione w wewnêtrznym bloku katalogu/atrybutu\n" "\tw i-wê¼le (poziomu %d) %llu.\n" -#: ../repair/dir.c:1480 +#: ../repair/dir.c:1476 #, c-format msgid "marking bad entry in directory inode %llu\n" msgstr "oznaczono b³êdny wpis w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:1506 +#: ../repair/dir.c:1502 #, c-format msgid "deleting zero length entry in directory inode %llu\n" msgstr "usuniêto wpis zerowej d³ugo¶ci w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:1605 +#: ../repair/dir.c:1601 #, c-format msgid "deleting entry in directory inode %llu\n" msgstr "usuniêto wpis w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:1751 +#: ../repair/dir.c:1747 #, c-format msgid "directory block header conflicts with used space in directory inode %llu\n" msgstr "nag³ówek bloku katalogu jest w konflikcie z u¿ytym miejscem w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:1780 +#: ../repair/dir.c:1776 #, c-format msgid "nameidx %d for entry #%d, bno %d, ino %llu > fs blocksize, deleting entry\n" msgstr "nameidx %d dla wpisu #%d, bno %d, i-wêze³ %llu > rozmiaru bloku fs, usuniêto wpis\n" -#: ../repair/dir.c:1820 +#: ../repair/dir.c:1816 #, c-format msgid "nameidx %d, entry #%d, bno %d, ino %llu > fs blocksize, marking entry bad\n" msgstr "nameidx %d, wpis #%d, bno %d, i-wêze³ %llu > rozmiaru bloku fs, zaznaczono wpis jako b³êdny\n" -#: ../repair/dir.c:1837 +#: ../repair/dir.c:1833 #, c-format msgid "nameidx %d, entry #%d, bno %d, ino %llu > fs blocksize, would delete entry\n" msgstr "nameidx %d, wpis #%d, bno %d, i-wêze³ %llu > rozmiaru bloku fs, wpis zosta³by usuniêty\n" -#: ../repair/dir.c:1874 +#: ../repair/dir.c:1870 #, c-format msgid "invalid ino number %llu in dir ino %llu, entry #%d, bno %d\n" msgstr "nieprawid³owy numer i-wêz³a %llu w i-wê¼le katalogu %llu, wpis #%d, bno %d\n" -#: ../repair/dir.c:1878 ../repair/dir.c:1894 ../repair/dir.c:1911 -#: ../repair/dir.c:1927 ../repair/dir.c:1944 +#: ../repair/dir.c:1874 ../repair/dir.c:1890 ../repair/dir.c:1907 +#: ../repair/dir.c:1923 ../repair/dir.c:1940 #, c-format msgid "\tclearing ino number in entry %d...\n" msgstr "\twyczyszczono numer i-wêz³a we wpisie %d...\n" -#: ../repair/dir.c:1885 ../repair/dir.c:1902 ../repair/dir.c:1918 -#: ../repair/dir.c:1935 ../repair/dir.c:1952 +#: ../repair/dir.c:1881 ../repair/dir.c:1898 ../repair/dir.c:1914 +#: ../repair/dir.c:1931 ../repair/dir.c:1948 #, c-format msgid "\twould clear ino number in entry %d...\n" msgstr "\tnumer i-wêz³a we wpisie %d zosta³by wyczyszczony...\n" -#: ../repair/dir.c:1890 +#: ../repair/dir.c:1886 #, c-format msgid "entry #%d, bno %d in directory %llu references realtime bitmap inode %llu\n" msgstr "wpis #%d, bno %d w katalogu %llu odwo³uje siê do i-wêz³a bitmapy realtime %llu\n" -#: ../repair/dir.c:1907 +#: ../repair/dir.c:1903 #, c-format msgid "entry #%d, bno %d in directory %llu references realtime summary inode %llu\n" msgstr "wpis #%d, bno %d w katalogu %llu odwo³uje siê do i-wêz³a opisu realtime %llu\n" -#: ../repair/dir.c:1923 +#: ../repair/dir.c:1919 #, c-format msgid "entry #%d, bno %d in directory %llu references user quota inode %llu\n" msgstr "wpis #%d, bno %d w katalogu %llu odwo³uje siê do i-wêz³a limitu u¿ytkownika %llu\n" -#: ../repair/dir.c:1940 +#: ../repair/dir.c:1936 #, c-format msgid "entry #%d, bno %d in directory %llu references group quota inode %llu\n" msgstr "wpis #%d, bno %d w katalogu %llu odwo³uje siê do i-wêz³a limitu grupy %llu\n" -#: ../repair/dir.c:1983 +#: ../repair/dir.c:1973 #, c-format msgid "entry references free inode %llu in directory %llu, will clear entry\n" msgstr "wpis odwo³uje siê do wolnego i-wêz³a %llu w katalogu %llu, zostanie wyczyszczony\n" -#: ../repair/dir.c:1991 +#: ../repair/dir.c:1981 #, c-format msgid "entry references free inode %llu in directory %llu, would clear entry\n" msgstr "wpis odwo³uje siê do wolnego i-wêz³a %llu w katalogu %llu, zosta³by wyczyszczony\n" -#: ../repair/dir.c:1999 +#: ../repair/dir.c:1989 #, c-format msgid "bad ino number %llu in dir ino %llu, entry #%d, bno %d\n" msgstr "b³êdny numer i-wêz³a %llu w i-wê¼le katalogu %llu, wpis #%d, bno %d\n" -#: ../repair/dir.c:2002 +#: ../repair/dir.c:1992 msgid "clearing inode number...\n" msgstr "wyczyszczono numer i-wêz³a...\n" -#: ../repair/dir.c:2007 +#: ../repair/dir.c:1997 msgid "would clear inode number...\n" msgstr "numer i-wêz³a zosta³by wyczyszczony\n" -#: ../repair/dir.c:2027 +#: ../repair/dir.c:2017 #, c-format msgid "entry #%d, dir inode %llu, has zero-len name, deleting entry\n" msgstr "wpis #%d, i-wêze³ katalogu %llu ma nazwê zerowej d³ugo¶ci, usuniêto\n" -#: ../repair/dir.c:2066 +#: ../repair/dir.c:2056 #, c-format msgid "entry #%d, dir inode %llu, has zero-len name, marking entry bad\n" msgstr "wpis #%d, i-wêze³ katalogu %llu ma nazwê zerowej d³ugo¶ci, zaznaczono jako b³êdny\n" -#: ../repair/dir.c:2080 +#: ../repair/dir.c:2070 #, c-format msgid "bad size, entry #%d in dir inode %llu, block %u -- entry overflows block\n" msgstr "b³êdny rozmiar, wpis #%d w i-wê¼le katalogu %llu, blok %u - wpis wykracza poza blok\n" -#: ../repair/dir.c:2091 +#: ../repair/dir.c:2081 #, c-format msgid "dir entry slot %d in block %u conflicts with used space in dir inode %llu\n" msgstr "slot wpisu katalogu %d w bloku %u jest w konflikcie z u¿ytym miejscem w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:2130 +#: ../repair/dir.c:2120 #, c-format msgid "illegal name \"%s\" in directory inode %llu, entry will be cleared\n" msgstr "niedozwolona nazwa \"%s\" w i-wê¼le katalogu %llu, wpis zostanie wyczyszczony\n" -#: ../repair/dir.c:2136 +#: ../repair/dir.c:2126 #, c-format msgid "illegal name \"%s\" in directory inode %llu, entry would be cleared\n" msgstr "niedozwolona nazwa \"%s\" w i-wê¼le katalogu %llu, wpis zosta³by wyczyszczony\n" -#: ../repair/dir.c:2146 +#: ../repair/dir.c:2136 #, c-format msgid "\tmismatched hash value for entry \"%s\"\n" msgstr "\tniedopasowana warto¶æ hasza dla wpisu \"%s\"\n" -#: ../repair/dir.c:2150 +#: ../repair/dir.c:2140 #, c-format msgid "\t\tin directory inode %llu. resetting hash value.\n" msgstr "\t\tw i-wê¼le katalogu %llu. Przestawiono warto¶æ hasza.\n" -#: ../repair/dir.c:2156 +#: ../repair/dir.c:2146 #, c-format msgid "\t\tin directory inode %llu. would reset hash value.\n" msgstr "\t\tw i-wê¼le katalogu %llu. Warto¶æ hasza zosta³aby przestawiona.\n" -#: ../repair/dir.c:2186 +#: ../repair/dir.c:2176 #, c-format msgid "\tbad hash ordering for entry \"%s\"\n" msgstr "\tb³êdny porz±dek hasza dla wpisu \"%s\"\n" -#: ../repair/dir.c:2190 +#: ../repair/dir.c:2180 #, c-format msgid "\t\tin directory inode %llu. will clear entry\n" msgstr "\t\tw i-wê¼le katalogu %llu. Wpis zostanie wyczyszczony.\n" -#: ../repair/dir.c:2198 +#: ../repair/dir.c:2188 #, c-format msgid "\t\tin directory inode %llu. would clear entry\n" msgstr "\t\tw i-wê¼le katalogu %llu. Wpis zosta³by wyczyszczony.\n" -#: ../repair/dir.c:2215 +#: ../repair/dir.c:2205 #, c-format msgid "name \"%s\" (block %u, slot %d) conflicts with used space in dir inode %llu\n" msgstr "nazwa \"%s\" (blok %u, slot %d) jest w konflikcie z u¿ytym miejscem w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:2222 +#: ../repair/dir.c:2212 #, c-format msgid "will clear entry \"%s\" (#%d) in directory inode %llu\n" msgstr "wpis \"%s\" (#%d) zostanie wyczyszczony w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:2226 +#: ../repair/dir.c:2216 #, c-format msgid "would clear entry \"%s\" (#%d)in directory inode %llu\n" msgstr "wpis \"%s\" (#%d) zosta³by wyczyszczony w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:2262 +#: ../repair/dir.c:2252 #, c-format msgid "bad .. entry in dir ino %llu, points to self" msgstr "b³êdny wpis .. w i-wê¼le katalogu %llu, wskazuje na siebie" -#: ../repair/dir.c:2266 ../repair/dir.c:2363 +#: ../repair/dir.c:2256 ../repair/dir.c:2353 msgid "will clear entry\n" msgstr "wpis zostanie wyczyszczony\n" -#: ../repair/dir.c:2271 ../repair/dir.c:2367 ../repair/dir2.c:1641 +#: ../repair/dir.c:2261 ../repair/dir.c:2357 ../repair/dir2.c:1644 msgid "would clear entry\n" msgstr "wpis zosta³by wyczyszczony\n" -#: ../repair/dir.c:2281 +#: ../repair/dir.c:2271 #, c-format msgid "correcting .. entry in root inode %llu, was %llu\n" msgstr "poprawiono wpis .. w gównym i-wê¼le %llu, by³o %llu\n" -#: ../repair/dir.c:2288 +#: ../repair/dir.c:2278 #, c-format msgid "bad .. entry (%llu) in root inode %llu should be %llu\n" msgstr "b³êdny wpis .. (%llu) w g³ównym i-wê¼le %llu, powinno byæ %llu\n" -#: ../repair/dir.c:2305 +#: ../repair/dir.c:2295 #, c-format msgid "multiple .. entries in directory inode %llu, will clear second entry\n" msgstr "wiele wpisów .. w i-wê¼le katalogu %llu, drugi wpis zostanie wyczyszczony\n" -#: ../repair/dir.c:2311 +#: ../repair/dir.c:2301 #, c-format msgid "multiple .. entries in directory inode %llu, would clear second entry\n" msgstr "wiele wpisów .. w i-wê¼le katalogu %llu, drugi wpis zosta³by wyczyszczony\n" -#: ../repair/dir.c:2324 +#: ../repair/dir.c:2314 #, c-format msgid ". in directory inode %llu has wrong value (%llu), fixing entry...\n" msgstr ". w i-wê¼le katalogu %llu ma niepoprawn± warto¶æ (%llu), poprawiono wpis...\n" -#: ../repair/dir.c:2331 +#: ../repair/dir.c:2321 #, c-format msgid ". in directory inode %llu has wrong value (%llu)\n" msgstr ". w i-wê¼le katalogu %llu ma niepoprawn± warto¶æ (%llu)\n" -#: ../repair/dir.c:2337 +#: ../repair/dir.c:2327 #, c-format msgid "multiple . entries in directory inode %llu\n" msgstr "wiele wpisów . w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:2344 +#: ../repair/dir.c:2334 #, c-format msgid "will clear one . entry in directory inode %llu\n" msgstr "jeden wpis . w i-wê¼le katalogu %llu zostanie wyczyszczony\n" -#: ../repair/dir.c:2350 +#: ../repair/dir.c:2340 #, c-format msgid "would clear one . entry in directory inode %llu\n" msgstr "jeden wpis . w i-wê¼le katalogu %llu zosta³by wyczyszczony\n" -#: ../repair/dir.c:2360 +#: ../repair/dir.c:2350 #, c-format msgid "entry \"%s\" in directory inode %llu points to self, " msgstr "wpis \"%s\" w i-wê¼le katalogu %llu wskazuje na siebie, " -#: ../repair/dir.c:2385 +#: ../repair/dir.c:2375 #, c-format msgid "- resetting first used heap value from %d to %d in block %u of dir ino %llu\n" msgstr "- przestawiono pierwsz± u¿ywan± warto¶æ sterty z %d na %d w bloku %u i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2394 +#: ../repair/dir.c:2384 #, c-format msgid "- would reset first used value from %d to %d in block %u of dir ino %llu\n" msgstr "- pierwsza u¿ywana warto¶æ zosta³aby przestawiona z %d na %d w bloku %u i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2405 +#: ../repair/dir.c:2395 #, c-format msgid "- resetting namebytes cnt from %d to %d in block %u of dir inode %llu\n" msgstr "- przestawiono liczbê bajtów nazwy z %d na %d w bloku %u i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2414 +#: ../repair/dir.c:2404 #, c-format msgid "- would reset namebytes cnt from %d to %d in block %u of dir inode %llu\n" msgstr "- liczba bajtów nazwy zosta³aby przestawiona z %d na %d w bloku %u i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2450 +#: ../repair/dir.c:2440 #, c-format msgid "- found unexpected lost holes in block %u, dir inode %llu\n" msgstr "- znaleziono nieoczekiwane utracone dziury w bloku %u, i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:2458 +#: ../repair/dir.c:2448 #, c-format msgid "- hole info non-optimal in block %u, dir inode %llu\n" msgstr "- nieoptymalna informacja o dziurze w bloku %u, i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:2465 +#: ../repair/dir.c:2455 #, c-format msgid "- hole info incorrect in block %u, dir inode %llu\n" msgstr "- niepoprawna informacja o dziurze w bloku %u, i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:2476 +#: ../repair/dir.c:2466 #, c-format msgid "- existing hole info for block %d, dir inode %llu (base, size) - \n" msgstr "- istniej±ca informacja o dziurze dla bloku %d, i-wêz³a katalogu %llu (podstawa, rozmiar) - \n" -#: ../repair/dir.c:2484 +#: ../repair/dir.c:2474 #, c-format msgid "- holes flag = %d\n" msgstr "- flaga dziur = %d\n" -#: ../repair/dir.c:2490 +#: ../repair/dir.c:2480 #, c-format msgid "- compacting block %u in dir inode %llu\n" msgstr "- zagêszczono blok %u w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:2531 +#: ../repair/dir.c:2521 #, c-format msgid "not enough space in block %u of dir inode %llu for all entries\n" msgstr "zbyt ma³o miejsca dla wszystkich wpisów w bloku %u i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2599 +#: ../repair/dir.c:2589 #, c-format msgid "- would compact block %u in dir inode %llu\n" msgstr "- bloku %u w i-wê¼le katalogu %llu zosta³by zagêszczony\n" -#: ../repair/dir.c:2661 ../repair/dir2.c:1826 +#: ../repair/dir.c:2651 ../repair/dir2.c:1830 #, c-format msgid "can't map block %u for directory inode %llu\n" msgstr "nie mo¿na odwzorowaæ bloku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2672 +#: ../repair/dir.c:2662 #, c-format msgid "can't read file block %u (fsbno %llu, daddr %lld) for directory inode %llu\n" msgstr "nie mo¿na odczytaæ bloku pliku %u (fsbno %llu, daddr %lld) dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2686 ../repair/dir.c:2948 +#: ../repair/dir.c:2676 ../repair/dir.c:2938 #, c-format msgid "bad directory leaf magic # %#x for dir ino %llu\n" msgstr "b³êdna liczba magiczna li¶cia katalogu %#x dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2725 +#: ../repair/dir.c:2715 #, c-format msgid "bad sibling back pointer for directory block %u in directory inode %llu\n" msgstr "b³êdny wska¼nik wstecz dla bloku katalogu %u w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:2757 ../repair/dir2.c:1903 +#: ../repair/dir.c:2747 ../repair/dir2.c:1907 #, c-format msgid "bad hash path in directory %llu\n" msgstr "b³êdna ¶cie¿ka hasza w katalogu %llu\n" -#: ../repair/dir.c:2867 +#: ../repair/dir.c:2857 #, c-format msgid "out of range internal directory block numbers (inode %llu)\n" msgstr "numery bloków wewnêtrznego katalogu spoza zakresu (i-wêze³ %llu)\n" -#: ../repair/dir.c:2873 +#: ../repair/dir.c:2863 #, c-format msgid "setting directory inode (%llu) size to %llu bytes, was %lld bytes\n" msgstr "ustawiono rozmiar i-wêz³a katalogu (%llu) na %llu bajtów, by³o %lld bajtów\n" -#: ../repair/dir.c:2928 +#: ../repair/dir.c:2918 #, c-format msgid "block 0 for directory inode %llu is missing\n" msgstr "brak bloku 0 dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2935 +#: ../repair/dir.c:2925 #, c-format msgid "can't read block 0 for directory inode %llu\n" msgstr "nie mo¿na odczytaæ bloku 0 dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2972 +#: ../repair/dir.c:2962 #, c-format msgid "clearing forw/back pointers for directory inode %llu\n" msgstr "wyczyszczono wska¼niki w przód/wstecz dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2978 +#: ../repair/dir.c:2968 #, c-format msgid "would clear forw/back pointers for directory inode %llu\n" msgstr "wska¼niki w przód/wstecz dla i-wêz³a katalogu %llu zosta³yby wyczyszczone\n" -#: ../repair/dir.c:3048 ../repair/dir2.c:2114 +#: ../repair/dir.c:3038 ../repair/dir2.c:2115 #, c-format msgid "no . entry for directory %llu\n" msgstr "brak wpisu . dla katalogu %llu\n" -#: ../repair/dir.c:3058 ../repair/dir2.c:2124 +#: ../repair/dir.c:3048 ../repair/dir2.c:2125 #, c-format msgid "no .. entry for directory %llu\n" msgstr "brak wpisu .. dla katalogu %llu\n" -#: ../repair/dir.c:3060 ../repair/dir2.c:2126 +#: ../repair/dir.c:3050 ../repair/dir2.c:2127 #, c-format msgid "no .. entry for root directory %llu\n" msgstr "brak wpisu .. dla katalogu g³ównego %llu\n" -#: ../repair/dir2.c:55 +#: ../repair/dir2.c:56 #, c-format msgid "malloc failed (%u bytes) dir2_add_badlist:ino %llu\n" msgstr "malloc nie powiod³o siê (%u bajtów) w dir2_add_badlist:ino %llu\n" -#: ../repair/dir2.c:96 ../repair/dir2.c:197 ../repair/dir2.c:233 +#: ../repair/dir2.c:97 ../repair/dir2.c:208 ../repair/dir2.c:244 msgid "couldn't malloc dir2 buffer list\n" msgstr "nie mo¿na przydzieliæ listy bufora dir2\n" -#: ../repair/dir2.c:113 +#: ../repair/dir2.c:124 msgid "couldn't malloc dir2 buffer header\n" msgstr "nie mo¿na przydzieliæ nag³ówka bufora dir2\n" -#: ../repair/dir2.c:130 +#: ../repair/dir2.c:141 msgid "couldn't malloc dir2 buffer data\n" msgstr "nie mo¿na przydzieliæ danych bufora dir2\n" -#: ../repair/dir2.c:288 ../repair/dir2.c:648 ../repair/dir2.c:1706 -#: ../repair/phase6.c:2361 +#: ../repair/dir2.c:304 ../repair/dir2.c:658 ../repair/dir2.c:1709 +#: ../repair/phase6.c:2422 #, c-format msgid "can't read block %u for directory inode %llu\n" msgstr "nie mo¿na odczytaæ bloku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:299 +#: ../repair/dir2.c:315 #, c-format msgid "found non-root LEAFN node in inode %llu bno = %u\n" msgstr "znaleziono nieg³ówny wêze³ LEAFN w i-wê¼le %llu bno = %u\n" -#: ../repair/dir2.c:304 -#, c-format -msgid "LEAFN node level is %d inode %llu bno = %u\n" -msgstr "poziom wêz³a LEAFN wynosi %d i-wêze³ %llu bno = %u\n" - -#: ../repair/dir2.c:315 +#: ../repair/dir2.c:325 #, c-format msgid "bad dir magic number 0x%x in inode %llu bno = %u\n" msgstr "b³êdna liczba magiczna katalogu 0x%x w i-wê¼le %llu bno = %u\n" -#: ../repair/dir2.c:392 +#: ../repair/dir2.c:402 #, c-format msgid "release_dir2_cursor_int got unexpected non-null bp, dabno = %u\n" msgstr "release_dir2_cursor_int otrzyma³ nieoczekiwany niezerowy bp, dabno = %u\n" -#: ../repair/dir2.c:455 +#: ../repair/dir2.c:465 #, c-format msgid "directory block used/count inconsistency - %d / %hu\n" msgstr "niespójno¶æ warto¶ci used/count bloku katalogu - %d / %hu\n" -#: ../repair/dir2.c:477 +#: ../repair/dir2.c:487 #, c-format msgid "bad directory block in inode %llu\n" msgstr "b³êdny blok katalogu w i-wê¼le %llu\n" -#: ../repair/dir2.c:498 +#: ../repair/dir2.c:508 #, c-format msgid "" "correcting bad hashval in non-leaf dir block\n" @@ -6478,7 +6541,7 @@ msgstr "" "poprawiono b³êdne hashval w bloku katalogu nie bêd±cego li¶ciem\n" "\tw i-wê¼le (poziomu %d) %llu.\n" -#: ../repair/dir2.c:505 +#: ../repair/dir2.c:515 #, c-format msgid "" "would correct bad hashval in non-leaf dir block\n" @@ -6487,27 +6550,27 @@ msgstr "" "b³êdne hashval w bloku katalogu nie bêd±cego li¶ciem zosta³oby poprawione\n" "\tw i-wê¼le (poziomu %d) %llu.\n" -#: ../repair/dir2.c:662 +#: ../repair/dir2.c:672 #, c-format msgid "bad magic number %x in block %u for directory inode %llu\n" msgstr "b³êdna liczba magiczna %x w bloku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:670 +#: ../repair/dir2.c:680 #, c-format msgid "bad back pointer in block %u for directory inode %llu\n" msgstr "b³êdny wska¼nik wstecz w bloku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:677 +#: ../repair/dir2.c:687 #, c-format msgid "entry count %d too large in block %u for directory inode %llu\n" msgstr "liczba wpisów %d zbyt du¿a w bloku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:684 +#: ../repair/dir2.c:694 #, c-format msgid "bad level %d in block %u for directory inode %llu\n" msgstr "b³êdny poziom %d w bloku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:728 +#: ../repair/dir2.c:738 #, c-format msgid "" "correcting bad hashval in interior dir block\n" @@ -6516,7 +6579,7 @@ msgstr "" "poprawiono b³êdne hashval w wewnêtrznym bloku katalogu\n" "\tw i-wê¼le (poziomu %d) %llu.\n" -#: ../repair/dir2.c:735 +#: ../repair/dir2.c:745 #, c-format msgid "" "would correct bad hashval in interior dir block\n" @@ -6525,385 +6588,394 @@ msgstr "" "b³êdne hashval w wewnêtrznym bloku katalogu zosta³oby poprawione\n" "\tw i-wê¼le (poziomu %d) %llu.\n" -#: ../repair/dir2.c:769 +#: ../repair/dir2.c:779 msgid "couldn't malloc dir2 shortform copy\n" msgstr "nie uda³o siê przydzieliæ krótkiej kopii dir2\n" -#: ../repair/dir2.c:909 +#: ../repair/dir2.c:919 msgid "current" msgstr "bie¿±cego i-wêz³a" -#: ../repair/dir2.c:912 ../repair/dir2.c:1435 +#: ../repair/dir2.c:922 ../repair/dir2.c:1445 msgid "invalid" msgstr "nieprawid³owego i-wêz³a" -#: ../repair/dir2.c:915 ../repair/dir2.c:1438 +#: ../repair/dir2.c:925 ../repair/dir2.c:1448 msgid "realtime bitmap" msgstr "i-wêz³a bitmapy realtime" -#: ../repair/dir2.c:918 ../repair/dir2.c:1441 +#: ../repair/dir2.c:928 ../repair/dir2.c:1451 msgid "realtime summary" msgstr "i-wêz³a opisu realtime" -#: ../repair/dir2.c:921 ../repair/dir2.c:1444 +#: ../repair/dir2.c:931 ../repair/dir2.c:1454 msgid "user quota" msgstr "i-wêz³a limitów u¿ytkownika" -#: ../repair/dir2.c:924 ../repair/dir2.c:1447 +#: ../repair/dir2.c:934 ../repair/dir2.c:1457 msgid "group quota" msgstr "i-wêz³a limitów grupy" -#: ../repair/dir2.c:958 ../repair/dir2.c:1484 +#: ../repair/dir2.c:968 ../repair/dir2.c:1487 msgid "non-existent" msgstr "nie istniej±cego i-wêz³a" -#: ../repair/dir2.c:962 +#: ../repair/dir2.c:972 #, c-format msgid "entry \"%*.*s\" in shortform directory %llu references %s inode %llu\n" msgstr "wpis \"%*.*s\" w krótkim katalogu %llu odwo³uje siê do %s %llu\n" -#: ../repair/dir2.c:994 +#: ../repair/dir2.c:1004 #, c-format msgid "zero length entry in shortform dir %llu" msgstr "wpis zerowej d³ugo¶ci w krótkim katalogu %llu" -#: ../repair/dir2.c:998 +#: ../repair/dir2.c:1008 #, c-format msgid ", junking %d entries\n" msgstr ", wyrzucono %d wpisów\n" -#: ../repair/dir2.c:1001 +#: ../repair/dir2.c:1011 #, c-format msgid ", would junk %d entries\n" msgstr ", %d wpisów zosta³oby wyrzucone\n" -#: ../repair/dir2.c:1075 +#: ../repair/dir2.c:1085 #, c-format msgid "entry contains offset out of order in shortform dir %llu\n" msgstr "wpis zawiera uszkodzony offset w krótkim katalogu %llu\n" -#: ../repair/dir2.c:1179 +#: ../repair/dir2.c:1189 #, c-format msgid "would have corrected i8 count in directory %llu from %d to %d\n" msgstr "liczba i8 zosta³aby poprawiona w katalogu %llu z %d na %d\n" -#: ../repair/dir2.c:1183 +#: ../repair/dir2.c:1193 #, c-format msgid "corrected i8 count in directory %llu, was %d, now %d\n" msgstr "poprawiono liczbê i8 w katalogu %llu - by³o %d, jest %d\n" -#: ../repair/dir2.c:1220 +#: ../repair/dir2.c:1230 #, c-format msgid "directory %llu offsets too high\n" msgstr "offsety zbyt du¿e w katalogu %llu\n" -#: ../repair/dir2.c:1225 +#: ../repair/dir2.c:1235 #, c-format msgid "would have corrected entry offsets in directory %llu\n" msgstr "offsety wpisów w katalogu %llu zosta³yby poprawione\n" -#: ../repair/dir2.c:1229 +#: ../repair/dir2.c:1239 #, c-format msgid "corrected entry offsets in directory %llu\n" msgstr "poprawiono offsety wpisów w katalogu %llu\n" -#: ../repair/dir2.c:1284 +#: ../repair/dir2.c:1294 #, c-format msgid "bad .. entry in directory inode %llu, points to self, " msgstr "b³êdny wpis .. w i-wê¼le katalogu %llu, wskazuje na siebie, " -#: ../repair/dir2.c:1396 +#: ../repair/dir2.c:1406 #, c-format msgid "corrupt block %u in directory inode %llu\n" msgstr "uszkodzony blok %u w i-wê¼le katalogu %llu\n" -#: ../repair/dir2.c:1399 +#: ../repair/dir2.c:1409 msgid "\twill junk block\n" msgstr "\tblok zostanie wyrzucony\n" -#: ../repair/dir2.c:1401 +#: ../repair/dir2.c:1411 msgid "\twould junk block\n" msgstr "\tblok zosta³by wyrzucony\n" -#: ../repair/dir2.c:1487 +#: ../repair/dir2.c:1490 #, c-format msgid "entry \"%*.*s\" at block %u offset %d in directory inode %llu references %s inode %llu\n" msgstr "wpis \"%*.*s\" w bloku %u offsecie %d w i-wê¼le katalogu %llu odwo³uje siê do %s %llu\n" -#: ../repair/dir2.c:1499 +#: ../repair/dir2.c:1502 #, c-format msgid "entry at block %u offset %d in directory inode %llu has 0 namelength\n" msgstr "wpis w bloku %u offsecie %d w i-wê¼le katalogu %llu ma zerow± d³ugo¶æ nazwy\n" -#: ../repair/dir2.c:1511 +#: ../repair/dir2.c:1514 #, c-format msgid "\tclearing inode number in entry at offset %d...\n" msgstr "\twyczyszczono numer i-wêz³a we wpisie o offsecie %d...\n" -#: ../repair/dir2.c:1517 +#: ../repair/dir2.c:1520 #, c-format msgid "\twould clear inode number in entry at offset %d...\n" msgstr "\tnumer i-wêz³a we wpisie o offsecie %d zosta³by wyczyszczony...\n" -#: ../repair/dir2.c:1530 +#: ../repair/dir2.c:1533 #, c-format msgid "entry at block %u offset %d in directory inode %llu has illegal name \"%*.*s\": " msgstr "wpis w bloku %u offsecie %d w i-wê¼le katalogu %llu ma niedozwolon± nazwê \"%*.*s\": " -#: ../repair/dir2.c:1561 +#: ../repair/dir2.c:1564 #, c-format msgid "bad .. entry in directory inode %llu, points to self: " msgstr "b³êdny wpis .. w i-wê¼le katalogu %llu, wskazuje na siebie: " -#: ../repair/dir2.c:1572 +#: ../repair/dir2.c:1575 #, c-format msgid "bad .. entry in root directory inode %llu, was %llu: " msgstr "b³êdny wpis w i-wê¼le g³ównego katalogu %llu, by³o %llu: " -#: ../repair/dir2.c:1577 ../repair/dir2.c:1609 ../repair/phase2.c:178 -#: ../repair/phase2.c:187 ../repair/phase2.c:196 +#: ../repair/dir2.c:1580 ../repair/dir2.c:1612 ../repair/phase2.c:193 +#: ../repair/phase2.c:202 ../repair/phase2.c:211 msgid "correcting\n" msgstr "poprawiono\n" -#: ../repair/dir2.c:1581 ../repair/dir2.c:1613 ../repair/phase2.c:180 -#: ../repair/phase2.c:189 ../repair/phase2.c:198 +#: ../repair/dir2.c:1584 ../repair/dir2.c:1616 ../repair/phase2.c:195 +#: ../repair/phase2.c:204 ../repair/phase2.c:213 msgid "would correct\n" msgstr "zosta³by poprawiony\n" -#: ../repair/dir2.c:1592 +#: ../repair/dir2.c:1595 #, c-format msgid "multiple .. entries in directory inode %llu: " msgstr "wiele wpisów .. w i-wê¼le katalogu %llu: " -#: ../repair/dir2.c:1605 +#: ../repair/dir2.c:1608 #, c-format msgid "bad . entry in directory inode %llu, was %llu: " msgstr "b³êdny wpis . w i-wê¼le katalogu %llu, by³o %llu: " -#: ../repair/dir2.c:1617 +#: ../repair/dir2.c:1620 #, c-format msgid "multiple . entries in directory inode %llu: " msgstr "wiele wpisów . w i-wê¼le katalogu %llu: " -#: ../repair/dir2.c:1627 +#: ../repair/dir2.c:1630 #, c-format msgid "entry \"%*.*s\" in directory inode %llu points to self: " msgstr "wpis \"%*.*s\" w i-wê¼le katalogu %llu wskazuje na siebie: " -#: ../repair/dir2.c:1639 +#: ../repair/dir2.c:1642 msgid "clearing entry\n" msgstr "wyczyszczono wpis\n" -#: ../repair/dir2.c:1653 +#: ../repair/dir2.c:1656 #, c-format msgid "bad bestfree table in block %u in directory inode %llu: " msgstr "b³êdna tablica bestfree w bloku %u w i-wê¼le katalogu %llu: " -#: ../repair/dir2.c:1657 +#: ../repair/dir2.c:1660 msgid "repairing table\n" msgstr "naprawiono tablicê\n" -#: ../repair/dir2.c:1661 +#: ../repair/dir2.c:1664 msgid "would repair table\n" msgstr "tablica zosta³aby naprawiona\n" -#: ../repair/dir2.c:1698 +#: ../repair/dir2.c:1701 #, c-format msgid "block %u for directory inode %llu is missing\n" msgstr "brak bloku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:1715 +#: ../repair/dir2.c:1718 #, c-format msgid "bad directory block magic # %#x in block %u for directory inode %llu\n" msgstr "b³êdna liczba magiczna bloku katalogu %#x w bloku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:1760 +#: ../repair/dir2.c:1763 #, c-format msgid "bad entry count in block %u of directory inode %llu\n" msgstr "b³êdna liczba wpisów w bloku %u i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:1770 +#: ../repair/dir2.c:1773 #, c-format msgid "bad hash ordering in block %u of directory inode %llu\n" msgstr "b³êdna kolejno¶æ hasza w bloku %u i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:1779 +#: ../repair/dir2.c:1782 #, c-format msgid "bad stale count in block %u of directory inode %llu\n" msgstr "b³êdna liczba stale %u i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:1836 +#: ../repair/dir2.c:1840 #, c-format msgid "can't read file block %u for directory inode %llu\n" msgstr "nie mo¿na odczytaæ bloku pliku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:1847 +#: ../repair/dir2.c:1851 #, c-format msgid "bad directory leaf magic # %#x for directory inode %llu block %u\n" msgstr "b³êdna liczba magiczna li¶cia katalogu %#x dla i-wêz³a katalogu %llu bloku %u\n" -#: ../repair/dir2.c:1877 +#: ../repair/dir2.c:1881 #, c-format msgid "bad sibling back pointer for block %u in directory inode %llu\n" msgstr "b³êdny wska¼nik wstecz dla bloku %u w i-wê¼le katalogu %llu\n" -#: ../repair/dir2.c:2010 +#: ../repair/dir2.c:2011 #, c-format msgid "block %llu for directory inode %llu is missing\n" msgstr "brak bloku %llu dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:2019 +#: ../repair/dir2.c:2020 #, c-format msgid "can't read block %llu for directory inode %llu\n" msgstr "nie mo¿na odczytaæ bloku %llu dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:2027 +#: ../repair/dir2.c:2028 #, c-format msgid "bad directory block magic # %#x in block %llu for directory inode %llu\n" msgstr "b³êdna liczba magiczna bloku katalogu %#x w bloku %llu dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:2107 +#: ../repair/dir2.c:2108 #, c-format msgid "bad size/format for directory %llu\n" msgstr "b³êdny rozmiar/format dla katalogu %llu\n" -#: ../repair/dir_stack.c:91 -msgid "couldn't malloc dir stack element, try more swap\n" -msgstr "nie uda³o siê przydzieliæ elementu stosu katalogu, nale¿y spróbowaæ zwiêkszyæ swap\n" - -#: ../repair/incore.c:64 +#: ../repair/incore.c:65 msgid "couldn't allocate block map pointers\n" msgstr "nie uda³o siê przydzieliæ wska¼ników mapy bloków\n" -#: ../repair/incore.c:73 +#: ../repair/incore.c:68 +msgid "couldn't allocate block map locks\n" +msgstr "nie uda³o siê przydzieliæ blokad mapy bloków\n" + +#: ../repair/incore.c:76 #, c-format msgid "couldn't allocate block map, size = %d\n" msgstr "nie uda³o siê przydzieliæ mapy bloków, rozmiar = %d\n" -#: ../repair/incore.c:90 +#: ../repair/incore.c:94 #, c-format msgid "couldn't allocate realtime block map, size = %llu\n" msgstr "nie uda³o siê przydzieliæ mapy bloków realtime, size = %llu\n" -#: ../repair/incore_ext.c:112 ../repair/incore_ext.c:666 +#: ../repair/incore_ext.c:121 ../repair/incore_ext.c:679 msgid "couldn't allocate new extent descriptors.\n" msgstr "nie uda³o siê przydzieliæ nowych deskryptorów fragmentów.\n" -#: ../repair/incore_ext.c:242 +#: ../repair/incore_ext.c:254 msgid "duplicate bno extent range\n" msgstr "powtórzony przedzia³ fragmentów bno\n" -#: ../repair/incore_ext.c:379 +#: ../repair/incore_ext.c:391 msgid ": duplicate bno extent range\n" msgstr ": powtórzony przedzia³ fragmentów bno\n" -#: ../repair/incore_ext.c:543 ../repair/incore_ext.c:594 -#: ../repair/incore_ext.c:779 ../repair/incore_ext.c:831 +#: ../repair/incore_ext.c:555 ../repair/incore_ext.c:606 +#: ../repair/incore_ext.c:794 ../repair/incore_ext.c:849 msgid "duplicate extent range\n" msgstr "powtórzony przedzia³ fragmentów\n" -#: ../repair/incore_ext.c:880 +#: ../repair/incore_ext.c:907 msgid "couldn't malloc dup extent tree descriptor table\n" msgstr "nie uda³o siê przydzieliæ tablicy deskryptorów drzewa powtórzonych fragmentów\n" -#: ../repair/incore_ext.c:885 +#: ../repair/incore_ext.c:912 msgid "couldn't malloc free by-bno extent tree descriptor table\n" msgstr "nie uda³o siê przydzieliæ tablicy deskryptorów drzewa wolnych fragmentów wg bno\n" -#: ../repair/incore_ext.c:890 +#: ../repair/incore_ext.c:917 msgid "couldn't malloc free by-bcnt extent tree descriptor table\n" msgstr "nie uda³o siê przydzieliæ tablicy deskryptorów drzewa wolnych fragmentów wg bcnt\n" -#: ../repair/incore_ext.c:896 +#: ../repair/incore_ext.c:923 msgid "couldn't malloc dup extent tree descriptor\n" msgstr "nie uda³o siê przydzieliæ deskryptora drzewa powtórzonych fragmentów\n" -#: ../repair/incore_ext.c:900 +#: ../repair/incore_ext.c:927 msgid "couldn't malloc bno extent tree descriptor\n" msgstr "nie uda³o siê przydzieliæ deskryptora drzewa fragmentów wg bno\n" -#: ../repair/incore_ext.c:904 +#: ../repair/incore_ext.c:931 msgid "couldn't malloc bcnt extent tree descriptor\n" msgstr "nie uda³o siê przydzieliæ deskryptora drzewa fragmentów wg bcnt\n" -#: ../repair/incore_ext.c:914 +#: ../repair/incore_ext.c:941 msgid "couldn't malloc dup rt extent tree descriptor\n" msgstr "nie uda³o siê przydzieliæ deskryptora drzewa powtórzonych fragmentów rt\n" -#: ../repair/incore_ino.c:77 +#: ../repair/incore_ino.c:196 ../repair/incore_ino.c:205 +#: ../repair/incore_ino.c:222 ../repair/incore_ino.c:231 +msgid "could not allocate expanded nlink array\n" +msgstr "Nie uda³o siê przydzieliæ rozszerzonej tablicy nlink\n" + +#: ../repair/incore_ino.c:268 msgid "inode map malloc failed\n" msgstr "przydzielenie mapy i-wêz³ów nie powiod³o siê\n" -#: ../repair/incore_ino.c:190 +#: ../repair/incore_ino.c:298 +msgid "could not allocate nlink array\n" +msgstr "Nie uda³o siê przydzieliæ tablicy nlink\n" + +#: ../repair/incore_ino.c:390 msgid "add_aginode_uncertain - duplicate inode range\n" msgstr "add_aginode_uncertain - powtórzony przedzia³ i-wêz³ów\n" -#: ../repair/incore_ino.c:292 +#: ../repair/incore_ino.c:488 msgid "add_inode - duplicate inode range\n" msgstr "add_inode - powtórzony przedzia³ i-wêz³ów\n" -#: ../repair/incore_ino.c:386 +#: ../repair/incore_ino.c:579 #, c-format msgid "good inode list is --\n" msgstr "lista dobrych i-wêz³ów to:\n" -#: ../repair/incore_ino.c:389 +#: ../repair/incore_ino.c:582 #, c-format msgid "uncertain inode list is --\n" msgstr "lista niepewnych i-wêz³ów to:\n" -#: ../repair/incore_ino.c:394 +#: ../repair/incore_ino.c:587 #, c-format msgid "agno %d -- no inodes\n" msgstr "agno %d - brak i-wêz³ów\n" -#: ../repair/incore_ino.c:398 +#: ../repair/incore_ino.c:591 #, c-format msgid "agno %d\n" msgstr "agno %d\n" -#: ../repair/incore_ino.c:402 +#: ../repair/incore_ino.c:595 #, c-format msgid "\tptr = %lx, start = 0x%x, free = 0x%llx, confirmed = 0x%llx\n" msgstr "\tptr = %lx, start = 0x%x, wolne = 0x%llx, potwierdzone = 0x%llx\n" -#: ../repair/incore_ino.c:446 +#: ../repair/incore_ino.c:646 msgid "couldn't malloc parent list table\n" msgstr "nie uda³o siê przydzieliæ tablicy listy rodziców\n" -#: ../repair/incore_ino.c:452 ../repair/incore_ino.c:498 +#: ../repair/incore_ino.c:657 ../repair/incore_ino.c:703 msgid "couldn't memalign pentries table\n" msgstr "nie uda³o siê memalign na tablicy pentries\n" -#: ../repair/incore_ino.c:558 -msgid "could not malloc back pointer table\n" -msgstr "nie uda³o siê przydzieliæ tablicy wska¼ników wstecz\n" +#: ../repair/incore_ino.c:761 ../repair/incore_ino.c:767 +msgid "could not malloc inode extra data\n" +msgstr "nie uda³o siê przydzieliæ dodatkowych danych i-wêz³a\n" -#: ../repair/incore_ino.c:648 +#: ../repair/incore_ino.c:815 msgid "couldn't malloc inode tree descriptor table\n" msgstr "nie uda³o siê przydzieliæ tablicy deskryptorów drzewa i-wêz³ów\n" -#: ../repair/incore_ino.c:652 +#: ../repair/incore_ino.c:819 msgid "couldn't malloc uncertain ino tree descriptor table\n" msgstr "nie uda³o siê przydzieliæ tablicy deskryptorów drzewa i-wêz³ów niepewnych\n" -#: ../repair/incore_ino.c:657 +#: ../repair/incore_ino.c:824 msgid "couldn't malloc inode tree descriptor\n" msgstr "nie uda³o siê przydzieliæ deskryptora drzewa i-wêz³ów\n" -#: ../repair/incore_ino.c:661 +#: ../repair/incore_ino.c:828 msgid "couldn't malloc uncertain ino tree descriptor\n" msgstr "nie uda³o siê przydzieliæ deskryptora drzewa i-wêz³ów niepewnych\n" -#: ../repair/incore_ino.c:672 +#: ../repair/incore_ino.c:839 msgid "couldn't malloc uncertain inode cache area\n" msgstr "nie uda³o siê przydzieliæ obszaru pamiêci podrêcznej i-wêz³ów niepewnych\n" -#: ../repair/init.c:38 +#: ../repair/init.c:42 msgid "ts_alloc: cannot allocate thread specific storage\n" msgstr "ts_alloc: nie mo¿na przydzieliæ miejsca dla w±tku\n" -#: ../repair/init.c:137 +#: ../repair/init.c:146 msgid "couldn't initialize XFS library\n" msgstr "nie uda³o siê zainicjowaæ biblioteki XFS\n" @@ -6924,39 +6996,66 @@ msgstr "nie uda msgid "Phase 1 - find and verify superblock...\n" msgstr "Faza 1 - szukanie i sprawdzanie superbloku...\n" -#: ../repair/phase1.c:75 +#: ../repair/phase1.c:74 msgid "error reading primary superblock\n" msgstr "b³±d podczas odczytu g³ównego superbloku\n" -#: ../repair/phase1.c:81 +#: ../repair/phase1.c:80 #, c-format msgid "bad primary superblock - %s !!!\n" msgstr "b³êdny g³ówny superblok - %s!!!\n" -#: ../repair/phase1.c:88 +#: ../repair/phase1.c:87 #, c-format msgid "couldn't verify primary superblock - %s !!!\n" msgstr "nie uda³o siê sprawdziæ g³ównego superbloku - %s!!!\n" -#: ../repair/phase1.c:97 +#: ../repair/phase1.c:105 +msgid "superblock has a features2 mismatch, correcting\n" +msgstr "superblok ma niepasuj±ce features2, poprawianie\n" + +#: ../repair/phase1.c:121 +#, c-format +msgid "Enabling lazy-counters\n" +msgstr "W³±czanie leniwych liczników\n" + +#: ../repair/phase1.c:125 +#, c-format +msgid "Disabling lazy-counters\n" +msgstr "Wy³±czanie leniwych liczników\n" + +#: ../repair/phase1.c:128 +#, c-format +msgid "Lazy-counters are already %s\n" +msgstr "Leniwe liczniki ju¿ s± %s\n" + +#: ../repair/phase1.c:129 +msgid "enabled" +msgstr "w³±czone" + +#: ../repair/phase1.c:129 +msgid "disabled" +msgstr "wy³±czone" + +#: ../repair/phase1.c:136 msgid "writing modified primary superblock\n" msgstr "zapisano zmodyfikowany g³ówny superblok\n" -#: ../repair/phase1.c:100 +#: ../repair/phase1.c:139 msgid "would write modified primary superblock\n" msgstr "zmodyfikowany g³ówny superblok zosta³by zapisany\n" -#: ../repair/phase2.c:54 +#: ../repair/phase2.c:65 #, c-format msgid "zero_log: cannot find log head/tail (xlog_find_tail=%d), zeroing it anyway\n" msgstr "zero_log: nie znaleziono pocz±tku/koñca loga (xlog_find_tail=%d), wyzerowano go\n" -#: ../repair/phase2.c:59 +#: ../repair/phase2.c:70 #, c-format msgid "zero_log: head block %lld tail block %lld\n" msgstr "zero_log: blok pocz±tku %lld blok koñca %lld\n" -#: ../repair/phase2.c:65 +#: ../repair/phase2.c:76 msgid "" "ALERT: The filesystem has valuable metadata changes in a log which is being\n" "destroyed because the -L option was used.\n" @@ -6964,7 +7063,7 @@ msgstr "" "UWAGA: system plików zawiera warto¶ciowe zmiany metadanych w logu, który jest\n" "niszczony, poniewa¿ u¿yto opcji -L.\n" -#: ../repair/phase2.c:69 +#: ../repair/phase2.c:80 msgid "" "ERROR: The filesystem has valuable metadata changes in a log which needs to\n" "be replayed. Mount the filesystem to replay the log, and unmount it before\n" @@ -6981,449 +7080,401 @@ msgstr "" "Nale¿y zauwa¿yæ, ¿e zniszczenie loga mo¿e spowodowaæ uszkodzenia danych -\n" "proszê najpierw spróbowaæ podmontowaæ system plików.\n" -#: ../repair/phase2.c:111 +#: ../repair/phase2.c:122 msgid "This filesystem has an external log. Specify log device with the -l option.\n" msgstr "Ten system plików ma zewnêtrzny log. Nale¿y podaæ urz±dzenie loga przy u¿yciu opcji -l.\n" -#: ../repair/phase2.c:114 +#: ../repair/phase2.c:125 #, c-format msgid "Phase 2 - using external log on %s\n" msgstr "Faza 2 - u¿ycie zewnêtrznego loga na %s\n" -#: ../repair/phase2.c:116 +#: ../repair/phase2.c:127 msgid "Phase 2 - using internal log\n" msgstr "Faza 2 - u¿ycie wewnêtrznego loga\n" -#: ../repair/phase2.c:120 +#: ../repair/phase2.c:131 msgid " - zero log...\n" msgstr " - zerowanie loga...\n" -#: ../repair/phase2.c:124 +#: ../repair/phase2.c:135 msgid " - scan filesystem freespace and inode maps...\n" msgstr " - przeszukiwanie wolnego miejsca i map i-wêz³ów w systemie plików...\n" -#: ../repair/phase2.c:147 +#: ../repair/phase2.c:162 msgid "root inode chunk not found\n" msgstr "nie znaleziono danych g³ównego i-wêz³a\n" -#: ../repair/phase2.c:169 +#: ../repair/phase2.c:184 msgid " - found root inode chunk\n" msgstr " - znaleziono dane g³ównego i-wêz³a\n" -#: ../repair/phase2.c:175 +#: ../repair/phase2.c:190 msgid "root inode marked free, " msgstr "g³ówny i-wêze³ oznaczony jako wolny, " -#: ../repair/phase2.c:184 +#: ../repair/phase2.c:199 msgid "realtime bitmap inode marked free, " msgstr "i-wêze³ bitmapy realtime oznaczony jako wolny, " -#: ../repair/phase2.c:193 +#: ../repair/phase2.c:208 msgid "realtime summary inode marked free, " msgstr "i-wêze³ opisu realtime oznaczony jako wolny, " -#: ../repair/phase3.c:113 +#: ../repair/phase3.c:117 #, c-format msgid "cannot read agi block %lld for ag %u\n" msgstr "nie mo¿na odczytaæ bloku agi %lld dla ag %u\n" -#: ../repair/phase3.c:136 +#: ../repair/phase3.c:140 #, c-format msgid "error following ag %d unlinked list\n" msgstr "b³±d podczas pod±¿ania za od³±czon± list± ag %d\n" -#: ../repair/phase3.c:151 +#: ../repair/phase3.c:161 ../repair/phase4.c:125 ../repair/phase5.c:1468 +#: ../repair/phase6.c:3844 +#, c-format +msgid " - agno = %d\n" +msgstr " - agno = %d\n" + +#: ../repair/phase3.c:212 msgid "Phase 3 - for each AG...\n" msgstr "Faza 3 - dla ka¿dej AG...\n" -#: ../repair/phase3.c:153 +#: ../repair/phase3.c:214 msgid " - scan and clear agi unlinked lists...\n" msgstr " - przeszukiwanie i czyszczenie od³±czonych list agi...\n" -#: ../repair/phase3.c:155 +#: ../repair/phase3.c:216 msgid " - scan (but don't clear) agi unlinked lists...\n" msgstr " - przeszukiwanie (ale nie czyszczenie) od³±czonych list agi...\n" -#: ../repair/phase3.c:171 +#: ../repair/phase3.c:236 msgid " - process known inodes and perform inode discovery...\n" msgstr " - przetwarzanie znanych i-wêz³ów i rozpoznawanie i-wêz³ów...\n" -#: ../repair/phase3.c:174 ../repair/phase4.c:1328 ../repair/phase6.c:3827 -#: ../repair/phase7.c:75 -#, c-format -msgid " - agno = %d\n" -msgstr " - agno = %d\n" - -#: ../repair/phase3.c:185 +#: ../repair/phase3.c:247 msgid " - process newly discovered inodes...\n" msgstr " - przetwarzanie nowo rozpoznanych i-wêz³ów...\n" -#: ../repair/phase4.c:128 ../repair/phase4.c:594 -#, c-format -msgid "couldn't read %s inode %llu\n" -msgstr "nie uda³o siê odczytaæ i-wêz³a %s %llu\n" - -#: ../repair/phase4.c:153 ../repair/phase4.c:336 ../repair/phase4.c:619 -#: ../repair/phase4.c:817 -#, c-format -msgid " - clearing existing \"%s\" inode\n" -msgstr " - czyszczenie istniej±cego i-wêz³± \"%s\"\n" - -#: ../repair/phase4.c:185 ../repair/phase4.c:652 -#, c-format -msgid " - marking entry \"%s\" to be deleted\n" -msgstr " - zaznaczenie wpisu \"%s\" do usuniêcia\n" - -#: ../repair/phase4.c:213 -#, c-format -msgid "couldn't map first leaf block of directory inode %llu\n" -msgstr "nie uda³o siê odwzorowaæ pierwszego bloku li¶cia i-wêz³a katalogu %llu\n" - -#: ../repair/phase4.c:242 -#, c-format -msgid "bad magic # (0x%x) for directory leaf block (bno %u fsbno %llu)\n" -msgstr "b³êdna liczba magiczna (0x%x) dla bloku li¶cia katalogu (bno %u fsbno %llu)\n" - -#: ../repair/phase4.c:379 ../repair/phase4.c:860 -#, c-format -msgid "could not read %s inode %llu\n" -msgstr "nie uda³o siê odczytaæ i-wêz³a %s %llu\n" - -#: ../repair/phase4.c:430 ../repair/phase4.c:912 -#, c-format -msgid " - deleting existing \"%s\" entry\n" -msgstr " - usuwanie istniej±cego wpisu \"%s\"\n" - -#: ../repair/phase4.c:684 -#, c-format -msgid "malloc failed (%u bytes) in longform2_delete_orphanage, ino %llu\n" -msgstr "malloc nie powiod³o siê (%u bajtów) w longform2_delete_orphanage, i-wêze³ %llu\n" - -#: ../repair/phase4.c:728 -#, c-format -msgid "bad magic # (0x%x) for directory data block (bno %u fsbno %llu)\n" -msgstr "b³êdna liczba magiczna (0x%x) dla bloku danych katalogu (bno %u fsbno %llu)\n" - -#: ../repair/phase4.c:988 -#, c-format -msgid "could not read buffer for root inode %llu (daddr %lld, size %d)\n" -msgstr "nie uda³o siê odczytaæ bufora dla g³ównego i-wêz³a %llu (daddr %lld, rozmiar %d)\n" - -#: ../repair/phase4.c:1034 -#, c-format -msgid "unknown version #%d in root inode\n" -msgstr "nieznana wersja #%d w g³ównym i-wê¼le\n" - -#: ../repair/phase4.c:1141 +#: ../repair/phase4.c:205 msgid "Phase 4 - check for duplicate blocks...\n" msgstr "Faza 4 - sprawdzanie powtórzonych bloków...\n" -#: ../repair/phase4.c:1142 +#: ../repair/phase4.c:206 msgid " - setting up duplicate extent list...\n" msgstr " - tworzenie listy powtórzonych fragmentów...\n" -#: ../repair/phase4.c:1154 +#: ../repair/phase4.c:220 msgid "root inode would be lost\n" msgstr "g³ówny i-wêze³ zosta³by utracony\n" -#: ../repair/phase4.c:1156 +#: ../repair/phase4.c:222 msgid "root inode lost\n" msgstr "g³ówny i-wêze³ utracony\n" -#: ../repair/phase4.c:1164 -msgid " - clear lost+found (if it exists) ...\n" -msgstr " - czyszczenie lost+found (je¶li istnieje)...\n" - -#: ../repair/phase4.c:1200 +#: ../repair/phase4.c:256 #, c-format msgid "unknown block state, ag %d, block %d\n" msgstr "nieznany stan bloku, ag %d, blok %d\n" -#: ../repair/phase4.c:1256 +#: ../repair/phase4.c:314 #, c-format msgid "unknown rt extent state, extent %llu\n" msgstr "nieznany stan fragmentu rt, fragment %llu\n" -#: ../repair/phase4.c:1317 +#: ../repair/phase4.c:375 msgid " - check for inodes claiming duplicate blocks...\n" msgstr " - szukanie i-wêz³ów odwo³uj±cych siê do powtórzonych bloków...\n" -#: ../repair/phase5.c:229 +#: ../repair/phase5.c:234 msgid "could not set up btree block array\n" msgstr "nie uda³o siê utworzyæ tablicy bloków b-drzewa\n" -#: ../repair/phase5.c:241 +#: ../repair/phase5.c:246 msgid "error - not enough free space in filesystem\n" msgstr "b³±d - za ma³o wolnego miejsca w systemie plików\n" -#: ../repair/phase5.c:464 +#: ../repair/phase5.c:473 #, c-format msgid "can't rebuild fs trees -- not enough free space on ag %u\n" msgstr "nie mo¿na przebudowaæ drzew systemu plików - za ma³o wolnego miejsca w ag %u\n" -#: ../repair/phase5.c:488 +#: ../repair/phase5.c:497 #, c-format msgid "ag %u - not enough free space to build freespace btrees\n" msgstr "ag %u - za ma³o wolnego miejsca na przebudowanie b-drzew wolnego miejsca\n" -#: ../repair/phase5.c:523 +#: ../repair/phase5.c:532 #, c-format msgid "not enough free blocks left to describe all free blocks in AG %u\n" msgstr "za ma³o wolnych bloków na opisanie wszystkich wolnych bloków w AG %u\n" -#: ../repair/phase5.c:1333 +#: ../repair/phase5.c:1360 #, c-format msgid "lost %d blocks in ag %u\n" msgstr "utracono %d bloków w ag %u\n" -#: ../repair/phase5.c:1336 +#: ../repair/phase5.c:1363 #, c-format msgid "thought we were going to lose %d blocks in ag %u, actually lost %d\n" msgstr "przewidywano utracenie %d bloków w ag %u, a utracono %d\n" -#: ../repair/phase5.c:1384 ../repair/xfs_repair.c:635 +#: ../repair/phase5.c:1411 ../repair/xfs_repair.c:794 msgid "couldn't get superblock\n" msgstr "nie uda³o siê pobraæ superbloku\n" -#: ../repair/phase5.c:1439 -msgid "Phase 5 - rebuild AG headers and trees...\n" -msgstr "Faza 5 - przebudowywanie nag³ówków i drzew AG...\n" - -#: ../repair/phase5.c:1488 +#: ../repair/phase5.c:1491 #, c-format msgid "unable to rebuild AG %u. Not enough free space in on-disk AG.\n" msgstr "nie uda³o siê przebudowaæ AG %u. Za ma³o wolnego miejsca w AG na dysku.\n" -#: ../repair/phase5.c:1528 +#: ../repair/phase5.c:1531 #, c-format msgid "unable to rebuild AG %u. No free space.\n" msgstr "nie uda³o siê przebudowaæ AG %u. Brak wolnego miejsca.\n" -#: ../repair/phase5.c:1555 +#: ../repair/phase5.c:1558 #, c-format msgid "lost %d blocks in agno %d, sorry.\n" msgstr "niestety utracono %d bloków w agno %d.\n" -#: ../repair/phase5.c:1619 +#: ../repair/phase5.c:1627 +msgid "Phase 5 - rebuild AG headers and trees...\n" +msgstr "Faza 5 - przebudowywanie nag³ówków i drzew AG...\n" + +#: ../repair/phase5.c:1658 +msgid "cannot alloc sb_icount_ag buffers\n" +msgstr "nie mo¿na przydzieliæ buforów sb_icount_ag\n" + +#: ../repair/phase5.c:1662 +msgid "cannot alloc sb_ifree_ag buffers\n" +msgstr "nie mo¿na przydzieliæ buforów sb_ifree_ag\n" + +#: ../repair/phase5.c:1666 +msgid "cannot alloc sb_fdblocks_ag buffers\n" +msgstr "nie mo¿na przydzieliæ buforów sb_fdblocks_ag\n" + +#: ../repair/phase5.c:1685 msgid " - generate realtime summary info and bitmap...\n" msgstr " - generowanie opisu i bitmapy realtime...\n" -#: ../repair/phase5.c:1625 +#: ../repair/phase5.c:1691 msgid " - reset superblock...\n" msgstr " - przestawianie superbloku...\n" -#: ../repair/phase6.c:133 +#: ../repair/phase6.c:134 #, c-format msgid "malloc failed in dir_hash_add (%u bytes)\n" msgstr "malloc nie powiod³o siê w dir_hash_add (%u bajtów)\n" -#: ../repair/phase6.c:188 +#: ../repair/phase6.c:189 msgid "ok" msgstr "ok" -#: ../repair/phase6.c:189 +#: ../repair/phase6.c:190 msgid "duplicate leaf" msgstr "powtórzony li¶æ" -#: ../repair/phase6.c:190 +#: ../repair/phase6.c:191 msgid "hash value mismatch" msgstr "niezgodno¶æ warto¶ci hasza" -#: ../repair/phase6.c:191 +#: ../repair/phase6.c:192 msgid "no data entry" msgstr "brak wpisu danych" -#: ../repair/phase6.c:192 +#: ../repair/phase6.c:193 msgid "no leaf entry" msgstr "brak wpisu li¶cia" -#: ../repair/phase6.c:193 +#: ../repair/phase6.c:194 msgid "bad stale count" msgstr "b³êdna liczba stale" -#: ../repair/phase6.c:201 +#: ../repair/phase6.c:202 #, c-format msgid "bad hash table for directory inode %llu (%s): " msgstr "b³êdna tablica haszuj±ca dla i-wêz³a katalogu %llu (%s): " -#: ../repair/phase6.c:204 +#: ../repair/phase6.c:205 msgid "rebuilding\n" msgstr "przebudowano\n" -#: ../repair/phase6.c:206 +#: ../repair/phase6.c:207 msgid "would rebuild\n" msgstr "zosta³aby przebudowana\n" -#: ../repair/phase6.c:242 +#: ../repair/phase6.c:243 msgid "calloc failed in dir_hash_init\n" msgstr "calloc nie powiod³o siê w dir_hash_init\n" -#: ../repair/phase6.c:402 +#: ../repair/phase6.c:398 msgid "ran out of disk space!\n" msgstr "brak miejsca na dysku!\n" -#: ../repair/phase6.c:404 +#: ../repair/phase6.c:400 #, c-format msgid "xfs_trans_reserve returned %d\n" msgstr "xfs_trans_reserve zwróci³o %d\n" -#: ../repair/phase6.c:433 ../repair/phase6.c:526 +#: ../repair/phase6.c:429 ../repair/phase6.c:522 #, c-format msgid "couldn't iget realtime bitmap inode -- error - %d\n" msgstr "nie uda³o siê wykonaæ iget dla i-wêz³a bitmapy realtime - b³±d %d\n" -#: ../repair/phase6.c:483 +#: ../repair/phase6.c:479 #, c-format msgid "couldn't allocate realtime bitmap, error = %d\n" msgstr "nie uda³o siê przydzieliæ bitmapy realtime, b³±d = %d\n" -#: ../repair/phase6.c:496 +#: ../repair/phase6.c:492 #, c-format msgid "allocation of the realtime bitmap failed, error = %d\n" msgstr "przydzielenie bitmapy realtime nie powiod³o siê, b³±d = %d\n" -#: ../repair/phase6.c:539 +#: ../repair/phase6.c:535 #, c-format msgid "couldn't map realtime bitmap block %llu, error = %d\n" msgstr "nie uda³o siê odwzorowaæ bloku bitmapy realtime %llu, b³±d = %d\n" -#: ../repair/phase6.c:552 +#: ../repair/phase6.c:548 #, c-format msgid "can't access block %llu (fsbno %llu) of realtime bitmap inode %llu\n" msgstr "brak dostêpu do bloku %llu (fsbno %llu) i-wêz³a bitmapy realtime %llu\n" -#: ../repair/phase6.c:595 ../repair/phase6.c:666 +#: ../repair/phase6.c:591 ../repair/phase6.c:662 #, c-format msgid "couldn't iget realtime summary inode -- error - %d\n" msgstr "nie uda³o siê wykonaæ iget dla i-wêz³a opisu realtime - b³±d %d\n" -#: ../repair/phase6.c:608 +#: ../repair/phase6.c:604 #, c-format msgid "couldn't map realtime summary inode block %llu, error = %d\n" msgstr "nie uda³o siê odwzorowaæ bloku i-wêz³a opisu realtime %llu, b³±d = %d\n" -#: ../repair/phase6.c:621 +#: ../repair/phase6.c:617 #, c-format msgid "can't access block %llu (fsbno %llu) of realtime summary inode %llu\n" msgstr "brak dostêpu do bloku %llu (fsbno %llu) i-wêz³a opisu realtime %llu\n" -#: ../repair/phase6.c:722 +#: ../repair/phase6.c:718 #, c-format msgid "couldn't allocate realtime summary inode, error = %d\n" msgstr "nie uda³o siê przydzieliæ i-wêz³a opisu realtime, b³±d = %d\n" -#: ../repair/phase6.c:735 +#: ../repair/phase6.c:731 #, c-format msgid "allocation of the realtime summary ino failed, error = %d\n" msgstr "przydzielenie i-wêz³a opisu realtime nie powiod³o siê, b³±d = %d\n" -#: ../repair/phase6.c:762 +#: ../repair/phase6.c:759 #, c-format msgid "could not iget root inode -- error - %d\n" msgstr "nie uda³o siê wykonaæ iget dla g³ównego i-wêz³a - b³±d %d\n" -#: ../repair/phase6.c:828 +#: ../repair/phase6.c:824 #, c-format -msgid "%d - couldn't iget root inode to make %s\n" -msgstr "%d - nie uda³o siê wykonaæ iget dla g³ównego wêz³a, aby zrobiæ %s\n" +msgid "%d - couldn't iget root inode to obtain %s\n" +msgstr "%d - nie uda³o siê wykonaæ iget dla g³ównego wêz³a, aby uzyskaæ %s\n" -#: ../repair/phase6.c:834 +#: ../repair/phase6.c:854 #, c-format msgid "%s inode allocation failed %d\n" msgstr "przydzielenie i-wêz³± %s nie powiod³o siê - %d\n" -#: ../repair/phase6.c:851 +#: ../repair/phase6.c:871 #, c-format -msgid "can't make %s, createname error %d, will try later\n" -msgstr "nie mo¿na zrobiæ %s, b³±d createname %d, spróbujê pó¼niej\n" +msgid "can't make %s, createname error %d\n" +msgstr "nie mo¿na zrobiæ %s, b³±d createname %d\n" -#: ../repair/phase6.c:869 +#: ../repair/phase6.c:890 #, c-format msgid "%s directory creation failed -- bmapf error %d\n" msgstr "tworzenie katalogu %s nie powiod³o siê - b³±d bmapf %d\n" -#: ../repair/phase6.c:906 +#: ../repair/phase6.c:930 #, c-format msgid "%d - couldn't iget orphanage inode\n" msgstr "%d - nie uda³o siê wykonaæ iget dla i-wêz³a sierociñca\n" -#: ../repair/phase6.c:911 +#: ../repair/phase6.c:944 #, c-format msgid "%d - couldn't iget disconnected inode\n" msgstr "%d - nie uda³o siê wykonaæ iget dla od³±czonego i-wêz³a\n" -#: ../repair/phase6.c:925 ../repair/phase6.c:964 ../repair/phase6.c:1015 -#: ../repair/phase6.c:1856 +#: ../repair/phase6.c:963 ../repair/phase6.c:1005 ../repair/phase6.c:1060 +#: ../repair/phase6.c:1885 #, c-format msgid "space reservation failed (%d), filesystem may be out of space\n" msgstr "nie uda³o siê zarezerwowaæ miejsca (%d), mo¿e brakowaæ miejsca w systemie plików\n" -#: ../repair/phase6.c:936 ../repair/phase6.c:976 ../repair/phase6.c:1025 +#: ../repair/phase6.c:974 ../repair/phase6.c:1017 ../repair/phase6.c:1070 #, c-format msgid "name create failed in %s (%d), filesystem may be out of space\n" msgstr "tworzenie nazwy nie powiod³o siê w %s (%d), mo¿e brakowaæ miejsca w systemie plików\n" -#: ../repair/phase6.c:945 +#: ../repair/phase6.c:986 #, c-format msgid "creation of .. entry failed (%d), filesystem may be out of space\n" msgstr "tworzenie wpisu .. nie powiod³o siê (%d), mo¿e brakowaæ miejsca w systemie plików\n" -#: ../repair/phase6.c:953 +#: ../repair/phase6.c:994 #, c-format msgid "bmap finish failed (err - %d), filesystem may be out of space\n" msgstr "zakoñczenie bmap nie powiod³o siê (b³±d %d), mo¿e brakowaæ miejsca w systemie plików\n" -#: ../repair/phase6.c:991 +#: ../repair/phase6.c:1035 #, c-format msgid "name replace op failed (%d), filesystem may be out of space\n" msgstr "operacja zast±pienia nazwy nie powiod³a siê (%d), mo¿e brakowaæ miejsca w systemie plików\n" -#: ../repair/phase6.c:998 ../repair/phase6.c:1034 ../repair/phase6.c:1879 +#: ../repair/phase6.c:1042 ../repair/phase6.c:1079 ../repair/phase6.c:1908 #, c-format msgid "bmap finish failed (%d), filesystem may be out of space\n" msgstr "zakoñczenie bmap nie powiod³o siê (%d), mo¿e brakowaæ miejsca w systemie plików\n" -#: ../repair/phase6.c:1076 ../repair/phase6.c:1238 ../repair/phase6.c:1656 +#: ../repair/phase6.c:1120 ../repair/phase6.c:1277 ../repair/phase6.c:1701 msgid "dir" msgstr "katalogu" -#: ../repair/phase6.c:1085 ../repair/phase6.c:1089 +#: ../repair/phase6.c:1129 ../repair/phase6.c:1133 #, c-format msgid "can't map block %d in %s inode %llu, xfs_bmapi returns %d, nmap = %d\n" msgstr "nie mo¿na odwzorowaæ bloku %d w i-wê¼le %s %llu, xfs_bmapi zwraca %d, nmap = %d\n" -#: ../repair/phase6.c:1097 ../repair/phase6.c:1100 ../repair/phase6.c:1735 -#: ../repair/phase6.c:1739 +#: ../repair/phase6.c:1141 ../repair/phase6.c:1144 ../repair/phase6.c:1780 +#: ../repair/phase6.c:1784 #, c-format msgid "block %d in %s ino %llu doesn't exist\n" msgstr "blok %d w i-wê¼le %s %llu nie istnieje\n" -#: ../repair/phase6.c:1160 ../repair/phase6.c:1164 +#: ../repair/phase6.c:1199 ../repair/phase6.c:1203 #, c-format msgid "can't map block %d in %s ino %llu, xfs_bmapi returns %d, nmap = %d\n" msgstr "nie mo¿na odwzorowaæ bloku %d w i-wê¼le %s %llu, xfs_bmapi zwraca %d, nmap = %d\n" -#: ../repair/phase6.c:1172 ../repair/phase6.c:1176 +#: ../repair/phase6.c:1211 ../repair/phase6.c:1215 #, c-format msgid "block %d in %s inode %llu doesn't exist\n" msgstr "blok %d w i-wê¼le %s %llu nie istnieje\n" -#: ../repair/phase6.c:1256 +#: ../repair/phase6.c:1295 #, c-format msgid "can't read directory inode %llu (leaf) block %u (fsbno %llu)\n" msgstr "nie mo¿na odczytaæ i-wêz³a katalogu %llu bloku (li¶cia) %u (fsbno %llu)\n" -#: ../repair/phase6.c:1298 +#: ../repair/phase6.c:1337 #, c-format msgid "can't map block %d in directory %llu, xfs_bmapi returns %d, nmap = %d\n" msgstr "nie mo¿na odwzorowaæ bloku %d w katalogu %llu, xfs_bmapi zwraca %d, nmap = %d\n" -#: ../repair/phase6.c:1303 +#: ../repair/phase6.c:1342 #, c-format msgid "%s ino %llu block %d doesn't exist\n" msgstr "w i-wê¼le %s %llu blok %d nie istnieje\n" -#: ../repair/phase6.c:1358 +#: ../repair/phase6.c:1397 #, c-format msgid "" "couldn't remove bogus entry \"%s\" in\n" @@ -7432,467 +7483,682 @@ msgstr "" "nie uda³o siê usun±æ niepoprawnego wpisu \"%s\"\n" "\tw i-wê¼le katalogu %llu, b³±d = %d\n" -#: ../repair/phase6.c:1496 -#, c-format -msgid "entry \"%s\" in dir inode %llu points to non-existent inode, " -msgstr "wpis \"%s\" w i-wê¼le katalogu %llu wskazuje na nie istniej±cy i-wêzê³, " +#: ../repair/phase6.c:1421 +msgid ", marking entry to be junked\n" +msgstr ", zaznaczono wpis do wyrzucenia\n" -#: ../repair/phase6.c:1502 ../repair/phase6.c:2245 -msgid "marking entry to be junked\n" -msgstr "zaznaczono wpis do wyrzucenia\n" +#: ../repair/phase6.c:1425 +msgid ", would junk entry\n" +msgstr ", wpis zosta³by wyrzucony\n" -#: ../repair/phase6.c:1504 ../repair/phase6.c:2247 ../repair/phase6.c:2787 -#: ../repair/phase6.c:3205 -msgid "would junk entry\n" -msgstr "wpis zosta³by wyrzucony\n" +#: ../repair/phase6.c:1540 +#, c-format +msgid "entry \"%s\" in dir inode %llu points to non-existent inode %llu" +msgstr "wpis \"%s\" w i-wê¼le katalogu %llu wskazuje na nie istniej±cy i-wêzê³ %llu" -#: ../repair/phase6.c:1524 +#: ../repair/phase6.c:1558 #, c-format msgid "entry \"%s\" in dir inode %llu points to free inode %llu" msgstr "wpis \"%s\" w i-wê¼le katalogu %llu wskazuje na wolny i-wêze³ %llu" -#: ../repair/phase6.c:1531 ../repair/phase6.c:1557 ../repair/phase6.c:2170 -#: ../repair/phase6.c:2270 ../repair/phase6.c:2829 ../repair/phase6.c:3248 -msgid ", marking entry to be junked\n" -msgstr ", zaznaczono wpis do wyrzucenia\n" - -#: ../repair/phase6.c:1538 ../repair/phase6.c:1563 ../repair/phase6.c:2174 -#: ../repair/phase6.c:2276 ../repair/phase6.c:2833 ../repair/phase6.c:3252 -msgid ", would junk entry\n" -msgstr ", wpis zosta³by wyrzucony\n" +#: ../repair/phase6.c:1574 ../repair/phase6.c:2245 ../repair/phase6.c:2859 +#: ../repair/phase6.c:3264 +#, c-format +msgid "%s (ino %llu) in root (%llu) is not a directory" +msgstr "%s (i-wêze³ %llu) w katalogu g³ównym (%llu) nie jest katalogiem" -#: ../repair/phase6.c:1551 ../repair/phase6.c:2165 ../repair/phase6.c:2823 -#: ../repair/phase6.c:3242 +#: ../repair/phase6.c:1596 ../repair/phase6.c:2266 ../repair/phase6.c:2876 +#: ../repair/phase6.c:3281 #, c-format msgid "entry \"%s\" (ino %llu) in dir %llu is a duplicate name" msgstr "wpis \"%s\" (i-wêze³ %llu) w katalogu %llu jest powtórzon± nazw±" -#: ../repair/phase6.c:1589 +#: ../repair/phase6.c:1627 #, c-format msgid "entry \"%s\" in dir %llu points to an already connected dir inode %llu,\n" msgstr "wpis \"%s\" w katalogu %llu wskazuje na ju¿ pod³±czony i-wêze³ katalogu %llu,\n" -#: ../repair/phase6.c:1600 +#: ../repair/phase6.c:1636 ../repair/phase6.c:2360 ../repair/phase6.c:2910 +#: ../repair/phase6.c:3311 +#, c-format +msgid "entry \"%s\" in dir ino %llu doesn't have a .. entry, will set it in ino %llu.\n" +msgstr "wpis \"%s\" w i-wê¼le katalogu %llu nie ma wpisu .., zostanie ustawiony w i-wê¼le %llu.\n" + +#: ../repair/phase6.c:1644 #, c-format msgid "entry \"%s\" in dir ino %llu not consistent with .. value (%llu) in ino %llu,\n" msgstr "wpis \"%s\" w i-wê¼le katalogu %llu niespójny z warto¶ci± .. (%llu) w i-wê¼le %llu,\n" -#: ../repair/phase6.c:1613 ../repair/phase6.c:2321 +#: ../repair/phase6.c:1659 ../repair/phase6.c:2382 #, c-format msgid "\twill clear entry \"%s\"\n" msgstr "\twpis \"%s\" zostanie wyczyszczony\n" -#: ../repair/phase6.c:1616 ../repair/phase6.c:2324 +#: ../repair/phase6.c:1662 ../repair/phase6.c:2385 #, c-format msgid "\twould clear entry \"%s\"\n" msgstr "\twpis \"%s\" zosta³by wyczyszczony\n" -#: ../repair/phase6.c:1661 +#: ../repair/phase6.c:1706 #, c-format msgid "cannot map block 0 of directory inode %llu\n" msgstr "nie mo¿na odwzorowaæ bloku 0 i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:1685 +#: ../repair/phase6.c:1730 #, c-format msgid "bad magic # (0x%x) for dir ino %llu leaf block (bno %u fsbno %llu)\n" msgstr "b³êdna liczba magiczna (0x%x) dla bloku li¶cia i-wêz³a katalogu %llu (bno %u fsbno %llu)\n" -#: ../repair/phase6.c:1723 ../repair/phase6.c:1727 +#: ../repair/phase6.c:1768 ../repair/phase6.c:1772 #, c-format msgid "can't map leaf block %d in dir %llu, xfs_bmapi returns %d, nmap = %d\n" msgstr "nie mo¿na odwzorowaæ bloku li¶cia %d w katalogu %llu, xfs_bmapi zwraca %d, nmap = %d\n" -#: ../repair/phase6.c:1778 +#: ../repair/phase6.c:1823 #, c-format msgid "rebuilding directory inode %llu\n" msgstr "przebudowywanie i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:1806 +#: ../repair/phase6.c:1848 #, c-format msgid "xfs_bmap_last_offset failed -- error - %d\n" msgstr "xfs_bmap_last_offset nie powiod³o siê - b³±d %d\n" -#: ../repair/phase6.c:1812 -#, c-format -msgid "couldn't iget parent inode %llu -- error - %d\n" -msgstr "nie uda³o siê wykonaæ iget dla nadrzêdnego i-wêz³a %llu - b³±d %d\n" - -#: ../repair/phase6.c:1818 -#, c-format -msgid "couldn't iget lost+found inode %llu -- error - %d\n" -msgstr "nie uda³o siê wykonaæ iget dla i-wêz³a lost+found %llu - b³±d %d\n" - -#: ../repair/phase6.c:1827 +#: ../repair/phase6.c:1856 #, c-format msgid "xfs_bunmapi failed -- error - %d\n" msgstr "xfs_bunmapi nie powiod³o siê - b³±d %d\n" -#: ../repair/phase6.c:1869 +#: ../repair/phase6.c:1898 #, c-format msgid "name create failed in ino %llu (%d), filesystem may be out of space\n" msgstr "tworzenie nazwy nie powiod³o siê w i-wê¼le %llu (%d), mo¿e brakowaæ miejsca w systemie plików\n" -#: ../repair/phase6.c:1935 +#: ../repair/phase6.c:1964 #, c-format msgid "shrink_inode failed inode %llu block %u\n" msgstr "shrink_inode nie powiod³o siê dla i-wêz³a %llu bloku %u\n" -#: ../repair/phase6.c:2017 +#: ../repair/phase6.c:2045 #, c-format msgid "realloc failed in longform_dir2_entry_check_data (%u bytes)\n" msgstr "realloc nie powiod³o siê w longform_dir2_entry_check_data (%u bajtów)\n" -#: ../repair/phase6.c:2076 +#: ../repair/phase6.c:2104 #, c-format msgid "empty data block %u in directory inode %llu: " msgstr "pusty blok danych %u w i-wê¼le katalogu %llu: " -#: ../repair/phase6.c:2079 +#: ../repair/phase6.c:2107 #, c-format msgid "corrupt block %u in directory inode %llu: " msgstr "uszkodzony blok %u w i-wê¼le katalogu %llu: " -#: ../repair/phase6.c:2083 +#: ../repair/phase6.c:2111 msgid "junking block\n" msgstr "wyrzucono blok\n" -#: ../repair/phase6.c:2086 +#: ../repair/phase6.c:2114 msgid "would junk block\n" msgstr "blok zosta³by wyrzucony\n" -#: ../repair/phase6.c:2109 +#: ../repair/phase6.c:2137 #, c-format msgid "bad directory block magic # %#x for directory inode %llu block %d: " msgstr "b³êdna liczba magiczna bloku katalogu %#x dla i-wêz³a katalogu %llu bloku %d: " -#: ../repair/phase6.c:2113 +#: ../repair/phase6.c:2141 #, c-format msgid "fixing magic # to %#x\n" msgstr "poprawiono liczbê magiczn± na %#x\n" -#: ../repair/phase6.c:2117 +#: ../repair/phase6.c:2145 #, c-format msgid "would fix magic # to %#x\n" msgstr "liczba magiczna zosta³aby poprawiona na %#x\n" -#: ../repair/phase6.c:2138 +#: ../repair/phase6.c:2166 #, c-format msgid "directory inode %llu block %u has consecutive free entries: " msgstr "i-wêze³ katalogu %llu blok %u ma kolejne wolne wpisy: " -#: ../repair/phase6.c:2142 +#: ../repair/phase6.c:2170 msgid "joining together\n" msgstr "po³±czono\n" -#: ../repair/phase6.c:2151 +#: ../repair/phase6.c:2179 msgid "would join together\n" msgstr "zosta³yby po³±czone\n" -#: ../repair/phase6.c:2239 +#: ../repair/phase6.c:2210 #, c-format -msgid "entry \"%s\" in directory inode %llu points to non-existent inode, " -msgstr "wpis \"%s\" w i-wê¼le katalogu %llu wskazuje na nie istniej±cy i-wêze³, " +msgid "entry \"%s\" in directory inode %llu points to non-existent inode %llu" +msgstr "wpis \"%s\" w i-wê¼le katalogu %llu wskazuje na nie istniej±cy i-wêze³ %llu" -#: ../repair/phase6.c:2264 +#: ../repair/phase6.c:2227 #, c-format msgid "entry \"%s\" in directory inode %llu points to free inode %llu" msgstr "wpis \"%s\" w i-wê¼le katalogu %llu wskazuje na wolny i-wêze³ %llu" -#: ../repair/phase6.c:2300 +#: ../repair/phase6.c:2290 #, c-format -msgid "entry \"%s\" in dir %llu points to an already connected directory inode %llu,\n" -msgstr "wpis \"%s\" w katalogu %llu wskazuje na ju¿ pod³±czony i-wêze³ katalogu %llu,\n" +msgid "entry \"%s\" (ino %llu) in dir %llu is not in the the first block" +msgstr "wpis \"%s\" (i-wêze³ %llu) w katalogu %llu nie jest w pierwszym bloku" -#: ../repair/phase6.c:2310 +#: ../repair/phase6.c:2316 #, c-format -msgid "entry \"%s\" in dir inode %llu inconsistent with .. value (%llu) in ino %llu,\n" -msgstr "wpis \"%s\" w i-wê¼le katalogu %llu niespójny z warto¶ci± .. (%llu) w i-wê¼le %llu,\n" +msgid "entry \"%s\" in dir %llu is not the first entry" +msgstr "wpis \"%s\" w katalogu %llu nie jest pierwszym wpisem" + +#: ../repair/phase6.c:2352 +#, c-format +msgid "entry \"%s\" in dir %llu points to an already connected directory inode %llu\n" +msgstr "wpis \"%s\" w katalogu %llu wskazuje na ju¿ pod³±czony i-wêze³ katalogu %llu\n" + +#: ../repair/phase6.c:2369 +#, c-format +msgid "entry \"%s\" in dir inode %llu inconsistent with .. value (%llu) in ino %llu\n" +msgstr "wpis \"%s\" w i-wê¼le katalogu %llu niespójny z warto¶ci± .. (%llu) w i-wê¼le %llu\n" -#: ../repair/phase6.c:2379 ../repair/phase6.c:2459 +#: ../repair/phase6.c:2440 ../repair/phase6.c:2520 #, c-format msgid "leaf block %u for directory inode %llu bad header\n" msgstr "b³êdny nag³ówek bloku li¶cia %u dla i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:2397 +#: ../repair/phase6.c:2458 #, c-format msgid "leaf block %u for directory inode %llu bad tail\n" msgstr "b³êdna koñcówka bloku li¶cia %u dla i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:2436 +#: ../repair/phase6.c:2497 #, c-format msgid "can't read leaf block %u for directory inode %llu\n" msgstr "nie mo¿na odczytaæ bloku li¶cia %u dla i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:2448 +#: ../repair/phase6.c:2509 #, c-format msgid "unknown magic number %#x for block %u in directory inode %llu\n" msgstr "nieznana liczba magiczna %#x dla bloku %u w i-wê¼le katalogu %llu\n" -#: ../repair/phase6.c:2483 +#: ../repair/phase6.c:2544 #, c-format msgid "can't read freespace block %u for directory inode %llu\n" msgstr "nie mo¿na odczytaæ bloku wolnego miejsca %u dla i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:2496 +#: ../repair/phase6.c:2557 #, c-format msgid "free block %u for directory inode %llu bad header\n" msgstr "b³êdny nag³ówek wolnego bloku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:2509 +#: ../repair/phase6.c:2570 #, c-format msgid "free block %u entry %i for directory ino %llu bad\n" msgstr "b³êdny wpis wolnego bloku %u numer %i dla i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:2518 +#: ../repair/phase6.c:2579 #, c-format msgid "free block %u for directory inode %llu bad nused\n" msgstr "b³êdna liczba nused w wolnym bloku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:2529 +#: ../repair/phase6.c:2590 #, c-format msgid "missing freetab entry %u for directory inode %llu\n" msgstr "brak wpisu freetab %u dla i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:2571 +#: ../repair/phase6.c:2633 #, c-format msgid "malloc failed in longform_dir2_entry_check (%u bytes)\n" msgstr "malloc nie powiod³o siê w longform_dir2_entry_check (%u bajtów)\n" -#: ../repair/phase6.c:2601 +#: ../repair/phase6.c:2663 +#, c-format +msgid "realloc failed in longform_dir2_entry_check (%u bytes)\n" +msgstr "realloc nie powiod³o siê w longform_dir2_entry_check (%u bajtów)\n" + +#: ../repair/phase6.c:2669 #, c-format msgid "can't read data block %u for directory inode %llu\n" msgstr "nie mo¿na odczytaæ bloku danych %u dla i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:2699 +#: ../repair/phase6.c:2767 #, c-format msgid "shortform dir inode %llu has null data entries \n" msgstr "i-wêze³ krótkiego katalogu %llu ma zerowe wpisy danych\n" -#: ../repair/phase6.c:2785 -#, c-format -msgid "entry \"%s\" in shortform dir %llu references non-existent ino %llu\n" -msgstr "wpis \"%s\" w krótkim katalogu %llu odwo³uje siê do nie istniej±cego i-wêz³a %llu\n" - -#: ../repair/phase6.c:2807 +#: ../repair/phase6.c:2834 #, c-format -msgid "entry \"%s\" in shortform dir inode %llu points to free inode %llu\n" -msgstr "wpis \"%s\" w i-wê¼le krótkiego katalogu %llu wskazuje na wolny i-wêze³ %llu\n" +msgid "entry \"%s\" in shortform dir %llu references non-existent ino %llu" +msgstr "wpis \"%s\" w krótkim katalogu %llu odwo³uje siê do nie istniej±cego i-wêz³a %llu" -#: ../repair/phase6.c:2813 ../repair/phase6.c:2911 ../repair/phase6.c:3232 -#: ../repair/phase6.c:3327 +#: ../repair/phase6.c:2847 #, c-format -msgid "would junk entry \"%s\"\n" -msgstr "wpis \"%s\" zosta³by wyrzucony\n" +msgid "entry \"%s\" in shortform dir inode %llu points to free inode %llu" +msgstr "wpis \"%s\" w i-wê¼le krótkiego katalogu %llu wskazuje na wolny i-wêze³ %llu" -#: ../repair/phase6.c:2857 +#: ../repair/phase6.c:2901 #, c-format msgid "entry \"%s\" in dir %llu references already connected dir ino %llu,\n" msgstr "wpis \"%s\" w katalogu %llu odwo³uje siê do ju¿ pod³±czonego i-wêz³a katalogu %llu,\n" -#: ../repair/phase6.c:2869 +#: ../repair/phase6.c:2918 #, c-format -msgid "entry \"%s\" in dir %llu not consistent with .. value (%llu) in dir ino %llu,\n" -msgstr "wpis \"%s\" w katalogu %llu niespójny z warto¶ci± .. (%llu) w i-wê¼le katalogu %llu,\n" +msgid "entry \"%s\" in dir %llu not consistent with .. value (%llu) in dir ino %llu" +msgstr "wpis \"%s\" w katalogu %llu niespójny z warto¶ci± .. (%llu) w i-wê¼le katalogu %llu" -#: ../repair/phase6.c:2950 ../repair/phase6.c:3045 ../repair/phase6.c:3382 +#: ../repair/phase6.c:2960 ../repair/phase6.c:3362 +msgid "junking entry\n" +msgstr "wyrzucono wpis\n" + +#: ../repair/phase6.c:2964 ../repair/phase6.c:3366 +msgid "would junk entry\n" +msgstr "wpis zosta³by wyrzucony\n" + +#: ../repair/phase6.c:3003 ../repair/phase6.c:3098 ../repair/phase6.c:3421 #, c-format msgid "setting size to %lld bytes to reflect junked entries\n" msgstr "ustawiono rozmiar na %lld aby odzwierciedla³ wyrzucone wpisy\n" -#: ../repair/phase6.c:3202 +#: ../repair/phase6.c:3237 #, c-format -msgid "entry \"%s\" in shortform directory %llu references non-existent inode %llu\n" -msgstr "wpis \"%s\" w krótkim katalogu %llu odwo³uje siê do nie istniej±cego i-wêz³± %llu\n" +msgid "entry \"%s\" in shortform directory %llu references non-existent inode %llu" +msgstr "wpis \"%s\" w krótkim katalogu %llu odwo³uje siê do nie istniej±cego i-wêz³± %llu" -#: ../repair/phase6.c:3224 +#: ../repair/phase6.c:3251 #, c-format -msgid "entry \"%s\" in shortform directory inode %llu points to free inode %llu\n" -msgstr "wpis \"%s\" w i-wê¼le krótkiego katalogu %llu wskazuje na wolny i-wêze³ %llu\n" +msgid "entry \"%s\" in shortform directory inode %llu points to free inode %llu" +msgstr "wpis \"%s\" w i-wê¼le krótkiego katalogu %llu wskazuje na wolny i-wêze³ %llu" -#: ../repair/phase6.c:3270 +#: ../repair/phase6.c:3301 #, c-format msgid "entry \"%s\" in directory inode %llu references already connected inode %llu,\n" msgstr "wpis \"%s\" w i-wê¼le katalogu %llu odwo³uje siê do ju¿ pod³±czonego i-wêz³a %llu,\n" -#: ../repair/phase6.c:3283 +#: ../repair/phase6.c:3319 #, c-format msgid "entry \"%s\" in directory inode %llu not consistent with .. value (%llu) in inode %llu,\n" msgstr "wpis \"%s\" w i-wê¼le katalogu %llu niespójny z warto¶ci± .. (%llu) w i-wê¼le %llu,\n" -#: ../repair/phase6.c:3351 +#: ../repair/phase6.c:3390 #, c-format msgid "would fix i8count in inode %llu\n" msgstr "i8count w i-wê¼le %llu zosta³oby poprawione\n" -#: ../repair/phase6.c:3363 +#: ../repair/phase6.c:3402 #, c-format msgid "fixing i8count in inode %llu\n" msgstr "poprawiono i8count w i-wê¼le %llu\n" -#: ../repair/phase6.c:3427 ../repair/phase6.c:3431 ../repair/phase7.c:249 +#: ../repair/phase6.c:3458 ../repair/phase6.c:3461 ../repair/phase7.c:83 #, c-format msgid "couldn't map inode %llu, err = %d\n" msgstr "nie uda³o siê odwzorowaæ i-wêz³a %llu, b³±d = %d\n" -#: ../repair/phase6.c:3560 -#, c-format -msgid "re-entering %s into root directory\n" -msgstr "ponowne wprowadzanie %s do g³ównego katalogu\n" - -#: ../repair/phase6.c:3577 -#, c-format -msgid "can't make %s entry in root inode %llu, createname error %d\n" -msgstr "nie mo¿na utworzyæ wpisu %s w g³ównym katalogu %llu, b³±d createname %d\n" - -#: ../repair/phase6.c:3602 +#: ../repair/phase6.c:3582 msgid "recreating root directory .. entry\n" msgstr "ponowne tworzenie wpisu .. g³ównego katalogu\n" -#: ../repair/phase6.c:3625 +#: ../repair/phase6.c:3601 #, c-format msgid "can't make \"..\" entry in root inode %llu, createname error %d\n" msgstr "nie mo¿na utworzyæ wpisu \"..\" w i-wê¼le g³ównego katalogu %llu, b³±d createname %d\n" -#: ../repair/phase6.c:3638 +#: ../repair/phase6.c:3613 msgid "would recreate root directory .. entry\n" msgstr "wpis .. g³ównego katalogu zosta³by ponownie utworzony\n" -#: ../repair/phase6.c:3717 +#: ../repair/phase6.c:3690 #, c-format msgid "would create missing \".\" entry in dir ino %llu\n" msgstr "brakuj±cy wpis \".\" w i-wê¼le katalogu %llu zosta³by utworzony\n" -#: ../repair/phase6.c:3724 +#: ../repair/phase6.c:3696 #, c-format msgid "creating missing \".\" entry in dir ino %llu\n" msgstr "tworzenie brakuj±cego wpisu \".\" w i-wê¼le katalogu %llu\n" -#: ../repair/phase6.c:3749 +#: ../repair/phase6.c:3720 #, c-format msgid "can't make \".\" entry in dir ino %llu, createname error %d\n" msgstr "nie mo¿na utworzyæ wpisu \".\" w i-wê¼le katalogu %llu, b³±d createname %d\n" -#: ../repair/phase6.c:3870 +#: ../repair/phase6.c:3811 +#, c-format +msgid "disconnected dir inode %llu, " +msgstr "od³±czony i-wêze³ katalogu %llu, " + +#: ../repair/phase6.c:3813 +#, c-format +msgid "disconnected inode %llu, " +msgstr "od³±czony i-wêze³ %llu, " + +#: ../repair/phase6.c:3817 +#, c-format +msgid "moving to %s\n" +msgstr "przeniesiono do %s\n" + +#: ../repair/phase6.c:3820 +#, c-format +msgid "would move to %s\n" +msgstr "zosta³by przeniesiony do %s\n" + +#: ../repair/phase6.c:3894 msgid "Phase 6 - check inode connectivity...\n" msgstr "Faza 6 - sprawdzanie ³±czno¶ci i-wêz³ów...\n" -#: ../repair/phase6.c:3889 +#: ../repair/phase6.c:3913 msgid "reinitializing root directory\n" msgstr "ponowne inicjowanie g³ównego katalogu\n" -#: ../repair/phase6.c:3894 +#: ../repair/phase6.c:3918 msgid "would reinitialize root directory\n" msgstr "g³ówny katalog zosta³by ponownie zainicjowany\n" -#: ../repair/phase6.c:3900 +#: ../repair/phase6.c:3924 msgid "reinitializing realtime bitmap inode\n" msgstr "ponowne inicjowanie i-wêz³a bitmapy realtime\n" -#: ../repair/phase6.c:3904 +#: ../repair/phase6.c:3928 msgid "would reinitialize realtime bitmap inode\n" msgstr "i-wêze³ bitmapy realtime zosta³by ponownie zainicjowany\n" -#: ../repair/phase6.c:3910 +#: ../repair/phase6.c:3934 msgid "reinitializing realtime summary inode\n" msgstr "ponowne inicjowanie i-wêz³a opisu realtime\n" -#: ../repair/phase6.c:3914 +#: ../repair/phase6.c:3938 msgid "would reinitialize realtime summary inode\n" msgstr "i-wêze³ opisu realtime zosta³by ponownie zainicjowany\n" -#: ../repair/phase6.c:3920 +#: ../repair/phase6.c:3944 msgid " - resetting contents of realtime bitmap and summary inodes\n" msgstr " - przestawianie zawarto¶ci i-wêz³ów bitmapy i opisu realtime\n" -#: ../repair/phase6.c:3923 ../repair/phase6.c:3928 +#: ../repair/phase6.c:3947 ../repair/phase6.c:3952 msgid "Warning: realtime bitmap may be inconsistent\n" msgstr "Uwaga: bitmapa realtime mo¿e byæ niespójna\n" -#: ../repair/phase6.c:3936 +#: ../repair/phase6.c:3958 +msgid " - traversing filesystem ...\n" +msgstr " - przechodzenie systemu plików...\n" + +#: ../repair/phase6.c:3976 +msgid " - traversal finished ...\n" +msgstr " - przechodzenie zakoñczone...\n" + +#: ../repair/phase6.c:3977 #, c-format -msgid " - ensuring existence of %s directory\n" -msgstr " - zapewnianie istnienia katalogu %s\n" +msgid " - moving disconnected inodes to %s ...\n" +msgstr " - przenoszenie od³±czonych i-wêz³ów do %s...\n" -#: ../repair/phase6.c:3949 -msgid " - traversing filesystem starting at / ... \n" -msgstr " - przechodzenie systemu plików pocz±wszy od / ...\n" +#: ../repair/phase7.c:43 +#, c-format +msgid "resetting inode %llu nlinks from %d to %d\n" +msgstr "przestawiono nlinks i-wêz³a %llu z %d na %d\n" -#: ../repair/phase6.c:3958 -msgid " - traversal finished ... \n" -msgstr " - przechodzenie zakoñczone...\n" +#: ../repair/phase7.c:49 +#, c-format +msgid "nlinks %d will overflow v1 ino, ino %llu will be converted to version 2\n" +msgstr "nlinks %d przepe³ni i-wêze³ v1, i-wêze³ %llu bêdzie skonwertowany do wersji 2\n" -#: ../repair/phase6.c:3963 -msgid " - root inode lost, cannot make new one in no modify mode ... \n" -msgstr " - utracony g³ówny i-wêze³, nie mo¿na utworzyæ nowego w trybie bez modyfikacji...\n" +#: ../repair/phase7.c:55 +#, c-format +msgid "would have reset inode %llu nlinks from %d to %d\n" +msgstr "nlinks i-wêz³a %llu zosta³oby przestawione z %d na %d\n" -#: ../repair/phase6.c:3965 -msgid " - skipping filesystem traversal from / ... \n" -msgstr " - pominiêto przechodzenie systemu plików od / ...\n" +#: ../repair/phase7.c:87 +#, c-format +msgid "couldn't map inode %llu, err = %d, can't compare link counts\n" +msgstr "nie uda³o siê odwzorowaæ i-wêz³a %llu, b³±d %d, nie mo¿na porównaæ liczby dowi±zañ\n" -#: ../repair/phase6.c:3968 -msgid " - traversing all unattached subtrees ... \n" -msgstr " - przechodzenie wszystkich niepod³±czonych poddrzew...\n" +#: ../repair/phase7.c:126 +msgid "Phase 7 - verify and correct link counts...\n" +msgstr "Faza 7 - sprawdzanie i poprawianie liczby dowi±zañ...\n" -#: ../repair/phase6.c:4019 -msgid " - traversals finished ... \n" -msgstr " - przechodzenie zakoñczone...\n" +#: ../repair/phase7.c:128 +msgid "Phase 7 - verify link counts...\n" +msgstr "Faza 7 - sprawdzanie liczby dowi±zañ...\n" -#: ../repair/phase6.c:4024 -msgid " - moving disconnected inodes to lost+found ... \n" -msgstr " - przenoszenie od³±czonych i-wêz³ów do lost+found...\n" +#: ../repair/prefetch.c:460 +msgid "prefetch corruption\n" +msgstr "uszkodzenie prefetch\n" -#: ../repair/phase6.c:4048 +#: ../repair/prefetch.c:617 ../repair/prefetch.c:713 #, c-format -msgid "disconnected dir inode %llu, " -msgstr "od³±czony i-wêze³ katalogu %llu, " +msgid "failed to create prefetch thread: %s\n" +msgstr "nie uda³o siê utworzyæ w±tku prefetch: %s\n" + +#: ../repair/progress.c:16 +msgid "inodes" +msgstr "i-wêz³ów" + +#: ../repair/progress.c:18 +msgid "blocks" +msgstr "bloków" -#: ../repair/phase6.c:4052 +#: ../repair/progress.c:20 +msgid "directories" +msgstr "katalogów" + +#: ../repair/progress.c:22 +msgid "allocation groups" +msgstr "grup alokacji" + +#: ../repair/progress.c:24 +msgid "AGI unlinked buckets" +msgstr "od³±czonych kube³ków AGI" + +#: ../repair/progress.c:26 +msgid "extents" +msgstr "fragmentów" + +#: ../repair/progress.c:28 +msgid "realtime extents" +msgstr "fragmentów realtime" + +#: ../repair/progress.c:30 +msgid "unlinked lists" +msgstr "od³±czonych list" + +#: ../repair/progress.c:37 #, c-format -msgid "disconnected inode %llu, " -msgstr "od³±czony i-wêze³ %llu, " +msgid " - %02d:%02d:%02d: %s - %llu of %llu %s done\n" +msgstr " - %02d:%02d:%02d: %s - sprawdzono %llu z %llu %s\n" -#: ../repair/phase6.c:4055 +#: ../repair/progress.c:39 #, c-format -msgid "moving to %s\n" -msgstr "przeniesiono do %s\n" +msgid " - %02d:%02d:%02d: %s - %llu %s done\n" +msgstr " - %02d:%02d:%02d: %s - sprawdzono %llu %s\n" + +#: ../repair/progress.c:51 +msgid "scanning filesystem freespace" +msgstr "przeszukiwanie wolnego miejsca w systemie plików" + +#: ../repair/progress.c:53 +msgid "scanning agi unlinked lists" +msgstr "przeszukiwanie od³±czonych list agi" + +#: ../repair/progress.c:55 +msgid "check uncertain AG inodes" +msgstr "sprawdzanie niepewnych i-wêz³ów AG" + +#: ../repair/progress.c:57 +msgid "process known inodes and inode discovery" +msgstr "przetwarzanie znanych i-wêz³ów i rozpoznawanie i-wêz³ów" + +#: ../repair/progress.c:59 +msgid "process newly discovered inodes" +msgstr "przetwarzanie nowo rozpoznanych i-wêz³ów" + +#: ../repair/progress.c:61 +msgid "setting up duplicate extent list" +msgstr "tworzenie listy powtórzonych fragmentów" + +#: ../repair/progress.c:63 +msgid "initialize realtime bitmap" +msgstr "inicjowanie bitmapy realtime" + +#: ../repair/progress.c:65 +msgid "reset realtime bitmaps" +msgstr "ponowne tworzenie bitmapy realtime" + +#: ../repair/progress.c:67 +msgid "check for inodes claiming duplicate blocks" +msgstr "szukanie i-wêz³ów odwo³uj±cych siê do powtórzonych bloków" + +#: ../repair/progress.c:69 +msgid "rebuild AG headers and trees" +msgstr "przebudowywanie nag³ówków i drzew AG" + +#: ../repair/progress.c:71 +msgid "traversing filesystem" +msgstr "przechodzenie systemu plików" + +#: ../repair/progress.c:73 +msgid "traversing all unattached subtrees" +msgstr "przechodzenie wszystkich od³±czonych poddrzew" + +#: ../repair/progress.c:75 +msgid "moving disconnected inodes to lost+found" +msgstr "przenoszenie od³±czonych i-wêz³ów do lost+found" + +#: ../repair/progress.c:77 +msgid "verify and correct link counts" +msgstr "sprawdzanie i poprawianie liczby dowi±zañ" + +#: ../repair/progress.c:79 +msgid "verify link counts" +msgstr "sprawdzanie liczby dowi±zañ" + +#: ../repair/progress.c:118 +msgid "cannot malloc pointer to done vector\n" +msgstr "nie uda³o siê przydzieliæ wska¼nika do wektora wykonania\n" + +#: ../repair/progress.c:134 +msgid "unable to create progress report thread\n" +msgstr "nie uda³o siê utworzyæ w±tku raportowania postêpu\n" -#: ../repair/phase6.c:4061 +#: ../repair/progress.c:173 +msgid "progress_rpt: cannot malloc progress msg buffer\n" +msgstr "progress_rpt: nie uda³o siê przydzieliæ bufora komunikatów postêpu\n" + +#: ../repair/progress.c:187 +msgid "progress_rpt: cannot create timer\n" +msgstr "progress_rpt: nie mo¿na utworzyæ zegara\n" + +#: ../repair/progress.c:190 +msgid "progress_rpt: cannot set timer\n" +msgstr "progress_rpt: nie mo¿na ustawiæ zegara\n" + +#: ../repair/progress.c:214 +msgid "progress_rpt: cannot lock progress mutex\n" +msgstr "progress_rpt: nie mo¿na zablokowaæ muteksu\n" + +#: ../repair/progress.c:251 ../repair/progress.c:354 #, c-format -msgid "would move to %s\n" -msgstr "zosta³by przeniesiony do %s\n" +msgid "%s" +msgstr "%s" -#: ../repair/phase7.c:41 +#: ../repair/progress.c:259 #, c-format -msgid "resetting inode %llu nlinks from %d to %d\n" -msgstr "przestawiono nlinks i-wêz³a %llu z %d na %d\n" +msgid "\t- %02d:%02d:%02d: Phase %d: elapsed time %s - processed %d %s per minute\n" +msgstr "\t- %02d:%02d:%02d: Faza %d: miniony czas %s - przetworzono %d %s na minutê\n" -#: ../repair/phase7.c:47 +#: ../repair/progress.c:264 #, c-format -msgid "nlinks %d will overflow v1 ino, ino %llu will be converted to version 2\n" -msgstr "nlinks %d przepe³ni i-wêze³ v1, i-wêze³ %llu bêdzie skonwertowany do wersji 2\n" +msgid "\t- %02d:%02d:%02d: Phase %d: %llu%% done - estimated remaining time %s\n" +msgstr "\t- %02d:%02d:%02d: Faza %d: %llu%% zrobione - przewidywany pozosta³y czas %s\n" + +#: ../repair/progress.c:272 +msgid "progress_rpt: error unlock msg mutex\n" +msgstr "progress_rpt: b³±d odblokowywania muteksu komunikatów\n" + +#: ../repair/progress.c:278 +msgid "cannot delete timer\n" +msgstr "nie mo¿na usun±æ zegara\n" + +#: ../repair/progress.c:292 +msgid "set_progress_msg: cannot lock progress mutex\n" +msgstr "set_progress_msg: nie mo¿na zablokowaæ mutekstu postêpu\n" -#: ../repair/phase7.c:56 +#: ../repair/progress.c:302 +msgid "set_progress_msg: cannot unlock progress mutex\n" +msgstr "set_progress_msg: nie mo¿na odblokowaæ mutekstu postêpu\n" + +#: ../repair/progress.c:322 +msgid "print_final_rpt: cannot lock progress mutex\n" +msgstr "print_final_rpt: nie mo¿na zablokowaæ mutekstu postêpu\n" + +#: ../repair/progress.c:358 +msgid "print_final_rpt: cannot unlock progress mutex\n" +msgstr "print_final_rpt: nie mo¿na odblokowaæ muteksu postêpu\n" + +#: ../repair/progress.c:407 #, c-format -msgid "would have reset inode %llu nlinks from %d to %d\n" -msgstr "nlinks i-wêz³a %llu zosta³oby przestawione z %d na %d\n" +msgid "%02d:%02d:%02d" +msgstr "%02d:%02d:%02d" -#: ../repair/phase7.c:140 ../repair/phase7.c:145 +#: ../repair/progress.c:429 #, c-format -msgid "ino: %llu, bad d_inode magic saw: (0x%x) expecting (0x%x)\n" -msgstr "i-wêze³: %llu, zauwa¿ono b³êdn± liczbê magiczn± d_inode (0x%x)\n" +msgid "%d week" +msgstr "%d tygodni" -#: ../repair/phase7.c:201 -msgid "Phase 7 - verify and correct link counts...\n" -msgstr "Faza 7 - sprawdzanie i poprawianie liczby dowi±zañ...\n" +# XXX: ngettext() +#: ../repair/progress.c:439 +#, c-format +msgid "%d day" +msgstr "%d dni" -#: ../repair/phase7.c:203 -msgid "Phase 7 - verify link counts...\n" -msgstr "Faza 7 - sprawdzanie liczby dowi±zañ...\n" +#: ../repair/progress.c:446 ../repair/progress.c:463 ../repair/progress.c:481 +#: ../repair/progress.c:491 +msgid ", " +msgstr ", " -#: ../repair/phase7.c:253 +#: ../repair/progress.c:455 #, c-format -msgid "couldn't map inode %llu, err = %d, can't compare link counts\n" -msgstr "nie uda³o siê odwzorowaæ i-wêz³a %llu, b³±d %d, nie mo¿na porównaæ liczby dowi±zañ\n" +msgid "%d hour" +msgstr "%d godzin" + +#: ../repair/progress.c:473 +#, c-format +msgid "%d minute" +msgstr "%d minut" + +#: ../repair/progress.c:488 +#, c-format +msgid "%d second" +msgstr "%d sekund" + +#: ../repair/progress.c:509 +#, c-format +msgid "" +"\n" +" XFS_REPAIR Summary %s\n" +msgstr "" +"\n" +" Podsumowanie XFS_REPAIR %s\n" + +#: ../repair/progress.c:511 +msgid "Phase\t\tStart\t\tEnd\t\tDuration\n" +msgstr "Faza\t\tPocz±tek\tKoniec\t\tCzas trwania\n" + +#: ../repair/progress.c:516 ../repair/progress.c:519 +#, c-format +msgid "Phase %d:\tSkipped\n" +msgstr "Faza %d:\tPominiêta\n" + +#: ../repair/progress.c:523 +#, c-format +msgid "Phase %d:\t%02d/%02d %02d:%02d:%02d\t%02d/%02d %02d:%02d:%02d\t%s\n" +msgstr "Faza %d:\t%02d.%02d %02d:%02d:%02d\t%02d.%02d %02d:%02d:%02d\t%s\n" + +#: ../repair/progress.c:529 +#, c-format +msgid "" +"\n" +"Total run time: %s\n" +msgstr "" +"\n" +"Ca³kowity czas trwania: %s\n" #: ../repair/rt.c:47 msgid "couldn't allocate memory for incore realtime bitmap.\n" @@ -8106,165 +8372,175 @@ msgstr "oczekiwano poziomu %d, a uzyskano %d w bloku btbno %d/%d\n" msgid "bno freespace btree block claimed (state %d), agno %d, bno %d, suspect %d\n" msgstr "blok b-drzewa bno wolnego miejsca przypisany (stan %d), agno %d, bno %d, podejrzany %d\n" -#: ../repair/scan.c:552 +#: ../repair/scan.c:554 #, c-format msgid "block (%d,%d) multiply claimed by bno space tree, state - %d\n" msgstr "blok (%d,%d) wielokrotnie przypisany do drzewa bno miejsca, stan - %d\n" -#: ../repair/scan.c:632 +#: ../repair/scan.c:634 #, c-format msgid "bad magic # %#x in btcnt block %d/%d\n" msgstr "b³êdna liczba magiczna %#x w bloku btcbt %d/%d\n" -#: ../repair/scan.c:639 +#: ../repair/scan.c:641 #, c-format msgid "expected level %d got %d in btcnt block %d/%d\n" msgstr "oczekiwano poziomu %d, a uzyskano %d w bloku btcnt %d/%d\n" -#: ../repair/scan.c:659 +#: ../repair/scan.c:661 #, c-format msgid "bcnt freespace btree block claimed (state %d), agno %d, bno %d, suspect %d\n" msgstr "blok b-drzewa bcnt wolnego miejsca przypisany (stan %d), agno %d, bno %d, podejrzany %d\n" -#: ../repair/scan.c:711 +#: ../repair/scan.c:715 #, c-format msgid "block (%d,%d) already used, state %d\n" msgstr "blok (%d,%d) ju¿ u¿ywany, stan %d\n" -#: ../repair/scan.c:803 +#: ../repair/scan.c:807 #, c-format msgid "bad magic # %#x in inobt block %d/%d\n" msgstr "b³êdna liczba magiczna %#x w bloku inobt %d/%d\n" -#: ../repair/scan.c:811 +#: ../repair/scan.c:815 #, c-format msgid "expected level %d got %d in inobt block %d/%d\n" msgstr "oczekiwano poziomu %d, a uzyskano %d w bloku inobt %d/%d\n" -#: ../repair/scan.c:835 +#: ../repair/scan.c:839 #, c-format msgid "inode btree block claimed (state %d), agno %d, bno %d, suspect %d\n" msgstr "blok b-drzewa i-wêz³ów przypisany (stan %d), agno %d, bno %d, podejrzany %d\n" -#: ../repair/scan.c:860 +#: ../repair/scan.c:864 #, c-format msgid "dubious inode btree block header %d/%d\n" msgstr "w±tpliwy nag³ówek bloku b-drzewa i-wêz³ów %d/%d\n" -#: ../repair/scan.c:898 +#: ../repair/scan.c:902 #, c-format msgid "badly aligned inode rec (starting inode = %llu)\n" msgstr "b³êdnie wyrównany rekord i-wêz³a (pocz±tkowy i-wêze³ = %llu)\n" -#: ../repair/scan.c:914 +#: ../repair/scan.c:918 #, c-format msgid "bad starting inode # (%llu (0x%x 0x%x)) in ino rec, skipping rec\n" msgstr "b³êdny numer pocz±tkowego i-wêz³a (%llu (0x%x 0x%x)) w rekordzie i-wêz³a, pominiêto rekord\n" -#: ../repair/scan.c:923 +#: ../repair/scan.c:927 #, c-format msgid "bad ending inode # (%llu (0x%x 0x%x)) in ino rec, skipping rec\n" msgstr "b³êdny numer koñcowego i-wêz³a (%llu (0x%x 0x%x)) w rekordzie i-wêz³a, pominiêto rekord\n" -#: ../repair/scan.c:952 +#: ../repair/scan.c:956 #, c-format msgid "inode chunk claims used block, inobt block - agno %d, bno %d, inopb %d\n" msgstr "czê¶æ i-wêz³a odwo³uje siê do u¿ywanego bloku, blok inobt - agno %d, bno %d, inopb %d\n" -#: ../repair/scan.c:977 +#: ../repair/scan.c:981 #, c-format msgid "inode rec for ino %llu (%d/%d) overlaps existing rec (start %d/%d)\n" msgstr "rekord i-wêz³a dla i-wêz³a %llu (%d/%d) nachodzi na istniej±cy rekord (pocz±tek %d/%d)\n" -#: ../repair/scan.c:1030 +#: ../repair/scan.c:1034 #, c-format msgid "ir_freecount/free mismatch, inode chunk %d/%d, freecount %d nfree %d\n" msgstr "niezgodno¶æ ir_freecount/free, czê¶æ i-wêz³a %d/%d, freecount %d nfree %d\n" -#: ../repair/scan.c:1102 +#: ../repair/scan.c:1106 #, c-format msgid "can't read agfl block for ag %d\n" msgstr "nie mo¿na odczytaæ bloku agfl dla ag %d\n" -#: ../repair/scan.c:1116 +#: ../repair/scan.c:1120 #, c-format msgid "bad agbno %u in agfl, agno %d\n" msgstr "b³êdne agbno %u w agfl, agno %d\n" -#: ../repair/scan.c:1125 +#: ../repair/scan.c:1129 #, c-format msgid "freeblk count %d != flcount %d in ag %d\n" msgstr "liczba freeblk %d != flcount %d w ag %d\n" -#: ../repair/scan.c:1155 +#: ../repair/scan.c:1156 #, c-format msgid "can't get root superblock for ag %d\n" msgstr "nie mo¿na uzyskaæ g³ównego superbloku dla ag %d\n" -#: ../repair/scan.c:1161 +#: ../repair/scan.c:1162 msgid "can't allocate memory for superblock\n" msgstr "nie mo¿na przydzieliæ pamiêci dla superbloku\n" -#: ../repair/scan.c:1171 +#: ../repair/scan.c:1172 #, c-format msgid "can't read agf block for ag %d\n" msgstr "nie mo¿na odczytaæ bloku agf dla ag %d\n" -#: ../repair/scan.c:1182 +#: ../repair/scan.c:1183 #, c-format msgid "can't read agi block for ag %d\n" msgstr "nie mo¿na odczytaæ bloku agi dla ag %d\n" -#: ../repair/scan.c:1206 +#: ../repair/scan.c:1207 #, c-format msgid "reset bad sb for ag %d\n" msgstr "przestawiono b³êdny superbloku dla ag %d\n" -#: ../repair/scan.c:1209 +#: ../repair/scan.c:1210 #, c-format msgid "would reset bad sb for ag %d\n" msgstr "b³êdny superblok dla ag %d zosta³by przestawiony\n" -#: ../repair/scan.c:1214 +#: ../repair/scan.c:1215 #, c-format msgid "reset bad agf for ag %d\n" msgstr "przestawiono b³êdne agf dla ag %d\n" -#: ../repair/scan.c:1217 +#: ../repair/scan.c:1218 #, c-format msgid "would reset bad agf for ag %d\n" msgstr "b³êdne agf dla ag %d zosta³oby przestawione\n" -#: ../repair/scan.c:1222 +#: ../repair/scan.c:1223 #, c-format msgid "reset bad agi for ag %d\n" msgstr "przestawiono b³êdne agi dla ag %d\n" -#: ../repair/scan.c:1225 +#: ../repair/scan.c:1226 #, c-format msgid "would reset bad agi for ag %d\n" msgstr "b³êdna agi dla ag %d zosta³oby przestawione\n" -#: ../repair/scan.c:1235 +#: ../repair/scan.c:1236 #, c-format msgid "bad uncorrected agheader %d, skipping ag...\n" msgstr "b³êdny nie poprawiony agheader %d, pominiêto ag...\n" -#: ../repair/scan.c:1254 +#: ../repair/scan.c:1252 #, c-format msgid "bad agbno %u for btbno root, agno %d\n" msgstr "b³êdne agbno %u dla g³ównego btbno, agno %d\n" -#: ../repair/scan.c:1266 +#: ../repair/scan.c:1264 #, c-format msgid "bad agbno %u for btbcnt root, agno %d\n" msgstr "b³êdne agbno %u dla g³ównego btbcnt, agno %d\n" -#: ../repair/scan.c:1277 +#: ../repair/scan.c:1275 #, c-format msgid "bad agbno %u for inobt root, agno %d\n" msgstr "b³êdne agbno %u dla g³ównego inobt, agno %d\n" +#: ../repair/threads.c:90 +#, c-format +msgid "cannot create worker threads, error = [%d] %s\n" +msgstr "nie mo¿na utworzyæ w±tków pracuj±cych, b³±d: [%d] %s\n" + +#: ../repair/threads.c:108 +#, c-format +msgid "cannot allocate worker item, error = [%d] %s\n" +msgstr "nie mo¿na przydzieliæ elementu pracuj±cego, b³±d: [%d] %s\n" + #: ../repair/versions.c:83 #, c-format msgid "bogus quota flags 0x%x set in superblock" @@ -8430,102 +8706,142 @@ msgstr "" "\tzawiera wyrównane i-wêz³y. System plików zosta³by zdegradowany.\n" "\tTrwale zdegradowa³oby to wydajno¶æ tego systemu plików.\n" -#: ../repair/xfs_repair.c:73 +#: ../repair/xfs_repair.c:87 #, c-format -msgid "Usage: %s [-nLvV] [-o subopt[=value]] [-l logdev] [-r rtdev] devname\n" -msgstr "Sk³adnia: %s [-nLvV] [-o podopcja[=warto¶æ]] [-l urz_loga] [-r urz_rt] urz±dzenie\n" +msgid "" +"Usage: %s [options] device\n" +"\n" +"Options:\n" +" -f The device is a file\n" +" -L Force log zeroing. Do this as a last resort.\n" +" -l logdev Specifies the device where the external log resides.\n" +" -m maxmem Maximum amount of memory to be used in megabytes.\n" +" -n No modify mode, just checks the filesystem for damage.\n" +" -P Disables prefetching.\n" +" -r rtdev Specifies the device where the realtime section resides.\n" +" -v Verbose output.\n" +" -c subopts Change filesystem parameters - use xfs_admin.\n" +" -o subopts Override default behaviour, refer to man page.\n" +" -t interval Reporting interval in minutes.\n" +" -d Repair dangerously.\n" +" -V Reports version and exits.\n" +msgstr "" +"Sk³adnia: %s [opcje] urz±dzenie\n" +"\n" +"Opcje:\n" +" -f Urz±dzenie jest plikiem\n" +" -L Wymuszenie wyzerowania loga. Wykonywaæ tylko w ostateczno¶ci.\n" +" -l urz_loga Okre¶lenie urz±dzenia z zewnêtrznym logiem.\n" +" -m maks_pam Maksymalna ilo¶æ pamiêci do u¿ycia w megabajtach.\n" +" -n Tryb bez modyfikacji, tylko sprawdzenie systemu plików.\n" +" -P Wy³±czenie prefetch.\n" +" -r urz_rt Okre¶lenie urz±dzenia z sekcj± realtime.\n" +" -v Szczegó³owe wyj¶cie.\n" +" -c podopcje Zmiana parametrów systemu plików przy u¿yciu xfs_admina.\n" +" -o podopcje Zmiana domy¶lnego zachowania, wiêcej na stronie manuala.\n" +" -t czas Okres informowania o postêpach w minutach.\n" +" -d Naprawianie w sposób niebezpieczny.\n" +" -V Wypisanie informacji o wersji i zakoñczenie.\n" -#: ../repair/xfs_repair.c:85 +#: ../repair/xfs_repair.c:113 msgid "no error" msgstr "brak b³êdu" -#: ../repair/xfs_repair.c:86 +#: ../repair/xfs_repair.c:114 msgid "bad magic number" msgstr "b³êdna liczba magiczna" -#: ../repair/xfs_repair.c:87 +#: ../repair/xfs_repair.c:115 msgid "bad blocksize field" msgstr "b³êdne pole blocksize" -#: ../repair/xfs_repair.c:88 +#: ../repair/xfs_repair.c:116 msgid "bad blocksize log field" msgstr "b³êdne pole loga blocksize" -#: ../repair/xfs_repair.c:89 -msgid "bad version number" -msgstr "b³êdny numer wersji" +#: ../repair/xfs_repair.c:117 +msgid "bad or unsupported version" +msgstr "b³êdna lub nie obs³ugiwana wersja" -#: ../repair/xfs_repair.c:91 +#: ../repair/xfs_repair.c:119 msgid "filesystem mkfs-in-progress bit set" msgstr "ustawiony bit mkfs-in-progress systemu plików" -#: ../repair/xfs_repair.c:93 +#: ../repair/xfs_repair.c:121 msgid "inconsistent filesystem geometry information" msgstr "niespójne informacje o geometrii systemu plików" -#: ../repair/xfs_repair.c:95 +#: ../repair/xfs_repair.c:123 msgid "bad inode size or inconsistent with number of inodes/block" msgstr "b³êdny rozmiar i-wêz³a lub niespójno¶æ z liczb± i-wêz³ów/blok" -#: ../repair/xfs_repair.c:96 +#: ../repair/xfs_repair.c:124 msgid "bad sector size" msgstr "b³êdny rozmiar sektora" -#: ../repair/xfs_repair.c:98 +#: ../repair/xfs_repair.c:126 msgid "AGF geometry info conflicts with filesystem geometry" msgstr "informacje o geometrii AGF s± w konflikcie z geometri± systemu plików" -#: ../repair/xfs_repair.c:100 +#: ../repair/xfs_repair.c:128 msgid "AGI geometry info conflicts with filesystem geometry" msgstr "informacje o geometrii AGI s± w konflikcie z geometri± systemu plików" -#: ../repair/xfs_repair.c:102 +#: ../repair/xfs_repair.c:130 msgid "AG superblock geometry info conflicts with filesystem geometry" msgstr "informacje o geometrii superbloku AG s± w konflikcie z geometri± systemu plików" -#: ../repair/xfs_repair.c:103 +#: ../repair/xfs_repair.c:131 msgid "attempted to perform I/O beyond EOF" msgstr "próbowano wykonaæ operacjê we/wy poza koñcem pliku" -#: ../repair/xfs_repair.c:105 +#: ../repair/xfs_repair.c:133 msgid "inconsistent filesystem geometry in realtime filesystem component" msgstr "niespójna geometria systemu plików w sk³adniku realtime" -#: ../repair/xfs_repair.c:107 +#: ../repair/xfs_repair.c:135 msgid "maximum indicated percentage of inodes > 100%" msgstr "okre¶lono maksymalny procent i-wêz³ów > 100%" -#: ../repair/xfs_repair.c:109 +#: ../repair/xfs_repair.c:137 msgid "inconsistent inode alignment value" msgstr "niespójna warto¶æ wyrównania i-wêz³a" -#: ../repair/xfs_repair.c:111 +#: ../repair/xfs_repair.c:139 msgid "not enough secondary superblocks with matching geometry" msgstr "za ma³o zapasowych superbloków o pasuj±cej geometrii" -#: ../repair/xfs_repair.c:113 +#: ../repair/xfs_repair.c:141 msgid "bad stripe unit in superblock" msgstr "b³êdna jednostka pasa w superbloku" -#: ../repair/xfs_repair.c:115 +#: ../repair/xfs_repair.c:143 msgid "bad stripe width in superblock" msgstr "b³êdna szeroko¶æ pasa w superbloku" -#: ../repair/xfs_repair.c:117 +#: ../repair/xfs_repair.c:145 msgid "bad shared version number in superblock" msgstr "b³êdny numer wersji wspó³dzielenia w superbloku" -#: ../repair/xfs_repair.c:122 +#: ../repair/xfs_repair.c:150 #, c-format msgid "bad error code - %d\n" msgstr "b³êdny kod b³êdu - %d\n" -#: ../repair/xfs_repair.c:130 +#: ../repair/xfs_repair.c:158 #, c-format msgid "-%c %s option cannot have a value\n" msgstr "opcja -%c %s nie przyjmuje warto¶ci\n" -#: ../repair/xfs_repair.c:295 +#: ../repair/xfs_repair.c:254 +msgid "-o bhash option cannot be used with -m option\n" +msgstr "opcja -o bhash nie mo¿e byæ u¿yta wraz z opcj± -m\n" + +#: ../repair/xfs_repair.c:296 +msgid "-m option cannot be used with -o bhash option\n" +msgstr "opcja -m nie mo¿e byæ u¿yta wraz z opcj± -o bhash\n" + +#: ../repair/xfs_repair.c:350 #, c-format msgid "" "\n" @@ -8534,52 +8850,52 @@ msgstr "" "\n" "b³±d krytyczny - " -#: ../repair/xfs_repair.c:384 +#: ../repair/xfs_repair.c:439 #, c-format msgid "sb root inode value %llu %sinconsistent with calculated value %lu\n" msgstr "warto¶æ i-wêz³a g³ównego superbloku %llu %sniespójna z obliczon± warto¶ci± %lu\n" -#: ../repair/xfs_repair.c:391 +#: ../repair/xfs_repair.c:446 #, c-format msgid "resetting superblock root inode pointer to %lu\n" msgstr "przestawiono wska¼nik i-wêz³a g³ównego superbloku na %lu\n" -#: ../repair/xfs_repair.c:395 +#: ../repair/xfs_repair.c:450 #, c-format msgid "would reset superblock root inode pointer to %lu\n" msgstr "wska¼nik i-wêz³a g³ównego superbloku zosta³by przestawiony na %lu\n" -#: ../repair/xfs_repair.c:407 +#: ../repair/xfs_repair.c:462 #, c-format msgid "sb realtime bitmap inode %llu %sinconsistent with calculated value %lu\n" msgstr "i-wêze³ bitmapy realtime superbloku %llu %sniespójny z obliczon± warto¶ci± %lu\n" -#: ../repair/xfs_repair.c:414 +#: ../repair/xfs_repair.c:469 #, c-format msgid "resetting superblock realtime bitmap ino pointer to %lu\n" msgstr "przestawiono wska¼nik i-wêz³a bitmapy realtime superbloku na %lu\n" -#: ../repair/xfs_repair.c:418 +#: ../repair/xfs_repair.c:473 #, c-format msgid "would reset superblock realtime bitmap ino pointer to %lu\n" msgstr "wska¼nik i-wêz³a bitmapy realtime superbloku zosta³by przestawiony na %lu\n" -#: ../repair/xfs_repair.c:430 +#: ../repair/xfs_repair.c:485 #, c-format msgid "sb realtime summary inode %llu %sinconsistent with calculated value %lu\n" msgstr "i-wêze³ opisu realtime superbloku %llu %sniespójny z obliczon± warto¶ci± %lu\n" -#: ../repair/xfs_repair.c:437 +#: ../repair/xfs_repair.c:492 #, c-format msgid "resetting superblock realtime summary ino pointer to %lu\n" msgstr "przestawiono wska¼nik i-wêz³a opisu realtime superbloku na %lu\n" -#: ../repair/xfs_repair.c:441 +#: ../repair/xfs_repair.c:496 #, c-format msgid "would reset superblock realtime summary ino pointer to %lu\n" msgstr "wska¼nik i-wêz³a opisu realtime superbloku zosta³by przestawiony na %lu\n" -#: ../repair/xfs_repair.c:477 +#: ../repair/xfs_repair.c:544 msgid "" "Primary superblock would have been modified.\n" "Cannot proceed further in no_modify mode.\n" @@ -8589,41 +8905,61 @@ msgstr "" "Nie mo¿na kontynuowaæ w trybie bez modyfikacji.\n" "Zakoñczono.\n" -#: ../repair/xfs_repair.c:493 +#: ../repair/xfs_repair.c:561 #, c-format msgid "%s: cannot repair this filesystem. Sorry.\n" msgstr "%s: niestety nie mo¿na naprawiæ tego systemu plików.\n" -#: ../repair/xfs_repair.c:520 +#: ../repair/xfs_repair.c:585 +#, c-format +msgid " - reporting progress in intervals of %s\n" +msgstr " - informowanie o postêpie w odstêpach %s\n" + +#: ../repair/xfs_repair.c:631 +#, c-format +msgid " - max_mem = %lu, icount = %llu, imem = %llu, dblock = %llu, dmem = %llu\n" +msgstr " - max_mem = %lu, icount = %llu, imem = %llu, dblock = %llu, dmem = %llu\n" + +#: ../repair/xfs_repair.c:644 +#, c-format +msgid "Required memory for repair is greater that the maximum specified with the -m option. Please increase it to at least %lu.\n" +msgstr "Pamiêæ wymagana do naprawy przekracza maksimum okre¶lone opcj± -m. Proszê j± zwiêkszyæ do co najmniej %lu.\n" + +#: ../repair/xfs_repair.c:662 +#, c-format +msgid " - block cache size set to %d entries\n" +msgstr " - rozmiar bufora bloku ustawiony na %d wpisów\n" + +#: ../repair/xfs_repair.c:686 msgid "Found unsupported filesystem features. Exiting now.\n" msgstr "Znaleziono nie obs³ugiwane cechy systemu plików. Zakoñczono.\n" -#: ../repair/xfs_repair.c:543 +#: ../repair/xfs_repair.c:704 #, c-format msgid "No modify flag set, skipping phase 5\n" msgstr "Ustawiono flagê braku modyfikacji, pominiêto fazê 5\n" -#: ../repair/xfs_repair.c:555 +#: ../repair/xfs_repair.c:718 msgid "Inode allocation btrees are too corrupted, skipping phases 6 and 7\n" msgstr "B-drzewa alokacji i-wêz³ów s± zbyt uszkodzone, pominiêto fazy 6 i 7\n" -#: ../repair/xfs_repair.c:561 +#: ../repair/xfs_repair.c:724 msgid "Warning: no quota inodes were found. Quotas disabled.\n" msgstr "Uwaga: nie znaleziono i-wêz³ów limitów (quot). Limity wy³±czone.\n" -#: ../repair/xfs_repair.c:564 +#: ../repair/xfs_repair.c:727 msgid "Warning: no quota inodes were found. Quotas would be disabled.\n" msgstr "Uwaga: nie znaleziono i-wêz³ów limitów (quot). Limity zosta³yby wy³±czone.\n" -#: ../repair/xfs_repair.c:569 +#: ../repair/xfs_repair.c:732 msgid "Warning: quota inodes were cleared. Quotas disabled.\n" msgstr "Uwaga: i-wêz³y limitów (quot) by³y wyczyszczone. Limity wy³±czone.\n" -#: ../repair/xfs_repair.c:572 +#: ../repair/xfs_repair.c:735 msgid "Warning: quota inodes would be cleared. Quotas would be disabled.\n" msgstr "Uwaga: i-wêz³y limitów (quot) zosta³yby wyczyszczone. Limity zosta³yby wy³±czone.\n" -#: ../repair/xfs_repair.c:578 +#: ../repair/xfs_repair.c:741 msgid "" "Warning: user quota information was cleared.\n" "User quotas can not be enforced until limit information is recreated.\n" @@ -8631,7 +8967,7 @@ msgstr "" "Uwaga: informacje o limitach u¿ytkowników by³y wyczyszczone.\n" "Limity u¿ytkowników nie mog± byæ wymuszone do czasu odtworzenia informacji.\n" -#: ../repair/xfs_repair.c:582 +#: ../repair/xfs_repair.c:745 msgid "" "Warning: user quota information would be cleared.\n" "User quotas could not be enforced until limit information was recreated.\n" @@ -8639,7 +8975,7 @@ msgstr "" "Uwaga: informacje o limitach u¿ytkowników zosta³yby wyczyszczone.\n" "Limity u¿ytkowników nie mog³yby byæ wymuszone do czasu odtworzenia informacji.\n" -#: ../repair/xfs_repair.c:590 +#: ../repair/xfs_repair.c:753 msgid "" "Warning: group quota information was cleared.\n" "Group quotas can not be enforced until limit information is recreated.\n" @@ -8647,7 +8983,7 @@ msgstr "" "Uwaga: informacje o limitach grup by³y wyczyszczone.\n" "Limity grup nie mog± byæ wymuszone do czasu odtworzenia informacji.\n" -#: ../repair/xfs_repair.c:594 +#: ../repair/xfs_repair.c:757 msgid "" "Warning: group quota information would be cleared.\n" "Group quotas could not be enforced until limit information was recreated.\n" @@ -8655,7 +8991,7 @@ msgstr "" "Uwaga: informacje o limitach grup zosta³yby wyczyszczone.\n" "Limity grup nie mog³yby byæ wymuszone do czasu odtworzenia informacji.\n" -#: ../repair/xfs_repair.c:602 +#: ../repair/xfs_repair.c:765 msgid "" "Warning: project quota information was cleared.\n" "Project quotas can not be enforced until limit information is recreated.\n" @@ -8663,7 +8999,7 @@ msgstr "" "Uwaga: informacje o limitach projektów by³y wyczyszczone.\n" "Limity projektów nie mog± byæ wymuszone do czasu odtworzenia informacji.\n" -#: ../repair/xfs_repair.c:606 +#: ../repair/xfs_repair.c:769 msgid "" "Warning: project quota information would be cleared.\n" "Project quotas could not be enforced until limit information was recreated.\n" @@ -8671,15 +9007,15 @@ msgstr "" "Uwaga: informacje o limitach projektów zosta³yby wyczyszczone.\n" "Limity projektów nie mog³yby byæ wymuszone do czasu odtworzenia informacji.\n" -#: ../repair/xfs_repair.c:617 +#: ../repair/xfs_repair.c:780 msgid "No modify flag set, skipping filesystem flush and exiting.\n" msgstr "Flaga braku modyfikacji ustawiona, pominiêto zrzucanie systemu plików, zakoñczono.\n" -#: ../repair/xfs_repair.c:641 +#: ../repair/xfs_repair.c:800 msgid "Note - quota info will be regenerated on next quota mount.\n" msgstr "Uwaga - informacje o limitach zostan± ponownie wygenerowane przy nastêpnym montowaniu.\n" -#: ../repair/xfs_repair.c:647 +#: ../repair/xfs_repair.c:806 #, c-format msgid "" "Note - stripe unit (%d) and width (%d) fields have been reset.\n" @@ -8688,7 +9024,7 @@ msgstr "" "Uwaga - pola jednostki pasa (%d) i szeroko¶ci pasa (%d) zosta³y przestawione.\n" "Proszê ustawiæ przy u¿yciu mount -o sunit=,swidth=\n" -#: ../repair/xfs_repair.c:663 +#: ../repair/xfs_repair.c:829 msgid "done\n" msgstr "gotowe\n" -- 1.6.0.5 From arekm@carme.pld-linux.org Mon Dec 15 13:34:49 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.7 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 mBFJYndH000439 for ; Mon, 15 Dec 2008 13:34:49 -0600 X-ASG-Debug-ID: 1229369387-3a7e03770000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from carme.pld-linux.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 83E3D218A8 for ; Mon, 15 Dec 2008 11:29:47 -0800 (PST) Received: from carme.pld-linux.org (carme.pld-linux.org [193.239.45.140]) by cuda.sgi.com with ESMTP id nC495qYyzuEfd8In for ; Mon, 15 Dec 2008 11:29:47 -0800 (PST) Received: from arekm by carme.pld-linux.org with local (Exim 4.69) (envelope-from ) id 1LCJ8U-000HGd-Vm; Mon, 15 Dec 2008 20:29:47 +0100 From: Arkadiusz Miskiewicz To: linux-xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 5/6] xfs_quota: Add missing options to --help. Subject: [PATCH 5/6] xfs_quota: Add missing options to --help. Date: Mon, 15 Dec 2008 20:29:45 +0100 Message-Id: <1229369386-66312-5-git-send-email-arekm@maven.pl> X-Mailer: git-send-email 1.6.0.5 In-Reply-To: <1229369386-66312-4-git-send-email-arekm@maven.pl> References: <1229369386-66312-1-git-send-email-arekm@maven.pl> <1229369386-66312-2-git-send-email-arekm@maven.pl> <1229369386-66312-3-git-send-email-arekm@maven.pl> <1229369386-66312-4-git-send-email-arekm@maven.pl> X-Barracuda-Connect: carme.pld-linux.org[193.239.45.140] X-Barracuda-Start-Time: 1229369388 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.12808 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- --- xfsprogs/quota/report.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/xfsprogs/quota/report.c b/xfsprogs/quota/report.c index 7902dbd..21b4edb 100644 --- a/xfsprogs/quota/report.c +++ b/xfsprogs/quota/report.c @@ -45,7 +45,7 @@ dump_help(void) static void report_help(void) { - report_cmd.args = _("[-bir] [-gpu] [-ahnt] [-f file]"); + report_cmd.args = _("[-bir] [-gpu] [-ahntLNU] [-f file]"); report_cmd.oneline = _("report filesystem quota information"); printf(_( "\n" @@ -61,6 +61,8 @@ report_help(void) " -n -- skip identifier-to-name translations, just report IDs\n" " -N -- suppress the header from the output\n" " -t -- terse output format, hides rows which are all zero\n" +" -L -- lower ID bound to report on\n" +" -U -- upder ID bound to report on\n" " -g -- report group usage and quota information\n" " -p -- report project usage and quota information\n" " -u -- report user usage and quota information\n" -- 1.6.0.5 From arekm@carme.pld-linux.org Mon Dec 15 13:59:33 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.7 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 mBFJxXMK001948 for ; Mon, 15 Dec 2008 13:59:33 -0600 X-ASG-Debug-ID: 1229371172-707c02440000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from carme.pld-linux.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D31EE1733AD0 for ; Mon, 15 Dec 2008 11:59:32 -0800 (PST) Received: from carme.pld-linux.org (carme.pld-linux.org [193.239.45.140]) by cuda.sgi.com with ESMTP id Ag3B2P4ZmD4rUriF for ; Mon, 15 Dec 2008 11:59:32 -0800 (PST) Received: from arekm by carme.pld-linux.org with local (Exim 4.69) (envelope-from ) id 1LCJam-000RR1-F3; Mon, 15 Dec 2008 20:59:00 +0100 From: Arkadiusz Miskiewicz To: linux-xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 1/1] Include ctype.h for tolower(3). Subject: [PATCH 1/1] Include ctype.h for tolower(3). Date: Mon, 15 Dec 2008 20:59:00 +0100 Message-Id: <1229371140-105409-1-git-send-email-arekm@maven.pl> X-Mailer: git-send-email 1.6.0.5 X-Barracuda-Connect: carme.pld-linux.org[193.239.45.140] X-Barracuda-Start-Time: 1229371172 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.12810 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- --- xfsprogs/libxfs/xfs_dir2.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/xfsprogs/libxfs/xfs_dir2.c b/xfsprogs/libxfs/xfs_dir2.c index 71134f8..eab4718 100644 --- a/xfsprogs/libxfs/xfs_dir2.c +++ b/xfsprogs/libxfs/xfs_dir2.c @@ -17,6 +17,7 @@ */ #include +#include struct xfs_name xfs_name_dotdot = {"..", 2}; -- 1.6.0.5 From SRS0+ec4a98e7dda847e12e01+1940+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 15 15:44:41 2008 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 mBFLieno009454 for ; Mon, 15 Dec 2008 15:44:41 -0600 X-ASG-Debug-ID: 1229377479-0cd900840000-w1Z2WR 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 8B6B622A95 for ; Mon, 15 Dec 2008 13:44:39 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id FlQ74EzPCYwID2lD for ; Mon, 15 Dec 2008 13:44:39 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LCLF0-00051J-FX; Mon, 15 Dec 2008 21:44:38 +0000 Date: Mon, 15 Dec 2008 16:44:38 -0500 From: Christoph Hellwig To: Arkadiusz Miskiewicz Cc: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/1] Include ctype.h for tolower(3). Subject: Re: [PATCH 1/1] Include ctype.h for tolower(3). Message-ID: <20081215214438.GA5392@infradead.org> References: <1229371140-105409-1-git-send-email-arekm@maven.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1229371140-105409-1-git-send-email-arekm@maven.pl> 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: 1229377479 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Mon, Dec 15, 2008 at 08:59:00PM +0100, Arkadiusz Miskiewicz wrote: > --- > xfsprogs/libxfs/xfs_dir2.c | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/xfsprogs/libxfs/xfs_dir2.c b/xfsprogs/libxfs/xfs_dir2.c > index 71134f8..eab4718 100644 > --- a/xfsprogs/libxfs/xfs_dir2.c > +++ b/xfsprogs/libxfs/xfs_dir2.c > @@ -17,6 +17,7 @@ > */ > > #include > +#include This file is shared with the kernel, so adding the include here is not a good idea. Can you resubmit it with the include added in include/platform_defs.h.in? From arekm@maven.pl Mon Dec 15 16:05:59 2008 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 mBFM5wqw010786 for ; Mon, 15 Dec 2008 16:05:59 -0600 X-ASG-Debug-ID: 1229378755-605f03350000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from main.carme.maven.pl (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E416E1737EEF for ; Mon, 15 Dec 2008 14:05:56 -0800 (PST) Received: from main.carme.maven.pl (main.carme.maven.pl [193.239.45.138]) by cuda.sgi.com with ESMTP id 8amHRFAc68AB6gsI for ; Mon, 15 Dec 2008 14:05:56 -0800 (PST) Received: from chello089076027073.chello.pl ([89.76.27.73]:3769 helo=maven.pl) by main.carme.maven.pl with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.69) (envelope-from ) id 1LCLZa-000yDW-25; Mon, 15 Dec 2008 23:05:54 +0100 Received: from arekm by maven.pl with local (Exim 4.69) (envelope-from ) id 1LCLZ4-0006sk-5H; Mon, 15 Dec 2008 23:05:23 +0100 From: Arkadiusz Miskiewicz To: Christoph Hellwig X-ASG-Orig-Subj: Re: [PATCH 1/1] Include ctype.h for tolower(3). Subject: Re: [PATCH 1/1] Include ctype.h for tolower(3). Date: Mon, 15 Dec 2008 23:05:21 +0100 User-Agent: PLD Linux KMail/1.9.10 Cc: linux-xfs@oss.sgi.com References: <1229371140-105409-1-git-send-email-arekm@maven.pl> <20081215214438.GA5392@infradead.org> In-Reply-To: <20081215214438.GA5392@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Message-Id: <200812152305.22056.arekm@maven.pl> X-Barracuda-Connect: main.carme.maven.pl[193.239.45.138] X-Barracuda-Start-Time: 1229378756 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.12816 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id mBFM5wqw010786 On Monday 15 of December 2008, Christoph Hellwig wrote: > On Mon, Dec 15, 2008 at 08:59:00PM +0100, Arkadiusz Miskiewicz wrote: > > --- > > xfsprogs/libxfs/xfs_dir2.c | 1 + > > 1 files changed, 1 insertions(+), 0 deletions(-) > > > > diff --git a/xfsprogs/libxfs/xfs_dir2.c b/xfsprogs/libxfs/xfs_dir2.c > > index 71134f8..eab4718 100644 > > --- a/xfsprogs/libxfs/xfs_dir2.c > > +++ b/xfsprogs/libxfs/xfs_dir2.c > > @@ -17,6 +17,7 @@ > > */ > > > > #include > > +#include > > This file is shared with the kernel, so adding the include here is not > a good idea. Can you resubmit it with the include added in > include/platform_defs.h.in? Please ignore this patch then. master already has ctype.h in platform_defs.h.in. -- Arkadiusz MiÅ›kiewicz PLD/Linux Team arekm / maven.pl http://ftp.pld-linux.org/ From david@fromorbit.com Mon Dec 15 16:39:08 2008 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 (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 mBFMd6NB012943 for ; Mon, 15 Dec 2008 16:39:08 -0600 X-ASG-Debug-ID: 1229380743-286d015a0000-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 087D622F9F for ; Mon, 15 Dec 2008 14:39:03 -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 sIiOyL9TXWyWXKDj for ; Mon, 15 Dec 2008 14:39:03 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAL9oRkl5LB1f/2dsb2JhbADNA4J+ X-IronPort-AV: E=Sophos;i="4.36,226,1228051800"; d="scan'208";a="276462841" 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; 16 Dec 2008 09:08:59 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LCM5Z-0007Xc-PD; Tue, 16 Dec 2008 09:38:57 +1100 Date: Tue, 16 Dec 2008 09:38:57 +1100 From: Dave Chinner To: Peter Grandi Cc: Linux XFS , Linux RAID X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Message-ID: <20081215223857.GF32301@disturbed> Mail-Followup-To: Peter Grandi , Linux XFS , Linux RAID References: <1229225480.16555.152.camel@localhost> <18757.4606.966139.10342@tree.ty.sabi.co.uk> <200812141912.59649.Martin@lichtvoll.de> <18757.33373.744917.457587@tree.ty.sabi.co.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <18757.33373.744917.457587@tree.ty.sabi.co.uk> 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: 1229380746 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.12818 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, Dec 14, 2008 at 10:02:05PM +0000, Peter Grandi wrote: > [ ... ] > > > But - as far as I understood - the filesystem doesn't have to > > wait for barriers to complete, but could continue issuing IO > > requests happily. A barrier only means, any request prior to > > that have to land before and any after it after it. > > > It doesn't mean that the barrier has to land immediately and > > the filesystem has to wait for this. At least that always was > > the whole point of barriers for me. If thats not the case I > > misunderstood the purpose of barriers to the maximum extent > > possible. > > Unfortunately that seems the case. > > The purpose of barriers is to guarantee that relevant data is > known to be on persistent storage (kind of hardware 'fsync'). > > In effect write barrier means "tell me when relevant data is on > persistent storage", or less precisely "flush/sync writes now > and tell me when it is done". Properties as to ordering are just > a side effect. No, that is incorrect. Barriers provide strong ordering semantics. I/Os issued before the barrier must be completed before the barrier I/O, and I/Os issued after the barrier write must not be started before the barrier write completes. The elevators are not allowed to re-оrder I/Os around barriers. This is all documented in Documentation/block/barrier.txt. Please read it because most of what you are saying appears to be based on incorrect assumptions about what barriers do. Cheers, Dave. -- Dave Chinner david@fromorbit.com From rick@powerpointseo.com Mon Dec 15 17:03:05 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.5 required=5.0 tests=BAYES_50,RCVD_IN_PSBL, URIBL_WS_SURBL 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 mBFN34Fs014649 for ; Mon, 15 Dec 2008 17:03:05 -0600 X-ASG-Debug-ID: 1229382181-286e02110001-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 A228222996 for ; Mon, 15 Dec 2008 15:03:02 -0800 (PST) Received: from 1-jiiod2uwfk09e ([61.138.185.198]) by cuda.sgi.com with SMTP id AyFetGGDknrEOMcB for ; Mon, 15 Dec 2008 15:03:02 -0800 (PST) From: "Rick Garrison" To: "Linux-xfs" X-ASG-Orig-Subj: Web Site Positioning Subject: Web Site Positioning Date: Mon, 15 Dec 2008 15:03:04 -0800 Reply-To: "Rick Garrison" Message-ID: <55304538.20081215150304@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: 1229382183 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0962 1.0000 -1.4156 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.50 X-Barracuda-Spam-Status: No, SCORE=-0.50 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.12819 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 mBFN34Fs014649 Now, more than ever, it's going to be important to get your site more visible to your targeted customers. We'd like to help. Email us today at rick@powerpointseo.com and we'll give a complimentary site review. Let us show you how simple it can be to increase your bottom line. Don't forget to respond with your URL(s) and how you wish to be reached. Sincerely, Rick Garrison PowerPoint SEO From arekm@carme.pld-linux.org Mon Dec 15 17:28:12 2008 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 mBFNSBxO016430 for ; Mon, 15 Dec 2008 17:28:12 -0600 X-ASG-Debug-ID: 1229383689-4d2c01a40000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from carme.pld-linux.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 32CED23137 for ; Mon, 15 Dec 2008 15:28:09 -0800 (PST) Received: from carme.pld-linux.org (carme.pld-linux.org [193.239.45.140]) by cuda.sgi.com with ESMTP id GmvIdOtuRasv3dbs for ; Mon, 15 Dec 2008 15:28:09 -0800 (PST) Received: from arekm by carme.pld-linux.org with local (Exim 4.69) (envelope-from ) id 1LCMqf-000Bxc-Ky; Tue, 16 Dec 2008 00:27:37 +0100 From: Arkadiusz Miskiewicz To: linux-xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH] xfs_quota: Warn if specified non-zero quota will be round down to zero. Subject: [PATCH] xfs_quota: Warn if specified non-zero quota will be round down to zero. Date: Tue, 16 Dec 2008 00:27:37 +0100 Message-Id: <1229383657-45951-1-git-send-email-arekm@maven.pl> X-Mailer: git-send-email 1.6.0.5 X-Barracuda-Connect: carme.pld-linux.org[193.239.45.140] X-Barracuda-Start-Time: 1229383690 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.12821 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- User specified quota limit is internally converted to "basic blocks" unit (512 bytes in size). Quota value will be silently converted to zero when user enters any value lower than 512 bytes. Warn in such case: : # ./xfs_quota -x -c "limit -u bsoft=431 12000" /home : xfs_quota: Warning: `431' in quota blocks is 0 (unlimited). --- xfsprogs/po/pl.po | 5 +++++ xfsprogs/quota/edit.c | 2 ++ 2 files changed, 7 insertions(+), 0 deletions(-) diff --git a/xfsprogs/po/pl.po b/xfsprogs/po/pl.po index b4e1d76..d13184b 100644 --- a/xfsprogs/po/pl.po +++ b/xfsprogs/po/pl.po @@ -3670,6 +3670,11 @@ msgstr "%s: nieprawid msgid "%s: invalid project name: %s\n" msgstr "%s: nieprawid³owa nazwa projektu: %s\n" +#: ../quota/edit.c:237 +#, c-format +msgid "%s: Warning: `%s' in quota blocks is 0 (unlimited).\n" +msgstr "%s: Uwaga: `%s' w blokach quoty oznacza 0 (nieograniczone).\n" + #: ../quota/edit.c:318 #, c-format msgid "%s: unrecognised argument %s\n" diff --git a/xfsprogs/quota/edit.c b/xfsprogs/quota/edit.c index 15c72c4..ce7f7e9 100644 --- a/xfsprogs/quota/edit.c +++ b/xfsprogs/quota/edit.c @@ -233,6 +233,8 @@ extractb( s = string + length + 1; v = (__uint64_t)cvtnum(blocksize, sectorsize, s); *value = v >> 9; /* syscalls use basic blocks */ + if (v > 0 && *value == 0) + fprintf(stderr, _("%s: Warning: `%s' in quota blocks is 0 (unlimited).\n"), progname, s); return 1; } return 0; -- 1.6.0.5 From sandeen@sandeen.net Mon Dec 15 19:27:30 2008 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 mBG1RUbN024851 for ; Mon, 15 Dec 2008 19:27:30 -0600 X-ASG-Debug-ID: 1229390847-50eb02910000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F23DB173949D for ; Mon, 15 Dec 2008 17:27:27 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id cKnoSyyWfy8Mx80G for ; Mon, 15 Dec 2008 17:27:27 -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 sandeen.net (Postfix) with ESMTP id A7681FD2B25; Mon, 15 Dec 2008 19:27:26 -0600 (CST) Message-ID: <494703FC.7080203@sandeen.net> Date: Mon, 15 Dec 2008 19:27:24 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Arkadiusz Miskiewicz CC: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfs_quota: Warn if specified non-zero quota will be round down to zero. Subject: Re: [PATCH] xfs_quota: Warn if specified non-zero quota will be round down to zero. References: <1229383657-45951-1-git-send-email-arekm@maven.pl> In-Reply-To: <1229383657-45951-1-git-send-email-arekm@maven.pl> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1229390848 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.12827 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Arkadiusz Miskiewicz wrote: > User specified quota limit is internally converted to "basic blocks" > unit (512 bytes in size). Quota value will be silently converted > to zero when user enters any value lower than 512 bytes. > > Warn in such case: > > : # ./xfs_quota -x -c "limit -u bsoft=431 12000" /home > : xfs_quota: Warning: `431' in quota blocks is 0 (unlimited). Looks good to me. -Eric > --- > xfsprogs/po/pl.po | 5 +++++ > xfsprogs/quota/edit.c | 2 ++ > 2 files changed, 7 insertions(+), 0 deletions(-) > > diff --git a/xfsprogs/po/pl.po b/xfsprogs/po/pl.po > index b4e1d76..d13184b 100644 > --- a/xfsprogs/po/pl.po > +++ b/xfsprogs/po/pl.po > @@ -3670,6 +3670,11 @@ msgstr "%s: nieprawid > msgid "%s: invalid project name: %s\n" > msgstr "%s: nieprawid³owa nazwa projektu: %s\n" > > +#: ../quota/edit.c:237 > +#, c-format > +msgid "%s: Warning: `%s' in quota blocks is 0 (unlimited).\n" > +msgstr "%s: Uwaga: `%s' w blokach quoty oznacza 0 (nieograniczone).\n" > + > #: ../quota/edit.c:318 > #, c-format > msgid "%s: unrecognised argument %s\n" > diff --git a/xfsprogs/quota/edit.c b/xfsprogs/quota/edit.c > index 15c72c4..ce7f7e9 100644 > --- a/xfsprogs/quota/edit.c > +++ b/xfsprogs/quota/edit.c > @@ -233,6 +233,8 @@ extractb( > s = string + length + 1; > v = (__uint64_t)cvtnum(blocksize, sectorsize, s); > *value = v >> 9; /* syscalls use basic blocks */ > + if (v > 0 && *value == 0) > + fprintf(stderr, _("%s: Warning: `%s' in quota blocks is 0 (unlimited).\n"), progname, s); > return 1; > } > return 0; > > > ------------------------------------------------------------------------ > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From sandeen@sandeen.net Mon Dec 15 21:55:54 2008 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 mBG3tsZb001695 for ; Mon, 15 Dec 2008 21:55:54 -0600 X-ASG-Debug-ID: 1229399751-1d47030a0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6E1F623D00 for ; Mon, 15 Dec 2008 19:55:52 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id Xcl7lJkTZ3XDb9cg for ; Mon, 15 Dec 2008 19:55: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 sandeen.net (Postfix) with ESMTP id 69404A9C9C3; Mon, 15 Dec 2008 21:55:51 -0600 (CST) Message-ID: <494726C7.4000809@sandeen.net> Date: Mon, 15 Dec 2008 21:55:51 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Arkadiusz Miskiewicz CC: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 5/6] xfs_quota: Add missing options to --help. Subject: Re: [PATCH 5/6] xfs_quota: Add missing options to --help. References: <1229369386-66312-1-git-send-email-arekm@maven.pl> <1229369386-66312-2-git-send-email-arekm@maven.pl> <1229369386-66312-3-git-send-email-arekm@maven.pl> <1229369386-66312-4-git-send-email-arekm@maven.pl> <1229369386-66312-5-git-send-email-arekm@maven.pl> In-Reply-To: <1229369386-66312-5-git-send-email-arekm@maven.pl> 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: 1229399753 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.12837 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Arkadiusz Miskiewicz wrote: > --- > xfsprogs/quota/report.c | 4 +++- > 1 files changed, 3 insertions(+), 1 deletions(-) Looks fine to me. -Eric > diff --git a/xfsprogs/quota/report.c b/xfsprogs/quota/report.c > index 7902dbd..21b4edb 100644 > --- a/xfsprogs/quota/report.c > +++ b/xfsprogs/quota/report.c > @@ -45,7 +45,7 @@ dump_help(void) > static void > report_help(void) > { > - report_cmd.args = _("[-bir] [-gpu] [-ahnt] [-f file]"); > + report_cmd.args = _("[-bir] [-gpu] [-ahntLNU] [-f file]"); > report_cmd.oneline = _("report filesystem quota information"); > printf(_( > "\n" > @@ -61,6 +61,8 @@ report_help(void) > " -n -- skip identifier-to-name translations, just report IDs\n" > " -N -- suppress the header from the output\n" > " -t -- terse output format, hides rows which are all zero\n" > +" -L -- lower ID bound to report on\n" > +" -U -- upder ID bound to report on\n" > " -g -- report group usage and quota information\n" > " -p -- report project usage and quota information\n" > " -u -- report user usage and quota information\n" From sandeen@sandeen.net Mon Dec 15 22:04:06 2008 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_81 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 mBG446Pu002308 for ; Mon, 15 Dec 2008 22:04:06 -0600 X-ASG-Debug-ID: 1229400245-1d4703510000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A3F2A23C46 for ; Mon, 15 Dec 2008 20:04:05 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id TpDgj8PXfrNSodlZ for ; Mon, 15 Dec 2008 20:04:05 -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 sandeen.net (Postfix) with ESMTP id 61E68FD2B2A; Mon, 15 Dec 2008 22:03:33 -0600 (CST) Message-ID: <49472895.2050601@sandeen.net> Date: Mon, 15 Dec 2008 22:03:33 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Arkadiusz Miskiewicz CC: linux-xfs@oss.sgi.com, Nathan Scott X-ASG-Orig-Subj: Re: [PATCH 6/6] xfs_quota: Fix range for -U. Subject: Re: [PATCH 6/6] xfs_quota: Fix range for -U. References: <1229369386-66312-1-git-send-email-arekm@maven.pl> <1229369386-66312-2-git-send-email-arekm@maven.pl> <1229369386-66312-3-git-send-email-arekm@maven.pl> <1229369386-66312-4-git-send-email-arekm@maven.pl> <1229369386-66312-5-git-send-email-arekm@maven.pl> <1229369386-66312-6-git-send-email-arekm@maven.pl> In-Reply-To: <1229369386-66312-6-git-send-email-arekm@maven.pl> 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: 1229400245 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.12837 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Arkadiusz Miskiewicz wrote: > xfs_quota report "-L" option specifies lower range of requested IDs. > "-U" specifies upper range but "-L" is closed range while "-U" is open > range. > > Make "-U" closed range, too which is something more expected. This seems like a good idea, although it changes behavior, and any scripts that depended on this behavior will now get a different result. Nathan, any thoughts? I think you put this in originally :) -Eric > --- > xfsprogs/quota/report.c | 8 ++++---- > 1 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/xfsprogs/quota/report.c b/xfsprogs/quota/report.c > index 21b4edb..2184158 100644 > --- a/xfsprogs/quota/report.c > +++ b/xfsprogs/quota/report.c > @@ -124,7 +124,7 @@ dump_limits_any_type( > } > > if (upper) { > - for (id = lower; id < upper; id++) > + for (id = lower; id <= upper; id++) > dump_file(fp, id, type, mount->fs_name); > return; > } > @@ -398,7 +398,7 @@ report_user_mount( > uint id; > > if (upper) { /* identifier range specified */ > - for (id = lower; id < upper; id++) { > + for (id = lower; id <= upper; id++) { > snprintf(n, sizeof(n)-1, "#%u", id); > if (report_mount(fp, id, n, > form, XFS_USER_QUOTA, mount, flags)) > @@ -436,7 +436,7 @@ report_group_mount( > uint id; > > if (upper) { /* identifier range specified */ > - for (id = lower; id < upper; id++) { > + for (id = lower; id <= upper; id++) { > snprintf(n, sizeof(n)-1, "#%u", id); > if (report_mount(fp, id, n, > form, XFS_GROUP_QUOTA, mount, flags)) > @@ -473,7 +473,7 @@ report_project_mount( > uint id; > > if (upper) { /* identifier range specified */ > - for (id = lower; id < upper; id++) { > + for (id = lower; id <= upper; id++) { > snprintf(n, sizeof(n)-1, "#%u", id); > if (report_mount(fp, id, n, > form, XFS_PROJ_QUOTA, mount, flags)) From sandeen@sandeen.net Mon Dec 15 22:46:53 2008 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 mBG4krJ9004895 for ; Mon, 15 Dec 2008 22:46:53 -0600 X-ASG-Debug-ID: 1229402811-166e00a50000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 90AB31739ABF for ; Mon, 15 Dec 2008 20:46:51 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id QqH9Cfvnf60dpeQb for ; Mon, 15 Dec 2008 20:46:51 -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 sandeen.net (Postfix) with ESMTP id 9A961A84813; Mon, 15 Dec 2008 22:46:51 -0600 (CST) Message-ID: <494732BB.1070905@sandeen.net> Date: Mon, 15 Dec 2008 22:46:51 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Arkadiusz Miskiewicz CC: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 4/6] xfs_quota: Return non zero exit status in error conditions. Subject: Re: [PATCH 4/6] xfs_quota: Return non zero exit status in error conditions. References: <1229369386-66312-1-git-send-email-arekm@maven.pl> <1229369386-66312-2-git-send-email-arekm@maven.pl> <1229369386-66312-3-git-send-email-arekm@maven.pl> <1229369386-66312-4-git-send-email-arekm@maven.pl> In-Reply-To: <1229369386-66312-4-git-send-email-arekm@maven.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1229402812 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.12839 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Arkadiusz Miskiewicz wrote: > Patch by Arkadiusz MiÅ›kiewicz . > --- > xfsprogs/quota/edit.c | 45 ++++++++++++++++++++++++++++++--------------- > xfsprogs/quota/free.c | 5 +++++ > xfsprogs/quota/project.c | 29 ++++++++++++++++++++++------- > xfsprogs/quota/quota.c | 4 ++++ > xfsprogs/quota/report.c | 1 + > xfsprogs/quota/state.c | 4 ++++ > xfsprogs/quota/util.c | 2 ++ > 7 files changed, 68 insertions(+), 22 deletions(-) > Seems good; I should probably eyeball in xxdiff when I get to my bigger screen :) The xfstests "quota" group passes fine for me with this and the others in place. I also test-built this & the other patches on all core fedora platforms (x86, x86_64, ppc, ppc64) with no problems. -Eric From lachlan@sgi.com Mon Dec 15 22:59:15 2008 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 (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBG4xFsG005960 for ; Mon, 15 Dec 2008 22:59:15 -0600 Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by relay1.corp.sgi.com (Postfix) with ESMTP id 948B28F806D; Mon, 15 Dec 2008 20:59:08 -0800 (PST) Message-ID: <494735D9.8020809@sgi.com> Date: Tue, 16 Dec 2008 16:00:09 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com Organization: SGI User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: Eric Sandeen CC: xfs-oss Subject: Re: [PATCH] fix corruption case for block size < page size References: <49435F35.40109@sandeen.net> <4943FCD7.2010509@sandeen.net> In-Reply-To: <4943FCD7.2010509@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Eric Sandeen wrote: > Eric Sandeen wrote: >> On a 4k page system and 512-byte blocksize, this: >> >> xfs_io \ >> -c "pwrite -S 0x11 -b 4096 0 4096" \ >> -c "mmap -r 0 512" -c "mread 0 512" -c "munmap" \ >> -c "truncate 256" \ >> -c "truncate 513" \ >> -c "pwrite -S 0x22 -b 512 2048 512" \ >> -t -d -f testfile > > Not to keep belaboring the point, but if anyone reviews this here's a > bit more info. > > If I blktrace the testcase it looks like this: > > 8,16 0 1 0.000000000 4222 C W 166979666 + 8 [0] 4k wr > 8,16 0 2 0.000367043 4222 C R 166979666 + 8 [0] 4k map rd > 8,16 0 3 0.002923548 4222 C N (35 00 ..) [0] > 8,16 0 4 0.003108924 4222 C W 200708307 + 9 [0] Log?(trunc) > 8,16 0 5 0.020357902 4222 C N (35 00 ..) [0] > 8,16 0 6 0.020361434 4222 C W 200708307 + 9 [0] Log?(trunc) > 8,16 0 7 0.020745509 4222 C W 166979666 + 1 [0] 512 wr @0 > 8,16 0 8 0.020940005 4222 C W 166979667 + 1 [0] 512 wr @1 > 8,16 0 9 0.021172749 4222 C W 166979670 + 1 [0] 512 wr @4 > > and a detailed look at the data on disk is this: > > 00000000 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 Block 0(OK) > * > 00000100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 0... > * > 00000200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Block 1(OK) > * > 00000400 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 Block 2(BAD) > * > 00000600 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 Block 3(BAD) > * > 00000800 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 Block 4(OK) > * > 00000a00 > > And the bmap information is this: > > EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL > 0: [0..4]: 56..60 0 (56..60) 5 > > So the bad data in blocks 2 and 3 were never rewritten; the buffer heads > probably were fine (containing 0's, but I should check) and we simply > re-mapped blocks 2 and 3 back into existence, along with their stale > data, it seems. > > So I think this was just a bad mapping decision, and not a buffer head > state/zeroing problem...? I'm still working through this Eric so I don't fully understand what's going on. It looks to me like the region was never zeroed at all. In xfs_zero_last_block() we only zero up to the end of the last block (hence the name) but if the last page extends beyond that last block we wont zero that extra space in the page. If that remaining space in the page sits over a hole then xfs_zero_eof() wont zero it either. In your example above the last write extends the file size from 513 bytes to 2048 bytes. In xfs_zero_last_block() we'll only zero from 513 up to 1024 bytes (ie up to the end of the last block) but leave the rest of the page untouched. Because of the truncate to 256 bytes only the first block is allocated and everything beyond 512 bytes is a hole. More specifically there is a hole under the remainder of the page so xfs_zero_eof() will skip that region and not zero anything. > > -Eric > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From sandeen@sandeen.net Mon Dec 15 23:01:12 2008 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 mBG51Crm006207 for ; Mon, 15 Dec 2008 23:01:12 -0600 X-ASG-Debug-ID: 1229403670-166001160000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7BD951739AF4 for ; Mon, 15 Dec 2008 21:01:11 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id xuOHbYTbw3WASDhU for ; Mon, 15 Dec 2008 21:01:11 -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 sandeen.net (Postfix) with ESMTP id BFC08AAC743 for ; Mon, 15 Dec 2008 23:01:10 -0600 (CST) Message-ID: <49473616.1020307@sandeen.net> Date: Mon, 15 Dec 2008 23:01:10 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: xfstests tests not in the auto group; do we know why? Subject: xfstests tests not in the auto group; do we know why? 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: 1229403671 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.28 X-Barracuda-Spam-Status: No, SCORE=1.28 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_VPILL X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.12840 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 3.30 SUBJECT_FUZZY_VPILL Attempt to obfuscate words in Subject: Of the tests that are not in the auto group, do we know why they are not? 022: # Test out a level 0 dump/restore to a tape of a subdir 023: # To test xfsdump/restore to tape using a directory with 024: # Test out incremental dumps 025: # Test dump/restore using -m option (min strategy) 036: # Test xfsdump/restore minrmt to a remote IRIX tape 037: # Test xfsdump/restore minrmt to a remote linux tape 038: # Test xfsdump/restore to a remote linux tape 039: # Test xfsdump/restore to a remote IRIX tape 043: # Test out xfsdump/restore but rmv inventory prior to restore. 055: # Test xfsdump/restore to a remote IRIX tape using RMT user 059: # place holder for IRIX 059 test for xfsdump/xfsrestore multi streams 060: # place holder for IRIX 060 test for xfsdump/xfsrestore multi streams 064: # test multilevel dump and restores with hardlinks 071: # Exercise IO at large file offsets. 080: # rwtest (iogen|doio) 085: # To test log replay by shutdown of file system 086: # To test log replay with version 2 logs 087: # like 086 but want to create more/different kinds of metadata 098: # simple attr tests for EAs: 101: # This tests mkfs_udf with -s [SIZE] option. 102: # This tests mkfs_udf/mkudffs and the device detection code 104: # XFS online growfs-while-allocating tests (data subvol variant) 106: # Exercise basic xfs_quota functionality (user/group/project quota) 107: # Project quota. 108: # Simple quota accounting test for direct/buffered/mmap IO. 109: # ENOSPC deadlock case from Asano Masahiro. 110: # Incorrect dir2 freetab warning case from Masanori Tsuda. 111: # Infinite xfs_bulkstat bad-inode loop case from Roger Willcocks. 113: # aio-stress 114: # Test some parent ptr stuff 115: # Test out xfs_repair_ipaths 116: # Test out resetting of sb_qflags when mounting with no quotas after having mounted with quotas. 118: # To test out pv#940675 crash in xfs_trans_brelse + quotas 119: # Leaking reservation space in the GRH 133: # Concurrent I/O to same file to ensure no deadlocks 136: # Test the attr2 code udf tests are probably not auto out of principle? :) 071 fails/hangs on some platforms IIRC 104 hangs ... "parent" requires code not committed(?) "tape" group requires... tape so not auto? # auto - tests to be run as part of nightly qa I'm not sure what that means; is this group always supposed to pass? If so there are filestreams tests that don't, for example. Maybe "tests that don't hang?" I wonder if it'd be worth documenting this a bit, and have a group which should always run & pass on the core architectures. (and for those that don't pass, do a bit of documentation on why they don't?) -Eric From sandeen@sandeen.net Mon Dec 15 23:40:48 2008 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 mBG5elP9008712 for ; Mon, 15 Dec 2008 23:40:48 -0600 X-ASG-Debug-ID: 1229406045-0ce6028d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2DDFF1739D88 for ; Mon, 15 Dec 2008 21:40:45 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id hF8NEHhdFTTeO0AH for ; Mon, 15 Dec 2008 21:40:45 -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 sandeen.net (Postfix) with ESMTP id 2EEEEFD2B22; Mon, 15 Dec 2008 23:40:45 -0600 (CST) Message-ID: <49473F5C.3070308@sandeen.net> Date: Mon, 15 Dec 2008 23:40:44 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: lachlan@sgi.com CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] fix corruption case for block size < page size Subject: Re: [PATCH] fix corruption case for block size < page size References: <49435F35.40109@sandeen.net> <4943FCD7.2010509@sandeen.net> <494735D9.8020809@sgi.com> In-Reply-To: <494735D9.8020809@sgi.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: 1229406046 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.12842 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Lachlan McIlroy wrote: > I'm still working through this Eric so I don't fully understand what's > going on. > > It looks to me like the region was never zeroed at all. In > xfs_zero_last_block() we only zero up to the end of the last block > (hence the name) but if the last page extends beyond that last > block we wont zero that extra space in the page. If that remaining > space in the page sits over a hole then xfs_zero_eof() wont zero it > either. So the testcase steps are (8 blocks per page here). 1: |1111|1111|1111|1111|1111|1111|1111|1111| write 1's 2: |RRRR|1111|1111|1111|1111|1111|1111|1111| mapread first block |<--------trunc----------------------- 3: |1100| trunc down to 1/2 block trunc-->| 4: |1100| trunc up to block+1byte 5: | | | | |2222| write 2's (extending) And we get: # |1100|0000|1111|1111|2222|----|----|----| But we should get: # |1100|HHHH|HHHH|HHHH|2222|----|----|----| (where "H" means hole) So no, the data for blocks 1,2,3 is never zeroed, nor should it be, I think - we never partially write those blocks. And the stale 1's coming through in blocks 2 & 3 are not the result of non-zero buffer heads getting written to disk in the last stage; they are simply stale disk blocks from the first step mapped back into the file. (They were originally written as 1's in the first step.) > In your example above the last write extends the file size from 513 > bytes to 2048 bytes. In xfs_zero_last_block() we'll only zero from > 513 up to 1024 bytes (ie up to the end of the last block) but leave > the rest of the page untouched. Actually; after the truncate down step (3) we should have: |<--------trunc----------------------- 3: |11??| trunc down to 1/2 block ^ | EOF Hm, but does the end of this block get zeroed now or only when we subsequently extend the size? The latter I think...? So I think in the next step: trunc-->| 4: |1100| trunc up to block+1byte ^^ now || this part of the block gets zeroed, right, by xfs_zero_eof? > Because of the truncate to 256 bytes > only the first block is allocated and everything beyond 512 bytes is > a hole. Yep, up until the last write anyway. > More specifically there is a hole under the remainder of the > page so xfs_zero_eof() will skip that region and not zero anything. Well, the last write (step 5) is still completely within the page... Right, that's what it *should* be doing; but in page_state_convert (and I'll admit to not having this 100% nailed down) we write block 1 and map blocks 2 & 3 back into the file, and get: # |1100|0000|1111|1111|2222|----|----|----| ^^^^ ^^^^ where these |||| |||| blocks are stale data, and block 1 is written (but at least zeroed). How block 1 got zeroed I guess I'm not quite certain yet. But it does not appear that blocks 2 and 3 get *written* any time other than step 1; blktrace seems to confirm this. block 1 does get written, and 0s are written. (But I don't think this block ever should get written either; EOF landed there but only via truncate, not a write). Crap, now you've got me slightly confused again, and I'll need to look a bit more to be sure I'm 100% clear on what's getting zeroed and when vs. what's getting mapped and why. :) -Eric From lachlan@sgi.com Tue Dec 16 00:04:48 2008 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 mBG64mI6012422 for ; Tue, 16 Dec 2008 00:04:48 -0600 Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by relay2.corp.sgi.com (Postfix) with ESMTP id 7753E304097; Mon, 15 Dec 2008 22:04:34 -0800 (PST) Message-ID: <49474530.2080809@sgi.com> Date: Tue, 16 Dec 2008 17:05:36 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com Organization: SGI User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: Eric Sandeen CC: xfs-oss Subject: Re: [PATCH] fix corruption case for block size < page size References: <49435F35.40109@sandeen.net> <4943FCD7.2010509@sandeen.net> <494735D9.8020809@sgi.com> <49473F5C.3070308@sandeen.net> In-Reply-To: <49473F5C.3070308@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Eric Sandeen wrote: > Lachlan McIlroy wrote: >> I'm still working through this Eric so I don't fully understand what's >> going on. >> >> It looks to me like the region was never zeroed at all. In >> xfs_zero_last_block() we only zero up to the end of the last block >> (hence the name) but if the last page extends beyond that last >> block we wont zero that extra space in the page. If that remaining >> space in the page sits over a hole then xfs_zero_eof() wont zero it >> either. > > So the testcase steps are (8 blocks per page here). > > 1: |1111|1111|1111|1111|1111|1111|1111|1111| write 1's > > 2: |RRRR|1111|1111|1111|1111|1111|1111|1111| mapread first block > > |<--------trunc----------------------- > 3: |1100| trunc down to 1/2 block > > trunc-->| > 4: |1100| trunc up to block+1byte > > 5: | | | | |2222| write 2's (extending) > > And we get: > > # |1100|0000|1111|1111|2222|----|----|----| > > But we should get: > > # |1100|HHHH|HHHH|HHHH|2222|----|----|----| > > (where "H" means hole) > > So no, the data for blocks 1,2,3 is never zeroed, nor should it be, I > think - we never partially write those blocks. And the stale 1's coming > through in blocks 2 & 3 are not the result of non-zero buffer heads > getting written to disk in the last stage; they are simply stale disk > blocks from the first step mapped back into the file. (They were > originally written as 1's in the first step.) Okay, it's making sense now. I've actually fixed this same problem on IRIX and our CXFS clients on solaris, osx and windows but in all those cases when a page is dirty the whole page is dirty so needs to be zeroed. With the individual states of the buffer heads we can remap parts of pages that now cover holes. > >> In your example above the last write extends the file size from 513 >> bytes to 2048 bytes. In xfs_zero_last_block() we'll only zero from >> 513 up to 1024 bytes (ie up to the end of the last block) but leave >> the rest of the page untouched. > > Actually; after the truncate down step (3) we should have: > > |<--------trunc----------------------- > 3: |11??| trunc down to 1/2 block > ^ > | > EOF > > Hm, but does the end of this block get zeroed now or only when we > subsequently extend the size? The latter I think...? Only when extending the file size. > > So I think in the next step: > > trunc-->| > 4: |1100| trunc up to block+1byte > ^^ > now || this part of the block gets zeroed, right, by xfs_zero_eof? Yes (by xfs_zero_last_block()). > >> Because of the truncate to 256 bytes >> only the first block is allocated and everything beyond 512 bytes is >> a hole. > > Yep, up until the last write anyway. > >> More specifically there is a hole under the remainder of the >> page so xfs_zero_eof() will skip that region and not zero anything. > > Well, the last write (step 5) is still completely within the page... > > Right, that's what it *should* be doing; but in page_state_convert (and > I'll admit to not having this 100% nailed down) we write block 1 and map > blocks 2 & 3 back into the file, and get: > > # |1100|0000|1111|1111|2222|----|----|----| > ^^^^ ^^^^ > where these |||| |||| blocks are stale data, and block 1 is written > (but at least zeroed). How block 1 got zeroed I guess I'm not quite I think block 1 got zeroed during the last write because the file size was extended from 513 to 2048. Byte 513 is just inside block 1. But that block should have been a hole and xfs_zero_last_block() should have skipped it. > certain yet. But it does not appear that blocks 2 and 3 get *written* > any time other than step 1; blktrace seems to confirm this. block 1 > does get written, and 0s are written. (But I don't think this block > ever should get written either; EOF landed there but only via truncate, > not a write). Agree. > > Crap, now you've got me slightly confused again, and I'll need to look a > bit more to be sure I'm 100% clear on what's getting zeroed and when vs. > what's getting mapped and why. :) That makes two. Something else to consider is that there may be allocated blocks entirely beyond eof due to speculative allocation. This means that just because a block within a page is beyond eof does not mean it covers a hole. This is why xfs_zero_eof() looks for blocks to zero between the old eof and the new eof. From sandeen@sandeen.net Tue Dec 16 00:11:27 2008 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 mBG6BQlk013622 for ; Tue, 16 Dec 2008 00:11:27 -0600 X-ASG-Debug-ID: 1229407885-166d02be0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8FC55173A227 for ; Mon, 15 Dec 2008 22:11:25 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id PxImdrTKBDoT3tAz for ; Mon, 15 Dec 2008 22:11:25 -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 sandeen.net (Postfix) with ESMTP id C96E3FD2B29; Tue, 16 Dec 2008 00:10:53 -0600 (CST) Message-ID: <4947466D.7000705@sandeen.net> Date: Tue, 16 Dec 2008 00:10:53 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: lachlan@sgi.com CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] fix corruption case for block size < page size Subject: Re: [PATCH] fix corruption case for block size < page size References: <49435F35.40109@sandeen.net> <4943FCD7.2010509@sandeen.net> <494735D9.8020809@sgi.com> <49473F5C.3070308@sandeen.net> <49474530.2080809@sgi.com> In-Reply-To: <49474530.2080809@sgi.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: 1229407885 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.12843 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Lachlan McIlroy wrote: > Eric Sandeen wrote: >> Actually; after the truncate down step (3) we should have: >> >> |<--------trunc----------------------- >> 3: |11??| trunc down to 1/2 block >> ^ >> | >> EOF >> >> Hm, but does the end of this block get zeroed now or only when we >> subsequently extend the size? The latter I think...? > Only when extending the file size. Right. >> So I think in the next step: >> >> trunc-->| >> 4: |1100| trunc up to block+1byte >> ^^ >> now || this part of the block gets zeroed, right, by xfs_zero_eof? > Yes (by xfs_zero_last_block()). Right. :) But I *think* that after this step we are actually zeroing into block 1 (2nd block) and causing it to get zeroed/mapped. Off by one maybe? >>> Because of the truncate to 256 bytes >>> only the first block is allocated and everything beyond 512 bytes is >>> a hole. >> Yep, up until the last write anyway. >> >>> More specifically there is a hole under the remainder of the >>> page so xfs_zero_eof() will skip that region and not zero anything. >> Well, the last write (step 5) is still completely within the page... >> >> Right, that's what it *should* be doing; but in page_state_convert (and >> I'll admit to not having this 100% nailed down) we write block 1 and map >> blocks 2 & 3 back into the file, and get: >> >> # |1100|0000|1111|1111|2222|----|----|----| >> ^^^^ ^^^^ >> where these |||| |||| blocks are stale data, and block 1 is written >> (but at least zeroed). How block 1 got zeroed I guess I'm not quite > I think block 1 got zeroed during the last write because the file size > was extended from 513 to 2048. Byte 513 is just inside block 1. But > that block should have been a hole and xfs_zero_last_block() should > have skipped it. I think the 2nd extending write does skip it but from a bit more looking the first extending truncate might step into it by one... still looking into that. >> certain yet. But it does not appear that blocks 2 and 3 get *written* >> any time other than step 1; blktrace seems to confirm this. block 1 >> does get written, and 0s are written. (But I don't think this block >> ever should get written either; EOF landed there but only via truncate, >> not a write). > Agree. > >> Crap, now you've got me slightly confused again, and I'll need to look a >> bit more to be sure I'm 100% clear on what's getting zeroed and when vs. >> what's getting mapped and why. :) > That makes two. :) > Something else to consider is that there may be allocated blocks > entirely beyond eof due to speculative allocation. This means that just > because a block within a page is beyond eof does not mean it covers a > hole. This is why xfs_zero_eof() looks for blocks to zero between the > old eof and the new eof. true... yeah, my test may yet be a bit naiive. -Eric From sandeen@sandeen.net Tue Dec 16 00:21:48 2008 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 mBG6LmRg014750 for ; Tue, 16 Dec 2008 00:21:48 -0600 X-ASG-Debug-ID: 1229408506-10e5034f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E9B79173A28A for ; Mon, 15 Dec 2008 22:21:46 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id LLQSAfd4yvXMSNuI for ; Mon, 15 Dec 2008 22:21:46 -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 sandeen.net (Postfix) with ESMTP id 592E2A883C6; Tue, 16 Dec 2008 00:21:46 -0600 (CST) Message-ID: <494748FA.20404@sandeen.net> Date: Tue, 16 Dec 2008 00:21:46 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: lachlan@sgi.com CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] fix corruption case for block size < page size Subject: Re: [PATCH] fix corruption case for block size < page size References: <49435F35.40109@sandeen.net> <4943FCD7.2010509@sandeen.net> <494735D9.8020809@sgi.com> <49473F5C.3070308@sandeen.net> <49474530.2080809@sgi.com> <4947466D.7000705@sandeen.net> In-Reply-To: <4947466D.7000705@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: 1229408506 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.12845 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Eric Sandeen wrote: > Lachlan McIlroy wrote: >> Eric Sandeen wrote: >>> Actually; after the truncate down step (3) we should have: >>> >>> |<--------trunc----------------------- >>> 3: |11??| trunc down to 1/2 block >>> ^ >>> | >>> EOF >>> >>> Hm, but does the end of this block get zeroed now or only when we >>> subsequently extend the size? The latter I think...? >> Only when extending the file size. > > Right. > >>> So I think in the next step: >>> >>> trunc-->| >>> 4: |1100| trunc up to block+1byte >>> ^^ >>> now || this part of the block gets zeroed, right, by xfs_zero_eof? >> Yes (by xfs_zero_last_block()). > > Right. :) But I *think* that after this step we are actually zeroing > into block 1 (2nd block) and causing it to get zeroed/mapped. Off by > one maybe? > >>>> Because of the truncate to 256 bytes >>>> only the first block is allocated and everything beyond 512 bytes is >>>> a hole. >>> Yep, up until the last write anyway. >>> >>>> More specifically there is a hole under the remainder of the >>>> page so xfs_zero_eof() will skip that region and not zero anything. >>> Well, the last write (step 5) is still completely within the page... >>> >>> Right, that's what it *should* be doing; but in page_state_convert (and >>> I'll admit to not having this 100% nailed down) we write block 1 and map >>> blocks 2 & 3 back into the file, and get: >>> >>> # |1100|0000|1111|1111|2222|----|----|----| >>> ^^^^ ^^^^ >>> where these |||| |||| blocks are stale data, and block 1 is written >>> (but at least zeroed). How block 1 got zeroed I guess I'm not quite >> I think block 1 got zeroed during the last write because the file size >> was extended from 513 to 2048. Byte 513 is just inside block 1. But >> that block should have been a hole and xfs_zero_last_block() should >> have skipped it. > > I think the 2nd extending write does skip it but from a bit more looking > the first extending truncate might step into it by one... still looking > into that. Gah; or not. what is going on here... Doing just steps 1, 2, 3, 4 (ending on the extending truncate): # xfs_io -c "pwrite -S 0x11 -b 4096 0 4096" -c "mmap -r 0 512" -c "mread 0 512" -c "munmap" -c "truncate 256" -c "truncate 514" -t -d -f /mnt/scratch/testfile # xfs_bmap -v /mnt/scratch/testfile /mnt/scratch/testfile: EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL 0: [0..0]: 63..63 0 (63..63) 1 1: [1..1]: hole 1 It looks like what I expect, at this point. But then: # sync # xfs_bmap -v /mnt/scratch/testfile /mnt/scratch/testfile: EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL 0: [0..1]: 63..64 0 (63..64) 2 Um, why'd that last block get mapped in? mmap vs. direct IO I'm guessing... w/o the mmap read this does not happen. -Eric (heading to bed now...) From sandeen@sandeen.net Tue Dec 16 00:51:19 2008 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 mBG6pIJb016812 for ; Tue, 16 Dec 2008 00:51:19 -0600 X-ASG-Debug-ID: 1229410277-12bb005e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D3D5D173A30D for ; Mon, 15 Dec 2008 22:51:17 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id Q75xOdg57WzKWM7D for ; Mon, 15 Dec 2008 22:51: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 sandeen.net (Postfix) with ESMTP id 237D4AABFC2; Tue, 16 Dec 2008 00:51:17 -0600 (CST) Message-ID: <49474FE4.2030500@sandeen.net> Date: Tue, 16 Dec 2008 00:51:16 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: lachlan@sgi.com CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] fix corruption case for block size < page size Subject: Re: [PATCH] fix corruption case for block size < page size References: <49435F35.40109@sandeen.net> <4943FCD7.2010509@sandeen.net> <494735D9.8020809@sgi.com> <49473F5C.3070308@sandeen.net> <49474530.2080809@sgi.com> <4947466D.7000705@sandeen.net> <494748FA.20404@sandeen.net> In-Reply-To: <494748FA.20404@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: 1229410277 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.12847 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Eric Sandeen wrote: > Gah; or not. what is going on here... Doing just steps 1, 2, 3, 4 > (ending on the extending truncate): > > # xfs_io -c "pwrite -S 0x11 -b 4096 0 4096" -c "mmap -r 0 512" -c "mread > 0 512" -c "munmap" -c "truncate 256" -c "truncate 514" -t -d -f > /mnt/scratch/testfile > > # xfs_bmap -v /mnt/scratch/testfile > /mnt/scratch/testfile: > EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL > 0: [0..0]: 63..63 0 (63..63) 1 > 1: [1..1]: hole 1 > > It looks like what I expect, at this point. But then: > > # sync > # xfs_bmap -v /mnt/scratch/testfile > /mnt/scratch/testfile: > EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL > 0: [0..1]: 63..64 0 (63..64) 2 > > Um, why'd that last block get mapped in? mmap vs. direct IO I'm > guessing... w/o the mmap read this does not happen. Replying to myself twice? I really need to go to bed. So this all does seem to come back to page_state_convert. Both the extending write in the original case and the sync above find their way there; but esp. in the sync test above, why do we have *any* work to do? With a little instrumentation I see that for the truncate out; sync test above we get to xfs_vm_writepage() for a page which is *not* dirty, and yet we call page_state_convert on it and map in that 2nd block... Is that right!? I guess it is; ->write_cache_pages() clears dirty before calling writepage. Still why would this page be found dirty on this path. Bah. Bedtime. -Eric From arekm@carme.pld-linux.org Tue Dec 16 01:53:12 2008 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 mBG7rC6Q022690 for ; Tue, 16 Dec 2008 01:53:12 -0600 X-ASG-Debug-ID: 1229413989-3e7800ac0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from carme.pld-linux.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 26EE9173A68C for ; Mon, 15 Dec 2008 23:53:09 -0800 (PST) Received: from carme.pld-linux.org (carme.pld-linux.org [193.239.45.140]) by cuda.sgi.com with ESMTP id 6ESXeKPFPzRFE0gn for ; Mon, 15 Dec 2008 23:53:09 -0800 (PST) Received: from arekm by carme.pld-linux.org with local (Exim 4.69) (envelope-from ) id 1LCUjs-000tCT-L5; Tue, 16 Dec 2008 08:53:08 +0100 From: Arkadiusz Miskiewicz To: linux-xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH] xfs_quota: Don't ignore every error when asking for quota. Subject: [PATCH] xfs_quota: Don't ignore every error when asking for quota. Date: Tue, 16 Dec 2008 08:53:08 +0100 Message-Id: <1229413988-212167-1-git-send-email-arekm@maven.pl> X-Mailer: git-send-email 1.6.0.5 X-Barracuda-Connect: carme.pld-linux.org[193.239.45.140] X-Barracuda-Start-Time: 1229413991 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.12851 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Errors from quotactl() were silently ignored like: $ xfs_quota -x -c "report -u -L 12000 -U 12001" $ Print error messages for conditions other than ENOENT and ENOSYS (these two aren't actually errors for the way quotactl is used). We now get: $ ./xfs_quota -x -c "report -u -L 12000 -U 12001" /home XFS_GETQUOTA: Operation not permitted XFS_GETQUOTA: Operation not permitted $ which is consistent with error reporting in rest of quotactl using code. --- xfsprogs/quota/report.c | 28 ++++++++++++++++++++-------- 1 files changed, 20 insertions(+), 8 deletions(-) diff --git a/xfsprogs/quota/report.c b/xfsprogs/quota/report.c index 2184158..73248d0 100644 --- a/xfsprogs/quota/report.c +++ b/xfsprogs/quota/report.c @@ -81,8 +81,11 @@ dump_file( { fs_disk_quota_t d; - if (xfsquotactl(XFS_GETQUOTA, dev, type, id, (void *)&d) < 0) + if (xfsquotactl(XFS_GETQUOTA, dev, type, id, (void *)&d) < 0) { + if (errno != ENOENT && errno != ENOSYS) + perror("XFS_GETQUOTA"); return; + } if (!d.d_blk_softlimit && !d.d_blk_hardlimit && !d.d_ino_softlimit && !d.d_ino_hardlimit && !d.d_rtb_softlimit && !d.d_rtb_hardlimit) @@ -298,8 +301,11 @@ report_mount( uint qflags; int count; - if (xfsquotactl(XFS_GETQUOTA, dev, type, id, (void *)&d) < 0) + if (xfsquotactl(XFS_GETQUOTA, dev, type, id, (void *)&d) < 0) { + if (errno != ENOENT && errno != ENOSYS) + perror("XFS_GETQUOTA"); return 0; + } if (flags & TERSE_FLAG) { count = 0; @@ -514,8 +520,10 @@ report_any_type( if (type & XFS_USER_QUOTA) { fs_cursor_initialise(dir, FS_MOUNT_POINT, &cursor); while ((mount = fs_cursor_next_entry(&cursor))) { - xfsquotactl(XFS_QSYNC, mount->fs_name, - XFS_USER_QUOTA, 0, NULL); + if (xfsquotactl(XFS_QSYNC, mount->fs_name, + XFS_USER_QUOTA, 0, NULL) < 0 + && errno != ENOENT && errno != ENOSYS) + perror("XFS_QSYNC user quota"); report_user_mount(fp, form, mount, lower, upper, flags); } @@ -523,8 +531,10 @@ report_any_type( if (type & XFS_GROUP_QUOTA) { fs_cursor_initialise(dir, FS_MOUNT_POINT, &cursor); while ((mount = fs_cursor_next_entry(&cursor))) { - xfsquotactl(XFS_QSYNC, mount->fs_name, - XFS_GROUP_QUOTA, 0, NULL); + if (xfsquotactl(XFS_QSYNC, mount->fs_name, + XFS_GROUP_QUOTA, 0, NULL) < 0 + && errno != ENOENT && errno != ENOSYS) + perror("XFS_QSYNC group quota"); report_group_mount(fp, form, mount, lower, upper, flags); } @@ -532,8 +542,10 @@ report_any_type( if (type & XFS_PROJ_QUOTA) { fs_cursor_initialise(dir, FS_MOUNT_POINT, &cursor); while ((mount = fs_cursor_next_entry(&cursor))) { - xfsquotactl(XFS_QSYNC, mount->fs_name, - XFS_PROJ_QUOTA, 0, NULL); + if (xfsquotactl(XFS_QSYNC, mount->fs_name, + XFS_PROJ_QUOTA, 0, NULL) < 0 + && errno != ENOENT && errno != ENOSYS) + perror("XFS_QSYNC proj quota"); report_project_mount(fp, form, mount, lower, upper, flags); } -- 1.6.0.5 From lachlan@sgi.com Tue Dec 16 01:53:18 2008 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_42 autolearn=no version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBG7rIKe022711 for ; Tue, 16 Dec 2008 01:53:18 -0600 Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by relay1.corp.sgi.com (Postfix) with ESMTP id 2CFA68F806B; Mon, 15 Dec 2008 23:53:12 -0800 (PST) Message-ID: <49475EA6.6030302@sgi.com> Date: Tue, 16 Dec 2008 18:54:14 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com Organization: SGI User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: Eric Sandeen CC: xfs-oss Subject: Re: [PATCH] fix corruption case for block size < page size References: <49435F35.40109@sandeen.net> <4943FCD7.2010509@sandeen.net> <494735D9.8020809@sgi.com> <49473F5C.3070308@sandeen.net> <49474530.2080809@sgi.com> <4947466D.7000705@sandeen.net> In-Reply-To: <4947466D.7000705@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Eric Sandeen wrote: > Lachlan McIlroy wrote: >> Eric Sandeen wrote: >>> Actually; after the truncate down step (3) we should have: >>> >>> |<--------trunc----------------------- >>> 3: |11??| trunc down to 1/2 block >>> ^ >>> | >>> EOF >>> >>> Hm, but does the end of this block get zeroed now or only when we >>> subsequently extend the size? The latter I think...? >> Only when extending the file size. > > Right. > >>> So I think in the next step: >>> >>> trunc-->| >>> 4: |1100| trunc up to block+1byte >>> ^^ >>> now || this part of the block gets zeroed, right, by xfs_zero_eof? >> Yes (by xfs_zero_last_block()). > > Right. :) But I *think* that after this step we are actually zeroing > into block 1 (2nd block) and causing it to get zeroed/mapped. Off by > one maybe? I assumed that the zeroing would stop at the new file size. This bit of code in xfs_zero_eof() should ensure that: if ((zero_off + zero_len) > offset) zero_len = offset - zero_off; The truncate down eventually calls truncate_inode_pages_range() which will zero the remainder of a page beyond eof. This could be how block 1 is becoming dirty. If I remember correctly there are checks in fsx to ensure that when mmaping a file with a file size that is not page aligned that the space in the last page beyond eof is all zeroes (a POSIX requirement I think but only holds true on initial mapping since the area can be modified by a user). This has to be done somewhere and may well be in the truncate down. > >>>> Because of the truncate to 256 bytes >>>> only the first block is allocated and everything beyond 512 bytes is >>>> a hole. >>> Yep, up until the last write anyway. >>> >>>> More specifically there is a hole under the remainder of the >>>> page so xfs_zero_eof() will skip that region and not zero anything. >>> Well, the last write (step 5) is still completely within the page... >>> >>> Right, that's what it *should* be doing; but in page_state_convert (and >>> I'll admit to not having this 100% nailed down) we write block 1 and map >>> blocks 2 & 3 back into the file, and get: >>> >>> # |1100|0000|1111|1111|2222|----|----|----| >>> ^^^^ ^^^^ >>> where these |||| |||| blocks are stale data, and block 1 is written >>> (but at least zeroed). How block 1 got zeroed I guess I'm not quite >> I think block 1 got zeroed during the last write because the file size >> was extended from 513 to 2048. Byte 513 is just inside block 1. But >> that block should have been a hole and xfs_zero_last_block() should >> have skipped it. > > I think the 2nd extending write does skip it but from a bit more looking > the first extending truncate might step into it by one... still looking > into that. Yes, true since the new file size (513 bytes) is not fsb aligned then the first byte in block 1 needs to be zeroed. But this will only happen if block 1 is allocated. If it's a hole or an unwritten extent then it will be skipped. > >>> certain yet. But it does not appear that blocks 2 and 3 get *written* >>> any time other than step 1; blktrace seems to confirm this. block 1 >>> does get written, and 0s are written. (But I don't think this block >>> ever should get written either; EOF landed there but only via truncate, >>> not a write). >> Agree. >> >>> Crap, now you've got me slightly confused again, and I'll need to look a >>> bit more to be sure I'm 100% clear on what's getting zeroed and when vs. >>> what's getting mapped and why. :) >> That makes two. > > :) > >> Something else to consider is that there may be allocated blocks >> entirely beyond eof due to speculative allocation. This means that just >> because a block within a page is beyond eof does not mean it covers a >> hole. This is why xfs_zero_eof() looks for blocks to zero between the >> old eof and the new eof. > > true... yeah, my test may yet be a bit naiive. I used this command to trigger the problem: fsx -r 512 -w 512 -W -Z -p 1000 file It mixes direct I/O with a mmap'ed reads. 1000 mapread 0x3800 thru 0x609c (0x289d bytes) 2000 mapread 0x7600 thru 0x16d0e (0xf70f bytes) READ BAD DATA: offset = 0x9a00, size = 0xa600, fname = file OFFSET GOOD BAD RANGE 0x aa00 0x0000 0x43fb 0x 0 operation# (mod 256) for the bad data may be 67 ... 2126(78 mod 256): SKIPPED (no operation) 2127(79 mod 256): TRUNCATE UP from 0xc580 to 0x26629 2128(80 mod 256): WRITE 0x2bc00 thru 0x35fff (0xa400 bytes) HOLE 2129(81 mod 256): TRUNCATE DOWN from 0x36000 to 0x231be 2130(82 mod 256): MAPREAD 0x9e00 thru 0xd6f6 (0x38f7 bytes) ***RRRR*** 2131(83 mod 256): READ 0x9a00 thru 0x13fff (0xa600 bytes) ***RRRR*** Correct content saved for comparison (maybe hexdump "file" vs "file.fsxgood") At operation 2130 the data at offset 0xaa00 is okay but on the next operation the data at that offset is now bad. Your patch stops this failure but frankly I don't know why. Zeroing to the end of the page in xfs_zero_last_block() also prevents the failure but now I'm not so sure that makes sense. The '-f' option to fsx (if you're using the fsx from the XFSQA suite) is supposed to flush and invalidate pages after write operations and force them to be read in from disk. This is very handy to find bugs in the read path that would otherwise be disguised by the page cache. But it looks like msync(MS_INVALIDATE) doesn't work anymore - I'm not seeing any reads, weird. From Martin@lichtvoll.de Tue Dec 16 03:39:11 2008 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 mBG9dAFs031844 for ; Tue, 16 Dec 2008 03:39:11 -0600 X-ASG-Debug-ID: 1229420348-43be00cb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.lichtvoll.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 74C8C24537; Tue, 16 Dec 2008 01:39:08 -0800 (PST) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id kreH4v6YfAoaOyjP; Tue, 16 Dec 2008 01:39:08 -0800 (PST) Received: from shambala.of.teamix.net (blackhole.teamix.net [194.150.191.251]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 349655AEB1; Tue, 16 Dec 2008 10:39:05 +0100 (CET) From: Martin Steigerwald To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Date: Tue, 16 Dec 2008 10:39:07 +0100 User-Agent: KMail/1.9.9 Cc: Dave Chinner , Peter Grandi , Linux RAID , Linux XFS References: <18757.33373.744917.457587@tree.ty.sabi.co.uk> <20081215223857.GF32301@disturbed> (sfid-20081216_091051_242821_0787460D) In-Reply-To: <20081215223857.GF32301@disturbed> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Message-Id: <200812161039.07700.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1229420349 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.12856 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id mBG9dAFs031844 Am Montag 15 Dezember 2008 schrieb Dave Chinner: > On Sun, Dec 14, 2008 at 10:02:05PM +0000, Peter Grandi wrote: > > [ ... ] > > > > > But - as far as I understood - the filesystem doesn't have to > > > wait for barriers to complete, but could continue issuing IO > > > requests happily. A barrier only means, any request prior to > > > that have to land before and any after it after it. > > > > > > It doesn't mean that the barrier has to land immediately and > > > the filesystem has to wait for this. At least that always was > > > the whole point of barriers for me. If thats not the case I > > > misunderstood the purpose of barriers to the maximum extent > > > possible. > > > > Unfortunately that seems the case. > > > > The purpose of barriers is to guarantee that relevant data is > > known to be on persistent storage (kind of hardware 'fsync'). > > > > In effect write barrier means "tell me when relevant data is on > > persistent storage", or less precisely "flush/sync writes now > > and tell me when it is done". Properties as to ordering are just > > a side effect. > > No, that is incorrect. > > Barriers provide strong ordering semantics. I/Os issued before the > barrier must be completed before the barrier I/O, and I/Os issued > after the barrier write must not be started before the barrier write > completes. The elevators are not allowed to re-оrder I/Os around > barriers. > > This is all documented in Documentation/block/barrier.txt. Please > read it because most of what you are saying appears to be based on > incorrect assumptions about what barriers do. Hmmm, so I am not completely off track it seems ;-). What I still do not understand then is: How can write barriers + write cache be slower than no write barriers + no cache? I still would expect write barriers + write cache be in between no barriers + write cache and no barriers + no cache performance wise. And would see anything else as a regression basically. This doesn't go into my brain yet and I thought I understood Documentation/block/barrier.txt well enough before writing my article. Ciao, -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From Martin@lichtvoll.de Tue Dec 16 03:39:11 2008 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=unavailable 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 mBG9dANW031843 for ; Tue, 16 Dec 2008 03:39:11 -0600 X-ASG-Debug-ID: 1229420348-43be00cb0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.lichtvoll.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 74C8C24537; Tue, 16 Dec 2008 01:39:08 -0800 (PST) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id kreH4v6YfAoaOyjP; Tue, 16 Dec 2008 01:39:08 -0800 (PST) Received: from shambala.of.teamix.net (blackhole.teamix.net [194.150.191.251]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 349655AEB1; Tue, 16 Dec 2008 10:39:05 +0100 (CET) From: Martin Steigerwald To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Date: Tue, 16 Dec 2008 10:39:07 +0100 User-Agent: KMail/1.9.9 Cc: Dave Chinner , Peter Grandi , Linux RAID , Linux XFS References: <18757.33373.744917.457587@tree.ty.sabi.co.uk> <20081215223857.GF32301@disturbed> (sfid-20081216_091051_242821_0787460D) In-Reply-To: <20081215223857.GF32301@disturbed> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Message-Id: <200812161039.07700.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1229420349 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.12856 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id mBG9dANW031843 Am Montag 15 Dezember 2008 schrieb Dave Chinner: > On Sun, Dec 14, 2008 at 10:02:05PM +0000, Peter Grandi wrote: > > [ ... ] > > > > > But - as far as I understood - the filesystem doesn't have to > > > wait for barriers to complete, but could continue issuing IO > > > requests happily. A barrier only means, any request prior to > > > that have to land before and any after it after it. > > > > > > It doesn't mean that the barrier has to land immediately and > > > the filesystem has to wait for this. At least that always was > > > the whole point of barriers for me. If thats not the case I > > > misunderstood the purpose of barriers to the maximum extent > > > possible. > > > > Unfortunately that seems the case. > > > > The purpose of barriers is to guarantee that relevant data is > > known to be on persistent storage (kind of hardware 'fsync'). > > > > In effect write barrier means "tell me when relevant data is on > > persistent storage", or less precisely "flush/sync writes now > > and tell me when it is done". Properties as to ordering are just > > a side effect. > > No, that is incorrect. > > Barriers provide strong ordering semantics. I/Os issued before the > barrier must be completed before the barrier I/O, and I/Os issued > after the barrier write must not be started before the barrier write > completes. The elevators are not allowed to re-оrder I/Os around > barriers. > > This is all documented in Documentation/block/barrier.txt. Please > read it because most of what you are saying appears to be based on > incorrect assumptions about what barriers do. Hmmm, so I am not completely off track it seems ;-). What I still do not understand then is: How can write barriers + write cache be slower than no write barriers + no cache? I still would expect write barriers + write cache be in between no barriers + write cache and no barriers + no cache performance wise. And would see anything else as a regression basically. This doesn't go into my brain yet and I thought I understood Documentation/block/barrier.txt well enough before writing my article. Ciao, -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From pg_mh@sabi.co.UK Tue Dec 16 04:03:06 2008 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 mBGA35iH000955 for ; Tue, 16 Dec 2008 04:03:06 -0600 X-ASG-Debug-ID: 1229421782-467a002e0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ty.sabi.co.UK (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B2B57173AE9C for ; Tue, 16 Dec 2008 02:03:02 -0800 (PST) Received: from ty.sabi.co.UK ([192.100.78.57]) by cuda.sgi.com with ESMTP id E0VYutjBFb8yOPTN for ; Tue, 16 Dec 2008 02:03:02 -0800 (PST) Received: from from [127.0.0.1] (helo=tree.ty.sabi.co.uk) by ty.sabi.co.UK with esmtp(Exim 4.68 #1) id 1LCMGQ-0001ry-4C for ; Mon, 15 Dec 2008 22:50:10 +0000 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <18758.57121.570007.816329@tree.ty.sabi.co.uk> Date: Mon, 15 Dec 2008 22:50:09 +0000 X-Face: SMJE]JPYVBO-9UR%/8d'mG.F!@.,l@c[f'[%S8'BZIcbQc3/">GrXDwb#;fTRGNmHr^JFb SAptvwWc,0+z+~p~"Gdr4H$(|N(yF(wwCM2bW0~U?HPEE^fkPGx^u[*[yV.gyB!hDOli}EF[\cW*S H&spRGFL}{`bj1TaD^l/"[ msn( /TH#THs{Hpj>)]f> X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] In-Reply-To: <200812151948.59870.Martin@lichtvoll.de> References: <200812141912.59649.Martin@lichtvoll.de> <18757.33373.744917.457587@tree.ty.sabi.co.uk> <200812151948.59870.Martin@lichtvoll.de> X-Mailer: VM 7.17 under 21.5 (beta28) XEmacs Lucid From: pg_xf2@xf2.for.sabi.co.UK (Peter Grandi) X-Disclaimer: This message contains only personal opinions X-Barracuda-Connect: UNKNOWN[192.100.78.57] X-Barracuda-Start-Time: 1229421783 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0034 1.0000 -1.9991 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.80 X-Barracuda-Spam-Status: No, SCORE=-1.80 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA085, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.12858 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.10 BSF_SC0_SA085 Custom Rule SA085 [ ... ] >> The purpose of barriers is to guarantee that relevant data is >> known to be on persistent storage (kind of hardware 'fsync'). >> In effect write barrier means "tell me when relevant data is >> on persistent storage", or less precisely "flush/sync writes >> now and tell me when it is done". Properties as to ordering >> are just a side effect. > [ ... ] Unfortunately in my understanding none of this is > reflected by Documentation/block/barrier.txt But we are talking about XFS and barriers here. That described just a (flawed, buggy) mechanism to implement those. Consider for example: http://www.xfs.org/index.php/XFS_FAQ#Write_barrier_support. http://www.xfs.org/index.php/XFS_FAQ#Q._Should_barriers_be_enabled_with_storage_which_has_a_persistent_write_cache.3F In any case as to the kernel "barrier" mechanism, its description is misleading because it heavily fixates on the ordering issue, which is just a consequence, but yet mentions the far more important "flush/sync" aspect. Still, there is a lot of confusion about barrier support and what it means at which level, as reflected in several online discussions and the different behaviour of different kernel versions. > Especially this mentions: > [ ... ] All requests queued before a barrier request must be > finished (made it to the physical medium) before the barrier > request is started, and all requests queued after the > barrier request must be started only after the barrier > request is finished (again, made it to the physical medium) This does say that the essential property is "made it to the physical medium". > i. For devices which have queue depth greater than 1 (TCQ > devices) and support ordered tags, block layer can just > issue the barrier as an ordered request and the lower level > driver, controller and drive itself Note that the terminology here is wrong: here "controller" really means "host adapter", and "drive itself" actually means "drive controller". > are responsible for making sure that the ordering constraint > is met. This is subtly incorrect. The driver, host adapter and drive controller should only keep queued multiple barrier requests if their caches are persistent. But this seems corrected below in the "Forced flushing to physical medium". > ii. For devices which have queue depth greater than 1 but > don't support ordered tags, block layer ensures that the > requests preceding a barrier request finishes before issuing > the barrier request. Also, it defers requests following the > barrier until the barrier request is finished. Older SCSI > controllers/drives and SATA drives fall in this category. > iii. Devices which have queue depth of 1. This is a > degenerate case of ii. Just keeping issue order suffices. > Ancient SCSI controllers/drives and IDE drives are in this > category. Both of these seem to match my discussion; here "requests" means of course "write requests". > 2. Forced flushing to physical medium > Again, if you're not gonna do synchronization with disk > drives (dang, it sounds even more appealing now!), the > reason you use I/O barriers is mainly to protect filesystem > integrity when power failure or some other events abruptly > stop the drive from operating and possibly make the drive ======================= > lose data in its cache. ====================== > So, I/O barriers need to guarantee that requests actually > get written to non-volatile medium in order. Here it is incorrect again: barriers need to guarantee both that data gets written to non-volatile medium, and that this happens in order, for serially dependent transactions. > There are four cases, [ ... ] We still need one flush to > make sure requests preceding a barrier are written to medium > [ ... ] [ ... ] > Nor do I understand why the filesystem needs to know whether a > barrier has been completed - it just needs to know whether the > block device / driver can handle barrier requests. Perhaps you are thinking about an API like "issue barrier, wait for barrier completion". But it can be instead "issue barrier, this only returns when it is complete", or "issue barrier, any subsequent write completes only when the barrier has been executed" much to the same effect. In the discussion of the four cases above > If the filesystem knows that requests are written with certain > order constraint, then it shouldn't matter when they are written. Ah it sure does, in two ways. Barriers are essentially a way to implement 'fsync' or 'fdatasync', whether these are explicitly issued by processes or implicitly by the file system code. > When should be a choice of the user on how much data she / > he risks to loose in case of a sudden interruption of > writing out requests. Sure, and for *data* the user can issue 'fdatasync'/'msync' (or the new 'sync_file_range'), and for metadata 'fsync'; or things like implicit versions of these with filesystem options. But once the 'fsync' or 'fdatasync' has been issued the file system code must wait until flush/sync implicit in the barrier is complete. Anyhow what the kernel does with 'fsync'/'fdatasync', what the host adapter or drive controller do, has been controversial, and depending on Linux kernel versions and host adapter/drive controller firmware versions different things happen. Let's say that given this mess it is *exceptionally difficult* to create an IO subsystem with properly working write barriers (unless one buy SGI kit of course :->). A couple of relevant threads: http://groups.google.com/group/linux.kernel/tree/browse_frm/thread/d343e51655b4ac7c http://kerneltrap.org/mailarchive/linux-kernel/2008/2/26/987744 From www-data@hiphop-magazine.com Tue Dec 16 07:18:25 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.5 required=5.0 tests=BAYES_50,HTML_MESSAGE, WHOIS_DMNBYPROXY,WHOIS_NETSOLPR 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 mBGDIOwq015644 for ; Tue, 16 Dec 2008 07:18:25 -0600 X-ASG-Debug-ID: 1229433497-02f300910000-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 D4B262576B for ; Tue, 16 Dec 2008 05:18:17 -0800 (PST) Received: from hiphop-magazine.com (hiphop-magazine.com [85.214.133.137]) by cuda.sgi.com with ESMTP id ZjU1M84AL87HKQFH for ; Tue, 16 Dec 2008 05:18:17 -0800 (PST) Received: by hiphop-magazine.com (Postfix, from userid 33) id 46DAC162C752; Tue, 16 Dec 2008 14:18:13 +0100 (CET) To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Yo! PR: Get Familiar With Supastar LT, Clinton Sparks' New Artist Subject: Yo! PR: Get Familiar With Supastar LT, Clinton Sparks' New Artist Date: Tue, 16 Dec 2008 14:18:13 +0100 From: Yo! Raps Reply-To: Yo! Raps Message-ID: <37326e92822e714aaf6e1b7168cb29ee@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: 91.3.163.187 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: 1229433498 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4904 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 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.12870 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: 7bit Content-length: 3543 Please contact me if you place any of the following information on your site, or to request an interview. Thank you for your time! SUPASTAR LT GEARING UP FOR "VOICE OF THE CITY", HOSTED BY CLINTON SPARKS Supastar LT, the new signee to Clinton Sparks' Get Familiar Records, is currently gearing up for the release of his anticipated mixtape "Voice Of The City" which will drop on January 1. With "Voice Of The City", hosted by TV and Radio personality Clinton Sparks himself, LT will start the new year with a big bang that introduces him to the world of Hip-Hop globally. Below you can download the first single "Risk My Life": AUDIO: Supastar LT - Risk My Life [Radio] http://www.sendspace.com/file/x6emcf AUDIO: Supastar LT - Risk My Life [Street] http://www.sendspace.com/file/9dd025 Furthermore Supastar LT is working on his first DVD documentary that will be released on the same date as the "Voice Of The City" mixtape. The documentary shows the life of a "Supastar" in the making as you can follow LT on his grind - recording in the studio, on the road, working with some of today's Hip-Hop heavyweights including Akon, DJ Khaled, Ray J, Kardinal Offishall, Rick Ross, Red Cafe and many more. Watch the trailer below... DIRECT LINK http://vimeo.com/2502132?pg=transcoded_embed&sec=2502132 EMBED CODE
Supastar LT 2008 Documentary Preview from cody james on Vimeo. ABOUT SUPASTAR LT Supastar LT has been stringing sharp-witted words together for years and already worked and recorded alongside major Hip-Hop artists like Fat Joe, Jim Jones, DJ Khaled, Trey Songz, Lil Scrappy, AZ, Akon, Foxy Brown, Rick Ross, Fabolous, just to name a few. At just 20-years-old the Boston rapper has already perfected his craft and built up a heavy buzz in the streets. This very promising and extremely talented young gunner is a "Supastar" in the making, without a doubt. Get familiar! SUPASTAR LT IS AVAILABLE FOR INTERVIEWS MySpace: www.myspace.com/supastarlt Manager: Ausadee | ausadee@gmail.com Promotion: Kai Denninger | info@yo-pr.com | +49-5507-999939 Don't forget to check www.yoraps.com for your daily dose of Hip-Hop! Get 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 arekm@carme.pld-linux.org Tue Dec 16 14:08:56 2008 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 mBGK8uuN010639 for ; Tue, 16 Dec 2008 14:08:56 -0600 X-ASG-Debug-ID: 1229458134-3967031d0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from carme.pld-linux.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 365DA27B4F for ; Tue, 16 Dec 2008 12:08:54 -0800 (PST) Received: from carme.pld-linux.org (carme.pld-linux.org [193.239.45.140]) by cuda.sgi.com with ESMTP id FBsLDTSj9YEm1Djl for ; Tue, 16 Dec 2008 12:08:54 -0800 (PST) Received: from arekm by carme.pld-linux.org with local (Exim 4.69) (envelope-from ) id 1LCgDN-000L7h-Hh; Tue, 16 Dec 2008 21:08:21 +0100 From: Arkadiusz Miskiewicz To: linux-xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH] EXCLUDED_FILE_TYPES: Fix macro for negation case. Subject: [PATCH] EXCLUDED_FILE_TYPES: Fix macro for negation case. Date: Tue, 16 Dec 2008 21:08:21 +0100 Message-Id: <1229458101-80355-1-git-send-email-arekm@maven.pl> X-Mailer: git-send-email 1.6.0.5 X-Barracuda-Connect: carme.pld-linux.org[193.239.45.140] X-Barracuda-Start-Time: 1229458135 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.12895 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Fix EXCLUDED_FILE_TYPES in case when someone will try to do if (!EXCLUDED_FILE_TYPES()). --- xfsprogs/quota/project.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/xfsprogs/quota/project.c b/xfsprogs/quota/project.c index 7eac8e4..b4171e5 100644 --- a/xfsprogs/quota/project.c +++ b/xfsprogs/quota/project.c @@ -31,11 +31,11 @@ enum { }; #define EXCLUDED_FILE_TYPES(x) \ - S_ISCHR((x)) \ + (S_ISCHR((x)) \ || S_ISBLK((x)) \ || S_ISFIFO((x)) \ || S_ISLNK((x)) \ - || S_ISSOCK((x)) + || S_ISSOCK((x))) static void project_help(void) -- 1.6.0.5 From arekm@carme.pld-linux.org Tue Dec 16 14:23:10 2008 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 mBGKNA1m012031 for ; Tue, 16 Dec 2008 14:23:10 -0600 X-ASG-Debug-ID: 1229458988-396503dd0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from carme.pld-linux.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 31E1F27761 for ; Tue, 16 Dec 2008 12:23:08 -0800 (PST) Received: from carme.pld-linux.org (carme.pld-linux.org [193.239.45.140]) by cuda.sgi.com with ESMTP id omAeHG5oMaqW5fUX for ; Tue, 16 Dec 2008 12:23:08 -0800 (PST) Received: from arekm by carme.pld-linux.org with local (Exim 4.69) (envelope-from ) id 1LCgRg-000Nsp-7W; Tue, 16 Dec 2008 21:23:08 +0100 From: Arkadiusz Miskiewicz To: linux-xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH] build system: Make --enable-gettext actually enable gettext. Subject: [PATCH] build system: Make --enable-gettext actually enable gettext. Date: Tue, 16 Dec 2008 21:23:08 +0100 Message-Id: <1229458988-91783-1-git-send-email-arekm@maven.pl> X-Mailer: git-send-email 1.6.0.5 X-Barracuda-Connect: carme.pld-linux.org[193.239.45.140] X-Barracuda-Start-Time: 1229458989 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.12896 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- ENABLE_GETTEXT wasn't defined when --enable-gettext was passed as configure option. Now this is fixed. --- xfsprogs/include/builddefs.in | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/xfsprogs/include/builddefs.in b/xfsprogs/include/builddefs.in index f1b4340..f07d8d6 100644 --- a/xfsprogs/include/builddefs.in +++ b/xfsprogs/include/builddefs.in @@ -118,6 +118,10 @@ GCFLAGS = $(OPTIMIZER) $(DEBUG) \ -DVERSION=\"$(PKG_VERSION)\" -DLOCALEDIR=\"$(PKG_LOCALE_DIR)\" \ -DPACKAGE=\"$(PKG_NAME)\" -I$(TOPDIR)/include +ifeq ($(ENABLE_GETTEXT),yes) +GCFLAGS += -DENABLE_GETTEXT +endif + # First, Global, Platform, Local CFLAGS CFLAGS += $(FCFLAGS) $(GCFLAGS) $(PCFLAGS) $(LCFLAGS) -- 1.6.0.5 From david@fromorbit.com Tue Dec 16 17:14:42 2008 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 mBGNEg2o023124 for ; Tue, 16 Dec 2008 17:14:42 -0600 X-ASG-Debug-ID: 1229469278-6f4d000c0000-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 D74421747C65; Tue, 16 Dec 2008 15:14:39 -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 7LlGxp4exfnsVQSm; Tue, 16 Dec 2008 15:14:39 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAI7ER0l5LB1f/2dsb2JhbAC9MVeROIJ/ X-IronPort-AV: E=Sophos;i="4.36,232,1228051800"; d="scan'208";a="277316678" 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; 17 Dec 2008 09:44:13 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LCj7D-0005c0-QB; Wed, 17 Dec 2008 10:14:11 +1100 Date: Wed, 17 Dec 2008 10:14:11 +1100 From: Dave Chinner To: Martin Steigerwald Cc: linux-xfs@oss.sgi.com, Peter Grandi , Linux RAID , Linux XFS X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Message-ID: <20081216231411.GG32301@disturbed> Mail-Followup-To: Martin Steigerwald , linux-xfs@oss.sgi.com, Peter Grandi , Linux RAID , Linux XFS References: <18757.33373.744917.457587@tree.ty.sabi.co.uk> <20081215223857.GF32301@disturbed> <200812161039.07700.Martin@lichtvoll.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <200812161039.07700.Martin@lichtvoll.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: 1229469280 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.12905 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 16, 2008 at 10:39:07AM +0100, Martin Steigerwald wrote: > Am Montag 15 Dezember 2008 schrieb Dave Chinner: > > On Sun, Dec 14, 2008 at 10:02:05PM +0000, Peter Grandi wrote: > > > The purpose of barriers is to guarantee that relevant data is > > > known to be on persistent storage (kind of hardware 'fsync'). > > > > > > In effect write barrier means "tell me when relevant data is on > > > persistent storage", or less precisely "flush/sync writes now > > > and tell me when it is done". Properties as to ordering are just > > > a side effect. > > > > No, that is incorrect. > > > > Barriers provide strong ordering semantics. I/Os issued before the > > barrier must be completed before the barrier I/O, and I/Os issued > > after the barrier write must not be started before the barrier write > > completes. The elevators are not allowed to re-оrder I/Os around > > barriers. > > > > This is all documented in Documentation/block/barrier.txt. Please > > read it because most of what you are saying appears to be based on > > incorrect assumptions about what barriers do. > > Hmmm, so I am not completely off track it seems ;-). > > What I still do not understand then is: How can write barriers + write > cache be slower than no write barriers + no cache? Because frequent write barriers cause ordering constraints on I/O. For example, in XFS log I/Os are sequential. With barriers enabled they cannot be merged by the elevator, whereas without barriers they can be merged and issued as a single I/O. Further, if you have no barrier I/os queued in the elevator, sorting and merging occurs across the entire queue of I/Os, not just the I/Os that have been issued after the last barrier I/O. Effectively the ordering constraints of barriers introduce more seeks by reducing the efficiency of the elevator due to constraining sorting and merging ranges. In many cases, the ordering constraints impose a higher seek penalty than the write cache can mitigate - the whole purpose of the barrier IOs is to force the cache to be flushed - so write caching does not improve performance when frequent barriers are issued. In this case, barriers are the problem and hence turning of the cache and barriers will result in higher performance. > I still would expect > write barriers + write cache be in between no barriers + write cache and > no barriers + no cache performance wise. Depends entirely on the disk and the workload. Some disks are faster with wcache and barriers (e.g. laptop drives), some are faster with no wcache and no barriers (e.g. server drives).... > And would see anything else as a > regression basically. No, just your usual "pick the right hardware" problem. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Dec 16 17:14:42 2008 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=unavailable 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 mBGNEgZB023123 for ; Tue, 16 Dec 2008 17:14:42 -0600 X-ASG-Debug-ID: 1229469278-6f4d000c0000-w1Z2WR 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 D74421747C65; Tue, 16 Dec 2008 15:14:39 -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 7LlGxp4exfnsVQSm; Tue, 16 Dec 2008 15:14:39 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAI7ER0l5LB1f/2dsb2JhbAC9MVeROIJ/ X-IronPort-AV: E=Sophos;i="4.36,232,1228051800"; d="scan'208";a="277316678" 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; 17 Dec 2008 09:44:13 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LCj7D-0005c0-QB; Wed, 17 Dec 2008 10:14:11 +1100 Date: Wed, 17 Dec 2008 10:14:11 +1100 From: Dave Chinner To: Martin Steigerwald Cc: linux-xfs@oss.sgi.com, Peter Grandi , Linux RAID , Linux XFS X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Message-ID: <20081216231411.GG32301@disturbed> Mail-Followup-To: Martin Steigerwald , linux-xfs@oss.sgi.com, Peter Grandi , Linux RAID , Linux XFS References: <18757.33373.744917.457587@tree.ty.sabi.co.uk> <20081215223857.GF32301@disturbed> <200812161039.07700.Martin@lichtvoll.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <200812161039.07700.Martin@lichtvoll.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: 1229469280 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.12905 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 16, 2008 at 10:39:07AM +0100, Martin Steigerwald wrote: > Am Montag 15 Dezember 2008 schrieb Dave Chinner: > > On Sun, Dec 14, 2008 at 10:02:05PM +0000, Peter Grandi wrote: > > > The purpose of barriers is to guarantee that relevant data is > > > known to be on persistent storage (kind of hardware 'fsync'). > > > > > > In effect write barrier means "tell me when relevant data is on > > > persistent storage", or less precisely "flush/sync writes now > > > and tell me when it is done". Properties as to ordering are just > > > a side effect. > > > > No, that is incorrect. > > > > Barriers provide strong ordering semantics. I/Os issued before the > > barrier must be completed before the barrier I/O, and I/Os issued > > after the barrier write must not be started before the barrier write > > completes. The elevators are not allowed to re-оrder I/Os around > > barriers. > > > > This is all documented in Documentation/block/barrier.txt. Please > > read it because most of what you are saying appears to be based on > > incorrect assumptions about what barriers do. > > Hmmm, so I am not completely off track it seems ;-). > > What I still do not understand then is: How can write barriers + write > cache be slower than no write barriers + no cache? Because frequent write barriers cause ordering constraints on I/O. For example, in XFS log I/Os are sequential. With barriers enabled they cannot be merged by the elevator, whereas without barriers they can be merged and issued as a single I/O. Further, if you have no barrier I/os queued in the elevator, sorting and merging occurs across the entire queue of I/Os, not just the I/Os that have been issued after the last barrier I/O. Effectively the ordering constraints of barriers introduce more seeks by reducing the efficiency of the elevator due to constraining sorting and merging ranges. In many cases, the ordering constraints impose a higher seek penalty than the write cache can mitigate - the whole purpose of the barrier IOs is to force the cache to be flushed - so write caching does not improve performance when frequent barriers are issued. In this case, barriers are the problem and hence turning of the cache and barriers will result in higher performance. > I still would expect > write barriers + write cache be in between no barriers + write cache and > no barriers + no cache performance wise. Depends entirely on the disk and the workload. Some disks are faster with wcache and barriers (e.g. laptop drives), some are faster with no wcache and no barriers (e.g. server drives).... > And would see anything else as a > regression basically. No, just your usual "pick the right hardware" problem. Cheers, Dave. -- Dave Chinner david@fromorbit.com From www-data@hiphop-magazine.com Wed Dec 17 01:39:58 2008 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_50,HTML_MESSAGE 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 mBH7duwP027625 for ; Wed, 17 Dec 2008 01:39:58 -0600 X-ASG-Debug-ID: 1229499593-4eba02c70000-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 C44C01BF41B5 for ; Tue, 16 Dec 2008 23:39:53 -0800 (PST) Received: from hiphop-magazine.com (hiphop-magazine.com [85.214.133.137]) by cuda.sgi.com with ESMTP id 38skvMrXOkU2s6w1 for ; Tue, 16 Dec 2008 23:39:53 -0800 (PST) Received: by hiphop-magazine.com (Postfix, from userid 33) id B8C2E4895BF; Wed, 17 Dec 2008 08:36:35 +0100 (CET) To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Yo! Raps Gears Up For West Coast Block Starz Compilation Subject: Yo! Raps Gears Up For West Coast Block Starz Compilation Date: Wed, 17 Dec 2008 08:36:35 +0100 From: Yo! Raps Reply-To: Yo! Raps Message-ID: <9518ca3d499022ff4bcc1e3bfcfb1208@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: 91.3.166.240 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: 1229499594 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5077 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=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.12935 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: 7bit Content-length: 3751 FOR IMMEDIATE RELEASE YO! RAPS MAGAZINE GEARS UP FOR FIRST WEST COAST BLOCK STARZ COMPILATION New York, NY - December 16, 2008 - Yo! Raps Magazine has announced the formation of three strategic partnerships for its debut music compilation, WEST COAST BLOCK STARZ, set for release in 2009. Jazzy Management, Major Contacts Music Association, and Wheat Bread Radio have agreed to join Yo! Raps in promoting the WEST COAST BLOCK STARZ compilation, which will highlight new, unsigned, and independent recording artists chosen by Yo! Raps editors and includes appearances and production by some of the industry's biggest hit makers. WEST COAST BLOCK STARZ is the first in the compilation series and features West Coast artists that have received limited promotion in the Midwest, South, and overseas. Hansen Hills, CA-based Jazzy Management, is headed by respected music industry veteran Shawndel "Jazzy D" Rosa, and is playing a key role in identifying regional talent for the compilation, while New York-based Major Contacts Music Association, an A&R submission service for various major labels, producers, and publishers, is offering the compilation for free with each new membership and has provided Yo! Raps with an exclusive account to submit selected artists featured on the BLOCK STARZ series. Wheat Bread Radio, a 24-hour Internet-based radio network with over 700,000 subscribers, is also supporting the WEST COAST BLOCK STARZ compilation and will host a week-long listening party featuring music and artist interviews from the release. "We are very excited about the companies that have partnered with us for this project," says Yo! Raps founder and CEO Kai Denninger. "Their participation will go a long way in helping us showcase the wealth of music talent out there that often gets overlooked." ABOUT YO! RAPS Yo! Raps, www.yoraps.com, is an award-winning global electronic magazine launched in 2003 that provides premium content to the young urban demographic at its website and through targeted daily e-mail updates that reach more than 1.5 million subscribers. ABOUT JAZZY MANAGEMENT Jazzy Management provides management representation for recording artists and producers. The company has a committed staff of hard working individuals with experience in promotions, public relations and music production. ABOUT MAJOR CONTACTS Major Contacts Music Association, www.majorcontacts.com, has vital relationships with key A&Rs and Managers that don' accept unsolicited music. Members can create and submit a Virtual Press Kit to affiliated A&Rs, Managers, and Producers seeking talent. ABOUT WHEAT BREAD RADIO Wheat Bread Radio is a 24-hour Internet-based radio network with over 700,000 subscribers and broadcasts new music, events, and celebrity guest interviews for a target audience of young professionals in the 18-34 demographic. WBR is also a multi-media division of the Wheat Bread lifestyle brand located at www.wheatbreadlife.com. Don't forget to check www.yoraps.com for your daily dose of Hip-Hop! Get 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 SRS0+1e947787dd4a7080adee+1942+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 17 08:20:32 2008 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 mBHEKUCP023871 for ; Wed, 17 Dec 2008 08:20:32 -0600 X-ASG-Debug-ID: 1229523628-0bf100c10000-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 7DFF72B35B; Wed, 17 Dec 2008 06:20:29 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 64vnioKuIE3MobwB; Wed, 17 Dec 2008 06:20:29 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LCxGG-0007pJ-Oa; Wed, 17 Dec 2008 14:20:28 +0000 Date: Wed, 17 Dec 2008 09:20:28 -0500 From: Christoph Hellwig To: Lachlan McIlroy Cc: Christoph Hellwig , xfs-oss X-ASG-Orig-Subj: Re: [PATCH] Use the incore inode size in xfs_file_readdir() Subject: Re: [PATCH] Use the incore inode size in xfs_file_readdir() Message-ID: <20081217142028.GA22023@infradead.org> References: <49377FBC.5020501@sgi.com> <20081204070827.GB29531@infradead.org> <49389E8F.5000301@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49389E8F.5000301@sgi.com> 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: 1229523629 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Fri, Dec 05, 2008 at 02:22:55PM +1100, Lachlan McIlroy wrote: > Christoph Hellwig wrote: > > On Thu, Dec 04, 2008 at 05:59:08PM +1100, Lachlan McIlroy wrote: > >> We should be using the incore inode size here not the linux inode > >> size. The incore inode size is always up to date for directories > >> whereas the linux inode size is not updated for directories. > >> > >> We've hit assertions in xfs_bmap() and traced it back to the linux > >> inode size being zero here but the incore size being correct. > > > > Heh. Looks good, but you can still call ->readdir with a 0 inode size, > > so you might want to check for that (actualyl I think other pathes > > are goign to take care of it, but..) > > What if we remove bufsize and pass PAGE_SIZE into xfs_readdir()? > No need to worry about a 0 inode size. It is used for sizing a memory allocation in xfs_dir2_leaf_getdents, and avoiding over-allocations for small directories seems like a good idea. So please go ahead with your original patch. From SRS0+1e947787dd4a7080adee+1942+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 17 08:20:42 2008 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,SUBJ_FRIEND 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 mBHEKghF023893 for ; Wed, 17 Dec 2008 08:20:42 -0600 X-ASG-Debug-ID: 1229523640-50fe03cd0000-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 4B12517490B5; Wed, 17 Dec 2008 06:20:41 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 50kfTSA20twnsFcd; Wed, 17 Dec 2008 06:20:41 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LCxGS-0007ps-SH; Wed, 17 Dec 2008 14:20:40 +0000 Date: Wed, 17 Dec 2008 09:20:40 -0500 From: Christoph Hellwig To: Lachlan McIlroy Cc: Christoph Hellwig , xfs-oss X-ASG-Orig-Subj: Re: [PATCH] Remove XFS_BUF_SHUT() and friends Subject: Re: [PATCH] Remove XFS_BUF_SHUT() and friends Message-ID: <20081217142040.GB22023@infradead.org> References: <49378654.2050707@sgi.com> <20081204132746.GA27400@infradead.org> <4938A58F.6090109@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4938A58F.6090109@sgi.com> 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: 1229523641 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Fri, Dec 05, 2008 at 02:52:47PM +1100, Lachlan McIlroy wrote: > Christoph Hellwig wrote: > > On Thu, Dec 04, 2008 at 06:27:16PM +1100, Lachlan McIlroy wrote: > >> Code does nothing so remove it. > > > > Looks good to me. Does anyone remember why this flag was set on IRIX? > > During a forced shutdown we would go through all incore buffers and mark > them B_STALE/B_ERROR/B_SHUT and then call biodone() on them. The code in > xfs_buf_iodone_callbacks() that checks for B_SHUT is to avoid a double > biodone() I think. We don't have the code in the Linux port that scans > through all the incore buffers on a forced shutdown but we still have one > case in xfs_iflush_cluster(). In any case it's not doing anything. Ok. From SRS0+1e947787dd4a7080adee+1942+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 17 08:25:14 2008 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 mBHEPEdi024303 for ; Wed, 17 Dec 2008 08:25:14 -0600 X-ASG-Debug-ID: 1229523913-744203020000-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 B426F1748BA0 for ; Wed, 17 Dec 2008 06:25:13 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id R3XdtjNZPz0G6oRq for ; Wed, 17 Dec 2008 06:25:13 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LCxKM-0007wZ-4v; Wed, 17 Dec 2008 14:24:42 +0000 Date: Wed, 17 Dec 2008 09:24:42 -0500 From: Christoph Hellwig To: Lachlan McIlroy Cc: xfs-oss X-ASG-Orig-Subj: Re: [Fwd: [PATCH] Fix speculative allocation beyond eof] Subject: Re: [Fwd: [PATCH] Fix speculative allocation beyond eof] Message-ID: <20081217142442.GC22023@infradead.org> References: <49378444.9040108@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49378444.9040108@sgi.com> 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: 1229523913 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Dec 04, 2008 at 06:18:28PM +1100, Lachlan McIlroy wrote: > Speculative allocation beyond eof doesn't work properly. It was broken some > time ago after a code cleanup that moved what is now xfs_iomap_eof_align_last_fsb() > and xfs_iomap_eof_want_preallocate() out of xfs_iomap_write_delay() into > separate functions. The code used to use the current file size in various checks > but got changed to be max(file_size, i_new_size). Since i_new_size is the result > of 'offset + count' then in xfs_iomap_eof_want_preallocate() the check for > '(offset + count) <= isize' will always be true. > > ie if 'offset + count' is > ip->i_size then isize will be i_new_size and equal to > 'offset + count'. > > This change fixes all the places that used to use the current file size. Looks good, we should be using the current i_size everywhere. From SRS0+1e947787dd4a7080adee+1942+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 17 11:27:38 2008 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_25, J_CHICKENPOX_74 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 mBHHRbGS002424 for ; Wed, 17 Dec 2008 11:27:38 -0600 X-ASG-Debug-ID: 1229534856-189d020d0000-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 EF5D62C4E2 for ; Wed, 17 Dec 2008 09:27:36 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id nJzHnGO4E1zxYzz2 for ; Wed, 17 Dec 2008 09:27:36 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LD0BM-0000nx-8Q; Wed, 17 Dec 2008 17:27:36 +0000 Date: Wed, 17 Dec 2008 12:27:36 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Alexander Beregalov X-ASG-Orig-Subj: [PATCH] avoid memory allocations in xfs_fs_vcmn_err Subject: [PATCH] avoid memory allocations in xfs_fs_vcmn_err Message-ID: <20081217172736.GA10797@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: 1229534856 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com xfs_fs_vcmn_err can be called under a spinlock, but does a sleeping memory allocation to create buffer for it's internal sprintf. Fortunately it's the only caller of icmn_err, so we can merge the two and have one single static buffer and spinlock protecting it. While we're at it make sure we proper __attribute__ format annotations so that the compiler can detect mismatched format strings. Reported-by: Alexander Beregalov Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/support/debug.c =================================================================== --- xfs.orig/fs/xfs/support/debug.c 2008-12-17 14:59:49.000000000 +0100 +++ xfs/fs/xfs/support/debug.c 2008-12-17 15:10:13.000000000 +0100 @@ -18,6 +18,13 @@ #include #include "debug.h" +/* xfs_mount.h drags a lot of crap in, sorry.. */ +#include "xfs_sb.h" +#include "xfs_inum.h" +#include "xfs_ag.h" +#include "xfs_dmapi.h" +#include "xfs_mount.h" + static char message[1024]; /* keep it off the stack */ static DEFINE_SPINLOCK(xfs_err_lock); @@ -55,22 +62,42 @@ cmn_err(register int level, char *fmt, . } void -icmn_err(register int level, char *fmt, va_list ap) +xfs_fs_vcmn_err( + int level, + struct xfs_mount *mp, + char *fmt, + va_list ap) { - ulong flags; - int len; + unsigned long flags; + int len = 0; level &= XFS_ERR_MASK; - if(level > XFS_MAX_ERR_LEVEL) + if (level > XFS_MAX_ERR_LEVEL) level = XFS_MAX_ERR_LEVEL; + spin_lock_irqsave(&xfs_err_lock,flags); - len = vsnprintf(message, sizeof(message), fmt, ap); + + if (mp) { + len = sprintf(message, "Filesystem \"%s\": ", mp->m_fsname); + + /* + * Skip the printk if we can't print anything useful + * due to an over-long device name. + */ + if (len >= sizeof(message)) + goto out; + } + + len = vsnprintf(message + len, sizeof(message) - len, fmt, ap); if (len >= sizeof(message)) len = sizeof(message) - 1; if (message[len-1] == '\n') message[len-1] = 0; + printk("%s%s\n", err_level[level], message); + out: spin_unlock_irqrestore(&xfs_err_lock,flags); + BUG_ON(level == CE_PANIC); } Index: xfs/fs/xfs/support/debug.h =================================================================== --- xfs.orig/fs/xfs/support/debug.h 2008-12-17 15:05:34.000000000 +0100 +++ xfs/fs/xfs/support/debug.h 2008-12-17 15:07:03.000000000 +0100 @@ -27,8 +27,6 @@ #define CE_ALERT 1 /* alert */ #define CE_PANIC 0 /* panic */ -extern void icmn_err(int, char *, va_list) - __attribute__ ((format (printf, 2, 0))); extern void cmn_err(int, char *, ...) __attribute__ ((format (printf, 2, 3))); extern void assfail(char *expr, char *f, int l); Index: xfs/fs/xfs/xfs_error.c =================================================================== --- xfs.orig/fs/xfs/xfs_error.c 2008-12-17 14:58:02.000000000 +0100 +++ xfs/fs/xfs/xfs_error.c 2008-12-17 15:12:03.000000000 +0100 @@ -153,21 +153,6 @@ xfs_errortag_clearall(xfs_mount_t *mp, i } #endif /* DEBUG */ -static void -xfs_fs_vcmn_err(int level, xfs_mount_t *mp, char *fmt, va_list ap) -{ - if (mp != NULL) { - char *newfmt; - int len = 16 + mp->m_fsname_len + strlen(fmt); - - newfmt = kmem_alloc(len, KM_SLEEP); - sprintf(newfmt, "Filesystem \"%s\": %s", mp->m_fsname, fmt); - icmn_err(level, newfmt, ap); - kmem_free(newfmt); - } else { - icmn_err(level, fmt, ap); - } -} void xfs_fs_cmn_err(int level, xfs_mount_t *mp, char *fmt, ...) Index: xfs/fs/xfs/xfs_error.h =================================================================== --- xfs.orig/fs/xfs/xfs_error.h 2008-12-17 15:05:46.000000000 +0100 +++ xfs/fs/xfs/xfs_error.h 2008-12-17 15:12:01.000000000 +0100 @@ -159,11 +159,15 @@ extern int xfs_errortag_clearall(xfs_mou #define XFS_PTAG_FSBLOCK_ZERO 0x00000080 struct xfs_mount; -/* PRINTFLIKE4 */ + +extern void xfs_fs_vcmn_err(int level, struct xfs_mount *mp, + char *fmt, va_list ap) + __attribute__ ((format (printf, 3, 0))); extern void xfs_cmn_err(int panic_tag, int level, struct xfs_mount *mp, - char *fmt, ...); -/* PRINTFLIKE3 */ -extern void xfs_fs_cmn_err(int level, struct xfs_mount *mp, char *fmt, ...); + char *fmt, ...) + __attribute__ ((format (printf, 4, 5))); +extern void xfs_fs_cmn_err(int level, struct xfs_mount *mp, char *fmt, ...) + __attribute__ ((format (printf, 3, 4))); extern void xfs_hex_dump(void *p, int length); From sandeen@sandeen.net Wed Dec 17 11:46:17 2008 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 mBHHkHcK003432 for ; Wed, 17 Dec 2008 11:46:17 -0600 X-ASG-Debug-ID: 1229535976-446e00bb0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9AB2D2C988 for ; Wed, 17 Dec 2008 09:46:16 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 78SjiGWHwnwKIHUg for ; Wed, 17 Dec 2008 09:46:16 -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 sandeen.net (Postfix) with ESMTP id A8A70AC6268; Wed, 17 Dec 2008 11:46:14 -0600 (CST) Message-ID: <49493AE5.2050202@sandeen.net> Date: Wed, 17 Dec 2008 11:46:13 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com, Alexander Beregalov X-ASG-Orig-Subj: Re: [PATCH] avoid memory allocations in xfs_fs_vcmn_err Subject: Re: [PATCH] avoid memory allocations in xfs_fs_vcmn_err References: <20081217172736.GA10797@infradead.org> In-Reply-To: <20081217172736.GA10797@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: 1229535976 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.12973 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Christoph Hellwig wrote: > + if (mp) { > + len = sprintf(message, "Filesystem \"%s\": ", mp->m_fsname); > + > + /* > + * Skip the printk if we can't print anything useful > + * due to an over-long device name. > + */ > + if (len >= sizeof(message)) > + goto out; Do we really want to drop the whole message if the fs name can't fit? Maybe drop the fsname altogether and print the error anyway? Being completely silent doesn't sound great... -Eric From SRS0+1e947787dd4a7080adee+1942+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 17 11:57:53 2008 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 mBHHvqTx004358 for ; Wed, 17 Dec 2008 11:57:53 -0600 X-ASG-Debug-ID: 1229536671-11fc00d60000-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 C7FF2174B7D5 for ; Wed, 17 Dec 2008 09:57:51 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id QDd6lUkZXgMnDbTF for ; Wed, 17 Dec 2008 09:57:51 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LD0ec-00012Q-S4; Wed, 17 Dec 2008 17:57:50 +0000 Date: Wed, 17 Dec 2008 12:57:50 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , xfs@oss.sgi.com, Alexander Beregalov X-ASG-Orig-Subj: Re: [PATCH] avoid memory allocations in xfs_fs_vcmn_err Subject: Re: [PATCH] avoid memory allocations in xfs_fs_vcmn_err Message-ID: <20081217175750.GA27867@infradead.org> References: <20081217172736.GA10797@infradead.org> <49493AE5.2050202@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49493AE5.2050202@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: 1229536671 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Wed, Dec 17, 2008 at 11:46:13AM -0600, Eric Sandeen wrote: > Do we really want to drop the whole message if the fs name can't fit? > Maybe drop the fsname altogether and print the error anyway? Being > completely silent doesn't sound great... That's what we effecitvely do now, except that we still call snprintf. I think it's an unlikely enough case that we don't need to worry about it. And if long enough device names become common we can just increase the buffer size. From sandeen@sandeen.net Wed Dec 17 12:04:44 2008 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_25, J_CHICKENPOX_74 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 mBHI4h6C004865 for ; Wed, 17 Dec 2008 12:04:44 -0600 X-ASG-Debug-ID: 1229537081-446f01270000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 69E072C1E9 for ; Wed, 17 Dec 2008 10:04:41 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 2ruj4TvnFNBECC4i for ; Wed, 17 Dec 2008 10:04:41 -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 sandeen.net (Postfix) with ESMTP id 56045AC6268; Wed, 17 Dec 2008 12:04:41 -0600 (CST) Message-ID: <49493F38.3070503@sandeen.net> Date: Wed, 17 Dec 2008 12:04:40 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com, Alexander Beregalov X-ASG-Orig-Subj: Re: [PATCH] avoid memory allocations in xfs_fs_vcmn_err Subject: Re: [PATCH] avoid memory allocations in xfs_fs_vcmn_err References: <20081217172736.GA10797@infradead.org> In-Reply-To: <20081217172736.GA10797@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: 1229537082 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.12975 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Christoph Hellwig wrote: > xfs_fs_vcmn_err can be called under a spinlock, but does a sleeping memory > allocation to create buffer for it's internal sprintf. Fortunately it's > the only caller of icmn_err, so we can merge the two and have one single > static buffer and spinlock protecting it. While we're at it make sure > we proper __attribute__ format annotations so that the compiler can detect > mismatched format strings. > > > Reported-by: Alexander Beregalov > Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen > Index: xfs/fs/xfs/support/debug.c > =================================================================== > --- xfs.orig/fs/xfs/support/debug.c 2008-12-17 14:59:49.000000000 +0100 > +++ xfs/fs/xfs/support/debug.c 2008-12-17 15:10:13.000000000 +0100 > @@ -18,6 +18,13 @@ > #include > #include "debug.h" > > +/* xfs_mount.h drags a lot of crap in, sorry.. */ > +#include "xfs_sb.h" > +#include "xfs_inum.h" > +#include "xfs_ag.h" > +#include "xfs_dmapi.h" > +#include "xfs_mount.h" > + > static char message[1024]; /* keep it off the stack */ > static DEFINE_SPINLOCK(xfs_err_lock); > > @@ -55,22 +62,42 @@ cmn_err(register int level, char *fmt, . > } > > void > -icmn_err(register int level, char *fmt, va_list ap) > +xfs_fs_vcmn_err( > + int level, > + struct xfs_mount *mp, > + char *fmt, > + va_list ap) > { > - ulong flags; > - int len; > + unsigned long flags; > + int len = 0; > > level &= XFS_ERR_MASK; > - if(level > XFS_MAX_ERR_LEVEL) > + if (level > XFS_MAX_ERR_LEVEL) > level = XFS_MAX_ERR_LEVEL; > + > spin_lock_irqsave(&xfs_err_lock,flags); > - len = vsnprintf(message, sizeof(message), fmt, ap); > + > + if (mp) { > + len = sprintf(message, "Filesystem \"%s\": ", mp->m_fsname); > + > + /* > + * Skip the printk if we can't print anything useful > + * due to an over-long device name. > + */ > + if (len >= sizeof(message)) > + goto out; > + } > + > + len = vsnprintf(message + len, sizeof(message) - len, fmt, ap); > if (len >= sizeof(message)) > len = sizeof(message) - 1; > if (message[len-1] == '\n') > message[len-1] = 0; > + > printk("%s%s\n", err_level[level], message); > + out: > spin_unlock_irqrestore(&xfs_err_lock,flags); > + > BUG_ON(level == CE_PANIC); > } > > Index: xfs/fs/xfs/support/debug.h > =================================================================== > --- xfs.orig/fs/xfs/support/debug.h 2008-12-17 15:05:34.000000000 +0100 > +++ xfs/fs/xfs/support/debug.h 2008-12-17 15:07:03.000000000 +0100 > @@ -27,8 +27,6 @@ > #define CE_ALERT 1 /* alert */ > #define CE_PANIC 0 /* panic */ > > -extern void icmn_err(int, char *, va_list) > - __attribute__ ((format (printf, 2, 0))); > extern void cmn_err(int, char *, ...) > __attribute__ ((format (printf, 2, 3))); > extern void assfail(char *expr, char *f, int l); > Index: xfs/fs/xfs/xfs_error.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_error.c 2008-12-17 14:58:02.000000000 +0100 > +++ xfs/fs/xfs/xfs_error.c 2008-12-17 15:12:03.000000000 +0100 > @@ -153,21 +153,6 @@ xfs_errortag_clearall(xfs_mount_t *mp, i > } > #endif /* DEBUG */ > > -static void > -xfs_fs_vcmn_err(int level, xfs_mount_t *mp, char *fmt, va_list ap) > -{ > - if (mp != NULL) { > - char *newfmt; > - int len = 16 + mp->m_fsname_len + strlen(fmt); > - > - newfmt = kmem_alloc(len, KM_SLEEP); > - sprintf(newfmt, "Filesystem \"%s\": %s", mp->m_fsname, fmt); > - icmn_err(level, newfmt, ap); > - kmem_free(newfmt); > - } else { > - icmn_err(level, fmt, ap); > - } > -} > > void > xfs_fs_cmn_err(int level, xfs_mount_t *mp, char *fmt, ...) > Index: xfs/fs/xfs/xfs_error.h > =================================================================== > --- xfs.orig/fs/xfs/xfs_error.h 2008-12-17 15:05:46.000000000 +0100 > +++ xfs/fs/xfs/xfs_error.h 2008-12-17 15:12:01.000000000 +0100 > @@ -159,11 +159,15 @@ extern int xfs_errortag_clearall(xfs_mou > #define XFS_PTAG_FSBLOCK_ZERO 0x00000080 > > struct xfs_mount; > -/* PRINTFLIKE4 */ > + > +extern void xfs_fs_vcmn_err(int level, struct xfs_mount *mp, > + char *fmt, va_list ap) > + __attribute__ ((format (printf, 3, 0))); > extern void xfs_cmn_err(int panic_tag, int level, struct xfs_mount *mp, > - char *fmt, ...); > -/* PRINTFLIKE3 */ > -extern void xfs_fs_cmn_err(int level, struct xfs_mount *mp, char *fmt, ...); > + char *fmt, ...) > + __attribute__ ((format (printf, 4, 5))); > +extern void xfs_fs_cmn_err(int level, struct xfs_mount *mp, char *fmt, ...) > + __attribute__ ((format (printf, 3, 4))); > > extern void xfs_hex_dump(void *p, int length); > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From mfasheh@suse.de Wed Dec 17 14:28:20 2008 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=unavailable 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 mBHKSKiX012724 for ; Wed, 17 Dec 2008 14:28:20 -0600 X-ASG-Debug-ID: 1229545697-2a3600c30000-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 20ED51751B93; Wed, 17 Dec 2008 12:28:17 -0800 (PST) Received: from mx1.suse.de (ns.suse.de [195.135.220.2]) by cuda.sgi.com with ESMTP id onDty55uCAaEoQYO; Wed, 17 Dec 2008 12:28:17 -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 9BEF24417E; Wed, 17 Dec 2008 21:28:16 +0100 (CET) Date: Wed, 17 Dec 2008 12:28:15 -0800 From: Mark Fasheh To: Ankit Jain Cc: Al Viro , Christoph Hellwig , linux-fsdevel@vger.kernel.org, joel.becker@oracle.com, ocfs2-devel@oss.oracle.com, linux-kernel@vger.kernel.org, xfs-masters@oss.sgi.com, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH][RFC] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Subject: Re: [PATCH][RFC] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Message-ID: <20081217202815.GE8791@wotan.suse.de> Reply-To: Mark Fasheh References: <49460F88.2080408@ankitjain.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49460F88.2080408@ankitjain.org> Organization: SUSE Labs, Novell, Inc User-Agent: Mutt/1.5.9i X-Barracuda-Connect: ns.suse.de[195.135.220.2] X-Barracuda-Start-Time: 1229545699 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Mon, Dec 15, 2008 at 01:34:24PM +0530, Ankit Jain wrote: > This patch adds ioctls to vfs for compatibility with legacy XFS > pre-allocation ioctls (XFS_IOC_*RESVP*). The implementation > effectively invokes sys_fallocate for the new ioctls. > Note: These legacy ioctls are also implemented by OCFS2. > > There are some things that I'm not sure about: > 1. Should the struct space_resv be exposed to user-space? If not, > then what would be the right place to put it? And the ioctl > definitions? Yes. As far as where to put it, I'm not sure. Maybe falloc.h? > 2. Should the corresponding ioctls be removed from ocfs2? Well, a small amount of the code in fs/ocfs2/ioctl.c can certainly go away. Shouldn't we be talking about doing the same for xfs too? > Signed-off-by: Ankit Jain > --- > fs/ioctl.c | 37 +++++++++++++++++++++++++++ > fs/open.c | 51 ++++++++++++++++++------------------- > include/linux/falloc.h | 19 ++++++++++++++ > include/linux/fs.h | 2 + > 4 files changed, 83 insertions(+), 26 deletions(-) > > diff --git a/fs/ioctl.c b/fs/ioctl.c > index 43e8b2c..5e565c8 100644 > --- a/fs/ioctl.c > +++ b/fs/ioctl.c > @@ -15,6 +15,7 @@ > #include > #include > #include > +#include > > #include > > @@ -346,6 +347,37 @@ EXPORT_SYMBOL(generic_block_fiemap); > > #endif /* CONFIG_BLOCK */ > > +/* > + * This provides compatibility with legacy XFS pre-allocation ioctls > + * which predate the fallocate syscall. > + * > + * Only the l_start, l_len and l_whence fields of the 'struct space_resv' > + * are used here, rest are ignored. > + */ > +static int ioctl_preallocate(struct file *filp, unsigned long arg) > +{ > + struct inode *inode = filp->f_path.dentry->d_inode; > + struct space_resv sr; > + > + if (copy_from_user(&sr, (struct space_resv __user *) arg, sizeof(sr))) > + return -EFAULT; > + > + switch (sr.l_whence) { > + case SEEK_SET: > + break; > + case SEEK_CUR: > + sr.l_start += filp->f_pos; > + break; > + case SEEK_END: > + sr.l_start += i_size_read(inode); > + break; > + default: > + return -EINVAL; > + } > + > + return do_fallocate(filp, FALLOC_FL_KEEP_SIZE, sr.l_start, sr.l_len); > +} > + > static int file_ioctl(struct file *filp, unsigned int cmd, > unsigned long arg) > { > @@ -361,6 +393,11 @@ static int file_ioctl(struct file *filp, unsigned int cmd, > return put_user(inode->i_sb->s_blocksize, p); > case FIONREAD: > return put_user(i_size_read(inode) - filp->f_pos, p); > + case F_IOC_RESVSP: > + case F_IOC_RESVSP64: > + case F_IOC_UNRESVSP: > + case F_IOC_UNRESVSP64: > + return ioctl_preallocate(filp, arg); This patch is not implementing proper support for F_IOC_UNRESVSP and F_IOC_UNRESVSP64, so why are you catching those here? To be more clear, those are used for freeing space in a file ("puching holes"), which fallocate is not set up to do right now. --Mark -- Mark Fasheh From sandeen@sandeen.net Wed Dec 17 15:06:18 2008 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=unavailable 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 mBHL6HcG013745 for ; Wed, 17 Dec 2008 15:06:18 -0600 X-ASG-Debug-ID: 1229547975-2a03019c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4E0D5175237F; Wed, 17 Dec 2008 13:06:15 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id gq1J3xMV1UhppDfd; Wed, 17 Dec 2008 13:06:15 -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 sandeen.net (Postfix) with ESMTP id 1A0B1A9C9C6; Wed, 17 Dec 2008 15:06:15 -0600 (CST) Message-ID: <494969C6.4090500@sandeen.net> Date: Wed, 17 Dec 2008 15:06:14 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Mark Fasheh CC: Ankit Jain , linux-kernel@vger.kernel.org, joel.becker@oracle.com, Christoph Hellwig , xfs-masters@oss.sgi.com, Al Viro , linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, ocfs2-devel@oss.oracle.com X-ASG-Orig-Subj: Re: [xfs-masters] [PATCH][RFC] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Subject: Re: [xfs-masters] [PATCH][RFC] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls References: <49460F88.2080408@ankitjain.org> <20081217202815.GE8791@wotan.suse.de> In-Reply-To: <20081217202815.GE8791@wotan.suse.de> 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: 1229547976 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.12987 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Mark Fasheh wrote: > On Mon, Dec 15, 2008 at 01:34:24PM +0530, Ankit Jain wrote: >> This patch adds ioctls to vfs for compatibility with legacy XFS >> pre-allocation ioctls (XFS_IOC_*RESVP*). The implementation >> effectively invokes sys_fallocate for the new ioctls. >> Note: These legacy ioctls are also implemented by OCFS2. >> >> There are some things that I'm not sure about: >> 1. Should the struct space_resv be exposed to user-space? If not, >> then what would be the right place to put it? And the ioctl >> definitions? > > Yes. As far as where to put it, I'm not sure. Maybe falloc.h? I'd sort of rather not; why should that legacy struct space_resv be available in a header... I thought this was for people already using the xfs ioctl, in which case they are already using the xfs header... and if they want preallocation in any new work, they should use fallocate() instead, yes? I mean it wouldn't hurt anything but it sort of confuses the interface story IMHO. -Eric From mfasheh@suse.de Wed Dec 17 15:15:53 2008 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 mBHLFqfx014283 for ; Wed, 17 Dec 2008 15:15:53 -0600 X-ASG-Debug-ID: 1229548550-2a3601c50000-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 CA0681752792; Wed, 17 Dec 2008 13:15:51 -0800 (PST) Received: from mx1.suse.de (ns.suse.de [195.135.220.2]) by cuda.sgi.com with ESMTP id hbjMA30J8T5yOylW; Wed, 17 Dec 2008 13:15: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 9E46C457C8; Wed, 17 Dec 2008 22:15:50 +0100 (CET) Date: Wed, 17 Dec 2008 13:15:50 -0800 From: Mark Fasheh To: Eric Sandeen Cc: Ankit Jain , linux-kernel@vger.kernel.org, joel.becker@oracle.com, Christoph Hellwig , xfs-masters@oss.sgi.com, Al Viro , linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, ocfs2-devel@oss.oracle.com X-ASG-Orig-Subj: Re: [xfs-masters] [PATCH][RFC] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Subject: Re: [xfs-masters] [PATCH][RFC] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Message-ID: <20081217211550.GF8791@wotan.suse.de> Reply-To: Mark Fasheh References: <49460F88.2080408@ankitjain.org> <20081217202815.GE8791@wotan.suse.de> <494969C6.4090500@sandeen.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <494969C6.4090500@sandeen.net> Organization: SUSE Labs, Novell, Inc User-Agent: Mutt/1.5.9i X-Barracuda-Connect: ns.suse.de[195.135.220.2] X-Barracuda-Start-Time: 1229548551 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Wed, Dec 17, 2008 at 03:06:14PM -0600, Eric Sandeen wrote: > >> There are some things that I'm not sure about: > >> 1. Should the struct space_resv be exposed to user-space? If not, > >> then what would be the right place to put it? And the ioctl > >> definitions? > > > > Yes. As far as where to put it, I'm not sure. Maybe falloc.h? > > I'd sort of rather not; why should that legacy struct space_resv be > available in a header... I thought this was for people already using the > xfs ioctl, in which case they are already using the xfs header... and if > they want preallocation in any new work, they should use fallocate() > instead, yes? Actually, yeah agreed - I take that back. Old users are already getting them from file system headers, new ones should use fallocate. So there's no need to expose the ioctls to userspace, at least not if all we're talking about is the RESVP ioctls. --Mark -- Mark Fasheh From davidsen@tmr.com Wed Dec 17 15:38:51 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.4 required=5.0 tests=AWL,BAYES_00,HTML_MESSAGE 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 mBHLcpSc015120 for ; Wed, 17 Dec 2008 15:38:51 -0600 X-ASG-Debug-ID: 1229549928-2a1d027d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from partygirl.tmr.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D3D2717531A8 for ; Wed, 17 Dec 2008 13:38:48 -0800 (PST) Received: from partygirl.tmr.com (mail.tmr.com [64.65.253.246]) by cuda.sgi.com with ESMTP id wPI0BMuAaZGyhAoP for ; Wed, 17 Dec 2008 13:38:48 -0800 (PST) Received: from partygirl.tmr.com (FC9install.tmr.com [127.0.0.1]) by partygirl.tmr.com (8.14.2/8.14.2) with ESMTP id mBHKhB8G023635; Wed, 17 Dec 2008 15:43:18 -0500 Message-ID: <4949645F.4030407@tmr.com> Date: Wed, 17 Dec 2008 15:43:11 -0500 From: Bill Davidsen Organization: TMR Associates Inc, Schenectady NY User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.18) Gecko/20081112 Fedora/1.1.13-1.fc9 pango-text SeaMonkey/1.1.13 MIME-Version: 1.0 To: Redeeman CC: Justin Piszcz , linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com, smartmontools-support@lists.sourceforge.net X-ASG-Orig-Subj: Re: Have the velociraptors in a test system now, checkout the errors. Subject: Re: Have the velociraptors in a test system now, checkout the errors. References: <49405A94.8080601@tmr.com> <1229225303.16555.149.camel@localhost> In-Reply-To: <1229225303.16555.149.camel@localhost> X-Barracuda-Connect: mail.tmr.com[64.65.253.246] X-Barracuda-Start-Time: 1229549929 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=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.12989 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: 7bit Content-length: 3132 Redeeman wrote: > On Wed, 2008-12-10 at 19:11 -0500, Bill Davidsen wrote: > >> Justin Piszcz wrote: >> >>> Point of thread: Two problems, mentioned in detail below, NCQ in Linux >>> when used in a RAID configuration and two, something with how Linux >>> interacts with the drives causes lots of problems as when I run the WD >>> tools on the disks, they do not show any errors. >>> >>> If anyone has/would like me to run any debugging/patches/etc on this >>> system feel free to suggest/send me things to try out. After I put >>> the VR's in a test system, I left NCQ enabled and I made a 10 disk >>> raid5 to see how fast I could get it to fail, I ran bonnie++ shown >>> below as a disk benchmark/stress test: >>> >>> For the next test I will repeat this one but with NCQ disabled, having >>> NCQ enabled makes it fail very easily. Then I want to re-run the test >>> with RAID6. >>> >>> bonnie++ -d /r1/test -s 1000G -m p63 -n 16:100000:16:64 >>> >>> $ df -h >>> /dev/md3 2.5T 5.5M 2.5T 1% /r1 >>> >>> And the results? Two disk "failures" according to md/Linux within a >>> few hours as shown below: >>> >>> Note, the NCQ-related errors are what I talk about all of the time, if >>> you use >>> NCQ and Linux in a RAID environment with WD drives, well-- good luck. >>> >>> Two-disks failed out of the RAID5 and I currentlty cannot even 'see' >>> one of the drives with smartctl, will reboot the host and check sde >>> again. >>> >>> After a reboot, it comes up and has no errors, really makes one wonder >>> where/what the bugs is/are, there are two I can see: >>> 1. NCQ issue on at least WD drives in Linux in SW md/RAID >>> 2. Velociraptor/other disks reporting all kinds of sector errors etc, >>> but when you use the WD 11.x disk tools program and run all of their >>> tests it says the disks have no problems whatsoever! The smart >>> statistics do confirm this. Currently, TLER is on for all disks, for >>> the duration of these tests. >>> >> Just a few comments on this, I have several RAID arrays built on Seagate >> using NCQ, and yet to have a problem. I have NCQ on with my WD drives, >> non-RAID, and haven't had an issue with them either. The WDs run a lot >> cooler than the SG, but they are probably getting less use, as well. If >> the WD are still on sale after the holiday I may grab a few more and run >> RAID, by then I will have some small sense of trusting them. >> > Velociraptors, or which WD? > Calls itself "WDC WD10EACS-00D" in /sys if that helps. I could dig out the packing slip if it matters. Runs nicely so far, and if the SMART temperature probe is correct, very cool: /dev/sda: ST3750640AS: 43 C /dev/sdb: WDC WD10EACS-00D6B1: 31 C /dev/sdc: ST3750640AS: 44 C /dev/sdd: ST3750640AS: 46 C I don't totally trust the temps, there is a LOT of 18C air going into that box, because it has a lot coming out the back and side. -- Bill Davidsen "Woe unto the statesman who makes war without a reason that will still be valid when the war is over..." Otto von Bismark [[HTML alternate version deleted]] From davidsen@tmr.com Wed Dec 17 15:40:09 2008 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 (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 mBHLe8P6015230 for ; Wed, 17 Dec 2008 15:40:09 -0600 X-ASG-Debug-ID: 1229550006-722503630000-ps1ADW X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from partygirl.tmr.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 57E142DDE1 for ; Wed, 17 Dec 2008 13:40:06 -0800 (PST) Received: from partygirl.tmr.com (mail.tmr.com [64.65.253.246]) by cuda.sgi.com with ESMTP id pWH1rADYM7J1JIZo for ; Wed, 17 Dec 2008 13:40:06 -0800 (PST) Received: from partygirl.tmr.com (FC9install.tmr.com [127.0.0.1]) by partygirl.tmr.com (8.14.2/8.14.2) with ESMTP id mBHLe2g8023734; Wed, 17 Dec 2008 16:40:03 -0500 Message-ID: <494971B2.1000103@tmr.com> Date: Wed, 17 Dec 2008 16:40:02 -0500 From: Bill Davidsen Organization: TMR Associates Inc, Schenectady NY User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.18) Gecko/20081112 Fedora/1.1.13-1.fc9 pango-text SeaMonkey/1.1.13 MIME-Version: 1.0 To: Peter Grandi CC: Linux XFS , Linux RAID X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] References: <1229225480.16555.152.camel@localhost> <18757.4606.966139.10342@tree.ty.sabi.co.uk> <200812141912.59649.Martin@lichtvoll.de> <18757.33373.744917.457587@tree.ty.sabi.co.uk> In-Reply-To: <18757.33373.744917.457587@tree.ty.sabi.co.uk> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail.tmr.com[64.65.253.246] X-Barracuda-Start-Time: 1229550007 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.12989 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Peter Grandi wrote: > Unfortunately that seems the case. > > The purpose of barriers is to guarantee that relevant data is > known to be on persistent storage (kind of hardware 'fsync'). > > In effect write barrier means "tell me when relevant data is on > persistent storage", or less precisely "flush/sync writes now > and tell me when it is done". Properties as to ordering are just > a side effect. > I don't get that sense from the barriers stuff in Documentation, in fact I think it's essentially a pure ordering thing, I don't even see that it has an effect of forcing the data to be written to the device, other than by preventing other writes until the drive writes everything. So we read the intended use differently. What really bothers me is that there's no obvious need for barriers at the device level if the file system is just a bit smarter and does it's own async io (like aio_*), because you can track writes outstanding on a per-fd basis, so instead of stopping the flow of data to the drive, you can just block a file descriptor and wait for the count of outstanding i/o to drop to zero. That provides the order semantics of barriers as far as I can see, having tirelessly thought about it for ten minutes or so. Oh, and did something very similar decades ago in a long-gone mainframe OS. -- Bill Davidsen "Woe unto the statesman who makes war without a reason that will still be valid when the war is over..." Otto von Bismark From jpiszcz@lucidpixels.com Wed Dec 17 17:21:25 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.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 mBHNLOQ7019756 for ; Wed, 17 Dec 2008 17:21:25 -0600 X-ASG-Debug-ID: 1229556083-540c03120000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BED7D2DEC8 for ; Wed, 17 Dec 2008 15:21:23 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id Wj5GFcHo5tVdWqUA for ; Wed, 17 Dec 2008 15:21:23 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id E605F100E6EBE; Wed, 17 Dec 2008 18:21:22 -0500 (EST) Date: Wed, 17 Dec 2008 18:21:22 -0500 (EST) From: Justin Piszcz To: Bill Davidsen cc: Redeeman , linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com, smartmontools-support@lists.sourceforge.net X-ASG-Orig-Subj: Re: Have the velociraptors in a test system now, checkout the errors. Subject: Re: Have the velociraptors in a test system now, checkout the errors. In-Reply-To: <4949645F.4030407@tmr.com> Message-ID: References: <49405A94.8080601@tmr.com> <1229225303.16555.149.camel@localhost> <4949645F.4030407@tmr.com> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1229556083 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.12992 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, 17 Dec 2008, Bill Davidsen wrote: > Redeeman wrote: >> On Wed, 2008-12-10 at 19:11 -0500, Bill Davidsen wrote: >> >>> Justin Piszcz wrote: >>> > > Calls itself "WDC WD10EACS-00D" in /sys if that helps. I could dig out the > packing slip if it matters. Runs nicely so far, and if the SMART temperature > probe is correct, very cool: > > /dev/sda: ST3750640AS: 43 C > /dev/sdb: WDC WD10EACS-00D6B1: 31 C > /dev/sdc: ST3750640AS: 44 C > /dev/sdd: ST3750640AS: 46 C > > I don't totally trust the temps, there is a LOT of 18C air going into that > box, because it has a lot coming out the back and side. Hmm do you have a picture of those seagates? Seems like a lack of airflow there or do they just run really hot? Also, how many head unload/loads has the 1.0TB GP drive performed, that was one of my concerns when I was looking at disks. Justin. From felixb@sgi.com Thu Dec 18 00:52:51 2008 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=unavailable version=3.3.0-rupdated Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBI6qpC3005831; Thu, 18 Dec 2008 00:52:51 -0600 Received: from [IPv6:::1] (unknown [198.149.20.12]) by relay3.corp.sgi.com (Postfix) with ESMTP id 37DB1AC00B; Wed, 17 Dec 2008 22:52:40 -0800 (PST) In-Reply-To: <49460F88.2080408@ankitjain.org> References: <49460F88.2080408@ankitjain.org> Mime-Version: 1.0 (Apple Message framework v753.1) Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed Message-Id: <9D2593C9-08EB-486C-AAF5-E83A1EAEE9B9@sgi.com> Cc: Al Viro , Christoph Hellwig , linux-fsdevel@vger.kernel.org, mfasheh@suse.com, joel.becker@oracle.com, ocfs2-devel@oss.oracle.com, linux-kernel@vger.kernel.org, xfs-masters@oss.sgi.com, xfs@oss.sgi.com Content-Transfer-Encoding: 7bit From: Felix Blyakher Subject: Re: [PATCH][RFC] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Date: Thu, 18 Dec 2008 00:49:19 -0600 To: Ankit Jain X-Mailer: Apple Mail (2.753.1) On Dec 15, 2008, at 2:04 AM, Ankit Jain wrote: > This patch adds ioctls to vfs for compatibility with legacy XFS > pre-allocation ioctls (XFS_IOC_*RESVP*). The implementation > effectively invokes sys_fallocate for the new ioctls. I don't think we can use sys_fallocate for XFS_IOC_UNRESVSP* commands, which suppose to release currently allocated file blocks. See more comments below. Felix > Note: These legacy ioctls are also implemented by OCFS2. > > There are some things that I'm not sure about: > 1. Should the struct space_resv be exposed to user-space? If not, > then what would be the right place to put it? And the ioctl > definitions? > 2. Should the corresponding ioctls be removed from ocfs2? > > Signed-off-by: Ankit Jain > --- > fs/ioctl.c | 37 +++++++++++++++++++++++++++ > fs/open.c | 51 ++++++++++++++++++------------------- > include/linux/falloc.h | 19 ++++++++++++++ > include/linux/fs.h | 2 + > 4 files changed, 83 insertions(+), 26 deletions(-) > > diff --git a/fs/ioctl.c b/fs/ioctl.c > index 43e8b2c..5e565c8 100644 > --- a/fs/ioctl.c > +++ b/fs/ioctl.c > @@ -15,6 +15,7 @@ > #include > #include > #include > +#include > > #include > > @@ -346,6 +347,37 @@ EXPORT_SYMBOL(generic_block_fiemap); > > #endif /* CONFIG_BLOCK */ > > +/* > + * This provides compatibility with legacy XFS pre-allocation ioctls > + * which predate the fallocate syscall. > + * > + * Only the l_start, l_len and l_whence fields of the 'struct > space_resv' > + * are used here, rest are ignored. > + */ > +static int ioctl_preallocate(struct file *filp, unsigned long arg) > +{ > + struct inode *inode = filp->f_path.dentry->d_inode; > + struct space_resv sr; > + > + if (copy_from_user(&sr, (struct space_resv __user *) arg, sizeof > (sr))) > + return -EFAULT; > + > + switch (sr.l_whence) { > + case SEEK_SET: > + break; > + case SEEK_CUR: > + sr.l_start += filp->f_pos; > + break; > + case SEEK_END: > + sr.l_start += i_size_read(inode); > + break; > + default: > + return -EINVAL; > + } > + > + return do_fallocate(filp, FALLOC_FL_KEEP_SIZE, sr.l_start, > sr.l_len); > +} > + > static int file_ioctl(struct file *filp, unsigned int cmd, > unsigned long arg) > { > @@ -361,6 +393,11 @@ static int file_ioctl(struct file *filp, > unsigned int cmd, > return put_user(inode->i_sb->s_blocksize, p); > case FIONREAD: > return put_user(i_size_read(inode) - filp->f_pos, p); > + case F_IOC_RESVSP: > + case F_IOC_RESVSP64: > + case F_IOC_UNRESVSP: > + case F_IOC_UNRESVSP64: > + return ioctl_preallocate(filp, arg); At this point the original command 'cmd' is dropped, and ioctl_preallocate() assumes F_IOC_RESVSP*. Indeed, in the following path ioctl_preallocate do_fallocate .fallocate/xfs_vn_fallocate xfs_change_file_space(XFS_IOC_RESVSP) UNRESVSP is never considered. > } > > return vfs_ioctl(filp, cmd, arg); > diff --git a/fs/open.c b/fs/open.c > index 83cdb9d..0703bcb 100644 > --- a/fs/open.c > +++ b/fs/open.c > @@ -360,62 +360,61 @@ asmlinkage long sys_ftruncate64(unsigned int > fd, loff_t length) > } > #endif > > -asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, > loff_t len) > +long do_fallocate(struct file *file, int mode, loff_t offset, > loff_t len) > { > - struct file *file; > struct inode *inode; > - long ret = -EINVAL; > + long ret; > > if (offset < 0 || len <= 0) > - goto out; > + return -EINVAL; > > /* Return error if mode is not supported */ > - ret = -EOPNOTSUPP; > if (mode && !(mode & FALLOC_FL_KEEP_SIZE)) > - goto out; > + return -EOPNOTSUPP; > > - ret = -EBADF; > - file = fget(fd); > - if (!file) > - goto out; > - if (!(file->f_mode & FMODE_WRITE)) > - goto out_fput; > + if (!file || !(file->f_mode & FMODE_WRITE)) > + return -EBADF; > /* > * Revalidate the write permissions, in case security policy has > * changed since the files were opened. > */ > ret = security_file_permission(file, MAY_WRITE); > if (ret) > - goto out_fput; > + return ret; > > inode = file->f_path.dentry->d_inode; > - > - ret = -ESPIPE; > if (S_ISFIFO(inode->i_mode)) > - goto out_fput; > + return -ESPIPE; > > - ret = -ENODEV; > /* > * Let individual file system decide if it supports preallocation > * for directories or not. > */ > if (!S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode)) > - goto out_fput; > + return -ENODEV; > > - ret = -EFBIG; > /* Check for wrap through zero too */ > if (((offset + len) > inode->i_sb->s_maxbytes) || ((offset + len) > < 0)) > - goto out_fput; > + return -EFBIG; > > if (inode->i_op && inode->i_op->fallocate) > - ret = inode->i_op->fallocate(inode, mode, offset, len); > + return inode->i_op->fallocate(inode, mode, offset, len); > else > - ret = -EOPNOTSUPP; > + return -EOPNOTSUPP; > +} > > -out_fput: > - fput(file); > -out: > - return ret; > +asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, > loff_t len) > +{ > + struct file *file; > + int error = -EBADF; > + > + file = fget(fd); > + if (file) { > + error = do_fallocate(file, mode, offset, len); > + fput(file); > + } > + > + return error; > } > > /* > diff --git a/include/linux/falloc.h b/include/linux/falloc.h > index 8e912ab..4f2a727 100644 > --- a/include/linux/falloc.h > +++ b/include/linux/falloc.h > @@ -3,4 +3,23 @@ > > #define FALLOC_FL_KEEP_SIZE 0x01 /* default is extend size */ > > +/* > + * Space reservation / allocation ioctls and argument structure > + * are designed to be compatible with the legacy XFS ioctls. > + */ > +struct space_resv { > + __s16 l_type; > + __s16 l_whence; > + __s64 l_start; > + __s64 l_len; /* len == 0 means until end of file */ > + __s32 l_sysid; > + __u32 l_pid; > + __s32 l_pad[4]; /* reserve area */ > +}; > + > +#define F_IOC_RESVSP _IOW('X', 40, struct space_resv) > +#define F_IOC_UNRESVSP _IOW('X', 41, struct space_resv) > +#define F_IOC_RESVSP64 _IOW('X', 42, struct space_resv) > +#define F_IOC_UNRESVSP64 _IOW('X', 43, struct space_resv) > + > #endif /* _FALLOC_H_ */ > diff --git a/include/linux/fs.h b/include/linux/fs.h > index 4a853ef..b1d8f12 100644 > --- a/include/linux/fs.h > +++ b/include/linux/fs.h > @@ -1671,6 +1671,8 @@ static inline int break_lease(struct inode > *inode, unsigned int mode) > > extern int do_truncate(struct dentry *, loff_t start, unsigned int > time_attrs, > struct file *filp); > +extern long do_fallocate(struct file *file, int mode, loff_t offset, > + loff_t len); > extern long do_sys_open(int dfd, const char __user *filename, int > flags, > int mode); > extern struct file *filp_open(const char *, int, int); > -- > To unsubscribe from this list: send the line "unsubscribe linux- > fsdevel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html From leonw@mailcan.com Thu Dec 18 02:20:12 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.5 required=5.0 tests=BAYES_00,HTML_MESSAGE, J_CHICKENPOX_32 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 mBI8KCKJ008697 for ; Thu, 18 Dec 2008 02:20:12 -0600 X-ASG-Debug-ID: 1229588410-77b8038e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from out1.smtp.messagingengine.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 44084300E7 for ; Thu, 18 Dec 2008 00:20:10 -0800 (PST) Received: from out1.smtp.messagingengine.com (out1.smtp.messagingengine.com [66.111.4.25]) by cuda.sgi.com with ESMTP id 34bVnAwV0jT37wPv for ; Thu, 18 Dec 2008 00:20:10 -0800 (PST) Received: from compute1.internal (compute1.internal [10.202.2.41]) by out1.messagingengine.com (Postfix) with ESMTP id 822201E9314; Thu, 18 Dec 2008 03:20:10 -0500 (EST) Received: from heartbeat1.messagingengine.com ([10.202.2.160]) by compute1.internal (MEProxy); Thu, 18 Dec 2008 03:20:10 -0500 X-Sasl-enc: oP+zEnvp+q+HDAUbtjtICPindkLjPCLepgrgS6lAAMWZ 1229588410 Received: from [192.168.1.24] (82-171-51-231.ip.telfort.nl [82.171.51.231]) by mail.messagingengine.com (Postfix) with ESMTPA id 899CC11AC4; Thu, 18 Dec 2008 03:20:09 -0500 (EST) Message-ID: <494A07BA.1080008@mailcan.com> Date: Thu, 18 Dec 2008 09:20:10 +0100 From: Leon Woestenberg User-Agent: Thunderbird 2.0.0.18 (Windows/20081105) MIME-Version: 1.0 To: Bill Davidsen CC: Peter Grandi , Linux RAID , Linux XFS X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] References: <1229225480.16555.152.camel@localhost> <18757.4606.966139.10342@tree.ty.sabi.co.uk> <200812141912.59649.Martin@lichtvoll.de> <18757.33373.744917.457587@tree.ty.sabi.co.uk> <494971B2.1000103@tmr.com> In-Reply-To: <494971B2.1000103@tmr.com> X-Barracuda-Connect: out1.smtp.messagingengine.com[66.111.4.25] X-Barracuda-Start-Time: 1229588411 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=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13025 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: 7bit Content-length: 2381 Hello all, Bill Davidsen wrote: > Peter Grandi wrote: > >> Unfortunately that seems the case. >> >> The purpose of barriers is to guarantee that relevant data is >> known to be on persistent storage (kind of hardware 'fsync'). >> >> In effect write barrier means "tell me when relevant data is on >> persistent storage", or less precisely "flush/sync writes now >> and tell me when it is done". Properties as to ordering are just >> a side effect. >> >> > > I don't get that sense from the barriers stuff in Documentation, in fact > I think it's essentially a pure ordering thing, I don't even see that it > has an effect of forcing the data to be written to the device, other > than by preventing other writes until the drive writes everything. So we > read the intended use differently. > > What really bothers me is that there's no obvious need for barriers at > the device level if the file system is just a bit smarter and does it's > own async io (like aio_*), because you can track writes outstanding on a > per-fd basis, so instead of stopping the flow of data to the drive, you > can just block a file descriptor and wait for the count of outstanding > i/o to drop to zero. That provides the order semantics of barriers as > far as I can see, having tirelessly thought about it for ten minutes or > so. Oh, and did something very similar decades ago in a long-gone > mainframe OS. > Did that mainframe OS have re-ordering devices? If it did, you'ld still need barriers all the way down: The drive itself may still re-order writes, thus can cause corruption if halfway the power goes down. From my understanding, disabling write-caches simply forces the drive to operate in-order. Barriers need to travel all the way down to the point where-after everything remains in-order. Devices with write-cache enabled will still re-order, but not across barriers (which are implemented as either a single cache flush with forced unit access, or a double cache flush around the barrier write). Whether the data has made it to the drive platters is not really important from a barrier point of view, however, iff part of the data made it to the platters, then we want to be sure it was in-order. Because only in this way can we ensure that the data that is on the platters is consistent. Regards, Leon. [[HTML alternate version deleted]] From me@ankitjain.org Thu Dec 18 03:51:03 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,RCVD_IN_BRBL 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 mBI9p3gK012458 for ; Thu, 18 Dec 2008 03:51:03 -0600 X-ASG-Debug-ID: 1229593862-2cab021c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from qb-out-1314.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5A0A4AC38AB for ; Thu, 18 Dec 2008 01:51:02 -0800 (PST) Received: from qb-out-1314.google.com (qb-out-1314.google.com [72.14.204.171]) by cuda.sgi.com with ESMTP id Q8ezpG1KkyObfEYJ for ; Thu, 18 Dec 2008 01:51:02 -0800 (PST) Received: by qb-out-1314.google.com with SMTP id e19so187057qba.8 for ; Thu, 18 Dec 2008 01:51:01 -0800 (PST) Received: by 10.65.93.19 with SMTP id v19mr1398441qbl.74.1229593861576; Thu, 18 Dec 2008 01:51:01 -0800 (PST) Received: from ?164.99.138.164? (ecoprobe-dmz.gns.novell.com [192.31.114.252]) by mx.google.com with ESMTPS id p30sm2559527qbp.37.2008.12.18.01.50.55 (version=TLSv1/SSLv3 cipher=RC4-MD5); Thu, 18 Dec 2008 01:51:00 -0800 (PST) Message-ID: <494A1CE5.8020007@ankitjain.org> Date: Thu, 18 Dec 2008 15:20:29 +0530 From: Ankit Jain User-Agent: Thunderbird 2.0.0.18 (X11/20081112) MIME-Version: 1.0 To: Mark Fasheh CC: Eric Sandeen , linux-kernel@vger.kernel.org, joel.becker@oracle.com, Christoph Hellwig , xfs-masters@oss.sgi.com, Al Viro , linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, ocfs2-devel@oss.oracle.com X-ASG-Orig-Subj: Re: [xfs-masters] [PATCH][RFC] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Subject: Re: [xfs-masters] [PATCH][RFC] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls References: <49460F88.2080408@ankitjain.org> <20081217202815.GE8791@wotan.suse.de> <494969C6.4090500@sandeen.net> <20081217211550.GF8791@wotan.suse.de> In-Reply-To: <20081217211550.GF8791@wotan.suse.de> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: qb-out-1314.google.com[72.14.204.171] X-Barracuda-Start-Time: 1229593862 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.13031 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Mark Fasheh wrote: > On Wed, Dec 17, 2008 at 03:06:14PM -0600, Eric Sandeen wrote: > > Actually, yeah agreed - I take that back. Old users are already getting them > from file system headers, new ones should use fallocate. So there's no need > to expose the ioctls to userspace, at least not if all we're talking about > is the RESVP ioctls. Makes sense. So I can just keep them in falloc.h in a #ifdef __KERNEL__ ? Or should this be in a new ioctl.h ? -Ankit > --Mark > > -- > Mark Fasheh From me@ankitjain.org Thu Dec 18 03:55:19 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,RCVD_IN_BRBL 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 mBI9tIOM012569 for ; Thu, 18 Dec 2008 03:55:19 -0600 X-ASG-Debug-ID: 1229594117-42dd033a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from qb-out-1314.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DCC8B2F0CA for ; Thu, 18 Dec 2008 01:55:17 -0800 (PST) Received: from qb-out-1314.google.com (qb-out-1314.google.com [72.14.204.168]) by cuda.sgi.com with ESMTP id S1fMMNPUBQBOTdJT for ; Thu, 18 Dec 2008 01:55:17 -0800 (PST) Received: by qb-out-1314.google.com with SMTP id e19so187810qba.8 for ; Thu, 18 Dec 2008 01:55:17 -0800 (PST) Received: by 10.65.163.8 with SMTP id q8mr1405258qbo.55.1229594116977; Thu, 18 Dec 2008 01:55:16 -0800 (PST) Received: from ?164.99.138.164? (ecoprobe-dmz.gns.novell.com [192.31.114.252]) by mx.google.com with ESMTPS id k30sm3456111qba.28.2008.12.18.01.55.10 (version=TLSv1/SSLv3 cipher=RC4-MD5); Thu, 18 Dec 2008 01:55:16 -0800 (PST) Message-ID: <494A1DE3.5090203@ankitjain.org> Date: Thu, 18 Dec 2008 15:24:43 +0530 From: Ankit Jain User-Agent: Thunderbird 2.0.0.18 (X11/20081112) MIME-Version: 1.0 To: Felix Blyakher CC: Al Viro , Christoph Hellwig , linux-fsdevel@vger.kernel.org, mfasheh@suse.com, joel.becker@oracle.com, ocfs2-devel@oss.oracle.com, linux-kernel@vger.kernel.org, xfs-masters@oss.sgi.com, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH][RFC] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Subject: Re: [PATCH][RFC] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls References: <49460F88.2080408@ankitjain.org> <9D2593C9-08EB-486C-AAF5-E83A1EAEE9B9@sgi.com> In-Reply-To: <9D2593C9-08EB-486C-AAF5-E83A1EAEE9B9@sgi.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: qb-out-1314.google.com[72.14.204.168] X-Barracuda-Start-Time: 1229594117 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.13031 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Felix Blyakher wrote: > >> This patch adds ioctls to vfs for compatibility with legacy XFS >> pre-allocation ioctls (XFS_IOC_*RESVP*). The implementation >> effectively invokes sys_fallocate for the new ioctls. > > I don't think we can use sys_fallocate for XFS_IOC_UNRESVSP* > commands, which suppose to release currently allocated file > blocks. > See more comments below. My bad :( I'll drop the *UNRESV* completely from the new ioctl and post an updated patch. -Ankit From me@ankitjain.org Thu Dec 18 07:42:21 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,RCVD_IN_BRBL 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 mBIDgKfw022174 for ; Thu, 18 Dec 2008 07:42:21 -0600 X-ASG-Debug-ID: 1229607738-125b02320000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from qb-out-1314.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B9F531BF564F for ; Thu, 18 Dec 2008 05:42:18 -0800 (PST) Received: from qb-out-1314.google.com (qb-out-1314.google.com [72.14.204.170]) by cuda.sgi.com with ESMTP id 7398FjWerUJdQZaz for ; Thu, 18 Dec 2008 05:42:18 -0800 (PST) Received: by qb-out-1314.google.com with SMTP id e19so232823qba.8 for ; Thu, 18 Dec 2008 05:42:18 -0800 (PST) Received: by 10.65.158.9 with SMTP id k9mr1405143qbo.34.1229593481777; Thu, 18 Dec 2008 01:44:41 -0800 (PST) Received: from ?164.99.138.164? (ecoprobe-dmz.gns.novell.com [192.31.114.252]) by mx.google.com with ESMTPS id k29sm3485778qba.7.2008.12.18.01.44.36 (version=TLSv1/SSLv3 cipher=RC4-MD5); Thu, 18 Dec 2008 01:44:40 -0800 (PST) Message-ID: <494A1B69.70300@ankitjain.org> Date: Thu, 18 Dec 2008 15:14:09 +0530 From: Ankit Jain User-Agent: Thunderbird 2.0.0.18 (X11/20081112) MIME-Version: 1.0 To: Mark Fasheh CC: Al Viro , Christoph Hellwig , linux-fsdevel@vger.kernel.org, joel.becker@oracle.com, ocfs2-devel@oss.oracle.com, linux-kernel@vger.kernel.org, xfs-masters@oss.sgi.com, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH][RFC] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Subject: Re: [PATCH][RFC] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls References: <49460F88.2080408@ankitjain.org> <20081217202815.GE8791@wotan.suse.de> In-Reply-To: <20081217202815.GE8791@wotan.suse.de> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: qb-out-1314.google.com[72.14.204.170] X-Barracuda-Start-Time: 1229607739 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.13043 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Mark Fasheh wrote: >> 2. Should the corresponding ioctls be removed from ocfs2? > > Well, a small amount of the code in fs/ocfs2/ioctl.c can certainly go away. > Shouldn't we be talking about doing the same for xfs too? Yep. I'll cook up cleanup patches for these two and post them. -Ankit > > >> Signed-off-by: Ankit Jain >> --- >> fs/ioctl.c | 37 +++++++++++++++++++++++++++ >> fs/open.c | 51 ++++++++++++++++++------------------- >> include/linux/falloc.h | 19 ++++++++++++++ >> include/linux/fs.h | 2 + >> 4 files changed, 83 insertions(+), 26 deletions(-) >> >> diff --git a/fs/ioctl.c b/fs/ioctl.c >> index 43e8b2c..5e565c8 100644 >> --- a/fs/ioctl.c >> +++ b/fs/ioctl.c >> @@ -15,6 +15,7 @@ >> #include >> #include >> #include >> +#include >> >> #include >> >> @@ -346,6 +347,37 @@ EXPORT_SYMBOL(generic_block_fiemap); >> >> #endif /* CONFIG_BLOCK */ >> >> +/* >> + * This provides compatibility with legacy XFS pre-allocation ioctls >> + * which predate the fallocate syscall. >> + * >> + * Only the l_start, l_len and l_whence fields of the 'struct space_resv' >> + * are used here, rest are ignored. >> + */ >> +static int ioctl_preallocate(struct file *filp, unsigned long arg) >> +{ >> + struct inode *inode = filp->f_path.dentry->d_inode; >> + struct space_resv sr; >> + >> + if (copy_from_user(&sr, (struct space_resv __user *) arg, sizeof(sr))) >> + return -EFAULT; >> + >> + switch (sr.l_whence) { >> + case SEEK_SET: >> + break; >> + case SEEK_CUR: >> + sr.l_start += filp->f_pos; >> + break; >> + case SEEK_END: >> + sr.l_start += i_size_read(inode); >> + break; >> + default: >> + return -EINVAL; >> + } >> + >> + return do_fallocate(filp, FALLOC_FL_KEEP_SIZE, sr.l_start, sr.l_len); >> +} >> + >> static int file_ioctl(struct file *filp, unsigned int cmd, >> unsigned long arg) >> { >> @@ -361,6 +393,11 @@ static int file_ioctl(struct file *filp, unsigned int cmd, >> return put_user(inode->i_sb->s_blocksize, p); >> case FIONREAD: >> return put_user(i_size_read(inode) - filp->f_pos, p); >> + case F_IOC_RESVSP: >> + case F_IOC_RESVSP64: >> + case F_IOC_UNRESVSP: >> + case F_IOC_UNRESVSP64: >> + return ioctl_preallocate(filp, arg); > > This patch is not implementing proper support for F_IOC_UNRESVSP and > F_IOC_UNRESVSP64, so why are you catching those here? To be more clear, > those are used for freeing space in a file ("puching holes"), which > fallocate is not set up to do right now. > --Mark > > -- > Mark Fasheh From infocom@fibertel.com.ar Thu Dec 18 08:57:58 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.0 required=5.0 tests=BAYES_50,HTML_MESSAGE 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 mBIEvwIN027202 for ; Thu, 18 Dec 2008 08:57:58 -0600 X-ASG-Debug-ID: 1229612274-624200340000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from us-sr03-02.mta.terra.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7FCC2175AEC0 for ; Thu, 18 Dec 2008 06:57:54 -0800 (PST) Received: from us-sr03-02.mta.terra.com (us-sr03-02.mta.terra.com [208.84.242.242]) by cuda.sgi.com with ESMTP id nD0iEWRBib4w23QR for ; Thu, 18 Dec 2008 06:57:54 -0800 (PST) Received: from musoni.terra.com (musoni.terra.com [208.84.242.10]) by echunga.terra.com (Postfix) with ESMTP id 79EA41B383A4 for ; Thu, 18 Dec 2008 14:57:22 +0000 (UTC) X-Terra-Karma: 0% X-Terra-Hash: 32bba1bc650e56dfc65029803e53c3f2 Received-SPF: none (musoni.terra.com: 208.84.242.10 is neither permitted nor denied by domain of fibertel.com.ar) client-ip=208.84.242.10; envelope-from=infocom@fibertel.com.ar; helo=fibertel.com.ar; Received: from fibertel.com.ar (host234.190-137-115.telecom.net.ar [190.137.115.234]) (authenticated user aduplancic@speedy.com.ar) by musoni.terra.com (Postfix) with ESMTP id D179C2012 for ; Thu, 18 Dec 2008 14:57:21 +0000 (UTC) From: infocom@fibertel.com.ar (IdeaCom) To: linux-xfs@oss.sgi.com (linux-xfs) X-ASG-Orig-Subj: dirigido a linux-xfs Subject: dirigido a linux-xfs Date: 18 Dec 2008 12:57:10 -0200 Message-ID: <20081218125709.C032DB9F9A212A1B@fibertel.com.ar> MIME-Version: 1.0 X-Barracuda-Connect: us-sr03-02.mta.terra.com[208.84.242.242] X-Barracuda-Start-Time: 1229612274 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0329 1.0000 -1.8081 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.81 X-Barracuda-Spam-Status: No, SCORE=-1.81 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.13048 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: 199 Estimado linux-xfs: Clic aqu=ED para ver=A0la info http://elbbs65.com.ar/cam/index.htm =A0 Para darse de baja, responder con asunto: remo [[HTML alternate version deleted]] From billodo@sgi.com Thu Dec 18 09:56:48 2008 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 (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBIFum6c030005 for ; Thu, 18 Dec 2008 09:56:48 -0600 Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay1.corp.sgi.com (Postfix) with ESMTP id 75A9B8F80AF for ; Thu, 18 Dec 2008 07:56:44 -0800 (PST) Received: from lnx-billodo.americas.sgi.com (lnx-billodo.americas.sgi.com [128.162.232.245]) by estes.americas.sgi.com (Postfix) with ESMTP id D8A4870001C8 for ; Thu, 18 Dec 2008 09:56:43 -0600 (CST) Received: by lnx-billodo.americas.sgi.com (Postfix, from userid 56393) id 4F8B417E01F; Thu, 18 Dec 2008 10:02:24 -0600 (CST) Date: Thu, 18 Dec 2008 10:02:24 -0600 From: "Bill O'Donnell" To: xfs@sgi.com Subject: testing Message-ID: <20081218160224.GD18110@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.16 (2007-06-09) sfsf -- Bill O'Donnell SGI billodo@sgi.com From edvx1@systemanalysen.net Thu Dec 18 12:19:52 2008 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 mBIIJpjn007856 for ; Thu, 18 Dec 2008 12:19:52 -0600 X-ASG-Debug-ID: 1229624365-3b6902250000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ngcobalt07.manitu.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A7183175C74D for ; Thu, 18 Dec 2008 10:19:25 -0800 (PST) Received: from ngcobalt07.manitu.net (ngcobalt07.manitu.net [217.11.48.107]) by cuda.sgi.com with ESMTP id cUPf41uR3u24XkH5 for ; Thu, 18 Dec 2008 10:19:25 -0800 (PST) Received: from [192.168.1.3] (localhost [127.0.0.1]) (authenticated as reggner with PLAIN) by localhost (8.10.2/8.10.2) with ESMTP id mBIIJRd04883; Thu, 18 Dec 2008 19:19:27 +0100 X-manitu-Original-Sender-IP: 127.0.0.1 X-manitu-Original-Receiver-Name: localhost From: Roland Eggner Reply-To: "Roland Eggner" To: SGI Project XFS mailing list X-ASG-Orig-Subj: XFS ignores all atime related mount options, noatime is always in effect, documentation misses this information Subject: XFS ignores all atime related mount options, noatime is always in effect, documentation misses this information Date: Thu, 18 Dec 2008 19:15:13 +0100 User-Agent: KMail/1.9.6 MIME-Version: 1.0 Content-Disposition: inline Message-Id: <200812181915.13962.edvx1@systemanalysen.net> Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ngcobalt07.manitu.net[217.11.48.107] X-Barracuda-Start-Time: 1229624366 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.13057 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On my linux box I tried to achieve regular atime behaviour, tried mount with no atime related option at all, tried mount options atime, sync, osyncisosync, .. XFS on plain partitions, on loop devices .. I tried another kernel (sidux image with kernel 2.6.25-9) .. My result: It seems impossible to switch off "noatime" mount option. atime updates happen only in core, never on disk unless coinciding with other inode modifications, regardless of specified mount options. $ uname -a Linux roland 2.6.23.12roland2 #2 Tue Apr 15 17:10:52 CEST 2008 i686 GNU/Linux $ zgrep XFS /proc/config.gz CONFIG_XFS_FS=m # CONFIG_XFS_QUOTA is not set CONFIG_XFS_SECURITY=y CONFIG_XFS_POSIX_ACL=y CONFIG_XFS_RT=y # CONFIG_VXFS_FS is not set In mailing list archive I found http://oss.sgi.com/archives/xfs/2007-10/msg00168.html It seems, that 3 years ago an unconditional noatime enforcement has been introduced. (1) If this is true, please update documentation accordingly. Users, who need a filesystem with regular atime behaviour, will no more waste their time to try XFS, when in fact it is unusable for their particular requirements. (2) If I missed a possibility to achieve regular atime behaviour, please document it in Documentation/filesystems/xfs.txt and in man 8 mount. Thanks! -- Roland Eggner From pg_mh@sabi.co.UK Thu Dec 18 13:00:02 2008 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 mBIJ02YS010208 for ; Thu, 18 Dec 2008 13:00:02 -0600 X-ASG-Debug-ID: 1229626799-4a1102cd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ty.sabi.co.UK (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D0004321A7 for ; Thu, 18 Dec 2008 10:59:59 -0800 (PST) Received: from ty.sabi.co.UK ([192.100.78.57]) by cuda.sgi.com with ESMTP id zTpVoWdWL7N23zcw for ; Thu, 18 Dec 2008 10:59:59 -0800 (PST) Received: from from [127.0.0.1] (helo=tree.ty.sabi.co.uk) by ty.sabi.co.UK with esmtp(Exim 4.68 #1) id 1LCgzX-0006GI-78; Tue, 16 Dec 2008 20:58:07 +0000 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <18760.5684.997874.673460@tree.ty.sabi.co.uk> Date: Tue, 16 Dec 2008 20:57:24 +0000 X-Face: SMJE]JPYVBO-9UR%/8d'mG.F!@.,l@c[f'[%S8'BZIcbQc3/">GrXDwb#;fTRGNmHr^JFb SAptvwWc,0+z+~p~"Gdr4H$(|N(yF(wwCM2bW0~U?HPEE^fkPGx^u[*[yV.gyB!hDOli}EF[\cW*S H&spRGFL}{`bj1TaD^l/"[ msn( /TH#THs{Hpj>)]f>, Linux XFS X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] In-Reply-To: <200812161039.07700.Martin@lichtvoll.de> References: <18757.33373.744917.457587@tree.ty.sabi.co.uk> <20081215223857.GF32301@disturbed> <200812161039.07700.Martin@lichtvoll.de> X-Mailer: VM 7.17 under 21.5 (beta28) XEmacs Lucid From: pg_xf2@xf2.for.sabi.co.UK (Peter Grandi) X-Disclaimer: This message contains only personal opinions X-Barracuda-Connect: UNKNOWN[192.100.78.57] X-Barracuda-Start-Time: 1229626800 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1939 1.0000 -0.8603 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.76 X-Barracuda-Spam-Status: No, SCORE=-0.76 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13057 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS [ ... ] >>>> It doesn't mean that the barrier has to land immediately and >>>> the filesystem has to wait for this. At least that always was >>>> the whole point of barriers for me. If thats not the case I >>>> misunderstood the purpose of barriers to the maximum extent >>>> possible. >>> The purpose of barriers is to guarantee that relevant data is >>> known to be on persistent storage (kind of hardware 'fsync'). >> Barriers provide strong ordering semantics. [ ... ]This is all >> documented in Documentation/block/barrier.txt. Please read it >> because most of what you are saying appears to be based on >> incorrect assumptions about what barriers do. No, it is based on the assumption that we are discussing the "whole point of barriers" and "the purpose of barriers". Those are the ability to do atomic, serially dependent transactions *to stable storage*. Some people may be interested in integrity only, with potentially unbounded data loss, but most people who care about barriers are interested in reliable commit to stable storage. Then there are different types of barriers, from XFS barriers to host adapter/drive controller barriers, and even the Linux block layer "barrier" mechanism, which is arguably misdesigned, because what it does is not what it should be doing to achieve "the whole point" and "the purpose" of a barrier system, and achieving that can be quite difficult. This is somewhat controversial, and to further the understanding of the whole point of barriers and their purpose I have provided in a previous post a pointer to two very relevant discussion threads, which to me seem pretty clear. > Hmmm, so I am not completely off track it seems ;-). Well, your description seems to be based on the actual properties of the flawed implementation of barriers in current Linux, but not about the "whole point" and "purpose" that should be served by such a mechanism. The documentation of barriers in the Linux kernel makes the mess worse, because it does talk about committing to stable storage, but then gives the impression that the point and purpose is indeed ordering, which it should not be. That an ordering is imposed should be consequence of the committment of serially dependent transactions to stable storage in a consistent way, not a goal in itself. The discussion threads I mentioned previously show that the big issue is indeed having a reliable mechanism to commit transactions to stable storage, rather than provide just the transaction dependency part of that mechanism. Quite a few people think that just transaction property is too weak a purpose or point for barriers. Which point or purpose is precisely to offer the application (file system or user process like a DBMS instance) the ability to definitely commit to stable storage: > When should be a choice of the user on how much data she / > he risks to loose in case of a sudden interruption of > writing out requests. Unfortunately as I have already remarked this area, which should be crystal clear as it is important to people who need transaction persistence guarantees, is messy, with various file systems or DBMSes doing bad, dirty things because the point and purpose of barriers has been misunderstood so often (arguably even by the POSIX committee with 'fsync'/'fdatasync'). The rapid escalation of complexity of the levels and types of nonpersistent caching in current storage subsystem is so bad that reminding people that the whole point and purpose of barriers is to provide stable storage commits rather than merely ordering seems quite important to me. The way Linux block layer barriers currently work, like other aspects of that block layer (for example the absurd rationale behind the plugging/unplugging mechanism), is so misguided that it should not be confused with the whole point and purpose of barriers. From me@ankitjain.org Thu Dec 18 15:01:44 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,RCVD_IN_BRBL 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 mBIL1isO018061 for ; Thu, 18 Dec 2008 15:01:44 -0600 X-ASG-Debug-ID: 1229634102-040703450000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ag-out-0708.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EB695324AC for ; Thu, 18 Dec 2008 13:01:42 -0800 (PST) Received: from ag-out-0708.google.com (ag-out-0708.google.com [72.14.246.249]) by cuda.sgi.com with ESMTP id RiCOYGy34IoWl61j for ; Thu, 18 Dec 2008 13:01:42 -0800 (PST) Received: by ag-out-0708.google.com with SMTP id 31so426926agc.5 for ; Thu, 18 Dec 2008 13:01:42 -0800 (PST) Received: by 10.110.53.19 with SMTP id b19mr3414246tia.39.1229634100831; Thu, 18 Dec 2008 13:01:40 -0800 (PST) Received: from ?192.169.1.100? ([122.167.100.38]) by mx.google.com with ESMTPS id 14sm2040743tim.30.2008.12.18.13.01.33 (version=TLSv1/SSLv3 cipher=RC4-MD5); Thu, 18 Dec 2008 13:01:39 -0800 (PST) Message-ID: <494ABA11.2050205@ankitjain.org> Date: Fri, 19 Dec 2008 02:31:05 +0530 From: Ankit Jain User-Agent: Thunderbird 2.0.0.18 (X11/20081112) MIME-Version: 1.0 To: Mark Fasheh CC: Al Viro , Christoph Hellwig , linux-fsdevel@vger.kernel.org, joel.becker@oracle.com, ocfs2-devel@oss.oracle.com, linux-kernel@vger.kernel.org, xfs-masters@oss.sgi.com, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH][RFC] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Subject: Re: [PATCH][RFC] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls References: <49460F88.2080408@ankitjain.org> <20081217202815.GE8791@wotan.suse.de> In-Reply-To: <20081217202815.GE8791@wotan.suse.de> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ag-out-0708.google.com[72.14.246.249] X-Barracuda-Start-Time: 1229634102 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.13062 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Mark Fasheh wrote: > On Mon, Dec 15, 2008 at 01:34:24PM +0530, Ankit Jain wrote: >> 2. Should the corresponding ioctls be removed from ocfs2? > > Well, a small amount of the code in fs/ocfs2/ioctl.c can certainly go away. > Shouldn't we be talking about doing the same for xfs too? Reading the code a bit, my understanding is that as compat_ioctl is also supported and that just delegates to ioctl (ocfs2_ioctl), so we can't remove the *_RESVSP* handling. Same goes for xfs also. Does that sound fair or did I not understand it correctly? -Ankit From me@ankitjain.org Thu Dec 18 15:21:42 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,RCVD_IN_BRBL 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 mBILLfux020599 for ; Thu, 18 Dec 2008 15:21:42 -0600 X-ASG-Debug-ID: 1229635300-013403d70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ag-out-0708.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C2B1833077; Thu, 18 Dec 2008 13:21:40 -0800 (PST) Received: from ag-out-0708.google.com (ag-out-0708.google.com [72.14.246.250]) by cuda.sgi.com with ESMTP id Ws94yk2BiT31LwJg; Thu, 18 Dec 2008 13:21:40 -0800 (PST) Received: by ag-out-0708.google.com with SMTP id 31so431304agc.5 for ; Thu, 18 Dec 2008 13:21:39 -0800 (PST) Received: by 10.110.47.9 with SMTP id u9mr3452276tiu.20.1229635297972; Thu, 18 Dec 2008 13:21:37 -0800 (PST) Received: from ?192.169.1.100? ([122.167.100.38]) by mx.google.com with ESMTPS id i6sm2195057tid.36.2008.12.18.13.21.29 (version=TLSv1/SSLv3 cipher=RC4-MD5); Thu, 18 Dec 2008 13:21:36 -0800 (PST) Message-ID: <494ABEBC.8060101@ankitjain.org> Date: Fri, 19 Dec 2008 02:51:00 +0530 From: Ankit Jain User-Agent: Thunderbird 2.0.0.18 (X11/20081112) MIME-Version: 1.0 To: Al Viro CC: Christoph Hellwig , linux-fsdevel@vger.kernel.org, mfasheh@suse.com, joel.becker@oracle.com, ocfs2-devel@oss.oracle.com, linux-kernel@vger.kernel.org, xfs-masters@oss.sgi.com, xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH v2] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Subject: [PATCH v2] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ag-out-0708.google.com[72.14.246.250] X-Barracuda-Start-Time: 1229635300 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.13064 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE_7582B Custom Rule 7582B This patch adds ioctls to vfs for compatibility with legacy XFS pre-allocation ioctls (XFS_IOC_*RESVP*). The implementation effectively invokes sys_fallocate for the new ioctls. Note: These legacy ioctls are also implemented by OCFS2. Changes in v2: - Dropped the incorrect handling of *UNRESVSP* ioctl. - Made the ioctl and argument structure kernel only (__KERNEL__) Signed-off-by: Ankit Jain --- fs/ioctl.c | 35 ++++++++++++++++++++++++++ fs/open.c | 51 ++++++++++++++++++------------------- include/linux/falloc.h | 21 +++++++++++++++ include/linux/fs.h | 2 + 4 files changed, 83 insertions(+), 26 deletions(-) diff --git a/fs/ioctl.c b/fs/ioctl.c index 43e8b2c..2b3fae7 100644 --- a/fs/ioctl.c +++ b/fs/ioctl.c @@ -15,6 +15,7 @@ #include #include #include +#include #include @@ -346,6 +347,37 @@ EXPORT_SYMBOL(generic_block_fiemap); #endif /* CONFIG_BLOCK */ +/* + * This provides compatibility with legacy XFS pre-allocation ioctls + * which predate the fallocate syscall. + * + * Only the l_start, l_len and l_whence fields of the 'struct space_resv' + * are used here, rest are ignored. + */ +static int ioctl_preallocate(struct file *filp, unsigned long arg) +{ + struct inode *inode = filp->f_path.dentry->d_inode; + struct space_resv sr; + + if (copy_from_user(&sr, (struct space_resv __user *) arg, sizeof(sr))) + return -EFAULT; + + switch (sr.l_whence) { + case SEEK_SET: + break; + case SEEK_CUR: + sr.l_start += filp->f_pos; + break; + case SEEK_END: + sr.l_start += i_size_read(inode); + break; + default: + return -EINVAL; + } + + return do_fallocate(filp, FALLOC_FL_KEEP_SIZE, sr.l_start, sr.l_len); +} + static int file_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { @@ -361,6 +393,9 @@ static int file_ioctl(struct file *filp, unsigned int cmd, return put_user(inode->i_sb->s_blocksize, p); case FIONREAD: return put_user(i_size_read(inode) - filp->f_pos, p); + case F_IOC_RESVSP: + case F_IOC_RESVSP64: + return ioctl_preallocate(filp, arg); } return vfs_ioctl(filp, cmd, arg); diff --git a/fs/open.c b/fs/open.c index 83cdb9d..0703bcb 100644 --- a/fs/open.c +++ b/fs/open.c @@ -360,62 +360,61 @@ asmlinkage long sys_ftruncate64(unsigned int fd, loff_t length) } #endif -asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, loff_t len) +long do_fallocate(struct file *file, int mode, loff_t offset, loff_t len) { - struct file *file; struct inode *inode; - long ret = -EINVAL; + long ret; if (offset < 0 || len <= 0) - goto out; + return -EINVAL; /* Return error if mode is not supported */ - ret = -EOPNOTSUPP; if (mode && !(mode & FALLOC_FL_KEEP_SIZE)) - goto out; + return -EOPNOTSUPP; - ret = -EBADF; - file = fget(fd); - if (!file) - goto out; - if (!(file->f_mode & FMODE_WRITE)) - goto out_fput; + if (!file || !(file->f_mode & FMODE_WRITE)) + return -EBADF; /* * Revalidate the write permissions, in case security policy has * changed since the files were opened. */ ret = security_file_permission(file, MAY_WRITE); if (ret) - goto out_fput; + return ret; inode = file->f_path.dentry->d_inode; - - ret = -ESPIPE; if (S_ISFIFO(inode->i_mode)) - goto out_fput; + return -ESPIPE; - ret = -ENODEV; /* * Let individual file system decide if it supports preallocation * for directories or not. */ if (!S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode)) - goto out_fput; + return -ENODEV; - ret = -EFBIG; /* Check for wrap through zero too */ if (((offset + len) > inode->i_sb->s_maxbytes) || ((offset + len) < 0)) - goto out_fput; + return -EFBIG; if (inode->i_op && inode->i_op->fallocate) - ret = inode->i_op->fallocate(inode, mode, offset, len); + return inode->i_op->fallocate(inode, mode, offset, len); else - ret = -EOPNOTSUPP; + return -EOPNOTSUPP; +} -out_fput: - fput(file); -out: - return ret; +asmlinkage long sys_fallocate(int fd, int mode, loff_t offset, loff_t len) +{ + struct file *file; + int error = -EBADF; + + file = fget(fd); + if (file) { + error = do_fallocate(file, mode, offset, len); + fput(file); + } + + return error; } /* diff --git a/include/linux/falloc.h b/include/linux/falloc.h index 8e912ab..c4bf904 100644 --- a/include/linux/falloc.h +++ b/include/linux/falloc.h @@ -3,4 +3,25 @@ #define FALLOC_FL_KEEP_SIZE 0x01 /* default is extend size */ +#ifdef __KERNEL__ + +/* + * Space reservation ioctls and argument structure + * are designed to be compatible with the legacy XFS ioctls. + */ +struct space_resv { + __s16 l_type; + __s16 l_whence; + __s64 l_start; + __s64 l_len; /* len == 0 means until end of file */ + __s32 l_sysid; + __u32 l_pid; + __s32 l_pad[4]; /* reserve area */ +}; + +#define F_IOC_RESVSP _IOW('X', 40, struct space_resv) +#define F_IOC_RESVSP64 _IOW('X', 42, struct space_resv) + +#endif + #endif /* _FALLOC_H_ */ diff --git a/include/linux/fs.h b/include/linux/fs.h index 4a853ef..b1d8f12 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1671,6 +1671,8 @@ static inline int break_lease(struct inode *inode, unsigned int mode) extern int do_truncate(struct dentry *, loff_t start, unsigned int time_attrs, struct file *filp); +extern long do_fallocate(struct file *file, int mode, loff_t offset, + loff_t len); extern long do_sys_open(int dfd, const char __user *filename, int flags, int mode); extern struct file *filp_open(const char *, int, int); From david@fromorbit.com Thu Dec 18 17:10:00 2008 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 mBINA0WH029563 for ; Thu, 18 Dec 2008 17:10:00 -0600 X-ASG-Debug-ID: 1229641796-421600780000-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 1270717644AF for ; Thu, 18 Dec 2008 15:09:57 -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 eCwRVSVHbVqSBqzJ for ; Thu, 18 Dec 2008 15:09:57 -0800 (PST) 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; 19 Dec 2008 08:56:23 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LDRK1-0006a5-TF; Fri, 19 Dec 2008 09:26:21 +1100 Date: Fri, 19 Dec 2008 09:26:21 +1100 From: Dave Chinner To: Bill Davidsen Cc: Peter Grandi , Linux RAID , Linux XFS X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Message-ID: <20081218222621.GA17177@disturbed> Mail-Followup-To: Bill Davidsen , Peter Grandi , Linux RAID , Linux XFS References: <1229225480.16555.152.camel@localhost> <18757.4606.966139.10342@tree.ty.sabi.co.uk> <200812141912.59649.Martin@lichtvoll.de> <18757.33373.744917.457587@tree.ty.sabi.co.uk> <494971B2.1000103@tmr.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <494971B2.1000103@tmr.com> 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: 1229641799 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.13068 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Dec 17, 2008 at 04:40:02PM -0500, Bill Davidsen wrote: > What really bothers me is that there's no obvious need for > barriers at the device level if the file system is just a bit > smarter and does it's own async io (like aio_*), because you can > track writes outstanding on a per-fd basis, so instead of stopping > the flow of data to the drive, you can just block a file > descriptor and wait for the count of outstanding i/o to drop to > zero. That provides the order semantics of barriers as far as I > can see, having tirelessly thought about it for ten minutes or so. Well, you've pretty much described the algorithm XFS uses in it's transaction system - it's entirely asynchronous - and it's been clear for many, many years that this model is broken when you have devices with volatile write caches and internal re-ordering. I/O completion on such devices does not guarantee data is safe on stable storage. If the device does not commit writes to stable storage in the same order they are signalled as complete (i.e. internal device re-ordering occurred after completion), then the device violates fundamental assumptions about I/O completion that the above model relies on. XFS uses barriers to guarantee that the devices don't lie about the completion order of critical I/O, not that the I/Os are on stable storage. The fact that this causes cache flushes to stable storage is result of the implementation of that guarantee of ordering. I'm sure the linux barrier implementation could be smarter and faster (for some hardware), but for an operation that is used to guarantee integrity I'll take conservative and safe over smart and fast any day of the week.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From davidsen@tmr.com Thu Dec 18 17:33:21 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.4 required=5.0 tests=AWL,BAYES_00,HTML_MESSAGE, J_CHICKENPOX_32 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 mBINXKD9031122 for ; Thu, 18 Dec 2008 17:33:20 -0600 X-ASG-Debug-ID: 1229643197-420100d00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from partygirl.tmr.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3A960175EA48 for ; Thu, 18 Dec 2008 15:33:17 -0800 (PST) Received: from partygirl.tmr.com (mail.tmr.com [64.65.253.246]) by cuda.sgi.com with ESMTP id 4iRHAqQEn0nExCBa for ; Thu, 18 Dec 2008 15:33:17 -0800 (PST) Received: from partygirl.tmr.com (FC9install.tmr.com [127.0.0.1]) by partygirl.tmr.com (8.14.2/8.14.2) with ESMTP id mBINXEPK027224; Thu, 18 Dec 2008 18:33:14 -0500 Message-ID: <494ADDBA.6010105@tmr.com> Date: Thu, 18 Dec 2008 18:33:14 -0500 From: Bill Davidsen Organization: TMR Associates Inc, Schenectady NY User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.18) Gecko/20081112 Fedora/1.1.13-1.fc9 SeaMonkey/1.1.13 MIME-Version: 1.0 To: Leon Woestenberg CC: Peter Grandi , Linux RAID , Linux XFS X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] References: <1229225480.16555.152.camel@localhost> <18757.4606.966139.10342@tree.ty.sabi.co.uk> <200812141912.59649.Martin@lichtvoll.de> <18757.33373.744917.457587@tree.ty.sabi.co.uk> <494971B2.1000103@tmr.com> <494A07BA.1080008@mailcan.com> In-Reply-To: <494A07BA.1080008@mailcan.com> X-Barracuda-Connect: mail.tmr.com[64.65.253.246] X-Barracuda-Start-Time: 1229643199 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=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13069 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: 7bit Content-length: 3920 Leon Woestenberg wrote: > Hello all, > > Bill Davidsen wrote: >> Peter Grandi wrote: >> >>> Unfortunately that seems the case. >>> >>> The purpose of barriers is to guarantee that relevant data is >>> known to be on persistent storage (kind of hardware 'fsync'). >>> >>> In effect write barrier means "tell me when relevant data is on >>> persistent storage", or less precisely "flush/sync writes now >>> and tell me when it is done". Properties as to ordering are just >>> a side effect. >>> >>> >> >> I don't get that sense from the barriers stuff in Documentation, in fact >> I think it's essentially a pure ordering thing, I don't even see that it >> has an effect of forcing the data to be written to the device, other >> than by preventing other writes until the drive writes everything. So we >> read the intended use differently. >> >> What really bothers me is that there's no obvious need for barriers at >> the device level if the file system is just a bit smarter and does it's >> own async io (like aio_*), because you can track writes outstanding on a >> per-fd basis, so instead of stopping the flow of data to the drive, you >> can just block a file descriptor and wait for the count of outstanding >> i/o to drop to zero. That provides the order semantics of barriers as >> far as I can see, having tirelessly thought about it for ten minutes or >> so. Oh, and did something very similar decades ago in a long-gone >> mainframe OS. >> > Did that mainframe OS have re-ordering devices? If it did, you'ld > still need barriers all the way down: > Why? As long as you can tell when all the writes before the barrier are physically on the drive (this is on a per fd basis, remember) you don't care about the order of physical writes, you serialize either one fd, or one thread, or one application, but you don't have to kill performance for the rest of the system to the drive. So you can fsync() one fd or several, then write another thread. Or you can wait until the outstanding write could for a whole process reaches zero. And the application satisfies the needs, not the kernel, which reduces impact on other applications. > The drive itself may still re-order writes, thus can cause corruption > if halfway the power goes down. > >From my understanding, disabling write-caches simply forces the drive > to operate in-order. > If you ordering logic is 'write A, B, and C, then barrier, then write D' I don't see that the physical order of A, B, or C matters, as long as they are all complete before you write D. That's what I see in the barrier description, let previous writes finish. > Barriers need to travel all the way down to the point where-after > everything remains in-order. > Devices with write-cache enabled will still re-order, but not across > barriers (which are implemented as > either a single cache flush with forced unit access, or a double cache > flush around the barrier write). > > Whether the data has made it to the drive platters is not really > important from a barrier point of view, however, > iff part of the data made it to the platters, then we want to be sure > it was in-order. > And you could use a barrier after every write (some DB setups do fsync() after each). Perhaps you mean parts like the journal entry before a change is made, then the change, then the journal entry for transaction complete? > Because only in this way can we ensure that the data that is on the > platters is consistent. I think we mean the same thing, but I'm not totally sure. As long a logical operations are completed in order, the physical writes don't matter, because a journal rollback would reset things to consistent anyway. -- Bill Davidsen "Woe unto the statesman who makes war without a reason that will still be valid when the war is over..." Otto von Bismark [[HTML alternate version deleted]] From davidsen@tmr.com Thu Dec 18 17:38:52 2008 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 (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 mBINcpWQ031442 for ; Thu, 18 Dec 2008 17:38:52 -0600 X-ASG-Debug-ID: 1229643528-36c403300000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from partygirl.tmr.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E8E3133D22 for ; Thu, 18 Dec 2008 15:38:49 -0800 (PST) Received: from partygirl.tmr.com (mail.tmr.com [64.65.253.246]) by cuda.sgi.com with ESMTP id uwufA5eSLkyekVZ9 for ; Thu, 18 Dec 2008 15:38:49 -0800 (PST) Received: from partygirl.tmr.com (FC9install.tmr.com [127.0.0.1]) by partygirl.tmr.com (8.14.2/8.14.2) with ESMTP id mBINEOIu027185; Thu, 18 Dec 2008 18:14:25 -0500 Message-ID: <494AD950.3030802@tmr.com> Date: Thu, 18 Dec 2008 18:14:24 -0500 From: Bill Davidsen Organization: TMR Associates Inc, Schenectady NY User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.18) Gecko/20081112 Fedora/1.1.13-1.fc9 SeaMonkey/1.1.13 MIME-Version: 1.0 To: Justin Piszcz CC: Redeeman , linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com, smartmontools-support@lists.sourceforge.net X-ASG-Orig-Subj: Re: Have the velociraptors in a test system now, checkout the errors. Subject: Re: Have the velociraptors in a test system now, checkout the errors. References: <49405A94.8080601@tmr.com> <1229225303.16555.149.camel@localhost> <4949645F.4030407@tmr.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail.tmr.com[64.65.253.246] X-Barracuda-Start-Time: 1229643530 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.13069 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.20 BSF_SC0_MJ615 Custom Rule MJ615 Justin Piszcz wrote: >> >> Calls itself "WDC WD10EACS-00D" in /sys if that helps. I could dig >> out the packing slip if it matters. Runs nicely so far, and if the >> SMART temperature probe is correct, very cool: >> >> /dev/sda: ST3750640AS: 43 C >> /dev/sdb: WDC WD10EACS-00D6B1: 31 C >> /dev/sdc: ST3750640AS: 44 C >> /dev/sdd: ST3750640AS: 46 C >> >> I don't totally trust the temps, there is a LOT of 18C air going into >> that box, because it has a lot coming out the back and side. > > Hmm do you have a picture of those seagates? Seems like a lack of > airflow there > or do they just run really hot? Also, how many head unload/loads has the > 1.0TB GP drive performed, that was one of my concerns when I was > looking at > disks. How about a diagram: __________________________________________________ | | | | | | | | | | | --empty-- | (seagate) | (WD) | (seagate) | <--- case (seagate) | --empty-- | __________________________________________________| That's about how the drives sit in the case, air vents are in the front of the case, fans in back pulling air out. -- Bill Davidsen "Woe unto the statesman who makes war without a reason that will still be valid when the war is over..." Otto von Bismark From david@fromorbit.com Thu Dec 18 22:37:53 2008 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 mBJ4bqJ1015423 for ; Thu, 18 Dec 2008 22:37:53 -0600 X-ASG-Debug-ID: 1229661467-4e2000f40000-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 2B99A17658AC; Thu, 18 Dec 2008 20:37: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 eNSq9aIv0NcNEM29; Thu, 18 Dec 2008 20:37:48 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEACqESkl5LB1f/2dsb2JhbAC+UViQXYMG X-IronPort-AV: E=Sophos;i="4.36,247,1228051800"; d="scan'208";a="278977598" 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; 19 Dec 2008 15:07:44 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LDX7Q-000646-Cr; Fri, 19 Dec 2008 15:37:44 +1100 Date: Fri, 19 Dec 2008 15:37:44 +1100 From: Dave Chinner To: Ankit Jain Cc: Al Viro , mfasheh@suse.com, linux-kernel@vger.kernel.org, joel.becker@oracle.com, Christoph Hellwig , xfs-masters@oss.sgi.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, ocfs2-devel@oss.oracle.com X-ASG-Orig-Subj: Re: [PATCH v2] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Subject: Re: [PATCH v2] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Message-ID: <20081219043744.GC17177@disturbed> Mail-Followup-To: Ankit Jain , Al Viro , mfasheh@suse.com, linux-kernel@vger.kernel.org, joel.becker@oracle.com, Christoph Hellwig , xfs-masters@oss.sgi.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, ocfs2-devel@oss.oracle.com References: <494ABEBC.8060101@ankitjain.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <494ABEBC.8060101@ankitjain.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: 1229661471 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.13083 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Dec 19, 2008 at 02:51:00AM +0530, Ankit Jain wrote: > This patch adds ioctls to vfs for compatibility with legacy XFS > pre-allocation ioctls (XFS_IOC_*RESVP*). The implementation > effectively invokes sys_fallocate for the new ioctls. > Note: These legacy ioctls are also implemented by OCFS2. > > Changes in v2: > - Dropped the incorrect handling of *UNRESVSP* ioctl. > - Made the ioctl and argument structure kernel only (__KERNEL__) > > Signed-off-by: Ankit Jain ..... > @@ -361,6 +393,9 @@ static int file_ioctl(struct file *filp, unsigned int cmd, > return put_user(inode->i_sb->s_blocksize, p); > case FIONREAD: > return put_user(i_size_read(inode) - filp->f_pos, p); > + case F_IOC_RESVSP: > + case F_IOC_RESVSP64: > + return ioctl_preallocate(filp, arg); > } > > return vfs_ioctl(filp, cmd, arg); Adding this here breaks XFS_IOC_RESVSP in subtle and interesting ways. XFS_IOC_RESVSP supports invisible I/O, and that means XFS_IOC_RESVSP needs to be passed through to vfs_ioctl() to vector to XFS to handle. This happenѕ because: > +struct space_resv { > + __s16 l_type; > + __s16 l_whence; > + __s64 l_start; > + __s64 l_len; /* len == 0 means until end of file */ > + __s32 l_sysid; > + __u32 l_pid; > + __s32 l_pad[4]; /* reserve area */ > +}; > + > +#define F_IOC_RESVSP _IOW('X', 40, struct space_resv) > +#define F_IOC_RESVSP64 _IOW('X', 42, struct space_resv) Is the same as: #define XFS_IOC_RESVSP _IOW ('X', 40, struct xfs_flock64) #define XFS_IOC_RESVSP64 _IOW ('X', 42, struct xfs_flock64) because: typedef struct xfs_flock64 { __s16 l_type; __s16 l_whence; __s64 l_start; __s64 l_len; /* len == 0 means until end of file */ __s32 l_sysid; __u32 l_pid; __s32 l_pad[4]; /* reserve area */ } xfs_flock64_t; is the same size as struct space_resv. Hence existing calls to XFS_IOC_RESVSP will now vector incorrectly down the fallocate path resulting in invisible operations will now be visible.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+fe5e51a48f221a43d47f+1944+infradead.org+hch@bombadil.srs.infradead.org Fri Dec 19 02:59:20 2008 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=unavailable 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 mBJ8xIdq002409 for ; Fri, 19 Dec 2008 02:59:20 -0600 X-ASG-Debug-ID: 1229677157-47c503820000-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 7F50335231; Fri, 19 Dec 2008 00:59:17 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id jP8YGTsYx1gbHIXB; Fri, 19 Dec 2008 00:59:17 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LDbCS-0007z7-Pj; Fri, 19 Dec 2008 08:59:12 +0000 Date: Fri, 19 Dec 2008 03:59:12 -0500 From: Christoph Hellwig To: Ankit Jain , Al Viro , mfasheh@suse.com, linux-kernel@vger.kernel.org, joel.becker@oracle.com, Christoph Hellwig , xfs-masters@oss.sgi.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, ocfs2-devel@oss.oracle.com X-ASG-Orig-Subj: Re: [PATCH v2] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Subject: Re: [PATCH v2] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Message-ID: <20081219085912.GA30293@infradead.org> References: <494ABEBC.8060101@ankitjain.org> <20081219043744.GC17177@disturbed> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081219043744.GC17177@disturbed> 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: 1229677157 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Fri, Dec 19, 2008 at 03:37:44PM +1100, Dave Chinner wrote: > XFS_IOC_RESVSP supports invisible I/O, and that means > XFS_IOC_RESVSP needs to be passed through to vfs_ioctl() > to vector to XFS to handle. When the current XFS git tree gets merged to mainline before this patch. invisible I/O handling is now FMODE_NOCMTIME in file->f_flags which this patch will pass through to the filesystem. We just need to chage xfs_vn_fallocate ot honour it. From aliusman5050@centrum.cz Fri Dec 19 03:27:34 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.6 required=5.0 tests=BAYES_50,HTML_MESSAGE, UNPARSEABLE_RELAY,URG_BIZ 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 mBJ9RXPd005276 for ; Fri, 19 Dec 2008 03:27:34 -0600 X-ASG-Debug-ID: 1229678851-799f024d0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail1010.centrum.cz (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 501723545D for ; Fri, 19 Dec 2008 01:27:31 -0800 (PST) Received: from mail1010.centrum.cz (mail1010.centrum.cz [90.183.38.140]) by cuda.sgi.com with ESMTP id xZxVTkkdwGLk43TN for ; Fri, 19 Dec 2008 01:27:31 -0800 (PST) Received: by mail1010.centrum.cz id S1074316322AbYLSJ1S (ORCPT ); Fri, 19 Dec 2008 10:27:18 +0100 Received: from 41.203.235.163 (X-Forwarded-For: 41.203.235.163) by mail1010.centrum.cz (Centrum Mail) with HTTP Date: Fri, 19 Dec 2008 10:27:18 +0100 From: X-Mailer: Centrum Mail 5.0 MIME-Version: 1.0 X-Priority: 3 Message-ID: <200812191027.28067@centrum.cz> References: <200812191026.31786@centrum.cz> In-Reply-To: <200812191026.31786@centrum.cz> X-ASG-Orig-Subj: Mr Ali Usman / reply. Subject: Mr Ali Usman / reply. To: unlisted-recipients:; (no To-header on input) X-Barracuda-Connect: mail1010.centrum.cz[90.183.38.140] X-Barracuda-Start-Time: 1229678852 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5769 1.0000 0.7500 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.42 X-Barracuda-Spam-Status: No, SCORE=1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=ADVANCE_FEE_1, HTML_MESSAGE, NO_REAL_NAME, UNPARSEABLE_RELAY, URG_BIZ X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13100 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.67 URG_BIZ BODY: Contains urgent matter 0.00 NO_REAL_NAME From: does not include a real name 0.00 UNPARSEABLE_RELAY Informational: message has unparseable relay lines 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 446 I am Mr Ali Usman the Director in charge of Auditing section Bank in the Group Bank of African (B.O.A),I need your urgent assistance in transferring the sum of ($13.7 million immediately to your account.I will send you full details on how the business will be executed and also note that you will receive 40% of the above mentioned amount if you agree to help me execute this business. Thanks Mr.Ali Usman [[HTML alternate version deleted]] From Martin@lichtvoll.de Fri Dec 19 07:02:18 2008 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_28 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 mBJD2HJG024994 for ; Fri, 19 Dec 2008 07:02:18 -0600 X-ASG-Debug-ID: 1229691734-3a3d01480000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.lichtvoll.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D931D358FC for ; Fri, 19 Dec 2008 05:02:15 -0800 (PST) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id Nl3NhgL1tKB9urnl for ; Fri, 19 Dec 2008 05:02:15 -0800 (PST) Received: from shambhala.lichtvoll.local (DSL01.83.171.183.52.ip-pool.NEFkom.net [83.171.183.52]) by mail.lichtvoll.de (Postfix) with ESMTPSA id CA89D5ADE0; Fri, 19 Dec 2008 14:01:40 +0100 (CET) From: Martin Steigerwald To: Roland Eggner X-ASG-Orig-Subj: Re: XFS ignores all atime related mount options, noatime is always in effect, documentation misses this information Subject: Re: XFS ignores all atime related mount options, noatime is always in effect, documentation misses this information Date: Fri, 19 Dec 2008 14:01:38 +0100 User-Agent: KMail/1.9.9 Cc: SGI Project XFS mailing list References: <200812181915.13962.edvx1@systemanalysen.net> (sfid-20081218_195913_535609_9F401C50) In-Reply-To: <200812181915.13962.edvx1@systemanalysen.net> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200812191401.38733.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1229691735 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.13112 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Am Donnerstag 18 Dezember 2008 schrieb Roland Eggner: > On my linux box I tried to achieve regular atime behaviour, tried mount > with no atime related option at all, tried mount options atime, sync, > osyncisosync, .. XFS on plain partitions, on loop devices .. I tried > another kernel (sidux image with kernel 2.6.25-9) .. > > My result: > It seems impossible to switch off "noatime" mount option. > atime updates happen only in core, never on disk unless coinciding with > other inode modifications, regardless of specified mount options. > > $ uname -a > Linux roland 2.6.23.12roland2 #2 Tue Apr 15 17:10:52 CEST 2008 i686 > GNU/Linux I can't reproduce this on 2.6.27.7: martin@shambhala:~/Zeit> grep /home /proc/mounts /dev/sda5 /home xfs rw,relatime,attr2,nobarrier,logbufs=8,logbsize=256k,noquota 0 0 martin@shambhala:~/Zeit> echo "hallo" >hallo.txt martin@shambhala:~/Zeit> ls -l --time=atime hallo.txt -rw-r--r-- 1 martin martin 6 19. Dez 13:56 hallo.txt martin@shambhala:~/Zeit> cat hallo.txt ; ls -l --time=atime hallo.txt hallo -rw-r--r-- 1 martin martin 6 19. Dez 13:57 hallo.txt How did you test it? A reproducable test case would be fine. > $ zgrep XFS /proc/config.gz > CONFIG_XFS_FS=m > # CONFIG_XFS_QUOTA is not set > CONFIG_XFS_SECURITY=y > CONFIG_XFS_POSIX_ACL=y > CONFIG_XFS_RT=y > # CONFIG_VXFS_FS is not set martin@shambhala:~> zgrep XFS /proc/config.gz CONFIG_XFS_FS=y CONFIG_XFS_QUOTA=y CONFIG_XFS_POSIX_ACL=y CONFIG_XFS_RT=y # CONFIG_XFS_DEBUG is not set # CONFIG_VXFS_FS is not set > In mailing list archive I found > http://oss.sgi.com/archives/xfs/2007-10/msg00168.html > It seems, that 3 years ago an unconditional noatime enforcement has > been introduced. Did you look within the same mount or did you unmount and remount first? I remember there has been some issue with inode updates and unmounting, but I do not remember the details. > (2) If I missed a possibility to achieve regular atime behaviour, > please document it in Documentation/filesystems/xfs.txt and in man 8 > mount. Its either atime, relatime or noatime as mount option. Ciao, -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From SRS0+fe5e51a48f221a43d47f+1944+infradead.org+hch@bombadil.srs.infradead.org Fri Dec 19 15:44:17 2008 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 mBJLiGbn022037 for ; Fri, 19 Dec 2008 15:44:17 -0600 X-ASG-Debug-ID: 1229723052-2f1f02e90000-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 4E66C1767EA3 for ; Fri, 19 Dec 2008 13:44:12 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id gXOY0ui2gFdTGXyF for ; Fri, 19 Dec 2008 13:44:12 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LDn8m-0006XN-73; Fri, 19 Dec 2008 21:44:12 +0000 Date: Fri, 19 Dec 2008 16:44:12 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: xfstests tests not in the auto group; do we know why? Subject: Re: xfstests tests not in the auto group; do we know why? Message-ID: <20081219214411.GA18003@infradead.org> References: <49473616.1020307@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49473616.1020307@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: 1229723055 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Mon, Dec 15, 2008 at 11:01:10PM -0600, Eric Sandeen wrote: > Of the tests that are not in the auto group, do we know why they are not? > > 022: # Test out a level 0 dump/restore to a tape of a subdir > 023: # To test xfsdump/restore to tape using a directory with > 024: # Test out incremental dumps > 025: # Test dump/restore using -m option (min strategy) > 036: # Test xfsdump/restore minrmt to a remote IRIX tape > 037: # Test xfsdump/restore minrmt to a remote linux tape > 038: # Test xfsdump/restore to a remote linux tape > 039: # Test xfsdump/restore to a remote IRIX tape > 043: # Test out xfsdump/restore but rmv inventory prior to restore. > 055: # Test xfsdump/restore to a remote IRIX tape using RMT user all these won't run without a tape, but I don't see any reason not to put them into the default group. > 059: # place holder for IRIX 059 test for xfsdump/xfsrestore multi streams > 060: # place holder for IRIX 060 test for xfsdump/xfsrestore multi streams These obviously don't matter right now. Just curious, does anyone know what the multi-streams were and if there's any chance we might ever seen them on Linux? > 080: # rwtest (iogen|doio) Doesn't run under Linux anyway. Not sure why. > 071: # Exercise IO at large file offsets. Fails for me with a not really large enough FS.. > 064: # test multilevel dump and restores with hardlinks > 085: # To test log replay by shutdown of file system > 086: # To test log replay with version 2 logs > 087: # like 086 but want to create more/different kinds of metadata > 098: # simple attr tests for EAs: All these are pretty quick and seem useful. > 106: # Exercise basic xfs_quota functionality (user/group/project quota) > 107: # Project quota. > 108: # Simple quota accounting test for direct/buffered/mmap IO. We should run all these. Although 108 currently claims that my kernel doesn't support project quotas for some reason. > 109: # ENOSPC deadlock case from Asano Masahiro. > 110: # Incorrect dir2 freetab warning case from Masanori Tsuda. These take long time, but seems useful. > 111: # Infinite xfs_bulkstat bad-inode loop case from Roger Willcocks. This trips over an assert in xfs_imap_to_bp very quickly for me. Another one on the todo list.. > 113: # aio-stress Very quick one, should be default. Also simply gets skipped without libaio installed. > 115: # Test out xfs_repair_ipaths Well, claims to not run on Linux. Probably needs parent pointers, too. > 116: # Test out resetting of sb_qflags when mounting with no quotas > after having mounted with quotas. > 118: # To test out pv#940675 crash in xfs_trans_brelse + quotas > 119: # Leaking reservation space in the GRH All pretty quick ones, no reason to skip them AFAIK. > 133: # Concurrent I/O to same file to ensure no deadlocks Also a nice one. > 136: # Test the attr2 code Takes quite long, but seems useful. And I need to update it for my latest libxfs resync :) > udf tests are probably not auto out of principle? :) > 071 fails/hangs on some platforms IIRC depends on the size of the filesystem I think. Shouldn't hang. > 104 hangs ... Yeah, we should fix this eventually :) > "parent" requires code not committed(?) > "tape" group requires... tape so not auto? > > # auto - tests to be run as part of nightly qa > > I'm not sure what that means; is this group always supposed to pass? If > so there are filestreams tests that don't, for example. Maybe "tests > that don't hang?" > > I wonder if it'd be worth documenting this a bit, and have a group which > should always run & pass on the core architectures. (and for those that > don't pass, do a bit of documentation on why they don't?) I think that would be auto. I'm all for a slight reshuffling of the groups: auto - stuff that should succeed everywhere large - stuff that needs a large enough machine / fs to succeed (for whatever defintion of large) xfail - expected to fail xhang - expected to hang (should be empty normally, only for new testcases) And we might want to document which ones will not be run for some fairly standard conditions (OS mismatch and lack of tapes are the two thinks I can think of right now). Or we make the above check per-OS. Or should we just declare IRIX dead officially? From nscott@aconex.com Fri Dec 19 18:28:34 2008 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, J_CHICKENPOX_73 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 mBK0SYpA018200 for ; Fri, 19 Dec 2008 18:28:34 -0600 X-ASG-Debug-ID: 1229732910-484b02710000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from postoffice2.aconex.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A9B791B9B469 for ; Fri, 19 Dec 2008 16:28:31 -0800 (PST) Received: from postoffice2.aconex.com (mail.aconex.com [203.89.202.182]) by cuda.sgi.com with ESMTP id UuRJsdGuPbdVQbw7 for ; Fri, 19 Dec 2008 16:28:31 -0800 (PST) Received: from postoffice.aconex.com (localhost [127.0.0.1]) by postoffice2.aconex.com (Spam Firewall) with ESMTP id 1654F535B7C for ; Sat, 20 Dec 2008 11:28:29 +1100 (EST) Received: from postoffice.aconex.com (postoffice.yarra.acx [192.168.102.1]) by postoffice2.aconex.com with ESMTP id FQMWZGcdPxLBmEFU for ; Sat, 20 Dec 2008 11:28:29 +1100 (EST) Received: from [192.168.0.100] (c220-239-214-222.fernt2.vic.optusnet.com.au [220.239.214.222]) by postoffice.aconex.com (Postfix) with ESMTP id 0160692C2FB for ; Sat, 20 Dec 2008 11:28:28 +1100 (EST) X-ASG-Orig-Subj: Debian userspace updates Subject: Debian userspace updates From: Nathan Scott To: xfs@oss.sgi.com Content-Type: multipart/mixed; boundary="=-i7d+WoccmTZcRHvqQ9La" Date: Sat, 20 Dec 2008 11:25:49 +1100 Message-Id: <1229732749.4496.28.camel@verge.scott.net.au> Mime-Version: 1.0 X-Mailer: Evolution 2.22.3.1 X-Barracuda-Connect: mail.aconex.com[203.89.202.182] X-Barracuda-Start-Time: 1229732912 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.13152 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- --=-i7d+WoccmTZcRHvqQ9La Content-Type: text/plain Content-Transfer-Encoding: 7bit Hi, Here's a couple of trivial patches from updating the Debian userspace packages. Please merge - thanks! -- Nathan --=-i7d+WoccmTZcRHvqQ9La Content-Disposition: attachment; filename=bump-deb-version Content-Type: text/x-patch; name=bump-deb-version; charset=UTF-8 Content-Transfer-Encoding: 7bit Index: xfsprogs-2.10.2/debian/changelog =================================================================== --- xfsprogs-2.10.2.orig/debian/changelog 2008-12-20 11:18:09.875260474 +1100 +++ xfsprogs-2.10.2/debian/changelog 2008-12-20 11:18:13.473172568 +1100 @@ -1,3 +1,13 @@ +xfsprogs (2.10.2-1) unstable; urgency=low + + * New upstream release + * No longer ignore -i maxpct option in mkfs.xfs (closes: #500593) + * Correct features2 superblock field handling (closes: #473135) + * 32 bit emulation on 64 bit kernels works (closes: #485020) + * Fix up large sector handling in mkfs (closes: #489421) + + -- Nathan Scott Sat, 20 Dec 2008 10:14:27 +1100 + xfsprogs (2.9.8-1) unstable; urgency=low * New upstream release --=-i7d+WoccmTZcRHvqQ9La Content-Disposition: attachment; filename=fix-dir2-warn Content-Type: text/x-patch; name=fix-dir2-warn; charset=UTF-8 Content-Transfer-Encoding: 7bit Index: xfsprogs-2.10.2/libxfs/xfs_dir2.c =================================================================== --- xfsprogs-2.10.2.orig/libxfs/xfs_dir2.c 2008-12-20 11:21:21.985184849 +1100 +++ xfsprogs-2.10.2/libxfs/xfs_dir2.c 2008-12-20 11:21:33.795013403 +1100 @@ -21,6 +21,7 @@ * Top-level and utility routines. */ +#include #include extern const struct xfs_nameops xfs_default_nameops; --=-i7d+WoccmTZcRHvqQ9La-- From info@princetonpremier2009.net Fri Dec 19 22:22:31 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.0 required=5.0 tests=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 mBK4MUgZ009894 for ; Fri, 19 Dec 2008 22:22:31 -0600 X-ASG-Debug-ID: 1229746947-6725021b0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail3.princetonpremier2009.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 2186A3946A for ; Fri, 19 Dec 2008 20:22:27 -0800 (PST) Received: from mail3.princetonpremier2009.net (mail3.princetonpremier2009.net [67.228.243.233]) by cuda.sgi.com with SMTP id UdmxcaWD3P3emKLv for ; Fri, 19 Dec 2008 20:22:27 -0800 (PST) To: "linux-xfs" From: "Princeton Global Networks" Reply-To: X-ASG-Orig-Subj: Welcome to Our Global Network Subject: Welcome to Our Global Network Date: Fri, 19 Dec 2008 23:22:27 -0500 MIME-Version: 1.0 X-Barracuda-Connect: mail3.princetonpremier2009.net[67.228.243.233] X-Barracuda-Start-Time: 1229746948 Message-Id: <20081220042227.2186A3946A@cuda.sgi.com> X-Barracuda-Bayes: INNOCENT GLOBAL 0.4947 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.20 X-Barracuda-Spam-Status: No, SCORE=0.20 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.13167 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: 182 This message is a HTML message, you can not read this message correctly. Please allow HTML to be displayed to see this message in the entirety. [[HTML alternate version deleted]] From david@fromorbit.com Fri Dec 19 23:16:03 2008 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 mBK5G23A013756 for ; Fri, 19 Dec 2008 23:16:03 -0600 X-ASG-Debug-ID: 1229750160-6bac034b0000-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 A2BBE1607555 for ; Fri, 19 Dec 2008 21:16:00 -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 3UtMU8GuM1EwHsSG for ; Fri, 19 Dec 2008 21:16:00 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEALwrS0l5LB1f/2dsb2JhbAC/Q1iQa4MD X-IronPort-AV: E=Sophos;i="4.36,250,1228051800"; d="scan'208";a="279626259" 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; 20 Dec 2008 15:40:19 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LDu6S-0003Yv-0N; Sat, 20 Dec 2008 16:10:16 +1100 Date: Sat, 20 Dec 2008 16:10:15 +1100 From: Dave Chinner To: Christoph Hellwig Cc: Eric Sandeen , xfs-oss X-ASG-Orig-Subj: Re: xfstests tests not in the auto group; do we know why? Subject: Re: xfstests tests not in the auto group; do we know why? Message-ID: <20081220051015.GE17177@disturbed> Mail-Followup-To: Christoph Hellwig , Eric Sandeen , xfs-oss References: <49473616.1020307@sandeen.net> <20081219214411.GA18003@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081219214411.GA18003@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: 1229750161 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.28 X-Barracuda-Spam-Status: No, SCORE=1.28 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_VPILL X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13168 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 3.30 SUBJECT_FUZZY_VPILL Attempt to obfuscate words in Subject: On Fri, Dec 19, 2008 at 04:44:12PM -0500, Christoph Hellwig wrote: > > 104 hangs ... > > Yeah, we should fix this eventually :) Changing the locking in growfs to loop doing trylocks will prevent the deadlock. Might take a long time to get the lock though.... > > # auto - tests to be run as part of nightly qa > > > > I'm not sure what that means; is this group always supposed to pass? If > > so there are filestreams tests that don't, for example. Maybe "tests > > that don't hang?" > > > > I wonder if it'd be worth documenting this a bit, and have a group which > > should always run & pass on the core architectures. (and for those that > > don't pass, do a bit of documentation on why they don't?) > > I think that would be auto. I'm all for a slight reshuffling of the > groups: > > auto - stuff that should succeed everywhere > large - stuff that needs a large enough machine / fs to succeed > (for whatever defintion of large) > xfail - expected to fail > xhang - expected to hang > (should be empty normally, only for new testcases) I'd say we should add another: fast - tests that complete in only a few seconds so that we can run a quicker set of sanity checks while developing stuff. The current auto run takes a couple of hours under UML, which means a qa cycle doesn't keep up with the rate at which I want to test new changes...... Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Fri Dec 19 23:50:16 2008 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 mBK5oFhd017679 for ; Fri, 19 Dec 2008 23:50:16 -0600 X-ASG-Debug-ID: 1229752213-673203a70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B4CA2396ED for ; Fri, 19 Dec 2008 21:50:14 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id GD6imG0K24FPBKFi for ; Fri, 19 Dec 2008 21:50:14 -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 sandeen.net (Postfix) with ESMTP id 177CAA9ABC6; Fri, 19 Dec 2008 23:50:12 -0600 (CST) Message-ID: <494C8793.5020901@sandeen.net> Date: Fri, 19 Dec 2008 23:50:11 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Christoph Hellwig , Eric Sandeen , xfs-oss X-ASG-Orig-Subj: Re: xfstests tests not in the auto group; do we know why? Subject: Re: xfstests tests not in the auto group; do we know why? References: <49473616.1020307@sandeen.net> <20081219214411.GA18003@infradead.org> <20081220051015.GE17177@disturbed> In-Reply-To: <20081220051015.GE17177@disturbed> 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: 1229752214 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.28 X-Barracuda-Spam-Status: No, SCORE=1.28 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_VPILL X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13171 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 3.30 SUBJECT_FUZZY_VPILL Attempt to obfuscate words in Subject: Dave Chinner wrote: > I'd say we should add another: > > fast - tests that complete in only a few seconds > > so that we can run a quicker set of sanity checks while developing > stuff. The current auto run takes a couple of hours under UML, which > means a qa cycle doesn't keep up with the rate at which I want to > test new changes...... Since the tests keep track of how long they ran last time, maybe we can make that sort of auto-tuning...? Perhaps rather than "fast" - "slow" might be better because first, it'd be fewer to mark, and also I think because of how we invoke & select things, # ./check -g auto -x slow would do what you want. So is there agreement that "auto" by itself should include all tests which are expected to pass (or not run due to dependencies) reliably? Thanks, -Eric From sandeen@sandeen.net Fri Dec 19 23:52:45 2008 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 mBK5qjiS017880 for ; Fri, 19 Dec 2008 23:52:45 -0600 X-ASG-Debug-ID: 1229752363-672703b50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0876639481 for ; Fri, 19 Dec 2008 21:52:43 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id d4fOzy0rNN0D07dP for ; Fri, 19 Dec 2008 21:52:43 -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 sandeen.net (Postfix) with ESMTP id 225D1A9ABC6; Fri, 19 Dec 2008 23:52:12 -0600 (CST) Message-ID: <494C880B.5000700@sandeen.net> Date: Fri, 19 Dec 2008 23:52:11 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss X-ASG-Orig-Subj: Re: xfstests tests not in the auto group; do we know why? Subject: Re: xfstests tests not in the auto group; do we know why? References: <49473616.1020307@sandeen.net> <20081219214411.GA18003@infradead.org> In-Reply-To: <20081219214411.GA18003@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: 1229752364 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.28 X-Barracuda-Spam-Status: No, SCORE=1.28 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_VPILL X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13171 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 3.30 SUBJECT_FUZZY_VPILL Attempt to obfuscate words in Subject: Christoph Hellwig wrote: > On Mon, Dec 15, 2008 at 11:01:10PM -0600, Eric Sandeen wrote: >> Of the tests that are not in the auto group, do we know why they are not? >> >> 022: # Test out a level 0 dump/restore to a tape of a subdir >> 023: # To test xfsdump/restore to tape using a directory with >> 024: # Test out incremental dumps >> 025: # Test dump/restore using -m option (min strategy) >> 036: # Test xfsdump/restore minrmt to a remote IRIX tape >> 037: # Test xfsdump/restore minrmt to a remote linux tape >> 038: # Test xfsdump/restore to a remote linux tape >> 039: # Test xfsdump/restore to a remote IRIX tape >> 043: # Test out xfsdump/restore but rmv inventory prior to restore. >> 055: # Test xfsdump/restore to a remote IRIX tape using RMT user > > all these won't run without a tape, but I don't see any reason not > to put them into the default group. > >> 059: # place holder for IRIX 059 test for xfsdump/xfsrestore multi streams >> 060: # place holder for IRIX 060 test for xfsdump/xfsrestore multi streams > > These obviously don't matter right now. Just curious, does anyone know > what the multi-streams were and if there's any chance we might ever seen > them on Linux? > >> 080: # rwtest (iogen|doio) > > Doesn't run under Linux anyway. Not sure why. > >> 071: # Exercise IO at large file offsets. > > Fails for me with a not really large enough FS.. > >> 064: # test multilevel dump and restores with hardlinks >> 085: # To test log replay by shutdown of file system >> 086: # To test log replay with version 2 logs >> 087: # like 086 but want to create more/different kinds of metadata >> 098: # simple attr tests for EAs: > > All these are pretty quick and seem useful. > >> 106: # Exercise basic xfs_quota functionality (user/group/project quota) >> 107: # Project quota. >> 108: # Simple quota accounting test for direct/buffered/mmap IO. > > We should run all these. Although 108 currently claims that my kernel > doesn't support project quotas for some reason. > >> 109: # ENOSPC deadlock case from Asano Masahiro. >> 110: # Incorrect dir2 freetab warning case from Masanori Tsuda. > > These take long time, but seems useful. > >> 111: # Infinite xfs_bulkstat bad-inode loop case from Roger Willcocks. > > This trips over an assert in xfs_imap_to_bp very quickly for me. > Another one on the todo list.. > >> 113: # aio-stress > > Very quick one, should be default. Also simply gets skipped without > libaio installed. > >> 115: # Test out xfs_repair_ipaths > > Well, claims to not run on Linux. Probably needs parent pointers, too. > >> 116: # Test out resetting of sb_qflags when mounting with no quotas >> after having mounted with quotas. >> 118: # To test out pv#940675 crash in xfs_trans_brelse + quotas >> 119: # Leaking reservation space in the GRH > > All pretty quick ones, no reason to skip them AFAIK. > >> 133: # Concurrent I/O to same file to ensure no deadlocks > > Also a nice one. > >> 136: # Test the attr2 code > > Takes quite long, but seems useful. And I need to update it for my > latest libxfs resync :) > >> udf tests are probably not auto out of principle? :) >> 071 fails/hangs on some platforms IIRC > > depends on the size of the filesystem I think. Shouldn't hang. > >> 104 hangs ... > > Yeah, we should fix this eventually :) > >> "parent" requires code not committed(?) >> "tape" group requires... tape so not auto? >> >> # auto - tests to be run as part of nightly qa >> >> I'm not sure what that means; is this group always supposed to pass? If >> so there are filestreams tests that don't, for example. Maybe "tests >> that don't hang?" >> >> I wonder if it'd be worth documenting this a bit, and have a group which >> should always run & pass on the core architectures. (and for those that >> don't pass, do a bit of documentation on why they don't?) > > I think that would be auto. I'm all for a slight reshuffling of the > groups: > > auto - stuff that should succeed everywhere > large - stuff that needs a large enough machine / fs to succeed > (for whatever defintion of large) I'd rather have tests with any significant requirements just test for those requirements, and [notrun] if they're not present... -Eric From sandeen@sandeen.net Sat Dec 20 00:01:52 2008 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 mBK61qNY020780 for ; Sat, 20 Dec 2008 00:01:52 -0600 X-ASG-Debug-ID: 1229752910-672903c20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 18AA239551 for ; Fri, 19 Dec 2008 22:01:50 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id kUkEonYBurQRniNp for ; Fri, 19 Dec 2008 22:01:50 -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 sandeen.net (Postfix) with ESMTP id 658CEA9C530; Sat, 20 Dec 2008 00:01:50 -0600 (CST) Message-ID: <494C8A4E.5020904@sandeen.net> Date: Sat, 20 Dec 2008 00:01:50 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss X-ASG-Orig-Subj: Re: xfstests tests not in the auto group; do we know why? Subject: Re: xfstests tests not in the auto group; do we know why? References: <49473616.1020307@sandeen.net> <20081219214411.GA18003@infradead.org> In-Reply-To: <20081219214411.GA18003@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: 1229752911 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.28 X-Barracuda-Spam-Status: No, SCORE=1.28 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_VPILL X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13171 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 3.30 SUBJECT_FUZZY_VPILL Attempt to obfuscate words in Subject: Christoph Hellwig wrote: >> 080: # rwtest (iogen|doio) > > Doesn't run under Linux anyway. Not sure why. Heh, that one is funny: _supported_os IRIX [ $HOSTOS == IRIX ] && _notrun "Not working on IRIX yet" Eh? Anyway, if we add "Linux" to _supported_os and un-comment: #quiet=-q it seems to pass fine on Linux. -Eric From webmaster@tech.com Sat Dec 20 00:19:49 2008 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 mBK6JmRJ022632 for ; Sat, 20 Dec 2008 00:19:49 -0600 X-ASG-Debug-ID: 1229753982-0b4000e40000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from jalala.swiftkenya.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B7E001767382 for ; Fri, 19 Dec 2008 22:19:43 -0800 (PST) Received: from jalala.swiftkenya.com (jalala.swiftkenya.com [80.240.192.9]) by cuda.sgi.com with ESMTP id E7uhcvYqpAwxAAkn for ; Fri, 19 Dec 2008 22:19:43 -0800 (PST) Received: from jalala.swiftkenya.com (localhost.swiftkenya.com [127.0.0.1]) by jalala.swiftkenya.com (Postfix) with ESMTP id 9F337B863DB; Sat, 20 Dec 2008 09:19:09 +0300 (EAT) Received: (from www@localhost) by jalala.swiftkenya.com (8.13.6/8.13.6/Submit) id mBK6IdwK087381; Sat, 20 Dec 2008 09:18:39 +0300 (EAT) (envelope-from webmaster@tech.com) X-Authentication-Warning: jalala.swiftkenya.com: www set sender to webmaster@tech.com using -f Received: from dial-pool7.ph.starcomms.net (dial-pool7.ph.starcomms.net [41.205.164.194]) by webmail.swiftkenya.com (Horde Framework) with HTTP; Sat, 20 Dec 2008 09:18:39 +0300 Message-ID: <20081220091839.50844f06o0urlx4w@webmail.swiftkenya.com> Date: Sat, 20 Dec 2008 09:18:39 +0300 From: WEBMASTER Reply-To: technicalsecures08@yahoo.com To: undisclosed-recipients:; X-ASG-Orig-Subj: Technical Engineers Subject: Technical Engineers MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; DelSp="Yes"; format="flowed" Content-Disposition: inline Content-Transfer-Encoding: 7bit User-Agent: Internet Messaging Program (IMP) H3 (4.1.4) / FreeBSD-6.1 X-Barracuda-Connect: jalala.swiftkenya.com[80.240.192.9] X-Barracuda-Start-Time: 1229753986 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5047 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=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13173 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e Dear Subscriber, This message is from our WEBMAIL NETWORK messaging center to all email account owners. We are currently upgrading our database and e-mail account center.We are deleting all unused email account to create more space for new accounts. We recently implemented a VERY LARGE IP address block against RIPE NET Addresses due to massive spamming. To prevent your account from closing you will have to update it below so that we will know that it's a present used account. CONFIRM YOUR EMAIL IDENTITY BELOW Email Username : EMAIL Password : Date of Birth : Country or Territory : Warning!!! Account owner that refuses to update his or her account within Seven days of receiving this warning will lose his or her account permanently. ---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program. From news@studiokappa.it Sat Dec 20 04:15:22 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.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 mBKAFMPQ010135 for ; Sat, 20 Dec 2008 04:15:22 -0600 X-ASG-Debug-ID: 1229768118-621e02b70000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtpsmart3.aruba.it (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id B1F5239ACD for ; Sat, 20 Dec 2008 02:15:19 -0800 (PST) Received: from smtpsmart3.aruba.it (smtpweb101.aruba.it [62.149.158.101]) by cuda.sgi.com with SMTP id UsNRkttp1GnaWOK6 for ; Sat, 20 Dec 2008 02:15:19 -0800 (PST) Received: (qmail 16832 invoked by uid 89); 20 Dec 2008 10:08:35 -0000 Received: by simscan 1.2.0 ppid: 16805, pid: 16807, t: 1.4033s scanners: clamav: 0.88.4/m:40/d:1945 spam: 3.1.4 Received: from unknown (HELO webxc08s04.ad.aruba.it) (62.149.141.96) by smtpsmart3.fe.aruba.it with SMTP; 20 Dec 2008 10:08:34 -0000 Received: (qmail 26547 invoked by uid 18002703); 20 Dec 2008 10:08:35 -0000 To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: X Convegno Nazionale Politiche Sociali e Sistema Assistenziale Subject: X Convegno Nazionale Politiche Sociali e Sistema Assistenziale Date: Sat, 20 Dec 2008 11:08:35 +0100 From: news@studiokappa.it Message-ID: X-Priority: 3 X-Mailer: PHPMailer [version 1.73] X-Mailer: phplist v2.10.4 X-MessageID: 84 X-ListMember: linux-xfs@oss.sgi.com Precedence: bulk Errors-To: news@studiokappa.it MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="UTF-8" X-Barracuda-Connect: smtpweb101.aruba.it[62.149.158.101] X-Barracuda-Start-Time: 1229768120 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5219 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=NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13186 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name Caro amico, sperando di far cosa gradita, le indico che può trovare sul sito il materiale informativo relativo al X Convegno nazionale Politiche Sociali e Sistema Assistenziale dal titolo: "Presente e Futuro dell'Immigrazione in una Società Multietcnica e Multiculturale " che Maggioli e MartiniAssociati terranno a Rimini e Torino nel mesi di Ottobre e Dicembre 2008. Può trovare ulteriori informazioni anche all'indirizzo: www.studiokappa.it Sul sito è anche presente una rassegna stampa di alcune delle attività di consulenza e di formazione realizzate dallo studio in questi anni. Cordialmente, Segreteria Studio Kappa www.studiokappa.it -- Per cancellarti da questa lista clicca su http://www.studiokappa.it/lists/?p=unsubscribe&uid=f95d79661173a656ad12f819a35cc5d5 Per aggiornare le tue preferenze clicca su http://www.studiokappa.it/lists/?p=preferences&uid=f95d79661173a656ad12f819a35cc5d5 -- Powered by PHPlist, www.phplist.com -- From dewey@sasser.ws Sat Dec 20 05:39:31 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.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 mBKBdTI4018836 for ; Sat, 20 Dec 2008 05:39:31 -0600 X-ASG-Debug-ID: 1229773166-4129029a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mta11.charter.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D85F6D6DAA9 for ; Sat, 20 Dec 2008 03:39:26 -0800 (PST) Received: from mta11.charter.net (mta11.charter.net [216.33.127.80]) by cuda.sgi.com with ESMTP id fGhm6g0J9qRfrMTN for ; Sat, 20 Dec 2008 03:39:26 -0800 (PST) Received: from aarprv04.charter.net ([10.20.200.74]) by mta11.charter.net (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20081220113926.TDVR3882.mta11.charter.net@aarprv04.charter.net>; Sat, 20 Dec 2008 06:39:26 -0500 Received: from kitty ([24.177.50.169]) by aarprv04.charter.net with ESMTP id <20081220113925.UOXP25639.aarprv04.charter.net@kitty>; Sat, 20 Dec 2008 06:39:25 -0500 Received: from dewey by kitty with local (Exim 4.68) (envelope-from ) id 1LE0B2-0002sR-6T; Sat, 20 Dec 2008 06:39:25 -0500 Received: from mail.sasser.ws [192.168.213.5] by kitty with IMAP (fetchmail-6.3.6) for (single-drop); Sat, 20 Dec 2008 06:39:24 -0500 (EST) Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by imf25.hostedemail.com (Postfix) with ESMTP for ; Wed, 17 Dec 2008 23:22:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752214AbYLQXVZ (ORCPT ); Wed, 17 Dec 2008 18:21:25 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752163AbYLQXVY (ORCPT ); Wed, 17 Dec 2008 18:21:24 -0500 Received: from lucidpixels.com ([75.144.35.66]:38026 "EHLO lucidpixels.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752214AbYLQXVX (ORCPT ); Wed, 17 Dec 2008 18:21:23 -0500 Received: by lucidpixels.com (Postfix, from userid 1001) id E605F100E6EBE; Wed, 17 Dec 2008 18:21:22 -0500 (EST) X-Account-Key: account3 X-UIDL: 475790c50000dd1a X-Mozilla-Keys: Delivered-To: dewey@sasser.com X-FDA: 61699319682 X-Panda: scanned! X-SpamScore: 5 Date: Wed, 17 Dec 2008 18:21:22 -0500 (EST) From: Justin Piszcz To: Bill Davidsen cc: Redeeman , linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com, smartmontools-support@lists.sourceforge.net X-ASG-Orig-Subj: Re: Have the velociraptors in a test system now, checkout the errors. Subject: Re: Have the velociraptors in a test system now, checkout the errors. In-Reply-To: <4949645F.4030407@tmr.com> Message-ID: References: <49405A94.8080601@tmr.com> <1229225303.16555.149.camel@localhost> <4949645F.4030407@tmr.com> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Precedence: bulk List-ID: X-Mailing-List: linux-raid@vger.kernel.org Sender: X-Chzlrs: 0 X-Barracuda-Connect: mta11.charter.net[216.33.127.80] X-Barracuda-Start-Time: 1229773166 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.13191 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, 17 Dec 2008, Bill Davidsen wrote: > Redeeman wrote: >> On Wed, 2008-12-10 at 19:11 -0500, Bill Davidsen wrote: >> >>> Justin Piszcz wrote: >>> > > Calls itself "WDC WD10EACS-00D" in /sys if that helps. I could dig out the > packing slip if it matters. Runs nicely so far, and if the SMART temperature > probe is correct, very cool: > > /dev/sda: ST3750640AS: 43 C > /dev/sdb: WDC WD10EACS-00D6B1: 31 C > /dev/sdc: ST3750640AS: 44 C > /dev/sdd: ST3750640AS: 46 C > > I don't totally trust the temps, there is a LOT of 18C air going into that > box, because it has a lot coming out the back and side. Hmm do you have a picture of those seagates? Seems like a lack of airflow there or do they just run really hot? Also, how many head unload/loads has the 1.0TB GP drive performed, that was one of my concerns when I was looking at disks. Justin. -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From dewey@sasser.ws Sat Dec 20 05:42:33 2008 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=unavailable 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 mBKBgXaB019150 for ; Sat, 20 Dec 2008 05:42:33 -0600 X-ASG-Debug-ID: 1229773351-446f01ed0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mta11.charter.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 723EA39BB3; Sat, 20 Dec 2008 03:42:32 -0800 (PST) Received: from mta11.charter.net (mta11.charter.net [216.33.127.80]) by cuda.sgi.com with ESMTP id voKI4miS2HlEiWln; Sat, 20 Dec 2008 03:42:32 -0800 (PST) Received: from aarprv06.charter.net ([10.20.200.76]) by mta11.charter.net (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20081220114231.TEGA3882.mta11.charter.net@aarprv06.charter.net>; Sat, 20 Dec 2008 06:42:31 -0500 Received: from kitty ([24.177.50.169]) by aarprv06.charter.net with ESMTP id <20081220114231.LBLN128.aarprv06.charter.net@kitty>; Sat, 20 Dec 2008 06:42:31 -0500 Received: from dewey by kitty with local (Exim 4.68) (envelope-from ) id 1LE0E1-0003Ip-Rc; Sat, 20 Dec 2008 06:42:30 -0500 Received: from mail.sasser.ws [192.168.213.5] by kitty with IMAP (fetchmail-6.3.6) for (single-drop); Sat, 20 Dec 2008 06:42:29 -0500 (EST) Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by imf10.hostedemail.com (Postfix) with ESMTP for ; Tue, 16 Dec 2008 23:14:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752087AbYLPXOl (ORCPT ); Tue, 16 Dec 2008 18:14:41 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753273AbYLPXOl (ORCPT ); Tue, 16 Dec 2008 18:14:41 -0500 Received: from ipmail05.adl2.internode.on.net ([203.16.214.145]:62062 "EHLO ipmail05.adl2.internode.on.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752087AbYLPXOk (ORCPT ); Tue, 16 Dec 2008 18:14:40 -0500 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; 17 Dec 2008 09:44:13 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LCj7D-0005c0-QB; Wed, 17 Dec 2008 10:14:11 +1100 X-Account-Key: account3 X-UIDL: 475790c50000dc3b X-Mozilla-Keys: Delivered-To: dewey@sasser.com X-FDA: 61695672234 X-Panda: scanned! X-SpamScore: 5 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAI7ER0l5LB1f/2dsb2JhbAC9MVeROIJ/ X-IronPort-AV: E=Sophos;i="4.36,232,1228051800"; d="scan'208";a="277316678" Date: Wed, 17 Dec 2008 10:14:11 +1100 From: Dave Chinner To: Martin Steigerwald Cc: linux-xfs@oss.sgi.com, Peter Grandi , Linux RAID , Linux XFS X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Message-ID: <20081216231411.GG32301@disturbed> Mail-Followup-To: Martin Steigerwald , linux-xfs@oss.sgi.com, Peter Grandi , Linux RAID , Linux XFS References: <18757.33373.744917.457587@tree.ty.sabi.co.uk> <20081215223857.GF32301@disturbed> <200812161039.07700.Martin@lichtvoll.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <200812161039.07700.Martin@lichtvoll.de> User-Agent: Mutt/1.5.18 (2008-05-17) Precedence: bulk List-ID: X-Mailing-List: linux-raid@vger.kernel.org Sender: X-Chzlrs: 0 X-Barracuda-Connect: mta11.charter.net[216.33.127.80] X-Barracuda-Start-Time: 1229773352 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.13191 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 16, 2008 at 10:39:07AM +0100, Martin Steigerwald wrote: > Am Montag 15 Dezember 2008 schrieb Dave Chinner: > > On Sun, Dec 14, 2008 at 10:02:05PM +0000, Peter Grandi wrote: > > > The purpose of barriers is to guarantee that relevant data is > > > known to be on persistent storage (kind of hardware 'fsync'). > > > > > > In effect write barrier means "tell me when relevant data is on > > > persistent storage", or less precisely "flush/sync writes now > > > and tell me when it is done". Properties as to ordering are just > > > a side effect. > > > > No, that is incorrect. > > > > Barriers provide strong ordering semantics. I/Os issued before the > > barrier must be completed before the barrier I/O, and I/Os issued > > after the barrier write must not be started before the barrier write > > completes. The elevators are not allowed to re-оrder I/Os around > > barriers. > > > > This is all documented in Documentation/block/barrier.txt. Please > > read it because most of what you are saying appears to be based on > > incorrect assumptions about what barriers do. > > Hmmm, so I am not completely off track it seems ;-). > > What I still do not understand then is: How can write barriers + write > cache be slower than no write barriers + no cache? Because frequent write barriers cause ordering constraints on I/O. For example, in XFS log I/Os are sequential. With barriers enabled they cannot be merged by the elevator, whereas without barriers they can be merged and issued as a single I/O. Further, if you have no barrier I/os queued in the elevator, sorting and merging occurs across the entire queue of I/Os, not just the I/Os that have been issued after the last barrier I/O. Effectively the ordering constraints of barriers introduce more seeks by reducing the efficiency of the elevator due to constraining sorting and merging ranges. In many cases, the ordering constraints impose a higher seek penalty than the write cache can mitigate - the whole purpose of the barrier IOs is to force the cache to be flushed - so write caching does not improve performance when frequent barriers are issued. In this case, barriers are the problem and hence turning of the cache and barriers will result in higher performance. > I still would expect > write barriers + write cache be in between no barriers + write cache and > no barriers + no cache performance wise. Depends entirely on the disk and the workload. Some disks are faster with wcache and barriers (e.g. laptop drives), some are faster with no wcache and no barriers (e.g. server drives).... > And would see anything else as a > regression basically. No, just your usual "pick the right hardware" problem. Cheers, Dave. -- Dave Chinner david@fromorbit.com -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From dewey@sasser.ws Sat Dec 20 05:42:33 2008 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=unavailable 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 mBKBgXGt019149 for ; Sat, 20 Dec 2008 05:42:33 -0600 X-ASG-Debug-ID: 1229773351-446f01ed0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mta11.charter.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 723EA39BB3; Sat, 20 Dec 2008 03:42:32 -0800 (PST) Received: from mta11.charter.net (mta11.charter.net [216.33.127.80]) by cuda.sgi.com with ESMTP id voKI4miS2HlEiWln; Sat, 20 Dec 2008 03:42:32 -0800 (PST) Received: from aarprv06.charter.net ([10.20.200.76]) by mta11.charter.net (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20081220114231.TEGA3882.mta11.charter.net@aarprv06.charter.net>; Sat, 20 Dec 2008 06:42:31 -0500 Received: from kitty ([24.177.50.169]) by aarprv06.charter.net with ESMTP id <20081220114231.LBLN128.aarprv06.charter.net@kitty>; Sat, 20 Dec 2008 06:42:31 -0500 Received: from dewey by kitty with local (Exim 4.68) (envelope-from ) id 1LE0E1-0003Ip-Rc; Sat, 20 Dec 2008 06:42:30 -0500 Received: from mail.sasser.ws [192.168.213.5] by kitty with IMAP (fetchmail-6.3.6) for (single-drop); Sat, 20 Dec 2008 06:42:29 -0500 (EST) Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by imf10.hostedemail.com (Postfix) with ESMTP for ; Tue, 16 Dec 2008 23:14:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752087AbYLPXOl (ORCPT ); Tue, 16 Dec 2008 18:14:41 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753273AbYLPXOl (ORCPT ); Tue, 16 Dec 2008 18:14:41 -0500 Received: from ipmail05.adl2.internode.on.net ([203.16.214.145]:62062 "EHLO ipmail05.adl2.internode.on.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752087AbYLPXOk (ORCPT ); Tue, 16 Dec 2008 18:14:40 -0500 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; 17 Dec 2008 09:44:13 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LCj7D-0005c0-QB; Wed, 17 Dec 2008 10:14:11 +1100 X-Account-Key: account3 X-UIDL: 475790c50000dc3b X-Mozilla-Keys: Delivered-To: dewey@sasser.com X-FDA: 61695672234 X-Panda: scanned! X-SpamScore: 5 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAI7ER0l5LB1f/2dsb2JhbAC9MVeROIJ/ X-IronPort-AV: E=Sophos;i="4.36,232,1228051800"; d="scan'208";a="277316678" Date: Wed, 17 Dec 2008 10:14:11 +1100 From: Dave Chinner To: Martin Steigerwald Cc: linux-xfs@oss.sgi.com, Peter Grandi , Linux RAID , Linux XFS X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Message-ID: <20081216231411.GG32301@disturbed> Mail-Followup-To: Martin Steigerwald , linux-xfs@oss.sgi.com, Peter Grandi , Linux RAID , Linux XFS References: <18757.33373.744917.457587@tree.ty.sabi.co.uk> <20081215223857.GF32301@disturbed> <200812161039.07700.Martin@lichtvoll.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <200812161039.07700.Martin@lichtvoll.de> User-Agent: Mutt/1.5.18 (2008-05-17) Precedence: bulk List-ID: X-Mailing-List: linux-raid@vger.kernel.org Sender: X-Chzlrs: 0 X-Barracuda-Connect: mta11.charter.net[216.33.127.80] X-Barracuda-Start-Time: 1229773352 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.13191 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Dec 16, 2008 at 10:39:07AM +0100, Martin Steigerwald wrote: > Am Montag 15 Dezember 2008 schrieb Dave Chinner: > > On Sun, Dec 14, 2008 at 10:02:05PM +0000, Peter Grandi wrote: > > > The purpose of barriers is to guarantee that relevant data is > > > known to be on persistent storage (kind of hardware 'fsync'). > > > > > > In effect write barrier means "tell me when relevant data is on > > > persistent storage", or less precisely "flush/sync writes now > > > and tell me when it is done". Properties as to ordering are just > > > a side effect. > > > > No, that is incorrect. > > > > Barriers provide strong ordering semantics. I/Os issued before the > > barrier must be completed before the barrier I/O, and I/Os issued > > after the barrier write must not be started before the barrier write > > completes. The elevators are not allowed to re-оrder I/Os around > > barriers. > > > > This is all documented in Documentation/block/barrier.txt. Please > > read it because most of what you are saying appears to be based on > > incorrect assumptions about what barriers do. > > Hmmm, so I am not completely off track it seems ;-). > > What I still do not understand then is: How can write barriers + write > cache be slower than no write barriers + no cache? Because frequent write barriers cause ordering constraints on I/O. For example, in XFS log I/Os are sequential. With barriers enabled they cannot be merged by the elevator, whereas without barriers they can be merged and issued as a single I/O. Further, if you have no barrier I/os queued in the elevator, sorting and merging occurs across the entire queue of I/Os, not just the I/Os that have been issued after the last barrier I/O. Effectively the ordering constraints of barriers introduce more seeks by reducing the efficiency of the elevator due to constraining sorting and merging ranges. In many cases, the ordering constraints impose a higher seek penalty than the write cache can mitigate - the whole purpose of the barrier IOs is to force the cache to be flushed - so write caching does not improve performance when frequent barriers are issued. In this case, barriers are the problem and hence turning of the cache and barriers will result in higher performance. > I still would expect > write barriers + write cache be in between no barriers + write cache and > no barriers + no cache performance wise. Depends entirely on the disk and the workload. Some disks are faster with wcache and barriers (e.g. laptop drives), some are faster with no wcache and no barriers (e.g. server drives).... > And would see anything else as a > regression basically. No, just your usual "pick the right hardware" problem. Cheers, Dave. -- Dave Chinner david@fromorbit.com -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From dewey@sasser.ws Sat Dec 20 06:00:29 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 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 mBKC0Te5021117 for ; Sat, 20 Dec 2008 06:00:29 -0600 X-ASG-Debug-ID: 1229774427-5f4a01420000-ps1ADW X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from que11.charter.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8279E364E4 for ; Sat, 20 Dec 2008 04:00:27 -0800 (PST) Received: from que11.charter.net (que11.charter.net [209.225.8.21]) by cuda.sgi.com with ESMTP id Gnaxnb3ekNFNndmu for ; Sat, 20 Dec 2008 04:00:27 -0800 (PST) Received: from aarprv06.charter.net ([10.20.200.76]) by mta11.charter.net (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20081220113941.TDWQ3882.mta11.charter.net@aarprv06.charter.net>; Sat, 20 Dec 2008 06:39:41 -0500 Received: from kitty ([24.177.50.169]) by aarprv06.charter.net with ESMTP id <20081220113941.LAMC128.aarprv06.charter.net@kitty>; Sat, 20 Dec 2008 06:39:41 -0500 Received: from dewey by kitty with local (Exim 4.68) (envelope-from ) id 1LE0BI-0002ul-9Z; Sat, 20 Dec 2008 06:39:41 -0500 Received: from mail.sasser.ws [192.168.213.5] by kitty with IMAP (fetchmail-6.3.6) for (single-drop); Sat, 20 Dec 2008 06:39:40 -0500 (EST) Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by imf24.hostedemail.com (Postfix) with ESMTP for ; Wed, 17 Dec 2008 21:40:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751099AbYLQVkK (ORCPT ); Wed, 17 Dec 2008 16:40:10 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751364AbYLQVkJ (ORCPT ); Wed, 17 Dec 2008 16:40:09 -0500 Received: from mail.tmr.com ([64.65.253.246]:38488 "EHLO partygirl.tmr.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751099AbYLQVkI (ORCPT ); Wed, 17 Dec 2008 16:40:08 -0500 Received: from partygirl.tmr.com (FC9install.tmr.com [127.0.0.1]) by partygirl.tmr.com (8.14.2/8.14.2) with ESMTP id mBHLe2g8023734; Wed, 17 Dec 2008 16:40:03 -0500 X-Account-Key: account3 X-UIDL: 475790c50000dd00 X-Mozilla-Keys: Delivered-To: dewey@sasser.com X-FDA: 61699063608 X-Panda: scanned! X-SpamScore: 5 Message-ID: <494971B2.1000103@tmr.com> Date: Wed, 17 Dec 2008 16:40:02 -0500 From: Bill Davidsen Organization: TMR Associates Inc, Schenectady NY User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.18) Gecko/20081112 Fedora/1.1.13-1.fc9 pango-text SeaMonkey/1.1.13 MIME-Version: 1.0 To: Peter Grandi CC: Linux XFS , Linux RAID X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] References: <1229225480.16555.152.camel@localhost> <18757.4606.966139.10342@tree.ty.sabi.co.uk> <200812141912.59649.Martin@lichtvoll.de> <18757.33373.744917.457587@tree.ty.sabi.co.uk> In-Reply-To: <18757.33373.744917.457587@tree.ty.sabi.co.uk> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-raid@vger.kernel.org Sender: X-Chzlrs: 0 X-Barracuda-Connect: que11.charter.net[209.225.8.21] X-Barracuda-Start-Time: 1229774427 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.13193 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Peter Grandi wrote: > Unfortunately that seems the case. > > The purpose of barriers is to guarantee that relevant data is > known to be on persistent storage (kind of hardware 'fsync'). > > In effect write barrier means "tell me when relevant data is on > persistent storage", or less precisely "flush/sync writes now > and tell me when it is done". Properties as to ordering are just > a side effect. > I don't get that sense from the barriers stuff in Documentation, in fact I think it's essentially a pure ordering thing, I don't even see that it has an effect of forcing the data to be written to the device, other than by preventing other writes until the drive writes everything. So we read the intended use differently. What really bothers me is that there's no obvious need for barriers at the device level if the file system is just a bit smarter and does it's own async io (like aio_*), because you can track writes outstanding on a per-fd basis, so instead of stopping the flow of data to the drive, you can just block a file descriptor and wait for the count of outstanding i/o to drop to zero. That provides the order semantics of barriers as far as I can see, having tirelessly thought about it for ten minutes or so. Oh, and did something very similar decades ago in a long-gone mainframe OS. -- Bill Davidsen "Woe unto the statesman who makes war without a reason that will still be valid when the war is over..." Otto von Bismark -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From dewey@sasser.ws Sat Dec 20 06:47:26 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_12, J_CHICKENPOX_13,MISSING_HEADERS 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 mBKClPXi024989 for ; Sat, 20 Dec 2008 06:47:26 -0600 X-ASG-Debug-ID: 1229777242-7d9501430000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mta31.charter.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F0B5039CBC; Sat, 20 Dec 2008 04:47:23 -0800 (PST) Received: from mta31.charter.net (mta31.charter.net [216.33.127.82]) by cuda.sgi.com with ESMTP id zZbhrq6RAiGwfHcH; Sat, 20 Dec 2008 04:47:23 -0800 (PST) Received: from aarprv06.charter.net ([10.20.200.76]) by mta31.charter.net (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20081220124722.NOFO14843.mta31.charter.net@aarprv06.charter.net>; Sat, 20 Dec 2008 07:47:22 -0500 Received: from kitty ([24.177.50.169]) by aarprv06.charter.net with ESMTP id <20081220124722.MBOF128.aarprv06.charter.net@kitty>; Sat, 20 Dec 2008 07:47:22 -0500 Received: from dewey by kitty with local (Exim 4.68) (envelope-from ) id 1LE0Mm-0004f6-6S; Sat, 20 Dec 2008 06:51:33 -0500 Received: from mail.sasser.ws [192.168.213.5] by kitty with IMAP (fetchmail-6.3.6) for (single-drop); Sat, 20 Dec 2008 06:51:32 -0500 (EST) Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by imf24.hostedemail.com (Postfix) with ESMTP for ; Sat, 13 Dec 2008 17:34:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751768AbYLMRdr (ORCPT ); Sat, 13 Dec 2008 12:33:47 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751771AbYLMRdr (ORCPT ); Sat, 13 Dec 2008 12:33:47 -0500 Received: from mondschein.lichtvoll.de ([194.150.191.11]:40706 "EHLO mail.lichtvoll.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751768AbYLMRdq (ORCPT ); Sat, 13 Dec 2008 12:33:46 -0500 Received: from shambhala.lichtvoll.local (DSL01.83.171.181.147.ip-pool.NEFkom.net [83.171.181.147]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 872F75ADB7; Sat, 13 Dec 2008 18:26:27 +0100 (CET) X-Account-Key: account3 X-UIDL: 475790c50000da30 X-Mozilla-Keys: Delivered-To: dewey@sasser.com X-FDA: 61683928530 X-Panda: scanned! X-SpamScore: 5 X-Greylist: delayed 438 seconds by postgrey-1.27 at vger.kernel.org; Sat, 13 Dec 2008 12:33:46 EST From: Martin Steigerwald , "To:linux-xfs"@oss.sgi.com, "X-Mailing-List:linux-raid"@vger.kernel.org X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Date: Sat, 13 Dec 2008 18:26:19 +0100 User-Agent: KMail/1.9.9 Cc: Justin Piszcz , Eric Sandeen , linux-raid@vger.kernel.org, Alan Piszcz , xfs@oss.sgi.com References: <493A9BE7.3090001@sandeen.net> (sfid-20081213_171213_704814_AA9856DD) In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart3711614.WOcl7pU34H"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200812131826.25280.Martin@lichtvoll.de> Precedence: bulk List-ID: Sender: X-Chzlrs: 0 X-Barracuda-Connect: mta31.charter.net[216.33.127.82] X-Barracuda-Start-Time: 1229777243 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: -0.44 X-Barracuda-Spam-Status: No, SCORE=-0.44 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MISSING_HEADERS X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13195 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.58 MISSING_HEADERS Missing To: header --nextPart3711614.WOcl7pU34H Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Am Samstag 13 Dezember 2008 schrieb Justin Piszcz: > On Sat, 6 Dec 2008, Eric Sandeen wrote: > > Justin Piszcz wrote: > >> Someone should write a document with XFS and barrier support, if I > >> recall, in the past, they never worked right on raid1 or raid5 > >> devices, but it appears now they they work on RAID1, which slows > >> down performance ~12 times!! > >> > >> There is some mention of it here: > >> http://oss.sgi.com/projects/xfs/faq.html#wcache_persistent > >> > >> But basically I believe it should be noted in the kernel logs, FAQ > >> or somewhere because just through the process of upgrading the > >> kernel, not changing fstab or any other part of the system, > >> performance can drop 12x just because the newer kernels implement > >> barriers. > > > > Perhaps: > > > > printk(KERN_ALERT "XFS is now looking after your metadata very > > carefully; if you prefer the old, fast, dangerous way, mount with -o > > nobarrier\n"); > > > > :) > > > > Really, this just gets xfs on md raid1 in line with how it behaves on > > most other devices. > > > > But I agree, some documentation/education is probably in order; if > > you choose to disable write caches or you have faith in the battery > > backup of your write cache, turning off barriers would be a good > > idea. Justin, it might be interesting to do some tests with: > > > > barrier, write cache enabled > > nobarrier, write cache enabled > > nobarrier, write cache disabled > > > > a 12x hit does hurt though... If you're really motivated, try the > > same scenarios on ext3 and ext4 to see what the barrier hit is on > > those as well. > > > > -Eric > > No, I have not forgotten about this I have just been quite busy, I will > test this now, as before, I did not use sync because I was in a hurry > and did not have the ability to test, I am using a different machine/hw > type but the setup is the same, md/raid1 etc. > > Since I will only be measuring barriers, per esandeen@ I have changed > the mount options from what I typically use to the defaults. [...] > The benchmark: > # /usr/bin/time bash -c 'tar xf linux-2.6.27.8.tar; sync' > # echo 1 > /proc/sys/vm/drop_caches # (between tests) > > =3D=3D The tests =3D=3D > > KEY: > barriers =3D "b" > write_cache =3D "w" > > SUMMARY: > b=3Don,w=3Don: 1:19.53 elapsed @ 2% CPU [BENCH_1] > b=3Don,w=3Doff: 1:23.59 elapsed @ 2% CPU [BENCH_2] > b=3Doff,w=3Don: 0:21.35 elapsed @ 9% CPU [BENCH_3] > b=3Doff,w=3Doff: 0:42.90 elapsed @ 4% CPU [BENCH_4] This is quite similar to what I got on my laptop without any RAID=20 setup[1]. At least without barriers it was faster in all of my tar -xf=20 linux-2.6.27.tar.bz2 and rm -rf linux-2.6.27 tests. At the moment it appears to me that disabling write cache may often give=20 more performance than using barriers. And this doesn't match my=20 expectation of write barriers as a feature that enhances performance.=20 Right now a "nowcache" option and having this as default appears to make=20 more sense than defaulting to barriers. But I think this needs more=20 testing than just those simple high meta data load tests. Anyway I am=20 happy cause I have a way to speed up XFS ;-). [1] http://oss.sgi.com/archives/xfs/2008-12/msg00244.html Ciao, --=20 Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 --nextPart3711614.WOcl7pU34H Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAklD8DwACgkQmRvqrKWZhMc5YgCdFn8qkAOR8gtbioDIPxoNxa1y Lu0An0vJbORD40lf8QQ5rIKrcxbBLusk =Xes8 -----END PGP SIGNATURE----- --nextPart3711614.WOcl7pU34H-- -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From dewey@sasser.ws Sat Dec 20 06:47:26 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_12, J_CHICKENPOX_13,MISSING_HEADERS 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 mBKClPjE024988 for ; Sat, 20 Dec 2008 06:47:26 -0600 X-ASG-Debug-ID: 1229777242-7d9501430000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mta31.charter.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F0B5039CBC; Sat, 20 Dec 2008 04:47:23 -0800 (PST) Received: from mta31.charter.net (mta31.charter.net [216.33.127.82]) by cuda.sgi.com with ESMTP id zZbhrq6RAiGwfHcH; Sat, 20 Dec 2008 04:47:23 -0800 (PST) Received: from aarprv06.charter.net ([10.20.200.76]) by mta31.charter.net (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20081220124722.NOFO14843.mta31.charter.net@aarprv06.charter.net>; Sat, 20 Dec 2008 07:47:22 -0500 Received: from kitty ([24.177.50.169]) by aarprv06.charter.net with ESMTP id <20081220124722.MBOF128.aarprv06.charter.net@kitty>; Sat, 20 Dec 2008 07:47:22 -0500 Received: from dewey by kitty with local (Exim 4.68) (envelope-from ) id 1LE0Mm-0004f6-6S; Sat, 20 Dec 2008 06:51:33 -0500 Received: from mail.sasser.ws [192.168.213.5] by kitty with IMAP (fetchmail-6.3.6) for (single-drop); Sat, 20 Dec 2008 06:51:32 -0500 (EST) Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by imf24.hostedemail.com (Postfix) with ESMTP for ; Sat, 13 Dec 2008 17:34:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751768AbYLMRdr (ORCPT ); Sat, 13 Dec 2008 12:33:47 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751771AbYLMRdr (ORCPT ); Sat, 13 Dec 2008 12:33:47 -0500 Received: from mondschein.lichtvoll.de ([194.150.191.11]:40706 "EHLO mail.lichtvoll.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751768AbYLMRdq (ORCPT ); Sat, 13 Dec 2008 12:33:46 -0500 Received: from shambhala.lichtvoll.local (DSL01.83.171.181.147.ip-pool.NEFkom.net [83.171.181.147]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 872F75ADB7; Sat, 13 Dec 2008 18:26:27 +0100 (CET) X-Account-Key: account3 X-UIDL: 475790c50000da30 X-Mozilla-Keys: Delivered-To: dewey@sasser.com X-FDA: 61683928530 X-Panda: scanned! X-SpamScore: 5 X-Greylist: delayed 438 seconds by postgrey-1.27 at vger.kernel.org; Sat, 13 Dec 2008 12:33:46 EST From: Martin Steigerwald , "To:linux-xfs"@oss.sgi.com, "X-Mailing-List:linux-raid"@vger.kernel.org X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Date: Sat, 13 Dec 2008 18:26:19 +0100 User-Agent: KMail/1.9.9 Cc: Justin Piszcz , Eric Sandeen , linux-raid@vger.kernel.org, Alan Piszcz , xfs@oss.sgi.com References: <493A9BE7.3090001@sandeen.net> (sfid-20081213_171213_704814_AA9856DD) In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart3711614.WOcl7pU34H"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200812131826.25280.Martin@lichtvoll.de> Precedence: bulk List-ID: Sender: X-Chzlrs: 0 X-Barracuda-Connect: mta31.charter.net[216.33.127.82] X-Barracuda-Start-Time: 1229777243 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: -0.44 X-Barracuda-Spam-Status: No, SCORE=-0.44 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MISSING_HEADERS X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13195 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.58 MISSING_HEADERS Missing To: header --nextPart3711614.WOcl7pU34H Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Am Samstag 13 Dezember 2008 schrieb Justin Piszcz: > On Sat, 6 Dec 2008, Eric Sandeen wrote: > > Justin Piszcz wrote: > >> Someone should write a document with XFS and barrier support, if I > >> recall, in the past, they never worked right on raid1 or raid5 > >> devices, but it appears now they they work on RAID1, which slows > >> down performance ~12 times!! > >> > >> There is some mention of it here: > >> http://oss.sgi.com/projects/xfs/faq.html#wcache_persistent > >> > >> But basically I believe it should be noted in the kernel logs, FAQ > >> or somewhere because just through the process of upgrading the > >> kernel, not changing fstab or any other part of the system, > >> performance can drop 12x just because the newer kernels implement > >> barriers. > > > > Perhaps: > > > > printk(KERN_ALERT "XFS is now looking after your metadata very > > carefully; if you prefer the old, fast, dangerous way, mount with -o > > nobarrier\n"); > > > > :) > > > > Really, this just gets xfs on md raid1 in line with how it behaves on > > most other devices. > > > > But I agree, some documentation/education is probably in order; if > > you choose to disable write caches or you have faith in the battery > > backup of your write cache, turning off barriers would be a good > > idea. Justin, it might be interesting to do some tests with: > > > > barrier, write cache enabled > > nobarrier, write cache enabled > > nobarrier, write cache disabled > > > > a 12x hit does hurt though... If you're really motivated, try the > > same scenarios on ext3 and ext4 to see what the barrier hit is on > > those as well. > > > > -Eric > > No, I have not forgotten about this I have just been quite busy, I will > test this now, as before, I did not use sync because I was in a hurry > and did not have the ability to test, I am using a different machine/hw > type but the setup is the same, md/raid1 etc. > > Since I will only be measuring barriers, per esandeen@ I have changed > the mount options from what I typically use to the defaults. [...] > The benchmark: > # /usr/bin/time bash -c 'tar xf linux-2.6.27.8.tar; sync' > # echo 1 > /proc/sys/vm/drop_caches # (between tests) > > =3D=3D The tests =3D=3D > > KEY: > barriers =3D "b" > write_cache =3D "w" > > SUMMARY: > b=3Don,w=3Don: 1:19.53 elapsed @ 2% CPU [BENCH_1] > b=3Don,w=3Doff: 1:23.59 elapsed @ 2% CPU [BENCH_2] > b=3Doff,w=3Don: 0:21.35 elapsed @ 9% CPU [BENCH_3] > b=3Doff,w=3Doff: 0:42.90 elapsed @ 4% CPU [BENCH_4] This is quite similar to what I got on my laptop without any RAID=20 setup[1]. At least without barriers it was faster in all of my tar -xf=20 linux-2.6.27.tar.bz2 and rm -rf linux-2.6.27 tests. At the moment it appears to me that disabling write cache may often give=20 more performance than using barriers. And this doesn't match my=20 expectation of write barriers as a feature that enhances performance.=20 Right now a "nowcache" option and having this as default appears to make=20 more sense than defaulting to barriers. But I think this needs more=20 testing than just those simple high meta data load tests. Anyway I am=20 happy cause I have a way to speed up XFS ;-). [1] http://oss.sgi.com/archives/xfs/2008-12/msg00244.html Ciao, --=20 Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 --nextPart3711614.WOcl7pU34H Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAklD8DwACgkQmRvqrKWZhMc5YgCdFn8qkAOR8gtbioDIPxoNxa1y Lu0An0vJbORD40lf8QQ5rIKrcxbBLusk =Xes8 -----END PGP SIGNATURE----- --nextPart3711614.WOcl7pU34H-- -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From dewey@sasser.ws Sat Dec 20 06:47:59 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.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 mBKClxBC025068 for ; Sat, 20 Dec 2008 06:47:59 -0600 X-ASG-Debug-ID: 1229777276-7d9601520000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mta21.charter.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0D0F539CC4 for ; Sat, 20 Dec 2008 04:47:56 -0800 (PST) Received: from mta21.charter.net (mta21.charter.net [216.33.127.81]) by cuda.sgi.com with ESMTP id 5Sd1op6prJgf0tDd for ; Sat, 20 Dec 2008 04:47:56 -0800 (PST) Received: from aarprv04.charter.net ([10.20.200.74]) by mta21.charter.net (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20081220124756.QCHZ20903.mta21.charter.net@aarprv04.charter.net>; Sat, 20 Dec 2008 07:47:56 -0500 Received: from kitty ([24.177.50.169]) by aarprv04.charter.net with ESMTP id <20081220124756.VPWV25639.aarprv04.charter.net@kitty>; Sat, 20 Dec 2008 07:47:56 -0500 Received: from dewey by kitty with local (Exim 4.68) (envelope-from ) id 1LE0O2-0004qG-Gx; Sat, 20 Dec 2008 06:52:51 -0500 Received: from mail.sasser.ws [192.168.213.5] by kitty with IMAP (fetchmail-6.3.6) for (single-drop); Sat, 20 Dec 2008 06:52:50 -0500 (EST) Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by imf24.hostedemail.com (Postfix) with ESMTP for ; Fri, 12 Dec 2008 20:24:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751464AbYLLUXW (ORCPT ); Fri, 12 Dec 2008 15:23:22 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752086AbYLLUXW (ORCPT ); Fri, 12 Dec 2008 15:23:22 -0500 Received: from lucidpixels.com ([75.144.35.66]:41397 "EHLO lucidpixels.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751464AbYLLUXV (ORCPT ); Fri, 12 Dec 2008 15:23:21 -0500 Received: by lucidpixels.com (Postfix, from userid 1001) id DBB20100E6EC5; Fri, 12 Dec 2008 15:23:19 -0500 (EST) X-Account-Key: account3 X-UIDL: 475790c50000d9d7 X-Mozilla-Keys: Delivered-To: dewey@sasser.com X-FDA: 61680726366 X-Panda: scanned! X-SpamScore: 5 Date: Fri, 12 Dec 2008 15:23:19 -0500 (EST) From: Justin Piszcz To: "Pavel Machek cc": pavel@suse.cz, smartmontools-database-owner@lists.sourceforge.net, linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org, xfs@oss.sgi.com, "Alan Piszcz X-Mailing-List": ap@solarrain.com X-ASG-Orig-Subj: Re: Intel X25-E running Linux using XFS Subject: Re: Intel X25-E running Linux using XFS In-Reply-To: <20081212185803.GE11974@elf.ucw.cz> Message-ID: References: <20081212185803.GE11974@elf.ucw.cz> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Precedence: bulk List-ID: Sender: X-Chzlrs: 0 X-Barracuda-Connect: mta21.charter.net[216.33.127.81] X-Barracuda-Start-Time: 1229777277 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.13195 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, 12 Dec 2008, Pavel Machek wrote: > > Hi! > >> Due to the 100k write cycle lifetime, I will not be performing any more >> benchmarks on the SSD itself, such benchmarks are available on >> techreport.com but just wanted to send out the smart data for the >> smartmontools list and point out it is working with linux+ich7+xfs. >> >> Overall, whenever I do anything now its just like the entire machine is >> sitting in a ramdisk (similar when you boot knoppix and load to ramdisk). >> >> The techreport benchmarks are here: >> http://techreport.com/articles.x/15931 > > Actually I'd like to know... how does it behave during powerfails > while it is being written to? > > Flashes I seen (USB / SD) developed bad sectors in that case, and > ext2/ext3 can't handle that. (And I don't think xfs can handle that > either). I have a UPS for all of my machines, so that will not be a problem in my case. I do not wish to trash a $720 SSD or my current install, if someone else wants to try feel free though :) With barriers, presumably it would be safe-- but as always, a UPS/and barriers and/or RAID, there is no excuse not to have regular backups incase of a failure at any time.. I do recall however one instance where there was an apt-get dist-upgrade going and the power was cut to a machine on purpose (before/not using barriers) and suffice to say-- it got mucked/suffered many corruptions all over the place. Justin. -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From dewey@sasser.ws Sat Dec 20 06:48:49 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_12, J_CHICKENPOX_13 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 mBKCmnlU025494 for ; Sat, 20 Dec 2008 06:48:49 -0600 X-ASG-Debug-ID: 1229777327-608103820000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mta11.charter.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3A1B21B9C022 for ; Sat, 20 Dec 2008 04:48:47 -0800 (PST) Received: from mta11.charter.net (mta11.charter.net [216.33.127.80]) by cuda.sgi.com with ESMTP id MYPB54KnCdpuS1YO for ; Sat, 20 Dec 2008 04:48:47 -0800 (PST) Received: from aarprv04.charter.net ([10.20.200.74]) by mta11.charter.net (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20081220124847.TNWV3882.mta11.charter.net@aarprv04.charter.net>; Sat, 20 Dec 2008 07:48:47 -0500 Received: from kitty ([24.177.50.169]) by aarprv04.charter.net with ESMTP id <20081220124847.VQHV25639.aarprv04.charter.net@kitty>; Sat, 20 Dec 2008 07:48:47 -0500 Received: from dewey by kitty with local (Exim 4.68) (envelope-from ) id 1LE0My-0004gt-83; Sat, 20 Dec 2008 06:51:45 -0500 Received: from mail.sasser.ws [192.168.213.5] by kitty with IMAP (fetchmail-6.3.6) for (single-drop); Sat, 20 Dec 2008 06:51:44 -0500 (EST) Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by imf26.hostedemail.com (Postfix) with ESMTP for ; Sat, 13 Dec 2008 12:55:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754832AbYLMMys (ORCPT ); Sat, 13 Dec 2008 07:54:48 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755478AbYLMMys (ORCPT ); Sat, 13 Dec 2008 07:54:48 -0500 Received: from lucidpixels.com ([75.144.35.66]:60524 "EHLO lucidpixels.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754832AbYLMMyr (ORCPT ); Sat, 13 Dec 2008 07:54:47 -0500 Received: by lucidpixels.com (Postfix, from userid 1001) id BE50910050218; Sat, 13 Dec 2008 07:54:45 -0500 (EST) X-Account-Key: account3 X-UIDL: 475790c50000da1b X-Mozilla-Keys: Delivered-To: dewey@sasser.com X-FDA: 61683223896 X-Panda: scanned! X-SpamScore: 5 Date: Sat, 13 Dec 2008 07:54:45 -0500 (EST) From: Justin Piszcz To: Eric Sandeen cc: linux-raid@vger.kernel.org, xfs@oss.sgi.com, Alan Piszcz X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] In-Reply-To: <493A9BE7.3090001@sandeen.net> Message-ID: References: <493A9BE7.3090001@sandeen.net> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Precedence: bulk List-ID: X-Mailing-List: linux-raid@vger.kernel.org Sender: X-Chzlrs: 0 X-Barracuda-Connect: mta11.charter.net[216.33.127.80] X-Barracuda-Start-Time: 1229777328 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.13195 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, 6 Dec 2008, Eric Sandeen wrote: > Justin Piszcz wrote: >> Someone should write a document with XFS and barrier support, if I recall, >> in the past, they never worked right on raid1 or raid5 devices, but it >> appears now they they work on RAID1, which slows down performance ~12 times!! > >> There is some mention of it here: >> http://oss.sgi.com/projects/xfs/faq.html#wcache_persistent >> >> But basically I believe it should be noted in the kernel logs, FAQ or somewhere >> because just through the process of upgrading the kernel, not changing fstab >> or any other part of the system, performance can drop 12x just because the >> newer kernels implement barriers. > > Perhaps: > > printk(KERN_ALERT "XFS is now looking after your metadata very > carefully; if you prefer the old, fast, dangerous way, mount with -o > nobarrier\n"); > > :) > > Really, this just gets xfs on md raid1 in line with how it behaves on > most other devices. > > But I agree, some documentation/education is probably in order; if you > choose to disable write caches or you have faith in the battery backup > of your write cache, turning off barriers would be a good idea. Justin, > it might be interesting to do some tests with: > > barrier, write cache enabled > nobarrier, write cache enabled > nobarrier, write cache disabled > > a 12x hit does hurt though... If you're really motivated, try the same > scenarios on ext3 and ext4 to see what the barrier hit is on those as well. > > -Eric > No, I have not forgotten about this I have just been quite busy, I will test this now, as before, I did not use sync because I was in a hurry and did not have the ability to test, I am using a different machine/hw type but the setup is the same, md/raid1 etc. Since I will only be measuring barriers, per esandeen@ I have changed the mount options from what I typically use to the defaults. Here is the /etc/fstab entry: /dev/md2 / xfs defaults 0 1 And the nobarrier entry: /dev/md2 / xfs defaults,nobarrier 0 1 Stop cron and make sure nothing else is using the disk I/O, done: # /etc/init.d/cron stop Stopping periodic command scheduler: crond. The benchmark: # /usr/bin/time bash -c 'tar xf linux-2.6.27.8.tar; sync' # echo 1 > /proc/sys/vm/drop_caches # (between tests) == The tests == KEY: barriers = "b" write_cache = "w" SUMMARY: b=on,w=on: 1:19.53 elapsed @ 2% CPU [BENCH_1] b=on,w=off: 1:23.59 elapsed @ 2% CPU [BENCH_2] b=off,w=on: 0:21.35 elapsed @ 9% CPU [BENCH_3] b=off,w=off: 0:42.90 elapsed @ 4% CPU [BENCH_4] So it depends on your settings as far as how slow barriers affect the I/O. Scheduler used: CFQ. [ 0.168390] io scheduler cfq registered (default) The raw details: BENCH_1 # /usr/bin/time bash -c 'tar xf linux-2.6.27.8.tar; sync' 0.16user 1.85system 1:19.53elapsed 2%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+970minor)pagefaults 0swaps BENCH_2 (turn off write-cache) # hdparm -W0 /dev/sda /dev/sda: setting drive write-caching to 0 (off) write-caching = 0 (off) # hdparm -W0 /dev/sdb /dev/sdb: setting drive write-caching to 0 (off) write-caching = 0 (off) # # /usr/bin/time bash -c 'tar xf linux-2.6.27.8.tar; sync' 0.16user 1.86system 1:23.59elapsed 2%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (14major+953minor)pagefaults 0swaps BENCH_3 (barriers=off; write_cache=on) # /usr/bin/time bash -c 'tar xf linux-2.6.27.8.tar; sync' 0.18user 1.86system 0:21.35elapsed 9%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (14major+952minor)pagefaults 0swaps BENCH_4 (turn off write-cache) # hdparm -W0 /dev/sda /dev/sda: setting drive write-caching to 0 (off) write-caching = 0 (off) # hdparm -W0 /dev/sdb /dev/sdb: setting drive write-caching to 0 (off) write-caching = 0 (off) # # /usr/bin/time bash -c 'tar xf linux-2.6.27.8.tar; sync' 0.18user 1.76system 0:42.90elapsed 4%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (14major+954minor)pagefaults 0swaps -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From dewey@sasser.ws Sat Dec 20 06:52:17 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_28, MISSING_HEADERS 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 mBKCqHWg026118 for ; Sat, 20 Dec 2008 06:52:17 -0600 X-ASG-Debug-ID: 1229777535-5f4a02e70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mta31.charter.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5F2933655D for ; Sat, 20 Dec 2008 04:52:15 -0800 (PST) Received: from mta31.charter.net (mta31.charter.net [216.33.127.82]) by cuda.sgi.com with ESMTP id mYXezojtydUDtNN3 for ; Sat, 20 Dec 2008 04:52:15 -0800 (PST) Received: from aarprv04.charter.net ([10.20.200.74]) by mta31.charter.net (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20081220125214.NPGQ14843.mta31.charter.net@aarprv04.charter.net>; Sat, 20 Dec 2008 07:52:14 -0500 Received: from kitty ([24.177.50.169]) by aarprv04.charter.net with ESMTP id <20081220125214.VRZJ25639.aarprv04.charter.net@kitty>; Sat, 20 Dec 2008 07:52:14 -0500 Received: from dewey by kitty with local (Exim 4.68) (envelope-from ) id 1LE0M7-0004ZL-I8; Sat, 20 Dec 2008 06:50:52 -0500 Received: from mail.sasser.ws [192.168.213.5] by kitty with IMAP (fetchmail-6.3.6) for (single-drop); Sat, 20 Dec 2008 06:50:51 -0500 (EST) Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by imf19.hostedemail.com (Postfix) with ESMTP for ; Sun, 14 Dec 2008 18:13:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750976AbYLNSNF (ORCPT ); Sun, 14 Dec 2008 13:13:05 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1750996AbYLNSNF (ORCPT ); Sun, 14 Dec 2008 13:13:05 -0500 Received: from mondschein.lichtvoll.de ([194.150.191.11]:42228 "EHLO mail.lichtvoll.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750976AbYLNSND (ORCPT ); Sun, 14 Dec 2008 13:13:03 -0500 Received: from [10.0.0.21] (DSL01.83.171.170.214.ip-pool.NEFkom.net [83.171.170.214]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 31DA55ADF3; Sun, 14 Dec 2008 19:13:01 +0100 (CET) X-Account-Key: account3 X-UIDL: 475790c50000da66 X-Mozilla-Keys: Delivered-To: dewey@sasser.com X-FDA: 61687654560 X-Panda: scanned! X-SpamScore: 5 From: Martin Steigerwald , "To:xfs"@oss.sgi.com, "X-Mailing-List:linux-raid"@vger.kernel.org X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Date: Sun, 14 Dec 2008 19:12:51 +0100 User-Agent: KMail/1.9.9 Cc: Linux RAID References: <1229225480.16555.152.camel@localhost> <18757.4606.966139.10342@tree.ty.sabi.co.uk> (sfid-20081214_183524_928808_CA8411E0) In-Reply-To: <18757.4606.966139.10342@tree.ty.sabi.co.uk> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart7278677.KeuEffjm2a"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200812141912.59649.Martin@lichtvoll.de> Precedence: bulk List-ID: Sender: X-Chzlrs: 0 X-Barracuda-Connect: mta31.charter.net[216.33.127.82] X-Barracuda-Start-Time: 1229777535 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: -0.44 X-Barracuda-Spam-Status: No, SCORE=-0.44 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MISSING_HEADERS X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13197 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.58 MISSING_HEADERS Missing To: header --nextPart7278677.KeuEffjm2a Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Am Sonntag 14 Dezember 2008 schrieb Peter Grandi: > First of all, why are you people sending TWO copies to the XFS > mailing list? (to both linux-xfs@oss.sgi.com and xfs@oss.sgi.com). Just took the CC as it seems to be custom on xfs mailinglist to take it. I= =20 stripped it this time. > >>> At the moment it appears to me that disabling write cache > >>> may often give more performance than using barriers. And > >>> this doesn't match my expectation of write barriers as a > >>> feature that enhances performance. > >> > >> Why do you have that expectation? I've never seen barriers > >> advertised as enhancing performance. :) > > This entire discussion is based on the usual misleading and > pointless avoidance of the substance, in particular because of > stupid, shallow diregard for the particular nature of the > "benchmark" used. > > Barriers can be used to create atomic storage transaction for > metadata or data. For data, they mean that 'fsync' does what is > expected to do. It is up to the application to issue 'fsync' as > often or as rarely as appropriate. > > For metadata, it is the file system code itself that uses > barriers to do something like 'fsync' for metadata updates, and > enforce POSIX or whatever guarantees. > > The "benchmark" used involves 290MB of data in around 26k files > and directories, that is the average inode size is around 11KB. > > That means that an inode is created and flushed to disk every > 11KB written; a metadata write barrier happens every 11KB. > > A synchronization every 11KB is a very high rate, and it will > (unless the disk host adapter or the disk controller are clever > mor have battery backed memory for queues) involve a lot of > waiting for the barrier to complete, and presumably break the > smooth flow of data to the disk with pauses. But - as far as I understood - the filesystem doesn't have to wait for=20 barriers to complete, but could continue issuing IO requests happily. A=20 barrier only means, any request prior to that have to land before and any= =20 after it after it. It doesn't mean that the barrier has to land=20 immediately and the filesystem has to wait for this. At least that always was the whole point of barriers for me. If thats not= =20 the case I misunderstood the purpose of barriers to the maximum extent=20 possible. > Also whether or not the host adapter or the conroller write > cache are disabled, 290MB will fit inside most recent hosts' RAM > entirely, and even adding 'sync' at the end will not help that > much as to helping with a meaningful comparison. Okay, so dropping caches would be required. Got that in the meantime. > > My initial thoughts were that write barriers would enhance > > performance, in that, you could have write cache on. > > Well, that all depends on whether the write caches (in the host > adapter or the controller) are persistent and how frequently > barriers are issued. > > If the write caches are not persistent (at least for a while), > the hard disk controller or the host adapter cannot have more > than one barrier completion request in flight at a time, and if > a barrier completion is requested every 11KB that will be pretty > constraining. Hmmm, didn't know that. How comes? But the IO scheduler should be able to= =20 handle more than one barrier request at a time, shouldn't it? And even=20 than how can it be slower writing 11 KB at a time than writing every IO=20 request at a time - i.e. write cache *off*. > Barriers are much more useful when the host adapter or the disk > controller can cache multiple transactions and then execute them > in the order in which barriers have been issued, so that the > host can pipeline transactions down to the last stage in the > chain, instead of operating the last stages synchronously or > semi-synchronously. > > But talking about barriers in the context of metadata, and for a > "benchmark" which has a metadata barrier every 11KB, and without > knowing whether the storage subsystem can queue multiple barrier > operations seems to be pretty crass and meangingless, if not > misleading. A waste of time at best. Hmmm, as far as I understood it would be that the IO scheduler would=20 handle barrier requests itself if the device was not capable for queuing=20 and ordering requests. Only thing that occurs to me know, that with barriers off it has more=20 freedom to order requests and that might matter for that metadata=20 intensive workload. With barriers it can only order 11 KB of requests.=20 Without it could order as much as it wants... but even then the=20 filesystem would have to make sure that metadata changes land in the=20 journal first and then in-place. And this would involve a sync, if no=20 barrier request was possible. So I still don't get why even that metadata intense workload of tar -xf=20 linux-2.6.27.tar.bz2 - or may better bzip2 -d the tar before - should be=20 slower with barriers + write cache on than with no barriers and write=20 cache off. > > So its really more of an expectation that wc+barriers on, > > performs better than wc+barriers off :) > > This is of course a misstatement: perhaps you intended to write > that ''wc on+barriers on'' would perform better than ''wc off + > barriers off'. > > As to this apparent anomaly, I am only mildly surprised, as > there are plenty of similar anomalies (why ever should have a > very large block device readahead to get decent performance from > MD block devices?), due to poorly ill conceived schemes in all > sorts of stages of the storage chain, from the sometimes > comically misguided misdesigns in the Linux block cache or > elevators or storage drivers, to the often even worse > "optimizations" embedded in the firmware of host adapters and > hard disk controllers. Well and then that is something that could potentially be fixed! > Consider for example (and also as a hint towards less futile and > meaningless "benchmarks") the 'no-fsync' option of 'star', the > reasons for its existence and for the Linux related advice: > > http://gd.tuwien.ac.at/utils/schilling/man/star.html > > =AB-no-fsync > Do not call fsync(2) for each file that has been > extracted from the archive. Using -no-fsync may speed > up extraction on operating systems with slow file I/O > (such as Linux), but includes the risk that star may > not be able to detect extraction problems that occur > after the call to close(2).=BB > > Now ask yourself if you know whether GNU tar does 'fsync' or not > (a rather interesting detail, and the reasons why may also be > interesting...). Talking about less futile benchmarks and mentioning the manpage of a tool= =20 from a author who is known as Solaris advocate appears to be a bit futile= =20 in itself for me. Especially if the author tends to chime into into any=20 discussion mentioning his name and at least in my experience is very=20 difficult to talk with in a constructive manner.=20 For me its important to look whether there might be reason to look in more= =20 detail at how efficient write barriers work on Linux. For that as I=20 mentioned already, testing just this simple workload would not be enough.= =20 And testing just on XFS neither. I think this is neither useless nor futile. The simplified benchmark IMHO= =20 has shown something that deserves further investigation. Nothing more,=20 nothing less. [1] http://oss.sgi.com/archives/xfs/2008-12/msg00244.html Ciao, --=20 Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 --nextPart7278677.KeuEffjm2a Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAklFTKMACgkQmRvqrKWZhMfDkQCfUtvqiYUWcrUzywC9ABTMfhNx U9kAn3P022QV8h0HhShvjJqC3vZ72INW =nPs5 -----END PGP SIGNATURE----- --nextPart7278677.KeuEffjm2a-- -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From dewey@sasser.ws Sat Dec 20 06:54:47 2008 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_28 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 mBKCskb4026406 for ; Sat, 20 Dec 2008 06:54:47 -0600 X-ASG-Debug-ID: 1229777685-607f03cc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mta21.charter.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 71E931B9BF61; Sat, 20 Dec 2008 04:54:45 -0800 (PST) Received: from mta21.charter.net (mta21.charter.net [216.33.127.81]) by cuda.sgi.com with ESMTP id ZF9fjmjgKCgtUK7j; Sat, 20 Dec 2008 04:54:45 -0800 (PST) Received: from aarprv06.charter.net ([10.20.200.76]) by mta21.charter.net (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20081220125444.QDUH20903.mta21.charter.net@aarprv06.charter.net>; Sat, 20 Dec 2008 07:54:44 -0500 Received: from kitty ([24.177.50.169]) by aarprv06.charter.net with ESMTP id <20081220125444.MFDW128.aarprv06.charter.net@kitty>; Sat, 20 Dec 2008 07:54:44 -0500 Received: from dewey by kitty with local (Exim 4.68) (envelope-from ) id 1LE0MP-0004bx-Rx; Sat, 20 Dec 2008 06:51:10 -0500 Received: from mail.sasser.ws [192.168.213.5] by kitty with IMAP (fetchmail-6.3.6) for (single-drop); Sat, 20 Dec 2008 06:51:09 -0500 (EST) Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by imf05.hostedemail.com (Postfix) with ESMTP for ; Sun, 14 Dec 2008 03:31:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751738AbYLNDbY (ORCPT ); Sat, 13 Dec 2008 22:31:24 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752385AbYLNDbY (ORCPT ); Sat, 13 Dec 2008 22:31:24 -0500 Received: from pasmtpb.tele.dk ([80.160.77.98]:48416 "EHLO pasmtpB.tele.dk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751738AbYLNDbX (ORCPT ); Sat, 13 Dec 2008 22:31:23 -0500 Received: from redeeman.kaspersandberg.com (kaspersandberg.com [80.164.32.14]) by pasmtpB.tele.dk (Postfix) with ESMTP id 9DE4CE30008; Sun, 14 Dec 2008 04:31:21 +0100 (CET) X-Account-Key: account3 X-UIDL: 475790c50000da4d X-Mozilla-Keys: Delivered-To: dewey@sasser.com X-FDA: 61685432592 X-Panda: scanned! X-SpamScore: 5 X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] From: Redeeman To: Eric Sandeen Cc: Martin Steigerwald , linux-xfs@oss.sgi.com, linux-raid@vger.kernel.org, Alan Piszcz , xfs@oss.sgi.com In-Reply-To: <4943F37B.8080405@sandeen.net> References: <493A9BE7.3090001@sandeen.net> (sfid-20081213_171213_704814_AA9856DD) <200812131826.25280.Martin@lichtvoll.de> <4943F37B.8080405@sandeen.net> Content-Type: text/plain Date: Sun, 14 Dec 2008 04:31:20 +0100 Message-Id: <1229225480.16555.152.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.4.0 Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-raid@vger.kernel.org Sender: X-Chzlrs: 0 X-Barracuda-Connect: mta21.charter.net[216.33.127.81] X-Barracuda-Start-Time: 1229777685 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.13197 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, 2008-12-13 at 11:40 -0600, Eric Sandeen wrote: > Martin Steigerwald wrote: > > > At the moment it appears to me that disabling write cache may often give > > more performance than using barriers. And this doesn't match my > > expectation of write barriers as a feature that enhances performance. > > Why do you have that expectation? I've never seen barriers advertised > as enhancing performance. :) My initial thoughts were that write barriers would enhance performance, in that, you could have write cache on. So its really more of an expectation that wc+barriers on, performs better than wc+barriers off :) > > I do wonder why barriers on, write cache off is so slow; I'd have > thought the barriers were a no-op. Maybe I'm missing something. > > > Right now a "nowcache" option and having this as default appears to make > > more sense than defaulting to barriers. > > I don't think that turning off write cache is something the filesystem > can do; you have to take that as an administrative step on your block > devices. > > > But I think this needs more > > testing than just those simple high meta data load tests. Anyway I am > > happy cause I have a way to speed up XFS ;-). > > My only hand-wavy concern is whether this has any adverse physical > effect on the drive (no cache == lots more head movement etc?) but then > barriers are constantly flushing/invalidating that cache, so it's > probably a wash. And really, I have no idea. :) > > -Eric > > -- > To unsubscribe from this list: send the line "unsubscribe linux-raid" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From dewey@sasser.ws Sat Dec 20 06:54:47 2008 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_28 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 mBKCsk3V026405 for ; Sat, 20 Dec 2008 06:54:47 -0600 X-ASG-Debug-ID: 1229777685-607f03cc0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mta21.charter.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 71E931B9BF61; Sat, 20 Dec 2008 04:54:45 -0800 (PST) Received: from mta21.charter.net (mta21.charter.net [216.33.127.81]) by cuda.sgi.com with ESMTP id ZF9fjmjgKCgtUK7j; Sat, 20 Dec 2008 04:54:45 -0800 (PST) Received: from aarprv06.charter.net ([10.20.200.76]) by mta21.charter.net (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20081220125444.QDUH20903.mta21.charter.net@aarprv06.charter.net>; Sat, 20 Dec 2008 07:54:44 -0500 Received: from kitty ([24.177.50.169]) by aarprv06.charter.net with ESMTP id <20081220125444.MFDW128.aarprv06.charter.net@kitty>; Sat, 20 Dec 2008 07:54:44 -0500 Received: from dewey by kitty with local (Exim 4.68) (envelope-from ) id 1LE0MP-0004bx-Rx; Sat, 20 Dec 2008 06:51:10 -0500 Received: from mail.sasser.ws [192.168.213.5] by kitty with IMAP (fetchmail-6.3.6) for (single-drop); Sat, 20 Dec 2008 06:51:09 -0500 (EST) Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by imf05.hostedemail.com (Postfix) with ESMTP for ; Sun, 14 Dec 2008 03:31:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751738AbYLNDbY (ORCPT ); Sat, 13 Dec 2008 22:31:24 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752385AbYLNDbY (ORCPT ); Sat, 13 Dec 2008 22:31:24 -0500 Received: from pasmtpb.tele.dk ([80.160.77.98]:48416 "EHLO pasmtpB.tele.dk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751738AbYLNDbX (ORCPT ); Sat, 13 Dec 2008 22:31:23 -0500 Received: from redeeman.kaspersandberg.com (kaspersandberg.com [80.164.32.14]) by pasmtpB.tele.dk (Postfix) with ESMTP id 9DE4CE30008; Sun, 14 Dec 2008 04:31:21 +0100 (CET) X-Account-Key: account3 X-UIDL: 475790c50000da4d X-Mozilla-Keys: Delivered-To: dewey@sasser.com X-FDA: 61685432592 X-Panda: scanned! X-SpamScore: 5 X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] From: Redeeman To: Eric Sandeen Cc: Martin Steigerwald , linux-xfs@oss.sgi.com, linux-raid@vger.kernel.org, Alan Piszcz , xfs@oss.sgi.com In-Reply-To: <4943F37B.8080405@sandeen.net> References: <493A9BE7.3090001@sandeen.net> (sfid-20081213_171213_704814_AA9856DD) <200812131826.25280.Martin@lichtvoll.de> <4943F37B.8080405@sandeen.net> Content-Type: text/plain Date: Sun, 14 Dec 2008 04:31:20 +0100 Message-Id: <1229225480.16555.152.camel@localhost> Mime-Version: 1.0 X-Mailer: Evolution 2.4.0 Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-raid@vger.kernel.org Sender: X-Chzlrs: 0 X-Barracuda-Connect: mta21.charter.net[216.33.127.81] X-Barracuda-Start-Time: 1229777685 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.13197 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, 2008-12-13 at 11:40 -0600, Eric Sandeen wrote: > Martin Steigerwald wrote: > > > At the moment it appears to me that disabling write cache may often give > > more performance than using barriers. And this doesn't match my > > expectation of write barriers as a feature that enhances performance. > > Why do you have that expectation? I've never seen barriers advertised > as enhancing performance. :) My initial thoughts were that write barriers would enhance performance, in that, you could have write cache on. So its really more of an expectation that wc+barriers on, performs better than wc+barriers off :) > > I do wonder why barriers on, write cache off is so slow; I'd have > thought the barriers were a no-op. Maybe I'm missing something. > > > Right now a "nowcache" option and having this as default appears to make > > more sense than defaulting to barriers. > > I don't think that turning off write cache is something the filesystem > can do; you have to take that as an administrative step on your block > devices. > > > But I think this needs more > > testing than just those simple high meta data load tests. Anyway I am > > happy cause I have a way to speed up XFS ;-). > > My only hand-wavy concern is whether this has any adverse physical > effect on the drive (no cache == lots more head movement etc?) but then > barriers are constantly flushing/invalidating that cache, so it's > probably a wash. And really, I have no idea. :) > > -Eric > > -- > To unsubscribe from this list: send the line "unsubscribe linux-raid" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From dewey@sasser.ws Sat Dec 20 06:54:57 2008 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 mBKCsvEi026448 for ; Sat, 20 Dec 2008 06:54:57 -0600 X-ASG-Debug-ID: 1229777695-608603900000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mta31.charter.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D13061B9BF73; Sat, 20 Dec 2008 04:54:55 -0800 (PST) Received: from mta31.charter.net (mta31.charter.net [216.33.127.82]) by cuda.sgi.com with ESMTP id qcCQKiTQ3cE4mgEw; Sat, 20 Dec 2008 04:54:55 -0800 (PST) Received: from aarprv04.charter.net ([10.20.200.74]) by mta31.charter.net (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20081220125455.NPWK14843.mta31.charter.net@aarprv04.charter.net>; Sat, 20 Dec 2008 07:54:55 -0500 Received: from kitty ([24.177.50.169]) by aarprv04.charter.net with ESMTP id <20081220125455.VTJG25639.aarprv04.charter.net@kitty>; Sat, 20 Dec 2008 07:54:55 -0500 Received: from dewey by kitty with local (Exim 4.68) (envelope-from ) id 1LE0Mk-0004ev-T5; Sat, 20 Dec 2008 06:51:32 -0500 Received: from mail.sasser.ws [192.168.213.5] by kitty with IMAP (fetchmail-6.3.6) for (single-drop); Sat, 20 Dec 2008 06:51:30 -0500 (EST) Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by imf16.hostedemail.com (Postfix) with ESMTP for ; Sat, 13 Dec 2008 17:40:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750914AbYLMRkM (ORCPT ); Sat, 13 Dec 2008 12:40:12 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1750928AbYLMRkM (ORCPT ); Sat, 13 Dec 2008 12:40:12 -0500 Received: from sandeen.net ([209.173.210.139]:30958 "EHLO sandeen.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750914AbYLMRkL (ORCPT ); Sat, 13 Dec 2008 12:40:11 -0500 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 sandeen.net (Postfix) with ESMTP id AA911A84804; Sat, 13 Dec 2008 11:40:10 -0600 (CST) X-Account-Key: account3 X-UIDL: 475790c50000da31 X-Mozilla-Keys: Delivered-To: dewey@sasser.com X-FDA: 61683943188 X-Panda: scanned! X-SpamScore: 5 Message-ID: <4943F37B.8080405@sandeen.net> Date: Sat, 13 Dec 2008 11:40:11 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Martin Steigerwald CC: linux-xfs@oss.sgi.com, linux-raid@vger.kernel.org, Alan Piszcz , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] References: <493A9BE7.3090001@sandeen.net> (sfid-20081213_171213_704814_AA9856DD) <200812131826.25280.Martin@lichtvoll.de> In-Reply-To: <200812131826.25280.Martin@lichtvoll.de> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-raid@vger.kernel.org Sender: X-Chzlrs: 0 X-Barracuda-Connect: mta31.charter.net[216.33.127.82] X-Barracuda-Start-Time: 1229777695 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.13197 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Martin Steigerwald wrote: > At the moment it appears to me that disabling write cache may often give > more performance than using barriers. And this doesn't match my > expectation of write barriers as a feature that enhances performance. Why do you have that expectation? I've never seen barriers advertised as enhancing performance. :) I do wonder why barriers on, write cache off is so slow; I'd have thought the barriers were a no-op. Maybe I'm missing something. > Right now a "nowcache" option and having this as default appears to make > more sense than defaulting to barriers. I don't think that turning off write cache is something the filesystem can do; you have to take that as an administrative step on your block devices. > But I think this needs more > testing than just those simple high meta data load tests. Anyway I am > happy cause I have a way to speed up XFS ;-). My only hand-wavy concern is whether this has any adverse physical effect on the drive (no cache == lots more head movement etc?) but then barriers are constantly flushing/invalidating that cache, so it's probably a wash. And really, I have no idea. :) -Eric -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From dewey@sasser.ws Sat Dec 20 06:54:57 2008 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=unavailable 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 mBKCsvhO026447 for ; Sat, 20 Dec 2008 06:54:57 -0600 X-ASG-Debug-ID: 1229777695-608603900000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mta31.charter.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D13061B9BF73; Sat, 20 Dec 2008 04:54:55 -0800 (PST) Received: from mta31.charter.net (mta31.charter.net [216.33.127.82]) by cuda.sgi.com with ESMTP id qcCQKiTQ3cE4mgEw; Sat, 20 Dec 2008 04:54:55 -0800 (PST) Received: from aarprv04.charter.net ([10.20.200.74]) by mta31.charter.net (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20081220125455.NPWK14843.mta31.charter.net@aarprv04.charter.net>; Sat, 20 Dec 2008 07:54:55 -0500 Received: from kitty ([24.177.50.169]) by aarprv04.charter.net with ESMTP id <20081220125455.VTJG25639.aarprv04.charter.net@kitty>; Sat, 20 Dec 2008 07:54:55 -0500 Received: from dewey by kitty with local (Exim 4.68) (envelope-from ) id 1LE0Mk-0004ev-T5; Sat, 20 Dec 2008 06:51:32 -0500 Received: from mail.sasser.ws [192.168.213.5] by kitty with IMAP (fetchmail-6.3.6) for (single-drop); Sat, 20 Dec 2008 06:51:30 -0500 (EST) Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by imf16.hostedemail.com (Postfix) with ESMTP for ; Sat, 13 Dec 2008 17:40:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750914AbYLMRkM (ORCPT ); Sat, 13 Dec 2008 12:40:12 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1750928AbYLMRkM (ORCPT ); Sat, 13 Dec 2008 12:40:12 -0500 Received: from sandeen.net ([209.173.210.139]:30958 "EHLO sandeen.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750914AbYLMRkL (ORCPT ); Sat, 13 Dec 2008 12:40:11 -0500 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 sandeen.net (Postfix) with ESMTP id AA911A84804; Sat, 13 Dec 2008 11:40:10 -0600 (CST) X-Account-Key: account3 X-UIDL: 475790c50000da31 X-Mozilla-Keys: Delivered-To: dewey@sasser.com X-FDA: 61683943188 X-Panda: scanned! X-SpamScore: 5 Message-ID: <4943F37B.8080405@sandeen.net> Date: Sat, 13 Dec 2008 11:40:11 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Martin Steigerwald CC: linux-xfs@oss.sgi.com, linux-raid@vger.kernel.org, Alan Piszcz , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] References: <493A9BE7.3090001@sandeen.net> (sfid-20081213_171213_704814_AA9856DD) <200812131826.25280.Martin@lichtvoll.de> In-Reply-To: <200812131826.25280.Martin@lichtvoll.de> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-raid@vger.kernel.org Sender: X-Chzlrs: 0 X-Barracuda-Connect: mta31.charter.net[216.33.127.82] X-Barracuda-Start-Time: 1229777695 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.13197 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Martin Steigerwald wrote: > At the moment it appears to me that disabling write cache may often give > more performance than using barriers. And this doesn't match my > expectation of write barriers as a feature that enhances performance. Why do you have that expectation? I've never seen barriers advertised as enhancing performance. :) I do wonder why barriers on, write cache off is so slow; I'd have thought the barriers were a no-op. Maybe I'm missing something. > Right now a "nowcache" option and having this as default appears to make > more sense than defaulting to barriers. I don't think that turning off write cache is something the filesystem can do; you have to take that as an administrative step on your block devices. > But I think this needs more > testing than just those simple high meta data load tests. Anyway I am > happy cause I have a way to speed up XFS ;-). My only hand-wavy concern is whether this has any adverse physical effect on the drive (no cache == lots more head movement etc?) but then barriers are constantly flushing/invalidating that cache, so it's probably a wash. And really, I have no idea. :) -Eric -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From dewey@sasser.ws Sat Dec 20 06:55:06 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_28, MISSING_HEADERS 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 mBKCt6Hi026487 for ; Sat, 20 Dec 2008 06:55:06 -0600 X-ASG-Debug-ID: 1229777703-5f4d02cc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mta11.charter.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 263E039B44; Sat, 20 Dec 2008 04:55:03 -0800 (PST) Received: from mta11.charter.net (mta11.charter.net [216.33.127.80]) by cuda.sgi.com with ESMTP id PEb8m2jl3vG7DrPT; Sat, 20 Dec 2008 04:55:03 -0800 (PST) Received: from aarprv04.charter.net ([10.20.200.74]) by mta11.charter.net (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20081220125503.TPGO3882.mta11.charter.net@aarprv04.charter.net>; Sat, 20 Dec 2008 07:55:03 -0500 Received: from kitty ([24.177.50.169]) by aarprv04.charter.net with ESMTP id <20081220125503.VTKU25639.aarprv04.charter.net@kitty>; Sat, 20 Dec 2008 07:55:03 -0500 Received: from dewey by kitty with local (Exim 4.68) (envelope-from ) id 1LE0M9-0004Zd-PZ; Sat, 20 Dec 2008 06:50:54 -0500 Received: from mail.sasser.ws [192.168.213.5] by kitty with IMAP (fetchmail-6.3.6) for (single-drop); Sat, 20 Dec 2008 06:50:53 -0500 (EST) Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by imf25.hostedemail.com (Postfix) with ESMTP for ; Sun, 14 Dec 2008 17:49:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750920AbYLNRtg (ORCPT ); Sun, 14 Dec 2008 12:49:36 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1750916AbYLNRtg (ORCPT ); Sun, 14 Dec 2008 12:49:36 -0500 Received: from mondschein.lichtvoll.de ([194.150.191.11]:49423 "EHLO mail.lichtvoll.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750760AbYLNRtf convert rfc822-to-8bit (ORCPT ); Sun, 14 Dec 2008 12:49:35 -0500 Received: from [10.0.0.21] (DSL01.83.171.170.214.ip-pool.NEFkom.net [83.171.170.214]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 679CF5ADF3; Sun, 14 Dec 2008 18:49:34 +0100 (CET) X-Account-Key: account3 X-UIDL: 475790c50000da62 X-Mozilla-Keys: Delivered-To: dewey@sasser.com X-FDA: 61687595340 X-Panda: scanned! X-SpamScore: 5 From: Martin Steigerwald , "To:linux-xfs"@oss.sgi.com, "X-Mailing-List:linux-raid"@vger.kernel.org X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Date: Sun, 14 Dec 2008 18:49:32 +0100 User-Agent: KMail/1.9.9 References: <4943F37B.8080405@sandeen.net> <1229225480.16555.152.camel@localhost> (sfid-20081214_183451_158861_5E7EF8DA) In-Reply-To: <1229225480.16555.152.camel@localhost> Cc: Redeeman , Eric Sandeen , linux-raid@vger.kernel.org, Alan Piszcz , xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7BIT Content-Disposition: inline Message-Id: <200812141849.33534.Martin@lichtvoll.de> Precedence: bulk List-ID: Sender: X-Chzlrs: 0 X-Barracuda-Connect: mta11.charter.net[216.33.127.80] X-Barracuda-Start-Time: 1229777704 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: -0.44 X-Barracuda-Spam-Status: No, SCORE=-0.44 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MISSING_HEADERS X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13197 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.58 MISSING_HEADERS Missing To: header Am Sonntag 14 Dezember 2008 schrieb Redeeman: > On Sat, 2008-12-13 at 11:40 -0600, Eric Sandeen wrote: > > Martin Steigerwald wrote: > > > At the moment it appears to me that disabling write cache may often > > > give more performance than using barriers. And this doesn't match > > > my expectation of write barriers as a feature that enhances > > > performance. > > > > Why do you have that expectation? I've never seen barriers > > advertised as enhancing performance. :) > > My initial thoughts were that write barriers would enhance performance, > in that, you could have write cache on. So its really more of an > expectation that wc+barriers on, performs better than wc+barriers off > :) Exactly that. My expectation from my technical understanding of the write barrier feature is from most performant to least performant: 1) Write cache + no barrier, but NVRAM ;) 2) Write cache + barrier 3) No write cache, where is shouldn't matter whether barrier was enabled or not With 1 write requests are unordered, thus meta data changes could be applied in place before landing into the journal for example, thus NVRAM is a must. With 2 write requests are unordered except for certain markers, the barriers that say: Anything before the barrier goes before and anything after the barrier goes after it. This leaves room for optimizing the write requests before and after - either in-kernel by an IO scheduler or in firmware by NCQ, TCQ, FUA. And with 3 write requests would always be ordered... and if the filesystems places a marker - a sync in this case - any write requests that are in flight till then have to land on disk before the filesystem can proceed. >From that understanding, which I explained in detail in my Linux-Magazin article[1] I always thought that write cache + barrier has to be faster than no write cache. Well I am ready to learn more. But for me until now that was the whole point of the effort with write barriers. Seems I completely misunderstood their purpose if thats not what they where meant for. [1] Only in german, it had een translated to english but never published: http://www.linux-magazin.de/online_artikel/beschraenktes_schreiben Ciao, -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From dewey@sasser.ws Sat Dec 20 06:55:33 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_28, MISSING_HEADERS 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 mBKCtXW3026612 for ; Sat, 20 Dec 2008 06:55:33 -0600 X-ASG-Debug-ID: 1229777703-5f4d02cc0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mta11.charter.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 263E039B44; Sat, 20 Dec 2008 04:55:03 -0800 (PST) Received: from mta11.charter.net (mta11.charter.net [216.33.127.80]) by cuda.sgi.com with ESMTP id PEb8m2jl3vG7DrPT; Sat, 20 Dec 2008 04:55:03 -0800 (PST) Received: from aarprv04.charter.net ([10.20.200.74]) by mta11.charter.net (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20081220125503.TPGO3882.mta11.charter.net@aarprv04.charter.net>; Sat, 20 Dec 2008 07:55:03 -0500 Received: from kitty ([24.177.50.169]) by aarprv04.charter.net with ESMTP id <20081220125503.VTKU25639.aarprv04.charter.net@kitty>; Sat, 20 Dec 2008 07:55:03 -0500 Received: from dewey by kitty with local (Exim 4.68) (envelope-from ) id 1LE0M9-0004Zd-PZ; Sat, 20 Dec 2008 06:50:54 -0500 Received: from mail.sasser.ws [192.168.213.5] by kitty with IMAP (fetchmail-6.3.6) for (single-drop); Sat, 20 Dec 2008 06:50:53 -0500 (EST) Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by imf25.hostedemail.com (Postfix) with ESMTP for ; Sun, 14 Dec 2008 17:49:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750920AbYLNRtg (ORCPT ); Sun, 14 Dec 2008 12:49:36 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1750916AbYLNRtg (ORCPT ); Sun, 14 Dec 2008 12:49:36 -0500 Received: from mondschein.lichtvoll.de ([194.150.191.11]:49423 "EHLO mail.lichtvoll.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750760AbYLNRtf convert rfc822-to-8bit (ORCPT ); Sun, 14 Dec 2008 12:49:35 -0500 Received: from [10.0.0.21] (DSL01.83.171.170.214.ip-pool.NEFkom.net [83.171.170.214]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 679CF5ADF3; Sun, 14 Dec 2008 18:49:34 +0100 (CET) X-Account-Key: account3 X-UIDL: 475790c50000da62 X-Mozilla-Keys: Delivered-To: dewey@sasser.com X-FDA: 61687595340 X-Panda: scanned! X-SpamScore: 5 From: Martin Steigerwald , "To:linux-xfs"@oss.sgi.com, "X-Mailing-List:linux-raid"@vger.kernel.org X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Date: Sun, 14 Dec 2008 18:49:32 +0100 User-Agent: KMail/1.9.9 References: <4943F37B.8080405@sandeen.net> <1229225480.16555.152.camel@localhost> (sfid-20081214_183451_158861_5E7EF8DA) In-Reply-To: <1229225480.16555.152.camel@localhost> Cc: Redeeman , Eric Sandeen , linux-raid@vger.kernel.org, Alan Piszcz , xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7BIT Content-Disposition: inline Message-Id: <200812141849.33534.Martin@lichtvoll.de> Precedence: bulk List-ID: Sender: X-Chzlrs: 0 X-Barracuda-Connect: mta11.charter.net[216.33.127.80] X-Barracuda-Start-Time: 1229777704 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: -0.44 X-Barracuda-Spam-Status: No, SCORE=-0.44 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MISSING_HEADERS X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13197 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.58 MISSING_HEADERS Missing To: header Am Sonntag 14 Dezember 2008 schrieb Redeeman: > On Sat, 2008-12-13 at 11:40 -0600, Eric Sandeen wrote: > > Martin Steigerwald wrote: > > > At the moment it appears to me that disabling write cache may often > > > give more performance than using barriers. And this doesn't match > > > my expectation of write barriers as a feature that enhances > > > performance. > > > > Why do you have that expectation? I've never seen barriers > > advertised as enhancing performance. :) > > My initial thoughts were that write barriers would enhance performance, > in that, you could have write cache on. So its really more of an > expectation that wc+barriers on, performs better than wc+barriers off > :) Exactly that. My expectation from my technical understanding of the write barrier feature is from most performant to least performant: 1) Write cache + no barrier, but NVRAM ;) 2) Write cache + barrier 3) No write cache, where is shouldn't matter whether barrier was enabled or not With 1 write requests are unordered, thus meta data changes could be applied in place before landing into the journal for example, thus NVRAM is a must. With 2 write requests are unordered except for certain markers, the barriers that say: Anything before the barrier goes before and anything after the barrier goes after it. This leaves room for optimizing the write requests before and after - either in-kernel by an IO scheduler or in firmware by NCQ, TCQ, FUA. And with 3 write requests would always be ordered... and if the filesystems places a marker - a sync in this case - any write requests that are in flight till then have to land on disk before the filesystem can proceed. >From that understanding, which I explained in detail in my Linux-Magazin article[1] I always thought that write cache + barrier has to be faster than no write cache. Well I am ready to learn more. But for me until now that was the whole point of the effort with write barriers. Seems I completely misunderstood their purpose if thats not what they where meant for. [1] Only in german, it had een translated to english but never published: http://www.linux-magazin.de/online_artikel/beschraenktes_schreiben Ciao, -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From dewey@sasser.ws Sat Dec 20 07:10:00 2008 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 mBKDA0kg028077 for ; Sat, 20 Dec 2008 07:10:00 -0600 X-ASG-Debug-ID: 1229778596-7689007b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from que11.charter.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C856E173B52F for ; Sat, 20 Dec 2008 05:09:56 -0800 (PST) Received: from que11.charter.net (que11.charter.net [209.225.8.21]) by cuda.sgi.com with ESMTP id sOsZhAq3jWxx9r01 for ; Sat, 20 Dec 2008 05:09:56 -0800 (PST) Received: from aarprv06.charter.net ([10.20.200.76]) by mta31.charter.net (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20081220125513.NPXY14843.mta31.charter.net@aarprv06.charter.net>; Sat, 20 Dec 2008 07:55:13 -0500 Received: from kitty ([24.177.50.169]) by aarprv06.charter.net with ESMTP id <20081220125513.MFKK128.aarprv06.charter.net@kitty>; Sat, 20 Dec 2008 07:55:13 -0500 Received: from dewey by kitty with local (Exim 4.68) (envelope-from ) id 1LE0OL-0004sx-4q; Sat, 20 Dec 2008 06:53:10 -0500 Received: from mail.sasser.ws [192.168.213.5] by kitty with IMAP (fetchmail-6.3.6) for (single-drop); Sat, 20 Dec 2008 06:53:09 -0500 (EST) Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by imf14.hostedemail.com (Postfix) with ESMTP for ; Fri, 12 Dec 2008 18:57:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751700AbYLLS4Y (ORCPT ); Fri, 12 Dec 2008 13:56:24 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751813AbYLLS4X (ORCPT ); Fri, 12 Dec 2008 13:56:23 -0500 Received: from atrey.karlin.mff.cuni.cz ([195.113.26.193]:49171 "EHLO atrey.karlin.mff.cuni.cz" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751603AbYLLS4V (ORCPT ); Fri, 12 Dec 2008 13:56:21 -0500 Received: by atrey.karlin.mff.cuni.cz (Postfix, from userid 512) id 87BB1F0141; Fri, 12 Dec 2008 19:56:20 +0100 (CET) X-Account-Key: account3 X-UIDL: 475790c50000d9ba X-Mozilla-Keys: Delivered-To: dewey@sasser.com X-FDA: 61680507756 X-Panda: scanned! X-SpamScore: 5 Date: Fri, 12 Dec 2008 19:58:03 +0100 From: Pavel Machek To: "Justin Piszcz Cc": jpiszcz@lucidpixels.com, smartmontools-database-owner@lists.sourceforge.net, linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org, xfs@oss.sgi.com, "Alan Piszcz X-Mailing-List": ap@solarrain.com X-ASG-Orig-Subj: Re: Intel X25-E running Linux using XFS Subject: Re: Intel X25-E running Linux using XFS Message-ID: <20081212185803.GE11974@elf.ucw.cz> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Warning: Reading this can be dangerous to your mental health. User-Agent: Mutt/1.5.18 (2008-05-17) Precedence: bulk List-ID: Sender: X-Chzlrs: 0 X-Barracuda-Connect: que11.charter.net[209.225.8.21] X-Barracuda-Start-Time: 1229778596 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.13197 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi! > Due to the 100k write cycle lifetime, I will not be performing any more > benchmarks on the SSD itself, such benchmarks are available on > techreport.com but just wanted to send out the smart data for the > smartmontools list and point out it is working with linux+ich7+xfs. > > Overall, whenever I do anything now its just like the entire machine is > sitting in a ramdisk (similar when you boot knoppix and load to ramdisk). > > The techreport benchmarks are here: > http://techreport.com/articles.x/15931 Actually I'd like to know... how does it behave during powerfails while it is being written to? Flashes I seen (USB / SD) developed bad sectors in that case, and ext2/ext3 can't handle that. (And I don't think xfs can handle that either). Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From dewey@sasser.ws Sat Dec 20 07:13:27 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00,MISSING_HEADERS 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 mBKDDRKT028415 for ; Sat, 20 Dec 2008 07:13:27 -0600 X-ASG-Debug-ID: 1229778805-5f4b03ba0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from que31.charter.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E704739E39 for ; Sat, 20 Dec 2008 05:13:25 -0800 (PST) Received: from que31.charter.net (que31.charter.net [209.225.8.23]) by cuda.sgi.com with ESMTP id vmtBguZv7emnB41M for ; Sat, 20 Dec 2008 05:13:25 -0800 (PST) Received: from aarprv06.charter.net ([10.20.200.76]) by mta11.charter.net (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20081220125037.TOHE3882.mta11.charter.net@aarprv06.charter.net>; Sat, 20 Dec 2008 07:50:37 -0500 Received: from kitty ([24.177.50.169]) by aarprv06.charter.net with ESMTP id <20081220125037.MDCR128.aarprv06.charter.net@kitty>; Sat, 20 Dec 2008 07:50:37 -0500 Received: from dewey by kitty with local (Exim 4.68) (envelope-from ) id 1LE0M5-0004Z5-Tx; Sat, 20 Dec 2008 06:50:50 -0500 Received: from mail.sasser.ws [192.168.213.5] by kitty with IMAP (fetchmail-6.3.6) for (single-drop); Sat, 20 Dec 2008 06:50:49 -0500 (EST) Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by imf04.hostedemail.com (Postfix) with ESMTP for ; Sun, 14 Dec 2008 18:34:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751083AbYLNSdj (ORCPT ); Sun, 14 Dec 2008 13:33:39 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751092AbYLNSdj (ORCPT ); Sun, 14 Dec 2008 13:33:39 -0500 Received: from mondschein.lichtvoll.de ([194.150.191.11]:48671 "EHLO mail.lichtvoll.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751083AbYLNSdj (ORCPT ); Sun, 14 Dec 2008 13:33:39 -0500 Received: from [10.0.0.21] (DSL01.83.171.170.214.ip-pool.NEFkom.net [83.171.170.214]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 0A87B5ADF3; Sun, 14 Dec 2008 19:33:38 +0100 (CET) X-Account-Key: account3 X-UIDL: 475790c50000da67 X-Mozilla-Keys: Delivered-To: dewey@sasser.com X-FDA: 61687707942 X-Panda: scanned! X-SpamScore: 5 To: xfs@oss.sgi.com X-Mailing-List: linux-raid@vger.kernel.org X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Content-Disposition: inline From: Martin Steigerwald Date: Sun, 14 Dec 2008 19:33:36 +0100 Cc: Linux RAID MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Message-Id: <200812141933.37398.Martin@lichtvoll.de> Precedence: bulk List-ID: Sender: X-Chzlrs: 0 X-Barracuda-Connect: que31.charter.net[209.225.8.23] X-Barracuda-Start-Time: 1229778805 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: -0.44 X-Barracuda-Spam-Status: No, SCORE=-0.44 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MISSING_HEADERS X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13197 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.58 MISSING_HEADERS Missing To: header Am Sonntag 14 Dezember 2008 schrieben Sie: > Am Sonntag 14 Dezember 2008 schrieb Peter Grandi: > > But talking about barriers in the context of metadata, and for a > > "benchmark" which has a metadata barrier every 11KB, and without > > knowing whether the storage subsystem can queue multiple barrier > > operations seems to be pretty crass and meangingless, if not > > misleading. A waste of time at best. > > Hmmm, as far as I understood it would be that the IO scheduler would > handle barrier requests itself if the device was not capable for > queuing and ordering requests. > > Only thing that occurs to me know, that with barriers off it has more > freedom to order requests and that might matter for that metadata > intensive workload. With barriers it can only order 11 KB of requests. > Without it could order as much as it wants... but even then the > filesystem would have to make sure that metadata changes land in the > journal first and then in-place. And this would involve a sync, if no > barrier request was possible. No it hasn't. As I do not think XFS or any other filesystem would be keen to see the IO scheduler reorder a journal write after a corresponding meta data in-place write. So either the filesystem uses sync... > So I still don't get why even that metadata intense workload of tar -xf > linux-2.6.27.tar.bz2 - or may better bzip2 -d the tar before - should > be slower with barriers + write cache on than with no barriers and > write cache off. ... or it tells the scheduler that this journal write should come prior to the later writes. This is what a barrier would do - except for that it cannot utilize any additional in-hardware / in-firmware support. So why on earth can write cache off + barrier off be faster than write cache on + barrier on in *any workload*? There must be some technical detail that I miss. Ciao, -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From dewey@sasser.ws Sat Dec 20 07:16:46 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00,RCVD_IN_BRBL 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 mBKDGkhP028926 for ; Sat, 20 Dec 2008 07:16:46 -0600 X-ASG-Debug-ID: 1229779003-715702990000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from que21.charter.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C94BA39E5B for ; Sat, 20 Dec 2008 05:16:43 -0800 (PST) Received: from que21.charter.net (que21.charter.net [209.225.8.22]) by cuda.sgi.com with ESMTP id lT0pVz5FtAxqCt9Q for ; Sat, 20 Dec 2008 05:16:43 -0800 (PST) Received: from aarprv06.charter.net ([10.20.200.76]) by mta31.charter.net (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20081220124932.NORM14843.mta31.charter.net@aarprv06.charter.net>; Sat, 20 Dec 2008 07:49:32 -0500 Received: from kitty ([24.177.50.169]) by aarprv06.charter.net with ESMTP id <20081220124931.MCOP128.aarprv06.charter.net@kitty>; Sat, 20 Dec 2008 07:49:31 -0500 Received: from dewey by kitty with local (Exim 4.68) (envelope-from ) id 1LE0N1-0004hQ-Rv; Sat, 20 Dec 2008 06:51:49 -0500 Received: from mail.sasser.ws [192.168.213.5] by kitty with IMAP (fetchmail-6.3.6) for (single-drop); Sat, 20 Dec 2008 06:51:47 -0500 (EST) Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by imf24.hostedemail.com (Postfix) with ESMTP for ; Sat, 13 Dec 2008 11:45:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753546AbYLMLo2 (ORCPT ); Sat, 13 Dec 2008 06:44:28 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753397AbYLMLo2 (ORCPT ); Sat, 13 Dec 2008 06:44:28 -0500 Received: from einhorn.in-berlin.de ([192.109.42.8]:37732 "EHLO einhorn.in-berlin.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752343AbYLMLo1 (ORCPT ); Sat, 13 Dec 2008 06:44:27 -0500 Received: from [192.168.0.42] ([83.221.231.7]) (authenticated bits=0) by einhorn.in-berlin.de (8.13.6/8.13.6/Debian-1) with ESMTP id mBDBhrN6026926 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Sat, 13 Dec 2008 12:43:53 +0100 X-Account-Key: account3 X-UIDL: 475790c50000da18 X-Mozilla-Keys: Delivered-To: dewey@sasser.com X-FDA: 61683047790 X-Panda: scanned! X-SpamScore: 5 X-Envelope-From: stefanr@s5r6.in-berlin.de Message-ID: <49439FF9.50202@s5r6.in-berlin.de> Date: Sat, 13 Dec 2008 12:43:53 +0100 From: Stefan Richter User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.18) Gecko/20081116 SeaMonkey/1.1.13 MIME-Version: 1.0 To: Justin Piszcz CC: Pavel Machek , smartmontools-support@lists.sourceforge.net, smartmontools-database-owner@lists.sourceforge.net, linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org, xfs@oss.sgi.com, Alan Piszcz X-ASG-Orig-Subj: Re: Intel X25-E running Linux using XFS Subject: Re: Intel X25-E running Linux using XFS References: <20081212185803.GE11974@elf.ucw.cz> In-Reply-To: X-Enigmail-Version: 0.95.7 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang_at_IN-Berlin_e.V. on 192.109.42.8 Precedence: bulk List-ID: X-Mailing-List: linux-raid@vger.kernel.org Sender: X-Chzlrs: 0 X-Barracuda-Connect: que21.charter.net[209.225.8.22] X-Barracuda-Start-Time: 1229779003 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.13197 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Justin Piszcz wrote: > On Fri, 12 Dec 2008, Pavel Machek wrote: >> Actually I'd like to know... how does it behave during powerfails >> while it is being written to? >> >> Flashes I seen (USB / SD) developed bad sectors in that case, and >> ext2/ext3 can't handle that. (And I don't think xfs can handle that >> either). > > I have a UPS for all of my machines, so that will not be a problem in my > case. UPSs fail too. ... > With barriers, presumably it would be safe There are other opinions: http://lwn.net/Articles/309576/ (Magnetic disks are discussed there.) -- Stefan Richter -=====-==--- ==-- -==-= http://arcgraph.de/sr/ -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From dewey@sasser.ws Sat Dec 20 08:04:20 2008 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 mBKE4JDq002039 for ; Sat, 20 Dec 2008 08:04:20 -0600 X-ASG-Debug-ID: 1229781854-768802610000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mta11.charter.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9870E1B9C0A3 for ; Sat, 20 Dec 2008 06:04:14 -0800 (PST) Received: from mta11.charter.net (mta11.charter.net [216.33.127.80]) by cuda.sgi.com with ESMTP id r2S2ChWGIGCU30tZ for ; Sat, 20 Dec 2008 06:04:14 -0800 (PST) Received: from aarprv04.charter.net ([10.20.200.74]) by mta11.charter.net (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20081220140414.ULBB3882.mta11.charter.net@aarprv04.charter.net>; Sat, 20 Dec 2008 09:04:14 -0500 Received: from kitty ([24.177.50.169]) by aarprv04.charter.net with ESMTP id <20081220140411.XLVD25639.aarprv04.charter.net@kitty>; Sat, 20 Dec 2008 09:04:11 -0500 Received: from dewey by kitty with local (Exim 4.68) (envelope-from ) id 1LE0J2-000480-0y; Sat, 20 Dec 2008 06:47:41 -0500 Received: from mail.sasser.ws [192.168.213.5] by kitty with IMAP (fetchmail-6.3.6) for (single-drop); Sat, 20 Dec 2008 06:47:39 -0500 (EST) Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by imf06.hostedemail.com (Postfix) with ESMTP for ; Mon, 15 Dec 2008 22:40:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751902AbYLOWjG (ORCPT ); Mon, 15 Dec 2008 17:39:06 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751968AbYLOWjG (ORCPT ); Mon, 15 Dec 2008 17:39:06 -0500 Received: from ipmail05.adl2.internode.on.net ([203.16.214.145]:13214 "EHLO ipmail05.adl2.internode.on.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751902AbYLOWjF (ORCPT ); Mon, 15 Dec 2008 17:39:05 -0500 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; 16 Dec 2008 09:08:59 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LCM5Z-0007Xc-PD; Tue, 16 Dec 2008 09:38:57 +1100 X-Account-Key: account3 X-UIDL: 475790c50000db22 X-Mozilla-Keys: Delivered-To: dewey@sasser.com X-FDA: 61691956788 X-Panda: scanned! X-SpamScore: 5 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAL9oRkl5LB1f/2dsb2JhbADNA4J+ X-IronPort-AV: E=Sophos;i="4.36,226,1228051800"; d="scan'208";a="276462841" Date: Tue, 16 Dec 2008 09:38:57 +1100 From: Dave Chinner To: Peter Grandi Cc: Linux XFS , Linux RAID X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Message-ID: <20081215223857.GF32301@disturbed> Mail-Followup-To: Peter Grandi , Linux XFS , Linux RAID References: <1229225480.16555.152.camel@localhost> <18757.4606.966139.10342@tree.ty.sabi.co.uk> <200812141912.59649.Martin@lichtvoll.de> <18757.33373.744917.457587@tree.ty.sabi.co.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <18757.33373.744917.457587@tree.ty.sabi.co.uk> User-Agent: Mutt/1.5.18 (2008-05-17) Precedence: bulk List-ID: X-Mailing-List: linux-raid@vger.kernel.org Sender: X-Chzlrs: 0 X-Barracuda-Connect: mta11.charter.net[216.33.127.80] X-Barracuda-Start-Time: 1229781858 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.13201 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, Dec 14, 2008 at 10:02:05PM +0000, Peter Grandi wrote: > [ ... ] > > > But - as far as I understood - the filesystem doesn't have to > > wait for barriers to complete, but could continue issuing IO > > requests happily. A barrier only means, any request prior to > > that have to land before and any after it after it. > > > It doesn't mean that the barrier has to land immediately and > > the filesystem has to wait for this. At least that always was > > the whole point of barriers for me. If thats not the case I > > misunderstood the purpose of barriers to the maximum extent > > possible. > > Unfortunately that seems the case. > > The purpose of barriers is to guarantee that relevant data is > known to be on persistent storage (kind of hardware 'fsync'). > > In effect write barrier means "tell me when relevant data is on > persistent storage", or less precisely "flush/sync writes now > and tell me when it is done". Properties as to ordering are just > a side effect. No, that is incorrect. Barriers provide strong ordering semantics. I/Os issued before the barrier must be completed before the barrier I/O, and I/Os issued after the barrier write must not be started before the barrier write completes. The elevators are not allowed to re-оrder I/Os around barriers. This is all documented in Documentation/block/barrier.txt. Please read it because most of what you are saying appears to be based on incorrect assumptions about what barriers do. Cheers, Dave. -- Dave Chinner david@fromorbit.com -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From dewey@sasser.ws Sat Dec 20 08:05:37 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=AWL,BAYES_00,INVALID_DATE 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 mBKE5axe002329 for ; Sat, 20 Dec 2008 08:05:37 -0600 X-ASG-Debug-ID: 1229781935-762502b20000-ps1ADW X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from que31.charter.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6A0FA1B9C0B9 for ; Sat, 20 Dec 2008 06:05:35 -0800 (PST) Received: from que31.charter.net (que31.charter.net [209.225.8.23]) by cuda.sgi.com with ESMTP id PVz2LSjlvEzqFuKe for ; Sat, 20 Dec 2008 06:05:35 -0800 (PST) Received: from aarprv06.charter.net ([10.20.200.76]) by mta21.charter.net (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20081220134737.QTFF20903.mta21.charter.net@aarprv06.charter.net>; Sat, 20 Dec 2008 08:47:37 -0500 Received: from kitty ([24.177.50.169]) by aarprv06.charter.net with ESMTP id <20081220134736.NLDR128.aarprv06.charter.net@kitty>; Sat, 20 Dec 2008 08:47:36 -0500 Received: from dewey by kitty with local (Exim 4.68) (envelope-from ) id 1LE0Lj-0004Vf-3v; Sat, 20 Dec 2008 06:50:28 -0500 Received: from mail.sasser.ws [192.168.213.5] by kitty with IMAP (fetchmail-6.3.6) for (single-drop); Sat, 20 Dec 2008 06:50:26 -0500 (EST) Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by imf13.hostedemail.com (Postfix) with ESMTP for ; Sun, 14 Dec 2008 22:02:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751774AbYLNWCS (ORCPT ); Sun, 14 Dec 2008 17:02:18 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751810AbYLNWCS (ORCPT ); Sun, 14 Dec 2008 17:02:18 -0500 Received: from 82-69-39-138.dsl.in-addr.zen.co.uk ([82.69.39.138]:51105 "EHLO ty.sabi.co.UK" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751774AbYLNWCR (ORCPT ); Sun, 14 Dec 2008 17:02:17 -0500 Received: from from [127.0.0.1] (helo=tree.ty.sabi.co.uk) by ty.sabi.co.UK with esmtp(Exim 4.68 #1) id 1LBz2M-0002GM-2o; Sun, 14 Dec 2008 22:02:06 +0000 X-Account-Key: account3 X-UIDL: 475790c50000da7e X-Mozilla-Keys: Delivered-To: dewey@sasser.com X-FDA: 61688232480 X-Panda: scanned! X-SpamScore: 5 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <18757.33373.744917.457587@tree.ty.sabi.co.uk> Date: Sun, 14 Dec 2008 22:02:05 +0000 X-Face: SMJE]JPYVBO-9UR%/8d'mG.F!@.,l@c[f'[%S8'BZIcbQc3/">GrXDwb#;fTRGNmHr^JFb SAptvwWc,0+z+~p~"Gdr4H$(|N(yF(wwCM2bW0~U?HPEE^fkPGx^u[*[yV.gyB!hDOli}EF[\cW*S H&spRGFL}{`bj1TaD^l/"[ msn( /TH#THs{Hpj>)]f>, Linux RAID X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] In-Reply-To: <200812141912.59649.Martin@lichtvoll.de> References: <1229225480.16555.152.camel@localhost> <18757.4606.966139.10342@tree.ty.sabi.co.uk> <200812141912.59649.Martin@lichtvoll.de> X-Mailer: VM 7.17 under 21.5 (beta28) XEmacs Lucid From: pg_xf2@xf2.for.sabi.co.UK (Peter Grandi) X-Disclaimer: This message contains only personal opinions Precedence: bulk List-ID: Sender: X-Chzlrs: 0 X-Barracuda-Connect: que31.charter.net[209.225.8.23] X-Barracuda-Start-Time: 1229781935 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: -0.25 X-Barracuda-Spam-Status: No, SCORE=-0.25 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=INVALID_DATE, INVALID_DATE_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13201 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 INVALID_DATE Invalid Date: header (not RFC 2822) 1.76 INVALID_DATE_2 Invalid Date: header (not RFC 2822) [ ... ] > But - as far as I understood - the filesystem doesn't have to > wait for barriers to complete, but could continue issuing IO > requests happily. A barrier only means, any request prior to > that have to land before and any after it after it. > It doesn't mean that the barrier has to land immediately and > the filesystem has to wait for this. At least that always was > the whole point of barriers for me. If thats not the case I > misunderstood the purpose of barriers to the maximum extent > possible. Unfortunately that seems the case. The purpose of barriers is to guarantee that relevant data is known to be on persistent storage (kind of hardware 'fsync'). In effect write barrier means "tell me when relevant data is on persistent storage", or less precisely "flush/sync writes now and tell me when it is done". Properties as to ordering are just a side effect. That is, the application (file system in the case of metadata, user process in the case of data) knows that a barrier operation is complete, it knows that all data involved in the barrier operation are on persistent storage. In case of serially dependent transactions, applications do wait until the previous transaction is completed before starting the next one (e.g. creating potentially many files in the same directory, something that 'tar' does). "all data involved" is usually all previous writes, but in more sophisticated cases it can be just specific writes. When an applications at transaction end points (for a file system, metadata updates) issues a write barrier and then waits for its completion. If the host adapter/disk controllers don't have persistent storage, then completion (should) only happen when the data involved is actually on disk; if they do have it, then multiple barriers can be outstanding, if the host adapter/disk controller does support multiple outstanding operations (e.g. thanks to tagged queueing). The best case is when the IO subsystem supports all of these: * tagged queueing: multiple write barriers can be outstanding; * fine granule (specific writes, not all writes) barriers: just metadata writes need to be flushed to persistent storage, not any intervening data writes too; * the host adapter and/or disk controller have persistent caches: as long as those caches have space, barriers can complete immediately, without waiting a write to disk. It just happens that typical contemporary PC IO subsystems (at the hardware level, not the Linux level) have none of those features, except sometimes for NCQ which is a reduced form of TCQ, and apparently is not that useful. Write barriers are also useful without persistent caches, if there is proper tagged queueing and fine granularity. -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From jrstrate@sympatico.ca Sat Dec 20 08:17:46 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.1 required=5.0 tests=BAYES_50,J_CHICKENPOX_57 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 mBKEHkkP003559 for ; Sat, 20 Dec 2008 08:17:46 -0600 X-ASG-Debug-ID: 1229782665-4ac201310000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from simmts12-srv.bellnexxia.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 90A4039D41 for ; Sat, 20 Dec 2008 06:17:45 -0800 (PST) Received: from simmts12-srv.bellnexxia.net (simmts12-qfe0.srvr.bell.ca [206.47.199.141]) by cuda.sgi.com with ESMTP id U9KQGJbKuMMB8Ytu for ; Sat, 20 Dec 2008 06:17:45 -0800 (PST) Received: from simip9-ac.srvr.bell.ca ([206.47.199.87]) by simmts12-srv.bellnexxia.net (InterMail vM.5.01.06.13 201-253-122-130-113-20050324) with ESMTP id <20081220141744.FWPX1599.simmts12-srv.bellnexxia.net@simip9-ac.srvr.bell.ca> for ; Sat, 20 Dec 2008 09:17:44 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmYOAB+KTEnOL8eg/2dsb2JhbACBRyWKOhaGWKk4WINckCGBfQ Received: from simfep5.srvr.bell.ca (HELO smtpacout.sympatico.ca) ([206.47.199.160]) by simip9-ac.srvr.bell.ca with SMTP; 20 Dec 2008 09:24:43 -0500 X-Mailer: Openwave WebEngine, version 2.8.10 (webedge20-101-191-20030113) X-Originating-IP: [82.213.5.231] From: Jason Moore Corporations Reply-To: mrjason.moore@yahoo.de To: X-ASG-Orig-Subj: Loan Lender!!! Subject: Loan Lender!!! Date: Sat, 20 Dec 2008 9:17:44 -0500 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 7bit Message-Id: <20081220141744.FWPX1599.simmts12-srv.bellnexxia.net@simip9-ac.srvr.bell.ca> X-Barracuda-Connect: simmts12-qfe0.srvr.bell.ca[206.47.199.141] X-Barracuda-Start-Time: 1229782665 X-Barracuda-Bayes: INNOCENT GLOBAL 0.6944 1.0000 1.3267 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.79 X-Barracuda-Spam-Status: No, SCORE=1.79 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=PLING_PLING X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13201 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.46 PLING_PLING Subject has lots of exclamation marks We give loan at 3%,Any interested person,irrespective of your country, Contact us now Via mrjason.moore@yahoo.de with the following details: Full Names:Address,Tel,Amount Required,Duration Of Loan. Regards, Jason Moore Corporations From list0570@paradise.net.nz Sat Dec 20 13:48:03 2008 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 mBKJm25C001580 for ; Sat, 20 Dec 2008 13:48:03 -0600 X-ASG-Debug-ID: 1229802478-18b802c60000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp5.clear.net.nz (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 249073AA53 for ; Sat, 20 Dec 2008 11:47:58 -0800 (PST) Received: from smtp5.clear.net.nz (smtp5.clear.net.nz [203.97.33.68]) by cuda.sgi.com with ESMTP id U1cKlNExoLVDxI1A for ; Sat, 20 Dec 2008 11:47:58 -0800 (PST) Received: from kereru.site ([202.0.57.237]) by smtp5.clear.net.nz (CLEAR Net Mail) with ESMTP id <0KC60073HXNWUF10@smtp5.clear.net.nz> for xfs@oss.sgi.com; Sun, 21 Dec 2008 08:47:57 +1300 (NZDT) Received: from kereru.site (localhost [127.0.0.1]) by kereru.site (8.14.1/8.14.1/SuSE Linux 0.8) with ESMTP id mBKJlCwZ014438; Sun, 21 Dec 2008 08:47:14 +1300 Received: (from volker@localhost) by kereru.site (8.14.1/8.14.1/Submit) id mBKJlCUE014434; Sun, 21 Dec 2008 08:47:12 +1300 Date: Sun, 21 Dec 2008 08:47:12 +1300 From: Volker Kuhlmann X-ASG-Orig-Subj: Re: Intel X25-E running Linux using XFS Subject: Re: Intel X25-E running Linux using XFS In-reply-to: To: Justin Piszcz Cc: Pavel Machek , xfs@oss.sgi.com, Alan Piszcz Message-id: <20081220194712.GA14015@paradise.net.nz> MIME-version: 1.0 Content-type: text/plain; charset=us-ascii Content-disposition: inline References: <20081212185803.GE11974@elf.ucw.cz> X-Barracuda-Connect: smtp5.clear.net.nz[203.97.33.68] X-Barracuda-Start-Time: 1229802479 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.13220 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- As requested before, please remove mailing list admin addresses (smartmontools-database-owner@lists.sourceforge.net) from cc. Thanks. Cc: Pavel Machek , "cc: smartmontools-support"@lists.sourceforge.net, smartmontools-database-owner@lists.sourceforge.net, linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org, xfs@oss.sgi.com, Alan Piszcz , "X-Mailing-List: linux-raid"@vger.kernel.org Bcc: Subject: Re: Intel X25-E running Linux using XFS Reply-To: In-Reply-To: On Sat 13 Dec 2008 09:23:19 NZDT +1300, Justin Piszcz wrote: > > > > On Fri, 12 Dec 2008, Pavel Machek wrote: > >> >> Hi! >> >>> Due to the 100k write cycle lifetime, I will not be performing any more >>> benchmarks on the SSD itself, such benchmarks are available on >>> techreport.com but just wanted to send out the smart data for the >>> smartmontools list and point out it is working with linux+ich7+xfs. >>> >>> Overall, whenever I do anything now its just like the entire machine is >>> sitting in a ramdisk (similar when you boot knoppix and load to ramdisk). >>> >>> The techreport benchmarks are here: >>> http://techreport.com/articles.x/15931 >> >> Actually I'd like to know... how does it behave during powerfails >> while it is being written to? >> >> Flashes I seen (USB / SD) developed bad sectors in that case, and >> ext2/ext3 can't handle that. (And I don't think xfs can handle that >> either). > > I have a UPS for all of my machines, so that will not be a problem in my > case. I do not wish to trash a $720 SSD or my current install, if someone > else wants to try feel free though :) > > With barriers, presumably it would be safe-- but as always, a UPS/and > barriers and/or RAID, there is no excuse not to have regular backups incase > of a failure at any time.. > > I do recall however one instance where there was an apt-get dist-upgrade > going and the power was cut to a machine on purpose (before/not using > barriers) and suffice to say-- it got mucked/suffered many corruptions > all over the place. > > Justin. > -- > To unsubscribe from this list: send the line "unsubscribe linux-raid" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Volker Kuhlmann is list0570 with the domain in header http://volker.dnsalias.net/ Please do not CC list postings to me. From sandeen@sandeen.net Sat Dec 20 15:22:49 2008 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 mBKLMnl8009885 for ; Sat, 20 Dec 2008 15:22:49 -0600 X-ASG-Debug-ID: 1229808167-682002ff0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 670F63A66E for ; Sat, 20 Dec 2008 13:22:47 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id vo65kpyyRLjxDklN for ; Sat, 20 Dec 2008 13:22: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 sandeen.net (Postfix) with ESMTP id 8B88BA9C530 for ; Sat, 20 Dec 2008 15:22:12 -0600 (CST) Message-ID: <494D6204.6000005@sandeen.net> Date: Sat, 20 Dec 2008 15:22:12 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: xfsprogs/xfsdump translations needed Subject: xfsprogs/xfsdump translations needed 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: 1229808168 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.13226 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- I'd never noticed, but xfsprogs has only a Polish translation; xfsdump has none. If anyone is interested, let's see if we can get some folks to do other translations... I'd offer, but my German is really, really bad. :) Anybody interested? Thanks, -Eric From SRS0+3a1f6c298e05a25bb78c+1945+infradead.org+hch@bombadil.srs.infradead.org Sat Dec 20 16:51:56 2008 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, J_CHICKENPOX_73 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 mBKMpseQ018587 for ; Sat, 20 Dec 2008 16:51:56 -0600 X-ASG-Debug-ID: 1229813513-610500720000-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 BC7381769FD4 for ; Sat, 20 Dec 2008 14:51:53 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id zpaq8wksAWXXqQz4 for ; Sat, 20 Dec 2008 14:51:53 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEAfo-0004LT-AO; Sat, 20 Dec 2008 22:51:52 +0000 Date: Sat, 20 Dec 2008 17:51:52 -0500 From: Christoph Hellwig To: Nathan Scott Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Debian userspace updates Subject: Re: Debian userspace updates Message-ID: <20081220225152.GA16671@infradead.org> References: <1229732749.4496.28.camel@verge.scott.net.au> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1229732749.4496.28.camel@verge.scott.net.au> 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: 1229813513 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Sat, Dec 20, 2008 at 11:25:49AM +1100, Nathan Scott wrote: > Hi, > > Here's a couple of trivial patches from updating the Debian > userspace packages. Please merge - thanks! 2.10.2 is purely a tarball release, > Index: xfsprogs-2.10.2/debian/changelog > =================================================================== > --- xfsprogs-2.10.2.orig/debian/changelog 2008-12-20 11:18:09.875260474 +1100 > +++ xfsprogs-2.10.2/debian/changelog 2008-12-20 11:18:13.473172568 +1100 > @@ -1,3 +1,13 @@ > +xfsprogs (2.10.2-1) unstable; urgency=low > + > + * New upstream release > + * No longer ignore -i maxpct option in mkfs.xfs (closes: #500593) > + * Correct features2 superblock field handling (closes: #473135) > + * 32 bit emulation on 64 bit kernels works (closes: #485020) > + * Fix up large sector handling in mkfs (closes: #489421) > + > + -- Nathan Scott Sat, 20 Dec 2008 10:14:27 +1100 But we should probably throw this into the git tree so it's in there once 3.0 is released. > Index: xfsprogs-2.10.2/libxfs/xfs_dir2.c > =================================================================== > --- xfsprogs-2.10.2.orig/libxfs/xfs_dir2.c 2008-12-20 11:21:21.985184849 +1100 > +++ xfsprogs-2.10.2/libxfs/xfs_dir2.c 2008-12-20 11:21:33.795013403 +1100 > @@ -21,6 +21,7 @@ > * Top-level and utility routines. > */ > > +#include > #include > > extern const struct xfs_nameops xfs_default_nameops; While this one has been fixed in the meantime by including ctype.h in platform_defs.h From dbernick@gmail.com Sun Dec 21 09:09:56 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.4 required=5.0 tests=BAYES_00,HTML_MESSAGE 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 mBLF9uJ6013823 for ; Sun, 21 Dec 2008 09:09:56 -0600 X-ASG-Debug-ID: 1229872192-477002b40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f10.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 788F51769536 for ; Sun, 21 Dec 2008 07:09:52 -0800 (PST) Received: from mail-bw0-f10.google.com (mail-bw0-f10.google.com [209.85.218.10]) by cuda.sgi.com with ESMTP id kR5WMy6Z6gi1OtUr for ; Sun, 21 Dec 2008 07:09:52 -0800 (PST) Received: by bwz3 with SMTP id 3so3497731bwz.20 for ; Sun, 21 Dec 2008 07:09:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:mime-version:content-type; bh=duDlp5A3F2uy0pF91YCZwWlej8x5GxAbwoa1VqpzxA4=; b=csEYmLFiCRz34IkAWLJmy2EJbIIgf/I7RFd0YSlAzp1xHWrms+K/P3WPexZfq0hz15 n86lTL5Mn7ERfTP6akRrRp7qsGw8wjfVlZyp+RVT5MlNOIJdmSZr9kOzeszdiLwAhm2c 2b0vBb10CWzsWtx7ld9RvkDsS0GEtya7TE6fE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:mime-version:content-type; b=u9UCo5JZY4065a5iFLuA/oQHc1qaWr6QKEGa/xvQHhSjk56uVlgyJlJJss7KX4kz9U vOI01tUuAxVy9PRj8wj/fbqg0jDyEFPyLxAkoqyyFtQFy9HXa4WQlEO9uBLHddgfwvBF QsEYYol/nNIYUJZb0t1OMu9USwN5iXaVEu7Wk= Received: by 10.181.141.7 with SMTP id t7mr1944138bkn.10.1229871799999; Sun, 21 Dec 2008 07:03:19 -0800 (PST) Received: by 10.180.233.11 with HTTP; Sun, 21 Dec 2008 07:03:19 -0800 (PST) Message-ID: <7bcfcfff0812210703r4bd889cave8e2d60c56587e3e@mail.gmail.com> Date: Sun, 21 Dec 2008 10:03:19 -0500 From: "David Bernick" To: xfs@oss.sgi.com X-ASG-Orig-Subj: xfs_repair problem. Subject: xfs_repair problem. MIME-Version: 1.0 X-Barracuda-Connect: mail-bw0-f10.google.com[209.85.218.10] X-Barracuda-Start-Time: 1229872194 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=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13291 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: 7bit Content-length: 2260 I have a filesystem where an xfs_growfs went bad. We were adding storage to a pre-existing infrastructure and when growing, we received an error. SInce then, we've been unable to mount. It's a large filesystem (see below) and the addition of the extra data has made it larger. We tried an xfs_repair but it died, as the machine only has 4GB RAM. We're going to put 32 GB in RAM and see if that helps. The original FS size is about 13T and the addition brought it to 29T. Since we've been unable to write or mount, we've "backed off" the addition and are left with our original, which we'd like to mount. We try to mount and get an error about the root inode not being readable. Makes sense as the root inode is null (according to xfs_db). So before we run another big xfs_repair: 1. What is the math of filesystems size, number of files and how much RAM is needed for such a task? Is 32 GB enough for 1/2 Billion files and 13 TB? 2. Any way I can just find my rootino,rbmino,rsumino and put them in the DB? Any other advice? /proc/partitions: 253 0 13084291072 dm-0 --- Logical volume --- LV Name /dev/docs/v5Docs VG Name docs LV UUID G85Zi9-s63C-yWrU-yyf0-STP6-YOhJ-6Ne3pS LV Write Access read/write LV Status available # open 1 LV Size 12.19 TB Current LE 3194407 Segments 2 Allocation inherit Read ahead sectors 0 Block device 253:0 DB: magicnum = 0x58465342 blocksize = 4096 dblocks = 3064987648 rblocks = 0 rextents = 0 uuid = f086bb71-d67b-4cc1-b622-1f10349e6a49 logstart = 1073741828 rootino = null rbmino = null rsumino = null rextsize = 1 agblocks = 67108864 agcount = 46 rbmblocks = 0 logblocks = 32768 versionnum = 0x3084 sectsize = 512 inodesize = 256 inopblock = 16 fname = "\000\000\000\000\000\000\000\000\000\000\000\000" blocklog = 12 sectlog = 9 inodelog = 8 inopblog = 4 agblklog = 26 rextslog = 0 inprogress = 0 imax_pct = 25 icount = 0 ifree = 0 fdblocks = 0 frextents = 0 uquotino = 0 gquotino = 0 qflags = 0 flags = 0 shared_vn = 0 inoalignmt = 2 unit = 0 width = 0 dirblklog = 0 logsectlog = 0 logsectsize = 0 logsunit = 0 features2 = 0 [[HTML alternate version deleted]] From julia@diku.dk Sun Dec 21 09:42:07 2008 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 mBLFg66P016482 for ; Sun, 21 Dec 2008 09:42:07 -0600 X-ASG-Debug-ID: 1229874123-405702ba0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mgw1.diku.dk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2F7E33B43E; Sun, 21 Dec 2008 07:42:03 -0800 (PST) Received: from mgw1.diku.dk (mgw1.diku.dk [130.225.96.91]) by cuda.sgi.com with ESMTP id Z88prLvWrGgTOBRY; Sun, 21 Dec 2008 07:42:03 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by mgw1.diku.dk (Postfix) with ESMTP id 740A652C374; Sun, 21 Dec 2008 16:40:58 +0100 (CET) X-Virus-Scanned: amavisd-new at diku.dk Received: from mgw1.diku.dk ([127.0.0.1]) by localhost (mgw1.diku.dk [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id na6wtnyyhmWQ; Sun, 21 Dec 2008 16:40:57 +0100 (CET) Received: from nhugin.diku.dk (nhugin.diku.dk [130.225.96.140]) by mgw1.diku.dk (Postfix) with ESMTP id 5716C52C36E; Sun, 21 Dec 2008 16:40:57 +0100 (CET) Received: from pc-004.diku.dk (pc-004.diku.dk [130.225.97.4]) by nhugin.diku.dk (Postfix) with ESMTP id 8B8CC6DF823; Sun, 21 Dec 2008 16:40:22 +0100 (CET) Received: by pc-004.diku.dk (Postfix, from userid 3767) id EA3229C591; Sun, 21 Dec 2008 16:40:56 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by pc-004.diku.dk (Postfix) with ESMTP id E88C89C532; Sun, 21 Dec 2008 16:40:56 +0100 (CET) Date: Sun, 21 Dec 2008 16:40:56 +0100 (CET) From: Julia Lawall To: xfs-masters@oss.sgi.com, xfs@oss.sgi.com, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org X-ASG-Orig-Subj: [PATCH 9/13] fs/xfs: Remove redundant test Subject: [PATCH 9/13] fs/xfs: Remove redundant test Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Connect: mgw1.diku.dk[130.225.96.91] X-Barracuda-Start-Time: 1229874124 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.13293 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Julia Lawall In fs/cifs/cifssmb.c, pLockData is tested for being NULL at the beginning of the function, and not reassigned subsequently. In fs/xfs/xfs_trans_buf.c, bp is tested for being NULL just a few lines above. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; expression E; position p1,p2; @@ if (x@p1 == NULL || ...) { ... when forall return ...; } ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) ( x@p2 == NULL | x@p2 != NULL ) // another path to the test that is not through p1? @s exists@ local idexpression r.x; position r.p1,r.p2; @@ ... when != x@p1 ( x@p2 == NULL | x@p2 != NULL ) @fix depends on !s@ position r.p1,r.p2; expression x,E; statement S1,S2; @@ ( - if ((x@p2 != NULL) || ...) S1 | - if ((x@p2 == NULL) && ...) S1 | - BUG_ON(x@p2 == NULL); ) // Signed-off-by: Julia Lawall --- fs/xfs/xfs_trans_buf.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/fs/xfs/xfs_trans_buf.c b/fs/xfs/xfs_trans_buf.c index 8ee2f8c..22afe29 100644 --- a/fs/xfs/xfs_trans_buf.c +++ b/fs/xfs/xfs_trans_buf.c @@ -307,7 +307,7 @@ xfs_trans_read_buf( return (flags & XFS_BUF_TRYLOCK) ? EAGAIN : XFS_ERROR(ENOMEM); - if ((bp != NULL) && (XFS_BUF_GETERROR(bp) != 0)) { + if (XFS_BUF_GETERROR(bp) != 0) { xfs_ioerror_alert("xfs_trans_read_buf", mp, bp, blkno); error = XFS_BUF_GETERROR(bp); From sandeen@sandeen.net Sun Dec 21 09:55:09 2008 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_43 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 mBLFt97n018263 for ; Sun, 21 Dec 2008 09:55:09 -0600 X-ASG-Debug-ID: 1229874907-405d036a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D68E63BE5F for ; Sun, 21 Dec 2008 07:55:07 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id WJ3aMvW2HBWHh0JM for ; Sun, 21 Dec 2008 07:55:07 -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 sandeen.net (Postfix) with ESMTP id 3B8DAA81D59; Sun, 21 Dec 2008 09:55:06 -0600 (CST) Message-ID: <494E66D9.5030704@sandeen.net> Date: Sun, 21 Dec 2008 09:55:05 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: David Bernick CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_repair problem. Subject: Re: xfs_repair problem. References: <7bcfcfff0812210703r4bd889cave8e2d60c56587e3e@mail.gmail.com> In-Reply-To: <7bcfcfff0812210703r4bd889cave8e2d60c56587e3e@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: 1229874907 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.13294 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- David Bernick wrote: > I have a filesystem where an xfs_growfs went bad. We were adding > storage to a pre-existing infrastructure and when growing, we received > an error. The error you encountered would be worth mentioning in detail... > SInce then, we've been unable to mount. > > It's a large filesystem (see below) and the addition of the extra data > has made it larger. We tried an xfs_repair but it died, as the machine > only has 4GB RAM. Do you have the latest version of repair? (xfs_repair -V; 2.10.2 is latest) > We're going to put 32 GB in RAM and see if that > helps. The original FS size is about 13T and the addition brought it > to 29T. on a 64-bit box I hope? what kernel version? > Since we've been unable to write or mount, we've "backed off" the > addition and are left with our original, which we'd like to mount. How did you back it off? either the fs grew or it didn't; and you can't shrink... so I guess it did not grow... > We try to mount and get an error about the root inode not being > readable. Makes sense as the root inode is null (according to xfs_db). > > So before we run another big xfs_repair: > > 1. What is the math of filesystems size, number of files and how much > RAM is needed for such a task? Is 32 GB enough for 1/2 Billion files > and 13 TB? > > 2. Any way I can just find my rootino,rbmino,rsumino and put them in the DB? I looked at the db output below & re-made a similar sparse fs: [root tmp]# bc 3064987648*4096 12554189406208 quit [root tmp]# mkfs.xfs -dfile,name=testfile,size=12554189406208 meta-data=testfile isize=256 agcount=12, agsize=268435455 blks = sectsz=512 attr=2 data = bsize=4096 blocks=3064987648, imaxpct=5 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 log =internal log bsize=4096 blocks=32768, version=2 = sectsz=512 sunit=0 blks, lazy-count=0 realtime =none extsz=4096 blocks=0, rtextents=0 ls -lh [root tmp]# ls -l testfile -rw-r--r-- 1 root root 12554189406208 Dec 21 09:51 testfile [root tmp]# xfs_db testfile xfs_db> sb 0 xfs_db> p magicnum = 0x58465342 blocksize = 4096 dblocks = 3064987648 rblocks = 0 rextents = 0 uuid = 4b0451c8-5be4-452f-b161-a3ada3ec1a20 logstart = 1610612740 rootino = 128 rbmino = 129 rsumino = 130 so that's most likely what it should be. > Any other advice? post more details of how things actually fail and what happened... > /proc/partitions: > 253 0 13084291072 dm-0 > > > DB: what db command? printing sb 0 I assume but it' worth being explicit. -Eric > magicnum = 0x58465342 > blocksize = 4096 > dblocks = 3064987648 > rblocks = 0 > rextents = 0 > uuid = f086bb71-d67b-4cc1-b622-1f10349e6a49 > logstart = 1073741828 > rootino = null > rbmino = null > rsumino = null From sandeen@sandeen.net Sun Dec 21 10:01:14 2008 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 mBLG1D4J019332 for ; Sun, 21 Dec 2008 10:01:14 -0600 X-ASG-Debug-ID: 1229875271-27c202fe0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 58E9A1B9D299; Sun, 21 Dec 2008 08:01:11 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id FaBc4CTOyE8FlOmq; Sun, 21 Dec 2008 08:01:11 -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 sandeen.net (Postfix) with ESMTP id D0DBEA9FE9D; Sun, 21 Dec 2008 10:01:10 -0600 (CST) Message-ID: <494E6846.8070800@sandeen.net> Date: Sun, 21 Dec 2008 10:01:10 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Julia Lawall CC: xfs-masters@oss.sgi.com, xfs@oss.sgi.com, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org X-ASG-Orig-Subj: Re: [PATCH 9/13] fs/xfs: Remove redundant test Subject: Re: [PATCH 9/13] fs/xfs: Remove redundant test References: In-Reply-To: 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: 1229875272 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.13294 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Julia Lawall wrote: > From: Julia Lawall > > In fs/cifs/cifssmb.c, pLockData is tested for being NULL at the beginning > of the function, and not reassigned subsequently. > > In fs/xfs/xfs_trans_buf.c, bp is tested for being NULL just a few lines > above. > > A simplified version of the semantic patch that makes this change is as > follows: (http://www.emn.fr/x-info/coccinelle/) > > // > @r exists@ > local idexpression x; > expression E; > position p1,p2; > @@ > > if (x@p1 == NULL || ...) { ... when forall > return ...; } > ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) > ( > x@p2 == NULL > | > x@p2 != NULL > ) > > // another path to the test that is not through p1? > @s exists@ > local idexpression r.x; > position r.p1,r.p2; > @@ > > ... when != x@p1 > ( > x@p2 == NULL > | > x@p2 != NULL > ) > > @fix depends on !s@ > position r.p1,r.p2; > expression x,E; > statement S1,S2; > @@ > > ( > - if ((x@p2 != NULL) || ...) > S1 > | > - if ((x@p2 == NULL) && ...) S1 > | > - BUG_ON(x@p2 == NULL); > ) > // > > Signed-off-by: Julia Lawall Looks fine to me, though a similar test under the #ifdef DEBUG can probably also be removed. -Eric > --- > fs/xfs/xfs_trans_buf.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/fs/xfs/xfs_trans_buf.c b/fs/xfs/xfs_trans_buf.c > index 8ee2f8c..22afe29 100644 > --- a/fs/xfs/xfs_trans_buf.c > +++ b/fs/xfs/xfs_trans_buf.c > @@ -307,7 +307,7 @@ xfs_trans_read_buf( > return (flags & XFS_BUF_TRYLOCK) ? > EAGAIN : XFS_ERROR(ENOMEM); > > - if ((bp != NULL) && (XFS_BUF_GETERROR(bp) != 0)) { > + if (XFS_BUF_GETERROR(bp) != 0) { > xfs_ioerror_alert("xfs_trans_read_buf", mp, > bp, blkno); > error = XFS_BUF_GETERROR(bp); > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From julia@diku.dk Sun Dec 21 10:37:41 2008 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=unavailable 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 mBLGbeUL023605 for ; Sun, 21 Dec 2008 10:37:41 -0600 X-ASG-Debug-ID: 1229877458-5f5900c90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mgw2.diku.dk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C950C1BF63E7; Sun, 21 Dec 2008 08:37:38 -0800 (PST) Received: from mgw2.diku.dk (mgw2.diku.dk [130.225.96.92]) by cuda.sgi.com with ESMTP id 8cuIZM8qbCdkKqHK; Sun, 21 Dec 2008 08:37:38 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by mgw2.diku.dk (Postfix) with ESMTP id 92DB619BB5F; Sun, 21 Dec 2008 17:36:35 +0100 (CET) Received: from mgw2.diku.dk ([127.0.0.1]) by localhost (mgw2.diku.dk [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20356-12; Sun, 21 Dec 2008 17:36:33 +0100 (CET) Received: from nhugin.diku.dk (nhugin.diku.dk [130.225.96.140]) by mgw2.diku.dk (Postfix) with ESMTP id 4ECCE19BB64; Sun, 21 Dec 2008 17:36:33 +0100 (CET) Received: from pc-004.diku.dk (pc-004.diku.dk [130.225.97.4]) by nhugin.diku.dk (Postfix) with ESMTP id 936BB6DF823; Sun, 21 Dec 2008 17:35:58 +0100 (CET) Received: by pc-004.diku.dk (Postfix, from userid 3767) id 2EF599C592; Sun, 21 Dec 2008 17:36:33 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by pc-004.diku.dk (Postfix) with ESMTP id 2CA589C532; Sun, 21 Dec 2008 17:36:33 +0100 (CET) Date: Sun, 21 Dec 2008 17:36:33 +0100 (CET) From: Julia Lawall To: Eric Sandeen Cc: xfs-masters@oss.sgi.com, xfs@oss.sgi.com, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org X-ASG-Orig-Subj: Re: [PATCH 9/13] fs/xfs: Remove redundant test Subject: Re: [PATCH 9/13] fs/xfs: Remove redundant test In-Reply-To: <494E6846.8070800@sandeen.net> Message-ID: References: <494E6846.8070800@sandeen.net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Virus-Scanned: amavisd-new at diku.dk X-Barracuda-Connect: mgw2.diku.dk[130.225.96.92] X-Barracuda-Start-Time: 1229877458 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.13295 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- > Looks fine to me, though a similar test under the #ifdef DEBUG can > probably also be removed. Indeed. I will send an updated patch. julia > -Eric > > > --- > > fs/xfs/xfs_trans_buf.c | 2 +- > > 1 files changed, 1 insertions(+), 1 deletions(-) > > > > diff --git a/fs/xfs/xfs_trans_buf.c b/fs/xfs/xfs_trans_buf.c > > index 8ee2f8c..22afe29 100644 > > --- a/fs/xfs/xfs_trans_buf.c > > +++ b/fs/xfs/xfs_trans_buf.c > > @@ -307,7 +307,7 @@ xfs_trans_read_buf( > > return (flags & XFS_BUF_TRYLOCK) ? > > EAGAIN : XFS_ERROR(ENOMEM); > > > > - if ((bp != NULL) && (XFS_BUF_GETERROR(bp) != 0)) { > > + if (XFS_BUF_GETERROR(bp) != 0) { > > xfs_ioerror_alert("xfs_trans_read_buf", mp, > > bp, blkno); > > error = XFS_BUF_GETERROR(bp); > > > > _______________________________________________ > > xfs mailing list > > xfs@oss.sgi.com > > http://oss.sgi.com/mailman/listinfo/xfs > > > > -- > To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > From julia@diku.dk Sun Dec 21 10:38:34 2008 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=unavailable 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 mBLGcXBI023718 for ; Sun, 21 Dec 2008 10:38:34 -0600 X-ASG-Debug-ID: 1229877511-386401ab0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mgw2.diku.dk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 447ED3C22D; Sun, 21 Dec 2008 08:38:31 -0800 (PST) Received: from mgw2.diku.dk (mgw2.diku.dk [130.225.96.92]) by cuda.sgi.com with ESMTP id DMJtxM3TNJdpkDQD; Sun, 21 Dec 2008 08:38:31 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by mgw2.diku.dk (Postfix) with ESMTP id C86DC19BBC1; Sun, 21 Dec 2008 17:38:30 +0100 (CET) Received: from mgw2.diku.dk ([127.0.0.1]) by localhost (mgw2.diku.dk [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20386-14; Sun, 21 Dec 2008 17:38:29 +0100 (CET) Received: from nhugin.diku.dk (nhugin.diku.dk [130.225.96.140]) by mgw2.diku.dk (Postfix) with ESMTP id 8CC3319BB64; Sun, 21 Dec 2008 17:38:29 +0100 (CET) Received: from pc-004.diku.dk (pc-004.diku.dk [130.225.97.4]) by nhugin.diku.dk (Postfix) with ESMTP id D058B6DF835; Sun, 21 Dec 2008 17:37:54 +0100 (CET) Received: by pc-004.diku.dk (Postfix, from userid 3767) id 6C8BD9C592; Sun, 21 Dec 2008 17:38:29 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by pc-004.diku.dk (Postfix) with ESMTP id 69E4F9C532; Sun, 21 Dec 2008 17:38:29 +0100 (CET) Date: Sun, 21 Dec 2008 17:38:29 +0100 (CET) From: Julia Lawall To: Eric Sandeen Cc: xfs-masters@oss.sgi.com, xfs@oss.sgi.com, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org X-ASG-Orig-Subj: Re: [PATCH 9/13] fs/xfs: Remove redundant test Subject: Re: [PATCH 9/13] fs/xfs: Remove redundant test In-Reply-To: <494E6846.8070800@sandeen.net> Message-ID: References: <494E6846.8070800@sandeen.net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Virus-Scanned: amavisd-new at diku.dk X-Barracuda-Connect: mgw2.diku.dk[130.225.96.92] X-Barracuda-Start-Time: 1229877512 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.13295 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Julia Lawall In fs/xfs/xfs_trans_buf.c, bp is tested for being NULL just a few lines above. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; expression E; position p1,p2; @@ if (x@p1 == NULL || ...) { ... when forall return ...; } ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) ( x@p2 == NULL | x@p2 != NULL ) // another path to the test that is not through p1? @s exists@ local idexpression r.x; position r.p1,r.p2; @@ ... when != x@p1 ( x@p2 == NULL | x@p2 != NULL ) @fix depends on !s@ position r.p1,r.p2; expression x,E; statement S1,S2; @@ ( - if ((x@p2 != NULL) || ...) S1 | - if ((x@p2 == NULL) && ...) S1 | - BUG_ON(x@p2 == NULL); ) // Signed-off-by: Julia Lawall --- var/julia/linuxcopy/fs/xfs/xfs_trans_buf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/var/linuxes/linux-next/fs/xfs/xfs_trans_buf.c b/var/julia/linuxcopy/fs/xfs/xfs_trans_buf.c index 8ee2f8c..218829e 100644 --- a/var/linuxes/linux-next/fs/xfs/xfs_trans_buf.c +++ b/var/julia/linuxcopy/fs/xfs/xfs_trans_buf.c @@ -307,7 +307,7 @@ xfs_trans_read_buf( return (flags & XFS_BUF_TRYLOCK) ? EAGAIN : XFS_ERROR(ENOMEM); - if ((bp != NULL) && (XFS_BUF_GETERROR(bp) != 0)) { + if (XFS_BUF_GETERROR(bp) != 0) { xfs_ioerror_alert("xfs_trans_read_buf", mp, bp, blkno); error = XFS_BUF_GETERROR(bp); @@ -315,7 +315,7 @@ xfs_trans_read_buf( return error; } #ifdef DEBUG - if (xfs_do_error && (bp != NULL)) { + if (xfs_do_error) { if (xfs_error_target == target) { if (((xfs_req_num++) % xfs_error_mod) == 0) { xfs_buf_relse(bp); From julia@diku.dk Sun Dec 21 10:45:49 2008 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 mBLGjnZM024357 for ; Sun, 21 Dec 2008 10:45:49 -0600 X-ASG-Debug-ID: 1229877947-4d9b00520000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mgw2.diku.dk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 527DF3C27D; Sun, 21 Dec 2008 08:45:47 -0800 (PST) Received: from mgw2.diku.dk (mgw2.diku.dk [130.225.96.92]) by cuda.sgi.com with ESMTP id DqZgSWTbF7CY6HCN; Sun, 21 Dec 2008 08:45:47 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by mgw2.diku.dk (Postfix) with ESMTP id 0A37119BBC1; Sun, 21 Dec 2008 17:45:47 +0100 (CET) Received: from mgw2.diku.dk ([127.0.0.1]) by localhost (mgw2.diku.dk [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 19512-20; Sun, 21 Dec 2008 17:45:44 +0100 (CET) Received: from nhugin.diku.dk (nhugin.diku.dk [130.225.96.140]) by mgw2.diku.dk (Postfix) with ESMTP id 8A5E819BB5F; Sun, 21 Dec 2008 17:45:44 +0100 (CET) Received: from pc-004.diku.dk (pc-004.diku.dk [130.225.97.4]) by nhugin.diku.dk (Postfix) with ESMTP id CAE706DF8B9; Sun, 21 Dec 2008 17:45:09 +0100 (CET) Received: by pc-004.diku.dk (Postfix, from userid 3767) id 69BD99C592; Sun, 21 Dec 2008 17:45:44 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by pc-004.diku.dk (Postfix) with ESMTP id 678E29C532; Sun, 21 Dec 2008 17:45:44 +0100 (CET) Date: Sun, 21 Dec 2008 17:45:44 +0100 (CET) From: Julia Lawall To: Eric Sandeen Cc: xfs-masters@oss.sgi.com, xfs@oss.sgi.com, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org X-ASG-Orig-Subj: Re: [PATCH 9/13] fs/xfs: Remove redundant test Subject: Re: [PATCH 9/13] fs/xfs: Remove redundant test In-Reply-To: Message-ID: References: <494E6846.8070800@sandeen.net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Virus-Scanned: amavisd-new at diku.dk X-Barracuda-Connect: mgw2.diku.dk[130.225.96.92] X-Barracuda-Start-Time: 1229877948 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.13295 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Julia Lawall In fs/xfs/xfs_trans_buf.c, bp is tested for being NULL just a few lines above. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; expression E; position p1,p2; @@ if (x@p1 == NULL || ...) { ... when forall return ...; } ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) ( x@p2 == NULL | x@p2 != NULL ) // another path to the test that is not through p1? @s exists@ local idexpression r.x; position r.p1,r.p2; @@ ... when != x@p1 ( x@p2 == NULL | x@p2 != NULL ) @fix depends on !s@ position r.p1,r.p2; expression x,E; statement S1,S2; @@ ( - if ((x@p2 != NULL) || ...) S1 | - if ((x@p2 == NULL) && ...) S1 | - BUG_ON(x@p2 == NULL); ) // Signed-off-by: Julia Lawall --- fs/xfs/xfs_trans_buf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/xfs/xfs_trans_buf.c b/fs/xfs/xfs_trans_buf.c index 8ee2f8c..218829e 100644 --- a/fs/xfs/xfs_trans_buf.c +++ b/fs/xfs/xfs_trans_buf.c @@ -307,7 +307,7 @@ xfs_trans_read_buf( return (flags & XFS_BUF_TRYLOCK) ? EAGAIN : XFS_ERROR(ENOMEM); - if ((bp != NULL) && (XFS_BUF_GETERROR(bp) != 0)) { + if (XFS_BUF_GETERROR(bp) != 0) { xfs_ioerror_alert("xfs_trans_read_buf", mp, bp, blkno); error = XFS_BUF_GETERROR(bp); @@ -315,7 +315,7 @@ xfs_trans_read_buf( return error; } #ifdef DEBUG - if (xfs_do_error && (bp != NULL)) { + if (xfs_do_error) { if (xfs_error_target == target) { if (((xfs_req_num++) % xfs_error_mod) == 0) { xfs_buf_relse(bp); From sandeen@sandeen.net Sun Dec 21 10:48:41 2008 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 mBLGmf9P024842 for ; Sun, 21 Dec 2008 10:48:41 -0600 X-ASG-Debug-ID: 1229878119-5f59018e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0ABC61BF6451; Sun, 21 Dec 2008 08:48:39 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id TTdxEM5xa809UXxj; Sun, 21 Dec 2008 08:48: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 sandeen.net (Postfix) with ESMTP id 49C86A9FEA2; Sun, 21 Dec 2008 10:47:38 -0600 (CST) Message-ID: <494E7329.2090309@sandeen.net> Date: Sun, 21 Dec 2008 10:47:37 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Julia Lawall CC: xfs-masters@oss.sgi.com, xfs@oss.sgi.com, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org X-ASG-Orig-Subj: Re: [PATCH 9/13] fs/xfs: Remove redundant test Subject: Re: [PATCH 9/13] fs/xfs: Remove redundant test References: <494E6846.8070800@sandeen.net> In-Reply-To: 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: 1229878120 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.13295 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Julia Lawall wrote: > From: Julia Lawall > > In fs/xfs/xfs_trans_buf.c, bp is tested for being NULL just a few lines > above. > > A simplified version of the semantic patch that makes this change is as > follows: (http://www.emn.fr/x-info/coccinelle/) > > // > @r exists@ > local idexpression x; > expression E; > position p1,p2; > @@ > > if (x@p1 == NULL || ...) { ... when forall > return ...; } > ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) > ( > x@p2 == NULL > | > x@p2 != NULL > ) > > // another path to the test that is not through p1? > @s exists@ > local idexpression r.x; > position r.p1,r.p2; > @@ > > ... when != x@p1 > ( > x@p2 == NULL > | > x@p2 != NULL > ) > > @fix depends on !s@ > position r.p1,r.p2; > expression x,E; > statement S1,S2; > @@ > > ( > - if ((x@p2 != NULL) || ...) > S1 > | > - if ((x@p2 == NULL) && ...) S1 > | > - BUG_ON(x@p2 == NULL); > ) > // > > Signed-off-by: Julia Lawall Looks good to me, thanks. Reviewed-by: Eric Sandeen > --- > var/julia/linuxcopy/fs/xfs/xfs_trans_buf.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/var/linuxes/linux-next/fs/xfs/xfs_trans_buf.c b/var/julia/linuxcopy/fs/xfs/xfs_trans_buf.c > index 8ee2f8c..218829e 100644 > --- a/var/linuxes/linux-next/fs/xfs/xfs_trans_buf.c > +++ b/var/julia/linuxcopy/fs/xfs/xfs_trans_buf.c > @@ -307,7 +307,7 @@ xfs_trans_read_buf( > return (flags & XFS_BUF_TRYLOCK) ? > EAGAIN : XFS_ERROR(ENOMEM); > > - if ((bp != NULL) && (XFS_BUF_GETERROR(bp) != 0)) { > + if (XFS_BUF_GETERROR(bp) != 0) { > xfs_ioerror_alert("xfs_trans_read_buf", mp, > bp, blkno); > error = XFS_BUF_GETERROR(bp); > @@ -315,7 +315,7 @@ xfs_trans_read_buf( > return error; > } > #ifdef DEBUG > - if (xfs_do_error && (bp != NULL)) { > + if (xfs_do_error) { > if (xfs_error_target == target) { > if (((xfs_req_num++) % xfs_error_mod) == 0) { > xfs_buf_relse(bp); > From dbernick@gmail.com Sun Dec 21 10:52:20 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.5 required=5.0 tests=AWL,BAYES_00,HTML_MESSAGE, J_CHICKENPOX_43 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 mBLGqJ7X025374 for ; Sun, 21 Dec 2008 10:52:20 -0600 X-ASG-Debug-ID: 1229878336-358402a30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f10.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2D9D63C1BF for ; Sun, 21 Dec 2008 08:52:16 -0800 (PST) Received: from mail-bw0-f10.google.com (mail-bw0-f10.google.com [209.85.218.10]) by cuda.sgi.com with ESMTP id OFj2OMRZkQG7ifg4 for ; Sun, 21 Dec 2008 08:52:16 -0800 (PST) Received: by bwz3 with SMTP id 3so3552410bwz.20 for ; Sun, 21 Dec 2008 08:52:15 -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:cc:in-reply-to:mime-version:content-type:references; bh=yLNhhRgaKfmmhfGixej3RwPkjCih7ou9n7aZzALem9w=; b=vxw27XvpuQucZiG//+abbNyV0f04nK/gPW74gf5I/euxNB8XDCjCClz+DCSbcWj1tN 0axUf7Y72Ul7pDpA0XiKeySed0FEcf6dhchx3doHoj+qYCQxrb30nRviSPPtMnMTNA+c HecyYarHvB45Bn6q1YTu4EusCkSUpgOXIR1KM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:references; b=h5CuwT4rDCiMOIU5x3/WZx5jQeVeJONq8jYFbpKUdTaNXmQRmJPRJUEjXae/q0thkT 80gMue38PrZFG78cHvfxu90Oq86sAIFrnA1GPipgse+wJb+92IeOMuxObwmbOMfRiE2P MZsVPkRRoOyhMVtUbCpriqNzT+g947H6AFpCU= Received: by 10.181.223.2 with SMTP id a2mr1960532bkr.184.1229878334984; Sun, 21 Dec 2008 08:52:14 -0800 (PST) Received: by 10.180.233.11 with HTTP; Sun, 21 Dec 2008 08:52:14 -0800 (PST) Message-ID: <7bcfcfff0812210852v6c1cd522i334de914e1e9a112@mail.gmail.com> Date: Sun, 21 Dec 2008 11:52:14 -0500 From: "David Bernick" To: "Eric Sandeen" X-ASG-Orig-Subj: Re: xfs_repair problem. Subject: Re: xfs_repair problem. Cc: xfs@oss.sgi.com In-Reply-To: <494E66D9.5030704@sandeen.net> MIME-Version: 1.0 References: <7bcfcfff0812210703r4bd889cave8e2d60c56587e3e@mail.gmail.com> <494E66D9.5030704@sandeen.net> X-Barracuda-Connect: mail-bw0-f10.google.com[209.85.218.10] X-Barracuda-Start-Time: 1229878338 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0207 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=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13297 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: 7bit Content-length: 4156 Thanks for the help so far: It my output was from "sb 0". Thanks for reminding me to be explicit. The system is a 64-bit system with 32-GB of RAM. It's going through the FS right now with XFS repair. Output of xfs_repair says, "arno=3" and about 81.6% of RAM is used by the process. Think 32 G will be enough to handle this task? I actually don't KNOW the original error, unfortunately, when growing. I came into this late. We're using repair 2.9.4. Worth getting a more recent version? Kernel is - 2.6.18-92.1.1.el5 I "backed off" by vgsplit-ing the new physical device from the original vgroup, so I was left with my original partition. I am hoping to mount the original device since the "expanded" fs didn't work. I am hoping xfs_repair helps that. Why do you say its a "sparse" fs? How do you go about writing to these inodes with these values: rootino = 128 rbmino = 129 rsumino = 130 without affecting the data? Thanks for any help! On Sun, Dec 21, 2008 at 10:55 AM, Eric Sandeen wrote: > David Bernick wrote: > > I have a filesystem where an xfs_growfs went bad. We were adding > > storage to a pre-existing infrastructure and when growing, we received > > an error. > > The error you encountered would be worth mentioning in detail... > > > SInce then, we've been unable to mount. > > > > It's a large filesystem (see below) and the addition of the extra data > > has made it larger. We tried an xfs_repair but it died, as the machine > > only has 4GB RAM. > > Do you have the latest version of repair? (xfs_repair -V; 2.10.2 is > latest) > > > We're going to put 32 GB in RAM and see if that > > helps. The original FS size is about 13T and the addition brought it > > to 29T. > > on a 64-bit box I hope? what kernel version? > > > Since we've been unable to write or mount, we've "backed off" the > > addition and are left with our original, which we'd like to mount. > > How did you back it off? either the fs grew or it didn't; and you can't > shrink... so I guess it did not grow... > > > We try to mount and get an error about the root inode not being > > readable. Makes sense as the root inode is null (according to xfs_db). > > > > So before we run another big xfs_repair: > > > > 1. What is the math of filesystems size, number of files and how much > > RAM is needed for such a task? Is 32 GB enough for 1/2 Billion files > > and 13 TB? > > > > 2. Any way I can just find my rootino,rbmino,rsumino and put them in the > DB? > > I looked at the db output below & re-made a similar sparse fs: > > [root tmp]# bc > 3064987648*4096 > 12554189406208 > quit > [root tmp]# mkfs.xfs -dfile,name=testfile,size=12554189406208 > meta-data=testfile isize=256 agcount=12, > agsize=268435455 blks > = sectsz=512 attr=2 > data = bsize=4096 blocks=3064987648, imaxpct=5 > = sunit=0 swidth=0 blks > naming =version 2 bsize=4096 > log =internal log bsize=4096 blocks=32768, version=2 > = sectsz=512 sunit=0 blks, lazy-count=0 > realtime =none extsz=4096 blocks=0, rtextents=0 > ls -lh [root tmp]# ls -l testfile > -rw-r--r-- 1 root root 12554189406208 Dec 21 09:51 testfile > [root tmp]# xfs_db testfile > xfs_db> sb 0 > xfs_db> p > magicnum = 0x58465342 > blocksize = 4096 > dblocks = 3064987648 > rblocks = 0 > rextents = 0 > uuid = 4b0451c8-5be4-452f-b161-a3ada3ec1a20 > logstart = 1610612740 > rootino = 128 > rbmino = 129 > rsumino = 130 > > so that's most likely what it should be. > > > Any other advice? > > post more details of how things actually fail and what happened... > > > > /proc/partitions: > > 253 0 13084291072 dm-0 > > > > > > > DB: > > what db command? printing sb 0 I assume but it' worth being explicit. > > -Eric > > > > magicnum = 0x58465342 > > blocksize = 4096 > > dblocks = 3064987648 > > rblocks = 0 > > rextents = 0 > > uuid = f086bb71-d67b-4cc1-b622-1f10349e6a49 > > logstart = 1073741828 > > rootino = null > > rbmino = null > > rsumino = null > > [[HTML alternate version deleted]] From sandeen@sandeen.net Sun Dec 21 11:02:05 2008 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 mBLH25MV026301 for ; Sun, 21 Dec 2008 11:02:05 -0600 X-ASG-Debug-ID: 1229878923-351903660000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EC9CC3B430 for ; Sun, 21 Dec 2008 09:02:03 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id plluWunyhHrZx1oP for ; Sun, 21 Dec 2008 09:02:03 -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 sandeen.net (Postfix) with ESMTP id 32551A9FEA4; Sun, 21 Dec 2008 11:01:32 -0600 (CST) Message-ID: <494E766B.5080102@sandeen.net> Date: Sun, 21 Dec 2008 11:01:31 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: David Bernick CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_repair problem. Subject: Re: xfs_repair problem. References: <7bcfcfff0812210703r4bd889cave8e2d60c56587e3e@mail.gmail.com> <494E66D9.5030704@sandeen.net> <7bcfcfff0812210852v6c1cd522i334de914e1e9a112@mail.gmail.com> In-Reply-To: <7bcfcfff0812210852v6c1cd522i334de914e1e9a112@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: 1229878923 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.13297 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- David Bernick wrote: > Thanks for the help so far: > > It my output was from "sb 0". Thanks for reminding me to be explicit. > > The system is a 64-bit system with 32-GB of RAM. It's going through the > FS right now with XFS repair. > Output of xfs_repair says, "arno=3" and about 81.6% of RAM is used by > the process. Think 32 G will be enough to handle this task? > I actually don't KNOW the original error, unfortunately, when growing. I > came into this late. > > We're using repair 2.9.4. Worth getting a more recent version? 2.9.8 had some memory usage improvements (reductions) for repair IIRC > Kernel is - 2.6.18-92.1.1.el5 heh; RHEL5 does not support xfs ;) You probably hit: TAKE 959978 - growing an XFS filesystem by more than 2TB is broken http://oss.sgi.com/archives/xfs/2007-01/msg00053.html I'd see if you can get centos to backport that fix (I assume you're using centos or at least their kernel module; if not you can backport it yourself...) > I "backed off" by vgsplit-ing the new physical device from the original > vgroup, so I was left with my original partition. I am hoping to mount > the original device since the "expanded" fs didn't work. I am hoping > xfs_repair helps that. well, you don't want to take out part of the device if the fs thinks it owns it now, but from the db output I think you still have the smaller size. I'd read through: http://oss.sgi.com/archives/xfs/2008-01/msg00085.html and see if it helps you recover. -Eric From dbernick@gmail.com Sun Dec 21 11:07:32 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.4 required=5.0 tests=AWL,BAYES_00,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 mBLH7V9n026781 for ; Sun, 21 Dec 2008 11:07:32 -0600 X-ASG-Debug-ID: 1229879249-386503150000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from fk-out-0910.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6E7B43B44A for ; Sun, 21 Dec 2008 09:07:29 -0800 (PST) Received: from fk-out-0910.google.com (fk-out-0910.google.com [209.85.128.191]) by cuda.sgi.com with ESMTP id 1Vo7PqG3Zqy21zZm for ; Sun, 21 Dec 2008 09:07:29 -0800 (PST) Received: by fk-out-0910.google.com with SMTP id 26so1163516fkx.4 for ; Sun, 21 Dec 2008 09:07: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:to :subject:cc:in-reply-to:mime-version:content-type:references; bh=Lz1Gu63MnorWa8F2t5RwOHJp2FutPp4jdqn3pjAuxdY=; b=oMJiGzbiyr0V5bZYf0j/9T0vn0YJB2c97+j0gTwO7bOgR7Szi9Xe+3zVQcLXRAc7e9 smuk+qSYS0wJxog0cwyyzEvd/fuEWjgXOXQj9NcAwLkws9RYfWW2Rve3m+z36zjjf+nu 3jzlRlAplLUEiYK4IrNOyN78++c1z3Ro3V+64= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:references; b=L91SpTDTW2VGYmpUCRvIFw+c6I98Qvl4g7UeEy1JUVXNSku43UD/GM5kTKLkg2rwDh VoJ4b+Z5s7UG+kcR9epKuCa0bTfqn2JFuNJapNvylYyDS7MESJvWjJZCWPmlmkggd0JJ bls7GSYUpSpx62hvckwbgrOkBM5mH+0UVJZPY= Received: by 10.181.148.2 with SMTP id a2mr1969600bko.117.1229879248898; Sun, 21 Dec 2008 09:07:28 -0800 (PST) Received: by 10.180.233.11 with HTTP; Sun, 21 Dec 2008 09:07:28 -0800 (PST) Message-ID: <7bcfcfff0812210907t6515b070ie553556d451c308@mail.gmail.com> Date: Sun, 21 Dec 2008 12:07:28 -0500 From: "David Bernick" To: "Eric Sandeen" X-ASG-Orig-Subj: Re: xfs_repair problem. Subject: Re: xfs_repair problem. Cc: xfs@oss.sgi.com In-Reply-To: <494E766B.5080102@sandeen.net> MIME-Version: 1.0 References: <7bcfcfff0812210703r4bd889cave8e2d60c56587e3e@mail.gmail.com> <494E66D9.5030704@sandeen.net> <7bcfcfff0812210852v6c1cd522i334de914e1e9a112@mail.gmail.com> <494E766B.5080102@sandeen.net> X-Barracuda-Connect: fk-out-0910.google.com[209.85.128.191] X-Barracuda-Start-Time: 1229879250 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=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13297 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: 7bit Content-length: 763 The xfs_repair is running. seems to have stabilized at about 91% RAM usage. It's at a part where its "clearing inode number in entry at offset...", so hopefully its just progressing. I'll grab the newest version of xfs_repair and try that if this all fails. WHere can I grab the latest? > > > Kernel is - 2.6.18-92.1.1.el5 > > heh; RHEL5 does not support xfs ;) > shhh. i know that :) "well, you don't want to take out part of the device if the fs thinks it owns it now, but from the db output I think you still have the smaller size." That's what I thought from looking at everything, too. "I'd read through: http://oss.sgi.com/archives/xfs/2008-01/msg00085.html" I've been pouring through that thread since 3am EST :) [[HTML alternate version deleted]] From sandeen@sandeen.net Sun Dec 21 11:12:05 2008 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 mBLHC53l027429 for ; Sun, 21 Dec 2008 11:12:05 -0600 X-ASG-Debug-ID: 1229879523-3865034e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 65F123B45F for ; Sun, 21 Dec 2008 09:12:03 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id u6aHVvGerDnPP0cm for ; Sun, 21 Dec 2008 09:12:03 -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 sandeen.net (Postfix) with ESMTP id 88550A9FEA4; Sun, 21 Dec 2008 11:12:03 -0600 (CST) Message-ID: <494E78E3.7080003@sandeen.net> Date: Sun, 21 Dec 2008 11:12:03 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: David Bernick CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_repair problem. Subject: Re: xfs_repair problem. References: <7bcfcfff0812210703r4bd889cave8e2d60c56587e3e@mail.gmail.com> <494E66D9.5030704@sandeen.net> <7bcfcfff0812210852v6c1cd522i334de914e1e9a112@mail.gmail.com> In-Reply-To: <7bcfcfff0812210852v6c1cd522i334de914e1e9a112@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: 1229879524 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.13297 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- David Bernick wrote: > How do you go about writing to these inodes with these values: > rootino = 128 > rbmino = 129 > rsumino = 130 > without affecting the data? forgot this answer... start xfs_db with -x, then: xfs_db> sb 0 xfs_db> write rsumino 130 rsumino = 130 etc -Eric From pg_mh@sabi.co.UK Sun Dec 21 14:21:09 2008 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_61 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 mBLKL8q1013467 for ; Sun, 21 Dec 2008 14:21:09 -0600 X-ASG-Debug-ID: 1229890865-361502430000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ty.sabi.co.UK (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DA6773C7BF for ; Sun, 21 Dec 2008 12:21:06 -0800 (PST) Received: from ty.sabi.co.UK (82-69-39-138.dsl.in-addr.zen.co.uk [82.69.39.138]) by cuda.sgi.com with ESMTP id YhfBszn06cudhPrE for ; Sun, 21 Dec 2008 12:21:06 -0800 (PST) Received: from from [127.0.0.1] (helo=tree.ty.sabi.co.uk) by ty.sabi.co.UK with esmtp(Exim 4.68 #1) id 1LETmy-0000Vm-Qa; Sun, 21 Dec 2008 19:16:32 +0000 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <18766.38416.161254.375311@tree.ty.sabi.co.uk> Date: Sun, 21 Dec 2008 19:16:32 +0000 X-Face: SMJE]JPYVBO-9UR%/8d'mG.F!@.,l@c[f'[%S8'BZIcbQc3/">GrXDwb#;fTRGNmHr^JFb SAptvwWc,0+z+~p~"Gdr4H$(|N(yF(wwCM2bW0~U?HPEE^fkPGx^u[*[yV.gyB!hDOli}EF[\cW*S H&spRGFL}{`bj1TaD^l/"[ msn( /TH#THs{Hpj>)]f>, Linux XFS X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] In-Reply-To: <494A07BA.1080008@mailcan.com> References: <1229225480.16555.152.camel@localhost> <18757.4606.966139.10342@tree.ty.sabi.co.uk> <200812141912.59649.Martin@lichtvoll.de> <18757.33373.744917.457587@tree.ty.sabi.co.uk> <494971B2.1000103@tmr.com> <494A07BA.1080008@mailcan.com> X-Mailer: VM 7.17 under 21.5 (beta28) XEmacs Lucid From: pg_mh@sabi.co.UK (Peter Grandi) X-Disclaimer: This message contains only personal opinions X-Barracuda-Connect: 82-69-39-138.dsl.in-addr.zen.co.uk[82.69.39.138] X-Barracuda-Start-Time: 1229890866 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.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13304 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS [ ... ] >> What really bothers me is that there's no obvious need for >> barriers at the device level if the file system is just a bit >> smarter and does it's own async io (like aio_*), because you >> can track writes outstanding on a per-fd basis, > The drive itself may still re-order writes, thus can cause > corruption if halfway the power goes down. [ ... ] Barriers need > to travel all the way down to the point where-after everything > remains in-order. [ ... ] Whether the data has made it to the > drive platters is not really important from a barrier point of > view, however, iff part of the data made it to the platters, then > we want to be sure it was in-order. [ ... ] But this discussion is backwards, as usual: the *purpose* of any kind of barriers cannot be just to guarantee consistency, but also stability, because ordered commits are not that useful without commit to stable storage. If barriers guarantee transaction stability, then consistency is also a consequence of serial dependencies among transactions (and as to that per-device barriers are a coarse and very underoptimal design). Anyhow, barriers for ordering only have been astutely patented quite recently: http://www.freshpatents.com/Transforming-flush-queue-command-to-memory-barrier-command-in-disk-drive-dt20070719ptan20070168626.php Amazing new from the patent office.y From jpiszcz@lucidpixels.com Sun Dec 21 14:53:40 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_43 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 mBLKre77016342 for ; Sun, 21 Dec 2008 14:53:40 -0600 X-ASG-Debug-ID: 1229892818-759c00680000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A6E913C59E for ; Sun, 21 Dec 2008 12:53:38 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id Hb85xNNhKlgPegXc for ; Sun, 21 Dec 2008 12:53:38 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 298EBBA0A; Sun, 21 Dec 2008 15:53:38 -0500 (EST) Date: Sun, 21 Dec 2008 15:53:38 -0500 (EST) From: Justin Piszcz To: xfs@oss.sgi.com X-ASG-Orig-Subj: Big filesystem > (4TiB) recommendations (mkfs parameter tuning?) Subject: Big filesystem > (4TiB) recommendations (mkfs parameter tuning?) Message-ID: User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1229892819 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.13306 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Often, on this list, there are issues where there is not enough memory, etc, to repair a large filesystem. If one is going to create a 10-16TiB filesystem (for example), should one use the mkfs.xfs defaults, or should there be special tuning for filesystems of this size, so they will be less susceptible to failure for one reason or another? Justin. From sandeen@sandeen.net Sun Dec 21 15:03:04 2008 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_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 mBLL34B8017629 for ; Sun, 21 Dec 2008 15:03:04 -0600 X-ASG-Debug-ID: 1229893382-323f00e00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6938D176BF7F for ; Sun, 21 Dec 2008 13:03:02 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 1EiRZU03zAKck6pR for ; Sun, 21 Dec 2008 13:03: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 sandeen.net (Postfix) with ESMTP id 2E2DBA46B92; Sun, 21 Dec 2008 15:03:02 -0600 (CST) Message-ID: <494EAF05.5020901@sandeen.net> Date: Sun, 21 Dec 2008 15:03:01 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Justin Piszcz CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Big filesystem > (4TiB) recommendations (mkfs parameter tuning?) Subject: Re: Big filesystem > (4TiB) recommendations (mkfs parameter tuning?) References: In-Reply-To: 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: 1229893383 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.13306 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Justin Piszcz wrote: > Often, on this list, there are issues where there is not enough memory, > etc, to repair a large filesystem. > > If one is going to create a 10-16TiB filesystem (for example), should one > use the mkfs.xfs defaults, or should there be special tuning for > filesystems of this size, so they will be less susceptible to failure for > one reason or another? > > Justin. Memory to repair will depend more on total inodes on the system etc, not so much the absolute size of the filesystem. The defaults are defaults for a reason; they are updated when warranted, and unless you have a specific issue with them, it's best to just stick with that. IOW, if best practices warranted different tuning for a generic 10-16TiB filesystem, then the defaults would need to be updated, rather than offering hints 'n' tips on mailing lists. :) -Eric From dbernick@gmail.com Sun Dec 21 16:09:03 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.4 required=5.0 tests=AWL,BAYES_00,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 mBLM93IH024583 for ; Sun, 21 Dec 2008 16:09:03 -0600 X-ASG-Debug-ID: 1229897340-197900e10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f10.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DFE323C6FB for ; Sun, 21 Dec 2008 14:09:00 -0800 (PST) Received: from mail-bw0-f10.google.com (mail-bw0-f10.google.com [209.85.218.10]) by cuda.sgi.com with ESMTP id reU2oalMIcWFizSC for ; Sun, 21 Dec 2008 14:09:00 -0800 (PST) Received: by bwz3 with SMTP id 3so3743729bwz.20 for ; Sun, 21 Dec 2008 14:08:59 -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:cc:in-reply-to:mime-version:content-type:references; bh=CNfxe1Vo97JhPsLWbtp3SqKYsXAxP2huWDudKvdPJhI=; b=LcXz8pRit8SvfOhm2et/FjJYwRTdV1p5mfuE+lN8JuoxfhQINKAfV5eXzaKdF34eqc I7I4g/o0/5txD7qYyQWwKnOyU2gXbpB3nbif6njKhhXHtFNDO0fxOjrk0Qu/hArcg6b0 bOoSjagjtTXbuwwH/haOFprNP2t0qxlVAQ9L8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:references; b=RlnguCA4pPmvlReymHT4PN4tzUzbQysYmQwglx/iG4SLKSbE3ePHgTsS3lKvfqqBuz IbyXh8v3Xra8VrWWUEqKlkRasN6z82VlLVWeTI6WScme684vVDss3FWlfjkPHV/rOboF cccC3R+lC6510EAdzcyr/Rtk8el2V7kZrWBCU= Received: by 10.181.199.6 with SMTP id b6mr1091096bkq.68.1229897338960; Sun, 21 Dec 2008 14:08:58 -0800 (PST) Received: by 10.180.233.11 with HTTP; Sun, 21 Dec 2008 14:08:58 -0800 (PST) Message-ID: <7bcfcfff0812211408u6e08bf81r1c19ab5ba938b0e2@mail.gmail.com> Date: Sun, 21 Dec 2008 17:08:58 -0500 From: "David Bernick" To: "Eric Sandeen" X-ASG-Orig-Subj: Re: xfs_repair problem. Subject: Re: xfs_repair problem. Cc: xfs@oss.sgi.com In-Reply-To: <494E766B.5080102@sandeen.net> MIME-Version: 1.0 References: <7bcfcfff0812210703r4bd889cave8e2d60c56587e3e@mail.gmail.com> <494E66D9.5030704@sandeen.net> <7bcfcfff0812210852v6c1cd522i334de914e1e9a112@mail.gmail.com> <494E766B.5080102@sandeen.net> X-Barracuda-Connect: mail-bw0-f10.google.com[209.85.218.10] X-Barracuda-Start-Time: 1229897341 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0206 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=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13310 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: 7bit Content-length: 3719 So I ran an xfs_repair -v on my filesystem. While the FS was originally 12T and 95% full. I ran xfs_repair and it throw many "out of space errors" when it was running. That makes some sense. I expanded it with a new device with xfs_grow. It seems to work, because the disk is now bigger when I mount it. When I ran xfs_repair on that (latest version), it reverts back to the original size. Is there anything I need to do to make the xfs_growfs permanent? If I can make the XFS partition bigger, I can likely make it work because then it won't run out of space! But the partition, despite saying its "bigger" here, doesn't seem to "take" after the xfs_repair. Any ideas? Below is the xfs_db and some other useful things. 8 17 12695312483 sdb1 8 33 8803844062 sdc1 8 34 4280452000 sdc2 --- Logical volume --- LV Name /dev/docs/v5Docs VG Name docs LV UUID G85Zi9-s63C-yWrU-yyf0-STP6-YOhJ-6Ne3pS LV Write Access read/write LV Status available # open 1 LV Size 24.01 TB Current LE 6293848 Segments 3 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:5 xfs_db> sb 0 xfs_db> print magicnum = 0x58465342 blocksize = 4096 dblocks = 6444900352 rblocks = 0 rextents = 0 uuid = f086bb71-d67b-4cc1-b622-1f10349e6a49 logstart = 1073741828 rootino = 128 rbmino = 129 rsumino = 130 rextsize = 1 agblocks = 67108864 agcount = 97 rbmblocks = 0 logblocks = 32768 versionnum = 0x3084 sectsize = 512 inodesize = 256 inopblock = 16 fname = "\000\000\000\000\000\000\000\000\000\000\000\000" blocklog = 12 sectlog = 9 inodelog = 8 inopblog = 4 agblklog = 26 rextslog = 0 inprogress = 0 imax_pct = 25 icount = 149545792 ifree = 274 fdblocks = 4275133930 frextents = 0 uquotino = 0 gquotino = 0 qflags = 0 flags = 0 shared_vn = 0 inoalignmt = 2 unit = 0 width = 0 dirblklog = 0 logsectlog = 0 logsectsize = 0 logsunit = 0 features2 = 0 On Sun, Dec 21, 2008 at 12:01 PM, Eric Sandeen wrote: > David Bernick wrote: > > Thanks for the help so far: > > > > It my output was from "sb 0". Thanks for reminding me to be explicit. > > > > The system is a 64-bit system with 32-GB of RAM. It's going through the > > FS right now with XFS repair. > > Output of xfs_repair says, "arno=3" and about 81.6% of RAM is used by > > the process. Think 32 G will be enough to handle this task? > > I actually don't KNOW the original error, unfortunately, when growing. I > > came into this late. > > > > We're using repair 2.9.4. Worth getting a more recent version? > > 2.9.8 had some memory usage improvements (reductions) for repair IIRC > > > Kernel is - 2.6.18-92.1.1.el5 > > heh; RHEL5 does not support xfs ;) > > You probably hit: > > TAKE 959978 - growing an XFS filesystem by more than 2TB is broken > http://oss.sgi.com/archives/xfs/2007-01/msg00053.html > > I'd see if you can get centos to backport that fix (I assume you're > using centos or at least their kernel module; if not you can backport it > yourself...) > > > I "backed off" by vgsplit-ing the new physical device from the original > > vgroup, so I was left with my original partition. I am hoping to mount > > the original device since the "expanded" fs didn't work. I am hoping > > xfs_repair helps that. > > well, you don't want to take out part of the device if the fs thinks it > owns it now, but from the db output I think you still have the smaller > size. > > I'd read through: > > http://oss.sgi.com/archives/xfs/2008-01/msg00085.html > > and see if it helps you recover. > > -Eric > [[HTML alternate version deleted]] From dbernick@gmail.com Sun Dec 21 16:15:03 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.4 required=5.0 tests=AWL,BAYES_00,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 mBLMF38t025454 for ; Sun, 21 Dec 2008 16:15:03 -0600 X-ASG-Debug-ID: 1229897700-197a01080000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-bw0-f10.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B46193C80D for ; Sun, 21 Dec 2008 14:15:00 -0800 (PST) Received: from mail-bw0-f10.google.com (mail-bw0-f10.google.com [209.85.218.10]) by cuda.sgi.com with ESMTP id 2DjlMxNGnC9Bxb9L for ; Sun, 21 Dec 2008 14:15:00 -0800 (PST) Received: by bwz3 with SMTP id 3so3747044bwz.20 for ; Sun, 21 Dec 2008 14:14:59 -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:cc:in-reply-to:mime-version:content-type:references; bh=dAbWwo0/O0AytE5EgoVQiEZ2nCu31lNCxZ/bLI7EW2M=; b=J/wHDowxGAy49zP3ElPFTRY4MpBQLm0suNlnbHgcUIGtYDS0jycVgu2BnVReftyCEO cQ5wG9c3XrcFOQCTKFEQZXa7C5WYtuA1a1kLV9vTPw9AiDVHPbaMajY43SyiVtMoQ5dp YAYLFb32NJWtH/Q/x+HR8U53vv2Pnq+RFLzDY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:references; b=BKNPhLIcTOS2tAeP67lvcp7Cd0N9Ar0LD/EMglvDqqZQaCZEyrEkFE6CQP9hKcsDm7 j7J03sy4kWdeNhFLdS8g9hRCxIHTHHjNzp39ITH3l7bLpjXx44PaHfbSgk3+cCE4ZpF1 S448LBEL9pmez1NtPU5uDFuoB8KlN3zDWdVws= Received: by 10.181.135.5 with SMTP id m5mr2056864bkn.87.1229897699913; Sun, 21 Dec 2008 14:14:59 -0800 (PST) Received: by 10.180.233.11 with HTTP; Sun, 21 Dec 2008 14:14:59 -0800 (PST) Message-ID: <7bcfcfff0812211414g60acd6c3reacf785cbf6f3823@mail.gmail.com> Date: Sun, 21 Dec 2008 17:14:59 -0500 From: "David Bernick" To: "Eric Sandeen" X-ASG-Orig-Subj: Re: xfs_repair problem. Subject: Re: xfs_repair problem. Cc: xfs@oss.sgi.com In-Reply-To: <7bcfcfff0812211408u6e08bf81r1c19ab5ba938b0e2@mail.gmail.com> MIME-Version: 1.0 References: <7bcfcfff0812210703r4bd889cave8e2d60c56587e3e@mail.gmail.com> <494E66D9.5030704@sandeen.net> <7bcfcfff0812210852v6c1cd522i334de914e1e9a112@mail.gmail.com> <494E766B.5080102@sandeen.net> <7bcfcfff0812211408u6e08bf81r1c19ab5ba938b0e2@mail.gmail.com> X-Barracuda-Connect: mail-bw0-f10.google.com[209.85.218.10] X-Barracuda-Start-Time: 1229897701 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0419 1.0000 -1.7513 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.75 X-Barracuda-Spam-Status: No, SCORE=-1.75 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.13310 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: 7bit Content-length: 4685 and: are you available for professional services to help us on this problem? Oh, and: [root@luceneindex1-nap ~]# xfs_info /var/mnt/v5Docs/ meta-data=/dev/docs/v5Docs isize=256 agcount=97, agsize=67108864 blks = sectsz=512 attr=0 data = bsize=4096 blocks=6444900352, imaxpct=25 = sunit=0 swidth=0 blks, unwritten=1 naming =version 2 bsize=4096 log =internal bsize=4096 blocks=32768, version=1 = sectsz=512 sunit=0 blks, lazy-count=0 realtime =none extsz=4096 blocks=0, rtextents=0 On Sun, Dec 21, 2008 at 5:08 PM, David Bernick wrote: > So I ran an xfs_repair -v on my filesystem. While the FS was originally 12T > and 95% full. I ran xfs_repair and it throw many "out of space errors" when > it was running. That makes some sense. > > I expanded it with a new device with xfs_grow. It seems to work, because > the disk is now bigger when I mount it. > > When I ran xfs_repair on that (latest version), it reverts back to the > original size. Is there anything I need to do to make the xfs_growfs > permanent? > > If I can make the XFS partition bigger, I can likely make it work because > then it won't run out of space! But the partition, despite saying its > "bigger" here, doesn't seem to "take" after the xfs_repair. Any ideas? > > Below is the xfs_db and some other useful things. > 8 17 12695312483 sdb1 > 8 33 8803844062 sdc1 > 8 34 4280452000 sdc2 > > --- Logical volume --- > LV Name /dev/docs/v5Docs > VG Name docs > LV UUID G85Zi9-s63C-yWrU-yyf0-STP6-YOhJ-6Ne3pS > LV Write Access read/write > LV Status available > # open 1 > LV Size 24.01 TB > Current LE 6293848 > Segments 3 > Allocation inherit > Read ahead sectors auto > - currently set to 256 > Block device 253:5 > xfs_db> sb 0 > xfs_db> print > magicnum = 0x58465342 > blocksize = 4096 > dblocks = 6444900352 > rblocks = 0 > rextents = 0 > uuid = f086bb71-d67b-4cc1-b622-1f10349e6a49 > logstart = 1073741828 > rootino = 128 > rbmino = 129 > rsumino = 130 > rextsize = 1 > agblocks = 67108864 > agcount = 97 > rbmblocks = 0 > logblocks = 32768 > versionnum = 0x3084 > sectsize = 512 > inodesize = 256 > inopblock = 16 > fname = "\000\000\000\000\000\000\000\000\000\000\000\000" > blocklog = 12 > sectlog = 9 > inodelog = 8 > inopblog = 4 > agblklog = 26 > rextslog = 0 > inprogress = 0 > imax_pct = 25 > icount = 149545792 > ifree = 274 > fdblocks = 4275133930 > frextents = 0 > uquotino = 0 > gquotino = 0 > qflags = 0 > flags = 0 > shared_vn = 0 > inoalignmt = 2 > unit = 0 > width = 0 > dirblklog = 0 > logsectlog = 0 > logsectsize = 0 > logsunit = 0 > features2 = 0 > > > On Sun, Dec 21, 2008 at 12:01 PM, Eric Sandeen wrote: > >> David Bernick wrote: >> > Thanks for the help so far: >> > >> > It my output was from "sb 0". Thanks for reminding me to be explicit. >> > >> > The system is a 64-bit system with 32-GB of RAM. It's going through the >> > FS right now with XFS repair. >> > Output of xfs_repair says, "arno=3" and about 81.6% of RAM is used by >> > the process. Think 32 G will be enough to handle this task? >> > I actually don't KNOW the original error, unfortunately, when growing. I >> > came into this late. >> > >> > We're using repair 2.9.4. Worth getting a more recent version? >> >> 2.9.8 had some memory usage improvements (reductions) for repair IIRC >> >> > Kernel is - 2.6.18-92.1.1.el5 >> >> heh; RHEL5 does not support xfs ;) >> >> You probably hit: >> >> TAKE 959978 - growing an XFS filesystem by more than 2TB is broken >> http://oss.sgi.com/archives/xfs/2007-01/msg00053.html >> >> I'd see if you can get centos to backport that fix (I assume you're >> using centos or at least their kernel module; if not you can backport it >> yourself...) >> >> > I "backed off" by vgsplit-ing the new physical device from the original >> > vgroup, so I was left with my original partition. I am hoping to mount >> > the original device since the "expanded" fs didn't work. I am hoping >> > xfs_repair helps that. >> >> well, you don't want to take out part of the device if the fs thinks it >> owns it now, but from the db output I think you still have the smaller >> size. >> >> I'd read through: >> >> http://oss.sgi.com/archives/xfs/2008-01/msg00085.html >> >> and see if it helps you recover. >> >> -Eric >> > > [[HTML alternate version deleted]] From sandeen@sandeen.net Sun Dec 21 16:20:55 2008 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 mBLMKt0Q026374 for ; Sun, 21 Dec 2008 16:20:55 -0600 X-ASG-Debug-ID: 1229898053-7ef202840000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E62E93C9E8 for ; Sun, 21 Dec 2008 14:20:53 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id YSNPxNuxIrzAdkrp for ; Sun, 21 Dec 2008 14:20:53 -0800 (PST) Received: from liberator.sandeen.net (sandeen.net [209.173.210.139]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id A7ACEA790A0; Sun, 21 Dec 2008 16:20:52 -0600 (CST) Message-ID: <494EC13E.2060303@sandeen.net> Date: Sun, 21 Dec 2008 16:20:46 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: David Bernick CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_repair problem. Subject: Re: xfs_repair problem. References: <7bcfcfff0812210703r4bd889cave8e2d60c56587e3e@mail.gmail.com> <494E66D9.5030704@sandeen.net> <7bcfcfff0812210852v6c1cd522i334de914e1e9a112@mail.gmail.com> <494E766B.5080102@sandeen.net> <7bcfcfff0812211408u6e08bf81r1c19ab5ba938b0e2@mail.gmail.com> In-Reply-To: <7bcfcfff0812211408u6e08bf81r1c19ab5ba938b0e2@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: 1229898053 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.13312 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- David Bernick wrote: > So I ran an xfs_repair -v on my filesystem. While the FS was originally > 12T and 95% full. I ran xfs_repair and it throw many "out of space > errors" when it was running. That makes some sense. > > I expanded it with a new device with xfs_grow. It seems to work, because > the disk is now bigger when I mount it. I should have pointed out; growing less than 2T at a time is safe, even with that bug ... > When I ran xfs_repair on that (latest version), it reverts back to the > original size. Is there anything I need to do to make the xfs_growfs > permanent? No, it should just work. But 2T at a time on that older code w/ teh bug. > If I can make the XFS partition bigger, I can likely make it work > because then it won't run out of space! But the partition, despite > saying its "bigger" here, doesn't seem to "take" after the xfs_repair. > Any ideas? Add a terabyte at a time :) (or backport that patch...) -Eric From lachlan@sgi.com Sun Dec 21 21:11:23 2008 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 mBM3BNhl016346 for ; Sun, 21 Dec 2008 21:11:23 -0600 Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by relay2.corp.sgi.com (Postfix) with ESMTP id 29133304059 for ; Sun, 21 Dec 2008 19:11:17 -0800 (PST) Message-ID: <494F05A6.6010800@sgi.com> Date: Mon, 22 Dec 2008 14:12:38 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com Organization: SGI User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] Update MAINTAINERS file Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Tim has left the company and the tree address has changed so update accordingly. diff --git a/MAINTAINERS b/MAINTAINERS index 09ed704..fa7b4df 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4767,11 +4767,10 @@ S: Supported XFS FILESYSTEM P: Silicon Graphics Inc -P: Tim Shimmin M: xfs-masters@oss.sgi.com L: xfs@oss.sgi.com W: http://oss.sgi.com/projects/xfs -T: git git://oss.sgi.com:8090/xfs/xfs-2.6.git +T: git://oss.sgi.com/xfs/xfs.git S: Supported XILINX SYSTEMACE DRIVER From lachlan@oss.sgi.com Mon Dec 22 01:34:33 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, J_CHICKENPOX_33,J_CHICKENPOX_35,J_CHICKENPOX_51 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBM7YXTS013428 for ; Mon, 22 Dec 2008 01:34:33 -0600 Received: (from lachlan@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mBM7YQ3b011745; Mon, 22 Dec 2008 01:34:26 -0600 Date: Mon, 22 Dec 2008 01:34:26 -0600 Message-Id: <200812220734.mBM7YQ3b011745@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-linus, updated. v2.6.28-rc3-1640-g3d44cc3 X-Git-Refname: refs/heads/for-linus X-Git-Reftype: branch X-Git-Oldrev: 576a488a27f267af203f3ea69c700a1612335e9f X-Git-Newrev: 3d44cc3e01ee1b40317f79ed54324e25c4f848df This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-linus has been updated 3d44cc3 Null pointer deref with hrtimer_try_to_cancel() ab65387 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs e6a997e Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 280a9ca x86: fix resume (S2R) broken by Intel microcode module, on A110L f1d9e45 fs/9p: change simple_strtol to simple_strtoul 7dd0cdc 9p: convert d_iname references to d_name.name 6ff2320 9p: Remove potentially bad parameter from function entry debug print. 9a1d103 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 8837e34 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 281981c Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block f3485c8 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 db873cf Merge branch 'for-linus' of git://neil.brown.name/md eae34c6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 5bd9c69 Merge branch 'fix/asoc' into for-linus 19b3f31 ALSA: Fix a Oops bug in omap soc driver. 8f55c1e ALSA: hda - Remove non-working headphone control for Dell laptops 9e43f0d ALSA: hda - Add no-jd model for IDT 92HD73xx 85f13b6 ALSA: Revert "ALSA: hda: removed unneeded hp_nid references" d8a0be6 cciss: fix problem that deleting multiple logical drives could cause a panic fa620e9 ALSA: hda - Add quirk for Dell Studio 17 ac5c4e7 drm/i915: GEM on PAE has problems - disable it for now. c4de0a5 drm/i915: Don't return busy for buffers left on the flushing list. a2ed961 md: Don't read past end of bitmap when reading bitmap. 929096f Linux 2.6.28-rc9 59da1f8 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx 69098ba Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6 b3806c3 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 3653b9a Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 52af894 Maintainer email fixes for inotify 8983fdb avr32: favr-32 build fix de13d28 ATSTK1006: Fix boot from NAND flash c9bc03a Merge branch 'iommu-fixes-2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into x86/urgent 55aab5f x86 gart: don't complain if no AMD GART found e28d832 ALSA: hda - Fix silent HP output on D975 3298a73 bnx2: Fix bug in bnx2_free_rx_mem(). 3e3d0e9 PCI hotplug: ibmphp: Fix module ref count underflow 69c30e1 irda: Add irda_skb_cb qdisc related padding 55dac3a Merge branch 'i2c-fixes' of git://aeryn.fluff.org.uk/bjdooks/linux 0bc77ec Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 3797455 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 5b8bd54 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 331c313 cifs: fix buffer overrun in parse_DFS_referrals a52519f Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/galak/powerpc 4b4cdf3 STAGING: Move staging drivers back to staging-specific menu aa6f3c6 driver core: add newlines to debugging enabled/disabled messages 09a35ce xilinx_hwicap: remove improper wording in license statement 1c93ca0 driver core: fix using 'ret' variable in unregister_dynamic_debug_module af4b851 USB: pl2303: add id for Hewlett-Packard LD220-HP POS pole display 413ba6f USB: set correct configuration in probe of ti_usb_3410_5052 7c99200 USB: add 5372:2303 to pl2303 24c0996 USB: skip Set-Interface(0) if already in altsetting 0 9a9fafb USB: fix comment about endianness of descriptors c33ba39 USB: Documentation/usb/gadget_serial.txt: update to match driver use_acm behaviour aacf4a0 usbmon: drop bogus 0t from usbmon.txt 7c12414 USB: gadget: fix rndis working at high speed 01ba085 USB: ftdi_sio: Adding Ewert Energy System's CANdapter PID f2ee695 USB: tty: SprogII DCC controller identifiers a4b1880 usb-storage: update unusual_devs entry for Nokia 5310 48e1a54 USB: Unusual devs patch for Nokia 3500c 1393fce USB: storage: unusual_devs.h: Nokia 3109c addition 5413aa4 USB: fix problem with usbtmc driver not loading properly af4d364 powerpc: Fix corruption error in rh_alloc_fixed() 28707af powerpc/fsl-booke: Fix the miss interrupt restore 84df817 AMD IOMMU: panic if completion wait loop fails cf558d2 AMD IOMMU: set cmd buffer pointers to zero manually c1892cb avr32: remove .note.gnu.build-id section when making vmlinux.bin 2fccd28 jme: Fixed a typo e8e5752 net: kernel BUG at drivers/net/phy/mdio_bus.c:165! 878a553 sparc: We need to implement arch_ptrace_stop(). a977218 ocfs2: Add JBD2 compat feature bit. 9a3de25 drivers/net: starfire: Fix napi ->poll() weight handling bb5f133 tlan: Fix pci memory unmapping 83099bc ocfs2: Always update xattr search when creating bucket. cf9b303 x86: re-enable MCE on secondary CPUS after suspend/resume b6adc19 PCI hotplug: acpiphp wants a 64-bit _SUN db9aaf0 PCI: pciehp: fix unexpected power off with pciehp_force b0b801d PCI: fix aer resume sanity check be44f01 i2c-s3c2410: fix check for being in suspend. a804644 i2c-cpm: Detect and report NAK right away instead of timing out a6da74c [SCSI] mpt fusion: clear list of outstanding commands on host reset 83fd5cc AMD IOMMU: allocate rlookup_table with __GFP_ZERO 1bda712 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 7a62b17 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev 3bd8226 Merge branch 'sh/for-2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 eef70b2 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc c095adb mm: Don't touch uninitialized variable in do_pages_stat_array() 3ee89f1 pata_hpt366: no ATAPI DMA bab5b32 pata_hpt366: fix cable detection, d10d491 libata: fix Seagate NCQ+FLUSH blacklist 2c413a6 enc28j60: use netif_rx_ni() to deliver RX packets 8953f12 tlan: Fix small (< 64 bytes) datagram transmissions 092cab7 netfilter: ctnetlink: fix missing CTA_NAT_SEQ_UNSPEC f9d62c0 sh: Disable GENERIC_HARDIRQS_NO__DO_IRQ for unconverted platforms. 93d5463 sh: maple: Do not pass SLAB_POISON to kmem_cache_create() 23e0e8a powerpc/cell/axon-msi: Fix MSI after kexec a4c74dd powerpc: Fix bootmem reservation on uninitialized node 48f797d powerpc: Check for valid hugepage size in hugetlb_get_unmapped_area a3dd154 Merge master.kernel.org:/home/rmk/linux-2.6-arm 7004405 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 d2ff911 Define smp_call_function_many for UP 307257c cgroups: fix a race between rmdir and remount 38aefbc ACPI toshiba: only register rfkill if bt is enabled 6dc7516 eCryptfs: Update maintainers 5e18e2b slob: do not pass the SLAB flags as GFP in kmem_cache_create() 35024c3 pcmcia: blackfin: fix bug - add missing ; to MODULE macro 1ada144 [ARM] 5348/1: fix documentation wrt location of the alignment trap interface 67306da [ARM] Ensure linux/hardirqs.h is included where required 4798a2b Phonet: keep TX queue disabled when the device is off eb9b851 SCHED: netem: Correct documentation comment in code. be70ed1 netfilter: update rwlock initialization for nat_table cefb3d0 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/galak/powerpc ae8d04e x86 Fix VMI crash on boot in 2.6.28-rc8 ca7e716 Revert "sched_clock: prevent scd->clock from moving backwards" 3909845 [ARM] fix kernel-doc syntax 442a902 [ARM] arch/arm/common/sa1111.c: Correct error handling code 25a41b2 ieee1394: add quirk fix for Freecom HDD e5e774d powerpc/fsl-booke: Fix problem with _tlbil_va being interrupted 02bd349 [SCSI] scsi_lib: only call scsi_unprep_request() under queue lock 5279585 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx 68b32d4 Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 8d9c02e Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block fae1aa4 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 1c55f18 console ASCII glyph 1:1 mapping f75bc06 unicode table for cp437 6d8a52d MIPS: IP32: Update defconfig 11531ac MIPS: Add missing calls to plat_unmap_dma_mem. 00ace20 MIPS: Kconfig: Fix the arch-specific header path b6354db MIPS: Use EI/DI for MIPS R2. febd7a5 Commands needing to be retried require a complete re-initialization. ec8f237 netlabel: Compiler warning and NULL pointer dereference fix 30bb0e0 e1000e: fix double release of mutex 9f3eefc powerpc/40x: Add proper BOOTCFLAGS for cuboot-acadia 2b895c3 i2c-highlander: Trivial endian casting fixes d9d38ca i2c-pmcmsp: Fix endianness misannotation 674a0a6 [ARM] 5341/2: there is no copy_page on nommu ARM 6c34bc2 Revert "radeonfb: accelerate imageblit and other improvements" bb49eed IA64: HP_SIMETH needs to depend upon NET 8b1fae4 Linux 2.6.28-rc8 f9fc05e Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip b88ed20 fix mapping_writably_mapped() f4fd2c5 Merge branch 'to-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/frob/linux-2.6-roland 711a49a lib/idr.c: Fix bug introduced by RCU fix c7f8d6f MN10300: Give correct size when reserving interrupt vector table 54b71fb MN10300: Fix __put_user_asm8() 24646bd MN10300: Fix the preemption resume_kernel() routine a8893fb MN10300: Discard low-priority Tx interrupts when closing an on-chip serial port cb32898 MN10300: vmlinux.lds.S cleanup - use PAGE_SIZE, PERCPU macros 4e6f2ba Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 44f6cc3 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 061afe9 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 942c88c Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus cba7671 pktcdvd: remove broken dev_t export of class devices cdcb30b Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 c1ab6cc drivers/video/mb862xx/mb862xxfb.c: fix printk 9c24624 KSYM_SYMBOL_LEN fixes 6ee5a39 inotify: fix IN_ONESHOT unmount event watcher aa6f147 atomic: fix a typo in atomic_long_xchg() 80bba12 mm: no get_user/put_user while holding mmap_sem in do_pages_stat? 52b9582 drivers/serial/s3c2440.c: fix typo in MODULE_LICENSE 49c5034 pagemap: fix 32-bit pagemap regression 653d22c page_cgroup should ignore empty nodes cc61686 rtc twl4030: rename ioctl function when RTC_INTF_DEV=n beaa486 fbcon: fix workqueue shutdown 6841c8e mm: remove UP version of lru_add_drain_all() 02d2116 revert "percpu_counter: new function percpu_counter_sum_and_set" 71c5576 revert "percpu counter: clean up percpu_counter_sum_and_set()" fd3d664 percpu_counter: fix CPU unplug race in percpu_counter_destroy() fe102c7 rtc: fix missing id_table in rtc-ds1672 and rtc-max6900 drivers fbb5b7a relayfs: fix infinite loop with splice() 3613712 uml: boot broken due to buffer overrun 69fc208 mm/backing-dev.c: remove recently-added WARN_ON() 6a0fcbb crypto: api - Disallow cryptomgr as a module if algorithms are built-in 1d1dc5e firewire: fw-ohci: fix IOMMU resource exhaustion 7b363e4 netpoll: fix race on poll_list resulting in garbage entry 85f3346 tracehook: exec double-reporting fix 24fc7b8 ipv6: silence log messages for locally generated multicast fbf0229 sungem: improve ethtool output with internal pcs and serdes 2a42d9d PCIe: ASPM: Break out of endless loop waiting for PCI config bits to switch 3b5dd45 PCI: stop leaking 'slot_name' in pci_create_slot 98873f5 MIPS: Better than nothing implementation of PCI mmap to fix X. ff740fb [IA64] SN: prevent IRQ retargetting in request_irq() ec9a13c ieee1394: node manager causes up to ~3.25s delay in freezing tasks 9a2bd24 sched: CPU remove deadlock fix 3c0db89 [IA64] Fix section mismatch ioc3uart_init()/ioc3uart_submodule ecdbc69 [IA64] Clear up section mismatch for ioc4_ide_attach_one. 8704ad8 [IA64] Clear up section mismatch with arch_unregister_cpu() 6882edc [IA64] Clear up section mismatch for sn_check_wars. 9877e7b [IA64] Updated the generic_defconfig to work with the 2.6.28-rc7 kernel. 023a407 [IA64] Fix GRU compile error w/o CONFIG_HUGETLB_PAGE 6afc9be [IA64] eliminate NULL test and memset after alloc_bootmem fc10212 [IA64] remove BUILD_BUG_ON from paravirt_getreg() 437f2f9 Merge master.kernel.org:/home/rmk/linux-2.6-arm 4d9c6a2 Merge git://git.infradead.org/mtd-2.6 b749e3f Merge branch 'audit.b59' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current 6f8e5850 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev 21283f0 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 cdf0c7d Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc f317974 radeonfb: Disable new color expand acceleration unless explicitely enabled 5745803 [SCSI] ibmvstgt: move crq_queue_create to the end of initialization 8d3a564 tcp: tcp_vegas cong avoid fix 8c83f80 sungem: Make PCS PHY support partially work again. 48887e6 [PATCH] fix broken timestamps in AVC generated by kernel threads 7f0ed77 [patch 1/1] audit: remove excess kernel-doc 0b0c940 [PATCH] asm/generic: fix bug - kernel fails to build when enable some common audit code on Blackfin a64e649 [PATCH] return records for fork() both to child and parent a3f0711 [PATCH] Audit: make audit=0 actually turn off audit e3389cb ata: Fix experimental tags b604958 pata_ninja32: update ID table e33ba2c pata_sis: Remove bogus cable match 9ac6212 ATA: piix, fix pointer deref on suspend 2456eb8 pata_hpt366: fix clock detection b60678a drm/i915: Disable the GM965 MSI errata workaround. 15c3533 drm/i915: Don't return error in evict_everything when we get to the end. fae7043 drm/radeon: don't actually enable the IRQ regs until irq is enabled ab44f46 Merge branch 'merge' of master.kernel.org:/pub/scm/linux/kernel/git/galak/powerpc into merge f7a8db8 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 6f84b4d Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 7f336bf Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 a4f4d6d EXPORTFS: handle NULL returns from fh_to_dentry()/fh_to_parent() a06d568 async_xor: dma_map destination DMA_BIDIRECTIONAL 5384657 ide: build-fix for CONFIG_BLK_DEV_IDEDMA_PMAC=n 1a65988 Revert "ide: respect current DMA setting during resume" 087052b x86: fix default_spin_lock_flags() prototype b8d9905 AMD IOMMU: __unmap_single: check for bad_dma_address instead of 0 8ad909c AMD IOMMU: fix WARN_ON in dma_ops unmap path 24f8116 AMD IOMMU: fix typo in comment 3cc3d84 AMD IOMMU: fix loop counter in free_pagetable function bb9d4ff AMD IOMMU: fix iommu_map_page function c49b9f2 tproxy: fixe a possible read from an invalid location in the socket match baa745a [ARM] Fix alignment fault handling for ARMv6 and later CPUs 794baba [ARM] 5340/1: fix stack placement after noexecstack changes 0a0755c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 218d11a Fix a race condition in FASYNC handling f2f1fa7 Enforce a minimum SG_IO timeout 24920a7 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 2289e66 drivers/message/i2o/iop.c: cleanup kerneldoc 5e33330 Fix incorrect use of loose in i2o_block.c c4f0124 Fix incorrect use of loose in tty/serial drivers f10a3a3 Revert "ACPI: battery: Convert discharge energy rate to current properly" 640d17d powerpc/virtex5: Fix Virtex5 machine check handling 8ebcfc8 MIPS: Fix incorrect use of loose in vpe.c cde6901 zd1211rw: use unaligned safe memcmp() in-place of compare_ether_addr() 5cf12e8 mac80211: use unaligned safe memcmp() in-place of compare_ether_addr() b8ddafd ipw2200: fix netif_*_queue() removal regression 40a9a82 iwlwifi: clean key table in iwl_clear_stations_table function bbeba4c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/bdev 6df944c Merge branch 'drm-gem-update' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 341e558 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/galak/powerpc aaad077 ACPI: Fix ACPI battery regression introduced by commit 558073 4857339 Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 0efcafb Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 e948990 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2b218ae Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 3b666ce Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 56d18e9 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 1cb434b Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs a6af2d6 tcp: tcp_vegas ssthresh bug fix b2c2717 powerpc/83xx: Enable FIXED_PHY in mpc834x_itx and mpc83xx defconfigs f706644 can: omit received RTR frames for single ID filter lists 17b24b3 ATM: CVE-2008-5079: duplicate listen() on socket corrupts the vcc table c6cb4df MIPS: Return ENOSYS from sys32_syscall on 64bit kernels like elsewhere. 8d13cb2 MIPS: 64-bit: vmsplice needs to use the compat wrapper for o32 and N32. 08d3087 MIPS: o32: Fix number of arguments to splice(2). 566a3b9 MIPS: Malta: Consolidate platform device code. 3e27cce MIPS: IP22, Fulong, Malta: Update defconfigs. 192cc7f MIPS: Malta: Add back RTC support e807f95 MIPS: Fix potential DOS by untrusted user app. 410d2c8 sparc64: Sync FPU state in VIS emulation handler. 9adc138 x86: fix early panic with boot option "nosmp" 2cbed89 [PATCH] fix bogus argument of blkdev_put() in pktcdvd fc9161e [PATCH 2/2] documnt FMODE_ constants fd4ce1a [PATCH 1/2] kill FMODE_NDELAY_NOW ebbefc0 [PATCH] clean up blkdev_get a little bit 1c92560 [PATCH] Fix block dev compat ioctl handling 50c396d [PATCH] kill obsolete temporary comment in swsusp_close() 94fc733 [ARM] 5339/1: fix __fls() on ARM 6c9bacb time: catch xtime_nsec underflows and fix them 2cc002c netx-eth: initialize per device spinlock f8269a4 tcp: make urg+gso work for real this time 5176da7 enc28j60: Fix sporadic packet loss (corrected again) bd09141 hysdn: fix writing outside the field on 64 bits 1c594c0 b1isa: fix b1isa_exit() to really remove registered capi controllers 726c12f sparc64: Fix VIS emulation bugs 0235439 drm/i915: Return error in i915_gem_set_to_gtt_domain if we're not in the GTT. ac94a96 drm/i915: Retry execbuffer pinning after clearing the GTT 646f0f6 drm/i915: Move the execbuffer domain computations together c0d9082 drm/i915: Rename object_set_domain to object_set_to_gpu_domain e47c68e drm/i915: Make a single set-to-cpu-domain path and use it wherever needed. 2ef7eea drm/i915: Make a single set-to-gtt-domain path. b670d81 drm/i915: If interrupted while setting object domains, still emit the flush. ce44b0e drm/i915: Move flushing list cleanup from flush request retire to request emit. a7f014f drm/i915: Respect GM965/GM45 bit-17-instead-of-bit-11 option for swizzling. 004b50f MN10300: Introduce barriers to replace removed volatiles in gdbstub 16550 driver 8711cca MAINTAINERS: Add security subsystem maintainer b0b42b1 dmaengine: protect 'id' from concurrent registrations 532d3b1 ioat: wait for self-test completion e8e8e80 sparc: asm/bitops.h should define __fls d253eee can: Fix CAN_(EFF|RTR)_FLAG handling in can_filter bd7df21 Phonet: do not dump addresses from other namespaces 66a05d6 Merge branch 'oprofile-for-tip' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile into x86/urgent 3d337c6 x86/oprofile: fix Intel cpu family 6 detection d3acf02 [SCSI] libiscsi REGRESSION: fix passthrough support with older iscsi tools b21227c [SCSI] aacraid: disable Dell Percraid quirk on Adaptec 2200S and 2120S 9ea84ad oprofile: fix CPU unplug panic in ppro_stop() c36910c Merge branch 'iommu-fixes-2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into x86/urgent 09ee17e AMD IOMMU: fix possible race while accessing iommu->need_sync f91ba19 AMD IOMMU: set device table entry for aliased devices eac9fbc AMD IOMMU: struct amd_iommu remove padding on 64 bit e93f1be [MTD] [NAND] fix OOPS accessing flash operations over STM flash on PXA 2019554 check_hung_task(): unsigned sysctl_hung_task_warnings cannot be less than 0 70d7d35 x86: fix broken flushing in GART nofullflush path ee4ee52 sparc64: Fix bug in PTRACE_SETFPREGS64 handling. d25830e netlabel: Fix a potential NULL pointer dereference efba018 bnx2: Add workaround to handle missed MSI. d5654ef xfrm: Fix kernel panic when flush and dump SPD entries 82676d7 [ARM] Orion: fix bug in pcie configuration cycle function field mask d947629 [MTD] [NAND] drivers/mtd/nand/pasemi_nand.c: Add missing pci_dev_put 020f970 [ARM] omap: fix a pile of issues 02d43b1 documentation: local_ops fix on_each_cpu 4371453 sched: don't export sched_mc_power_savings in laptops 7b1dedc x86: fix dma_mapping_error for 32bit x86 29b6586 [MTD] [NAND] fsl_upm: fix build problem with 2.6.28-rc2 3136e90 [MTD] physmap: fix memory leak on physmap_flash_remove by using devres 7854643 [MTD] m25p80: chip erase != block erase != sector erase 9168ab8 [MTD] m25p80: fix detection of m25p16 flashes a3d3f73 [MTD] m25p80: fix detection of SPI parts cbbd695 [MTD] [NAND] OMAP: OneNAND: header file relocation (part 2) eccdaea posix-cpu-timers: fix clock_gettime with CLOCK_PROCESS_CPUTIME_ID fe87535 [MTD] [NAND] OMAP: OneNAND: header file relocation 1054626 avr32: Enable pullup on USART TX lines from 576a488a27f267af203f3ea69c700a1612335e9f (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Documentation/arm/mem_alignment | 2 +- Documentation/local_ops.txt | 2 +- Documentation/sound/alsa/ALSA-Configuration.txt | 2 + Documentation/usb/gadget_serial.txt | 4 +- Documentation/usb/proc_usb_info.txt | 6 +- Documentation/usb/usbmon.txt | 12 +- MAINTAINERS | 21 +- Makefile | 2 +- arch/arm/common/sa1111.c | 2 +- arch/arm/include/asm/bitops.h | 16 +- arch/arm/include/asm/processor.h | 2 +- arch/arm/kernel/armksyms.c | 4 +- arch/arm/kernel/traps.c | 1 + arch/arm/mach-omap1/io.c | 2 +- arch/arm/mach-pxa/include/mach/reset.h | 5 +- arch/arm/mm/alignment.c | 26 +- arch/arm/mm/fault.c | 1 + arch/arm/plat-omap/include/mach/omapfb.h | 4 +- arch/arm/plat-omap/sram.c | 8 +- arch/arm/plat-orion/pcie.c | 2 +- arch/avr32/boards/favr-32/flash.c | 2 +- arch/avr32/boards/favr-32/setup.c | 8 +- arch/avr32/boot/images/Makefile | 2 +- arch/avr32/configs/atstk1006_defconfig | 134 ++- arch/avr32/mach-at32ap/at32ap700x.c | 8 +- arch/ia64/configs/generic_defconfig | 218 ++++-- arch/ia64/hp/sim/Kconfig | 1 + arch/ia64/include/asm/paravirt_privop.h | 1 - arch/ia64/kernel/topology.c | 4 +- arch/ia64/sn/kernel/irq.c | 9 +- arch/ia64/sn/kernel/setup.c | 9 +- arch/mips/Kconfig.debug | 2 +- arch/mips/configs/fulong_defconfig | 921 ++++++++++++-------- arch/mips/configs/ip22_defconfig | 518 ++++++++---- arch/mips/configs/ip32_defconfig | 1060 +++++++++++++---------- arch/mips/configs/malta_defconfig | 631 +++++++++----- arch/mips/include/asm/asmmacro.h | 10 + arch/mips/include/asm/pci.h | 5 + arch/mips/kernel/scall32-o32.S | 7 +- arch/mips/kernel/scall64-n32.S | 2 +- arch/mips/kernel/scall64-o32.S | 16 +- arch/mips/kernel/vpe.c | 2 +- arch/mips/mm/dma-default.c | 3 + arch/mips/mti-malta/Makefile | 5 +- arch/mips/mti-malta/malta-mtd.c | 63 -- arch/mips/mti-malta/malta-platform.c | 107 ++- arch/mips/pci/pci.c | 24 + arch/mn10300/kernel/entry.S | 3 +- arch/mn10300/kernel/gdb-io-serial.c | 2 + arch/mn10300/kernel/mn10300-serial.c | 5 + arch/mn10300/kernel/setup.c | 2 +- arch/mn10300/kernel/vmlinux.lds.S | 22 +- arch/powerpc/boot/Makefile | 1 + arch/powerpc/configs/83xx/mpc834x_itx_defconfig | 2 +- arch/powerpc/configs/mpc83xx_defconfig | 2 +- arch/powerpc/kernel/cpu_setup_44x.S | 1 + arch/powerpc/kernel/cputable.c | 3 + arch/powerpc/kernel/misc_32.S | 5 +- arch/powerpc/lib/rheap.c | 1 + arch/powerpc/mm/hugetlbpage.c | 3 + arch/powerpc/mm/numa.c | 16 +- arch/powerpc/platforms/cell/axon_msi.c | 3 + arch/sh/Kconfig | 2 + arch/sparc/include/asm/bitops_32.h | 1 + arch/sparc/include/asm/ptrace_32.h | 10 + arch/sparc/include/asm/ptrace_64.h | 9 + arch/sparc64/kernel/ptrace.c | 2 +- arch/sparc64/kernel/visemul.c | 6 +- arch/um/drivers/mconsole_kern.c | 4 +- arch/x86/include/asm/amd_iommu_types.h | 24 +- arch/x86/include/asm/dma-mapping.h | 6 +- arch/x86/include/asm/topology.h | 2 +- arch/x86/include/asm/vmi.h | 8 +- arch/x86/kernel/amd_iommu.c | 54 +- arch/x86/kernel/amd_iommu_init.c | 7 +- arch/x86/kernel/cpu/mcheck/mce_64.c | 3 - arch/x86/kernel/microcode_core.c | 19 +- arch/x86/kernel/microcode_intel.c | 6 + arch/x86/kernel/mpparse.c | 3 + arch/x86/kernel/paravirt-spinlocks.c | 3 +- arch/x86/kernel/pci-gart_64.c | 6 +- arch/x86/kernel/setup.c | 12 +- arch/x86/kernel/smpboot.c | 2 - arch/x86/kernel/vmi_32.c | 16 +- arch/x86/oprofile/nmi_int.c | 5 +- arch/x86/oprofile/op_model_ppro.c | 4 + block/bsg.c | 2 + block/compat_ioctl.c | 31 +- block/scsi_ioctl.c | 2 + crypto/Kconfig | 36 +- crypto/Makefile | 18 +- crypto/async_tx/async_xor.c | 11 +- drivers/acpi/battery.c | 9 - drivers/acpi/toshiba_acpi.c | 54 +- drivers/ata/Kconfig | 44 +- drivers/ata/ata_piix.c | 9 +- drivers/ata/libata-core.c | 65 ++- drivers/ata/pata_hpt366.c | 16 +- drivers/ata/pata_ninja32.c | 9 +- drivers/ata/pata_sis.c | 1 - drivers/block/cciss.c | 5 + drivers/block/pktcdvd.c | 6 +- drivers/cdrom/cdrom.c | 16 +- drivers/char/cp437.uni | 12 +- drivers/char/serial167.c | 2 +- drivers/char/vt.c | 2 +- drivers/char/xilinx_hwicap/buffer_icap.c | 3 - drivers/char/xilinx_hwicap/buffer_icap.h | 3 - drivers/char/xilinx_hwicap/fifo_icap.c | 3 - drivers/char/xilinx_hwicap/fifo_icap.h | 3 - drivers/char/xilinx_hwicap/xilinx_hwicap.c | 3 - drivers/char/xilinx_hwicap/xilinx_hwicap.h | 3 - drivers/dma/dmaengine.c | 3 + drivers/dma/ioat_dma.c | 5 +- drivers/dma/iop-adma.c | 16 +- drivers/dma/mv_xor.c | 15 +- drivers/firewire/fw-ohci.c | 11 +- drivers/firewire/fw-transaction.c | 3 + drivers/firewire/fw-transaction.h | 2 + drivers/gpu/drm/i915/i915_dma.c | 15 +- drivers/gpu/drm/i915/i915_drv.h | 17 +- drivers/gpu/drm/i915/i915_gem.c | 648 +++++++++----- drivers/gpu/drm/i915/i915_gem_proc.c | 5 +- drivers/gpu/drm/i915/i915_gem_tiling.c | 7 +- drivers/gpu/drm/i915/i915_reg.h | 1 + drivers/gpu/drm/radeon/radeon_drv.h | 1 - drivers/gpu/drm/radeon/radeon_irq.c | 8 +- drivers/i2c/busses/i2c-cpm.c | 1 + drivers/i2c/busses/i2c-highlander.c | 4 +- drivers/i2c/busses/i2c-pmcmsp.c | 2 +- drivers/i2c/busses/i2c-s3c2410.c | 18 +- drivers/ide/Kconfig | 14 +- drivers/ide/ide-io.c | 6 +- drivers/ide/pmac.c | 30 +- drivers/ide/sgiioc4.c | 6 +- drivers/ieee1394/nodemgr.c | 8 + drivers/isdn/hardware/avm/b1isa.c | 6 +- drivers/isdn/hysdn/hysdn_net.c | 4 +- drivers/md/bitmap.c | 22 +- drivers/message/fusion/mptscsih.c | 3 + drivers/message/i2o/i2o_block.c | 2 +- drivers/message/i2o/iop.c | 1 - drivers/misc/sgi-gru/grufault.c | 4 + drivers/mtd/devices/m25p80.c | 28 +- drivers/mtd/maps/physmap.c | 26 +- drivers/mtd/nand/fsl_upm.c | 8 +- drivers/mtd/nand/pasemi_nand.c | 1 + drivers/mtd/nand/pxa3xx_nand.c | 1 + drivers/mtd/onenand/omap2.c | 17 +- drivers/net/bnx2.c | 41 +- drivers/net/bnx2.h | 6 + drivers/net/e1000e/ich8lan.c | 9 +- drivers/net/enc28j60.c | 18 +- drivers/net/jme.h | 2 +- drivers/net/netx-eth.c | 2 + drivers/net/phy/mdio_bus.c | 5 +- drivers/net/starfire.c | 5 + drivers/net/sungem.c | 144 ++-- drivers/net/tlan.c | 23 +- drivers/net/wireless/ipw2200.c | 4 + drivers/net/wireless/iwlwifi/iwl-core.c | 3 + drivers/net/wireless/iwlwifi/iwl-sta.c | 24 +- drivers/net/wireless/zd1211rw/zd_mac.c | 2 +- drivers/pci/hotplug/acpiphp.h | 2 +- drivers/pci/hotplug/acpiphp_core.c | 2 +- drivers/pci/hotplug/acpiphp_glue.c | 4 +- drivers/pci/hotplug/ibmphp_core.c | 5 - drivers/pci/hotplug/pciehp_core.c | 23 +- drivers/pci/pcie/aer/aerdrv_core.c | 2 +- drivers/pci/pcie/aspm.c | 29 +- drivers/pci/slot.c | 1 + drivers/pcmcia/bfin_cf_pcmcia.c | 2 +- drivers/rtc/rtc-ds1672.c | 6 + drivers/rtc/rtc-max6900.c | 6 + drivers/rtc/rtc-twl4030.c | 2 +- drivers/scsi/aacraid/linit.c | 4 +- drivers/scsi/device_handler/scsi_dh_hp_sw.c | 12 +- drivers/scsi/ibmvscsi/ibmvstgt.c | 16 +- drivers/scsi/libiscsi.c | 11 +- drivers/scsi/scsi_lib.c | 2 +- drivers/scsi/sd.c | 2 +- drivers/scsi/sr.c | 2 +- drivers/serial/ioc3_serial.c | 6 +- drivers/serial/mpc52xx_uart.c | 4 +- drivers/serial/s3c2440.c | 2 +- drivers/sh/maple/maple.c | 2 +- drivers/staging/Kconfig | 3 + drivers/usb/class/usbtmc.c | 1 + drivers/usb/core/driver.c | 4 +- drivers/usb/gadget/f_rndis.c | 4 + drivers/usb/serial/ftdi_sio.c | 4 +- drivers/usb/serial/ftdi_sio.h | 6 + drivers/usb/serial/pl2303.c | 2 + drivers/usb/serial/pl2303.h | 8 + drivers/usb/serial/ti_usb_3410_5052.c | 55 +-- drivers/usb/storage/unusual_devs.h | 16 +- drivers/video/aty/radeon_accel.c | 294 ++----- drivers/video/aty/radeon_backlight.c | 2 +- drivers/video/aty/radeon_base.c | 40 +- drivers/video/aty/radeon_pm.c | 6 +- drivers/video/aty/radeonfb.h | 38 +- drivers/video/console/fbcon.c | 6 + drivers/video/mb862xx/mb862xxfb.c | 4 +- drivers/video/omap/omapfb_main.c | 2 +- fs/9p/fid.c | 4 +- fs/9p/v9fs.c | 2 +- fs/9p/vfs_dentry.c | 9 +- fs/9p/vfs_inode.c | 6 +- fs/block_dev.c | 21 +- fs/cifs/cifssmb.c | 3 +- fs/exec.c | 10 +- fs/exportfs/expfs.c | 4 + fs/ext4/balloc.c | 4 +- fs/fcntl.c | 7 + fs/inotify.c | 2 + fs/ioctl.c | 12 +- fs/ocfs2/ocfs2_fs.h | 8 +- fs/ocfs2/xattr.c | 4 +- fs/proc/base.c | 2 +- fs/proc/task_mmu.c | 4 +- include/asm-generic/atomic.h | 2 +- include/asm-generic/audit_write.h | 2 + include/asm-mn10300/uaccess.h | 2 +- include/linux/audit.h | 6 +- include/linux/blkdev.h | 1 + include/linux/can/core.h | 2 +- include/linux/fs.h | 33 +- include/linux/ftrace.h | 3 +- include/linux/netdevice.h | 7 + include/linux/netfilter/nfnetlink_conntrack.h | 1 + include/linux/smp.h | 2 + include/linux/usb/ch9.h | 8 +- include/net/irda/irda_device.h | 4 +- include/video/radeon.h | 18 +- kernel/audit.c | 32 +- kernel/auditsc.c | 24 +- kernel/cgroup.c | 2 +- kernel/fork.c | 16 +- kernel/latencytop.c | 2 +- kernel/posix-cpu-timers.c | 2 +- kernel/posix-timers.c | 6 + kernel/power/swap.c | 2 +- kernel/relay.c | 7 +- kernel/sched.c | 2 + kernel/sched_clock.c | 6 +- kernel/softlockup.c | 2 +- kernel/time/timekeeping.c | 22 + lib/dynamic_printk.c | 6 +- lib/idr.c | 8 +- lib/percpu_counter.c | 7 +- mm/backing-dev.c | 2 +- mm/migrate.c | 59 +- mm/page_cgroup.c | 3 + mm/slob.c | 2 +- mm/slub.c | 2 +- mm/swap.c | 13 - mm/vmalloc.c | 2 +- net/atm/svc.c | 6 +- net/can/af_can.c | 68 ++- net/can/bcm.c | 7 +- net/core/netpoll.c | 2 + net/ipv4/netfilter/nf_nat_rule.c | 2 +- net/ipv4/tcp_output.c | 22 +- net/ipv4/tcp_vegas.c | 82 +-- net/ipv6/ndisc.c | 7 +- net/mac80211/sta_info.c | 2 +- net/netfilter/xt_socket.c | 2 +- net/netlabel/netlabel_unlabeled.c | 48 +- net/phonet/pep-gprs.c | 27 +- net/phonet/pn_netlink.c | 3 + net/sched/sch_netem.c | 3 - net/xfrm/xfrm_policy.c | 1 + sound/pci/hda/patch_sigmatel.c | 20 +- sound/soc/omap/omap-pcm.c | 2 +- 274 files changed, 4383 insertions(+), 2791 deletions(-) delete mode 100644 arch/mips/mti-malta/malta-mtd.c hooks/post-receive -- XFS development tree From lachlan@oss.sgi.com Mon Dec 22 01:34:38 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, J_CHICKENPOX_33,J_CHICKENPOX_35,J_CHICKENPOX_51 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBM7YchT015129 for ; Mon, 22 Dec 2008 01:34:38 -0600 Received: (from lachlan@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mBM7YXkZ013431; Mon, 22 Dec 2008 01:34:33 -0600 Date: Mon, 22 Dec 2008 01:34:33 -0600 Message-Id: <200812220734.mBM7YXkZ013431@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, mainline, updated. v2.6.28-rc3-1640-g3d44cc3 X-Git-Refname: refs/heads/mainline X-Git-Reftype: branch X-Git-Oldrev: feaf3848a813a106f163013af6fcf6c4bfec92d9 X-Git-Newrev: 3d44cc3e01ee1b40317f79ed54324e25c4f848df This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, mainline has been updated 3d44cc3 Null pointer deref with hrtimer_try_to_cancel() ab65387 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs e6a997e Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 280a9ca x86: fix resume (S2R) broken by Intel microcode module, on A110L f1d9e45 fs/9p: change simple_strtol to simple_strtoul 7dd0cdc 9p: convert d_iname references to d_name.name 6ff2320 9p: Remove potentially bad parameter from function entry debug print. 9a1d103 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 8837e34 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 281981c Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block f3485c8 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 db873cf Merge branch 'for-linus' of git://neil.brown.name/md eae34c6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 5bd9c69 Merge branch 'fix/asoc' into for-linus 19b3f31 ALSA: Fix a Oops bug in omap soc driver. 8f55c1e ALSA: hda - Remove non-working headphone control for Dell laptops 9e43f0d ALSA: hda - Add no-jd model for IDT 92HD73xx 85f13b6 ALSA: Revert "ALSA: hda: removed unneeded hp_nid references" d8a0be6 cciss: fix problem that deleting multiple logical drives could cause a panic fa620e9 ALSA: hda - Add quirk for Dell Studio 17 ac5c4e7 drm/i915: GEM on PAE has problems - disable it for now. c4de0a5 drm/i915: Don't return busy for buffers left on the flushing list. a2ed961 md: Don't read past end of bitmap when reading bitmap. 929096f Linux 2.6.28-rc9 59da1f8 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx 69098ba Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6 b3806c3 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 3653b9a Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 52af894 Maintainer email fixes for inotify 8983fdb avr32: favr-32 build fix de13d28 ATSTK1006: Fix boot from NAND flash c9bc03a Merge branch 'iommu-fixes-2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into x86/urgent 55aab5f x86 gart: don't complain if no AMD GART found e28d832 ALSA: hda - Fix silent HP output on D975 3298a73 bnx2: Fix bug in bnx2_free_rx_mem(). 3e3d0e9 PCI hotplug: ibmphp: Fix module ref count underflow 69c30e1 irda: Add irda_skb_cb qdisc related padding 55dac3a Merge branch 'i2c-fixes' of git://aeryn.fluff.org.uk/bjdooks/linux 0bc77ec Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 3797455 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 5b8bd54 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 331c313 cifs: fix buffer overrun in parse_DFS_referrals a52519f Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/galak/powerpc 4b4cdf3 STAGING: Move staging drivers back to staging-specific menu aa6f3c6 driver core: add newlines to debugging enabled/disabled messages 09a35ce xilinx_hwicap: remove improper wording in license statement 1c93ca0 driver core: fix using 'ret' variable in unregister_dynamic_debug_module af4b851 USB: pl2303: add id for Hewlett-Packard LD220-HP POS pole display 413ba6f USB: set correct configuration in probe of ti_usb_3410_5052 7c99200 USB: add 5372:2303 to pl2303 24c0996 USB: skip Set-Interface(0) if already in altsetting 0 9a9fafb USB: fix comment about endianness of descriptors c33ba39 USB: Documentation/usb/gadget_serial.txt: update to match driver use_acm behaviour aacf4a0 usbmon: drop bogus 0t from usbmon.txt 7c12414 USB: gadget: fix rndis working at high speed 01ba085 USB: ftdi_sio: Adding Ewert Energy System's CANdapter PID f2ee695 USB: tty: SprogII DCC controller identifiers a4b1880 usb-storage: update unusual_devs entry for Nokia 5310 48e1a54 USB: Unusual devs patch for Nokia 3500c 1393fce USB: storage: unusual_devs.h: Nokia 3109c addition 5413aa4 USB: fix problem with usbtmc driver not loading properly af4d364 powerpc: Fix corruption error in rh_alloc_fixed() 28707af powerpc/fsl-booke: Fix the miss interrupt restore 84df817 AMD IOMMU: panic if completion wait loop fails cf558d2 AMD IOMMU: set cmd buffer pointers to zero manually c1892cb avr32: remove .note.gnu.build-id section when making vmlinux.bin 2fccd28 jme: Fixed a typo e8e5752 net: kernel BUG at drivers/net/phy/mdio_bus.c:165! 878a553 sparc: We need to implement arch_ptrace_stop(). a977218 ocfs2: Add JBD2 compat feature bit. 9a3de25 drivers/net: starfire: Fix napi ->poll() weight handling bb5f133 tlan: Fix pci memory unmapping 83099bc ocfs2: Always update xattr search when creating bucket. cf9b303 x86: re-enable MCE on secondary CPUS after suspend/resume b6adc19 PCI hotplug: acpiphp wants a 64-bit _SUN db9aaf0 PCI: pciehp: fix unexpected power off with pciehp_force b0b801d PCI: fix aer resume sanity check be44f01 i2c-s3c2410: fix check for being in suspend. a804644 i2c-cpm: Detect and report NAK right away instead of timing out a6da74c [SCSI] mpt fusion: clear list of outstanding commands on host reset 83fd5cc AMD IOMMU: allocate rlookup_table with __GFP_ZERO 1bda712 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 7a62b17 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev 3bd8226 Merge branch 'sh/for-2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 eef70b2 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc c095adb mm: Don't touch uninitialized variable in do_pages_stat_array() 3ee89f1 pata_hpt366: no ATAPI DMA bab5b32 pata_hpt366: fix cable detection, d10d491 libata: fix Seagate NCQ+FLUSH blacklist 2c413a6 enc28j60: use netif_rx_ni() to deliver RX packets 8953f12 tlan: Fix small (< 64 bytes) datagram transmissions 092cab7 netfilter: ctnetlink: fix missing CTA_NAT_SEQ_UNSPEC f9d62c0 sh: Disable GENERIC_HARDIRQS_NO__DO_IRQ for unconverted platforms. 93d5463 sh: maple: Do not pass SLAB_POISON to kmem_cache_create() 23e0e8a powerpc/cell/axon-msi: Fix MSI after kexec a4c74dd powerpc: Fix bootmem reservation on uninitialized node 48f797d powerpc: Check for valid hugepage size in hugetlb_get_unmapped_area a3dd154 Merge master.kernel.org:/home/rmk/linux-2.6-arm 7004405 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 d2ff911 Define smp_call_function_many for UP 307257c cgroups: fix a race between rmdir and remount 38aefbc ACPI toshiba: only register rfkill if bt is enabled 6dc7516 eCryptfs: Update maintainers 5e18e2b slob: do not pass the SLAB flags as GFP in kmem_cache_create() 35024c3 pcmcia: blackfin: fix bug - add missing ; to MODULE macro 1ada144 [ARM] 5348/1: fix documentation wrt location of the alignment trap interface 67306da [ARM] Ensure linux/hardirqs.h is included where required 4798a2b Phonet: keep TX queue disabled when the device is off eb9b851 SCHED: netem: Correct documentation comment in code. be70ed1 netfilter: update rwlock initialization for nat_table cefb3d0 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/galak/powerpc ae8d04e x86 Fix VMI crash on boot in 2.6.28-rc8 ca7e716 Revert "sched_clock: prevent scd->clock from moving backwards" 3909845 [ARM] fix kernel-doc syntax 442a902 [ARM] arch/arm/common/sa1111.c: Correct error handling code 25a41b2 ieee1394: add quirk fix for Freecom HDD e5e774d powerpc/fsl-booke: Fix problem with _tlbil_va being interrupted 02bd349 [SCSI] scsi_lib: only call scsi_unprep_request() under queue lock 5279585 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx 68b32d4 Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 8d9c02e Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block fae1aa4 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 1c55f18 console ASCII glyph 1:1 mapping f75bc06 unicode table for cp437 6d8a52d MIPS: IP32: Update defconfig 11531ac MIPS: Add missing calls to plat_unmap_dma_mem. 00ace20 MIPS: Kconfig: Fix the arch-specific header path b6354db MIPS: Use EI/DI for MIPS R2. febd7a5 Commands needing to be retried require a complete re-initialization. ec8f237 netlabel: Compiler warning and NULL pointer dereference fix 30bb0e0 e1000e: fix double release of mutex 9f3eefc powerpc/40x: Add proper BOOTCFLAGS for cuboot-acadia 2b895c3 i2c-highlander: Trivial endian casting fixes d9d38ca i2c-pmcmsp: Fix endianness misannotation 674a0a6 [ARM] 5341/2: there is no copy_page on nommu ARM 6c34bc2 Revert "radeonfb: accelerate imageblit and other improvements" bb49eed IA64: HP_SIMETH needs to depend upon NET 8b1fae4 Linux 2.6.28-rc8 f9fc05e Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip b88ed20 fix mapping_writably_mapped() f4fd2c5 Merge branch 'to-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/frob/linux-2.6-roland 711a49a lib/idr.c: Fix bug introduced by RCU fix c7f8d6f MN10300: Give correct size when reserving interrupt vector table 54b71fb MN10300: Fix __put_user_asm8() 24646bd MN10300: Fix the preemption resume_kernel() routine a8893fb MN10300: Discard low-priority Tx interrupts when closing an on-chip serial port cb32898 MN10300: vmlinux.lds.S cleanup - use PAGE_SIZE, PERCPU macros 4e6f2ba Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 44f6cc3 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 061afe9 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 942c88c Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus cba7671 pktcdvd: remove broken dev_t export of class devices cdcb30b Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 c1ab6cc drivers/video/mb862xx/mb862xxfb.c: fix printk 9c24624 KSYM_SYMBOL_LEN fixes 6ee5a39 inotify: fix IN_ONESHOT unmount event watcher aa6f147 atomic: fix a typo in atomic_long_xchg() 80bba12 mm: no get_user/put_user while holding mmap_sem in do_pages_stat? 52b9582 drivers/serial/s3c2440.c: fix typo in MODULE_LICENSE 49c5034 pagemap: fix 32-bit pagemap regression 653d22c page_cgroup should ignore empty nodes cc61686 rtc twl4030: rename ioctl function when RTC_INTF_DEV=n beaa486 fbcon: fix workqueue shutdown 6841c8e mm: remove UP version of lru_add_drain_all() 02d2116 revert "percpu_counter: new function percpu_counter_sum_and_set" 71c5576 revert "percpu counter: clean up percpu_counter_sum_and_set()" fd3d664 percpu_counter: fix CPU unplug race in percpu_counter_destroy() fe102c7 rtc: fix missing id_table in rtc-ds1672 and rtc-max6900 drivers fbb5b7a relayfs: fix infinite loop with splice() 3613712 uml: boot broken due to buffer overrun 69fc208 mm/backing-dev.c: remove recently-added WARN_ON() 6a0fcbb crypto: api - Disallow cryptomgr as a module if algorithms are built-in 1d1dc5e firewire: fw-ohci: fix IOMMU resource exhaustion 7b363e4 netpoll: fix race on poll_list resulting in garbage entry 85f3346 tracehook: exec double-reporting fix 24fc7b8 ipv6: silence log messages for locally generated multicast fbf0229 sungem: improve ethtool output with internal pcs and serdes 2a42d9d PCIe: ASPM: Break out of endless loop waiting for PCI config bits to switch 3b5dd45 PCI: stop leaking 'slot_name' in pci_create_slot 98873f5 MIPS: Better than nothing implementation of PCI mmap to fix X. ff740fb [IA64] SN: prevent IRQ retargetting in request_irq() ec9a13c ieee1394: node manager causes up to ~3.25s delay in freezing tasks 9a2bd24 sched: CPU remove deadlock fix 3c0db89 [IA64] Fix section mismatch ioc3uart_init()/ioc3uart_submodule ecdbc69 [IA64] Clear up section mismatch for ioc4_ide_attach_one. 8704ad8 [IA64] Clear up section mismatch with arch_unregister_cpu() 6882edc [IA64] Clear up section mismatch for sn_check_wars. 9877e7b [IA64] Updated the generic_defconfig to work with the 2.6.28-rc7 kernel. 023a407 [IA64] Fix GRU compile error w/o CONFIG_HUGETLB_PAGE 6afc9be [IA64] eliminate NULL test and memset after alloc_bootmem fc10212 [IA64] remove BUILD_BUG_ON from paravirt_getreg() 437f2f9 Merge master.kernel.org:/home/rmk/linux-2.6-arm 4d9c6a2 Merge git://git.infradead.org/mtd-2.6 b749e3f Merge branch 'audit.b59' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current 6f8e5850 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev 21283f0 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 cdf0c7d Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc f317974 radeonfb: Disable new color expand acceleration unless explicitely enabled 5745803 [SCSI] ibmvstgt: move crq_queue_create to the end of initialization 8d3a564 tcp: tcp_vegas cong avoid fix 8c83f80 sungem: Make PCS PHY support partially work again. 48887e6 [PATCH] fix broken timestamps in AVC generated by kernel threads 7f0ed77 [patch 1/1] audit: remove excess kernel-doc 0b0c940 [PATCH] asm/generic: fix bug - kernel fails to build when enable some common audit code on Blackfin a64e649 [PATCH] return records for fork() both to child and parent a3f0711 [PATCH] Audit: make audit=0 actually turn off audit e3389cb ata: Fix experimental tags b604958 pata_ninja32: update ID table e33ba2c pata_sis: Remove bogus cable match 9ac6212 ATA: piix, fix pointer deref on suspend 2456eb8 pata_hpt366: fix clock detection b60678a drm/i915: Disable the GM965 MSI errata workaround. 15c3533 drm/i915: Don't return error in evict_everything when we get to the end. fae7043 drm/radeon: don't actually enable the IRQ regs until irq is enabled ab44f46 Merge branch 'merge' of master.kernel.org:/pub/scm/linux/kernel/git/galak/powerpc into merge f7a8db8 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 6f84b4d Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 7f336bf Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 a4f4d6d EXPORTFS: handle NULL returns from fh_to_dentry()/fh_to_parent() a06d568 async_xor: dma_map destination DMA_BIDIRECTIONAL 5384657 ide: build-fix for CONFIG_BLK_DEV_IDEDMA_PMAC=n 1a65988 Revert "ide: respect current DMA setting during resume" 087052b x86: fix default_spin_lock_flags() prototype b8d9905 AMD IOMMU: __unmap_single: check for bad_dma_address instead of 0 8ad909c AMD IOMMU: fix WARN_ON in dma_ops unmap path 24f8116 AMD IOMMU: fix typo in comment 3cc3d84 AMD IOMMU: fix loop counter in free_pagetable function bb9d4ff AMD IOMMU: fix iommu_map_page function c49b9f2 tproxy: fixe a possible read from an invalid location in the socket match baa745a [ARM] Fix alignment fault handling for ARMv6 and later CPUs 794baba [ARM] 5340/1: fix stack placement after noexecstack changes 0a0755c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 218d11a Fix a race condition in FASYNC handling f2f1fa7 Enforce a minimum SG_IO timeout 24920a7 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 2289e66 drivers/message/i2o/iop.c: cleanup kerneldoc 5e33330 Fix incorrect use of loose in i2o_block.c c4f0124 Fix incorrect use of loose in tty/serial drivers f10a3a3 Revert "ACPI: battery: Convert discharge energy rate to current properly" 640d17d powerpc/virtex5: Fix Virtex5 machine check handling 8ebcfc8 MIPS: Fix incorrect use of loose in vpe.c cde6901 zd1211rw: use unaligned safe memcmp() in-place of compare_ether_addr() 5cf12e8 mac80211: use unaligned safe memcmp() in-place of compare_ether_addr() b8ddafd ipw2200: fix netif_*_queue() removal regression 40a9a82 iwlwifi: clean key table in iwl_clear_stations_table function bbeba4c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/bdev 6df944c Merge branch 'drm-gem-update' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 341e558 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/galak/powerpc aaad077 ACPI: Fix ACPI battery regression introduced by commit 558073 4857339 Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 0efcafb Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 e948990 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2b218ae Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 3b666ce Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 56d18e9 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 1cb434b Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs 576a488 [XFS] Fix hang after disallowed rename across directory quota domains a6af2d6 tcp: tcp_vegas ssthresh bug fix b2c2717 powerpc/83xx: Enable FIXED_PHY in mpc834x_itx and mpc83xx defconfigs f706644 can: omit received RTR frames for single ID filter lists 17b24b3 ATM: CVE-2008-5079: duplicate listen() on socket corrupts the vcc table c6cb4df MIPS: Return ENOSYS from sys32_syscall on 64bit kernels like elsewhere. 8d13cb2 MIPS: 64-bit: vmsplice needs to use the compat wrapper for o32 and N32. 08d3087 MIPS: o32: Fix number of arguments to splice(2). 566a3b9 MIPS: Malta: Consolidate platform device code. 3e27cce MIPS: IP22, Fulong, Malta: Update defconfigs. 192cc7f MIPS: Malta: Add back RTC support e807f95 MIPS: Fix potential DOS by untrusted user app. 410d2c8 sparc64: Sync FPU state in VIS emulation handler. 9adc138 x86: fix early panic with boot option "nosmp" 2cbed89 [PATCH] fix bogus argument of blkdev_put() in pktcdvd fc9161e [PATCH 2/2] documnt FMODE_ constants fd4ce1a [PATCH 1/2] kill FMODE_NDELAY_NOW ebbefc0 [PATCH] clean up blkdev_get a little bit 1c92560 [PATCH] Fix block dev compat ioctl handling 50c396d [PATCH] kill obsolete temporary comment in swsusp_close() 94fc733 [ARM] 5339/1: fix __fls() on ARM 6c9bacb time: catch xtime_nsec underflows and fix them 2cc002c netx-eth: initialize per device spinlock f8269a4 tcp: make urg+gso work for real this time 5176da7 enc28j60: Fix sporadic packet loss (corrected again) bd09141 hysdn: fix writing outside the field on 64 bits 1c594c0 b1isa: fix b1isa_exit() to really remove registered capi controllers 726c12f sparc64: Fix VIS emulation bugs 0235439 drm/i915: Return error in i915_gem_set_to_gtt_domain if we're not in the GTT. ac94a96 drm/i915: Retry execbuffer pinning after clearing the GTT 646f0f6 drm/i915: Move the execbuffer domain computations together c0d9082 drm/i915: Rename object_set_domain to object_set_to_gpu_domain e47c68e drm/i915: Make a single set-to-cpu-domain path and use it wherever needed. 2ef7eea drm/i915: Make a single set-to-gtt-domain path. b670d81 drm/i915: If interrupted while setting object domains, still emit the flush. ce44b0e drm/i915: Move flushing list cleanup from flush request retire to request emit. a7f014f drm/i915: Respect GM965/GM45 bit-17-instead-of-bit-11 option for swizzling. 004b50f MN10300: Introduce barriers to replace removed volatiles in gdbstub 16550 driver 8711cca MAINTAINERS: Add security subsystem maintainer b0b42b1 dmaengine: protect 'id' from concurrent registrations 532d3b1 ioat: wait for self-test completion e8e8e80 sparc: asm/bitops.h should define __fls d253eee can: Fix CAN_(EFF|RTR)_FLAG handling in can_filter bd7df21 Phonet: do not dump addresses from other namespaces 66a05d6 Merge branch 'oprofile-for-tip' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile into x86/urgent 3d337c6 x86/oprofile: fix Intel cpu family 6 detection d3acf02 [SCSI] libiscsi REGRESSION: fix passthrough support with older iscsi tools b21227c [SCSI] aacraid: disable Dell Percraid quirk on Adaptec 2200S and 2120S 9ea84ad oprofile: fix CPU unplug panic in ppro_stop() c36910c Merge branch 'iommu-fixes-2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into x86/urgent 09ee17e AMD IOMMU: fix possible race while accessing iommu->need_sync f91ba19 AMD IOMMU: set device table entry for aliased devices eac9fbc AMD IOMMU: struct amd_iommu remove padding on 64 bit e93f1be [MTD] [NAND] fix OOPS accessing flash operations over STM flash on PXA 2019554 check_hung_task(): unsigned sysctl_hung_task_warnings cannot be less than 0 70d7d35 x86: fix broken flushing in GART nofullflush path ee4ee52 sparc64: Fix bug in PTRACE_SETFPREGS64 handling. d25830e netlabel: Fix a potential NULL pointer dereference efba018 bnx2: Add workaround to handle missed MSI. d5654ef xfrm: Fix kernel panic when flush and dump SPD entries 82676d7 [ARM] Orion: fix bug in pcie configuration cycle function field mask d947629 [MTD] [NAND] drivers/mtd/nand/pasemi_nand.c: Add missing pci_dev_put 020f970 [ARM] omap: fix a pile of issues 02d43b1 documentation: local_ops fix on_each_cpu 4371453 sched: don't export sched_mc_power_savings in laptops 7b1dedc x86: fix dma_mapping_error for 32bit x86 29b6586 [MTD] [NAND] fsl_upm: fix build problem with 2.6.28-rc2 3136e90 [MTD] physmap: fix memory leak on physmap_flash_remove by using devres 7854643 [MTD] m25p80: chip erase != block erase != sector erase 9168ab8 [MTD] m25p80: fix detection of m25p16 flashes a3d3f73 [MTD] m25p80: fix detection of SPI parts cbbd695 [MTD] [NAND] OMAP: OneNAND: header file relocation (part 2) eccdaea posix-cpu-timers: fix clock_gettime with CLOCK_PROCESS_CPUTIME_ID fe87535 [MTD] [NAND] OMAP: OneNAND: header file relocation 1054626 avr32: Enable pullup on USART TX lines from feaf3848a813a106f163013af6fcf6c4bfec92d9 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: Documentation/arm/mem_alignment | 2 +- Documentation/local_ops.txt | 2 +- Documentation/sound/alsa/ALSA-Configuration.txt | 2 + Documentation/usb/gadget_serial.txt | 4 +- Documentation/usb/proc_usb_info.txt | 6 +- Documentation/usb/usbmon.txt | 12 +- MAINTAINERS | 21 +- Makefile | 2 +- arch/arm/common/sa1111.c | 2 +- arch/arm/include/asm/bitops.h | 16 +- arch/arm/include/asm/processor.h | 2 +- arch/arm/kernel/armksyms.c | 4 +- arch/arm/kernel/traps.c | 1 + arch/arm/mach-omap1/io.c | 2 +- arch/arm/mach-pxa/include/mach/reset.h | 5 +- arch/arm/mm/alignment.c | 26 +- arch/arm/mm/fault.c | 1 + arch/arm/plat-omap/include/mach/omapfb.h | 4 +- arch/arm/plat-omap/sram.c | 8 +- arch/arm/plat-orion/pcie.c | 2 +- arch/avr32/boards/favr-32/flash.c | 2 +- arch/avr32/boards/favr-32/setup.c | 8 +- arch/avr32/boot/images/Makefile | 2 +- arch/avr32/configs/atstk1006_defconfig | 134 ++- arch/avr32/mach-at32ap/at32ap700x.c | 8 +- arch/ia64/configs/generic_defconfig | 218 ++++-- arch/ia64/hp/sim/Kconfig | 1 + arch/ia64/include/asm/paravirt_privop.h | 1 - arch/ia64/kernel/topology.c | 4 +- arch/ia64/sn/kernel/irq.c | 9 +- arch/ia64/sn/kernel/setup.c | 9 +- arch/mips/Kconfig.debug | 2 +- arch/mips/configs/fulong_defconfig | 921 ++++++++++++-------- arch/mips/configs/ip22_defconfig | 518 ++++++++---- arch/mips/configs/ip32_defconfig | 1060 +++++++++++++---------- arch/mips/configs/malta_defconfig | 631 +++++++++----- arch/mips/include/asm/asmmacro.h | 10 + arch/mips/include/asm/pci.h | 5 + arch/mips/kernel/scall32-o32.S | 7 +- arch/mips/kernel/scall64-n32.S | 2 +- arch/mips/kernel/scall64-o32.S | 16 +- arch/mips/kernel/vpe.c | 2 +- arch/mips/mm/dma-default.c | 3 + arch/mips/mti-malta/Makefile | 5 +- arch/mips/mti-malta/malta-mtd.c | 63 -- arch/mips/mti-malta/malta-platform.c | 107 ++- arch/mips/pci/pci.c | 24 + arch/mn10300/kernel/entry.S | 3 +- arch/mn10300/kernel/gdb-io-serial.c | 2 + arch/mn10300/kernel/mn10300-serial.c | 5 + arch/mn10300/kernel/setup.c | 2 +- arch/mn10300/kernel/vmlinux.lds.S | 22 +- arch/powerpc/boot/Makefile | 1 + arch/powerpc/configs/83xx/mpc834x_itx_defconfig | 2 +- arch/powerpc/configs/mpc83xx_defconfig | 2 +- arch/powerpc/kernel/cpu_setup_44x.S | 1 + arch/powerpc/kernel/cputable.c | 3 + arch/powerpc/kernel/misc_32.S | 5 +- arch/powerpc/lib/rheap.c | 1 + arch/powerpc/mm/hugetlbpage.c | 3 + arch/powerpc/mm/numa.c | 16 +- arch/powerpc/platforms/cell/axon_msi.c | 3 + arch/sh/Kconfig | 2 + arch/sparc/include/asm/bitops_32.h | 1 + arch/sparc/include/asm/ptrace_32.h | 10 + arch/sparc/include/asm/ptrace_64.h | 9 + arch/sparc64/kernel/ptrace.c | 2 +- arch/sparc64/kernel/visemul.c | 6 +- arch/um/drivers/mconsole_kern.c | 4 +- arch/x86/include/asm/amd_iommu_types.h | 24 +- arch/x86/include/asm/dma-mapping.h | 6 +- arch/x86/include/asm/topology.h | 2 +- arch/x86/include/asm/vmi.h | 8 +- arch/x86/kernel/amd_iommu.c | 54 +- arch/x86/kernel/amd_iommu_init.c | 7 +- arch/x86/kernel/cpu/mcheck/mce_64.c | 3 - arch/x86/kernel/microcode_core.c | 19 +- arch/x86/kernel/microcode_intel.c | 6 + arch/x86/kernel/mpparse.c | 3 + arch/x86/kernel/paravirt-spinlocks.c | 3 +- arch/x86/kernel/pci-gart_64.c | 6 +- arch/x86/kernel/setup.c | 12 +- arch/x86/kernel/smpboot.c | 2 - arch/x86/kernel/vmi_32.c | 16 +- arch/x86/oprofile/nmi_int.c | 5 +- arch/x86/oprofile/op_model_ppro.c | 4 + block/bsg.c | 2 + block/compat_ioctl.c | 31 +- block/scsi_ioctl.c | 2 + crypto/Kconfig | 36 +- crypto/Makefile | 18 +- crypto/async_tx/async_xor.c | 11 +- drivers/acpi/battery.c | 9 - drivers/acpi/toshiba_acpi.c | 54 +- drivers/ata/Kconfig | 44 +- drivers/ata/ata_piix.c | 9 +- drivers/ata/libata-core.c | 65 ++- drivers/ata/pata_hpt366.c | 16 +- drivers/ata/pata_ninja32.c | 9 +- drivers/ata/pata_sis.c | 1 - drivers/block/cciss.c | 5 + drivers/block/pktcdvd.c | 6 +- drivers/cdrom/cdrom.c | 16 +- drivers/char/cp437.uni | 12 +- drivers/char/serial167.c | 2 +- drivers/char/vt.c | 2 +- drivers/char/xilinx_hwicap/buffer_icap.c | 3 - drivers/char/xilinx_hwicap/buffer_icap.h | 3 - drivers/char/xilinx_hwicap/fifo_icap.c | 3 - drivers/char/xilinx_hwicap/fifo_icap.h | 3 - drivers/char/xilinx_hwicap/xilinx_hwicap.c | 3 - drivers/char/xilinx_hwicap/xilinx_hwicap.h | 3 - drivers/dma/dmaengine.c | 3 + drivers/dma/ioat_dma.c | 5 +- drivers/dma/iop-adma.c | 16 +- drivers/dma/mv_xor.c | 15 +- drivers/firewire/fw-ohci.c | 11 +- drivers/firewire/fw-transaction.c | 3 + drivers/firewire/fw-transaction.h | 2 + drivers/gpu/drm/i915/i915_dma.c | 15 +- drivers/gpu/drm/i915/i915_drv.h | 17 +- drivers/gpu/drm/i915/i915_gem.c | 648 +++++++++----- drivers/gpu/drm/i915/i915_gem_proc.c | 5 +- drivers/gpu/drm/i915/i915_gem_tiling.c | 7 +- drivers/gpu/drm/i915/i915_reg.h | 1 + drivers/gpu/drm/radeon/radeon_drv.h | 1 - drivers/gpu/drm/radeon/radeon_irq.c | 8 +- drivers/i2c/busses/i2c-cpm.c | 1 + drivers/i2c/busses/i2c-highlander.c | 4 +- drivers/i2c/busses/i2c-pmcmsp.c | 2 +- drivers/i2c/busses/i2c-s3c2410.c | 18 +- drivers/ide/Kconfig | 14 +- drivers/ide/ide-io.c | 6 +- drivers/ide/pmac.c | 30 +- drivers/ide/sgiioc4.c | 6 +- drivers/ieee1394/nodemgr.c | 8 + drivers/isdn/hardware/avm/b1isa.c | 6 +- drivers/isdn/hysdn/hysdn_net.c | 4 +- drivers/md/bitmap.c | 22 +- drivers/message/fusion/mptscsih.c | 3 + drivers/message/i2o/i2o_block.c | 2 +- drivers/message/i2o/iop.c | 1 - drivers/misc/sgi-gru/grufault.c | 4 + drivers/mtd/devices/m25p80.c | 28 +- drivers/mtd/maps/physmap.c | 26 +- drivers/mtd/nand/fsl_upm.c | 8 +- drivers/mtd/nand/pasemi_nand.c | 1 + drivers/mtd/nand/pxa3xx_nand.c | 1 + drivers/mtd/onenand/omap2.c | 17 +- drivers/net/bnx2.c | 41 +- drivers/net/bnx2.h | 6 + drivers/net/e1000e/ich8lan.c | 9 +- drivers/net/enc28j60.c | 18 +- drivers/net/jme.h | 2 +- drivers/net/netx-eth.c | 2 + drivers/net/phy/mdio_bus.c | 5 +- drivers/net/starfire.c | 5 + drivers/net/sungem.c | 144 ++-- drivers/net/tlan.c | 23 +- drivers/net/wireless/ipw2200.c | 4 + drivers/net/wireless/iwlwifi/iwl-core.c | 3 + drivers/net/wireless/iwlwifi/iwl-sta.c | 24 +- drivers/net/wireless/zd1211rw/zd_mac.c | 2 +- drivers/pci/hotplug/acpiphp.h | 2 +- drivers/pci/hotplug/acpiphp_core.c | 2 +- drivers/pci/hotplug/acpiphp_glue.c | 4 +- drivers/pci/hotplug/ibmphp_core.c | 5 - drivers/pci/hotplug/pciehp_core.c | 23 +- drivers/pci/pcie/aer/aerdrv_core.c | 2 +- drivers/pci/pcie/aspm.c | 29 +- drivers/pci/slot.c | 1 + drivers/pcmcia/bfin_cf_pcmcia.c | 2 +- drivers/rtc/rtc-ds1672.c | 6 + drivers/rtc/rtc-max6900.c | 6 + drivers/rtc/rtc-twl4030.c | 2 +- drivers/scsi/aacraid/linit.c | 4 +- drivers/scsi/device_handler/scsi_dh_hp_sw.c | 12 +- drivers/scsi/ibmvscsi/ibmvstgt.c | 16 +- drivers/scsi/libiscsi.c | 11 +- drivers/scsi/scsi_lib.c | 2 +- drivers/scsi/sd.c | 2 +- drivers/scsi/sr.c | 2 +- drivers/serial/ioc3_serial.c | 6 +- drivers/serial/mpc52xx_uart.c | 4 +- drivers/serial/s3c2440.c | 2 +- drivers/sh/maple/maple.c | 2 +- drivers/staging/Kconfig | 3 + drivers/usb/class/usbtmc.c | 1 + drivers/usb/core/driver.c | 4 +- drivers/usb/gadget/f_rndis.c | 4 + drivers/usb/serial/ftdi_sio.c | 4 +- drivers/usb/serial/ftdi_sio.h | 6 + drivers/usb/serial/pl2303.c | 2 + drivers/usb/serial/pl2303.h | 8 + drivers/usb/serial/ti_usb_3410_5052.c | 55 +-- drivers/usb/storage/unusual_devs.h | 16 +- drivers/video/aty/radeon_accel.c | 294 ++----- drivers/video/aty/radeon_backlight.c | 2 +- drivers/video/aty/radeon_base.c | 40 +- drivers/video/aty/radeon_pm.c | 6 +- drivers/video/aty/radeonfb.h | 38 +- drivers/video/console/fbcon.c | 6 + drivers/video/mb862xx/mb862xxfb.c | 4 +- drivers/video/omap/omapfb_main.c | 2 +- fs/9p/fid.c | 4 +- fs/9p/v9fs.c | 2 +- fs/9p/vfs_dentry.c | 9 +- fs/9p/vfs_inode.c | 6 +- fs/block_dev.c | 21 +- fs/cifs/cifssmb.c | 3 +- fs/exec.c | 10 +- fs/exportfs/expfs.c | 4 + fs/ext4/balloc.c | 4 +- fs/fcntl.c | 7 + fs/inotify.c | 2 + fs/ioctl.c | 12 +- fs/ocfs2/ocfs2_fs.h | 8 +- fs/ocfs2/xattr.c | 4 +- fs/proc/base.c | 2 +- fs/proc/task_mmu.c | 4 +- fs/xfs/xfs_rename.c | 2 +- include/asm-generic/atomic.h | 2 +- include/asm-generic/audit_write.h | 2 + include/asm-mn10300/uaccess.h | 2 +- include/linux/audit.h | 6 +- include/linux/blkdev.h | 1 + include/linux/can/core.h | 2 +- include/linux/fs.h | 33 +- include/linux/ftrace.h | 3 +- include/linux/netdevice.h | 7 + include/linux/netfilter/nfnetlink_conntrack.h | 1 + include/linux/smp.h | 2 + include/linux/usb/ch9.h | 8 +- include/net/irda/irda_device.h | 4 +- include/video/radeon.h | 18 +- kernel/audit.c | 32 +- kernel/auditsc.c | 24 +- kernel/cgroup.c | 2 +- kernel/fork.c | 16 +- kernel/latencytop.c | 2 +- kernel/posix-cpu-timers.c | 2 +- kernel/posix-timers.c | 6 + kernel/power/swap.c | 2 +- kernel/relay.c | 7 +- kernel/sched.c | 2 + kernel/sched_clock.c | 6 +- kernel/softlockup.c | 2 +- kernel/time/timekeeping.c | 22 + lib/dynamic_printk.c | 6 +- lib/idr.c | 8 +- lib/percpu_counter.c | 7 +- mm/backing-dev.c | 2 +- mm/migrate.c | 59 +- mm/page_cgroup.c | 3 + mm/slob.c | 2 +- mm/slub.c | 2 +- mm/swap.c | 13 - mm/vmalloc.c | 2 +- net/atm/svc.c | 6 +- net/can/af_can.c | 68 ++- net/can/bcm.c | 7 +- net/core/netpoll.c | 2 + net/ipv4/netfilter/nf_nat_rule.c | 2 +- net/ipv4/tcp_output.c | 22 +- net/ipv4/tcp_vegas.c | 82 +-- net/ipv6/ndisc.c | 7 +- net/mac80211/sta_info.c | 2 +- net/netfilter/xt_socket.c | 2 +- net/netlabel/netlabel_unlabeled.c | 48 +- net/phonet/pep-gprs.c | 27 +- net/phonet/pn_netlink.c | 3 + net/sched/sch_netem.c | 3 - net/xfrm/xfrm_policy.c | 1 + sound/pci/hda/patch_sigmatel.c | 20 +- sound/soc/omap/omap-pcm.c | 2 +- 275 files changed, 4384 insertions(+), 2792 deletions(-) delete mode 100644 arch/mips/mti-malta/malta-mtd.c hooks/post-receive -- XFS development tree From lachlan@oss.sgi.com Mon Dec 22 01:35:05 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, J_CHICKENPOX_33,J_CHICKENPOX_35,J_CHICKENPOX_51 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBM7Z5hJ016903 for ; Mon, 22 Dec 2008 01:35:05 -0600 Received: (from lachlan@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mBM7YdWg015135; Mon, 22 Dec 2008 01:34:39 -0600 Date: Mon, 22 Dec 2008 01:34:39 -0600 Message-Id: <200812220734.mBM7YdWg015135@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.28-rc3-1827-gefc5575 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 4d9d4ebf5de848e3450e23e4db9ac74e23e5daa6 X-Git-Newrev: efc557570dc99b46e46a7be51c3c7402b485e829 This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated efc5575 [XFS] avoid memory allocations in xfs_fs_vcmn_err 9f6c92b [XFS] Fix speculative allocation beyond eof 4fdc778 [XFS] Remove XFS_BUF_SHUT() and friends d415867 [XFS] Use the incore inode size in xfs_file_readdir() 27a0464 [XFS] Fix merge conflict in fs/xfs/xfs_rename.c 3d44cc3 Null pointer deref with hrtimer_try_to_cancel() ab65387 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs e6a997e Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 280a9ca x86: fix resume (S2R) broken by Intel microcode module, on A110L f1d9e45 fs/9p: change simple_strtol to simple_strtoul 7dd0cdc 9p: convert d_iname references to d_name.name 6ff2320 9p: Remove potentially bad parameter from function entry debug print. 9a1d103 Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 8837e34 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 281981c Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block f3485c8 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 db873cf Merge branch 'for-linus' of git://neil.brown.name/md eae34c6 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 5bd9c69 Merge branch 'fix/asoc' into for-linus 19b3f31 ALSA: Fix a Oops bug in omap soc driver. 8f55c1e ALSA: hda - Remove non-working headphone control for Dell laptops 9e43f0d ALSA: hda - Add no-jd model for IDT 92HD73xx 85f13b6 ALSA: Revert "ALSA: hda: removed unneeded hp_nid references" d8a0be6 cciss: fix problem that deleting multiple logical drives could cause a panic fa620e9 ALSA: hda - Add quirk for Dell Studio 17 ac5c4e7 drm/i915: GEM on PAE has problems - disable it for now. c4de0a5 drm/i915: Don't return busy for buffers left on the flushing list. a2ed961 md: Don't read past end of bitmap when reading bitmap. 929096f Linux 2.6.28-rc9 59da1f8 Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx 69098ba Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6 b3806c3 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 3653b9a Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 52af894 Maintainer email fixes for inotify 8983fdb avr32: favr-32 build fix de13d28 ATSTK1006: Fix boot from NAND flash c9bc03a Merge branch 'iommu-fixes-2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into x86/urgent 55aab5f x86 gart: don't complain if no AMD GART found e28d832 ALSA: hda - Fix silent HP output on D975 3298a73 bnx2: Fix bug in bnx2_free_rx_mem(). 3e3d0e9 PCI hotplug: ibmphp: Fix module ref count underflow 69c30e1 irda: Add irda_skb_cb qdisc related padding 55dac3a Merge branch 'i2c-fixes' of git://aeryn.fluff.org.uk/bjdooks/linux 0bc77ec Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 3797455 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 5b8bd54 Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 331c313 cifs: fix buffer overrun in parse_DFS_referrals a52519f Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/galak/powerpc 4b4cdf3 STAGING: Move staging drivers back to staging-specific menu aa6f3c6 driver core: add newlines to debugging enabled/disabled messages 09a35ce xilinx_hwicap: remove improper wording in license statement 1c93ca0 driver core: fix using 'ret' variable in unregister_dynamic_debug_module af4b851 USB: pl2303: add id for Hewlett-Packard LD220-HP POS pole display 413ba6f USB: set correct configuration in probe of ti_usb_3410_5052 7c99200 USB: add 5372:2303 to pl2303 24c0996 USB: skip Set-Interface(0) if already in altsetting 0 9a9fafb USB: fix comment about endianness of descriptors c33ba39 USB: Documentation/usb/gadget_serial.txt: update to match driver use_acm behaviour aacf4a0 usbmon: drop bogus 0t from usbmon.txt 7c12414 USB: gadget: fix rndis working at high speed 01ba085 USB: ftdi_sio: Adding Ewert Energy System's CANdapter PID f2ee695 USB: tty: SprogII DCC controller identifiers a4b1880 usb-storage: update unusual_devs entry for Nokia 5310 48e1a54 USB: Unusual devs patch for Nokia 3500c 1393fce USB: storage: unusual_devs.h: Nokia 3109c addition 5413aa4 USB: fix problem with usbtmc driver not loading properly af4d364 powerpc: Fix corruption error in rh_alloc_fixed() 28707af powerpc/fsl-booke: Fix the miss interrupt restore 84df817 AMD IOMMU: panic if completion wait loop fails cf558d2 AMD IOMMU: set cmd buffer pointers to zero manually c1892cb avr32: remove .note.gnu.build-id section when making vmlinux.bin 2fccd28 jme: Fixed a typo e8e5752 net: kernel BUG at drivers/net/phy/mdio_bus.c:165! 878a553 sparc: We need to implement arch_ptrace_stop(). a977218 ocfs2: Add JBD2 compat feature bit. 9a3de25 drivers/net: starfire: Fix napi ->poll() weight handling bb5f133 tlan: Fix pci memory unmapping 83099bc ocfs2: Always update xattr search when creating bucket. cf9b303 x86: re-enable MCE on secondary CPUS after suspend/resume b6adc19 PCI hotplug: acpiphp wants a 64-bit _SUN db9aaf0 PCI: pciehp: fix unexpected power off with pciehp_force b0b801d PCI: fix aer resume sanity check be44f01 i2c-s3c2410: fix check for being in suspend. a804644 i2c-cpm: Detect and report NAK right away instead of timing out a6da74c [SCSI] mpt fusion: clear list of outstanding commands on host reset 83fd5cc AMD IOMMU: allocate rlookup_table with __GFP_ZERO 1bda712 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 7a62b17 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev 3bd8226 Merge branch 'sh/for-2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 eef70b2 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc c095adb mm: Don't touch uninitialized variable in do_pages_stat_array() 3ee89f1 pata_hpt366: no ATAPI DMA bab5b32 pata_hpt366: fix cable detection, d10d491 libata: fix Seagate NCQ+FLUSH blacklist 2c413a6 enc28j60: use netif_rx_ni() to deliver RX packets 8953f12 tlan: Fix small (< 64 bytes) datagram transmissions 092cab7 netfilter: ctnetlink: fix missing CTA_NAT_SEQ_UNSPEC f9d62c0 sh: Disable GENERIC_HARDIRQS_NO__DO_IRQ for unconverted platforms. 93d5463 sh: maple: Do not pass SLAB_POISON to kmem_cache_create() 23e0e8a powerpc/cell/axon-msi: Fix MSI after kexec a4c74dd powerpc: Fix bootmem reservation on uninitialized node 48f797d powerpc: Check for valid hugepage size in hugetlb_get_unmapped_area a3dd154 Merge master.kernel.org:/home/rmk/linux-2.6-arm 7004405 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 d2ff911 Define smp_call_function_many for UP 307257c cgroups: fix a race between rmdir and remount 38aefbc ACPI toshiba: only register rfkill if bt is enabled 6dc7516 eCryptfs: Update maintainers 5e18e2b slob: do not pass the SLAB flags as GFP in kmem_cache_create() 35024c3 pcmcia: blackfin: fix bug - add missing ; to MODULE macro 1ada144 [ARM] 5348/1: fix documentation wrt location of the alignment trap interface 67306da [ARM] Ensure linux/hardirqs.h is included where required 4798a2b Phonet: keep TX queue disabled when the device is off eb9b851 SCHED: netem: Correct documentation comment in code. be70ed1 netfilter: update rwlock initialization for nat_table cefb3d0 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/galak/powerpc ae8d04e x86 Fix VMI crash on boot in 2.6.28-rc8 ca7e716 Revert "sched_clock: prevent scd->clock from moving backwards" 3909845 [ARM] fix kernel-doc syntax 442a902 [ARM] arch/arm/common/sa1111.c: Correct error handling code 25a41b2 ieee1394: add quirk fix for Freecom HDD e5e774d powerpc/fsl-booke: Fix problem with _tlbil_va being interrupted 02bd349 [SCSI] scsi_lib: only call scsi_unprep_request() under queue lock 5279585 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx 68b32d4 Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6 8d9c02e Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block fae1aa4 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 1c55f18 console ASCII glyph 1:1 mapping f75bc06 unicode table for cp437 6d8a52d MIPS: IP32: Update defconfig 11531ac MIPS: Add missing calls to plat_unmap_dma_mem. 00ace20 MIPS: Kconfig: Fix the arch-specific header path b6354db MIPS: Use EI/DI for MIPS R2. febd7a5 Commands needing to be retried require a complete re-initialization. ec8f237 netlabel: Compiler warning and NULL pointer dereference fix 30bb0e0 e1000e: fix double release of mutex 9f3eefc powerpc/40x: Add proper BOOTCFLAGS for cuboot-acadia 2b895c3 i2c-highlander: Trivial endian casting fixes d9d38ca i2c-pmcmsp: Fix endianness misannotation 674a0a6 [ARM] 5341/2: there is no copy_page on nommu ARM 6c34bc2 Revert "radeonfb: accelerate imageblit and other improvements" bb49eed IA64: HP_SIMETH needs to depend upon NET 8b1fae4 Linux 2.6.28-rc8 f9fc05e Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip b88ed20 fix mapping_writably_mapped() f4fd2c5 Merge branch 'to-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/frob/linux-2.6-roland 711a49a lib/idr.c: Fix bug introduced by RCU fix c7f8d6f MN10300: Give correct size when reserving interrupt vector table 54b71fb MN10300: Fix __put_user_asm8() 24646bd MN10300: Fix the preemption resume_kernel() routine a8893fb MN10300: Discard low-priority Tx interrupts when closing an on-chip serial port cb32898 MN10300: vmlinux.lds.S cleanup - use PAGE_SIZE, PERCPU macros 4e6f2ba Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 44f6cc3 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 061afe9 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 942c88c Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus cba7671 pktcdvd: remove broken dev_t export of class devices cdcb30b Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 c1ab6cc drivers/video/mb862xx/mb862xxfb.c: fix printk 9c24624 KSYM_SYMBOL_LEN fixes 6ee5a39 inotify: fix IN_ONESHOT unmount event watcher aa6f147 atomic: fix a typo in atomic_long_xchg() 80bba12 mm: no get_user/put_user while holding mmap_sem in do_pages_stat? 52b9582 drivers/serial/s3c2440.c: fix typo in MODULE_LICENSE 49c5034 pagemap: fix 32-bit pagemap regression 653d22c page_cgroup should ignore empty nodes cc61686 rtc twl4030: rename ioctl function when RTC_INTF_DEV=n beaa486 fbcon: fix workqueue shutdown 6841c8e mm: remove UP version of lru_add_drain_all() 02d2116 revert "percpu_counter: new function percpu_counter_sum_and_set" 71c5576 revert "percpu counter: clean up percpu_counter_sum_and_set()" fd3d664 percpu_counter: fix CPU unplug race in percpu_counter_destroy() fe102c7 rtc: fix missing id_table in rtc-ds1672 and rtc-max6900 drivers fbb5b7a relayfs: fix infinite loop with splice() 3613712 uml: boot broken due to buffer overrun 69fc208 mm/backing-dev.c: remove recently-added WARN_ON() 6a0fcbb crypto: api - Disallow cryptomgr as a module if algorithms are built-in 1d1dc5e firewire: fw-ohci: fix IOMMU resource exhaustion 7b363e4 netpoll: fix race on poll_list resulting in garbage entry 85f3346 tracehook: exec double-reporting fix 24fc7b8 ipv6: silence log messages for locally generated multicast fbf0229 sungem: improve ethtool output with internal pcs and serdes 2a42d9d PCIe: ASPM: Break out of endless loop waiting for PCI config bits to switch 3b5dd45 PCI: stop leaking 'slot_name' in pci_create_slot 98873f5 MIPS: Better than nothing implementation of PCI mmap to fix X. ff740fb [IA64] SN: prevent IRQ retargetting in request_irq() ec9a13c ieee1394: node manager causes up to ~3.25s delay in freezing tasks 9a2bd24 sched: CPU remove deadlock fix 3c0db89 [IA64] Fix section mismatch ioc3uart_init()/ioc3uart_submodule ecdbc69 [IA64] Clear up section mismatch for ioc4_ide_attach_one. 8704ad8 [IA64] Clear up section mismatch with arch_unregister_cpu() 6882edc [IA64] Clear up section mismatch for sn_check_wars. 9877e7b [IA64] Updated the generic_defconfig to work with the 2.6.28-rc7 kernel. 023a407 [IA64] Fix GRU compile error w/o CONFIG_HUGETLB_PAGE 6afc9be [IA64] eliminate NULL test and memset after alloc_bootmem fc10212 [IA64] remove BUILD_BUG_ON from paravirt_getreg() 437f2f9 Merge master.kernel.org:/home/rmk/linux-2.6-arm 4d9c6a2 Merge git://git.infradead.org/mtd-2.6 b749e3f Merge branch 'audit.b59' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current 6f8e5850 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev 21283f0 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 cdf0c7d Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc f317974 radeonfb: Disable new color expand acceleration unless explicitely enabled 5745803 [SCSI] ibmvstgt: move crq_queue_create to the end of initialization 8d3a564 tcp: tcp_vegas cong avoid fix 8c83f80 sungem: Make PCS PHY support partially work again. 48887e6 [PATCH] fix broken timestamps in AVC generated by kernel threads 7f0ed77 [patch 1/1] audit: remove excess kernel-doc 0b0c940 [PATCH] asm/generic: fix bug - kernel fails to build when enable some common audit code on Blackfin a64e649 [PATCH] return records for fork() both to child and parent a3f0711 [PATCH] Audit: make audit=0 actually turn off audit e3389cb ata: Fix experimental tags b604958 pata_ninja32: update ID table e33ba2c pata_sis: Remove bogus cable match 9ac6212 ATA: piix, fix pointer deref on suspend 2456eb8 pata_hpt366: fix clock detection b60678a drm/i915: Disable the GM965 MSI errata workaround. 15c3533 drm/i915: Don't return error in evict_everything when we get to the end. fae7043 drm/radeon: don't actually enable the IRQ regs until irq is enabled ab44f46 Merge branch 'merge' of master.kernel.org:/pub/scm/linux/kernel/git/galak/powerpc into merge f7a8db8 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 6f84b4d Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 7f336bf Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 a4f4d6d EXPORTFS: handle NULL returns from fh_to_dentry()/fh_to_parent() a06d568 async_xor: dma_map destination DMA_BIDIRECTIONAL 5384657 ide: build-fix for CONFIG_BLK_DEV_IDEDMA_PMAC=n 1a65988 Revert "ide: respect current DMA setting during resume" 087052b x86: fix default_spin_lock_flags() prototype b8d9905 AMD IOMMU: __unmap_single: check for bad_dma_address instead of 0 8ad909c AMD IOMMU: fix WARN_ON in dma_ops unmap path 24f8116 AMD IOMMU: fix typo in comment 3cc3d84 AMD IOMMU: fix loop counter in free_pagetable function bb9d4ff AMD IOMMU: fix iommu_map_page function c49b9f2 tproxy: fixe a possible read from an invalid location in the socket match baa745a [ARM] Fix alignment fault handling for ARMv6 and later CPUs 794baba [ARM] 5340/1: fix stack placement after noexecstack changes 0a0755c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 218d11a Fix a race condition in FASYNC handling f2f1fa7 Enforce a minimum SG_IO timeout 24920a7 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 2289e66 drivers/message/i2o/iop.c: cleanup kerneldoc 5e33330 Fix incorrect use of loose in i2o_block.c c4f0124 Fix incorrect use of loose in tty/serial drivers f10a3a3 Revert "ACPI: battery: Convert discharge energy rate to current properly" 640d17d powerpc/virtex5: Fix Virtex5 machine check handling 8ebcfc8 MIPS: Fix incorrect use of loose in vpe.c cde6901 zd1211rw: use unaligned safe memcmp() in-place of compare_ether_addr() 5cf12e8 mac80211: use unaligned safe memcmp() in-place of compare_ether_addr() b8ddafd ipw2200: fix netif_*_queue() removal regression 40a9a82 iwlwifi: clean key table in iwl_clear_stations_table function bbeba4c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/bdev 6df944c Merge branch 'drm-gem-update' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 341e558 Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/galak/powerpc aaad077 ACPI: Fix ACPI battery regression introduced by commit 558073 4857339 Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 0efcafb Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 e948990 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2b218ae Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 3b666ce Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 56d18e9 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 1cb434b Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs 576a488 [XFS] Fix hang after disallowed rename across directory quota domains a6af2d6 tcp: tcp_vegas ssthresh bug fix b2c2717 powerpc/83xx: Enable FIXED_PHY in mpc834x_itx and mpc83xx defconfigs f706644 can: omit received RTR frames for single ID filter lists 17b24b3 ATM: CVE-2008-5079: duplicate listen() on socket corrupts the vcc table c6cb4df MIPS: Return ENOSYS from sys32_syscall on 64bit kernels like elsewhere. 8d13cb2 MIPS: 64-bit: vmsplice needs to use the compat wrapper for o32 and N32. 08d3087 MIPS: o32: Fix number of arguments to splice(2). 566a3b9 MIPS: Malta: Consolidate platform device code. 3e27cce MIPS: IP22, Fulong, Malta: Update defconfigs. 192cc7f MIPS: Malta: Add back RTC support e807f95 MIPS: Fix potential DOS by untrusted user app. 410d2c8 sparc64: Sync FPU state in VIS emulation handler. 9adc138 x86: fix early panic with boot option "nosmp" 2cbed89 [PATCH] fix bogus argument of blkdev_put() in pktcdvd fc9161e [PATCH 2/2] documnt FMODE_ constants fd4ce1a [PATCH 1/2] kill FMODE_NDELAY_NOW ebbefc0 [PATCH] clean up blkdev_get a little bit 1c92560 [PATCH] Fix block dev compat ioctl handling 50c396d [PATCH] kill obsolete temporary comment in swsusp_close() 94fc733 [ARM] 5339/1: fix __fls() on ARM 6c9bacb time: catch xtime_nsec underflows and fix them 2cc002c netx-eth: initialize per device spinlock f8269a4 tcp: make urg+gso work for real this time 5176da7 enc28j60: Fix sporadic packet loss (corrected again) bd09141 hysdn: fix writing outside the field on 64 bits 1c594c0 b1isa: fix b1isa_exit() to really remove registered capi controllers 726c12f sparc64: Fix VIS emulation bugs 0235439 drm/i915: Return error in i915_gem_set_to_gtt_domain if we're not in the GTT. ac94a96 drm/i915: Retry execbuffer pinning after clearing the GTT 646f0f6 drm/i915: Move the execbuffer domain computations together c0d9082 drm/i915: Rename object_set_domain to object_set_to_gpu_domain e47c68e drm/i915: Make a single set-to-cpu-domain path and use it wherever needed. 2ef7eea drm/i915: Make a single set-to-gtt-domain path. b670d81 drm/i915: If interrupted while setting object domains, still emit the flush. ce44b0e drm/i915: Move flushing list cleanup from flush request retire to request emit. a7f014f drm/i915: Respect GM965/GM45 bit-17-instead-of-bit-11 option for swizzling. 004b50f MN10300: Introduce barriers to replace removed volatiles in gdbstub 16550 driver 8711cca MAINTAINERS: Add security subsystem maintainer b0b42b1 dmaengine: protect 'id' from concurrent registrations 532d3b1 ioat: wait for self-test completion e8e8e80 sparc: asm/bitops.h should define __fls d253eee can: Fix CAN_(EFF|RTR)_FLAG handling in can_filter bd7df21 Phonet: do not dump addresses from other namespaces 66a05d6 Merge branch 'oprofile-for-tip' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile into x86/urgent 3d337c6 x86/oprofile: fix Intel cpu family 6 detection d3acf02 [SCSI] libiscsi REGRESSION: fix passthrough support with older iscsi tools b21227c [SCSI] aacraid: disable Dell Percraid quirk on Adaptec 2200S and 2120S 9ea84ad oprofile: fix CPU unplug panic in ppro_stop() c36910c Merge branch 'iommu-fixes-2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into x86/urgent 09ee17e AMD IOMMU: fix possible race while accessing iommu->need_sync f91ba19 AMD IOMMU: set device table entry for aliased devices eac9fbc AMD IOMMU: struct amd_iommu remove padding on 64 bit e93f1be [MTD] [NAND] fix OOPS accessing flash operations over STM flash on PXA 2019554 check_hung_task(): unsigned sysctl_hung_task_warnings cannot be less than 0 70d7d35 x86: fix broken flushing in GART nofullflush path ee4ee52 sparc64: Fix bug in PTRACE_SETFPREGS64 handling. d25830e netlabel: Fix a potential NULL pointer dereference efba018 bnx2: Add workaround to handle missed MSI. d5654ef xfrm: Fix kernel panic when flush and dump SPD entries 82676d7 [ARM] Orion: fix bug in pcie configuration cycle function field mask d947629 [MTD] [NAND] drivers/mtd/nand/pasemi_nand.c: Add missing pci_dev_put 020f970 [ARM] omap: fix a pile of issues 02d43b1 documentation: local_ops fix on_each_cpu 4371453 sched: don't export sched_mc_power_savings in laptops 7b1dedc x86: fix dma_mapping_error for 32bit x86 29b6586 [MTD] [NAND] fsl_upm: fix build problem with 2.6.28-rc2 3136e90 [MTD] physmap: fix memory leak on physmap_flash_remove by using devres 7854643 [MTD] m25p80: chip erase != block erase != sector erase 9168ab8 [MTD] m25p80: fix detection of m25p16 flashes a3d3f73 [MTD] m25p80: fix detection of SPI parts cbbd695 [MTD] [NAND] OMAP: OneNAND: header file relocation (part 2) eccdaea posix-cpu-timers: fix clock_gettime with CLOCK_PROCESS_CPUTIME_ID fe87535 [MTD] [NAND] OMAP: OneNAND: header file relocation 1054626 avr32: Enable pullup on USART TX lines from 4d9d4ebf5de848e3450e23e4db9ac74e23e5daa6 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit efc557570dc99b46e46a7be51c3c7402b485e829 Author: Christoph Hellwig Date: Wed Dec 17 12:27:36 2008 -0500 [XFS] avoid memory allocations in xfs_fs_vcmn_err xfs_fs_vcmn_err can be called under a spinlock, but does a sleeping memory allocation to create buffer for it's internal sprintf. Fortunately it's the only caller of icmn_err, so we can merge the two and have one single static buffer and spinlock protecting it. While we're at it make sure we proper __attribute__ format annotations so that the compiler can detect mismatched format strings. Reported-by: Alexander Beregalov Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen Signed-off-by: Lachlan McIlroy commit 9f6c92b9cc2fd41d6c7b493be5637cc5b5659880 Author: Lachlan McIlroy Date: Mon Dec 22 17:56:49 2008 +1100 [XFS] Fix speculative allocation beyond eof Speculative allocation beyond eof doesn't work properly. It was broken some time ago after a code cleanup that moved what is now xfs_iomap_eof_align_last_fsb() and xfs_iomap_eof_want_preallocate() out of xfs_iomap_write_delay() into separate functions. The code used to use the current file size in various checks but got changed to be max(file_size, i_new_size). Since i_new_size is the result of 'offset + count' then in xfs_iomap_eof_want_preallocate() the check for '(offset + count) <= isize' will always be true. ie if 'offset + count' is > ip->i_size then isize will be i_new_size and equal to 'offset + count'. This change fixes all the places that used to use the current file size. Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 4fdc7781799926dca6c3a3bb6e9533a9718c4dea Author: Lachlan McIlroy Date: Mon Dec 22 17:52:58 2008 +1100 [XFS] Remove XFS_BUF_SHUT() and friends Code does nothing so remove it. Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit d415867e0abc35e3b2f0d4196e98c339d6fe29a2 Author: Lachlan McIlroy Date: Mon Dec 22 17:50:56 2008 +1100 [XFS] Use the incore inode size in xfs_file_readdir() We should be using the incore inode size here not the linux inode size. The incore inode size is always up to date for directories whereas the linux inode size is not updated for directories. We've hit assertions in xfs_bmap() and traced it back to the linux inode size being zero but the incore size being correct. Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 27a0464a6cb837d3a90b6e69365dfc01cb0dff2f Merge: 4d9d4ebf5de848e3450e23e4db9ac74e23e5daa6 3d44cc3e01ee1b40317f79ed54324e25c4f848df Author: Lachlan McIlroy Date: Mon Dec 22 17:34:26 2008 +1100 [XFS] Fix merge conflict in fs/xfs/xfs_rename.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Conflicts: fs/xfs/xfs_rename.c Signed-off-by: Lachlan McIlroy ----------------------------------------------------------------------- Summary of changes: Documentation/arm/mem_alignment | 2 +- Documentation/local_ops.txt | 2 +- Documentation/sound/alsa/ALSA-Configuration.txt | 2 + Documentation/usb/gadget_serial.txt | 4 +- Documentation/usb/proc_usb_info.txt | 6 +- Documentation/usb/usbmon.txt | 12 +- MAINTAINERS | 21 +- Makefile | 2 +- arch/arm/common/sa1111.c | 2 +- arch/arm/include/asm/bitops.h | 16 +- arch/arm/include/asm/processor.h | 2 +- arch/arm/kernel/armksyms.c | 4 +- arch/arm/kernel/traps.c | 1 + arch/arm/mach-omap1/io.c | 2 +- arch/arm/mach-pxa/include/mach/reset.h | 5 +- arch/arm/mm/alignment.c | 26 +- arch/arm/mm/fault.c | 1 + arch/arm/plat-omap/include/mach/omapfb.h | 4 +- arch/arm/plat-omap/sram.c | 8 +- arch/arm/plat-orion/pcie.c | 2 +- arch/avr32/boards/favr-32/flash.c | 2 +- arch/avr32/boards/favr-32/setup.c | 8 +- arch/avr32/boot/images/Makefile | 2 +- arch/avr32/configs/atstk1006_defconfig | 134 ++- arch/avr32/mach-at32ap/at32ap700x.c | 8 +- arch/ia64/configs/generic_defconfig | 218 ++++-- arch/ia64/hp/sim/Kconfig | 1 + arch/ia64/include/asm/paravirt_privop.h | 1 - arch/ia64/kernel/topology.c | 4 +- arch/ia64/sn/kernel/irq.c | 9 +- arch/ia64/sn/kernel/setup.c | 9 +- arch/mips/Kconfig.debug | 2 +- arch/mips/configs/fulong_defconfig | 921 ++++++++++++-------- arch/mips/configs/ip22_defconfig | 518 ++++++++---- arch/mips/configs/ip32_defconfig | 1060 +++++++++++++---------- arch/mips/configs/malta_defconfig | 631 +++++++++----- arch/mips/include/asm/asmmacro.h | 10 + arch/mips/include/asm/pci.h | 5 + arch/mips/kernel/scall32-o32.S | 7 +- arch/mips/kernel/scall64-n32.S | 2 +- arch/mips/kernel/scall64-o32.S | 16 +- arch/mips/kernel/vpe.c | 2 +- arch/mips/mm/dma-default.c | 3 + arch/mips/mti-malta/Makefile | 5 +- arch/mips/mti-malta/malta-mtd.c | 63 -- arch/mips/mti-malta/malta-platform.c | 107 ++- arch/mips/pci/pci.c | 24 + arch/mn10300/kernel/entry.S | 3 +- arch/mn10300/kernel/gdb-io-serial.c | 2 + arch/mn10300/kernel/mn10300-serial.c | 5 + arch/mn10300/kernel/setup.c | 2 +- arch/mn10300/kernel/vmlinux.lds.S | 22 +- arch/powerpc/boot/Makefile | 1 + arch/powerpc/configs/83xx/mpc834x_itx_defconfig | 2 +- arch/powerpc/configs/mpc83xx_defconfig | 2 +- arch/powerpc/kernel/cpu_setup_44x.S | 1 + arch/powerpc/kernel/cputable.c | 3 + arch/powerpc/kernel/misc_32.S | 5 +- arch/powerpc/lib/rheap.c | 1 + arch/powerpc/mm/hugetlbpage.c | 3 + arch/powerpc/mm/numa.c | 16 +- arch/powerpc/platforms/cell/axon_msi.c | 3 + arch/sh/Kconfig | 2 + arch/sparc/include/asm/bitops_32.h | 1 + arch/sparc/include/asm/ptrace_32.h | 10 + arch/sparc/include/asm/ptrace_64.h | 9 + arch/sparc64/kernel/ptrace.c | 2 +- arch/sparc64/kernel/visemul.c | 6 +- arch/um/drivers/mconsole_kern.c | 4 +- arch/x86/include/asm/amd_iommu_types.h | 24 +- arch/x86/include/asm/dma-mapping.h | 6 +- arch/x86/include/asm/topology.h | 2 +- arch/x86/include/asm/vmi.h | 8 +- arch/x86/kernel/amd_iommu.c | 54 +- arch/x86/kernel/amd_iommu_init.c | 7 +- arch/x86/kernel/cpu/mcheck/mce_64.c | 3 - arch/x86/kernel/microcode_core.c | 19 +- arch/x86/kernel/microcode_intel.c | 6 + arch/x86/kernel/mpparse.c | 3 + arch/x86/kernel/paravirt-spinlocks.c | 3 +- arch/x86/kernel/pci-gart_64.c | 6 +- arch/x86/kernel/setup.c | 12 +- arch/x86/kernel/smpboot.c | 2 - arch/x86/kernel/vmi_32.c | 16 +- arch/x86/oprofile/nmi_int.c | 5 +- arch/x86/oprofile/op_model_ppro.c | 4 + block/bsg.c | 2 + block/compat_ioctl.c | 31 +- block/scsi_ioctl.c | 2 + crypto/Kconfig | 36 +- crypto/Makefile | 18 +- crypto/async_tx/async_xor.c | 11 +- drivers/acpi/battery.c | 9 - drivers/acpi/toshiba_acpi.c | 54 +- drivers/ata/Kconfig | 44 +- drivers/ata/ata_piix.c | 9 +- drivers/ata/libata-core.c | 65 ++- drivers/ata/pata_hpt366.c | 16 +- drivers/ata/pata_ninja32.c | 9 +- drivers/ata/pata_sis.c | 1 - drivers/block/cciss.c | 5 + drivers/block/pktcdvd.c | 6 +- drivers/cdrom/cdrom.c | 16 +- drivers/char/cp437.uni | 12 +- drivers/char/serial167.c | 2 +- drivers/char/vt.c | 2 +- drivers/char/xilinx_hwicap/buffer_icap.c | 3 - drivers/char/xilinx_hwicap/buffer_icap.h | 3 - drivers/char/xilinx_hwicap/fifo_icap.c | 3 - drivers/char/xilinx_hwicap/fifo_icap.h | 3 - drivers/char/xilinx_hwicap/xilinx_hwicap.c | 3 - drivers/char/xilinx_hwicap/xilinx_hwicap.h | 3 - drivers/dma/dmaengine.c | 3 + drivers/dma/ioat_dma.c | 5 +- drivers/dma/iop-adma.c | 16 +- drivers/dma/mv_xor.c | 15 +- drivers/firewire/fw-ohci.c | 11 +- drivers/firewire/fw-transaction.c | 3 + drivers/firewire/fw-transaction.h | 2 + drivers/gpu/drm/i915/i915_dma.c | 15 +- drivers/gpu/drm/i915/i915_drv.h | 17 +- drivers/gpu/drm/i915/i915_gem.c | 648 +++++++++----- drivers/gpu/drm/i915/i915_gem_proc.c | 5 +- drivers/gpu/drm/i915/i915_gem_tiling.c | 7 +- drivers/gpu/drm/i915/i915_reg.h | 1 + drivers/gpu/drm/radeon/radeon_drv.h | 1 - drivers/gpu/drm/radeon/radeon_irq.c | 8 +- drivers/i2c/busses/i2c-cpm.c | 1 + drivers/i2c/busses/i2c-highlander.c | 4 +- drivers/i2c/busses/i2c-pmcmsp.c | 2 +- drivers/i2c/busses/i2c-s3c2410.c | 18 +- drivers/ide/Kconfig | 14 +- drivers/ide/ide-io.c | 6 +- drivers/ide/pmac.c | 30 +- drivers/ide/sgiioc4.c | 6 +- drivers/ieee1394/nodemgr.c | 8 + drivers/isdn/hardware/avm/b1isa.c | 6 +- drivers/isdn/hysdn/hysdn_net.c | 4 +- drivers/md/bitmap.c | 22 +- drivers/message/fusion/mptscsih.c | 3 + drivers/message/i2o/i2o_block.c | 2 +- drivers/message/i2o/iop.c | 1 - drivers/misc/sgi-gru/grufault.c | 4 + drivers/mtd/devices/m25p80.c | 28 +- drivers/mtd/maps/physmap.c | 26 +- drivers/mtd/nand/fsl_upm.c | 8 +- drivers/mtd/nand/pasemi_nand.c | 1 + drivers/mtd/nand/pxa3xx_nand.c | 1 + drivers/mtd/onenand/omap2.c | 17 +- drivers/net/bnx2.c | 41 +- drivers/net/bnx2.h | 6 + drivers/net/e1000e/ich8lan.c | 9 +- drivers/net/enc28j60.c | 18 +- drivers/net/jme.h | 2 +- drivers/net/netx-eth.c | 2 + drivers/net/phy/mdio_bus.c | 5 +- drivers/net/starfire.c | 5 + drivers/net/sungem.c | 144 ++-- drivers/net/tlan.c | 23 +- drivers/net/wireless/ipw2200.c | 4 + drivers/net/wireless/iwlwifi/iwl-core.c | 3 + drivers/net/wireless/iwlwifi/iwl-sta.c | 24 +- drivers/net/wireless/zd1211rw/zd_mac.c | 2 +- drivers/pci/hotplug/acpiphp.h | 2 +- drivers/pci/hotplug/acpiphp_core.c | 2 +- drivers/pci/hotplug/acpiphp_glue.c | 4 +- drivers/pci/hotplug/ibmphp_core.c | 5 - drivers/pci/hotplug/pciehp_core.c | 23 +- drivers/pci/pcie/aer/aerdrv_core.c | 2 +- drivers/pci/pcie/aspm.c | 29 +- drivers/pci/slot.c | 1 + drivers/pcmcia/bfin_cf_pcmcia.c | 2 +- drivers/rtc/rtc-ds1672.c | 6 + drivers/rtc/rtc-max6900.c | 6 + drivers/rtc/rtc-twl4030.c | 2 +- drivers/scsi/aacraid/linit.c | 4 +- drivers/scsi/device_handler/scsi_dh_hp_sw.c | 12 +- drivers/scsi/ibmvscsi/ibmvstgt.c | 16 +- drivers/scsi/libiscsi.c | 11 +- drivers/scsi/scsi_lib.c | 2 +- drivers/scsi/sd.c | 2 +- drivers/scsi/sr.c | 2 +- drivers/serial/ioc3_serial.c | 6 +- drivers/serial/mpc52xx_uart.c | 4 +- drivers/serial/s3c2440.c | 2 +- drivers/sh/maple/maple.c | 2 +- drivers/staging/Kconfig | 3 + drivers/usb/class/usbtmc.c | 1 + drivers/usb/core/driver.c | 4 +- drivers/usb/gadget/f_rndis.c | 4 + drivers/usb/serial/ftdi_sio.c | 4 +- drivers/usb/serial/ftdi_sio.h | 6 + drivers/usb/serial/pl2303.c | 2 + drivers/usb/serial/pl2303.h | 8 + drivers/usb/serial/ti_usb_3410_5052.c | 55 +-- drivers/usb/storage/unusual_devs.h | 16 +- drivers/video/aty/radeon_accel.c | 294 ++----- drivers/video/aty/radeon_backlight.c | 2 +- drivers/video/aty/radeon_base.c | 40 +- drivers/video/aty/radeon_pm.c | 6 +- drivers/video/aty/radeonfb.h | 38 +- drivers/video/console/fbcon.c | 6 + drivers/video/mb862xx/mb862xxfb.c | 4 +- drivers/video/omap/omapfb_main.c | 2 +- fs/9p/fid.c | 4 +- fs/9p/v9fs.c | 2 +- fs/9p/vfs_dentry.c | 9 +- fs/9p/vfs_inode.c | 6 +- fs/block_dev.c | 21 +- fs/cifs/cifssmb.c | 3 +- fs/exec.c | 10 +- fs/exportfs/expfs.c | 4 + fs/ext4/balloc.c | 4 +- fs/fcntl.c | 7 + fs/inotify.c | 2 + fs/ioctl.c | 12 +- fs/ocfs2/ocfs2_fs.h | 8 +- fs/ocfs2/xattr.c | 4 +- fs/proc/base.c | 2 +- fs/proc/task_mmu.c | 4 +- fs/xfs/linux-2.6/xfs_buf.h | 4 - fs/xfs/linux-2.6/xfs_file.c | 2 +- fs/xfs/support/debug.c | 37 +- fs/xfs/support/debug.h | 2 - fs/xfs/xfs_buf_item.c | 16 +- fs/xfs/xfs_error.c | 15 - fs/xfs/xfs_error.h | 12 +- fs/xfs/xfs_inode.c | 1 - fs/xfs/xfs_iomap.c | 28 +- include/asm-generic/atomic.h | 2 +- include/asm-generic/audit_write.h | 2 + include/asm-mn10300/uaccess.h | 2 +- include/linux/audit.h | 6 +- include/linux/blkdev.h | 1 + include/linux/can/core.h | 2 +- include/linux/fs.h | 33 +- include/linux/ftrace.h | 3 +- include/linux/netdevice.h | 7 + include/linux/netfilter/nfnetlink_conntrack.h | 1 + include/linux/smp.h | 2 + include/linux/usb/ch9.h | 8 +- include/net/irda/irda_device.h | 4 +- include/video/radeon.h | 18 +- kernel/audit.c | 32 +- kernel/auditsc.c | 24 +- kernel/cgroup.c | 2 +- kernel/fork.c | 16 +- kernel/latencytop.c | 2 +- kernel/posix-cpu-timers.c | 2 +- kernel/posix-timers.c | 6 + kernel/power/swap.c | 2 +- kernel/relay.c | 7 +- kernel/sched.c | 2 + kernel/sched_clock.c | 6 +- kernel/softlockup.c | 2 +- kernel/time/timekeeping.c | 22 + lib/dynamic_printk.c | 6 +- lib/idr.c | 8 +- lib/percpu_counter.c | 7 +- mm/backing-dev.c | 2 +- mm/migrate.c | 59 +- mm/page_cgroup.c | 3 + mm/slob.c | 2 +- mm/slub.c | 2 +- mm/swap.c | 13 - mm/vmalloc.c | 2 +- net/atm/svc.c | 6 +- net/can/af_can.c | 68 ++- net/can/bcm.c | 7 +- net/core/netpoll.c | 2 + net/ipv4/netfilter/nf_nat_rule.c | 2 +- net/ipv4/tcp_output.c | 22 +- net/ipv4/tcp_vegas.c | 82 +-- net/ipv6/ndisc.c | 7 +- net/mac80211/sta_info.c | 2 +- net/netfilter/xt_socket.c | 2 +- net/netlabel/netlabel_unlabeled.c | 48 +- net/phonet/pep-gprs.c | 27 +- net/phonet/pn_netlink.c | 3 + net/sched/sch_netem.c | 3 - net/xfrm/xfrm_policy.c | 1 + sound/pci/hda/patch_sigmatel.c | 20 +- sound/soc/omap/omap-pcm.c | 2 +- 283 files changed, 4432 insertions(+), 2859 deletions(-) delete mode 100644 arch/mips/mti-malta/malta-mtd.c hooks/post-receive -- XFS development tree From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 02:50:58 2008 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 mBM8orFT024828 for ; Mon, 22 Dec 2008 02:50:58 -0600 X-ASG-Debug-ID: 1229935852-7bd3002f0000-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 95CBF3DD4A for ; Mon, 22 Dec 2008 00:50:52 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 9wQHcZthnuQjlH2R for ; Mon, 22 Dec 2008 00:50:52 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEgUx-00078r-Kw; Mon, 22 Dec 2008 08:50:47 +0000 Date: Mon, 22 Dec 2008 03:50:47 -0500 From: Christoph Hellwig To: Pavel Machek Cc: Justin Piszcz , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Alan Piszcz X-ASG-Orig-Subj: Re: Intel X25-E running Linux using XFS Subject: Re: Intel X25-E running Linux using XFS Message-ID: <20081222085047.GA24795@infradead.org> References: <20081212185803.GE11974@elf.ucw.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081212185803.GE11974@elf.ucw.cz> 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: 1229935852 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Fri, Dec 12, 2008 at 07:58:03PM +0100, Pavel Machek wrote: > Actually I'd like to know... how does it behave during powerfails > while it is being written to? I've done various powerfail tests with and X25-M and as expect it behaves perfectly fine as long as you either disable the write cache or use barriers. The default ext3 setup without barriers corrupts the filesystem left, right and center, but that's the same as other recent disk drives with large caches. From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 02:53:44 2008 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 mBM8rir8025280 for ; Mon, 22 Dec 2008 02:53:44 -0600 X-ASG-Debug-ID: 1229936022-7bd500720000-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 DF1343D800 for ; Mon, 22 Dec 2008 00:53:42 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id KAjlMX0QsSQP4j2T for ; Mon, 22 Dec 2008 00:53:42 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEgXH-0007Cx-Of; Mon, 22 Dec 2008 08:53:11 +0000 Date: Mon, 22 Dec 2008 03:53:11 -0500 From: Christoph Hellwig To: Lachlan McIlroy Cc: Christoph Hellwig , xfs-oss X-ASG-Orig-Subj: Re: [Fwd: [PATCH] Fix race in xfs_write() between direct and buffered I/O with DMAPI] Subject: Re: [Fwd: [PATCH] Fix race in xfs_write() between direct and buffered I/O with DMAPI] Message-ID: <20081222085311.GB24795@infradead.org> References: <493779B1.3010703@sgi.com> <20081208225125.GA15647@infradead.org> <493DFDBD.7060909@sgi.com> <20081209092240.GA23915@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081209092240.GA23915@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: 1229936022 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Do you need more input on this one? From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 02:54:27 2008 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 mBM8sQBC025439 for ; Mon, 22 Dec 2008 02:54:27 -0600 X-ASG-Debug-ID: 1229936064-030c001a0000-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 E5D583DD6D for ; Mon, 22 Dec 2008 00:54:24 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id FhPfaLrOcftV29Co for ; Mon, 22 Dec 2008 00:54:24 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEgXy-0007Dh-12; Mon, 22 Dec 2008 08:53:54 +0000 Date: Mon, 22 Dec 2008 03:53:54 -0500 From: Christoph Hellwig To: Lachlan McIlroy Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] Fix off by one error in page_region_mask() Subject: Re: [PATCH] Fix off by one error in page_region_mask() Message-ID: <20081222085354.GC24795@infradead.org> References: <49378B60.1060603@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49378B60.1060603@sgi.com> 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: 1229936064 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Did you guys come to a conclusion in your discussions? From 1020boutique@lubbockenews.com Mon Dec 22 05:40:57 2008 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 mBMBeuPH009882 for ; Mon, 22 Dec 2008 05:40:57 -0600 X-ASG-Debug-ID: 1229946053-5e79037d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.itsamac.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1029C176D754 for ; Mon, 22 Dec 2008 03:40:53 -0800 (PST) Received: from mail.itsamac.com (mail.itsamac.com [216.183.98.6]) by cuda.sgi.com with ESMTP id EMP1KB0jPpU0dYFX for ; Mon, 22 Dec 2008 03:40:53 -0800 (PST) Received: (qmail 20228 invoked by uid 0); 22 Dec 2008 11:40:51 -0000 Received: from crunchy.itsamac.com (HELO www.lubbockenews.com) (postmaster@lubbockenews.com@216.183.98.26) by mail.itsamac.com with ESMTPA; 22 Dec 2008 11:40:51 -0000 Date: Mon, 22 Dec 2008 04:45:05 -0700 To: xfs@oss.sgi.com From: 1020boutique@lubbockenews.com X-ASG-Orig-Subj: Hurry! Last Chance to Stop by the 10-20 Boutique for the 12 Days of Christmas! Subject: Hurry! Last Chance to Stop by the 10-20 Boutique for the 12 Days of Christmas! Message-ID: <44e4512041324b79f8769abde4c93f9f@www.lubbockenews.com> X-Priority: 3 X-Mailer: PHPMailer [version 1.73] X-Mailer: phplist v2.10.5 X-MessageID: 199 X-ListMember: xfs@oss.sgi.com Precedence: bulk MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="b1_44e4512041324b79f8769abde4c93f9f" X-Barracuda-Connect: mail.itsamac.com[216.183.98.6] X-Barracuda-Start-Time: 1229946055 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0778 1.0000 -1.5275 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.68 X-Barracuda-Spam-Status: No, SCORE=0.68 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=EXTRA_MPART_TYPE, HTML_IMAGE_ONLY_24, HTML_MESSAGE, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13355 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 EXTRA_MPART_TYPE Header has extraneous Content-type:...type= entry 0.00 NO_REAL_NAME From: does not include a real name 2.21 HTML_IMAGE_ONLY_24 BODY: HTML: images with 2000-2400 bytes of words 0.00 HTML_MESSAGE BODY: HTML included in message --b1_44e4512041324b79f8769abde4c93f9f Content-Type: multipart/alternative; boundary="b2_44e4512041324b79f8769abde4c93f9f" --b2_44e4512041324b79f8769abde4c93f9f Content-Type: text/plain; charset = "UTF-8" Content-Transfer-Encoding: 8bit -- To unsubscribe from this list visit http://www.lubbockenews.com/lists/?p=unsubscribe&uid=57ffea2354473eaa1afc6aa401aa0a46 To update your preferences visit http://www.lubbockenews.com/lists/?p=preferences&uid=57ffea2354473eaa1afc6aa401aa0a46 -- Powered by PHPlist, www.phplist.com -- --b2_44e4512041324b79f8769abde4c93f9f Content-Type: text/html; charset = "UTF-8" Content-Transfer-Encoding: 8bit



--
To unsubscribe from this list visit this link

To update your preferences visit this link

Powered by PHPlist2.10.5, © tincan ltd

--b2_44e4512041324b79f8769abde4c93f9f-- --b1_44e4512041324b79f8769abde4c93f9f Content-Type: image/png; name="powerphplist.png" Content-Transfer-Encoding: base64 Content-ID: <5af23375f1830fbd427acd979fe1e25d> Content-Disposition: inline; filename="powerphplist.png" iVBORw0KGgoAAAANSUhEUgAAAEYAAAAeCAMAAACmLZgsAAADAFBMVEXYx6fm fGXfnmCchGd3VDPipmrouYIHBwe3qpNlVkTmcWHdmFrfRTeojW3IpXn25L7m o3TaGhe6mXLCmm+7lGnntn7sx5Sxh1usk3akdEfBiFPtyJfgo2bjqW7krnTj qnDproK1pInvODRRTEKFemnuzaAtIRXenF7KqIHfn2KHcVjtyZjnqHrnknLh pGjnt4HeMyzlnnHr1rLkmW3WAADllGuUfmPcKSMcFxLnuICUd1f037kqJiDq v47sxZLYAQHLtJLfOTI7KhrInnHqwY7hTUHz2rGDbVTz27Xkr3XJvKPng3Hu ypzouoPrwo/hXk3x1qzqwIvizavrwpDu0atqYVTqnoBdTz7QlFvqtYbgST14 cWPar33hYkrw0qZKQjjdml12XkPSv52NhHPovIjjrHLZDQz03bbsxZHcq3fg QjsUEg92YUmUinjgpGbvz6PZtYjcp3Tr2bWEaUzz3LXx1KhFOi7pvojy2K31 4rzjvYzjf2EwLCbw0qRvUzb25MBoSi3gomXdmFvlsXhBOzIiHxrw06i8oHzx 1qrqwIvmjWt4aVaFXjnopHzuy5724r/supM5Myzeml3qv4rx1Kbou4bmuYTo soHhyaTipWngoWTmtHvms3rjrXLmsn2yf07OkFf137zsx5bw1KvmsXjoq33u zqTsxpTouojdl1vlZlvswpDy16rDtZrkbFq3jmHhUUXhpmrbHxriX0/lsnri rnf14r/ty6BZPiXouYflsnjmsXvimmZaQSjiqGvipmnhpmn2473msnjovIbt x5nem13w0aRKNCDipWrrw5TsvY7qvokODArhWUnqwI/ip2vemVzlpnTrw5Hj q3Dy17Dihl/xSUPvbl3Nu53gUEPfQDPhpWnlh2nwi3ToiXDouYXt27n03LO1 nX3bFBHjlmbaCAnroHXYCAfBs5fWqXXsxZbnwIzjYFPrw5Ddwp3pvYyUaD7O n27RpnjXpXDswJTWpG/gsn3lwJHy4Lv037jiaFbdmVzcl1kDAgEEAwIAAACJ JzCsAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1F B9MKFQolCwe/95QAAAXuSURBVHicrZF5XJJ3HMdVHodmZhcmCqbzRFNRSbGp CHk2tF46y6yQyiup7LDDpSlgpoVmHjNAXi3TWs0Oj8qt0qxJxyhn1LZga1u2 tVou290In31/D7j197YPz+/7+x6/75vv83ssjP9B4xMyWhhf/msxgtSg0sbr swEjMRgkBomdBIzBYGdnkIDszLvElJWgwPBSAsljEELCDtYxxQfq0lKBQPBR DmAg+4lBKBQaTDLtQskrvrlEEImakChJAAMQdSWBGRTW1/NwvFco0+Dlg2zn MfxdWS8kcCqs3noMLAaG7TxYXw++TOg9Vu89NjhYL6S9pxaoS9WCJ+ilfEA8 qjPurDmYwZP1ysp5Y+UyHhWyuI8z7oNhPoPIYL0+VpCRXfU5yMauoqZB/bPK RoGgcct1OmCsQPDn5VSelRWGjZXzqJh3BprGCs1hhaahYpgVKpsyVpgmAzUx Zl/fglT5rNNoMc4A8agMBprGW5bB4zF43kSCgTOuYgwMAw8MdpHIOOMMBpWH ehi0Hq8tjYBRB+nHLcYVCrGYR1UoFOhuxApvTMwrV5juRpGhOThxN97OcA78 iwoxlScWQ0DPrkTDVPGlNMDQaOvXw6LRaIGwiIDY//aJKvLEYhSKaaYTnT38 RR1VVR1VUVqE0ev1crn+kvwa2uR6faD8kt5ajrL6TnD1+v5+eScq6C/p+/X6 a4HyQDjZL3eNquyo6ujYfoTSh17Kum9oaMh6CJk+a2LvG0LORDRR7YODKI3O w6P6qnA70qI06dAQYOiguVwOh8XisOIe0ukPdRwiYN6l980jizZDuY9OnyUa 37mRPmMr3A5OJv06DzYjWmyvoBw6HTBarbaGy8qNO/m0ixUXqtVe0HFyM/9c GM7q+k4bRtYkaAnNEuE7Z/+0BI9cuzIL9/t5VuTW/WScXVHhESWFKmBcVapu TteO4ODQyazTD1WqC5M53Jrh0Ls61mdrSGRRgkqVo1KpTrHHN6tI5P0znj+f bz//zPLdMe6RRtuYGF+Ka46rK2CSkpK6WN3DsOlYmcFJScM6TkEzRDtYr28k aUR+SYQAM+/MXtyWCFqya+PjD5QY98bXJktRAjA9UimTdTNYer69m3lyTtv5 dpjGra1t6grWp2sQRnpZ2vZhG5pGGkYuCZv5/HHErSPx8dtXleDp57KVUunl y1LAtLQovxh5tHBPwP1JTyfd3xMQEMcpCJi6Z8Ujzpc98FJ+SqWyRak8xTau 7PHNwvEs2wSnA0XfxMcjzDMKdCtbWgBDoVCab+bC1+HkjnwLhjuZU5A5DRzd UgrCUAjNBMxvlOklIg18oNUheXlFgLENMhUpgIkANVsyR6Z1MbnMrpHwe5mc gnvhuUzL8xERYSKRXwQhhHkc9NoGXyfPrHGNTV5eHsJQgkxVwCQjBbWHBs+1 PP7m3KnDoXGcuIA5oXMokCYBBpVfSwbM2uXZsfy3QkJSPfBlIS+KYiJhGlMx GTBXmsxyOz3teHBTUztMU9fUlIxSJBGbZCpOFxnX/n4uNeSNFy+KbPH0TYlH fOGDv0PUrjQB5uNtZjXrWKdrtm0DDLcOQpQniTTpTvb29k5TprPHw0IWpC+z WXViNVtjk+h1ewpM02RuBUw1oYbqajcuK7Omurpdx2HWNVQTvzANrimJ3LWr xG+3CF/99Toc3+9RgZM9U2tvV0/ZhS/JJjobGgATa1JK7NLu8JNuKbFucSxu XYop6VQRCRDAeH6eVbJu04JlWRB7eP7ofzv2lm9WZMIPRGNsLGBGzUqLag9w i0obvbE43PKX0bTR0ZSU0Q0PnB48cHd3t7HY9L27xR/FxaknFthYeLnkp6Sl vb3b3tfUmfI+YKKj8/OjzYawTxbfAHvU0cW/trDyTuKhfQ4DDsUDoOJiB4fi RAG/NRrq+eY24gGMI6GjaCE5tjq2+vvzvQoFiwgEaMBhYADtDmVnEyu9+HCG OPhPYytgXMzyh2Z+ba1Xobry8J3EvENny8rKHF5V2b7Ew4V8l1fkb+5zAcz/ or8Ag3ozZFZX3G0AAAAASUVORK5CYII= --b1_44e4512041324b79f8769abde4c93f9f-- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 07:01:07 2008 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 mBMD16Ym016686 for ; Mon, 22 Dec 2008 07:01:07 -0600 X-ASG-Debug-ID: 1229950864-413201d80000-w1Z2WR 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 78E5F1B9D4F9 for ; Mon, 22 Dec 2008 05:01:05 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id tpmPQIzcAgjWTh1b for ; Mon, 22 Dec 2008 05:01:05 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEkP9-0005hn-Ui; Mon, 22 Dec 2008 13:01:03 +0000 Date: Mon, 22 Dec 2008 08:01:03 -0500 From: Christoph Hellwig To: Ales Zelinka Cc: linux-xfs@oss.sgi.com, Andreas Gruenbacher X-ASG-Orig-Subj: Re: [RFE] --reference option for setfattr Subject: Re: [RFE] --reference option for setfattr Message-ID: <20081222130103.GA12367@infradead.org> References: <49101B02.60004@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49101B02.60004@redhat.com> 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: 1229950865 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Tue, Nov 04, 2008 at 10:50:58AM +0100, Ales Zelinka wrote: > currently when I want to copy all extended attributes from one file to > another, I have to use ugly command like this: > > getfattr --dump -m '-' /etc/samba/smb.conf |sed 's;file: > etc/samba/smb.conf;file: /tmp/smb.conf;'| setfattr --restore=- > > Would you please implement --reference=some_file option that will read > all extended attributes set on some_file and set them on pathname? > > The previous use case would then look like this: > > setfattr --reference=/etc/samba/smb.conf /tmp/smb.conf > > Other commands from file-attributes-manipulation familly already have > parameter like this (chmod, chown, chcon,...) This feature seems useful to me, any chance you could try coming up with a patch? From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 07:02:04 2008 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 mBMD240a016817 for ; Mon, 22 Dec 2008 07:02:04 -0600 X-ASG-Debug-ID: 1229950922-64dd02fe0000-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 447193E716 for ; Mon, 22 Dec 2008 05:02:03 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id hA4EPXgl4h4b5BFE for ; Mon, 22 Dec 2008 05:02:02 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEkQ6-0000fO-KV; Mon, 22 Dec 2008 13:02:02 +0000 Date: Mon, 22 Dec 2008 08:02:02 -0500 From: Christoph Hellwig To: "Josef 'Jeff' Sipek" Cc: Christoph Hellwig , XFS Mailing List X-ASG-Orig-Subj: Re: [PATCH] XFS: random cleanups of xfs_swap_extents Subject: Re: [PATCH] XFS: random cleanups of xfs_swap_extents Message-ID: <20081222130202.GB12367@infradead.org> References: <20081107230054.GH26208@josefsipek.net> <20081112100958.GB32567@infradead.org> <20081112153903.GE27125@josefsipek.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081112153903.GE27125@josefsipek.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: 1229950923 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Wed, Nov 12, 2008 at 10:39:03AM -0500, Josef 'Jeff' Sipek wrote: > > With the one case that does a trans_cancel with partially unlocked > > inodes handcoding most of it. > > Ok, I'll do that. Did you manage to actually do it? :) From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 07:08:27 2008 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_55 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 mBMD8Qs9017619 for ; Mon, 22 Dec 2008 07:08:27 -0600 X-ASG-Debug-ID: 1229951305-68c4032a0000-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 AF54F3EB6C for ; Mon, 22 Dec 2008 05:08:25 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id RwSlie1GTiaot522 for ; Mon, 22 Dec 2008 05:08:25 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEkWG-0005a1-RC; Mon, 22 Dec 2008 13:08:24 +0000 Date: Mon, 22 Dec 2008 08:08:24 -0500 From: Christoph Hellwig To: Matthew Kent Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: couple small xfstest patches Subject: Re: couple small xfstest patches Message-ID: <20081222130824.GC12367@infradead.org> 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-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: 1229951305 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Fri, Nov 21, 2008 at 01:45:23PM -0800, Matthew Kent wrote: > * 189 fails with external devices > * add a unified diff output option, find it easier on the eyes ;) Thanks, I'll put these into my queue. Question to the list: any arguments against just making unified diffs the default for xfsqa output? > > Thanks! > -- > Matthew Kent > http://magoazul.com > --- xfs-cmds/xfstests/common.orig 2008-11-21 13:19:47.000000000 -0800 > +++ xfs-cmds/xfstests/common 2008-11-21 13:22:04.000000000 -0800 > @@ -107,7 +107,7 @@ > -nfs test NFS > -l line mode diff (default) > -xdiff graphical mode diff > - -diffu show unified diff > + -udiff show unified diff > -n show me, do not run tests > -q quick [deprecated] > -T output timestamps > @@ -158,7 +158,7 @@ > fi > ;; > > - -diffu) # show unified diff > + -udiff) # show a unified diff > xpand=false > diff="$diff -u" > ;; > --- xfs-cmds/xfstests/189.orig 2008-11-21 13:43:33.000000000 -0800 > +++ xfs-cmds/xfstests/189 2008-11-21 13:42:48.000000000 -0800 > @@ -188,8 +188,8 @@ > _need_to_be_root > _require_scratch > > -unset SCRATCH_OPTIONS > -unset MOUNT_OPTIONS > +unset SCRATCH_RTDEV > +unset SCRATCH_LOGDEV > > _scratch_mkfs_xfs | _filter_mkfs 2>/dev/null > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs ---end quoted text--- From leonw@mailcan.com Mon Dec 22 07:19:05 2008 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_61 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 mBMDJ5EN019314 for ; Mon, 22 Dec 2008 07:19:05 -0600 X-ASG-Debug-ID: 1229951943-4130026d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from out1.smtp.messagingengine.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F1E4A1B9DC09 for ; Mon, 22 Dec 2008 05:19:03 -0800 (PST) Received: from out1.smtp.messagingengine.com (out1.smtp.messagingengine.com [66.111.4.25]) by cuda.sgi.com with ESMTP id OltR1VG7cNWGrKN6 for ; Mon, 22 Dec 2008 05:19:03 -0800 (PST) Received: from compute2.internal (compute2.internal [10.202.2.42]) by out1.messagingengine.com (Postfix) with ESMTP id C9A1E1EED8E; Mon, 22 Dec 2008 08:19:02 -0500 (EST) Received: from web7.messagingengine.com ([10.202.2.216]) by compute2.internal (MEProxy); Mon, 22 Dec 2008 08:19:02 -0500 Received: by web7.messagingengine.com (Postfix, from userid 99) id A81FE83967; Mon, 22 Dec 2008 08:19:02 -0500 (EST) Message-Id: <1229951942.11189.1291310985@webmail.messagingengine.com> X-Sasl-Enc: ADm97P4E1fqC3l/+c6N7XRSlMjeT6I1yw74OUvUCprz8 1229951942 From: "Leon Woestenberg" To: "Peter Grandi" , "Linux RAID" , "Linux XFS" Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="iso-8859-1" MIME-Version: 1.0 X-Mailer: MessagingEngine.com Webmail Interface References: <1229225480.16555.152.camel@localhost> <18757.4606.966139.10342@tree.ty.sabi.co.uk> <200812141912.59649.Martin@lichtvoll.de> <18757.33373.744917.457587@tree.ty.sabi.co.uk> <494971B2.1000103@tmr.com> <494A07BA.1080008@mailcan.com> <18766.38416.161254.375311@tree.ty.sabi.co.uk> X-ASG-Orig-Subj: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] Subject: Re: 12x performance drop on md/linux+sw raid1 due to barriers [xfs] In-Reply-To: <18766.38416.161254.375311@tree.ty.sabi.co.uk> Date: Mon, 22 Dec 2008 14:19:02 +0100 X-Barracuda-Connect: out1.smtp.messagingengine.com[66.111.4.25] X-Barracuda-Start-Time: 1229951943 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.13361 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hello, On Sun, 21 Dec 2008 19:16:32 +0000, "Peter Grandi" said: > > The drive itself may still re-order writes, thus can cause > > corruption if halfway the power goes down. [ ... ] Barriers need > > to travel all the way down to the point where-after everything > > remains in-order. [ ... ] Whether the data has made it to the > > drive platters is not really important from a barrier point of > > view, however, iff part of the data made it to the platters, then > > we want to be sure it was in-order. [ ... ] > > But this discussion is backwards, as usual: the *purpose* of any > kind of barriers cannot be just to guarantee consistency, but also > stability, because ordered commits are not that useful without > commit to stable storage. > I do not see in what sense you mean "stability"? Stable as in BIBO or non-volatile? Barriers are time-related. Once data is on storage, there is no relation with time. So I do not see how barriers help to "stabilize" storage. Ordered commits is a strong-enough condition to ensure consistency in the sense that atomic transactions either made it to the disk completely or not at all. > If barriers guarantee transaction stability, then consistency is > also a consequence of serial dependencies among transactions (and > as to that per-device barriers are a coarse and very underoptimal > design). > Of course, the higher level should ensure that between transactions, the (meta)data is always consistent. In filesystem design, we see that some FS's decide to split metadata and data in this regard. > Anyhow, barriers for ordering only have been astutely patented > quite recently: > > http://www.freshpatents.com/Transforming-flush-queue-command-to-memory-barrier-command-in-disk-drive-dt20070719ptan20070168626.php > > Amazing new from the patent office.y > Grand. Another case of no prior art. :-) Leon. From agruen@suse.de Mon Dec 22 07:48:02 2008 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 (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 mBMDm1ls021721 for ; Mon, 22 Dec 2008 07:48:02 -0600 X-ASG-Debug-ID: 1229953678-5e5000980000-w1Z2WR 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 36FED3ECF2 for ; Mon, 22 Dec 2008 05:47:58 -0800 (PST) Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id KYTQrXFKv7oAdLQ3 for ; Mon, 22 Dec 2008 05:47:58 -0800 (PST) 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 mx2.suse.de (Postfix) with ESMTP id 5619B469E3; Mon, 22 Dec 2008 14:47:57 +0100 (CET) From: Andreas Gruenbacher Reply-To: acl-devel@bestbits.at Organization: SUSE Labs / Novell To: Christoph Hellwig X-ASG-Orig-Subj: Re: [RFE] --reference option for setfattr Subject: Re: [RFE] --reference option for setfattr Date: Mon, 22 Dec 2008 14:47:54 +0100 User-Agent: KMail/1.9.9 Cc: Ales Zelinka , linux-xfs@oss.sgi.com, acl-devel@bestbits.at References: <49101B02.60004@redhat.com> <20081222130103.GA12367@infradead.org> In-Reply-To: <20081222130103.GA12367@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200812221447.54325.agruen@suse.de> X-Barracuda-Connect: mx2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1229953680 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.13363 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Monday, 22 December 2008 14:01:03 Christoph Hellwig wrote: > On Tue, Nov 04, 2008 at 10:50:58AM +0100, Ales Zelinka wrote: > > currently when I want to copy all extended attributes from one file to > > another, I have to use ugly command like this: > > > > getfattr --dump -m '-' /etc/samba/smb.conf |sed 's;file: > > etc/samba/smb.conf;file: /tmp/smb.conf;'| setfattr --restore=- > > > > Would you please implement --reference=some_file option that will read > > all extended attributes set on some_file and set them on pathname? > > > > The previous use case would then look like this: > > > > setfattr --reference=/etc/samba/smb.conf /tmp/smb.conf > > > > Other commands from file-attributes-manipulation familly already have > > parameter like this (chmod, chown, chcon,...) > > This feature seems useful to me, any chance you could try coming up with > a patch? getfattr/setfattr are modeled similar to getfacl/setfacl, and with those two tools you can do this (-b stands for --remove-all): getfacl /etc/samba/smb.conf | setfacl -b -M - /tmp/smb.conf Would it make sense to implement this in setfattr in a similar way? A -b option would be handy in this context as well, of course. But maybe --reference is more convenient sometimes, and so it should be added in any case? Thanks, Andreas From sandeen@sandeen.net Mon Dec 22 08:55:56 2008 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_55 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 mBMEttHT027842 for ; Mon, 22 Dec 2008 08:55:56 -0600 X-ASG-Debug-ID: 1229957753-63c300180000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E68E0176FA94 for ; Mon, 22 Dec 2008 06:55:53 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id NoUV8iB6HDXMW5fk for ; Mon, 22 Dec 2008 06:55:53 -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 sandeen.net (Postfix) with ESMTP id 10EFAAC6268; Mon, 22 Dec 2008 08:55:21 -0600 (CST) Message-ID: <494FAA58.7070605@sandeen.net> Date: Mon, 22 Dec 2008 08:55:20 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: Matthew Kent , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: couple small xfstest patches Subject: Re: couple small xfstest patches References: <20081222130824.GC12367@infradead.org> In-Reply-To: <20081222130824.GC12367@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: 1229957753 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.13369 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Christoph Hellwig wrote: > On Fri, Nov 21, 2008 at 01:45:23PM -0800, Matthew Kent wrote: >> * 189 fails with external devices >> * add a unified diff output option, find it easier on the eyes ;) > > Thanks, I'll put these into my queue. Question to the list: any > arguments against just making unified diffs the default for xfsqa > output? none here; I run patched that way already. >> Thanks! >> -- >> Matthew Kent >> http://magoazul.com >> --- xfs-cmds/xfstests/common.orig 2008-11-21 13:19:47.000000000 -0800 >> +++ xfs-cmds/xfstests/common 2008-11-21 13:22:04.000000000 -0800 >> @@ -107,7 +107,7 @@ >> -nfs test NFS >> -l line mode diff (default) >> -xdiff graphical mode diff >> - -diffu show unified diff >> + -udiff show unified diff >> -n show me, do not run tests >> -q quick [deprecated] >> -T output timestamps >> @@ -158,7 +158,7 @@ >> fi >> ;; >> >> - -diffu) # show unified diff >> + -udiff) # show a unified diff >> xpand=false >> diff="$diff -u" >> ;; >> --- xfs-cmds/xfstests/189.orig 2008-11-21 13:43:33.000000000 -0800 >> +++ xfs-cmds/xfstests/189 2008-11-21 13:42:48.000000000 -0800 >> @@ -188,8 +188,8 @@ >> _need_to_be_root >> _require_scratch >> >> -unset SCRATCH_OPTIONS >> -unset MOUNT_OPTIONS >> +unset SCRATCH_RTDEV >> +unset SCRATCH_LOGDEV >> >> _scratch_mkfs_xfs | _filter_mkfs 2>/dev/null >> >> _______________________________________________ >> xfs mailing list >> xfs@oss.sgi.com >> http://oss.sgi.com/mailman/listinfo/xfs > > ---end quoted text--- > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From jeffpc@josefsipek.net Mon Dec 22 08:58:58 2008 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 mBMEwwpc028067 for ; Mon, 22 Dec 2008 08:58:58 -0600 X-ASG-Debug-ID: 1229957936-63c3002a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from josefsipek.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D71AF17702BD for ; Mon, 22 Dec 2008 06:58:56 -0800 (PST) Received: from josefsipek.net (josefsipek.net [141.211.133.196]) by cuda.sgi.com with ESMTP id BawpKyRC5euFCaBJ for ; Mon, 22 Dec 2008 06:58:56 -0800 (PST) Received: by josefsipek.net (Postfix, from userid 1000) id 541231C00089; Mon, 22 Dec 2008 09:58:25 -0500 (EST) Date: Mon, 22 Dec 2008 09:58:25 -0500 From: "Josef 'Jeff' Sipek" To: Christoph Hellwig Cc: XFS Mailing List X-ASG-Orig-Subj: Re: [PATCH] XFS: random cleanups of xfs_swap_extents Subject: Re: [PATCH] XFS: random cleanups of xfs_swap_extents Message-ID: <20081222145825.GY15407@josefsipek.net> References: <20081107230054.GH26208@josefsipek.net> <20081112100958.GB32567@infradead.org> <20081112153903.GE27125@josefsipek.net> <20081222130202.GB12367@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081222130202.GB12367@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: josefsipek.net[141.211.133.196] X-Barracuda-Start-Time: 1229957936 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_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13369 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M On Mon, Dec 22, 2008 at 08:02:02AM -0500, Christoph Hellwig wrote: > On Wed, Nov 12, 2008 at 10:39:03AM -0500, Josef 'Jeff' Sipek wrote: > > > With the one case that does a trans_cancel with partially unlocked > > > inodes handcoding most of it. > > > > Ok, I'll do that. > > Did you manage to actually do it? :) I did, I just didn't have time to run it through xfsqa (well, set up a test box for xfsqa). Use at your own risk :) Josef 'Jeff' Sipek. -- XFS: use multiple labels and gotos for error handling in xfs_swap_extents Signed-off-by: Josef 'Jeff' Sipek diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c index 75b0cd4..ec832bc 100644 --- a/fs/xfs/xfs_dfrag.c +++ b/fs/xfs/xfs_dfrag.c @@ -132,19 +132,17 @@ xfs_swap_extents( xfs_bstat_t *sbp = &sxp->sx_stat; xfs_ifork_t *tempifp, *ifp, *tifp; int ilf_fields, tilf_fields; - static uint lock_flags = XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL; int error = 0; int aforkblks = 0; int taforkblks = 0; __uint64_t tmp; - char locked = 0; mp = ip->i_mount; tempifp = kmem_alloc(sizeof(xfs_ifork_t), KM_MAYFAIL); if (!tempifp) { error = XFS_ERROR(ENOMEM); - goto error0; + goto out; } sbp = &sxp->sx_stat; @@ -157,25 +155,24 @@ xfs_swap_extents( */ xfs_lock_two_inodes(ip, tip, XFS_IOLOCK_EXCL); xfs_lock_two_inodes(ip, tip, XFS_ILOCK_EXCL); - locked = 1; /* Verify that both files have the same format */ if ((ip->i_d.di_mode & S_IFMT) != (tip->i_d.di_mode & S_IFMT)) { error = XFS_ERROR(EINVAL); - goto error0; + goto out_unlock; } /* Verify both files are either real-time or non-realtime */ if (XFS_IS_REALTIME_INODE(ip) != XFS_IS_REALTIME_INODE(tip)) { error = XFS_ERROR(EINVAL); - goto error0; + goto out_unlock; } /* Should never get a local format */ if (ip->i_d.di_format == XFS_DINODE_FMT_LOCAL || tip->i_d.di_format == XFS_DINODE_FMT_LOCAL) { error = XFS_ERROR(EINVAL); - goto error0; + goto out_unlock; } if (VN_CACHED(VFS_I(tip)) != 0) { @@ -183,13 +180,13 @@ xfs_swap_extents( error = xfs_flushinval_pages(tip, 0, -1, FI_REMAPF_LOCKED); if (error) - goto error0; + goto out_unlock; } /* Verify O_DIRECT for ftmp */ if (VN_CACHED(VFS_I(tip)) != 0) { error = XFS_ERROR(EINVAL); - goto error0; + goto out_unlock; } /* Verify all data are being swapped */ @@ -197,7 +194,7 @@ xfs_swap_extents( sxp->sx_length != ip->i_d.di_size || sxp->sx_length != tip->i_d.di_size) { error = XFS_ERROR(EFAULT); - goto error0; + goto out_unlock; } /* @@ -207,7 +204,7 @@ xfs_swap_extents( */ if ( XFS_IFORK_Q(ip) != XFS_IFORK_Q(tip) ) { error = XFS_ERROR(EINVAL); - goto error0; + goto out_unlock; } /* @@ -222,7 +219,7 @@ xfs_swap_extents( (sbp->bs_mtime.tv_sec != ip->i_d.di_mtime.t_sec) || (sbp->bs_mtime.tv_nsec != ip->i_d.di_mtime.t_nsec)) { error = XFS_ERROR(EBUSY); - goto error0; + goto out_unlock; } /* We need to fail if the file is memory mapped. Once we have tossed @@ -233,7 +230,7 @@ xfs_swap_extents( */ if (VN_MAPPED(VFS_I(ip))) { error = XFS_ERROR(EBUSY); - goto error0; + goto out_unlock; } xfs_iunlock(ip, XFS_ILOCK_EXCL); @@ -256,8 +253,7 @@ xfs_swap_extents( xfs_iunlock(ip, XFS_IOLOCK_EXCL); xfs_iunlock(tip, XFS_IOLOCK_EXCL); xfs_trans_cancel(tp, 0); - locked = 0; - goto error0; + goto out; } xfs_lock_two_inodes(ip, tip, XFS_ILOCK_EXCL); @@ -267,19 +263,15 @@ xfs_swap_extents( if ( ((XFS_IFORK_Q(ip) != 0) && (ip->i_d.di_anextents > 0)) && (ip->i_d.di_aformat != XFS_DINODE_FMT_LOCAL)) { error = xfs_bmap_count_blocks(tp, ip, XFS_ATTR_FORK, &aforkblks); - if (error) { - xfs_trans_cancel(tp, 0); - goto error0; - } + if (error) + goto out_trans_cancel; } if ( ((XFS_IFORK_Q(tip) != 0) && (tip->i_d.di_anextents > 0)) && (tip->i_d.di_aformat != XFS_DINODE_FMT_LOCAL)) { error = xfs_bmap_count_blocks(tp, tip, XFS_ATTR_FORK, &taforkblks); - if (error) { - xfs_trans_cancel(tp, 0); - goto error0; - } + if (error) + goto out_trans_cancel; } /* @@ -346,10 +338,10 @@ xfs_swap_extents( IHOLD(ip); - xfs_trans_ijoin(tp, ip, lock_flags); + xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); IHOLD(tip); - xfs_trans_ijoin(tp, tip, lock_flags); + xfs_trans_ijoin(tp, tip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); xfs_trans_log_inode(tp, ip, ilf_fields); xfs_trans_log_inode(tp, tip, tilf_fields); @@ -358,19 +350,19 @@ xfs_swap_extents( * If this is a synchronous mount, make sure that the * transaction goes to disk before returning to the user. */ - if (mp->m_flags & XFS_MOUNT_WSYNC) { + if (mp->m_flags & XFS_MOUNT_WSYNC) xfs_trans_set_sync(tp); - } error = xfs_trans_commit(tp, XFS_TRANS_SWAPEXT); - locked = 0; - error0: - if (locked) { - xfs_iunlock(ip, lock_flags); - xfs_iunlock(tip, lock_flags); - } - if (tempifp != NULL) - kmem_free(tempifp); +out_unlock: + xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); + xfs_iunlock(tip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); +out: + kmem_free(tempifp); return error; + +out_trans_cancel: + xfs_trans_cancel(tp, 0); + goto out_unlock; } From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 08:59:08 2008 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 mBMEx8Is028090 for ; Mon, 22 Dec 2008 08:59:08 -0600 X-ASG-Debug-ID: 1229957946-63bf002b0000-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 6AEAC1770339 for ; Mon, 22 Dec 2008 06:59:06 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id lOXn2AZvQZCCan8Q for ; Mon, 22 Dec 2008 06:59:06 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEmFO-0004vQ-3V for xfs@oss.sgi.com; Mon, 22 Dec 2008 14:59:06 +0000 Date: Mon, 22 Dec 2008 09:59:06 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] handle unaligned data in xfs_bmbt_disk_get_all Subject: [PATCH] handle unaligned data in xfs_bmbt_disk_get_all Message-ID: <20081222145906.GA18859@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: 1229957946 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com In libxfs xfs_bmbt_disk_get_all needs to handle unaligned data and thus has been updated to use get_unaligned_be64. In kernelspace we don't strictly need it as the routine is only used for tracing and xfsidbg, but let's keep the two implementations in sync. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_bmap_btree.c --- xfs.orig/fs/xfs/xfs_bmap_btree.c 2008-12-19 15:02:53.998907997 +0100 +++ xfs/fs/xfs/xfs_bmap_btree.c 2008-12-22 14:43:41.507247175 +0100 @@ -208,7 +208,8 @@ xfs_bmbt_disk_get_all( xfs_bmbt_rec_t *r, xfs_bmbt_irec_t *s) { - __xfs_bmbt_get_all(be64_to_cpu(r->l0), be64_to_cpu(r->l1), s); + __xfs_bmbt_get_all(get_unaligned_be64(&r->l0), + get_unaligned_be64(&r->l1), s); } /* From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 08:59:56 2008 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 mBMExtB4028305 for ; Mon, 22 Dec 2008 08:59:56 -0600 X-ASG-Debug-ID: 1229957986-5bb502c40000-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 CBA273ED61 for ; Mon, 22 Dec 2008 06:59:46 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 7ky0azpnlH1oJt6D for ; Mon, 22 Dec 2008 06:59:46 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEmG2-0004vy-4u; Mon, 22 Dec 2008 14:59:46 +0000 Date: Mon, 22 Dec 2008 09:59:46 -0500 From: Christoph Hellwig To: "Josef 'Jeff' Sipek" Cc: Christoph Hellwig , XFS Mailing List X-ASG-Orig-Subj: Re: [PATCH] XFS: random cleanups of xfs_swap_extents Subject: Re: [PATCH] XFS: random cleanups of xfs_swap_extents Message-ID: <20081222145946.GB18859@infradead.org> References: <20081107230054.GH26208@josefsipek.net> <20081112100958.GB32567@infradead.org> <20081112153903.GE27125@josefsipek.net> <20081222130202.GB12367@infradead.org> <20081222145825.GY15407@josefsipek.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081222145825.GY15407@josefsipek.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: 1229957986 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Mon, Dec 22, 2008 at 09:58:25AM -0500, Josef 'Jeff' Sipek wrote: > On Mon, Dec 22, 2008 at 08:02:02AM -0500, Christoph Hellwig wrote: > > On Wed, Nov 12, 2008 at 10:39:03AM -0500, Josef 'Jeff' Sipek wrote: > > > > With the one case that does a trans_cancel with partially unlocked > > > > inodes handcoding most of it. > > > > > > Ok, I'll do that. > > > > Did you manage to actually do it? :) > > I did, I just didn't have time to run it through xfsqa (well, set up a test > box for xfsqa). Use at your own risk :) Thanks, I'll throw it into my QA queue. From sandeen@sandeen.net Mon Dec 22 09:08:00 2008 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 mBMF802A028973 for ; Mon, 22 Dec 2008 09:08:00 -0600 X-ASG-Debug-ID: 1229958478-4558019f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D49A717751A5 for ; Mon, 22 Dec 2008 07:07:58 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 8fneQFijzSviIbcj for ; Mon, 22 Dec 2008 07:07:58 -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 sandeen.net (Postfix) with ESMTP id 33479AC6268 for ; Mon, 22 Dec 2008 09:07:27 -0600 (CST) Message-ID: <494FAD2E.3070603@sandeen.net> Date: Mon, 22 Dec 2008 09:07:26 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] xfstest: fix up test 080 Subject: [PATCH] xfstest: fix up test 080 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: 1229958478 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.13369 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 080 seems to run fine on linux, un-comment the quiet var to make the output match. Added to auto group as well. Signed-off-by: Eric Sandeen --- Index: xfs-cmds/xfstests/080 =================================================================== --- xfs-cmds.orig/xfstests/080 +++ xfs-cmds/xfstests/080 @@ -33,14 +33,13 @@ _supported_fs xfs # Apparently should be able to work on IRIX, # but not at the moment. -# It does not work on Linux due to some locking issues... -_supported_os IRIX +_supported_os IRIX Linux [ $HOSTOS == IRIX ] && _notrun "Not working on IRIX yet" _setup_testdir -#quiet=-q +quiet=-q clean=-c export here Index: xfs-cmds/xfstests/group =================================================================== --- xfs-cmds.orig/xfstests/group +++ xfs-cmds/xfstests/group @@ -182,7 +182,7 @@ atime 077 acl attr auto 078 growfs auto 079 acl attr ioctl metadata auto -080 rw ioctl +080 rw ioctl auto 081 log logprint quota auto 082 log logprint v2log auto 083 rw auto From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:29:52 2008 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 mBMGTpR5005033 for ; Mon, 22 Dec 2008 10:29:52 -0600 X-ASG-Debug-ID: 1229963389-63c301f00000-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 21022177270A for ; Mon, 22 Dec 2008 08:29:49 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id uFlSj9FFLgVmJJXE for ; Mon, 22 Dec 2008 08:29:49 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEneh-0003aZ-9C; Mon, 22 Dec 2008 16:29:19 +0000 Date: Mon, 22 Dec 2008 11:29:19 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfstest: fix up test 080 Subject: Re: [PATCH] xfstest: fix up test 080 Message-ID: <20081222162919.GA13657@infradead.org> References: <494FAD2E.3070603@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <494FAD2E.3070603@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: 1229963390 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Mon, Dec 22, 2008 at 09:07:26AM -0600, Eric Sandeen wrote: > 080 seems to run fine on linux, un-comment the quiet var to > make the output match. Added to auto group as well. Looks good and matches for me. Making the output less quiet and updating the expected output would be a good idea for a followup patch. From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:43:55 2008 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 mBMGht9Q006401 for ; Mon, 22 Dec 2008 10:43:55 -0600 X-ASG-Debug-ID: 1229964233-540703120000-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 059371775783 for ; Mon, 22 Dec 2008 08:43:53 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id HSCgjHhZwilqiMVl for ; Mon, 22 Dec 2008 08:43:53 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnsm-0005iA-Rw; Mon, 22 Dec 2008 16:43:52 +0000 Message-Id: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:31 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 00/20] xfs-cmds staging tree Subject: [PATCH 00/20] xfs-cmds staging tree 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: 1229964234 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com This is the staging tree of xfs patches. Given that Barry is gone now it seem like no one cares about userspace and I'll play patch monkey for now. Special thanks go to Arkadiusz Miskiewicz for lots of quota and gettext patches. The tree is also available at as a tarball of quilt series at: http://ftp.kernel.org/pub/linux/kernel/people/hch/xfs/xfs-cmds-staging-20081222.tar.gz or as individual patches at: http://ftp.kernel.org/pub/linux/kernel/people/hch/xfs/xfs-cmds-staging-20081121/ -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:43:56 2008 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, J_CHICKENPOX_73 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 mBMGhuFq006411 for ; Mon, 22 Dec 2008 10:43:56 -0600 X-ASG-Debug-ID: 1229964234-4f6903370000-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 0EA881775785 for ; Mon, 22 Dec 2008 08:43:54 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id maR1tmdVp43MxlCZ for ; Mon, 22 Dec 2008 08:43:54 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnso-0005jH-8G; Mon, 22 Dec 2008 16:43:54 +0000 Message-Id: <20081222164354.124617000@bombadil.infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:33 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 02/20] update Debian packaging Subject: [PATCH 02/20] update Debian packaging Content-Disposition: inline; filename=xfsprogs-bump-deb-version 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: 1229964235 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com From: Nathan Scott Reviewed-by: Christoph Hellwig Index: xfs-cmds/xfsprogs/debian/changelog =================================================================== --- xfs-cmds.orig/xfsprogs/debian/changelog 2008-12-01 22:06:20.000000000 +0100 +++ xfs-cmds/xfsprogs/debian/changelog 2008-12-22 10:10:30.652247718 +0100 @@ -1,3 +1,13 @@ +xfsprogs (2.10.2-1) unstable; urgency=low + + * New upstream release + * No longer ignore -i maxpct option in mkfs.xfs (closes: #500593) + * Correct features2 superblock field handling (closes: #473135) + * 32 bit emulation on 64 bit kernels works (closes: #485020) + * Fix up large sector handling in mkfs (closes: #489421) + + -- Nathan Scott Sat, 20 Dec 2008 10:14:27 +1100 + xfsprogs (2.9.10-1) unstable; urgency=low * New upstream release -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:43:57 2008 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 mBMGhvkH006435 for ; Mon, 22 Dec 2008 10:43:57 -0600 X-ASG-Debug-ID: 1229964235-51d900ea0000-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 D8EE03F8D4 for ; Mon, 22 Dec 2008 08:43:55 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id QP7GTD5g1q5pwzhb for ; Mon, 22 Dec 2008 08:43:55 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnsp-0005kE-A0; Mon, 22 Dec 2008 16:43:55 +0000 Message-Id: <20081222164355.220390000@bombadil.infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:35 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 04/20] Apply gettext translation to strings kept in format->{fmt, msg, type} Subject: [PATCH 04/20] Apply gettext translation to strings kept in format->{fmt, msg, type} Content-Disposition: inline; filename=xfsprogs-gettext-more-translations 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: 1229964235 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com From: Jakub Bogusz Reviewed-by: Christoph Hellwig --- xfsprogs/repair/progress.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) diff --git a/xfsprogs/repair/progress.c b/xfsprogs/repair/progress.c index ff42f82..c6630e5 100644 --- a/xfsprogs/repair/progress.c +++ b/xfsprogs/repair/progress.c @@ -339,16 +339,16 @@ print_final_rpt(void) if (report_interval) { switch(msgp->format->format) { case FMT1: - sprintf (msgbuf, *msgp->format->fmt, + sprintf (msgbuf, _(*msgp->format->fmt), tmp->tm_hour, tmp->tm_min, tmp->tm_sec, - msgp->format->msg, sum, - *msgp->total, *msgp->format->type); + _(msgp->format->msg), sum, + *msgp->total, _(*msgp->format->type)); break; case FMT2: - sprintf (msgbuf, *msgp->format->fmt, + sprintf (msgbuf, _(*msgp->format->fmt), tmp->tm_hour, tmp->tm_min, tmp->tm_sec, - msgp->format->msg, sum, - *msgp->format->type); + _(msgp->format->msg), sum, + _(*msgp->format->type)); break; } do_log(_("%s"), msgbuf); -- 1.6.0.5 _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:43:56 2008 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 mBMGhuMU006420 for ; Mon, 22 Dec 2008 10:43:56 -0600 X-ASG-Debug-ID: 1229964235-51d400fa0000-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 9BB163F8CB for ; Mon, 22 Dec 2008 08:43:55 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id tVp5uWpWkllil6ZK for ; Mon, 22 Dec 2008 08:43:55 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnso-0005jk-Sc; Mon, 22 Dec 2008 16:43:55 +0000 Message-Id: <20081222164354.791535000@bombadil.infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:34 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 03/20] Fix build when gettext is enabled Subject: [PATCH 03/20] Fix build when gettext is enabled Content-Disposition: inline; filename=xfsprogs-gettext-fix-build 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: 1229964235 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com From: Jakub Bogusz Build fails when gettext is enabled: progress.c:16: error: initializer element is not constant progress.c:16: error: (near initialization for ‘rpt_types[0]’) progress.c:18: error: initializer element is not constant progress.c:18: error: (near initialization for ‘rpt_types[1]’) [...] Fix that using commonly standard N_() macro. Improvements by Arkadiusz MiÅ›kiewicz Reviewed-by: Christoph Hellwig --- xfsprogs/include/buildrules | 2 +- xfsprogs/include/platform_defs.h.in | 2 + xfsprogs/repair/progress.c | 50 +++++++++++++++++----------------- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/xfsprogs/include/buildrules b/xfsprogs/include/buildrules index 7155b21..1047ec3 100644 --- a/xfsprogs/include/buildrules +++ b/xfsprogs/include/buildrules @@ -40,7 +40,7 @@ endif ifdef POTHEAD $(POTHEAD): $(XGETTEXTFILES) - $(XGETTEXT) --language=C --keyword=_ -o $@ $(XGETTEXTFILES) + $(XGETTEXT) --language=C --keyword=_ --keyword=N_ -o $@ $(XGETTEXTFILES) # Generate temp .po files, to check whether translations need updating. # Not by default, due to gettext output differences between versions. diff --git a/xfsprogs/include/platform_defs.h.in b/xfsprogs/include/platform_defs.h.in index 6682ef6..4f8ebe5 100644 --- a/xfsprogs/include/platform_defs.h.in +++ b/xfsprogs/include/platform_defs.h.in @@ -129,8 +129,10 @@ typedef unsigned long long __psunsigned_t; #ifdef ENABLE_GETTEXT # include # define _(x) gettext(x) +# define N_(x) x #else # define _(x) (x) +# define N_(x) x # define textdomain(d) do { } while (0) # define bindtextdomain(d,dir) do { } while (0) #endif diff --git a/xfsprogs/repair/progress.c b/xfsprogs/repair/progress.c index 0ca9a8a..ff42f82 100644 --- a/xfsprogs/repair/progress.c +++ b/xfsprogs/repair/progress.c @@ -13,30 +13,30 @@ static char *rpt_types[] = { #define TYPE_INODE 0 - _("inodes"), + N_("inodes"), #define TYPE_BLOCK 1 - _("blocks"), + N_("blocks"), #define TYPE_DIR 2 - _("directories"), + N_("directories"), #define TYPE_AG 3 - _("allocation groups"), + N_("allocation groups"), #define TYPE_AGI_BUCKET 4 - _("AGI unlinked buckets"), + N_("AGI unlinked buckets"), #define TYPE_EXTENTS 5 - _("extents"), + N_("extents"), #define TYPE_RTEXTENTS 6 - _("realtime extents"), + N_("realtime extents"), #define TYPE_UNLINKED_LIST 7 - _("unlinked lists") + N_("unlinked lists") }; static char *rpt_fmts[] = { #define FMT1 0 -_(" - %02d:%02d:%02d: %s - %llu of %llu %s done\n"), +N_(" - %02d:%02d:%02d: %s - %llu of %llu %s done\n"), #define FMT2 1 -_(" - %02d:%02d:%02d: %s - %llu %s done\n"), +N_(" - %02d:%02d:%02d: %s - %llu %s done\n"), }; typedef struct progress_rpt_s { @@ -48,35 +48,35 @@ typedef struct progress_rpt_s { static progress_rpt_t progress_rpt_reports[] = { -{FMT1, _("scanning filesystem freespace"), /* 0 */ +{FMT1, N_("scanning filesystem freespace"), /* 0 */ &rpt_fmts[FMT1], &rpt_types[TYPE_AG]}, -{FMT1, _("scanning agi unlinked lists"), /* 1 */ +{FMT1, N_("scanning agi unlinked lists"), /* 1 */ &rpt_fmts[FMT1], &rpt_types[TYPE_AG]}, -{FMT2, _("check uncertain AG inodes"), /* 2 */ +{FMT2, N_("check uncertain AG inodes"), /* 2 */ &rpt_fmts[FMT2], &rpt_types[TYPE_AGI_BUCKET]}, -{FMT1, _("process known inodes and inode discovery"), /* 3 */ +{FMT1, N_("process known inodes and inode discovery"), /* 3 */ &rpt_fmts[FMT1], &rpt_types[TYPE_INODE]}, -{FMT1, _("process newly discovered inodes"), /* 4 */ +{FMT1, N_("process newly discovered inodes"), /* 4 */ &rpt_fmts[FMT1], &rpt_types[TYPE_AG]}, -{FMT1, _("setting up duplicate extent list"), /* 5 */ +{FMT1, N_("setting up duplicate extent list"), /* 5 */ &rpt_fmts[FMT1], &rpt_types[TYPE_AG]}, -{FMT1, _("initialize realtime bitmap"), /* 6 */ +{FMT1, N_("initialize realtime bitmap"), /* 6 */ &rpt_fmts[FMT1], &rpt_types[TYPE_BLOCK]}, -{FMT1, _("reset realtime bitmaps"), /* 7 */ +{FMT1, N_("reset realtime bitmaps"), /* 7 */ &rpt_fmts[FMT1], &rpt_types[TYPE_AG]}, -{FMT1, _("check for inodes claiming duplicate blocks"), /* 8 */ +{FMT1, N_("check for inodes claiming duplicate blocks"), /* 8 */ &rpt_fmts[FMT1], &rpt_types[TYPE_INODE]}, -{FMT1, _("rebuild AG headers and trees"), /* 9 */ +{FMT1, N_("rebuild AG headers and trees"), /* 9 */ &rpt_fmts[FMT1], &rpt_types[TYPE_AG]}, -{FMT1, _("traversing filesystem"), /* 10 */ +{FMT1, N_("traversing filesystem"), /* 10 */ &rpt_fmts[FMT1], &rpt_types[TYPE_AG]}, -{FMT2, _("traversing all unattached subtrees"), /* 11 */ +{FMT2, N_("traversing all unattached subtrees"), /* 11 */ &rpt_fmts[FMT2], &rpt_types[TYPE_DIR]}, -{FMT2, _("moving disconnected inodes to lost+found"), /* 12 */ +{FMT2, N_("moving disconnected inodes to lost+found"), /* 12 */ &rpt_fmts[FMT2], &rpt_types[TYPE_INODE]}, -{FMT1, _("verify and correct link counts"), /* 13 */ +{FMT1, N_("verify and correct link counts"), /* 13 */ &rpt_fmts[FMT1], &rpt_types[TYPE_INODE]}, -{FMT1, _("verify link counts"), /* 14 */ +{FMT1, N_("verify link counts"), /* 14 */ &rpt_fmts[FMT1], &rpt_types[TYPE_INODE]} }; -- 1.6.0.5 _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:43:59 2008 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 mBMGhxhJ006446 for ; Mon, 22 Dec 2008 10:43:59 -0600 X-ASG-Debug-ID: 1229964237-63c6027e0000-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 D9D901775787 for ; Mon, 22 Dec 2008 08:43:57 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id lc8d4wmVgYD6CGt0 for ; Mon, 22 Dec 2008 08:43:57 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnsq-0005lF-6b; Mon, 22 Dec 2008 16:43:56 +0000 Message-Id: <20081222164356.118030000@bombadil.infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:37 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 06/20] build system: Make --enable-gettext actually enable gettext Subject: [PATCH 06/20] build system: Make --enable-gettext actually enable gettext Content-Disposition: inline; filename=xfsprogs-gettext-fix--enable-gettext 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: 1229964237 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com From: Arkadiusz Miskiewicz ENABLE_GETTEXT wasn't defined when --enable-gettext was passed as configure option. Now this is fixed. Reviewed-by: Christoph Hellwig --- xfsprogs/include/builddefs.in | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/xfsprogs/include/builddefs.in b/xfsprogs/include/builddefs.in index f1b4340..f07d8d6 100644 --- a/xfsprogs/include/builddefs.in +++ b/xfsprogs/include/builddefs.in @@ -118,6 +118,10 @@ GCFLAGS = $(OPTIMIZER) $(DEBUG) \ -DVERSION=\"$(PKG_VERSION)\" -DLOCALEDIR=\"$(PKG_LOCALE_DIR)\" \ -DPACKAGE=\"$(PKG_NAME)\" -I$(TOPDIR)/include +ifeq ($(ENABLE_GETTEXT),yes) +GCFLAGS += -DENABLE_GETTEXT +endif + # First, Global, Platform, Local CFLAGS CFLAGS += $(FCFLAGS) $(GCFLAGS) $(PCFLAGS) $(LCFLAGS) -- 1.6.0.5 _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:44:01 2008 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 mBMGi1wg006469 for ; Mon, 22 Dec 2008 10:44:01 -0600 X-ASG-Debug-ID: 1229964240-460001630000-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 8A25F3F8D5 for ; Mon, 22 Dec 2008 08:44:00 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 3OcnwtP3qMJLy60F for ; Mon, 22 Dec 2008 08:44:00 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnst-0005mG-3v; Mon, 22 Dec 2008 16:43:59 +0000 Message-Id: <20081222164359.022639000@bombadil.infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:39 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 08/20] xfs_quota: Add missing options to --help Subject: [PATCH 08/20] xfs_quota: Add missing options to --help Content-Disposition: inline; filename=xfsprogs-quota-update-help 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: 1229964240 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com From: Arkadiusz Miskiewicz Reviewed-by: Eric Sandeen Reviewed-by: Christoph Hellwig --- xfsprogs/quota/report.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/xfsprogs/quota/report.c b/xfsprogs/quota/report.c index 7902dbd..21b4edb 100644 --- a/xfsprogs/quota/report.c +++ b/xfsprogs/quota/report.c @@ -45,7 +45,7 @@ dump_help(void) static void report_help(void) { - report_cmd.args = _("[-bir] [-gpu] [-ahnt] [-f file]"); + report_cmd.args = _("[-bir] [-gpu] [-ahntLNU] [-f file]"); report_cmd.oneline = _("report filesystem quota information"); printf(_( "\n" @@ -61,6 +61,8 @@ report_help(void) " -n -- skip identifier-to-name translations, just report IDs\n" " -N -- suppress the header from the output\n" " -t -- terse output format, hides rows which are all zero\n" +" -L -- lower ID bound to report on\n" +" -U -- upder ID bound to report on\n" " -g -- report group usage and quota information\n" " -p -- report project usage and quota information\n" " -u -- report user usage and quota information\n" -- 1.6.0.5 _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:44:02 2008 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_81 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 mBMGi2TN006474 for ; Mon, 22 Dec 2008 10:44:02 -0600 X-ASG-Debug-ID: 1229964240-51d400fc0000-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 E5A5B3F8D5 for ; Mon, 22 Dec 2008 08:44:00 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 3jAFvM0bZ1pMzJtC for ; Mon, 22 Dec 2008 08:44:00 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnsu-0005mg-7E; Mon, 22 Dec 2008 16:44:00 +0000 Message-Id: <20081222164400.139744000@bombadil.infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:40 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 09/20] xfs_quota: Fix range for -U. Subject: [PATCH 09/20] xfs_quota: Fix range for -U. Content-Disposition: inline; filename=xfsprogs-quota-range-fix 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: 1229964240 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com From: Arkadiusz Miskiewicz xfs_quota report "-L" option specifies lower range of requested IDs. "-U" specifies upper range but "-L" is closed range while "-U" is open range. Make "-U" closed range, too which is something more expected. Reviewed-by: Christoph Hellwig --- xfsprogs/quota/report.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/xfsprogs/quota/report.c b/xfsprogs/quota/report.c index 21b4edb..2184158 100644 --- a/xfsprogs/quota/report.c +++ b/xfsprogs/quota/report.c @@ -124,7 +124,7 @@ dump_limits_any_type( } if (upper) { - for (id = lower; id < upper; id++) + for (id = lower; id <= upper; id++) dump_file(fp, id, type, mount->fs_name); return; } @@ -398,7 +398,7 @@ report_user_mount( uint id; if (upper) { /* identifier range specified */ - for (id = lower; id < upper; id++) { + for (id = lower; id <= upper; id++) { snprintf(n, sizeof(n)-1, "#%u", id); if (report_mount(fp, id, n, form, XFS_USER_QUOTA, mount, flags)) @@ -436,7 +436,7 @@ report_group_mount( uint id; if (upper) { /* identifier range specified */ - for (id = lower; id < upper; id++) { + for (id = lower; id <= upper; id++) { snprintf(n, sizeof(n)-1, "#%u", id); if (report_mount(fp, id, n, form, XFS_GROUP_QUOTA, mount, flags)) @@ -473,7 +473,7 @@ report_project_mount( uint id; if (upper) { /* identifier range specified */ - for (id = lower; id < upper; id++) { + for (id = lower; id <= upper; id++) { snprintf(n, sizeof(n)-1, "#%u", id); if (report_mount(fp, id, n, form, XFS_PROJ_QUOTA, mount, flags)) -- 1.6.0.5 _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:44:03 2008 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 mBMGi3fW006487 for ; Mon, 22 Dec 2008 10:44:03 -0600 X-ASG-Debug-ID: 1229964242-51d500f30000-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 5DCC43F8DA for ; Mon, 22 Dec 2008 08:44:02 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 96aUwmVW2ckazg2Z for ; Mon, 22 Dec 2008 08:44:02 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnsu-0005nF-Us; Mon, 22 Dec 2008 16:44:01 +0000 Message-Id: <20081222164400.685089000@bombadil.infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:41 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 10/20] xfs_quota: Warn if specified non-zero quota will be round down to zero Subject: [PATCH 10/20] xfs_quota: Warn if specified non-zero quota will be round down to zero Content-Disposition: inline; filename=xfsprogs-quota-warn-for-zero-blocks-limit 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: 1229964242 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com From: Arkadiusz Miskiewicz User specified quota limit is internally converted to "basic blocks" unit (512 bytes in size). Quota value will be silently converted to zero when user enters any value lower than 512 bytes. Warn in such case: : # ./xfs_quota -x -c "limit -u bsoft=431 12000" /home : xfs_quota: Warning: `431' in quota blocks is 0 (unlimited). Reviewed-by: Christoph Hellwig Reviewed-by: Eric Sandeen --- xfsprogs/po/pl.po | 5 +++++ xfsprogs/quota/edit.c | 2 ++ 2 files changed, 7 insertions(+), 0 deletions(-) diff --git a/xfsprogs/po/pl.po b/xfsprogs/po/pl.po index b4e1d76..d13184b 100644 --- a/xfsprogs/po/pl.po +++ b/xfsprogs/po/pl.po @@ -3670,6 +3670,11 @@ msgstr "%s: nieprawid msgid "%s: invalid project name: %s\n" msgstr "%s: nieprawid³owa nazwa projektu: %s\n" +#: ../quota/edit.c:237 +#, c-format +msgid "%s: Warning: `%s' in quota blocks is 0 (unlimited).\n" +msgstr "%s: Uwaga: `%s' w blokach quoty oznacza 0 (nieograniczone).\n" + #: ../quota/edit.c:318 #, c-format msgid "%s: unrecognised argument %s\n" diff --git a/xfsprogs/quota/edit.c b/xfsprogs/quota/edit.c index 15c72c4..ce7f7e9 100644 --- a/xfsprogs/quota/edit.c +++ b/xfsprogs/quota/edit.c @@ -233,6 +233,8 @@ extractb( s = string + length + 1; v = (__uint64_t)cvtnum(blocksize, sectorsize, s); *value = v >> 9; /* syscalls use basic blocks */ + if (v > 0 && *value == 0) + fprintf(stderr, _("%s: Warning: `%s' in quota blocks is 0 (unlimited).\n"), progname, s); return 1; } return 0; -- 1.6.0.5 -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:44:11 2008 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_55 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 mBMGiB91006539 for ; Mon, 22 Dec 2008 10:44:11 -0600 X-ASG-Debug-ID: 1229964250-28ab02240000-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 3E8863F8DF for ; Mon, 22 Dec 2008 08:44:10 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id uOJPTCvbDrCDJpYC for ; Mon, 22 Dec 2008 08:44:10 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnt3-0005pJ-QF; Mon, 22 Dec 2008 16:44:09 +0000 Message-Id: <20081222164409.723776000@bombadil.infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:45 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 14/20] xfstests: add a unified diff option Subject: [PATCH 14/20] xfstests: add a unified diff option Content-Disposition: inline; filename=xfstests-udiff-option 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: 1229964250 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com From: Matthew Kent Add the -udiff option to the test driver to make test output more easily readable. [hch: why not make this default?] Reviewed-by: Christoph Hellwig Index: xfs-cmds/xfstests/common =================================================================== --- xfs-cmds.orig/xfstests/common 2008-12-01 22:06:21.000000000 +0100 +++ xfs-cmds/xfstests/common 2008-12-22 14:06:59.485250140 +0100 @@ -107,6 +107,7 @@ check options -nfs test NFS -l line mode diff (default) -xdiff graphical mode diff + -udiff show unified diff -n show me, do not run tests -q quick [deprecated] -T output timestamps @@ -157,6 +158,11 @@ testlist options fi ;; + -udiff) # show a unified diff + xpand=false + diff="$diff -u" + ;; + -q) # "quick", no longer used - always quick :-) xpand=false ;; -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:44:00 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-3.9 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_44, J_CHICKENPOX_45,J_CHICKENPOX_55,J_CHICKENPOX_62,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 mBMGi0ag006462 for ; Mon, 22 Dec 2008 10:44:00 -0600 X-ASG-Debug-ID: 1229964239-4f6903390000-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 651CD1775789 for ; Mon, 22 Dec 2008 08:43:59 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id CS6asKDdaWeu4guk for ; Mon, 22 Dec 2008 08:43:59 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnsr-0005lo-GQ; Mon, 22 Dec 2008 16:43:58 +0000 Message-Id: <20081222164357.420676000@bombadil.infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:38 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 07/20] return error status from the xfs_quota tool Subject: [PATCH 07/20] return error status from the xfs_quota tool Content-Disposition: inline; filename=xfsprogs-quota-exitstatus.patch 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: 1229964239 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com From: Arkadiusz Miskiewicz xfs_quota doesn't report success/failure in exit status which prevents it from being used in automated scripts easily. Add proper exit codes. Reviewed-by: Christoph Hellwig diff -urN xfs-cmds/xfsprogs/quota.org/edit.c xfs-cmds/xfsprogs/quota/edit.c --- xfs-cmds/xfsprogs/quota.org/edit.c 2007-09-11 04:01:20.000000000 +0200 +++ xfs-cmds/xfsprogs/quota/edit.c 2008-04-18 15:46:17.838170367 +0200 @@ -140,9 +140,11 @@ d.d_rtb_hardlimit = *rtbhard; d.d_rtb_softlimit = *rtbsoft; - if (xfsquotactl(XFS_SETQLIM, dev, type, id, (void *)&d) < 0) + if (xfsquotactl(XFS_SETQLIM, dev, type, id, (void *)&d) < 0) { + exitcode = 1; fprintf(stderr, _("%s: cannot set limits: %s\n"), progname, strerror(errno)); + } } static void @@ -159,10 +161,11 @@ { uid_t uid = uid_from_string(name); - if (uid == -1) + if (uid == -1) { + exitcode = 1; fprintf(stderr, _("%s: invalid user name: %s\n"), progname, name); - else + } else set_limits(uid, type, mask, fs_path->fs_name, bsoft, bhard, isoft, ihard, rtbsoft, rtbhard); } @@ -181,10 +184,11 @@ { gid_t gid = gid_from_string(name); - if (gid == -1) + if (gid == -1) { + exitcode = 1; fprintf(stderr, _("%s: invalid group name: %s\n"), progname, name); - else + } else set_limits(gid, type, mask, fs_path->fs_name, bsoft, bhard, isoft, ihard, rtbsoft, rtbhard); } @@ -203,10 +207,11 @@ { prid_t prid = prid_from_string(name); - if (prid == -1) + if (prid == -1) { + exitcode = 1; fprintf(stderr, _("%s: invalid project name: %s\n"), progname, name); - else + } else set_limits(prid, type, mask, fs_path->fs_name, bsoft, bhard, isoft, ihard, rtbsoft, rtbhard); } @@ -315,12 +320,14 @@ else if (extractb(s, "rtbhard=", 7, bsize, ssize, &rtbhard)) mask |= FS_DQ_RTBHARD; else { + exitcode = 1; fprintf(stderr, _("%s: unrecognised argument %s\n"), progname, s); return 0; } } if (!mask) { + exitcode = 1; fprintf(stderr, _("%s: cannot find any valid arguments\n"), progname); return 0; @@ -428,6 +435,7 @@ if (fname) { if ((fp = fopen(fname, "r")) == NULL) { + exitcode = 1; fprintf(stderr, _("%s: fopen on %s failed: %s\n"), progname, fname, strerror(errno)); return 0; @@ -458,9 +466,11 @@ d.d_btimer = value; d.d_rtbtimer = value; - if (xfsquotactl(XFS_SETQLIM, dev, type, 0, (void *)&d) < 0) + if (xfsquotactl(XFS_SETQLIM, dev, type, 0, (void *)&d) < 0) { + exitcode = 1; fprintf(stderr, _("%s: cannot set timer: %s\n"), progname, strerror(errno)); + } } static int @@ -530,9 +540,11 @@ d.d_bwarns = value; d.d_rtbwarns = value; - if (xfsquotactl(XFS_SETQLIM, dev, type, id, (void *)&d) < 0) + if (xfsquotactl(XFS_SETQLIM, dev, type, id, (void *)&d) < 0) { + exitcode = 1; fprintf(stderr, _("%s: cannot set warnings: %s\n"), progname, strerror(errno)); + } } static void @@ -544,10 +556,11 @@ { uid_t uid = uid_from_string(name); - if (uid == -1) + if (uid == -1) { + exitcode = 1; fprintf(stderr, _("%s: invalid user name: %s\n"), progname, name); - else + } else set_warnings(uid, type, mask, fs_path->fs_name, value); } @@ -560,10 +573,11 @@ { gid_t gid = gid_from_string(name); - if (gid == -1) + if (gid == -1) { + exitcode = 1; fprintf(stderr, _("%s: invalid group name: %s\n"), progname, name); - else + } else set_warnings(gid, type, mask, fs_path->fs_name, value); } @@ -576,10 +590,11 @@ { prid_t prid = prid_from_string(name); - if (prid == -1) + if (prid == -1) { + exitcode = 1; fprintf(stderr, _("%s: invalid project name: %s\n"), progname, name); - else + } else set_warnings(prid, type, mask, fs_path->fs_name, value); } diff -urN xfs-cmds/xfsprogs/quota.org/free.c xfs-cmds/xfsprogs/quota/free.c --- xfs-cmds/xfsprogs/quota.org/free.c 2007-09-11 04:01:20.000000000 +0200 +++ xfs-cmds/xfsprogs/quota/free.c 2008-04-18 15:46:57.233387016 +0200 @@ -61,6 +61,7 @@ int fd; if ((fd = open(mount->fs_dir, O_RDONLY)) < 0) { + exitcode = 1; fprintf(stderr, "%s: cannot open %s: %s\n", progname, mount->fs_dir, strerror(errno)); return 0; @@ -128,17 +129,20 @@ return 0; if ((fd = open(path->fs_dir, O_RDONLY)) < 0) { + exitcode = 1; fprintf(stderr, "%s: cannot open %s: %s\n", progname, path->fs_dir, strerror(errno)); return 0; } if ((xfsctl(path->fs_dir, fd, XFS_IOC_FSGETXATTR, &fsx)) < 0) { + exitcode = 1; perror("XFS_IOC_FSGETXATTR"); close(fd); return 0; } if (!(fsx.fsx_xflags & XFS_XFLAG_PROJINHERIT)) { + exitcode = 1; fprintf(stderr, _("%s: project quota flag not set on %s\n"), progname, path->fs_dir); close(fd); @@ -146,6 +150,7 @@ } if (path->fs_prid != fsx.fsx_projid) { + exitcode = 1; fprintf(stderr, _("%s: project ID %u (%s) doesn't match ID %u (%s)\n"), progname, path->fs_prid, projects_file, diff -urN xfs-cmds/xfsprogs/quota.org/project.c xfs-cmds/xfsprogs/quota/project.c --- xfs-cmds/xfsprogs/quota.org/project.c 2007-09-11 04:01:20.000000000 +0200 +++ xfs-cmds/xfsprogs/quota/project.c 2008-04-18 15:49:06.202885828 +0200 @@ -91,6 +91,7 @@ int fd; if (flag == FTW_NS ){ + exitcode = 1; fprintf(stderr, _("%s: cannot stat file %s\n"), progname, path); return 0; } @@ -99,14 +100,16 @@ return 0; } - if ((fd = open(path, O_RDONLY|O_NOCTTY)) == -1) + if ((fd = open(path, O_RDONLY|O_NOCTTY)) == -1) { + exitcode = 1; fprintf(stderr, _("%s: cannot open %s: %s\n"), progname, path, strerror(errno)); - else if ((xfsctl(path, fd, XFS_IOC_FSGETXATTR, &fsx)) < 0) + } else if ((xfsctl(path, fd, XFS_IOC_FSGETXATTR, &fsx)) < 0) { + exitcode = 1; fprintf(stderr, _("%s: cannot get flags on %s: %s\n"), progname, path, strerror(errno)); - else { - if (fsx.fsx_projid != prid) + } else { + if (fsx.fsx_projid != prid) printf(_("%s - project identifier is not set" " (inode=%u, tree=%u)\n"), path, fsx.fsx_projid, (unsigned int)prid); @@ -130,6 +133,7 @@ int fd; if (flag == FTW_NS ){ + exitcode = 1; fprintf(stderr, _("%s: cannot stat file %s\n"), progname, path); return 0; } @@ -139,10 +143,12 @@ } if ((fd = open(path, O_RDONLY|O_NOCTTY)) == -1) { + exitcode = 1; fprintf(stderr, _("%s: cannot open %s: %s\n"), progname, path, strerror(errno)); return 0; } else if (xfsctl(path, fd, XFS_IOC_FSGETXATTR, &fsx) < 0) { + exitcode = 1; fprintf(stderr, _("%s: cannot get flags on %s: %s\n"), progname, path, strerror(errno)); close(fd); @@ -151,9 +157,11 @@ fsx.fsx_projid = 0; fsx.fsx_xflags &= ~XFS_XFLAG_PROJINHERIT; - if (xfsctl(path, fd, XFS_IOC_FSSETXATTR, &fsx) < 0) + if (xfsctl(path, fd, XFS_IOC_FSSETXATTR, &fsx) < 0) { + exitcode = 1; fprintf(stderr, _("%s: cannot clear project on %s: %s\n"), progname, path, strerror(errno)); + } close(fd); return 0; } @@ -169,6 +177,7 @@ int fd; if (flag == FTW_NS ){ + exitcode = 1; fprintf(stderr, _("%s: cannot stat file %s\n"), progname, path); return 0; } @@ -178,10 +187,12 @@ } if ((fd = open(path, O_RDONLY|O_NOCTTY)) == -1) { + exitcode = 1; fprintf(stderr, _("%s: cannot open %s: %s\n"), progname, path, strerror(errno)); return 0; } else if (xfsctl(path, fd, XFS_IOC_FSGETXATTR, &fsx) < 0) { + exitcode = 1; fprintf(stderr, _("%s: cannot get flags on %s: %s\n"), progname, path, strerror(errno)); close(fd); @@ -190,9 +201,11 @@ fsx.fsx_projid = prid; fsx.fsx_xflags |= XFS_XFLAG_PROJINHERIT; - if (xfsctl(path, fd, XFS_IOC_FSSETXATTR, &fsx) < 0) + if (xfsctl(path, fd, XFS_IOC_FSSETXATTR, &fsx) < 0) { + exitcode = 1; fprintf(stderr, _("%s: cannot set project on %s: %s\n"), progname, path, strerror(errno)); + } close(fd); return 0; } @@ -272,6 +285,7 @@ setprfiles(); if (access(projects_file, F_OK) != 0) { + exitcode = 1; fprintf(stderr, _("projects file \"%s\" doesn't exist\n"), projects_file); return 0; @@ -279,10 +293,11 @@ while (argc > optind) { prid = prid_from_string(argv[optind]); - if (prid == -1) + if (prid == -1) { + exitcode = 1; fprintf(stderr, _("%s - no such project in %s\n"), argv[optind], projects_file); - else + } else project(argv[optind], type); optind++; } diff -urN xfs-cmds/xfsprogs/quota.org/quota.c xfs-cmds/xfsprogs/quota/quota.c --- xfs-cmds/xfsprogs/quota.org/quota.c 2007-09-11 04:01:20.000000000 +0200 +++ xfs-cmds/xfsprogs/quota/quota.c 2008-04-18 15:49:28.803966289 +0200 @@ -231,6 +231,7 @@ id = u->pw_uid; name = u->pw_name; } else { + exitcode = 1; fprintf(stderr, _("%s: cannot find user %s\n"), progname, name); return; @@ -280,6 +281,7 @@ gid = g->gr_gid; name = g->gr_name; } else { + exitcode = 1; fprintf(stderr, _("%s: cannot find group %s\n"), progname, name); return; @@ -336,6 +338,7 @@ prid_t id; if (!name) { + exitcode = 1; fprintf(stderr, _("%s: must specify a project name/ID\n"), progname); return; @@ -348,6 +351,7 @@ id = p->pr_prid; name = p->pr_name; } else { + exitcode = 1; fprintf(stderr, _("%s: cannot find project %s\n"), progname, name); return; diff -urN xfs-cmds/xfsprogs/quota.org/report.c xfs-cmds/xfsprogs/quota/report.c --- xfs-cmds/xfsprogs/quota.org/report.c 2007-09-11 04:01:20.000000000 +0200 +++ xfs-cmds/xfsprogs/quota/report.c 2008-04-18 15:49:40.684534248 +0200 @@ -115,6 +115,7 @@ uint id; if ((mount = fs_table_lookup(dir, FS_MOUNT_POINT)) == NULL) { + exitcode = 1; fprintf(stderr, "%s: cannot find mount point %s\n", progname, dir); return; diff -urN xfs-cmds/xfsprogs/quota.org/state.c xfs-cmds/xfsprogs/quota/state.c --- xfs-cmds/xfsprogs/quota.org/state.c 2007-09-11 04:01:20.000000000 +0200 +++ xfs-cmds/xfsprogs/quota/state.c 2008-04-18 15:50:18.026319397 +0200 @@ -253,6 +253,7 @@ mount = fs_table_lookup(dir, FS_MOUNT_POINT); if (!mount) { + exitcode = 1; fprintf(stderr, "%s: unknown mount point %s\n", progname, dir); return; } @@ -274,6 +275,7 @@ mount = fs_table_lookup(dir, FS_MOUNT_POINT); if (!mount) { + exitcode = 1; fprintf(stderr, "%s: unknown mount point %s\n", progname, dir); return; } @@ -295,6 +297,7 @@ mount = fs_table_lookup(dir, FS_MOUNT_POINT); if (!mount) { + exitcode = 1; fprintf(stderr, "%s: unknown mount point %s\n", progname, dir); return; } @@ -327,6 +330,7 @@ mount = fs_table_lookup(dir, FS_MOUNT_POINT); if (!mount) { + exitcode = 1; fprintf(stderr, "%s: unknown mount point %s\n", progname, dir); return; } diff -urN xfs-cmds/xfsprogs/quota.org/util.c xfs-cmds/xfsprogs/quota/util.c --- xfs-cmds/xfsprogs/quota.org/util.c 2007-09-11 04:01:20.000000000 +0200 +++ xfs-cmds/xfsprogs/quota/util.c 2008-04-18 15:50:29.823550039 +0200 @@ -413,11 +413,13 @@ return stdout; if ((fd = open(fname, O_CREAT|O_WRONLY|O_EXCL, 0600)) < 0) { + exitcode = 1; fprintf(stderr, _("%s: open on %s failed: %s\n"), progname, fname, strerror(errno)); return NULL; } if ((fp = fdopen(fd, "w")) == NULL) { + exitcode = 1; fprintf(stderr, _("%s: fdopen on %s failed: %s\n"), progname, fname, strerror(errno)); close(fd); -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:44:10 2008 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 mBMGiA2L006529 for ; Mon, 22 Dec 2008 10:44:10 -0600 X-ASG-Debug-ID: 1229964249-63be02660000-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 690121775793 for ; Mon, 22 Dec 2008 08:44:09 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Ahr4dcZFqmFZ4ydG for ; Mon, 22 Dec 2008 08:44:09 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnt2-0005oK-NH; Mon, 22 Dec 2008 16:44:08 +0000 Message-Id: <20081222164408.619124000@bombadil.infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:43 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 12/20] EXCLUDED_FILE_TYPES: Fix macro for negation case Subject: [PATCH 12/20] EXCLUDED_FILE_TYPES: Fix macro for negation case Content-Disposition: inline; filename=xfsprogs-quota-fix-macro-bracing 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: 1229964249 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com From: Arkadiusz Miskiewicz --- xfsprogs/quota/project.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/xfsprogs/quota/project.c b/xfsprogs/quota/project.c index 7eac8e4..b4171e5 100644 --- a/xfsprogs/quota/project.c +++ b/xfsprogs/quota/project.c @@ -31,11 +31,11 @@ enum { }; #define EXCLUDED_FILE_TYPES(x) \ - S_ISCHR((x)) \ + (S_ISCHR((x)) \ || S_ISBLK((x)) \ || S_ISFIFO((x)) \ || S_ISLNK((x)) \ - || S_ISSOCK((x)) + || S_ISSOCK((x))) static void project_help(void) -- 1.6.0.5 _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:44:11 2008 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 mBMGiBxW006550 for ; Mon, 22 Dec 2008 10:44:11 -0600 X-ASG-Debug-ID: 1229964250-63c3024b0000-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 7D3E3177579B for ; Mon, 22 Dec 2008 08:44:10 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id GVZUEPqfZhIFVdjg for ; Mon, 22 Dec 2008 08:44:10 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnt4-0005pr-2l; Mon, 22 Dec 2008 16:44:10 +0000 Message-Id: <20081222164409.990496000@bombadil.infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:46 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 15/20] fix xfsqa 189 for log and rt devices Subject: [PATCH 15/20] fix xfsqa 189 for log and rt devices Content-Disposition: inline; filename=xfstests-fix-189-for-log-and-rtdev 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: 1229964250 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com From: Matthew Kent Reviewed-by: Christoph Hellwig --- xfs-cmds/xfstests/189.orig 2008-11-21 13:43:33.000000000 -0800 +++ xfs-cmds/xfstests/189 2008-11-21 13:42:48.000000000 -0800 @@ -188,8 +188,8 @@ _need_to_be_root _require_scratch -unset SCRATCH_OPTIONS -unset MOUNT_OPTIONS +unset SCRATCH_RTDEV +unset SCRATCH_LOGDEV _scratch_mkfs_xfs | _filter_mkfs 2>/dev/null -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:44:12 2008 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 mBMGiCUW006559 for ; Mon, 22 Dec 2008 10:44:12 -0600 X-ASG-Debug-ID: 1229964250-51d301050000-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 07B923F8E2 for ; Mon, 22 Dec 2008 08:44:10 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 3UFIvbC6IxjG8PqM for ; Mon, 22 Dec 2008 08:44:10 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnt4-0005qd-BF; Mon, 22 Dec 2008 16:44:10 +0000 Message-Id: <20081222164410.263749000@bombadil.infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:47 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 16/20] xfstests: fix dbtest build Subject: [PATCH 16/20] xfstests: fix dbtest build Content-Disposition: inline; filename=xfstests-fix-dbtest-build 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: 1229964251 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com From: Eric Sandeen At least on my x86_64 RHEL5 box, if gdbm-devel is installed, then the xfstests build fails with: gcc dbtest.c -o dbtest -g -O2 -DDEBUG -I../include -DVERSION=\"1.0.0\" -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -funsigned-char -fno-strict-aliasing -Wall ../lib/.libs/libtest.a dbtest.c: In function 'InitDbmLookup': dbtest.c:147: warning: cast from pointer to integer of different size dbtest.c:198: warning: cast from pointer to integer of different size /tmp/ccuekqxe.o: In function `CleanupDbmLookup': /root/cvs/xfs-cmds-build/xfstests/src/dbtest.c:304: undefined reference to `dbm_close' /tmp/ccuekqxe.o: In function `DoDbmLookup': /root/cvs/xfs-cmds-build/xfstests/src/dbtest.c:220: undefined reference to `dbm_fetch' /root/cvs/xfs-cmds-build/xfstests/src/dbtest.c:264: undefined reference to `dbm_fetch' /tmp/ccuekqxe.o: In function `InitDbmLookup': /root/cvs/xfs-cmds-build/xfstests/src/dbtest.c:146: undefined reference to `dbm_open' /root/cvs/xfs-cmds-build/xfstests/src/dbtest.c:179: undefined reference to `dbm_store' /root/cvs/xfs-cmds-build/xfstests/src/dbtest.c:192: undefined reference to `dbm_close' /root/cvs/xfs-cmds-build/xfstests/src/dbtest.c:197: undefined reference to `dbm_open' collect2: ld returned 1 exit status gmake[1]: *** [dbtest] Error 1 make: *** [default] Error 2 This patch fixes it for me, but my userspace-fu is weak; does this look ok? Reviewed-by: Christoph Hellwig Index: xfs-cmds-build/xfstests/aclocal.m4 =================================================================== --- xfs-cmds-build.orig/xfstests/aclocal.m4 +++ xfs-cmds-build/xfstests/aclocal.m4 @@ -197,8 +197,8 @@ AC_DEFUN([AC_PACKAGE_WANT_NDBM], AC_DEFUN([AC_PACKAGE_WANT_GDBM], [ AC_CHECK_HEADERS([gdbm/ndbm.h], [ have_db=true ], [ have_db=false ]) - if test $have_db = true -a -f ${libexecdir}${libdirsuffix}/libgdbm.a; then - libgdbm="${libexecdir}${libdirsuffix}/libgdbm.a" + if test $have_db = true; then + libgdbm="-lgdbm" fi AC_SUBST(libgdbm) AC_SUBST(have_db) -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:44:44 2008 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 mBMGihnQ006723 for ; Mon, 22 Dec 2008 10:44:44 -0600 X-ASG-Debug-ID: 1229964281-51d200f50000-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 C2E9C3F8EB for ; Mon, 22 Dec 2008 08:44:41 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 57Gi4a2bgWyZuSSY for ; Mon, 22 Dec 2008 08:44:41 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnt4-0005r9-R9; Mon, 22 Dec 2008 16:44:10 +0000 Message-Id: <20081222164410.730134000@bombadil.infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:48 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 17/20] xfstests: add more tests to the auto group Subject: [PATCH 17/20] xfstests: add more tests to the auto group Content-Disposition: inline; filename=xfstests-more-auto-tests 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: 1229964281 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com make sure we run all tests than don't either take forever or currently fail (or require a tape drive) to the auto group. Signed-off-by: Christoph Hellwig Index: xfs-cmds/xfstests/group =================================================================== --- xfs-cmds.orig/xfstests/group 2008-12-22 14:19:47.561247633 +0100 +++ xfs-cmds/xfstests/group 2008-12-22 17:25:29.464372849 +0100 @@ -166,7 +166,7 @@ atime 061 dump ioctl auto 062 attr udf auto 063 dump attr auto -064 dump +064 dump auto 065 dump auto 066 dump ioctl auto 067 acl attr auto @@ -187,9 +187,9 @@ atime 082 log logprint v2log auto 083 rw auto 084 ioctl rw auto -085 log -086 log v2log -087 log v2log +085 log auto +086 log v2log auto +087 log v2log auto 088 perms auto 089 metadata auto 090 rw auto @@ -200,7 +200,7 @@ atime 095 log v2log auto 096 mkfs v2log auto 097 udf auto -098 udf +098 udf auto 099 udf auto 100 udf auto 101 udf @@ -211,17 +211,17 @@ atime 106 quota 107 quota 108 quota -109 metadata -110 repair +109 metadata auto +110 repair auto 111 ioctl 112 rw aio auto -113 rw aio +113 rw aio auto 114 parent attr 115 parent attr -116 quota +116 quota auto 117 attr auto -118 quota -119 log v2log +118 quota auto +119 log v2log auto 120 other auto 121 log auto 122 other auto @@ -235,7 +235,7 @@ atime 130 pattern auto 131 perms auto 132 pattern auto -133 rw +133 rw auto 134 quota auto 135 metadata auto 136 attr2 -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:44:10 2008 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 mBMGiAIp006521 for ; Mon, 22 Dec 2008 10:44:10 -0600 X-ASG-Debug-ID: 1229964248-63c602810000-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 E526D1775793 for ; Mon, 22 Dec 2008 08:44:08 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id g3qH0PwfPSmsJRbR for ; Mon, 22 Dec 2008 08:44:08 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnsw-0005nm-79; Mon, 22 Dec 2008 16:44:02 +0000 Message-Id: <20081222164402.137882000@bombadil.infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:42 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 11/20] xfs_quota: Dont ignore every error when asking for quota Subject: [PATCH 11/20] xfs_quota: Dont ignore every error when asking for quota Content-Disposition: inline; filename=xfsprogs-quota-dont-ignore-all-errors 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: 1229964248 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com From: Arkadiusz Miskiewicz Errors from quotactl() were silently ignored like: $ xfs_quota -x -c "report -u -L 12000 -U 12001" $ Print error messages for conditions other than ENOENT and ENOSYS (these two aren't actually errors for the way quotactl is used). We now get: $ ./xfs_quota -x -c "report -u -L 12000 -U 12001" /home XFS_GETQUOTA: Operation not permitted XFS_GETQUOTA: Operation not permitted $ which is consistent with error reporting in rest of quotactl using code. Reviewed-by: Christoph Hellwig --- xfsprogs/quota/report.c | 28 ++++++++++++++++++++-------- 1 files changed, 20 insertions(+), 8 deletions(-) diff --git a/xfsprogs/quota/report.c b/xfsprogs/quota/report.c index 2184158..73248d0 100644 --- a/xfsprogs/quota/report.c +++ b/xfsprogs/quota/report.c @@ -81,8 +81,11 @@ dump_file( { fs_disk_quota_t d; - if (xfsquotactl(XFS_GETQUOTA, dev, type, id, (void *)&d) < 0) + if (xfsquotactl(XFS_GETQUOTA, dev, type, id, (void *)&d) < 0) { + if (errno != ENOENT && errno != ENOSYS) + perror("XFS_GETQUOTA"); return; + } if (!d.d_blk_softlimit && !d.d_blk_hardlimit && !d.d_ino_softlimit && !d.d_ino_hardlimit && !d.d_rtb_softlimit && !d.d_rtb_hardlimit) @@ -298,8 +301,11 @@ report_mount( uint qflags; int count; - if (xfsquotactl(XFS_GETQUOTA, dev, type, id, (void *)&d) < 0) + if (xfsquotactl(XFS_GETQUOTA, dev, type, id, (void *)&d) < 0) { + if (errno != ENOENT && errno != ENOSYS) + perror("XFS_GETQUOTA"); return 0; + } if (flags & TERSE_FLAG) { count = 0; @@ -514,8 +520,10 @@ report_any_type( if (type & XFS_USER_QUOTA) { fs_cursor_initialise(dir, FS_MOUNT_POINT, &cursor); while ((mount = fs_cursor_next_entry(&cursor))) { - xfsquotactl(XFS_QSYNC, mount->fs_name, - XFS_USER_QUOTA, 0, NULL); + if (xfsquotactl(XFS_QSYNC, mount->fs_name, + XFS_USER_QUOTA, 0, NULL) < 0 + && errno != ENOENT && errno != ENOSYS) + perror("XFS_QSYNC user quota"); report_user_mount(fp, form, mount, lower, upper, flags); } @@ -523,8 +531,10 @@ report_any_type( if (type & XFS_GROUP_QUOTA) { fs_cursor_initialise(dir, FS_MOUNT_POINT, &cursor); while ((mount = fs_cursor_next_entry(&cursor))) { - xfsquotactl(XFS_QSYNC, mount->fs_name, - XFS_GROUP_QUOTA, 0, NULL); + if (xfsquotactl(XFS_QSYNC, mount->fs_name, + XFS_GROUP_QUOTA, 0, NULL) < 0 + && errno != ENOENT && errno != ENOSYS) + perror("XFS_QSYNC group quota"); report_group_mount(fp, form, mount, lower, upper, flags); } @@ -532,8 +542,10 @@ report_any_type( if (type & XFS_PROJ_QUOTA) { fs_cursor_initialise(dir, FS_MOUNT_POINT, &cursor); while ((mount = fs_cursor_next_entry(&cursor))) { - xfsquotactl(XFS_QSYNC, mount->fs_name, - XFS_PROJ_QUOTA, 0, NULL); + if (xfsquotactl(XFS_QSYNC, mount->fs_name, + XFS_PROJ_QUOTA, 0, NULL) < 0 + && errno != ENOENT && errno != ENOSYS) + perror("XFS_QSYNC proj quota"); report_project_mount(fp, form, mount, lower, upper, flags); } -- 1.6.0.5 _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:44:43 2008 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 mBMGihYA006724 for ; Mon, 22 Dec 2008 10:44:43 -0600 X-ASG-Debug-ID: 1229964281-51d301060000-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 171A53F8EF for ; Mon, 22 Dec 2008 08:44:41 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id ATiPGJHLysvwvF8a for ; Mon, 22 Dec 2008 08:44:41 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnt5-0005rc-5J; Mon, 22 Dec 2008 16:44:11 +0000 Message-Id: <20081222164411.065734000@bombadil.infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:49 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz , Eric Sandeen X-ASG-Orig-Subj: [PATCH 18/20] 080 seems to run fine on linux, un-comment the quiet var to make the output match. Added to auto group as well. Subject: [PATCH 18/20] 080 seems to run fine on linux, un-comment the quiet var to make the output match. Added to auto group as well. Content-Disposition: inline; filename=xfstests-fix-and-enable-080 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: 1229964282 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Signed-off-by: Eric Sandeen --- Index: xfs-cmds/xfstests/080 =================================================================== --- xfs-cmds.orig/xfstests/080 2008-12-22 14:19:47.585247967 +0100 +++ xfs-cmds/xfstests/080 2008-12-22 17:26:25.692247678 +0100 @@ -33,14 +33,13 @@ _supported_fs xfs # Apparently should be able to work on IRIX, # but not at the moment. -# It does not work on Linux due to some locking issues... -_supported_os IRIX +_supported_os IRIX Linux [ $HOSTOS == IRIX ] && _notrun "Not working on IRIX yet" _setup_testdir -#quiet=-q +quiet=-q clean=-c export here Index: xfs-cmds/xfstests/group =================================================================== --- xfs-cmds.orig/xfstests/group 2008-12-22 17:25:29.464372849 +0100 +++ xfs-cmds/xfstests/group 2008-12-22 17:26:25.692247678 +0100 @@ -182,7 +182,7 @@ atime 077 acl attr auto 078 growfs auto 079 acl attr ioctl metadata auto -080 rw ioctl +080 rw ioctl auto 081 log logprint quota auto 082 log logprint v2log auto 083 rw auto -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:44:11 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,WEIRD_QUOTING 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 mBMGiB2Z006537 for ; Mon, 22 Dec 2008 10:44:11 -0600 X-ASG-Debug-ID: 1229964249-51d500f40000-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 107623F8DC for ; Mon, 22 Dec 2008 08:44:09 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 0yG8LcosiS6Wz1xa for ; Mon, 22 Dec 2008 08:44:09 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnt3-0005oo-7y; Mon, 22 Dec 2008 16:44:09 +0000 Message-Id: <20081222164409.160109000@bombadil.infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:44 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 13/20] xfstests: test 194, test tricky mapping/conversion around holes Subject: [PATCH 13/20] xfstests: test 194, test tricky mapping/conversion around holes Content-Disposition: inline; filename=xfstests-add-corruption-test 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: 1229964250 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com From: Eric Sandeen Related to http://oss.sgi.com/bugzilla/show_bug.cgi?id=801 Latest patch posted on that bug makes this testcase pass... (are we at 194 now?) first 2 tests are simple buffred writ tests making sure stale data isn't exposed, and hole-blocks aren't mapped. 2nd 2 tests are more related to the above bug, tricky testcase uncovered by fsx on ppc64 which actually re-maps a block which should be a hole, bringing stale data back into existence. Reviewed-by: Christoph Hellwig --- /dev/null 2008-12-01 16:01:41.522110504 -0600 +++ xfs-cmds/xfstests/194 2008-12-12 13:57:13.000000000 -0600 @@ -0,0 +1,200 @@ +#! /bin/sh +# FS QA Test No. 194 +# +# Test mapping around/over holes for sub-page blocks +# http://oss.sgi.com/bugzilla/show_bug.cgi?id=801 +# +#----------------------------------------------------------------------- +# Copyright (c) 2008 Eric Sandeen. All Rights Reserved. +#----------------------------------------------------------------------- +# +# creator +owner=sandeen@sandeen.net + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $tmp.* +} + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# only xfs supported due to use of xfs_bmap +_supported_fs xfs +_supported_os IRIX Linux + +# real QA test starts here +rm -f $seq.full + +# For this test we use block size = 1/8 page size +pgsize=`$here/src/feature -s` +blksize=`expr $pgsize / 8` + +# EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL +# 0: [0..63]: 160..223 0 (160..223) 64 +# 1: [64..127]: hole 64 + +# Filter out file mountpoint and physical location info +_filter_bmap() +{ + tee -a $seq.full | \ + sed "s#$SCRATCH_MNT#SCRATCH_MNT#g" | \ + awk --assign blksize=$blksize \ + '$3 ~ /hole/ { print $1 "\t" $3 "\t" ($4 * 512) / blksize; next } + $1 ~ /^[0-9]/ { print $1 "\tblocks\t" ($6 * 512) / blksize; next } + { print $1 "\tTYPE\t" $6 }' +} + +# Filter out offsets, which vary by blocksize +_filter_od() +{ + tee -a $seq.full | \ + sed -e "s/^[0-9A-Fa-f ]\{7,8\}//" +} + +_require_scratch +unset MKFS_OPTIONS +unset XFS_MKFS_OPTIONS +_scratch_mkfs_xfs -b size=$blksize >/dev/null 2>&1 +_scratch_mount + +# 512b block / 4k page example: +# +#1) Write 1k of data (buffered): +# +# |1111|1111| +# +# 2) ftruncate back to 256 bytes: +# +# |1100| +# +# 3) ftruncate out to 4k: ("H" means hole (expected)) +# +# |1100|HHHH|HHHH|HHHH|HHHH|HHHH|HHHH|HHHH| +# +# So we should have 1 block of data/0, 7 blocks of holes. +# +# 4) check what's there with a direct IO read +# +# In fact what I get is 1 block of data/0, 1 block of 0's, and 7 blocks of +# garbage: +# +# |1100|0000|GGGG|GGGG|GGGG|GGGG|GGGG|GGGG| +# +# The garbage is in fact stale data from the disk. +# +# Check that we don't get stale data and that the hole is a hole: + +echo "== Test 1 ==" +# Write, truncate in, truncate out +xfs_io \ +-c "pwrite -S 0x11 -b `expr $pgsize / 2` 0 `expr $pgsize / 2`" \ +-c "truncate `expr $blksize / 2`" \ +-c "truncate $pgsize" \ +-t -f $SCRATCH_MNT/testfile1 >> $seq.full + +# directio read of entire file +xfs_io \ +-c "pread 0 $pgsize" \ +-d $SCRATCH_MNT/testfile1 >> $seq.full + +xfs_bmap -v $SCRATCH_MNT/testfile1 | _filter_bmap +od -x $SCRATCH_MNT/testfile1 | _filter_od + +# Similar but write another block to create block/hole/block/hole + +echo "== Test 2 ==" +# Write, truncate in, truncate out, write to middle +xfs_io \ +-c "pwrite -S 0x11 -b `expr $pgsize / 2` 0 `expr $pgsize / 2`" \ +-c "truncate `expr $blksize / 2`" \ +-c "truncate $pgsize" \ +-c "pwrite -S 0x22 -b $blksize `expr $blksize \* 4` $blksize" \ +-t -f $SCRATCH_MNT/testfile2 >> $seq.full + +# directio read of entire file +xfs_io \ +-c "pread 0 $pgsize" \ +-d $SCRATCH_MNT/testfile2 >> $seq.full + +xfs_bmap -v $SCRATCH_MNT/testfile2 | _filter_bmap +od -x $SCRATCH_MNT/testfile2 | _filter_od + +# 512 byte block / 4k page example: + +# direct write 1 page (8 blocks) of "0x11" to 0x1000 +# map read 1 block, 512 (0x200) at 0 +# truncate to half a block, 256 (0x100) +# truncate to block+1, 513 (0x201) +# direct write "0x22" for 1 block at offset 2048 (0x800) + +# |1111|1111|1111|1111|1111|1111|1111|1111| Write 1's +# |MRMR|1111|1111|1111|1111|1111|1111|1111| mapread +# |11--| truncate down +# |1100|0---| truncate up, block+1 +# | | |HHHH|HHHH|2222| Write 2's (extending) + +# |uptodate?| +# |1100|0000|1111|1111|2222|----|----|----| <- potential badness + +# We're looking for this badness due to mapping over a hole: +# Exposes stale data from 0x400 (1024) through 0x800 (2048) + +# 00000000 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 |................| +# * +# 00000100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +# * +# 00000400 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 |................| <- BAD +# * +# 00000800 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 |""""""""""""""""| +# * +# 00000a00 + +# We *should* get: +# |1100|HHHH|HHHH|HHHH|2222|----|----|----| + +echo "== Test 3 ==" +xfs_io \ +-c "pwrite -S 0x11 -b $pgsize 0 $pgsize" \ +-c "mmap -r 0 $blksize" -c "mread 0 $blksize" -c "munmap" \ +-c "truncate `expr $blksize / 2`" \ +-c "truncate `expr $blksize + 1`" \ +-c "pwrite -S 0x22 -b $blksize `expr $pgsize / 2` $blksize" \ +-t -d -f $SCRATCH_MNT/testfile3 >> $seq.full + +xfs_bmap -v $SCRATCH_MNT/testfile3 | _filter_bmap +od -x $SCRATCH_MNT/testfile3 | _filter_od + +# Now try the same thing but write a sector in the middle of that hole +# If things go badly stale data will be exposed either side. +# This is most interesting for block size > 512 (page size > 4096) + +# We *should* get: +# |1100|HHHH|33HH|HHHH|2222|----|----|----| + +echo "== Test 4 ==" +xfs_io \ +-c "pwrite -S 0x11 -b $pgsize 0 $pgsize" \ +-c "mmap -r 0 $blksize" -c "mread 0 $blksize" -c "munmap" \ +-c "truncate `expr $blksize / 2`" \ +-c "truncate `expr $blksize + 1`" \ +-c "pwrite -S 0x22 -b $blksize `expr $pgsize / 2` $blksize" \ +-c "pwrite -S 0x33 -b 512 `expr $blksize \* 2` 512" \ +-t -d -f $SCRATCH_MNT/testfile4 >> $seq.full + +xfs_bmap -v $SCRATCH_MNT/testfile4 | _filter_bmap +od -x $SCRATCH_MNT/testfile4 | _filter_od + +# success, all done +status=0 +exit --- /dev/null 2008-12-01 16:01:41.522110504 -0600 +++ xfs-cmds/xfstests/194.out 2008-12-12 13:57:14.000000000 -0600 @@ -0,0 +1,59 @@ +QA output created by 194 +== Test 1 == +SCRATCH_MNT/testfile1: TYPE +EXT: TYPE TOTAL +0: blocks 1 +1: hole 7 +1111 1111 1111 1111 1111 1111 1111 1111 +* +0000 0000 0000 0000 0000 0000 0000 0000 +* + +== Test 2 == +SCRATCH_MNT/testfile2: TYPE +EXT: TYPE TOTAL +0: blocks 1 +1: hole 3 +2: blocks 1 +3: hole 3 +1111 1111 1111 1111 1111 1111 1111 1111 +* +0000 0000 0000 0000 0000 0000 0000 0000 +* +2222 2222 2222 2222 2222 2222 2222 2222 +* +0000 0000 0000 0000 0000 0000 0000 0000 +* + +== Test 3 == +SCRATCH_MNT/testfile3: TYPE +EXT: TYPE TOTAL +0: blocks 1 +1: hole 3 +2: blocks 1 +1111 1111 1111 1111 1111 1111 1111 1111 +* +0000 0000 0000 0000 0000 0000 0000 0000 +* +2222 2222 2222 2222 2222 2222 2222 2222 +* + +== Test 4 == +SCRATCH_MNT/testfile4: TYPE +EXT: TYPE TOTAL +0: blocks 1 +1: hole 1 +2: blocks 1 +3: hole 1 +4: blocks 1 +1111 1111 1111 1111 1111 1111 1111 1111 +* +0000 0000 0000 0000 0000 0000 0000 0000 +* +3333 3333 3333 3333 3333 3333 3333 3333 +* +0000 0000 0000 0000 0000 0000 0000 0000 +* +2222 2222 2222 2222 2222 2222 2222 2222 +* + _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:44:13 2008 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 mBMGiDu7006572 for ; Mon, 22 Dec 2008 10:44:13 -0600 X-ASG-Debug-ID: 1229964252-51dd00fb0000-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 748063F8E3 for ; Mon, 22 Dec 2008 08:44:12 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id IPeHxn0lNVfpJXGh for ; Mon, 22 Dec 2008 08:44:12 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnt5-0005s8-E3; Mon, 22 Dec 2008 16:44:11 +0000 Message-Id: <20081222164411.347208000@bombadil.infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:50 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 19/20] xfsdump: add support for building with sparse Subject: [PATCH 19/20] xfsdump: add support for building with sparse Content-Disposition: inline; filename=xfsdump-sparse 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: 1229964252 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Signed-off-by: Christoph Hellwig Index: xfs-cmds/xfsdump/include/buildmacros =================================================================== --- xfs-cmds.orig/xfsdump/include/buildmacros 2008-11-13 18:31:57.000000000 +0100 +++ xfs-cmds/xfsdump/include/buildmacros 2008-11-13 18:58:13.000000000 +0100 @@ -42,10 +42,10 @@ LIBNAME = $(basename $(LTLIBRARY)) LTOBJECTS = $(OBJECTS:.o=.lo) LTVERSION = $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -LTLINK = $(LIBTOOL) --mode=link $(CC) +LTLINK = $(LIBTOOL) --tag=CC --mode=link $(CC) LTEXEC = $(LIBTOOL) --mode=execute LTINSTALL = $(LIBTOOL) --mode=install $(INSTALL) -LTCOMPILE = $(LIBTOOL) --mode=compile $(CCF) +LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CCF) ifeq ($(ENABLE_SHARED),yes) LTLDFLAGS += -rpath $(PKG_LIB_DIR) -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:44:28 2008 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 mBMGiQtj006624 for ; Mon, 22 Dec 2008 10:44:28 -0600 X-ASG-Debug-ID: 1229964264-63c602840000-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 D2AF8177579D for ; Mon, 22 Dec 2008 08:44:24 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id FvXIkHLxtKSvurm9 for ; Mon, 22 Dec 2008 08:44:24 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnsn-0005in-AI; Mon, 22 Dec 2008 16:43:53 +0000 Message-Id: <20081222164353.220867000@bombadil.infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:32 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz , Eric Sandeen X-ASG-Orig-Subj: [PATCH 01/20] fix up xfs-cmds build after the parallel-fest Subject: [PATCH 01/20] fix up xfs-cmds build after the parallel-fest Content-Disposition: inline; filename=xfs-cmds-fix-configure 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: 1229964264 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com From: Eric Sandeen My big parallel build patch lost the "make configure" target. This broke Makepkgs... Now, IMHO, running configure from make is a little bass-ackwards; I'd probably prefer to have Makepkgs explicitly run: autoconf; configure --myoptions; make but for now, this adds back in a workable "make configure" target. Also fixed "make install-lib" for acl, which was failing in the man subdir. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Index: xfs-cmds/acl/Makefile =================================================================== --- xfs-cmds.orig/acl/Makefile 2008-12-22 09:54:24.347372730 +0100 +++ xfs-cmds/acl/Makefile 2008-12-22 10:06:10.819372446 +0100 @@ -38,7 +38,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoconf ./configure \ --prefix=/ \ Index: xfs-cmds/acl/man/Makefile =================================================================== --- xfs-cmds.orig/acl/man/Makefile 2008-12-22 09:54:24.352372110 +0100 +++ xfs-cmds/acl/man/Makefile 2008-12-22 10:06:10.819372446 +0100 @@ -13,10 +13,15 @@ install : $(addsuffix -install,$(SUBDIRS install-dev : $(addsuffix -install-dev,$(SUBDIRS)) +install-lib: $(addsuffix -install-lib,$(SUBDIRS)) + %-install: $(MAKE) -C $* install %-install-dev: $(MAKE) -C $* install-dev +%-install-lib: + $(MAKE) -C $* install-lib + include $(BUILDRULES) Index: xfs-cmds/dmapi/Makefile =================================================================== --- xfs-cmds.orig/dmapi/Makefile 2008-12-22 09:54:24.362371988 +0100 +++ xfs-cmds/dmapi/Makefile 2008-12-22 10:06:10.823372607 +0100 @@ -36,7 +36,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoconf ./configure \ --prefix=/ \ Index: xfs-cmds/xfsprogs/Makefile =================================================================== --- xfs-cmds.orig/xfsprogs/Makefile 2008-12-22 09:54:24.367371856 +0100 +++ xfs-cmds/xfsprogs/Makefile 2008-12-22 10:06:10.827371929 +0100 @@ -44,7 +44,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoconf ./configure \ --prefix=/ \ Index: xfs-cmds/xfsdump/Makefile =================================================================== --- xfs-cmds.orig/xfsdump/Makefile 2008-12-22 09:54:24.372372074 +0100 +++ xfs-cmds/xfsdump/Makefile 2008-12-22 10:33:52.896372798 +0100 @@ -37,7 +37,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoconf ./configure \ --prefix=/ \ Index: xfs-cmds/nfs4acl/Makefile =================================================================== --- xfs-cmds.orig/nfs4acl/Makefile 2008-12-22 09:54:24.377371943 +0100 +++ xfs-cmds/nfs4acl/Makefile 2008-12-22 10:06:10.835372599 +0100 @@ -39,7 +39,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoconf ./configure \ --prefix=/ \ Index: xfs-cmds/xfstests/Makefile =================================================================== --- xfs-cmds.orig/xfstests/Makefile 2008-12-22 09:54:24.382372022 +0100 +++ xfs-cmds/xfstests/Makefile 2008-12-22 10:06:10.844247263 +0100 @@ -42,7 +42,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoheader autoconf ./configure \ Index: xfs-cmds/attr/Makefile =================================================================== --- xfs-cmds.orig/attr/Makefile 2008-12-22 09:54:24.289373093 +0100 +++ xfs-cmds/attr/Makefile 2008-12-22 10:06:16.433373009 +0100 @@ -39,7 +39,7 @@ else clean: # if configure hasn't run, nothing to clean endif -include/builddefs: +configure include/builddefs: autoconf ./configure \ --prefix=/ \ -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:44:29 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-3.9 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_45, J_CHICKENPOX_51,J_CHICKENPOX_71,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 mBMGiTsk006638 for ; Mon, 22 Dec 2008 10:44:29 -0600 X-ASG-Debug-ID: 1229964267-460001640000-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 1F7543F8E9 for ; Mon, 22 Dec 2008 08:44:27 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id nVWnb7oy8ub9nkXC for ; Mon, 22 Dec 2008 08:44:27 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnsp-0005kl-NG; Mon, 22 Dec 2008 16:43:55 +0000 Message-Id: <20081222164355.600566000@bombadil.infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:36 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 05/20] xfsprogs Polish translation update Subject: [PATCH 05/20] xfsprogs Polish translation update Content-Disposition: inline; filename=xfsprogs-gettext-update-polish-translation 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: 1229964268 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com From: Jakub Bogusz . --- xfsprogs/po/pl.po | 2900 ++++++++++++++++++++++++++++++----------------------- 1 files changed, 1618 insertions(+), 1282 deletions(-) diff --git a/xfsprogs/po/pl.po b/xfsprogs/po/pl.po index 79cb822..b4e1d76 100644 --- a/xfsprogs/po/pl.po +++ b/xfsprogs/po/pl.po @@ -1,180 +1,180 @@ # Polish translation for xfsprogs. # This file is distributed under the same license as the xfsprogs package. -# Jakub Bogusz , 2006. +# Jakub Bogusz , 2006-2008. # msgid "" msgstr "" -"Project-Id-Version: xfsprogs 2.8.11\n" +"Project-Id-Version: xfsprogs 2.9.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-08-23 19:22+0200\n" -"PO-Revision-Date: 2006-08-23 19:24+0200\n" +"POT-Creation-Date: 2008-04-23 15:54+1000\n" +"PO-Revision-Date: 2008-06-18 17:11+0200\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8bit\n" -#: ../copy/xfs_copy.c:96 +#: ../copy/xfs_copy.c:102 #, c-format msgid "Check logfile \"%s\" for more details\n" msgstr "Wiêcej szczegó³ów w pliku loga \"%s\"\n" -#: ../copy/xfs_copy.c:102 +#: ../copy/xfs_copy.c:108 #, c-format msgid "%s: could not write to logfile \"%s\".\n" msgstr "%s: nie uda³o siê zapisaæ pliku loga \"%s\".\n" -#: ../copy/xfs_copy.c:105 +#: ../copy/xfs_copy.c:111 #, c-format msgid "Aborting XFS copy -- logfile error -- reason: %s\n" msgstr "Przerwano XFS copy - b³±d pliku loga - przyczyna: %s\n" -#: ../copy/xfs_copy.c:120 ../copy/xfs_copy.c:280 ../copy/xfs_copy.c:557 -#: ../copy/xfs_copy.c:564 +#: ../copy/xfs_copy.c:126 ../copy/xfs_copy.c:286 ../copy/xfs_copy.c:563 +#: ../copy/xfs_copy.c:570 msgid "Aborting XFS copy - reason" msgstr "Przerwano XFS copy - przyczyna" -#: ../copy/xfs_copy.c:134 +#: ../copy/xfs_copy.c:140 msgid "THE FOLLOWING COPIES FAILED TO COMPLETE\n" msgstr "NASTÊPUJ¡CYCH KOPII NIE UDA£O SIÊ UKOÑCZYÆ\n" -#: ../copy/xfs_copy.c:138 +#: ../copy/xfs_copy.c:144 msgid "write error" msgstr "b³±d zapisu" -#: ../copy/xfs_copy.c:140 +#: ../copy/xfs_copy.c:146 msgid "lseek64 error" msgstr "b³±d lseek64" -#: ../copy/xfs_copy.c:141 +#: ../copy/xfs_copy.c:147 #, c-format msgid " at offset %lld\n" msgstr " pod offsetem %lld\n" -#: ../copy/xfs_copy.c:145 +#: ../copy/xfs_copy.c:151 #, c-format msgid "All copies completed.\n" msgstr "Wszystkie kopie ukoñczone.\n" -#: ../copy/xfs_copy.c:148 +#: ../copy/xfs_copy.c:154 #, c-format msgid "See \"%s\" for more details.\n" msgstr "Wiêcej szczegó³ów w \"%s\".\n" -#: ../copy/xfs_copy.c:249 +#: ../copy/xfs_copy.c:255 #, c-format msgid "%s: write error on target %d \"%s\" at offset %lld\n" msgstr "%s: b³±d zapisu przy celu %d \"%s\" pod offsetem %lld\n" -#: ../copy/xfs_copy.c:254 +#: ../copy/xfs_copy.c:260 #, c-format msgid "%s: lseek64 error on target %d \"%s\" at offset %lld\n" msgstr "%s: b³±d lseek64 przy celu %d \"%s\" pod offsetem %lld\n" -#: ../copy/xfs_copy.c:260 +#: ../copy/xfs_copy.c:266 #, c-format msgid "Aborting target %d - reason" msgstr "Przerywano zapis celu %d - przyczyna" -#: ../copy/xfs_copy.c:264 +#: ../copy/xfs_copy.c:270 msgid "Aborting XFS copy - no more targets.\n" msgstr "Przerwano XFS copy - nie ma wiêcej celów.\n" -#: ../copy/xfs_copy.c:275 +#: ../copy/xfs_copy.c:281 #, c-format msgid "%s: thread %d died unexpectedly, target \"%s\" incomplete\n" msgstr "%s: w±tek %d zmar³ nieoczekiwanie, cel \"%s\" niekompletny\n" -#: ../copy/xfs_copy.c:277 +#: ../copy/xfs_copy.c:283 #, c-format msgid "%s: offset was probably %lld\n" msgstr "%s: offset prawdopodobnie %lld\n" -#: ../copy/xfs_copy.c:288 +#: ../copy/xfs_copy.c:294 #, c-format msgid "%s: Unknown child died (should never happen!)\n" msgstr "%s: Nieznany potomek zmar³ (nie powinno siê zdarzyæ!)\n" -#: ../copy/xfs_copy.c:298 +#: ../copy/xfs_copy.c:304 #, c-format msgid "Usage: %s [-bd] [-L logfile] source target [target ...]\n" msgstr "Sk³adnia: %s [-bd] [-L plik_loga] ¼ród³o cel [cel ...]\n" -#: ../copy/xfs_copy.c:380 +#: ../copy/xfs_copy.c:386 #, c-format msgid "%s: lseek64 failure at offset %lld\n" msgstr "%s: niepowodzenie lseek64 pod offsetem %lld\n" -#: ../copy/xfs_copy.c:395 +#: ../copy/xfs_copy.c:401 #, c-format msgid "assert error: buf->length = %d, buf->size = %d\n" msgstr "b³±d zapewnienia: buf->length = %d, buf->size = %d\n" -#: ../copy/xfs_copy.c:402 +#: ../copy/xfs_copy.c:408 #, c-format msgid "%s: read failure at offset %lld\n" msgstr "%s: b³±d odczytu pod offsetem %lld\n" -#: ../copy/xfs_copy.c:537 ../growfs/xfs_growfs.c:179 ../io/init.c:177 -#: ../mkfs/xfs_mkfs.c:1253 ../quota/init.c:131 ../repair/xfs_repair.c:261 +#: ../copy/xfs_copy.c:543 ../growfs/xfs_growfs.c:179 ../io/init.c:180 +#: ../mkfs/xfs_mkfs.c:1354 ../quota/init.c:131 ../repair/xfs_repair.c:313 #: ../rtcp/xfs_rtcp.c:57 #, c-format msgid "%s version %s\n" msgstr "%s wersja %s\n" -#: ../copy/xfs_copy.c:555 +#: ../copy/xfs_copy.c:561 #, c-format msgid "%s: couldn't open log file \"%s\"\n" msgstr "%s: nie uda³o siê otworzyæ pliku loga \"%s\"\n" -#: ../copy/xfs_copy.c:562 +#: ../copy/xfs_copy.c:568 #, c-format msgid "%s: couldn't set up logfile stream\n" msgstr "%s: nie uda³o siê ustanowiæ strumienia pliku loga\n" -#: ../copy/xfs_copy.c:574 +#: ../copy/xfs_copy.c:580 msgid "Couldn't allocate target array\n" msgstr "Nie uda³o siê przydzieliæ tablicy celów\n" -#: ../copy/xfs_copy.c:589 +#: ../copy/xfs_copy.c:595 #, c-format msgid "%s: couldn't register atexit function.\n" msgstr "%s: nie uda³o siê zarejestrowaæ funkcji atexit.\n" -#: ../copy/xfs_copy.c:598 +#: ../copy/xfs_copy.c:604 #, c-format msgid "%s: couldn't open source \"%s\"\n" msgstr "%s: nie uda³o siê otworzyæ ¼ród³a \"%s\"\n" -#: ../copy/xfs_copy.c:604 +#: ../copy/xfs_copy.c:610 #, c-format msgid "%s: couldn't stat source \"%s\"\n" msgstr "%s: nie uda³o siê wykonaæ stat na ¼ródle \"%s\"\n" -#: ../copy/xfs_copy.c:614 +#: ../copy/xfs_copy.c:620 #, c-format msgid "%s: Cannot set direct I/O flag on \"%s\".\n" msgstr "%s: Nie mo¿na ustawiæ flagi bezpo¶redniego we/wy na \"%s\".\n" -#: ../copy/xfs_copy.c:619 +#: ../copy/xfs_copy.c:625 #, c-format msgid "%s: xfsctl on file \"%s\" failed.\n" msgstr "%s: xfsctl na pliku \"%s\" nie powiod³o siê.\n" -#: ../copy/xfs_copy.c:642 +#: ../copy/xfs_copy.c:648 #, c-format msgid "%s: Warning -- a filesystem is mounted on the source device.\n" msgstr "%s: Uwaga - system plików jest podmontowany na urz±dzeniu ¼ród³owym.\n" -#: ../copy/xfs_copy.c:645 +#: ../copy/xfs_copy.c:651 msgid "\t\tGenerated copies may be corrupt unless the source is\n" msgstr "\t\tWygenerowane kopie mog± byæ uszkodzone o ile ¼ród³o nie jest\n" -#: ../copy/xfs_copy.c:647 +#: ../copy/xfs_copy.c:653 msgid "\t\tunmounted or mounted read-only. Copy proceeding...\n" msgstr "\t\todmontowane lub podmontowane tylko do odczytu. Kopiowanie w trakcie...\n" -#: ../copy/xfs_copy.c:664 +#: ../copy/xfs_copy.c:670 #, c-format msgid "" "%s: couldn't initialize XFS library\n" @@ -183,7 +183,7 @@ msgstr "" "%s: nie uda³o siê zainicjowaæ biblioteki XFS\n" "%s: Przerwano.\n" -#: ../copy/xfs_copy.c:678 +#: ../copy/xfs_copy.c:684 #, c-format msgid "" "%s: %s filesystem failed to initialize\n" @@ -192,7 +192,7 @@ msgstr "" "%s: Nie powiod³a siê inicjalizacja systemu plików %s\n" "%s: Przerwano.\n" -#: ../copy/xfs_copy.c:682 +#: ../copy/xfs_copy.c:688 #, c-format msgid "" "%s %s filesystem failed to initialize\n" @@ -201,7 +201,7 @@ msgstr "" "%s: Nie powiod³a siê inicjalizacja systemu plików %s\n" "%s: Przerwano.\n" -#: ../copy/xfs_copy.c:686 +#: ../copy/xfs_copy.c:692 #, c-format msgid "" "%s: %s has an external log.\n" @@ -210,7 +210,7 @@ msgstr "" "%s: %s ma zewnêtrzny log.\n" "%s: Przerwano.\n" -#: ../copy/xfs_copy.c:690 +#: ../copy/xfs_copy.c:696 #, c-format msgid "" "%s: %s has a real-time section.\n" @@ -219,7 +219,7 @@ msgstr "" "%s: %s ma sekcjê real-time.\n" "%s: Przerwano.\n" -#: ../copy/xfs_copy.c:715 +#: ../copy/xfs_copy.c:721 msgid "" "Error: filesystem block size is smaller than the disk sectorsize.\n" "Aborting XFS copy now.\n" @@ -227,12 +227,12 @@ msgstr "" "B³±d: rozmiar bloku systemu plików jest mniejszy ni¿ rozmiar sektora dysku.\n" "Przerwano XFS copy.\n" -#: ../copy/xfs_copy.c:736 +#: ../copy/xfs_copy.c:742 #, c-format msgid "Creating file %s\n" msgstr "Tworzenie pliku %s\n" -#: ../copy/xfs_copy.c:754 +#: ../copy/xfs_copy.c:760 #, c-format msgid "" "%s: a filesystem is mounted on target device \"%s\".\n" @@ -241,66 +241,66 @@ msgstr "" "%s: na urz±dzeniu docelowym \"%s\" jest podmontowany system plików.\n" "%s nie mo¿e kopiowaæ na podmontowane systemy plików. Przerwano.\n" -#: ../copy/xfs_copy.c:765 +#: ../copy/xfs_copy.c:771 #, c-format msgid "%s: couldn't open target \"%s\"\n" msgstr "%s: nie uda³o siê otworzyæ celu \"%s\"\n" -#: ../copy/xfs_copy.c:775 +#: ../copy/xfs_copy.c:781 #, c-format msgid "%s: cannot grow data section.\n" msgstr "%s: nie mo¿na powiêkszyæ sekcji danych.\n" -#: ../copy/xfs_copy.c:783 +#: ../copy/xfs_copy.c:789 #, c-format msgid "%s: xfsctl on \"%s\" failed.\n" msgstr "%s: xfsctl na \"%s\" nie powiod³o siê.\n" -#: ../copy/xfs_copy.c:802 +#: ../copy/xfs_copy.c:808 #, c-format msgid "%s: failed to write last block\n" msgstr "%s: nie uda³o siê zapisaæ ostatniego bloku\n" -#: ../copy/xfs_copy.c:804 +#: ../copy/xfs_copy.c:810 #, c-format msgid "\tIs target \"%s\" too small?\n" msgstr "\tCzy cel \"%s\" jest zbyt ma³y?\n" -#: ../copy/xfs_copy.c:814 +#: ../copy/xfs_copy.c:820 msgid "Couldn't initialize global thread mask\n" msgstr "Nie uda³o siê zainicjowaæ globalnej maski w±tków\n" -#: ../copy/xfs_copy.c:821 +#: ../copy/xfs_copy.c:827 msgid "Error initializing wbuf 0\n" msgstr "B³±d inicjalizacji wbuf 0\n" -#: ../copy/xfs_copy.c:829 +#: ../copy/xfs_copy.c:835 msgid "Error initializing btree buf 1\n" msgstr "B³±d inicjalizacji btree buf 1\n" -#: ../copy/xfs_copy.c:834 +#: ../copy/xfs_copy.c:840 msgid "Error creating first semaphore.\n" msgstr "B³±d tworzenia pierwszego semafora.\n" -#: ../copy/xfs_copy.c:849 +#: ../copy/xfs_copy.c:855 msgid "Couldn't malloc space for thread args\n" msgstr "Nie uda³o siê przydzieliæ miejsca na argumenty w±tku\n" -#: ../copy/xfs_copy.c:861 +#: ../copy/xfs_copy.c:867 #, c-format msgid "Error creating thread mutex %d\n" msgstr "B³±d podczas tworzenia sekcji krytycznej %d w±tku\n" -#: ../copy/xfs_copy.c:878 +#: ../copy/xfs_copy.c:884 #, c-format msgid "Error creating thread for target %d\n" msgstr "B³±d podczas tworzenia w±tku dla celu %d\n" -#: ../copy/xfs_copy.c:971 +#: ../copy/xfs_copy.c:977 msgid "WARNING: source filesystem inconsistent.\n" msgstr "UWAGA: ¼ród³owy system plików niespójny.\n" -#: ../copy/xfs_copy.c:973 +#: ../copy/xfs_copy.c:979 msgid " A leaf btree rec isn't a leaf. Aborting now.\n" msgstr " Li¶æ rekordu b-drzewa nie jest li¶ciem. Przerwano.\n" @@ -349,32 +349,32 @@ msgid "" "meta-data=%-22s isize=%-6u agcount=%u, agsize=%u blks\n" " =%-22s sectsz=%-5u attr=%u\n" "data =%-22s bsize=%-6u blocks=%llu, imaxpct=%u\n" -" =%-22s sunit=%-6u swidth=%u blks, unwritten=%u\n" +" =%-22s sunit=%-6u swidth=%u blks\n" "naming =version %-14u bsize=%-6u\n" "log =%-22s bsize=%-6u blocks=%u, version=%u\n" -" =%-22s sectsz=%-5u sunit=%u blks\n" +" =%-22s sectsz=%-5u sunit=%u blks, lazy-count=%u\n" "realtime =%-22s extsz=%-6u blocks=%llu, rtextents=%llu\n" msgstr "" "metadane=%-22s isize=%-6u agcount=%u, agsize=%u bloków\n" " =%-22s sectsz=%-5u attr=%u\n" "dane =%-22s bsize=%-6u blocks=%llu, imaxpct=%u\n" -" =%-22s sunit=%-6u swidth=%u bloków, niezapisanych=%u\n" +" =%-22s sunit=%-6u swidth=%u bloków\n" "nazwy =wersja %-14u bsize=%-6u\n" "log =%-22s bsize=%-6u blocks=%u, wersja=%u\n" -" =%-22s sectsz=%-5u sunit=%u bloków\n" +" =%-22s sectsz=%-5u sunit=%u bloków, lazy-count=%u\n" "realtime=%-22s extsz=%-6u blocks=%llu, rtextents=%llu\n" -#: ../growfs/xfs_growfs.c:82 ../growfs/xfs_growfs.c:443 -#: ../growfs/xfs_growfs.c:444 +#: ../growfs/xfs_growfs.c:82 ../growfs/xfs_growfs.c:445 +#: ../growfs/xfs_growfs.c:446 msgid "internal" msgstr "wewnêtrzny" #: ../growfs/xfs_growfs.c:82 ../growfs/xfs_growfs.c:85 -#: ../growfs/xfs_growfs.c:443 ../growfs/xfs_growfs.c:444 +#: ../growfs/xfs_growfs.c:445 ../growfs/xfs_growfs.c:446 msgid "external" msgstr "zewnêtrzny" -#: ../growfs/xfs_growfs.c:85 ../mkfs/xfs_mkfs.c:1559 +#: ../growfs/xfs_growfs.c:85 ../mkfs/xfs_mkfs.c:1672 msgid "none" msgstr "brak" @@ -393,128 +393,128 @@ msgstr "%s: podany plik [\"%s\"] nie jest na systemie plik msgid "%s: cannot determine geometry of filesystem mounted at %s: %s\n" msgstr "%s: nie mo¿na okre¶liæ geometrii systemu plików podmontowanego pod %s: %s\n" -#: ../growfs/xfs_growfs.c:264 +#: ../growfs/xfs_growfs.c:265 #, c-format msgid "%s: failed to access data device for %s\n" msgstr "%s: nie uda³o siê uzyskaæ dostêpu do urz±dzenia z danymi dla %s\n" -#: ../growfs/xfs_growfs.c:269 +#: ../growfs/xfs_growfs.c:270 #, c-format msgid "%s: failed to access external log for %s\n" msgstr "%s: nie uda³o siê uzyskaæ dostêpu do zewnêtrznego loga dla %s\n" -#: ../growfs/xfs_growfs.c:275 +#: ../growfs/xfs_growfs.c:276 #, c-format msgid "%s: failed to access realtime device for %s\n" msgstr "%s: nie uda³o siê uzyskaæ dostêpu do urz±dzenia realtime dla %s\n" -#: ../growfs/xfs_growfs.c:310 +#: ../growfs/xfs_growfs.c:312 #, c-format msgid "data size %lld too large, maximum is %lld\n" msgstr "rozmiar danych %lld zbyt du¿y, maksymalny to %lld\n" -#: ../growfs/xfs_growfs.c:320 +#: ../growfs/xfs_growfs.c:322 #, c-format msgid "data size %lld too small, old size is %lld\n" msgstr "rozmiar danych %lld zbyt ma³y, stary rozmiar to %lld\n" -#: ../growfs/xfs_growfs.c:328 +#: ../growfs/xfs_growfs.c:330 #, c-format msgid "data size unchanged, skipping\n" msgstr "rozmiar danych nie zmieniony, pominiêto\n" -#: ../growfs/xfs_growfs.c:331 +#: ../growfs/xfs_growfs.c:333 #, c-format msgid "inode max pct unchanged, skipping\n" msgstr "maksymalny procent i-wêz³ów nie zmieniony, pominiêto\n" -#: ../growfs/xfs_growfs.c:338 ../growfs/xfs_growfs.c:377 -#: ../growfs/xfs_growfs.c:412 +#: ../growfs/xfs_growfs.c:340 ../growfs/xfs_growfs.c:379 +#: ../growfs/xfs_growfs.c:414 #, c-format msgid "%s: growfs operation in progress already\n" msgstr "%s: operacja growfs ju¿ trwa\n" -#: ../growfs/xfs_growfs.c:342 +#: ../growfs/xfs_growfs.c:344 #, c-format msgid "%s: XFS_IOC_FSGROWFSDATA xfsctl failed: %s\n" msgstr "%s: xfsctl XFS_IOC_FSGROWFSDATA nie powiod³o siê: %s\n" -#: ../growfs/xfs_growfs.c:358 +#: ../growfs/xfs_growfs.c:360 #, c-format msgid "realtime size %lld too large, maximum is %lld\n" msgstr "rozmiar realtime %lld zbyt du¿y, maksymalny to %lld\n" -#: ../growfs/xfs_growfs.c:364 +#: ../growfs/xfs_growfs.c:366 #, c-format msgid "realtime size %lld too small, old size is %lld\n" msgstr "rozmiar realtime %lld zbyt ma³y, stary rozmiar to %lld\n" -#: ../growfs/xfs_growfs.c:370 +#: ../growfs/xfs_growfs.c:372 #, c-format msgid "realtime size unchanged, skipping\n" msgstr "rozmiar realtime nie zmieniony, pominiêto\n" -#: ../growfs/xfs_growfs.c:381 +#: ../growfs/xfs_growfs.c:383 #, c-format msgid "%s: realtime growth not implemented\n" msgstr "%s: powiêkszanie realtime nie jest zaimplementowane\n" -#: ../growfs/xfs_growfs.c:385 +#: ../growfs/xfs_growfs.c:387 #, c-format msgid "%s: XFS_IOC_FSGROWFSRT xfsctl failed: %s\n" msgstr "%s: xfsctl XFS_IOC_FSGROWFSRT nie powiod³o siê: %s\n" -#: ../growfs/xfs_growfs.c:406 +#: ../growfs/xfs_growfs.c:408 #, c-format msgid "log size unchanged, skipping\n" msgstr "rozmiar loga nie zmieniony, pominiêto\n" -#: ../growfs/xfs_growfs.c:416 +#: ../growfs/xfs_growfs.c:418 #, c-format msgid "%s: log growth not supported yet\n" msgstr "%s: powiêkszanie loga nie jest jeszcze obs³ugiwane\n" -#: ../growfs/xfs_growfs.c:420 +#: ../growfs/xfs_growfs.c:422 #, c-format msgid "%s: XFS_IOC_FSGROWFSLOG xfsctl failed: %s\n" msgstr "%s: xfsctl XFS_IOC_FSGROWFSLOG nie powiod³o siê: %s\n" -#: ../growfs/xfs_growfs.c:428 +#: ../growfs/xfs_growfs.c:430 #, c-format msgid "%s: XFS_IOC_FSGEOMETRY xfsctl failed: %s\n" msgstr "%s: xfsctl XFS_IOC_FSGEOMETRY nie powiod³o siê: %s\n" -#: ../growfs/xfs_growfs.c:433 +#: ../growfs/xfs_growfs.c:435 #, c-format msgid "data blocks changed from %lld to %lld\n" msgstr "bloki danych zmienione z %lld na %lld\n" -#: ../growfs/xfs_growfs.c:436 +#: ../growfs/xfs_growfs.c:438 #, c-format msgid "inode max percent changed from %d to %d\n" msgstr "maksymalny procent i-wêz³ów zmieniony z %d na %d\n" -#: ../growfs/xfs_growfs.c:439 +#: ../growfs/xfs_growfs.c:441 #, c-format msgid "log blocks changed from %d to %d\n" msgstr "bloki loga zmienione z %d na %d\n" -#: ../growfs/xfs_growfs.c:442 +#: ../growfs/xfs_growfs.c:444 #, c-format msgid "log changed from %s to %s\n" msgstr "log zmieniony - by³ %s, jest %s\n" -#: ../growfs/xfs_growfs.c:446 +#: ../growfs/xfs_growfs.c:448 #, c-format msgid "realtime blocks changed from %lld to %lld\n" msgstr "bloki realtime zmienione z %lld na %lld\n" -#: ../growfs/xfs_growfs.c:449 +#: ../growfs/xfs_growfs.c:451 #, c-format msgid "realtime extent size changed from %d to %d\n" msgstr "rozmiar fragmentu realtime zmieniony z %d na %d\n" -#: ../io/attr.c:58 +#: ../io/attr.c:59 #, c-format msgid "" "\n" @@ -534,6 +534,7 @@ msgid "" " e -- for non-realtime files, observe the inode extent size value\n" " E -- children created in this directory inherit the extent size value\n" " f -- do not include this file when defragmenting the filesystem\n" +" S -- enable filestreams allocator for this directory\n" "\n" " Options:\n" " -R -- recursively descend (useful when current file is a directory)\n" @@ -559,6 +560,7 @@ msgstr "" " e - dla plików nie-realtime - przestrzeganie warto¶ci rozmiaru fragmentu i-wêz³a\n" " E - wpisy tworzone w tym katalogu dziedzicz± warto¶æ rozmiaru fragmentu\n" " f - nie uwzglêdnianie tego pliku przy defragmentacji systemu plików\n" +" S - w³±czenie przydzielania strumieni plikowych dla tego katalogu\n" "\n" " Opcje:\n" " -R - rekurencyjne zag³êbianie siê (przydatne kiedy bie¿±cy plik jest katalogiem)\n" @@ -567,7 +569,7 @@ msgstr "" " -v - tryb szczegó³owy; pokazywanie d³ugich nazw flag zamiast pojedynczych znaków\n" "\n" -#: ../io/attr.c:88 +#: ../io/attr.c:90 #, c-format msgid "" "\n" @@ -591,6 +593,7 @@ msgid "" " +/-e -- set/clear the extent-size flag\n" " +/-E -- set/clear the extent-size inheritance flag\n" " +/-f -- set/clear the no-defrag flag\n" +" +/-S -- set/clear the filestreams allocator flag\n" " Note1: user must have certain capabilities to modify immutable/append-only.\n" " Note2: immutable/append-only files cannot be deleted; removing these files\n" " requires the immutable/append-only flag to be cleared first.\n" @@ -619,6 +622,7 @@ msgstr "" " +/-e - ustawienie/zdjêcie flagi extent-size (rozmiaru fragmentu)\n" " +/-E - ustawienie/zdjêcie flagi dziedziczenia rozmiaru fragmentu\n" " +/-f - ustawienie/zdjêcie flagi no-defrag\n" +" +/-S - ustawienie/zdjêcie flagi przydzielania strumieni plikowych\n" " Uwaga1: u¿ytkownik musi mieæ pewne uprawnienia do zmiany flag\n" " immutable/append-only\n" " Uwaga2: plików immutable/append-only nie mo¿na usuwaæ; usuwanie tych plików\n" @@ -627,55 +631,59 @@ msgstr "" " realtime i (zwyk³y) plik musi byæ pusty przy ustawianiu flagi.\n" "\n" -#: ../io/attr.c:168 ../io/attr.c:244 ../io/open.c:403 ../io/open.c:475 +#: ../io/attr.c:171 ../io/attr.c:247 ../io/open.c:403 ../io/open.c:475 #: ../io/open.c:599 ../io/open.c:621 ../libxfs/init.c:108 ../mkfs/proto.c:284 -#: ../quota/project.c:87 ../quota/project.c:117 ../quota/project.c:147 +#: ../quota/project.c:103 ../quota/project.c:142 ../quota/project.c:181 #, c-format msgid "%s: cannot open %s: %s\n" msgstr "%s: nie mo¿na otworzyæ %s: %s\n" -#: ../io/attr.c:171 ../io/attr.c:218 ../io/attr.c:247 ../io/attr.c:318 -#: ../quota/project.c:90 ../quota/project.c:121 ../quota/project.c:151 +#: ../io/attr.c:174 ../io/attr.c:221 ../io/attr.c:250 ../io/attr.c:321 +#: ../quota/project.c:106 ../quota/project.c:146 ../quota/project.c:185 #, c-format msgid "%s: cannot get flags on %s: %s\n" msgstr "%s: nie mo¿na pobraæ flag %s: %s\n" -#: ../io/attr.c:253 ../io/attr.c:324 +#: ../io/attr.c:256 ../io/attr.c:327 #, c-format msgid "%s: cannot set flags on %s: %s\n" msgstr "%s: nie mo¿na ustawiæ flag %s: %s\n" -#: ../io/attr.c:288 ../io/attr.c:302 +#: ../io/attr.c:291 ../io/attr.c:305 #, c-format msgid "%s: unknown flag\n" msgstr "%s: nieznana flaga\n" -#: ../io/attr.c:308 +#: ../io/attr.c:311 #, c-format msgid "%s: bad chattr command, not +/-X\n" msgstr "%s: z³e polecenie chattr - nie +/-X\n" -#: ../io/attr.c:333 +#: ../io/attr.c:336 msgid "chattr" msgstr "chattr" -#: ../io/attr.c:335 +#: ../io/attr.c:338 msgid "[-R|-D] [+/-" msgstr "[-R|-D] [+/-" -#: ../io/attr.c:340 +#: ../io/attr.c:338 +msgid "]" +msgstr "]" + +#: ../io/attr.c:343 msgid "change extended inode flags on the currently open file" msgstr "zmiana rozszerzonych flag i-wêz³ów aktualnie otwartego pliku" -#: ../io/attr.c:343 +#: ../io/attr.c:346 msgid "lsattr" msgstr "lsattr" -#: ../io/attr.c:345 +#: ../io/attr.c:348 msgid "[-R|-D|-a|-v]" msgstr "[-R|-D|-a|-v]" -#: ../io/attr.c:350 +#: ../io/attr.c:353 msgid "list extended inode flags set on the currently open file" msgstr "wypisanie rozszerzonych flag i-wêz³ów aktualnie otwartego pliku" @@ -722,113 +730,117 @@ msgstr "" " otwarty tylko do odczytu).\n" "\n" -#: ../io/bmap.c:116 +#: ../io/bmap.c:120 #, c-format msgid "%s: can't get geometry [\"%s\"]: %s\n" msgstr "%s: nie mo¿na uzyskaæ geometrii [\"%s\"]: %s\n" -#: ../io/bmap.c:124 +#: ../io/bmap.c:128 #, c-format msgid "%s: cannot read attrs on \"%s\": %s\n" msgstr "%s: nie mo¿na odczytaæ atrybutów \"%s\": %s\n" -#: ../io/bmap.c:142 +#: ../io/bmap.c:146 #, c-format msgid "%s: malloc of %d bytes failed.\n" msgstr "%s: przydzielenie %d bajtów nie powiod³o siê.\n" -#: ../io/bmap.c:190 +#: ../io/bmap.c:194 #, c-format msgid "%s: xfsctl(XFS_IOC_GETBMAPX) iflags=0x%x [\"%s\"]: %s\n" msgstr "%s: xfsctl(XFS_IOC_GETBMAPX) iflags=0x%x [\"%s\"]: %s\n" -#: ../io/bmap.c:221 +#: ../io/bmap.c:225 #, c-format msgid "%s: cannot realloc %d bytes\n" msgstr "%s: nie mo¿na wykonaæ realloc na %d bajtów\n" -#: ../io/bmap.c:230 +#: ../io/bmap.c:234 #, c-format msgid "%s: no extents\n" msgstr "%s: brak fragmentów\n" -#: ../io/bmap.c:243 ../io/bmap.c:361 +#: ../io/bmap.c:248 ../io/bmap.c:376 #, c-format msgid "hole" msgstr "dziura" -#: ../io/bmap.c:252 +#: ../io/bmap.c:257 #, c-format msgid " %lld blocks\n" msgstr " %lld bloków\n" -#: ../io/bmap.c:321 +#: ../io/bmap.c:336 msgid "EXT" msgstr "EXT" -#: ../io/bmap.c:322 +#: ../io/bmap.c:337 msgid "FILE-OFFSET" msgstr "OFFSET-W-PLIKU" -#: ../io/bmap.c:323 +#: ../io/bmap.c:338 +msgid "RT-BLOCK-RANGE" +msgstr "ZAKRES-BLOKÓW-RT" + +#: ../io/bmap.c:338 msgid "BLOCK-RANGE" msgstr "ZAKRES-BLOKÓW" -#: ../io/bmap.c:324 +#: ../io/bmap.c:339 msgid "AG" msgstr "AG" -#: ../io/bmap.c:325 +#: ../io/bmap.c:340 msgid "AG-OFFSET" msgstr "OFFSET-AG" -#: ../io/bmap.c:326 +#: ../io/bmap.c:341 msgid "TOTAL" msgstr "RAZEM" -#: ../io/bmap.c:327 +#: ../io/bmap.c:342 msgid " FLAGS" msgstr " FLAGI" -#: ../io/bmap.c:390 +#: ../io/bmap.c:410 #, c-format msgid " FLAG Values:\n" msgstr " Warto¶ci FLAG:\n" -#: ../io/bmap.c:391 +#: ../io/bmap.c:411 #, c-format msgid " %*.*o Unwritten preallocated extent\n" msgstr " %*.*o Nie zapisany, ju¿ przydzielony fragment\n" -#: ../io/bmap.c:393 +#: ../io/bmap.c:413 #, c-format msgid " %*.*o Doesn't begin on stripe unit\n" msgstr " %*.*o Nie zaczyna siê od jednostki pasa\n" -#: ../io/bmap.c:395 +#: ../io/bmap.c:415 #, c-format msgid " %*.*o Doesn't end on stripe unit\n" msgstr " %*.*o Nie koñczy siê na jednostce pasa\n" -#: ../io/bmap.c:397 +#: ../io/bmap.c:417 #, c-format msgid " %*.*o Doesn't begin on stripe width\n" msgstr " %*.*o Nie zaczyna siê na szeroko¶ci pasa\n" -#: ../io/bmap.c:399 +#: ../io/bmap.c:419 #, c-format msgid " %*.*o Doesn't end on stripe width\n" msgstr " %*.*o Nie koñczy siê na szeroko¶ci pasa\n" -#: ../io/bmap.c:410 +#: ../io/bmap.c:430 msgid "bmap" msgstr "bmap" -#: ../io/bmap.c:415 +#: ../io/bmap.c:435 msgid "[-adlpv] [-n nx]" msgstr "[-adlpv] [-n nx]" -#: ../io/bmap.c:416 +#: ../io/bmap.c:436 msgid "print block mapping for an XFS file" msgstr "wypisanie mapowania bloków dla pliku na XFS-ie" @@ -874,15 +886,15 @@ msgstr "" "\n" #: ../io/fadvise.c:93 ../io/madvise.c:87 ../io/mincore.c:48 ../io/mmap.c:206 -#: ../io/mmap.c:301 ../io/mmap.c:407 ../io/mmap.c:554 ../io/prealloc.c:43 +#: ../io/mmap.c:301 ../io/mmap.c:387 ../io/mmap.c:546 ../io/prealloc.c:43 #: ../io/pwrite.c:282 ../io/sendfile.c:126 #, c-format msgid "non-numeric offset argument -- %s\n" msgstr "nieliczbowy argument bêd±cy offsetem - %s\n" #: ../io/fadvise.c:100 ../io/madvise.c:94 ../io/mincore.c:54 ../io/mmap.c:212 -#: ../io/mmap.c:308 ../io/mmap.c:414 ../io/mmap.c:561 ../io/pread.c:360 -#: ../io/pread.c:368 ../io/prealloc.c:48 ../io/pwrite.c:288 +#: ../io/mmap.c:308 ../io/mmap.c:394 ../io/mmap.c:553 ../io/pread.c:330 +#: ../io/pread.c:338 ../io/prealloc.c:48 ../io/pwrite.c:288 #: ../io/sendfile.c:133 #, c-format msgid "non-numeric length argument -- %s\n" @@ -949,7 +961,7 @@ msgstr ",tylko dopisywanie" msgid ",non-block" msgstr ",nieblokuj±cy" -#: ../io/file.c:81 ../io/sendfile.c:103 ../quota/path.c:107 +#: ../io/file.c:81 ../io/sendfile.c:103 ../quota/path.c:112 #, c-format msgid "value %d is out of range (0-%d)\n" msgstr "warto¶æ %d jest spoza zakresu (0-%d)\n" @@ -962,7 +974,7 @@ msgstr "file" msgid "f" msgstr "f" -#: ../io/file.c:94 ../quota/path.c:121 +#: ../io/file.c:94 ../quota/path.c:126 msgid "[N]" msgstr "[N]" @@ -970,15 +982,15 @@ msgstr "[N]" msgid "set the current file" msgstr "ustawienie bie¿±cego pliku" -#: ../io/file.c:101 ../quota/path.c:127 +#: ../io/file.c:101 ../quota/path.c:133 msgid "print" msgstr "print" -#: ../io/file.c:102 ../quota/path.c:128 +#: ../io/file.c:102 ../quota/path.c:134 msgid "p" msgstr "p" -#: ../io/file.c:107 +#: ../io/file.c:108 msgid "list current open files and memory mappings" msgstr "wypisanie aktualnie otwartych plików i odwzorowañ w pamiêci" @@ -1012,9 +1024,10 @@ msgstr "odmro msgid "fsync" msgstr "fsync" -#: ../io/fsync.c:55 +#: ../io/fsync.c:55 ../repair/progress.c:430 ../repair/progress.c:440 +#: ../repair/progress.c:456 ../repair/progress.c:474 ../repair/progress.c:489 msgid "s" -msgstr "s" +msgstr " " #: ../io/fsync.c:59 msgid "calls fsync(2) to flush all in-core file state to disk" @@ -1066,23 +1079,23 @@ msgstr "map i-w msgid "Usage: %s [-adFfmrRstx] [-p prog] [-c cmd]... file\n" msgstr "Sk³adnia: %s [-adFfmrRstx] [-p program] [-c polecenie]... plik\n" -#: ../io/init.c:95 ../io/mmap.c:168 ../io/mmap.c:175 ../io/mmap.c:178 +#: ../io/init.c:98 ../io/mmap.c:168 ../io/mmap.c:175 ../io/mmap.c:178 #: ../io/open.c:281 #, c-format msgid "no files are open, try 'help open'\n" msgstr "nie ma otwartych plików, spróbuj 'help open'\n" -#: ../io/init.c:99 ../io/mmap.c:167 ../io/mmap.c:174 +#: ../io/init.c:102 ../io/mmap.c:167 ../io/mmap.c:174 #, c-format msgid "no mapped regions, try 'help mmap'\n" msgstr "nie ma podmapowanych regionów, spróbuj 'help mmap'\n" -#: ../io/init.c:105 +#: ../io/init.c:108 #, c-format msgid "foreign file active, %s command is for XFS filesystems only\n" msgstr "aktywny jest plik obcy, polecenie %s jest tylko dla systemów plików XFS\n" -#: ../io/init.c:150 ../io/open.c:303 +#: ../io/init.c:153 ../io/open.c:303 #, c-format msgid "non-numeric mode -- %s\n" msgstr "tryb nieliczbowy - %s\n" @@ -1291,7 +1304,7 @@ msgstr "" " -s - wykonanie zapisu synchronicznego (MS_SYNC)\n" "\n" -#: ../io/mmap.c:350 +#: ../io/mmap.c:330 #, c-format msgid "" "\n" @@ -1336,7 +1349,7 @@ msgstr "" " etapie nie ma prób wy³apania sygna³ów...\n" "\n" -#: ../io/mmap.c:502 +#: ../io/mmap.c:494 #, c-format msgid "" "\n" @@ -1366,84 +1379,84 @@ msgstr "" " Zapisy s± wykonywane kolejno, domy¶lnie od offsetu pocz±tkowego.\n" "\n" -#: ../io/mmap.c:538 ../io/pread.c:345 ../io/pwrite.c:249 ../io/pwrite.c:268 +#: ../io/mmap.c:530 ../io/pread.c:315 ../io/pwrite.c:249 ../io/pwrite.c:268 #, c-format msgid "non-numeric seed -- %s\n" msgstr "nieliczbowy zarodek - %s\n" -#: ../io/mmap.c:587 +#: ../io/mmap.c:580 msgid "mmap" msgstr "mmap" -#: ../io/mmap.c:588 +#: ../io/mmap.c:581 msgid "mm" msgstr "mm" -#: ../io/mmap.c:593 +#: ../io/mmap.c:586 msgid "[N] | [-rwx] [off len]" msgstr "[N] | [-rwx] [offset d³ugo¶æ]" -#: ../io/mmap.c:595 +#: ../io/mmap.c:588 msgid "mmap a range in the current file, show mappings" msgstr "odwzorowanie przedzia³u w bie¿±cym pliku, pokazanie odwzorowañ" -#: ../io/mmap.c:598 +#: ../io/mmap.c:591 msgid "mread" msgstr "mread" -#: ../io/mmap.c:599 +#: ../io/mmap.c:592 msgid "mr" msgstr "mr" -#: ../io/mmap.c:604 +#: ../io/mmap.c:597 msgid "[-r] [off len]" msgstr "[-r] [offset d³ugo¶æ]" -#: ../io/mmap.c:606 +#: ../io/mmap.c:599 msgid "reads data from a region in the current memory mapping" msgstr "odczyt danych z regionu w bie¿±cym odwzorowaniu pamiêci" -#: ../io/mmap.c:609 +#: ../io/mmap.c:602 msgid "msync" msgstr "msync" -#: ../io/mmap.c:610 +#: ../io/mmap.c:603 msgid "ms" msgstr "ms" -#: ../io/mmap.c:615 +#: ../io/mmap.c:608 msgid "[-ais] [off len]" msgstr "[-ais] [offset d³ugo¶æ]" -#: ../io/mmap.c:616 +#: ../io/mmap.c:609 msgid "flush a region in the current memory mapping" msgstr "zrzucenie regionu w bie¿±cym odwzorowaniu pamiêci" -#: ../io/mmap.c:619 +#: ../io/mmap.c:612 msgid "munmap" msgstr "munmap" -#: ../io/mmap.c:620 +#: ../io/mmap.c:613 msgid "mu" msgstr "mu" -#: ../io/mmap.c:625 +#: ../io/mmap.c:618 msgid "unmaps the current memory mapping" msgstr "usuniêcie bie¿±cego odwzorowania pamiêci" -#: ../io/mmap.c:627 +#: ../io/mmap.c:620 msgid "mwrite" msgstr "mwrite" -#: ../io/mmap.c:628 +#: ../io/mmap.c:621 msgid "mw" msgstr "mw" -#: ../io/mmap.c:633 +#: ../io/mmap.c:626 msgid "[-r] [-S seed] [off len]" msgstr "[-r] [-S warto¶æ] [offset d³ugo¶æ]" -#: ../io/mmap.c:635 +#: ../io/mmap.c:628 msgid "writes data into a region in the current memory mapping" msgstr "zapis danych do regionu w bie¿±cym odwzorowaniu pamiêci" @@ -2122,34 +2135,34 @@ msgstr "" " (dowolny offset mo¿e byæ w tym trybie czytany wiêcej ni¿ raz).\n" "\n" -#: ../io/pread.c:316 ../io/pwrite.c:215 +#: ../io/pread.c:286 ../io/pwrite.c:215 #, c-format msgid "non-numeric bsize -- %s\n" msgstr "nieliczbowy rozmiar bloku - %s\n" -#: ../io/pread.c:407 +#: ../io/pread.c:375 #, c-format msgid "read %lld/%lld bytes at offset %lld\n" msgstr "odczytano %lld/%lld bajtów od offsetu %lld\n" -#: ../io/pread.c:409 ../io/pwrite.c:335 ../io/sendfile.c:163 +#: ../io/pread.c:377 ../io/pwrite.c:334 ../io/sendfile.c:163 #, c-format msgid "%s, %d ops; %s (%s/sec and %.4f ops/sec)\n" msgstr "%s, %d operacji; %s (%s/sek i %.4f operacji/sek)\n" -#: ../io/pread.c:422 +#: ../io/pread.c:390 msgid "pread" msgstr "pread" -#: ../io/pread.c:423 +#: ../io/pread.c:391 msgid "r" msgstr "r" -#: ../io/pread.c:428 +#: ../io/pread.c:396 msgid "[-b bs] [-v] off len" msgstr "[-b rozm_bloku] [-v] offset d³ugo¶æ" -#: ../io/pread.c:429 +#: ../io/pread.c:397 msgid "reads a number of bytes at a specified offset" msgstr "odczyt podanej liczby bajtów od podanego offsetu" @@ -2246,7 +2259,7 @@ msgstr "" msgid "non-numeric skip -- %s\n" msgstr "nieliczbowy liczba bajtów do pominiêcia - %s\n" -#: ../io/pwrite.c:333 +#: ../io/pwrite.c:332 #, c-format msgid "wrote %lld/%lld bytes at offset %lld\n" msgstr "zapisano %lld/%lld bajtów od offsetu %lld\n" @@ -2419,36 +2432,46 @@ msgstr "Uwaga - urz msgid "Failed forking lvdisplay process\n" msgstr "Nie uda³o siê odga³êziæ procesu lvdisplay\n" -#: ../libdisk/md.c:52 +#: ../libdisk/md.c:61 #, c-format -msgid "Error getting MD array info from %s\n" -msgstr "B³±d podczas pobierania informacji o macierzy MD z %s\n" +msgid "Error getting MD array device from %s\n" +msgstr "B³±d podczas pobierania urz±dzenia macierzy MD z %s\n" -#: ../libxcmd/command.c:82 +#: ../libdisk/md.c:68 #, c-format -msgid "command \"%s\" not found\n" -msgstr "nie znaleziono polecenia \"%s\"\n" +msgid "Couldn't malloc device string\n" +msgstr "Nie mo¿na przydzieliæ ³añcucha nazwy urz±dzenia\n" -#: ../libxcmd/command.c:90 +#: ../libdisk/md.c:84 +#, c-format +msgid "Error getting MD array info from %s\n" +msgstr "B³±d podczas pobierania informacji o macierzy MD z %s\n" + +#: ../libxcmd/command.c:85 #, c-format msgid "bad argument count %d to %s, expected at least %d arguments\n" msgstr "b³êdna liczba argumentów %d dla %s, oczekiwano co najmniej %d argumentów\n" -#: ../libxcmd/command.c:94 +#: ../libxcmd/command.c:89 #, c-format msgid "bad argument count %d to %s, expected %d arguments\n" msgstr "b³êdna liczba argumentów %d dla %s, oczekiwano %d argumentów\n" -#: ../libxcmd/command.c:98 +#: ../libxcmd/command.c:93 #, c-format msgid "bad argument count %d to %s, expected between %d and %d arguments\n" msgstr "b³êdna liczba argumentów %d dla %s, oczekiwano od %d do %d argumentów\n" -#: ../libxcmd/command.c:160 +#: ../libxcmd/command.c:155 #, c-format msgid "cannot strdup command '%s': %s\n" msgstr "nie mo¿na wykonaæ strdup na poleceniu '%s': %s\n" +#: ../libxcmd/command.c:171 ../libxcmd/command.c:189 +#, c-format +msgid "command \"%s\" not found\n" +msgstr "nie znaleziono polecenia \"%s\"\n" + #: ../libxcmd/help.c:33 #, c-format msgid "" @@ -2521,64 +2544,70 @@ msgstr "q" msgid "exit the program" msgstr "wyj¶cie z programu" -#: ../libxfs/darwin.c:39 +#: ../libxfs/darwin.c:41 #, c-format msgid "%s: error opening the device special file \"%s\": %s\n" msgstr "%s: b³±d podczas otwierania pliku specjalnego urz±dzenia \"%s\": %s\n" -#: ../libxfs/darwin.c:46 +#: ../libxfs/darwin.c:48 #, c-format msgid "%s: can't tell if \"%s\" is writable: %s\n" msgstr "%s: nie mo¿na stwierdziæ czy \"%s\" jest zapisywalny: %s\n" -#: ../libxfs/darwin.c:73 ../libxfs/freebsd.c:114 ../libxfs/irix.c:57 -#: ../libxfs/linux.c:132 +#: ../libxfs/darwin.c:76 ../libxfs/freebsd.c:116 ../libxfs/irix.c:58 +#: ../libxfs/linux.c:137 #, c-format msgid "%s: cannot stat the device file \"%s\": %s\n" msgstr "%s: nie mo¿na wykonaæ stat na pliku urz±dzenia \"%s\": %s\n" -#: ../libxfs/darwin.c:83 +#: ../libxfs/darwin.c:86 #, c-format msgid "%s: can't determine device size: %s\n" msgstr "%s: nie mo¿na okre¶liæ rozmiaru urz±dzenia: %s\n" -#: ../libxfs/freebsd.c:47 +#: ../libxfs/darwin.c:139 ../libxfs/freebsd.c:198 ../libxfs/irix.c:106 +#: ../libxfs/linux.c:215 +#, c-format +msgid "%s: can't determine memory size\n" +msgstr "%s: nie mo¿na okre¶liæ rozmiaru pamiêci\n" + +#: ../libxfs/freebsd.c:49 #, c-format msgid "%s: %s possibly contains a mounted filesystem\n" msgstr "%s: %s mo¿e zawieraæ podmontowany system plików\n" -#: ../libxfs/freebsd.c:58 ../libxfs/linux.c:65 +#: ../libxfs/freebsd.c:60 ../libxfs/linux.c:66 #, c-format msgid "%s: %s contains a mounted filesystem\n" msgstr "%s: %s zawiera podmontowany system plików\n" -#: ../libxfs/freebsd.c:73 ../libxfs/linux.c:83 +#: ../libxfs/freebsd.c:75 ../libxfs/linux.c:84 #, c-format msgid "%s: %s contains a possibly writable, mounted filesystem\n" msgstr "%s: %s zawiera podmontowany, byæ mo¿e zapisywalny system plików\n" -#: ../libxfs/freebsd.c:87 ../libxfs/linux.c:97 +#: ../libxfs/freebsd.c:89 ../libxfs/linux.c:98 #, c-format msgid "%s: %s contains a mounted and writable filesystem\n" msgstr "%s: %s zawiera podmontowany, zapisywalny system plików\n" # XXX: msgid bug -#: ../libxfs/freebsd.c:127 +#: ../libxfs/freebsd.c:129 #, c-format msgid "%s: Not a device or file: \"%s\"n" msgstr "%s: Nie jest urz±dzeniem ani plikiem: \"%s\"n" -#: ../libxfs/freebsd.c:134 +#: ../libxfs/freebsd.c:136 #, c-format msgid "%s: DIOCGMEDIASIZE failed on \"%s\": %s\n" msgstr "%s: DIOCGMEDIASIE nie powiod³o siê dla \"%s\": %s\n" -#: ../libxfs/freebsd.c:141 +#: ../libxfs/freebsd.c:143 #, c-format msgid "%s: DIOCGSECTORSIZE failed on \"%s\": %s\n" msgstr "%s: DIOCGSECTORSIZE nie powiod³o siê dla \"%s\": %s\n" -#: ../libxfs/init.c:78 ../libxfs/init.c:169 +#: ../libxfs/init.c:78 ../libxfs/init.c:177 #, c-format msgid "%s: %s: device %lld is not open\n" msgstr "%s: %s: urz±dzenie %lld nie jest otwarte\n" @@ -2588,167 +2617,172 @@ msgstr "%s: %s: urz msgid "%s: cannot stat %s: %s\n" msgstr "%s: nie mo¿na wykonaæ stat na %s: %s\n" -#: ../libxfs/init.c:131 +#: ../libxfs/init.c:139 #, c-format msgid "%s: device %lld is already open\n" msgstr "%s: urz±dzenie %lld jest ju¿ otwarte\n" -#: ../libxfs/init.c:144 +#: ../libxfs/init.c:152 #, c-format msgid "%s: %s: too many open devices\n" msgstr "%s: %s: zbyt du¿o otwartych urz±dzeñ\n" -#: ../libxfs/init.c:187 +#: ../libxfs/init.c:195 #, c-format msgid "%s: can't find a character device matching %s\n" msgstr "%s: nie mo¿na odnale¼æ urz±dzenia znakowego odpowiadaj±cego %s\n" -#: ../libxfs/init.c:193 +#: ../libxfs/init.c:201 #, c-format msgid "%s: can't find a block device matching %s\n" msgstr "%s: nie mo¿na odnale¼æ urz±dzenia blokowego odpowiadaj±cego %s\n" -#: ../libxfs/init.c:308 +#: ../libxfs/init.c:316 #, c-format msgid "%s: can't get size for data subvolume\n" msgstr "%s: nie mo¿na pobraæ rozmiaru podwolumenu danych\n" -#: ../libxfs/init.c:313 +#: ../libxfs/init.c:321 #, c-format msgid "%s: can't get size for log subvolume\n" msgstr "%s: nie mo¿na pobraæ rozmiaru podwolumenu loga\n" -#: ../libxfs/init.c:318 +#: ../libxfs/init.c:326 #, c-format msgid "%s: can't get size for realtime subvolume\n" msgstr "%s: nie mo¿na pobraæ rozmiaru podwolumenu realtime\n" -#: ../libxfs/init.c:413 +#: ../libxfs/init.c:421 #, c-format msgid "%s: cannot read realtime bitmap inode (%d)\n" msgstr "%s: nie mo¿na odczytaæ i-wêz³a bitmapy realtime (%d)\n" -#: ../libxfs/init.c:423 +#: ../libxfs/init.c:431 #, c-format msgid "%s: cannot read realtime summary inode (%d)\n" msgstr "%s: nie mo¿na odczytaæ i-wêz³a opisu realtime (%d)\n" -#: ../libxfs/init.c:447 +#: ../libxfs/init.c:455 #, c-format msgid "%s: filesystem has a realtime subvolume\n" msgstr "%s: system plików ma podwolumen realtime\n" -#: ../libxfs/init.c:469 +#: ../libxfs/init.c:477 #, c-format msgid "%s: realtime init - %llu != %llu\n" msgstr "%s: inicjalizacja realtime - %llu != %llu\n" -#: ../libxfs/init.c:477 +#: ../libxfs/init.c:485 #, c-format msgid "%s: realtime size check failed\n" msgstr "%s: sprawdzenie rozmiaru realtime nie powiod³o siê\n" -#: ../libxfs/init.c:563 +#: ../libxfs/init.c:571 #, c-format msgid "%s: size check failed\n" msgstr "%s: sprawdzenie rozmiaru nie powiod³o siê\n" -#: ../libxfs/init.c:587 +#: ../libxfs/init.c:595 #, c-format msgid "%s: data size check failed\n" msgstr "%s: sprawdzenie rozmiaru danych nie powiod³o siê\n" -#: ../libxfs/init.c:600 +#: ../libxfs/init.c:608 #, c-format msgid "%s: log size checks failed\n" msgstr "%s: sprawdzenie rozmiaru loga nie powiod³o siê\n" -#: ../libxfs/init.c:610 +#: ../libxfs/init.c:619 #, c-format msgid "%s: realtime device init failed\n" msgstr "%s: inicjalizacja urz±dzenia realtime nie powiod³a siê\n" -#: ../libxfs/init.c:618 +#: ../libxfs/init.c:627 #, c-format msgid "%s: failed to alloc %ld bytes: %s\n" msgstr "%s: nie uda³o siê przydzieliæ %ld bajtów: %s\n" -#: ../libxfs/init.c:632 +#: ../libxfs/init.c:641 #, c-format msgid "%s: cannot read root inode (%d)\n" msgstr "%s: nie mo¿na odczytaæ i-wêz³a g³ównego (%d)\n" -#: ../libxfs/linux.c:110 +#: ../libxfs/init.c:660 +#, c-format +msgid "%s: cannot init perag data (%d)\n" +msgstr "%s: nie mo¿na zainicjowaæ tabeli perag (%d)\n" + +#: ../libxfs/linux.c:113 #, c-format -msgid "%s: warning - cannot set blocksize on block device %s: %s\n" -msgstr "%s: uwaga - nie mo¿na ustawiæ rozmiaru bloku urz±dzenia blokowego %s: %s\n" +msgid "%s: %s - cannot set blocksize on block device %s: %s\n" +msgstr "%s: %s - nie mo¿na ustawiæ rozmiaru bloku urz±dzenia blokowego %s: %s\n" -#: ../libxfs/linux.c:155 +#: ../libxfs/linux.c:160 #, c-format msgid "%s: can't determine device size\n" msgstr "%s: nie mo¿na okre¶liæ rozmiaru urz±dzenia\n" -#: ../libxfs/linux.c:163 +#: ../libxfs/linux.c:168 #, c-format msgid "%s: warning - cannot get sector size from block device %s: %s\n" msgstr "%s: uwaga - nie mo¿na pobraæ rozmiaru sektora urz±dzenia blokowego %s: %s\n" -#: ../libxfs/rdwr.c:38 +#: ../libxfs/rdwr.c:40 #, c-format msgid "%s: %s can't memalign %d bytes: %s\n" msgstr "%s: %s nie mo¿na wykonaæ memalign dla %d bajtów: %s\n" -#: ../libxfs/rdwr.c:48 +#: ../libxfs/rdwr.c:50 #, c-format msgid "%s: %s seek to offset %llu failed: %s\n" msgstr "%s: %s zmiana offsetu na %llu nie powiod³a siê: %s\n" -#: ../libxfs/rdwr.c:58 +#: ../libxfs/rdwr.c:60 #, c-format msgid "%s: %s write failed: %s\n" msgstr "%s: %s zapis nie powiód³ siê: %s\n" -#: ../libxfs/rdwr.c:62 +#: ../libxfs/rdwr.c:64 #, c-format msgid "%s: %s not progressing?\n" msgstr "%s: %s nie postêpuje?\n" -#: ../libxfs/rdwr.c:272 +#: ../libxfs/rdwr.c:319 #, c-format msgid "%s: %s can't memalign %u bytes: %s\n" msgstr "%s: %s nie mo¿na wykonaæ memalign dla %u bajtów: %s\n" -#: ../libxfs/rdwr.c:349 +#: ../libxfs/rdwr.c:454 #, c-format msgid "%s: read failed: %s\n" msgstr "%s: odczyt nie powiód³ siê: %s\n" -#: ../libxfs/rdwr.c:391 +#: ../libxfs/rdwr.c:497 #, c-format msgid "%s: pwrite64 failed: %s\n" msgstr "%s: pwrite64 nie powiod³o siê: %s\n" -#: ../libxfs/rdwr.c:398 +#: ../libxfs/rdwr.c:504 #, c-format msgid "%s: error - wrote only %d of %d bytes\n" msgstr "%s: b³±d - zapisano tylko %d z %d bajtów\n" -#: ../libxfs/rdwr.c:493 +#: ../libxfs/rdwr.c:652 #, c-format msgid "%s: zone init failed (%s, %d bytes): %s\n" msgstr "%s: inicjalizacja strefy nie powiod³a siê (%s, %d bajtów): %s\n" -#: ../libxfs/rdwr.c:512 +#: ../libxfs/rdwr.c:671 #, c-format msgid "%s: zone calloc failed (%s, %d bytes): %s\n" msgstr "%s: calloc dla strefy nie powiod³o siê (%s, %d bajtów): %s\n" -#: ../libxfs/rdwr.c:547 +#: ../libxfs/rdwr.c:706 #, c-format msgid "%s: calloc failed (%d bytes): %s\n" msgstr "%s: calloc nie powiod³o siê (%d bajtów): %s\n" -#: ../libxfs/rdwr.c:576 +#: ../libxfs/rdwr.c:735 #, c-format msgid "%s: realloc failed (%d bytes): %s\n" msgstr "%s: realloc nie powiod³o siê (%d bajtów): %s\n" @@ -2768,7 +2802,7 @@ msgstr "%s: uwaga - itobp nie powiod msgid "%s: warning - iflush_int failed (%d)\n" msgstr "%s: uwaga - iflush_int nie powiod³o siê (%d)\n" -#: ../libxfs/trans.c:685 ../libxfs/trans.c:791 +#: ../libxfs/trans.c:684 ../libxfs/trans.c:790 #, c-format msgid "%s: unrecognised log item type\n" msgstr "%s: nierozpoznany typ elementu loga\n" @@ -2996,239 +3030,249 @@ msgstr "rozmiar loga %lld blok msgid "log size %lld bytes too large, maximum size is %d bytes\n" msgstr "rozmiar loga %lld bajtów jest zbyt du¿y, maksymalny rozmiar to %d bajtów\n" -#: ../mkfs/xfs_mkfs.c:442 +#: ../mkfs/xfs_mkfs.c:476 #, c-format msgid "agsize (%lldb) too small, need at least %lld blocks\n" msgstr "agsize (%lldb) zbyt ma³e, potrzeba co najmniej %lld bloków\n" -#: ../mkfs/xfs_mkfs.c:450 +#: ../mkfs/xfs_mkfs.c:484 #, c-format msgid "agsize (%lldb) too big, maximum is %lld blocks\n" msgstr "agsize (%lldb) zbyt du¿e, maksimum to %lld bloków\n" -#: ../mkfs/xfs_mkfs.c:458 +#: ../mkfs/xfs_mkfs.c:492 #, c-format msgid "agsize (%lldb) too big, data area is %lld blocks\n" msgstr "agsize (%lldb) zbyt du¿e, obszar danych to %lld bloków\n" -#: ../mkfs/xfs_mkfs.c:465 +#: ../mkfs/xfs_mkfs.c:499 #, c-format msgid "too many allocation groups for size = %lld\n" msgstr "zbyt du¿o grup alokacji dla rozmiaru = %lld\n" -#: ../mkfs/xfs_mkfs.c:467 +#: ../mkfs/xfs_mkfs.c:501 #, c-format msgid "need at most %lld allocation groups\n" msgstr "potrzeba najwy¿ej %lld grup alokacji\n" -#: ../mkfs/xfs_mkfs.c:475 +#: ../mkfs/xfs_mkfs.c:509 #, c-format msgid "too few allocation groups for size = %lld\n" msgstr "zbyt ma³o grup alokacji dla rozmiaru = %lld\n" -#: ../mkfs/xfs_mkfs.c:477 +#: ../mkfs/xfs_mkfs.c:511 #, c-format msgid "need at least %lld allocation groups\n" msgstr "potrzeba co najmniej %lld grup alokacji\n" -#: ../mkfs/xfs_mkfs.c:490 +#: ../mkfs/xfs_mkfs.c:524 #, c-format msgid "last AG size %lld blocks too small, minimum size is %lld blocks\n" msgstr "rozmiar ostatniej AG %lld bloków zbyt ma³y, minimalny rozmiar to %lld bloków\n" -#: ../mkfs/xfs_mkfs.c:501 +#: ../mkfs/xfs_mkfs.c:535 #, c-format msgid "%lld allocation groups is too many, maximum is %lld\n" msgstr "%lld grup alokacji to zbyt du¿o, maksimum to %lld\n" -#: ../mkfs/xfs_mkfs.c:747 +#: ../mkfs/xfs_mkfs.c:559 +#, c-format +msgid "error reading existing superblock -- failed to memalign buffer\n" +msgstr "b³±d podczas odczytu istniej±cego superbloku - nie uda³o siê wykonaæ memalign dla bufora\n" + +#: ../mkfs/xfs_mkfs.c:565 +#, c-format +msgid "existing superblock read failed: %s\n" +msgstr "odczyt istniej±cego superbloku nie powiód³ siê: %s\n" + +#: ../mkfs/xfs_mkfs.c:847 #, c-format msgid "%s: Specify data sunit in 512-byte blocks, no unit suffix\n" msgstr "%s: sunit danych nale¿y podaæ w 512-bajtowych blokach, bez jednostki\n" -#: ../mkfs/xfs_mkfs.c:763 +#: ../mkfs/xfs_mkfs.c:863 #, c-format msgid "%s: Specify data swidth in 512-byte blocks, no unit suffix\n" msgstr "%s: swidth danych nale¿y podaæ w 512-bajtowych blokach, bez jednostki\n" -#: ../mkfs/xfs_mkfs.c:790 +#: ../mkfs/xfs_mkfs.c:890 #, c-format msgid "%s: Specify data sw as multiple of su, no unit suffix\n" msgstr "%s: sw danych nale¿y podaæ jako wielokrotno¶æ su, bez jednostki\n" -#: ../mkfs/xfs_mkfs.c:1017 +#: ../mkfs/xfs_mkfs.c:1109 #, c-format msgid "Specify log sunit in 512-byte blocks, no size suffix\n" msgstr "sunit nale¿y podaæ w 512-bajtowych blokach, bez jednostki\n" -#: ../mkfs/xfs_mkfs.c:1260 +#: ../mkfs/xfs_mkfs.c:1361 #, c-format msgid "extra arguments\n" msgstr "nadmiarowe argumenty\n" -#: ../mkfs/xfs_mkfs.c:1266 +#: ../mkfs/xfs_mkfs.c:1367 #, c-format msgid "cannot specify both %s and -d name=%s\n" msgstr "nie mo¿na podaæ jednocze¶nie %s i -d name=%s\n" -#: ../mkfs/xfs_mkfs.c:1283 +#: ../mkfs/xfs_mkfs.c:1384 #, c-format msgid "illegal block size %d\n" msgstr "niedozwolony rozmiar bloku %d\n" -#: ../mkfs/xfs_mkfs.c:1302 +#: ../mkfs/xfs_mkfs.c:1403 #, c-format msgid "illegal sector size %d\n" msgstr "niedozwolony rozmiar sektora %d\n" -#: ../mkfs/xfs_mkfs.c:1307 +#: ../mkfs/xfs_mkfs.c:1408 #, c-format msgid "illegal log sector size %d\n" msgstr "niedozwolony rozmiar sektora loga %d\n" -#: ../mkfs/xfs_mkfs.c:1319 ../mkfs/xfs_mkfs.c:1329 +#: ../mkfs/xfs_mkfs.c:1420 ../mkfs/xfs_mkfs.c:1430 #, c-format msgid "illegal directory block size %d\n" msgstr "niedozwolony rozmiar bloku katalogu %d\n" -#: ../mkfs/xfs_mkfs.c:1345 +#: ../mkfs/xfs_mkfs.c:1446 #, c-format msgid "both -d agcount= and agsize= specified, use one or the other\n" msgstr "podano jednocze¶nie -d agcount= i agsize=, mo¿na u¿yæ tylko jednej z tych opcji\n" -#: ../mkfs/xfs_mkfs.c:1351 +#: ../mkfs/xfs_mkfs.c:1452 #, c-format msgid "if -d file then -d name and -d size are required\n" msgstr "je¶li podano -d file, to -d name i -d size s± wymagane\n" -#: ../mkfs/xfs_mkfs.c:1360 +#: ../mkfs/xfs_mkfs.c:1461 #, c-format msgid "illegal data length %lld, not a multiple of %d\n" msgstr "niedozwolona d³ugo¶æ danych %lld, nie jest wielokrotno¶ci± %d\n" -#: ../mkfs/xfs_mkfs.c:1366 +#: ../mkfs/xfs_mkfs.c:1467 #, c-format msgid "warning: data length %lld not a multiple of %d, truncated to %lld\n" msgstr "uwaga: d³ugo¶æ danych %lld nie jest wielokrotno¶ci± %d, uciêto do %lld\n" -#: ../mkfs/xfs_mkfs.c:1380 +#: ../mkfs/xfs_mkfs.c:1481 #, c-format msgid "if -l file then -l name and -l size are required\n" msgstr "je¶li podano -l file to -l name i -l size s± wymagane\n" -#: ../mkfs/xfs_mkfs.c:1389 +#: ../mkfs/xfs_mkfs.c:1490 #, c-format msgid "illegal log length %lld, not a multiple of %d\n" msgstr "niedozwolona d³ugo¶æ loga %lld, nie jest wielokrotno¶ci± %d\n" -#: ../mkfs/xfs_mkfs.c:1396 +#: ../mkfs/xfs_mkfs.c:1497 #, c-format msgid "warning: log length %lld not a multiple of %d, truncated to %lld\n" msgstr "uwaga: d³ugo¶æ loga %lld nie jest wielokrotno¶ci± %d, uciêto do %lld\n" -#: ../mkfs/xfs_mkfs.c:1402 +#: ../mkfs/xfs_mkfs.c:1503 #, c-format msgid "if -r file then -r name and -r size are required\n" msgstr "je¶li podano -r file, to -r name i -r size s± wymagane\n" -#: ../mkfs/xfs_mkfs.c:1411 +#: ../mkfs/xfs_mkfs.c:1512 #, c-format msgid "illegal rt length %lld, not a multiple of %d\n" msgstr "niedozwolona d³ugo¶æ rt %lld, nie jest wielokrotno¶ci± %d\n" -#: ../mkfs/xfs_mkfs.c:1418 +#: ../mkfs/xfs_mkfs.c:1519 #, c-format msgid "warning: rt length %lld not a multiple of %d, truncated to %lld\n" msgstr "uwaga: d³ugo¶æ rt %lld nie jest wielokrotno¶ci± %d, uciêto do %lld\n" -#: ../mkfs/xfs_mkfs.c:1431 +#: ../mkfs/xfs_mkfs.c:1532 #, c-format msgid "illegal rt extent size %lld, not a multiple of %d\n" msgstr "niedozwolony rozmiar fragmentu rt %lld, nie jest wielokrotno¶ci± %d\n" -#: ../mkfs/xfs_mkfs.c:1437 +#: ../mkfs/xfs_mkfs.c:1538 #, c-format msgid "rt extent size %s too large, maximum %d\n" msgstr "rozmiar fragmentu rt %s zbyt du¿y, maksimum to %d\n" -#: ../mkfs/xfs_mkfs.c:1443 +#: ../mkfs/xfs_mkfs.c:1544 #, c-format msgid "rt extent size %s too small, minimum %d\n" msgstr "rozmiar fragmentu rt %s zbyt ma³y, minimum to %d\n" -#: ../mkfs/xfs_mkfs.c:1485 +#: ../mkfs/xfs_mkfs.c:1588 #, c-format msgid "illegal inode size %d\n" msgstr "niedozwolony rozmiar i-wêz³a %d\n" -#: ../mkfs/xfs_mkfs.c:1490 +#: ../mkfs/xfs_mkfs.c:1593 #, c-format msgid "allowable inode size with %d byte blocks is %d\n" msgstr "dozwolony rozmiar i-wêz³a przy blokach %d-bajtowych to %d\n" -#: ../mkfs/xfs_mkfs.c:1494 +#: ../mkfs/xfs_mkfs.c:1597 #, c-format msgid "allowable inode size with %d byte blocks is between %d and %d\n" msgstr "dozwolone rozmiary i-wêz³a przy blokach %d-bajtowych s± od %d do %d\n" -#: ../mkfs/xfs_mkfs.c:1502 +#: ../mkfs/xfs_mkfs.c:1605 #, c-format msgid "log stripe unit specified, using v2 logs\n" msgstr "podano jednostkê pasa loga, u¿yto logów v2\n" -#: ../mkfs/xfs_mkfs.c:1515 +#: ../mkfs/xfs_mkfs.c:1623 #, c-format msgid "no device name given in argument list\n" msgstr "nie podano nazwy urz±dzenia w li¶cie argumentów\n" -#: ../mkfs/xfs_mkfs.c:1535 +#: ../mkfs/xfs_mkfs.c:1648 #, c-format msgid "%s: Use the -f option to force overwrite.\n" msgstr "%s: Mo¿na u¿yæ opcji -f do wymuszenia nadpisania.\n" -#: ../mkfs/xfs_mkfs.c:1546 +#: ../mkfs/xfs_mkfs.c:1659 msgid "internal log" msgstr "log wewnêtrzny" -#: ../mkfs/xfs_mkfs.c:1548 +#: ../mkfs/xfs_mkfs.c:1661 msgid "volume log" msgstr "log na wolumenie" -#: ../mkfs/xfs_mkfs.c:1550 +#: ../mkfs/xfs_mkfs.c:1663 #, c-format msgid "no log subvolume or internal log\n" msgstr "brak podwolumenu loga ani loga wewnêtrznego\n" -#: ../mkfs/xfs_mkfs.c:1557 +#: ../mkfs/xfs_mkfs.c:1670 msgid "volume rt" msgstr "wolumen rt" -#: ../mkfs/xfs_mkfs.c:1562 +#: ../mkfs/xfs_mkfs.c:1675 #, c-format msgid "size %s specified for data subvolume is too large, maximum is %lld blocks\n" msgstr "rozmiar %s podany dla podwolumenu danych jest zbyt du¿y, maksimum to %lld bloków\n" -#: ../mkfs/xfs_mkfs.c:1569 +#: ../mkfs/xfs_mkfs.c:1682 #, c-format msgid "can't get size of data subvolume\n" msgstr "nie mo¿na pobraæ rozmiaru podwolumenu danych\n" -#: ../mkfs/xfs_mkfs.c:1574 +#: ../mkfs/xfs_mkfs.c:1687 #, c-format msgid "size %lld of data subvolume is too small, minimum %d blocks\n" msgstr "rozmiar %lld dla podwolumenu danych jest zbyt ma³y, minimum to %d bloków\n" -#: ../mkfs/xfs_mkfs.c:1581 +#: ../mkfs/xfs_mkfs.c:1694 #, c-format msgid "can't have both external and internal logs\n" msgstr "nie mo¿na mieæ jednocze¶nie zewnêtrznego i wewnêtrznego loga\n" -#: ../mkfs/xfs_mkfs.c:1585 +#: ../mkfs/xfs_mkfs.c:1698 #, c-format msgid "data and log sector sizes must be equal for internal logs\n" msgstr "rozmiary sektora danych i loga musz± byæ równe dla logów wewnêtrznych\n" -#: ../mkfs/xfs_mkfs.c:1591 +#: ../mkfs/xfs_mkfs.c:1704 #, c-format msgid "" "Warning: the data subvolume sector size %u is less than the sector size \n" @@ -3237,7 +3281,7 @@ msgstr "" "Uwaga: rozmiar sektora podwolumenu danych %u jest mniejszy od rozmiaru\n" "sektora zg³aszanego przez urz±dzenie (%u).\n" -#: ../mkfs/xfs_mkfs.c:1597 +#: ../mkfs/xfs_mkfs.c:1710 #, c-format msgid "" "Warning: the log subvolume sector size %u is less than the sector size\n" @@ -3246,7 +3290,7 @@ msgstr "" "Uwaga: rozmiar sektora podwolumenu loga %u jest mniejszy od rozmiaru\n" "sektora zg³aszanego przez urz±dzenie (%u).\n" -#: ../mkfs/xfs_mkfs.c:1603 +#: ../mkfs/xfs_mkfs.c:1716 #, c-format msgid "" "Warning: the realtime subvolume sector size %u is less than the sector size\n" @@ -3255,57 +3299,57 @@ msgstr "" "Uwaga: rozmiar sektora podwolumenu realtime %u jest mniejszy od rozmiaru\n" "sektora zg³aszanego przez urz±dzenie (%u).\n" -#: ../mkfs/xfs_mkfs.c:1617 +#: ../mkfs/xfs_mkfs.c:1730 #, c-format msgid "size %s specified for log subvolume is too large, maximum is %lld blocks\n" msgstr "rozmiar %s podany dla podwolumenu loga jest zbyt du¿y, maksimum to %lld bloków\n" -#: ../mkfs/xfs_mkfs.c:1624 +#: ../mkfs/xfs_mkfs.c:1737 #, c-format msgid "size specified for non-existent log subvolume\n" msgstr "podano rozmiar dla nie istniej±cego podwolumenu loga\n" -#: ../mkfs/xfs_mkfs.c:1627 +#: ../mkfs/xfs_mkfs.c:1740 #, c-format msgid "size %lld too large for internal log\n" msgstr "rozmiar %lld jest zbyt du¿y dla loga wewnêtrznego\n" -#: ../mkfs/xfs_mkfs.c:1654 +#: ../mkfs/xfs_mkfs.c:1767 #, c-format msgid "size %s specified for rt subvolume is too large, maximum is %lld blocks\n" msgstr "rozmiar %s podany dla podwolumenu rt jest zbyt du¿y, maksimum to %lld bloków\n" -#: ../mkfs/xfs_mkfs.c:1662 +#: ../mkfs/xfs_mkfs.c:1775 #, c-format msgid "size specified for non-existent rt subvolume\n" msgstr "podano rozmiar dla nie istniej±cego podwolumenu rt\n" -#: ../mkfs/xfs_mkfs.c:1679 +#: ../mkfs/xfs_mkfs.c:1792 #, c-format msgid "agsize (%lld) not a multiple of fs blk size (%d)\n" msgstr "agsize (%lld) nie jest wielokrotno¶ci± rozmiaru bloku systemu plików (%d)\n" -#: ../mkfs/xfs_mkfs.c:1707 +#: ../mkfs/xfs_mkfs.c:1822 #, c-format msgid "%s: Specified data stripe unit %d is not the same as the volume stripe unit %d\n" msgstr "%s: Podana jednostka pasa danych %d nie jest taka sama jak jednostka pasa wolumenu %d\n" -#: ../mkfs/xfs_mkfs.c:1713 +#: ../mkfs/xfs_mkfs.c:1829 #, c-format msgid "%s: Specified data stripe width %d is not the same as the volume stripe width %d\n" msgstr "%s: Podana szeroko¶æ pasa danych %d nie jest taka sama jak szeroko¶æ pasa wolumenu %d\n" -#: ../mkfs/xfs_mkfs.c:1758 +#: ../mkfs/xfs_mkfs.c:1876 #, c-format msgid "agsize rounded to %lld, swidth = %d\n" msgstr "agsize zaokr±glone do %lld, swidth = %d\n" -#: ../mkfs/xfs_mkfs.c:1765 +#: ../mkfs/xfs_mkfs.c:1883 #, c-format msgid "Allocation group size (%lld) is not a multiple of the stripe unit (%d)\n" msgstr "Rozmiar grupy alokacji (%lld) nie jest wielokrotno¶ci± jednostki pasa (%d)\n" -#: ../mkfs/xfs_mkfs.c:1787 +#: ../mkfs/xfs_mkfs.c:1905 #, c-format msgid "" "Warning: AG size is a multiple of stripe width. This can cause performance\n" @@ -3317,113 +3361,114 @@ msgstr "" "Aby temu zapobiec, nale¿y uruchomiæ mkfs z rozmiarem AG o jedn± jednostkê\n" "pasa mniejszym, na przyk³ad %llu.\n" -#: ../mkfs/xfs_mkfs.c:1812 +#: ../mkfs/xfs_mkfs.c:1930 #, c-format msgid "%s: Stripe unit(%d) or stripe width(%d) is not a multiple of the block size(%d)\n" msgstr "%s: Jednostka pasa (%d) lub szeroko¶æ pasa (%d) nie jest wielokrotno¶ci± rozmiaru bloku (%d)\n" -#: ../mkfs/xfs_mkfs.c:1827 +#: ../mkfs/xfs_mkfs.c:1945 #, c-format msgid "log stripe unit (%d) must be a multiple of the block size (%d)\n" msgstr "jednostka pasa loga (%d) musi byæ wielokrotno¶ci± rozmiaru bloku (%d)\n" -#: ../mkfs/xfs_mkfs.c:1840 +#: ../mkfs/xfs_mkfs.c:1958 #, c-format msgid "log stripe unit (%d bytes) is too large (maximum is 256KiB)\n" msgstr "jednostka pasa loga (%d bajtów) jest zbyt du¿a (maksimum to 256KiB)\n" -#: ../mkfs/xfs_mkfs.c:1843 +#: ../mkfs/xfs_mkfs.c:1961 #, c-format msgid "log stripe unit adjusted to 32KiB\n" msgstr "jednostka pasa loga zmodyfikowana na 32KiB\n" -#: ../mkfs/xfs_mkfs.c:1868 +#: ../mkfs/xfs_mkfs.c:1986 #, c-format msgid "internal log size %lld too large, must fit in allocation group\n" msgstr "rozmiar wewnêtrznego loga %lld zbyt du¿y, musi siê zmie¶ciæ w grupie alokacji\n" -#: ../mkfs/xfs_mkfs.c:1875 +#: ../mkfs/xfs_mkfs.c:1993 #, c-format msgid "log ag number %d too large, must be less than %lld\n" msgstr "liczba ag loga %d zbyt du¿a, musi byæ mniejsza ni¿ %lld\n" -#: ../mkfs/xfs_mkfs.c:1905 +#: ../mkfs/xfs_mkfs.c:2023 #, c-format msgid "" "meta-data=%-22s isize=%-6d agcount=%lld, agsize=%lld blks\n" " =%-22s sectsz=%-5u attr=%u\n" "data =%-22s bsize=%-6u blocks=%llu, imaxpct=%u\n" -" =%-22s sunit=%-6u swidth=%u blks, unwritten=%u\n" +" =%-22s sunit=%-6u swidth=%u blks\n" "naming =version %-14u bsize=%-6u\n" "log =%-22s bsize=%-6d blocks=%lld, version=%d\n" -" =%-22s sectsz=%-5u sunit=%d blks\n" +" =%-22s sectsz=%-5u sunit=%d blks, lazy-count=%d\n" "realtime =%-22s extsz=%-6d blocks=%lld, rtextents=%lld\n" msgstr "" "metadane=%-22s isize=%-6d agcount=%lld, agsize=%lld bloków\n" " =%-22s sectsz=%-5u attr=%u\n" "dane =%-22s bsize=%-6u blocks=%llu, imaxpct=%u\n" -" =%-22s sunit=%-6u swidth=%u bloków, niezapisanych=%u\n" +" =%-22s sunit=%-6u swidth=%u bloków\n" "nazwy =wersja %-14u bsize=%-6u\n" "log =%-22s bsize=%-6d blocks=%lld, wersja=%d\n" -" =%-22s sectsz=%-5u sunit=%d bloków\n" +" =%-22s sectsz=%-5u sunit=%d bloków, lazy-count=%d\n" "realtime=%-22s extsz=%-6d blocks=%lld, rtextents=%lld\n" -#: ../mkfs/xfs_mkfs.c:2012 +#: ../mkfs/xfs_mkfs.c:2140 #, c-format msgid "%s: Growing the data section failed\n" msgstr "%s: Powiêkszenie sekcji danych nie powiod³o siê\n" -#: ../mkfs/xfs_mkfs.c:2041 +#: ../mkfs/xfs_mkfs.c:2170 #, c-format msgid "%s: filesystem failed to initialize\n" msgstr "%s: nie uda³o siê zainicjowaæ systemu plików\n" -#: ../mkfs/xfs_mkfs.c:2265 +#: ../mkfs/xfs_mkfs.c:2394 #, c-format msgid "%s: root inode created in AG %u, not AG 0\n" msgstr "%s: g³ówny i-wêze³ utworzony w AG %u, nie AG 0\n" -#: ../mkfs/xfs_mkfs.c:2332 +#: ../mkfs/xfs_mkfs.c:2461 #, c-format msgid "Cannot specify both -%c %s and -%c %s\n" msgstr "Nie mo¿na podaæ jednocze¶nie -%c %s i %c %s\n" -#: ../mkfs/xfs_mkfs.c:2343 +#: ../mkfs/xfs_mkfs.c:2472 #, c-format msgid "Illegal value %s for -%s option\n" msgstr "Niedozwolona warto¶æ %s dla opcji -%s\n" -#: ../mkfs/xfs_mkfs.c:2360 +#: ../mkfs/xfs_mkfs.c:2489 #, c-format msgid "-%c %s option requires a value\n" msgstr "Opcja -%c %s wymaga warto¶ci\n" -#: ../mkfs/xfs_mkfs.c:2373 ../repair/xfs_repair.c:140 +#: ../mkfs/xfs_mkfs.c:2502 ../repair/xfs_repair.c:168 #, c-format msgid "option respecified\n" msgstr "ponownie podana opcja\n" -#: ../mkfs/xfs_mkfs.c:2382 ../repair/xfs_repair.c:147 +#: ../mkfs/xfs_mkfs.c:2511 ../repair/xfs_repair.c:175 #, c-format msgid "unknown option -%c %s\n" msgstr "nieznana opcja -%c %s\n" -#: ../mkfs/xfs_mkfs.c:2421 +#: ../mkfs/xfs_mkfs.c:2550 #, c-format msgid "blocksize not available yet.\n" msgstr "rozmiar bloku jeszcze nie dostêpny.\n" -#: ../mkfs/xfs_mkfs.c:2447 +#: ../mkfs/xfs_mkfs.c:2576 #, c-format msgid "" "Usage: %s\n" "/* blocksize */\t\t[-b log=n|size=num]\n" "/* data subvol */\t[-d agcount=n,agsize=n,file,name=xxx,size=num,\n" "\t\t\t (sunit=value,swidth=value|su=num,sw=num),\n" -"\t\t\t sectlog=n|sectsize=num,unwritten=0|1]\n" +"\t\t\t sectlog=n|sectsize=num\n" "/* inode size */\t[-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2]\n" "/* log subvol */\t[-l agnum=n,internal,size=num,logdev=xxx,version=n\n" -"\t\t\t sunit=value|su=num,sectlog=n|sectsize=num]\n" +"\t\t\t sunit=value|su=num,sectlog=n|sectsize=num,\n" +"\t\t\t lazy-count=0|1]\n" "/* label */\t\t[-L label (maximum 12 characters)]\n" "/* naming */\t\t[-n log=n|size=num,version=n]\n" "/* prototype file */\t[-p fname]\n" @@ -3438,21 +3483,22 @@ msgid "" " is xxx (512 byte blocks).\n" msgstr "" "Sk³adnia: %s\n" -"/* rozmiar bloku */ [-b log=n|size=liczba]\n" +"/* rozmiar bloku */ [-b log=n|size=liczba]\n" "/* podwolumen danych */ [-d agcount=n,agsize=n,file,name=xxx,size=liczba,\n" -" (sunit=warto¶æ,swidth=warto¶æ|su=liczba,sw=liczba),\n" -" sectlog=n|sectsize=liczba,unwritten=0|1]\n" -"/* rozmiar i-wêz³a */ [-i log=n|perblock=n|size=liczba,maxpct=n,attr=0|1|2]\n" -"/* podwolumen loga */ [-i agnum=n,internal,size=liczba,logdev=xxx,version=n\n" -" sunit=warto¶æ|su=liczba,sectlog=n|sectsize=liczba]\n" -"/* etykieta */ [-L etykieta (maksymalnie 12 znaków)]\n" -"/* nazwy */ [-n log=n|size=liczba,wersja=n]\n" -"/* plik prototypu */ [-p nazwa_pliku]\n" -"/* cisza */ [-q]\n" -"/* podwolumen rt */ [-r extsize=liczba,size=liczba,rtdev=xxx]\n" -"/* rozmiar sektora */ [-s log=n|size=liczba]\n" -"/* wersja */ [-V]\n" -" nazwa_urz±dzenia\n" +" (sunit=warto¶æ,swidth=warto¶æ|su=liczba,sw=liczba),\n" +" sectlog=n|sectsize=liczba]\n" +"/* rozmiar i-wêz³a */ [-i log=n|perblock=n|size=liczba,maxpct=n,attr=0|1|2]\n" +"/* podwolumen loga */ [-i agnum=n,internal,size=liczba,logdev=xxx,version=n\n" +" sunit=warto¶æ|su=liczba,sectlog=n|sectsize=liczba,\n" +" lazy-count=0|1]\n" +"/* etykieta */ [-L etykieta (maksymalnie 12 znaków)]\n" +"/* nazwy */ [-n log=n|size=liczba,wersja=n]\n" +"/* plik prototypu */ [-p nazwa_pliku]\n" +"/* cisza */ [-q]\n" +"/* podwolumen rt */ [-r extsize=liczba,size=liczba,rtdev=xxx]\n" +"/* rozmiar sektora */ [-s log=n|size=liczba]\n" +"/* wersja */ [-V]\n" +" nazwa_urz±dzenia\n" " jest wymagana, chyba ¿e podano -d name=xxx.\n" " to xxx (bajtów), xxxs (sektorów), xxxb (bloków systemu plików),\n" " xxxk (xxx KiB), xxxm (xxx MiB), xxxg (xxx GiB), xxxt (xxx TiB),\n" @@ -3666,7 +3712,6 @@ msgid "restore" msgstr "restore" #: ../quota/edit.c:674 ../quota/report.c:33 ../quota/report.c:632 -#: ../quota/state.c:528 msgid "[-gpu] [-f file]" msgstr "[-gpu] [-f plik]" @@ -3725,64 +3770,64 @@ msgstr "" " -N - pominiêcie nag³ówka z wyj¶cia\n" "\n" -#: ../quota/free.c:137 +#: ../quota/free.c:142 #, c-format msgid "%s: project quota flag not set on %s\n" msgstr "%s: flaga quot projektu nie ustawiona dla %s\n" -#: ../quota/free.c:145 +#: ../quota/free.c:150 #, c-format msgid "%s: project ID %u (%s) doesn't match ID %u (%s)\n" msgstr "%s: ID projektu %u (%s) nie zgadza siê z ID %u (%s)\n" -#: ../quota/free.c:210 +#: ../quota/free.c:215 #, c-format msgid "Filesystem " msgstr "System plików " -#: ../quota/free.c:210 +#: ../quota/free.c:215 #, c-format msgid "Filesystem " msgstr "System plików " -#: ../quota/free.c:213 +#: ../quota/free.c:218 #, c-format msgid " Size Used Avail Use%%" msgstr " Rozmiar U¿yto Dost. %%u¿." -#: ../quota/free.c:214 +#: ../quota/free.c:219 #, c-format msgid " 1K-blocks Used Available Use%%" msgstr " Bloki 1K U¿yto Dostêpnych %%u¿." -#: ../quota/free.c:217 +#: ../quota/free.c:222 #, c-format msgid " Inodes Used Free Use%%" msgstr " I-wêz³y U¿yto Wolne %%u¿." -#: ../quota/free.c:218 +#: ../quota/free.c:223 #, c-format msgid " Inodes IUsed IFree IUse%%" msgstr " I-wêz³y U¿ytoI WolneI %%u¿I" -#: ../quota/free.c:219 +#: ../quota/free.c:224 #, c-format msgid " Pathname\n" msgstr " ¦cie¿ka\n" -#: ../quota/free.c:350 +#: ../quota/free.c:355 msgid "df" msgstr "df" -#: ../quota/free.c:351 ../repair/dir2.c:941 ../repair/dir2.c:1476 +#: ../quota/free.c:356 ../repair/dir2.c:951 ../repair/dir2.c:1479 msgid "free" msgstr "free" -#: ../quota/free.c:355 +#: ../quota/free.c:360 msgid "[-bir] [-hn] [-f file]" msgstr "[-bir] [hn] [-f plik]" -#: ../quota/free.c:356 +#: ../quota/free.c:361 msgid "show free and used counts for blocks and inodes" msgstr "pokazanie liczby wolnych i zajêtych bloków i i-wêz³ów" @@ -3820,23 +3865,28 @@ msgstr " (projekt %u" msgid ", %s" msgstr ", %s" -#: ../quota/path.c:119 +#: ../quota/path.c:103 +#, c-format +msgid "No paths are available\n" +msgstr "Brak ¶cie¿ek\n" + +#: ../quota/path.c:124 msgid "path" msgstr "path" -#: ../quota/path.c:120 +#: ../quota/path.c:125 msgid "paths" msgstr "paths" -#: ../quota/path.c:125 +#: ../quota/path.c:131 msgid "set current path, or show the list of paths" msgstr "ustawienie bie¿±cej ¶cie¿ki lub pokazanie listy ¶cie¿ek" -#: ../quota/path.c:132 +#: ../quota/path.c:139 msgid "list known mount points and projects" msgstr "wypisanie znanych punktów montowañ i projektów" -#: ../quota/project.c:37 +#: ../quota/project.c:44 #, c-format msgid "" "\n" @@ -3916,69 +3966,79 @@ msgstr "" " manuala xfs_quota.\n" "\n" -#: ../quota/project.c:94 +#: ../quota/project.c:94 ../quota/project.c:133 ../quota/project.c:172 +#, c-format +msgid "%s: cannot stat file %s\n" +msgstr "%s: nie mo¿na wykonaæ stat na pliku %s\n" + +#: ../quota/project.c:98 ../quota/project.c:137 ../quota/project.c:176 +#, c-format +msgid "%s: skipping special file %s\n" +msgstr "%s: pominiêto plik specjalny %s\n" + +#: ../quota/project.c:110 #, c-format msgid "%s - project identifier is not set (inode=%u, tree=%u)\n" msgstr "%s - identyfikator projektu nie ustawiony (i-wêze³=%u, drzewo=%u)\n" -#: ../quota/project.c:98 +#: ../quota/project.c:114 #, c-format msgid "%s - project inheritance flag is not set\n" msgstr "%s - flaga dziedziczenia projektu nie ustawiona\n" -#: ../quota/project.c:130 +#: ../quota/project.c:155 #, c-format msgid "%s: cannot clear project on %s: %s\n" msgstr "%s: nie mo¿na usun±æ projektu z %s: %s\n" -#: ../quota/project.c:160 +#: ../quota/project.c:194 #, c-format msgid "%s: cannot set project on %s: %s\n" msgstr "%s: nie mo¿na ustawiæ projektu na %s: %s\n" -#: ../quota/project.c:174 +#: ../quota/project.c:208 #, c-format msgid "Checking project %s (path %s)...\n" msgstr "Sprawdzanie projektu %s (¶cie¿ka %s)...\n" -#: ../quota/project.c:178 +#: ../quota/project.c:212 #, c-format msgid "Setting up project %s (path %s)...\n" msgstr "Ustanawianie projektu %s (¶cie¿ka %s)...\n" -#: ../quota/project.c:182 +#: ../quota/project.c:216 #, c-format msgid "Clearing project %s (path %s)...\n" msgstr "Usuwanie projektu %s (¶cie¿ka %s)...\n" -#: ../quota/project.c:205 +#: ../quota/project.c:239 #, c-format msgid "Processed %d %s paths for project %s\n" msgstr "Przetworzono %d ¶cie¿ek %s dla projektu %s\n" -#: ../quota/project.c:241 +#: ../quota/project.c:275 #, c-format msgid "projects file \"%s\" doesn't exist\n" msgstr "plik projektów \"%s\" nie istnieje\n" -#: ../quota/project.c:249 +#: ../quota/project.c:283 #, c-format msgid "%s - no such project in %s\n" msgstr "%s - nie ma takiego projektu w %s\n" -#: ../quota/project.c:262 +#: ../quota/project.c:296 msgid "project" msgstr "project" -#: ../quota/project.c:263 +#: ../quota/project.c:297 msgid "tree" msgstr "tree" -#: ../quota/project.c:265 +#: ../quota/project.c:299 msgid "[-c|-s|-C] project ..." msgstr "[-c|-s|-C] projekt ..." -#: ../quota/project.c:268 +#: ../quota/project.c:302 msgid "check, setup or clear project quota trees" msgstr "sprawdzenie, ustanowienie lub usuniêcie drzew projektów" @@ -4133,39 +4193,39 @@ msgstr "Realtime Quota Limit Czas ostrz. " msgid " Realtime Quota Limit Warn/Time " msgstr " Realtime Quota Limit Czas ostrz. " -#: ../quota/quota.c:232 +#: ../quota/quota.c:234 #, c-format msgid "%s: cannot find user %s\n" msgstr "%s: nie mo¿na odnale¼æ u¿ytkownika %s\n" -#: ../quota/quota.c:279 +#: ../quota/quota.c:283 #, c-format msgid "%s: cannot find group %s\n" msgstr "%s: nie mo¿na odnale¼æ grupy %s\n" -#: ../quota/quota.c:333 +#: ../quota/quota.c:339 #, c-format msgid "%s: must specify a project name/ID\n" msgstr "%s: nale¿y podaæ nazwê/ID projektu\n" -#: ../quota/quota.c:345 +#: ../quota/quota.c:351 #, c-format msgid "%s: cannot find project %s\n" msgstr "%s: nie mo¿na odnale¼æ projektu %s\n" -#: ../quota/quota.c:445 +#: ../quota/quota.c:451 msgid "quota" msgstr "quota" -#: ../quota/quota.c:446 +#: ../quota/quota.c:452 msgid "l" msgstr "l" -#: ../quota/quota.c:450 -msgid "[-bir] [-gpu] [-hnv] [-f file] [id|name]..." -msgstr "[-bir] [-gpu] [-hnv] [-f plik] [id|nazwa]..." +#: ../quota/quota.c:456 +msgid "[-bir] [-gpu] [-hnNv] [-f file] [id|name]..." +msgstr "[-bir] [-gpu] [-hnNv] [-f plik] [id|nazwa]..." -#: ../quota/quota.c:451 +#: ../quota/quota.c:457 msgid "show usage and limits" msgstr "pokazanie wykorzystania i limitów" @@ -4469,6 +4529,10 @@ msgstr "wy msgid "state" msgstr "state" +#: ../quota/state.c:528 +msgid "[-gpu] [-a] [-v] [-f file]" +msgstr "[-gpu] [-a] [-v] [-f plik]" + #: ../quota/state.c:529 msgid "get overall quota state information" msgstr "uzyskanie ogólnych informacji o stanie quot" @@ -4915,7 +4979,7 @@ msgstr "wska msgid "bad attribute leaf magic # %#x for dir ino %llu\n" msgstr "b³êdna liczba magiczna li¶cia atrybutu %#x dla i-wêz³a katalogu %llu\n" -#: ../repair/attr_repair.c:991 ../repair/dinode.c:2539 +#: ../repair/attr_repair.c:991 ../repair/dinode.c:2563 #, c-format msgid "illegal attribute format %d, ino %llu\n" msgstr "niedozwolony format atrybutu %d, i-wêze³ %llu\n" @@ -4955,746 +5019,751 @@ msgstr "realloc w blkmap_getn nie powiod msgid "realloc failed in blkmap_grow (%u bytes)\n" msgstr "realloc nie powiod³o siê w blkmap_grow (%u bajtów)\n" -#: ../repair/dino_chunks.c:58 +#: ../repair/dino_chunks.c:59 #, c-format msgid "cannot read agbno (%u/%u), disk block %lld\n" msgstr "nie mo¿na odczytaæ agbno (%u/%u), blok dysku %lld\n" -#: ../repair/dino_chunks.c:154 +#: ../repair/dino_chunks.c:157 #, c-format msgid "uncertain inode block %d/%d already known\n" msgstr "niepewny blok i-wêz³a %d/%d ju¿ znany\n" -#: ../repair/dino_chunks.c:170 ../repair/dino_chunks.c:436 -#: ../repair/dino_chunks.c:493 +#: ../repair/dino_chunks.c:173 ../repair/dino_chunks.c:443 +#: ../repair/dino_chunks.c:505 #, c-format msgid "inode block %d/%d multiply claimed, (state %d)\n" msgstr "blok i-wêz³a %d/%d ju¿ przypisany (stan %d)\n" -#: ../repair/dino_chunks.c:176 ../repair/dino_chunks.c:498 +#: ../repair/dino_chunks.c:180 ../repair/dino_chunks.c:510 #, c-format msgid "inode block %d/%d bad state, (state %d)\n" msgstr "blok i-wêz³a (%d/%d) w b³êdnym stanie (stan %d)\n" -#: ../repair/dino_chunks.c:443 +#: ../repair/dino_chunks.c:450 #, c-format msgid "uncertain inode block overlap, agbno = %d, ino = %llu\n" msgstr "niepewny blok i-wêz³a pokrywa siê, agbno = %d, i-wêze³ %llu\n" -#: ../repair/dino_chunks.c:480 +#: ../repair/dino_chunks.c:492 #, c-format msgid "uncertain inode block %llu already known\n" msgstr "niepewny blok i-wêz³a %llu ju¿ znany\n" -#: ../repair/dino_chunks.c:595 ../repair/phase7.c:99 ../repair/phase7.c:106 +#: ../repair/dino_chunks.c:628 #, c-format -msgid "cannot read inode %llu, disk block %lld, cnt %d\n" -msgstr "nie mo¿na odczytaæ i-wêz³a %llu, blok dysku %lld, cnt %d\n" +msgid "failed to allocate %d bytes of memory\n" +msgstr "nie uda³o siê przydzieliæ %d bajtów pamiêci\n" -#: ../repair/dino_chunks.c:692 +#: ../repair/dino_chunks.c:640 #, c-format -msgid "can't read inode %llu, disk block %lld, cnt %d\n" +msgid "cannot read inode %llu, disk block %lld, cnt %d\n" msgstr "nie mo¿na odczytaæ i-wêz³a %llu, blok dysku %lld, cnt %d\n" -#: ../repair/dino_chunks.c:712 ../repair/dino_chunks.c:881 -#: ../repair/phase3.c:70 +#: ../repair/dino_chunks.c:757 ../repair/dino_chunks.c:939 +#: ../repair/phase3.c:74 #, c-format msgid "bad state in block map %d\n" msgstr "b³êdny stan w mapie bloku %d\n" -#: ../repair/dino_chunks.c:716 ../repair/dino_chunks.c:886 +#: ../repair/dino_chunks.c:761 ../repair/dino_chunks.c:944 #, c-format msgid "inode block %llu multiply claimed, state was %d\n" msgstr "blok i-wêz³a %llu wielokrotnie przydzielony, stan by³ %d\n" -#: ../repair/dino_chunks.c:753 +#: ../repair/dino_chunks.c:797 #, c-format msgid "imap claims in-use inode %llu is free, " msgstr "imap twierdzi, ¿e u¿ywany i-wêze³ %llu jest wolny, " -#: ../repair/dino_chunks.c:762 +#: ../repair/dino_chunks.c:804 msgid "correcting imap\n" msgstr "poprawiono imap\n" -#: ../repair/dino_chunks.c:764 +#: ../repair/dino_chunks.c:806 msgid "would correct imap\n" msgstr "imap zosta³oby poprawione\n" -#: ../repair/dino_chunks.c:801 +#: ../repair/dino_chunks.c:852 #, c-format msgid "cleared root inode %llu\n" msgstr "wyczyszczono g³ówny i-wêze³ %llu\n" -#: ../repair/dino_chunks.c:805 +#: ../repair/dino_chunks.c:856 #, c-format msgid "would clear root inode %llu\n" msgstr "g³ówny wêze³ %llu zosta³by wyczyszczony\n" -#: ../repair/dino_chunks.c:814 +#: ../repair/dino_chunks.c:865 #, c-format msgid "cleared realtime bitmap inode %llu\n" msgstr "wyczyszczono i-wêze³ bitmapy realtime %llu\n" -#: ../repair/dino_chunks.c:819 +#: ../repair/dino_chunks.c:870 #, c-format msgid "would clear realtime bitmap inode %llu\n" msgstr "i-wêze³ bitmapy realtime %llu zosta³by wyczyszczony\n" -#: ../repair/dino_chunks.c:829 +#: ../repair/dino_chunks.c:880 #, c-format msgid "cleared realtime summary inode %llu\n" msgstr "wyczyszczono i-wêze³ opisu realtime %llu\n" -#: ../repair/dino_chunks.c:834 +#: ../repair/dino_chunks.c:885 #, c-format msgid "would clear realtime summary inode %llu\n" msgstr "i-wêze³ opisu realtime %llu zosta³by wyczyszczony\n" -#: ../repair/dino_chunks.c:840 +#: ../repair/dino_chunks.c:891 #, c-format msgid "cleared inode %llu\n" msgstr "wyczyszczono i-wêze³ %llu\n" -#: ../repair/dino_chunks.c:843 +#: ../repair/dino_chunks.c:894 #, c-format msgid "would have cleared inode %llu\n" msgstr "i-wêze³ %llu zosta³by wyczyszczony\n" -#: ../repair/dino_chunks.c:1025 ../repair/dino_chunks.c:1060 -#: ../repair/dino_chunks.c:1174 +#: ../repair/dino_chunks.c:1100 ../repair/dino_chunks.c:1135 +#: ../repair/dino_chunks.c:1249 msgid "found inodes not in the inode allocation tree\n" msgstr "znaleziono i-wêz³y nieobecne w drzewie alokacji i-wêz³ów\n" -#: ../repair/dinode.c:70 +#: ../repair/dinode.c:71 msgid "Unknown inode format.\n" msgstr "Nieznany format i-wêz³a.\n" -#: ../repair/dinode.c:87 +#: ../repair/dinode.c:88 #, c-format msgid "clearing inode %llu attributes\n" msgstr "wyczyszczono atrybuty i-wêz³a %llu\n" -#: ../repair/dinode.c:90 +#: ../repair/dinode.c:91 #, c-format msgid "would have cleared inode %llu attributes\n" msgstr "atrybuty i-wêz³a %llu zosta³yby wyczyszczone\n" -#: ../repair/dinode.c:557 ../repair/dinode.c:1207 ../repair/scan.c:154 +#: ../repair/dinode.c:541 +#, c-format +msgid "inode %llu - bad rt extent start block number %llu, offset %llu\n" +msgstr "i-wêze³ %llu - b³êdny numer bloku pocz±tkowego fragmentu rt %llu, offset %llu\n" + +#: ../repair/dinode.c:546 +#, c-format +msgid "inode %llu - bad rt extent last block number %llu, offset %llu\n" +msgstr "i-wêze³ %llu - b³êdny numer bloku koñcowego fragmentu rt %llu, offset %llu\n" + +#: ../repair/dinode.c:551 +#, c-format +msgid "inode %llu - bad rt extent overflows - start %llu, end %llu, offset %llu\n" +msgstr "i-wêze³ %llu - b³êdne przepe³nienie fragmentu rt - pocz±tek %llu, koniec %llu, offset %llu\n" + +#: ../repair/dinode.c:564 +#, c-format +msgid "malformed rt inode extent [%llu %llu] (fs rtext size = %u)\n" +msgstr "zniekszta³cony fragment i-wêz³a rt [%llu %llu] (rozmiar fs rtext = %u)\n" + +#: ../repair/dinode.c:579 +#, c-format +msgid "data fork in rt ino %llu claims dup rt extent, off - %llu, start - %llu, count %llu\n" +msgstr "ga³±¼ danych w i-wê¼le rt %llu odwo³uje siê do powtórzonego fragmentu rt, offset %llu, pocz±tek %llu, liczba %llu\n" + +#: ../repair/dinode.c:597 +#, c-format +msgid "bad state in rt block map %llu\n" +msgstr "b³êdny stan w mapie bloku rt %llu\n" + +#: ../repair/dinode.c:603 +#, c-format +msgid "data fork in rt inode %llu found metadata block %llu in rt bmap\n" +msgstr "ga³±¼ danych w i-wê¼le rt %llu - znaleziono blok metadanych %llu w bmapie rt\n" + +#: ../repair/dinode.c:613 +#, c-format +msgid "data fork in rt inode %llu claims used rt block %llu\n" +msgstr "ga³±¼ danych w i-wê¼le rt %llu odwo³uje siê do u¿ywanego bloku rt %llu\n" + +#: ../repair/dinode.c:620 +#, c-format +msgid "illegal state %d in rt block map %llu\n" +msgstr "niedozwolony stan %d w mapie bloku rt %llu\n" + +#: ../repair/dinode.c:674 ../repair/dinode.c:1227 ../repair/scan.c:154 msgid "data" msgstr "danych" -#: ../repair/dinode.c:559 ../repair/dinode.c:1209 ../repair/scan.c:156 +#: ../repair/dinode.c:676 ../repair/dinode.c:1229 ../repair/scan.c:156 msgid "attr" msgstr "atrybutów" -#: ../repair/dinode.c:562 +#: ../repair/dinode.c:679 msgid "real-time" msgstr "realtime" -#: ../repair/dinode.c:564 +#: ../repair/dinode.c:681 msgid "regular" msgstr "zwyk³ym" -#: ../repair/dinode.c:574 +#: ../repair/dinode.c:690 #, c-format msgid "bmap rec out of order, inode %llu entry %d [o s c] [%llu %llu %llu], %d [%llu %llu %llu]\n" msgstr "rekord bmap uszkodzony, i-wêze³ %llu wpis %d [o s c] [%llu %llu %llu], %d [%llu %llu %llu]\n" -#: ../repair/dinode.c:588 +#: ../repair/dinode.c:703 #, c-format msgid "zero length extent (off = %llu, fsbno = %llu) in ino %llu\n" msgstr "fragment zerowej d³ugo¶ci (off = %llu, fsbno = %llu) w i-wê¼le %llu\n" -#: ../repair/dinode.c:595 -#, c-format -msgid "inode %llu - bad rt extent start block number %llu, offset %llu\n" -msgstr "i-wêze³ %llu - b³êdny numer bloku pocz±tkowego fragmentu rt %llu, offset %llu\n" - -#: ../repair/dinode.c:601 -#, c-format -msgid "inode %llu - bad rt extent last block number %llu, offset %llu\n" -msgstr "i-wêze³ %llu - b³êdny numer bloku koñcowego fragmentu rt %llu, offset %llu\n" - -#: ../repair/dinode.c:607 -#, c-format -msgid "inode %llu - bad rt extent overflows - start %llu, end %llu, offset %llu\n" -msgstr "i-wêze³ %llu - b³êdne przepe³nienie fragmentu rt - pocz±tek %llu, koniec %llu, offset %llu\n" - -#: ../repair/dinode.c:618 +#: ../repair/dinode.c:730 #, c-format msgid "inode %llu - bad extent starting block number %llu, offset %llu\n" msgstr "i-wêze³ %llu - b³êdny numer bloku pocz±tkowego fragmentu %llu, offset %llu\n" -#: ../repair/dinode.c:623 +#: ../repair/dinode.c:736 #, c-format msgid "inode %llu - bad extent last block number %llu, offset %llu\n" msgstr "i-wêze³ %llu - b³êdny numer bloku koñcowego fragmentu %llu, offset %llu\n" -#: ../repair/dinode.c:629 +#: ../repair/dinode.c:742 #, c-format msgid "inode %llu - bad extent overflows - start %llu, end %llu, offset %llu\n" msgstr "i-wêze³ %llu - b³êdne przepe³nienie fragmentu - pocz±tek %llu, koniec %llu, offset %llu\n" -#: ../repair/dinode.c:636 +#: ../repair/dinode.c:748 #, c-format msgid "inode %llu - extent offset too large - start %llu, count %llu, offset %llu\n" msgstr "i-wêze³ %llu - offset fragmentu zbyt du¿y - pocz±tek %llu, liczba %llu, offset %llu\n" -#: ../repair/dinode.c:655 -#, c-format -msgid "malformed rt inode extent [%llu %llu] (fs rtext size = %u)\n" -msgstr "zniekszta³cony fragment i-wêz³a rt [%llu %llu] (rozmiar fs rtext = %u)\n" - -#: ../repair/dinode.c:676 -#, c-format -msgid "data fork in rt ino %llu claims dup rt extent, off - %llu, start - %llu, count %llu\n" -msgstr "ga³±¼ danych w i-wê¼le rt %llu odwo³uje siê do powtórzonego fragmentu rt, offset %llu, pocz±tek %llu, liczba %llu\n" - -#: ../repair/dinode.c:700 -#, c-format -msgid "bad state in rt block map %llu\n" -msgstr "b³êdny stan w mapie bloku rt %llu\n" - -#: ../repair/dinode.c:707 -#, c-format -msgid "%s fork in rt inode %llu found metadata block %llu in %s bmap\n" -msgstr "ga³±¼ %s w i-wê¼le rt %llu - znaleziono blok metadanych %llu w bmap %s\n" - -#: ../repair/dinode.c:715 -#, c-format -msgid "%s fork in rt inode %llu claims used rt block %llu\n" -msgstr "ga³±¼ %s w i-wê¼le rt %llu odwo³uje siê do u¿ywanego bloku rt %llu\n" - -#: ../repair/dinode.c:721 -#, c-format -msgid "illegal state %d in %s block map %llu\n" -msgstr "niedozwolony stan %d w mapie bloku %s %llu\n" - -#: ../repair/dinode.c:761 +#: ../repair/dinode.c:779 #, c-format msgid "%s fork in ino %llu claims dup extent, off - %llu, start - %llu, cnt %llu\n" msgstr "ga³±¼ %s w i-wê¼le %llu odwo³uje siê do powtórzonego fragmentu, offset %llu, pocz±tek %llu, liczba %llu\n" -#: ../repair/dinode.c:796 +#: ../repair/dinode.c:810 #, c-format msgid "%s fork in ino %llu claims free block %llu\n" msgstr "ga³±¼ %s w i-wê¼le %llu odwo³uje siê do wolnego bloku %llu\n" -#: ../repair/dinode.c:803 +#: ../repair/dinode.c:819 #, c-format msgid "bad state in block map %llu\n" msgstr "b³êdny stan w mapie bloku %llu\n" -#: ../repair/dinode.c:810 +#: ../repair/dinode.c:824 #, c-format msgid "%s fork in inode %llu claims metadata block %llu\n" msgstr "ga³±¼ %s w i-wê¼le %llu odwo³uje siê do bloku metadanych %llu\n" -#: ../repair/dinode.c:817 +#: ../repair/dinode.c:832 #, c-format msgid "%s fork in %s inode %llu claims used block %llu\n" msgstr "ga³±¼ %s w i-wê¼le %s %llu odwo³uje siê do u¿ywanego bloku %llu\n" -#: ../repair/dinode.c:822 +#: ../repair/dinode.c:838 #, c-format msgid "illegal state %d in block map %llu\n" msgstr "niedozwolony stan %d w mapie bloku %llu\n" -#: ../repair/dinode.c:900 +#: ../repair/dinode.c:918 #, c-format msgid "cannot read inode (%u/%u), disk block %lld\n" msgstr "nie mo¿na odczytaæ i-wêz³a (%u/%u), blok dysku %lld\n" -#: ../repair/dinode.c:1018 ../repair/dinode.c:1083 +#: ../repair/dinode.c:1036 ../repair/dinode.c:1101 #, c-format msgid "cannot read bmap block %llu\n" msgstr "nie mo¿na odczytaæ bloku bmap %llu\n" -#: ../repair/dinode.c:1039 +#: ../repair/dinode.c:1057 #, c-format msgid "# of bmap records in inode %llu exceeds max (%u, max - %u)\n" msgstr "liczba rekordów bmap w i-wê¼le %llu przekracza maksimum (%u, maksimum %u)\n" -#: ../repair/dinode.c:1048 +#: ../repair/dinode.c:1066 #, c-format msgid "- # of bmap records in inode %llu less than minimum (%u, min - %u), proceeding ...\n" msgstr "- liczba rekordów bmap w i-wê¼le %llu mniejsza ni¿ minimum (%u, minimum %u), kontynuacja...\n" -#: ../repair/dinode.c:1094 +#: ../repair/dinode.c:1112 #, c-format msgid "# of bmap records in inode %llu greater than maximum (%u, max - %u)\n" msgstr "liczba rekordów bmap w i-wê¼le %llu wiêksza ni¿ maksimum (%u, maksimum %u)\n" -#: ../repair/dinode.c:1103 +#: ../repair/dinode.c:1121 #, c-format msgid "- # of bmap records in inode %llu less than minimum (%u, min - %u), continuing...\n" msgstr "- liczba rekordów bmap w i-wê¼le %llu mniejsza ni¿ minimum (%u, minimum %u), kontynuacja...\n" -#: ../repair/dinode.c:1121 +#: ../repair/dinode.c:1139 #, c-format msgid "could not map block %llu\n" msgstr "nie uda³o siê odwzorowaæ bloku %llu\n" -#: ../repair/dinode.c:1153 +#: ../repair/dinode.c:1171 #, c-format msgid "get_bmapi() called for local inode %llu\n" msgstr "get_bmapi() wywo³ano dla lokalnego i-wêz³a %llu\n" -#: ../repair/dinode.c:1161 +#: ../repair/dinode.c:1179 #, c-format msgid "bad inode format for inode %llu\n" msgstr "b³êdny format i-wêz³a dla i-wêz³a %llu\n" -#: ../repair/dinode.c:1225 +#: ../repair/dinode.c:1243 +#, c-format +msgid "bad level %d in inode %llu bmap btree root block\n" +msgstr "b³êdny poziom %d w bloku g³ównym bmap btree i-wêz³a %llu\n" + +#: ../repair/dinode.c:1248 #, c-format -msgid "bad level 0 in inode %llu bmap btree root block\n" -msgstr "b³êdny poziom 0 w bloku g³ównym bmap btree i-wêz³a %llu\n" +msgid "bad numrecs 0 in inode %llu bmap btree root block\n" +msgstr "b³êdne numrecs 0 w bloku g³ównym bmap btree i-wêz³a %llu\n" -#: ../repair/dinode.c:1239 +#: ../repair/dinode.c:1259 #, c-format msgid "indicated size of %s btree root (%d bytes) greater than space in inode %llu %s fork\n" msgstr "oznaczony rozmiar korzenia b-drzewa %s (%d bajtów) wiêkszy ni¿ miejsce w i-wê¼le %llu ga³êzi %s\n" -#: ../repair/dinode.c:1269 ../repair/scan.c:380 +#: ../repair/dinode.c:1289 ../repair/scan.c:380 #, c-format msgid "bad bmap btree ptr 0x%llx in ino %llu\n" msgstr "b³êdny wska¼nik bmap btree 0x%llx w i-wê¼le %llu\n" -#: ../repair/dinode.c:1291 +#: ../repair/dinode.c:1310 #, c-format msgid "correcting key in bmbt root (was %llu, now %llu) in inode %llu %s fork\n" msgstr "poprawiono klucz w korzeniu bmbt (by³ %llu, jest %llu) w i-wê¼le %llu ga³êzi %s\n" -#: ../repair/dinode.c:1305 +#: ../repair/dinode.c:1322 #, c-format msgid "bad key in bmbt root (is %llu, would reset to %llu) in inode %llu %s fork\n" msgstr "b³êdny klucz w korzeniu bmbt (jest %llu, zosta³y przestawiony na %llu) w i-wê¼le %llu ga³êzi %s\n" -#: ../repair/dinode.c:1324 +#: ../repair/dinode.c:1339 #, c-format msgid "out of order bmbt root key %llu in inode %llu %s fork\n" msgstr "niepoprawny klucz korzenia bmbt %llu w i-wê¼le %llu ga³êzi %s\n" -#: ../repair/dinode.c:1341 +#: ../repair/dinode.c:1355 #, c-format msgid "bad fwd (right) sibling pointer (saw %llu should be NULLDFSBNO)\n" msgstr "b³êdny wska¼nik fwd (prawy) (widziano %llu, powinno byæ NULLDFSBNO)\n" -#: ../repair/dinode.c:1344 +#: ../repair/dinode.c:1358 #, c-format msgid "\tin inode %u (%s fork) bmap btree block %llu\n" msgstr "\tw i-wê¼le %u (ga³êzi %s) bloku bmap btree %llu\n" -#: ../repair/dinode.c:1425 +#: ../repair/dinode.c:1439 #, c-format msgid "local inode %llu data fork is too large (size = %lld, max = %d)\n" msgstr "ga³±¼ danych lokalnego i-wêz³a %llu zbyt du¿a (rozmiar = %lld, maksimum = %d)\n" -#: ../repair/dinode.c:1435 +#: ../repair/dinode.c:1449 #, c-format msgid "local inode %llu attr fork too large (size %d, max = %d)\n" msgstr "ga³±¼ atrybutów lokalnego i-wêz³a %llu zbyt du¿a (rozmiar %d, maksimum = %d)\n" -#: ../repair/dinode.c:1443 +#: ../repair/dinode.c:1457 #, c-format msgid "local inode %llu attr too small (size = %d, min size = %d)\n" msgstr "ga³±¼ atrybutów lokalnego i-wêz³a %llu zbyt ma³a (rozmiar = %d, minimum = %d)\n" -#: ../repair/dinode.c:1473 +#: ../repair/dinode.c:1487 #, c-format msgid "mismatch between format (%d) and size (%lld) in symlink ino %llu\n" msgstr "niezgodno¶æ miêdzy formatem (%d) i rozmiarem (%lld) w i-wê¼le dowi±zania symbolicznego %llu\n" -#: ../repair/dinode.c:1481 +#: ../repair/dinode.c:1495 #, c-format msgid "mismatch between format (%d) and size (%lld) in symlink inode %llu\n" msgstr "niezgodno¶æ miêdzy formatem (%d) i rozmiarem (%lld) w i-wê¼le dowi±zania symbolicznego %llu\n" -#: ../repair/dinode.c:1497 +#: ../repair/dinode.c:1511 #, c-format msgid "bad number of extents (%d) in symlink %llu data fork\n" msgstr "b³êdna liczba fragmentów (%d) w ga³êzi danych dowi±zania symbolicznego %llu\n" -#: ../repair/dinode.c:1510 +#: ../repair/dinode.c:1524 #, c-format msgid "bad extent #%d offset (%llu) in symlink %llu data fork\n" msgstr "b³êdny offset fragmentu %d (%llu) w ga³êzi danych dowi±zania symbolicznego %llu\n" -#: ../repair/dinode.c:1516 +#: ../repair/dinode.c:1530 #, c-format msgid "bad extent #%d count (%llu) in symlink %llu data fork\n" msgstr "b³êdna liczba fragmentu #%d (%llu) w ga³êzi danych dowi±zania symbolicznego %llu\n" -#: ../repair/dinode.c:1569 +#: ../repair/dinode.c:1583 #, c-format msgid "symlink in inode %llu too long (%lld chars)\n" msgstr "dowi±zanie symboliczne w i-wê¼le %llu zbyt d³ugie (%lld znaków)\n" -#: ../repair/dinode.c:1603 +#: ../repair/dinode.c:1617 #, c-format msgid "cannot read inode %llu, file block %d, disk block %llu\n" msgstr "nie mo¿na odczytaæ i-wêz³a %llu, blok pliku %d, blok dysku %llu\n" -#: ../repair/dinode.c:1625 +#: ../repair/dinode.c:1639 #, c-format msgid "found illegal null character in symlink inode %llu\n" msgstr "znaleziono niedozwolony znak null w i-wê¼le dowi±zania symbolicznego %llu\n" -#: ../repair/dinode.c:1639 ../repair/dinode.c:1649 +#: ../repair/dinode.c:1653 ../repair/dinode.c:1663 #, c-format msgid "component of symlink in inode %llu too long\n" msgstr "sk³adnik dowi±zania symbolicznego w i-wê¼le %llu zbyt d³ugi\n" -#: ../repair/dinode.c:1675 +#: ../repair/dinode.c:1689 #, c-format msgid "inode %llu has bad inode type (IFMNT)\n" msgstr "i-wêze³ %llu ma b³êdny typ i-wêz³a (IFMNT)\n" -#: ../repair/dinode.c:1685 +#: ../repair/dinode.c:1699 #, c-format msgid "size of character device inode %llu != 0 (%lld bytes)\n" msgstr "rozmiar i-wêz³a urz±dzenia znakowego %llu != 0 (%lld bajtów)\n" -#: ../repair/dinode.c:1690 +#: ../repair/dinode.c:1704 #, c-format msgid "size of block device inode %llu != 0 (%lld bytes)\n" msgstr "rozmiar i-wêz³a urz±dzenia blokowego %llu != 0 (%lld bajtów)\n" -#: ../repair/dinode.c:1695 +#: ../repair/dinode.c:1709 #, c-format msgid "size of socket inode %llu != 0 (%lld bytes)\n" msgstr "rozmiar i-wêz³a gniazda %llu != 0 (%lld bajtów)\n" -#: ../repair/dinode.c:1700 +#: ../repair/dinode.c:1714 #, c-format msgid "size of fifo inode %llu != 0 (%lld bytes)\n" msgstr "rozmiar i-wêz³a potoku %llu != 0 (%lld bajtów)\n" -#: ../repair/dinode.c:1705 +#: ../repair/dinode.c:1719 #, c-format msgid "Internal error - process_misc_ino_types, illegal type %d\n" msgstr "B³±d wewnêtrzny - process_misc_ino_types, niedozwolony typ %d\n" -#: ../repair/dinode.c:1732 +#: ../repair/dinode.c:1746 #, c-format msgid "size of character device inode %llu != 0 (%llu blocks)\n" msgstr "rozmiar i-wêz³a urz±dzenia znakowego %llu != 0 (%llu bloków)\n" -#: ../repair/dinode.c:1737 +#: ../repair/dinode.c:1751 #, c-format msgid "size of block device inode %llu != 0 (%llu blocks)\n" msgstr "rozmiar i-wêz³a urz±dzenia blokowego %llu != 0 (%llu bloków)\n" -#: ../repair/dinode.c:1742 +#: ../repair/dinode.c:1756 #, c-format msgid "size of socket inode %llu != 0 (%llu blocks)\n" msgstr "rozmiar i-wêz³a gniazda %llu != 0 (%llu bloków)\n" -#: ../repair/dinode.c:1747 +#: ../repair/dinode.c:1761 #, c-format msgid "size of fifo inode %llu != 0 (%llu blocks)\n" msgstr "rozmiar i-wêz³a potoku %llu != 0 (%llu bloków)\n" -#: ../repair/dinode.c:1851 +#: ../repair/dinode.c:1865 #, c-format msgid "bad magic number 0x%x on inode %llu, " msgstr "b³êdna liczba magiczna 0x%x w i-wê¼le %llu, " -#: ../repair/dinode.c:1854 +#: ../repair/dinode.c:1868 msgid "resetting magic number\n" msgstr "przestawiono liczbê magiczn±\n" -#: ../repair/dinode.c:1859 +#: ../repair/dinode.c:1873 msgid "would reset magic number\n" msgstr "liczba magiczna zosta³aby przestawiona\n" -#: ../repair/dinode.c:1862 +#: ../repair/dinode.c:1876 #, c-format msgid "bad magic number 0x%x on inode %llu\n" msgstr "b³êdna liczba magiczna 0x%x w i-wê¼le %llu\n" -#: ../repair/dinode.c:1871 +#: ../repair/dinode.c:1885 #, c-format msgid "bad version number 0x%x on inode %llu, " msgstr "b³êdny numer wersji 0x%x w i-wê¼le %llu, " -#: ../repair/dinode.c:1874 +#: ../repair/dinode.c:1888 msgid "resetting version number\n" msgstr "przestawiono numer wersji\n" -#: ../repair/dinode.c:1880 +#: ../repair/dinode.c:1894 msgid "would reset version number\n" msgstr "numer wersji zosta³by przestawiony\n" -#: ../repair/dinode.c:1883 +#: ../repair/dinode.c:1897 #, c-format msgid "bad version number 0x%x on inode %llu\n" msgstr "b³êdny numer wersji 0x%x w i-wê¼le %llu\n" -#: ../repair/dinode.c:1894 ../repair/dinode.c:1905 +#: ../repair/dinode.c:1908 ../repair/dinode.c:1919 #, c-format msgid "bad (negative) size %lld on inode %llu\n" msgstr "b³êdny (ujemny) rozmiar %lld w i-wê¼le %llu\n" -#: ../repair/dinode.c:1936 +#: ../repair/dinode.c:1950 #, c-format msgid "imap claims a free inode %llu is in use, " msgstr "imap odwo³uje siê do wolnego bloku %llu, który jest w u¿yciu, " -#: ../repair/dinode.c:1939 +#: ../repair/dinode.c:1953 msgid "correcting imap and clearing inode\n" msgstr "poprawiono imap i wyczyszczono i-wêze³\n" -#: ../repair/dinode.c:1948 +#: ../repair/dinode.c:1962 msgid "would correct imap and clear inode\n" msgstr "poprawiono by imap i wyczyszczono by i-wêze³\n" -#: ../repair/dinode.c:1976 +#: ../repair/dinode.c:1990 #, c-format msgid "bad inode format in inode %llu\n" msgstr "b³êdny format i-wêz³a w i-wê¼le %llu\n" -#: ../repair/dinode.c:2037 +#: ../repair/dinode.c:2052 ../repair/dinode.c:2061 #, c-format -msgid "Unexpected inode type %#o inode %llu\n" -msgstr "Nieoczekiwany typ i-wêz³a %#o w i-wê¼le %llu\n" +msgid "bad inode type %#o inode %llu\n" +msgstr "b³êdny typ i-wêz³a %#o w i-wê¼le %llu\n" -#: ../repair/dinode.c:2047 +#: ../repair/dinode.c:2071 #, c-format msgid "bad inode type for root inode %llu, " msgstr "b³êdny typ i-wêz³a dla g³ównego i-wêz³a %llu, " -#: ../repair/dinode.c:2051 +#: ../repair/dinode.c:2075 msgid "resetting to directory\n" msgstr "przestawiono na katalog\n" -#: ../repair/dinode.c:2057 +#: ../repair/dinode.c:2081 msgid "would reset to directory\n" msgstr "zosta³by przestawiony na katalog\n" -#: ../repair/dinode.c:2061 +#: ../repair/dinode.c:2085 msgid "summary" msgstr "opisu" -#: ../repair/dinode.c:2065 +#: ../repair/dinode.c:2089 msgid "bitmap" msgstr "bitmapy" -#: ../repair/dinode.c:2069 +#: ../repair/dinode.c:2093 #, c-format msgid "user quota inode has bad type 0x%x\n" msgstr "i-wêze³ limitu u¿ytkownika ma b³êdny typ 0x%x\n" -#: ../repair/dinode.c:2087 +#: ../repair/dinode.c:2111 #, c-format msgid "group quota inode has bad type 0x%x\n" msgstr "i-wêze³ limitu grupy ma b³êdny typ 0x%x\n" -#: ../repair/dinode.c:2108 +#: ../repair/dinode.c:2132 #, c-format msgid "bad inode type for realtime %s inode %llu, " msgstr "b³êdny typ i-wêz³a dla i-wêz³a %s realtime %llu, " -#: ../repair/dinode.c:2112 +#: ../repair/dinode.c:2136 msgid "resetting to regular file\n" msgstr "przestawiono na zwyk³y plik\n" -#: ../repair/dinode.c:2118 +#: ../repair/dinode.c:2142 msgid "would reset to regular file\n" msgstr "zosta³by przestawiony na zwyk³y plik\n" -#: ../repair/dinode.c:2137 +#: ../repair/dinode.c:2161 #, c-format msgid "bad non-zero extent size %u for non-realtime/extsize inode %llu, " msgstr "b³êdny niezerowy rozmiar fragmentu %u dla extsize i-wêz³a nie-realtime %llu, " -#: ../repair/dinode.c:2141 +#: ../repair/dinode.c:2165 msgid "resetting to zero\n" msgstr "przestawiono na zero\n" -#: ../repair/dinode.c:2145 +#: ../repair/dinode.c:2169 msgid "would reset to zero\n" msgstr "zosta³by przestawiony na zero\n" -#: ../repair/dinode.c:2164 +#: ../repair/dinode.c:2188 #, c-format msgid "bad size %llu for realtime %s inode %llu\n" msgstr "b³êdny rozmiar %llu dla i-wêz³a %s realtime %llu\n" -#: ../repair/dinode.c:2180 +#: ../repair/dinode.c:2204 #, c-format msgid "bad # of extents (%u) for realtime %s inode %llu\n" msgstr "b³êdna liczba fragmentów (%u) dla i-wêz³± %s realtime %llu\n" -#: ../repair/dinode.c:2222 +#: ../repair/dinode.c:2246 #, c-format msgid "mismatch between format (%d) and size (%lld) in directory ino %llu\n" msgstr "niezgodno¶æ miêdzy formatem (%d) i rozmiarem (%lld) w i-wê¼le katalogu %llu\n" -#: ../repair/dinode.c:2244 +#: ../repair/dinode.c:2268 #, c-format msgid "bad data fork in symlink %llu\n" msgstr "b³êdna ga³±¼ danych w dowi±zaniu symbolicznym %llu\n" -#: ../repair/dinode.c:2286 +#: ../repair/dinode.c:2310 #, c-format msgid "found inode %llu claiming to be a real-time file\n" msgstr "znaleziono i-wêze³ %llu twierdz±cy, ¿e nale¿y do pliku realtime\n" -#: ../repair/dinode.c:2305 +#: ../repair/dinode.c:2329 #, c-format msgid "realtime bitmap inode %llu has bad size %lld (should be %lld)\n" msgstr "i-wêze³ bitmapy realtime %llu ma b³êdny rozmiar %lld (powinien byæ %lld)\n" -#: ../repair/dinode.c:2326 +#: ../repair/dinode.c:2350 #, c-format msgid "realtime summary inode %llu has bad size %lld (should be %d)\n" msgstr "i-wêze³ opisu realtime %llu ma b³êdny rozmiar %lld (powinien byæ %d)\n" -#: ../repair/dinode.c:2357 +#: ../repair/dinode.c:2381 #, c-format msgid "bad attr fork offset %d in dev inode %llu, should be %d\n" msgstr "b³êdny offset ga³êzi atrybutów %d w i-wê¼le urz±dzenia %llu, powinien byæ %d\n" -#: ../repair/dinode.c:2368 +#: ../repair/dinode.c:2392 #, c-format msgid "bad attr fork offset %d in uuid inode %llu, should be %d\n" msgstr "b³êdny offset ga³êzi atrybutów %d w i-wê¼le uuid %llu, powinien byæ %d\n" -#: ../repair/dinode.c:2380 +#: ../repair/dinode.c:2404 #, c-format msgid "bad attr fork offset %d in inode %llu, max=%d\n" msgstr "b³êdny offset ga³êzi atrybutów %d w i-wê¼le %llu, maksimum=%d\n" -#: ../repair/dinode.c:2388 +#: ../repair/dinode.c:2412 #, c-format msgid "unexpected inode format %d\n" msgstr "nieoczekiwany format i-wêz³a %d\n" -#: ../repair/dinode.c:2432 ../repair/dinode.c:2483 +#: ../repair/dinode.c:2456 ../repair/dinode.c:2507 #, c-format msgid "unknown format %d, ino %llu (mode = %d)\n" msgstr "nieznany format %d, i-wêze³ %llu (tryb = %d)\n" -#: ../repair/dinode.c:2442 +#: ../repair/dinode.c:2466 #, c-format msgid "bad data fork in inode %llu\n" msgstr "b³êdna ga³±¼ danych w i-wê¼le %llu\n" -#: ../repair/dinode.c:2506 +#: ../repair/dinode.c:2530 #, c-format msgid "bad attribute format %d in inode %llu, " msgstr "b³êdny format atrybutów %d w i-wê¼le %llu, " -#: ../repair/dinode.c:2509 +#: ../repair/dinode.c:2533 msgid "resetting value\n" msgstr "przestawiono warto¶æ\n" -#: ../repair/dinode.c:2513 +#: ../repair/dinode.c:2537 msgid "would reset value\n" msgstr "warto¶æ zosta³aby przestawiona\n" -#: ../repair/dinode.c:2554 +#: ../repair/dinode.c:2578 #, c-format msgid "bad attribute fork in inode %llu" msgstr "b³êdna ga³±¼ atrybutów w i-wê¼le %llu" -#: ../repair/dinode.c:2558 +#: ../repair/dinode.c:2582 msgid ", clearing attr fork\n" msgstr ", wyczyszczono ga³±¼ atrybutów\n" -#: ../repair/dinode.c:2568 +#: ../repair/dinode.c:2592 msgid ", would clear attr fork\n" msgstr ", ga³±¼ atrybutów zosta³aby wyczyszczona\n" -#: ../repair/dinode.c:2605 +#: ../repair/dinode.c:2629 #, c-format msgid "illegal attribute fmt %d, ino %llu\n" msgstr "niedozwolony format atrybutów %d, i-wêze³ %llu\n" -#: ../repair/dinode.c:2630 +#: ../repair/dinode.c:2654 #, c-format msgid "problem with attribute contents in inode %llu\n" msgstr "problem z zawarto¶ci± atrybutu w i-wê¼le %llu\n" -#: ../repair/dinode.c:2640 +#: ../repair/dinode.c:2664 msgid "would clear attr fork\n" msgstr "ga³±¼ atrybutów zosta³aby wyczyszczona\n" -#: ../repair/dinode.c:2676 +#: ../repair/dinode.c:2700 #, c-format msgid "correcting nblocks for inode %llu, was %llu - counted %llu\n" msgstr "poprawiono nblocks dla i-wêz³a %llu - by³o %llu, naliczono %llu\n" -#: ../repair/dinode.c:2683 +#: ../repair/dinode.c:2707 #, c-format msgid "bad nblocks %llu for inode %llu, would reset to %llu\n" msgstr "b³êdne nblocks %llu dla i-wêz³a %llu, zosta³oby przestawione na %llu\n" -#: ../repair/dinode.c:2690 +#: ../repair/dinode.c:2714 #, c-format msgid "too many data fork extents (%llu) in inode %llu\n" msgstr "zbyt du¿o fragmentów ga³êzi danych (%llu) w i-wê¼le %llu\n" -#: ../repair/dinode.c:2707 +#: ../repair/dinode.c:2731 #, c-format msgid "correcting nextents for inode %llu, was %d - counted %llu\n" msgstr "poprawiono nextents dla i-wêz³a %llu - by³o %d, naliczono %llu\n" -#: ../repair/dinode.c:2715 +#: ../repair/dinode.c:2739 #, c-format msgid "bad nextents %d for inode %llu, would reset to %llu\n" msgstr "b³êdne nextents %d dla i-wêz³a %llu, zosta³oby przestawione na %llu\n" -#: ../repair/dinode.c:2722 +#: ../repair/dinode.c:2746 #, c-format msgid "too many attr fork extents (%llu) in inode %llu\n" msgstr "zbyt du¿o fragmentów ga³êzi atrybutów (%llu) w i-wê¼le %llu\n" -#: ../repair/dinode.c:2738 +#: ../repair/dinode.c:2762 #, c-format msgid "correcting anextents for inode %llu, was %d - counted %llu\n" msgstr "poprawiono anextents dla i-wêz³a %llu - by³o %d, naliczono %llu\n" -#: ../repair/dinode.c:2747 +#: ../repair/dinode.c:2771 #, c-format msgid "bad anextents %d for inode %llu, would reset to %llu\n" msgstr "b³êdne anextents %d dla i-wêz³a %llu, zosta³oby przestawione na %llu\n" -#: ../repair/dinode.c:2766 +#: ../repair/dinode.c:2790 #, c-format msgid "problem with directory contents in inode %llu\n" msgstr "problem z zawarto¶ci± katalogu w i-wê¼le %llu\n" -#: ../repair/dinode.c:2779 +#: ../repair/dinode.c:2803 #, c-format msgid "problem with symbolic link in inode %llu\n" msgstr "problem z dowi±zaniem symbolicznym w i-wê¼le %llu\n" -#: ../repair/dinode.c:2791 +#: ../repair/dinode.c:2815 #, c-format msgid "Unexpected inode type\n" msgstr "Nieoczekiwany typ i-wêz³a\n" -#: ../repair/dinode.c:2836 +#: ../repair/dinode.c:2860 #, c-format msgid "version 2 inode %llu claims > %u links, " msgstr "i-wêze³ %llu w wersji 2 odwo³uje siê do > %u dowi±zañ, " -#: ../repair/dinode.c:2840 +#: ../repair/dinode.c:2864 msgid "updating superblock version number\n" msgstr "uaktualniono numer wersji superbloku\n" -#: ../repair/dinode.c:2843 +#: ../repair/dinode.c:2867 msgid "would update superblock version number\n" msgstr "numer wersji superbloku zosta³by uaktualniony\n" -#: ../repair/dinode.c:2851 +#: ../repair/dinode.c:2875 #, c-format msgid "WARNING: version 2 inode %llu claims > %u links, " msgstr "UWAGA: i-wêze³ %llu w wersji 2 odwo³uje siê do > %u dowi±zañ, " -#: ../repair/dinode.c:2855 +#: ../repair/dinode.c:2879 #, c-format msgid "" "converting back to version 1,\n" @@ -5703,7 +5772,7 @@ msgstr "" "przekszta³cono z powrotem do wersji 1,\n" "\tmo¿e to zniszczyæ %d dowi±zañ\n" -#: ../repair/dinode.c:2870 +#: ../repair/dinode.c:2894 #, c-format msgid "" "would convert back to version 1,\n" @@ -5712,282 +5781,281 @@ msgstr "" "zosta³by przekszta³cony z powrotem do wersji 1,\n" "\tco mog³oby zniszczyæ %d dowi±zañ\n" -#: ../repair/dinode.c:2885 +#: ../repair/dinode.c:2909 #, c-format msgid "found version 2 inode %llu, " msgstr "znaleziono i-wêze³ %llu w wersji 2, " -#: ../repair/dinode.c:2887 +#: ../repair/dinode.c:2911 msgid "converting back to version 1\n" msgstr "przekszta³cono z powrotem do wersji 1\n" -#: ../repair/dinode.c:2896 +#: ../repair/dinode.c:2920 msgid "would convert back to version 1\n" msgstr "zosta³by przekszta³cony z powrotem do wersji 1\n" -#: ../repair/dinode.c:2911 +#: ../repair/dinode.c:2935 #, c-format msgid "clearing obsolete nlink field in version 2 inode %llu, was %d, now 0\n" msgstr "wyczyszczono przestarza³e pole nlink w i-wê¼le %llu w wersji 2 - by³o %d, jest 0\n" -#: ../repair/dinode.c:2917 +#: ../repair/dinode.c:2941 #, c-format msgid "would clear obsolete nlink field in version 2 inode %llu, currently %d\n" msgstr "przestarza³e pole nlink w i-wê¼le %llu w wersji 2 zosta³oby wyczyszczone, aktualnie %d\n" -#: ../repair/dir.c:155 +#: ../repair/dir.c:154 #, c-format msgid "invalid inode number %llu in directory %llu\n" msgstr "b³êdny numer i-wêz³a %llu w katalogu %llu\n" -#: ../repair/dir.c:160 +#: ../repair/dir.c:159 #, c-format msgid "entry in shortform dir %llu references rt bitmap inode %llu\n" msgstr "wpis w krótkim katalogu %llu odwo³uje siê do i-wêz³a bitmapy rt %llu\n" -#: ../repair/dir.c:165 +#: ../repair/dir.c:164 #, c-format msgid "entry in shortform dir %llu references rt summary inode %llu\n" msgstr "wpis w krótkim katalogu %llu odwo³uje siê do i-wêz³a opisu rt %llu\n" -#: ../repair/dir.c:170 +#: ../repair/dir.c:169 #, c-format msgid "entry in shortform dir %llu references user quota inode %llu\n" msgstr "wpis w krótkim katalogu %llu odwo³uje siê do i-wêz³a limitu u¿ytkownika %llu\n" -#: ../repair/dir.c:175 +#: ../repair/dir.c:174 #, c-format msgid "entry in shortform dir %llu references group quota inode %llu\n" msgstr "wpis w krótkim katalogu %llu odwo³uje siê do i-wêz³a limitu grupy %llu\n" -#: ../repair/dir.c:195 +#: ../repair/dir.c:194 #, c-format msgid "entry references free inode %llu in shortform directory %llu\n" msgstr "wpis odwo³uje siê do wolnego i-wêz³a %llu w krótkim katalogu %llu\n" -#: ../repair/dir.c:214 +#: ../repair/dir.c:213 #, c-format msgid "entry references non-existent inode %llu in shortform dir %llu\n" msgstr "wpis odwo³uje siê do nie istniej±cego i-wêz³a %llu w krótkim katalogu %llu\n" -#: ../repair/dir.c:238 ../repair/dir2.c:982 +#: ../repair/dir.c:237 ../repair/dir2.c:992 #, c-format msgid "zero length entry in shortform dir %llu, resetting to %d\n" msgstr "wpis zerowej d³ugo¶ci w krótkim katalogu %llu, przestawiono na %d\n" -#: ../repair/dir.c:243 ../repair/dir2.c:988 +#: ../repair/dir.c:242 ../repair/dir2.c:998 #, c-format msgid "zero length entry in shortform dir %llu, would set to %d\n" msgstr "wpis zerowej d³ugo¶ci w krótkim katalogu %llu, zosta³by przestawiony na %d\n" -#: ../repair/dir.c:248 +#: ../repair/dir.c:247 #, c-format msgid "zero length entry in shortform dir %llu, " msgstr "wpis zerowej d³ugo¶ci w krótkim katalogu %llu, " -#: ../repair/dir.c:251 ../repair/dir.c:294 ../repair/dir2.c:1041 +#: ../repair/dir.c:250 ../repair/dir.c:293 ../repair/dir2.c:1051 #, c-format msgid "junking %d entries\n" msgstr "wyrzucono %d wpisów\n" -#: ../repair/dir.c:254 ../repair/dir.c:303 ../repair/dir2.c:1050 +#: ../repair/dir.c:253 ../repair/dir.c:302 ../repair/dir2.c:1060 #, c-format msgid "would junk %d entries\n" msgstr "%d wpisów zosta³oby wyrzuconych\n" -#: ../repair/dir.c:272 ../repair/dir2.c:1018 +#: ../repair/dir.c:271 ../repair/dir2.c:1028 #, c-format msgid "size of last entry overflows space left in in shortform dir %llu, " msgstr "rozmiar ostatniego wpisu przekracza miejsce pozosta³e w krótkim katalogu %llu, " -#: ../repair/dir.c:275 ../repair/dir2.c:1022 +#: ../repair/dir.c:274 ../repair/dir2.c:1032 #, c-format msgid "resetting to %d\n" msgstr "przestawiono na %d\n" -#: ../repair/dir.c:280 ../repair/dir2.c:1027 +#: ../repair/dir.c:279 ../repair/dir2.c:1037 #, c-format msgid "would reset to %d\n" msgstr "zosta³by przestawiony na %d\n" -#: ../repair/dir.c:285 ../repair/dir2.c:1031 +#: ../repair/dir.c:284 ../repair/dir2.c:1041 #, c-format msgid "size of entry #%d overflows space left in in shortform dir %llu\n" msgstr "rozmiar wpisu #%d przekracza miejsce pozosta³e w krótkim katalogu %llu\n" -#: ../repair/dir.c:290 ../repair/dir2.c:1037 +#: ../repair/dir.c:289 ../repair/dir2.c:1047 #, c-format msgid "junking entry #%d\n" msgstr "wyrzucono wpis #%d\n" -#: ../repair/dir.c:299 ../repair/dir2.c:1046 +#: ../repair/dir.c:298 ../repair/dir2.c:1056 #, c-format msgid "would junk entry #%d\n" msgstr "wpis #%d zosta³by wyrzucony\n" -#: ../repair/dir.c:322 ../repair/dir2.c:1068 +#: ../repair/dir.c:321 ../repair/dir2.c:1078 #, c-format msgid "entry contains illegal character in shortform dir %llu\n" msgstr "wpis zawiera niedozwolony znak w krótkim katalogu %llu\n" -#: ../repair/dir.c:377 ../repair/dir2.c:1133 ../repair/phase6.c:2908 -#: ../repair/phase6.c:3323 +#: ../repair/dir.c:376 ../repair/dir2.c:1143 #, c-format msgid "junking entry \"%s\" in directory inode %llu\n" msgstr "wyrzucono wpis \"%s\" w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:381 ../repair/dir2.c:1137 +#: ../repair/dir.c:380 ../repair/dir2.c:1147 #, c-format msgid "would have junked entry \"%s\" in directory inode %llu\n" msgstr "wpis \"%s\" w i-wê¼le katalogu %llu zosta³by wyrzucony\n" -#: ../repair/dir.c:407 ../repair/dir2.c:1164 +#: ../repair/dir.c:406 ../repair/dir2.c:1174 #, c-format msgid "would have corrected entry count in directory %llu from %d to %d\n" msgstr "liczba wpisów w katalogu %llu zosta³aby poprawiona z %d na %d\n" -#: ../repair/dir.c:411 ../repair/dir2.c:1168 +#: ../repair/dir.c:410 ../repair/dir2.c:1178 #, c-format msgid "corrected entry count in directory %llu, was %d, now %d\n" msgstr "poprawiono liczbê wpisów w katalogu %llu - by³o %d, jest %d\n" -#: ../repair/dir.c:422 ../repair/dir2.c:1197 +#: ../repair/dir.c:421 ../repair/dir2.c:1207 #, c-format msgid "would have corrected directory %llu size from %lld to %lld\n" msgstr "rozmiar katalogu %llu zosta³by poprawiony z %lld na %lld\n" -#: ../repair/dir.c:427 ../repair/dir2.c:1203 +#: ../repair/dir.c:426 ../repair/dir2.c:1213 #, c-format msgid "corrected directory %llu size, was %lld, now %lld\n" msgstr "poprawiono rozmiar katalogu %llu - by³o %lld, jest %lld\n" -#: ../repair/dir.c:450 ../repair/dir2.c:1248 +#: ../repair/dir.c:449 ../repair/dir2.c:1258 #, c-format msgid "bogus .. inode number (%llu) in directory inode %llu, " msgstr "b³êdny numer i-wêz³a .. (%llu) w i-wê¼le katalogu %llu, " -#: ../repair/dir.c:453 ../repair/dir.c:487 ../repair/dir2.c:1253 -#: ../repair/dir2.c:1288 +#: ../repair/dir.c:452 ../repair/dir.c:486 ../repair/dir2.c:1263 +#: ../repair/dir2.c:1298 msgid "clearing inode number\n" msgstr "wyczyszczono numer i-wêz³a\n" -#: ../repair/dir.c:459 ../repair/dir.c:493 ../repair/dir2.c:1259 -#: ../repair/dir2.c:1294 +#: ../repair/dir.c:458 ../repair/dir.c:492 ../repair/dir2.c:1269 +#: ../repair/dir2.c:1304 msgid "would clear inode number\n" msgstr "numer i-wêz³a zosta³by wyczyszczony\n" -#: ../repair/dir.c:467 ../repair/dir2.c:1266 +#: ../repair/dir.c:466 ../repair/dir2.c:1276 #, c-format msgid "corrected root directory %llu .. entry, was %llu, now %llu\n" msgstr "poprawiono wpis .. g³ównego katalogu %llu - by³o %llu, jest %llu\n" -#: ../repair/dir.c:475 ../repair/dir2.c:1274 +#: ../repair/dir.c:474 ../repair/dir2.c:1284 #, c-format msgid "would have corrected root directory %llu .. entry from %llu to %llu\n" msgstr "wpis .. g³ównego katalogu %llu zosta³by poprawiony z %llu na %llu\n" -#: ../repair/dir.c:484 +#: ../repair/dir.c:483 #, c-format msgid "bad .. entry in dir ino %llu, points to self, " msgstr "b³êdny wpis .. w i-wê¼le katalogu %llu, wskazuje na siebie, " -#: ../repair/dir.c:532 +#: ../repair/dir.c:531 #, c-format msgid "bad range claimed [%d, %d) in da block\n" msgstr "b³êdny przedzia³ [%d, %d) przypisany w bloku da\n" -#: ../repair/dir.c:539 +#: ../repair/dir.c:538 #, c-format msgid "byte range end [%d %d) in da block larger than blocksize %d\n" msgstr "koniec przedzia³u bajtów [%d %d) w bloku da wiêkszy ni¿ rozmiar bloku %d\n" -#: ../repair/dir.c:546 +#: ../repair/dir.c:545 #, c-format msgid "multiply claimed byte %d in da block\n" msgstr "wielokrotnie u¿yty bajt %d w bloku da\n" -#: ../repair/dir.c:576 +#: ../repair/dir.c:575 #, c-format msgid "hole (start %d, len %d) out of range, block %d, dir ino %llu\n" msgstr "dziura (pocz±tek %d, d³ugo¶æ %d) poza zakresem, blok %d, i-wêze³ katalogu %llu\n" -#: ../repair/dir.c:587 +#: ../repair/dir.c:586 #, c-format msgid "hole claims used byte %d, block %d, dir ino %llu\n" msgstr "dziura odwo³uje siê do u¿ywanego bajtu %d, blok %d, i-wêze³ katalogu %llu\n" -#: ../repair/dir.c:702 +#: ../repair/dir.c:701 #, c-format msgid "- derived hole value %d, saw %d, block %d, dir ino %llu\n" msgstr "- wyprowadzona warto¶æ dziury %d, widziano %d, blok %d, i-wêze³ katalogu %llu\n" -#: ../repair/dir.c:721 +#: ../repair/dir.c:720 #, c-format msgid "- derived hole (base %d, size %d) in block %d, dir inode %llu not found\n" msgstr "- wyprowadzona dziura (podstawa %d, rozmiar %d) w bloku %d, i-wêze³ katalogu %llu nie znaleziona\n" -#: ../repair/dir.c:800 ../repair/dir.c:978 ../repair/phase4.c:234 -#: ../repair/phase4.c:718 ../repair/phase6.c:1130 ../repair/phase6.c:1674 +#: ../repair/dir.c:796 ../repair/dir.c:974 ../repair/phase6.c:1169 +#: ../repair/phase6.c:1719 #, c-format msgid "can't read block %u (fsbno %llu) for directory inode %llu\n" msgstr "nie mo¿na odczytaæ bloku %u (fsbno %llu) dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:804 +#: ../repair/dir.c:800 #, c-format msgid "can't read block %u (fsbno %llu) for attrbute fork of inode %llu\n" msgstr "nie mo¿na odczytaæ bloku %u (fsbno %llu) dla ga³êzi atrybutów i-wêz³a %llu\n" -#: ../repair/dir.c:813 ../repair/dir.c:988 ../repair/phase6.c:1140 +#: ../repair/dir.c:809 ../repair/dir.c:984 ../repair/phase6.c:1179 #, c-format msgid "bad dir/attr magic number in inode %llu, file bno = %u, fsbno = %llu\n" msgstr "b³êdna liczba magiczna katalogu/atrybutu w i-wê¼le %llu, bno pliku = %u, fsbno = %llu\n" -#: ../repair/dir.c:821 ../repair/dir2.c:324 +#: ../repair/dir.c:817 ../repair/dir2.c:335 #, c-format msgid "bad record count in inode %llu, count = %d, max = %d\n" msgstr "b³êdna liczba rekordów w i-wê¼le %llu, liczba = %d, maksimum = %d\n" -#: ../repair/dir.c:840 ../repair/dir2.c:341 +#: ../repair/dir.c:836 ../repair/dir2.c:351 #, c-format msgid "bad directory btree for directory inode %llu\n" msgstr "b³êdne b-drzewo katalogu dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:844 +#: ../repair/dir.c:840 #, c-format msgid "bad attribute fork btree for inode %llu\n" msgstr "b³êdne b-drzewo ga³êzi atrybutów dla i-wêz³a %llu\n" -#: ../repair/dir.c:898 +#: ../repair/dir.c:894 #, c-format msgid "release_da_cursor_int got unexpected non-null bp, dabno = %u\n" msgstr "release_da_cursor_int otrzyma³o nieoczekiwany niepusty bp, dabno = %u\n" -#: ../repair/dir.c:959 ../repair/dir.c:1004 +#: ../repair/dir.c:955 ../repair/dir.c:1000 #, c-format msgid "bmap of block #%u of inode %llu failed\n" msgstr "bmap bloku #%u i-wêz³a %llu nie powiod³o siê\n" -#: ../repair/dir.c:1050 +#: ../repair/dir.c:1046 #, c-format msgid "directory/attribute block used/count inconsistency - %d/%hu\n" msgstr "niespójno¶æ warto¶ci used/count bloku katalogu/atrybutu - %d/%hu\n" -#: ../repair/dir.c:1060 ../repair/dir2.c:464 +#: ../repair/dir.c:1056 ../repair/dir2.c:474 #, c-format msgid "directory/attribute block hashvalue inconsistency, expected > %u / saw %u\n" msgstr "niespójno¶æ warto¶ci hasza bloku katalogu/atrybutu - oczekiwano > %u, widziano %u\n" -#: ../repair/dir.c:1067 ../repair/dir2.c:471 +#: ../repair/dir.c:1063 ../repair/dir2.c:481 #, c-format msgid "bad directory/attribute forward block pointer, expected 0, saw %u\n" msgstr "b³êdny wska¼nik bloku w przód katalogu/atrybutu - oczekiwano 0, widziano %u\n" -#: ../repair/dir.c:1073 +#: ../repair/dir.c:1069 #, c-format msgid "bad directory block in dir ino %llu\n" msgstr "b³êdny blok katalogu w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:1103 +#: ../repair/dir.c:1099 #, c-format msgid "" "correcting bad hashval in non-leaf dir/attr block\n" @@ -5996,7 +6064,7 @@ msgstr "" "poprawiono b³êdne hashval w bloku katalogu/atrybutu nie bêd±cego li¶ciem\n" "\tw i-wê¼le (poziomu %d) %llu.\n" -#: ../repair/dir.c:1111 +#: ../repair/dir.c:1107 #, c-format msgid "" "would correct bad hashval in non-leaf dir/attr block\n" @@ -6005,37 +6073,37 @@ msgstr "" "b³êdne hashval zosta³oby poprawione w bloku katalogu/atrybutu nie bêd±cego li¶ciem\n" "\tw i-wê¼le (poziomu %d) %llu.\n" -#: ../repair/dir.c:1249 ../repair/dir2.c:637 +#: ../repair/dir.c:1245 ../repair/dir2.c:647 #, c-format msgid "can't get map info for block %u of directory inode %llu\n" msgstr "nie mo¿na uzyskaæ informacji o mapie dla bloku %u i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:1258 +#: ../repair/dir.c:1254 #, c-format msgid "can't read block %u (%llu) for directory inode %llu\n" msgstr "nie mo¿na odczytaæ bloku %u (%llu) dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:1272 +#: ../repair/dir.c:1268 #, c-format msgid "bad magic number %x in block %u (%llu) for directory inode %llu\n" msgstr "b³êdna liczba magiczna %x w bloku %u (%llu) dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:1280 +#: ../repair/dir.c:1276 #, c-format msgid "bad back pointer in block %u (%llu) for directory inode %llu\n" msgstr "b³êdny wska¼nik wstecz w bloku %u (%llu) dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:1287 +#: ../repair/dir.c:1283 #, c-format msgid "entry count %d too large in block %u (%llu) for directory inode %llu\n" msgstr "liczba wpisów %d zbyt du¿a w bloku %u (%llu) dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:1294 +#: ../repair/dir.c:1290 #, c-format msgid "bad level %d in block %u (%llu) for directory inode %llu\n" msgstr "b³êdny poziom %d w bloku %u (%llu) dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:1352 +#: ../repair/dir.c:1348 #, c-format msgid "" "correcting bad hashval in interior dir/attr block\n" @@ -6044,7 +6112,7 @@ msgstr "" "poprawiono b³êdne hashval w wewnêtrznym bloku katalogu/atrybutu\n" "\tw i-wê¼le (poziomu %d) %llu.\n" -#: ../repair/dir.c:1360 +#: ../repair/dir.c:1356 #, c-format msgid "" "would correct bad hashval in interior dir/attr block\n" @@ -6053,423 +6121,418 @@ msgstr "" "b³êdne hashval zosta³oby poprawione w wewnêtrznym bloku katalogu/atrybutu\n" "\tw i-wê¼le (poziomu %d) %llu.\n" -#: ../repair/dir.c:1480 +#: ../repair/dir.c:1476 #, c-format msgid "marking bad entry in directory inode %llu\n" msgstr "oznaczono b³êdny wpis w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:1506 +#: ../repair/dir.c:1502 #, c-format msgid "deleting zero length entry in directory inode %llu\n" msgstr "usuniêto wpis zerowej d³ugo¶ci w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:1605 +#: ../repair/dir.c:1601 #, c-format msgid "deleting entry in directory inode %llu\n" msgstr "usuniêto wpis w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:1751 +#: ../repair/dir.c:1747 #, c-format msgid "directory block header conflicts with used space in directory inode %llu\n" msgstr "nag³ówek bloku katalogu jest w konflikcie z u¿ytym miejscem w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:1780 +#: ../repair/dir.c:1776 #, c-format msgid "nameidx %d for entry #%d, bno %d, ino %llu > fs blocksize, deleting entry\n" msgstr "nameidx %d dla wpisu #%d, bno %d, i-wêze³ %llu > rozmiaru bloku fs, usuniêto wpis\n" -#: ../repair/dir.c:1820 +#: ../repair/dir.c:1816 #, c-format msgid "nameidx %d, entry #%d, bno %d, ino %llu > fs blocksize, marking entry bad\n" msgstr "nameidx %d, wpis #%d, bno %d, i-wêze³ %llu > rozmiaru bloku fs, zaznaczono wpis jako b³êdny\n" -#: ../repair/dir.c:1837 +#: ../repair/dir.c:1833 #, c-format msgid "nameidx %d, entry #%d, bno %d, ino %llu > fs blocksize, would delete entry\n" msgstr "nameidx %d, wpis #%d, bno %d, i-wêze³ %llu > rozmiaru bloku fs, wpis zosta³by usuniêty\n" -#: ../repair/dir.c:1874 +#: ../repair/dir.c:1870 #, c-format msgid "invalid ino number %llu in dir ino %llu, entry #%d, bno %d\n" msgstr "nieprawid³owy numer i-wêz³a %llu w i-wê¼le katalogu %llu, wpis #%d, bno %d\n" -#: ../repair/dir.c:1878 ../repair/dir.c:1894 ../repair/dir.c:1911 -#: ../repair/dir.c:1927 ../repair/dir.c:1944 +#: ../repair/dir.c:1874 ../repair/dir.c:1890 ../repair/dir.c:1907 +#: ../repair/dir.c:1923 ../repair/dir.c:1940 #, c-format msgid "\tclearing ino number in entry %d...\n" msgstr "\twyczyszczono numer i-wêz³a we wpisie %d...\n" -#: ../repair/dir.c:1885 ../repair/dir.c:1902 ../repair/dir.c:1918 -#: ../repair/dir.c:1935 ../repair/dir.c:1952 +#: ../repair/dir.c:1881 ../repair/dir.c:1898 ../repair/dir.c:1914 +#: ../repair/dir.c:1931 ../repair/dir.c:1948 #, c-format msgid "\twould clear ino number in entry %d...\n" msgstr "\tnumer i-wêz³a we wpisie %d zosta³by wyczyszczony...\n" -#: ../repair/dir.c:1890 +#: ../repair/dir.c:1886 #, c-format msgid "entry #%d, bno %d in directory %llu references realtime bitmap inode %llu\n" msgstr "wpis #%d, bno %d w katalogu %llu odwo³uje siê do i-wêz³a bitmapy realtime %llu\n" -#: ../repair/dir.c:1907 +#: ../repair/dir.c:1903 #, c-format msgid "entry #%d, bno %d in directory %llu references realtime summary inode %llu\n" msgstr "wpis #%d, bno %d w katalogu %llu odwo³uje siê do i-wêz³a opisu realtime %llu\n" -#: ../repair/dir.c:1923 +#: ../repair/dir.c:1919 #, c-format msgid "entry #%d, bno %d in directory %llu references user quota inode %llu\n" msgstr "wpis #%d, bno %d w katalogu %llu odwo³uje siê do i-wêz³a limitu u¿ytkownika %llu\n" -#: ../repair/dir.c:1940 +#: ../repair/dir.c:1936 #, c-format msgid "entry #%d, bno %d in directory %llu references group quota inode %llu\n" msgstr "wpis #%d, bno %d w katalogu %llu odwo³uje siê do i-wêz³a limitu grupy %llu\n" -#: ../repair/dir.c:1983 +#: ../repair/dir.c:1973 #, c-format msgid "entry references free inode %llu in directory %llu, will clear entry\n" msgstr "wpis odwo³uje siê do wolnego i-wêz³a %llu w katalogu %llu, zostanie wyczyszczony\n" -#: ../repair/dir.c:1991 +#: ../repair/dir.c:1981 #, c-format msgid "entry references free inode %llu in directory %llu, would clear entry\n" msgstr "wpis odwo³uje siê do wolnego i-wêz³a %llu w katalogu %llu, zosta³by wyczyszczony\n" -#: ../repair/dir.c:1999 +#: ../repair/dir.c:1989 #, c-format msgid "bad ino number %llu in dir ino %llu, entry #%d, bno %d\n" msgstr "b³êdny numer i-wêz³a %llu w i-wê¼le katalogu %llu, wpis #%d, bno %d\n" -#: ../repair/dir.c:2002 +#: ../repair/dir.c:1992 msgid "clearing inode number...\n" msgstr "wyczyszczono numer i-wêz³a...\n" -#: ../repair/dir.c:2007 +#: ../repair/dir.c:1997 msgid "would clear inode number...\n" msgstr "numer i-wêz³a zosta³by wyczyszczony\n" -#: ../repair/dir.c:2027 +#: ../repair/dir.c:2017 #, c-format msgid "entry #%d, dir inode %llu, has zero-len name, deleting entry\n" msgstr "wpis #%d, i-wêze³ katalogu %llu ma nazwê zerowej d³ugo¶ci, usuniêto\n" -#: ../repair/dir.c:2066 +#: ../repair/dir.c:2056 #, c-format msgid "entry #%d, dir inode %llu, has zero-len name, marking entry bad\n" msgstr "wpis #%d, i-wêze³ katalogu %llu ma nazwê zerowej d³ugo¶ci, zaznaczono jako b³êdny\n" -#: ../repair/dir.c:2080 +#: ../repair/dir.c:2070 #, c-format msgid "bad size, entry #%d in dir inode %llu, block %u -- entry overflows block\n" msgstr "b³êdny rozmiar, wpis #%d w i-wê¼le katalogu %llu, blok %u - wpis wykracza poza blok\n" -#: ../repair/dir.c:2091 +#: ../repair/dir.c:2081 #, c-format msgid "dir entry slot %d in block %u conflicts with used space in dir inode %llu\n" msgstr "slot wpisu katalogu %d w bloku %u jest w konflikcie z u¿ytym miejscem w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:2130 +#: ../repair/dir.c:2120 #, c-format msgid "illegal name \"%s\" in directory inode %llu, entry will be cleared\n" msgstr "niedozwolona nazwa \"%s\" w i-wê¼le katalogu %llu, wpis zostanie wyczyszczony\n" -#: ../repair/dir.c:2136 +#: ../repair/dir.c:2126 #, c-format msgid "illegal name \"%s\" in directory inode %llu, entry would be cleared\n" msgstr "niedozwolona nazwa \"%s\" w i-wê¼le katalogu %llu, wpis zosta³by wyczyszczony\n" -#: ../repair/dir.c:2146 +#: ../repair/dir.c:2136 #, c-format msgid "\tmismatched hash value for entry \"%s\"\n" msgstr "\tniedopasowana warto¶æ hasza dla wpisu \"%s\"\n" -#: ../repair/dir.c:2150 +#: ../repair/dir.c:2140 #, c-format msgid "\t\tin directory inode %llu. resetting hash value.\n" msgstr "\t\tw i-wê¼le katalogu %llu. Przestawiono warto¶æ hasza.\n" -#: ../repair/dir.c:2156 +#: ../repair/dir.c:2146 #, c-format msgid "\t\tin directory inode %llu. would reset hash value.\n" msgstr "\t\tw i-wê¼le katalogu %llu. Warto¶æ hasza zosta³aby przestawiona.\n" -#: ../repair/dir.c:2186 +#: ../repair/dir.c:2176 #, c-format msgid "\tbad hash ordering for entry \"%s\"\n" msgstr "\tb³êdny porz±dek hasza dla wpisu \"%s\"\n" -#: ../repair/dir.c:2190 +#: ../repair/dir.c:2180 #, c-format msgid "\t\tin directory inode %llu. will clear entry\n" msgstr "\t\tw i-wê¼le katalogu %llu. Wpis zostanie wyczyszczony.\n" -#: ../repair/dir.c:2198 +#: ../repair/dir.c:2188 #, c-format msgid "\t\tin directory inode %llu. would clear entry\n" msgstr "\t\tw i-wê¼le katalogu %llu. Wpis zosta³by wyczyszczony.\n" -#: ../repair/dir.c:2215 +#: ../repair/dir.c:2205 #, c-format msgid "name \"%s\" (block %u, slot %d) conflicts with used space in dir inode %llu\n" msgstr "nazwa \"%s\" (blok %u, slot %d) jest w konflikcie z u¿ytym miejscem w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:2222 +#: ../repair/dir.c:2212 #, c-format msgid "will clear entry \"%s\" (#%d) in directory inode %llu\n" msgstr "wpis \"%s\" (#%d) zostanie wyczyszczony w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:2226 +#: ../repair/dir.c:2216 #, c-format msgid "would clear entry \"%s\" (#%d)in directory inode %llu\n" msgstr "wpis \"%s\" (#%d) zosta³by wyczyszczony w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:2262 +#: ../repair/dir.c:2252 #, c-format msgid "bad .. entry in dir ino %llu, points to self" msgstr "b³êdny wpis .. w i-wê¼le katalogu %llu, wskazuje na siebie" -#: ../repair/dir.c:2266 ../repair/dir.c:2363 +#: ../repair/dir.c:2256 ../repair/dir.c:2353 msgid "will clear entry\n" msgstr "wpis zostanie wyczyszczony\n" -#: ../repair/dir.c:2271 ../repair/dir.c:2367 ../repair/dir2.c:1641 +#: ../repair/dir.c:2261 ../repair/dir.c:2357 ../repair/dir2.c:1644 msgid "would clear entry\n" msgstr "wpis zosta³by wyczyszczony\n" -#: ../repair/dir.c:2281 +#: ../repair/dir.c:2271 #, c-format msgid "correcting .. entry in root inode %llu, was %llu\n" msgstr "poprawiono wpis .. w gównym i-wê¼le %llu, by³o %llu\n" -#: ../repair/dir.c:2288 +#: ../repair/dir.c:2278 #, c-format msgid "bad .. entry (%llu) in root inode %llu should be %llu\n" msgstr "b³êdny wpis .. (%llu) w g³ównym i-wê¼le %llu, powinno byæ %llu\n" -#: ../repair/dir.c:2305 +#: ../repair/dir.c:2295 #, c-format msgid "multiple .. entries in directory inode %llu, will clear second entry\n" msgstr "wiele wpisów .. w i-wê¼le katalogu %llu, drugi wpis zostanie wyczyszczony\n" -#: ../repair/dir.c:2311 +#: ../repair/dir.c:2301 #, c-format msgid "multiple .. entries in directory inode %llu, would clear second entry\n" msgstr "wiele wpisów .. w i-wê¼le katalogu %llu, drugi wpis zosta³by wyczyszczony\n" -#: ../repair/dir.c:2324 +#: ../repair/dir.c:2314 #, c-format msgid ". in directory inode %llu has wrong value (%llu), fixing entry...\n" msgstr ". w i-wê¼le katalogu %llu ma niepoprawn± warto¶æ (%llu), poprawiono wpis...\n" -#: ../repair/dir.c:2331 +#: ../repair/dir.c:2321 #, c-format msgid ". in directory inode %llu has wrong value (%llu)\n" msgstr ". w i-wê¼le katalogu %llu ma niepoprawn± warto¶æ (%llu)\n" -#: ../repair/dir.c:2337 +#: ../repair/dir.c:2327 #, c-format msgid "multiple . entries in directory inode %llu\n" msgstr "wiele wpisów . w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:2344 +#: ../repair/dir.c:2334 #, c-format msgid "will clear one . entry in directory inode %llu\n" msgstr "jeden wpis . w i-wê¼le katalogu %llu zostanie wyczyszczony\n" -#: ../repair/dir.c:2350 +#: ../repair/dir.c:2340 #, c-format msgid "would clear one . entry in directory inode %llu\n" msgstr "jeden wpis . w i-wê¼le katalogu %llu zosta³by wyczyszczony\n" -#: ../repair/dir.c:2360 +#: ../repair/dir.c:2350 #, c-format msgid "entry \"%s\" in directory inode %llu points to self, " msgstr "wpis \"%s\" w i-wê¼le katalogu %llu wskazuje na siebie, " -#: ../repair/dir.c:2385 +#: ../repair/dir.c:2375 #, c-format msgid "- resetting first used heap value from %d to %d in block %u of dir ino %llu\n" msgstr "- przestawiono pierwsz± u¿ywan± warto¶æ sterty z %d na %d w bloku %u i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2394 +#: ../repair/dir.c:2384 #, c-format msgid "- would reset first used value from %d to %d in block %u of dir ino %llu\n" msgstr "- pierwsza u¿ywana warto¶æ zosta³aby przestawiona z %d na %d w bloku %u i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2405 +#: ../repair/dir.c:2395 #, c-format msgid "- resetting namebytes cnt from %d to %d in block %u of dir inode %llu\n" msgstr "- przestawiono liczbê bajtów nazwy z %d na %d w bloku %u i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2414 +#: ../repair/dir.c:2404 #, c-format msgid "- would reset namebytes cnt from %d to %d in block %u of dir inode %llu\n" msgstr "- liczba bajtów nazwy zosta³aby przestawiona z %d na %d w bloku %u i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2450 +#: ../repair/dir.c:2440 #, c-format msgid "- found unexpected lost holes in block %u, dir inode %llu\n" msgstr "- znaleziono nieoczekiwane utracone dziury w bloku %u, i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:2458 +#: ../repair/dir.c:2448 #, c-format msgid "- hole info non-optimal in block %u, dir inode %llu\n" msgstr "- nieoptymalna informacja o dziurze w bloku %u, i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:2465 +#: ../repair/dir.c:2455 #, c-format msgid "- hole info incorrect in block %u, dir inode %llu\n" msgstr "- niepoprawna informacja o dziurze w bloku %u, i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:2476 +#: ../repair/dir.c:2466 #, c-format msgid "- existing hole info for block %d, dir inode %llu (base, size) - \n" msgstr "- istniej±ca informacja o dziurze dla bloku %d, i-wêz³a katalogu %llu (podstawa, rozmiar) - \n" -#: ../repair/dir.c:2484 +#: ../repair/dir.c:2474 #, c-format msgid "- holes flag = %d\n" msgstr "- flaga dziur = %d\n" -#: ../repair/dir.c:2490 +#: ../repair/dir.c:2480 #, c-format msgid "- compacting block %u in dir inode %llu\n" msgstr "- zagêszczono blok %u w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:2531 +#: ../repair/dir.c:2521 #, c-format msgid "not enough space in block %u of dir inode %llu for all entries\n" msgstr "zbyt ma³o miejsca dla wszystkich wpisów w bloku %u i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2599 +#: ../repair/dir.c:2589 #, c-format msgid "- would compact block %u in dir inode %llu\n" msgstr "- bloku %u w i-wê¼le katalogu %llu zosta³by zagêszczony\n" -#: ../repair/dir.c:2661 ../repair/dir2.c:1826 +#: ../repair/dir.c:2651 ../repair/dir2.c:1830 #, c-format msgid "can't map block %u for directory inode %llu\n" msgstr "nie mo¿na odwzorowaæ bloku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2672 +#: ../repair/dir.c:2662 #, c-format msgid "can't read file block %u (fsbno %llu, daddr %lld) for directory inode %llu\n" msgstr "nie mo¿na odczytaæ bloku pliku %u (fsbno %llu, daddr %lld) dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2686 ../repair/dir.c:2948 +#: ../repair/dir.c:2676 ../repair/dir.c:2938 #, c-format msgid "bad directory leaf magic # %#x for dir ino %llu\n" msgstr "b³êdna liczba magiczna li¶cia katalogu %#x dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2725 +#: ../repair/dir.c:2715 #, c-format msgid "bad sibling back pointer for directory block %u in directory inode %llu\n" msgstr "b³êdny wska¼nik wstecz dla bloku katalogu %u w i-wê¼le katalogu %llu\n" -#: ../repair/dir.c:2757 ../repair/dir2.c:1903 +#: ../repair/dir.c:2747 ../repair/dir2.c:1907 #, c-format msgid "bad hash path in directory %llu\n" msgstr "b³êdna ¶cie¿ka hasza w katalogu %llu\n" -#: ../repair/dir.c:2867 +#: ../repair/dir.c:2857 #, c-format msgid "out of range internal directory block numbers (inode %llu)\n" msgstr "numery bloków wewnêtrznego katalogu spoza zakresu (i-wêze³ %llu)\n" -#: ../repair/dir.c:2873 +#: ../repair/dir.c:2863 #, c-format msgid "setting directory inode (%llu) size to %llu bytes, was %lld bytes\n" msgstr "ustawiono rozmiar i-wêz³a katalogu (%llu) na %llu bajtów, by³o %lld bajtów\n" -#: ../repair/dir.c:2928 +#: ../repair/dir.c:2918 #, c-format msgid "block 0 for directory inode %llu is missing\n" msgstr "brak bloku 0 dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2935 +#: ../repair/dir.c:2925 #, c-format msgid "can't read block 0 for directory inode %llu\n" msgstr "nie mo¿na odczytaæ bloku 0 dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2972 +#: ../repair/dir.c:2962 #, c-format msgid "clearing forw/back pointers for directory inode %llu\n" msgstr "wyczyszczono wska¼niki w przód/wstecz dla i-wêz³a katalogu %llu\n" -#: ../repair/dir.c:2978 +#: ../repair/dir.c:2968 #, c-format msgid "would clear forw/back pointers for directory inode %llu\n" msgstr "wska¼niki w przód/wstecz dla i-wêz³a katalogu %llu zosta³yby wyczyszczone\n" -#: ../repair/dir.c:3048 ../repair/dir2.c:2114 +#: ../repair/dir.c:3038 ../repair/dir2.c:2115 #, c-format msgid "no . entry for directory %llu\n" msgstr "brak wpisu . dla katalogu %llu\n" -#: ../repair/dir.c:3058 ../repair/dir2.c:2124 +#: ../repair/dir.c:3048 ../repair/dir2.c:2125 #, c-format msgid "no .. entry for directory %llu\n" msgstr "brak wpisu .. dla katalogu %llu\n" -#: ../repair/dir.c:3060 ../repair/dir2.c:2126 +#: ../repair/dir.c:3050 ../repair/dir2.c:2127 #, c-format msgid "no .. entry for root directory %llu\n" msgstr "brak wpisu .. dla katalogu g³ównego %llu\n" -#: ../repair/dir2.c:55 +#: ../repair/dir2.c:56 #, c-format msgid "malloc failed (%u bytes) dir2_add_badlist:ino %llu\n" msgstr "malloc nie powiod³o siê (%u bajtów) w dir2_add_badlist:ino %llu\n" -#: ../repair/dir2.c:96 ../repair/dir2.c:197 ../repair/dir2.c:233 +#: ../repair/dir2.c:97 ../repair/dir2.c:208 ../repair/dir2.c:244 msgid "couldn't malloc dir2 buffer list\n" msgstr "nie mo¿na przydzieliæ listy bufora dir2\n" -#: ../repair/dir2.c:113 +#: ../repair/dir2.c:124 msgid "couldn't malloc dir2 buffer header\n" msgstr "nie mo¿na przydzieliæ nag³ówka bufora dir2\n" -#: ../repair/dir2.c:130 +#: ../repair/dir2.c:141 msgid "couldn't malloc dir2 buffer data\n" msgstr "nie mo¿na przydzieliæ danych bufora dir2\n" -#: ../repair/dir2.c:288 ../repair/dir2.c:648 ../repair/dir2.c:1706 -#: ../repair/phase6.c:2361 +#: ../repair/dir2.c:304 ../repair/dir2.c:658 ../repair/dir2.c:1709 +#: ../repair/phase6.c:2422 #, c-format msgid "can't read block %u for directory inode %llu\n" msgstr "nie mo¿na odczytaæ bloku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:299 +#: ../repair/dir2.c:315 #, c-format msgid "found non-root LEAFN node in inode %llu bno = %u\n" msgstr "znaleziono nieg³ówny wêze³ LEAFN w i-wê¼le %llu bno = %u\n" -#: ../repair/dir2.c:304 -#, c-format -msgid "LEAFN node level is %d inode %llu bno = %u\n" -msgstr "poziom wêz³a LEAFN wynosi %d i-wêze³ %llu bno = %u\n" - -#: ../repair/dir2.c:315 +#: ../repair/dir2.c:325 #, c-format msgid "bad dir magic number 0x%x in inode %llu bno = %u\n" msgstr "b³êdna liczba magiczna katalogu 0x%x w i-wê¼le %llu bno = %u\n" -#: ../repair/dir2.c:392 +#: ../repair/dir2.c:402 #, c-format msgid "release_dir2_cursor_int got unexpected non-null bp, dabno = %u\n" msgstr "release_dir2_cursor_int otrzyma³ nieoczekiwany niezerowy bp, dabno = %u\n" -#: ../repair/dir2.c:455 +#: ../repair/dir2.c:465 #, c-format msgid "directory block used/count inconsistency - %d / %hu\n" msgstr "niespójno¶æ warto¶ci used/count bloku katalogu - %d / %hu\n" -#: ../repair/dir2.c:477 +#: ../repair/dir2.c:487 #, c-format msgid "bad directory block in inode %llu\n" msgstr "b³êdny blok katalogu w i-wê¼le %llu\n" -#: ../repair/dir2.c:498 +#: ../repair/dir2.c:508 #, c-format msgid "" "correcting bad hashval in non-leaf dir block\n" @@ -6478,7 +6541,7 @@ msgstr "" "poprawiono b³êdne hashval w bloku katalogu nie bêd±cego li¶ciem\n" "\tw i-wê¼le (poziomu %d) %llu.\n" -#: ../repair/dir2.c:505 +#: ../repair/dir2.c:515 #, c-format msgid "" "would correct bad hashval in non-leaf dir block\n" @@ -6487,27 +6550,27 @@ msgstr "" "b³êdne hashval w bloku katalogu nie bêd±cego li¶ciem zosta³oby poprawione\n" "\tw i-wê¼le (poziomu %d) %llu.\n" -#: ../repair/dir2.c:662 +#: ../repair/dir2.c:672 #, c-format msgid "bad magic number %x in block %u for directory inode %llu\n" msgstr "b³êdna liczba magiczna %x w bloku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:670 +#: ../repair/dir2.c:680 #, c-format msgid "bad back pointer in block %u for directory inode %llu\n" msgstr "b³êdny wska¼nik wstecz w bloku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:677 +#: ../repair/dir2.c:687 #, c-format msgid "entry count %d too large in block %u for directory inode %llu\n" msgstr "liczba wpisów %d zbyt du¿a w bloku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:684 +#: ../repair/dir2.c:694 #, c-format msgid "bad level %d in block %u for directory inode %llu\n" msgstr "b³êdny poziom %d w bloku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:728 +#: ../repair/dir2.c:738 #, c-format msgid "" "correcting bad hashval in interior dir block\n" @@ -6516,7 +6579,7 @@ msgstr "" "poprawiono b³êdne hashval w wewnêtrznym bloku katalogu\n" "\tw i-wê¼le (poziomu %d) %llu.\n" -#: ../repair/dir2.c:735 +#: ../repair/dir2.c:745 #, c-format msgid "" "would correct bad hashval in interior dir block\n" @@ -6525,385 +6588,394 @@ msgstr "" "b³êdne hashval w wewnêtrznym bloku katalogu zosta³oby poprawione\n" "\tw i-wê¼le (poziomu %d) %llu.\n" -#: ../repair/dir2.c:769 +#: ../repair/dir2.c:779 msgid "couldn't malloc dir2 shortform copy\n" msgstr "nie uda³o siê przydzieliæ krótkiej kopii dir2\n" -#: ../repair/dir2.c:909 +#: ../repair/dir2.c:919 msgid "current" msgstr "bie¿±cego i-wêz³a" -#: ../repair/dir2.c:912 ../repair/dir2.c:1435 +#: ../repair/dir2.c:922 ../repair/dir2.c:1445 msgid "invalid" msgstr "nieprawid³owego i-wêz³a" -#: ../repair/dir2.c:915 ../repair/dir2.c:1438 +#: ../repair/dir2.c:925 ../repair/dir2.c:1448 msgid "realtime bitmap" msgstr "i-wêz³a bitmapy realtime" -#: ../repair/dir2.c:918 ../repair/dir2.c:1441 +#: ../repair/dir2.c:928 ../repair/dir2.c:1451 msgid "realtime summary" msgstr "i-wêz³a opisu realtime" -#: ../repair/dir2.c:921 ../repair/dir2.c:1444 +#: ../repair/dir2.c:931 ../repair/dir2.c:1454 msgid "user quota" msgstr "i-wêz³a limitów u¿ytkownika" -#: ../repair/dir2.c:924 ../repair/dir2.c:1447 +#: ../repair/dir2.c:934 ../repair/dir2.c:1457 msgid "group quota" msgstr "i-wêz³a limitów grupy" -#: ../repair/dir2.c:958 ../repair/dir2.c:1484 +#: ../repair/dir2.c:968 ../repair/dir2.c:1487 msgid "non-existent" msgstr "nie istniej±cego i-wêz³a" -#: ../repair/dir2.c:962 +#: ../repair/dir2.c:972 #, c-format msgid "entry \"%*.*s\" in shortform directory %llu references %s inode %llu\n" msgstr "wpis \"%*.*s\" w krótkim katalogu %llu odwo³uje siê do %s %llu\n" -#: ../repair/dir2.c:994 +#: ../repair/dir2.c:1004 #, c-format msgid "zero length entry in shortform dir %llu" msgstr "wpis zerowej d³ugo¶ci w krótkim katalogu %llu" -#: ../repair/dir2.c:998 +#: ../repair/dir2.c:1008 #, c-format msgid ", junking %d entries\n" msgstr ", wyrzucono %d wpisów\n" -#: ../repair/dir2.c:1001 +#: ../repair/dir2.c:1011 #, c-format msgid ", would junk %d entries\n" msgstr ", %d wpisów zosta³oby wyrzucone\n" -#: ../repair/dir2.c:1075 +#: ../repair/dir2.c:1085 #, c-format msgid "entry contains offset out of order in shortform dir %llu\n" msgstr "wpis zawiera uszkodzony offset w krótkim katalogu %llu\n" -#: ../repair/dir2.c:1179 +#: ../repair/dir2.c:1189 #, c-format msgid "would have corrected i8 count in directory %llu from %d to %d\n" msgstr "liczba i8 zosta³aby poprawiona w katalogu %llu z %d na %d\n" -#: ../repair/dir2.c:1183 +#: ../repair/dir2.c:1193 #, c-format msgid "corrected i8 count in directory %llu, was %d, now %d\n" msgstr "poprawiono liczbê i8 w katalogu %llu - by³o %d, jest %d\n" -#: ../repair/dir2.c:1220 +#: ../repair/dir2.c:1230 #, c-format msgid "directory %llu offsets too high\n" msgstr "offsety zbyt du¿e w katalogu %llu\n" -#: ../repair/dir2.c:1225 +#: ../repair/dir2.c:1235 #, c-format msgid "would have corrected entry offsets in directory %llu\n" msgstr "offsety wpisów w katalogu %llu zosta³yby poprawione\n" -#: ../repair/dir2.c:1229 +#: ../repair/dir2.c:1239 #, c-format msgid "corrected entry offsets in directory %llu\n" msgstr "poprawiono offsety wpisów w katalogu %llu\n" -#: ../repair/dir2.c:1284 +#: ../repair/dir2.c:1294 #, c-format msgid "bad .. entry in directory inode %llu, points to self, " msgstr "b³êdny wpis .. w i-wê¼le katalogu %llu, wskazuje na siebie, " -#: ../repair/dir2.c:1396 +#: ../repair/dir2.c:1406 #, c-format msgid "corrupt block %u in directory inode %llu\n" msgstr "uszkodzony blok %u w i-wê¼le katalogu %llu\n" -#: ../repair/dir2.c:1399 +#: ../repair/dir2.c:1409 msgid "\twill junk block\n" msgstr "\tblok zostanie wyrzucony\n" -#: ../repair/dir2.c:1401 +#: ../repair/dir2.c:1411 msgid "\twould junk block\n" msgstr "\tblok zosta³by wyrzucony\n" -#: ../repair/dir2.c:1487 +#: ../repair/dir2.c:1490 #, c-format msgid "entry \"%*.*s\" at block %u offset %d in directory inode %llu references %s inode %llu\n" msgstr "wpis \"%*.*s\" w bloku %u offsecie %d w i-wê¼le katalogu %llu odwo³uje siê do %s %llu\n" -#: ../repair/dir2.c:1499 +#: ../repair/dir2.c:1502 #, c-format msgid "entry at block %u offset %d in directory inode %llu has 0 namelength\n" msgstr "wpis w bloku %u offsecie %d w i-wê¼le katalogu %llu ma zerow± d³ugo¶æ nazwy\n" -#: ../repair/dir2.c:1511 +#: ../repair/dir2.c:1514 #, c-format msgid "\tclearing inode number in entry at offset %d...\n" msgstr "\twyczyszczono numer i-wêz³a we wpisie o offsecie %d...\n" -#: ../repair/dir2.c:1517 +#: ../repair/dir2.c:1520 #, c-format msgid "\twould clear inode number in entry at offset %d...\n" msgstr "\tnumer i-wêz³a we wpisie o offsecie %d zosta³by wyczyszczony...\n" -#: ../repair/dir2.c:1530 +#: ../repair/dir2.c:1533 #, c-format msgid "entry at block %u offset %d in directory inode %llu has illegal name \"%*.*s\": " msgstr "wpis w bloku %u offsecie %d w i-wê¼le katalogu %llu ma niedozwolon± nazwê \"%*.*s\": " -#: ../repair/dir2.c:1561 +#: ../repair/dir2.c:1564 #, c-format msgid "bad .. entry in directory inode %llu, points to self: " msgstr "b³êdny wpis .. w i-wê¼le katalogu %llu, wskazuje na siebie: " -#: ../repair/dir2.c:1572 +#: ../repair/dir2.c:1575 #, c-format msgid "bad .. entry in root directory inode %llu, was %llu: " msgstr "b³êdny wpis w i-wê¼le g³ównego katalogu %llu, by³o %llu: " -#: ../repair/dir2.c:1577 ../repair/dir2.c:1609 ../repair/phase2.c:178 -#: ../repair/phase2.c:187 ../repair/phase2.c:196 +#: ../repair/dir2.c:1580 ../repair/dir2.c:1612 ../repair/phase2.c:193 +#: ../repair/phase2.c:202 ../repair/phase2.c:211 msgid "correcting\n" msgstr "poprawiono\n" -#: ../repair/dir2.c:1581 ../repair/dir2.c:1613 ../repair/phase2.c:180 -#: ../repair/phase2.c:189 ../repair/phase2.c:198 +#: ../repair/dir2.c:1584 ../repair/dir2.c:1616 ../repair/phase2.c:195 +#: ../repair/phase2.c:204 ../repair/phase2.c:213 msgid "would correct\n" msgstr "zosta³by poprawiony\n" -#: ../repair/dir2.c:1592 +#: ../repair/dir2.c:1595 #, c-format msgid "multiple .. entries in directory inode %llu: " msgstr "wiele wpisów .. w i-wê¼le katalogu %llu: " -#: ../repair/dir2.c:1605 +#: ../repair/dir2.c:1608 #, c-format msgid "bad . entry in directory inode %llu, was %llu: " msgstr "b³êdny wpis . w i-wê¼le katalogu %llu, by³o %llu: " -#: ../repair/dir2.c:1617 +#: ../repair/dir2.c:1620 #, c-format msgid "multiple . entries in directory inode %llu: " msgstr "wiele wpisów . w i-wê¼le katalogu %llu: " -#: ../repair/dir2.c:1627 +#: ../repair/dir2.c:1630 #, c-format msgid "entry \"%*.*s\" in directory inode %llu points to self: " msgstr "wpis \"%*.*s\" w i-wê¼le katalogu %llu wskazuje na siebie: " -#: ../repair/dir2.c:1639 +#: ../repair/dir2.c:1642 msgid "clearing entry\n" msgstr "wyczyszczono wpis\n" -#: ../repair/dir2.c:1653 +#: ../repair/dir2.c:1656 #, c-format msgid "bad bestfree table in block %u in directory inode %llu: " msgstr "b³êdna tablica bestfree w bloku %u w i-wê¼le katalogu %llu: " -#: ../repair/dir2.c:1657 +#: ../repair/dir2.c:1660 msgid "repairing table\n" msgstr "naprawiono tablicê\n" -#: ../repair/dir2.c:1661 +#: ../repair/dir2.c:1664 msgid "would repair table\n" msgstr "tablica zosta³aby naprawiona\n" -#: ../repair/dir2.c:1698 +#: ../repair/dir2.c:1701 #, c-format msgid "block %u for directory inode %llu is missing\n" msgstr "brak bloku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:1715 +#: ../repair/dir2.c:1718 #, c-format msgid "bad directory block magic # %#x in block %u for directory inode %llu\n" msgstr "b³êdna liczba magiczna bloku katalogu %#x w bloku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:1760 +#: ../repair/dir2.c:1763 #, c-format msgid "bad entry count in block %u of directory inode %llu\n" msgstr "b³êdna liczba wpisów w bloku %u i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:1770 +#: ../repair/dir2.c:1773 #, c-format msgid "bad hash ordering in block %u of directory inode %llu\n" msgstr "b³êdna kolejno¶æ hasza w bloku %u i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:1779 +#: ../repair/dir2.c:1782 #, c-format msgid "bad stale count in block %u of directory inode %llu\n" msgstr "b³êdna liczba stale %u i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:1836 +#: ../repair/dir2.c:1840 #, c-format msgid "can't read file block %u for directory inode %llu\n" msgstr "nie mo¿na odczytaæ bloku pliku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:1847 +#: ../repair/dir2.c:1851 #, c-format msgid "bad directory leaf magic # %#x for directory inode %llu block %u\n" msgstr "b³êdna liczba magiczna li¶cia katalogu %#x dla i-wêz³a katalogu %llu bloku %u\n" -#: ../repair/dir2.c:1877 +#: ../repair/dir2.c:1881 #, c-format msgid "bad sibling back pointer for block %u in directory inode %llu\n" msgstr "b³êdny wska¼nik wstecz dla bloku %u w i-wê¼le katalogu %llu\n" -#: ../repair/dir2.c:2010 +#: ../repair/dir2.c:2011 #, c-format msgid "block %llu for directory inode %llu is missing\n" msgstr "brak bloku %llu dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:2019 +#: ../repair/dir2.c:2020 #, c-format msgid "can't read block %llu for directory inode %llu\n" msgstr "nie mo¿na odczytaæ bloku %llu dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:2027 +#: ../repair/dir2.c:2028 #, c-format msgid "bad directory block magic # %#x in block %llu for directory inode %llu\n" msgstr "b³êdna liczba magiczna bloku katalogu %#x w bloku %llu dla i-wêz³a katalogu %llu\n" -#: ../repair/dir2.c:2107 +#: ../repair/dir2.c:2108 #, c-format msgid "bad size/format for directory %llu\n" msgstr "b³êdny rozmiar/format dla katalogu %llu\n" -#: ../repair/dir_stack.c:91 -msgid "couldn't malloc dir stack element, try more swap\n" -msgstr "nie uda³o siê przydzieliæ elementu stosu katalogu, nale¿y spróbowaæ zwiêkszyæ swap\n" - -#: ../repair/incore.c:64 +#: ../repair/incore.c:65 msgid "couldn't allocate block map pointers\n" msgstr "nie uda³o siê przydzieliæ wska¼ników mapy bloków\n" -#: ../repair/incore.c:73 +#: ../repair/incore.c:68 +msgid "couldn't allocate block map locks\n" +msgstr "nie uda³o siê przydzieliæ blokad mapy bloków\n" + +#: ../repair/incore.c:76 #, c-format msgid "couldn't allocate block map, size = %d\n" msgstr "nie uda³o siê przydzieliæ mapy bloków, rozmiar = %d\n" -#: ../repair/incore.c:90 +#: ../repair/incore.c:94 #, c-format msgid "couldn't allocate realtime block map, size = %llu\n" msgstr "nie uda³o siê przydzieliæ mapy bloków realtime, size = %llu\n" -#: ../repair/incore_ext.c:112 ../repair/incore_ext.c:666 +#: ../repair/incore_ext.c:121 ../repair/incore_ext.c:679 msgid "couldn't allocate new extent descriptors.\n" msgstr "nie uda³o siê przydzieliæ nowych deskryptorów fragmentów.\n" -#: ../repair/incore_ext.c:242 +#: ../repair/incore_ext.c:254 msgid "duplicate bno extent range\n" msgstr "powtórzony przedzia³ fragmentów bno\n" -#: ../repair/incore_ext.c:379 +#: ../repair/incore_ext.c:391 msgid ": duplicate bno extent range\n" msgstr ": powtórzony przedzia³ fragmentów bno\n" -#: ../repair/incore_ext.c:543 ../repair/incore_ext.c:594 -#: ../repair/incore_ext.c:779 ../repair/incore_ext.c:831 +#: ../repair/incore_ext.c:555 ../repair/incore_ext.c:606 +#: ../repair/incore_ext.c:794 ../repair/incore_ext.c:849 msgid "duplicate extent range\n" msgstr "powtórzony przedzia³ fragmentów\n" -#: ../repair/incore_ext.c:880 +#: ../repair/incore_ext.c:907 msgid "couldn't malloc dup extent tree descriptor table\n" msgstr "nie uda³o siê przydzieliæ tablicy deskryptorów drzewa powtórzonych fragmentów\n" -#: ../repair/incore_ext.c:885 +#: ../repair/incore_ext.c:912 msgid "couldn't malloc free by-bno extent tree descriptor table\n" msgstr "nie uda³o siê przydzieliæ tablicy deskryptorów drzewa wolnych fragmentów wg bno\n" -#: ../repair/incore_ext.c:890 +#: ../repair/incore_ext.c:917 msgid "couldn't malloc free by-bcnt extent tree descriptor table\n" msgstr "nie uda³o siê przydzieliæ tablicy deskryptorów drzewa wolnych fragmentów wg bcnt\n" -#: ../repair/incore_ext.c:896 +#: ../repair/incore_ext.c:923 msgid "couldn't malloc dup extent tree descriptor\n" msgstr "nie uda³o siê przydzieliæ deskryptora drzewa powtórzonych fragmentów\n" -#: ../repair/incore_ext.c:900 +#: ../repair/incore_ext.c:927 msgid "couldn't malloc bno extent tree descriptor\n" msgstr "nie uda³o siê przydzieliæ deskryptora drzewa fragmentów wg bno\n" -#: ../repair/incore_ext.c:904 +#: ../repair/incore_ext.c:931 msgid "couldn't malloc bcnt extent tree descriptor\n" msgstr "nie uda³o siê przydzieliæ deskryptora drzewa fragmentów wg bcnt\n" -#: ../repair/incore_ext.c:914 +#: ../repair/incore_ext.c:941 msgid "couldn't malloc dup rt extent tree descriptor\n" msgstr "nie uda³o siê przydzieliæ deskryptora drzewa powtórzonych fragmentów rt\n" -#: ../repair/incore_ino.c:77 +#: ../repair/incore_ino.c:196 ../repair/incore_ino.c:205 +#: ../repair/incore_ino.c:222 ../repair/incore_ino.c:231 +msgid "could not allocate expanded nlink array\n" +msgstr "Nie uda³o siê przydzieliæ rozszerzonej tablicy nlink\n" + +#: ../repair/incore_ino.c:268 msgid "inode map malloc failed\n" msgstr "przydzielenie mapy i-wêz³ów nie powiod³o siê\n" -#: ../repair/incore_ino.c:190 +#: ../repair/incore_ino.c:298 +msgid "could not allocate nlink array\n" +msgstr "Nie uda³o siê przydzieliæ tablicy nlink\n" + +#: ../repair/incore_ino.c:390 msgid "add_aginode_uncertain - duplicate inode range\n" msgstr "add_aginode_uncertain - powtórzony przedzia³ i-wêz³ów\n" -#: ../repair/incore_ino.c:292 +#: ../repair/incore_ino.c:488 msgid "add_inode - duplicate inode range\n" msgstr "add_inode - powtórzony przedzia³ i-wêz³ów\n" -#: ../repair/incore_ino.c:386 +#: ../repair/incore_ino.c:579 #, c-format msgid "good inode list is --\n" msgstr "lista dobrych i-wêz³ów to:\n" -#: ../repair/incore_ino.c:389 +#: ../repair/incore_ino.c:582 #, c-format msgid "uncertain inode list is --\n" msgstr "lista niepewnych i-wêz³ów to:\n" -#: ../repair/incore_ino.c:394 +#: ../repair/incore_ino.c:587 #, c-format msgid "agno %d -- no inodes\n" msgstr "agno %d - brak i-wêz³ów\n" -#: ../repair/incore_ino.c:398 +#: ../repair/incore_ino.c:591 #, c-format msgid "agno %d\n" msgstr "agno %d\n" -#: ../repair/incore_ino.c:402 +#: ../repair/incore_ino.c:595 #, c-format msgid "\tptr = %lx, start = 0x%x, free = 0x%llx, confirmed = 0x%llx\n" msgstr "\tptr = %lx, start = 0x%x, wolne = 0x%llx, potwierdzone = 0x%llx\n" -#: ../repair/incore_ino.c:446 +#: ../repair/incore_ino.c:646 msgid "couldn't malloc parent list table\n" msgstr "nie uda³o siê przydzieliæ tablicy listy rodziców\n" -#: ../repair/incore_ino.c:452 ../repair/incore_ino.c:498 +#: ../repair/incore_ino.c:657 ../repair/incore_ino.c:703 msgid "couldn't memalign pentries table\n" msgstr "nie uda³o siê memalign na tablicy pentries\n" -#: ../repair/incore_ino.c:558 -msgid "could not malloc back pointer table\n" -msgstr "nie uda³o siê przydzieliæ tablicy wska¼ników wstecz\n" +#: ../repair/incore_ino.c:761 ../repair/incore_ino.c:767 +msgid "could not malloc inode extra data\n" +msgstr "nie uda³o siê przydzieliæ dodatkowych danych i-wêz³a\n" -#: ../repair/incore_ino.c:648 +#: ../repair/incore_ino.c:815 msgid "couldn't malloc inode tree descriptor table\n" msgstr "nie uda³o siê przydzieliæ tablicy deskryptorów drzewa i-wêz³ów\n" -#: ../repair/incore_ino.c:652 +#: ../repair/incore_ino.c:819 msgid "couldn't malloc uncertain ino tree descriptor table\n" msgstr "nie uda³o siê przydzieliæ tablicy deskryptorów drzewa i-wêz³ów niepewnych\n" -#: ../repair/incore_ino.c:657 +#: ../repair/incore_ino.c:824 msgid "couldn't malloc inode tree descriptor\n" msgstr "nie uda³o siê przydzieliæ deskryptora drzewa i-wêz³ów\n" -#: ../repair/incore_ino.c:661 +#: ../repair/incore_ino.c:828 msgid "couldn't malloc uncertain ino tree descriptor\n" msgstr "nie uda³o siê przydzieliæ deskryptora drzewa i-wêz³ów niepewnych\n" -#: ../repair/incore_ino.c:672 +#: ../repair/incore_ino.c:839 msgid "couldn't malloc uncertain inode cache area\n" msgstr "nie uda³o siê przydzieliæ obszaru pamiêci podrêcznej i-wêz³ów niepewnych\n" -#: ../repair/init.c:38 +#: ../repair/init.c:42 msgid "ts_alloc: cannot allocate thread specific storage\n" msgstr "ts_alloc: nie mo¿na przydzieliæ miejsca dla w±tku\n" -#: ../repair/init.c:137 +#: ../repair/init.c:146 msgid "couldn't initialize XFS library\n" msgstr "nie uda³o siê zainicjowaæ biblioteki XFS\n" @@ -6924,39 +6996,66 @@ msgstr "nie uda msgid "Phase 1 - find and verify superblock...\n" msgstr "Faza 1 - szukanie i sprawdzanie superbloku...\n" -#: ../repair/phase1.c:75 +#: ../repair/phase1.c:74 msgid "error reading primary superblock\n" msgstr "b³±d podczas odczytu g³ównego superbloku\n" -#: ../repair/phase1.c:81 +#: ../repair/phase1.c:80 #, c-format msgid "bad primary superblock - %s !!!\n" msgstr "b³êdny g³ówny superblok - %s!!!\n" -#: ../repair/phase1.c:88 +#: ../repair/phase1.c:87 #, c-format msgid "couldn't verify primary superblock - %s !!!\n" msgstr "nie uda³o siê sprawdziæ g³ównego superbloku - %s!!!\n" -#: ../repair/phase1.c:97 +#: ../repair/phase1.c:105 +msgid "superblock has a features2 mismatch, correcting\n" +msgstr "superblok ma niepasuj±ce features2, poprawianie\n" + +#: ../repair/phase1.c:121 +#, c-format +msgid "Enabling lazy-counters\n" +msgstr "W³±czanie leniwych liczników\n" + +#: ../repair/phase1.c:125 +#, c-format +msgid "Disabling lazy-counters\n" +msgstr "Wy³±czanie leniwych liczników\n" + +#: ../repair/phase1.c:128 +#, c-format +msgid "Lazy-counters are already %s\n" +msgstr "Leniwe liczniki ju¿ s± %s\n" + +#: ../repair/phase1.c:129 +msgid "enabled" +msgstr "w³±czone" + +#: ../repair/phase1.c:129 +msgid "disabled" +msgstr "wy³±czone" + +#: ../repair/phase1.c:136 msgid "writing modified primary superblock\n" msgstr "zapisano zmodyfikowany g³ówny superblok\n" -#: ../repair/phase1.c:100 +#: ../repair/phase1.c:139 msgid "would write modified primary superblock\n" msgstr "zmodyfikowany g³ówny superblok zosta³by zapisany\n" -#: ../repair/phase2.c:54 +#: ../repair/phase2.c:65 #, c-format msgid "zero_log: cannot find log head/tail (xlog_find_tail=%d), zeroing it anyway\n" msgstr "zero_log: nie znaleziono pocz±tku/koñca loga (xlog_find_tail=%d), wyzerowano go\n" -#: ../repair/phase2.c:59 +#: ../repair/phase2.c:70 #, c-format msgid "zero_log: head block %lld tail block %lld\n" msgstr "zero_log: blok pocz±tku %lld blok koñca %lld\n" -#: ../repair/phase2.c:65 +#: ../repair/phase2.c:76 msgid "" "ALERT: The filesystem has valuable metadata changes in a log which is being\n" "destroyed because the -L option was used.\n" @@ -6964,7 +7063,7 @@ msgstr "" "UWAGA: system plików zawiera warto¶ciowe zmiany metadanych w logu, który jest\n" "niszczony, poniewa¿ u¿yto opcji -L.\n" -#: ../repair/phase2.c:69 +#: ../repair/phase2.c:80 msgid "" "ERROR: The filesystem has valuable metadata changes in a log which needs to\n" "be replayed. Mount the filesystem to replay the log, and unmount it before\n" @@ -6981,449 +7080,401 @@ msgstr "" "Nale¿y zauwa¿yæ, ¿e zniszczenie loga mo¿e spowodowaæ uszkodzenia danych -\n" "proszê najpierw spróbowaæ podmontowaæ system plików.\n" -#: ../repair/phase2.c:111 +#: ../repair/phase2.c:122 msgid "This filesystem has an external log. Specify log device with the -l option.\n" msgstr "Ten system plików ma zewnêtrzny log. Nale¿y podaæ urz±dzenie loga przy u¿yciu opcji -l.\n" -#: ../repair/phase2.c:114 +#: ../repair/phase2.c:125 #, c-format msgid "Phase 2 - using external log on %s\n" msgstr "Faza 2 - u¿ycie zewnêtrznego loga na %s\n" -#: ../repair/phase2.c:116 +#: ../repair/phase2.c:127 msgid "Phase 2 - using internal log\n" msgstr "Faza 2 - u¿ycie wewnêtrznego loga\n" -#: ../repair/phase2.c:120 +#: ../repair/phase2.c:131 msgid " - zero log...\n" msgstr " - zerowanie loga...\n" -#: ../repair/phase2.c:124 +#: ../repair/phase2.c:135 msgid " - scan filesystem freespace and inode maps...\n" msgstr " - przeszukiwanie wolnego miejsca i map i-wêz³ów w systemie plików...\n" -#: ../repair/phase2.c:147 +#: ../repair/phase2.c:162 msgid "root inode chunk not found\n" msgstr "nie znaleziono danych g³ównego i-wêz³a\n" -#: ../repair/phase2.c:169 +#: ../repair/phase2.c:184 msgid " - found root inode chunk\n" msgstr " - znaleziono dane g³ównego i-wêz³a\n" -#: ../repair/phase2.c:175 +#: ../repair/phase2.c:190 msgid "root inode marked free, " msgstr "g³ówny i-wêze³ oznaczony jako wolny, " -#: ../repair/phase2.c:184 +#: ../repair/phase2.c:199 msgid "realtime bitmap inode marked free, " msgstr "i-wêze³ bitmapy realtime oznaczony jako wolny, " -#: ../repair/phase2.c:193 +#: ../repair/phase2.c:208 msgid "realtime summary inode marked free, " msgstr "i-wêze³ opisu realtime oznaczony jako wolny, " -#: ../repair/phase3.c:113 +#: ../repair/phase3.c:117 #, c-format msgid "cannot read agi block %lld for ag %u\n" msgstr "nie mo¿na odczytaæ bloku agi %lld dla ag %u\n" -#: ../repair/phase3.c:136 +#: ../repair/phase3.c:140 #, c-format msgid "error following ag %d unlinked list\n" msgstr "b³±d podczas pod±¿ania za od³±czon± list± ag %d\n" -#: ../repair/phase3.c:151 +#: ../repair/phase3.c:161 ../repair/phase4.c:125 ../repair/phase5.c:1468 +#: ../repair/phase6.c:3844 +#, c-format +msgid " - agno = %d\n" +msgstr " - agno = %d\n" + +#: ../repair/phase3.c:212 msgid "Phase 3 - for each AG...\n" msgstr "Faza 3 - dla ka¿dej AG...\n" -#: ../repair/phase3.c:153 +#: ../repair/phase3.c:214 msgid " - scan and clear agi unlinked lists...\n" msgstr " - przeszukiwanie i czyszczenie od³±czonych list agi...\n" -#: ../repair/phase3.c:155 +#: ../repair/phase3.c:216 msgid " - scan (but don't clear) agi unlinked lists...\n" msgstr " - przeszukiwanie (ale nie czyszczenie) od³±czonych list agi...\n" -#: ../repair/phase3.c:171 +#: ../repair/phase3.c:236 msgid " - process known inodes and perform inode discovery...\n" msgstr " - przetwarzanie znanych i-wêz³ów i rozpoznawanie i-wêz³ów...\n" -#: ../repair/phase3.c:174 ../repair/phase4.c:1328 ../repair/phase6.c:3827 -#: ../repair/phase7.c:75 -#, c-format -msgid " - agno = %d\n" -msgstr " - agno = %d\n" - -#: ../repair/phase3.c:185 +#: ../repair/phase3.c:247 msgid " - process newly discovered inodes...\n" msgstr " - przetwarzanie nowo rozpoznanych i-wêz³ów...\n" -#: ../repair/phase4.c:128 ../repair/phase4.c:594 -#, c-format -msgid "couldn't read %s inode %llu\n" -msgstr "nie uda³o siê odczytaæ i-wêz³a %s %llu\n" - -#: ../repair/phase4.c:153 ../repair/phase4.c:336 ../repair/phase4.c:619 -#: ../repair/phase4.c:817 -#, c-format -msgid " - clearing existing \"%s\" inode\n" -msgstr " - czyszczenie istniej±cego i-wêz³± \"%s\"\n" - -#: ../repair/phase4.c:185 ../repair/phase4.c:652 -#, c-format -msgid " - marking entry \"%s\" to be deleted\n" -msgstr " - zaznaczenie wpisu \"%s\" do usuniêcia\n" - -#: ../repair/phase4.c:213 -#, c-format -msgid "couldn't map first leaf block of directory inode %llu\n" -msgstr "nie uda³o siê odwzorowaæ pierwszego bloku li¶cia i-wêz³a katalogu %llu\n" - -#: ../repair/phase4.c:242 -#, c-format -msgid "bad magic # (0x%x) for directory leaf block (bno %u fsbno %llu)\n" -msgstr "b³êdna liczba magiczna (0x%x) dla bloku li¶cia katalogu (bno %u fsbno %llu)\n" - -#: ../repair/phase4.c:379 ../repair/phase4.c:860 -#, c-format -msgid "could not read %s inode %llu\n" -msgstr "nie uda³o siê odczytaæ i-wêz³a %s %llu\n" - -#: ../repair/phase4.c:430 ../repair/phase4.c:912 -#, c-format -msgid " - deleting existing \"%s\" entry\n" -msgstr " - usuwanie istniej±cego wpisu \"%s\"\n" - -#: ../repair/phase4.c:684 -#, c-format -msgid "malloc failed (%u bytes) in longform2_delete_orphanage, ino %llu\n" -msgstr "malloc nie powiod³o siê (%u bajtów) w longform2_delete_orphanage, i-wêze³ %llu\n" - -#: ../repair/phase4.c:728 -#, c-format -msgid "bad magic # (0x%x) for directory data block (bno %u fsbno %llu)\n" -msgstr "b³êdna liczba magiczna (0x%x) dla bloku danych katalogu (bno %u fsbno %llu)\n" - -#: ../repair/phase4.c:988 -#, c-format -msgid "could not read buffer for root inode %llu (daddr %lld, size %d)\n" -msgstr "nie uda³o siê odczytaæ bufora dla g³ównego i-wêz³a %llu (daddr %lld, rozmiar %d)\n" - -#: ../repair/phase4.c:1034 -#, c-format -msgid "unknown version #%d in root inode\n" -msgstr "nieznana wersja #%d w g³ównym i-wê¼le\n" - -#: ../repair/phase4.c:1141 +#: ../repair/phase4.c:205 msgid "Phase 4 - check for duplicate blocks...\n" msgstr "Faza 4 - sprawdzanie powtórzonych bloków...\n" -#: ../repair/phase4.c:1142 +#: ../repair/phase4.c:206 msgid " - setting up duplicate extent list...\n" msgstr " - tworzenie listy powtórzonych fragmentów...\n" -#: ../repair/phase4.c:1154 +#: ../repair/phase4.c:220 msgid "root inode would be lost\n" msgstr "g³ówny i-wêze³ zosta³by utracony\n" -#: ../repair/phase4.c:1156 +#: ../repair/phase4.c:222 msgid "root inode lost\n" msgstr "g³ówny i-wêze³ utracony\n" -#: ../repair/phase4.c:1164 -msgid " - clear lost+found (if it exists) ...\n" -msgstr " - czyszczenie lost+found (je¶li istnieje)...\n" - -#: ../repair/phase4.c:1200 +#: ../repair/phase4.c:256 #, c-format msgid "unknown block state, ag %d, block %d\n" msgstr "nieznany stan bloku, ag %d, blok %d\n" -#: ../repair/phase4.c:1256 +#: ../repair/phase4.c:314 #, c-format msgid "unknown rt extent state, extent %llu\n" msgstr "nieznany stan fragmentu rt, fragment %llu\n" -#: ../repair/phase4.c:1317 +#: ../repair/phase4.c:375 msgid " - check for inodes claiming duplicate blocks...\n" msgstr " - szukanie i-wêz³ów odwo³uj±cych siê do powtórzonych bloków...\n" -#: ../repair/phase5.c:229 +#: ../repair/phase5.c:234 msgid "could not set up btree block array\n" msgstr "nie uda³o siê utworzyæ tablicy bloków b-drzewa\n" -#: ../repair/phase5.c:241 +#: ../repair/phase5.c:246 msgid "error - not enough free space in filesystem\n" msgstr "b³±d - za ma³o wolnego miejsca w systemie plików\n" -#: ../repair/phase5.c:464 +#: ../repair/phase5.c:473 #, c-format msgid "can't rebuild fs trees -- not enough free space on ag %u\n" msgstr "nie mo¿na przebudowaæ drzew systemu plików - za ma³o wolnego miejsca w ag %u\n" -#: ../repair/phase5.c:488 +#: ../repair/phase5.c:497 #, c-format msgid "ag %u - not enough free space to build freespace btrees\n" msgstr "ag %u - za ma³o wolnego miejsca na przebudowanie b-drzew wolnego miejsca\n" -#: ../repair/phase5.c:523 +#: ../repair/phase5.c:532 #, c-format msgid "not enough free blocks left to describe all free blocks in AG %u\n" msgstr "za ma³o wolnych bloków na opisanie wszystkich wolnych bloków w AG %u\n" -#: ../repair/phase5.c:1333 +#: ../repair/phase5.c:1360 #, c-format msgid "lost %d blocks in ag %u\n" msgstr "utracono %d bloków w ag %u\n" -#: ../repair/phase5.c:1336 +#: ../repair/phase5.c:1363 #, c-format msgid "thought we were going to lose %d blocks in ag %u, actually lost %d\n" msgstr "przewidywano utracenie %d bloków w ag %u, a utracono %d\n" -#: ../repair/phase5.c:1384 ../repair/xfs_repair.c:635 +#: ../repair/phase5.c:1411 ../repair/xfs_repair.c:794 msgid "couldn't get superblock\n" msgstr "nie uda³o siê pobraæ superbloku\n" -#: ../repair/phase5.c:1439 -msgid "Phase 5 - rebuild AG headers and trees...\n" -msgstr "Faza 5 - przebudowywanie nag³ówków i drzew AG...\n" - -#: ../repair/phase5.c:1488 +#: ../repair/phase5.c:1491 #, c-format msgid "unable to rebuild AG %u. Not enough free space in on-disk AG.\n" msgstr "nie uda³o siê przebudowaæ AG %u. Za ma³o wolnego miejsca w AG na dysku.\n" -#: ../repair/phase5.c:1528 +#: ../repair/phase5.c:1531 #, c-format msgid "unable to rebuild AG %u. No free space.\n" msgstr "nie uda³o siê przebudowaæ AG %u. Brak wolnego miejsca.\n" -#: ../repair/phase5.c:1555 +#: ../repair/phase5.c:1558 #, c-format msgid "lost %d blocks in agno %d, sorry.\n" msgstr "niestety utracono %d bloków w agno %d.\n" -#: ../repair/phase5.c:1619 +#: ../repair/phase5.c:1627 +msgid "Phase 5 - rebuild AG headers and trees...\n" +msgstr "Faza 5 - przebudowywanie nag³ówków i drzew AG...\n" + +#: ../repair/phase5.c:1658 +msgid "cannot alloc sb_icount_ag buffers\n" +msgstr "nie mo¿na przydzieliæ buforów sb_icount_ag\n" + +#: ../repair/phase5.c:1662 +msgid "cannot alloc sb_ifree_ag buffers\n" +msgstr "nie mo¿na przydzieliæ buforów sb_ifree_ag\n" + +#: ../repair/phase5.c:1666 +msgid "cannot alloc sb_fdblocks_ag buffers\n" +msgstr "nie mo¿na przydzieliæ buforów sb_fdblocks_ag\n" + +#: ../repair/phase5.c:1685 msgid " - generate realtime summary info and bitmap...\n" msgstr " - generowanie opisu i bitmapy realtime...\n" -#: ../repair/phase5.c:1625 +#: ../repair/phase5.c:1691 msgid " - reset superblock...\n" msgstr " - przestawianie superbloku...\n" -#: ../repair/phase6.c:133 +#: ../repair/phase6.c:134 #, c-format msgid "malloc failed in dir_hash_add (%u bytes)\n" msgstr "malloc nie powiod³o siê w dir_hash_add (%u bajtów)\n" -#: ../repair/phase6.c:188 +#: ../repair/phase6.c:189 msgid "ok" msgstr "ok" -#: ../repair/phase6.c:189 +#: ../repair/phase6.c:190 msgid "duplicate leaf" msgstr "powtórzony li¶æ" -#: ../repair/phase6.c:190 +#: ../repair/phase6.c:191 msgid "hash value mismatch" msgstr "niezgodno¶æ warto¶ci hasza" -#: ../repair/phase6.c:191 +#: ../repair/phase6.c:192 msgid "no data entry" msgstr "brak wpisu danych" -#: ../repair/phase6.c:192 +#: ../repair/phase6.c:193 msgid "no leaf entry" msgstr "brak wpisu li¶cia" -#: ../repair/phase6.c:193 +#: ../repair/phase6.c:194 msgid "bad stale count" msgstr "b³êdna liczba stale" -#: ../repair/phase6.c:201 +#: ../repair/phase6.c:202 #, c-format msgid "bad hash table for directory inode %llu (%s): " msgstr "b³êdna tablica haszuj±ca dla i-wêz³a katalogu %llu (%s): " -#: ../repair/phase6.c:204 +#: ../repair/phase6.c:205 msgid "rebuilding\n" msgstr "przebudowano\n" -#: ../repair/phase6.c:206 +#: ../repair/phase6.c:207 msgid "would rebuild\n" msgstr "zosta³aby przebudowana\n" -#: ../repair/phase6.c:242 +#: ../repair/phase6.c:243 msgid "calloc failed in dir_hash_init\n" msgstr "calloc nie powiod³o siê w dir_hash_init\n" -#: ../repair/phase6.c:402 +#: ../repair/phase6.c:398 msgid "ran out of disk space!\n" msgstr "brak miejsca na dysku!\n" -#: ../repair/phase6.c:404 +#: ../repair/phase6.c:400 #, c-format msgid "xfs_trans_reserve returned %d\n" msgstr "xfs_trans_reserve zwróci³o %d\n" -#: ../repair/phase6.c:433 ../repair/phase6.c:526 +#: ../repair/phase6.c:429 ../repair/phase6.c:522 #, c-format msgid "couldn't iget realtime bitmap inode -- error - %d\n" msgstr "nie uda³o siê wykonaæ iget dla i-wêz³a bitmapy realtime - b³±d %d\n" -#: ../repair/phase6.c:483 +#: ../repair/phase6.c:479 #, c-format msgid "couldn't allocate realtime bitmap, error = %d\n" msgstr "nie uda³o siê przydzieliæ bitmapy realtime, b³±d = %d\n" -#: ../repair/phase6.c:496 +#: ../repair/phase6.c:492 #, c-format msgid "allocation of the realtime bitmap failed, error = %d\n" msgstr "przydzielenie bitmapy realtime nie powiod³o siê, b³±d = %d\n" -#: ../repair/phase6.c:539 +#: ../repair/phase6.c:535 #, c-format msgid "couldn't map realtime bitmap block %llu, error = %d\n" msgstr "nie uda³o siê odwzorowaæ bloku bitmapy realtime %llu, b³±d = %d\n" -#: ../repair/phase6.c:552 +#: ../repair/phase6.c:548 #, c-format msgid "can't access block %llu (fsbno %llu) of realtime bitmap inode %llu\n" msgstr "brak dostêpu do bloku %llu (fsbno %llu) i-wêz³a bitmapy realtime %llu\n" -#: ../repair/phase6.c:595 ../repair/phase6.c:666 +#: ../repair/phase6.c:591 ../repair/phase6.c:662 #, c-format msgid "couldn't iget realtime summary inode -- error - %d\n" msgstr "nie uda³o siê wykonaæ iget dla i-wêz³a opisu realtime - b³±d %d\n" -#: ../repair/phase6.c:608 +#: ../repair/phase6.c:604 #, c-format msgid "couldn't map realtime summary inode block %llu, error = %d\n" msgstr "nie uda³o siê odwzorowaæ bloku i-wêz³a opisu realtime %llu, b³±d = %d\n" -#: ../repair/phase6.c:621 +#: ../repair/phase6.c:617 #, c-format msgid "can't access block %llu (fsbno %llu) of realtime summary inode %llu\n" msgstr "brak dostêpu do bloku %llu (fsbno %llu) i-wêz³a opisu realtime %llu\n" -#: ../repair/phase6.c:722 +#: ../repair/phase6.c:718 #, c-format msgid "couldn't allocate realtime summary inode, error = %d\n" msgstr "nie uda³o siê przydzieliæ i-wêz³a opisu realtime, b³±d = %d\n" -#: ../repair/phase6.c:735 +#: ../repair/phase6.c:731 #, c-format msgid "allocation of the realtime summary ino failed, error = %d\n" msgstr "przydzielenie i-wêz³a opisu realtime nie powiod³o siê, b³±d = %d\n" -#: ../repair/phase6.c:762 +#: ../repair/phase6.c:759 #, c-format msgid "could not iget root inode -- error - %d\n" msgstr "nie uda³o siê wykonaæ iget dla g³ównego i-wêz³a - b³±d %d\n" -#: ../repair/phase6.c:828 +#: ../repair/phase6.c:824 #, c-format -msgid "%d - couldn't iget root inode to make %s\n" -msgstr "%d - nie uda³o siê wykonaæ iget dla g³ównego wêz³a, aby zrobiæ %s\n" +msgid "%d - couldn't iget root inode to obtain %s\n" +msgstr "%d - nie uda³o siê wykonaæ iget dla g³ównego wêz³a, aby uzyskaæ %s\n" -#: ../repair/phase6.c:834 +#: ../repair/phase6.c:854 #, c-format msgid "%s inode allocation failed %d\n" msgstr "przydzielenie i-wêz³± %s nie powiod³o siê - %d\n" -#: ../repair/phase6.c:851 +#: ../repair/phase6.c:871 #, c-format -msgid "can't make %s, createname error %d, will try later\n" -msgstr "nie mo¿na zrobiæ %s, b³±d createname %d, spróbujê pó¼niej\n" +msgid "can't make %s, createname error %d\n" +msgstr "nie mo¿na zrobiæ %s, b³±d createname %d\n" -#: ../repair/phase6.c:869 +#: ../repair/phase6.c:890 #, c-format msgid "%s directory creation failed -- bmapf error %d\n" msgstr "tworzenie katalogu %s nie powiod³o siê - b³±d bmapf %d\n" -#: ../repair/phase6.c:906 +#: ../repair/phase6.c:930 #, c-format msgid "%d - couldn't iget orphanage inode\n" msgstr "%d - nie uda³o siê wykonaæ iget dla i-wêz³a sierociñca\n" -#: ../repair/phase6.c:911 +#: ../repair/phase6.c:944 #, c-format msgid "%d - couldn't iget disconnected inode\n" msgstr "%d - nie uda³o siê wykonaæ iget dla od³±czonego i-wêz³a\n" -#: ../repair/phase6.c:925 ../repair/phase6.c:964 ../repair/phase6.c:1015 -#: ../repair/phase6.c:1856 +#: ../repair/phase6.c:963 ../repair/phase6.c:1005 ../repair/phase6.c:1060 +#: ../repair/phase6.c:1885 #, c-format msgid "space reservation failed (%d), filesystem may be out of space\n" msgstr "nie uda³o siê zarezerwowaæ miejsca (%d), mo¿e brakowaæ miejsca w systemie plików\n" -#: ../repair/phase6.c:936 ../repair/phase6.c:976 ../repair/phase6.c:1025 +#: ../repair/phase6.c:974 ../repair/phase6.c:1017 ../repair/phase6.c:1070 #, c-format msgid "name create failed in %s (%d), filesystem may be out of space\n" msgstr "tworzenie nazwy nie powiod³o siê w %s (%d), mo¿e brakowaæ miejsca w systemie plików\n" -#: ../repair/phase6.c:945 +#: ../repair/phase6.c:986 #, c-format msgid "creation of .. entry failed (%d), filesystem may be out of space\n" msgstr "tworzenie wpisu .. nie powiod³o siê (%d), mo¿e brakowaæ miejsca w systemie plików\n" -#: ../repair/phase6.c:953 +#: ../repair/phase6.c:994 #, c-format msgid "bmap finish failed (err - %d), filesystem may be out of space\n" msgstr "zakoñczenie bmap nie powiod³o siê (b³±d %d), mo¿e brakowaæ miejsca w systemie plików\n" -#: ../repair/phase6.c:991 +#: ../repair/phase6.c:1035 #, c-format msgid "name replace op failed (%d), filesystem may be out of space\n" msgstr "operacja zast±pienia nazwy nie powiod³a siê (%d), mo¿e brakowaæ miejsca w systemie plików\n" -#: ../repair/phase6.c:998 ../repair/phase6.c:1034 ../repair/phase6.c:1879 +#: ../repair/phase6.c:1042 ../repair/phase6.c:1079 ../repair/phase6.c:1908 #, c-format msgid "bmap finish failed (%d), filesystem may be out of space\n" msgstr "zakoñczenie bmap nie powiod³o siê (%d), mo¿e brakowaæ miejsca w systemie plików\n" -#: ../repair/phase6.c:1076 ../repair/phase6.c:1238 ../repair/phase6.c:1656 +#: ../repair/phase6.c:1120 ../repair/phase6.c:1277 ../repair/phase6.c:1701 msgid "dir" msgstr "katalogu" -#: ../repair/phase6.c:1085 ../repair/phase6.c:1089 +#: ../repair/phase6.c:1129 ../repair/phase6.c:1133 #, c-format msgid "can't map block %d in %s inode %llu, xfs_bmapi returns %d, nmap = %d\n" msgstr "nie mo¿na odwzorowaæ bloku %d w i-wê¼le %s %llu, xfs_bmapi zwraca %d, nmap = %d\n" -#: ../repair/phase6.c:1097 ../repair/phase6.c:1100 ../repair/phase6.c:1735 -#: ../repair/phase6.c:1739 +#: ../repair/phase6.c:1141 ../repair/phase6.c:1144 ../repair/phase6.c:1780 +#: ../repair/phase6.c:1784 #, c-format msgid "block %d in %s ino %llu doesn't exist\n" msgstr "blok %d w i-wê¼le %s %llu nie istnieje\n" -#: ../repair/phase6.c:1160 ../repair/phase6.c:1164 +#: ../repair/phase6.c:1199 ../repair/phase6.c:1203 #, c-format msgid "can't map block %d in %s ino %llu, xfs_bmapi returns %d, nmap = %d\n" msgstr "nie mo¿na odwzorowaæ bloku %d w i-wê¼le %s %llu, xfs_bmapi zwraca %d, nmap = %d\n" -#: ../repair/phase6.c:1172 ../repair/phase6.c:1176 +#: ../repair/phase6.c:1211 ../repair/phase6.c:1215 #, c-format msgid "block %d in %s inode %llu doesn't exist\n" msgstr "blok %d w i-wê¼le %s %llu nie istnieje\n" -#: ../repair/phase6.c:1256 +#: ../repair/phase6.c:1295 #, c-format msgid "can't read directory inode %llu (leaf) block %u (fsbno %llu)\n" msgstr "nie mo¿na odczytaæ i-wêz³a katalogu %llu bloku (li¶cia) %u (fsbno %llu)\n" -#: ../repair/phase6.c:1298 +#: ../repair/phase6.c:1337 #, c-format msgid "can't map block %d in directory %llu, xfs_bmapi returns %d, nmap = %d\n" msgstr "nie mo¿na odwzorowaæ bloku %d w katalogu %llu, xfs_bmapi zwraca %d, nmap = %d\n" -#: ../repair/phase6.c:1303 +#: ../repair/phase6.c:1342 #, c-format msgid "%s ino %llu block %d doesn't exist\n" msgstr "w i-wê¼le %s %llu blok %d nie istnieje\n" -#: ../repair/phase6.c:1358 +#: ../repair/phase6.c:1397 #, c-format msgid "" "couldn't remove bogus entry \"%s\" in\n" @@ -7432,467 +7483,682 @@ msgstr "" "nie uda³o siê usun±æ niepoprawnego wpisu \"%s\"\n" "\tw i-wê¼le katalogu %llu, b³±d = %d\n" -#: ../repair/phase6.c:1496 -#, c-format -msgid "entry \"%s\" in dir inode %llu points to non-existent inode, " -msgstr "wpis \"%s\" w i-wê¼le katalogu %llu wskazuje na nie istniej±cy i-wêzê³, " +#: ../repair/phase6.c:1421 +msgid ", marking entry to be junked\n" +msgstr ", zaznaczono wpis do wyrzucenia\n" -#: ../repair/phase6.c:1502 ../repair/phase6.c:2245 -msgid "marking entry to be junked\n" -msgstr "zaznaczono wpis do wyrzucenia\n" +#: ../repair/phase6.c:1425 +msgid ", would junk entry\n" +msgstr ", wpis zosta³by wyrzucony\n" -#: ../repair/phase6.c:1504 ../repair/phase6.c:2247 ../repair/phase6.c:2787 -#: ../repair/phase6.c:3205 -msgid "would junk entry\n" -msgstr "wpis zosta³by wyrzucony\n" +#: ../repair/phase6.c:1540 +#, c-format +msgid "entry \"%s\" in dir inode %llu points to non-existent inode %llu" +msgstr "wpis \"%s\" w i-wê¼le katalogu %llu wskazuje na nie istniej±cy i-wêzê³ %llu" -#: ../repair/phase6.c:1524 +#: ../repair/phase6.c:1558 #, c-format msgid "entry \"%s\" in dir inode %llu points to free inode %llu" msgstr "wpis \"%s\" w i-wê¼le katalogu %llu wskazuje na wolny i-wêze³ %llu" -#: ../repair/phase6.c:1531 ../repair/phase6.c:1557 ../repair/phase6.c:2170 -#: ../repair/phase6.c:2270 ../repair/phase6.c:2829 ../repair/phase6.c:3248 -msgid ", marking entry to be junked\n" -msgstr ", zaznaczono wpis do wyrzucenia\n" - -#: ../repair/phase6.c:1538 ../repair/phase6.c:1563 ../repair/phase6.c:2174 -#: ../repair/phase6.c:2276 ../repair/phase6.c:2833 ../repair/phase6.c:3252 -msgid ", would junk entry\n" -msgstr ", wpis zosta³by wyrzucony\n" +#: ../repair/phase6.c:1574 ../repair/phase6.c:2245 ../repair/phase6.c:2859 +#: ../repair/phase6.c:3264 +#, c-format +msgid "%s (ino %llu) in root (%llu) is not a directory" +msgstr "%s (i-wêze³ %llu) w katalogu g³ównym (%llu) nie jest katalogiem" -#: ../repair/phase6.c:1551 ../repair/phase6.c:2165 ../repair/phase6.c:2823 -#: ../repair/phase6.c:3242 +#: ../repair/phase6.c:1596 ../repair/phase6.c:2266 ../repair/phase6.c:2876 +#: ../repair/phase6.c:3281 #, c-format msgid "entry \"%s\" (ino %llu) in dir %llu is a duplicate name" msgstr "wpis \"%s\" (i-wêze³ %llu) w katalogu %llu jest powtórzon± nazw±" -#: ../repair/phase6.c:1589 +#: ../repair/phase6.c:1627 #, c-format msgid "entry \"%s\" in dir %llu points to an already connected dir inode %llu,\n" msgstr "wpis \"%s\" w katalogu %llu wskazuje na ju¿ pod³±czony i-wêze³ katalogu %llu,\n" -#: ../repair/phase6.c:1600 +#: ../repair/phase6.c:1636 ../repair/phase6.c:2360 ../repair/phase6.c:2910 +#: ../repair/phase6.c:3311 +#, c-format +msgid "entry \"%s\" in dir ino %llu doesn't have a .. entry, will set it in ino %llu.\n" +msgstr "wpis \"%s\" w i-wê¼le katalogu %llu nie ma wpisu .., zostanie ustawiony w i-wê¼le %llu.\n" + +#: ../repair/phase6.c:1644 #, c-format msgid "entry \"%s\" in dir ino %llu not consistent with .. value (%llu) in ino %llu,\n" msgstr "wpis \"%s\" w i-wê¼le katalogu %llu niespójny z warto¶ci± .. (%llu) w i-wê¼le %llu,\n" -#: ../repair/phase6.c:1613 ../repair/phase6.c:2321 +#: ../repair/phase6.c:1659 ../repair/phase6.c:2382 #, c-format msgid "\twill clear entry \"%s\"\n" msgstr "\twpis \"%s\" zostanie wyczyszczony\n" -#: ../repair/phase6.c:1616 ../repair/phase6.c:2324 +#: ../repair/phase6.c:1662 ../repair/phase6.c:2385 #, c-format msgid "\twould clear entry \"%s\"\n" msgstr "\twpis \"%s\" zosta³by wyczyszczony\n" -#: ../repair/phase6.c:1661 +#: ../repair/phase6.c:1706 #, c-format msgid "cannot map block 0 of directory inode %llu\n" msgstr "nie mo¿na odwzorowaæ bloku 0 i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:1685 +#: ../repair/phase6.c:1730 #, c-format msgid "bad magic # (0x%x) for dir ino %llu leaf block (bno %u fsbno %llu)\n" msgstr "b³êdna liczba magiczna (0x%x) dla bloku li¶cia i-wêz³a katalogu %llu (bno %u fsbno %llu)\n" -#: ../repair/phase6.c:1723 ../repair/phase6.c:1727 +#: ../repair/phase6.c:1768 ../repair/phase6.c:1772 #, c-format msgid "can't map leaf block %d in dir %llu, xfs_bmapi returns %d, nmap = %d\n" msgstr "nie mo¿na odwzorowaæ bloku li¶cia %d w katalogu %llu, xfs_bmapi zwraca %d, nmap = %d\n" -#: ../repair/phase6.c:1778 +#: ../repair/phase6.c:1823 #, c-format msgid "rebuilding directory inode %llu\n" msgstr "przebudowywanie i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:1806 +#: ../repair/phase6.c:1848 #, c-format msgid "xfs_bmap_last_offset failed -- error - %d\n" msgstr "xfs_bmap_last_offset nie powiod³o siê - b³±d %d\n" -#: ../repair/phase6.c:1812 -#, c-format -msgid "couldn't iget parent inode %llu -- error - %d\n" -msgstr "nie uda³o siê wykonaæ iget dla nadrzêdnego i-wêz³a %llu - b³±d %d\n" - -#: ../repair/phase6.c:1818 -#, c-format -msgid "couldn't iget lost+found inode %llu -- error - %d\n" -msgstr "nie uda³o siê wykonaæ iget dla i-wêz³a lost+found %llu - b³±d %d\n" - -#: ../repair/phase6.c:1827 +#: ../repair/phase6.c:1856 #, c-format msgid "xfs_bunmapi failed -- error - %d\n" msgstr "xfs_bunmapi nie powiod³o siê - b³±d %d\n" -#: ../repair/phase6.c:1869 +#: ../repair/phase6.c:1898 #, c-format msgid "name create failed in ino %llu (%d), filesystem may be out of space\n" msgstr "tworzenie nazwy nie powiod³o siê w i-wê¼le %llu (%d), mo¿e brakowaæ miejsca w systemie plików\n" -#: ../repair/phase6.c:1935 +#: ../repair/phase6.c:1964 #, c-format msgid "shrink_inode failed inode %llu block %u\n" msgstr "shrink_inode nie powiod³o siê dla i-wêz³a %llu bloku %u\n" -#: ../repair/phase6.c:2017 +#: ../repair/phase6.c:2045 #, c-format msgid "realloc failed in longform_dir2_entry_check_data (%u bytes)\n" msgstr "realloc nie powiod³o siê w longform_dir2_entry_check_data (%u bajtów)\n" -#: ../repair/phase6.c:2076 +#: ../repair/phase6.c:2104 #, c-format msgid "empty data block %u in directory inode %llu: " msgstr "pusty blok danych %u w i-wê¼le katalogu %llu: " -#: ../repair/phase6.c:2079 +#: ../repair/phase6.c:2107 #, c-format msgid "corrupt block %u in directory inode %llu: " msgstr "uszkodzony blok %u w i-wê¼le katalogu %llu: " -#: ../repair/phase6.c:2083 +#: ../repair/phase6.c:2111 msgid "junking block\n" msgstr "wyrzucono blok\n" -#: ../repair/phase6.c:2086 +#: ../repair/phase6.c:2114 msgid "would junk block\n" msgstr "blok zosta³by wyrzucony\n" -#: ../repair/phase6.c:2109 +#: ../repair/phase6.c:2137 #, c-format msgid "bad directory block magic # %#x for directory inode %llu block %d: " msgstr "b³êdna liczba magiczna bloku katalogu %#x dla i-wêz³a katalogu %llu bloku %d: " -#: ../repair/phase6.c:2113 +#: ../repair/phase6.c:2141 #, c-format msgid "fixing magic # to %#x\n" msgstr "poprawiono liczbê magiczn± na %#x\n" -#: ../repair/phase6.c:2117 +#: ../repair/phase6.c:2145 #, c-format msgid "would fix magic # to %#x\n" msgstr "liczba magiczna zosta³aby poprawiona na %#x\n" -#: ../repair/phase6.c:2138 +#: ../repair/phase6.c:2166 #, c-format msgid "directory inode %llu block %u has consecutive free entries: " msgstr "i-wêze³ katalogu %llu blok %u ma kolejne wolne wpisy: " -#: ../repair/phase6.c:2142 +#: ../repair/phase6.c:2170 msgid "joining together\n" msgstr "po³±czono\n" -#: ../repair/phase6.c:2151 +#: ../repair/phase6.c:2179 msgid "would join together\n" msgstr "zosta³yby po³±czone\n" -#: ../repair/phase6.c:2239 +#: ../repair/phase6.c:2210 #, c-format -msgid "entry \"%s\" in directory inode %llu points to non-existent inode, " -msgstr "wpis \"%s\" w i-wê¼le katalogu %llu wskazuje na nie istniej±cy i-wêze³, " +msgid "entry \"%s\" in directory inode %llu points to non-existent inode %llu" +msgstr "wpis \"%s\" w i-wê¼le katalogu %llu wskazuje na nie istniej±cy i-wêze³ %llu" -#: ../repair/phase6.c:2264 +#: ../repair/phase6.c:2227 #, c-format msgid "entry \"%s\" in directory inode %llu points to free inode %llu" msgstr "wpis \"%s\" w i-wê¼le katalogu %llu wskazuje na wolny i-wêze³ %llu" -#: ../repair/phase6.c:2300 +#: ../repair/phase6.c:2290 #, c-format -msgid "entry \"%s\" in dir %llu points to an already connected directory inode %llu,\n" -msgstr "wpis \"%s\" w katalogu %llu wskazuje na ju¿ pod³±czony i-wêze³ katalogu %llu,\n" +msgid "entry \"%s\" (ino %llu) in dir %llu is not in the the first block" +msgstr "wpis \"%s\" (i-wêze³ %llu) w katalogu %llu nie jest w pierwszym bloku" -#: ../repair/phase6.c:2310 +#: ../repair/phase6.c:2316 #, c-format -msgid "entry \"%s\" in dir inode %llu inconsistent with .. value (%llu) in ino %llu,\n" -msgstr "wpis \"%s\" w i-wê¼le katalogu %llu niespójny z warto¶ci± .. (%llu) w i-wê¼le %llu,\n" +msgid "entry \"%s\" in dir %llu is not the first entry" +msgstr "wpis \"%s\" w katalogu %llu nie jest pierwszym wpisem" + +#: ../repair/phase6.c:2352 +#, c-format +msgid "entry \"%s\" in dir %llu points to an already connected directory inode %llu\n" +msgstr "wpis \"%s\" w katalogu %llu wskazuje na ju¿ pod³±czony i-wêze³ katalogu %llu\n" + +#: ../repair/phase6.c:2369 +#, c-format +msgid "entry \"%s\" in dir inode %llu inconsistent with .. value (%llu) in ino %llu\n" +msgstr "wpis \"%s\" w i-wê¼le katalogu %llu niespójny z warto¶ci± .. (%llu) w i-wê¼le %llu\n" -#: ../repair/phase6.c:2379 ../repair/phase6.c:2459 +#: ../repair/phase6.c:2440 ../repair/phase6.c:2520 #, c-format msgid "leaf block %u for directory inode %llu bad header\n" msgstr "b³êdny nag³ówek bloku li¶cia %u dla i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:2397 +#: ../repair/phase6.c:2458 #, c-format msgid "leaf block %u for directory inode %llu bad tail\n" msgstr "b³êdna koñcówka bloku li¶cia %u dla i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:2436 +#: ../repair/phase6.c:2497 #, c-format msgid "can't read leaf block %u for directory inode %llu\n" msgstr "nie mo¿na odczytaæ bloku li¶cia %u dla i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:2448 +#: ../repair/phase6.c:2509 #, c-format msgid "unknown magic number %#x for block %u in directory inode %llu\n" msgstr "nieznana liczba magiczna %#x dla bloku %u w i-wê¼le katalogu %llu\n" -#: ../repair/phase6.c:2483 +#: ../repair/phase6.c:2544 #, c-format msgid "can't read freespace block %u for directory inode %llu\n" msgstr "nie mo¿na odczytaæ bloku wolnego miejsca %u dla i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:2496 +#: ../repair/phase6.c:2557 #, c-format msgid "free block %u for directory inode %llu bad header\n" msgstr "b³êdny nag³ówek wolnego bloku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:2509 +#: ../repair/phase6.c:2570 #, c-format msgid "free block %u entry %i for directory ino %llu bad\n" msgstr "b³êdny wpis wolnego bloku %u numer %i dla i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:2518 +#: ../repair/phase6.c:2579 #, c-format msgid "free block %u for directory inode %llu bad nused\n" msgstr "b³êdna liczba nused w wolnym bloku %u dla i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:2529 +#: ../repair/phase6.c:2590 #, c-format msgid "missing freetab entry %u for directory inode %llu\n" msgstr "brak wpisu freetab %u dla i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:2571 +#: ../repair/phase6.c:2633 #, c-format msgid "malloc failed in longform_dir2_entry_check (%u bytes)\n" msgstr "malloc nie powiod³o siê w longform_dir2_entry_check (%u bajtów)\n" -#: ../repair/phase6.c:2601 +#: ../repair/phase6.c:2663 +#, c-format +msgid "realloc failed in longform_dir2_entry_check (%u bytes)\n" +msgstr "realloc nie powiod³o siê w longform_dir2_entry_check (%u bajtów)\n" + +#: ../repair/phase6.c:2669 #, c-format msgid "can't read data block %u for directory inode %llu\n" msgstr "nie mo¿na odczytaæ bloku danych %u dla i-wêz³a katalogu %llu\n" -#: ../repair/phase6.c:2699 +#: ../repair/phase6.c:2767 #, c-format msgid "shortform dir inode %llu has null data entries \n" msgstr "i-wêze³ krótkiego katalogu %llu ma zerowe wpisy danych\n" -#: ../repair/phase6.c:2785 -#, c-format -msgid "entry \"%s\" in shortform dir %llu references non-existent ino %llu\n" -msgstr "wpis \"%s\" w krótkim katalogu %llu odwo³uje siê do nie istniej±cego i-wêz³a %llu\n" - -#: ../repair/phase6.c:2807 +#: ../repair/phase6.c:2834 #, c-format -msgid "entry \"%s\" in shortform dir inode %llu points to free inode %llu\n" -msgstr "wpis \"%s\" w i-wê¼le krótkiego katalogu %llu wskazuje na wolny i-wêze³ %llu\n" +msgid "entry \"%s\" in shortform dir %llu references non-existent ino %llu" +msgstr "wpis \"%s\" w krótkim katalogu %llu odwo³uje siê do nie istniej±cego i-wêz³a %llu" -#: ../repair/phase6.c:2813 ../repair/phase6.c:2911 ../repair/phase6.c:3232 -#: ../repair/phase6.c:3327 +#: ../repair/phase6.c:2847 #, c-format -msgid "would junk entry \"%s\"\n" -msgstr "wpis \"%s\" zosta³by wyrzucony\n" +msgid "entry \"%s\" in shortform dir inode %llu points to free inode %llu" +msgstr "wpis \"%s\" w i-wê¼le krótkiego katalogu %llu wskazuje na wolny i-wêze³ %llu" -#: ../repair/phase6.c:2857 +#: ../repair/phase6.c:2901 #, c-format msgid "entry \"%s\" in dir %llu references already connected dir ino %llu,\n" msgstr "wpis \"%s\" w katalogu %llu odwo³uje siê do ju¿ pod³±czonego i-wêz³a katalogu %llu,\n" -#: ../repair/phase6.c:2869 +#: ../repair/phase6.c:2918 #, c-format -msgid "entry \"%s\" in dir %llu not consistent with .. value (%llu) in dir ino %llu,\n" -msgstr "wpis \"%s\" w katalogu %llu niespójny z warto¶ci± .. (%llu) w i-wê¼le katalogu %llu,\n" +msgid "entry \"%s\" in dir %llu not consistent with .. value (%llu) in dir ino %llu" +msgstr "wpis \"%s\" w katalogu %llu niespójny z warto¶ci± .. (%llu) w i-wê¼le katalogu %llu" -#: ../repair/phase6.c:2950 ../repair/phase6.c:3045 ../repair/phase6.c:3382 +#: ../repair/phase6.c:2960 ../repair/phase6.c:3362 +msgid "junking entry\n" +msgstr "wyrzucono wpis\n" + +#: ../repair/phase6.c:2964 ../repair/phase6.c:3366 +msgid "would junk entry\n" +msgstr "wpis zosta³by wyrzucony\n" + +#: ../repair/phase6.c:3003 ../repair/phase6.c:3098 ../repair/phase6.c:3421 #, c-format msgid "setting size to %lld bytes to reflect junked entries\n" msgstr "ustawiono rozmiar na %lld aby odzwierciedla³ wyrzucone wpisy\n" -#: ../repair/phase6.c:3202 +#: ../repair/phase6.c:3237 #, c-format -msgid "entry \"%s\" in shortform directory %llu references non-existent inode %llu\n" -msgstr "wpis \"%s\" w krótkim katalogu %llu odwo³uje siê do nie istniej±cego i-wêz³± %llu\n" +msgid "entry \"%s\" in shortform directory %llu references non-existent inode %llu" +msgstr "wpis \"%s\" w krótkim katalogu %llu odwo³uje siê do nie istniej±cego i-wêz³± %llu" -#: ../repair/phase6.c:3224 +#: ../repair/phase6.c:3251 #, c-format -msgid "entry \"%s\" in shortform directory inode %llu points to free inode %llu\n" -msgstr "wpis \"%s\" w i-wê¼le krótkiego katalogu %llu wskazuje na wolny i-wêze³ %llu\n" +msgid "entry \"%s\" in shortform directory inode %llu points to free inode %llu" +msgstr "wpis \"%s\" w i-wê¼le krótkiego katalogu %llu wskazuje na wolny i-wêze³ %llu" -#: ../repair/phase6.c:3270 +#: ../repair/phase6.c:3301 #, c-format msgid "entry \"%s\" in directory inode %llu references already connected inode %llu,\n" msgstr "wpis \"%s\" w i-wê¼le katalogu %llu odwo³uje siê do ju¿ pod³±czonego i-wêz³a %llu,\n" -#: ../repair/phase6.c:3283 +#: ../repair/phase6.c:3319 #, c-format msgid "entry \"%s\" in directory inode %llu not consistent with .. value (%llu) in inode %llu,\n" msgstr "wpis \"%s\" w i-wê¼le katalogu %llu niespójny z warto¶ci± .. (%llu) w i-wê¼le %llu,\n" -#: ../repair/phase6.c:3351 +#: ../repair/phase6.c:3390 #, c-format msgid "would fix i8count in inode %llu\n" msgstr "i8count w i-wê¼le %llu zosta³oby poprawione\n" -#: ../repair/phase6.c:3363 +#: ../repair/phase6.c:3402 #, c-format msgid "fixing i8count in inode %llu\n" msgstr "poprawiono i8count w i-wê¼le %llu\n" -#: ../repair/phase6.c:3427 ../repair/phase6.c:3431 ../repair/phase7.c:249 +#: ../repair/phase6.c:3458 ../repair/phase6.c:3461 ../repair/phase7.c:83 #, c-format msgid "couldn't map inode %llu, err = %d\n" msgstr "nie uda³o siê odwzorowaæ i-wêz³a %llu, b³±d = %d\n" -#: ../repair/phase6.c:3560 -#, c-format -msgid "re-entering %s into root directory\n" -msgstr "ponowne wprowadzanie %s do g³ównego katalogu\n" - -#: ../repair/phase6.c:3577 -#, c-format -msgid "can't make %s entry in root inode %llu, createname error %d\n" -msgstr "nie mo¿na utworzyæ wpisu %s w g³ównym katalogu %llu, b³±d createname %d\n" - -#: ../repair/phase6.c:3602 +#: ../repair/phase6.c:3582 msgid "recreating root directory .. entry\n" msgstr "ponowne tworzenie wpisu .. g³ównego katalogu\n" -#: ../repair/phase6.c:3625 +#: ../repair/phase6.c:3601 #, c-format msgid "can't make \"..\" entry in root inode %llu, createname error %d\n" msgstr "nie mo¿na utworzyæ wpisu \"..\" w i-wê¼le g³ównego katalogu %llu, b³±d createname %d\n" -#: ../repair/phase6.c:3638 +#: ../repair/phase6.c:3613 msgid "would recreate root directory .. entry\n" msgstr "wpis .. g³ównego katalogu zosta³by ponownie utworzony\n" -#: ../repair/phase6.c:3717 +#: ../repair/phase6.c:3690 #, c-format msgid "would create missing \".\" entry in dir ino %llu\n" msgstr "brakuj±cy wpis \".\" w i-wê¼le katalogu %llu zosta³by utworzony\n" -#: ../repair/phase6.c:3724 +#: ../repair/phase6.c:3696 #, c-format msgid "creating missing \".\" entry in dir ino %llu\n" msgstr "tworzenie brakuj±cego wpisu \".\" w i-wê¼le katalogu %llu\n" -#: ../repair/phase6.c:3749 +#: ../repair/phase6.c:3720 #, c-format msgid "can't make \".\" entry in dir ino %llu, createname error %d\n" msgstr "nie mo¿na utworzyæ wpisu \".\" w i-wê¼le katalogu %llu, b³±d createname %d\n" -#: ../repair/phase6.c:3870 +#: ../repair/phase6.c:3811 +#, c-format +msgid "disconnected dir inode %llu, " +msgstr "od³±czony i-wêze³ katalogu %llu, " + +#: ../repair/phase6.c:3813 +#, c-format +msgid "disconnected inode %llu, " +msgstr "od³±czony i-wêze³ %llu, " + +#: ../repair/phase6.c:3817 +#, c-format +msgid "moving to %s\n" +msgstr "przeniesiono do %s\n" + +#: ../repair/phase6.c:3820 +#, c-format +msgid "would move to %s\n" +msgstr "zosta³by przeniesiony do %s\n" + +#: ../repair/phase6.c:3894 msgid "Phase 6 - check inode connectivity...\n" msgstr "Faza 6 - sprawdzanie ³±czno¶ci i-wêz³ów...\n" -#: ../repair/phase6.c:3889 +#: ../repair/phase6.c:3913 msgid "reinitializing root directory\n" msgstr "ponowne inicjowanie g³ównego katalogu\n" -#: ../repair/phase6.c:3894 +#: ../repair/phase6.c:3918 msgid "would reinitialize root directory\n" msgstr "g³ówny katalog zosta³by ponownie zainicjowany\n" -#: ../repair/phase6.c:3900 +#: ../repair/phase6.c:3924 msgid "reinitializing realtime bitmap inode\n" msgstr "ponowne inicjowanie i-wêz³a bitmapy realtime\n" -#: ../repair/phase6.c:3904 +#: ../repair/phase6.c:3928 msgid "would reinitialize realtime bitmap inode\n" msgstr "i-wêze³ bitmapy realtime zosta³by ponownie zainicjowany\n" -#: ../repair/phase6.c:3910 +#: ../repair/phase6.c:3934 msgid "reinitializing realtime summary inode\n" msgstr "ponowne inicjowanie i-wêz³a opisu realtime\n" -#: ../repair/phase6.c:3914 +#: ../repair/phase6.c:3938 msgid "would reinitialize realtime summary inode\n" msgstr "i-wêze³ opisu realtime zosta³by ponownie zainicjowany\n" -#: ../repair/phase6.c:3920 +#: ../repair/phase6.c:3944 msgid " - resetting contents of realtime bitmap and summary inodes\n" msgstr " - przestawianie zawarto¶ci i-wêz³ów bitmapy i opisu realtime\n" -#: ../repair/phase6.c:3923 ../repair/phase6.c:3928 +#: ../repair/phase6.c:3947 ../repair/phase6.c:3952 msgid "Warning: realtime bitmap may be inconsistent\n" msgstr "Uwaga: bitmapa realtime mo¿e byæ niespójna\n" -#: ../repair/phase6.c:3936 +#: ../repair/phase6.c:3958 +msgid " - traversing filesystem ...\n" +msgstr " - przechodzenie systemu plików...\n" + +#: ../repair/phase6.c:3976 +msgid " - traversal finished ...\n" +msgstr " - przechodzenie zakoñczone...\n" + +#: ../repair/phase6.c:3977 #, c-format -msgid " - ensuring existence of %s directory\n" -msgstr " - zapewnianie istnienia katalogu %s\n" +msgid " - moving disconnected inodes to %s ...\n" +msgstr " - przenoszenie od³±czonych i-wêz³ów do %s...\n" -#: ../repair/phase6.c:3949 -msgid " - traversing filesystem starting at / ... \n" -msgstr " - przechodzenie systemu plików pocz±wszy od / ...\n" +#: ../repair/phase7.c:43 +#, c-format +msgid "resetting inode %llu nlinks from %d to %d\n" +msgstr "przestawiono nlinks i-wêz³a %llu z %d na %d\n" -#: ../repair/phase6.c:3958 -msgid " - traversal finished ... \n" -msgstr " - przechodzenie zakoñczone...\n" +#: ../repair/phase7.c:49 +#, c-format +msgid "nlinks %d will overflow v1 ino, ino %llu will be converted to version 2\n" +msgstr "nlinks %d przepe³ni i-wêze³ v1, i-wêze³ %llu bêdzie skonwertowany do wersji 2\n" -#: ../repair/phase6.c:3963 -msgid " - root inode lost, cannot make new one in no modify mode ... \n" -msgstr " - utracony g³ówny i-wêze³, nie mo¿na utworzyæ nowego w trybie bez modyfikacji...\n" +#: ../repair/phase7.c:55 +#, c-format +msgid "would have reset inode %llu nlinks from %d to %d\n" +msgstr "nlinks i-wêz³a %llu zosta³oby przestawione z %d na %d\n" -#: ../repair/phase6.c:3965 -msgid " - skipping filesystem traversal from / ... \n" -msgstr " - pominiêto przechodzenie systemu plików od / ...\n" +#: ../repair/phase7.c:87 +#, c-format +msgid "couldn't map inode %llu, err = %d, can't compare link counts\n" +msgstr "nie uda³o siê odwzorowaæ i-wêz³a %llu, b³±d %d, nie mo¿na porównaæ liczby dowi±zañ\n" -#: ../repair/phase6.c:3968 -msgid " - traversing all unattached subtrees ... \n" -msgstr " - przechodzenie wszystkich niepod³±czonych poddrzew...\n" +#: ../repair/phase7.c:126 +msgid "Phase 7 - verify and correct link counts...\n" +msgstr "Faza 7 - sprawdzanie i poprawianie liczby dowi±zañ...\n" -#: ../repair/phase6.c:4019 -msgid " - traversals finished ... \n" -msgstr " - przechodzenie zakoñczone...\n" +#: ../repair/phase7.c:128 +msgid "Phase 7 - verify link counts...\n" +msgstr "Faza 7 - sprawdzanie liczby dowi±zañ...\n" -#: ../repair/phase6.c:4024 -msgid " - moving disconnected inodes to lost+found ... \n" -msgstr " - przenoszenie od³±czonych i-wêz³ów do lost+found...\n" +#: ../repair/prefetch.c:460 +msgid "prefetch corruption\n" +msgstr "uszkodzenie prefetch\n" -#: ../repair/phase6.c:4048 +#: ../repair/prefetch.c:617 ../repair/prefetch.c:713 #, c-format -msgid "disconnected dir inode %llu, " -msgstr "od³±czony i-wêze³ katalogu %llu, " +msgid "failed to create prefetch thread: %s\n" +msgstr "nie uda³o siê utworzyæ w±tku prefetch: %s\n" + +#: ../repair/progress.c:16 +msgid "inodes" +msgstr "i-wêz³ów" + +#: ../repair/progress.c:18 +msgid "blocks" +msgstr "bloków" -#: ../repair/phase6.c:4052 +#: ../repair/progress.c:20 +msgid "directories" +msgstr "katalogów" + +#: ../repair/progress.c:22 +msgid "allocation groups" +msgstr "grup alokacji" + +#: ../repair/progress.c:24 +msgid "AGI unlinked buckets" +msgstr "od³±czonych kube³ków AGI" + +#: ../repair/progress.c:26 +msgid "extents" +msgstr "fragmentów" + +#: ../repair/progress.c:28 +msgid "realtime extents" +msgstr "fragmentów realtime" + +#: ../repair/progress.c:30 +msgid "unlinked lists" +msgstr "od³±czonych list" + +#: ../repair/progress.c:37 #, c-format -msgid "disconnected inode %llu, " -msgstr "od³±czony i-wêze³ %llu, " +msgid " - %02d:%02d:%02d: %s - %llu of %llu %s done\n" +msgstr " - %02d:%02d:%02d: %s - sprawdzono %llu z %llu %s\n" -#: ../repair/phase6.c:4055 +#: ../repair/progress.c:39 #, c-format -msgid "moving to %s\n" -msgstr "przeniesiono do %s\n" +msgid " - %02d:%02d:%02d: %s - %llu %s done\n" +msgstr " - %02d:%02d:%02d: %s - sprawdzono %llu %s\n" + +#: ../repair/progress.c:51 +msgid "scanning filesystem freespace" +msgstr "przeszukiwanie wolnego miejsca w systemie plików" + +#: ../repair/progress.c:53 +msgid "scanning agi unlinked lists" +msgstr "przeszukiwanie od³±czonych list agi" + +#: ../repair/progress.c:55 +msgid "check uncertain AG inodes" +msgstr "sprawdzanie niepewnych i-wêz³ów AG" + +#: ../repair/progress.c:57 +msgid "process known inodes and inode discovery" +msgstr "przetwarzanie znanych i-wêz³ów i rozpoznawanie i-wêz³ów" + +#: ../repair/progress.c:59 +msgid "process newly discovered inodes" +msgstr "przetwarzanie nowo rozpoznanych i-wêz³ów" + +#: ../repair/progress.c:61 +msgid "setting up duplicate extent list" +msgstr "tworzenie listy powtórzonych fragmentów" + +#: ../repair/progress.c:63 +msgid "initialize realtime bitmap" +msgstr "inicjowanie bitmapy realtime" + +#: ../repair/progress.c:65 +msgid "reset realtime bitmaps" +msgstr "ponowne tworzenie bitmapy realtime" + +#: ../repair/progress.c:67 +msgid "check for inodes claiming duplicate blocks" +msgstr "szukanie i-wêz³ów odwo³uj±cych siê do powtórzonych bloków" + +#: ../repair/progress.c:69 +msgid "rebuild AG headers and trees" +msgstr "przebudowywanie nag³ówków i drzew AG" + +#: ../repair/progress.c:71 +msgid "traversing filesystem" +msgstr "przechodzenie systemu plików" + +#: ../repair/progress.c:73 +msgid "traversing all unattached subtrees" +msgstr "przechodzenie wszystkich od³±czonych poddrzew" + +#: ../repair/progress.c:75 +msgid "moving disconnected inodes to lost+found" +msgstr "przenoszenie od³±czonych i-wêz³ów do lost+found" + +#: ../repair/progress.c:77 +msgid "verify and correct link counts" +msgstr "sprawdzanie i poprawianie liczby dowi±zañ" + +#: ../repair/progress.c:79 +msgid "verify link counts" +msgstr "sprawdzanie liczby dowi±zañ" + +#: ../repair/progress.c:118 +msgid "cannot malloc pointer to done vector\n" +msgstr "nie uda³o siê przydzieliæ wska¼nika do wektora wykonania\n" + +#: ../repair/progress.c:134 +msgid "unable to create progress report thread\n" +msgstr "nie uda³o siê utworzyæ w±tku raportowania postêpu\n" -#: ../repair/phase6.c:4061 +#: ../repair/progress.c:173 +msgid "progress_rpt: cannot malloc progress msg buffer\n" +msgstr "progress_rpt: nie uda³o siê przydzieliæ bufora komunikatów postêpu\n" + +#: ../repair/progress.c:187 +msgid "progress_rpt: cannot create timer\n" +msgstr "progress_rpt: nie mo¿na utworzyæ zegara\n" + +#: ../repair/progress.c:190 +msgid "progress_rpt: cannot set timer\n" +msgstr "progress_rpt: nie mo¿na ustawiæ zegara\n" + +#: ../repair/progress.c:214 +msgid "progress_rpt: cannot lock progress mutex\n" +msgstr "progress_rpt: nie mo¿na zablokowaæ muteksu\n" + +#: ../repair/progress.c:251 ../repair/progress.c:354 #, c-format -msgid "would move to %s\n" -msgstr "zosta³by przeniesiony do %s\n" +msgid "%s" +msgstr "%s" -#: ../repair/phase7.c:41 +#: ../repair/progress.c:259 #, c-format -msgid "resetting inode %llu nlinks from %d to %d\n" -msgstr "przestawiono nlinks i-wêz³a %llu z %d na %d\n" +msgid "\t- %02d:%02d:%02d: Phase %d: elapsed time %s - processed %d %s per minute\n" +msgstr "\t- %02d:%02d:%02d: Faza %d: miniony czas %s - przetworzono %d %s na minutê\n" -#: ../repair/phase7.c:47 +#: ../repair/progress.c:264 #, c-format -msgid "nlinks %d will overflow v1 ino, ino %llu will be converted to version 2\n" -msgstr "nlinks %d przepe³ni i-wêze³ v1, i-wêze³ %llu bêdzie skonwertowany do wersji 2\n" +msgid "\t- %02d:%02d:%02d: Phase %d: %llu%% done - estimated remaining time %s\n" +msgstr "\t- %02d:%02d:%02d: Faza %d: %llu%% zrobione - przewidywany pozosta³y czas %s\n" + +#: ../repair/progress.c:272 +msgid "progress_rpt: error unlock msg mutex\n" +msgstr "progress_rpt: b³±d odblokowywania muteksu komunikatów\n" + +#: ../repair/progress.c:278 +msgid "cannot delete timer\n" +msgstr "nie mo¿na usun±æ zegara\n" + +#: ../repair/progress.c:292 +msgid "set_progress_msg: cannot lock progress mutex\n" +msgstr "set_progress_msg: nie mo¿na zablokowaæ mutekstu postêpu\n" -#: ../repair/phase7.c:56 +#: ../repair/progress.c:302 +msgid "set_progress_msg: cannot unlock progress mutex\n" +msgstr "set_progress_msg: nie mo¿na odblokowaæ mutekstu postêpu\n" + +#: ../repair/progress.c:322 +msgid "print_final_rpt: cannot lock progress mutex\n" +msgstr "print_final_rpt: nie mo¿na zablokowaæ mutekstu postêpu\n" + +#: ../repair/progress.c:358 +msgid "print_final_rpt: cannot unlock progress mutex\n" +msgstr "print_final_rpt: nie mo¿na odblokowaæ muteksu postêpu\n" + +#: ../repair/progress.c:407 #, c-format -msgid "would have reset inode %llu nlinks from %d to %d\n" -msgstr "nlinks i-wêz³a %llu zosta³oby przestawione z %d na %d\n" +msgid "%02d:%02d:%02d" +msgstr "%02d:%02d:%02d" -#: ../repair/phase7.c:140 ../repair/phase7.c:145 +#: ../repair/progress.c:429 #, c-format -msgid "ino: %llu, bad d_inode magic saw: (0x%x) expecting (0x%x)\n" -msgstr "i-wêze³: %llu, zauwa¿ono b³êdn± liczbê magiczn± d_inode (0x%x)\n" +msgid "%d week" +msgstr "%d tygodni" -#: ../repair/phase7.c:201 -msgid "Phase 7 - verify and correct link counts...\n" -msgstr "Faza 7 - sprawdzanie i poprawianie liczby dowi±zañ...\n" +# XXX: ngettext() +#: ../repair/progress.c:439 +#, c-format +msgid "%d day" +msgstr "%d dni" -#: ../repair/phase7.c:203 -msgid "Phase 7 - verify link counts...\n" -msgstr "Faza 7 - sprawdzanie liczby dowi±zañ...\n" +#: ../repair/progress.c:446 ../repair/progress.c:463 ../repair/progress.c:481 +#: ../repair/progress.c:491 +msgid ", " +msgstr ", " -#: ../repair/phase7.c:253 +#: ../repair/progress.c:455 #, c-format -msgid "couldn't map inode %llu, err = %d, can't compare link counts\n" -msgstr "nie uda³o siê odwzorowaæ i-wêz³a %llu, b³±d %d, nie mo¿na porównaæ liczby dowi±zañ\n" +msgid "%d hour" +msgstr "%d godzin" + +#: ../repair/progress.c:473 +#, c-format +msgid "%d minute" +msgstr "%d minut" + +#: ../repair/progress.c:488 +#, c-format +msgid "%d second" +msgstr "%d sekund" + +#: ../repair/progress.c:509 +#, c-format +msgid "" +"\n" +" XFS_REPAIR Summary %s\n" +msgstr "" +"\n" +" Podsumowanie XFS_REPAIR %s\n" + +#: ../repair/progress.c:511 +msgid "Phase\t\tStart\t\tEnd\t\tDuration\n" +msgstr "Faza\t\tPocz±tek\tKoniec\t\tCzas trwania\n" + +#: ../repair/progress.c:516 ../repair/progress.c:519 +#, c-format +msgid "Phase %d:\tSkipped\n" +msgstr "Faza %d:\tPominiêta\n" + +#: ../repair/progress.c:523 +#, c-format +msgid "Phase %d:\t%02d/%02d %02d:%02d:%02d\t%02d/%02d %02d:%02d:%02d\t%s\n" +msgstr "Faza %d:\t%02d.%02d %02d:%02d:%02d\t%02d.%02d %02d:%02d:%02d\t%s\n" + +#: ../repair/progress.c:529 +#, c-format +msgid "" +"\n" +"Total run time: %s\n" +msgstr "" +"\n" +"Ca³kowity czas trwania: %s\n" #: ../repair/rt.c:47 msgid "couldn't allocate memory for incore realtime bitmap.\n" @@ -8106,165 +8372,175 @@ msgstr "oczekiwano poziomu %d, a uzyskano %d w bloku btbno %d/%d\n" msgid "bno freespace btree block claimed (state %d), agno %d, bno %d, suspect %d\n" msgstr "blok b-drzewa bno wolnego miejsca przypisany (stan %d), agno %d, bno %d, podejrzany %d\n" -#: ../repair/scan.c:552 +#: ../repair/scan.c:554 #, c-format msgid "block (%d,%d) multiply claimed by bno space tree, state - %d\n" msgstr "blok (%d,%d) wielokrotnie przypisany do drzewa bno miejsca, stan - %d\n" -#: ../repair/scan.c:632 +#: ../repair/scan.c:634 #, c-format msgid "bad magic # %#x in btcnt block %d/%d\n" msgstr "b³êdna liczba magiczna %#x w bloku btcbt %d/%d\n" -#: ../repair/scan.c:639 +#: ../repair/scan.c:641 #, c-format msgid "expected level %d got %d in btcnt block %d/%d\n" msgstr "oczekiwano poziomu %d, a uzyskano %d w bloku btcnt %d/%d\n" -#: ../repair/scan.c:659 +#: ../repair/scan.c:661 #, c-format msgid "bcnt freespace btree block claimed (state %d), agno %d, bno %d, suspect %d\n" msgstr "blok b-drzewa bcnt wolnego miejsca przypisany (stan %d), agno %d, bno %d, podejrzany %d\n" -#: ../repair/scan.c:711 +#: ../repair/scan.c:715 #, c-format msgid "block (%d,%d) already used, state %d\n" msgstr "blok (%d,%d) ju¿ u¿ywany, stan %d\n" -#: ../repair/scan.c:803 +#: ../repair/scan.c:807 #, c-format msgid "bad magic # %#x in inobt block %d/%d\n" msgstr "b³êdna liczba magiczna %#x w bloku inobt %d/%d\n" -#: ../repair/scan.c:811 +#: ../repair/scan.c:815 #, c-format msgid "expected level %d got %d in inobt block %d/%d\n" msgstr "oczekiwano poziomu %d, a uzyskano %d w bloku inobt %d/%d\n" -#: ../repair/scan.c:835 +#: ../repair/scan.c:839 #, c-format msgid "inode btree block claimed (state %d), agno %d, bno %d, suspect %d\n" msgstr "blok b-drzewa i-wêz³ów przypisany (stan %d), agno %d, bno %d, podejrzany %d\n" -#: ../repair/scan.c:860 +#: ../repair/scan.c:864 #, c-format msgid "dubious inode btree block header %d/%d\n" msgstr "w±tpliwy nag³ówek bloku b-drzewa i-wêz³ów %d/%d\n" -#: ../repair/scan.c:898 +#: ../repair/scan.c:902 #, c-format msgid "badly aligned inode rec (starting inode = %llu)\n" msgstr "b³êdnie wyrównany rekord i-wêz³a (pocz±tkowy i-wêze³ = %llu)\n" -#: ../repair/scan.c:914 +#: ../repair/scan.c:918 #, c-format msgid "bad starting inode # (%llu (0x%x 0x%x)) in ino rec, skipping rec\n" msgstr "b³êdny numer pocz±tkowego i-wêz³a (%llu (0x%x 0x%x)) w rekordzie i-wêz³a, pominiêto rekord\n" -#: ../repair/scan.c:923 +#: ../repair/scan.c:927 #, c-format msgid "bad ending inode # (%llu (0x%x 0x%x)) in ino rec, skipping rec\n" msgstr "b³êdny numer koñcowego i-wêz³a (%llu (0x%x 0x%x)) w rekordzie i-wêz³a, pominiêto rekord\n" -#: ../repair/scan.c:952 +#: ../repair/scan.c:956 #, c-format msgid "inode chunk claims used block, inobt block - agno %d, bno %d, inopb %d\n" msgstr "czê¶æ i-wêz³a odwo³uje siê do u¿ywanego bloku, blok inobt - agno %d, bno %d, inopb %d\n" -#: ../repair/scan.c:977 +#: ../repair/scan.c:981 #, c-format msgid "inode rec for ino %llu (%d/%d) overlaps existing rec (start %d/%d)\n" msgstr "rekord i-wêz³a dla i-wêz³a %llu (%d/%d) nachodzi na istniej±cy rekord (pocz±tek %d/%d)\n" -#: ../repair/scan.c:1030 +#: ../repair/scan.c:1034 #, c-format msgid "ir_freecount/free mismatch, inode chunk %d/%d, freecount %d nfree %d\n" msgstr "niezgodno¶æ ir_freecount/free, czê¶æ i-wêz³a %d/%d, freecount %d nfree %d\n" -#: ../repair/scan.c:1102 +#: ../repair/scan.c:1106 #, c-format msgid "can't read agfl block for ag %d\n" msgstr "nie mo¿na odczytaæ bloku agfl dla ag %d\n" -#: ../repair/scan.c:1116 +#: ../repair/scan.c:1120 #, c-format msgid "bad agbno %u in agfl, agno %d\n" msgstr "b³êdne agbno %u w agfl, agno %d\n" -#: ../repair/scan.c:1125 +#: ../repair/scan.c:1129 #, c-format msgid "freeblk count %d != flcount %d in ag %d\n" msgstr "liczba freeblk %d != flcount %d w ag %d\n" -#: ../repair/scan.c:1155 +#: ../repair/scan.c:1156 #, c-format msgid "can't get root superblock for ag %d\n" msgstr "nie mo¿na uzyskaæ g³ównego superbloku dla ag %d\n" -#: ../repair/scan.c:1161 +#: ../repair/scan.c:1162 msgid "can't allocate memory for superblock\n" msgstr "nie mo¿na przydzieliæ pamiêci dla superbloku\n" -#: ../repair/scan.c:1171 +#: ../repair/scan.c:1172 #, c-format msgid "can't read agf block for ag %d\n" msgstr "nie mo¿na odczytaæ bloku agf dla ag %d\n" -#: ../repair/scan.c:1182 +#: ../repair/scan.c:1183 #, c-format msgid "can't read agi block for ag %d\n" msgstr "nie mo¿na odczytaæ bloku agi dla ag %d\n" -#: ../repair/scan.c:1206 +#: ../repair/scan.c:1207 #, c-format msgid "reset bad sb for ag %d\n" msgstr "przestawiono b³êdny superbloku dla ag %d\n" -#: ../repair/scan.c:1209 +#: ../repair/scan.c:1210 #, c-format msgid "would reset bad sb for ag %d\n" msgstr "b³êdny superblok dla ag %d zosta³by przestawiony\n" -#: ../repair/scan.c:1214 +#: ../repair/scan.c:1215 #, c-format msgid "reset bad agf for ag %d\n" msgstr "przestawiono b³êdne agf dla ag %d\n" -#: ../repair/scan.c:1217 +#: ../repair/scan.c:1218 #, c-format msgid "would reset bad agf for ag %d\n" msgstr "b³êdne agf dla ag %d zosta³oby przestawione\n" -#: ../repair/scan.c:1222 +#: ../repair/scan.c:1223 #, c-format msgid "reset bad agi for ag %d\n" msgstr "przestawiono b³êdne agi dla ag %d\n" -#: ../repair/scan.c:1225 +#: ../repair/scan.c:1226 #, c-format msgid "would reset bad agi for ag %d\n" msgstr "b³êdna agi dla ag %d zosta³oby przestawione\n" -#: ../repair/scan.c:1235 +#: ../repair/scan.c:1236 #, c-format msgid "bad uncorrected agheader %d, skipping ag...\n" msgstr "b³êdny nie poprawiony agheader %d, pominiêto ag...\n" -#: ../repair/scan.c:1254 +#: ../repair/scan.c:1252 #, c-format msgid "bad agbno %u for btbno root, agno %d\n" msgstr "b³êdne agbno %u dla g³ównego btbno, agno %d\n" -#: ../repair/scan.c:1266 +#: ../repair/scan.c:1264 #, c-format msgid "bad agbno %u for btbcnt root, agno %d\n" msgstr "b³êdne agbno %u dla g³ównego btbcnt, agno %d\n" -#: ../repair/scan.c:1277 +#: ../repair/scan.c:1275 #, c-format msgid "bad agbno %u for inobt root, agno %d\n" msgstr "b³êdne agbno %u dla g³ównego inobt, agno %d\n" +#: ../repair/threads.c:90 +#, c-format +msgid "cannot create worker threads, error = [%d] %s\n" +msgstr "nie mo¿na utworzyæ w±tków pracuj±cych, b³±d: [%d] %s\n" + +#: ../repair/threads.c:108 +#, c-format +msgid "cannot allocate worker item, error = [%d] %s\n" +msgstr "nie mo¿na przydzieliæ elementu pracuj±cego, b³±d: [%d] %s\n" + #: ../repair/versions.c:83 #, c-format msgid "bogus quota flags 0x%x set in superblock" @@ -8430,102 +8706,142 @@ msgstr "" "\tzawiera wyrównane i-wêz³y. System plików zosta³by zdegradowany.\n" "\tTrwale zdegradowa³oby to wydajno¶æ tego systemu plików.\n" -#: ../repair/xfs_repair.c:73 +#: ../repair/xfs_repair.c:87 #, c-format -msgid "Usage: %s [-nLvV] [-o subopt[=value]] [-l logdev] [-r rtdev] devname\n" -msgstr "Sk³adnia: %s [-nLvV] [-o podopcja[=warto¶æ]] [-l urz_loga] [-r urz_rt] urz±dzenie\n" +msgid "" +"Usage: %s [options] device\n" +"\n" +"Options:\n" +" -f The device is a file\n" +" -L Force log zeroing. Do this as a last resort.\n" +" -l logdev Specifies the device where the external log resides.\n" +" -m maxmem Maximum amount of memory to be used in megabytes.\n" +" -n No modify mode, just checks the filesystem for damage.\n" +" -P Disables prefetching.\n" +" -r rtdev Specifies the device where the realtime section resides.\n" +" -v Verbose output.\n" +" -c subopts Change filesystem parameters - use xfs_admin.\n" +" -o subopts Override default behaviour, refer to man page.\n" +" -t interval Reporting interval in minutes.\n" +" -d Repair dangerously.\n" +" -V Reports version and exits.\n" +msgstr "" +"Sk³adnia: %s [opcje] urz±dzenie\n" +"\n" +"Opcje:\n" +" -f Urz±dzenie jest plikiem\n" +" -L Wymuszenie wyzerowania loga. Wykonywaæ tylko w ostateczno¶ci.\n" +" -l urz_loga Okre¶lenie urz±dzenia z zewnêtrznym logiem.\n" +" -m maks_pam Maksymalna ilo¶æ pamiêci do u¿ycia w megabajtach.\n" +" -n Tryb bez modyfikacji, tylko sprawdzenie systemu plików.\n" +" -P Wy³±czenie prefetch.\n" +" -r urz_rt Okre¶lenie urz±dzenia z sekcj± realtime.\n" +" -v Szczegó³owe wyj¶cie.\n" +" -c podopcje Zmiana parametrów systemu plików przy u¿yciu xfs_admina.\n" +" -o podopcje Zmiana domy¶lnego zachowania, wiêcej na stronie manuala.\n" +" -t czas Okres informowania o postêpach w minutach.\n" +" -d Naprawianie w sposób niebezpieczny.\n" +" -V Wypisanie informacji o wersji i zakoñczenie.\n" -#: ../repair/xfs_repair.c:85 +#: ../repair/xfs_repair.c:113 msgid "no error" msgstr "brak b³êdu" -#: ../repair/xfs_repair.c:86 +#: ../repair/xfs_repair.c:114 msgid "bad magic number" msgstr "b³êdna liczba magiczna" -#: ../repair/xfs_repair.c:87 +#: ../repair/xfs_repair.c:115 msgid "bad blocksize field" msgstr "b³êdne pole blocksize" -#: ../repair/xfs_repair.c:88 +#: ../repair/xfs_repair.c:116 msgid "bad blocksize log field" msgstr "b³êdne pole loga blocksize" -#: ../repair/xfs_repair.c:89 -msgid "bad version number" -msgstr "b³êdny numer wersji" +#: ../repair/xfs_repair.c:117 +msgid "bad or unsupported version" +msgstr "b³êdna lub nie obs³ugiwana wersja" -#: ../repair/xfs_repair.c:91 +#: ../repair/xfs_repair.c:119 msgid "filesystem mkfs-in-progress bit set" msgstr "ustawiony bit mkfs-in-progress systemu plików" -#: ../repair/xfs_repair.c:93 +#: ../repair/xfs_repair.c:121 msgid "inconsistent filesystem geometry information" msgstr "niespójne informacje o geometrii systemu plików" -#: ../repair/xfs_repair.c:95 +#: ../repair/xfs_repair.c:123 msgid "bad inode size or inconsistent with number of inodes/block" msgstr "b³êdny rozmiar i-wêz³a lub niespójno¶æ z liczb± i-wêz³ów/blok" -#: ../repair/xfs_repair.c:96 +#: ../repair/xfs_repair.c:124 msgid "bad sector size" msgstr "b³êdny rozmiar sektora" -#: ../repair/xfs_repair.c:98 +#: ../repair/xfs_repair.c:126 msgid "AGF geometry info conflicts with filesystem geometry" msgstr "informacje o geometrii AGF s± w konflikcie z geometri± systemu plików" -#: ../repair/xfs_repair.c:100 +#: ../repair/xfs_repair.c:128 msgid "AGI geometry info conflicts with filesystem geometry" msgstr "informacje o geometrii AGI s± w konflikcie z geometri± systemu plików" -#: ../repair/xfs_repair.c:102 +#: ../repair/xfs_repair.c:130 msgid "AG superblock geometry info conflicts with filesystem geometry" msgstr "informacje o geometrii superbloku AG s± w konflikcie z geometri± systemu plików" -#: ../repair/xfs_repair.c:103 +#: ../repair/xfs_repair.c:131 msgid "attempted to perform I/O beyond EOF" msgstr "próbowano wykonaæ operacjê we/wy poza koñcem pliku" -#: ../repair/xfs_repair.c:105 +#: ../repair/xfs_repair.c:133 msgid "inconsistent filesystem geometry in realtime filesystem component" msgstr "niespójna geometria systemu plików w sk³adniku realtime" -#: ../repair/xfs_repair.c:107 +#: ../repair/xfs_repair.c:135 msgid "maximum indicated percentage of inodes > 100%" msgstr "okre¶lono maksymalny procent i-wêz³ów > 100%" -#: ../repair/xfs_repair.c:109 +#: ../repair/xfs_repair.c:137 msgid "inconsistent inode alignment value" msgstr "niespójna warto¶æ wyrównania i-wêz³a" -#: ../repair/xfs_repair.c:111 +#: ../repair/xfs_repair.c:139 msgid "not enough secondary superblocks with matching geometry" msgstr "za ma³o zapasowych superbloków o pasuj±cej geometrii" -#: ../repair/xfs_repair.c:113 +#: ../repair/xfs_repair.c:141 msgid "bad stripe unit in superblock" msgstr "b³êdna jednostka pasa w superbloku" -#: ../repair/xfs_repair.c:115 +#: ../repair/xfs_repair.c:143 msgid "bad stripe width in superblock" msgstr "b³êdna szeroko¶æ pasa w superbloku" -#: ../repair/xfs_repair.c:117 +#: ../repair/xfs_repair.c:145 msgid "bad shared version number in superblock" msgstr "b³êdny numer wersji wspó³dzielenia w superbloku" -#: ../repair/xfs_repair.c:122 +#: ../repair/xfs_repair.c:150 #, c-format msgid "bad error code - %d\n" msgstr "b³êdny kod b³êdu - %d\n" -#: ../repair/xfs_repair.c:130 +#: ../repair/xfs_repair.c:158 #, c-format msgid "-%c %s option cannot have a value\n" msgstr "opcja -%c %s nie przyjmuje warto¶ci\n" -#: ../repair/xfs_repair.c:295 +#: ../repair/xfs_repair.c:254 +msgid "-o bhash option cannot be used with -m option\n" +msgstr "opcja -o bhash nie mo¿e byæ u¿yta wraz z opcj± -m\n" + +#: ../repair/xfs_repair.c:296 +msgid "-m option cannot be used with -o bhash option\n" +msgstr "opcja -m nie mo¿e byæ u¿yta wraz z opcj± -o bhash\n" + +#: ../repair/xfs_repair.c:350 #, c-format msgid "" "\n" @@ -8534,52 +8850,52 @@ msgstr "" "\n" "b³±d krytyczny - " -#: ../repair/xfs_repair.c:384 +#: ../repair/xfs_repair.c:439 #, c-format msgid "sb root inode value %llu %sinconsistent with calculated value %lu\n" msgstr "warto¶æ i-wêz³a g³ównego superbloku %llu %sniespójna z obliczon± warto¶ci± %lu\n" -#: ../repair/xfs_repair.c:391 +#: ../repair/xfs_repair.c:446 #, c-format msgid "resetting superblock root inode pointer to %lu\n" msgstr "przestawiono wska¼nik i-wêz³a g³ównego superbloku na %lu\n" -#: ../repair/xfs_repair.c:395 +#: ../repair/xfs_repair.c:450 #, c-format msgid "would reset superblock root inode pointer to %lu\n" msgstr "wska¼nik i-wêz³a g³ównego superbloku zosta³by przestawiony na %lu\n" -#: ../repair/xfs_repair.c:407 +#: ../repair/xfs_repair.c:462 #, c-format msgid "sb realtime bitmap inode %llu %sinconsistent with calculated value %lu\n" msgstr "i-wêze³ bitmapy realtime superbloku %llu %sniespójny z obliczon± warto¶ci± %lu\n" -#: ../repair/xfs_repair.c:414 +#: ../repair/xfs_repair.c:469 #, c-format msgid "resetting superblock realtime bitmap ino pointer to %lu\n" msgstr "przestawiono wska¼nik i-wêz³a bitmapy realtime superbloku na %lu\n" -#: ../repair/xfs_repair.c:418 +#: ../repair/xfs_repair.c:473 #, c-format msgid "would reset superblock realtime bitmap ino pointer to %lu\n" msgstr "wska¼nik i-wêz³a bitmapy realtime superbloku zosta³by przestawiony na %lu\n" -#: ../repair/xfs_repair.c:430 +#: ../repair/xfs_repair.c:485 #, c-format msgid "sb realtime summary inode %llu %sinconsistent with calculated value %lu\n" msgstr "i-wêze³ opisu realtime superbloku %llu %sniespójny z obliczon± warto¶ci± %lu\n" -#: ../repair/xfs_repair.c:437 +#: ../repair/xfs_repair.c:492 #, c-format msgid "resetting superblock realtime summary ino pointer to %lu\n" msgstr "przestawiono wska¼nik i-wêz³a opisu realtime superbloku na %lu\n" -#: ../repair/xfs_repair.c:441 +#: ../repair/xfs_repair.c:496 #, c-format msgid "would reset superblock realtime summary ino pointer to %lu\n" msgstr "wska¼nik i-wêz³a opisu realtime superbloku zosta³by przestawiony na %lu\n" -#: ../repair/xfs_repair.c:477 +#: ../repair/xfs_repair.c:544 msgid "" "Primary superblock would have been modified.\n" "Cannot proceed further in no_modify mode.\n" @@ -8589,41 +8905,61 @@ msgstr "" "Nie mo¿na kontynuowaæ w trybie bez modyfikacji.\n" "Zakoñczono.\n" -#: ../repair/xfs_repair.c:493 +#: ../repair/xfs_repair.c:561 #, c-format msgid "%s: cannot repair this filesystem. Sorry.\n" msgstr "%s: niestety nie mo¿na naprawiæ tego systemu plików.\n" -#: ../repair/xfs_repair.c:520 +#: ../repair/xfs_repair.c:585 +#, c-format +msgid " - reporting progress in intervals of %s\n" +msgstr " - informowanie o postêpie w odstêpach %s\n" + +#: ../repair/xfs_repair.c:631 +#, c-format +msgid " - max_mem = %lu, icount = %llu, imem = %llu, dblock = %llu, dmem = %llu\n" +msgstr " - max_mem = %lu, icount = %llu, imem = %llu, dblock = %llu, dmem = %llu\n" + +#: ../repair/xfs_repair.c:644 +#, c-format +msgid "Required memory for repair is greater that the maximum specified with the -m option. Please increase it to at least %lu.\n" +msgstr "Pamiêæ wymagana do naprawy przekracza maksimum okre¶lone opcj± -m. Proszê j± zwiêkszyæ do co najmniej %lu.\n" + +#: ../repair/xfs_repair.c:662 +#, c-format +msgid " - block cache size set to %d entries\n" +msgstr " - rozmiar bufora bloku ustawiony na %d wpisów\n" + +#: ../repair/xfs_repair.c:686 msgid "Found unsupported filesystem features. Exiting now.\n" msgstr "Znaleziono nie obs³ugiwane cechy systemu plików. Zakoñczono.\n" -#: ../repair/xfs_repair.c:543 +#: ../repair/xfs_repair.c:704 #, c-format msgid "No modify flag set, skipping phase 5\n" msgstr "Ustawiono flagê braku modyfikacji, pominiêto fazê 5\n" -#: ../repair/xfs_repair.c:555 +#: ../repair/xfs_repair.c:718 msgid "Inode allocation btrees are too corrupted, skipping phases 6 and 7\n" msgstr "B-drzewa alokacji i-wêz³ów s± zbyt uszkodzone, pominiêto fazy 6 i 7\n" -#: ../repair/xfs_repair.c:561 +#: ../repair/xfs_repair.c:724 msgid "Warning: no quota inodes were found. Quotas disabled.\n" msgstr "Uwaga: nie znaleziono i-wêz³ów limitów (quot). Limity wy³±czone.\n" -#: ../repair/xfs_repair.c:564 +#: ../repair/xfs_repair.c:727 msgid "Warning: no quota inodes were found. Quotas would be disabled.\n" msgstr "Uwaga: nie znaleziono i-wêz³ów limitów (quot). Limity zosta³yby wy³±czone.\n" -#: ../repair/xfs_repair.c:569 +#: ../repair/xfs_repair.c:732 msgid "Warning: quota inodes were cleared. Quotas disabled.\n" msgstr "Uwaga: i-wêz³y limitów (quot) by³y wyczyszczone. Limity wy³±czone.\n" -#: ../repair/xfs_repair.c:572 +#: ../repair/xfs_repair.c:735 msgid "Warning: quota inodes would be cleared. Quotas would be disabled.\n" msgstr "Uwaga: i-wêz³y limitów (quot) zosta³yby wyczyszczone. Limity zosta³yby wy³±czone.\n" -#: ../repair/xfs_repair.c:578 +#: ../repair/xfs_repair.c:741 msgid "" "Warning: user quota information was cleared.\n" "User quotas can not be enforced until limit information is recreated.\n" @@ -8631,7 +8967,7 @@ msgstr "" "Uwaga: informacje o limitach u¿ytkowników by³y wyczyszczone.\n" "Limity u¿ytkowników nie mog± byæ wymuszone do czasu odtworzenia informacji.\n" -#: ../repair/xfs_repair.c:582 +#: ../repair/xfs_repair.c:745 msgid "" "Warning: user quota information would be cleared.\n" "User quotas could not be enforced until limit information was recreated.\n" @@ -8639,7 +8975,7 @@ msgstr "" "Uwaga: informacje o limitach u¿ytkowników zosta³yby wyczyszczone.\n" "Limity u¿ytkowników nie mog³yby byæ wymuszone do czasu odtworzenia informacji.\n" -#: ../repair/xfs_repair.c:590 +#: ../repair/xfs_repair.c:753 msgid "" "Warning: group quota information was cleared.\n" "Group quotas can not be enforced until limit information is recreated.\n" @@ -8647,7 +8983,7 @@ msgstr "" "Uwaga: informacje o limitach grup by³y wyczyszczone.\n" "Limity grup nie mog± byæ wymuszone do czasu odtworzenia informacji.\n" -#: ../repair/xfs_repair.c:594 +#: ../repair/xfs_repair.c:757 msgid "" "Warning: group quota information would be cleared.\n" "Group quotas could not be enforced until limit information was recreated.\n" @@ -8655,7 +8991,7 @@ msgstr "" "Uwaga: informacje o limitach grup zosta³yby wyczyszczone.\n" "Limity grup nie mog³yby byæ wymuszone do czasu odtworzenia informacji.\n" -#: ../repair/xfs_repair.c:602 +#: ../repair/xfs_repair.c:765 msgid "" "Warning: project quota information was cleared.\n" "Project quotas can not be enforced until limit information is recreated.\n" @@ -8663,7 +8999,7 @@ msgstr "" "Uwaga: informacje o limitach projektów by³y wyczyszczone.\n" "Limity projektów nie mog± byæ wymuszone do czasu odtworzenia informacji.\n" -#: ../repair/xfs_repair.c:606 +#: ../repair/xfs_repair.c:769 msgid "" "Warning: project quota information would be cleared.\n" "Project quotas could not be enforced until limit information was recreated.\n" @@ -8671,15 +9007,15 @@ msgstr "" "Uwaga: informacje o limitach projektów zosta³yby wyczyszczone.\n" "Limity projektów nie mog³yby byæ wymuszone do czasu odtworzenia informacji.\n" -#: ../repair/xfs_repair.c:617 +#: ../repair/xfs_repair.c:780 msgid "No modify flag set, skipping filesystem flush and exiting.\n" msgstr "Flaga braku modyfikacji ustawiona, pominiêto zrzucanie systemu plików, zakoñczono.\n" -#: ../repair/xfs_repair.c:641 +#: ../repair/xfs_repair.c:800 msgid "Note - quota info will be regenerated on next quota mount.\n" msgstr "Uwaga - informacje o limitach zostan± ponownie wygenerowane przy nastêpnym montowaniu.\n" -#: ../repair/xfs_repair.c:647 +#: ../repair/xfs_repair.c:806 #, c-format msgid "" "Note - stripe unit (%d) and width (%d) fields have been reset.\n" @@ -8688,7 +9024,7 @@ msgstr "" "Uwaga - pola jednostki pasa (%d) i szeroko¶ci pasa (%d) zosta³y przestawione.\n" "Proszê ustawiæ przy u¿yciu mount -o sunit=,swidth=\n" -#: ../repair/xfs_repair.c:663 +#: ../repair/xfs_repair.c:829 msgid "done\n" msgstr "gotowe\n" -- 1.6.0.5 -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 10:48:50 2008 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_32, J_CHICKENPOX_43,J_CHICKENPOX_62,J_CHICKENPOX_63,J_CHICKENPOX_64, J_CHICKENPOX_65,J_CHICKENPOX_66,J_CHICKENPOX_74,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 mBMGimLq006771 for ; Mon, 22 Dec 2008 10:44:48 -0600 X-ASG-Debug-ID: 1229964286-51db00fa0000-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 3C6F73F8F0 for ; Mon, 22 Dec 2008 08:44:46 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id E4tIKKEsMa8PGFgh for ; Mon, 22 Dec 2008 08:44:46 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEnt6-0005sg-AZ; Mon, 22 Dec 2008 16:44:12 +0000 Message-Id: <20081222164412.220377000@bombadil.infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 22 Dec 2008 11:38:51 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH 20/20] xfsprogs: resync libxfs with the kernel code Subject: [PATCH 20/20] xfsprogs: resync libxfs with the kernel code Content-Disposition: inline; filename=libxfs-resync 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: 1229964287 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Also use the kernel xfs_iread now instead of a duplicated version. Signed-off-by: Christoph Hellwig Index: xfs-cmds/xfsprogs/include/xfs_ag.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_ag.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_ag.h 2008-12-06 20:05:49.000000000 +0100 @@ -91,6 +91,8 @@ #define XFS_AGF_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGF_DADDR(mp)) #define XFS_BUF_TO_AGF(bp) ((xfs_agf_t *)XFS_BUF_PTR(bp)) +extern int xfs_read_agf(struct xfs_mount *mp, struct xfs_trans *tp, + xfs_agnumber_t agno, int flags, struct xfs_buf **bpp); /* * Size of the unlinked inode hash table in the agi. @@ -142,6 +144,9 @@ #define XFS_AGI_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGI_DADDR(mp)) #define XFS_BUF_TO_AGI(bp) ((xfs_agi_t *)XFS_BUF_PTR(bp)) +extern int xfs_read_agi(struct xfs_mount *mp, struct xfs_trans *tp, + xfs_agnumber_t agno, struct xfs_buf **bpp); + /* * The third a.g. block contains the a.g. freelist, an array * of block pointers to blocks owned by the allocation btree code. @@ -204,6 +209,11 @@ #endif } xfs_perag_t; +/* + * tags for inode radix tree + */ +#define XFS_ICI_RECLAIM_TAG 0 /* inode is to be reclaimed */ + #define XFS_AG_MAXLEVELS(mp) ((mp)->m_ag_maxlevels) #define XFS_MIN_FREELIST_RAW(bl,cl,mp) \ (MIN(bl + 1, XFS_AG_MAXLEVELS(mp)) + MIN(cl + 1, XFS_AG_MAXLEVELS(mp))) Index: xfs-cmds/xfsprogs/include/xfs_bmap.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_bmap.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_bmap.h 2008-12-06 20:05:49.000000000 +0100 @@ -356,15 +356,18 @@ xfs_bmap_free_t *flist, /* i/o: list extents to free */ int *committed); /* xact committed or not */ +/* bmap to userspace formatter - copy to user & advance pointer */ +typedef int (*xfs_bmap_format_t)(void **, struct getbmapx *, int *); + /* - * Fcntl interface to xfs_bmapi. + * Get inode's extents as described in bmv, and format for output. */ int /* error code */ xfs_getbmap( xfs_inode_t *ip, - struct getbmap *bmv, /* user bmap structure */ - void __user *ap, /* pointer to user's array */ - int iflags); /* interface flags */ + struct getbmapx *bmv, /* user bmap structure */ + xfs_bmap_format_t formatter, /* format to user */ + void *arg); /* formatter arg */ /* * Check if the endoff is outside the last extent. If so the caller will grow Index: xfs-cmds/xfsprogs/include/xfs_dfrag.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_dfrag.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_dfrag.h 2008-12-06 20:05:49.000000000 +0100 @@ -46,7 +46,7 @@ /* * Syscall interface for xfs_swapext */ -int xfs_swapext(struct xfs_swapext __user *sx); +int xfs_swapext(struct xfs_swapext *sx); int xfs_swap_extents(struct xfs_inode *ip, struct xfs_inode *tip, struct xfs_swapext *sxp); Index: xfs-cmds/xfsprogs/include/xfs_dinode.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_dinode.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_dinode.h 2008-12-06 20:05:49.000000000 +0100 @@ -18,32 +18,29 @@ #ifndef __XFS_DINODE_H__ #define __XFS_DINODE_H__ -struct xfs_buf; -struct xfs_mount; +#define XFS_DINODE_MAGIC 0x494e /* 'IN' */ +#define XFS_DINODE_GOOD_VERSION(v) (((v) == 1 || (v) == 2)) -#define XFS_DINODE_VERSION_1 1 -#define XFS_DINODE_VERSION_2 2 -#define XFS_DINODE_GOOD_VERSION(v) \ - (((v) == XFS_DINODE_VERSION_1 || (v) == XFS_DINODE_VERSION_2)) -#define XFS_DINODE_MAGIC 0x494e /* 'IN' */ - -/* - * Disk inode structure. - * This is just the header; the inode is expanded to fill a variable size - * with the last field expanding. It is split into the core and "other" - * because we only need the core part in the in-core inode. - */ typedef struct xfs_timestamp { __be32 t_sec; /* timestamp seconds */ __be32 t_nsec; /* timestamp nanoseconds */ } xfs_timestamp_t; /* - * Note: Coordinate changes to this structure with the XFS_DI_* #defines - * below, the offsets table in xfs_ialloc_log_di() and struct xfs_icdinode - * in xfs_inode.h. + * On-disk inode structure. + * + * This is just the header or "dinode core", the inode is expanded to fill a + * variable size the leftover area split into a data and an attribute fork. + * The format of the data and attribute fork depends on the format of the + * inode as indicated by di_format and di_aformat. To access the data and + * attribute use the XFS_DFORK_PTR, XFS_DFORK_DPTR, and XFS_DFORK_PTR macros + * below. + * + * There is a very similar struct icdinode in xfs_inode which matches the + * layout of the first 96 bytes of this structure, but is kept in native + * format instead of big endian. */ -typedef struct xfs_dinode_core { +typedef struct xfs_dinode { __be16 di_magic; /* inode magic # = XFS_DINODE_MAGIC */ __be16 di_mode; /* mode and type of file */ __u8 di_version; /* inode version */ @@ -69,33 +66,12 @@ __be16 di_dmstate; /* DMIG state info */ __be16 di_flags; /* random flags, XFS_DIFLAG_... */ __be32 di_gen; /* generation number */ -} xfs_dinode_core_t; -#define DI_MAX_FLUSH 0xffff + /* di_next_unlinked is the only non-core field in the old dinode */ + __be32 di_next_unlinked;/* agi unlinked list ptr */ +} __attribute__((packed)) xfs_dinode_t; -typedef struct xfs_dinode -{ - xfs_dinode_core_t di_core; - /* - * In adding anything between the core and the union, be - * sure to update the macros like XFS_LITINO below. - */ - __be32 di_next_unlinked;/* agi unlinked list ptr */ - union { - xfs_bmdr_block_t di_bmbt; /* btree root block */ - xfs_bmbt_rec_32_t di_bmx[1]; /* extent list */ - xfs_dir2_sf_t di_dir2sf; /* shortform directory v2 */ - char di_c[1]; /* local contents */ - __be32 di_dev; /* device for S_IFCHR/S_IFBLK */ - uuid_t di_muuid; /* mount point value */ - char di_symlink[1]; /* local symbolic link */ - } di_u; - union { - xfs_bmdr_block_t di_abmbt; /* btree root block */ - xfs_bmbt_rec_32_t di_abmx[1]; /* extent list */ - xfs_attr_shortform_t di_attrsf; /* shortform attribute list */ - } di_a; -} xfs_dinode_t; +#define DI_MAX_FLUSH 0xffff /* * The 32 bit link count in the inode theoretically maxes out at UINT_MAX. @@ -106,50 +82,14 @@ #define XFS_MAXLINK_1 65535U /* - * Bit names for logging disk inodes only - */ -#define XFS_DI_MAGIC 0x0000001 -#define XFS_DI_MODE 0x0000002 -#define XFS_DI_VERSION 0x0000004 -#define XFS_DI_FORMAT 0x0000008 -#define XFS_DI_ONLINK 0x0000010 -#define XFS_DI_UID 0x0000020 -#define XFS_DI_GID 0x0000040 -#define XFS_DI_NLINK 0x0000080 -#define XFS_DI_PROJID 0x0000100 -#define XFS_DI_PAD 0x0000200 -#define XFS_DI_ATIME 0x0000400 -#define XFS_DI_MTIME 0x0000800 -#define XFS_DI_CTIME 0x0001000 -#define XFS_DI_SIZE 0x0002000 -#define XFS_DI_NBLOCKS 0x0004000 -#define XFS_DI_EXTSIZE 0x0008000 -#define XFS_DI_NEXTENTS 0x0010000 -#define XFS_DI_NAEXTENTS 0x0020000 -#define XFS_DI_FORKOFF 0x0040000 -#define XFS_DI_AFORMAT 0x0080000 -#define XFS_DI_DMEVMASK 0x0100000 -#define XFS_DI_DMSTATE 0x0200000 -#define XFS_DI_FLAGS 0x0400000 -#define XFS_DI_GEN 0x0800000 -#define XFS_DI_NEXT_UNLINKED 0x1000000 -#define XFS_DI_U 0x2000000 -#define XFS_DI_A 0x4000000 -#define XFS_DI_NUM_BITS 27 -#define XFS_DI_ALL_BITS ((1 << XFS_DI_NUM_BITS) - 1) -#define XFS_DI_CORE_BITS (XFS_DI_ALL_BITS & ~(XFS_DI_U|XFS_DI_A)) - -/* * Values for di_format */ -typedef enum xfs_dinode_fmt -{ - XFS_DINODE_FMT_DEV, /* CHR, BLK: di_dev */ - XFS_DINODE_FMT_LOCAL, /* DIR, REG: di_c */ - /* LNK: di_symlink */ - XFS_DINODE_FMT_EXTENTS, /* DIR, REG, LNK: di_bmx */ - XFS_DINODE_FMT_BTREE, /* DIR, REG, LNK: di_bmbt */ - XFS_DINODE_FMT_UUID /* MNT: di_uuid */ +typedef enum xfs_dinode_fmt { + XFS_DINODE_FMT_DEV, /* xfs_dev_t */ + XFS_DINODE_FMT_LOCAL, /* bulk data */ + XFS_DINODE_FMT_EXTENTS, /* struct xfs_bmbt_rec */ + XFS_DINODE_FMT_BTREE, /* struct xfs_bmdr_block */ + XFS_DINODE_FMT_UUID /* uuid_t */ } xfs_dinode_fmt_t; /* @@ -170,8 +110,8 @@ /* * Inode data & attribute fork sizes, per inode. */ -#define XFS_DFORK_Q(dip) ((dip)->di_core.di_forkoff != 0) -#define XFS_DFORK_BOFF(dip) ((int)((dip)->di_core.di_forkoff << 3)) +#define XFS_DFORK_Q(dip) ((dip)->di_forkoff != 0) +#define XFS_DFORK_BOFF(dip) ((int)((dip)->di_forkoff << 3)) #define XFS_DFORK_DSIZE(dip,mp) \ (XFS_DFORK_Q(dip) ? \ @@ -186,23 +126,42 @@ XFS_DFORK_DSIZE(dip, mp) : \ XFS_DFORK_ASIZE(dip, mp)) -#define XFS_DFORK_DPTR(dip) ((dip)->di_u.di_c) +/* + * Return pointers to the data or attribute forks. + */ +#define XFS_DFORK_DPTR(dip) \ + ((char *)(dip) + sizeof(struct xfs_dinode)) #define XFS_DFORK_APTR(dip) \ - ((dip)->di_u.di_c + XFS_DFORK_BOFF(dip)) + (XFS_DFORK_DPTR(dip) + XFS_DFORK_BOFF(dip)) #define XFS_DFORK_PTR(dip,w) \ ((w) == XFS_DATA_FORK ? XFS_DFORK_DPTR(dip) : XFS_DFORK_APTR(dip)) + #define XFS_DFORK_FORMAT(dip,w) \ ((w) == XFS_DATA_FORK ? \ - (dip)->di_core.di_format : \ - (dip)->di_core.di_aformat) + (dip)->di_format : \ + (dip)->di_aformat) #define XFS_DFORK_NEXTENTS(dip,w) \ ((w) == XFS_DATA_FORK ? \ - be32_to_cpu((dip)->di_core.di_nextents) : \ - be16_to_cpu((dip)->di_core.di_anextents)) + be32_to_cpu((dip)->di_nextents) : \ + be16_to_cpu((dip)->di_anextents)) #define XFS_BUF_TO_DINODE(bp) ((xfs_dinode_t *)XFS_BUF_PTR(bp)) /* + * For block and character special files the 32bit dev_t is stored at the + * beginning of the data fork. + */ +static inline xfs_dev_t xfs_dinode_get_rdev(struct xfs_dinode *dip) +{ + return be32_to_cpu(*(__be32 *)XFS_DFORK_DPTR(dip)); +} + +static inline void xfs_dinode_put_rdev(struct xfs_dinode *dip, xfs_dev_t rdev) +{ + *(__be32 *)XFS_DFORK_DPTR(dip) = cpu_to_be32(rdev); +} + +/* * Values for di_flags * There should be a one-to-one correspondence between these flags and the * XFS_XFLAG_s. Index: xfs-cmds/xfsprogs/include/xfs_dir2_sf.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_dir2_sf.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_dir2_sf.h 2008-12-06 20:05:49.000000000 +0100 @@ -34,13 +34,6 @@ struct xfs_trans; /* - * Maximum size of a shortform directory. - */ -#define XFS_DIR2_SF_MAX_SIZE \ - (XFS_DINODE_MAX_SIZE - (uint)sizeof(xfs_dinode_core_t) - \ - (uint)sizeof(xfs_agino_t)) - -/* * Inode number stored as 8 8-bit values. */ typedef struct { __uint8_t i[8]; } xfs_dir2_ino8_t; Index: xfs-cmds/xfsprogs/include/xfs_fs.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_fs.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_fs.h 2008-12-06 20:05:49.000000000 +0100 @@ -113,22 +113,14 @@ #define BMV_IF_ATTRFORK 0x1 /* return attr fork rather than data */ #define BMV_IF_NO_DMAPI_READ 0x2 /* Do not generate DMAPI read event */ #define BMV_IF_PREALLOC 0x4 /* rtn status BMV_OF_PREALLOC if req */ -#define BMV_IF_VALID (BMV_IF_ATTRFORK|BMV_IF_NO_DMAPI_READ|BMV_IF_PREALLOC) -#ifdef __KERNEL__ -#define BMV_IF_EXTENDED 0x40000000 /* getpmapx if set */ -#endif +#define BMV_IF_DELALLOC 0x8 /* rtn status BMV_OF_DELALLOC if req */ +#define BMV_IF_VALID \ + (BMV_IF_ATTRFORK|BMV_IF_NO_DMAPI_READ|BMV_IF_PREALLOC|BMV_IF_DELALLOC) /* bmv_oflags values - returned for for each non-header segment */ #define BMV_OF_PREALLOC 0x1 /* segment = unwritten pre-allocation */ - -/* Convert getbmap <-> getbmapx - move fields from p1 to p2. */ -#define GETBMAP_CONVERT(p1,p2) { \ - p2.bmv_offset = p1.bmv_offset; \ - p2.bmv_block = p1.bmv_block; \ - p2.bmv_length = p1.bmv_length; \ - p2.bmv_count = p1.bmv_count; \ - p2.bmv_entries = p1.bmv_entries; } - +#define BMV_OF_DELALLOC 0x2 /* segment = delayed allocation */ +#define BMV_OF_LAST 0x4 /* segment is the last in the file */ /* * Structure for XFS_IOC_FSSETDM. @@ -426,10 +418,6 @@ #define XFS_IOC_GETXFLAGS FS_IOC_GETFLAGS #define XFS_IOC_SETXFLAGS FS_IOC_SETFLAGS #define XFS_IOC_GETVERSION FS_IOC_GETVERSION -/* 32-bit compat counterparts */ -#define XFS_IOC32_GETXFLAGS FS_IOC32_GETFLAGS -#define XFS_IOC32_SETXFLAGS FS_IOC32_SETFLAGS -#define XFS_IOC32_GETVERSION FS_IOC32_GETVERSION /* * ioctl commands that replace IRIX fcntl()'s Index: xfs-cmds/xfsprogs/include/xfs_ialloc.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_ialloc.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_ialloc.h 2008-12-06 20:05:49.000000000 +0100 @@ -20,6 +20,7 @@ struct xfs_buf; struct xfs_dinode; +struct xfs_imap; struct xfs_mount; struct xfs_trans; @@ -104,17 +105,14 @@ xfs_ino_t *first_ino); /* first inode in deleted cluster */ /* - * Return the location of the inode in bno/len/off, - * for mapping it into a buffer. + * Return the location of the inode in imap, for mapping it into a buffer. */ int -xfs_dilocate( +xfs_imap( struct xfs_mount *mp, /* file system mount structure */ struct xfs_trans *tp, /* transaction pointer */ xfs_ino_t ino, /* inode to locate */ - xfs_fsblock_t *bno, /* output: block containing inode */ - int *len, /* output: num blocks in cluster*/ - int *off, /* output: index in block of inode */ + struct xfs_imap *imap, /* location map structure */ uint flags); /* flags for inode btree lookup */ /* Index: xfs-cmds/xfsprogs/include/xfs_inode.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_inode.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_inode.h 2008-12-06 20:05:49.000000000 +0100 @@ -19,7 +19,6 @@ #define __XFS_INODE_H__ struct xfs_dinode; -struct xfs_dinode_core; struct xfs_inode; /* @@ -84,6 +83,16 @@ } xfs_ifork_t; /* + * Inode location information. Stored in the inode and passed to + * xfs_imap_to_bp() to get a buffer and dinode for a given inode. + */ +struct xfs_imap { + xfs_daddr_t im_blkno; /* starting BB of inode chunk */ + ushort im_len; /* length in BBs of inode chunk */ + ushort im_boffset; /* inode offset in block in bytes */ +}; + +/* * This is the xfs in-core inode structure. * Most of the on-disk inode is embedded in the i_d field. * @@ -112,7 +121,7 @@ } xfs_ictimestamp_t; /* - * NOTE: This structure must be kept identical to struct xfs_dinode_core + * NOTE: This structure must be kept identical to struct xfs_dinode * in xfs_dinode.h except for the endianess annotations. */ typedef struct xfs_icdinode { @@ -158,12 +167,6 @@ #define XFS_IFEXTIREC 0x08 /* Indirection array of extent blocks */ /* - * Flags for xfs_itobp(), xfs_imap() and xfs_dilocate(). - */ -#define XFS_IMAP_LOOKUP 0x1 -#define XFS_IMAP_BULKSTAT 0x2 - -/* * Fork handling. */ @@ -232,27 +235,15 @@ __uint16_t da_pad; /* DMIG extra padding */ } dm_attrs_t; -typedef struct { - struct xfs_inode *ip_mnext; /* next inode in mount list */ - struct xfs_inode *ip_mprev; /* ptr to prev inode */ - struct xfs_mount *ip_mount; /* fs mount struct ptr */ -} xfs_iptr_t; - typedef struct xfs_inode { /* Inode linking and identification information. */ - struct xfs_inode *i_mnext; /* next inode in mount list */ - struct xfs_inode *i_mprev; /* ptr to prev inode */ struct xfs_mount *i_mount; /* fs mount struct ptr */ - struct list_head i_reclaim; /* reclaim list */ - struct inode *i_vnode; /* vnode backpointer */ struct xfs_dquot *i_udquot; /* user dquot */ struct xfs_dquot *i_gdquot; /* group dquot */ /* Inode location stuff */ xfs_ino_t i_ino; /* inode number (agno/agino)*/ - xfs_daddr_t i_blkno; /* blkno of inode buffer */ - ushort i_len; /* len of inode buffer */ - ushort i_boffset; /* off of inode in buffer */ + struct xfs_imap i_imap; /* location for xfs_imap() */ /* Extent information. */ xfs_ifork_t *i_afp; /* attribute fork pointer */ @@ -271,7 +262,6 @@ unsigned short i_flags; /* see defined flags below */ unsigned char i_update_core; /* timestamps/size is dirty */ unsigned char i_update_size; /* di_size field is dirty */ - unsigned int i_gen; /* generation count */ unsigned int i_delayed_blks; /* count of delay alloc blks */ xfs_icdinode_t i_d; /* most of ondisk inode */ @@ -279,6 +269,10 @@ xfs_fsize_t i_size; /* in-memory size */ xfs_fsize_t i_new_size; /* size when write completes */ atomic_t i_iocount; /* outstanding I/O count */ + + /* VFS inode */ + struct inode i_vnode; /* embedded VFS inode */ + /* Trace buffers per inode. */ #ifdef XFS_INODE_TRACE struct ktrace *i_trace; /* general inode trace */ @@ -306,13 +300,30 @@ /* Convert from vfs inode to xfs inode */ static inline struct xfs_inode *XFS_I(struct inode *inode) { - return (struct xfs_inode *)inode->i_private; + return container_of(inode, struct xfs_inode, i_vnode); } /* convert from xfs inode to vfs inode */ static inline struct inode *VFS_I(struct xfs_inode *ip) { - return (struct inode *)ip->i_vnode; + return &ip->i_vnode; +} + +/* + * Get rid of a partially initialized inode. + * + * We have to go through destroy_inode to make sure allocations + * from init_inode_always like the security data are undone. + * + * We mark the inode bad so that it takes the short cut in + * the reclaim path instead of going through the flush path + * which doesn't make sense for an inode that has never seen the + * light of day. + */ +static inline void xfs_destroy_inode(struct xfs_inode *ip) +{ + make_bad_inode(VFS_I(ip)); + return destroy_inode(VFS_I(ip)); } /* @@ -392,17 +403,12 @@ /* * In-core inode flags. */ -#define XFS_IGRIO 0x0001 /* inode used for guaranteed rate i/o */ -#define XFS_IUIOSZ 0x0002 /* inode i/o sizes have been explicitly set */ -#define XFS_IQUIESCE 0x0004 /* we have started quiescing for this inode */ -#define XFS_IRECLAIM 0x0008 /* we have started reclaiming this inode */ -#define XFS_ISTALE 0x0010 /* inode has been staled */ -#define XFS_IRECLAIMABLE 0x0020 /* inode can be reclaimed */ -#define XFS_INEW 0x0040 -#define XFS_IFILESTREAM 0x0080 /* inode is in a filestream directory */ -#define XFS_IMODIFIED 0x0100 /* XFS inode state possibly differs */ - /* to the Linux inode state. */ -#define XFS_ITRUNCATED 0x0200 /* truncated down so flush-on-close */ +#define XFS_IRECLAIM 0x0001 /* we have started reclaiming this inode */ +#define XFS_ISTALE 0x0002 /* inode has been staled */ +#define XFS_IRECLAIMABLE 0x0004 /* inode can be reclaimed */ +#define XFS_INEW 0x0008 /* inode has just been allocated */ +#define XFS_IFILESTREAM 0x0010 /* inode is in a filestream directory */ +#define XFS_ITRUNCATED 0x0020 /* truncated down so flush-on-close */ /* * Flags for inode locking. @@ -477,16 +483,8 @@ ((pip)->i_d.di_mode & S_ISGID)) /* - * Flags for xfs_iget() - */ -#define XFS_IGET_CREATE 0x1 -#define XFS_IGET_BULKSTAT 0x2 - -/* * xfs_iget.c prototypes. */ -void xfs_ihash_init(struct xfs_mount *); -void xfs_ihash_free(struct xfs_mount *); xfs_inode_t *xfs_inode_incore(struct xfs_mount *, xfs_ino_t, struct xfs_trans *); int xfs_iget(struct xfs_mount *, struct xfs_trans *, xfs_ino_t, @@ -501,14 +499,10 @@ uint xfs_ilock_map_shared(xfs_inode_t *); void xfs_iunlock_map_shared(xfs_inode_t *, uint); void xfs_ireclaim(xfs_inode_t *); -int xfs_finish_reclaim(xfs_inode_t *, int, int); -int xfs_finish_reclaim_all(struct xfs_mount *, int); /* * xfs_inode.c prototypes. */ -int xfs_iread(struct xfs_mount *, struct xfs_trans *, xfs_ino_t, - xfs_inode_t **, xfs_daddr_t, uint); int xfs_ialloc(struct xfs_trans *, xfs_inode_t *, mode_t, xfs_nlink_t, xfs_dev_t, struct cred *, xfs_prid_t, int, struct xfs_buf **, boolean_t *, xfs_inode_t **); @@ -522,14 +516,10 @@ xfs_fsize_t, int, int); int xfs_iunlink(struct xfs_trans *, xfs_inode_t *); -struct xfs_inode * xfs_inode_alloc(struct xfs_mount *, xfs_ino_t); -void xfs_idestroy(xfs_inode_t *); -void xfs_iextract(xfs_inode_t *); void xfs_iext_realloc(xfs_inode_t *, int, int); void xfs_ipin(xfs_inode_t *); void xfs_iunpin(xfs_inode_t *); int xfs_iflush(xfs_inode_t *, uint); -void xfs_iflush_all(struct xfs_mount *); void xfs_ichgtime(xfs_inode_t *, int); xfs_fsize_t xfs_file_last_byte(xfs_inode_t *); void xfs_lock_inodes(xfs_inode_t **, int, uint); @@ -538,14 +528,70 @@ void xfs_synchronize_atime(xfs_inode_t *); void xfs_mark_inode_dirty_sync(xfs_inode_t *); +#if defined(XFS_INODE_TRACE) + +#define INODE_TRACE_SIZE 16 /* number of trace entries */ +#define INODE_KTRACE_ENTRY 1 +#define INODE_KTRACE_EXIT 2 +#define INODE_KTRACE_HOLD 3 +#define INODE_KTRACE_REF 4 +#define INODE_KTRACE_RELE 5 + +extern void _xfs_itrace_entry(struct xfs_inode *, const char *, inst_t *); +extern void _xfs_itrace_exit(struct xfs_inode *, const char *, inst_t *); +extern void xfs_itrace_hold(struct xfs_inode *, char *, int, inst_t *); +extern void _xfs_itrace_ref(struct xfs_inode *, char *, int, inst_t *); +extern void xfs_itrace_rele(struct xfs_inode *, char *, int, inst_t *); +#define xfs_itrace_entry(ip) \ + _xfs_itrace_entry(ip, __func__, (inst_t *)__return_address) +#define xfs_itrace_exit(ip) \ + _xfs_itrace_exit(ip, __func__, (inst_t *)__return_address) +#define xfs_itrace_exit_tag(ip, tag) \ + _xfs_itrace_exit(ip, tag, (inst_t *)__return_address) +#define xfs_itrace_ref(ip) \ + _xfs_itrace_ref(ip, __FILE__, __LINE__, (inst_t *)__return_address) + +#else +#define xfs_itrace_entry(a) +#define xfs_itrace_exit(a) +#define xfs_itrace_exit_tag(a, b) +#define xfs_itrace_hold(a, b, c, d) +#define xfs_itrace_ref(a) +#define xfs_itrace_rele(a, b, c, d) +#endif + +#define IHOLD(ip) \ +do { \ + ASSERT(atomic_read(&VFS_I(ip)->i_count) > 0) ; \ + atomic_inc(&(VFS_I(ip)->i_count)); \ + xfs_itrace_hold((ip), __FILE__, __LINE__, (inst_t *)__return_address); \ +} while (0) + +#define IRELE(ip) \ +do { \ + xfs_itrace_rele((ip), __FILE__, __LINE__, (inst_t *)__return_address); \ + iput(VFS_I(ip)); \ +} while (0) + #endif /* __KERNEL__ */ +/* + * Flags for xfs_iget() + */ +#define XFS_IGET_CREATE 0x1 +#define XFS_IGET_BULKSTAT 0x2 + +int xfs_inotobp(struct xfs_mount *, struct xfs_trans *, + xfs_ino_t, struct xfs_dinode **, + struct xfs_buf **, int *, uint); int xfs_itobp(struct xfs_mount *, struct xfs_trans *, struct xfs_inode *, struct xfs_dinode **, - struct xfs_buf **, xfs_daddr_t, uint, uint); + struct xfs_buf **, uint); +int xfs_iread(struct xfs_mount *, struct xfs_trans *, + struct xfs_inode *, xfs_daddr_t, uint); void xfs_dinode_from_disk(struct xfs_icdinode *, - struct xfs_dinode_core *); -void xfs_dinode_to_disk(struct xfs_dinode_core *, + struct xfs_dinode *); +void xfs_dinode_to_disk(struct xfs_dinode *, struct xfs_icdinode *); void xfs_idestroy_fork(struct xfs_inode *, int); void xfs_idata_realloc(struct xfs_inode *, int, int); Index: xfs-cmds/xfsprogs/include/xfs_log.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_log.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_log.h 2008-12-06 20:05:49.000000000 +0100 @@ -134,6 +134,7 @@ #ifdef __KERNEL__ /* Log manager interfaces */ struct xfs_mount; +struct xlog_ticket; xfs_lsn_t xfs_log_done(struct xfs_mount *mp, xfs_log_ticket_t ticket, void **iclog, @@ -177,6 +178,9 @@ void xlog_iodone(struct xfs_buf *); +struct xlog_ticket * xfs_log_ticket_get(struct xlog_ticket *ticket); +void xfs_log_ticket_put(struct xlog_ticket *ticket); + #endif Index: xfs-cmds/xfsprogs/include/xfs_log_priv.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_log_priv.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_log_priv.h 2008-12-06 20:05:49.000000000 +0100 @@ -245,6 +245,7 @@ struct xlog_ticket *t_next; /* :4|8 */ struct xlog_ticket *t_prev; /* :4|8 */ xlog_tid_t t_tid; /* transaction identifier : 4 */ + atomic_t t_ref; /* ticket reference count : 4 */ int t_curr_res; /* current reservation in bytes : 4 */ int t_unit_res; /* unit reservation in bytes : 4 */ char t_ocnt; /* original count : 1 */ @@ -309,6 +310,16 @@ } xlog_rec_ext_header_t; #ifdef __KERNEL__ + +/* + * Quite misnamed, because this union lays out the actual on-disk log buffer. + */ +typedef union xlog_in_core2 { + xlog_rec_header_t hic_header; + xlog_rec_ext_header_t hic_xheader; + char hic_sector[XLOG_HEADER_SIZE]; +} xlog_in_core_2_t; + /* * - A log record header is 512 bytes. There is plenty of room to grow the * xlog_rec_header_t into the reserved space. @@ -338,7 +349,7 @@ * We'll put all the read-only and l_icloglock fields in the first cacheline, * and move everything else out to subsequent cachelines. */ -typedef struct xlog_iclog_fields { +typedef struct xlog_in_core { sv_t ic_force_wait; sv_t ic_write_wait; struct xlog_in_core *ic_next; @@ -361,41 +372,11 @@ /* reference counts need their own cacheline */ atomic_t ic_refcnt ____cacheline_aligned_in_smp; -} xlog_iclog_fields_t; - -typedef union xlog_in_core2 { - xlog_rec_header_t hic_header; - xlog_rec_ext_header_t hic_xheader; - char hic_sector[XLOG_HEADER_SIZE]; -} xlog_in_core_2_t; - -typedef struct xlog_in_core { - xlog_iclog_fields_t hic_fields; - xlog_in_core_2_t *hic_data; + xlog_in_core_2_t *ic_data; +#define ic_header ic_data->hic_header } xlog_in_core_t; /* - * Defines to save our code from this glop. - */ -#define ic_force_wait hic_fields.ic_force_wait -#define ic_write_wait hic_fields.ic_write_wait -#define ic_next hic_fields.ic_next -#define ic_prev hic_fields.ic_prev -#define ic_bp hic_fields.ic_bp -#define ic_log hic_fields.ic_log -#define ic_callback hic_fields.ic_callback -#define ic_callback_lock hic_fields.ic_callback_lock -#define ic_callback_tail hic_fields.ic_callback_tail -#define ic_trace hic_fields.ic_trace -#define ic_size hic_fields.ic_size -#define ic_offset hic_fields.ic_offset -#define ic_refcnt hic_fields.ic_refcnt -#define ic_bwritecnt hic_fields.ic_bwritecnt -#define ic_state hic_fields.ic_state -#define ic_datap hic_fields.ic_datap -#define ic_header hic_data->hic_header - -/* * The reservation head lsn is not made up of a cycle number and block number. * Instead, it uses a cycle number and byte number. Logs don't expect to * overflow 31 bits worth of byte offset, so using a byte number will mean @@ -404,6 +385,7 @@ typedef struct log { /* The following fields don't need locking */ struct xfs_mount *l_mp; /* mount point */ + struct xfs_ail *l_ailp; /* AIL log is working with */ struct xfs_buf *l_xbuf; /* extra buffer for log * wrapping */ struct xfs_buftarg *l_targ; /* buftarg of log */ Index: xfs-cmds/xfsprogs/include/xfs_mount.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_mount.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_mount.h 2008-12-06 20:05:49.000000000 +0100 @@ -18,7 +18,6 @@ #ifndef __XFS_MOUNT_H__ #define __XFS_MOUNT_H__ - typedef struct xfs_trans_reservations { uint tr_write; /* extent alloc trans */ uint tr_itruncate; /* truncate trans */ @@ -52,6 +51,8 @@ #else /* __KERNEL__ */ +#include "xfs_sync.h" + struct cred; struct log; struct xfs_mount_args; @@ -62,6 +63,7 @@ struct xfs_swapext; struct xfs_mru_cache; struct xfs_nameops; +struct xfs_ail; /* * Prototypes and functions for the Data Migration subsystem. @@ -115,7 +117,7 @@ typedef int (*xfs_qminit_t)(struct xfs_mount *, uint *, uint *); typedef int (*xfs_qmmount_t)(struct xfs_mount *, uint, uint); -typedef int (*xfs_qmunmount_t)(struct xfs_mount *); +typedef void (*xfs_qmunmount_t)(struct xfs_mount *); typedef void (*xfs_qmdone_t)(struct xfs_mount *); typedef void (*xfs_dqrele_t)(struct xfs_dquot *); typedef int (*xfs_dqattach_t)(struct xfs_inode *, uint); @@ -132,7 +134,7 @@ struct xfs_dquot **, struct xfs_dquot *); typedef int (*xfs_dqvopchownresv_t)(struct xfs_trans *, struct xfs_inode *, struct xfs_dquot *, struct xfs_dquot *, uint); -typedef void (*xfs_dqstatvfs_t)(struct xfs_inode *, bhv_statvfs_t *); +typedef void (*xfs_dqstatvfs_t)(struct xfs_inode *, struct kstatfs *); typedef int (*xfs_dqsync_t)(struct xfs_mount *, int flags); typedef int (*xfs_quotactl_t)(struct xfs_mount *, int, int, xfs_caddr_t); @@ -223,18 +225,10 @@ #define xfs_icsb_sync_counters_locked(mp, flags) do { } while (0) #endif -typedef struct xfs_ail { - struct list_head xa_ail; - uint xa_gen; - struct task_struct *xa_task; - xfs_lsn_t xa_target; -} xfs_ail_t; - typedef struct xfs_mount { struct super_block *m_super; xfs_tid_t m_tid; /* next unused tid for fs */ - spinlock_t m_ail_lock; /* fs AIL mutex */ - xfs_ail_t m_ail; /* fs active log item list */ + struct xfs_ail *m_ail; /* fs active log item list */ xfs_sb_t m_sb; /* copy of fs superblock */ spinlock_t m_sb_lock; /* sb counter lock */ struct xfs_buf *m_sb_bp; /* buffer for superblock */ @@ -247,10 +241,6 @@ xfs_agnumber_t m_agirotor; /* last ag dir inode alloced */ spinlock_t m_agirotor_lock;/* .. and lock protecting it */ xfs_agnumber_t m_maxagi; /* highest inode alloc group */ - struct xfs_inode *m_inodes; /* active inode list */ - struct list_head m_del_inodes; /* inodes to reclaim */ - mutex_t m_ilock; /* inode list mutex */ - uint m_ireclaims; /* count of calls to reclaim*/ uint m_readio_log; /* min read size log bytes */ uint m_readio_blocks; /* min read size blocks */ uint m_writeio_log; /* min write size log bytes */ @@ -311,9 +301,6 @@ int m_sinoalign; /* stripe unit inode alignment */ int m_attr_magicpct;/* 37% of the blocksize */ int m_dir_magicpct; /* 37% of the dir blocksize */ - __uint8_t m_mk_sharedro; /* mark shared ro on unmount */ - __uint8_t m_inode_quiesce;/* call quiesce on new inodes. - field governed by m_ilock */ __uint8_t m_sectbb_log; /* sectlog - BBSHIFT */ const struct xfs_nameops *m_dirnameops; /* vector of dir name ops */ int m_dirblksize; /* directory block sz--bytes */ @@ -340,7 +327,6 @@ 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; - struct vfsmount *m_vfsmount; } xfs_mount_t; /* @@ -362,7 +348,6 @@ #define XFS_MOUNT_ATTR2 (1ULL << 8) /* allow use of attr2 format */ #define XFS_MOUNT_GRPID (1ULL << 9) /* group-ID assigned from directory */ #define XFS_MOUNT_NORECOVERY (1ULL << 10) /* no recovery - dirty fs */ -#define XFS_MOUNT_SHARED (1ULL << 11) /* shared mount */ #define XFS_MOUNT_DFLT_IOSIZE (1ULL << 12) /* set default i/o size */ #define XFS_MOUNT_OSYNCISOSYNC (1ULL << 13) /* o_sync is REALLY o_sync */ /* osyncisdsync is now default*/ @@ -439,6 +424,16 @@ #define xfs_force_shutdown(m,f) \ xfs_do_force_shutdown(m, f, __FILE__, __LINE__) +#define SHUTDOWN_META_IO_ERROR 0x0001 /* write attempt to metadata failed */ +#define SHUTDOWN_LOG_IO_ERROR 0x0002 /* write attempt to the log failed */ +#define SHUTDOWN_FORCE_UMOUNT 0x0004 /* shutdown from a forced unmount */ +#define SHUTDOWN_CORRUPT_INCORE 0x0008 /* corrupt in-memory data structures */ +#define SHUTDOWN_REMOTE_REQ 0x0010 /* shutdown came from remote cell */ +#define SHUTDOWN_DEVICE_REQ 0x0020 /* failed all paths to the device */ + +#define xfs_test_for_freeze(mp) ((mp)->m_super->s_frozen) +#define xfs_wait_for_freeze(mp,l) vfs_check_frozen((mp)->m_super, (l)) + /* * Flags for xfs_mountfs */ @@ -514,7 +509,6 @@ extern void xfs_unmountfs(xfs_mount_t *); extern int xfs_unmountfs_writesb(xfs_mount_t *); -extern int xfs_unmount_flush(xfs_mount_t *, int); extern int xfs_mod_incore_sb(xfs_mount_t *, xfs_sb_field_t, int64_t, int); extern int xfs_mod_incore_sb_unlocked(xfs_mount_t *, xfs_sb_field_t, int64_t, int); @@ -524,13 +518,11 @@ extern int xfs_readsb(xfs_mount_t *, int); extern void xfs_freesb(xfs_mount_t *); extern int xfs_fs_writable(xfs_mount_t *); -extern int xfs_syncsub(xfs_mount_t *, int, int *); -extern int xfs_sync_inodes(xfs_mount_t *, int, int *); extern int xfs_sb_validate_fsb_count(struct xfs_sb *, __uint64_t); -extern int xfs_dmops_get(struct xfs_mount *, struct xfs_mount_args *); +extern int xfs_dmops_get(struct xfs_mount *); extern void xfs_dmops_put(struct xfs_mount *); -extern int xfs_qmops_get(struct xfs_mount *, struct xfs_mount_args *); +extern int xfs_qmops_get(struct xfs_mount *); extern void xfs_qmops_put(struct xfs_mount *); extern struct xfs_dmops xfs_dmcore_xfs; Index: xfs-cmds/xfsprogs/include/xfs_quota.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_quota.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_quota.h 2008-12-06 20:05:49.000000000 +0100 @@ -84,11 +84,9 @@ #define XFS_DQ_USER 0x0001 /* a user quota */ #define XFS_DQ_PROJ 0x0002 /* project quota */ #define XFS_DQ_GROUP 0x0004 /* a group quota */ -#define XFS_DQ_FLOCKED 0x0008 /* flush lock taken */ -#define XFS_DQ_DIRTY 0x0010 /* dquot is dirty */ -#define XFS_DQ_WANT 0x0020 /* for lookup/reclaim race */ -#define XFS_DQ_INACTIVE 0x0040 /* dq off mplist & hashlist */ -#define XFS_DQ_MARKER 0x0080 /* sentinel */ +#define XFS_DQ_DIRTY 0x0008 /* dquot is dirty */ +#define XFS_DQ_WANT 0x0010 /* for lookup/reclaim race */ +#define XFS_DQ_INACTIVE 0x0020 /* dq off mplist & hashlist */ #define XFS_DQ_ALLTYPES (XFS_DQ_USER|XFS_DQ_PROJ|XFS_DQ_GROUP) Index: xfs-cmds/xfsprogs/include/xfs_sb.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_sb.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_sb.h 2008-12-06 20:05:49.000000000 +0100 @@ -297,30 +297,34 @@ #define XFS_SB_VERSION_NUM(sbp) ((sbp)->sb_versionnum & XFS_SB_VERSION_NUMBITS) -#ifdef __KERNEL__ static inline int xfs_sb_good_version(xfs_sb_t *sbp) { - return (((sbp->sb_versionnum >= XFS_SB_VERSION_1) && \ - (sbp->sb_versionnum <= XFS_SB_VERSION_3)) || \ - ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - !((sbp->sb_versionnum & ~XFS_SB_VERSION_OKREALBITS) || \ - ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) && \ - (sbp->sb_features2 & ~XFS_SB_VERSION2_OKREALBITS))) && \ - (sbp->sb_shared_vn <= XFS_SB_MAX_SHARED_VN))); -} + /* We always support version 1-3 */ + if (sbp->sb_versionnum >= XFS_SB_VERSION_1 && + sbp->sb_versionnum <= XFS_SB_VERSION_3) + return 1; + + /* We support version 4 if all feature bits are supported */ + if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) { + if ((sbp->sb_versionnum & ~XFS_SB_VERSION_OKREALBITS) || + ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) && + (sbp->sb_features2 & ~XFS_SB_VERSION2_OKREALBITS))) + return 0; + +#ifdef __KERNEL__ + if (sbp->sb_shared_vn > XFS_SB_MAX_SHARED_VN) + return 0; #else -static inline int xfs_sb_good_version(xfs_sb_t *sbp) -{ - return (((sbp->sb_versionnum >= XFS_SB_VERSION_1) && \ - (sbp->sb_versionnum <= XFS_SB_VERSION_3)) || \ - ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - !((sbp->sb_versionnum & ~XFS_SB_VERSION_OKREALBITS) || \ - ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) && \ - (sbp->sb_features2 & ~XFS_SB_VERSION2_OKREALBITS))) && \ - (!(sbp->sb_versionnum & XFS_SB_VERSION_SHAREDBIT) || \ - (sbp->sb_shared_vn <= XFS_SB_MAX_SHARED_VN)))); + if ((sbp->sb_versionnum & XFS_SB_VERSION_SHAREDBIT) && + sbp->sb_shared_vn > XFS_SB_MAX_SHARED_VN) + return 0; +#endif + + return 1; + } + + return 0; } -#endif /* __KERNEL__ */ /* * Detect a mismatched features2 field. Older kernels read/wrote @@ -333,123 +337,127 @@ static inline unsigned xfs_sb_version_tonew(unsigned v) { - return ((((v) == XFS_SB_VERSION_1) ? \ - 0 : \ - (((v) == XFS_SB_VERSION_2) ? \ - XFS_SB_VERSION_ATTRBIT : \ - (XFS_SB_VERSION_ATTRBIT | XFS_SB_VERSION_NLINKBIT))) | \ - XFS_SB_VERSION_4); + if (v == XFS_SB_VERSION_1) + return XFS_SB_VERSION_4; + + if (v == XFS_SB_VERSION_2) + return XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT; + + return XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT | + XFS_SB_VERSION_NLINKBIT; } static inline unsigned xfs_sb_version_toold(unsigned v) { - return (((v) & (XFS_SB_VERSION_QUOTABIT | XFS_SB_VERSION_ALIGNBIT)) ? \ - 0 : \ - (((v) & XFS_SB_VERSION_NLINKBIT) ? \ - XFS_SB_VERSION_3 : \ - (((v) & XFS_SB_VERSION_ATTRBIT) ? \ - XFS_SB_VERSION_2 : \ - XFS_SB_VERSION_1))); + if (v & (XFS_SB_VERSION_QUOTABIT | XFS_SB_VERSION_ALIGNBIT)) + return 0; + if (v & XFS_SB_VERSION_NLINKBIT) + return XFS_SB_VERSION_3; + if (v & XFS_SB_VERSION_ATTRBIT) + return XFS_SB_VERSION_2; + return XFS_SB_VERSION_1; } static inline int xfs_sb_version_hasattr(xfs_sb_t *sbp) { - return ((sbp)->sb_versionnum == XFS_SB_VERSION_2) || \ - ((sbp)->sb_versionnum == XFS_SB_VERSION_3) || \ - ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_ATTRBIT)); + return sbp->sb_versionnum == XFS_SB_VERSION_2 || + sbp->sb_versionnum == XFS_SB_VERSION_3 || + (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_ATTRBIT)); } static inline void xfs_sb_version_addattr(xfs_sb_t *sbp) { - (sbp)->sb_versionnum = (((sbp)->sb_versionnum == XFS_SB_VERSION_1) ? \ - XFS_SB_VERSION_2 : \ - ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) ? \ - ((sbp)->sb_versionnum | XFS_SB_VERSION_ATTRBIT) : \ - (XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT))); + if (sbp->sb_versionnum == XFS_SB_VERSION_1) + sbp->sb_versionnum = XFS_SB_VERSION_2; + else if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) + sbp->sb_versionnum |= XFS_SB_VERSION_ATTRBIT; + else + sbp->sb_versionnum = XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT; } static inline int xfs_sb_version_hasnlink(xfs_sb_t *sbp) { - return ((sbp)->sb_versionnum == XFS_SB_VERSION_3) || \ - ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_NLINKBIT)); + return sbp->sb_versionnum == XFS_SB_VERSION_3 || + (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_NLINKBIT)); } static inline void xfs_sb_version_addnlink(xfs_sb_t *sbp) { - (sbp)->sb_versionnum = ((sbp)->sb_versionnum <= XFS_SB_VERSION_2 ? \ - XFS_SB_VERSION_3 : \ - ((sbp)->sb_versionnum | XFS_SB_VERSION_NLINKBIT)); + if (sbp->sb_versionnum <= XFS_SB_VERSION_2) + sbp->sb_versionnum = XFS_SB_VERSION_3; + else + sbp->sb_versionnum |= XFS_SB_VERSION_NLINKBIT; } static inline int xfs_sb_version_hasquota(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_QUOTABIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_QUOTABIT); } static inline void xfs_sb_version_addquota(xfs_sb_t *sbp) { - (sbp)->sb_versionnum = \ - (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 ? \ - ((sbp)->sb_versionnum | XFS_SB_VERSION_QUOTABIT) : \ - (xfs_sb_version_tonew((sbp)->sb_versionnum) | \ - XFS_SB_VERSION_QUOTABIT)); + if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) + sbp->sb_versionnum |= XFS_SB_VERSION_QUOTABIT; + else + sbp->sb_versionnum = xfs_sb_version_tonew(sbp->sb_versionnum) | + XFS_SB_VERSION_QUOTABIT; } static inline int xfs_sb_version_hasalign(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_ALIGNBIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_ALIGNBIT); } static inline int xfs_sb_version_hasdalign(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_DALIGNBIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_DALIGNBIT); } static inline int xfs_sb_version_hasshared(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_SHAREDBIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_SHAREDBIT); } static inline int xfs_sb_version_hasdirv2(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_DIRV2BIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_DIRV2BIT); } static inline int xfs_sb_version_haslogv2(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_LOGV2BIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_LOGV2BIT); } static inline int xfs_sb_version_hasextflgbit(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_EXTFLGBIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_EXTFLGBIT); } static inline int xfs_sb_version_hassector(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_SECTORBIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_SECTORBIT); } static inline int xfs_sb_version_hasasciici(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && (sbp->sb_versionnum & XFS_SB_VERSION_BORGBIT); } static inline int xfs_sb_version_hasmorebits(xfs_sb_t *sbp) { - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ - ((sbp)->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT); + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && + (sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT); } /* @@ -464,22 +472,20 @@ static inline int xfs_sb_version_haslazysbcount(xfs_sb_t *sbp) { - return (xfs_sb_version_hasmorebits(sbp) && \ - ((sbp)->sb_features2 & XFS_SB_VERSION2_LAZYSBCOUNTBIT)); + return xfs_sb_version_hasmorebits(sbp) && + (sbp->sb_features2 & XFS_SB_VERSION2_LAZYSBCOUNTBIT); } static inline int xfs_sb_version_hasattr2(xfs_sb_t *sbp) { - return (xfs_sb_version_hasmorebits(sbp)) && \ - ((sbp)->sb_features2 & XFS_SB_VERSION2_ATTR2BIT); + return xfs_sb_version_hasmorebits(sbp) && + (sbp->sb_features2 & XFS_SB_VERSION2_ATTR2BIT); } static inline void xfs_sb_version_addattr2(xfs_sb_t *sbp) { - ((sbp)->sb_versionnum = \ - ((sbp)->sb_versionnum | XFS_SB_VERSION_MOREBITSBIT), \ - ((sbp)->sb_features2 = \ - ((sbp)->sb_features2 | XFS_SB_VERSION2_ATTR2BIT))); + sbp->sb_versionnum |= XFS_SB_VERSION_MOREBITSBIT; + sbp->sb_features2 |= XFS_SB_VERSION2_ATTR2BIT; } static inline void xfs_sb_version_removeattr2(xfs_sb_t *sbp) Index: xfs-cmds/xfsprogs/include/xfs_trans.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/xfs_trans.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/xfs_trans.h 2008-12-06 20:05:49.000000000 +0100 @@ -768,6 +768,7 @@ xfs_lsn_t li_lsn; /* last on-disk lsn */ struct xfs_log_item_desc *li_desc; /* ptr to current desc*/ struct xfs_mount *li_mountp; /* ptr to fs mount */ + struct xfs_ail *li_ailp; /* ptr to AIL */ uint li_type; /* item type */ uint li_flags; /* misc flags */ struct xfs_log_item *li_bio_list; /* buffer item list */ @@ -970,10 +971,6 @@ void xfs_trans_cancel(xfs_trans_t *, int); int xfs_trans_ail_init(struct xfs_mount *); void xfs_trans_ail_destroy(struct xfs_mount *); -void xfs_trans_push_ail(struct xfs_mount *, xfs_lsn_t); -xfs_lsn_t xfs_trans_tail_ail(struct xfs_mount *); -void xfs_trans_unlocked_item(struct xfs_mount *, - xfs_log_item_t *); xfs_log_busy_slot_t *xfs_trans_add_busy(xfs_trans_t *tp, xfs_agnumber_t ag, xfs_extlen_t idx); Index: xfs-cmds/xfsprogs/db/bmap.c =================================================================== --- xfs-cmds.orig/xfsprogs/db/bmap.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/db/bmap.c 2008-12-06 20:05:49.000000000 +0100 @@ -171,9 +171,9 @@ push_cur(); set_cur_inode(iocur_top->ino); dip = iocur_top->data; - if (be32_to_cpu(dip->di_core.di_nextents)) + if (dip->di_nextents) dfork = 1; - if (be16_to_cpu(dip->di_core.di_anextents)) + if (dip->di_anextents) afork = 1; pop_cur(); } Index: xfs-cmds/xfsprogs/db/check.c =================================================================== --- xfs-cmds.orig/xfsprogs/db/check.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/db/check.c 2008-12-06 20:05:49.000000000 +0100 @@ -2502,23 +2502,23 @@ inodata_t *id, xfs_ino_t *parent) { - xfs_fsize_t size = be64_to_cpu(dip->di_core.di_size); + xfs_fsize_t size = be64_to_cpu(dip->di_size); if (size <= XFS_DFORK_DSIZE(dip, mp) && - dip->di_core.di_format == XFS_DINODE_FMT_LOCAL) + dip->di_format == XFS_DINODE_FMT_LOCAL) *parent = process_shortform_dir_v1(dip, dot, dotdot, id); else if (size == XFS_LBSIZE(mp) && - (dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS || - dip->di_core.di_format == XFS_DINODE_FMT_BTREE)) + (dip->di_format == XFS_DINODE_FMT_EXTENTS || + dip->di_format == XFS_DINODE_FMT_BTREE)) *parent = process_leaf_dir_v1(blkmap, dot, dotdot, id); else if (size >= XFS_LBSIZE(mp) && - (dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS || - dip->di_core.di_format == XFS_DINODE_FMT_BTREE)) + (dip->di_format == XFS_DINODE_FMT_EXTENTS || + dip->di_format == XFS_DINODE_FMT_BTREE)) *parent = process_node_dir_v1(blkmap, dot, dotdot, id); else { dbprintf("bad size (%lld) or format (%d) for directory inode " "%lld\n", - size, dip->di_core.di_format, id->ino); + size, dip->di_format, id->ino); error++; return 1; } @@ -2535,25 +2535,25 @@ xfs_ino_t *parent) { xfs_fileoff_t last = 0; - xfs_fsize_t size = be64_to_cpu(dip->di_core.di_size); + xfs_fsize_t size = be64_to_cpu(dip->di_size); if (blkmap) last = blkmap_last_off(blkmap); if (size <= XFS_DFORK_DSIZE(dip, mp) && - dip->di_core.di_format == XFS_DINODE_FMT_LOCAL) + dip->di_format == XFS_DINODE_FMT_LOCAL) *parent = process_sf_dir_v2(dip, dot, dotdot, id); else if (last == mp->m_dirblkfsbs && - (dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS || - dip->di_core.di_format == XFS_DINODE_FMT_BTREE)) + (dip->di_format == XFS_DINODE_FMT_EXTENTS || + dip->di_format == XFS_DINODE_FMT_BTREE)) *parent = process_block_dir_v2(blkmap, dot, dotdot, id); else if (last >= mp->m_dirleafblk + mp->m_dirblkfsbs && - (dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS || - dip->di_core.di_format == XFS_DINODE_FMT_BTREE)) + (dip->di_format == XFS_DINODE_FMT_EXTENTS || + dip->di_format == XFS_DINODE_FMT_BTREE)) *parent = process_leaf_node_dir_v2(blkmap, dot, dotdot, id, size); else { dbprintf("bad size (%lld) or format (%d) for directory inode " "%lld\n", - size, dip->di_core.di_format, id->ino); + size, dip->di_format, id->ino); error++; return 1; } @@ -2639,7 +2639,7 @@ "dev", "local", "extents", "btree", "uuid" }; - libxfs_dinode_from_disk(&idic, &dip->di_core); + libxfs_dinode_from_disk(&idic, dip); ino = XFS_AGINO_TO_INO(mp, be32_to_cpu(agf->agf_seqno), agino); if (!isfree) { @@ -2669,7 +2669,7 @@ idic.di_nblocks, ino); error++; } - if (idic.di_version == XFS_DINODE_VERSION_1) + if (idic.di_version == 1) nlink = idic.di_onlink; else nlink = idic.di_nlink; @@ -2773,7 +2773,7 @@ type = DBM_UNKNOWN; break; } - if (idic.di_version == XFS_DINODE_VERSION_1) + if (idic.di_version == 1) setlink_inode(id, idic.di_onlink, type == DBM_DIR, security); else { sbversion |= XFS_SB_VERSION_NLINKBIT; @@ -2901,12 +2901,12 @@ xfs_fsblock_t bno; bno = XFS_INO_TO_FSB(mp, id->ino); - if (whichfork == XFS_DATA_FORK && be64_to_cpu(dip->di_core.di_size) > + if (whichfork == XFS_DATA_FORK && be64_to_cpu(dip->di_size) > XFS_DFORK_DSIZE(dip, mp)) { if (!sflag || id->ilist || CHECK_BLIST(bno)) dbprintf("local inode %lld data is too large (size " "%lld)\n", - id->ino, be64_to_cpu(dip->di_core.di_size)); + id->ino, be64_to_cpu(dip->di_size)); error++; } else if (whichfork == XFS_ATTR_FORK) { @@ -3638,7 +3638,7 @@ offset = XFS_DIR2_DATA_FIRST_OFFSET; for (i = sf->hdr.count - 1, i8 = 0; i >= 0; i--) { if ((__psint_t)sfe + xfs_dir2_sf_entsize_byentry(sf, sfe) - - (__psint_t)sf > be64_to_cpu(dip->di_core.di_size)) { + (__psint_t)sf > be64_to_cpu(dip->di_size)) { if (!sflag) dbprintf("dir %llu bad size in entry at %d\n", id->ino, @@ -3680,10 +3680,10 @@ sfe = xfs_dir2_sf_nextentry(sf, sfe); } if (i < 0 && (__psint_t)sfe - (__psint_t)sf != - be64_to_cpu(dip->di_core.di_size)) { + be64_to_cpu(dip->di_size)) { if (!sflag) dbprintf("dir %llu size is %lld, should be %u\n", - id->ino, be64_to_cpu(dip->di_core.di_size), + id->ino, be64_to_cpu(dip->di_size), (uint)((char *)sfe - (char *)sf)); error++; } @@ -3760,9 +3760,9 @@ sfe->namelen, sfe->namelen, sfe->name, lino); sfe = xfs_dir_sf_nextentry(sfe); } - if ((__psint_t)sfe - (__psint_t)sf != be64_to_cpu(dip->di_core.di_size)) + if ((__psint_t)sfe - (__psint_t)sf != be64_to_cpu(dip->di_size)) dbprintf("dir %llu size is %lld, should be %d\n", - id->ino, be64_to_cpu(dip->di_core.di_size), + id->ino, be64_to_cpu(dip->di_size), (int)((char *)sfe - (char *)sf)); lino = XFS_GET_DIR_INO8(sf->hdr.parent); cid = find_inode(lino, 1); Index: xfs-cmds/xfsprogs/db/dir2sf.c =================================================================== --- xfs-cmds.orig/xfsprogs/db/dir2sf.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/db/dir2sf.c 2008-12-06 20:05:49.000000000 +0100 @@ -73,10 +73,10 @@ void *obj, int startoff) { - xfs_dir2_sf_t *sf; + xfs_dinode_t *dip = obj; + xfs_dir2_sf_t *sf = (xfs_dir2_sf_t *)XFS_DFORK_DPTR(dip); ASSERT(bitoffs(startoff) == 0); - sf = &((xfs_dinode_t *)obj)->di_u.di_dir2sf; return sf->hdr.i8count == 0; } @@ -86,10 +86,10 @@ void *obj, int startoff) { - xfs_dir2_sf_t *sf; + xfs_dinode_t *dip = obj; + xfs_dir2_sf_t *sf = (xfs_dir2_sf_t *)XFS_DFORK_DPTR(dip); ASSERT(bitoffs(startoff) == 0); - sf = &((xfs_dinode_t *)obj)->di_u.di_dir2sf; return sf->hdr.i8count != 0; } @@ -100,11 +100,11 @@ int startoff, int idx) { - xfs_dir2_sf_t *sf; + xfs_dinode_t *dip = obj; + xfs_dir2_sf_t *sf = (xfs_dir2_sf_t *)XFS_DFORK_DPTR(dip); ASSERT(bitoffs(startoff) == 0); ASSERT(idx == 0); - sf = &((xfs_dinode_t *)obj)->di_u.di_dir2sf; return bitize(sf->hdr.i8count ? (uint)sizeof(xfs_dir2_ino8_t) : (uint)sizeof(xfs_dir2_ino4_t)); Index: xfs-cmds/xfsprogs/db/field.c =================================================================== --- xfs-cmds.orig/xfsprogs/db/field.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/db/field.c 2008-12-06 20:05:49.000000000 +0100 @@ -150,8 +150,6 @@ FTARG_DONULL, fa_dfsbno, NULL }, { FLDT_DINODE_A, "dinode_a", NULL, (char *)inode_a_flds, inode_a_size, FTARG_SIZE|FTARG_OKEMPTY, NULL, inode_a_flds }, - { FLDT_DINODE_CORE, "dinode_core", NULL, (char *)inode_core_flds, - SI(bitsz(xfs_dinode_core_t)), 0, NULL, inode_core_flds }, { FLDT_DINODE_FMT, "dinode_fmt", fp_dinode_fmt, NULL, SI(bitsz(__int8_t)), 0, NULL, NULL }, { FLDT_DINODE_U, "dinode_u", NULL, (char *)inode_u_flds, inode_u_size, Index: xfs-cmds/xfsprogs/db/field.h =================================================================== --- xfs-cmds.orig/xfsprogs/db/field.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/db/field.h 2008-12-06 20:05:49.000000000 +0100 @@ -72,7 +72,6 @@ FLDT_DFILOFFD, FLDT_DFSBNO, FLDT_DINODE_A, - FLDT_DINODE_CORE, FLDT_DINODE_FMT, FLDT_DINODE_U, FLDT_DIR, Index: xfs-cmds/xfsprogs/db/frag.c =================================================================== --- xfs-cmds.orig/xfsprogs/db/frag.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/db/frag.c 2008-12-06 20:05:49.000000000 +0100 @@ -308,20 +308,18 @@ xfs_dinode_t *dip) { __uint64_t actual; - xfs_dinode_core_t *dic; __uint64_t ideal; xfs_ino_t ino; int skipa; int skipd; - dic = &dip->di_core; ino = XFS_AGINO_TO_INO(mp, be32_to_cpu(agf->agf_seqno), agino); - switch (be16_to_cpu(dic->di_mode) & S_IFMT) { + switch (be16_to_cpu(dip->di_mode) & S_IFMT) { case S_IFDIR: skipd = !dflag; break; case S_IFREG: - if (!rflag && (be16_to_cpu(dic->di_flags) & XFS_DIFLAG_REALTIME)) + if (!rflag && (be16_to_cpu(dip->di_flags) & XFS_DIFLAG_REALTIME)) skipd = 1; else if (!Rflag && (ino == mp->m_sb.sb_rbmino || Index: xfs-cmds/xfsprogs/db/inode.c =================================================================== --- xfs-cmds.orig/xfsprogs/db/inode.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/db/inode.c 2008-12-06 20:05:49.000000000 +0100 @@ -40,6 +40,7 @@ static int inode_core_projid_count(void *obj, int startoff); static int inode_core_nlinkv1_count(void *obj, int startoff); static int inode_f(int argc, char **argv); +static int inode_u_offset(void *obj, int startoff, int idx); static int inode_u_bmbt_count(void *obj, int startoff); static int inode_u_bmx_count(void *obj, int startoff); static int inode_u_c_count(void *obj, int startoff); @@ -60,91 +61,85 @@ #define OFF(f) bitize(offsetof(xfs_dinode_t, di_ ## f)) const field_t inode_flds[] = { - { "core", FLDT_DINODE_CORE, OI(OFF(core)), C1, 0, TYP_NONE }, - { "next_unlinked", FLDT_AGINO, OI(OFF(next_unlinked)), C1, 0, - TYP_INODE }, - { "u", FLDT_DINODE_U, OI(OFF(u)), C1, 0, TYP_NONE }, - { "a", FLDT_DINODE_A, inode_a_offset, inode_a_count, - FLD_COUNT|FLD_OFFSET, TYP_NONE }, - { NULL } -}; - -#define COFF(f) bitize(offsetof(xfs_dinode_core_t, di_ ## f)) -const field_t inode_core_flds[] = { - { "magic", FLDT_UINT16X, OI(COFF(magic)), C1, 0, TYP_NONE }, - { "mode", FLDT_UINT16O, OI(COFF(mode)), C1, 0, TYP_NONE }, - { "version", FLDT_INT8D, OI(COFF(version)), C1, 0, TYP_NONE }, - { "format", FLDT_DINODE_FMT, OI(COFF(format)), C1, 0, TYP_NONE }, - { "nlinkv1", FLDT_UINT16D, OI(COFF(onlink)), inode_core_nlinkv1_count, + { "magic", FLDT_UINT16X, OI(OFF(magic)), C1, 0, TYP_NONE }, + { "mode", FLDT_UINT16O, OI(OFF(mode)), C1, 0, TYP_NONE }, + { "version", FLDT_INT8D, OI(OFF(version)), C1, 0, TYP_NONE }, + { "format", FLDT_DINODE_FMT, OI(OFF(format)), C1, 0, TYP_NONE }, + { "nlinkv1", FLDT_UINT16D, OI(OFF(onlink)), inode_core_nlinkv1_count, FLD_COUNT, TYP_NONE }, - { "nlinkv2", FLDT_UINT32D, OI(COFF(nlink)), inode_core_nlinkv2_count, + { "nlinkv2", FLDT_UINT32D, OI(OFF(nlink)), inode_core_nlinkv2_count, FLD_COUNT, TYP_NONE }, - { "onlink", FLDT_UINT16D, OI(COFF(onlink)), inode_core_onlink_count, + { "onlink", FLDT_UINT16D, OI(OFF(onlink)), inode_core_onlink_count, FLD_COUNT, TYP_NONE }, - { "projid", FLDT_UINT16D, OI(COFF(projid)), inode_core_projid_count, + { "projid", FLDT_UINT16D, OI(OFF(projid)), inode_core_projid_count, FLD_COUNT, TYP_NONE }, - { "uid", FLDT_UINT32D, OI(COFF(uid)), C1, 0, TYP_NONE }, - { "gid", FLDT_UINT32D, OI(COFF(gid)), C1, 0, TYP_NONE }, - { "flushiter", FLDT_UINT16D, OI(COFF(flushiter)), C1, 0, TYP_NONE }, - { "atime", FLDT_TIMESTAMP, OI(COFF(atime)), C1, 0, TYP_NONE }, - { "mtime", FLDT_TIMESTAMP, OI(COFF(mtime)), C1, 0, TYP_NONE }, - { "ctime", FLDT_TIMESTAMP, OI(COFF(ctime)), C1, 0, TYP_NONE }, - { "size", FLDT_FSIZE, OI(COFF(size)), C1, 0, TYP_NONE }, - { "nblocks", FLDT_DRFSBNO, OI(COFF(nblocks)), C1, 0, TYP_NONE }, - { "extsize", FLDT_EXTLEN, OI(COFF(extsize)), C1, 0, TYP_NONE }, - { "nextents", FLDT_EXTNUM, OI(COFF(nextents)), C1, 0, TYP_NONE }, - { "naextents", FLDT_AEXTNUM, OI(COFF(anextents)), C1, 0, TYP_NONE }, - { "forkoff", FLDT_UINT8D, OI(COFF(forkoff)), C1, 0, TYP_NONE }, - { "aformat", FLDT_DINODE_FMT, OI(COFF(aformat)), C1, 0, TYP_NONE }, - { "dmevmask", FLDT_UINT32X, OI(COFF(dmevmask)), C1, 0, TYP_NONE }, - { "dmstate", FLDT_UINT16D, OI(COFF(dmstate)), C1, 0, TYP_NONE }, - { "flags", FLDT_UINT16X, OI(COFF(flags)), C1, FLD_SKIPALL, TYP_NONE }, + { "uid", FLDT_UINT32D, OI(OFF(uid)), C1, 0, TYP_NONE }, + { "gid", FLDT_UINT32D, OI(OFF(gid)), C1, 0, TYP_NONE }, + { "flushiter", FLDT_UINT16D, OI(OFF(flushiter)), C1, 0, TYP_NONE }, + { "atime", FLDT_TIMESTAMP, OI(OFF(atime)), C1, 0, TYP_NONE }, + { "mtime", FLDT_TIMESTAMP, OI(OFF(mtime)), C1, 0, TYP_NONE }, + { "ctime", FLDT_TIMESTAMP, OI(OFF(ctime)), C1, 0, TYP_NONE }, + { "size", FLDT_FSIZE, OI(OFF(size)), C1, 0, TYP_NONE }, + { "nblocks", FLDT_DRFSBNO, OI(OFF(nblocks)), C1, 0, TYP_NONE }, + { "extsize", FLDT_EXTLEN, OI(OFF(extsize)), C1, 0, TYP_NONE }, + { "nextents", FLDT_EXTNUM, OI(OFF(nextents)), C1, 0, TYP_NONE }, + { "naextents", FLDT_AEXTNUM, OI(OFF(anextents)), C1, 0, TYP_NONE }, + { "forkoff", FLDT_UINT8D, OI(OFF(forkoff)), C1, 0, TYP_NONE }, + { "aformat", FLDT_DINODE_FMT, OI(OFF(aformat)), C1, 0, TYP_NONE }, + { "dmevmask", FLDT_UINT32X, OI(OFF(dmevmask)), C1, 0, TYP_NONE }, + { "dmstate", FLDT_UINT16D, OI(OFF(dmstate)), C1, 0, TYP_NONE }, + { "flags", FLDT_UINT16X, OI(OFF(flags)), C1, FLD_SKIPALL, TYP_NONE }, { "newrtbm", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NEWRTBM_BIT - 1), C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NEWRTBM_BIT - 1), C1, 0, TYP_NONE }, { "prealloc", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_PREALLOC_BIT - 1), C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_PREALLOC_BIT - 1), C1, 0, TYP_NONE }, { "realtime", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_REALTIME_BIT - 1), C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_REALTIME_BIT - 1), C1, 0, TYP_NONE }, { "immutable", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_IMMUTABLE_BIT-1), C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_IMMUTABLE_BIT-1), C1, 0, TYP_NONE }, { "append", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_APPEND_BIT - 1), C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_APPEND_BIT - 1), C1, 0, TYP_NONE }, { "sync", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_SYNC_BIT - 1), C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_SYNC_BIT - 1), C1, 0, TYP_NONE }, { "noatime", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NOATIME_BIT - 1), C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NOATIME_BIT - 1), C1, 0, TYP_NONE }, { "nodump", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NODUMP_BIT - 1), C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NODUMP_BIT - 1), C1, 0, TYP_NONE }, { "rtinherit", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_RTINHERIT_BIT-1), C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_RTINHERIT_BIT-1), C1, 0, TYP_NONE }, { "projinherit", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_PROJINHERIT_BIT-1),C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_PROJINHERIT_BIT-1),C1, 0, TYP_NONE }, { "nosymlinks", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NOSYMLINKS_BIT-1), C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NOSYMLINKS_BIT-1), C1, 0, TYP_NONE }, { "extsz", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_EXTSIZE_BIT-1),C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_EXTSIZE_BIT-1),C1, 0, TYP_NONE }, { "extszinherit", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_EXTSZINHERIT_BIT-1),C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_EXTSZINHERIT_BIT-1),C1, 0, TYP_NONE }, { "nodefrag", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NODEFRAG_BIT-1),C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NODEFRAG_BIT-1),C1, 0, TYP_NONE }, { "filestream", FLDT_UINT1, - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_FILESTREAM_BIT-1),C1, + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_FILESTREAM_BIT-1),C1, 0, TYP_NONE }, - { "gen", FLDT_UINT32D, OI(COFF(gen)), C1, 0, TYP_NONE }, + { "gen", FLDT_UINT32D, OI(OFF(gen)), C1, 0, TYP_NONE }, + { "next_unlinked", FLDT_AGINO, OI(OFF(next_unlinked)), C1, 0, + TYP_INODE }, + { "u", FLDT_DINODE_U, inode_u_offset, C1, FLD_OFFSET, TYP_NONE }, + { "a", FLDT_DINODE_A, inode_a_offset, inode_a_count, + FLD_COUNT|FLD_OFFSET, TYP_NONE }, { NULL } }; @@ -226,7 +221,7 @@ if (!XFS_DFORK_Q(dip)) return 0; ASSERT((char *)XFS_DFORK_APTR(dip) - (char *)dip == byteize(startoff)); - return dip->di_core.di_aformat == XFS_DINODE_FMT_BTREE; + return dip->di_aformat == XFS_DINODE_FMT_BTREE; } static int @@ -242,8 +237,8 @@ if (!XFS_DFORK_Q(dip)) return 0; ASSERT((char *)XFS_DFORK_APTR(dip) - (char *)dip == byteize(startoff)); - return dip->di_core.di_aformat == XFS_DINODE_FMT_EXTENTS ? - be16_to_cpu(dip->di_core.di_anextents) : 0; + return dip->di_aformat == XFS_DINODE_FMT_EXTENTS ? + be16_to_cpu(dip->di_anextents) : 0; } static int @@ -251,10 +246,9 @@ void *obj, int startoff) { - xfs_dinode_t *dip; + xfs_dinode_t *dip = obj; ASSERT(startoff == 0); - dip = obj; return XFS_DFORK_Q(dip); } @@ -264,11 +258,10 @@ int startoff, int idx) { - xfs_dinode_t *dip; + xfs_dinode_t *dip = obj; ASSERT(startoff == 0); ASSERT(idx == 0); - dip = obj; ASSERT(XFS_DFORK_Q(dip)); return bitize((int)((char *)XFS_DFORK_APTR(dip) - (char *)dip)); } @@ -286,7 +279,7 @@ if (!XFS_DFORK_Q(dip)) return 0; ASSERT((char *)XFS_DFORK_APTR(dip) - (char *)dip == byteize(startoff)); - return dip->di_core.di_aformat == XFS_DINODE_FMT_LOCAL; + return dip->di_aformat == XFS_DINODE_FMT_LOCAL; } int @@ -301,12 +294,12 @@ ASSERT(startoff == 0); ASSERT(idx == 0); dip = obj; - switch (dip->di_core.di_aformat) { + switch (dip->di_aformat) { case XFS_DINODE_FMT_LOCAL: asf = (xfs_attr_shortform_t *)XFS_DFORK_APTR(dip); return bitize(be16_to_cpu(asf->hdr.totsize)); case XFS_DINODE_FMT_EXTENTS: - return (int)be16_to_cpu(dip->di_core.di_anextents) * + return (int)be16_to_cpu(dip->di_anextents) * bitsz(xfs_bmbt_rec_t); case XFS_DINODE_FMT_BTREE: return bitize((int)XFS_DFORK_ASIZE(dip, mp)); @@ -320,12 +313,11 @@ void *obj, int startoff) { - xfs_dinode_core_t *dic; + xfs_dinode_t *dip = obj; ASSERT(startoff == 0); ASSERT(obj == iocur_top->data); - dic = obj; - return dic->di_version == XFS_DINODE_VERSION_1; + return dip->di_version == 1; } static int @@ -333,12 +325,11 @@ void *obj, int startoff) { - xfs_dinode_core_t *dic; + xfs_dinode_t *dip = obj; ASSERT(startoff == 0); ASSERT(obj == iocur_top->data); - dic = obj; - return dic->di_version == XFS_DINODE_VERSION_2; + return dip->di_version == 2; } static int @@ -346,12 +337,11 @@ void *obj, int startoff) { - xfs_dinode_core_t *dic; + xfs_dinode_t *dip = obj; ASSERT(startoff == 0); ASSERT(obj == iocur_top->data); - dic = obj; - return dic->di_version == XFS_DINODE_VERSION_2; + return dip->di_version == 2; } static int @@ -359,12 +349,11 @@ void *obj, int startoff) { - xfs_dinode_core_t *dic; + xfs_dinode_t *dip = obj; ASSERT(startoff == 0); ASSERT(obj == iocur_top->data); - dic = obj; - return dic->di_version == XFS_DINODE_VERSION_2; + return dip->di_version == 2; } static int @@ -428,17 +417,29 @@ } static int +inode_u_offset( + void *obj, + int startoff, + int idx) +{ + xfs_dinode_t *dip = obj; + + ASSERT(startoff == 0); + ASSERT(idx == 0); + return bitize((int)((char *)XFS_DFORK_DPTR(dip) - (char *)dip)); +} + +static int inode_u_bmbt_count( void *obj, int startoff) { - xfs_dinode_t *dip; + xfs_dinode_t *dip = obj; ASSERT(bitoffs(startoff) == 0); ASSERT(obj == iocur_top->data); - dip = obj; - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); - return dip->di_core.di_format == XFS_DINODE_FMT_BTREE; + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); + return dip->di_format == XFS_DINODE_FMT_BTREE; } static int @@ -446,14 +447,13 @@ void *obj, int startoff) { - xfs_dinode_t *dip; + xfs_dinode_t *dip = obj; ASSERT(bitoffs(startoff) == 0); ASSERT(obj == iocur_top->data); - dip = obj; - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); - return dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS ? - be32_to_cpu(dip->di_core.di_nextents) : 0; + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); + return dip->di_format == XFS_DINODE_FMT_EXTENTS ? + be32_to_cpu(dip->di_nextents) : 0; } static int @@ -461,15 +461,14 @@ void *obj, int startoff) { - xfs_dinode_t *dip; + xfs_dinode_t *dip = obj; ASSERT(bitoffs(startoff) == 0); ASSERT(obj == iocur_top->data); - dip = obj; - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); - return dip->di_core.di_format == XFS_DINODE_FMT_LOCAL && - (be16_to_cpu(dip->di_core.di_mode) & S_IFMT) == S_IFREG ? - (int)be64_to_cpu(dip->di_core.di_size) : 0; + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); + return dip->di_format == XFS_DINODE_FMT_LOCAL && + (be16_to_cpu(dip->di_mode) & S_IFMT) == S_IFREG ? + (int)be64_to_cpu(dip->di_size) : 0; } static int @@ -477,13 +476,12 @@ void *obj, int startoff) { - xfs_dinode_t *dip; + xfs_dinode_t *dip = obj; ASSERT(bitoffs(startoff) == 0); ASSERT(obj == iocur_top->data); - dip = obj; - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); - return dip->di_core.di_format == XFS_DINODE_FMT_DEV; + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); + return dip->di_format == XFS_DINODE_FMT_DEV; } static int @@ -491,13 +489,12 @@ void *obj, int startoff) { - xfs_dinode_t *dip; + xfs_dinode_t *dip = obj; ASSERT(bitoffs(startoff) == 0); ASSERT(obj == iocur_top->data); - dip = obj; - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); - return dip->di_core.di_format == XFS_DINODE_FMT_UUID; + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); + return dip->di_format == XFS_DINODE_FMT_UUID; } static int @@ -505,14 +502,13 @@ void *obj, int startoff) { - xfs_dinode_t *dip; + xfs_dinode_t *dip = obj; ASSERT(bitoffs(startoff) == 0); ASSERT(obj == iocur_top->data); - dip = obj; - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); - return dip->di_core.di_format == XFS_DINODE_FMT_LOCAL && - (be16_to_cpu(dip->di_core.di_mode) & S_IFMT) == S_IFDIR + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); + return dip->di_format == XFS_DINODE_FMT_LOCAL && + (be16_to_cpu(dip->di_mode) & S_IFMT) == S_IFDIR && !xfs_sb_version_hasdirv2(&mp->m_sb); } @@ -521,14 +517,13 @@ void *obj, int startoff) { - xfs_dinode_t *dip; + xfs_dinode_t *dip = obj; ASSERT(bitoffs(startoff) == 0); ASSERT(obj == iocur_top->data); - dip = obj; - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); - return dip->di_core.di_format == XFS_DINODE_FMT_LOCAL && - (be16_to_cpu(dip->di_core.di_mode) & S_IFMT) == S_IFDIR && + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); + return dip->di_format == XFS_DINODE_FMT_LOCAL && + (be16_to_cpu(dip->di_mode) & S_IFMT) == S_IFDIR && xfs_sb_version_hasdirv2(&mp->m_sb); } @@ -543,13 +538,13 @@ ASSERT(startoff == 0); ASSERT(idx == 0); dip = obj; - switch (dip->di_core.di_format) { + switch (dip->di_format) { case XFS_DINODE_FMT_DEV: return bitsz(xfs_dev_t); case XFS_DINODE_FMT_LOCAL: - return bitize((int)be64_to_cpu(dip->di_core.di_size)); + return bitize((int)be64_to_cpu(dip->di_size)); case XFS_DINODE_FMT_EXTENTS: - return (int)be32_to_cpu(dip->di_core.di_nextents) * + return (int)be32_to_cpu(dip->di_nextents) * bitsz(xfs_bmbt_rec_t); case XFS_DINODE_FMT_BTREE: return bitize((int)XFS_DFORK_DSIZE(dip, mp)); @@ -565,15 +560,14 @@ void *obj, int startoff) { - xfs_dinode_t *dip; + xfs_dinode_t *dip = obj; ASSERT(bitoffs(startoff) == 0); ASSERT(obj == iocur_top->data); - dip = obj; - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); - return dip->di_core.di_format == XFS_DINODE_FMT_LOCAL && - (be16_to_cpu(dip->di_core.di_mode) & S_IFMT) == S_IFLNK ? - (int)be64_to_cpu(dip->di_core.di_size) : 0; + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); + return dip->di_format == XFS_DINODE_FMT_LOCAL && + (be16_to_cpu(dip->di_mode) & S_IFMT) == S_IFLNK ? + (int)be64_to_cpu(dip->di_size) : 0; } void @@ -609,7 +603,7 @@ off_cur(offset << mp->m_sb.sb_inodelog, mp->m_sb.sb_inodesize); dip = iocur_top->data; iocur_top->ino = ino; - iocur_top->mode = be16_to_cpu(dip->di_core.di_mode); + iocur_top->mode = be16_to_cpu(dip->di_mode); if ((iocur_top->mode & S_IFMT) == S_IFDIR) iocur_top->dirino = ino; Index: xfs-cmds/xfsprogs/db/inode.h =================================================================== --- xfs-cmds.orig/xfsprogs/db/inode.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/db/inode.h 2008-12-06 20:05:49.000000000 +0100 @@ -17,7 +17,7 @@ */ extern const struct field inode_a_flds[]; -extern const struct field inode_core_flds[]; +extern const struct field inode_flds[]; extern const struct field inode_flds[]; extern const struct field inode_hfld[]; extern const struct field inode_u_flds[]; Index: xfs-cmds/xfsprogs/db/metadump.c =================================================================== --- xfs-cmds.orig/xfsprogs/db/metadump.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/db/metadump.c 2008-12-06 20:05:49.000000000 +0100 @@ -501,8 +501,8 @@ __uint64_t ino_dir_size; int i; - sfp = &dip->di_u.di_dir2sf; - ino_dir_size = be64_to_cpu(dip->di_core.di_size); + sfp = (xfs_dir2_sf_t *)XFS_DFORK_DPTR(dip); + ino_dir_size = be64_to_cpu(dip->di_size); if (ino_dir_size > XFS_DFORK_DSIZE(dip, mp)) { ino_dir_size = XFS_DFORK_DSIZE(dip, mp); if (show_warnings) @@ -554,8 +554,9 @@ xfs_dinode_t *dip) { __uint64_t len; + char *symlink = XFS_DFORK_DPTR(dip); - len = be64_to_cpu(dip->di_core.di_size); + len = be64_to_cpu(dip->di_size); if (len > XFS_DFORK_DSIZE(dip, mp)) { if (show_warnings) print_warning("invalid size (%d) in symlink inode %llu", @@ -564,7 +565,7 @@ } while (len > 0) - dip->di_u.di_symlink[--len] = random() % 127 + 1; + symlink[--len] = random() % 127 + 1; } static void @@ -1142,27 +1143,24 @@ xfs_dinode_t *dip, typnm_t itype) { - switch (dip->di_core.di_format) { - case XFS_DINODE_FMT_LOCAL: - if (!dont_obfuscate) - switch (itype) { - case TYP_DIR2: - obfuscate_sf_dir(dip); - break; - - case TYP_SYMLINK: - obfuscate_sf_symlink(dip); - break; - - default: ; - } - break; - - case XFS_DINODE_FMT_EXTENTS: - return process_exinode(dip, itype); - - case XFS_DINODE_FMT_BTREE: - return process_btinode(dip, itype); + switch (dip->di_format) { + case XFS_DINODE_FMT_LOCAL: + if (!dont_obfuscate) + switch (itype) { + case TYP_DIR2: + obfuscate_sf_dir(dip); + break; + case TYP_SYMLINK: + obfuscate_sf_symlink(dip); + break; + default: + ; + } + break; + case XFS_DINODE_FMT_EXTENTS: + return process_exinode(dip, itype); + case XFS_DINODE_FMT_BTREE: + return process_btinode(dip, itype); } return 1; } @@ -1179,7 +1177,7 @@ cur_ino = XFS_AGINO_TO_INO(mp, agno, agino); /* copy appropriate data fork metadata */ - switch (be16_to_cpu(dip->di_core.di_mode) & S_IFMT) { + switch (be16_to_cpu(dip->di_mode) & S_IFMT) { case S_IFDIR: memset(&dir_data, 0, sizeof(dir_data)); success = process_inode_data(dip, TYP_DIR2); @@ -1197,7 +1195,7 @@ /* copy extended attributes if they exist and forkoff is valid */ if (success && XFS_DFORK_DSIZE(dip, mp) < XFS_LITINO(mp)) { attr_data.remote_val_count = 0; - switch (dip->di_core.di_aformat) { + switch (dip->di_aformat) { case XFS_DINODE_FMT_LOCAL: if (!dont_obfuscate) obfuscate_sf_attr(dip); Index: xfs-cmds/xfsprogs/libxfs/util.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/util.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/util.c 2008-12-06 20:05:49.000000000 +0100 @@ -47,126 +47,6 @@ } /* - * Given a mount structure and an inode number, return a pointer - * to a newly allocated in-core inode coresponding to the given - * inode number. - * - * Initialize the inode's attributes and extent pointers if it - * already has them (it will not if the inode has no links). - * - * NOTE: this has slightly different behaviour to the kernel in - * that this version requires the already allocated *ip being - * passed in while the kernel version does the allocation and - * returns it in **ip. - */ -int -libxfs_iread( - xfs_mount_t *mp, - xfs_trans_t *tp, - xfs_ino_t ino, - xfs_inode_t *ip, - xfs_daddr_t bno) -{ - xfs_buf_t *bp; - xfs_dinode_t *dip; - int error; - - ip->i_ino = ino; - ip->i_mount = mp; - - /* - * Get pointer's to the on-disk inode and the buffer containing it. - * If the inode number refers to a block outside the file system - * then xfs_itobp() will return NULL. In this case we should - * return NULL as well. Set i_blkno to 0 so that xfs_itobp() will - * know that this is a new incore inode. - */ - error = xfs_itobp(mp, tp, ip, &dip, &bp, bno, 0, XFS_BUF_LOCK); - if (error) - return error; - - /* - * If we got something that isn't an inode it means someone - * (nfs or dmi) has a stale handle. - */ - if (be16_to_cpu(dip->di_core.di_magic) != XFS_DINODE_MAGIC) { - xfs_trans_brelse(tp, bp); - return EINVAL; - } - - /* - * If the on-disk inode is already linked to a directory - * entry, copy all of the inode into the in-core inode. - * xfs_iformat() handles copying in the inode format - * specific information. - * Otherwise, just get the truly permanent information. - */ - if (dip->di_core.di_mode) { - xfs_dinode_from_disk(&ip->i_d, &dip->di_core); - error = xfs_iformat(ip, dip); - if (error) { - xfs_trans_brelse(tp, bp); - return error; - } - } else { - ip->i_d.di_magic = be16_to_cpu(dip->di_core.di_magic); - ip->i_d.di_version = dip->di_core.di_version; - ip->i_d.di_gen = be32_to_cpu(dip->di_core.di_gen); - ip->i_d.di_flushiter = be16_to_cpu(dip->di_core.di_flushiter); - /* - * Make sure to pull in the mode here as well in - * case the inode is released without being used. - * This ensures that xfs_inactive() will see that - * the inode is already free and not try to mess - * with the uninitialized part of it. - */ - ip->i_d.di_mode = 0; - /* - * Initialize the per-fork minima and maxima for a new - * inode here. xfs_iformat will do it for old inodes. - */ - ip->i_df.if_ext_max = - XFS_IFORK_DSIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t); - } - - /* - * The inode format changed when we moved the link count and - * made it 32 bits long. If this is an old format inode, - * convert it in memory to look like a new one. If it gets - * flushed to disk we will convert back before flushing or - * logging it. We zero out the new projid field and the old link - * count field. We'll handle clearing the pad field (the remains - * of the old uuid field) when we actually convert the inode to - * the new format. We don't change the version number so that we - * can distinguish this from a real new format inode. - */ - if (ip->i_d.di_version == XFS_DINODE_VERSION_1) { - ip->i_d.di_nlink = ip->i_d.di_onlink; - ip->i_d.di_onlink = 0; - ip->i_d.di_projid = 0; - } - - ip->i_delayed_blks = 0; - ip->i_size = ip->i_d.di_size; - - /* - * Use xfs_trans_brelse() to release the buffer containing the - * on-disk inode, because it was acquired with xfs_trans_read_buf() - * in xfs_itobp() above. If tp is NULL, this is just a normal - * brelse(). If we're within a transaction, then xfs_trans_brelse() - * will only release the buffer if it is not dirty within the - * transaction. It will be OK to release the buffer in this case, - * because inodes on disk are never destroyed and we will be - * locking the new in-core inode before putting it in the hash - * table where other processes can find it. Thus we don't have - * to worry about the inode being changed just because we released - * the buffer. - */ - xfs_trans_brelse(tp, bp); - return 0; -} - -/* * Allocate an inode on disk and return a copy of it's in-core version. * Set mode, nlink, and rdev appropriately within the inode. * The uid and gid for the inode are set according to the contents of @@ -229,8 +109,8 @@ * here rather than here and in the flush/logging code. */ if (xfs_sb_version_hasnlink(&tp->t_mountp->m_sb) && - ip->i_d.di_version == XFS_DINODE_VERSION_1) { - ip->i_d.di_version = XFS_DINODE_VERSION_2; + ip->i_d.di_version == 1) { + ip->i_d.di_version = 2; /* old link count, projid field, pad field already zeroed */ } @@ -395,7 +275,7 @@ mp = ip->i_mount; /* set *dip = inode's place in the buffer */ - dip = (xfs_dinode_t *)xfs_buf_offset(bp, ip->i_boffset); + dip = (xfs_dinode_t *)xfs_buf_offset(bp, ip->i_imap.im_boffset); ASSERT(ip->i_d.di_magic == XFS_DINODE_MAGIC); if ((ip->i_d.di_mode & S_IFMT) == S_IFREG) { @@ -416,7 +296,7 @@ * because if the inode is dirty at all the core must * be. */ - xfs_dinode_to_disk(&dip->di_core, &ip->i_d); + xfs_dinode_to_disk(dip, &ip->i_d); /* * If this is really an old format inode and the superblock version @@ -424,28 +304,26 @@ * convert back to the old inode format. If the superblock version * has been updated, then make the conversion permanent. */ - ASSERT(ip->i_d.di_version == XFS_DINODE_VERSION_1 || - xfs_sb_version_hasnlink(&mp->m_sb)); - if (ip->i_d.di_version == XFS_DINODE_VERSION_1) { + ASSERT(ip->i_d.di_version == 1 || xfs_sb_version_hasnlink(&mp->m_sb)); + if (ip->i_d.di_version == 1) { if (!xfs_sb_version_hasnlink(&mp->m_sb)) { /* * Convert it back. */ ASSERT(ip->i_d.di_nlink <= XFS_MAXLINK_1); - dip->di_core.di_onlink = cpu_to_be16(ip->i_d.di_nlink); + dip->di_onlink = cpu_to_be16(ip->i_d.di_nlink); } else { /* * The superblock version has already been bumped, * so just make the conversion to the new inode * format permanent. */ - ip->i_d.di_version = XFS_DINODE_VERSION_2; - dip->di_core.di_version = XFS_DINODE_VERSION_2; + ip->i_d.di_version = 2; + dip->di_version = 2; ip->i_d.di_onlink = 0; - dip->di_core.di_onlink = 0; - memset(&(ip->i_d.di_pad[0]), 0, sizeof(ip->i_d.di_pad)); - memset(&(dip->di_core.di_pad[0]), 0, - sizeof(dip->di_core.di_pad)); + dip->di_onlink = 0; + memset(&ip->i_d.di_pad[0], 0, sizeof(ip->i_d.di_pad)); + memset(&dip->di_pad[0], 0, sizeof(dip->di_pad)); ASSERT(ip->i_d.di_projid == 0); } } Index: xfs-cmds/xfsprogs/libxfs/xfs_alloc.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/xfs_alloc.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/xfs_alloc.c 2008-12-06 20:05:49.000000000 +0100 @@ -2064,44 +2064,41 @@ * Read in the allocation group header (free/alloc section). */ int /* error */ -xfs_alloc_read_agf( - xfs_mount_t *mp, /* mount point structure */ - xfs_trans_t *tp, /* transaction pointer */ - xfs_agnumber_t agno, /* allocation group number */ - int flags, /* XFS_ALLOC_FLAG_... */ - xfs_buf_t **bpp) /* buffer for the ag freelist header */ +xfs_read_agf( + struct xfs_mount *mp, /* mount point structure */ + struct xfs_trans *tp, /* transaction pointer */ + xfs_agnumber_t agno, /* allocation group number */ + int flags, /* XFS_BUF_ */ + struct xfs_buf **bpp) /* buffer for the ag freelist header */ { - xfs_agf_t *agf; /* ag freelist header */ + struct xfs_agf *agf; /* ag freelist header */ int agf_ok; /* set if agf is consistent */ - xfs_buf_t *bp; /* return value */ - xfs_perag_t *pag; /* per allocation group data */ int error; ASSERT(agno != NULLAGNUMBER); error = xfs_trans_read_buf( mp, tp, mp->m_ddev_targp, XFS_AG_DADDR(mp, agno, XFS_AGF_DADDR(mp)), - XFS_FSS_TO_BB(mp, 1), - (flags & XFS_ALLOC_FLAG_TRYLOCK) ? XFS_BUF_TRYLOCK : 0U, - &bp); + XFS_FSS_TO_BB(mp, 1), flags, bpp); if (error) return error; - ASSERT(!bp || !XFS_BUF_GETERROR(bp)); - if (!bp) { - *bpp = NULL; + if (!*bpp) return 0; - } + + ASSERT(!XFS_BUF_GETERROR(*bpp)); + agf = XFS_BUF_TO_AGF(*bpp); + /* * Validate the magic number of the agf block. */ - agf = XFS_BUF_TO_AGF(bp); agf_ok = be32_to_cpu(agf->agf_magicnum) == XFS_AGF_MAGIC && XFS_AGF_GOOD_VERSION(be32_to_cpu(agf->agf_versionnum)) && be32_to_cpu(agf->agf_freeblks) <= be32_to_cpu(agf->agf_length) && be32_to_cpu(agf->agf_flfirst) < XFS_AGFL_SIZE(mp) && be32_to_cpu(agf->agf_fllast) < XFS_AGFL_SIZE(mp) && - be32_to_cpu(agf->agf_flcount) <= XFS_AGFL_SIZE(mp); + be32_to_cpu(agf->agf_flcount) <= XFS_AGFL_SIZE(mp) && + be32_to_cpu(agf->agf_seqno) == agno; if (xfs_sb_version_haslazysbcount(&mp->m_sb)) agf_ok = agf_ok && be32_to_cpu(agf->agf_btreeblks) <= be32_to_cpu(agf->agf_length); @@ -2109,9 +2106,41 @@ XFS_RANDOM_ALLOC_READ_AGF))) { XFS_CORRUPTION_ERROR("xfs_alloc_read_agf", XFS_ERRLEVEL_LOW, mp, agf); - xfs_trans_brelse(tp, bp); + xfs_trans_brelse(tp, *bpp); return XFS_ERROR(EFSCORRUPTED); } + + XFS_BUF_SET_VTYPE_REF(*bpp, B_FS_AGF, XFS_AGF_REF); + return 0; +} + +/* + * Read in the allocation group header (free/alloc section). + */ +int /* error */ +xfs_alloc_read_agf( + struct xfs_mount *mp, /* mount point structure */ + struct xfs_trans *tp, /* transaction pointer */ + xfs_agnumber_t agno, /* allocation group number */ + int flags, /* XFS_ALLOC_FLAG_... */ + struct xfs_buf **bpp) /* buffer for the ag freelist header */ +{ + struct xfs_agf *agf; /* ag freelist header */ + struct xfs_perag *pag; /* per allocation group data */ + int error; + + ASSERT(agno != NULLAGNUMBER); + + error = xfs_read_agf(mp, tp, agno, + (flags & XFS_ALLOC_FLAG_TRYLOCK) ? XFS_BUF_TRYLOCK : 0, + bpp); + if (error) + return error; + if (!*bpp) + return 0; + ASSERT(!XFS_BUF_GETERROR(*bpp)); + + agf = XFS_BUF_TO_AGF(*bpp); pag = &mp->m_perag[agno]; if (!pag->pagf_init) { pag->pagf_freeblks = be32_to_cpu(agf->agf_freeblks); @@ -2139,8 +2168,6 @@ be32_to_cpu(agf->agf_levels[XFS_BTNUM_CNTi])); } #endif - XFS_BUF_SET_VTYPE_REF(bp, B_FS_AGF, XFS_AGF_REF); - *bpp = bp; return 0; } Index: xfs-cmds/xfsprogs/libxfs/xfs_ialloc.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/xfs_ialloc.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/xfs_ialloc.c 2008-12-06 20:05:49.000000000 +0100 @@ -22,68 +22,6 @@ * Internal functions. */ -/* - * Log specified fields for the inode given by bp and off. - */ -STATIC void -xfs_ialloc_log_di( - xfs_trans_t *tp, /* transaction pointer */ - xfs_buf_t *bp, /* inode buffer */ - int off, /* index of inode in buffer */ - int fields) /* bitmask of fields to log */ -{ - int first; /* first byte number */ - int ioffset; /* off in bytes */ - int last; /* last byte number */ - xfs_mount_t *mp; /* mount point structure */ - static const short offsets[] = { /* field offsets */ - /* keep in sync with bits */ - offsetof(xfs_dinode_core_t, di_magic), - offsetof(xfs_dinode_core_t, di_mode), - offsetof(xfs_dinode_core_t, di_version), - offsetof(xfs_dinode_core_t, di_format), - offsetof(xfs_dinode_core_t, di_onlink), - offsetof(xfs_dinode_core_t, di_uid), - offsetof(xfs_dinode_core_t, di_gid), - offsetof(xfs_dinode_core_t, di_nlink), - offsetof(xfs_dinode_core_t, di_projid), - offsetof(xfs_dinode_core_t, di_pad), - offsetof(xfs_dinode_core_t, di_atime), - offsetof(xfs_dinode_core_t, di_mtime), - offsetof(xfs_dinode_core_t, di_ctime), - offsetof(xfs_dinode_core_t, di_size), - offsetof(xfs_dinode_core_t, di_nblocks), - offsetof(xfs_dinode_core_t, di_extsize), - offsetof(xfs_dinode_core_t, di_nextents), - offsetof(xfs_dinode_core_t, di_anextents), - offsetof(xfs_dinode_core_t, di_forkoff), - offsetof(xfs_dinode_core_t, di_aformat), - offsetof(xfs_dinode_core_t, di_dmevmask), - offsetof(xfs_dinode_core_t, di_dmstate), - offsetof(xfs_dinode_core_t, di_flags), - offsetof(xfs_dinode_core_t, di_gen), - offsetof(xfs_dinode_t, di_next_unlinked), - offsetof(xfs_dinode_t, di_u), - offsetof(xfs_dinode_t, di_a), - sizeof(xfs_dinode_t) - }; - - - ASSERT(offsetof(xfs_dinode_t, di_core) == 0); - ASSERT((fields & (XFS_DI_U|XFS_DI_A)) == 0); - mp = tp->t_mountp; - /* - * Get the inode-relative first and last bytes for these fields - */ - xfs_btree_offsets(fields, offsets, XFS_DI_NUM_BITS, &first, &last); - /* - * Convert to buffer offsets and log it. - */ - ioffset = off << mp->m_sb.sb_inodelog; - first += ioffset; - last += ioffset; - xfs_trans_log_buf(tp, bp, first, last); -} /* * Allocation group level functions. @@ -364,9 +302,9 @@ * able to use the file system. */ if (xfs_sb_version_hasnlink(&args.mp->m_sb)) - version = XFS_DINODE_VERSION_2; + version = 2; else - version = XFS_DINODE_VERSION_1; + version = 1; /* * Seed the new inode cluster with a random generation number. This @@ -387,18 +325,25 @@ XFS_BUF_LOCK); ASSERT(fbuf); ASSERT(!XFS_BUF_GETERROR(fbuf)); + /* - * Set initial values for the inodes in this buffer. + * Initialize all inodes in this buffer and then log them. + * + * XXX: It would be much better if we had just one transaction to + * log a whole cluster of inodes instead of all the indivdual + * transactions causing a lot of log traffic. */ xfs_biozero(fbuf, 0, ninodes << args.mp->m_sb.sb_inodelog); for (i = 0; i < ninodes; i++) { + int ioffset = i << args.mp->m_sb.sb_inodelog; + uint isize = sizeof(struct xfs_dinode); + 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); + free->di_magic = cpu_to_be16(XFS_DINODE_MAGIC); + free->di_version = version; + free->di_gen = cpu_to_be32(gen); free->di_next_unlinked = cpu_to_be32(NULLAGINO); - xfs_ialloc_log_di(tp, fbuf, i, - XFS_DI_CORE_BITS | XFS_DI_NEXT_UNLINKED); + xfs_trans_log_buf(tp, fbuf, ioffset, ioffset + isize - 1); } xfs_trans_inode_alloc_buf(tp, fbuf); } @@ -1019,38 +964,29 @@ return error; } - /* - * Return the location of the inode in bno/off, for mapping it into a buffer. + * Return the location of the inode in imap, for mapping it into a buffer. */ -/*ARGSUSED*/ int -xfs_dilocate( - xfs_mount_t *mp, /* file system mount structure */ - xfs_trans_t *tp, /* transaction pointer */ +xfs_imap( + xfs_mount_t *mp, /* file system mount structure */ + xfs_trans_t *tp, /* transaction pointer */ xfs_ino_t ino, /* inode to locate */ - xfs_fsblock_t *bno, /* output: block containing inode */ - int *len, /* output: num blocks in inode cluster */ - int *off, /* output: index in block of inode */ - uint flags) /* flags concerning inode lookup */ + struct xfs_imap *imap, /* location map structure */ + uint flags) /* flags for inode btree lookup */ { xfs_agblock_t agbno; /* block number of inode in the alloc group */ - xfs_buf_t *agbp; /* agi buffer */ xfs_agino_t agino; /* inode number within alloc group */ xfs_agnumber_t agno; /* allocation group number */ int blks_per_cluster; /* num blocks per inode cluster */ xfs_agblock_t chunk_agbno; /* first block in inode chunk */ - xfs_agino_t chunk_agino; /* first agino in inode chunk */ - __int32_t chunk_cnt; /* count of free inodes in chunk */ - xfs_inofree_t chunk_free; /* mask of free inodes in chunk */ xfs_agblock_t cluster_agbno; /* first block in inode cluster */ - xfs_btree_cur_t *cur; /* inode btree cursor */ int error; /* error code */ - int i; /* temp state */ int offset; /* index of inode in its buffer */ int offset_agbno; /* blks from chunk start to inode */ ASSERT(ino != NULLFSINO); + /* * Split up the inode number into its parts. */ @@ -1061,24 +997,24 @@ ino != XFS_AGINO_TO_INO(mp, agno, agino)) { #ifdef DEBUG /* no diagnostics for bulkstat, ino comes from userspace */ - if (flags & XFS_IMAP_BULKSTAT) + if (flags & XFS_IGET_BULKSTAT) return XFS_ERROR(EINVAL); if (agno >= mp->m_sb.sb_agcount) { xfs_fs_cmn_err(CE_ALERT, mp, - "xfs_dilocate: agno (%d) >= " + "xfs_imap: agno (%d) >= " "mp->m_sb.sb_agcount (%d)", agno, mp->m_sb.sb_agcount); } if (agbno >= mp->m_sb.sb_agblocks) { xfs_fs_cmn_err(CE_ALERT, mp, - "xfs_dilocate: agbno (0x%llx) >= " + "xfs_imap: agbno (0x%llx) >= " "mp->m_sb.sb_agblocks (0x%lx)", (unsigned long long) agbno, (unsigned long) mp->m_sb.sb_agblocks); } if (ino != XFS_AGINO_TO_INO(mp, agno, agino)) { xfs_fs_cmn_err(CE_ALERT, mp, - "xfs_dilocate: ino (0x%llx) != " + "xfs_imap: ino (0x%llx) != " "XFS_AGINO_TO_INO(mp, agno, agino) " "(0x%llx)", ino, XFS_AGINO_TO_INO(mp, agno, agino)); @@ -1087,64 +1023,89 @@ #endif /* DEBUG */ return XFS_ERROR(EINVAL); } - if ((mp->m_sb.sb_blocksize >= XFS_INODE_CLUSTER_SIZE(mp)) || - !(flags & XFS_IMAP_LOOKUP)) { + + /* + * If the inode cluster size is the same as the blocksize or + * smaller we get to the buffer by simple arithmetics. + */ + if (XFS_INODE_CLUSTER_SIZE(mp) <= mp->m_sb.sb_blocksize) { offset = XFS_INO_TO_OFFSET(mp, ino); ASSERT(offset < mp->m_sb.sb_inopblock); - *bno = XFS_AGB_TO_FSB(mp, agno, agbno); - *off = offset; - *len = 1; + + imap->im_blkno = XFS_AGB_TO_DADDR(mp, agno, agbno); + imap->im_len = XFS_FSB_TO_BB(mp, 1); + imap->im_boffset = (ushort)(offset << mp->m_sb.sb_inodelog); return 0; } + blks_per_cluster = XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_blocklog; - if (*bno != NULLFSBLOCK) { + + /* + * If we get a block number passed from bulkstat we can use it to + * find the buffer easily. + */ + if (imap->im_blkno) { offset = XFS_INO_TO_OFFSET(mp, ino); ASSERT(offset < mp->m_sb.sb_inopblock); - cluster_agbno = XFS_FSB_TO_AGBNO(mp, *bno); - *off = ((agbno - cluster_agbno) * mp->m_sb.sb_inopblock) + - offset; - *len = blks_per_cluster; + + cluster_agbno = XFS_DADDR_TO_AGBNO(mp, imap->im_blkno); + offset += (agbno - cluster_agbno) * mp->m_sb.sb_inopblock; + + imap->im_len = XFS_FSB_TO_BB(mp, blks_per_cluster); + imap->im_boffset = (ushort)(offset << mp->m_sb.sb_inodelog); return 0; } + + /* + * If the inode chunks are aligned then use simple maths to + * find the location. Otherwise we have to do a btree + * lookup to find the location. + */ if (mp->m_inoalign_mask) { offset_agbno = agbno & mp->m_inoalign_mask; chunk_agbno = agbno - offset_agbno; } else { + xfs_btree_cur_t *cur; /* inode btree cursor */ + xfs_agino_t chunk_agino; /* first agino in inode chunk */ + __int32_t chunk_cnt; /* count of free inodes in chunk */ + xfs_inofree_t chunk_free; /* mask of free inodes in chunk */ + xfs_buf_t *agbp; /* agi buffer */ + int i; /* temp state */ + down_read(&mp->m_peraglock); error = xfs_ialloc_read_agi(mp, tp, agno, &agbp); up_read(&mp->m_peraglock); if (error) { -#ifdef DEBUG - xfs_fs_cmn_err(CE_ALERT, mp, "xfs_dilocate: " + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " "xfs_ialloc_read_agi() returned " "error %d, agno %d", error, agno); -#endif /* DEBUG */ return error; } + cur = xfs_inobt_init_cursor(mp, tp, agbp, agno); - if ((error = xfs_inobt_lookup_le(cur, agino, 0, 0, &i))) { -#ifdef DEBUG - xfs_fs_cmn_err(CE_ALERT, mp, "xfs_dilocate: " + error = xfs_inobt_lookup_le(cur, agino, 0, 0, &i); + if (error) { + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " "xfs_inobt_lookup_le() failed"); -#endif /* DEBUG */ goto error0; } - if ((error = xfs_inobt_get_rec(cur, &chunk_agino, &chunk_cnt, - &chunk_free, &i))) { -#ifdef DEBUG - xfs_fs_cmn_err(CE_ALERT, mp, "xfs_dilocate: " + + error = xfs_inobt_get_rec(cur, &chunk_agino, &chunk_cnt, + &chunk_free, &i); + if (error) { + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " "xfs_inobt_get_rec() failed"); -#endif /* DEBUG */ goto error0; } if (i == 0) { #ifdef DEBUG - xfs_fs_cmn_err(CE_ALERT, mp, "xfs_dilocate: " + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " "xfs_inobt_get_rec() failed"); #endif /* DEBUG */ error = XFS_ERROR(EINVAL); } + error0: xfs_trans_brelse(tp, agbp); xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); if (error) @@ -1152,19 +1113,35 @@ chunk_agbno = XFS_AGINO_TO_AGBNO(mp, chunk_agino); offset_agbno = agbno - chunk_agbno; } + ASSERT(agbno >= chunk_agbno); cluster_agbno = chunk_agbno + ((offset_agbno / blks_per_cluster) * blks_per_cluster); offset = ((agbno - cluster_agbno) * mp->m_sb.sb_inopblock) + XFS_INO_TO_OFFSET(mp, ino); - *bno = XFS_AGB_TO_FSB(mp, agno, cluster_agbno); - *off = offset; - *len = blks_per_cluster; + + imap->im_blkno = XFS_AGB_TO_DADDR(mp, agno, cluster_agbno); + imap->im_len = XFS_FSB_TO_BB(mp, blks_per_cluster); + imap->im_boffset = (ushort)(offset << mp->m_sb.sb_inodelog); + + /* + * If the inode number maps to a block outside the bounds + * of the file system then return NULL rather than calling + * read_buf and panicing when we get an error from the + * driver. + */ + if ((imap->im_blkno + imap->im_len) > + XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks)) { + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " + "(imap->im_blkno (0x%llx) + imap->im_len (0x%llx)) > " + " XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks) (0x%llx)", + (unsigned long long) imap->im_blkno, + (unsigned long long) imap->im_len, + XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks)); + return XFS_ERROR(EINVAL); + } + return 0; -error0: - xfs_trans_brelse(tp, agbp); - xfs_btree_del_cursor(cur, XFS_BTREE_ERROR); - return error; } /* @@ -1232,70 +1209,95 @@ xfs_trans_log_buf(tp, bp, first, last); } +#ifdef DEBUG +STATIC void +xfs_check_agi_unlinked( + struct xfs_agi *agi) +{ + int i; + + for (i = 0; i < XFS_AGI_UNLINKED_BUCKETS; i++) + ASSERT(agi->agi_unlinked[i]); +} +#else +#define xfs_check_agi_unlinked(agi) +#endif + /* * Read in the allocation group header (inode allocation section) */ int -xfs_ialloc_read_agi( - xfs_mount_t *mp, /* file system mount structure */ - xfs_trans_t *tp, /* transaction pointer */ - xfs_agnumber_t agno, /* allocation group number */ - xfs_buf_t **bpp) /* allocation group hdr buf */ +xfs_read_agi( + struct xfs_mount *mp, /* file system mount structure */ + struct xfs_trans *tp, /* transaction pointer */ + xfs_agnumber_t agno, /* allocation group number */ + struct xfs_buf **bpp) /* allocation group hdr buf */ { - xfs_agi_t *agi; /* allocation group header */ - int agi_ok; /* agi is consistent */ - xfs_buf_t *bp; /* allocation group hdr buf */ - xfs_perag_t *pag; /* per allocation group data */ - int error; + struct xfs_agi *agi; /* allocation group header */ + int agi_ok; /* agi is consistent */ + int error; ASSERT(agno != NULLAGNUMBER); - error = xfs_trans_read_buf( - mp, tp, mp->m_ddev_targp, + + error = xfs_trans_read_buf(mp, tp, mp->m_ddev_targp, XFS_AG_DADDR(mp, agno, XFS_AGI_DADDR(mp)), - XFS_FSS_TO_BB(mp, 1), 0, &bp); + XFS_FSS_TO_BB(mp, 1), 0, bpp); if (error) return error; - ASSERT(bp && !XFS_BUF_GETERROR(bp)); + + ASSERT(*bpp && !XFS_BUF_GETERROR(*bpp)); + agi = XFS_BUF_TO_AGI(*bpp); /* * Validate the magic number of the agi block. */ - agi = XFS_BUF_TO_AGI(bp); - agi_ok = - be32_to_cpu(agi->agi_magicnum) == XFS_AGI_MAGIC && - XFS_AGI_GOOD_VERSION(be32_to_cpu(agi->agi_versionnum)); + agi_ok = be32_to_cpu(agi->agi_magicnum) == XFS_AGI_MAGIC && + XFS_AGI_GOOD_VERSION(be32_to_cpu(agi->agi_versionnum)) && + be32_to_cpu(agi->agi_seqno) == agno; if (unlikely(XFS_TEST_ERROR(!agi_ok, mp, XFS_ERRTAG_IALLOC_READ_AGI, XFS_RANDOM_IALLOC_READ_AGI))) { - XFS_CORRUPTION_ERROR("xfs_ialloc_read_agi", XFS_ERRLEVEL_LOW, + XFS_CORRUPTION_ERROR("xfs_read_agi", XFS_ERRLEVEL_LOW, mp, agi); - xfs_trans_brelse(tp, bp); + xfs_trans_brelse(tp, *bpp); return XFS_ERROR(EFSCORRUPTED); } + + XFS_BUF_SET_VTYPE_REF(*bpp, B_FS_AGI, XFS_AGI_REF); + + xfs_check_agi_unlinked(agi); + return 0; +} + +int +xfs_ialloc_read_agi( + struct xfs_mount *mp, /* file system mount structure */ + struct xfs_trans *tp, /* transaction pointer */ + xfs_agnumber_t agno, /* allocation group number */ + struct xfs_buf **bpp) /* allocation group hdr buf */ +{ + struct xfs_agi *agi; /* allocation group header */ + struct xfs_perag *pag; /* per allocation group data */ + int error; + + error = xfs_read_agi(mp, tp, agno, bpp); + if (error) + return error; + + agi = XFS_BUF_TO_AGI(*bpp); pag = &mp->m_perag[agno]; + if (!pag->pagi_init) { pag->pagi_freecount = be32_to_cpu(agi->agi_freecount); pag->pagi_count = be32_to_cpu(agi->agi_count); pag->pagi_init = 1; - } else { - /* - * It's possible for these to be out of sync if - * we are in the middle of a forced shutdown. - */ - ASSERT(pag->pagi_freecount == be32_to_cpu(agi->agi_freecount) || - XFS_FORCED_SHUTDOWN(mp)); - } - -#ifdef DEBUG - { - int i; - - for (i = 0; i < XFS_AGI_UNLINKED_BUCKETS; i++) - ASSERT(agi->agi_unlinked[i]); } -#endif - XFS_BUF_SET_VTYPE_REF(bp, B_FS_AGI, XFS_AGI_REF); - *bpp = bp; + /* + * It's possible for these to be out of sync if + * we are in the middle of a forced shutdown. + */ + ASSERT(pag->pagi_freecount == be32_to_cpu(agi->agi_freecount) || + XFS_FORCED_SHUTDOWN(mp)); return 0; } Index: xfs-cmds/xfsprogs/libxfs/xfs_inode.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/xfs_inode.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/xfs_inode.c 2008-12-06 20:05:49.000000000 +0100 @@ -91,10 +91,10 @@ xfs_imap_to_bp( xfs_mount_t *mp, xfs_trans_t *tp, - xfs_imap_t *imap, + struct xfs_imap *imap, xfs_buf_t **bpp, uint buf_flags, - uint imap_flags) + uint iget_flags) { int error; int i; @@ -131,12 +131,12 @@ dip = (xfs_dinode_t *)xfs_buf_offset(bp, (i << mp->m_sb.sb_inodelog)); - di_ok = be16_to_cpu(dip->di_core.di_magic) == XFS_DINODE_MAGIC && - XFS_DINODE_GOOD_VERSION(dip->di_core.di_version); + di_ok = be16_to_cpu(dip->di_magic) == XFS_DINODE_MAGIC && + XFS_DINODE_GOOD_VERSION(dip->di_version); if (unlikely(XFS_TEST_ERROR(!di_ok, mp, XFS_ERRTAG_ITOBP_INOTOBP, XFS_RANDOM_ITOBP_INOTOBP))) { - if (imap_flags & XFS_IMAP_BULKSTAT) { + if (iget_flags & XFS_IGET_BULKSTAT) { xfs_trans_brelse(tp, bp); return XFS_ERROR(EINVAL); } @@ -148,7 +148,7 @@ "daddr %lld #%d (magic=%x)", XFS_BUFTARG_NAME(mp->m_ddev_targp), (unsigned long long)imap->im_blkno, i, - be16_to_cpu(dip->di_core.di_magic)); + be16_to_cpu(dip->di_magic)); #endif xfs_trans_brelse(tp, bp); return XFS_ERROR(EFSCORRUPTED); @@ -167,6 +167,49 @@ } /* + * This routine is called to map an inode number within a file + * system to the buffer containing the on-disk version of the + * inode. It returns a pointer to the buffer containing the + * on-disk inode in the bpp parameter, and in the dip parameter + * it returns a pointer to the on-disk inode within that buffer. + * + * If a non-zero error is returned, then the contents of bpp and + * dipp are undefined. + * + * Use xfs_imap() to determine the size and location of the + * buffer to read from disk. + */ +int +xfs_inotobp( + xfs_mount_t *mp, + xfs_trans_t *tp, + xfs_ino_t ino, + xfs_dinode_t **dipp, + xfs_buf_t **bpp, + int *offset, + uint imap_flags) +{ + struct xfs_imap imap; + xfs_buf_t *bp; + int error; + + imap.im_blkno = 0; + error = xfs_imap(mp, tp, ino, &imap, imap_flags); + if (error) + return error; + + error = xfs_imap_to_bp(mp, tp, &imap, &bp, XFS_BUF_LOCK, imap_flags); + if (error) + return error; + + *dipp = (xfs_dinode_t *)xfs_buf_offset(bp, imap.im_boffset); + *bpp = bp; + *offset = imap.im_boffset; + return 0; +} + + +/* * This routine is called to map an inode to the buffer containing * the on-disk version of the inode. It returns a pointer to the * buffer containing the on-disk inode in the bpp parameter, and in @@ -176,15 +219,11 @@ * If a non-zero error is returned, then the contents of bpp and * dipp are undefined. * - * If the inode is new and has not yet been initialized, use xfs_imap() - * to determine the size and location of the buffer to read from disk. - * If the inode has already been mapped to its buffer and read in once, - * then use the mapping information stored in the inode rather than - * calling xfs_imap(). This allows us to avoid the overhead of looking - * at the inode btree for small block file systems (see xfs_dilocate()). - * We can tell whether the inode has been mapped in before by comparing - * its disk block address to 0. Only uninitialized inodes will have - * 0 for the disk block address. + * The inode is expected to already been mapped to its buffer and read + * in once, thus we can use the mapping information stored in the inode + * rather than calling xfs_imap(). This allows us to avoid the overhead + * of looking at the inode btree for small block file systems + * (see xfs_imap()). */ int xfs_itobp( @@ -193,40 +232,14 @@ xfs_inode_t *ip, xfs_dinode_t **dipp, xfs_buf_t **bpp, - xfs_daddr_t bno, - uint imap_flags, uint buf_flags) { - xfs_imap_t imap; xfs_buf_t *bp; int error; - if (ip->i_blkno == (xfs_daddr_t)0) { - imap.im_blkno = bno; - error = xfs_imap(mp, tp, ip->i_ino, &imap, - XFS_IMAP_LOOKUP | imap_flags); - if (error) - return error; - - /* - * Fill in the fields in the inode that will be used to - * map the inode to its buffer from now on. - */ - ip->i_blkno = imap.im_blkno; - ip->i_len = imap.im_len; - ip->i_boffset = imap.im_boffset; - } else { - /* - * We've already mapped the inode once, so just use the - * mapping that we saved the first time. - */ - imap.im_blkno = ip->i_blkno; - imap.im_len = ip->i_len; - imap.im_boffset = ip->i_boffset; - } - ASSERT(bno == 0 || bno == imap.im_blkno); + ASSERT(ip->i_imap.im_blkno != 0); - error = xfs_imap_to_bp(mp, tp, &imap, &bp, buf_flags, imap_flags); + error = xfs_imap_to_bp(mp, tp, &ip->i_imap, &bp, buf_flags, 0); if (error) return error; @@ -237,7 +250,7 @@ return EAGAIN; } - *dipp = (xfs_dinode_t *)xfs_buf_offset(bp, imap.im_boffset); + *dipp = (xfs_dinode_t *)xfs_buf_offset(bp, ip->i_imap.im_boffset); *bpp = bp; return 0; } @@ -250,10 +263,8 @@ * pointers. For a file in B-tree format, only the root is immediately * brought in-core. The rest will be in-lined in if_extents when it * is first referenced (see xfs_iread_extents()). - * - * Note: this requires user-space public scope for libxfs_iread */ -int +STATIC int xfs_iformat( xfs_inode_t *ip, xfs_dinode_t *dip) @@ -266,26 +277,26 @@ XFS_IFORK_DSIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t); error = 0; - if (unlikely(be32_to_cpu(dip->di_core.di_nextents) + - be16_to_cpu(dip->di_core.di_anextents) > - be64_to_cpu(dip->di_core.di_nblocks))) { + if (unlikely(be32_to_cpu(dip->di_nextents) + + be16_to_cpu(dip->di_anextents) > + be64_to_cpu(dip->di_nblocks))) { xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, "corrupt dinode %Lu, extent total = %d, nblocks = %Lu.", (unsigned long long)ip->i_ino, - (int)(be32_to_cpu(dip->di_core.di_nextents) + - be16_to_cpu(dip->di_core.di_anextents)), + (int)(be32_to_cpu(dip->di_nextents) + + be16_to_cpu(dip->di_anextents)), (unsigned long long) - be64_to_cpu(dip->di_core.di_nblocks)); + be64_to_cpu(dip->di_nblocks)); XFS_CORRUPTION_ERROR("xfs_iformat(1)", XFS_ERRLEVEL_LOW, ip->i_mount, dip); return XFS_ERROR(EFSCORRUPTED); } - if (unlikely(dip->di_core.di_forkoff > ip->i_mount->m_sb.sb_inodesize)) { + if (unlikely(dip->di_forkoff > ip->i_mount->m_sb.sb_inodesize)) { xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, "corrupt dinode %Lu, forkoff = 0x%x.", (unsigned long long)ip->i_ino, - dip->di_core.di_forkoff); + dip->di_forkoff); XFS_CORRUPTION_ERROR("xfs_iformat(2)", XFS_ERRLEVEL_LOW, ip->i_mount, dip); return XFS_ERROR(EFSCORRUPTED); @@ -296,25 +307,25 @@ case S_IFCHR: case S_IFBLK: case S_IFSOCK: - if (unlikely(dip->di_core.di_format != XFS_DINODE_FMT_DEV)) { + if (unlikely(dip->di_format != XFS_DINODE_FMT_DEV)) { XFS_CORRUPTION_ERROR("xfs_iformat(3)", XFS_ERRLEVEL_LOW, ip->i_mount, dip); return XFS_ERROR(EFSCORRUPTED); } ip->i_d.di_size = 0; ip->i_size = 0; - ip->i_df.if_u2.if_rdev = be32_to_cpu(dip->di_u.di_dev); + ip->i_df.if_u2.if_rdev = xfs_dinode_get_rdev(dip); break; case S_IFREG: case S_IFLNK: case S_IFDIR: - switch (dip->di_core.di_format) { + switch (dip->di_format) { case XFS_DINODE_FMT_LOCAL: /* * no local regular files yet */ - if (unlikely((be16_to_cpu(dip->di_core.di_mode) & S_IFMT) == S_IFREG)) { + if (unlikely((be16_to_cpu(dip->di_mode) & S_IFMT) == S_IFREG)) { xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, "corrupt inode %Lu " "(local format for regular file).", @@ -325,7 +336,7 @@ return XFS_ERROR(EFSCORRUPTED); } - di_size = be64_to_cpu(dip->di_core.di_size); + di_size = be64_to_cpu(dip->di_size); if (unlikely(di_size > XFS_DFORK_DSIZE(dip, ip->i_mount))) { xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, "corrupt inode %Lu " @@ -367,7 +378,7 @@ ip->i_afp = kmem_zone_zalloc(xfs_ifork_zone, KM_SLEEP); ip->i_afp->if_ext_max = XFS_IFORK_ASIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t); - switch (dip->di_core.di_aformat) { + switch (dip->di_aformat) { case XFS_DINODE_FMT_LOCAL: atp = (xfs_attr_shortform_t *)XFS_DFORK_APTR(dip); size = be16_to_cpu(atp->hdr.totsize); @@ -579,7 +590,7 @@ void xfs_dinode_from_disk( xfs_icdinode_t *to, - xfs_dinode_core_t *from) + xfs_dinode_t *from) { to->di_magic = be16_to_cpu(from->di_magic); to->di_mode = be16_to_cpu(from->di_mode); @@ -613,7 +624,7 @@ void xfs_dinode_to_disk( - xfs_dinode_core_t *to, + xfs_dinode_t *to, xfs_icdinode_t *from) { to->di_magic = cpu_to_be16(from->di_magic); @@ -647,6 +658,139 @@ } /* + * Read the disk inode attributes into the in-core inode structure. + */ +int +xfs_iread( + xfs_mount_t *mp, + xfs_trans_t *tp, + xfs_inode_t *ip, + xfs_daddr_t bno, + uint iget_flags) +{ + xfs_buf_t *bp; + xfs_dinode_t *dip; + int error; + + /* + * Fill in the location information in the in-core inode. + */ + ip->i_imap.im_blkno = bno; + error = xfs_imap(mp, tp, ip->i_ino, &ip->i_imap, iget_flags); + if (error) + return error; + ASSERT(bno == 0 || bno == ip->i_imap.im_blkno); + + /* + * Get pointers to the on-disk inode and the buffer containing it. + */ + error = xfs_imap_to_bp(mp, tp, &ip->i_imap, &bp, + XFS_BUF_LOCK, iget_flags); + if (error) + return error; + dip = (xfs_dinode_t *)xfs_buf_offset(bp, ip->i_imap.im_boffset); + + /* + * If we got something that isn't an inode it means someone + * (nfs or dmi) has a stale handle. + */ + if (be16_to_cpu(dip->di_magic) != XFS_DINODE_MAGIC) { +#ifdef DEBUG + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_iread: " + "dip->di_magic (0x%x) != " + "XFS_DINODE_MAGIC (0x%x)", + be16_to_cpu(dip->di_magic), + XFS_DINODE_MAGIC); +#endif /* DEBUG */ + error = XFS_ERROR(EINVAL); + goto out_brelse; + } + + /* + * If the on-disk inode is already linked to a directory + * entry, copy all of the inode into the in-core inode. + * xfs_iformat() handles copying in the inode format + * specific information. + * Otherwise, just get the truly permanent information. + */ + if (dip->di_mode) { + xfs_dinode_from_disk(&ip->i_d, dip); + error = xfs_iformat(ip, dip); + if (error) { +#ifdef DEBUG + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_iread: " + "xfs_iformat() returned error %d", + error); +#endif /* DEBUG */ + goto out_brelse; + } + } else { + ip->i_d.di_magic = be16_to_cpu(dip->di_magic); + ip->i_d.di_version = dip->di_version; + ip->i_d.di_gen = be32_to_cpu(dip->di_gen); + ip->i_d.di_flushiter = be16_to_cpu(dip->di_flushiter); + /* + * Make sure to pull in the mode here as well in + * case the inode is released without being used. + * This ensures that xfs_inactive() will see that + * the inode is already free and not try to mess + * with the uninitialized part of it. + */ + ip->i_d.di_mode = 0; + /* + * Initialize the per-fork minima and maxima for a new + * inode here. xfs_iformat will do it for old inodes. + */ + ip->i_df.if_ext_max = + XFS_IFORK_DSIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t); + } + + /* + * The inode format changed when we moved the link count and + * made it 32 bits long. If this is an old format inode, + * convert it in memory to look like a new one. If it gets + * flushed to disk we will convert back before flushing or + * logging it. We zero out the new projid field and the old link + * count field. We'll handle clearing the pad field (the remains + * of the old uuid field) when we actually convert the inode to + * the new format. We don't change the version number so that we + * can distinguish this from a real new format inode. + */ + if (ip->i_d.di_version == 1) { + ip->i_d.di_nlink = ip->i_d.di_onlink; + ip->i_d.di_onlink = 0; + ip->i_d.di_projid = 0; + } + + ip->i_delayed_blks = 0; + ip->i_size = ip->i_d.di_size; + + /* + * Mark the buffer containing the inode as something to keep + * around for a while. This helps to keep recently accessed + * meta-data in-core longer. + */ + XFS_BUF_SET_REF(bp, XFS_INO_REF); + + /* + * Use xfs_trans_brelse() to release the buffer containing the + * on-disk inode, because it was acquired with xfs_trans_read_buf() + * in xfs_itobp() above. If tp is NULL, this is just a normal + * brelse(). If we're within a transaction, then xfs_trans_brelse() + * will only release the buffer if it is not dirty within the + * transaction. It will be OK to release the buffer in this case, + * because inodes on disk are never destroyed and we will be + * locking the new in-core inode before putting it in the hash + * table where other processes can find it. Thus we don't have + * to worry about the inode being changed just because we released + * the buffer. + */ + out_brelse: + xfs_trans_brelse(tp, bp); + return error; +} + +/* * Read in extents from a btree-format inode. * Allocate and fill in if_extents. Real work is done in xfs_bmap.c. */ @@ -906,64 +1050,6 @@ ASSERT(ifp->if_bytes <= XFS_IFORK_SIZE(ip, whichfork)); } - - - -/* - * Map inode to disk block and offset. - * - * mp -- the mount point structure for the current file system - * tp -- the current transaction - * ino -- the inode number of the inode to be located - * imap -- this structure is filled in with the information necessary - * to retrieve the given inode from disk - * flags -- flags to pass to xfs_dilocate indicating whether or not - * lookups in the inode btree were OK or not - */ -int -xfs_imap( - xfs_mount_t *mp, - xfs_trans_t *tp, - xfs_ino_t ino, - xfs_imap_t *imap, - uint flags) -{ - xfs_fsblock_t fsbno; - int len; - int off; - int error; - - fsbno = imap->im_blkno ? - XFS_DADDR_TO_FSB(mp, imap->im_blkno) : NULLFSBLOCK; - error = xfs_dilocate(mp, tp, ino, &fsbno, &len, &off, flags); - if (error) - return error; - - imap->im_blkno = XFS_FSB_TO_DADDR(mp, fsbno); - imap->im_len = XFS_FSB_TO_BB(mp, len); - imap->im_agblkno = XFS_FSB_TO_AGBNO(mp, fsbno); - imap->im_ioffset = (ushort)off; - imap->im_boffset = (ushort)(off << mp->m_sb.sb_inodelog); - - /* - * If the inode number maps to a block outside the bounds - * of the file system then return NULL rather than calling - * read_buf and panicing when we get an error from the - * driver. - */ - if ((imap->im_blkno + imap->im_len) > - XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks)) { - xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " - "(imap->im_blkno (0x%llx) + imap->im_len (0x%llx)) > " - " XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks) (0x%llx)", - (unsigned long long) imap->im_blkno, - (unsigned long long) imap->im_len, - XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks)); - return EINVAL; - } - return 0; -} - void xfs_idestroy_fork( xfs_inode_t *ip, @@ -1077,7 +1163,7 @@ * In these cases, the format always takes precedence, because the * format indicates the current state of the fork. * - * Note: this requires user-space public scope for libxfs_iread + * Note: this requires user-space public scope for libxfs_iflush_int */ /*ARGSUSED*/ void @@ -1155,15 +1241,16 @@ case XFS_DINODE_FMT_DEV: if (iip->ili_format.ilf_fields & XFS_ILOG_DEV) { ASSERT(whichfork == XFS_DATA_FORK); - dip->di_u.di_dev = cpu_to_be32(ip->i_df.if_u2.if_rdev); + xfs_dinode_put_rdev(dip, ip->i_df.if_u2.if_rdev); } break; case XFS_DINODE_FMT_UUID: if (iip->ili_format.ilf_fields & XFS_ILOG_UUID) { ASSERT(whichfork == XFS_DATA_FORK); - memcpy(&dip->di_u.di_muuid, &ip->i_df.if_u2.if_uuid, - sizeof(uuid_t)); + memcpy(XFS_DFORK_DPTR(dip), + &ip->i_df.if_u2.if_uuid, + sizeof(uuid_t)); } break; Index: xfs-cmds/xfsprogs/libxfs/xfs_mount.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/xfs_mount.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/xfs_mount.c 2008-12-06 20:05:49.000000000 +0100 @@ -265,8 +265,7 @@ mp->m_sectbb_log = sbp->sb_sectlog - BBSHIFT; mp->m_agno_log = xfs_highbit32(sbp->sb_agcount - 1) + 1; mp->m_agino_log = sbp->sb_inopblog + sbp->sb_agblklog; - mp->m_litino = sbp->sb_inodesize - - ((uint)sizeof(xfs_dinode_core_t) + (uint)sizeof(xfs_agino_t)); + mp->m_litino = sbp->sb_inodesize - sizeof(struct xfs_dinode); mp->m_blockmask = sbp->sb_blocksize - 1; mp->m_blockwsize = sbp->sb_blocksize >> XFS_WORDLOG; mp->m_blockwmask = mp->m_blockwsize - 1; Index: xfs-cmds/xfsprogs/libxlog/xfs_log_recover.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxlog/xfs_log_recover.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/libxlog/xfs_log_recover.c 2008-12-06 20:05:49.000000000 +0100 @@ -1238,7 +1238,6 @@ xlog_t *log) { int i, j, k; - xlog_in_core_2_t *xhdr; for (i = 0; i < BTOBB(be32_to_cpu(rhead->h_len)) && i < (XLOG_HEADER_CYCLE_SIZE / BBSIZE); i++) { @@ -1247,7 +1246,7 @@ } if (xfs_sb_version_haslogv2(&log->l_mp->m_sb)) { - xhdr = (xlog_in_core_2_t *)rhead; + xlog_in_core_2_t *xhdr = (xlog_in_core_2_t *)rhead; for ( ; i < BTOBB(be32_to_cpu(rhead->h_len)); i++) { j = i / (XLOG_HEADER_CYCLE_SIZE / BBSIZE); k = i % (XLOG_HEADER_CYCLE_SIZE / BBSIZE); Index: xfs-cmds/xfsprogs/logprint/log_misc.c =================================================================== --- xfs-cmds.orig/xfsprogs/logprint/log_misc.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/logprint/log_misc.c 2008-12-06 20:05:49.000000000 +0100 @@ -642,7 +642,7 @@ mode = dino.di_mode & S_IFMT; size = (int)dino.di_size; xlog_print_trans_inode_core(&dino); - *ptr += sizeof(xfs_dinode_core_t); + *ptr += sizeof(xfs_icdinode_t); if (*i == num_ops-1 && f->ilf_size == 3) { return 1; Index: xfs-cmds/xfsprogs/repair/attr_repair.c =================================================================== --- xfs-cmds.orig/xfsprogs/repair/attr_repair.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/repair/attr_repair.c 2008-12-06 20:05:49.000000000 +0100 @@ -840,8 +840,8 @@ bno = blkmap_get(blkmap, 0); if ( bno == NULLDFSBNO ) { - if (dip->di_core.di_aformat == XFS_DINODE_FMT_EXTENTS && - be16_to_cpu(dip->di_core.di_anextents) == 0) + if (dip->di_aformat == XFS_DINODE_FMT_EXTENTS && + be16_to_cpu(dip->di_anextents) == 0) return(0); /* the kernel can handle this state */ do_warn(_("block 0 of inode %llu attribute fork is missing\n"), ino); @@ -958,7 +958,7 @@ int *repair) /* returned if we did repair */ { int err; - __u8 aformat = dip->di_core.di_aformat; + __u8 aformat = dip->di_aformat; xfs_attr_shortform_t *asf; asf = (xfs_attr_shortform_t *) XFS_DFORK_APTR(dip); Index: xfs-cmds/xfsprogs/repair/dino_chunks.c =================================================================== --- xfs-cmds.orig/xfsprogs/repair/dino_chunks.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/repair/dino_chunks.c 2008-12-06 20:05:49.000000000 +0100 @@ -810,9 +810,9 @@ * store on-disk nlink count for comparing in phase 7 */ set_inode_disk_nlinks(ino_rec, irec_offset, - dino->di_core.di_version > XFS_DINODE_VERSION_1 - ? be32_to_cpu(dino->di_core.di_nlink) - : be16_to_cpu(dino->di_core.di_onlink)); + dino->di_version > 1 + ? be32_to_cpu(dino->di_nlink) + : be16_to_cpu(dino->di_onlink)); } else { set_inode_free(ino_rec, irec_offset); Index: xfs-cmds/xfsprogs/repair/dinode.c =================================================================== --- xfs-cmds.orig/xfsprogs/repair/dinode.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/repair/dinode.c 2008-12-06 20:05:49.000000000 +0100 @@ -41,29 +41,29 @@ */ /* ARGSUSED */ int -calc_attr_offset(xfs_mount_t *mp, xfs_dinode_t *dino) +calc_attr_offset(xfs_mount_t *mp, xfs_dinode_t *dip) { - xfs_dinode_core_t *dinoc = &dino->di_core; - int offset = ((__psint_t) &dino->di_u) - - (__psint_t)dino; + char *dfork = XFS_DFORK_DPTR(dip); + xfs_bmdr_block_t *bmdr = (xfs_bmdr_block_t *)dfork; + int offset = ((__psint_t)dfork) - (__psint_t)dip; /* * don't worry about alignment when calculating offset * because the data fork is already 8-byte aligned */ - switch (dinoc->di_format) { + switch (dip->di_format) { case XFS_DINODE_FMT_DEV: offset += sizeof(xfs_dev_t); break; case XFS_DINODE_FMT_LOCAL: - offset += be64_to_cpu(dinoc->di_size); + offset += be64_to_cpu(dip->di_size); break; case XFS_DINODE_FMT_EXTENTS: - offset += be32_to_cpu(dinoc->di_nextents) * + offset += be32_to_cpu(dip->di_nextents) * sizeof(xfs_bmbt_rec_t); break; case XFS_DINODE_FMT_BTREE: - offset += be16_to_cpu(dino->di_u.di_bmbt.bb_numrecs) * + offset += be16_to_cpu(bmdr->bb_numrecs) * sizeof(xfs_bmbt_rec_t); break; default: @@ -77,11 +77,9 @@ /* ARGSUSED */ int -clear_dinode_attr(xfs_mount_t *mp, xfs_dinode_t *dino, xfs_ino_t ino_num) +clear_dinode_attr(xfs_mount_t *mp, xfs_dinode_t *dip, xfs_ino_t ino_num) { - xfs_dinode_core_t *dinoc = &dino->di_core; - - ASSERT(dinoc->di_forkoff != 0); + ASSERT(dip->di_forkoff != 0); if (!no_modify) fprintf(stderr, _("clearing inode %llu attributes\n"), @@ -90,16 +88,16 @@ fprintf(stderr, _("would have cleared inode %llu attributes\n"), (unsigned long long)ino_num); - if (be16_to_cpu(dinoc->di_anextents) != 0) { + if (dip->di_anextents) { if (no_modify) - return(1); - dinoc->di_anextents = cpu_to_be16(0); + return 1; + dip->di_anextents = 0; } - if (dinoc->di_aformat != XFS_DINODE_FMT_EXTENTS) { + if (dip->di_aformat != XFS_DINODE_FMT_EXTENTS) { if (no_modify) - return(1); - dinoc->di_aformat = XFS_DINODE_FMT_EXTENTS; + return 1; + dip->di_aformat = XFS_DINODE_FMT_EXTENTS; } /* get rid of the fork by clearing forkoff */ @@ -115,168 +113,138 @@ if (!no_modify) { xfs_attr_shortform_t *asf = (xfs_attr_shortform_t *) - XFS_DFORK_APTR(dino); + XFS_DFORK_APTR(dip); asf->hdr.totsize = cpu_to_be16(sizeof(xfs_attr_sf_hdr_t)); asf->hdr.count = 0; - dinoc->di_forkoff = 0; /* got to do this after asf is set */ + dip->di_forkoff = 0; /* got to do this after asf is set */ } /* * always returns 1 since the fork gets zapped */ - return(1); + return 1; } /* ARGSUSED */ int -clear_dinode_core(xfs_dinode_core_t *dinoc, xfs_ino_t ino_num) +clear_dinode_core(xfs_dinode_t *dip, xfs_ino_t ino_num) { int dirty = 0; - if (be16_to_cpu(dinoc->di_magic) != XFS_DINODE_MAGIC) { + if (be16_to_cpu(dip->di_magic) != XFS_DINODE_MAGIC) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_magic = cpu_to_be16(XFS_DINODE_MAGIC); + return 1; + dip->di_magic = cpu_to_be16(XFS_DINODE_MAGIC); } - if (!XFS_DINODE_GOOD_VERSION(dinoc->di_version) || - (!fs_inode_nlink && dinoc->di_version > XFS_DINODE_VERSION_1)) { + if (!XFS_DINODE_GOOD_VERSION(dip->di_version) || + (!fs_inode_nlink && dip->di_version > 1)) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_version = (fs_inode_nlink) ? XFS_DINODE_VERSION_2 - : XFS_DINODE_VERSION_1; + return 1; + dip->di_version = (fs_inode_nlink) ? 2 : 1; } - if (be16_to_cpu(dinoc->di_mode) != 0) { + if (dip->di_mode) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_mode = 0; + return 1; + dip->di_mode = 0; } - if (be16_to_cpu(dinoc->di_flags) != 0) { + if (dip->di_flags) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_flags = 0; + return 1; + dip->di_flags = 0; } - if (be32_to_cpu(dinoc->di_dmevmask) != 0) { + if (dip->di_dmevmask) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_dmevmask = 0; + return 1; + dip->di_dmevmask = 0; } - if (dinoc->di_forkoff != 0) { + if (dip->di_forkoff) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_forkoff = 0; + return 1; + dip->di_forkoff = 0; } - if (dinoc->di_format != XFS_DINODE_FMT_EXTENTS) { + if (dip->di_format != XFS_DINODE_FMT_EXTENTS) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_format = XFS_DINODE_FMT_EXTENTS; + return 1; + dip->di_format = XFS_DINODE_FMT_EXTENTS; } - if (dinoc->di_aformat != XFS_DINODE_FMT_EXTENTS) { + if (dip->di_aformat != XFS_DINODE_FMT_EXTENTS) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_aformat = XFS_DINODE_FMT_EXTENTS; + return 1; + dip->di_aformat = XFS_DINODE_FMT_EXTENTS; } - if (be64_to_cpu(dinoc->di_size) != 0) { + if (dip->di_size) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_size = 0; + return 1; + dip->di_size = 0; } - if (be64_to_cpu(dinoc->di_nblocks) != 0) { + if (dip->di_nblocks) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_nblocks = 0; + return 1; + dip->di_nblocks = 0; } - if (be16_to_cpu(dinoc->di_onlink) != 0) { + if (dip->di_onlink) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_onlink = 0; + return 1; + dip->di_onlink = 0; } - if (be32_to_cpu(dinoc->di_nextents) != 0) { + if (dip->di_nextents) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_nextents = 0; + return 1; + dip->di_nextents = 0; } - if (be16_to_cpu(dinoc->di_anextents) != 0) { + if (dip->di_anextents) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_anextents = 0; + return 1; + dip->di_anextents = 0; } - if (dinoc->di_version > XFS_DINODE_VERSION_1 && - be32_to_cpu(dinoc->di_nlink) != 0) { + if (dip->di_version > 1 && dip->di_nlink) { dirty = 1; - if (no_modify) - return(1); - - dinoc->di_nlink = 0; + return 1; + dip->di_nlink = 0; } - return(dirty); + return dirty; } /* ARGSUSED */ int -clear_dinode_unlinked(xfs_mount_t *mp, xfs_dinode_t *dino) +clear_dinode_unlinked(xfs_mount_t *mp, xfs_dinode_t *dip) { - if (be32_to_cpu(dino->di_next_unlinked) != NULLAGINO) { + if (be32_to_cpu(dip->di_next_unlinked) != NULLAGINO) { if (!no_modify) - dino->di_next_unlinked = cpu_to_be32(NULLAGINO); - return(1); + dip->di_next_unlinked = cpu_to_be32(NULLAGINO); + return 1; } - return(0); + return 0; } /* @@ -285,17 +253,17 @@ * returns > zero if the inode has been altered while being cleared */ int -clear_dinode(xfs_mount_t *mp, xfs_dinode_t *dino, xfs_ino_t ino_num) +clear_dinode(xfs_mount_t *mp, xfs_dinode_t *dip, xfs_ino_t ino_num) { int dirty; - dirty = clear_dinode_core(&dino->di_core, ino_num); - dirty += clear_dinode_unlinked(mp, dino); + dirty = clear_dinode_core(dip, ino_num); + dirty += clear_dinode_unlinked(mp, dip); /* and clear the forks */ if (dirty && !no_modify) - memset(&dino->di_u, 0, XFS_LITINO(mp)); + memset(XFS_DFORK_DPTR(dip), 0, XFS_LITINO(mp)); return(dirty); } @@ -1354,11 +1322,11 @@ xfs_ino_t lino; lino = XFS_AGINO_TO_INO(mp, agno, ino); - if (whichfork == XFS_DATA_FORK && be64_to_cpu(dip->di_core.di_size) > - XFS_DFORK_DSIZE(dip, mp)) { + if (whichfork == XFS_DATA_FORK && + be64_to_cpu(dip->di_size) > XFS_DFORK_DSIZE(dip, mp)) { do_warn( _("local inode %llu data fork is too large (size = %lld, max = %d)\n"), - lino, be64_to_cpu(dip->di_core.di_size), + lino, be64_to_cpu(dip->di_size), XFS_DFORK_DSIZE(dip, mp)); return(1); } else if (whichfork == XFS_ATTR_FORK) { @@ -1383,7 +1351,7 @@ } int -process_symlink_extlist(xfs_mount_t *mp, xfs_ino_t lino, xfs_dinode_t *dino) +process_symlink_extlist(xfs_mount_t *mp, xfs_ino_t lino, xfs_dinode_t *dip) { xfs_dfiloff_t expected_offset; xfs_bmbt_rec_t *rp; @@ -1392,23 +1360,23 @@ int i; int max_blocks; - if (be64_to_cpu(dino->di_core.di_size) <= XFS_DFORK_DSIZE(dino, mp)) { - if (dino->di_core.di_format == XFS_DINODE_FMT_LOCAL) + if (be64_to_cpu(dip->di_size) <= XFS_DFORK_DSIZE(dip, mp)) { + if (dip->di_format == XFS_DINODE_FMT_LOCAL) return 0; do_warn(_("mismatch between format (%d) and size (%lld) in " - "symlink ino %llu\n"), dino->di_core.di_format, - be64_to_cpu(dino->di_core.di_size), lino); + "symlink ino %llu\n"), dip->di_format, + be64_to_cpu(dip->di_size), lino); return 1; } - if (dino->di_core.di_format == XFS_DINODE_FMT_LOCAL) { + if (dip->di_format == XFS_DINODE_FMT_LOCAL) { do_warn(_("mismatch between format (%d) and size (%lld) in " - "symlink inode %llu\n"), dino->di_core.di_format, - be64_to_cpu(dino->di_core.di_size), lino); + "symlink inode %llu\n"), dip->di_format, + be64_to_cpu(dip->di_size), lino); return 1; } - rp = (xfs_bmbt_rec_t *)XFS_DFORK_DPTR(dino); - numrecs = be32_to_cpu(dino->di_core.di_nextents); + rp = (xfs_bmbt_rec_t *)XFS_DFORK_DPTR(dip); + numrecs = be32_to_cpu(dip->di_nextents); /* * the max # of extents in a symlink inode is equal to the @@ -1474,11 +1442,10 @@ process_symlink( xfs_mount_t *mp, xfs_ino_t lino, - xfs_dinode_t *dino, + xfs_dinode_t *dip, blkmap_t *blkmap) { xfs_dfsbno_t fsbno; - xfs_dinode_core_t *dinoc = &dino->di_core; xfs_buf_t *bp = NULL; char *symlink, *cptr, *buf_data; int i, size, amountdone; @@ -1490,9 +1457,9 @@ * the inode is structurally ok so we don't have to check * for that */ - if (be64_to_cpu(dinoc->di_size) >= MAXPATHLEN) { + if (be64_to_cpu(dip->di_size) >= MAXPATHLEN) { do_warn(_("symlink in inode %llu too long (%lld chars)\n"), - lino, be64_to_cpu(dinoc->di_size)); + lino, be64_to_cpu(dip->di_size)); return(1); } @@ -1501,13 +1468,13 @@ * get symlink contents into data area */ symlink = &data[0]; - if (be64_to_cpu(dinoc->di_size) <= XFS_DFORK_DSIZE(dino, mp)) { + if (be64_to_cpu(dip->di_size) <= XFS_DFORK_DSIZE(dip, mp)) { /* * local symlink, just copy the symlink out of the * inode into the data area */ - memmove(symlink, XFS_DFORK_DPTR(dino), - be64_to_cpu(dinoc->di_size)); + memmove(symlink, XFS_DFORK_DPTR(dip), + be64_to_cpu(dip->di_size)); } else { /* * stored in a meta-data file, have to bmap one block @@ -1516,7 +1483,7 @@ i = size = amountdone = 0; cptr = symlink; - while (amountdone < be64_to_cpu(dinoc->di_size)) { + while (amountdone < be64_to_cpu(dip->di_size)) { fsbno = blkmap_get(blkmap, i); if (fsbno != NULLDFSBNO) bp = libxfs_readbuf(mp->m_dev, @@ -1530,7 +1497,7 @@ } buf_data = (char *)XFS_BUF_PTR(bp); - size = MIN(be64_to_cpu(dinoc->di_size) - amountdone, + size = MIN(be64_to_cpu(dip->di_size) - amountdone, XFS_FSB_TO_BB(mp, 1) * BBSIZE); memmove(cptr, buf_data, size); cptr += size; @@ -1539,12 +1506,12 @@ libxfs_putbuf(bp); } } - data[be64_to_cpu(dinoc->di_size)] = '\0'; + data[be64_to_cpu(dip->di_size)] = '\0'; /* * check for nulls */ - if (null_check(symlink, be64_to_cpu(dinoc->di_size))) { + if (null_check(symlink, be64_to_cpu(dip->di_size))) { do_warn( _("found illegal null character in symlink inode %llu\n"), lino); @@ -1554,7 +1521,7 @@ /* * check for any component being too long */ - if (be64_to_cpu(dinoc->di_size) >= MAXNAMELEN) { + if (be64_to_cpu(dip->di_size) >= MAXNAMELEN) { cptr = strchr(symlink, '/'); while (cptr != NULL) { @@ -1585,7 +1552,7 @@ */ static int process_misc_ino_types(xfs_mount_t *mp, - xfs_dinode_t *dino, + xfs_dinode_t *dip, xfs_ino_t lino, int type) { @@ -1602,27 +1569,27 @@ /* * must also have a zero size */ - if (be64_to_cpu(dino->di_core.di_size) != 0) { + if (be64_to_cpu(dip->di_size) != 0) { switch (type) { case XR_INO_CHRDEV: do_warn(_("size of character device inode %llu != 0 " "(%lld bytes)\n"), lino, - be64_to_cpu(dino->di_core.di_size)); + be64_to_cpu(dip->di_size)); break; case XR_INO_BLKDEV: do_warn(_("size of block device inode %llu != 0 " "(%lld bytes)\n"), lino, - be64_to_cpu(dino->di_core.di_size)); + be64_to_cpu(dip->di_size)); break; case XR_INO_SOCK: do_warn(_("size of socket inode %llu != 0 " "(%lld bytes)\n"), lino, - be64_to_cpu(dino->di_core.di_size)); + be64_to_cpu(dip->di_size)); break; case XR_INO_FIFO: do_warn(_("size of fifo inode %llu != 0 " "(%lld bytes)\n"), lino, - be64_to_cpu(dino->di_core.di_size)); + be64_to_cpu(dip->di_size)); break; default: do_warn(_("Internal error - process_misc_ino_types, " @@ -1641,7 +1608,7 @@ { /* * you can not enforce all misc types have zero data fork blocks - * by checking dino->di_core.di_nblocks because atotblocks (attribute + * by checking dip->di_nblocks because atotblocks (attribute * blocks) are part of nblocks. We must check this later when atotblocks * has been calculated or by doing a simple check that anExtents == 0. * We must also guarantee that totblocks is 0. Thus nblocks checking @@ -1680,50 +1647,50 @@ static inline int dinode_fmt( - xfs_dinode_core_t *dinoc) + xfs_dinode_t *dip) { - return be16_to_cpu(dinoc->di_mode) & S_IFMT; + return be16_to_cpu(dip->di_mode) & S_IFMT; } static inline void change_dinode_fmt( - xfs_dinode_core_t *dinoc, + xfs_dinode_t *dip, int new_fmt) { - int mode = be16_to_cpu(dinoc->di_mode); + int mode = be16_to_cpu(dip->di_mode); ASSERT((new_fmt & ~S_IFMT) == 0); mode &= ~S_IFMT; mode |= new_fmt; - dinoc->di_mode = cpu_to_be16(mode); + dip->di_mode = cpu_to_be16(mode); } static int check_dinode_mode_format( - xfs_dinode_core_t *dinoc) + xfs_dinode_t *dip) { - if (dinoc->di_format >= XFS_DINODE_FMT_UUID) + if (dip->di_format >= XFS_DINODE_FMT_UUID) return -1; /* FMT_UUID is not used */ - switch (dinode_fmt(dinoc)) { + switch (dinode_fmt(dip)) { case S_IFIFO: case S_IFCHR: case S_IFBLK: case S_IFSOCK: - return (dinoc->di_format != XFS_DINODE_FMT_DEV) ? -1 : 0; + return (dip->di_format != XFS_DINODE_FMT_DEV) ? -1 : 0; case S_IFDIR: - return (dinoc->di_format < XFS_DINODE_FMT_LOCAL || - dinoc->di_format > XFS_DINODE_FMT_BTREE) ? -1 : 0; + return (dip->di_format < XFS_DINODE_FMT_LOCAL || + dip->di_format > XFS_DINODE_FMT_BTREE) ? -1 : 0; case S_IFREG: - return (dinoc->di_format < XFS_DINODE_FMT_EXTENTS || - dinoc->di_format > XFS_DINODE_FMT_BTREE) ? -1 : 0; + return (dip->di_format < XFS_DINODE_FMT_EXTENTS || + dip->di_format > XFS_DINODE_FMT_BTREE) ? -1 : 0; case S_IFLNK: - return (dinoc->di_format < XFS_DINODE_FMT_LOCAL || - dinoc->di_format > XFS_DINODE_FMT_EXTENTS) ? -1 : 0; + return (dip->di_format < XFS_DINODE_FMT_LOCAL || + dip->di_format > XFS_DINODE_FMT_EXTENTS) ? -1 : 0; default: ; } @@ -1738,7 +1705,7 @@ static int process_check_sb_inodes( xfs_mount_t *mp, - xfs_dinode_core_t *dinoc, + xfs_dinode_t *dip, xfs_ino_t lino, int *type, int *dirty) @@ -1746,11 +1713,11 @@ if (lino == mp->m_sb.sb_rootino) { if (*type != XR_INO_DIR) { do_warn(_("root inode %llu has bad type 0x%x\n"), - lino, dinode_fmt(dinoc)); + lino, dinode_fmt(dip)); *type = XR_INO_DIR; if (!no_modify) { do_warn(_("resetting to directory\n")); - change_dinode_fmt(dinoc, S_IFDIR); + change_dinode_fmt(dip, S_IFDIR); *dirty = 1; } else do_warn(_("would reset to directory\n")); @@ -1760,7 +1727,7 @@ if (lino == mp->m_sb.sb_uquotino) { if (*type != XR_INO_DATA) { do_warn(_("user quota inode %llu has bad type 0x%x\n"), - lino, dinode_fmt(dinoc)); + lino, dinode_fmt(dip)); mp->m_sb.sb_uquotino = NULLFSINO; return 1; } @@ -1769,7 +1736,7 @@ if (lino == mp->m_sb.sb_gquotino) { if (*type != XR_INO_DATA) { do_warn(_("group quota inode %llu has bad type 0x%x\n"), - lino, dinode_fmt(dinoc)); + lino, dinode_fmt(dip)); mp->m_sb.sb_gquotino = NULLFSINO; return 1; } @@ -1778,18 +1745,18 @@ if (lino == mp->m_sb.sb_rsumino) { if (*type != XR_INO_RTSUM) { do_warn(_("realtime summary inode %llu has bad type 0x%x, "), - lino, dinode_fmt(dinoc)); + lino, dinode_fmt(dip)); if (!no_modify) { do_warn(_("resetting to regular file\n")); - change_dinode_fmt(dinoc, S_IFREG); + change_dinode_fmt(dip, S_IFREG); *dirty = 1; } else { do_warn(_("would reset to regular file\n")); } } - if (mp->m_sb.sb_rblocks == 0 && dinoc->di_nextents != 0) { + if (mp->m_sb.sb_rblocks == 0 && dip->di_nextents != 0) { do_warn(_("bad # of extents (%u) for realtime summary inode %llu\n"), - be32_to_cpu(dinoc->di_nextents), lino); + be32_to_cpu(dip->di_nextents), lino); return 1; } return 0; @@ -1797,18 +1764,18 @@ if (lino == mp->m_sb.sb_rbmino) { if (*type != XR_INO_RTBITMAP) { do_warn(_("realtime bitmap inode %llu has bad type 0x%x, "), - lino, dinode_fmt(dinoc)); + lino, dinode_fmt(dip)); if (!no_modify) { do_warn(_("resetting to regular file\n")); - change_dinode_fmt(dinoc, S_IFREG); + change_dinode_fmt(dip, S_IFREG); *dirty = 1; } else { do_warn(_("would reset to regular file\n")); } } - if (mp->m_sb.sb_rblocks == 0 && dinoc->di_nextents != 0) { + if (mp->m_sb.sb_rblocks == 0 && dip->di_nextents != 0) { do_warn(_("bad # of extents (%u) for realtime bitmap inode %llu\n"), - be32_to_cpu(dinoc->di_nextents), lino); + be32_to_cpu(dip->di_nextents), lino); return 1; } return 0; @@ -1830,21 +1797,20 @@ static int process_check_inode_sizes( xfs_mount_t *mp, - xfs_dinode_t *dino, + xfs_dinode_t *dip, xfs_ino_t lino, int type) { - xfs_dinode_core_t *dinoc = &dino->di_core; - xfs_fsize_t size = be64_to_cpu(dinoc->di_size); + xfs_fsize_t size = be64_to_cpu(dip->di_size); switch (type) { case XR_INO_DIR: - if (size <= XFS_DFORK_DSIZE(dino, mp) && - dinoc->di_format != XFS_DINODE_FMT_LOCAL) { + if (size <= XFS_DFORK_DSIZE(dip, mp) && + dip->di_format != XFS_DINODE_FMT_LOCAL) { do_warn(_("mismatch between format (%d) and size " "(%lld) in directory ino %llu\n"), - dinoc->di_format, size, lino); + dip->di_format, size, lino); return 1; } if (size > XFS_DIR2_LEAF_OFFSET) { @@ -1855,7 +1821,7 @@ break; case XR_INO_SYMLINK: - if (process_symlink_extlist(mp, lino, dino)) { + if (process_symlink_extlist(mp, lino, dip)) { do_warn(_("bad data fork in symlink %llu\n"), lino); return 1; } @@ -1866,7 +1832,7 @@ case XR_INO_SOCK: /* fall through to FIFO case ... */ case XR_INO_MOUNTPOINT: /* fall through to FIFO case ... */ case XR_INO_FIFO: - if (process_misc_ino_types(mp, dino, lino, type)) + if (process_misc_ino_types(mp, dip, lino, type)) return 1; break; @@ -1914,17 +1880,17 @@ static int process_check_inode_forkoff( xfs_mount_t *mp, - xfs_dinode_core_t *dinoc, + xfs_dinode_t *dip, xfs_ino_t lino) { - if (dinoc->di_forkoff == 0) + if (dip->di_forkoff == 0) return 0; - switch (dinoc->di_format) { + switch (dip->di_format) { case XFS_DINODE_FMT_DEV: - if (dinoc->di_forkoff != (roundup(sizeof(xfs_dev_t), 8) >> 3)) { + if (dip->di_forkoff != (roundup(sizeof(xfs_dev_t), 8) >> 3)) { do_warn(_("bad attr fork offset %d in dev inode %llu, " - "should be %d\n"), dinoc->di_forkoff, lino, + "should be %d\n"), dip->di_forkoff, lino, (int)(roundup(sizeof(xfs_dev_t), 8) >> 3)); return 1; } @@ -1932,15 +1898,15 @@ case XFS_DINODE_FMT_LOCAL: /* fall through ... */ case XFS_DINODE_FMT_EXTENTS: /* fall through ... */ case XFS_DINODE_FMT_BTREE: - if (dinoc->di_forkoff >= (XFS_LITINO(mp) >> 3)) { + if (dip->di_forkoff >= (XFS_LITINO(mp) >> 3)) { do_warn(_("bad attr fork offset %d in inode %llu, " - "max=%d\n"), dinoc->di_forkoff, lino, + "max=%d\n"), dip->di_forkoff, lino, XFS_LITINO(mp) >> 3); return 1; } break; default: - do_error(_("unexpected inode format %d\n"), dinoc->di_format); + do_error(_("unexpected inode format %d\n"), dip->di_format); break; } return 0; @@ -1951,24 +1917,24 @@ */ static int process_inode_blocks_and_extents( - xfs_dinode_core_t *dinoc, + xfs_dinode_t *dip, xfs_drfsbno_t nblocks, __uint64_t nextents, __uint64_t anextents, xfs_ino_t lino, int *dirty) { - if (nblocks != be64_to_cpu(dinoc->di_nblocks)) { + if (nblocks != be64_to_cpu(dip->di_nblocks)) { if (!no_modify) { do_warn(_("correcting nblocks for inode %llu, " "was %llu - counted %llu\n"), lino, - be64_to_cpu(dinoc->di_nblocks), nblocks); - dinoc->di_nblocks = cpu_to_be64(nblocks); + be64_to_cpu(dip->di_nblocks), nblocks); + dip->di_nblocks = cpu_to_be64(nblocks); *dirty = 1; } else { do_warn(_("bad nblocks %llu for inode %llu, " "would reset to %llu\n"), - be64_to_cpu(dinoc->di_nblocks), lino, nblocks); + be64_to_cpu(dip->di_nblocks), lino, nblocks); } } @@ -1977,16 +1943,16 @@ nextents, lino); return 1; } - if (nextents != be32_to_cpu(dinoc->di_nextents)) { + if (nextents != be32_to_cpu(dip->di_nextents)) { if (!no_modify) { do_warn(_("correcting nextents for inode %llu, " "was %d - counted %llu\n"), lino, - be32_to_cpu(dinoc->di_nextents), nextents); - dinoc->di_nextents = cpu_to_be32(nextents); + be32_to_cpu(dip->di_nextents), nextents); + dip->di_nextents = cpu_to_be32(nextents); *dirty = 1; } else { do_warn(_("bad nextents %d for inode %llu, would reset " - "to %llu\n"), be32_to_cpu(dinoc->di_nextents), + "to %llu\n"), be32_to_cpu(dip->di_nextents), lino, nextents); } } @@ -1996,16 +1962,16 @@ anextents, lino); return 1; } - if (anextents != be16_to_cpu(dinoc->di_anextents)) { + if (anextents != be16_to_cpu(dip->di_anextents)) { if (!no_modify) { do_warn(_("correcting anextents for inode %llu, " "was %d - counted %llu\n"), lino, - be16_to_cpu(dinoc->di_anextents), anextents); - dinoc->di_anextents = cpu_to_be16(anextents); + be16_to_cpu(dip->di_anextents), anextents); + dip->di_anextents = cpu_to_be16(anextents); *dirty = 1; } else { do_warn(_("bad anextents %d for inode %llu, would reset" - " to %llu\n"), be16_to_cpu(dinoc->di_anextents), + " to %llu\n"), be16_to_cpu(dip->di_anextents), lino, anextents); } } @@ -2020,7 +1986,7 @@ xfs_mount_t *mp, xfs_agnumber_t agno, xfs_agino_t ino, - xfs_dinode_t *dino, + xfs_dinode_t *dip, int type, int *dirty, xfs_drfsbno_t *totblocks, @@ -2028,30 +1994,29 @@ blkmap_t **dblkmap, int check_dups) { - xfs_dinode_core_t *dinoc = &dino->di_core; xfs_ino_t lino = XFS_AGINO_TO_INO(mp, agno, ino); int err = 0; - *nextents = be32_to_cpu(dinoc->di_nextents); - if (*nextents > be64_to_cpu(dinoc->di_nblocks)) + *nextents = be32_to_cpu(dip->di_nextents); + if (*nextents > be64_to_cpu(dip->di_nblocks)) *nextents = 1; - if (dinoc->di_format != XFS_DINODE_FMT_LOCAL && type != XR_INO_RTDATA) + if (dip->di_format != XFS_DINODE_FMT_LOCAL && type != XR_INO_RTDATA) *dblkmap = blkmap_alloc(*nextents); *nextents = 0; - switch (dinoc->di_format) { + switch (dip->di_format) { case XFS_DINODE_FMT_LOCAL: - err = process_lclinode(mp, agno, ino, dino, XFS_DATA_FORK); + err = process_lclinode(mp, agno, ino, dip, XFS_DATA_FORK); *totblocks = 0; break; case XFS_DINODE_FMT_EXTENTS: - err = process_exinode(mp, agno, ino, dino, type, dirty, + err = process_exinode(mp, agno, ino, dip, type, dirty, totblocks, nextents, dblkmap, XFS_DATA_FORK, check_dups); break; case XFS_DINODE_FMT_BTREE: - err = process_btinode(mp, agno, ino, dino, type, dirty, + err = process_btinode(mp, agno, ino, dip, type, dirty, totblocks, nextents, dblkmap, XFS_DATA_FORK, check_dups); break; @@ -2060,13 +2025,13 @@ break; default: do_error(_("unknown format %d, ino %llu (mode = %d)\n"), - dinoc->di_format, lino, be16_to_cpu(dinoc->di_mode)); + dip->di_format, lino, be16_to_cpu(dip->di_mode)); } if (err) { do_warn(_("bad data fork in inode %llu\n"), lino); if (!no_modify) { - *dirty += clear_dinode(mp, dino, lino); + *dirty += clear_dinode(mp, dip, lino); ASSERT(*dirty > 0); } return 1; @@ -2078,18 +2043,18 @@ * re-process data fork to set bitmap since the * bitmap wasn't set the first time through */ - switch (dinoc->di_format) { + switch (dip->di_format) { case XFS_DINODE_FMT_LOCAL: - err = process_lclinode(mp, agno, ino, dino, + err = process_lclinode(mp, agno, ino, dip, XFS_DATA_FORK); break; case XFS_DINODE_FMT_EXTENTS: - err = process_exinode(mp, agno, ino, dino, type, + err = process_exinode(mp, agno, ino, dip, type, dirty, totblocks, nextents, dblkmap, XFS_DATA_FORK, 0); break; case XFS_DINODE_FMT_BTREE: - err = process_btinode(mp, agno, ino, dino, type, + err = process_btinode(mp, agno, ino, dip, type, dirty, totblocks, nextents, dblkmap, XFS_DATA_FORK, 0); break; @@ -2098,8 +2063,8 @@ break; default: do_error(_("unknown format %d, ino %llu (mode = %d)\n"), - dinoc->di_format, lino, - be16_to_cpu(dinoc->di_mode)); + dip->di_format, lino, + be16_to_cpu(dip->di_mode)); } if (no_modify && err != 0) @@ -2118,7 +2083,7 @@ xfs_mount_t *mp, xfs_agnumber_t agno, xfs_agino_t ino, - xfs_dinode_t *dino, + xfs_dinode_t *dip, int type, int *dirty, xfs_drfsbno_t *atotblocks, @@ -2127,20 +2092,19 @@ int extra_attr_check, int *retval) { - xfs_dinode_core_t *dinoc = &dino->di_core; xfs_ino_t lino = XFS_AGINO_TO_INO(mp, agno, ino); blkmap_t *ablkmap = NULL; int repair = 0; int err; - if (!XFS_DFORK_Q(dino)) { + if (!XFS_DFORK_Q(dip)) { *anextents = 0; - if (dinoc->di_aformat != XFS_DINODE_FMT_EXTENTS) { + if (dip->di_aformat != XFS_DINODE_FMT_EXTENTS) { do_warn(_("bad attribute format %d in inode %llu, "), - dinoc->di_aformat, lino); + dip->di_aformat, lino); if (!no_modify) { do_warn(_("resetting value\n")); - dinoc->di_aformat = XFS_DINODE_FMT_EXTENTS; + dip->di_aformat = XFS_DINODE_FMT_EXTENTS; *dirty = 1; } else do_warn(_("would reset value\n")); @@ -2148,33 +2112,33 @@ return 0; } - *anextents = be16_to_cpu(dinoc->di_anextents); - if (*anextents > be64_to_cpu(dinoc->di_nblocks)) + *anextents = be16_to_cpu(dip->di_anextents); + if (*anextents > be64_to_cpu(dip->di_nblocks)) *anextents = 1; - switch (dinoc->di_aformat) { + switch (dip->di_aformat) { case XFS_DINODE_FMT_LOCAL: *anextents = 0; *atotblocks = 0; - err = process_lclinode(mp, agno, ino, dino, XFS_ATTR_FORK); + err = process_lclinode(mp, agno, ino, dip, XFS_ATTR_FORK); break; case XFS_DINODE_FMT_EXTENTS: ablkmap = blkmap_alloc(*anextents); *anextents = 0; - err = process_exinode(mp, agno, ino, dino, type, dirty, + err = process_exinode(mp, agno, ino, dip, type, dirty, atotblocks, anextents, &ablkmap, XFS_ATTR_FORK, check_dups); break; case XFS_DINODE_FMT_BTREE: ablkmap = blkmap_alloc(*anextents); *anextents = 0; - err = process_btinode(mp, agno, ino, dino, type, dirty, + err = process_btinode(mp, agno, ino, dip, type, dirty, atotblocks, anextents, &ablkmap, XFS_ATTR_FORK, check_dups); break; default: do_warn(_("illegal attribute format %d, ino %llu\n"), - dinoc->di_aformat, lino); + dip->di_aformat, lino); err = 1; break; } @@ -2193,11 +2157,11 @@ if (!no_modify) { if (delete_attr_ok) { do_warn(_(", clearing attr fork\n")); - *dirty += clear_dinode_attr(mp, dino, lino); - dinoc->di_aformat = XFS_DINODE_FMT_LOCAL; + *dirty += clear_dinode_attr(mp, dip, lino); + dip->di_aformat = XFS_DINODE_FMT_LOCAL; } else { do_warn("\n"); - *dirty += clear_dinode(mp, dino, lino); + *dirty += clear_dinode(mp, dip, lino); } ASSERT(*dirty > 0); } else { @@ -2213,24 +2177,24 @@ } if (check_dups) { - switch (dinoc->di_aformat) { + switch (dip->di_aformat) { case XFS_DINODE_FMT_LOCAL: - err = process_lclinode(mp, agno, ino, dino, + err = process_lclinode(mp, agno, ino, dip, XFS_ATTR_FORK); break; case XFS_DINODE_FMT_EXTENTS: - err = process_exinode(mp, agno, ino, dino, + err = process_exinode(mp, agno, ino, dip, type, dirty, atotblocks, anextents, &ablkmap, XFS_ATTR_FORK, 0); break; case XFS_DINODE_FMT_BTREE: - err = process_btinode(mp, agno, ino, dino, + err = process_btinode(mp, agno, ino, dip, type, dirty, atotblocks, anextents, &ablkmap, XFS_ATTR_FORK, 0); break; default: do_error(_("illegal attribute fmt %d, ino %llu\n"), - dinoc->di_aformat, lino); + dip->di_aformat, lino); } if (no_modify && err != 0) { @@ -2247,14 +2211,14 @@ /* get this only in phase 3, not in both phase 3 and 4 */ if (extra_attr_check && - process_attributes(mp, lino, dino, ablkmap, &repair)) { + process_attributes(mp, lino, dip, ablkmap, &repair)) { do_warn(_("problem with attribute contents in inode %llu\n"), lino); if (!repair) { /* clear attributes if not done already */ if (!no_modify) { - *dirty += clear_dinode_attr(mp, dino, lino); - dinoc->di_aformat = XFS_DINODE_FMT_LOCAL; + *dirty += clear_dinode_attr(mp, dip, lino); + dip->di_aformat = XFS_DINODE_FMT_LOCAL; } else { do_warn(_("would clear attr fork\n")); } @@ -2277,18 +2241,18 @@ static int process_check_inode_nlink_version( - xfs_dinode_core_t *dinoc, + xfs_dinode_t *dip, xfs_ino_t lino) { int dirty = 0; - if (dinoc->di_version > XFS_DINODE_VERSION_1 && !fs_inode_nlink) { + if (dip->di_version > 1 && !fs_inode_nlink) { /* * do we have a fs/inode version mismatch with a valid * version 2 inode here that has to stay version 2 or * lose links? */ - if (be32_to_cpu(dinoc->di_nlink) > XFS_MAXLINK_1) { + if (be32_to_cpu(dip->di_nlink) > XFS_MAXLINK_1) { /* * yes. are nlink inodes allowed? */ @@ -2318,17 +2282,17 @@ if (!no_modify) { do_warn(_("converting back to version 1,\n" "this may destroy %d links\n"), - be32_to_cpu(dinoc->di_nlink) - + be32_to_cpu(dip->di_nlink) - XFS_MAXLINK_1); - dinoc->di_version = XFS_DINODE_VERSION_1; - dinoc->di_nlink = cpu_to_be32(XFS_MAXLINK_1); - dinoc->di_onlink = cpu_to_be16(XFS_MAXLINK_1); + dip->di_version = 1; + dip->di_nlink = cpu_to_be32(XFS_MAXLINK_1); + dip->di_onlink = cpu_to_be16(XFS_MAXLINK_1); dirty = 1; } else { do_warn(_("would convert back to version 1,\n" "\tthis might destroy %d links\n"), - be32_to_cpu(dinoc->di_nlink) - + be32_to_cpu(dip->di_nlink) - XFS_MAXLINK_1); } } @@ -2344,9 +2308,9 @@ do_warn(_("found version 2 inode %llu, "), lino); if (!no_modify) { do_warn(_("converting back to version 1\n")); - dinoc->di_version = XFS_DINODE_VERSION_1; - dinoc->di_onlink = cpu_to_be16( - be32_to_cpu(dinoc->di_nlink)); + dip->di_version = 1; + dip->di_onlink = cpu_to_be16( + be32_to_cpu(dip->di_nlink)); dirty = 1; } else { do_warn(_("would convert back to version 1\n")); @@ -2359,18 +2323,17 @@ * to stay a version 2 inode. it should have a zero * onlink field, so clear it. */ - if (dinoc->di_version > XFS_DINODE_VERSION_1 && - dinoc->di_onlink != 0 && fs_inode_nlink > 0) { + if (dip->di_version > 1 && dip->di_onlink != 0 && fs_inode_nlink > 0) { if (!no_modify) { do_warn(_("clearing obsolete nlink field in " "version 2 inode %llu, was %d, now 0\n"), - lino, be16_to_cpu(dinoc->di_onlink)); - dinoc->di_onlink = 0; + lino, be16_to_cpu(dip->di_onlink)); + dip->di_onlink = 0; dirty = 1; } else { do_warn(_("would clear obsolete nlink field in " "version 2 inode %llu, currently %d\n"), - lino, be16_to_cpu(dinoc->di_onlink)); + lino, be16_to_cpu(dip->di_onlink)); } } return dirty; @@ -2388,7 +2351,7 @@ /* ARGSUSED */ int process_dinode_int(xfs_mount_t *mp, - xfs_dinode_t *dino, + xfs_dinode_t *dip, xfs_agnumber_t agno, xfs_agino_t ino, int was_free, /* 1 if inode is currently free */ @@ -2405,7 +2368,6 @@ { xfs_drfsbno_t totblocks = 0; xfs_drfsbno_t atotblocks = 0; - xfs_dinode_core_t *dinoc; int di_mode; int type; int retval = 0; @@ -2420,9 +2382,8 @@ *used = is_used; type = XR_INO_UNKNOWN; - dinoc = &dino->di_core; lino = XFS_AGINO_TO_INO(mp, agno, ino); - di_mode = be16_to_cpu(dinoc->di_mode); + di_mode = be16_to_cpu(dip->di_mode); /* * if in verify mode, don't modify the inode. @@ -2438,35 +2399,33 @@ */ ASSERT(uncertain == 0 || verify_mode != 0); - if (be16_to_cpu(dinoc->di_magic) != XFS_DINODE_MAGIC) { + if (be16_to_cpu(dip->di_magic) != XFS_DINODE_MAGIC) { retval = 1; if (!uncertain) do_warn(_("bad magic number 0x%x on inode %llu%c"), - be16_to_cpu(dinoc->di_magic), lino, + be16_to_cpu(dip->di_magic), lino, verify_mode ? '\n' : ','); if (!verify_mode) { if (!no_modify) { do_warn(_(" resetting magic number\n")); - dinoc->di_magic = cpu_to_be16(XFS_DINODE_MAGIC); + dip->di_magic = cpu_to_be16(XFS_DINODE_MAGIC); *dirty = 1; } else do_warn(_(" would reset magic number\n")); } } - if (!XFS_DINODE_GOOD_VERSION(dinoc->di_version) || - (!fs_inode_nlink && dinoc->di_version > XFS_DINODE_VERSION_1)) { + if (!XFS_DINODE_GOOD_VERSION(dip->di_version) || + (!fs_inode_nlink && dip->di_version > 1)) { retval = 1; if (!uncertain) do_warn(_("bad version number 0x%x on inode %llu%c"), - (__s8)dinoc->di_version, lino, + (__s8)dip->di_version, lino, verify_mode ? '\n' : ','); if (!verify_mode) { if (!no_modify) { do_warn(_(" resetting version number\n")); - dinoc->di_version = (fs_inode_nlink) ? - XFS_DINODE_VERSION_2 : - XFS_DINODE_VERSION_1; + dip->di_version = (fs_inode_nlink) ? 2 : 1; *dirty = 1; } else do_warn(_(" would reset version number\n")); @@ -2476,10 +2435,10 @@ /* * blow out of here if the inode size is < 0 */ - if ((xfs_fsize_t)be64_to_cpu(dinoc->di_size) < 0) { + if ((xfs_fsize_t)be64_to_cpu(dip->di_size) < 0) { if (!uncertain) do_warn(_("bad (negative) size %lld on inode %llu\n"), - be64_to_cpu(dinoc->di_size), lino); + be64_to_cpu(dip->di_size), lino); if (verify_mode) return 1; goto clear_bad_out; @@ -2500,7 +2459,7 @@ * set correctly */ if (!no_modify) - *dirty += clear_dinode(mp, dino, lino); + *dirty += clear_dinode(mp, dip, lino); *used = is_free; return 0; } @@ -2512,7 +2471,7 @@ do_warn(_("imap claims a free inode %llu is in use, "), lino); if (!no_modify) { do_warn(_("correcting imap and clearing inode\n")); - *dirty += clear_dinode(mp, dino, lino); + *dirty += clear_dinode(mp, dip, lino); retval = 1; } else do_warn(_("would correct imap and clear inode\n")); @@ -2529,7 +2488,7 @@ * free inodes since technically any format is legal * as we reset the inode when we re-use it. */ - if (di_mode != 0 && check_dinode_mode_format(dinoc) != 0) { + if (di_mode != 0 && check_dinode_mode_format(dip) != 0) { if (!uncertain) do_warn(_("bad inode format in inode %llu\n"), lino); if (verify_mode) @@ -2549,7 +2508,7 @@ * phase 4. Ugly. */ if (check_dups && !no_modify) - *dirty += clear_dinode_unlinked(mp, dino); + *dirty += clear_dinode_unlinked(mp, dip); /* set type and map type info */ @@ -2559,7 +2518,7 @@ *isa_dir = 1; break; case S_IFREG: - if (be16_to_cpu(dinoc->di_flags) & XFS_DIFLAG_REALTIME) + if (be16_to_cpu(dip->di_flags) & XFS_DIFLAG_REALTIME) type = XR_INO_RTDATA; else if (lino == mp->m_sb.sb_rbmino) type = XR_INO_RTBITMAP; @@ -2592,27 +2551,27 @@ /* * type checks for superblock inodes */ - if (process_check_sb_inodes(mp, dinoc, lino, &type, dirty) != 0) + if (process_check_sb_inodes(mp, dip, lino, &type, dirty) != 0) goto clear_bad_out; /* * only regular files with REALTIME or EXTSIZE flags set can have * extsize set, or directories with EXTSZINHERIT. */ - if (be32_to_cpu(dinoc->di_extsize) != 0) { + if (be32_to_cpu(dip->di_extsize) != 0) { if ((type == XR_INO_RTDATA) || - (type == XR_INO_DIR && (be16_to_cpu(dinoc->di_flags) & + (type == XR_INO_DIR && (be16_to_cpu(dip->di_flags) & XFS_DIFLAG_EXTSZINHERIT)) || - (type == XR_INO_DATA && (be16_to_cpu(dinoc->di_flags) & + (type == XR_INO_DATA && (be16_to_cpu(dip->di_flags) & XFS_DIFLAG_EXTSIZE))) { /* s'okay */ ; } else { do_warn(_("bad non-zero extent size %u for " "non-realtime/extsize inode %llu, "), - be32_to_cpu(dinoc->di_extsize), lino); + be32_to_cpu(dip->di_extsize), lino); if (!no_modify) { do_warn(_("resetting to zero\n")); - dinoc->di_extsize = 0; + dip->di_extsize = 0; *dirty = 1; } else do_warn(_("would reset to zero\n")); @@ -2622,19 +2581,19 @@ /* * general size/consistency checks: */ - if (process_check_inode_sizes(mp, dino, lino, type) != 0) + if (process_check_inode_sizes(mp, dip, lino, type) != 0) goto clear_bad_out; /* * check for illegal values of forkoff */ - if (process_check_inode_forkoff(mp, dinoc, lino) != 0) + if (process_check_inode_forkoff(mp, dip, lino) != 0) goto clear_bad_out; /* * check data fork -- if it's bad, clear the inode */ - if (process_inode_data_fork(mp, agno, ino, dino, type, dirty, + if (process_inode_data_fork(mp, agno, ino, dip, type, dirty, &totblocks, &nextents, &dblkmap, check_dups) != 0) goto bad_out; @@ -2642,7 +2601,7 @@ * check attribute fork if necessary. attributes are * always stored in the regular filesystem. */ - if (process_inode_attr_fork(mp, agno, ino, dino, type, dirty, + if (process_inode_attr_fork(mp, agno, ino, dip, type, dirty, &atotblocks, &anextents, check_dups, extra_attr_check, &retval)) goto bad_out; @@ -2656,7 +2615,7 @@ /* * correct space counters if required */ - if (process_inode_blocks_and_extents(dinoc, totblocks + atotblocks, + if (process_inode_blocks_and_extents(dip, totblocks + atotblocks, nextents, anextents, lino, dirty) != 0) goto clear_bad_out; @@ -2666,9 +2625,9 @@ switch (type) { case XR_INO_DIR: if (xfs_sb_version_hasdirv2(&mp->m_sb) ? - process_dir2(mp, lino, dino, ino_discovery, + process_dir2(mp, lino, dip, ino_discovery, dirty, "", parent, dblkmap) : - process_dir(mp, lino, dino, ino_discovery, + process_dir(mp, lino, dip, ino_discovery, dirty, "", parent, dblkmap)) { do_warn(_("problem with directory contents in " "inode %llu\n"), lino); @@ -2676,7 +2635,7 @@ } break; case XR_INO_SYMLINK: - if (process_symlink(mp, lino, dino, dblkmap) != 0) { + if (process_symlink(mp, lino, dip, dblkmap) != 0) { do_warn(_("problem with symbolic link in inode %llu\n"), lino); goto clear_bad_out; @@ -2694,13 +2653,13 @@ * just leave nlinks alone. even if it's set wrong, * it'll be reset when read in. */ - *dirty += process_check_inode_nlink_version(dinoc, lino); + *dirty += process_check_inode_nlink_version(dip, lino); return retval; clear_bad_out: if (!no_modify) { - *dirty += clear_dinode(mp, dino, lino); + *dirty += clear_dinode(mp, dip, lino); ASSERT(*dirty > 0); } bad_out: Index: xfs-cmds/xfsprogs/repair/dir.c =================================================================== --- xfs-cmds.orig/xfsprogs/repair/dir.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/repair/dir.c 2008-12-06 20:05:49.000000000 +0100 @@ -107,7 +107,7 @@ sf = (xfs_dir_shortform_t *)XFS_DFORK_DPTR(dip); max_size = XFS_DFORK_DSIZE(dip, mp); num_entries = sf->hdr.count; - ino_dir_size = be64_to_cpu(dip->di_core.di_size); + ino_dir_size = be64_to_cpu(dip->di_size); *repair = 0; ASSERT(ino_dir_size <= max_size); @@ -338,7 +338,7 @@ if (!no_modify) { tmp_elen = xfs_dir_sf_entsize_byentry(sf_entry); - be64_add_cpu(&dip->di_core.di_size, -tmp_elen); + be64_add_cpu(&dip->di_size, -tmp_elen); ino_dir_size -= tmp_elen; tmp_sfe = (xfs_dir_sf_entry_t *) @@ -425,7 +425,7 @@ ino, (__int64_t) ino_dir_size, (__int64_t)((__psint_t) next_sfe - (__psint_t) sf)); - dip->di_core.di_size = cpu_to_be64((__psint_t)next_sfe + dip->di_size = cpu_to_be64((__psint_t)next_sfe - (__psint_t)sf); *dino_dirty = 1; *repair = 1; @@ -954,7 +954,7 @@ return(fsbno); } - if (be64_to_cpu(dino->di_core.di_size) <= XFS_LBSIZE(mp)) + if (be64_to_cpu(dino->di_size) <= XFS_LBSIZE(mp)) return(fsbno); do { @@ -2551,7 +2551,7 @@ /* * sanity check inode size */ - if (be64_to_cpu(dip->di_core.di_size) < + if (be64_to_cpu(dip->di_size) < (da_cursor.greatest_bno + 1) * mp->m_sb.sb_blocksize) { if ((xfs_fsize_t) da_cursor.greatest_bno * mp->m_sb.sb_blocksize > UINT_MAX) { @@ -2565,9 +2565,9 @@ _("setting directory inode (%llu) size to %llu bytes, was %lld bytes\n"), ino, (xfs_dfiloff_t) (da_cursor.greatest_bno + 1) * mp->m_sb.sb_blocksize, - be64_to_cpu(dip->di_core.di_size)); + be64_to_cpu(dip->di_size)); - dip->di_core.di_size = cpu_to_be64((da_cursor.greatest_bno + 1) + dip->di_size = cpu_to_be64((da_cursor.greatest_bno + 1) * mp->m_sb.sb_blocksize); } return(0); @@ -2709,13 +2709,13 @@ * is only called ONCE so all the subordinate routines will * fix '.' and junk '..' if they're bogus. */ - if (be64_to_cpu(dip->di_core.di_size) <= XFS_DFORK_DSIZE(dip, mp)) { + if (be64_to_cpu(dip->di_size) <= XFS_DFORK_DSIZE(dip, mp)) { dot = 1; dotdot = 1; if (process_shortform_dir(mp, ino, dip, ino_discovery, dino_dirty, parent, dirname, &repair)) res = 1; - } else if (be64_to_cpu(dip->di_core.di_size) <= XFS_LBSIZE(mp)) { + } else if (be64_to_cpu(dip->di_size) <= XFS_LBSIZE(mp)) { if (process_leaf_dir(mp, ino, dip, ino_discovery, dino_dirty, blkmap, &dot, &dotdot, parent, dirname, &repair)) Index: xfs-cmds/xfsprogs/repair/dir2.c =================================================================== --- xfs-cmds.orig/xfsprogs/repair/dir2.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/repair/dir2.c 2008-12-06 20:05:49.000000000 +0100 @@ -806,7 +806,7 @@ xfs_dir2_sf_entry_t *sfep; xfs_dir2_sf_t *sfp; - sfp = &dip->di_u.di_dir2sf; + sfp = (xfs_dir2_sf_t *)XFS_DFORK_DPTR(dip); sfep = xfs_dir2_sf_firstentry(sfp); offset = XFS_DIR2_DATA_FIRST_OFFSET; @@ -858,10 +858,10 @@ xfs_dir2_sf_entry_t *tmp_sfep; xfs_ino_t zero = 0; - sfp = &dip->di_u.di_dir2sf; + sfp = (xfs_dir2_sf_t *)XFS_DFORK_DPTR(dip); max_size = XFS_DFORK_DSIZE(dip, mp); num_entries = sfp->hdr.count; - ino_dir_size = be64_to_cpu(dip->di_core.di_size); + ino_dir_size = be64_to_cpu(dip->di_size); offset = XFS_DIR2_DATA_FIRST_OFFSET; bad_offset = *repair = 0; @@ -1097,7 +1097,7 @@ if (!no_modify) { tmp_elen = xfs_dir2_sf_entsize_byentry(sfp, sfep); - be64_add_cpu(&dip->di_core.di_size, -tmp_elen); + be64_add_cpu(&dip->di_size, -tmp_elen); ino_dir_size -= tmp_elen; tmp_sfep = (xfs_dir2_sf_entry_t *) @@ -1205,7 +1205,7 @@ (__int64_t)((__psint_t)next_sfep - (__psint_t)sfp)); - dip->di_core.di_size = cpu_to_be64( + dip->di_size = cpu_to_be64( (__psint_t)next_sfep - (__psint_t)sfp); *dino_dirty = 1; *repair = 1; @@ -2069,20 +2069,20 @@ */ if (blkmap) last = blkmap_last_off(blkmap); - if (be64_to_cpu(dip->di_core.di_size) <= XFS_DFORK_DSIZE(dip, mp) && - dip->di_core.di_format == XFS_DINODE_FMT_LOCAL) { + if (be64_to_cpu(dip->di_size) <= XFS_DFORK_DSIZE(dip, mp) && + dip->di_format == XFS_DINODE_FMT_LOCAL) { dot = dotdot = 1; res = process_sf_dir2(mp, ino, dip, ino_discovery, dino_dirty, dirname, parent, &repair); } else if (last == mp->m_dirblkfsbs && - (dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS || - dip->di_core.di_format == XFS_DINODE_FMT_BTREE)) { + (dip->di_format == XFS_DINODE_FMT_EXTENTS || + dip->di_format == XFS_DINODE_FMT_BTREE)) { res = process_block_dir2(mp, ino, dip, ino_discovery, dino_dirty, dirname, parent, blkmap, &dot, &dotdot, &repair); } else if (last >= mp->m_dirleafblk + mp->m_dirblkfsbs && - (dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS || - dip->di_core.di_format == XFS_DINODE_FMT_BTREE)) { + (dip->di_format == XFS_DINODE_FMT_EXTENTS || + dip->di_format == XFS_DINODE_FMT_BTREE)) { res = process_leaf_node_dir2(mp, ino, dip, ino_discovery, dirname, parent, blkmap, &dot, &dotdot, &repair, last > mp->m_dirleafblk + mp->m_dirblkfsbs); Index: xfs-cmds/xfsprogs/repair/phase6.c =================================================================== --- xfs-cmds.orig/xfsprogs/repair/phase6.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/repair/phase6.c 2008-12-06 20:05:49.000000000 +0100 @@ -444,11 +444,11 @@ error); } - memset(&ip->i_d, 0, sizeof(xfs_dinode_core_t)); + memset(&ip->i_d, 0, sizeof(xfs_icdinode_t)); ip->i_d.di_magic = XFS_DINODE_MAGIC; ip->i_d.di_mode = S_IFREG; - ip->i_d.di_version = XFS_DINODE_VERSION_1; + ip->i_d.di_version = 1; ip->i_d.di_format = XFS_DINODE_FMT_EXTENTS; ip->i_d.di_aformat = XFS_DINODE_FMT_EXTENTS; @@ -677,11 +677,11 @@ error); } - memset(&ip->i_d, 0, sizeof(xfs_dinode_core_t)); + memset(&ip->i_d, 0, sizeof(xfs_icdinode_t)); ip->i_d.di_magic = XFS_DINODE_MAGIC; ip->i_d.di_mode = S_IFREG; - ip->i_d.di_version = XFS_DINODE_VERSION_1; + ip->i_d.di_version = 1; ip->i_d.di_format = XFS_DINODE_FMT_EXTENTS; ip->i_d.di_aformat = XFS_DINODE_FMT_EXTENTS; @@ -778,11 +778,11 @@ /* * take care of the core -- initialization from xfs_ialloc() */ - memset(&ip->i_d, 0, sizeof(xfs_dinode_core_t)); + memset(&ip->i_d, 0, sizeof(xfs_icdinode_t)); ip->i_d.di_magic = XFS_DINODE_MAGIC; ip->i_d.di_mode = (__uint16_t) mode|S_IFDIR; - ip->i_d.di_version = XFS_DINODE_VERSION_1; + ip->i_d.di_version = 1; ip->i_d.di_format = XFS_DINODE_FMT_EXTENTS; ip->i_d.di_aformat = XFS_DINODE_FMT_EXTENTS; Index: xfs-cmds/xfsprogs/repair/prefetch.c =================================================================== --- xfs-cmds.orig/xfsprogs/repair/prefetch.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/repair/prefetch.c 2008-12-06 20:05:49.000000000 +0100 @@ -330,7 +330,7 @@ xfs_dinode_t *dino) { pf_read_bmbt_reclist(args, (xfs_bmbt_rec_t *)XFS_DFORK_DPTR(dino), - be32_to_cpu(dino->di_core.di_nextents)); + be32_to_cpu(dino->di_nextents)); } static void @@ -338,27 +338,25 @@ prefetch_args_t *args, xfs_buf_t *bp) { - xfs_dinode_t *dino; int icnt = 0; int hasdir = 0; int isadir; - xfs_dinode_core_t *dinoc; + xfs_dinode_t *dip; for (icnt = 0; icnt < (XFS_BUF_COUNT(bp) >> mp->m_sb.sb_inodelog); icnt++) { - dino = XFS_MAKE_IPTR(mp, bp, icnt); - dinoc = &dino->di_core; + dip = XFS_MAKE_IPTR(mp, bp, icnt); /* * We are only prefetching directory contents in extents * and btree nodes for other inodes */ - isadir = (be16_to_cpu(dinoc->di_mode) & S_IFMT) == S_IFDIR; + isadir = (be16_to_cpu(dip->di_mode) & S_IFMT) == S_IFDIR; hasdir |= isadir; - if (dinoc->di_format <= XFS_DINODE_FMT_LOCAL) + if (dip->di_format <= XFS_DINODE_FMT_LOCAL) continue; - if (!isadir && (dinoc->di_format == XFS_DINODE_FMT_EXTENTS || + if (!isadir && (dip->di_format == XFS_DINODE_FMT_EXTENTS || args->dirs_only)) continue; @@ -367,30 +365,29 @@ * its directory data. It's a cut down version of * process_dinode_int() in dinode.c. */ - if (dinoc->di_format > XFS_DINODE_FMT_BTREE) + if (dip->di_format > XFS_DINODE_FMT_BTREE) continue; - if (be16_to_cpu(dinoc->di_magic) != XFS_DINODE_MAGIC) + if (be16_to_cpu(dip->di_magic) != XFS_DINODE_MAGIC) continue; - if (!XFS_DINODE_GOOD_VERSION(dinoc->di_version) || - (!fs_inode_nlink && dinoc->di_version > - XFS_DINODE_VERSION_1)) + if (!XFS_DINODE_GOOD_VERSION(dip->di_version) || + (!fs_inode_nlink && dip->di_version > 1)) continue; - if (be64_to_cpu(dinoc->di_size) <= XFS_DFORK_DSIZE(dino, mp)) + if (be64_to_cpu(dip->di_size) <= XFS_DFORK_DSIZE(dip, mp)) continue; - if ((dinoc->di_forkoff != 0) && - (dinoc->di_forkoff >= (XFS_LITINO(mp) >> 3))) + if (dip->di_forkoff && + (dip->di_forkoff >= (XFS_LITINO(mp) >> 3))) continue; - switch (dinoc->di_format) { + switch (dip->di_format) { case XFS_DINODE_FMT_EXTENTS: - pf_read_exinode(args, dino); + pf_read_exinode(args, dip); break; case XFS_DINODE_FMT_BTREE: - pf_read_btinode(args, dino, isadir); + pf_read_btinode(args, dip, isadir); break; } } Index: xfs-cmds/xfsprogs/include/libxfs.h =================================================================== --- xfs-cmds.orig/xfsprogs/include/libxfs.h 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/include/libxfs.h 2008-12-06 20:05:49.000000000 +0100 @@ -389,10 +389,8 @@ struct cache_node i_node; xfs_mount_t *i_mount; /* fs mount struct ptr */ xfs_ino_t i_ino; /* inode number (agno/agino) */ - xfs_daddr_t i_blkno; /* blkno of inode buffer */ + struct xfs_imap i_imap; /* location for xfs_imap() */ dev_t i_dev; /* dev for this inode */ - ushort i_len; /* len of inode buffer */ - ushort i_boffset; /* off of inode in buffer */ xfs_ifork_t *i_afp; /* attribute fork pointer */ xfs_ifork_t i_df; /* data fork */ xfs_trans_t *i_transp; /* ptr to owning transaction */ @@ -419,8 +417,6 @@ extern void libxfs_ichgtime (xfs_inode_t *, int); extern int libxfs_iflush_int (xfs_inode_t *, xfs_buf_t *); -extern int libxfs_iread (xfs_mount_t *, xfs_trans_t *, xfs_ino_t, - xfs_inode_t *, xfs_daddr_t); /* Inode Cache Interfaces */ extern struct cache *libxfs_icache; @@ -465,7 +461,6 @@ #include #include #include -#include #include #include Index: xfs-cmds/xfsprogs/libxfs/logitem.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/logitem.c 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/logitem.c 2008-12-06 20:05:49.000000000 +0100 @@ -493,7 +493,7 @@ iip->ili_inode = ip; iip->ili_format.ilf_type = XFS_LI_INODE; iip->ili_format.ilf_ino = ip->i_ino; - iip->ili_format.ilf_blkno = ip->i_blkno; - iip->ili_format.ilf_len = ip->i_len; - iip->ili_format.ilf_boffset = ip->i_boffset; + iip->ili_format.ilf_blkno = ip->i_imap.im_blkno; + iip->ili_format.ilf_len = ip->i_imap.im_len; + iip->ili_format.ilf_boffset = ip->i_imap.im_boffset; } Index: xfs-cmds/xfsprogs/libxfs/rdwr.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/rdwr.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/rdwr.c 2008-12-06 20:05:49.000000000 +0100 @@ -677,7 +677,10 @@ fprintf(stderr, "%s: allocated inode, ino=%llu(%llu), %p\n", __FUNCTION__, (unsigned long long)ino, bno, ip); #endif - if ((error = libxfs_iread(mp, tp, ino, ip, bno))) { + ip->i_ino = ino; + ip->i_mount = mp; + error = xfs_iread(mp, tp, ip, bno, 0); + if (error) { cache_node_purge(libxfs_icache, &ino, (struct cache_node *)ip); ip = NULL; Index: xfs-cmds/xfsprogs/libxfs/trans.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/trans.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/trans.c 2008-12-06 20:05:49.000000000 +0100 @@ -592,7 +592,7 @@ /* * Get the buffer containing the on-disk inode. */ - error = xfs_itobp(mp, NULL, ip, &dip, &bp, 0, 0, 0); + error = xfs_itobp(mp, NULL, ip, &dip, &bp, 0); if (error) { fprintf(stderr, _("%s: warning - itobp failed (%d)\n"), progname, error); Index: xfs-cmds/xfsprogs/libxfs/xfs.h =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/xfs.h 2008-12-06 20:05:45.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/xfs.h 2008-12-06 20:05:49.000000000 +0100 @@ -181,6 +181,7 @@ #define XFS_BUF_UNDELAYWRITE(bp) ((bp)->b_flags &= ~LIBXFS_B_DIRTY) #define XFS_BUF_SET_VTYPE(a,b) ((void) 0) #define XFS_BUF_SET_VTYPE_REF(a,b,c) ((void) 0) +#define XFS_BUF_SET_REF(a,b) ((void) 0) #define XFS_BUF_SET_BDSTRAT_FUNC(a,b) ((void) 0) #define xfs_incore(bt,blkno,len,lockit) 0 @@ -300,7 +301,6 @@ /* xfs_inode.c */ void xfs_iflush_fork(xfs_inode_t *, xfs_dinode_t *, xfs_inode_log_item_t *, int, xfs_buf_t *); -int xfs_iformat(xfs_inode_t *, xfs_dinode_t *); /* xfs_mount.c */ int xfs_initialize_perag_data(xfs_mount_t *, xfs_agnumber_t); Index: xfs-cmds/xfsprogs/libxfs/xfs_da_btree.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/xfs_da_btree.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/xfs_da_btree.c 2008-12-06 20:05:49.000000000 +0100 @@ -1539,11 +1539,14 @@ int nmap, error, w, count, c, got, i, mapi; xfs_trans_t *tp; xfs_mount_t *mp; + xfs_drfsbno_t nblks; dp = args->dp; mp = dp->i_mount; w = args->whichfork; tp = args->trans; + nblks = dp->i_d.di_nblocks; + /* * For new directories adjust the file offset and block count. */ @@ -1620,6 +1623,8 @@ } if (mapp != &map) kmem_free(mapp); + /* account for newly allocated blocks in reserved blocks total */ + args->total -= dp->i_d.di_nblocks - nblks; *new_blkno = (xfs_dablk_t)bno; return 0; } Index: xfs-cmds/xfsprogs/libxfs/xfs_bmap.c =================================================================== --- xfs-cmds.orig/xfsprogs/libxfs/xfs_bmap.c 2008-12-06 20:05:46.000000000 +0100 +++ xfs-cmds/xfsprogs/libxfs/xfs_bmap.c 2008-12-06 20:05:49.000000000 +0100 @@ -169,7 +169,7 @@ * Remove the entry "free" from the free item list. Prev points to the * previous entry, unless "free" is the head of the list. * - * Note: this requires user-space public scope for libxfs_iread + * Note: this requires user-space public scope for libxfs_bmap_finish */ void xfs_bmap_del_free( @@ -3250,7 +3250,7 @@ * Remove the entry "free" from the free item list. Prev points to the * previous entry, unless "free" is the head of the list. * - * Note: this requires user-space public scope for libxfs_iread + * Note: this requires user-space public scope for libxfs_bmap_finish */ void xfs_bmap_del_free( Index: xfs-cmds/xfstests/186 =================================================================== --- xfs-cmds.orig/xfstests/186 2008-12-06 20:04:34.000000000 +0100 +++ xfs-cmds/xfstests/186 2008-12-06 20:05:59.000000000 +0100 @@ -66,7 +66,7 @@ _filter_inode() { - tee -a $seq.full | egrep '^u.sfdir2|^a.sfattr|core.forkoff' |\ + tee -a $seq.full | egrep '^u.sfdir2|^a.sfattr|forkoff' |\ egrep -v 'inumber|parent' } Index: xfs-cmds/xfstests/186.out =================================================================== --- xfs-cmds.orig/xfstests/186.out 2008-12-06 20:05:57.000000000 +0100 +++ xfs-cmds/xfstests/186.out 2008-12-06 20:05:59.000000000 +0100 @@ -2,7 +2,7 @@ ================================= ATTR2 -core.forkoff = 0 +forkoff = 0 u.sfdir2.hdr.count = 0 u.sfdir2.hdr.i8count = 0 ================================= @@ -12,7 +12,7 @@ ================================= ATTR2 -core.forkoff = 0 +forkoff = 0 u.sfdir2.hdr.count = 25 u.sfdir2.hdr.i8count = 0 u.sfdir2.list[0].namelen = 6 @@ -98,7 +98,7 @@ ================================= ATTR ATTR2 -core.forkoff = 47 +forkoff = 47 u.sfdir2.hdr.count = 25 u.sfdir2.hdr.i8count = 0 u.sfdir2.list[0].namelen = 6 @@ -195,7 +195,7 @@ ================================= ATTR -core.forkoff = 47 +forkoff = 47 u.sfdir2.hdr.count = 25 u.sfdir2.hdr.i8count = 0 u.sfdir2.list[0].namelen = 6 -- From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 13:36:51 2008 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 mBMJapR9020925 for ; Mon, 22 Dec 2008 13:36:51 -0600 X-ASG-Debug-ID: 1229974610-06f000a80000-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 6FB7E3FDF8 for ; Mon, 22 Dec 2008 11:36:50 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id VimQGH5YMVds83Cr for ; Mon, 22 Dec 2008 11:36:50 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEo7G-0007qH-8Y; Mon, 22 Dec 2008 16:58:50 +0000 Date: Mon, 22 Dec 2008 11:58:50 -0500 From: Christoph Hellwig To: Roger Willcocks Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: xfstests testcase 111: Infinite xfs_bulkstat bad-inode loop case from Roger Willcocks Subject: xfstests testcase 111: Infinite xfs_bulkstat bad-inode loop case from Roger Willcocks Message-ID: <20081222165848.GA17075@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: 1229974610 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Hi Roger, I believe the xfstests case 111 is based on a report by you. Do you remember what was going on there? From a look at the testcase it overwrites an inode cluster and then tries to bulkstat them. This works fine with a non-debug kernel, but due to debug kernels panicing it fails there. Do you remember what the testcase was looking for? I suspect we should just not run it for debug kernels, but I'd like to know more about it so we can add comments describing it. Cheers, Christoph From roger@filmlight.ltd.uk Mon Dec 22 14:29:12 2008 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=BAYES_00,J_CHICKENPOX_32, J_CHICKENPOX_43,RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_BRBL,RCVD_IN_PSBL, RCVD_IN_SORBS_WEB,STOX_REPLY_TYPE 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 mBMKTCwU024964 for ; Mon, 22 Dec 2008 14:29:12 -0600 X-ASG-Debug-ID: 1229977748-06f103300000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from a.mx.filmlight.ltd.uk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 961DB408AE for ; Mon, 22 Dec 2008 12:29:08 -0800 (PST) Received: from a.mx.filmlight.ltd.uk (alto.filmlight.ltd.uk [217.40.27.25]) by cuda.sgi.com with SMTP id ZLRHTy8opTEmNBwN for ; Mon, 22 Dec 2008 12:29:08 -0800 (PST) Received: (qmail 1432 invoked from network); 22 Dec 2008 20:29:05 -0000 Received: from nat67.mia.three.co.uk (HELO BODDINGTON) (roger@217.171.129.67) by a.mx.filmlight.ltd.uk with SMTP; 22 Dec 2008 20:29:05 -0000 Message-ID: From: "Roger Willcocks" To: "Christoph Hellwig" Cc: References: <20081222165848.GA17075@infradead.org> X-ASG-Orig-Subj: Re: xfstests testcase 111: Infinite xfs_bulkstat bad-inode loop casefrom Roger Willcocks Subject: Re: xfstests testcase 111: Infinite xfs_bulkstat bad-inode loop casefrom Roger Willcocks Date: Mon, 22 Dec 2008 20:28:59 -0000 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.5512 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 X-Barracuda-Connect: alto.filmlight.ltd.uk[217.40.27.25] X-Barracuda-Start-Time: 1229977749 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=STOX_REPLY_TYPE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13382 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 STOX_REPLY_TYPE STOX_REPLY_TYPE > Hi Roger, > > I believe the xfstests case 111 is based on a report by you. Do you > remember what was going on there? From a look at the testcase it > overwrites an inode cluster and then tries to bulkstat them. This works > fine with a non-debug kernel, but due to debug kernels panicing it fails > there. > > Do you remember what the testcase was looking for? I suspect we should > just not run it for debug kernels, but I'd like to know more about it > so we can add comments describing it. > > Cheers, > Christoph > Hi Christoph, here are the relevant extracts from our in-house bugzilla (bug 3675). Since the problem only occurs when the disk is corrupted, I don't see any problem with skipping the test on debug kernels. ** 2006-02-01 xfs_fsr can get into a state where one processor spends 100% of its time looping in the kernel. The application can't be killed. 'top' shows it using 50% CPU (i.e. all of one of the two processors). oprofile reveals that one processor spends about 2/3 of its time in xfs.ko. It looks like the offending syscall is xfs_bulkstat. ** 2006-02-03 Looks like xfs_itobp (map inode number to disk buffer) detects a corrupted inode (bad magic number). That causes a break out of a loop in xfs_bulkstat, skipping setting the teminating condition of a containing loop. I'll file a bug report with SGI. ** 2006-02-03 SGI say 'Ayup, I think you're right'- http://marc.theaimsgroup.com/?t=113889680200006 ** 2006-02-07 A bad inode magic number can cause the xfs_bulkstat syscall to get stuck looping in the kernel. To reproduce: (don't try this at home folks!) - mkfs.xfs /dev/sda mount filesystem and create 1000 or so files (I copied a handy 313-byte file). run this program: --------- #include #include #include char buffer[32768]; void nuke() { int i; for (i = 2048; i < 32768-1; i++) if (buffer[i] == 'I' && buffer[i+1] == 'N') buffer[i] = buffer[i+1] = 'X'; } int main(int argc, char* argv[]) { int f = open("/dev/sda", O_RDWR); if (lseek(f, 32768, SEEK_SET) < 0) perror("lseek"); if (read(f, buffer, 32768) != 32768) perror("read"); nuke(); if (lseek(f, 32768, SEEK_SET) < 0) perror("lseek"); if (write(f, buffer, 32768) != 32768) perror("write"); close(f); } --------- mount the disk and run xfs_fsr. It immediately gets stuck in a kernel loop. ** 2006-02-08 SGI have added a corresponding regression test to the xfs_cmds package http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfstests/111?rev=1.1 -- Roger From markgw@sgi.com Mon Dec 22 14:34:36 2008 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 relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBMKYZ0o025293 for ; Mon, 22 Dec 2008 14:34:36 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id 7E1888F8091; Mon, 22 Dec 2008 12:34:30 -0800 (PST) Received: from [134.15.251.1] (melb-sw-corp-251-1.corp.sgi.com [134.15.251.1]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id HAA26472; Tue, 23 Dec 2008 07:34:28 +1100 Message-ID: <494FF9B3.9030103@sgi.com> Date: Tue, 23 Dec 2008 07:33:55 +1100 From: Mark Goodwin Reply-To: markgw@sgi.com Organization: SGI Engineering User-Agent: Thunderbird 2.0.0.18 (Windows/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com Subject: Re: [PATCH 00/20] xfs-cmds staging tree References: <20081222163831.755809000@bombadil.infradead.org> In-Reply-To: <20081222163831.755809000@bombadil.infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Christoph Hellwig wrote: > This is the staging tree of xfs patches. Given that Barry is gone now it seem > like no one cares about userspace and I'll play patch monkey for now. Thanks Christoph. Lachlan and I were just discussing yesterday that it's time to set up a git repository for xfs-cmds on oss. This would contain all the userspace stuff: attr, acl, xfsprogs, dmapi, xfsdump and xfstests. Anyone have a reason not to keep all of this together in the one tree? I guess we'd need branches for 'master' (aka dev) and 'stable' or something ..? Cheers -- Mark From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 14:50:04 2008 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 mBMKnwop026376 for ; Mon, 22 Dec 2008 14:50:04 -0600 X-ASG-Debug-ID: 1229978997-02e0021e0000-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 723B61776068; Mon, 22 Dec 2008 12:49:57 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id mTwJ5oqSaGD21Xje; Mon, 22 Dec 2008 12:49:57 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEriv-0006D1-1X; Mon, 22 Dec 2008 20:49:57 +0000 Date: Mon, 22 Dec 2008 15:49:57 -0500 From: Christoph Hellwig To: Mark Goodwin Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 00/20] xfs-cmds staging tree Subject: Re: [PATCH 00/20] xfs-cmds staging tree Message-ID: <20081222204956.GA23453@infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> <494FF9B3.9030103@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <494FF9B3.9030103@sgi.com> 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: 1229978997 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Tue, Dec 23, 2008 at 07:33:55AM +1100, Mark Goodwin wrote: > > > Christoph Hellwig wrote: >> This is the staging tree of xfs patches. Given that Barry is gone now it seem >> like no one cares about userspace and I'll play patch monkey for now. > > Thanks Christoph. Lachlan and I were just discussing yesterday that > it's time to set up a git repository for xfs-cmds on oss. This would > contain all the userspace stuff: attr, acl, xfsprogs, dmapi, xfsdump > and xfstests. > > Anyone have a reason not to keep all of this together in the one tree? > I guess we'd need branches for 'master' (aka dev) and 'stable' or > something ..? Yes, that's a plan. Can you set it up in a way that we can push directly to, similar to how Nathan does it for pcp? Nathan would also like to push to the xfs-cmds tree for the debian packaging, btw. One thing we were discussing is if it's really a good idea to have all these together. acl and attr aren't really related to XFS, and it might be a good idea to just have them maintained directly by Andreas. xfsprogs is I think mostly by terrain these days with Barry gone, xfstests is something I'd voluntter Eric for as he's been doing good work on it. xfsdump still has a maintainer with Bill Kendall, and dmapi would probably be best left to the DMF group at SGI. xfsmisc might be better off as a scripts/ directory inside xfsprogs. From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 14:51:05 2008 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 mBMKp4fQ026533 for ; Mon, 22 Dec 2008 14:51:05 -0600 X-ASG-Debug-ID: 1229979062-06cb03aa0000-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 D9F2D400FC for ; Mon, 22 Dec 2008 12:51:02 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id BdQHUnIBFfDPSRlP for ; Mon, 22 Dec 2008 12:51:02 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LErjU-0006cF-0F; Mon, 22 Dec 2008 20:50:32 +0000 Date: Mon, 22 Dec 2008 15:50:31 -0500 From: Christoph Hellwig To: Roger Willcocks Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfstests testcase 111: Infinite xfs_bulkstat bad-inode loop casefrom Roger Willcocks Subject: Re: xfstests testcase 111: Infinite xfs_bulkstat bad-inode loop casefrom Roger Willcocks Message-ID: <20081222205031.GB23453@infradead.org> References: <20081222165848.GA17075@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: 1229979062 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Mon, Dec 22, 2008 at 08:28:59PM -0000, Roger Willcocks wrote: > Hi Christoph, > > here are the relevant extracts from our in-house bugzilla (bug 3675). > Since the problem only occurs when the disk is corrupted, I don't see any > problem with skipping the test on debug kernels. Thanks a lot, that's some very helpful notes. I'll put a shortened version of this into the testcase as a comment. From markgw@sgi.com Mon Dec 22 16:12:48 2008 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 relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBMMClU4002837 for ; Mon, 22 Dec 2008 16:12:48 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id C8C4F8F8087; Mon, 22 Dec 2008 14:12:42 -0800 (PST) Received: from [134.15.251.1] (melb-sw-corp-251-1.corp.sgi.com [134.15.251.1]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id JAA27760; Tue, 23 Dec 2008 09:12:20 +1100 Message-ID: <495010A2.2030903@sgi.com> Date: Tue, 23 Dec 2008 09:11:46 +1100 From: Mark Goodwin Reply-To: markgw@sgi.com Organization: SGI Engineering User-Agent: Thunderbird 2.0.0.18 (Windows/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com Subject: Re: [PATCH 00/20] xfs-cmds staging tree References: <20081222163831.755809000@bombadil.infradead.org> <494FF9B3.9030103@sgi.com> <20081222204956.GA23453@infradead.org> In-Reply-To: <20081222204956.GA23453@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.91.2, clamav-milter version 0.91.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Tue, Dec 23, 2008 at 07:33:55AM +1100, Mark Goodwin wrote: >> >> Christoph Hellwig wrote: >>> This is the staging tree of xfs patches. Given that Barry is gone now it seem >>> like no one cares about userspace and I'll play patch monkey for now. >> Thanks Christoph. Lachlan and I were just discussing yesterday that >> it's time to set up a git repository for xfs-cmds on oss. This would >> contain all the userspace stuff: attr, acl, xfsprogs, dmapi, xfsdump >> and xfstests. >> >> Anyone have a reason not to keep all of this together in the one tree? >> I guess we'd need branches for 'master' (aka dev) and 'stable' or >> something ..? > > Yes, that's a plan. Can you set it up in a way that we can push > directly to, similar to how Nathan does it for pcp? I unsure, but don't think a group writable repository would work too well. Nathan doesn't push directly into the official pcp git tree (which is at git://oss/pcp/pcp.git) but rather pushes to his own git tree (which is at git://oss/nathans/pcp.git). SGI review and pull those commits and push them into the official tree (via an internal staging tree using a hook for the ptools back-end, but that's transparent to oss users). Nathan also reviews patches from others and pulls their patches into his tree, and regularly re-syncs with the official tree. git works it all out just fine. This is fairly new, but seems to work rather well since it supports effective collaboration for trusted contributors without SGI becoming a patch acceptance bottleneck - sort of a multiple maintainership. > Nathan would also like to push to the xfs-cmds tree for the debian packaging, btw. ok > One thing we were discussing is if it's really a good idea to have all > these together. It would certainly help SGI if the directory structure for the proposed xfs-cmds tree remained the same as it is in ptools at the moment. I guess we could consider splitting each xfs-cmds directory into separate repositories, but then building it all togetheer would be a pain. It could certainly make sense to split off xfstests into it's own tree since it's not part of the xfs-cmds build. Cheers - Mark From SRS0+49e51b8ad45fbb1c410d+1947+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 22 16:16:46 2008 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 mBMMGjV3003245 for ; Mon, 22 Dec 2008 16:16:46 -0600 X-ASG-Debug-ID: 1229984204-70c302490000-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 7783D41012 for ; Mon, 22 Dec 2008 14:16:44 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id alsUgyt2gUzgMatt for ; Mon, 22 Dec 2008 14:16:44 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LEt4P-0006Oc-F7; Mon, 22 Dec 2008 22:16:13 +0000 Date: Mon, 22 Dec 2008 17:16:13 -0500 From: Christoph Hellwig To: Mark Goodwin Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 00/20] xfs-cmds staging tree Subject: Re: [PATCH 00/20] xfs-cmds staging tree Message-ID: <20081222221613.GA7128@infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> <494FF9B3.9030103@sgi.com> <20081222204956.GA23453@infradead.org> <495010A2.2030903@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <495010A2.2030903@sgi.com> 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: 1229984204 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.91.2, clamav-milter version 0.91.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Dec 23, 2008 at 09:11:46AM +1100, Mark Goodwin wrote: > I unsure, but don't think a group writable repository would work too well. > Nathan doesn't push directly into the official pcp git tree (which is at > git://oss/pcp/pcp.git) but rather pushes to his own git tree (which is > at git://oss/nathans/pcp.git). SGI review and pull those commits and push > them into the official tree (via an internal staging tree using a hook > for the ptools back-end, but that's transparent to oss users). Nathan also > reviews patches from others and pulls their patches into his tree, and > regularly re-syncs with the official tree. git works it all out just fine. > > This is fairly new, but seems to work rather well since it supports > effective collaboration for trusted contributors without SGI becoming > a patch acceptance bottleneck - sort of a multiple maintainership. I've set up a kernel.org hierachy where can have group commits. We can try for a while to have sgi pull from it. >> One thing we were discussing is if it's really a good idea to have all >> these together. > > It would certainly help SGI if the directory structure for the proposed > xfs-cmds tree remained the same as it is in ptools at the moment. I > guess we could consider splitting each xfs-cmds directory into separate > repositories, but then building it all togetheer would be a pain. It could > certainly make sense to split off xfstests into it's own tree since it's > not part of the xfs-cmds build. Ok, sounds fair to keep it like that for now. From nscott@aconex.com Mon Dec 22 17:20:43 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 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 mBMNKgWl008556 for ; Mon, 22 Dec 2008 17:20:42 -0600 X-ASG-Debug-ID: 1229988039-32c8018b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from postoffice2.aconex.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id AA6701777733 for ; Mon, 22 Dec 2008 15:20:39 -0800 (PST) Received: from postoffice2.aconex.com (mail.aconex.com [203.89.202.182]) by cuda.sgi.com with ESMTP id apH6GXsfs8eJmEII for ; Mon, 22 Dec 2008 15:20:39 -0800 (PST) Received: from postoffice.aconex.com (localhost [127.0.0.1]) by postoffice2.aconex.com (Spam Firewall) with ESMTP id 6D43A54CFCC; Tue, 23 Dec 2008 10:05:10 +1100 (EST) Received: from postoffice.aconex.com (postoffice.yarra.acx [192.168.102.1]) by postoffice2.aconex.com with ESMTP id OkYTYABZu98EAT8j; Tue, 23 Dec 2008 10:05:10 +1100 (EST) Received: from [192.168.5.24] (melho0.aconex.com [203.89.192.141]) by postoffice.aconex.com (Postfix) with ESMTP id 5E3BC92C2DF; Tue, 23 Dec 2008 10:05:10 +1100 (EST) X-ASG-Orig-Subj: Re: [PATCH 00/20] xfs-cmds staging tree Subject: Re: [PATCH 00/20] xfs-cmds staging tree From: Nathan Scott To: Mark Goodwin , Christoph Hellwig Cc: xfs@oss.sgi.com In-Reply-To: <20081222221613.GA7128@infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> <494FF9B3.9030103@sgi.com> <20081222204956.GA23453@infradead.org> <495010A2.2030903@sgi.com> <20081222221613.GA7128@infradead.org> Content-Type: text/plain Date: Tue, 23 Dec 2008 10:02:27 +1100 Message-Id: <1229986947.4662.13.camel@verge.scott.net.au> Mime-Version: 1.0 X-Mailer: Evolution 2.22.3.1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail.aconex.com[203.89.202.182] X-Barracuda-Start-Time: 1229988040 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.13393 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.91.2, clamav-milter version 0.91.2 on oss.sgi.com X-Virus-Status: Clean On Mon, 2008-12-22 at 17:16 -0500, Christoph Hellwig wrote: > On Tue, Dec 23, 2008 at 09:11:46AM +1100, Mark Goodwin wrote: > >> One thing we were discussing is if it's really a good idea to have all > >> these together. > > > > It would certainly help SGI if the directory structure for the proposed > > xfs-cmds tree remained the same as it is in ptools at the moment. I > > guess we could consider splitting each xfs-cmds directory into separate > > repositories, but then building it all togetheer would be a pain. It could > > certainly make sense to split off xfstests into it's own tree since it's > > not part of the xfs-cmds build. > > Ok, sounds fair to keep it like that for now. Now seems like a good time to split it. The distributions have to deal with it this way, and for the most part developers don't need to go and update acl/attr from the version shipped with their distro. And now in xfsprogs-3.0 the exported headers are sorted out, the interface between the packages is much better defined ... if we don't break the link now, we probably never will - so I'd vote for separate trees for each self- contained package, personally. Be good to allow agruen to directly be able to commit to acl/attr for example, as Christoph said. cheers. -- Nathan From lachlan@sgi.com Mon Dec 22 18:22:26 2008 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 mBN0MQQ0014701 for ; Mon, 22 Dec 2008 18:22:26 -0600 Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9B82A30408E; Mon, 22 Dec 2008 16:22:21 -0800 (PST) Message-ID: <49502F91.4050406@sgi.com> Date: Tue, 23 Dec 2008 11:23:45 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com Organization: SGI User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss Subject: Re: [PATCH] Fix off by one error in page_region_mask() References: <49378B60.1060603@sgi.com> <20081222085354.GC24795@infradead.org> In-Reply-To: <20081222085354.GC24795@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.91.2, clamav-milter version 0.91.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Did you guys come to a conclusion in your discussions? > No conclusion, well nothing that resulted in an ack. From lachlan@sgi.com Mon Dec 22 18:39:01 2008 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 mBN0d1um016327 for ; Mon, 22 Dec 2008 18:39:01 -0600 Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by relay2.corp.sgi.com (Postfix) with ESMTP id C6F5830408B; Mon, 22 Dec 2008 16:38:59 -0800 (PST) Message-ID: <49503378.2080508@sgi.com> Date: Tue, 23 Dec 2008 11:40:24 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com Organization: SGI User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss Subject: Re: [Fwd: [PATCH] Fix race in xfs_write() between direct and buffered I/O with DMAPI] References: <493779B1.3010703@sgi.com> <20081208225125.GA15647@infradead.org> <493DFDBD.7060909@sgi.com> <20081209092240.GA23915@infradead.org> <20081222085311.GB24795@infradead.org> In-Reply-To: <20081222085311.GB24795@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.91.2, clamav-milter version 0.91.2 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Do you need more input on this one? Actually I just might. Based on your last reponse I wasn't sure if you wanted me to make further changes. Then I got side-tracked wondering why we even have the 'goto retry' in the dmapi post event - why retry the write if we get ENOSPC when we don't if dmapi is not enabled? Could the write get stuck in an infinite loop? From lachlan@sgi.com Mon Dec 22 18:43:47 2008 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 mBN0hl71016920 for ; Mon, 22 Dec 2008 18:43:47 -0600 Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by relay2.corp.sgi.com (Postfix) with ESMTP id 5090730408B; Mon, 22 Dec 2008 16:43:45 -0800 (PST) Message-ID: <49503495.1050207@sgi.com> Date: Tue, 23 Dec 2008 11:45:09 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com Organization: SGI User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com Subject: Re: [PATCH] handle unaligned data in xfs_bmbt_disk_get_all References: <20081222145906.GA18859@infradead.org> In-Reply-To: <20081222145906.GA18859@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV version 0.91.2, clamav-milter version 0.91.2 on oss.sgi.com X-Virus-Status: Clean Looks good. Christoph Hellwig wrote: > In libxfs xfs_bmbt_disk_get_all needs to handle unaligned data and thus > has been updated to use get_unaligned_be64. In kernelspace we don't strictly > need it as the routine is only used for tracing and xfsidbg, but let's keep > the two implementations in sync. > > > Signed-off-by: Christoph Hellwig > > Index: xfs/fs/xfs/xfs_bmap_btree.c > --- xfs.orig/fs/xfs/xfs_bmap_btree.c 2008-12-19 15:02:53.998907997 +0100 > +++ xfs/fs/xfs/xfs_bmap_btree.c 2008-12-22 14:43:41.507247175 +0100 > @@ -208,7 +208,8 @@ xfs_bmbt_disk_get_all( > xfs_bmbt_rec_t *r, > xfs_bmbt_irec_t *s) > { > - __xfs_bmbt_get_all(be64_to_cpu(r->l0), be64_to_cpu(r->l1), s); > + __xfs_bmbt_get_all(get_unaligned_be64(&r->l0), > + get_unaligned_be64(&r->l1), s); > } > > /* > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From lachlan@oss.sgi.com Mon Dec 22 18:53:44 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBN0ri5I017967 for ; Mon, 22 Dec 2008 18:53:44 -0600 Received: (from lachlan@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mBN0rce3017932; Mon, 22 Dec 2008 18:53:38 -0600 Date: Mon, 22 Dec 2008 18:53:38 -0600 Message-Id: <200812230053.mBN0rce3017932@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.28-rc3-1828-gad1ad96 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: efc557570dc99b46e46a7be51c3c7402b485e829 X-Git-Newrev: ad1ad968f4e7b06c75741575ea077e25a87da49a X-Virus-Scanned: ClamAV version 0.91.2, clamav-milter version 0.91.2 on oss.sgi.com X-Virus-Status: Clean This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated ad1ad96 [XFS] handle unaligned data in xfs_bmbt_disk_get_all from efc557570dc99b46e46a7be51c3c7402b485e829 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit ad1ad968f4e7b06c75741575ea077e25a87da49a Author: Christoph Hellwig Date: Mon Dec 22 09:59:06 2008 -0500 [XFS] handle unaligned data in xfs_bmbt_disk_get_all In libxfs xfs_bmbt_disk_get_all needs to handle unaligned data and thus has been updated to use get_unaligned_be64. In kernelspace we don't strictly need it as the routine is only used for tracing and xfsidbg, but let's keep the two implementations in sync. Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_bmap_btree.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) hooks/post-receive -- XFS development tree From SRS0+d1d821dd8dd8d9cfc72b+1948+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 23 02:40:46 2008 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 mBN8ekro029108 for ; Tue, 23 Dec 2008 02:40:46 -0600 X-ASG-Debug-ID: 1230021644-15bf00dd0000-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 C386C177B7F2 for ; Tue, 23 Dec 2008 00:40:44 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id e0yAQLWCDrHQQLMk for ; Tue, 23 Dec 2008 00:40:44 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LF2oH-0002Rk-65; Tue, 23 Dec 2008 08:40:13 +0000 Date: Tue, 23 Dec 2008 03:40:13 -0500 From: Christoph Hellwig To: Lachlan McIlroy Cc: Christoph Hellwig , xfs-oss X-ASG-Orig-Subj: Re: [Fwd: [PATCH] Fix race in xfs_write() between direct and buffered I/O with DMAPI] Subject: Re: [Fwd: [PATCH] Fix race in xfs_write() between direct and buffered I/O with DMAPI] Message-ID: <20081223084013.GA7604@infradead.org> References: <493779B1.3010703@sgi.com> <20081208225125.GA15647@infradead.org> <493DFDBD.7060909@sgi.com> <20081209092240.GA23915@infradead.org> <20081222085311.GB24795@infradead.org> <49503378.2080508@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49503378.2080508@sgi.com> 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: 1230021644 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV version 0.91.2, clamav-milter version 0.91.2 on oss.sgi.com X-Virus-Status: Clean On Tue, Dec 23, 2008 at 11:40:24AM +1100, Lachlan McIlroy wrote: > Christoph Hellwig wrote: > > Do you need more input on this one? > > Actually I just might. Based on your last reponse I wasn't sure if > you wanted me to make further changes. Well, my reponse was that I think we could do it more effecient, but the patch still looks correct to me. > Then I got side-tracked wondering > why we even have the 'goto retry' in the dmapi post event - why retry the > write if we get ENOSPC when we don't if dmapi is not enabled? Could the > write get stuck in an infinite loop? We only retry on ENOSPC if the dmapi nospace even is enabled, or am I missing something? From www-data@hiphop-magazine.com Tue Dec 23 03:31:05 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.0 required=5.0 tests=BAYES_50,HTML_MESSAGE 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 mBN9V4o0001075 for ; Tue, 23 Dec 2008 03:31:05 -0600 X-ASG-Debug-ID: 1230024660-15c101b30000-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 65B02177BA64 for ; Tue, 23 Dec 2008 01:31:00 -0800 (PST) Received: from hiphop-magazine.com (hiphop-magazine.com [85.214.133.137]) by cuda.sgi.com with ESMTP id Ha78XFFZ6ZY7kmnv for ; Tue, 23 Dec 2008 01:31:00 -0800 (PST) Received: by hiphop-magazine.com (Postfix, from userid 33) id AED72480D1F; Tue, 23 Dec 2008 10:30:58 +0100 (CET) To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Yo! Media: Justin Timberlake ft. T.I. - If I [+ MORE] Subject: Yo! Media: Justin Timberlake ft. T.I. - If I [+ MORE] Date: Tue, 23 Dec 2008 10:30:57 +0100 From: Yo! Raps Reply-To: Yo! Raps Message-ID: <614a8bd45c1bbbda9f3c58016e6c42a8@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: 91.3.165.27 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: 1230024661 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5573 1.0000 0.7500 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.95 X-Barracuda-Spam-Status: No, SCORE=0.95 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA038b, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13424 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.20 BSF_SC0_SA038b RAW: Custom Rule SA038b X-Virus-Scanned: ClamAV 0.91.2/8794/Tue Dec 23 02:43:38 2008 on oss.sgi.com X-Virus-Status: Clean Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 1979 Yo! Raps Magazine brings you all the newest Hip-Hop singles, R&B singles, Freestyles and Remixes. We break records first these days before anyone else does. Yo! Raps gets you all the latest and exclusive tracks from A - Z. Only for stream on www.yoraps.com! TRACK OF THE DAY: Justin Timberlake ft. T.I. - If I MORE AUDIOS - Kanye West ft. Big Sean & Mr. Hudson - Paranoid (Remix) - Busta Rhymes - Can't Take It - Danity Kane - She Can't Love You - Joell Ortiz ft. Joe Budden - Move On - Jay Electronica - Swagger Jackson's Revenge - Ya Boy - Run L.A. - Fashawn - Turf Rap - Brutha - Just Being Honest - Termanology - Circulate (100 Bars) (Prod. by J Dilla) - 2 Pistols - Ain't Gotta Talk - Brooke Valentine ft. Jamie Foxx - T-Shirt N Panties - Nipsey Hussle ft. Smoke Dza - Just Another Day - Kanye West - Flute Flow (Freestyle) - Busta Rhymes ft. Missy Elliott & Ne-Yo - Freakin' You - Chamillionaire ft. J. Pich - Answer Machine - Ciara - Rattla - Sean Kingston - You & Me - Day26 - Favorite Girl - Freeway - Get It Started (Prod. by The Alchemist) - Colby O'Donis - Shake Ur Body - Flo Rida - Touch Me - Blu - Mars - 2 Pistols ft. Slim - My Girl - Musiq Soulchild - Until - Jamie Foxx ft. Rick Ross - Swag Don't forget to check www.yoraps.com for your daily dose of Hip-Hop! Get 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 jpiszcz@lucidpixels.com Tue Dec 23 07:36:21 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.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 mBNDaKXl009464 for ; Tue, 23 Dec 2008 07:36:21 -0600 X-ASG-Debug-ID: 1230039378-6bf303a10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 38386177BFAE for ; Tue, 23 Dec 2008 05:36:18 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id uasVMzVq3pkPdjHB for ; Tue, 23 Dec 2008 05:36:18 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 1FB272C390A1; Tue, 23 Dec 2008 08:36:17 -0500 (EST) Date: Tue, 23 Dec 2008 08:36:17 -0500 (EST) From: Justin Piszcz To: linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com cc: bug-parted@gnu.org X-ASG-Orig-Subj: 2.6.27.10: cannot mount xfs filesystem partition (12TiB) after reboot Subject: 2.6.27.10: cannot mount xfs filesystem partition (12TiB) after reboot Message-ID: User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1463747160-81106596-1230039377=:4817" X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1230039379 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.61 X-Barracuda-Spam-Status: No, SCORE=-1.61 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13437 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: X-Virus-Scanned: ClamAV 0.91.2/8794/Tue Dec 23 02:43:38 2008 on oss.sgi.com X-Virus-Status: Clean This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---1463747160-81106596-1230039377=:4817 Content-Type: TEXT/PLAIN; format=flowed; charset=ISO-8859-1 Content-Transfer-Encoding: QUOTED-PRINTABLE Kernel =3D 2.6.27.10 Parted =3D 1.8.8.git.2008.03.24-11.1 Can anyone help explain the problem here? After a reboot: p34:~# mount /dev/sda1 /r1 mount: you must specify the filesystem type (from dmesg) [ 75.325551] XFS: bad magic number [ 75.325557] XFS: SB validate failed p34:~# xfs_repair -n /dev/sda1 Phase 1 - find and verify superblock... bad primary superblock - bad magic number !!! attempting to find secondary superblock... ...........................................................................= ..... ...........................................................................= ..... ...........................................................................= ..... ...........................................................................= ..... ...........................................................................= ..... ...........................................................................= ..... ...........................................................................= ..... ...........................................................................= ..... ...........................................................................= ..... ...........................................................................= .....< no go > So I re-did what I did before the reboot, this time though I removed the=20 old partition and created a new one just as I did before. p34:~# parted /dev/sda GNU Parted 1.8.8 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) p=20 Model: AMCC 9650SE-16M DISK (scsi) Disk /dev/sda: 13.0TB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 17.4kB 13.0TB 13.0TB xfs (parted) rm 1 (parted) print=20 Model: AMCC 9650SE-16M DISK (scsi) Disk /dev/sda: 13.0TB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags (parted) q=20 Information: You may need to update /etc/fstab. p34:~# od -c -N 2000 /dev/sda 0000000 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 * 0000700 001 \0 =EE =FE =FF =FF 001 \0 \0 \0 =FF =FF =FF = =FF \0 \0 0000720 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 * 0000760 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 U =AA 0001000 E F I P A R T \0 \0 001 \0 \ \0 \0 \0 0001020 ; 213 # =CB \0 \0 \0 \0 001 \0 \0 \0 \0 \0 \0 \0 0001040 =FF =FF a =E9 005 \0 \0 \0 " \0 \0 \0 \0 \0 \0 = \0 0001060 =DE =FF a =E9 005 \0 \0 \0 =EF * w p =EA =A3= \a @ 0001100 =A9 =B2 =DE 212 225 # =BD 206 002 \0 \0 \0 \0 \0 \0= \0 0001120 200 \0 \0 \0 200 \0 \0 \0 206 =D2 T =AB \0 \0 \0 \0 0001140 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 * 0003720 p34:~# parted /dev/sda GNU Parted 1.8.8 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) p=20 Model: AMCC 9650SE-16M DISK (scsi) Disk /dev/sda: 13.0TB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags (parted) mklabel gpt=20 Warning: The existing disk label on /dev/sda will be destroyed and all data= on this disk will be lost. Do you want to continue? parted: invalid token: gpt Yes/No? yes=20 New disk label type? [gpt]?=20 (parted) p=20 Model: AMCC 9650SE-16M DISK (scsi) Disk /dev/sda: 13.0TB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags (parted) mkpart=20 Partition name? []?=20 File system type? [ext2]? xfs=20 Start? 0=20 End? 13T=20 (parted) p=20 Model: AMCC 9650SE-16M DISK (scsi) Disk /dev/sda: 13.0TB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 17.4kB 13.0TB 13.0TB xfs (parted) quit=20 Information: You may need to update /etc/fstab. p34:~# mount /dev/sda1 /r1 p34:~# df -h /dev/sda1 12T 2.2T 9.8T 18% /r1 Is this normal? Now everything is fine etc, how come this information is= =20 not kept across reboots? Are partitions broken > 10T? p34:~# od -c -N 200000 /dev/sda| grep -E '^.*X*F*S.*$' 0042000 X F S B \0 \0 020 \0 \0 \0 \0 \0 =BD , ? =F7 p34:~# od -c -N 200000 /dev/sda| nl | grep -E '^.*X*F*S.*$' 20 0042000 X F S B \0 \0 020 \0 \0 \0 \0 \0 =BD , = ? =F7 How come the information is 'lost' after a reboot? I have done this same process with ext3 and no issues when the partition is less than 6TiB, am I hitting some kind of bug here with parted or XFS? Justin. ---1463747160-81106596-1230039377=:4817-- From SRS0+d1d821dd8dd8d9cfc72b+1948+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 23 07:42:50 2008 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 mBNDgovA012163 for ; Tue, 23 Dec 2008 07:42:50 -0600 X-ASG-Debug-ID: 1230039768-325901160000-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 25CF34221F for ; Tue, 23 Dec 2008 05:42:49 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id EiOWkV2vQ7WhzdbP for ; Tue, 23 Dec 2008 05:42:49 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LF7X5-0006sG-5F; Tue, 23 Dec 2008 13:42:47 +0000 Date: Tue, 23 Dec 2008 08:42:47 -0500 To: Justin Piszcz Cc: linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com, bug-parted@gnu.org X-ASG-Orig-Subj: Re: 2.6.27.10: cannot mount xfs filesystem partition (12TiB) after reboot Subject: Re: 2.6.27.10: cannot mount xfs filesystem partition (12TiB) after reboot Message-ID: <20081223134247.GA17750@infradead.org> 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) From: Christoph Hellwig 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: 1230039769 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8794/Tue Dec 23 02:43:38 2008 on oss.sgi.com X-Virus-Status: Clean On Tue, Dec 23, 2008 at 08:36:17AM -0500, Justin Piszcz wrote: > Kernel = 2.6.27.10 > Parted = 1.8.8.git.2008.03.24-11.1 > > Can anyone help explain the problem here? Can you post your kernel .config file? From jpiszcz@lucidpixels.com Tue Dec 23 08:51:06 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 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 mBNEp3a8026431 for ; Tue, 23 Dec 2008 08:51:06 -0600 X-ASG-Debug-ID: 1230043857-020800ee0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A1CBC426E1 for ; Tue, 23 Dec 2008 06:50:58 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id NTZhopCbYuBlP2Fo for ; Tue, 23 Dec 2008 06:50:58 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id B3F382C390BE; Tue, 23 Dec 2008 09:50:26 -0500 (EST) Date: Tue, 23 Dec 2008 09:50:26 -0500 (EST) From: Justin Piszcz To: Christoph Hellwig cc: linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com, bug-parted@gnu.org X-ASG-Orig-Subj: Re: 2.6.27.10: cannot mount xfs filesystem partition (12TiB) after reboot Subject: Re: 2.6.27.10: cannot mount xfs filesystem partition (12TiB) after reboot In-Reply-To: <20081223134247.GA17750@infradead.org> Message-ID: References: <20081223134247.GA17750@infradead.org> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1230043861 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.61 X-Barracuda-Spam-Status: No, SCORE=-1.61 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13442 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: X-Virus-Scanned: ClamAV 0.91.2/8794/Tue Dec 23 02:43:38 2008 on oss.sgi.com X-Virus-Status: Clean On Tue, 23 Dec 2008, Christoph Hellwig wrote: > On Tue, Dec 23, 2008 at 08:36:17AM -0500, Justin Piszcz wrote: >> Kernel = 2.6.27.10 >> Parted = 1.8.8.git.2008.03.24-11.1 >> >> Can anyone help explain the problem here? > > Can you post your kernel .config file? > http://home.comcast.net/~jpiszcz/20081223/config-2.6.27.10.txt From SRS0+d1d821dd8dd8d9cfc72b+1948+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 23 08:55:05 2008 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 mBNEt5hY027192 for ; Tue, 23 Dec 2008 08:55:05 -0600 X-ASG-Debug-ID: 1230044103-66d901d30000-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 ADF68177EE5C for ; Tue, 23 Dec 2008 06:55:03 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 3XXK6n1n9FRr1nZm for ; Tue, 23 Dec 2008 06:55:03 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LF8eV-00086V-6n; Tue, 23 Dec 2008 14:54:31 +0000 Date: Tue, 23 Dec 2008 09:54:31 -0500 From: Christoph Hellwig To: Justin Piszcz Cc: Christoph Hellwig , linux-raid@vger.kernel.org, bug-parted@gnu.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.27.10: cannot mount xfs filesystem partition (12TiB) after reboot Subject: Re: 2.6.27.10: cannot mount xfs filesystem partition (12TiB) after reboot Message-ID: <20081223145431.GA31057@infradead.org> References: <20081223134247.GA17750@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: 1230044103 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8794/Tue Dec 23 02:43:38 2008 on oss.sgi.com X-Virus-Status: Clean On Tue, Dec 23, 2008 at 09:50:26AM -0500, Justin Piszcz wrote: > > > On Tue, 23 Dec 2008, Christoph Hellwig wrote: > > > On Tue, Dec 23, 2008 at 08:36:17AM -0500, Justin Piszcz wrote: > >> Kernel = 2.6.27.10 > >> Parted = 1.8.8.git.2008.03.24-11.1 > >> > >> Can anyone help explain the problem here? > > > > Can you post your kernel .config file? > > > > http://home.comcast.net/~jpiszcz/20081223/config-2.6.27.10.txt Without CONFIG_EFI_PARTITION the kernel won't find your gpt labels. See http://xfs.org/index.php/XFS_FAQ#Q:_Why_does_my_.3E_2TB_XFS_partition_disappear_when_I_reboot_.3F From jpiszcz@lucidpixels.com Tue Dec 23 09:49:42 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.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 mBNFngNZ004318 for ; Tue, 23 Dec 2008 09:49:42 -0600 X-ASG-Debug-ID: 1230047369-792202de0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0A34E177F775 for ; Tue, 23 Dec 2008 07:49:29 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id 29ahdsJt6it53RHg for ; Tue, 23 Dec 2008 07:49:29 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 9DFC22C390DA; Tue, 23 Dec 2008 10:49:28 -0500 (EST) Date: Tue, 23 Dec 2008 10:49:28 -0500 (EST) From: Justin Piszcz To: Christoph Hellwig cc: linux-raid@vger.kernel.org, bug-parted@gnu.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.27.10: cannot mount xfs filesystem partition (12TiB) after reboot Subject: Re: 2.6.27.10: cannot mount xfs filesystem partition (12TiB) after reboot In-Reply-To: <20081223145431.GA31057@infradead.org> Message-ID: References: <20081223134247.GA17750@infradead.org> <20081223145431.GA31057@infradead.org> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1230047372 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.51 X-Barracuda-Spam-Status: No, SCORE=-1.51 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA085, SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13446 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: 0.10 BSF_SC0_SA085 Custom Rule SA085 X-Virus-Scanned: ClamAV 0.91.2/8794/Tue Dec 23 02:43:38 2008 on oss.sgi.com X-Virus-Status: Clean On Tue, 23 Dec 2008, Christoph Hellwig wrote: > On Tue, Dec 23, 2008 at 09:50:26AM -0500, Justin Piszcz wrote: >> >> >> On Tue, 23 Dec 2008, Christoph Hellwig wrote: >> >>> On Tue, Dec 23, 2008 at 08:36:17AM -0500, Justin Piszcz wrote: >>>> Kernel = 2.6.27.10 >>>> Parted = 1.8.8.git.2008.03.24-11.1 >>>> >>>> Can anyone help explain the problem here? >>> >>> Can you post your kernel .config file? >>> >> >> http://home.comcast.net/~jpiszcz/20081223/config-2.6.27.10.txt > > Without CONFIG_EFI_PARTITION the kernel won't find your gpt labels. See > > http://xfs.org/index.php/XFS_FAQ#Q:_Why_does_my_.3E_2TB_XFS_partition_disappear_when_I_reboot_.3F > > -- > To unsubscribe from this list: send the line "unsubscribe linux-raid" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Christoph, Thank you-- enabled, rebooted, success. Steps performed/location in menuconfig: $ make menuconfig $ File systems $ Partition Types $ Hit 'Y' $ Enable this: [X] EFI GUID Partition support (NEW) Better question as well, need to find out if KNOPPIX or distro-CDs support this option, if one to boot into recovery and this option was not enabled.. that would not be fun. Justin. From sandeen@sandeen.net Tue Dec 23 10:04:04 2008 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 mBNG4382006764 for ; Tue, 23 Dec 2008 10:04:04 -0600 X-ASG-Debug-ID: 1230048241-01f803a20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1FE1042A66 for ; Tue, 23 Dec 2008 08:04:01 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id HjEkFz8taymBpFLr for ; Tue, 23 Dec 2008 08:04:01 -0800 (PST) Received: from Liberator.local (h138.33.19.98.dynamic.ip.windstream.net [98.19.33.138]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id E6BECAC6268; Tue, 23 Dec 2008 10:03:57 -0600 (CST) Message-ID: <49510BEF.2090209@sandeen.net> Date: Tue, 23 Dec 2008 10:03:59 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Justin Piszcz CC: Christoph Hellwig , linux-raid@vger.kernel.org, xfs@oss.sgi.com, bug-parted@gnu.org, linux-kernel@vger.kernel.org X-ASG-Orig-Subj: Re: 2.6.27.10: cannot mount xfs filesystem partition (12TiB) after reboot Subject: Re: 2.6.27.10: cannot mount xfs filesystem partition (12TiB) after reboot References: <20081223134247.GA17750@infradead.org> <20081223145431.GA31057@infradead.org> In-Reply-To: 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: 1230048242 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.61 X-Barracuda-Spam-Status: No, SCORE=-1.61 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13446 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: X-Virus-Scanned: ClamAV 0.91.2/8794/Tue Dec 23 02:43:38 2008 on oss.sgi.com X-Virus-Status: Clean Justin Piszcz wrote: > Better question as well, need to find out if KNOPPIX or distro-CDs support > this option, if one to boot into recovery and this option was not > enabled.. that would not be fun. I'd think most do... Fedora does, at least. -Eric From SRS0+d1d821dd8dd8d9cfc72b+1948+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 23 10:21:59 2008 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 mBNGLw3W008668 for ; Tue, 23 Dec 2008 10:21:59 -0600 X-ASG-Debug-ID: 1230049317-55ed00690000-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 8DF8942EE7 for ; Tue, 23 Dec 2008 08:21:57 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id VfINGfNPrVzQ8BLo for ; Tue, 23 Dec 2008 08:21:57 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LFA14-0007t5-Sk; Tue, 23 Dec 2008 16:21:54 +0000 Date: Tue, 23 Dec 2008 11:21:54 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: Justin Piszcz , Christoph Hellwig , linux-raid@vger.kernel.org, bug-parted@gnu.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: 2.6.27.10: cannot mount xfs filesystem partition (12TiB) after reboot Subject: Re: 2.6.27.10: cannot mount xfs filesystem partition (12TiB) after reboot Message-ID: <20081223162154.GA30287@infradead.org> References: <20081223134247.GA17750@infradead.org> <20081223145431.GA31057@infradead.org> <49510BEF.2090209@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49510BEF.2090209@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: 1230049317 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8794/Tue Dec 23 02:43:38 2008 on oss.sgi.com X-Virus-Status: Clean On Tue, Dec 23, 2008 at 10:03:59AM -0600, Eric Sandeen wrote: > Justin Piszcz wrote: > > > > Better question as well, need to find out if KNOPPIX or distro-CDs support > > this option, if one to boot into recovery and this option was not > > enabled.. that would not be fun. > > I'd think most do... Fedora does, at least. It might be time to have gpt partition support in the x86 defconfig, and without CONFIG_PARTITION_ADVANCED. From SRS0+d1d821dd8dd8d9cfc72b+1948+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 23 11:13:34 2008 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 mBNHDYHr013836 for ; Tue, 23 Dec 2008 11:13:34 -0600 X-ASG-Debug-ID: 1230052412-52e003360000-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 1B7271780F02 for ; Tue, 23 Dec 2008 09:13:32 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Bn24hcLtGIiYKwSl for ; Tue, 23 Dec 2008 09:13:32 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LFAoV-00040y-UF; Tue, 23 Dec 2008 17:12:59 +0000 Date: Tue, 23 Dec 2008 12:12:59 -0500 From: Christoph Hellwig To: Roman Kononov Cc: npiggin@suse.de, 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: <20081223171259.GA11945@infradead.org> 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-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: 1230052413 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8794/Tue Dec 23 02:43:38 2008 on oss.sgi.com X-Virus-Status: Clean 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: BUG: soft lockup - CPU#0 stuck for 61s! [postmaster:23237] Modules linked in: xd1000 CPU 0: Modules linked in: xd1000 Pid: 23237, comm: postmaster Not tainted 2.6.27.9 #1 RIP: 0010:[] [] find_get_pages+0x72/0x120 RSP: 0018:ffff88012e9f3498 EFLAGS: 00000297 RAX: ffff8800a4d752a0 RBX: 000000000000000c RCX: 0000000000000003 RDX: 0000000000000004 RSI: 0000000000000000 RDI: ffffe200004ab780 RBP: ffff88023f6b5028 R08: ffffe200004ab280 R09: 000000000000000d R10: 0000000000000021 R11: 00000000000aef22 R12: ffffffff80273e3c R13: ffffe20001208608 R14: 0100000000000286 R15: ffff88023f6b5028 FS: 00007fd397fb5700(0000) GS:ffffffff806d7540(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b CR2: 00002aaaaba00000 CR3: 000000017911c000 CR4: 00000000000006e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 Call Trace: kernel: [] ? find_get_pages+0x42/0x120 [] ? pagevec_lookup+0x17/0x20 [] ? xfs_cluster_write+0x91/0x160 [] ? xfs_page_state_convert+0x523/0x6c0 [] ? xfs_vm_writepage+0x71/0x120 [] ? shrink_page_list+0x592/0x700 [] ? shrink_zone+0x2b7/0xc70 [] ? try_to_free_pages+0x244/0x3b0 [] ? isolate_pages_global+0x0/0x40 [] ? congestion_wait+0x83/0xa0 [] ? autoremove_wake_function+0x0/0x30 [] ? __alloc_pages_internal+0x218/0x4e0 [] ? __grab_cache_page+0x6f/0xc0 [] ? block_write_begin+0x7d/0xe0 [] ? xfs_vm_write_begin+0x22/0x30 [] ? xfs_get_blocks+0x0/0x10 [] ? generic_file_buffered_write+0x1cb/0x790 [] ? _spin_lock_irqsave+0x1f/0x50 [] ? xfs_write+0x65c/0x950 [] ? _spin_unlock_irq+0x11/0x40 [] ? do_sync_write+0xdb/0x120 [] ? do_futex+0x109/0x9f0 [] ? autoremove_wake_function+0x0/0x30 [] ? wake_up_new_task+0xc0/0x100 [] ? vfs_write+0xcb/0x170 [] ? sys_write+0x53/0xa0 [] ? system_call_fastpath+0x16/0x1b [] ? system_call_fastpath+0x16/0x1b From jeffpc@josefsipek.net Tue Dec 23 11:17:48 2008 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 mBNHHmd4014404 for ; Tue, 23 Dec 2008 11:17:48 -0600 X-ASG-Debug-ID: 1230052666-6eea01820000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from josefsipek.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 41660434F6 for ; Tue, 23 Dec 2008 09:17:46 -0800 (PST) Received: from josefsipek.net (josefsipek.net [141.211.133.196]) by cuda.sgi.com with ESMTP id 73lzcqotliAiuvim for ; Tue, 23 Dec 2008 09:17:46 -0800 (PST) Received: by josefsipek.net (Postfix, from userid 1000) id 3C76A1C0013A; Tue, 23 Dec 2008 12:17:46 -0500 (EST) Date: Tue, 23 Dec 2008 12:17:46 -0500 From: "Josef 'Jeff' Sipek" To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfstests: make the mode consistent for all the test scripts Subject: [PATCH] xfstests: make the mode consistent for all the test scripts Message-ID: <20081223171746.GA6284@josefsipek.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: josefsipek.net[141.211.133.196] X-Barracuda-Start-Time: 1230052667 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.13450 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8794/Tue Dec 23 02:43:38 2008 on oss.sgi.com X-Virus-Status: Clean Signed-off-by: Josef 'Jeff' Sipek --- 0 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 xfstests/104 mode change 100755 => 100644 xfstests/112.out mode change 100644 => 100755 xfstests/141 mode change 100644 => 100755 xfstests/164 mode change 100644 => 100755 xfstests/165 mode change 100644 => 100755 xfstests/166 mode change 100644 => 100755 xfstests/167 mode change 100644 => 100755 xfstests/170 mode change 100644 => 100755 xfstests/171 mode change 100644 => 100755 xfstests/172 mode change 100644 => 100755 xfstests/173 mode change 100644 => 100755 xfstests/174 mode change 100644 => 100755 xfstests/179 mode change 100644 => 100755 xfstests/180 mode change 100644 => 100755 xfstests/182 mode change 100644 => 100755 xfstests/183 mode change 100644 => 100755 xfstests/184 mode change 100644 => 100755 xfstests/185 mode change 100644 => 100755 xfstests/188 mode change 100644 => 100755 xfstests/189 diff --git a/xfstests/104 b/xfstests/104 old mode 100644 new mode 100755 diff --git a/xfstests/112.out b/xfstests/112.out old mode 100755 new mode 100644 diff --git a/xfstests/141 b/xfstests/141 old mode 100644 new mode 100755 diff --git a/xfstests/164 b/xfstests/164 old mode 100644 new mode 100755 diff --git a/xfstests/165 b/xfstests/165 old mode 100644 new mode 100755 diff --git a/xfstests/166 b/xfstests/166 old mode 100644 new mode 100755 diff --git a/xfstests/167 b/xfstests/167 old mode 100644 new mode 100755 diff --git a/xfstests/170 b/xfstests/170 old mode 100644 new mode 100755 diff --git a/xfstests/171 b/xfstests/171 old mode 100644 new mode 100755 diff --git a/xfstests/172 b/xfstests/172 old mode 100644 new mode 100755 diff --git a/xfstests/173 b/xfstests/173 old mode 100644 new mode 100755 diff --git a/xfstests/174 b/xfstests/174 old mode 100644 new mode 100755 diff --git a/xfstests/179 b/xfstests/179 old mode 100644 new mode 100755 diff --git a/xfstests/180 b/xfstests/180 old mode 100644 new mode 100755 diff --git a/xfstests/182 b/xfstests/182 old mode 100644 new mode 100755 diff --git a/xfstests/183 b/xfstests/183 old mode 100644 new mode 100755 diff --git a/xfstests/184 b/xfstests/184 old mode 100644 new mode 100755 diff --git a/xfstests/185 b/xfstests/185 old mode 100644 new mode 100755 diff --git a/xfstests/188 b/xfstests/188 old mode 100644 new mode 100755 diff --git a/xfstests/189 b/xfstests/189 old mode 100644 new mode 100755 -- 1.5.6.5 From lachlan@sgi.com Tue Dec 23 19:08:49 2008 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 (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBO18nJF027544 for ; Tue, 23 Dec 2008 19:08:49 -0600 Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by relay1.corp.sgi.com (Postfix) with ESMTP id 174BD8F806B; Tue, 23 Dec 2008 17:08:43 -0800 (PST) Message-ID: <49518BF2.2020709@sgi.com> Date: Wed, 24 Dec 2008 12:10:10 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com Organization: SGI User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss Subject: Re: [Fwd: [PATCH] Fix race in xfs_write() between direct and buffered I/O with DMAPI] References: <493779B1.3010703@sgi.com> <20081208225125.GA15647@infradead.org> <493DFDBD.7060909@sgi.com> <20081209092240.GA23915@infradead.org> <20081222085311.GB24795@infradead.org> <49503378.2080508@sgi.com> <20081223084013.GA7604@infradead.org> In-Reply-To: <20081223084013.GA7604@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/8795/Tue Dec 23 11:58:21 2008 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Tue, Dec 23, 2008 at 11:40:24AM +1100, Lachlan McIlroy wrote: >> Christoph Hellwig wrote: >>> Do you need more input on this one? >> Actually I just might. Based on your last reponse I wasn't sure if >> you wanted me to make further changes. > > Well, my reponse was that I think we could do it more effecient, but the > patch still looks correct to me. Okay great. I'll check it in and we can improve it later when I understand what you meant! > >> Then I got side-tracked wondering >> why we even have the 'goto retry' in the dmapi post event - why retry the >> write if we get ENOSPC when we don't if dmapi is not enabled? Could the >> write get stuck in an infinite loop? > > We only retry on ENOSPC if the dmapi nospace even is enabled, or am I > missing something? I don't think you're missing anything here. I don't understand how the DMAPI stuff works but I imagined the event was there to indicate that the write failed but what I don't understand is why that justifies a retry. Is there something about DMAPI that needs the write to succeed? From xaiki@cxhome.ath.cx Tue Dec 23 20:10:43 2008 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 mBO2AhY0031035 for ; Tue, 23 Dec 2008 20:10:43 -0600 X-ASG-Debug-ID: 1230084638-7fab03b30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sceen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EBDFB4472E for ; Tue, 23 Dec 2008 18:10:39 -0800 (PST) Received: from mail.sceen.net (sceen.net [213.41.243.68]) by cuda.sgi.com with ESMTP id FkGt05BiJIAcwJYR for ; Tue, 23 Dec 2008 18:10:39 -0800 (PST) Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.sceen.net (Postfix) with ESMTP id 9FE611DCE4; Wed, 24 Dec 2008 03:10:37 +0100 (CET) Received: from mail.sceen.net ([127.0.0.1]) by localhost (mail.sceen.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 01809-03; Wed, 24 Dec 2008 03:10:32 +0100 (CET) Received: from lagoh (123-243-137-60.static.tpgi.com.au [123.243.137.60]) by mail.sceen.net (Postfix) with ESMTP id 138B41DCDF; Wed, 24 Dec 2008 03:10:28 +0100 (CET) From: Niv Sardi To: lachlan@sgi.com Cc: Christoph Hellwig , xfs-oss X-ASG-Orig-Subj: Re: [Fwd: [PATCH] Fix race in xfs_write() between direct and buffered I/O with DMAPI] Subject: Re: [Fwd: [PATCH] Fix race in xfs_write() between direct and buffered I/O with DMAPI] References: <493779B1.3010703@sgi.com> <20081208225125.GA15647@infradead.org> <493DFDBD.7060909@sgi.com> <20081209092240.GA23915@infradead.org> <20081222085311.GB24795@infradead.org> <49503378.2080508@sgi.com> <20081223084013.GA7604@infradead.org> <49518BF2.2020709@sgi.com> Date: Wed, 24 Dec 2008 13:10:20 +1100 In-Reply-To: <49518BF2.2020709@sgi.com> (Lachlan McIlroy's message of "Wed, 24 Dec 2008 12:10:10 +1100") Message-ID: <87wsdq727n.fsf@cxhome.ath.cx> User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.0.60 (i486-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Virus-Scanned: ClamAV 0.91.2/8795/Tue Dec 23 11:58:21 2008 on oss.sgi.com X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at sceen.net X-Barracuda-Connect: sceen.net[213.41.243.68] X-Barracuda-Start-Time: 1230084639 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.13480 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Status: Clean Lachlan McIlroy writes: > Christoph Hellwig wrote: > >> On Tue, Dec 23, 2008 at 11:40:24AM +1100, Lachlan McIlroy wrote: >>> Christoph Hellwig wrote: >>>> Do you need more input on this one? >>> Actually I just might. Based on your last reponse I wasn't sure if >>> you wanted me to make further changes. >> >> Well, my reponse was that I think we could do it more effecient, but the >> patch still looks correct to me. > Okay great. I'll check it in and we can improve it later when I understand > what you meant! > >> >>> Then I got side-tracked wondering >>> why we even have the 'goto retry' in the dmapi post event - why retry the >>> write if we get ENOSPC when we don't if dmapi is not enabled? Could the >>> write get stuck in an infinite loop? >> >> We only retry on ENOSPC if the dmapi nospace even is enabled, or am I >> missing something? > I don't think you're missing anything here. I don't understand how the > DMAPI stuff works but I imagined the event was there to indicate that the > write failed but what I don't understand is why that justifies a retry. > Is there something about DMAPI that needs the write to succeed? yes http://www.opengroup.org/onlinepubs/9657099/chap3.htm#tagcjh_04_02_04 -- Niv Sardi From lachlan@sgi.com Tue Dec 23 20:22:01 2008 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 (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBO2M1Hj032046 for ; Tue, 23 Dec 2008 20:22:01 -0600 Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by relay1.corp.sgi.com (Postfix) with ESMTP id E84C78F8063; Tue, 23 Dec 2008 18:21:55 -0800 (PST) Message-ID: <49519D18.3080307@sgi.com> Date: Wed, 24 Dec 2008 13:23:20 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com Organization: SGI User-Agent: Thunderbird 2.0.0.18 (X11/20081105) MIME-Version: 1.0 To: Niv Sardi CC: Christoph Hellwig , xfs-oss Subject: Re: [Fwd: [PATCH] Fix race in xfs_write() between direct and buffered I/O with DMAPI] References: <493779B1.3010703@sgi.com> <20081208225125.GA15647@infradead.org> <493DFDBD.7060909@sgi.com> <20081209092240.GA23915@infradead.org> <20081222085311.GB24795@infradead.org> <49503378.2080508@sgi.com> <20081223084013.GA7604@infradead.org> <49518BF2.2020709@sgi.com> <87wsdq727n.fsf@cxhome.ath.cx> In-Reply-To: <87wsdq727n.fsf@cxhome.ath.cx> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/8795/Tue Dec 23 11:58:21 2008 on oss.sgi.com X-Virus-Status: Clean Niv Sardi wrote: > Lachlan McIlroy writes: > >> Christoph Hellwig wrote: >> >>> On Tue, Dec 23, 2008 at 11:40:24AM +1100, Lachlan McIlroy wrote: >>>> Christoph Hellwig wrote: >>>>> Do you need more input on this one? >>>> Actually I just might. Based on your last reponse I wasn't sure if >>>> you wanted me to make further changes. >>> Well, my reponse was that I think we could do it more effecient, but the >>> patch still looks correct to me. >> Okay great. I'll check it in and we can improve it later when I understand >> what you meant! >> >>>> Then I got side-tracked wondering >>>> why we even have the 'goto retry' in the dmapi post event - why retry the >>>> write if we get ENOSPC when we don't if dmapi is not enabled? Could the >>>> write get stuck in an infinite loop? >>> We only retry on ENOSPC if the dmapi nospace even is enabled, or am I >>> missing something? >> I don't think you're missing anything here. I don't understand how the >> DMAPI stuff works but I imagined the event was there to indicate that the >> write failed but what I don't understand is why that justifies a retry. >> Is there something about DMAPI that needs the write to succeed? > > yes > > http://www.opengroup.org/onlinepubs/9657099/chap3.htm#tagcjh_04_02_04 Oh no, not the DMAPI spec - I don't want to go there! Sounds like the XFS_SEND_NAMESP() event can choose to fail and that will prevent an infinite loop. Thanks Niv. From lachlan@oss.sgi.com Tue Dec 23 21:06:46 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBO36jog002453 for ; Tue, 23 Dec 2008 21:06:46 -0600 Received: (from lachlan@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mBO36brP002420; Tue, 23 Dec 2008 21:06:37 -0600 Date: Tue, 23 Dec 2008 21:06:37 -0600 Message-Id: <200812240306.mBO36brP002420@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.28-rc3-1829-g2505115 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: ad1ad968f4e7b06c75741575ea077e25a87da49a X-Git-Newrev: 25051158bbed127e8672b43396c71c5eb610e5f1 X-Virus-Scanned: ClamAV 0.91.2/8795/Tue Dec 23 11:58:21 2008 on oss.sgi.com X-Virus-Status: Clean This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated 2505115 [XFS] Fix race in xfs_write() between direct and buffered I/O with DMAPI from ad1ad968f4e7b06c75741575ea077e25a87da49a (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 25051158bbed127e8672b43396c71c5eb610e5f1 Author: Lachlan McIlroy Date: Wed Dec 24 14:07:32 2008 +1100 [XFS] Fix race in xfs_write() between direct and buffered I/O with DMAPI The iolock is dropped and re-acquired around the call to XFS_SEND_NAMESP(). While the iolock is released the file can become cached. We then 'goto retry' and - if we are doing direct I/O - mapping->nrpages may now be non zero but need_i_mutex will be zero and we will hit the WARN_ON(). Since we have dropped the I/O lock then the file size may have also changed so what we need to do here is 'goto start' like we do for the XFS_SEND_DATA() DMAPI event. We also need to update the filesize before releasing the iolock so that needs to be done before the XFS_SEND_NAMESP event. If we drop the iolock before setting the filesize we could race with a truncate. Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy ----------------------------------------------------------------------- Summary of changes: fs/xfs/linux-2.6/xfs_lrw.c | 27 ++++++++++++--------------- 1 files changed, 12 insertions(+), 15 deletions(-) hooks/post-receive -- XFS development tree From m.cypris@euroimmun.de Wed Dec 24 04:17:29 2008 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_45 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 mBOAHTmZ001755 for ; Wed, 24 Dec 2008 04:17:29 -0600 X-ASG-Debug-ID: 1230113844-75bb02470000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.euroimmun.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D9E1D45543 for ; Wed, 24 Dec 2008 02:17:24 -0800 (PST) Received: from mail.euroimmun.de (mail.euroimmun.de [62.159.94.122]) by cuda.sgi.com with ESMTP id 0PLryqjfMeBFF5Ud for ; Wed, 24 Dec 2008 02:17:24 -0800 (PST) Received: from mc1.euroimmun.de ([172.16.254.1]) by mail.euroimmun.de with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.43) id 1LFQno-0007mC-T5 for linux-xfs@oss.sgi.com; Wed, 24 Dec 2008 11:17:22 +0100 Message-ID: <49520C2D.5080601@euroimmun.de> Date: Wed, 24 Dec 2008 11:17:17 +0100 From: "M.Cypris" Organization: EUROIMMUN AG User-Agent: Thunderbird 2.0.0.18 (Windows/20081105) MIME-Version: 1.0 To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: question ? Subject: question ? Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="------------ms010902080306040800000406" X-Barracuda-Connect: mail.euroimmun.de[62.159.94.122] X-Barracuda-Start-Time: 1230113845 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.02 X-Barracuda-Spam-Status: No, SCORE=-1.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC1_TG070 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13510 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.00 BSF_SC1_TG070 Custom Rule TG070 X-Virus-Scanned: ClamAV 0.91.2/8796/Wed Dec 24 00:19:40 2008 on oss.sgi.com X-Virus-Status: Clean This is a cryptographically signed message in MIME format. --------------ms010902080306040800000406 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: quoted-printable data fork in ino 4056744656 claims free block 521849722 data fork in ino 4056744656 claims free block 521849723 data fork in ino 4056744656 claims free block 521849724 data fork in ino 4056744656 claims free block 521849725 data fork in ino 4056744656 claims free block 521849726 data fork in ino 4056744656 claims free block 521849727 data fork in ino 4056744656 claims free block 521849729 data fork in ino 4056744667 claims free block 319386679 - agno =3D 16 - agno =3D 17 - agno =3D 19 - agno =3D 20 - agno =3D 22 - agno =3D 23 - agno =3D 25 - agno =3D 26 - agno =3D 27 - agno =3D 29 - agno =3D 30 - agno =3D 31 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - clear lost+found (if it exists) ... - clearing existing "lost+found" inode - check for inodes claiming duplicate blocks... - agno =3D 0 entry "JSADM.exv" at block 0 offset 2616 in directory inode 39152=20 references fre e inode 39742 clearing inode number in entry at offset 2616... entry "AdobeCMapFnt07.lst" at block 0 offset 2664 in directory inode=20 39152 refer clearing inode number in entry at offset 2664... - agno =3D 1 bad data fork in inode 268491301 cleared inode 268491301 - agno =3D 2 entry "calvar.ini" at block 0 offset 3136 in directory inode 536909609=20 reference s free inode 536912996 clearing inode number in entry at offset 3136... entry "acad.mnr" at block 0 offset 3160 in directory inode 536909609=20 references clearing inode number in entry at offset 3160... entry "Thumbs.db" in shortform directory 536931591 references free inode=20 5369316 junking entry "Thumbs.db" in directory inode 536931591 - agno =3D 3 data fork in ino 1073765375 claims dup extent, off - 0, start -=20 404442312, cnt 1 bad data fork in inode 1073765375 cleared inode 1073765375 entry "org.openoffice.Office.OptionsDialog.dat" at block 0 offset 3432=20 in direct ory inode 1073771053 references free inode 1073772857 clearing inode number in entry at offset 3432... entry "files.MYI" at block 0 offset 2040 in directory inode 1073771423=20 reference s free inode 1073758984 clearing inode number in entry at offset 2040... entry "favorites.frm" at block 0 offset 2136 in directory inode=20 1073771423 refer ences free inode 1073782807 clearing inode number in entry at offset 2136... entry "files.MYD" at block 0 offset 2160 in directory inode 1073771423=20 reference s free inode 1073795156 clearing inode number in entry at offset 2160... entry "Annotation_A0CCA60A-AB56-4EFD-83A5-8764BC08CDA8.atc" at block 0=20 offset 52 0 in directory inode 1073782824 references free inode 1073800859 clearing inode number in entry at offset 520... - agno =3D 5 entry "btiryakioglu@online.metroturizm.com[2].txt" at block 20 offset=20 2760 in di rectory inode 1342192000 references free inode 1342199976 clearing inode number in entry at offset 2760... data fork in regular inode 1342225423 claims used block 149306464 correcting nblocks for inode 1342225423, was 3 - counted 0 - agno =3D 6 entry "Color Settings.csf" at block 0 offset 72 in directory inode=20 1610654999 re ferences free inode 1610668079 clearing inode number in entry at offset 72... entry "PluginCache.psp" at block 0 offset 2648 in directory inode=20 1610654999 ref erences free inode 1610654496 - agno =3D 7 - agno =3D 8 - agno =3D 9 - agno =3D 10 entry "KAgent.cfg" at block 0 offset 1896 in directory inode 2699352171=20 referenc clearing inode number in entry at offset 1896... entry "KTVR0.chl" at block 0 offset 1920 in directory inode 2699352171=20 reference s free inode 2699400189 clearing inode number in entry at offset 1920... - agno =3D 11 - agno =3D 12 - agno =3D 13 - agno =3D 14 - agno =3D 15 entry "AdobeFnt00.lst" at block 0 offset 1400 in directory inode=20 4052255567 refe rences free inode 4050601519 clearing inode number in entry at offset 1400... entry "AdobeFnt05.lst" at block 0 offset 2960 in directory inode=20 4052255567 refe rences free inode 4048724573 clearing inode number in entry at offset 2960... entry "AdobeFnt04.lst" at block 0 offset 3072 in directory inode=20 4052255567 refe rences free inode 4056487992 clearing inode number in entry at offset 3072... - agno =3D 16 - agno =3D 17 - agno =3D 18 - agno =3D 19 - agno =3D 20 - agno =3D 21 - agno =3D 22 - agno =3D 23 - agno =3D 24 - agno =3D 25 - agno =3D 26 - agno =3D 27 - agno =3D 28 - agno =3D 29 - agno =3D 30 - agno =3D 31 Phase 5 - rebuild AG headers and trees... - reset superblock... Phase 6 - check inode connectivity... - resetting contents of realtime bitmap and summary inodes - ensuring existence of lost+found directory - traversing filesystem starting at / ... rebuilding directory inode 128 rebuilding directory inode 536909609 rebuilding directory inode 1073782824 rebuilding directory inode 1073771053 rebuilding directory inode 2699352171 rebuilding directory inode 1610654999 entry "settings.xml" in shortform directory inode 268470425 points to=20 free inode 268491301 junking entry "settings.xml" in directory inode 268491301 rebuilding directory inode 39152 rebuilding directory inode 1073771423 rebuilding directory inode 4052255567 entry "settings.sol" in shortform directory inode 1073765024 points to=20 free inod e 1073765375 junking entry "settings.sol" in directory inode 1073765375 rebuilding directory inode 1342192000 - traversal finished ... - traversing all unattached subtrees ... - traversals finished ... - moving disconnected inodes to lost+found ... disconnected inode 57710, moving to lost+found disconnected inode 57811, moving to lost+found disconnected inode 268483357, moving to lost+found disconnected inode 536909580, moving to lost+found disconnected inode 536911218, moving to lost+found disconnected inode 536931642, moving to lost+found disconnected inode 536931643, moving to lost+found disconnected inode 805320139, moving to lost+found disconnected inode 805321300, moving to lost+found disconnected inode 1073789249, moving to lost+found disconnected inode 1073794002, moving to lost+found disconnected inode 1073794734, moving to lost+found disconnected inode 1073800857, moving to lost+found disconnected inode 1073800862, moving to lost+found disconnected inode 1342188547, moving to lost+found disconnected inode 1342188653, moving to lost+found disconnected inode 1342200504, moving to lost+found disconnected inode 1342200509, moving to lost+found disconnected inode 1342209771, moving to lost+found disconnected inode 1342209840, moving to lost+found disconnected inode 1342209924, moving to lost+found disconnected inode 1342210023, moving to lost+found disconnected inode 1342210074, moving to lost+found disconnected inode 1342219122, moving to lost+found disconnected inode 1342219310, moving to lost+found disconnected inode 1342219363, moving to lost+found disconnected inode 1342219672, moving to lost+found disconnected inode 1342222775, moving to lost+found disconnected inode 1342222911, moving to lost+found disconnected inode 1342222942, moving to lost+found disconnected inode 1342225917, moving to lost+found disconnected inode 1342226754, moving to lost+found disconnected inode 1342227011, moving to lost+found disconnected inode 1342228292, moving to lost+found disconnected inode 1342228678, moving to lost+found disconnected inode 1342229022, moving to lost+found disconnected inode 1342229043, moving to lost+found disconnected inode 1342229161, moving to lost+found disconnected inode 1342229522, moving to lost+found disconnected inode 1342229554, moving to lost+found disconnected inode 1342230251, moving to lost+found disconnected inode 1342230257, moving to lost+found disconnected inode 1342230281, moving to lost+found disconnected inode 1342230303, moving to lost+found disconnected inode 1342230688, moving to lost+found disconnected inode 1342233033, moving to lost+found disconnected inode 1342233148, moving to lost+found disconnected inode 1342233194, moving to lost+found disconnected inode 1342233208, moving to lost+found disconnected inode 1342233234, moving to lost+found disconnected inode 1342233761, moving to lost+found disconnected inode 1342233778, moving to lost+found disconnected inode 1342234141, moving to lost+found disconnected inode 1342234258, moving to lost+found disconnected inode 1342234266, moving to lost+found disconnected inode 1610636053, moving to lost+found disconnected inode 1610654518, moving to lost+found disconnected inode 1610668967, moving to lost+found disconnected inode 2699400184, moving to lost+found disconnected inode 2699400185, moving to lost+found disconnected inode 4048724570, moving to lost+found disconnected inode 4050886573, moving to lost+found disconnected inode 4056744747, moving to lost+found Phase 7 - verify and correct link counts... resetting inode 268483470 nlinks from 1 to 2 resetting inode 805320078 nlinks from 1 to 2 resetting inode 805327953 nlinks from 1 to 2 resetting inode 1073793449 nlinks from 1 to 2 resetting inode 1342188688 nlinks from 1 to 2 resetting inode 1342201396 nlinks from 1 to 2 resetting inode 1342209294 nlinks from 1 to 2 resetting inode 1342209618 nlinks from 1 to 2 resetting inode 1342209654 nlinks from 1 to 2 resetting inode 1342209917 nlinks from 1 to 2 resetting inode 1342210104 nlinks from 1 to 2 resetting inode 1342219214 nlinks from 1 to 2 resetting inode 1342219224 nlinks from 1 to 2 resetting inode 1342219346 nlinks from 1 to 2 resetting inode 1342219390 nlinks from 1 to 2 resetting inode 1342219706 nlinks from 1 to 2 resetting inode 1342219793 nlinks from 1 to 2 resetting inode 1342219978 nlinks from 1 to 2 resetting inode 1342222896 nlinks from 1 to 2 resetting inode 1342222946 nlinks from 1 to 2 resetting inode 1342222955 nlinks from 1 to 2 corrupt dinode 1342225423, extent total =3D 1, nblocks =3D 0. This is a bu= g. Please report it to linux-xfs@oss.sgi.com. fatal error -- couldn't map inode 1342225423, err =3D 990 linuxserver:/var/log # mount -a thanks -- Matthias Cypris Head IT-Technik / IT-Einkauf EUROIMMUN AG Seekamp 31 D-23560 L=FCbeck Phone: +49 451 58 55-24351 Fax: +49 451 58 55-270 m.cypris@euroimmun.de www.euroimmun.de --------------ms010902080306040800000406 Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEH AQAAoIIQtDCCBVcwggQ/oAMCAQICEFwdAADLyODHp72ZDe6NVcswDQYJKoZI hvcNAQEEBQAwggEPMQswCQYDVQQGEwJERTEzMDEGA1UEChMqRVVST0lNTVVO IE1lZGl6aW5pc2NoZSBMYWJvcmRpYWdub3N0aWthIEFHMR8wHQYDVQQLExZW ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNzE1MDMGA1UE CxMsQ2xhc3MgMiBNYW5hZ2VkIFBLSSBJbmRpdmlkdWFsIFN1YnNjcmliZXIg Q0ExNjA0BgNVBAMTLUVVUk9JTU1VTiBNZWRpemluaXNjaGUgTGFib3JkaWFn bm9zdGlrYSBBRyBDQTAeFw0wODEwMTMwMDAwMDBaFw0wOTEwMTMyMzU5NTla MIHbMQswCQYDVQQGEwJERTEzMDEGA1UECgwqRVVST0lNTVVOIE1lZGl6aW5p c2NoZSBMYWJvcmRpYWdub3N0aWthIEFHMQ8wDQYDVQQLDAZDQS1TU0wxRjBE BgNVBAsMPXd3dy52ZXJpc2lnbi5jb20vcmVwb3NpdG9yeS9DUFMgSW5jb3Jw LiBieSBSZWYuLExJQUIuTFREKGMpOTkxGDAWBgNVBAMMD01hdHRoaWFzIEN5 cHJpczEkMCIGCSqGSIb3DQEJARYVbS5jeXByaXNAZXVyb2ltbXVuLmRlMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm2GIgKWy+6rD0ZKp2cMI IRRlJqvv/K/wr5s/ypwgldoYgNIYlfxUaGXKrq7OCqxB5EKR63Se4yMFsSoR 3z+9B+l9hLWCu8WJk6L6FQsiSEKtRwLXJBIFDZxUOdc3S4D6nvtT9QRirfz/ CbnTBonBMDA0A+uGvlI9ZN8V7vlZq8jsBBD436s8GAddzUdeOcNXPPkLNQih Xn8yqeFUirVm47HREaLdUU7IUhNugui1M+2lzefF6o7TMYpVw1f1ldYwHzxY r4ehRKOnwBWi90BrehSoTx6ubhmpdSSL9EOnKGmzWpBsO9bm7iknxOj3R+zk VHndf09XFmgbxM2OzkJUFwIDAQABo4HfMIHcMAkGA1UdEwQCMAAwRAYDVR0g BD0wOzA5BgtghkgBhvhFAQcXAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3 dy52ZXJpc2lnbi5jb20vcnBhMAsGA1UdDwQEAwIFoDARBglghkgBhvhCAQEE BAMCB4AwaQYDVR0fBGIwYDBeoFygWoZYaHR0cDovL29uc2l0ZWNybC52ZXJp c2lnbi5jb20vRVVST0lNTVVOTWVkaXppbmlzY2hlTGFib3JkaWFnbm9zdGlr YUFHQ0FTU0wvTGF0ZXN0Q1JMLmNybDANBgkqhkiG9w0BAQQFAAOCAQEAY/fg 4SDvYG912wGX9AEqMJ4c0jttrr1Odx73/8U7mmVLM0bcikEB2i2K7OHaEmAq 5effzY5btGIvc9nNRBlvcLq5iizK3bvPWnZ6Y4KsAKVqyA5hxkFJiivzCGZo sKDW4qEqTPg8xhZN/oeWzWqB0Y2HkzTc0PZENXN1iXC00LfcmPFvk8GWwPby Rh9SCLDxBzDUqq5suGyUty5Zj+Y17IAdqiDZZa9E3NHGlWgyjmDGhhwSSzvY Y/KldpaQlr9wMt18AqDBECSY7hsHKsOv5KcvBhc+EJwJMEhSLSPJPfmDKeve mdEAqfonHD/s+CbUxiAYKSSA9lstmlUJxETj7TCCBVcwggQ/oAMCAQICEFwd AADLyODHp72ZDe6NVcswDQYJKoZIhvcNAQEEBQAwggEPMQswCQYDVQQGEwJE RTEzMDEGA1UEChMqRVVST0lNTVVOIE1lZGl6aW5pc2NoZSBMYWJvcmRpYWdu b3N0aWthIEFHMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTsw OQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cudmVyaXNpZ24u Y29tL3JwYSAoYykwNzE1MDMGA1UECxMsQ2xhc3MgMiBNYW5hZ2VkIFBLSSBJ bmRpdmlkdWFsIFN1YnNjcmliZXIgQ0ExNjA0BgNVBAMTLUVVUk9JTU1VTiBN ZWRpemluaXNjaGUgTGFib3JkaWFnbm9zdGlrYSBBRyBDQTAeFw0wODEwMTMw MDAwMDBaFw0wOTEwMTMyMzU5NTlaMIHbMQswCQYDVQQGEwJERTEzMDEGA1UE CgwqRVVST0lNTVVOIE1lZGl6aW5pc2NoZSBMYWJvcmRpYWdub3N0aWthIEFH MQ8wDQYDVQQLDAZDQS1TU0wxRjBEBgNVBAsMPXd3dy52ZXJpc2lnbi5jb20v cmVwb3NpdG9yeS9DUFMgSW5jb3JwLiBieSBSZWYuLExJQUIuTFREKGMpOTkx GDAWBgNVBAMMD01hdHRoaWFzIEN5cHJpczEkMCIGCSqGSIb3DQEJARYVbS5j eXByaXNAZXVyb2ltbXVuLmRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEAm2GIgKWy+6rD0ZKp2cMIIRRlJqvv/K/wr5s/ypwgldoYgNIYlfxU aGXKrq7OCqxB5EKR63Se4yMFsSoR3z+9B+l9hLWCu8WJk6L6FQsiSEKtRwLX JBIFDZxUOdc3S4D6nvtT9QRirfz/CbnTBonBMDA0A+uGvlI9ZN8V7vlZq8js BBD436s8GAddzUdeOcNXPPkLNQihXn8yqeFUirVm47HREaLdUU7IUhNugui1 M+2lzefF6o7TMYpVw1f1ldYwHzxYr4ehRKOnwBWi90BrehSoTx6ubhmpdSSL 9EOnKGmzWpBsO9bm7iknxOj3R+zkVHndf09XFmgbxM2OzkJUFwIDAQABo4Hf MIHcMAkGA1UdEwQCMAAwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcXAjAqMCgG CCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMAsGA1Ud DwQEAwIFoDARBglghkgBhvhCAQEEBAMCB4AwaQYDVR0fBGIwYDBeoFygWoZY aHR0cDovL29uc2l0ZWNybC52ZXJpc2lnbi5jb20vRVVST0lNTVVOTWVkaXpp bmlzY2hlTGFib3JkaWFnbm9zdGlrYUFHQ0FTU0wvTGF0ZXN0Q1JMLmNybDAN BgkqhkiG9w0BAQQFAAOCAQEAY/fg4SDvYG912wGX9AEqMJ4c0jttrr1Odx73 /8U7mmVLM0bcikEB2i2K7OHaEmAq5effzY5btGIvc9nNRBlvcLq5iizK3bvP WnZ6Y4KsAKVqyA5hxkFJiivzCGZosKDW4qEqTPg8xhZN/oeWzWqB0Y2HkzTc 0PZENXN1iXC00LfcmPFvk8GWwPbyRh9SCLDxBzDUqq5suGyUty5Zj+Y17IAd qiDZZa9E3NHGlWgyjmDGhhwSSzvYY/KldpaQlr9wMt18AqDBECSY7hsHKsOv 5KcvBhc+EJwJMEhSLSPJPfmDKevemdEAqfonHD/s+CbUxiAYKSSA9lstmlUJ xETj7TCCBfowggVjoAMCAQICECZjSxIdY4C6FmCvxt2LQBgwDQYJKoZIhvcN AQEFBQAwgcExCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5j LjE8MDoGA1UECxMzQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0 aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZW ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4XDTA3MTAwMjAwMDAwMFoXDTEyMTAw MTIzNTk1OVowggEPMQswCQYDVQQGEwJERTEzMDEGA1UEChMqRVVST0lNTVVO IE1lZGl6aW5pc2NoZSBMYWJvcmRpYWdub3N0aWthIEFHMR8wHQYDVQQLExZW ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNzE1MDMGA1UE CxMsQ2xhc3MgMiBNYW5hZ2VkIFBLSSBJbmRpdmlkdWFsIFN1YnNjcmliZXIg Q0ExNjA0BgNVBAMTLUVVUk9JTU1VTiBNZWRpemluaXNjaGUgTGFib3JkaWFn bm9zdGlrYSBBRyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ANriZ1cerNK+gWKAYPGX8yJ/E06/N8xcXer1cte/wnGZUXf3Q51Zgn5aDV9g M4seBdxwD2tGBIvG/5Ec2MKoF5SK+Ug/vvfIdTkzY7FqFHrf9iRGxEQ0KvtC 8B8PQi1JOGSYT44S+8OKp4+q+hWNnHPOXGluafFAiPy1iXhaYQ9PO1x4zEv+ UPZNnRFNgPU2OXONODTMzClvycn02jQchcC8re81qD6a28/5gSJmJJE6M/Cw Elkj5T9PHuoP7Fsh4lSDrBhF0roRhPnqu5MfjMyIeQI2asuEwqZNeGb7kglc /FGuMzALgjgnrw2pX039N3ps/Z3Khfy7/Sk2vca66OECAwEAAaOCAhwwggIY MBIGA1UdEwEB/wQIMAYBAf8CAQAwNAYDVR0fBC0wKzApoCegJYYjaHR0cDov L2NybC52ZXJpc2lnbi5jb20vcGNhMi1nMi5jcmwwEQYJYIZIAYb4QgEBBAQD AgEGMA4GA1UdDwEB/wQEAwIBBjBwBgNVHSAEaTBnMGUGC2CGSAGG+EUBBxcC MFYwKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw KgYIKwYBBQUHAgIwHhocaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYTAt BgNVHREEJjAkpCIwIDEeMBwGA1UEAxMVUHJpdmF0ZUxhYmVsNC0yMDQ4LTQ4 MB0GA1UdDgQWBBQv9pLtCdLEelSoJcpyGfLAFceIxjCB6AYDVR0jBIHgMIHd oYHHpIHEMIHBMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIElu Yy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMW VmVyaVNpZ24gVHJ1c3QgTmV0d29ya4IRALkvYMyIn6F6Rgm4W3Bsiq8wDQYJ KoZIhvcNAQEFBQADgYEAAMG9LQggZUot2APn8o8yG5wNyvmhBclQH/AsuEcM qMrEDJs3/JeKDqWMCJlrH4XC03Uxj5rHRbmedRxKQJ1uQdwWSRmsHIF/s24w q7FzgYxaMTiywCO2FJBTk/XJBPzov2Rme0Cc3U0npi0CSuYfyfsjIaJn+24t MwdwGcQj/90xggV9MIIFeQIBATCCASUwggEPMQswCQYDVQQGEwJERTEzMDEG A1UEChMqRVVST0lNTVVOIE1lZGl6aW5pc2NoZSBMYWJvcmRpYWdub3N0aWth IEFHMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQL EzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3Jw YSAoYykwNzE1MDMGA1UECxMsQ2xhc3MgMiBNYW5hZ2VkIFBLSSBJbmRpdmlk dWFsIFN1YnNjcmliZXIgQ0ExNjA0BgNVBAMTLUVVUk9JTU1VTiBNZWRpemlu aXNjaGUgTGFib3JkaWFnbm9zdGlrYSBBRyBDQQIQXB0AAMvI4MenvZkN7o1V yzAJBgUrDgMCGgUAoIIDKzAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwG CSqGSIb3DQEJBTEPFw0wODEyMjQxMDE3MTdaMCMGCSqGSIb3DQEJBDEWBBRg EZJLrftx+Io3hB2I5Sq5tkxPqDBSBgkqhkiG9w0BCQ8xRTBDMAoGCCqGSIb3 DQMHMA4GCCqGSIb3DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzAN BggqhkiG9w0DAgIBKDCCATgGCSsGAQQBgjcQBDGCASkwggElMIIBDzELMAkG A1UEBhMCREUxMzAxBgNVBAoTKkVVUk9JTU1VTiBNZWRpemluaXNjaGUgTGFi b3JkaWFnbm9zdGlrYSBBRzEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0 d29yazE7MDkGA1UECxMyVGVybXMgb2YgdXNlIGF0IGh0dHBzOi8vd3d3LnZl cmlzaWduLmNvbS9ycGEgKGMpMDcxNTAzBgNVBAsTLENsYXNzIDIgTWFuYWdl ZCBQS0kgSW5kaXZpZHVhbCBTdWJzY3JpYmVyIENBMTYwNAYDVQQDEy1FVVJP SU1NVU4gTWVkaXppbmlzY2hlIExhYm9yZGlhZ25vc3Rpa2EgQUcgQ0ECEFwd AADLyODHp72ZDe6NVcswggE6BgsqhkiG9w0BCRACCzGCASmgggElMIIBDzEL MAkGA1UEBhMCREUxMzAxBgNVBAoTKkVVUk9JTU1VTiBNZWRpemluaXNjaGUg TGFib3JkaWFnbm9zdGlrYSBBRzEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3Qg TmV0d29yazE7MDkGA1UECxMyVGVybXMgb2YgdXNlIGF0IGh0dHBzOi8vd3d3 LnZlcmlzaWduLmNvbS9ycGEgKGMpMDcxNTAzBgNVBAsTLENsYXNzIDIgTWFu YWdlZCBQS0kgSW5kaXZpZHVhbCBTdWJzY3JpYmVyIENBMTYwNAYDVQQDEy1F VVJPSU1NVU4gTWVkaXppbmlzY2hlIExhYm9yZGlhZ25vc3Rpa2EgQUcgQ0EC EFwdAADLyODHp72ZDe6NVcswDQYJKoZIhvcNAQEBBQAEggEAZzBI7x1b9YAK 9Ox6nS9sOgrMYh8TKST6cdao0Objhw1uImKKzfLjr0ehz1l34QVV7DLbL2K9 972l6ox2LrJUTgcMLkCXj84YFb5UW8QcdLn12dTdYN8v07i7Z2YxZRsN9zrA 8knlHKvHdp3Ew63cXrg8BcTf69HZotimjL2Zrghjh1tyBuzb1kIA2F5sAZRK g/Q0igggpkYS4eTrcD3yX/6/IBv5SyWBGSjp6fCOctvy3/JOFAYjiKQXARFs XAK9e0ZKe9bR/QhoGKv5fN8XBzrmEPvzzoBiBn+r2KizMwUGiJcgzwoFDy5E atZXAt+IIDErgoD7O/ObUw6wEFTxdwAAAAAAAA== --------------ms010902080306040800000406-- From cattelan@thebarn.com Wed Dec 24 09:33:53 2008 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_45 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 mBOFXqPR022911 for ; Wed, 24 Dec 2008 09:33:53 -0600 X-ASG-Debug-ID: 1230132829-08ae02190000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from slurp.thebarn.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8B47F1787D09 for ; Wed, 24 Dec 2008 07:33:49 -0800 (PST) Received: from slurp.thebarn.com (cattelan-host202.dsl.visi.com [208.42.117.202]) by cuda.sgi.com with ESMTP id On9kULd4lQBBbhHi for ; Wed, 24 Dec 2008 07:33:49 -0800 (PST) Received: from Russell-Cattelans-MacBook.local (slurp.thebarn.com [208.42.117.201]) (authenticated bits=0) by slurp.thebarn.com (8.14.0/8.14.0) with ESMTP id mBOF5XsF081190; Wed, 24 Dec 2008 09:05:35 -0600 (CST) (envelope-from cattelan@thebarn.com) Message-ID: <49524FBD.4010304@thebarn.com> Date: Wed, 24 Dec 2008 09:05:33 -0600 From: Russell Cattelan User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070728) MIME-Version: 1.0 To: "M.Cypris" CC: xfs-oss X-ASG-Orig-Subj: Re: question ? Subject: Re: question ? References: <49520C2D.5080601@euroimmun.de> In-Reply-To: <49520C2D.5080601@euroimmun.de> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 8bit X-Virus-Scanned: ClamAV 0.91.2/8797/Wed Dec 24 06:04:44 2008 on oss.sgi.com X-Virus-Scanned: ClamAV 0.91.2/8797/Wed Dec 24 06:04:44 2008 on slurp.thebarn.com X-Virus-Status: Clean X-Barracuda-Connect: cattelan-host202.dsl.visi.com[208.42.117.202] X-Barracuda-Start-Time: 1230132830 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.13529 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- A bit more info might be helpful. Like the version of xfs_repair you are running. Based on the message email address linux-xfs@oss.sgi.com I'm guessing this is an older version of repair. Please try a recent version of xfsprogs and see if the error still occurs. -Russell M.Cypris wrote: > data fork in ino 4056744656 claims free block 521849722 > data fork in ino 4056744656 claims free block 521849723 > data fork in ino 4056744656 claims free block 521849724 > data fork in ino 4056744656 claims free block 521849725 > data fork in ino 4056744656 claims free block 521849726 > data fork in ino 4056744656 claims free block 521849727 > data fork in ino 4056744656 claims free block 521849729 > data fork in ino 4056744667 claims free block 319386679 > - agno = 16 > - agno = 17 > - agno = 19 > - agno = 20 > - agno = 22 > - agno = 23 > - agno = 25 > - agno = 26 > - agno = 27 > - agno = 29 > - agno = 30 > - agno = 31 > - process newly discovered inodes... > Phase 4 - check for duplicate blocks... > - clear lost+found (if it exists) ... > - clearing existing "lost+found" inode > - check for inodes claiming duplicate blocks... > - agno = 0 > entry "JSADM.exv" at block 0 offset 2616 in directory inode 39152 > references fre > e inode 39742 > clearing inode number in entry at offset 2616... > entry "AdobeCMapFnt07.lst" at block 0 offset 2664 in directory inode > 39152 refer > clearing inode number in entry at offset 2664... > - agno = 1 > bad data fork in inode 268491301 > cleared inode 268491301 > - agno = 2 > entry "calvar.ini" at block 0 offset 3136 in directory inode 536909609 > reference > s free inode 536912996 > clearing inode number in entry at offset 3136... > entry "acad.mnr" at block 0 offset 3160 in directory inode 536909609 > references > clearing inode number in entry at offset 3160... > entry "Thumbs.db" in shortform directory 536931591 references free > inode 5369316 > junking entry "Thumbs.db" in directory inode 536931591 > - agno = 3 > data fork in ino 1073765375 claims dup extent, off - 0, start - > 404442312, cnt 1 > bad data fork in inode 1073765375 > cleared inode 1073765375 > entry "org.openoffice.Office.OptionsDialog.dat" at block 0 offset 3432 > in direct > ory inode 1073771053 references free inode 1073772857 > clearing inode number in entry at offset 3432... > entry "files.MYI" at block 0 offset 2040 in directory inode 1073771423 > reference > s free inode 1073758984 > clearing inode number in entry at offset 2040... > entry "favorites.frm" at block 0 offset 2136 in directory inode > 1073771423 refer > ences free inode 1073782807 > clearing inode number in entry at offset 2136... > entry "files.MYD" at block 0 offset 2160 in directory inode 1073771423 > reference > s free inode 1073795156 > clearing inode number in entry at offset 2160... > entry "Annotation_A0CCA60A-AB56-4EFD-83A5-8764BC08CDA8.atc" at block 0 > offset 52 > 0 in directory inode 1073782824 references free inode 1073800859 > clearing inode number in entry at offset 520... > - agno = 5 > entry "btiryakioglu@online.metroturizm.com[2].txt" at block 20 offset > 2760 in di > rectory inode 1342192000 references free inode 1342199976 > clearing inode number in entry at offset 2760... > data fork in regular inode 1342225423 claims used block 149306464 > correcting nblocks for inode 1342225423, was 3 - counted 0 > - agno = 6 > entry "Color Settings.csf" at block 0 offset 72 in directory inode > 1610654999 re > ferences free inode 1610668079 > clearing inode number in entry at offset 72... > entry "PluginCache.psp" at block 0 offset 2648 in directory inode > 1610654999 ref > erences free inode 1610654496 > - agno = 7 > - agno = 8 > - agno = 9 > - agno = 10 > entry "KAgent.cfg" at block 0 offset 1896 in directory inode > 2699352171 referenc > clearing inode number in entry at offset 1896... > entry "KTVR0.chl" at block 0 offset 1920 in directory inode 2699352171 > reference > s free inode 2699400189 > clearing inode number in entry at offset 1920... > - agno = 11 > - agno = 12 > - agno = 13 > - agno = 14 > - agno = 15 > entry "AdobeFnt00.lst" at block 0 offset 1400 in directory inode > 4052255567 refe > rences free inode 4050601519 > clearing inode number in entry at offset 1400... > entry "AdobeFnt05.lst" at block 0 offset 2960 in directory inode > 4052255567 refe > rences free inode 4048724573 > clearing inode number in entry at offset 2960... > entry "AdobeFnt04.lst" at block 0 offset 3072 in directory inode > 4052255567 refe > rences free inode 4056487992 > clearing inode number in entry at offset 3072... > - agno = 16 > - agno = 17 > - agno = 18 > - agno = 19 > - agno = 20 > - agno = 21 > - agno = 22 > - agno = 23 > - agno = 24 > - agno = 25 > - agno = 26 > - agno = 27 > - agno = 28 > - agno = 29 > - agno = 30 > - agno = 31 > Phase 5 - rebuild AG headers and trees... > - reset superblock... > Phase 6 - check inode connectivity... > - resetting contents of realtime bitmap and summary inodes > - ensuring existence of lost+found directory > - traversing filesystem starting at / ... > rebuilding directory inode 128 > rebuilding directory inode 536909609 > rebuilding directory inode 1073782824 > rebuilding directory inode 1073771053 > rebuilding directory inode 2699352171 > rebuilding directory inode 1610654999 > entry "settings.xml" in shortform directory inode 268470425 points to > free inode > 268491301 > junking entry "settings.xml" in directory inode 268491301 > rebuilding directory inode 39152 > rebuilding directory inode 1073771423 > rebuilding directory inode 4052255567 > entry "settings.sol" in shortform directory inode 1073765024 points to > free inod > e 1073765375 > junking entry "settings.sol" in directory inode 1073765375 > rebuilding directory inode 1342192000 > - traversal finished ... > - traversing all unattached subtrees ... > - traversals finished ... > - moving disconnected inodes to lost+found ... > disconnected inode 57710, moving to lost+found > disconnected inode 57811, moving to lost+found > disconnected inode 268483357, moving to lost+found > disconnected inode 536909580, moving to lost+found > disconnected inode 536911218, moving to lost+found > disconnected inode 536931642, moving to lost+found > disconnected inode 536931643, moving to lost+found > disconnected inode 805320139, moving to lost+found > disconnected inode 805321300, moving to lost+found > disconnected inode 1073789249, moving to lost+found > disconnected inode 1073794002, moving to lost+found > disconnected inode 1073794734, moving to lost+found > disconnected inode 1073800857, moving to lost+found > disconnected inode 1073800862, moving to lost+found > disconnected inode 1342188547, moving to lost+found > disconnected inode 1342188653, moving to lost+found > disconnected inode 1342200504, moving to lost+found > disconnected inode 1342200509, moving to lost+found > disconnected inode 1342209771, moving to lost+found > disconnected inode 1342209840, moving to lost+found > disconnected inode 1342209924, moving to lost+found > disconnected inode 1342210023, moving to lost+found > disconnected inode 1342210074, moving to lost+found > disconnected inode 1342219122, moving to lost+found > disconnected inode 1342219310, moving to lost+found > disconnected inode 1342219363, moving to lost+found > disconnected inode 1342219672, moving to lost+found > disconnected inode 1342222775, moving to lost+found > disconnected inode 1342222911, moving to lost+found > disconnected inode 1342222942, moving to lost+found > disconnected inode 1342225917, moving to lost+found > disconnected inode 1342226754, moving to lost+found > disconnected inode 1342227011, moving to lost+found > disconnected inode 1342228292, moving to lost+found > disconnected inode 1342228678, moving to lost+found > disconnected inode 1342229022, moving to lost+found > disconnected inode 1342229043, moving to lost+found > disconnected inode 1342229161, moving to lost+found > disconnected inode 1342229522, moving to lost+found > disconnected inode 1342229554, moving to lost+found > disconnected inode 1342230251, moving to lost+found > disconnected inode 1342230257, moving to lost+found > disconnected inode 1342230281, moving to lost+found > disconnected inode 1342230303, moving to lost+found > disconnected inode 1342230688, moving to lost+found > disconnected inode 1342233033, moving to lost+found > disconnected inode 1342233148, moving to lost+found > disconnected inode 1342233194, moving to lost+found > disconnected inode 1342233208, moving to lost+found > disconnected inode 1342233234, moving to lost+found > disconnected inode 1342233761, moving to lost+found > disconnected inode 1342233778, moving to lost+found > disconnected inode 1342234141, moving to lost+found > disconnected inode 1342234258, moving to lost+found > disconnected inode 1342234266, moving to lost+found > disconnected inode 1610636053, moving to lost+found > disconnected inode 1610654518, moving to lost+found > disconnected inode 1610668967, moving to lost+found > disconnected inode 2699400184, moving to lost+found > disconnected inode 2699400185, moving to lost+found > disconnected inode 4048724570, moving to lost+found > disconnected inode 4050886573, moving to lost+found > disconnected inode 4056744747, moving to lost+found > Phase 7 - verify and correct link counts... > resetting inode 268483470 nlinks from 1 to 2 > resetting inode 805320078 nlinks from 1 to 2 > resetting inode 805327953 nlinks from 1 to 2 > resetting inode 1073793449 nlinks from 1 to 2 > resetting inode 1342188688 nlinks from 1 to 2 > resetting inode 1342201396 nlinks from 1 to 2 > resetting inode 1342209294 nlinks from 1 to 2 > resetting inode 1342209618 nlinks from 1 to 2 > resetting inode 1342209654 nlinks from 1 to 2 > resetting inode 1342209917 nlinks from 1 to 2 > resetting inode 1342210104 nlinks from 1 to 2 > resetting inode 1342219214 nlinks from 1 to 2 > resetting inode 1342219224 nlinks from 1 to 2 > resetting inode 1342219346 nlinks from 1 to 2 > resetting inode 1342219390 nlinks from 1 to 2 > resetting inode 1342219706 nlinks from 1 to 2 > resetting inode 1342219793 nlinks from 1 to 2 > resetting inode 1342219978 nlinks from 1 to 2 > resetting inode 1342222896 nlinks from 1 to 2 > resetting inode 1342222946 nlinks from 1 to 2 > resetting inode 1342222955 nlinks from 1 to 2 > corrupt dinode 1342225423, extent total = 1, nblocks = 0. This is a bug. > Please report it to linux-xfs@oss.sgi.com. > > fatal error -- couldn't map inode 1342225423, err = 990 > linuxserver:/var/log # mount -a > > > thanks > > > -- > Matthias Cypris > Head IT-Technik / IT-Einkauf > EUROIMMUN AG > Seekamp 31 > D-23560 Lübeck > Phone: +49 451 58 55-24351 > Fax: +49 451 58 55-270 > m.cypris@euroimmun.de > www.euroimmun.de > > > > ------------------------------------------------------------------------ > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sandeen@sandeen.net Wed Dec 24 09:52:48 2008 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 mBOFql4i027462 for ; Wed, 24 Dec 2008 09:52:48 -0600 X-ASG-Debug-ID: 1230133964-0c3802a50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5E70917878AA for ; Wed, 24 Dec 2008 07:52:45 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id bUJgeObkUOS0o5Ft for ; Wed, 24 Dec 2008 07:52:45 -0800 (PST) Received: from Liberator.local (h138.33.19.98.dynamic.ip.windstream.net [98.19.33.138]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id B2FC0A9FE9F; Wed, 24 Dec 2008 09:52:41 -0600 (CST) Message-ID: <49525AC7.7020409@sandeen.net> Date: Wed, 24 Dec 2008 09:52:39 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Russell Cattelan CC: "M.Cypris" , xfs-oss X-ASG-Orig-Subj: Re: question ? Subject: Re: question ? References: <49520C2D.5080601@euroimmun.de> <49524FBD.4010304@thebarn.com> In-Reply-To: <49524FBD.4010304@thebarn.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230133965 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.13531 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8797/Wed Dec 24 06:04:44 2008 on oss.sgi.com X-Virus-Status: Clean Russell Cattelan wrote: > A bit more info might be helpful. > > Like the version of xfs_repair you are running. > > Based on the message email address linux-xfs@oss.sgi.com > I'm guessing this is an older version of repair. > > Please try a recent version of xfsprogs and see if the error still occurs. > > -Russell > And if newer xfsprogs still fails, please capture an xfs_metadump as the new error message will request. Thanks, -Eric From SRS0+458430ffa4c4e64cd9d2+1949+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 24 17:19:42 2008 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 mBONJej7031357 for ; Wed, 24 Dec 2008 17:19:42 -0600 X-ASG-Debug-ID: 1230160773-097102860000-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 5F7981788B26 for ; Wed, 24 Dec 2008 15:19:33 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 3ffXSDH5kZAtXQzK for ; Wed, 24 Dec 2008 15:19:33 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LFd0H-00040y-8q; Wed, 24 Dec 2008 23:19:01 +0000 Date: Wed, 24 Dec 2008 18:19:01 -0500 From: Christoph Hellwig To: Arkadiusz Miskiewicz Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH, RFC] xfs_repair: allow filesystems with a single AG Subject: [PATCH, RFC] xfs_repair: allow filesystems with a single AG Message-ID: <20081224231901.GA652@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: 1230160773 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8798/Wed Dec 24 10:46:31 2008 on oss.sgi.com X-Virus-Status: Clean 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) { From jpiszcz@lucidpixels.com Thu Dec 25 07:31:21 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_84 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 mBPDVLmZ031603 for ; Thu, 25 Dec 2008 07:31:21 -0600 X-ASG-Debug-ID: 1230211879-05b8014c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C42FE47A59 for ; Thu, 25 Dec 2008 05:31:19 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id 2D74gQ1uNrDpfGwC for ; Thu, 25 Dec 2008 05:31:19 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id BA1572E62C6; Thu, 25 Dec 2008 08:31:18 -0500 (EST) Date: Thu, 25 Dec 2008 08:31:18 -0500 (EST) From: Justin Piszcz To: linux-kernel@vger.kernel.org cc: linux-raid@vger.kernel.org, bug-parted@gnu.org, ataraid-list@redhat.com, xfs@oss.sgi.com X-ASG-Orig-Subj: How do I tell if my partition is aligned for a 64k/RAID-6? Subject: How do I tell if my partition is aligned for a 64k/RAID-6? Message-ID: User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1230211879 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.61 X-Barracuda-Spam-Status: No, SCORE=-1.61 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13604 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: X-Virus-Scanned: ClamAV 0.91.2/8798/Wed Dec 24 10:46:31 2008 on oss.sgi.com X-Virus-Status: Clean Output: =============================================================================== p34:~# parted /dev/sda print unit s print unit chs print Model: AMCC 9650SE-16M DISK (scsi) Disk /dev/sda: 13.0TB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 17.4kB 13.0TB 13.0TB xfs Model: AMCC 9650SE-16M DISK (scsi) Disk /dev/sda: 25390350336s Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 34s 25390350302s 25390350269s xfs Model: AMCC 9650SE-16M DISK (scsi) Disk /dev/sda: 1580476,53,56 Sector size (logical/physical): 512B/512B BIOS cylinder,head,sector geometry: 1580476,255,63. Each cylinder is 8225kB. Partition Table: gpt Number Start End File system Name Flags 1 0,0,34 1580476,53,23 xfs p34:~# =============================================================================== I created a partition from 0Gb to 13T on the following LUN, but how do I verify this is aligned to the (hardware) 64KiB raid-6 array? Unit UnitType Status %RCmpl %V/I/M Stripe Size(GB) Cache AVrfy ------------------------------------------------------------------------------ u0 RAID-6 OK - - 64K 12107.1 ON ON =============================================================================== p34:~# xfs_info /dev/sda1 meta-data=/dev/sda1 isize=256 agcount=12, agsize=268435455 blks = sectsz=512 attr=2 data = bsize=4096 blocks=3173793783, imaxpct=5 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 log =internal bsize=4096 blocks=32768, version=2 = sectsz=512 sunit=0 blks, lazy-count=0 realtime =none extsz=4096 blocks=0, rtextents=0 =============================================================================== I am not worried about the filesystem as the defaults usually get it right but with parted, this is the first time I had to use it for home use and with RAID-6 I am noticing slower performance with 15 disks (1 is a spare) in RAID-6 (albeit slower 7200 ones, RE3s) than I was getting with 10 raptor150s in RAID-6 (but I had used fdisk there). Justin. From sandeen@sandeen.net Thu Dec 25 11:54:39 2008 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 mBPHscOm022016 for ; Thu, 25 Dec 2008 11:54:38 -0600 X-ASG-Debug-ID: 1230227676-41f5024e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0D60647DE9 for ; Thu, 25 Dec 2008 09:54:36 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id oCFr7h57dR6DU9Qi for ; Thu, 25 Dec 2008 09:54:36 -0800 (PST) Received: from Liberator.local (h29.37.19.98.dynamic.ip.windstream.net [98.19.37.29]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id 858FFA9C9C6; Thu, 25 Dec 2008 11:54:01 -0600 (CST) Message-ID: <4953C8B8.4010500@sandeen.net> Date: Thu, 25 Dec 2008 11:54:00 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: Arkadiusz Miskiewicz , 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 References: <20081224231901.GA652@infradead.org> In-Reply-To: <20081224231901.GA652@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: 1230227677 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.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=COMMA_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13619 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' X-Virus-Scanned: ClamAV 0.91.2/8800/Thu Dec 25 10:08:10 2008 on oss.sgi.com X-Virus-Status: Clean 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...? -Eric From jpiszcz@lucidpixels.com Thu Dec 25 12:04:15 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_33, J_CHICKENPOX_63 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 mBPI4CAd022823 for ; Thu, 25 Dec 2008 12:04:15 -0600 X-ASG-Debug-ID: 1230228247-5e0300720000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 91FB847F74 for ; Thu, 25 Dec 2008 10:04:08 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id cp8rOKO67CDoORuE for ; Thu, 25 Dec 2008 10:04:08 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 7BD843128EE; Thu, 25 Dec 2008 13:04:07 -0500 (EST) Date: Thu, 25 Dec 2008 13:04:07 -0500 (EST) From: Justin Piszcz To: linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org cc: xfs@oss.sgi.com, smartmontools-support@lists.sourceforge.net, Alan Piszcz X-ASG-Orig-Subj: mismatch_cnt, random bitflips, silent corruption(?), mdadm/sw raid[156] Subject: mismatch_cnt, random bitflips, silent corruption(?), mdadm/sw raid[156] Message-ID: User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1463747160-1756203312-1230208415=:24295" Content-ID: X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1230228248 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.12 X-Barracuda-Spam-Status: No, SCORE=-1.12 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, BSF_SC0_SA085b, FB_WORD1_END_DOLLAR X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13619 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 FB_WORD1_END_DOLLAR BODY: Looks like a word ending with a $ 0.50 BSF_RULE7568M Custom Rule 7568M 0.40 BSF_SC0_SA085b Custom Rule SA085b X-Virus-Scanned: ClamAV 0.91.2/8800/Thu Dec 25 10:08:10 2008 on oss.sgi.com X-Virus-Status: Clean This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---1463747160-1756203312-1230208415=:24295 Content-Type: TEXT/PLAIN; CHARSET=ISO-8859-1; FORMAT=flowed Content-Transfer-Encoding: QUOTED-PRINTABLE Content-ID: I have many backups of data from the late 1990s onward, each of which have= =20 been combined into tar files and then encrypted with gpg, each is about 4= =20 gigabytes so I can store them on DVD. For quicker access, I also kept them on software raid. In the past, I have always kept them on either SW= =20 RAID5 or SW RAID6 using XFS. All of the machines in question that I=20 have/had the data on never exhibited any bad memory and all pass memtest=20 OK. However, what is worrisome, is, on occasion, the mismatch_cnt=20 would be some crazy number on different machines, 2000 or 5000, I checked= =20 all of the disks with smart, they appear to be OK and when I run a check=20 and repair against the raid then the count will usually go back down to=20 zero. However, in reality, are these "mismatches" really an indication of silent= =20 data corruption? In my case, I have 199 of these backup files and when I= =20 tried to unencrypt the data, I got these errors on several volumes: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D gpg: block_filter 0x1c8e200: read error (size=3D10266,a->size=3D10266) gpg: mdc_packet with invalid encoding gpg: decryption failed: invalid packet gpg: block_filter: pending bytes! gpg: fatal: zlib inflate problem: invalid stored block lengths secmem usage: 2368/2496 bytes in 6/7 blocks of pool 3104/32768 gpg: fatal: zlib inflate problem: invalid block type secmem usage: 2368/2496 bytes in 6/7 blocks of pool 3104/32768 gpg: fatal: zlib inflate problem: invalid code lengths set secmem usage: 2368/2496 bytes in 6/7 blocks of pool 3104/32768 gpg: fatal: zlib inflate problem: invalid block type secmem usage: 2368/2496 bytes in 6/7 blocks of pool 3104/32768 gpg: fatal: zlib inflate problem: invalid block type secmem usage: 2368/2496 bytes in 6/7 blocks of pool 3104/32768 gpg: [don't know]: invalid packet (ctb=3D1f) gpg: [don't know]: invalid packet (ctb=3D2d) gpg: mdc_packet with invalid encoding gpg: decryption failed: invalid packet gpg: [don't know]: invalid packet (ctb=3D30) gpg: fatal: zlib inflate problem: invalid stored block lengths secmem usage: 2368/2496 bytes in 6/7 blocks of pool 3104/32768 gpg: fatal: zlib inflate problem: invalid stored block lengths secmem usage: 2368/2496 bytes in 6/7 blocks of pool 3104/32768 gpg: fatal: zlib inflate problem: invalid code lengths set secmem usage: 2368/2496 bytes in 6/7 blocks of pool 3104/32768 gpg: fatal: zlib inflate problem: invalid stored block lengths secmem usage: 2368/2496 bytes in 6/7 blocks of pool 3104/32768 gpg: fatal: zlib inflate problem: invalid distance code secmem usage: 2368/2496 bytes in 6/7 blocks of pool 3104/32768 gpg: fatal: zlib inflate problem: invalid distance code secmem usage: 2368/2496 bytes in 6/7 blocks of pool 3104/32768 gpg: fatal: zlib inflate problem: invalid code lengths set secmem usage: 2368/2496 bytes in 6/7 blocks of pool 3104/32768 gpg: fatal: zlib inflate problem: invalid block type secmem usage: 2368/2496 bytes in 6/7 blocks of pool 3104/32768 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D This resulted in partial-sized corrupted tarballs, I am decompressing each of the 199 backups now to isolate which are affected so I can come up with a better count on how many files were affected. The total amount of data is:=20 832G in 199 files (4.18gig/file average) =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Bad files (out of the 199): Thu Dec 25 05:44:16 EST 2008: Decompressing backup038.tar tar: Unexpected EOF in archive tar: Unexpected EOF in archive tar: Error is not recoverable: exiting now Thu Dec 25 08:18:00 EST 2008: Decompressing backup103.tar tar: Unexpected EOF in archive tar: Unexpected EOF in archive tar: Error is not recoverable: exiting now Thu Dec 25 08:34:39 EST 2008: Decompressing backup111.tar tar: Unexpected EOF in archive tar: Unexpected EOF in archive tar: Error is not recoverable: exiting now Thu Dec 25 08:43:26 EST 2008: Decompressing backup115.tar tar: Unexpected EOF in archive tar: Unexpected EOF in archive tar: Error is not recoverable: exiting now Thu Dec 25 08:54:39 EST 2008: Decompressing backup120.tar tar: Unexpected EOF in archive tar: Unexpected EOF in archive tar: Error is not recoverable: exiting now Thu Dec 25 09:36:02 EST 2008: Decompressing backup137.tar tar: Unexpected EOF in archive tar: Unexpected EOF in archive tar: Error is not recoverable: exiting now Thu Dec 25 09:36:39 EST 2008: Decompressing backup138.tar tar: Unexpected EOF in archive tar: Unexpected EOF in archive tar: Error is not recoverable: exiting now Thu Dec 25 09:52:06 EST 2008: Decompressing backup145.tar tar: Unexpected EOF in archive tar: Unexpected EOF in archive tar: Error is not recoverable: exiting now Thu Dec 25 10:10:14 EST 2008: Decompressing backup153.tar tar: Unexpected EOF in archive tar: Unexpected EOF in archive tar: Error is not recoverable: exiting now Thu Dec 25 10:10:32 EST 2008: Decompressing backup154.tar tar: Unexpected EOF in archive tar: Unexpected EOF in archive tar: Error is not recoverable: exiting now Thu Dec 25 10:36:50 EST 2008: Decompressing backup166.tar tar: Unexpected EOF in archive tar: Unexpected EOF in archive tar: Error is not recoverable: exiting now Thu Dec 25 10:40:19 EST 2008: Decompressing backup168.tar tar: Unexpected EOF in archive tar: Unexpected EOF in archive tar: Error is not recoverable: exiting now Thu Dec 25 11:20:00 EST 2008: Decompressing backup181.tar tar: Unexpected EOF in archive tar: Unexpected EOF in archive tar: Error is not recoverable: exiting now Thu Dec 25 11:39:11 EST 2008: Decompressing backup187.tar tar: Unexpected EOF in archive tar: Unexpected EOF in archive tar: Error is not recoverable: exiting now Thu Dec 25 12:05:27 EST 2008: Decompressing backup194.tar tar: Unexpected EOF in archive tar: Unexpected EOF in archive tar: Error is not recoverable: exiting now =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Example of one file: -rw-r--r-- 1 root root 40M 2008-12-24 20:08 backup038.tar -rw-r--r-- 1 root root 4.3G 2008-12-23 17:45 backup038.tar.gpg =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D I have restored the data off of DVD and confirmed the data that had=20 resided on disk must have suffered from a bit-flip/corruption: $ md5sum backup038.tar.gpg=20 9958813aa22e4307f2101f87b8820bff backup038.tar.gpg (from dvd) $ md5sum backup038.tar.gpg 9437138a01fc2429ca2131f6a10295b5 backup038.tar.gpg (from disk) =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Splitting these files up we can isolate how many corruptions occured in the file: dvd$ split -b 100M backup038.tar.gpg hdd$ split -b 100M backup038.tar.gpg $ diff dvd.md5 ../hdd/hdd.md5=20 1c1 < 9dfcab90fd6590705ba4293994f10a85 xaa --- > cce57047ac869ef3e603d4d6bd3579e9 xaa =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Dig further: $ mv xaa dvd.xaa $ mv xaa hdd.xaa $ split -b 1M dvd.xaa=20 $ split -b 1M hdd.xaa $ diff dvd.md5 ../../hdd/xaa_split/hdd.md5=20 40c40 < 439e4291ea67240c0b083abe5f041319 xbn --- > 95e548284fa78f750b50f3e6a8e1b847 xbn =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Further.. $ split -a 100 -b 1k dvd.xbn=20 $ split -a 100 -b 1k hdd.xbn $ diff dvd.md5 ../../../hdd/xaa_split/xbn_split/hdd.md5 |wc 132 392 17960 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Quite a big 'chunk' of the file suffered corruption. $ diff dvd.md5 ../../../hdd/xaa_split/xbn_split/hdd.md5 | awk '{print $3}'= | xargs -n1 ls | xargs du -ach 520K total =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D dvd$ md5sum one_part_with_corruption c131c2f7dea3c316cbcd2c26360e4b03 one_part_with_corruption hdd$ md5sum one_part_with_corruption 35968f907c5e6f986d9c5a171dd0a7ac one_part_with_corruption Taking an octal dump and checking the ASCII characters: dvd: < 0000000 034 =E5 =E2 201 f =AE =E7 =B9 e D 221 =CA =C1= \b =F7 $ < 0000020 > p M | 212 236 034 =D8 \b =FF z =E5 =ED \a = =C8 i < 0000040 212 \f =E7 ] 200 l =AA 234 Y 224 =B3 =E9 =FB = =F3 =CC=20 < 0000060 233 } G =E4 W : 236 b =B0 } 215 ) 224 R R = =B8 < 0000100 237 =A8 =BE 227 =DA 1 =A4 O =E7 =FD 003 177 $ = e 032 =C1 < 0000120 ! ^ j =DE 235 8 5 a J =A1 =F6 < =C6 H 2= 23 =D5 hdd: > 0000000 \r =C6 =A6 033 034 =E5 =E2 201 f =AE =E7 =B9 e= D 221 =CA > 0000020 =C1 \b =F7 $ > p M | 212 236 034 =D8 \b =FF = z =E5 > 0000040 =ED \a =C8 i 212 \f =E7 ] 200 l =AA 234 Y 224 = =B3 =E9 > 0000060 =FB =F3 =CC 233 } G =E4 W : 236 b =B0 }= 215 ) > 0000100 224 R R =B8 237 =A8 =BE 227 =DA 1 =A4 O =E7 = =FD 003 177 > 0000120 $ e 032 =C1 ! ^ j =DE 235 8 5 a J =A1 = =F6 < The hdd image seems 'shifted' see the following sequence: (201..f..R..c) on the first line. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D So the question then becomes where did the shift begin? Way above we see the initial error began on xaa (100M) -> xbn (1M) dvd$ md5sum xbm 2524788769acf2b0f98346f488a58441 xbm hdd$ md5sum xbm 2524788769acf2b0f98346f488a58441 xbm So then we want to take an od of xbn and then diff that: It starts at the following segment: dvd: < 2006000 =FB r 222 235 =A9 z 8 d 035 =B4 230 # 207 =CD = =F5 u hdd: > 2006000 =FB r 222 235 =FB r 222 235 =A9 z 8 d 035 =B4 2= 30 # =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D So let's look at it a few lines before as well: dvd: 2005720 ' 0 =C3 001 =F2 =BB [ ( 037 024 . 211 M 023 001 = =C3 2005740 V 021 \ =D0 Y =C7 =D6 207 206 =AC n =AC 234 z = =AF 034 2005760 =BF 206 002 + w =CE 200 =CE 3 =E8 =C0 K $ =EA= e n 2006000 =FB r 222 235 =A9 z 8 d 035 =B4 230 # 207 =CD = =F5 u 2006020 R =AF =CD 025 =C1 =BC 022 =F6 024 =AF 200 Q 217 = =C3 =AF =A3 2006040 203 =AD =F4 c 3 =ED 207 # ] =C4 =F4 H ( =FD= 5 207 2006060 =EB C C a @ \r 200 =DC =E2 =A1 \r 204 230 U = =E6 O hdd: 2005720 ' 0 =C3 001 =F2 =BB [ ( 037 024 . 211 M 023 001 = =C3 2005740 V 021 \ =D0 Y =C7 =D6 207 206 =AC n =AC 234 z = =AF 034 2005760 =BF 206 002 + w =CE 200 =CE 3 =E8 =C0 K $ =EA= e n 2006000 =FB r 222 235 =FB r 222 235 =A9 z 8 d 035 =B4 230= # 2006020 207 =CD =F5 u R =AF =CD 025 =C1 =BC 022 =F6 024 = =AF 200 Q 2006040 217 =C3 =AF =A3 203 =AD =F4 c 3 =ED 207 # ] = =C4 =F4 H 2006060 ( =FD 5 207 =EB C C a @ \r 200 =DC =E2 =A1 = \r 204 The same sequence still seems to exist after the flip for the 5th character on line 2006000. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D On the linux-raid mailing list, this issue is often discussed: http://www.mail-archive.com/linux-raid@vger.kernel.org/msg07541.html The solution seems to be repair and keep on trucking along, which is=20 probably fine for a filesystem with hundreds/thousands of files, most=20 likely, you would never notice the corruption. However, with gpg, the files obviously cannot suffer any corruption. It is only when I tried to extract = the=20 data did I notice this problem. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D server 1 (965 chipset) =3D=3D Root filesystem (Raid-1): Sat Nov 15 11:39:03 EST 2008: cat /sys/block/md2/md/mismatch_cnt Sat Nov 15 11:39:03 EST 2008: 128 Storage array (Raid-6): Wed Nov 26 10:14:21 EST 2008: cat /sys/block/md3/md/mismatch_cnt Wed Nov 26 10:14:21 EST 2008: 1208 =3D=3D server 2 (p35-chipset) =3D=3D Swap (Raid-1): I understand this is 'normal' for swap: Fri Jan 18 22:51:47 EST 2008: cat /sys/block/md0/md/mismatch_cnt Fri Jan 18 22:51:47 EST 2008: 4096 Fri May 30 21:00:07 EDT 2008: cat /sys/block/md0/md/mismatch_cnt Fri May 30 21:00:07 EDT 2008: 896 Fri Nov 14 23:30:10 EST 2008: cat /sys/block/md0/md/mismatch_cnt Fri Nov 14 23:30:10 EST 2008: 384 =3D=3D server 3 (also 965 chipset) =3D=3D Root filesystem (Raid-1): Fri May 18 20:50:05 EDT 2007: cat /sys/block/md2/md/mismatch_cnt Fri May 18 20:50:05 EDT 2007: 128 Sat May 26 04:40:09 EDT 2007: cat /sys/block/md2/md/mismatch_cnt Sat May 26 04:40:09 EDT 2007: 128 Swap (Raid-1): Again, normal but a very high mismatch_cnt: Fri Oct 5 20:50:05 EDT 2007: cat /sys/block/md0/md/mismatch_cnt Fri Oct 5 20:50:05 EDT 2007: 27904 Storage array (RAID-5) Fri Apr 4 22:00:09 EDT 2008: cat /sys/block/md3/md/mismatch_cnt Fri Apr 4 22:00:09 EDT 2008: 512 Fri May 23 22:00:10 EDT 2008: cat /sys/block/md3/md/mismatch_cnt Fri May 23 22:00:10 EDT 2008: 256 =3D=3D server 4 (intel 875 chipset, raid-5) # grep mismatches\ found * daemon.log:Jan 3 11:27:27 p26 mdadm: RebuildFinished event detected on md = device /dev/md0, component device mismatches found: 11896 daemon.log:Nov 14 12:25:59 p26 mdadm[1956]: RebuildFinished event detected = on md device /dev/md0, component device mismatches found: 11664 daemon.log:Nov 14 18:19:01 p26 mdadm[1956]: RebuildFinished event detected = on md device /dev/md0, component device mismatches found: 11664 syslog:Jan 3 11:27:27 p26 mdadm: RebuildFinished event detected on md devi= ce /dev/md0, component device mismatches found: 11896 syslog:Nov 14 12:25:59 p26 mdadm[1956]: RebuildFinished event detected on m= d device /dev/md0, component device mismatches found: 11664 syslog:Nov 14 18:19:01 p26 mdadm[1956]: RebuildFinished event detected on m= d device /dev/md0, component device mismatches found: 11664 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Options/alternatives for maintaining data integrity? 1. Obviously DVD and/or LTO-tape (multiple copies of data at rest) http://epoka.dk/media/Linear_Tape_Open_(LTO)_Ultrium_Data_Cartridges.pdf -> For LTO-2/LTO-3 -> Uncorrected bit error rate 1x10-17 1x10-17 -> Undetected bit error rate 1x10-27 1x10-27 2. ZFS, but only runs in user-space in Linux. 3. Keep an md5sum for each file on the filesystem and run daily checks? =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Other options? How do others maintain data integrity? Just not worry about it until you h= ave to, rely on backups.. or? Justin. ---1463747160-1756203312-1230208415=:24295-- From jpiszcz@lucidpixels.com Fri Dec 26 12:01:24 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 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 mBQI1OF3006249 for ; Fri, 26 Dec 2008 12:01:24 -0600 X-ASG-Debug-ID: 1230314482-440e01380000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A21CA4AB77 for ; Fri, 26 Dec 2008 10:01:22 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id gAlVgDFrQoWW6UN4 for ; Fri, 26 Dec 2008 10:01:22 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 6C352B66382; Fri, 26 Dec 2008 12:52:10 -0500 (EST) Date: Fri, 26 Dec 2008 12:52:10 -0500 (EST) From: Justin Piszcz To: Eric Sandeen cc: xfs@oss.sgi.com, esandeen@redhat.com, Alan Piszcz X-ASG-Orig-Subj: Re: xfs_db 2.9.8: coredump Subject: Re: xfs_db 2.9.8: coredump In-Reply-To: Message-ID: References: <49551073.5090704@redhat.com> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1230314483 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.13694 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, 26 Dec 2008, Justin Piszcz wrote: > > > On Fri, 26 Dec 2008, Eric Sandeen wrote: > >> Justin Piszcz wrote: >>> # xfs_db -V >>> xfs_db version 2.9.8 >>> >>> p34:~# xfs_db -c frag -f /dev/sda1 >>> Segmentation fault (core dumped) >>> p34:~# xfs_db -c frag -r /dev/sda1 >>> Segmentation fault (core dumped) >>> >>> (It was working BEFORE I ran xfs_fsr on it, it was at 16% fragmentation). >>> >>> Now it can no longer check it? >>> >> >> Or, get an xfs_metadump of the fs and see if db segfaults on that too. >> >> I'd be curious to know if xfs_repair -n flaggs any problems, as well. >> >> -Eric >> p34:~# umount /r1 p34:~# sync p34:~# xfs_db -c frag -r /dev/sda1 actual 365758, ideal 358711, fragmentation factor 1.93% p34:~# mount -a p34:~# xfs_db -c frag -r /dev/sda1 actual 365758, ideal 358711, fragmentation factor 1.93% p34:~# mount -a ; dmesg | tail -n 2 p34:~# xfs_fsr /dev/sda1 /r1 start inode=0 p34:~# xfs_db -c frag -r /dev/sda1 actual 365751, ideal 358711, fragmentation factor 1.92% p34:~# Now it is working? I do not understand. From sandeen@sandeen.net Fri Dec 26 12:06:25 2008 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 mBQI6PqL006974 for ; Fri, 26 Dec 2008 12:06:25 -0600 X-ASG-Debug-ID: 1230314783-311d01b70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 70D61178C8C6 for ; Fri, 26 Dec 2008 10:06:24 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id lghKEyTpWyoYjoe9 for ; Fri, 26 Dec 2008 10:06:24 -0800 (PST) Received: from Liberator.local (h187.172.16.98.dynamic.ip.windstream.net [98.16.172.187]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id 0A6B6A9ABD8; Fri, 26 Dec 2008 11:10:51 -0600 (CST) Message-ID: <49551019.7030802@sandeen.net> Date: Fri, 26 Dec 2008 11:10:49 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Justin Piszcz CC: xfs@oss.sgi.com, esandeen@redhat.com, Alan Piszcz X-ASG-Orig-Subj: Re: xfs_db 2.9.8: coredump Subject: Re: xfs_db 2.9.8: coredump References: In-Reply-To: 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: 1230314784 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.13694 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8801/Thu Dec 25 19:02:43 2008 on oss.sgi.com X-Virus-Status: Clean Justin Piszcz wrote: > # xfs_db -V > xfs_db version 2.9.8 > > p34:~# xfs_db -c frag -f /dev/sda1 > Segmentation fault (core dumped) > p34:~# xfs_db -c frag -r /dev/sda1 > Segmentation fault (core dumped) > > (It was working BEFORE I ran xfs_fsr on it, it was at 16% fragmentation). > > Now it can no longer check it? > > =============================================================================== > > Program terminated with signal 11, Segmentation fault. > [New process 11346] > (gdb) bt > #0 0x00007f6a67c8c3e0 in ?? () from /lib/libc.so.6 > #1 0x00007f6a67c8b43a in memmove () from /lib/libc.so.6 > #2 0x0000000000403f2e in ?? () > #3 0x0000000000412ff1 in ?? () > #4 0x00000000004129cb in ?? () > #5 0x0000000000413392 in ?? () please run against a debug binary so we can get useful info... If this was on fedora, just install the matching xfsprogs-debuginfo package. -Eric From jpiszcz@lucidpixels.com Fri Dec 26 12:11:23 2008 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_45 autolearn=unavailable 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 mBQIBN3B007306 for ; Fri, 26 Dec 2008 12:11:23 -0600 X-ASG-Debug-ID: 1230315082-4430019f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 074174AC92 for ; Fri, 26 Dec 2008 10:11:22 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id 8GIIL5w0wDBYURfb for ; Fri, 26 Dec 2008 10:11:22 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 65A9EC5F0; Fri, 26 Dec 2008 12:45:52 -0500 (EST) Date: Fri, 26 Dec 2008 12:45:52 -0500 (EST) From: Justin Piszcz To: Eric Sandeen cc: xfs@oss.sgi.com, esandeen@redhat.com, Alan Piszcz X-ASG-Orig-Subj: Re: xfs_db 2.9.8: coredump Subject: Re: xfs_db 2.9.8: coredump In-Reply-To: <49551073.5090704@redhat.com> Message-ID: References: <49551073.5090704@redhat.com> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1230315083 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.13694 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8801/Thu Dec 25 19:02:43 2008 on oss.sgi.com X-Virus-Status: Clean On Fri, 26 Dec 2008, Eric Sandeen wrote: > Justin Piszcz wrote: >> # xfs_db -V >> xfs_db version 2.9.8 >> >> p34:~# xfs_db -c frag -f /dev/sda1 >> Segmentation fault (core dumped) >> p34:~# xfs_db -c frag -r /dev/sda1 >> Segmentation fault (core dumped) >> >> (It was working BEFORE I ran xfs_fsr on it, it was at 16% fragmentation). >> >> Now it can no longer check it? >> > > Or, get an xfs_metadump of the fs and see if db segfaults on that too. > > I'd be curious to know if xfs_repair -n flaggs any problems, as well. > > -Eric > # xfs_metadump -g /dev/sda1 /root/sda1.metadump Copied 300096 of 426176 inodes (0 of 12 AGs) Copying log # p34:~# xfs_db -c frag -f sda1.metadump xfs_db: unexpected XFS SB magic number 0x5846534d xfs_db: read failed: Invalid argument xfs_db: data size check failed cache_node_purge: refcount was 1, not zero (node=0x1ce4b80) xfs_db: cannot read root inode (22) cache_node_purge: refcount was 1, not zero (node=0x1ce4cd0) xfs_db: cannot read realtime bitmap inode (22) Segmentation fault (core dumped) p34:~# p34:~# xfs_repair -n /dev/sda1 Phase 1 - find and verify superblock... Phase 2 - using internal log - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan (but don't clear) agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - agno = 4 - agno = 5 - agno = 6 - agno = 7 - agno = 8 - agno = 9 - agno = 10 - agno = 11 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 0 - agno = 2 - agno = 1 - agno = 3 - agno = 4 - agno = 5 - agno = 6 - agno = 7 - agno = 8 - agno = 9 - agno = 10 - agno = 11 No modify flag set, skipping phase 5 Phase 6 - check inode connectivity... - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ... Phase 7 - verify link counts... No modify flag set, skipping filesystem flush and exiting. p34:~# Again, unmount / remount, no issues. p34:~# umount /r1 p34:~# mount -a ; dmesg | tail -n 2 [264025.739788] XFS mounting filesystem sda1 [264025.836900] Ending clean XFS mount for filesystem: sda1 p34:~# But xfs_db dies, on the metadump file as well. From jpiszcz@lucidpixels.com Fri Dec 26 12:16:23 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_84 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 mBQIGNAp008420 for ; Fri, 26 Dec 2008 12:16:23 -0600 X-ASG-Debug-ID: 1230315382-443001e90000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D32204AE82 for ; Fri, 26 Dec 2008 10:16:22 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id YhLyg9Gb6CDbeqhq for ; Fri, 26 Dec 2008 10:16:22 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 1EB6E18B1A8; Thu, 25 Dec 2008 17:53:47 -0500 (EST) Date: Thu, 25 Dec 2008 17:53:46 -0500 (EST) From: Justin Piszcz To: linux-kernel@vger.kernel.org cc: linux-raid@vger.kernel.org, bug-parted@gnu.org, ataraid-list@redhat.com, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: How do I tell if my partition is aligned for a 64k/RAID-6? Subject: Re: How do I tell if my partition is aligned for a 64k/RAID-6? In-Reply-To: Message-ID: References: User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1230315382 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.61 X-Barracuda-Spam-Status: No, SCORE=-1.61 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13694 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: X-Virus-Scanned: ClamAV 0.91.2/8801/Thu Dec 25 19:02:43 2008 on oss.sgi.com X-Virus-Status: Clean On Thu, 25 Dec 2008, Justin Piszcz wrote: > Output: > > =============================================================================== > > p34:~# parted /dev/sda print unit s print unit chs print > Model: AMCC 9650SE-16M DISK (scsi) > Disk /dev/sda: 13.0TB > Sector size (logical/physical): 512B/512B > Partition Table: gpt > > Number Start End Size File system Name Flags > 1 17.4kB 13.0TB 13.0TB xfs > > Model: AMCC 9650SE-16M DISK (scsi) > Disk /dev/sda: 25390350336s > Sector size (logical/physical): 512B/512B > Partition Table: gpt > > Number Start End Size File system Name Flags > 1 34s 25390350302s 25390350269s xfs > > Model: AMCC 9650SE-16M DISK (scsi) > Disk /dev/sda: 1580476,53,56 > Sector size (logical/physical): 512B/512B > BIOS cylinder,head,sector geometry: 1580476,255,63. Each cylinder is 8225kB. > Partition Table: gpt > > Number Start End File system Name Flags > 1 0,0,34 1580476,53,23 xfs > > p34:~# > > =============================================================================== > > I created a partition from 0Gb to 13T on the following LUN, but how do I > verify this is aligned to the (hardware) 64KiB raid-6 array? > > Unit UnitType Status %RCmpl %V/I/M Stripe Size(GB) Cache AVrfy > ------------------------------------------------------------------------------ > u0 RAID-6 OK - - 64K 12107.1 ON ON > > =============================================================================== > > p34:~# xfs_info /dev/sda1 > meta-data=/dev/sda1 isize=256 agcount=12, agsize=268435455 > blks > = sectsz=512 attr=2 > data = bsize=4096 blocks=3173793783, imaxpct=5 > = sunit=0 swidth=0 blks > naming =version 2 bsize=4096 > log =internal bsize=4096 blocks=32768, version=2 > = sectsz=512 sunit=0 blks, lazy-count=0 > realtime =none extsz=4096 blocks=0, rtextents=0 > > =============================================================================== > > I am not worried about the filesystem as the defaults usually get it right > but with parted, this is the first time I had to use it for home use and with > RAID-6 I am noticing slower performance with 15 disks (1 is a spare) in > RAID-6 (albeit slower 7200 ones, RE3s) than I was getting with 10 raptor150s > in RAID-6 (but I had used fdisk there). > > Justin. > > Problem was barriers were enabled, that is why everything was slow but I would still like to know about the alignment. Justin. From jpiszcz@lucidpixels.com Fri Dec 26 12:30:52 2008 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=unavailable 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 mBQIUqGZ009049 for ; Fri, 26 Dec 2008 12:30:52 -0600 X-ASG-Debug-ID: 1230316251-613800da0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 010FF4ADE5 for ; Fri, 26 Dec 2008 10:30:51 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id tFVX8HEz0SEYX3Fo for ; Fri, 26 Dec 2008 10:30:51 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 0D9F3312910; Thu, 25 Dec 2008 18:46:38 -0500 (EST) Date: Thu, 25 Dec 2008 18:46:37 -0500 (EST) From: Justin Piszcz To: Michal Soltys cc: linux-raid@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: How do I tell if my partition is aligned for a 64k/RAID-6? Subject: Re: How do I tell if my partition is aligned for a 64k/RAID-6? In-Reply-To: <495410F4.5010508@ziu.info> Message-ID: References: <495410F4.5010508@ziu.info> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1230316252 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.61 X-Barracuda-Spam-Status: No, SCORE=-1.61 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13696 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: X-Virus-Scanned: ClamAV 0.91.2/8801/Thu Dec 25 19:02:43 2008 on oss.sgi.com X-Virus-Status: Clean On Fri, 26 Dec 2008, Michal Soltys wrote: >> >> I am not worried about the filesystem as the defaults usually get it right >> but with parted, this is the first time I had to use it for home use and >> with RAID-6 I am noticing slower performance with 15 disks (1 is a spare) >> in RAID-6 (albeit slower 7200 ones, RE3s) than I was getting with 10 >> raptor150s in RAID-6 (but I had used fdisk there). >> >> Justin. >> > > For best effect - partition should start at 1920th sector (stripe width > boundary), and su/sw should be appropriately set - su=64k,sw=13 in your > case. Parted shows the values normally - from the beginning of the volume, 0 > based. > > > ps. > > I dropped some of CCs. Thanks. From jpiszcz@lucidpixels.com Fri Dec 26 12:51:23 2008 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,DATE_IN_PAST_03_06, J_CHICKENPOX_44 autolearn=unavailable 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 mBQIpNqD010037 for ; Fri, 26 Dec 2008 12:51:23 -0600 X-ASG-Debug-ID: 1230317482-59cf036b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B318E4AED3 for ; Fri, 26 Dec 2008 10:51:22 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id MIuRxG72MEyJx4Mb for ; Fri, 26 Dec 2008 10:51:22 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 1CF2C2E6276; Fri, 26 Dec 2008 09:36:55 -0500 (EST) Date: Fri, 26 Dec 2008 09:36:55 -0500 (EST) From: Justin Piszcz To: xfs@oss.sgi.com cc: esandeen@redhat.com, Alan Piszcz X-ASG-Orig-Subj: xfs_db 2.9.8: coredump Subject: xfs_db 2.9.8: coredump Message-ID: User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1230317482 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: 0.19 X-Barracuda-Spam-Status: No, SCORE=0.19 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE7568M, DATE_IN_PAST_03_06, URI_HEX X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13698 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.39 DATE_IN_PAST_03_06 Date: is 3 to 6 hours before Received: date 0.32 URI_HEX URI: URI hostname has long hexadecimal sequence 0.50 BSF_RULE7568M Custom Rule 7568M X-Virus-Scanned: ClamAV 0.91.2/8801/Thu Dec 25 19:02:43 2008 on oss.sgi.com X-Virus-Status: Clean # xfs_db -V xfs_db version 2.9.8 p34:~# xfs_db -c frag -f /dev/sda1 Segmentation fault (core dumped) p34:~# xfs_db -c frag -r /dev/sda1 Segmentation fault (core dumped) (It was working BEFORE I ran xfs_fsr on it, it was at 16% fragmentation). Now it can no longer check it? =============================================================================== Program terminated with signal 11, Segmentation fault. [New process 11346] (gdb) bt #0 0x00007f6a67c8c3e0 in ?? () from /lib/libc.so.6 #1 0x00007f6a67c8b43a in memmove () from /lib/libc.so.6 #2 0x0000000000403f2e in ?? () #3 0x0000000000412ff1 in ?? () #4 0x00000000004129cb in ?? () #5 0x0000000000413392 in ?? () #6 0x0000000000413833 in ?? () #7 0x0000000000412af3 in ?? () #8 0x0000000000413933 in ?? () #9 0x0000000000412af3 in ?? () #10 0x0000000000412d81 in ?? () #11 0x0000000000414af6 in ?? () #12 0x00007f6a67c2d1a6 in __libc_start_main () from /lib/libc.so.6 #13 0x0000000000402839 in ?? () #14 0x00007fff709e46a8 in ?? () #15 0x000000000000001c in ?? () #16 0x0000000000000005 in ?? () #17 0x00007fff709e5eb3 in ?? () #18 0x00007fff709e5eba in ?? () #19 0x00007fff709e5ebd in ?? () #20 0x00007fff709e5ec2 in ?? () #21 0x00007fff709e5ec5 in ?? () #22 0x0000000000000000 in ?? () (gdb) q p34:~# =============================================================================== [251994.093918] xfs_db[11095]: segfault at c40ff8 ip 00007f1a990a53e0 sp 00007fffa1dff608 error 4 in libc-2.7.so[7f1a99028000+14a000] [252342.441918] xfs_db[11335]: segfault at eb2ff8 ip 00007fd8263cc3e0 sp 00007fff2f1258f8 error 4 in libc-2.7.so[7fd82634f000+14a000] [252349.502317] xfs_db[11337]: segfault at fa5ff8 ip 00007f77340dc3e0 sp 00007fff3ce34608 error 4 in libc-2.7.so[7f773405f000+14a000] [252381.346221] xfs_db[11346]: segfault at 1c71ff8 ip 00007f6a67c8c3e0 sp 00007fff709e41b8 error 4 in libc-2.7.so[7f6a67c0f000+14a000] [252388.659308] xfs_db[11348]: segfault at 18caff8 ip 00007f2e0f0f93e0 sp 00007fff17e53628 error 4 in libc-2.7.so[7f2e0f07c000+14a000] =============================================================================== The end of the strace for xfs_db -c frag -r /dev/sda1: read(4, "IN\0\0\2\2\0\0\0\0\3\350\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2I"..., 1 6384) = 16384 lseek(4, 377470976, SEEK_SET) = 377470976 read(4, "IN\0\0\2\2\0\0\0\0\3\350\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2I"..., 1 6384) = 16384 lseek(4, 4711120683008, SEEK_SET) = 4711120683008 read(4, "BMAP\0\0\0+\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377 \377\0\0\0\0\0\0\0\0\0"..., 4096) = 4096 lseek(4, 377520128, SEEK_SET) = 377520128 read(4, "IN\0\0\2\2\0\0\0\0\3\350\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\nI"..., 1 6384) = 16384 lseek(4, 4711209119744, SEEK_SET) = 4711209119744 read(4, "BMAP\0\0\0=\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377 \377\0\0\0\0\0\0\0\0\0"..., 4096) = 4096 lseek(4, 1480579043328, SEEK_SET) = 1480579043328 read(4, "BMAP\0\0\0/\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377 \377\0\0\0\0\0\0\0\0\0"..., 4096) = 4096 lseek(4, 377552896, SEEK_SET) = 377552896 read(4, "IN\0\0\2\2\0\0\0\0\3\350\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\7I"..., 1 6384) = 16384 lseek(4, 377610240, SEEK_SET) = 377610240 read(4, "IN\0\0\2\2\0\0\0\0\3\350\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3I"..., 1 6384) = 16384 lseek(4, 377675776, SEEK_SET) = 377675776 read(4, "IN\201\244\2\2\0\0\0\0\3\350\0\0\0d\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\5H".. ., 16384) = 16384 lseek(4, 377724928, SEEK_SET) = 377724928 read(4, "IN\0\0\2\2\0\0\0\0\3\350\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6I"..., 1 6384) = 16384 lseek(4, 377757696, SEEK_SET) = 377757696 read(4, "IN\0\0\2\2\0\0\0\0\3\350\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10I"..., 16384) = 16384 lseek(4, 377798656, SEEK_SET) = 377798656 read(4, "IN\0\0\2\2\0\0\0\0\3\350\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\7I"..., 1 6384) = 16384 lseek(4, 377823232, SEEK_SET) = 377823232 read(4, "IN\0\0\2\2\0\0\0\0\3\350\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10I"..., 16384) = 16384 lseek(4, 377856000, SEEK_SET) = 377856000 read(4, "IN\201\244\2\2\0\0\0\0\3\350\0\0\0d\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\6H".. ., 16384) = 16384 lseek(4, 1487440093184, SEEK_SET) = 1487440093184 read(4, "BMAP\0\0\0\31\377\377\377\377\377\377\377\377\377\377\377\377\377\377\3 77\377\0\0\0\0\0\0\0\0\0"..., 4096) = 4096 lseek(4, 377896960, SEEK_SET) = 377896960 read(4, "IN\0\0\2\2\0\0\0\0\3\350\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\7I"..., 1 6384) = 16384 lseek(4, 377921536, SEEK_SET) = 377921536 read(4, "IN\201\244\2\2\0\0\0\0\3\350\0\0\0d\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\5I".. ., 16384) = 16384 lseek(4, 377946112, SEEK_SET) = 377946112 read(4, "IN\0\0\2\2\0\0\0\0\3\350\0\0\0d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2I"..., 1 6384) = 16384 lseek(4, 1488025448448, SEEK_SET) = 1488025448448 read(4, "\354j8\243\207$\351\334e\232\5o<8\366y\255\350\215\340R\234`\5\332\247\ 22\326\7D%c\214"..., 4096) = 4096 brk(0x2516000) = 0x2516000 brk(0x250a000) = 0x250a000 mmap(NULL, 188416, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7 fe1d1554000 brk(0x24fd000) = 0x24fd000 --- SIGSEGV (Segmentation fault) @ 0 (0) --- +++ killed by SIGSEGV (core dumped) +++ From sandeen@redhat.com Fri Dec 26 12:36:42 2008 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 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 mBQIagTE009562 for ; Fri, 26 Dec 2008 12:36:42 -0600 X-ASG-Debug-ID: 1230316600-621d000f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.redhat.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 95008178C84D for ; Fri, 26 Dec 2008 10:36:40 -0800 (PST) Received: from mx2.redhat.com (mx2.redhat.com [66.187.237.31]) by cuda.sgi.com with ESMTP id JVGPFvptEU7ZGAC3 for ; Fri, 26 Dec 2008 10:36:40 -0800 (PST) Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id mBQHCMeA016902; Fri, 26 Dec 2008 12:12:22 -0500 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id mBQHCLAh014687; Fri, 26 Dec 2008 12:12:21 -0500 Received: from Liberator.local (sebastian-int.corp.redhat.com [172.16.52.221]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id mBQHCKVw028964; Fri, 26 Dec 2008 12:12:20 -0500 Message-ID: <49551073.5090704@redhat.com> Date: Fri, 26 Dec 2008 11:12:19 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Justin Piszcz CC: xfs@oss.sgi.com, esandeen@redhat.com, Alan Piszcz X-ASG-Orig-Subj: Re: xfs_db 2.9.8: coredump Subject: Re: xfs_db 2.9.8: coredump References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.58 on 172.16.27.26 X-Barracuda-Connect: mx2.redhat.com[66.187.237.31] X-Barracuda-Start-Time: 1230316601 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.13696 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8801/Thu Dec 25 19:02:43 2008 on oss.sgi.com X-Virus-Status: Clean Justin Piszcz wrote: > # xfs_db -V > xfs_db version 2.9.8 > > p34:~# xfs_db -c frag -f /dev/sda1 > Segmentation fault (core dumped) > p34:~# xfs_db -c frag -r /dev/sda1 > Segmentation fault (core dumped) > > (It was working BEFORE I ran xfs_fsr on it, it was at 16% fragmentation). > > Now it can no longer check it? > Or, get an xfs_metadump of the fs and see if db segfaults on that too. I'd be curious to know if xfs_repair -n flaggs any problems, as well. -Eric From jpiszcz@lucidpixels.com Fri Dec 26 13:11:23 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DATE_IN_PAST_06_12 autolearn=unavailable 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 mBQJBNM7011189 for ; Fri, 26 Dec 2008 13:11:23 -0600 X-ASG-Debug-ID: 1230318682-6e5002a30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B67844AD90 for ; Fri, 26 Dec 2008 11:11:22 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id Kx1YEMHniGBlFkvG for ; Fri, 26 Dec 2008 11:11:22 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 8FC8E322006; Fri, 26 Dec 2008 04:07:19 -0500 (EST) Date: Fri, 26 Dec 2008 04:07:19 -0500 (EST) From: Justin Piszcz To: David Lethe cc: linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com, smartmontools-support@lists.sourceforge.net, Alan Piszcz X-ASG-Orig-Subj: RE: mismatch_cnt, random bitflips, silent corruption(?), mdadm/sw raid[156] Subject: RE: mismatch_cnt, random bitflips, silent corruption(?), mdadm/sw raid[156] In-Reply-To: Message-ID: References: User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1230318682 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: -0.17 X-Barracuda-Spam-Status: No, SCORE=-0.17 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=DATE_IN_PAST_06_12 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13698 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.85 DATE_IN_PAST_06_12 Date: is 6 to 12 hours before Received: date X-Virus-Scanned: ClamAV 0.91.2/8801/Thu Dec 25 19:02:43 2008 on oss.sgi.com X-Virus-Status: Clean On Thu, 25 Dec 2008, David Lethe wrote: >> -----Original Message----- >> From: linux-raid-owner@vger.kernel.org [mailto:linux-raid- >> >> Other options? >> >> How do others maintain data integrity? Just not worry about it until >> you have >> to, rely on backups.. or? >> >> Justin. > > 4GB files using gpg and tar in the '90s? Sorry, to clarify they were ~650-700MiB tars but combined to around a ~4GiB file later on (from the late 90s), CD's were cheap and yeah 2GiB limit. But later on to consolidate I moved them to 4GiB DVDs and thus tarred them together and then gpg on top of that. > I know gpg had 2GB file-related bugs as late as 2005 that caused corruption, and > there was a heck of a lot of 2GB-related bugs in 2.2 and 2.4 kernels which you > must have been running back then. You are also using later versions of these > programs on the new systems, and I'd be willing to bet they compound the problem by > assuming there was no corruption to begin with. Once I restored the data from DVDs, I was able to restore *all* data successfully. > > I use: > - gzipped tar archives, but I gzip the individual files, rather than the tarball. That way > any compression-related bugs are limited to a single file. I copy them to DVDs. That works as well, but are they your regular files gzipped, no encryption? > > - For online/nearline, I now use a ZFS, but on a native Solaris system that functions as my primary > NFS/CIFS/iSCSI server with and a ZFS software-RAID based file system. I am profoundly impressed with > it, and when they release the deduplication enhancement for ZFS, I'll adopt it and won't have to buy > any more DVDs, except for offsite archiving purposes. Wow, I did not know ZFS had plans for de-dupe!! I will have to look into this, thanks for the info. Justin. From sandeen@sandeen.net Fri Dec 26 13:19:13 2008 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 mBQJJCJe011633 for ; Fri, 26 Dec 2008 13:19:13 -0600 X-ASG-Debug-ID: 1230319151-621d03570000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 12EAF1BF68EF for ; Fri, 26 Dec 2008 11:19:11 -0800 (PST) Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id QSY7RsLUxB6aG5FG for ; Fri, 26 Dec 2008 11:19:11 -0800 (PST) Received: from Liberator.local (h148.37.19.98.dynamic.ip.windstream.net [98.19.37.148]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id 7D878A81D5D; Fri, 26 Dec 2008 13:18:39 -0600 (CST) Message-ID: <49552E0D.1030809@sandeen.net> Date: Fri, 26 Dec 2008 13:18:37 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Justin Piszcz CC: Eric Sandeen , Alan Piszcz , esandeen@redhat.com, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_db 2.9.8: coredump Subject: Re: xfs_db 2.9.8: coredump References: <49551073.5090704@redhat.com> In-Reply-To: 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: 1230319152 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.13698 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8801/Thu Dec 25 19:02:43 2008 on oss.sgi.com X-Virus-Status: Clean Justin Piszcz wrote: > > On Fri, 26 Dec 2008, Eric Sandeen wrote: >> Or, get an xfs_metadump of the fs and see if db segfaults on that too. >> >> I'd be curious to know if xfs_repair -n flaggs any problems, as well. >> >> -Eric >> > > # xfs_metadump -g /dev/sda1 /root/sda1.metadump > Copied 300096 of 426176 inodes (0 of 12 AGs) > Copying log > # > > p34:~# xfs_db -c frag -f sda1.metadump > xfs_db: unexpected XFS SB magic number 0x5846534d > xfs_db: read failed: Invalid argument > xfs_db: data size check failed > cache_node_purge: refcount was 1, not zero (node=0x1ce4b80) > xfs_db: cannot read root inode (22) > cache_node_purge: refcount was 1, not zero (node=0x1ce4cd0) > xfs_db: cannot read realtime bitmap inode (22) > Segmentation fault (core dumped) well, you have to xfs_mdrestore that to a sparse file before pointing db at it for it to be valid (still, should not dump). -Eric From SRS0+90246323cc7b9ee99d18+1951+infradead.org+hch@bombadil.srs.infradead.org Fri Dec 26 13:55:11 2008 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=unavailable 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 mBQJtAB7013099 for ; Fri, 26 Dec 2008 13:55:11 -0600 X-ASG-Debug-ID: 1230321309-0f19031c0000-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 3EEE01BF6936 for ; Fri, 26 Dec 2008 11:55:09 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id C0mtBvRMEc3yN125 for ; Fri, 26 Dec 2008 11:55:09 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LGIm2-0002i0-Ot; Fri, 26 Dec 2008 19:55:06 +0000 Date: Fri, 26 Dec 2008 14:55:06 -0500 From: Christoph Hellwig To: Andreas Gruenbacher , Nathan Scott , xfs@oss.sgi.com X-ASG-Orig-Subj: new acl tarball release? Subject: new acl tarball release? Message-ID: <20081226195506.GA4173@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: 1230321309 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8801/Thu Dec 25 19:02:43 2008 on oss.sgi.com X-Virus-Status: Clean The current acl 2.2.47 release has a quite nasty bug about following symlinks, which is already fixes in the current ptools/cvs/git tree: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=499076 http://oss.sgi.com/bugzilla/show_bug.cgi?id=790 Any chance we can put out a 2.2.48 release with that fix so that the broken version doesn't end up in distros? The oss bugzilla also has another patch that needs reviewing. AFAICS the same problems symlink walking code is also used in attr, so it could use an update, too. From jeffpc@josefsipek.net Sat Dec 27 07:38:28 2008 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_43 autolearn=unavailable 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 mBRDcQLb022027 for ; Sat, 27 Dec 2008 07:38:26 -0600 X-ASG-Debug-ID: 1230385105-6a3001780000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from josefsipek.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2DB1C4A20E for ; Sat, 27 Dec 2008 05:38:25 -0800 (PST) Received: from josefsipek.net (josefsipek.net [141.211.133.196]) by cuda.sgi.com with ESMTP id JCnaY7o9ffiXGA0w for ; Sat, 27 Dec 2008 05:38:25 -0800 (PST) Received: by josefsipek.net (Postfix, from userid 1000) id CA11C1C0013A; Sat, 27 Dec 2008 08:38:24 -0500 (EST) Date: Sat, 27 Dec 2008 08:38:24 -0500 From: "Josef 'Jeff' Sipek" To: Justin Piszcz Cc: Michal Soltys , linux-raid@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: How do I tell if my partition is aligned for a 64k/RAID-6? Subject: Re: How do I tell if my partition is aligned for a 64k/RAID-6? Message-ID: <20081227133824.GH6284@josefsipek.net> References: <495410F4.5010508@ziu.info> 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: josefsipek.net[141.211.133.196] X-Barracuda-Start-Time: 1230385106 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.61 X-Barracuda-Spam-Status: No, SCORE=-1.61 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13764 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: X-Virus-Scanned: ClamAV 0.91.2/8802/Fri Dec 26 22:59:54 2008 on oss.sgi.com X-Virus-Status: Clean On Thu, Dec 25, 2008 at 06:46:37PM -0500, Justin Piszcz wrote: > On Fri, 26 Dec 2008, Michal Soltys wrote: > >> I am not worried about the filesystem as the defaults usually get it right > >> but with parted, this is the first time I had to use it for home use and > >> with RAID-6 I am noticing slower performance with 15 disks (1 is a spare) > >> in RAID-6 (albeit slower 7200 ones, RE3s) than I was getting with 10 > >> raptor150s in RAID-6 (but I had used fdisk there). > >> > >> Justin. > >> > > > > For best effect - partition should start at 1920th sector (stripe width > > boundary), and su/sw should be appropriately set - su=64k,sw=13 in your > > case. Parted shows the values normally - from the beginning of the volume, 0 > > based. > > > > > > ps. > > > > I dropped some of CCs. > > Thanks. It looks like you made why big partition. Why bother with partitioning at all? If you just use the whole device, you _will_ be aligned properly if you tell mkfs.xfs about the stripe unit/width. Josef 'Jeff' Sipek. -- All science is either physics or stamp collecting. - Ernest Rutherford From jpiszcz@lucidpixels.com Sat Dec 27 07:53:23 2008 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_43 autolearn=unavailable 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 mBRDrNeq022567 for ; Sat, 27 Dec 2008 07:53:23 -0600 X-ASG-Debug-ID: 1230386001-39aa02870000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id CA13FA594A3 for ; Sat, 27 Dec 2008 05:53:21 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id LEHeZGtZKBGXPBwm for ; Sat, 27 Dec 2008 05:53:21 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 43602C773; Sat, 27 Dec 2008 08:53:21 -0500 (EST) Date: Sat, 27 Dec 2008 08:53:21 -0500 (EST) From: Justin Piszcz To: "Josef 'Jeff' Sipek" cc: Michal Soltys , linux-raid@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: How do I tell if my partition is aligned for a 64k/RAID-6? Subject: Re: How do I tell if my partition is aligned for a 64k/RAID-6? In-Reply-To: <20081227133824.GH6284@josefsipek.net> Message-ID: References: <495410F4.5010508@ziu.info> <20081227133824.GH6284@josefsipek.net> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1230386002 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.61 X-Barracuda-Spam-Status: No, SCORE=-1.61 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13765 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: X-Virus-Scanned: ClamAV 0.91.2/8802/Fri Dec 26 22:59:54 2008 on oss.sgi.com X-Virus-Status: Clean On Sat, 27 Dec 2008, Josef 'Jeff' Sipek wrote: > On Thu, Dec 25, 2008 at 06:46:37PM -0500, Justin Piszcz wrote: >> On Fri, 26 Dec 2008, Michal Soltys wrote: >>>> I am not worried about the filesystem as the defaults usually get it right >>>> but with parted, this is the first time I had to use it for home use and >>>> with RAID-6 I am noticing slower performance with 15 disks (1 is a spare) >>>> in RAID-6 (albeit slower 7200 ones, RE3s) than I was getting with 10 >>>> raptor150s in RAID-6 (but I had used fdisk there). >>>> >>>> Justin. >>>> >>> >>> For best effect - partition should start at 1920th sector (stripe width >>> boundary), and su/sw should be appropriately set - su=64k,sw=13 in your >>> case. Parted shows the values normally - from the beginning of the volume, 0 >>> based. >>> >>> >>> ps. >>> >>> I dropped some of CCs. >> >> Thanks. > > It looks like you made why big partition. Why bother with partitioning at > all? If you just use the whole device, you _will_ be aligned properly if you > tell mkfs.xfs about the stripe unit/width. > > Josef 'Jeff' Sipek. Why bother partitioning? I also run a Linux SW RAID1 on the host, as you know the drive letters can change when working on a server. Example: Before I created the array (RAID-6), my disks were /dev/sda, /dev/sdb and /dev/sdc (spare), the RAID-6 was /dev/sdd. After reboot, /dev/sdd became /dev/sda and /dev/sd[a-c] became /dev/sd[b-d]. In lilo.conf I had: raid-extra-boot="/dev/sda,/dev/sdb" If I ran LILO and forgot to fix the lilo.conf to reflect the new drive mappings: raid-extra-boot="/dev/sdb,/dev/sdc" I could be at risk of ruining the partition? I try to avoid such situations when possible, to be safe. Justin. From jeffpc@josefsipek.net Sat Dec 27 07:58:24 2008 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 mBRDwOHC022854 for ; Sat, 27 Dec 2008 07:58:24 -0600 X-ASG-Debug-ID: 1230386303-57d9018f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from josefsipek.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A64A5A5957B for ; Sat, 27 Dec 2008 05:58:23 -0800 (PST) Received: from josefsipek.net (josefsipek.net [141.211.133.196]) by cuda.sgi.com with ESMTP id j0BBgFTtLa2mJ97m for ; Sat, 27 Dec 2008 05:58:23 -0800 (PST) Received: by josefsipek.net (Postfix, from userid 1000) id E2DF71C0013A; Sat, 27 Dec 2008 08:58:22 -0500 (EST) Date: Sat, 27 Dec 2008 08:58:22 -0500 From: "Josef 'Jeff' Sipek" To: Justin Piszcz Cc: Michal Soltys , linux-raid@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: How do I tell if my partition is aligned for a 64k/RAID-6? Subject: Re: How do I tell if my partition is aligned for a 64k/RAID-6? Message-ID: <20081227135822.GI6284@josefsipek.net> References: <495410F4.5010508@ziu.info> <20081227133824.GH6284@josefsipek.net> 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: josefsipek.net[141.211.133.196] X-Barracuda-Start-Time: 1230386303 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.61 X-Barracuda-Spam-Status: No, SCORE=-1.61 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13765 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: X-Virus-Scanned: ClamAV 0.91.2/8802/Fri Dec 26 22:59:54 2008 on oss.sgi.com X-Virus-Status: Clean On Sat, Dec 27, 2008 at 08:53:21AM -0500, Justin Piszcz wrote: > Why bother partitioning? I also run a Linux SW RAID1 on the host, as you > know the drive letters can change when working on a server. > > Example: Before I created the array (RAID-6), my disks were /dev/sda, > /dev/sdb and /dev/sdc (spare), the RAID-6 was /dev/sdd. After reboot, > /dev/sdd became /dev/sda and /dev/sd[a-c] became /dev/sd[b-d]. > > In lilo.conf I had: > raid-extra-boot="/dev/sda,/dev/sdb" > > If I ran LILO and forgot to fix the lilo.conf to reflect the new drive > mappings: > raid-extra-boot="/dev/sdb,/dev/sdc" > > I could be at risk of ruining the partition? Hrm...interesting point. LILO could mess up the superblock in sector 0. > I try to avoid such situations when possible, to be safe. :) I don't know how LILO would handle it, but I would try to use /dev/disk/by-*/* instead of the rather unstable /dev/sd* names. Just my 0.02 cents. Jeff. -- Keyboard not found! Press F1 to enter Setup From jpiszcz@lucidpixels.com Sat Dec 27 08:05:24 2008 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=unavailable 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 mBRE5O7O023377 for ; Sat, 27 Dec 2008 08:05:24 -0600 X-ASG-Debug-ID: 1230386723-0b4400a20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C1B204A0ED for ; Sat, 27 Dec 2008 06:05:23 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id Svaps6S0d5K3pSIz for ; Sat, 27 Dec 2008 06:05:23 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 3C7E0E2E3; Sat, 27 Dec 2008 09:05:23 -0500 (EST) Date: Sat, 27 Dec 2008 09:05:23 -0500 (EST) From: Justin Piszcz To: "Josef 'Jeff' Sipek" cc: Michal Soltys , linux-raid@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: How do I tell if my partition is aligned for a 64k/RAID-6? Subject: Re: How do I tell if my partition is aligned for a 64k/RAID-6? In-Reply-To: <20081227135822.GI6284@josefsipek.net> Message-ID: References: <495410F4.5010508@ziu.info> <20081227133824.GH6284@josefsipek.net> <20081227135822.GI6284@josefsipek.net> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1230386723 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.61 X-Barracuda-Spam-Status: No, SCORE=-1.61 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13765 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: X-Virus-Scanned: ClamAV 0.91.2/8802/Fri Dec 26 22:59:54 2008 on oss.sgi.com X-Virus-Status: Clean On Sat, 27 Dec 2008, Josef 'Jeff' Sipek wrote: > On Sat, Dec 27, 2008 at 08:53:21AM -0500, Justin Piszcz wrote: >> Why bother partitioning? I also run a Linux SW RAID1 on the host, as you >> know the drive letters can change when working on a server. >> >> Example: Before I created the array (RAID-6), my disks were /dev/sda, >> /dev/sdb and /dev/sdc (spare), the RAID-6 was /dev/sdd. After reboot, >> /dev/sdd became /dev/sda and /dev/sd[a-c] became /dev/sd[b-d]. >> >> In lilo.conf I had: >> raid-extra-boot="/dev/sda,/dev/sdb" >> >> If I ran LILO and forgot to fix the lilo.conf to reflect the new drive >> mappings: >> raid-extra-boot="/dev/sdb,/dev/sdc" >> >> I could be at risk of ruining the partition? > > Hrm...interesting point. LILO could mess up the superblock in sector 0. > >> I try to avoid such situations when possible, to be safe. > > :) > > I don't know how LILO would handle it, but I would try to use > /dev/disk/by-*/* instead of the rather unstable /dev/sd* names. > > Just my 0.02 cents. > > Jeff. Excellent idea. # lilo Added 2.6.27.9-1 Added 2.6.27.10-1 Added 2.6.27.10-2 * The boot record of /dev/md1 has been updated. The boot record of /dev/disk/by-id/scsi-SATA_WDC_WD1500ADFS-_WD-SN####### has been updated. Warning: /dev/disk/by-id/scsi-SATA_WDC_WD1500ADFD-_WD-SN######## is not on the first disk The boot record of /dev/disk/by-id/scsi-SATA_WDC_WD1500ADFD-_WD-SN######## has been updated. Thanks! Justin. From SRS0+86720c11fb911f0daa6b+1953+infradead.org+hch@bombadil.srs.infradead.org Sun Dec 28 13:14:07 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-5.3 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, J_CHICKENPOX_66,J_CHICKENPOX_74,LOCAL_GNU_PATCH autolearn=unavailable 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 mBSJE6tp020218 for ; Sun, 28 Dec 2008 13:14:06 -0600 X-ASG-Debug-ID: 1230491644-4dc100d50000-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 11C431B9FCFE for ; Sun, 28 Dec 2008 11:14:05 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id duOqRveIRTlFJhxF for ; Sun, 28 Dec 2008 11:14:05 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LH14v-0005FH-6n for xfs@oss.sgi.com; Sun, 28 Dec 2008 19:13:33 +0000 Date: Sun, 28 Dec 2008 14:13:33 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/2] fix dentry aliasing issues in open_by_handle Subject: [PATCH 1/2] fix dentry aliasing issues in open_by_handle Message-ID: <20081228191333.GA25289@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: 1230491646 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8805/Sun Dec 28 06:19:37 2008 on oss.sgi.com X-Virus-Status: Clean Open by handle just grabs an inode by handle and then creates itself a dentry for it. While this works for regular files it is horribly broken for directories, where the VFS locking relies on the fact that there is only just one single dentry for a given inode, and that these are always connected to the root of the filesystem so that it's locking algorithms work (see Documentations/filesystems/Locking) Remove all the existing open by handle code and replace it with a small wrapper around the exportfs code which deals with all these issues. At the same time we also make the checks for a valid handle strict enough to reject all not perfectly well formed handles - given that we never hand out others that's okay and simplifies the code. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_ioctl.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_ioctl.c 2008-12-29 01:11:13.000000000 +0000 +++ xfs/fs/xfs/linux-2.6/xfs_ioctl.c 2008-12-29 01:11:14.000000000 +0000 @@ -50,12 +50,14 @@ #include "xfs_vnodeops.h" #include "xfs_quota.h" #include "xfs_inode_item.h" +#include "xfs_export.h" #include #include #include #include #include +#include /* * xfs_find_handle maps from userspace xfs_fsop_handlereq structure to @@ -146,96 +148,64 @@ return error; } +STATIC int +handle_acceptable( + void *context, + struct dentry *dentry) +{ + return 1; +} /* - * Convert userspace handle data into inode. - * - * We use the fact that all the fsop_handlereq ioctl calls have a data - * structure argument whose first component is always a xfs_fsop_handlereq_t, - * so we can pass that sub structure into this handy, shared routine. - * - * If no error, caller must always iput the returned inode. + * Convert userspace handle data into a dentry. */ -STATIC int -xfs_vget_fsop_handlereq( - xfs_mount_t *mp, - struct inode *parinode, /* parent inode pointer */ - xfs_fsop_handlereq_t *hreq, - struct inode **inode) -{ - void __user *hanp; - size_t hlen; - xfs_fid_t *xfid; - xfs_handle_t *handlep; +struct dentry * +xfs_handle_to_dentry( + struct file *parfilp, + void __user *uhandle, + u32 hlen) +{ xfs_handle_t handle; - xfs_inode_t *ip; - xfs_ino_t ino; - __u32 igen; - int error; + struct xfs_fid64 fid; /* * Only allow handle opens under a directory. */ - if (!S_ISDIR(parinode->i_mode)) - return XFS_ERROR(ENOTDIR); - - hanp = hreq->ihandle; - hlen = hreq->ihandlen; - handlep = &handle; - - if (hlen < sizeof(handlep->ha_fsid) || hlen > sizeof(*handlep)) - return XFS_ERROR(EINVAL); - if (copy_from_user(handlep, hanp, hlen)) - return XFS_ERROR(EFAULT); - if (hlen < sizeof(*handlep)) - memset(((char *)handlep) + hlen, 0, sizeof(*handlep) - hlen); - if (hlen > sizeof(handlep->ha_fsid)) { - if (handlep->ha_fid.fid_len != - (hlen - sizeof(handlep->ha_fsid) - - sizeof(handlep->ha_fid.fid_len)) || - handlep->ha_fid.fid_pad) - return XFS_ERROR(EINVAL); - } - - /* - * Crack the handle, obtain the inode # & generation # - */ - xfid = (struct xfs_fid *)&handlep->ha_fid; - if (xfid->fid_len == sizeof(*xfid) - sizeof(xfid->fid_len)) { - ino = xfid->fid_ino; - igen = xfid->fid_gen; - } else { - return XFS_ERROR(EINVAL); - } - - /* - * Get the XFS inode, building a Linux inode to go with it. - */ - error = xfs_iget(mp, NULL, ino, 0, XFS_ILOCK_SHARED, &ip, 0); - if (error) - return error; - if (ip == NULL) - return XFS_ERROR(EIO); - if (ip->i_d.di_gen != igen) { - xfs_iput_new(ip, XFS_ILOCK_SHARED); - return XFS_ERROR(ENOENT); - } + if (!S_ISDIR(parfilp->f_path.dentry->d_inode->i_mode)) + return ERR_PTR(-ENOTDIR); - xfs_iunlock(ip, XFS_ILOCK_SHARED); + if (hlen != sizeof(xfs_handle_t)) + return ERR_PTR(-EINVAL); + if (copy_from_user(&handle, uhandle, hlen)) + return ERR_PTR(-EFAULT); + if (handle.ha_fid.fid_len != + sizeof(handle.ha_fid) - sizeof(handle.ha_fid.fid_len)) + return ERR_PTR(-EINVAL); + + memset(&fid, 0, sizeof(struct fid)); + fid.ino = handle.ha_fid.fid_ino; + fid.gen = handle.ha_fid.fid_gen; + + return exportfs_decode_fh(parfilp->f_path.mnt, (struct fid *)&fid, 3, + FILEID_INO32_GEN | XFS_FILEID_TYPE_64FLAG, + handle_acceptable, NULL); +} - *inode = VFS_I(ip); - return 0; +STATIC struct dentry * +xfs_handlereq_to_dentry( + struct file *parfilp, + xfs_fsop_handlereq_t *hreq) +{ + return xfs_handle_to_dentry(parfilp, hreq->ihandle, hreq->ihandlen); } int xfs_open_by_handle( - xfs_mount_t *mp, - xfs_fsop_handlereq_t *hreq, struct file *parfilp, - struct inode *parinode) + xfs_fsop_handlereq_t *hreq) { int error; - int new_fd; + int fd; int permflag; struct file *filp; struct inode *inode; @@ -244,19 +214,21 @@ if (!capable(CAP_SYS_ADMIN)) return -XFS_ERROR(EPERM); - error = xfs_vget_fsop_handlereq(mp, parinode, hreq, &inode); - if (error) - return -error; + dentry = xfs_handlereq_to_dentry(parfilp, hreq); + if (IS_ERR(dentry)) + return PTR_ERR(dentry); + inode = dentry->d_inode; /* Restrict xfs_open_by_handle to directories & regular files. */ if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode))) { - iput(inode); - return -XFS_ERROR(EINVAL); + error = -XFS_ERROR(EINVAL); + goto out_dput; } #if BITS_PER_LONG != 32 hreq->oflags |= O_LARGEFILE; #endif + /* Put open permission in namei format. */ permflag = hreq->oflags; if ((permflag+1) & O_ACCMODE) @@ -266,50 +238,44 @@ if ((!(permflag & O_APPEND) || (permflag & O_TRUNC)) && (permflag & FMODE_WRITE) && IS_APPEND(inode)) { - iput(inode); - return -XFS_ERROR(EPERM); + error = -XFS_ERROR(EPERM); + goto out_dput; } if ((permflag & FMODE_WRITE) && IS_IMMUTABLE(inode)) { - iput(inode); - return -XFS_ERROR(EACCES); + error = -XFS_ERROR(EACCES); + goto out_dput; } /* Can't write directories. */ - if ( S_ISDIR(inode->i_mode) && (permflag & FMODE_WRITE)) { - iput(inode); - return -XFS_ERROR(EISDIR); + if (S_ISDIR(inode->i_mode) && (permflag & FMODE_WRITE)) { + error = -XFS_ERROR(EISDIR); + goto out_dput; } - if ((new_fd = get_unused_fd()) < 0) { - iput(inode); - return new_fd; + fd = get_unused_fd(); + if (fd < 0) { + error = fd; + goto out_dput; } - dentry = d_obtain_alias(inode); - if (IS_ERR(dentry)) { - put_unused_fd(new_fd); - return PTR_ERR(dentry); - } - - /* Ensure umount returns EBUSY on umounts while this file is open. */ - mntget(parfilp->f_path.mnt); - - /* Create file pointer. */ - filp = dentry_open(dentry, parfilp->f_path.mnt, hreq->oflags); + filp = dentry_open(dentry, mntget(parfilp->f_path.mnt), hreq->oflags); if (IS_ERR(filp)) { - put_unused_fd(new_fd); - return -XFS_ERROR(-PTR_ERR(filp)); + put_unused_fd(fd); + return PTR_ERR(filp); } if (inode->i_mode & S_IFREG) { - /* invisible operation should not change atime */ filp->f_flags |= O_NOATIME; filp->f_mode |= FMODE_NOCMTIME; } - fd_install(new_fd, filp); - return new_fd; + fd_install(fd, filp); + return fd; + + out_dput: + dput(dentry); + return error; } /* @@ -340,11 +306,10 @@ int xfs_readlink_by_handle( - xfs_mount_t *mp, - xfs_fsop_handlereq_t *hreq, - struct inode *parinode) + struct file *parfilp, + xfs_fsop_handlereq_t *hreq) { - struct inode *inode; + struct dentry *dentry; __u32 olen; void *link; int error; @@ -352,26 +317,28 @@ if (!capable(CAP_SYS_ADMIN)) return -XFS_ERROR(EPERM); - error = xfs_vget_fsop_handlereq(mp, parinode, hreq, &inode); - if (error) - return -error; + dentry = xfs_handlereq_to_dentry(parfilp, hreq); + if (IS_ERR(dentry)) + return PTR_ERR(dentry); /* Restrict this handle operation to symlinks only. */ - if (!S_ISLNK(inode->i_mode)) { + if (!S_ISLNK(dentry->d_inode->i_mode)) { error = -XFS_ERROR(EINVAL); - goto out_iput; + goto out_dput; } if (copy_from_user(&olen, hreq->ohandlen, sizeof(__u32))) { error = -XFS_ERROR(EFAULT); - goto out_iput; + goto out_dput; } link = kmalloc(MAXPATHLEN+1, GFP_KERNEL); - if (!link) - goto out_iput; + if (!link) { + error = -XFS_ERROR(ENOMEM); + goto out_dput; + } - error = -xfs_readlink(XFS_I(inode), link); + error = -xfs_readlink(XFS_I(dentry->d_inode), link); if (error) goto out_kfree; error = do_readlink(hreq->ohandle, olen, link); @@ -380,32 +347,31 @@ out_kfree: kfree(link); - out_iput: - iput(inode); + out_dput: + dput(dentry); return error; } STATIC int xfs_fssetdm_by_handle( - xfs_mount_t *mp, - void __user *arg, - struct inode *parinode) + struct file *parfilp, + void __user *arg) { int error; struct fsdmidata fsd; xfs_fsop_setdm_handlereq_t dmhreq; - struct inode *inode; + struct dentry *dentry; if (!capable(CAP_MKNOD)) return -XFS_ERROR(EPERM); if (copy_from_user(&dmhreq, arg, sizeof(xfs_fsop_setdm_handlereq_t))) return -XFS_ERROR(EFAULT); - error = xfs_vget_fsop_handlereq(mp, parinode, &dmhreq.hreq, &inode); - if (error) - return -error; + dentry = xfs_handlereq_to_dentry(parfilp, &dmhreq.hreq); + if (IS_ERR(dentry)) + return PTR_ERR(dentry); - if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) { + if (IS_IMMUTABLE(dentry->d_inode) || IS_APPEND(dentry->d_inode)) { error = -XFS_ERROR(EPERM); goto out; } @@ -415,24 +381,23 @@ goto out; } - error = -xfs_set_dmattrs(XFS_I(inode), fsd.fsd_dmevmask, + error = -xfs_set_dmattrs(XFS_I(dentry->d_inode), fsd.fsd_dmevmask, fsd.fsd_dmstate); out: - iput(inode); + dput(dentry); return error; } STATIC int xfs_attrlist_by_handle( - xfs_mount_t *mp, void __user *arg, - struct inode *parinode) + struct file *parfilp) { - int error; + int error = -ENOMEM; attrlist_cursor_kern_t *cursor; xfs_fsop_attrlist_handlereq_t al_hreq; - struct inode *inode; + struct dentry *dentry; char *kbuf; if (!capable(CAP_SYS_ADMIN)) @@ -448,16 +413,16 @@ if (al_hreq.flags & ~(ATTR_ROOT | ATTR_SECURE)) return -XFS_ERROR(EINVAL); - error = xfs_vget_fsop_handlereq(mp, parinode, &al_hreq.hreq, &inode); - if (error) - goto out; + dentry = xfs_handlereq_to_dentry(parfilp, &al_hreq.hreq); + if (IS_ERR(dentry)) + return PTR_ERR(dentry); kbuf = kmalloc(al_hreq.buflen, GFP_KERNEL); if (!kbuf) - goto out_vn_rele; + goto out_dput; cursor = (attrlist_cursor_kern_t *)&al_hreq.pos; - error = xfs_attr_list(XFS_I(inode), kbuf, al_hreq.buflen, + error = -xfs_attr_list(XFS_I(dentry->d_inode), kbuf, al_hreq.buflen, al_hreq.flags, cursor); if (error) goto out_kfree; @@ -467,10 +432,9 @@ out_kfree: kfree(kbuf); - out_vn_rele: - iput(inode); - out: - return -error; + out_dput: + dput(dentry); + return error; } int @@ -545,15 +509,13 @@ STATIC int xfs_attrmulti_by_handle( - xfs_mount_t *mp, - void __user *arg, struct file *parfilp, - struct inode *parinode) + void __user *arg) { int error; xfs_attr_multiop_t *ops; xfs_fsop_attrmulti_handlereq_t am_hreq; - struct inode *inode; + struct dentry *dentry; unsigned int i, size; char *attr_name; @@ -562,19 +524,19 @@ if (copy_from_user(&am_hreq, arg, sizeof(xfs_fsop_attrmulti_handlereq_t))) return -XFS_ERROR(EFAULT); - error = xfs_vget_fsop_handlereq(mp, parinode, &am_hreq.hreq, &inode); - if (error) - goto out; + dentry = xfs_handlereq_to_dentry(parfilp, &am_hreq.hreq); + if (IS_ERR(dentry)) + return PTR_ERR(dentry); error = E2BIG; size = am_hreq.opcount * sizeof(xfs_attr_multiop_t); if (!size || size > 16 * PAGE_SIZE) - goto out_vn_rele; + goto out_dput; error = ENOMEM; ops = kmalloc(size, GFP_KERNEL); if (!ops) - goto out_vn_rele; + goto out_dput; error = EFAULT; if (copy_from_user(ops, am_hreq.ops, size)) @@ -596,25 +558,28 @@ switch (ops[i].am_opcode) { case ATTR_OP_GET: - ops[i].am_error = xfs_attrmulti_attr_get(inode, - attr_name, ops[i].am_attrvalue, - &ops[i].am_length, ops[i].am_flags); + ops[i].am_error = xfs_attrmulti_attr_get( + dentry->d_inode, attr_name, + ops[i].am_attrvalue, &ops[i].am_length, + ops[i].am_flags); break; case ATTR_OP_SET: ops[i].am_error = mnt_want_write(parfilp->f_path.mnt); if (ops[i].am_error) break; - ops[i].am_error = xfs_attrmulti_attr_set(inode, - attr_name, ops[i].am_attrvalue, - ops[i].am_length, ops[i].am_flags); + ops[i].am_error = xfs_attrmulti_attr_set( + dentry->d_inode, attr_name, + ops[i].am_attrvalue, ops[i].am_length, + ops[i].am_flags); mnt_drop_write(parfilp->f_path.mnt); break; case ATTR_OP_REMOVE: ops[i].am_error = mnt_want_write(parfilp->f_path.mnt); if (ops[i].am_error) break; - ops[i].am_error = xfs_attrmulti_attr_remove(inode, - attr_name, ops[i].am_flags); + ops[i].am_error = xfs_attrmulti_attr_remove( + dentry->d_inode, attr_name, + ops[i].am_flags); mnt_drop_write(parfilp->f_path.mnt); break; default: @@ -628,9 +593,8 @@ kfree(attr_name); out_kfree_ops: kfree(ops); - out_vn_rele: - iput(inode); - out: + out_dput: + dput(dentry); return -error; } @@ -1421,23 +1385,23 @@ if (copy_from_user(&hreq, arg, sizeof(xfs_fsop_handlereq_t))) return -XFS_ERROR(EFAULT); - return xfs_open_by_handle(mp, &hreq, filp, inode); + return xfs_open_by_handle(filp, &hreq); } case XFS_IOC_FSSETDM_BY_HANDLE: - return xfs_fssetdm_by_handle(mp, arg, inode); + return xfs_fssetdm_by_handle(filp, arg); case XFS_IOC_READLINK_BY_HANDLE: { xfs_fsop_handlereq_t hreq; if (copy_from_user(&hreq, arg, sizeof(xfs_fsop_handlereq_t))) return -XFS_ERROR(EFAULT); - return xfs_readlink_by_handle(mp, &hreq, inode); + return xfs_readlink_by_handle(filp, &hreq); } case XFS_IOC_ATTRLIST_BY_HANDLE: - return xfs_attrlist_by_handle(mp, arg, inode); + return xfs_attrlist_by_handle(arg, filp); case XFS_IOC_ATTRMULTI_BY_HANDLE: - return xfs_attrmulti_by_handle(mp, arg, filp, inode); + return xfs_attrmulti_by_handle(filp, arg); case XFS_IOC_SWAPEXT: { struct xfs_swapext sxp; Index: xfs/fs/xfs/linux-2.6/xfs_ioctl.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_ioctl.h 2008-12-29 01:09:51.000000000 +0000 +++ xfs/fs/xfs/linux-2.6/xfs_ioctl.h 2008-12-29 01:11:14.000000000 +0000 @@ -34,16 +34,13 @@ extern int xfs_open_by_handle( - xfs_mount_t *mp, - xfs_fsop_handlereq_t *hreq, struct file *parfilp, - struct inode *parinode); + xfs_fsop_handlereq_t *hreq); extern int xfs_readlink_by_handle( - xfs_mount_t *mp, - xfs_fsop_handlereq_t *hreq, - struct inode *parinode); + struct file *parfilp, + xfs_fsop_handlereq_t *hreq); extern int xfs_attrmulti_attr_get( @@ -67,6 +64,12 @@ char *name, __uint32_t flags); +extern struct dentry * +xfs_handle_to_dentry( + struct file *parfilp, + void __user *uhandle, + u32 hlen); + extern long xfs_file_ioctl( struct file *filp, Index: xfs/fs/xfs/linux-2.6/xfs_ioctl32.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_ioctl32.c 2008-12-29 01:09:51.000000000 +0000 +++ xfs/fs/xfs/linux-2.6/xfs_ioctl32.c 2008-12-29 03:01:34.000000000 +0000 @@ -340,96 +340,24 @@ return 0; } -/* - * Convert userspace handle data into inode. - * - * We use the fact that all the fsop_handlereq ioctl calls have a data - * structure argument whose first component is always a xfs_fsop_handlereq_t, - * so we can pass that sub structure into this handy, shared routine. - * - * If no error, caller must always iput the returned inode. - */ -STATIC int -xfs_vget_fsop_handlereq_compat( - xfs_mount_t *mp, - struct inode *parinode, /* parent inode pointer */ - compat_xfs_fsop_handlereq_t *hreq, - struct inode **inode) +STATIC struct dentry * +xfs_compat_handlereq_to_dentry( + struct file *parfilp, + compat_xfs_fsop_handlereq_t *hreq) { - void __user *hanp; - size_t hlen; - xfs_fid_t *xfid; - xfs_handle_t *handlep; - xfs_handle_t handle; - xfs_inode_t *ip; - xfs_ino_t ino; - __u32 igen; - int error; - - /* - * Only allow handle opens under a directory. - */ - if (!S_ISDIR(parinode->i_mode)) - return XFS_ERROR(ENOTDIR); - - hanp = compat_ptr(hreq->ihandle); - hlen = hreq->ihandlen; - handlep = &handle; - - if (hlen < sizeof(handlep->ha_fsid) || hlen > sizeof(*handlep)) - return XFS_ERROR(EINVAL); - if (copy_from_user(handlep, hanp, hlen)) - return XFS_ERROR(EFAULT); - if (hlen < sizeof(*handlep)) - memset(((char *)handlep) + hlen, 0, sizeof(*handlep) - hlen); - if (hlen > sizeof(handlep->ha_fsid)) { - if (handlep->ha_fid.fid_len != - (hlen - sizeof(handlep->ha_fsid) - - sizeof(handlep->ha_fid.fid_len)) || - handlep->ha_fid.fid_pad) - return XFS_ERROR(EINVAL); - } - - /* - * Crack the handle, obtain the inode # & generation # - */ - xfid = (struct xfs_fid *)&handlep->ha_fid; - if (xfid->fid_len == sizeof(*xfid) - sizeof(xfid->fid_len)) { - ino = xfid->fid_ino; - igen = xfid->fid_gen; - } else { - return XFS_ERROR(EINVAL); - } - - /* - * Get the XFS inode, building a Linux inode to go with it. - */ - error = xfs_iget(mp, NULL, ino, 0, XFS_ILOCK_SHARED, &ip, 0); - if (error) - return error; - if (ip == NULL) - return XFS_ERROR(EIO); - if (ip->i_d.di_gen != igen) { - xfs_iput_new(ip, XFS_ILOCK_SHARED); - return XFS_ERROR(ENOENT); - } - - xfs_iunlock(ip, XFS_ILOCK_SHARED); - - *inode = VFS_I(ip); - return 0; + return xfs_handle_to_dentry(parfilp, + compat_ptr(hreq->ihandle), hreq->ihandlen); } STATIC int xfs_compat_attrlist_by_handle( - xfs_mount_t *mp, - void __user *arg, - struct inode *parinode) + struct file *parfilp, + void __user *arg) { int error; attrlist_cursor_kern_t *cursor; compat_xfs_fsop_attrlist_handlereq_t al_hreq; - struct inode *inode; + struct dentry *dentry; char *kbuf; if (!capable(CAP_SYS_ADMIN)) @@ -446,17 +374,17 @@ if (al_hreq.flags & ~(ATTR_ROOT | ATTR_SECURE)) return -XFS_ERROR(EINVAL); - error = xfs_vget_fsop_handlereq_compat(mp, parinode, &al_hreq.hreq, - &inode); - if (error) - goto out; + dentry = xfs_compat_handlereq_to_dentry(parfilp, &al_hreq.hreq); + if (IS_ERR(dentry)) + return PTR_ERR(dentry); + error = -ENOMEM; kbuf = kmalloc(al_hreq.buflen, GFP_KERNEL); if (!kbuf) - goto out_vn_rele; + goto out_dput; cursor = (attrlist_cursor_kern_t *)&al_hreq.pos; - error = xfs_attr_list(XFS_I(inode), kbuf, al_hreq.buflen, + error = -xfs_attr_list(XFS_I(dentry->d_inode), kbuf, al_hreq.buflen, al_hreq.flags, cursor); if (error) goto out_kfree; @@ -466,22 +394,20 @@ out_kfree: kfree(kbuf); - out_vn_rele: - iput(inode); - out: - return -error; + out_dput: + dput(dentry); + return error; } STATIC int xfs_compat_attrmulti_by_handle( - xfs_mount_t *mp, - void __user *arg, - struct inode *parinode) + struct file *parfilp, + void __user *arg) { int error; compat_xfs_attr_multiop_t *ops; compat_xfs_fsop_attrmulti_handlereq_t am_hreq; - struct inode *inode; + struct dentry *dentry; unsigned int i, size; char *attr_name; @@ -491,20 +417,19 @@ sizeof(compat_xfs_fsop_attrmulti_handlereq_t))) return -XFS_ERROR(EFAULT); - error = xfs_vget_fsop_handlereq_compat(mp, parinode, &am_hreq.hreq, - &inode); - if (error) - goto out; + dentry = xfs_compat_handlereq_to_dentry(parfilp, &am_hreq.hreq); + if (IS_ERR(dentry)) + return PTR_ERR(dentry); error = E2BIG; size = am_hreq.opcount * sizeof(compat_xfs_attr_multiop_t); if (!size || size > 16 * PAGE_SIZE) - goto out_vn_rele; + goto out_dput; error = ENOMEM; ops = kmalloc(size, GFP_KERNEL); if (!ops) - goto out_vn_rele; + goto out_dput; error = EFAULT; if (copy_from_user(ops, compat_ptr(am_hreq.ops), size)) @@ -527,20 +452,21 @@ switch (ops[i].am_opcode) { case ATTR_OP_GET: - ops[i].am_error = xfs_attrmulti_attr_get(inode, - attr_name, + ops[i].am_error = xfs_attrmulti_attr_get( + dentry->d_inode, attr_name, compat_ptr(ops[i].am_attrvalue), &ops[i].am_length, ops[i].am_flags); break; case ATTR_OP_SET: - ops[i].am_error = xfs_attrmulti_attr_set(inode, - attr_name, + ops[i].am_error = xfs_attrmulti_attr_set( + dentry->d_inode, attr_name, compat_ptr(ops[i].am_attrvalue), ops[i].am_length, ops[i].am_flags); break; case ATTR_OP_REMOVE: - ops[i].am_error = xfs_attrmulti_attr_remove(inode, - attr_name, ops[i].am_flags); + ops[i].am_error = xfs_attrmulti_attr_remove( + dentry->d_inode, attr_name, + ops[i].am_flags); break; default: ops[i].am_error = EINVAL; @@ -553,22 +479,20 @@ kfree(attr_name); out_kfree_ops: kfree(ops); - out_vn_rele: - iput(inode); - out: + out_dput: + dput(dentry); return -error; } STATIC int xfs_compat_fssetdm_by_handle( - xfs_mount_t *mp, - void __user *arg, - struct inode *parinode) + struct file *parfilp, + void __user *arg) { int error; struct fsdmidata fsd; compat_xfs_fsop_setdm_handlereq_t dmhreq; - struct inode *inode; + struct dentry *dentry; if (!capable(CAP_MKNOD)) return -XFS_ERROR(EPERM); @@ -576,12 +500,11 @@ sizeof(compat_xfs_fsop_setdm_handlereq_t))) return -XFS_ERROR(EFAULT); - error = xfs_vget_fsop_handlereq_compat(mp, parinode, &dmhreq.hreq, - &inode); - if (error) - return -error; + dentry = xfs_compat_handlereq_to_dentry(parfilp, &dmhreq.hreq); + if (IS_ERR(dentry)) + return PTR_ERR(dentry); - if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) { + if (IS_IMMUTABLE(dentry->d_inode) || IS_APPEND(dentry->d_inode)) { error = -XFS_ERROR(EPERM); goto out; } @@ -591,11 +514,11 @@ goto out; } - error = -xfs_set_dmattrs(XFS_I(inode), fsd.fsd_dmevmask, + error = -xfs_set_dmattrs(XFS_I(dentry->d_inode), fsd.fsd_dmevmask, fsd.fsd_dmstate); out: - iput(inode); + dput(dentry); return error; } @@ -724,21 +647,21 @@ if (xfs_compat_handlereq_copyin(&hreq, arg)) return -XFS_ERROR(EFAULT); - return xfs_open_by_handle(mp, &hreq, filp, inode); + return xfs_open_by_handle(filp, &hreq); } case XFS_IOC_READLINK_BY_HANDLE_32: { struct xfs_fsop_handlereq hreq; if (xfs_compat_handlereq_copyin(&hreq, arg)) return -XFS_ERROR(EFAULT); - return xfs_readlink_by_handle(mp, &hreq, inode); + return xfs_readlink_by_handle(filp, &hreq); } case XFS_IOC_ATTRLIST_BY_HANDLE_32: - return xfs_compat_attrlist_by_handle(mp, arg, inode); + return xfs_compat_attrlist_by_handle(filp, arg); case XFS_IOC_ATTRMULTI_BY_HANDLE_32: - return xfs_compat_attrmulti_by_handle(mp, arg, inode); + return xfs_compat_attrmulti_by_handle(filp, arg); case XFS_IOC_FSSETDM_BY_HANDLE_32: - return xfs_compat_fssetdm_by_handle(mp, arg, inode); + return xfs_compat_fssetdm_by_handle(filp, arg); default: return -XFS_ERROR(ENOIOCTLCMD); } From SRS0+86720c11fb911f0daa6b+1953+infradead.org+hch@bombadil.srs.infradead.org Sun Dec 28 13:14:08 2008 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 mBSJE8Ds020227 for ; Sun, 28 Dec 2008 13:14:08 -0600 X-ASG-Debug-ID: 1230491647-4dbf00f60000-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 B8E811B9FD03 for ; Sun, 28 Dec 2008 11:14:07 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id g5eKkkootSeDC4QM for ; Sun, 28 Dec 2008 11:14:07 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LH14y-0005Fr-Nw for xfs@oss.sgi.com; Sun, 28 Dec 2008 19:13:36 +0000 Date: Sun, 28 Dec 2008 14:13:36 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/2] use mnt_want_write in compat_attrmulti ioctl Subject: [PATCH 2/2] use mnt_want_write in compat_attrmulti ioctl Message-ID: <20081228191336.GB25289@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: 1230491647 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8805/Sun Dec 28 06:19:37 2008 on oss.sgi.com X-Virus-Status: Clean The compat version of the attrmulti ioctl needs to ask for and then later release write access to the mount just like the native version, otherwise we could potentially write to read-only mounts. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_ioctl32.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_ioctl32.c 2008-12-29 01:25:19.000000000 +0000 +++ xfs/fs/xfs/linux-2.6/xfs_ioctl32.c 2008-12-29 01:26:24.000000000 +0000 @@ -17,6 +17,7 @@ */ #include #include +#include #include #include "xfs.h" #include "xfs_fs.h" @@ -458,15 +459,23 @@ &ops[i].am_length, ops[i].am_flags); break; case ATTR_OP_SET: + ops[i].am_error = mnt_want_write(parfilp->f_path.mnt); + if (ops[i].am_error) + break; ops[i].am_error = xfs_attrmulti_attr_set( dentry->d_inode, attr_name, compat_ptr(ops[i].am_attrvalue), ops[i].am_length, ops[i].am_flags); + mnt_drop_write(parfilp->f_path.mnt); break; case ATTR_OP_REMOVE: + ops[i].am_error = mnt_want_write(parfilp->f_path.mnt); + if (ops[i].am_error) + break; ops[i].am_error = xfs_attrmulti_attr_remove( dentry->d_inode, attr_name, ops[i].am_flags); + mnt_drop_write(parfilp->f_path.mnt); break; default: ops[i].am_error = EINVAL; From lultimouomo@gmail.com Sun Dec 28 13:40:58 2008 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 mBSJel9g022119 for ; Sun, 28 Dec 2008 13:40:48 -0600 X-ASG-Debug-ID: 1230493239-611202ee0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail-ew0-f18.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9CF393BE15 for ; Sun, 28 Dec 2008 11:40:40 -0800 (PST) Received: from mail-ew0-f18.google.com (mail-ew0-f18.google.com [209.85.219.18]) by cuda.sgi.com with ESMTP id r1Mxskk6JqY7Fqhj for ; Sun, 28 Dec 2008 11:40:40 -0800 (PST) Received: by ewy11 with SMTP id 11so4424981ewy.20 for ; Sun, 28 Dec 2008 11:40:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:mime-version:content-type; bh=EqOLY9VmQv2IYjNXHuiOXSjr49AIJqoo/gfD6Um5ngQ=; b=v5e1k2+gH3k+JU5D7U3Z7QKlmHRLZzCsZeGdmdaCfXiss5AJjYc6NsuQFstWrm1Vu1 nmcseSN2YEDqwo+o/4KrO71Rx43eqO/3w9MQSJK07SjjRRlXQ08XEWWH5eoFzg2yffMD NFxOe8aPVNdFy6Sik+01jE39Gnx1I50SaY140= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:mime-version:content-type; b=Hxo3H/5aHjpjeN5xicmR8QImV6jiblqTbGU25QyJfak83NWq/owy/A22eJx7d/2QtG 6Ctnv3Jc8a9I16lRJI9D0hW4BQ30ApJsatOdHoo0cm+kBWPIKitJUrYDmDe773ORacfN rsG1JtEgK0VGamzAIjRuX2cCDGHRWC8dKlQrk= Received: by 10.210.41.14 with SMTP id o14mr13729284ebo.22.1230493239025; Sun, 28 Dec 2008 11:40:39 -0800 (PST) Received: by 10.210.117.7 with HTTP; Sun, 28 Dec 2008 11:40:38 -0800 (PST) Message-ID: <4e9568870812281140v603bdc5ax66375576ebd0e353@mail.gmail.com> Date: Sun, 28 Dec 2008 19:40:38 +0000 From: "Luca Niccoli" To: xfs@oss.sgi.com X-ASG-Orig-Subj: Many disconnected inodes after xfs_repair Subject: Many disconnected inodes after xfs_repair MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_94594_8787047.1230493238976" X-Barracuda-Connect: mail-ew0-f18.google.com[209.85.219.18] X-Barracuda-Start-Time: 1230493246 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 X-Virus-Scanned: ClamAV 0.91.2/8805/Sun Dec 28 06:19:37 2008 on oss.sgi.com X-Virus-Status: Clean ------=_Part_94594_8787047.1230493238976 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline I got unreadble sectors on the SSD disk of the brand new netbook I just bought (after after an identical one had been stolen, yeah). Of course this happened just after I spent some days configuring all the bells and whistles, saying "I'll backup right after I've finished". The partition was cleanly unmounted, and on reboot I got a Grub error 17 (it was mounted /) After booting with I USB dongle dumped the partition on an external drive with ddrescue -r5 /dev/sda1 /media/sda1dumpddrescue2 /media/sda1dumpddrescue2.log the logfile of ddrescue reads: # Rescue Logfile. Created by GNU ddrescue version 1.2 # pos size status 0x00000000 0x00001000 - 0x00001000 0xEF3F4200 + So it looks like only the very beginning of the partition is unreadable; from the logfile it would be 1000B, but actually ddrescue says Initial status (read from logfile) rescued: 4013 MB, errsize: 4096 B, errors: 8 Anyway, I tried to repair the dump with xfs_repair -f, the log is attached. The fs is successfully repaired, but find lost+found -type c | wc -l count 54000+ regular files lost. Is this normal and consistent with the hypothesis that just the first 1K or 4K of the partition be lost? Can I do something to reconnectomore inodes? I still have the unrepaired dump to trick with. Thanks in advance, Luca Niccoli ------=_Part_94594_8787047.1230493238976 Content-Type: application/octet-stream; name=xfs_repair.log Content-Transfer-Encoding: base64 X-Attachment-Id: f_fpa3tas51 Content-Disposition: attachment; filename=xfs_repair.log UGhhc2UgMSAtIGZpbmQgYW5kIHZlcmlmeSBzdXBlcmJsb2NrLi4uCmJhZCBwcmltYXJ5IHN1cGVy YmxvY2sgLSBiYWQgbWFnaWMgbnVtYmVyICEhIQoKYXR0ZW1wdGluZyB0byBmaW5kIHNlY29uZGFy eSBzdXBlcmJsb2NrLi4uCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uZm91bmQgY2FuZGlk YXRlIHNlY29uZGFyeSBzdXBlcmJsb2NrLi4uCnZlcmlmaWVkIHNlY29uZGFyeSBzdXBlcmJsb2Nr Li4uCndyaXRpbmcgbW9kaWZpZWQgcHJpbWFyeSBzdXBlcmJsb2NrCnNiIHJlYWx0aW1lIGJpdG1h cCBpbm9kZSAxODQ0Njc0NDA3MzcwOTU1MTYxNSAoTlVMTEZTSU5PKSBpbmNvbnNpc3RlbnQgd2l0 aCBjYWxjdWxhdGVkIHZhbHVlIDEyOQpyZXNldHRpbmcgc3VwZXJibG9jayByZWFsdGltZSBiaXRt YXAgaW5vIHBvaW50ZXIgdG8gMTI5CnNiIHJlYWx0aW1lIHN1bW1hcnkgaW5vZGUgMTg0NDY3NDQw NzM3MDk1NTE2MTUgKE5VTExGU0lOTykgaW5jb25zaXN0ZW50IHdpdGggY2FsY3VsYXRlZCB2YWx1 ZSAxMzAKcmVzZXR0aW5nIHN1cGVyYmxvY2sgcmVhbHRpbWUgc3VtbWFyeSBpbm8gcG9pbnRlciB0 byAxMzAKUGhhc2UgMiAtIHVzaW5nIGludGVybmFsIGxvZwogICAgICAgIC0gemVybyBsb2cuLi4K ICAgICAgICAtIHNjYW4gZmlsZXN5c3RlbSBmcmVlc3BhY2UgYW5kIGlub2RlIG1hcHMuLi4KYmFk IG1hZ2ljICMgMHgwIGZvciBhZ2YgMApiYWQgdmVyc2lvbiAjIDAgZm9yIGFnZiAwCmJhZCBsZW5n dGggMCBmb3IgYWdmIDAsIHNob3VsZCBiZSAyNDQ5OTAKYmFkIG1hZ2ljICMgMHgwIGZvciBhZ2kg MApiYWQgdmVyc2lvbiAjIDAgZm9yIGFnaSAwCmJhZCBsZW5ndGggIyAwIGZvciBhZ2kgMCwgc2hv dWxkIGJlIDI0NDk5MApyZXNldCBiYWQgYWdmIGZvciBhZyAwCnJlc2V0IGJhZCBhZ2kgZm9yIGFn IDAKYmFkIGFnYm5vIDAgZm9yIGJ0Ym5vIHJvb3QsIGFnbm8gMApiYWQgYWdibm8gMCBmb3IgYnRi Y250IHJvb3QsIGFnbm8gMApiYWQgYWdibm8gMCBmb3IgaW5vYnQgcm9vdCwgYWdubyAwCnJvb3Qg aW5vZGUgY2h1bmsgbm90IGZvdW5kClBoYXNlIDMgLSBmb3IgZWFjaCBBRy4uLgogICAgICAgIC0g c2NhbiBhbmQgY2xlYXIgYWdpIHVubGlua2VkIGxpc3RzLi4uCmVycm9yIGZvbGxvd2luZyBhZyAw IHVubGlua2VkIGxpc3QKICAgICAgICAtIHByb2Nlc3Mga25vd24gaW5vZGVzIGFuZCBwZXJmb3Jt IGlub2RlIGRpc2NvdmVyeS4uLgogICAgICAgIC0gYWdubyA9IDAKY29ycmVjdGluZyBpbWFwCmNv cnJlY3RpbmcgaW1hcApjb3JyZWN0aW5nIGltYXAKY29ycmVjdGluZyBpbWFwCmNvcnJlY3Rpbmcg aW1hcApjb3JyZWN0aW5nIGltYXAKY29ycmVjdGluZyBpbWFwCmNvcnJlY3RpbmcgaW1hcApjb3Jy ZWN0aW5nIGltYXAKY29ycmVjdGluZyBpbWFwCmNvcnJlY3RpbmcgaW1hcApjb3JyZWN0aW5nIGlt YXAKY29ycmVjdGluZyBpbWFwCmNvcnJlY3RpbmcgaW1hcApjb3JyZWN0aW5nIGltYXAKY29ycmVj dGluZyBpbWFwCmNvcnJlY3RpbmcgaW1hcApjb3JyZWN0aW5nIGltYXAKY29ycmVjdGluZyBpbWFw CmNvcnJlY3RpbmcgaW1hcApjb3JyZWN0aW5nIGltYXAKY29ycmVjdGluZyBpbWFwCmNvcnJlY3Rp bmcgaW1hcApjb3JyZWN0aW5nIGltYXAKY29ycmVjdGluZyBpbWFwCmNvcnJlY3RpbmcgaW1hcApj b3JyZWN0aW5nIGltYXAKY29ycmVjdGluZyBpbWFwCmNvcnJlY3RpbmcgaW1hcApjb3JyZWN0aW5n IGltYXAKY29ycmVjdGluZyBpbWFwCmNvcnJlY3RpbmcgaW1hcApjb3JyZWN0aW5nIGltYXAKY29y cmVjdGluZyBpbWFwCmNvcnJlY3RpbmcgaW1hcApjb3JyZWN0aW5nIGltYXAKY29ycmVjdGluZyBp bWFwCmNvcnJlY3RpbmcgaW1hcApjb3JyZWN0aW5nIGltYXAKY29ycmVjdGluZyBpbWFwCmNvcnJl Y3RpbmcgaW1hcApjb3JyZWN0aW5nIGltYXAKY29ycmVjdGluZyBpbWFwCmNvcnJlY3RpbmcgaW1h cApjb3JyZWN0aW5nIGltYXAKY29ycmVjdGluZyBpbWFwCmNvcnJlY3RpbmcgaW1hcApjb3JyZWN0 aW5nIGltYXAKY29ycmVjdGluZyBpbWFwCmNvcnJlY3RpbmcgaW1hcApjb3JyZWN0aW5nIGltYXAK Y29ycmVjdGluZyBpbWFwCmNvcnJlY3RpbmcgaW1hcApjb3JyZWN0aW5nIGltYXAKY29ycmVjdGlu ZyBpbWFwCmNvcnJlY3RpbmcgaW1hcApjb3JyZWN0aW5nIGltYXAKY29ycmVjdGluZyBpbWFwCmNv cnJlY3RpbmcgaW1hcApjb3JyZWN0aW5nIGltYXAKY29ycmVjdGluZyBpbWFwCiAgICAgICAgLSBh Z25vID0gMQpiNTFmOWI5MDogQmFkbmVzcyBpbiBrZXkgbG9va3VwIChsZW5ndGgpCmJwPShibm8g Mzk3ODExMiwgbGVuIDE2Mzg0IGJ5dGVzKSBrZXk9KGJubyAzOTc4MTEyLCBsZW4gODE5MiBieXRl cykKYjUxZjliOTA6IEJhZG5lc3MgaW4ga2V5IGxvb2t1cCAobGVuZ3RoKQpicD0oYm5vIDQxMjMy MDAsIGxlbiAxNjM4NCBieXRlcykga2V5PShibm8gNDEyMzIwMCwgbGVuIDgxOTIgYnl0ZXMpCmI1 MWY5YjkwOiBCYWRuZXNzIGluIGtleSBsb29rdXAgKGxlbmd0aCkKYnA9KGJubyA0MjYwMDE2LCBs ZW4gMTYzODQgYnl0ZXMpIGtleT0oYm5vIDQyNjAwMTYsIGxlbiA4MTkyIGJ5dGVzKQogICAgICAg IC0gYWdubyA9IDIKICAgICAgICAtIGFnbm8gPSAzCiAgICAgICAgLSBwcm9jZXNzIG5ld2x5IGRp c2NvdmVyZWQgaW5vZGVzLi4uClBoYXNlIDQgLSBjaGVjayBmb3IgZHVwbGljYXRlIGJsb2Nrcy4u LgogICAgICAgIC0gc2V0dGluZyB1cCBkdXBsaWNhdGUgZXh0ZW50IGxpc3QuLi4KICAgICAgICAt IGNoZWNrIGZvciBpbm9kZXMgY2xhaW1pbmcgZHVwbGljYXRlIGJsb2Nrcy4uLgogICAgICAgIC0g YWdubyA9IDAKICAgICAgICAtIGFnbm8gPSAxCmVudHJ5ICIuc3dhcC5pbWciIGF0IGJsb2NrIDAg b2Zmc2V0IDQxNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDU3NjYzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQx Ni4uLgplbnRyeSAiaW5pdHJkLmltZy5vbGQiIGF0IGJsb2NrIDAgb2Zmc2V0IDQ0MCBpbiBkaXJl Y3RvcnkgaW5vZGUgMTI4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMyODM1NwoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0NDAuLi4KZW50cnkgInZtbGlu dXoub2xkIiBhdCBibG9jayAwIG9mZnNldCA1MjAgaW4gZGlyZWN0b3J5IGlub2RlIDEyOCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDk3NTc3CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDUyMC4uLgplbnRyeSAidm1saW51eiIgYXQgYmxvY2sgMCBvZmZz ZXQgNTQ0IGluIGRpcmVjdG9yeSBpbm9kZSAxMjggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMjQzMTgxOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1NDQu Li4KZW50cnkgImhkcGFybS5jb25mIiBhdCBibG9jayAwIG9mZnNldCA2NCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODYwMwoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2NC4uLgplbnRyeSAiYXB0IiBhdCBibG9j ayAwIG9mZnNldCAyNDggaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAzNDYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MjQ4Li4uCmVudHJ5ICJkZWJpYW51dGlscyIgYXQgYmxvY2sgMCBvZmZzZXQgMjA4IGluIGRpcmVj dG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwNgplbnRy eSAiZGViY29uZi5jb25mIiBhdCBibG9jayAwIG9mZnNldCAyOTYgaW4gZGlyZWN0b3J5IGlub2Rl IDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNDcKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjk2Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDIwOC4uLgplbnRyeSAiZHBrZyIgYXQgYmxvY2sgMCBvZmZzZXQgMzIw IGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDE3 CmVudHJ5ICJlMmZzbGlicyIgYXQgYmxvY2sgMCBvZmZzZXQgMjY0IGluIGRpcmVjdG9yeSBpbm9k ZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ1NgoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjQuLi4KZW50cnkgImdjYy00LjItYmFzZSIg YXQgYmxvY2sgMCBvZmZzZXQgMzM2IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ5NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzMzYuLi4KZW50cnkgImd6aXAiIGF0IGJsb2NrIDAgb2Zmc2V0IDQwMCBpbiBk aXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NDUK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDAwLi4uCmVudHJ5ICJs aWJjNiIgYXQgYmxvY2sgMCBvZmZzZXQgNTM2IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCA1MzYuLi4KZW50cnkgImxpYnBhbS1ydW50aW1lIiBhdCBibG9jayAw IG9mZnNldCA3NTIgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgNzQxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDc1Mi4uLgplbnRyeSAibGlic2Vwb2wxIiBhdCBibG9jayAwIG9mZnNldCA4MzIgaW4gZGlyZWN0 b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNzUzCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDgzMi4uLgplbnRyeSAibGlidGV4 dC1pY29udi1wZXJsIiBhdCBibG9jayAwIG9mZnNldCA5NjggaW4gZGlyZWN0b3J5IGlub2RlIDQx OTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNzY1CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDk2OC4uLgplbnRyeSAibWFrZWRldiIgYXQgYmxvY2sg MCBvZmZzZXQgMTExMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSA4MDcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMTExMi4uLgplbnRyeSAibW91bnQiIGF0IGJsb2NrIDAgb2Zmc2V0IDExNzYgaW4gZGlyZWN0 b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgODEzCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExNzYuLi4KZW50cnkgInN5c3Zp bml0LXV0aWxzIiBhdCBibG9jayAwIG9mZnNldCAxMzkyIGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0 NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMyMDM4CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEzOTIuLi4KZW50cnkgInV0aWwtbGludXgiIGF0IGJs b2NrIDAgb2Zmc2V0IDE0NjQgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgNTc2NTAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMTQ2NC4uLgplbnRyeSAibGlic3NsMC45LjgiIGF0IGJsb2NrIDAgb2Zmc2V0IDE1 MTIgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNjc1NjIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTUxMi4u LgplbnRyeSAiYXB0LXV0aWxzIiBhdCBibG9jayAwIG9mZnNldCAxNjQwIGluIGRpcmVjdG9yeSBp bm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMyMDg1CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2NDAuLi4KZW50cnkgImxpYnVzYi0w LjEtNCIgYXQgYmxvY2sgMCBvZmZzZXQgMTY2NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NzU2OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAxNjY0Li4uCmVudHJ5ICJsaWJ3cmFwMCIgYXQgYmxvY2sgMCBv ZmZzZXQgMTcyMCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSA2NzU3OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAxNzIwLi4uCmVudHJ5ICJncnViLWNvbW1vbiIgYXQgYmxvY2sgMCBvZmZzZXQgMTc3NiBpbiBk aXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1MTI5 MzkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTc3Ni4uLgplbnRy eSAiY3BpbyIgYXQgYmxvY2sgMCBvZmZzZXQgMTgwMCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQz NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzI0MAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODAwLi4uCmVudHJ5ICJjcm9uIiBhdCBibG9jayAwIG9m ZnNldCAxODQwIGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDU3MzE5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDE4NDAuLi4KZW50cnkgImxpYnhkbWNwNiIgYXQgYmxvY2sgMCBvZmZzZXQgMTg4MCBpbiBkaXJl Y3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM2ODIK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTg4MC4uLgplbnRyeSAi ZGViaWFuLWFyY2hpdmUta2V5cmluZyIgYXQgYmxvY2sgMCBvZmZzZXQgMTkwNCBpbiBkaXJlY3Rv cnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzMzNgoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxOTA0Li4uCmVudHJ5ICJkaGNw My1jb21tb24iIGF0IGJsb2NrIDAgb2Zmc2V0IDIwMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0 MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTczNDcKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjAzMi4uLgplbnRyeSAiZWQiIGF0IGJsb2NrIDAgb2Zm c2V0IDIxMzYgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgNTczNjAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MjEzNi4uLgplbnRyeSAid2hpcHRhaWwiIGF0IGJsb2NrIDAgb2Zmc2V0IDIxNTIgaW4gZGlyZWN0 b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUwNTY2Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIxNTIuLi4KZW50cnkgImxp YnhjYi14bGliMCIgYXQgYmxvY2sgMCBvZmZzZXQgMjIwMCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5 NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM2OTAKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjIwMC4uLgplbnRyeSAiaXByb3V0ZSIgYXQgYmxv Y2sgMCBvZmZzZXQgMjQyNCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSA1NzQ1MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAyNDI0Li4uCmVudHJ5ICJsaWJiejItMS4wIiBhdCBibG9jayAwIG9mZnNldCAyNTky IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDU3NjEyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1OTIuLi4K ZW50cnkgImxpYmtsaWJjIiBhdCBibG9jayAwIG9mZnNldCAyNzI4IGluIGRpcmVjdG9yeSBpbm9k ZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxNjA0OQoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNzI4Li4uCmVudHJ5ICJsaWJlcHQwIiBh dCBibG9jayAwIG9mZnNldCAyNzYwIGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3NjMzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDI3NjAuLi4KZW50cnkgImluaXRyYW1mcy10b29scyIgYXQgYmxvY2sgMCBv ZmZzZXQgMjg0MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAyMTYwOTQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMjg0MC4uLgplbnRyeSAibGliZ2RibTMiIGF0IGJsb2NrIDAgb2Zmc2V0IDI4NzIgaW4gZGly ZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTc2NDUK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjg3Mi4uLgplbnRyeSAi bGlic2lnYysrLTIuMC0wYzJhIiBhdCBibG9jayAwIG9mZnNldCAyOTUyIGluIGRpcmVjdG9yeSBp bm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDY3NTU1CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI5NTIuLi4KZW50cnkgImxpYmdwZy1l cnJvcjAiIGF0IGJsb2NrIDAgb2Zmc2V0IDI5OTIgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0Mzcg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTc2NjIKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMjk5Mi4uLgplbnRyeSAiYWNwaWQiIGF0IGJsb2NrIDAgb2Zm c2V0IDMwNzIgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMzI4MzYyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDMwNzIuLi4KZW50cnkgImF0IiBhdCBibG9jayAwIG9mZnNldCAzMDg4IGluIGRpcmVjdG9yeSBp bm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2Mzg2OAoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDg4Li4uCmVudHJ5ICJsaWJuZXd0 MC41MiIgYXQgYmxvY2sgMCBvZmZzZXQgMzEwNCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NzQ2OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAzMTA0Li4uCmVudHJ5ICJsaWJpdzI5IiBhdCBibG9jayAwIG9m ZnNldCAzMTI4IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDMyODM3MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzMTI4Li4uCmVudHJ5ICJsaWJwb3B0MCIgYXQgYmxvY2sgMCBvZmZzZXQgMzE2MCBpbiBkaXJl Y3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NzUwNQoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMTYwLi4uCmVudHJ5ICJu YW5vIiBhdCBibG9jayAwIG9mZnNldCAzNDE2IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1MDMzOQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAzNDE2Li4uCmVudHJ5ICJsaWJwY3NjbGl0ZTEiIGF0IGJsb2Nr IDAgb2Zmc2V0IDM0MzIgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMzM5MDg0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDM0MzIuLi4KZW50cnkgIndpcmVsZXNzLXRvb2xzIiBhdCBibG9jayAwIG9mZnNldCAz NDg4IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDMzOTA3MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNDg4 Li4uCmVudHJ5ICJyc3lzbG9nIiBhdCBibG9jayAwIG9mZnNldCAzNzIwIGluIGRpcmVjdG9yeSBp bm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1MDM3MwoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNzIwLi4uCmVudHJ5ICJwb3B1bGFy aXR5LWNvbnRlc3QiIGF0IGJsb2NrIDAgb2Zmc2V0IDM3NDQgaW4gZGlyZWN0b3J5IGlub2RlIDQx OTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzM5MTA5CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM3NDQuLi4KZW50cnkgInRyYWNlcm91dGUiIGF0 IGJsb2NrIDAgb2Zmc2V0IDM5MjggaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTUwNDY1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDM5MjguLi4KZW50cnkgIngxMS1jb21tb24iIGF0IGJsb2NrIDAgb2Zmc2V0 IDQwNjQgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMzM5MTIxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQw NjQuLi4KZW50cnkgInNnbWwtYmFzZSIgYXQgYmxvY2sgMSBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5 IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTcwMDU2CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJlZWVwYy1h Y3BpLXNjcmlwdHMiIGF0IGJsb2NrIDEgb2Zmc2V0IDU2IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0 NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDUxMjk0NgoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1Ni4uLgplbnRyeSAiY3BwIiBhdCBibG9jayAxIG9m ZnNldCAxMTIgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMzU4ODA1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDExMi4uLgplbnRyeSAicnQyODYwLW1vZHVsZXMtMi42LjI2LTEtNjg2IiBhdCBibG9jayAxIG9m ZnNldCAxMzYgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgNTEyOTYyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDEzNi4uLgplbnRyeSAieG1sLWNvcmUiIGF0IGJsb2NrIDEgb2Zmc2V0IDI0MCBpbiBkaXJlY3Rv cnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNzAwNjMKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQwLi4uCmVudHJ5ICJweXRo b24tc2VsaW51eCIgYXQgYmxvY2sgMSBvZmZzZXQgMjY0IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0 NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ4OTk4MAoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjQuLi4KZW50cnkgInB5dGhvbi1zZXBvbGdlbiIg YXQgYmxvY2sgMSBvZmZzZXQgMzIwIGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ4OTk4OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzMjAuLi4KZW50cnkgImRvY2Jvb2steG1sIiBhdCBibG9jayAxIG9mZnNl dCAzNTIgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTUwOTcxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM1 Mi4uLgplbnRyeSAib3BlbnNzaC1jbGllbnQiIGF0IGJsb2NrIDEgb2Zmc2V0IDQzMiBpbiBkaXJl Y3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDMyNjgK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDMyLi4uCmVudHJ5ICJ4 YXV0aCIgYXQgYmxvY2sgMSBvZmZzZXQgNDg4IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1ODkwOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCA0ODguLi4KZW50cnkgImxpYnBjcmUzIiBhdCBibG9jayAxIG9m ZnNldCA2NDggaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTYzODUzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDY0OC4uLgplbnRyeSAibWFpbnQtZ3VpZGUiIGF0IGJsb2NrIDEgb2Zmc2V0IDY4OCBpbiBkaXJl Y3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NDkxMDgK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjg4Li4uCmVudHJ5ICJs aWJlc210cDUiIGF0IGJsb2NrIDEgb2Zmc2V0IDcxMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQz NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDU4NDU1CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDcxMi4uLgplbnRyeSAiYTJwcyIgYXQgYmxvY2sgMSBv ZmZzZXQgNzY4IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDM1ODkzOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCA3NjguLi4KZW50cnkgImJhc2gtY29tcGxldGlvbiIgYXQgYmxvY2sgMSBvZmZzZXQgNzg0IGlu IGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2 MzkwNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA3ODQuLi4KZW50 cnkgInJlcG9ydGJ1ZyIgYXQgYmxvY2sgMSBvZmZzZXQgODE2IGluIGRpcmVjdG9yeSBpbm9kZSA0 MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ5MDAzNwoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4MTYuLi4KZW50cnkgImxpYnhtbDIiIGF0IGJs b2NrIDEgb2Zmc2V0IDkwNCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxNjM5MTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgOTA0Li4uCmVudHJ5ICJzdHJhY2UiIGF0IGJsb2NrIDEgb2Zmc2V0IDkyOCBpbiBk aXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0OTI2 NTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgOTI4Li4uCmVudHJ5 ICJsaWJrZXl1dGlsczEiIGF0IGJsb2NrIDEgb2Zmc2V0IDEwMTYgaW4gZGlyZWN0b3J5IGlub2Rl IDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYzOTMzCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwMTYuLi4KZW50cnkgInRlbG5ldCIgYXQg YmxvY2sgMSBvZmZzZXQgMTA0MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSA0OTI2NzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTA0MC4uLgplbnRyeSAid2hvaXMiIGF0IGJsb2NrIDEgb2Zmc2V0IDEyNjQg aW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg NTk4NTk2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyNjQuLi4K ZW50cnkgImhkcGFybSIgYXQgYmxvY2sgMSBvZmZzZXQgMTMyMCBpbiBkaXJlY3RvcnkgaW5vZGUg NDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1OTg2MDQKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTMyMC4uLgplbnRyeSAibnZjbG9jayIgYXQg YmxvY2sgMSBvZmZzZXQgMTU0NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSA2NDkxMTQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTU0NC4uLgplbnRyeSAiZGMiIGF0IGJsb2NrIDEgb2Zmc2V0IDE1NjggaW4g ZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYz OTcxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE1NjguLi4KZW50 cnkgImRlYmlhbiIgYXQgYmxvY2sgMSBvZmZzZXQgMTY3MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5 NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM5ODYKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTY3Mi4uLgplbnRyeSAicHl0aG9uMi41LW1pbmlt YWwiIGF0IGJsb2NrIDEgb2Zmc2V0IDE4ODAgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjgxOTgxCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDE4ODAuLi4KZW50cnkgIkhPV1RPIiBhdCBibG9jayAxIG9mZnNl dCAxOTg0IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE2Mzk5OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAx OTg0Li4uCmVudHJ5ICJhc3BlbGwiIGF0IGJsb2NrIDEgb2Zmc2V0IDIwNDAgaW4gZGlyZWN0b3J5 IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTk4NjQ0CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwNDAuLi4KZW50cnkgInBvd2Vy dG9wIiBhdCBibG9jayAxIG9mZnNldCAyMDk2IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDY0OTE2MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAyMDk2Li4uCmVudHJ5ICJhc3BlbGwtaXQiIGF0IGJsb2NrIDEg b2Zmc2V0IDIxMzYgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgNTk4NjcwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDIxMzYuLi4KZW50cnkgImZpbmdlciIgYXQgYmxvY2sgMSBvZmZzZXQgMjE2OCBpbiBkaXJl Y3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjQwNjYK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjE2OC4uLgplbnRyeSAi bGliZGFlbW9uMCIgYXQgYmxvY2sgMSBvZmZzZXQgMjIzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5 NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1OTg2NzYKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjIzMi4uLgplbnRyeSAiZ2V0dGV4dC1iYXNlIiBh dCBibG9jayAxIG9mZnNldCAyMjY0IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2NDA3MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAyMjY0Li4uCmVudHJ5ICJ4ZndtNCIgYXQgYmxvY2sgMSBvZmZzZXQgMjU2 OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxMjc2NzkwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1Njgu Li4KZW50cnkgImRvYy1saW51eC1pdCIgYXQgYmxvY2sgMSBvZmZzZXQgMzAwOCBpbiBkaXJlY3Rv cnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2MDUzNzkKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzAwOC4uLgplbnRyeSAibGlu dXgtbGliYy1kZXYiIGF0IGJsb2NrIDEgb2Zmc2V0IDMwMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQx OTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA1ODQ2MgoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDMyLi4uCmVudHJ5ICJsaWJwY2kzIiBhdCBi bG9jayAxIG9mZnNldCAzMDk2IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDIwMTc2NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzMDk2Li4uCmVudHJ5ICJmb3J0dW5lcy1pdCIgYXQgYmxvY2sgMSBvZmZzZXQg MzEyMCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSA2MDUzODgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzEy MC4uLgplbnRyeSAibGlicnBjc2VjZ3NzMyIgYXQgYmxvY2sgMSBvZmZzZXQgMzIxNiBpbiBkaXJl Y3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDE3NzUK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIxNi4uLgplbnRyeSAi Zm9ydHVuZS1tb2QiIGF0IGJsb2NrIDEgb2Zmc2V0IDMzMDQgaW4gZGlyZWN0b3J5IGlub2RlIDQx OTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjA1Mzg1CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMzMDQuLi4KZW50cnkgImxpYnNlbWFuYWdlMSIg YXQgYmxvY2sgMSBvZmZzZXQgMzMzNiBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDE3ODIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMzMzNi4uLgplbnRyeSAibTQiIGF0IGJsb2NrIDEgb2Zmc2V0IDM0ODAg aW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MjAxNzg5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM0ODAuLi4K ZW50cnkgImxpYnN5c2ZzMiIgYXQgYmxvY2sgMSBvZmZzZXQgMzQ5NiBpbiBkaXJlY3RvcnkgaW5v ZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NDkwMDIKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzQ5Ni4uLgplbnRyeSAibXRvb2xzIiBh dCBibG9jayAxIG9mZnNldCAzNjQwIGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMTgwMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzNjQwLi4uCmVudHJ5ICJ0b3Noc2V0IiBhdCBibG9jayAxIG9mZnNldCAz NjY0IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDY0OTA1MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNjY0 Li4uCmVudHJ5ICJweXRob24tc3VwcG9ydCIgYXQgYmxvY2sgMSBvZmZzZXQgMzk2OCBpbiBkaXJl Y3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0ODk5NzEK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzk2OC4uLgplbnRyeSAi bGlieG11NiIgYXQgYmxvY2sgMSBvZmZzZXQgNDAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQz NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTIwOTMKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDAzMi4uLgplbnRyeSAibGlieGF3NyIgYXQgYmxvY2sg MiBvZmZzZXQgMjQwIGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDI1MjEwMAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAyNDAuLi4KZW50cnkgImxpYnhjdXJzb3IxIiBhdCBibG9jayAyIG9mZnNldCAyODggaW4g ZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUy MTA4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI4OC4uLgplbnRy eSAiZGVmb21hIiBhdCBibG9jayAyIG9mZnNldCAzMzYgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0 MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUyMTIxCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMzNi4uLgplbnRyeSAidHRmLWRlamF2dS1leHRyYSIg YXQgYmxvY2sgMiBvZmZzZXQgMzkyIGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1NjEzMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzOTIuLi4KZW50cnkgImxpYmZvbnRlbmMxIiBhdCBibG9jayAyIG9mZnNl dCA0NzIgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjU2MTQzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ3 Mi4uLgplbnRyeSAieGZvbnRzLWVuY29kaW5ncyIgYXQgYmxvY2sgMiBvZmZzZXQgNTIwIGluIGRp cmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1NjE0 OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1MjAuLi4KZW50cnkg Imdrc3UiIGF0IGJsb2NrIDIgb2Zmc2V0IDgzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc3MDMxCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDgzMi4uLgplbnRyeSAidGV4LWNvbW1vbiIgYXQgYmxvY2sg MiBvZmZzZXQgOTM2IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDkwNTMzOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA5MzYuLi4KZW50cnkgImR2aXBkZm14IiBhdCBibG9jayAyIG9mZnNldCAxMjMyIGluIGRp cmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYx OTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTIzMi4uLgplbnRy eSAiZHZpcG5nIiBhdCBibG9jayAyIG9mZnNldCAxMjg4IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0 NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYyMDcKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTI4OC4uLgplbnRyeSAibGlieHJhbmRyMiIgYXQg YmxvY2sgMiBvZmZzZXQgMTY3MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAzNTg4ODMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTY3Mi4uLgplbnRyeSAibGlidGhhaTAiIGF0IGJsb2NrIDIgb2Zmc2V0IDE3 NTIgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNDIzNzA0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3NTIu Li4KZW50cnkgImxpYnh4Zjg2bWlzYzEiIGF0IGJsb2NrIDIgb2Zmc2V0IDE3OTIgaW4gZGlyZWN0 b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU4OTAzCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3OTIuLi4KZW50cnkgImxp YmV4by0wLjMtMCIgYXQgYmxvY2sgMiBvZmZzZXQgMTg4OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5 NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2MzIxCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4ODguLi4KZW50cnkgInBzdXRpbHMiIGF0IGJs b2NrIDIgb2Zmc2V0IDIwMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMzU4OTE1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDIwMzIuLi4KZW50cnkgImxpYnhmY2U0bWNzLWNsaWVudDMiIGF0IGJsb2NrIDIg b2Zmc2V0IDIyNDAgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTI3NjM1NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAyMjQwLi4uCmVudHJ5ICJsaWJjcm9jbzMiIGF0IGJsb2NrIDIgb2Zmc2V0IDIzNjggaW4g ZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDI1 ODU2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIzNjguLi4KZW50 cnkgImxpYnhmY2VndWk0LTQiIGF0IGJsb2NrIDIgb2Zmc2V0IDI1MTIgaW4gZGlyZWN0b3J5IGlu b2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjM2MgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNTEyLi4uCmVudHJ5ICJsaWJnc2Yt MS0xMTQiIGF0IGJsb2NrIDIgb2Zmc2V0IDI1NjggaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0Mzcg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDI1ODkyCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1NjguLi4KZW50cnkgImxpYmdhbWluMCIgYXQgYmxvY2sg MiBvZmZzZXQgMjY0MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxMjc2NDIxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDI2NDAuLi4KZW50cnkgImF2YWhpLXV0aWxzIiBhdCBibG9jayAyIG9mZnNldCAyNjcy IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDM1OTA1NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjcyLi4u CmVudHJ5ICJleG8tdXRpbHMiIGF0IGJsb2NrIDIgb2Zmc2V0IDI2OTYgaW4gZGlyZWN0b3J5IGlu b2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjQxNgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjk2Li4uCmVudHJ5ICJjaGt0ZXgi IGF0IGJsb2NrIDIgb2Zmc2V0IDI3MjggaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU5MDYyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDI3MjguLi4KZW50cnkgImxpYmN1cHMyIiBhdCBibG9jayAyIG9mZnNl dCAyODcyIGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDM1OTExMAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAy ODcyLi4uCmVudHJ5ICJ0aXBhIiBhdCBibG9jayAyIG9mZnNldCAzMDMyIGluIGRpcmVjdG9yeSBp bm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ3ODUKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzAzMi4uLgplbnRyeSAibGliZ2Nv bmYyLTQiIGF0IGJsb2NrIDIgb2Zmc2V0IDMwNzIgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0Mzcg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjQ3MQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDcyLi4uCmVudHJ5ICJnY29uZjIiIGF0IGJsb2NrIDIg b2Zmc2V0IDMxODQgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTI3NjQ4NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAzMTg0Li4uCmVudHJ5ICJsaWJkbXgxIiBhdCBibG9jayAyIG9mZnNldCAzMjk2IGluIGRp cmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY0 OTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzI5Ni4uLgplbnRy eSAiY3Vwcy1jb21tb24iIGF0IGJsb2NrIDIgb2Zmc2V0IDM0NDAgaW4gZGlyZWN0b3J5IGlub2Rl IDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDIyMjUxCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM0NDAuLi4KZW50cnkgImxpYmdub21lY2Fu dmFzMi0wIiBhdCBibG9jayAyIG9mZnNldCAzNDY0IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY1NTkKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzQ2NC4uLgplbnRyeSAibGliZ2FpbC1jb21tb24iIGF0 IGJsb2NrIDIgb2Zmc2V0IDM1MjAgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjUwNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzNTIwLi4uCmVudHJ5ICJsaWJhdGsxLjAtMCIgYXQgYmxvY2sgMiBvZmZz ZXQgMzczNiBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSA0MjMwNzIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzczNi4uLgplbnRyeSAid2RpZmYiIGF0IGJsb2NrIDIgb2Zmc2V0IDM4NDAgaW4gZGlyZWN0b3J5 IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNTAwMQoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzODQwLi4uCmVudHJ5ICJsaWJ2 dGUtY29tbW9uIiBhdCBibG9jayAyIG9mZnNldCA0MDI0IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0 NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY3OTkKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDAyNC4uLgplbnRyeSAibGliaWN1MzgiIGF0IGJs b2NrIDMgb2Zmc2V0IDE2IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE0OTkzNTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMTYuLi4KZW50cnkgImxpYmdub21lLWtleXJpbmcwIiBhdCBibG9jayAzIG9mZnNl dCAzMDQgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTI3Njk3NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz MDQuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIwLi4uCmVu dHJ5ICJsaWJxdDQtc3FsIiBhdCBibG9jayAzIG9mZnNldCA0MDggaW4gZGlyZWN0b3J5IGlub2Rl IDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU5OTAzOAplbnRyeSAibWtl MmZzLmNvbmYiIGF0IGJsb2NrIDAgb2Zmc2V0IDM4NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ2MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAzODQuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgNDA4Li4uCmVudHJ5ICJuZXR3b3JrIiBhdCBibG9jayAwIG9mZnNldCA0MDggaW4g ZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NTMKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDA4Li4uCmVudHJ5ICJsZC5z by5jb25mLmQiIGF0IGJsb2NrIDAgb2Zmc2V0IDQ1NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU2MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCA0NTYuLi4KZW50cnkgImxpYmd0b3AyLTciIGF0IGJsb2NrIDMgb2Zm c2V0IDQ0MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxMjc3MDA4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDQ0MC4uLgplbnRyeSAiZ2FpLmNvbmYiIGF0IGJsb2NrIDAgb2Zmc2V0IDQ4MCBpbiBkaXJlY3Rv cnkgaW5vZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU2NgoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0ODAuLi4KZW50cnkgImxpYmdrc3UyLTAi IGF0IGJsb2NrIDMgb2Zmc2V0IDU2MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc3MDIzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDU2MC4uLgplbnRyeSAiYmluZHJlc3Zwb3J0LmJsYWNrbGlzdCIgYXQg YmxvY2sgMCBvZmZzZXQgNTA0IGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgNTY3CmVudHJ5ICJsaWJnbHUxLW1lc2EiIGF0IGJsb2NrIDMgb2Zmc2V0 IDU4NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxNDk5NTAyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDU4 NC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1MDQuLi4KZW50 cnkgInNlY3VyaXR5IiBhdCBibG9jayAwIG9mZnNldCA1NDQgaW4gZGlyZWN0b3J5IGlub2RlIDEz MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2ODIKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgNTQ0Li4uCmVudHJ5ICJsaWJ3YmNsaWVudDAiIGF0IGJsb2Nr IDMgb2Zmc2V0IDc2OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxNDk5NTExCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDc2OC4uLgplbnRyeSAiZ25vbWUtbWltZS1kYXRhIiBhdCBibG9jayAzIG9mZnNldCA4 MDggaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTM1NDc4NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4MDgu Li4KZW50cnkgInBhbS5jb25mIiBhdCBibG9jayAwIG9mZnNldCA1NjggaW4gZGlyZWN0b3J5IGlu b2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2OTQKZW50cnkgImxpYnhzbHQx LjEiIGF0IGJsb2NrIDMgb2Zmc2V0IDg5NiBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNzM4MjcyCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDg5Ni4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCA1NjguLi4KZW50cnkgImhhbC1pbmZvIiBhdCBibG9jayAzIG9mZnNldCA5Mjgg aW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTM1NDc5NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5MjguLi4K ZW50cnkgInBhbS5kIiBhdCBibG9jayAwIG9mZnNldCA1OTIgaW4gZGlyZWN0b3J5IGlub2RlIDEz MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2OTUKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgNTkyLi4uCmVudHJ5ICJsb2dpbi5kZWZzIiBhdCBibG9jayAw IG9mZnNldCA2MDggaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSA4MDQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjA4 Li4uCmVudHJ5ICJzZWN1cmV0dHkiIGF0IGJsb2NrIDAgb2Zmc2V0IDYzMiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDgwNQoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2MzIuLi4KZW50cnkgImxpYmdub21ldmZzMi1l eHRyYSIgYXQgYmxvY2sgMyBvZmZzZXQgMTA4MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDk5NTE3CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwODAuLi4KZW50cnkgImxpYmF2YWhpLWdsaWIxIiBhdCBi bG9jayAzIG9mZnNldCAxMTkyIGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDEzNTQ5OTAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTE5Mi4uLgplbnRyeSAibHNiLWJhc2UiIGF0IGJsb2NrIDAgb2Zmc2V0IDY1 NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDgw NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2NTYuLi4KZW50cnkg InRlcm1pbmZvIiBhdCBibG9jayAwIG9mZnNldCA2ODAgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA4MzMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgNjgwLi4uCmVudHJ5ICJsaWJqcGVnLXByb2dzIiBhdCBibG9jayAz IG9mZnNldCAxMjI0IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDE1OTg5NTAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMTIyNC4uLgplbnRyeSAic3lzY3RsLmNvbmYiIGF0IGJsb2NrIDAgb2Zmc2V0IDcwNCBp biBkaXJlY3RvcnkgaW5vZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDc1NTkK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNzA0Li4uCmVudHJ5ICJt eXNxbC1jb21tb24iIGF0IGJsb2NrIDMgb2Zmc2V0IDEzNjggaW4gZGlyZWN0b3J5IGlub2RlIDQx OTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU5ODk2MQoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzY4Li4uCmVudHJ5ICJyY1MuZCIgYXQgYmxv Y2sgMCBvZmZzZXQgODAwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgNzU3NAplbnRyeSAibGlic2V4eTIiIGF0IGJsb2NrIDMgb2Zmc2V0IDE1MTIg aW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTczODI5NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTEyLi4u CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDgwMC4uLgplbnRyeSAi bGlibnNzLW1kbnMiIGF0IGJsb2NrIDMgb2Zmc2V0IDE1NjggaW4gZGlyZWN0b3J5IGlub2RlIDQx OTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU5ODk2OAoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTY4Li4uCmVudHJ5ICJsaWJwYXBlci11dGls cyIgYXQgYmxvY2sgMyBvZmZzZXQgMTcxMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTk4OTgwCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDE3MTIuLi4KZW50cnkgInJjNS5kIiBhdCBibG9jayAwIG9mZnNl dCA4NjQgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA3NTc2CmVudHJ5ICJsaWJlZWwyLWRhdGEiIGF0IGJsb2NrIDMgb2Zmc2V0IDE4NzIgaW4gZGly ZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM1NTEw MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODcyLi4uCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDg2NC4uLgplbnRyeSAibGlibmF1 dGlsdXMtZXh0ZW5zaW9uMSIgYXQgYmxvY2sgMyBvZmZzZXQgMjAwMCBpbiBkaXJlY3RvcnkgaW5v ZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4NjQxCmVudHJ5ICJy bXQiIGF0IGJsb2NrIDAgb2Zmc2V0IDg4MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMyMDQyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDg4MC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAyMDAwLi4uCmVudHJ5ICJyZXNvbHYuY29uZiIgYXQgYmxvY2sgMCBvZmZzZXQgOTEyIGlu IGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjAzMjgz CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDkxMi4uLgplbnRyeSAi aG9zdG5hbWUiIGF0IGJsb2NrIDAgb2Zmc2V0IDkzNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3NjY0CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDkzNi4uLgplbnRyeSAicGVybCIgYXQgYmxvY2sgMCBvZmZzZXQg OTYwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MjAzMjk4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDk2MC4uLgpl bnRyeSAibXRhYiIgYXQgYmxvY2sgMCBvZmZzZXQgMTAwMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTMy IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzcwNDcKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTAwMC4uLgplbnRyeSAibGlicXRjb3JlNCIgYXQgYmxv Y2sgMyBvZmZzZXQgMjI5NiBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxNTk4OTk1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDIyOTYuLi4KZW50cnkgImxkLnNvLmNhY2hlIiBhdCBibG9jayAwIG9mZnNldCAx MDQwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTE1NTc0NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMDQwLi4u CmVudHJ5ICJsaWJxdDQteG1sIiBhdCBibG9jayAzIG9mZnNldCAyNTM2IGluIGRpcmVjdG9yeSBp bm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1OTg5OTAKZW50cnkg Im5ldHdvcmtzIiBhdCBibG9jayAwIG9mZnNldCAxMDY0IGluIGRpcmVjdG9yeSBpbm9kZSAxMzIg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUwNTc1CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwNjQuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMjUzNi4uLgplbnRyeSAicnN5c2xvZy5jb25mIiBhdCBibG9jayAwIG9m ZnNldCAxMDg4IGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTUwMzg2CmVudHJ5ICJsaWJkanZ1bGlicmUyMSIgYXQgYmxvY2sgMyBvZmZzZXQgMjc2 OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxMzg4OTMxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI3Njgu Li4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTA4OC4uLgplbnRy eSAieGZjZTQtcGFuZWwiIGF0IGJsb2NrIDMgb2Zmc2V0IDI5NjggaW4gZGlyZWN0b3J5IGlub2Rl IDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg1MDQ3OAplbnRyeSAicmVw b3J0YnVnLmNvbmYiIGF0IGJsb2NrIDAgb2Zmc2V0IDExNTIgaW4gZGlyZWN0b3J5IGlub2RlIDEz MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0OTAwMzYKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTE1Mi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyOTY4Li4uCmVudHJ5ICJwYXNzd2QiIGF0IGJsb2NrIDAgb2Zmc2V0 IDEyMDAgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyMDU3MDk3CmVudHJ5ICJwcmV2aWV3LWxhdGV4LXN0eWxlIiBhdCBibG9jayAzIG9mZnNldCAz MDI0IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE4NTA2ODIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzAy NC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMjAwLi4uCmVu dHJ5ICJ0ZXhsaXZlLXBzdHJpY2tzIiBhdCBibG9jayAzIG9mZnNldCAzMDgwIGluIGRpcmVjdG9y eSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NTA4NzcKZW50 cnkgImdyb3VwIiBhdCBibG9jayAwIG9mZnNldCAxMjI0IGluIGRpcmVjdG9yeSBpbm9kZSAxMzIg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA2MTg4MQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMjI0Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDMwODAuLi4KZW50cnkgIm5zc3dpdGNoLmNvbmYiIGF0IGJsb2NrIDAg b2Zmc2V0IDEyNDAgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAyMDU3NjIxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDEyNDAuLi4KZW50cnkgImFkanRpbWUiIGF0IGJsb2NrIDAgb2Zmc2V0IDEzMjAgaW4gZGlyZWN0 b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjEKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTMyMC4uLgplbnRyeSAicHJvc3BlciIg YXQgYmxvY2sgMyBvZmZzZXQgMzEzNiBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODUwODgzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDMxMzYuLi4KZW50cnkgImZzdGFiIiBhdCBibG9jayAwIG9mZnNldCAx MzQ0IGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MzIwNTgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTM0NC4uLgpl bnRyeSAicXQ0LXF0Y29uZmlnIiBhdCBibG9jayAzIG9mZnNldCAzMzc2IGluIGRpcmVjdG9yeSBp bm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NTA5NDgKZW50cnkg ImxkLnNvLmNvbmYiIGF0IGJsb2NrIDAgb2Zmc2V0IDEzNjggaW4gZGlyZWN0b3J5IGlub2RlIDEz MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjAKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMTM2OC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzMzc2Li4uCmVudHJ5ICJjcm9uLndlZWtseSIgYXQgYmxvY2sgMCBvZmZz ZXQgMTQyNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDU3MzM0CmVudHJ5ICJsaWJxdDQtZGVzaWduZXIiIGF0IGJsb2NrIDMgb2Zmc2V0IDM0MzIg aW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTU5OTAyNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNDMyLi4u CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE0MjQuLi4KZW50cnkg ImxpYmJvb3N0LXNpZ25hbHMxLjM0LjEiIGF0IGJsb2NrIDMgb2Zmc2V0IDM1MDQgaW4gZGlyZWN0 b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTQ3MAoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNTA0Li4uCmVudHJ5ICJt b2Rwcm9iZS5kIiBhdCBibG9jayAwIG9mZnNldCAxNTYwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzIg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUwMzAyCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE1NjAuLi4KZW50cnkgImxhdGV4LWJlYW1lciIgYXQgYmxv Y2sgMyBvZmZzZXQgMzY4MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxNDk5MjI1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDM2ODAuLi4KZW50cnkgImhvc3RzLmRlbnkiIGF0IGJsb2NrIDAgb2Zmc2V0IDE1 ODQgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx NTA2MDEKZW50cnkgInRjbDguNCIgYXQgYmxvY2sgMyBvZmZzZXQgMzc2MCBpbiBkaXJlY3Rvcnkg aW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODUwOTkyCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM3NjAuLi4KZW50cnkgImxpYmFp a3NhdXJ1cy0xLjItZGF0YSIgYXQgYmxvY2sgMyBvZmZzZXQgMzg2NCBpbiBkaXJlY3RvcnkgaW5v ZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDk5MzA4CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM4NjQuLi4KZW50cnkgInhvcmciIGF0 IGJsb2NrIDMgb2Zmc2V0IDM5MjAgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTk1MDk1MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzOTIwLi4uCmVudHJ5ICJsaWJhdGsxLjAtZGF0YSIgYXQgYmxvY2sgMyBv ZmZzZXQgNDAxNiBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxNDk5MzIxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDQwMTYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTU4 NC4uLgplbnRyeSAibGlibWFsYWdhNyIgYXQgYmxvY2sgMyBvZmZzZXQgNDA0OCBpbiBkaXJlY3Rv cnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDk5NDgwCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQwNDguLi4KZW50cnkgImtl cm5lbC1wa2cuY29uZiIgYXQgYmxvY2sgMCBvZmZzZXQgMTYwOCBpbiBkaXJlY3RvcnkgaW5vZGUg MTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExOTUyNTcKZW50cnkgInhmY2U0LXV0 aWxzIiBhdCBibG9jayAzIG9mZnNldCA0MDcyIGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDUwNjAKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgNDA3Mi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAxNjA4Li4uCmVudHJ5ICJweXRob24yLjUiIGF0IGJsb2NrIDAgb2Zmc2V0 IDE2NDAgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyMDM1NjEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTY0MC4u LgplbnRyeSAibW9kdWxlcyIgYXQgYmxvY2sgMCBvZmZzZXQgMTcwNCBpbiBkaXJlY3RvcnkgaW5v ZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1MDU3MQoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNzA0Li4uCmVudHJ5ICJwcm90b2NvbHMiIGF0 IGJsb2NrIDAgb2Zmc2V0IDE3MjggaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxNTAzNzgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMTcyOC4uLgplbnRyeSAiaG9zdHMuYWxsb3ciIGF0IGJsb2NrIDAgb2Zmc2V0IDE3 NzYgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx NTA1ODgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTc3Ni4uLgpl bnRyeSAidGV4bGl2ZS1mb250cy1yZWNvbW1lbmRlZCIgYXQgYmxvY2sgNCBvZmZzZXQgMTIwIGlu IGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4 NjkyMzMKZW50cnkgImtlcm5lbC1pbWcuY29uZiIgYXQgYmxvY2sgMCBvZmZzZXQgMTgwMCBpbiBk aXJlY3RvcnkgaW5vZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2Mzc3MQoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODAwLi4uCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyMC4uLgplbnRyeSAiZ2FtaW4iIGF0 IGJsb2NrIDAgb2Zmc2V0IDE4NjQgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMjc2NDI5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDE4NjQuLi4KZW50cnkgInhmcHJpbnQ0IiBhdCBibG9jayA0IG9mZnNldCA2MzIg aW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTk0MDIwNgplbnRyeSAic2hlbGxzIiBhdCBibG9jayAwIG9mZnNldCAxODgwIGluIGRpcmVjdG9y eSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDkwMDMzCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4ODAuLi4KCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjMyLi4uCmVudHJ5ICJ0aW1lem9uZSIgYXQgYmxv Y2sgMCBvZmZzZXQgMTkyOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDM0MQplbnRyeSAieHNlcnZlci14b3JnLWlucHV0LW1vdXNlIiBhdCBibG9j ayA0IG9mZnNldCA4MjQgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTk1MDY3MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCA4MjQuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MTkyOC4uLgplbnRyeSAicG1vdW50LmFsbG93IiBhdCBibG9jayAwIG9mZnNldCAxOTUyIGluIGRp cmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTcwMDMxCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE5NTIuLi4KZW50cnkgInhz Y3JlZW5zYXZlci1kYXRhIiBhdCBibG9jayA0IG9mZnNldCAxMDMyIGluIGRpcmVjdG9yeSBpbm9k ZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5ODMzNjAKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTAzMi4uLgplbnRyeSAiLnB3ZC5sb2Nr IiBhdCBibG9jayAwIG9mZnNldCAxOTc2IGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMzQyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDE5NzYuLi4KZW50cnkgImxpYnZvcmJpc2VuYzIiIGF0IGJsb2NrIDQgb2Zmc2V0 IDEyMTYgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjYzODI5NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAx MjE2Li4uCmVudHJ5ICJjcm9udGFiIiBhdCBibG9jayAwIG9mZnNldCAyMDAwIGluIGRpcmVjdG9y eSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTczMzIKZW50cnkgInpl bml0eSIgYXQgYmxvY2sgNCBvZmZzZXQgMTMxMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDMwODU4CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEzMTIuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMjAwMC4uLgplbnRyeSAibGlic2FtcGxlcmF0ZTAiIGF0IGJsb2NrIDQg b2Zmc2V0IDEzMzYgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMjU5NzA1NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAxMzM2Li4uCmVudHJ5ICJtYW5wYXRoLmNvbmZpZyIgYXQgYmxvY2sgMCBvZmZzZXQgMjAy NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1 MDI2MAplbnRyeSAibGliY2RkYjIiIGF0IGJsb2NrIDQgb2Zmc2V0IDE1MjAgaW4gZGlyZWN0b3J5 IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjU5NzA2NAoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTIwLi4uCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwMjQuLi4KZW50cnkgImxpYnRlcm0tcmVh ZGtleS1wZXJsIiBhdCBibG9jayA0IG9mZnNldCAxNjg4IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0 NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNTg0MTkKZW50cnkgImNzaC5jc2hy YyIgYXQgYmxvY2sgMCBvZmZzZXQgMjA4MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ5MjY2NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAyMDgwLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDE2ODguLi4KZW50cnkgInNoYWRvdyIgYXQgYmxvY2sgMCBvZmZzZXQgMjEyMCBpbiBk aXJlY3RvcnkgaW5vZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNTc2MjkK ZW50cnkgInN5c3YtcmMtY29uZiIgYXQgYmxvY2sgNCBvZmZzZXQgMTgyNCBpbiBkaXJlY3Rvcnkg aW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDU4NDI0CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4MjQuLi4KCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjEyMC4uLgplbnRyeSAibGliY2Rpby1jZGRh MCIgYXQgYmxvY2sgNCBvZmZzZXQgMTg3MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTk3MDc5CmVudHJ5ICJwYXNzd2QtIiBhdCBibG9j ayAwIG9mZnNldCAyMTQ0IGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgNTU0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDIxNDQuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTg3Mi4u LgplbnRyeSAibmFub3JjIiBhdCBibG9jayAwIG9mZnNldCAyMTY4IGluIGRpcmVjdG9yeSBpbm9k ZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUwMzYwCmVudHJ5ICJsaWJ0aW1l ZGF0ZS1wZXJsIiBhdCBibG9jayA0IG9mZnNldCAxOTY4IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0 NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExNTYzNjkKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTk2OC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAyMTY4Li4uCmVudHJ5ICJkcGtnLWRldiIgYXQgYmxvY2sgNCBv ZmZzZXQgMjAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxMTU2Mzg5CmVudHJ5ICJsb2dyb3RhdGUuY29uZiIgYXQgYmxvY2sgMCBvZmZz ZXQgMjE5MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDY3NTg5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIxOTIu Li4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjAzMi4uLgplbnRy eSAiLmZzdGFiLnN3cCIgYXQgYmxvY2sgMCBvZmZzZXQgMjI0OCBpbiBkaXJlY3RvcnkgaW5vZGUg MTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3NDU5CmVudHJ5ICJsaWJmbGFjOCIg YXQgYmxvY2sgNCBvZmZzZXQgMjEyOCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTk3MDg3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDIxMjguLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMjI0OC4uLgplbnRyeSAiZ2V0dGV4dCIgYXQgYmxvY2sgNCBvZmZzZXQgMjIxNiBp biBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx MTU2Mzk5CmVudHJ5ICJnc2hhZG93IiBhdCBibG9jayAwIG9mZnNldCAyMjg4IGluIGRpcmVjdG9y eSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA3NDI4CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIyODguLi4KCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjIxNi4uLgplbnRyeSAiZ3JvdXAtIiBhdCBibG9j ayAwIG9mZnNldCAyMzEyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgNTU3CmVudHJ5ICJsaWJtbXMwIiBhdCBibG9jayA0IG9mZnNldCAyMzEyIGlu IGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI2 MzgyNzgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjMxMi4uLgoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMzEyLi4uCmVudHJ5ICJs b2NhbGUuYWxpYXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDIzMzYgaW4gZGlyZWN0b3J5IGlub2RlIDEz MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDM2MTIKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjMzNi4uLgplbnRyeSAibGlibHpvMi0yIiBhdCBibG9j ayA0IG9mZnNldCAyNzg0IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDExMjg2NDYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMjc4NC4uLgplbnRyeSAiY3NoLmxvZ2luIiBhdCBibG9jayAwIG9mZnNldCAyMzky IGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDky NjY4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIzOTIuLi4KZW50 cnkgImFuYWNyb250YWIiIGF0IGJsb2NrIDAgb2Zmc2V0IDI0NTYgaW4gZGlyZWN0b3J5IGlub2Rl IDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1OTg2MzUKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQ1Ni4uLgplbnRyeSAibGliZmlsZS1yZW1vdmUt cGVybCIgYXQgYmxvY2sgNCBvZmZzZXQgMzAyNCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTk1MjgwCmVudHJ5ICJzZXJ2aWNlcyIgYXQg YmxvY2sgMCBvZmZzZXQgMjQ4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE1MDM3NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAyNDg4Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDMwMjQuLi4KZW50cnkgImRlbHVzZXIuY29uZiIgYXQgYmxvY2sgMCBvZmZzZXQgMjUxMiBpbiBk aXJlY3RvcnkgaW5vZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMyMDY0Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1MTIuLi4KZW50cnkgImxp Ym1haWx0b29scy1wZXJsIiBhdCBibG9jayA0IG9mZnNldCAzMjQwIGluIGRpcmVjdG9yeSBpbm9k ZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExOTUyOTQKZW50cnkgImlu cHV0cmMiIGF0IGJsb2NrIDAgb2Zmc2V0IDI1MzYgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMjUzNi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzMjQwLi4uCmVudHJ5ICJjb25zb2xlLXRvb2xzIiBhdCBibG9jayAwIG9mZnNldCAy NTYwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MjAzOTE3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1NjAuLi4K ZW50cnkgImxpYnNwbGFzaHkxIiBhdCBibG9jayA0IG9mZnNldCAzNjI0IGluIGRpcmVjdG9yeSBp bm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMjg2NTcKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzYyNC4uLgplbnRyeSAiZmxhc2hw bGF5ZXItbW96aWxsYSIgYXQgYmxvY2sgNCBvZmZzZXQgMzc1MiBpbiBkaXJlY3RvcnkgaW5vZGUg NDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTAyNzk0CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM3NTIuLi4KZW50cnkgInNnbWwiIGF0IGJs b2NrIDAgb2Zmc2V0IDI2MjQgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxNTA2MTQKZW50cnkgImxpYnNuZGZpbGUxIiBhdCBibG9jayA0IG9mZnNl dCAzODI0IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDI2MzgyODcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzgyNC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjI0Li4u CmVudHJ5ICJzaGFkb3ctIiBhdCBibG9jayAwIG9mZnNldCAyNjQ4IGluIGRpcmVjdG9yeSBpbm9k ZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjY2CmVudHJ5ICJhdWRhY2lvdXMt cGx1Z2lucyIgYXQgYmxvY2sgNSBvZmZzZXQgNDggaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0Mzcg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjYzODMwNAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCA0OC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAyNjQ4Li4uCmVudHJ5ICJndGsyLWVuZ2luZXMtcGl4YnVmIiBhdCBibG9j ayA1IG9mZnNldCA4MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAyNjM4MzI0CmVudHJ5ICJtb3RkLnRhaWwiIGF0IGJsb2NrIDAgb2Zmc2V0 IDI2OTYgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAzMjA1OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjk2Li4u CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDgwLi4uCmVudHJ5ICJy Yy5sb2NhbCIgYXQgYmxvY2sgMCBvZmZzZXQgMjczNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMyMDYyCmVudHJ5ICJ1c3dzdXNwIiBhdCBibG9j ayA1IG9mZnNldCAyNTYgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTEyODY3MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAyNTYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MjczNi4uLgplbnRyeSAibGlic294LWZtdC1hbHNhIiBhdCBibG9jayA1IG9mZnNldCA1MjAgaW4g ZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjY0 ODk4NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1MjAuLi4KZW50 cnkgImxpYnNveC1mbXQtYmFzZSIgYXQgYmxvY2sgNSBvZmZzZXQgNjQ4IGluIGRpcmVjdG9yeSBp bm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMjQxMDMKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjQ4Li4uCmVudHJ5ICJpbml0dGFi IiBhdCBibG9jayAwIG9mZnNldCAyNzYwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjA1ODQxNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAyNzYwLi4uCmVudHJ5ICJzZXN0YXR1cy5jb25mIiBhdCBibG9jayAwIG9m ZnNldCAyNzg0IGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgNDkwMDE1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI3 ODQuLi4KZW50cnkgImhhbCIgYXQgYmxvY2sgMCBvZmZzZXQgMjgzMiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzNTQ4NTUKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjgzMi4uLgplbnRyeSAibGliYXJ0c2MwIiBh dCBibG9jayA1IG9mZnNldCA2ODAgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTEyNDkwNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCA2ODAuLi4KZW50cnkgImxpYmR2NCIgYXQgYmxvY2sgNSBvZmZzZXQgODA4 IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDExMjQ5MDcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODA4Li4u CmVudHJ5ICJjcm9uLmRhaWx5IiBhdCBibG9jayAwIG9mZnNldCAyODQ4IGluIGRpcmVjdG9yeSBp bm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTY2NTYKZW50cnkgImxpYmZh YWMwIiBhdCBibG9jayA1IG9mZnNldCA4NTYgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEyNDkyMwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCA4NTYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMjg0OC4uLgplbnRyeSAibGliYXZjMTM5NC0wIiBhdCBibG9jayA1IG9mZnNl dCA5MDQgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTEyNDkzNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5 MDQuLi4KZW50cnkgImxpYmZyZWVib2IwIiBhdCBibG9jayA1IG9mZnNldCA5NTIgaW4gZGlyZWN0 b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEyNDk0NwoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5NTIuLi4KZW50cnkgImxv Y2FsZS5ub3B1cmdlIiBhdCBibG9jayAwIG9mZnNldCAyODcyIGluIGRpcmVjdG9yeSBpbm9kZSAx MzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE5NTU4MgoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyODcyLi4uCmVudHJ5ICJoaWJlcm5hdGUiIGF0IGJs b2NrIDAgb2Zmc2V0IDI5ODQgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSA2NDkwNTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMjk4NC4uLgplbnRyeSAibGlibGlyY2NsaWVudDAiIGF0IGJsb2NrIDUgb2Zmc2V0IDEy MDggaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTEzNTk3MwplbnRyeSAibG9jYWxlLmdlbiIgYXQgYmxvY2sgMCBvZmZzZXQgMzA1NiBpbiBk aXJlY3RvcnkgaW5vZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MzYxNAoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDU2Li4uCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyMDguLi4KZW50cnkgInNjc2lfaWQu Y29uZmlnIiBhdCBibG9jayAwIG9mZnNldCAzMTA0IGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjE2MDQ2CmVudHJ5ICJsaWJtcGNkZWMzIiBhdCBi bG9jayA1IG9mZnNldCAxMjY0IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDExMzU5OTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTI2NC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAzMTA0Li4uCmVudHJ5ICJsaWJ0aGVvcmEwIiBhdCBibG9jayA1IG9mZnNldCAxNDI0IGlu IGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEx MzYwMjIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQyNC4uLgpl bnRyeSAibGlieHNzMSIgYXQgYmxvY2sgNSBvZmZzZXQgMTQ3MiBpbiBkaXJlY3RvcnkgaW5vZGUg NDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDczODI0CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE0NzIuLi4KZW50cnkgImNzaC5sb2dvdXQi IGF0IGJsb2NrIDAgb2Zmc2V0IDMxMzYgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSA0OTI2NjkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMzEzNi4uLgplbnRyeSAicnBjIiBhdCBibG9jayAwIG9mZnNldCAzMTkyIGlu IGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUwMzc5 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMxOTIuLi4KZW50cnkg ImxpYnh2bWMxIiBhdCBibG9jayA1IG9mZnNldCAxNTIwIGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0 NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0NzM4MzIKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTUyMC4uLgplbnRyeSAid2dldHJjIiBhdCBibG9j ayAwIG9mZnNldCAzMjA4IGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTUwNDg4CmVudHJ5ICJsaWJhbXJ3YjMiIGF0IGJsb2NrIDUgb2Zmc2V0IDE1 NjggaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMjQ3Mzg0NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTY4 Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyMDguLi4KZW50 cnkgImxpbnV4LWltYWdlLTIuNi4yNi1lZWUtY29yZTIiIGF0IGJsb2NrIDUgb2Zmc2V0IDE3MTIg aW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg Mjc0MzE2OAplbnRyeSAid3BhX3N1cHBsaWNhbnQiIGF0IGJsb2NrIDAgb2Zmc2V0IDMyMzIgaW4g ZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMzkwODkK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIzMi4uLgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNzEyLi4uCmVudHJ5ICJwb3B1bGFy aXR5LWNvbnRlc3QuY29uZiIgYXQgYmxvY2sgMCBvZmZzZXQgMzI2NCBpbiBkaXJlY3RvcnkgaW5v ZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMzOTExNQplbnRyeSAieGZjZTQt Z2VubW9uLXBsdWdpbiIgYXQgYmxvY2sgNSBvZmZzZXQgMTgzMiBpbiBkaXJlY3RvcnkgaW5vZGUg NDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTgzMjc4CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4MzIuLi4KCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzI2NC4uLgplbnRyeSAiYm9vdGNoYXJ0IiBhdCBibG9j ayA1IG9mZnNldCAxODg4IGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDI3NzY0MDgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMTg4OC4uLgplbnRyeSAieGZjZTQtbW91bnQtcGx1Z2luIiBhdCBibG9jayA1IG9m ZnNldCAxOTEyIGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDI1ODMyOTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMTkxMi4uLgplbnRyeSAiWDExIiBhdCBibG9jayAwIG9mZnNldCAzMzA0IGluIGRpcmVjdG9y eSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUwNjIzCmVudHJ5ICJi b290Y2hhcnQtdmlldyIgYXQgYmxvY2sgNSBvZmZzZXQgMjAwMCBpbiBkaXJlY3RvcnkgaW5vZGUg NDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNzc2Njc2CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwMDAuLi4KCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzMwNC4uLgplbnRyeSAiZ25vbWUtaWNvbi10aGVtZSIg YXQgYmxvY2sgNSBvZmZzZXQgMjI4MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTQ0MjE1CmVudHJ5ICJvZGJjaW5zdC5pbmkiIGF0IGJs b2NrIDAgb2Zmc2V0IDMzNDQgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSA0MDc5NjAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzM0NC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAy MjgwLi4uCmVudHJ5ICJtYWlsbmFtZSIgYXQgYmxvY2sgMCBvZmZzZXQgMzQwOCBpbiBkaXJlY3Rv cnkgaW5vZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDY2NwoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNDA4Li4uCmVudHJ5ICJsaWJvcGVub2Jl eDEiIGF0IGJsb2NrIDUgb2Zmc2V0IDI0MDAgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg2NDczOQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAyNDAwLi4uCmVudHJ5ICJiYXNoX2NvbXBsZXRpb24iIGF0IGJs b2NrIDAgb2Zmc2V0IDM0MzIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxNjM5MDYKZW50cnkgImdub2tpaS1jb21tb24iIGF0IGJsb2NrIDUgb2Zm c2V0IDI4MzIgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjA2MzEzNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAyODMyLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM0MzIu Li4KZW50cnkgInhmY2U0LWdvb2RpZXMiIGF0IGJsb2NrIDUgb2Zmc2V0IDMxMzYgaW4gZGlyZWN0 b3J5IGlub2RlIDQxOTQ0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjU4MzM0MApl bnRyeSAibWFpbC5yYyIgYXQgYmxvY2sgMCBvZmZzZXQgMzQ2NCBpbiBkaXJlY3RvcnkgaW5vZGUg MTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2Mzk3OAoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNDY0Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDMxMzYuLi4KZW50cnkgIm1hZ2ljIiBhdCBibG9jayAwIG9mZnNl dCAzNDg4IGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTY0MDAyCmVudHJ5ICJsaWJxdDQtdGVzdCIgYXQgYmxvY2sgNSBvZmZzZXQgMzM1MiBpbiBk aXJlY3RvcnkgaW5vZGUgNDE5NDQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNzc2 NjgyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMzNTIuLi4KCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzQ4OC4uLgplbnRyeSAibG0t c2Vuc29ycyIgYXQgYmxvY2sgNSBvZmZzZXQgMzU1MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQz NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTgzMzUyCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM1NTIuLi4KZW50cnkgImxpYmNvbW1vbnMtY2xpLWph dmEiIGF0IGJsb2NrIDUgb2Zmc2V0IDM3NTIgaW4gZGlyZWN0b3J5IGlub2RlIDQxOTQ0MzcgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjc3NjQxNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAzNzUyLi4uCmVudHJ5ICJtYWdpYy5taW1lIiBhdCBibG9jayAw IG9mZnNldCAzNTA0IGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTY0MDI2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDM1MDQuLi4KZW50cnkgImVzbXRwcmMiIGF0IGJsb2NrIDAgb2Zmc2V0IDM1NDQgaW4gZGlyZWN0 b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM4MzUKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzU0NC4uLgplbnRyeSAiZ2dpIiBh dCBibG9jayAwIG9mZnNldCAzNTY4IGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMjUwNzAxMwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzNTY4Li4uCmVudHJ5ICJjb21wbGV0ZS50Y3NoIiBhdCBibG9jayAwIG9mZnNl dCAzNjAwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNDkyNjcwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM2MDAu Li4KZW50cnkgImFsaWFzZXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDM2NzIgaW4gZGlyZWN0b3J5IGlu b2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NjUKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzY3Mi4uLgplbnRyeSAiZ3NzYXBpX21lY2guY29u ZiIgYXQgYmxvY2sgMCBvZmZzZXQgMzc3NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMTc3MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzNzc2Li4uCmVudHJ5ICJsZGFwIiBhdCBibG9jayAwIG9mZnNldCAzODE2 IGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjAx NzUyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM4MTYuLi4KZW50 cnkgIm1pbWUudHlwZXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDM4MzIgaW4gZGlyZWN0b3J5IGlub2Rl IDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDE3OTgKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzgzMi4uLgplbnRyeSAibXlzcWwiIGF0IGJsb2Nr IDAgb2Zmc2V0IDM4NTYgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxNTk4OTU5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDM4NTYuLi4KZW50cnkgImF0LmRlbnkiIGF0IGJsb2NrIDAgb2Zmc2V0IDM4NzIgaW4gZGly ZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM4NjcKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzg3Mi4uLgplbnRyeSAidXBk YXRlZGIuY29uZiIgYXQgYmxvY2sgMCBvZmZzZXQgMzkyOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTMy IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMTgwNwoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzOTI4Li4uCmVudHJ5ICJtdG9vbHMuY29uZiIgYXQgYmxv Y2sgMCBvZmZzZXQgMzk1MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDIwMTgwMAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAzOTUyLi4uCmVudHJ5ICJNdXR0cmMiIGF0IGJsb2NrIDAgb2Zmc2V0IDM5NzYgaW4gZGly ZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDE4MTkKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzk3Ni4uLgplbnRyeSAidWNm LmNvbmYiIGF0IGJsb2NrIDAgb2Zmc2V0IDQwMDAgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDMyNjcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgNDAwMC4uLgplbnRyeSAic2FtYmEiIGF0IGJsb2NrIDAgb2Zmc2V0 IDQwMjQgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxODUwOTAyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQwMjQu Li4KZW50cnkgImluZXRkLmNvbmYiIGF0IGJsb2NrIDAgb2Zmc2V0IDQwNDAgaW4gZGlyZWN0b3J5 IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDMyODcKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDA0MC4uLgplbnRyeSAibWFpbGNhcC5v cmRlciIgYXQgYmxvY2sgMCBvZmZzZXQgNDA2NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMTc5OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCA0MDY0Li4uCmVudHJ5ICJsaWJwYXBlci5kIiBhdCBibG9jayAxIG9m ZnNldCA0OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDM1ODkxMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0OC4u LgplbnRyeSAicmVzb2x2Y29uZiIgYXQgYmxvY2sgMSBvZmZzZXQgMTc2IGluIGRpcmVjdG9yeSBp bm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU5MDM1CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3Ni4uLgplbnRyeSAiZXNvdW5kIiBhdCBi bG9jayAxIG9mZnNldCAzNTIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxMjc2MjE1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDM1Mi4uLgplbnRyeSAicGFwZXJzaXplIiBhdCBibG9jayAxIG9mZnNldCA3NjggaW4g ZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDU3MDkw CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDc2OC4uLgplbnRyeSAi YTJwcy5jZmciIGF0IGJsb2NrIDEgb2Zmc2V0IDc5MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1ODk0NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCA3OTIuLi4KZW50cnkgImEycHMtc2l0ZS5jZmciIGF0IGJsb2Nr IDEgb2Zmc2V0IDgxNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDM1ODk0NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCA4MTYuLi4KZW50cnkgImNoa3RleHJjIiBhdCBibG9jayAxIG9mZnNldCA4NDAgaW4gZGlyZWN0 b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTkwNjgKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODQwLi4uCmVudHJ5ICJ0cy5jb25m IiBhdCBibG9jayAxIG9mZnNldCA4NjQgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSA0MjMwNzkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgODY0Li4uCmVudHJ5ICJzdWRvZXJzIiBhdCBibG9jayAxIG9mZnNldCA4ODgg aW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDU3 NjI1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDg4OC4uLgplbnRy eSAiZ25vbWUtdmZzLW1pbWUtbWFnaWMiIGF0IGJsb2NrIDEgb2Zmc2V0IDkxMiBpbiBkaXJlY3Rv cnkgaW5vZGUgMTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzNTQ3OTMKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgOTEyLi4uCmVudHJ5ICJtb3pwbHVn Z2VycmMiIGF0IGJsb2NrIDEgb2Zmc2V0IDk0NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4MDk5NjQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgOTQ0Li4uCmVudHJ5ICJzY3JvbGxrZWVwZXIuY29uZiIgYXQgYmxv Y2sgMSBvZmZzZXQgOTY4IGluIGRpcmVjdG9yeSBpbm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTg1MDk4OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA5NjguLi4KZW50cnkgImphdmEtNi1zdW4iIGF0IGJsb2NrIDEgb2Zmc2V0IDEwODggaW4g ZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTIwMDcw CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwODguLi4KZW50cnkg Im9kYmMuaW5pIiBhdCBibG9jayAxIG9mZnNldCAxMTEyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzIg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA3OTU5CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExMTIuLi4KZW50cnkgImNhLWNlcnRpZmljYXRlcyIgYXQg YmxvY2sgMSBvZmZzZXQgMTE3NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDExMjU4OTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMTE3Ni4uLgplbnRyeSAiY2EtY2VydGlmaWNhdGVzLmNvbmYiIGF0IGJsb2NrIDEg b2Zmc2V0IDEyNjQgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSA0MDk4MjgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MTI2NC4uLgplbnRyeSAidmdhIiBhdCBibG9jayAxIG9mZnNldCAxMzQ0IGluIGRpcmVjdG9yeSBp bm9kZSAxMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUwNzAyMAoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzQ0Li4uCmVudHJ5ICJvcGVuYWwiIGF0 IGJsb2NrIDEgb2Zmc2V0IDEzOTIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMTM2MDAwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDEzOTIuLi4KZW50cnkgIm1wbGF5ZXIiIGF0IGJsb2NrIDEgb2Zmc2V0IDE0OTYg aW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDcz ODU0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE0OTYuLi4KZW50 cnkgImdub2tpaXJjIiBhdCBibG9jayAxIG9mZnNldCAxNjA4IGluIGRpcmVjdG9yeSBpbm9kZSAx MzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA2MzEzNQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNjA4Li4uCmVudHJ5ICJib290Y2hhcnRkLmNvbmYi IGF0IGJsb2NrIDEgb2Zmc2V0IDE2NzIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAyNzc2NDA2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDE2NzIuLi4KZW50cnkgInNlbnNvcnMzLmNvbmYiIGF0IGJsb2NrIDEgb2Zm c2V0IDE3OTIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyNTgzMzY3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3 OTIuLi4KZW50cnkgImFjY2VscyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzQgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjUwMjc5MwpqdW5raW5nIGVudHJ5ICJhY2NlbHMiIGluIGRp cmVjdG9yeSBpbm9kZSAxMzQKZW50cnkgIlZpbSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzQg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjY0ODk4MQpqdW5raW5nIGVudHJ5ICJWaW0i IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQKZW50cnkgImV4dGVuZGVkX3N0YXRlcyIgaW4gc2hvcnRm b3JtIGRpcmVjdG9yeSAxMzUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTA1NQpqdW5r aW5nIGVudHJ5ICJleHRlbmRlZF9zdGF0ZXMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzUKZW50cnkg InNyY3BrZ2NhY2hlLmJpbiIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzYgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTUwNjE5Cmp1bmtpbmcgZW50cnkgInNyY3BrZ2NhY2hlLmJpbiIg aW4gZGlyZWN0b3J5IGlub2RlIDEzNgplbnRyeSAicGtnY2FjaGUuYmluIiBpbiBzaG9ydGZvcm0g ZGlyZWN0b3J5IDEzNiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTU2NTkKanVua2lu ZyBlbnRyeSAicGtnY2FjaGUuYmluIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM2CmVudHJ5ICJkcGtn IiBhdCBibG9jayAwIG9mZnNldCAzODQgaW4gZGlyZWN0b3J5IGlub2RlIDEzNyByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSA0MTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMzg0Li4uCmVudHJ5ICJlMmZzcHJvZ3MiIGF0IGJsb2NrIDAgb2Zmc2V0IDQyNCBp biBkaXJlY3RvcnkgaW5vZGUgMTM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ3OQoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MjQuLi4KZW50cnkgImlu aXRzY3JpcHRzIiBhdCBibG9jayAwIG9mZnNldCA0NDggaW4gZGlyZWN0b3J5IGlub2RlIDEzNyBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgNDQ4Li4uCmVudHJ5ICJsaW5kYSIgYXQgYmxvY2sgMCBvZmZzZXQg NDg4IGluIGRpcmVjdG9yeSBpbm9kZSAxMzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg NzcwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ4OC4uLgplbnRy eSAidGFic2V0IiBhdCBibG9jayAwIG9mZnNldCA1MjggaW4gZGlyZWN0b3J5IGlub2RlIDEzNyBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA4MzgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgNTI4Li4uCmVudHJ5ICJ6b25laW5mbyIgYXQgYmxvY2sgMCBvZmZz ZXQgNjA4IGluIGRpcmVjdG9yeSBpbm9kZSAxMzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMzIwNTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjA4Li4u CmVudHJ5ICJ0aGVtZXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDcyOCBpbiBkaXJlY3RvcnkgaW5vZGUg MTM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMzA2OQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA3MjguLi4KZW50cnkgImFwdGl0dWRlIiBhdCBibG9j ayAwIG9mZnNldCA3NjAgaW4gZGlyZWN0b3J5IGlub2RlIDEzNyByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSA1NzA2MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCA3NjAuLi4KZW50cnkgImNhbGVuZGFyIiBhdCBibG9jayAwIG9mZnNldCA4MTYgaW4gZGlyZWN0 b3J5IGlub2RlIDEzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzIwNgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4MTYuLi4KZW50cnkgImdudXBnIiBh dCBibG9jayAwIG9mZnNldCA5MjggaW4gZGlyZWN0b3J5IGlub2RlIDEzNyByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSA1NzQxMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCA5MjguLi4KZW50cnkgImdjb25mIiBhdCBibG9jayAwIG9mZnNldCA5NDQgaW4gZGly ZWN0b3J5IGlub2RlIDEzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjU5MDUKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgOTQ0Li4uCmVudHJ5ICJpZnVw ZG93biIgYXQgYmxvY2sgMCBvZmZzZXQgMTAyNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTM3IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3NDYwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDEwMjQuLi4KZW50cnkgImltYWdlcyIgYXQgYmxvY2sgMCBvZmZzZXQg MTE0NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDkwNTMyMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMTQ0Li4u CmVudHJ5ICJzaG0iIGF0IGJsb2NrIDAgb2Zmc2V0IDI3NTIgaW4gZGlyZWN0b3J5IGlub2RlIDQx OTQ0NDEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzIwNjAKZW50cnkgInRleC1jb21t b24iIGF0IGJsb2NrIDAgb2Zmc2V0IDEyMDAgaW4gZGlyZWN0b3J5IGlub2RlIDEzNyByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA5MDUzNTAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMTIwMC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAyNzUyLi4uCmVudHJ5ICJ0YXNrc2VsIiBhdCBibG9jayAwIG9mZnNldCAxMjMyIGlu IGRpcmVjdG9yeSBpbm9kZSAxMzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUwNDYy CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyMzIuLi4KZW50cnkg InRodW1ibmFpbGVycyIgYXQgYmxvY2sgMCBvZmZzZXQgMTI1NiBpbiBkaXJlY3RvcnkgaW5vZGUg MTM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3MzgzMDUKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTI1Ni4uLgplbnRyeSAiLlgxMS11bml4IiBpbiBz aG9ydGZvcm0gZGlyZWN0b3J5IDQxOTQ0NDMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg Mjc0MzE5MgplbnRyeSAidmltIiBhdCBibG9jayAwIG9mZnNldCAxMjgwIGluIGRpcmVjdG9yeSBp bm9kZSAxMzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUwNDc4CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyODAuLi4KanVua2luZyBlbnRyeSAiLlgx MS11bml4IiBpbiBkaXJlY3RvcnkgaW5vZGUgNDE5NDQ0MwplbnRyeSAiVGh1bmFyIiBhdCBibG9j ayAwIG9mZnNldCAxMjk2IGluIGRpcmVjdG9yeSBpbm9kZSAxMzcgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTczODMyMAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAxMjk2Li4uCmVudHJ5ICJ0ZXhtZi10ZXhsaXZlIiBhdCBibG9jayAwIG9mZnNldCAxMzM2 IGluIGRpcmVjdG9yeSBpbm9kZSAxMzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3 NjE3MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzM2Li4uCmVu dHJ5ICJjb25zb2xldHJhbnMiIGF0IGJsb2NrIDAgb2Zmc2V0IDE0MjQgaW4gZGlyZWN0b3J5IGlu b2RlIDEzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDM2MTcKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQyNC4uLgplbnRyeSAieGZ3bTQiIGF0IGJs b2NrIDAgb2Zmc2V0IDE1MDQgaW4gZGlyZWN0b3J5IGlub2RlIDEzNyByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxMjc2NzgzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDE1MDQuLi4KZW50cnkgImtleW1hcHMiIGF0IGJsb2NrIDAgb2Zmc2V0IDE1MzYgaW4g ZGlyZWN0b3J5IGlub2RlIDEzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDM3MzYK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTUzNi4uLgplbnRyeSAi bHl4IiBhdCBibG9jayAwIG9mZnNldCAxNjMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzcgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTczODUwNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAxNjMyLi4uCmVudHJ5ICJzYW1iYSIgYXQgYmxvY2sgMCBvZmZzZXQg MjIwOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDE4NTA5NTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjIwOC4u LgplbnRyeSAiZ25vbWUiIGF0IGJsb2NrIDAgb2Zmc2V0IDIyODggaW4gZGlyZWN0b3J5IGlub2Rl IDEzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjg3OTA1CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIyODguLi4KZW50cnkgIm9tZiIgYXQgYmxvY2sg MCBvZmZzZXQgMjM0NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDEyODc5MzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMjM0NC4uLgplbnRyeSAiYXBwbGljYXRpb25zIiBhdCBibG9jayAwIG9mZnNldCAyNDMyIGlu IGRpcmVjdG9yeSBpbm9kZSAxMzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDg5ODU3 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI0MzIuLi4KZW50cnkg InB5dGhvbiIgYXQgYmxvY2sgMCBvZmZzZXQgMjQ4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTM3IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ4OTk1NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAyNDg4Li4uCmVudHJ5ICJhcHBzIiBhdCBibG9jayAwIG9mZnNl dCAyNTM2IGluIGRpcmVjdG9yeSBpbm9kZSAxMzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNDg5OTU5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1MzYu Li4KZW50cnkgInB5dGhvbi1zdXBwb3J0IiBhdCBibG9jayAwIG9mZnNldCAyNjQ4IGluIGRpcmVj dG9yeSBpbm9kZSAxMzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDg5OTc2CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI2NDguLi4KZW50cnkgImF2YWhp IiBhdCBibG9jayAwIG9mZnNldCAyNjgwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzcgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMzU5MDEzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDI2ODAuLi4KZW50cnkgInB5Y2VudHJhbC1kYXRhIiBhdCBibG9jayAwIG9m ZnNldCAyNzIwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgNDkwMDE5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI3 MjAuLi4KZW50cnkgInhzZXJ2ZXIteG9yZyIgYXQgYmxvY2sgMCBvZmZzZXQgMjc2OCBpbiBkaXJl Y3RvcnkgaW5vZGUgMTM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NTA2NjIKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjc2OC4uLgplbnRyeSAidGV4 aW5mbyIgYXQgYmxvY2sgMCBvZmZzZXQgMzAwOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTM3IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ5MjY4OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAzMDA4Li4uCmVudHJ5ICJtaW1lIiBhdCBibG9jayAwIG9mZnNldCAz MjQwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTM1NTAwNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMjQwLi4u CmVudHJ5ICJsYW5ndWFnZS1lbnYiIGF0IGJsb2NrIDAgb2Zmc2V0IDMzMjAgaW4gZGlyZWN0b3J5 IGlub2RlIDEzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2MDUzOTcKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzMyMC4uLgplbnRyeSAieHVscnVubmVy LTEuOSIgYXQgYmxvY2sgMCBvZmZzZXQgMzQyNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTM3IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg4MzMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzQyNC4uLgplbnRyeSAiZGVmb21hIiBhdCBibG9jayAwIG9mZnNl dCAzNjQwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMjUyMTI1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM2NDAu Li4KZW50cnkgIkltYWdlTWFnaWNrLTYuMy43IiBhdCBibG9jayAwIG9mZnNldCAzNjY0IGluIGRp cmVjdG9yeSBpbm9kZSAxMzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4ODk4MwoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNjY0Li4uCmVudHJ5ICJw by1kZWJjb25mIiBhdCBibG9jayAwIG9mZnNldCAzODI0IGluIGRpcmVjdG9yeSBpbm9kZSAxMzcg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE5NTEwOQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzODI0Li4uCmVudHJ5ICJtb2Rhc3MiIGF0IGJsb2NrIDAg b2Zmc2V0IDM4ODAgaW4gZGlyZWN0b3J5IGlub2RlIDEzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxMTk1NTY2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDM4ODAuLi4KZW50cnkgImxpbnV4LXNvdW5kLWJhc2UiIGF0IGJsb2NrIDAgb2Zmc2V0IDM5MDQg aW4gZGlyZWN0b3J5IGlub2RlIDEzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg5 NDkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzkwNC4uLgplbnRy eSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDkzIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI5MAplbnRyeSAieGZjZS1tY3MtcGx1Z2lucyIg YXQgYmxvY2sgMCBvZmZzZXQgMzkzNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM3IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDE5MDUwMTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMzkzNi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAzMi4uLgplbnRyeSAiYWxzYSIgYXQgYmxvY2sgMCBvZmZzZXQgNDAxNiBpbiBkaXJlY3Rv cnkgaW5vZGUgMTM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1OTAwOAoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MDE2Li4uCmVudHJ5ICJnYWxjdWxh dG9yIiBhdCBibG9jayAwIG9mZnNldCA0MDcyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzcgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA3Njc4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDQwNzIuLi4KZW50cnkgImludGx0b29sLWRlYmlhbiIgYXQgYmxvY2sg MSBvZmZzZXQgMTI4IGluIGRpcmVjdG9yeSBpbm9kZSAxMzcgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTE5NTEwNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAxMjguLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA0MTk0NDkzCmVudHJ5ICJsYXB0b3At bW9kZS10b29scyIgYXQgYmxvY2sgMSBvZmZzZXQgMjgwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzcg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEyNTg3NgoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAyODAuLi4KZW50cnkgImxpYnNlbnNvcnM0IiBhdCBibG9j ayAxIG9mZnNldCAzOTIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNyByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAyMzY0NDczCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDM5Mi4uLgplbnRyeSAiQXBhY2hlLTIuMCIgYXQgYmxvY2sgMCBvZmZzZXQgNDggaW4gZGly ZWN0b3J5IGlub2RlIDEzOCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjkKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDguLi4KZW50cnkgIkFydGlzdGlj IiBhdCBibG9jayAwIG9mZnNldCA3MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM4IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDMzMAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCA3Mi4uLgplbnRyeSAiQlNEIiBhdCBibG9jayAwIG9mZnNldCA5NiBpbiBkaXJlY3Rv cnkgaW5vZGUgMTM4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMzMQoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5Ni4uLgplbnRyeSAiR0ZETC0xLjIiIGF0 IGJsb2NrIDAgb2Zmc2V0IDExMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM4IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDMzMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAxMTIuLi4KZW50cnkgIkdQTC0yIiBhdCBibG9jayAwIG9mZnNldCAxMzYgaW4gZGlyZWN0 b3J5IGlub2RlIDEzOCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMzMKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTM2Li4uCmVudHJ5ICJHUEwtMyIgYXQg YmxvY2sgMCBvZmZzZXQgMTUyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzggcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMzM0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDE1Mi4uLgplbnRyeSAiTEdQTC0yIiBhdCBibG9jayAwIG9mZnNldCAxNjggaW4gZGlyZWN0 b3J5IGlub2RlIDEzOCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMzUKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTY4Li4uCmVudHJ5ICJMR1BMLTIuMSIg YXQgYmxvY2sgMCBvZmZzZXQgMTkyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzggcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMzM3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDE5Mi4uLgplbnRyeSAiTEdQTC0zIiBhdCBibG9jayAwIG9mZnNldCAyMTYgaW4gZGly ZWN0b3J5IGlub2RlIDEzOCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMzgKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjE2Li4uCmVudHJ5ICJHRkRMIiBh dCBibG9jayAwIG9mZnNldCAyNDAgaW4gZGlyZWN0b3J5IGlub2RlIDEzOCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAzNDMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMjQwLi4uCmVudHJ5ICJMR1BMIiBhdCBibG9jayAwIG9mZnNldCAyNTYgaW4gZGlyZWN0 b3J5IGlub2RlIDEzOCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNDUKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjU2Li4uCmVudHJ5ICJSRUFETUUiIGlu IHNob3J0Zm9ybSBkaXJlY3RvcnkgMTQwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMw OQpqdW5raW5nIGVudHJ5ICJSRUFETUUiIGluIGRpcmVjdG9yeSBpbm9kZSAxNDAKZW50cnkgIkFV VEhPUlMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTQwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDMxMApqdW5raW5nIGVudHJ5ICJBVVRIT1JTIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQw CmVudHJ5ICJjb3B5cmlnaHQiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTQwIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDMxMQpqdW5raW5nIGVudHJ5ICJjb3B5cmlnaHQiIGluIGRpcmVj dG9yeSBpbm9kZSAxNDAKZW50cnkgImNoYW5nZWxvZy5neiIgaW4gc2hvcnRmb3JtIGRpcmVjdG9y eSAxNDAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzEyCmp1bmtpbmcgZW50cnkgImNo YW5nZWxvZy5neiIgaW4gZGlyZWN0b3J5IGlub2RlIDE0MAplbnRyeSAiTkVXUy5neiIgaW4gc2hv cnRmb3JtIGRpcmVjdG9yeSAxNDAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzEzCmp1 bmtpbmcgZW50cnkgIk5FV1MuZ3oiIGluIGRpcmVjdG9yeSBpbm9kZSAxNDAKZW50cnkgImNoYW5n ZWxvZy5EZWJpYW4uZ3oiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTQwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDMxNApqdW5raW5nIGVudHJ5ICJjaGFuZ2Vsb2cuRGViaWFuLmd6IiBp biBkaXJlY3RvcnkgaW5vZGUgMTQwCmVudHJ5ICJ1c2IuaWRzIiBpbiBzaG9ydGZvcm0gZGlyZWN0 b3J5IDE0OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjgzNjEKanVua2luZyBlbnRy eSAidXNiLmlkcyIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OAplbnRyeSAibWFnaWMiIGluIHNob3J0 Zm9ybSBkaXJlY3RvcnkgMTQ4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2NDAzMQpq dW5raW5nIGVudHJ5ICJtYWdpYyIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OAplbnRyeSAibWFnaWMu bWdjIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDE0OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxNjQwNjQKanVua2luZyBlbnRyeSAibWFnaWMubWdjIiBpbiBkaXJlY3RvcnkgaW5vZGUg MTQ4CmVudHJ5ICJtYWdpYy5taW1lIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDE0OCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjQwNjUKanVua2luZyBlbnRyeSAibWFnaWMubWltZSIg aW4gZGlyZWN0b3J5IGlub2RlIDE0OAplbnRyeSAicGNpLmlkcyIgaW4gc2hvcnRmb3JtIGRpcmVj dG9yeSAxNDggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjAzMzA0Cmp1bmtpbmcgZW50 cnkgInBjaS5pZHMiIGluIGRpcmVjdG9yeSBpbm9kZSAxNDgKZW50cnkgImUyaW5pdHJkX2hlbHBl ciIgYXQgYmxvY2sgMCBvZmZzZXQgMTI4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgNzU0MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAxMjguLi4KZW50cnkgInB0X2Nob3duIiBhdCBibG9jayAwIG9mZnNldCAxOTIg aW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzY4 MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxOTIuLi4KZW50cnkg ImxpYmRiLTQuNi5zbyIgYXQgYmxvY2sgMCBvZmZzZXQgMjQ4IGluIGRpcmVjdG9yeSBpbm9kZSAx NDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDI2CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI0OC4uLgplbnRyeSAicGVybDUiIGF0IGJsb2NrIDAgb2Zm c2V0IDI3MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDY2OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNzIuLi4K ZW50cnkgImxpYnBhbmVsLnNvLjUuNyIgYXQgYmxvY2sgMCBvZmZzZXQgMjg4IGluIGRpcmVjdG9y eSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDMzCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI4OC4uLgplbnRyeSAibGliZm9ybS5zby41 LjciIGF0IGJsb2NrIDAgb2Zmc2V0IDMyMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQzNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzMjAuLi4KZW50cnkgImxpYm1lbnUuc28uNS43IiBhdCBibG9jayAwIG9mZnNl dCAzNTIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA0MzcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzUyLi4uCmVu dHJ5ICJsaWJmb3JtLnNvLjUiIGF0IGJsb2NrIDAgb2Zmc2V0IDM4NCBpbiBkaXJlY3RvcnkgaW5v ZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ0NAoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzODQuLi4KZW50cnkgImxpYnBhbmVsLnNvLjUiIGF0 IGJsb2NrIDAgb2Zmc2V0IDQwOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDQ0NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA0MDguLi4KZW50cnkgImxpYm1lbnUuc28uNSIgYXQgYmxvY2sgMCBvZmZzZXQgNDMyIGlu IGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDUzCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQzMi4uLgplbnRyeSAibGli c3RkYysrLnNvLjYuMC4xMCIgYXQgYmxvY2sgMCBvZmZzZXQgNDU2IGluIGRpcmVjdG9yeSBpbm9k ZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNzUwCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ1Ni4uLgplbnRyeSAibGlic3RkYysrLnNvLjYiIGF0 IGJsb2NrIDAgb2Zmc2V0IDQ4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDc1MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA0ODguLi4KZW50cnkgInBlcmwiIGF0IGJsb2NrIDAgb2Zmc2V0IDUyMCBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDk0NQplbnRyeSAiYWN0 aW9ucyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA0MjExNjI0IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDI4NjMyMTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgNTIwLi4uCmVudHJ5ICJsaWJ6LnNvLjEuMi4zLjMiIGF0IGJsb2NrIDAgb2Zmc2V0IDUzNiBp biBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMyMDU2 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDUzNi4uLgpqdW5raW5n IGVudHJ5ICJhY3Rpb25zIiBpbiBkaXJlY3RvcnkgaW5vZGUgNDIxMTYyNAplbnRyeSAibGliei5z by4xIiBhdCBibG9jayAwIG9mZnNldCA1NjggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjA1NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCA1NjguLi4KZW50cnkgImxpYlhhdy5zby43IiBhdCBibG9jayAwIG9mZnNl dCA1OTIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyNTIxMDYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTkyLi4u CmVudHJ5ICJtaW1ldHlwZXMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNDIxMTYyNCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODYzMzQ1CmVudHJ5ICJsaWJ4a2JmaWxlLnNvLjEuMC4y IiBhdCBibG9jayAwIG9mZnNldCA2MzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAzNTg3ODQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgNjMyLi4uCmp1bmtpbmcgZW50cnkgIm1pbWV0eXBlcyIgaW4gZGlyZWN0b3J5 IGlub2RlIDQyMTE2MjQKZW50cnkgImxpYlhmdC5zby4yIiBhdCBibG9jayAwIG9mZnNldCA2NjQg aW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg3 OTEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjY0Li4uCmVudHJ5 ICJsaWJhcHQtcGtnLWxpYmM2LjctNi5zby40LjYuMCIgYXQgYmxvY2sgMCBvZmZzZXQgNjg4IGlu IGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzIwOTQK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjg4Li4uCmVudHJ5ICJs aWJJQ0Uuc28uNiIgYXQgYmxvY2sgMCBvZmZzZXQgNzQ0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUxOTEzCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDc0NC4uLgplbnRyeSAibGliYXB0LXBrZy1saWJjNi43LTYu c28uNC42IiBhdCBibG9jayAwIG9mZnNldCA3NzYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NjY1OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCA3NzYuLi4KZW50cnkgImxpYmRidXMtMS5zby4zIiBhdCBibG9jayAw IG9mZnNldCA4MzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAzMzkwODIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg ODMyLi4uCmVudHJ5ICJsaWJhcHQtaW5zdC1saWJjNi43LTYuc28uMS4xLjAiIGF0IGJsb2NrIDAg b2Zmc2V0IDg3MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDMyMDc4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDg3 Mi4uLgplbnRyeSAiaTY4NiIgYXQgYmxvY2sgMCBvZmZzZXQgOTIwIGluIGRpcmVjdG9yeSBpbm9k ZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjc1NjEKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgOTIwLi4uCmVudHJ5ICJsaWJTTS5zby42LjAuMCIg YXQgYmxvY2sgMCBvZmZzZXQgOTM2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMjUxOTA2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDkzNi4uLgplbnRyeSAibGliYXB0LWluc3QtbGliYzYuNy02LnNvLjEuMSIgYXQg YmxvY2sgMCBvZmZzZXQgOTY4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgNTY2NjEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgOTY4Li4uCmVudHJ5ICJsaWJTTS5zby42IiBhdCBibG9jayAwIG9mZnNldCAxMDA4IGlu IGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUxOTEx CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwMDguLi4KZW50cnkg ImxpYlh0LnNvLjYuMC4wIiBhdCBibG9jayAwIG9mZnNldCAxMDU2IGluIGRpcmVjdG9yeSBpbm9k ZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUxOTIwCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwNTYuLi4KZW50cnkgImdyb2ZmIiBhdCBibG9j ayAwIG9mZnNldCAxMDg4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgNTc0MTQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMTA4OC4uLgplbnRyeSAibGliWGZvbnQuc28uMSIgYXQgYmxvY2sgMCBvZmZzZXQgMTEwNCBp biBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1NjE0 OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMTA0Li4uCmVudHJ5 ICJsaWJwY3NjbGl0ZS5zby4xLjAuMCIgYXQgYmxvY2sgMCBvZmZzZXQgMTE0NCBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMzOTA4MwoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMTQ0Li4uCmVudHJ5ICIuLiIgYXQg YmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQyMTE3NTMgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMjg2MjkxMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzMi4uLgplbnRyeSAibGliY3dpZGdldC5zby4zLjAuMCIgYXQgYmxvY2sgMCBv ZmZzZXQgMTE4NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDU3NjMwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEx ODQuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA0MjExNzUzCmVudHJ5ICJsaWJwY3NjbGl0 ZS5zby4xIiBhdCBibG9jayAwIG9mZnNldCAxMjE2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzM5MDg4CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDEyMTYuLi4KZW50cnkgImxpYmN3aWRnZXQuc28uMyIgYXQgYmxv Y2sgMCBvZmZzZXQgMTI1NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDU3NjMxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDEyNTYuLi4KZW50cnkgImxpYnBjcmUuc28uMyIgYXQgYmxvY2sgMCBvZmZzZXQgMTMwNCBp biBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2Mzg2 MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzA0Li4uCmVudHJ5 ICJsaWJlcHQuc28uMC41LjI1IiBhdCBibG9jayAwIG9mZnNldCAxMzI4IGluIGRpcmVjdG9yeSBp bm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTc2MzkKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTMyOC4uLgplbnRyeSAibGliWHQuc28uNiIg YXQgYmxvY2sgMCBvZmZzZXQgMTM2MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDI1MTkyMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAxMzYwLi4uCmVudHJ5ICJsaWJlcHQuc28uMCIgYXQgYmxvY2sgMCBvZmZzZXQg MTM5MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDU3NjQwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEzOTIuLi4K ZW50cnkgInBrZ2NvbmZpZyIgYXQgYmxvY2sgMCBvZmZzZXQgMTQxNiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2Mzc2NwoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNDE2Li4uCmVudHJ5ICJsaWJnY3J5cHQuc28u MTEuNC40IiBhdCBibG9jayAwIG9mZnNldCAxNDU2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTc2NDEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMTQ1Ni4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMy IGluIGRpcmVjdG9yeSBpbm9kZSA0MjExODcyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDI4NjI5MTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4K ZW50cnkgImxpYlhtdXUuc28uMSIgYXQgYmxvY2sgMCBvZmZzZXQgMTQ4OCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1ODc5OQpubyAuLiBlbnRy eSBmb3IgZGlyZWN0b3J5IDQyMTE4NzIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMTQ4OC4uLgplbnRyeSAibGliZ2NyeXB0LnNvLjExIiBhdCBibG9jayAwIG9mZnNl dCAxNTI4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNTc2NDIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTUyOC4u LgplbnRyeSAibGliZ2RibS5zby4zLjAuMCIgYXQgYmxvY2sgMCBvZmZzZXQgMTYwMCBpbiBkaXJl Y3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3NjQzCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2MDAuLi4KZW50cnkgIi4uIiBh dCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDIxMTg5MCByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAyODYyOTEyCmVudHJ5ICJsaWJwbmcxMi5zby4wLjI3LjAiIGF0 IGJsb2NrIDAgb2Zmc2V0IDE2NDggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAyNTIwOTEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMTY0OC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzMi4uLgplbnRyeSAibGliZ2RibV9jb21wYXQuc28uMy4wLjAiIGF0IGJsb2NrIDAgb2Zmc2V0 IDE2ODAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA1NzY0NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNjgwLi4u CmVudHJ5ICJsaWJwbmcxMi5zby4wIiBhdCBibG9jayAwIG9mZnNldCAxNzIwIGluIGRpcmVjdG9y eSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUyMDkyCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3MjAuLi4KZW50cnkgImxpYmdkYm0u c28uMyIgYXQgYmxvY2sgMCBvZmZzZXQgMTc1MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3NjQ4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDE3NTIuLi4KZW50cnkgImxpYmdtcC5zby4zIiBhdCBibG9jayAwIG9m ZnNldCAxNzc2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMzU4Nzk3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3 NzYuLi4KZW50cnkgImxpYmdkYm1fY29tcGF0LnNvLjMiIGF0IGJsb2NrIDAgb2Zmc2V0IDE4MTYg aW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzY0 OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODE2Li4uCmVudHJ5 ICJsaWJYYXUuc28uNi4wLjAiIGF0IGJsb2NrIDAgb2Zmc2V0IDE4NDggaW4gZGlyZWN0b3J5IGlu b2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM2ODAKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTg0OC4uLgplbnRyeSAibGliZ251dGxzLnNv LjI2LjQuNiIgYXQgYmxvY2sgMCBvZmZzZXQgMTg4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3NjU0CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDE4ODguLi4KZW50cnkgImxpYnRhc24xLnNvLjMuMC4xNiIgYXQg YmxvY2sgMCBvZmZzZXQgMTkyMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDY3NTY2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDE5MjAuLi4KZW50cnkgInczbSIgYXQgYmxvY2sgMCBvZmZzZXQgMTk1MiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ5MjY5NgoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxOTUyLi4uCm5vIC4uIGVudHJ5 IGZvciBkaXJlY3RvcnkgNDIxMTg5MAplbnRyeSAibGliZ251dGxzLW9wZW5zc2wuc28uMjYuNC42 IiBhdCBibG9jayAwIG9mZnNldCAxOTY4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgNTc2NTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTk2OC4uLgplbnRyeSAibG9jYWxlIiBhdCBibG9jayAwIG9mZnNldCAyMDA4 IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUw NjIyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwMDguLi4KZW50 cnkgImxpYmdudXRscy1leHRyYS5zby4yNi40LjYiIGF0IGJsb2NrIDAgb2Zmc2V0IDIwNTYgaW4g ZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzY1NgoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMDU2Li4uCmVudHJ5ICJs aWJlc210cC5sYSIgYXQgYmxvY2sgMCBvZmZzZXQgMjEyMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1MDYxMgoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMTIwLi4uCmVudHJ5ICJsaWJnbnV0bHMtb3BlbnNzbC5z by4yNiIgYXQgYmxvY2sgMCBvZmZzZXQgMjE0NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3NjU3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDIxNDQuLi4KZW50cnkgImxpYlhhdS5zby42IiBhdCBibG9jayAwIG9m ZnNldCAyMTg0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTYzNjgxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIx ODQuLi4KZW50cnkgImxpYmdudXRscy5zby4yNiIgYXQgYmxvY2sgMCBvZmZzZXQgMjIyNCBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3NjU4Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIyMjQuLi4KZW50cnkgImxp YlhtdS5zby42LjIuMCIgYXQgYmxvY2sgMCBvZmZzZXQgMjI3MiBpbiBkaXJlY3RvcnkgaW5vZGUg MTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1MjA5NwoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMjcyLi4uCmVudHJ5ICJsaWJnbnV0bHMtZXh0cmEu c28uMjYiIGF0IGJsb2NrIDAgb2Zmc2V0IDIzMDQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzY1OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyMzA0Li4uCmVudHJ5ICJsaWJkYnVzLTEuc28uMy40LjAiIGF0IGJs b2NrIDAgb2Zmc2V0IDIzMzYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAyMDM5NTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMjMzNi4uLgplbnRyeSAibGliZ3BnLWVycm9yLnNvLjAuMy4wIiBhdCBibG9jayAwIG9m ZnNldCAyMzg0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgNTc2NjAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjM4 NC4uLgplbnRyeSAibGliWGRtY3Auc28uNi4wLjAiIGF0IGJsb2NrIDAgb2Zmc2V0IDI0MTYgaW4g ZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM2ODYK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQxNi4uLgplbnRyeSAi bGliZ3BnLWVycm9yLnNvLjAiIGF0IGJsb2NrIDAgb2Zmc2V0IDI0NTYgaW4gZGlyZWN0b3J5IGlu b2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NzQ1NwoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNDU2Li4uCmVudHJ5ICJsaWJYZG1jcC5zby42 IiBhdCBibG9jayAwIG9mZnNldCAyNDg4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTYzNjg3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDI0ODguLi4KZW50cnkgImxpYmZvcm13LnNvLjUuNyIgYXQgYmxvY2sgMCBv ZmZzZXQgMjUyOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDY3NDYwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1 MjguLi4KZW50cnkgImxpYnhjYi5zby4xLjAuMCIgYXQgYmxvY2sgMCBvZmZzZXQgMjU2MCBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2MzY4OAoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNTYwLi4uCmVudHJ5ICJs aWJtZW51dy5zby41LjciIGF0IGJsb2NrIDAgb2Zmc2V0IDI2MDAgaW4gZGlyZWN0b3J5IGlub2Rl IDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NzQ2MQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjAwLi4uCmVudHJ5ICJsaWJ4Y2Iuc28uMSIgYXQg YmxvY2sgMCBvZmZzZXQgMjYzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE2MzY4OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAyNjMyLi4uCmVudHJ5ICJsaWJwYW5lbHcuc28uNS43IiBhdCBibG9jayAwIG9mZnNl dCAyNjcyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNjc0NjIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjY3Mi4u LgplbnRyeSAibGlieGNiLXhsaWIuc28uMC4wLjAiIGF0IGJsb2NrIDAgb2Zmc2V0IDI3MDQgaW4g ZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM2OTUK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjcwNC4uLgplbnRyeSAi bGliZm9ybXcuc28uNSIgYXQgYmxvY2sgMCBvZmZzZXQgMjc0NCBpbiBkaXJlY3RvcnkgaW5vZGUg MTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDY3NDY1CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI3NDQuLi4KZW50cnkgImxpYnhjYi14bGliLnNvLjAi IGF0IGJsb2NrIDAgb2Zmc2V0IDI3NjggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxNjM2OTYKZW50cnkgImRhdGEiIGF0IGJsb2NrIDAgb2Zmc2V0 IDE4NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDIxMjE3MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyODYyMjY1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4 NC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNzY4Li4uCmVu dHJ5ICJsaWJtZW51dy5zby41IiBhdCBibG9jayAwIG9mZnNldCAyODA4IGluIGRpcmVjdG9yeSBp bm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjc0NjYKZW50cnkgImVtb3Rp Y29ucyIgYXQgYmxvY2sgMCBvZmZzZXQgMzc2IGluIGRpcmVjdG9yeSBpbm9kZSA0MjEyMTcxIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NjIzNjMKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzc2Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDI4MDguLi4KZW50cnkgInRleHQiIGF0IGJsb2NrIDAgb2Zmc2V0IDU2OCBp biBkaXJlY3RvcnkgaW5vZGUgNDIxMjE3MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAy ODYyMzc1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDU2OC4uLgpl bnRyeSAiaW1hZ2UiIGF0IGJsb2NrIDAgb2Zmc2V0IDc0NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDIx MjE3MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODYyNTQyCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDc0NC4uLgplbnRyeSAibGliWDExLnNvLjYuMi4w IiBhdCBibG9jayAwIG9mZnNldCAyODMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTYzNzU3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDI4MzIuLi4KZW50cnkgImxpYnBhbmVsdy5zby41IiBhdCBibG9jayAwIG9m ZnNldCAyODcyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgNjc0NjcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjg3 Mi4uLgplbnRyeSAibGliWDExLnNvLjYiIGF0IGJsb2NrIDAgb2Zmc2V0IDI5MDQgaW4gZGlyZWN0 b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM3NTgKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjkwNC4uLgplbnRyeSAibGlibmV3 dC5zby4wLjUyLjIiIGF0IGJsb2NrIDAgb2Zmc2V0IDI5NDQgaW4gZGlyZWN0b3J5IGlub2RlIDE0 OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NzQ2OAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAyOTQ0Li4uCmVudHJ5ICJsaWJtcC5zby4zIiBhdCBibG9j ayAwIG9mZnNldCAyOTkyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMzU4ODAwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDI5OTIuLi4KZW50cnkgImxpYm5ld3Quc28uMC41MiIgYXQgYmxvY2sgMCBvZmZzZXQgMzAx NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDY3 NDk0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMwMTYuLi4KZW50 cnkgImxpYlhtdS5zby42IiBhdCBibG9jayAwIG9mZnNldCAzMDQ4IGluIGRpcmVjdG9yeSBpbm9k ZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUyMDk4CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMwNDguLi4KZW50cnkgImxpYmhhbC5zby4xLjAu MCIgYXQgYmxvY2sgMCBvZmZzZXQgMzA5NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMyMDU0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDMwOTYuLi4KZW50cnkgImxpYnNhc2wyLnNvLjIuMC4yMiIgYXQgYmxvY2sg MCBvZmZzZXQgMzEzNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDY3NTUzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDMxMzYuLi4KZW50cnkgImxpYlhleHQuc28uNi40LjAiIGF0IGJsb2NrIDAgb2Zmc2V0IDMxNjgg aW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM3 NjEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzE2OC4uLgplbnRy eSAibGlic2FzbDIuc28uMiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIwOCBpbiBkaXJlY3RvcnkgaW5v ZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDY3NTU0CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyMDguLi4KZW50cnkgImxpYlhleHQuc28uNiIg YXQgYmxvY2sgMCBvZmZzZXQgMzIzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDE2Mzc2NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzMjMyLi4uCmVudHJ5ICJnZG0iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyNTYgaW4g ZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjg3OTMy CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyNTYuLi4KZW50cnkg ImxpYnNpZ2MtMi4wLnNvLjAuMC4wIiBhdCBibG9jayAwIG9mZnNldCAzMjcyIGluIGRpcmVjdG9y eSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjc1MTUKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzI3Mi4uLgplbnRyeSAibGliaGFsLnNv LjEiIGF0IGJsb2NrIDAgb2Zmc2V0IDMzMDQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNzAwMjkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMzMwNC4uLgplbnRyeSAibGlic2lnYy0yLjAuc28uMCIgYXQgYmxvY2sg MCBvZmZzZXQgMzM0NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDY3NTE4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDMzNDQuLi4KZW50cnkgImxpYmhhbC1zdG9yYWdlLnNvLjEuMC4wIiBhdCBibG9jayAwIG9mZnNl dCAzMzc2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTcwMDM4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMzNzYu Li4KZW50cnkgImxpYmNyeXB0by5zby4wLjkuOCIgYXQgYmxvY2sgMCBvZmZzZXQgMzQxNiBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDY3NTU5Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM0MTYuLi4KZW50cnkgInN1 cHBvcnRzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDQyODkzODAgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTU1NzU0CmVudHJ5ICJsaWJoYWwtc3RvcmFnZS5zby4xIiBhdCBibG9jayAw IG9mZnNldCAzNDQ4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTcwMDM5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDM0NDguLi4KanVua2luZyBlbnRyeSAic3VwcG9ydHMiIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjg5 MzgwCmVudHJ5ICJsaWJzc2wuc28uMC45LjgiIGF0IGJsb2NrIDAgb2Zmc2V0IDM0ODggaW4gZGly ZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NzU2MAplbnRy eSAiaGliZXJuYXRpb24iIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNDI4OTM4MCByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxNTU3NzIKanVua2luZyBlbnRyeSAiaGliZXJuYXRpb24iIGlu IGRpcmVjdG9yeSBpbm9kZSA0Mjg5MzgwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDM0ODguLi4KZW50cnkgImhjdG9zeXMiIGluIHNob3J0Zm9ybSBkaXJlY3Rvcnkg NDI4OTM4MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDMyODYKanVua2luZyBlbnRy eSAiaGN0b3N5cyIgaW4gZGlyZWN0b3J5IGlub2RlIDQyODkzODMKZW50cnkgImxpYnRhc24xLnNv LjMiIGF0IGJsb2NrIDAgb2Zmc2V0IDM1MjAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NzU2NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzNTIwLi4uCmVudHJ5ICJsaWJtcGZyLnNvLjEiIGF0IGJsb2NrIDAgb2Zm c2V0IDM1NjAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAzNTg4MDcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzU2 MC4uLgplbnRyeSAibGlidXNiLTAuMS5zby40IiBhdCBibG9jayAwIG9mZnNldCAzNTg0IGluIGRp cmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjc1NzUKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzU4NC4uLgplbnRyeSAibGli ZHJtLnNvLjIiIGF0IGJsb2NrIDAgb2Zmc2V0IDM2MzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg4NTgKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzYzMi4uLgplbnRyeSAibGlidXNiLTEuMC5zby4wIiBhdCBi bG9jayAwIG9mZnNldCAzNjU2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgNjc1NzgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzY1Ni4uLgplbnRyeSAibGliWGZpeGVzLnNvLjMuMS4wIiBhdCBibG9jayAwIG9mZnNl dCAzNjg4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMjUxOTA0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM2ODgu Li4KZW50cnkgImxpYnhhcGlhbi5zby4xNS41LjEiIGF0IGJsb2NrIDAgb2Zmc2V0IDM3MjggaW4g ZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NzU4NQoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNzI4Li4uCmVudHJ5ICJs aWJYZml4ZXMuc28uMyIgYXQgYmxvY2sgMCBvZmZzZXQgMzc2MCBpbiBkaXJlY3RvcnkgaW5vZGUg MTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1MTkwNQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNzYwLi4uCmVudHJ5ICJsaWJ4YXBpYW4uc28uMTUi IGF0IGJsb2NrIDAgb2Zmc2V0IDM4MDAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSA2NzU4NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzODAwLi4uCmVudHJ5ICJsaWJYcG0uc28uNC4xMS4wIiBhdCBibG9jayAwIG9m ZnNldCAzODMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTYzNzcyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM4 MzIuLi4KZW50cnkgIm1hbi1kYiIgYXQgYmxvY2sgMCBvZmZzZXQgMzg2NCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDY3NTkxCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM4NjQuLi4KZW50cnkgImxpYlhwbS5zby40 IiBhdCBibG9jayAwIG9mZnNldCAzODg4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjUyMDk5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDM4ODguLi4KZW50cnkgImxpYlhhdzcuc28uNy4wLjAiIGF0IGJsb2NrIDAg b2Zmc2V0IDM5NDQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAyNTIxMDQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg Mzk0NC4uLgplbnRyeSAidGFza3NlbCIgYXQgYmxvY2sgMCBvZmZzZXQgMzk3NiBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1MDM4NwoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzOTc2Li4uCmVudHJ5ICJsaWJYYXc3 LnNvLjciIGF0IGJsb2NrIDAgb2Zmc2V0IDQwMDAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTIxMDUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgNDAwMC4uLgplbnRyeSAibGlic3VwcC5hIiBhdCBibG9jayAwIG9m ZnNldCA0MDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTUwNDY0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQw MzIuLi4KZW50cnkgImxpYklDRS5zby42LjMuMCIgYXQgYmxvY2sgMCBvZmZzZXQgNDA1NiBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1MTkxMgoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MDU2Li4uCmVudHJ5ICJX ZWIiIGF0IGJsb2NrIDAgb2Zmc2V0IDIyNCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5Njk3OCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMjI0Li4uCmVudHJ5ICJsaWJYcmVuZGVyLnNvLjEuMy4wIiBhdCBibG9j ayAxIG9mZnNldCAxNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDE2Mzc4MAplbnRyeSAiRWRpdG9yIiBhdCBibG9jayAwIG9mZnNldCAzMTIgaW4g ZGlyZWN0b3J5IGlub2RlIDQyOTY5NzggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzM2 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMxMi4uLgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNi4uLgplbnRyeSAibGliWGN1cnNv ci5zby4xLjAuMiIgYXQgYmxvY2sgMSBvZmZzZXQgNDggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTIxMTEKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgNDguLi4KZW50cnkgImxpYmxkYXBfci0yLjQuc28uMiIgYXQg YmxvY2sgMSBvZmZzZXQgODAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAyMDE3NTQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgODAuLi4KZW50cnkgImxpYnBjcmVwb3NpeC5zby4zLjEyLjEiIGF0IGJsb2NrIDEgb2Zm c2V0IDEyOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE2Mzg1MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMjgu Li4KZW50cnkgImV4by0wLjMiIGF0IGJsb2NrIDAgb2Zmc2V0IDQxNiBpbiBkaXJlY3RvcnkgaW5v ZGUgNDI5Njk5NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2MzQwCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQxNi4uLgplbnRyeSAibGlibGRhcC0y LjQuc28uMiIgYXQgYmxvY2sgMSBvZmZzZXQgMTY4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjAxNzU2CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDE2OC4uLgplbnRyeSAieGZkZXNrdG9wIiBhdCBibG9jayAwIG9m ZnNldCAyNjA4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk2OTk2IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDE5MDUwODUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMjYwOC4uLgplbnRyeSAibGlicGNyZS5zby4zLjEyLjEiIGF0IGJsb2NrIDEgb2Zmc2V0IDIw OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2 Mzg1MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMDguLi4KZW50 cnkgImxpYmJmZC0yLjE4LjAuMjAwODAxMDMuc28iIGF0IGJsb2NrIDEgb2Zmc2V0IDI0MCBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMzIyOAoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNDAuLi4KZW50cnkgImxp YnBjcmVwb3NpeC5zby4zIiBhdCBibG9jayAxIG9mZnNldCAyODAgaW4gZGlyZWN0b3J5IGlub2Rl IDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM4NjIKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjgwLi4uCmVudHJ5ICJsaWJhbmwuYSIgYXQgYmxv Y2sgMSBvZmZzZXQgMzEyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgNDQ4MDY2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDMxMi4uLgplbnRyeSAibGlieG1sMi5zby4yLjYuMzIiIGF0IGJsb2NrIDEgb2Zmc2V0IDM1 MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2 MzkyOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNTIuLi4KZW50 cnkgImxpYmdtb2R1bGUtMi4wLnNvLjAiIGF0IGJsb2NrIDEgb2Zmc2V0IDM4NCBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODY5NQoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzODQuLi4KZW50cnkgImxpYnhtbDIu c28uMiIgYXQgYmxvY2sgMSBvZmZzZXQgNDE2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYzOTI5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDQxNi4uLgplbnRyeSAianZtIiBhdCBibG9jayAxIG9mZnNldCA0NjQg aW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjE3 MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0NjQuLi4KZW50cnkg ImxpYmlzYy5zby40NC4wLjAiIGF0IGJsb2NrIDEgb2Zmc2V0IDQ4MCBpbiBkaXJlY3RvcnkgaW5v ZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2MzkzMAoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0ODAuLi4KZW50cnkgImxpYmdvYmplY3QtMi4w LnNvLjAiIGF0IGJsb2NrIDEgb2Zmc2V0IDUxMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODY5NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCA1MTIuLi4KZW50cnkgIlNobGlicyIgYXQgYmxvY2sgMCBvZmZzZXQg NDAwIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTQ4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDExNTYzODYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDAw Li4uCmVudHJ5ICJsaWJpc2Muc28uNDQiIGF0IGJsb2NrIDEgb2Zmc2V0IDU0NCBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2MzkzMQoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1NDQuLi4KZW50cnkgImxpYkJyb2tl bkxvY2FsZS5hIiBhdCBibG9jayAxIG9mZnNldCA1NjggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0NDgwNjcKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgNTY4Li4uCmVudHJ5ICJsaWJkZXM0MjUuc28uMy4wIiBhdCBi bG9jayAxIG9mZnNldCA2MDggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxNjM5MzgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgNjA4Li4uCmVudHJ5ICJsaWJsZGFwX3ItMi40LnNvLjIuMS4wIiBhdCBibG9jayAxIG9m ZnNldCA2NDAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyMDE3NDcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjQw Li4uCmVudHJ5ICJsaWJnc3NhcGlfa3JiNS5zby4yLjIiIGF0IGJsb2NrIDEgb2Zmc2V0IDY4OCBp biBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2Mzkz OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2ODguLi4KZW50cnkg ImJhc2UtZmlsZXMucHJlaW5zdCIgYXQgYmxvY2sgMCBvZmZzZXQgMTM2IGluIGRpcmVjdG9yeSBp bm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMyMgoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzYuLi4KZW50cnkgImJhc2UtZmlsZXMu cG9zdGluc3QiIGF0IGJsb2NrIDAgb2Zmc2V0IDE2OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2 MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjQKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMTY4Li4uCmVudHJ5ICJsaWJic2QtY29tcGF0LmEiIGF0IGJs b2NrIDEgb2Zmc2V0IDcyMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDQ0ODA2OAplbnRyeSAiYmFzZS1maWxlcy5jb25mZmlsZXMiIGF0IGJsb2Nr IDAgb2Zmc2V0IDIwMCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAzMjUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMjAwLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDcyMC4u LgplbnRyeSAiYmFzZS1maWxlcy5tZDVzdW1zIiBhdCBibG9jayAwIG9mZnNldCAyMzIgaW4gZGly ZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzI3Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIzMi4uLgplbnRyeSAibGli azVjcnlwdG8uc28uMy4xIiBhdCBibG9jayAxIG9mZnNldCA3NjAgaW4gZGlyZWN0b3J5IGlub2Rl IDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM5NDAKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNzYwLi4uCmVudHJ5ICJsaWJwY2kuc28uMy4wLjAi IGF0IGJsb2NrIDEgb2Zmc2V0IDc5MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDIwMTc2NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCA3OTIuLi4KZW50cnkgImxpYmRiNC42Lm1kNXN1bXMiIGF0IGJsb2NrIDAgb2Zm c2V0IDE0NjQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjEwNjQKZW50cnkgImxpYmtyYjQuc28uMi4wIiBhdCBibG9jayAxIG9mZnNldCA4 MzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx NjM5NDEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODMyLi4uCmVu dHJ5ICJsaWJjLmEiIGF0IGJsb2NrIDEgb2Zmc2V0IDg2NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ0ODA2OQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCA4NjQuLi4KZW50cnkgIm9kYmMiIGF0IGJsb2NrIDEgb2Zm c2V0IDg4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDQwNzk2MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4ODgu Li4KZW50cnkgImxpYmtyYjUuc28uMy4zIiBhdCBibG9jayAxIG9mZnNldCA5MDQgaW4gZGlyZWN0 b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM5NDIKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgOTA0Li4uCmVudHJ5ICJsaWJvcGNv ZGVzLTIuMTguMC4yMDA4MDEwMy5zbyIgYXQgYmxvY2sgMSBvZmZzZXQgOTM2IGluIGRpcmVjdG9y eSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjAzMjY5CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDkzNi4uLgoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNDY0Li4uCmVudHJ5ICJsaWJkYjQuNi5zaGxpYnMi IGF0IGJsb2NrIDAgb2Zmc2V0IDE3NzYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEwNjMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMTc3Ni4uLgplbnRyeSAibGlia3JiNXN1cHBvcnQuc28uMC4xIiBhdCBi bG9jayAxIG9mZnNldCA5ODQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxNjM5NDMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgOTg0Li4uCmVudHJ5ICJsaWJwY2kuc28uMyIgYXQgYmxvY2sgMSBvZmZzZXQgMTAxNiBp biBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMTc3 MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMDE2Li4uCmVudHJ5 ICJkaWZmLm1kNXN1bXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDIxMTIgaW4gZGlyZWN0b3J5IGlub2Rl IDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzkwCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIxMTIuLi4KZW50cnkgImxpYmtyYjVzdXBwb3J0 LnNvLjAiIGF0IGJsb2NrIDEgb2Zmc2V0IDEwNTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM5NDQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMTA1Ni4uLgplbnRyeSAiZmluZHV0aWxzLnByZWluc3QiIGF0IGJs b2NrIDAgb2Zmc2V0IDI1NDQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgNDY1CmVudHJ5ICJsaWJnaW8tMi4wLnNvLjAiIGF0IGJsb2NrIDEg b2Zmc2V0IDEwODggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSA1OTg2OTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MTA4OC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNTQ0Li4u CmVudHJ5ICJsaWJrcmI1LnNvLjMiIGF0IGJsb2NrIDEgb2Zmc2V0IDExMjAgaW4gZGlyZWN0b3J5 IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM5NDUKZW50cnkgImZp bmR1dGlscy5tZDVzdW1zIiBhdCBibG9jayAwIG9mZnNldCAyNTc2IGluIGRpcmVjdG9yeSBpbm9k ZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ2NwoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNTc2Li4uCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExMjAuLi4KZW50cnkgImZpbmR1dGlscy5wcmVybSIgYXQg YmxvY2sgMCBvZmZzZXQgMjYwOCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSA0NjgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMjYwOC4uLgplbnRyeSAibGliZXhwYXQuc28uMS41LjIiIGF0IGJsb2NrIDEgb2Zm c2V0IDExNDQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSA1OTg3MDQKZW50cnkgImZpbmR1dGlscy5wb3N0aW5zdCIgYXQgYmxvY2sgMCBvZmZzZXQg MjY0MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSA0NjkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjY0MC4u LgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMTQ0Li4uCmVudHJ5 ICJnemlwLnBvc3RpbnN0IiBhdCBibG9jayAwIG9mZnNldCAzMDcyIGluIGRpcmVjdG9yeSBpbm9k ZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ5OAoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDcyLi4uCmVudHJ5ICJsaWJrcmI0LnNvLjIi IGF0IGJsb2NrIDEgb2Zmc2V0IDExNzYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxNjM5NDYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTE3Ni4uLgplbnRyeSAibGliZ3NzZ2x1ZS5zby4xLjAuMCIgYXQgYmxvY2sg MSBvZmZzZXQgMTIwMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDIwMTc3MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAxMjAwLi4uCmVudHJ5ICJnemlwLm1kNXN1bXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDMwOTYgaW4g ZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDk5 CmVudHJ5ICJsaWJrNWNyeXB0by5zby4zIiBhdCBibG9jayAxIG9mZnNldCAxMjQwIGluIGRpcmVj dG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYzOTQ3CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyNDAuLi4KCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzA5Ni4uLgplbnRyeSAibGliZ3NzZ2x1ZS5z by4xIiBhdCBibG9jayAxIG9mZnNldCAxMjcyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjAxNzczCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDEyNzIuLi4KZW50cnkgImxpYmdzc2FwaV9rcmI1LnNvLjIiIGF0IGJs b2NrIDEgb2Zmc2V0IDEzMTIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxNjM5NDgKZW50cnkgImd6aXAucHJlcm0iIGF0IGJsb2NrIDAgb2Zmc2V0 IDMxMjAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgNTAwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMxMjAu Li4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTMxMi4uLgplbnRy eSAibGlidXN0ci0xLjAuc28uMS4wLjQiIGF0IGJsb2NrIDEgb2Zmc2V0IDEzNDQgaW4gZGlyZWN0 b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDE3ODAKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTM0NC4uLgplbnRyeSAibGliZGVz NDI1LnNvLjMiIGF0IGJsb2NrIDEgb2Zmc2V0IDEzODQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM5NDkKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMTM4NC4uLgplbnRyeSAibGlibmN1cnNlczUuc2hsaWJzIiBh dCBibG9jayAwIG9mZnNldCAzMTQ0IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMDY2CmVudHJ5ICJsaWJycGNzZWNnc3Muc28uMy4wLjAi IGF0IGJsb2NrIDEgb2Zmc2V0IDE0MTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAyMDE3NzQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTQxNi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAzMTQ0Li4uCmVudHJ5ICJsaWJkbnMuc28uNDMuMC4xIiBhdCBibG9jayAxIG9mZnNldCAx NDU2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTYzOTUwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE0NTYuLi4K ZW50cnkgImxpYmV4cGF0dy5zby4xLjUuMiIgYXQgYmxvY2sgMSBvZmZzZXQgMTQ4OCBpbiBkaXJl Y3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODcwNQoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNDg4Li4uCmVudHJ5ICJsaWJk bnMuc28uNDMiIGF0IGJsb2NrIDEgb2Zmc2V0IDE1MjAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM5NTEKZW50cnkgImxpYm5jdXJzZXM1LnBv c3RpbnN0IiBhdCBibG9jayAwIG9mZnNldCAzMzYwIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYw IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMDY1CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMzNjAuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMTUyMC4uLgplbnRyeSAibGlibmN1cnNlczUucG9zdHJtIiBhdCBibG9j ayAwIG9mZnNldCAzNTQ0IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDIxMDY4CmVudHJ5ICJsaWJycGNzZWNnc3Muc28uMyIgYXQgYmxvY2sg MSBvZmZzZXQgMTU0NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDIwMTc3OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAxNTQ0Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM1NDQu Li4KZW50cnkgImxpYmF0dHIxLnNobGlicyIgYXQgYmxvY2sgMCBvZmZzZXQgMzYwMCBpbiBkaXJl Y3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1MTAKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzYwMC4uLgplbnRyeSAibGli YXR0cjEucG9zdGluc3QiIGF0IGJsb2NrIDAgb2Zmc2V0IDM2MzIgaW4gZGlyZWN0b3J5IGlub2Rl IDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTExCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM2MzIuLi4KZW50cnkgImxpYmlzY2NjLnNvLjQw LjAuMCIgYXQgYmxvY2sgMSBvZmZzZXQgMTU4NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2Mzk1OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAxNTg0Li4uCmVudHJ5ICJsaWJhdHRyMS5wb3N0cm0iIGF0IGJsb2Nr IDAgb2Zmc2V0IDM2NjQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgNTQ3CmVudHJ5ICJsaWJ1c3RyLTEuMC5zby4xIiBhdCBibG9jayAxIG9m ZnNldCAxNjE2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjAxNzgxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2 MTYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzY2NC4uLgpl bnRyeSAibGliYXR0cjEubWQ1c3VtcyIgYXQgYmxvY2sgMCBvZmZzZXQgMzY5NiBpbiBkaXJlY3Rv cnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NDkKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzY5Ni4uLgplbnRyeSAibGliaXNj Y2Muc28uNDAiIGF0IGJsb2NrIDEgb2Zmc2V0IDE2NTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM5NTkKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMTY1Ni4uLgplbnRyeSAibGlic3FsaXRlMy5zby4wLjguNiIg YXQgYmxvY2sgMSBvZmZzZXQgMTY4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDIwMTc4NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAxNjg4Li4uCmVudHJ5ICJsaWJuY3Vyc2VzNS5tZDVzdW1zIiBhdCBibG9jayAw IG9mZnNldCAzNzI4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDIxMDY5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDM3MjguLi4KZW50cnkgImxpYmlzY2NmZy5zby40MC4wLjQiIGF0IGJsb2NrIDEgb2Zmc2V0 IDE3MjggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxNjM5NTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTcyOC4u LgplbnRyeSAibGlic3FsaXRlMy5zby4wIiBhdCBibG9jayAxIG9mZnNldCAxNzYwIGluIGRpcmVj dG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjAxNzg4CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3NjAuLi4KZW50cnkgImxpYmlz Y2NmZy5zby40MCIgYXQgYmxvY2sgMSBvZmZzZXQgMTgwMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2Mzk1NwoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODAwLi4uCmVudHJ5ICJsaWJweXRob24yLjUuc28uMS4w IiBhdCBibG9jayAxIG9mZnNldCAxODMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgNDg5OTU0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDE4MzIuLi4KZW50cnkgImxpYnNlbGludXgxLnNobGlicyIgYXQgYmxvY2sg MSBvZmZzZXQgMTA3MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAyMTA2NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAxMDcyLi4uCmVudHJ5ICJsaWJzZWxpbnV4MS5wb3N0cm0iIGF0IGJsb2NrIDEgb2Zmc2V0 IDExMDQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjEwNzAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTEw NC4uLgplbnRyeSAibGliYmluZDkuc28uNDAuMC4zIiBhdCBibG9jayAxIG9mZnNldCAxODcyIGlu IGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYzOTY2 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4NzIuLi4KZW50cnkg ImxpYnNlbGludXgxLnBvc3RpbnN0IiBhdCBibG9jayAxIG9mZnNldCAxMTM2IGluIGRpcmVjdG9y eSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMDcxCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExMzYuLi4KZW50cnkgImxpYmJp bmQ5LnNvLjQwIiBhdCBibG9jayAxIG9mZnNldCAxOTQ0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYzOTY3CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE5NDQuLi4KZW50cnkgImxpYnNlbGludXgxLm1kNXN1bXMi IGF0IGJsb2NrIDEgb2Zmc2V0IDExNjggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEwNzMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMTE2OC4uLgplbnRyeSAibGlicHl0aG9uMi41LnNvLjEiIGF0IGJsb2Nr IDEgb2Zmc2V0IDE5NzYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSA0ODk5NTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMTk3Ni4uLgplbnRyeSAibGlibHdyZXMuc28uNDAuMC4wIiBhdCBibG9jayAxIG9mZnNldCAy MDE2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTYzOTYwCmVudHJ5ICJsaWJzdGRjKys2LnNobGlicyIgYXQgYmxvY2sgMSBvZmZzZXQgMTc0NCBp biBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAy MTA3MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNzQ0Li4uCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwMTYuLi4KZW50cnkgImxp YnN0ZGMrKzYuc3ltYm9scyIgYXQgYmxvY2sgMSBvZmZzZXQgMTc3NiBpbiBkaXJlY3RvcnkgaW5v ZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTA3NAoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNzc2Li4uCmVudHJ5ICJydWJ5IiBhdCBi bG9jayAxIG9mZnNldCAyMDcyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTU5OTA0OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAyMDcyLi4uCmVudHJ5ICJsaWJsd3Jlcy5zby40MCIgYXQgYmxvY2sgMSBvZmZzZXQg MjA4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDE2Mzk2NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMDg4Li4u CmVudHJ5ICJsaWJzdGRjKys2LnBvc3RpbnN0IiBhdCBibG9jayAxIG9mZnNldCAxODA4IGluIGRp cmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMDc1 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4MDguLi4KZW50cnkg ImxpYnN0ZGMrKzYucG9zdHJtIiBhdCBibG9jayAxIG9mZnNldCAxODQwIGluIGRpcmVjdG9yeSBp bm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMDc2CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4NDAuLi4KZW50cnkgImxpYmxvY2tm aWxlLnNvLjEuMCIgYXQgYmxvY2sgMSBvZmZzZXQgMjE2MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2Mzk2OAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMTYwLi4uCmVudHJ5ICJsaWJzdGRjKys2Lm1kNXN1bXMi IGF0IGJsb2NrIDEgb2Zmc2V0IDE4NzIgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEwNzcKZW50cnkgImxpYmNyeXB0LmEiIGF0IGJsb2Nr IDEgb2Zmc2V0IDIxOTIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSA0NDgwNzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMjE5Mi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODcy Li4uCmVudHJ5ICJsaWJsb2NrZmlsZS5zby4xIiBhdCBibG9jayAxIG9mZnNldCAyMjMyIGluIGRp cmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYzOTcwCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIyMzIuLi4KZW50cnkgImxp YnB0aHJlYWRfbm9uc2hhcmVkLmEiIGF0IGJsb2NrIDEgb2Zmc2V0IDIyNjQgaW4gZGlyZWN0b3J5 IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0NDgwNzkKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjI2NC4uLgplbnRyeSAibGlidXVpZDEu bWQ1c3VtcyIgYXQgYmxvY2sgMSBvZmZzZXQgMjI4OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2 MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTA3OAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMjg4Li4uCmVudHJ5ICJlbWFjc2VuLWNvbW1vbiIgYXQg YmxvY2sgMSBvZmZzZXQgMjMwNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE2Mzk5MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAyMzA0Li4uCmVudHJ5ICJsaWJleHBhdC5zby4xIiBhdCBibG9jayAxIG9mZnNldCAy MzM2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg NTk4NzA2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIzMzYuLi4K ZW50cnkgImxpYnV1aWQxLnBvc3RpbnN0IiBhdCBibG9jayAxIG9mZnNldCAyMzIwIGluIGRpcmVj dG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMDc5Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIzMjAuLi4KZW50cnkgImlz cGVsbCIgYXQgYmxvY2sgMSBvZmZzZXQgMjM2OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2Mzk5MQplbnRyeSAibGlidXVpZDEucG9zdHJtIiBh dCBibG9jayAxIG9mZnNldCAyMzUyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMDgwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDIzNTIuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMjM2OC4uLgplbnRyeSAibGliYXNwZWxsLnNvLjE1LjEuNCIgYXQgYmxvY2sgMSBvZmZz ZXQgMjM5MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDU5ODY1MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMzky Li4uCmVudHJ5ICJsaWJ1dWlkMS5zeW1ib2xzIiBhdCBibG9jayAxIG9mZnNldCAyMzg0IGluIGRp cmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMDgx CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIzODQuLi4KZW50cnkg ImxpYm1hZ2ljLnNvLjEuMC4wIiBhdCBibG9jayAxIG9mZnNldCAyNDMyIGluIGRpcmVjdG9yeSBp bm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTY0MDI5CmVudHJ5ICJsaWJ1 dWlkMS5zaGxpYnMiIGF0IGJsb2NrIDEgb2Zmc2V0IDI0MTYgaW4gZGlyZWN0b3J5IGlub2RlIDQy OTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEwODMKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQxNi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAyNDMyLi4uCmVudHJ5ICJ6bGliMWcuc2hsaWJzIiBhdCBibG9j ayAxIG9mZnNldCAyNzA0IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDIxNjI4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDI3MDQuLi4KZW50cnkgIm1ha2VkZXYucG9zdGluc3QiIGF0IGJsb2NrIDEgb2Zmc2V0 IDI4MzIgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjEwODIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjgz Mi4uLgplbnRyeSAibGlicHNwZWxsLnNvLjE1LjEuNCIgYXQgYmxvY2sgMSBvZmZzZXQgMjQ2NCBp biBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODY1 MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNDY0Li4uCmVudHJ5 ICJsaWJtYWdpYy5zby4xIiBhdCBibG9jayAxIG9mZnNldCAyNTA0IGluIGRpcmVjdG9yeSBpbm9k ZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTY0MDMwCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1MDQuLi4KZW50cnkgIm1ha2VkZXYubWQ1c3Vt cyIgYXQgYmxvY2sgMSBvZmZzZXQgMjg2NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTA4NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyODY0Li4uCmVudHJ5ICJtYWtlZGV2LnByZWluc3QiIGF0IGJsb2Nr IDEgb2Zmc2V0IDI4OTYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjEwODUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMjg5Ni4uLgplbnRyeSAibGliYXNwcmludGYuc28uMC4wLjAiIGF0IGJsb2NrIDEgb2Zm c2V0IDI1NjggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxNjQwOTEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjU2 OC4uLgplbnRyeSAibGliYXNwZWxsLnNvLjE1IiBhdCBibG9jayAxIG9mZnNldCAyNjAwIGluIGRp cmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTk4NjUyCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI2MDAuLi4KZW50cnkgIm5j dXJzZXMtYmFzZS5jb25mZmlsZXMiIGF0IGJsb2NrIDEgb2Zmc2V0IDMyNDAgaW4gZGlyZWN0b3J5 IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEwODYKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzI0MC4uLgplbnRyeSAibGliYXNw cmludGYuc28uMCIgYXQgYmxvY2sgMSBvZmZzZXQgMjY0MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2NDA5MgplbnRyeSAibmN1cnNlcy1iYXNl LnByZWluc3QiIGF0IGJsb2NrIDEgb2Zmc2V0IDMyODAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcx NjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEwODcKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzI4MC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyNjQwLi4uCmVudHJ5ICJsaWJleHBhdHcuc28uMSIgYXQgYmxvY2sg MSBvZmZzZXQgMjY3MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDU5ODcwNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAyNjcyLi4uCmVudHJ5ICJuY3Vyc2VzLWJhc2UubWQ1c3VtcyIgYXQgYmxvY2sgMSBvZmZzZXQg MzMxMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyMTA4OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMzEy Li4uCmVudHJ5ICJsaWJkYi00LjUuc28iIGF0IGJsb2NrIDEgb2Zmc2V0IDI3MDQgaW4gZGlyZWN0 b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjQxMjAKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjcwNC4uLgplbnRyeSAibGliZGIt NC43LnNvIiBhdCBibG9jayAxIG9mZnNldCAyNzYwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTY0MTAyCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDI3NjAuLi4KZW50cnkgInByb2Nwcy5jb25mZmlsZXMiIGF0IGJs b2NrIDEgb2Zmc2V0IDM3MTIgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMjExMTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMzcxMi4uLgplbnRyeSAibGlicHNwZWxsLnNvLjE1IiBhdCBibG9jayAxIG9mZnNl dCAyNzg0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNTk4NjUzCmVudHJ5ICJwcm9jcHMucG9zdGluc3QiIGF0IGJsb2NrIDEgb2Zmc2V0IDM3NDQg aW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MjExMTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzc0NC4uLgpl bnRyeSAicHJvY3BzLnByZWluc3QiIGF0IGJsb2NrIDEgb2Zmc2V0IDM3NzYgaW4gZGlyZWN0b3J5 IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTA0NwoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNzc2Li4uCmVudHJ5ICJwcm9jcHMu cG9zdHJtIiBhdCBibG9jayAxIG9mZnNldCAzODA4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYw IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEwNjUKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzgwOC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAyNzg0Li4uCmVudHJ5ICJwcm9jcHMuc2hsaWJzIiBhdCBibG9jayAxIG9m ZnNldCAzODMyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDEwNjYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzgzMi4uLgplbnRyeSAicHJvY3BzLm1kNXN1bXMiIGF0IGJsb2NrIDEgb2Zmc2V0IDM4NTYgaW4g ZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTA2 NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzODU2Li4uCmVudHJ5 ICJsaWJlZGl0LnNvLjIuMTEiIGF0IGJsb2NrIDEgb2Zmc2V0IDI4MjQgaW4gZGlyZWN0b3J5IGlu b2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjQxMjYKZW50cnkgInByb2Nw cy5wcmVybSIgYXQgYmxvY2sgMSBvZmZzZXQgMzg4OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2 MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMDY4CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM4ODguLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMjgyNC4uLgplbnRyeSAiemxpYjFnLnBvc3RybSIgYXQgYmxvY2sgMSBv ZmZzZXQgMzkxMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAyMTYzMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzOTEyLi4uCmVudHJ5ICJsaWJjcHVmcmVxLnNvLjAuMC4wIiBhdCBibG9jayAxIG9mZnNldCAy ODU2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg NTk4NzE3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI4NTYuLi4K ZW50cnkgImxpYmVkaXQuc28uMiIgYXQgYmxvY2sgMSBvZmZzZXQgMjg4OCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2NDEyNwoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyODg4Li4uCmVudHJ5ICJ6bGliMWcuc3lt Ym9scyIgYXQgYmxvY2sgMiBvZmZzZXQgMTEyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxNjI5CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDExMi4uLgplbnRyeSAibGlibGJlci0yLjQuc28uMiIgYXQgYmxv Y2sgMSBvZmZzZXQgMjkxMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDIwMTc1NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAyOTEyLi4uCmVudHJ5ICJ4b3JnIiBhdCBibG9jayAxIG9mZnNldCAyOTQ0IGluIGRpcmVj dG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTk0MDI1MQoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyOTQ0Li4uCmVudHJ5ICJ6bGli MWcucG9zdGluc3QiIGF0IGJsb2NrIDIgb2Zmc2V0IDE0NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5 NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTYzMAoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNDQuLi4KZW50cnkgImxpYmV2ZW50LTEuM2Uuc28u MS4wLjMiIGF0IGJsb2NrIDEgb2Zmc2V0IDI5NjAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjQxMTkKZW50cnkgInpsaWIxZy5tZDVzdW1zIiBh dCBibG9jayAyIG9mZnNldCAxNzYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMzIwNTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTc2Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDI5NjAuLi4KZW50cnkgImFwdC5zaGxpYnMiIGF0IGJsb2NrIDIgb2Zmc2V0IDUwNCBpbiBk aXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjA3 OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1MDQuLi4KZW50cnkg ImxpYmRhZW1vbi5zby4wLjQuMCIgYXQgYmxvY2sgMSBvZmZzZXQgMzAwMCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODY3OQoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDAwLi4uCmVudHJ5ICJsaWJldmVudC5z by4xIiBhdCBibG9jayAxIG9mZnNldCAzMDQwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTY0MTI0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDMwNDAuLi4KZW50cnkgImFwdC5wb3N0aW5zdCIgYXQgYmxvY2sgMiBv ZmZzZXQgNTI4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDMyMDgwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDUyOC4uLgplbnRyeSAibGliZGFlbW9uLnNvLjAiIGF0IGJsb2NrIDEgb2Zmc2V0IDMwNjQgaW4g ZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1OTg2ODAK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzA2NC4uLgplbnRyeSAi YXB0LnByZWluc3QiIGF0IGJsb2NrIDIgb2Zmc2V0IDU1MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5 NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjA4MQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1NTIuLi4KZW50cnkgImFwdC5wcmVybSIgYXQgYmxv Y2sgMiBvZmZzZXQgNTc2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDMyMDgyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDU3Ni4uLgplbnRyeSAibGliZXZlbnQtMS4zZS5zby4xIiBhdCBibG9jayAxIG9mZnNl dCAzMTA0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMjAxNzI4CmVudHJ5ICJhcHQucG9zdHJtIiBhdCBibG9jayAyIG9mZnNldCA2MDAgaW4gZGly ZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzIwODMK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjAwLi4uCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMxMDQuLi4KZW50cnkgImxpYmd0aHJl YWQtMi4wLnNvLjAuMTYwMC42IiBhdCBibG9jayAxIG9mZnNldCAzMTM2IGluIGRpcmVjdG9yeSBp bm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTk4NjkxCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMxMzYuLi4KZW50cnkgImFwdC5jb25mZmls ZXMiIGF0IGJsb2NrIDIgb2Zmc2V0IDYyNCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjA4NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCA2MjQuLi4KZW50cnkgImFwdC5tZDVzdW1zIiBhdCBibG9jayAyIG9m ZnNldCA2NDggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMzIwODYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg NjQ4Li4uCmVudHJ5ICJsaWJldmVudC0xLjNkLnNvLjEiIGF0IGJsb2NrIDEgb2Zmc2V0IDMxNzYg aW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDE3 MjkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzE3Ni4uLgplbnRy eSAibGliYmx1ZXRvb3RoLnNvLjIuMTEuMiIgYXQgYmxvY2sgMSBvZmZzZXQgMzIwOCBpbiBkaXJl Y3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODY4OAoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMjA4Li4uCmVudHJ5ICJsaWJl dmVudC0xLjNiLnNvLjEiIGF0IGJsb2NrIDEgb2Zmc2V0IDMyNDggaW4gZGlyZWN0b3J5IGlub2Rl IDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDE3MzAKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzI0OC4uLgplbnRyeSAiaWZ1cGRvd24ucG9zdGlu c3QiIGF0IGJsb2NrIDIgb2Zmc2V0IDI3MDQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTc0NTMKZW50cnkgImxpYmJsdWV0b290aC5zby4y IiBhdCBibG9jayAxIG9mZnNldCAzMjgwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgNTk4Njg5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDMyODAuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMjcwNC4uLgplbnRyeSAiaWZ1cGRvd24ucHJlaW5zdCIgYXQgYmxvY2sgMiBvZmZzZXQg MjczNiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSA1NzQ1NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNzM2 Li4uCmVudHJ5ICJsaWJldmVudC0xLjFhLnNvLjEiIGF0IGJsb2NrIDEgb2Zmc2V0IDMzMjAgaW4g ZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDE3MzEK ZW50cnkgImlmdXBkb3duLnBvc3RybSIgYXQgYmxvY2sgMiBvZmZzZXQgMjc2OCBpbiBkaXJlY3Rv cnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzQ1NQoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNzY4Li4uCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMzMjAuLi4KZW50cnkgImxpYmdsaWItMi4w LnNvLjAuMTYwMC42IiBhdCBibG9jayAxIG9mZnNldCAzMzUyIGluIGRpcmVjdG9yeSBpbm9kZSAx NDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTk4NjgyCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMzNTIuLi4KZW50cnkgImlmdXBkb3duLmNvbmZmaWxl cyIgYXQgYmxvY2sgMiBvZmZzZXQgMjgwMCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzQ1NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyODAwLi4uCmVudHJ5ICJsaWJldmVudC0xLjEuc28uMSIgYXQgYmxv Y2sgMSBvZmZzZXQgMzM5MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDIwMTczMgplbnRyeSAiaWZ1cGRvd24ubWQ1c3VtcyIgYXQgYmxvY2sgMiBv ZmZzZXQgMjgzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSA1NzQ1OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAyODMyLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMzOTIu Li4KZW50cnkgImluZm8ucG9zdHJtIiBhdCBibG9jayAyIG9mZnNldCAyOTEyIGluIGRpcmVjdG9y eSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3NDU3CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI5MTIuLi4KZW50cnkgImluZm8u cG9zdGluc3QiIGF0IGJsb2NrIDIgb2Zmc2V0IDI5MzYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcx NjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTc0NjUKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjkzNi4uLgplbnRyeSAibGliZ2lvLTIuMC5zby4wLjAu MCIgYXQgYmxvY2sgMSBvZmZzZXQgMzQyNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODY4NgplbnRyeSAiaW5mby5wcmVybSIgYXQgYmxvY2sg MiBvZmZzZXQgMjk2MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSA1NzQ2NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAyOTYwLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM0 MjQuLi4KZW50cnkgImluZm8ubWQ1c3VtcyIgYXQgYmxvY2sgMiBvZmZzZXQgMjk4NCBpbiBkaXJl Y3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzQ2NwoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyOTg0Li4uCmVudHJ5ICJs aWJnYy5zby4xLjAuMiIgYXQgYmxvY2sgMSBvZmZzZXQgMzQ2NCBpbiBkaXJlY3RvcnkgaW5vZGUg MTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMTczOQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNDY0Li4uCmVudHJ5ICJsaWJnb2JqZWN0LTIuMC5z by4wLjE2MDAuNiIgYXQgYmxvY2sgMSBvZmZzZXQgMzQ5NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODY5MAplbnRyeSAibGlic2FzbDItMi5t ZDVzdW1zIiBhdCBibG9jayAzIG9mZnNldCA4MjQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjc1MTYKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgODI0Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDM0OTYuLi4KZW50cnkgImxpYnNhc2wyLTIuc2hsaWJzIiBhdCBibG9jayAz IG9mZnNldCA4NTYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgNjc1MTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgODU2Li4uCmVudHJ5ICJsaWJzYXNsMi0yLnBvc3RpbnN0IiBhdCBibG9jayAzIG9mZnNldCA4 ODggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNjc1MTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODg4Li4u CmVudHJ5ICJsaWJnY2NwcC5zby4xLjAuMiIgYXQgYmxvY2sgMSBvZmZzZXQgMzUzNiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMTc0MAplbnRy eSAibGlic2FzbDItMi5wb3N0cm0iIGF0IGJsb2NrIDMgb2Zmc2V0IDkyMCBpbiBkaXJlY3Rvcnkg aW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NzU1MgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5MjAuLi4KCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzUzNi4uLgplbnRyeSAibGliY3B1ZnJlcS5zby4w IiBhdCBibG9jayAxIG9mZnNldCAzNTY4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgNTk4NzE4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDM1NjguLi4KZW50cnkgImxpYmdjLnNvLjEiIGF0IGJsb2NrIDEgb2Zmc2V0 IDM2MDAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyMDE3NDEKZW50cnkgIm1vZHVsZS1pbml0LXRvb2xzLmNvbmZmaWxlcyIgYXQgYmxvY2sgMyBv ZmZzZXQgMjg0MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxNTAyOTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMjg0MC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNjAw Li4uCmVudHJ5ICJtb2R1bGUtaW5pdC10b29scy5wb3N0aW5zdCIgYXQgYmxvY2sgMyBvZmZzZXQg Mjg4MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxNTAzMDAKZW50cnkgImxpYmdtb2R1bGUtMi4wLnNvLjAuMTYwMC42IiBhdCBibG9jayAx IG9mZnNldCAzNjI0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgNTk4NjkyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDI4ODAuLi4KZW50cnkgIm1vZHVsZS1pbml0LXRvb2xzLnBvc3RybSIgYXQgYmxvY2sgMyBvZmZz ZXQgMjkyMCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxNTAzMzYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzYyNC4uLgplbnRyeSAibGliZ2NjcHAuc28uMSIgYXQgYmxvY2sgMSBvZmZzZXQgMzY2NCBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMTc0MgoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNjY0Li4uCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI5MjAuLi4KZW50cnkgImxpYmdsaWIt Mi4wLnNvLjAiIGF0IGJsb2NrIDEgb2Zmc2V0IDM2ODggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1OTg2OTQKZW50cnkgIm1vZHVsZS1pbml0LXRv b2xzLnByZWluc3QiIGF0IGJsb2NrIDMgb2Zmc2V0IDI5NjAgaW4gZGlyZWN0b3J5IGlub2RlIDQy OTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUwMzAxCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI5NjAuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzY4OC4uLgplbnRyeSAibGliZ3BtLnNvLjIuMC4wIiBhdCBi bG9jayAxIG9mZnNldCAzNzI4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjAxNzMzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDM3MjguLi4KZW50cnkgImxpYnJlY29kZS5zby4wLjAuMCIgYXQgYmxvY2sgMSBvZmZz ZXQgMzc2MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDU5ODc3NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNzYw Li4uCmVudHJ5ICJuZXRiYXNlLmNvbmZmaWxlcyIgYXQgYmxvY2sgMyBvZmZzZXQgMzM1MiBpbiBk aXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTAz NzQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzM1Mi4uLgplbnRy eSAibGliZ3BtLnNvLjIiIGF0IGJsb2NrIDEgb2Zmc2V0IDM3OTIgaW4gZGlyZWN0b3J5IGlub2Rl IDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDE3MzcKZW50cnkgIm5ldGJhc2Uu cG9zdGluc3QiIGF0IGJsb2NrIDMgb2Zmc2V0IDMzODQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcx NjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUwMzc1CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMzODQuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzc5Mi4uLgplbnRyeSAibmV0YmFzZS5wb3N0cm0iIGF0IGJsb2Nr IDMgb2Zmc2V0IDM0MTYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTUwMzc2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDM0MTYuLi4KZW50cnkgImxpYmd0aHJlYWQtMi4wLnNvLjAiIGF0IGJsb2NrIDEgb2Zm c2V0IDM4MTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSA1OTg2OTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzgx Ni4uLgplbnRyeSAibGliaWRuLnNvLjExLjUuMzkiIGF0IGJsb2NrIDEgb2Zmc2V0IDM4NTYgaW4g ZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDE3NDkK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzg1Ni4uLgplbnRyeSAi cmVhZGxpbmUtY29tbW9uLnBvc3RpbnN0IiBhdCBibG9jayAzIG9mZnNldCAzNzIwIGluIGRpcmVj dG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1MDM4MApl bnRyeSAibGlicmVjb2RlLnNvLjAiIGF0IGJsb2NrIDEgb2Zmc2V0IDM4ODggaW4gZGlyZWN0b3J5 IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1OTg3ODIKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzg4OC4uLgoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNzIwLi4uCmVudHJ5ICJyZWFkbGluZS1jb21tb24u cHJlcm0iIGF0IGJsb2NrIDMgb2Zmc2V0IDM3NjAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUwMzgxCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM3NjAuLi4KZW50cnkgImxpYmlkbi5sYSIgYXQgYmxvY2sg MSBvZmZzZXQgMzkyMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDIwMTc1MAplbnRyeSAicmVhZGxpbmUtY29tbW9uLnBvc3RybSIgYXQgYmxvY2sg MyBvZmZzZXQgMzc5MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxNTAzODIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzc5Mi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz OTIwLi4uCmVudHJ5ICJyZWFkbGluZS1jb21tb24ubWQ1c3VtcyIgYXQgYmxvY2sgMyBvZmZzZXQg MzgzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxNTAzODQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzgz Mi4uLgplbnRyeSAibGliY19ub25zaGFyZWQuYSIgYXQgYmxvY2sgMSBvZmZzZXQgMzk0NCBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ0ODA3MAoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzOTQ0Li4uCmVudHJ5ICJs aWJpZG4uc28uMTEiIGF0IGJsb2NrIDEgb2Zmc2V0IDM5NzYgaW4gZGlyZWN0b3J5IGlub2RlIDE0 OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDE3NTEKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzk3Ni4uLgplbnRyeSAiYWNwaS1zdXBwb3J0LWJhc2Uu Y29uZmZpbGVzIiBhdCBibG9jayA0IG9mZnNldCAxMzEyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3 MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMyODM3MwoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzEyLi4uCmVudHJ5ICJsaWJYcmVuZGVyLnNvLjEi IGF0IGJsb2NrIDEgb2Zmc2V0IDQwMDAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAyNTIxMDcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgNDAwMC4uLgplbnRyeSAiYWNwaS1zdXBwb3J0LWJhc2UucG9zdGluc3QiIGF0 IGJsb2NrIDQgb2Zmc2V0IDE1OTIgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMzI4Mzc0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDE1OTIuLi4KZW50cnkgImxpYmxiZXItMi40LnNvLjIuMS4wIiBhdCBibG9j ayAxIG9mZnNldCA0MDQwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMjAxNzQzCmVudHJ5ICJjb25zb2xlLWNvbW1vbi50ZW1wbGF0ZXMiIGF0IGJs b2NrIDQgb2Zmc2V0IDE2NjQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMjAzOTMzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDE2NjQuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgNDA0MC4uLgplbnRyeSAiY29uc29sZS1jb21tb24ucG9zdGluc3QiIGF0IGJsb2NrIDQgb2Zm c2V0IDE3MDQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjAzOTM0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDE3MDQuLi4KZW50cnkgImNvbnNvbGUtY29tbW9uLnByZWluc3QiIGF0IGJsb2NrIDQgb2Zmc2V0 IDE3NDQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjAzOTM1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3 NDQuLi4KZW50cnkgImxpYkdMLnNvLjEuMiIgYXQgYmxvY2sgMSBvZmZzZXQgNDA3MiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1ODg1OQoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MDcyLi4uCmVudHJ5ICJjb25z b2xlLWNvbW1vbi5wcmVybSIgYXQgYmxvY2sgNCBvZmZzZXQgMTc4NCBpbiBkaXJlY3RvcnkgaW5v ZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDM5MzYKZW50cnkgImxp YmF1ZGlvZmlsZS5zby4wLjAuMiIgYXQgYmxvY2sgMiBvZmZzZXQgMTYgaW4gZGlyZWN0b3J5IGlu b2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2MjIxCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2Li4uCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3ODQuLi4KZW50cnkgImxpYmdkLnNvLjIiIGF0IGJsb2Nr IDIgb2Zmc2V0IDQ4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTI3NjIwNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCA0OC4uLgplbnRyeSAibGliZGwuYSIgYXQgYmxvY2sgMiBvZmZzZXQgNzIgaW4gZGlyZWN0b3J5 IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0NDgwNzIKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNzIuLi4KZW50cnkgImxpYmcuYSIgYXQg YmxvY2sgMiBvZmZzZXQgOTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSA0NDgwNzMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgOTYuLi4KZW50cnkgImNvbnNvbGUtY29tbW9uLnBvc3RybSIgYXQgYmxvY2sgNCBvZmZz ZXQgMTgxNiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAyMDM5MzcKZW50cnkgImxpYlhjdXJzb3Iuc28uMSIgYXQgYmxvY2sgMiBvZmZzZXQg MTIwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MjUyMTEyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyMC4uLgoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODE2Li4uCmVudHJ5ICJs aWJmcmVldHlwZS5zby42LjMuMTgiIGF0IGJsb2NrIDIgb2Zmc2V0IDE1MiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1MjExMwplbnRyeSAiY29u c29sZS1jb21tb24uY29uZmZpbGVzIiBhdCBibG9jayA0IG9mZnNldCAxODQ4IGluIGRpcmVjdG9y eSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMzkzOAoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODQ4Li4uCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE1Mi4uLgplbnRyeSAiY29uc29sZS1jb21t b24ubWQ1c3VtcyIgYXQgYmxvY2sgNCBvZmZzZXQgMTg4OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5 NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDM5NDAKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTg4OC4uLgplbnRyeSAibGliZnJlZXR5cGUuc28u NiIgYXQgYmxvY2sgMiBvZmZzZXQgMTg0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjUyMTE0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDE4NC4uLgplbnRyeSAibGliZm9udGVuYy5zby4xLjAuMCIgYXQgYmxvY2sg MiBvZmZzZXQgMjE2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjUyMTE1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDIxNi4uLgplbnRyeSAibGliZm9udGVuYy5zby4xIiBhdCBibG9jayAyIG9mZnNldCAyNDggaW4g ZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTIxMTYK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQ4Li4uCmVudHJ5ICJi dXN5Ym94Lm1kNXN1bXMiIGF0IGJsb2NrIDQgb2Zmc2V0IDIxODQgaW4gZGlyZWN0b3J5IGlub2Rl IDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjAzOTYzCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIxODQuLi4KZW50cnkgImxpYlhmb250LnNv LjEuNC4xIiBhdCBibG9jayAyIG9mZnNldCAyODAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTYxNDcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMjgwLi4uCmVudHJ5ICJ1ZGV2LnRlbXBsYXRlcyIgYXQgYmxvY2sg NCBvZmZzZXQgMjUwNCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAyMDM5NjYKZW50cnkgImxpYmZvbnRjb25maWcuc28uMS4zLjAiIGF0IGJs b2NrIDIgb2Zmc2V0IDMxMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDI1NjE1MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAzMTIuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjUw NC4uLgplbnRyeSAibGliZm9udGNvbmZpZy5zby4xIiBhdCBibG9jayAyIG9mZnNldCAzNTIgaW4g ZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg3ODMK ZW50cnkgInVkZXYuY29uZmZpbGVzIiBhdCBibG9jayA0IG9mZnNldCAyNTM2IGluIGRpcmVjdG9y eSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMzk2NwoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNTM2Li4uCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM1Mi4uLgplbnRyeSAidWRldi5wb3N0aW5z dCIgYXQgYmxvY2sgNCBvZmZzZXQgMjU2OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDM2MTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMjU2OC4uLgplbnRyeSAibGliWGZ0LnNvLjIuMS4yIiBhdCBibG9j ayAyIG9mZnNldCAzODQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAzNTg3OTAKZW50cnkgInVkZXYubWQ1c3VtcyIgYXQgYmxvY2sgNCBvZmZzZXQg MjU5MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyNDM2MTYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjU5 Mi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzODQuLi4KZW50 cnkgInVkZXYucHJlcm0iIGF0IGJsb2NrIDQgb2Zmc2V0IDI2MTYgaW4gZGlyZWN0b3J5IGlub2Rl IDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjE2MDMyCmVudHJ5ICJsaWJh dGstMS4wLnNvLjAiIGF0IGJsb2NrIDIgb2Zmc2V0IDQxNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMjk4NgoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MTYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMjYxNi4uLgplbnRyeSAibGlieGtiZmlsZS5zby4xIiBhdCBibG9jayAy IG9mZnNldCA0NTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAzNTg3ODkKZW50cnkgInVkZXYucG9zdHJtIiBhdCBibG9jayA0IG9mZnNldCAyNjQw IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDIxNjAzMwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjQwLi4u CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ1Ni4uLgplbnRyeSAi dWRldi5wcmVpbnN0IiBhdCBibG9jayA0IG9mZnNldCAyNjY0IGluIGRpcmVjdG9yeSBpbm9kZSA0 Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxNjAzNAoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjY0Li4uCmVudHJ5ICJsaWJ0cy0wLjAuc28u MC4xLjEiIGF0IGJsb2NrIDIgb2Zmc2V0IDQ4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMzA4MAplbnRyeSAiYWNwaS1zdXBwb3J0LWJhc2Uu bWQ1c3VtcyIgYXQgYmxvY2sgNCBvZmZzZXQgMzE4NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2 MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjgzNzIKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzE4NC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCA0ODguLi4KZW50cnkgImxpYlhtdXUuc28uMS4wLjAiIGF0IGJsb2Nr IDIgb2Zmc2V0IDUyOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDM1ODc5OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCA1MjguLi4KZW50cnkgInZpbS1ydW50aW1lLnBvc3RpbnN0IiBhdCBibG9jayA1IG9mZnNldCAx NjAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNTEyOTY4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2MC4u LgplbnRyeSAibGlidHMtMC4wLnNvLjAiIGF0IGJsb2NrIDIgb2Zmc2V0IDU2MCBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMzA4MQoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1NjAuLi4KZW50cnkgImxpYmdtcC5z by4zLjQuMiIgYXQgYmxvY2sgMiBvZmZzZXQgNjAwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYzNzg5CmVudHJ5ICJtYWR3aWZpLXRvb2xzLm1k NXN1bXMiIGF0IGJsb2NrIDUgb2Zmc2V0IDE0ODAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTEyOTQyCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE0ODAuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgNjAwLi4uCmVudHJ5ICJ2aW0tcnVudGltZS5wcmVpbnN0IiBhdCBibG9j ayA1IG9mZnNldCAxNTEyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDUxMjk2NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAxNTEyLi4uCmVudHJ5ICJsaWJpY2U2LnBvc3RybSIgYXQgYmxvY2sgNSBvZmZzZXQg MTU0NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyNTE5MDkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTU0 NC4uLgplbnRyeSAibGliZGlyZWN0LTEuMC5zby4wLjEuMCIgYXQgYmxvY2sgMiBvZmZzZXQgNjMy IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDIz MDg4CmVudHJ5ICJtYWR3aWZpLXRvb2xzLmNvbmZmaWxlcyIgYXQgYmxvY2sgNSBvZmZzZXQgMTU3 NiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA1MTI5NDAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTU3Ni4u LgplbnRyeSAidmltLXJ1bnRpbWUubWQ1c3VtcyIgYXQgYmxvY2sgNSBvZmZzZXQgMTY4OCBpbiBk aXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1MTI5 NjkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTY4OC4uLgoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2MzIuLi4KZW50cnkgInZpbS1y dW50aW1lLnBvc3RybSIgYXQgYmxvY2sgNSBvZmZzZXQgMTkwNCBpbiBkaXJlY3RvcnkgaW5vZGUg NDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1MTI5NzAKZW50cnkgImxpYm1w LnNvLjMuMS4xMSIgYXQgYmxvY2sgMiBvZmZzZXQgNjcyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU4NzkyCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDY3Mi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAxOTA0Li4uCmVudHJ5ICJsaWJkaXJlY3RmYi0xLjAuc28uMC4xLjAiIGF0 IGJsb2NrIDIgb2Zmc2V0IDcwNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDQyMzA4OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCA3MDQuLi4KZW50cnkgImxpYm1wZnIuc28uMS4xLjIiIGF0IGJsb2NrIDIgb2Zmc2V0 IDc0NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDE2MzgxNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA3NDQuLi4K ZW50cnkgImxpYnh0Ni5wb3N0cm0iIGF0IGJsb2NrIDUgb2Zmc2V0IDI4OTYgaW4gZGlyZWN0b3J5 IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUxOTE3CmVudHJ5 ICJsaWJmdXNpb24tMS4wLnNvLjAuMS4wIiBhdCBibG9jayAyIG9mZnNldCA3NzYgaW4gZGlyZWN0 b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjMwOTAKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNzc2Li4uCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI4OTYuLi4KZW50cnkgImxpYmRybS5zby4yLjMu MCIgYXQgYmxvY2sgMiBvZmZzZXQgODE2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMzU4ODU3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDgxNi4uLgplbnRyeSAibGlidW5pcXVld20tMS4wLnNvLjAuMS4wIiBhdCBi bG9jayAyIG9mZnNldCA4NDggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSA0MjMwOTEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgODQ4Li4uCmVudHJ5ICJsaWJYZGFtYWdlLnNvLjEuMS4wIiBhdCBibG9jayAyIG9mZnNl dCA4ODggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAzNTg4NTEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODg4Li4u CmVudHJ5ICJtYWR3aWZpLXRvb2xzLnBvc3RpbnN0IiBhdCBibG9jayA1IG9mZnNldCAyOTIwIGlu IGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDUx Mjk0MwplbnRyeSAibGliWGRhbWFnZS5zby4xIiBhdCBibG9jayAyIG9mZnNldCA5NjAgaW4gZGly ZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg4NTYKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgOTYwLi4uCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI5MjAuLi4KZW50cnkgImxpYmRpcmVjdC0x LjAuc28uMCIgYXQgYmxvY2sgMiBvZmZzZXQgOTkyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDIzMDk4CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDk5Mi4uLgplbnRyeSAibWFkd2lmaS10b29scy5wcmVpbnN0IiBh dCBibG9jayA1IG9mZnNldCAzMTkyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDUxMjk0NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzMTkyLi4uCmVudHJ5ICJsaWJYeGY4NnZtLnNvLjEuMC4wIiBhdCBibG9j ayAyIG9mZnNldCAxMDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMzU4ODY1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDEwMzIuLi4KZW50cnkgImxpYnhpNi5wb3N0cm0iIGF0IGJsb2NrIDUgb2Zmc2V0IDM4MDAg aW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MzU4ODcwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM4MDAuLi4K ZW50cnkgImxpYnh0Ni5zaGxpYnMiIGF0IGJsb2NrIDUgb2Zmc2V0IDM5NTIgaW4gZGlyZWN0b3J5 IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUxOTE1CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM5NTIuLi4KZW50cnkgImxpYmRp cmVjdGZiLTEuMC5zby4wIiBhdCBibG9jayAyIG9mZnNldCAxMDY0IGluIGRpcmVjdG9yeSBpbm9k ZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDIzMDk5CmVudHJ5ICJsaWJ4bXV1 MS5wb3N0cm0iIGF0IGJsb2NrIDUgb2Zmc2V0IDM5NzYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcx NjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU4Nzk1CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM5NzYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMTA2NC4uLgplbnRyeSAibGliWHhmODZ2bS5zby4xIiBhdCBibG9j ayAyIG9mZnNldCAxMTA0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMzU4ODY2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDExMDQuLi4KZW50cnkgInJ0Mjg2MC1tb2R1bGVzLTIuNi4yNi0xLTY4Ni5wb3N0cm0iIGF0 IGJsb2NrIDYgb2Zmc2V0IDE2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDUxMjkzMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAxNi4uLgplbnRyeSAicnQyODYwLW1vZHVsZXMtMi42LjI2LTEtNjg2Lm1kNXN1 bXMiIGF0IGJsb2NrIDYgb2Zmc2V0IDE1MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1MTI5MzMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMTUyLi4uCmVudHJ5ICJsaWJndGsteDExLTIuMC5zby4wIiBhdCBi bG9jayAyIG9mZnNldCAxMTM2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgNDI1ODc5CmVudHJ5ICJsaWJ4eGY4NnZtMS5wb3N0cm0iIGF0IGJsb2Nr IDYgb2Zmc2V0IDIxNiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAzNTg4NjIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMjE2Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEx MzYuLi4KZW50cnkgImxpYkdMLnNvLjEiIGF0IGJsb2NrIDIgb2Zmc2V0IDExNjggaW4gZGlyZWN0 b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg4NjQKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTE2OC4uLgplbnRyeSAibGliZnVz aW9uLTEuMC5zby4wIiBhdCBibG9jayAyIG9mZnNldCAxMTkyIGluIGRpcmVjdG9yeSBpbm9kZSAx NDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDIzMTAwCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExOTIuLi4KZW50cnkgImxpYlhpLnNvLjYuMC4wIiBh dCBibG9jayAyIG9mZnNldCAxMjMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMzU4ODczCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDEyMzIuLi4KZW50cnkgImxpYm1wZnIxbGRibC5wb3N0cm0iIGF0IGJsb2NrIDYg b2Zmc2V0IDYwMCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAzNTg4MDQKZW50cnkgImxpYmdkay14MTEtMi4wLnNvLjAiIGF0IGJsb2NrIDIg b2Zmc2V0IDEyNjQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSA0MjU4ODIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MTI2NC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2MDAuLi4K ZW50cnkgImxpYlhpLnNvLjYiIGF0IGJsb2NrIDIgb2Zmc2V0IDEyOTYgaW4gZGlyZWN0b3J5IGlu b2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg4NzQKZW50cnkgInJ0Mjg2 MC1tb2R1bGVzLTIuNi4yNi0xLTY4Ni5wb3N0aW5zdCIgYXQgYmxvY2sgNiBvZmZzZXQgNzIwIGlu IGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDUx MjkzMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA3MjAuLi4KCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTI5Ni4uLgplbnRyeSAibGli aGFsLXN0b3JhZ2UxLnBvc3RybSIgYXQgYmxvY2sgNiBvZmZzZXQgNzY4IGluIGRpcmVjdG9yeSBp bm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3MDAzMgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA3NjguLi4KZW50cnkgImxpYnVuaXF1 ZXdtLTEuMC5zby4wIiBhdCBibG9jayAyIG9mZnNldCAxMzIwIGluIGRpcmVjdG9yeSBpbm9kZSAx NDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDIzMTAxCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEzMjAuLi4KZW50cnkgImxpYlhpbmVyYW1hLnNvLjEu MC4wIiBhdCBibG9jayAyIG9mZnNldCAxMzYwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU4ODY3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDEzNjAuLi4KZW50cnkgImVzbXRwLXJ1bi5tZDVzdW1zIiBhdCBibG9j ayA2IG9mZnNldCAxMTc2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDIwNTg0NjEKZW50cnkgImxpYnBpeG1hbi0xLnNvLjAuMTAuMCIgYXQg YmxvY2sgMiBvZmZzZXQgMTM5MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDQyMzY4MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAxMzkyLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDExNzYuLi4KZW50cnkgImxpYlhpbmVyYW1hLnNvLjEiIGF0IGJsb2NrIDIgb2Zmc2V0IDE0MzIg aW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg4 NzIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQzMi4uLgplbnRy eSAibGlicGl4bWFuLTEuc28uMCIgYXQgYmxvY2sgMiBvZmZzZXQgMTQ2NCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMzY4NAoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNDY0Li4uCmVudHJ5ICJsaWJYdHN0LnNv LjYuMS4wIiBhdCBibG9jayAyIG9mZnNldCAxNTA0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU4ODgxCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDE1MDQuLi4KZW50cnkgImxpYmNyb2NvLTAuNi5zby4zLjAuMSIg YXQgYmxvY2sgMiBvZmZzZXQgMTUzNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDQyMzczNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAxNTM2Li4uCmVudHJ5ICJsaWJYdHN0LnNvLjYiIGF0IGJsb2NrIDIgb2Zmc2V0 IDE1NjggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAzNTg4ODIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTU2OC4u LgplbnRyeSAibGlieGNiLXJlbmRlci5zby4wLjAuMCIgYXQgYmxvY2sgMiBvZmZzZXQgMTU5MiBp biBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMzA4 MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTkyLi4uCmVudHJ5 ICJiaW51dGlscy5wb3N0cm0iIGF0IGJsb2NrIDYgb2Zmc2V0IDEyMDggaW4gZGlyZWN0b3J5IGlu b2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA1Nzc0NQplbnRyeSAi bGliWHYuc28uMS4wLjAiIGF0IGJsb2NrIDIgb2Zmc2V0IDE2MzIgaW4gZGlyZWN0b3J5IGlub2Rl IDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg4NzUKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTYzMi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAxMjA4Li4uCmVudHJ5ICJsaWJjcm9jby0wLjYuc28uMyIgYXQg YmxvY2sgMiBvZmZzZXQgMTY2NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDQyNTg5MAplbnRyeSAiZ2NjLTQuMy5tZDVzdW1zIiBhdCBibG9jayA2 IG9mZnNldCAxMzA0IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDQ0ODI1NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAxMzA0Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2 NjQuLi4KZW50cnkgImJpbnV0aWxzLnNobGlicyIgYXQgYmxvY2sgNiBvZmZzZXQgMTUwNCBpbiBk aXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDU3 NTk5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE1MDQuLi4KZW50 cnkgImxpYmJpbmQ5LTQwLnBvc3RybSIgYXQgYmxvY2sgNiBvZmZzZXQgMTY0OCBpbiBkaXJlY3Rv cnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM5NjIKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTY0OC4uLgplbnRyeSAibGli WHYuc28uMSIgYXQgYmxvY2sgMiBvZmZzZXQgMTY5NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1ODg4MAplbnRyeSAibGliaXNjY2M0MC5wb3N0 cm0iIGF0IGJsb2NrIDYgb2Zmc2V0IDE4MzIgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYzOTU0CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDE4MzIuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTY5Ni4uLgplbnRyeSAiYmludXRpbHMucG9zdGluc3QiIGF0IGJsb2NrIDYg b2Zmc2V0IDE5ODQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMjA1ODQ2MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAxOTg0Li4uCmVudHJ5ICJsaWJ4Y2ItcmVuZGVyLnNvLjAiIGF0IGJsb2NrIDIgb2Zmc2V0 IDE3MjAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA0MjM2ODIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTcyMC4u LgplbnRyeSAibGliaXNjY2M0MC5wb3N0aW5zdCIgYXQgYmxvY2sgNiBvZmZzZXQgMjQ4OCBpbiBk aXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM5 NTUKZW50cnkgImxpYlh4Zjg2ZGdhLnNvLjEuMC4wIiBhdCBibG9jayAyIG9mZnNldCAxNzYwIGlu IGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU4ODg5 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3NjAuLi4KCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQ4OC4uLgplbnRyeSAibGlieGNi LXJlbmRlci11dGlsLnNvLjAuMC4wIiBhdCBibG9jayAyIG9mZnNldCAxNzkyIGluIGRpcmVjdG9y eSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDIzNjkxCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3OTIuLi4KZW50cnkgImxpYlh4Zjg2 ZGdhLnNvLjEiIGF0IGJsb2NrIDIgb2Zmc2V0IDE4MzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg4OTAKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMTgzMi4uLgplbnRyeSAibGlieGNiLXJlbmRlci11dGlsLnNv LjAiIGF0IGJsb2NrIDIgb2Zmc2V0IDE4NjQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjM2OTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMTg2NC4uLgplbnRyeSAibGliRlMuc28uNi4wLjAiIGF0IGJsb2NrIDIg b2Zmc2V0IDE5MDQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAzNTg4OTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MTkwNC4uLgplbnRyeSAibGliYmluZDktNDAubWQ1c3VtcyIgYXQgYmxvY2sgNiBvZmZzZXQgMjg4 MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxNjM5NjEKZW50cnkgImxpYmdzZi0xLnNvLjExNC4wLjEwIiBhdCBibG9jayAyIG9mZnNldCAx OTM2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg NDI1ODk3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE5MzYuLi4K CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjg4MC4uLgplbnRyeSAi bGliRlMuc28uNiIgYXQgYmxvY2sgMiBvZmZzZXQgMTk2OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1ODg5NgplbnRyeSAibGliYmluZDktNDAu cG9zdGluc3QiIGF0IGJsb2NrIDYgb2Zmc2V0IDMwNjQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcx NjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYzOTYzCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMwNjQuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMTk2OC4uLgplbnRyeSAibGliYmluZDktNDAuc2hsaWJzIiBhdCBi bG9jayA2IG9mZnNldCAzMjgwIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDE2Mzk2NAplbnRyeSAibGliY2Fpcm8uc28uMi4xNy41IiBhdCBi bG9jayAyIG9mZnNldCAxOTkyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgNDIzNjg1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDE5OTIuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzI4MC4uLgplbnRyeSAibGliWHJhbmRyLnNvLjIuMS4wIiBhdCBibG9jayAyIG9mZnNldCAyMDMy IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU4 OTAwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwMzIuLi4KZW50 cnkgImxpYmlzY2NjNDAubWQ1c3VtcyIgYXQgYmxvY2sgNiBvZmZzZXQgNDAyNCBpbiBkaXJlY3Rv cnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM5NTMKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDAyNC4uLgplbnRyeSAibGli Y2Fpcm8uc28uMiIgYXQgYmxvY2sgMiBvZmZzZXQgMjA2NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMzY4OQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMDY0Li4uCmVudHJ5ICJtY3MiIGF0IGJsb2NrIDIgb2Zm c2V0IDIwODggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyNTk3MDQyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIw ODguLi4KZW50cnkgImxpYlhyYW5kci5zby4yIiBhdCBibG9jayAyIG9mZnNldCAyMTA0IGluIGRp cmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU4OTAxCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIxMDQuLi4KZW50cnkgImxp YmRhdHJpZS5zby4wLjAuMyIgYXQgYmxvY2sgMiBvZmZzZXQgMjEzNiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMzcwMgoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMTM2Li4uCmVudHJ5ICJsaWJYVHJhcC5zby42 LjQuMCIgYXQgYmxvY2sgMiBvZmZzZXQgMjE3NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2Mzc5OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyMTc2Li4uCmVudHJ5ICJsaWJkYXRyaWUuc28uMCIgYXQgYmxvY2sg MiBvZmZzZXQgMjIwOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDQyMzcwMwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAyMjA4Li4uCmVudHJ5ICJsaWJYVHJhcC5zby42IiBhdCBibG9jayAyIG9mZnNldCAyMjQ4IGlu IGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU4OTAy CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIyNDguLi4KZW50cnkg ImxpYmlzY2NjNDAuc2hsaWJzIiBhdCBibG9jayA2IG9mZnNldCA0MDU2IGluIGRpcmVjdG9yeSBp bm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2Mzk1NgplbnRyeSAi bGlidDF4LnNvLjUiIGF0IGJsb2NrIDIgb2Zmc2V0IDIyNzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0 OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTkxMzQKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjI3Mi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCA0MDU2Li4uCmVudHJ5ICJsaWJYeGY4Nm1pc2Muc28uMS4xLjAiIGF0 IGJsb2NrIDIgb2Zmc2V0IDIzMjAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAzNTg5MDYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMjMyMC4uLgplbnRyeSAibGlidGhhaS5zby4wLjEuMSIgYXQgYmxvY2sgMiBvZmZz ZXQgMjM1MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDQyMzcwOQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMzUy Li4uCmVudHJ5ICJsaWJYeGY4Nm1pc2Muc28uMSIgYXQgYmxvY2sgMiBvZmZzZXQgMjM5MiBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1ODkwNwoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMzkyLi4uCmVudHJ5ICJs aWJ0aGFpLnNvLjAiIGF0IGJsb2NrIDIgb2Zmc2V0IDI0MjQgaW4gZGlyZWN0b3J5IGlub2RlIDE0 OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjM3MTAKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQyNC4uLgplbnRyeSAiYmluZDktaG9zdC5tZDVzdW1z IiBhdCBibG9jayA3IG9mZnNldCAxNDQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYzOTY5CmVudHJ5ICJsaWJwYXBlci5zby4xLjEuMiIg YXQgYmxvY2sgMiBvZmZzZXQgMjQ2NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDM1ODkxMwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAyNDY0Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDE0NC4uLgplbnRyeSAibGlicGFuZ28tMS4wLnNvLjAuMjAwMi4zIiBhdCBibG9jayAyIG9m ZnNldCAyNDk2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgNDIzNzExCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI0 OTYuLi4KZW50cnkgImxpYnBhcGVyLnNvLjEiIGF0IGJsb2NrIDIgb2Zmc2V0IDI1MzYgaW4gZGly ZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg5MTQKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjUzNi4uLgplbnRyeSAibGli Z3NmLTEuc28uMTE0IiBhdCBibG9jayAyIG9mZnNldCAyNTYwIGluIGRpcmVjdG9yeSBpbm9kZSAx NDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDI1ODk4CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1NjAuLi4KZW50cnkgImxpYmlkbjExLnBvc3RybSIg YXQgYmxvY2sgNyBvZmZzZXQgMTc2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMTc0NQplbnRyeSAibGlicGFuZ29jYWlyby0xLjAuc28u MC4yMDAyLjMiIGF0IGJsb2NrIDIgb2Zmc2V0IDI2MTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjM3MTIKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMjYxNi4uLgplbnRyeSAibGliYXNvdW5kLnNvLjIuMC4wIiBh dCBibG9jayAyIG9mZnNldCAyNjU2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTIxNTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMTc2Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDI2NTYuLi4KZW50cnkgImxpYmlkbjExLnNobGlicyIgYXQgYmxvY2sgNyBvZmZzZXQgMzM2IGlu IGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIw MTc0NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMzYuLi4KZW50 cnkgImJzZC1tYWlseC5jb25mZmlsZXMiIGF0IGJsb2NrIDcgb2Zmc2V0IDQwMCBpbiBkaXJlY3Rv cnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM5NzIKZW50 cnkgImxpYnBhbmdvZnQyLTEuMC5zby4wLjIwMDIuMyIgYXQgYmxvY2sgMiBvZmZzZXQgMjY4OCBp biBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMzcx MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjg4Li4uCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQwMC4uLgplbnRyeSAibGliYXNv dW5kLnNvLjIiIGF0IGJsb2NrIDIgb2Zmc2V0IDI3MjggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjE1MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAyNzI4Li4uCmVudHJ5ICJsaWJ0MS5zby41IiBhdCBibG9jayAy IG9mZnNldCAyNzYwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMzU5MTM1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDI3NjAuLi4KZW50cnkgImxpYmVzZC5zby4wIiBhdCBibG9jayAyIG9mZnNldCAyNzg0IGluIGRp cmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjI1NgoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNzg0Li4uCmVudHJ5ICJi c2QtbWFpbHgucHJlcm0iIGF0IGJsb2NrIDcgb2Zmc2V0IDQzMiBpbiBkaXJlY3RvcnkgaW5vZGUg NDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM5NzMKZW50cnkgImxpYmF2 YWhpLWNvbW1vbi5zby4zLjUuMCIgYXQgYmxvY2sgMiBvZmZzZXQgMjgwOCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1OTAzMwoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyODA4Li4uCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQzMi4uLgplbnRyeSAibGlicGFuZ294LTEuMC5zby4w LjIwMDIuMyIgYXQgYmxvY2sgMiBvZmZzZXQgMjg0OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMzcxNAplbnRyeSAiYnNkLW1haWx4Lm1kNXN1 bXMiIGF0IGJsb2NrIDcgb2Zmc2V0IDQ2NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM5NzQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgNDY0Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDI4NDguLi4KZW50cnkgImJzZC1tYWlseC5wb3N0aW5zdCIgYXQgYmxvY2sgNyBv ZmZzZXQgNDk2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDE2Mzk3NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCA0OTYuLi4KZW50cnkgImxpYmlkbjExLm1kNXN1bXMiIGF0IGJsb2NrIDcgb2Zmc2V0IDU3NiBp biBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAy MDE3NDgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTc2Li4uCmVu dHJ5ICJsaWJhdmFoaS1jb21tb24uc28uMyIgYXQgYmxvY2sgMiBvZmZzZXQgMjg4OCBpbiBkaXJl Y3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1OTAzNAoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyODg4Li4uCmVudHJ5ICJkb2Mt ZGViaWFuLnBvc3RpbnN0IiBhdCBibG9jayA3IG9mZnNldCAxMzIwIGluIGRpcmVjdG9yeSBpbm9k ZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2NDAwMAoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzIwLi4uCmVudHJ5ICJkb2MtZGViaWFu LnByZXJtIiBhdCBibG9jayA3IG9mZnNldCAxMzUyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYw IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2NDAwMQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzUyLi4uCmVudHJ5ICJsaWJncy5zby44LjYyIiBhdCBi bG9jayAyIG9mZnNldCAyOTIwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMzU5MTM2CmVudHJ5ICJsaWJpZG4xMS5wb3N0aW5zdCIgYXQgYmxvY2sg NyBvZmZzZXQgMTM4NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAyMDE3NDQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMTM4NC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAy OTIwLi4uCmVudHJ5ICJsaWJtYWdpYzEucG9zdGluc3QiIGF0IGJsb2NrIDcgb2Zmc2V0IDE2MDAg aW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTY0MDI0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2MDAuLi4K ZW50cnkgImxpYm1hZ2ljMS5zaGxpYnMiIGF0IGJsb2NrIDcgb2Zmc2V0IDE2MzIgaW4gZGlyZWN0 b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTY0MDI1Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2MzIuLi4KZW50cnkgImxp YmF2YWhpLWNvcmUuc28uNS4wLjUiIGF0IGJsb2NrIDIgb2Zmc2V0IDI5NjggaW4gZGlyZWN0b3J5 IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTkwNDIKZW50cnkgImxp Ym1hZ2ljMS5wb3N0cm0iIGF0IGJsb2NrIDcgb2Zmc2V0IDE2NjQgaW4gZGlyZWN0b3J5IGlub2Rl IDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTY0MDI3CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2NjQuLi4KCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjk2OC4uLgplbnRyeSAibGlibWFnaWMxLm1kNXN1bXMi IGF0IGJsb2NrIDcgb2Zmc2V0IDE2OTYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTY0MDI4CmVudHJ5ICJsaWJwYW5nb3hmdC0xLjAuc28u MC4yMDAyLjMiIGF0IGJsb2NrIDIgb2Zmc2V0IDMwMDggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjM3MTUKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzAwOC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAxNjk2Li4uCmVudHJ5ICJsaWJhdmFoaS1jb3JlLnNvLjUiIGF0IGJsb2Nr IDIgb2Zmc2V0IDMwNDggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAzNTkwNDMKZW50cnkgImZpbGUuY29uZmZpbGVzIiBhdCBibG9jayA3IG9mZnNl dCAxNzc2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE2NDA2NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAx Nzc2Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMwNDguLi4K ZW50cnkgImZpbGUubWQ1c3VtcyIgYXQgYmxvY2sgNyBvZmZzZXQgMTgwOCBpbiBkaXJlY3Rvcnkg aW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjQwNjkKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTgwOC4uLgplbnRyeSAibGliZ3Mu c28uOCIgYXQgYmxvY2sgMiBvZmZzZXQgMzA4MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1OTE0MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAzMDgwLi4uCmVudHJ5ICJpaXRhbGlhbi5tZDVzdW1zIiBhdCBibG9j ayA3IG9mZnNldCAyMjU2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE2NDA5NQplbnRyeSAibGliZmFtLnNvLjAiIGF0IGJsb2NrIDIgb2Zm c2V0IDMxMDQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxMjc2NDI3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMx MDQuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjI1Ni4uLgpl bnRyeSAibGliYXZhaGktY2xpZW50LnNvLjMuMi40IiBhdCBibG9jayAyIG9mZnNldCAzMTI4IGlu IGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU5MDU0 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMxMjguLi4KZW50cnkg ImxpYnBhbmdveGZ0LTEuMC5zby4wIiBhdCBibG9jayAyIG9mZnNldCAzMTY4IGluIGRpcmVjdG9y eSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDIzNzMwCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMxNjguLi4KZW50cnkgImxpYmF2YWhp LWNsaWVudC5zby4zIiBhdCBibG9jayAyIG9mZnNldCAzMjA4IGluIGRpcmVjdG9yeSBpbm9kZSAx NDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU5MDU1CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyMDguLi4KZW50cnkgImlpdGFsaWFuLnBvc3RpbnN0 IiBhdCBibG9jayA3IG9mZnNldCAyMjg4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2NDA5NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyMjg4Li4uCmVudHJ5ICJsaWJwYW5nb3gtMS4wLnNvLjAiIGF0IGJs b2NrIDIgb2Zmc2V0IDMyNDAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSA0MjM3MzEKZW50cnkgImlpdGFsaWFuLmNvbmZpZyIgYXQgYmxvY2sgNyBv ZmZzZXQgMjMyMCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxNjQwOTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMjMyMC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMjQw Li4uCmVudHJ5ICJpaXRhbGlhbi5wb3N0cm0iIGF0IGJsb2NrIDcgb2Zmc2V0IDIzNTIgaW4gZGly ZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTY0MDk4 CmVudHJ5ICJsaWJkbnNfc2Quc28uMS4wLjAiIGF0IGJsb2NrIDIgb2Zmc2V0IDMyODAgaW4gZGly ZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTkwNjkKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzI4MC4uLgoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMzUyLi4uCmVudHJ5ICJsaWJwYW5nb2Z0 Mi0xLjAuc28uMCIgYXQgYmxvY2sgMiBvZmZzZXQgMzMxMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMzczMgoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMzEyLi4uCmVudHJ5ICJsaWJkbnNfc2Quc28uMSIgYXQg YmxvY2sgMiBvZmZzZXQgMzM1MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDM1OTA3MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzMzUyLi4uCmVudHJ5ICJsaWJyc3ZnLTIuc28uMi4yMi4yIiBhdCBibG9jayAyIG9m ZnNldCAzMzg0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgNDI1ODk5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMz ODQuLi4KZW50cnkgImxpYmN1cHMuc28uMiIgYXQgYmxvY2sgMiBvZmZzZXQgMzQxNiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1OTEwOQoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNDE2Li4uCmVudHJ5ICJpaXRh bGlhbi50ZW1wbGF0ZXMiIGF0IGJsb2NrIDcgb2Zmc2V0IDIzODQgaW4gZGlyZWN0b3J5IGlub2Rl IDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTY0MDk5CmVudHJ5ICJsaWJw YW5nb2NhaXJvLTEuMC5zby4wIiBhdCBibG9jayAyIG9mZnNldCAzNDQwIGluIGRpcmVjdG9yeSBp bm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDIzNzMzCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM0NDAuLi4KCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjM4NC4uLgplbnRyeSAibGlianBlZy5zby42Mi4wLjAi IGF0IGJsb2NrIDIgb2Zmc2V0IDM0ODAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAzNTkwNzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMzQ4MC4uLgplbnRyeSAibGlicGFuZ28tMS4wLnNvLjAiIGF0IGJsb2NrIDIg b2Zmc2V0IDM1MTIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSA0MjM3MzQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzUxMi4uLgplbnRyeSAibGlianBlZy5zby42MiIgYXQgYmxvY2sgMiBvZmZzZXQgMzU1MiBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1OTEwNwoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNTUyLi4uCmVudHJ5ICJn KystNC4zLm1kNXN1bXMiIGF0IGJsb2NrIDcgb2Zmc2V0IDI0MTYgaW4gZGlyZWN0b3J5IGlub2Rl IDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE1NjM1OAplbnRyeSAibGli WGNvbXBvc2l0ZS5zby4xLjAuMCIgYXQgYmxvY2sgMiBvZmZzZXQgMzU3NiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMzczNQoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNTc2Li4uCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI0MTYuLi4KZW50cnkgImxpYnRpZmYuc28uNC4yLjEi IGF0IGJsb2NrIDIgb2Zmc2V0IDM2MTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAzNTkxMjMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMzYxNi4uLgplbnRyeSAibGlicnN2Zy0yLnNvLjIiIGF0IGJsb2NrIDIgb2Zm c2V0IDM2NDggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSA0MjU5MDAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzY0 OC4uLgplbnRyeSAiaWJyaXRpc2guY29uZmlnIiBhdCBibG9jayA3IG9mZnNldCAyNDcyIGluIGRp cmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2NDA5 NAplbnRyeSAibGlidGlmZi5zby40IiBhdCBibG9jayAyIG9mZnNldCAzNjgwIGluIGRpcmVjdG9y eSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU5MTI0CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM2ODAuLi4KCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQ3Mi4uLgplbnRyeSAibGliWGNvbXBvc2l0ZS5z by4xIiBhdCBibG9jayAyIG9mZnNldCAzNzA0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDIzNzM2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDM3MDQuLi4KZW50cnkgImxpYmN1cHNpbWFnZS5zby4yIiBhdCBibG9j ayAyIG9mZnNldCAzNzQ0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMzU5MTE3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDM3NDQuLi4KZW50cnkgImlicml0aXNoLm1kNXN1bXMiIGF0IGJsb2NrIDcgb2Zmc2V0IDI1 MDQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTY0MTAzCmVudHJ5ICJjYWNhIiBhdCBibG9jayAyIG9mZnNldCAzODAwIGluIGRpcmVjdG9y eSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA3NjU0CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM4MDAuLi4KCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjUwNC4uLgplbnRyeSAibGlic2xwLnNvLjEuMC4x IiBhdCBibG9jayAyIG9mZnNldCAzODE2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMzU5MTMyCmVudHJ5ICJpYnJpdGlzaC50ZW1wbGF0ZXMiIGF0 IGJsb2NrIDcgb2Zmc2V0IDI1MzYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTY0MTA0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDI1MzYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzgxNi4uLgplbnRyeSAiaWJyaXRpc2gucG9zdGluc3QiIGF0IGJsb2NrIDcgb2Zmc2V0 IDI1NjggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTY0MTA1CmVudHJ5ICJsaWJrcGF0aHNlYS5zby40LjAuMCIgYXQgYmxvY2sgMiBvZmZz ZXQgMzg0OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDkwNTMyOQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzODQ4 Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1NjguLi4KZW50 cnkgImxpYnNscC5zby4xIiBhdCBibG9jayAyIG9mZnNldCAzODgwIGluIGRpcmVjdG9yeSBpbm9k ZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU5MTMzCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM4ODAuLi4KZW50cnkgImdnaSIgYXQgYmxvY2sg MiBvZmZzZXQgMzkyOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDI1MDcwMTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMzkyOC4uLgplbnRyeSAiaWJyaXRpc2gucG9zdHJtIiBhdCBibG9jayA3IG9mZnNldCAyNjAw IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDE2NDEwNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjAwLi4u CmVudHJ5ICJsaWJ0MS5zby41LjEuMiIgYXQgYmxvY2sgMiBvZmZzZXQgMzk0NCBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1OTEyMQoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzOTQ0Li4uCmVudHJ5ICJpYW1lcmlj YW4uY29uZmlnIiBhdCBibG9jayA3IG9mZnNldCAyODQwIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3 MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2NDExMAoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyODQwLi4uCmVudHJ5ICJpYW1lcmljYW4ubWQ1c3Vt cyIgYXQgYmxvY2sgNyBvZmZzZXQgMjg3MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjQxMTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMjg3Mi4uLgplbnRyeSAiaWFtZXJpY2FuLnRlbXBsYXRlcyIgYXQg YmxvY2sgNyBvZmZzZXQgMjkwNCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxNjQxMTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMjkwNC4uLgplbnRyeSAibGliZ2RrLXgxMS0yLjAuc28uMC4xMjAwLjExIiBh dCBibG9jayAyIG9mZnNldCAzOTc2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgNDI1ODc1CmVudHJ5ICJpYW1lcmljYW4ucG9zdGluc3QiIGF0IGJs b2NrIDcgb2Zmc2V0IDI5MzYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTY0MTE0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDI5MzYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMzk3Ni4uLgplbnRyeSAiaWFtZXJpY2FuLnBvc3RybSIgYXQgYmxvY2sgNyBvZmZzZXQgMjk2 OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxNjQxMTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjk2OC4u LgplbnRyeSAibHNvZi5tZDVzdW1zIiBhdCBibG9jayA3IG9mZnNldCAzMDAwIGluIGRpcmVjdG9y eSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMTc5MAoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDAwLi4uCmVudHJ5ICJsaWJ0 MXguc28uNS4xLjIiIGF0IGJsb2NrIDIgb2Zmc2V0IDQwMTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0 OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTkxMzAKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDAxNi4uLgplbnRyeSAibGliYXRrLTEuMC5zby4wLjIy MDkuMSIgYXQgYmxvY2sgMiBvZmZzZXQgNDA0OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMjk4NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCA0MDQ4Li4uCmVudHJ5ICJsaWJkYjQuNS5zaGxpYnMiIGF0IGJsb2Nr IDcgb2Zmc2V0IDMyMDAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTY0MTExCmVudHJ5ICJsaWJnZGtfcGl4YnVmLTIuMC5zby4wLjEyMDAu MTEiIGF0IGJsb2NrIDMgb2Zmc2V0IDE2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgNDI1ODc2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDE2Li4uCmVudHJ5ICJsaWJnZGtfcGl4YnVmX3hsaWItMi4wLnNvLjAuMTIw MC4xMSIgYXQgYmxvY2sgMyBvZmZzZXQgNjQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjU4NzcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgNjQuLi4KZW50cnkgImxpYmd0ay14MTEtMi4wLnNvLjAuMTIwMC4xMSIg YXQgYmxvY2sgMyBvZmZzZXQgMTEyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgNDI1ODc4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDExMi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzMjAwLi4uCmVudHJ5ICJsaWJnZGtfcGl4YnVmX3hsaWItMi4wLnNvLjAiIGF0IGJsb2NrIDMg b2Zmc2V0IDE1MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDQyNTg4MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAx NTIuLi4KZW50cnkgImxpYmVkaXQyLnBvc3RpbnN0IiBhdCBibG9jayA3IG9mZnNldCAzNDA4IGlu IGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2 NDEyMQplbnRyeSAibGliZ2RrX3BpeGJ1Zi0yLjAuc28uMCIgYXQgYmxvY2sgMyBvZmZzZXQgMTky IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDI1 ODgxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE5Mi4uLgoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNDA4Li4uCmVudHJ5ICJsaWJr cGF0aHNlYS5zby40IiBhdCBibG9jayAzIG9mZnNldCAyMzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0 OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA5MDUzMzAKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjMyLi4uCmVudHJ5ICJsaWJwb3BwbGVyLnNvLjMuMC4w IiBhdCBibG9jayAzIG9mZnNldCAyNjQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSA5MDUzMzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMjY0Li4uCmVudHJ5ICJsaWJwb3BwbGVyLnNvLjMiIGF0IGJsb2NrIDMgb2Zm c2V0IDI5NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDkwNTMzMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyOTYu Li4KZW50cnkgImxpYmVkaXQyLnBvc3RybSIgYXQgYmxvY2sgNyBvZmZzZXQgMzQ0MCBpbiBkaXJl Y3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjQxMjIK ZW50cnkgImxpYmdkLnNvLjIuMC4wIiBhdCBibG9jayAzIG9mZnNldCAzMjggaW4gZGlyZWN0b3J5 IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2MjA1CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyOC4uLgoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNDQwLi4uCmVudHJ5ICJsaWJlZGl0Mi5zaGxpYnMi IGF0IGJsb2NrIDcgb2Zmc2V0IDM0NzIgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTY0MTIzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDM0NzIuLi4KZW50cnkgImxpYmVkaXQyLm1kNXN1bXMiIGF0IGJsb2Nr IDcgb2Zmc2V0IDM1MDQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTY0MTI1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDM1MDQuLi4KZW50cnkgImxpYmF1ZGlvZmlsZS5zby4wIiBhdCBibG9jayAzIG9mZnNl dCA0MDAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxMjc2MjIyCmVudHJ5ICJsaWJnYzFjMi5zaGxpYnMiIGF0IGJsb2NrIDcgb2Zmc2V0IDM3ODQg aW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MjAxNzM0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM3ODQuLi4K CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDAwLi4uCmVudHJ5ICJs aWJib25vYm8tYWN0aXZhdGlvbi5zby40LjAuMCIgYXQgYmxvY2sgMyBvZmZzZXQgNDMyIGluIGRp cmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM1NDg5MAoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MzIuLi4KZW50cnkgImxp YmVzZC5zby4wLjIuMzYiIGF0IGJsb2NrIDMgb2Zmc2V0IDQ3MiBpbiBkaXJlY3RvcnkgaW5vZGUg MTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYyMjMKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDcyLi4uCmVudHJ5ICJsaWJnYzFjMi5wb3N0aW5z dCIgYXQgYmxvY2sgNyBvZmZzZXQgMzgxNiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDE3MzUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzgxNi4uLgplbnRyeSAibGlidnRlLnNvLjkuMi4xOCIgYXQgYmxv Y2sgMyBvZmZzZXQgNTA0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTI3Njg5MgplbnRyeSAibGliZ2MxYzIucG9zdHJtIiBhdCBibG9jayA3IG9m ZnNldCAzODQ4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDIwMTczNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzODQ4Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDUwNC4u LgplbnRyeSAibGliZGJ1cy1nbGliLTEuc28uMi4xLjAiIGF0IGJsb2NrIDMgb2Zmc2V0IDU1MiBp biBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYy NjQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTUyLi4uCmVudHJ5 ICJsaWJnYzFjMi5tZDVzdW1zIiBhdCBibG9jayA3IG9mZnNldCAzODgwIGluIGRpcmVjdG9yeSBp bm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMTczOAplbnRyeSAi bGliYm9ub2JvLTIuc28uMC4wLjAiIGF0IGJsb2NrIDMgb2Zmc2V0IDU5MiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzNTQ4OTEKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTkyLi4uCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM4ODAuLi4KZW50cnkgImxpYmRidXMtZ2xpYi0xLnNv LjIiIGF0IGJsb2NrIDMgb2Zmc2V0IDYzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYyNjUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgNjMyLi4uCmVudHJ5ICJsaWJib25vYm8tYWN0aXZhdGlvbi5zby40IiBh dCBibG9jayAzIG9mZnNldCA2NjQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMzU0ODkzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDY2NC4uLgplbnRyeSAibWxvY2F0ZS5tZDVzdW1zIiBhdCBibG9jayA4IG9mZnNl dCAxMzYwIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDIwMTgwMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAx MzYwLi4uCmVudHJ5ICJtbG9jYXRlLnBvc3RybSIgYXQgYmxvY2sgOCBvZmZzZXQgMTM5MiBpbiBk aXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDE4 MDMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTM5Mi4uLgplbnRy eSAibGlibm90aWZ5LnNvLjEuMS4yIiBhdCBibG9jayAzIG9mZnNldCA3MDQgaW4gZGlyZWN0b3J5 IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2MjU3CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDcwNC4uLgplbnRyeSAibWxvY2F0ZS5w cmVybSIgYXQgYmxvY2sgOCBvZmZzZXQgMTQyNCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDE4MDQKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQyNC4uLgplbnRyeSAibGliYm9ub2JvLTIuc28uMCIgYXQg YmxvY2sgMyBvZmZzZXQgNzM2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTM1NDg5NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCA3MzYuLi4KZW50cnkgIm1sb2NhdGUucG9zdGluc3QiIGF0IGJsb2NrIDggb2Zmc2V0 IDE0NDggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjAxODA1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE0 NDguLi4KZW50cnkgIm1sb2NhdGUuY29uZmZpbGVzIiBhdCBibG9jayA4IG9mZnNldCAxNDgwIGlu IGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIw MTgwNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNDgwLi4uCmVu dHJ5ICJsaWJub3RpZnkuc28uMSIgYXQgYmxvY2sgMyBvZmZzZXQgNzc2IGluIGRpcmVjdG9yeSBp bm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjI2MwplbnRyeSAibXV0 dC5wb3N0aW5zdCIgYXQgYmxvY2sgOCBvZmZzZXQgMTgyNCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5 NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDE4MTMKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTgyNC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCA3NzYuLi4KZW50cnkgImxpYnNzbDMuc28uMWQiIGF0IGJsb2Nr IDMgb2Zmc2V0IDgzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDEzODg4NDIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgODMyLi4uCmVudHJ5ICJtdXR0LnByZXJtIiBhdCBibG9jayA4IG9mZnNldCAxODQ4IGluIGRp cmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMTgx NAplbnRyeSAibGlieGZjZTR1dGlsLnNvLjQuMC4yIiBhdCBibG9jayAzIG9mZnNldCA4NTYgaW4g ZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2Mjgx CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDg1Ni4uLgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODQ4Li4uCmVudHJ5ICJsaWJhdmFo aS1nbGliLnNvLjEuMC4xIiBhdCBibG9jayAzIG9mZnNldCA4ODggaW4gZGlyZWN0b3J5IGlub2Rl IDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzU0ODk1CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDg4OC4uLgplbnRyeSAibGlieGZjZTR1dGlsLnNv LjQiIGF0IGJsb2NrIDMgb2Zmc2V0IDkyOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYyODIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgOTI4Li4uCmVudHJ5ICJtdXR0LnBvc3RybSIgYXQgYmxvY2sgOCBvZmZz ZXQgMTg3MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAyMDE4MTUKZW50cnkgImxpYmF2YWhpLWdsaWIuc28uMSIgYXQgYmxvY2sgMyBvZmZz ZXQgOTYwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTM1NDg5NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5NjAu Li4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTg3Mi4uLgplbnRy eSAibGliZXhvLTAuMy5zby4wLjUuMCIgYXQgYmxvY2sgMyBvZmZzZXQgMTAwMCBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYzNDYKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTAwMC4uLgplbnRyeSAibXV0dC5j b25mZmlsZXMiIGF0IGJsb2NrIDggb2Zmc2V0IDE4OTYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcx NjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjAxODE2CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4OTYuLi4KZW50cnkgImxpYnZ0ZS5zby45IiBhdCBi bG9jayAzIG9mZnNldCAxMDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTI3Njg5MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAxMDMyLi4uCmVudHJ5ICJsaWJzc2wzLnNvIiBhdCBibG9jayAzIG9mZnNldCAxMDU2 IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4 ODg0MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMDU2Li4uCmVu dHJ5ICJsaWJleG8taGFsLTAuMy5zby4wLjUuMCIgYXQgYmxvY2sgMyBvZmZzZXQgMTA4MCBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYzNDcK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTA4MC4uLgplbnRyeSAi bGliZ25vbWV2ZnMtMi5zby4wLjIyMDAuMCIgYXQgYmxvY2sgMyBvZmZzZXQgMTEyMCBpbiBkaXJl Y3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzNTUwMzcKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTEyMC4uLgplbnRyeSAibXV0 dC5tZDVzdW1zIiBhdCBibG9jayA4IG9mZnNldCAxOTI4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3 MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMTgxOAoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxOTI4Li4uCmVudHJ5ICJsaWJleG8taGFsLTAuMy5z by4wIiBhdCBibG9jayAzIG9mZnNldCAxMTYwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjM1MAplbnRyeSAidWNmLnBvc3RybSIgYXQgYmxv Y2sgOCBvZmZzZXQgMjQzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAyMDMyMjkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMjQzMi4uLgplbnRyeSAidWNmLnByZWluc3QiIGF0IGJsb2NrIDggb2Zmc2V0IDI0 NTYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMjAzMjMwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI0NTYu Li4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTE2MC4uLgplbnRy eSAibGliZXhvLTAuMy5zby4wIiBhdCBibG9jayAzIG9mZnNldCAxMjMyIGluIGRpcmVjdG9yeSBp bm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjM1MQoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMjMyLi4uCmVudHJ5ICJ1Y2YubWQ1c3Vt cyIgYXQgYmxvY2sgOCBvZmZzZXQgMjQ4MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDMyMzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMjQ4MC4uLgplbnRyeSAidWNmLnBvc3RpbnN0IiBhdCBibG9jayA4 IG9mZnNldCAyNTA0IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDIwMzI2NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAyNTA0Li4uCmVudHJ5ICJsaWJ4ZnNtLTQuMi5zbyIgYXQgYmxvY2sgMyBvZmZzZXQgMTI2 NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEy NzY3NjQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTI2NC4uLgpl bnRyeSAidWNmLnRlbXBsYXRlcyIgYXQgYmxvY2sgOCBvZmZzZXQgMjUyOCBpbiBkaXJlY3Rvcnkg aW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDMyNjUKZW50cnkg ImxpYnNtaW1lMy5zbyIgYXQgYmxvY2sgMyBvZmZzZXQgMTI5NiBpbiBkaXJlY3RvcnkgaW5vZGUg MTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg4NDQKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTI5Ni4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAyNTI4Li4uCmVudHJ5ICJ1Y2YuY29uZmZpbGVzIiBhdCBibG9j ayA4IG9mZnNldCAyNTUyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDIwMzI2NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAyNTUyLi4uCmVudHJ5ICJsaWJzdGFydHVwLW5vdGlmaWNhdGlvbi0xLnNvLjAuMC4w IiBhdCBibG9jayAzIG9mZnNldCAxMzIwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjM1MgplbnRyeSAibGlic3RkYysrNi00LjMtZGV2Lm1k NXN1bXMiIGF0IGJsb2NrIDggb2Zmc2V0IDI2ODAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDQ4MjgwCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI2ODAuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMTMyMC4uLgplbnRyeSAibGlieGZzbS00LjIuc28uMCIgYXQgYmxvY2sg MyBvZmZzZXQgMTM2OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDEyNzY3NjUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMTM2OC4uLgplbnRyeSAibGlibnNzMy5zbyIgYXQgYmxvY2sgMyBvZmZzZXQgMTQwMCBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg4NDYK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQwMC4uLgplbnRyeSAi cGNpdXRpbHMucG9zdGluc3QiIGF0IGJsb2NrIDggb2Zmc2V0IDM1NDQgaW4gZGlyZWN0b3J5IGlu b2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjAzMjk5CmVudHJ5ICJs aWJzdGFydHVwLW5vdGlmaWNhdGlvbi0xLnNvLjAiIGF0IGJsb2NrIDMgb2Zmc2V0IDE0MjQgaW4g ZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2MzUz CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE0MjQuLi4KCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzU0NC4uLgplbnRyeSAibGlieGZj ZTRtY3MtY2xpZW50LnNvLjMuMC41IiBhdCBibG9jayAzIG9mZnNldCAxNTIwIGluIGRpcmVjdG9y eSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjM1NAplbnRyeSAi cGNpdXRpbHMucHJlaW5zdCIgYXQgYmxvY2sgOCBvZmZzZXQgMzU3NiBpbiBkaXJlY3RvcnkgaW5v ZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDMzMDAKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzU3Ni4uLgoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTIwLi4uCmVudHJ5ICJsaWJnbm9tZS1rZXlyaW5n LnNvLjAuMS4xIiBhdCBibG9jayAzIG9mZnNldCAxNTYwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3Njg5NAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTYwLi4uCmVudHJ5ICJsaWJ4ZmNlNG1jcy1jbGllbnQu c28uMyIgYXQgYmxvY2sgMyBvZmZzZXQgMTYwOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYzNTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMTYwOC4uLgplbnRyeSAibGliZ25vbWUta2V5cmluZy5zby4wIiBh dCBibG9jayAzIG9mZnNldCAxNjQ4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTI3Njg5OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAxNjQ4Li4uCmVudHJ5ICJsaWJ4ZmNlNG1jcy1tYW5hZ2VyLnNvLjMuMC41IiBh dCBibG9jayAzIG9mZnNldCAxNjk2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTI3NjM2MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAxNjk2Li4uCmVudHJ5ICJwY2l1dGlscy5wb3N0cm0iIGF0IGJsb2NrIDggb2Zm c2V0IDM2MDggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjAzMzAxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDM2MDguLi4KZW50cnkgInBjaXV0aWxzLm1kNXN1bXMiIGF0IGJsb2NrIDggb2Zmc2V0IDM2NDAg aW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MjAzMzAzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM2NDAuLi4K ZW50cnkgImxpYmd0b3AtMi4wLnNvLjcuMS4xIiBhdCBibG9jayAzIG9mZnNldCAxNzM2IGluIGRp cmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NzAwNwpl bnRyeSAicGVybC5wcmVybSIgYXQgYmxvY2sgOCBvZmZzZXQgMzkyMCBpbiBkaXJlY3RvcnkgaW5v ZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDM1NjIKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzkyMC4uLgoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNzM2Li4uCmVudHJ5ICJsaWJ4ZmNlNG1jcy1tYW5h Z2VyLnNvLjMiIGF0IGJsb2NrIDMgb2Zmc2V0IDE3ODQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2MzYxCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3ODQuLi4KZW50cnkgInBlcmwubWQ1c3VtcyIgYXQgYmxv Y2sgOCBvZmZzZXQgMzk0NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAyMDM1NjMKZW50cnkgImxpYmdub21ldmZzLTIuc28uMCIgYXQgYmxv Y2sgMyBvZmZzZXQgMTgyNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDEzNTUwMzgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMTgyNC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz OTQ0Li4uCmVudHJ5ICJwZXJsLnBvc3RpbnN0IiBhdCBibG9jayA4IG9mZnNldCAzOTY4IGluIGRp cmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMzU2 NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzOTY4Li4uCmVudHJ5 ICJsaWJ4ZmNlZ3VpNC5zby40LjIuNiIgYXQgYmxvY2sgMyBvZmZzZXQgMTg2NCBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYzODIKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTg2NC4uLgplbnRyeSAibGliaGFs LXN0b3JhZ2UxLnBvc3RpbnN0IiBhdCBibG9jayA5IG9mZnNldCAxMjggaW4gZGlyZWN0b3J5IGlu b2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTcwMDM0CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyOC4uLgplbnRyeSAibGliZ25vbWUt Mi5zby4wLjE5OTkuMiIgYXQgYmxvY2sgMyBvZmZzZXQgMTg5NiBpbiBkaXJlY3RvcnkgaW5vZGUg MTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzNTUwNjkKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTg5Ni4uLgplbnRyeSAibGliaGFsLXN0b3JhZ2Ux LnNobGlicyIgYXQgYmxvY2sgOSBvZmZzZXQgNTY4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYw IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3MDAzMwoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCA1NjguLi4KZW50cnkgImxpYnhmY2VndWk0LnNvLjQiIGF0 IGJsb2NrIDMgb2Zmc2V0IDE5MzYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMjc2MzgzCmVudHJ5ICJsaWJoYWwtc3RvcmFnZTEubWQ1c3VtcyIg YXQgYmxvY2sgOSBvZmZzZXQgODk2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3MDAzNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCA4OTYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMTkzNi4uLgplbnRyeSAicHJvY21haWwubWQ1c3VtcyIgYXQgYmxvY2sgOSBvZmZzZXQg MTIwMCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyMjM3NTMzCmVudHJ5ICJsaWJnbm9tZS0yLnNvLjAiIGF0IGJsb2NrIDMgb2Zmc2V0IDE5 NjggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx MzU1MDcxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE5NjguLi4K CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTIwMC4uLgplbnRyeSAi bGliaGFsLXN0b3JhZ2UxLnN5bWJvbHMiIGF0IGJsb2NrIDkgb2Zmc2V0IDEyMzIgaW4gZGlyZWN0 b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTcwMDM2Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyMzIuLi4KZW50cnkgImxp YmZhbS5zby4wLjAuMCIgYXQgYmxvY2sgMyBvZmZzZXQgMjAwOCBpbiBkaXJlY3RvcnkgaW5vZGUg MTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY0MjUKZW50cnkgImFuYWNyb24u bWQ1c3VtcyIgYXQgYmxvY2sgOSBvZmZzZXQgMTQxNiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2 MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1OTg2MjkKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQxNi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyMDA4Li4uCmVudHJ5ICJweXRob24tbmV3dC5wb3N0aW5zdCIgYXQg YmxvY2sgOSBvZmZzZXQgMTQ4MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSA0OTAwMjMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTQ4MC4uLgplbnRyeSAicHl0aG9uLW5ld3QucHJlcm0iIGF0IGJsb2NrIDkg b2Zmc2V0IDE1MTIgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgNDkwMDI0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDE1MTIuLi4KZW50cnkgImxpYmJvbm9ib3VpLTIuc28uMC4wLjAiIGF0IGJsb2NrIDMgb2Zm c2V0IDIwNDAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxMzU1MDMxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIw NDAuLi4KZW50cnkgInB5dGhvbi1uZXd0Lm1kNXN1bXMiIGF0IGJsb2NrIDkgb2Zmc2V0IDE1NDQg aW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg NDkwMDI1CmVudHJ5ICJsaWJnYW1pbi0xLnNvLjAuMS45IiBhdCBibG9jayAzIG9mZnNldCAyMDgw IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3 NjQyNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMDgwLi4uCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE1NDQuLi4KZW50cnkgImxp YmJvbm9ib3VpLTIuc28uMCIgYXQgYmxvY2sgMyBvZmZzZXQgMjExMiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzNTUwNjcKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjExMi4uLgplbnRyeSAibGliZ2FtaW4tMS5z by4wIiBhdCBibG9jayAzIG9mZnNldCAyMTUyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjQyOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyMTUyLi4uCmVudHJ5ICJhbmFjcm9uLmNvbmZmaWxlcyIgYXQgYmxv Y2sgOSBvZmZzZXQgMTU3NiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSA1OTg2MzAKZW50cnkgImxpYmdub21lLW1lbnUuc28uMi4xLjI1IiBh dCBibG9jayAzIG9mZnNldCAyMTg0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTM1NTA3OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAyMTg0Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDE1NzYuLi4KZW50cnkgImxpYklETC0yLnNvLjAuMC4wIiBhdCBibG9jayAzIG9mZnNldCAy MjI0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTI3NjQ2MgplbnRyeSAicmVwb3J0YnVnLnBvc3RpbnN0IiBhdCBibG9jayA5IG9mZnNldCAxNjQw IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDQ5MDAyNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNjQwLi4u CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIyMjQuLi4KZW50cnkg InJlcG9ydGJ1Zy5wcmVpbnN0IiBhdCBibG9jayA5IG9mZnNldCAxNjcyIGluIGRpcmVjdG9yeSBp bm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ5MDAyOQplbnRyeSAi bGliZ25vbWUtbWVudS5zby4yIiBhdCBibG9jayAzIG9mZnNldCAyMjU2IGluIGRpcmVjdG9yeSBp bm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM1NTA3OQoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMjU2Li4uCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2NzIuLi4KZW50cnkgImxpYklETC0yLnNvLjAiIGF0 IGJsb2NrIDMgb2Zmc2V0IDIyOTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMjc2NDYzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDIyOTYuLi4KZW50cnkgInJlcG9ydGJ1Zy5wcmVybSIgYXQgYmxvY2sgOSBvZmZz ZXQgMTcwNCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSA0OTAwMzAKZW50cnkgImxpYmdub21ldWktMi5zby4wLjIwMDAuMSIgYXQgYmxvY2sg MyBvZmZzZXQgMjMyMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDEzNTUxMDYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMjMyMC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNzA0 Li4uCmVudHJ5ICJsaWJPUkJpdC0yLnNvLjAuMS4wIiBhdCBibG9jayAzIG9mZnNldCAyMzYwIGlu IGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjQ1 NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMzYwLi4uCmVudHJ5 ICJsaWJndG9wLTIuMC5zby43IiBhdCBibG9jayAzIG9mZnNldCAyMzkyIGluIGRpcmVjdG9yeSBp bm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NzAxNQoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMzkyLi4uCmVudHJ5ICJyZXBvcnRidWcu cG9zdHJtIiBhdCBibG9jayA5IG9mZnNldCAxNzM2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYw IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ5MDAzMQplbnRyeSAibGliT1JCaXQtaW1v ZHVsZS0yLnNvLjAuMC4wIiBhdCBibG9jayAzIG9mZnNldCAyNDQwIGluIGRpcmVjdG9yeSBpbm9k ZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjQ2MAoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNDQwLi4uCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3MzYuLi4KZW50cnkgImxpYmdrc3UyLnNvLjAuMC4yIiBh dCBibG9jayAzIG9mZnNldCAyNDgwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTI3NzAyOQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAyNDgwLi4uCmVudHJ5ICJyZXBvcnRidWcuY29uZmZpbGVzIiBhdCBibG9jayA5 IG9mZnNldCAxNzY4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDQ5MDAzMgplbnRyeSAibGliT1JCaXRDb3NOYW1pbmctMi5zby4wLjEuMCIg YXQgYmxvY2sgMyBvZmZzZXQgMjUyOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDEyNzY0NjQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMjUyOC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAxNzY4Li4uCmVudHJ5ICJsaWJodW5zcGVsbC0xLjIuc28uMCIgYXQgYmxvY2sgMyBvZmZz ZXQgMjU2OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDEzODg4MTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjU2 OC4uLgplbnRyeSAib3JiaXQtMi4wIiBhdCBibG9jayAzIG9mZnNldCAyNjAwIGluIGRpcmVjdG9y eSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjQ2NQoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjAwLi4uCmVudHJ5ICJyZXBvcnRi dWcubWQ1c3VtcyIgYXQgYmxvY2sgOSBvZmZzZXQgMTgwMCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5 NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0OTAwMzQKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTgwMC4uLgplbnRyeSAieHVscnVubmVyLTEuOSIg YXQgYmxvY2sgMyBvZmZzZXQgMjY0OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDEzODg4NTYKZW50cnkgImFuYWNyb24ucHJlcm0iIGF0IGJsb2Nr IDkgb2Zmc2V0IDIxMDQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgNTk4NjMxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDIxMDQuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MjY0OC4uLgplbnRyeSAiYW5hY3Jvbi5wb3N0aW5zdCIgYXQgYmxvY2sgOSBvZmZzZXQgMjQyNCBp biBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1 OTg2MzIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQyNC4uLgpl bnRyeSAibGliT1JCaXRDb3NOYW1pbmctMi5zby4wIiBhdCBibG9jayAzIG9mZnNldCAyNjcyIGlu IGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjQ2 NwplbnRyeSAid2FtZXJpY2FuLm1kNXN1bXMiIGF0IGJsb2NrIDkgb2Zmc2V0IDMxNTIgaW4gZGly ZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTk4NTk0 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMxNTIuLi4KCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjY3Mi4uLgplbnRyeSAid2FtZXJp Y2FuLnRlbXBsYXRlcyIgYXQgYmxvY2sgOSBvZmZzZXQgMzE4NCBpbiBkaXJlY3RvcnkgaW5vZGUg NDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1OTg1OTUKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzE4NC4uLgplbnRyeSAid2FtZXJpY2FuLnBv c3RpbnN0IiBhdCBibG9jayA5IG9mZnNldCAzMjE2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYw IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODU5NwoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMjE2Li4uCmVudHJ5ICJsaWJna3N1Mi5zby4wIiBhdCBi bG9jayAzIG9mZnNldCAyNzEyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTI3NzAzMAplbnRyeSAid2FtZXJpY2FuLnBvc3RybSIgYXQgYmxvY2sg OSBvZmZzZXQgMzI0OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSA1OTg1OTgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzI0OC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAy NzEyLi4uCmVudHJ5ICJ3YW1lcmljYW4uY29uZmlnIiBhdCBibG9jayA5IG9mZnNldCAzMjgwIGlu IGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5 ODU5OQplbnRyeSAibGliT1JCaXQtaW1vZHVsZS0yLnNvLjAiIGF0IGJsb2NrIDMgb2Zmc2V0IDI3 NjAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx Mjc2NDY4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI3NjAuLi4K CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzI4MC4uLgplbnRyeSAi bGliZ25vbWV1aS0yLnNvLjAiIGF0IGJsb2NrIDMgb2Zmc2V0IDI4MDAgaW4gZGlyZWN0b3J5IGlu b2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzU1MTA3CmVudHJ5ICJ2YmV0 b29sLm1kNXN1bXMiIGF0IGJsb2NrIDkgb2Zmc2V0IDM4NDAgaW4gZGlyZWN0b3J5IGlub2RlIDQy OTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTk4NjE2CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM4NDAuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMjgwMC4uLgplbnRyeSAibGliT1JCaXQtMi5zby4wIiBhdCBi bG9jayAzIG9mZnNldCAyODQwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTI3NjQ2OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAyODQwLi4uCmVudHJ5ICJhbmFjcm9uLnBvc3RybSIgYXQgYmxvY2sgOSBvZmZzZXQg Mzg3MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSA1OTg2MTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzg3 Mi4uLgplbnRyeSAibGlibGNtcy5zby4xLjAuMTYiIGF0IGJsb2NrIDMgb2Zmc2V0IDI4NzIgaW4g ZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4ODMx CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI4NzIuLi4KZW50cnkg ImxpYnRpbWVkYXRlLXBlcmwubWQ1c3VtcyIgYXQgYmxvY2sgMTAgb2Zmc2V0IDE2IGluIGRpcmVj dG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExNTYzNjcK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTYuLi4KZW50cnkgImxp YmVlbC0yLTIuMjAuc28iIGF0IGJsb2NrIDMgb2Zmc2V0IDI5MjggaW4gZGlyZWN0b3J5IGlub2Rl IDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4NjQwCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI5MjguLi4KZW50cnkgImxpYmdjb25mLTIuc28u NC4xLjUiIGF0IGJsb2NrIDMgb2Zmc2V0IDI5NjggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2NDcwCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDI5NjguLi4KZW50cnkgImxpYmFzcGVsbDE1LnBvc3RpbnN0IiBh dCBibG9jayAxMCBvZmZzZXQgMTYwIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODY0NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAxNjAuLi4KZW50cnkgImxpYm5hdXRpbHVzLWV4dGVuc2lvbi5zby4xIiBh dCBibG9jayAzIG9mZnNldCAzMDAwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTM4ODY1MQplbnRyeSAibGliYXNwZWxsMTUuc2hsaWJzIiBhdCBi bG9jayAxMCBvZmZzZXQgMTkyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDU5ODY0NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAxOTIuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMzAwMC4uLgplbnRyeSAibGliZ2NvbmYtMi5zby40IiBhdCBibG9jayAzIG9mZnNldCAzMDQw IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3 NjQ3OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDQwLi4uCmVu dHJ5ICJsaWJhc3BlbGwxNS5tZDVzdW1zIiBhdCBibG9jayAxMCBvZmZzZXQgMjI0IGluIGRpcmVj dG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODY0OApl bnRyeSAibGlibHRkbC5zby4zIiBhdCBibG9jayAzIG9mZnNldCAzMDk2IGluIGRpcmVjdG9yeSBp bm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4ODk0MQoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDk2Li4uCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIyNC4uLgplbnRyeSAibGliYXNwZWxsMTUucG9zdHJt IiBhdCBibG9jayAxMCBvZmZzZXQgMjU2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODY0OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyNTYuLi4KZW50cnkgImxpYmFydF9sZ3BsXzIuc28uMi4zLjIwIiBh dCBibG9jayAzIG9mZnNldCAzMTIwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTI3NjQ5NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzMTIwLi4uCmVudHJ5ICJuYXV0aWx1cyIgYXQgYmxvY2sgMyBvZmZzZXQgMzE2 MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEz ODg2NTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzE2MC4uLgpl bnRyeSAibGliYmx1ZXRvb3RoMi5wb3N0aW5zdCIgYXQgYmxvY2sgMTAgb2Zmc2V0IDEwODAgaW4g ZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTk4 NjgzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwODAuLi4KZW50 cnkgImxpYmFydF9sZ3BsXzIuc28uMiIgYXQgYmxvY2sgMyBvZmZzZXQgMzIwMCBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY0OTYKZW50cnkg ImxpYmJsdWV0b290aDIucG9zdHJtIiBhdCBibG9jayAxMCBvZmZzZXQgMTEyMCBpbiBkaXJlY3Rv cnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1OTg2ODQKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTEyMC4uLgoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMjAwLi4uCmVudHJ5ICJsaWJuc3ByNC5z by4wZCIgYXQgYmxvY2sgMyBvZmZzZXQgMzIzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg4MTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzIzMi4uLgplbnRyeSAibGliYmx1ZXRvb3RoMi5zaGxpYnMiIGF0 IGJsb2NrIDEwIG9mZnNldCAxMTUyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODY4NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAxMTUyLi4uCmVudHJ5ICJsaWJkbXguc28uMS4wLjAiIGF0IGJsb2NrIDMg b2Zmc2V0IDMyNzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxMjc2NTAwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDMyNzIuLi4KZW50cnkgImxpYm5zczMuc28uMWQiIGF0IGJsb2NrIDMgb2Zmc2V0IDMzMDQgaW4g ZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4ODI3 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMzMDQuLi4KZW50cnkg ImxpYmJsdWV0b290aDIubWQ1c3VtcyIgYXQgYmxvY2sgMTAgb2Zmc2V0IDExODQgaW4gZGlyZWN0 b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTk4Njg3Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExODQuLi4KZW50cnkgImxp YmRteC5zby4xIiBhdCBibG9jayAzIG9mZnNldCAzMzM2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjUwMQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMzM2Li4uCmVudHJ5ICJsaWJleHBhdDEuc2hsaWJzIiBh dCBibG9jayAxMCBvZmZzZXQgMTUwNCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA1OTg2OTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMTUwNC4uLgplbnRyeSAiZ3JhcGh2aXoiIGF0IGJsb2NrIDMgb2Zmc2V0 IDMzODQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxMzg4OTQyCmVudHJ5ICJsaWJleHBhdDEucG9zdGluc3QiIGF0IGJsb2NrIDEwIG9mZnNldCAx NTM2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDU5ODcwMAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTM2 Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMzODQuLi4KZW50 cnkgImxpYmV4cGF0MS5wb3N0cm0iIGF0IGJsb2NrIDEwIG9mZnNldCAxNTY4IGluIGRpcmVjdG9y eSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODcwMQoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTY4Li4uCmVudHJ5ICJsaWJn bGFkZS0yLjAuc28uMC4wLjciIGF0IGJsb2NrIDMgb2Zmc2V0IDM0MDggaW4gZGlyZWN0b3J5IGlu b2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2NTAyCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM0MDguLi4KZW50cnkgImxpYnBsYzQuc28u MGQiIGF0IGJsb2NrIDMgb2Zmc2V0IDM0NDAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4ODIwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDM0NDAuLi4KZW50cnkgImxpYmdsYWRlLTIuMC5zby4wIiBhdCBibG9j ayAzIG9mZnNldCAzNDgwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTI3NjUwMwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAzNDgwLi4uCmVudHJ5ICJsaWJleHBhdDEubWQ1c3VtcyIgYXQgYmxvY2sgMTAgb2Zmc2V0 IDE2MDAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgNTk4NzAyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2 MDAuLi4KZW50cnkgImxpYnNtYmlvcy5zby4yLjAuMCIgYXQgYmxvY2sgMyBvZmZzZXQgMzUxMiBp biBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzNTQ3 NjQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzUxMi4uLgplbnRy eSAibGliY3B1ZnJlcTAubWQ1c3VtcyIgYXQgYmxvY2sgMTAgb2Zmc2V0IDIyNDggaW4gZGlyZWN0 b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTk4NzEzCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIyNDguLi4KZW50cnkgImxp YmdhaWx1dGlsLnNvLjE4LjAuMSIgYXQgYmxvY2sgMyBvZmZzZXQgMzU2MCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY1MTAKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzU2MC4uLgplbnRyeSAibGlicGxkczQu c28uMGQiIGF0IGJsb2NrIDMgb2Zmc2V0IDM1OTIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4ODIxCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDM1OTIuLi4KZW50cnkgImxpYmdhaWx1dGlsLnNvLjE4IiBhdCBi bG9jayAzIG9mZnNldCAzNjMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTI3NjUzMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzNjMyLi4uCmVudHJ5ICJsaWJjcHVmcmVxMC5wb3N0aW5zdCIgYXQgYmxvY2sgMTAg b2Zmc2V0IDIyODAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgNTk4NzE0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDIyODAuLi4KZW50cnkgImxpYnNtYmlvcy5zby4yIiBhdCBibG9jayAzIG9mZnNldCAzNjY0 IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM1 NDc2OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNjY0Li4uCmVu dHJ5ICJsaWJjcHVmcmVxMC5wb3N0cm0iIGF0IGJsb2NrIDEwIG9mZnNldCAyMzEyIGluIGRpcmVj dG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODcxNQpl bnRyeSAibGliZ25vbWVjYW52YXMtMi5zby4wLjIwMDEuMCIgYXQgYmxvY2sgMyBvZmZzZXQgMzcx MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEy NzY1NjYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzcxMi4uLgoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMzEyLi4uCmVudHJ5ICJs aWJjcHVmcmVxMC5zaGxpYnMiIGF0IGJsb2NrIDEwIG9mZnNldCAyMzQ0IGluIGRpcmVjdG9yeSBp bm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODcxNgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMzQ0Li4uCmVudHJ5ICJsaWJsY21z LnNvLjEiIGF0IGJsb2NrIDMgb2Zmc2V0IDM3NTIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4ODMyCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDM3NTIuLi4KZW50cnkgImRvYy1saW51eC1pdC5wb3N0aW5zdCIg YXQgYmxvY2sgMTAgb2Zmc2V0IDMyMjQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTk4Nzc4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDMyMjQuLi4KZW50cnkgImxpYmd2Yy5zby40IiBhdCBibG9jayAzIG9m ZnNldCAzODMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTM4ODk2MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz ODMyLi4uCmVudHJ5ICJsaWJnbm9tZWNhbnZhcy0yLnNvLjAiIGF0IGJsb2NrIDMgb2Zmc2V0IDM4 NTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx Mjc2NTY3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM4NTYuLi4K ZW50cnkgImRvYy1saW51eC1pdC5wcmVpbnN0IiBhdCBibG9jayAxMCBvZmZzZXQgMzI1NiBpbiBk aXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1OTg3 NzkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzI1Ni4uLgplbnRy eSAiZG9jLWxpbnV4LWl0LnByZXJtIiBhdCBibG9jayAxMCBvZmZzZXQgMzI4OCBpbiBkaXJlY3Rv cnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1OTg3ODAKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzI4OC4uLgplbnRyeSAiZG9j LWxpbnV4LWl0Lm1kNXN1bXMiIGF0IGJsb2NrIDEwIG9mZnNldCAzMzIwIGluIGRpcmVjdG9yeSBp bm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODc4MQoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMzIwLi4uCmVudHJ5ICJsaWJwbGRz NC5zbyIgYXQgYmxvY2sgMyBvZmZzZXQgMzg4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg4MjIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzg4OC4uLgplbnRyeSAibGlieGZzbS00LjIuc28uMC4wLjEiIGF0 IGJsb2NrIDMgb2Zmc2V0IDM5MjggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMjc2NzU3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDM5MjguLi4KZW50cnkgImZvcnR1bmVzLWl0Lm1kNXN1bXMiIGF0IGJsb2NrIDEw IG9mZnNldCAzNjU2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDYwNTM4NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAzNjU2Li4uCmVudHJ5ICJsaWJwbGM0LnNvIiBhdCBibG9jayAzIG9mZnNldCAzOTYwIGlu IGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4ODgy MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzOTYwLi4uCmVudHJ5 ICJsaWJ4ZnNtLTQuMi5hIiBhdCBibG9jayAzIG9mZnNldCA0MDAwIGluIGRpcmVjdG9yeSBpbm9k ZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3Njc1OAoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MDAwLi4uCmVudHJ5ICJodG1sMnRleHQucG9z dGluc3QiIGF0IGJsb2NrIDExIG9mZnNldCA2NDAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE1NjQwMAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCA2NDAuLi4KZW50cnkgImh0bWwydGV4dC5wb3N0cm0iIGF0 IGJsb2NrIDExIG9mZnNldCA2NzIgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTE1NjQwMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCA2NzIuLi4KZW50cnkgImh0bWwydGV4dC5tZDVzdW1zIiBhdCBibG9jayAx MSBvZmZzZXQgNzA0IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDExNTY0MDMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgNzA0Li4uCmVudHJ5ICJsaWJtb3pqcy5zby4xZCIgYXQgYmxvY2sgMyBvZmZzZXQgNDAy NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEz ODg4MjUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDAyNC4uLgpl bnRyeSAibGlibnNwcjQuc28iIGF0IGJsb2NrIDMgb2Zmc2V0IDQwNTYgaW4gZGlyZWN0b3J5IGlu b2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4ODI0CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQwNTYuLi4KZW50cnkgImxpYmljZTYuc2hs aWJzIiBhdCBibG9jayAxMSBvZmZzZXQgMjE5MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTE5MDcKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMjE5Mi4uLgplbnRyeSAibGliaWNlNi5wb3N0aW5zdCIgYXQg YmxvY2sgMTEgb2Zmc2V0IDIyMjQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjUxOTA4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDIyMjQuLi4KZW50cnkgImxpYmljZTYubWQ1c3VtcyIgYXQgYmxvY2sgMTEg b2Zmc2V0IDIyNTYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMjUxOTEwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDIyNTYuLi4KZW50cnkgImxpYm5hdXRpbHVzLWV4dGVuc2lvbi5zby4xLjEuMCIgYXQgYmxv Y2sgNCBvZmZzZXQgMTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxMzg4NjUwCmVudHJ5ICJsaWJ4dDYucG9zdGluc3QiIGF0IGJsb2NrIDExIG9m ZnNldCAyMzUyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDI1MTkxNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAyMzUyLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2Li4u CmVudHJ5ICJsaWJ4dDYubWQ1c3VtcyIgYXQgYmxvY2sgMTEgb2Zmc2V0IDIzODQgaW4gZGlyZWN0 b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUxOTE4Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIzODQuLi4KZW50cnkgImxp YmljdXVjLnNvLjM4LjEiIGF0IGJsb2NrIDQgb2Zmc2V0IDY0IGluIGRpcmVjdG9yeSBpbm9kZSAx NDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTQ1OAoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2NC4uLgplbnRyeSAiZGVmb21hLmNvbmZmaWxlcyIg YXQgYmxvY2sgMTEgb2Zmc2V0IDM2MjQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUyMTE3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDM2MjQuLi4KZW50cnkgImxpYmh1bnNwZWxsLTEuMi5zby4wLjAuMCIg YXQgYmxvY2sgNCBvZmZzZXQgMTEyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTM4ODgxMgplbnRyeSAiZGVmb21hLm1kNXN1bXMiIGF0IGJsb2Nr IDExIG9mZnNldCAzNjU2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDI1MjExOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzNjU2Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDExMi4uLgplbnRyeSAibGliaWN1aTE4bi5zby4zOCIgYXQgYmxvY2sgNCBvZmZzZXQgMTUyIGlu IGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTQ2 NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTIuLi4KZW50cnkg ImRlZm9tYS5wb3N0aW5zdCIgYXQgYmxvY2sgMTEgb2Zmc2V0IDM2ODggaW4gZGlyZWN0b3J5IGlu b2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUyMTE5CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM2ODguLi4KZW50cnkgImxpYm5zc3V0 aWwzLnNvLjFkIiBhdCBibG9jayA0IG9mZnNldCAxOTIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4ODQwCmVudHJ5ICJkZWZvbWEucG9zdHJt IiBhdCBibG9jayAxMSBvZmZzZXQgMzcyMCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTIxMjAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzcyMC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAxOTIuLi4KZW50cnkgImxpYmljdWRhdGEuc28uMzgiIGF0IGJsb2NrIDQgb2Zm c2V0IDIyNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE0OTk0NjUKZW50cnkgImxpYmZzNi5wb3N0aW5zdCIgYXQgYmxvY2sgMTIgb2Zmc2V0IDQ4 IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDM1ODg5MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0OC4uLgoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMjQuLi4KZW50cnkgImxp YmZzNi5wb3N0cm0iIGF0IGJsb2NrIDEyIG9mZnNldCAzNTIgaW4gZGlyZWN0b3J5IGlub2RlIDQy OTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU4ODkyCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM1Mi4uLgplbnRyeSAibGlic21pbWUzLnNvLjFk IiBhdCBibG9jayA0IG9mZnNldCAyNjQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxMzg4ODQxCmVudHJ5ICJ4Zm9udHMtdXRpbHMubWQ1c3VtcyIg YXQgYmxvY2sgMTIgb2Zmc2V0IDQxNiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTYxNTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgNDE2Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDI2NC4uLgplbnRyeSAibGliZHJtX2ludGVsLnNvLjEuMC4wIiBhdCBibG9jayA0IG9m ZnNldCAyOTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxNDk5NDc4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI5 Ni4uLgplbnRyeSAibGliZnM2Lm1kNXN1bXMiIGF0IGJsb2NrIDEyIG9mZnNldCA0NDggaW4gZGly ZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU4ODkz CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ0OC4uLgplbnRyeSAi Z3Nmb250cy14MTEucG9zdGluc3QiIGF0IGJsb2NrIDEyIG9mZnNldCA1MTIgaW4gZGlyZWN0b3J5 IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjU2MTU0CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDUxMi4uLgplbnRyeSAibGlibnNz dXRpbDMuc28iIGF0IGJsb2NrIDQgb2Zmc2V0IDMzNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg4NDUKZW50cnkgImdzZm9udHMteDExLnBy ZWluc3QiIGF0IGJsb2NrIDEyIG9mZnNldCA1NDQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjU2MTU2CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDU0NC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzMzYuLi4KZW50cnkgImxpYmljdXVjLnNvLjM4IiBhdCBibG9jayA0IG9m ZnNldCAzNjggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxNDk5NDU5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM2 OC4uLgplbnRyeSAiZ3Nmb250cy14MTEucG9zdHJtIiBhdCBibG9jayAxMiBvZmZzZXQgNTc2IGlu IGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1 NjE1NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1NzYuLi4KZW50 cnkgImxpYmRqdnVsaWJyZS5zby4yMS4wLjAiIGF0IGJsb2NrIDQgb2Zmc2V0IDQxNiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg4NzcKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDE2Li4uCmVudHJ5ICJsaWJk cm1faW50ZWwuc28uMSIgYXQgYmxvY2sgNCBvZmZzZXQgNDU2IGluIGRpcmVjdG9yeSBpbm9kZSAx NDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTQ3OQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0NTYuLi4KZW50cnkgImdzZm9udHMteDExLmNvbmZm aWxlcyIgYXQgYmxvY2sgMTIgb2Zmc2V0IDYwOCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTYxNTgKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgNjA4Li4uCmVudHJ5ICJsaWJkanZ1bGlicmUuc28uMjEiIGF0 IGJsb2NrIDQgb2Zmc2V0IDQ5NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDEzODg4ODAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgNDk2Li4uCmVudHJ5ICJsaWJtYWxhZ2Euc28uNy4wLjAiIGF0IGJsb2NrIDQgb2Zm c2V0IDUyOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE0OTk0ODQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTI4 Li4uCmVudHJ5ICJnc2ZvbnRzLXgxMS5tZDVzdW1zIiBhdCBibG9jayAxMiBvZmZzZXQgNjQwIGlu IGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1 NjE1OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2NDAuLi4KZW50 cnkgImxpYmx0ZGwuc28uMy4xLjYiIGF0IGJsb2NrIDQgb2Zmc2V0IDU2OCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg5NDAKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTY4Li4uCmVudHJ5ICJsaWJtYWxhZ2Eu c28uNyIgYXQgYmxvY2sgNCBvZmZzZXQgNjAwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTQ4NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCA2MDAuLi4KZW50cnkgImxpYnhmdDIuc2hsaWJzIiBhdCBibG9jayAx MiBvZmZzZXQgMTI2NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAzNTg3ODUKZW50cnkgImxpYmFncmFwaC5zby40LjAuMCIgYXQgYmxvY2sg NCBvZmZzZXQgNjQwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTM4ODk0OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCA2NDAuLi4KZW50cnkgImxpYnZvaWtrby5zby4xLjYuMCIgYXQgYmxvY2sgNCBvZmZzZXQgNjcy IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5 OTQ4NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2NzIuLi4KCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTI2NC4uLgplbnRyeSAibGli Y2R0LnNvLjQuMC4wIiBhdCBibG9jayA0IG9mZnNldCA3MTIgaW4gZGlyZWN0b3J5IGlub2RlIDE0 OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4OTUwCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDcxMi4uLgplbnRyeSAibGlidm9pa2tvLnNvLjEiIGF0 IGJsb2NrIDQgb2Zmc2V0IDc0NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE0OTk0ODcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgNzQ0Li4uCmVudHJ5ICJsaWJjZ3JhcGguc28uNC4wLjAiIGF0IGJsb2NrIDQgb2Zm c2V0IDc4NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDEzODg5NTEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNzg0 Li4uCmVudHJ5ICJsaWJ4ZnQyLnBvc3RpbnN0IiBhdCBibG9jayAxMiBvZmZzZXQgMTI5NiBpbiBk aXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg3 ODYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTI5Ni4uLgplbnRy eSAibGlieGZ0Mi5wb3N0cm0iIGF0IGJsb2NrIDEyIG9mZnNldCAxMzI4IGluIGRpcmVjdG9yeSBp bm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1ODc4NwoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzI4Li4uCmVudHJ5ICJsaWJlbmNo YW50LnNvLjEuNC4yIiBhdCBibG9jayA0IG9mZnNldCA4MTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0 OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDk5NDg4CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDgxNi4uLgplbnRyeSAibGliZ3JhcGguc28uNC4wLjAi IGF0IGJsb2NrIDQgb2Zmc2V0IDg1NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDEzODg5NTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgODU2Li4uCmVudHJ5ICJsaWJ4ZnQyLm1kNXN1bXMiIGF0IGJsb2NrIDEyIG9m ZnNldCAxMzYwIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDM1ODc4OAplbnRyeSAiZW5jaGFudCIgYXQgYmxvY2sgNCBvZmZzZXQgODg4IGlu IGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTQ4 OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4ODguLi4KCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTM2MC4uLgplbnRyeSAibGliZ3Zj LnNvLjQuMC4wIiBhdCBibG9jayA0IG9mZnNldCA5MjggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4OTUzCmVudHJ5ICJsaWJ4bXV1MS5zaGxp YnMiIGF0IGJsb2NrIDEyIG9mZnNldCAxNTg0IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1ODc5MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAxNTg0Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDkyOC4uLgplbnRyeSAibGliZW5jaGFudC5zby4xIiBhdCBibG9jayA0IG9m ZnNldCA5NjAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxNDk5NDk4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDk2 MC4uLgplbnRyeSAibGlieG11dTEucG9zdGluc3QiIGF0IGJsb2NrIDEyIG9mZnNldCAxNjE2IGlu IGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1 ODc5NAplbnRyeSAibGlicGF0aHBsYW4uc28uNC4wLjAiIGF0IGJsb2NrIDQgb2Zmc2V0IDEwMDAg aW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4 OTU0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwMDAuLi4KCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTYxNi4uLgplbnRyeSAibGli ZXhpZi5zby4xMi4yLjAiIGF0IGJsb2NrIDQgb2Zmc2V0IDEwMzIgaW4gZGlyZWN0b3J5IGlub2Rl IDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDk5NTAwCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwMzIuLi4KZW50cnkgImxpYnBhdGhwbGFuLnNv LjQiIGF0IGJsb2NrIDQgb2Zmc2V0IDEwNzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4OTYxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDEwNzIuLi4KZW50cnkgImxpYnhtdXUxLm1kNXN1bXMiIGF0IGJsb2Nr IDEyIG9mZnNldCAxNjQ4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDM1ODc5NgplbnRyeSAibGliZXhpZi5zby4xMiIgYXQgYmxvY2sgNCBv ZmZzZXQgMTEwNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE0OTk1MDEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MTEwNC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNjQ4Li4u CmVudHJ5ICJsaWJncmFwaC5zby40IiBhdCBibG9jayA0IG9mZnNldCAxMTQ0IGluIGRpcmVjdG9y eSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4ODk2MwoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMTQ0Li4uCmVudHJ5ICJsaWJtcGZy MWxkYmwuc2hsaWJzIiBhdCBibG9jayAxMiBvZmZzZXQgMTc3NiBpbiBkaXJlY3RvcnkgaW5vZGUg NDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg4MDIKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTc3Ni4uLgplbnRyeSAibGliR0xVLnNvLjEu My4wNzAwMDQiIGF0IGJsb2NrIDQgb2Zmc2V0IDExNjggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDk5NTA2CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExNjguLi4KZW50cnkgImxpYm1wZnIxbGRibC5wb3N0aW5z dCIgYXQgYmxvY2sgMTIgb2Zmc2V0IDE4MDggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU4ODAzCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDE4MDguLi4KZW50cnkgImxpYmNncmFwaC5zby40IiBhdCBibG9j ayA0IG9mZnNldCAxMjA4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTM4ODk2NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAxMjA4Li4uCmVudHJ5ICJsaWJtcGZyMWxkYmwubWQ1c3VtcyIgYXQgYmxvY2sgMTIgb2Zm c2V0IDE4NDAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMzU4ODA2CmVudHJ5ICJsaWJRdFNjcmlwdC5zby40IiBhdCBibG9jayA0IG9mZnNl dCAxMjQwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTU5OTAxNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMjQw Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4NDAuLi4KZW50 cnkgImxpYmNkdC5zby40IiBhdCBibG9jayA0IG9mZnNldCAxMjcyIGluIGRpcmVjdG9yeSBpbm9k ZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4ODk2NQoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMjcyLi4uCmVudHJ5ICJsaWJHTFUuc28uMSIg YXQgYmxvY2sgNCBvZmZzZXQgMTI5NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDE0OTk1MDcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTI5Ni4uLgplbnRyeSAieDExLXhrYi11dGlscy5tZDVzdW1zIiBhdCBibG9j ayAxMiBvZmZzZXQgMjA4MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAzNTg4OTQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMjA4MC4uLgplbnRyeSAibGliYWdyYXBoLnNvLjQiIGF0IGJsb2NrIDQgb2Zmc2V0 IDEzMzYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxMzg4OTY2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEzMzYu Li4KZW50cnkgImxpYmZzNi5zaGxpYnMiIGF0IGJsb2NrIDEyIG9mZnNldCAyMjk2IGluIGRpcmVj dG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1ODg4OAoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMjk2Li4uCmVudHJ5ICJs aWJ0YWxsb2Muc28uMS4yLjAiIGF0IGJsb2NrIDQgb2Zmc2V0IDEzNjggaW4gZGlyZWN0b3J5IGlu b2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDk5NTA4CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEzNjguLi4KZW50cnkgImxpYmRybTIuc2hs aWJzIiBhdCBibG9jayAxMiBvZmZzZXQgMjUxMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg4NTIKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMjUxMi4uLgplbnRyeSAibGliZHJtMi5wb3N0aW5zdCIgYXQg YmxvY2sgMTIgb2Zmc2V0IDI1NDQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMzU4ODUzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDI1NDQuLi4KZW50cnkgImxpYkhhbGYuc28uNi4wLjAiIGF0IGJsb2NrIDQg b2Zmc2V0IDE0MDggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxMzg4OTY3CmVudHJ5ICJsaWJkcm0yLnBvc3RybSIgYXQgYmxvY2sgMTIgb2Zmc2V0 IDI1NzYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMzU4ODU0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1 NzYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQwOC4uLgpl bnRyeSAibGliZHJtMi5tZDVzdW1zIiBhdCBibG9jayAxMiBvZmZzZXQgMjYwOCBpbiBkaXJlY3Rv cnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg4NTUKZW50 cnkgImxpYnRhbGxvYy5zby4xIiBhdCBibG9jayA0IG9mZnNldCAxNDQwIGluIGRpcmVjdG9yeSBp bm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTUwOQoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNDQwLi4uCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI2MDguLi4KZW50cnkgImxpYkltYXRoLnNvLjYuMC4w IiBhdCBibG9jayA0IG9mZnNldCAxNDgwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTM4ODk2OAplbnRyeSAibGlieHhmODZ2bTEuc2hsaWJzIiBh dCBibG9jayAxMiBvZmZzZXQgMjgzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg4NjAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMjgzMi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAxNDgwLi4uCmVudHJ5ICJsaWJ4eGY4NnZtMS5wb3N0aW5zdCIgYXQgYmxvY2sgMTIg b2Zmc2V0IDI4NjQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMzU4ODYxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDI4NjQuLi4KZW50cnkgImxpYnh4Zjg2dm0xLm1kNXN1bXMiIGF0IGJsb2NrIDEyIG9mZnNl dCAyODk2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDM1ODg2MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAy ODk2Li4uCmVudHJ5ICJsaWJ3YmNsaWVudC5zby4wIiBhdCBibG9jayA0IG9mZnNldCAxNTEyIGlu IGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTUx MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTEyLi4uCmVudHJ5 ICJsaWJJZXguc28uNi4wLjAiIGF0IGJsb2NrIDQgb2Zmc2V0IDE1NTIgaW4gZGlyZWN0b3J5IGlu b2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4OTY5CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE1NTIuLi4KZW50cnkgImxpYmljdXR1LnNv LjM4IiBhdCBibG9jayA0IG9mZnNldCAxNTg0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTQ2MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAxNTg0Li4uCmVudHJ5ICJsaWJ4aTYuc2hsaWJzIiBhdCBibG9jayAx MiBvZmZzZXQgMzE2MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAzNTg4NjgKZW50cnkgImxpYklsbVRocmVhZC5zby42LjAuMCIgYXQgYmxv Y2sgNCBvZmZzZXQgMTYzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDEzODg5NzAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMTYzMi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz MTYwLi4uCmVudHJ5ICJsaWJzbWJjbGllbnQuc28uMCIgYXQgYmxvY2sgNCBvZmZzZXQgMTY2NCBp biBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0OTk1 MTYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTY2NC4uLgplbnRy eSAibGliSW1hdGguc28uNiIgYXQgYmxvY2sgNCBvZmZzZXQgMTcwNCBpbiBkaXJlY3RvcnkgaW5v ZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg5NzEKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTcwNC4uLgplbnRyeSAibGlieGk2LnBvc3Rp bnN0IiBhdCBibG9jayAxMiBvZmZzZXQgMzE4NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg4NjkKZW50cnkgImxpYlF0R3VpLnNvLjQu NC4zIiBhdCBibG9jayA0IG9mZnNldCAxNzI4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU5OTAxOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAxNzI4Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDMxODQuLi4KZW50cnkgImxpYkhhbGYuc28uNiIgYXQgYmxvY2sgNCBvZmZzZXQg MTc2MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDEzODg5NzIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTc2MC4u LgplbnRyeSAibGliUXRHdWkuc28uNC40IiBhdCBibG9jayA0IG9mZnNldCAxNzg0IGluIGRpcmVj dG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU5OTAyMQoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNzg0Li4uCmVudHJ5ICJsaWJJ ZXguc28uNiIgYXQgYmxvY2sgNCBvZmZzZXQgMTgxNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg5NzMKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMTgxNi4uLgplbnRyeSAibGlieGk2Lm1kNXN1bXMiIGF0IGJs b2NrIDEyIG9mZnNldCAzMjE2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDM1ODg3MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzMjE2Li4uCmVudHJ5ICJsaWJtbmcuc28uMS4xLjAuOSIgYXQgYmxvY2sgNCBv ZmZzZXQgMTg0MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE1OTg5NTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MTg0MC4uLgplbnRyeSAibGlieHRzdDYuc2hsaWJzIiBhdCBibG9jayAxMiBvZmZzZXQgMzQ5NiBp biBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAz NTg4NzYKZW50cnkgImxpYklsbVRocmVhZC5zby42IiBhdCBibG9jayA0IG9mZnNldCAxODgwIGlu IGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4ODk3 NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODgwLi4uCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM0OTYuLi4KZW50cnkgImxpYm1u Zy5zby4xIiBhdCBibG9jayA0IG9mZnNldCAxOTEyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU5ODk1OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAxOTEyLi4uCmVudHJ5ICJsaWJqYXNwZXIuc28uMS4wLjAiIGF0 IGJsb2NrIDQgb2Zmc2V0IDE5NTIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMzg4OTgxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDE5NTIuLi4KZW50cnkgImxpYnh0c3Q2LnBvc3RpbnN0IiBhdCBibG9jayAxMiBv ZmZzZXQgMzUyOCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAzNTg4NzcKZW50cnkgImxpYm15c3FsY2xpZW50LnNvLjE1LjAuMCIgYXQgYmxv Y2sgNCBvZmZzZXQgMTk4NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDE1OTg5NjQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMTk4NC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz NTI4Li4uCmVudHJ5ICJsaWJqYXNwZXIuc28uMSIgYXQgYmxvY2sgNCBvZmZzZXQgMjAyNCBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg5ODIK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjAyNC4uLgplbnRyeSAi bGlibXlzcWxjbGllbnRfci5zby4xNS4wLjAiIGF0IGJsb2NrIDQgb2Zmc2V0IDIwNTYgaW4gZGly ZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTk4OTY1Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwNTYuLi4KZW50cnkgImxp Ynh0c3Q2LnBvc3RybSIgYXQgYmxvY2sgMTIgb2Zmc2V0IDM1NjAgaW4gZGlyZWN0b3J5IGlub2Rl IDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU4ODc4CmVudHJ5ICJsaWJJ bG1JbWYuc28uNi4wLjAiIGF0IGJsb2NrIDQgb2Zmc2V0IDIwOTYgaW4gZGlyZWN0b3J5IGlub2Rl IDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4OTc1CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwOTYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzU2MC4uLgplbnRyeSAibGlibXlzcWxjbGllbnRfci5zby4x NSIgYXQgYmxvY2sgNCBvZmZzZXQgMjEyOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1OTg5NjYKZW50cnkgImxpYnh0c3Q2Lm1kNXN1bXMiIGF0 IGJsb2NrIDEyIG9mZnNldCAzNTkyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1ODg3OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzNTkyLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDIxMjguLi4KZW50cnkgImxpYnh4Zjg2ZGdhMS5zaGxpYnMiIGF0IGJsb2NrIDEyIG9m ZnNldCAzODU2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDM1ODg4NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzODU2Li4uCmVudHJ5ICJsaWJ4eGY4NmRnYTEucG9zdGluc3QiIGF0IGJsb2NrIDEyIG9mZnNl dCAzODg4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDM1ODg4NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz ODg4Li4uCmVudHJ5ICJsaWJJbG1JbWYuc28uNiIgYXQgYmxvY2sgNCBvZmZzZXQgMjE2OCBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg5NzkK ZW50cnkgImxpYnh4Zjg2ZGdhMS5wb3N0cm0iIGF0IGJsb2NrIDEyIG9mZnNldCAzOTIwIGluIGRp cmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1ODg4 NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzOTIwLi4uCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIxNjguLi4KZW50cnkgImxpYnh4 Zjg2ZGdhMS5tZDVzdW1zIiBhdCBibG9jayAxMiBvZmZzZXQgMzk1MiBpbiBkaXJlY3RvcnkgaW5v ZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg4ODcKZW50cnkgImxp Ym15c3FsY2xpZW50LnNvLjE1IiBhdCBibG9jayA0IG9mZnNldCAyMjAwIGluIGRpcmVjdG9yeSBp bm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU5ODk2NwoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMjAwLi4uCmVudHJ5ICJsaWJ3bWYtMC4y LnNvLjcuMS4wIiBhdCBibG9jayA0IG9mZnNldCAyMjQwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4ODk5MQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMjQwLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDM5NTIuLi4KZW50cnkgImxpYmljdWx4LnNvLjM4IiBhdCBibG9jayA0 IG9mZnNldCAyMjcyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTQ5OTQ2MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAyMjcyLi4uCmVudHJ5ICJsaWJ3bWZsaXRlLTAuMi5zby43LjAuMSIgYXQgYmxvY2sgNCBvZmZz ZXQgMjMyMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDEzODkwMjQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjMy MC4uLgplbnRyeSAibGlidGlmZjQucG9zdHJtIiBhdCBibG9jayAxMyBvZmZzZXQgODQ4IGluIGRp cmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1OTEx OQplbnRyeSAibGlicGNpYWNjZXNzLnNvLjAuMTAuMiIgYXQgYmxvY2sgNCBvZmZzZXQgMjM2MCBp biBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1OTg5 ODMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjM2MC4uLgoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4NDguLi4KZW50cnkgImxpYndt Zi0wLjIuc28uNyIgYXQgYmxvY2sgNCBvZmZzZXQgMjQwMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODkwMjYKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQwMC4uLgplbnRyeSAibGlicGNpYWNjZXNzLnNvLjAi IGF0IGJsb2NrIDQgb2Zmc2V0IDI0MzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxNTk4OTg0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDI0MzIuLi4KZW50cnkgImxpYnNscDEudGVtcGxhdGVzIiBhdCBibG9jayAx MyBvZmZzZXQgMTEyMCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAzNTkxMjYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMTEyMC4uLgplbnRyeSAibGlid21mbGl0ZS0wLjIuc28uNyIgYXQgYmxvY2sgNCBvZmZz ZXQgMjQ3MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDEzODkwMjcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQ3 Mi4uLgplbnRyeSAibGlicGVybC5zby41LjEwLjAiIGF0IGJsb2NrIDQgb2Zmc2V0IDI1MDQgaW4g ZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTk4OTg1 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1MDQuLi4KZW50cnkg ImxpYmFzb3VuZDIucG9zdHJtIiBhdCBibG9jayAxMyBvZmZzZXQgMTQwOCBpbiBkaXJlY3Rvcnkg aW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjE0OAplbnRyeSAi bGlicGVybC5zby41LjEwIiBhdCBibG9jayA0IG9mZnNldCAyNTc2IGluIGRpcmVjdG9yeSBpbm9k ZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU5ODk4NgoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNTc2Li4uCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE0MDguLi4KZW50cnkgImxpYmFzb3VuZDIuc2hsaWJzIiBh dCBibG9jayAxMyBvZmZzZXQgMTQ0MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjE0OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAxNDQwLi4uCmVudHJ5ICJsaWJhc291bmQyLnBvc3RpbnN0IiBhdCBibG9j ayAxMyBvZmZzZXQgMTQ3MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMjE1MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAxNDcyLi4uCmVudHJ5ICJsaWJXYW5kLnNvLjEwLjAuOSIgYXQgYmxvY2sgNCBvZmZz ZXQgMjYxNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDEzODg5ODkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjYx Ni4uLgplbnRyeSAibGliYXNvdW5kMi5tZDVzdW1zIiBhdCBibG9jayAxMyBvZmZzZXQgMTUwNCBp biBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx MjE1MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTA0Li4uCmVu dHJ5ICJsaWJzbHAxLmNvbmZpZyIgYXQgYmxvY2sgMTMgb2Zmc2V0IDE1MzYgaW4gZGlyZWN0b3J5 IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU5MTI1CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE1MzYuLi4KZW50cnkgImxpYlF0 Q29yZS5zby40LjQuMyIgYXQgYmxvY2sgNCBvZmZzZXQgMjY0OCBpbiBkaXJlY3RvcnkgaW5vZGUg MTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1OTg5OTMKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjY0OC4uLgplbnRyeSAibGliTWFnaWNrLnNvLjEw LjAuOSIgYXQgYmxvY2sgNCBvZmZzZXQgMjY4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODkwMjkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMjY4OC4uLgplbnRyeSAibGliUXRDTHVjZW5lLnNvLjQuNC4zIiBh dCBibG9jayA0IG9mZnNldCAyNzIwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTU5ODk5NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAyNzIwLi4uCmVudHJ5ICJsaWJ0aWZmNC5zaGxpYnMiIGF0IGJsb2NrIDEzIG9m ZnNldCAxNzYwIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDM1OTEyMAplbnRyeSAibGliV2FuZC5zby4xMCIgYXQgYmxvY2sgNCBvZmZzZXQg Mjc2MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDEzODkwMzAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjc2MC4u LgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNzYwLi4uCmVudHJ5 ICJsaWJRdENMdWNlbmUuc28uNCIgYXQgYmxvY2sgNCBvZmZzZXQgMjc4NCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1OTkwMDAKZW50cnkgImxp YnRpZmY0Lm1kNXN1bXMiIGF0IGJsb2NrIDEzIG9mZnNldCAxODgwIGluIGRpcmVjdG9yeSBpbm9k ZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1OTEyMgoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODgwLi4uCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI3ODQuLi4KZW50cnkgImxpYmF2YWhpLWNvcmU1LnN5 bWJvbHMiIGF0IGJsb2NrIDEzIG9mZnNldCAyMjI0IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYw IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1OTAzNgplbnRyeSAibGliTWFnaWNrLnNv LjEwIiBhdCBibG9jayA0IG9mZnNldCAyODI0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4OTAzMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyODI0Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDIyMjQuLi4KZW50cnkgImxpYmF2YWhpLWNvcmU1LnBvc3RpbnN0IiBhdCBibG9j ayAxMyBvZmZzZXQgMjI2NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAzNTkwMzcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMjI2NC4uLgplbnRyeSAibGliUXRDb3JlLnNvLjQuNCIgYXQgYmxvY2sgNCBvZmZz ZXQgMjg1NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE1OTkwMDEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjg1 Ni4uLgplbnRyeSAibGliYXZhaGktY29yZTUucG9zdHJtIiBhdCBibG9jayAxMyBvZmZzZXQgMjMw NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAzNTkwMzgKZW50cnkgImxpYlhwLnNvLjYuMi4wIiBhdCBibG9jayA0IG9mZnNldCAyODk2IGlu IGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTMw NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyODk2Li4uCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIzMDQuLi4KZW50cnkgImxpYlF0 R3VpLnNvLjQiIGF0IGJsb2NrIDQgb2Zmc2V0IDI5MjggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTk5MDIyCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI5MjguLi4KZW50cnkgImxpYmF2YWhpLWNvcmU1LnNobGli cyIgYXQgYmxvY2sgMTMgb2Zmc2V0IDIzMzYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU5MDM5CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDIzMzYuLi4KZW50cnkgImxpYlhwLnNvLjYiIGF0IGJsb2NrIDQg b2Zmc2V0IDI5NjAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxNDk5MzA3CmVudHJ5ICJsaWJhdmFoaS1jb3JlNS5tZDVzdW1zIiBhdCBibG9jayAx MyBvZmZzZXQgMjM2OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAzNTkwNDEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMjM2OC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAy OTYwLi4uCmVudHJ5ICJsaWJRdENvcmUuc28uNCIgYXQgYmxvY2sgNCBvZmZzZXQgMjk4NCBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1OTkwMDIK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjk4NC4uLgplbnRyeSAi bGlic2xwMS5zaGxpYnMiIGF0IGJsb2NrIDEzIG9mZnNldCAyNDA4IGluIGRpcmVjdG9yeSBpbm9k ZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1OTEyNwoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNDA4Li4uCmVudHJ5ICJsaWJYbS5zby4y LjAuMSIgYXQgYmxvY2sgNCBvZmZzZXQgMzAyNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0OTkzMTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzAyNC4uLgplbnRyeSAibGlic2xwMS5wb3N0aW5zdCIgYXQgYmxv Y2sgMTMgb2Zmc2V0IDI5NDQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMzU5MTI4CmVudHJ5ICJsaWJRdENMdWNlbmUuc28uNC40IiBhdCBi bG9jayA0IG9mZnNldCAzMDU2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTU5OTAwMwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzMDU2Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDI5NDQuLi4KZW50cnkgImxpYk1ybS5zby4yLjAuMSIgYXQgYmxvY2sgNCBvZmZzZXQgMzA5NiBp biBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0OTkz MTQKZW50cnkgImxpYnNscDEucG9zdHJtIiBhdCBibG9jayAxMyBvZmZzZXQgMzA0MCBpbiBkaXJl Y3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTkxMjkK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzA0MC4uLgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDk2Li4uCmVudHJ5ICJsaWJzbHAx Lm1kNXN1bXMiIGF0IGJsb2NrIDEzIG9mZnNldCAzMTc2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3 MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1OTEzMQplbnRyeSAibGliUXREZXNp Z25lci5zby40LjQiIGF0IGJsb2NrIDQgb2Zmc2V0IDMxMjggaW4gZGlyZWN0b3J5IGlub2RlIDE0 OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTk5MDMyCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMxMjguLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzE3Ni4uLgplbnRyeSAibGliTXJtLnNvLjIiIGF0IGJsb2NrIDQg b2Zmc2V0IDMxNjAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxNDk5MzE1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDMxNjAuLi4KZW50cnkgImxpYlF0RGVzaWduZXIuc28uNCIgYXQgYmxvY2sgNCBvZmZzZXQgMzE4 NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1 OTkwMzMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzE4NC4uLgpl bnRyeSAibGliY3VwczIucG9zdGluc3QiIGF0IGJsb2NrIDEzIG9mZnNldCAzNzQ0IGluIGRpcmVj dG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1OTEwNApl bnRyeSAibGliWG0uc28uMiIgYXQgYmxvY2sgNCBvZmZzZXQgMzIxNiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0OTkzMTYKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIxNi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNzQ0Li4uCmVudHJ5ICJsaWJpY3VsZS5zby4zOCIgYXQg YmxvY2sgNCBvZmZzZXQgMzI0MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE0OTk0NjIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMzI0MC4uLgplbnRyeSAibGliY3VwczIuc2hsaWJzIiBhdCBibG9jayAxMyBvZmZz ZXQgMzc3NiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAzNTkxMDUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg Mzc3Ni4uLgplbnRyeSAibGliQWlrc2F1cnVzLTEuMi5zby4wLjAuMSIgYXQgYmxvY2sgNCBvZmZz ZXQgMzI4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE0OTkzMTkKZW50cnkgImxpYmN1cHMyLm1kNXN1bXMiIGF0IGJsb2NrIDEzIG9mZnNldCAz ODA4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDM1OTEwNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzODA4 Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyODguLi4KZW50 cnkgImxpYmN1cHMyLnBvc3RybSIgYXQgYmxvY2sgMTMgb2Zmc2V0IDM4NDAgaW4gZGlyZWN0b3J5 IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU5MTA4CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM4NDAuLi4KZW50cnkgImxpYmlj dWlvLnNvLjM4IiBhdCBibG9jayA0IG9mZnNldCAzMzI4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTQ2MwplbnRyeSAibGlidGlmZjQucG9z dGluc3QiIGF0IGJsb2NrIDEzIG9mZnNldCA0MDMyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYw IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1OTExOAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MDMyLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDMzMjguLi4KZW50cnkgImxpYkFpa3NhdXJ1cy0xLjIuc28uMCIgYXQg YmxvY2sgNCBvZmZzZXQgMzM3NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE0OTkzMjAKZW50cnkgInhwZGYtY29tbW9uLnBvc3RpbnN0IiBhdCBi bG9jayAxNCBvZmZzZXQgMjE2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDM1OTEzNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAyMTYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMzM3Ni4uLgplbnRyeSAieHBkZi1jb21tb24ucG9zdHJtIiBhdCBibG9jayAxNCBvZmZzZXQg MjQ4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDM1OTEzOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNDgu Li4KZW50cnkgInhwZGYtY29tbW9uLmNvbmZmaWxlcyIgYXQgYmxvY2sgMTQgb2Zmc2V0IDI4MCBp biBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAz NTkxMzkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjgwLi4uCmVu dHJ5ICJsaWJRdFhtbC5zby40LjQuMyIgYXQgYmxvY2sgNCBvZmZzZXQgMzQwOCBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1OTg5ODcKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzQwOC4uLgplbnRyeSAieHBkZi1j b21tb24ubWQ1c3VtcyIgYXQgYmxvY2sgMTQgb2Zmc2V0IDMxMiBpbiBkaXJlY3RvcnkgaW5vZGUg NDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTkxNDAKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzEyLi4uCmVudHJ5ICJsaWJhdWRpby5zby4y LjQiIGF0IGJsb2NrIDQgb2Zmc2V0IDM0NDggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDk5MzUwCmVudHJ5ICJ4cGRmLXV0aWxzLm1kNXN1bXMi IGF0IGJsb2NrIDE0IG9mZnNldCA0MDggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU5MTQ3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDQwOC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzNDQ4Li4uCmVudHJ5ICJjdXBzLWNvbW1vbi5tZDVzdW1zIiBhdCBibG9jayAxNCBv ZmZzZXQgODE2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDM1OTE2NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCA4MTYuLi4KZW50cnkgImxpYlF0TmV0d29yay5zby40LjQuMyIgYXQgYmxvY2sgNCBvZmZzZXQg MzQ4MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDE1OTkwMzQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzQ4MC4u LgplbnRyeSAiY3Vwcy5jb25mZmlsZXMiIGF0IGJsb2NrIDE0IG9mZnNldCAxMDgwIGluIGRpcmVj dG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMjI1NQoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMDgwLi4uCmVudHJ5ICJB dUVycm9yREIiIGF0IGJsb2NrIDQgb2Zmc2V0IDM1MTIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDk5MzUxCmVudHJ5ICJjdXBzLnByZWluc3Qi IGF0IGJsb2NrIDE0IG9mZnNldCAxMTEyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMjI1NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAxMTEyLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDM1MTIuLi4KZW50cnkgImN1cHMucHJlcm0iIGF0IGJsb2NrIDE0IG9mZnNldCAx MTM2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDQyMjI1NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMTM2 Li4uCmVudHJ5ICJjdXBzLnBvc3RpbnN0IiBhdCBibG9jayAxNCBvZmZzZXQgMTE2MCBpbiBkaXJl Y3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjIyNTgK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTE2MC4uLgplbnRyeSAi bGliUXRYbWwuc28uNCIgYXQgYmxvY2sgNCBvZmZzZXQgMzUzNiBpbiBkaXJlY3RvcnkgaW5vZGUg MTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1OTkwMDgKZW50cnkgImN1cHMudGVt cGxhdGVzIiBhdCBibG9jayAxNCBvZmZzZXQgMTE4NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2 MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjIyNTkKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTE4NC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAzNTM2Li4uCmVudHJ5ICJjdXBzLmNvbmZpZyIgYXQgYmxvY2sgMTQg b2Zmc2V0IDEyMTYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgNDIyMjYwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDEyMTYuLi4KZW50cnkgImxpYmF1ZGlvLnNvLjIiIGF0IGJsb2NrIDQgb2Zmc2V0IDM1NzYg aW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDk5 MzUyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM1NzYuLi4KZW50 cnkgImN1cHMubWQ1c3VtcyIgYXQgYmxvY2sgMTQgb2Zmc2V0IDEyNDAgaW4gZGlyZWN0b3J5IGlu b2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDIyMjYxCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyNDAuLi4KZW50cnkgImxpYlF0WG1s LnNvLjQuNCIgYXQgYmxvY2sgNCBvZmZzZXQgMzYwMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1OTkwMDkKZW50cnkgImN1cHMucG9zdHJtIiBh dCBibG9jayAxNCBvZmZzZXQgMTI2NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjIyNjMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMTI2NC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzNjAwLi4uCmVudHJ5ICJsaWJpY3VkYXRhLnNvLjM4LjEiIGF0IGJsb2NrIDQgb2Zm c2V0IDM2NDAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxNDk5MzU2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM2 NDAuLi4KZW50cnkgImxpYmd0azIuMC1jb21tb24ubWQ1c3VtcyIgYXQgYmxvY2sgMTQgb2Zmc2V0 IDE2NDAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgNDIyOTg3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2 NDAuLi4KZW50cnkgImxpYlF0REJ1cy5zby40LjQuMyIgYXQgYmxvY2sgNCBvZmZzZXQgMzY3MiBp biBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1OTkw MTAKZW50cnkgImxpYmd0azIuMC1jb21tb24ucHJlaW5zdCIgYXQgYmxvY2sgMTQgb2Zmc2V0IDE2 ODAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNDIyOTg4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2ODAu Li4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzY3Mi4uLgplbnRy eSAibGliaWN1aTE4bi5zby4zOC4xIiBhdCBibG9jayA0IG9mZnNldCAzNzEyIGluIGRpcmVjdG9y eSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTM1NwoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNzEyLi4uCmVudHJ5ICJsaWJkaXJl Y3RmYi0xLjAtMC5zaGxpYnMiIGF0IGJsb2NrIDE0IG9mZnNldCAyMjQ4IGluIGRpcmVjdG9yeSBp bm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMzA4MwoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMjQ4Li4uCmVudHJ5ICJsaWJkaXJl Y3RmYi0xLjAtMC5wb3N0aW5zdCIgYXQgYmxvY2sgMTQgb2Zmc2V0IDIyODggaW4gZGlyZWN0b3J5 IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDIzMDg0CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIyODguLi4KZW50cnkgImxpYlF0 REJ1cy5zby40LjQiIGF0IGJsb2NrIDQgb2Zmc2V0IDM3NDQgaW4gZGlyZWN0b3J5IGlub2RlIDE0 OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTk5MDExCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM3NDQuLi4KZW50cnkgImxpYmRpcmVjdGZiLTEuMC0w LnBvc3RybSIgYXQgYmxvY2sgMTQgb2Zmc2V0IDIzMjggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcx NjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDIzMDg1CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIzMjguLi4KZW50cnkgImxpYmljdWlvLnNvLjM4LjEi IGF0IGJsb2NrIDQgb2Zmc2V0IDM3ODQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxNDk5MzU4CmVudHJ5ICJsaWJkaXJlY3RmYi0xLjAtMC5tZDVz dW1zIiBhdCBibG9jayAxNCBvZmZzZXQgMjM2OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjMwODcKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMjM2OC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzNzg0Li4uCmVudHJ5ICJsaWJwaXhtYW4tMS0wLnNobGlicyIgYXQgYmxv Y2sgMTQgb2Zmc2V0IDI0ODAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgNDIzMDg2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDI0ODAuLi4KZW50cnkgImxpYnBpeG1hbi0xLTAuc3ltYm9scyIgYXQgYmxvY2sg MTQgb2Zmc2V0IDI1MTIgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgNDIzMTAyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDI1MTIuLi4KZW50cnkgImxpYlF0REJ1cy5zby40IiBhdCBibG9jayA0IG9mZnNldCAz ODE2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTU5OTAxMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzODE2Li4u CmVudHJ5ICJsaWJwaXhtYW4tMS0wLnBvc3RpbnN0IiBhdCBibG9jayAxNCBvZmZzZXQgMjU0NCBp biBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0 MjMxMDMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjU0NC4uLgpl bnRyeSAibGliaWN1bGUuc28uMzguMSIgYXQgYmxvY2sgNCBvZmZzZXQgMzg1NiBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0OTkzNTkKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzg1Ni4uLgplbnRyeSAibGlicGl4 bWFuLTEtMC5wb3N0cm0iIGF0IGJsb2NrIDE0IG9mZnNldCAyNTg0IGluIGRpcmVjdG9yeSBpbm9k ZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMzY4MAoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNTg0Li4uCmVudHJ5ICJsaWJRdFNjcmlw dC5zby40LjQuMyIgYXQgYmxvY2sgNCBvZmZzZXQgMzg4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1OTkwMTMKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzg4OC4uLgplbnRyeSAibGlicGl4bWFuLTEtMC5tZDVz dW1zIiBhdCBibG9jayAxNCBvZmZzZXQgMjYxNiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjM2ODEKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMjYxNi4uLgplbnRyeSAibGliaWN1bHguc28uMzguMSIgYXQg YmxvY2sgNCBvZmZzZXQgMzkyOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE0OTk0NTYKZW50cnkgImxpYnRoYWktZGF0YS5tZDVzdW1zIiBhdCBi bG9jayAxNCBvZmZzZXQgMjY0OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSA0MjM3MDUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMjY0OC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAzOTI4Li4uCmVudHJ5ICJsaWJ4Y2ItcmVuZGVyLXV0aWwwLnNobGlicyIgYXQgYmxvY2sg MTQgb2Zmc2V0IDI5NDQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgNDIzNjg2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDI5NDQuLi4KZW50cnkgImxpYlF0U2NyaXB0LnNvLjQuNCIgYXQgYmxvY2sgNCBvZmZz ZXQgMzk2MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE1OTkwMTYKZW50cnkgImxpYnhjYi1yZW5kZXItdXRpbDAucG9zdGluc3QiIGF0IGJsb2Nr IDE0IG9mZnNldCAyOTg0IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDQyMzY4NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAyOTg0Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDM5NjAuLi4KZW50cnkgImxpYnhjYi1yZW5kZXItdXRpbDAucG9zdHJtIiBhdCBibG9jayAxNCBv ZmZzZXQgMzAyNCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSA0MjM2ODgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMzAyNC4uLgplbnRyeSAibGliaWN1dHUuc28uMzguMSIgYXQgYmxvY2sgNCBvZmZzZXQgNDAw MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0 OTk0NTcKZW50cnkgImxpYnhjYi1yZW5kZXItdXRpbDAubWQ1c3VtcyIgYXQgYmxvY2sgMTQgb2Zm c2V0IDMwNjQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgNDIzNjkwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDMwNjQuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDAwMC4u LgplbnRyeSAibGliZ3RrMi4wLTAucG9zdGluc3QiIGF0IGJsb2NrIDE0IG9mZnNldCAzMzI4IGlu IGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQy MzczOQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMzI4Li4uCmVu dHJ5ICJmb250Y29uZmlnLnBvc3RpbnN0IiBhdCBibG9jayAxNCBvZmZzZXQgMzM5MiBpbiBkaXJl Y3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjM2OTQK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzM5Mi4uLgplbnRyeSAi bGliUXQzU3VwcG9ydC5zby40LjQuMyIgYXQgYmxvY2sgNCBvZmZzZXQgNDAzMiBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1OTkwNDYKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDAzMi4uLgplbnRyeSAibGliUXRT cWwuc28uNCIgYXQgYmxvY2sgNCBvZmZzZXQgNDA3MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1OTkwNDQKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgNDA3Mi4uLgplbnRyeSAiZm9udGNvbmZpZy5wcmVpbnN0IiBh dCBibG9jayAxNCBvZmZzZXQgMzQyNCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjM2OTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMzQyNC4uLgplbnRyeSAibGliYm9vc3RfcmVnZXgtZ2NjNDItMV8zNF8x LnNvLjEuMzQuMSIgYXQgYmxvY2sgNSBvZmZzZXQgMTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDk5NDY2CmVudHJ5ICJmb250Y29uZmlnLnBy ZXJtIiBhdCBibG9jayAxNCBvZmZzZXQgMzQ1NiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjM2OTYKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzQ1Ni4uLgplbnRyeSAiZm9udGNvbmZpZy5wb3N0cm0iIGF0 IGJsb2NrIDE0IG9mZnNldCAzNDg4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMzY5NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzNDg4Li4uCmVudHJ5ICJmb250Y29uZmlnLm1kNXN1bXMiIGF0IGJsb2Nr IDE0IG9mZnNldCAzNTIwIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDQyMzY5OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzNTIwLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDE2Li4uCmVudHJ5ICJsaWJndGsyLjAtMC5zaGxpYnMiIGF0IGJsb2NrIDE0IG9mZnNldCA0MDY0 IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDQyMzczOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MDY0Li4u CmVudHJ5ICJsaWJib29zdF9yZWdleC1nY2M0Mi1tdC0xXzM0XzEuc28uMS4zNC4xIiBhdCBibG9j ayA1IG9mZnNldCA2NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDE0OTk0NjcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgNjQuLi4KZW50cnkgImxpYmd0azIuMC0wLnByZWluc3QiIGF0IGJsb2NrIDE1IG9mZnNldCAx MzYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNDIzNzQwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEzNi4u LgplbnRyeSAibGliZ3RrMi4wLTAucHJlcm0iIGF0IGJsb2NrIDE1IG9mZnNldCAxNjggaW4gZGly ZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDIzNzQx CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2OC4uLgplbnRyeSAi bGliZ3RrMi4wLTAucG9zdHJtIiBhdCBibG9jayAxNSBvZmZzZXQgMjAwIGluIGRpcmVjdG9yeSBp bm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMzc0MgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMDAuLi4KZW50cnkgImxpYmJvb3N0 X3JlZ2V4LWdjYzQxLW10LTFfMzRfMS5zby4xLjM0LjEiIGF0IGJsb2NrIDUgb2Zmc2V0IDEyMCBp biBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0OTk0 NjgKZW50cnkgImxpYmd0azIuMC0wLmNvbmZmaWxlcyIgYXQgYmxvY2sgMTUgb2Zmc2V0IDIzMiBp biBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0 MjM3NDMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjMyLi4uCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyMC4uLgplbnRyeSAibGli Z3RrMi4wLTAubWQ1c3VtcyIgYXQgYmxvY2sgMTUgb2Zmc2V0IDI2NCBpbiBkaXJlY3RvcnkgaW5v ZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjU4NTcKZW50cnkgImxp YmJvb3N0X3JlZ2V4LWdjYzQxLTFfMzRfMS5zby4xLjM0LjEiIGF0IGJsb2NrIDUgb2Zmc2V0IDE3 NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0 OTk0NjkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTc2Li4uCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI2NC4uLgplbnRyeSAibGli Ym9vc3Rfc2lnbmFscy1nY2M0Mi0xXzM0XzEuc28uMS4zNC4xIiBhdCBibG9jayA1IG9mZnNldCAy MjQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx NDk5NDc0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIyNC4uLgpl bnRyeSAibGliZGJ1cy1nbGliLTEtMi5zaGxpYnMiIGF0IGJsb2NrIDE1IG9mZnNldCA5ODQgaW4g ZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3 NjI1OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5ODQuLi4KZW50 cnkgImxpYmJvb3N0X3NpZ25hbHMtZ2NjNDItbXQtMV8zNF8xLnNvLjEuMzQuMSIgYXQgYmxvY2sg NSBvZmZzZXQgMjgwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTQ5OTQ3NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAyODAuLi4KZW50cnkgImxpYmJvb3N0X3NpZ25hbHMtZ2NjNDEtbXQtMV8zNF8xLnNvLjEuMzQu MSIgYXQgYmxvY2sgNSBvZmZzZXQgMzM2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTQ3NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzMzYuLi4KZW50cnkgImRlc2t0b3AtZmlsZS11dGlscy5wb3N0aW5zdCIg YXQgYmxvY2sgMTUgb2Zmc2V0IDE0NDAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgOTA1MzI0CmVudHJ5ICJsaWJib29zdF9zaWduYWxzLWdj YzQxLTFfMzRfMS5zby4xLjM0LjEiIGF0IGJsb2NrIDUgb2Zmc2V0IDM5MiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0OTk0NzcKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzkyLi4uCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE0NDAuLi4KZW50cnkgImxpYlF0RGVzaWduZXIuc28u NC40LjMiIGF0IGJsb2NrIDUgb2Zmc2V0IDQ0OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1OTkwMjMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgNDQ4Li4uCmVudHJ5ICJsaWJRdERlc2lnbmVyQ29tcG9uZW50cy5z by40LjQuMyIgYXQgYmxvY2sgNSBvZmZzZXQgNDg4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU5OTAyNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCA0ODguLi4KZW50cnkgImxpYlF0RGVzaWduZXJDb21wb25lbnRz LnNvLjQiIGF0IGJsb2NrIDUgb2Zmc2V0IDUzNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1OTkwMzAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgNTM2Li4uCmVudHJ5ICJkZXNrdG9wLWZpbGUtdXRpbHMuY29uZmZp bGVzIiBhdCBibG9jayAxNSBvZmZzZXQgMTQ4MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA5MDUzMjUKZW50cnkgImxpYlF0RGVzaWduZXJD b21wb25lbnRzLnNvLjQuNCIgYXQgYmxvY2sgNSBvZmZzZXQgNTc2IGluIGRpcmVjdG9yeSBpbm9k ZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU5OTAzMQoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1NzYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQ4MC4uLgplbnRyeSAibGliUXROZXR3b3JrLnNvLjQiIGF0 IGJsb2NrIDUgb2Zmc2V0IDYyNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE1OTkwMzUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgNjI0Li4uCmVudHJ5ICJsaWJRdE5ldHdvcmsuc28uNC40IiBhdCBibG9jayA1IG9m ZnNldCA2NTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxNTk5MDM2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDY1 Ni4uLgplbnRyeSAibGliUXRTcWwuc28uNC40LjMiIGF0IGJsb2NrIDUgb2Zmc2V0IDY4OCBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1OTkwMzcK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjg4Li4uCmVudHJ5ICJk ZXNrdG9wLWZpbGUtdXRpbHMubWQ1c3VtcyIgYXQgYmxvY2sgMTUgb2Zmc2V0IDE1MjAgaW4gZGly ZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgOTA1MzI2 CmVudHJ5ICJsaWJRdFNxbC5zby40LjQiIGF0IGJsb2NrIDUgb2Zmc2V0IDcyMCBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1OTkwNDMKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNzIwLi4uCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE1MjAuLi4KZW50cnkgImxpYmMuc28iIGF0IGJs b2NrIDUgb2Zmc2V0IDc1MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDQ0ODA5MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA3NTIuLi4KZW50cnkgImxpYlF0M1N1cHBvcnQuc28uNC40IiBhdCBibG9jayA1IG9mZnNl dCA3OTIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxNTk5MDQ3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDc5Mi4u LgplbnRyeSAibGlicHRocmVhZC5zbyIgYXQgYmxvY2sgNSBvZmZzZXQgODI0IGluIGRpcmVjdG9y eSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDQ4MDkxCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDgyNC4uLgplbnRyeSAibGliUXQzU3Vw cG9ydC5zby40IiBhdCBibG9jayA1IG9mZnNldCA4NjQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTk5MDQ4CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDg2NC4uLgplbnRyeSAibGlieGZjZTR1dGlsNC5zaGxpYnMi IGF0IGJsb2NrIDE1IG9mZnNldCAxNTYwIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYyNjcKZW50cnkgImxpYnV0aWwuc28iIGF0IGJs b2NrIDUgb2Zmc2V0IDg5NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDQ0ODIzNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA4OTYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTU2 MC4uLgplbnRyeSAibGlicnVieTEuOC5zby4xLjguNyIgYXQgYmxvY2sgNSBvZmZzZXQgOTM2IGlu IGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTczODI1 OQplbnRyeSAibGlieGZjZTR1dGlsNC5wb3N0cm0iIGF0IGJsb2NrIDE1IG9mZnNldCAxNzg0IGlu IGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEy NzYyNjkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTc4NC4uLgoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5MzYuLi4KZW50cnkgImxp YnhmY2U0dXRpbDQubWQ1c3VtcyIgYXQgYmxvY2sgMTUgb2Zmc2V0IDE5NzYgaW4gZGlyZWN0b3J5 IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjI3MQplbnRy eSAibGlidGhyZWFkX2RiLnNvIiBhdCBibG9jayA1IG9mZnNldCA5NjggaW4gZGlyZWN0b3J5IGlu b2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0NDgyMzcKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgOTY4Li4uCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE5NzYuLi4KZW50cnkgImxpYnJ1YnkxLjguc28uMS44IiBh dCBibG9jayA1IG9mZnNldCAxMDA4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTczODI2OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAxMDA4Li4uCmVudHJ5ICJsaWJydC5zbyIgYXQgYmxvY2sgNSBvZmZzZXQgMTA0 MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ0 ODIzOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMDQwLi4uCmVu dHJ5ICJsaWJleHNsdC5zby4wLjguMTMiIGF0IGJsb2NrIDUgb2Zmc2V0IDEwODAgaW4gZGlyZWN0 b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNzM4MjcwCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwODAuLi4KZW50cnkgImxpYnJl c29sdi5zbyIgYXQgYmxvY2sgNSBvZmZzZXQgMTExMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ0ODIzOQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAxMTEyLi4uCmVudHJ5ICJsaWJ4c2x0LnNvLjEuMS4yNCIgYXQg YmxvY2sgNSBvZmZzZXQgMTE1MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE3MzgyNzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMTE1Mi4uLgplbnRyeSAibGliZGJ1cy1nbGliLTEtMi5wb3N0cm0iIGF0IGJsb2Nr IDE1IG9mZnNldCAyMjk2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDEyNzYyNTgKZW50cnkgImxpYmdldHRleHRzcmMtMC4xNy5zbyIgYXQg YmxvY2sgNSBvZmZzZXQgMTE4NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDExOTUwOTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMTE4NC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAyMjk2Li4uCmVudHJ5ICJ0ZXhsaXZlLWNvbW1vbi5wcmVpbnN0IiBhdCBibG9jayAxNSBvZmZz ZXQgMjM2OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxMjc2MTY3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDIzNjguLi4KZW50cnkgImxpYnhzbHQuc28uMSIgYXQgYmxvY2sgNSBvZmZzZXQgMTIxNiBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3MzgyODMK ZW50cnkgInRleGxpdmUtY29tbW9uLnBvc3RybSIgYXQgYmxvY2sgMTUgb2Zmc2V0IDI0MDggaW4g ZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3 NjE2OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNDA4Li4uCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyMTYuLi4KZW50cnkgInRl eGxpdmUtY29tbW9uLnBvc3RpbnN0IiBhdCBibG9jayAxNSBvZmZzZXQgMjQ0MCBpbiBkaXJlY3Rv cnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2MTcwCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI0NDAuLi4KZW50cnkgInRl eGxpdmUtY29tbW9uLm1kNXN1bXMiIGF0IGJsb2NrIDE1IG9mZnNldCAyNDgwIGluIGRpcmVjdG9y eSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYxNzEKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQ4MC4uLgplbnRyeSAibGli bnNzX25pc3BsdXMuc28iIGF0IGJsb2NrIDUgb2Zmc2V0IDEyNDAgaW4gZGlyZWN0b3J5IGlub2Rl IDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0NDgyNDAKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTI0MC4uLgplbnRyeSAibGliZXhzbHQuc28uMCIg YXQgYmxvY2sgNSBvZmZzZXQgMTI4MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDE3MzgyODQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTI4MC4uLgplbnRyeSAibGliZGJ1cy1nbGliLTEtMi5wb3N0aW5zdCIgYXQg YmxvY2sgMTUgb2Zmc2V0IDI1MjAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjI2MAplbnRyeSAiY3J0MS5vIiBhdCBibG9jayA1IG9m ZnNldCAxMzA0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgNDQ4MDg0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEz MDQuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjUyMC4uLgpl bnRyeSAibGlibmN1cnNlcy5hIiBhdCBibG9jayA1IG9mZnNldCAxMzI4IGluIGRpcmVjdG9yeSBp bm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE5NTQ0MAoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzI4Li4uCmVudHJ5ICJsaWJzY3JvbGxr ZWVwZXIuc28uMC4wLjAiIGF0IGJsb2NrIDUgb2Zmc2V0IDEzNTIgaW4gZGlyZWN0b3J5IGlub2Rl IDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNzM4Mjg1CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEzNTIuLi4KZW50cnkgImxpYmRidXMtZ2xpYi0x LTIubWQ1c3VtcyIgYXQgYmxvY2sgMTUgb2Zmc2V0IDMzNzYgaW4gZGlyZWN0b3J5IGlub2RlIDQy OTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjI2MQoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMzc2Li4uCmVudHJ5ICJsaWJhdWRpb2ZpbGUw LnNobGlicyIgYXQgYmxvY2sgMTUgb2Zmc2V0IDM0NDggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcx NjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjIxNgoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNDQ4Li4uCmVudHJ5ICJsaWJuc3NfbmlzLnNvIiBh dCBibG9jayA1IG9mZnNldCAxMzkyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgNDQ4MjQxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDEzOTIuLi4KZW50cnkgImxpYnNjcm9sbGtlZXBlci5zby4wIiBhdCBibG9jayA1 IG9mZnNldCAxNDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTczODI5NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAxNDMyLi4uCmVudHJ5ICJsaWJhdWRpb2ZpbGUwLnBvc3RpbnN0IiBhdCBibG9jayAxNSBvZmZz ZXQgMzQ4MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxMjc2MjE3CmVudHJ5ICJsaWJuc3NfaGVzaW9kLnNvIiBhdCBibG9jayA1IG9mZnNl dCAxNDY0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNDQ4MjQyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE0NjQu Li4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzQ4MC4uLgplbnRy eSAibGlic2V4eS5zby4yLjAuNCIgYXQgYmxvY2sgNSBvZmZzZXQgMTUwNCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3MzgzMDEKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTUwNC4uLgplbnRyeSAibGliZ2V0dGV4 dHNyYy5sYSIgYXQgYmxvY2sgNSBvZmZzZXQgMTUzNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExOTUwOTQKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMTUzNi4uLgplbnRyeSAibGlic2V4eS5zby4yIiBhdCBibG9j ayA1IG9mZnNldCAxNTY4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTczODMwMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAxNTY4Li4uCmVudHJ5ICJsaWJhdWRpb2ZpbGUwLnBvc3RybSIgYXQgYmxvY2sgMTUgb2Zm c2V0IDM1MjAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTI3NjIxOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzNTIwLi4uCmVudHJ5ICJsaWJhdWRpb2ZpbGUwLm1kNXN1bXMiIGF0IGJsb2NrIDE1IG9mZnNl dCAzNTUyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDEyNzYyMTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzU1Mi4uLgplbnRyeSAiY3J0aS5vIiBhdCBibG9jayA1IG9mZnNldCAxNTkyIGluIGRpcmVjdG9y eSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDQ4MDg1CmVudHJ5ICJs aWJkYnVzLWdsaWItMS0yLnN5bWJvbHMiIGF0IGJsb2NrIDE1IG9mZnNldCAzNTg0IGluIGRpcmVj dG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYyNjIK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzU4NC4uLgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTkyLi4uCmVudHJ5ICJsaWJ0aWMu YSIgYXQgYmxvY2sgNSBvZmZzZXQgMTYxNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExOTU0NDEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMTYxNi4uLgplbnRyeSAibGlidGh1bmFyLXZmcy0xLnNvLjIuMy4xIiBh dCBibG9jayA1IG9mZnNldCAxNjQwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTczODQxMAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAxNjQwLi4uCmVudHJ5ICJsaWJ4ZmNlNHV0aWw0LnBvc3RpbnN0IiBhdCBibG9j ayAxNiBvZmZzZXQgMTYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTI3NjI2OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAxNi4uLgplbnRyeSAiY3J0bi5vIiBhdCBibG9jayA1IG9mZnNldCAxNjgwIGluIGRp cmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDQ4MDg2Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2ODAuLi4KZW50cnkgInhm Y2U0LXNlc3Npb24ucHJlcm0iIGF0IGJsb2NrIDE2IG9mZnNldCA5NTIgaW4gZGlyZWN0b3J5IGlu b2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjczMAplbnRyeSAi bGlibWVudS5zbyIgYXQgYmxvY2sgNSBvZmZzZXQgMTcwNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExOTU1NTEKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTcwNC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCA5NTIuLi4KZW50cnkgImxpYnRodW5hcngtMS5zby4yLjMuMSIgYXQg YmxvY2sgNSBvZmZzZXQgMTcyOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE3Mzg0MTEKZW50cnkgInhmY2U0LXNlc3Npb24ubWQ1c3VtcyIgYXQg YmxvY2sgMTYgb2Zmc2V0IDExNjAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjczNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAxMTYwLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDE3MjguLi4KZW50cnkgImxpYmdldHRleHRwby5zby4wLjQuMCIgYXQgYmxvY2sgNSBv ZmZzZXQgMTc2MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDExOTUwOTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MTc2MC4uLgplbnRyeSAibGliaWRsMC5zaGxpYnMiIGF0IGJsb2NrIDE2IG9mZnNldCAxODMyIGlu IGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEy NzY0NTcKZW50cnkgImxpYm5zc19maWxlcy5zbyIgYXQgYmxvY2sgNSBvZmZzZXQgMTgxNiBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ0ODI0MwoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODE2Li4uCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4MzIuLi4KZW50cnkgImxpYnRodW5h cngtMS5zby4yIiBhdCBibG9jayA1IG9mZnNldCAxODU2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTczODQxMgoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODU2Li4uCmVudHJ5ICJsaWJuc3NfZG5zLnNvIiBhdCBi bG9jayA1IG9mZnNldCAxODg4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgNDQ4MjQ0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDE4ODguLi4KZW50cnkgImxpYmlkbDAucG9zdGluc3QiIGF0IGJsb2NrIDE2IG9mZnNl dCAxODY0IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDEyNzY0NTgKZW50cnkgImxpYnRodW5hci12ZnMtMS5zby4yIiBhdCBibG9jayA1IG9m ZnNldCAxOTI4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTczODQxMwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAx OTI4Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4NjQuLi4K ZW50cnkgImxpYmlkbDAucG9zdHJtIiBhdCBibG9jayAxNiBvZmZzZXQgMTg5NiBpbiBkaXJlY3Rv cnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2NDU5Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4OTYuLi4KZW50cnkgImxp Ym5zc19jb21wYXQuc28iIGF0IGJsb2NrIDUgb2Zmc2V0IDE5NjAgaW4gZGlyZWN0b3J5IGlub2Rl IDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0NDgyNDUKZW50cnkgImxpYmlkbDAu bWQ1c3VtcyIgYXQgYmxvY2sgMTYgb2Zmc2V0IDE5MjggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcx NjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjQ2MQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxOTI4Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDE5NjAuLi4KZW50cnkgImxpYlhSZXMuc28uMS4wLjAiIGF0IGJs b2NrIDUgb2Zmc2V0IDIwMDAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxNzM4NTA1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDIwMDAuLi4KZW50cnkgImxpYmdhaWwxOC5tZDVzdW1zIiBhdCBibG9jayAxNiBvZmZz ZXQgMzI4OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxMjc2NTA1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDMyODguLi4KZW50cnkgImxpYmdldHRleHRwby5sYSIgYXQgYmxvY2sgNSBvZmZzZXQgMjAzMiBp biBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExOTUw OTYKZW50cnkgImxpYmdhaWwxOC5zaGxpYnMiIGF0IGJsb2NrIDE2IG9mZnNldCAzMzIwIGluIGRp cmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY1 MDcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzMyMC4uLgoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMDMyLi4uCmVudHJ5ICJsaWJn YWlsMTgucG9zdHJtIiBhdCBibG9jayAxNiBvZmZzZXQgMzM1MiBpbiBkaXJlY3RvcnkgaW5vZGUg NDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2NTA4CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMzNTIuLi4KZW50cnkgImxpYlhSZXMuc28u MSIgYXQgYmxvY2sgNSBvZmZzZXQgMjA2NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3Mzg1MDYKZW50cnkgImxpYmdhaWwxOC5wb3N0aW5zdCIg YXQgYmxvY2sgMTYgb2Zmc2V0IDMzODQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjUwOQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAzMzg0Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDIwNjQuLi4KZW50cnkgInhmY2U0LXNlc3Npb24ucG9zdGluc3QiIGF0IGJsb2Nr IDE2IG9mZnNldCAzNDE2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDEyNzY3MjkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMzQxNi4uLgplbnRyeSAibGlibnNsLnNvIiBhdCBibG9jayA1IG9mZnNldCAyMDg4 IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDQ4 MjQ2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwODguLi4KZW50 cnkgInhmY2U0LXNlc3Npb24uY29uZmZpbGVzIiBhdCBibG9jayAxNiBvZmZzZXQgMzY2NCBpbiBk aXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2 NzMxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM2NjQuLi4KZW50 cnkgInhmY2U0LXNlc3Npb24uc2hsaWJzIiBhdCBibG9jayAxNiBvZmZzZXQgMzkwNCBpbiBkaXJl Y3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2NzMy CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM5MDQuLi4KZW50cnkg InhmY2U0LXRlcm1pbmFsLnBvc3RpbnN0IiBhdCBibG9jayAxNyBvZmZzZXQgMzc2IGluIGRpcmVj dG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY4OTUK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzc2Li4uCmVudHJ5ICJ4 ZmNlNC10ZXJtaW5hbC5wcmVybSIgYXQgYmxvY2sgMTcgb2Zmc2V0IDQxNiBpbiBkaXJlY3Rvcnkg aW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2ODk2CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQxNi4uLgplbnRyeSAieGZjZTQt dGVybWluYWwucG9zdHJtIiBhdCBibG9jayAxNyBvZmZzZXQgNDQ4IGluIGRpcmVjdG9yeSBpbm9k ZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY4OTcKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDQ4Li4uCmVudHJ5ICJ4ZmNlNC10ZXJt aW5hbC5tZDVzdW1zIiBhdCBibG9jayAxNyBvZmZzZXQgNDgwIGluIGRpcmVjdG9yeSBpbm9kZSA0 Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY4OTkKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDgwLi4uCmVudHJ5ICJsaWJnbm9tZTItMC5w b3N0cm0iIGF0IGJsb2NrIDE3IG9mZnNldCA4NzIgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM1NTA2NQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCA4NzIuLi4KZW50cnkgInhiYXNlLWNsaWVudHMubWQ1c3Vt cyIgYXQgYmxvY2sgMTcgb2Zmc2V0IDEyNDggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NzAxNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAxMjQ4Li4uCmVudHJ5ICJsaWJnbm9tZTItMC5wb3N0aW5zdCIg YXQgYmxvY2sgMTcgb2Zmc2V0IDEyODAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM1NTA0MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAxMjgwLi4uCmVudHJ5ICJzdWRvLnBvc3RpbnN0IiBhdCBibG9jayAx NyBvZmZzZXQgMTU4NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxMjc3MDMyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDE1ODQuLi4KZW50cnkgInN1ZG8ubWQ1c3VtcyIgYXQgYmxvY2sgMTcgb2Zmc2V0IDE2 MDggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTI3NzAzMwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNjA4 Li4uCmVudHJ5ICJzdWRvLmNvbmZmaWxlcyIgYXQgYmxvY2sgMTcgb2Zmc2V0IDE2MzIgaW4gZGly ZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NzAz NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNjMyLi4uCmVudHJ5 ICJzdWRvLnByZXJtIiBhdCBibG9jayAxNyBvZmZzZXQgMTY2NCBpbiBkaXJlY3RvcnkgaW5vZGUg NDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc3MDM1CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2NjQuLi4KZW50cnkgInN1ZG8ucG9zdHJt IiBhdCBibG9jayAxNyBvZmZzZXQgMTY4OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc3MDM2CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDE2ODguLi4KZW50cnkgImdub21lLWtleXJpbmcuc2hsaWJzIiBh dCBibG9jayAxNyBvZmZzZXQgMTc4NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc3MDM3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDE3ODQuLi4KZW50cnkgImdub21lLWtleXJpbmcucG9zdGluc3QiIGF0 IGJsb2NrIDE3IG9mZnNldCAxODE2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzcwMzkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMTgxNi4uLgplbnRyeSAiZ25vbWUta2V5cmluZy5wcmVybSIgYXQgYmxv Y2sgMTcgb2Zmc2V0IDE4NTYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTI3NzA0MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAxODU2Li4uCmVudHJ5ICJnbm9tZS1rZXlyaW5nLnBvc3RybSIgYXQgYmxvY2sg MTcgb2Zmc2V0IDE4ODggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTI3NzA0MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAxODg4Li4uCmVudHJ5ICJnbm9tZS1rZXlyaW5nLm1kNXN1bXMiIGF0IGJsb2NrIDE3 IG9mZnNldCAxOTIwIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDEyNzcwNDMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMTkyMC4uLgplbnRyeSAibGliZ25vbWUyLTAuc2hsaWJzIiBhdCBibG9jayAxNyBvZmZz ZXQgMjI4OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxMzU1MDY2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDIyODguLi4KZW50cnkgImdkbS10aGVtZXMubWQ1c3VtcyIgYXQgYmxvY2sgMTcgb2Zmc2V0IDIz NTIgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTI4Nzk0NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMzUy Li4uCmVudHJ5ICJnaG9zdHNjcmlwdC14Lm1kNXN1bXMiIGF0IGJsb2NrIDE3IG9mZnNldCAyNDU2 IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDEzNTQ3NjYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQ1Ni4u LgplbnRyeSAiZ25vbWUtbWltZS1kYXRhLmNvbmZmaWxlcyIgYXQgYmxvY2sgMTcgb2Zmc2V0IDI1 NjAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTM1NDc2NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNTYw Li4uCmVudHJ5ICJnbm9tZS1taW1lLWRhdGEubWQ1c3VtcyIgYXQgYmxvY2sgMTcgb2Zmc2V0IDI2 MDAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTM1NDc2NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjAw Li4uCmVudHJ5ICJsaWJnbm9tZTItMC5tZDVzdW1zIiBhdCBibG9jayAxNyBvZmZzZXQgMjY0MCBp biBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx MzU1MDY4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI2NDAuLi4K ZW50cnkgImxpYmdub21ldmZzMi0wLnBvc3RybSIgYXQgYmxvY2sgMTcgb2Zmc2V0IDM0ODggaW4g ZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM1 NTAzMwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNDg4Li4uCmVu dHJ5ICJsaWJib25vYm91aTItY29tbW9uLm1kNXN1bXMiIGF0IGJsb2NrIDE3IG9mZnNldCAzNTY4 IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDEzNTQ4OTYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzU2OC4u LgplbnRyeSAibGliYm9ub2JvdWkyLWNvbW1vbi5wb3N0aW5zdCIgYXQgYmxvY2sgMTcgb2Zmc2V0 IDM2MDggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTM1NDg5OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz NjA4Li4uCmVudHJ5ICJsaWJnbm9tZXZmczItMC5wb3N0aW5zdCIgYXQgYmxvY2sgMTcgb2Zmc2V0 IDM5MDQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTM1NTAzMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz OTA0Li4uCmVudHJ5ICJsaWJnbm9tZXZmczItMC5zaGxpYnMiIGF0IGJsb2NrIDE3IG9mZnNldCA0 MDU2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDEzNTUwMzQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDA1 Ni4uLgplbnRyeSAibGliZ25vbWV2ZnMyLTAubWQ1c3VtcyIgYXQgYmxvY2sgMTggb2Zmc2V0IDE2 IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDEzNTUwMzYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTYuLi4K ZW50cnkgImxpYmdub21lMi1jb21tb24ucG9zdHJtIiBhdCBibG9jayAxOCBvZmZzZXQgNTYgaW4g ZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM1 NTAzNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1Ni4uLgplbnRy eSAibGliZ25vbWUyLWNvbW1vbi5tZDVzdW1zIiBhdCBibG9jayAxOCBvZmZzZXQgOTYgaW4gZGly ZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM1NTAz OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5Ni4uLgplbnRyeSAi bGliZ25vbWUyLWNvbW1vbi5wcmVybSIgYXQgYmxvY2sgMTggb2Zmc2V0IDEzNiBpbiBkaXJlY3Rv cnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzU1MDQxCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEzNi4uLgplbnRyeSAibGli Z25vbWUyLWNvbW1vbi5wb3N0aW5zdCIgYXQgYmxvY2sgMTggb2Zmc2V0IDE3NiBpbiBkaXJlY3Rv cnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzU1MDQyCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3Ni4uLgplbnRyeSAibGli Z25vbWUyLWNvbW1vbi5jb25mZmlsZXMiIGF0IGJsb2NrIDE4IG9mZnNldCAyMTYgaW4gZGlyZWN0 b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM1NTA0MwoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMTYuLi4KZW50cnkgImxp Ymdub21lLW1lbnUyLnBvc3RpbnN0IiBhdCBibG9jayAxOCBvZmZzZXQgNDQwIGluIGRpcmVjdG9y eSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzNTUwNzMKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDQwLi4uCmVudHJ5ICJsaWJn bm9tZS1tZW51Mi5wb3N0cm0iIGF0IGJsb2NrIDE4IG9mZnNldCA0ODAgaW4gZGlyZWN0b3J5IGlu b2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM1NTA3NAoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0ODAuLi4KZW50cnkgImxpYmdub21l LW1lbnUyLnNobGlicyIgYXQgYmxvY2sgMTggb2Zmc2V0IDUxMiBpbiBkaXJlY3RvcnkgaW5vZGUg NDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzU1MDc1CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDUxMi4uLgplbnRyeSAibGliZ25vbWUtbWVu dTIubWQ1c3VtcyIgYXQgYmxvY2sgMTggb2Zmc2V0IDU0NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5 NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzU1MDc3CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDU0NC4uLgplbnRyeSAibGliamFzcGVyMS5wb3N0 cm0iIGF0IGJsb2NrIDE4IG9mZnNldCA3MDQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4ODk3OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCA3MDQuLi4KZW50cnkgImxpYmdub21ldWktMC5wb3N0aW5zdCIg YXQgYmxvY2sgMTggb2Zmc2V0IDc2OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzU1MTAxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDc2OC4uLgplbnRyeSAibGliZ25vbWV1aS0wLnBvc3RybSIgYXQgYmxv Y2sgMTggb2Zmc2V0IDgwMCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMzU1MTAyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDgwMC4uLgplbnRyeSAibGliZ25vbWV1aS0wLnNobGlicyIgYXQgYmxvY2sgMTgg b2Zmc2V0IDgzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxMzU1MTAzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDgzMi4uLgplbnRyeSAibGliZ25vbWV1aS0wLm1kNXN1bXMiIGF0IGJsb2NrIDE4IG9mZnNl dCA4NjQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTM1NTEwNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4 NjQuLi4KZW50cnkgImxpYnduY2stMS5zby4yMi4zLjgiIGF0IGJsb2NrIDUgb2Zmc2V0IDIxMjgg aW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNzM4 NDk5CmVudHJ5ICJsaWJqYXNwZXIxLm1kNXN1bXMiIGF0IGJsb2NrIDE4IG9mZnNldCA4OTYgaW4g ZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4 ODk4MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4OTYuLi4KCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjEyOC4uLgplbnRyeSAibGli bS5zbyIgYXQgYmxvY2sgNSBvZmZzZXQgMjE2MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ0ODI0NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyMTYwLi4uCmVudHJ5ICJsaWJ3bmNrLTEuc28uMjIiIGF0IGJsb2Nr IDUgb2Zmc2V0IDIyMDAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxNzM4NTA0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDIyMDAuLi4KZW50cnkgImxpYm5zcHI0LTBkLnNobGlicyIgYXQgYmxvY2sgMTggb2Zmc2V0 IDE5MzYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTM4ODgxMwplbnRyeSAibGliZ2V0dGV4dHBvLmEiIGF0IGJsb2NrIDUgb2Zmc2V0IDIy MzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx MTk1MDk3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIyMzIuLi4K CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTkzNi4uLgplbnRyeSAi bW96aWxsYSIgYXQgYmxvY2sgNSBvZmZzZXQgMjI2NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4MDk5NTkKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMjI2NC4uLgplbnRyeSAibGliYXNwcmludGYuc28iIGF0IGJs b2NrIDUgb2Zmc2V0IDIyODggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxMTk1MDk5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDIyODguLi4KZW50cnkgImxpYm5zcHI0LTBkLnN5bWJvbHMiIGF0IGJsb2NrIDE4IG9m ZnNldCAxOTY4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDEzODg4MTQKZW50cnkgImxpYmRsLnNvIiBhdCBibG9jayA1IG9mZnNldCAyMzQ0 IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDQ4 MjQ4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIzNDQuLi4KCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTk2OC4uLgplbnRyeSAiZ2Ny dDEubyIgYXQgYmxvY2sgNSBvZmZzZXQgMjQxNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ0ODA4NwplbnRyeSAibGlibnNwcjQtMGQucG9zdGlu c3QiIGF0IGJsb2NrIDE4IG9mZnNldCAyMDAwIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg4MTUKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMjAwMC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAyNDE2Li4uCmVudHJ5ICJsaWJuc3ByNC0wZC5wb3N0cm0iIGF0IGJsb2Nr IDE4IG9mZnNldCAyMDMyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDEzODg4MTYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMjAzMi4uLgplbnRyeSAibGlicGFuZWwuc28iIGF0IGJsb2NrIDUgb2Zmc2V0IDI0 NDAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx MTk1NTUyCmVudHJ5ICJsaWJuc3ByNC0wZC5tZDVzdW1zIiBhdCBibG9jayAxOCBvZmZzZXQgMjA2 NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxMzg4ODE4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwNjQu Li4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQ0MC4uLgplbnRy eSAibGlibGNtczEucG9zdGluc3QiIGF0IGJsb2NrIDE4IG9mZnNldCAyMzM2IGluIGRpcmVjdG9y eSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg4MjYKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjMzNi4uLgplbnRyeSAiTWNy dDEubyIgYXQgYmxvY2sgNSBvZmZzZXQgMjUwNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ0ODA4OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyNTA0Li4uCmVudHJ5ICJsaWJmb3JtLnNvIiBhdCBibG9jayA1IG9m ZnNldCAyNTI4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTE5NTU1NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAy NTI4Li4uCmVudHJ5ICJsaWJsY21zMS5tZDVzdW1zIiBhdCBibG9jayAxOCBvZmZzZXQgMjM2OCBp biBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx Mzg4ODI4CmVudHJ5ICJsaWJ4ZmNlNHBhbmVsLnNvLjEuMS4yIiBhdCBibG9jayA1IG9mZnNldCAy NTUyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTgwOTk3MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNTUyLi4u CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIzNjguLi4KZW50cnkg ImxpYmNyeXB0LnNvIiBhdCBibG9jayA1IG9mZnNldCAyNTkyIGluIGRpcmVjdG9yeSBpbm9kZSAx NDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDQ4MjQ5CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1OTIuLi4KZW50cnkgImxpYnhmY2U0cGFuZWwuc28u MSIgYXQgYmxvY2sgNSBvZmZzZXQgMjYzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NTA0ODcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMjYzMi4uLgplbnRyeSAibGlibGNtczEucG9zdHJtIiBhdCBibG9jayAx OCBvZmZzZXQgMjQwMCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxMzg4ODI5CmVudHJ5ICJsaWJjaWRuLnNvIiBhdCBibG9jayA1IG9mZnNl dCAyNjY0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNDQ4MjUwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI2NjQu Li4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQwMC4uLgplbnRy eSAibGlidGNsOC40LnNvLjAiIGF0IGJsb2NrIDUgb2Zmc2V0IDI3MDQgaW4gZGlyZWN0b3J5IGlu b2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODUwOTkxCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI3MDQuLi4KZW50cnkgImxpYmdldHRleHRs aWIuc28iIGF0IGJsb2NrIDUgb2Zmc2V0IDI3MzYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTk1MTAwCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDI3MzYuLi4KZW50cnkgImxpYmxjbXMxLnNobGlicyIgYXQgYmxv Y2sgMTggb2Zmc2V0IDI0MzIgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTM4ODgzMAplbnRyeSAidGh1bmFyIiBhdCBibG9jayA1IG9mZnNl dCAyNzY4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTkwNDc3NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNzY4 Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI0MzIuLi4KZW50 cnkgImxpYkJyb2tlbkxvY2FsZS5zbyIgYXQgYmxvY2sgNSBvZmZzZXQgMjc5MiBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ0ODI1MQoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNzkyLi4uCmVudHJ5ICJsaWJuc3Mz LTFkLnNobGlicyIgYXQgYmxvY2sgMTggb2Zmc2V0IDI3NTIgaW4gZGlyZWN0b3J5IGlub2RlIDQy OTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4ODgzNAplbnRyeSAibGlieGZw cmludC5zby4wLjAuMSIgYXQgYmxvY2sgNSBvZmZzZXQgMjgzMiBpbiBkaXJlY3RvcnkgaW5vZGUg MTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NDAxODMKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjgzMi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAyNzUyLi4uCmVudHJ5ICJsaWJuc3MzLTFkLnN5bWJvbHMiIGF0 IGJsb2NrIDE4IG9mZnNldCAyNzg0IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg4MzUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMjc4NC4uLgplbnRyeSAibGliZ2V0dGV4dHNyYy5zbyIgYXQgYmxvY2sg NSBvZmZzZXQgMjg2NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDExOTUxMDEKZW50cnkgImxpYm5zczMtMWQucG9zdGluc3QiIGF0IGJsb2NrIDE4 IG9mZnNldCAyODE2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDEzODg4MzYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMjgxNi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAy ODY0Li4uCmVudHJ5ICJsaWJuc3MzLTFkLnBvc3RybSIgYXQgYmxvY2sgMTggb2Zmc2V0IDI4NDgg aW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTM4ODgzNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyODQ4Li4u CmVudHJ5ICJsaWJuc3MzLTFkLm1kNXN1bXMiIGF0IGJsb2NrIDE4IG9mZnNldCAyODgwIGluIGRp cmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg4 MzkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjg4MC4uLgplbnRy eSAibGlieGZwcmludC5hIiBhdCBibG9jayA1IG9mZnNldCAyODk2IGluIGRpcmVjdG9yeSBpbm9k ZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTk0MDE4NAplbnRyeSAibGliamFz cGVyMS5zaGxpYnMiIGF0IGJsb2NrIDE4IG9mZnNldCAyOTEyIGluIGRpcmVjdG9yeSBpbm9kZSA0 Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg5NzYKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjkxMi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAyODk2Li4uCmVudHJ5ICJsaWJ3bWYwLjItNy5zaGxpYnMi IGF0IGJsb2NrIDE4IG9mZnNldCAzMjAwIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg5ODQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzIwMC4uLgplbnRyeSAiaWNld2Vhc2VsLm1kNXN1bXMiIGF0IGJs b2NrIDE4IG9mZnNldCAzMjY0IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDEzODg4NzgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMzI2NC4uLgplbnRyeSAibGliYW5sLnNvIiBhdCBibG9jayA1IG9mZnNldCAy OTIwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg NDQ4MjUyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI5MjAuLi4K ZW50cnkgImljZXdlYXNlbC5wcmVpbnN0IiBhdCBibG9jayAxOCBvZmZzZXQgMzI5NiBpbiBkaXJl Y3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4ODc5 CmVudHJ5ICJsaWJ4ZnByaW50LnNvLjAiIGF0IGJsb2NrIDUgb2Zmc2V0IDI5NjAgaW4gZGlyZWN0 b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTQwMjExCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI5NjAuLi4KCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzI5Ni4uLgplbnRyeSAiaWNld2Vhc2VsLnBv c3RpbnN0IiBhdCBibG9jayAxOCBvZmZzZXQgMzMyOCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2 MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4ODgxCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMzMjguLi4KZW50cnkgImljZXdlYXNlbC5wcmVybSIg YXQgYmxvY2sgMTggb2Zmc2V0IDMzNjAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4ODg4MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAzMzYwLi4uCmVudHJ5ICJpY2V3ZWFzZWwucG9zdHJtIiBhdCBibG9j ayAxOCBvZmZzZXQgMzM5MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMzg4ODgzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDMzOTIuLi4KZW50cnkgImxpYmdvbXAuc28uMS4wLjAiIGF0IGJsb2NrIDUgb2Zm c2V0IDI5OTIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSA0NDgyNTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjk5 Mi4uLgplbnRyeSAiaWNld2Vhc2VsLmNvbmZmaWxlcyIgYXQgYmxvY2sgMTggb2Zmc2V0IDM0MjQg aW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTM4ODg4NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNDI0Li4u CmVudHJ5ICJsaWJJODEwWHZNQy5zby4xLjAuMCIgYXQgYmxvY2sgNSBvZmZzZXQgMzAzMiBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NTA2NjQK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzAzMi4uLgplbnRyeSAi bGliZGp2dWxpYnJlLXRleHQubWQ1c3VtcyIgYXQgYmxvY2sgMTggb2Zmc2V0IDM1MzYgaW4gZGly ZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4ODkz MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNTM2Li4uCmVudHJ5 ICJsaWJqYXNwZXIxLnBvc3RpbnN0IiBhdCBibG9jayAxOCBvZmZzZXQgMzU3NiBpbiBkaXJlY3Rv cnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4OTc3Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM1NzYuLi4KZW50cnkgIlNj cnQxLm8iIGF0IGJsb2NrIDUgb2Zmc2V0IDMwNjQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0NDgwODkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzA2NC4uLgplbnRyeSAibGliY3Vyc2VzLnNvIiBhdCBibG9jayA1 IG9mZnNldCAzMDg4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTE5NTU1NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzMDg4Li4uCmVudHJ5ICJsaWJ3bWYwLjItNy5wb3N0aW5zdCIgYXQgYmxvY2sgMTkgb2Zmc2V0 IDE2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDEzODg5ODUKZW50cnkgImxpYkludGVsWHZNQy5zby4xLjAuMCIgYXQgYmxvY2sgNSBvZmZz ZXQgMzExMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE5NTA2NjUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzEx Mi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNi4uLgplbnRy eSAibGlid21mMC4yLTcucHJlcm0iIGF0IGJsb2NrIDE5IG9mZnNldCA0OCBpbiBkaXJlY3Rvcnkg aW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4OTg2CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ4Li4uCmVudHJ5ICJsaWJnb21w LnNvLjEiIGF0IGJsb2NrIDUgb2Zmc2V0IDMxNDQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0NDgyNTQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzE0NC4uLgplbnRyeSAibGlid21mMC4yLTcucG9zdHJtIiBhdCBi bG9jayAxOSBvZmZzZXQgODAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTM4ODk4NwplbnRyeSAibGliSTgxMFh2TUMuc28iIGF0IGJsb2Nr IDUgb2Zmc2V0IDMxODQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxOTUwNjY3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDMxODQuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODAu Li4KZW50cnkgImxpYndtZjAuMi03Lm1kNXN1bXMiIGF0IGJsb2NrIDE5IG9mZnNldCAxMTIgaW4g ZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4 ODk4OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMTIuLi4KZW50 cnkgImxpYmFzcHJpbnRmLmxhIiBhdCBibG9jayA1IG9mZnNldCAzMjE2IGluIGRpcmVjdG9yeSBp bm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE5NTA4OAplbnRyeSAiaW1h Z2VtYWdpY2sucG9zdHJtIiBhdCBibG9jayAxOSBvZmZzZXQgNDAwIGluIGRpcmVjdG9yeSBpbm9k ZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODkwMzMKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDAwLi4uCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyMTYuLi4KZW50cnkgImltYWdlbWFnaWNrLnByZXJt IiBhdCBibG9jayAxOSBvZmZzZXQgNDMyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODkwMzUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgNDMyLi4uCmVudHJ5ICJsaWJJODEwWHZNQy5zby4xIiBhdCBibG9j ayA1IG9mZnNldCAzMjU2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTk1MDY2OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAzMjU2Li4uCmVudHJ5ICJsaWJhc3ByaW50Zi5hIiBhdCBibG9jayA1IG9mZnNldCAzMjg4 IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE5 NTA4OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMjg4Li4uCmVu dHJ5ICJpbWFnZW1hZ2ljay5tZDVzdW1zIiBhdCBibG9jayAxOSBvZmZzZXQgNDY0IGluIGRpcmVj dG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODkwMzYK ZW50cnkgImxpYkludGVsWHZNQy5zbyIgYXQgYmxvY2sgNSBvZmZzZXQgMzMyOCBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NTA2NjkKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzMyOC4uLgoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0NjQuLi4KZW50cnkgInByZWxvYWRhYmxlX2xp YmludGwuc28iIGF0IGJsb2NrIDUgb2Zmc2V0IDMzNjAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTk1MDkwCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMzNjAuLi4KZW50cnkgImxpYkludGVsWHZNQy5zby4xIiBh dCBibG9jayA1IG9mZnNldCAzNDAwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTk1MDY3MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzNDAwLi4uCmVudHJ5ICJpbWFnZW1hZ2ljay5wb3N0aW5zdCIgYXQgYmxvY2sg MTkgb2Zmc2V0IDQ5NiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxMzg5MDM3CmVudHJ5ICJsaWJnZXR0ZXh0cG8uc28uMCIgYXQgYmxvY2sg NSBvZmZzZXQgMzQzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDExOTUxMDIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMzQzMi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0OTYu Li4KZW50cnkgInhzY3JlZW5zYXZlciIgYXQgYmxvY2sgNSBvZmZzZXQgMzQ2NCBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5ODMzNjMKZW50cnkg InRleGxpdmUtYmFzZS5wcmVpbnN0IiBhdCBibG9jayAxOSBvZmZzZXQgODg4IGluIGRpcmVjdG9y eSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0NjQxOTcKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODg4Li4uCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM0NjQuLi4KZW50cnkgImxpYmdldHRleHRs aWItMC4xNy5zbyIgYXQgYmxvY2sgNSBvZmZzZXQgMzQ4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExOTUwOTEKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzQ4OC4uLgplbnRyeSAibGliZXNtdHAuc28uNS4xLjUi IGF0IGJsb2NrIDUgb2Zmc2V0IDM1MjggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxNjM3NjIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMzUyOC4uLgplbnRyeSAidGV4bGl2ZS1iYXNlLnBvc3RybSIgYXQgYmxvY2sg MTkgb2Zmc2V0IDkyMCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxNDY0MTk4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDkyMC4uLgplbnRyeSAidGV4bGl2ZS1iYXNlLmNvbmZmaWxlcyIgYXQgYmxvY2sgMTkg b2Zmc2V0IDk1MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxNDY0MjAwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDk1Mi4uLgplbnRyeSAibGliZ2V0dGV4dGxpYi5sYSIgYXQgYmxvY2sgNSBvZmZzZXQgMzU2 MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEx OTUwOTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzU2MC4uLgpl bnRyeSAidGV4bGl2ZS1iYXNlLnBvc3RpbnN0IiBhdCBibG9jayAxOSBvZmZzZXQgOTkyIGluIGRp cmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0NjQy MDEKZW50cnkgImxpYmVzbXRwLnNvLjUiIGF0IGJsb2NrIDUgb2Zmc2V0IDM2MDAgaW4gZGlyZWN0 b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM4MjYKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzYwMC4uLgoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5OTIuLi4KZW50cnkgInRleGxpdmUtYmFzZS5t ZDVzdW1zIiBhdCBibG9jayAxOSBvZmZzZXQgMTAyNCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2 MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDY0MjAyCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwMjQuLi4KZW50cnkgImxpYmdldHRleHRwby5zbyIg YXQgYmxvY2sgNSBvZmZzZXQgMzYyNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDExOTUxMDMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMzYyNC4uLgplbnRyeSAic2VuZG1haWwiIGF0IGJsb2NrIDUgb2Zmc2V0IDM2 NTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx NjM4MjcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzY1Ni4uLgpl bnRyeSAidGV4bGl2ZS1sYXRleC1iYXNlLnByZWluc3QiIGF0IGJsb2NrIDE5IG9mZnNldCAxMTM2 IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDE0NjQ3ODYKZW50cnkgImxpYmllZWUuYSIgYXQgYmxvY2sgNSBvZmZzZXQgMzY4MCBpbiBkaXJl Y3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ0ODA3NAoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNjgwLi4uCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExMzYuLi4KZW50cnkgInRleGxpdmUtbGF0 ZXgtYmFzZS5wb3N0cm0iIGF0IGJsb2NrIDE5IG9mZnNldCAxMTc2IGluIGRpcmVjdG9yeSBpbm9k ZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0NjQ3ODcKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTE3Ni4uLgplbnRyeSAibGlibS5hIiBh dCBibG9jayA1IG9mZnNldCAzNzA0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgNDQ4MDc1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDM3MDQuLi4KZW50cnkgInRleGxpdmUtbGF0ZXgtYmFzZS5jb25mZmlsZXMiIGF0 IGJsb2NrIDE5IG9mZnNldCAxMjE2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0NjQ3ODkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMTIxNi4uLgplbnRyeSAibGlibWNoZWNrLmEiIGF0IGJsb2NrIDUgb2Zm c2V0IDM3MjggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSA0NDgwNzYKZW50cnkgInRleGxpdmUtbGF0ZXgtYmFzZS5wb3N0aW5zdCIgYXQgYmxvY2sg MTkgb2Zmc2V0IDEyNTYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTQ2NDc5MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAxMjU2Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDM3MjguLi4KZW50cnkgImxpYm5zbC5hIiBhdCBibG9jayA1IG9mZnNldCAzNzUyIGluIGRpcmVj dG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDQ4MDc3CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM3NTIuLi4KZW50cnkgImxpYnB0 aHJlYWQuYSIgYXQgYmxvY2sgNSBvZmZzZXQgMzc3NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ0ODA3OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAzNzc2Li4uCmVudHJ5ICJ0ZXhsaXZlLWxhdGV4LWJhc2UubWQ1 c3VtcyIgYXQgYmxvY2sgMTkgb2Zmc2V0IDEyOTYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ2NDc5MQplbnRyeSAibGlibWVudS5hIiBh dCBibG9jayA1IG9mZnNldCAzODAwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTE5NTQzOQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzODAwLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDEyOTYuLi4KZW50cnkgImxpYnJlc29sdi5hIiBhdCBibG9jayA1IG9mZnNldCAzODMyIGlu IGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDQ4MDgw CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM4MzIuLi4KZW50cnkg ImxpYmZvcm0uYSIgYXQgYmxvY2sgNSBvZmZzZXQgMzg1NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExOTUzMDYKZW50cnkgImxlc3N0aWYyLnBv c3RpbnN0IiBhdCBibG9jayAxOSBvZmZzZXQgMjQ2NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2 MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDk5MzA5CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI0NjQuLi4KZW50cnkgImxlc3N0aWYyLnNobGlicyIg YXQgYmxvY2sgMTkgb2Zmc2V0IDI0OTYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTMxMAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyNDk2Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDM4NTYuLi4KZW50cnkgImxlc3N0aWYyLm1kNXN1bXMiIGF0IGJsb2NrIDE5IG9m ZnNldCAyNTI4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDE0OTkzMTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMjUyOC4uLgplbnRyeSAibGlicnBjc3ZjLmEiIGF0IGJsb2NrIDUgb2Zmc2V0IDM4ODggaW4g ZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0NDgwODEK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzg4OC4uLgplbnRyeSAi bGlibmN1cnNlcysrLmEiIGF0IGJsb2NrIDUgb2Zmc2V0IDM5MTIgaW4gZGlyZWN0b3J5IGlub2Rl IDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTk1MzA3CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM5MTIuLi4KZW50cnkgImxpYnJ0LmEiIGF0IGJs b2NrIDUgb2Zmc2V0IDM5NDQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSA0NDgwODIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzk0NC4uLgplbnRyeSAibGliZ2wxLW1lc2EtZHJpLm1kNXN1bXMiIGF0IGJsb2NrIDIw IG9mZnNldCA5NiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxNDk5NTAzCmVudHJ5ICJsaWJwYW5lbC5hIiBhdCBibG9jayA1IG9mZnNldCAz OTY4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTE5NTQzOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzOTY4Li4u CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDk2Li4uCmVudHJ5ICJs aWJ1dGlsLmEiIGF0IGJsb2NrIDUgb2Zmc2V0IDQwMDAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0NDgwODMKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgNDAwMC4uLgplbnRyeSAibGlidGVybWNhcC5zbyIgYXQgYmxv Y2sgNSBvZmZzZXQgNDAyNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDExOTU1NTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgNDAyNC4uLgplbnRyeSAibGliaWVjNjE4ODMuc28uMC4xLjAiIGF0IGJsb2NrIDYgb2Zm c2V0IDE2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTEyNDk0NQplbnRyeSAibGlicXRjb3JlNC5tZDVzdW1zIiBhdCBibG9jayAyMCBvZmZzZXQg Mjg5NiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxNTk4OTg4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI4 OTYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTYuLi4KZW50 cnkgImxpYnRlcm1jYXAuYSIgYXQgYmxvY2sgNiBvZmZzZXQgNDggaW4gZGlyZWN0b3J5IGlub2Rl IDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTk1NTU2CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ4Li4uCmVudHJ5ICJsaWJ3YXZwYWNrLnNvLjEi IGF0IGJsb2NrIDYgb2Zmc2V0IDcyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTEyNDEwMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCA3Mi4uLgplbnRyeSAibGlicXRjb3JlNC5zaGxpYnMiIGF0IGJsb2NrIDIwIG9m ZnNldCAyOTI4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDE1OTg5ODkKZW50cnkgImxpYm5jdXJzZXMuc28iIGF0IGJsb2NrIDYgb2Zmc2V0 IDExMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDExOTU1NTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTEyLi4u CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI5MjguLi4KZW50cnkg ImxpYnF0Y29yZTQucG9zdGluc3QiIGF0IGJsb2NrIDIwIG9mZnNldCAyOTYwIGluIGRpcmVjdG9y eSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1OTg5OTEKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjk2MC4uLgplbnRyeSAibGli aWVjNjE4ODMuc28uMCIgYXQgYmxvY2sgNiBvZmZzZXQgMTM2IGluIGRpcmVjdG9yeSBpbm9kZSAx NDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEyNDk0NgoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzYuLi4KZW50cnkgImxpYnF0Y29yZTQucG9zdHJt IiBhdCBibG9jayAyMCBvZmZzZXQgMjk5MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTk4OTkyCmVudHJ5ICJsaWJjdXJzZXMuYSIgYXQg YmxvY2sgNiBvZmZzZXQgMTY4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTE5NTU1OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAxNjguLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg Mjk5Mi4uLgplbnRyeSAibGliZnJlZWJvYi5zby4wLjEuMCIgYXQgYmxvY2sgNiBvZmZzZXQgMTky IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEy NDk1NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxOTIuLi4KZW50 cnkgImxpYnRpYy5zbyIgYXQgYmxvY2sgNiBvZmZzZXQgMjI0IGluIGRpcmVjdG9yeSBpbm9kZSAx NDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE5NTU1OQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMjQuLi4KZW50cnkgImxpYnF0NC1zcWwtbXlzcWwu bWQ1c3VtcyIgYXQgYmxvY2sgMjEgb2Zmc2V0IDI1NiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2 MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTk5MDUwCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1Ni4uLgplbnRyeSAibGlibmN1cnNlcy5zby41IiBh dCBibG9jayA2IG9mZnNldCAyNDggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxNjM4MjkKZW50cnkgInBzZm9udG1nci5wb3N0aW5zdCIgYXQgYmxv Y2sgMjEgb2Zmc2V0IDc5MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxODUwOTA1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDc5Mi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAyNDguLi4KZW50cnkgInBzZm9udG1nci5wcmVybSIgYXQgYmxvY2sgMjEgb2Zmc2V0IDExNjAg aW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTg1MDkwMwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMTYwLi4u CmVudHJ5ICJwc2ZvbnRtZ3IucG9zdHJtIiBhdCBibG9jayAyMSBvZmZzZXQgMTI3MiBpbiBkaXJl Y3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODUwOTA2 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyNzIuLi4KZW50cnkg ImxpYmFhLnNvLjEuMC40IiBhdCBibG9jayA2IG9mZnNldCAyODAgaW4gZGlyZWN0b3J5IGlub2Rl IDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MDc0MzAKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjgwLi4uCmVudHJ5ICJsaWJmZmkuc28uNS4wLjgi IGF0IGJsb2NrIDYgb2Zmc2V0IDMyMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDM5OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzMjAuLi4KZW50cnkgImxpYnhyZXMxLnNobGlicyIgYXQgYmxvY2sgMjEgb2Zmc2V0 IDEzMjggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTczODUwMAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAx MzI4Li4uCmVudHJ5ICJsaWJmcmVlYm9iLnNvLjAiIGF0IGJsb2NrIDYgb2Zmc2V0IDM1MiBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMjQ5NTcK ZW50cnkgImxpYnhyZXMxLnBvc3RpbnN0IiBhdCBibG9jayAyMSBvZmZzZXQgMTM2MCBpbiBkaXJl Y3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNzM4NTAx CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEzNjAuLi4KZW50cnkg ImxpYnhyZXMxLnBvc3RybSIgYXQgYmxvY2sgMjEgb2Zmc2V0IDEzOTIgaW4gZGlyZWN0b3J5IGlu b2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTczODUwMgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNTIuLi4KZW50cnkgImxpYmZmaS5z by41IiBhdCBibG9jayA2IG9mZnNldCAzODQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MDAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMzg0Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDEzOTIuLi4KZW50cnkgImxpYmZyaWJpZGkuc28uMC4wLjAiIGF0IGJsb2NrIDYgb2Zmc2V0 IDQwOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDExMjQ5NTgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDA4Li4u CmVudHJ5ICJsaWJmYWtlcm9vdCIgYXQgYmxvY2sgNiBvZmZzZXQgNDQwIGluIGRpcmVjdG9yeSBp bm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTIxNDIKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDQwLi4uCmVudHJ5ICJsaWJhYS5zby4xIiBh dCBibG9jayA2IG9mZnNldCA0NjQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSA0MDc0MzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgNDY0Li4uCmVudHJ5ICJsaWJvZGJjaW5zdC5zby4xLjAuMCIgYXQgYmxvY2sgNiBv ZmZzZXQgNTA0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgNDA3OTYxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDUw NC4uLgplbnRyeSAibGliYXJ0c2Muc28uMC4wLjAiIGF0IGJsb2NrIDYgb2Zmc2V0IDUzNiBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwNzY0OAoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1MzYuLi4KZW50cnkgImxp YnhyZXMxLm1kNXN1bXMiIGF0IGJsb2NrIDIxIG9mZnNldCAxNDI0IGluIGRpcmVjdG9yeSBpbm9k ZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3Mzg1MDMKZW50cnkgImxp Ym9kYmNpbnN0LnNvLjEiIGF0IGJsb2NrIDYgb2Zmc2V0IDU3NiBpbiBkaXJlY3RvcnkgaW5vZGUg MTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwODAwOAoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1NzYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMTQyNC4uLgplbnRyeSAicHNmb250bWdyLnByZWluc3QiIGF0IGJs b2NrIDIxIG9mZnNldCAxNDU2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDE4NTA5MDcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTQ1Ni4uLgplbnRyeSAibGliYXJ0c2Muc28uMCIgYXQgYmxvY2sgNiBvZmZz ZXQgNjA4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNDA3NjQ5CmVudHJ5ICJsbW9kZXJuLnByZWluc3QiIGF0IGJsb2NrIDIxIG9mZnNldCAxNzA0 IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDE3Mzg1MDgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTcwNC4u LgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2MDguLi4KZW50cnkg Imxtb2Rlcm4ucG9zdHJtIiBhdCBibG9jayAyMSBvZmZzZXQgMTczNiBpbiBkaXJlY3RvcnkgaW5v ZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNzM4NTA5CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3MzYuLi4KZW50cnkgImxpYmd0cnRz dC5zby4xLjAuMCIgYXQgYmxvY2sgNiBvZmZzZXQgNjQ4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA4MDA5CmVudHJ5ICJsbW9kZXJuLmNvbmZm aWxlcyIgYXQgYmxvY2sgMjEgb2Zmc2V0IDE3NjggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTczODUxMQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNzY4Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDY0OC4uLgplbnRyeSAibGliYXN5bmNucy5zby4wLjEuMCIgYXQgYmxv Y2sgNiBvZmZzZXQgNjgwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgNDA3NjUwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDY4MC4uLgplbnRyeSAibGlib2RiYy5zby4xLjAuMCIgYXQgYmxvY2sgNiBvZmZzZXQgNzIw IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA4 MDEwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDcyMC4uLgplbnRy eSAibG1vZGVybi5wb3N0aW5zdCIgYXQgYmxvY2sgMjEgb2Zmc2V0IDE4MDAgaW4gZGlyZWN0b3J5 IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTczODUxMgoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODAwLi4uCmVudHJ5ICJsbW9k ZXJuLnByZXJtIiBhdCBibG9jayAyMSBvZmZzZXQgMTgzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5 NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNzM4NTEzCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4MzIuLi4KZW50cnkgImxtb2Rlcm4ubWQ1c3Vt cyIgYXQgYmxvY2sgMjEgb2Zmc2V0IDE4NTYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTczODUxNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAxODU2Li4uCmVudHJ5ICJsaWJhc3luY25zLnNvLjAiIGF0IGJs b2NrIDYgb2Zmc2V0IDc1MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDQwNzY1MQplbnRyeSAieGRnLXV0aWxzLnBvc3RpbnN0IiBhdCBibG9jayAy MSBvZmZzZXQgMjIwOCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxODA5OTYwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDIyMDguLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg NzUyLi4uCmVudHJ5ICJsaWJvZGJjY3Iuc28uMS4wLjAiIGF0IGJsb2NrIDYgb2Zmc2V0IDc5MiBp biBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwODAx MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA3OTIuLi4KZW50cnkg ImxpYmNhY2ErKy5zby4wLjk5LjE2IiBhdCBibG9jayA2IG9mZnNldCA4MjQgaW4gZGlyZWN0b3J5 IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MDc2NTIKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODI0Li4uCmVudHJ5ICJ4ZGctdXRpbHMu bWQ1c3VtcyIgYXQgYmxvY2sgMjEgb2Zmc2V0IDIyNDAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcx NjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTgwOTk2MQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMjQwLi4uCmVudHJ5ICJ4ZGctdXRpbHMucHJlcm0i IGF0IGJsb2NrIDIxIG9mZnNldCAyMjcyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4MDk5NjIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMjI3Mi4uLgplbnRyeSAibGliZ3RydHN0LnNvLjEiIGF0IGJsb2Nr IDYgb2Zmc2V0IDg2NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDQwODAxNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCA4NjQuLi4KZW50cnkgIm5vdGlmaWNhdGlvbi1kYWVtb24ucG9zdGluc3QiIGF0IGJsb2NrIDIx IG9mZnNldCAyODMyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDE4MDk5NzIKZW50cnkgImxpYmZyaWJpZGkuc28uMCIgYXQgYmxvY2sgNiBv ZmZzZXQgODk2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTEyNDk1OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4 OTYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjgzMi4uLgpl bnRyeSAibGlib2RiYy5zby4xIiBhdCBibG9jayA2IG9mZnNldCA5MjggaW4gZGlyZWN0b3J5IGlu b2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MDgwMTUKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgOTI4Li4uCmVudHJ5ICJub3RpZmljYXRpb24t ZGFlbW9uLnByZXJtIiBhdCBibG9jayAyMSBvZmZzZXQgMjg3MiBpbiBkaXJlY3RvcnkgaW5vZGUg NDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODA5OTczCmVudHJ5ICJsaWJj YWNhLnNvLjAuOTkuMTYiIGF0IGJsb2NrIDYgb2Zmc2V0IDk1MiBpbiBkaXJlY3RvcnkgaW5vZGUg MTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwNzY1MwoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5NTIuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMjg3Mi4uLgplbnRyeSAibGlib2RiY2NyLnNvLjEiIGF0IGJsb2Nr IDYgb2Zmc2V0IDk5MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDQwODAxNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCA5OTIuLi4KZW50cnkgImxpYnNzaDIuc28uMS4wLjAiIGF0IGJsb2NrIDYgb2Zmc2V0IDEwMjQg aW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjEz NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMDI0Li4uCmVudHJ5 ICJsaWJjdXJsLnNvLjQuMS4wIiBhdCBibG9jayA2IG9mZnNldCAxMDU2IGluIGRpcmVjdG9yeSBp bm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTIxNjgKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTA1Ni4uLgplbnRyeSAibm90aWZpY2F0aW9u LWRhZW1vbi5wb3N0cm0iIGF0IGJsb2NrIDIxIG9mZnNldCAyOTEyIGluIGRpcmVjdG9yeSBpbm9k ZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4MDk5NzQKZW50cnkgImxp Ym1vd2dsaS5zby4xLjAuMCIgYXQgYmxvY2sgNiBvZmZzZXQgMTEzNiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1OTcwNTAKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTEzNi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAyOTEyLi4uCmVudHJ5ICJsaWJjdWN1bC5zby4wLjk5LjE2 IiBhdCBibG9jayA2IG9mZnNldCAxMTY4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgNDA3NjY1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDExNjguLi4KZW50cnkgImxpYm1vd2dsaS5zby4xIiBhdCBibG9jayA2IG9m ZnNldCAxMjA4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjU5NzA1MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAx MjA4Li4uCmVudHJ5ICJub3RpZmljYXRpb24tZGFlbW9uLm1kNXN1bXMiIGF0IGJsb2NrIDIxIG9m ZnNldCAyOTUyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDE4MDk5NzYKZW50cnkgImxpYmN1Y3VsLnNvLjAiIGF0IGJsb2NrIDYgb2Zmc2V0 IDEyNDAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA0MDc2NjYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTI0MC4u LgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyOTUyLi4uCmVudHJ5 ICJsaWJtY3Muc28uMS4wLjAiIGF0IGJsb2NrIDYgb2Zmc2V0IDEyODAgaW4gZGlyZWN0b3J5IGlu b2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MDc0ODUKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTI4MC4uLgplbnRyeSAidGV4bGl2ZS1nZW5l cmljLXJlY29tbWVuZGVkLnByZWluc3QiIGF0IGJsb2NrIDIxIG9mZnNldCAzNjU2IGluIGRpcmVj dG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NTA2OTIK ZW50cnkgImxpYmdnLnNvLjEuMC4wIiBhdCBibG9jayA2IG9mZnNldCAxMzEyIGluIGRpcmVjdG9y eSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUwNzAxNQoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzEyLi4uCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM2NTYuLi4KZW50cnkgImxpYm1jcy5zby4xIiBh dCBibG9jayA2IG9mZnNldCAxMzQ0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMjU5NzA1MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAxMzQ0Li4uCmVudHJ5ICJsaWJjdXJsLnNvLjMiIGF0IGJsb2NrIDYgb2Zmc2V0 IDEzNjggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA0MDcyMTQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTM2OC4u LgplbnRyeSAibGlidW5naWYuc28uNCIgYXQgYmxvY2sgNiBvZmZzZXQgMTM5MiBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMzU5NzIKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTM5Mi4uLgplbnRyeSAidGV4bGl2 ZS1nZW5lcmljLXJlY29tbWVuZGVkLnBvc3RybSIgYXQgYmxvY2sgMjEgb2Zmc2V0IDM3MDQgaW4g ZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg1 MDY5MwplbnRyeSAibGliYXVkY2xpZW50LnNvLjEuMC4wIiBhdCBibG9jayA2IG9mZnNldCAxNDE2 IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjU5 NzA1NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNDE2Li4uCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM3MDQuLi4KZW50cnkgImxp YmN1Y3VsKysuc28uMC45OS4xNiIgYXQgYmxvY2sgNiBvZmZzZXQgMTQ0OCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwNzY2NwoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNDQ4Li4uCmVudHJ5ICJsaWJhdWRjbGll bnQuc28uMSIgYXQgYmxvY2sgNiBvZmZzZXQgMTQ4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1OTcwNTUKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQ4OC4uLgplbnRyeSAidGV4bGl2ZS1nZW5lcmljLXJlY29t bWVuZGVkLnBvc3RpbnN0IiBhdCBibG9jayAyMSBvZmZzZXQgMzc1MiBpbiBkaXJlY3RvcnkgaW5v ZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODUwNjk1CmVudHJ5ICJs aWJzYW1wbGVyYXRlLnNvLjAuMS40IiBhdCBibG9jayA2IG9mZnNldCAxNTY4IGluIGRpcmVjdG9y eSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjU5NzA1NgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTY4Li4uCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM3NTIuLi4KZW50cnkgInRleGxpdmUtZ2VuZXJp Yy1yZWNvbW1lbmRlZC5tZDVzdW1zIiBhdCBibG9jayAyMSBvZmZzZXQgMzgwMCBpbiBkaXJlY3Rv cnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODUwNjk2Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM4MDAuLi4KZW50cnkgImxp YmN1Y3VsKysuc28uMCIgYXQgYmxvY2sgNiBvZmZzZXQgMTYwOCBpbiBkaXJlY3RvcnkgaW5vZGUg MTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwNzY2OAplbnRyeSAicHNmb250bWdy Lm1kNXN1bXMiIGF0IGJsb2NrIDIxIG9mZnNldCAzODQ4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3 MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NTA5MDQKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzg0OC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAxNjA4Li4uCmVudHJ5ICJsaWJzYW1wbGVyYXRlLnNvLjAiIGF0 IGJsb2NrIDYgb2Zmc2V0IDE2NDggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAyNTk3MDYxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDE2NDguLi4KZW50cnkgImxpYmdzbS5zby4xIiBhdCBibG9jayA2IG9mZnNldCAx NjgwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MjY0ODk4MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNjgwLi4u CmVudHJ5ICJsaWJqYWNrLnNvLjAiIGF0IGJsb2NrIDYgb2Zmc2V0IDE3MDQgaW4gZGlyZWN0b3J5 IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTM1OTgyCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3MDQuLi4KZW50cnkgImxpYmF1ZGlk M3RhZy5zby4xLjAuMCIgYXQgYmxvY2sgNiBvZmZzZXQgMTcyOCBpbiBkaXJlY3RvcnkgaW5vZGUg MTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1OTcwNjIKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTcyOC4uLgplbnRyeSAieHBkZi1yZWFkZXIucG9z dGluc3QiIGF0IGJsb2NrIDIyIG9mZnNldCAzMDI0IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYw IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ3NzAKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzAyNC4uLgplbnRyeSAieHBkZi1yZWFkZXIucG9zdHJt IiBhdCBibG9jayAyMiBvZmZzZXQgMzA1NiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0NzcxCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDMwNTYuLi4KZW50cnkgImxpYmNhY2Euc28uMCIgYXQgYmxvY2sg NiBvZmZzZXQgMTc2MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDQwNzY2OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAxNzYwLi4uCmVudHJ5ICJsaWJhdWRpZDN0YWcuc28uMSIgYXQgYmxvY2sgNiBvZmZzZXQgMTgw MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1 OTcwNjMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTgwMC4uLgpl bnRyeSAieHBkZi1yZWFkZXIubWQ1c3VtcyIgYXQgYmxvY2sgMjIgb2Zmc2V0IDMwODggaW4gZGly ZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDc3 MwplbnRyeSAibGliY2FjYSsrLnNvLjAiIGF0IGJsb2NrIDYgb2Zmc2V0IDE4MzIgaW4gZGlyZWN0 b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MDc2NzAKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTgzMi4uLgoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDg4Li4uCmVudHJ5ICJsaWJjZGRiLnNvLjIu MS4xIiBhdCBibG9jayA2IG9mZnNldCAxODcyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjU5NzA3NAplbnRyeSAidGV4cG93ZXItbWFudWFsLm1k NXN1bXMiIGF0IGJsb2NrIDIyIG9mZnNldCAzMjg4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYw IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ3NzIKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzI4OC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAxODcyLi4uCmVudHJ5ICJ4ZmRlc2t0b3A0LnBvc3RpbnN0IiBhdCBi bG9jayAyMiBvZmZzZXQgMzMyOCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxOTA1MDg4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDMzMjguLi4KZW50cnkgImxpYmdpaS5zby4xLjAuMCIgYXQgYmxvY2sgNiBv ZmZzZXQgMTkwNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDI1MDcwMTYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MTkwNC4uLgplbnRyeSAieGZjZTQubWQ1c3VtcyIgYXQgYmxvY2sgMjIgb2Zmc2V0IDM0NzIgaW4g ZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkw NTA5MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNDcyLi4uCmVu dHJ5ICJsaWJjZGRiLnNvLjIiIGF0IGJsb2NrIDYgb2Zmc2V0IDE5MzYgaW4gZGlyZWN0b3J5IGlu b2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTk3MDc1CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE5MzYuLi4KZW50cnkgImxpYmNkZGFfaW50 ZXJmYWNlLnNvLjAuMTAuMiIgYXQgYmxvY2sgNiBvZmZzZXQgMTk2MCBpbiBkaXJlY3RvcnkgaW5v ZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwNzY3MwoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxOTYwLi4uCmVudHJ5ICJsaWJjZGlvLnNvLjcu MS4wIiBhdCBibG9jayA2IG9mZnNldCAyMDAwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjU5NzA3NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyMDAwLi4uCmVudHJ5ICJ4ZmRlc2t0b3A0LnBvc3RybSIgYXQgYmxv Y2sgMjMgb2Zmc2V0IDU2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE5MDUwODkKZW50cnkgImxpYmdnLnNvLjEiIGF0IGJsb2NrIDYgb2Zm c2V0IDIwMzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyNTA3MDE4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIw MzIuLi4KZW50cnkgImxpYmNkaW8uc28uNyIgYXQgYmxvY2sgNiBvZmZzZXQgMjA2NCBpbiBkaXJl Y3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1OTcwNzgKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjA2NC4uLgoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1Ni4uLgplbnRyeSAibGlic294LnNvLjEu MC4wIiBhdCBibG9jayA2IG9mZnNldCAyMDg4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjY0ODk5MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyMDg4Li4uCmVudHJ5ICJsaWJjZGlvX2NkZGEuc28uMC4wLjIiIGF0 IGJsb2NrIDYgb2Zmc2V0IDIxMzYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAyNTk3MDgzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDIxMzYuLi4KZW50cnkgInhmZGVza3RvcDQuY29uZmZpbGVzIiBhdCBibG9jayAy MyBvZmZzZXQgODggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTkwNTA5MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA4OC4uLgplbnRyeSAibGliY2RkYV9wYXJhbm9pYS5zby4wLjEwLjIiIGF0IGJsb2NrIDYg b2Zmc2V0IDIxNjggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSA0MDc2NzQKZW50cnkgInhmZGVza3RvcDQubWQ1c3VtcyIgYXQgYmxvY2sgMjMgb2Zm c2V0IDEyMCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxOTA1MDkyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDEyMC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMTY4Li4u CmVudHJ5ICJ4ZmNlNC5wcmVpbnN0IiBhdCBibG9jayAyMyBvZmZzZXQgMTUyIGluIGRpcmVjdG9y eSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDUwOTUKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTUyLi4uCmVudHJ5ICJsaWJj ZGlvX2NkZGEuc28uMCIgYXQgYmxvY2sgNiBvZmZzZXQgMjIwOCBpbiBkaXJlY3RvcnkgaW5vZGUg MTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1OTcwODQKZW50cnkgInhmY2U0LnBv c3RybSIgYXQgYmxvY2sgMjMgb2Zmc2V0IDE3NiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA1MDk2CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3Ni4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAyMjA4Li4uCmVudHJ5ICJ4ZmNlNC1taXhlci5tZDVzdW1zIiBhdCBibG9j ayAyMyBvZmZzZXQgNDE2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE5MDUwOTgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgNDE2Li4uCmVudHJ5ICJsaWJjZGRhX2ludGVyZmFjZS5zby4wIiBhdCBibG9jayA2 IG9mZnNldCAyMjQwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgNDA3Njc1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDIyNDAuLi4KZW50cnkgImxpYm9nZy5zby4wLjUuMyIgYXQgYmxvY2sgNiBvZmZzZXQgMjI4MCBp biBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1OTcw ODUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjI4MC4uLgplbnRy eSAibGliZ2lpLnNvLjEiIGF0IGJsb2NrIDYgb2Zmc2V0IDIzMTIgaW4gZGlyZWN0b3J5IGlub2Rl IDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTA3MDE5CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIzMTIuLi4KZW50cnkgInhmcHJpbnQ0LnNobGli cyIgYXQgYmxvY2sgMjMgb2Zmc2V0IDE0ODAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTk0MDE3OAplbnRyeSAibGlib2dnLnNvLjAiIGF0 IGJsb2NrIDYgb2Zmc2V0IDIzNDQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAyNTk3MDg2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDIzNDQuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMTQ4MC4uLgplbnRyeSAibGliY2RkYV9wYXJhbm9pYS5zby4wIiBhdCBibG9jayA2IG9mZnNl dCAyMzY4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNDA3Njc2CmVudHJ5ICJ4ZnByaW50NC5wb3N0aW5zdCIgYXQgYmxvY2sgMjMgb2Zmc2V0IDE1 MTIgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTk0MDE3OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTEy Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIzNjguLi4KZW50 cnkgImxpYkZMQUMuc28uOC4yLjAiIGF0IGJsb2NrIDYgb2Zmc2V0IDI0MDggaW4gZGlyZWN0b3J5 IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNjM4Mjc0CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI0MDguLi4KZW50cnkgInhmcHJpbnQ0 LnBvc3RybSIgYXQgYmxvY2sgMjMgb2Zmc2V0IDE1NDQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcx NjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTk0MDE4MAplbnRyeSAibGlidmdhLnNv LjEuNC4zIiBhdCBibG9jayA2IG9mZnNldCAyNDQwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUwNzAyNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAyNDQwLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDE1NDQuLi4KZW50cnkgImxpYkZMQUMuc28uOCIgYXQgYmxvY2sgNiBvZmZz ZXQgMjQ3MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDI2MzgyNzUKZW50cnkgInhmcHJpbnQ0Lm1kNXN1bXMiIGF0IGJsb2NrIDIzIG9mZnNldCAx NTc2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE5NDAxODIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTU3 Ni4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNDcyLi4uCmVu dHJ5ICJ4bGkubWQ1c3VtcyIgYXQgYmxvY2sgMjMgb2Zmc2V0IDE3NTIgaW4gZGlyZWN0b3J5IGlu b2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTk0MDI1MgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNzUyLi4uCmVudHJ5ICJ4bGkucG9z dGluc3QiIGF0IGJsb2NrIDIzIG9mZnNldCAxNzc2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYw IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NDAyNTQKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTc3Ni4uLgplbnRyeSAibGliZHYuc28uNC4wLjMiIGF0 IGJsb2NrIDYgb2Zmc2V0IDI0OTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSA0MDc2NzcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMjQ5Ni4uLgplbnRyeSAibGlibWFkLnNvLjAuMi4xIiBhdCBibG9jayA2IG9mZnNl dCAyNTM2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMjYzODI3NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNTM2 Li4uCmVudHJ5ICJ4bGkucG9zdHJtIiBhdCBibG9jayAyMyBvZmZzZXQgMTgwMCBpbiBkaXJlY3Rv cnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTQwMjU1Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4MDAuLi4KZW50cnkgImxp YnZnYWdsLnNvLjEuNC4zIiBhdCBibG9jayA2IG9mZnNldCAyNTY4IGluIGRpcmVjdG9yeSBpbm9k ZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUwNzAyNgoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNTY4Li4uCmVudHJ5ICJsaWJtYWQuc28uMCIg YXQgYmxvY2sgNiBvZmZzZXQgMjYwMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDI2MzgyNzcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMjYwMC4uLgplbnRyeSAibGliZHYuc28uNCIgYXQgYmxvY2sgNiBvZmZzZXQg MjYyNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDQwODAxNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjI0Li4u CmVudHJ5ICJ4c2VydmVyLXhvcmctaW5wdXQtc3luYXB0aWNzLm1kNXN1bXMiIGF0IGJsb2NrIDIz IG9mZnNldCAyNTUyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDE5NTA2NzMKZW50cnkgImxpYm1tcy5zby4wLjAuMiIgYXQgYmxvY2sgNiBv ZmZzZXQgMjY2NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDI2MzgyODIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MjY2NC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNTUyLi4u CmVudHJ5ICJsaWJ2Z2FnbC5zby4xIiBhdCBibG9jayA2IG9mZnNldCAyNjk2IGluIGRpcmVjdG9y eSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUwNzAyNwplbnRyeSAi bGF0ZXgteGZ0LWZvbnRzLnByZXJtIiBhdCBibG9jayAyMyBvZmZzZXQgMzAwOCBpbiBkaXJlY3Rv cnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDMwODcxCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMwMDguLi4KCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjY5Ni4uLgplbnRyeSAibGlibW1zLnNv LjAiIGF0IGJsb2NrIDYgb2Zmc2V0IDI3MjggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNjM4MjgzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDI3MjguLi4KZW50cnkgImxpYlF0QXNzaXN0YW50Q2xpZW50LnNvLjQu NC4zIiBhdCBibG9jayA2IG9mZnNldCAyNzUyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE1NTc0OAplbnRyeSAieGtiLWRhdGEuY29uZmZpbGVz IiBhdCBibG9jayAyMyBvZmZzZXQgMzA2NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTUwNjg0CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDMwNjQuLi4KZW50cnkgInhrYi1kYXRhLm1kNXN1bXMiIGF0IGJs b2NrIDIzIG9mZnNldCAzMDk2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDE5NTA2ODUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMzA5Ni4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAyNzUyLi4uCmVudHJ5ICJ4c2VydmVyLXhvcmcudGVtcGxhdGVzIiBhdCBibG9jayAyMyBv ZmZzZXQgMzE5MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxOTUwOTUyCmVudHJ5ICJsaWJuZW9uLWdudXRscy5zby4yNy4xLjIiIGF0IGJs b2NrIDYgb2Zmc2V0IDI4MDAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAyNjM4Mjg0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDI4MDAuLi4KZW50cnkgImxpYmVuY2Euc28uMC41LjEiIGF0IGJsb2NrIDYgb2Zmc2V0 IDI4NDAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA0MDk4NDQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjg0MC4u LgplbnRyeSAibGlibmVvbi1nbnV0bHMuc28uMjciIGF0IGJsb2NrIDYgb2Zmc2V0IDI4ODAgaW4g ZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNjM4Mjg1 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI4ODAuLi4KZW50cnkg ImxpYmVuY2Euc28uMCIgYXQgYmxvY2sgNiBvZmZzZXQgMjkxMiBpbiBkaXJlY3RvcnkgaW5vZGUg MTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMjAwOTIKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjkxMi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAzMTkyLi4uCmVudHJ5ICJsaWJzbmRmaWxlLnNvLjEuMC4xNyIg YXQgYmxvY2sgNiBvZmZzZXQgMjk1MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDI2MzgyODYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMjk1Mi4uLgplbnRyeSAieHNlcnZlci14b3JnLnBvc3RpbnN0IiBhdCBibG9j ayAyMyBvZmZzZXQgMzIzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxOTUwOTUzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDMyMzIuLi4KZW50cnkgInhzZXJ2ZXIteG9yZy5wcmVpbnN0IiBhdCBibG9jayAy MyBvZmZzZXQgMzI2NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxOTUwOTU0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDMyNjQuLi4KZW50cnkgImxpYmZhYWMuc28uMC4wLjAiIGF0IGJsb2NrIDYgb2Zmc2V0 IDI5ODQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxMTI0OTIyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI5ODQu Li4KZW50cnkgInhzZXJ2ZXIteG9yZy5wcmVybSIgYXQgYmxvY2sgMjMgb2Zmc2V0IDMyOTYgaW4g ZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTk1 MDk1NQplbnRyeSAibGlic25kZmlsZS5zby4xIiBhdCBibG9jayA2IG9mZnNldCAzMDI0IGluIGRp cmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjYzODI5MQoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDI0Li4uCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyOTYuLi4KZW50cnkgImxpYmZhYWMu c28uMCIgYXQgYmxvY2sgNiBvZmZzZXQgMzA1NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMjQ5MzAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzA1Ni4uLgplbnRyeSAibGlidm9yYmlzLnNvLjAuNC4wIiBhdCBi bG9jayA2IG9mZnNldCAzMDk2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjYzODI5MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzMDk2Li4uCmVudHJ5ICJ4c2VydmVyLXhvcmcucG9zdHJtIiBhdCBibG9jayAyMyBv ZmZzZXQgMzMyOCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxOTUwOTU2CmVudHJ5ICJsaWJyYXcxMzk0LnNvLjguMi4wIiBhdCBibG9jayA2 IG9mZnNldCAzMTI4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTEyNDkzMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzMTI4Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMzMjgu Li4KZW50cnkgImxpYnZvcmJpcy5zby4wIiBhdCBibG9jayA2IG9mZnNldCAzMTY4IGluIGRpcmVj dG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjYzODI5MwoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMTY4Li4uCmVudHJ5ICJsaWJz b3guc28uMSIgYXQgYmxvY2sgNiBvZmZzZXQgMzIwMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI2NDg5OTEKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIwMC4uLgplbnRyeSAieHNlcnZlci14b3JnLm1kNXN1bXMi IGF0IGJsb2NrIDIzIG9mZnNldCAzMzYwIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NTA5NTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzM2MC4uLgplbnRyeSAibGlicHVsc2Uuc28uMCIgYXQgYmxvY2sg NiBvZmZzZXQgMzIyNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDExMzYwMDYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMzIyNC4uLgplbnRyeSAieHNlcnZlci14ZXBoeXIubWQ1c3VtcyIgYXQgYmxvY2sgMjMgb2Zm c2V0IDM5OTIgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTk4MzM5MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzOTkyLi4uCmVudHJ5ICJsaWJ2b3JiaXNlbmMuc28uMi4wLjMiIGF0IGJsb2NrIDYgb2Zmc2V0 IDMyNDggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyNjM4Mjk0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyNDgu Li4KZW50cnkgImxhdGV4LXhmdC1mb250cy5wb3N0aW5zdCIgYXQgYmxvY2sgMjQgb2Zmc2V0IDE2 IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDIwMzA4NjkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTYuLi4K ZW50cnkgImxpYnJhdzEzOTQuc28uOCIgYXQgYmxvY2sgNiBvZmZzZXQgMzI4MCBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMjQ5MzIKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzI4MC4uLgplbnRyeSAibGF0ZXgt eGZ0LWZvbnRzLm1kNXN1bXMiIGF0IGJsb2NrIDI0IG9mZnNldCA1NiBpbiBkaXJlY3RvcnkgaW5v ZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDMwODcwCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDU2Li4uCmVudHJ5ICJsYXRleC14ZnQt Zm9udHMuY29uZmZpbGVzIiBhdCBibG9jayAyNCBvZmZzZXQgOTYgaW4gZGlyZWN0b3J5IGlub2Rl IDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjAzMDg3MgoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5Ni4uLgplbnRyeSAibGlidm9yYmlzZW5j LnNvLjIiIGF0IGJsb2NrIDYgb2Zmc2V0IDMzMjAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNjM4MzAwCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDMzMjAuLi4KZW50cnkgImxpYmN1cnNlcy11aS1wZXJsLm1kNXN1 bXMiIGF0IGJsb2NrIDI0IG9mZnNldCA1MTIgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA1ODQyNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCA1MTIuLi4KZW50cnkgImxpYndhdnBhY2suc28uMS4wLjMiIGF0 IGJsb2NrIDYgb2Zmc2V0IDMzNTIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMTI0MTAxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDMzNTIuLi4KZW50cnkgImxpYmZmaTUubWQ1c3VtcyIgYXQgYmxvY2sgMjQgb2Zm c2V0IDU1MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAzOTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTUy Li4uCmVudHJ5ICJsaWJ2b3JiaXNmaWxlLnNvLjMuMi4wIiBhdCBibG9jayA2IG9mZnNldCAzNDAw IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjYz ODMwMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNDAwLi4uCmVu dHJ5ICJsaWJhdmMxMzk0LnNvLjAuMy4wIiBhdCBibG9jayA2IG9mZnNldCAzNDQwIGluIGRpcmVj dG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEyNDkzMwoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNDQwLi4uCmVudHJ5ICJsaWJp by1jb21wcmVzcy16bGliLXBlcmwubWQ1c3VtcyIgYXQgYmxvY2sgMjQgb2Zmc2V0IDE2MzIgaW4g ZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE5 NTI3MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNjMyLi4uCmVu dHJ5ICJsaWJ2b3JiaXNmaWxlLnNvLjMiIGF0IGJsb2NrIDYgb2Zmc2V0IDM0ODAgaW4gZGlyZWN0 b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNjM4MzAyCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM0ODAuLi4KZW50cnkgImxpYmNv bXByZXNzLXpsaWItcGVybC5tZDVzdW1zIiBhdCBibG9jayAyNCBvZmZzZXQgMTc2OCBpbiBkaXJl Y3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTk1Mjc4 CmVudHJ5ICJsaWJ2Z2Euc28uMSIgYXQgYmxvY2sgNiBvZmZzZXQgMzUxMiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1MDcwMjgKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzUxMi4uLgoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNzY4Li4uCmVudHJ5ICJsaWJyb20xMzk0LnNvLjAu My4wIiBhdCBibG9jayA2IG9mZnNldCAzNTY4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEyNDkzNAplbnRyeSAibGliZGlnZXN0LWhtYWMtcGVy bC5tZDVzdW1zIiBhdCBibG9jayAyNCBvZmZzZXQgMjAwOCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5 NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTk1MjgxCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwMDguLi4KCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzU2OC4uLgplbnRyeSAibGlibWFpbHRvb2xzLXBlcmwubWQ1 c3VtcyIgYXQgYmxvY2sgMjQgb2Zmc2V0IDI1NjggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE5NTI5MwoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNTY4Li4uCmVudHJ5ICJsaWJsem8yLnNvLjIuMC4wIiBh dCBibG9jayA2IG9mZnNldCAzNjA4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTEyODY1MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzNjA4Li4uCmVudHJ5ICJsaWJtYWlsLWJveC1wZXJsLm1kNXN1bXMiIGF0IGJs b2NrIDI0IG9mZnNldCAyOTUyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDExOTUzMDgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMjk1Mi4uLgplbnRyeSAibGliZ2dpLnNvLjIuMC4yIiBhdCBibG9jayA2IG9m ZnNldCAzNjQwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjUwNzAyOQplbnRyeSAibGliZmZpNS5zeW1ib2xzIiBhdCBibG9jayAyNCBvZmZzZXQg MzI2NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAzNTAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzI2NC4u LgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNjQwLi4uCmVudHJ5 ICJsaWJuY3Vyc2VzNS1kZXYubWQ1c3VtcyIgYXQgYmxvY2sgMjQgb2Zmc2V0IDMzMzYgaW4gZGly ZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE5NTQz NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMzM2Li4uCmVudHJ5 ICJsaWJsem8yLnNvLjIiIGF0IGJsb2NrIDYgb2Zmc2V0IDM2NzIgaW4gZGlyZWN0b3J5IGlub2Rl IDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTI4NjU0CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM2NzIuLi4KZW50cnkgImxpYmZmaTUuc2hsaWJz IiBhdCBibG9jayAyNCBvZmZzZXQgMzM3NiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMTYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMzM3Ni4uLgplbnRyeSAibGludXgtc291cmNlLTIuNi4yNi5tZDVzdW1z IiBhdCBibG9jayAyNCBvZmZzZXQgMzQ1NiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTk1NTYxCmVudHJ5ICJsaWJyb20xMzk0LnNvLjAi IGF0IGJsb2NrIDYgb2Zmc2V0IDM2OTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxMTI0OTQzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDM2OTYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzQ1Ni4uLgplbnRyeSAibGlibXBnMTIzLnNvLjAuMi40IiBhdCBibG9jayA2IG9mZnNl dCAzNzM2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTEyODY1NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNzM2 Li4uCmVudHJ5ICJsaWJhdmMxMzk0LnNvLjAiIGF0IGJsb2NrIDYgb2Zmc2V0IDM3NjggaW4gZGly ZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTI0OTQ0Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM3NjguLi4KZW50cnkgImxp YmZmaTUucG9zdGluc3QiIGF0IGJsb2NrIDI0IG9mZnNldCAzNzUyIGluIGRpcmVjdG9yeSBpbm9k ZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM5MwoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNzUyLi4uCmVudHJ5ICJtb2R1bGUtYXNzaXN0 YW50Lm1kNXN1bXMiIGF0IGJsb2NrIDI0IG9mZnNldCAzODI0IGluIGRpcmVjdG9yeSBpbm9kZSA0 Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExOTU1NjIKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzgyNC4uLgplbnRyeSAibGlibXBnMTIzLnNv LjAiIGF0IGJsb2NrIDYgb2Zmc2V0IDM4MDggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTI4NjU2CmVudHJ5ICJtb2R1bGUtYXNzaXN0YW50LmNv bmZmaWxlcyIgYXQgYmxvY2sgMjQgb2Zmc2V0IDM4NjQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcx NjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE5NTU2NAoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzODY0Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDM4MDguLi4KZW50cnkgImxpYmdnaS5zby4yIiBhdCBibG9jayA2 IG9mZnNldCAzODQwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjUwNzAzMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzODQwLi4uCmVudHJ5ICJsaWJnaWYuc28uNC4xLjYiIGF0IGJsb2NrIDYgb2Zmc2V0IDM4OTYg aW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTA3 MDM5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM4OTYuLi4KZW50 cnkgIm1vZHVsZS1hc3Npc3RhbnQucG9zdHJtIiBhdCBibG9jayAyNCBvZmZzZXQgMzkwNCBpbiBk aXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTk1 NTY1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM5MDQuLi4KZW50 cnkgImxpYmZmaTUucG9zdHJtIiBhdCBibG9jayAyNCBvZmZzZXQgMzk0NCBpbiBkaXJlY3Rvcnkg aW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzOTQKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzk0NC4uLgplbnRyeSAibGliZ2lmLnNv LjQiIGF0IGJsb2NrIDYgb2Zmc2V0IDM5NTIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTM1OTY4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDM5NTIuLi4KZW50cnkgImxpYnNzaDIuc28uMSIgYXQgYmxvY2sgNiBv ZmZzZXQgMzk4NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDEyMTY3CmVudHJ5ICJsaWJtb3dnbGkxLnBvc3RpbnN0IiBhdCBibG9jayAyNSBvZmZz ZXQgNjMyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDI1OTcwNDQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg NjMyLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM5ODQuLi4K ZW50cnkgIm1lc2EtdXRpbHMubWQ1c3VtcyIgYXQgYmxvY2sgMjUgb2Zmc2V0IDg5NiBpbiBkaXJl Y3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDU4NDU0 CmVudHJ5ICJsaWJ1bmdpZi5zby40LjEuNiIgYXQgYmxvY2sgNiBvZmZzZXQgNDAwOCBpbiBkaXJl Y3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMzU5NjkKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDAwOC4uLgoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4OTYuLi4KZW50cnkgImxpYmN1cmwuc28u NCIgYXQgYmxvY2sgNiBvZmZzZXQgNDA0MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3MDA1NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCA0MDQwLi4uCmVudHJ5ICJjcHAtNC4xLm1kNXN1bXMiIGF0IGJsb2NrIDI1 IG9mZnNldCAxMDg4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDEyMTQwCmVudHJ5ICJsaWJnaWYuc28uNC4xIiBhdCBibG9jayA2IG9mZnNl dCA0MDY0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTEzNTk3MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MDY0 Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwODguLi4KZW50 cnkgImxpYm1vd2dsaTEuc3ltYm9scyIgYXQgYmxvY2sgMjUgb2Zmc2V0IDExNTIgaW4gZGlyZWN0 b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjU5NzA0NQoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMTUyLi4uCmVudHJ5ICJs aWJ1bmdpZi5zby40LjEiIGF0IGJsb2NrIDcgb2Zmc2V0IDE2IGluIGRpcmVjdG9yeSBpbm9kZSAx NDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEzNTk3MQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNi4uLgplbnRyeSAibGliamFjay5zby4wLjAuMjgi IGF0IGJsb2NrIDcgb2Zmc2V0IDQ4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTEzNTk3OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCA0OC4uLgplbnRyeSAiYWxzYS1zb3VyY2UudGVtcGxhdGVzIiBhdCBibG9jayAy NSBvZmZzZXQgMTM2MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxMjE0MwplbnRyeSAibGliamFja3NlcnZlci5zby4wLjAuMjgiIGF0IGJs b2NrIDcgb2Zmc2V0IDgwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTEzNTk4MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA4MC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzYw Li4uCmVudHJ5ICJsaWJqYWNrc2VydmVyLnNvLjAiIGF0IGJsb2NrIDcgb2Zmc2V0IDEyMCBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMzU5ODEK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTIwLi4uCmVudHJ5ICJh bHNhLXNvdXJjZS5jb25maWciIGF0IGJsb2NrIDI1IG9mZnNldCAxMzkyIGluIGRpcmVjdG9yeSBp bm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyMTQ0CmVudHJ5ICJs aWJqYWNrMC4xMDAuMCIgYXQgYmxvY2sgNyBvZmZzZXQgMTUyIGluIGRpcmVjdG9yeSBpbm9kZSAx NDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEzNTk4MwoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTIuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMTM5Mi4uLgplbnRyeSAibGliamFjay0wLjEwMC4wLnNvLjAiIGF0 IGJsb2NrIDcgb2Zmc2V0IDE4NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDExMzU5ODQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMTg0Li4uCmVudHJ5ICJhbHNhLXNvdXJjZS5wb3N0cm0iIGF0IGJsb2NrIDI1IG9m ZnNldCAxNDI0IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDEyMTQ1CmVudHJ5ICJsaWJsaXJjX2NsaWVudC5zby4wLjIuMCIgYXQgYmxvY2sg NyBvZmZzZXQgMjE2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTEzNTk4NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAyMTYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQyNC4u LgplbnRyeSAibGlibGlyY19jbGllbnQubGEiIGF0IGJsb2NrIDcgb2Zmc2V0IDI1NiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMzU5ODgKZW50 cnkgImFsc2Etc291cmNlLnBvc3RpbnN0IiBhdCBibG9jayAyNSBvZmZzZXQgMTQ1NiBpbiBkaXJl Y3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjE0NgoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNDU2Li4uCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1Ni4uLgplbnRyeSAiYWxzYS1zb3Vy Y2UubWQ1c3VtcyIgYXQgYmxvY2sgMjUgb2Zmc2V0IDE0ODggaW4gZGlyZWN0b3J5IGlub2RlIDQy OTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTIxNDcKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQ4OC4uLgplbnRyeSAibGlibGlyY19jbGllbnQu c28uMCIgYXQgYmxvY2sgNyBvZmZzZXQgMjg4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEzNTk4OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyODguLi4KZW50cnkgImxpYm1wM2xhbWUuc28uMC4wLjAiIGF0IGJs b2NrIDcgb2Zmc2V0IDMyMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDExMzU5OTAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzIwLi4uCmVudHJ5ICJqYXZhLWNvbW1vbi5wcmVybSIgYXQgYmxvY2sgMjUgb2Zmc2V0 IDE3NjggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTIxNzQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTc2 OC4uLgplbnRyeSAiamF2YS1jb21tb24ucG9zdGluc3QiIGF0IGJsb2NrIDI1IG9mZnNldCAxODAw IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDEyMTc2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4MDAuLi4K ZW50cnkgImxpYm1wM2xhbWUuc28uMCIgYXQgYmxvY2sgNyBvZmZzZXQgMzUyIGluIGRpcmVjdG9y eSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEzNTk5MQplbnRyeSAi amF2YS1jb21tb24ubWQ1c3VtcyIgYXQgYmxvY2sgMjUgb2Zmc2V0IDE4MzIgaW4gZGlyZWN0b3J5 IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTIxNzcKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTgzMi4uLgoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNTIuLi4KZW50cnkgImxpYm1vd2dsaTEucG9z dHJtIiBhdCBibG9jayAyNSBvZmZzZXQgMTg2NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTk3MDQ2CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4NjQuLi4KZW50cnkgImxpYm1wY2RlYy5zby4zLjEuMSIg YXQgYmxvY2sgNyBvZmZzZXQgMzg0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTEzNTk5MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzODQuLi4KZW50cnkgImxpYm1vd2dsaTEuc2hsaWJzIiBhdCBibG9jayAyNSBv ZmZzZXQgMjE0NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAyNTk3MDQ3CmVudHJ5ICJsaWJtcGNkZWMuc28uMyIgYXQgYmxvY2sgNyBvZmZz ZXQgNDE2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTEzNTk5OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MTYu Li4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjE0NC4uLgplbnRy eSAibGlib3BlbmFsLnNvLjEuNC4yNzIiIGF0IGJsb2NrIDcgb2Zmc2V0IDQ0OCBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMzU5OTkKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDQ4Li4uCmVudHJ5ICJzdW4tamF2 YTYtYmluLmNvbmZmaWxlcyIgYXQgYmxvY2sgMjUgb2Zmc2V0IDI2NzIgaW4gZGlyZWN0b3J5IGlu b2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA4MDE4CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI2NzIuLi4KZW50cnkgInN1bi1qYXZh Ni1iaW4ucHJlaW5zdCIgYXQgYmxvY2sgMjUgb2Zmc2V0IDI3MTIgaW4gZGlyZWN0b3J5IGlub2Rl IDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA4MDE5CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI3MTIuLi4KZW50cnkgImxpYm9wZW5hbC5z by4xIiBhdCBibG9jayA3IG9mZnNldCA0ODAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTM2MDAyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDQ4MC4uLgplbnRyeSAibGlicHVsc2Uuc28uMC40LjEiIGF0IGJsb2Nr IDcgb2Zmc2V0IDUxMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDExMzYwMDMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgNTEyLi4uCmVudHJ5ICJzdW4tamF2YTYtYmluLnBvc3RpbnN0IiBhdCBibG9jayAyNSBvZmZz ZXQgMjc0NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSA0MDgwMjAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg Mjc0NC4uLgplbnRyeSAic3VuLWphdmE2LWJpbi5wcmVybSIgYXQgYmxvY2sgMjUgb2Zmc2V0IDI3 ODQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNDA4MDIxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI3ODQu Li4KZW50cnkgImxpYnB1bHNlLXNpbXBsZS5zby4wLjAuMSIgYXQgYmxvY2sgNyBvZmZzZXQgNTQ0 IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEz NjAwNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1NDQuLi4KZW50 cnkgInN1bi1qYXZhNi1iaW4udGVtcGxhdGVzIiBhdCBibG9jayAyNSBvZmZzZXQgMjgxNiBpbiBk aXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MDgw MjIKZW50cnkgImxpYnB1bHNlLXNpbXBsZS5zby4wIiBhdCBibG9jayA3IG9mZnNldCA1ODQgaW4g ZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTM2MDA1 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDU4NC4uLgplbnRyeSAi bGliU0RMLTEuMi5zby4wLjExLjIiIGF0IGJsb2NrIDcgb2Zmc2V0IDYxNiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMzYwMTMKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjE2Li4uCmVudHJ5ICJsaWJTREwtMS4y LnNvLjAiIGF0IGJsb2NrIDcgb2Zmc2V0IDY0OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMzYwMTQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMjgxNi4uLgplbnRyeSAic3VuLWphdmE2LWJpbi5wb3N0cm0iIGF0 IGJsb2NrIDI1IG9mZnNldCAyODU2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwODAyMwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCA2NDguLi4KZW50cnkgImxpYnNwZWV4LnNvLjEuNS4wIiBhdCBibG9jayA3 IG9mZnNldCA2ODAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxMTM2MDE5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDY4MC4uLgplbnRyeSAibGlic3BlZXguc28uMSIgYXQgYmxvY2sgNyBvZmZzZXQgNzEyIGluIGRp cmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEzNjAyMAoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyODU2Li4uCmVudHJ5ICJz dW4tamF2YTYtYmluLm1kNXN1bXMiIGF0IGJsb2NrIDI1IG9mZnNldCAyODg4IGluIGRpcmVjdG9y eSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwODAyNAoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyODg4Li4uCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDcxMi4uLgplbnRyeSAibGlidGhlb3JhZGVj LnNvLjEuMC4wIiBhdCBibG9jayA3IG9mZnNldCA3MzYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTM2MDA3CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDczNi4uLgplbnRyeSAibGlidGhlb3JhLnNvLjAuMy4zIiBh dCBibG9jayA3IG9mZnNldCA3NjggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMTM2MDE3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDc2OC4uLgplbnRyeSAibGliY3VybDMucG9zdHJtIiBhdCBibG9jayAyNSBvZmZz ZXQgMzMwNCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAyNTAyNzk3CmVudHJ5ICJsaWJ0aGVvcmFlbmMuc28uMS4wLjAiIGF0IGJsb2NrIDcg b2Zmc2V0IDgwMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDExMzYwMjEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg ODAwLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMzMDQuLi4K ZW50cnkgImxpYnRoZW9yYWRlYy5zby4xIiBhdCBibG9jayA3IG9mZnNldCA4MzIgaW4gZGlyZWN0 b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTM2MDI4CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDgzMi4uLgplbnRyeSAibGlidGhl b3JhZW5jLnNvLjEiIGF0IGJsb2NrIDcgb2Zmc2V0IDg2NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMzYwMjkKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODY0Li4uCmVudHJ5ICJsaWJjdXJsMy5zaGxpYnMiIGF0 IGJsb2NrIDI1IG9mZnNldCAzNzUyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1MDI3OTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMzc1Mi4uLgplbnRyeSAibGlidGhlb3JhLnNvLjAiIGF0IGJsb2NrIDcg b2Zmc2V0IDg5NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDExMzYwMzAKZW50cnkgImxpYmN1cmwzLnBvc3RpbnN0IiBhdCBibG9jayAyNSBvZmZz ZXQgMzc4NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAyNTAyNzk2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDM3ODQuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODk2Li4u CmVudHJ5ICJsaWJ4MjY0LnNvLjYwIiBhdCBibG9jayA3IG9mZnNldCA5MjggaW4gZGlyZWN0b3J5 IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTM2MDMxCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDkyOC4uLgplbnRyeSAibGliY3VybDMu bWQ1c3VtcyIgYXQgYmxvY2sgMjUgb2Zmc2V0IDM4MTYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcx NjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUwMjc5OAoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzODE2Li4uCmVudHJ5ICJsaWJYc3Muc28uMS4wLjAi IGF0IGJsb2NrIDcgb2Zmc2V0IDk1MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDI0NzM4MjgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgOTUyLi4uCmVudHJ5ICJsaWJYc3Muc28uMSIgYXQgYmxvY2sgNyBvZmZzZXQg OTg0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MjQ3MzgyOQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5ODQuLi4K ZW50cnkgImxpYm1vd2dsaTEubWQ1c3VtcyIgYXQgYmxvY2sgMjUgb2Zmc2V0IDQwNDggaW4gZGly ZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjU5NzA0 MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MDQ4Li4uCmVudHJ5 ICJsaWJ4dmlkY29yZS5zby40LjEiIGF0IGJsb2NrIDcgb2Zmc2V0IDEwMDggaW4gZGlyZWN0b3J5 IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDczODMwCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwMDguLi4KZW50cnkgImxpYnh2aWRj b3JlLnNvLjQiIGF0IGJsb2NrIDcgb2Zmc2V0IDEwNDAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDczODMxCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwNDAuLi4KZW50cnkgImxpYlh2TUMuc28uMS4wLjAiIGF0 IGJsb2NrIDcgb2Zmc2V0IDEwNzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAyNDczODM2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDEwNzIuLi4KZW50cnkgImxpYlh2TUNXLnNvLjEuMC4wIiBhdCBibG9jayA3IG9m ZnNldCAxMTA0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjQ3MzgzNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAx MTA0Li4uCmVudHJ5ICJjYS1jZXJ0aWZpY2F0ZXMucG9zdHJtIiBhdCBibG9jayAyNiBvZmZzZXQg MzM2OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxMTI1ODc3CmVudHJ5ICJsaWJYdk1DLnNvLjEiIGF0IGJsb2NrIDcgb2Zmc2V0IDExMzYg aW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDcz ODM5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExMzYuLi4KCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzM2OC4uLgplbnRyeSAibGli WHZNQ1cuc28uMSIgYXQgYmxvY2sgNyBvZmZzZXQgMTE2MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0NzM4NDAKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTE2MC4uLgplbnRyeSAiY2EtY2VydGlmaWNhdGVzLmNv bmZpZyIgYXQgYmxvY2sgMjYgb2Zmc2V0IDM0MDggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEyNTg3OQplbnRyeSAibGliYW1ybmIuc28u My4wLjAiIGF0IGJsb2NrIDcgb2Zmc2V0IDExODQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDczODQxCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDExODQuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMzQwOC4uLgplbnRyeSAibGliYW1ybmIuc28uMyIgYXQgYmxvY2sgNyBvZmZz ZXQgMTIxNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDI0NzM4NDIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTIx Ni4uLgplbnRyeSAibGliYW1yd2Iuc28uMy4wLjAiIGF0IGJsb2NrIDcgb2Zmc2V0IDEyNDAgaW4g ZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDczODQz CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyNDAuLi4KZW50cnkg ImNhLWNlcnRpZmljYXRlcy50ZW1wbGF0ZXMiIGF0IGJsb2NrIDI2IG9mZnNldCAzNDQ4IGluIGRp cmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMjU4 ODAKZW50cnkgImxpYmFtcndiLnNvLjMiIGF0IGJsb2NrIDcgb2Zmc2V0IDEyNzIgaW4gZGlyZWN0 b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDczODUyCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyNzIuLi4KCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzQ0OC4uLgplbnRyeSAiY2EtY2VydGlmaWNh dGVzLm1kNXN1bXMiIGF0IGJsb2NrIDI2IG9mZnNldCAzNDg4IGluIGRpcmVjdG9yeSBpbm9kZSA0 Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMjU4ODEKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzQ4OC4uLgplbnRyeSAibGliR2FtbXUuc28u NS4xLjIyLjEiIGF0IGJsb2NrIDcgb2Zmc2V0IDEyOTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMzg4NTE1CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyOTYuLi4KZW50cnkgImNhLWNlcnRpZmljYXRlcy5wb3N0 aW5zdCIgYXQgYmxvY2sgMjYgb2Zmc2V0IDM1MjggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEyNTg4MgplbnRyeSAibGliR2FtbXUuc28u NSIgYXQgYmxvY2sgNyBvZmZzZXQgMTMyOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIzODg1MzgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMTMyOC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzNTI4Li4uCmVudHJ5ICJ4ZmNlNC13YXZlbGFuLXBsdWdpbiIgYXQgYmxvY2sgNyBv ZmZzZXQgMjE1MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDI1ODMzMzQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MjE1Mi4uLgplbnRyeSAibXBnMTIzLWFsc2EubWQ1c3VtcyIgYXQgYmxvY2sgMjYgb2Zmc2V0IDQw NjQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTEyODY3MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MDY0 Li4uCmVudHJ5ICJsaWJpY2FsLnNvLjAiIGF0IGJsb2NrIDcgb2Zmc2V0IDI1MjggaW4gZGlyZWN0 b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDYzMTM0CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1MjguLi4KZW50cnkgInVuemlw Lm1kNXN1bXMiIGF0IGJsb2NrIDI3IG9mZnNldCA5NiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2 MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTI4Njc0CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDk2Li4uCmVudHJ5ICJsaWJqYWNrMC5wb3N0aW5zdCIg YXQgYmxvY2sgMjcgb2Zmc2V0IDEyMCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTM1OTc1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDEyMC4uLgplbnRyeSAibGliUXRUZXN0LnNvLjQuNC4zIiBhdCBibG9j ayA3IG9mZnNldCAyNTUyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMjc3NjY4MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAyNTUyLi4uCmVudHJ5ICJsaWJzb3gxLnBvc3RpbnN0IiBhdCBibG9jayAyNyBvZmZzZXQg ODgwIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDI2NDg5ODUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODgw Li4uCmVudHJ5ICJsaWJzb3gxLm1kNXN1bXMiIGF0IGJsb2NrIDI3IG9mZnNldCA5MTIgaW4gZGly ZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjY0ODk4 NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5MTIuLi4KZW50cnkg ImxpYlF0VGVzdC5zby40LjQiIGF0IGJsb2NrIDcgb2Zmc2V0IDI1ODQgaW4gZGlyZWN0b3J5IGlu b2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODY0NjA1CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1ODQuLi4KZW50cnkgImxpYnNveDEuc2hs aWJzIiBhdCBibG9jayAyNyBvZmZzZXQgOTQ0IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI2NDg5ODgKZW50cnkgImxpYlF0VGVzdC5zby40 IiBhdCBibG9jayA3IG9mZnNldCAyNjE2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjg2NDYwNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAyNjE2Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDk0NC4uLgplbnRyeSAibGliUXRTdmcuc28uNC40LjMiIGF0IGJsb2NrIDcgb2Zmc2V0 IDI2NDggaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyODY0NjA3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI2NDgu Li4KZW50cnkgImxpYlF0U3ZnLnNvLjQuNCIgYXQgYmxvY2sgNyBvZmZzZXQgMjY4MCBpbiBkaXJl Y3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NjQ3NzAKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjY4MC4uLgplbnRyeSAibGli c294MS5wb3N0cm0iIGF0IGJsb2NrIDI3IG9mZnNldCA5NzYgaW4gZGlyZWN0b3J5IGlub2RlIDQy OTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjY0ODk4OQplbnRyeSAibGliUXRT dmcuc28uNCIgYXQgYmxvY2sgNyBvZmZzZXQgMjcxMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NjQ3NzEKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMjcxMi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCA5NzYuLi4KZW50cnkgImxpYlF0T3BlbkdMLnNvLjQuNC4zIiBhdCBibG9j ayA3IG9mZnNldCAyNzM2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMjg2NDc3MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAyNzM2Li4uCmVudHJ5ICJsaWJqYWNrMC5zaGxpYnMiIGF0IGJsb2NrIDI3IG9mZnNldCAx MTIwIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDExMzU5NzQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTEy MC4uLgplbnRyeSAibGliUXRPcGVuR0wuc28uNC40IiBhdCBibG9jayA3IG9mZnNldCAyNzY4IGlu IGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg2NDc3 MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNzY4Li4uCmVudHJ5 ICJsaWJjZHBhcmFub2lhMC5wb3N0aW5zdCIgYXQgYmxvY2sgMjcgb2Zmc2V0IDE5NjggaW4gZGly ZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEyNDkw OAplbnRyeSAibGliUXRPcGVuR0wuc28uNCIgYXQgYmxvY2sgNyBvZmZzZXQgMjgwMCBpbiBkaXJl Y3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NjQ3NzQKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjgwMC4uLgoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxOTY4Li4uCmVudHJ5ICJsaWJRdEFzc2lz dGFudENsaWVudC5zby40IiBhdCBibG9jayA3IG9mZnNldCAyODgwIGluIGRpcmVjdG9yeSBpbm9k ZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE1NTc0OQplbnRyeSAibGliY2Rw YXJhbm9pYTAuc2hsaWJzIiBhdCBibG9jayAyNyBvZmZzZXQgMjAwOCBpbiBkaXJlY3RvcnkgaW5v ZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTI0OTA5CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwMDguLi4KCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjg4MC4uLgplbnRyeSAibGliY2RwYXJhbm9pYTAu cG9zdHJtIiBhdCBibG9jayAyNyBvZmZzZXQgMjA0MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2 MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTI0OTExCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwNDAuLi4KZW50cnkgImxpYmNkcGFyYW5vaWEwLm1k NXN1bXMiIGF0IGJsb2NrIDI3IG9mZnNldCAyMDcyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYw IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMjQ5MTIKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjA3Mi4uLgplbnRyeSAibGliUXRBc3Npc3RhbnRDbGll bnQuc28uNC40IiBhdCBibG9jayA3IG9mZnNldCAyOTY4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE1NTc1MAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAyOTY4Li4uCmVudHJ5ICJsaWJzZW5zb3JzLnNvLjQuMC4y IiBhdCBibG9jayA3IG9mZnNldCAzMDQ4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjM2NDQ3NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzMDQ4Li4uCmVudHJ5ICJsaWJqYWNrMC5wb3N0cm0iIGF0IGJsb2NrIDI3 IG9mZnNldCAyMTEyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDExMzU5NzYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMjExMi4uLgplbnRyeSAibGliamFjazAubWQ1c3VtcyIgYXQgYmxvY2sgMjcgb2Zmc2V0 IDIxNzYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTEzNTk3OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAy MTc2Li4uCmVudHJ5ICJsaWJzZW5zb3JzLnNvLjQiIGF0IGJsb2NrIDcgb2Zmc2V0IDMxMjAgaW4g ZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMzY0NDc2 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMxMjAuLi4KZW50cnkg ImxpYnRhZy5zby4xLjUuMCIgYXQgYmxvY2sgNyBvZmZzZXQgMzE5MiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIzNjQ0NzcKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzE5Mi4uLgplbnRyeSAibGlidGFnLnNvLjEi IGF0IGJsb2NrIDcgb2Zmc2V0IDMyNTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAyMzY0NDc4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDMyNTYuLi4KZW50cnkgImxpYmdpaTEtdGFyZ2V0LXgubWQ1c3VtcyIgYXQg YmxvY2sgMjcgb2Zmc2V0IDQwMTYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjUwNzAzNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCA0MDE2Li4uCmVudHJ5ICJsaWJ0YWdfYy5zby4wLjAuMCIgYXQgYmxvY2sg NyBvZmZzZXQgMzI4MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDI1ODMyMzcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMzI4MC4uLgplbnRyeSAibGlidGFnX2Muc28uMCIgYXQgYmxvY2sgNyBvZmZzZXQgMzMxMiBp biBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1ODMy MzgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzMxMi4uLgplbnRy eSAibGlic2RsMS4yZGViaWFuLWFsc2Euc2hsaWJzIiBhdCBibG9jayAyOCBvZmZzZXQgODQ4IGlu IGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEx MzYwMDgKZW50cnkgInhmY2U0LWZzZ3VhcmQtcGx1Z2luIiBhdCBibG9jayA3IG9mZnNldCAzNDE2 IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjU4 MzI3NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNDE2Li4uCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDg0OC4uLgplbnRyeSAieGZj ZTQtd2VhdGhlci1wbHVnaW4iIGF0IGJsb2NrIDcgb2Zmc2V0IDM2NTYgaW4gZGlyZWN0b3J5IGlu b2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTgzMzM5CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM2NTYuLi4KZW50cnkgImxpYm9wZW5vYmV4 LnNvLjEuMy4wIiBhdCBibG9jayA3IG9mZnNldCA0MDI0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg2NDc0MwoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MDI0Li4uCmVudHJ5ICJsaWJzZGwxLjJkZWJpYW4tYWxz YS5wb3N0aW5zdCIgYXQgYmxvY2sgMjggb2Zmc2V0IDg4OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5 NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTM2MDA5CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDg4OC4uLgplbnRyeSAibGlib3Blbm9iZXguc28u MSIgYXQgYmxvY2sgOCBvZmZzZXQgNTA0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjg2NDc0NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCA1MDQuLi4KZW50cnkgImxpYnNkbDEuMmRlYmlhbi1hbHNhLnBvc3RybSIg YXQgYmxvY2sgMjggb2Zmc2V0IDkyOCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTM2MDEwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDkyOC4uLgplbnRyeSAibGlic2RsMS4yZGViaWFuLWFsc2EubWQ1c3Vt cyIgYXQgYmxvY2sgMjggb2Zmc2V0IDk2OCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTM2MDEyCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDk2OC4uLgplbnRyeSAibGlicG9wcGxlci1nbGliLnNvLjMuMC4w IiBhdCBibG9jayA4IG9mZnNldCA1ODQgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAyNTQ0MjE0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDU4NC4uLgplbnRyeSAibGlic3BlZXgxLnNobGlicyIgYXQgYmxvY2sgMjgg b2Zmc2V0IDExODQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTEzNjAxMQplbnRyeSAibGlicG9wcGxlci1nbGliLnNvLjMiIGF0IGJsb2Nr IDggb2Zmc2V0IDY2NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDI4NjQ1OTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgNjY0Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExODQu Li4KZW50cnkgImxpYnNwZWN0cmUuc28uMS4xLjIiIGF0IGJsb2NrIDggb2Zmc2V0IDczNiBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NjQ1OTQK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNzM2Li4uCmVudHJ5ICJs aWJzcGVjdHJlLnNvLjEiIGF0IGJsb2NrIDggb2Zmc2V0IDgwOCBpbiBkaXJlY3RvcnkgaW5vZGUg MTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NjQ1OTUKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODA4Li4uCmVudHJ5ICJsaWJzcGVleDEucG9zdGlu c3QiIGF0IGJsb2NrIDI4IG9mZnNldCAxMjE2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMzYwMTUKZW50cnkgImxpYmV2YmFja2VuZC5z by4wLjAuMCIgYXQgYmxvY2sgOCBvZmZzZXQgODg4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg2NDU5NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCA4ODguLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTIxNi4uLgplbnRyeSAibGlic3BlZXgxLnBvc3RybSIgYXQgYmxvY2sgMjgg b2Zmc2V0IDEyNDggaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTEzNjAxNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAxMjQ4Li4uCmVudHJ5ICJsaWJldmJhY2tlbmQuc28uMCIgYXQgYmxvY2sgOCBvZmZzZXQg OTYwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MjA2MzEwNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5NjAuLi4K ZW50cnkgImxpYmljYWwuc28uMC4zMy4wIiBhdCBibG9jayA4IG9mZnNldCAxMDMyIGluIGRpcmVj dG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTEyOTIyCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwMzIuLi4KZW50cnkgImxpYnNw ZWV4MS5tZDVzdW1zIiBhdCBibG9jayAyOCBvZmZzZXQgMTI4MCBpbiBkaXJlY3RvcnkgaW5vZGUg NDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTM2MDE4CmVudHJ5ICJsaWJp Y2Fsc3Muc28uMC4zMi4wIiBhdCBibG9jayA4IG9mZnNldCAxMTA0IGluIGRpcmVjdG9yeSBpbm9k ZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA2MzEzMAoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMTA0Li4uCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyODAuLi4KZW50cnkgImxpYmljYWx2Y2FsLnNvLjAuMzIu MCIgYXQgYmxvY2sgOCBvZmZzZXQgMTE4NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNjMxMzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMTE4NC4uLgplbnRyeSAibGlidGFnYzAuc3ltYm9scyIgYXQgYmxvY2sg Mjggb2Zmc2V0IDIyNjQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjU4MzIzMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAyMjY0Li4uCmVudHJ5ICJsaWJpY2FsdmNhbC5zby4wIiBhdCBibG9jayA4IG9mZnNl dCAxMjU2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMjA2MzEzMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMjU2 Li4uCmVudHJ5ICJsaWJ0YWdjMC5zaGxpYnMiIGF0IGJsb2NrIDI4IG9mZnNldCAyODY0IGluIGRp cmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MzQ3 MTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjg2NC4uLgplbnRy eSAibGliaWNhbHNzLnNvLjAiIGF0IGJsb2NrIDggb2Zmc2V0IDEzMjggaW4gZGlyZWN0b3J5IGlu b2RlIDE0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDYzMTMzCmVudHJ5ICJsaWJn YW1tdS1pMThuLm1kNXN1bXMiIGF0IGJsb2NrIDI4IG9mZnNldCAzMjE2IGluIGRpcmVjdG9yeSBp bm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIzODg1NDIKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIxNi4uLgoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzI4Li4uCmVudHJ5ICJsaWJnbm9raWkuc28u My45LjAiIGF0IGJsb2NrIDggb2Zmc2V0IDE0MDAgaW4gZGlyZWN0b3J5IGlub2RlIDE0OSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODY0NjAwCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDE0MDAuLi4KZW50cnkgImxpYmdub2tpaS5zby4zIiBhdCBibG9j ayA4IG9mZnNldCAxNDcyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMjg2NDYwMQplbnRyeSAibGlidGFnYzAucG9zdGluc3QiIGF0IGJsb2NrIDI4 IG9mZnNldCAzMjQ4IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDI1ODMyMzMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzI0OC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAx NDcyLi4uCmVudHJ5ICJsaWJkaWFsb2cuYSIgYXQgYmxvY2sgOCBvZmZzZXQgMTUzNiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNjE4NjEKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTUzNi4uLgplbnRyeSAibGli dGFnYzAucG9zdHJtIiBhdCBibG9jayAyOCBvZmZzZXQgMzk2MCBpbiBkaXJlY3RvcnkgaW5vZGUg NDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTgzMjM0CmVudHJ5ICJsaWJj dXJsLWdudXRscy5zby40LjEuMCIgYXQgYmxvY2sgOCBvZmZzZXQgMTYwOCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNTcwOTIKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTYwOC4uLgoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzOTYwLi4uCmVudHJ5ICJsaWJjdXJsLWdudXRscy5z by40IiBhdCBibG9jayA4IG9mZnNldCAxNjg4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA1NzYzMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAxNjg4Li4uCmVudHJ5ICJsaWJxdDQtYXNzaXN0YW50LnBvc3RpbnN0 IiBhdCBibG9jayAyOSBvZmZzZXQgNTYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE1NTc0NgplbnRyeSAibGliY3VybC1nbnV0bHMuc28u MyIgYXQgYmxvY2sgOCBvZmZzZXQgMTc2MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNjE4NTYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMTc2MC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCA1Ni4uLgplbnRyeSAibGlicHEuc28uNS4xIiBhdCBibG9jayA4IG9mZnNldCAxODI0 IGluIGRpcmVjdG9yeSBpbm9kZSAxNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA2 MTg2NQplbnRyeSAibGlicXQ0LWFzc2lzdGFudC5tZDVzdW1zIiBhdCBibG9jayAyOSBvZmZzZXQg MjE2IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDI4NjQ3NzcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjE2 Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4MjQuLi4KZW50 cnkgImxpYnF0NC1hc3Npc3RhbnQucG9zdHJtIiBhdCBibG9jayAyOSBvZmZzZXQgMjU2IGluIGRp cmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExNTU3 NDcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjU2Li4uCmVudHJ5 ICJsaWJxdDQtYXNzaXN0YW50LnNobGlicyIgYXQgYmxvY2sgMjkgb2Zmc2V0IDQwOCBpbiBkaXJl Y3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTU1NzQ0 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQwOC4uLgplbnRyeSAi bGlicHEuc28uNSIgYXQgYmxvY2sgOCBvZmZzZXQgMTg4MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNjE4ODMKZW50cnkgImxpYnBxNS5zaGxp YnMiIGF0IGJsb2NrIDI5IG9mZnNldCA1NjAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA2MTg1OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCA1NjAuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTg4MC4uLgplbnRyeSAibGlidGFnYzAubWQ1c3VtcyIgYXQgYmxvY2sgMjkg b2Zmc2V0IDk1MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAyNTgzMjM2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDk1Mi4uLgplbnRyeSAiZGlhbG9nLm1kNXN1bXMiIGF0IGJsb2NrIDI5IG9mZnNldCA5OTIg aW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg Mjg2NDYwNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5OTIuLi4K ZW50cnkgImxpYnBxNS5wb3N0aW5zdCIgYXQgYmxvY2sgMjkgb2Zmc2V0IDI4MTYgaW4gZGlyZWN0 b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA2MTg1OAoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyODE2Li4uCmVudHJ5ICJ2 bWxpbnV6LTIuNi4yNi0xLTY4NiIgYXQgYmxvY2sgMCBvZmZzZXQgODggaW4gZGlyZWN0b3J5IGlu b2RlIDE1MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjgzNDIKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODguLi4KZW50cnkgImxpYnNwZWN0cmUxLm1k NXN1bXMiIGF0IGJsb2NrIDI5IG9mZnNldCAyODgwIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYw IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NjQ3NDgKZW50cnkgIlN5c3RlbS5tYXAt Mi42LjI2LTEtNjg2IiBhdCBibG9jayAwIG9mZnNldCAxNjggaW4gZGlyZWN0b3J5IGlub2RlIDE1 MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjgzNDMKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTY4Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDI4ODAuLi4KZW50cnkgImNvbmZpZy0yLjYuMjYtMS02ODYiIGF0IGJs b2NrIDAgb2Zmc2V0IDI0OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTUwIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDMyODM0NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAyNDguLi4KZW50cnkgImluaXRyZC5pbWctMi42LjI2LTEtNjg2LmJhayIgYXQgYmxvY2sg MCBvZmZzZXQgNTA0IGluIGRpcmVjdG9yeSBpbm9kZSAxNTAgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgNDA5ODUyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDUwNC4uLgplbnRyeSAibGlic3BlY3RyZTEuc2hsaWJzIiBhdCBibG9jayAyOSBvZmZzZXQgMjkx MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyODY0NzQ5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI5MTIu Li4KZW50cnkgImxpYnNwZWN0cmUxLnBvc3RpbnN0IiBhdCBibG9jayAyOSBvZmZzZXQgMjk0NCBp biBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAy ODY0NzUxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI5NDQuLi4K ZW50cnkgImluaXRyZC5pbWctMi42LjI2LTEtNjg2IiBhdCBibG9jayAwIG9mZnNldCAxMjgwIGlu IGRpcmVjdG9yeSBpbm9kZSAxNTAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUwNTcy CmVudHJ5ICJsaWJzcGVjdHJlMS5wb3N0cm0iIGF0IGJsb2NrIDI5IG9mZnNldCAyOTc2IGluIGRp cmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NjQ3 NTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjk3Ni4uLgoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMjgwLi4uCmVudHJ5ICJsaWJw cTUubWQ1c3VtcyIgYXQgYmxvY2sgMjkgb2Zmc2V0IDMwMDggaW4gZGlyZWN0b3J5IGlub2RlIDQy OTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA2MTg2MgoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDA4Li4uCmVudHJ5ICJjb25maWctMi42LjI2 LWVlZSIgYXQgYmxvY2sgMCBvZmZzZXQgMTM2MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTUwIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyMTU3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDEzNjAuLi4KZW50cnkgImxpYnBxNS5wb3N0cm0iIGF0IGJsb2NrIDI5 IG9mZnNldCAzMjAwIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDIwNjE4NjQKZW50cnkgIlN5c3RlbS5tYXAtMi42LjI2LWVlZSIgYXQgYmxv Y2sgMCBvZmZzZXQgMTQ0MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTUwIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDE1NTcyOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAxNDQwLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMy MDAuLi4KZW50cnkgInZtbGludXotMi42LjI2LWVlZSIgYXQgYmxvY2sgMCBvZmZzZXQgMTUxMiBp biBkaXJlY3RvcnkgaW5vZGUgMTUwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1NTcz MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTEyLi4uCmVudHJ5 ICJpbml0cmQuaW1nLTIuNi4yNi1lZWUiIGF0IGJsb2NrIDAgb2Zmc2V0IDE3MDQgaW4gZGlyZWN0 b3J5IGlub2RlIDE1MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDk3NTczCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3MDQuLi4KZW50cnkgInRodW5h ci1tZWRpYS10YWdzLXBsdWdpbi5zaGxpYnMiIGF0IGJsb2NrIDMwIG9mZnNldCA0MjQgaW4gZGly ZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjU4MzI1 MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MjQuLi4KZW50cnkg ImluaXRyZC5pbWctMi42LjI2LWVlZS5iYWsiIGF0IGJsb2NrIDAgb2Zmc2V0IDE3MzYgaW4gZGly ZWN0b3J5IGlub2RlIDE1MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDMyMjYKZW50 cnkgInRodW5hci1tZWRpYS10YWdzLXBsdWdpbi5tZDVzdW1zIiBhdCBibG9jayAzMCBvZmZzZXQg NDcyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDI1ODMyNTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDcy Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3MzYuLi4KZW50 cnkgInhmY2U0LWJhdHRlcnktcGx1Z2luLm1kNXN1bXMiIGF0IGJsb2NrIDMwIG9mZnNldCA2MDAg aW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MjU4MzI1OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2MDAuLi4K ZW50cnkgImNvbmZpZy0yLjYuMjYtZWVlLWNvcmUyIiBhdCBibG9jayAwIG9mZnNldCAxODI0IGlu IGRpcmVjdG9yeSBpbm9kZSAxNTAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA1NzEy NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODI0Li4uCmVudHJ5 ICJ4ZmNlNC1jcHVncmFwaC1wbHVnaW4ubWQ1c3VtcyIgYXQgYmxvY2sgMzAgb2Zmc2V0IDk2OCBp biBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAy NTgzMjY3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDk2OC4uLgpl bnRyeSAiU3lzdGVtLm1hcC0yLjYuMjYtZWVlLWNvcmUyIiBhdCBibG9jayAwIG9mZnNldCAxOTEy IGluIGRpcmVjdG9yeSBpbm9kZSAxNTAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA5 NzU3MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxOTEyLi4uCmVu dHJ5ICJ4ZmNlNC1tYWlsd2F0Y2gtcGx1Z2luLm1kNXN1bXMiIGF0IGJsb2NrIDMwIG9mZnNldCAx NDY0IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDI1ODMyODYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQ2 NC4uLgplbnRyeSAidm1saW51ei0yLjYuMjYtZWVlLWNvcmUyIiBhdCBibG9jayAwIG9mZnNldCAy MDAwIGluIGRpcmVjdG9yeSBpbm9kZSAxNTAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MjM2MjIwNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMDAwLi4u CmVudHJ5ICJpbml0cmQuaW1nLTIuNi4yNi1lZWUtY29yZTIiIGF0IGJsb2NrIDAgb2Zmc2V0IDIw ODggaW4gZGlyZWN0b3J5IGlub2RlIDE1MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAy NDMxODE5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwODguLi4K ZW50cnkgInhmY2U0LW5ldGxvYWQtcGx1Z2luLm1kNXN1bXMiIGF0IGJsb2NrIDMwIG9mZnNldCAx ODMyIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3MTYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDI1ODMzMDIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTgz Mi4uLgplbnRyeSAieGZjZTQtc2NyZWVuc2hvb3Rlci1wbHVnaW4ubWQ1c3VtcyIgYXQgYmxvY2sg MzAgb2Zmc2V0IDIyMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTcxNjAgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjU4MzMxMAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAyMjMyLi4uCmVudHJ5ICJ4ZmNlNC1zeXN0ZW1sb2FkLXBsdWdpbi5tZDVzdW1zIiBh dCBibG9jayAzMCBvZmZzZXQgMjYzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTgzMzI1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDI2MzIuLi4KZW50cnkgImxpYmUycC5zby4yLjMiIGF0IGJsb2NrIDAg b2Zmc2V0IDQ4IGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTAyNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0OC4u LgplbnRyeSAibGliZXh0MmZzLnNvLjIuNCIgYXQgYmxvY2sgMCBvZmZzZXQgNzIgaW4gZGlyZWN0 b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMDI2CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDcyLi4uCmVudHJ5ICJsaWJlMnAuc28u MiIgYXQgYmxvY2sgMCBvZmZzZXQgMTA0IGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTAyNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAxMDQuLi4KZW50cnkgImxpYmV4dDJmcy5zby4yIiBhdCBibG9jayAwIG9mZnNl dCAxMjggaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA0NjEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTI4Li4uCmVu dHJ5ICJsaWJhY2wuc28uMS4xLjAiIGF0IGJsb2NrIDAgb2Zmc2V0IDE3NiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDUwMgoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNzYuLi4KZW50cnkgImxpYmFjbC5zby4xIiBh dCBibG9jayAwIG9mZnNldCAyMDggaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSA1MDgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMjA4Li4uCmVudHJ5ICJsaWJhdHRyLnNvLjEuMS4wIiBhdCBibG9jayAwIG9mZnNldCAy MzIgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1 NTAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjMyLi4uCmVudHJ5 ICJsaWJhdHRyLnNvLjEiIGF0IGJsb2NrIDAgb2Zmc2V0IDI2NCBpbiBkaXJlY3RvcnkgaW5vZGUg MTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU1MQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjQuLi4KZW50cnkgImxpYmJsa2lkLnNvLjEuMCIgYXQg YmxvY2sgMCBvZmZzZXQgMjg4IGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgNTA5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDI4OC4uLgplbnRyeSAibGliYmxraWQuc28uMSIgYXQgYmxvY2sgMCBvZmZzZXQgMzIwIGlu IGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTQ4Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyMC4uLgplbnRyeSAibGQt Mi43LnNvIiBhdCBibG9jayAwIG9mZnNldCAzNDQgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NjAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMzQ0Li4uCmVudHJ5ICJsaWJhbmwtMi43LnNvIiBhdCBibG9jayAwIG9m ZnNldCAzNjggaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSA1NjEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzY4Li4u CmVudHJ5ICJsaWJCcm9rZW5Mb2NhbGUtMi43LnNvIiBhdCBibG9jayAwIG9mZnNldCAzOTIgaW4g ZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NjIKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzkyLi4uCmVudHJ5ICJsaWJj LTIuNy5zbyIgYXQgYmxvY2sgMCBvZmZzZXQgNDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNzU0NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCA0MzIuLi4KZW50cnkgImxpYmNpZG4tMi43LnNvIiBhdCBibG9jayAw IG9mZnNldCA0NTYgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSA3NTQ1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ1 Ni4uLgplbnRyeSAibGliY3J5cHQtMi43LnNvIiBhdCBibG9jayAwIG9mZnNldCA0ODggaW4gZGly ZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA3NTQ2CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ4OC4uLgplbnRyeSAibGliZGwt Mi43LnNvIiBhdCBibG9jayAwIG9mZnNldCA1MjAgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA3NTQ4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDUyMC4uLgplbnRyeSAibGlibS0yLjcuc28iIGF0IGJsb2NrIDAgb2Zm c2V0IDU0NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDc1NDkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTQ0Li4u CmVudHJ5ICJsaWJtZW11c2FnZS5zbyIgYXQgYmxvY2sgMCBvZmZzZXQgNTY4IGluIGRpcmVjdG9y eSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNzU1MAoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1NjguLi4KZW50cnkgImxpYm5zbC0yLjcu c28iIGF0IGJsb2NrIDAgb2Zmc2V0IDYwMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDc1NTEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgNjAwLi4uCmVudHJ5ICJsaWJuc3NfY29tcGF0LTIuNy5zbyIgYXQgYmxvY2sg MCBvZmZzZXQgNjI0IGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgNzU1MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2 MjQuLi4KZW50cnkgImxpYm5zc19kbnMtMi43LnNvIiBhdCBibG9jayAwIG9mZnNldCA2NTYgaW4g ZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA3NTUzCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDY1Ni4uLgplbnRyeSAibGli bnNzX2ZpbGVzLTIuNy5zbyIgYXQgYmxvY2sgMCBvZmZzZXQgNjg4IGluIGRpcmVjdG9yeSBpbm9k ZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTc2NjkKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjg4Li4uCmVudHJ5ICJsaWJuc3NfaGVzaW9kLTIu Ny5zbyIgYXQgYmxvY2sgMCBvZmZzZXQgNzIwIGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTc2NzAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgNzIwLi4uCmVudHJ5ICJsaWJuc3NfbmlzLTIuNy5zbyIgYXQgYmxvY2sg MCBvZmZzZXQgNzUyIGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgNTc2NzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg NzUyLi4uCmVudHJ5ICJsaWJuc3NfbmlzcGx1cy0yLjcuc28iIGF0IGJsb2NrIDAgb2Zmc2V0IDc4 NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3 NjcyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDc4NC4uLgplbnRy eSAibGlicGNwcm9maWxlLnNvIiBhdCBibG9jayAwIG9mZnNldCA4MTYgaW4gZGlyZWN0b3J5IGlu b2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzY3MwoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4MTYuLi4KZW50cnkgImxpYnB0aHJlYWQtMi43 LnNvIiBhdCBibG9jayAwIG9mZnNldCA4NDggaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzY3NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCA4NDguLi4KZW50cnkgImxpYnJlc29sdi0yLjcuc28iIGF0IGJsb2NrIDAg b2Zmc2V0IDg4MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDU3Njc1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDg4 MC4uLgplbnRyeSAibGlicnQtMi43LnNvIiBhdCBibG9jayAwIG9mZnNldCA5MTIgaW4gZGlyZWN0 b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzY3NgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5MTIuLi4KZW50cnkgImxpYlNlZ0Zh dWx0LnNvIiBhdCBibG9jayAwIG9mZnNldCA5MzYgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzY3NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCA5MzYuLi4KZW50cnkgImxpYnRocmVhZF9kYi0xLjAuc28iIGF0IGJs b2NrIDAgb2Zmc2V0IDk2OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDU3Njc4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDk2OC4uLgplbnRyeSAibGlidXRpbC0yLjcuc28iIGF0IGJsb2NrIDAgb2Zmc2V0IDEwMDAg aW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzY4 MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMDAwLi4uCmVudHJ5 ICJsaWJ1dGlsLnNvLjEiIGF0IGJsb2NrIDAgb2Zmc2V0IDEwNjQgaW4gZGlyZWN0b3J5IGlub2Rl IDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTA2MQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMDY0Li4uCmVudHJ5ICJsaWJ0aHJlYWRfZGIuc28u MSIgYXQgYmxvY2sgMCBvZmZzZXQgMTA4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEwNjQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTA4OC4uLgplbnRyeSAibGlicnQuc28uMSIgYXQgYmxvY2sgMCBvZmZzZXQg MTEyMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDY0MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMTIwLi4uCmVu dHJ5ICJsaWJyZXNvbHYuc28uMiIgYXQgYmxvY2sgMCBvZmZzZXQgMTE0NCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDY0NAoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMTQ0Li4uCmVudHJ5ICJsaWJwdGhyZWFkLnNv LjAiIGF0IGJsb2NrIDAgb2Zmc2V0IDExNzYgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NDUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTE3Ni4uLgplbnRyeSAibGlibnNzX25pc3BsdXMuc28uMiIgYXQgYmxvY2sg MCBvZmZzZXQgMTIwOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDY0NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAx MjA4Li4uCmVudHJ5ICJsaWJuc3NfbmlzLnNvLjIiIGF0IGJsb2NrIDAgb2Zmc2V0IDEyNDAgaW4g ZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NDcKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTI0MC4uLgplbnRyeSAibGli bnNzX2hlc2lvZC5zby4yIiBhdCBibG9jayAwIG9mZnNldCAxMjcyIGluIGRpcmVjdG9yeSBpbm9k ZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjQ4CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyNzIuLi4KZW50cnkgImxpYm5zc19maWxlcy5zby4y IiBhdCBibG9jayAwIG9mZnNldCAxMzA0IGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgNjQ5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDEzMDQuLi4KZW50cnkgImxpYm5zc19kbnMuc28uMiIgYXQgYmxvY2sgMCBvZmZz ZXQgMTMzNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDY1MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzM2Li4u CmVudHJ5ICJsaWJuc3NfY29tcGF0LnNvLjIiIGF0IGJsb2NrIDAgb2Zmc2V0IDEzNjggaW4gZGly ZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NTEKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTM2OC4uLgplbnRyeSAibGlibnNs LnNvLjEiIGF0IGJsb2NrIDAgb2Zmc2V0IDE0MDAgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMTQwMC4uLgplbnRyeSAibGlibS5zby42IiBhdCBibG9jayAwIG9mZnNl dCAxNDI0IGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNjUzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE0MjQuLi4K ZW50cnkgImxpYmRsLnNvLjIiIGF0IGJsb2NrIDAgb2Zmc2V0IDE0NDggaW4gZGlyZWN0b3J5IGlu b2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NTQKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQ0OC4uLgplbnRyeSAibGliY3J5cHQuc28uMSIg YXQgYmxvY2sgMCBvZmZzZXQgMTQ3MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDY1NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAxNDcyLi4uCmVudHJ5ICJsaWJjaWRuLnNvLjEiIGF0IGJsb2NrIDAgb2Zmc2V0IDE0 OTYgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2 NTYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQ5Ni4uLgplbnRy eSAibGliYy5zby42IiBhdCBibG9jayAwIG9mZnNldCAxNTIwIGluIGRpcmVjdG9yeSBpbm9kZSAx NTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjU3CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE1MjAuLi4KZW50cnkgImxpYkJyb2tlbkxvY2FsZS5zby4x IiBhdCBibG9jayAwIG9mZnNldCAxNTQ0IGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgNjU4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDE1NDQuLi4KZW50cnkgImxpYmFubC5zby4xIiBhdCBibG9jayAwIG9mZnNldCAx NTc2IGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg NjU5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE1NzYuLi4KZW50 cnkgImxkLWxpbnV4LnNvLjIiIGF0IGJsb2NrIDAgb2Zmc2V0IDE2MDAgaW4gZGlyZWN0b3J5IGlu b2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NjAKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTYwMC4uLgplbnRyeSAibGliY29tX2Vyci5zby4y LjEiIGF0IGJsb2NrIDAgb2Zmc2V0IDE2MjQgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTYyNC4uLgplbnRyeSAibGliY29tX2Vyci5zby4yIiBhdCBibG9jayAwIG9m ZnNldCAxNjU2IGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgNDI0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2NTYu Li4KZW50cnkgImxpYmRldm1hcHBlci5zby4xLjAyLjEiIGF0IGJsb2NrIDAgb2Zmc2V0IDE2ODgg aW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjcK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTY4OC4uLgplbnRyeSAi bGliZ2NjX3Muc28uMSIgYXQgYmxvY2sgMCBvZmZzZXQgMTcyOCBpbiBkaXJlY3RvcnkgaW5vZGUg MTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyOAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNzI4Li4uCmVudHJ5ICJsaWJ0aWMuc28uNS43IiBhdCBi bG9jayAwIG9mZnNldCAxNzUyIGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgNDI5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDE3NTIuLi4KZW50cnkgImxpYm5jdXJzZXMuc28uNS43IiBhdCBibG9jayAwIG9mZnNldCAx Nzc2IGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg NDMwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3NzYuLi4KZW50 cnkgImxpYm5jdXJzZXMuc28uNSIgYXQgYmxvY2sgMCBvZmZzZXQgMTgwOCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQzOAoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODA4Li4uCmVudHJ5ICJsaWJ0aWMuc28uNSIg YXQgYmxvY2sgMCBvZmZzZXQgMTg0MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDQ0MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAxODQwLi4uCmVudHJ5ICJsaWJwYW0uc28uMC44MS4xMiIgYXQgYmxvY2sgMCBvZmZz ZXQgMTg4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDY5NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODg4Li4u CmVudHJ5ICJsaWJwYW1fbWlzYy5zby4wLjgxLjMiIGF0IGJsb2NrIDAgb2Zmc2V0IDE5MjAgaW4g ZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2OTkKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTkyMC4uLgplbnRyeSAibGli cGFtYy5zby4wLjgxLjAiIGF0IGJsb2NrIDAgb2Zmc2V0IDE5NTIgaW4gZGlyZWN0b3J5IGlub2Rl IDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA3MDEKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTk1Mi4uLgplbnRyeSAibGlicGFtYy5zby4wIiBhdCBi bG9jayAwIG9mZnNldCAxOTg0IGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgNzAyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDE5ODQuLi4KZW50cnkgImxpYnBhbV9taXNjLnNvLjAiIGF0IGJsb2NrIDAgb2Zmc2V0IDIw MDggaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA3 MzgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjAwOC4uLgplbnRy eSAibGlicGFtLnNvLjAiIGF0IGJsb2NrIDAgb2Zmc2V0IDIwNDAgaW4gZGlyZWN0b3J5IGlub2Rl IDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA3NDIKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjA0MC4uLgplbnRyeSAibGlic2VsaW51eC5zby4xIiBh dCBibG9jayAwIG9mZnNldCAyMDY0IGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgNzM2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDIwNjQuLi4KZW50cnkgImxpYnNlcG9sLnNvLjEiIGF0IGJsb2NrIDAgb2Zmc2V0IDIw OTYgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA3 NDUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjA5Ni4uLgplbnRy eSAibGlic2xhbmcuc28uMi4xLjMiIGF0IGJsb2NrIDAgb2Zmc2V0IDIxMjAgaW4gZGlyZWN0b3J5 IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA3NDYKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjEyMC4uLgplbnRyeSAibGlic2xhbmcuc28u MiIgYXQgYmxvY2sgMCBvZmZzZXQgMjE1MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDc0NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAyMTUyLi4uCmVudHJ5ICJsaWJzcy5zby4yLjAiIGF0IGJsb2NrIDAgb2Zmc2V0 IDIxNzYgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA3NDgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjE3Ni4uLgpl bnRyeSAibGlic3Muc28uMiIgYXQgYmxvY2sgMCBvZmZzZXQgMjIwMCBpbiBkaXJlY3RvcnkgaW5v ZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDc0OQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMjAwLi4uCmVudHJ5ICJsaWJ1dWlkLnNvLjEuMiIg YXQgYmxvY2sgMCBvZmZzZXQgMjIyNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDc1NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAyMjI0Li4uCmVudHJ5ICJsaWJ1dWlkLnNvLjEiIGF0IGJsb2NrIDAgb2Zmc2V0IDIy NTYgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA3 NTYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjI1Ni4uLgplbnRy eSAibGlicHJvYy0zLjIuNy5zbyIgYXQgYmxvY2sgMCBvZmZzZXQgMjMyMCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU2OQoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMzIwLi4uCmVudHJ5ICJ4dGFibGVzIiBhdCBi bG9jayAwIG9mZnNldCAyNDAwIGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgNTc0ODQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMjQwMC4uLgplbnRyeSAibGlidGljdy5zby41IiBhdCBibG9jayAwIG9mZnNldCAyNDI0 IGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjc0 NjQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQyNC4uLgplbnRy eSAibGliYnoyLnNvLjEuMC40IiBhdCBibG9jayAwIG9mZnNldCAyNDY0IGluIGRpcmVjdG9yeSBp bm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTc2MTEKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQ2NC4uLgplbnRyeSAibWFuOCIgaW4gc2hv cnRmb3JtIGRpcmVjdG9yeSA0Mjk3NDgwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDkz NgplbnRyeSAibGlicG9wdC5zby4wIiBhdCBibG9jayAwIG9mZnNldCAyNDk2IGluIGRpcmVjdG9y eSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjc1MTAKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQ5Ni4uLgpqdW5raW5nIGVudHJ5ICJt YW44IiBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzQ4MAplbnRyeSAibGliYnoyLnNvLjEuMCIgYXQg YmxvY2sgMCBvZmZzZXQgMjUzNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDU3NjE2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDI1MzYuLi4KZW50cnkgImxpYmJ6Mi5zby4xIiBhdCBibG9jayAwIG9mZnNldCAyNTky IGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTc2 MTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjU5Mi4uLgplbnRy eSAibGlicG9wdC5zby4wLjAuMCIgYXQgYmxvY2sgMCBvZmZzZXQgMjYxNiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDY3NDk1CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI2MTYuLi4KZW50cnkgImxpYmNmb250LnNv LjAuMC4wIiBhdCBibG9jayAwIG9mZnNldCAyNjU2IGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTc2MTgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMjY1Ni4uLgplbnRyeSAibGliaGlzdG9yeS5zby41LjIiIGF0IGJs b2NrIDAgb2Zmc2V0IDI2ODggaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSA2NzUxMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAyNjg4Li4uCmVudHJ5ICJsaWJjb25zb2xlLnNvLjAuMC4wIiBhdCBibG9jayAwIG9mZnNl dCAyNzI4IGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNTc2MTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjcyOC4u LgplbnRyeSAibGlicmVhZGxpbmUuc28uNS4yIiBhdCBibG9jayAwIG9mZnNldCAyNzYwIGluIGRp cmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjc1MTIKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjc2MC4uLgplbnRyeSAibGli Y3R1dGlscy5zby4wLjAuMCIgYXQgYmxvY2sgMCBvZmZzZXQgMjgwMCBpbiBkaXJlY3RvcnkgaW5v ZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3NjIwCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI4MDAuLi4KZW50cnkgImxpYmhpc3Rvcnkuc28u NSIgYXQgYmxvY2sgMCBvZmZzZXQgMjgzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDY3NTEzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDI4MzIuLi4KZW50cnkgImxpYmN0dXRpbHMuc28uMCIgYXQgYmxvY2sgMCBv ZmZzZXQgMjg3MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDU3NjI3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI4 NzIuLi4KZW50cnkgIngiIGF0IGJsb2NrIDAgb2Zmc2V0IDgwIGluIGRpcmVjdG9yeSBpbm9kZSA0 Mjk3NTczIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDgzNQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4MC4uLgplbnRyeSAibGliaXcuc28uMjkiIGF0IGJs b2NrIDAgb2Zmc2V0IDI5MDQgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAyMTYxMDQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMjkwNC4uLgplbnRyeSAiYSIgYXQgYmxvY2sgMCBvZmZzZXQgMTQ0IGluIGRpcmVjdG9y eSBpbm9kZSA0Mjk3NTczIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDgzNgplbnRyeSAi bGliY29uc29sZS5zby4wIiBhdCBibG9jayAwIG9mZnNldCAyOTQ0IGluIGRpcmVjdG9yeSBpbm9k ZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTc2MjgKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjk0NC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAxNDQuLi4KZW50cnkgImxpYmhhbmRsZS5zby4xLjAuMyIgYXQg YmxvY2sgMCBvZmZzZXQgMjk3NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE1MDYxNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAyOTc2Li4uCmVudHJ5ICJsIiBhdCBibG9jayAwIG9mZnNldCAyMDggaW4gZGlyZWN0 b3J5IGlub2RlIDQyOTc1NzMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgODM3CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwOC4uLgplbnRyeSAibGliY2Zv bnQuc28uMCIgYXQgYmxvY2sgMCBvZmZzZXQgMzAxNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3NjI5CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDMwMTYuLi4KZW50cnkgIjkiIGF0IGJsb2NrIDAgb2Zmc2V0IDI4 MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5NzU3MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyMDE4MTIKZW50cnkgImxpYmhhbmRsZS5zby4xIiBhdCBibG9jayAwIG9mZnNldCAzMDQwIGlu IGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzM5MTA3 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMwNDAuLi4KCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjgwLi4uCmVudHJ5ICJsaWJuY3Vy c2Vzdy5zby41LjciIGF0IGJsb2NrIDAgb2Zmc2V0IDMwODAgaW4gZGlyZWN0b3J5IGlub2RlIDE1 NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NzQ1OAplbnRyeSAiTCIgYXQgYmxvY2sg MCBvZmZzZXQgNDQwIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3NTczIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDIwMjY4NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA0NDAuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzA4 MC4uLgplbnRyeSAiaiIgYXQgYmxvY2sgMCBvZmZzZXQgNjAwIGluIGRpcmVjdG9yeSBpbm9kZSA0 Mjk3NTczIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMjY4NwplbnRyeSAibGliY2Fw LnNvLjIuMTEiIGF0IGJsb2NrIDAgb2Zmc2V0IDMxMTIgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM5MTcKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzExMi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCA2MDAuLi4KZW50cnkgImxpYnRpY3cuc28uNS43IiBhdCBibG9jayAwIG9m ZnNldCAzMTUyIGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgNjc0NTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzE1 Mi4uLgplbnRyeSAiNSIgYXQgYmxvY2sgMCBvZmZzZXQgNzYwIGluIGRpcmVjdG9yeSBpbm9kZSA0 Mjk3NTczIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMjY5MAplbnRyeSAibGliY2Fw LnNvLjIiIGF0IGJsb2NrIDAgb2Zmc2V0IDMxODQgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM5MTgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzE4NC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCA3NjAuLi4KZW50cnkgImxpYm5jdXJzZXN3LnNvLjUiIGF0IGJsb2NrIDAgb2Zm c2V0IDMyMjQgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSA2NzQ2MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMjI0 Li4uCmVudHJ5ICJOIiBhdCBibG9jayAwIG9mZnNldCA5MjAgaW4gZGlyZWN0b3J5IGlub2RlIDQy OTc1NzMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjAyOTQyCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDkyMC4uLgplbnRyeSAibGlicmVhZGxpbmUuc28u NSIgYXQgYmxvY2sgMCBvZmZzZXQgMzI1NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDY3NTE0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDMyNTYuLi4KZW50cnkgImYiIGF0IGJsb2NrIDAgb2Zmc2V0IDEwODAgaW4g ZGlyZWN0b3J5IGlub2RlIDQyOTc1NzMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjAy OTQ0CmVudHJ5ICJsaWJrZXl1dGlscy0xLjIuc28iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyODggaW4g ZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM5MzIK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzI4OC4uLgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMDgwLi4uCmVudHJ5ICJsaWJ1c2It MC4xLnNvLjQuNC40IiBhdCBibG9jayAwIG9mZnNldCAzMzI4IGluIGRpcmVjdG9yeSBpbm9kZSAx NTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjc1NjgKZW50cnkgImkiIGF0IGJsb2Nr IDAgb2Zmc2V0IDEyNDAgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTc1NzMgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjAyOTYwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDEyNDAuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzMyOC4uLgplbnRyeSAibGlia2V5dXRpbHMuc28uMSIgYXQgYmxvY2sgMCBvZmZzZXQgMzM2MCBp biBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2Mzkz NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMzYwLi4uCmVudHJ5 ICJYIiBhdCBibG9jayAwIG9mZnNldCAxNDAwIGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk3NTczIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMzA2OAplbnRyeSAibGlidXNiLTAuMS5zby40 IiBhdCBibG9jayAwIG9mZnNldCAzNDAwIGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgNjc1NzQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMzQwMC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAxNDAwLi4uCmVudHJ5ICJsaWJzZW1hbmFnZS5zby4xIiBhdCBibG9jayAwIG9mZnNldCAz NDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MjAxNzg2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM0MzIuLi4K ZW50cnkgImxpYnVzYi0xLjAuc28uMC4wLjAiIGF0IGJsb2NrIDAgb2Zmc2V0IDM0NzIgaW4gZGly ZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NzU3NgoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNDcyLi4uCmVudHJ5ICJsaWJ4 ODYuc28uMSIgYXQgYmxvY2sgMCBvZmZzZXQgMzUwNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODYxMwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAzNTA0Li4uCmVudHJ5ICJsaWJ1c2ItMS4wLnNvLjAiIGF0IGJs b2NrIDAgb2Zmc2V0IDM1NDQgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSA2NzU3NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAzNTQ0Li4uCmVudHJ5ICJsaWJzeXNmcy5zby4yLjAuMSIgYXQgYmxvY2sgMCBvZmZzZXQg MzU3NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDY0OTAwMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNTc2Li4u CmVudHJ5ICJsaWJ3cmFwLnNvLjAuNy42IiBhdCBibG9jayAwIG9mZnNldCAzNjE2IGluIGRpcmVj dG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjc1ODMKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzYxNi4uLgplbnRyeSAibGlibnNz X21kbnMuc28uMiIgYXQgYmxvY2sgMCBvZmZzZXQgMzY0OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1OTg5NzQKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzY0OC4uLgplbnRyeSAibGlid3JhcC5zby4wIiBhdCBi bG9jayAwIG9mZnNldCAzNjgwIGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgNjc1ODQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzY4MC4uLgplbnRyeSAibGlibnNzX21kbnM0LnNvLjIiIGF0IGJsb2NrIDAgb2Zmc2V0 IDM3MDQgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxNTk4OTc1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM3MDQu Li4KZW50cnkgImk2ODYiIGF0IGJsb2NrIDAgb2Zmc2V0IDM3NjAgaW4gZGlyZWN0b3J5IGlub2Rl IDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjgzNjkKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzc2MC4uLgplbnRyeSAibGlibnNzX21kbnM2LnNv LjIiIGF0IGJsb2NrIDAgb2Zmc2V0IDM3NzYgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTk4OTc3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDM3NzYuLi4KZW50cnkgImxpYnZvbHVtZV9pZC5zby4wLjg1LjAiIGF0 IGJsb2NrIDAgb2Zmc2V0IDM4MDggaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAyMDM5NjAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMzgwOC4uLgplbnRyeSAibGlic3lzZnMuc28uMiIgYXQgYmxvY2sgMCBvZmZzZXQg Mzg0OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDY0OTAxMAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzODQ4Li4u CmVudHJ5ICJsaWJ2b2x1bWVfaWQuc28uMCIgYXQgYmxvY2sgMCBvZmZzZXQgMzg4OCBpbiBkaXJl Y3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMzk2MgoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzODg4Li4uCmVudHJ5ICIuLiIg YXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTg3OTMgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgOTQ1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJjcHAiIGF0IGJsb2NrIDAgb2Zmc2V0IDM5MjAgaW4gZGly ZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDU3MDg4Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM5MjAuLi4KZW50cnkgImF1 dG8iIGF0IGJsb2NrIDAgb2Zmc2V0IDE0NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDI5ODc5MyByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA5NDkKZW50cnkgImxpYmNhcC5zby4xIiBhdCBibG9j ayAwIG9mZnNldCA0MDA4IGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgNDA3NjcyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDQwMDguLi4KZW50cnkgImtsaWJjLS1JT3doMFZSODdMWDFMWTk1cm1uRkxjMXZ1WS5zbyIg YXQgYmxvY2sgMCBvZmZzZXQgNDAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDIwMzk2NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCA0MDMyLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDE0NC4uLgplbnRyeSAibGlibnNzX21kbnM0X21pbmltYWwuc28uMiIgYXQgYmxvY2sgMSBv ZmZzZXQgMTYgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxNTk4OTc2CmVudHJ5ICJnbnUiIGF0IGJsb2NrIDAgb2Zmc2V0IDU3NiBpbiBkaXJlY3Rv cnkgaW5vZGUgNDI5ODc5MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDM1NzAKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTc2Li4uCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2Li4uCmVudHJ5ICJJMThOIiBhdCBibG9j ayAwIG9mZnNldCA3MzYgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTg3OTMgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjAzNTczCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDczNi4uLgplbnRyeSAibGlibnNzX21kbnM2X21pbmltYWwuc28uMiIgYXQgYmxvY2sg MSBvZmZzZXQgNTYgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxNTk4OTc4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDU2Li4uCmVudHJ5ICJEaWdlc3QiIGF0IGJsb2NrIDAgb2Zmc2V0IDExMzYgaW4gZGlyZWN0b3J5 IGlub2RlIDQyOTg3OTMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjgxOTcxCmVudHJ5 ICJsaWJuc3NfbWRuc19taW5pbWFsLnNvLjIiIGF0IGJsb2NrIDEgb2Zmc2V0IDk2IGluIGRpcmVj dG9yeSBpbm9kZSAxNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU5ODk3OQoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5Ni4uLgoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMTM2Li4uCmVudHJ5ICJsaWJzcGxhc2h5LnNv LjEuMC4wIiBhdCBibG9jayAxIG9mZnNldCAxMzYgaW4gZGlyZWN0b3J5IGlub2RlIDE1NSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTI4NjY1CmVudHJ5ICJGaWx0ZXIiIGF0IGJsb2Nr IDAgb2Zmc2V0IDEzMDQgaW4gZGlyZWN0b3J5IGlub2RlIDQyOTg3OTMgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjgxOTc2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDEzMDQuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MTM2Li4uCmVudHJ5ICJDb21wcmVzcyIgYXQgYmxvY2sgMCBvZmZzZXQgMTY4MCBpbiBkaXJlY3Rv cnkgaW5vZGUgNDI5ODc5MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODE5NzcKZW50 cnkgImxpYnNwbGFzaHljbmYuc28uMS4wLjAiIGF0IGJsb2NrIDEgb2Zmc2V0IDE2OCBpbiBkaXJl Y3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMjg2NjYKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTY4Li4uCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2ODAuLi4KZW50cnkgImxpYnNwbGFzaHlj bmYuc28uMSIgYXQgYmxvY2sgMSBvZmZzZXQgMjA4IGluIGRpcmVjdG9yeSBpbm9kZSAxNTUgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEyODY2NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAyMDguLi4KZW50cnkgImFzbS1nZW5lcmljIiBhdCBibG9jayAw IG9mZnNldCAyOTg0IGluIGRpcmVjdG9yeSBpbm9kZSA0Mjk4NzkzIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDI4MTk3OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAyOTg0Li4uCmVudHJ5ICJsaWJzcGxhc2h5LnNvLjEiIGF0IGJsb2NrIDEgb2Zmc2V0IDI0 MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEx Mjg2NjgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQwLi4uCm5v IC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNDI5ODc5MwplbnRyeSAibGliY2FwLnNvLjEuMTAiIGF0 IGJsb2NrIDEgb2Zmc2V0IDI3MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU1IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDQwNzY3MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAyNzIuLi4KZW50cnkgImluc3RhbGxrZXJuZWwiIGF0IGJsb2NrIDAgb2Zmc2V0IDQ4 IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzQ5 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ4Li4uCmVudHJ5ICJy ZXNpemUyZnMiIGF0IGJsb2NrIDAgb2Zmc2V0IDEwNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ1OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAxMDQuLi4KZW50cnkgImZzY2suZXh0MiIgYXQgYmxvY2sgMCBvZmZz ZXQgMTI4IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNDU5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyOC4uLgpl bnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA0MzAyMTgw IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDk1NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiVG8iIGF0IGJsb2NrIDAgb2Zmc2V0IDE2 MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDMwMjE4MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyMDM1MTQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTYwLi4u CmVudHJ5ICJta2ZzLmV4dDIiIGF0IGJsb2NrIDAgb2Zmc2V0IDE1MiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ2MAoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTIuLi4KZW50cnkgImUyZnNjayIgYXQgYmxvY2sg MCBvZmZzZXQgMTc2IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgNDU5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3 Ni4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDQzMDIxODAKZW50cnkgImZpbmRmcyIgYXQg YmxvY2sgMCBvZmZzZXQgMjAwIGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgNDYyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDIwMC4uLgplbnRyeSAiZnNjay5leHQ0ZGV2IiBhdCBibG9jayAwIG9mZnNldCAyMjQgaW4g ZGlyZWN0b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0NTkKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjI0Li4uCmVudHJ5ICJibGtp ZCIgYXQgYmxvY2sgMCBvZmZzZXQgMjQ4IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTAyOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAyNDguLi4KZW50cnkgImxvZ3NhdmUiIGF0IGJsb2NrIDAgb2Zmc2V0IDI2NCBp biBkaXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEwMjkK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjY0Li4uCmVudHJ5ICJm c2NrLmV4dDMiIGF0IGJsb2NrIDAgb2Zmc2V0IDI4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ1OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyODguLi4KZW50cnkgIm1rZTJmcyIgYXQgYmxvY2sgMCBvZmZzZXQg MzEyIGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg NDYwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMxMi4uLgplbnRy eSAiZTJpbWFnZSIgYXQgYmxvY2sgMCBvZmZzZXQgMzM2IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTAzMAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAzMzYuLi4KZW50cnkgInR1bmUyZnMiIGF0IGJsb2NrIDAgb2Zm c2V0IDM2MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDQ2MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNjAuLi4K ZW50cnkgImUydW5kbyIgYXQgYmxvY2sgMCBvZmZzZXQgMzg0IGluIGRpcmVjdG9yeSBpbm9kZSAx NTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTAzMQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzODQuLi4KZW50cnkgIm1rZnMuZXh0NGRldiIgYXQgYmxv Y2sgMCBvZmZzZXQgNDA4IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgNDYwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDQwOC4uLgplbnRyeSAiZTJsYWJlbCIgYXQgYmxvY2sgMCBvZmZzZXQgNDMyIGluIGRpcmVjdG9y eSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDYyCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQzMi4uLgplbnRyeSAibWtmcy5leHQzIiBh dCBibG9jayAwIG9mZnNldCA0NTYgaW4gZGlyZWN0b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSA0NjAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgNDU2Li4uCmVudHJ5ICJta2ZzLmV4dDQiIGF0IGJsb2NrIDAgb2Zmc2V0IDQ4MCBpbiBk aXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ2MAoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0ODAuLi4KZW50cnkgImR1bXBl MmZzIiBhdCBibG9jayAwIG9mZnNldCA1MDQgaW4gZGlyZWN0b3J5IGlub2RlIDE1NiByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMDMyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDUwNC4uLgplbnRyeSAiZnNjayIgYXQgYmxvY2sgMCBvZmZzZXQgNTI4IGlu IGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTAzMwoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1MjguLi4KZW50cnkgImZz Y2suZXh0NCIgYXQgYmxvY2sgMCBvZmZzZXQgNTQ0IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDU5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDU0NC4uLgplbnRyeSAiZGVidWdmcyIgYXQgYmxvY2sgMCBvZmZzZXQg NTY4IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTAzNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1NjguLi4KZW50 cnkgImJhZGJsb2NrcyIgYXQgYmxvY2sgMCBvZmZzZXQgNTkyIGluIGRpcmVjdG9yeSBpbm9kZSAx NTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTAzNQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCA1OTIuLi4KZW50cnkgImZzY2submZzIiBhdCBibG9jayAw IG9mZnNldCA2MTYgaW4gZGlyZWN0b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSA0OTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjE2 Li4uCmVudHJ5ICJsZGNvbmZpZyIgYXQgYmxvY2sgMCBvZmZzZXQgNjQwIGluIGRpcmVjdG9yeSBp bm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEwNjAKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjQwLi4uCmVudHJ5ICJ1bml4X2Noa3B3ZCIg YXQgYmxvY2sgMCBvZmZzZXQgNjY0IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgNDQwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDY2NC4uLgplbnRyeSAidW5peF91cGRhdGUiIGF0IGJsb2NrIDAgb2Zmc2V0IDY4OCBp biBkaXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ0MwoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2ODguLi4KZW50cnkgInBh bV90YWxseSIgYXQgYmxvY2sgMCBvZmZzZXQgNzEyIGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDQ1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDcxMi4uLgplbnRyeSAiTUFLRURFViIgYXQgYmxvY2sgMCBvZmZzZXQg NzM2IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg NzcyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDczNi4uLgplbnRy eSAibG9zZXR1cCIgYXQgYmxvY2sgMCBvZmZzZXQgNzYwIGluIGRpcmVjdG9yeSBpbm9kZSAxNTYg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNzczCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDc2MC4uLgplbnRyeSAic3dhcG9uIiBhdCBibG9jayAwIG9mZnNl dCA3ODQgaW4gZGlyZWN0b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA3NzQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNzg0Li4uCmVu dHJ5ICJzd2Fwb2ZmIiBhdCBibG9jayAwIG9mZnNldCA4MDggaW4gZGlyZWN0b3J5IGlub2RlIDE1 NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA3NzYKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgODA4Li4uCmVudHJ5ICJzaGFkb3djb25maWciIGF0IGJsb2Nr IDAgb2Zmc2V0IDgzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDIxMTE1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDgzMi4uLgplbnRyeSAic3lzY3RsIiBhdCBibG9jayAwIG9mZnNldCA4NTYgaW4gZGlyZWN0b3J5 IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NjgKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODU2Li4uCmVudHJ5ICIuLiIgYXQgYmxvY2sg MCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQzMzM0NDIgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMzIwNTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMzIuLi4KZW50cnkgImluaXQiIGF0IGJsb2NrIDAgb2Zmc2V0IDg4MCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDg1NwpubyAuLiBlbnRyeSBm b3IgZGlyZWN0b3J5IDQzMzM0NDIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgODgwLi4uCmVudHJ5ICJoYWx0IiBhdCBibG9jayAwIG9mZnNldCA4OTYgaW4gZGlyZWN0 b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA4NTgKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODk2Li4uCmVudHJ5ICIuLiIgYXQgYmxv Y2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQzMzM0NTUgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMzIwNjEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzIuLi4KZW50cnkgInJ1bmxldmVsIiBhdCBibG9jayAwIG9mZnNldCA5MTIgaW4gZGly ZWN0b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA4NTkKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgOTEyLi4uCm5vIC4uIGVudHJ5IGZv ciBkaXJlY3RvcnkgNDMzMzQ1NQplbnRyeSAic3RhcnRwYXIiIGF0IGJsb2NrIDAgb2Zmc2V0IDkz NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDg2 MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5MzYuLi4KZW50cnkg InNodXRkb3duIiBhdCBibG9jayAwIG9mZnNldCA5NjAgaW4gZGlyZWN0b3J5IGlub2RlIDE1NiBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA4NjEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgOTYwLi4uCmVudHJ5ICJib290bG9nZCIgYXQgYmxvY2sgMCBvZmZz ZXQgOTg0IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgODYyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDk4NC4uLgpl bnRyeSAicmVib290IiBhdCBibG9jayAwIG9mZnNldCAxMDA4IGluIGRpcmVjdG9yeSBpbm9kZSAx NTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgODYzCmVudHJ5ICJJbmRpYW5hcG9saXMi IGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNDMzMzQ4NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSA3NTc4Cmp1bmtpbmcgZW50cnkgIkluZGlhbmFwb2xpcyIgaW4gZGlyZWN0b3J5IGlub2Rl IDQzMzM0ODcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTAwOC4u LgplbnRyeSAicG93ZXJvZmYiIGF0IGJsb2NrIDAgb2Zmc2V0IDEwMzIgaW4gZGlyZWN0b3J5IGlu b2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA5MzcKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTAzMi4uLgplbnRyeSAiS25veCIgaW4gc2hvcnRm b3JtIGRpcmVjdG9yeSA0MzMzNDg3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDc1NzkK ZW50cnkgInRlbGluaXQiIGF0IGJsb2NrIDAgb2Zmc2V0IDEwNTYgaW4gZGlyZWN0b3J5IGlub2Rl IDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA5MzkKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTA1Ni4uLgpqdW5raW5nIGVudHJ5ICJLbm94IiBpbiBk aXJlY3RvcnkgaW5vZGUgNDMzMzQ4NwplbnRyeSAic3Vsb2dpbiIgYXQgYmxvY2sgMCBvZmZzZXQg MTA4MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDkzNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMDgwLi4uCmVu dHJ5ICJraWxsYWxsNSIgYXQgYmxvY2sgMCBvZmZzZXQgMTEwNCBpbiBkaXJlY3RvcnkgaW5vZGUg MTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDkzOAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMTA0Li4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZz ZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQzMzM0OTQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMzIwNTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIu Li4KZW50cnkgIm1rc3dhcCIgYXQgYmxvY2sgMCBvZmZzZXQgMTEyOCBpbiBkaXJlY3RvcnkgaW5v ZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxNjEwCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExMjguLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVj dG9yeSA0MzMzNDk0CmVudHJ5ICJpc29zaXplIiBhdCBibG9jayAwIG9mZnNldCAxMTUyIGluIGRp cmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjE2MTEKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTE1Mi4uLgplbnRyeSAiaHdj bG9jayIgYXQgYmxvY2sgMCBvZmZzZXQgMTE3NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxNjEyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDExNzYuLi4KZW50cnkgIm1rZnMuYmZzIiBhdCBibG9jayAwIG9mZnNl dCAxMjAwIGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMjE2MTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTIwMC4u LgplbnRyeSAiZnNjay5jcmFtZnMiIGF0IGJsb2NrIDAgb2Zmc2V0IDEyMjQgaW4gZGlyZWN0b3J5 IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTYxNAoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMjI0Li4uCmVudHJ5ICJta2ZzLm1pbml4 IiBhdCBibG9jayAwIG9mZnNldCAxMjQ4IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjE2MTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTI0OC4uLgplbnRyeSAiYmxvY2tkZXYiIGF0IGJsb2NrIDAgb2Zmc2V0IDEy NzIgaW4gZGlyZWN0b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAy MTYxNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMjcyLi4uCmVu dHJ5ICJjZmRpc2siIGF0IGJsb2NrIDAgb2Zmc2V0IDEyOTYgaW4gZGlyZWN0b3J5IGlub2RlIDE1 NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTYxNwoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMjk2Li4uCmVudHJ5ICJmZGlzayIgYXQgYmxvY2sgMCBv ZmZzZXQgMTMyMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDIxNjE4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEz MjAuLi4KZW50cnkgImdldHR5IiBhdCBibG9jayAwIG9mZnNldCAxMzM2IGluIGRpcmVjdG9yeSBp bm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjE2MTkKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTMzNi4uLgplbnRyeSAibWtmcy5jcmFtZnMi IGF0IGJsb2NrIDAgb2Zmc2V0IDEzNTIgaW4gZGlyZWN0b3J5IGlub2RlIDE1NiByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAyMTYyMAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAxMzUyLi4uCmVudHJ5ICJOaWNvc2lhIiBhdCBibG9jayAwIG9mZnNldCA2NDAg aW4gZGlyZWN0b3J5IGlub2RlIDQzNTA5NzYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MjEyNTEKZW50cnkgInBpdm90X3Jvb3QiIGF0IGJsb2NrIDAgb2Zmc2V0IDEzNzYgaW4gZGlyZWN0 b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTYyMQoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzc2Li4uCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDY0MC4uLgplbnRyeSAic2ZkaXNrIiBhdCBibG9j ayAwIG9mZnNldCAxNDAwIGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMjE2MjIKZW50cnkgIklzdGFuYnVsIiBhdCBibG9jayAwIG9mZnNldCA4MDAg aW4gZGlyZWN0b3J5IGlub2RlIDQzNTA5NzYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MjEyNjYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODAwLi4uCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE0MDAuLi4KZW50cnkgImN0 cmxhbHRkZWwiIGF0IGJsb2NrIDAgb2Zmc2V0IDE0MjQgaW4gZGlyZWN0b3J5IGlub2RlIDE1NiBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTYyMwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAxNDI0Li4uCmVudHJ5ICJyYXciIGF0IGJsb2NrIDAgb2Zmc2V0 IDE0NDggaW4gZGlyZWN0b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyMTYyNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNDQ4Li4u CmVudHJ5ICJmc2NrLm1pbml4IiBhdCBibG9jayAwIG9mZnNldCAxNDY0IGluIGRpcmVjdG9yeSBp bm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjE2MjUKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQ2NC4uLgplbnRyeSAibWtmcyIgYXQgYmxv Y2sgMCBvZmZzZXQgMTQ4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDIxNjI2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDE0ODguLi4KZW50cnkgIndwYV9jbGkiIGF0IGJsb2NrIDAgb2Zmc2V0IDE1MDQgaW4gZGly ZWN0b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMzkxMDEKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTUwNC4uLgplbnRyeSAiZGhj bGllbnQzIiBhdCBibG9jayAwIG9mZnNldCAxNjA4IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTczNDEKZW50cnkgIi4uIiBhdCBibG9jayAwIG9m ZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDM1MTA0NiByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSA1NzI0NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz Mi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNjA4Li4uCmVu dHJ5ICJCdWVub3NfQWlyZXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDQ4IGluIGRpcmVjdG9yeSBpbm9k ZSA0MzUxMDQ2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMjk5CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ4Li4uCmVudHJ5ICJyYXJwIiBhdCBibG9j ayAwIG9mZnNldCAxNjMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTUwMzY5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDE2MzIuLi4KZW50cnkgImRoY2xpZW50LXNjcmlwdCIgYXQgYmxvY2sgMCBvZmZzZXQgMTY3 MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3 MzQyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2NzIuLi4Kbm8g Li4gZW50cnkgZm9yIGRpcmVjdG9yeSA0MzUxMDQ2CmVudHJ5ICJkaGNsaWVudCIgYXQgYmxvY2sg MCBvZmZzZXQgMTczNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDU3MzQ2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDE3MzYuLi4KZW50cnkgImlmdXAiIGF0IGJsb2NrIDAgb2Zmc2V0IDE3ODQgaW4gZGlyZWN0b3J5 IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzQ2MgoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNzg0Li4uCmVudHJ5ICJzZXRmaWxlcyIg YXQgYmxvY2sgMCBvZmZzZXQgMTgwMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDQ5MDAxNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAxODAwLi4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGly ZWN0b3J5IGlub2RlIDQzNTEwNTggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzIwNTMK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgImlm ZG93biIgYXQgYmxvY2sgMCBvZmZzZXQgMTgzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3NDYyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDE4MzIuLi4KZW50cnkgImZpeGZpbGVzIiBhdCBibG9jayAwIG9mZnNl dCAxODU2IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNDkwMDE3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4NTYu Li4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA0MzUxMDU4CmVudHJ5ICJydGFjY3QiIGF0IGJs b2NrIDAgb2Zmc2V0IDE4ODggaW4gZGlyZWN0b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSA1NzQ3MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAxODg4Li4uCmVudHJ5ICJyZXN0b3JlY29uIiBhdCBibG9jayAwIG9mZnNldCAxOTEyIGlu IGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDkwMDE4 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE5MTIuLi4KZW50cnkg InJ0bW9uIiBhdCBibG9jayAwIG9mZnNldCAxOTQ0IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTc0NzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMTk0NC4uLgplbnRyeSAic3MiIGF0IGJsb2NrIDAgb2Zmc2V0IDE5 ODQgaW4gZGlyZWN0b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1 NzQ3MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxOTg0Li4uCmVu dHJ5ICJ0YyIgYXQgYmxvY2sgMCBvZmZzZXQgMjAyNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3NDczCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBv ZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQzNTEwNzAgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMzIwNTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzIuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjAyNC4uLgpl bnRyeSAiaXAiIGF0IGJsb2NrIDAgb2Zmc2V0IDIwNjQgaW4gZGlyZWN0b3J5IGlub2RlIDE1NiBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzQ3NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAyMDY0Li4uCmVudHJ5ICJoZHBhcm0iIGF0IGJsb2NrIDAgb2Zm c2V0IDIwODAgaW4gZGlyZWN0b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSA1OTg2MTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjA4 MC4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDQzNTEwNzAKZW50cnkgImlwNnRhYmxlcyIg YXQgYmxvY2sgMCBvZmZzZXQgMjExMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDU3NDc1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDIxMTIuLi4KZW50cnkgInNsYXR0YWNoIiBhdCBibG9jayAwIG9mZnNldCAyMTM2 IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUw MzY4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIxMzYuLi4KZW50 cnkgImlwNnRhYmxlcy1tdWx0aSIgYXQgYmxvY2sgMCBvZmZzZXQgMjE3NiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3NDc2CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIxNzYuLi4KZW50cnkgIm1paS10b29sIiBh dCBibG9jayAwIG9mZnNldCAyMjA4IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTUwMzcwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDIyMDguLi4KZW50cnkgImlwNnRhYmxlcy1yZXN0b3JlIiBhdCBibG9jayAwIG9m ZnNldCAyMjQ4IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgNTc0NzcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjI0 OC4uLgplbnRyeSAiaXB0dW5uZWwiIGF0IGJsb2NrIDAgb2Zmc2V0IDIyODAgaW4gZGlyZWN0b3J5 IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTAzNzEKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjI4MC4uLgplbnRyeSAiaXA2dGFibGVz LXNhdmUiIGF0IGJsb2NrIDAgb2Zmc2V0IDIzMjAgaW4gZGlyZWN0b3J5IGlub2RlIDE1NiByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzQ3OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyMzIwLi4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIg aW4gZGlyZWN0b3J5IGlub2RlIDQzNTExNTQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MzIwNTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50 cnkgImFwbV9hdmFpbGFibGUiIGF0IGJsb2NrIDAgb2Zmc2V0IDIzNTIgaW4gZGlyZWN0b3J5IGlu b2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1OTg2MTQKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjM1Mi4uLgplbnRyeSAiaXB0YWJsZXMiIGF0 IGJsb2NrIDAgb2Zmc2V0IDIzODQgaW4gZGlyZWN0b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSA1NzQ3OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAyMzg0Li4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNDM1MTE1NAplbnRyeSAi aXB0YWJsZXMtbXVsdGkiIGF0IGJsb2NrIDAgb2Zmc2V0IDI0NDggaW4gZGlyZWN0b3J5IGlub2Rl IDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzQ4MQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNDQ4Li4uCmVudHJ5ICJib290Y2hhcnRkIiBhdCBi bG9jayAwIG9mZnNldCAyNDgwIGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjc3NjQwNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAyNDgwLi4uCmVudHJ5ICJpcHRhYmxlcy1yZXN0b3JlIiBhdCBibG9jayAwIG9mZnNl dCAyNTIwIGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNTc0ODIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjUyMC4u LgplbnRyeSAiaXB0YWJsZXMtc2F2ZSIgYXQgYmxvY2sgMCBvZmZzZXQgMjU5MiBpbiBkaXJlY3Rv cnkgaW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3NDgzCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1OTIuLi4KZW50cnkgInVwZGF0ZS1t b2R1bGVzIiBhdCBibG9jayAwIG9mZnNldCAyNjU2IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUzMTc4MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAyNjU2Li4uCmVudHJ5ICJvbl9hY19wb3dlciIgYXQgYmxvY2sg MCBvZmZzZXQgMjY4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDU5ODYxNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAyNjg4Li4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlu b2RlIDQzNTExOTkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTc0ODAKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgImRlcG1vZCIgYXQg YmxvY2sgMCBvZmZzZXQgMjcyMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDI1MzE3ODMKZW50cnkgIkJ1ZW5vc19BaXJlcyIgYXQgYmxvY2sgMCBv ZmZzZXQgNDggaW4gZGlyZWN0b3J5IGlub2RlIDQzNTExOTkgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjE0OTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg NDguLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjcyMC4uLgpu byAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDQzNTExOTkKZW50cnkgImFjcGlfYXZhaWxhYmxlIiBh dCBibG9jayAwIG9mZnNldCAyNzQ0IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgNTk4NjE3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDI3NDQuLi4KZW50cnkgIm1vZGluZm8iIGF0IGJsb2NrIDAgb2Zmc2V0IDI3NzYg aW4gZGlyZWN0b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTMx NzgxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI3NzYuLi4KZW50 cnkgInJtbW9kIiBhdCBibG9jayAwIG9mZnNldCAyODMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNTYg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUzMTc3OQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAyODMyLi4uCmVudHJ5ICJpbnNtb2QiIGF0IGJsb2NrIDAg b2Zmc2V0IDI4ODAgaW4gZGlyZWN0b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAyNTMxNzc4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDI4ODAuLi4KZW50cnkgInVwZGF0ZS1ncnViIiBhdCBibG9jayAwIG9mZnNldCAyOTA0IGluIGRp cmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYzNzcwCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI5MDQuLi4KZW50cnkgIm1v ZHByb2JlIiBhdCBibG9jayAwIG9mZnNldCAyOTM2IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUzMTc4MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAyOTM2Li4uCmVudHJ5ICJ3bGFuY29uZmlnIiBhdCBibG9jayAw IG9mZnNldCAyOTYwIGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTYzNzY1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDI5NjAuLi4KZW50cnkgImxzbW9kIiBhdCBibG9jayAwIG9mZnNldCAyOTkyIGluIGRpcmVjdG9y eSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjU0NDE5MgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyOTkyLi4uCmVudHJ5ICJncnViLWlu c3RhbGwiIGF0IGJsb2NrIDAgb2Zmc2V0IDMwMDggaW4gZGlyZWN0b3J5IGlub2RlIDE1NiByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM3NzMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzAwOC4uLgplbnRyeSAiaWZjb25maWciIGF0IGJsb2NrIDAgb2Zm c2V0IDMwNDAgaW4gZGlyZWN0b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxNTAzNjMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzA0 MC4uLgplbnRyeSAicm91dGUiIGF0IGJsb2NrIDAgb2Zmc2V0IDMwOTYgaW4gZGlyZWN0b3J5IGlu b2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTAzNjQKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzA5Ni4uLgplbnRyeSAiaXBtYWRkciIgYXQg YmxvY2sgMCBvZmZzZXQgMzE0NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE1MDM2NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzMTQ0Li4uCmVudHJ5ICJuYW1laWYiIGF0IGJsb2NrIDAgb2Zmc2V0IDMyMDAgaW4g ZGlyZWN0b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTAzNjYK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIwMC4uLgplbnRyeSAi cGxpcGNvbmZpZyIgYXQgYmxvY2sgMCBvZmZzZXQgMzI1NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1MDM2NwoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMjU2Li4uCmVudHJ5ICJiaW4iIGluIHNob3J0Zm9ybSBk aXJlY3RvcnkgNDM1MTQwMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzY3OQpqdW5r aW5nIGVudHJ5ICJiaW4iIGluIGRpcmVjdG9yeSBpbm9kZSA0MzUxNDAyCmVudHJ5ICJrYmRyYXRl IiBhdCBibG9jayAwIG9mZnNldCAzMjgwIGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjAzOTE2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDMyODAuLi4KZW50cnkgInNiaW4iIGluIHNob3J0Zm9ybSBkaXJlY3Rvcnkg NDM1MTQwMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzY4MApqdW5raW5nIGVudHJ5 ICJzYmluIiBpbiBkaXJlY3RvcnkgaW5vZGUgNDM1MTQwMgplbnRyeSAiaXdjb25maWciIGF0IGJs b2NrIDAgb2Zmc2V0IDMzMzYgaW4gZGlyZWN0b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAzMjgzNzgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzMzNi4uLgplbnRyeSAiaXdwcml2IiBhdCBibG9jayAwIG9mZnNldCAzMzkyIGluIGRp cmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzI4MzgyCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMzOTIuLi4KZW50cnkgIml3 c3B5IiBhdCBibG9jayAwIG9mZnNldCAzNDE2IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzI4MzgzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDM0MTYuLi4KZW50cnkgImZzY2sueGZzIiBhdCBibG9jayAwIG9mZnNl dCAzNDcyIGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMjE2MTAyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM0NzIu Li4KZW50cnkgInhmc19yZXBhaXIiIGF0IGJsb2NrIDAgb2Zmc2V0IDM0OTYgaW4gZGlyZWN0b3J5 IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMzkxMDYKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzQ5Ni4uLgplbnRyeSAidWRldmQiIGF0 IGJsb2NrIDAgb2Zmc2V0IDM1NTIgaW4gZGlyZWN0b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAyMTYwNDAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMzU1Mi4uLgplbnRyeSAidWRldmFkbSIgYXQgYmxvY2sgMCBvZmZzZXQgMzYwMCBp biBkaXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxNjA0 MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNjAwLi4uCmVudHJ5 ICJ1ZGV2c2V0dGxlIiBhdCBibG9jayAwIG9mZnNldCAzNjU2IGluIGRpcmVjdG9yeSBpbm9kZSAx NTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjE2MDQ3CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM2NTYuLi4KZW50cnkgInZvbF9pZCIgYXQgYmxvY2sg MCBvZmZzZXQgMzcxMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDIxNjA0OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzNzEyLi4uCmVudHJ5ICJ3cGFfc3VwcGxpY2FudCIgYXQgYmxvY2sgMCBvZmZzZXQgMzc3NiBp biBkaXJlY3RvcnkgaW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMzOTEw MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNzc2Li4uCmVudHJ5 ICJta2ZzLnhmcyIgYXQgYmxvY2sgMCBvZmZzZXQgMzgwOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTU2 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMzOTEwNAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzODA4Li4uCmVudHJ5ICJpd2V2ZW50IiBhdCBibG9jayAw IG9mZnNldCAzODgwIGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMzI4Mzc5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDM4ODAuLi4KZW50cnkgIml3Z2V0aWQiIGF0IGJsb2NrIDAgb2Zmc2V0IDM5MDQgaW4gZGlyZWN0 b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjgzODAKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzkwNC4uLgplbnRyeSAiaXdsaXN0 IiBhdCBibG9jayAwIG9mZnNldCAzOTI4IGluIGRpcmVjdG9yeSBpbm9kZSAxNTYgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMzI4MzgxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDM5MjguLi4KZW50cnkgIndwYV9hY3Rpb24iIGF0IGJsb2NrIDAgb2Zmc2V0 IDM5ODQgaW4gZGlyZWN0b3J5IGlub2RlIDE1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAzMzkxMDAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzk4NC4u LgplbnRyeSAidW1vdW50LmhhbCIgYXQgYmxvY2sgMCBvZmZzZXQgNDAwOCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzNTQ4NTcKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDAwOC4uLgplbnRyeSAic3RhcnQtc3Rv cC1kYWVtb24iIGF0IGJsb2NrIDAgb2Zmc2V0IDQwNDggaW4gZGlyZWN0b3J5IGlub2RlIDE1NiBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA3NTM5CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDQwNDguLi4KZW50cnkgImNhdDMiIGF0IGJsb2NrIDAgb2Zmc2V0 IDEwNCBpbiBkaXJlY3RvcnkgaW5vZGUgNDM3NzAzOCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxNTA2MDIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTA0 Li4uCmVudHJ5ICJjYXQ3IiBhdCBibG9jayAwIG9mZnNldCAxNjggaW4gZGlyZWN0b3J5IGlub2Rl IDQzNzcwMzggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUwNjAzCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2OC4uLgplbnRyeSAiWDExUjYiIGF0IGJs b2NrIDAgb2Zmc2V0IDI0MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDM3NzAzOCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxNTA2MDQKZW50cnkgInVzZXJzLWFuZC1ncm91cHMiIGF0IGJsb2Nr IDAgb2Zmc2V0IDQ4IGluIGRpcmVjdG9yeSBpbm9kZSAxNjQgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMzE5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ4 Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI0MC4uLgplbnRy eSAiZmluZHV0aWxzIiBhdCBibG9jayAwIG9mZnNldCA4MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTY0 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ3MAplbnRyeSAiZnIiIGF0IGJsb2NrIDAg b2Zmc2V0IDM0NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDM3NzAzOCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxNTA2MDUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMzQ0Li4uCmVudHJ5ICJodSIgYXQgYmxvY2sgMCBvZmZzZXQgNDA4IGluIGRpcmVjdG9yeSBp bm9kZSA0Mzc3MDM4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1MDYwNwoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MDguLi4KCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODAuLi4KZW50cnkgIml0IiBhdCBibG9jayAwIG9m ZnNldCA0NzIgaW4gZGlyZWN0b3J5IGlub2RlIDQzNzcwMzggcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTUwNjA5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDQ3Mi4uLgplbnRyeSAiemhfVFciIGF0IGJsb2NrIDAgb2Zmc2V0IDUzNiBpbiBkaXJlY3Rvcnkg aW5vZGUgNDM3NzAzOCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTA2MTEKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTM2Li4uCmVudHJ5ICJtYW4tZGIi IGF0IGJsb2NrIDAgb2Zmc2V0IDEzNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTY0IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDY3NjEyCmVudHJ5ICJwbC5JU084ODU5LTIiIGF0IGJsb2NrIDAg b2Zmc2V0IDYwMCBpbiBkaXJlY3RvcnkgaW5vZGUgNDM3NzAzOCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxNTA2MTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgNjAwLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEzNi4u LgplbnRyeSAiaXQuSVNPODg1OS0xIiBhdCBibG9jayAwIG9mZnNldCA2OTYgaW4gZGlyZWN0b3J5 IGlub2RlIDQzNzcwMzggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUwNjE1CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDY5Ni4uLgplbnRyeSAidmkiIGF0 IGJsb2NrIDAgb2Zmc2V0IDc0NCBpbiBkaXJlY3RvcnkgaW5vZGUgNDM3NzAzOCByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxMTk1NTYzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDc0NC4uLgplbnRyeSAibmFubyIgYXQgYmxvY2sgMCBvZmZzZXQgMTg0IGlu IGRpcmVjdG9yeSBpbm9kZSAxNjQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUwMzM3 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4NC4uLgplbnRyeSAi bmFuby1mYXEiIGF0IGJsb2NrIDAgb2Zmc2V0IDIzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTY0IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1MDMzOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAyMzIuLi4KZW50cnkgInVkZXYiIGF0IGJsb2NrIDAgb2Zmc2V0 IDI4MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTY0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDIxNjAzNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyODAuLi4K ZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDQyMDEz MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTAyNDYKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgImJzZC1tYWlseCIgYXQgYmxvY2sg MCBvZmZzZXQgNTQ0IGluIGRpcmVjdG9yeSBpbm9kZSAxNjQgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTYzOTc3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDU0NC4uLgplbnRyeSAiZGMiIGF0IGJsb2NrIDAgb2Zmc2V0IDU5MiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTY0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2Mzk4NQoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1OTIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVj dG9yeSA0NDIwMTMxCmVudHJ5ICJkZWJpYW4tZmFxIiBhdCBibG9jayAwIG9mZnNldCA2NDAgaW4g ZGlyZWN0b3J5IGlub2RlIDE2NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM5ODcK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjQwLi4uCmVudHJ5ICJk ZWJpYW4tbWFuaWZlc3RvIiBhdCBibG9jayAwIG9mZnNldCA3MDQgaW4gZGlyZWN0b3J5IGlub2Rl IDE2NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjQwMDMKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNzA0Li4uCmVudHJ5ICJkZWJpYW4tc29jaWFsLWNv bnRyYWN0IiBhdCBibG9jayAwIG9mZnNldCA3ODQgaW4gZGlyZWN0b3J5IGlub2RlIDE2NCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjQwMDQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgNzg0Li4uCmVudHJ5ICJkZWJpYW4tbWFpbGluZy1saXN0cyIgYXQg YmxvY2sgMCBvZmZzZXQgODY0IGluIGRpcmVjdG9yeSBpbm9kZSAxNjQgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTY0MDA1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDg2NC4uLgplbnRyeSAiZGViaWFuLWNvbnN0aXR1dGlvbi10ZXh0IiBhdCBibG9jayAw IG9mZnNldCA5NDQgaW4gZGlyZWN0b3J5IGlub2RlIDE2NCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxNjQwMDYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg OTQ0Li4uCmVudHJ5ICJkZWJpYW4tcmVwb3J0aW5nLWJ1Z3MiIGF0IGJsb2NrIDAgb2Zmc2V0IDEw MzIgaW4gZGlyZWN0b3J5IGlub2RlIDE2NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx NjQwMDcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTAzMi4uLgpl bnRyeSAiaXNwZWxsLW1hbnVhbCIgYXQgYmxvY2sgMCBvZmZzZXQgMTEwNCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTY0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2NDA5MwoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMTA0Li4uCmVudHJ5ICJtdXR0IiBhdCBi bG9jayAwIG9mZnNldCAxMTUyIGluIGRpcmVjdG9yeSBpbm9kZSAxNjQgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjAxODQyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDExNTIuLi4KZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rv cnkgaW5vZGUgNDQyMDE4MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTAzNzIKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgInB5dGhv bi1wb2xpY3kiIGF0IGJsb2NrIDAgb2Zmc2V0IDEyMDggaW4gZGlyZWN0b3J5IGlub2RlIDE2NCBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0ODk5NjAKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMTIwOC4uLgplbnRyeSAidGltZSIgYXQgYmxvY2sgMCBvZmZz ZXQgMTI1NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTY0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDQ5MjY5NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMjU2 Li4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNDQyMDE4MwplbnRyeSAiZGViaWFuLXJlZmVy ZW5jZS1pdCIgYXQgYmxvY2sgMCBvZmZzZXQgMTMxMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTY0IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODc3NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAxMzEyLi4uCmVudHJ5ICJkb2MtbGludXgtaXQiIGF0IGJsb2Nr IDAgb2Zmc2V0IDEzNzYgaW4gZGlyZWN0b3J5IGlub2RlIDE2NCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSA2MDUzODMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMTM3Ni4uLgplbnRyeSAibWFpbnQtZ3VpZGUtaXQiIGF0IGJsb2NrIDAgb2Zmc2V0IDE0NDAg aW4gZGlyZWN0b3J5IGlub2RlIDE2NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NDkx MTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQ0MC4uLgplbnRy eSAibGlicG5nMTIiIGF0IGJsb2NrIDAgb2Zmc2V0IDE1MDQgaW4gZGlyZWN0b3J5IGlub2RlIDE2 NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTIwOTAKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTUwNC4uLgplbnRyeSAiY2hrdGV4IiBhdCBibG9jayAw IG9mZnNldCAxNTYwIGluIGRpcmVjdG9yeSBpbm9kZSAxNjQgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMzU5MDY3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDE1NjAuLi4KZW50cnkgImN1cHMiIGF0IGJsb2NrIDAgb2Zmc2V0IDE2MDggaW4gZGlyZWN0b3J5 IGlub2RlIDE2NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjIyODQKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTYwOC4uLgplbnRyeSAiZm9udGNvbmZp Zy11c2VyIiBhdCBibG9jayAwIG9mZnNldCAxNjY0IGluIGRpcmVjdG9yeSBpbm9kZSAxNjQgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDIzNzAwCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDE2NjQuLi4KZW50cnkgImRlYmlhbi10ZXgtcG9saWN5IiBhdCBi bG9jayAwIG9mZnNldCAxNzM2IGluIGRpcmVjdG9yeSBpbm9kZSAxNjQgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgOTA1MzM2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDE3MzYuLi4KZW50cnkgInRleC1vbi1kZWJpYW4iIGF0IGJsb2NrIDAgb2Zmc2V0IDE4 MDggaW4gZGlyZWN0b3J5IGlub2RlIDE2NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA5 MDUzMzcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTgwOC4uLgpl bnRyeSAieHRlcm0tY3Rsc2VxcyIgYXQgYmxvY2sgMCBvZmZzZXQgMTg3MiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTY0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY3OTcKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTg3Mi4uLgplbnRyeSAieHRlcm0tZmFx IiBhdCBibG9jayAwIG9mZnNldCAxOTI4IGluIGRpcmVjdG9yeSBpbm9kZSAxNjQgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTI3Njc5OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAxOTI4Li4uCmVudHJ5ICJzaGFyZWQtbWltZS1pbmZvIiBhdCBibG9jayAw IG9mZnNldCAxOTkyIGluIGRpcmVjdG9yeSBpbm9kZSAxNjQgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTM1NTAwNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAxOTkyLi4uCmVudHJ5ICJpbWFnZW1hZ2ljayIgYXQgYmxvY2sgMCBvZmZzZXQgMjA1NiBpbiBk aXJlY3RvcnkgaW5vZGUgMTY0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODkwODUK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjA1Ni4uLgplbnRyeSAi Li4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA0NDIwNTc1IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1MDQ3MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAibGFjaGVjayIgYXQgYmxvY2sgMCBvZmZzZXQg MjExMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTY0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDEzODkwMzIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjExMi4u LgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDQ0MjA1NzUKZW50cnkgImxhdGV4LXhjb2xvciIg YXQgYmxvY2sgMCBvZmZzZXQgMjE2OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTY0IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDE0OTkxMjEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMjE2OC4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRp cmVjdG9yeSBpbm9kZSA0NDIwNTc5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1MDQ3 MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAi cGdmIiBhdCBibG9jayAwIG9mZnNldCAyMjE2IGluIGRpcmVjdG9yeSBpbm9kZSAxNjQgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTIwNQpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5 IDQ0MjA1NzkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjIxNi4u LgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA0NDIw NTgzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1MDQ3NwoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAibGF0ZXgtYmVhbWVyIiBhdCBi bG9jayAwIG9mZnNldCAyMjY0IGluIGRpcmVjdG9yeSBpbm9kZSAxNjQgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTQ5OTIyNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAyMjY0Li4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNDQyMDU4MwplbnRyeSAi cHJldmlldy1sYXRleC1zdHlsZSIgYXQgYmxvY2sgMCBvZmZzZXQgMjMyOCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTY0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NTA2ODkKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjMyOC4uLgplbnRyeSAiLi4iIGF0IGJs b2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA0NDIwNTg3IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE1MDQ3OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzMi4uLgplbnRyeSAicG8tZGViY29uZiIgYXQgYmxvY2sgMCBvZmZzZXQgMjM5MiBp biBkaXJlY3RvcnkgaW5vZGUgMTY0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExOTUx MDgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjM5Mi4uLgplbnRy eSAibGliaW8tc3RyaW5neS1wZXJsIiBhdCBibG9jayAwIG9mZnNldCAyNDU2IGluIGRpcmVjdG9y eSBpbm9kZSAxNjQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE5NTI5MAoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNDU2Li4uCmVudHJ5ICJqYXZhLXBv bGljeSIgYXQgYmxvY2sgMCBvZmZzZXQgMjUyMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTY0IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAyNTIwLi4uCmVudHJ5ICJwbHVnaW4iIGF0IGJsb2NrIDAgb2Zmc2V0IDUx MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDQyMDU4NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA1MTI5NzcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTEyLi4u CmVudHJ5ICJkZWJpYW4tamF2YS1mYXEiIGF0IGJsb2NrIDAgb2Zmc2V0IDI1ODQgaW4gZGlyZWN0 b3J5IGlub2RlIDE2NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjE3OAoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNTg0Li4uCmVudHJ5ICJpbmRlbnQi IGF0IGJsb2NrIDAgb2Zmc2V0IDE0NjQgaW4gZGlyZWN0b3J5IGlub2RlIDQ0MjA1ODcgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYzODEyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDE0NjQuLi4KZW50cnkgImNvcHlyaWdodCIgaW4gc2hvcnRmb3JtIGRp cmVjdG9yeSAxNjYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzI4Cm5vIC4uIGVudHJ5 IGZvciBkaXJlY3RvcnkgNDQyMDU4NwpqdW5raW5nIGVudHJ5ICJjb3B5cmlnaHQiIGluIGRpcmVj dG9yeSBpbm9kZSAxNjYKZW50cnkgInVzZXJzLWFuZC1ncm91cHMuaHRtbCIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSAxNjYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzQ0Cmp1bmtpbmcg ZW50cnkgInVzZXJzLWFuZC1ncm91cHMuaHRtbCIgaW4gZGlyZWN0b3J5IGlub2RlIDE2NgplbnRy eSAiY2hhbmdlbG9nLmd6IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDE2NiByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSA1OTkKanVua2luZyBlbnRyeSAiY2hhbmdlbG9nLmd6IiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTY2CmVudHJ5ICJ1c2Vycy1hbmQtZ3JvdXBzLnR4dC5neiIgaW4gc2hvcnRm b3JtIGRpcmVjdG9yeSAxNjYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjAwCmp1bmtp bmcgZW50cnkgInVzZXJzLWFuZC1ncm91cHMudHh0Lmd6IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTY2 CmVudHJ5ICJSRUFETUUiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTY2IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDYwMQpqdW5raW5nIGVudHJ5ICJSRUFETUUiIGluIGRpcmVjdG9yeSBp bm9kZSAxNjYKZW50cnkgImVudGl0aWVzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDQ0MjA3OTYg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTcwMDU1Cmp1bmtpbmcgZW50cnkgImVudGl0 aWVzIiBpbiBkaXJlY3RvcnkgaW5vZGUgNDQyMDc5NgplbnRyeSAiaXQiIGF0IGJsb2NrIDAgb2Zm c2V0IDM4NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTczIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDI5MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzODQuLi4K ZW50cnkgImh0bWwiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNDQyMDc5NiByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxNzAwNzEKanVua2luZyBlbnRyeSAiaHRtbCIgaW4gZGlyZWN0b3J5 IGlub2RlIDQ0MjA3OTYKZW50cnkgIm5iIiBhdCBibG9jayAwIG9mZnNldCA0NDggaW4gZGlyZWN0 b3J5IGlub2RlIDE3MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyOTQKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDQ4Li4uCmVudHJ5ICJwdF9CUiIgYXQg YmxvY2sgMCBvZmZzZXQgNTEyIGluIGRpcmVjdG9yeSBpbm9kZSAxNzMgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjk4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDUxMi4uLgplbnRyeSAicnciIGF0IGJsb2NrIDAgb2Zmc2V0IDUyOCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTczIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI5OQoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1MjguLi4KZW50cnkgInZpIiBhdCBibG9jayAw IG9mZnNldCA2MDggaW4gZGlyZWN0b3J5IGlub2RlIDE3MyByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAzMDUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjA4 Li4uCmVudHJ5ICJodG1sIiBhdCBibG9jayAwIG9mZnNldCA1MzYgaW4gZGlyZWN0b3J5IGlub2Rl IDQ0MjA4ODMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjAzOTIwCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDUzNi4uLgplbnRyeSAibGciIGF0IGJsb2Nr IDAgb2Zmc2V0IDk0NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTczIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDQ4NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5 NDQuLi4KZW50cnkgImJuX0lOIiBhdCBibG9jayAwIG9mZnNldCAxMDA4IGluIGRpcmVjdG9yeSBp bm9kZSAxNzMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjk4CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwMDguLi4KZW50cnkgImhpIiBhdCBibG9jayAw IG9mZnNldCAxMDQwIGluIGRpcmVjdG9yeSBpbm9kZSAxNzMgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgNzAwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEw NDAuLi4KZW50cnkgIm1sIiBhdCBibG9jayAwIG9mZnNldCAxMDcyIGluIGRpcmVjdG9yeSBpbm9k ZSAxNzMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNzAzCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwNzIuLi4KZW50cnkgInNpIiBhdCBibG9jayAwIG9m ZnNldCAxMTA0IGluIGRpcmVjdG9yeSBpbm9kZSAxNzMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgNzM3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExMDQu Li4KZW50cnkgInRhIiBhdCBibG9jayAwIG9mZnNldCAxMTQ0IGluIGRpcmVjdG9yeSBpbm9kZSAx NzMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNzM5CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExNDQuLi4KZW50cnkgImJlQGxhdGluIiBhdCBibG9jayAw IG9mZnNldCAxMjQ4IGluIGRpcmVjdG9yeSBpbm9kZSAxNzMgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgNDIzMDY4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDEyNDguLi4KZW50cnkgImlzIiBhdCBibG9jayAwIG9mZnNldCAxNTIwIGluIGRpcmVjdG9yeSBp bm9kZSAxNzMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjc0OTgKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTUyMC4uLgplbnRyeSAibG9jYWxlLmFsaWFz IiBhdCBibG9jayAwIG9mZnNldCAxNzI4IGluIGRpcmVjdG9yeSBpbm9kZSAxNzMgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjQzNjEzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDE3MjguLi4KZW50cnkgImhvb2tzY29uZi5kIiBpbiBzaG9ydGZvcm0gZGly ZWN0b3J5IDQ0MjExNDEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjE2MDkxCmp1bmtp bmcgZW50cnkgImhvb2tzY29uZi5kIiBpbiBkaXJlY3RvcnkgaW5vZGUgNDQyMTE0MQplbnRyeSAi YW0iIGF0IGJsb2NrIDAgb2Zmc2V0IDE4NjQgaW4gZGlyZWN0b3J5IGlub2RlIDE3MyByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA0ODk5OTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMTg2NC4uLgplbnRyeSAibG8iIGF0IGJsb2NrIDAgb2Zmc2V0IDE5NTIg aW4gZGlyZWN0b3J5IGlub2RlIDE3MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0OTAw MDIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTk1Mi4uLgplbnRy eSAibnNvIiBhdCBibG9jayAwIG9mZnNldCAyMDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNzMgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDkwMDA2CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDIwMzIuLi4KZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAz MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDQyMTQ4MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA2NDkxNzEKZW50cnkgInRlIiBhdCBibG9jayAwIG9mZnNldCAyMTI4IGluIGRpcmVjdG9yeSBp bm9kZSAxNzMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDkwMDExCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIxMjguLi4KCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgImJyIiBhdCBibG9jayAwIG9mZnNl dCAyNTg0IGluIGRpcmVjdG9yeSBpbm9kZSAxNzMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNDIyOTkzCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNDQyMTQ4MAoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNTg0Li4uCmVudHJ5ICJpbyIgYXQgYmxvY2sg MCBvZmZzZXQgMjY2NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTczIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDQyMzA0NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAyNjY0Li4uCmVudHJ5ICJtaSIgYXQgYmxvY2sgMCBvZmZzZXQgMjc0NCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTczIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMzA0NQoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNzQ0Li4uCmVudHJ5ICJ0ayIgYXQgYmxv Y2sgMCBvZmZzZXQgMjgyNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTczIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDQyMzA2MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAyODI0Li4uCmVudHJ5ICJ1eiIgYXQgYmxvY2sgMCBvZmZzZXQgMjkwNCBpbiBkaXJlY3Rv cnkgaW5vZGUgMTczIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMzA2MwoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyOTA0Li4uCmVudHJ5ICJhel9JUiIg YXQgYmxvY2sgMCBvZmZzZXQgMjk5MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTczIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDQyMzA2NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAyOTkyLi4uCmVudHJ5ICJjYUB2YWxlbmNpYSIgYXQgYmxvY2sgMCBvZmZzZXQg MzA4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTczIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDQyMzA2NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDg4Li4u CmVudHJ5ICJwdF9QVCIgYXQgYmxvY2sgMCBvZmZzZXQgMzE2MCBpbiBkaXJlY3RvcnkgaW5vZGUg MTczIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYyNzgKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzE2MC4uLgplbnRyeSAicXdlcnR5IiBpbiBzaG9y dGZvcm0gZGlyZWN0b3J5IDQ0MzUxMDAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjAz NzM3CmVudHJ5ICJtdXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDMzNjggaW4gZGlyZWN0b3J5IGlub2Rl IDE3MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODY0NjAzCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMzNjguLi4KanVua2luZyBlbnRyeSAicXdlcnR5 IiBpbiBkaXJlY3RvcnkgaW5vZGUgNDQzNTEwMAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0 IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA0NDM1MTEzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDIwMzczNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4u LgogICAgICAgIC0gYWdubyA9IDIKbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA0NDM1MTEzCmVu dHJ5ICJtbSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA4NDI5NzAxIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDIwOTc1NDEKanVua2luZyBlbnRyeSAibW0iIGluIGRpcmVjdG9yeSBpbm9k ZSA4NDI5NzAxCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlu b2RlIDQ0NDIwNTQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg0MTQ2CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBk aXJlY3RvcnkgNDQ0MjA1NAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVj dG9yeSBpbm9kZSA0NDQyMTQ0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NDE0NgoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRy eSBmb3IgZGlyZWN0b3J5IDQ0NDIxNDQKZW50cnkgImtlcm5lbCIgYXQgYmxvY2sgMCBvZmZzZXQg MjA4IGluIGRpcmVjdG9yeSBpbm9kZSA4NDMwMjMzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDIwOTc1NTQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjA4 Li4uCmVudHJ5ICJtYWNoLWNscHM3MTF4IiBhdCBibG9jayAwIG9mZnNldCAyOTYgaW4gZGlyZWN0 b3J5IGlub2RlIDg0MzAyMzMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjYyCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI5Ni4uLgplbnRyeSAiLi4iIGF0 IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA0NDQyMTc3IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDI4NDE0NgplbnRyeSAibWFjaC1lcDkzeHgiIGF0IGJsb2NrIDAg b2Zmc2V0IDM5MiBpbiBkaXJlY3RvcnkgaW5vZGUgODQzMDIzMyByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSA4MjAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzkyLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVu dHJ5ICJtYWNoLWludGVncmF0b3IiIGF0IGJsb2NrIDAgb2Zmc2V0IDQ5NiBpbiBkaXJlY3Rvcnkg aW5vZGUgODQzMDIzMyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA4NTUKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDk2Li4uCmVudHJ5ICJtYWNoLWl4cDIw MDAiIGF0IGJsb2NrIDAgb2Zmc2V0IDYwMCBpbiBkaXJlY3RvcnkgaW5vZGUgODQzMDIzMyByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMDU0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDYwMC4uLgplbnRyeSAiam95c3RpY2siIGF0IGJsb2NrIDAgb2Zmc2V0 IDI0MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDQ0MjE3NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyODQzNDcKZW50cnkgIm1hY2gtbDcyMDAiIGF0IGJsb2NrIDAgb2Zmc2V0IDY5NiBpbiBk aXJlY3RvcnkgaW5vZGUgODQzMDIzMyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMDc1 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDY5Ni4uLgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNDAuLi4KZW50cnkgIm1hY2gtbmV0 eCIgYXQgYmxvY2sgMCBvZmZzZXQgNzkyIGluIGRpcmVjdG9yeSBpbm9kZSA4NDMwMjMzIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDc1MjYKZW50cnkgInRhYmxldCIgYXQgYmxvY2sgMCBv ZmZzZXQgNTIwIGluIGRpcmVjdG9yeSBpbm9kZSA0NDQyMTc3IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDI4NDM3MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCA1MjAuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNzkyLi4u CmVudHJ5ICJtYWNoLW9yaW9uNXgiIGF0IGJsb2NrIDAgb2Zmc2V0IDg4OCBpbiBkaXJlY3Rvcnkg aW5vZGUgODQzMDIzMyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjE3MQoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4ODguLi4Kbm8gLi4gZW50cnkgZm9y IGRpcmVjdG9yeSA0NDQyMTc3CmVudHJ5ICJtYWNoLXJwYyIgYXQgYmxvY2sgMCBvZmZzZXQgOTg0 IGluIGRpcmVjdG9yeSBpbm9kZSA4NDMwMjMzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDIxMTA2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDk4NC4uLgpl bnRyeSAibWFjaC1zM2MyNDQwIiBhdCBibG9jayAwIG9mZnNldCAxMDgwIGluIGRpcmVjdG9yeSBp bm9kZSA4NDMwMjMzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMyMDcxCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwODAuLi4KZW50cnkgIm1hY2gtc2hh cmsiIGF0IGJsb2NrIDAgb2Zmc2V0IDExNzYgaW4gZGlyZWN0b3J5IGlub2RlIDg0MzAyMzMgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTY2MTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMTE3Ni4uLgplbnRyeSAib3Byb2ZpbGUiIGF0IGJsb2NrIDAgb2Zm c2V0IDEyNjQgaW4gZGlyZWN0b3J5IGlub2RlIDg0MzAyMzMgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgNTY2MjQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MTI2NC4uLgplbnRyeSAicGxhdC1vcmlvbiIgYXQgYmxvY2sgMCBvZmZzZXQgMTM2MCBpbiBkaXJl Y3RvcnkgaW5vZGUgODQzMDIzMyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NjYzNgoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzYwLi4uCmVudHJ5ICIu LiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQ0NDI4MTkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg0NDM0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJ2ZnAiIGF0IGJsb2NrIDAgb2Zmc2V0IDE0NDgg aW4gZGlyZWN0b3J5IGlub2RlIDg0MzAyMzMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg NTY2NDEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQ0OC4uLgpu byAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDQ0NDI4MTkKZW50cnkgIi4uIiBhdCBibG9jayAwIG9m ZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDQ0MjgzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAyODQ0MzQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA0NDQyODMyCmVudHJ5ICIuLiIgYXQgYmxv Y2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQ0NDI4NzEgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjg0ODA3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNDQ0Mjg3MQplbnRyeSAiLi4i IGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA0NDQyOTE3IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NDgwNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDQ0NDI5MTcKZW50 cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDQ0Mjk0MSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODQxNDYKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA0NDQy OTQxCmVudHJ5ICJyYWRpbyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA0NDQyOTcyIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI5MDA3NApqdW5raW5nIGVudHJ5ICJyYWRpbyIgaW4gZGly ZWN0b3J5IGlub2RlIDQ0NDI5NzIKZW50cnkgImJuZXAiIGluIHNob3J0Zm9ybSBkaXJlY3Rvcnkg NDQ4ODc4MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMTgyNzgKanVua2luZyBlbnRy eSAiYm5lcCIgaW4gZGlyZWN0b3J5IGlub2RlIDQ0ODg3ODMKZW50cnkgIi4uIiBhdCBibG9jayAw IG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgODQzMTg0OSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAyMDU3NzQ3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDMyLi4uCmVudHJ5ICJjaGlwcyIgYXQgYmxvY2sgMCBvZmZzZXQgMzIwIGluIGRpcmVjdG9y eSBpbm9kZSA4NDMxODQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0NzM4NjEKZW50 cnkgImlybGFuIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDQ0ODg4MDUgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMzI4MjQ4Cmp1bmtpbmcgZW50cnkgImlybGFuIiBpbiBkaXJlY3Rvcnkg aW5vZGUgNDQ4ODgwNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz MjAuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA4NDMxODQ5CmVudHJ5ICIuLiIgYXQgYmxv Y2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQ0ODg4MTYgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMzI4MjUyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDMyLi4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5 IGlub2RlIDg0MzE4NjQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA1Nzc0NwplbnRy eSAiYWQxODQ4IiBhdCBibG9jayAwIG9mZnNldCA0NjQgaW4gZGlyZWN0b3J5IGlub2RlIDQ0ODg4 MTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzI4MjUzCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ2NC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiZ3VzIiBhdCBibG9jayAwIG9mZnNldCAxMDU2 IGluIGRpcmVjdG9yeSBpbm9kZSA0NDg4ODE2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDMyODI1NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMDU2Li4u Cm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgODQzMTg2NApubyAuLiBlbnRyeSBmb3IgZGlyZWN0 b3J5IDQ0ODg4MTYKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rvcnkg aW5vZGUgNDQ5NDYzOSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMzkxMDkKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9y IGRpcmVjdG9yeSA0NDk0NjM5CmVudHJ5ICJ1c3IiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgODQz Mjc2OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNjQ4OTYwCmp1bmtpbmcgZW50cnkg InVzciIgaW4gZGlyZWN0b3J5IGlub2RlIDg0MzI3NjgKZW50cnkgIi4uIiBhdCBibG9jayAwIG9m ZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgODQzMjc3MCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAyNjQ4OTMwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgODQzMjc3MAplbnRyeSAib3BsMyIgaW4g c2hvcnRmb3JtIGRpcmVjdG9yeSA4NDMyNzc4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDI2NDg5NDAKanVua2luZyBlbnRyeSAib3BsMyIgaW4gZGlyZWN0b3J5IGlub2RlIDg0MzI3NzgK ZW50cnkgImRyaXZlcnMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNDUxODM2MiByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAyNDMzODUxCmp1bmtpbmcgZW50cnkgImRyaXZlcnMiIGluIGRp cmVjdG9yeSBpbm9kZSA0NTE4MzYyCmVudHJ5ICJzbGVlcCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9y eSA4NDM2MTc3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwOTc1ODYKZW50cnkgImlz YSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA0NTE4MzYyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDIwMzIyNApqdW5raW5nIGVudHJ5ICJpc2EiIGluIGRpcmVjdG9yeSBpbm9kZSA0NTE4 MzYyCmp1bmtpbmcgZW50cnkgInNsZWVwIiBpbiBkaXJlY3RvcnkgaW5vZGUgODQzNjE3NwplbnRy eSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA4NDM2MTg5IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1MDcwMTcKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA4NDM2 MTg5CmVudHJ5ICJzY2giIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNDUxOTY5NSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxMjc3MDQ2Cmp1bmtpbmcgZW50cnkgInNjaCIgaW4gZGlyZWN0 b3J5IGlub2RlIDQ1MTk2OTUKZW50cnkgImFwcHMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgODQz ODgxNSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTIwMDQ0Cmp1bmtpbmcgZW50cnkg ImFwcHMiIGluIGRpcmVjdG9yeSBpbm9kZSA4NDM4ODE1CmVudHJ5ICJ1c3gyeSIgaW4gc2hvcnRm b3JtIGRpcmVjdG9yeSA4NDM5OTQ4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwOTc1 NzQKanVua2luZyBlbnRyeSAidXN4MnkiIGluIGRpcmVjdG9yeSBpbm9kZSA4NDM5OTQ4CmVudHJ5 ICJjbG9ja2V2ZW50cyIgYXQgYmxvY2sgMCBvZmZzZXQgMTEyIGluIGRpcmVjdG9yeSBpbm9kZSA4 NDM5OTUxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1NTc3MAoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMTIuLi4KZW50cnkgInRjcCIgaW4gc2hvcnRm b3JtIGRpcmVjdG9yeSA4NDM5OTkwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIzMDUw ODgKanVua2luZyBlbnRyeSAidGNwIiBpbiBkaXJlY3RvcnkgaW5vZGUgODQzOTk5MAplbnRyeSAi Li4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA0NTI0OTA5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMzA0OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDQ1MjQ5MDkK ZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDUyNDk2 NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjgzNjkKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgImV2ZW50cyIgYXQgYmxvY2sgMCBv ZmZzZXQgMTA1NiBpbiBkaXJlY3RvcnkgaW5vZGUgODQ1NjkzNyByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAyNTMxNzkxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDEwNTYuLi4KZW50cnkgInBhcnNlciIgYXQgYmxvY2sgMCBvZmZzZXQgMTE1MiBpbiBkaXJl Y3RvcnkgaW5vZGUgODQ1NjkzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTMxODAz CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExNTIuLi4KZW50cnkg InV0aWxpdGllcyIgYXQgYmxvY2sgMCBvZmZzZXQgMTI0MCBpbiBkaXJlY3RvcnkgaW5vZGUgODQ1 NjkzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTg3MzYzCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyNDAuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVj dG9yeSA0NTI0OTY0CmVudHJ5ICJzZXJ2aWNlcyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA0NTI1 NTIwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODY5OApqdW5raW5nIGVudHJ5ICJz ZXJ2aWNlcyIgaW4gZGlyZWN0b3J5IGlub2RlIDQ1MjU1MjAKZW50cnkgInVybSIgYXQgYmxvY2sg MCBvZmZzZXQgNTYwIGluIGRpcmVjdG9yeSBpbm9kZSA0NTM2NzYzIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDUxMjk3MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA1NjAuLi4KZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rvcnkg aW5vZGUgNDU0NDk5NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTA2MjMKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9y IGRpcmVjdG9yeSA0NTQ0OTk0CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGly ZWN0b3J5IGlub2RlIDg0NTg3NjcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjU4NzM5 NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAi Z3Byb2YiIGF0IGJsb2NrIDAgb2Zmc2V0IDQ3MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDU0NTA0MSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDE3NjEKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgNDcyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgODQ1 ODc2NwplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA0 NTQ1MTMwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2MzkwNwoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0 b3J5IDQ1NDUxMzAKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rvcnkg aW5vZGUgODQ1ODkwMyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTg3Mzk1CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZv ciBkaXJlY3RvcnkgODQ1ODkwMwplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRp cmVjdG9yeSBpbm9kZSA4NDU4OTE1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1ODcz OTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4g ZW50cnkgZm9yIGRpcmVjdG9yeSA4NDU4OTE1CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQg MzIgaW4gZGlyZWN0b3J5IGlub2RlIDQ1NDU0NzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTYzOTg2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4u Cm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNDU0NTQ3MgplbnRyeSAiYnVzc2VzIiBhdCBibG9j ayAwIG9mZnNldCAyMTYgaW4gZGlyZWN0b3J5IGlub2RlIDg0NTg5NTggcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTM0Nzc2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDIxNi4uLgplbnRyeSAiaDgzMDAiIGF0IGJsb2NrIDAgb2Zmc2V0IDY0MCBpbiBkaXJl Y3RvcnkgaW5vZGUgODQ1ODk2NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzQ2NzUK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjQwLi4uCmVudHJ5ICIu LiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQ1NDU1NjggcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYzOTk5CmVudHJ5ICJwcGMiIGF0IGJsb2NrIDAgb2Zm c2V0IDcxMiBpbiBkaXJlY3RvcnkgaW5vZGUgODQ1ODk2NSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxMzQ2NzgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg NzEyLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVu dHJ5ICJodyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA4NDU5MDU3IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDEzNDY4MgpqdW5raW5nIGVudHJ5ICJodyIgaW4gZGlyZWN0b3J5IGlub2Rl IDg0NTkwNTcKZW50cnkgInVscCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA4NDU5MDU3IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzNDU2NgpqdW5raW5nIGVudHJ5ICJ1bHAiIGluIGRp cmVjdG9yeSBpbm9kZSA4NDU5MDU3CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4g ZGlyZWN0b3J5IGlub2RlIDg0NTkwNjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM0 NjgyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4u IGVudHJ5IGZvciBkaXJlY3RvcnkgODQ1OTA2MAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0 IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA4NDU5MDgxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDEzNDY4MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4u LgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDg0NTkwODEKbm8gLi4gZW50cnkgZm9yIGRpcmVj dG9yeSA0NTQ1NTY4CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5 IGlub2RlIDg0NTkxNTEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM0NTY3CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZv ciBkaXJlY3RvcnkgODQ1OTE1MQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRp cmVjdG9yeSBpbm9kZSA4NDU5MTc4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzNDU2 NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBl bnRyeSBmb3IgZGlyZWN0b3J5IDg0NTkxNzgKZW50cnkgImNhcGkiIGF0IGJsb2NrIDAgb2Zmc2V0 IDEyMCBpbiBkaXJlY3RvcnkgaW5vZGUgODQ1OTIwNiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxMzQ2MTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTIw Li4uCmVudHJ5ICJpNGwiIGF0IGJsb2NrIDAgb2Zmc2V0IDI0MCBpbiBkaXJlY3RvcnkgaW5vZGUg ODQ1OTIwNiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjk0NjEKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQwLi4uCmVudHJ5ICJzYyIgYXQgYmxvY2sg MCBvZmZzZXQgMzEyIGluIGRpcmVjdG9yeSBpbm9kZSA4NDU5MjA2IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDEyOTQ4MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAzMTIuLi4KZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rvcnkg aW5vZGUgODQ3NjUzOCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMzk3NTM1CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZv ciBkaXJlY3RvcnkgODQ3NjUzOAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRp cmVjdG9yeSBpbm9kZSA4NDc2NTYxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNTc3 NDcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4g ZW50cnkgZm9yIGRpcmVjdG9yeSA4NDc2NTYxCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQg MzIgaW4gZGlyZWN0b3J5IGlub2RlIDg0NzY1NzAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMjA1Nzc0NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4u LgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDg0NzY1NzAKZW50cnkgImhpY29sb3IiIGluIHNo b3J0Zm9ybSBkaXJlY3RvcnkgODQ5MTMyMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx MTIwMDUyCmp1bmtpbmcgZW50cnkgImhpY29sb3IiIGluIGRpcmVjdG9yeSBpbm9kZSA4NDkxMzIy CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDg1MDE1 NjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI5MzUyCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3Rvcnkg ODUwMTU2MAplbnRyeSAibWlzYyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA0NTQ5NTI2IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3MDA2MgpqdW5raW5nIGVudHJ5ICJtaXNjIiBpbiBk aXJlY3RvcnkgaW5vZGUgNDU0OTUyNgplbnRyeSAiYXBwcyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9y eSA4NTM5NjgwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMjAwNDgKanVua2luZyBl bnRyeSAiYXBwcyIgaW4gZGlyZWN0b3J5IGlub2RlIDg1Mzk2ODAKZW50cnkgImJpbiIgaW4gc2hv cnRmb3JtIGRpcmVjdG9yeSA0NTYxMDUxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDUx MjkzNgpqdW5raW5nIGVudHJ5ICJiaW4iIGluIGRpcmVjdG9yeSBpbm9kZSA0NTYxMDUxCmVudHJ5 ICJhdHN0azEwMDAiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgODU0MDMwMiByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSA1NjY1MQpqdW5raW5nIGVudHJ5ICJhdHN0azEwMDAiIGluIGRpcmVj dG9yeSBpbm9kZSA4NTQwMzAyCmVudHJ5ICJjb25maWdzIiBhdCBibG9jayAwIG9mZnNldCAxMzYg aW4gZGlyZWN0b3J5IGlub2RlIDg1NDEzODIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg NTczNTQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTM2Li4uCmVu dHJ5ICJsaWIiIGF0IGJsb2NrIDAgb2Zmc2V0IDE4NCBpbiBkaXJlY3RvcnkgaW5vZGUgODU0MTM4 MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzQxMAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODQuLi4KZW50cnkgIm1tIiBhdCBibG9jayAwIG9mZnNl dCAzNDQgaW4gZGlyZWN0b3J5IGlub2RlIDg1NDEzODIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgNjc1OTgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzQ0 Li4uCmVudHJ5ICJhcmNoLXYzMiIgYXQgYmxvY2sgMCBvZmZzZXQgMjMyIGluIGRpcmVjdG9yeSBp bm9kZSA4NTUxNDY3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1MDI0NgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMzIuLi4KZW50cnkgIi4uIiBhdCBi bG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDYyNTQ3NyByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAyMDE3ODkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA0NjI1NDc3CmVudHJ5ICJh cmNuZXQiIGF0IGJsb2NrIDEgb2Zmc2V0IDI2NjQgaW4gZGlyZWN0b3J5IGlub2RlIDg1NjMzMjUg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjM0OTcKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMjY2NC4uLgplbnRyeSAiY2FuIiBhdCBibG9jayAxIG9mZnNl dCAyNzQ0IGluIGRpcmVjdG9yeSBpbm9kZSA4NTYzMzI1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDIzNTExCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI3 NDQuLi4KZW50cnkgImUxMDAwIiBhdCBibG9jayAxIG9mZnNldCAyODE2IGluIGRpcmVjdG9yeSBp bm9kZSA4NTYzMzI1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIzNTE1CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI4MTYuLi4KZW50cnkgImZzX2VuZXQi IGF0IGJsb2NrIDEgb2Zmc2V0IDI4OTYgaW4gZGlyZWN0b3J5IGlub2RlIDg1NjMzMjUgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgOTEyMjYwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDI4OTYuLi4KZW50cnkgImlnYiIgYXQgYmxvY2sgMSBvZmZzZXQgMjk5 MiBpbiBkaXJlY3RvcnkgaW5vZGUgODU2MzMyNSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA5MTIyNzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjk5Mi4u LgplbnRyeSAiaXhwMjAwMCIgYXQgYmxvY2sgMSBvZmZzZXQgMzA1NiBpbiBkaXJlY3RvcnkgaW5v ZGUgODU2MzMyNSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA5MTIyODcKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzA1Ni4uLgplbnRyeSAicGNtY2lhIiBh dCBibG9jayAxIG9mZnNldCAzMTQ0IGluIGRpcmVjdG9yeSBpbm9kZSA4NTYzMzI1IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDkxMjMwNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzMTQ0Li4uCmVudHJ5ICJ3YW4iIGF0IGJsb2NrIDEgb2Zmc2V0IDMyNzIg aW4gZGlyZWN0b3J5IGlub2RlIDg1NjMzMjUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg OTEyNDAyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyNzIuLi4K ZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDYyNjg4 OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA5NTYKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgIlNpbXBsZSIgYXQgYmxvY2sgMCBvZmZz ZXQgNDAwIGluIGRpcmVjdG9yeSBpbm9kZSA0NjI2ODg4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDIwMzMxOQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0 MDAuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA0NjI2ODg4CmVudHJ5ICJIYXJuZXNzIiBp biBzaG9ydGZvcm0gZGlyZWN0b3J5IDQ2MjY5ODggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMjAzMzk5Cmp1bmtpbmcgZW50cnkgIkhhcm5lc3MiIGluIGRpcmVjdG9yeSBpbm9kZSA0NjI2 OTg4CmVudHJ5ICJiNDMiIGF0IGJsb2NrIDAgb2Zmc2V0IDE2OTYgaW4gZGlyZWN0b3J5IGlub2Rl IDg1NzAwMTcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgOTEyNTEyCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2OTYuLi4KZW50cnkgImxpYmVydGFzIiBh dCBibG9jayAwIG9mZnNldCAxNzg0IGluIGRpcmVjdG9yeSBpbm9kZSA4NTcwMDE3IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDkxMjU0NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAxNzg0Li4uCmVudHJ5ICJ6ZDEyMTFydyIgYXQgYmxvY2sgMCBvZmZzZXQg MTg3MiBpbiBkaXJlY3RvcnkgaW5vZGUgODU3MDAxNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSA5MTI2MTEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTg3 Mi4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA0 NjI3MDE0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDk1NgoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5 IDQ2MjcwMTQKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5v ZGUgODU3MDIyMyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA5MTI3NTYKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRp cmVjdG9yeSA4NTcwMjIzCmVudHJ5ICJLUiIgYXQgYmxvY2sgMCBvZmZzZXQgMTUyIGluIGRpcmVj dG9yeSBpbm9kZSA0NjI3Mzg2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4MTk3NAoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTIuLi4KZW50cnkgIi4u IiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDY4NDE5NyByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA0ODk4NTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA0Njg0MTk3CmVu dHJ5ICJiYWNrbGlnaHQiIGF0IGJsb2NrIDAgb2Zmc2V0IDMyNDggaW4gZGlyZWN0b3J5IGlub2Rl IDg1NzE3MTMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEzNjI0NwoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMjQ4Li4uCmVudHJ5ICJpODEwIiBhdCBi bG9jayAwIG9mZnNldCAzMzM2IGluIGRpcmVjdG9yeSBpbm9kZSA4NTcxNzEzIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDExMzYyNjAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMzMzNi4uLgplbnRyeSAibWF0cm94IiBhdCBibG9jayAwIG9mZnNldCAzNDA4 IGluIGRpcmVjdG9yeSBpbm9kZSA4NTcxNzEzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDExMzYyNzAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzQwOC4u LgplbnRyeSAicG54NDAwOCIgYXQgYmxvY2sgMCBvZmZzZXQgMzQ4OCBpbiBkaXJlY3RvcnkgaW5v ZGUgODU3MTcxMyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzI4MzU1CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM0ODguLi4KZW50cnkgInZlcm1pbGlv biIgYXQgYmxvY2sgMCBvZmZzZXQgMzU2OCBpbiBkaXJlY3RvcnkgaW5vZGUgODU3MTcxMyByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzI4MzYyCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDM1NjguLi4KZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAz MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDY4NDI3NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA0ODk4OTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4K bm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA0Njg0Mjc2CmVudHJ5ICJwYXRjaGVzIiBhdCBibG9j ayAwIG9mZnNldCAzMTIgaW4gZGlyZWN0b3J5IGlub2RlIDg1NzQwNTYgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTIxNDEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzEyLi4uCmVudHJ5ICJtb2R1bGVzIiBhdCBibG9jayAwIG9mZnNldCA0ODAgaW4gZGly ZWN0b3J5IGlub2RlIDg1NzQwNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA3Njc5 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ4MC4uLgplbnRyeSAi bGludXgtc291cmNlLTIuNi4yNiIgYXQgYmxvY2sgMCBvZmZzZXQgNzI4IGluIGRpcmVjdG9yeSBp bm9kZSA4NTc0MDU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwOTc1MzYKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNzI4Li4uCmVudHJ5ICIuLiIgYXQg YmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQ2ODQ2ODQgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTExMjEzOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDQ2ODQ2ODQKZW50cnkg ImZvbnRzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDQ2ODQ4OTAgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTI3NjE5NApqdW5raW5nIGVudHJ5ICJmb250cyIgaW4gZGlyZWN0b3J5IGlu b2RlIDQ2ODQ4OTAKZW50cnkgImZvbnRtYXAtY2ZnIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDQ2 ODQ4OTEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjE2MQpqdW5raW5nIGVudHJ5 ICJmb250bWFwLWNmZyIgaW4gZGlyZWN0b3J5IGlub2RlIDQ2ODQ4OTEKZW50cnkgImNsYXNzIiBh dCBibG9jayAwIG9mZnNldCAxOTIgaW4gZGlyZWN0b3J5IGlub2RlIDQ3MDY4NjYgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTEzNjExNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAxOTIuLi4KZW50cnkgImltYWdlIiBhdCBibG9jayAwIG9mZnNldCAyNjQg aW4gZGlyZWN0b3J5IGlub2RlIDQ3MDY4NjYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTEzNjEyMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjQuLi4K ZW50cnkgInNlcmlhbCIgYXQgYmxvY2sgMCBvZmZzZXQgMzEyIGluIGRpcmVjdG9yeSBpbm9kZSA0 NzA2ODY2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMzYxMjcKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzEyLi4uCmVudHJ5ICJMQ19USU1FIiBpbiBz aG9ydGZvcm0gZGlyZWN0b3J5IDg1NzQxOTEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg Mjg5Cmp1bmtpbmcgZW50cnkgIkxDX1RJTUUiIGluIGRpcmVjdG9yeSBpbm9kZSA4NTc0MTkxCmVu dHJ5ICJMQ19USU1FIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDg1NzQxOTUgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMjkzCmp1bmtpbmcgZW50cnkgIkxDX1RJTUUiIGluIGRpcmVjdG9y eSBpbm9kZSA4NTc0MTk1CmVudHJ5ICJMQ19USU1FIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDg1 NzQxOTkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjk3Cmp1bmtpbmcgZW50cnkgIkxD X1RJTUUiIGluIGRpcmVjdG9yeSBpbm9kZSA4NTc0MTk5CmVudHJ5ICJMQ19USU1FIiBpbiBzaG9y dGZvcm0gZGlyZWN0b3J5IDg1NzQyMDUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzAy Cmp1bmtpbmcgZW50cnkgIkxDX1RJTUUiIGluIGRpcmVjdG9yeSBpbm9kZSA4NTc0MjA1CmVudHJ5 ICJMQ19USU1FIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDg1NzQyMDYgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMzA0Cmp1bmtpbmcgZW50cnkgIkxDX1RJTUUiIGluIGRpcmVjdG9yeSBp bm9kZSA4NTc0MjA2CmVudHJ5ICJMQ19USU1FIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDg1NzQy MTAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzA4Cmp1bmtpbmcgZW50cnkgIkxDX1RJ TUUiIGluIGRpcmVjdG9yeSBpbm9kZSA4NTc0MjEwCmVudHJ5ICJVUkkiIGF0IGJsb2NrIDAgb2Zm c2V0IDM0NCBpbiBkaXJlY3RvcnkgaW5vZGUgODU3NDIyNCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxMjc2MjY2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDM0NC4uLgplbnRyeSAiVXNlciIgYXQgYmxvY2sgMCBvZmZzZXQgODg4IGluIGRpcmVjdG9yeSBp bm9kZSA4NTc0MjI0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExOTUzMDMKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODg4Li4uCmVudHJ5ICJTeXMiIGF0 IGJsb2NrIDAgb2Zmc2V0IDkyOCBpbiBkaXJlY3RvcnkgaW5vZGUgODU3NDIyNCByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxMTk1NDM0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDkyOC4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRp cmVjdG9yeSBpbm9kZSA0NzA5MzY4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMjQx MzEKZW50cnkgIkZvcm1hdCIgYXQgYmxvY2sgMCBvZmZzZXQgMzI4IGluIGRpcmVjdG9yeSBpbm9k ZSA4NTc0MjI1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMyMQoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMjguLi4KCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA0NzA5 MzY4CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQ3 MDkzODAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTk4NzUyCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3Rv cnkgNDcwOTM4MAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBp bm9kZSA0NzA5NTE4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2Mzk5OQoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiQ29sb3VyLWxz IiBhdCBibG9jayAwIG9mZnNldCA3NDQgaW4gZGlyZWN0b3J5IGlub2RlIDQ3MDk1MTggcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTk4ODU1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDc0NC4uLgplbnRyeSAiQXBhY2hlLW1vZHMiIGF0IGJsb2NrIDAgb2Zm c2V0IDg0MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDcwOTUxOCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSA1OTg3OTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg ODQwLi4uCmVudHJ5ICJFTEYtSE9XVE8iIGF0IGJsb2NrIDAgb2Zmc2V0IDI1OTIgaW4gZGlyZWN0 b3J5IGlub2RlIDQ3MDk1MTggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTk4ODY0Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1OTIuLi4KZW50cnkgIklS QyIgYXQgYmxvY2sgMCBvZmZzZXQgMjY4MCBpbiBkaXJlY3RvcnkgaW5vZGUgNDcwOTUxOCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1OTg3ODMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMjY4MC4uLgplbnRyeSAiS2lvc2stSE9XVE8iIGF0IGJsb2NrIDAg b2Zmc2V0IDM2MjQgaW4gZGlyZWN0b3J5IGlub2RlIDQ3MDk1MTggcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgNTk4ODcyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDM2MjQuLi4KZW50cnkgIkNELURpc3RyaWJ1dGlvbnMtRU4tSE9XVE8iIGF0IGJsb2NrIDEg b2Zmc2V0IDg5NiBpbiBkaXJlY3RvcnkgaW5vZGUgNDcwOTUxOCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSA1OTg4MDMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgODk2Li4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlu b2RlIDg1NzQ0MjkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUwMjQ2CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBk aXJlY3RvcnkgODU3NDQyOQplbnRyeSAiUFBQLUhPV1RPIiBhdCBibG9jayA0IG9mZnNldCA1MzYg aW4gZGlyZWN0b3J5IGlub2RlIDQ3MDk1MTggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg NTk4ODgwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDUzNi4uLgpl bnRyeSAiVU1TRE9TLUhPV1RPIiBhdCBibG9jayA0IG9mZnNldCA3NDQgaW4gZGlyZWN0b3J5IGlu b2RlIDQ3MDk1MTggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjA1MzY5CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDc0NC4uLgplbnRyeSAiVGV4dCIgaW4g c2hvcnRmb3JtIGRpcmVjdG9yeSA4NTc0ODg1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDc2NApqdW5raW5nIGVudHJ5ICJUZXh0IiBpbiBkaXJlY3RvcnkgaW5vZGUgODU3NDg4NQplbnRy eSAiQ3Vyc2VzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDg1NzQ4ODUgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjA1ODQxNQpqdW5raW5nIGVudHJ5ICJDdXJzZXMiIGluIGRpcmVjdG9y eSBpbm9kZSA4NTc0ODg1Cm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNDcwOTUxOAplbnRyeSAi c2ltIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDg1ODk4ODIgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTY0MDgyCmp1bmtpbmcgZW50cnkgInNpbSIgaW4gZGlyZWN0b3J5IGlub2RlIDg1 ODk4ODIKZW50cnkgIm1hbjUiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgODU4OTg4NyByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA5MzQKanVua2luZyBlbnRyeSAibWFuNSIgaW4gZGlyZWN0 b3J5IGlub2RlIDg1ODk4ODcKZW50cnkgImFwb2xsbyIgYXQgYmxvY2sgMCBvZmZzZXQgMTM2IGlu IGRpcmVjdG9yeSBpbm9kZSA4NjAwNjAxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQw NzI0OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzYuLi4KZW50 cnkgImZwc3AwNDAiIGF0IGJsb2NrIDAgb2Zmc2V0IDIyNCBpbiBkaXJlY3RvcnkgaW5vZGUgODYw MDYwMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MDcyNTIKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjI0Li4uCmVudHJ5ICJrZXJuZWwiIGF0IGJsb2Nr IDAgb2Zmc2V0IDI4OCBpbiBkaXJlY3RvcnkgaW5vZGUgODYwMDYwMSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSA0MDc0NjAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMjg4Li4uCmVudHJ5ICJtbSIgYXQgYmxvY2sgMCBvZmZzZXQgMzY4IGluIGRpcmVjdG9y eSBpbm9kZSA4NjAwNjAxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwNzQ4MgoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNjguLi4KZW50cnkgInN1bjMi IGF0IGJsb2NrIDAgb2Zmc2V0IDQ0OCBpbiBkaXJlY3RvcnkgaW5vZGUgODYwMDYwMSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MDk4MzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgNDQ4Li4uCmVudHJ5ICJtYW41IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5 IDg2MDY2MjQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgODAwCmp1bmtpbmcgZW50cnkg Im1hbjUiIGluIGRpcmVjdG9yeSBpbm9kZSA4NjA2NjI0CmVudHJ5ICJoIiBpbiBzaG9ydGZvcm0g ZGlyZWN0b3J5IDg2MDY2NTEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgODE5Cmp1bmtp bmcgZW50cnkgImgiIGluIGRpcmVjdG9yeSBpbm9kZSA4NjA2NjUxCmVudHJ5ICJtIiBpbiBzaG9y dGZvcm0gZGlyZWN0b3J5IDg2MDY2NTEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgODIx Cmp1bmtpbmcgZW50cnkgIm0iIGluIGRpcmVjdG9yeSBpbm9kZSA4NjA2NjUxCmVudHJ5ICJzIiBp biBzaG9ydGZvcm0gZGlyZWN0b3J5IDg2MDY2NTEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgODI1Cmp1bmtpbmcgZW50cnkgInMiIGluIGRpcmVjdG9yeSBpbm9kZSA4NjA2NjUxCmVudHJ5 ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDg2MDgxODMgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgOTQ5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJTaWdBY3Rpb24iIGF0IGJsb2NrIDEgb2Zmc2V0 IDQwIGluIGRpcmVjdG9yeSBpbm9kZSA4NjA4MTgzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDI4MTkzMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MC4u LgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA0NzEx MDM4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDYwNTM5NwoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5 IDg2MDgxODMKbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA0NzExMDM4CmVudHJ5ICJib290IiBh dCBibG9jayAwIG9mZnNldCAxOTIgaW4gZGlyZWN0b3J5IGlub2RlIDg2MDgxODkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgNDIyOTk4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDE5Mi4uLgplbnRyeSAiZnciIGF0IGJsb2NrIDAgb2Zmc2V0IDI5NiBpbiBk aXJlY3RvcnkgaW5vZGUgODYwODE4OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjMw NDgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjk2Li4uCmVudHJ5 ICJqbXIzOTI3IiBhdCBibG9jayAwIG9mZnNldCAzNTIgaW4gZGlyZWN0b3J5IGlub2RlIDg2MDgx ODkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDIzMDUyCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM1Mi4uLgplbnRyeSAibGFzYXQiIGF0IGJsb2NrIDAg b2Zmc2V0IDQwMCBpbiBkaXJlY3RvcnkgaW5vZGUgODYwODE4OSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSA0MjMwNTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgNDAwLi4uCmVudHJ5ICJsaWIiIGF0IGJsb2NrIDAgb2Zmc2V0IDQ0MCBpbiBkaXJlY3Rvcnkg aW5vZGUgODYwODE4OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0OTAwMDcKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDQwLi4uCmVudHJ5ICJtbSIgYXQg YmxvY2sgMCBvZmZzZXQgNTI4IGluIGRpcmVjdG9yeSBpbm9kZSA4NjA4MTg5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDY0OTE1NgplbnRyeSAiY2lvIiBhdCBibG9jayAwIG9mZnNldCAy MjQgaW4gZGlyZWN0b3J5IGlub2RlIDQ3MTYxNDQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgOTEyODYzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIyNC4u LgplbnRyeSAic2NzaSIgYXQgYmxvY2sgMCBvZmZzZXQgMjk2IGluIGRpcmVjdG9yeSBpbm9kZSA0 NzE2MTQ0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDkxMjg5MwoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyOTYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgNTI4Li4uCmVudHJ5ICJwbWMtc2llcnJhIiBhdCBibG9jayAw IG9mZnNldCA2MDAgaW4gZGlyZWN0b3J5IGlub2RlIDg2MDgxODkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTExMjEzOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA2MDAuLi4KZW50cnkgInNnaS1pcDI3IiBhdCBibG9jayAwIG9mZnNldCA2NDggaW4gZGly ZWN0b3J5IGlub2RlIDg2MDgxODkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTExMjE0 MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2NDguLi4KZW50cnkg InNuaSIgYXQgYmxvY2sgMCBvZmZzZXQgNzIwIGluIGRpcmVjdG9yeSBpbm9kZSA4NjA4MTg5IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMjQxMTUKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgNzIwLi4uCmVudHJ5ICJ0eDQ5MzgiIGF0IGJsb2NrIDAgb2Zm c2V0IDc2MCBpbiBkaXJlY3RvcnkgaW5vZGUgODYwODE4OSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxMTI0MTI2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDc2MC4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9k ZSA0NzE2MTk5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDkxMjQwMgoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGly ZWN0b3J5IDQ3MTYxOTkKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rv cnkgaW5vZGUgODYwODE5NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA5NTYKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9y IGRpcmVjdG9yeSA4NjA4MTk0CmVudHJ5ICJlYSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA4NjA4 MjAwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDc1MzUKanVua2luZyBlbnRyeSAiZWEi IGluIGRpcmVjdG9yeSBpbm9kZSA4NjA4MjAwCmVudHJ5ICJudCIgaW4gc2hvcnRmb3JtIGRpcmVj dG9yeSA4NjA4MjAwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDc1NDIKanVua2luZyBl bnRyeSAibnQiIGluIGRpcmVjdG9yeSBpbm9kZSA4NjA4MjAwCmVudHJ5ICJzZWQtNC4xLjUiIGF0 IGJsb2NrIDAgb2Zmc2V0IDcyIGluIGRpcmVjdG9yeSBpbm9kZSA4NjE1NzE5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDc1NjAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgNzIuLi4KZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rv cnkgaW5vZGUgODYxNTc2MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjA1MwoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBm b3IgZGlyZWN0b3J5IDg2MTU3NjEKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBk aXJlY3RvcnkgaW5vZGUgODYxNTc3NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjA2 MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBl bnRyeSBmb3IgZGlyZWN0b3J5IDg2MTU3NzUKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAz MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDc5NDYwOSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA2MDUzOTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4K bm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA0Nzk0NjA5CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBv ZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQ3OTQ2MzQgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgNjA1Mzk3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNDc5NDYzNAplbnRyeSAiLi4iIGF0IGJs b2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA0Nzk0OTU0IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDY0OTEwOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDQ3OTQ5NTQKZW50cnkgIi4u IiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDgxMzczNiByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNzAwNzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgImlzby0xNTQ0NSIgYXQgYmxvY2sgMCBvZmZzZXQg MTYwIGluIGRpcmVjdG9yeSBpbm9kZSA0ODEzNzM2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE3MDA3MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNjAu Li4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA0ODEzNzM2CmVudHJ5ICIuLiIgYXQgYmxvY2sg MCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQ4MTM3NzkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTUwOTcxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNDgxMzc3OQplbnRyeSAiLi4iIGF0 IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA0ODEzODc5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDE1MDk3NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVj dG9yeSBpbm9kZSA4NjU5MzA5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMyMDYxCm5v IC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNDgxMzg3OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGlu IGRpcmVjdG9yeSBpbm9kZSA0ODEzODg5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1 MDk3NwpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDg2NTkzMDkKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA0 ODEzODg5CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2Rl IDg2NTkzNDQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzIwNjEKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgImRyaXZlciIgaW4gc2hv cnRmb3JtIGRpcmVjdG9yeSA0ODEzOTUzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1 MTY2NApqdW5raW5nIGVudHJ5ICJkcml2ZXIiIGluIGRpcmVjdG9yeSBpbm9kZSA0ODEzOTUzCmVu dHJ5ICJUZWxfQXZpdiIgYXQgYmxvY2sgMCBvZmZzZXQgMzM2IGluIGRpcmVjdG9yeSBpbm9kZSA4 NjU5MzQ0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDc1ODIKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzM2Li4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBv ZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQ4MTM5NTQgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTUxMDAyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDMyLi4uCmVudHJ5ICJTZW91bCIgYXQgYmxvY2sgMCBvZmZzZXQgNTkyIGluIGRpcmVjdG9yeSBp bm9kZSA4NjU5MzQ0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDc1NzMKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTkyLi4uCmVudHJ5ICJKZXJ1c2FsZW0i IGF0IGJsb2NrIDAgb2Zmc2V0IDg4MCBpbiBkaXJlY3RvcnkgaW5vZGUgODY1OTM0NCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA3NTgyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDg4MC4uLgplbnRyeSAiU2luZ2Fwb3JlIiBhdCBibG9jayAwIG9mZnNldCAx MTA0IGluIGRpcmVjdG9yeSBpbm9kZSA4NjU5MzQ0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDc1ODMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTEwNC4u LgplbnRyeSAiVGFpcGVpIiBhdCBibG9jayAwIG9mZnNldCAxMjk2IGluIGRpcmVjdG9yeSBpbm9k ZSA4NjU5MzQ0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDc1NzEKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTI5Ni4uLgpubyAuLiBlbnRyeSBmb3IgZGly ZWN0b3J5IDQ4MTM5NTQKbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA4NjU5MzQ0CmVudHJ5ICIu LiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDg2NjMzOTIgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzIwNjEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgIkphbWFpY2EiIGF0IGJsb2NrIDAgb2Zmc2V0IDQ4 IGluIGRpcmVjdG9yeSBpbm9kZSA4NjYzMzkyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDMyMDQ0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ4Li4uCmVu dHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQ4MTQwOTcg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTcwMzcxCmVudHJ5ICJIYXZhbmEiIGF0IGJs b2NrIDAgb2Zmc2V0IDk2IGluIGRpcmVjdG9yeSBpbm9kZSA4NjYzMzkyIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDEwODYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgOTYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIu Li4KZW50cnkgIktlbnR1Y2t5IiBhdCBibG9jayAwIG9mZnNldCA2NTYgaW4gZGlyZWN0b3J5IGlu b2RlIDg2NjMzOTIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTY2NDcKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjU2Li4uCmVudHJ5ICJTYW9fUGF1bG8i IGF0IGJsb2NrIDAgb2Zmc2V0IDgyNCBpbiBkaXJlY3RvcnkgaW5vZGUgODY2MzM5MiByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMDgxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDgyNC4uLgplbnRyeSAiS25veF9JTiIgYXQgYmxvY2sgMCBvZmZzZXQgOTc2 IGluIGRpcmVjdG9yeSBpbm9kZSA4NjYzMzkyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDc1NzkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgOTc2Li4uCm5v IC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNDgxNDA5NwplbnRyeSAiQWRhayIgYXQgYmxvY2sgMCBv ZmZzZXQgMTQ0MCBpbiBkaXJlY3RvcnkgaW5vZGUgODY2MzM5MiByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSA3NTgwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDE0NDAuLi4KZW50cnkgIkluZGlhbmFwb2xpcyIgYXQgYmxvY2sgMCBvZmZzZXQgMTcyMCBpbiBk aXJlY3RvcnkgaW5vZGUgODY2MzM5MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA3NTc4 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3MjAuLi4KZW50cnkg Ik1hbmF1cyIgYXQgYmxvY2sgMCBvZmZzZXQgMTkzNiBpbiBkaXJlY3RvcnkgaW5vZGUgODY2MzM5 MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMDgyCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE5MzYuLi4KZW50cnkgIkRldHJvaXQiIGF0IGJsb2NrIDAg b2Zmc2V0IDE5NjAgaW4gZGlyZWN0b3J5IGlub2RlIDg2NjMzOTIgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgNzU4MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAxOTYwLi4uCmVudHJ5ICJGb3J0X1dheW5lIiBhdCBibG9jayAwIG9mZnNldCAyMTA0IGluIGRp cmVjdG9yeSBpbm9kZSA4NjYzMzkyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDc1NzgK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjEwNC4uLgplbnRyeSAi TG91aXN2aWxsZSIgYXQgYmxvY2sgMCBvZmZzZXQgMjI0OCBpbiBkaXJlY3RvcnkgaW5vZGUgODY2 MzM5MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTE0OAoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMjQ4Li4uCmVudHJ5ICJSaW9fQnJhbmNvIiBhdCBi bG9jayAwIG9mZnNldCAyNDY0IGluIGRpcmVjdG9yeSBpbm9kZSA4NjYzMzkyIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDEwNzkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMjQ2NC4uLgplbnRyeSAiUG9ydG9fQWNyZSIgYXQgYmxvY2sgMCBvZmZzZXQgMjU2 MCBpbiBkaXJlY3RvcnkgaW5vZGUgODY2MzM5MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxMDc5CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2Rl IDQ4MTQzNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTcwMzcyCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1NjAuLi4KZW50cnkgIk5vcm9uaGEiIGF0IGJsb2NrIDAg b2Zmc2V0IDI2MzIgaW4gZGlyZWN0b3J5IGlub2RlIDg2NjMzOTIgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTA4MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAyNjMyLi4uCmVudHJ5ICJBdGthIiBhdCBibG9jayAwIG9mZnNldCAzMTUyIGluIGRpcmVjdG9y eSBpbm9kZSA4NjYzMzkyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDc1ODAKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzE1Mi4uLgpubyAuLiBlbnRyeSBm b3IgZGlyZWN0b3J5IDg2NjMzOTIKbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA0ODE0MzU2CmVu dHJ5ICJnZW5lcmljIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDg2NjM0MzYgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgNDkyNjg4Cmp1bmtpbmcgZW50cnkgImdlbmVyaWMiIGluIGRpcmVj dG9yeSBpbm9kZSA4NjYzNDM2CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGly ZWN0b3J5IGlub2RlIDg2NjM1MTIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzIwNTMK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgIlN5 c3RlbVYiIGF0IGJsb2NrIDAgb2Zmc2V0IDEzNiBpbiBkaXJlY3RvcnkgaW5vZGUgODY2MzUxMiBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NjY3MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAxMzYuLi4KZW50cnkgIlBhY2lmaWMiIGF0IGJsb2NrIDAgb2Zm c2V0IDQwOCBpbiBkaXJlY3RvcnkgaW5vZGUgODY2MzUxMiByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSA1NzA2OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0 MDguLi4KZW50cnkgIk5hdmFqbyIgYXQgYmxvY2sgMCBvZmZzZXQgNDQ4IGluIGRpcmVjdG9yeSBp bm9kZSA4NjYzNTEyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMTc3CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ0OC4uLgplbnRyeSAiQXNpYSIgYXQg YmxvY2sgMCBvZmZzZXQgNjMyIGluIGRpcmVjdG9yeSBpbm9kZSA4NjYzNTEyIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDU3MTAzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDYzMi4uLgplbnRyeSAiUFJDIiBhdCBibG9jayAwIG9mZnNldCA2NDggaW4gZGly ZWN0b3J5IGlub2RlIDg2NjM1MTIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEyMzEK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjQ4Li4uCmVudHJ5ICJL d2FqYWxlaW4iIGF0IGJsb2NrIDAgb2Zmc2V0IDcxMiBpbiBkaXJlY3RvcnkgaW5vZGUgODY2MzUx MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTIwMgoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCA3MTIuLi4KZW50cnkgIk5aLUNIQVQiIGF0IGJsb2NrIDAg b2Zmc2V0IDc2MCBpbiBkaXJlY3RvcnkgaW5vZGUgODY2MzUxMiByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAyMTE4MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCA3NjAuLi4KZW50cnkgIkphcGFuIiBhdCBibG9jayAwIG9mZnNldCA4MTYgaW4gZGlyZWN0b3J5 IGlub2RlIDg2NjM1MTIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEyNTQKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODE2Li4uCmVudHJ5ICIuLiIgYXQg YmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQ4MTU0MTUgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTEyNDE0MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiTWV4aWNvIiBhdCBibG9jayAwIG9mZnNldCA5NjAgaW4g ZGlyZWN0b3J5IGlub2RlIDg2NjM1MTIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTcy NDMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgOTYwLi4uCmVudHJ5 ICJOWiIgYXQgYmxvY2sgMCBvZmZzZXQgOTg0IGluIGRpcmVjdG9yeSBpbm9kZSA4NjYzNTEyIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMTg1CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDk4NC4uLgplbnRyeSAiSXJhbiIgYXQgYmxvY2sgMCBvZmZzZXQg MTAwMCBpbiBkaXJlY3RvcnkgaW5vZGUgODY2MzUxMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyMTI5MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMDAw Li4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNDgxNTQxNQplbnRyeSAiSG9uZ2tvbmciIGF0 IGJsb2NrIDAgb2Zmc2V0IDExNDQgaW4gZGlyZWN0b3J5IGlub2RlIDg2NjM1MTIgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjEyNDkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTE0NC4uLgplbnRyeSAiQW1lcmljYSIgYXQgYmxvY2sgMCBvZmZzZXQgMTI0 MCBpbiBkaXJlY3RvcnkgaW5vZGUgODY2MzUxMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA1NzI0NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMjQwLi4u CmVudHJ5ICJUdXJrZXkiIGF0IGJsb2NrIDAgb2Zmc2V0IDEyODAgaW4gZGlyZWN0b3J5IGlub2Rl IDg2NjM1MTIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEyNjYKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTI4MC4uLgplbnRyeSAibWYuYmFzZSIgaW4g c2hvcnRmb3JtIGRpcmVjdG9yeSA0ODE1NDc3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDIwNTg3MTkKbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA4NjYzNTEyCmp1bmtpbmcgZW50cnkg Im1mLmJhc2UiIGluIGRpcmVjdG9yeSBpbm9kZSA0ODE1NDc3CmVudHJ5ICJtZi5sb2ciIGluIHNo b3J0Zm9ybSBkaXJlY3RvcnkgNDgxNTQ3NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAy MDU4NzE4Cmp1bmtpbmcgZW50cnkgIm1mLmxvZyIgaW4gZGlyZWN0b3J5IGlub2RlIDQ4MTU0NzcK ZW50cnkgImpicyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA4NjYzNTE1IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDExMTIxMzMKZW50cnkgInBkZnRleCIgaW4gc2hvcnRmb3JtIGRpcmVj dG9yeSA0ODE1NDc4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNTg5MjEKanVua2lu ZyBlbnRyeSAicGRmdGV4IiBpbiBkaXJlY3RvcnkgaW5vZGUgNDgxNTQ3OApqdW5raW5nIGVudHJ5 ICJqYnMiIGluIGRpcmVjdG9yeSBpbm9kZSA4NjYzNTE1CmVudHJ5ICJkZXZhc2NpaSIgaW4gc2hv cnRmb3JtIGRpcmVjdG9yeSA4NjYzNTI2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3 NDQwCmp1bmtpbmcgZW50cnkgImRldmFzY2lpIiBpbiBkaXJlY3RvcnkgaW5vZGUgODY2MzUyNgpl bnRyeSAiZGV2YXNjaWk4IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDg2NjM1MjYgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgNTc0NDYKanVua2luZyBlbnRyeSAiZGV2YXNjaWk4IiBpbiBk aXJlY3RvcnkgaW5vZGUgODY2MzUyNgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGlu IGRpcmVjdG9yeSBpbm9kZSA0ODE1NTc4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEz NTUwMDQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50 cnkgIkFsYXNrYSIgYXQgYmxvY2sgMCBvZmZzZXQgNzIgaW4gZGlyZWN0b3J5IGlub2RlIDg2NjM1 NDAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjExNzEKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNzIuLi4KZW50cnkgIkFyaXpvbmEiIGF0IGJsb2NrIDAg b2Zmc2V0IDk2IGluIGRpcmVjdG9yeSBpbm9kZSA4NjYzNTQwIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDIxMTgwCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNDgxNTU3OAoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5Ni4uLgplbnRyeSAiQ2VudHJhbCIg YXQgYmxvY2sgMCBvZmZzZXQgMTIwIGluIGRpcmVjdG9yeSBpbm9kZSA4NjYzNTQwIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMTcwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDEyMC4uLgplbnRyeSAiUGFjaWZpYyIgYXQgYmxvY2sgMCBvZmZzZXQgMTQ0 IGluIGRpcmVjdG9yeSBpbm9kZSA4NjYzNTQwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDIxMTc5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE0NC4uLgpl bnRyeSAiSGF3YWlpIiBhdCBibG9jayAwIG9mZnNldCAyMDAgaW4gZGlyZWN0b3J5IGlub2RlIDg2 NjM1NDAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjExNzMKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjAwLi4uCmVudHJ5ICJNb3VudGFpbiIgYXQgYmxv Y2sgMCBvZmZzZXQgMjI0IGluIGRpcmVjdG9yeSBpbm9kZSA4NjYzNTQwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDIxMTc3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDIyNC4uLgplbnRyeSAiRWFzdGVybiIgYXQgYmxvY2sgMCBvZmZzZXQgMjQ4IGluIGRp cmVjdG9yeSBpbm9kZSA4NjYzNTQwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMTY5 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI0OC4uLgplbnRyeSAi U2Ftb2EiIGF0IGJsb2NrIDAgb2Zmc2V0IDI3MiBpbiBkaXJlY3RvcnkgaW5vZGUgODY2MzU0MCBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTIwMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAyNzIuLi4KZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAz MiBpbiBkaXJlY3RvcnkgaW5vZGUgODY2MzY1NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAzMjA1MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpu byAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDg2NjM2NTQKZW50cnkgIi4uIiBhdCBibG9jayAwIG9m ZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgODY2MzY3MiByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAzMjA1MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz Mi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDg2NjM2NzIKZW50cnkgIi5kZXYiIGluIHNo b3J0Zm9ybSBkaXJlY3RvcnkgODY2MzczNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAy MTYwNDUKanVua2luZyBlbnRyeSAiLmRldiIgaW4gZGlyZWN0b3J5IGlub2RlIDg2NjM3MzcKZW50 cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgODY2Mzc2NSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTEyMTM4CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgODY2 Mzc2NQplbnRyeSAic2dtbCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA4NjYzODE0IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1MDk2NApqdW5raW5nIGVudHJ5ICJzZ21sIiBpbiBkaXJl Y3RvcnkgaW5vZGUgODY2MzgxNAplbnRyeSAiYXBwbGljYXRpb25zIiBpbiBzaG9ydGZvcm0gZGly ZWN0b3J5IDg2NjM4MTQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA1ODk0MApqdW5r aW5nIGVudHJ5ICJhcHBsaWNhdGlvbnMiIGluIGRpcmVjdG9yeSBpbm9kZSA4NjYzODE0CmVudHJ5 ICJtaW1lIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDg2NjM4MTQgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMjA1ODk0MQpqdW5raW5nIGVudHJ5ICJtaW1lIiBpbiBkaXJlY3RvcnkgaW5v ZGUgODY2MzgxNAplbnRyeSAicHl0aG9uMi41IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDg2NjM4 MTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjQ5MTg3Cmp1bmtpbmcgZW50cnkgInB5 dGhvbjIuNSIgaW4gZGlyZWN0b3J5IGlub2RlIDg2NjM4MTUKZW50cnkgImNmZSIgaW4gc2hvcnRm b3JtIGRpcmVjdG9yeSA4NjYzODI5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMTIx NTkKanVua2luZyBlbnRyeSAiY2ZlIiBpbiBkaXJlY3RvcnkgaW5vZGUgODY2MzgyOQplbnRyeSAi Li4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA4NjcyMjExIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMjQxMzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA4NjcyMjEx CmVudHJ5ICJsb2NhbGVzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDg3MDczNDcgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTUwODE3Cmp1bmtpbmcgZW50cnkgImxvY2FsZXMiIGluIGRp cmVjdG9yeSBpbm9kZSA4NzA3MzQ3CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4g ZGlyZWN0b3J5IGlub2RlIDg3MDczNTAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEy NDE1OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAu LiBlbnRyeSBmb3IgZGlyZWN0b3J5IDg3MDczNTAKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNl dCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgODczMTUwOSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyMDM3MzYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIu Li4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA4NzMxNTA5CmVudHJ5ICIuLiIgYXQgYmxvY2sg MCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDg3MzE1ODQgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTEyNDE1OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDg3MzE1ODQKZW50cnkgIi4uIiBh dCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgODczMTU5NSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxMTU1Nzg5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgODczMTU5NQplbnRy eSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA4NzMxNjYwIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExNTU3ODkKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA4NzMx NjYwCmVudHJ5ICJ3cml0aW5nX3VkZXZfcnVsZXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDU3NiBpbiBk aXJlY3RvcnkgaW5vZGUgODczMTY2NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTYw MzYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTc2Li4uCmVudHJ5 ICJnaWdhc2V0IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDg3NDQ0NjYgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjg0MTQ3Cmp1bmtpbmcgZW50cnkgImdpZ2FzZXQiIGluIGRpcmVjdG9y eSBpbm9kZSA4NzQ0NDY2CmVudHJ5ICJzYyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA4NzQ0NDY2 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NDE1MgpqdW5raW5nIGVudHJ5ICJzYyIg aW4gZGlyZWN0b3J5IGlub2RlIDg3NDQ0NjYKZW50cnkgInNsYXZlcyIgYXQgYmxvY2sgMCBvZmZz ZXQgMzQ0IGluIGRpcmVjdG9yeSBpbm9kZSA4NzQ2NjAwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDEzMjgzNjcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzQ0Li4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2Rl IDg3ODM0OTcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE1NTc4OQoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGly ZWN0b3J5IDg3ODM0OTcKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rv cnkgaW5vZGUgODc5MDY3NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTU1Nzg5CmVu dHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQ4MTk3MDkg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUyMTIxCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgODc5 MDY3NAplbnRyeSAiZGxtIiBhdCBibG9jayAwIG9mZnNldCAxNTIwIGluIGRpcmVjdG9yeSBpbm9k ZSA4ODA3MzYxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMjExMTUKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTUyMC4uLgplbnRyeSAicXVvdGEiIGF0 IGJsb2NrIDAgb2Zmc2V0IDI5NTIgaW4gZGlyZWN0b3J5IGlub2RlIDg4MDg2NzkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjEyMTIxNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAyOTUyLi4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4g ZGlyZWN0b3J5IGlub2RlIDg4MDk5MDYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA5 NzUzNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRy eSAiYXNtLWZydiIgYXQgYmxvY2sgMCBvZmZzZXQgMjA4IGluIGRpcmVjdG9yeSBpbm9kZSA4ODA5 OTA2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMjMwODcKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjA4Li4uCmVudHJ5ICJhc20taWE2NCIgYXQgYmxv Y2sgMCBvZmZzZXQgMjgwIGluIGRpcmVjdG9yeSBpbm9kZSA4ODA5OTA2IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDIxMjM4MTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMjgwLi4uCmVudHJ5ICJhc20tbTMyciIgYXQgYmxvY2sgMCBvZmZzZXQgMzA0IGlu IGRpcmVjdG9yeSBpbm9kZSA4ODA5OTA2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIx MjM5OTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzA0Li4uCmVu dHJ5ICJhc20tbWlwcyIgYXQgYmxvY2sgMCBvZmZzZXQgMzc2IGluIGRpcmVjdG9yeSBpbm9kZSA4 ODA5OTA2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMjQxMzEKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzc2Li4uCmVudHJ5ICJhc20tbW4xMDMwMCIg YXQgYmxvY2sgMCBvZmZzZXQgNDAwIGluIGRpcmVjdG9yeSBpbm9kZSA4ODA5OTA2IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMjQ0NTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgNDAwLi4uCmVudHJ5ICJhc20tcGFyaXNjIiBhdCBibG9jayAwIG9mZnNl dCA0MjQgaW4gZGlyZWN0b3J5IGlub2RlIDg4MDk5MDYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjEyNDU5NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0 MjQuLi4KZW50cnkgImFzbS1zMzkwIiBhdCBibG9jayAwIG9mZnNldCA0OTYgaW4gZGlyZWN0b3J5 IGlub2RlIDg4MDk5MDYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEyNDc1NQoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0OTYuLi4KZW50cnkgImFzbS1z cGFyYzY0IiBhdCBibG9jayAwIG9mZnNldCA1NjggaW4gZGlyZWN0b3J5IGlub2RlIDg4MDk5MDYg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEyNTA5OQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCA1NjguLi4KZW50cnkgImtleXMiIGF0IGJsb2NrIDAgb2Zm c2V0IDcxMiBpbiBkaXJlY3RvcnkgaW5vZGUgODgwOTkwNiByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAyMTI1MzUwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDcxMi4uLgplbnRyeSAibmV0IiBhdCBibG9jayAwIG9mZnNldCA4MDAgaW4gZGlyZWN0b3J5IGlu b2RlIDg4MDk5MDYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEyNjAwMgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4MDAuLi4KZW50cnkgInBjbWNpYSIg YXQgYmxvY2sgMCBvZmZzZXQgODE2IGluIGRpcmVjdG9yeSBpbm9kZSA4ODA5OTA2IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMjYxNTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgODE2Li4uCmVudHJ5ICJzb3VuZCIgYXQgYmxvY2sgMCBvZmZzZXQgODg4 IGluIGRpcmVjdG9yeSBpbm9kZSA4ODA5OTA2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDIxMjYxNjcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODg4Li4u Cm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgODgwOTkwNgplbnRyeSAiYXJjaC1hdDkxIiBhdCBi bG9jayAwIG9mZnNldCAzMjMyIGluIGRpcmVjdG9yeSBpbm9kZSA4ODA5OTA4IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDIxMjEyMzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMzIzMi4uLgplbnRyeSAiYXJjaC1lYnNhMTEwIiBhdCBibG9jayAwIG9mZnNl dCAzMzI4IGluIGRpcmVjdG9yeSBpbm9kZSA4ODA5OTA4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDIxMjI3MjEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzMyOC4uLgplbnRyeSAiYXJjaC1pbXgiIGF0IGJsb2NrIDAgb2Zmc2V0IDM0MjQgaW4gZGlyZWN0 b3J5IGlub2RlIDg4MDk5MDggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEyMjczMwoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNDI0Li4uCmVudHJ5ICJh cmNoLWlvcDMzeCIgYXQgYmxvY2sgMCBvZmZzZXQgMzUyOCBpbiBkaXJlY3RvcnkgaW5vZGUgODgw OTkwOCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTIyNzg1CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM1MjguLi4KZW50cnkgImFyY2gta3M4Njk1IiBh dCBibG9jayAwIG9mZnNldCAzNjI0IGluIGRpcmVjdG9yeSBpbm9kZSA4ODA5OTA4IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMjI4MDIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMzYyNC4uLgplbnRyeSAiYXJjaC1teGMiIGF0IGJsb2NrIDAgb2Zmc2V0 IDM3MjAgaW4gZGlyZWN0b3J5IGlub2RlIDg4MDk5MDggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjEyMjgyOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz NzIwLi4uCmVudHJ5ICJhcmNoLW9yaW9uNXgiIGF0IGJsb2NrIDAgb2Zmc2V0IDM4MTYgaW4gZGly ZWN0b3J5IGlub2RlIDg4MDk5MDggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEyMjg0 MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzODE2Li4uCmVudHJ5 ICJhcmNoLXJwYyIgYXQgYmxvY2sgMCBvZmZzZXQgMzkxMiBpbiBkaXJlY3RvcnkgaW5vZGUgODgw OTkwOCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTIyOTIxCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM5MTIuLi4KZW50cnkgImFyY2gtc2hhcmsiIGF0 IGJsb2NrIDAgb2Zmc2V0IDQwMDggaW4gZGlyZWN0b3J5IGlub2RlIDg4MDk5MDggcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjEyMjkzNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCA0MDA4Li4uCmVudHJ5ICJwbGF0LW9yaW9uIiBhdCBibG9jayAxIG9mZnNl dCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgODgwOTkwOCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyMTIyOTQ2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMy Li4uCmVudHJ5ICJtYWNoLWJmNTMzIiBhdCBibG9jayAwIG9mZnNldCAyNzkyIGluIGRpcmVjdG9y eSBpbm9kZSA4ODEwNjYxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMjI5NjQKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjc5Mi4uLgplbnRyeSAibWFj aC1jb21tb24iIGF0IGJsb2NrIDAgb2Zmc2V0IDI4ODggaW4gZGlyZWN0b3J5IGlub2RlIDg4MTA2 NjEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEyMzA0MQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyODg4Li4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBv ZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDg4MTA4MzYgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjEyMzA0NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDg4MTA4MzYKZW50cnkgIi4uIiBhdCBi bG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgODgxNTExMCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAyMTI0MTMxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgODgxNTExMAplbnRyeSAi Li4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA4ODE1MTg0IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMjQxMzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA4ODE1MTg0 CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDg4MTUy MDIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEyNDEzMQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5 IDg4MTUyMDIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4K bm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA0ODE5NzA5CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBv ZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDg4MTY0NjggcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjA5NzUzNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDg4MTY0NjgKZW50cnkgIi4uIiBhdCBi bG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDg2MTUyNSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMTI0MTU4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJsaWJmZHQiIGF0IGJsb2NrIDAgb2Zmc2V0IDI1NzYgaW4g ZGlyZWN0b3J5IGlub2RlIDQ4NjE1MjUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEy NDg5OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNTc2Li4uCm5v IC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNDg2MTUyNQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zm c2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA0ODYyNDQ4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDQ2Nzg1OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz Mi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDQ4NjI0NDgKZW50cnkgInhwcnRyZG1hIiBh dCBibG9jayAwIG9mZnNldCA2MjQgaW4gZGlyZWN0b3J5IGlub2RlIDg4MjE5NDMgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjE1MzQ5OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCA2MjQuLi4KZW50cnkgInVscCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA4 ODIzNDg5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NDI2NQpqdW5raW5nIGVudHJ5 ICJ1bHAiIGluIGRpcmVjdG9yeSBpbm9kZSA4ODIzNDg5CmVudHJ5ICJodyIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSA4ODIzNDg5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NDI2Ngpq dW5raW5nIGVudHJ5ICJodyIgaW4gZGlyZWN0b3J5IGlub2RlIDg4MjM0ODkKZW50cnkgIi4uIiBh dCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgODgyMzQ5OCByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAyODQxNDYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA4ODIzNDk4CmVudHJ5 ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDg4MjM1MTAgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg0MTQ2CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJzaXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDUw NCBpbiBkaXJlY3RvcnkgaW5vZGUgODgyMzUxMCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyODQzMzYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTA0Li4u CmVudHJ5ICJ2ZXJtaWxpb24iIGF0IGJsb2NrIDAgb2Zmc2V0IDExMjAgaW4gZGlyZWN0b3J5IGlu b2RlIDg4MjM1MTAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg0MzM4CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExMjAuLi4KZW50cnkgInNhdmFnZSIg YXQgYmxvY2sgMCBvZmZzZXQgMjA4MCBpbiBkaXJlY3RvcnkgaW5vZGUgODgyMzUxMCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODQzNDEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMjA4MC4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDg4MjM1MTAK ZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgODgyMzYx MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODQxNDYKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA4 ODIzNjEyCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2Rl IDQ4ODEzNzYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjU2MTQyCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICIuLiIgYXQgYmxvY2sg MCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDg4MjM2MzQgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMjg0NDM0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNDg4MTM3NgplbnRyeSAicnQyeDAw IiBhdCBibG9jayAwIG9mZnNldCAzNjAgaW4gZGlyZWN0b3J5IGlub2RlIDg4MjM2MzQgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg0NTUwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDM2MC4uLgplbnRyeSAiYjQzbGVnYWN5IiBhdCBibG9jayAwIG9mZnNl dCAxNjY0IGluIGRpcmVjdG9yeSBpbm9kZSA4ODIzNjM0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDI4NDU1OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAx NjY0Li4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgODgyMzYzNAplbnRyeSAiLi4iIGF0IGJs b2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA4ODIzNzE3IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDI4NDE0NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzMi4uLgplbnRyeSAiZGV2aWNlcyIgYXQgYmxvY2sgMCBvZmZzZXQgNTI4IGluIGRp cmVjdG9yeSBpbm9kZSA4ODIzNzE3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NDY1 NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1MjguLi4KZW50cnkg Im9uZW5hbmQiIGF0IGJsb2NrIDAgb2Zmc2V0IDExMjAgaW4gZGlyZWN0b3J5IGlub2RlIDg4MjM3 MTcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg0NjY5CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExMjAuLi4KZW50cnkgIjEwMGRwaSIgaW4gc2hvcnRm b3JtIGRpcmVjdG9yeSA0OTM3OTIxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDUw ODcKanVua2luZyBlbnRyeSAiMTAwZHBpIiBpbiBkaXJlY3RvcnkgaW5vZGUgNDkzNzkyMQplbnRy eSAiNzVkcGkiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNDkzNzkyMSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxOTM5MjA3Cmp1bmtpbmcgZW50cnkgIjc1ZHBpIiBpbiBkaXJlY3Rvcnkg aW5vZGUgNDkzNzkyMQplbnRyeSAibWlzYyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA0OTM3OTIx IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5Mzk2NzAKbm8gLi4gZW50cnkgZm9yIGRp cmVjdG9yeSA4ODIzNzE3Cmp1bmtpbmcgZW50cnkgIm1pc2MiIGluIGRpcmVjdG9yeSBpbm9kZSA0 OTM3OTIxCmVudHJ5ICJzdG9yYWdlIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDg4MjM4MjMgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg0ODQ0Cmp1bmtpbmcgZW50cnkgInN0b3JhZ2Ui IGluIGRpcmVjdG9yeSBpbm9kZSA4ODIzODIzCmVudHJ5ICJtaXNjIiBpbiBzaG9ydGZvcm0gZGly ZWN0b3J5IDg4MjM4MjMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg0ODQ2Cmp1bmtp bmcgZW50cnkgIm1pc2MiIGluIGRpcmVjdG9yeSBpbm9kZSA4ODIzODIzCmVudHJ5ICJob3N0IiBp biBzaG9ydGZvcm0gZGlyZWN0b3J5IDg4MjM4MjMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMjkwMDIxCmp1bmtpbmcgZW50cnkgImhvc3QiIGluIGRpcmVjdG9yeSBpbm9kZSA4ODIzODIz CmVudHJ5ICJhbGdvcyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA4ODIzODMwIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDI5MDA1MQpqdW5raW5nIGVudHJ5ICJhbGdvcyIgaW4gZGlyZWN0 b3J5IGlub2RlIDg4MjM4MzAKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJl Y3RvcnkgaW5vZGUgODgyMzgzMyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODQxNDYK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50 cnkgZm9yIGRpcmVjdG9yeSA4ODIzODMzCmVudHJ5ICJjeDIzODg1IiBhdCBibG9jayAwIG9mZnNl dCA4OCBpbiBkaXJlY3RvcnkgaW5vZGUgODgyOTE4OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyOTAwNjYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODgu Li4KZW50cnkgImF1MDgyOCIgYXQgYmxvY2sgMCBvZmZzZXQgMzQ0IGluIGRpcmVjdG9yeSBpbm9k ZSA4ODI5MTg4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI5MDA1NgoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNDQuLi4KZW50cnkgInV2YyIgYXQgYmxv Y2sgMCBvZmZzZXQgMTI3MiBpbiBkaXJlY3RvcnkgaW5vZGUgODgyOTE4OCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAyOTAwNjQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMTI3Mi4uLgplbnRyeSAiZW0yOHh4IiBhdCBibG9jayAwIG9mZnNldCAxODQwIGlu IGRpcmVjdG9yeSBpbm9kZSA4ODI5MTg4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI5 MDA1OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODQwLi4uCmVu dHJ5ICJ6YzAzMDEiIGF0IGJsb2NrIDAgb2Zmc2V0IDMwNjQgaW4gZGlyZWN0b3J5IGlub2RlIDg4 MjkxODggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjkwMDYyCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMwNjQuLi4KZW50cnkgImZvbnRzIiBpbiBzaG9y dGZvcm0gZGlyZWN0b3J5IDQ5Mzk2NTggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU4 OTMyCmp1bmtpbmcgZW50cnkgImZvbnRzIiBpbiBkaXJlY3RvcnkgaW5vZGUgNDkzOTY1OAplbnRy eSAiYjJjMiIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA4ODI5MzEwIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDI5MDA2OApqdW5raW5nIGVudHJ5ICJiMmMyIiBpbiBkaXJlY3RvcnkgaW5v ZGUgODgyOTMxMAplbnRyeSAiY2luZXJneVQyIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDg4Mjkz MTAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjkwMDcyCmVudHJ5ICIuLiIgYXQgYmxv Y2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQ5Mzk4MDIgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMzU5MDA4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDMyLi4uCmp1bmtpbmcgZW50cnkgImNpbmVyZ3lUMiIgaW4gZGlyZWN0b3J5IGlub2Rl IDg4MjkzMTAKbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA0OTM5ODAyCmVudHJ5ICJkdW1teS1w YWNrYWdlcyIgYXQgYmxvY2sgMCBvZmZzZXQgNDU2IGluIGRpcmVjdG9yeSBpbm9kZSA0OTM5ODMy IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyMTc5CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ1Ni4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0 IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA4ODQ2NjEwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDMxODI2NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4u LgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDg4NDY2MTAKZW50cnkgIi4uIiBhdCBibG9jayAw IG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgODg0NjY0NiByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAzMTgyNjYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA4ODQ2NjQ2CmVudHJ5ICIuLiIgYXQg YmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDQ5NDAxMTUgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMzU5MDYyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0 b3J5IGlub2RlIDg4NTA4NTggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzE4MjY2Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5 IGZvciBkaXJlY3RvcnkgNDk0MDExNQplbnRyeSAibmV0ZmlsdGVyIiBhdCBibG9jayAwIG9mZnNl dCAxMDk2IGluIGRpcmVjdG9yeSBpbm9kZSA4ODUwODU4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDMxODI4NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAx MDk2Li4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgODg1MDg1OAplbnRyeSAiRW5jb2Rpbmci IGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNDk0MDQwNSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAzNTkxNTgKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rvcnkg aW5vZGUgODg1MDk2MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjgyNTIKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgImFjOTciIGF0 IGJsb2NrIDAgb2Zmc2V0IDUzNiBpbiBkaXJlY3RvcnkgaW5vZGUgODg1MDk2MSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAzMjgyNjMKanVua2luZyBlbnRyeSAiRW5jb2RpbmciIGluIGRp cmVjdG9yeSBpbm9kZSA0OTQwNDA1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDUzNi4uLgplbnRyeSAia29yZzEyMTIiIGF0IGJsb2NrIDAgb2Zmc2V0IDExMzYgaW4g ZGlyZWN0b3J5IGlub2RlIDg4NTA5NjEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzI4 MjY2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExMzYuLi4KZW50 cnkgIm1peGFydCIgYXQgYmxvY2sgMCBvZmZzZXQgMTY5NiBpbiBkaXJlY3RvcnkgaW5vZGUgODg1 MDk2MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjgyNjgKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTY5Ni4uLgplbnRyeSAidngyMjIiIGF0IGJsb2Nr IDAgb2Zmc2V0IDIxNjAgaW4gZGlyZWN0b3J5IGlub2RlIDg4NTA5NjEgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMzI4MjcwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDIxNjAuLi4KZW50cnkgImFsaTU0NTEiIGF0IGJsb2NrIDAgb2Zmc2V0IDI1NzYgaW4g ZGlyZWN0b3J5IGlub2RlIDg4NTA5NjEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzI4 MjcyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1NzYuLi4Kbm8g Li4gZW50cnkgZm9yIGRpcmVjdG9yeSA4ODUwOTYxCmVudHJ5ICJJbnB1dCIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSA0OTc0Njc3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI2MzgzMDkK anVua2luZyBlbnRyeSAiSW5wdXQiIGluIGRpcmVjdG9yeSBpbm9kZSA0OTc0Njc3CmVudHJ5ICJz ZXEiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgODg1MDk5OSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAzMjgyNzQKanVua2luZyBlbnRyeSAic2VxIiBpbiBkaXJlY3RvcnkgaW5vZGUgODg1 MDk5OQplbnRyeSAiRGVmYXVsdCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA0OTc0Njk5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwNjk4OAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zm c2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA4ODUxMDA2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDMyODI1MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz Mi4uLgpqdW5raW5nIGVudHJ5ICJEZWZhdWx0IiBpbiBkaXJlY3RvcnkgaW5vZGUgNDk3NDY5OQpl bnRyeSAib3BsNCIgYXQgYmxvY2sgMCBvZmZzZXQgMTg0IGluIGRpcmVjdG9yeSBpbm9kZSA4ODUx MDA2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMyODI4MgplbnRyeSAiT3Ntb3NpcyIg aW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA0OTc0Njk5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDQwNzAzMwpqdW5raW5nIGVudHJ5ICJPc21vc2lzIiBpbiBkaXJlY3RvcnkgaW5vZGUgNDk3 NDY5OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODQuLi4KZW50 cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDk3NDcwMCBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MDY5ODgKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA4ODUx MDA2CmVudHJ5ICJDaGVjay1SYWRpbyIgYXQgYmxvY2sgMCBvZmZzZXQgMTkyIGluIGRpcmVjdG9y eSBpbm9kZSA0OTc0NzAwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwNzAwNQoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxOTIuLi4KZW50cnkgIkxpc3RI ZWFkZXJzIiBhdCBibG9jayAwIG9mZnNldCA0MDggaW4gZGlyZWN0b3J5IGlub2RlIDQ5NzQ3MDAg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA3MDE4CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQwOC4uLgplbnRyeSAiY2FpYXEiIGluIHNob3J0Zm9ybSBk aXJlY3RvcnkgODg1MTA1MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjgzNDAKZW50 cnkgIlByb2dyZXNzQmFyIiBhdCBibG9jayAwIG9mZnNldCA2MjQgaW4gZGlyZWN0b3J5IGlub2Rl IDQ5NzQ3MDAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA3MDIzCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDYyNC4uLgplbnRyeSAiU3BpbiIgYXQgYmxv Y2sgMCBvZmZzZXQgODMyIGluIGRpcmVjdG9yeSBpbm9kZSA0OTc0NzAwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDQwNzAyNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCA4MzIuLi4KanVua2luZyBlbnRyeSAiY2FpYXEiIGluIGRpcmVjdG9yeSBpbm9kZSA4 ODUxMDUwCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNDk3NDcwMAplbnRyeSAibWFuMSIgaW4g c2hvcnRmb3JtIGRpcmVjdG9yeSA0OTc2MDA3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDQwODAzMApqdW5raW5nIGVudHJ5ICJtYW4xIiBpbiBkaXJlY3RvcnkgaW5vZGUgNDk3NjAwNwpl bnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA0OTc2MDEx IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwODAzMwoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDQ5 NzYwMTEKZW50cnkgIk5vcnRoX0Rha290YSIgYXQgYmxvY2sgMCBvZmZzZXQgMTkwNCBpbiBkaXJl Y3RvcnkgaW5vZGUgNDk3NjE0MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MDc5NDgK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTkwNC4uLgplbnRyeSAi ZXZlbnQuZCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA4ODg4Nzc1IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDU5ODcwMwpqdW5raW5nIGVudHJ5ICJldmVudC5kIiBpbiBkaXJlY3Rvcnkg aW5vZGUgODg4ODc3NQplbnRyeSAiZHJpdmVycyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA0OTk1 Njg2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMjI5MgpqdW5raW5nIGVudHJ5ICJk cml2ZXJzIiBpbiBkaXJlY3RvcnkgaW5vZGUgNDk5NTY4NgplbnRyeSAiZnIiIGF0IGJsb2NrIDAg b2Zmc2V0IDE1MiBpbiBkaXJlY3RvcnkgaW5vZGUgNDk5NTY5NiByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSA0MjIyNDEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMTUyLi4uCmVudHJ5ICJ6aCIgYXQgYmxvY2sgMCBvZmZzZXQgMzEyIGluIGRpcmVjdG9yeSBp bm9kZSA0OTk1Njk2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMjI0MwoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMTIuLi4KZW50cnkgInJ1IiBhdCBi bG9jayAwIG9mZnNldCA0NzIgaW4gZGlyZWN0b3J5IGlub2RlIDQ5OTU2OTYgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgNDIyMjQ1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDQ3Mi4uLgplbnRyeSAiZGUiIGF0IGJsb2NrIDAgb2Zmc2V0IDYzMiBpbiBkaXJl Y3RvcnkgaW5vZGUgNDk5NTY5NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjIyNDcK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjMyLi4uCmVudHJ5ICJ6 aF9UVyIgYXQgYmxvY2sgMCBvZmZzZXQgODA4IGluIGRpcmVjdG9yeSBpbm9kZSA0OTk1Njk2IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMjI0OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCA4MDguLi4KZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAz MiBpbiBkaXJlY3RvcnkgaW5vZGUgODkxMTg3OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyMTUzNTI3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4u CmVudHJ5ICJpbWFnZXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDEyMCBpbiBkaXJlY3RvcnkgaW5vZGUg NDk5NTg4MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjIyOTMKbm8gLi4gZW50cnkg Zm9yIGRpcmVjdG9yeSA4OTExODc4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDEyMC4uLgplbnRyeSAiamEiIGF0IGJsb2NrIDAgb2Zmc2V0IDg3MiBpbiBkaXJlY3Rv cnkgaW5vZGUgNDk5NTg4MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjI3MTYKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODcyLi4uCmVudHJ5ICIuLiIg YXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDg5MTE4OTAgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjE1MzUyNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDg5MTE4OTAKZW50 cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNDk5NTk5NyBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjI3MTYKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA0OTk1 OTk3CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDg5 NDUyNTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjMwNTAxMwoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0 b3J5IDg5NDUyNTUKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rvcnkg aW5vZGUgODk0NTI3NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMzA1MDEzCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZv ciBkaXJlY3RvcnkgODk0NTI3NAplbnRyeSAic3lzdGVtcyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9y eSA0OTk3NDc0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMzA5NgpqdW5raW5nIGVu dHJ5ICJzeXN0ZW1zIiBpbiBkaXJlY3RvcnkgaW5vZGUgNDk5NzQ3NAplbnRyeSAiLi4iIGF0IGJs b2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA4OTgwMjI3IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDI3NDMxOTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA4OTgwMjI3CmVudHJ5ICJv cGwzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDg5ODAyMzggcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjc0MzIwOQpqdW5raW5nIGVudHJ5ICJvcGwzIiBpbiBkaXJlY3RvcnkgaW5vZGUg ODk4MDIzOAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9k ZSA1MDAwMDUwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyNTkwNAoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiYWN0aW9ucyIgYXQg YmxvY2sgMCBvZmZzZXQgMTc2IGluIGRpcmVjdG9yeSBpbm9kZSA1MDAwMDUwIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDEyNzY2MDEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTc2Li4uCmVudHJ5ICJleHQyIiBhdCBibG9jayAwIG9mZnNldCA2NCBpbiBk aXJlY3RvcnkgaW5vZGUgODk4MzQwOSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMzY0 NDU4CmVudHJ5ICJlbW90ZXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDQwMCBpbiBkaXJlY3RvcnkgaW5v ZGUgNTAwMDA1MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2NjAyCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQwMC4uLgoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2NC4uLgplbnRyeSAicGxhY2VzIiBhdCBibG9jayAw IG9mZnNldCA2MDggaW4gZGlyZWN0b3J5IGlub2RlIDUwMDAwNTAgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTI3NjYwMwplbnRyeSAiamJkIiBhdCBibG9jayAwIG9mZnNldCAxMjggaW4g ZGlyZWN0b3J5IGlub2RlIDg5ODM0MDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjM2 NDQ2MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMjguLi4KCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjA4Li4uCmVudHJ5ICJyZWlz ZXJmcyIgYXQgYmxvY2sgMCBvZmZzZXQgMjE2IGluIGRpcmVjdG9yeSBpbm9kZSA4OTgzNDA5IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIzNjQ0NjIKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMjE2Li4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTAw MDA1MAplbnRyeSAieGZjZTQtc2Vzc2lvbiIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA1MDAyOTMw IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDkwNTMxOQpqdW5raW5nIGVudHJ5ICJ4ZmNl NC1zZXNzaW9uIiBpbiBkaXJlY3RvcnkgaW5vZGUgNTAwMjkzMAplbnRyeSAiaGlkcCIgaW4gc2hv cnRmb3JtIGRpcmVjdG9yeSA4OTgzNTIxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIz NjQ0NjYKanVua2luZyBlbnRyeSAiaGlkcCIgaW4gZGlyZWN0b3J5IGlub2RlIDg5ODM1MjEKZW50 cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTAwMjkzMiBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA5MDUzMjIKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1MDAy OTMyCmVudHJ5ICJ0ZXRleCIgYXQgYmxvY2sgMCBvZmZzZXQgMTEwNCBpbiBkaXJlY3RvcnkgaW5v ZGUgNTA0MzcwMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODY5MTk2CmVudHJ5ICIu LiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDg5ODQ5NTggcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA5NzUzNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAzMi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAxMTA0Li4uCmVudHJ5ICJrcGF0aHNlYSIgYXQgYmxvY2sgMCBvZmZzZXQgMTI1NiBp biBkaXJlY3RvcnkgaW5vZGUgNTA0MzcwMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx ODY5MTk4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyNTYuLi4K ZW50cnkgImR2aXBkZm0iIGF0IGJsb2NrIDAgb2Zmc2V0IDE0NDggaW4gZGlyZWN0b3J5IGlub2Rl IDUwNDM3MDIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg2OTE5OQoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNDQ4Li4uCmVudHJ5ICJwbGFpbiIgYXQg YmxvY2sgMCBvZmZzZXQgMTY3MiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzcwMiByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxODY5MjMwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDE2NzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA4OTg0OTU4CmVu dHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjE3OQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAicHN0LW9wdGljIiBhdCBibG9jayAw IG9mZnNldCAxMDQgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTg1MDg0MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAxMDQuLi4KZW50cnkgImFtc2ZvbnRzIiBhdCBibG9jayAwIG9mZnNldCAyMzIgaW4gZGly ZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ2NDM0 NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMzIuLi4KZW50cnkg ImFtc2NscyIgYXQgYmxvY2sgMCBvZmZzZXQgNDAwIGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMx IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0NjQ3OTYKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDAwLi4uCmVudHJ5ICJwc3QtaW5maXhwbG90IiBhdCBi bG9jayAwIG9mZnNldCA0MjQgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTg1MDg0OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCA0MjQuLi4KZW50cnkgInBvZW1zY29sIiBhdCBibG9jayAwIG9mZnNldCA0ODAg aW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTkwMzkzNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0ODAuLi4K ZW50cnkgImV4dDIiIGF0IGJsb2NrIDAgb2Zmc2V0IDExMiBpbiBkaXJlY3RvcnkgaW5vZGUgOTAx OTYyNCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNzQzMTgzCmVudHJ5ICJwc3BpY3R1 cmUiIGF0IGJsb2NrIDAgb2Zmc2V0IDYwOCBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDY0ODEzCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDYwOC4uLgplbnRyeSAicHN0LXNscGUiIGF0IGJsb2NrIDAgb2Zm c2V0IDYzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxODUwODUxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDYzMi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMTIuLi4K ZW50cnkgImpiZCIgYXQgYmxvY2sgMCBvZmZzZXQgMjgwIGluIGRpcmVjdG9yeSBpbm9kZSA5MDE5 NjI0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI3NDMxODUKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjgwLi4uCmVudHJ5ICJyZWlzZXJmcyIgYXQgYmxv Y2sgMCBvZmZzZXQgNTEyIGluIGRpcmVjdG9yeSBpbm9kZSA5MDE5NjI0IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDI3NDMxODcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgNTEyLi4uCmVudHJ5ICJiYWJlbGJpYiIgYXQgYmxvY2sgMCBvZmZzZXQgODMyIGlu IGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0 NjQ4MTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODMyLi4uCmVu dHJ5ICJwZGZ0cmlja3MiIGF0IGJsb2NrIDAgb2Zmc2V0IDg5NiBpbiBkaXJlY3RvcnkgaW5vZGUg NTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODUwODUzCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDg5Ni4uLgplbnRyeSAicHNsYXRleCIgYXQg YmxvY2sgMCBvZmZzZXQgMTAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxNDY0MTk5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDEwMzIuLi4KZW50cnkgInBzdC1vc2NpIiBhdCBibG9jayAwIG9mZnNldCAx MTEyIGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE4NTA4NTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTEx Mi4uLgplbnRyeSAibWZuZnNzIiBhdCBibG9jayAwIG9mZnNldCAxMjU2IGluIGRpcmVjdG9yeSBp bm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0NjQ4NjUKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTI1Ni4uLgplbnRyeSAiaGlkcCIg aW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA5MDE5Njc2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDI3NDMxOTEKanVua2luZyBlbnRyeSAiaGlkcCIgaW4gZGlyZWN0b3J5IGlub2RlIDkwMTk2 NzYKZW50cnkgInBzdC1iYXJjb2RlIiBhdCBibG9jayAwIG9mZnNldCAxMzM2IGluIGRpcmVjdG9y eSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NTA4NTcKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTMzNi4uLgplbnRyeSAiemFw ZmNoYW4iIGF0IGJsb2NrIDAgb2Zmc2V0IDEzODQgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg2OTIzOQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzg0Li4uCmVudHJ5ICJwZGZwYWdlcyIgYXQgYmxvY2sg MCBvZmZzZXQgMTQ3MiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxNDY1MTI3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDE0NzIuLi4KZW50cnkgIndhc3lzeW0iIGF0IGJsb2NrIDAgb2Zmc2V0IDE2MDggaW4g ZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg2 OTI0NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNjA4Li4uCmVu dHJ5ICJqa25hcGx0eCIgYXQgYmxvY2sgMCBvZmZzZXQgMTY5NiBpbiBkaXJlY3RvcnkgaW5vZGUg NTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDY1MTMyCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2OTYuLi4KZW50cnkgImF2YW50Z2FyIiBh dCBibG9jayAwIG9mZnNldCAxODI0IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NjkyODIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMTgyNC4uLgplbnRyeSAidWNzIiBhdCBibG9jayAwIG9mZnNldCAxOTA0 IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDE0NjUxNDkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTkwNC4u LgplbnRyeSAiY21hcCIgYXQgYmxvY2sgMCBvZmZzZXQgMjA1NiBpbiBkaXJlY3RvcnkgaW5vZGUg NTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDk5MDIxCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwNTYuLi4KZW50cnkgImNvdXJpZXIiIGF0 IGJsb2NrIDAgb2Zmc2V0IDIxMjggaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTg2OTI4OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAyMTI4Li4uCmVudHJ5ICJkcmFtYXRpc3QiIGF0IGJsb2NrIDAgb2Zmc2V0 IDIyNDAgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTkwMzkzOQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAy MjQwLi4uCmVudHJ5ICJyY3MiIGF0IGJsb2NrIDAgb2Zmc2V0IDIyNjQgaW4gZGlyZWN0b3J5IGlu b2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTAzMAoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMjY0Li4uCmVudHJ5ICJtaWNyb3R5 cGUiIGF0IGJsb2NrIDAgb2Zmc2V0IDI0NDAgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTAzMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAyNDQwLi4uCmVudHJ5ICJldXJvIiBhdCBibG9jayAwIG9mZnNl dCAyNDY0IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE4NjkyOTYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MjQ2NC4uLgplbnRyeSAibWVtb2lyIiBhdCBibG9jayAwIG9mZnNldCAyNjY0IGluIGRpcmVjdG9y eSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0OTkwODMKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjY2NC4uLgplbnRyeSAicmFu ZGJpbGQiIGF0IGJsb2NrIDAgb2Zmc2V0IDI3NDQgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwMzk1OAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNzQ0Li4uCmVudHJ5ICJzZXRzcGFjZSIgYXQgYmxvY2sg MCBvZmZzZXQgMjg3MiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxNDk5MDkzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDI4NzIuLi4KZW50cnkgImJpYmxlcmVmIiBhdCBibG9jayAwIG9mZnNldCAyODk2IGlu IGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5 MDM5MjIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjg5Ni4uLgpl bnRyeSAic3NlcSIgYXQgYmxvY2sgMCBvZmZzZXQgMzAyNCBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0 MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0MTY5CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMwMjQuLi4KZW50cnkgImtvbWEtc2NyaXB0IiBh dCBibG9jayAwIG9mZnNldCAzMDk2IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0OTkwOTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMzA5Ni4uLgplbnRyeSAibnVtbGluZSIgYXQgYmxvY2sgMCBvZmZzZXQg MzEyMCBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxOTAzOTI0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMx MjAuLi4KZW50cnkgInNjYWxlIiBhdCBibG9jayAwIG9mZnNldCAzMjQ4IGluIGRpcmVjdG9yeSBp bm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQxNzEKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzI0OC4uLgplbnRyeSAicHN0LWZp bGwiIGF0IGJsb2NrIDAgb2Zmc2V0IDMzMjAgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg1MDg0MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAzMzIwLi4uCmVudHJ5ICJqdXJhIiBhdCBibG9jayAwIG9mZnNl dCAzMzQ0IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE5MDM5MjYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzM0NC4uLgplbnRyeSAicHN0LWxlbnMiIGF0IGJsb2NrIDAgb2Zmc2V0IDM1MTIgaW4gZGlyZWN0 b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg1MDg0NAoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNTEyLi4uCmVudHJ5ICJs aW5lbm8iIGF0IGJsb2NrIDAgb2Zmc2V0IDM1OTIgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwMzkyOQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNTkyLi4uCmVudHJ5ICJwc3QtbGFibyIgYXQgYmxvY2sg MCBvZmZzZXQgMzczNiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxODUwODQ2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDM3MzYuLi4KZW50cnkgImJpbiIgYXQgYmxvY2sgMCBvZmZzZXQgNTc2IGluIGRpcmVj dG9yeSBpbm9kZSA5MDUyOTIzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMjAwNTUK ZW50cnkgInNjcmVlbnBsYXkiIGF0IGJsb2NrIDAgb2Zmc2V0IDM4MTYgaW4gZGlyZWN0b3J5IGlu b2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwMzkzNAoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzODE2Li4uCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDU3Ni4uLgplbnRyeSAicHN0LWNvaWwiIGF0IGJs b2NrIDAgb2Zmc2V0IDM5NDQgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTg1MDY5MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzOTQ0Li4uCmVudHJ5ICJtYXBsZSIgYXQgYmxvY2sgMCBvZmZzZXQgNDA4MCBp biBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx OTA0MTkwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQwODAuLi4K ZW50cnkgIm1pbmlwbG90IiBhdCBibG9jayAxIG9mZnNldCA2NCBpbiBkaXJlY3RvcnkgaW5vZGUg NTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTAzOTYwCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDY0Li4uCmVudHJ5ICJiYXJkaWFnIiBhdCBi bG9jayAxIG9mZnNldCA4OCBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxOTAzOTYyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDg4Li4uCmVudHJ5ICJnbnVwbG90dGV4IiBhdCBibG9jayAxIG9mZnNldCAxODQg aW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTkwMzk2OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxODQuLi4K ZW50cnkgInBpY3QyZSIgYXQgYmxvY2sgMSBvZmZzZXQgMjgwIGluIGRpcmVjdG9yeSBpbm9kZSA1 MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDM5NzAKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjgwLi4uCmVudHJ5ICJsZWFmbGV0IiBhdCBi bG9jayAxIG9mZnNldCAzNTIgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTkwNDE2MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzNTIuLi4KZW50cnkgInNlcSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA5MDc5 NzI3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MzM4NDMKZW50cnkgImZyaWJyaWVm IiBhdCBibG9jayAxIG9mZnNldCA0NDggaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDE2MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCA0NDguLi4KanVua2luZyBlbnRyeSAic2VxIiBpbiBkaXJlY3Rvcnkg aW5vZGUgOTA3OTcyNwplbnRyeSAiZmxhc2hjYXJkcyIgYXQgYmxvY2sgMSBvZmZzZXQgNTQ0IGlu IGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5 MDQxNjUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTQ0Li4uCmVu dHJ5ICJub25mbG9hdCIgYXQgYmxvY2sgMSBvZmZzZXQgNzM2IGluIGRpcmVjdG9yeSBpbm9kZSA1 MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQxNzMKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNzM2Li4uCmVudHJ5ICJibHVldG9vdGgiIGlu IHNob3J0Zm9ybSBkaXJlY3RvcnkgOTA3OTczNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyNDMzODIxCmp1bmtpbmcgZW50cnkgImJsdWV0b290aCIgaW4gZGlyZWN0b3J5IGlub2RlIDkw Nzk3MzcKZW50cnkgImRhdGVpbGlzdGUiIGF0IGJsb2NrIDEgb2Zmc2V0IDc4NCBpbiBkaXJlY3Rv cnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0MTc1Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDc4NC4uLgplbnRyeSAic2Nz aSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA5MDc5NzM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDI0MzM4MjMKZW50cnkgImZuY3ljaGFwIiBhdCBibG9jayAxIG9mZnNldCA4ODAgaW4g ZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkw NDE3NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4ODAuLi4KZW50 cnkgImFkcmNvbnYiIGF0IGJsb2NrIDEgb2Zmc2V0IDk3NiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0 MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0MTc5CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDk3Ni4uLgpqdW5raW5nIGVudHJ5ICJzY3NpIiBp biBkaXJlY3RvcnkgaW5vZGUgOTA3OTczNwplbnRyeSAibWludXRlcyIgYXQgYmxvY2sgMSBvZmZz ZXQgMTA0OCBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxOTA0MTg4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDEwNDguLi4KZW50cnkgInN1YnN0ciIgYXQgYmxvY2sgMSBvZmZzZXQgMTE4NCBpbiBkaXJlY3Rv cnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0MTkyCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExODQuLi4KZW50cnkgInJm a2lsbCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA5MDc5NzQ4IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDI0MzM4MzcKZW50cnkgImhodGVuc29yIiBhdCBibG9jayAxIG9mZnNldCAxMjMy IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDE5MDQyNDMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTIzMi4u LgpqdW5raW5nIGVudHJ5ICJyZmtpbGwiIGluIGRpcmVjdG9yeSBpbm9kZSA5MDc5NzQ4CmVudHJ5 ICJldGFyZW11bmUiIGF0IGJsb2NrIDEgb2Zmc2V0IDEzMjAgaW4gZGlyZWN0b3J5IGlub2RlIDUw NDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDE5NAoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzIwLi4uCmVudHJ5ICJlc2ludCIgYXQgYmxv Y2sgMSBvZmZzZXQgMTQ5NiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxOTA0MjQ1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDE0OTYuLi4KZW50cnkgInN2biIgYXQgYmxvY2sgMSBvZmZzZXQgMTUxMiBpbiBk aXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0 NDI5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE1MTIuLi4KZW50 cnkgIndhcm5pbmciIGF0IGJsb2NrIDEgb2Zmc2V0IDE1MjggaW4gZGlyZWN0b3J5IGlub2RlIDUw NDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDE5NgoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTI4Li4uCmVudHJ5ICJzbWFsbHRhYmxlb2Yi IGF0IGJsb2NrIDEgb2Zmc2V0IDE3MjAgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDI0OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAxNzIwLi4uCmVudHJ5ICJzdXBlcnRhYnVsYXIiIGF0IGJsb2NrIDEg b2Zmc2V0IDE3NTIgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTkwNDE5OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAxNzUyLi4uCmVudHJ5ICJleGFtZGVzaWduIiBhdCBibG9jayAxIG9mZnNldCAxOTQ0IGlu IGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5 MDQyNTAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTk0NC4uLgpl bnRyeSAidHlwZWRyZWYiIGF0IGJsb2NrIDEgb2Zmc2V0IDIwODggaW4gZGlyZWN0b3J5IGlub2Rl IDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDIwNQoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMDg4Li4uCmVudHJ5ICJ4aWZ0aGVuIiBh dCBibG9jayAxIG9mZnNldCAyMTY4IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQyNTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMjE2OC4uLgplbnRyeSAiZGlyZWN0b3J5IiBhdCBibG9jayAxIG9mZnNl dCAyMzEyIGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE5MDQyMDcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MjMxMi4uLgplbnRyeSAiZW52bGFiIiBhdCBibG9jayAxIG9mZnNldCAyMzkyIGluIGRpcmVjdG9y eSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQyNTQKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjM5Mi4uLgplbnRyeSAib2Ny LWxhdGV4IiBhdCBibG9jayAxIG9mZnNldCAyNTM2IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMx IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQyMDkKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjUzNi4uLgplbnRyeSAiaHBzZGlzcyIgYXQgYmxvY2sg MSBvZmZzZXQgMjYxNiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxOTA0MjU3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDI2MTYuLi4KZW50cnkgInBkZndpbiIgYXQgYmxvY2sgMSBvZmZzZXQgMjc2MCBpbiBk aXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0 MjE4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI3NjAuLi4KZW50 cnkgInBlY2hhIiBhdCBibG9jayAxIG9mZnNldCAyODQwIGluIGRpcmVjdG9yeSBpbm9kZSA1MDQz NzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQyNTkKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjg0MC4uLgplbnRyeSAic2YyOTgiIGF0IGJsb2Nr IDEgb2Zmc2V0IDI4NTYgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTkwNDQzNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAyODU2Li4uCmVudHJ5ICJyY2NvbCIgYXQgYmxvY2sgMSBvZmZzZXQgMjkxMiBpbiBk aXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0 NDM5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI5MTIuLi4KZW50 cnkgIm9ubHlhbXNtYXRoIiBhdCBibG9jayAxIG9mZnNldCAyOTg0IGluIGRpcmVjdG9yeSBpbm9k ZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQyMjEKZW50cnkgIm1h dGgtZW11IiBhdCBibG9jayAwIG9mZnNldCAzMTIgaW4gZGlyZWN0b3J5IGlub2RlIDkwOTg1Mjgg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NzA1NgoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMTIuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMjk4NC4uLgplbnRyeSAibm90ZXMiIGF0IGJsb2NrIDEgb2Zmc2V0IDMw MjQgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTkwNDQ0MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDI0 Li4uCmVudHJ5ICJtaWdvciIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA5MDk4NTM5IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY4NzMKZW50cnkgInZyc2lvbiIgYXQgYmxvY2sgMSBv ZmZzZXQgMzA2NCBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxOTA0MjYyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDMwNjQuLi4KanVua2luZyBlbnRyeSAibWlnb3IiIGluIGRpcmVjdG9yeSBpbm9kZSA5MDk4 NTM5CmVudHJ5ICJ0YWJ0by1sdHgiIGF0IGJsb2NrIDEgb2Zmc2V0IDMyMDggaW4gZGlyZWN0b3J5 IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDIyMwoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMjA4Li4uCmVudHJ5ICJzeXN0 ZW1oIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDkwOTg1MzkgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTI3Njg3NgplbnRyeSAiZGF0ZXRpbWUiIGF0IGJsb2NrIDEgb2Zmc2V0IDMyODgg aW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTkwNDI2NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMjg4Li4u CmVudHJ5ICJuZXd0aG0iIGF0IGJsb2NrIDEgb2Zmc2V0IDM0MzIgaW4gZGlyZWN0b3J5IGlub2Rl IDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDIyNQoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNDMyLi4uCmp1bmtpbmcgZW50cnkgInN5 c3RlbWgiIGluIGRpcmVjdG9yeSBpbm9kZSA5MDk4NTM5CmVudHJ5ICJjbG9jayIgYXQgYmxvY2sg MSBvZmZzZXQgMzU1MiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxOTA0MzQwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDM1NTIuLi4KZW50cnkgIjczNDMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgOTA5ODU0 NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2ODgxCmp1bmtpbmcgZW50cnkgIjcz NDMiIGluIGRpcmVjdG9yeSBpbm9kZSA5MDk4NTQ1CmVudHJ5ICI3NzIyIiBpbiBzaG9ydGZvcm0g ZGlyZWN0b3J5IDkwOTg1NDUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3Njg4Ngpl bnRyeSAiY291bnQxdG8iIGF0IGJsb2NrIDEgb2Zmc2V0IDM2NDAgaW4gZGlyZWN0b3J5IGlub2Rl IDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDIzOQoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNjQwLi4uCmp1bmtpbmcgZW50cnkgIjc3 MjIiIGluIGRpcmVjdG9yeSBpbm9kZSA5MDk4NTQ1CmVudHJ5ICJjYWx4eHh4IiBhdCBibG9jayAx IG9mZnNldCAzNzc2IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDE5MDQzNDMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzc3Ni4uLgplbnRyeSAiZWVtZWlyIiBhdCBibG9jayAxIG9mZnNldCAzODY0IGluIGRp cmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQy NDEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzg2NC4uLgplbnRy eSAic3NxcXVvdGUiIGF0IGJsb2NrIDEgb2Zmc2V0IDQwMDAgaW4gZGlyZWN0b3J5IGlub2RlIDUw NDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDM0NgoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MDAwLi4uCmVudHJ5ICJoYyIgYXQgYmxvY2sg MSBvZmZzZXQgNDA4MCBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxOTA0NTAyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDQwODAuLi4KZW50cnkgImViZXppZXIiIGF0IGJsb2NrIDIgb2Zmc2V0IDQwIGluIGRp cmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQz NTAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDAuLi4KZW50cnkg InByb2Jzb2xuIiBhdCBibG9jayAyIG9mZnNldCAxMTIgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3 MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDM1MgoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMTIuLi4KZW50cnkgImV1cm9wZWN2IiBhdCBibG9j ayAyIG9mZnNldCAyMDggaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTkwNDM1NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAyMDguLi4KZW50cnkgInhtcGluY2wiIGF0IGJsb2NrIDIgb2Zmc2V0IDMwNCBpbiBk aXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0 NDI1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMwNC4uLgplbnRy eSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA5MDk5MDk2IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY5OTMKZW50cnkgInJlY3RvcG1hIiBhdCBi bG9jayAyIG9mZnNldCA0MDAgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTkwNDQyNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCA0MDAuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMzIuLi4KZW50cnkgImthbGVuZGVyIiBhdCBibG9jayAyIG9mZnNldCA1NjggaW4gZGlyZWN0 b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDQzMQoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1NjguLi4Kbm8gLi4gZW50 cnkgZm9yIGRpcmVjdG9yeSA5MDk5MDk2CmVudHJ5ICJ0cmZzaWducyIgYXQgYmxvY2sgMiBvZmZz ZXQgNjQwIGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE5MDQ0MzMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg NjQwLi4uCmVudHJ5ICJsaXN0b2ZzeW1ib2xzIiBhdCBibG9jayAyIG9mZnNldCA3ODQgaW4gZGly ZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDQz NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA3ODQuLi4KZW50cnkg ImlzbzEwMzAzIiBhdCBibG9jayAyIG9mZnNldCAxMDQwIGluIGRpcmVjdG9yeSBpbm9kZSA1MDQz NzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ0NDMKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTA0MC4uLgplbnRyeSAicmVmY2hlY2siIGF0IGJs b2NrIDIgb2Zmc2V0IDExMzYgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTkwNDQ5MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAxMTM2Li4uCmVudHJ5ICJwc2ZyYWd4IiBhdCBibG9jayAyIG9mZnNldCAxMTg0 IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDE5MDQ0OTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTE4NC4u LgplbnRyeSAibWZ0aW5jIiBhdCBibG9jayAyIG9mZnNldCAxMjU2IGluIGRpcmVjdG9yeSBpbm9k ZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ0OTYKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTI1Ni4uLgplbnRyeSAiYmVncmlmZiIg YXQgYmxvY2sgMiBvZmZzZXQgMTM1MiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0NDk4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDEzNTIuLi4KZW50cnkgImdhdXNzIiBhdCBibG9jayAyIG9mZnNldCAx NDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE5MDQ1MDAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQz Mi4uLgplbnRyeSAiaWZtc2xpZGUiIGF0IGJsb2NrIDIgb2Zmc2V0IDE2NDggaW4gZGlyZWN0b3J5 IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDUwNwoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNjQ4Li4uCmVudHJ5ICJsZWZ0 aWR4IiBhdCBibG9jayAyIG9mZnNldCAxNzI4IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ1OTUKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMTcyOC4uLgplbnRyeSAicmFuZHRleHQiIGF0IGJsb2NrIDIg b2Zmc2V0IDE4NzIgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTkwNDUzMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAxODcyLi4uCmVudHJ5ICJhcmNzIiBhdCBibG9jayAyIG9mZnNldCAxOTUyIGluIGRpcmVj dG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ1OTcK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTk1Mi4uLgplbnRyeSAi bGNnIiBhdCBibG9jayAyIG9mZnNldCAxOTY4IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ2MzUKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMTk2OC4uLgplbnRyeSAibWNpdGUiIGF0IGJsb2NrIDIgb2Zm c2V0IDIwODAgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTkwNDY0MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAyMDgwLi4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlu b2RlIDkxMTI5NjggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NzA2MAplbnRyeSAi ZGluYnJpZWYiIGF0IGJsb2NrIDIgb2Zmc2V0IDIwOTYgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3 MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDUzNAoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMDk2Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJwcmVsaW0yZSIgYXQgYmxvY2sgMiBvZmZz ZXQgMjIxNiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxOTA0NTk5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDIyMTYuLi4KZW50cnkgIm11bHRpYmJsIiBhdCBibG9jayAyIG9mZnNldCAyMzA0IGluIGRpcmVj dG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ1MzgK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjMwNC4uLgpubyAuLiBl bnRyeSBmb3IgZGlyZWN0b3J5IDkxMTI5NjgKZW50cnkgImV4ZXJjaXNlIiBhdCBibG9jayAyIG9m ZnNldCAyNDQwIGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDE5MDQ2MDEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMjQ0MC4uLgplbnRyeSAicHJvZ3Jlc3MiIGF0IGJsb2NrIDIgb2Zmc2V0IDI1MjggaW4gZGly ZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDU0 MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNTI4Li4uCmVudHJ5 ICJwbHdlYiIgYXQgYmxvY2sgMiBvZmZzZXQgMjY2NCBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0Mzcz MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0NjAzCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI2NjQuLi4KZW50cnkgInZlcnNpb25zIiBhdCBibG9j ayAyIG9mZnNldCAyNzUyIGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE5MDQ1NDIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMjc1Mi4uLgplbnRyeSAibWV0cmUiIGF0IGJsb2NrIDIgb2Zmc2V0IDI3OTIgaW4g ZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkw NDY1MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNzkyLi4uCmVu dHJ5ICJwYXBlcmNkY2FzZSIgYXQgYmxvY2sgMiBvZmZzZXQgMjg4OCBpbiBkaXJlY3RvcnkgaW5v ZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0NjA3CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI4ODguLi4KZW50cnkgInByZXByaW50 IiBhdCBibG9jayAyIG9mZnNldCAyOTc2IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ1NzYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMjk3Ni4uLgplbnRyeSAiY29uY3Byb2ciIGF0IGJsb2NrIDIgb2Zm c2V0IDMxMTIgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTkwNDYwOQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzMTEyLi4uCmVudHJ5ICJzaG93bGFiZWxzIiBhdCBibG9jayAyIG9mZnNldCAzMTY4IGluIGRp cmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ2 MTgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzE2OC4uLgplbnRy eSAicGJveCIgYXQgYmxvY2sgMiBvZmZzZXQgMzE5MiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0Mzcz MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0NTgyCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMxOTIuLi4KZW50cnkgIi4uIiBhdCBibG9jayAwIG9m ZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgOTExOTIyMyByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSA0MDc2NzkKZW50cnkgIm50aGVvcmVtIiBhdCBibG9jayAyIG9mZnNldCAzMzc2IGlu IGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5 MDQ2MTEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzM3Ni4uLgoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiYm9p dGVzIiBhdCBibG9jayAyIG9mZnNldCAzNDA4IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ1ODQKZW50cnkgInBhcmlzYyIgYXQgYmxv Y2sgMCBvZmZzZXQgMTIwIGluIGRpcmVjdG9yeSBpbm9kZSA5MTE5MjIzIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDQwNzY5NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAxMjAuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzQwOC4uLgplbnRyeSAidXNiIiBhdCBibG9jayAwIG9mZnNldCA0NjQgaW4gZGlyZWN0b3J5IGlu b2RlIDkxMTkyMjMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjQyNjUxNAplbnRyeSAi c25hcHNob3QiIGF0IGJsb2NrIDIgb2Zmc2V0IDM2MTYgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3 MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDU4NwoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNjE2Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDQ2NC4uLgplbnRyeSAicm90ZmxvYXQiIGF0IGJsb2NrIDIgb2Zm c2V0IDM2NDAgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTkwNDYxNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzNjQwLi4uCmVudHJ5ICJhY29yZSIgYXQgYmxvY2sgMCBvZmZzZXQgNTIwIGluIGRpcmVjdG9y eSBpbm9kZSA5MTE5MjIzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MjY1MjQKZW50 cnkgIm1ldGhvZCIgYXQgYmxvY2sgMiBvZmZzZXQgMzc5MiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0 MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0NjIwCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM3OTIuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgNTIwLi4uCmVudHJ5ICJjbXNkIiBhdCBibG9jayAyIG9mZnNl dCAzODE2IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE5MDQ1ODkKZW50cnkgIm1pcHMiIGF0IGJsb2NrIDAgb2Zmc2V0IDU3NiBpbiBkaXJl Y3RvcnkgaW5vZGUgOTExOTIyMyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDI2NjAx CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDU3Ni4uLgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzODE2Li4uCmVudHJ5ICJpbmNsdWRl IiBhdCBibG9jayAwIG9mZnNldCAxMDE2IGluIGRpcmVjdG9yeSBpbm9kZSA5MTE5MjIzIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MjY5OTYKZW50cnkgIm1zYyIgYXQgYmxvY2sgMiBv ZmZzZXQgMzk0NCBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxOTA0NjE2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDM5NDQuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTAx Ni4uLgplbnRyeSAib3BjaXQiIGF0IGJsb2NrIDIgb2Zmc2V0IDM5NjAgaW4gZGlyZWN0b3J5IGlu b2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDY4MwoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzOTYwLi4uCmVudHJ5ICJpMmMiIGF0 IGJsb2NrIDAgb2Zmc2V0IDExMjggaW4gZGlyZWN0b3J5IGlub2RlIDkxMTkyMjMgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjQyNzA2OAplbnRyeSAiZm9vdG5wYWciIGF0IGJsb2NrIDIg b2Zmc2V0IDQwMzIgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTkwNDU5MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA0MDMyLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEx MjguLi4KZW50cnkgIm5vaXRjcnVsIiBhdCBibG9jayAyIG9mZnNldCA0MDU2IGluIGRpcmVjdG9y eSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ2OTMKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDA1Ni4uLgplbnRyeSAidmVy c2lvbiIgYXQgYmxvY2sgMCBvZmZzZXQgMjgwMCBpbiBkaXJlY3RvcnkgaW5vZGUgOTExOTIyMyBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDMxODM3CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI4MDAuLi4KZW50cnkgInVuZGVydGlsZGUiIGF0IGJsb2Nr IDMgb2Zmc2V0IDk2IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDE5MDQ2MjIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgOTYuLi4KZW50cnkgImJsaW5kdGV4dCIgYXQgYmxvY2sgMyBvZmZzZXQgMTkyIGluIGRp cmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ2 MjQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTkyLi4uCmVudHJ5 ICJzbmRkZXZpY2VzIiBhdCBibG9jayAwIG9mZnNldCAyODQ4IGluIGRpcmVjdG9yeSBpbm9kZSA5 MTE5MjIzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MzE4MzkKZW50cnkgImlzb2Rh dGUiIGF0IGJsb2NrIDMgb2Zmc2V0IDI4OCBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0NjI2CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDI4OC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAyODQ4Li4uCmVudHJ5ICJtb3JlaGVscCIgYXQgYmxvY2sgMyBvZmZzZXQgNDU2 IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDE5MDQ2MzcKZW50cnkgInRvcGxldmVsLmNvbmZpZyIgYXQgYmxvY2sgMCBvZmZzZXQgMjg3MiBp biBkaXJlY3RvcnkgaW5vZGUgOTExOTIyMyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAy NDMxODQyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI4NzIuLi4K CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDU2Li4uCm5vIC4uIGVu dHJ5IGZvciBkaXJlY3RvcnkgOTExOTIyMwplbnRyeSAiYml6Y2FyZCIgYXQgYmxvY2sgMyBvZmZz ZXQgNTUyIGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE5MDQ2NDEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg NTUyLi4uCmVudHJ5ICJkcmFmdGNvcHkiIGF0IGJsb2NrIDMgb2Zmc2V0IDcyMCBpbiBkaXJlY3Rv cnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0NjQ1Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDcyMC4uLgplbnRyeSAibWFr ZWdsb3MiIGF0IGJsb2NrIDMgb2Zmc2V0IDc5MiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0NjQ4CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDc5Mi4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0 IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA5MTI0NDI4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE1MDYyMwplbnRyeSAic2hhZGJveCIgYXQgYmxvY2sgMyBvZmZzZXQgOTM2IGluIGRpcmVj dG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ2NTIK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgOTM2Li4uCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJhdXRvdGFiIiBh dCBibG9jayAzIG9mZnNldCAxMDQwIGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ2NTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMTA0MC4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDkxMjQ0MjgK ZW50cnkgImtleXN0cm9rZSIgYXQgYmxvY2sgMyBvZmZzZXQgMTEzNiBpbiBkaXJlY3RvcnkgaW5v ZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0NjU3CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExMzYuLi4KZW50cnkgInBhcGVydGV4 IiBhdCBibG9jayAzIG9mZnNldCAxMjMyIGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ2NjUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMTIzMi4uLgplbnRyeSAicHJldHR5cmVmIiBhdCBibG9jayAzIG9m ZnNldCAxMzA0IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDE5MDQ2NjcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMTMwNC4uLgplbnRyeSAidGl0bGVmb290IiBhdCBibG9jayAzIG9mZnNldCAxMzc2IGluIGRp cmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ2 NjkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTM3Ni4uLgplbnRy eSAic3ByaXRlIiBhdCBibG9jayAzIG9mZnNldCAxNDcyIGluIGRpcmVjdG9yeSBpbm9kZSA1MDQz NzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ2NzEKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQ3Mi4uLgplbnRyeSAicXN5bWJvbHMiIGF0IGJs b2NrIDMgb2Zmc2V0IDE1NjggaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTkwNDY3MwplbnRyeSAic2VxIiBpbiBzaG9ydGZvcm0gZGlyZWN0 b3J5IDkxMjc4MDggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjYyOTEwMwpqdW5raW5n IGVudHJ5ICJzZXEiIGluIGRpcmVjdG9yeSBpbm9kZSA5MTI3ODA4CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE1NjguLi4KZW50cnkgImJpbm9tZXhwIiBhdCBibG9j ayAzIG9mZnNldCAxNjY0IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE5MDQ2NzUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMTY2NC4uLgplbnRyeSAicmxlcHNmIiBhdCBibG9jayAzIG9mZnNldCAxNzYwIGlu IGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5 MDQ2NzcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTc2MC4uLgpl bnRyeSAidXN4MnkiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgOTEyNzgzNSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAyNjMwOTIyCmVudHJ5ICJzYXZlc3ltIiBhdCBibG9jayAzIG9mZnNl dCAxODU2IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE5MDQ2NzkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MTg1Ni4uLgplbnRyeSAic2hvcnR0b2MiIGF0IGJsb2NrIDMgb2Zmc2V0IDE5NTIgaW4gZGlyZWN0 b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDY4MQoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxOTUyLi4uCmp1bmtpbmcg ZW50cnkgInVzeDJ5IiBpbiBkaXJlY3RvcnkgaW5vZGUgOTEyNzgzNQplbnRyeSAiY29vbHN0ciIg YXQgYmxvY2sgMyBvZmZzZXQgMjEyMCBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0Njg1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDIxMjAuLi4KZW50cnkgImZvb3RtaXNjIiBhdCBibG9jayAzIG9mZnNl dCAyMjE2IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE5MDQ2ODcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MjIxNi4uLgplbnRyeSAibXNsYXBhIiBhdCBibG9jayAzIG9mZnNldCAyMzA0IGluIGRpcmVjdG9y eSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ2ODkKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjMwNC4uLgplbnRyeSAicGF1 bGRvYyIgYXQgYmxvY2sgMyBvZmZzZXQgMjQwMCBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0NjkxCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI0MDAuLi4KZW50cnkgImxpbWFwIiBhdCBibG9jayAzIG9m ZnNldCAyNTI4IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDE5MDQ3NDgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMjUyOC4uLgplbnRyeSAiaHlwaGVuYXQiIGF0IGJsb2NrIDMgb2Zmc2V0IDI2NzIgaW4gZGly ZWN0b3J5IGlub2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDY5 NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjcyLi4uCmVudHJ5 ICJ2eCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA5MTM4OTQzIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDI0MjY0OTcKZW50cnkgInRvY2JpYmluZCIgYXQgYmxvY2sgMyBvZmZzZXQgMjc1 MiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxOTA0NzUxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI3NTIu Li4KanVua2luZyBlbnRyeSAidngiIGluIGRpcmVjdG9yeSBpbm9kZSA5MTM4OTQzCmVudHJ5ICJk YXRlbnVtYmVyIiBhdCBibG9jayAzIG9mZnNldCAyODk2IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQz NzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ2OTcKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjg5Ni4uLgplbnRyeSAicGNzcCIgYXQgYmxvY2sg MCBvZmZzZXQgOTYgaW4gZGlyZWN0b3J5IGlub2RlIDkxMzg5NDUgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMjQyNjUwOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA5Ni4uLgplbnRyeSAibW92aWUxNSIgYXQgYmxvY2sgMyBvZmZzZXQgMjk3NiBpbiBkaXJl Y3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0NzUz CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI5NzYuLi4KZW50cnkg Ikd1SVQiIGF0IGJsb2NrIDMgb2Zmc2V0IDMwOTYgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDM3MzEg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDczNwoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDk2Li4uCmVudHJ5ICJtdWx0aWNhcCIgYXQgYmxvY2sg MyBvZmZzZXQgMzI5NiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzczMSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxOTA0NzQwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDMyOTYuLi4KZW50cnkgImxhYmVsY2FzIiBhdCBibG9jayAzIG9mZnNldCAzMzYwIGlu IGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5 MDQ3NTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzM2MC4uLgpl bnRyeSAidGh1bWIiIGF0IGJsb2NrIDMgb2Zmc2V0IDM1MDQgaW4gZGlyZWN0b3J5IGlub2RlIDUw NDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDc0MgoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNTA0Li4uCmVudHJ5ICJ0eXBlMWNtIiBhdCBi bG9jayAzIG9mZnNldCAzNzIwIGluIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzMxIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ3NDQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMzcyMC4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRp cmVjdG9yeSBpbm9kZSA5MTM4OTc1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MjY1 MjQKZW50cnkgImhpc3RvZ3IiIGF0IGJsb2NrIDMgb2Zmc2V0IDM5MjggaW4gZGlyZWN0b3J5IGlu b2RlIDUwNDM3MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDc0NgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzOTI4Li4uCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJvbGQiIGF0IGJsb2NrIDAg b2Zmc2V0IDU1MiBpbiBkaXJlY3RvcnkgaW5vZGUgOTEzODk3NSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAyNDI2NTg1Cm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTA0MzczMQoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1NTIuLi4Kbm8gLi4gZW50cnkg Zm9yIGRpcmVjdG9yeSA5MTM4OTc1CmVudHJ5ICJwZGZjcm9wIiBpbiBzaG9ydGZvcm0gZGlyZWN0 b3J5IDUwNDM4MDggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg2OTIzMQpqdW5raW5n IGVudHJ5ICJwZGZjcm9wIiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0MzgwOAplbnRyeSAiLi4iIGF0 IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA5MTM5MDI4IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDI0MjY1MjQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA5MTM5MDI4CmVudHJ5 ICJjb3JlIiBhdCBibG9jayAwIG9mZnNldCA3MiBpbiBkaXJlY3RvcnkgaW5vZGUgOTEzOTA1MiBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDI2NjA0CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDcyLi4uCmVudHJ5ICJvc3MiIGF0IGJsb2NrIDAgb2Zmc2V0 IDg4IGluIGRpcmVjdG9yeSBpbm9kZSA5MTM5MDUyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDI0MjY2NjgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODgu Li4KZW50cnkgInVzYiIgYXQgYmxvY2sgMCBvZmZzZXQgMjcyIGluIGRpcmVjdG9yeSBpbm9kZSA5 MTM5MDUyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MjY3NTgKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjcyLi4uCmVudHJ5ICJtaXBzIiBhdCBibG9j ayAwIG9mZnNldCAzNTIgaW4gZGlyZWN0b3J5IGlub2RlIDkxMzkwNTIgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjQyNjc2NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzNTIuLi4KZW50cnkgInN5bnRoIiBhdCBibG9jayAwIG9mZnNldCA0NjQgaW4gZGly ZWN0b3J5IGlub2RlIDkxMzkwNTIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjQyNjg5 NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0NjQuLi4KZW50cnkg InNwYXJjIiBhdCBibG9jayAwIG9mZnNldCA1MjAgaW4gZGlyZWN0b3J5IGlub2RlIDkxMzkwNTIg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjQyNjkwMAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCA1MjAuLi4KZW50cnkgImFvYSIgYXQgYmxvY2sgMCBvZmZz ZXQgNTUyIGluIGRpcmVjdG9yeSBpbm9kZSA5MTM5MDUyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDI0MjY5MDYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg NTUyLi4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2Rl IDkxMzkwNTMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjQyNjYwNAoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiLi4iIGF0IGJsb2Nr IDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1MDQ0MTY3IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDQyNTkwNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDkxMzkwNTMKZW50cnkgImFjdGlv bnMiIGF0IGJsb2NrIDAgb2Zmc2V0IDEyMCBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0NDE2NyByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2NTgyCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDEyMC4uLgplbnRyeSAiZW1ibGVtcyIgYXQgYmxvY2sgMCBvZmZz ZXQgMzQ0IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQ0MTY3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDEyNzY1ODMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzQ0Li4uCmVudHJ5ICJzb2MiIGF0IGJsb2NrIDAgb2Zmc2V0IDMzNiBpbiBkaXJlY3RvcnkgaW5v ZGUgOTEzOTE0NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDI2NjcwCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMzNi4uLgplbnRyeSAibWltZXR5cGVz IiBhdCBibG9jayAwIG9mZnNldCA1NTIgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDQxNjcgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjU4NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCA1NTIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1MDQ0MTY3 CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDQx NjggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEyNDE1OAoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiNTJ4eCIgYXQgYmxvY2sgMCBv ZmZzZXQgMTA4MCBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0NDE2OCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxMTI1ODczCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDEwODAuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1MDQ0MTY4CmVudHJ5ICJtaW1l IiBhdCBibG9jayAwIG9mZnNldCAyMDggaW4gZGlyZWN0b3J5IGlub2RlIDUwNDQxNzQgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4ODc3OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyMDguLi4KZW50cnkgIndlYXRoZXIiIGF0IGJsb2NrIDAgb2Zmc2V0 IDEyMDggaW4gZGlyZWN0b3J5IGlub2RlIDUwNDQxNzQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjU4MzMzNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAx MjA4Li4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2Rl IDUwNDQxNzUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjM0MgoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAicGNzcCIgYXQgYmxv Y2sgMCBvZmZzZXQgOTYgaW4gZGlyZWN0b3J5IGlub2RlIDkxMzkyNzAgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjQyNjcxOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCA5Ni4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDUwNDQxNzUKZW50cnkgIi4u IiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0NDE4MCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2MzQ0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4g ZGlyZWN0b3J5IGlub2RlIDkxMzkyOTIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjQy Njc1OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAu LiBlbnRyeSBmb3IgZGlyZWN0b3J5IDUwNDQxODAKbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA5 MTM5MjkyCmVudHJ5ICJvbWFwIiBhdCBibG9jayAwIG9mZnNldCA4OCBpbiBkaXJlY3RvcnkgaW5v ZGUgOTEzOTM3MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDI2Nzc1CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDg4Li4uCmVudHJ5ICIuLiIgYXQgYmxv Y2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDQzOTggcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgNDI1OTA0CmVudHJ5ICJjb2RlY3MiIGF0IGJsb2NrIDAgb2Zmc2V0IDIw OCBpbiBkaXJlY3RvcnkgaW5vZGUgOTEzOTM3MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyNDI2Nzg0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwOC4u LgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAi czNjMjR4eCIgYXQgYmxvY2sgMCBvZmZzZXQgMzEyIGluIGRpcmVjdG9yeSBpbm9kZSA5MTM5Mzcw IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MjY4NjEKZW50cnkgImRldmljZXMiIGF0 IGJsb2NrIDAgb2Zmc2V0IDI4OCBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0NDM5OCByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxMjc2NzA0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDI4OC4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAzMTIuLi4KZW50cnkgImludGwiIGF0IGJsb2NrIDAgb2Zmc2V0IDUwNCBpbiBkaXJlY3Rv cnkgaW5vZGUgNTA0NDM5OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2NzA1Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDUwNC4uLgplbnRyeSAic3Rv Y2siIGF0IGJsb2NrIDAgb2Zmc2V0IDcyMCBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0NDM5OCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2NzA2CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDcyMC4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDUwNDQz OTgKZW50cnkgImFkMTg0OCIgYXQgYmxvY2sgMCBvZmZzZXQgMTIwIGluIGRpcmVjdG9yeSBpbm9k ZSA5MTM5MzkxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MjY4NzYKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTIwLi4uCmVudHJ5ICJzcGxhc2giIGlu IHNob3J0Zm9ybSBkaXJlY3RvcnkgNTA0NDQwNSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxMjc2NzYwCmVudHJ5ICJzYiIgYXQgYmxvY2sgMCBvZmZzZXQgNDAwIGluIGRpcmVjdG9yeSBp bm9kZSA5MTM5MzkxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MjY4NzkKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDAwLi4uCmp1bmtpbmcgZW50cnkg InNwbGFzaCIgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDQ0MDUKZW50cnkgImdjb25mLnhtbC5tYW5k YXRvcnkiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNTA0NDQxOSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxMjc2NDMyCmp1bmtpbmcgZW50cnkgImdjb25mLnhtbC5tYW5kYXRvcnkiIGlu IGRpcmVjdG9yeSBpbm9kZSA1MDQ0NDE5CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIg aW4gZGlyZWN0b3J5IGlub2RlIDUwNDQ5MTIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTEyNDE1OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpu byAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDUwNDQ5MTIKZW50cnkgImRhdGEiIGluIHNob3J0Zm9y bSBkaXJlY3RvcnkgNTA0NDkyMyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2NTcz Cmp1bmtpbmcgZW50cnkgImRhdGEiIGluIGRpcmVjdG9yeSBpbm9kZSA1MDQ0OTIzCmVudHJ5ICJt ZWRpYSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA1MDQ0OTIzIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDEyNzY1NzQKanVua2luZyBlbnRyeSAibWVkaWEiIGluIGRpcmVjdG9yeSBpbm9k ZSA1MDQ0OTIzCmVudHJ5ICJ0YWJsZSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA1MDQ0OTIzIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY1NzUKanVua2luZyBlbnRyeSAidGFibGUi IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQ0OTIzCmVudHJ5ICJvbGQiIGF0IGJsb2NrIDAgb2Zmc2V0 IDM5MiBpbiBkaXJlY3RvcnkgaW5vZGUgOTE0MDc0MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyNDI3MDYwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM5 Mi4uLgplbnRyeSAiYnVpbGRycG0iIGF0IGJsb2NrIDAgb2Zmc2V0IDY3MiBpbiBkaXJlY3Rvcnkg aW5vZGUgOTE0MDc0MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDMxODQxCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDY3Mi4uLgplbnRyeSAiYWxzYXNv dW5kIiBhdCBibG9jayAwIG9mZnNldCA2OTYgaW4gZGlyZWN0b3J5IGlub2RlIDkxNDA3NDAgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjQzMTg0MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCA2OTYuLi4KZW50cnkgImFsc2Fzb3VuZC5wb3NpeCIgYXQgYmxv Y2sgMCBvZmZzZXQgNzIwIGluIGRpcmVjdG9yeSBpbm9kZSA5MTQwNzQwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDI0MzE4NDQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgNzIwLi4uCmVudHJ5ICJkYXRhIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDUwNDQ5 NDIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjU5MgpqdW5raW5nIGVudHJ5ICJk YXRhIiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0NDk0MgplbnRyeSAibWVkaWEiIGluIHNob3J0Zm9y bSBkaXJlY3RvcnkgNTA0NDk0MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2NTkz Cmp1bmtpbmcgZW50cnkgIm1lZGlhIiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0NDk0MgplbnRyeSAi dGFibGUiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNTA0NDk0MiByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxMjc2NTk0Cmp1bmtpbmcgZW50cnkgInRhYmxlIiBpbiBkaXJlY3RvcnkgaW5v ZGUgNTA0NDk0MgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBp bm9kZSA1MDQ1MTI0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyNTkwNAoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiYXBwcyIgYXQg YmxvY2sgMCBvZmZzZXQgMTg0IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQ1MTI0IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDEyNzY2NzgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTg0Li4uCmVudHJ5ICJlbW90ZXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDQwMCBp biBkaXJlY3RvcnkgaW5vZGUgNTA0NTEyNCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx Mjc2Njc5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQwMC4uLgpl bnRyeSAicGxhY2VzIiBhdCBibG9jayAwIG9mZnNldCA2MDggaW4gZGlyZWN0b3J5IGlub2RlIDUw NDUxMjQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjY4MAoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2MDguLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVj dG9yeSA1MDQ1MTI0CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5 IGlub2RlIDUwNDUxMzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDI1OTA0CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJhcHBzIiBh dCBibG9jayAwIG9mZnNldCAxODQgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDUxMzcgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjY5MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAxODQuLi4KZW50cnkgImVtb3RlcyIgYXQgYmxvY2sgMCBvZmZzZXQgNDAw IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQ1MTM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDEyNzY2OTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDAwLi4u CmVudHJ5ICJwbGFjZXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDYwOCBpbiBkaXJlY3RvcnkgaW5vZGUg NTA0NTEzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2NjkzCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDYwOC4uLgpubyAuLiBlbnRyeSBmb3IgZGly ZWN0b3J5IDUwNDUxMzcKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rv cnkgaW5vZGUgOTE0ODI1NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc3MDc1Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5 IGZvciBkaXJlY3RvcnkgOTE0ODI1NAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGlu IGRpcmVjdG9yeSBpbm9kZSA1MDQ1Mzk4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEy NzY3ODUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8g Li4gZW50cnkgZm9yIGRpcmVjdG9yeSA1MDQ1Mzk4CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZz ZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDcwMjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTI3Njc4NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz Mi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDUwNDcwMjAKZW50cnkgIi4uIiBhdCBibG9j ayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0NzE1NyByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxMjc2Nzg3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTA0NzE1NwplbnRyeSAiLi4i IGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1MDQ3Mjk0IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY3ODgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgInRlbGVzZWMuZGUiIGF0IGJsb2NrIDAgb2Zmc2V0 IDEzNiBpbiBkaXJlY3RvcnkgaW5vZGUgOTE2NjM0NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxMTI1ODgzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEz Ni4uLgplbnRyeSAic2lnbmV0LnBsIiBhdCBibG9jayAwIG9mZnNldCAzNjggaW4gZGlyZWN0b3J5 IGlub2RlIDkxNjYzNDYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEyNTg4NQoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNjguLi4Kbm8gLi4gZW50cnkg Zm9yIGRpcmVjdG9yeSA1MDQ3Mjk0CmVudHJ5ICJldmVudC5kIiBpbiBzaG9ydGZvcm0gZGlyZWN0 b3J5IDkxNjYzNTkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEyNTg3OApqdW5raW5n IGVudHJ5ICJldmVudC5kIiBpbiBkaXJlY3RvcnkgaW5vZGUgOTE2NjM1OQplbnRyeSAiLi4iIGF0 IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1MDQ3NDYzIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDEyNzY3ODkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1MDQ3NDYzCmVudHJ5 ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDUwNDc2MTAgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE1NTc4OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDUwNDc2 MTAKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0 NzYzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTU1Nzg5CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3Rv cnkgNTA0NzYzNwplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBp bm9kZSA1MDQ4MDk2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExNTU3ODkKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9y IGRpcmVjdG9yeSA1MDQ4MDk2CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGly ZWN0b3J5IGlub2RlIDUwNDgxMTcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE1NTc4 OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBl bnRyeSBmb3IgZGlyZWN0b3J5IDUwNDgxMTcKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAz MiBpbiBkaXJlY3RvcnkgaW5vZGUgNTA0ODQ2MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxMTI0MTU4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4u Cm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTA0ODQ2MQplbnRyeSAiLi4iIGF0IGJsb2NrIDAg b2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1MDQ5NjY2IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDEyNzcwNzgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1MDQ5NjY2CmVudHJ5ICJ6ZW5pdHki IGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNTA0OTY5MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxOTgzNDE3Cmp1bmtpbmcgZW50cnkgInplbml0eSIgaW4gZGlyZWN0b3J5IGlub2RlIDUw NDk2OTAKZW50cnkgImV2aW5jZSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA1MDQ5NjkwIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NjQ3ODIKanVua2luZyBlbnRyeSAiZXZpbmNlIiBp biBkaXJlY3RvcnkgaW5vZGUgNTA0OTY5MAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMy IGluIGRpcmVjdG9yeSBpbm9kZSA1MDQ5NzIwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDEyODc5MzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4K bm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1MDQ5NzIwCmVudHJ5ICJQb3N0U2Vzc2lvbiIgaW4g c2hvcnRmb3JtIGRpcmVjdG9yeSA1MDk4ODU5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDEyODc5NDMKanVua2luZyBlbnRyeSAiUG9zdFNlc3Npb24iIGluIGRpcmVjdG9yeSBpbm9kZSA1 MDk4ODU5CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2Rl IDUwOTg4NzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NzA3OAoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGly ZWN0b3J5IDUwOTg4NzEKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rv cnkgaW5vZGUgNTA5ODg4MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc3MDc4Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5 IGZvciBkaXJlY3RvcnkgNTA5ODg4MAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGlu IGRpcmVjdG9yeSBpbm9kZSA1MDk4ODkwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEy NzcwNzgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8g Li4gZW50cnkgZm9yIGRpcmVjdG9yeSA1MDk4ODkwCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZz ZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDUxMTAwOTMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTM1NDgwNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz Mi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDUxMTAwOTMKZW50cnkgImluZm9ybWF0aW9u IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDUxMTAxMDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTM1NDg1NgpqdW5raW5nIGVudHJ5ICJpbmZvcm1hdGlvbiIgaW4gZGlyZWN0b3J5IGlu b2RlIDUxMTAxMDkKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rvcnkg aW5vZGUgOTIwODc3NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA5NTYKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRp cmVjdG9yeSA5MjA4Nzc1CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0 b3J5IGlub2RlIDkyMDg4MTEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgOTU2CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJDb21tYW5k IiBhdCBibG9jayAwIG9mZnNldCA3MzYgaW4gZGlyZWN0b3J5IGlub2RlIDkyMDg4MTEgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjAzNTI4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDczNi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDkyMDg4MTEK ZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTExNDQz OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4NjYwCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3Rvcnkg NTExNDQzOQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9k ZSA1MTM4MTM1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyOTM1MgoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGly ZWN0b3J5IDUxMzgxMzUKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rv cnkgaW5vZGUgNTE0MzI0MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4NjYwCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5 IGZvciBkaXJlY3RvcnkgNTE0MzI0MQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGlu IGRpcmVjdG9yeSBpbm9kZSA5MjQxNjYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ4 OTg5MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAu LiBlbnRyeSBmb3IgZGlyZWN0b3J5IDkyNDE2NjAKZW50cnkgInB5dGhvbi1zZW1hbmFnZSIgaW4g c2hvcnRmb3JtIGRpcmVjdG9yeSA5MjQxNzAzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDQ4OTk3OQpqdW5raW5nIGVudHJ5ICJweXRob24tc2VtYW5hZ2UiIGluIGRpcmVjdG9yeSBpbm9k ZSA5MjQxNzAzCmVudHJ5ICJweXRob24tcG9saWN5Lmh0bWwiIGF0IGJsb2NrIDAgb2Zmc2V0IDI2 NCBpbiBkaXJlY3RvcnkgaW5vZGUgOTI0MTcxMCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA0ODk5NjEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjY0Li4u CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDUxNDM0 NzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4ODY4NwoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5 IDUxNDM0NzIKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5v ZGUgOTI0MTgxMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjg3OTE4CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJzeXNkZXAtaTM4 NiIgYXQgYmxvY2sgMCBvZmZzZXQgMTAwOCBpbiBkaXJlY3RvcnkgaW5vZGUgOTI0MTgxMSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzU0NzY5CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDEwMDguLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA5MjQx ODExCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDUx NDM1ODMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4ODY4NwoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiZmlsZXMiIGF0IGJsb2Nr IDAgb2Zmc2V0IDM2MCBpbiBkaXJlY3RvcnkgaW5vZGUgOTI0MTg0NyByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSA0OTAwNDQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzYwLi4uCmVudHJ5ICJsYXRleCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA5MjY5MjE4 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0OTkxMTgKanVua2luZyBlbnRyeSAibGF0 ZXgiIGluIGRpcmVjdG9yeSBpbm9kZSA5MjY5MjE4CmVudHJ5ICJjb250ZXh0IiBpbiBzaG9ydGZv cm0gZGlyZWN0b3J5IDkyNjkyMTggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTEy MgpqdW5raW5nIGVudHJ5ICJjb250ZXh0IiBpbiBkaXJlY3RvcnkgaW5vZGUgOTI2OTIxOApubyAu LiBlbnRyeSBmb3IgZGlyZWN0b3J5IDUxNDM1ODMKZW50cnkgInNjcmlwdHMuZCIgaW4gc2hvcnRm b3JtIGRpcmVjdG9yeSA5MjY5MjU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU5ODY0 MQpqdW5raW5nIGVudHJ5ICJzY3JpcHRzLmQiIGluIGRpcmVjdG9yeSBpbm9kZSA5MjY5MjU2CmVu dHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDkyNjk2NTYg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYzOTk5CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgOTI2 OTY1NgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1 MTQ1MDQ3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg4MzMKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVj dG9yeSA1MTQ1MDQ3CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5 IGlub2RlIDkzMTMyNDggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjA1Mzk3CmVudHJ5 ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDUxNDUwNTggcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4ODgzMwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiaHRtbCIgYXQgYmxvY2sgMCBvZmZzZXQgMzA0OCBpbiBk aXJlY3RvcnkgaW5vZGUgNTE0NTA1OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4 ODU0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMwNDguLi4Kbm8g Li4gZW50cnkgZm9yIGRpcmVjdG9yeSA5MzEzMjQ4Cm5vIC4uIGVudHJ5IGZvciBkaXJlY3Rvcnkg NTE0NTA1OAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9k ZSA5MzEzMjYxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDYwNTM5NwoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGly ZWN0b3J5IDkzMTMyNjEKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rv cnkgaW5vZGUgOTMxMzI4MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2MDUzOTcKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkg Zm9yIGRpcmVjdG9yeSA5MzEzMjgwCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4g ZGlyZWN0b3J5IGlub2RlIDUxNDU0MzggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4 OTAyOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAu LiBlbnRyeSBmb3IgZGlyZWN0b3J5IDUxNDU0MzgKZW50cnkgImNvbmZpZy5kIiBpbiBzaG9ydGZv cm0gZGlyZWN0b3J5IDkzMTY2MzkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTEyOTQ1 Cmp1bmtpbmcgZW50cnkgImNvbmZpZy5kIiBpbiBkaXJlY3RvcnkgaW5vZGUgOTMxNjYzOQplbnRy eSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA5MzI3NTAzIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyODc5MTgKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgImluY2x1ZGUiIGF0IGJsb2NrIDAgb2Zm c2V0IDU2MCBpbiBkaXJlY3RvcnkgaW5vZGUgOTMyNzUwMyByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxMzU0OTA0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDU2MC4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDkzMjc1MDMKZW50cnkgInRvb2xzIiBh dCBibG9jayAwIG9mZnNldCA4NDAgaW4gZGlyZWN0b3J5IGlub2RlIDkzMjc1NDQgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTM1NTAxOQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCA4NDAuLi4KZW50cnkgImJvb3QtcmVkYm9vdCIgaW4gc2hvcnRmb3JtIGRp cmVjdG9yeSA5MzU0NjgzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NDAxOTcKanVu a2luZyBlbnRyeSAiYm9vdC1yZWRib290IiBpbiBkaXJlY3RvcnkgaW5vZGUgOTM1NDY4MwplbnRy eSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1MjQ1NDA2IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0NjQyNTMKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1MjQ1 NDA2CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDkz NTQ3MDUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA5NzUzNgoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAg b2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1MjQ1NDMwIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDE0NjQzNDEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1MjQ1NDMwCm5vIC4uIGVudHJ5IGZv ciBkaXJlY3RvcnkgOTM1NDcwNQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRp cmVjdG9yeSBpbm9kZSA1MjQ1NTQ3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYx NjkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4g ZW50cnkgZm9yIGRpcmVjdG9yeSA1MjQ1NTQ3CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQg MzIgaW4gZGlyZWN0b3J5IGlub2RlIDUyNDU1NTQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTQ2NDQ3NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4u LgplbnRyeSAibWF0aHBhem8iIGF0IGJsb2NrIDAgb2Zmc2V0IDEyMCBpbiBkaXJlY3RvcnkgaW5v ZGUgNTI0NTU1NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODY5MzUxCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyMC4uLgplbnRyeSAiYnl0ZW9yZGVy IiBhdCBibG9jayAwIG9mZnNldCAyMDcyIGluIGRpcmVjdG9yeSBpbm9kZSAxMTQ3NjkxNCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDMyNzAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMjA3Mi4uLgplbnRyeSAiZnBsIiBhdCBibG9jayAwIG9mZnNldCAz MzYgaW4gZGlyZWN0b3J5IGlub2RlIDUyNDU1NTQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTg2OTM1NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMzYu Li4KZW50cnkgIm5ldGZpbHRlcl9pcHY0IiBhdCBibG9jayAwIG9mZnNldCAyODA4IGluIGRpcmVj dG9yeSBpbm9kZSAxMTQ3NjkxNCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDMyNzUK ZW50cnkgImNiY29wdGljIiBhdCBibG9jayAwIG9mZnNldCA2NDAgaW4gZGlyZWN0b3J5IGlub2Rl IDUyNDU1NTQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDEwOQoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2NDAuLi4KCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjgwOC4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5 IDUyNDU1NTQKZW50cnkgImhkbGMiIGF0IGJsb2NrIDAgb2Zmc2V0IDM1MDQgaW4gZGlyZWN0b3J5 IGlub2RlIDExNDc2OTE0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3NzE3MAoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNTA0Li4uCmVudHJ5ICJuZXRm aWx0ZXJfaXB2NiIgYXQgYmxvY2sgMSBvZmZzZXQgMTI1NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTE0 NzY5MTQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTc3MTQ5CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyNTYuLi4KZW50cnkgIi4uIiBhdCBibG9jayAw IG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTI0NTY5NSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxNDY0NTEwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDMyLi4uCmVudHJ5ICJtaXNjIiBhdCBibG9jayAwIG9mZnNldCAxNjggaW4gZGlyZWN0b3J5 IGlub2RlIDUyNDU2OTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ2NDUxMQoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNjguLi4KZW50cnkgInJzZnMi IGF0IGJsb2NrIDAgb2Zmc2V0IDMwNCBpbiBkaXJlY3RvcnkgaW5vZGUgNTI0NTY5NSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODY5MzkwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDMwNC4uLgplbnRyeSAiZXVyb3N5bSIgYXQgYmxvY2sgMCBvZmZzZXQg NTA0IGluIGRpcmVjdG9yeSBpbm9kZSA1MjQ1Njk1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE4NjkzOTYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTA0 Li4uCmVudHJ5ICJlc2ludCIgYXQgYmxvY2sgMCBvZmZzZXQgNzQ0IGluIGRpcmVjdG9yeSBpbm9k ZSA1MjQ1Njk1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQwOTEKZW50cnkgImFu aW1hdGlvbnMiIGF0IGJsb2NrIDAgb2Zmc2V0IDEzNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTE2ODQy MzUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjU0NDIyMgoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgNzQ0Li4uCmVudHJ5ICJkZXZpY2VzIiBhdCBibG9jayAwIG9mZnNl dCAzNDQgaW4gZGlyZWN0b3J5IGlub2RlIDExNjg0MjM1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDI1NDQyMjUKZW50cnkgInRpbWluZyIgYXQgYmxvY2sgMCBvZmZzZXQgOTIwIGluIGRp cmVjdG9yeSBpbm9kZSA1MjQ1Njk1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQw OTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgOTIwLi4uCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM0NC4uLgpubyAuLiBlbnRyeSBm b3IgZGlyZWN0b3J5IDUyNDU2OTUKZW50cnkgImVtb3RlcyIgYXQgYmxvY2sgMCBvZmZzZXQgNTY4 IGluIGRpcmVjdG9yeSBpbm9kZSAxMTY4NDIzNSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyNTQ0MjU0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDU2OC4u LgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1MjQ1 ODUyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0NjQ1NzMKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9y eSA1MjQ1ODUyCmVudHJ5ICJvYmplY3QiIGF0IGJsb2NrIDAgb2Zmc2V0IDEzNiBpbiBkaXJlY3Rv cnkgaW5vZGUgMTE2ODYyNjkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjU0NDExMwoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzYuLi4KZW50cnkgInRh YmxlIiBhdCBibG9jayAwIG9mZnNldCAzMjggaW4gZGlyZWN0b3J5IGlub2RlIDExNjg2MjY5IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NjE3NzcKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzI4Li4uCmVudHJ5ICJ0ZXh0IiBhdCBibG9jayAwIG9mZnNl dCA1MTIgaW4gZGlyZWN0b3J5IGlub2RlIDExNjg2MjY5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDI4NjE4OTEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg NTEyLi4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2Rl IDUyNDU5NzUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ2NDY4MwoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiaW1hZ2UiIGF0IGJs b2NrIDAgb2Zmc2V0IDY4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTE2ODYyNjkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMjg2MjAwMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCA2ODguLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1MjQ1OTc1CmVudHJ5 ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDUyNDY3NDQgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ2NTE0OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDUyNDY3 NDQKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTE2 ODcwMTEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg2MjkxMgoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0 b3J5IDExNjg3MDExCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5 IGlub2RlIDExNjg3MDcyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NjI5MTIKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgIi4uIiBh dCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTI3NzYzMSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxNDk5MTE1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTE2ODcwNzIKZW50 cnkgImdlbmVyaWMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTE2ODcxMzAgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMjg2MzE0NwpqdW5raW5nIGVudHJ5ICJnZW5lcmljIiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTE2ODcxMzAKZW50cnkgImlvIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEx Njg3MTMwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NjMyMDIKanVua2luZyBlbnRy eSAiaW8iIGluIGRpcmVjdG9yeSBpbm9kZSAxMTY4NzEzMApubyAuLiBlbnRyeSBmb3IgZGlyZWN0 b3J5IDUyNzc2MzEKZW50cnkgInN5c3RlbWxheWVyIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDUy Nzg4ODQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTEyMwpqdW5raW5nIGVudHJ5 ICJzeXN0ZW1sYXllciIgaW4gZGlyZWN0b3J5IGlub2RlIDUyNzg4ODQKZW50cnkgIi4uIiBhdCBi bG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTI3ODg4OCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxNDk5MTI1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTI3ODg4OAplbnRyeSAi Li4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMTY4ODM3OSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjg3OTMxCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTE2ODgz NzkKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTI3 ODkxMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDk5MTI1CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3Rv cnkgNTI3ODkxMQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBp bm9kZSA1Mjc5Mjk3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY5OTMKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9y IGRpcmVjdG9yeSA1Mjc5Mjk3CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGly ZWN0b3J5IGlub2RlIDExNzgwMDUxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNjMx MzYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4g ZW50cnkgZm9yIGRpcmVjdG9yeSAxMTc4MDA1MQplbnRyeSAidXNwZWxsIiBpbiBzaG9ydGZvcm0g ZGlyZWN0b3J5IDUyNzkzMzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTQ5Ngpq dW5raW5nIGVudHJ5ICJ1c3BlbGwiIGluIGRpcmVjdG9yeSBpbm9kZSA1Mjc5MzM3CmVudHJ5ICIu LiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDEyMzA0NDA2IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNTc3NDcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMjMwNDQw NgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1MzEz MTI0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNTc3NDcKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9y eSA1MzEzMTI0CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlu b2RlIDUzMTMxNDAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA1Nzc0NwoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiLi4iIGF0IGJs b2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMjMwNDQ0MiByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxNzAwNTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1MzEzMTQwCm5vIC4uIGVu dHJ5IGZvciBkaXJlY3RvcnkgMTIzMDQ0NDIKICAgICAgICAtIGFnbm8gPSAzCmVudHJ5ICJ1cmFu ZG9tIiBhdCBibG9jayAwIG9mZnNldCA5NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1ODMwNDEgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTUyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDk2Li4uCmVudHJ5ICJ2aW0iIGF0IGJsb2NrIDAgb2Zmc2V0IDM1MiBp biBkaXJlY3RvcnkgaW5vZGUgMTI1ODMwNDEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTUwNDc5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM1Mi4uLgpl bnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1MzEzMjIy IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1MDI4MTIKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgImluaXRyYW1mcy10b29scyIgYXQg YmxvY2sgMCBvZmZzZXQgNDA4IGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzA0MSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAyMTYwOTAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgNDA4Li4uCmVudHJ5ICJ1c2J1dGlscyIgYXQgYmxvY2sgMCBvZmZzZXQgNDcy IGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzA0MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAzMjgzNTkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDcyLi4u Cm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTMxMzIyMgplbnRyeSAicHl0aG9uLXNlcG9sZ2Vu IiBhdCBibG9jayAwIG9mZnNldCA4MzIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNTgzMDQxIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ4OTk4OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCA4MzIuLi4KZW50cnkgInB5dGhvbi1zdXBwb3J0IiBhdCBibG9jayAw IG9mZnNldCAxMTI4IGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzA0MSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSA2NDkxNzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMTEyOC4uLgplbnRyeSAiYmx1ZXRvb3RoIiBhdCBibG9jayAwIG9mZnNldCAxMTg0IGlu IGRpcmVjdG9yeSBpbm9kZSAxMjU4MzA0MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1 MTI5NjEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTE4NC4uLgpl bnRyeSAieG1sLWNvcmUiIGF0IGJsb2NrIDAgb2Zmc2V0IDEyNjQgaW4gZGlyZWN0b3J5IGlub2Rl IDEyNTgzMDQxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3MDA2MQoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMjY0Li4uCmVudHJ5ICIuLiIgYXQgYmxv Y2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDUzMTMyNDcgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjA1Nzc0NwplbnRyeSAiZ2RtIiBhdCBibG9jayAwIG9mZnNldCAxNTQ0 IGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzA0MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxMjc3MDc3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE1NDQu Li4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkg Im1zdHRjb3JlZm9udHMiIGF0IGJsb2NrIDAgb2Zmc2V0IDE3MzYgaW4gZGlyZWN0b3J5IGlub2Rl IDEyNTgzMDQxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNTcxMzEKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTczNi4uLgplbnRyeSAidXBkYXRlLW5v dGlmaWVyIiBhdCBibG9jayAwIG9mZnNldCAxODAwIGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzA0 MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzIKZW50cnkgImN4ODgiIGF0IGJsb2Nr IDAgb2Zmc2V0IDExMzYgaW4gZGlyZWN0b3J5IGlub2RlIDUzMTMyNDcgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjUzMTc2NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAxMTM2Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDE4MDAuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1MzEzMjQ3CmVudHJ5ICJsZGNvbmZp ZyIgYXQgYmxvY2sgMCBvZmZzZXQgODggaW4gZGlyZWN0b3J5IGlub2RlIDEyNTgzMDQyIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3NjY4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDg4Li4uCmVudHJ5ICJjdXBzIiBhdCBibG9jayAwIG9mZnNldCAyNDgg aW4gZGlyZWN0b3J5IGlub2RlIDEyNTgzMDQyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDQyMjI2NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNDguLi4K ZW50cnkgImZvbnRjb25maWciIGF0IGJsb2NrIDAgb2Zmc2V0IDQwMCBpbiBkaXJlY3RvcnkgaW5v ZGUgMTI1ODMwNDIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA1NzA5MQoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MDAuLi4KZW50cnkgIi4uIiBhdCBi bG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTMxMzMxOSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAyMDU3NzQ3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJYMTFSNiIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjU4 MzA0MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMzkxMjYKbm8gLi4gZW50cnkgZm9y IGRpcmVjdG9yeSA1MzEzMzE5Cmp1bmtpbmcgZW50cnkgIlgxMVI2IiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTI1ODMwNDMKZW50cnkgImxpYjY0IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNTgzMDQz IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyMTU2Cmp1bmtpbmcgZW50cnkgImxpYjY0 IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1ODMwNDMKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNl dCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTMxMzMzNCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyMDk3NTM2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMy Li4uCmVudHJ5ICJhY29ybiIgYXQgYmxvY2sgMCBvZmZzZXQgMTIwIGluIGRpcmVjdG9yeSBpbm9k ZSA1MzEzMzM0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1MzE3OTAKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTIwLi4uCmVudHJ5ICJ0b29scyIgaW4g c2hvcnRmb3JtIGRpcmVjdG9yeSAxMjU4MzA1MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyMDk3NTM3CmVudHJ5ICJhdXhkaXNwbGF5IiBhdCBibG9jayAwIG9mZnNldCAyMDAgaW4gZGly ZWN0b3J5IGlub2RlIDUzMTMzMzQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjU4NzM4 MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMDAuLi4KanVua2lu ZyBlbnRyeSAidG9vbHMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzA1MAplbnRyeSAiY2hhciIg YXQgYmxvY2sgMCBvZmZzZXQgMjk2IGluIGRpcmVjdG9yeSBpbm9kZSA1MzEzMzM0IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1ODczOTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMjk2Li4uCmVudHJ5ICJjbG9ja3NvdXJjZSIgYXQgYmxvY2sgMCBvZmZz ZXQgMzEyIGluIGRpcmVjdG9yeSBpbm9kZSA1MzEzMzM0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDI3NzY3MTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzEyLi4uCmVudHJ5ICJwdF9CUiIgYXQgYmxvY2sgMCBvZmZzZXQgMTYwIGluIGRpcmVjdG9yeSBp bm9kZSAxMjU4MzA1MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTEKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTYwLi4uCmVudHJ5ICJzdiIgYXQgYmxv Y2sgMCBvZmZzZXQgMTc2IGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzA1MiByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSA0NTAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMTc2Li4uCmVudHJ5ICJkbWEiIGF0IGJsb2NrIDAgb2Zmc2V0IDQ2NCBpbiBkaXJlY3Rv cnkgaW5vZGUgNTMxMzMzNCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNzc2NzI1Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ2NC4uLgplbnRyeSAiaHUi IGF0IGJsb2NrIDAgb2Zmc2V0IDE5MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1ODMwNTIgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDUxCmVudHJ5ICJmaXJtd2FyZSIgYXQgYmxvY2sgMCBv ZmZzZXQgNTM2IGluIGRpcmVjdG9yeSBpbm9kZSA1MzEzMzM0IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDEzNTAxMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCA1MzYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTkyLi4u CmVudHJ5ICJod21vbiIgYXQgYmxvY2sgMCBvZmZzZXQgNTkyIGluIGRpcmVjdG9yeSBpbm9kZSA1 MzEzMzM0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzNTAyNgoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1OTIuLi4KZW50cnkgInRyIiBhdCBibG9jayAw IG9mZnNldCAzMjAgaW4gZGlyZWN0b3J5IGlub2RlIDEyNTgzMDUyIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDc5NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzMjAuLi4KZW50cnkgImlucHV0IiBhdCBibG9jayAwIG9mZnNldCA2ODggaW4gZGlyZWN0b3J5 IGlub2RlIDUzMTMzMzQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM0NTY3CmVudHJ5 ICJ6aF9UVyIgYXQgYmxvY2sgMCBvZmZzZXQgMzUyIGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzA1 MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA3OTkKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzUyLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDY4OC4uLgplbnRyeSAibWFjaW50b3NoIiBhdCBibG9jayAwIG9mZnNldCA3 NjAgaW4gZGlyZWN0b3J5IGlub2RlIDUzMTMzMzQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTI5NTAwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDc2MC4u LgplbnRyeSAiZ2wiIGF0IGJsb2NrIDAgb2Zmc2V0IDQyNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1 ODMwNTIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTcwNjIKZW50cnkgIm1lZGlhIiBh dCBibG9jayAwIG9mZnNldCA4MTYgaW4gZGlyZWN0b3J5IGlub2RlIDUzMTMzMzQgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTI5MzUyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDQyNC4uLgplbnRyeSAibWFuNCIgYXQgYmxvY2sgMCBvZmZzZXQgNTA0IGlu IGRpcmVjdG9yeSBpbm9kZSAxMjU4MzA1MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx NTAyNjIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTA0Li4uCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDgxNi4uLgplbnRyeSAicGwu SVNPODg1OS0yIiBhdCBibG9jayAwIG9mZnNldCA1OTIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNTgz MDUyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1MDQ3MgoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1OTIuLi4KZW50cnkgIm9wcm9maWxlIiBhdCBibG9j ayAwIG9mZnNldCA5OTIgaW4gZGlyZWN0b3J5IGlub2RlIDUzMTMzMzQgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgOTEyNjI5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDk5Mi4uLgplbnRyeSAicGwuVVRGLTgiIGF0IGJsb2NrIDAgb2Zmc2V0IDcwNCBpbiBk aXJlY3RvcnkgaW5vZGUgMTI1ODMwNTIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUw NDczCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDcwNC4uLgplbnRy eSAiaXQuSVNPODg1OS0xIiBhdCBibG9jayAwIG9mZnNldCA4MTYgaW4gZGlyZWN0b3J5IGlub2Rl IDEyNTgzMDUyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1MDQ3NwplbnRyeSAicG5w IiBhdCBibG9jayAwIG9mZnNldCAxMTA0IGluIGRpcmVjdG9yeSBpbm9kZSA1MzEzMzM0IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDkxMjc1NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAxMTA0Li4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDgxNi4uLgplbnRyeSAicG93ZXIiIGF0IGJsb2NrIDAgb2Zmc2V0IDExMjAgaW4g ZGlyZWN0b3J5IGlub2RlIDUzMTMzMzQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgOTEy NzY5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExMjAuLi4KZW50 cnkgInJ0YyIgYXQgYmxvY2sgMCBvZmZzZXQgMTE3NiBpbiBkaXJlY3RvcnkgaW5vZGUgNTMxMzMz NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA5MTI3ODEKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTE3Ni4uLgplbnRyeSAidmlkZW8iIGF0IGJsb2NrIDAg b2Zmc2V0IDM5MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1ODMwNTMgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTc3MTcyCmVudHJ5ICJzZXJpYWwiIGF0IGJsb2NrIDAgb2Zmc2V0IDEyNDAg aW4gZGlyZWN0b3J5IGlub2RlIDUzMTMzMzQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg OTEzNzAzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyNDAuLi4K CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzkyLi4uCmVudHJ5ICJz c2IiIGF0IGJsb2NrIDAgb2Zmc2V0IDEzMTIgaW4gZGlyZWN0b3J5IGlub2RlIDUzMTMzMzQgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEzNjA5MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAxMzEyLi4uCmVudHJ5ICJuZXRhdGFsayIgYXQgYmxvY2sgMCBv ZmZzZXQgNTQ0IGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzA1MyByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSA0NDgyMjYKZW50cnkgInVpbyIgYXQgYmxvY2sgMCBvZmZzZXQgMTM5MiBpbiBk aXJlY3RvcnkgaW5vZGUgNTMxMzMzNCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTM2 MTA4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEzOTIuLi4KCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTQ0Li4uCmVudHJ5ICJ6b3Jy byIgYXQgYmxvY2sgMCBvZmZzZXQgMTUyMCBpbiBkaXJlY3RvcnkgaW5vZGUgNTMxMzMzNCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzI4Mzc1CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDE1MjAuLi4KZW50cnkgInNvdW5kIiBhdCBibG9jayAwIG9mZnNl dCA1NzYgaW4gZGlyZWN0b3J5IGlub2RlIDEyNTgzMDUzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE3NzE3NgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDUzMTMzMzQKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTc2Li4uCmVudHJ5ICJiaXRzIiBhdCBi bG9jayAwIG9mZnNldCAxMTM2IGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzA1MyByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSA0NDgwOTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTEzNi4uLgplbnRyeSAic2NzaSIgYXQgYmxvY2sgMCBvZmZzZXQgMTQ4OCBp biBkaXJlY3RvcnkgaW5vZGUgMTI1ODMwNTMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg NDQ4MjMyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE0ODguLi4K ZW50cnkgIm5ldGlweCIgYXQgYmxvY2sgMCBvZmZzZXQgMzY5NiBpbiBkaXJlY3RvcnkgaW5vZGUg MTI1ODMwNTMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDQ4MjI4CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM2OTYuLi4KZW50cnkgIm5mcyIgYXQgYmxv Y2sgMCBvZmZzZXQgMzkxMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1ODMwNTMgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgNDQ4MjMwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDM5MTIuLi4KZW50cnkgIi5kZWJ0YWdzIiBhdCBibG9jayAwIG9mZnNldCAxMjAg aW4gZGlyZWN0b3J5IGlub2RlIDEyNTgzMDU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDMzOTEwMwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMjAuLi4K ZW50cnkgImFsdGVybmF0aXZlcyIgYXQgYmxvY2sgMCBvZmZzZXQgNDggaW4gZGlyZWN0b3J5IGlu b2RlIDEyNTgzMDU3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ1NAoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0OC4uLgplbnRyeSAiLi4iIGF0IGJsb2Nr IDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1MzEzNTMzIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDI1ODczOTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1MzEzNTMzCmVudHJ5ICJsaWJ0 aHVuYXItdmZzLTEtMiIgYXQgYmxvY2sgMCBvZmZzZXQgMTc4NCBpbiBkaXJlY3RvcnkgaW5vZGUg MTI1ODMwNjIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTczODQwOAoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNzg0Li4uCmVudHJ5ICIuLiIgYXQgYmxv Y2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDUzMTM1NTkgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjU4NzM5NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDUzMTM1NTkKZW50cnkgIi4u IiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTMxMzYzNSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTg3Mzk1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTMxMzYzNQpl bnRyeSAiTENfTUVTU0FHRVMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI1ODMxNjEgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjkxCmp1bmtpbmcgZW50cnkgIkxDX01FU1NBR0VTIiBp biBkaXJlY3RvcnkgaW5vZGUgMTI1ODMxNjEKZW50cnkgIkxDX01FU1NBR0VTIiBpbiBzaG9ydGZv cm0gZGlyZWN0b3J5IDEyNTgzMTY1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI5NQpq dW5raW5nIGVudHJ5ICJMQ19NRVNTQUdFUyIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNTgzMTY1CmVu dHJ5ICJMQ19NRVNTQUdFUyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjU4MzE3MCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMDAKanVua2luZyBlbnRyeSAiTENfTUVTU0FHRVMiIGlu IGRpcmVjdG9yeSBpbm9kZSAxMjU4MzE3MAplbnRyeSAiTENfTUVTU0FHRVMiIGluIHNob3J0Zm9y bSBkaXJlY3RvcnkgMTI1ODMxNzYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzA2Cmp1 bmtpbmcgZW50cnkgIkxDX01FU1NBR0VTIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1ODMxNzYKZW50 cnkgIk51bWVyaWMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI1ODMxODIgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgNDcxCmp1bmtpbmcgZW50cnkgIk51bWVyaWMiIGluIGRpcmVjdG9y eSBpbm9kZSAxMjU4MzE4MgplbnRyeSAiYXV0by5jb25mLmNtZCIgYXQgYmxvY2sgMCBvZmZzZXQg NDggaW4gZGlyZWN0b3J5IGlub2RlIDEyNTgzMTg2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDIwOTc1NjgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDgu Li4KZW50cnkgImFjcGkiIGF0IGJsb2NrIDAgb2Zmc2V0IDcyIGluIGRpcmVjdG9yeSBpbm9kZSAx MjU4MzE4NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNjMwOTU5CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDcyLi4uCmVudHJ5ICJmcmFtZSIgYXQgYmxv Y2sgMCBvZmZzZXQgMTA0IGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzE4NiByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAyNjMwOTYxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDEwNC4uLgplbnRyeSAieDg2IiBhdCBibG9jayAwIG9mZnNldCAyMjQgaW4gZGly ZWN0b3J5IGlub2RlIDEyNTgzMTg2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI2MzA5 NjcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjI0Li4uCmVudHJ5 ICJoYXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDMyOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1ODMxODYg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjYzMDk2OQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMjguLi4KZW50cnkgImtleWJvYXJkIiBhdCBibG9jayAw IG9mZnNldCA0NzIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNTgzMTg2IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDE1MDI5NwplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRp cmVjdG9yeSBpbm9kZSA1MzE0ODUxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1OTkw NDkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkg InRlc3QiIGF0IGJsb2NrIDAgb2Zmc2V0IDQ3MiBpbiBkaXJlY3RvcnkgaW5vZGUgNTMxNDg1MSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNzM4MjE3CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ3Mi4uLgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCA0NzIuLi4KZW50cnkgImRhdGUiIGF0IGJsb2NrIDAgb2Zmc2V0IDEwMDAg aW4gZGlyZWN0b3J5IGlub2RlIDUzMTQ4NTEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTczODIyMwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMDAwLi4u CmVudHJ5ICJidCIgYXQgYmxvY2sgMCBvZmZzZXQgNTQ0IGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4 MzE4NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTU3MTQKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTQ0Li4uCmVudHJ5ICJ1cmkiIGF0IGJsb2NrIDAg b2Zmc2V0IDIyNjQgaW4gZGlyZWN0b3J5IGlub2RlIDUzMTQ4NTEgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTczODIzMAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAyMjY0Li4uCmVudHJ5ICJkZWZjb25maWciIGF0IGJsb2NrIDAgb2Zmc2V0IDc1MiBpbiBk aXJlY3RvcnkgaW5vZGUgMTI1ODMxODYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU1 NzIyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDc1Mi4uLgpubyAu LiBlbnRyeSBmb3IgZGlyZWN0b3J5IDUzMTQ4NTEKZW50cnkgIm5vbnByb21pc2MiIGF0IGJsb2Nr IDAgb2Zmc2V0IDkzNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1ODMxODYgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTU1NzI1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDkzNi4uLgplbnRyeSAiZmxhdCIgYXQgYmxvY2sgMCBvZmZzZXQgMTAzMiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTI1ODMxODYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU1NzI3 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwMzIuLi4KZW50cnkg ImxvY2FsdmVyc2lvbiIgYXQgYmxvY2sgMCBvZmZzZXQgMTA2NCBpbiBkaXJlY3RvcnkgaW5vZGUg MTI1ODMxODYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU1NzI5CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwNjQuLi4KZW50cnkgImRybSIgYXQgYmxv Y2sgMCBvZmZzZXQgMTEwNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1ODMxODYgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTU1NzMyCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIg aW4gZGlyZWN0b3J5IGlub2RlIDUzMTQ4NzUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTczODIxNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMTA0Li4uCm5vIC4uIGVu dHJ5IGZvciBkaXJlY3RvcnkgNTMxNDg3NQplbnRyeSAidGNwIiBhdCBibG9jayAwIG9mZnNldCAx MzIwIGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzE4NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxNTU3MzcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTMy MC4uLgplbnRyeSAibnRmcyIgYXQgYmxvY2sgMCBvZmZzZXQgMTMzNiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTI1ODMxODYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU1NzM4CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEzMzYuLi4KZW50cnkgImNvbmZpZ2Zz IiBhdCBibG9jayAwIG9mZnNldCAxNjU2IGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzE4NiByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTU3NDQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMTY1Ni4uLgplbnRyeSAibG9jayIgYXQgYmxvY2sgMCBvZmZzZXQg MTc2MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1ODMxODYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTU1NzQ3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3 NjAuLi4KZW50cnkgInZnYSIgYXQgYmxvY2sgMCBvZmZzZXQgMTg3MiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTI1ODMxODYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU1NzUyCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4NzIuLi4KZW50cnkgInJlaXNlcmZz IiBhdCBibG9jayAwIG9mZnNldCAyMDE2IGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzE4NiByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTU3NTgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMjAxNi4uLgplbnRyeSAiZWxmIiBhdCBibG9jayAwIG9mZnNldCAy MTEyIGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzE4NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxNTU3NjAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjEx Mi4uLgplbnRyeSAidW5peDk4IiBhdCBibG9jayAwIG9mZnNldCAyMjA4IGluIGRpcmVjdG9yeSBp bm9kZSAxMjU4MzE4NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTU3NjUKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjIwOC4uLgplbnRyeSAicHJlZW1w dCIgYXQgYmxvY2sgMCBvZmZzZXQgMjI1NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1ODMxODYgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU1NzY3CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDIyNTYuLi4KZW50cnkgInN0YWNrdHJhY2UiIGF0IGJsb2NrIDAg b2Zmc2V0IDI1MjAgaW4gZGlyZWN0b3J5IGlub2RlIDEyNTgzMTg2IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDIwMzI4NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAyNTIwLi4uCmVudHJ5ICJ3bGFuIiBhdCBibG9jayAwIG9mZnNldCAyNzYwIGluIGRpcmVj dG9yeSBpbm9kZSAxMjU4MzE4NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1MTI4OTIK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjc2MC4uLgplbnRyeSAi c3VzcGVuZCIgYXQgYmxvY2sgMCBvZmZzZXQgMjk2MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1ODMx ODYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgOTEyNzM5CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI5NjAuLi4KZW50cnkgInN0b3AiIGF0IGJsb2NrIDAg b2Zmc2V0IDMxMDQgaW4gZGlyZWN0b3J5IGlub2RlIDEyNTgzMTg2IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDExMjQxMTAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzEwNC4uLgplbnRyeSAiYmFzZSIgYXQgYmxvY2sgMCBvZmZzZXQgMzMxMiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTI1ODMxODYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA1ODQx NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMzEyLi4uCmVudHJ5 ICJhZ3AiIGF0IGJsb2NrIDAgb2Zmc2V0IDMzNjggaW4gZGlyZWN0b3J5IGlub2RlIDEyNTgzMTg2 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwOTc1NjkKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzM2OC4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zm c2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1MzE4MTE1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE3MzgzMjEKZW50cnkgImlzbzk2NjAiIGF0IGJsb2NrIDAgb2Zmc2V0IDM0MjQgaW4g ZGlyZWN0b3J5IGlub2RlIDEyNTgzMTg2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIw OTc1ODAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzQyNC4uLgoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAid2ly ZWxlc3MiIGF0IGJsb2NrIDAgb2Zmc2V0IDM0OTYgaW4gZGlyZWN0b3J5IGlub2RlIDEyNTgzMTg2 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwOTc1ODQKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzQ5Ni4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5 IDUzMTgxMTUKZW50cnkgImZpeCIgYXQgYmxvY2sgMCBvZmZzZXQgNDAwOCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTI1ODMxODYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjMwNTA5NQoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MDA4Li4uCmVudHJ5ICJtb2R1 bGUiIGF0IGJsb2NrIDEgb2Zmc2V0IDcyIGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzE4NiByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMzA1MDk2CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDcyLi4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIg aW4gZGlyZWN0b3J5IGlub2RlIDUzMTgxMjcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTczODMzMgplbnRyeSAiYmluZm10IiBhdCBibG9jayAxIG9mZnNldCAyNjQgaW4gZGlyZWN0b3J5 IGlub2RlIDEyNTgzMTg2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIzMDUwOTkKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjY0Li4uCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJhdXRvLmNvbmYiIGF0 IGJsb2NrIDEgb2Zmc2V0IDM0NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1ODMxODYgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjMyOTQ3MgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDUz MTgxMjcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzQ0Li4uCmVu dHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDUzMTgxMzkg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTczODM3NQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAic2l0ZS1wYWNrYWdlcyIgYXQgYmxv Y2sgMCBvZmZzZXQgNDggaW4gZGlyZWN0b3J5IGlub2RlIDEyNTgzMTg3IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDMxOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA0OC4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDUzMTgxMzkKZW50cnkgInBsYXQt bGludXgyIiBhdCBibG9jayAwIG9mZnNldCAxMTg0IGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzE4 NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0ODk4NjQKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTE4NC4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zm c2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1MzE4MTUxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE3MzgzODYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzIuLi4KZW50cnkgImN0eXBlcyIgYXQgYmxvY2sgMCBvZmZzZXQgMjM2OCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTI1ODMxODcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDg5ODU5CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIzNjguLi4Kbm8gLi4gZW50cnkg Zm9yIGRpcmVjdG9yeSA1MzE4MTUxCmVudHJ5ICJob3RzaG90IiBhdCBibG9jayAwIG9mZnNldCAz MjU2IGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzE4NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSA0ODk4NzAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzI1 Ni4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1 MzE4MTYzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3MzgzOTcKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVj dG9yeSA1MzE4MTYzCmVudHJ5ICJkaXN0dXRpbHMiIGF0IGJsb2NrIDEgb2Zmc2V0IDE5NjAgaW4g ZGlyZWN0b3J5IGlub2RlIDEyNTgzMTg3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ4 OTg5MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxOTYwLi4uCmVu dHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDUzMTg0MDUg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTExOAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiRGViQ29uZiIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSAxMjU4MzE4OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjAKanVu a2luZyBlbnRyeSAiRGViQ29uZiIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNTgzMTg4Cm5vIC4uIGVu dHJ5IGZvciBkaXJlY3RvcnkgNTMxODQwNQplbnRyeSAiS2RlIiBhdCBibG9jayAwIG9mZnNldCAx MDQgaW4gZGlyZWN0b3J5IGlub2RlIDEyNTgzMjMzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDMyMwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMDQuLi4K ZW50cnkgImJvb3RwIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNTgzMjQzIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDIwOTc1NDgKanVua2luZyBlbnRyeSAiYm9vdHAiIGluIGRpcmVj dG9yeSBpbm9kZSAxMjU4MzI0MwplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRp cmVjdG9yeSBpbm9kZSA1MzE4NTk1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3NDAz MjAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4g ZW50cnkgZm9yIGRpcmVjdG9yeSA1MzE4NTk1CmVudHJ5ICJtYW44IiBpbiBzaG9ydGZvcm0gZGly ZWN0b3J5IDEyNTgzMjY2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM0OApqdW5raW5n IGVudHJ5ICJtYW44IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1ODMyNjYKZW50cnkgIm1hbjUiIGlu IHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI1ODMyNjYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNDQyCmp1bmtpbmcgZW50cnkgIm1hbjUiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzI2Ngpl bnRyeSAiTENfTUVTU0FHRVMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI1ODMyNzcgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzg0Cmp1bmtpbmcgZW50cnkgIkxDX01FU1NBR0VTIiBp biBkaXJlY3RvcnkgaW5vZGUgMTI1ODMyNzcKZW50cnkgIkxDX01FU1NBR0VTIiBpbiBzaG9ydGZv cm0gZGlyZWN0b3J5IDEyNTgzMjc5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM4Ngpq dW5raW5nIGVudHJ5ICJMQ19NRVNTQUdFUyIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNTgzMjc5CmVu dHJ5ICJMQ19NRVNTQUdFUyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjU4MzI4NCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAzODkKanVua2luZyBlbnRyeSAiTENfTUVTU0FHRVMiIGlu IGRpcmVjdG9yeSBpbm9kZSAxMjU4MzI4NAplbnRyeSAiTENfTUVTU0FHRVMiIGluIHNob3J0Zm9y bSBkaXJlY3RvcnkgMTI1ODMyODUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzkxCmp1 bmtpbmcgZW50cnkgIkxDX01FU1NBR0VTIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1ODMyODUKZW50 cnkgIkxDX01FU1NBR0VTIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNTgzMjg2IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM5NgpqdW5raW5nIGVudHJ5ICJMQ19NRVNTQUdFUyIgaW4g ZGlyZWN0b3J5IGlub2RlIDEyNTgzMjg2CmVudHJ5ICJMQ19NRVNTQUdFUyIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSAxMjU4MzI5MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzOTkKanVu a2luZyBlbnRyeSAiTENfTUVTU0FHRVMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzI5MAplbnRy eSAiTENfTUVTU0FHRVMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI1ODMyOTEgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgNDAxCmp1bmtpbmcgZW50cnkgIkxDX01FU1NBR0VTIiBpbiBk aXJlY3RvcnkgaW5vZGUgMTI1ODMyOTEKZW50cnkgIkxDX01FU1NBR0VTIiBpbiBzaG9ydGZvcm0g ZGlyZWN0b3J5IDEyNTgzMjkyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwNApqdW5r aW5nIGVudHJ5ICJMQ19NRVNTQUdFUyIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNTgzMjkyCmVudHJ5 ICJhcHQiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI1ODMzMzcgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMzIwODcKanVua2luZyBlbnRyeSAiYXB0IiBpbiBkaXJlY3RvcnkgaW5vZGUg MTI1ODMzMzcKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5v ZGUgNTMyNzk1MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzQ2ODIKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRp cmVjdG9yeSA1MzI3OTUyCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0 b3J5IGlub2RlIDUzMjgwMDggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM0NjgyCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJtYW44 IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNTgzMzczIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDQ1MgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDUzMjgwMDgKanVua2luZyBlbnRy eSAibWFuOCIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNTgzMzczCmVudHJ5ICJtYW41IiBpbiBzaG9y dGZvcm0gZGlyZWN0b3J5IDEyNTgzMzczIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDc5 MQpqdW5raW5nIGVudHJ5ICJtYW41IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1ODMzNzMKZW50cnkg Ii4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTMyODAyMSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzQ1NjYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1MzI4MDIx CmVudHJ5ICI0LjMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI1ODMzOTUgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgNTAxCmp1bmtpbmcgZW50cnkgIjQuMyIgaW4gZGlyZWN0b3J5IGlu b2RlIDEyNTgzMzk1CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5 IGlub2RlIDUzMjgwNDEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM0NTY3CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZv ciBkaXJlY3RvcnkgNTMyODA0MQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRp cmVjdG9yeSBpbm9kZSA1MzI4MDYyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzNDU2 NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAi Li4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzQ0NyByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzIwNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDUzMjgwNjIK bm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMjU4MzQ0NwplbnRyeSAiZ2V0dGV4dCIgaW4gc2hv cnRmb3JtIGRpcmVjdG9yeSAxMjU4MzQ1NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2 NjkKanVua2luZyBlbnRyeSAiZ2V0dGV4dCIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNTgzNDU2CmVu dHJ5ICJMQ19NRVNTQUdFUyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjU4MzUxMSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA3NzkKanVua2luZyBlbnRyeSAiTENfTUVTU0FHRVMiIGlu IGRpcmVjdG9yeSBpbm9kZSAxMjU4MzUxMQplbnRyeSAiZGhjbGllbnQtZXhpdC1ob29rcy5kIiBp biBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNTgzNTE5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDU3MzQzCmp1bmtpbmcgZW50cnkgImRoY2xpZW50LWV4aXQtaG9va3MuZCIgaW4gZGlyZWN0 b3J5IGlub2RlIDEyNTgzNTE5CmVudHJ5ICJtYW4xIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEy NTgzNTg5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDc4NgpqdW5raW5nIGVudHJ5ICJt YW4xIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1ODM1ODkKZW50cnkgIm1hbjMiIGluIHNob3J0Zm9y bSBkaXJlY3RvcnkgMTI1ODM1ODkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjQ5MDQx Cmp1bmtpbmcgZW50cnkgIm1hbjMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzU4OQplbnRyeSAi bWFuOSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjU4MzU4OSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSA2NDkwNDgKanVua2luZyBlbnRyeSAibWFuOSIgaW4gZGlyZWN0b3J5IGlub2Rl IDEyNTgzNTg5CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlu b2RlIDUzOTQ2NTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTczODUwNwoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3Ig ZGlyZWN0b3J5IDUzOTQ2NTUKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJl Y3RvcnkgaW5vZGUgNTQ0MDU2MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc3MDYw CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVu dHJ5IGZvciBkaXJlY3RvcnkgNTQ0MDU2MwplbnRyeSAiU29ja2V0IiBhdCBibG9jayAwIG9mZnNl dCA5NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1OTE1NTcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgOTQ2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDk2Li4u CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDU0NDE1 ODAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg1MDQ4OAplbnRyeSAiR2xvYiIgaW4g c2hvcnRmb3JtIGRpcmVjdG9yeSAxMjU5MTU2NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA5NTAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KanVu a2luZyBlbnRyeSAiR2xvYiIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNTkxNTY2CmVudHJ5ICJVdGls IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNTkxNTY3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDk1MgpqdW5raW5nIGVudHJ5ICJVdGlsIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1OTE1 NjcKbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1NDQxNTgwCmVudHJ5ICI1LjEwLjAiIGluIHNo b3J0Zm9ybSBkaXJlY3RvcnkgMTI1OTE1NzMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg OTU2Cmp1bmtpbmcgZW50cnkgIjUuMTAuMCIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNTkxNTczCmVu dHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDU0NDE2NjYg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg1MDQ4OAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDU0 NDE2NjYKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUg NTQ0MTY3OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODUwNDg4CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJl Y3RvcnkgNTQ0MTY3OAplbnRyeSAiZXhhbXBsZXMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI1 OTc3MjkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzIwNjUKanVua2luZyBlbnRyeSAi ZXhhbXBsZXMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjU5NzcyOQplbnRyeSAiTENfTUVTU0FHRVMi IGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI1OTc3NDYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgNTY2MTEKanVua2luZyBlbnRyeSAiTENfTUVTU0FHRVMiIGluIGRpcmVjdG9yeSBpbm9k ZSAxMjU5Nzc0NgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBp bm9kZSA1NDQ3NDMxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NTA4ODMKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9y IGRpcmVjdG9yeSA1NDQ3NDMxCmVudHJ5ICJ0bWFjIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEy NTk4NDgwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU3NDE1Cmp1bmtpbmcgZW50cnkg InRtYWMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjU5ODQ4MAplbnRyeSAicHJvY3BzIiBhdCBibG9j ayAwIG9mZnNldCA0OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1OTg0ODcgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgNzU1NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA0OC4uLgplbnRyeSAibG9ncm90YXRlIiBhdCBibG9jayAwIG9mZnNldCAyMDAgaW4gZGly ZWN0b3J5IGlub2RlIDEyNTk4NDg3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDY3NTg3 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwMC4uLgplbnRyeSAi cGRmdGV4LXBkZmtleXMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNTQ0NzgwNyByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxODY5MTkwCmVudHJ5ICJ2aW0tdGlueSIgYXQgYmxvY2sgMCBv ZmZzZXQgMzEyIGluIGRpcmVjdG9yeSBpbm9kZSAxMjU5ODQ4NyByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxNTA0ODUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMzEyLi4uCmp1bmtpbmcgZW50cnkgInBkZnRleC1wZGZrZXlzIiBpbiBkaXJlY3RvcnkgaW5v ZGUgNTQ0NzgwNwplbnRyeSAiaW5zdGFsbGF0aW9uLXJlcG9ydHMiIGF0IGJsb2NrIDAgb2Zmc2V0 IDQzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1OTg0ODcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjAzOTU4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQz Mi4uLgplbnRyeSAibGludXgtaW1hZ2UtMi42LjI2LTEtNjg2IiBhdCBibG9jayAwIG9mZnNldCA2 OTYgaW4gZGlyZWN0b3J5IGlub2RlIDEyNTk4NDg3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDMyODM0NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2OTYu Li4KZW50cnkgInZpbSIgYXQgYmxvY2sgMCBvZmZzZXQgMTI4MCBpbiBkaXJlY3RvcnkgaW5vZGUg MTI1OTg0ODcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTcwMDE5CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyODAuLi4KZW50cnkgInBkZnRleC1wZGZr ZXlzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDU0NDc4MTMgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTg2OTE5NwplbnRyeSAibGlia3BhdGhzZWE0IiBhdCBibG9jayAwIG9mZnNldCAx NDk2IGluIGRpcmVjdG9yeSBpbm9kZSAxMjU5ODQ4NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSA5MDUzMjMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQ5 Ni4uLgpqdW5raW5nIGVudHJ5ICJwZGZ0ZXgtcGRma2V5cyIgaW4gZGlyZWN0b3J5IGlub2RlIDU0 NDc4MTMKZW50cnkgImxhY2hlY2siIGF0IGJsb2NrIDAgb2Zmc2V0IDE4MDggaW4gZGlyZWN0b3J5 IGlub2RlIDEyNTk4NDg3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODkwMzQKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTgwOC4uLgplbnRyeSAidGV4 bGl2ZS1odW1hbml0aWVzIiBhdCBibG9jayAwIG9mZnNldCAyNzA0IGluIGRpcmVjdG9yeSBpbm9k ZSAxMjU5ODQ4NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTAzOTQxCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI3MDQuLi4KZW50cnkgInRleGxpdmUt bGF0ZXgtZXh0cmEiIGF0IGJsb2NrIDAgb2Zmc2V0IDI4NDggaW4gZGlyZWN0b3J5IGlub2RlIDEy NTk4NDg3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDQ3NjEKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjg0OC4uLgplbnRyeSAieHNlcnZlci14b3Jn LWNvcmUiIGF0IGJsb2NrIDAgb2Zmc2V0IDI5NjAgaW4gZGlyZWN0b3J5IGlub2RlIDEyNTk4NDg3 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NTA2NTgKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjk2MC4uLgplbnRyeSAieHNlcnZlci14b3JnLWlucHV0 LWtleWJvYXJkIiBhdCBibG9jayAwIG9mZnNldCAzMjE2IGluIGRpcmVjdG9yeSBpbm9kZSAxMjU5 ODQ4NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTUwNjgwCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyMTYuLi4KZW50cnkgInhzZXJ2ZXIteG9yZy12 aWRlby12ZXNhIiBhdCBibG9jayAwIG9mZnNldCAzNDQ4IGluIGRpcmVjdG9yeSBpbm9kZSAxMjU5 ODQ4NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTgzMzkzCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM0NDguLi4KZW50cnkgInZpbS1nbm9tZSIgYXQg YmxvY2sgMCBvZmZzZXQgMzUyMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1OTg0ODcgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjAzMDg2NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzNTIwLi4uCmVudHJ5ICJhbHNhLW1vZHVsZXMtMi42LjI2LWVlZS1jb3Jl MiIgYXQgYmxvY2sgMCBvZmZzZXQgMzU0NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTI1OTg0ODcgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjc0MzIzMAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAzNTQ0Li4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQg MzIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjA2MTgxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDMyMDYxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4u Cm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTI2MDYxODEKZW50cnkgIi4uIiBhdCBibG9jayAw IG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2MDYxOTMgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMzIwNjEKZW50cnkgImhlbHZldGljIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5 IDU1ODMxODcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg2OTQ0MApqdW5raW5nIGVu dHJ5ICJoZWx2ZXRpYyIgaW4gZGlyZWN0b3J5IGlub2RlIDU1ODMxODcKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgInBhbGF0aW5vIiBpbiBzaG9y dGZvcm0gZGlyZWN0b3J5IDU1ODMxODcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg2 OTQ1MwpqdW5raW5nIGVudHJ5ICJwYWxhdGlubyIgaW4gZGlyZWN0b3J5IGlub2RlIDU1ODMxODcK bm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMjYwNjE5MwplbnRyeSAiaGVsdmV0aWMiIGluIHNo b3J0Zm9ybSBkaXJlY3RvcnkgNTU4MzIwMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx ODY5NDY5Cmp1bmtpbmcgZW50cnkgImhlbHZldGljIiBpbiBkaXJlY3RvcnkgaW5vZGUgNTU4MzIw MgplbnRyeSAicGFsYXRpbm8iIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNTU4MzIwMiByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODY5NTQzCmp1bmtpbmcgZW50cnkgInBhbGF0aW5vIiBp biBkaXJlY3RvcnkgaW5vZGUgNTU4MzIwMgplbnRyeSAiZXhhbXBsZXMiIGF0IGJsb2NrIDAgb2Zm c2V0IDgwIGluIGRpcmVjdG9yeSBpbm9kZSAxMjYwNzkzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxNTAyNTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg ODAuLi4KZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUg NTU4MzI4MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODY5NTY2CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJl Y3RvcnkgNTU4MzI4MAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9y eSBpbm9kZSA1NTgzMzExIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4Njk1NjYKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkg Zm9yIGRpcmVjdG9yeSA1NTgzMzExCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4g ZGlyZWN0b3J5IGlub2RlIDU1ODMzNjYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ2 NDU3MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAu LiBlbnRyeSBmb3IgZGlyZWN0b3J5IDU1ODMzNjYKZW50cnkgInN5bWJvbCIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSA1NTgzNDg4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NzAwNDgK anVua2luZyBlbnRyeSAic3ltYm9sIiBpbiBkaXJlY3RvcnkgaW5vZGUgNTU4MzQ4OAplbnRyeSAi aGVsdmV0aWMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNTU4MzQ4OSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxODcwMDUwCmp1bmtpbmcgZW50cnkgImhlbHZldGljIiBpbiBkaXJlY3Rv cnkgaW5vZGUgNTU4MzQ4OQplbnRyeSAicGFsYXRpbm8iIGluIHNob3J0Zm9ybSBkaXJlY3Rvcnkg NTU4MzQ4OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODcwMTM1Cmp1bmtpbmcgZW50 cnkgInBhbGF0aW5vIiBpbiBkaXJlY3RvcnkgaW5vZGUgNTU4MzQ4OQplbnRyeSAiTENfTUVTU0FH RVMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI2MTYxNTMgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgNTc2MjEKanVua2luZyBlbnRyeSAiTENfTUVTU0FHRVMiIGluIGRpcmVjdG9yeSBp bm9kZSAxMjYxNjE1MwplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9y eSBpbm9kZSAxMjYxNjE2NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjA2MQoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiSmVyc2V5 IiBhdCBibG9jayAwIG9mZnNldCAxNTIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjE2MTY1IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMyMDQ4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDE1Mi4uLgplbnRyeSAiR3Vlcm5zZXkiIGF0IGJsb2NrIDAgb2Zmc2V0 IDQzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2MTYxNjUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMzIwNDgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDMy Li4uCmVudHJ5ICJNb3Njb3ciIGF0IGJsb2NrIDAgb2Zmc2V0IDYxNiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTI2MTYxNjUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzIwNDcKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjE2Li4uCmVudHJ5ICJCZWxmYXN0IiBh dCBibG9jayAwIG9mZnNldCA2NjQgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjE2MTY1IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDMyMDQ4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDY2NC4uLgplbnRyeSAiRHVibGluIiBhdCBibG9jayAwIG9mZnNldCA3NTIg aW4gZGlyZWN0b3J5IGlub2RlIDEyNjE2MTY1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDc1NjcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNzUyLi4uCmVu dHJ5ICJXYXJzYXciIGF0IGJsb2NrIDAgb2Zmc2V0IDkzNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2 MTYxNjUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNzU2OAoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5MzYuLi4KZW50cnkgIkxvbmRvbiIgYXQgYmxvY2sg MCBvZmZzZXQgOTg0IGluIGRpcmVjdG9yeSBpbm9kZSAxMjYxNjE2NSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAzMjA0OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA5ODQuLi4KZW50cnkgInNrYWtuZXciIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNTYzODAy NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODcwMjM1Cmp1bmtpbmcgZW50cnkgInNr YWtuZXciIGluIGRpcmVjdG9yeSBpbm9kZSA1NjM4MDI2CmVudHJ5ICJJc2xlX29mX01hbiIgYXQg YmxvY2sgMCBvZmZzZXQgMTIyNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2MTYxNjUgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMzIwNDgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTIyNC4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEyNjE2MTY1CmVu dHJ5ICJnZW5lcmljIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDU2MzgwNDEgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTkwMzg4OQpqdW5raW5nIGVudHJ5ICJnZW5lcmljIiBpbiBkaXJl Y3RvcnkgaW5vZGUgNTYzODA0MQplbnRyeSAiTENfTUVTU0FHRVMiIGluIHNob3J0Zm9ybSBkaXJl Y3RvcnkgMTI2MTYyNzUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjc0NzgKanVua2lu ZyBlbnRyeSAiTENfTUVTU0FHRVMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjYxNjI3NQplbnRyeSAi Li4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMjYxNjI3OSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjA1MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEyNjE2Mjc5 CmVudHJ5ICJMQ19NRVNTQUdFUyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjYxNjI4MiByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NzQ4OQpqdW5raW5nIGVudHJ5ICJMQ19NRVNTQUdF UyIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjE2MjgyCmVudHJ5ICJSaXlhZGg4OSIgaW4gc2hvcnRm b3JtIGRpcmVjdG9yeSAxMjYxNjMxNSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTI0 MwpqdW5raW5nIGVudHJ5ICJSaXlhZGg4OSIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjE2MzE1CmVu dHJ5ICJSaXlhZGg4OCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjYxNjMxNSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAyMTI3MApqdW5raW5nIGVudHJ5ICJSaXlhZGg4OCIgaW4gZGly ZWN0b3J5IGlub2RlIDEyNjE2MzE1CmVudHJ5ICJSaXlhZGg4NyIgaW4gc2hvcnRmb3JtIGRpcmVj dG9yeSAxMjYxNjMxNSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTI3MwpqdW5raW5n IGVudHJ5ICJSaXlhZGg4NyIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjE2MzE1CmVudHJ5ICJFYXN0 LVNhc2thdGNoZXdhbiIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjYxNjMxNiByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAyMTE3NQpqdW5raW5nIGVudHJ5ICJFYXN0LVNhc2thdGNoZXdh biIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjE2MzE2CmVudHJ5ICJBdGxhbnRpYyIgaW4gc2hvcnRm b3JtIGRpcmVjdG9yeSAxMjYxNjMxNiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTE3 OApqdW5raW5nIGVudHJ5ICJBdGxhbnRpYyIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjE2MzE2CmVu dHJ5ICJTYXNrYXRjaGV3YW4iIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI2MTYzMTYgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjExNzUKanVua2luZyBlbnRyeSAiU2Fza2F0Y2hld2Fu IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2MTYzMTYKZW50cnkgIktub3giIGluIHNob3J0Zm9ybSBk aXJlY3RvcnkgMTI2MTY1NjkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjE1MjkKanVu a2luZyBlbnRyeSAiS25veCIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjE2NTY5CmVudHJ5ICJiYWNr ZW5kcyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjYxOTUzNCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAyODY0NzM2Cmp1bmtpbmcgZW50cnkgImJhY2tlbmRzIiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTI2MTk1MzQKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rv cnkgaW5vZGUgNTYzOTYxMCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDk5MTE4Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5 IGZvciBkaXJlY3RvcnkgNTYzOTYxMAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGlu IGRpcmVjdG9yeSBpbm9kZSA1NjQwNDI3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEy ODc5MTgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8g Li4gZW50cnkgZm9yIGRpcmVjdG9yeSA1NjQwNDI3CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZz ZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDU2OTA0NTMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTk0MDE3NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz Mi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDU2OTA0NTMKZW50cnkgIi4uIiBhdCBibG9j ayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTY5MDgxOCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxOTQwMTgxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTY5MDgxOAplbnRyeSAiLi4i IGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1NjkwOTA0IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NDAyMTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1NjkwOTA0CmVu dHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDU2OTA5NDkg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTk0MDIxMwoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiZ2VuZXJpYyIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSAxMjYyMTE3MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODYzMzk3 Cmp1bmtpbmcgZW50cnkgImdlbmVyaWMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjYyMTE3MApubyAu LiBlbnRyeSBmb3IgZGlyZWN0b3J5IDU2OTA5NDkKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNl dCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2MjEyOTcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjg2MjkxMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz Mi4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1 NjkwOTg4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NDAyMTQKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVj dG9yeSAxMjYyMTI5NwplbnRyeSAiZW1ibGVtcyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjYy MTMwOCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODYzMDY2Cmp1bmtpbmcgZW50cnkg ImVtYmxlbXMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjYyMTMwOApubyAuLiBlbnRyeSBmb3IgZGly ZWN0b3J5IDU2OTA5ODgKZW50cnkgImRldmljZXMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI2 MjEzMDggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg2MzE0NQpqdW5raW5nIGVudHJ5 ICJkZXZpY2VzIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2MjEzMDgKZW50cnkgIi4uIiBhdCBibG9j ayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTY5MTA2NSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxOTQwMjE1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTY5MTA2NQplbnRyeSAiLi4i IGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1NjkxMTQyIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NDAyMTYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1NjkxMTQyCmVu dHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjIxNDIx IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NjI5MTIKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNl dCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTY5MTE5NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxOTQwMjE3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMy Li4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTY5MTE5NgpubyAuLiBlbnRyeSBmb3IgZGly ZWN0b3J5IDEyNjIxNDIxCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0 b3J5IGlub2RlIDU2OTEyMzUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTk0MDIxOAoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRy eSBmb3IgZGlyZWN0b3J5IDU2OTEyMzUKZW50cnkgImJ1ZyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9y eSAxMjYyMzI2MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNjMwOTI1Cmp1bmtpbmcg ZW50cnkgImJ1ZyIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjIzMjYxCmVudHJ5ICIuLiIgYXQgYmxv Y2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDU2OTI2MjQgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTk0MDIxOQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzMi4uLgplbnRyeSAiYWNvcmUiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI2MjMy ODEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjc0MzE5OQpubyAuLiBlbnRyeSBmb3Ig ZGlyZWN0b3J5IDU2OTI2MjQKanVua2luZyBlbnRyeSAiYWNvcmUiIGluIGRpcmVjdG9yeSBpbm9k ZSAxMjYyMzI4MQplbnRyeSAiaTJjIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNjIzMjgxIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI3NDMyMDYKanVua2luZyBlbnRyeSAiaTJjIiBp biBkaXJlY3RvcnkgaW5vZGUgMTI2MjMyODEKZW50cnkgInN5bnRoIiBpbiBzaG9ydGZvcm0gZGly ZWN0b3J5IDEyNjIzMjgxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI3NDMyMTIKanVu a2luZyBlbnRyeSAic3ludGgiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjYyMzI4MQplbnRyeSAidXNi IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNjIzMjgxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDI3NDMyMjcKanVua2luZyBlbnRyeSAidXNiIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2 MjMyODEKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUg NTY5MjcxMCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTQwMjIwCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJhcmNoIiBpbiBzaG9y dGZvcm0gZGlyZWN0b3J5IDEyNjIzMjg2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI3 NDMxNzcKanVua2luZyBlbnRyeSAiYXJjaCIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjIzMjg2CmVu dHJ5ICJkcml2ZXJzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNjIzMjg2IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDI3NDMxNzgKanVua2luZyBlbnRyeSAiZHJpdmVycyIgaW4gZGly ZWN0b3J5IGlub2RlIDEyNjIzMjg2Cm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTY5MjcxMApl bnRyeSAibGliIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNjIzMjg2IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDI3NDMxODkKanVua2luZyBlbnRyeSAibGliIiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTI2MjMyODYKZW50cnkgInVzYmhpZCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjYy MzI4OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNzQzMTc5Cmp1bmtpbmcgZW50cnkg InVzYmhpZCIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjIzMjg5CmVudHJ5ICJob3N0IiBpbiBzaG9y dGZvcm0gZGlyZWN0b3J5IDEyNjIzMjkwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI3 NDMxODEKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUg NTY5Mjc0OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTQwMjIxCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmp1bmtpbmcgZW50cnkgImhvc3Qi IGluIGRpcmVjdG9yeSBpbm9kZSAxMjYyMzI5MApubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDU2 OTI3NDkKZW50cnkgInBjIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNjI2MTg2IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI2MzA5NjQKanVua2luZyBlbnRyeSAicGMiIGluIGRpcmVj dG9yeSBpbm9kZSAxMjYyNjE4NgplbnRyeSAiZnJlcSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAx MjYyNjIwMCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNjMwOTczCmp1bmtpbmcgZW50 cnkgImZyZXEiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjYyNjIwMAplbnRyeSAiLi4iIGF0IGJsb2Nr IDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1NjkyODI2IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDE5NDAyMjIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzIuLi4KZW50cnkgImlkbGUiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI2MjYyMDAg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU1NzQzCmp1bmtpbmcgZW50cnkgImlkbGUi IGluIGRpcmVjdG9yeSBpbm9kZSAxMjYyNjIwMApubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDU2 OTI4MjYKZW50cnkgImFyY2giIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI2MjYyMDQgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU1NzEyCmp1bmtpbmcgZW50cnkgImFyY2giIGluIGRp cmVjdG9yeSBpbm9kZSAxMjYyNjIwNAplbnRyeSAic2V0dXAiIGluIHNob3J0Zm9ybSBkaXJlY3Rv cnkgMTI2MjYyMDQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU1NzE1Cmp1bmtpbmcg ZW50cnkgInNldHVwIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2MjYyMDQKZW50cnkgImhhcyIgaW4g c2hvcnRmb3JtIGRpcmVjdG9yeSAxMjYyNjIxMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxNTU3MTYKanVua2luZyBlbnRyeSAiaGFzIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2MjYyMTEK ZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTY5Mjg2 NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTQwMjIzCmVudHJ5ICJwczIiIGluIHNo b3J0Zm9ybSBkaXJlY3RvcnkgMTI2MjYyMTIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTU1NzIwCmp1bmtpbmcgZW50cnkgInBzMiIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjI2MjEyCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJ1cGRh dGVzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNjI2MjIyIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDI2MjkxMDIKanVua2luZyBlbnRyeSAidXBkYXRlcyIgaW4gZGlyZWN0b3J5IGlu b2RlIDEyNjI2MjIyCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTY5Mjg2NQplbnRyeSAiYWM5 NyIgYXQgYmxvY2sgMCBvZmZzZXQgNjg4IGluIGRpcmVjdG9yeSBpbm9kZSAxMjYyNjIzMiByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNjI5MTE4CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDY4OC4uLgplbnRyeSAiY2EwMTA2IiBhdCBibG9jayAwIG9mZnNl dCA3NjggaW4gZGlyZWN0b3J5IGlub2RlIDEyNjI2MjMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDI2MzA5MTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg NzY4Li4uCmVudHJ5ICJpY2UxNzEyIiBhdCBibG9jayAwIG9mZnNldCA4NTYgaW4gZGlyZWN0b3J5 IGlub2RlIDEyNjI2MjMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI2MzA5MTQKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODU2Li4uCmVudHJ5ICJwY3ho ciIgYXQgYmxvY2sgMCBvZmZzZXQgOTQ0IGluIGRpcmVjdG9yeSBpbm9kZSAxMjYyNjIzMiByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNjMwOTE4CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDk0NC4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMy IGluIGRpcmVjdG9yeSBpbm9kZSA1NjkyOTY1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDE5NDAyMjQKZW50cnkgInZ4MjIyIiBhdCBibG9jayAwIG9mZnNldCAxMDMyIGluIGRpcmVjdG9y eSBpbm9kZSAxMjYyNjIzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNjMwOTIwCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwMzIuLi4KCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgImZzIiBpbiBzaG9y dGZvcm0gZGlyZWN0b3J5IDEyNjMzODI2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIx NjEwNQpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDU2OTI5NjUKanVua2luZyBlbnRyeSAiZnMi IGluIGRpcmVjdG9yeSBpbm9kZSAxMjYzMzgyNgplbnRyeSAiZHJpdmVycyIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSAxMjYzMzgyNiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODQxNDYK anVua2luZyBlbnRyeSAiZHJpdmVycyIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjMzODI2CmVudHJ5 ICJuZXQiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI2MzM4MjYgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMzE4MjY2Cmp1bmtpbmcgZW50cnkgIm5ldCIgaW4gZGlyZWN0b3J5IGlub2Rl IDEyNjMzODI2CmVudHJ5ICJzb3VuZCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjYzMzgyNiBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzMjgyNTIKanVua2luZyBlbnRyeSAic291bmQi IGluIGRpcmVjdG9yeSBpbm9kZSAxMjYzMzgyNgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0 IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1NjkzMDEwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE5NDAyMjUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIu Li4KZW50cnkgIm5vbG9jayIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjYzMzgzOSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTYxNTgKanVua2luZyBlbnRyeSAibm9sb2NrIiBpbiBk aXJlY3RvcnkgaW5vZGUgMTI2MzM4MzkKbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1NjkzMDEw CmVudHJ5ICJ6bGliX2luZmxhdGUiIGF0IGJsb2NrIDAgb2Zmc2V0IDEzNiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTI2MzM4NTQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg0MTQ0CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEzNi4uLgplbnRyeSAiLi4iIGF0 IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1Njk0MTExIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDE5NDAyMjYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgImF2bSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjYz Mzg3MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODQxNTQKanVua2luZyBlbnRyeSAi YXZtIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2MzM4NzEKZW50cnkgImhvdHBsdWciIGluIHNob3J0 Zm9ybSBkaXJlY3RvcnkgMTI2MzM4NzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg0 MTY0Cmp1bmtpbmcgZW50cnkgImhvdHBsdWciIGluIGRpcmVjdG9yeSBpbm9kZSAxMjYzMzg3Mgpu byAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDU2OTQxMTEKZW50cnkgIi4uIiBhdCBibG9jayAwIG9m ZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2MzM4NzggcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjg0MTQ2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDMyLi4uCmVudHJ5ICJwYXJpZGUiIGF0IGJsb2NrIDAgb2Zmc2V0IDgwIGluIGRpcmVjdG9yeSBp bm9kZSAxMjYzMzg3OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODQyNDMKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODAuLi4Kbm8gLi4gZW50cnkgZm9y IGRpcmVjdG9yeSAxMjYzMzg3OAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRp cmVjdG9yeSBpbm9kZSA1Njk0MTkxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NDAy MjcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4g ZW50cnkgZm9yIGRpcmVjdG9yeSA1Njk0MTkxCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQg MzIgaW4gZGlyZWN0b3J5IGlub2RlIDU2OTQyMzYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTk0MDIyOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4u LgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDU2OTQyMzYKZW50cnkgIi4uIiBhdCBibG9jayAw IG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTY5NDI3NSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxOTQwMjI5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDMyLi4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlu b2RlIDEyNjM2NzU0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMzczNgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3Ig ZGlyZWN0b3J5IDU2OTQyNzUKbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMjYzNjc1NAplbnRy eSAia2V5bWFwcyIgYXQgYmxvY2sgMCBvZmZzZXQgODAgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjM2 ODI1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMzkxMAoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4MC4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zm c2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1Njk0MzYyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE5NDAyMzAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1Njk0MzYyCmVudHJ5ICJpbml0LXByZW1v dW50IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNjM3MDQyIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDIxNjAzOApqdW5raW5nIGVudHJ5ICJpbml0LXByZW1vdW50IiBpbiBkaXJlY3Rv cnkgaW5vZGUgMTI2MzcwNDIKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJl Y3RvcnkgaW5vZGUgNTY5NDQ2NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTQwMjMx CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJi aW4iIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI2MzcwNjMgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjE2MDUzCmp1bmtpbmcgZW50cnkgImJpbiIgaW4gZGlyZWN0b3J5IGlub2RlIDEy NjM3MDYzCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTY5NDQ2NQplbnRyeSAibG9jYWwtcHJl bW91bnQiIGF0IGJsb2NrIDAgb2Zmc2V0IDg4IGluIGRpcmVjdG9yeSBpbm9kZSAxMjYzNzA3OCBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTYwOTkKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgODguLi4KZW50cnkgIm5mcy1wcmVtb3VudCIgYXQgYmxvY2sg MCBvZmZzZXQgMzIwIGluIGRpcmVjdG9yeSBpbm9kZSAxMjYzNzA3OCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAyMTYxMDAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzIwLi4uCmVudHJ5ICJpbml0LXByZW1vdW50IiBhdCBibG9jayAwIG9mZnNldCA1NTIg aW4gZGlyZWN0b3J5IGlub2RlIDEyNjM3MDc4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDIxNjEwMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1NTIuLi4K ZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTY5NDU1 MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTQwMjMyCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZz ZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjM3MDg2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDI4NDE0NgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDU2OTQ1NTEKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgInBjaSIgYXQgYmxv Y2sgMCBvZmZzZXQgNzIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjM3MDg2IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDI4NDI3MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCA3Mi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEyNjM3MDg2CmVudHJ5ICIu LiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDU2OTQ1OTYgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTk0MDIzMwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDU2OTQ1OTYK ZW50cnkgIm1vdXNlZGV2IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNjM4ODA4IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1NTczNApqdW5raW5nIGVudHJ5ICJtb3VzZWRldiIgaW4g ZGlyZWN0b3J5IGlub2RlIDEyNjM4ODA4CmVudHJ5ICJib2FyZHMiIGluIHNob3J0Zm9ybSBkaXJl Y3RvcnkgMTI2MzkxNDAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjc0OTAKanVua2lu ZyBlbnRyeSAiYm9hcmRzIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2MzkxNDAKZW50cnkgIi4uIiBh dCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTY5NDY0NCByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxOTQwMjM0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJib2FyZHMiIGluIHNob3J0Zm9ybSBkaXJlY3Rvcnkg MTI2MzkxNDYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjc1MDIKanVua2luZyBlbnRy eSAiYm9hcmRzIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2MzkxNDYKbm8gLi4gZW50cnkgZm9yIGRp cmVjdG9yeSA1Njk0NjQ0CmVudHJ5ICIwNF9jbGVhbi1pbnN0YWxsLnBhdGNoIiBpbiBzaG9ydGZv cm0gZGlyZWN0b3J5IDEyNjM5MTU1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwNzY4 MApqdW5raW5nIGVudHJ5ICIwNF9jbGVhbi1pbnN0YWxsLnBhdGNoIiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTI2MzkxNTUKZW50cnkgImxpbmUiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI2MzkxNTYg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU1NzM1Cmp1bmtpbmcgZW50cnkgImxpbmUi IGluIGRpcmVjdG9yeSBpbm9kZSAxMjYzOTE1NgplbnRyeSAiY29tbW9uIiBpbiBzaG9ydGZvcm0g ZGlyZWN0b3J5IDEyNjM5MTYyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwNzY4Mgpq dW5raW5nIGVudHJ5ICJjb21tb24iIGluIGRpcmVjdG9yeSBpbm9kZSAxMjYzOTE2MgplbnRyeSAi Li4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1Njk0NzIxIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NDAyMzUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgImJvb3QiIGluIHNob3J0Zm9ybSBkaXJlY3Rv cnkgMTI2MzkxODIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNjc2MDMKanVua2luZyBl bnRyeSAiYm9vdCIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjM5MTgyCm5vIC4uIGVudHJ5IGZvciBk aXJlY3RvcnkgNTY5NDcyMQplbnRyeSAiZHJpdmVycyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAx MjYzOTE4MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NzYxMApqdW5raW5nIGVudHJ5 ICJkcml2ZXJzIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2MzkxODIKZW50cnkgIi4uIiBhdCBibG9j ayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTY5NDc5OCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxOTQwMjM2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTY5NDc5OAplbnRyeSAiLi4i IGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1Njk0ODQzIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NDAyMzcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgImRlZmF1bHQiIGluIHNob3J0Zm9ybSBkaXJlY3Rv cnkgMTI2NDA4MTMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU1NzQwCmp1bmtpbmcg ZW50cnkgImRlZmF1bHQiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjY0MDgxMwpubyAuLiBlbnRyeSBm b3IgZGlyZWN0b3J5IDU2OTQ4NDMKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBk aXJlY3RvcnkgaW5vZGUgMTI2NDA4MTQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUw MjQ2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4u IGVudHJ5IGZvciBkaXJlY3RvcnkgMTI2NDA4MTQKZW50cnkgIm9taXQiIGluIHNob3J0Zm9ybSBk aXJlY3RvcnkgMTI2NDA4MjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU1NzQyCmp1 bmtpbmcgZW50cnkgIm9taXQiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjY0MDgyMAplbnRyeSAid2ly ZWxlc3MiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI2NDA4MjIgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMjQzMzg0MAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRp cmVjdG9yeSBpbm9kZSA1Njk0ODg4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NDAy MzgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KanVua2lu ZyBlbnRyeSAid2lyZWxlc3MiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjY0MDgyMgpubyAuLiBlbnRy eSBmb3IgZGlyZWN0b3J5IDU2OTQ4ODgKZW50cnkgIndhaXQiIGluIHNob3J0Zm9ybSBkaXJlY3Rv cnkgMTI2NTIxMzkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU1NzQ5Cmp1bmtpbmcg ZW50cnkgIndhaXQiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjY1MjEzOQplbnRyeSAic2NhbiIgaW4g c2hvcnRmb3JtIGRpcmVjdG9yeSAxMjY1MjEzOSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA2NDkxNjkKanVua2luZyBlbnRyeSAic2NhbiIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjUyMTM5 CmVudHJ5ICJsY2QiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI2NTIxNTQgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTU1NzU2Cmp1bmtpbmcgZW50cnkgImxjZCIgaW4gZGlyZWN0b3J5 IGlub2RlIDEyNjUyMTU0CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0 b3J5IGlub2RlIDU2OTQ5NjUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTk0MDIzOQoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiY21w eGNoZyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjY1MjE1OSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxNTU3NjMKanVua2luZyBlbnRyeSAiY21weGNoZyIgaW4gZGlyZWN0b3J5IGlu b2RlIDEyNjUyMTU5Cm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTY5NDk2NQplbnRyeSAic2No ZWQiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI2NTIxNzcgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTU1Nzc0Cmp1bmtpbmcgZW50cnkgInNjaGVkIiBpbiBkaXJlY3RvcnkgaW5vZGUg MTI2NTIxNzcKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5v ZGUgNTY5NTA0MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTQwMjQwCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBk aXJlY3RvcnkgNTY5NTA0MgplbnRyeSAiYm9vdCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjY2 MDQzNSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTA0NDkKZW50cnkgIi4uIiBhdCBi bG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTY5NTE1NyByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxOTQwMjQxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDMyLi4uCmp1bmtpbmcgZW50cnkgImJvb3QiIGluIGRpcmVjdG9yeSBpbm9kZSAx MjY2MDQzNQplbnRyeSAibW0iIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI2NjA0MzUgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUwNDUxCm5vIC4uIGVudHJ5IGZvciBkaXJlY3Rvcnkg NTY5NTE1NwpqdW5raW5nIGVudHJ5ICJtbSIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjYwNDM1CmVu dHJ5ICJleGFtcGxlcyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjY2MDQ1NyByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxNTAzNzIKanVua2luZyBlbnRyeSAiZXhhbXBsZXMiIGluIGRp cmVjdG9yeSBpbm9kZSAxMjY2MDQ1NwplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGlu IGRpcmVjdG9yeSBpbm9kZSA1Njk1MTk2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5 NDAyNDIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8g Li4gZW50cnkgZm9yIGRpcmVjdG9yeSA1Njk1MTk2CmVudHJ5ICJMQ19NRVNTQUdFUyIgaW4gc2hv cnRmb3JtIGRpcmVjdG9yeSAxMjY2MDc3NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx NTAzOTcKanVua2luZyBlbnRyeSAiTENfTUVTU0FHRVMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjY2 MDc3NwplbnRyeSAiTENfTUVTU0FHRVMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI2NjA3ODcg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUwNDQwCmp1bmtpbmcgZW50cnkgIkxDX01F U1NBR0VTIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2NjA3ODcKZW50cnkgImg4MzAwaCIgaW4gc2hv cnRmb3JtIGRpcmVjdG9yeSAxMjY2MDc5NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx NjM4NDIKanVua2luZyBlbnRyeSAiaDgzMDBoIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2NjA3OTQK ZW50cnkgImg4cyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjY2MDc5NCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxNjM4NDYKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBp biBkaXJlY3RvcnkgaW5vZGUgNTY5NTI0MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx OTQwMjQzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmp1 bmtpbmcgZW50cnkgImg4cyIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjYwNzk0Cm5vIC4uIGVudHJ5 IGZvciBkaXJlY3RvcnkgNTY5NTI0MQplbnRyeSAiY29uZmlncyIgYXQgYmxvY2sgMCBvZmZzZXQg MTY4IGluIGRpcmVjdG9yeSBpbm9kZSAxMjY2MDc5OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxNjM4NTAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTY4 Li4uCmVudHJ5ICJrZXJuZWwiIGF0IGJsb2NrIDAgb2Zmc2V0IDI0MCBpbiBkaXJlY3RvcnkgaW5v ZGUgMTI2NjA3OTkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTcwMDMwCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI0MC4uLgplbnRyeSAibW0iIGF0IGJs b2NrIDAgb2Zmc2V0IDI5NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2NjA3OTkgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMzU5MDE2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDI5Ni4uLgplbnRyeSAic24iIGF0IGJsb2NrIDAgb2Zmc2V0IDM3NiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTI2NjA3OTkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA3MjAy CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM3Ni4uLgplbnRyeSAi Li4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1Njk1MzI3IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NDAyNDQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1Njk1MzI3 CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDU2OTU0 MTMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTk0MDI0NQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5 IDU2OTU0MTMKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5v ZGUgNTY5NTQ2NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTQwMjQ2CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBk aXJlY3RvcnkgNTY5NTQ2NwplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVj dG9yeSBpbm9kZSA1Njk1NTA5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NDAyNDcK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgImFy bXNjaWktOCIgYXQgYmxvY2sgMCBvZmZzZXQgODAgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjY3MjMw IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2MzY5NwoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCA4MC4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDU2 OTU1MDkKZW50cnkgImdlb3JnaWFuLWFjYWRlbXkiIGF0IGJsb2NrIDAgb2Zmc2V0IDI5NiBpbiBk aXJlY3RvcnkgaW5vZGUgMTI2NjcyMzAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYz NzAxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI5Ni4uLgplbnRy eSAiaXNpcmktMzM0MiIgYXQgYmxvY2sgMCBvZmZzZXQgNTI4IGluIGRpcmVjdG9yeSBpbm9kZSAx MjY2NzIzMCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM3MDUKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTI4Li4uCmVudHJ5ICJpc284ODU5LTEzIiBh dCBibG9jayAwIG9mZnNldCA3NTIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjY3MjMwIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2MzcwOQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCA3NTIuLi4KZW50cnkgImlzbzg4NTktMyIgYXQgYmxvY2sgMCBvZmZzZXQg OTc2IGluIGRpcmVjdG9yeSBpbm9kZSAxMjY2NzIzMCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxNjM3MTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgOTc2 Li4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDU2 OTU1ODYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTk0MDI0OAoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiaXNvODg1OS03IiBhdCBi bG9jayAwIG9mZnNldCAxMjAwIGluIGRpcmVjdG9yeSBpbm9kZSAxMjY2NzIzMCByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxNjM3MTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTIwMC4uLgplbnRyeSAiamEiIGF0IGJsb2NrIDAgb2Zmc2V0IDE0MTYgaW4g ZGlyZWN0b3J5IGlub2RlIDEyNjY3MjMwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2 MzcyMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNDE2Li4uCm5v IC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTY5NTU4NgplbnRyeSAiamEuU0pJUyIgYXQgYmxvY2sg MCBvZmZzZXQgMTYzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2NjcyMzAgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTYzNzI1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDE2MzIuLi4KZW50cnkgImtvaTgtciIgYXQgYmxvY2sgMCBvZmZzZXQgMTg0MCBpbiBk aXJlY3RvcnkgaW5vZGUgMTI2NjcyMzAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYz NzI5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE4NDAuLi4KZW50 cnkgIm1pY3Jvc29mdC1jcDEyNTUiIGF0IGJsb2NrIDAgb2Zmc2V0IDIwODggaW4gZGlyZWN0b3J5 IGlub2RlIDEyNjY3MjMwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2MzczMwoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMDg4Li4uCmVudHJ5ICIuLiIg YXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDU2OTU2NzIgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTk0MDI0OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAicHRfQlIuVVRGLTgiIGF0IGJsb2NrIDAgb2Zmc2V0 IDIzMzYgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjY3MjMwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE2MzczNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAy MzM2Li4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTY5NTY3MgplbnRyeSAidGhfVEguVVRG LTgiIGF0IGJsb2NrIDAgb2Zmc2V0IDI1NTIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjY3MjMwIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2Mzc0MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAyNTUyLi4uCmVudHJ5ICJ6aF9DTiIgYXQgYmxvY2sgMCBvZmZz ZXQgMjc3NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2NjcyMzAgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTYzNzQ1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDI3NzYuLi4KZW50cnkgInpoX0hLLmJpZzUiIGF0IGJsb2NrIDAgb2Zmc2V0IDMwMDAgaW4gZGly ZWN0b3J5IGlub2RlIDEyNjY3MjMwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2Mzc0 OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDAwLi4uCmVudHJ5 ICJ6aF9UVy5iaWc1IiBhdCBibG9jayAwIG9mZnNldCAzMjMyIGluIGRpcmVjdG9yeSBpbm9kZSAx MjY2NzIzMCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM3NTMKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIzMi4uLgplbnRyeSAiLi4iIGF0IGJsb2Nr IDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1Njk1NzE3IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDE5NDAyNTAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1Njk1NzE3CmVudHJ5ICIuLiIg YXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjc4NjUwIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NDQzNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRp cmVjdG9yeSBpbm9kZSA1Njk1ODM4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NDAy NTEKbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMjY3ODY1MAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAibGludXgiIGF0IGJsb2NrIDAgb2Zm c2V0IDExODQgaW4gZGlyZWN0b3J5IGlub2RlIDU2OTU4MzggcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTk1MDY2MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAxMTg0Li4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTY5NTgzOAplbnRyeSAiZXhhbXBs ZXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDE1MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2Nzg3OTEgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzM5MDkyCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDE1Mi4uLgplbnRyeSAieG1sIiBhdCBibG9jayAwIG9mZnNldCAx NjU2IGluIGRpcmVjdG9yeSBpbm9kZSAxMjY3OTAxMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSA1MTI5ODkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTY1 Ni4uLgplbnRyeSAiZXhhbXBsZXMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI2NzkwNTggcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYzOTEyCmp1bmtpbmcgZW50cnkgImV4YW1wbGVz IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2NzkwNTgKZW50cnkgImtyYjUiIGluIHNob3J0Zm9ybSBk aXJlY3RvcnkgMTI2NzkwOTAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYzOTM3Cmp1 bmtpbmcgZW50cnkgImtyYjUiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjY3OTA5MAplbnRyeSAiLi4i IGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1Nzg2MzQ1IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyODc5MTgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1Nzg2MzQ1CmVu dHJ5ICJMQ19NRVNTQUdFUyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjY3OTIxNiByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNjM3ODIKanVua2luZyBlbnRyeSAiTENfTUVTU0FHRVMi IGluIGRpcmVjdG9yeSBpbm9kZSAxMjY3OTIxNgplbnRyeSAiTENfTUVTU0FHRVMiIGluIHNob3J0 Zm9ybSBkaXJlY3RvcnkgMTI2NzkyMTcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYz Nzg0Cmp1bmtpbmcgZW50cnkgIkxDX01FU1NBR0VTIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2Nzky MTcKZW50cnkgIkxDX01FU1NBR0VTIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNjc5MjI5IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2Mzc4NgpqdW5raW5nIGVudHJ5ICJMQ19NRVNT QUdFUyIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjc5MjI5CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBv ZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDU3ODY1MDMgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTEyNTg3NgplbnRyeSAiTENfTUVTU0FHRVMiIGluIHNob3J0Zm9ybSBkaXJlY3Rv cnkgMTI2NzkyMzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYzNzg4Cmp1bmtpbmcg ZW50cnkgIkxDX01FU1NBR0VTIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2NzkyMzEKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgIkxDX01FU1NBR0VT IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNjc5MjMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE2Mzc5MQpqdW5raW5nIGVudHJ5ICJMQ19NRVNTQUdFUyIgaW4gZGlyZWN0b3J5IGlu b2RlIDEyNjc5MjMyCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTc4NjUwMwplbnRyeSAiLi4i IGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMjY3OTI0NSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MDcyMDIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgImNvbmYuZCIgYXQgYmxvY2sgMCBvZmZzZXQgMTky IGluIGRpcmVjdG9yeSBpbm9kZSA1Nzg2NTI4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDExMjU5MDUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTkyLi4u CmVudHJ5ICJzbjIiIGF0IGJsb2NrIDAgb2Zmc2V0IDQ0MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2 NzkyNDUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA3MjA0CmVudHJ5ICJub2xtLWFj LXN0YXJ0IiBhdCBibG9jayAwIG9mZnNldCA0NjQgaW4gZGlyZWN0b3J5IGlub2RlIDU3ODY1Mjgg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEyODY0MgoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCA0NjQuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgNDQwLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTI2NzkyNDUK ZW50cnkgIkxDX01FU1NBR0VTIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNjc5MzEzIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2Mzc5MwpqdW5raW5nIGVudHJ5ICJMQ19NRVNTQUdF UyIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjc5MzEzCmVudHJ5ICJzaXRlLXN0YXJ0LmQiIGluIHNo b3J0Zm9ybSBkaXJlY3RvcnkgMTI2NzkzMTQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTYzOTg4Cmp1bmtpbmcgZW50cnkgInNpdGUtc3RhcnQuZCIgaW4gZGlyZWN0b3J5IGlub2RlIDEy Njc5MzE0CmVudHJ5ICJkaWN0aW9uYXJpZXMtY29tbW9uIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5 IDEyNjc5MzE4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2Mzk5MwpqdW5raW5nIGVu dHJ5ICJkaWN0aW9uYXJpZXMtY29tbW9uIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2NzkzMTgKZW50 cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTc4NjY0NiBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzU1MDIyCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTc4 NjY0NgplbnRyeSAia2VybmVsIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNjc5ODg5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwNzIxNgpqdW5raW5nIGVudHJ5ICJrZXJuZWwiIGlu IGRpcmVjdG9yeSBpbm9kZSAxMjY3OTg4OQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMy IGluIGRpcmVjdG9yeSBpbm9kZSA1Nzg4Mjk4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDIwNjE4NjgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4K bm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1Nzg4Mjk4CmVudHJ5ICJtZWRpYSIgaW4gc2hvcnRm b3JtIGRpcmVjdG9yeSA1Nzg4MzM4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNjE4 ODYKanVua2luZyBlbnRyeSAibWVkaWEiIGluIGRpcmVjdG9yeSBpbm9kZSA1Nzg4MzM4CmVudHJ5 ICJwaHAzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDU3ODgzMzggcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMjA2MTg4OQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRp cmVjdG9yeSBpbm9kZSAxMjY4MDA4NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODQ0 MzQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KanVua2lu ZyBlbnRyeSAicGhwMyIgaW4gZGlyZWN0b3J5IGlub2RlIDU3ODgzMzgKbm8gLi4gZW50cnkgZm9y IGRpcmVjdG9yeSAxMjY4MDA4NAplbnRyeSAia2VybmVsIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5 IDU3ODgzNDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTk0MDIwMQpqdW5raW5nIGVu dHJ5ICJrZXJuZWwiIGluIGRpcmVjdG9yeSBpbm9kZSA1Nzg4MzQ5CmVudHJ5ICIuLiIgYXQgYmxv Y2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjgwMTAwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDI4NDQzNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEyNjgwMTAwCmVudHJ5ICIu LiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjgwNjc0IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NDE0NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEyNjgwNjc0 CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDU4MDIw NDQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA5NzUzNgoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiYWZmcyIgYXQgYmxvY2sgMCBv ZmZzZXQgMTkyMCBpbiBkaXJlY3RvcnkgaW5vZGUgNTgwMjA0NCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxMzI4Mzg2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDE5MjAuLi4KZW50cnkgImJlZnMiIGF0IGJsb2NrIDAgb2Zmc2V0IDIwMDAgaW4gZGlyZWN0 b3J5IGlub2RlIDU4MDIwNDQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTMyODM5OAoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMDAwLi4uCmVudHJ5ICJj b25maWdmcyIgYXQgYmxvY2sgMCBvZmZzZXQgMjA2NCBpbiBkaXJlY3RvcnkgaW5vZGUgNTgwMjA0 NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTE5OTA1CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwNjQuLi4KZW50cnkgImRsbSIgYXQgYmxvY2sgMCBv ZmZzZXQgMjE2MCBpbiBkaXJlY3RvcnkgaW5vZGUgNTgwMjA0NCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAyMTE5OTE0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDIxNjAuLi4KZW50cnkgImV4dDIiIGF0IGJsb2NrIDAgb2Zmc2V0IDIyNDAgaW4gZGlyZWN0 b3J5IGlub2RlIDU4MDIwNDQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjExOTk1MwoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMjQwLi4uCmVudHJ5ICJm cmVldnhmcyIgYXQgYmxvY2sgMCBvZmZzZXQgMjMwNCBpbiBkaXJlY3RvcnkgaW5vZGUgNTgwMjA0 NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTIwMDA3CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIzMDQuLi4KZW50cnkgImhvc3RmcyIgYXQgYmxvY2sg MCBvZmZzZXQgMjQwMCBpbiBkaXJlY3RvcnkgaW5vZGUgNTgwMjA0NCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAyMTIwMDMxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDI0MDAuLi4KZW50cnkgImlzb2ZzIiBhdCBibG9jayAwIG9mZnNldCAyNDgwIGluIGRp cmVjdG9yeSBpbm9kZSA1ODAyMDQ0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMjAw MzYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQ4MC4uLgplbnRy eSAiamZzIiBhdCBibG9jayAwIG9mZnNldCAyNTQ0IGluIGRpcmVjdG9yeSBpbm9kZSA1ODAyMDQ0 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMjAwNDkKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjU0NC4uLgplbnRyeSAibmNwZnMiIGF0IGJsb2NrIDAg b2Zmc2V0IDI2MDggaW4gZGlyZWN0b3J5IGlub2RlIDU4MDIwNDQgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMjEyMTAyMwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAyNjA4Li4uCmVudHJ5ICJubHMiIGF0IGJsb2NrIDAgb2Zmc2V0IDI2ODAgaW4gZGlyZWN0 b3J5IGlub2RlIDU4MDIwNDQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEyMTAzOQoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjgwLi4uCmVudHJ5ICJx bng0IiBhdCBibG9jayAwIG9mZnNldCAyNzkyIGluIGRpcmVjdG9yeSBpbm9kZSA1ODAyMDQ0IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMjExMzgKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMjc5Mi4uLgplbnRyeSAic21iZnMiIGF0IGJsb2NrIDAgb2Zm c2V0IDI4NjQgaW4gZGlyZWN0b3J5IGlub2RlIDU4MDIwNDQgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjEyMTE0OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAyODY0Li4uCmVudHJ5ICJ1ZnMiIGF0IGJsb2NrIDAgb2Zmc2V0IDI5MjggaW4gZGlyZWN0b3J5 IGlub2RlIDU4MDIwNDQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEyMTE5NwoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyOTI4Li4uCm5vIC4uIGVudHJ5 IGZvciBkaXJlY3RvcnkgNTgwMjA0NAplbnRyeSAiTENfTUVTU0FHRVMiIGluIHNob3J0Zm9ybSBk aXJlY3RvcnkgMTI2OTk0MDUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYzNzk1Cmp1 bmtpbmcgZW50cnkgIkxDX01FU1NBR0VTIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2OTk0MDUKZW50 cnkgInByb2plY3RzIiBhdCBibG9jayAwIG9mZnNldCA0MDAgaW4gZGlyZWN0b3J5IGlub2RlIDU4 MjMwNzMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE1NjQxMQoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MDAuLi4KZW50cnkgIkxDX01FU1NBR0VTIiBp biBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNjk5NDE1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE2Mzc5NwplbnRyeSAic3R5bGVzIiBhdCBibG9jayAwIG9mZnNldCA0NTYgaW4gZGlyZWN0 b3J5IGlub2RlIDU4MjMwNzMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE1NjQxNAoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0NTYuLi4KanVua2luZyBl bnRyeSAiTENfTUVTU0FHRVMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjY5OTQxNQplbnRyeSAiTENf TUVTU0FHRVMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI2OTk0MTYgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTYzODAwCmp1bmtpbmcgZW50cnkgIkxDX01FU1NBR0VTIiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTI2OTk0MTYKZW50cnkgIkxDX01FU1NBR0VTIiBpbiBzaG9ydGZvcm0gZGly ZWN0b3J5IDEyNjk5NDIxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2MzgwMgpqdW5r aW5nIGVudHJ5ICJMQ19NRVNTQUdFUyIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjk5NDIxCmVudHJ5 ICJMQ19NRVNTQUdFUyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjY5OTQyOSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxNjM4MDQKanVua2luZyBlbnRyeSAiTENfTUVTU0FHRVMiIGlu IGRpcmVjdG9yeSBpbm9kZSAxMjY5OTQyOQplbnRyeSAiTENfTUVTU0FHRVMiIGluIHNob3J0Zm9y bSBkaXJlY3RvcnkgMTI2OTk0MzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTYzODA3 Cmp1bmtpbmcgZW50cnkgIkxDX01FU1NBR0VTIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2OTk0MzEK ZW50cnkgIkxDX01FU1NBR0VTIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNjk5NDMyIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE2MzgxMApqdW5raW5nIGVudHJ5ICJMQ19NRVNTQUdF UyIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjk5NDMyCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZz ZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjk5NTAyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDk1NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4u LgplbnRyeSAiZG9jcyIgYXQgYmxvY2sgMCBvZmZzZXQgMjg4IGluIGRpcmVjdG9yeSBpbm9kZSA1 ODIzNDAyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExOTUxNDIKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjg4Li4uCmVudHJ5ICJGVFAiIGF0IGJsb2Nr IDAgb2Zmc2V0IDcyIGluIGRpcmVjdG9yeSBpbm9kZSAxMjY5OTUwMiByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAyMDMzMTMKZW50cnkgInBrZyIgYXQgYmxvY2sgMCBvZmZzZXQgNTUyIGlu IGRpcmVjdG9yeSBpbm9kZSA1ODIzNDAyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEx OTUxNTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTUyLi4uCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDcyLi4uCmVudHJ5ICJDb25m aWciIGF0IGJsb2NrIDAgb2Zmc2V0IDc2MCBpbiBkaXJlY3RvcnkgaW5vZGUgNTgyMzQwMiByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTk1MTU2CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDc2MC4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEyNjk5 NTAyCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDEy Njk5NTMwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDk1NgoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiQVBJIiBhdCBibG9jayAwIG9m ZnNldCA3MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2OTk1MzAgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjAzMzc5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDcyLi4uCmVudHJ5ICJaaXAiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNTgyMzUyMCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTk1Mjc2Cm5vIC4uIGVudHJ5IGZvciBkaXJlY3Rvcnkg MTI2OTk1MzAKanVua2luZyBlbnRyeSAiWmlwIiBpbiBkaXJlY3RvcnkgaW5vZGUgNTgyMzUyMApl bnRyeSAiVUkiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI2OTk1NDMgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjAzMzk3Cmp1bmtpbmcgZW50cnkgIlVJIiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTI2OTk1NDMKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTI2OTk1NTEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgOTU2CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJEaXN0IiBhdCBi bG9jayAwIG9mZnNldCA3MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2OTk1NTEgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMjAzNDA3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDcyLi4uCmVudHJ5ICJJbnRlcm5hbHMiIGF0IGJsb2NrIDAgb2Zmc2V0IDYxNiBp biBkaXJlY3RvcnkgaW5vZGUgMTI2OTk1NTEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MjAzNDEzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDYxNi4uLgpu byAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEyNjk5NTUxCmVudHJ5ICJEZWZhdWx0IiBpbiBzaG9y dGZvcm0gZGlyZWN0b3J5IDEyNjk5NjE2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIw MzQxMgpqdW5raW5nIGVudHJ5ICJEZWZhdWx0IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2OTk2MTYK ZW50cnkgIk1lc3NhZ2UiIGF0IGJsb2NrIDAgb2Zmc2V0IDIxMjggaW4gZGlyZWN0b3J5IGlub2Rl IDU4MjQ1NTIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE5NTMwOQoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMTI4Li4uCmVudHJ5ICJUYXIiIGluIHNo b3J0Zm9ybSBkaXJlY3RvcnkgMTI2OTk2MzggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MjAzNDY0Cmp1bmtpbmcgZW50cnkgIlRhciIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNjk5NjM4CmVu dHJ5ICJMb2FkIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNjk5NjQxIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDIwMzQ3MApqdW5raW5nIGVudHJ5ICJMb2FkIiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTI2OTk2NDEKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rv cnkgaW5vZGUgNTgyNDcyMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTk1MzAzCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5 IGZvciBkaXJlY3RvcnkgNTgyNDcyMgplbnRyeSAiUGxhdGZvcm0iIGluIHNob3J0Zm9ybSBkaXJl Y3RvcnkgMTI2OTk2NjIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjAzNTMwCmp1bmtp bmcgZW50cnkgIlBsYXRmb3JtIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2OTk2NjIKZW50cnkgIlpp cCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjY5OTY2OSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAyMDM1NjUKanVua2luZyBlbnRyeSAiWmlwIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI2 OTk2NjkKZW50cnkgIkFkYXB0ZXIiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI2OTk2NjkgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjAzNTY3Cmp1bmtpbmcgZW50cnkgIkFkYXB0ZXIi IGluIGRpcmVjdG9yeSBpbm9kZSAxMjY5OTY2OQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0 IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1ODI0ODM2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDExOTUzMDkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIu Li4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1ODI0ODM2CmVudHJ5ICJMb2NrZXIiIGF0IGJs b2NrIDAgb2Zmc2V0IDQ1NiBpbiBkaXJlY3RvcnkgaW5vZGUgNTgyNDg1MSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMTk1MzQ0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDQ1Ni4uLgplbnRyeSAiUGFyc2VyIiBhdCBibG9jayAwIG9mZnNldCAxMzM2IGlu IGRpcmVjdG9yeSBpbm9kZSA1ODI0ODUxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEx OTUzNTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTMzNi4uLgpl bnRyeSAiU2VhcmNoIiBhdCBibG9jayAwIG9mZnNldCAxOTI4IGluIGRpcmVjdG9yeSBpbm9kZSA1 ODI0ODUxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExOTUyOTEKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTkyOC4uLgplbnRyeSAiRGJ4IiBhdCBibG9j ayAwIG9mZnNldCAyNjgwIGluIGRpcmVjdG9yeSBpbm9kZSA1ODI0ODUxIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDExOTU0MjcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMjY4MC4uLgplbnRyeSAiQmlnSW50IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEy NzAwMjM4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMzU3NQpqdW5raW5nIGVudHJ5 ICJCaWdJbnQiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjcwMDIzOAplbnRyeSAiRHVtcGVyIiBpbiBz aG9ydGZvcm0gZGlyZWN0b3J5IDEyNzAwMjc0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDIwMzU4MApqdW5raW5nIGVudHJ5ICJEdW1wZXIiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjcwMDI3 NAplbnRyeSAiRmFzdENhbGMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI3MDAyNzcgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjAzNTgzCmp1bmtpbmcgZW50cnkgIkZhc3RDYWxjIiBp biBkaXJlY3RvcnkgaW5vZGUgMTI3MDAyNzcKZW50cnkgIkhpUmVzIiBpbiBzaG9ydGZvcm0gZGly ZWN0b3J5IDEyNzAwMjc4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4MTkyMQpqdW5r aW5nIGVudHJ5ICJIaVJlcyIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNzAwMjc4CmVudHJ5ICJDTiIg aW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjcwMDI4MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyODE5MjQKanVua2luZyBlbnRyeSAiQ04iIGluIGRpcmVjdG9yeSBpbm9kZSAxMjcwMDI4 MQplbnRyeSAiRUJDRElDIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyNzAwMjgxIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4MTkyNgpqdW5raW5nIGVudHJ5ICJFQkNESUMiIGluIGRp cmVjdG9yeSBpbm9kZSAxMjcwMDI4MQplbnRyeSAiUGVlayIgaW4gc2hvcnRmb3JtIGRpcmVjdG9y eSAxMjcwMDI4NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODE5MjkKanVua2luZyBl bnRyeSAiUGVlayIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNzAwMjg3CmVudHJ5ICJabGliIiBpbiBz aG9ydGZvcm0gZGlyZWN0b3J5IDEyNzAwMzk3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDI4MTkzNwpqdW5raW5nIGVudHJ5ICJabGliIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI3MDAzOTcK ZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTgyNTA3 MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTk1NDQyCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJ2aWEiIGluIHNob3J0Zm9ybSBk aXJlY3RvcnkgMTI3MDAzOTggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjgxOTQwCm5v IC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTgyNTA3MgpqdW5raW5nIGVudHJ5ICJ2aWEiIGluIGRp cmVjdG9yeSBpbm9kZSAxMjcwMDM5OAplbnRyeSAiZXhhbXBsZXMiIGF0IGJsb2NrIDAgb2Zmc2V0 IDMyOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTI3MDA3ODAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgNTEyOTU5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMy OC4uLgplbnRyeSAibW9kdWxlcyIgYXQgYmxvY2sgMCBvZmZzZXQgMTIwIGluIGRpcmVjdG9yeSBp bm9kZSAxMjcwMTA0MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1MTI4OTUKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTIwLi4uCmVudHJ5ICIuLiIgYXQg YmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNzE5MjM4IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDI4NDE0NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEyNzE5MjM4CmVudHJ5 ICJ4ODYiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI3MzY5NjggcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMzE4MjU5Cmp1bmtpbmcgZW50cnkgIng4NiIgaW4gZGlyZWN0b3J5IGlub2Rl IDEyNzM2OTY4CmVudHJ5ICJwZGF1ZGlvY2YiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI3Mzcw OTkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzI4MzM4Cmp1bmtpbmcgZW50cnkgInBk YXVkaW9jZiIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNzM3MDk5CmVudHJ5ICJtaW1lIiBpbiBzaG9y dGZvcm0gZGlyZWN0b3J5IDU4NTk5NzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEy MDA1NApqdW5raW5nIGVudHJ5ICJtaW1lIiBpbiBkaXJlY3RvcnkgaW5vZGUgNTg1OTk3MgplbnRy eSAieDExcGVyZmNvbXAiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI3MzcxMTkgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMzU4ODExCmp1bmtpbmcgZW50cnkgIngxMXBlcmZjb21wIiBp biBkaXJlY3RvcnkgaW5vZGUgMTI3MzcxMTkKZW50cnkgInJzdGFydCIgaW4gc2hvcnRmb3JtIGRp cmVjdG9yeSAxMjczNzExOSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg4NDgKanVu a2luZyBlbnRyeSAicnN0YXJ0IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI3MzcxMTkKZW50cnkgImxp YiIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA1ODYwNDIxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDEzNTUwMDkKanVua2luZyBlbnRyeSAibGliIiBpbiBkaXJlY3RvcnkgaW5vZGUgNTg2 MDQyMQplbnRyeSAibWlzYyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjc1NzI0MyByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTA5NzAKanVua2luZyBlbnRyeSAibWlzYyIgaW4gZGly ZWN0b3J5IGlub2RlIDEyNzU3MjQzCmVudHJ5ICJrZXJuZWwiIGF0IGJsb2NrIDAgb2Zmc2V0IDI1 NiBpbiBkaXJlY3RvcnkgaW5vZGUgNTg2MDQyNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxMzU1MDIyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1Ni4u LgplbnRyeSAibGd1ZXN0IiBhdCBibG9jayAwIG9mZnNldCAyOTYgaW4gZGlyZWN0b3J5IGlub2Rl IDU4NjA0MjcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg1MDY2MwoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyOTYuLi4KZW50cnkgIi4uIiBhdCBibG9j ayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI3NTcyNTQgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTUwOTc3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDMyLi4uCmVudHJ5ICJtYWNoLWdlbmVyaWMiIGF0IGJsb2NrIDAgb2Zmc2V0IDM4NCBp biBkaXJlY3RvcnkgaW5vZGUgNTg2MDQyNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx ODUwNjY4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM4NC4uLgpu byAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEyNzU3MjU0CmVudHJ5ICJtYXRoLWVtdSIgYXQgYmxv Y2sgMCBvZmZzZXQgNDgwIGluIGRpcmVjdG9yeSBpbm9kZSA1ODYwNDI3IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE4NTA2NzUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgNDgwLi4uCmVudHJ5ICJwb3dlciIgYXQgYmxvY2sgMCBvZmZzZXQgNTYwIGluIGRp cmVjdG9yeSBpbm9kZSA1ODYwNDI3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDUw ODMKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI3 NTcyNjQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUwOTc3CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDU2MC4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEyNzU3 MjY0CmVudHJ5ICJ4ZW4iIGF0IGJsb2NrIDAgb2Zmc2V0IDYwOCBpbiBkaXJlY3RvcnkgaW5vZGUg NTg2MDQyNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA1MTA3CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDYwOC4uLgplbnRyeSAiZHRkIiBpbiBzaG9y dGZvcm0gZGlyZWN0b3J5IDEyNzU3Mjc1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1 MDk5MQpqdW5raW5nIGVudHJ5ICJkdGQiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjc1NzI3NQplbnRy eSAiNC4xLjIiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI3NTcyNzYgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTUwOTkyCmp1bmtpbmcgZW50cnkgIjQuMS4yIiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTI3NTcyNzYKZW50cnkgIjQuNSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjc1NzI3 NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTA5OTQKanVua2luZyBlbnRyeSAiNC41 IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI3NTcyNzYKZW50cnkgImRiIiBpbiBzaG9ydGZvcm0gZGly ZWN0b3J5IDEyNzU3MzAyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1MTAwMQpqdW5r aW5nIGVudHJ5ICJkYiIgaW4gZGlyZWN0b3J5IGlub2RlIDEyNzU3MzAyCmVudHJ5ICJ0ZW1wbGF0 ZXMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI3NTczMDIgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjUxOTAwCmp1bmtpbmcgZW50cnkgInRlbXBsYXRlcyIgaW4gZGlyZWN0b3J5IGlu b2RlIDEyNzU3MzAyCmVudHJ5ICJOUkciIGF0IGJsb2NrIDAgb2Zmc2V0IDExMiBpbiBkaXJlY3Rv cnkgaW5vZGUgMTI3NTczMDMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTUxMDAyCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExMi4uLgplbnRyeSAiR2Vz dGV0bmVyIiBhdCBibG9jayAwIG9mZnNldCAyNTYgaW4gZGlyZWN0b3J5IGlub2RlIDEyNzU3MzAz IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3MDM3MQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNTYuLi4KZW50cnkgIlJpY29oIiBhdCBibG9jayAwIG9m ZnNldCAzNjAgaW4gZGlyZWN0b3J5IGlub2RlIDEyNzU3MzAzIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDE3MDM3MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzNjAuLi4KZW50cnkgImF1ODh4MCIgYXQgYmxvY2sgMCBvZmZzZXQgNzI4IGluIGRpcmVjdG9y eSBpbm9kZSA1ODYyMTM5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI2NDg5NDUKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNzI4Li4uCmVudHJ5ICJlbXUx MGsxIiBhdCBibG9jayAwIG9mZnNldCA4MTYgaW4gZGlyZWN0b3J5IGlub2RlIDU4NjIxMzkgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjY0ODk0OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCA4MTYuLi4KZW50cnkgIm5tMjU2IiBhdCBibG9jayAwIG9mZnNl dCA5MDQgaW4gZGlyZWN0b3J5IGlub2RlIDU4NjIxMzkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjY0ODk1MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5 MDQuLi4KZW50cnkgInJtZTk2NTIiIGF0IGJsb2NrIDAgb2Zmc2V0IDk4NCBpbiBkaXJlY3Rvcnkg aW5vZGUgNTg2MjEzOSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNjQ4OTUzCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDk4NC4uLgplbnRyeSAiZG9jIiBp biBzaG9ydGZvcm0gZGlyZWN0b3J5IDU4NjIxNzUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMjY0ODk2MQpqdW5raW5nIGVudHJ5ICJkb2MiIGluIGRpcmVjdG9yeSBpbm9kZSA1ODYyMTc1 CmVudHJ5ICJodG1sIiBhdCBibG9jayAwIG9mZnNldCA3MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI3 NzI5NzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjAxODMwCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDcyLi4uCmVudHJ5ICJtaW1lIiBhdCBibG9jayAw IG9mZnNldCA0ODAgaW4gZGlyZWN0b3J5IGlub2RlIDEyODA5NTcwIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDQ4OTg3NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA0ODAuLi4KZW50cnkgInNheCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjgwOTY0MyBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0ODk4ODYKanVua2luZyBlbnRyeSAic2F4IiBp biBkaXJlY3RvcnkgaW5vZGUgMTI4MDk2NDMKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAz MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI4MDk2ODAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNDg5OTU2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4u Cm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTI4MDk2ODAKZW50cnkgIi4uIiBhdCBibG9jayAw IG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI4MDk3MjkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTUxMDAyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTI4MDk3MjkKZW50cnkgInNlbGlu dXgiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI4MDk5ODYgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgNDg5OTg0Cmp1bmtpbmcgZW50cnkgInNlbGludXgiIGluIGRpcmVjdG9yeSBpbm9k ZSAxMjgwOTk4NgplbnRyeSAidG8iIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI4MTAzNTMgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTk4NjI1Cmp1bmtpbmcgZW50cnkgInRvIiBpbiBk aXJlY3RvcnkgaW5vZGUgMTI4MTAzNTMKZW50cnkgImR0ZCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9y eSAxMjgxMDM5MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTA5NzcKanVua2luZyBl bnRyeSAiZHRkIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI4MTAzOTIKZW50cnkgIi4uIiBhdCBibG9j ayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI4MTAzOTMgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTUwOTc3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTI4MTAzOTMKZW50cnkgImRl ZmF1bHQiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI4MTA1OTQgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgNDkwMDQ2Cmp1bmtpbmcgZW50cnkgImRlZmF1bHQiIGluIGRpcmVjdG9yeSBp bm9kZSAxMjgxMDU5NAplbnRyeSAiTENfTUVTU0FHRVMiIGluIHNob3J0Zm9ybSBkaXJlY3Rvcnkg MTI4MTA2MDYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTcwMDM3Cmp1bmtpbmcgZW50 cnkgIkxDX01FU1NBR0VTIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI4MTA2MDYKZW50cnkgIkxDX01F U1NBR0VTIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyODEwNjEyIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDE3MDA0NQpqdW5raW5nIGVudHJ5ICJMQ19NRVNTQUdFUyIgaW4gZGlyZWN0 b3J5IGlub2RlIDEyODEwNjEyCmVudHJ5ICJleGFtcGxlcyIgYXQgYmxvY2sgMCBvZmZzZXQgNTg0 IGluIGRpcmVjdG9yeSBpbm9kZSAxMjgxMDYxNSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA0OTI2NjUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTg0Li4u CmVudHJ5ICJMQ19NRVNTQUdFUyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjgxMDY0NSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0OTI2ODcKanVua2luZyBlbnRyeSAiTENfTUVTU0FH RVMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjgxMDY0NQplbnRyeSAiZm10LmQiIGF0IGJsb2NrIDAg b2Zmc2V0IDgwIGluIGRpcmVjdG9yeSBpbm9kZSAxMjgzNTMzMiByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSA0OTI2OTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgODAuLi4KZW50cnkgImxhbmd1YWdlLmQiIGF0IGJsb2NrIDAgb2Zmc2V0IDEyOCBpbiBkaXJl Y3RvcnkgaW5vZGUgMTI4MzUzMzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgOTA1MzMz CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyOC4uLgplbnRyeSAi ZHZpcGRmbSIgYXQgYmxvY2sgMCBvZmZzZXQgMzQ0IGluIGRpcmVjdG9yeSBpbm9kZSAxMjgzNTMz MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2MTkwCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM0NC4uLgplbnRyeSAidGV4IiBhdCBibG9jayAwIG9m ZnNldCA0NDAgaW4gZGlyZWN0b3J5IGlub2RlIDEyODM1MzMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDEyNzYxOTEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgNDQwLi4uCmVudHJ5ICJ0ZXhkb2N0ayIgYXQgYmxvY2sgMCBvZmZzZXQgNTI4IGluIGRpcmVj dG9yeSBpbm9kZSAxMjgzNTMzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2MTky CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDUyOC4uLgplbnRyeSAi ZXhhbXBsZXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDgwIGluIGRpcmVjdG9yeSBpbm9kZSAxMjgzNTM0 NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0OTI2OTkKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODAuLi4KZW50cnkgImRlcHJlY2F0ZWQiIGluIHNob3J0 Zm9ybSBkaXJlY3RvcnkgMTI4MzU5NDAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA2 MTg2NgpqdW5raW5nIGVudHJ5ICJkZXByZWNhdGVkIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI4MzU5 NDAKZW50cnkgIml0dSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjgzNjEwNSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAyMzA1MDkzCmp1bmtpbmcgZW50cnkgIml0dSIgaW4gZGlyZWN0 b3J5IGlub2RlIDEyODM2MTA1CmVudHJ5ICJidWYiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI4 MzYxMzYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjMwNTEwMQpqdW5raW5nIGVudHJ5 ICJidWYiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjgzNjEzNgplbnRyeSAiLi4iIGF0IGJsb2NrIDAg b2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMjgzNjEzOSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAyMzA1MTA1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTI4MzYxMzkKZW50cnkgIkxDX01F U1NBR0VTIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyODM2Mzc4IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDU5ODY2MQpqdW5raW5nIGVudHJ5ICJMQ19NRVNTQUdFUyIgaW4gZGlyZWN0 b3J5IGlub2RlIDEyODM2Mzc4CmVudHJ5ICJleGFtcGxlcyIgYXQgYmxvY2sgMCBvZmZzZXQgODAg aW4gZGlyZWN0b3J5IGlub2RlIDEyODM2ODg4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDU5ODcwOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4MC4uLgpl bnRyeSAiZXhhbXBsZXMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI4MzY5MjYgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgNTk4NzExCmp1bmtpbmcgZW50cnkgImV4YW1wbGVzIiBpbiBk aXJlY3RvcnkgaW5vZGUgMTI4MzY5MjYKZW50cnkgImh0bWwiIGluIHNob3J0Zm9ybSBkaXJlY3Rv cnkgMTI4MzcyNTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTk4NzUyCmp1bmtpbmcg ZW50cnkgImh0bWwiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjgzNzI1NgplbnRyeSAiLi4iIGF0IGJs b2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMjg1ODI4MCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSA2MDUzOTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMzIuLi4KZW50cnkgImRvdC5lbG0iIGF0IGJsb2NrIDAgb2Zmc2V0IDgwIGluIGRp cmVjdG9yeSBpbm9kZSAxMjg1ODI4MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2NDg5 MTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODAuLi4Kbm8gLi4g ZW50cnkgZm9yIGRpcmVjdG9yeSAxMjg1ODI4MAplbnRyeSAic2NyaXB0bGV0cy5kIiBpbiBzaG9y dGZvcm0gZGlyZWN0b3J5IDEyODU4NTI3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDY0 OTA3MQpqdW5raW5nIGVudHJ5ICJzY3JpcHRsZXRzLmQiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjg1 ODUyNwplbnRyeSAiT2NlLTg0NDVQUyIgYXQgYmxvY2sgMCBvZmZzZXQgODAgaW4gZGlyZWN0b3J5 IGlub2RlIDEyODczNDY2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1MTAwMwoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4MC4uLgplbnRyeSAiT3RoZXJz IiBhdCBibG9jayAwIG9mZnNldCAxOTIgaW4gZGlyZWN0b3J5IGlub2RlIDEyODczNDY2IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE1MTAwNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAxOTIuLi4KZW50cnkgIjEiIGluIHNob3J0Zm9ybSBkaXJlY3Rvcnkg MTI4NzM0NzIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTcwMzUxCmp1bmtpbmcgZW50 cnkgIjEiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjg3MzQ3MgplbnRyeSAiMSIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSAxMjg3MzQ3NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNzAzNTMK anVua2luZyBlbnRyeSAiMSIgaW4gZGlyZWN0b3J5IGlub2RlIDEyODczNDc1CmVudHJ5ICIxIiBp biBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyODczNDc4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE3MDM1NQpqdW5raW5nIGVudHJ5ICIxIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI4NzM0NzgK ZW50cnkgIjEiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI4NzM0ODEgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTcwMzU3Cmp1bmtpbmcgZW50cnkgIjEiIGluIGRpcmVjdG9yeSBpbm9k ZSAxMjg3MzQ4MQplbnRyeSAiMSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjg3MzQ4NCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNzAzNTkKanVua2luZyBlbnRyeSAiMSIgaW4gZGly ZWN0b3J5IGlub2RlIDEyODczNDg0CmVudHJ5ICIxIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEy ODczNDg3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3MDM2MQpqdW5raW5nIGVudHJ5 ICIxIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI4NzM0ODcKZW50cnkgIjEiIGluIHNob3J0Zm9ybSBk aXJlY3RvcnkgMTI4NzM0OTAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTcwMzYzCmp1 bmtpbmcgZW50cnkgIjEiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjg3MzQ5MAplbnRyeSAiMSIgaW4g c2hvcnRmb3JtIGRpcmVjdG9yeSAxMjg3MzQ5MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxNzAzNjUKanVua2luZyBlbnRyeSAiMSIgaW4gZGlyZWN0b3J5IGlub2RlIDEyODczNDkzCmVu dHJ5ICIxIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyODczNDk2IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDE3MDM2NwpqdW5raW5nIGVudHJ5ICIxIiBpbiBkaXJlY3RvcnkgaW5vZGUg MTI4NzM0OTYKZW50cnkgIjEiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI4NzM0OTkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTcwMzY5Cmp1bmtpbmcgZW50cnkgIjEiIGluIGRpcmVj dG9yeSBpbm9kZSAxMjg3MzQ5OQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRp cmVjdG9yeSBpbm9kZSAxMjg3MzU1MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNzAz NzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4g ZW50cnkgZm9yIGRpcmVjdG9yeSAxMjg3MzU1MwplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0 IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMjg3MzY2NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxNzAzNzIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIu Li4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMjg3MzY2NgplbnRyeSAiUFMiIGluIHNob3J0 Zm9ybSBkaXJlY3RvcnkgMTI4NzM3NTcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTcw MzczCmp1bmtpbmcgZW50cnkgIlBTIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI4NzM3NTcKZW50cnkg IlBTIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyODczODg1IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDI1MTE3NgpqdW5raW5nIGVudHJ5ICJQUyIgaW4gZGlyZWN0b3J5IGlub2RlIDEy ODczODg1CmVudHJ5ICJQWEwiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI4NzM4ODYgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUxMzA0Cmp1bmtpbmcgZW50cnkgIlBYTCIgaW4gZGly ZWN0b3J5IGlub2RlIDEyODczODg2CmVudHJ5ICJlbiIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAx Mjg3NDAyMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTEzOTMKanVua2luZyBlbnRy eSAiZW4iIGluIGRpcmVjdG9yeSBpbm9kZSAxMjg3NDAyMgplbnRyeSAicHQiIGluIHNob3J0Zm9y bSBkaXJlY3RvcnkgMTI4NzQwMjIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUxNTE4 Cmp1bmtpbmcgZW50cnkgInB0IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI4NzQwMjIKZW50cnkgIi4u IiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTg3MDQxMiByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTIzMDQ2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTg3MDQxMgpl bnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1ODcwNDcw IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMjMwNzIKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA1 ODcwNDcwCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2Rl IDU4NzA1ODAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEyMzgxMgoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGly ZWN0b3J5IDU4NzA1ODAKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rv cnkgaW5vZGUgNTg3MDYyMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTI0MTMxCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5 IGZvciBkaXJlY3RvcnkgNTg3MDYyMQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGlu IGRpcmVjdG9yeSBpbm9kZSA1ODcwNjQ2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIx MjQxMzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8g Li4gZW50cnkgZm9yIGRpcmVjdG9yeSA1ODcwNjQ2CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZz ZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDU4NzA2ODYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjEyNDEzMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz Mi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDU4NzA2ODYKZW50cnkgIi4uIiBhdCBibG9j ayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTg3MDczNSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAyMTI0MTMxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTg3MDczNQplbnRyeSAibW9k ZWwiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI5MTM1MDEgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMzU5MTYwCmp1bmtpbmcgZW50cnkgIm1vZGVsIiBpbiBkaXJlY3RvcnkgaW5vZGUg MTI5MTM1MDEKZW50cnkgIlplYnJhIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyOTEzNzAzIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMjI4NQpqdW5raW5nIGVudHJ5ICJaZWJyYSIg aW4gZGlyZWN0b3J5IGlub2RlIDEyOTEzNzAzCmVudHJ5ICJEeW1vIiBpbiBzaG9ydGZvcm0gZGly ZWN0b3J5IDEyOTEzNzAzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMjI5MApqdW5r aW5nIGVudHJ5ICJEeW1vIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI5MTM3MDMKZW50cnkgIm1hcHBp IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDU4NzU0NjIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgNDA3MjM2Cmp1bmtpbmcgZW50cnkgIm1hcHBpIiBpbiBkaXJlY3RvcnkgaW5vZGUgNTg3 NTQ2MgplbnRyeSAib3BzcHV0IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDU4NzU0NjIgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA3MjQzCmp1bmtpbmcgZW50cnkgIm9wc3B1dCIgaW4g ZGlyZWN0b3J5IGlub2RlIDU4NzU0NjIKZW50cnkgIm1tIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5 IDU4NzU0NzMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA5ODQ5Cmp1bmtpbmcgZW50 cnkgIm1tIiBpbiBkaXJlY3RvcnkgaW5vZGUgNTg3NTQ3MwplbnRyeSAiNTIweCIgYXQgYmxvY2sg MCBvZmZzZXQgMTA0IGluIGRpcmVjdG9yeSBpbm9kZSA1ODc1NDc4IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDQwOTg1NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAxMDQuLi4KZW50cnkgIjUyN3giIGF0IGJsb2NrIDAgb2Zmc2V0IDE2OCBpbiBkaXJlY3Rv cnkgaW5vZGUgNTg3NTQ3OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MDk4NjAKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTY4Li4uCmVudHJ5ICI1NDA3 IiBhdCBibG9jayAwIG9mZnNldCAyMzIgaW4gZGlyZWN0b3J5IGlub2RlIDU4NzU0NzggcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA5ODYzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDIzMi4uLgplbnRyeSAiNjhWWjMyOCIgYXQgYmxvY2sgMCBvZmZzZXQg MzA0IGluIGRpcmVjdG9yeSBpbm9kZSA1ODc1NDc4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDQwOTg2NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDQu Li4KZW50cnkgImltYWdlcyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjkxMzk2MCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjI0MDUKanVua2luZyBlbnRyeSAiaW1hZ2VzIiBpbiBk aXJlY3RvcnkgaW5vZGUgMTI5MTM5NjAKZW50cnkgImtlcm5lbCIgYXQgYmxvY2sgMCBvZmZzZXQg MjMyIGluIGRpcmVjdG9yeSBpbm9kZSA1ODc2MjIxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE1MDQ5MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMzIu Li4KZW50cnkgImltYWdlcyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjkxNDA0NyByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjI0NTgKanVua2luZyBlbnRyeSAiaW1hZ2VzIiBpbiBk aXJlY3RvcnkgaW5vZGUgMTI5MTQwNDcKZW50cnkgImNvbmZpZ3MiIGluIHNob3J0Zm9ybSBkaXJl Y3RvcnkgNTg3NjIzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MDcyMjAKanVua2lu ZyBlbnRyeSAiY29uZmlncyIgaW4gZGlyZWN0b3J5IGlub2RlIDU4NzYyMzcKZW50cnkgIm9wcm9m aWxlIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDU4NzYyMzcgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgNDA3MjMzCmp1bmtpbmcgZW50cnkgIm9wcm9maWxlIiBpbiBkaXJlY3RvcnkgaW5v ZGUgNTg3NjIzNwplbnRyeSAiY29uZmlncyIgYXQgYmxvY2sgMCBvZmZzZXQgMTYwIGluIGRpcmVj dG9yeSBpbm9kZSA1ODc2MzMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDU2NjY4CmVu dHJ5ICJpbWFnZXMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI5MTQxOTggcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgNDIyNTQ2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDE2MC4uLgplbnRyeSAibW0iIGF0IGJsb2NrIDAgb2Zmc2V0IDI0OCBpbiBkaXJl Y3RvcnkgaW5vZGUgNTg3NjMzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1NzA1OAoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNDguLi4KanVua2luZyBl bnRyeSAiaW1hZ2VzIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI5MTQxOTgKZW50cnkgIi4uIiBhdCBi bG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTg4OTgyMyByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAyMDk3NTM2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJtbjEwMzAwIiBhdCBibG9jayAwIG9mZnNldCAzMDQgaW4g ZGlyZWN0b3J5IGlub2RlIDU4ODk4MjMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEy NDEzMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDQuLi4KZW50 cnkgInBhcmlzYyIgYXQgYmxvY2sgMCBvZmZzZXQgMzI4IGluIGRpcmVjdG9yeSBpbm9kZSA1ODg5 ODIzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMjQxNDEKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzI4Li4uCmVudHJ5ICJwb3dlcnBjIiBhdCBibG9j ayAwIG9mZnNldCAzNTIgaW4gZGlyZWN0b3J5IGlub2RlIDU4ODk4MjMgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTEyNDE1OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzNTIuLi4KZW50cnkgInNwYXJjIiBhdCBibG9jayAwIG9mZnNldCA0MjQgaW4gZGly ZWN0b3J5IGlub2RlIDU4ODk4MjMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NzA2 MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MjQuLi4KZW50cnkg InNwYXJjNjQiIGF0IGJsb2NrIDAgb2Zmc2V0IDQ0MCBpbiBkaXJlY3RvcnkgaW5vZGUgNTg4OTgy MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc3MDc1CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ0MC4uLgplbnRyeSAidW0iIGF0IGJsb2NrIDAgb2Zm c2V0IDQ2NCBpbiBkaXJlY3RvcnkgaW5vZGUgNTg4OTgyMyByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxMjg3OTE4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDQ2NC4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDU4ODk4MjMKZW50cnkgImNwdS1zaDMi IGF0IGJsb2NrIDEgb2Zmc2V0IDI2NCBpbiBkaXJlY3RvcnkgaW5vZGUgNTg5NTAxMyByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTI1MDgwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDI2NC4uLgplbnRyeSAiaGQ2NDQ2NSIgYXQgYmxvY2sgMSBvZmZzZXQg MzYwIGluIGRpcmVjdG9yeSBpbm9kZSA1ODk1MDEzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDIxMjUwOTUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzYw Li4uCmVudHJ5ICJhbWlnYSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjkxNTA5MiByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MDk4NDYKanVua2luZyBlbnRyeSAiYW1pZ2EiIGluIGRp cmVjdG9yeSBpbm9kZSAxMjkxNTA5MgplbnRyeSAiY29tbW9uIiBpbiBzaG9ydGZvcm0gZGlyZWN0 b3J5IDEyOTE1MjgxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwOTg2OQpqdW5raW5n IGVudHJ5ICJjb21tb24iIGluIGRpcmVjdG9yeSBpbm9kZSAxMjkxNTI4MQplbnRyeSAicGIxMTAw IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyOTE1MjgxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDQyMjI0MApqdW5raW5nIGVudHJ5ICJwYjExMDAiIGluIGRpcmVjdG9yeSBpbm9kZSAx MjkxNTI4MQplbnRyeSAieHhzMTUwMCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjkxNTI4MSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjI5OTIKanVua2luZyBlbnRyeSAieHhzMTUw MCIgaW4gZGlyZWN0b3J5IGlub2RlIDEyOTE1MjgxCmVudHJ5ICJMQ19NRVNTQUdFUyIgaW4gc2hv cnRmb3JtIGRpcmVjdG9yeSAxMjkxNTI4NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx Mjc2ODg5Cmp1bmtpbmcgZW50cnkgIkxDX01FU1NBR0VTIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI5 MTUyODYKZW50cnkgImltYWdlcyIgYXQgYmxvY2sgMCBvZmZzZXQgODAgaW4gZGlyZWN0b3J5IGlu b2RlIDEyOTE1MzIwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY5MDAKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODAuLi4KZW50cnkgImltYWdlcyIg YXQgYmxvY2sgMCBvZmZzZXQgODAgaW4gZGlyZWN0b3J5IGlub2RlIDEyOTE1Mzc3IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY5MTYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgODAuLi4KZW50cnkgInByb20iIGF0IGJsb2NrIDAgb2Zmc2V0IDM1MiBp biBkaXJlY3RvcnkgaW5vZGUgMTI5MTU0MTAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg NDIzMDA0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM1Mi4uLgpl bnRyeSAiY2FuIiBhdCBibG9jayA1IG9mZnNldCAyMjQgaW4gZGlyZWN0b3J5IGlub2RlIDU4OTU0 ODMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEyNTM1MwoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMjQuLi4KZW50cnkgImRpcmVjdCIgaW4gc2hvcnRm b3JtIGRpcmVjdG9yeSAxMjkyMDQ4OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTE4 OTMKZW50cnkgImlzZG4iIGF0IGJsb2NrIDUgb2Zmc2V0IDI4OCBpbiBkaXJlY3RvcnkgaW5vZGUg NTg5NTQ4MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTI1MzU5CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI4OC4uLgplbnRyeSAibW1jIiBhdCBibG9j ayA1IG9mZnNldCAzNTIgaW4gZGlyZWN0b3J5IGlub2RlIDU4OTU0ODMgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjEyNTM2NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzNTIuLi4KZW50cnkgIm5ldGZpbHRlcl9icmlkZ2UiIGF0IGJsb2NrIDUgb2Zmc2V0 IDQzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTg5NTQ4MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyMTI1MzczCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQz Mi4uLgpqdW5raW5nIGVudHJ5ICJkaXJlY3QiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjkyMDQ4OQpl bnRyeSAicmFpZCIgYXQgYmxvY2sgNSBvZmZzZXQgNTQ0IGluIGRpcmVjdG9yeSBpbm9kZSA1ODk1 NDgzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMjU4NzIKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTQ0Li4uCmVudHJ5ICJmaWx0ZXIiIGluIHNob3J0 Zm9ybSBkaXJlY3RvcnkgMTI5MjA0OTcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjUx ODk0Cmp1bmtpbmcgZW50cnkgImZpbHRlciIgaW4gZGlyZWN0b3J5IGlub2RlIDEyOTIwNDk3CmVu dHJ5ICJzdW5ycGMiIGF0IGJsb2NrIDUgb2Zmc2V0IDYwOCBpbiBkaXJlY3RvcnkgaW5vZGUgNTg5 NTQ4MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTI1ODg2CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDYwOC4uLgplbnRyeSAibW9uaXRvciIgaW4gc2hv cnRmb3JtIGRpcmVjdG9yeSAxMjkyMDQ5NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0 MjIyNjUKZW50cnkgInVzYiIgYXQgYmxvY2sgNSBvZmZzZXQgNzA0IGluIGRpcmVjdG9yeSBpbm9k ZSA1ODk1NDgzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMjU5MTYKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNzA0Li4uCmp1bmtpbmcgZW50cnkgIm1v bml0b3IiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjkyMDQ5NwplbnRyeSAiYXV0b2NvbmYuaCIgYXQg YmxvY2sgNSBvZmZzZXQgODMyIGluIGRpcmVjdG9yeSBpbm9kZSA1ODk1NDgzIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDIzNjQ0NzEKZW50cnkgIm5vdGlmaWVyIiBpbiBzaG9ydGZvcm0g ZGlyZWN0b3J5IDEyOTIwNDk3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMjI4MApq dW5raW5nIGVudHJ5ICJub3RpZmllciIgaW4gZGlyZWN0b3J5IGlub2RlIDEyOTIwNDk3CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDgzMi4uLgplbnRyeSAibGliIiBp biBzaG9ydGZvcm0gZGlyZWN0b3J5IDEyOTIwNDk4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDI1MTg5NQplbnRyeSAiY29tcGlsZS5oIiBhdCBibG9jayA1IG9mZnNldCA5ODQgaW4gZGly ZWN0b3J5IGlub2RlIDU4OTU0ODMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjM2MjE4 NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5ODQuLi4KanVua2lu ZyBlbnRyeSAibGliIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI5MjA0OTgKZW50cnkgImRvYyIgYXQg YmxvY2sgMCBvZmZzZXQgNzIgaW4gZGlyZWN0b3J5IGlub2RlIDEyOTIxMzIyIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDI1MTkxNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCA3Mi4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVj dG9yeSBpbm9kZSAxMjkyMTMyMyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTE5MTQK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50 cnkgZm9yIGRpcmVjdG9yeSAxMjkyMTMyMwplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMy IGluIGRpcmVjdG9yeSBpbm9kZSAxMjkyMTM5NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyNTE5MTQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4K bm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMjkyMTM5NgplbnRyeSAibW9kdWxlcyIgaW4gc2hv cnRmb3JtIGRpcmVjdG9yeSAxMjkyODcyMCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAy NjQ4OTI5Cmp1bmtpbmcgZW50cnkgIm1vZHVsZXMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjkyODcy MAplbnRyeSAiYWNvcmUiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI5Mjg3MjEgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjY0ODkzMApqdW5raW5nIGVudHJ5ICJhY29yZSIgaW4gZGly ZWN0b3J5IGlub2RlIDEyOTI4NzIxCmVudHJ5ICJpMmMiIGluIHNob3J0Zm9ybSBkaXJlY3Rvcnkg MTI5Mjg3MjEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjY0ODkzNwpqdW5raW5nIGVu dHJ5ICJpMmMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMjkyODcyMQplbnRyeSAic3ludGgiIGluIHNo b3J0Zm9ybSBkaXJlY3RvcnkgMTI5Mjg3MjEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MjY0ODk0MwpqdW5raW5nIGVudHJ5ICJzeW50aCIgaW4gZGlyZWN0b3J5IGlub2RlIDEyOTI4NzIx CmVudHJ5ICJ1c2IiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTI5Mjg3MjEgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMjY0ODk1NwpqdW5raW5nIGVudHJ5ICJ1c2IiIGluIGRpcmVjdG9y eSBpbm9kZSAxMjkyODcyMQplbnRyeSAieG1sLWlzby1lbnRpdGllcy04ODc5LjE5ODYiIGluIHNo b3J0Zm9ybSBkaXJlY3RvcnkgMTI5NDUwMTAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTcwMDc2Cmp1bmtpbmcgZW50cnkgInhtbC1pc28tZW50aXRpZXMtODg3OS4xOTg2IiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTI5NDUwMTAKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBk aXJlY3RvcnkgaW5vZGUgMTI5NDUwNDEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTcw MDU1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4u IGVudHJ5IGZvciBkaXJlY3RvcnkgMTI5NDUwNDEKZW50cnkgImltYWdlcyIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSAxMjk0NTE2OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjI2MzEK anVua2luZyBlbnRyeSAiaW1hZ2VzIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTI5NDUxNjgKZW50cnkg InpoX1RXIiBhdCBibG9jayAwIG9mZnNldCAzMjAgaW4gZGlyZWN0b3J5IGlub2RlIDEyOTQ1MjU3 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyMjg3NwoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMjAuLi4KZW50cnkgImV0IiBhdCBibG9jayAwIG9mZnNl dCA3MDQgaW4gZGlyZWN0b3J5IGlub2RlIDEyOTQ1MjU3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDQyMjcxOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA3 MDQuLi4KZW50cnkgIml0IiBhdCBibG9jayAwIG9mZnNldCAzMDQwIGluIGRpcmVjdG9yeSBpbm9k ZSAxMjk0NTI1NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjI3ODEKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzA0MC4uLgplbnRyeSAiOHh4X2lvIiBh dCBibG9jayAwIG9mZnNldCAxOTIgaW4gZGlyZWN0b3J5IGlub2RlIDU5MDQ4MDAgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjQzOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAxOTIuLi4KZW50cnkgImxpYiIgYXQgYmxvY2sgMCBvZmZzZXQgMjgwIGlu IGRpcmVjdG9yeSBpbm9kZSA1OTA0ODAwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEy NzY1MTEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjgwLi4uCmVu dHJ5ICJpbmNsdWRlIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDU5MDQ4MDUgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTI3NjQ0NQpqdW5raW5nIGVudHJ5ICJpbmNsdWRlIiBpbiBkaXJl Y3RvcnkgaW5vZGUgNTkwNDgwNQplbnRyeSAicHJpdmF0ZSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9y eSAxMjk0NTU0NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTIwNzQKanVua2luZyBl bnRyeSAicHJpdmF0ZSIgaW4gZGlyZWN0b3J5IGlub2RlIDEyOTQ1NTQ1CmVudHJ5ICJleGFtcGxl cyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMjk0NTU2MyByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAyNTIwNzgKanVua2luZyBlbnRyeSAiZXhhbXBsZXMiIGluIGRpcmVjdG9yeSBpbm9k ZSAxMjk0NTU2MwplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBp bm9kZSA1OTA2MTI2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMjYwMDIKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9y IGRpcmVjdG9yeSA1OTA2MTI2CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGly ZWN0b3J5IGlub2RlIDU5MDYxNzYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEyNjAw MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBl bnRyeSBmb3IgZGlyZWN0b3J5IDU5MDYxNzYKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAz MiBpbiBkaXJlY3RvcnkgaW5vZGUgNTkwNjMzOSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyMDk3NTM2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4u Cm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTkwNjMzOQplbnRyeSAiLi4iIGF0IGJsb2NrIDAg b2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA1OTA2MzcwIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDIwOTc1MzYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMzIuLi4KZW50cnkgIjlwIiBhdCBibG9jayAwIG9mZnNldCAyNDggaW4gZGlyZWN0b3J5IGlu b2RlIDU5MDYzNzAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEyNjM5OAoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNDguLi4KZW50cnkgImJsdWV0b290 aCIgYXQgYmxvY2sgMCBvZmZzZXQgMzIwIGluIGRpcmVjdG9yeSBpbm9kZSA1OTA2MzcwIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMzAyODEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzIwLi4uCmVudHJ5ICJjb3JlIiBhdCBibG9jayAwIG9mZnNldCAz ODQgaW4gZGlyZWN0b3J5IGlub2RlIDU5MDYzNzAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMjEzMDI5OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzODQu Li4KZW50cnkgImRlY25ldCIgYXQgYmxvY2sgMCBvZmZzZXQgNDE2IGluIGRpcmVjdG9yeSBpbm9k ZSA1OTA2MzcwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMzAzMzAKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDE2Li4uCmVudHJ5ICJpZWVlODAyMTEi IGF0IGJsb2NrIDAgb2Zmc2V0IDQ4OCBpbiBkaXJlY3RvcnkgaW5vZGUgNTkwNjM3MCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTMwMzc4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDQ4OC4uLgplbnRyeSAiY2FzaW8tZTU1IiBpbiBzaG9ydGZvcm0gZGly ZWN0b3J5IDEzMDU1MTYyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMjQxMjgKanVu a2luZyBlbnRyeSAiY2FzaW8tZTU1IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMwNTUxNjIKZW50cnkg ImlwdjYiIGF0IGJsb2NrIDAgb2Zmc2V0IDUyOCBpbiBkaXJlY3RvcnkgaW5vZGUgNTkwNjM3MCBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTMwMzkwCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDUyOC4uLgplbnRyeSAia2V5IiBhdCBibG9jayAwIG9mZnNl dCA1OTIgaW4gZGlyZWN0b3J5IGlub2RlIDU5MDYzNzAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjEzMDUxNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1 OTIuLi4KZW50cnkgIm5ldGZpbHRlciIgYXQgYmxvY2sgMCBvZmZzZXQgNjY0IGluIGRpcmVjdG9y eSBpbm9kZSA1OTA2MzcwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxMzA1MTkKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjY0Li4uCmVudHJ5ICJwYWNr ZXQiIGF0IGJsb2NrIDAgb2Zmc2V0IDc2MCBpbiBkaXJlY3RvcnkgaW5vZGUgNTkwNjM3MCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTMxOTQ2CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDc2MC4uLgplbnRyeSAic2NoZWQiIGF0IGJsb2NrIDAgb2Zmc2V0 IDg0MCBpbiBkaXJlY3RvcnkgaW5vZGUgNTkwNjM3MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyMTMxOTUwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDg0 MC4uLgplbnRyeSAid2lyZWxlc3MiIGF0IGJsb2NrIDAgb2Zmc2V0IDk1MiBpbiBkaXJlY3Rvcnkg aW5vZGUgNTkwNjM3MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTUzNTA5CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDk1Mi4uLgpubyAuLiBlbnRyeSBm b3IgZGlyZWN0b3J5IDU5MDYzNzAKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBk aXJlY3RvcnkgaW5vZGUgNTkwNjM4NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTMw MjgxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4u IGVudHJ5IGZvciBkaXJlY3RvcnkgNTkwNjM4NQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0 IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzA2NDcyMCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxMTI0MTMxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMy Li4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTMwNjQ3MjAKZW50cnkgInBjaSIgaW4gc2hv cnRmb3JtIGRpcmVjdG9yeSAxMzA3MjUxMyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAy NDI3MDYzCmp1bmtpbmcgZW50cnkgInBjaSIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMDcyNTEzCmVu dHJ5ICJtc25kIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzMDcyNTE1IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDI0MjcwNjUKanVua2luZyBlbnRyeSAibXNuZCIgaW4gZGlyZWN0b3J5 IGlub2RlIDEzMDcyNTE1CmVudHJ5ICJhbHNhLWtlcm5lbCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9y eSAxMzA3MjUxNiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDI3MDY3Cmp1bmtpbmcg ZW50cnkgImFsc2Eta2VybmVsIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMwNzI1MTYKZW50cnkgImNv cmUiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTMwNzI1MjEgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjQyNzA3NQpqdW5raW5nIGVudHJ5ICJjb3JlIiBpbiBkaXJlY3RvcnkgaW5vZGUg MTMwNzI1MjEKZW50cnkgImZhYnJpY3MiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTMwNzI1MjEg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjQyNzA4MQpqdW5raW5nIGVudHJ5ICJmYWJy aWNzIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMwNzI1MjEKZW50cnkgIi4uIiBhdCBibG9jayAwIG9m ZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMwNzI1NDIgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTEyNDE0MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEzMDcyNTQyCmVudHJ5ICIuLiIgYXQg YmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDU5MTE1NzIgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMjEzMDM5MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiYXQzMiIgYXQgYmxvY2sgMCBvZmZzZXQgNDggaW4gZGly ZWN0b3J5IGlub2RlIDEzMDcyNjE1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MjY5 NTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDguLi4Kbm8gLi4g ZW50cnkgZm9yIGRpcmVjdG9yeSA1OTExNTcyCmVudHJ5ICJweGEiIGF0IGJsb2NrIDAgb2Zmc2V0 IDE2OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTMwNzI2MTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjQyNjk1OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAx NjguLi4KZW50cnkgImJsYWNrZmluIiBhdCBibG9jayAwIG9mZnNldCAyNjQgaW4gZGlyZWN0b3J5 IGlub2RlIDEzMDcyNjE1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MjY5NjcKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjY0Li4uCmVudHJ5ICJvcHRp OXh4IiBhdCBibG9jayAwIG9mZnNldCA5NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMwNzI2MjkgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjQyNjk3NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCA5Ni4uLgplbnRyeSAiZXMxNjg4IiBhdCBibG9jayAwIG9mZnNl dCAyMDggaW4gZGlyZWN0b3J5IGlub2RlIDEzMDcyNjI5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDI0MjY5ODIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MjA4Li4uCmVudHJ5ICJvbGQiIGF0IGJsb2NrIDAgb2Zmc2V0IDM2OCBpbiBkaXJlY3RvcnkgaW5v ZGUgMTMwNzI2NDUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjQyNjk4NgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzNjguLi4KZW50cnkgInBucCIgaW4g c2hvcnRmb3JtIGRpcmVjdG9yeSAxMzA3MjY2NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyNDI2OTkyCmp1bmtpbmcgZW50cnkgInBucCIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMDcyNjY2 CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDU5Mjk3 MjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA5NzUzNgoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5 IDU5Mjk3MjAKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5v ZGUgNTkyOTc1MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMjU3MTcyCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBk aXJlY3RvcnkgNTkyOTc1MwplbnRyeSAicGRhdWRpb2NmIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5 IDEzMDcyODczIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MjY3MTEKanVua2luZyBl bnRyeSAicGRhdWRpb2NmIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMwNzI4NzMKZW50cnkgIi4uIiBh dCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNTkzODU1NCByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAyMjU3MjA4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNTkzODU1NAplbnRy eSAiYXU4OHgwIiBhdCBibG9jayAwIG9mZnNldCA4MDAgaW4gZGlyZWN0b3J5IGlub2RlIDU5NTIw NTQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjI3NTc2NQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4MDAuLi4KZW50cnkgImNzNTUzNWF1ZGlvIiBhdCBi bG9jayAwIG9mZnNldCA4ODggaW4gZGlyZWN0b3J5IGlub2RlIDU5NTIwNTQgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMjI3NTc5MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCA4ODguLi4KZW50cnkgImljZTE3MTIiIGF0IGJsb2NrIDAgb2Zmc2V0IDk3NiBp biBkaXJlY3RvcnkgaW5vZGUgNTk1MjA1NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAy Mjc1Nzk2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDk3Ni4uLgpl bnRyeSAib3h5Z2VuIiBhdCBibG9jayAwIG9mZnNldCAxMDY0IGluIGRpcmVjdG9yeSBpbm9kZSA1 OTUyMDU0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIzMDQ5ODQKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTA2NC4uLgplbnRyeSAidHJpZGVudCIgYXQg YmxvY2sgMCBvZmZzZXQgMTE1MiBpbiBkaXJlY3RvcnkgaW5vZGUgNTk1MjA1NCByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAyMzA1MDAxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDExNTIuLi4KZW50cnkgImVjaG9hdWRpbyIgYXQgYmxvY2sgMCBvZmZzZXQg OTYgaW4gZGlyZWN0b3J5IGlub2RlIDEzMDc1NzAxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDQwNzY5OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5Ni4u LgplbnRyeSAicGRwbHVzIiBhdCBibG9jayAwIG9mZnNldCAyMDggaW4gZGlyZWN0b3J5IGlub2Rl IDEzMDc1NzAxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIzODA5MTQKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjA4Li4uCmVudHJ5ICJjczQ2eHgiIGF0 IGJsb2NrIDAgb2Zmc2V0IDM0NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTMwNzU3MDEgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjM4MDkxOQplbnRyeSAiaW5zdGFsbCIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSA1OTk4ODcyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIzNjQ0NTAK anVua2luZyBlbnRyeSAiaW5zdGFsbCIgaW4gZGlyZWN0b3J5IGlub2RlIDU5OTg4NzIKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzQ0Li4uCmVudHJ5ICJjYTAxMDYi IGF0IGJsb2NrIDAgb2Zmc2V0IDYyNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTMwNzU3MDEgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjM4MDkyNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCA2MjQuLi4KZW50cnkgImljZTE3MTIiIGF0IGJsb2NrIDAgb2Zmc2V0 IDgzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMwNzU3MDEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjM4MDkzMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4 MzIuLi4KZW50cnkgImhkYSIgYXQgYmxvY2sgMCBvZmZzZXQgMTExMiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTMwNzU3MDEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjM4MDk1MAoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMTEyLi4uCmVudHJ5ICJhc2locGki IGF0IGJsb2NrIDAgb2Zmc2V0IDEyNzIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMDc1NzAxIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MjY0NzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMTI3Mi4uLgplbnRyeSAieGZybSIgaW4gc2hvcnRmb3JtIGRpcmVj dG9yeSA2MDI4OTc2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIzNjQ0NjgKanVua2lu ZyBlbnRyeSAieGZybSIgaW4gZGlyZWN0b3J5IGlub2RlIDYwMjg5NzYKZW50cnkgImltYWdlcyIg aW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzA3NTg3OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyNjM4MzMxCmp1bmtpbmcgZW50cnkgImltYWdlcyIgaW4gZGlyZWN0b3J5IGlub2RlIDEz MDc1ODc5CmVudHJ5ICJ1cGRhdGVzIiBhdCBibG9jayAwIG9mZnNldCAyNTUyIGluIGRpcmVjdG9y eSBpbm9kZSAxMzEwNjExNCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDMzODQyCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1NTIuLi4KZW50cnkgImFj OTciIGF0IGJsb2NrIDAgb2Zmc2V0IDE2MDAgaW4gZGlyZWN0b3J5IGlub2RlIDEzMTA2MTM0IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMzIyNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAxNjAwLi4uCmVudHJ5ICJjYTAxMDYiIGF0IGJsb2NrIDAgb2Zm c2V0IDE4MDAgaW4gZGlyZWN0b3J5IGlub2RlIDEzMTA2MTM0IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDIwMzI4MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAxODAwLi4uCmVudHJ5ICJpY2UxNzEyIiBhdCBibG9jayAwIG9mZnNldCAyMDA4IGluIGRpcmVj dG9yeSBpbm9kZSAxMzEwNjEzNCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDk3NTQw CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwMDguLi4KZW50cnkg InBjeGhyIiBhdCBibG9jayAwIG9mZnNldCAyMjI0IGluIGRpcmVjdG9yeSBpbm9kZSAxMzEwNjEz NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDk3NTcwCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIyMjQuLi4KZW50cnkgInZ4MjIyIiBhdCBibG9jayAw IG9mZnNldCAyNDQwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzEwNjEzNCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAyMDk3NTcyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDI0NDAuLi4KZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rv cnkgaW5vZGUgNjA2MDI0MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDk3NTM2Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICIuLiIg YXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMTA5NjAzIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIzMDUxMDUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgIm1pc2MiIGF0IGJsb2NrIDAgb2Zmc2V0IDQ4IGlu IGRpcmVjdG9yeSBpbm9kZSAxMzEwOTYwMyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAy MzI5NDQyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ4Li4uCm5v IC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNjA2MDI0MApubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5 IDEzMTA5NjAzCmVudHJ5ICJleGFtcGxlcyIgYXQgYmxvY2sgMCBvZmZzZXQgODAgaW4gZGlyZWN0 b3J5IGlub2RlIDEzMTA5NjA1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MzM4MTcK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODAuLi4KZW50cnkgImNy eXB0byIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzEwOTYxNCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAyNDMzODE5Cmp1bmtpbmcgZW50cnkgImNyeXB0byIgaW4gZGlyZWN0b3J5IGlu b2RlIDEzMTA5NjE0CmVudHJ5ICJibmVwIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzMTA5NjI4 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MzM4MzUKanVua2luZyBlbnRyeSAiYm5l cCIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMTA5NjI4CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZz ZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDYwNjI2MzUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjU4MzM1MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz Mi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDYwNjI2MzUKZW50cnkgInBhbmVsLXBsdWdp bnMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTMxMTMzMDAgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjU4MzI4OQpqdW5raW5nIGVudHJ5ICJwYW5lbC1wbHVnaW5zIiBpbiBkaXJlY3Rv cnkgaW5vZGUgMTMxMTMzMDAKZW50cnkgIndpcmVsZXNzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5 IDEzMTEzMzE2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIzNjQ0NzkKanVua2luZyBl bnRyeSAid2lyZWxlc3MiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzExMzMxNgplbnRyeSAicGFuZWwt cGx1Z2lucyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzExMzMzMyByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAyNTgzMzA0Cmp1bmtpbmcgZW50cnkgInBhbmVsLXBsdWdpbnMiIGluIGRp cmVjdG9yeSBpbm9kZSAxMzExMzMzMwplbnRyeSAicGFuZWwtcGx1Z2lucyIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSAxMzExMzM1NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTgzMjY4 Cmp1bmtpbmcgZW50cnkgInBhbmVsLXBsdWdpbnMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzExMzM1 NwplbnRyeSAieGZjZTQiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTMxMTMzNjggcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjU4MzI3MApqdW5raW5nIGVudHJ5ICJ4ZmNlNCIgaW4gZGly ZWN0b3J5IGlub2RlIDEzMTEzMzY4CmVudHJ5ICJoZWFkZXJzIiBpbiBzaG9ydGZvcm0gZGlyZWN0 b3J5IDYxODA2NTEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjMyOTQ2MApqdW5raW5n IGVudHJ5ICJoZWFkZXJzIiBpbiBkaXJlY3RvcnkgaW5vZGUgNjE4MDY1MQplbnRyeSAicGFuZWwt cGx1Z2lucyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzExMzQ1OSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAyNTgzMjYxCmp1bmtpbmcgZW50cnkgInBhbmVsLXBsdWdpbnMiIGluIGRp cmVjdG9yeSBpbm9kZSAxMzExMzQ1OQplbnRyeSAieGZjZTQiIGluIHNob3J0Zm9ybSBkaXJlY3Rv cnkgMTMxMTM0NzEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjU4MzI2MwpqdW5raW5n IGVudHJ5ICJ4ZmNlNCIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMTEzNDcxCmVudHJ5ICJzdGFibGUi IGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNjE4MjYyNCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyMzk3NTE4Cmp1bmtpbmcgZW50cnkgInN0YWJsZSIgaW4gZGlyZWN0b3J5IGlub2RlIDYx ODI2MjQKZW50cnkgInVtIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzMTE0MTA4IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIzMjk0NTcKanVua2luZyBlbnRyeSAidW0iIGluIGRpcmVj dG9yeSBpbm9kZSAxMzExNDEwOAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRp cmVjdG9yeSBpbm9kZSA2MTgyNjQ5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIzOTc1 MzUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkg ImFyY2giIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTMxMTcxNzQgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMjM2NDQ1MgpqdW5raW5nIGVudHJ5ICJhcmNoIiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTMxMTcxNzQKZW50cnkgImRyaXZlcnMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTMxMTcx NzQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjM2NDQ1MwpqdW5raW5nIGVudHJ5ICJk cml2ZXJzIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMxMTcxNzQKZW50cnkgImxpYiIgaW4gc2hvcnRm b3JtIGRpcmVjdG9yeSAxMzExNzE3NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMzY0 NDY0Cmp1bmtpbmcgZW50cnkgImxpYiIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMTE3MTc0Cm5vIC4u IGVudHJ5IGZvciBkaXJlY3RvcnkgNjE4MjY0OQplbnRyeSAic2hhcmUiIGluIHNob3J0Zm9ybSBk aXJlY3RvcnkgMTMxMTcxNzYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjM2NDQ1MQpq dW5raW5nIGVudHJ5ICJzaGFyZSIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMTE3MTc2CmVudHJ5ICJ1 c2JoaWQiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTMxMTcxODEgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMjM2NDQ1NApqdW5raW5nIGVudHJ5ICJ1c2JoaWQiIGluIGRpcmVjdG9yeSBp bm9kZSAxMzExNzE4MQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9y eSBpbm9kZSA2MTg4ODgwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNTc3NDcKZW50 cnkgImhvc3QiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTMxMTcxODIgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjM2NDQ1NgpqdW5raW5nIGVudHJ5ICJob3N0IiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTMxMTcxODIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA2MTg4ODgwCmVudHJ5ICIuLiIgYXQgYmxv Y2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDYxOTAyNTUgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjA1Nzc0NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDYxOTAyNTUKZW50cnkgImFz bSIgYXQgYmxvY2sgMCBvZmZzZXQgNTIwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzExNzc4NyByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjEzOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCA1MjAuLi4KZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBp biBkaXJlY3RvcnkgaW5vZGUgNjE5MTgyNSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAy MDU3NzQ3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5v IC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNjE5MTgyNQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zm c2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA2MTkxODY2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDQwNzY3OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz Mi4uLgplbnRyeSAiZGViaWFuIiBhdCBibG9jayAwIG9mZnNldCAxMTIgaW4gZGlyZWN0b3J5IGlu b2RlIDYxOTE4NjYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA3Njg0CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDExMi4uLgplbnRyeSAidG9vbHMiIGF0 IGJsb2NrIDAgb2Zmc2V0IDI0OCBpbiBkaXJlY3RvcnkgaW5vZGUgNjE5MTg2NiByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSA0MDc2OTEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMjQ4Li4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNjE5MTg2NgplbnRy eSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA2MTkyMTY2IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNTc3NDcKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSA2MTky MTY2CmVudHJ5ICJsaWIiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNjE5MjE4NCByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAyMzY0NDQ5Cmp1bmtpbmcgZW50cnkgImxpYiIgaW4gZGlyZWN0 b3J5IGlub2RlIDYxOTIxODQKZW50cnkgIjIyeDIyIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDYx OTQ4ODIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg2MjkxMgpqdW5raW5nIGVudHJ5 ICIyMngyMiIgaW4gZGlyZWN0b3J5IGlub2RlIDYxOTQ4ODIKZW50cnkgImJpbmFyeV9oZWFwXyIg YXQgYmxvY2sgMCBvZmZzZXQgODAgaW4gZGlyZWN0b3J5IGlub2RlIDEzMTc5NjA5IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDYxNTg4NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCA4MC4uLgplbnRyeSAiYmluX3NlYXJjaF90cmVlXyIgYXQgYmxvY2sgMCBv ZmZzZXQgMzg0IGluIGRpcmVjdG9yeSBpbm9kZSAxMzE3OTYwOSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSA2MTU5MDMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMzg0Li4uCmVudHJ5ICJoYXNoX2ZuIiBhdCBibG9jayAwIG9mZnNldCA4NzIgaW4gZGlyZWN0 b3J5IGlub2RlIDEzMTc5NjA5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDYxNTkyMQoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4NzIuLi4KZW50cnkgImxl ZnRfY2hpbGRfbmV4dF9zaWJsaW5nX2hlYXBfIiBhdCBibG9jayAwIG9mZnNldCAxMzEyIGluIGRp cmVjdG9yeSBpbm9kZSAxMzE3OTYwOSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2MTU5 MzUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTMxMi4uLgplbnRy eSAiY2NfaGFzaF90YWJsZV9tYXBfIiBhdCBibG9jayAwIG9mZnNldCAxNzY4IGluIGRpcmVjdG9y eSBpbm9kZSAxMzE3OTYwOSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2MTU5ODEKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTc2OC4uLgplbnRyeSAiZ3Bf aGFzaF90YWJsZV9tYXBfIiBhdCBibG9jayAwIG9mZnNldCAyMDk2IGluIGRpcmVjdG9yeSBpbm9k ZSAxMzE3OTYwOSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA2MTYwMDkKZW50cnkgImFw cHMiIGF0IGJsb2NrIDAgb2Zmc2V0IDE4NCBpbiBkaXJlY3RvcnkgaW5vZGUgNjE5NTE2MSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODYyMTczCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDE4NC4uLgplbnRyeSAiZmlsZXN5c3RlbXMiIGF0IGJsb2NrIDAg b2Zmc2V0IDQwMCBpbiBkaXJlY3RvcnkgaW5vZGUgNjE5NTE2MSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAyODYyMjQyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDIwOTYuLi4KCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDAw Li4uCmVudHJ5ICJjYXRlZ29yaWVzIiBhdCBibG9jayAwIG9mZnNldCA2MjQgaW4gZGlyZWN0b3J5 IGlub2RlIDYxOTUxNjEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg2MjI0NQoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2MjQuLi4KZW50cnkgInRyMV9p bXBsIiBhdCBibG9jayAwIG9mZnNldCAxMjI0IGluIGRpcmVjdG9yeSBpbm9kZSAxMzE3OTc4NyBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0NDgyODIKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMTIyNC4uLgplbnRyeSAiaTQ4Ni1saW51eC1nbnUiIGF0IGJs b2NrIDAgb2Zmc2V0IDI5NjggaW4gZGlyZWN0b3J5IGlub2RlIDEzMTc5Nzg3IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDQ2Nzg1OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAyOTY4Li4uCmVudHJ5ICJ0cjEiIGF0IGJsb2NrIDAgb2Zmc2V0IDMwODAgaW4g ZGlyZWN0b3J5IGlub2RlIDEzMTc5Nzg3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ2 Nzg2MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDgwLi4uCmVu dHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDYxOTk3Nzgg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjQyNjUxNAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDYx OTk3NzgKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUg NjE5OTc4NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDI2NTI0CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJl Y3RvcnkgNjE5OTc4NgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9y eSBpbm9kZSAxMzE3OTkxNSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA1MDEKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9y IGRpcmVjdG9yeSAxMzE3OTkxNQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRp cmVjdG9yeSBpbm9kZSA2MTk5ODEzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MjY2 MDQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4g ZW50cnkgZm9yIGRpcmVjdG9yeSA2MTk5ODEzCmVudHJ5ICJybWU5NjUyIiBhdCBibG9jayAwIG9m ZnNldCAxMTIgaW4gZGlyZWN0b3J5IGlub2RlIDYxOTk4MzMgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjQyNjY3OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAxMTIuLi4KZW50cnkgImNzNDZ4eCIgYXQgYmxvY2sgMCBvZmZzZXQgMzQ0IGluIGRpcmVjdG9y eSBpbm9kZSA2MTk5ODMzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MjY2ODQKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzQ0Li4uCmVudHJ5ICJwY3ho ciIgYXQgYmxvY2sgMCBvZmZzZXQgNjQwIGluIGRpcmVjdG9yeSBpbm9kZSA2MTk5ODMzIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MjY2OTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgNjQwLi4uCmVudHJ5ICJrb3JnMTIxMiIgYXQgYmxvY2sgMCBvZmZz ZXQgODQ4IGluIGRpcmVjdG9yeSBpbm9kZSA2MTk5ODMzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDI0MjY3MDIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg ODQ4Li4uCmVudHJ5ICJjczU1MzVhdWRpbyIgYXQgYmxvY2sgMCBvZmZzZXQgMTAxNiBpbiBkaXJl Y3RvcnkgaW5vZGUgNjE5OTgzMyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDI2NzA1 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwMTYuLi4KZW50cnkg Ii4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgNjIwMDAzNCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNDI2NzU4CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNjIwMDAz NAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA2MjAw MTQ3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI0MjY4OTcKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9y eSA2MjAwMTQ3CmVudHJ5ICJweXRob24yLjUiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTMxODE5 NTggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzE1Cmp1bmtpbmcgZW50cnkgInB5dGhv bjIuNSIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMTgxOTU4CmVudHJ5ICJndGstMi4wIiBpbiBzaG9y dGZvcm0gZGlyZWN0b3J5IDEzMTgxOTU5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM5 NwpqdW5raW5nIGVudHJ5ICJndGstMi4wIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMxODE5NTkKZW50 cnkgIk51bWVyaWNfaGVhZGVycyIgYXQgYmxvY2sgMCBvZmZzZXQgODggaW4gZGlyZWN0b3J5IGlu b2RlIDEzMTgxOTY0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ3NAoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4OC4uLgplbnRyeSAiZ3RrLTIuMCIgaW4g c2hvcnRmb3JtIGRpcmVjdG9yeSAxMzE4MTk3MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSA0NzYKanVua2luZyBlbnRyeSAiZ3RrLTIuMCIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMTgxOTcx CmVudHJ5ICJndGsiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTMxODE5NzIgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgNDg0Cmp1bmtpbmcgZW50cnkgImd0ayIgaW4gZGlyZWN0b3J5IGlu b2RlIDEzMTgxOTcyCmVudHJ5ICJndGsiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTMxODE5Nzcg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDg3Cmp1bmtpbmcgZW50cnkgImd0ayIgaW4g ZGlyZWN0b3J5IGlub2RlIDEzMTgxOTc3CmVudHJ5ICJhbHNhLW1vZHVsZXMtMi42LjI2LWVlZS1j b3JlMiIgYXQgYmxvY2sgMCBvZmZzZXQgMTAyNCBpbiBkaXJlY3RvcnkgaW5vZGUgNjIwMDM2NiBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNjI5MTAxCmVudHJ5ICJndGstMi4wIiBpbiBz aG9ydGZvcm0gZGlyZWN0b3J5IDEzMTgxOTc4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDQ5MwpqdW5raW5nIGVudHJ5ICJndGstMi4wIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMxODE5NzgK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTAyNC4uLgplbnRyeSAi Z3RrIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzMTgxOTc5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDQ5NApqdW5raW5nIGVudHJ5ICJndGsiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzE4 MTk3OQplbnRyeSAiZ2xhZGUiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTMxODE5ODAgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTczCmp1bmtpbmcgZW50cnkgImdsYWRlIiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTMxODE5ODAKZW50cnkgImdvYmplY3QiIGluIHNob3J0Zm9ybSBkaXJlY3Rv cnkgMTMxODE5ODEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNTc5Cmp1bmtpbmcgZW50 cnkgImdvYmplY3QiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzE4MTk4MQplbnRyeSAiZ3RrIiBpbiBz aG9ydGZvcm0gZGlyZWN0b3J5IDEzMTgxOTgxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDU5MApqdW5raW5nIGVudHJ5ICJndGsiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzE4MTk4MQplbnRy eSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSA2MjI3MjEyIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwNzY3OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMy IGluIGRpcmVjdG9yeSBpbm9kZSAxMzE4MTk5OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxMTI0MTU4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4u Cm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgNjIyNzIxMgplbnRyeSAidmRzbzMyIiBhdCBibG9j ayAwIG9mZnNldCAyNjQwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzE4MTk5OCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMTI1OTAwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDI2NDAuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMzE4MTk5OAplbnRy eSAiZnMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNjIzMDIyMyByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAyNDMzODI1Cmp1bmtpbmcgZW50cnkgImZzIiBpbiBkaXJlY3RvcnkgaW5vZGUg NjIzMDIyMwplbnRyeSAieGZybSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSA2MjM4NDQ5IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI3NDMxOTcKanVua2luZyBlbnRyeSAieGZybSIgaW4g ZGlyZWN0b3J5IGlub2RlIDYyMzg0NDkKZW50cnkgImF1ODh4MCIgYXQgYmxvY2sgMCBvZmZzZXQg MTcwNCBpbiBkaXJlY3RvcnkgaW5vZGUgNjIzODQ2NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyNzQzMjE1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE3 MDQuLi4KZW50cnkgImVtdTEwazEiIGF0IGJsb2NrIDAgb2Zmc2V0IDE5MTIgaW4gZGlyZWN0b3J5 IGlub2RlIDYyMzg0NjYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjc0MzIxOQoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxOTEyLi4uCmVudHJ5ICJubTI1 NiIgYXQgYmxvY2sgMCBvZmZzZXQgMjEyMCBpbiBkaXJlY3RvcnkgaW5vZGUgNjIzODQ2NiByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNzQzMjIxCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDIxMjAuLi4KZW50cnkgInJtZTk2NTIiIGF0IGJsb2NrIDAgb2Zm c2V0IDIzMjggaW4gZGlyZWN0b3J5IGlub2RlIDYyMzg0NjYgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjc0MzIyMwplbnRyeSAiY2prdiIgYXQgYmxvY2sgMCBvZmZzZXQgNzIgaW4gZGly ZWN0b3J5IGlub2RlIDEzMjM4Nzk5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1OTE1 MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA3Mi4uLgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMzI4Li4uCmVudHJ5ICJ2Q2FsZW5k YXIiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNjI0NDg4NSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAyMDYzMTYxCmp1bmtpbmcgZW50cnkgInZDYWxlbmRhciIgaW4gZGlyZWN0b3J5IGlu b2RlIDYyNDQ4ODUKZW50cnkgImRyaXZlcnMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgNjMwODI5 NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNjI5MTExCmp1bmtpbmcgZW50cnkgImRy aXZlcnMiIGluIGRpcmVjdG9yeSBpbm9kZSA2MzA4Mjk0CmVudHJ5ICJpc2EiIGluIHNob3J0Zm9y bSBkaXJlY3RvcnkgNjMwODI5NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNjI5MTE3 Cmp1bmtpbmcgZW50cnkgImlzYSIgaW4gZGlyZWN0b3J5IGlub2RlIDYzMDgyOTQKZW50cnkgImdz LmQiIGF0IGJsb2NrIDAgb2Zmc2V0IDEyOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyMzkyMzMgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU5MTY1CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDEyOC4uLgplbnRyeSAicGFuZ28uZCIgYXQgYmxvY2sgMCBvZmZz ZXQgMTc2IGluIGRpcmVjdG9yeSBpbm9kZSAxMzIzOTIzMyByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSA0MjM2OTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MTc2Li4uCmVudHJ5ICJ0eXBlMSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzIzOTI3NiByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTYxNDIKanVua2luZyBlbnRyeSAidHlwZTEiIGlu IGRpcmVjdG9yeSBpbm9kZSAxMzIzOTI3NgplbnRyeSAidHRmLWRlamF2dSIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSAxMzIzOTI3NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTYxMTAK anVua2luZyBlbnRyeSAidHRmLWRlamF2dSIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMjM5Mjc3CmVu dHJ5ICJ0dGYtbGliZXJhdGlvbiIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzIzOTI3NyByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMjM3NDcyCmp1bmtpbmcgZW50cnkgInR0Zi1saWJl cmF0aW9uIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMyMzkyNzcKZW50cnkgIlR5cGUxIiBpbiBzaG9y dGZvcm0gZGlyZWN0b3J5IDEzMzI4OTU3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1 ODc1MwpqdW5raW5nIGVudHJ5ICJUeXBlMSIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMzI4OTU3CmVu dHJ5ICJjb25mLmF2YWlsIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzMzI5MTIxIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1ODc1MgpqdW5raW5nIGVudHJ5ICJjb25mLmF2YWlsIiBp biBkaXJlY3RvcnkgaW5vZGUgMTMzMjkxMjEKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAz MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMzMjk4OTQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgNDI1OTA1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4u Cm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTMzMjk4OTQKZW50cnkgImFmbSIgYXQgYmxvY2sg MCBvZmZzZXQgMTc0NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTMzMzExNTcgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMzU4OTE5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDE3NDQuLi4KZW50cnkgImRyaXZlciIgYXQgYmxvY2sgMCBvZmZzZXQgMTkyIGluIGRp cmVjdG9yeSBpbm9kZSAxMzMzMTgxMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg5 NTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTkyLi4uCmVudHJ5 ICJtb2Rwcm9iZS1wb3N0LWluc3RhbGwuZCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzMzMTgy NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTg5NzEKanVua2luZyBlbnRyeSAibW9k cHJvYmUtcG9zdC1pbnN0YWxsLmQiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzMzMTgyNgplbnRyeSAi Li4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzMzMTg0MiByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAzNTkwMDgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMzMzMTg0 MgplbnRyeSAiaWNvbnMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTMzMzE4NjggcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgNDA3OTUxCmp1bmtpbmcgZW50cnkgImljb25zIiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTMzMzE4NjgKZW50cnkgImFsc2EiIGluIHNob3J0Zm9ybSBkaXJlY3Rvcnkg MTMzMzIwMzUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMzU5MDIwCmp1bmtpbmcgZW50 cnkgImFsc2EiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzMzMjAzNQplbnRyeSAidHVya2lzaCIgaW4g c2hvcnRmb3JtIGRpcmVjdG9yeSAxMzMzMjY4MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAzNTkxNDIKanVua2luZyBlbnRyeSAidHVya2lzaCIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMzMy NjgxCmVudHJ5ICJ0aGFpIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzMzMyNjgxIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDM1OTE0NApqdW5raW5nIGVudHJ5ICJ0aGFpIiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTMzMzI2ODEKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBk aXJlY3RvcnkgaW5vZGUgMTMzMzMzMjkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEy NDE1OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAu LiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEzMzMzMzI5CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZz ZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMzMzMzU4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDExNTU3ODkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMzMzMzM1OAplbnRyeSAiTENfTUVTU0FH RVMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTMzNTAzNzMgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgNDA4MDUzCmp1bmtpbmcgZW50cnkgIkxDX01FU1NBR0VTIiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTMzNTAzNzMKZW50cnkgIkxDX01FU1NBR0VTIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5 IDEzMzUwMzc0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwODA1NQpqdW5raW5nIGVu dHJ5ICJMQ19NRVNTQUdFUyIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMzUwMzc0CmVudHJ5ICJMQ19N RVNTQUdFUyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzM1MDM3NSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSA0MDgwNTcKanVua2luZyBlbnRyeSAiTENfTUVTU0FHRVMiIGluIGRpcmVj dG9yeSBpbm9kZSAxMzM1MDM3NQplbnRyeSAiTENfTUVTU0FHRVMiIGluIHNob3J0Zm9ybSBkaXJl Y3RvcnkgMTMzNTAzNzYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA4MDU5Cmp1bmtp bmcgZW50cnkgIkxDX01FU1NBR0VTIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMzNTAzNzYKZW50cnkg IkxDX01FU1NBR0VTIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzMzUwMzc3IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDQwODA2MQpqdW5raW5nIGVudHJ5ICJMQ19NRVNTQUdFUyIgaW4g ZGlyZWN0b3J5IGlub2RlIDEzMzUwMzc3CmVudHJ5ICJMQ19NRVNTQUdFUyIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSAxMzM1MDM3OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MDgwNjMK anVua2luZyBlbnRyeSAiTENfTUVTU0FHRVMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzM1MDM3OApl bnRyeSAiTENfTUVTU0FHRVMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTMzNTAzNzkgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEyMDAzMwpqdW5raW5nIGVudHJ5ICJMQ19NRVNTQUdF UyIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMzUwMzc5CmVudHJ5ICI0OHg0OCIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSAxMzM1MDM4MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTIwMDM1 Cmp1bmtpbmcgZW50cnkgIjQ4eDQ4IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMzNTAzODAKZW50cnkg Im1pbWV0eXBlcyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzM1MDM4MSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMTIwMDM2Cmp1bmtpbmcgZW50cnkgIm1pbWV0eXBlcyIgaW4gZGly ZWN0b3J5IGlub2RlIDEzMzUwMzgxCmVudHJ5ICJtaW1ldHlwZXMiIGluIHNob3J0Zm9ybSBkaXJl Y3RvcnkgMTMzNTAzODIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTEyMDA0MApqdW5r aW5nIGVudHJ5ICJtaW1ldHlwZXMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzM1MDM4MgplbnRyeSAi bnM3LWdjYzI5IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzMzUwNDYzIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDQwODAzMQpqdW5raW5nIGVudHJ5ICJuczctZ2NjMjkiIGluIGRpcmVj dG9yeSBpbm9kZSAxMzM1MDQ2MwplbnRyeSAiamEiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTMz NTA0NjQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA4MDMzCmp1bmtpbmcgZW50cnkg ImphIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMzNTA0NjQKZW50cnkgImhlYWRsZXNzIiBhdCBibG9j ayAwIG9mZnNldCAxMzYgaW4gZGlyZWN0b3J5IGlub2RlIDEzMzUwNDc4IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDQwODAzNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAxMzYuLi4KZW50cnkgInhhd3QiIGF0IGJsb2NrIDAgb2Zmc2V0IDEwMjQgaW4gZGly ZWN0b3J5IGlub2RlIDEzMzUwNDc4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQwODAz NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMDI0Li4uCmVudHJ5 ICJvYmxpcXVlLWZvbnRzIiBhdCBibG9jayAwIG9mZnNldCA4OCBpbiBkaXJlY3RvcnkgaW5vZGUg MTMzNTA4MDUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTIxNzUKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODguLi4KZW50cnkgImltIiBhdCBibG9jayAw IG9mZnNldCA1MzYgaW4gZGlyZWN0b3J5IGlub2RlIDEzMzUwODA1IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDQwNzk1NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA1MzYuLi4KZW50cnkgImRlcGxveSIgYXQgYmxvY2sgMCBvZmZzZXQgMTkzNiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTMzNTA4MDUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA4MDM4 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE5MzYuLi4KZW50cnkg IlBhY2lmaWMiIGF0IGJsb2NrIDAgb2Zmc2V0IDgwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzM1MDgw NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjE5MQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCA4MC4uLgplbnRyeSAiSW5kaWFuIiBhdCBibG9jayAwIG9m ZnNldCA1MzYgaW4gZGlyZWN0b3J5IGlub2RlIDEzMzUwODA2IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDQwNzkyMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCA1MzYuLi4KZW50cnkgIlN5c3RlbVYiIGF0IGJsb2NrIDAgb2Zmc2V0IDk0NCBpbiBkaXJlY3Rv cnkgaW5vZGUgMTMzNTA4MDYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDA3OTM0Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDk0NC4uLgplbnRyeSAiLi4i IGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzM1NDYxNCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTU1Nzg5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTMzNTQ2MTQK ZW50cnkgInRoZW1lcyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzM1NDY3MyByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxMjc3MDc4Cmp1bmtpbmcgZW50cnkgInRoZW1lcyIgaW4gZGly ZWN0b3J5IGlub2RlIDEzMzU0NjczCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4g ZGlyZWN0b3J5IGlub2RlIDEzMzU0Njc0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEy NzcwNzgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8g Li4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMzM1NDY3NAplbnRyeSAiZXhhbXBsZXMiIGF0IGJsb2Nr IDAgb2Zmc2V0IDgwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzM1NTE2NiByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSA0MjI5NzIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgODAuLi4KZW50cnkgInJ3NCIgYXQgYmxvY2sgMCBvZmZzZXQgODY0IGluIGRpcmVjdG9y eSBpbm9kZSAxMzM1NTE4MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2NDgwCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDg2NC4uLgplbnRyeSAieHBh cmFtZXRlcnMiIGF0IGJsb2NrIDAgb2Zmc2V0IDEzMzYgaW4gZGlyZWN0b3J5IGlub2RlIDEzMzU1 NDYyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY1MTcKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTMzNi4uLgplbnRyeSAiYXBwbGRhdGEiIGF0IGJs b2NrIDAgb2Zmc2V0IDE0NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTMzNTcyMjYgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTI3NjUyMQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAxNDQuLi4KZW50cnkgImtlcm5lbCIgYXQgYmxvY2sgMCBvZmZzZXQgMjI0IGlu IGRpcmVjdG9yeSBpbm9kZSAxMzM1NzIyNiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx Mjc2NTI4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIyNC4uLgpl bnRyeSAibW0iIGF0IGJsb2NrIDAgb2Zmc2V0IDMwNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTMzNTcy MjYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3Njc1MAoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMDQuLi4KZW50cnkgImd0ay0yLjAiIGluIHNob3J0 Zm9ybSBkaXJlY3RvcnkgMTMzNTcyMjkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDIz MDcwCmp1bmtpbmcgZW50cnkgImd0ay0yLjAiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzM1NzIyOQpl bnRyeSAiSURpcmVjdEZCSW1hZ2VQcm92aWRlciIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzM1 NzI2NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA0MjMwOTIKanVua2luZyBlbnRyeSAi SURpcmVjdEZCSW1hZ2VQcm92aWRlciIgaW4gZGlyZWN0b3J5IGlub2RlIDEzMzU3MjY0CmVudHJ5 ICJtb2R1bGVzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzMzY1Mzk0IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDQyMzcxNgpqdW5raW5nIGVudHJ5ICJtb2R1bGVzIiBpbiBkaXJlY3Rv cnkgaW5vZGUgMTMzNjUzOTQKZW50cnkgImxvYWRlcnMiIGluIHNob3J0Zm9ybSBkaXJlY3Rvcnkg MTMzNzc2MzUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDI1ODU4Cmp1bmtpbmcgZW50 cnkgImxvYWRlcnMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzM3NzYzNQplbnRyeSAiaW1tb2R1bGUt ZmlsZXMuZCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzM3NzYzNSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSA0MjU4NzMKanVua2luZyBlbnRyeSAiaW1tb2R1bGUtZmlsZXMuZCIgaW4g ZGlyZWN0b3J5IGlub2RlIDEzMzc3NjM1CmVudHJ5ICJlbmdpbmVzIiBpbiBzaG9ydGZvcm0gZGly ZWN0b3J5IDEzMzc3NjM1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyNTkwMgpqdW5r aW5nIGVudHJ5ICJlbmdpbmVzIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMzNzc2MzUKZW50cnkgImhp Y29sb3IiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTMzODc5MDQgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgNDI1OTA0Cmp1bmtpbmcgZW50cnkgImhpY29sb3IiIGluIGRpcmVjdG9yeSBp bm9kZSAxMzM4NzkwNAplbnRyeSAibW9yZWJsdWUtb3JiaXQiIGluIHNob3J0Zm9ybSBkaXJlY3Rv cnkgMTMzODc5MTEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDI1OTA2Cmp1bmtpbmcg ZW50cnkgIm1vcmVibHVlLW9yYml0IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMzODc5MTEKZW50cnkg IlRoZW1lcyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzM4NzkyMiByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSA0MjU5MTYKanVua2luZyBlbnRyeSAiVGhlbWVzIiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTMzODc5MjIKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rv cnkgaW5vZGUgMTMzODc5MjcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDI1OTE2Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5 IGZvciBkaXJlY3RvcnkgMTMzODc5MjcKZW50cnkgInRoZW1lcyIgaW4gc2hvcnRmb3JtIGRpcmVj dG9yeSAxMzM4Nzk0NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA5MDUzMTcKanVua2lu ZyBlbnRyeSAidGhlbWVzIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTMzODc5NDcKZW50cnkgInByb2Zp bGVzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzMzg3OTUyIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDkwNTMxOApqdW5raW5nIGVudHJ5ICJwcm9maWxlcyIgaW4gZGlyZWN0b3J5IGlu b2RlIDEzMzg3OTUyCmVudHJ5ICJsYXRleC14Y29sb3IiIGluIHNob3J0Zm9ybSBkaXJlY3Rvcnkg MTM0MDQ0NDYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTExOQpqdW5raW5nIGVu dHJ5ICJsYXRleC14Y29sb3IiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQwNDQ0NgplbnRyeSAicGdm IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNDA0NDQ2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE0OTkyMDMKanVua2luZyBlbnRyeSAicGdmIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0 MDQ0NDYKZW50cnkgImlyY29tbSIgYXQgYmxvY2sgMCBvZmZzZXQgNjI0IGluIGRpcmVjdG9yeSBp bm9kZSAxMzQyMTA1MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTMwNTA1CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDYyNC4uLgplbnRyeSAiLi4iIGF0 IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQyMTEzNyByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAyMTMwMjgxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTM0MjExMzcKZW50 cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0MjIyMTcg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA5NzUzNgoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAibHpvIiBhdCBibG9jayAwIG9mZnNl dCAyNjI0IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQyMjIxNyByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAyMTI2MzAwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDI2MjQuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMzQyMjIxNwplbnRyeSAiaW8iIGF0 IGJsb2NrIDAgb2Zmc2V0IDMzNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0MjIzODIgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjEyNjI3NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzMzYuLi4KZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBk aXJlY3RvcnkgaW5vZGUgMTM0MjIzOTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA5 NzUzNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRy eSAiaXJxIiBhdCBibG9jayAwIG9mZnNldCAyODA4IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQyMjM5 NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTI2Mjg4CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI4MDguLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9y eSAxMzQyMjM5NQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBp bm9kZSAxMzQyMjQ2NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTI2MDAyCgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZv ciBkaXJlY3RvcnkgMTM0MjI0NjcKZW50cnkgInBsYXRmb3JtLWlzcyIgYXQgYmxvY2sgMCBvZmZz ZXQgMjQxNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0MjMwOTQgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjEyNTM0NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAyNDE2Li4uCmVudHJ5ICJtYWNoLWJpZ3NtcCIgYXQgYmxvY2sgMSBvZmZzZXQgMjUwNCBpbiBk aXJlY3RvcnkgaW5vZGUgMTM0MjM1MDEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEy NTMzMAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNTA0Li4uCmVu dHJ5ICJtYWNoLW51bWFxIiBhdCBibG9jayAxIG9mZnNldCAyNjAwIGluIGRpcmVjdG9yeSBpbm9k ZSAxMzQyMzUwMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTI1MzM1CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI2MDAuLi4KZW50cnkgIm1hY2gtdm95 YWdlciIgYXQgYmxvY2sgMSBvZmZzZXQgMjY5NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0MjM1MDEg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEyNTM0MgoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjk2Li4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZz ZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNDI0MTAwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDIxMjQxMzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMzQyNDEwMAplbnRyeSAiYXJjIiBpbiBz aG9ydGZvcm0gZGlyZWN0b3J5IDEzNDI0MjQ4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDIxMjQzNTgKanVua2luZyBlbnRyeSAiYXJjIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0MjQyNDgK ZW50cnkgImFzbSIgYXQgYmxvY2sgMCBvZmZzZXQgMzA0IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQy NDU1NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTIzMDc4CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMwNC4uLgplbnRyeSAiaHdyZWdzIiBhdCBibG9j ayAwIG9mZnNldCA3NTIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNDMwMTMyIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDIxMjMwNDYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgNzUyLi4uCmVudHJ5ICJtYWNoLWEzIiBhdCBibG9jayAwIG9mZnNldCA3NzYgaW4g ZGlyZWN0b3J5IGlub2RlIDEzNDMwMTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIx MjMwNzIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNzc2Li4uCmVu dHJ5ICJhcmNoLWF0MzJhcCIgYXQgYmxvY2sgMCBvZmZzZXQgMjI4OCBpbiBkaXJlY3RvcnkgaW5v ZGUgMTM0MzAzMjIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjEyMjk1MwoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMjg4Li4uCmVudHJ5ICJwbGF0Zm9y bSIgYXQgYmxvY2sgMCBvZmZzZXQgOTIwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQzMDY4MiByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTIxMjI3CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDkyMC4uLgplbnRyeSAidGV4IiBpbiBzaG9ydGZvcm0gZGlyZWN0 b3J5IDEzNDUzMDkwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYxNjIKanVua2lu ZyBlbnRyeSAidGV4IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0NTMwOTAKZW50cnkgImZvbnRzIiBp biBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNDUzMDkwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDIwNTg5MjAKanVua2luZyBlbnRyeSAiZm9udHMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1 MzA5MAplbnRyeSAibWFwIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNDUzMTI4IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYxNjYKanVua2luZyBlbnRyeSAibWFwIiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTM0NTMxMjgKZW50cnkgInR5cGUxIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5 IDEzNDUzMTI4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0NjQ0NzQKanVua2luZyBl bnRyeSAidHlwZTEiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1MzEyOAplbnRyeSAic291cmNlIiBp biBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNDUzMTI4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE0NjQ1MTAKanVua2luZyBlbnRyeSAic291cmNlIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0 NTMxMjgKZW50cnkgInVwZG1hcCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzQ1MzE0NCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2MTc1Cmp1bmtpbmcgZW50cnkgInVwZG1hcCIg aW4gZGlyZWN0b3J5IGlub2RlIDEzNDUzMTQ0CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQg MzIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNDUzMjU3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDEyNzYxNzkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIu Li4KZW50cnkgImNvbmZpZyIgYXQgYmxvY2sgMCBvZmZzZXQgODAgaW4gZGlyZWN0b3J5IGlub2Rl IDEzNDUzMjU3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYxODAKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODAuLi4KZW50cnkgInh1LWh5cGhlbiIg YXQgYmxvY2sgMCBvZmZzZXQgMjQ4IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1MzI1NyByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDY0MzAzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDI0OC4uLgplbnRyeSAidGh1bWJwZGYiIGF0IGJsb2NrIDAgb2Zmc2V0 IDU1MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0NTMyNTcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTQ2NTEyNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1 NTIuLi4KZW50cnkgImdlbm1pc2MiIGF0IGJsb2NrIDAgb2Zmc2V0IDYwOCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTM0NTMyNTcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg1MDcwNwoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2MDguLi4KZW50cnkgInBzdC1v cHRpYyIgYXQgYmxvY2sgMCBvZmZzZXQgOTg0IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1MzI1NyBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODUwODU5CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDk4NC4uLgplbnRyeSAicHN0LWxlbnMiIGF0IGJsb2NrIDAg b2Zmc2V0IDEyMDggaW4gZGlyZWN0b3J5IGlub2RlIDEzNDUzMjU3IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDE4NTA4NjEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMTIwOC4uLgplbnRyeSAicHN0LWxhYm8iIGF0IGJsb2NrIDAgb2Zmc2V0IDE0MzIgaW4g ZGlyZWN0b3J5IGlub2RlIDEzNDUzMjU3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4 NTA4NjMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQzMi4uLgpl bnRyeSAicHN0LWdlbyIgYXQgYmxvY2sgMCBvZmZzZXQgMTY1NiBpbiBkaXJlY3RvcnkgaW5vZGUg MTM0NTMyNTcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg1MDg2NgoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNjU2Li4uCmVudHJ5ICJwc3QtZXBzIiBh dCBibG9jayAwIG9mZnNldCAxODg4IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1MzI1NyByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODUwODcxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDE4ODguLi4KZW50cnkgInBzdC1wb2x5IiBhdCBibG9jayAwIG9mZnNl dCAyMTEyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1MzI1NyByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxODUwODczCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDIxMTIuLi4KZW50cnkgInBzdC1vc2NpIiBhdCBibG9jayAwIG9mZnNldCAyMzM2IGluIGRpcmVj dG9yeSBpbm9kZSAxMzQ1MzI1NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODUwODc1 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIzMzYuLi4KZW50cnkg InBzZmlnIiBhdCBibG9jayAwIG9mZnNldCAyNTYwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1MzI1 NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODcwMjM3CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI1NjAuLi4KZW50cnkgIm1hdGhkb3RzIiBhdCBibG9j ayAwIG9mZnNldCAyNzc2IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1MzI1NyByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxODcwMjM5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDI3NzYuLi4KZW50cnkgImFiYnIiIGF0IGJsb2NrIDAgb2Zmc2V0IDI5NzYgaW4g ZGlyZWN0b3J5IGlub2RlIDEzNDUzMjU3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5 MDM4NzMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjk3Ni4uLgpl bnRyeSAiYy1wYXNjYWwiIGF0IGJsb2NrIDAgb2Zmc2V0IDMxNzYgaW4gZGlyZWN0b3J5IGlub2Rl IDEzNDUzMjU3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDM4NzUKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzE3Ni4uLgplbnRyeSAicGljdGV4IiBh dCBibG9jayAwIG9mZnNldCAzMjMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1MzI1NyByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTAzOTQ0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDMyMzIuLi4KZW50cnkgImFycmF5am9iIiBhdCBibG9jayAwIG9mZnNl dCAzNTA0IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1MzI1NyByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxOTA0NzU3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDM1MDQuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMzQ1MzI1NwplbnRyeSAiLi4iIGF0 IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1MzI1OCByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxMjc2MTcyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJnc2Z0b3BrIiBhdCBibG9jayAwIG9mZnNldCAxMjAg aW4gZGlyZWN0b3J5IGlub2RlIDEzNDUzMjU4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDEyNzYxODIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTIwLi4u CmVudHJ5ICJhbXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDIxNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0 NTMyNTggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ2NDY4NQoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMTYuLi4KZW50cnkgInBzZnJhZyIgYXQgYmxv Y2sgMCBvZmZzZXQgMzA0IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1MzI1OCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxNDk5MTE2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDMwNC4uLgplbnRyeSAidGV4LXBzIiBhdCBibG9jayAwIG9mZnNldCAzNjAgaW4g ZGlyZWN0b3J5IGlub2RlIDEzNDUzMjU4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4 NTA4MTgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzYwLi4uCmVu dHJ5ICJwc3RyaWNrcy1hZGQiIGF0IGJsb2NrIDAgb2Zmc2V0IDUyOCBpbiBkaXJlY3RvcnkgaW5v ZGUgMTM0NTMyNTggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg1MDgzMgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1MjguLi4KZW50cnkgInBzdC1saWdo dDNkIiBhdCBibG9jayAwIG9mZnNldCA3NTIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNDUzMjU4IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NTA4MzQKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgNzUyLi4uCmVudHJ5ICJwc3QtbWF0aCIgYXQgYmxvY2sgMCBv ZmZzZXQgOTc2IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1MzI1OCByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxODUwODM2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDk3Ni4uLgplbnRyeSAicHN0LWdyYWQiIGF0IGJsb2NrIDAgb2Zmc2V0IDEyMDAgaW4gZGly ZWN0b3J5IGlub2RlIDEzNDUzMjU4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NTA4 MzgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTIwMC4uLgplbnRy eSAibmNudHJzYmsiIGF0IGJsb2NrIDAgb2Zmc2V0IDE0ODAgaW4gZGlyZWN0b3J5IGlub2RlIDEz NDUzMjU4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NzAyMjQKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTQ4MC4uLgplbnRyeSAiYXZhbnRnYXIiIGF0 IGJsb2NrIDAgb2Zmc2V0IDE2OTYgaW4gZGlyZWN0b3J5IGlub2RlIDEzNDUzMjU4IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NzAyMjYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMTY5Ni4uLgplbnRyeSAic3ltYm9sIiBhdCBibG9jayAwIG9mZnNldCAx OTIwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1MzI1OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxODcwMjI4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE5 MjAuLi4KZW50cnkgImNvbG9yc2VwIiBhdCBibG9jayAwIG9mZnNldCAyMDgwIGluIGRpcmVjdG9y eSBpbm9kZSAxMzQ1MzI1OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODcwMjMzCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwODAuLi4KZW50cnkgInRy ZWUtZHZpcHMiIGF0IGJsb2NrIDAgb2Zmc2V0IDIxMzYgaW4gZGlyZWN0b3J5IGlub2RlIDEzNDUz MjU4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDM5MjAKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjEzNi4uLgplbnRyeSAiZ2VvbXN0eSIgYXQgYmxv Y2sgMCBvZmZzZXQgMjM1MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0NTMyNTggcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTkwNDA4OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAyMzUyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTM0NTMyNTgKZW50 cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0NTMyNjgg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjE3MgoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEz NDUzMjY4CmVudHJ5ICJwaXhtYXBzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNDUzMjkyIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYxODQKanVua2luZyBlbnRyeSAicGl4bWFw cyIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNDUzMjkyCmVudHJ5ICJjYXltYW4iIGF0IGJsb2NrIDAg b2Zmc2V0IDQ4IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NDExMyByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxMjc2NzczCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDQ4Li4uCmVudHJ5ICJsYm94cmUyIiBhdCBibG9jayAwIG9mZnNldCAxMzYgaW4gZGlyZWN0 b3J5IGlub2RlIDEzNDU0MTEzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY3NzgK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTM2Li4uCmVudHJ5ICJz aG1pbiIgYXQgYmxvY2sgMCBvZmZzZXQgMjQwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NDExMyBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2ODkxCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI0MC4uLgplbnRyeSAidGl0YW4iIGF0IGJsb2NrIDAgb2Zm c2V0IDMwNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0NTQxMTMgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTI3Njk2NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzMDQuLi4KZW50cnkgIkMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTM0NTQ0OTcgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjM0MgpqdW5raW5nIGVudHJ5ICJDIiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTM0NTQ0OTcKZW50cnkgImphIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEz NDU0NDk3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYzNDQKanVua2luZyBlbnRy eSAiamEiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NDQ5NwplbnRyeSAieGZjZTQiIGluIHNob3J0 Zm9ybSBkaXJlY3RvcnkgMTM0NTQ1MDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3 NjM0OApqdW5raW5nIGVudHJ5ICJ4ZmNlNCIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNDU0NTA5CmVu dHJ5ICJoZDY0NDZ4IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNDU0NTQ5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDEyNzY5NzAKanVua2luZyBlbnRyeSAiaGQ2NDQ2eCIgaW4gZGly ZWN0b3J5IGlub2RlIDEzNDU0NTQ5CmVudHJ5ICJkbWEiIGluIHNob3J0Zm9ybSBkaXJlY3Rvcnkg MTM0NTQ1NTEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3Njk3MwpqdW5raW5nIGVu dHJ5ICJkbWEiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NDU1MQplbnRyeSAiY3B1IiBhdCBibG9j ayAwIG9mZnNldCAxMjg4IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NDU1NiByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMjc2OTkzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDEyODguLi4KZW50cnkgInRpbWVycyIgYXQgYmxvY2sgMCBvZmZzZXQgMTMwNCBp biBkaXJlY3RvcnkgaW5vZGUgMTM0NTQ1NTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTI3NzA1MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMzA0Li4u CmVudHJ5ICJkZWZhdWx0cyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzQ1NDgzNyByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2NDMxCmp1bmtpbmcgZW50cnkgImRlZmF1bHRzIiBp biBkaXJlY3RvcnkgaW5vZGUgMTM0NTQ4MzcKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAz MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0NTUzMTMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTI3Njk5MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4u LgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEzNDU1MzEzCmVudHJ5ICJkZSIgaW4gc2hvcnRm b3JtIGRpcmVjdG9yeSAxMzQ1NTQ1OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjg3 OTA2Cmp1bmtpbmcgZW50cnkgImRlIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0NTU0NTkKZW50cnkg ImtvIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNDU1NDU5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDEyODc5MDgKanVua2luZyBlbnRyeSAia28iIGluIGRpcmVjdG9yeSBpbm9kZSAx MzQ1NTQ1OQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9k ZSAxMzQ1NTUxNiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc3MDYwCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBk aXJlY3RvcnkgMTM0NTU1MTYKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTM0NTU2ODMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NzA2 MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBl bnRyeSBmb3IgZGlyZWN0b3J5IDEzNDU1NjgzCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQg MzIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNDU1ODc2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDEyNzcwNzUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIu Li4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMzQ1NTg3NgplbnRyeSAiLi4iIGF0IGJsb2Nr IDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NTkzMCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxMjc2NTY5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTM0NTU5MzAKZW50cnkgIi4u IiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0NTYwMzcgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDI1OTA0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJhbmltYXRpb25zIiBhdCBibG9jayAwIG9mZnNl dCAxMzYgaW4gZGlyZWN0b3J5IGlub2RlIDEzNDU2MDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDEyNzY1NzYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MTM2Li4uCmVudHJ5ICJlbWJsZW1zIiBhdCBibG9jayAwIG9mZnNldCAzNDQgaW4gZGlyZWN0b3J5 IGlub2RlIDEzNDU2MDM3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY1NzcKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzQ0Li4uCmVudHJ5ICJtaW1l dHlwZXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDU1MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0NTYwMzcg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjU3OAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCA1NTIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAx MzQ1NjAzNwplbnRyeSAiY2hhcnQiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTM0NTYwNDQgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjU3OQpqdW5raW5nIGVudHJ5ICJjaGFydCIg aW4gZGlyZWN0b3J5IGlub2RlIDEzNDU2MDQ0CmVudHJ5ICJpbWFnZSIgaW4gc2hvcnRmb3JtIGRp cmVjdG9yeSAxMzQ1NjA0NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2NTgwCmp1 bmtpbmcgZW50cnkgImltYWdlIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0NTYwNDQKZW50cnkgIm5l dCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzQ1NjA0NCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxMjc2NTgxCmp1bmtpbmcgZW50cnkgIm5ldCIgaW4gZGlyZWN0b3J5IGlub2RlIDEz NDU2MDQ0CmVudHJ5ICJjaGFydCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzQ1NjA1NiByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2NTg1Cmp1bmtpbmcgZW50cnkgImNoYXJ0IiBp biBkaXJlY3RvcnkgaW5vZGUgMTM0NTYwNTYKZW50cnkgImltYWdlIiBpbiBzaG9ydGZvcm0gZGly ZWN0b3J5IDEzNDU2MDU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY1ODYKanVu a2luZyBlbnRyeSAiaW1hZ2UiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjA1NgplbnRyeSAibmV0 IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNDU2MDU2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDEyNzY1ODcKanVua2luZyBlbnRyeSAibmV0IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0 NTYwNTYKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUg MTM0NTYwNjQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjU4OAoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGly ZWN0b3J5IDEzNDU2MDY0CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0 b3J5IGlub2RlIDEzNDU2MDc1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyNTkwNAoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiYW5p bWF0aW9ucyIgYXQgYmxvY2sgMCBvZmZzZXQgMTM2IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjA3 NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2NTk1CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEzNi4uLgplbnRyeSAiZW1ibGVtcyIgYXQgYmxvY2sg MCBvZmZzZXQgMzQ0IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjA3NSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxMjc2NTk2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDM0NC4uLgplbnRyeSAibWltZXR5cGVzIiBhdCBibG9jayAwIG9mZnNldCA1NTIgaW4g ZGlyZWN0b3J5IGlub2RlIDEzNDU2MDc1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEy NzY1OTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTUyLi4uCm5v IC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTM0NTYwNzUKZW50cnkgImNoYXJ0IiBpbiBzaG9ydGZv cm0gZGlyZWN0b3J5IDEzNDU2MDgyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY1 OTgKanVua2luZyBlbnRyeSAiY2hhcnQiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjA4MgplbnRy eSAiaW1hZ2UiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTM0NTYwODIgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTI3NjU5OQpqdW5raW5nIGVudHJ5ICJpbWFnZSIgaW4gZGlyZWN0b3J5 IGlub2RlIDEzNDU2MDgyCmVudHJ5ICJuZXQiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTM0NTYw ODIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjYwMApqdW5raW5nIGVudHJ5ICJu ZXQiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjA4MgplbnRyeSAiY29kZSIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSAxMzQ1NjA5MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2NjA0 Cmp1bmtpbmcgZW50cnkgImNvZGUiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjA5MwplbnRyeSAi aW8iIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTM0NTYwOTMgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTI3NjYwNQpqdW5raW5nIGVudHJ5ICJpbyIgaW4gZGlyZWN0b3J5IGlub2RlIDEz NDU2MDkzCmVudHJ5ICJvYmplY3QiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTM0NTYwOTMgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjYwNgpqdW5raW5nIGVudHJ5ICJvYmplY3Qi IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjA5MwplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0 IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSA0MjU5MDQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIu Li4KZW50cnkgImFjdGlvbnMiIGF0IGJsb2NrIDAgb2Zmc2V0IDgwIGluIGRpcmVjdG9yeSBpbm9k ZSAxMzQ1NjEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2NjA3CgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDgwLi4uCmVudHJ5ICJkZXZpY2VzIiBh dCBibG9jayAwIG9mZnNldCAyODggaW4gZGlyZWN0b3J5IGlub2RlIDEzNDU2MTMyIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY2NzIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMjg4Li4uCmVudHJ5ICJpbnRsIiBhdCBibG9jayAwIG9mZnNldCA1MDQg aW4gZGlyZWN0b3J5IGlub2RlIDEzNDU2MTMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDEyNzY2NzMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTA0Li4u CmVudHJ5ICJzdG9jayIgYXQgYmxvY2sgMCBvZmZzZXQgNzIwIGluIGRpcmVjdG9yeSBpbm9kZSAx MzQ1NjEzMiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2Njc0CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDcyMC4uLgpubyAuLiBlbnRyeSBmb3IgZGly ZWN0b3J5IDEzNDU2MTMyCmVudHJ5ICJjb2RlIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNDU2 MTUxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY2ODEKanVua2luZyBlbnRyeSAi Y29kZSIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNDU2MTUxCmVudHJ5ICJpbyIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSAxMzQ1NjE1MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2Njgy Cmp1bmtpbmcgZW50cnkgImlvIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0NTYxNTEKZW50cnkgIm9i amVjdCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzQ1NjE1MSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxMjc2NjgzCmp1bmtpbmcgZW50cnkgIm9iamVjdCIgaW4gZGlyZWN0b3J5IGlu b2RlIDEzNDU2MTUxCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5 IGlub2RlIDEzNDU2MTU4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQyNTkwNAoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiYWN0aW9u cyIgYXQgYmxvY2sgMCBvZmZzZXQgODAgaW4gZGlyZWN0b3J5IGlub2RlIDEzNDU2MTU4IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY2ODQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgODAuLi4KZW50cnkgImRldmljZXMiIGF0IGJsb2NrIDAgb2Zmc2V0 IDI4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0NTYxNTggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTI3NjY4NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAy ODguLi4KZW50cnkgImludGwiIGF0IGJsb2NrIDAgb2Zmc2V0IDUwNCBpbiBkaXJlY3RvcnkgaW5v ZGUgMTM0NTYxNTggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NjY4NgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1MDQuLi4KZW50cnkgInN0b2NrIiBh dCBibG9jayAwIG9mZnNldCA3MjAgaW4gZGlyZWN0b3J5IGlub2RlIDEzNDU2MTU4IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY2ODcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgNzIwLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTM0NTYxNTgK ZW50cnkgImNvZGUiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTM0NTYxNzcgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTI3NjY5NApqdW5raW5nIGVudHJ5ICJjb2RlIiBpbiBkaXJlY3Rv cnkgaW5vZGUgMTM0NTYxNzcKZW50cnkgImlvIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNDU2 MTc3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY2OTUKanVua2luZyBlbnRyeSAi aW8iIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjE3NwplbnRyeSAib2JqZWN0IiBpbiBzaG9ydGZv cm0gZGlyZWN0b3J5IDEzNDU2MTc3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY2 OTYKanVua2luZyBlbnRyeSAib2JqZWN0IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0NTYxNzcKZW50 cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0NTYxODQg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNDI1OTA0CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJhY3Rpb25zIiBhdCBibG9jayAwIG9m ZnNldCA4MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0NTYxODQgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTI3NjY5NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCA4MC4uLgplbnRyeSAiZGV2aWNlcyIgYXQgYmxvY2sgMCBvZmZzZXQgMjg4IGluIGRpcmVjdG9y eSBpbm9kZSAxMzQ1NjE4NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2Njk4Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDI4OC4uLgplbnRyeSAiaW50 bCIgYXQgYmxvY2sgMCBvZmZzZXQgNTA0IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjE4NCByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc2Njk5CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDUwNC4uLgplbnRyeSAic3RvY2siIGF0IGJsb2NrIDAgb2Zmc2V0 IDcyMCBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0NTYxODQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTI3NjcwMAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA3 MjAuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMzQ1NjE4NAplbnRyeSAiTENfTUVTU0FH RVMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTM0NTYyOTAgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTI3NjcxMwpqdW5raW5nIGVudHJ5ICJMQ19NRVNTQUdFUyIgaW4gZGlyZWN0b3J5 IGlub2RlIDEzNDU2MjkwCmVudHJ5ICJsaWJ4ZnNtIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEz NDU2NDQ1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzY3NjEKanVua2luZyBlbnRy eSAibGlieGZzbSIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNDU2NDQ1CmVudHJ5ICJldGV4LmZtdCIg YXQgYmxvY2sgMCBvZmZzZXQgNDggaW4gZGlyZWN0b3J5IGlub2RlIDEzNDU2NjQxIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNTg5MTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgNDguLi4KZW50cnkgImV0ZXgubG9nIiBhdCBibG9jayAwIG9mZnNldCA3 MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0NTY2NDEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMjA1ODkxMgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA3Mi4u LgplbnRyeSAicGRmZXRleC5mbXQiIGF0IGJsb2NrIDAgb2Zmc2V0IDk2IGluIGRpcmVjdG9yeSBp bm9kZSAxMzQ1NjY0MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDU4OTE1CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDk2Li4uCmVudHJ5ICJwZGZldGV4 LmxvZyIgYXQgYmxvY2sgMCBvZmZzZXQgMTIwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjY0MSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDU4OTE0CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEyMC4uLgplbnRyeSAicGRmdGV4LmZtdCIgYXQgYmxvY2sg MCBvZmZzZXQgMTQ0IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjY0MSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAyMDU4OTE3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDE0NC4uLgplbnRyeSAicGRmdGV4LmxvZyIgYXQgYmxvY2sgMCBvZmZzZXQgMTY4IGlu IGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjY0MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAy MDU4OTE2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE2OC4uLgpl bnRyeSAiZXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDQ4IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjY2 NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDU4OTQ2CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQ4Li4uCmVudHJ5ICJubyIgYXQgYmxvY2sgMCBvZmZz ZXQgMTEyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjY2NyByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAyMDU4OTQ5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDExMi4uLgplbnRyeSAic2wiIGF0IGJsb2NrIDAgb2Zmc2V0IDE3NiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTM0NTY2NjcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA1ODk1MgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNzYuLi4KZW50cnkgInNyQExhdG4i IGF0IGJsb2NrIDAgb2Zmc2V0IDI0MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0NTY2NjcgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA1ODk1NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAyNDAuLi4KZW50cnkgIm5uIiBhdCBibG9jayAwIG9mZnNldCAzMTIg aW4gZGlyZWN0b3J5IGlub2RlIDEzNDU2NjY3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDIwNTg5NTgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzEyLi4u CmVudHJ5ICJjeSIgYXQgYmxvY2sgMCBvZmZzZXQgMzc2IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1 NjY2NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDU4OTYxCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM3Ni4uLgplbnRyeSAiamEiIGF0IGJsb2NrIDAg b2Zmc2V0IDQ0MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0NTY2NjcgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMjA1ODk2NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA0NDAuLi4KZW50cnkgInNyIiBhdCBibG9jayAwIG9mZnNldCA1MDQgaW4gZGlyZWN0b3J5 IGlub2RlIDEzNDU2NjY3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNTg5NjcKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTA0Li4uCmVudHJ5ICJ3YSIg YXQgYmxvY2sgMCBvZmZzZXQgNTY4IGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjY2NyByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDU4OTcwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDU2OC4uLgplbnRyeSAicHRfQlIiIGF0IGJsb2NrIDAgb2Zmc2V0IDYz MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM0NTY2NjcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMjA1ODk3MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2MzIu Li4KZW50cnkgImluZGV4IiBhdCBibG9jayAwIG9mZnNldCA2OTYgaW4gZGlyZWN0b3J5IGlub2Rl IDEzNDU2NjY3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NTA5OTAKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNjk2Li4uCmVudHJ5ICJkbG0iIGluIHNo b3J0Zm9ybSBkaXJlY3RvcnkgMTM0NzU4NTQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MjEyMDAyMwpqdW5raW5nIGVudHJ5ICJkbG0iIGluIGRpcmVjdG9yeSBpbm9kZSAxMzQ3NTg1NApl bnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzUwMTQ4 MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjc3MDc4CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3Rvcnkg MTM1MDE0ODAKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTM1MDE0OTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI3NzA3OAoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3Ig ZGlyZWN0b3J5IDEzNTAxNDk1CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGly ZWN0b3J5IGlub2RlIDEzNTI0ODEyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzcw NzgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4g ZW50cnkgZm9yIGRpcmVjdG9yeSAxMzUyNDgxMgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0 IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzUyNDgyNSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxMjc3MDc4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMy Li4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTM1MjQ4MjUKZW50cnkgIi4uIiBhdCBibG9j ayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM1MjQ4MzYgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTI3NzA3OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEzNTI0ODM2CmVudHJ5ICJw b2xpY3kiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTM1MjUwNzEgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTM1NDgwMwpqdW5raW5nIGVudHJ5ICJwb2xpY3kiIGluIGRpcmVjdG9yeSBp bm9kZSAxMzUyNTA3MQplbnRyeSAiMjB0aGlyZHBhcnR5IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5 IDEzNTI1MDcyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzNTQ4MDEKanVua2luZyBl bnRyeSAiMjB0aGlyZHBhcnR5IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM1MjUwNzIKZW50cnkgIjIw dGhpcmRwYXJ0eSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzUyNTA3MyByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMzU0ODAyCmp1bmtpbmcgZW50cnkgIjIwdGhpcmRwYXJ0eSIgaW4g ZGlyZWN0b3J5IGlub2RlIDEzNTI1MDczCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIg aW4gZGlyZWN0b3J5IGlub2RlIDEzNTI1MjQwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDEzNTQ4MDMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4K bm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMzUyNTI0MAplbnRyeSAic2NyaXB0cyIgYXQgYmxv Y2sgMCBvZmZzZXQgNzc2IGluIGRpcmVjdG9yeSBpbm9kZSAxMzUyNTM1MiByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMzU0ODA0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDc3Ni4uLgplbnRyeSAic2VydmVycyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAx MzUyNTQwMCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzU0ODU4Cmp1bmtpbmcgZW50 cnkgInNlcnZlcnMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzUyNTQwMAplbnRyeSAiLi4iIGF0IGJs b2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzUyNTUzNiByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMzU1MDIyCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJjcHVmcmVxIiBhdCBibG9jayAwIG9mZnNldCA0MjQgaW4g ZGlyZWN0b3J5IGlub2RlIDEzNTI1NTM2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4 MDk5NTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDI0Li4uCm5v IC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTM1MjU1MzYKZW50cnkgImJvbm9iby1hY3RpdmF0aW9u LTIuMCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzUyNTU0MSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxMzU0ODg0Cmp1bmtpbmcgZW50cnkgImJvbm9iby1hY3RpdmF0aW9uLTIuMCIg aW4gZGlyZWN0b3J5IGlub2RlIDEzNTI1NTQxCmVudHJ5ICJodG1sIiBpbiBzaG9ydGZvcm0gZGly ZWN0b3J5IDEzNTI1NzE0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzNTQ5NTIKanVu a2luZyBlbnRyeSAiaHRtbCIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNTI1NzE0CmVudHJ5ICJtb2R1 bGVzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNTI1ODc5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDEzNTUwMDYKanVua2luZyBlbnRyeSAibW9kdWxlcyIgaW4gZGlyZWN0b3J5IGlu b2RlIDEzNTI1ODc5CmVudHJ5ICJpc3MiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTM1MjYxODUg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTk4MzQwNApqdW5raW5nIGVudHJ5ICJpc3Mi IGluIGRpcmVjdG9yeSBpbm9kZSAxMzUyNjE4NQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0 IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzUyNjIxMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyMzk3NTM1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMy Li4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTM1MjYyMTEKZW50cnkgIi4uIiBhdCBibG9j ayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM1MjY0MDAgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjA1Nzc0NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEzNTI2NDAwCmVudHJ5ICIu LiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNTI2NDExIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNTc3NDcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgImN5YmxhZmIiIGF0IGJsb2NrIDAgb2Zmc2V0 IDc1MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM1MjY0MTEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjQyNzA4NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA3 NTIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMzUyNjQxMQplbnRyeSAiLi4iIGF0IGJs b2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzUyNjcyOCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAyMDU3NzQ3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTM1MjY3MjgKZW50cnkg Ii4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM1MjY3NjQgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjA1Nzc0NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEzNTI2 NzY0CmVudHJ5ICJzY3JpcHQiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTM1MzUxODUgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU5OTAxNApqdW5raW5nIGVudHJ5ICJzY3JpcHQiIGlu IGRpcmVjdG9yeSBpbm9kZSAxMzUzNTE4NQplbnRyeSAiYWNjZXNzaWJsZSIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSAxMzUzNTE4NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNTk5MDE5 Cmp1bmtpbmcgZW50cnkgImFjY2Vzc2libGUiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzUzNTE4NQpl bnRyeSAiaWNvbmVuZ2luZXMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTM1MzUxODUgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg2NDc2OApqdW5raW5nIGVudHJ5ICJpY29uZW5naW5l cyIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNTM1MTg1CmVudHJ5ICI0OHg0OCIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSAxMzUzNTE5MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4NjYw Cmp1bmtpbmcgZW50cnkgIjQ4eDQ4IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM1MzUxOTAKZW50cnkg InNjYWxhYmxlIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNTM1MTkwIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDEzODg2ODcKanVua2luZyBlbnRyeSAic2NhbGFibGUiIGluIGRpcmVj dG9yeSBpbm9kZSAxMzUzNTE5MAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRp cmVjdG9yeSBpbm9kZSAxMzUzNTE5MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4 NjYwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4u IGVudHJ5IGZvciBkaXJlY3RvcnkgMTM1MzUxOTEKZW50cnkgIm1hcGxlIiBpbiBzaG9ydGZvcm0g ZGlyZWN0b3J5IDEzNjI4MjU3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExMzYwODgK anVua2luZyBlbnRyeSAibWFwbGUiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzYyODI1NwplbnRyeSAi YWFjcmFpZCIgYXQgYmxvY2sgMSBvZmZzZXQgODE2IGluIGRpcmVjdG9yeSBpbm9kZSAxMzYyOTMy NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA5MTM2MTQKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODE2Li4uCmVudHJ5ICJhaWM5NHh4IiBhdCBibG9jayAx IG9mZnNldCA4ODggaW4gZGlyZWN0b3J5IGlub2RlIDEzNjI5MzI3IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDkxMzYyOAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA4ODguLi4KZW50cnkgImlibXZzY3NpIiBhdCBibG9jayAxIG9mZnNldCA5NjggaW4gZGly ZWN0b3J5IGlub2RlIDEzNjI5MzI3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDkxMzY0 OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA5NjguLi4KZW50cnkg InBjbWNpYSIgYXQgYmxvY2sgMSBvZmZzZXQgMTA1NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM2Mjkz MjcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgOTEzNjU3CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDEwNTYuLi4KZW50cnkgIi4uIiBhdCBibG9jayAwIG9m ZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM2MzEwNDkgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTM4ODY2MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEzNjMxMDQ5CmVudHJ5ICIuLiIgYXQg YmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNjMxMDcwIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDEzODg2NjAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMzYzMTA3MAplbnRy eSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzYzMTA5NiBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4NjYwCgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTM2 MzEwOTYKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUg MTM2MzEyOTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4ODY4NwoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGly ZWN0b3J5IDEzNjMxMjk2CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0 b3J5IGlub2RlIDEzNjMxMzE0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg2ODcK CWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50 cnkgZm9yIGRpcmVjdG9yeSAxMzYzMTMxNAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMy IGluIGRpcmVjdG9yeSBpbm9kZSAxMzYzMTMzNSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxMzg4Njg3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4u Cm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTM2MzEzMzUKZW50cnkgIi4uIiBhdCBibG9jayAw IG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM2MzEzNTkgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTM4ODY4NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEzNjMxMzU5CmVudHJ5ICJndGst Mi4wIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNjMxNTk5IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDEzODg3OTMKanVua2luZyBlbnRyeSAiZ3RrLTIuMCIgaW4gZGlyZWN0b3J5IGlu b2RlIDEzNjMxNTk5CmVudHJ5ICJndGstMi4wIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNjMx NjA0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg3OTUKanVua2luZyBlbnRyeSAi Z3RrLTIuMCIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNjMxNjA0CmVudHJ5ICJndGstMi4wIiBpbiBz aG9ydGZvcm0gZGlyZWN0b3J5IDEzNjMxNjA5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDEzODg3OTcKanVua2luZyBlbnRyeSAiZ3RrLTIuMCIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNjMx NjA5CmVudHJ5ICJndGstMi4wIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNjMxNjE0IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg3OTkKanVua2luZyBlbnRyeSAiZ3RrLTIuMCIg aW4gZGlyZWN0b3J5IGlub2RlIDEzNjMxNjE0CmVudHJ5ICJndGstMi4wIiBpbiBzaG9ydGZvcm0g ZGlyZWN0b3J5IDEzNjMxNjE5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg4MDEK anVua2luZyBlbnRyeSAiZ3RrLTIuMCIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNjMxNjE5CmVudHJ5 ICJndGstMi4wIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNjMxNjI0IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDEzODg4MDMKanVua2luZyBlbnRyeSAiZ3RrLTIuMCIgaW4gZGlyZWN0 b3J5IGlub2RlIDEzNjMxNjI0CmVudHJ5ICJndGstMi4wIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5 IDEzNjMxNjI5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg4MDUKanVua2luZyBl bnRyeSAiZ3RrLTIuMCIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNjMxNjI5CmVudHJ5ICJndGstMi4w IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNjMxNjM0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDEzODg4MDcKanVua2luZyBlbnRyeSAiZ3RrLTIuMCIgaW4gZGlyZWN0b3J5IGlub2Rl IDEzNjMxNjM0CmVudHJ5ICJndGstMi4wIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNjMxNjM5 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg4MDkKanVua2luZyBlbnRyeSAiZ3Rr LTIuMCIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNjMxNjM5CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBv ZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNjMyMDY1IHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDEzODg4MzMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMzYzMjA2NQplbnRyeSAiLi4iIGF0 IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzYzMjA3OSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxMzg4ODU2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTM2MzIwNzkKZW50 cnkgImNocm9tZSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzYzMjMxNSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMzg4ODg1Cmp1bmtpbmcgZW50cnkgImNocm9tZSIgaW4gZGlyZWN0 b3J5IGlub2RlIDEzNjMyMzE1CmVudHJ5ICJ7OTcyY2U0YzYtN2UwOC00NDc0LWEyODUtMzIwODE5 OGNlNmZkfSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzYzMjQwNSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxMzg4ODg4Cmp1bmtpbmcgZW50cnkgIns5NzJjZTRjNi03ZTA4LTQ0NzQt YTI4NS0zMjA4MTk4Y2U2ZmR9IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM2MzI0MDUKZW50cnkgImlj b25zIiBhdCBibG9jayAwIG9mZnNldCAyMjQgaW4gZGlyZWN0b3J5IGlub2RlIDEzNjMyNDEyIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzODg4OTAKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgMjI0Li4uCmVudHJ5ICJwcmVmZXJlbmNlcyIgaW4gc2hvcnRm b3JtIGRpcmVjdG9yeSAxMzYzMjQyNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMzg4 ODkxCmp1bmtpbmcgZW50cnkgInByZWZlcmVuY2VzIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM2MzI0 MjcKZW50cnkgImNzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNjMyNTIwIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDEzODg5MzQKanVua2luZyBlbnRyeSAiY3MiIGluIGRpcmVjdG9y eSBpbm9kZSAxMzYzMjUyMAplbnRyeSAiamEiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTM2MzI1 MjAgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4ODkzNgpqdW5raW5nIGVudHJ5ICJq YSIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNjMyNTIwCmVudHJ5ICJtb2R1bGVzLVExNiIgaW4gc2hv cnRmb3JtIGRpcmVjdG9yeSAxMzYzMjg3NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx Mzg5MDI4Cmp1bmtpbmcgZW50cnkgIm1vZHVsZXMtUTE2IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM2 MzI4NzQKZW50cnkgImFwaSIgYXQgYmxvY2sgMCBvZmZzZXQgMzE2MCBpbiBkaXJlY3RvcnkgaW5v ZGUgMTM2NDgwMDggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM4OTAzOAoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMTYwLi4uCmVudHJ5ICJ0ZXhsaXZl LWVuIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNjQ4MjEzIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDEzODkwODcKanVua2luZyBlbnRyeSAidGV4bGl2ZS1lbiIgaW4gZGlyZWN0b3J5 IGlub2RlIDEzNjQ4MjEzCmVudHJ5ICJlbmN0ZXgiIGF0IGJsb2NrIDAgb2Zmc2V0IDgwIGluIGRp cmVjdG9yeSBpbm9kZSAxMzY3NTk0MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDY0 MjAzCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDgwLi4uCmVudHJ5 ICJlcHNmIiBhdCBibG9jayAwIG9mZnNldCAxODQgaW4gZGlyZWN0b3J5IGlub2RlIDEzNjc1OTQx IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NTA3MDYKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTg0Li4uCmVudHJ5ICJtYXRoZG90cyIgYXQgYmxvY2sg MCBvZmZzZXQgMzkyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzY3NTk0MSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxOTAzOTA0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDM5Mi4uLgplbnRyeSAiYWJiciIgYXQgYmxvY2sgMCBvZmZzZXQgNTkyIGluIGRpcmVj dG9yeSBpbm9kZSAxMzY3NTk0MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTAzOTA1 CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDU5Mi4uLgplbnRyeSAi Yy1wYXNjYWwiIGF0IGJsb2NrIDAgb2Zmc2V0IDc5MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM2NzU5 NDEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwMzkwNgoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA3OTIuLi4KZW50cnkgImFtc2ZvbnRzIiBpbiBzaG9y dGZvcm0gZGlyZWN0b3J5IDEzNjc1OTQyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0 NjQyMDQKanVua2luZyBlbnRyeSAiYW1zZm9udHMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzY3NTk0 MgplbnRyeSAibWZsb2dvIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNjc1OTQ1IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0NjQyMDUKanVua2luZyBlbnRyeSAibWZsb2dvIiBpbiBk aXJlY3RvcnkgaW5vZGUgMTM2NzU5NDUKZW50cnkgImJhcnIiIGluIHNob3J0Zm9ybSBkaXJlY3Rv cnkgMTM2NzU5NDUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwMzkwMwpqdW5raW5n IGVudHJ5ICJiYXJyIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM2NzU5NDUKZW50cnkgImJpYnRleCIg YXQgYmxvY2sgMCBvZmZzZXQgODAgaW4gZGlyZWN0b3J5IGlub2RlIDEzNjc1OTQ3IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0NjQyMDYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgODAuLi4KZW50cnkgImZvbnRuYW1lIiBhdCBibG9jayAwIG9mZnNldCAz ODQgaW4gZGlyZWN0b3J5IGlub2RlIDEzNjc1OTQ3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE0NjQyMDcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzg0 Li4uCmVudHJ5ICJldGV4IiBhdCBibG9jayAwIG9mZnNldCA0ODAgaW4gZGlyZWN0b3J5IGlub2Rl IDEzNjc1OTQ3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0NjQyNTMKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNDgwLi4uCmVudHJ5ICJtYWtlaW5kZXgi IGF0IGJsb2NrIDAgb2Zmc2V0IDY5NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM2NzU5NDcgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ2NDI1NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCA2OTYuLi4KZW50cnkgImJpYiIgaW4gc2hvcnRmb3JtIGRpcmVjdG9y eSAxMzY3NTk5MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDY0MjU1Cmp1bmtpbmcg ZW50cnkgImJpYiIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNjc1OTkxCmVudHJ5ICJiYXNlIiBhdCBi bG9jayAwIG9mZnNldCAxMTIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNjc1OTkyIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDE0NjQyODgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTEyLi4uCmVudHJ5ICJuYXRiaWIiIGF0IGJsb2NrIDAgb2Zmc2V0IDIxNiBp biBkaXJlY3RvcnkgaW5vZGUgMTM2NzU5OTIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTQ2NDc5MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyMTYuLi4K ZW50cnkgImRpbmF0IiBhdCBibG9jayAwIG9mZnNldCAzNzYgaW4gZGlyZWN0b3J5IGlub2RlIDEz Njc1OTkyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NzAyMzEKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzc2Li4uCmVudHJ5ICJtaW5pdG9jIiBhdCBi bG9jayAwIG9mZnNldCA0MjQgaW4gZGlyZWN0b3J5IGlub2RlIDEzNjc1OTkyIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDE5MDQwNzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgNDI0Li4uCmVudHJ5ICJkaXJlY3RvcnkiIGF0IGJsb2NrIDAgb2Zmc2V0IDY0 OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTM2NzU5OTIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTkwNDA3NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2NDgu Li4KZW50cnkgImR0ayIgYXQgYmxvY2sgMCBvZmZzZXQgODQ4IGluIGRpcmVjdG9yeSBpbm9kZSAx MzY3NTk5MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0MDg0CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDg0OC4uLgplbnRyeSAibXNsYXBhIiBhdCBi bG9jayAwIG9mZnNldCAxMDQ4IGluIGRpcmVjdG9yeSBpbm9kZSAxMzY3NTk5MiByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxOTA0MDg2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDEwNDguLi4KZW50cnkgImJhc2UiIGluIHNob3J0Zm9ybSBkaXJlY3Rvcnkg MTM2NzYxMDIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ2NDI5NwpqdW5raW5nIGVu dHJ5ICJiYXNlIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM2NzYxMDIKZW50cnkgIi4uIiBhdCBibG9j ayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM2NzYyMDIgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTQ2NDM0MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEzNjc2MjAyCmVudHJ5ICJj bSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzY3NjIyNCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxNDY0MzY0Cmp1bmtpbmcgZW50cnkgImNtIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM2 NzYyMjQKZW50cnkgImxhdGV4LWZvbnRzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNjc2MjI0 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0NjQ4NzMKanVua2luZyBlbnRyeSAibGF0 ZXgtZm9udHMiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzY3NjIyNAplbnRyeSAiLi4iIGF0IGJsb2Nr IDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzY3NjMwMSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxMjc2MTY2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTM2NzYzMDEKZW50cnkgImFt cyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzY3NjMzNiByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxNDY0NDc1Cmp1bmtpbmcgZW50cnkgImFtcyIgaW4gZGlyZWN0b3J5IGlub2RlIDEz Njc2MzM2CmVudHJ5ICJsYXRleC1mb250cyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzY3NjMz NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDY0ODg4Cmp1bmtpbmcgZW50cnkgImxh dGV4LWZvbnRzIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM2NzYzMzYKZW50cnkgInB1YmxpYyIgaW4g c2hvcnRmb3JtIGRpcmVjdG9yeSAxMzY3NjU2NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxNDY0NTczCmp1bmtpbmcgZW50cnkgInB1YmxpYyIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNjc2 NTY2CmVudHJ5ICJncm9mZiIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzY3NjU2NiByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODcwMTY0Cmp1bmtpbmcgZW50cnkgImdyb2ZmIiBpbiBk aXJlY3RvcnkgaW5vZGUgMTM2NzY1NjYKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBp biBkaXJlY3RvcnkgaW5vZGUgMTM2NzY1NzYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTQ2NDU3MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpu byAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEzNjc2NTc2CmVudHJ5ICJjbSIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSAxMzY3NjU4OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDY0Njgz Cmp1bmtpbmcgZW50cnkgImNtIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM2NzY1ODkKZW50cnkgIm90 cCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzY3NjU5MiByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxNDY0Njg0Cmp1bmtpbmcgZW50cnkgIm90cCIgaW4gZGlyZWN0b3J5IGlub2RlIDEz Njc2NTkyCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2Rl IDEzNjc2NTk5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyNzYxNzIKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgInBsYWluIiBhdCBi bG9jayAwIG9mZnNldCAxMjAgaW4gZGlyZWN0b3J5IGlub2RlIDEzNjc2NTk5IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDE0NjQ2ODgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTIwLi4uCmVudHJ5ICJjaXJjIiBhdCBibG9jayAwIG9mZnNldCA1OTIgaW4g ZGlyZWN0b3J5IGlub2RlIDEzNjc2NTk5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5 MDQxMTQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTkyLi4uCmVu dHJ5ICJnbWRvYyIgYXQgYmxvY2sgMCBvZmZzZXQgNzYwIGluIGRpcmVjdG9yeSBpbm9kZSAxMzY3 NjU5OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0MTE2CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDc2MC4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0 b3J5IDEzNjc2NTk5CmVudHJ5ICJhZG9iZSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzY3NzQw MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODY5NTY2Cmp1bmtpbmcgZW50cnkgImFk b2JlIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM2Nzc0MDIKZW50cnkgImFlIiBpbiBzaG9ydGZvcm0g ZGlyZWN0b3J5IDEzNjc3NDAzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0NjQ5MDMK anVua2luZyBlbnRyeSAiYWUiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzY3NzQwMwplbnRyeSAicHhm b250cyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzY3NzQwMyByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxODY5NDA0Cmp1bmtpbmcgZW50cnkgInB4Zm9udHMiIGluIGRpcmVjdG9yeSBp bm9kZSAxMzY3NzQwMwplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9y eSBpbm9kZSAxMzY3NzQwNCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDY0NTczCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5 IGZvciBkaXJlY3RvcnkgMTM2Nzc0MDQKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBp biBkaXJlY3RvcnkgaW5vZGUgMTM2ODM5MjQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTQ2NDU3MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpu byAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEzNjgzOTI0CmVudHJ5ICJjb25maWciIGluIHNob3J0 Zm9ybSBkaXJlY3RvcnkgMTM2ODQwMTMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ2 NTEyMApqdW5raW5nIGVudHJ5ICJjb25maWciIGluIGRpcmVjdG9yeSBpbm9kZSAxMzY4NDAxMwpl bnRyeSAiY29udG91ciIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzY4NDAxMyByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxOTA0MDY1Cmp1bmtpbmcgZW50cnkgImNvbnRvdXIiIGluIGRp cmVjdG9yeSBpbm9kZSAxMzY4NDAxMwplbnRyeSAicGdmIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5 IDEzNzMyMDM2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0OTkxMjUKanVua2luZyBl bnRyeSAicGdmIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM3MzIwMzYKZW50cnkgIi4uIiBhdCBibG9j ayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM3MzIwODEgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTQ5OTEyNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEzNzMyMDgxCmVudHJ5ICIu LiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNzMyMDkxIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0OTkxMjUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMzczMjA5 MQplbnRyeSAidXRpbGl0aWVzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNzMyMTYxIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0OTkxODQKanVua2luZyBlbnRyeSAidXRpbGl0aWVz IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM3MzIxNjEKZW50cnkgIm1hdGgiIGluIHNob3J0Zm9ybSBk aXJlY3RvcnkgMTM3MzIxNjEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTE5MQpq dW5raW5nIGVudHJ5ICJtYXRoIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM3MzIxNjEKZW50cnkgImJh c2ljbGF5ZXIiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTM3MzIxNzcgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTQ5OTE5MwpqdW5raW5nIGVudHJ5ICJiYXNpY2xheWVyIiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTM3MzIxNzcKZW50cnkgImV4dGVuc2lvbnMiIGluIHNob3J0Zm9ybSBkaXJl Y3RvcnkgMTM3MzIxOTUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTIwNgpqdW5r aW5nIGVudHJ5ICJleHRlbnNpb25zIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM3MzIxOTUKZW50cnkg ImZvbnQiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTM3MzIyMDEgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMTQ5OTIwNwpqdW5raW5nIGVudHJ5ICJmb250IiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTM3MzIyMDEKZW50cnkgIm91dGVyIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzNzMyMjAx IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0OTkyMTQKanVua2luZyBlbnRyeSAib3V0 ZXIiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzczMjIwMQplbnRyeSAiZ2VuZXJpYy10YWxrcyIgaW4g c2hvcnRmb3JtIGRpcmVjdG9yeSAxMzczMjM3OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxNDk5MjI5Cmp1bmtpbmcgZW50cnkgImdlbmVyaWMtdGFsa3MiIGluIGRpcmVjdG9yeSBpbm9k ZSAxMzczMjM3OAplbnRyeSAiYS1jb25mZXJlbmNlLXRhbGsiIGluIHNob3J0Zm9ybSBkaXJlY3Rv cnkgMTM3MzI0NDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ5OTMwMwpqdW5raW5n IGVudHJ5ICJhLWNvbmZlcmVuY2UtdGFsayIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNzMyNDQ5CmVu dHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDEzNzMyNzgx IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNTc3NDcKCWNsZWFyaW5nIGlub2RlIG51 bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAx MzczMjc4MQplbnRyeSAidGV4LmZtdCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzczNTA0MiBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDU4OTE5Cmp1bmtpbmcgZW50cnkgInRleC5m bXQiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzczNTA0MgplbnRyeSAidGV4LmxvZyIgaW4gc2hvcnRm b3JtIGRpcmVjdG9yeSAxMzczNTA0MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMDU4 OTE4Cmp1bmtpbmcgZW50cnkgInRleC5sb2ciIGluIGRpcmVjdG9yeSBpbm9kZSAxMzczNTA0Mgpl bnRyeSAiVUkiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTM3Mzk4MzAgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMjA1ODQyNwpqdW5raW5nIGVudHJ5ICJVSSIgaW4gZGlyZWN0b3J5IGlu b2RlIDEzNzM5ODMwCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5 IGlub2RlIDEzNzM5ODMyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwNTg0MjcKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkg Zm9yIGRpcmVjdG9yeSAxMzczOTgzMgplbnRyeSAic3ltYmlhbiIgYXQgYmxvY2sgMCBvZmZzZXQg ODAgaW4gZGlyZWN0b3J5IGlub2RlIDEzNzQwMDE3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDIwNjE4NTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODAu Li4KZW50cnkgInNvYXAiIGF0IGJsb2NrIDAgb2Zmc2V0IDY0OCBpbiBkaXJlY3RvcnkgaW5vZGUg MTM5MTYyMDggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTU5OTA1MQoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2NDguLi4KZW50cnkgInZhbGlkYXRpb24i IGF0IGJsb2NrIDAgb2Zmc2V0IDEzNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM5MTYyOTAgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTczODIwOQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAxMzYuLi4KZW50cnkgImZvcm1hdHRlcnMiIGF0IGJsb2NrIDAgb2Zm c2V0IDE4NDAgaW4gZGlyZWN0b3J5IGlub2RlIDEzOTE2MjkwIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDE3MzgyMTMKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZz ZXQgMTg0MC4uLgplbnRyeSAiZ3RrIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzOTE2MzUxIHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3MzgyMTkKanVua2luZyBlbnRyeSAiZ3RrIiBp biBkaXJlY3RvcnkgaW5vZGUgMTM5MTYzNTEKZW50cnkgInRrIiBpbiBzaG9ydGZvcm0gZGlyZWN0 b3J5IDEzOTE2MzUxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3MzgyMjEKanVua2lu ZyBlbnRyeSAidGsiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzkxNjM1MQplbnRyeSAiZW5jb2Rpbmdz dHlsZSIgYXQgYmxvY2sgMCBvZmZzZXQgODggaW4gZGlyZWN0b3J5IGlub2RlIDEzOTE3OTI0IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3MzgyMjUKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgODguLi4KZW50cnkgInNlc3Npb24iIGluIHNob3J0Zm9ybSBk aXJlY3RvcnkgMTM5MTgwMTggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTczODIzOQpq dW5raW5nIGVudHJ5ICJzZXNzaW9uIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM5MTgwMTgKZW50cnkg ImNvbnRlbnQiIGF0IGJsb2NrIDAgb2Zmc2V0IDc3NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM5MTgw MjQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTczODI0MQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA3NzYuLi4KZW50cnkgInhtbHBhcnNlciIgYXQgYmxv Y2sgMCBvZmZzZXQgMzc2IGluIGRpcmVjdG9yeSBpbm9kZSAxMzkxODA2MyByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxNzM4MjQ0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDM3Ni4uLgplbnRyeSAiaHR0cGF1dGgiIGF0IGJsb2NrIDAgb2Zmc2V0IDg3MiBp biBkaXJlY3RvcnkgaW5vZGUgMTM5MTgxNDQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTczODI0OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4NzIuLi4K ZW50cnkgImlvIiBhdCBibG9jayAwIG9mZnNldCA1MjAgaW4gZGlyZWN0b3J5IGlub2RlIDEzOTE4 MTY1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3MzgyNTcKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTIwLi4uCmVudHJ5ICJiaWdkZWNpbWFsIiBhdCBi bG9jayAwIG9mZnNldCAxNTIgaW4gZGlyZWN0b3J5IGlub2RlIDEzOTE4MTk4IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDE3MzgyNjAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgMTUyLi4uCmVudHJ5ICJwdHkiIGF0IGJsb2NrIDAgb2Zmc2V0IDU4NCBpbiBk aXJlY3RvcnkgaW5vZGUgMTM5MTgxOTggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTcz ODI2NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1ODQuLi4KZW50 cnkgImFvZSIgYXQgYmxvY2sgMCBvZmZzZXQgODcyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzkxODI2 MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTg3Mzg2CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDg3Mi4uLgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zm c2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzkxODI5NSByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxMjc2MzQ4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTM5MTgyOTUKZW50cnkgImphIiBpbiBz aG9ydGZvcm0gZGlyZWN0b3J5IDEzOTE4Njg4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2Rl IDE3MzgzMjEKanVua2luZyBlbnRyeSAiamEiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzkxODY4OApl bnRyeSAiQyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzkxODY4OCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxNzM4MzMyCmp1bmtpbmcgZW50cnkgIkMiIGluIGRpcmVjdG9yeSBpbm9k ZSAxMzkxODY4OAplbnRyeSAicnUiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTM5MTg2ODggcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTczODM3NQpqdW5raW5nIGVudHJ5ICJydSIgaW4g ZGlyZWN0b3J5IGlub2RlIDEzOTE4Njg4CmVudHJ5ICJwbCIgaW4gc2hvcnRmb3JtIGRpcmVjdG9y eSAxMzkxODY4OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNzM4Mzg2Cmp1bmtpbmcg ZW50cnkgInBsIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM5MTg2ODgKZW50cnkgIm5sIiBpbiBzaG9y dGZvcm0gZGlyZWN0b3J5IDEzOTE4Njg4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3 MzgzOTcKanVua2luZyBlbnRyeSAibmwiIGluIGRpcmVjdG9yeSBpbm9kZSAxMzkxODY4OAplbnRy eSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzkxODk0NCBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTg3Mzk1CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTM5 MTg5NDQKZW50cnkgImlwd2lyZWxlc3MiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTM5MTg5NTYg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjc3NjcwMgpqdW5raW5nIGVudHJ5ICJpcHdp cmVsZXNzIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM5MTg5NTYKZW50cnkgImdvdmVybm9ycyIgYXQg YmxvY2sgMCBvZmZzZXQgMjE2IGluIGRpcmVjdG9yeSBpbm9kZSAxMzkxODk3MiByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAyNzc2NzIwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDIxNi4uLgplbnRyeSAibG0iIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTM5 MTkxMzUgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTczODUxNQpqdW5raW5nIGVudHJ5 ICJsbSIgaW4gZGlyZWN0b3J5IGlub2RlIDEzOTE5MTM1CmVudHJ5ICJsbSIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSAxMzkxOTEzOCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNzM4NTMx Cmp1bmtpbmcgZW50cnkgImxtIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM5MTkxMzgKZW50cnkgInB1 YmxpYyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzkxOTE1NyByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxNzQwMzIwCmp1bmtpbmcgZW50cnkgInB1YmxpYyIgaW4gZGlyZWN0b3J5IGlu b2RlIDEzOTE5MTU3CmVudHJ5ICJsbSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxMzkxOTE1OSBy ZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNzQwMzIxCmp1bmtpbmcgZW50cnkgImxtIiBp biBkaXJlY3RvcnkgaW5vZGUgMTM5MTkxNTkKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAz MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM5NTY2NTcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTczODUwNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4u LgplbnRyeSAiZmkiIGF0IGJsb2NrIDAgb2Zmc2V0IDcyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzk1 NjY1NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODA5NzQzCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDcyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3Rv cnkgMTM5NTY2NTcKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTM5NTY2NzYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTczODUwNwoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBm b3IgZGlyZWN0b3J5IDEzOTU2Njc2CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4g ZGlyZWN0b3J5IGlub2RlIDEzOTU4MjY4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE3 Mzg1MDcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8g Li4gZW50cnkgZm9yIGRpcmVjdG9yeSAxMzk1ODI2OAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zm c2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxMzk1OTA3MyByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxNzM4NTA3CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0 IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTM5NTkwNzMKZW50cnkgIi4uIiBhdCBi bG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM5NTkwOTYgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTczODUwNwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAzMi4uLgplbnRyeSAiZmEiIGF0IGJsb2NrIDAgb2Zmc2V0IDQ5NiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTM5NTkwOTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTgwOTgz OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0OTYuLi4KZW50cnkg ImV1IiBhdCBibG9jayAwIG9mZnNldCA1MTIgaW4gZGlyZWN0b3J5IGlub2RlIDEzOTU5MDk2IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4MDk4NTUKCWNsZWFyaW5nIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgNTEyLi4uCmVudHJ5ICJpdCIgYXQgYmxvY2sgMCBvZmZzZXQg MTQ4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTM5NTkwOTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMTgwOTg0MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAx NDg4Li4uCmVudHJ5ICJlcyIgYXQgYmxvY2sgMCBvZmZzZXQgMjgxNiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTM5NTkwOTYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTgwOTg0MwoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyODE2Li4uCmVudHJ5ICJubCIgYXQg YmxvY2sgMCBvZmZzZXQgMzQyNCBpbiBkaXJlY3RvcnkgaW5vZGUgMTM5NTkwOTYgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTgwOTg0OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVu dHJ5IGF0IG9mZnNldCAzNDI0Li4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTM5NTkwOTYK ZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM5NTky NTIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTczODUwNwoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgplbnRyeSAic3YiIGF0IGJsb2NrIDAgb2Zm c2V0IDEyOCBpbiBkaXJlY3RvcnkgaW5vZGUgMTM5NTkyNTIgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMTgwOTg2MQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAxMjguLi4KZW50cnkgInVrIiBhdCBibG9jayAwIG9mZnNldCAzMDQgaW4gZGlyZWN0b3J5IGlu b2RlIDEzOTU5MjUyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4MDk4NjQKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzA0Li4uCmVudHJ5ICJjbGlwYXJ0 IiBhdCBibG9jayAwIG9mZnNldCA0OTYgaW4gZGlyZWN0b3J5IGlub2RlIDEzOTU5MjUyIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4MDk4NjYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgNDk2Li4uCmVudHJ5ICJwdCIgYXQgYmxvY2sgMCBvZmZzZXQgNzUy IGluIGRpcmVjdG9yeSBpbm9kZSAxMzk1OTI1MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxODA5OTI4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDc1Mi4u LgplbnRyeSAicGwiIGF0IGJsb2NrIDAgb2Zmc2V0IDEyNzIgaW4gZGlyZWN0b3J5IGlub2RlIDEz OTU5MjUyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4MDk5NDMKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTI3Mi4uLgplbnRyeSAicm8iIGF0IGJsb2Nr IDAgb2Zmc2V0IDE2MzIgaW4gZGlyZWN0b3J5IGlub2RlIDEzOTU5MjUyIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDE4MDk5NDcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBh dCBvZmZzZXQgMTYzMi4uLgplbnRyeSAiZGEiIGF0IGJsb2NrIDAgb2Zmc2V0IDE4NzIgaW4gZGly ZWN0b3J5IGlub2RlIDEzOTU5MjUyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4MDk5 NDkKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMTg3Mi4uLgpubyAu LiBlbnRyeSBmb3IgZGlyZWN0b3J5IDEzOTU5MjUyCmVudHJ5ICJjbGlwYXJ0IiBhdCBibG9jayAw IG9mZnNldCAyNTYgaW4gZGlyZWN0b3J5IGlub2RlIDEzOTU5MjkwIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDE4MDk5MzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMjU2Li4uCmVudHJ5ICJwbHVnaW5zIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDEzOTU5 NDY0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4MDk5NjMKanVua2luZyBlbnRyeSAi cGx1Z2lucyIgaW4gZGlyZWN0b3J5IGlub2RlIDEzOTU5NDY0CmVudHJ5ICJkaWN0cyIgaW4gc2hv cnRmb3JtIGRpcmVjdG9yeSAxMzk1OTQ3NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAx ODA5OTY2Cmp1bmtpbmcgZW50cnkgImRpY3RzIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTM5NTk0NzYK ZW50cnkgImVuZ2luZXMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTM5NTk0ODcgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMTgwOTk4MApqdW5raW5nIGVudHJ5ICJlbmdpbmVzIiBpbiBk aXJlY3RvcnkgaW5vZGUgMTM5NTk0ODcKZW50cnkgImZpcm13YXJlX2NsYXNzIiBpbiBzaG9ydGZv cm0gZGlyZWN0b3J5IDE0MDUxMDEyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIxNTM1 MjQKanVua2luZyBlbnRyeSAiZmlybXdhcmVfY2xhc3MiIGluIGRpcmVjdG9yeSBpbm9kZSAxNDA1 MTAxMgplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAx NDA1MTAxOSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMTUzNTI3CgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJseGRpYWxvZyIgYXQg YmxvY2sgMCBvZmZzZXQgNzIwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDA1MTAxOSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAyMjQ4MDA2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDcyMC4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDE0MDUxMDE5CmVu dHJ5ICJpbmNsdWRlIiBhdCBibG9jayAwIG9mZnNldCAzNTIgaW4gZGlyZWN0b3J5IGlub2RlIDE0 MDUxMDg0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIyNTcxNTMKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzUyLi4uCmVudHJ5ICIuLiIgYXQgYmxvY2sg MCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0MDUxMDk4IHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDIwOTc1MzYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBv ZmZzZXQgMzIuLi4KZW50cnkgImFvYSIgYXQgYmxvY2sgMCBvZmZzZXQgMjAwIGluIGRpcmVjdG9y eSBpbm9kZSAxNDA1MTA5OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMjU3MTcyCglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDIwMC4uLgplbnRyeSAiaXNh IiBhdCBibG9jayAwIG9mZnNldCAyODggaW4gZGlyZWN0b3J5IGlub2RlIDE0MDUxMDk4IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIyNTcyMDgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMjg4Li4uCmVudHJ5ICJwYXJpc2MiIGF0IGJsb2NrIDAgb2Zmc2V0 IDMzNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQwNTEwOTggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjI3NTc2MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz MzYuLi4KZW50cnkgInNvYyIgYXQgYmxvY2sgMCBvZmZzZXQgNDMyIGluIGRpcmVjdG9yeSBpbm9k ZSAxNDA1MTA5OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMzA1MDEzCgljbGVhcmlu ZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQzMi4uLgpubyAuLiBlbnRyeSBmb3Ig ZGlyZWN0b3J5IDE0MDUxMDk4CmVudHJ5ICJvc3MiIGF0IGJsb2NrIDAgb2Zmc2V0IDc5MiBpbiBk aXJlY3RvcnkgaW5vZGUgMTQwNTExMDkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjI1 NzE4MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA3OTIuLi4KZW50 cnkgIm1wdTQwMSIgYXQgYmxvY2sgMCBvZmZzZXQgMzQ0IGluIGRpcmVjdG9yeSBpbm9kZSAxNDA1 MTE3MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMjU3MTk1CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM0NC4uLgplbnRyeSAidngiIGF0IGJsb2NrIDAg b2Zmc2V0IDQxNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQwNTExNzIgcmVmZXJlbmNlcyBub24tZXhp c3RlbnQgaW5vZGUgMjI1NzE5OQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9m ZnNldCA0MTYuLi4KZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQwNTEyMDYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjI1NzIwOAoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBm b3IgZGlyZWN0b3J5IDE0MDUxMjA2CmVudHJ5ICJwZGF1ZGlvY2YiIGluIHNob3J0Zm9ybSBkaXJl Y3RvcnkgMTQwNTEzMDMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjMwNTAwNgpqdW5r aW5nIGVudHJ5ICJwZGF1ZGlvY2YiIGluIGRpcmVjdG9yeSBpbm9kZSAxNDA1MTMwMwplbnRyeSAi Li4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDA1MTMxOSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMzA1MDEzCgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTQwNTEz MTkKZW50cnkgImVtdXgiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTQwNTEzNjYgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgMjMwNTA2NQpqdW5raW5nIGVudHJ5ICJlbXV4IiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTQwNTEzNjYKZW50cnkgInpvbmVpbmZvIiBpbiBzaG9ydGZvcm0gZGlyZWN0 b3J5IDE0MDU5ODQ3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NTA0ODgKanVua2lu ZyBlbnRyeSAiem9uZWluZm8iIGluIGRpcmVjdG9yeSBpbm9kZSAxNDA1OTg0NwplbnRyeSAiLi4i IGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDA1OTg0OCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODUwNDg4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJJbmRpYW5hIiBhdCBibG9jayAwIG9mZnNldCAx NTkyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDA1OTg0OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxODUwNDg5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDE1 OTIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxNDA1OTg0OAplbnRyeSAiLi4iIGF0IGJs b2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDA1OTk5OCByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxODUwNDg4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTQwNTk5OTgKZW50cnkg Ii4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQwNjAwMTAgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg1MDQ4OAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDE0MDYw MDEwCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0 MDYwMDIxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NTA0ODgKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVj dG9yeSAxNDA2MDAyMQplbnRyeSAiaW1hZ2VzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDE0MDYw MTM4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NTA1ODAKanVua2luZyBlbnRyeSAi aW1hZ2VzIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQwNjAxMzgKZW50cnkgInhmY2U0IiBpbiBzaG9y dGZvcm0gZGlyZWN0b3J5IDE0MDYwMTgyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4 NTA2ODEKanVua2luZyBlbnRyeSAieGZjZTQiIGluIGRpcmVjdG9yeSBpbm9kZSAxNDA2MDE4Mgpl bnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDA2MDI1 OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDk5MTE4CgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3Rvcnkg MTQwNjAyNTkKZW50cnkgIm11bHRpZG8iIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTQwNjAyNzIg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg1MDcwMgpqdW5raW5nIGVudHJ5ICJtdWx0 aWRvIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQwNjAyNzIKZW50cnkgInBvbGlncmFmIiBpbiBzaG9y dGZvcm0gZGlyZWN0b3J5IDE0MDYwMjczIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4 NTA2OTcKanVua2luZyBlbnRyeSAicG9saWdyYWYiIGluIGRpcmVjdG9yeSBpbm9kZSAxNDA2MDI3 MwplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDA2 MDYwNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxNDk5MTE4CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3Rv cnkgMTQwNjA2MDcKZW50cnkgImR0ZHMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTQwNjExNTkg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg1MDk2NApqdW5raW5nIGVudHJ5ICJkdGRz IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQwNjExNTkKZW50cnkgImRvYyIgaW4gc2hvcnRmb3JtIGRp cmVjdG9yeSAxNDA2MTE2MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODUwOTg4Cmp1 bmtpbmcgZW50cnkgImRvYyIgaW4gZGlyZWN0b3J5IGlub2RlIDE0MDYxMTYwCmVudHJ5ICJlcyIg YXQgYmxvY2sgMCBvZmZzZXQgNzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0MDYxMTYxIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NTA5NjgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgNzIuLi4KZW50cnkgIm5vIiBhdCBibG9jayAwIG9mZnNldCAyNDAgaW4g ZGlyZWN0b3J5IGlub2RlIDE0MDYxMTYxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4 NTA5NzAKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMjQwLi4uCmVu dHJ5ICJzbCIgYXQgYmxvY2sgMCBvZmZzZXQgNDAwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDA2MTE2 MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODUwOTcyCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDQwMC4uLgplbnRyeSAic3JATGF0biIgYXQgYmxvY2sg MCBvZmZzZXQgNTY4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDA2MTE2MSByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxODUwOTc0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDU2OC4uLgplbnRyeSAibm4iIGF0IGJsb2NrIDAgb2Zmc2V0IDczNiBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQwNjExNjEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg1MDk3NgoJ Y2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA3MzYuLi4KZW50cnkgImN5 IiBhdCBibG9jayAwIG9mZnNldCA4OTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0MDYxMTYxIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NTA5NzgKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgODk2Li4uCmVudHJ5ICJqYSIgYXQgYmxvY2sgMCBvZmZzZXQgMTA1 NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQwNjExNjEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5v ZGUgMTg1MDk4MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMDU2 Li4uCmVudHJ5ICJzciIgYXQgYmxvY2sgMCBvZmZzZXQgMTIyNCBpbiBkaXJlY3RvcnkgaW5vZGUg MTQwNjExNjEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg1MDk4MgoJY2xlYXJpbmcg aW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMjI0Li4uCmVudHJ5ICJ3YSIgYXQgYmxv Y2sgMCBvZmZzZXQgMTM5MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQwNjExNjEgcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTg1MDk4NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCAxMzkyLi4uCmVudHJ5ICJwdF9CUiIgYXQgYmxvY2sgMCBvZmZzZXQgMTU2MCBp biBkaXJlY3RvcnkgaW5vZGUgMTQwNjExNjEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTg1MDk4NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNTYwLi4u CmVudHJ5ICJtc2djYXQxLjMiIGF0IGJsb2NrIDAgb2Zmc2V0IDQxNiBpbiBkaXJlY3RvcnkgaW5v ZGUgMTQwNjEzMTcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg1MTAwMgoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MTYuLi4KZW50cnkgInRjbHRlc3Qy LjIiIGF0IGJsb2NrIDAgb2Zmc2V0IDg2NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQwNjEzMTcgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg1MTAwNQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCA4NjQuLi4KZW50cnkgImR2aXBzIiBhdCBibG9jayAwIG9mZnNl dCAxMzYgaW4gZGlyZWN0b3J5IGlub2RlIDE0MDg0MDA3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE4NjkxODQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MTM2Li4uCmVudHJ5ICJ3ZWIyYyIgYXQgYmxvY2sgMCBvZmZzZXQgMzI4IGluIGRpcmVjdG9yeSBp bm9kZSAxNDA4NDAwNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODY5MTg3CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyOC4uLgplbnRyeSAiYXVyb3Jh IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDE0MDg0MTc4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDE5MDM5MDIKanVua2luZyBlbnRyeSAiYXVyb3JhIiBpbiBkaXJlY3RvcnkgaW5vZGUg MTQwODQxNzgKZW50cnkgInBsYWluIiBhdCBibG9jayAwIG9mZnNldCA4MCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQwODQzMjEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg2OTIyMwoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA4MC4uLgplbnRyeSAidHBpYzJw ZGZ0ZXgiIGF0IGJsb2NrIDAgb2Zmc2V0IDI0MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQwODQzMjEg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg2OTIyNAoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNDAuLi4KZW50cnkgInRpbWVzIiBpbiBzaG9ydGZvcm0g ZGlyZWN0b3J5IDE0MDg0NTg4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NjkyOTgK anVua2luZyBlbnRyeSAidGltZXMiIGluIGRpcmVjdG9yeSBpbm9kZSAxNDA4NDU4OAplbnRyeSAi bWFydm9zeW0iIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTQwODQ1ODkgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTg2OTMwNwpqdW5raW5nIGVudHJ5ICJtYXJ2b3N5bSIgaW4gZGlyZWN0 b3J5IGlub2RlIDE0MDg0NTg5CmVudHJ5ICJ3YXN5IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDE0 MDg0NTg5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NjkzMDkKanVua2luZyBlbnRy eSAid2FzeSIgaW4gZGlyZWN0b3J5IGlub2RlIDE0MDg0NTg5CmVudHJ5ICJ6YXBmY2hhbiIgYXQg YmxvY2sgMCBvZmZzZXQgODAgaW4gZGlyZWN0b3J5IGlub2RlIDE0MDg0NzEzIHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDE4NjkzMTcKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRy eSBhdCBvZmZzZXQgODAuLi4KZW50cnkgImJvb2ttYW4iIGF0IGJsb2NrIDAgb2Zmc2V0IDI5NiBp biBkaXJlY3RvcnkgaW5vZGUgMTQwODQ3MTMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTg2OTMxOQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyOTYuLi4K ZW50cnkgInphcGZkaW5nIiBhdCBibG9jayAwIG9mZnNldCA1MjAgaW4gZGlyZWN0b3J5IGlub2Rl IDE0MDg0NzEzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NjkzMjQKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNTIwLi4uCmVudHJ5ICJ6YXBmY2hhbiIg aW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxNDA4NDc3OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxODY5MzI2Cmp1bmtpbmcgZW50cnkgInphcGZjaGFuIiBpbiBkaXJlY3RvcnkgaW5vZGUg MTQwODQ3NzgKZW50cnkgImJvb2ttYW4iIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTQwODQ3Nzgg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg2OTMyOApqdW5raW5nIGVudHJ5ICJib29r bWFuIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQwODQ3NzgKZW50cnkgInphcGZkaW5nIiBpbiBzaG9y dGZvcm0gZGlyZWN0b3J5IDE0MDg0Nzc4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4 NjkzMzcKanVua2luZyBlbnRyeSAiemFwZmRpbmciIGluIGRpcmVjdG9yeSBpbm9kZSAxNDA4NDc3 OAplbnRyeSAiY2hhcnRlciIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxNDA4NDk1MyByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODY5MzY2Cmp1bmtpbmcgZW50cnkgImNoYXJ0ZXIiIGlu IGRpcmVjdG9yeSBpbm9kZSAxNDA4NDk1MwplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMy IGluIGRpcmVjdG9yeSBpbm9kZSAxNDA4NDk3NSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAxODY5MzcxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4u Cm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTQwODQ5NzUKZW50cnkgImNvdXJpZXIiIGluIHNo b3J0Zm9ybSBkaXJlY3RvcnkgMTQwODUxNDYgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUg MTg2OTQzMQpqdW5raW5nIGVudHJ5ICJjb3VyaWVyIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQwODUx NDYKZW50cnkgImhlbHZldGljIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDE0MDg1MTgwIHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4Njk0NjAKanVua2luZyBlbnRyeSAiaGVsdmV0aWMi IGluIGRpcmVjdG9yeSBpbm9kZSAxNDA4NTE4MAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0 IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDA4NTQyMSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAxODY5NTY2CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMy Li4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTQwODU0MjEKZW50cnkgIi4uIiBhdCBibG9j ayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQwODU0NTIgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTg2OTU2NgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDE0MDg1NDUyCmVudHJ5ICIu LiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0MDg1NTM1IHJlZmVy ZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4Njk1NjYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxNDA4NTUz NQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDA4 NTU1OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODY5NTY2CgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3Rv cnkgMTQwODU1NTgKZW50cnkgInRpbWVzbmV3IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDE0MDg1 NjI2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4Njk2NjMKanVua2luZyBlbnRyeSAi dGltZXNuZXciIGluIGRpcmVjdG9yeSBpbm9kZSAxNDA4NTYyNgplbnRyeSAiLi4iIGF0IGJsb2Nr IDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDA4NTYyNyByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxNDY0NTczCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTQwODU2MjcKZW50cnkgIi4u IiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQwODU2NzYgcmVmZXJl bmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTQ2NDU3MwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGlu IGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDE0MDg1Njc2 CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0MDg1 NzcxIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE0NjQ1NzMKCWNsZWFyaW5nIGlub2Rl IG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9y eSAxNDA4NTc3MQplbnRyeSAidGltZXMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTQwODU3OTIg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg2OTk2MQpqdW5raW5nIGVudHJ5ICJ0aW1l cyIgaW4gZGlyZWN0b3J5IGlub2RlIDE0MDg1NzkyCmVudHJ5ICJuY250cnNiayIgaW4gc2hvcnRm b3JtIGRpcmVjdG9yeSAxNDA4NTc5MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxODcw MDI2Cmp1bmtpbmcgZW50cnkgIm5jbnRyc2JrIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQwODU3OTMK ZW50cnkgImF2YW50Z2FyIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDE0MDg1NzkzIHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NzAwMzgKanVua2luZyBlbnRyeSAiYXZhbnRnYXIiIGlu IGRpcmVjdG9yeSBpbm9kZSAxNDA4NTc5MwplbnRyeSAic3ltYm9sIiBpbiBzaG9ydGZvcm0gZGly ZWN0b3J5IDE0MDg1NzkzIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE4NzAwNDUKanVu a2luZyBlbnRyeSAic3ltYm9sIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQwODU3OTMKZW50cnkgInph cGZjaGFuIiBhdCBibG9jayAwIG9mZnNldCA4MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQwODYyMTEg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg3MDE3NQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCA4MC4uLgplbnRyeSAiYm9va21hbiIgYXQgYmxvY2sgMCBv ZmZzZXQgMjk2IGluIGRpcmVjdG9yeSBpbm9kZSAxNDA4NjIxMSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxODcwMTgxCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDI5Ni4uLgplbnRyeSAiemFwZmRpbmciIGF0IGJsb2NrIDAgb2Zmc2V0IDUyMCBpbiBkaXJl Y3RvcnkgaW5vZGUgMTQwODYyMTEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTg3MDIy MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA1MjAuLi4KZW50cnkg Im10cGFwZXIiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTQxMTU4MTEgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTkwMzg4MApqdW5raW5nIGVudHJ5ICJtdHBhcGVyIiBpbiBkaXJlY3Rv cnkgaW5vZGUgMTQxMTU4MTEKZW50cnkgImZsdHBvaW50IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5 IDE0MTE1ODE5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5MDM4ODYKanVua2luZyBl bnRyeSAiZmx0cG9pbnQiIGluIGRpcmVjdG9yeSBpbm9kZSAxNDExNTgxOQplbnRyeSAiLi4iIGF0 IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDExNTgzNSByZWZlcmVuY2Vz IG5vbi1leGlzdGVudCBpbm9kZSAxOTAzODg5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTQxMTU4MzUKZW50 cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQxMTU4NjEg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwMzg4OQoJY2xlYXJpbmcgaW5vZGUgbnVt YmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDE0 MTE1ODYxCmVudHJ5ICJTdHlsZXMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTQxNjAxODggcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNDIwMApqdW5raW5nIGVudHJ5ICJTdHlsZXMi IGluIGRpcmVjdG9yeSBpbm9kZSAxNDE2MDE4OAplbnRyeSAieG1scGxheSIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSAxNDE2MTE2MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxOTA0NzU5 Cmp1bmtpbmcgZW50cnkgInhtbHBsYXkiIGluIGRpcmVjdG9yeSBpbm9kZSAxNDE2MTE2MgplbnRy eSAidGlwYSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxNDE2MTk4MCByZWZlcmVuY2VzIG5vbi1l eGlzdGVudCBpbm9kZSAxOTA0NzkwCmp1bmtpbmcgZW50cnkgInRpcGEiIGluIGRpcmVjdG9yeSBp bm9kZSAxNDE2MTk4MAplbnRyeSAiVHJ1ZVR5cGUiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTQx NjIxMTggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTkwNTAxMApqdW5raW5nIGVudHJ5 ICJUcnVlVHlwZSIgaW4gZGlyZWN0b3J5IGlub2RlIDE0MTYyMTE4CmVudHJ5ICIuLiIgYXQgYmxv Y2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0MTYyMzI4IHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDEzNDY4MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDE0MTYyMzI4CmVudHJ5ICJp NDg2LWxpbnV4IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDE0MTYzMjcxIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDIwNTg5MjIKanVua2luZyBlbnRyeSAiaTQ4Ni1saW51eCIgaW4gZGly ZWN0b3J5IGlub2RlIDE0MTYzMjcxCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4g ZGlyZWN0b3J5IGlub2RlIDE0MTYzMzA3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEz NTUwMDQKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8g Li4gZW50cnkgZm9yIGRpcmVjdG9yeSAxNDE2MzMwNwplbnRyeSAiZ2VvbWV0cnkiIGF0IGJsb2Nr IDAgb2Zmc2V0IDE5MiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQyNDkyODEgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTk1MDY4NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAxOTIuLi4KZW50cnkgInN5bWJvbHMiIGF0IGJsb2NrIDAgb2Zmc2V0IDY5NiBpbiBk aXJlY3RvcnkgaW5vZGUgMTQyNDkyODEgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTk1 MDc2NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA2OTYuLi4KZW50 cnkgImRpZ2l0YWxfdm5kciIgYXQgYmxvY2sgMCBvZmZzZXQgODAgaW4gZGlyZWN0b3J5IGlub2Rl IDE0MjQ5MzA5IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NTA3MDgKCWNsZWFyaW5n IGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgODAuLi4KZW50cnkgInNnaV92bmRyIiBp biBzaG9ydGZvcm0gZGlyZWN0b3J5IDE0MjQ5NjEyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDE5NTA3MTEKanVua2luZyBlbnRyeSAic2dpX3ZuZHIiIGluIGRpcmVjdG9yeSBpbm9kZSAx NDI0OTYxMgplbnRyeSAiY29yZSIgYXQgYmxvY2sgMCBvZmZzZXQgNzIgaW4gZGlyZWN0b3J5IGlu b2RlIDE0MjUwMzE1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NTA5NjAKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgNzIuLi4KZW50cnkgImlucHV0IiBh dCBibG9jayAwIG9mZnNldCAyNjQgaW4gZGlyZWN0b3J5IGlub2RlIDE0MjUwMzE1IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDE5NTA5NjYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBl bnRyeSBhdCBvZmZzZXQgMjY0Li4uCmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4g ZGlyZWN0b3J5IGlub2RlIDE0MjUxMTY3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDQ4 OTg1NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAu LiBlbnRyeSBmb3IgZGlyZWN0b3J5IDE0MjUxMTY3CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZz ZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0MjUxMzQ3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDEzNDY4MgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAz Mi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDE0MjUxMzQ3CmVudHJ5ICIuLiIgYXQgYmxv Y2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0MzAyMzAyIHJlZmVyZW5jZXMgbm9u LWV4aXN0ZW50IGlub2RlIDEzNDU2NwoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0 IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDE0MzAyMzAyCmVudHJ5ICJm aWd1cmVzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDE0MzAyNDMyIHJlZmVyZW5jZXMgbm9uLWV4 aXN0ZW50IGlub2RlIDE5ODM0MTgKanVua2luZyBlbnRyeSAiZmlndXJlcyIgaW4gZGlyZWN0b3J5 IGlub2RlIDE0MzAyNDMyCmVudHJ5ICJmaWd1cmVzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDE0 MzAyNDQ2IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMzA4MjIKanVua2luZyBlbnRy eSAiZmlndXJlcyIgaW4gZGlyZWN0b3J5IGlub2RlIDE0MzAyNDQ2CmVudHJ5ICJmaWd1cmVzIiBp biBzaG9ydGZvcm0gZGlyZWN0b3J5IDE0MzAyNDYwIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDIwMzA4MzQKanVua2luZyBlbnRyeSAiZmlndXJlcyIgaW4gZGlyZWN0b3J5IGlub2RlIDE0 MzAyNDYwCmVudHJ5ICJmaWd1cmVzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDE0MzAyNDc0IHJl ZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIwMzA4NDYKanVua2luZyBlbnRyeSAiZmlndXJl cyIgaW4gZGlyZWN0b3J5IGlub2RlIDE0MzAyNDc0CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZz ZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0MzAyNDg4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50 IGlub2RlIDEyODc5MzEKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVjdG9yeSAxNDMwMjQ4OAplbnRyeSAiLi4iIGF0IGJs b2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDMwMjU2NSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAxMzU1MDA0CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkg YXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTQzMDI1NjUKZW50cnkg Ii4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQzMDI1NzUgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTM1NTAwNAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVy IGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5IDE0MzAy NTc1CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlub2RlIDE0 MzAyNjA4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEzNTUwMDQKCWNsZWFyaW5nIGlu b2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVj dG9yeSAxNDMwMjYwOAplbnRyeSAieGZjZTQiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTQzNTA3 ODkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjU4MzMwNgpqdW5raW5nIGVudHJ5ICJ4 ZmNlNCIgaW4gZGlyZWN0b3J5IGlub2RlIDE0MzUwNzg5CmVudHJ5ICJwYW5lbC1wbHVnaW5zIiBp biBzaG9ydGZvcm0gZGlyZWN0b3J5IDE0MzUwODE4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDI1ODMzMTcKanVua2luZyBlbnRyeSAicGFuZWwtcGx1Z2lucyIgaW4gZGlyZWN0b3J5IGlu b2RlIDE0MzUwODE4CmVudHJ5ICJwYW5lbC1wbHVnaW5zIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5 IDE0MzUwODIyIHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1ODMzMDgKanVua2luZyBl bnRyeSAicGFuZWwtcGx1Z2lucyIgaW4gZGlyZWN0b3J5IGlub2RlIDE0MzUwODIyCmVudHJ5ICJw YW5lbC1wbHVnaW5zIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDE0MzUwODU3IHJlZmVyZW5jZXMg bm9uLWV4aXN0ZW50IGlub2RlIDI1ODMzMjkKanVua2luZyBlbnRyeSAicGFuZWwtcGx1Z2lucyIg aW4gZGlyZWN0b3J5IGlub2RlIDE0MzUwODU3CmVudHJ5ICJ4ZmNlNCIgaW4gc2hvcnRmb3JtIGRp cmVjdG9yeSAxNDM1MDg2NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNTgzMzMyCmp1 bmtpbmcgZW50cnkgInhmY2U0IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQzNTA4NjcKZW50cnkgImF2 bSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxNDUyNjA5MyByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxMjk0NDgKanVua2luZyBlbnRyeSAiYXZtIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ1 MjYwOTMKZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUg MTQ1MjgzODQgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTI5MzUyCgljbGVhcmluZyBp bm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCmVudHJ5ICJiMmMyIiBhdCBibG9j ayAwIG9mZnNldCA5NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ1MjgzODQgcmVmZXJlbmNlcyBub24t ZXhpc3RlbnQgaW5vZGUgMTI5MzU1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQg b2Zmc2V0IDk2Li4uCmVudHJ5ICJkdmItdXNiIiBhdCBibG9jayAwIG9mZnNldCAxNzYgaW4gZGly ZWN0b3J5IGlub2RlIDE0NTI4Mzg0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDEyOTM3 NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxNzYuLi4KZW50cnkg InR0dXNiLWJ1ZGdldCIgYXQgYmxvY2sgMCBvZmZzZXQgMjY0IGluIGRpcmVjdG9yeSBpbm9kZSAx NDUyODM4NCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSA3NDcwOAoJY2xlYXJpbmcgaW5v ZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjQuLi4Kbm8gLi4gZW50cnkgZm9yIGRpcmVj dG9yeSAxNDUyODM4NAplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9y eSBpbm9kZSAxNDUyODQzNSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMjkzNTIKCWNs ZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4KZW50cnkgImF1MDgy OCIgYXQgYmxvY2sgMCBvZmZzZXQgMzUxMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ1Mjg0MzUgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgNzQ3MTIKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzUxMi4uLgplbnRyeSAiY3gyMzg4NSIgYXQgYmxvY2sgMCBvZmZz ZXQgMzU4NCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ1Mjg0MzUgcmVmZXJlbmNlcyBub24tZXhpc3Rl bnQgaW5vZGUgMjU5ODYKCWNsZWFyaW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQg MzU4NC4uLgplbnRyeSAiZXQ2MXgyNTEiIGF0IGJsb2NrIDAgb2Zmc2V0IDM2NzIgaW4gZGlyZWN0 b3J5IGlub2RlIDE0NTI4NDM1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI1OTk4Cglj bGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDM2NzIuLi4KZW50cnkgInB3 YyIgYXQgYmxvY2sgMCBvZmZzZXQgMzc2MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ1Mjg0MzUgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjYwMDUKCWNsZWFyaW5nIGlub2RlIG51bWJlciBp biBlbnRyeSBhdCBvZmZzZXQgMzc2MC4uLgplbnRyeSAidXNidmlzaW9uIiBhdCBibG9jayAwIG9m ZnNldCAzODQ4IGluIGRpcmVjdG9yeSBpbm9kZSAxNDUyODQzNSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAyNjAyNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCAzODQ4Li4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTQ1Mjg0MzUKZW50cnkgImVtYmxl bXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDgwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDUzMjQzNyByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODYyNzU2CgljbGVhcmluZyBpbm9kZSBudW1iZXIg aW4gZW50cnkgYXQgb2Zmc2V0IDgwLi4uCmVudHJ5ICJzdGF0dXMiIGF0IGJsb2NrIDAgb2Zmc2V0 IDI4OCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ1MzI0MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQg aW5vZGUgMjg2Mjc3NAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAy ODguLi4KZW50cnkgImVtb3RlcyIgYXQgYmxvY2sgMCBvZmZzZXQgNTEyIGluIGRpcmVjdG9yeSBp bm9kZSAxNDUzMjQzNyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODYyODU4CgljbGVh cmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDUxMi4uLgplbnRyeSAibGFuZyIg aW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxNDU0MzM5MSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBp bm9kZSAyNzc2MzQ4Cmp1bmtpbmcgZW50cnkgImxhbmciIGluIGRpcmVjdG9yeSBpbm9kZSAxNDU0 MzM5MQplbnRyeSAiY29yZSIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxNDY2NDI1NSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAyNjAzNQpqdW5raW5nIGVudHJ5ICJjb3JlIiBpbiBkaXJl Y3RvcnkgaW5vZGUgMTQ2NjQyNTUKZW50cnkgImxzaSIgYXQgYmxvY2sgMCBvZmZzZXQgNDA4IGlu IGRpcmVjdG9yeSBpbm9kZSAxNDY2NDI1OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAy NjA0MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA0MDguLi4KZW50 cnkgImhkcHVmdHJzIiBhdCBibG9jayAwIG9mZnNldCA2MTYgaW4gZGlyZWN0b3J5IGlub2RlIDE0 NjY0Mjc0IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIzNDYzCgljbGVhcmluZyBpbm9k ZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDYxNi4uLgplbnRyeSAiY2FyZCIgaW4gc2hvcnRm b3JtIGRpcmVjdG9yeSAxNDY2NDc4NiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyMzQ2 NwpqdW5raW5nIGVudHJ5ICJjYXJkIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ2NjQ3ODYKZW50cnkg ImNoaXBzIiBhdCBibG9jayAwIG9mZnNldCA2MDggaW4gZGlyZWN0b3J5IGlub2RlIDE0NjY0Nzg5 IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDIzNDc1CgljbGVhcmluZyBpbm9kZSBudW1i ZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDYwOC4uLgplbnRyeSAib25lbmFuZCIgYXQgYmxvY2sgMCBv ZmZzZXQgNjgwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDY2NDc4OSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAyMzQ5MAoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNl dCA2ODAuLi4KZW50cnkgIm1hbjEiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTQ2NjQ5NjIgcmVm ZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE5NTExMgpqdW5raW5nIGVudHJ5ICJtYW4xIiBp biBkaXJlY3RvcnkgaW5vZGUgMTQ2NjQ5NjIKZW50cnkgIm1hbjciIGluIHNob3J0Zm9ybSBkaXJl Y3RvcnkgMTQ2NjQ5NjMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE5NTExNwpqdW5r aW5nIGVudHJ5ICJtYW43IiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ2NjQ5NjMKZW50cnkgImV4YW1w bGVzIiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDE0NjY0OTgyIHJlZmVyZW5jZXMgbm9uLWV4aXN0 ZW50IGlub2RlIDExOTUxMTkKanVua2luZyBlbnRyeSAiZXhhbXBsZXMiIGluIGRpcmVjdG9yeSBp bm9kZSAxNDY2NDk4MgplbnRyeSAiZXhhbXBsZXMiIGF0IGJsb2NrIDAgb2Zmc2V0IDI2NCBpbiBk aXJlY3RvcnkgaW5vZGUgMTQ2NjUyODcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE5 NTEyNgoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAyNjQuLi4KZW50 cnkgIm1pc2MiIGF0IGJsb2NrIDAgb2Zmc2V0IDcyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDY2NTQx MCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTk1MTMwCgljbGVhcmluZyBpbm9kZSBu dW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDcyLi4uCmVudHJ5ICJ4ZW4iIGluIHNob3J0Zm9ybSBk aXJlY3RvcnkgMTQ2NjU0NTcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE5NTE1Mwpq dW5raW5nIGVudHJ5ICJ4ZW4iIGluIGRpcmVjdG9yeSBpbm9kZSAxNDY2NTQ1NwplbnRyeSAiWmxp YiIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxNDY2NTUxMyByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAxMTk1MjU4Cmp1bmtpbmcgZW50cnkgIlpsaWIiIGluIGRpcmVjdG9yeSBpbm9kZSAx NDY2NTUxMwplbnRyeSAiZXhhbXBsZXMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTQ2NjU1MTYg cmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE5NTI2MgpqdW5raW5nIGVudHJ5ICJleGFt cGxlcyIgaW4gZGlyZWN0b3J5IGlub2RlIDE0NjY1NTE2CmVudHJ5ICJVbmNvbXByZXNzIiBhdCBi bG9jayAwIG9mZnNldCA4MCBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ2NjU1MjggcmVmZXJlbmNlcyBu b24tZXhpc3RlbnQgaW5vZGUgMTE5NTI2NQoJY2xlYXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5 IGF0IG9mZnNldCA4MC4uLgplbnRyeSAiQ29tcHJlc3MiIGluIHNob3J0Zm9ybSBkaXJlY3Rvcnkg MTQ2NjU1NjMgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE5NTI3OQpqdW5raW5nIGVu dHJ5ICJDb21wcmVzcyIgaW4gZGlyZWN0b3J5IGlub2RlIDE0NjY1NTYzCmVudHJ5ICJpY29ucyIg YXQgYmxvY2sgMCBvZmZzZXQgMjgwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDY2NTg4OCByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTk1Mjg1CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDI4MC4uLgplbnRyeSAiUmVhbGl6ZSIgaW4gc2hvcnRmb3JtIGRpcmVj dG9yeSAxNDY2NjI5OCByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTk1MzAwCmp1bmtp bmcgZW50cnkgIlJlYWxpemUiIGluIGRpcmVjdG9yeSBpbm9kZSAxNDY2NjI5OAplbnRyeSAiLi4i IGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRpcmVjdG9yeSBpbm9kZSAxNDY2NjMzMSByZWZlcmVu Y2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTk1MzA5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4g ZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4uIGVudHJ5IGZvciBkaXJlY3RvcnkgMTQ2NjYzMzEK ZW50cnkgIi4uIiBhdCBibG9jayAwIG9mZnNldCAzMiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ2NjY2 MDggcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE5NTMwOQoJY2xlYXJpbmcgaW5vZGUg bnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAzMi4uLgpubyAuLiBlbnRyeSBmb3IgZGlyZWN0b3J5 IDE0NjY2NjA4CmVudHJ5ICIuLiIgYXQgYmxvY2sgMCBvZmZzZXQgMzIgaW4gZGlyZWN0b3J5IGlu b2RlIDE0NjY2NjI1IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDExOTUzMDkKCWNsZWFy aW5nIGlub2RlIG51bWJlciBpbiBlbnRyeSBhdCBvZmZzZXQgMzIuLi4Kbm8gLi4gZW50cnkgZm9y IGRpcmVjdG9yeSAxNDY2NjYyNQplbnRyeSAiLi4iIGF0IGJsb2NrIDAgb2Zmc2V0IDMyIGluIGRp cmVjdG9yeSBpbm9kZSAxNDY2NjY0MiByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAxMTk1 MzA5CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zmc2V0IDMyLi4uCm5vIC4u IGVudHJ5IGZvciBkaXJlY3RvcnkgMTQ2NjY2NDIKZW50cnkgInNjcmlwdHMiIGF0IGJsb2NrIDAg b2Zmc2V0IDgwIGluIGRpcmVjdG9yeSBpbm9kZSAxNDY2NjcyMyByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAxMTk1NDMwCgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50cnkgYXQgb2Zm c2V0IDgwLi4uCmVudHJ5ICJhZGEiIGF0IGJsb2NrIDAgb2Zmc2V0IDEyOCBpbiBkaXJlY3Rvcnkg aW5vZGUgMTQ2NjcxMTIgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMTE5NTQ0MgoJY2xl YXJpbmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCAxMjguLi4KZW50cnkgImgiIGF0 IGJsb2NrIDAgb2Zmc2V0IDQxNiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ2ODEwNDMgcmVmZXJlbmNl cyBub24tZXhpc3RlbnQgaW5vZGUgOTEyMzE4CgljbGVhcmluZyBpbm9kZSBudW1iZXIgaW4gZW50 cnkgYXQgb2Zmc2V0IDQxNi4uLgplbnRyeSAiMjJ4MjIiIGluIHNob3J0Zm9ybSBkaXJlY3Rvcnkg MTQ5NjUzMTkgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg2NDc3OApqdW5raW5nIGVu dHJ5ICIyMngyMiIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OTY1MzE5CmVudHJ5ICIzMngzMiIgaW4g c2hvcnRmb3JtIGRpcmVjdG9yeSAxNDk2NTMxOSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyODY0Nzc5Cmp1bmtpbmcgZW50cnkgIjMyeDMyIiBpbiBkaXJlY3RvcnkgaW5vZGUgMTQ5NjUz MTkKZW50cnkgIjQ4eDQ4IiBpbiBzaG9ydGZvcm0gZGlyZWN0b3J5IDE0OTY1MzE5IHJlZmVyZW5j ZXMgbm9uLWV4aXN0ZW50IGlub2RlIDI4NjQ3ODAKanVua2luZyBlbnRyeSAiNDh4NDgiIGluIGRp cmVjdG9yeSBpbm9kZSAxNDk2NTMxOQplbnRyeSAiZmlndXJlcyIgaW4gc2hvcnRmb3JtIGRpcmVj dG9yeSAxNDk2NTM1MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODY0NzgzCmp1bmtp bmcgZW50cnkgImZpZ3VyZXMiIGluIGRpcmVjdG9yeSBpbm9kZSAxNDk2NTM1MwplbnRyeSAiZmln dXJlcyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxNDk2NTM1NSByZWZlcmVuY2VzIG5vbi1leGlz dGVudCBpbm9kZSAyODY0Nzg1Cmp1bmtpbmcgZW50cnkgImZpZ3VyZXMiIGluIGRpcmVjdG9yeSBp bm9kZSAxNDk2NTM1NQplbnRyeSAiZmlndXJlcyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxNDk2 NTM1NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODY0Nzg3Cmp1bmtpbmcgZW50cnkg ImZpZ3VyZXMiIGluIGRpcmVjdG9yeSBpbm9kZSAxNDk2NTM1NwplbnRyeSAiZmlndXJlcyIgaW4g c2hvcnRmb3JtIGRpcmVjdG9yeSAxNDk2NTM1OSByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9k ZSAyODY0Nzg5Cmp1bmtpbmcgZW50cnkgImZpZ3VyZXMiIGluIGRpcmVjdG9yeSBpbm9kZSAxNDk2 NTM1OQplbnRyeSAiZmlndXJlcyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxNDk2NTM2MSByZWZl cmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODY0NzkxCmp1bmtpbmcgZW50cnkgImZpZ3VyZXMi IGluIGRpcmVjdG9yeSBpbm9kZSAxNDk2NTM2MQplbnRyeSAiZmlndXJlcyIgaW4gc2hvcnRmb3Jt IGRpcmVjdG9yeSAxNDk2NTM2MyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODY0Nzkz Cmp1bmtpbmcgZW50cnkgImZpZ3VyZXMiIGluIGRpcmVjdG9yeSBpbm9kZSAxNDk2NTM2MwplbnRy eSAiZmlndXJlcyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxNDk2NTM2NSByZWZlcmVuY2VzIG5v bi1leGlzdGVudCBpbm9kZSAyODY0Nzk1Cmp1bmtpbmcgZW50cnkgImZpZ3VyZXMiIGluIGRpcmVj dG9yeSBpbm9kZSAxNDk2NTM2NQplbnRyeSAiZmlndXJlcyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9y eSAxNDk2NTM2NyByZWZlcmVuY2VzIG5vbi1leGlzdGVudCBpbm9kZSAyODY0Nzk3Cmp1bmtpbmcg ZW50cnkgImZpZ3VyZXMiIGluIGRpcmVjdG9yeSBpbm9kZSAxNDk2NTM2NwplbnRyeSAiZmlndXJl cyIgaW4gc2hvcnRmb3JtIGRpcmVjdG9yeSAxNDk2NTM3MCByZWZlcmVuY2VzIG5vbi1leGlzdGVu dCBpbm9kZSAyODY0Nzk5Cmp1bmtpbmcgZW50cnkgImZpZ3VyZXMiIGluIGRpcmVjdG9yeSBpbm9k ZSAxNDk2NTM3MAplbnRyeSAiTENfTUVTU0FHRVMiIGluIHNob3J0Zm9ybSBkaXJlY3RvcnkgMTQ5 Njc3MzcgcmVmZXJlbmNlcyBub24tZXhpc3RlbnQgaW5vZGUgMjg2NDc3NQpqdW5raW5nIGVudHJ5 ICJMQ19NRVNTQUdFUyIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OTY3NzM3CmVudHJ5ICJoZWxwIiBp biBzaG9ydGZvcm0gZGlyZWN0b3J5IDE0OTY3NzU4IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlu b2RlIDIwNjE4NjcKanVua2luZyBlbnRyeSAiaGVscCIgaW4gZGlyZWN0b3J5IGlub2RlIDE0OTY3 NzU4CmVudHJ5ICJob3RwbHVnIiBhdCBibG9jayAwIG9mZnNldCA3MjAgaW4gZGlyZWN0b3J5IGlu b2RlIDE1MDEyNjY3IHJlZmVyZW5jZXMgbm9uLWV4aXN0ZW50IGlub2RlIDkxMjY0MwoJY2xlYXJp bmcgaW5vZGUgbnVtYmVyIGluIGVudHJ5IGF0IG9mZnNldCA3MjAuLi4KUGhhc2UgNSAtIHJlYnVp bGQgQUcgaGVhZGVycyBhbmQgdHJlZXMuLi4KICAgICAgICAtIHJlc2V0IHN1cGVyYmxvY2suLi4K UGhhc2UgNiAtIGNoZWNrIGlub2RlIGNvbm5lY3Rpdml0eS4uLgogICAgICAgIC0gcmVzZXR0aW5n IGNvbnRlbnRzIG9mIHJlYWx0aW1lIGJpdG1hcCBhbmQgc3VtbWFyeSBpbm9kZXMKICAgICAgICAt IHRyYXZlcnNpbmcgZmlsZXN5c3RlbSAuLi4KYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBp bm9kZSAxMjggKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5 IGlub2RlIDEyOApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMiAobm8gZGF0 YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgMTMyCmJhZCBo YXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgMTM3IChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzcKYmFkIGhhc2ggdGFibGUgZm9yIGRp cmVjdG9yeSBpbm9kZSAxMzggKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcg ZGlyZWN0b3J5IGlub2RlIDEzOApyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDkKYmFkIGhh c2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSAxNTAgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxk aW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDE1MApiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDE1NSAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBk aXJlY3RvcnkgaW5vZGUgMTU1CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgMTU2 IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAx NTYKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSAxNjQgKG5vIGRhdGEgZW50cnkp OiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDE2NApiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE3MyAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVi dWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgMTczCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDQx OTQ0MzcKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDQxIChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA0MTk0NDQxCmJh ZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNDE5NDQ5MyAobm8gZGF0YSBlbnRyeSk6 IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNDE5NDQ5MwpiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDQyMTE3NTMgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxk aW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDQyMTE3NTMKYmFkIGhhc2ggdGFibGUgZm9y IGRpcmVjdG9yeSBpbm9kZSA0MjExODcyIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA0MjExODcyCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3Rv cnkgaW5vZGUgNDIxMTg5MCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBk aXJlY3RvcnkgaW5vZGUgNDIxMTg5MApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDQyMTIxNzEgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5 IGlub2RlIDQyMTIxNzEKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA0Mjk2OTc4 IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA0 Mjk2OTc4CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNDI5Njk5NiAobm8gZGF0 YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNDI5Njk5Ngpi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDQyOTcxNDggKG5vIGRhdGEgZW50cnkp OiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDQyOTcxNDgKcmVidWlsZGlu ZyBkaXJlY3RvcnkgaW5vZGUgNDI5NzE2MApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlu b2RlIDQyOTc1NzMgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0 b3J5IGlub2RlIDQyOTc1NzMKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA0Mjk4 NzkzIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9k ZSA0Mjk4NzkzCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNDMwMjE4MCAobm8g ZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNDMwMjE4 MApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDQzMzM0NDIgKG5vIGRhdGEgZW50 cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDQzMzM0NDIKYmFkIGhh c2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA0MzMzNDU1IChubyBkYXRhIGVudHJ5KTogcmVi dWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA0MzMzNDU1CmJhZCBoYXNoIHRhYmxl IGZvciBkaXJlY3RvcnkgaW5vZGUgNDMzMzQ5NCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcK cmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNDMzMzQ5NApiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDQzNTA5NzYgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRp bmcgZGlyZWN0b3J5IGlub2RlIDQzNTA5NzYKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBp bm9kZSA0MzUxMDQ2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVj dG9yeSBpbm9kZSA0MzUxMDQ2CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNDM1 MTA1OCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5v ZGUgNDM1MTA1OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDQzNTEwNzAgKG5v IGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDQzNTEw NzAKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA0MzUxMTU0IChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA0MzUxMTU0CmJhZCBo YXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNDM1MTE5OSAobm8gZGF0YSBlbnRyeSk6IHJl YnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNDM1MTE5OQpiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDQzNzcwMzggKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5n CnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDQzNzcwMzgKYmFkIGhhc2ggdGFibGUgZm9yIGRp cmVjdG9yeSBpbm9kZSA0NDIwMTMxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSA0NDIwMTMxCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3Rvcnkg aW5vZGUgNDQyMDE4MyAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJl Y3RvcnkgaW5vZGUgNDQyMDE4MwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDQ0 MjA1NzUgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlu b2RlIDQ0MjA1NzUKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA0NDIwNTc5IChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA0NDIw NTc5CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNDQyMDU4MyAobm8gZGF0YSBl bnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNDQyMDU4MwpiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDQ0MjA1ODcgKG5vIGRhdGEgZW50cnkpOiBy ZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDQ0MjA1ODcKYmFkIGhhc2ggdGFi bGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA0NDIwODgzIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA0NDIwODgzCmJhZCBoYXNoIHRhYmxlIGZvciBk aXJlY3RvcnkgaW5vZGUgNDQyMTQ4MCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWls ZGluZyBkaXJlY3RvcnkgaW5vZGUgNDQyMTQ4MApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDQ0MzUxMTMgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGly ZWN0b3J5IGlub2RlIDQ0MzUxMTMKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA0 NDQyMDU0IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSA0NDQyMDU0CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNDQ0MjE0NCAo bm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNDQ0 MjE0NApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDQ0NDIxNzcgKG5vIGRhdGEg ZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDQ0NDIxNzcKYmFk IGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA0NDQyODE5IChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA0NDQyODE5CmJhZCBoYXNoIHRh YmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNDQ0MjgzMiAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRp bmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNDQ0MjgzMgpiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDQ0NDI4NzEgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVp bGRpbmcgZGlyZWN0b3J5IGlub2RlIDQ0NDI4NzEKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9y eSBpbm9kZSA0NDQyOTE3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSA0NDQyOTE3CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUg NDQ0Mjk0MSAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3Rvcnkg aW5vZGUgNDQ0Mjk0MQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDQ0ODg4MTYg KG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDQ0 ODg4MTYKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA0NDk0NjM5IChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA0NDk0NjM5CmJh ZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNDUyNDkwOSAobm8gZGF0YSBlbnRyeSk6 IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNDUyNDkwOQpiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDQ1MjQ5NjQgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxk aW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDQ1MjQ5NjQKYmFkIGhhc2ggdGFibGUgZm9y IGRpcmVjdG9yeSBpbm9kZSA0NTM2NzYzIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA0NTM2NzYzCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3Rv cnkgaW5vZGUgNDU0NDk5NCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBk aXJlY3RvcnkgaW5vZGUgNDU0NDk5NApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDQ1NDUwNDEgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5 IGlub2RlIDQ1NDUwNDEKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA0NTQ1MTMw IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA0 NTQ1MTMwCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNDU0NTQ3MiAobm8gZGF0 YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNDU0NTQ3Mgpi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDQ1NDU1NjggKG5vIGRhdGEgZW50cnkp OiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDQ1NDU1NjgKYmFkIGhhc2gg dGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA0NjI1NDc3IChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA0NjI1NDc3CmJhZCBoYXNoIHRhYmxlIGZv ciBkaXJlY3RvcnkgaW5vZGUgNDYyNjg4OCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVi dWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNDYyNjg4OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0 b3J5IGlub2RlIDQ2MjcwMTQgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcg ZGlyZWN0b3J5IGlub2RlIDQ2MjcwMTQKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9k ZSA0NjI3Mzg2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9y eSBpbm9kZSA0NjI3Mzg2CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNDY4NDE5 NyAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUg NDY4NDE5NwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDQ2ODQyNzYgKG5vIGRh dGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDQ2ODQyNzYK YmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA0Njg0Njg0IChubyBkYXRhIGVudHJ5 KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA0Njg0Njg0CmJhZCBoYXNo IHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNDcwNjg2NiAobm8gZGF0YSBlbnRyeSk6IHJlYnVp bGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNDcwNjg2NgpiYWQgaGFzaCB0YWJsZSBm b3IgZGlyZWN0b3J5IGlub2RlIDQ3MDkzNjggKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJl YnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDQ3MDkzNjgKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVj dG9yeSBpbm9kZSA0NzA5MzgwIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5n IGRpcmVjdG9yeSBpbm9kZSA0NzA5MzgwCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDQ3MDk1 MTgKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA0NzExMDM4IChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA0NzExMDM4CmJhZCBo YXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNDcxNjE0NCAobm8gZGF0YSBlbnRyeSk6IHJl YnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNDcxNjE0NApiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDQ3MTYxOTkgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5n CnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDQ3MTYxOTkKYmFkIGhhc2ggdGFibGUgZm9yIGRp cmVjdG9yeSBpbm9kZSA0Nzk0NjA5IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSA0Nzk0NjA5CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3Rvcnkg aW5vZGUgNDc5NDYzNCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJl Y3RvcnkgaW5vZGUgNDc5NDYzNApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDQ3 OTQ5NTQgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlu b2RlIDQ3OTQ5NTQKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA0ODEzNzM2IChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA0ODEz NzM2CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNDgxMzc3OSAobm8gZGF0YSBl bnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNDgxMzc3OQpiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDQ4MTM4NzkgKG5vIGRhdGEgZW50cnkpOiBy ZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDQ4MTM4NzkKYmFkIGhhc2ggdGFi bGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA0ODEzODg5IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA0ODEzODg5CmJhZCBoYXNoIHRhYmxlIGZvciBk aXJlY3RvcnkgaW5vZGUgNDgxMzk1NCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWls ZGluZyBkaXJlY3RvcnkgaW5vZGUgNDgxMzk1NApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDQ4MTQwOTcgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGly ZWN0b3J5IGlub2RlIDQ4MTQwOTcKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA0 ODE0MzU2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSA0ODE0MzU2CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNDgxNTQxNSAo bm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNDgx NTQxNQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDQ4MTU1NzggKG5vIGRhdGEg ZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDQ4MTU1NzgKYmFk IGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA0ODE5NzA5IChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA0ODE5NzA5CmJhZCBoYXNoIHRh YmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNDg2MTUyNSAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRp bmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNDg2MTUyNQpiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDQ4NjI0NDggKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVp bGRpbmcgZGlyZWN0b3J5IGlub2RlIDQ4NjI0NDgKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9y eSBpbm9kZSA0ODgxMzc2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSA0ODgxMzc2CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUg NDkzOTgwMiAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3Rvcnkg aW5vZGUgNDkzOTgwMgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDQ5Mzk4MzIg KG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDQ5 Mzk4MzIKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA0OTQwMTE1IChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA0OTQwMTE1CmJh ZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNDk3NDcwMCAobm8gZGF0YSBlbnRyeSk6 IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNDk3NDcwMApiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDQ5NzYwMTEgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxk aW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDQ5NzYwMTEKYmFkIGhhc2ggdGFibGUgZm9y IGRpcmVjdG9yeSBpbm9kZSA0OTc2MTQzIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA0OTc2MTQzCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3Rv cnkgaW5vZGUgNDk5NTY5NiAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBk aXJlY3RvcnkgaW5vZGUgNDk5NTY5NgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDQ5OTU4ODIgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5 IGlub2RlIDQ5OTU4ODIKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA0OTk1OTk3 IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA0 OTk1OTk3CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTAwMDA1MCAobm8gZGF0 YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTAwMDA1MApi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDUwMDI5MzIgKG5vIGRhdGEgZW50cnkp OiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDUwMDI5MzIKYmFkIGhhc2gg dGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzAyIChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1MDQzNzAyCnJlYnVpbGRpbmcgZGlyZWN0 b3J5IGlub2RlIDUwNDM3MzEKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1MDQ0 MTY3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9k ZSA1MDQ0MTY3CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTA0NDE2OCAobm8g ZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTA0NDE2 OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDUwNDQxNzQgKG5vIGRhdGEgZW50 cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDUwNDQxNzQKYmFkIGhh c2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1MDQ0MTc1IChubyBkYXRhIGVudHJ5KTogcmVi dWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1MDQ0MTc1CmJhZCBoYXNoIHRhYmxl IGZvciBkaXJlY3RvcnkgaW5vZGUgNTA0NDE4MCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcK cmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTA0NDE4MApiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDUwNDQzOTggKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRp bmcgZGlyZWN0b3J5IGlub2RlIDUwNDQzOTgKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBp bm9kZSA1MDQ0OTEyIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVj dG9yeSBpbm9kZSA1MDQ0OTEyCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTA0 NTEyNCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5v ZGUgNTA0NTEyNApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDUwNDUxMzcgKG5v IGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDUwNDUx MzcKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1MDQ1Mzk4IChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1MDQ1Mzk4CmJhZCBo YXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTA0NzAyMCAobm8gZGF0YSBlbnRyeSk6IHJl YnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTA0NzAyMApiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDUwNDcxNTcgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5n CnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDUwNDcxNTcKYmFkIGhhc2ggdGFibGUgZm9yIGRp cmVjdG9yeSBpbm9kZSA1MDQ3Mjk0IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSA1MDQ3Mjk0CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3Rvcnkg aW5vZGUgNTA0NzQ2MyAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJl Y3RvcnkgaW5vZGUgNTA0NzQ2MwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDUw NDc2MTAgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlu b2RlIDUwNDc2MTAKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1MDQ3NjM3IChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1MDQ3 NjM3CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTA0ODA5NiAobm8gZGF0YSBl bnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTA0ODA5NgpiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDUwNDgxMTcgKG5vIGRhdGEgZW50cnkpOiBy ZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDUwNDgxMTcKYmFkIGhhc2ggdGFi bGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1MDQ4NDYxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1MDQ4NDYxCmJhZCBoYXNoIHRhYmxlIGZvciBk aXJlY3RvcnkgaW5vZGUgNTA0OTY2NiAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWls ZGluZyBkaXJlY3RvcnkgaW5vZGUgNTA0OTY2NgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDUwNDk3MjAgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGly ZWN0b3J5IGlub2RlIDUwNDk3MjAKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1 MDk4ODcxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSA1MDk4ODcxCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTA5ODg4MCAo bm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTA5 ODg4MApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDUwOTg4OTAgKG5vIGRhdGEg ZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDUwOTg4OTAKYmFk IGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1MTEwMDkzIChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1MTEwMDkzCmJhZCBoYXNoIHRh YmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTExNDQzOSAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRp bmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTExNDQzOQpiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDUxMzgxMzUgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVp bGRpbmcgZGlyZWN0b3J5IGlub2RlIDUxMzgxMzUKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9y eSBpbm9kZSA1MTQzMjQxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSA1MTQzMjQxCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUg NTE0MzQ3MiAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3Rvcnkg aW5vZGUgNTE0MzQ3MgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDUxNDM1ODMg KG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDUx NDM1ODMKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1MTQ1MDQ3IChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1MTQ1MDQ3CmJh ZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTE0NTA1OCAobm8gZGF0YSBlbnRyeSk6 IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTE0NTA1OApiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDUxNDU0MzggKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxk aW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDUxNDU0MzgKYmFkIGhhc2ggdGFibGUgZm9y IGRpcmVjdG9yeSBpbm9kZSA1MjQ1NDA2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1MjQ1NDA2CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3Rv cnkgaW5vZGUgNTI0NTQzMCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBk aXJlY3RvcnkgaW5vZGUgNTI0NTQzMApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDUyNDU1NDcgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5 IGlub2RlIDUyNDU1NDcKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1MjQ1NTU0 IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1 MjQ1NTU0CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTI0NTY5NSAobm8gZGF0 YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTI0NTY5NQpi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDUyNDU4NTIgKG5vIGRhdGEgZW50cnkp OiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDUyNDU4NTIKYmFkIGhhc2gg dGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1MjQ1OTc1IChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1MjQ1OTc1CmJhZCBoYXNoIHRhYmxlIGZv ciBkaXJlY3RvcnkgaW5vZGUgNTI0Njc0NCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVi dWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTI0Njc0NApyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9k ZSA1Mjc3NjMxCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTI3ODg4OCAobm8g ZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTI3ODg4 OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDUyNzg5MTEgKG5vIGRhdGEgZW50 cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDUyNzg5MTEKYmFkIGhh c2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1Mjc5Mjk3IChubyBkYXRhIGVudHJ5KTogcmVi dWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1Mjc5Mjk3CmJhZCBoYXNoIHRhYmxl IGZvciBkaXJlY3RvcnkgaW5vZGUgNTMxMzEyNCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcK cmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTMxMzEyNApiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDUzMTMxNDAgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRp bmcgZGlyZWN0b3J5IGlub2RlIDUzMTMxNDAKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBp bm9kZSA1MzEzMjIyIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVj dG9yeSBpbm9kZSA1MzEzMjIyCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTMx MzI0NyAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5v ZGUgNTMxMzI0NwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDUzMTMzMTkgKG5v IGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDUzMTMz MTkKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1MzEzMzM0IChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1MzEzMzM0CmJhZCBo YXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTMxMzUzMyAobm8gZGF0YSBlbnRyeSk6IHJl YnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTMxMzUzMwpiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDUzMTM1NTkgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5n CnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDUzMTM1NTkKYmFkIGhhc2ggdGFibGUgZm9yIGRp cmVjdG9yeSBpbm9kZSA1MzEzNjM1IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSA1MzEzNjM1CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3Rvcnkg aW5vZGUgNTMxNDg1MSAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJl Y3RvcnkgaW5vZGUgNTMxNDg1MQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDUz MTQ4NzUgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlu b2RlIDUzMTQ4NzUKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1MzE4MTE1IChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1MzE4 MTE1CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTMxODEyNyAobm8gZGF0YSBl bnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTMxODEyNwpiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDUzMTgxMzkgKG5vIGRhdGEgZW50cnkpOiBy ZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDUzMTgxMzkKYmFkIGhhc2ggdGFi bGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1MzE4MTUxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1MzE4MTUxCmJhZCBoYXNoIHRhYmxlIGZvciBk aXJlY3RvcnkgaW5vZGUgNTMxODE2MyAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWls ZGluZyBkaXJlY3RvcnkgaW5vZGUgNTMxODE2MwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDUzMTg0MDUgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGly ZWN0b3J5IGlub2RlIDUzMTg0MDUKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1 MzE4NTk1IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSA1MzE4NTk1CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTMyNzk1MiAo bm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTMy Nzk1MgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDUzMjgwMDggKG5vIGRhdGEg ZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDUzMjgwMDgKYmFk IGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1MzI4MDIxIChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1MzI4MDIxCmJhZCBoYXNoIHRh YmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTMyODA0MSAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRp bmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTMyODA0MQpiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDUzMjgwNjIgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVp bGRpbmcgZGlyZWN0b3J5IGlub2RlIDUzMjgwNjIKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9y eSBpbm9kZSA1Mzk0NjU1IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSA1Mzk0NjU1CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUg NTQ0MDU2MyAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3Rvcnkg aW5vZGUgNTQ0MDU2MwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDU0NDE1ODAg KG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDU0 NDE1ODAKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1NDQxNjY2IChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1NDQxNjY2CmJh ZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTQ0MTY3OCAobm8gZGF0YSBlbnRyeSk6 IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTQ0MTY3OApiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDU0NDc0MzEgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxk aW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDU0NDc0MzEKYmFkIGhhc2ggdGFibGUgZm9y IGRpcmVjdG9yeSBpbm9kZSA1NTgzMjgwIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1NTgzMjgwCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3Rv cnkgaW5vZGUgNTU4MzMxMSAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBk aXJlY3RvcnkgaW5vZGUgNTU4MzMxMQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDU1ODMzNjYgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5 IGlub2RlIDU1ODMzNjYKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1NjM5NjEw IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1 NjM5NjEwCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTY0MDQyNyAobm8gZGF0 YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTY0MDQyNwpi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDU2OTA0NTMgKG5vIGRhdGEgZW50cnkp OiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDU2OTA0NTMKYmFkIGhhc2gg dGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1NjkwODE4IChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1NjkwODE4CmJhZCBoYXNoIHRhYmxlIGZv ciBkaXJlY3RvcnkgaW5vZGUgNTY5MDkwNCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVi dWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTY5MDkwNApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0 b3J5IGlub2RlIDU2OTA5NDkgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcg ZGlyZWN0b3J5IGlub2RlIDU2OTA5NDkKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9k ZSA1NjkwOTg4IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9y eSBpbm9kZSA1NjkwOTg4CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTY5MTA2 NSAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUg NTY5MTA2NQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDU2OTExNDIgKG5vIGRh dGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDU2OTExNDIK YmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1NjkxMTk2IChubyBkYXRhIGVudHJ5 KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1NjkxMTk2CmJhZCBoYXNo IHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTY5MTIzNSAobm8gZGF0YSBlbnRyeSk6IHJlYnVp bGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTY5MTIzNQpiYWQgaGFzaCB0YWJsZSBm b3IgZGlyZWN0b3J5IGlub2RlIDU2OTI2MjQgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJl YnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDU2OTI2MjQKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVj dG9yeSBpbm9kZSA1NjkyNzEwIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5n IGRpcmVjdG9yeSBpbm9kZSA1NjkyNzEwCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5v ZGUgNTY5Mjc0OSAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3Rv cnkgaW5vZGUgNTY5Mjc0OQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDU2OTI4 MjYgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2Rl IDU2OTI4MjYKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1NjkyODY1IChubyBk YXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1NjkyODY1 CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTY5Mjk2NSAobm8gZGF0YSBlbnRy eSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTY5Mjk2NQpiYWQgaGFz aCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDU2OTMwMTAgKG5vIGRhdGEgZW50cnkpOiByZWJ1 aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDU2OTMwMTAKYmFkIGhhc2ggdGFibGUg Zm9yIGRpcmVjdG9yeSBpbm9kZSA1Njk0MTExIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpy ZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1Njk0MTExCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJl Y3RvcnkgaW5vZGUgNTY5NDE5MSAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGlu ZyBkaXJlY3RvcnkgaW5vZGUgNTY5NDE5MQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlu b2RlIDU2OTQyMzYgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0 b3J5IGlub2RlIDU2OTQyMzYKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1Njk0 Mjc1IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9k ZSA1Njk0Mjc1CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTY5NDM2MiAobm8g ZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTY5NDM2 MgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDU2OTQ0NjUgKG5vIGRhdGEgZW50 cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDU2OTQ0NjUKYmFkIGhh c2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1Njk0NTUxIChubyBkYXRhIGVudHJ5KTogcmVi dWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1Njk0NTUxCmJhZCBoYXNoIHRhYmxl IGZvciBkaXJlY3RvcnkgaW5vZGUgNTY5NDU5NiAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcK cmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTY5NDU5NgpiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDU2OTQ2NDQgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRp bmcgZGlyZWN0b3J5IGlub2RlIDU2OTQ2NDQKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBp bm9kZSA1Njk0NzIxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVj dG9yeSBpbm9kZSA1Njk0NzIxCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTY5 NDc5OCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5v ZGUgNTY5NDc5OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDU2OTQ4NDMgKG5v IGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDU2OTQ4 NDMKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1Njk0ODg4IChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1Njk0ODg4CmJhZCBo YXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTY5NDk2NSAobm8gZGF0YSBlbnRyeSk6IHJl YnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTY5NDk2NQpiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDU2OTUwNDIgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5n CnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDU2OTUwNDIKYmFkIGhhc2ggdGFibGUgZm9yIGRp cmVjdG9yeSBpbm9kZSA1Njk1MTU3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSA1Njk1MTU3CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3Rvcnkg aW5vZGUgNTY5NTE5NiAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJl Y3RvcnkgaW5vZGUgNTY5NTE5NgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDU2 OTUyNDEgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlu b2RlIDU2OTUyNDEKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1Njk1MzI3IChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1Njk1 MzI3CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTY5NTQxMyAobm8gZGF0YSBl bnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTY5NTQxMwpiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDU2OTU0NjcgKG5vIGRhdGEgZW50cnkpOiBy ZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDU2OTU0NjcKYmFkIGhhc2ggdGFi bGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1Njk1NTA5IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1Njk1NTA5CmJhZCBoYXNoIHRhYmxlIGZvciBk aXJlY3RvcnkgaW5vZGUgNTY5NTU4NiAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWls ZGluZyBkaXJlY3RvcnkgaW5vZGUgNTY5NTU4NgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDU2OTU2NzIgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGly ZWN0b3J5IGlub2RlIDU2OTU2NzIKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1 Njk1NzE3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSA1Njk1NzE3CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTY5NTgzOCAo bm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTY5 NTgzOApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDU3ODYzNDUgKG5vIGRhdGEg ZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDU3ODYzNDUKYmFk IGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1Nzg2NTAzIChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1Nzg2NTAzCmJhZCBoYXNoIHRh YmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTc4NjUyOCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRp bmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTc4NjUyOApiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDU3ODY2NDYgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVp bGRpbmcgZGlyZWN0b3J5IGlub2RlIDU3ODY2NDYKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9y eSBpbm9kZSA1Nzg4Mjk4IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSA1Nzg4Mjk4CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUg NTgwMjA0NCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3Rvcnkg aW5vZGUgNTgwMjA0NApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDU4MjMwNzMg KG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDU4 MjMwNzMKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1ODIzNDAyIChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1ODIzNDAyCmJh ZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTgyNDU1MiAobm8gZGF0YSBlbnRyeSk6 IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTgyNDU1MgpiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDU4MjQ3MjIgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxk aW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDU4MjQ3MjIKYmFkIGhhc2ggdGFibGUgZm9y IGRpcmVjdG9yeSBpbm9kZSA1ODI0ODM2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1ODI0ODM2CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3Rv cnkgaW5vZGUgNTgyNDg1MSAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBk aXJlY3RvcnkgaW5vZGUgNTgyNDg1MQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDU4MjUwNzIgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5 IGlub2RlIDU4MjUwNzIKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1ODYwNDI3 IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1 ODYwNDI3CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTg2MjEzOSAobm8gZGF0 YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTg2MjEzOQpi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDU4NzA0MTIgKG5vIGRhdGEgZW50cnkp OiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDU4NzA0MTIKYmFkIGhhc2gg dGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1ODcwNDcwIChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1ODcwNDcwCmJhZCBoYXNoIHRhYmxlIGZv ciBkaXJlY3RvcnkgaW5vZGUgNTg3MDU4MCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVi dWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTg3MDU4MApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0 b3J5IGlub2RlIDU4NzA2MjEgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcg ZGlyZWN0b3J5IGlub2RlIDU4NzA2MjEKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9k ZSA1ODcwNjQ2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9y eSBpbm9kZSA1ODcwNjQ2CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTg3MDY4 NiAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUg NTg3MDY4NgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDU4NzA3MzUgKG5vIGRh dGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDU4NzA3MzUK YmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1ODc1NDc4IChubyBkYXRhIGVudHJ5 KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1ODc1NDc4CmJhZCBoYXNo IHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTg3NjIyMSAobm8gZGF0YSBlbnRyeSk6IHJlYnVp bGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTg3NjIyMQpiYWQgaGFzaCB0YWJsZSBm b3IgZGlyZWN0b3J5IGlub2RlIDU4NzYzMzIgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJl YnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDU4NzYzMzIKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVj dG9yeSBpbm9kZSA1ODg5ODIzIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5n IGRpcmVjdG9yeSBpbm9kZSA1ODg5ODIzCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5v ZGUgNTg5NTAxMyAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3Rv cnkgaW5vZGUgNTg5NTAxMwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1ODk1NDgzCmJhZCBo YXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTkwNDgwMCAobm8gZGF0YSBlbnRyeSk6IHJl YnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTkwNDgwMApiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDU5MDYxMjYgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5n CnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDU5MDYxMjYKYmFkIGhhc2ggdGFibGUgZm9yIGRp cmVjdG9yeSBpbm9kZSA1OTA2MTc2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSA1OTA2MTc2CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3Rvcnkg aW5vZGUgNTkwNjMzOSAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJl Y3RvcnkgaW5vZGUgNTkwNjMzOQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDU5 MDYzNzAgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlu b2RlIDU5MDYzNzAKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1OTA2Mzg1IChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1OTA2 Mzg1CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNTkxMTU3MiAobm8gZGF0YSBl bnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNTkxMTU3MgpiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDU5Mjk3MjAgKG5vIGRhdGEgZW50cnkpOiBy ZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDU5Mjk3MjAKYmFkIGhhc2ggdGFi bGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA1OTI5NzUzIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA1OTI5NzUzCmJhZCBoYXNoIHRhYmxlIGZvciBk aXJlY3RvcnkgaW5vZGUgNTkzODU1NCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWls ZGluZyBkaXJlY3RvcnkgaW5vZGUgNTkzODU1NApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDU5NTIwNTQgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGly ZWN0b3J5IGlub2RlIDU5NTIwNTQKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA2 MDYwMjQwIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSA2MDYwMjQwCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNjA2MjYzNSAo bm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNjA2 MjYzNQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDYxODI2NDkgKG5vIGRhdGEg ZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDYxODI2NDkKYmFk IGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA2MTg4ODgwIChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA2MTg4ODgwCmJhZCBoYXNoIHRh YmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNjE5MDI1NSAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRp bmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNjE5MDI1NQpiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDYxOTE4MjUgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVp bGRpbmcgZGlyZWN0b3J5IGlub2RlIDYxOTE4MjUKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9y eSBpbm9kZSA2MTkxODY2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSA2MTkxODY2CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUg NjE5MjE2NiAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3Rvcnkg aW5vZGUgNjE5MjE2NgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDYxOTUxNjEg KG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDYx OTUxNjEKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA2MTk5Nzc4IChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA2MTk5Nzc4CmJh ZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNjE5OTc4NiAobm8gZGF0YSBlbnRyeSk6 IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNjE5OTc4NgpiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDYxOTk4MTMgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxk aW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDYxOTk4MTMKYmFkIGhhc2ggdGFibGUgZm9y IGRpcmVjdG9yeSBpbm9kZSA2MTk5ODMzIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA2MTk5ODMzCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3Rv cnkgaW5vZGUgNjIwMDAzNCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBk aXJlY3RvcnkgaW5vZGUgNjIwMDAzNApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDYyMDAxNDcgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5 IGlub2RlIDYyMDAxNDcKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA2MjAwMzY2 IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA2 MjAwMzY2CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgNjIyNzIxMiAobm8gZGF0 YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgNjIyNzIxMgpi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDYyMzg0NjYgKG5vIGRhdGEgZW50cnkp OiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDYyMzg0NjYKYmFkIGhhc2gg dGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA4NDMwMjMzIChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA4NDMwMjMzCmJhZCBoYXNoIHRhYmxlIGZv ciBkaXJlY3RvcnkgaW5vZGUgODQzMTg0OSAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVi dWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgODQzMTg0OQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0 b3J5IGlub2RlIDg0MzE4NjQgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcg ZGlyZWN0b3J5IGlub2RlIDg0MzE4NjQKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9k ZSA4NDMyNzcwIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9y eSBpbm9kZSA4NDMyNzcwCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgODQzNjE4 OSAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUg ODQzNjE4OQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDg0Mzk5NTEgKG5vIGRh dGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDg0Mzk5NTEK YmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA4NDU2OTM3IChubyBkYXRhIGVudHJ5 KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA4NDU2OTM3CmJhZCBoYXNo IHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgODQ1ODc2NyAobm8gZGF0YSBlbnRyeSk6IHJlYnVp bGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgODQ1ODc2NwpiYWQgaGFzaCB0YWJsZSBm b3IgZGlyZWN0b3J5IGlub2RlIDg0NTg5MDMgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJl YnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDg0NTg5MDMKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVj dG9yeSBpbm9kZSA4NDU4OTE1IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5n IGRpcmVjdG9yeSBpbm9kZSA4NDU4OTE1CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5v ZGUgODQ1ODk1OCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3Rv cnkgaW5vZGUgODQ1ODk1OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDg0NTg5 NjUgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2Rl IDg0NTg5NjUKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA4NDU5MDYwIChubyBk YXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA4NDU5MDYw CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgODQ1OTA4MSAobm8gZGF0YSBlbnRy eSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgODQ1OTA4MQpiYWQgaGFz aCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDg0NTkxNTEgKG5vIGRhdGEgZW50cnkpOiByZWJ1 aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDg0NTkxNTEKYmFkIGhhc2ggdGFibGUg Zm9yIGRpcmVjdG9yeSBpbm9kZSA4NDU5MTc4IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpy ZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA4NDU5MTc4CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJl Y3RvcnkgaW5vZGUgODQ1OTIwNiAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGlu ZyBkaXJlY3RvcnkgaW5vZGUgODQ1OTIwNgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlu b2RlIDg0NzY1MzggKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0 b3J5IGlub2RlIDg0NzY1MzgKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA4NDc2 NTYxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9k ZSA4NDc2NTYxCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgODQ3NjU3MCAobm8g ZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgODQ3NjU3 MApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDg1MDE1NjAgKG5vIGRhdGEgZW50 cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDg1MDE1NjAKYmFkIGhh c2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA4NTQxMzgyIChubyBkYXRhIGVudHJ5KTogcmVi dWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA4NTQxMzgyCmJhZCBoYXNoIHRhYmxl IGZvciBkaXJlY3RvcnkgaW5vZGUgODU1MTQ2NyAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcK cmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgODU1MTQ2NwpiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDg1NjMzMjUgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRp bmcgZGlyZWN0b3J5IGlub2RlIDg1NjMzMjUKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBp bm9kZSA4NTcwMDE3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVj dG9yeSBpbm9kZSA4NTcwMDE3CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgODU3 MDIyMyAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5v ZGUgODU3MDIyMwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDg1NzE3MTMgKG5v IGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDg1NzE3 MTMKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA4NTc0MDU2IChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA4NTc0MDU2CmJhZCBo YXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgODU3NDIyNCAobm8gZGF0YSBlbnRyeSk6IHJl YnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgODU3NDIyNApiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDg1NzQyMjUgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5n CnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDg1NzQyMjUKYmFkIGhhc2ggdGFibGUgZm9yIGRp cmVjdG9yeSBpbm9kZSA4NTc0NDI5IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSA4NTc0NDI5CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3Rvcnkg aW5vZGUgODYwMDYwMSAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJl Y3RvcnkgaW5vZGUgODYwMDYwMQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDg2 MDgxODMgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlu b2RlIDg2MDgxODMKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA4NjA4MTg5IChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA4NjA4 MTg5CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgODYwODE5NCAobm8gZGF0YSBl bnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgODYwODE5NApiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDg2MTU3MTkgKG5vIGRhdGEgZW50cnkpOiBy ZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDg2MTU3MTkKYmFkIGhhc2ggdGFi bGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA4NjE1NzYxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA4NjE1NzYxCmJhZCBoYXNoIHRhYmxlIGZvciBk aXJlY3RvcnkgaW5vZGUgODYxNTc3NSAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWls ZGluZyBkaXJlY3RvcnkgaW5vZGUgODYxNTc3NQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDg2NTkzMDkgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGly ZWN0b3J5IGlub2RlIDg2NTkzMDkKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA4 NjU5MzQ0IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSA4NjU5MzQ0CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgODY2MzM5MiAo bm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgODY2 MzM5MgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDg2NjM1MTIgKG5vIGRhdGEg ZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDg2NjM1MTIKYmFk IGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA4NjYzNTQwIChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA4NjYzNTQwCmJhZCBoYXNoIHRh YmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgODY2MzY1NCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRp bmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgODY2MzY1NApiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDg2NjM2NzIgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVp bGRpbmcgZGlyZWN0b3J5IGlub2RlIDg2NjM2NzIKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9y eSBpbm9kZSA4NjYzNzY1IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSA4NjYzNzY1CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUg ODY3MjIxMSAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3Rvcnkg aW5vZGUgODY3MjIxMQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDg3MDczNTAg KG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDg3 MDczNTAKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA4NzMxNTA5IChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA4NzMxNTA5CmJh ZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgODczMTU4NCAobm8gZGF0YSBlbnRyeSk6 IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgODczMTU4NApiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDg3MzE1OTUgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxk aW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDg3MzE1OTUKYmFkIGhhc2ggdGFibGUgZm9y IGRpcmVjdG9yeSBpbm9kZSA4NzMxNjYwIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA4NzMxNjYwCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3Rv cnkgaW5vZGUgODczMTY2NyAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBk aXJlY3RvcnkgaW5vZGUgODczMTY2NwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDg3NDY2MDAgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5 IGlub2RlIDg3NDY2MDAKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA4NzgzNDk3 IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA4 NzgzNDk3CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgODc5MDY3NCAobm8gZGF0 YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgODc5MDY3NApi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDg4MDczNjEgKG5vIGRhdGEgZW50cnkp OiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDg4MDczNjEKYmFkIGhhc2gg dGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA4ODA4Njc5IChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA4ODA4Njc5CmJhZCBoYXNoIHRhYmxlIGZv ciBkaXJlY3RvcnkgaW5vZGUgODgwOTkwNiAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVi dWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgODgwOTkwNgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0 b3J5IGlub2RlIDg4MDk5MDggKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcg ZGlyZWN0b3J5IGlub2RlIDg4MDk5MDgKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9k ZSA4ODEwNjYxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9y eSBpbm9kZSA4ODEwNjYxCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgODgxMDgz NiAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUg ODgxMDgzNgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDg4MTUxMTAgKG5vIGRh dGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDg4MTUxMTAK YmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA4ODE1MTg0IChubyBkYXRhIGVudHJ5 KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA4ODE1MTg0CmJhZCBoYXNo IHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgODgxNTIwMiAobm8gZGF0YSBlbnRyeSk6IHJlYnVp bGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgODgxNTIwMgpiYWQgaGFzaCB0YWJsZSBm b3IgZGlyZWN0b3J5IGlub2RlIDg4MTY0NjggKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJl YnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDg4MTY0NjgKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVj dG9yeSBpbm9kZSA4ODIxOTQzIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5n IGRpcmVjdG9yeSBpbm9kZSA4ODIxOTQzCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5v ZGUgODgyMzQ5OCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3Rv cnkgaW5vZGUgODgyMzQ5OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDg4MjM1 MTAgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2Rl IDg4MjM1MTAKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA4ODIzNjEyIChubyBk YXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA4ODIzNjEy CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgODgyMzYzNCAobm8gZGF0YSBlbnRy eSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgODgyMzYzNApiYWQgaGFz aCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDg4MjM3MTcgKG5vIGRhdGEgZW50cnkpOiByZWJ1 aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDg4MjM3MTcKYmFkIGhhc2ggdGFibGUg Zm9yIGRpcmVjdG9yeSBpbm9kZSA4ODIzODMzIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpy ZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA4ODIzODMzCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJl Y3RvcnkgaW5vZGUgODgyOTE4OCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGlu ZyBkaXJlY3RvcnkgaW5vZGUgODgyOTE4OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlu b2RlIDg4NDY2MTAgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0 b3J5IGlub2RlIDg4NDY2MTAKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA4ODQ2 NjQ2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9k ZSA4ODQ2NjQ2CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgODg1MDg1OCAobm8g ZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgODg1MDg1 OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDg4NTA5NjEgKG5vIGRhdGEgZW50 cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDg4NTA5NjEKYmFkIGhh c2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA4ODUxMDA2IChubyBkYXRhIGVudHJ5KTogcmVi dWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA4ODUxMDA2CmJhZCBoYXNoIHRhYmxl IGZvciBkaXJlY3RvcnkgaW5vZGUgODkxMTg3OCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcK cmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgODkxMTg3OApiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDg5MTE4OTAgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRp bmcgZGlyZWN0b3J5IGlub2RlIDg5MTE4OTAKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBp bm9kZSA4OTQ1MjU1IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVj dG9yeSBpbm9kZSA4OTQ1MjU1CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgODk0 NTI3NCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5v ZGUgODk0NTI3NApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDg5ODAyMjcgKG5v IGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDg5ODAy MjcKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA4OTgzNDA5IChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA4OTgzNDA5CmJhZCBo YXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgODk4NDk1OCAobm8gZGF0YSBlbnRyeSk6IHJl YnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgODk4NDk1OApiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDkwMTk2MjQgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5n CnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDkwMTk2MjQKYmFkIGhhc2ggdGFibGUgZm9yIGRp cmVjdG9yeSBpbm9kZSA5MDUyOTIzIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSA5MDUyOTIzCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3Rvcnkg aW5vZGUgOTA5ODUyOCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJl Y3RvcnkgaW5vZGUgOTA5ODUyOApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDkw OTkwOTYgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlu b2RlIDkwOTkwOTYKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA5MTEyOTY4IChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA5MTEy OTY4CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgOTExOTIyMyAobm8gZGF0YSBl bnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgOTExOTIyMwpiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDkxMjQ0MjggKG5vIGRhdGEgZW50cnkpOiBy ZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDkxMjQ0MjgKYmFkIGhhc2ggdGFi bGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA5MTM4OTQ1IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA5MTM4OTQ1CmJhZCBoYXNoIHRhYmxlIGZvciBk aXJlY3RvcnkgaW5vZGUgOTEzODk3NSAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWls ZGluZyBkaXJlY3RvcnkgaW5vZGUgOTEzODk3NQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDkxMzkwMjggKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGly ZWN0b3J5IGlub2RlIDkxMzkwMjgKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA5 MTM5MDUyIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSA5MTM5MDUyCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgOTEzOTA1MyAo bm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgOTEz OTA1MwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDkxMzkxNDcgKG5vIGRhdGEg ZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDkxMzkxNDcKYmFk IGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA5MTM5MjcwIChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA5MTM5MjcwCmJhZCBoYXNoIHRh YmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgOTEzOTI5MiAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRp bmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgOTEzOTI5MgpiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDkxMzkzNzAgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVp bGRpbmcgZGlyZWN0b3J5IGlub2RlIDkxMzkzNzAKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9y eSBpbm9kZSA5MTM5MzkxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSA5MTM5MzkxCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUg OTE0MDc0MCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3Rvcnkg aW5vZGUgOTE0MDc0MApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDkxNDgyNTQg KG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDkx NDgyNTQKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA5MTY2MzQ2IChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA5MTY2MzQ2CmJh ZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgOTIwODc3NSAobm8gZGF0YSBlbnRyeSk6 IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgOTIwODc3NQpiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDkyMDg4MTEgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxk aW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDkyMDg4MTEKYmFkIGhhc2ggdGFibGUgZm9y IGRpcmVjdG9yeSBpbm9kZSA5MjQxNjYwIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA5MjQxNjYwCmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3Rv cnkgaW5vZGUgOTI0MTcxMCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBk aXJlY3RvcnkgaW5vZGUgOTI0MTcxMApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDkyNDE4MTEgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5 IGlub2RlIDkyNDE4MTEKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA5MjQxODQ3 IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA5 MjQxODQ3CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgOTI2OTY1NiAobm8gZGF0 YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgOTI2OTY1Ngpi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDkzMTMyNDggKG5vIGRhdGEgZW50cnkp OiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcgZGlyZWN0b3J5IGlub2RlIDkzMTMyNDgKYmFkIGhhc2gg dGFibGUgZm9yIGRpcmVjdG9yeSBpbm9kZSA5MzEzMjYxIChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSA5MzEzMjYxCmJhZCBoYXNoIHRhYmxlIGZv ciBkaXJlY3RvcnkgaW5vZGUgOTMxMzI4MCAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVi dWlsZGluZyBkaXJlY3RvcnkgaW5vZGUgOTMxMzI4MApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0 b3J5IGlub2RlIDkzMjc1MDMgKG5vIGRhdGEgZW50cnkpOiByZWJ1aWxkaW5nCnJlYnVpbGRpbmcg ZGlyZWN0b3J5IGlub2RlIDkzMjc1MDMKYmFkIGhhc2ggdGFibGUgZm9yIGRpcmVjdG9yeSBpbm9k ZSA5MzI3NTQ0IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9y eSBpbm9kZSA5MzI3NTQ0CmJhZCBoYXNoIHRhYmxlIGZvciBkaXJlY3RvcnkgaW5vZGUgOTM1NDcw NSAobm8gZGF0YSBlbnRyeSk6IHJlYnVpbGRpbmcKcmVidWlsZGluZyBkaXJlY3RvcnkgaW5vZGUg OTM1NDcwNQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDExNDc2OTE0IChubyBk YXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMTQ3Njkx NApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDExNjg0MjM1IChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMTY4NDIzNQpiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDExNjg2MjY5IChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMTY4NjI2OQpiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDExNjg3MDExIChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMTY4NzAxMQpiYWQgaGFzaCB0YWJsZSBm b3IgZGlyZWN0b3J5IGlub2RlIDExNjg3MDcyIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpy ZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMTY4NzA3MgpiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDExNjg4Mzc5IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSAxMTY4ODM3OQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDExNzgwMDUxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSAxMTc4MDA1MQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDEyMzA0NDA2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9y eSBpbm9kZSAxMjMwNDQwNgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyMzA0 NDQyIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9k ZSAxMjMwNDQ0MgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNTgzMDQxIChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjU4 MzA0MQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNTgzMDQyIChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzA0Mgpi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNTgzMDUyIChubyBkYXRhIGVudHJ5 KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzA1MgpiYWQgaGFz aCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNTgzMDUzIChubyBkYXRhIGVudHJ5KTogcmVi dWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzA1MwpiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNTgzMDU2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzA1NgpiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDEyNTgzMDU3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzA1NwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0 b3J5IGlub2RlIDEyNTgzMDYyIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5n IGRpcmVjdG9yeSBpbm9kZSAxMjU4MzA2MgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlu b2RlIDEyNTgzMTg2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVj dG9yeSBpbm9kZSAxMjU4MzE4NgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEy NTgzMTg3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSAxMjU4MzE4NwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNTgzMjMz IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAx MjU4MzIzMwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNTgzNDQ3IChubyBk YXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjU4MzQ0 NwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNTkxNTU3IChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjU5MTU1NwpiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNTk4NDg3IChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjU5ODQ4NwpiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNjA2MTgxIChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjYwNjE4MQpiYWQgaGFzaCB0YWJsZSBm b3IgZGlyZWN0b3J5IGlub2RlIDEyNjA2MTkzIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpy ZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjYwNjE5MwpiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDEyNjA3OTMyIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSAxMjYwNzkzMgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDEyNjE2MTY1IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSAxMjYxNjE2NQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDEyNjE2Mjc5IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9y eSBpbm9kZSAxMjYxNjI3OQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNjIx Mjk3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9k ZSAxMjYyMTI5NwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNjIxNDIxIChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjYy MTQyMQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNjI2MjMyIChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjYyNjIzMgpi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNjMzODU0IChubyBkYXRhIGVudHJ5 KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjYzMzg1NApiYWQgaGFz aCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNjMzODc4IChubyBkYXRhIGVudHJ5KTogcmVi dWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjYzMzg3OApiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNjM2NzU0IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjYzNjc1NApiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDEyNjM2ODI1IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjYzNjgyNQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0 b3J5IGlub2RlIDEyNjM3MDc4IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5n IGRpcmVjdG9yeSBpbm9kZSAxMjYzNzA3OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlu b2RlIDEyNjM3MDg2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVj dG9yeSBpbm9kZSAxMjYzNzA4NgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEy NjQwODE0IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSAxMjY0MDgxNApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNjYwNzk5 IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAx MjY2MDc5OQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNjY3MjMwIChubyBk YXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjY2NzIz MApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNjc4NjUwIChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjY3ODY1MApiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNjc4NzkxIChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjY3ODc5MQpiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNjc5MDExIChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjY3OTAxMQpiYWQgaGFzaCB0YWJsZSBm b3IgZGlyZWN0b3J5IGlub2RlIDEyNjc5MjQ1IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpy ZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjY3OTI0NQpiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDEyNjgwMDg0IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSAxMjY4MDA4NApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDEyNjgwMTAwIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSAxMjY4MDEwMApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDEyNjgwNjc0IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9y eSBpbm9kZSAxMjY4MDY3NApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNjk5 NTAyIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9k ZSAxMjY5OTUwMgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNjk5NTMwIChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjY5 OTUzMApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNjk5NTUxIChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjY5OTU1MQpi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNzAwNzgwIChubyBkYXRhIGVudHJ5 KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjcwMDc4MApiYWQgaGFz aCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNzAxMDQzIChubyBkYXRhIGVudHJ5KTogcmVi dWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjcwMTA0MwpiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyNzE5MjM4IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjcxOTIzOApiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDEyNzU3MjU0IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjc1NzI1NApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0 b3J5IGlub2RlIDEyNzU3MjY0IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5n IGRpcmVjdG9yeSBpbm9kZSAxMjc1NzI2NApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlu b2RlIDEyNzU3MzAzIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVj dG9yeSBpbm9kZSAxMjc1NzMwMwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEy NzcyOTcxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSAxMjc3Mjk3MQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyODA5NTcw IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAx MjgwOTU3MApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyODA5NjgwIChubyBk YXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjgwOTY4 MApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyODA5NzI5IChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjgwOTcyOQpiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyODEwMzkzIChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjgxMDM5MwpiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyODEwNjE1IChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjgxMDYxNQpiYWQgaGFzaCB0YWJsZSBm b3IgZGlyZWN0b3J5IGlub2RlIDEyODM1MzMyIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpy ZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjgzNTMzMgpiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDEyODM1MzQ3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSAxMjgzNTM0NwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDEyODM2MTM5IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSAxMjgzNjEzOQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDEyODM2ODg4IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9y eSBpbm9kZSAxMjgzNjg4OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyODU4 MjgwIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9k ZSAxMjg1ODI4MApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyODczNDY2IChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjg3 MzQ2NgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyODczNTUzIChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjg3MzU1Mwpi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyODczNjY2IChubyBkYXRhIGVudHJ5 KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjg3MzY2NgpiYWQgaGFz aCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyOTE1MzIwIChubyBkYXRhIGVudHJ5KTogcmVi dWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjkxNTMyMApiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyOTE1Mzc3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjkxNTM3NwpiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDEyOTE1NDEwIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjkxNTQxMApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0 b3J5IGlub2RlIDEyOTIxMzIyIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5n IGRpcmVjdG9yeSBpbm9kZSAxMjkyMTMyMgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlu b2RlIDEyOTIxMzIzIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVj dG9yeSBpbm9kZSAxMjkyMTMyMwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEy OTIxMzk2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSAxMjkyMTM5NgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyOTQ1MDQx IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAx Mjk0NTA0MQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEyOTQ1MjU3IChubyBk YXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMjk0NTI1 NwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMDY0NzIwIChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzA2NDcyMApiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMDcyNTQyIChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzA3MjU0MgpiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMDcyNjE1IChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzA3MjYxNQpiYWQgaGFzaCB0YWJsZSBm b3IgZGlyZWN0b3J5IGlub2RlIDEzMDcyNjI5IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpy ZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzA3MjYyOQpiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDEzMDcyNjQ1IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSAxMzA3MjY0NQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDEzMDc1NzAxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSAxMzA3NTcwMQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDEzMTA2MTE0IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9y eSBpbm9kZSAxMzEwNjExNApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMTA2 MTM0IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9k ZSAxMzEwNjEzNApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMTA5NjAzIChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzEw OTYwMwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMTA5NjA1IChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzEwOTYwNQpi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMTE3Nzg3IChubyBkYXRhIGVudHJ5 KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzExNzc4NwpiYWQgaGFz aCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMTc5NjA5IChubyBkYXRhIGVudHJ5KTogcmVi dWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzE3OTYwOQpiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMTc5Nzg3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzE3OTc4NwpiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDEzMTc5OTE1IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzE3OTkxNQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0 b3J5IGlub2RlIDEzMTgxOTY0IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5n IGRpcmVjdG9yeSBpbm9kZSAxMzE4MTk2NApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlu b2RlIDEzMTgxOTk4IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVj dG9yeSBpbm9kZSAxMzE4MTk5OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEz MjM4Nzk5IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSAxMzIzODc5OQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMjM5MjMz IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAx MzIzOTIzMwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMzI5ODk0IChubyBk YXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzMyOTg5 NApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMzMxMTU3IChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzMzMTE1NwpiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMzMxODEyIChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzMzMTgxMgpiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMzMxODQyIChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzMzMTg0MgpiYWQgaGFzaCB0YWJsZSBm b3IgZGlyZWN0b3J5IGlub2RlIDEzMzMzMzI5IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpy ZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzMzMzMyOQpiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDEzMzMzMzU4IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSAxMzMzMzM1OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDEzMzUwNDc4IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSAxMzM1MDQ3OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDEzMzUwODA1IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9y eSBpbm9kZSAxMzM1MDgwNQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMzUw ODA2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9k ZSAxMzM1MDgwNgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMzU0NjE0IChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzM1 NDYxNApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMzU0Njc0IChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzM1NDY3NApi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMzU1MTY2IChubyBkYXRhIGVudHJ5 KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzM1NTE2NgpiYWQgaGFz aCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMzU1MTgzIChubyBkYXRhIGVudHJ5KTogcmVi dWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzM1NTE4MwpiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzMzU1NDYyIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzM1NTQ2MgpiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDEzMzU3MjI2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzM1NzIyNgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0 b3J5IGlub2RlIDEzMzg3OTI3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5n IGRpcmVjdG9yeSBpbm9kZSAxMzM4NzkyNwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlu b2RlIDEzNDIxMDUzIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVj dG9yeSBpbm9kZSAxMzQyMTA1MwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEz NDIxMTM3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSAxMzQyMTEzNwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNDIyMjE3 IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAx MzQyMjIxNwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNDIyMzgyIChubyBk YXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzQyMjM4 MgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNDIyMzk1IChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzQyMjM5NQpiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNDIyNDY3IChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzQyMjQ2NwpiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNDIzMDk0IChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzQyMzA5NApiYWQgaGFzaCB0YWJsZSBm b3IgZGlyZWN0b3J5IGlub2RlIDEzNDIzNTAxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpy ZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzQyMzUwMQpiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDEzNDI0MTAwIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSAxMzQyNDEwMApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDEzNDI0NTU1IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSAxMzQyNDU1NQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDEzNDMwMTMyIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9y eSBpbm9kZSAxMzQzMDEzMgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNDMw MzIyIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9k ZSAxMzQzMDMyMgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNDMwNjgyIChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzQz MDY4MgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNDUzMjU3IChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzQ1MzI1Nwpi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNDUzMjU4IChubyBkYXRhIGVudHJ5 KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzQ1MzI1OApiYWQgaGFz aCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNDUzMjY4IChubyBkYXRhIGVudHJ5KTogcmVi dWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzQ1MzI2OApiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNDU0MTEzIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NDExMwpiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDEzNDU0NTU2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NDU1NgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0 b3J5IGlub2RlIDEzNDU1MzEzIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5n IGRpcmVjdG9yeSBpbm9kZSAxMzQ1NTMxMwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlu b2RlIDEzNDU1NTE2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVj dG9yeSBpbm9kZSAxMzQ1NTUxNgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEz NDU1NjgzIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSAxMzQ1NTY4MwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNDU1ODc2 IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAx MzQ1NTg3NgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNDU1OTMwIChubyBk YXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NTkz MApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNDU2MDM3IChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjAzNwpiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNDU2MDY0IChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjA2NApiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNDU2MDc1IChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjA3NQpiYWQgaGFzaCB0YWJsZSBm b3IgZGlyZWN0b3J5IGlub2RlIDEzNDU2MTMyIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpy ZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjEzMgpiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDEzNDU2MTU4IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSAxMzQ1NjE1OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDEzNDU2MTg0IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSAxMzQ1NjE4NApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDEzNDU2NjQxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9y eSBpbm9kZSAxMzQ1NjY0MQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNDU2 NjY3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9k ZSAxMzQ1NjY2NwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNTAxNDgwIChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzUw MTQ4MApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNTAxNDk1IChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzUwMTQ5NQpi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNTI0ODEyIChubyBkYXRhIGVudHJ5 KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzUyNDgxMgpiYWQgaGFz aCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNTI0ODI1IChubyBkYXRhIGVudHJ5KTogcmVi dWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzUyNDgyNQpiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNTI0ODM2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzUyNDgzNgpiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDEzNTI1MjQwIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzUyNTI0MApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0 b3J5IGlub2RlIDEzNTI1MzUyIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5n IGRpcmVjdG9yeSBpbm9kZSAxMzUyNTM1MgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlu b2RlIDEzNTI1NTM2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVj dG9yeSBpbm9kZSAxMzUyNTUzNgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEz NTI2MjExIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSAxMzUyNjIxMQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNTI2NDAw IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAx MzUyNjQwMApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNTI2NDExIChubyBk YXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzUyNjQx MQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNTI2NzI4IChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzUyNjcyOApiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNTI2NzY0IChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzUyNjc2NApiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNTM1MTkxIChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzUzNTE5MQpiYWQgaGFzaCB0YWJsZSBm b3IgZGlyZWN0b3J5IGlub2RlIDEzNjI5MzI3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpy ZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzYyOTMyNwpiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDEzNjMxMDQ5IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSAxMzYzMTA0OQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDEzNjMxMDcwIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSAxMzYzMTA3MApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDEzNjMxMDk2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9y eSBpbm9kZSAxMzYzMTA5NgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNjMx Mjk2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9k ZSAxMzYzMTI5NgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNjMxMzE0IChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzYz MTMxNApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNjMxMzM1IChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzYzMTMzNQpi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNjMxMzU5IChubyBkYXRhIGVudHJ5 KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzYzMTM1OQpiYWQgaGFz aCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNjMyMDY1IChubyBkYXRhIGVudHJ5KTogcmVi dWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzYzMjA2NQpiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNjMyMDc5IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzYzMjA3OQpiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDEzNjMyNDEyIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzYzMjQxMgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0 b3J5IGlub2RlIDEzNjQ4MDA4IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5n IGRpcmVjdG9yeSBpbm9kZSAxMzY0ODAwOApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlu b2RlIDEzNjc1OTQxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVj dG9yeSBpbm9kZSAxMzY3NTk0MQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEz Njc1OTQ3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSAxMzY3NTk0NwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNjc1OTky IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAx MzY3NTk5MgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNjc2MjAyIChubyBk YXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzY3NjIw MgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNjc2MzAxIChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzY3NjMwMQpiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNjc2NTc2IChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzY3NjU3NgpiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNjc2NTk5IChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzY3NjU5OQpiYWQgaGFzaCB0YWJsZSBm b3IgZGlyZWN0b3J5IGlub2RlIDEzNjc3NDA0IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpy ZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzY3NzQwNApiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDEzNjgzOTI0IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSAxMzY4MzkyNApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDEzNzMyMDgxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSAxMzczMjA4MQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDEzNzMyMDkxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9y eSBpbm9kZSAxMzczMjA5MQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNzMy NzgxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9k ZSAxMzczMjc4MQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNzM5ODMyIChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzcz OTgzMgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzNzQwMDE3IChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzc0MDAxNwpi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzOTE2MjA4IChubyBkYXRhIGVudHJ5 KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzkxNjIwOApiYWQgaGFz aCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzOTE2MjkwIChubyBkYXRhIGVudHJ5KTogcmVi dWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzkxNjI5MApiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzOTE3OTI0IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzkxNzkyNApiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDEzOTE4MDI0IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzkxODAyNApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0 b3J5IGlub2RlIDEzOTE4MDYzIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5n IGRpcmVjdG9yeSBpbm9kZSAxMzkxODA2MwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlu b2RlIDEzOTE4MTQ0IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVj dG9yeSBpbm9kZSAxMzkxODE0NApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEz OTE4MTY1IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSAxMzkxODE2NQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzOTE4MTk4 IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAx MzkxODE5OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzOTE4MjYxIChubyBk YXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzkxODI2 MQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzOTE4Mjk1IChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzkxODI5NQpiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzOTE4OTQ0IChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzkxODk0NApiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzOTE4OTcyIChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzkxODk3MgpiYWQgaGFzaCB0YWJsZSBm b3IgZGlyZWN0b3J5IGlub2RlIDEzOTU2NjU3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpy ZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzk1NjY1NwpiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDEzOTU2Njc2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSAxMzk1NjY3NgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDEzOTU4MjY4IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSAxMzk1ODI2OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDEzOTU5MDczIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9y eSBpbm9kZSAxMzk1OTA3MwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzOTU5 MDk2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9k ZSAxMzk1OTA5NgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzOTU5MjUyIChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzk1 OTI1MgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDEzOTU5MjkwIChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxMzk1OTI5MApi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MDUxMDE5IChubyBkYXRhIGVudHJ5 KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDA1MTAxOQpiYWQgaGFz aCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MDUxMDg0IChubyBkYXRhIGVudHJ5KTogcmVi dWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDA1MTA4NApiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MDUxMDk4IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDA1MTA5OApiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDE0MDUxMTA5IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDA1MTEwOQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0 b3J5IGlub2RlIDE0MDUxMTcyIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5n IGRpcmVjdG9yeSBpbm9kZSAxNDA1MTE3MgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlu b2RlIDE0MDUxMjA2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVj dG9yeSBpbm9kZSAxNDA1MTIwNgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0 MDUxMzE5IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSAxNDA1MTMxOQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MDU5ODQ4 IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAx NDA1OTg0OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MDU5OTk4IChubyBk YXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDA1OTk5 OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MDYwMDEwIChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDA2MDAxMApiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MDYwMDIxIChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDA2MDAyMQpiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MDYwMjU5IChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDA2MDI1OQpiYWQgaGFzaCB0YWJsZSBm b3IgZGlyZWN0b3J5IGlub2RlIDE0MDYwNjA3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpy ZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDA2MDYwNwpiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDE0MDYxMTYxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSAxNDA2MTE2MQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDE0MDYxMzE3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSAxNDA2MTMxNwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDE0MDg0MDA3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9y eSBpbm9kZSAxNDA4NDAwNwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MDg0 MzIxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9k ZSAxNDA4NDMyMQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MDg0NzEzIChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDA4 NDcxMwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MDg0OTc1IChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDA4NDk3NQpi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MDg1NDIxIChubyBkYXRhIGVudHJ5 KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDA4NTQyMQpiYWQgaGFz aCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MDg1NDUyIChubyBkYXRhIGVudHJ5KTogcmVi dWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDA4NTQ1MgpiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MDg1NTM1IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDA4NTUzNQpiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDE0MDg1NTU4IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDA4NTU1OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0 b3J5IGlub2RlIDE0MDg1NjI3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5n IGRpcmVjdG9yeSBpbm9kZSAxNDA4NTYyNwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlu b2RlIDE0MDg1Njc2IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVj dG9yeSBpbm9kZSAxNDA4NTY3NgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0 MDg1NzcxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSAxNDA4NTc3MQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MDg2MjEx IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAx NDA4NjIxMQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MTE1ODM1IChubyBk YXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDExNTgz NQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MTE1ODYxIChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDExNTg2MQpiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MTYyMzI4IChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDE2MjMyOApiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MTYzMzA3IChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDE2MzMwNwpiYWQgaGFzaCB0YWJsZSBm b3IgZGlyZWN0b3J5IGlub2RlIDE0MjQ5MjgxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpy ZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDI0OTI4MQpiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDE0MjQ5MzA5IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSAxNDI0OTMwOQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDE0MjUwMzE1IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSAxNDI1MDMxNQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDE0MjUxMTY3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9y eSBpbm9kZSAxNDI1MTE2NwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MjUx MzQ3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9k ZSAxNDI1MTM0NwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MzAyMzAyIChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDMw MjMwMgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MzAyNDg4IChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDMwMjQ4OApi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MzAyNTY1IChubyBkYXRhIGVudHJ5 KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDMwMjU2NQpiYWQgaGFz aCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MzAyNTc1IChubyBkYXRhIGVudHJ5KTogcmVi dWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDMwMjU3NQpiYWQgaGFzaCB0YWJs ZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0MzAyNjA4IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGlu ZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDMwMjYwOApiYWQgaGFzaCB0YWJsZSBmb3Ig ZGlyZWN0b3J5IGlub2RlIDE0NTI4Mzg0IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1 aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDUyODM4NApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0 b3J5IGlub2RlIDE0NTI4NDM1IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5n IGRpcmVjdG9yeSBpbm9kZSAxNDUyODQzNQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlu b2RlIDE0NTMyNDM3IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVj dG9yeSBpbm9kZSAxNDUzMjQzNwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0 NjY0MjU4IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBp bm9kZSAxNDY2NDI1OApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0NjY0Mjc0 IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAx NDY2NDI3NApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0NjY0Nzg5IChubyBk YXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDY2NDc4 OQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0NjY1Mjg3IChubyBkYXRhIGVu dHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDY2NTI4NwpiYWQg aGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0NjY1NDEwIChubyBkYXRhIGVudHJ5KTog cmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDY2NTQxMApiYWQgaGFzaCB0 YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0NjY1NTI4IChubyBkYXRhIGVudHJ5KTogcmVidWls ZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDY2NTUyOApiYWQgaGFzaCB0YWJsZSBm b3IgZGlyZWN0b3J5IGlub2RlIDE0NjY1ODg4IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpy ZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDY2NTg4OApiYWQgaGFzaCB0YWJsZSBmb3IgZGly ZWN0b3J5IGlub2RlIDE0NjY2MzMxIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxk aW5nIGRpcmVjdG9yeSBpbm9kZSAxNDY2NjMzMQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5 IGlub2RlIDE0NjY2NjA4IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRp cmVjdG9yeSBpbm9kZSAxNDY2NjYwOApiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2Rl IDE0NjY2NjI1IChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9y eSBpbm9kZSAxNDY2NjYyNQpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0NjY2 NjQyIChubyBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9k ZSAxNDY2NjY0MgpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0NjY2NzIzIChu byBkYXRhIGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDY2 NjcyMwpiYWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0NjY3MTEyIChubyBkYXRh IGVudHJ5KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDY2NzExMgpi YWQgaGFzaCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE0NjgxMDQzIChubyBkYXRhIGVudHJ5 KTogcmVidWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNDY4MTA0MwpiYWQgaGFz aCB0YWJsZSBmb3IgZGlyZWN0b3J5IGlub2RlIDE1MDEyNjY3IChubyBkYXRhIGVudHJ5KTogcmVi dWlsZGluZwpyZWJ1aWxkaW5nIGRpcmVjdG9yeSBpbm9kZSAxNTAxMjY2NwogICAgICAgIC0gdHJh dmVyc2FsIGZpbmlzaGVkIC4uLgogICAgICAgIC0gbW92aW5nIGRpc2Nvbm5lY3RlZCBpbm9kZXMg dG8gbG9zdCtmb3VuZCAuLi4KZGlzY29ubmVjdGVkIGlub2RlIDE0MSwgbW92aW5nIHRvIGxvc3Qr Zm91bmQKZGlzY29ubmVjdGVkIGlub2RlIDE0MiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29u bmVjdGVkIGlub2RlIDE0NSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGlub2Rl IDE3MSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGlub2RlIDE3NywgbW92aW5n IHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGlub2RlIDE4MCwgbW92aW5nIHRvIGxvc3QrZm91 bmQKZGlzY29ubmVjdGVkIGlub2RlIDE4NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVj dGVkIGlub2RlIDE4OCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9k ZSA0MTk0NDkzLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQy MTA3NTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDIxMDc3 MCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0MjEwNzc2LCBt b3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQyMTA3NzksIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDIxMTc1MywgbW92aW5nIHRv IGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0MjExODcyLCBtb3ZpbmcgdG8gbG9z dCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQyMTE4OTAsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDI4OTM5NCwgbW92aW5nIHRvIGxvc3QrZm91bmQK ZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0Mjg5NDExLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNj b25uZWN0ZWQgZGlyIGlub2RlIDQyOTY4NjUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgNDI5Njg2OSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVk IGRpciBpbm9kZSA0Mjk2ODcxLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGly IGlub2RlIDQyOTY4NzYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgNDI5Njk3NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0 Mjk2OTk4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQyOTcw MDgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDI5NzA1Miwg bW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0Mjk3MDU0LCBtb3Zp bmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQyOTcxMzMsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDI5NzE0NiwgbW92aW5nIHRvIGxv c3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0Mjk3MjM2LCBtb3ZpbmcgdG8gbG9zdCtm b3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQyOTcyNjIsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDI5NzI5MCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlz Y29ubmVjdGVkIGRpciBpbm9kZSA0Mjk3NDIwLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25u ZWN0ZWQgZGlyIGlub2RlIDQyOTc0MjUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgNDI5NzQyOCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRp ciBpbm9kZSA0Mjk3NDMyLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlu b2RlIDQyOTc0MzQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg NDI5NzQ1NywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0Mjk3 NDY1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQyOTc0ODcs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDI5NzQ5MCwgbW92 aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0Mjk3NTU3LCBtb3Zpbmcg dG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQyOTc2NTksIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDI5NzY4NSwgbW92aW5nIHRvIGxvc3Qr Zm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0Mjk4NzkzLCBtb3ZpbmcgdG8gbG9zdCtmb3Vu ZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQyOTg3OTcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDI5ODc5OSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29u bmVjdGVkIGRpciBpbm9kZSA0Mjk4ODAwLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0 ZWQgZGlyIGlub2RlIDQyOTg4MTUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgNDMwMjE3OCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBp bm9kZSA0MzAyMTgwLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2Rl IDQzMzM0NDIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDMz MzQ1NSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0MzMzNDY4 LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQzMzM0NzgsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDMzMzQ3OSwgbW92aW5n IHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0MzMzNDgwLCBtb3ZpbmcgdG8g bG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQzMzM0OTQsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDM1MDk5NSwgbW92aW5nIHRvIGxvc3QrZm91 bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0MzUxMDQ2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApk aXNjb25uZWN0ZWQgZGlyIGlub2RlIDQzNTEwNTgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgNDM1MTA3MCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVj dGVkIGRpciBpbm9kZSA0MzUxMTM3LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQg ZGlyIGlub2RlIDQzNTExNDksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgNDM1MTE1NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9k ZSA0MzUxMTU4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQz NTExOTUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDM1MTE5 OSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0MzUxMjk1LCBt b3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQzNTEzMjgsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDM1MTMzNSwgbW92aW5nIHRv IGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0MzUxMzU4LCBtb3ZpbmcgdG8gbG9z dCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQzNzY3NDgsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDM3Njc2MCwgbW92aW5nIHRvIGxvc3QrZm91bmQK ZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0Mzc2Nzg2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNj b25uZWN0ZWQgZGlyIGlub2RlIDQzNzcwMzIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgNDM3NzAzNCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVk IGRpciBpbm9kZSA0Mzc3MDU0LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGly IGlub2RlIDQ0MjAxMzEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgNDQyMDEzMiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0 NDIwMTgzLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ0MjAz MTMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDQyMDU3NSwg bW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NDIwNTc5LCBtb3Zp bmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ0MjA1ODMsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDQyMDU4NywgbW92aW5nIHRvIGxv c3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NDIwNTg5LCBtb3ZpbmcgdG8gbG9zdCtm b3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ0MjE0ODAsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDQyMTQ4NywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlz Y29ubmVjdGVkIGRpciBpbm9kZSA0NDM1MTAwLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25u ZWN0ZWQgZGlyIGlub2RlIDQ0MzUxMTMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgNDQzODg2OSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRp ciBpbm9kZSA0NDM4ODg2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlu b2RlIDQ0Mzg4ODgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg NDQzODg5MCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NDM4 ODk1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ0Mzg4OTcs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDQzODg5OSwgbW92 aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NDM4OTAzLCBtb3Zpbmcg dG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ0Mzg5MDUsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDQzODkwNywgbW92aW5nIHRvIGxvc3Qr Zm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NDM4OTA5LCBtb3ZpbmcgdG8gbG9zdCtmb3Vu ZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ0Mzg5MTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDQ0MjA0OCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29u bmVjdGVkIGRpciBpbm9kZSA0NDQyMDUwLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0 ZWQgZGlyIGlub2RlIDQ0NDIwNTQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgNDQ0MjEwMCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBp bm9kZSA0NDQyMTAyLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2Rl IDQ0NDIxMDYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDQ0 MjEwOCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NDQyMTEw LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ0NDIxNDQsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDQ0MjE3NywgbW92aW5n IHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NDQyMTc5LCBtb3ZpbmcgdG8g bG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ0NDIxOTAsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDQ0MjE5MywgbW92aW5nIHRvIGxvc3QrZm91 bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NDQyMTk1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApk aXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ0NDIxOTcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgNDQ0MjE5OSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVj dGVkIGRpciBpbm9kZSA0NDQyMjAxLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQg ZGlyIGlub2RlIDQ0NDIyMDMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgNDQ0MjgxNywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9k ZSA0NDQyODE5LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ0 NDI4MzAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDQ0Mjgz MiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NDQyODU3LCBt b3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ0NDI4NTgsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDQ0Mjg2MCwgbW92aW5nIHRv IGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NDQyODYyLCBtb3ZpbmcgdG8gbG9z dCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ0NDI4NjQsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDQ0Mjg2NiwgbW92aW5nIHRvIGxvc3QrZm91bmQK ZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NDQyODY5LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNj b25uZWN0ZWQgZGlyIGlub2RlIDQ0NDI4NzEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgNDQ0MjkxNSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVk IGRpciBpbm9kZSA0NDQyOTE3LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGly IGlub2RlIDQ0NDI5MzUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgNDQ0Mjk0MSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0 NDQyOTcyLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ0ODg3 NzEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDQ4ODc3NSwg bW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NDg4Nzc2LCBtb3Zp bmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ0ODg3NzksIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDQ4ODc4MSwgbW92aW5nIHRvIGxv c3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NDg4NzgzLCBtb3ZpbmcgdG8gbG9zdCtm b3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ0ODg3ODksIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDQ4ODc5MywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlz Y29ubmVjdGVkIGRpciBpbm9kZSA0NDg4Nzk1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25u ZWN0ZWQgZGlyIGlub2RlIDQ0ODg4MDEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgNDQ4ODgwMywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRp ciBpbm9kZSA0NDg4ODA1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlu b2RlIDQ0ODg4MDcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg NDQ4ODgxMiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NDg4 ODE2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ0ODg4OTIs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDQ4ODg5NywgbW92 aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NDg4OTAxLCBtb3Zpbmcg dG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ0ODg5MTYsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDQ5NDYzOSwgbW92aW5nIHRvIGxvc3Qr Zm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NTE4MzE4LCBtb3ZpbmcgdG8gbG9zdCtmb3Vu ZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ1MTgzMjIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDUxODMzMSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29u bmVjdGVkIGRpciBpbm9kZSA0NTE4MzM4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0 ZWQgZGlyIGlub2RlIDQ1MTgzNDcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgNDUxODM1MCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBp bm9kZSA0NTE4MzYyLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2Rl IDQ1MTgzNjcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDUx OTY2NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NTE5NjY4 LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ1MTk2ODgsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDUxOTY5MiwgbW92aW5n IHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NTE5Njk3LCBtb3ZpbmcgdG8g bG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ1MTk2OTksIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDUxOTcwNywgbW92aW5nIHRvIGxvc3QrZm91 bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NTE5NzEwLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApk aXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ1MTk5ODgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgNDUyNDkwOSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVj dGVkIGRpciBpbm9kZSA0NTI0OTI0LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQg ZGlyIGlub2RlIDQ1MjQ5NjQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgNDUyNTAyMCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9k ZSA0NTQ0OTk0LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ1 NDUxMzAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDU0NTMw OCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NTQ1NDcyLCBt b3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ1NDU1MTksIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDU0NTU2OCwgbW92aW5nIHRv IGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NTQ5NTE5LCBtb3ZpbmcgdG8gbG9z dCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ1NDk1MjksIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDU2MTAzMiwgbW92aW5nIHRvIGxvc3QrZm91bmQK ZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NTYxMDc1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNj b25uZWN0ZWQgZGlyIGlub2RlIDQ2MjU0NzcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgNDYyNTc4MiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVk IGRpciBpbm9kZSA0NjI2NDMxLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGly IGlub2RlIDQ2MjY4ODMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgNDYyNjg4NiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0 NjI2ODg4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ2MjY5 ODQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDYyNjk4OCwg bW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NjI2OTk0LCBtb3Zp bmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ2MjY5OTksIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDYyNzAwMSwgbW92aW5nIHRvIGxv c3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NjI3MDA2LCBtb3ZpbmcgdG8gbG9zdCtm b3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ2MjcwMDgsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDYyNzAxMSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlz Y29ubmVjdGVkIGRpciBpbm9kZSA0NjI3MDE0LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25u ZWN0ZWQgZGlyIGlub2RlIDQ2MjcwNzQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgNDYyNzA3NiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRp ciBpbm9kZSA0NjI3MTA4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlu b2RlIDQ2MjcxMTgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg NDYyNzMyMSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NjI3 MzIzLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ2MjczMjYs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDYyNzMyNywgbW92 aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NjI3MzYxLCBtb3Zpbmcg dG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ2MjczNjQsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDYyNzM3MCwgbW92aW5nIHRvIGxvc3Qr Zm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NjI3MzczLCBtb3ZpbmcgdG8gbG9zdCtmb3Vu ZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ2MjczNzksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDYyNzM4MSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29u bmVjdGVkIGRpciBpbm9kZSA0NjI3NDA1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0 ZWQgZGlyIGlub2RlIDQ2Mjc0MTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgNDY4NDE5NywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBp bm9kZSA0Njg0Mjc2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2Rl IDQ2ODQzMDgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDY4 NDQ2MCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0Njg0NDY1 LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ2ODQ2ODIsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDY4NDY4NCwgbW92aW5n IHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0Njg0NjkxLCBtb3ZpbmcgdG8g bG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ2ODQ2OTUsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDY4NDcwMCwgbW92aW5nIHRvIGxvc3QrZm91 bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0Njg0NzIyLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApk aXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ2ODQ4MzcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgNDcwNjg1MCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVj dGVkIGRpciBpbm9kZSA0NzA3OTcxLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQg ZGlyIGlub2RlIDQ3MDgwMjUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgNDcwOTExNCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9k ZSA0NzA5MTUyLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ3 MDkzNjgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDcwOTM4 MCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NzA5NTE4LCBt b3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ3MTEwMzgsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDcxNjEyOCwgbW92aW5nIHRv IGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0NzE2MTk5LCBtb3ZpbmcgdG8gbG9z dCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ3OTQ2MDIsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDc5NDYwOSwgbW92aW5nIHRvIGxvc3QrZm91bmQK ZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0Nzk0NjIyLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNj b25uZWN0ZWQgZGlyIGlub2RlIDQ3OTQ2MjQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgNDc5NDYyNiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVk IGRpciBpbm9kZSA0Nzk0NjM0LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGly IGlub2RlIDQ3OTQ3OTksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgNDc5NDk1NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0 ODEzNzI5LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ4MTM3 MzYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDgxMzc2NCwg bW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0ODEzNzc2LCBtb3Zp bmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ4MTM3NzcsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDgxMzc3OSwgbW92aW5nIHRvIGxv c3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0ODEzODc5LCBtb3ZpbmcgdG8gbG9zdCtm b3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ4MTM4ODksIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDgxMzkwMCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlz Y29ubmVjdGVkIGRpciBpbm9kZSA0ODEzOTUzLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25u ZWN0ZWQgZGlyIGlub2RlIDQ4MTM5NTQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgNDgxNDA4NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRp ciBpbm9kZSA0ODE0MDk3LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlu b2RlIDQ4MTQzNTYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg NDgxNTQwNiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0ODE1 NDA5LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ4MTU0MTUs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDgxNTQ3OCwgbW92 aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0ODE1NDc5LCBtb3Zpbmcg dG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ4MTU0ODUsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDgxNTU3OCwgbW92aW5nIHRvIGxvc3Qr Zm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0ODE1NTg4LCBtb3ZpbmcgdG8gbG9zdCtmb3Vu ZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ4MTk0NzIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDgxOTcwOSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29u bmVjdGVkIGRpciBpbm9kZSA0ODU3MzIxLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0 ZWQgZGlyIGlub2RlIDQ4NTczMzIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgNDg1NzMzOSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBp bm9kZSA0ODU3MzQxLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2Rl IDQ4NTczNDYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDg1 NzM1MSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0ODU3MzU2 LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ4NjE1MjUsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDg2MjQ0OCwgbW92aW5n IHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0ODYyNzEyLCBtb3ZpbmcgdG8g bG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ4NjM0MzMsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDg4MTM3NiwgbW92aW5nIHRvIGxvc3QrZm91 bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0OTM5MTkzLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApk aXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ5Mzk4MDIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgNDkzOTk5MCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVj dGVkIGRpciBpbm9kZSA0OTQwMTE1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQg ZGlyIGlub2RlIDQ5NDAxMzQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgNDk3NDQ0NywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9k ZSA0OTc0NDU2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ5 NzQ3MDAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDk3NjAx MSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0OTk1Njg3LCBt b3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ5OTU3MjUsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDk5NTk5NywgbW92aW5nIHRv IGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0OTk2ODM1LCBtb3ZpbmcgdG8gbG9z dCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDQ5OTY4NDYsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNDk5Njg1MywgbW92aW5nIHRvIGxvc3QrZm91bmQK ZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0OTk2ODY4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNj b25uZWN0ZWQgZGlyIGlub2RlIDQ5OTY4NzMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgNDk5Njg4MCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVk IGRpciBpbm9kZSA0OTk2ODg1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGly IGlub2RlIDQ5OTY4ODgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgNDk5Njg5MSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA0 OTk2ODkyLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUwMDAw NTAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTAwMDA1MSwg bW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MDAyOTEyLCBtb3Zp bmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUwMDI5MTksIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTAwMjkyNSwgbW92aW5nIHRvIGxv c3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MDAyOTMwLCBtb3ZpbmcgdG8gbG9zdCtm b3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUwMDI5MzEsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTAwMjkzMiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlz Y29ubmVjdGVkIGRpciBpbm9kZSA1MDAyOTc0LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25u ZWN0ZWQgZGlyIGlub2RlIDUwNDM2ODgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgNTA0MzY5MiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRp ciBpbm9kZSA1MDQzNzIyLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlu b2RlIDUwNDM3MjMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg NTA0MzczMSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MDQz ODA4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUwNDM4NzMs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTA0Mzg3NSwgbW92 aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MDQzODkyLCBtb3Zpbmcg dG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUwNDQxNDksIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTA0NDE2MywgbW92aW5nIHRvIGxvc3Qr Zm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MDQ0MTY3LCBtb3ZpbmcgdG8gbG9zdCtmb3Vu ZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUwNDQxNjgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTA0NDE3NSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29u bmVjdGVkIGRpciBpbm9kZSA1MDQ0MTgwLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0 ZWQgZGlyIGlub2RlIDUwNDQzOTgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgNTA0NDkxMiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBp bm9kZSA1MDQ0OTIwLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2Rl IDUwNDQ5MjEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTA0 NDkyMiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MDQ0OTIz LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUwNDQ5MzksIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTA0NDk0MCwgbW92aW5n IHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MDQ0OTQxLCBtb3ZpbmcgdG8g bG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUwNDQ5NDIsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTA0NTEyMSwgbW92aW5nIHRvIGxvc3QrZm91 bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MDQ1MTIyLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApk aXNjb25uZWN0ZWQgZGlyIGlub2RlIDUwNDUxMjMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgNTA0NTEyNCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVj dGVkIGRpciBpbm9kZSA1MDQ1MTM0LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQg ZGlyIGlub2RlIDUwNDUxMzUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgNTA0NTEzNiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9k ZSA1MDQ1MTM3LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUw NDUxNDcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTA0NTE0 OCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MDQ1MTQ5LCBt b3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUwNDUxNTMsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTA0NTE1NCwgbW92aW5nIHRv IGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MDQ1MTU1LCBtb3ZpbmcgdG8gbG9z dCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUwNDUzNjAsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTA0NTM3OSwgbW92aW5nIHRvIGxvc3QrZm91bmQK ZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MDQ1Mzk3LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNj b25uZWN0ZWQgZGlyIGlub2RlIDUwNDUzOTgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgNTA0NzAyMCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVk IGRpciBpbm9kZSA1MDQ3MTU3LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGly IGlub2RlIDUwNDcyOTQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgNTA0NzQ2MywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1 MDQ3NjEwLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUwNDc2 MzcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTA0ODA5Niwg bW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MDQ4MTE3LCBtb3Zp bmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUwNDg0NjEsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTA0OTY2NiwgbW92aW5nIHRvIGxv c3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MDQ5Njc4LCBtb3ZpbmcgdG8gbG9zdCtm b3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUwNDk2OTAsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTA0OTcyMCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlz Y29ubmVjdGVkIGRpciBpbm9kZSA1MDk4ODcxLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25u ZWN0ZWQgZGlyIGlub2RlIDUwOTg4ODAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgNTA5ODg5MCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRp ciBpbm9kZSA1MTEwMDkyLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlu b2RlIDUxMTAwOTMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg NTExMDEwOSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MTEw NDM2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUxMTA0OTQs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTExNDQzOSwgbW92 aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MTE0NDQ4LCBtb3Zpbmcg dG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUxMTQ0NTUsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTEzODEzNSwgbW92aW5nIHRvIGxvc3Qr Zm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MTQzMjQxLCBtb3ZpbmcgdG8gbG9zdCtmb3Vu ZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUxNDM0NzIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTE0MzU4MywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29u bmVjdGVkIGRpciBpbm9kZSA1MTQ0NTgyLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0 ZWQgZGlyIGlub2RlIDUxNDQ1ODUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgNTE0NDU4OCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBp bm9kZSA1MTQ0NTkxLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2Rl IDUxNDQ1OTQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTE0 NDU5NywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MTQ0NjAw LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUxNDQ2MDMsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTE0NDYwNiwgbW92aW5n IHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MTQ1MDQ2LCBtb3ZpbmcgdG8g bG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUxNDUwNDcsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTE0NTA1OCwgbW92aW5nIHRvIGxvc3QrZm91 bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MTQ1MjMyLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApk aXNjb25uZWN0ZWQgZGlyIGlub2RlIDUxNDUyNDgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgNTE0NTQzMSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVj dGVkIGRpciBpbm9kZSA1MTQ1NDM4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQg ZGlyIGlub2RlIDUyNDUzOTcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgNTI0NTQwNiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9k ZSA1MjQ1NDE3LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUy NDU0MjAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTI0NTQz MCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MjQ1NTQxLCBt b3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUyNDU1NDcsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTI0NTU1NCwgbW92aW5nIHRv IGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MjQ1Njk1LCBtb3ZpbmcgdG8gbG9z dCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUyNDU4NTIsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTI0NTk3NSwgbW92aW5nIHRvIGxvc3QrZm91bmQK ZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MjQ1OTkwLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNj b25uZWN0ZWQgZGlyIGlub2RlIDUyNDY2MjEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgNTI0NjczOCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVk IGRpciBpbm9kZSA1MjQ2NzQ0LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGly IGlub2RlIDUyNzc2MzEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgNTI3ODQyNywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1 Mjc4ODg0LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUyNzg4 ODcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTI3ODg4OCwg bW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1Mjc4OTExLCBtb3Zp bmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUyNzkwMjMsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTI3OTA1MSwgbW92aW5nIHRvIGxv c3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1Mjc5Mjk3LCBtb3ZpbmcgdG8gbG9zdCtm b3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUzMTMxMjQsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTMxMzE0MCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlz Y29ubmVjdGVkIGRpciBpbm9kZSA1MzEzMjIyLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25u ZWN0ZWQgZGlyIGlub2RlIDUzMTMyNDEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgNTMxMzI0NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRp ciBpbm9kZSA1MzEzMjQ3LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlu b2RlIDUzMTMzMTksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg NTMxMzMzMSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MzEz MzM0LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUzMTMzMzcs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTMxMzUzMywgbW92 aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MzEzNTU5LCBtb3Zpbmcg dG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUzMTM2MzUsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTMxMzcyNiwgbW92aW5nIHRvIGxvc3Qr Zm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MzEzOTU3LCBtb3ZpbmcgdG8gbG9zdCtmb3Vu ZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUzMTQ4NTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTMxNDg3NSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29u bmVjdGVkIGRpciBpbm9kZSA1MzE3OTUwLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0 ZWQgZGlyIGlub2RlIDUzMTgxMTUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgNTMxODEyNywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBp bm9kZSA1MzE4MTM5LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2Rl IDUzMTgxNTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTMx ODE2MywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MzE4NDA1 LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUzMTg1OTUsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTMyNzk1MiwgbW92aW5n IHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MzI4MDA4LCBtb3ZpbmcgdG8g bG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUzMjgwMjEsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTMyODAzMywgbW92aW5nIHRvIGxvc3QrZm91 bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1MzI4MDQxLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApk aXNjb25uZWN0ZWQgZGlyIGlub2RlIDUzMjgwNjIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgNTM5NDUyOCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVj dGVkIGRpciBpbm9kZSA1Mzk0NTI5LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQg ZGlyIGlub2RlIDUzOTQ2NDcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgNTM5NDY1NSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9k ZSA1Mzk0Njg0LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDUz OTQ5OTUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTM5NTAz NiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1NDQwNTM0LCBt b3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU0NDA1NjMsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTQ0MTU3MSwgbW92aW5nIHRv IGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1NDQxNTgwLCBtb3ZpbmcgdG8gbG9z dCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU0NDE2NjYsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTQ0MTY3OCwgbW92aW5nIHRvIGxvc3QrZm91bmQK ZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1NDQ3MTQ4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNj b25uZWN0ZWQgZGlyIGlub2RlIDU0NDcxNzIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgNTQ0NzQzMSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVk IGRpciBpbm9kZSA1NDQ3NjU1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGly IGlub2RlIDU0NDc2NzcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgNTQ0Nzc5OCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1 NDQ3ODM4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU0ODk5 NDgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTQ4OTk1MCwg bW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1NDg5OTUyLCBtb3Zp bmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU0ODk5NTQsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTQ4OTk3MywgbW92aW5nIHRvIGxv c3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1NDg5OTc0LCBtb3ZpbmcgdG8gbG9zdCtm b3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU0ODk5NzcsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTU4MzA3NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlz Y29ubmVjdGVkIGRpciBpbm9kZSA1NTgzMjc1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25u ZWN0ZWQgZGlyIGlub2RlIDU1ODMyODAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgNTU4MzMxMSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRp ciBpbm9kZSA1NTgzMzY2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlu b2RlIDU1ODMzNzksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg NTU4MzM4MSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1NTgz NjA0LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU1ODM2MDYs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTYzODAyNiwgbW92 aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1NjM4MDI3LCBtb3Zpbmcg dG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU2MzgwNDgsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTYzODA1MiwgbW92aW5nIHRvIGxvc3Qr Zm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1NjM4MDU0LCBtb3ZpbmcgdG8gbG9zdCtmb3Vu ZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU2MzgwNTcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTYzODA2NiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29u bmVjdGVkIGRpciBpbm9kZSA1NjM4ODUzLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0 ZWQgZGlyIGlub2RlIDU2Mzg4NjIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgNTYzODg2NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBp bm9kZSA1NjM4OTg1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2Rl IDU2Mzg5ODcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTYz ODk5NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1NjM5MDAw LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU2MzkxMjYsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTYzOTEyOCwgbW92aW5n IHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1NjM5MTMxLCBtb3ZpbmcgdG8g bG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU2Mzk1NzYsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTYzOTU4NSwgbW92aW5nIHRvIGxvc3QrZm91 bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1NjM5NjA2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApk aXNjb25uZWN0ZWQgZGlyIGlub2RlIDU2Mzk2MTAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgNTY0MDE3OCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVj dGVkIGRpciBpbm9kZSA1NjQwMzg4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQg ZGlyIGlub2RlIDU2NDAzOTAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgNTY0MDM5NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9k ZSA1NjQwNDI3LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU2 OTA0NTMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTY5MDgx OCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1NjkwOTA0LCBt b3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU2OTA5NDksIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTY5MDk4OCwgbW92aW5nIHRv IGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1NjkxMDY1LCBtb3ZpbmcgdG8gbG9z dCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU2OTExNDIsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTY5MTE5NiwgbW92aW5nIHRvIGxvc3QrZm91bmQK ZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1NjkxMjM1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNj b25uZWN0ZWQgZGlyIGlub2RlIDU2OTI2MjQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgNTY5MjcxMCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVk IGRpciBpbm9kZSA1NjkyNzQ5LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGly IGlub2RlIDU2OTI4MjYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgNTY5Mjg2NSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1 NjkyOTY1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU2OTMw MTAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTY5NDExMSwg bW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1Njk0MTkxLCBtb3Zp bmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU2OTQyMzYsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTY5NDI3NSwgbW92aW5nIHRvIGxv c3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1Njk0MzYyLCBtb3ZpbmcgdG8gbG9zdCtm b3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU2OTQ0NjUsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTY5NDU1MSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlz Y29ubmVjdGVkIGRpciBpbm9kZSA1Njk0NTk2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25u ZWN0ZWQgZGlyIGlub2RlIDU2OTQ2NDQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgNTY5NDcyMSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRp ciBpbm9kZSA1Njk0Nzk4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlu b2RlIDU2OTQ4NDMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg NTY5NDg4OCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1Njk0 OTY1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU2OTUwNDIs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTY5NTE1NywgbW92 aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1Njk1MTk2LCBtb3Zpbmcg dG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU2OTUyNDEsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTY5NTMyNywgbW92aW5nIHRvIGxvc3Qr Zm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1Njk1NDEzLCBtb3ZpbmcgdG8gbG9zdCtmb3Vu ZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU2OTU0NjcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTY5NTUwOSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29u bmVjdGVkIGRpciBpbm9kZSA1Njk1NTg2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0 ZWQgZGlyIGlub2RlIDU2OTU2NzIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgNTY5NTcxNywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBp bm9kZSA1Njk1ODM4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2Rl IDU2OTU4NjgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTY5 NjgxMSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1Njk2ODE3 LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU2OTY4MzcsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTY5Njg0MiwgbW92aW5n IHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1Njk2ODQ0LCBtb3ZpbmcgdG8g bG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU3NTM1NDEsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTc1MzU0NywgbW92aW5nIHRvIGxvc3QrZm91 bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1NzUzNTUwLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApk aXNjb25uZWN0ZWQgZGlyIGlub2RlIDU3NTM1NTIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgNTc1MzU1NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVj dGVkIGRpciBpbm9kZSA1NzUzNTU2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQg ZGlyIGlub2RlIDU3ODYzNDUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgNTc4NjQ5NiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9k ZSA1Nzg2NTAzLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU3 ODY2NDYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTc4ODI5 NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1Nzg4Mjk4LCBt b3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU3ODgzNDQsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTgwMjA0NCwgbW92aW5nIHRv IGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1ODIzMDc4LCBtb3ZpbmcgdG8gbG9z dCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU4MjMyMTgsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTgyMzQxOCwgbW92aW5nIHRvIGxvc3QrZm91bmQK ZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1ODIzNDg5LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNj b25uZWN0ZWQgZGlyIGlub2RlIDU4MjM0OTgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgNTgyMzUxMSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVk IGRpciBpbm9kZSA1ODIzNTQ4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGly IGlub2RlIDU4MjQ1NzEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgNTgyNDcyMiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1 ODI0NzY3LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU4MjQ4 MzYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTgyNTA2Miwg bW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1ODI1MDcyLCBtb3Zp bmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU4MjYxNDcsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTgyNjE1MywgbW92aW5nIHRvIGxv c3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1ODI2MTU0LCBtb3ZpbmcgdG8gbG9zdCtm b3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU4MjYxNzEsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTg1OTk3MywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlz Y29ubmVjdGVkIGRpciBpbm9kZSA1ODU5OTg3LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25u ZWN0ZWQgZGlyIGlub2RlIDU4NTk5ODgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgNTg1OTk5MiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRp ciBpbm9kZSA1ODU5OTk4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlu b2RlIDU4NjIxMjksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg NTg2MjEzMCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1ODYy MTMzLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU4NjIxNzMs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTg2MjE3NSwgbW92 aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1ODYyMTc3LCBtb3Zpbmcg dG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU4NzA0MTIsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTg3MDQ3MCwgbW92aW5nIHRvIGxvc3Qr Zm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1ODcwNTgwLCBtb3ZpbmcgdG8gbG9zdCtmb3Vu ZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU4NzA2MTUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTg3MDYxNywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29u bmVjdGVkIGRpciBpbm9kZSA1ODcwNjIxLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0 ZWQgZGlyIGlub2RlIDU4NzA2NDEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgNTg3MDY0MywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBp bm9kZSA1ODcwNjQ2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2Rl IDU4NzA2NjAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTg3 MDY2NywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1ODcwNjcx LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU4NzA2ODEsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTg3MDY4NiwgbW92aW5n IHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1ODcwNzM1LCBtb3ZpbmcgdG8g bG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU4NzA3NjAsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTg3MDc2NCwgbW92aW5nIHRvIGxvc3QrZm91 bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1ODc2MzgxLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApk aXNjb25uZWN0ZWQgZGlyIGlub2RlIDU4ODgyOTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgNTg4ODMwMiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVj dGVkIGRpciBpbm9kZSA1ODg5ODA2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQg ZGlyIGlub2RlIDU4ODk4MTUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgNTg4OTgyMywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9k ZSA1OTA2MTIyLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU5 MDYxMjYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTkwNjE3 NiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1OTA2MzM5LCBt b3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU5MDYzNzAsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTkwNjM4NSwgbW92aW5nIHRv IGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1OTExNDU5LCBtb3ZpbmcgdG8gbG9z dCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU5MTE1NzIsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTkyOTcxMywgbW92aW5nIHRvIGxvc3QrZm91bmQK ZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1OTI5NzE4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNj b25uZWN0ZWQgZGlyIGlub2RlIDU5Mjk3MjAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgNTkyOTc1MywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVk IGRpciBpbm9kZSA1OTM4NDk5LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGly IGlub2RlIDU5Mzg1NTAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgNTkzODU1NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1 OTg3NDc2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU5ODc0 ODQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTk5ODgzNSwg bW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGlub2RlIDU5OTg4MzksIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTk5ODg0NiwgbW92aW5nIHRvIGxv c3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA1OTk4ODUzLCBtb3ZpbmcgdG8gbG9zdCtm b3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDU5OTg4NjMsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNTk5ODg2OSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlz Y29ubmVjdGVkIGRpciBpbm9kZSA1OTk4ODcyLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25u ZWN0ZWQgZGlyIGlub2RlIDU5OTg4NzMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgNjAyODk2MCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRp ciBpbm9kZSA2MDI4OTYxLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlu b2RlIDYwMjg5NjIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg NjAyODk2MywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA2MDI4 OTY1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDYwMjkwMDEs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNjAzMjAxNSwgbW92 aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA2MDMyMDM0LCBtb3Zpbmcg dG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDYwMzIwNDYsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNjA2MDI0MCwgbW92aW5nIHRvIGxvc3Qr Zm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA2MDYyMjgwLCBtb3ZpbmcgdG8gbG9zdCtmb3Vu ZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDYwNjI0NjYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgNjA2MjQ3MSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29u bmVjdGVkIGRpciBpbm9kZSA2MDYyNDczLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0 ZWQgZGlyIGlub2RlIDYwNjI0NzgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgNjA2MjYzNSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBp bm9kZSA2MDYyNjQ0LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2Rl IDYxODA2NTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNjE4 MDY1NSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA2MTgyNjI0 LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDYxODI2NDIsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNjE4MjY0OSwgbW92aW5n IHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA2MTg4ODc2LCBtb3ZpbmcgdG8g bG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDYxODg4ODAsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNjE5MDI0NCwgbW92aW5nIHRvIGxvc3QrZm91 bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA2MTkwMjQ4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApk aXNjb25uZWN0ZWQgZGlyIGlub2RlIDYxOTAyNTIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgNjE5MDI1NSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVj dGVkIGRpciBpbm9kZSA2MTkwMjgyLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQg ZGlyIGlub2RlIDYxOTE4MjUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgNjE5MTg2NiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9k ZSA2MTkxODY4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDYx OTIxNDIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNjE5MjE0 NSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA2MTkyMTUxLCBt b3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDYxOTIxNTYsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNjE5MjE2MywgbW92aW5nIHRv IGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA2MTkyMTY2LCBtb3ZpbmcgdG8gbG9z dCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDYxOTIxODQsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNjE5OTc3OCwgbW92aW5nIHRvIGxvc3QrZm91bmQK ZGlzY29ubmVjdGVkIGRpciBpbm9kZSA2MTk5Nzg2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNj b25uZWN0ZWQgZGlyIGlub2RlIDYxOTk3OTcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgNjE5OTgxMywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVk IGRpciBpbm9kZSA2MjAwMDM0LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGly IGlub2RlIDYyMDAxNDcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgNjIwMDIyOCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA2 MjAwMjM1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDYyMDAz MzcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNjIwMDMzOSwg bW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA2MjAwMzU4LCBtb3Zp bmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDYyMDAzNTksIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNjIyNzIxMiwgbW92aW5nIHRvIGxv c3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA2MjMwMjI4LCBtb3ZpbmcgdG8gbG9zdCtm b3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDYyMzAyMzAsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNjIzMDIzMiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlz Y29ubmVjdGVkIGRpciBpbm9kZSA2MjM4NDMyLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25u ZWN0ZWQgZGlyIGlub2RlIDYyMzg0MzUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgNjIzODQzNiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRp ciBpbm9kZSA2MjM4NDM4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlu b2RlIDYyMzg0NTcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg NjIzODQ2MCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA2MjQ0 ODY2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDYyNDQ4Njgs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNjI0NDg3MCwgbW92 aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA2MjQ0ODcyLCBtb3Zpbmcg dG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDYyNDQ4NzQsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNjI0NDg3NiwgbW92aW5nIHRvIGxvc3Qr Zm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA2MjQ0ODc4LCBtb3ZpbmcgdG8gbG9zdCtmb3Vu ZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDYyNDQ4ODAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgNjI0NDg4MiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29u bmVjdGVkIGRpciBpbm9kZSA2MjQ0ODg1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0 ZWQgZGlyIGlub2RlIDYzMDgyOTMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgNjMwODI5NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBp bm9kZSA2MzA4Mjk1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2Rl IDYzMDgyOTcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgNjMw ODMwMCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA2MzA4MzE1 LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg0Mjk3NDgsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODQyOTgzMywgbW92aW5n IHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NDMxODQ0LCBtb3ZpbmcgdG8g bG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg0MzE4NDksIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODQzMTg1OSwgbW92aW5nIHRvIGxvc3QrZm91 bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NDMxODY0LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApk aXNjb25uZWN0ZWQgZGlyIGlub2RlIDg0MzE4ODMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgODQzMTg4OCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVj dGVkIGRpciBpbm9kZSA4NDMxODkzLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQg ZGlyIGlub2RlIDg0MzE4OTYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgODQzMTkwMCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9k ZSA4NDMyNzcwLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg0 MzI3OTcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODQzNjE4 OSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NDM5OTY0LCBt b3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg0NTY4OTYsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODQ1NjkwMSwgbW92aW5nIHRv IGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NDU2OTA5LCBtb3ZpbmcgdG8gbG9z dCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg0NTY5MjgsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODQ1NjkzMiwgbW92aW5nIHRvIGxvc3QrZm91bmQK ZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NDU3ODU0LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNj b25uZWN0ZWQgZGlyIGlub2RlIDg0NTg3NjcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgODQ1ODkwMywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVk IGRpciBpbm9kZSA4NDU4OTE1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGly IGlub2RlIDg0NTkwNjAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgODQ1OTA4MSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4 NDU5MTQzLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg0NTkx NTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODQ1OTE3OCwg bW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NDc2NTM1LCBtb3Zp bmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg0NzY1MzgsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODQ3NjU1MCwgbW92aW5nIHRvIGxv c3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NDc2NTU1LCBtb3ZpbmcgdG8gbG9zdCtm b3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg0NzY1NjEsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODQ3NjU3MCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlz Y29ubmVjdGVkIGRpciBpbm9kZSA4NDkxMzIzLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25u ZWN0ZWQgZGlyIGlub2RlIDg1MDE1NjAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgODUwNTE2NywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRp ciBpbm9kZSA4NTA1MTY4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgaW5vZGUg ODUwNTE4NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NTM5 Njg5LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg1Mzk2OTYs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODU3MDIyMywgbW92 aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NTcxNjAzLCBtb3Zpbmcg dG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg1NzQxOTQsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODU3NDE5OCwgbW92aW5nIHRvIGxvc3Qr Zm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NTc0MjAyLCBtb3ZpbmcgdG8gbG9zdCtmb3Vu ZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg1NzQyMDQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgODU3NDIwOSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29u bmVjdGVkIGRpciBpbm9kZSA4NTc0MzIwLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0 ZWQgZGlyIGlub2RlIDg1NzQzODEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgODU3NDQwOSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBp bm9kZSA4NTc0NDI1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2Rl IDg1NzQ0MjksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODU3 NDg4NSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NTc0ODk2 LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg1NzQ5MDYsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODYwNjc1MCwgbW92aW5n IHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NjA4MTc5LCBtb3ZpbmcgdG8g bG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg2MDgxODMsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODYwODE5NCwgbW92aW5nIHRvIGxvc3QrZm91 bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NjA4MTk2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApk aXNjb25uZWN0ZWQgZGlyIGlub2RlIDg2MTU3NjEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgODYxNTc3NSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVj dGVkIGRpciBpbm9kZSA4NjU5MzA5LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQg ZGlyIGlub2RlIDg2NTkzNDQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgODY2MjA0OCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9k ZSA4NjYyMDc2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg2 NjMzOTIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODY2MzM5 MywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NjYzNDEzLCBt b3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg2NjM1MTIsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODY2MzY1MCwgbW92aW5nIHRv IGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NjYzNjU0LCBtb3ZpbmcgdG8gbG9z dCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg2NjM2NjcsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODY2MzY3MiwgbW92aW5nIHRvIGxvc3QrZm91bmQK ZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NjYzNjc5LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNj b25uZWN0ZWQgZGlyIGlub2RlIDg2NjM3MzQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgODY2Mzc2NSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVk IGRpciBpbm9kZSA4NjY0MTEzLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGly IGlub2RlIDg2NzIyMTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgODcwNjk2OCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4 NzA2OTc3LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg3MDY5 ODksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODcwNzAwOSwg bW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NzA3MDE3LCBtb3Zp bmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg3MDcwMjUsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODcwNzM0NCwgbW92aW5nIHRvIGxv c3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NzA3MzUwLCBtb3ZpbmcgdG8gbG9zdCtm b3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg3MzE1MDksIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODczMTU4NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlz Y29ubmVjdGVkIGRpciBpbm9kZSA4NzMxNTk1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25u ZWN0ZWQgZGlyIGlub2RlIDg3MzE2NjAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgODc0NDQzNiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRp ciBpbm9kZSA4NzQ0NDM4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlu b2RlIDg3NDQ0NDIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg ODc0NDQ0NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NzQ0 NDQ2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg3NDQ0NDgs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODc0NDQ1MCwgbW92 aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NzQ0NDUyLCBtb3Zpbmcg dG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg3NDQ0NTQsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODc0NDQ1NiwgbW92aW5nIHRvIGxvc3Qr Zm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4NzQ0NDU4LCBtb3ZpbmcgdG8gbG9zdCtmb3Vu ZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg3NDQ0NjAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgODc0NDQ2MiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29u bmVjdGVkIGRpciBpbm9kZSA4NzQ0NDY2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0 ZWQgZGlyIGlub2RlIDg3ODM0OTcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgODc5MDY3NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGlub2Rl IDg3OTUzNjgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODc5 NTM3NiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4ODA5OTA2 LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg4MTA4MzYsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODgxNDgzOCwgbW92aW5n IHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4ODE1MTAzLCBtb3ZpbmcgdG8g bG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg4MTUxMDYsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODgxNTExMCwgbW92aW5nIHRvIGxvc3QrZm91 bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4ODE1MTI0LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApk aXNjb25uZWN0ZWQgZGlyIGlub2RlIDg4MTUxMjcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgODgxNTEzMiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVj dGVkIGRpciBpbm9kZSA4ODE1MTY5LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQg ZGlyIGlub2RlIDg4MTUxNzYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgODgxNTE4MCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9k ZSA4ODE1MTgzLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg4 MTUxODQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODgxNTIw MiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4ODE1MjE0LCBt b3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg4MTY0MzgsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODgxNjQ0OCwgbW92aW5nIHRv IGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4ODE2NDY4LCBtb3ZpbmcgdG8gbG9z dCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg4MTY1NzQsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODgyMzQ4OSwgbW92aW5nIHRvIGxvc3QrZm91bmQK ZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4ODIzNDkwLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNj b25uZWN0ZWQgZGlyIGlub2RlIDg4MjM0OTIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgODgyMzQ5NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVk IGRpciBpbm9kZSA4ODIzNDk4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGly IGlub2RlIDg4MjM1MTAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgODgyMzYwMSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4 ODIzNjAzLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg4MjM2 MTIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODgyMzYyOCwg bW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4ODIzNjMwLCBtb3Zp bmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg4MjM2MzIsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODgyMzYzNCwgbW92aW5nIHRvIGxv c3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4ODIzNzA0LCBtb3ZpbmcgdG8gbG9zdCtm b3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg4MjM3MTMsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODgyMzcxNSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlz Y29ubmVjdGVkIGRpciBpbm9kZSA4ODIzNzE3LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25u ZWN0ZWQgZGlyIGlub2RlIDg4MjM3ODQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgODgyMzc4NywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRp ciBpbm9kZSA4ODIzNzg5LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlu b2RlIDg4MjM3OTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg ODgyMzc5NywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4ODIz ODAwLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg4MjM4MDks IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODgyMzgxNiwgbW92 aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4ODIzODIzLCBtb3Zpbmcg dG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg4MjM4MjgsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODgyMzgzMCwgbW92aW5nIHRvIGxvc3Qr Zm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4ODIzODMzLCBtb3ZpbmcgdG8gbG9zdCtmb3Vu ZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg4NDY2MDQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgODg0NjYxMCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29u bmVjdGVkIGRpciBpbm9kZSA4ODQ2NjQ0LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0 ZWQgZGlyIGlub2RlIDg4NDY2NDYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgODg1MDg1NCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBp bm9kZSA4ODUwODU2LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2Rl IDg4NTA4NTgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODg1 MDg4MywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4ODUwOTA3 LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg4NTA5NDYsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODg1MDk2MSwgbW92aW5n IHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4ODUwOTk5LCBtb3ZpbmcgdG8g bG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg4NTEwMDYsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODg1MTA1MCwgbW92aW5nIHRvIGxvc3QrZm91 bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4OTExODc4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApk aXNjb25uZWN0ZWQgZGlyIGlub2RlIDg5MTE4OTAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgODkzMjMwNCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVj dGVkIGRpciBpbm9kZSA4OTM3MTIxLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQg ZGlyIGlub2RlIDg5MzcxMjUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgODk0NTI1NSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9k ZSA4OTQ1Mjc0LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg5 NTA0ODMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODk1MDQ4 NywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4OTgwMjI3LCBt b3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg5ODM0MDUsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODk4MzQwNywgbW92aW5nIHRv IGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA4OTgzNTc4LCBtb3ZpbmcgdG8gbG9z dCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDg5ODQ5MjgsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgODk4NDk1OCwgbW92aW5nIHRvIGxvc3QrZm91bmQK ZGlzY29ubmVjdGVkIGRpciBpbm9kZSA5MDE5NjIwLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNj b25uZWN0ZWQgZGlyIGlub2RlIDkwMTk2MjIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgOTA1MDk1MywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVk IGlub2RlIDkwNjg5NjIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgOTA3OTc0MiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA5 MDc5NzQ0LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDkwNzk3 NDYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgOTA3OTc2NCwg bW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA5MDk5MDgzLCBtb3Zp bmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDkwOTkwOTYsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgOTExMjk2OCwgbW92aW5nIHRvIGxv c3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA5MTE5MjIzLCBtb3ZpbmcgdG8gbG9zdCtm b3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDkxMjQ0MjgsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgOTEyNzgxOCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlz Y29ubmVjdGVkIGRpciBpbm9kZSA5MTI3ODM4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25u ZWN0ZWQgZGlyIGlub2RlIDkxMzg5NjcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgOTEzODk3NSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRp ciBpbm9kZSA5MTM5MDI4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlu b2RlIDkxMzkwNTMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg OTEzOTI5MiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA5MTM5 NDIwLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDkxNDA3Mzcs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgOTE0MDc3MywgbW92 aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA5MTQ4MjUxLCBtb3Zpbmcg dG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDkxNDgyNTQsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgOTIwODczMywgbW92aW5nIHRvIGxvc3Qr Zm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA5MjA4NzUxLCBtb3ZpbmcgdG8gbG9zdCtmb3Vu ZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDkyMDg3NTMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgOTIwODc1NiwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29u bmVjdGVkIGRpciBpbm9kZSA5MjA4NzYzLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0 ZWQgZGlyIGlub2RlIDkyMDg3NzMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgOTIwODc3NSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBp bm9kZSA5MjA4Nzg1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2Rl IDkyMDg4MDgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgOTIw ODgwOSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA5MjA4ODEx LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDkyMDg5MTcsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgOTIwOTAzMCwgbW92aW5n IHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA5MjA5MDMxLCBtb3ZpbmcgdG8g bG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDkyMDkwMzYsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgOTIwOTAzOSwgbW92aW5nIHRvIGxvc3QrZm91 bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA5MjA5MDQxLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApk aXNjb25uZWN0ZWQgZGlyIGlub2RlIDkyMDk2ODAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgOTIwOTY4MSwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVj dGVkIGRpciBpbm9kZSA5MjA5Njg1LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQg ZGlyIGlub2RlIDkyMDk2ODcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgOTI0MTY2MCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9k ZSA5MjQxNzMwLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDky NDE3MzcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgOTI0MTcz OCwgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA5MjQxODA4LCBt b3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDkyNDE4MTEsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgOTI2OTY1NiwgbW92aW5nIHRv IGxvc3QrZm91bmQKZGlzY29ubmVjdGVkIGRpciBpbm9kZSA5MzEzMjQ4LCBtb3ZpbmcgdG8gbG9z dCtmb3VuZApkaXNjb25uZWN0ZWQgZGlyIGlub2RlIDkzMTMyNjEsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgOTMxMzI3NiwgbW92aW5nIHRvIGxvc3QrZm91bmQK ZGlzY29ubmVjdGVkIGRpciBpbm9kZSA5MzEzMjgwLCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNj b25uZWN0ZWQgZGlyIGlub2RlIDkzMTMyODksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgOTMyNzUwMywgbW92aW5nIHRvIGxvc3QrZm91bmQKZGlzY29ubmVjdGVk IGRpciBpbm9kZSA5MzI3NTM4LCBtb3ZpbmcgdG8gbG9zdCtmb3VuZApkaXNjb25uZWN0ZWQgZGly IGlub2RlIDkzNTQ3MDUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTE2ODcwMDgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTE2ODcwMTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTE2 ODcwNzIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTE2ODgz NzksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTE3NzY2NjMs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTE3ODAwNTEsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTIzMDQ0MDYsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTIzMDQ0NDIsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI1ODMzMjgsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI1ODMzNzEsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI1ODM0NDcsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI1ODM0OTQsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI1ODM0OTcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI1ODM1ODQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTI1ODM3MDEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTI1OTE1NjYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTI1OTE1NjcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTI1OTE1NjgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTI1OTE1NzQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTI1OTE1NzYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTI1OTc3NDksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2 MDYxNzUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MDYx NzgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MDYxODEs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MDYxOTMsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MDYyMDQsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MTYxNjUsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MTYyNzksIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MTY1NDcsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MTY1NTQsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MTY1NTYsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MTY1NjAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MTY1NjksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTI2MjEyOTcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTI2MjE0MjEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTI2MjMyODksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTI2MjMyOTAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTI2MjYxOTYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTI2MjYyMzAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTI2MzM4MjcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2 MzM4MjksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MzM4 MzQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MzM4MzYs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MzM4NDAsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MzM4NDIsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MzM4NDQsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MzM4NDYsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MzM4NDgsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MzM4NTAsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MzM4NTIsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MzM4NzIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2MzM4NzgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTI2MzY3NTQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTI2MzcwNjUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTI2MzcwNjgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTI2MzcwODIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTI2MzcwODYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTI2NDA3NjgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTI2NDA3ODUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2 NDA4MTQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2NjA0 NjAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2NjA3OTUs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2Nzg2MjcsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2Nzg2MzMsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2Nzg2MzUsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2Nzg2NDIsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2Nzg2NTAsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2NzkyNDUsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2ODAwNjgsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2ODAwODEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2ODAwODQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTI2ODAxMDAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTI2ODA2NTYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTI2ODA2NjEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTI2ODA2NjMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTI2ODA2NjcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTI2ODA2NjksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTI2ODA2NzQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2 ODA2ODEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2ODA2 ODMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2OTE0ODIs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2OTE1MTUsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2OTk1MDAsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2OTk1MDIsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2OTk1MzAsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2OTk1NDMsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2OTk1NTEsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2OTk2MzUsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2OTk2MzgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI2OTk2NDEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTI2OTk2NTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTI3MDAyNzQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTI3MDAyNzgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTI3MDAyNzksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTI3MDAyODEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTI3MDAyODcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTI3MDAzOTgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI3 MDAzOTksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI3MDA0 MDEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI3MTkyMzgs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI3MzY5NjksIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI3MzY5ODYsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI3MzY5ODgsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI3MzcwMTAsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI3MzcwMTIsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI3MzcwNTksIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI3MzcwNjEsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI3MzcwNjMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI3MzcwNzAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTI3MzcwOTksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTI3NTcyMzcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTI3NTcyMzgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTI3NTcyNTQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTI3NTcyNjQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTI3NTcyNzYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTI4MDk2ODAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI4 MDk2ODcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI4MDk3 MjksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI4MTAzOTMs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI4MzU5MTMsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI4MzU5MzEsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI4MzU5NDMsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI4MzYxMzksIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI4Mzg4NDAsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI4Mzg4NDYsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI4NTgyNzIsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI4NTgyODAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI4NzM1NTMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTI4NzM2NjYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTI5MTM1OTcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTI5MTQ0NzQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTI5MTQ2MTIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTI5MTQ3NTAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTI5MTQ5MjAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTI5MjEzMjMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI5 MjEzOTYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI5NDQ5 OTIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTI5NDUwNDEs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMwNTQ2NzcsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMwNjQ3MjAsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMwNjQ3MzQsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMwNzI0ODcsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMwNzI1NDIsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMwODEzNjQsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMxMDYxMzIsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMxMDk2MDMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMxMDk2MjIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTMxMDk2MjQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTMxMDk2MjYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTMxMTMzMTYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTMxMTcxODEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTMxMTcxODIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTMxNzk1NjYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTMxNzk3NzgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMx Nzk5MTUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMxODE5 OTgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMzMjg5NTcs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMzMjk4MDksIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMzMjk4NjksIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMzMjk4OTQsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMzMzE4NDIsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMzMzIwMzMsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMzMzMzMjksIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMzMzMzNTQsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMzMzMzNTgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMzNTQ2MDcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTMzNTQ2MTQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTMzNTQ2NzQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTMzNTQ2ODUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTMzNTcyMjksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTMzODc5MTAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTMzODc5MjIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTMzODc5MjMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMz ODc5MjcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTMzODc5 NDAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0MDQ0MzUs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0MDQ0MzgsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0MjExMzcsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0MjIyMTcsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0MjIzOTUsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0MjI0NjcsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0MjI1MDUsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0MjQwOTcsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0MjQxMDAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0MjQxMTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTM0MjQxMTUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTM0MjQxMTgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTM0MjQxMjAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTM0MjQxNDEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTM0MjQxNDQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTM0MjQyNDgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTM0MjQyNDksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0 MjQyNTMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0MjQz NTYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0MjQzNTks IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTMxMjgsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTMxMzUsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTMxNDQsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTMyNTcsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTMyNTgsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTMyNjgsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTMyOTIsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTQxMzgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTUzMTMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTM0NTU0OTMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTM0NTU1MTYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTM0NTU2ODMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTM0NTU4NzYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTM0NTU5MjksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTM0NTU5MzAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTM0NTU5MzEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0 NTU5MzIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTU5 MzMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTU5MzQs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYwMzcsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYwNjMsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYwNjQsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYwNjUsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYwNjYsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYwNjcsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYwNjgsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYwNzUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYxMzIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYxMzksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTM0NTYxNDAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTM0NTYxNDEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTM0NTYxNDIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTM0NTYxNDMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTM0NTYxNDQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTM0NTYxNTgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0 NTYxNjUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYx NjYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYxNjcs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYxNjgsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYxNjksIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYxNzAsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYxODQsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYxOTEsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYyNTYsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYyNTcsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYyNTgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYyNTksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTM0NTYyNjAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTM0NTYyNjcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTM0NTYyNjgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTM0NTYyNjksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTM0NTYyNzAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTM0NTYyNzEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTM0NTYyNzIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM0 NTYyOTksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MDE0 NDEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MDE0ODAs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MDE0OTAsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MDE0OTUsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MjQ4MDAsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MjQ4MDYsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MjQ4MTIsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MjQ4MjUsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MjQ4MzYsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MjUyNDAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MjU1MzYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTM1MjYxMTAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTM1MjYxOTYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTM1MjYyMDIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTM1MjYyMTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTM1MjYzODYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTM1MjYzOTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTM1MjYzOTUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1 MjY0MDAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MjY0 MTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MjY1NDEs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MjY3MjgsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MjY3NDYsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MjY3NTAsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MjY3NTMsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MjY3NTcsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MjY3NTksIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MjY3NjQsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MjY3NzksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM1MzUxNjYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTM1MzUxOTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTM2MzEwNDksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTM2MzEwNzAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTM2MzEwOTYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTM2MzEyOTYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTM2MzEzMTQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTM2MzEzMzUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2 MzEzNTksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2MzE1 OTksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2MzE2MDQs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2MzE2MDksIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2MzE2MTQsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2MzE2MTksIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2MzE2MjQsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2MzE2MjksIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2MzE2MzQsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2MzE2MzksIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2MzIwNjUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2MzIwNzksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTM2MzI4NzUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTM2NzU5OTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTM2NzYxMDIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTM2NzYyMDIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTM2NzYyMTMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTM2NzYzMDEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTM2NzYzMjUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2 NzYzMjcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2NzYz MzYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2NzYzMzcs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2NzY1NjcsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2NzY1NzYsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2NzY1OTAsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2NzY1OTIsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2NzY1OTksIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2NzczOTEsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2NzczOTQsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2Nzc0MDAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM2Nzc0MDQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTM2ODM5MjQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTM2ODQwMTMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTM3MzIwODEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTM3MzIwOTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTM3MzIxNjEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTM3MzIxOTUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTM3MzIzNzgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM3 MzI0NDksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM3MzI1 MDQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM3MzI3ODEs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM3Mzk1NjgsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM3Mzk4MTQsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM3Mzk4MzIsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM5MDY3NTcsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM5MDY3OTQsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM5MTc4NDgsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM5MTgyOTUsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM5MTg5NDQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM5MTg5NTYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTM5MTg5NjQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTM5MTkwMTQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTM5MTkwNDUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTM5MTkxMzcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTM5MTkxNTcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTM5MTkxNTgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTM5MTkyMTAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM5 NTY2NTcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM5NTY2 NzYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM5NTgyNjgs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM5NTkwNzMsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM5NTkwOTYsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM5NTkyNTIsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTM5NTkzNzMsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwNTEwMTIsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwNTEwMTksIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwNTEwNzksIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwNTEwOTgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwNTExMDUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTQwNTExOTksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTQwNTEyMDYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTQwNTEzMTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTQwNTEzMTksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTQwNTk4NDgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTQwNTk5OTgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTQwNjAwMDgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQw NjAwMTAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwNjAw MjEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwNjAyNTks IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwNjA2MDcsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwODQzMzYsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwODQ0MzcsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwODQ0MzksIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwODQ4MTYsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwODQ4MTgsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwODQ4MjAsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwODQ4MjIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwODQ4MjgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTQwODQ4MzAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTQwODQ4MzIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTQwODQ4MzQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTQwODQ4MzYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTQwODQ5NTMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTQwODQ5NjYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTQwODQ5NzUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQw ODUwMzAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwODUw MzksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwODUwNDgs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwODU0MjEsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwODU0NTIsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwODU1MzUsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwODU1NTgsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwODU2MjcsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwODU2NzIsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwODU2NzYsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwODU3NzEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQwODU3ODUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTQwODYxMjYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTQwODYxMzEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTQwODYxNDAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTQwODYxNDUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTQxMTU4MzUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTQxMTU4NTAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTQxMTU4NTUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQx MTU4NTgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxMTU4 NjEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxMTU4NzMs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxNTkxNTEsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxNTk1ODAsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxNTk1ODMsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxNTk2ODMsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxNTk2ODUsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxNTk2ODgsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxNTk2OTAsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxNTk2OTIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxNTk3MzgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTQxNTk3NDAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTQxNTk3NDIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTQxNTk3NzYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTQxNTk3NzgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTQxNTk3ODMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTQxNTk3OTIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTQxNTk4MDUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQx NjAxOTAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxNjAx OTYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxNjAxOTgs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxNjAyMDAsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxNjExNjIsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxNjExNzgsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxNjExODAsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxNjExODIsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxNjE0OTYsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxNjIzMjgsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxNjMzMDcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQxNjMzNDMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTQyMzcxNDQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTQyMzcxOTksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTQyMzcyNDUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTQyMzczMjMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTQyNDQ5MjEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTQyNDQ5NjcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTQyNDUwMTMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQy NDUwOTEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDUx NjksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDUyMTUs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDUyNzAsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDcxMDgsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDcxODYsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDcyMjcsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDcyNzMsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDczNTEsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDc0MjksIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDc0NzUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDc1NDcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTQyNDc1OTMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTQyNDc2ODYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTQyNDc3MzIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTQyNDc4MTAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTQyNDc4OTcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTQyNDc5NDAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTQyNDc5ODksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQy NDgwNjcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDgx NDUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDgxOTEs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDgzMjksIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDg0MDcsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDg0OTQsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDg1NDAsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDg1OTUsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDg2NzMsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDkzMDQsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDk2MzgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQyNDk2NDEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTQyNDk2NDMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTQyNDk2NDUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTQyNTExNjcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTQyNTEzNDcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTQzMDIyODcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTQzMDIzMDIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTQzMDI0MzIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQz MDI0NDYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQzMDI0 NjAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQzMDI0NzQs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQzMDI0ODgsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQzMDI1NjUsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQzMDI1NzUsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQzMDI2MDgsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQzNTA5MzAsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQ1MjgzODQsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQ1Mjg0MzUsIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQ2NjQ3NjksIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQ2NjQ3NzQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTQ2NjU0NTcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTQ2NjU0NjEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTQ2NjU0NjYsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTQ2NjU1NDMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIg aW5vZGUgMTQ2NjYzMzEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5v ZGUgMTQ2NjY2MDgsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUg MTQ2NjY2MjUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQ2 NjY2NDIsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQ2Njcx MTQsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQ3MDU5NDEs IG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQ3MDU5NDIsIG1v dmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQ3MDU5NDMsIG1vdmlu ZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQ3MDU5NDQsIG1vdmluZyB0 byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQ5NjUzNTMsIG1vdmluZyB0byBs b3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQ5NjUzNTUsIG1vdmluZyB0byBsb3N0 K2ZvdW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQ5NjUzNTcsIG1vdmluZyB0byBsb3N0K2Zv dW5kCmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQ5NjUzNTksIG1vdmluZyB0byBsb3N0K2ZvdW5k CmRpc2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQ5NjUzNjEsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRp c2Nvbm5lY3RlZCBkaXIgaW5vZGUgMTQ5NjUzNjMsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nv bm5lY3RlZCBkaXIgaW5vZGUgMTQ5NjUzNjUsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5l Y3RlZCBkaXIgaW5vZGUgMTQ5NjUzNjcsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3Rl ZCBkaXIgaW5vZGUgMTQ5NjUzNzAsIG1vdmluZyB0byBsb3N0K2ZvdW5kCmRpc2Nvbm5lY3RlZCBk aXIgaW5vZGUgMTUwMTg0MDcsIG1vdmluZyB0byBsb3N0K2ZvdW5kClBoYXNlIDcgLSB2ZXJpZnkg YW5kIGNvcnJlY3QgbGluayBjb3VudHMuLi4KcmVzZXR0aW5nIGlub2RlIDEzMiBubGlua3MgZnJv bSAxMDQgdG8gNzAKcmVzZXR0aW5nIGlub2RlIDEzNCBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0 aW5nIGlub2RlIDEzNyBubGlua3MgZnJvbSAxNzUgdG8gMTI3CnJlc2V0dGluZyBpbm9kZSAxNDkg bmxpbmtzIGZyb20gMTIyIHRvIDkxCnJlc2V0dGluZyBpbm9kZSAxNTUgbmxpbmtzIGZyb20gMTUg dG8gMTMKcmVzZXR0aW5nIGlub2RlIDE3MyBubGlua3MgZnJvbSAxMjggdG8gMTAyCnJlc2V0dGlu ZyBpbm9kZSA0MTk0NDM3IG5saW5rcyBmcm9tIDgxMCB0byA1OTgKcmVzZXR0aW5nIGlub2RlIDQx OTQ0NDEgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSA0MTk0NDQzIG5saW5rcyBm cm9tIDcgdG8gNgpyZXNldHRpbmcgaW5vZGUgNDIxMTYyNCBubGlua3MgZnJvbSAxMiB0byAxMApy ZXNldHRpbmcgaW5vZGUgNDIxMjE3MSBubGlua3MgZnJvbSAxNyB0byAxMwpyZXNldHRpbmcgaW5v ZGUgNDI4OTM4MCBubGlua3MgZnJvbSAxMSB0byA5CnJlc2V0dGluZyBpbm9kZSA0Mjg5MzgzIG5s aW5rcyBmcm9tIDUgdG8gNApyZXNldHRpbmcgaW5vZGUgNDI5Njk3OCBubGlua3MgZnJvbSA5IHRv IDcKcmVzZXR0aW5nIGlub2RlIDQyOTY5OTYgbmxpbmtzIGZyb20gOCB0byA2CnJlc2V0dGluZyBp bm9kZSA0Mjk3MTQ4IG5saW5rcyBmcm9tIDUgdG8gNApyZXNldHRpbmcgaW5vZGUgNDI5NzQ4MCBu bGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDQyOTc1NzMgbmxpbmtzIGZyb20gNDQg dG8gMzMKcmVzZXR0aW5nIGlub2RlIDQyOTg1ODggbmxpbmtzIGZyb20gMiB0byAxCnJlc2V0dGlu ZyBpbm9kZSA0Mjk4NTg5IG5saW5rcyBmcm9tIDIgdG8gMQpyZXNldHRpbmcgaW5vZGUgNDI5ODc5 MyBubGlua3MgZnJvbSAzMiB0byAyNQpyZXNldHRpbmcgaW5vZGUgNDMwMjE4MCBubGlua3MgZnJv bSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDQzMDk5MTAgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0 dGluZyBpbm9kZSA0MzA5OTEyIG5saW5rcyBmcm9tIDIgdG8gMQpyZXNldHRpbmcgaW5vZGUgNDMw OTkxNiBubGlua3MgZnJvbSAyIHRvIDEKcmVzZXR0aW5nIGlub2RlIDQzMDk5MTcgbmxpbmtzIGZy b20gMyB0byAxCnJlc2V0dGluZyBpbm9kZSA0MzEwMDU5IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNl dHRpbmcgaW5vZGUgNDMxMDA2MSBubGlua3MgZnJvbSAyIHRvIDEKcmVzZXR0aW5nIGlub2RlIDQz MTAwNjUgbmxpbmtzIGZyb20gMiB0byAxCnJlc2V0dGluZyBpbm9kZSA0MzEwMDY2IG5saW5rcyBm cm9tIDMgdG8gMQpyZXNldHRpbmcgaW5vZGUgNDM1MTQwMiBubGlua3MgZnJvbSAxMCB0byA4CnJl c2V0dGluZyBpbm9kZSA0Mzc3MDM4IG5saW5rcyBmcm9tIDQyIHRvIDMyCnJlc2V0dGluZyBpbm9k ZSA0NDIwNTg3IG5saW5rcyBmcm9tIDE3IHRvIDE1CnJlc2V0dGluZyBpbm9kZSA0NDIwNzk2IG5s aW5rcyBmcm9tIDEwIHRvIDgKcmVzZXR0aW5nIGlub2RlIDQ0MjA4ODMgbmxpbmtzIGZyb20gNiB0 byA1CnJlc2V0dGluZyBpbm9kZSA0NDIxMTQxIG5saW5rcyBmcm9tIDcgdG8gNgpyZXNldHRpbmcg aW5vZGUgNDQzNTEwMCBubGlua3MgZnJvbSA4IHRvIDcKcmVzZXR0aW5nIGlub2RlIDQ0NDIxNzcg bmxpbmtzIGZyb20gMTAgdG8gOApyZXNldHRpbmcgaW5vZGUgNDQ0Mjk3MiBubGlua3MgZnJvbSA2 IHRvIDUKcmVzZXR0aW5nIGlub2RlIDQ0ODg3ODMgbmxpbmtzIGZyb20gNiB0byA1CnJlc2V0dGlu ZyBpbm9kZSA0NDg4ODA1IG5saW5rcyBmcm9tIDUgdG8gNApyZXNldHRpbmcgaW5vZGUgNDQ4ODgx NiBubGlua3MgZnJvbSAxMCB0byA4CnJlc2V0dGluZyBpbm9kZSA0NTE4MzYyIG5saW5rcyBmcm9t IDExIHRvIDkKcmVzZXR0aW5nIGlub2RlIDQ1MTk2OTUgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0 dGluZyBpbm9kZSA0NTI1NTIwIG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgNDUz Njc2MyBubGlua3MgZnJvbSA2IHRvIDUKcmVzZXR0aW5nIGlub2RlIDQ1NDUwNDEgbmxpbmtzIGZy b20gNiB0byA1CnJlc2V0dGluZyBpbm9kZSA0NTQ5NTI2IG5saW5rcyBmcm9tIDExIHRvIDEwCnJl c2V0dGluZyBpbm9kZSA0NTYxMDUxIG5saW5rcyBmcm9tIDYgdG8gNQpyZXNldHRpbmcgaW5vZGUg NDYyNjg4OCBubGlua3MgZnJvbSA1IHRvIDQKcmVzZXR0aW5nIGlub2RlIDQ2MjY5ODggbmxpbmtz IGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSA0NjI3Mzg2IG5saW5rcyBmcm9tIDcgdG8gNgpy ZXNldHRpbmcgaW5vZGUgNDY4NDg5MCBubGlua3MgZnJvbSA4IHRvIDcKcmVzZXR0aW5nIGlub2Rl IDQ2ODQ4OTEgbmxpbmtzIGZyb20gNSB0byA0CnJlc2V0dGluZyBpbm9kZSA0NzA2ODY2IG5saW5r cyBmcm9tIDEzIHRvIDEwCnJlc2V0dGluZyBpbm9kZSA0NzA5NTE4IG5saW5rcyBmcm9tIDM2IHRv IDI4CnJlc2V0dGluZyBpbm9kZSA0NzE2MTQ0IG5saW5rcyBmcm9tIDkgdG8gNwpyZXNldHRpbmcg aW5vZGUgNDgxMzczNiBubGlua3MgZnJvbSA1IHRvIDQKcmVzZXR0aW5nIGlub2RlIDQ4MTM5NTMg bmxpbmtzIGZyb20gNiB0byA1CnJlc2V0dGluZyBpbm9kZSA0ODE1NDc4IG5saW5rcyBmcm9tIDUg dG8gNApyZXNldHRpbmcgaW5vZGUgNDg2MTUyNSBubGlua3MgZnJvbSA1IHRvIDQKcmVzZXR0aW5n IGlub2RlIDQ5Mzc5MjEgbmxpbmtzIGZyb20gOCB0byA1CnJlc2V0dGluZyBpbm9kZSA0OTM5NjU4 IG5saW5rcyBmcm9tIDggdG8gNwpyZXNldHRpbmcgaW5vZGUgNDkzOTgzMiBubGlua3MgZnJvbSA2 IHRvIDUKcmVzZXR0aW5nIGlub2RlIDQ5NDA0MDUgbmxpbmtzIGZyb20gNSB0byA0CnJlc2V0dGlu ZyBpbm9kZSA0OTc0Njc3IG5saW5rcyBmcm9tIDcgdG8gNgpyZXNldHRpbmcgaW5vZGUgNDk3NDY5 OSBubGlua3MgZnJvbSA5IHRvIDcKcmVzZXR0aW5nIGlub2RlIDQ5NzQ3MDAgbmxpbmtzIGZyb20g MTkgdG8gMTUKcmVzZXR0aW5nIGlub2RlIDQ5NzYwMDcgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0 dGluZyBpbm9kZSA0OTc2MTQzIG5saW5rcyBmcm9tIDYgdG8gNQpyZXNldHRpbmcgaW5vZGUgNDk5 NTY4NiBubGlua3MgZnJvbSAxMiB0byAxMQpyZXNldHRpbmcgaW5vZGUgNDk5NTY5NiBubGlua3Mg ZnJvbSAyMiB0byAxNwpyZXNldHRpbmcgaW5vZGUgNDk5NTg4MiBubGlua3MgZnJvbSAxNSB0byAx MwpyZXNldHRpbmcgaW5vZGUgNDk5NzQ3NCBubGlua3MgZnJvbSA3IHRvIDYKcmVzZXR0aW5nIGlu b2RlIDUwMDAwNTAgbmxpbmtzIGZyb20gMTUgdG8gMTIKcmVzZXR0aW5nIGlub2RlIDUwMDI5MzAg bmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSA1MDQzNzAyIG5saW5rcyBmcm9tIDIy IHRvIDE4CnJlc2V0dGluZyBpbm9kZSA1MDQzNzMxIG5saW5rcyBmcm9tIDY0NiB0byA0ODUKcmVz ZXR0aW5nIGlub2RlIDUwNDM4MDggbmxpbmtzIGZyb20gNyB0byA2CnJlc2V0dGluZyBpbm9kZSA1 MDQ0MTY3IG5saW5rcyBmcm9tIDE1IHRvIDEyCnJlc2V0dGluZyBpbm9kZSA1MDQ0MTY4IG5saW5r cyBmcm9tIDcgdG8gNgpyZXNldHRpbmcgaW5vZGUgNTA0NDE3NCBubGlua3MgZnJvbSA5IHRvIDcK cmVzZXR0aW5nIGlub2RlIDUwNDQzOTggbmxpbmtzIGZyb20gMTUgdG8gMTIKcmVzZXR0aW5nIGlu b2RlIDUwNDQ0MDUgbmxpbmtzIGZyb20gNyB0byA2CnJlc2V0dGluZyBpbm9kZSA1MDQ0NDE5IG5s aW5rcyBmcm9tIDUgdG8gNApyZXNldHRpbmcgaW5vZGUgNTA0NDkyMyBubGlua3MgZnJvbSAxNCB0 byAxMQpyZXNldHRpbmcgaW5vZGUgNTA0NDk0MiBubGlua3MgZnJvbSAxNCB0byAxMQpyZXNldHRp bmcgaW5vZGUgNTA0NTEyNCBubGlua3MgZnJvbSAxNSB0byAxMgpyZXNldHRpbmcgaW5vZGUgNTA0 NTEzNyBubGlua3MgZnJvbSAxNSB0byAxMgpyZXNldHRpbmcgaW5vZGUgNTA0OTY5MCBubGlua3Mg ZnJvbSA1IHRvIDMKcmVzZXR0aW5nIGlub2RlIDUwOTg4NTkgbmxpbmtzIGZyb20gNyB0byA2CnJl c2V0dGluZyBpbm9kZSA1MTEwMTA5IG5saW5rcyBmcm9tIDUgdG8gNApyZXNldHRpbmcgaW5vZGUg NTE0NTA1OCBubGlua3MgZnJvbSA2IHRvIDUKcmVzZXR0aW5nIGlub2RlIDUyNDU1NTQgbmxpbmtz IGZyb20gMTQgdG8gMTEKcmVzZXR0aW5nIGlub2RlIDUyNDU2OTUgbmxpbmtzIGZyb20gMjIgdG8g MTcKcmVzZXR0aW5nIGlub2RlIDUyNzg4ODQgbmxpbmtzIGZyb20gNyB0byA2CnJlc2V0dGluZyBp bm9kZSA1Mjc5MzM3IG5saW5rcyBmcm9tIDUgdG8gNApyZXNldHRpbmcgaW5vZGUgNTMxMzI0NyBu bGlua3MgZnJvbSA1IHRvIDQKcmVzZXR0aW5nIGlub2RlIDUzMTMzMzQgbmxpbmtzIGZyb20gNzkg dG8gNjEKcmVzZXR0aW5nIGlub2RlIDUzMTQ4NTEgbmxpbmtzIGZyb20gMjYgdG8gMjMKcmVzZXR0 aW5nIGlub2RlIDU0NDc4MDcgbmxpbmtzIGZyb20gNSB0byA0CnJlc2V0dGluZyBpbm9kZSA1NDQ3 ODEzIG5saW5rcyBmcm9tIDUgdG8gNApyZXNldHRpbmcgaW5vZGUgNTU4MzE4NyBubGlua3MgZnJv bSAxMCB0byA4CnJlc2V0dGluZyBpbm9kZSA1NTgzMjAyIG5saW5rcyBmcm9tIDEwIHRvIDgKcmVz ZXR0aW5nIGlub2RlIDU1ODM0ODggbmxpbmtzIGZyb20gNSB0byA0CnJlc2V0dGluZyBpbm9kZSA1 NTgzNDg5IG5saW5rcyBmcm9tIDEyIHRvIDEwCnJlc2V0dGluZyBpbm9kZSA1NjM4MDI2IG5saW5r cyBmcm9tIDUgdG8gNApyZXNldHRpbmcgaW5vZGUgNTYzODA0MSBubGlua3MgZnJvbSA2IHRvIDUK cmVzZXR0aW5nIGlub2RlIDU2OTU4MzggbmxpbmtzIGZyb20gOCB0byA3CnJlc2V0dGluZyBpbm9k ZSA1Nzg2NTI4IG5saW5rcyBmcm9tIDEwIHRvIDgKcmVzZXR0aW5nIGlub2RlIDU3ODgzMzggbmxp bmtzIGZyb20gMTAgdG8gOApyZXNldHRpbmcgaW5vZGUgNTc4ODM0OSBubGlua3MgZnJvbSA4IHRv IDcKcmVzZXR0aW5nIGlub2RlIDU4MDIwNDQgbmxpbmtzIGZyb20gNjIgdG8gNDgKcmVzZXR0aW5n IGlub2RlIDU4MjMwNzMgbmxpbmtzIGZyb20gNiB0byA0CnJlc2V0dGluZyBpbm9kZSA1ODIzNDAy IG5saW5rcyBmcm9tIDkgdG8gNgpyZXNldHRpbmcgaW5vZGUgNTgyMzUyMCBubGlua3MgZnJvbSA3 IHRvIDYKcmVzZXR0aW5nIGlub2RlIDU4MjQ1NTIgbmxpbmtzIGZyb20gOCB0byA3CnJlc2V0dGlu ZyBpbm9kZSA1ODI0ODUxIG5saW5rcyBmcm9tIDE4IHRvIDE0CnJlc2V0dGluZyBpbm9kZSA1ODU5 OTcyIG5saW5rcyBmcm9tIDUgdG8gNApyZXNldHRpbmcgaW5vZGUgNTg2MDQyMSBubGlua3MgZnJv bSA1IHRvIDQKcmVzZXR0aW5nIGlub2RlIDU4NjA0MjcgbmxpbmtzIGZyb20gMjQgdG8gMTgKcmVz ZXR0aW5nIGlub2RlIDU4NjIxMzkgbmxpbmtzIGZyb20gMTkgdG8gMTUKcmVzZXR0aW5nIGlub2Rl IDU4NjIxNzUgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSA1ODc1NDYyIG5saW5r cyBmcm9tIDEwIHRvIDgKcmVzZXR0aW5nIGlub2RlIDU4NzU0NzMgbmxpbmtzIGZyb20gNiB0byA1 CnJlc2V0dGluZyBpbm9kZSA1ODc1NDc4IG5saW5rcyBmcm9tIDE4IHRvIDE0CnJlc2V0dGluZyBp bm9kZSA1ODc2MjIxIG5saW5rcyBmcm9tIDcgdG8gNgpyZXNldHRpbmcgaW5vZGUgNTg3NjIzNyBu bGlua3MgZnJvbSA5IHRvIDcKcmVzZXR0aW5nIGlub2RlIDU4NzYzMzIgbmxpbmtzIGZyb20gMTAg dG8gOApyZXNldHRpbmcgaW5vZGUgNTg4OTgyMyBubGlua3MgZnJvbSAyNyB0byAyMQpyZXNldHRp bmcgaW5vZGUgNTg5NTAxMyBubGlua3MgZnJvbSAxMSB0byA5CnJlc2V0dGluZyBpbm9kZSA1ODk1 NDgzIG5saW5rcyBmcm9tIDI5IHRvIDIyCnJlc2V0dGluZyBpbm9kZSA1OTA0ODAwIG5saW5rcyBm cm9tIDEzIHRvIDExCnJlc2V0dGluZyBpbm9kZSA1OTA0ODA1IG5saW5rcyBmcm9tIDkgdG8gOApy ZXNldHRpbmcgaW5vZGUgNTkwNjM3MCBubGlua3MgZnJvbSA0MyB0byAzMgpyZXNldHRpbmcgaW5v ZGUgNTk1MjA1NCBubGlua3MgZnJvbSAyMyB0byAxOApyZXNldHRpbmcgaW5vZGUgNTk5ODg3MiBu bGlua3MgZnJvbSA2IHRvIDUKcmVzZXR0aW5nIGlub2RlIDYwMjg5NzYgbmxpbmtzIGZyb20gNiB0 byA1CnJlc2V0dGluZyBpbm9kZSA2MTgwNjUxIG5saW5rcyBmcm9tIDcgdG8gNgpyZXNldHRpbmcg aW5vZGUgNjE4MjYyNCBubGlua3MgZnJvbSA2IHRvIDUKcmVzZXR0aW5nIGlub2RlIDYxOTE4NjYg bmxpbmtzIGZyb20gOSB0byA3CnJlc2V0dGluZyBpbm9kZSA2MTkyMTg0IG5saW5rcyBmcm9tIDYg dG8gNQpyZXNldHRpbmcgaW5vZGUgNjE5NDg4MiBubGlua3MgZnJvbSA5IHRvIDgKcmVzZXR0aW5n IGlub2RlIDYxOTUxNjEgbmxpbmtzIGZyb20gMTQgdG8gMTEKcmVzZXR0aW5nIGlub2RlIDYxOTk4 MzMgbmxpbmtzIGZyb20gMjMgdG8gMTgKcmVzZXR0aW5nIGlub2RlIDYyMDAzNjYgbmxpbmtzIGZy b20gNSB0byA0CnJlc2V0dGluZyBpbm9kZSA2MjMwMjIzIG5saW5rcyBmcm9tIDggdG8gNwpyZXNl dHRpbmcgaW5vZGUgNjIzODQ0OSBubGlua3MgZnJvbSA2IHRvIDUKcmVzZXR0aW5nIGlub2RlIDYy Mzg0NjYgbmxpbmtzIGZyb20gMTkgdG8gMTUKcmVzZXR0aW5nIGlub2RlIDYyNDQ4ODUgbmxpbmtz IGZyb20gNiB0byA1CnJlc2V0dGluZyBpbm9kZSA2MzA4Mjk0IG5saW5rcyBmcm9tIDExIHRvIDkK cmVzZXR0aW5nIGlub2RlIDg0Mjk3MDEgbmxpbmtzIGZyb20gOCB0byA3CnJlc2V0dGluZyBpbm9k ZSA4NDMwMjMzIG5saW5rcyBmcm9tIDU4IHRvIDQ0CnJlc2V0dGluZyBpbm9kZSA4NDMxODQ5IG5s aW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgODQzMjc2OCBubGlua3MgZnJvbSA1IHRv IDQKcmVzZXR0aW5nIGlub2RlIDg0MzI3NzggbmxpbmtzIGZyb20gNSB0byA0CnJlc2V0dGluZyBp bm9kZSA4NDM2MTc3IG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgODQzODgxNSBu bGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDg0Mzk5NDggbmxpbmtzIGZyb20gNCB0 byAzCnJlc2V0dGluZyBpbm9kZSA4NDM5OTUxIG5saW5rcyBmcm9tIDkgdG8gOApyZXNldHRpbmcg aW5vZGUgODQzOTk5MCBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDg0NTY5Mzcg bmxpbmtzIGZyb20gMTIgdG8gOQpyZXNldHRpbmcgaW5vZGUgODQ1ODk1OCBubGlua3MgZnJvbSA1 IHRvIDQKcmVzZXR0aW5nIGlub2RlIDg0NTg5NjUgbmxpbmtzIGZyb20gOCB0byA2CnJlc2V0dGlu ZyBpbm9kZSA4NDU5MDU3IG5saW5rcyBmcm9tIDUgdG8gMwpyZXNldHRpbmcgaW5vZGUgODQ1OTIw NiBubGlua3MgZnJvbSAxNCB0byAxMQpyZXNldHRpbmcgaW5vZGUgODQ5MTMyMiBubGlua3MgZnJv bSA2IHRvIDUKcmVzZXR0aW5nIGlub2RlIDg1Mzk2ODAgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0 dGluZyBpbm9kZSA4NTQwMzAyIG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgODU0 MTM4MiBubGlua3MgZnJvbSAxNCB0byAxMQpyZXNldHRpbmcgaW5vZGUgODU1MTQ2NyBubGlua3Mg ZnJvbSA2IHRvIDUKcmVzZXR0aW5nIGlub2RlIDg1NjMzMjUgbmxpbmtzIGZyb20gMzcgdG8gMjkK cmVzZXR0aW5nIGlub2RlIDg1NzAwMTcgbmxpbmtzIGZyb20gMTIgdG8gOQpyZXNldHRpbmcgaW5v ZGUgODU3MTcxMyBubGlua3MgZnJvbSAyMCB0byAxNQpyZXNldHRpbmcgaW5vZGUgODU3NDA1NiBu bGlua3MgZnJvbSA1IHRvIDIKcmVzZXR0aW5nIGlub2RlIDg1NzQxOTEgbmxpbmtzIGZyb20gNCB0 byAzCnJlc2V0dGluZyBpbm9kZSA4NTc0MTk1IG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcg aW5vZGUgODU3NDE5OSBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDg1NzQyMDUg bmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSA4NTc0MjA2IG5saW5rcyBmcm9tIDQg dG8gMwpyZXNldHRpbmcgaW5vZGUgODU3NDIxMCBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5n IGlub2RlIDg1NzQyMjQgbmxpbmtzIGZyb20gMjEgdG8gMTgKcmVzZXR0aW5nIGlub2RlIDg1NzQy MjUgbmxpbmtzIGZyb20gOCB0byA3CnJlc2V0dGluZyBpbm9kZSA4NTc0ODg1IG5saW5rcyBmcm9t IDggdG8gNgpyZXNldHRpbmcgaW5vZGUgODU4OTg4MiBubGlua3MgZnJvbSA1IHRvIDQKcmVzZXR0 aW5nIGlub2RlIDg1ODk4ODcgbmxpbmtzIGZyb20gNSB0byA0CnJlc2V0dGluZyBpbm9kZSA4NjAw NjAxIG5saW5rcyBmcm9tIDIxIHRvIDE2CnJlc2V0dGluZyBpbm9kZSA4NjA2NjI0IG5saW5rcyBm cm9tIDYgdG8gNQpyZXNldHRpbmcgaW5vZGUgODYwNjY1MSBubGlua3MgZnJvbSAxNSB0byAxMgpy ZXNldHRpbmcgaW5vZGUgODYwNjczMCBubGlua3MgZnJvbSAyIHRvIDEKcmVzZXR0aW5nIGlub2Rl IDg2MDY3NDkgbmxpbmtzIGZyb20gMiB0byAxCnJlc2V0dGluZyBpbm9kZSA4NjA4MTgzIG5saW5r cyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgODYwODE4OSBubGlua3MgZnJvbSAzNCB0byAy NApyZXNldHRpbmcgaW5vZGUgODYwODIwMCBubGlua3MgZnJvbSAxMSB0byA5CnJlc2V0dGluZyBp bm9kZSA4NjE1NzE5IG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgODYxNTczOSBu bGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDg2MTU3NDAgbmxpbmtzIGZyb20gMyB0 byAyCnJlc2V0dGluZyBpbm9kZSA4NjE1NzQxIG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcg aW5vZGUgODYxNTc0NCBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDg2MTU3NDgg bmxpbmtzIGZyb20gNSB0byAzCnJlc2V0dGluZyBpbm9kZSA4NjE1NzUwIG5saW5rcyBmcm9tIDMg dG8gMgpyZXNldHRpbmcgaW5vZGUgODYxNTc1MSBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5n IGlub2RlIDg2MjI3NTUgbmxpbmtzIGZyb20gMiB0byAxCnJlc2V0dGluZyBpbm9kZSA4NjIyNzY3 IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgODYyMjc5MSBubGlua3MgZnJvbSAy IHRvIDEKcmVzZXR0aW5nIGlub2RlIDg2MjI4ODEgbmxpbmtzIGZyb20gMiB0byAxCnJlc2V0dGlu ZyBpbm9kZSA4NjIyOTAyIG5saW5rcyBmcm9tIDIgdG8gMQpyZXNldHRpbmcgaW5vZGUgODYyMjkw NCBubGlua3MgZnJvbSAyIHRvIDEKcmVzZXR0aW5nIGlub2RlIDg2MjI5MDcgbmxpbmtzIGZyb20g NCB0byAyCnJlc2V0dGluZyBpbm9kZSA4NjIyOTA4IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRp bmcgaW5vZGUgODYyMjkwOSBubGlua3MgZnJvbSAzIHRvIDEKcmVzZXR0aW5nIGlub2RlIDg2MjI5 MTAgbmxpbmtzIGZyb20gMiB0byAxCnJlc2V0dGluZyBpbm9kZSA4NjIyOTExIG5saW5rcyBmcm9t IDMgdG8gMQpyZXNldHRpbmcgaW5vZGUgODYyMjkxMiBubGlua3MgZnJvbSAyIHRvIDEKcmVzZXR0 aW5nIGlub2RlIDg2MjI5MTMgbmxpbmtzIGZyb20gMyB0byAxCnJlc2V0dGluZyBpbm9kZSA4NjIy OTE0IG5saW5rcyBmcm9tIDIgdG8gMQpyZXNldHRpbmcgaW5vZGUgODYyMjkxNSBubGlua3MgZnJv bSAyIHRvIDEKcmVzZXR0aW5nIGlub2RlIDg2MjI5MTYgbmxpbmtzIGZyb20gMiB0byAxCnJlc2V0 dGluZyBpbm9kZSA4NjIyOTIwIG5saW5rcyBmcm9tIDIgdG8gMQpyZXNldHRpbmcgaW5vZGUgODYy Mjk1MCBubGlua3MgZnJvbSAyIHRvIDEKcmVzZXR0aW5nIGlub2RlIDg2MjI5OTggbmxpbmtzIGZy b20gMiB0byAxCnJlc2V0dGluZyBpbm9kZSA4NjYzMzkyIG5saW5rcyBmcm9tIDYgdG8gNQpyZXNl dHRpbmcgaW5vZGUgODY2MzQzNiBubGlua3MgZnJvbSA2IHRvIDUKcmVzZXR0aW5nIGlub2RlIDg2 NjM1MTIgbmxpbmtzIGZyb20gMjAgdG8gMTUKcmVzZXR0aW5nIGlub2RlIDg2NjM1MTUgbmxpbmtz IGZyb20gNSB0byA0CnJlc2V0dGluZyBpbm9kZSA4NjYzNTI2IG5saW5rcyBmcm9tIDggdG8gNgpy ZXNldHRpbmcgaW5vZGUgODY2MzczNyBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlub2Rl IDg2NjM4MTQgbmxpbmtzIGZyb20gMTMgdG8gMTAKcmVzZXR0aW5nIGlub2RlIDg2NjM4MTUgbmxp bmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSA4NjYzODI5IG5saW5rcyBmcm9tIDcgdG8g NgpyZXNldHRpbmcgaW5vZGUgODY2Mzg1NCBubGlua3MgZnJvbSAyIHRvIDEKcmVzZXR0aW5nIGlu b2RlIDg2NjM4NTcgbmxpbmtzIGZyb20gMiB0byAxCnJlc2V0dGluZyBpbm9kZSA4NjY0MDY1IG5s aW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgODY2NDA2NiBubGlua3MgZnJvbSAyIHRv IDEKcmVzZXR0aW5nIGlub2RlIDg3MDczNDcgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBp bm9kZSA4NzMxNjY3IG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgODc0NDQ2NiBu bGlua3MgZnJvbSAxMiB0byAxMApyZXNldHRpbmcgaW5vZGUgODc0NjYwMCBubGlua3MgZnJvbSA0 IHRvIDMKcmVzZXR0aW5nIGlub2RlIDg4MDczNjEgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGlu ZyBpbm9kZSA4ODA4Njc5IG5saW5rcyBmcm9tIDUgdG8gNApyZXNldHRpbmcgaW5vZGUgODgwOTkw NiBubGlua3MgZnJvbSA0MyB0byAzMQpyZXNldHRpbmcgaW5vZGUgODgwOTkwOCBubGlua3MgZnJv bSA0MiB0byAzMgpyZXNldHRpbmcgaW5vZGUgODgxMDY2MSBubGlua3MgZnJvbSA4IHRvIDYKcmVz ZXR0aW5nIGlub2RlIDg4MjE5NDMgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSA4 ODIzNDg5IG5saW5rcyBmcm9tIDUgdG8gMwpyZXNldHRpbmcgaW5vZGUgODgyMzUxMCBubGlua3Mg ZnJvbSAxNSB0byAxMgpyZXNldHRpbmcgaW5vZGUgODgyMzYzNCBubGlua3MgZnJvbSAxMSB0byA5 CnJlc2V0dGluZyBpbm9kZSA4ODIzNzE3IG5saW5rcyBmcm9tIDggdG8gNgpyZXNldHRpbmcgaW5v ZGUgODgyMzgyMyBubGlua3MgZnJvbSAxMiB0byA5CnJlc2V0dGluZyBpbm9kZSA4ODIzODMwIG5s aW5rcyBmcm9tIDUgdG8gNApyZXNldHRpbmcgaW5vZGUgODgyOTE4OCBubGlua3MgZnJvbSAyMSB0 byAxNgpyZXNldHRpbmcgaW5vZGUgODgyOTMxMCBubGlua3MgZnJvbSAxMSB0byA5CnJlc2V0dGlu ZyBpbm9kZSA4ODUwODU4IG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgODg1MDk2 MSBubGlua3MgZnJvbSAyMSB0byAxNgpyZXNldHRpbmcgaW5vZGUgODg1MDk5OSBubGlua3MgZnJv bSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDg4NTEwMDYgbmxpbmtzIGZyb20gNyB0byA2CnJlc2V0 dGluZyBpbm9kZSA4ODUxMDUwIG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgODg4 ODc3NSBubGlua3MgZnJvbSA1IHRvIDQKcmVzZXR0aW5nIGlub2RlIDg5ODAyMzggbmxpbmtzIGZy b20gNSB0byA0CnJlc2V0dGluZyBpbm9kZSA4OTgzNDA5IG5saW5rcyBmcm9tIDE0IHRvIDExCnJl c2V0dGluZyBpbm9kZSA4OTgzNTIxIG5saW5rcyBmcm9tIDUgdG8gNApyZXNldHRpbmcgaW5vZGUg OTAxOTYyNCBubGlua3MgZnJvbSAxNCB0byAxMQpyZXNldHRpbmcgaW5vZGUgOTAxOTY3NiBubGlu a3MgZnJvbSA1IHRvIDQKcmVzZXR0aW5nIGlub2RlIDkwNTI5MjMgbmxpbmtzIGZyb20gNyB0byA2 CnJlc2V0dGluZyBpbm9kZSA5MDc5NzI3IG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5v ZGUgOTA3OTczNyBubGlua3MgZnJvbSA5IHRvIDcKcmVzZXR0aW5nIGlub2RlIDkwNzk3NDggbmxp bmtzIGZyb20gNiB0byA1CnJlc2V0dGluZyBpbm9kZSA5MDk4NTI4IG5saW5rcyBmcm9tIDE0IHRv IDEzCnJlc2V0dGluZyBpbm9kZSA5MDk4NTM5IG5saW5rcyBmcm9tIDkgdG8gNwpyZXNldHRpbmcg aW5vZGUgOTA5ODU0NSBubGlua3MgZnJvbSAxMCB0byA4CnJlc2V0dGluZyBpbm9kZSA5MTE5MjIz IG5saW5rcyBmcm9tIDMwIHRvIDI0CnJlc2V0dGluZyBpbm9kZSA5MTI3ODA4IG5saW5rcyBmcm9t IDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgOTEyNzgzNSBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0 aW5nIGlub2RlIDkxMzg5NDMgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSA5MTM4 OTQ1IG5saW5rcyBmcm9tIDcgdG8gNgpyZXNldHRpbmcgaW5vZGUgOTEzODk3NSBubGlua3MgZnJv bSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDkxMzkwNTIgbmxpbmtzIGZyb20gMjMgdG8gMTYKcmVz ZXR0aW5nIGlub2RlIDkxMzkxNDcgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSA5 MTM5MjcwIG5saW5rcyBmcm9tIDcgdG8gNgpyZXNldHRpbmcgaW5vZGUgOTEzOTM3MCBubGlua3Mg ZnJvbSAxMyB0byAxMApyZXNldHRpbmcgaW5vZGUgOTEzOTM5MSBubGlua3MgZnJvbSAxMSB0byA5 CnJlc2V0dGluZyBpbm9kZSA5MTQwNzQwIG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5v ZGUgOTE2NjM0NiBubGlua3MgZnJvbSAxMSB0byA5CnJlc2V0dGluZyBpbm9kZSA5MTY2MzU5IG5s aW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgOTIwODgxMSBubGlua3MgZnJvbSA3IHRv IDYKcmVzZXR0aW5nIGlub2RlIDkyNDE3MDMgbmxpbmtzIGZyb20gOCB0byA3CnJlc2V0dGluZyBp bm9kZSA5MjQxNzEwIG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgOTI0MTgxMSBu bGlua3MgZnJvbSA3IHRvIDYKcmVzZXR0aW5nIGlub2RlIDkyNDE4NDcgbmxpbmtzIGZyb20gNCB0 byAzCnJlc2V0dGluZyBpbm9kZSA5MjY5MjE4IG5saW5rcyBmcm9tIDcgdG8gNQpyZXNldHRpbmcg aW5vZGUgOTI2OTI1NiBubGlua3MgZnJvbSA2IHRvIDUKcmVzZXR0aW5nIGlub2RlIDkzMTY2Mzkg bmxpbmtzIGZyb20gNSB0byA0CnJlc2V0dGluZyBpbm9kZSA5MzI3NTAzIG5saW5rcyBmcm9tIDcg dG8gNgpyZXNldHRpbmcgaW5vZGUgOTMyNzU0NCBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5n IGlub2RlIDkzNTQ2ODMgbmxpbmtzIGZyb20gNiB0byA1CnJlc2V0dGluZyBpbm9kZSAxMTQ3Njkx NCBubGlua3MgZnJvbSAxOSB0byAxNQpyZXNldHRpbmcgaW5vZGUgMTE2ODQyMzUgbmxpbmtzIGZy b20gMTQgdG8gMTEKcmVzZXR0aW5nIGlub2RlIDExNjg2MjY5IG5saW5rcyBmcm9tIDE2IHRvIDEy CnJlc2V0dGluZyBpbm9kZSAxMTY4NzEzMCBubGlua3MgZnJvbSA4IHRvIDYKcmVzZXR0aW5nIGlu b2RlIDEyNTgzMDQxIG5saW5rcyBmcm9tIDQwIHRvIDI5CnJlc2V0dGluZyBpbm9kZSAxMjU4MzA0 MiBubGlua3MgZnJvbSAxNCB0byAxMQpyZXNldHRpbmcgaW5vZGUgMTI1ODMwNDMgbmxpbmtzIGZy b20gMTIgdG8gMTAKcmVzZXR0aW5nIGlub2RlIDEyNTgzMDUwIG5saW5rcyBmcm9tIDMgdG8gMgpy ZXNldHRpbmcgaW5vZGUgMTI1ODMwNTIgbmxpbmtzIGZyb20gMzcgdG8gMjcKcmVzZXR0aW5nIGlu b2RlIDEyNTgzMDUzIG5saW5rcyBmcm9tIDMzIHRvIDI2CnJlc2V0dGluZyBpbm9kZSAxMjU4MzA1 NiBubGlua3MgZnJvbSA4IHRvIDcKcmVzZXR0aW5nIGlub2RlIDEyNTgzMDU3IG5saW5rcyBmcm9t IDcgdG8gNgpyZXNldHRpbmcgaW5vZGUgMTI1ODMwNjIgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0 dGluZyBpbm9kZSAxMjU4MzE2MSBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDEy NTgzMTY1IG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTI1ODMxNzAgbmxpbmtz IGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSAxMjU4MzE3NiBubGlua3MgZnJvbSA0IHRvIDMK cmVzZXR0aW5nIGlub2RlIDEyNTgzMTgyIG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5v ZGUgMTI1ODMxODYgbmxpbmtzIGZyb20gMTI5IHRvIDk4CnJlc2V0dGluZyBpbm9kZSAxMjU4MzE4 NyBubGlua3MgZnJvbSAyMSB0byAxNgpyZXNldHRpbmcgaW5vZGUgMTI1ODMxODggbmxpbmtzIGZy b20gNSB0byA0CnJlc2V0dGluZyBpbm9kZSAxMjU4MzIzMyBubGlua3MgZnJvbSAzIHRvIDIKcmVz ZXR0aW5nIGlub2RlIDEyNTgzMjQzIG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUg MTI1ODMyNjYgbmxpbmtzIGZyb20gNiB0byA0CnJlc2V0dGluZyBpbm9kZSAxMjU4MzI3NyBubGlu a3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyNTgzMjc5IG5saW5rcyBmcm9tIDMgdG8g MgpyZXNldHRpbmcgaW5vZGUgMTI1ODMyODQgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBp bm9kZSAxMjU4MzI4NSBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyNTgzMjg2 IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI1ODMyOTAgbmxpbmtzIGZyb20g MyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMjU4MzI5MSBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0 aW5nIGlub2RlIDEyNTgzMjkyIG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI1 ODMzMzcgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMjU4MzM3MyBubGlua3Mg ZnJvbSA1IHRvIDMKcmVzZXR0aW5nIGlub2RlIDEyNTgzMzk1IG5saW5rcyBmcm9tIDQgdG8gMwpy ZXNldHRpbmcgaW5vZGUgMTI1ODM0NTYgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9k ZSAxMjU4MzUxMSBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyNTgzNTE5IG5s aW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTI1ODM1ODkgbmxpbmtzIGZyb20gMTEg dG8gOApyZXNldHRpbmcgaW5vZGUgMTI1OTE1NTcgbmxpbmtzIGZyb20gNSB0byA0CnJlc2V0dGlu ZyBpbm9kZSAxMjU5MTU2NiBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyNTkx NTY3IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI1OTE1NzMgbmxpbmtzIGZy b20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMjU5NDUxNiBubGlua3MgZnJvbSAyIHRvIDEKcmVz ZXR0aW5nIGlub2RlIDEyNTk3Njk3IG5saW5rcyBmcm9tIDIgdG8gMQpyZXNldHRpbmcgaW5vZGUg MTI1OTc2OTggbmxpbmtzIGZyb20gMiB0byAxCnJlc2V0dGluZyBpbm9kZSAxMjU5NzY5OSBubGlu a3MgZnJvbSAyIHRvIDEKcmVzZXR0aW5nIGlub2RlIDEyNTk3NzAwIG5saW5rcyBmcm9tIDIgdG8g MQpyZXNldHRpbmcgaW5vZGUgMTI1OTc3MDEgbmxpbmtzIGZyb20gMiB0byAxCnJlc2V0dGluZyBp bm9kZSAxMjU5NzcwMiBubGlua3MgZnJvbSAyIHRvIDEKcmVzZXR0aW5nIGlub2RlIDEyNTk3NzI0 IG5saW5rcyBmcm9tIDMgdG8gMQpyZXNldHRpbmcgaW5vZGUgMTI1OTc3MjkgbmxpbmtzIGZyb20g MyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMjU5Nzc0NiBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0 aW5nIGlub2RlIDEyNTk4NDgwIG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTI1 OTg0ODcgbmxpbmtzIGZyb20gNTUgdG8gNDAKcmVzZXR0aW5nIGlub2RlIDEyNjAxNjYxIG5saW5r cyBmcm9tIDIgdG8gMQpyZXNldHRpbmcgaW5vZGUgMTI2MDE2NzEgbmxpbmtzIGZyb20gMiB0byAx CnJlc2V0dGluZyBpbm9kZSAxMjYwNjE2MyBubGlua3MgZnJvbSAyIHRvIDEKcmVzZXR0aW5nIGlu b2RlIDEyNjA3OTMyIG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI2MTYxNTMg bmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMjYxNjI3NSBubGlua3MgZnJvbSAz IHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyNjE2MjgyIG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRp bmcgaW5vZGUgMTI2MTk1MzQgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMjYy MTE3MCBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyNjIxMzA4IG5saW5rcyBm cm9tIDkgdG8gNwpyZXNldHRpbmcgaW5vZGUgMTI2MjMyNjEgbmxpbmtzIGZyb20gNCB0byAzCnJl c2V0dGluZyBpbm9kZSAxMjYyMzI4MSBubGlua3MgZnJvbSAxMSB0byA3CnJlc2V0dGluZyBpbm9k ZSAxMjYyMzI4NiBubGlua3MgZnJvbSA5IHRvIDYKcmVzZXR0aW5nIGlub2RlIDEyNjIzMjg5IG5s aW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI2MjMyOTAgbmxpbmtzIGZyb20gNCB0 byAzCnJlc2V0dGluZyBpbm9kZSAxMjYyNjE4NiBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5n IGlub2RlIDEyNjI2MjAwIG5saW5rcyBmcm9tIDQgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI2MjYy MDQgbmxpbmtzIGZyb20gNiB0byA0CnJlc2V0dGluZyBpbm9kZSAxMjYyNjIxMSBubGlua3MgZnJv bSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyNjI2MjEyIG5saW5rcyBmcm9tIDMgdG8gMgpyZXNl dHRpbmcgaW5vZGUgMTI2MjYyMjIgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAx MjYyNjIzMiBubGlua3MgZnJvbSAxOSB0byAxNApyZXNldHRpbmcgaW5vZGUgMTI2MzM4MjYgbmxp bmtzIGZyb20gOSB0byA1CnJlc2V0dGluZyBpbm9kZSAxMjYzMzgzOSBubGlua3MgZnJvbSA0IHRv IDMKcmVzZXR0aW5nIGlub2RlIDEyNjMzODU0IG5saW5rcyBmcm9tIDYgdG8gNQpyZXNldHRpbmcg aW5vZGUgMTI2MzM4NzEgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSAxMjYzMzg3 MiBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyNjMzODc4IG5saW5rcyBmcm9t IDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTI2MzY4MjUgbmxpbmtzIGZyb20gNSB0byA0CnJlc2V0 dGluZyBpbm9kZSAxMjYzNzA0MiBubGlua3MgZnJvbSA3IHRvIDYKcmVzZXR0aW5nIGlub2RlIDEy NjM3MDYzIG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI2MzcwNzggbmxpbmtz IGZyb20gMTEgdG8gOApyZXNldHRpbmcgaW5vZGUgMTI2MzcwODYgbmxpbmtzIGZyb20gNCB0byAz CnJlc2V0dGluZyBpbm9kZSAxMjYzODgwOCBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlu b2RlIDEyNjM5MTQwIG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI2MzkxNDYg bmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMjYzOTE1NSBubGlua3MgZnJvbSA1 IHRvIDQKcmVzZXR0aW5nIGlub2RlIDEyNjM5MTU2IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRp bmcgaW5vZGUgMTI2MzkxNjIgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSAxMjYz OTE4MiBubGlua3MgZnJvbSA3IHRvIDUKcmVzZXR0aW5nIGlub2RlIDEyNjQwODEzIG5saW5rcyBm cm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI2NDA4MjAgbmxpbmtzIGZyb20gMyB0byAyCnJl c2V0dGluZyBpbm9kZSAxMjY0MDgyMiBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2Rl IDEyNjUyMTM5IG5saW5rcyBmcm9tIDUgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTI2NTIxNTQgbmxp bmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSAxMjY1MjE1OSBubGlua3MgZnJvbSAzIHRv IDIKcmVzZXR0aW5nIGlub2RlIDEyNjUyMTc3IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcg aW5vZGUgMTI2NjA0MzUgbmxpbmtzIGZyb20gNyB0byA1CnJlc2V0dGluZyBpbm9kZSAxMjY2MDQ1 NyBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyNjYwNzc3IG5saW5rcyBmcm9t IDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI2NjA3ODcgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0 dGluZyBpbm9kZSAxMjY2MDc5NCBubGlua3MgZnJvbSA0IHRvIDIKcmVzZXR0aW5nIGlub2RlIDEy NjYwNzk5IG5saW5rcyBmcm9tIDE1IHRvIDExCnJlc2V0dGluZyBpbm9kZSAxMjY2NzIzMCBubGlu a3MgZnJvbSA2MCB0byA0NQpyZXNldHRpbmcgaW5vZGUgMTI2Nzg3OTEgbmxpbmtzIGZyb20gMyB0 byAyCnJlc2V0dGluZyBpbm9kZSAxMjY3OTAxMSBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5n IGlub2RlIDEyNjc5MDU4IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI2Nzkw OTAgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMjY3OTIxNiBubGlua3MgZnJv bSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyNjc5MjE3IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNl dHRpbmcgaW5vZGUgMTI2NzkyMjkgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAx MjY3OTIzMSBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyNjc5MjMyIG5saW5r cyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI2NzkyNDUgbmxpbmtzIGZyb20gMyB0byAy CnJlc2V0dGluZyBpbm9kZSAxMjY3OTMxMyBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlu b2RlIDEyNjc5MzE0IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI2NzkzMTgg bmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSAxMjY3OTg4OSBubGlua3MgZnJvbSAz IHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyNjk5NDA1IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRp bmcgaW5vZGUgMTI2OTk0MTUgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMjY5 OTQxNiBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyNjk5NDIxIG5saW5rcyBm cm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI2OTk0MjkgbmxpbmtzIGZyb20gMyB0byAyCnJl c2V0dGluZyBpbm9kZSAxMjY5OTQzMSBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2Rl IDEyNjk5NDMyIG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI2OTk1MDIgbmxp bmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMjY5OTUzMCBubGlua3MgZnJvbSA0IHRv IDMKcmVzZXR0aW5nIGlub2RlIDEyNjk5NTQzIG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcg aW5vZGUgMTI2OTk1NTEgbmxpbmtzIGZyb20gOCB0byA2CnJlc2V0dGluZyBpbm9kZSAxMjY5OTYx NiBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyNjk5NjM4IG5saW5rcyBmcm9t IDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI2OTk2NDEgbmxpbmtzIGZyb20gNSB0byA0CnJlc2V0 dGluZyBpbm9kZSAxMjY5OTY2MiBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEy Njk5NjY5IG5saW5rcyBmcm9tIDcgdG8gNQpyZXNldHRpbmcgaW5vZGUgMTI3MDAyMzggbmxpbmtz IGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMjcwMDI3NCBubGlua3MgZnJvbSAzIHRvIDIK cmVzZXR0aW5nIGlub2RlIDEyNzAwMjc3IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5v ZGUgMTI3MDAyNzggbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSAxMjcwMDI4MSBu bGlua3MgZnJvbSAxMCB0byA4CnJlc2V0dGluZyBpbm9kZSAxMjcwMDI4NyBubGlua3MgZnJvbSA1 IHRvIDQKcmVzZXR0aW5nIGlub2RlIDEyNzAwMzk3IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRp bmcgaW5vZGUgMTI3MDAzOTggbmxpbmtzIGZyb20gNSB0byA0CnJlc2V0dGluZyBpbm9kZSAxMjcw MDc4MCBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyNzAxMDQzIG5saW5rcyBm cm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI3MzY5NjggbmxpbmtzIGZyb20gMyB0byAyCnJl c2V0dGluZyBpbm9kZSAxMjczNzA5OSBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlub2Rl IDEyNzM3MTE5IG5saW5rcyBmcm9tIDUgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTI3NTcyNDMgbmxp bmtzIGZyb20gNiB0byA1CnJlc2V0dGluZyBpbm9kZSAxMjc1NzI3NSBubGlua3MgZnJvbSAzIHRv IDIKcmVzZXR0aW5nIGlub2RlIDEyNzU3Mjc2IG5saW5rcyBmcm9tIDggdG8gNgpyZXNldHRpbmcg aW5vZGUgMTI3NTczMDIgbmxpbmtzIGZyb20gNCB0byAyCnJlc2V0dGluZyBpbm9kZSAxMjc1NzMw MyBubGlua3MgZnJvbSAxNyB0byAxNApyZXNldHRpbmcgaW5vZGUgMTI3NzI5NzEgbmxpbmtzIGZy b20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSAxMjgwOTU3MCBubGlua3MgZnJvbSAzIHRvIDIKcmVz ZXR0aW5nIGlub2RlIDEyODA5NjQzIG5saW5rcyBmcm9tIDYgdG8gNQpyZXNldHRpbmcgaW5vZGUg MTI4MDk5ODYgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMjgxMDM1MyBubGlu a3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyODEwMzkyIG5saW5rcyBmcm9tIDMgdG8g MgpyZXNldHRpbmcgaW5vZGUgMTI4MTA1OTQgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBp bm9kZSAxMjgxMDYwNiBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyODEwNjEy IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI4MTA2MTUgbmxpbmtzIGZyb20g MyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMjgxMDY0NSBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0 aW5nIGlub2RlIDEyODM1MzMyIG5saW5rcyBmcm9tIDEzIHRvIDgKcmVzZXR0aW5nIGlub2RlIDEy ODM1MzQ3IG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTI4MzU5NDAgbmxpbmtz IGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMjgzNjEwNSBubGlua3MgZnJvbSAzIHRvIDIK cmVzZXR0aW5nIGlub2RlIDEyODM2MTM2IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5v ZGUgMTI4MzYzNzggbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMjgzNjg4OCBu bGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyODM2OTI2IG5saW5rcyBmcm9tIDMg dG8gMgpyZXNldHRpbmcgaW5vZGUgMTI4MzcyNTYgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGlu ZyBpbm9kZSAxMjg1ODI4MCBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyODU4 NTI3IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI4NzM0NjYgbmxpbmtzIGZy b20gMjYgdG8gMjQKcmVzZXR0aW5nIGlub2RlIDEyODczNDcyIG5saW5rcyBmcm9tIDMgdG8gMgpy ZXNldHRpbmcgaW5vZGUgMTI4NzM0NzUgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9k ZSAxMjg3MzQ3OCBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyODczNDgxIG5s aW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI4NzM0ODQgbmxpbmtzIGZyb20gMyB0 byAyCnJlc2V0dGluZyBpbm9kZSAxMjg3MzQ4NyBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5n IGlub2RlIDEyODczNDkwIG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI4NzM0 OTMgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMjg3MzQ5NiBubGlua3MgZnJv bSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyODczNDk5IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNl dHRpbmcgaW5vZGUgMTI4NzM3NTcgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSAx Mjg3Mzg4NSBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDEyODczODg2IG5saW5r cyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTI4NzQwMjIgbmxpbmtzIGZyb20gOCB0byA2 CnJlc2V0dGluZyBpbm9kZSAxMjkxMzUwMSBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlu b2RlIDEyOTEzNzAzIG5saW5rcyBmcm9tIDggdG8gNgpyZXNldHRpbmcgaW5vZGUgMTI5MTM5NjAg bmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMjkxNDA0NyBubGlua3MgZnJvbSAz IHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyOTE0MTk4IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRp bmcgaW5vZGUgMTI5MTUwOTIgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMjkx NTI4MSBubGlua3MgZnJvbSAxMSB0byA4CnJlc2V0dGluZyBpbm9kZSAxMjkxNTI4NiBubGlua3Mg ZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyOTE1MzIwIG5saW5rcyBmcm9tIDMgdG8gMgpy ZXNldHRpbmcgaW5vZGUgMTI5MTUzNzcgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9k ZSAxMjkxNTQxMCBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyOTIwNDg5IG5s aW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI5MjA0OTcgbmxpbmtzIGZyb20gMTAg dG8gNwpyZXNldHRpbmcgaW5vZGUgMTI5MjA0OTggbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGlu ZyBpbm9kZSAxMjkyMTMyMiBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEyOTI4 NzIwIG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTI5Mjg3MjEgbmxpbmtzIGZy b20gMTEgdG8gNwpyZXNldHRpbmcgaW5vZGUgMTI5NDUwMTAgbmxpbmtzIGZyb20gMyB0byAyCnJl c2V0dGluZyBpbm9kZSAxMjk0NTE2OCBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2Rl IDEyOTQ1MjU3IG5saW5rcyBmcm9tIDEzIHRvIDEwCnJlc2V0dGluZyBpbm9kZSAxMjk0NTU0NSBu bGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDEyOTQ1NTYzIG5saW5rcyBmcm9tIDMg dG8gMgpyZXNldHRpbmcgaW5vZGUgMTMwNTUxNjIgbmxpbmtzIGZyb20gNiB0byA1CnJlc2V0dGlu ZyBpbm9kZSAxMzA3MjUxMyBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEzMDcy NTE1IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTMwNzI1MTYgbmxpbmtzIGZy b20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMzA3MjUyMSBubGlua3MgZnJvbSA2IHRvIDQKcmVz ZXR0aW5nIGlub2RlIDEzMDcyNjE1IG5saW5rcyBmcm9tIDEzIHRvIDEwCnJlc2V0dGluZyBpbm9k ZSAxMzA3MjYyOSBubGlua3MgZnJvbSAxMiB0byAxMApyZXNldHRpbmcgaW5vZGUgMTMwNzI2NDUg bmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMzA3MjY2NiBubGlua3MgZnJvbSA0 IHRvIDMKcmVzZXR0aW5nIGlub2RlIDEzMDcyODczIG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRp bmcgaW5vZGUgMTMwNzU3MDEgbmxpbmtzIGZyb20gMjUgdG8gMTgKcmVzZXR0aW5nIGlub2RlIDEz MDc1ODc5IG5saW5rcyBmcm9tIDUgdG8gNApyZXNldHRpbmcgaW5vZGUgMTMxMDYxMTQgbmxpbmtz IGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSAxMzEwNjEzNCBubGlua3MgZnJvbSAxOSB0byAx NApyZXNldHRpbmcgaW5vZGUgMTMxMDk2MDMgbmxpbmtzIGZyb20gNiB0byA1CnJlc2V0dGluZyBp bm9kZSAxMzEwOTYwNSBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEzMTA5NjE0 IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTMxMDk2MjggbmxpbmtzIGZyb20g NSB0byA0CnJlc2V0dGluZyBpbm9kZSAxMzExMzMwMCBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0 aW5nIGlub2RlIDEzMTEzMzE2IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTMx MTMzMzMgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMzExMzM1NyBubGlua3Mg ZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEzMTEzMzY4IG5saW5rcyBmcm9tIDMgdG8gMgpy ZXNldHRpbmcgaW5vZGUgMTMxMTM0NTkgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9k ZSAxMzExMzQ3MSBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEzMTE0MTA4IG5s aW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTMxMTcxNzQgbmxpbmtzIGZyb20gOSB0 byA2CnJlc2V0dGluZyBpbm9kZSAxMzExNzE3NiBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5n IGlub2RlIDEzMTE3MTgxIG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTMxMTcx ODIgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSAxMzExNzc4NyBubGlua3MgZnJv bSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDEzMTc5NjA5IG5saW5rcyBmcm9tIDI1IHRvIDE5CnJl c2V0dGluZyBpbm9kZSAxMzE3OTc4NyBubGlua3MgZnJvbSAxMCB0byA3CnJlc2V0dGluZyBpbm9k ZSAxMzE4MTk1OCBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDEzMTgxOTU5IG5s aW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTMxODE5NjQgbmxpbmtzIGZyb20gMyB0 byAyCnJlc2V0dGluZyBpbm9kZSAxMzE4MTk3MSBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5n IGlub2RlIDEzMTgxOTcyIG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTMxODE5 NzcgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMzE4MTk3OCBubGlua3MgZnJv bSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEzMTgxOTc5IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNl dHRpbmcgaW5vZGUgMTMxODE5ODAgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSAx MzE4MTk4MSBubGlua3MgZnJvbSA0IHRvIDIKcmVzZXR0aW5nIGlub2RlIDEzMTgxOTk4IG5saW5r cyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTMyMzg3OTkgbmxpbmtzIGZyb20gMyB0byAy CnJlc2V0dGluZyBpbm9kZSAxMzIzOTIzMyBubGlua3MgZnJvbSA5IHRvIDcKcmVzZXR0aW5nIGlu b2RlIDEzMjM5Mjc2IG5saW5rcyBmcm9tIDUgdG8gNApyZXNldHRpbmcgaW5vZGUgMTMyMzkyNzcg bmxpbmtzIGZyb20gNiB0byA0CnJlc2V0dGluZyBpbm9kZSAxMzMyODk1NyBubGlua3MgZnJvbSA2 IHRvIDUKcmVzZXR0aW5nIGlub2RlIDEzMzI5MTIxIG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRp bmcgaW5vZGUgMTMzMzExNTcgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSAxMzMz MTgxMiBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEzMzMxODI2IG5saW5rcyBm cm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTMzMzE4NjggbmxpbmtzIGZyb20gNCB0byAzCnJl c2V0dGluZyBpbm9kZSAxMzMzMjAzNSBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2Rl IDEzMzMyNjgxIG5saW5rcyBmcm9tIDkgdG8gNwpyZXNldHRpbmcgaW5vZGUgMTMzNTAzNzMgbmxp bmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMzM1MDM3NCBubGlua3MgZnJvbSAzIHRv IDIKcmVzZXR0aW5nIGlub2RlIDEzMzUwMzc1IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcg aW5vZGUgMTMzNTAzNzYgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMzM1MDM3 NyBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEzMzUwMzc4IG5saW5rcyBmcm9t IDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTMzNTAzNzkgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0 dGluZyBpbm9kZSAxMzM1MDM4MCBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDEz MzUwMzgxIG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTMzNTAzODIgbmxpbmtz IGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSAxMzM1MDQ2MyBubGlua3MgZnJvbSA0IHRvIDMK cmVzZXR0aW5nIGlub2RlIDEzMzUwNDY0IG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5v ZGUgMTMzNTA0NzggbmxpbmtzIGZyb20gOSB0byA3CnJlc2V0dGluZyBpbm9kZSAxMzM1MDgwNSBu bGlua3MgZnJvbSAxOCB0byAxNQpyZXNldHRpbmcgaW5vZGUgMTMzNTA4MDYgbmxpbmtzIGZyb20g MTMgdG8gMTAKcmVzZXR0aW5nIGlub2RlIDEzMzU0NjczIG5saW5rcyBmcm9tIDQgdG8gMwpyZXNl dHRpbmcgaW5vZGUgMTMzNTUxNjYgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAx MzM1NTE4MyBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEzMzU1NDYyIG5saW5r cyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTMzNTcyMjYgbmxpbmtzIGZyb20gMTIgdG8g OQpyZXNldHRpbmcgaW5vZGUgMTMzNTcyMjkgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBp bm9kZSAxMzM1NzI2NCBubGlua3MgZnJvbSA1IHRvIDQKcmVzZXR0aW5nIGlub2RlIDEzMzY1Mzk0 IG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTMzNzc2MzUgbmxpbmtzIGZyb20g OSB0byA2CnJlc2V0dGluZyBpbm9kZSAxMzM4NzkwNCBubGlua3MgZnJvbSA1IHRvIDQKcmVzZXR0 aW5nIGlub2RlIDEzMzg3OTExIG5saW5rcyBmcm9tIDUgdG8gNApyZXNldHRpbmcgaW5vZGUgMTMz ODc5MjIgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMzM4Nzk0NyBubGlua3Mg ZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEzMzg3OTUyIG5saW5rcyBmcm9tIDMgdG8gMgpy ZXNldHRpbmcgaW5vZGUgMTM0MDQ0NDYgbmxpbmtzIGZyb20gNiB0byA0CnJlc2V0dGluZyBpbm9k ZSAxMzQyMTA1MyBubGlua3MgZnJvbSA1IHRvIDQKcmVzZXR0aW5nIGlub2RlIDEzNDIyMjE3IG5s aW5rcyBmcm9tIDYgdG8gNQpyZXNldHRpbmcgaW5vZGUgMTM0MjIzODIgbmxpbmtzIGZyb20gMyB0 byAyCnJlc2V0dGluZyBpbm9kZSAxMzQyMjM5NSBubGlua3MgZnJvbSA1IHRvIDQKcmVzZXR0aW5n IGlub2RlIDEzNDIzMDk0IG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTM0MjM1 MDEgbmxpbmtzIGZyb20gMTMgdG8gMTAKcmVzZXR0aW5nIGlub2RlIDEzNDI0MjQ4IG5saW5rcyBm cm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTM0MjQ1NTUgbmxpbmtzIGZyb20gMyB0byAyCnJl c2V0dGluZyBpbm9kZSAxMzQzMDEzMiBubGlua3MgZnJvbSA1IHRvIDMKcmVzZXR0aW5nIGlub2Rl IDEzNDMwMzIyIG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTM0MzA2ODIgbmxp bmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMzQ1MzA5MCBubGlua3MgZnJvbSA1IHRv IDMKcmVzZXR0aW5nIGlub2RlIDEzNDUzMTI4IG5saW5rcyBmcm9tIDEwIHRvIDcKcmVzZXR0aW5n IGlub2RlIDEzNDUzMTQ0IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTM0NTMy NTcgbmxpbmtzIGZyb20gNjggdG8gNTEKcmVzZXR0aW5nIGlub2RlIDEzNDUzMjU4IG5saW5rcyBm cm9tIDQ1IHRvIDMxCnJlc2V0dGluZyBpbm9kZSAxMzQ1MzI5MiBubGlua3MgZnJvbSAzIHRvIDIK cmVzZXR0aW5nIGlub2RlIDEzNDU0MTEzIG5saW5rcyBmcm9tIDE1IHRvIDExCnJlc2V0dGluZyBp bm9kZSAxMzQ1NDQ5NyBubGlua3MgZnJvbSA2IHRvIDQKcmVzZXR0aW5nIGlub2RlIDEzNDU0NTA5 IG5saW5rcyBmcm9tIDYgdG8gNQpyZXNldHRpbmcgaW5vZGUgMTM0NTQ1NDkgbmxpbmtzIGZyb20g MyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMzQ1NDU1MSBubGlua3MgZnJvbSA1IHRvIDQKcmVzZXR0 aW5nIGlub2RlIDEzNDU0NTU2IG5saW5rcyBmcm9tIDUgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTM0 NTQ4MzcgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSAxMzQ1NTQ1OSBubGlua3Mg ZnJvbSAxMSB0byA5CnJlc2V0dGluZyBpbm9kZSAxMzQ1NjAzNyBubGlua3MgZnJvbSAxNSB0byAx MgpyZXNldHRpbmcgaW5vZGUgMTM0NTYwNDQgbmxpbmtzIGZyb20gMTQgdG8gMTEKcmVzZXR0aW5n IGlub2RlIDEzNDU2MDU2IG5saW5rcyBmcm9tIDE0IHRvIDExCnJlc2V0dGluZyBpbm9kZSAxMzQ1 NjA3NSBubGlua3MgZnJvbSAxNSB0byAxMgpyZXNldHRpbmcgaW5vZGUgMTM0NTYwODIgbmxpbmtz IGZyb20gMTQgdG8gMTEKcmVzZXR0aW5nIGlub2RlIDEzNDU2MDkzIG5saW5rcyBmcm9tIDE0IHRv IDExCnJlc2V0dGluZyBpbm9kZSAxMzQ1NjEzMiBubGlua3MgZnJvbSAxNSB0byAxMQpyZXNldHRp bmcgaW5vZGUgMTM0NTYxNTEgbmxpbmtzIGZyb20gMTQgdG8gMTEKcmVzZXR0aW5nIGlub2RlIDEz NDU2MTU4IG5saW5rcyBmcm9tIDE1IHRvIDExCnJlc2V0dGluZyBpbm9kZSAxMzQ1NjE3NyBubGlu a3MgZnJvbSAxNCB0byAxMQpyZXNldHRpbmcgaW5vZGUgMTM0NTYxODQgbmxpbmtzIGZyb20gMTUg dG8gMTEKcmVzZXR0aW5nIGlub2RlIDEzNDU2MjkwIG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRp bmcgaW5vZGUgMTM0NTY0NDUgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMzQ1 NjY2NyBubGlua3MgZnJvbSA0MyB0byAzMgpyZXNldHRpbmcgaW5vZGUgMTM0NzU4NTQgbmxpbmtz IGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSAxMzUyNTA3MSBubGlua3MgZnJvbSA1IHRvIDQK cmVzZXR0aW5nIGlub2RlIDEzNTI1MDcyIG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5v ZGUgMTM1MjUwNzMgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSAxMzUyNTM1MiBu bGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEzNTI1NDAwIG5saW5rcyBmcm9tIDQg dG8gMwpyZXNldHRpbmcgaW5vZGUgMTM1MjU1MzYgbmxpbmtzIGZyb20gNSB0byA0CnJlc2V0dGlu ZyBpbm9kZSAxMzUyNTU0MSBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDEzNTI1 NzE0IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTM1MjU4NzkgbmxpbmtzIGZy b20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMzUyNjE4NSBubGlua3MgZnJvbSAzIHRvIDIKcmVz ZXR0aW5nIGlub2RlIDEzNTI2NDExIG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUg MTM1MzUxODUgbmxpbmtzIGZyb20gMTAgdG8gNwpyZXNldHRpbmcgaW5vZGUgMTM1MzUxOTAgbmxp bmtzIGZyb20gNCB0byAyCnJlc2V0dGluZyBpbm9kZSAxMzYyODI1NyBubGlua3MgZnJvbSA0IHRv IDMKcmVzZXR0aW5nIGlub2RlIDEzNjI5MzI3IG5saW5rcyBmcm9tIDE3IHRvIDEzCnJlc2V0dGlu ZyBpbm9kZSAxMzYzMTU5OSBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDEzNjMx NjA0IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTM2MzE2MDkgbmxpbmtzIGZy b20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMzYzMTYxNCBubGlua3MgZnJvbSAzIHRvIDIKcmVz ZXR0aW5nIGlub2RlIDEzNjMxNjE5IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUg MTM2MzE2MjQgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMzYzMTYyOSBubGlu a3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEzNjMxNjM0IG5saW5rcyBmcm9tIDMgdG8g MgpyZXNldHRpbmcgaW5vZGUgMTM2MzE2MzkgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBp bm9kZSAxMzYzMjMxNSBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEzNjMyNDA1 IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTM2MzI0MTIgbmxpbmtzIGZyb20g MyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMzYzMjQyNyBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0 aW5nIGlub2RlIDEzNjMyNTIwIG5saW5rcyBmcm9tIDggdG8gNgpyZXNldHRpbmcgaW5vZGUgMTM2 MzI4NzQgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSAxMzY0ODAwOCBubGlua3Mg ZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDEzNjQ4MjEzIG5saW5rcyBmcm9tIDMgdG8gMgpy ZXNldHRpbmcgaW5vZGUgMTM2NzU5NDEgbmxpbmtzIGZyb20gMTcgdG8gMTIKcmVzZXR0aW5nIGlu b2RlIDEzNjc1OTQyIG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTM2NzU5NDUg bmxpbmtzIGZyb20gNyB0byA1CnJlc2V0dGluZyBpbm9kZSAxMzY3NTk0NyBubGlua3MgZnJvbSA5 IHRvIDUKcmVzZXR0aW5nIGlub2RlIDEzNjc1OTkxIG5saW5rcyBmcm9tIDUgdG8gNApyZXNldHRp bmcgaW5vZGUgMTM2NzU5OTIgbmxpbmtzIGZyb20gMjMgdG8gMTYKcmVzZXR0aW5nIGlub2RlIDEz Njc2MTAyIG5saW5rcyBmcm9tIDYgdG8gNQpyZXNldHRpbmcgaW5vZGUgMTM2NzYyMjQgbmxpbmtz IGZyb20gNSB0byAzCnJlc2V0dGluZyBpbm9kZSAxMzY3NjMzNiBubGlua3MgZnJvbSA1IHRvIDMK cmVzZXR0aW5nIGlub2RlIDEzNjc2NTY2IG5saW5rcyBmcm9tIDEyIHRvIDEwCnJlc2V0dGluZyBp bm9kZSAxMzY3NjU4OSBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEzNjc2NTky IG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTM2NzY1OTkgbmxpbmtzIGZyb20g MTkgdG8gMTYKcmVzZXR0aW5nIGlub2RlIDEzNjc3NDAyIG5saW5rcyBmcm9tIDEwIHRvIDkKcmVz ZXR0aW5nIGlub2RlIDEzNjc3NDAzIG5saW5rcyBmcm9tIDggdG8gNgpyZXNldHRpbmcgaW5vZGUg MTM2ODQwMTMgbmxpbmtzIGZyb20gNiB0byA0CnJlc2V0dGluZyBpbm9kZSAxMzczMjAzNiBubGlu a3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEzNzMyMTYxIG5saW5rcyBmcm9tIDggdG8g NgpyZXNldHRpbmcgaW5vZGUgMTM3MzIxNzcgbmxpbmtzIGZyb20gNyB0byA2CnJlc2V0dGluZyBp bm9kZSAxMzczMjE5NSBubGlua3MgZnJvbSA2IHRvIDUKcmVzZXR0aW5nIGlub2RlIDEzNzMyMjAx IG5saW5rcyBmcm9tIDcgdG8gNQpyZXNldHRpbmcgaW5vZGUgMTM3MzIzNzggbmxpbmtzIGZyb20g NSB0byA0CnJlc2V0dGluZyBpbm9kZSAxMzczMjQ0OSBubGlua3MgZnJvbSA1IHRvIDQKcmVzZXR0 aW5nIGlub2RlIDEzNzM5ODMwIG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTM3 NDAwMTcgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9kZSAxMzkxNjIwOCBubGlua3Mg ZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDEzOTE2MjkwIG5saW5rcyBmcm9tIDggdG8gNgpy ZXNldHRpbmcgaW5vZGUgMTM5MTYzNTEgbmxpbmtzIGZyb20gNyB0byA1CnJlc2V0dGluZyBpbm9k ZSAxMzkxNzkyNCBubGlua3MgZnJvbSA2IHRvIDUKcmVzZXR0aW5nIGlub2RlIDEzOTE4MDE4IG5s aW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTM5MTgwMjQgbmxpbmtzIGZyb20gNSB0 byA0CnJlc2V0dGluZyBpbm9kZSAxMzkxODA2MyBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5n IGlub2RlIDEzOTE4MTQ0IG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTM5MTgx NjUgbmxpbmtzIGZyb20gNSB0byA0CnJlc2V0dGluZyBpbm9kZSAxMzkxODE5OCBubGlua3MgZnJv bSA5IHRvIDcKcmVzZXR0aW5nIGlub2RlIDEzOTE4MjYxIG5saW5rcyBmcm9tIDQgdG8gMwpyZXNl dHRpbmcgaW5vZGUgMTM5MTg2ODggbmxpbmtzIGZyb20gMTEgdG8gNgpyZXNldHRpbmcgaW5vZGUg MTM5MTg5NTYgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMzkxODk3MiBubGlu a3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDEzOTE5MTM1IG5saW5rcyBmcm9tIDMgdG8g MgpyZXNldHRpbmcgaW5vZGUgMTM5MTkxMzggbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBp bm9kZSAxMzkxOTE1NyBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDEzOTE5MTU5 IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTM5NTY2NTcgbmxpbmtzIGZyb20g NiB0byA1CnJlc2V0dGluZyBpbm9kZSAxMzk1OTA5NiBubGlua3MgZnJvbSAyMSB0byAxNgpyZXNl dHRpbmcgaW5vZGUgMTM5NTkyNTIgbmxpbmtzIGZyb20gMjYgdG8gMTkKcmVzZXR0aW5nIGlub2Rl IDEzOTU5MjkwIG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTM5NTk0NjQgbmxp bmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxMzk1OTQ3NiBubGlua3MgZnJvbSA0IHRv IDMKcmVzZXR0aW5nIGlub2RlIDEzOTU5NDg3IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcg aW5vZGUgMTQwNTEwMTIgbmxpbmtzIGZyb20gNiB0byA1CnJlc2V0dGluZyBpbm9kZSAxNDA1MTAx OSBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDE0MDUxMDg0IG5saW5rcyBmcm9t IDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTQwNTEwOTggbmxpbmtzIGZyb20gMjAgdG8gMTYKcmVz ZXR0aW5nIGlub2RlIDE0MDUxMTA5IG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUg MTQwNTExNzIgbmxpbmtzIGZyb20gNyB0byA1CnJlc2V0dGluZyBpbm9kZSAxNDA1MTMwMyBubGlu a3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDE0MDUxMzY2IG5saW5rcyBmcm9tIDMgdG8g MgpyZXNldHRpbmcgaW5vZGUgMTQwNTk4NDcgbmxpbmtzIGZyb20gNSB0byA0CnJlc2V0dGluZyBp bm9kZSAxNDA1OTg0OCBubGlua3MgZnJvbSA1IHRvIDQKcmVzZXR0aW5nIGlub2RlIDE0MDYwMTM4 IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTQwNjAxODIgbmxpbmtzIGZyb20g MyB0byAyCnJlc2V0dGluZyBpbm9kZSAxNDA2MDI3MiBubGlua3MgZnJvbSA1IHRvIDQKcmVzZXR0 aW5nIGlub2RlIDE0MDYwMjczIG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTQw NjExNTkgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxNDA2MTE2MCBubGlua3Mg ZnJvbSA1IHRvIDQKcmVzZXR0aW5nIGlub2RlIDE0MDYxMTYxIG5saW5rcyBmcm9tIDQxIHRvIDMx CnJlc2V0dGluZyBpbm9kZSAxNDA2MTMxNyBubGlua3MgZnJvbSA4IHRvIDYKcmVzZXR0aW5nIGlu b2RlIDE0MDg0MDA3IG5saW5rcyBmcm9tIDEwIHRvIDgKcmVzZXR0aW5nIGlub2RlIDE0MDg0MTc4 IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTQwODQzMjEgbmxpbmtzIGZyb20g NiB0byA0CnJlc2V0dGluZyBpbm9kZSAxNDA4NDU4OCBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0 aW5nIGlub2RlIDE0MDg0NTg5IG5saW5rcyBmcm9tIDggdG8gNgpyZXNldHRpbmcgaW5vZGUgMTQw ODQ3MTMgbmxpbmtzIGZyb20gMTMgdG8gMTAKcmVzZXR0aW5nIGlub2RlIDE0MDg0Nzc4IG5saW5r cyBmcm9tIDEyIHRvIDkKcmVzZXR0aW5nIGlub2RlIDE0MDg0OTUzIG5saW5rcyBmcm9tIDMgdG8g MgpyZXNldHRpbmcgaW5vZGUgMTQwODUxNDYgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBp bm9kZSAxNDA4NTE4MCBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDE0MDg1NjI2 IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTQwODU3OTIgbmxpbmtzIGZyb20g NCB0byAzCnJlc2V0dGluZyBpbm9kZSAxNDA4NTc5MyBubGlua3MgZnJvbSAxMiB0byA5CnJlc2V0 dGluZyBpbm9kZSAxNDA4NjIxMSBubGlua3MgZnJvbSAxMyB0byAxMApyZXNldHRpbmcgaW5vZGUg MTQxMTU4MTEgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxNDExNTgxOSBubGlu a3MgZnJvbSA2IHRvIDUKcmVzZXR0aW5nIGlub2RlIDE0MTYwMTg4IG5saW5rcyBmcm9tIDMgdG8g MgpyZXNldHRpbmcgaW5vZGUgMTQxNjExNjIgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBp bm9kZSAxNDE2MTk4MCBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDE0MTYyMTE4 IG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTQxNjMyNzEgbmxpbmtzIGZyb20g MyB0byAyCnJlc2V0dGluZyBpbm9kZSAxNDI0OTI4MSBubGlua3MgZnJvbSAxMCB0byA4CnJlc2V0 dGluZyBpbm9kZSAxNDI0OTMwOSBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDE0 MjQ5NjEyIG5saW5rcyBmcm9tIDUgdG8gNApyZXNldHRpbmcgaW5vZGUgMTQyNTAzMTUgbmxpbmtz IGZyb20gOSB0byA3CnJlc2V0dGluZyBpbm9kZSAxNDMwMjQzMiBubGlua3MgZnJvbSAzIHRvIDIK cmVzZXR0aW5nIGlub2RlIDE0MzAyNDQ2IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5v ZGUgMTQzMDI0NjAgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxNDMwMjQ3NCBu bGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDE0MzUwNzg5IG5saW5rcyBmcm9tIDMg dG8gMgpyZXNldHRpbmcgaW5vZGUgMTQzNTA4MTggbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGlu ZyBpbm9kZSAxNDM1MDgyMiBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDE0MzUw ODU3IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTQzNTA4NjcgbmxpbmtzIGZy b20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxNDUyNjA5MyBubGlua3MgZnJvbSA0IHRvIDMKcmVz ZXR0aW5nIGlub2RlIDE0NTI4Mzg0IG5saW5rcyBmcm9tIDEyIHRvIDkKcmVzZXR0aW5nIGlub2Rl IDE0NTI4NDM1IG5saW5rcyBmcm9tIDIxIHRvIDE2CnJlc2V0dGluZyBpbm9kZSAxNDUzMjQzNyBu bGlua3MgZnJvbSAxMyB0byAxMApyZXNldHRpbmcgaW5vZGUgMTQ1NDMzOTEgbmxpbmtzIGZyb20g NSB0byA0CnJlc2V0dGluZyBpbm9kZSAxNDY2NDI1NSBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0 aW5nIGlub2RlIDE0NjY0MjU4IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTQ2 NjQyNzQgbmxpbmtzIGZyb20gNSB0byA0CnJlc2V0dGluZyBpbm9kZSAxNDY2NDc4NiBubGlua3Mg ZnJvbSA1IHRvIDQKcmVzZXR0aW5nIGlub2RlIDE0NjY0Nzg5IG5saW5rcyBmcm9tIDggdG8gNgpy ZXNldHRpbmcgaW5vZGUgMTQ2NjQ5NjIgbmxpbmtzIGZyb20gNCB0byAzCnJlc2V0dGluZyBpbm9k ZSAxNDY2NDk2MyBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlub2RlIDE0NjY0OTgyIG5s aW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTQ2NjUyODcgbmxpbmtzIGZyb20gMyB0 byAyCnJlc2V0dGluZyBpbm9kZSAxNDY2NTQxMCBubGlua3MgZnJvbSA2IHRvIDUKcmVzZXR0aW5n IGlub2RlIDE0NjY1NDU3IG5saW5rcyBmcm9tIDQgdG8gMwpyZXNldHRpbmcgaW5vZGUgMTQ2NjU1 MTMgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxNDY2NTUxNiBubGlua3MgZnJv bSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDE0NjY1NTI4IG5saW5rcyBmcm9tIDQgdG8gMwpyZXNl dHRpbmcgaW5vZGUgMTQ2NjU1NjMgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAx NDY2NTg4OCBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDE0NjY2Mjk4IG5saW5r cyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTQ2NjY3MjMgbmxpbmtzIGZyb20gMyB0byAy CnJlc2V0dGluZyBpbm9kZSAxNDY2NzExMiBubGlua3MgZnJvbSA0IHRvIDMKcmVzZXR0aW5nIGlu b2RlIDE0NjgxMDQzIG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTQ5NjUzMTkg bmxpbmtzIGZyb20gNyB0byA0CnJlc2V0dGluZyBpbm9kZSAxNDk2NTM1MyBubGlua3MgZnJvbSAz IHRvIDIKcmVzZXR0aW5nIGlub2RlIDE0OTY1MzU1IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRp bmcgaW5vZGUgMTQ5NjUzNTcgbmxpbmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxNDk2 NTM1OSBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2RlIDE0OTY1MzYxIG5saW5rcyBm cm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTQ5NjUzNjMgbmxpbmtzIGZyb20gMyB0byAyCnJl c2V0dGluZyBpbm9kZSAxNDk2NTM2NSBubGlua3MgZnJvbSAzIHRvIDIKcmVzZXR0aW5nIGlub2Rl IDE0OTY1MzY3IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcgaW5vZGUgMTQ5NjUzNzAgbmxp bmtzIGZyb20gMyB0byAyCnJlc2V0dGluZyBpbm9kZSAxNDk2NzczNyBubGlua3MgZnJvbSAzIHRv IDIKcmVzZXR0aW5nIGlub2RlIDE0OTY3NzU4IG5saW5rcyBmcm9tIDMgdG8gMgpyZXNldHRpbmcg aW5vZGUgMTUwMTI2NjcgbmxpbmtzIGZyb20gNCB0byAzCk5vdGUgLSBzdHJpcGUgdW5pdCAoMCkg YW5kIHdpZHRoICgwKSBmaWVsZHMgaGF2ZSBiZWVuIHJlc2V0LgpQbGVhc2Ugc2V0IHdpdGggbW91 bnQgLW8gc3VuaXQ9PHZhbHVlPixzd2lkdGg9PHZhbHVlPgpkb25lCg== ------=_Part_94594_8787047.1230493238976-- From david@fromorbit.com Sun Dec 28 16:39:34 2008 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=unavailable 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 mBSMdSw7002918 for ; Sun, 28 Dec 2008 16:39:29 -0600 X-ASG-Debug-ID: 1230503965-7ae7008b0000-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 0E40E1B9FCEE for ; Sun, 28 Dec 2008 14:39:26 -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 DhRjFJTPV9hWfqbX for ; Sun, 28 Dec 2008 14:39:26 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AncDALaMV0l5LB1fgWdsb2JhbACTcgEBFiKoYFiOZYZE X-IronPort-AV: E=Sophos;i="4.36,293,1228051800"; d="scan'208";a="283584787" 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; 29 Dec 2008 09:09:24 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LH4I6-0005wJ-PS; Mon, 29 Dec 2008 09:39:22 +1100 Date: Mon, 29 Dec 2008 09:39:17 +1100 From: Dave Chinner To: Justin Piszcz Cc: Eric Sandeen , Alan Piszcz , esandeen@redhat.com, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_db 2.9.8: coredump Subject: Re: xfs_db 2.9.8: coredump Message-ID: <20081228223917.GC22525@disturbed> Mail-Followup-To: Justin Piszcz , Eric Sandeen , Alan Piszcz , esandeen@redhat.com, xfs@oss.sgi.com References: <49551073.5090704@redhat.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-Barracuda-Connect: ipmail05.adl2.internode.on.net[203.16.214.145] X-Barracuda-Start-Time: 1230503968 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.13856 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8805/Sun Dec 28 06:19:37 2008 on oss.sgi.com X-Virus-Status: Clean On Fri, Dec 26, 2008 at 12:52:10PM -0500, Justin Piszcz wrote: > On Fri, 26 Dec 2008, Justin Piszcz wrote: > > On Fri, 26 Dec 2008, Eric Sandeen wrote: > >> Justin Piszcz wrote: > >>> # xfs_db -V > >>> xfs_db version 2.9.8 > >>> > >>> p34:~# xfs_db -c frag -f /dev/sda1 > >>> Segmentation fault (core dumped) > >>> p34:~# xfs_db -c frag -r /dev/sda1 > >>> Segmentation fault (core dumped) > >>> > >>> (It was working BEFORE I ran xfs_fsr on it, it was at 16% fragmentation). > >>> > >>> Now it can no longer check it? xfs_db works on the block device under the filesystem, not the filesystem. Also, the block device on linux caches blocks, so after running xfs_fsr the filesystem layout has changed but the underlying block device now has a stale cache. hence xfs_db is probably being pointed off into la-la land by the stale block device cache. # echo 3 > /proc/sys/vm/drop_caches Is your friend whenever you want to use xfs_db on a mounted filesystem. > p34:~# umount /r1 > p34:~# sync And now the block device is coherent.... > p34:~# xfs_db -c frag -r /dev/sda1 > actual 365758, ideal 358711, fragmentation factor 1.93% > p34:~# mount -a > p34:~# xfs_db -c frag -r /dev/sda1 > actual 365758, ideal 358711, fragmentation factor 1.93% > p34:~# mount -a ; dmesg | tail -n 2 > p34:~# xfs_fsr /dev/sda1 > /r1 start inode=0 > p34:~# xfs_db -c frag -r /dev/sda1 > actual 365751, ideal 358711, fragmentation factor 1.92% > p34:~# And this resulted in very little change so the block device cache wasn't completely wacked.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From jpiszcz@lucidpixels.com Sun Dec 28 16:44:50 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 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 mBSMiotc003341 for ; Sun, 28 Dec 2008 16:44:50 -0600 X-ASG-Debug-ID: 1230504288-683f03890000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7537B4D429 for ; Sun, 28 Dec 2008 14:44:48 -0800 (PST) Received: from lucidpixels.com (lucidpixels.com [75.144.35.66]) by cuda.sgi.com with ESMTP id FlP7O4KuC8rIPvIU for ; Sun, 28 Dec 2008 14:44:48 -0800 (PST) Received: by lucidpixels.com (Postfix, from userid 1001) id 570FDC772; Sun, 28 Dec 2008 17:44:48 -0500 (EST) Date: Sun, 28 Dec 2008 17:44:48 -0500 (EST) From: Justin Piszcz To: Dave Chinner cc: Eric Sandeen , Alan Piszcz , esandeen@redhat.com, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_db 2.9.8: coredump Subject: Re: xfs_db 2.9.8: coredump In-Reply-To: <20081228223917.GC22525@disturbed> Message-ID: References: <49551073.5090704@redhat.com> <20081228223917.GC22525@disturbed> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: lucidpixels.com[75.144.35.66] X-Barracuda-Start-Time: 1230504289 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.13856 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8805/Sun Dec 28 06:19:37 2008 on oss.sgi.com X-Virus-Status: Clean On Mon, 29 Dec 2008, Dave Chinner wrote: > On Fri, Dec 26, 2008 at 12:52:10PM -0500, Justin Piszcz wrote: >> On Fri, 26 Dec 2008, Justin Piszcz wrote: >>> On Fri, 26 Dec 2008, Eric Sandeen wrote: >>>> Justin Piszcz wrote: >>>>> # xfs_db -V >>>>> xfs_db version 2.9.8 >>>>> >>>>> p34:~# xfs_db -c frag -f /dev/sda1 >>>>> Segmentation fault (core dumped) >>>>> p34:~# xfs_db -c frag -r /dev/sda1 >>>>> Segmentation fault (core dumped) >>>>> >>>>> (It was working BEFORE I ran xfs_fsr on it, it was at 16% fragmentation). >>>>> >>>>> Now it can no longer check it? > > xfs_db works on the block device under the filesystem, not the > filesystem. Also, the block device on linux caches blocks, so > after running xfs_fsr the filesystem layout has changed but the > underlying block device now has a stale cache. hence xfs_db is > probably being pointed off into la-la land by the stale block > device cache. > > # echo 3 > /proc/sys/vm/drop_caches Thanks Dave, I will have to add this to my scripts whenever an xfs_fsr is performed to avoid the problem in the future. > > Is your friend whenever you want to use xfs_db on a mounted > filesystem. > >> p34:~# umount /r1 >> p34:~# sync > > And now the block device is coherent.... > >> p34:~# xfs_db -c frag -r /dev/sda1 >> actual 365758, ideal 358711, fragmentation factor 1.93% > >> p34:~# mount -a >> p34:~# xfs_db -c frag -r /dev/sda1 >> actual 365758, ideal 358711, fragmentation factor 1.93% >> p34:~# mount -a ; dmesg | tail -n 2 >> p34:~# xfs_fsr /dev/sda1 >> /r1 start inode=0 >> p34:~# xfs_db -c frag -r /dev/sda1 >> actual 365751, ideal 358711, fragmentation factor 1.92% >> p34:~# > > And this resulted in very little change so the block device > cache wasn't completely wacked.... > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > From david@fromorbit.com Sun Dec 28 18:29:16 2008 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=unavailable 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 mBT0TGk8007435 for ; Sun, 28 Dec 2008 18:29:16 -0600 X-ASG-Debug-ID: 1230510549-5ff9002b0000-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 C6E4A1791DA0 for ; Sun, 28 Dec 2008 16:29:09 -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 ghEAoGCYls4USDrX for ; Sun, 28 Dec 2008 16:29:09 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AncDABipV0l5LB1fgWdsb2JhbACTcwEBFiKoPFiOYoZE X-IronPort-AV: E=Sophos;i="4.36,293,1228051800"; d="scan'208";a="283621748" 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; 29 Dec 2008 10:58:52 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LH603-0008GQ-9E; Mon, 29 Dec 2008 11:28:51 +1100 Date: Mon, 29 Dec 2008 11:28:51 +1100 From: Dave Chinner To: Thomas Themel Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS corruption on ARM Subject: Re: XFS corruption on ARM Message-ID: <20081229002851.GD22525@disturbed> Mail-Followup-To: Thomas Themel , linux-kernel@vger.kernel.org, xfs@oss.sgi.com References: <20081228123305.GE30805@themel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081228123305.GE30805@themel.com> 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: 1230510550 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.13863 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV version 0.91.2, clamav-milter version 0.91.2 on oss.sgi.com X-Virus-Status: Clean [CC'd the xfs list.] On Sun, Dec 28, 2008 at 01:33:05PM +0100, Thomas Themel wrote: > Hi, > > there was a thread[0] on this list in 2008-10 about XFS corrupting > rather quickly on recent ARM kernels, which seems to have petered out > without any apparent results. I'm still seeing the same problems with > 2.6.28, and I suspect that this qualifies as a kind of regression > (though ancient), since the devices I'm running this on (Buffalo > LinkStations) originally ship with a (vendor-modified) 2.6.16 kernel, > where XFS seems to be working. > > Is this still on anyone's radar? I'm willing to test proposed fixes and > supply data[1], but lack any deep knowledge of either ARM or XFS internals. > > (Please Cc: me, I'm not on the list.) > > [0] http://lkml.org/lkml/2008/10/1/382 > [1] Though mine doesn't look any different from what was posted in [0] > to the little-trained eye. > > ciao, > -- > [*Thomas Themel*] > [extended contact] But let your communication be, Yea, yea; Nay, nay: > [info provided in] for whatsoever is more than these cometh of evil. > [*message header*] - Matthew 5:37 > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Sun Dec 28 22:49:13 2008 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=unavailable 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 mBT4nBVv027915 for ; Sun, 28 Dec 2008 22:49:13 -0600 X-ASG-Debug-ID: 1230526150-2c0c02ed0000-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 5B1C44DB94 for ; Sun, 28 Dec 2008 20:49:10 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id eHOM8yQzWVLhE7io for ; Sun, 28 Dec 2008 20:49:10 -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 C289AAC358C; Sun, 28 Dec 2008 22:48:38 -0600 (CST) Message-ID: <495856A7.6040608@sandeen.net> Date: Sun, 28 Dec 2008 22:48:39 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Justin Piszcz , Alan Piszcz , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_db 2.9.8: coredump Subject: Re: xfs_db 2.9.8: coredump References: <49551073.5090704@redhat.com> <20081228223917.GC22525@disturbed> In-Reply-To: <20081228223917.GC22525@disturbed> 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: 1230526151 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.13879 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8806/Sun Dec 28 21:00:01 2008 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > On Fri, Dec 26, 2008 at 12:52:10PM -0500, Justin Piszcz wrote: >> On Fri, 26 Dec 2008, Justin Piszcz wrote: >>> On Fri, 26 Dec 2008, Eric Sandeen wrote: >>>> Justin Piszcz wrote: >>>>> # xfs_db -V >>>>> xfs_db version 2.9.8 >>>>> >>>>> p34:~# xfs_db -c frag -f /dev/sda1 >>>>> Segmentation fault (core dumped) >>>>> p34:~# xfs_db -c frag -r /dev/sda1 >>>>> Segmentation fault (core dumped) >>>>> >>>>> (It was working BEFORE I ran xfs_fsr on it, it was at 16% fragmentation). >>>>> >>>>> Now it can no longer check it? > > xfs_db works on the block device under the filesystem, not the > filesystem. Also, the block device on linux caches blocks, so > after running xfs_fsr the filesystem layout has changed but the > underlying block device now has a stale cache. hence xfs_db is > probably being pointed off into la-la land by the stale block > device cache. Ah, missed the part about doing it online. Probably shouldn't segfault though, I suppose. -Eric From lachlan@oss.sgi.com Sun Dec 28 22:55:24 2008 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBT4tMJN011775 for ; Sun, 28 Dec 2008 22:55:22 -0600 Received: (from lachlan@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mBT4sgUC028335; Sun, 28 Dec 2008 22:54:42 -0600 Date: Sun, 28 Dec 2008 22:54:42 -0600 Message-Id: <200812290454.mBT4sgUC028335@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, mainline, updated. v2.6.28-rc3-4786-g3c92ec8 X-Git-Refname: refs/heads/mainline X-Git-Reftype: branch X-Git-Oldrev: 3d44cc3e01ee1b40317f79ed54324e25c4f848df X-Git-Newrev: 3c92ec8ae91ecf59d88c798301833d7cf83f2179 X-Virus-Scanned: ClamAV 0.91.2/8806/Sun Dec 28 21:00:01 2008 on oss.sgi.com X-Virus-Status: Clean This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, mainline has been updated 3c92ec8 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc c4c9f01 net: ehea NAPI interface cleanup fix bf66542 cifs: update for new IP4/6 address printing d05a788 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 96faec9 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next 2926328 Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-nvram 54d2f64 Merge branch 'next' into for-linus ca9153a powerpc/44x: Support 16K/64K base page sizes on 44x 6ca4f74 powerpc: Force memory size to be a multiple of PAGE_SIZE 541ef5c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k 0191b62 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 54a696b Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 1d248b2 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 1db2a5c Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 a39b863 Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip b0f4b28 Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip be9c5ae Merge branch 'x86-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip bb26c6c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 e14e61e Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 cb10ea5 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 81d6e59 Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 aa6eeee m68k: use the new byteorder headers 7f877eb fbcon: Protect free_irq() by MACH_IS_ATARI check 79f0c9a fbcon: remove broken mac vbl handler 646819e m68k: fix trigraph ignored warning in setox.S 3839d01 macfb annotations and compiler warning fix 746e8d3 m68k: mac baboon interrupt enable/disable 429dbf5 m68k: machw.h cleanup 4a97359 m68k: Mac via cleanup and commentry 40f7f9c m68k: Reinstate mac rtc eb56092 net: Allow dependancies of FDDI & Tokenring to be modular. 8d25332 igb: Fix build warning when DCA is disabled. 2d5451d net: Fix warning fallout from recent NAPI interface changes. 0da2afd gro: Fix potential use after free 8438134 sfc: If AN is enabled, always read speed/duplex from the AN advertising bits f4bd954 sfc: When disabling the NIC, close the device rather than unregistering it 307505e sfc: SFT9001: Add cable diagnostics 1796721 sfc: Add support for multiple PHY self-tests 2ef3068 sfc: Merge top-level functions for self-tests a5692e4 sfc: Clean up PHY mode management in loopback self-test caa8d8b sfc: Fix unreliable link detection in some loopback modes 6977dc6 sfc: Generate unique names for per-NIC workqueues e727149 802.3ad: use standard ethhdr instead of ad_header e4ac432 802.3ad: generalize out mac address initializer 7addeef 802.3ad: initialize ports LACPDU from const initializer 87f422f 802.3ad: remove typedef around ad_system 1624db7 802.3ad: turn ports is_individual into a bool f48127b 802.3ad: turn ports is_enabled into a bool d238d45 802.3ad: make ntt bool d3fa472 ixgbe: Fix set_ringparam in ixgbe to use the same memory pools. 7adf152 ixgbe: Fix NAPI enable/disable path when using DCB d7b0663 net: Init NAPI dev_list on napi_del 26bc19e igb: re-order queues to support cleaner use of ivar on 82576 0e014cb igb: defeature tx head writeback f2712fd ipsec: Remove useless ret variable fdb614c ucc_geth: Eliminate the need for forward references 9c54004 atm: Driver for Solos PCI ADSL2+ card. 236b87c gigaset: ifdef cleanup c8770dc gigaset: use pr_err() and pr_info() 4d8cd00 cxgb3: add control to access embedded images 6dd0148 drivers/net/wireless/prism54: fix sparse warnings: make symbols static a3d1fd2 drivers/net/wireless/ipw2x00: fix sparse warnings: make symbols static 11ab72a drivers/net/wireless/b43: fix sparse warnings: make symbols static bf512bc drivers/net/wireless/ath9k: fix sparse warnings: make symbols static 2ed5ba8 drivers/net/wireless: fix sparse warnings: make symbols static 62c5345 drivers/net/wan/z85230.c: fix sparse warnings: un-EXPORT symbols 7b3dfa1 drivers/net/wan: fix sparse warning: make symbol static d157e02 drivers/net/wan: fix sparse warnings: make do-while a compound statement ec1d1eb drivers/net/tulip: fix sparse warnings: make do-while a compound statement 27cd6ae drivers/net/tokenring: fix sparse warnings: make symbols static 409b204 drivers/net/skfp: fix sparse warnings: make symbols static 2f22d22 drivers/net/qlge: fix sparse warnings: make symbols static f8057b7 drivers/net/netxen: fix sparse warnings: use NULL pointer instead of plain integer e855aac drivers/net/ixgbe: fix sparse warnings: make symbols static 0e49e64 drivers/net/irda: fix sparse warnings: make symbols static 678c610 drivers/net/igb: remove dead code (function 'igb_read_pci_cfg') 5e4232e drivers/net/enic: fix sparse warning: make symbol static fa4c16d drivers/net/e1000e: fix sparse warnings: make symbols static af8eca5 drivers/net/cxgb3: comment out dead code b06715b drivers/net/bonding: fix sparse warnings: move decls to header file 9dc20f5 drivers/net/atlx: fix sparse warnings: make symbols static 888432f drivers/net/arcnet: fix sparse warnings: make symbols static dac499f drivers/net: fix sparse warnings: make symbols static a08b32d drivers/net: fix sparse warning: returning void-valued expression e4c3c13 drivers/net: fix sparse warnings: make do-while a compound statement 2705d4f drivers/net: fix sparse warning: use ANSI-style function declaration d76e56b ehea: use get_zeroed_page for alignment-sensitive allocation 359d67d [CIFS] Remove redundant test c6fbba0 [CIFS] make sure that DFS pathnames are properly formed ac6a3ef Remove an already-checked error condition in SendReceiveBlockingLock 698e96a Streamline SendReceiveBlockingLock: Use "goto out:" in an error condition 17c8bfe Streamline SendReceiveBlockingLock: Use "goto out:" in an error condition 2b2bdfb [CIFS] Streamline SendReceive[2] by using "goto out:" in an error condition 8e4f2e8 Slightly streamline SendReceive[2] 829049c Check the return value of cifs_sign_smb[2] 4c3130e [CIFS] Cleanup: Move the check for too large R/W requests 27a97a6 [CIFS] Slightly simplify wait_for_free_request(), remove an unnecessary "else" branch 8fbbd36 Simplify allocate_mid() slightly: Remove some unnecessary "else" branches 6d9c6d5 [CIFS] In SendReceive, move consistency check out of the mutexed region 00e485b cifs: store password in tcon 4e53a3f cifs: have calc_lanman_hash take more granular args 55162de cifs: zero out session password before freeing it 8570552 cifs: fix wait_for_response to time out sleeping processes correctly 8be0ed4 [CIFS] Can not mount with prefixpath if root directory of share is inaccessible 61e7480 [CIFS] various minor cleanups pointed out by checkpatch script 3de2091 [CIFS] fix typo acc18aa [CIFS] remove sparse warning 13a6e42 [CIFS] add mount option to send mandatory rather than advisory locks d5c5605 cifs: make ipv6_connect take a TCP_Server_Info arg bcf4b10 cifs: make ipv4_connect take a TCP_Server_Info arg 7586b76 cifs: don't declare smb_vol info on the stack 63c038c cifs: move allocation of new TCP_Server_Info into separate function 8ecaf67 cifs: account for IPv6 in ses->serverName and clean up netbios name handling 954d7a1 cifs: make dnotify thread experimental code 72ca545 cifs: convert tcpSem to a mutex 0468a2c cifs: take module reference when starting cifsd 8090902 cifs: display addr and prefixpath options in /proc/mounts 24b9b06 cifs: remove unused SMB session pointer from struct mid_q_entry 26c743b mlx4_en: Remove pauses module parameters. 60b9f9e mlx4_en: Removed Interrupt moderation module parameters c03ea21 mlx4_en: Removed redundant cq->armed flag 48374dd mlx4_en: Removed TX locking when polling TX cq b51968d mlx4_en: Memory leak on completion queue free e74b3f7 Merge branch 'for-david' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 13e620e myri10ge: update driver version to 1.4.4-1.395 e92df28 myri10ge: update firmware headers to 1.4.37 36994a0 forcedeth: don't poll NV event 36 88a44e5 net/appletalk: Remove redundant test c14ea0c drivers/net/wan: Remove redundant test 90f5dfc drivers/net: Remove redundant test 662f44a drivers/net/ehea: Remove redundant test b0fd0d2 drivers/net/au1000_eth.c: Remove redundant test c062076 qlge: ql_adapter_down() typo 619e803 netlink: fix (theoretical) overrun in message iteration 64ff3b9 tcp: Always set urgent pointer if it's beyond snd_nxt 8510b93 sctp: Add validity check for SCTP_PARTIAL_DELIVERY_POINT socket option 9fcb95a sctp: Avoid memory overflow while FWD-TSN chunk is received with bad stream ID aea3c5c sctp: Implement socket option SCTP_GET_ASSOC_NUMBER ea686a2 sctp: Fix a typo in socket.c e89c209 sctp: Bring SCTP_MAXSEG socket option into ietf API extension compliance 161c8d2 net: PHYLIB mdio fixes #2 f7d1b9f vlan: fix convertion to net_device_ops d452273 smsc911x: fix platform resource call during module unload dc26977 smsc911x: don't clobber driver_data 7091e72 netns: igmp: make /proc/net/{igmp,mcfilter} per netns b4ee07d netns: igmp: allow IPPROTO_IGMP sockets in netns cb5b04f smsc911x: make smsc911x_ethtool_ops constant 631b756 smsc911x: convert driver to use net_device_ops dd04519 smsc911x: fix BUG if module is removed while interface is up 4e20228 Merge branch 'sched/urgent'; commit 'v2.6.28' into sched/core cef7125 [S390] provide documentation for hvc_iucv kernel parameter. 2a7c6f2 [S390] convert ctcm printks to dev_xxx and pr_xxx macros. ecf39d4 [S390] convert zfcp printks to pr_xxx macros. 5466c2e [S390] convert vmlogrdr printks to pr_xxx macros. 17159dc6 [S390] convert zfcp dumper printks to pr_xxx macros. 395d31d [S390] convert cpu related printks to pr_xxx macros. 74eacdb [S390] convert qeth printks to dev_xxx and pr_xxx macros. b3ff088 [S390] convert sclp printks to pr_xxx macros. 8f7c502 [S390] convert iucv printks to dev_xxx and pr_xxx macros. 136f7a1 [S390] convert ap_bus printks to pr_xxx macros. 93098bf [S390] convert dcssblk and extmem printks messages to pr_xxx macros. 1519c0c [S390] convert monwriter printks to pr_xxx macros. c5612c1 [S390] convert s390 debug feature printks to pr_xxx macros. a4f5a29 [S390] convert monreader printks to pr_xxx macros. e7534b0 [S390] convert appldata printks to pr_xxx macros. 3b6ed4a [S390] convert setup printks to pr_xxx macros. f55495b [S390] convert hypfs printks to pr_xxx macros. feab650 [S390] convert time printks to pr_xxx macros. 39f0939 [S390] convert cpacf printks to pr_xxx macros. e6d5a42 [S390] convert cio printks to pr_xxx macros. 80a5c36 [S390] convert vmur printks to pr_xxx macros. 2f526e5 [S390] convert cpcmd printks to pr_xxx macros. c99fc5d [S390] convert lcs printks to dev_xxx and pr_xxx macros. 8988e58 [S390] convert vmcp printks to pr_xxx macros. d1c2f89 [S390] convert xpram printks to pr_xxx macros. acfa922 [S390] s390: Remove redundant test 0946100 [S390] s390/setup: set default preferred console device "ttyS" 21e7b2c [S390] drivers/s390/crypto: Move dereference to after IS_ERR test 33b1d09 [S390] panic_stack leak in smp_alloc_lowcore 4f7e90d [S390] clear_table inline assembly contraints c185b78 [S390] Remove config options. 349f1b6 [S390] cpu topology: remove dead code 2b1a61f [S390] cpu topology: introduce kernel parameter 9fee8db [S390] add new machine types to setup_hwcaps. c58d92b [S390] Remove initial kernel stack backchain initialization. 64253ac [S390] s390: use the new byteorder headers e37f50e [S390] Add processor type march=z10 and a processor type safety check. b3b59d3 [S390] sclp vt220: fix compile warning 2d6cd2a [S390] remove warnings with functions ending in BUG edd5378 [S390] mark disabled_wait as noreturn function d36f0c6 [S390] cio: use pim to check for multipath. f444cc0 [S390] cio: commit all pmcw changes. 13952ec [S390] cio: introduce cio_commit_config cdb912a [S390] cio: introduce cio_update_schib d6a3076 [S390] cio: Use device_is_registered(). 283fdd0 [S390] cio: Dont call ->release directly. 90ed2b6 [S390] cio: Dont fail probe for I/O subchannels. 5fb6b85 [S390] cio: Only register ccw_device for registered subchannel. 6eff208 [S390] cio: Fix I/O subchannel refcounting. 9cd6742 [S390] cio: Fix reference counting for online/offline. 97166f5 [S390] cio: Put referernce on correct device after moving. c619d42 [S390] cio: fix ccwgroup online vs. ungroup race condition 111e95a [S390] cio: move irritating comment. d7b6048 [S390] cio: update sac values 191fd44 [S390] cio: get rid of compile warning 547e3ce [S390] remove ptrace warning on 31 bit. 32272a2 [S390] __page_to_pfn warnings 91d5d45 [S390] iucv: Locking free version of iucv_message_(receive|send) 44a01d5 [S390] s390/hvc_console: z/VM IUCV hypervisor console support 5d360a7 [S390] ftrace: function tracer backend for s390 98df67b [S390] struct device - replace bus_id with dev_name(), dev_set_name() 0cd4bd4 [S390] dasd: call cleanup_cqr with request_queue_lock 50afd20 [S390] dasd: correct sense byte condition for SIM faf16aa [S390] dasd: Use accessors instead of using driver_data directly. 2bf373b [S390] dasd: improve dasd statistics proc interface bd43a42 [S390] zfcp: Report microcode level through service level interface 6bcac50 [S390] service level interface. 7a0b4cb [S390] qdio: fix error reporting for hipersockets 50f769d [S390] qdio: improve inbound buffer acknowledgement 22f9934 [S390] qdio: rework debug feature logging 9a1ce28 [S390] qdio: fix compile warning under 31 bit 23589d0 [S390] qdio: add eqbs/sqbs instruction counters bbd50e1 [S390] qdio: fix qeth port count detection 43c207e6 [S390] ap: Minor code beautification. cb17a63 [S390] zcrypt: Use of Thin Interrupts 320c04c [S390] Move stfle to header file. ca9fc75 [S390] convert s390 to generic IPI infrastructure 0b3016b [S390] serialize stp/etr work 750887d [S390] convert etr/stp to stop_machine interface b020632 [S390] introduce vdso on s390 fc5243d [S390] arch_setup_additional_pages arguments a114a9d [S390] vmcp: remove BKL f414f5f [S390] cpu topology: dont destroy cpu sets on topology change 8f2961c [S390] audit: get s390 ret_from_fork in sync with other architectures 5439050 [S390] cpu topology: fix cpu_core_map initialization 5250d32 Merge branches 'tracing/ftrace', 'tracing/hw-branch-tracing' and 'tracing/ring-buffer'; commit 'v2.6.28' into tracing/core 468a15b sched, trace: update trace_sched_wakeup() a3eeeef Merge branch 'x86/tsc' into tracing/core 79a66b9 Merge branches 'x86/pat2' and 'x86/fpu'; commit 'v2.6.28' into x86/core 1fcccb0 x86: traps.c replace #if CONFIG_X86_32 with #ifdef CONFIG_X86_32 5ce442f Merge branch 'topic/udev-id-rename' into to-push 60cda2b Merge branch 'topic/sound-core-fix' into to-push 9649745 Merge branch 'topic/snd-hrtimer' into to-push a9c3c7e Merge branch 'topic/pcxhr-update' into to-push cc49108 Merge branch 'topic/oxygen' into to-push a802269 Merge branch 'topic/jack-mechanical' into to-push a650562 Merge branch 'topic/hda' into to-push 313769d Merge branch 'topic/cs5535audio' into to-push 8afabfa Merge branch 'topic/convert-tasklet' into to-push 86b3aa3 Merge branch 'topic/ca0106' into to-push e4456e7 Merge branch 'topic/audigy-capture-boost' into to-push 5c8261e Merge branch 'topic/asoc' into to-push facef86 Merge branch 'topic/aoa' into to-push 0ca59dd tracing/ftrace: don't trace on early stage of a secondary cpu boot, v3 2a0d836 Merge branches 'cma', 'ehca', 'ipath', 'iser', 'mlx4' and 'nes' into for-next 7798dbf IB/mlx4: Set ownership bit correctly when copying CQEs during CQ resize e189062 RDMA/nes: Remove tx_free_list 81ea714 smackfs: check for allocation failures in smk_set_access() cbacc2c Merge branch 'next' into for-linus 0ee4a96 crypto: aes - Precompute tables ca38a81 crypto: talitos - Ack done interrupt in isr instead of tasklet bcf84a3 crypto: testmgr - Correct comment about deflate parameters f0d1ec3 crypto: salsa20 - Remove private wrappers around various operations ad79cdd crypto: des3_ede - permit weak keys unless REQ_WEAK_KEY set bd9d20d crypto: sha512 - Switch to shash f9e2bca crypto: sha512 - Move message schedule W[80] to static percpu area 19e2bf1 crypto: michael_mic - Switch to shash 4946510 crypto: wp512 - Switch to shash f63fbd3 crypto: tgr192 - Switch to shash 50e109b crypto: sha256 - Switch to shash 14b75ba crypto: md5 - Switch to shash 808a176 crypto: md4 - Switch to shash 54ccb36 crypto: sha1 - Switch to shash 3b8efb4 crypto: rmd320 - Switch to shash d8a5e2e crypto: rmd256 - Switch to shash e5835fb crypto: rmd160 - Switch to shash 7c4468b crypto: rmd128 - Switch to shash d35d245 crypto: null - Switch to shash 3751f40 crypto: hash - Make setkey optional b812eb0 crypto: testmgr - Validate output length in (de)compression tests dad3df2 crypto: remove uses of __constant_{endian} helpers 664134d crypto: testmgr - Fix error flow of test_comp 5f459f0 crypto: hifn_795x - Use softirq kernel mapping in bh context d6a10c8 crypto: hifn_795x - Fix queue management 3ec858d crypto: hifn_795x - Remove some unused cruft ed4f92e crypto: hifn_795x - Fix queue processing 5df4c0c crypto: hifn_795x - Fix request context corruption 3416158 crypto: hifn_795x - Don't copy src sg list 75741a0 crypto: hifn_795x - Fix DMA setup 09fbf7c crypto: ansi_cprng - fix inverted DT increment routine 9302735 libcrc32c: Select CRYPTO in Kconfig aa1a85d crypto: ansi_cprng - Avoid incorrect extra call to _get_more_prng_bytes 31a61bf crypto: md4 - Use ARRAY_SIZE 0426c16 libcrc32c: Add crc32c_le macro 53b146a libcrc32c: Fix "crc32c undefined" compilation error 69c35ef libcrc32c: Move implementation to crypto crc32c 8e3ee85 crypto: crc32c - Test descriptor context format b7e8bda crypto: crc32c-intel - Switch to shash faccc4b crypto: crc32c - Switch to shash 5f7082e crypto: hash - Export shash through hash 67cd080 crypto: api - Call type show function before legacy for proc dec8b78 crypto: hash - Add import/export interface 3b2f6df crypto: hash - Export shash through ahash 7b5a080b crypto: hash - Add shash interface 7b0bac6 crypto: api - Rebirth of crypto_alloc_tfm 4a77948 crypto: api - Move type exit function into crypto_tfm 2566578 crypto: ansi_cprng - Allow resetting of DT value 420a4b2 crypto: padlock - Avoid resetting cword on successive operations 1c06da8 crypto: crc32c-intel - Update copyright head 4b24ea9 crypto: talitos - Preempt overflow interrupts off-by-one fix 32bd78e crypto: camellia - use kernel-provided bitops, unaligned access d12d6b6 crypto: testmgr - Trigger a panic when self test fails in FIPS mode fe5720e crypto: talitos - Perform auth check in h/w if on sec 2.1 and above 1c2e881 crypto: talitos - Implement done interrupt mitigation 40405f1 crypto: talitos - Pass correct interrupt status to error handler a44b56c crypto: hifn - Disable driver when physical size exceeds 32 bits 4a6908a Linux 2.6.28 67be403 Revert "x86: disable X86_PTRACE_BTS" db8862e Merge branch 'linus' into tracing/hw-branch-tracing c20137f Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 1806f82 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2523659 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 1f5175a RDMA/cma: Add IPv6 support 38617c6 RDMA/addr: Add support for translating IPv6 addresses 7645c4b Merge branch 'fix/hda' into topic/hda 574f3c4 ALSA: hda - Add missing terminators in patch_sigmatel.c 40f15ad x86: disable X86_PTRACE_BTS c1c15b6 x86: PAT: fix address types in track_pfn_vma_new() 6332178 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 5289f46 parisc: disable UP-optimized flush_tlb_mm 8960223 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 d519c8d edac: fix edac core deadlock when removing a device 20ca9b3 cgroups: avoid accessing uninitialized data in failure path e368d3a cgroups: suppress bogus warning messages f00a189 w1: fix slave selection on big-endian systems cc6c2ca rtc: rtc-isl1208: reject invalid dates 98db8df ring-buffer: prevent false positive warning a8ccf1d ring-buffer: fix dangling commit race bed4f13 Merge branch 'x86/irq' into x86/core 3e5621e Merge branch 'x86/iommu' into x86/core be9a1d3 Merge branch 'x86/tsc' into x86/core 7e3cbc3 Merge branch 'x86/ptrace' into x86/tsc fa623d1 Merge branches 'x86/apic', 'x86/cleanups', 'x86/cpufeature', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/detect-hyper', 'x86/doc', 'x86/dumpstack', 'x86/early-printk', 'x86/fpu', 'x86/idle', 'x86/io', 'x86/memory-corruption-check', 'x86/microcode', 'x86/mm', 'x86/mtrr', 'x86/nmi-watchdog', 'x86/pat2', 'x86/pci-ioapic-boot-irq-quirks', 'x86/ptrace', 'x86/quirks', 'x86/reboot', 'x86/setup-memory', 'x86/signal', 'x86/sparse-fixes', 'x86/time', 'x86/uv' and 'x86/xen' into x86/core bf8bd66 Merge branch 'x86/apic' into x86/irq 1ccedb7 Merge commit 'v2.6.28-rc9' into x86/apic 231ffc9 V4L/DVB (9920): em28xx: fix NULL pointer dereference in call to VIDIOC_INT_RESET command 908a7a1 net: Remove unused netdev arg from some NAPI interfaces. f8f50b1 powerpc/32: Wire up the trampoline code for kdump ccdcef7 powerpc/32: Add the ability for a classic ppc kernel to be loaded at 32M 01695a9 powerpc/32: Allow __ioremap on RAM addresses for kdump kernel 6f29c32 powerpc/32: Setup OF properties for kdump 7375331 powerpc/32/kdump: Implement crash_setup_regs() using ppc_save_regs() 322b439 powerpc: Prepare xmon_save_regs for use with kdump 5be8554 powerpc: Remove default kexec/crash_kernel ops assignments 77733f8 powerpc: Make default kexec/crash_kernel ops implicit 2e8e4f5 powerpc: Setup OF properties for ppc32 kexec b906cfa powerpc/pseries: Fix cpu hotplug fad7b9b powerpc: Fix KVM build on ppc440 889bd9b net: startup race in hso driver 05a8c1c pkt_sched: Remove smp_wmb() in qdisc_watchdog() 4707470 r6040: bump release number to 0.19 3e7c469 r6040: save and restore MIER correctly in the interrupt routine 11e5e8f r6040: fix wrong logic in mdio code 5f2f6da net: Fix oops in dev_ifsioc() adf77ba x86: prioritize the FPU traps for the error code 077ebed drm/radeon: fix correctness of irq_enabled check for radeon. c47a75a Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 0099f77 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 9ecab6e drivers/ide/{cs5530.c,sc1200.c}: Move a dereference below a NULL test def434c powerpc/cell: add QPACE as a separate Cell platform e68558d powerpc/cell: fix build breakage with CONFIG_SPUFS disabled 2e85696 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 7ef5f41 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 472346d ALSA: ASoC: fix a typo in omp-pcm.c c691348 ASoC: Fix DSP formats in SSM2602 audio codec bd25867 ASoC: Fix incorrect DSP format in OMAP McBSP DAI and affected drivers f5eda57 mlx4_core: Delete incorrect comment b8dd786 mlx4_core: Add support for multiple completion event vectors 59de580 sh: oprofile: Fix up the module build. 7d91fcf sh: add UIO support for JPU on SH7722. b0c50ad serial: sh-sci: Fix up port pinmux for SH7366. 6f5cd2b sh: mach-rsk: Use uImage generation by default for rsk7201/7203. 2ea40de sh: mach-sh03: Fix up pata_platform build breakage. b5868e8 sh: enable deferred io LCDC on Migo-R 8564557 video: sh_mobile_lcdcfb deferred io support 37b4837 video: deferred io with physically contiguous memory 6e1038a video: deferred io cleanup 87884bd video: fix deferred io fsync() 0790555 sh: add LCDC interrupt configuration to AP325 and Migo-R 2540c11 sh_mobile_lcdc: use FB_SYS helpers instead of FB_CFB da9fdc8 sh: split coherent pages 78fb402 sh: dma: Kill off ISA DMA wrapper. 5d2685d sh: Conditionalize the code dumper on CONFIG_DUMP_CODE. fe58cac sh: Kill off the unused SH_ALPHANUMERIC debug option. 740a3e6 sh: Enable skipping of bss on debug platforms for sh32 also. 8a65505 doc: Update sh cpufreq documentation. 0146d78 sh: mrshpc_setup_windows() needs to be inline. 1f6fd5c serial: sh-sci: sci_poll_get_char() is only used by CONFIG_CONSOLE_POLL. 073da9c sh: Kill off cf-enabler with extreme prejudice. 8c197c3 sh: Add a simple edosk7705_defconfig for build testing. 866ef8f sh: mach-edosk7705: Fix up edosk7705 so it all builds again. 0ef0e6c sh: mach-microdev: Split out the fdc37c93xapm initialization code. 43eeb0f sh: mach-sh03: Use __set_io_port_base(), kill off special ioport_map(). 8db806e sh: mach-sh03: Move off of cf_enabler to pata_platform, as per landisk. 98a955d sh: board-shmin: Convert shmin to use __set_io_port_base(). 2125a46 sh: Kill off dead mv_init_pci() from machvec. 43f8f9b sh: Simplify kernel_thread_helper() for sh32. 7b80fb3 sh: Kill off mv_heartbeat() from the machvec. b94ea27 sh: Kill off the cayman and microdev special heartbeat code. ca0c14e44 sh: Kill off sh_bios_in_gdb_mode(). a9df1ed sh: export sh_bios_get_node_addr() symbol for stnic module. 8e32018 sh: Run sh_bios through a long overdue Lindent. d570164 serial: sh-sci: Generalize port pin initialization. d830fa4 serial: sh-sci: Tidy up fifo overrun error handling. 762c69e serial: sh-sci: pr_debug() -> dev_dbg() conversion. 027e687 serial: sh-sci: Fix up the cpufreq notifier to use the proper port clock. d9341b5 sh: oprofile: Convert op_model_sh7750 to new common interface. 40a8b42 sh: oprofile: Backtrace support. 60a51fb sh: oprofile: Refactor common setup code for multiple driver support. 70fe224 sh: Enable GENERIC_HARDIRQS_NO__DO_IRQ for all SuperH machines 1a94757 sh: Convert Cayman boards from hw_interrupt_type to irq_chip e85a477 sh: Convert Dreamcast support from hw_interrupt_type to irq_chip bd0a22d sh: Convert SystemH board support from hw_interrupt_type to irq_chip be729fd sh: Convert Microdev boards from hw_interrupt_type to irq_chip 180ae20 sh: Provide sdivsi3/udivsi3/udivdi3 for sh64, kill off libgcc linking. 209aa4f fb: SH-5 uses __raw I/O accessors now also, drop the special casing. 4466b20 sh: Add SH-5 optimized memcpy()/memset()/strcpy()/strlen(). 776d6c2 sh: Kill off remaining CONFIG_SH_KGDB bits. 07d2a1a serial: sh-sci: Implement CONSOLE_POLL support and kill off old kgdb console. ab6e570 sh: Generic kgdb stub support. d7b01f7 sh: Enable HAVE_ARCH_TRACEHOOK for all SH, now that SH-5 supports it too. dd76279 sh: Provide linux/regset.h interface for SH-5. 94e2fb3 sh: Provide asm/syscall.h for SH-5. 6ac0343 sh: Handle cases where setup{_rt,}_frame() fail on SH-5 signal delivery. f15b2dc sh: Fix up syscall_get_nr() comment in syscall_32.h. 35724a0 sh: Fix up the cpu_asid() return value on nommu. a99d6fd sh: Convert sh64 /proc/asids to debugfs and generic sh. 4d1f3bb sh: Kill off sh64's unused alloc/free_task_struct() definitions. 4eec883 sh: mach-migor: Kill off unused Migo-R machvec. 4545bfa sh: add ov772x reset delay on Migo-R a6bc25a sh: Drop the special qemu defconfig. bd40e81 sh: Delete unnecessary mov in the interrupt exception entry point. 06be372 sh: Fix an off-by-1 check in __mutex_fastpath_unlock(). a47925f sh: Update rsk701_defconfig to reflect mach-rsk changes. ff15b90 sh: Enable leds-gpio in rsk7203 defconfig. ea0aac1 sh: Consolidate rsk7203/7201 in to a new mach-rsk. b5cfeac sh: Provide ftrace_make_call()/ftrace_make_nop(). 4bc3e71 sh: Disable -Werror for arch/sh/oprofile/. 3b04122 sh: Add plain udivsi3 (not _i4*) for gcc-4.1 and lower. 1fdae0e Fix incorrect use of loose in c-checksum.c 77ba93a sh: Fix up the SH-4A mutex fastpath semantics. c6f17cb sh: allow CONFIG_CPU_IDLE af998a9 sh: allow CONFIG_PM 3e51762 sh: move the hp6xx pm code 0464518 sh: update se7343 defconfig 21c601b sh: remove ioport cruft and smc91x from se7343 5e5aacb sh: add isp1161 usb host device to se7343 6aacba7 sh: add st16c2550 devices to se7343 5727003 sh: fix number of interrupts on se7343 551ea2b sh: sh7343 scif configuration update 0c0daec sh: propagate r_clk 6feb348 sh: RSK+ 7201 board support. 2825999 sh: Add support for SH7201 CPU subtype. 135210b sh: Switch HD64461 from hw_interrupt_type to irq_chip 331ff10 sh: pci-sh7780: fix pci memory address mask 22f131a sh: Provide a dyn_arch_ftrace struct definition. 1da1180 sh: Split out the idle loop for reuse between _32/_64 variants. eb67cf1 sh: Consolidate cpu_relax()/cpu_sleep() definitions across _32/_64. f74c034 sh: do not latency trace idle. 75fd24c sh: Tidy up backtrace formatting with kallsyms disabled. 9cfc9a9 sh: Add a simple code dumper for SUPERH32 show_regs(). edfd6da sh: Add a few more branch types to the branch emulator. 5dd6147 sh: Re-add support for best fit ISA tuning if none is available. 624c6a6 sh: More movmem alias symbol exports for older compilers. 95b781c sh: Provide optimized unaligned loads on SH-4A. 716777d sh: P4 ioremap pass-through 0c91223 sh: Add SH-4A optimized fastpath mutex implementation. 5c72f30 sh: sh7760fb: Add support SH7720/SH7721 of Renesas 679dc3c sh: sh7760fb: Fix color pallette setting f617682 sh: add SH DMAC burst mode constant c2c5883 sh: fix DMAOR register access on SH7709 8085ac7 sh: Add platform-specific constants for SH7709 0d5bbe0 sh: Provide optimized non-atomic bitops for SH-2A. 8bcc5c1 sh: Add -m4al tuning for SH4AL-DSP. 9ef1002 sh: Add exports for __udivsi3/__sdivsi3 and the _i4 versions. 16b529d sh: Convert to generic bitops for IRQ-toggling implementation. 709420d sh: Specify sane default image targets for the SH-2 platforms. 1aad54a sh: Migrate necessary libgcc bits in to arch/sh/lib for SUPERH32. e9bf51e sh: __udivdi3 -> do_div() in softfloat lib. 00e825c sh: Fix clock framework compiler warnings. d643510 usb: Fix up sh_mobile usbf clock framework warnings. e7c98dc serial: sh-sci: Codestyle cleanup patch. af505b1 media: sh_mobile_ceu_camera: Add HAVE_CLK dependency. fad57fe sh: dynamic ftrace support. ef6aff6 sh: remove old sh_mobile mstpc clocks b51339f sh: sh_mobile lcdc clock framework support 765786e sh: sh_mobile usb clock framework support af5be79 sh: sh_mobile usbf clock framework support a42b6dd sh: sh_mobile ceu clock framework support 090d951 sh: sh_mobile keysc clock framework support a5616bd sh: sh_mobile i2c clock framework support f2eb010 sh: sh_mobile mstpcr clocks for sh7366 6e88d03 sh: sh_mobile mstpcr clocks for sh7343 f14c017 sh: sh_mobile mstpcr clocks for sh7723 ecf399b sh: sh_mobile mstpcr clocks for sh7722 7c7e02a sh: new sh_mobile mstpcr clocks base code 1dc7b77 sh: use arch_flags for sh_mobile mstpcr clock bits d902d04 sh: sh_mobile clock divider index fix d12cfac sh: enable and disable clocks recursively 4a4a9be sh: Move arch_get_unmapped_area() in to arch/sh/mm/mmap.c. ed2b03e MIPS: MIPS64R2: Fix buggy __arch_swab64 08d9d1c MIPS: Fix preprocessor warnings flaged by GCC 4.4 826e08b sched: fix warning in fs/proc/base.c d3d3170 tg3: Update version to 3.97 aa10f27 tg3: tg3.h cleanups 69fc405 tg3: Remove unused cfgspc device members 027455a tg3: Cleanup IPV6 LSO 2023276 tg3: WOL fixes 7f3ff4f pkt_sched: Annotate uninitialized var in sfq_enqueue() bfb8cc3 ixgbe: fix the display of DCB control stats in ethtool f4314e8 net: add DCNA attribute to the BCN interface for DCB 1486a61 net: fix DCB setstate to return success/failure c2da953 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 59f8500 Convert ixp4xx_eth driver to use net_device_ops. 4cb56b6 drivers/net/wan: Remove redundant test 93bc933 HDLC_PPP: Fix Configure-Ack to return original options as required by the standard. e6da96a IXP4xx: move common debugging from network drivers to QMGR module. 9251ce9 Update MAINTAINERS entries for IXP4xx and WAN network drivers. f5b89e4 WAN: Add IXP4xx HSS HDLC driver. 490b772 IXP4xx: Add ethtool support to Ethernet driver. 4954936 IXP4xx: Add PHYLIB MII ioctl to the Ethernet driver. 2098c18 IXP4xx: Add PHYLIB support to Ethernet driver. b4c7d3b IXP4xx: Make the Ethernet driver use built-in netdev stats. 3c36a83 IXP4xx: Silence section mismatch warning in Ethernet driver. ae2754a IXP4xx: clear IRQ stat in qmgr_disable_irq(). 3edcfb2 IXP4xx: check for queue being empty in qmgr_release_queue(). bba7ebb IB/iser: Avoid recv buffer exhaustion caused by unexpected PDUs 139cdab IB/ehca: Remove redundant test of vpage 418441d powerpc/mpc5200: fix error paths in PSC UART probe function aec739e powerpc/mpc5200: add rts/cts handling in PSC UART driver b651498 powerpc/mpc5200: Make PSC UART driver update serial errors counters e51f47a powerpc/mpc5200: Remove obsolete code from mpc5200 MDIO driver 6b61e69 powerpc/mpc5200: Add MDMA/UDMA support to MPC5200 ATA driver aaab5e8 powerpc/mpc5200: Disable bestcomm prefetching when ATA DMA enabled e4efe3c powerpc/mpc5200: Bestcomm fixes to ATA support 6228824 powerpc/mpc5200: Bugfix on handling variable sized buffer descriptors dd952cb powerpc/mpc5200: Make internal 5200 PIC the default interrupt controller bcb73f5 powerpc/mpc5200: Document and tidy irq driver a149535 powerpc: Fix missing 'blr' in _tlbia() 3ddeb91 ftrace: enable format arguments checking 49e6e3f powerpc/bootwrapper: Use the child-bus #address-cells to decide which range entry to use e14d774 powerpc: Const-qualify Device Node Argument to DCR Resource Extent API 9dce3ce powerpc/44x: 44x TLB doesn't need "Guarded" set for all pages 64b3d0e powerpc/mm: Rework usage of _PAGE_COHERENT/NO_CACHE/GUARDED 7752035 powerpc/mm: Runtime allocation of mmu context maps for nohash CPUs 760ec0e powerpc/44x: No need to mask MSR:CE, ME or DE in _tlbil_va on 440 2a4aca1 powerpc/mm: Split low level tlb invalidate for nohash processors f048aac powerpc/mm: Add SMP support to no-hash TLB handling 7c03d65 powerpc/mm: Introduce MMU features 2ca8cf7 powerpc/mm: Rework context management for CPUs with no hash table 5e69661 powerpc/mm: Split mmu_context handling 6d2170b powerpc/4xx: Extended DCR support v2 fecba96 powerpc: Add reboot notifier to Collaborative Memory Manager 2218108 powerpc: Disable Collaborative Memory Manager for kdump 5d84e4b powerpc/iseries: viodasd needs to depend on CONFIG_BLOCK 368c1e3 hvc_console: Escape magic sysrq key 532774e powerpc: Pass a valid token to rtas_call() in phyp-dump code 7a2eab0 powerpc: Protect against NULL pointer deref in phyp-dump code 8168b54 powerpc: Rename struct vm_region to avoid conflict with NOMMU 13ba3c0 powerpc: Convert sysfs cache code to of_find_next_cache_node() b2ea25b powerpc: Convert cpu_to_l2cache() to of_find_next_cache_node() e523f72 powerpc: Add of_find_next_cache_node() 7498209 of/gpio: Implement of_gpio_count() 7736a3d of: of_parse_phandles_with_args() learns to differentiate 'hole' cells c1bb7c6 of: Minor simplification for the of_parse_phandles_with_args() 74b7ff4 ALSA: hda: fix incorrect mixer index values for 92hd83xx f8ccbf6 ALSA: hda: dinput_mux check ebef7cf Merge branch 'topic/ca0106-spdif-stream' into topic/ca0106 6bcdbd5 Merge branch 'topic/ca0106-resume' into topic/ca0106 6a84364 Merge branch 'topic/ca0106-capture-no-44khz' into topic/ca0106 8326e32 Merge branch 'topic/hda-resume-fix' into topic/hda 55fa518 Merge branch 'topic/pcsp-fix' into topic/misc 69dfaef ALSA: hda - Add quirk for another HP dv7 a31501d ALSA: ASoC - Add missing __devexit annotation to wm8350.c d6f8339 ALSA: ASoc: DaVinci: davinci-evm use dsp_b mode 9e03162 ALSA: ASoC: DaVinci: i2s, evm, pass same value to codec and cpu_dai a24f4f6 ALSA: ASoC: tlv320aic3x add dsp_a 07d8d9d ALSA: ASoC: DaVinci: document I2S limitations 69ab820 ALSA: ASoC: DaVinci: davinci-i2s clean up 21903c1 ALSA: ASoC: DaVinci: davinci-i2s clean up 664b4af ALSA: ASoC: DaVinci: davinci-i2s add comments to explain polarity 1152a19 ALSA: ASoC: DaVinci: davinvi-evm, make requests explicit ff75427 ALSA: ca0106 - disable 44.1kHz capture 72077aa ALSA: ca0106 - Add missing card->private_data initialization 50232d6 ALSA: ca0106 - Check ac97 availability at PM c5dee61 x86, bts: memory accounting bf53de9 x86, bts: add fork and exit handling 67bac79 x86: PAT: pfnmap documentation update changes 34801ba x86: PAT: move track untrack pfnmap stubs to asm-generic 982d789 x86: PAT: remove follow_pfnmap_pte in favor of follow_phys d87fe66 x86: PAT: modify follow_phys to return phys_addr prot and return value 6bd9cd5 x86: PAT: clarify is_linear_pfn_mapping() interface 8403295 x86: ia32_signal: remove unnecessary declaration 34945ed x86: common.c boot_cpu_stack and boot_exception_stacks should be static 7419224 SELinux: don't check permissions for kernel mounts 12204e2 security: pass mount flags to security_sb_kern_mount() 459c19f SELinux: correctly detect proc filesystems of the form "proc/foo" 9bb4824 allow stripping of generated symbols under CONFIG_KALLSYMS_ALL ad7a953 kbuild: strip generated symbols from *.ko 37a8d9f kbuild: simplify use of genksyms 9cf7f24 b43: Add key memory dumping b929ecf b43: Suspend MAC while killing the radio fd6effc ath5k: correct packet length in tx descriptors 520eb82 mac80211: implement dynamic power save ce7c911 mac80211: track master queue status e0cb686 mac80211: enable IEEE80211_CONF_PS only when associated d10d0e5 b43: Fix some MAC locking 0e7690f iwlwifi: iwl-tx.c cleanup (remove unused parameter and unused local variable). be2864c ath9k: Fixed RX decryption status reporting ea61213 ath9k: Fix key cache slot selection for splitmic aa33de0 ath9k: Protect config() callback with a mutex 5e3f308 mac80211: Print unknown packet type in tasklet_handler 6110781 p54usb: bring first generation devices back to life 6ace289 ath9k: Key cache allocation for AP mode f66000f ath9k: Fix a NULL pointer dereference in ath_rate_get 91f39e8 iwlwifi: indicate txpower is off in sysfs f1bc4ac iwlwifi: use GFP_KERNEL to allocate Rx SKB memory 4087f6f iwlwifi: use meaningful vars in _iwl_poll_bit() febf337 iwlwifi: remove useless goto 95aa194 iwlwifi: use type uint for module param debug c3a739f iwlwifi: update comments on the debug interface 5c11ec6 iwlwifi: add line feed to printk 34c22cf iwlwifi: cleanup iwl-dev.h 1355412 mac80211: fix a typo in ieee80211_send_assoc() method. 73ec1cc iwlwifi: remove a parameter (dest) from *_fill_beacon_frame() methods. ca8a856 ath9k: Move rate control alg register/unregister to appropriate place 9bf9fca ath9k: Synchronize DMA transfer with CPU at right place f7a276a ath9k: Remove MAC header pad before reporting TX status da027ca ath9k: Fix TX status reporting for retries and MCS index 8d6f658 mac80211: Remove radiotap rate-present flag for HT d858822 rtl8187: Fix crash on unload when using SLUB debug 0a5ec96 p54: remove free_on_tx parameter 69ba3e5 p54: more accurate rssi to dBm conversion da9f57e rtl8187: Fix error returns 2382792 libertas: use roundup instead of opencoding ee370ce p54: update ACK failure statistic counter in real-time 54fdb04 p54: move statistic timer update routine into a workqueue d5e4903 iwlagn: fix agn rate scaling b8d476c mac80211: Send Layer 2 Update frame on reassociation 0fe45b1 ath5k: fix 802.11 header padding on RX, unpadding on TX baad1d9 ath9k: Report HT rates in RX status 0fb8ca4 mac80211: Add HT rates into RX status reporting 9d8eed1 ath9k: Do not use association state to update rate table 094d05d mac80211: Fix HT channel selection 420e7fa nl80211: Add signal strength and bandwith to nl80211station info a1d94aa kernel-doc: check for extra kernel-doc notations eb63212 ALSA: hda - Power up always when no jack detection is available 213cc06 ftrace: introduce tracing_reset_online_cpus() helper 9158923 ALSA: hda - Fix unused variable warnings in patch_sigmatel.c 6030634 Merge branch 'topic/hda-stac-fix' into topic/hda 7004305 Merge branch 'fix/asoc' into topic/asoc d4d9cd03 ALSA: hda - Add probe_only option 7662453 ALSA: hda - Use more distinct name for a unique volume in STAC/IDT c21ca4a ALSA: hda - Rework on STAC/IDT auto-configuration code 03c6901 Merge branch 'fix/hda' into topic/hda 8df0f70 ALSA: ca0106 - Fix typo in resume code 692f904 ALSA: hda - Fix HD-Audio.txt reference of model list 3d47582 ALSA: ca0106 - Add IEC958 PCM Stream controls 86effd7 ALSA: ca0106 - Don't override the values at resume abe1dfa ACPI: don't cond_resched() when irqs_disabled() e76f427 ACPI: fix 2.6.28 acpi.debug_level regression 4f2d23e ALSA: hda - Use snd_hda_ctl_add() in patch_sigmatel.c 827057f ALSA: hda - Add missing initializations of amp and verb caches 30cd324 Merge branches 'tracing/ftrace', 'tracing/ring-buffer' and 'tracing/urgent' into tracing/core 345077c x86: fix intel x86_64 llc_shared_map/cpu_llc_id anomolies cae5117 ALSA: split HD-audio model list to HD-Audio-Models.txt 335b986 Merge branch 'topic/hda-doc' into topic/hda 0ff5551 Merge branch 'fix/hda' into topic/hda c94cb31 net: prepare usb net drivers for addition of status as a parameter ab5024a net: ppp_generic - use DEFINE_IDR for static initialization a109a5b cxgb3: manage private iSCSI IP address 221b3d6 ucc_geth: Remove UGETH_FILTERING dead code 3e73fc9 ucc_geth: Fix IO memory (un)mapping code ba57469 ucc_geth: Cleanup repetitive ucc_geth_memclean() calls 67c2fb8 ucc_geth: Fix IRQ freeing code in ucc_geth_open() 1762a29 ucc_geth: Fix TX watchdog timeout handling b3431c6 ucc_geth: Fix endless loop in stop_{tx,rx} routines 6086ebc tcp: Stop scaring users with "treason uncloaked!" e98def1 NIU: Implement discard counters, optimize d231776 NIU: Implement discard counters, info/debug statements. b8a606b NIU: Implement discard counters 5664dd5 enc28j60: reduce the number of spi transfers in enc28j60_set_bank() b88a2a2 netdevice zd1201: Use after free 3de77cf Revert "xfrm: Accept ESP packets regardless of UDP encapsulation mode" 739840d ppp: fix segfaults introduced by netdev_priv changes 1b08534 net: Fix module refcount leak in kernel_accept() f34a10b x86: fix warning in arch/x86/kernel/microcode_amd.c c71dd42 tracing: fix warnings in kernel/trace/trace_sched_switch.c 3bddb9a tracing: fix warning in kernel/trace/trace.c 9f22149 x86: ia32.h: remove unused struct sigfram32 and rt_sigframe32 8869a2e x86: asm-offset_64: use rt_sigframe_ia32 b2fa739 x86: sigframe.h: include headers for dependency d1769d5 x86: traps.c declare functions before they get used a2ced6e x86: PAT: update documentation to cover pgprot and remap_pfn related changes - v3 2520bd3 x86: PAT: add pgprot_writecombine() interface for drivers - v3 8a7b12f x86: PAT: change pgprot_noncached to uc_minus instead of strong uc - v3 5899329 x86: PAT: implement track/untrack of pfnmap regions for x86 - v3 2ab6403 x86: PAT: hooks in generic vm code to help archs to track pfnmap regions - v3 e121e41 x86: PAT: add follow_pfnmp_pte routine to help tracking pfnmap pages - v3 3c8bb73 x86: PAT: store vm_pgoff for all linear_over_vma_region mappings - v3 f0bc220 x86: process.c declare c1e_remove_cpu before they get used 5c2628e x86: sigframe.h: add guard macro f269b07 x86: revert CONFIG_RELOCATABLE=y defconfig change 179efcb kbuild: add headerdep used to detect inclusion cycles in header files 40aa4a3 ASoC: Add WM8350 AudioPlus codec driver b8b33cb ASoC: Complain if we fail to create DAPM controls 0b34a3d ASoC: Ease merge difficulties from new architectures 9c2c480 schedstat: consolidate per-task cpu runtime stats 6d102bc tracing/ring-buffer: remove unused ring_buffer size 7c9c160 x86: tls.c declare sys_set_thread_area and sys_get_thread_area before they get used 57a3750 x86: time_64.c timer_interrupt() should be static 3d9101e trace: fix task state printout ea3a6d6 ftrace: add not to regex on filtering functions e05a43b trace: better use of stack_trace_enabled for boot up code f38f1d2 trace: add a way to enable or disable the stack tracer 4087449 Merge branches 'tracing/ftrace' and 'tracing/hw-branch-tracing' into tracing/core 1f04128 ALSA: hda - Convert from takslet_hi_schedule() to tasklet_schedule() d98f9d8 x86: ia32_signal: use sigframe.h 3b0d29e x86: ia32_signal: rename struct sigframe and rt_sigframe c85c2ff x86: signal: prepare to include from ia32_signal.c 41af86f x86: signal: move sigframe.h to arch/x86/include/asm a5c56eb x86: signal: rename sigframe and rt_sigframe on 32-bit f522376 x86: signal: move ia32 func declarations into arch/x86/kernel/signal.c 3218c17 ALSA: hda - Remove duplicated strings from codec name 74c6113 ALSA: hda - Add Intel vendor id string 49ad959 Revert "net: release skb->dst in sock_queue_rcv_skb()" 3b5b35d bonding: use port_params in __update_lacpdu_from_port 3c52065 bonding: use port_params in __update_default_selected() ce6a49a bonding: use port_params in __update_selected() a6ae186 bonding: remove various function declarations c7e703d bonding: init port_params from template 5eefd1a bonding: use plain memcpy in __record_default() b99d6ba bonding: use port_params in __record_pdu() 1055c9a bonding: introduce and use port_params structure aa31281 bonding: improve elaborate port_state assignment 4219988 gianfar: Continue polling until both tx and rx are empty 8c7396a gianfar: Merge Tx and Rx interrupt for scheduling clean up ring c50a5d9 gianfar: Use interface name in interrupt name to distinguish the source. 4669bc9 gianfar: Add Scatter Gather support 8882d9a gianfar: Fix packet drop when out of memory a693722 dccp_diag: LISTEN sockets don't have CCIDs c280266 Merge branch 'linux-2.6' into next 9732d52 Phonet: USB CDC Phonet function for gadget framework 893873f Phonet: get rid of deferred work on the transmission path be67773 Phonet: use atomic for packet TX window 57c81ff Phonet: allocate separate ARP type for GPRS over a Phonet pipe 2d91d78 Phonet: allocate a non-Ethernet ARP type fc10af8 vcan: whitespace fixes a67534a V4L/DVB (9908a): MAINTAINERS: mark linux-uvc-devel as subscribers only 7a95d26 net: ppp_generic - use idr technique instead of cardmaps c0700f9 bnx2x: Fix namespace collision with FLOW_CTRL_{TX,RX} f6d5243 bnx2: Don't redefine FLOW_CTRL_{RX,TX}. 1f2435e bnx2: Update version to 1.9.0. 4e1d0de bnx2: Rename MSI-X vectors. eddce36 Merge branch 'next' of master.kernel.org:/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx into next f40e063 drivers/net/hamradio: Move a dereference below a NULL test f162e97 phylib: Remove unnecessary "reset" fixups in genphy_setup_forced 5a5efed gianfar: Make all BD status writes 32-bit 31de198 gianfar: Add macros for stepping through BDs a22823e gianfar: Remove unused gfar_add_fcb() function parameter 2c2db48 gianfar: Enable padding and Optimize the frame prepended bytes handling 77ecaf2 gianfar: Fix VLAN HW feature related frame/buffer size calculation. 12dea57 gianfar: Fix eTSEC configuration procedure b46a845 gianfar: Optimize interrupt coalescing configuration b31a1d8 gianfar: Convert gianfar to an of_platform_driver d680fe4 x86: entry_64 - introduce FTRACE_ frame macro v2 66896a8 tracing/ftrace: add the printk-msg-only option 2c2d732 tracing/ftrace: use preempt_enable_no_resched_notrace in ring_buffer_time_stamp() 257d938 gianfar: Use gfar_halt to stop DMA in gfar_probe 5eeabf5 tlan: Remove broken support for big buffers 354ade9 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 8bee3f0 x86: ia32_signal: use proper macro __USER32_DS d0b48ca x86: ia32_signal: use __put_user() instead of __copy_to_user() ae417bb x86: signal: use signal_fault() in sys_sigreturn() c8182f0 sgi-xp: xpc needs to pass the physical address, not virtual 189f67c x86: UV fix for global physical addresses c15cb37 Merge commit 'v2.6.28-rc8' into x86/uv fde9071 x86: clean up dead code in vmi_32.c 8ae9366 x86: hardirq: use inc_irq_stat() in non-unified functions e1286f2 x86: documentation fix regarding boot protocol 78f902c Merge commit 'v2.6.28-rc8' into x86/doc ecbf29c xen: clean up asm/xen/hypervisor.h 80f40ee sched: use RCU variant of list traversal in for_each_leaf_rt_rq() a9b43c7 x86: setup.c find_and_reserve_crashkernel should be static c0195b6 x86: ldt.c declare sys_modify_ldt before they get used 7b5b50f x86: signal.c declare do_notify_resume before they get used aab02f0 x86: process_64.c declare __switch_to() and sys_arch_prctl before they get used f63c2f2 xen: whitespace/checkpatch cleanup 40fb171 x86: support always running TSC on Intel CPUs 7e91a12 Merge branch 'x86/cpufeature' into x86/tsc d437797 x86: support always running TSC on Intel CPUs, add cpufeature definition dd7a523 Merge commit 'v2.6.28-rc8' into x86/cpufeature df23cab x86: microcode_amd: modify log messages 5549b94 x86: microcode_amd: use 'packed' attribute for structs 9841530 x86: microcode_amd: remove (wrong) chipset deivce ID checks 6cc9b6d x86: microcode_amd: consolidate macro definitions 29d0887 x86: microcode_amd: replace inline asm by common rdmsr/wrmsr functions 0657d9e x86: microcode_amd: don't pass superfluous function pointer for get_ucode_data 8c13520 x86: microcode_amd: fix compile warning be95776 x86: microcode_amd: fix checkpatch warnings/errors 2a3282a x86: microcode_amd: fix typos and trailing whitespaces in log messages 3c763fd x86: microcode_amd: fix wrong handling of equivalent CPU id 3ca81a5 V4L/DVB (9906): v4l2-compat: test for unlocked_ioctl as well. 8b21c1e V4L/DVB (9885): drivers/media Kconfig's: fix bugzilla #12204 f86d4a9 V4L/DVB (9875): gspca - main: Fix vidioc_s_jpegcomp locking. 11c6c7f V4L/DVB (9781): [PATCH] Cablestar 2 I2C retries (fix CableStar2 support) 4b330be V4L/DVB (9780): dib0700: Stop repeating after user stops pushing button b6fd6f2 x86, mm: limit MAXMEM on 64-bit cfc3198 x86, 32-bit: improve lazy TLB handling code beeb419 x86, 32-bit: add some compile time checks to mem_init() d6be89a x86, 32-bit: simplify alloc_low_page() b93a531 allow bug table entries to use relative pointers (and use it on x86-64) 1796316 x86: consolidate __swp_XXX() macros d072c25 x86, bts: correctly report invalid bts records cc1dc6d x86, bts: remove recursion from get_context bb1f24b ALSA: ca0106 MSI K8N Diamond MB spi_dac 2->1 f649a71 ALSA: ca0106 Add comments to snd_ca0106_details struct 31117b7 ALSA: hda - Add Nvidia vendor id string e9515c3 sched, cpuacct: export percpu cpuacct cgroup stats 720f549 sched, cpuacct: refactoring cpuusage_read / cpuusage_write 9dfc3bc Merge branches 'tracing/fastboot', 'tracing/ftrace', 'tracing/function-graph-tracer' and 'tracing/hw-branch-tracing' into tracing/core 9f690db ipv6: fix the outgoing interface selection order in udpv6_sendmsg() f250dcd ipv6: fix the return interface index when get it while no message is received b24a251 ipv6: Add IPV6_PKTINFO sticky option support to setsockopt() bc02ff9 net: Refactor full duplex flow control resolution e18ce34 net: Move flow control definitions to mii.h f986732 simeth: convert to net_device_ops 8207bef cxgb3: untie strict FW matching 5ad258c vcan: convert to net_device_ops ffcebb1 l2tp: fix UDP checksum support 09a2c3c Phonet: improve GPRS variable names 4ee59d5 isdn: eicon: fix sparse warning: make global functions static 205516c x86: convert rdtscll() to use __native_read_tsc b187920 ipmr: merge common code c40cf51 hp100: use roundup instead of open coding 82ad332 cxgb3: Add multiple Tx queue support. 34f28ec sched: optimize update_curr() 03e89e4 sched: fix wakeup preemption clock 89c88b1 e1000e: Add GRO support b240a0e ethtool: Add GGRO and SGRO ops bf296b1 tcp: Add GRO support 71d93b3 net: Add skb_gro_receive 73cc19f ipv4: Add GRO infrastructure d565b0a net: Add Generic Receive Offload infrastructure 1a881f2 net: Add frag_list support to GSO 89319d3 net: Add frag_list support to skb_segment b53c758 rapidio: struct device - replace bus_id with dev_name(), dev_set_name() aab0d37 powerpc: struct device - replace bus_id with dev_name(), dev_set_name() f63837f powerpc/mm: Remove flush_HPTE() e41e811 powerpc/mm: Rename tlb_32.c and tlb_64.c to tlb_hash32.c and tlb_hash64.c 1a37a3f powerpc/mm: Add local_flush_tlb_mm() to SW loaded TLB implementations a58f053 powerpc: Fix asm EMIT_BUG_ENTRY with !CONFIG_BUG 3045b3c powerpc: Remove dead BIO_VMERGE_BOUNDARY definition 7fe519c powerpc: Introduce ppc_pci_flags accessors edc72ac powerpc/pseries: Check for GIQ indicator before calling set-indicator 6ff04c5 powerpc/powermac: Use set_hard_smp_processor_id() instead of smp_hw_index 13a9801 powerpc: Move smp_hw_index to 32-bit code 6b82b3e powerpc: Remove `have_of' global variable eb14f01 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 0efbb57 powerpc: Fix !CONFIG_PPC_NEED_DMA_SYNC_OPS build warning 46d0149 powerpc/ps3: Add sub-match id modalias support 62d8074 powerpc/ps3: Quiet dmesg output 15cb1cc powerpc: Fix typo in pgtable-ppc64.h 29e931c powerpc/chrp: Add missing of_node_put in pci.c 1e1c568 Merge branch 'merge' into next 9a4a842 8390/8390p: Fix compat netdev ops handling. 91cac62 powerpc/85xx: Fix compile issues with mpc8572ds.dts 8309ce7 powerpc: Fix bogus cache flushing on all 40x and BookE processors v2 3d1ee37 ALSA: Fix declaration of sound_class 8b124a8 net: fix dcbnl_setnumtcs operation check 5ecc361 ixgbe: fix dma mapping unbalance a7276db smsc9420: add ethtool register dump support b1721d2 rpc/rdma: goto instead of copypaste 79f55f1 nf/dccp: merge errorpaths e780f1c irda: merge exit paths 037322a bt/rfcomm/tty: join error paths 0eae1b9 ax25: join the return paths that free skb ebad5c0 can: merge error paths d8eb930 xfrm: join error paths 8da73b7 ip6mr: use goto to common label instead of opencoding 448eb71 ipv6/mcast: join error paths using goto 5ce1bbb xfrm6_tunnel: join error paths using goto 857a6e0 icsk: join error paths using goto 9cd28ab ASoC: switch davinci DPRINTK to pr_debug() a6ba0cb kbuild: fix string equality testing in tags.sh 709cc37 kbuild: fix make tags/cscope 31110eb kbuild: fix make incompatibility 012b215 smsc9420: add ethtool eeprom support e312674 smsc9420: add netpoll support 1757ab2 smsc911x: make smsc911x_poll_controller static 56bde88 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 a7a81fc sfc: Version 2.3 7dde596 sfc: Fix synchronisation of efx_mtd_{probe,rename,remove} 0c53d8c sfc: Use kzalloc() to ensure struct efx_spi_device is fully initialised fa402b2 sfc: Treat probe as unsuccessful if it scheduled a reset ab37735 sfc: Use model numbers for PHY type names ca54a9f sfc: Use mutex_lock_interruptible() for ethtool EEPROM access 11e6696 sfc: Specify a meaningful component for loopback RX-side and PHY tests b453193 sfc: Remove leading spaces 6f158d5 sfc: Add support for SFN4111T e6fa2eb sfc: Add support for Solarflare 10Xpress SFT9001 766ca0f sfc: Rework MAC, PHY and board event handling 04cc8ca sfc: Implement auto-negotiation 177dfcd sfc: Add support for sub-10G speeds 356eebb sfc: Clean up MDIO flag setting 04300d2 sfc: Clean up board identification 06d5e19 sfc: Add phy_type device attribute 27dd2ca sfc: Add support for MMDs numbered >15 f31a45d sfc: Remove MII extension cruft 5005087 sfc: Don't count RX checksum errors during loopback self-test 740ced9 sfc: Abbreviate self-test names so they are not truncated 56536e9 sfc: Provide hints to irqbalance daemon 28b581a sfc: Add option to use a separate channel for TX completions 84ae48f sfc: Restore phy_flash_cfg module parameter 2f7f573 sfc: Work around unreliable strap pins be4ea89 sfc: Clean up waits for flash/EEPROM operations 1ab0062 sfc: Make reset_workqueue driver-global rather than per-NIC 65f667f sfc: Correct interpretation of second param to ethtool phys_id() 2b2734d sfc: Remove unneeded register write 23d30f0 sfc: Change SPI lengths to type size_t a17102b sfc: Board support fixes 702c790 misdn: Fix lockdep warning c31655f mISDN: hfcmulti: use __iomem address space modifier c46f0a2 mISDN: timerdev: use __user for mISDN_read's buffer argument 047ce8f mISDN: comment out unused symbols 863a76e mISDN: fix sparse warning: symbol 'id' shadows an earlier one bb68b1d mISDN: fix sparse warning: symbol 'nskb' shadows an earlier one 65a4051 mISDN: un-export symbol 'plx_lock' 5b83435 mISDN: make global symbols static or include header files dfa96ec mISDN: consistently define 'debug' as '*u_int' bcf9174 mISDN: use NULL pointer instead of plain integer a7b7520 iwlwifi: add contact email to MODULE_AUTHOR 2aa6ab8 iwlwifi: remove 4965 from common uCode API structures b5047f7 iwlwifi: remove includes of iwl-helpers.h where not needed 29d51d9 iwlwifi: remove unused clip_groups priv member edb3422 iwlwifi: fix resume while txpower off 3d5717a iwlwifi: use iwl_poll_direct_bit in EEPROM reading 9c5f89b ath9k: Do not remove header padding on RX from short frames f2f1ba2 iwlwifi: fix build warning (iwl-rx.c) ab1f5c0 mac80211: misc cleanups 4dec9b8 rfkill: strip pointless notifier chain 6fb5325 libertas: Create sysfs entry for changing the mesh probe response limit b77f483 ath9k: Refactor struct ath_softc 59651e8 p54: fix oops on faulty devices b7a530d mac80211: Disable requests for new scans in AP mode 14a4dfe ipw2200: fix scanning while associated d8004cb b43legacy: Fix sparse warnings c1db52b rtl8187: Use usb anchor facilities to manage urbs 388cdf3 ath5k: fix endianness of bitwise ops when installing mic 62d714e spectrum_cs: Fix function names used in debug strings 499b702 orinoco: Fix inappropriate use of IRQ_BAP 0c06dd8 orinoco: Fix function names used in debug strings 39ca5bb p54: enforce strict tx_queue limits 30dab79e iwlwifi: remove qos module parameter 6d1ef1a iwlwifi: 3945 remove qos module parameter 9f92593 iwlifi: remove twice defined SINGLE_FRAME RX FH MASK 759ef89 iwlwifi: change email contact information d070d85 airport: remove useless return in a function returning void 89fad57 mac80211: integrate sta_notify_ps cmds into sta_notify dd397dc p54usb: rewriting rx/tx routines to make use of usb_anchor's facilities a07d361 ath9k: BH shouldn't be enabled when hardirqs are disabled. b143923 mac80211/cfg80211: check endianness in sparse runs f546638c mac80211: remove fragmentation offload functionality e4f2a34 ath9k: remove fragmentation workaround again 21a49fc iwlwifi: fix build error (iwl-rx.c). 8dffff2 mac80211: only create default STA interface if supported 0f202aa ieee80211_security: correct warning about width of auth_mode 8aa15e1 ath9k: avoid rx frames with corrupted descriptor. 2df1bff ath9k: Incorrect band enum causes invalid antenna configuration. e759407 ath9k: Adding support for Atheros AR9285 chipset. e8fbc99 ath9k: Adding initvalues for Atheros AR9285 chipset. 02e90d6 ath9k: Adding AR9285 chipset register information. 306d611 cfg80211: fix nl80211 frequency handling 7ba1c04 mac80211: improve sta_notify documentation 8ee5afb ath9k: Merge structures ath_atx, ath_node_aggr with ath_node f6688cd ath9k: Remove remaining occurrences of CONFIG_SLOW_ANT_DIV 817e11d ath9k: Add a debugfs file to show interrupt statistics 3706de6 ath9k: Maintain rate table choice after association 40990ec ath9k: Fix bug in rate table management 6b3aa6a ath9k: Disable staggered Beacon frame scheduling 3fbb9d9 ath9k: Free Beacon skbs in AP mode 61ff84a iwlwifi: cleanup (remove pm_state) a8ec42c iwlwifi: use rmb/wmb to protect indirect mmio operation 73d7b5a iwlwifi: iwl_poll_{direct_}bit cleanup 42802d7 iwlwifi: fix "MAC in deep sleep" error f056658 iwlwifi: fix time interval misuse in iwl_poll_{direct_}bit 7262796 iwl3945: Fix rate scale for B-mode connection 00e540b iwlwifi: implement iwl_debug_report_frame for iwlagn 447107f mac80211: remove WARN_ON() from ieee80211_hw_config bb608e9 wireless: Incorrect LEAP authentication algorithm identifier. a7db74f rtl8187: Improve wireless statistics for RTL8187 fd28a5b x86: remove simnow earlyprintk support 9470565 x86: remove init_mm export as planned for 2.6.26 d65bd5e sched: add missing arch_update_cpu_topology() call ee79d1b sched: let arch_update_cpu_topology indicate if topology changed 2bed844 tracing/function-graph-tracer: add a new .irqentry.text section, fix cbc34ed sched: fix tracepoints in scheduler 915b0d0 x86: hardirq: introduce inc_irq_stat() fd10902 Merge commit 'v2.6.28-rc8' into x86/irq 8f2466f x86: kill #ifdef for exit_idle() 16855f8 x86: uaccess: return value of __{get|put}_user() can be int e18d7af Merge commit 'v2.6.28-rc8' into x86/mm f8b755a tracing/function-graph-tracer: Output arrows signal on hardirq call/return bcbc4f2 tracing/function-graph-tracer: annotate do_IRQ and smp_apic_timer_interrupt a0343e8 tracing/function-graph-tracer: add a new .irqentry.text section 85072bd x86, debug: remove EBDA debug printk c1dfdc7 Merge commit 'v2.6.28-rc8' into sched/core da485e0 tracing/fastboot: include missing headers 8001530 tracing/fastboot: fix len of func buffer 8808500 x86: soften multi-BAR mapping sanity check warning message ffc2238 x86, bts: fix build error a93751c x86, bts, ftrace: adapt the hw-branch-tracer to the ds.c interface c272477 x86, bts: provide in-kernel branch-trace interface b0884e2 x86, bts: turn BUG_ON into WARN_ON_ONCE f3134de Merge branches 'tracing/function-graph-tracer' and 'tracing/ring-buffer' into tracing/core 7a3c66e net: Add support for the KS8695 ethernet devices. 82a9928 tc35815: Enable StripCRC feature 2cb3772 smsc9420: SMSC LAN9420 10/100 PCI ethernet adapter ea943d4 igb: fixup AER with proper error handling 49d92c7 ASoC: TWL4030: hands-free start-up sequence. 4544f8a ASoC: Fix variable name for Blackfin I2S DAI cd85400 powerpc/4xx: Add L2 cache node to AMCC Canyonlands dts file 132bb7c ALSA: hda - Add development tree URLs in HD-audio.txt f8bbd06 ALSA: hda - Fix another typo in HD-Audio.txt 42a73df ALSA: sb8 - Fix a return code in the error path 5c0b9be ALSA: hda - Fix a compile warning when CONFIG_PM=n 6de45d5 ALSA: ASoC - Fix DAI registration in s3c2443-ac97.c 623b9f6 ALSA: hda - Update HD-Audio.txt 293a4f2 netfilter: xt_NFLOG is dependant of nfnetlink_log 8229efd netns: ip6mr: enable namespace support in ipv6 multicast forwarding code 8b90fc7 netns: ip6mr: declare ip6mr /proc/net entries per-namespace 950d570 netns: ip6mr: declare reg_vif_num per-namespace a21f3f9 netns: ip6mr: declare mroute_do_assert and mroute_do_pim per-namespace 4045e57 netns: ip6mr: declare counter cache_resolve_queue_len per-namespace 4a6258a netns: ip6mr: dynamically allocate mfc6_cache_array 58701ad netns: ip6mr: store netns in struct mfc6_cache 4e16880 netns: ip6mr: dynamically allocates vif6_table bd91b8b netns: ip6mr: allocate mroute6_socket per-namespace. 5eaa65b net: Make static 2107fb8 smsc911x: add dynamic bus configuration 3b1228a ASoC: Stop WM8903 SYSCLK when suspending d58d5d5 ASoC: Convert WM8903 driver to register at I2C probe time 78e19a3 ASoC: Convert WM8900 to do more work at I2C probe time f144b7f ALSA: cs5535 - Make OLPC-stuff depending on MGEODE_LX 0fb497f ALSA: cs5535audio: ensure MIC Bias/Analog Input bail if not on an OLPC machine b5ccc57 ALSA: cs5535audio: clean up OLPC code c8f0eee ALSA: cs5535audio: turn off mic bias on OLPCs by default 01da024 ALSA: cs5535audio: for OLPC, default to Analog Input being off bf1e527 ALSA: cs5535audio: rename V_REFOUT control to MIC Bias e463ae1 ALSA: cs5535audio: enable OLPC's V_REFOUT bias when recording 189d34e ALSA: cs5535audio: check OLPC's Analog Input status vis GPIO 466ae3055 ALSA: cs5535audio: rename OLPC's analog input control && drop AD1888's HPF d6276b7 ALSA: cs5535audio: create function for setting OLPC's Analog Input mode 1e2232b ALSA: cs5535audio: decouple HPF from V_REFOUT in OLPC code b91254e ALSA: cs5535audio: drop ec_analog_input flag for OLPC stuff 3556d18 ALSA: cs5535audio: invert EAPD for OLPC (newer than B3) c8974be ALSA: cs5535audio: Use OLPC/Geode basic infrastructure 57d4bf6 ALSA: cs5535audio: OLPC analog input support b6c52a2 ALSA: cs5535audio: suspend/resume callbacks are only defined with CONFIG_PM b035ce0 ALSA: cs5535audio: turn off PCM properly if closing the audio device 0bed7b2 ALSA: cs5535audio: stick AD1888 bitshift values into a header file 0d0cf00 ASoC: Add codec registration API cdc6936 ALSA: Add support for mechanical jack insertion 1e5fa31 ASoC: TWL4030: Change the name for the DACs d4a7313 ASoC: TWL4030: Small cleanup 6a1bee4 ASoC: TWL4030: Add missing Carkit output 1e297a1 ASoC: Work around warnings from some build environments 11d518e ALSA: hda - Add quirk for HP6730B laptop 6fabd71 ixgbe: Implement PCIe AER support 5e8427e igb: Correctly determine pci-e function number in virtual environment b4557be igb: update handling of RCTL for smaller buffer sizes d2afbe7 ALSA: hda - Update documentation 44411e0 ALSA: ca0106 - Check return value of pci_enable_device() in resume e97fd7c bonding: turn all bond_parm_tbls const 325dcf7 bonding: make tbl argument to bond_parse_parm() const d787552 bonding: remove duplicate declarations 5a03cdb bonding: use pr_debug instead of own macros ef65583 bonding: fix compile error if debug enabled 77afc92 bonding: use table for mode names 5840205 bonding: add and use bond_is_lb() f73f2a6 ALSA: ASoC - Fix symbol conflicts in omac-mcbsp.c acc4216 ALSA: sound: Make static c9b3a40 ALSA: ASoC - Fix wrong section types 24e07db ALSA: ASoC - Fix module init entry for twl4030.c 512bb43 pkt_sched: sch_htb: Optimize WARN_ONs in htb_dequeue_tree() etc. 1b5c007 pkt_sched: sch_htb: Optimize htb_find_next_upper() dbb7a95 phy: Add LSI ET1011C PHY driver 471716f ASoC: Fix typos in Atmel module registration f075233 ASoC: Convert WM8900 to allow registration by machine code 6b05eda ASoC: Wait for non-AC97 codec DAIs before instantiating 435c5e2 ASoC: Initial framework for dynamic card instantiation 64089b8 ASoC: Register non-AC97 codec DAIs 958e792 ASoC: Register platform drivers 12a48a8 ASoC: Add platform registration API 3f4b783 ASoC: Register platform DAIs 9115171 ASoC: Add DAI registration API c5af3a2 ASoC: Add card registration API ca4513f ASoC: TWL4030: Do not alter the Headset output volume on power-up/down df33980 ASoC: TWL4030: DAPM mapping of the Handsfree outputs 5152d8c ASoC: TWL4030: DAPM mapping of the Carkit outputs dfad21a ASoC: TWL4030: DAPM mapping of the Headset outputs 2a6f5c5 ASoC: TWL4030: DAPM mapping of the PreDriv outputs 5e98a46 ASoC: TWL4030: DAPM mapping of the Earpiece output e8ff9c4 ASoC: TWL4030: Add DAPM event handler for output MUX selection 44c5587 ASoC: TWL4030: Add Analog PGA control switch to DAPM 53b5047 ASoC: TWL4030: Correct DAPM_DAC with power control 1e64174 Audit: Log TIOCSTI e19caae bluetooth: Fix unused var warning properly in rfcomm_sock_ioctl(). bcb09dc myri10ge: check fragmentation in LRO get_frag_header() 6cf1a0f bluetooth: Fix rfcomm_sock_ioctl() build failure with debugging enabled. e421300 hydra: fix compilation 30bc448 ALSA: Updates about bug-reporting in ALSA-Configuration.txt 94d6a5f user namespaces: document CFS behavior e726f5f tracing/function-graph-tracer: fix 'flags' variable mismatch efbe027 sched: idle_balance() does not call load_balance_newidle() 4217458 x86: signal: change type of paramter for sys_rt_sigreturn() 380c4b1 tracing/function-graph-tracer: append the tracing_graph_flag 8e1b82e tracing/function-graph-tracer: turn tracing_selftest_running into an int 8b96f01 tracing/function-graph-tracer: introduce __notrace_funcgraph to filter special functions 69b88af x86: clean up get_smp_config() aa9c9b8 Merge branch 'linus' into x86/quirks 361b73d ring_buffer: fix comments 5436499 sched: fix sd_parent_degenerate on non-numa smp machine 4d117c5 Merge branch 'sched/urgent' into sched/core 3e1e900 x86: change static allocation of trampoline area decbec3 tracing/function-graph-tracer: implement a print_headers function 5e03c54 ALSA: hrtimer - Use hard-irq callback 647808a ALSA: timer - Add comments and use ns_to_ktime() 6fdd34d dccp ccid-2: Phase out the use of boolean Ack Vector sysctl 4098dce dccp: Remove manual influence on NDP Count feature 0049bab dccp: Remove obsolete parts of the old CCID interface 63b8e28 dccp: Clean up old feature-negotiation infrastructure 991d927 dccp: Integration of dynamic feature activation - part 3 (client side) 192b27f dccp: Integration of dynamic feature activation - part 2 (server side) 6eb55d1 dccp: Integration of dynamic feature activation - part 1 (socket setup) b74ca3a netdevice: Kill netdev->priv 5a001a0 staging-winbond: Kill directly reference of netdev->priv 7657d90 user namespaces: require cap_set{ug}id for CLONE_NEWUSER c37bbb0 user namespaces: let user_ns be cloned with fairsched 32e176c Sound: hda - Restore PCI configuration space with interrupts off 4bcd426 staging-slicoss: Kill directly reference of netdev->priv 979123d staging-p80211: Kill directly reference of netdev->priv ad660e2 s390_net: Kill directly reference of netdev->priv 26aca5e net: Fix incorrect use of loose in spider_net.c 6c5cc8e wireless: Fix incorrect use of loose in wext.c a2acde0 tcp: fix tso_should_defer in 64bit d5dd917 tcp: use tcp_write_xmit also in tcp_push_one 730c30e Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 726e07a tcp: move some parts from tcp_write_xmit 41834b7 tcp: share code through function, not through copy-paste. :-) ee6aac5 tcp: drop tcp_bound_rto, merge content of it tcp_set_rto 5013316 tcp: no need to pass prev skb around, reduces arg pressure a1197f5 tcp: introduce struct tcp_sacktag_state to reduce arg pressure 775ffab tcp: make mtu probe failure to not break gso'ed skbs unnecessarily 9969ca5 tcp: Fix thinko making the not-shiftable to cover S|R as well f0bc52f tcp: force mss equality with the next skb too. 61c1d05 dccp: use roundup instead of opencoding d2b8881 tty: driverdata and discdata are void * 8a1ec21 tty: Flags should be accessed via the foo_bit interfaces 098401a Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 cb7b48f igb/e1000e: Naming interrupt vectors 1c72194 IB/ehca: Replace modulus operations in flush error completion path 3d08909 IB/ipath: Add locking for interrupt use of ipath_pd contexts vs free 1bf7724 IB/ipath: Fix spi_pioindex value 6114d4c IB/ipath: Only do 1X workaround on rev1 chips 60e8450 IB/ipath: Don't count IB symbol and link errors unless link is UP 890fccb IB/ipath: Check return value of dma_map_single() fab01fc IB/ipath: Fix PSN of send WQEs after an RDMA read resend 6098d10 RDMA/nes: Cleanup warnings 1ee8655 RDMA/nes: Add loopback check to make_cm_node() f3181a1 RDMA/nes: Check cqp_avail_reqs is empty after locking the list abb7725 RDMA/nes: Fix TCP compliance test failures 4a14f6a RDMA/nes: Forward packets for a new connection with stale APBVT entry 183ecfa RDMA/nes: Avoid race between MPA request and reset event to rdma_cm 879e5bd RDMA/nes: Lock down connected_nodes list while processing it c5d321e RDMA/nes: Cleanup cqp_request list usage abf681c kbuild: remove TAR_IGNORE 28a1d86 ASoC: tlv320aic3x: control additions and cleanups 68fb740 ASoC: Add support for OMAP3 Pandora c112d0c ath9k: Use GFP_ATOMIC when allocating TX private area f8316df ath9k: Check for pci_map_single() errors 73a5267 rt2x00: Correctly initialize AID during set_key() 9c3444d rt2x00: Move crypto TX descriptor handling to rt2x00crypto.c 1c02667 rt2x00: Fix check for BSS info changes 4c7f0bc generic swap(): ath9k: rename swap() to swap_array() 74415ed rt2x00: Add RXDONE_CRYPTO_IV/ICV flags 011a033 iwl3945 : Fix a-band association for passive channels a0987a8 iwlwifi: rely on API version read from firmware c02b3ac iwlwifi: store ucode version number f3f911d iwlwifi: fix DMA channel number in iwl_txq_ctx_stop 74221d0 iwl3945: Fix iwl3945 rate scaling. c30e30e iwl3945: add debugfs support d366df5 iwlwifi: move channels sysfs to debugfs 0ad91a3 iwlwifi: move disable/enable interrupts to iwl-core.c c93007e iwl3945: Select correct sta ID from find_station() 99df630 iwlwifi: fix printk size format error 8f5c87d iwlwifi: move host command check function into separate file 304a698 rt2x00: Release rt2x00 2.2.3 dddfb47 rt2x00: Implement HW encryption (rt2500usb) 0b927a0 rt2x00: Remove duplicate code 42c8285 rt2x00: Store retry limit values 1ce9cda rt2x00: Optimize IV/EIV handling aac9207 ath9k: Choose correct ANI calibration period 7470d7f iwlwifi: 5150 enable LO, TXIQ and BB calibrations fd63edb iwlwifi: 5150 parametrize eeprom versions 339afc8 iwlwifi: 5150 compute ct kill threshold 819500c iwlwifi: 5150 enable DC calibration 7100e92 iwlwifi: 5150 add support for 5150 d97809d ath9k: Replace ath9k_opmode with nl80211_iftype 33fd819 iwlwifi: disable AP mode c912765 p54: fix lm87 checksum endianness 0f70f39 cfg80211: "fix" 11d oops c58f9f6 iwl3945: remove obsolete irq handling 8e7be8d mac80211: tx module cleanup. 4a4f4d8 cfg80211: fix wiphy remove if no regulatory request 8bef7a1 mac80211: document ieee80211_tx_info.pad 02e37ba p54: per-device names b2023dd p54: refactoring 64c354d p54: include support for 2.13.24.0 USB LM87 Firmwares 25900ef p54: utilize cryptographic accelerator c772a08 p54: revamp station power save management in access point mode 4571d3b mac80211: add sta_notify_ps callback 2a163c6 ath9k: Add a debugfs file for dumping DMA status 826d268 ath9k: Add initial layout for an ath9k specific debugfs mechanism 16d68ab ath9k: Remove includes that are not needed 88b126a ath9k: Add ATH9K_DEBUG configuration option 04bd463 ath9k: Use cleaner debug masks d9a1f48 rtl8187: fix retry count passed in rtl8187_tx 007e5dd wireless: clean up radiotap a bit e11602b ath9k: Handle channel initialization for AP mode cb3da8c mac80211: accept empty strings for hidden SSIDs e60c774 cfg80211: handle SIOCGIWMODE/SIOCSIWMODE fee5267 cfg80211: handle SIOCGIWNAME f650470 ath5k: enable combined michael mic in key cache 6714349 ath5k: clean up ath5k_hw_set_key f6bac3e ath5k: preserve higher order bits when setting mac address 51e9bf5 iwlwifi: remove uses of __constant_{endian} helpers 10ec4f1 nl80211: relicense nl80211.h under the ISC 72bdcf3 nl80211: Add frequency configuration (including HT40) 72eaa43 mac80211: only transition STAs ps->wake on data frames 0d950d8 iwlwifi: properly initialize calibration command header 8e268e4 mac80211: disassociate prior to unlinking AP/station e327b84 mac80211: deauth when interface is marked down 04adf89 hostap: select required crypto bits in Kconfig 21bbecd ftrace: use init_struct_pid as swapper pid 21a8c46 tracing/ftrace: provide the macro task_curr_ret_stack() 77d683f tracing/ftrace: fix the check of ftrace_trace_task ff32504 tracing/ftrace: don't insert TRACE_PRINT during selftests 970987b Merge branches 'tracing/ftrace', 'tracing/function-graph-tracer' and 'tracing/urgent' into tracing/core a0286c9 x86: fix missing space in printk, #2 12dde4c ALSA: hda - Proper power-map toggling for input pins 55c395b x86: fix missing space in printk e6e3ea2 ALSA: hda - Fix pin-detection in patch_sigmatel.c e061b16 xfrm: Accept ESP packets regardless of UDP encapsulation mode 3f9b766 sgi-xp: Kill directly reference of netdev->priv 17c324f um: Kill directly reference of netdev->priv 6cbeba5 xtensa: Kill directly reference of netdev->priv 28945dd simeth: Kill directly reference of netdev->priv 5da9527 ALSA: ca0106 - Add power-management support 84d727a powerpc/4xx: Add support for ISA holes on 4xx PCI/X/E 9d2421e powerpc/44x: update ppc44x_defconfig 23f402c powerpc/kvm: update KVM config options in ppc44x_defconfig 32c8dab ASoC: Remove obsolete declaration of struct snd_soc_clock_info affa219 x86: change thread_info's flag field back to 32 bits c051556 Merge commit 'v2.6.28-rc7' into x86/cleanups 4e7c4d7 ALSA: hda - Add reference to HD-Audio.txt in ALSA-Configuration.txt 1fd8f2a tracing/function-graph-tracer: handle ftrace_printk entries faec2ec ftrace: avoid duplicated function when writing set_graph_function 6b25393 tracing: fix typo and missing inline function e32d895 ftrace: add ability to only trace swapper tasks 978f3a4 ftrace: use struct pid 5ef6476 pid: fix the do_each_pid_task() macro 804a685 ftrace: trace single pid for function graph tracer 0ef8cde ftrace: use task struct trace flag to filter on pid ea4e2bc ftrace: graph of a single function b29144c Merge branches 'tracing/ftrace' and 'tracing/function-graph-tracer' into tracing/core b8307db Merge commit 'v2.6.28-rc7' into tracing/core 4151d15 ALSA: hda - Add forgotten module alias for Nvidia MCP67 HDMI e5f7343 ALSA: hda - Add MCP67 HDMI support 36cbac5 net/ipv6/ip6mr.c: Use kmem_cache_zalloc, remove memset df66f85 if_usb: Kill directly reference of netdev->priv 4850218 smc91x: remove isa stuff from smc91x driver 999890b net: /proc/net/ip_mr_cache, display Iif as a signed short 1ea472e net: fix /proc/net/ip_mr_cache display - V2 9de6d99 netdev: remove pathetic compile-command lines ec98ce4 Merge branch 'master' into next 8865c41 atm: 32-bit ioctl compatibility dcd39c9 ne-h8300: convert to net_device_ops 5618f0d hydra: convert to net_device_ops b611479 zorro8390: convert to net_device_ops 3e1d7cd e1000: e1000_adapter->polling_netdev is useless a4d2f34 ixgbe: function comment typo e4e6c38 jme: Remove 64 and 40 bit dma_mask 4f40bf4 jme: GHC register control fix for new hardware 59e4220 pkt_sched: sch_htb: Replace HTB_ACCNT() macro with inlines 23cb913 pkt_sched: sch_htb: Remove L2T() 244ef9b bond: Kill directly reference of netdev->priv 9734124 mptlan: Kill directly reference of netdev->priv 0eade1f dvb: Kill directly reference of netdev->priv c19f7a3 pkt_sched: sch_htb: Clean htb_class prio and quantum fields 633fe66 pkt_sched: sch_htb: Remove htb_sched nwc_hit field 4164d66 pkt_sched: sch_htb: Remove htb_class aprio field cb52deb forcedeth: power down phy when interface is down a316084 drivers/net/smc911x.c: smc911x_drv_probe() cleanup fd568fc drivers/isdn/mISDN: use ARRAY_SIZE 838361f isdn: Kill directly reference of netdev->priv 25dd7e6 hysdn: Kill directly reference of netdev->priv 5240488 Phonet: basic net namespace support d81d228 xfrm: Accept XFRM_STATE_AF_UNSPEC SAs on IPv4/IPv6 only hosts ff80aa9 setlocalversion: add git-svn support 167d6a0 setlocalversion: print correct subversion revision 846442c scripts: improve the decodecode script c39dd50 scripts/package: allow custom options to rpm 5dae9a5 genksyms: allow to ignore symbol checksum changes 64e6c1e genksyms: track symbol checksum changes a680eed tags and cscope support really belongs in a shell script 361425f powerpc/85xx: Create dts for each core in CAMP mode for MPC8572DS f6682f9 kconfig: fix options to check-lxdialog.sh 3b1ec9f kbuild: gen_init_cpio expands shell variables in file names efddd79 remove bashisms from scripts/extract-ikconfig d230124 kbuild: teach mkmakfile to be silent fd54f50 kbuild: use KECHO convenience echo 5410ecc kbuild: introduce $(kecho) convenience echo d03fab4 kbuild: kill output in silent mode of mkcompile_h d8672b4 kbuild: expand -I in KBUILD_CPPFLAGS 5b91c33 kbuild: fix -I option expansion with O=... builds dc7d7b8 ASoC: Remove platform device from DAI suspend and resume operations 07c84d0 ASoC: Remove device from platform suspend and resume operations 384c89e ASoC: Push debugfs files out of the snd_soc_device structure a7fe49b ALSA: Add more documentation about HD-audio driver 06be64a powerpc/85xx: Don't reset the MPIC for CAMP mode on MPC8572DS c64ef80 powerpc/85xx: Add localbus node in mpc8572ds dts file 965dc5f powerpc/86xx: Basic GPIO support for GE Fanuc SBC610 09a3fba powerpc/qe: Move cmxgcr_lock definition from the ucc.c into the qe.c d3a8cda powerpc/86xx: Add use of Epson RTX-8581 RTC to GE Fanuc SBC610 dts 24a9959 powerpc/85xx: Fix compile warnings in mpc85xx_mds.c e8e1abe ftrace: fix race in function graph during fork 0a37119 trace: fix output of stack trace 0f62083 ALSA: Reduce stall detection timeout in riptide.c d5b26db powerpc/85xx: Add support for SMP initialization 06b9096 powerpc/85xx: minor head_fsl_booke.S cleanup b389889 powerpc: Better setup of boot page TLB entry 6a800f3 powerpc: Add SPE/EFP math emulation for E500v1/v2 processors. 033b8a3 powerpc/math-emu: Remove redundant 'ret' 463a8c0 powerpc/math-emu: Adopt new version of _FP_CHOOSENAN cf03033 powerpc/math-emu: Fix single float point division bug 55b9121 powerpc: Remove unncessary SPE related compiler flag 0640f84 Merge branch 'topic/hda-modularize' into topic/hda 6f2a974 ASoC: tlv320aic3x: headset/button press support 4b4fffd ASoC: Fix WM8903 right mixer bypass path 5920b45 ASoC: TWL4030: Add input selection and gain controls 7947cf0 hvc_console: Always schedule resize work on resize 3d26825 powerpc: Make open count variables signed in hvcs/hvsi/hvc_console dc42149 drivers/hvc: Add missing of_node_put b908b53 of/gpio: Implement of_get_gpio_flags() 2fd091f powerpc/macintosh: Fix unsigned check in smu_sat_get_sdb_partition() e6a437e of/i2c: Fill the archdata for I2C devices 3f3b163 powerpc and sparc: Introduce dev_archdata node accessors a0e2f9f powerpc/BSR: Support multiple OF-node description of BSR 6358d6c powerpc/ibmebus: Get rid of the IRQ mapping in ibmebus_free_irq() 786b32f powerpc: Eliminate NULL test and memset after alloc_bootmem 15e09c0 powerpc: Add sync_*_for_* to dma_ops c4d04be powerpc: Allow the max stack trace depth to be configured 0186f47 powerpc: Use RCU based pte freeing mechanism for all powerpc df3b861 powerpc: Add a local_flush_tlb_page to handle kmap_atomic invalidates f4f3a12 powerpc: hash_page_sync should only be used on SMP & STD_MMU_32 4ee5f55 powerpc: Fix ppc32 mm_struct CPU tracking in SMP 1b98326 powerpc: Add MSR[CE, DE] to the MSR bits we print on show_regs() 764f3b9 tracing/function-graph-tracer: enabled by default 5274918 Merge branch 'merge' 29fa0b3 xfrm: Cleanup for unlink SPD entry 22d5532 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 166d3c7 tracing/function-graph-tracer: improve duration output 11e84ac tracing/function-graph-tracer: display unified style cmdline and pid 62679ef ftrace: add checks on ret stack in function graph e49dc19 ftrace: function graph return for function entry 7ee991f ftrace: print real return in dumpstack for function graph 044fa78 ring-buffer: change "page" variable names to "bpage" 14a866c ftrace: add ftrace_graph_stop() bb4304c ftrace: have function graph use mcount caller address 347fdd9 ftrace: clean up function graph asm 8789a9e ring-buffer: read page interface abc9b56 ring-buffer: move some metadata into buffer page a5e2588 ftrace: replace raw_local_irq_save with local_irq_save dfdc543 Merge commit 'v2.6.28-rc7'; branch 'x86/dumpstack' into tracing/ftrace f0461d0 Merge branches 'tracing/ftrace' and 'tracing/function-graph-tracer' into tracing/core 181de82 x86: remove dead BIO_VMERGE_BOUNDARY definition 6083aa4 Merge branch 'x86/io' into x86/iommu 3f8c6c9 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-next-2.6 aa2ba5f Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 6802454 Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus ca17584 mac8390: update to net_device_ops b9a9b4b etherh: build fix for net-next dcb7731 x86: fix broken flushing in GART nofullflush path 87689d5 ASoC: Push platform registration down into the card 96841ba ALSA: ac97 - Include ac97_codec.h for ac97_bus_type declaration 6308419 ASoC: Push workqueue data into snd_soc_card 39da581 virtio_net: large tx MTU support 8daa190 x86, apm: remove CONFIG_APM_REAL_MODE_POWER_OFF in favor of a kernel parameter 48d68b2 tracing/function-graph-tracer: support for x86-64 16950e0 ALSA: emu10k1 - Add capture boost mixer switch for Audigy 66eafeb function trace: fix a bug of single thread function trace 222658e Merge branches 'tracing/branch-tracer', 'tracing/ftrace', 'tracing/function-graph-tracer', 'tracing/markers', 'tracing/powerpc', 'tracing/stack-tracer' and 'tracing/tracepoints' into tracing/core 74bf3ca Merge branch 'tracing/urgent' into tracing/core 6976a1d net: percpu_counter_inc() should not be called in BH-disabled section 422d9cd dccp: Feature activation handlers b1ad004 dccp: Processing Confirm options e77b836 dccp: Process incoming Change feature-negotiation options 75757a7 dccp: Preference list reconciliation 8b7b6c7 dccp: Integrate feature-negotiation insertion code 0971d17 dccp: Insert feature-negotiation options into skb 7c37d74 IB/ipath: Improve UD loopback performance by allocating temp array only once 64f22fa IB/ipath: Fix pointer-to-pointer thinko in ipath_fs.c 75c21ae IB/ehca: Fix locking for shca_list_lock 0ecfe79 ASoC: Don't free static data in WM9713 4290239 ASoC: TWL4030: Add volume controls for outputs d889a72 ASoC: TWL4030: Change the common playback volume controls 381a22b ASoC: TWL4030: Change the capture volume control to TLV fa5c769 ASoC: Remove in-code changelog from AD73311 driver 7d8c16a ASoC: Annotate core removal function 968a602 ASoC: Rename snd_soc_register_card() to snd_soc_init_card() 6c415b9 sched: add uid information to sched_debug for CONFIG_USER_SCHED 50cec5c x86: fix dma_mapping_error for 32bit x86, cleanup f6d2e6f Merge branch 'x86/urgent' into x86/iommu 682d587 ALSA: ASoC: Fix old-style trigger callback in s3c2443-ac97.c 5220ed6 ALSA: ASoC: Fix compile warnings on corgi.c 0bc286e Revert "ALSA: soc - Fix compile warnings in wm8903.c" 2caf6a1 ALSA: ASoC: Remove superfluous dependency on SND_SOC 3af4182 Merge branch 'upstream' into topic/asoc f5d4c67 ALSA: soc - Remove obsoleted sound/driver.h inclusion 1966bbd ALSA: ac97 - Add WM9715 to AC97 IDs 9171e5e ALSA: soc - Fix compile warnings in wm8903.c ade9b2f ALSA: pcxhr - change firmware filenames 480cf66 ALSA: Fix a compile warning in cs46xx_lib.c 8c2f767 ALSA: hda - Remove unnecessary caches for power states in patch_sigmatel.c c9b46f9 ALSA: hda - Use amp cache for SPDIF mute controls in patch_sigmatel.c 9a5df92 Bluetooth: Fix RFCOMM release oops when device is still in use 2e79299 Bluetooth: Fix format arguments warning a418b89 Bluetooth: Enable per-module dynamic debug messages 5ddd4a6 Bluetooth: Allow SCO audio with Asus WL-BTD202 dongle 7a9d402 Bluetooth: Send HCI Reset command by default on device initialization 12421b4 Bluetooth: Remove deprecated hci_usb driver 7b99d17 Bluetooth: Respect HCI_UART_DEBUG config in hci_ll.c 51a6fbc Bluetooth: Change simple_strtol to simple_strtoul db7aa1c Bluetooth: Fix warnings for bt_key_strings and bt_slock_key_strings c6bf514 Bluetooth: Fix leak of uninitialized data to userspace 7644d63 Bluetooth: Fix TX error path in btsdio driver 6a88adf Bluetooth: Add suspend/resume support to btusb driver a780efa Bluetooth: Handle bulk URBs in btusb driver from notify callback 2eda66f Bluetooth: Add fine grained mem_flags usage to btusb driver 93093d0 x86: provide readq()/writeq() on 32-bit too, complete a0b1131 x86: provide readq()/writeq() on 32-bit too, cleanup 2c5643b x86: provide readq()/writeq() on 32-bit too 4385cec x86: intel_cacheinfo, minor show_type cleanup 25f1304 gigaset: get rid of info() and warn() macros af4218c gigaset: remove unnecessary poll method f08340c tracepoints: Documentation TPPROTO misspelt in Documentation/tracepoints.txt 65c6dc6 tracing/branch-tracer: include missing irqflags.h c5419e6 cxgb3: Fix sparse warning and micro-optimize is_pure_response() f95be180 phy: add the ST ste10Xp PHYs 4621bf1 phy: Add file missed in previous commit. 0f0ca34 phy: power management support 914804b phy: add natsemi PHY driver 65a467f ne2: silence static never defined warnings d8e8034 bnx2: use net_device_stats nowadays available in net_device 9fd4287 niu: use net_device_stats nowadays available in net_device 70574a9 sched: move double_unlock_balance() higher f1860c3 Merge branch 'sched/urgent' into sched/core 604094f vfs, seqfile: export mangle_path() generally a838c2e markers: comment marker_synchronize_unregister() on data dependency 02834f1 ALSA: ac97 - Remove EXPERIMENTAL from CONFIG_SND_AC97_POWER_SAVE 36adba1 ALSA: hda - Remove EXPERIMENTAL from CONFIG_SND_HDA_POWER_SAVE 8caac56 aperture_64.c: clarify that too small aperture is valid reason for this code ff7a326 ALSA: hda - Don't export symbols when built-in kernel 645f10c ALSA: hda - Check MODULE instead of CONFIG_SND_HDA_INTEL_MODULE 5b3eec0 x86: ret_from_fork - get rid of jump back 3bdae4f Merge branch 'x86/debug' into x86/irq 9f1e87e x86: entry_64.S - trivial: space, comments fixup de04b10 ALSA: oxygen: add Claro halo support 57a5ef4 ALSA: hda - Add quirk for Sony VAIO VGN-SR19XN 56d1771 ALSA: hda - Clear codec->proc_widget_hook at reset 2d34e1b ALSA: hda - Add IDT/STAC-specific proc output 5ae3a13 x86: uv bau interrupt -- use proper interrupt number f1eecf0 powerpc/ppc32: static ftrace fixes for PPC32 0029ff8 powerpc: ftrace, use create_branch ec682ce powerpc: ftrace, added missing icache flush d9af12b powerpc: ftrace, fix cast aliasing and add code verification c7b0d17 powerpc: ftrace, do nothing in mcount call for dyn ftrace c072c24 ftrace: improve documentation 1d9b16d x86: move GART specific stuff from iommu.h to gart.h bb40abe ALSA: hda - Remove unused proc entry in hda_bus struct daead53 ALSA: hda - Add codec-specific proc hook 50cdaf0 ftrace: improve seq_operation of ftrace 6113b74 pkt_sched: fix sparse warning ea5693c netlink: allow empty nested attributes c7425ac tracing, alpha: fix build: add missing #ifdef CONFIG_STACKTRACE ed77a89 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6 d51090b tracing/function-graph-tracer: more output tweaks 1a05615 tracing/function-graph-tracer: adjustments of the trace informations 475ad8e decnet: compile fix for removal of byteorder wrapper 11cd41b ALSA: hda - Fix build error with CONFIG_SND_HDA_POWER_SAVE feea6a5 ixgbe: section fixes 157653c sctp: fix missing label when PROC_FS=n 1289e9e ALSA: hda - Modularize HD-audio driver 73f6a12 ALSA: sound/pci/mixart/mixart.c: Add missing snd_card_free 30d72e9 ALSA: hda - Fix creation of automatic capture mixers 529bd6c ALSA: hda - Fix PCM reconfigure c2c631e x86: entry_64.S - use ENTRY to define child_rip 3345453 x86: entry_64.S - use X86_EFLAGS_IF instead of hardcoded number fee2fba ALSA: hda - Move power_save option to hda_intel.c 986862b ALSA: hda - make some functions static d211af0 i386: get rid of the use of KPROBE_ENTRY / KPROBE_END ddeb8f2 x86_64: get rid of the use of KPROBE_ENTRY / KPROBE_END 83a8df6 tracing/function-graph-tracer: enhancements for the trace output c7cc773 Merge branches 'tracing/blktrace', 'tracing/ftrace', 'tracing/function-graph-tracer' and 'tracing/power-tracer' into tracing/core 40a914f igb: Add support for pci-e Advanced Error Reporting f411303 e100: cleanup link up/down messages d276016 ixgb: cleanup link up/down messages b30c4d8 e1000: cleanup link up/down messages a46e534 ixgbe: cleanup link up/down messages 527d47c igb: link up/down messages must follow a specific format c4106aa decnet: remove private wrappers of endian helpers 5b9ab2e Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 12666f0 ALSA: snd-usb-caiaq: clean up the control adding code 851fd7b cxgb3: Update FW loading path. ad58633 cxgb3: integrate FW and protocol engines in the kernel 5256554 cxgb3: avoid potential memory leak. 43a944f cxgb3: set hard_xmit in the netdev_ops b5ddedc Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 244e6c2 pkt_sched: gen_estimator: Optimize gen_estimator_active() 54f0191 ASoC: Allow more routing features for tlv320aic3x b235507 mac80211_hwsim: fix-up some print_mac merge damage 860c6e6 mac80211: fix unaligned access in ieee80211_wep_encrypt_data b50563a p54: fix wmm queue settings 99405f9 ath9k: Use proper TX channel width for setting channels ff37e33 ath9k: Code scrub bf8c1ac nl80211: Change max TX power to be in mBm instead of dBm 39d1ffe orinoco: Provide option to avoid unnecessary fw caching ac7cafd orinoco: Resume spectrum_cs in the same way as orinoco_cs 2cea7b2 orinoco: Cache Symbol firmware 7473431 orinoco: Separate fw caching from download cb71d9b ath9k: Handle -ENOMEM on RX gracefully 24689c8 rfkill: always call get_state() hook on resume f80b5e9 rfkill: preserve state across suspend 5925d97 mac80211: Look out for some other AP when disassoc is received. e2f367f nl80211: Report max TX power in NL80211_BAND_ATTR_FREQS 1048643 ath5k: Clean up eeprom parsing and add missing calibration data 7ac4701 ath9k: Dont update rate control for every AMPDU 40fc95d iwlwifi: TX update chicken bits 31a73fe iwlwifi: TX setup fix confusion between TX queue and TX DMA channel 25e35a5 iwlwifi: 4965 define firmware file name once 201706a iwlwifi: enable base band calibration in 5000 HW 83dde8c iwlwifi: move iwl_clear_stations_table to iwl-sta.c ce546fd iwl3945 : Fix ad-hoc mode for 3945 0e149cf ath5k: set mac address in add_interface 8f93b8b ath9k: Use straightforward PCI routines to setup the TX buffer. daa9deb ath9k: Update TX trigger level on a FIFO underrun. 788a3d6 ath9k: Fix bug in deciphering channel flags c428839 ath9k: Move TX completion routine to xmit.c 2c5a744 ath9k: Use helpers 46d14a5 ath9k: General code scrub e63835b ath9k: Remove ath9k_rate_table a8efee4 ath9k: Use rate_driver_data fe7f4a7 ath9k: Remove ath_rate_softc 5ddfac3 ath9k: Remove rate control reference in VAP ffd651c ath9k: We don't support non-HT devices, so remove superfluous code. be0418a ath9k: Revamp RX handling 2b406f1 ath9k: Nuke fixed rate handling in driver 46494e6 ath9k: Remove half/quarter rate tables 4df8ec6 ath9k: Remove ath_rate_newassoc() 7b4d273 ath9k: Remove ath_setup_rates fe60594 ath9k: Simplify RC alloc/free functions 256b775 ath9k: Merge struct ath_tx_ratectrl with ath_rate_node 3fcdfb4 ath9k: Fix panic while unregistering rfkill 1548c86 rtl8187: Fix transmission count sent to mac80211 1dc5a84 mac80211: Fix pid rate-setting algorithm to allow rate changes d507748 rt2x00: Don't switch off LED on initialization f941f85 orinoco: indicate it is using dBm in wireless_stats and spy 8eb41c9 mac80211: make Minstrel the default rate control algorithm eea0579 ALSA: pcsp - Fix starting the stream with HRTIMER_CB_IRQSAFE_UNLOCK e7dd8c1 Merge branch 'topic/misc' into topic/pcsp-fix 0bfc245 blktrace: port to tracepoints, update 5f3ea37 blktrace: port to tracepoints 414ff49 ASoC: Fix word wrapping in OMAP Kconfig 3d4cd60 smc-mca: Fix build failure due to typo. 7035560 net: release skb->dst in sock_queue_rcv_skb() 4db646b x86: microcode: fix sparse warnings f3f47a6 tracing: add "power-tracer": C/P state tracer to help power optimization 4f19962 ALSA: sound/pci/hda/hda_codec.c: cleanup kernel-doc 437f24f ftrace: add cpu annotation for function graph tracer 660c7f9 ftrace: add thread comm to function graph tracer e53a631 ftrace: let function tracing and function return run together 5a45cfe ftrace: use code patching for ftrace graph tracer df4fc31 ftrace: add function tracing to single thread 3496f92 Merge branch 'serge-next' into next dd24c00 net: Use a percpu_counter for orphan_count 1748376 net: Use a percpu_counter for sockets_allocated c1b5687 tc: policing requires a rate estimator 71bcb09 tc: check for errors in gen_rate_estimator creation 0e991ec tc: propogate errors from tcf_hash_create 5ceb40d x86: signal: unify signal_{32|64}.c e5fa2d0 x86: signal: unify signal_{32|64}.c, prepare bfeb91a x86: signal: cosmetic unification of __setup_sigframe() and __setup_rt_sigframe() 2601657 x86: signal: move {setup|restore}_sigcontext() d144d5e ftrace: adding other non-leaving .text sections 4ef8e76 ne2000: convert to net_device_ops 53cdd28 3c503: convert to net_device_ops e0b8cb0 stnic: convert to net_device_ops 7d359da apne: convert to net_device_ops 50014f1 ne2: convert to net_device_ops 4be7ef4 hp: convert to net_device_ops 0ec4d4f lne390: convert to net_device_ops 8284abe e2100: convert to net_device_ops 9a9aa14 es3210: convert to net_device_ops d269941 ne3210: convert to net_device_ops d079841 smc: convert to net_device_ops d4a97d4 hp-plus: convert to net_device_ops 458228b wd: use net_device_ops 8884c09 8390: add common net_device ops c2324b6 tracing: function graph tracer, fix b27aead netns xfrm: per-netns sysctls c68cd1a netns xfrm: /proc/net/xfrm_stat in netns 59c9940 netns xfrm: per-netns MIBs 4fb236b netns xfrm: AH/ESP in netns! 7013ec3 netns PF_KEY: per-netns /proc/pfkey 07fb0f1 netns PF_KEY: part 2 3fa87a3 netns PF_KEY: part 1 7c2776e netns xfrm: flush SA/SPDs on netns stop fbda33b netns xfrm: ->get_saddr in netns c5b3cf4 netns xfrm: ->dst_lookup in netns db983c1 netns xfrm: KM reporting in netns 7067802 netns xfrm: pass netns with KM notifications fc34acd netns xfrm: xfrm_user module in netns a6483b7 netns xfrm: per-netns NETLINK_XFRM socket bd235e3 netns xfrm: xfrm_input() fixup ddcfd79 netns xfrm: dst garbage-collecting in netns 3dd0b49 netns xfrm: flushing/pruning bundles in netns 99a6665 netns xfrm: xfrm_route_forward() in netns f6e1e25 netns xfrm: xfrm_policy_check in netns 52479b6 netns xfrm: lookup in netns cdcbca7 netns xfrm: policy walking in netns 8d1211a netns xfrm: finding policy in netns 33ffbbd netns xfrm: policy flushing in netns 1121994 netns xfrm: policy insertion in netns e92303f netns xfrm: propagate netns into policy byidx hash 284fa7d netns xfrm: state walking in netns 5447c5e netns xfrm: finding states in netns 12604d8 netns xfrm: fixup xfrm_alloc_spi() 221df1e netns xfrm: state lookup in netns 0e60245 netns xfrm: state flush in netns 98806f7 netns xfrm: trivial netns propagations 64d0cd0 netns xfrm: propagate netns into bydst/bysrc/byspi hash functions 66caf62 netns xfrm: per-netns policy hash resizing work dc2caba netns xfrm: per-netns policy counts a35f6c5 netns xfrm: per-netns xfrm_policy_bydst hash 8b18f8e netns xfrm: per-netns inexact policies 8100bea netns xfrm: per-netns xfrm_policy_byidx hashmask 93b851c netns xfrm: per-netns xfrm_policy_byidx hash adfcf0b netns xfrm: per-netns policy list 0331b1f netns xfrm: add struct xfrm_policy::xp_net 50a3065 netns xfrm: per-netns km_waitq c783714 netns xfrm: per-netns state GC work b8a0ae2 netns xfrm: per-netns state GC list 6308273 netns xfrm: per-netns xfrm_hash_work 0bf7c5b netns xfrm: per-netns xfrm_state counts 529983e netns xfrm: per-netns xfrm_state_hmask b754a4f netns xfrm: per-netns xfrm_state_byspi hash d320bbb netns xfrm: per-netns xfrm_state_bysrc hash 73d189d netns xfrm: per-netns xfrm_state_bydst hash 9d4139c netns xfrm: per-netns xfrm_state_all list 673c09b netns xfrm: add struct xfrm_state::xs_net d62ddc2 netns xfrm: add netns boilerplate c958396 xfrm: initialise xfrm_policy_gc_work statically 46a8494 3c523: fix warning in drivers/net/3c523.c 99da1a8 depca: fix warning in drivers/net/depca.c a098397 atlx: fix warning in drivers/net/atlx/atl2.c 287b6e6 tracing/function-return-tracer: set a more human readable output fb52607 tracing/function-return-tracer: change the name into function-graph-tracer 45555c0 bluetooth: fix warning in net/bluetooth/rfcomm/sock.c ff0db04 sunrpc: fix warning in net/sunrpc/xprtrdma/verbs.c e14bec2 ax25: fix warning in net/ax25/sysctl_net_ax25.c 509dcee Merge branches 'tracing/hw-branch-tracing' and 'tracing/branch-tracer' into tracing/core e6a1762 mlx4: fix warning in drivers/net/mlx4/mcg.c 3ed7cc0 dccp: fix warning in net/dccp/options.c b71e839 cassini: fix warning in drivers/net/cassini.c b58515b mlx4: fix error path in drivers/net/mlx4/en_rx.c 4174439 z85230: fix warning in drivers/net/wan/z85230.c ef0cd87 sis900: fix warning in drivers/net/sis900.c 180b65d fix warning in fs/dlm/netlink.c d3f644d dsa: fix warning in net/dsa/mv88e6060.c 2a9e797 dsa: fix warning in net/dsa/mv88e6xxx.c 55205d4 ipv6: fix warning in net/ipv6/ip6_flowlabel.c dc0a001 pkt_sched: fix warning in net/sched/sch_hfsc.c ed72b9c sunrpc: fix warning in net/sunrpc/xprtrdma/svc_rdma_transport.c be5a3c6 qla3xxx: fix warning in drivers/net/qla3xxx.c f166400 niu: fix another warning in drivers/net/niu.c 51e0f05 niu: fix warnings in drivers/net/niu.c 2e6a684 s2io: fix warning in drivers/net/s2io.c 09bb521 netns: filter out uevent not belonging to init_net cb13fc2 ixgbe: Naming interrupt vectors 70340d7 niu: Naming interrupt vectors. 9f782db tcp: skb_shift cannot cache frag ptrs past pskb_expand_head f6486d4 pkt_sched: sch_api: Remove qdisc_list_lock 723b461 net: udp_unhash() can test if sk is hashed 5bc0b3b net: Make sure BHs are disabled in sock_prot_inuse_add() 8eecaba tcp: tcp_limit_reno_sacked can become static 4ada424 mac80211: don't assume driver has been attached on registration 4d3601b ath9k: Configure AR_PHY_SWITCH_COM with apropriate antenna control ced0957 p54: honour bss_info_changed's basic_rates and other settings 40db0b2 p54pci: cache firmware for suspend/resume ffed785 p54: minor fixes d131bb5 p54: enable Mesh Point support f16f33d mac80211: Use the HT capabilities from the IE instead of the station's caps. 97b777d ath9k: make DMA memory consistent 1d450cf ath9k: Clarify we only want 32-bit DMA f1ca216 rt2x00: Detect USB BULK in/out endpoints c8f9697 rtl8187: Remove module warning and dependence on CONFIG_EXPERIMENTAL 3517afd rtl8187: feedback transmitted packets using tx close descriptor for 8187B b4572a9 rtl8187: implement conf_tx callback to configure tx queues 54ac218 rtl8187: fix 8187B throughput regression db93e7b ath9k: Race condition in accessing TX and RX buffers. 306efdd ath9k: IRQ should be disabled before calling free_irq() e97275c ath9k: Build RFKILL feature even when RFKILL subsystem is a MODULE f9bbf43 ath9k: incorrect noise floor threshold values. 9f80420 ath9k: INI update for atheros chipets. ea4a82d iwlwifi: enable custom fw regulatory solution 14b9815 cfg80211: add support for custom firmware regulatory solutions 3f2355c cfg80211/mac80211: Add 802.11d support 88dc1c3 cfg80211: mark regdomains with > NL80211_MAX_SUPP_REG_RULES invalid 02ba0b3 cfg80211: call_crda() won't tell us if CRDA was present a01ddaf cfg80211: expect different rd in cfg80211 when intersecting b8295ac cfg80211: separate intersection section in __set_regdom() 8375af3 cfg80211: remove switch from __set_regdom() 5203cdb cfg80211: remove switch from __regulatory_hint() 91e9900 cfg80211: mark negative frequencies as invalid e0737a7 iwlwifi: iwl-fh.h cleanup 34faf78 iwlwifi: some fh document fix and cleanup 352bc8d iwlwifi: configure_filter rewrite c305606 iwlwifi : fix checkpatch.pl errors dbce56a iwlwifi: replace magic constants with define 417f114 iwlwifi: rs: remove fc variable and other cleanups 9f58671 iwlwifi: consolidate station management code cee53dd iwl3945 : Simplify iwl3945_pci_probe 0e3de99 rt2x00: Fix TX failure path 0f829b1 rt2x00: Move rt73usb register access wrappers into rt2x00usb c9c3b1a rt2x00: Cleanup indirect register access 9764f3f ath5k: name pci driver "ath5k" too d6e8cc6 netfilter: fix warning in net/netfilter/nf_conntrack_ftp.c 65f233f netfilter: fix warning in net/netfilter/nf_conntrack_proto_tcp.c 1e9b51c x86, bts, ftrace: a BTS ftrace plug-in prototype 8bba1bf x86, ftrace: call trace->open() before stopping tracing; add trace->print_header() 6abb11a x86, bts, ptrace: move BTS buffer allocation from ds.c into ptrace.c ca0002a x86, bts: base in-kernel ds interface on handles 7d55718 Merge branches 'tracing/core', 'x86/urgent' and 'x86/ptrace' into tracing/hw-branch-tracing 9e0f1b7 ASoC: Clean up kernel-doc for snd_soc_dai_set_fmt 5c0d7bb ASoC: tosa: move gpio probing to machine callbacks 4451582 ASoC: Add support for TI SDP3430 9c8f1a0 ASoC: Fix TWL4030 Kconfig dependency 375e8a7 ASoC: OMAP: Add support for mono audio links in McBSP DAI 0be4305 ASoC: OMAP: Apply channel constrains to N810 machine driver b0e6481 ALSA: hda - Really fix bits value in proc output eefe93b Merge branch 'topic/fix/hda' into topic/hda ee09543 ALSA: hda - Add quirk for MSI 7260 mobo c0193f3 ALSA: pcxhr - add support for pcxhr stereo sound cards (mixer part) 2f9889a Revert "hso: Fix crashes on close." ab153d8 Revert "hso: Fix free of mutexes still in use." cd90ee1 Revert "hso: Add TIOCM ioctl handling." 7628700 ALSA: pcxhr - add support for pcxhr stereo sound cards (firmware support) 9d948d2 ALSA: pcxhr - add support for pcxhr stereo sound cards (core change) 93bf5d8 ALSA: pcxhr - add support for pcxhr stereo sound cards 9f40ac7 netfilter: nfmark IPV6 routing in OUTPUT, mangle, NFQUEUE 5f145e4 netfilter: nfmark routing in OUTPUT, mangle, NFQUEUE c6e4c66 ALSA: hda - Assign unsol tags dynamically in patch_sigmatel.c 0e19e7d Merge branch 'topic/fix/hda' into topic/hda 82894b6 ALSA: hda - Fix proc pcm rate bits fb7e067 xfrm: remove useless forward declarations 6daad37 ah4/ah6: remove useless NULL assignments 69d728b igb: loopback bits not correctly cleared from RCTL register 9b07f3d igb: remove unneeded bit refrence when enabling jumbo frames 7a6b6f5 DCB: fix kconfig option 411c41e aoe: remove private mac address format function 9c8f92a hso: Hook up ->reset_resume 7ea3a9a hso: Add TIOCM ioctl handling. 52429eb hso: Fix free of mutexes still in use. 89930b7 hso: Fix URB submission -EINVAL. 4a3e818 hso: Fix crashes on close. bab04c3 hso: Add new usb device id's. 47fd5b8 netdev: add HAVE_NET_DEVICE_OPS e951e4a x86: fix unused variable warning in arch/x86/kernel/hpet.c 14bfc98 tracing, tty: fix warnings caused by branch tracing and tty_kref_get() 0ace285 tcp: handle shift/merge of cloned skbs too 111cc8b tcp: add some mibs to track collapsing 92ee76b tcp: Make shifting not clear the hints 832d11c tcp: Try to restore large SKBs while SACK processing f58b22f tcp: make tcp_sacktag_one able to handle partial skb too adb92db tcp: Make SACK code to split only at mss boundaries e8bae27 tcp: more aggressive skipping e1aa680 tcp: move tcp_simple_retransmit to tcp_input 4a17fc3 tcp: collapse more than two on retransmission 200036c CRED: fix sparse warnings a21bba9 net: avoid a pair of dst_hold()/dst_release() in ip_push_pending_frames() 6ded6ab User namespaces: use the current_user_ns() macro 18b6e04 User namespaces: set of cleanups (v2) 2e77d89 net: avoid a pair of dst_hold()/dst_release() in ip_append_data() 4db0acf net: gen_estimator: Fix gen_kill_estimator() lookups 3f0947c pkt_sched: sch_drr: fix drr_dequeue loop() 4b40eed infiniband: Kill directly reference of netdev->priv 486bf8d netdevice sbni: Convert directly reference of netdev->priv 5c94afd tokenring/3c359.c: Prevent possible mem leak when open failed 138a5cd tokenring/3c359.c: Fix error message when allocating tx_ring d0cc10a tokenring/3c359.c: fix allocation null check 85920d4 8139too: use err.h macros 3755810 net: Make sure BHs are disabled in sock_prot_inuse_add() fde22f2 ASoC: Lower priority of resume work logging 67c9151 ASoC: Flag AD1980 as an AC97 interface 3ba9e10 ASoC: Remove DAI type information 4813ead netfilter: nf_conntrack_ftp: change "partial ..." message to pr_debug() 6f893fb Merge branches 'tracing/branch-tracer', 'tracing/fastboot', 'tracing/ftrace', 'tracing/function-return-tracer', 'tracing/power-tracer', 'tracing/powerpc', 'tracing/ring-buffer', 'tracing/stack-tracer' and 'tracing/urgent' into tracing/core 64b7482 Merge branch 'sched/rt' into sched/core ef1681d ALSA: hda - Add probe_mask quirk for Medion MD96630 b0bd53a ASoC: TWL4030: Add helper function for output gain controls 0d33ea0 ASoC: TWL4030: Add CGAIN volume control c10b82c ASoC: TWL4030: Change the Master volume control to TLV f8d05bd ASoC: TWL4030: Disable soft-volume 55b8bac ASoC: Use supplied DAI for WM9713 rather than substream 328bd89 netfilter: nf_conntrack_proto_sctp: avoid bogus warning ad07e91 x86 defconfig: increase CONFIG_LOG_BUF_SHIFT b47b928 x86: drop REBOOT_CF9_COND from reboot fallback chain 920de80 net: Make sure BHs are disabled in sock_prot_inuse_add() 1f87e23 eth: Declare an optimized compare_ether_addr_64bits() function ef8ef5f ALSA: hda: Added an ALC888 model entry for Fujitsu-Siemens Amilo Xa3530 a9cb5c9 ALSA: hda - No 'Headphone as Line-out' swich without line-outs 70eb1bf axnet_cs: Fix build after net device ops ne2k conversion. 6f756a8 net: Make sure BHs are disabled in sock_prot_inuse_add() be77e59 net: fix tunnels in netns after ndo_ changes c25eb3b net: Convert TCP/DCCP listening hash tables to use RCU 8c862c2 dccp: Header option insertion routine for feature-negotiation d371056 dccp: Support for Mandatory options 02fa460 dccp: Increase the scope of variable-length htonl/ntohl functions 71c262a dccp: API to query the current TX/RX CCID b20a9c2 dccp: Set per-connection CCIDs via socket options 2c62ad7 myri10ge: update firmware headers 4ee2ac5 myri10ge: update DCA comments c1fd3b9 net: af_netlink should update its inuse counter 04f258c net: some optimizations in af_inet 958086d vfs, seqfile: fix comment style on mangle_path 65afa5e tracing/function-return-tracer: free the return stack on free_task() 3b71e9e x86: HPET: fix sparse warning 5f5db59 x86, debug: remove the confusing entry in call trace a1a00b5 x86: boot - fix sparse warnings 3b6c52b x86: introduce ENTRY(KPROBE_ENTRY)_X86 assembly helpers to catch unbalanced declaration v3 eae849c tracing/function-return-tracer: don't trace kfree while it frees the return stack 6efdcfa x86: KPROBE_ENTRY should be paired wth KPROBE_END 322648d x86: include ENTRY/END in entry handlers in entry_64.S 813b852 Merge branch 'ppc/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/powerpc 050dc69 x86: remove duplicate #define from 'cpufeature.h' 8a2503f x86: move dwarf2 related macro to dwarf2.h e38da59 tracing/stack-tracer: avoid races accessing file 8d26487 tracing/stack-tracer: introduce CONFIG_USER_STACKTRACE_SUPPORT cffa10a tracing/stack-tracer: fix locking and refcounts 8d7c6a9 tracing/stack-tracer: fix style issues 0429149 trace: fix compiler warning in branch profiler 69bb54e ftrace: add ftrace_off_permanent 033601a ring-buffer: add tracing_off_permanent e58918a ftrace: scripts/recordmcount.pl support for ARM 3a3d04a ftrace: specify $alignment for sh architecture 2bcd521 trace: profile all if conditionals bac28bf trace: branch profiling should not print percent without data 45b7974 trace: consolidate unlikely and likely profiler 42f565e trace: remove extra assign in branch check c204f72 ftrace: create default variables for archs in recordmcount.pl 42e007d ftrace: add support for powerpc to recordmcount.pl script 0da85c0 sh: dynamic ftrace support. 4e42ebd x86: hypervisor - fix sparse warnings 1d926f2 init/main.c: use ktime accessor function in initcall_debug code c450d78 x86: vmware - fix sparse warnings 2456d73 x86: signal: cosmetic unification of sys_rt_sigreturn() 666ac7b x86: signal: cosmetic unification of sys_sigaltstack() 5c9b3a0 x86: signal: cosmetic unification of including headers cbe2f5a tracing: allow tracing of suspend/resume & hibernation code again b54d3de tracing: identify which executable object the userspace address belongs to 74e2f33 vfs, seqfile: make mangle_path() global 02b6751 tracing: add support for userspace stacktraces in tracing/iter_ctrl 82f60f0 tracing/function-return-tracer: clean up task start/exit callbacks f201ae2 tracing/function-return-tracer: store return stack into task_struct and allocate it dynamically a0a70c7 Merge branches 'tracing/profiling', 'tracing/options' and 'tracing/urgent' into tracing/core f377fa1 x86: clean up stack overflow debug check 3aeb95d x86_64: fix the check in stack_overflow_check ca9eed7 Merge commit 'v2.6.28-rc6' into x86/debug 3889d0c x86: revert default reboot method to REBOOT_KBD 4805286 ALSA: hda - fix build warning when CONFIG_PROC_FS=n 9415e1c ALSA: hda - fix DisplayPort naming a5fcf89 ALSA: hda - document the ELD proc interface acb0599 ALSA: hda - ELD proc interface write updates 03284c8 ALSA: hda - make HDMI messages more user friendly cc02b83 ALSA: hda - report selected CA index for Audio InfoFrame b83923a ALSA: hda - minor HDMI code cleanups c810841 x86: split out some macro's and move common code to paranoid_exit, fix c46920d Merge branch 'for-david' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 f5f4cf0 igb: do not use phy ops in ethtool test cleanup for non-copper parts 21fc578 enic: misc cleanup items: 8459645 enic: move wmb closer to where needed: before writing posted_index to hw cb3c766 enic: mask off some reserved bits in CQ descriptor for future use 27372bf enic: driver/firmware API updates 86ca9db enic: enable ethtool LRO support 6476a90 WAN pc300too.c: Fix PC300-X.21 detection 7236470 WAN: syncppp.c is no longer used by any kernel code. Remove it. e022c2f WAN: new synchronous PPP implementation for generic HDLC. e1f024e WAN: Simplify sca_init_port() in HD64572 driver. fcfe9ff WAN: Correct comments in hd6457[02].c 0b59cef WAN: HD64572 drivers don't use next_desc() anymore. 61e0a6a WAN: Simplify HD64572 drivers. 9678343 WAN: don't print HD64572 driver versions anymore. 0954ed8 WAN: Simplify HD64572 status handling. 0446c3b WAN: rework HD64572 interrupts a bit. b0942f7 WAN: HD64572 already handles TX underruns with DMAC. 09fd65a WAN: TX-done handler now uses the ownership bit in HD64572 drivers. abc9d91 WAN: convert HD64572-based drivers to NAPI. 3022439 WAN: remove SCA support from SCA-II drivers 8859736 WAN: remove SCA II support from SCA drivers 6b40aba WAN: split hd6457x.c into hd64570.c and hd64572.c 4e4fd4e ne2k: convert to net_device_ops 99921b7 eql: convert to net_device_ops 974acda sc92031: convert to net_device_ops da1c14a qla3xxx: convert to net_device_ops a8652d2 hamachi: convert to net_device_ops c64213c bnx2x: convert to net_device_ops 6557d7b ns83820: convert to net_device_ops bfd82c3 yellowfin: convert to net_device_ops a7bd89c r6040: convert to net_device_ops 09ab9e7 sis900: convert to net_device_ops 2f30b1f tehuti: convert to net_device_ops c3ecb9f sfc: convert to net_device_ops 1abd266 netxen: convert to net_device_ops 8765264 dl2k: convert to net_device_ops 0421eae bnx2: convert to net_device_ops 3addc56 mlx4: convert to net_device_ops 8126089 myri10ge: convert to net_device_ops 5d1d07d via-rhine: convert to net_device_ops 8668ae9 qlge: fix sparse warnings 25ed784 qlge: convert to net_device_ops 0402509 s2io: convert to net_device_ops e48714b jme: convert driver to net_device_ops e245a38 tg3: Update version to 3.96 2fbb69a broadcom: Add 57780 support 321d32a tg3: Add 57780 support 2243584 tg3: Allow GPHY powerdown on 5761 d5fe488 tg3: Embrace pci_ioremap_bar() dfe00d7 tg3: Extract FW ver from alt NVRAM formats 6833c04 tg3: Enable GPHY APD on select devices 5e7dfd0 tg3: Prevent corruption at 10 / 100Mbps w CLKREQ 52f4490 tg3: Qualify use of tp->pcix_cap ad82926 tg3: Use NET_IP_ALIGN cf005b1 net: remove redundant argument comments 6c0bce3 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 e243455 e1000e: check return code from NVM accesses and fix bank detection a20e4cf e1000e: fix incorrect link status when switch module pulled 8452759 e1000e: store EEPROM version number to prevent unnecessary NVM reads 0285c8d e1000e: cosmetic newline in debug message 5c48ef3 e1000e: sync change flow control variables with ixgbe 8f12fe8 e1000e: link up/down messages must follow a specific format 75eb0fa e1000e: ESB2 config after link up 438b365 e1000e: check return of pci_save_state 1605927 e1000e: update comments listing supported parts for each MAC family 63dcf3d e1000e: 82571 check for link fix on 82571 serdes 5aa49c8 e1000e: commit speed/duplex changes for m88 PHY 005cbdf e1000e: disable correctable errors for quad ports while going to D3 7e3aab4 inet_diag: Missed conversion after changing inet ehash lockl to spinlocks. 176301e netdevice pc300: Add the reason about PC300 BROKEN in Kconfig 6636e11 netdevice pc300: Convert directly reference of netdev->priv 2baf8a2 netdevice hdlc: Convert directly reference of netdev->priv f757fec net: use net_eq() in INET_MATCH and INET_TW_MATCH b202226 ALSA: hda - Fix build without CONFIG_PROC_FS b8b1d08 x86: entry_64.S: split out some macro's and move common code to paranoid_exit e2f6bc2 x86: entry_64.S: factor out save_paranoid and paranoid_exit c002a1e x86: introduce save_rest and restructure the PTREGSCALL macro in entry_64.S c70bfa8 Merge branch 'topic/fix/hda' into topic/hda d6752a5 ALSA: hda - mark Dell studio 1535 quirk a1eb5fe wireless: missing include in lib80211.h 3461fc1 rtl8187: Update file authorship in comments 5984048 Update of MAINTAINERS for RTL8187 4f6d4d1 wireless: clean up sysfs code using %pM 96dd603 MAINTAINERS: claim maintenance over rtl818x drivers da81ded rtl8180: adapt for deprecated IEEE80211_CONF_SHORT_SLOT_TIME flag 6272710 mac80211: add explicit padding in struct ieee80211_tx_info beb2a7f net/ieee80211 -> drivers/net/ipw2x00/libipw_* rename 0795cd2 ipw2x00: relocate ipw2100/ipw2200 to common directory 2ba4b32 lib80211: consolidate crypt init routines 274bfb8 lib80211: absorb crypto bits from net/ieee80211 dfe1baf orinoco: fix last beacon reporting on 64-bit systems 1d047de mac80211: remove unnecessary include. 8ff48a8 rt2x00: Fix race condition when using inderect registers bad1363 rt2x00: Optimize get_duration / get_duration_res 87c1687 drivers/net/wireless/ath9k/rc.c: use ARRAY_SIZE f9f88fe mac80211_hwsim: Update documentation (AP mode enabled) 9902b18 mac80211: rc80211_pid eliminate sparse warnings 798b7ad rt2x00: Cleanup TX/RX entry handling 0ed94ea mac80211: remove more excess kernel-doc e4e58cf iwlwifi: use Rx single frame mode (one Rx frame per RB) 01ef932 iwlwifi: get some more information about command failure c24f081 iwl3945 : Simplify iwl3945_send_beacon_cmd cb299ba iwlwifi: move iwl_print_hex_dump to iwl-debug.h e720ce9 iwl3945 : Fix Sparse Warnings 21c339b iwlwifi: move spectrum measurement code to iwl-spectrum.c file 4ddbb7d iwlwifi: revamp tx scheduler byte count tables handling 8d86422 iwlwifi: move rx queue read pointer into rxq 5c5aa3f iwlwifi: update iwl-commands.h for 3 stream support a71c8f6 iwlwifi: don't fail power set when calibration is not done yet 1933577 iwlwifi: trivial fix in includes 9bdf5ec iwl3945: fix resume for ADHOC network ada1751 iwlagn: fix resume for ADHOC network 1e87d68 b43: remove rate index warning 7f3704e b43legacy: implement short slot and basic rate handling 3e4127f ipw2200: make association only if SSID is known. ffb8267 ath9k: enable RXing of beacons on STA/IBSS 296bf2a ath5k: allow APs to receive beacons 6a53a8a ath5k: Fix IMR init 392dff8 ath9k : Display MAC/BB and RF version at startup (v2) 4821277 mac80211: fix BUILD_BUG_ON() caused by misalignment on arm 8b0162a ath5k: ignore the return value of ath5k_hw_noise_floor_calibration 6d64360 rt2x00: Fix BUG_ON() with antenna handling 8058409 rt2x00: Block set_key() during suspend/shutdown 9a95dba rt2x00: Fix LED state handling 3d8606a rt2x00: Remove RATE_BASIC flag 1c740ed Move all rtl818x files to a common directory. 55b3961 mac80211_hwsim: enable Mesh Point operation a3c9aa5 mac80211: disable BSSID filtering for mesh interfaces b7b05fe ssb: struct device - replace bus_id with dev_name(), dev_set_name() 582c1b5 libertas: Fine grained configuration of wake-on-lan. 50da3ea ipw2100, ipw2200: select LIB80211 3d29b0c netdevice zd1201: Convert directly reference of netdev->priv to netdev_priv() 4f90473 ALSA: ASoC: Fix typo in snd_soc_card update documentation 42e81c9 ALSA: hda - fix sparse warning 39639fa ASoC: Improve error reporting for AC97 reset failures 0e734ad ASoC: Staticise pxa2xx_pcm_ops 0c758bd ASoC: OMAP: Fix preprocessor filled DAI name in McBSP DAI 2dac921 ASoC: Add Marvell Zylonite machine support 14ae22b x86: entry_64.S: rename e8a0e27 x86: clean up after: move entry_64.S register saving out of the macros, fix dee89c4 ASoC: Merge snd_soc_ops into snd_soc_dai_ops a47cbe7 ASoC: Move DAI structure definitions into new soc-dai.h 5de27b6 ASoC: ssm2602: Update supported stream formats faab5a3 ASoC: ssm2602: Fix priv substreams refs bd903bd ASoC: Add abbreviation to maintainers for searchability 8750654 ASoC: Rename snd_soc_card to snd_soc_machine 98aa9c8 pkt_sched: sch_drr: Fix qlen in drr_drop() 9d2f472 ixgbe: convert directly reference of netdev->priv 11b444d ALSA: hda - Move HD-audio Kconfig items to sound/pci/hda/Kconfig e7ee058 ALSA: hda - Make CONFIG_SND_HDA_RECONFIG for codec reconfiguration f208dba ALSA: hda - Release ELD proc file b94d353 ALSA: hda - Fix double free of jack instances 957ad01 sched: update comment for move_task_off_dead_cpu fc02e90 Merge commit 'v2.6.28-rc6' into sched/core 0623536 ALSA: hda - Add missing static for snd_hda_eld_proc_new() inline funciton 3ddd972 x86: signal: rename COPY_SEG_STRICT to COPY_SEG_CPL3 acdda79 ALSA: hda - support writing to the ELD proc file db74210 ALSA: hda: modify monitor name to be consistent with other ELD proc items 218b5ff ALSA: hda - properly print ELD sample bits 75a287d Merge branch 'topic/fix/hda' into topic/hda c4900be ixgbe: add SFP+ driver support 859ee3c DCB: Add support for DCB BCN 0eb3aa9 DCB: Add interface to query the state of PFC feature. 33dbabc DCB: Add interface to query # of TCs supported by device 4613218 DCB: Add interface to query for the DCB capabilities of an device. 2f90b86 ixgbe: this patch adds support for DCB to the kernel and ixgbe driver 9db66bd net: convert TCP/DCCP ehash rwlocks to spinlocks b8c26a3 ipgre: convert to netdevice_ops 1326c3d ipv6: convert tunnels to net_device_ops 23a12b1 ipip: convert to net_device_ops 748ff68 hippi: convert driver to net_device_ops fd8f499 defxx: convert driver to net_device_ops 145186a fddi: convert to new network device ops 007c383 ipmr: convert ipmr virtual interface to net_device_ops aa18e9e dummy: convert to net_device_ops 0082982 netdev: add more functions to netdevice ops 1725b82 ALSA: hda - make laptop-eapd model back for AD1986A 6ab33d5 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 7cc45e6 powerpc/ppc32: ftrace, dynamic ftrace to handle modules f48cb8b powerpc/ppc64: ftrace, handle module trampolines for dyn ftrace e4486fe powerpc: ftrace, use probe_kernel API to modify code 8fd6e5a powerpc: ftrace, convert to new dynamic ftrace arch API 6d07bb4 powerpc: ftrace, do not latency trace idle dcd072e x86: clean up after: move entry_64.S register saving out of the macros 018a7bf netfilter: ip{,6}t_policy.h should include xp_policy.h 7be6065 netdevice wanrouter: Convert directly reference of netdev->priv 826dd0e netdevice ni65: Convert directly reference of netdev->priv c8019bf netdevice ppp: Convert directly reference of netdev->priv f7b2927 smsc95xx: add tx checksum offload support 8761169 sfc: Fix dependency for SFC_MTD 47a1a1d pkt_sched: remove unnecessary xchg() in packet classifiers b94c8af pkt_sched: remove unnecessary xchg() in packet schedulers c19d036 isdn: isdn_net.c annotate struct ip_ports and trivial sparse fixes 13d2a1d pkt_sched: add DRR scheduler 0c19b0a netlink: avoid memset of 0 bytes sparse warning c010360 netdevice lance: Convert directly reference of netdev->priv 5377152 mv643xx_eth: calculate descriptor pointer only once in rxq_refill() f61e554 mv643xx_eth: move receive error handling out of line 66e63ff mv643xx_eth: implement ->set_rx_mode() 66823b9 mv643xx_eth: inline txq_alloc_desc_index() 37a6084 mv643xx_eth: introduce per-port register area pointer 10a9948 mv643xx_eth: checkpatch fixes 21d1a16 net: ip_sockglue.c add static, annotate ports' endianness 00b5e50 myri10ge: remove hardcoded sram_size d6279c8 myri10ge: fix per-slice rx/tx_dropped counters d99015b x86: move entry_64.S register saving out of the macros c032a2d Merge branch 'x86/cleanups' into x86/irq 87f7606 x86: fix wakeup_cpu with numaq/es7000 v2 - call ->update_genapic() a61fc1e netdev/smc91x: unify Blackfin code a bit and use proper read/write functions 3d3e35a dccp: Fix bracing in dccp_feat_list_lookup. f4bdd26 netdevice hamradio: Convert directly reference of netdev->priv 56bc0f9 netfilter: nf_conntrack_proto_gre: spread __exit f3a216d netdevice: 82596: Convert netdev->priv to netdev_priv 61d3015 netfilter: ip6table_filter: merge LOCAL_IN and FORWARD hooks b0ceb56 netfilter: xt_recent: don't save proc dirs d214c75 filter: add SKF_AD_NLATTR_NEST to look for nested attributes 68fd991 igb: Fix tx/rx_ring_count parameters for igb on suspend/resume/ring resize b2d5653 igb: simplify swap in clean_rx_irq if using packet split 3ef6b23 igb: update name to reflect new hardware 5caea4e net: listening_hash get a spinlock per bucket bb55746 x86: fix arch/x86/kernel/setup.c build warning when !CONFIG_X86_RESERVE_LOW_64K 90accd6 Merge branch 'linus' into x86/memory-corruption-check 77be80e x86: fix arch/x86/kernel/genx2apic_uv_x.c build warning when !CONFIG_HOTPLUG_CPU fbc2a06 Merge branch 'linus' into x86/uv 5b2d1ec ALSA: hda: Added Realtek ALC888 model entry for Acer Aspire 4930G laptop 41dda0f ALSA: azx_probe() cleanup d8b83c5 acenic: convert to net_device_ops 2c9171d niu: convert to net_device_ops b94426b forcedeth: convert to net_device_ops 7c7d64b tg3: convert to net_device_ops 0edc352 ixgb: convert to net_device_ops afe29f7 enic: convert to net_device_ops 52256cf ppp: convert to net_device_ops acc7842 e100: convert to net_device_ops 2e5c692 igb: convert to net_device_ops 39a11bd via-velocity: convert to net_device_ops 0e7614b e1000: convert to net_device_ops 80ff32b cxgb2: convert to net_device_ops dd75269 cxgb3: convert to net_device_ops 825a84d atlx: convert to net_device_ops 1e058ab atl1e: convert to net_device_ops 758e43b tun: convert to net_device_ops 48dfcde 8139: convert to net_device_ops 8b4ab28 r8169: convert to net_device_ops f80d032 skge: convert to net_device_ops 1436b30 sky2: convert to net_device_ops 651c246 e1000e: convert to net_device_ops eb7cc59 bonding: convert to net_device_ops 656299f vlan: convert to net_device_ops 5bc3eb7 ip: convert to net_device_ops for ioctl 54a30c9 macvlan: convert to net_device_ops 4456e7b veth: convert to net_device_ops a2dbb88 bridge: convert to net_device_ops 8dfcdf3 ifb: convert to net_device_ops c02373b netdev: convert loopback to net_device_ops ccad637 netdev: expose ethernet address primitives eeda3fd netdev: introduce dev_get_stats() d314774 netdev: network device operations infrastructure 6b41e7d net: af_unix should use KERN_INFO instead of KERN_DEBUG d171235 drivers/s390/ - csum_partial - remove unnecessary casts 07f0757 include/net net/ - csum_partial - remove unnecessary casts a7a0d6a net: inet_diag_handler structs can be const 14e943d net: make /proc/net/protocols namespace aware 3680453 net: af_packet should update its inuse counter 9789cfe nfsctl: add headers for credentials 7596b27 coda: fix creds reference ec4e0e2 sched: fix inconsistency when redistribute per-cpu tg->cfs_rq shares 9b0db7e ASoC: Convert blackfin machines to use DAI accessor functions d0c3663 ASoC: s3c24xx_uda134x DAI accessor functions and static cleanup df573d2 ASoC: Add support for omap2evm board 08bd168 ASoC: Add driver for the Lyrtech SFFSDR board 1c0090c ASoC: Add PCM3008 ALSA SoC driver 8563964 ALSA: hda - Show missing GPIO unsol bits 60a5151 profiling: clean up profile_nop() 9676e73 Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core 86fa2f6 ftrace: fix selftest locking 3ac3ba0 Merge branch 'linus' into sched/core ae8cb4c ALSA: hda: compact ELD output messages d39b435 ALSA: hda: make global snd_print_pcm_bits() 06f69d1 ALSA: hda: minor output message cleanups 5b87ebb ALSA: hda: rename sink_eld to hdmi_eld 4e19c58 ALSA: hda: minor code cleanups 198d6ba Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 c6798d2 ALSA: hda: EAPD mute on suspend 9c8641e ALSA: hda: HDMI channel mapping cleanups 698544d ALSA: hda: HDMI channel allocations for audio infoframe 903b21d ALSA: hda: make global snd_print_channel_allocation() 5457a98 ALSA: hda: make standalone hdmi_fill_audio_infoframe() cea555d Merge branch 'linux-2.6' into next 78608dd powerpc/mpic: Use new smp_request_message_ipi 25ddd73 powerpc: Provide a separate handler for each IPI action a6326e9 powerpc: Correct page-in counter for CMM with 64k pages 22059a9 powerpc/pmac: Use of_find_node_with_property() in pmac_setup_arch() ba82efb powerpc: Use of_find_node_with_property() in cell_iommu_fixed_mapping_init() 5401817 powerpc: Use for_each_node_with_property() in of_irq_map_init() 1e291b1 of: Add helpers for finding device nodes which have a given property ae564c6 powerpc: Optimise mutex 957ab07 powerpc: Optimise smp_rmb 46d075b powerpc: Optimise smp_wmb a4e22f0 powerpc: Update 64bit __copy_tofrom_user() using CPU_FTR_UNALIGNED_LD_STD 7526ff7 powerpc: Remove superfluous WARN_ON() from dma-noncoherent.c efc3624 powerpc: Tell gcc when we clobber the carry in inline asm d5e5491 powerpc: udbg-based backend for hvc_console 8c65318 serial/pmac_zilog: Add console polling support 9b82f3e powerpc/ps3: Replace the flip_ctl logic in ps3av and ps3fb by a mutex a225063 ftrace: preemptoff selftest not working ca3ea02 ASoC: Remove unused snd_soc_machine_config declaration 2af7529 sound: Fix warnings relating to ignored return value in snd_card_register b5fe363 x86: use update_genapic to get rid of ES7000_CLUSTERED_APIC v2 f632ddc x86: fix wakeup_cpu with numaq/es7000, v2, fix #2 6497760 x86: ia32_signal: change order of storing in setup_sigcontext() 047ce93 x86: ia32_signal: remove using temporary variable 8c6e5ce x86: ia32_signal: cleanup macro RELOAD_SEG d71a68d x86: ia32_signal: introduce COPY_SEG_CPL3 b78a5b5 x86: ia32_signal: cleanup macro COPY cbe9ee0 Merge branch 'x86/urgent' into x86/cleanups a1afd01 x86: default to SWIOTLB=y on x86_64 72f2b89 ASoC: Move uda134x_codec.h to uda134x.h a0bd65f ASoC: Blackfin: always set a default value for that GPIO range 27b9be5 ASoC: Blackfin: Simplify the MMAP_SUPPORT macros protected code caa4583 ASoC: Blackfin: do not force TWI bus for ssm2602 codec 0cade26 ASoC: Fix Blackfin AC97 DAI probe function return code a89e611 ASoC: Blackfin: Fix AD1980/1 build with MMAP support disabled 67f854b ASoC: Blackfin: add multi-channel function support 9905ed3 ASoC: AD1980 codec: add multi-channel function support a11311d ASoC: Blackfin: updates Kconfig for SPORT cb6e206 ASoC: DaVinci: Fix audio stall when doing full duplex cd896c3 ALSA: hda - Allow multiple imux for matrix-type mixers of ALC codecs e17b666 netfilter: nf_conntrack: fix warning and prototype mismatch d9e1500 netfilter: nfnetlink_log: fix warning and prototype mismatch 19abb7b netfilter: ctnetlink: deliver events for conntracks changed from userspace 226c0c0 netfilter: ctnetlink: helper modules load-on-demand support 0231022 tracing/function-return-tracer: add the overrun field 0619faf tracing/ftrace: make nop tracer using tracer flags adf9f19 tracing/ftrace: implement a set_flag callback for tracers a581780 Merge branch 'topic/fix/hda' into topic/hda af9f341 ALSA: hda - Fix restore of pin configs at resume for STAC/IDT codecs 2c88587 ALSA: hda - Use init callback in stac92xx_resume() e4973e1 ALSA: hda - Create jack detection elements in build_controls f3a5c54 Merge branch 'master' into next 5a209c2 Merge branches 'tracing/branch-tracer' and 'tracing/urgent' into tracing/core 5f1e71b ALSA: ELD proc interface for HDMI sinks 7f4a9f4 ALSA: create hda_eld.c for ELD routines and proc interface 33deeca ALSA: introduce snd_print_pcm_rates() 2eca83b ALSA: hda: remove redundant get_amp_nid() bc4a68f ALSA: snd-powermac: enable mic on iMac G4 54ac14a x86: fix wakeup_cpu with numaq/es7000, v2, fix 8d702f2 ASoC: Build tlv320aic23 cleanly 2adb983 ASoC: Manage VMID mode for WM8990 be1b87c ASoC: Enable WM8990 ADC clocking workaround ba533e9 ASoC: Allow writes to uncached registers in WM8990 569712b x86: fix wakeup_cpu with numaq/es7000, v2 4dc06f9 netfilter: nf_conntrack: connection tracking helper name persistent aliases 528a3a6 netfilter: ctnetlink: get rid of module refcounting in ctnetlink bfe2967 netfilter: ctnetlink: use EOPNOTSUPP instead of EINVAL if the conntrack has no helper 238ede8 netfilter: ctnetlink: use nf_conntrack_get instead of atomic_inc 7ad933d ASoC: Machine driver for for s3c24xx with uda134x 1cad1de ASoC: UDA134x codec driver 0c726da tracing: branch tracer, fix writing to trace/trace_options 6e5d9db ASoC: Fix for master playback/capture volume range for TWL4030 codec 9a57f7f net: sctp should update its inuse counter a8076d8 net: af_unix should update its inuse counter 0bd7b79 x86: entry_64.S: remove whitespace at end of lines 9dacc71 Merge commit 'v2.6.28-rc5' into x86/cleanups 796359d ALSA: hda-intel: reorder HDMI audio enabling sequence c0cea0d ALSA: hda: STAC_DELL_M6 EAPD 3ab9093 ALSA: hda: alc883 model for ASUS P5Q-EM boards 3f8e402 Merge branches 'tracing/branch-tracer', 'tracing/ftrace', 'tracing/function-return-tracer', 'tracing/tracepoints' and 'tracing/urgent' into tracing/core 248969a net: af_unix can make unix_nr_socks visbile in /proc c3ccc12 netdevice chelsio: Convert directly reference of netdev->priv 4d24b52 ematch: simpler tcf_em_unregister() 6eba6a3 net: Cleanup of af_unix 1910299 dccp: Tidy up setsockopt calls dd9c0e3 dccp: Deprecate Ack Ratio sysctl 2945055 dccp: Feature negotiation for minimum-checksum-coverage 49aebc6 dccp: Deprecate old setsockopt framework 0c11683 dccp: Mechanism to resolve CCID dependencies 3f2c31d virtio_net: VIRTIO_NET_F_MSG_RXBUF (imprive rcv buffer allocation) 0276b49 virtio_net: hook up the set-tso ethtool op 0a888fd virtio_net: Recycle some more rx buffer pages 908cd2d net: use %pF for /proc/net/ptype 5635c10 net: make sure struct dst_entry refcount is aligned on 64 bytes 536533e rcu: documents rculist_nulls 3ab5aee net: Convert TCP & DCCP hash tables to use RCU / hlist_nulls 88ab193 udp: Use hlist_nulls in UDP RCU code bbaffac rcu: Introduce hlist_nulls variant of hlist e8b2dfe TPROXY: implemented IP_RECVORIGDSTADDR socket option 8164f1b ipv4: Fix ARP behavior with many mac-vlans 6ea7ae1 e1000e: enable ECC correction on 82571 silicon f004f3e phylib: make mdio-gpio work without OF (v4) 72af187 phylib: rename mdio-ofgpio to mdio-gpio 6817ba2 dm9000: Fix build error. 227a837 markers/tracpoints: fix non-modular build cda2836 pegasus: minor resource shrinkage 74ad0a5 ixgbe: Fix usage of netif_*_all_queues() with netif_carrier_{off|on}() 0a7ad64 tracepoints: format documentation 0dcf8fe tracepoints, docs: marker_synchronize_unregister->tracepoint_synchronize_unregister 8fd88d1 tracepoints: documentation fix for teardown 7e066fb tracepoints: add DECLARE_TRACE() and DEFINE_TRACE() 32f8574 tracepoints: use modules notifiers 5f38267 tracepoints: do not put arguments in name c420970 tracepoints: use unregister return value da7b3ea tracepoints: use rcu_*_sched_notrace de0baf9 tracepoints: fix disable 2504ea5 tracepoints: samples, fix teardown a0bca6a markers: create DEFINE_MARKER and GET_MARKER (new API) c1df1bd markers: auto enable tracepoints (new API : trace_mark_tp()) a419246 markers: use module notifier 021aeb0 markers: use rcu_*_sched_notrace and notrace e3f8c4b markers: add missing stdargs.h include, needed due to va_list usage 2bdba31 markers: fix unregister 954e100 rcu: add rcu_read_*_sched_notrace() e7d3737 tracing/function-return-tracer: support for dynamic ftrace on function return tracer b01c746 tracing/function-return-tracer: add a barrier to ensure return stack index is incremented in memory 9858096 Merge branch 'tracing/ftrace' into tracing/function-return-tracer 072b40a tracing/branch-tracer: fix a trace recursion on branch tracer 1c80025 tracing/ftrace: change the type of the init() callback e6e7a65 tracing/ftrace: fix unexpected -EINVAL when longest tracer name is set ee02a2e ftrace: make filtered functions effective on setting 982c350 ftrace: fix dyn ftrace filter 20e5227 ftrace: allow NULL pointers in mcount_loc 31e8890 ftrace: pass module struct to arch dynamic ftrace functions d51ad7a ftrace: replace raw_local_irq_save with local_irq_save 918c115 ftrace: do not process freed records b17e8a3 ftrace: disable ftrace on anomalies in trace start and stop f3c7ac4 ftrace: remove condition from ftrace_record_ip c91add5 Merge branches 'tracing/fastboot', 'tracing/ftrace' and 'tracing/urgent' into tracing/core e2da9ba Merge branch 'topic/fix/hda' into topic/hda e50a906 capabilities: define get_vfs_caps_from_disk when file caps are not enabled 71cfc90 ASoC: Add WM8728 codec driver 2bef901 ASoC: Revert "ASoC: Add new parameter to s3c24xx_pcm_enqueue" 127e82e ALSA: hda - Support Headphone and Speaker volumes control on VAIO 8a75f4f ALSA: pcsp - Use HRTIMER_CB_IRQSAFE_UNLOCKED ef711cf net: speedup dst_release() f30ab41 pkt_sched: Remove qdisc->ops->requeue() etc. 38a7ddf tcp: remove an unnecessary field in struct tcp_skb_cb 00bcd52 isdn: use %pI4, remove get_{u8/u16/u32} and put_{u8/u16/u32} inlines 722024d x86: irq: fix apicinterrupts on 64 bits 2b82892 Merge branch 'master' into next 3a3b7ce CRED: Allow kernel services to override LSM settings for task actions 1bfdc75 CRED: Add a kernel_service object class to SELinux 3b11a1d CRED: Differentiate objective and effective subjective credentials on a task 98870ab CRED: Documentation d76b0d9 CRED: Use creds in file structs 1d04598 CRED: Prettify commoncap.c a6f76f2 CRED: Make execve() take advantage of copy-on-write credentials d84f4f9 CRED: Inaugurate COW credentials 745ca24 CRED: Pass credentials through dentry_open() 88e67f3 CRED: Make inode_has_perm() and file_has_perm() take a cred pointer 6cc88bc CRED: Rename is_single_threaded() to is_wq_single_threaded() bb952bb CRED: Separate per-task-group keyrings from signal_struct 275bb41 CRED: Wrap access to SELinux's task SID c69e8d9 CRED: Use RCU to access another task's creds and to release a task's own creds 86a264a CRED: Wrap current->cred and a few other accessors f1752ee CRED: Detach the credentials from task_struct b6dff3e CRED: Separate task security context from task_struct 15a2460 CRED: Constify the kernel_cap_t arguments to the capset LSM hooks 1cdcbec CRED: Neuter sys_capset() 8bbf497 KEYS: Alter use of key instantiation link-to-keyring argument e9e349b KEYS: Disperse linux/key_ui.h 76aac0e CRED: Wrap task credential accesses in the core kernel b103c59 CRED: Wrap task credential accesses in the capabilities code 47d804b CRED: Wrap task credential accesses in the key management code 8192b0c CRED: Wrap task credential accesses in the networking subsystem 19d6562 CRED: Wrap task credential accesses in the UNIX socket protocol 8f41940 CRED: Wrap task credential accesses in the SunRPC protocol c2a2b8d CRED: Wrap task credential accesses in the ROSE protocol ba95b23 CRED: Wrap task credential accesses in the netrom protocol f82b3590 CRED: Wrap task credential accesses in the IPv6 protocol 7340040 CRED: Wrap task credential accesses in the AX25 protocol 414c070 CRED: Wrap task credential accesses in the SYSV IPC subsystem da9592e CRED: Wrap task credential accesses in the filesystem subsystem 82ab8de CRED: Wrap task credential accesses in the XFS filesystem a5f773a CRED: Wrap task credential accesses in the UFS filesystem 7706bb3 CRED: Wrap task credential accesses in the UDF filesystem 26bf194 CRED: Wrap task credential accesses in the UBIFS filesystem fc7333d CRED: Wrap task credential accesses in the SYSV filesystem e2950b1 CRED: Wrap task credential accesses in the SMBFS filesystem 414cb20 CRED: Wrap task credential accesses in the ReiserFS filesystem 0785f4d CRED: Wrap task credential accesses in the RAMFS filesystem c222d53 CRED: Wrap task credential accesses in the OMFS filesystem b19c2a3 CRED: Wrap task credential accesses in the OCFS2 filesystem 5cc0a84 CRED: Wrap task credential accesses in the NFS daemon 4893702 CRED: Wrap task credential accesses in the NCPFS filesystem 922c030 CRED: Wrap task credential accesses in the Minix filesystem 8f659ad CRED: Wrap task credential accesses in the JFS filesystem 77c70de CRED: Wrap task credential accesses in the hugetlbfs filesystem de395b8 CRED: Wrap task credential accesses in the HPFS filesystem 4ac8489 CRED: Wrap task credential accesses in the HFSplus filesystem 94c9a5e CRED: Wrap task credential accesses in the HFS filesystem 3de7be3 CRED: Wrap task credential accesses in the GFS2 filesystem 2186a71 CRED: Wrap task credential accesses in the FUSE filesystem f0ce7ee CRED: Wrap task credential accesses in the FAT filesystem 4c9c544 CRED: Wrap task credential accesses in the Ext4 filesystem 6a2f90e CRED: Wrap task credential accesses in the Ext3 filesystem a8dd4d6 CRED: Wrap task credential accesses in the Ext2 filesystem 4eea035 CRED: Wrap task credential accesses in the eCryptFS filesystem ec4c2aa CRED: Wrap task credential accesses in the devpts filesystem 97b7702 CRED: Wrap task credential accesses in the Coda filesystem a001e5b CRED: Wrap task credential accesses in the CIFS filesystem 1109b07 CRED: Wrap task credential accesses in the BFS filesystem 0eb790e CRED: Wrap task credential accesses in the autofs4 filesystem 73c646e CRED: Wrap task credential accesses in the autofs filesystem 2155998 CRED: Wrap task credential accesses in the AFFS filesystem f8b9d53 CRED: Wrap task credential accesses in 9P2000 filesystem cd80ca8 CRED: Wrap task credential accesses in the USB driver ee9785a CRED: Wrap task credential accesses in the network device drivers 0e164b6 CRED: Wrap task credential accesses in the ISDN drivers 66303bc CRED: Wrap task credential accesses in the tty driver b0fafa8 CRED: Wrap task credential accesses in the block loopback driver 350b4da CRED: Wrap task credential accesses in the x86 arch e542370 CRED: Wrap task credential accesses in the S390 arch 1330deb CRED: Wrap task credential accesses in the PowerPC arch 25e1573 CRED: Wrap task credential accesses in the PA-RISC arch b421273 CRED: Wrap task credential accesses in the MIPS arch ef81ee9 CRED: Wrap task credential accesses in the IA64 arch d1aaf8c tracing/fastboot: put error message on stderr b3535c6 ftrace: remove unnecessary if condition of __unregister_ftrace_function cd80bc6 Merge branch 'topic/fix/hda' into topic/hda 0b60485 ASoC: OMAP: Add more supported sample rates into McBSP DAI driver bbba944 ASoC: Fix supported sample rates of TWL4030 audio codec c4da29c ALSA: hda - support detecting HD Audio devices with PCI class code 12ef7d4 ftrace: CPU buffer start annotation clean ups ee6bce5 ftrace: rename iter_ctrl to trace_options 1696b2b ftrace: show buffer size in kilobytes a94c80e ftrace: rename trace_entries to buffer_size_kb 24de386 Merge branches 'tracing/branch-tracer', 'tracing/fastboot', 'tracing/function-return-tracer' and 'tracing/urgent' into tracing/core 524ad0a netdevice: safe convert to netdev_priv() #part-4 8f15ea4 netdevice: safe convert to netdev_priv() #part-3 4cf1653 netdevice: safe convert to netdev_priv() #part-2 454d7c9 netdevice: safe convert to netdev_priv() #part-1 7a12122 net: Remove unused parameter of xfrm_gen_index() 2378982 net: ifdef struct sock::sk_async_wait_queue 3a95cb9 ALSA: handle SiI1392 HDMI codec in patch_intelhdmi.c e4412cb bnx2: Update version to 1.8.2. 40105c0 bnx2: Reorganize timeout constants. d8026d9 bnx2: Set rx buffer water marks based on MTU. 5ec6d7b bnx2: Restrict WoL support. 1caacec bnx2: Add PCI ID for 5716S. 1dc1c6a tracing/function-return-tracer: call prepare_ftrace_return by registers 62d59d1 tracing/function-return-tracer: make the function return tracer lockless 94b80ff ftrace: rename trace_unlikely.c file 80e5ea4 ftrace: add tracer called branch 9f029e8 ftrace: rename unlikely iter_ctrl to branch 2ed84ee trace: rename unlikely profiler to branch profiler 8652cb4 x86: warn of incorrect cpu_khz on AMD systems 8665596 x86: fix up the new IRQ code for older versions of gas 68f96c0 tracing/fastboot: fix perlcritic warning c415b3d x86: disable IRQs before doing anything on nmi_shootdown_cpus() bb8dd27 x86: make nmi_shootdown_cpus() available on !SMP and !X86_LOCAL_APIC 2ddded2 x86: move nmi_shootdown_cpus() to reboot.c c370e5e x86 kdump: make nmi_shootdown_cpus() non-static 8e29478 x86 kdump: make kdump_nmi_callback() a function ptr on crash_nmi_callback() d1e7b91 x86 kdump: create kdump_nmi_shootdown_cpus() b2bbe71 x86 kdump: move crashing_cpu assignment to nmi_shootdown_cpus() a7d4182 x86 kdump: extract kdump-specific code from crash_nmi_callback() fd64138 ALSA: include/sound/info.h - coding style changed 972d4c5 ALSA: hdsp/hdspm: remove card->id from rawmidi device name c2eb9c4 ALSA: when card identification is changed, change also /proc/asound symlink 9fb6198 ALSA: add /sys/class/sound/card#/id (r/w) and card#/number (r/o) files eb42c75 Merge branch 'linus' into x86/crashdump 11843ee ALSA: powermac - Rename mic-analog loopback mixer element 68d119f tracing: finetune branch-tracer output 2b7d039 tracing: branch tracer, fix vdso crash fb0ef64 ASoC: DaVinci: Audio: Fix swapping of channels at start of stereo playback 9cc3c49 x86: ia32_signal: remove unnecessary padding 4a61204 x86: signal_32: introduce retcode and rt_retcode f88c4ae tracing: branch tracer, tweak output 52f232c tracing: likely/unlikely branch annotation tracer 1f0d69a tracing: profile likely and unlikely annotations cb9382e Merge branches 'tracing/fastboot', 'tracing/function-return-tracer' and 'tracing/ring-buffer' into tracing/core 642edba ring-buffer: fix deadlock from reader_lock in read_start 92a77aa security: remove broken and useless declarations a7d26f8 ALSA: Release v1.0.18a 7423907 tracing/fastboot: Use the ring-buffer timestamp for initcall entries 3f5ec13 tracing/fastboot: move boot tracer structs and funcs into their own header. 60a011c Merge branch 'tracing/function-return-tracer' into tracing/fastboot d06bbd6 Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core 90d0be2 Merge branch 'topic/fix/hda' into topic/hda e42ea98 net: Cleanup of neighbour code 7a9546e net: ib_net pointer should depends on CONFIG_NET_NS 8f424b5 net: Introduce read_pnet() and write_pnet() helpers 9eca0a4 dccp: Resolve dependencies of features on choice of CCID d90ebcb dccp: Query supported CCIDs e8ef967 dccp: Registration routines for changing feature values f74e91b dccp: Limit feature negotiation to connection setup phase 6bb3ce2 net: remove struct dst_entry::entry_size 9b739ba net: remove struct neigh_table::pde 14d7ca5 x86: attempt reboot via port CF9 if we have standard PCI ports 7e452ba Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 3ac38c3 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 939b787 x86: 64 bits: shrink and align IRQ stubs 486936c Merge branch 'linux-2.6' into next b7c6244 x86: 32 bits: shrink and align IRQ stubs 4687518 x86: 32 bit: interrupt stub consistency with 64 bit 3e89c7b ring-buffer: clean up warn ons 9ee670f x86/doc: spelling fix for grub c280ea5 x86: fix documentation typo in arch/x86/Kconfig a4c5279 x86, 64-bit: update address space documentation 9757d55 ath9k: Fix compilation failure when RFKILL is enabled f83c9d0 ring-buffer: add reader lock a98f8fd x86: apic reset counter on shutdown d3ec5ca x86: call machine_shutdown and stop all CPUs in native_machine_halt 50ee917 sched/rt: removed unneeded defintion 934352f sched: add hierarchical accounting to cpu accounting controller 19b3e96 tracing: function return tracer, build fix 0667467 Currently SELinux jumps through some ugly hoops to not audit a capbility a2f2945 The oomkiller calculations make decisions based on capabilities. Since 0611216 Add a new capable interface that will be used by systems that use audit to 637d32d Capabilities: BUG when an invalid capability is requested e68b75a When the capset syscall is used it is not possible for audit to record the 3fc689e Any time fcaps or a setuid app under SECURE_NOROOT is used to result in a 851f7ff This patch will print cap_permitted and cap_inheritable data in the PATH c0b0044 This patch add a generic cpu endian caps structure and externally available 9d36be7 Document the order of arguments for cap_issubset. It's not instantly clear ff9b48c sched: include group statistics in /proc/sched_debug a3d732f x86, UV: fix redundant creation of sgi_uv 867f7fb tracing, x86: function return tracer, fix assembly constraints 8587b33f [PATCH] nvram - convert PRINT_PROC to seq_file 971ddcf [PATCH] nvram - CodingStyle f1c4be5 tracing, x86: clean up FUNCTION_RET_TRACER Kconfig 15e6cb3 tracing: add a tracer to catch execution time of kernel functions caf4b32 tracing, x86: add low level support for ftrace return tracing d844222 Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core f536aaf ring-buffer: replace most bug ons with warn on and disable buffer 5aa1ba6 ftrace: prevent ftrace_special from recursion e0cb4eb Merge branch 'tracing/urgent' into tracing/ftrace ae1e913 sched: rename SCHED_NO_NO_OMIT_FRAME_POINTER => SCHED_OMIT_FRAME_POINTER eb37b41 pktgen: add full reset functionality 9b1582d Phonet: use net_device built-in stats for GPRS fb28ad3 net: struct device - replace bus_id with dev_name(), dev_set_name() 2377989 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 c483246 rtl8187: Change TX power settings b2e53b3 orinoco: Move sources to a subdirectory 5166ccd cfg80211: Add kdoc for struct regulatory_request b219cee cfg80211: make use of reg macros on REG_RULE 9c96477 cfg80211: Add regulatory domain intersection capability d71aaf6 cfg80211: a reg rule is invalid if freq diff is 0 fc6971d mac80211_hwsim: Add support for client PS mode fbf1892 mac80211: Allow AP mode to be enabled d61272c mac80211: fix basic rates setting from association response ab1ef98 mac80211_hwsim: Make sure beacon_timer gets deleted 3188848 nl80211: Add TX queue parameter configuration 1e898ff mac80211_hwsim: Debug info for TX queue parameters 90c97a0 nl80211: Add basic rate configuration for AP mode fe63bfa mac80211_hwsim: Debug info for BSS config changes 95f8e38 b43legacy: reindent misleading statement ccf5dd1 libertas_tf: fix skb tail pointer 9483407 p54: initialize all deprecated fields c8034c4 p54: don't report known but unhandled EEPROM codes as unknown 61780ee iwlwifi: do not call statistics from rfkill eb48dca iwlwifi: iwl-agn-rs: initialize rs with valid antenna 6a63578 iwlwifi: rename double inclusion protection name in iwl-commands.h 5b9f8cd iwlwifi: rename generic iwlagn functions that had a HW specific name 60294de iwlwifi: fix priv->iw_mode setting when multiple vif are configured eb4779c iwlwifi: trivial removal of some 4965 remaining from iwl-agn-rs.h 9c80c50 iwlwifi: reorganize flow handler bitology c7ab5ef b43: implement short slot and basic rate handling bd81525 wireless: implement basic rate helper function 743b97c rt2x00: Remove debugfs CSR access wrappers f161796 ath9k: correct warning about unintialized variable 'tid' 74508b2 rtl8187: Reduce channel switch delay 94d4fe9 rtl8187: Remove primitive write delays 946d1c2 rtl8187: Remove msleep calls after calls to rtl8225_write a3d67bc rtl8187: Remove CCK delays 35cc988 rtl8187: Remove OFDM delays 2f20596 rtl8187: Remove large delays 9344e86 rt2x00: Release rt2x00 2.2.2 3514a44 rt2x00: Improve interface_modes initialization c3fd7b4 rt2x00: Remove ieee80211_bss_conf from rt2x00_intf e4ea1c4 rt2x00: Optimize configuration handling 3f64b43 ath5k: update keycache to support TKIP handling 9ad9a26 ath5k: enable hardware encryption for WEP 2a941ec wireless: fix two bad print_ssid conversions 8469cde mac80211: Add a new event in ieee80211_ampdu_mlme_action dca3edb ath9k: Remove internal RX A-MPDU processing 7f95903 ath9k: Clear HT info on starting the driver ccc75c5 ath9k: Remove ath_tx_aggr_resp() 05a1e2d ath9k: Enable interrupts at the proper place 154662a ath9k: Remove unnecessary TSF reset 9c84b79 ath9k: Streamline attach/detach 50fdae2 ath9k: Remove unused function ath_get_currentCountry() f1dc560 ath9k: Refactor hw.c 5640b08 ath9k: Revamp VAP management a37c2c7 ath9k: Use bitfields to store tid's state in a single variable 102e057 ath9k: Ensure ath_node is not NULL when updating tx chainmask 43453b3 ath9k: Remove SM Power Save as it is not supported now 528f0c6 ath9k: Revamp transmit control block c517016 ath9k: Simplify node attach/detach routines b5aa9bf ath9k: Node cleanup 17683c6 ath5k: fix keytable type buglet in ath5k_hw_reset_key f07a6c4 ath5k: Update PCU code 2c70600 don't use net/ieee80211.h 9b1fbae iwl3945: remove bogus comment 41bb73e mac80211: remove SSID driver code b23f99b adm8211: remove SSID code 71c11fb b43/legacy: remove SSID code 4607816 iwlwifi: remove unused essid variable a57a59f iwlwifi: remove implicit direct scan 430cfe9 iwl3945: remove dead code e5704bf ath9k: remove useless NULL initialisers 2df7816 wireless: fix a few sparse warnings 1239cd5 wireless: move mesh config length constant 97c8b01 mac80211: print reason code for deauth/dissoc frames db4186c p54: eliminate warning for uninitialized variable 'tim_len' e5ea92a p54: AP & Ad-hoc testing 94585b0 p54: put broadcast frames into the right queues 9e7f3f8 p54: more definitions form lmac_longbow.h and pda.h 9a8675d p54: introduce new names for device firmwares 4ceb7b6 netdevice libertas: Fix directly reference of netdev->priv f43aa02 ALSA: hda - Fix another cache list management b402dff ASoC: Add Right-Justified mode and Codec clock master to davinci-i2s 53599bb ASoC: s3c24xx 8 bit sound fix ba21ebb x86: apic - use pr_ macros for logging 4e03043 x86: apic - calibrate_APIC_clock remove redundant irq-enable-disable 4ecd33d Merge commit 'v2.6.28-rc4' into x86/apic f4166c5 x86, bts: DS and BTS initialization 19f47c6 x86: x86_32 has its own irq_regs definition 87135d9 Merge commit 'v2.6.28-rc4' into x86/cleanups 4fcc50a x86: clean up vget_cycles() 39c9aed SELinux: Use unknown perm handling to handle unknown netlink msg types cb9e35d x86: clean up rdtsc_barrier() use 895e031 Merge branch 'linus' into x86/cleanups 15002fa x86: signal: cosmetic unification of setup_sigcontext() a309720 ftrace: display start of CPU buffer in trace output 769c48e ftrace: force pass of preemptoff selftest 7d5222a ftrace: align __mcount_loc sections c76f069 ftrace: remove trace array ctrl bbf5b1a ftrace: remove ctrl_update method 49833fc ftrace: enable trace_printk by default 4519317 ftrace: irqsoff tracer incorrect reset e168e05 ftrace: fix sched_switch API 75f5c47 ftrace: fix boot trace sched startup 0183fb1 ftrace: fix set_ftrace_filter a6b0786 Merge branches 'tracing/ftrace', 'tracing/fastboot', 'tracing/nmisafe' and 'tracing/urgent' into tracing/core f574179 tipc: trivial endian annotation in debug statement f400923 pkt_sched: Control group classifier 505d4f7 net: Guaranetee the proper ordering of the loopback device. v2 5d6d480 net: fib_rules ordering fixes. 3d8160b Revert "net: Guaranetee the proper ordering of the loopback device." 0edb945 ALSA: hda - Fix probe errors on Dell Studio Desktop 30cde0a ALSA: hda - Fix ALC260 hp3013 master switch 26df91c ASoC: TLV320AIC23B Support more sample rates 167c627 Merge branch 'davem-next' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 6d21cd6 sched: clean up SCHED_CPUMASK_ALLOC 258594a Merge branch 'sched/urgent' into sched/core f66fced ALSA: Document debug macros a827206 fmvj18x_cs: write interrupt ack bit for lan and modem to work simultaneously. 945eed0 ALSA: Evaluate condition in snd_BUG_ON() in non-debugging case 0774023 Merge branch 'topic/fix/hda' into topic/hda 63cf123 Merge branch 'topic/fix/misc' into topic/misc 5c7f033 phonet: sparse annotations of protocol, remove forward declaration ca62059 ipvs: oldlen, newlen should be be16, not be32 76acfdb net: mark flow_cache_cpu_prepare() as __init 9eeda9a Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 ea2da6e ALSA: hda - Fix broken hash chain allocation b910d9a ALSA: hda - Add max allocation check in array allocator c217429 ALSA: hda - Add missing NULL check in amp hash allocation a87d091 x86, sched: enable wchan config menu item on 64-bit 6a60dd1 ftrace: split out hardirq ftrace code into own header cf7f869 sched, lockdep: inline double_unlock_balance() 6415483 ALSA: hda - Add lifebook model for Realtek ALC269 6ce4a3b ALSA: hda - Make codec-probing more robust 33fa35e ALSA: hda - simplify hda_bus ops callbacks e18c94d ALSA: ASoC: TWL4030 codec - fix 256*Fs clock fd51b2d x86: update CONFIG_NUMA description 90080bf sched, documentation: update scheduler header file paths 8735b7d x86: signal_64: make setup_sigcontext() similar ee7d523 x86: signal_64: setup fpstate in setup_sigcontext() 99ea1b9 x86: ia32_signal: do save_i387_xstate_ia32 at get_sigframe() 4b33669 x86: signal_32: do save_i387_xstate() at get_sigframe() 3e03fb7 ring-buffer: convert to raw spinlocks 9036990 ftrace: restructure tracing start/stop infrastructure 0f04870 ftrace: soft tracing stop and start 60a7ecf ftrace: add quick function trace stop 79c81d2 Merge branch 'tracing/fastboot' into tracing/ftrace fd9abb3 SMSC LAN911x and LAN921x vendor driver c5916cf ehea: Fix some whitespace issues 739bb23 sfc: Do not reset when hardware monitor detects a fault 3e133c4 sfc: Use lm87 and lm90 drivers for board temperature/power monitoring f415072 sfc: Expose flash region storing boot code as MTD 0a95f56 sfc: Clean up non-volatile memory partitioning 2883f55 sfc: Correct address of gPXE boot configuration in EEPROM fd989c8 bonding: alternate agg selection policies for 802.3ad 6146b1a bonding: Fix ALB mode to balance traffic on VLANs 305d552 bonding: send IPv6 neighbor advertisement on failover 7d9d1f2 sgi-xp: support getting the address of a partition's reserved page 31de5ec sgi-xp: define xp_partition_id and xp_region_size 2525789 sgi-xp: create activate and notify gru message queues 6c1c325 sgi-xp: define xp_expand_memprotect() and xp_restrict_memprotect() 23c3570 x86: uv: Add UV reserved page bios call e8929c8 x86: uv: Add UV memory protection bios call 64ccf2f x86: uv: Add UV watchlist bios call 61c9eaf pkt_sched: Fix qdisc len in qdisc_peek_dequeued() 0a36b34 net: Don't leak packets when a netns is going down ae33bc4 net: Guaranetee the proper ordering of the loopback device. d0c082c netns: Delete virtual interfaces during namespace cleanup 1c1b777 powerpc: Use the new byteorder headers 1f29fae file capabilities: add no_file_caps switch (v4) e21e696 Merge branch 'master' into next 2f99db2 selinux: recognize netlink messages for 'ip addrlabel' 5b4d218 powerpc/boot: Allocate more memory for dtb 7d4320f powerpc: Hugetlb pgtable cache access cleanup d4ad304 powerpc/ps3: Fix memory leak in device init 3cc6987 powerpc: Eliminate unused do_gtod variable 597bc5c powerpc: Improve resolution of VDSO clock_gettime c73049f powerpc: Remove map_/unmap_single() from dma_mapping_ops 7eef440 powerpc/pci: Cosmetic cleanups of pci-common.c fd6852c powerpc/pci: Fix various pseries PCI hotplug issues b5ae5f9 powerpc/pci: Make pcibios_allocate_bus_resources more robust 57b066f powerpc/eeh: Make EEH device add/remove more robust 8b8da35 powerpc/pci: Split pcibios_fixup_bus() into bus setup and device setup 8dc840f ASoC: Add new parameter to s3c24xx_pcm_enqueue ea91394 ASoC: Remove core version number 74e7220 ASoC: Add Palm/PXA27x unified ASoC audio driver 838e8bb x86: Implement change_bit with immediate operand as "lock xorb" 6834d7c ALSA: ice1724 - Re-fix IRQ mask initialization c238b4f ALSA: hda - Split ALC268 acer model ab56ced powerpc/pci: Remove pcibios_do_bus_setup() 5328032 powerpc/pci: Use common PHB resource hookup b0494bc powerpc/pci: Cleanup debug printk's 25d6e2d powerpc: Update 64bit memcpy() using CPU_FTR_UNALIGNED_LD_STD 4ec577a powerpc: Add new CPU feature: CPU_FTR_UNALIGNED_LD_STD 4090019 powerpc: Update page-in counter for CMM 1ef8014 powerpc/pseries: Fix getting the server number size 691de57 powerpc: Remove device_type = "rtc" properties in .dts files a6a8e00 powerpc: Silence software timebase sync 1fd0f52 powerpc: Fix domain numbers in /proc on 64-bit 270acef net: sk_free_datagram() should use sk_mem_reclaim_partial() d99a7bd dccp: Cleanup routines for feature negotiation ac75773 dccp: Per-socket initialisation of feature negotiation 61e6473 dccp: List management for new feature negotiation 7d43d1a dccp: Implement lookup table for feature-negotiation information bd012f2 dccp: Basic data structure for feature negotiation 13c9474 ALSA: hda - Add ASUS V1Sn support beb0b9c ALSA: hda - Fix unused function in patch_intelhdmi.c 9150487 ALSA: hda - Intel HDMI audio support d5f6423 net: #ifdef ->sk_security fd8cd7e x86: vmware: look for DMI string in the product serial key 41d9f9c SELinux: hold tasklist_lock and siglock while waking wait_chldexit 0ee4663 ALSA: ASoC - Remove unnecessary inclusion of linux/version.h 3865675 ALSA: ASoC codec: remove unused #include bfc5c26 ALSA: hda - Don't create empty PCM streams 79a9d46 tracing/ftrace: fix a bug when switch current tracer to sched tracer efade6e tracing/ftrace: types and naming corrections for sched tracer d7ad44b tracing/fastboot: use sched switch tracer from boot tracer e55f605c tracing/ftrace: remove unused code in sched_switch tracer 07695fa tracing/ftrace: fix a race condition in sched_switch tracer 71566a0 tracing/fastboot: Enable boot tracing only during initcalls 6e3354c netfilter: nf_nat: remove warn_if_extra_mangle 249b620 netfilter: netns ebtables: br_nf_pre_routing_finish() fixup b71b30a netfilter: netns ebtables: ebtable_nat in netns 4aad109 netfilter: netns ebtables: ebtable_filter in netns 8157e6d netfilter: netns ebtables: ebtable_broute in netns dbcdf85 netfilter: netns ebtables: more cleanup during ebt_unregister_table() 6beceee netfilter: netns ebtables: part 2 511061e netfilter: netns ebtables: part 1 19223f2 netfilter: arptable_filter: merge forward hook d4ec52b netfilter: netns-aware ipt_addrtype 5f7340e netfilter: xt_NFLOG: don't call nf_log_packet in NFLOG module. 3299b4d ftrace: sysctl typo 69f698a ftrace: sysrq-z to dump the buffers 6cf87ef x86 debug: mark early_printk.o as notrace faa2f98 sched: add sanity check in partition_sched_domains() a17e226 sched: remove redundant call to unregister_sched_domain_sysctl() 0a0db8f sched debug: remove NULL checking in print_cfs/rt_rq() eefd796 sched debug: remove sd_level_to_string() b2a866f ftrace: function tracer with irqs disabled 182e9f5 ftrace: insert in the ftrace_preempt_disable()/enable() functions 8f0a056 ftrace: introduce ftrace_preempt_disable()/enable() 124ffe1 x86: signal_64: remove unused code in __setup_rt_frame() b91f080 ALSA: hda - Fix possible NULL dereference dce908e ALSA: SOC: Fix setting codec register with debugfs filesystem merge error d2ad3ca net/: Kill now superfluous ->last_rx stores. 265eb67 netem: eliminate unneeded return values babcda7 drivers/net: Kill now superfluous ->last_rx stores. ab29109 net: remove two duplicated #include 6d9f239 net: '&' redux 6cf3f41 bonding, net: Move last_rx update into bonding recv logic 24f8b23 net: increase receive packet quantum b9ac998 printk: ipv4 address digits printed in reverse order 4814893 IPVS: Remove supports_ipv6 scheduler flag 4454837 IPVS: Add IPv6 support to LBLC/LBLCR schedulers fa228b3 tg3: Update version to 3.95 772638b broadcom: Add support for BCM50610 042a75b broadcom: Refine expansion register access routine 5e0c676 broadcom: Add flow control support fcb389d tg3: 5785 enhancements 9c61d6b tg3: Refine phylib support 0a459aa tg3: Allow WOL for phylib controlled Broadcom phys 05ac4cb tg3: Refine power management and WOL code df59c94 tg3: Move phylib report to end of tg3_init_one b2b98d4 tg3: Do not enable APE on bcm5700 bcb37f6 tg3: Reclaim TG3_FLG3_5761_5784_AX_FIXES flag 3f00789 tg3: Preserve LAA when device control is released b2aee15 tg3: Preserve DASH connectivity when WOL enabled 6353239 tg3: Use pci_ioremap_bar() c88e668 tg3: Add 5761S support 6bdbfe9 x86: VMware: Fix vmware_get_tsc code 4ef0ef1 ALSA: hda - Fix missing ADC list in ALC260 auto-probe mode 26f5df2 ALSA: hda - Add ALC299 fujitsu preset model 67305eb pkt_sched: sch_generic: Kfree gso_skb in qdisc_reset() 5799de0 net: clean up net/ipv4/tcp_ipv4.c 539afed net: clean up net/ipv4/devinet.c f4cca7f net: clean up net/ipv4/pararp.c fd3f8c4 net: clean up net/ipv4/ip_fragment.c tcp_timer.c ip_input.c e113a74 sched/rt: small optimization to update_curr_rt() 7e5e26a ftrace: fix hardirq header for non ftrace archs 7a895f5 Merge branches 'tracing/ftrace', 'tracing/markers', 'tracing/mmiotrace', 'tracing/nmisafe', 'tracing/tracepoints' and 'tracing/urgent' into tracing/core 127cafb tracepoint: introduce *_noupdate APIs. 19dba33 tracepoint: simplification for tracepoints using RCU 3555105 x86: add memory hotremove config option c354e12 net: clean up net/ipv4/ipmr.c 09cb105 net: clean up net/ipv4/ip_sockglue.c tcp_output.c a7e9ff7 net: clean up net/ipv4/igmp.c 6ed2533 net: clean up net/ipv4/fib_frontend.c fib_hash.c ip_gre.c 5a5f3a8 net: clean up net/ipv4/ipip.c raw.c tcp.c tcp_minisocks.c tcp_yeah.c xfrm4_policy.c d931910 net: clean up net/ipv4/ah4.c esp4.c fib_semantics.c inet_connection_sock.c inetpeer.c ip_output.c 5b9a0e1 x86: nmi - nmi_watchdog boot param docs cleanup d9e5407 ftrace: ftrace_dump_on_oops=[tracer] 3660946 Merge commit 'v2.6.28-rc3' into tracing/ftrace 8bb8c43 sched, ftrace: trace sched.c db59350 Merge commit 'v2.6.28-rc3' into sched/core e0db4a7 sunrpc: Fix build warning due to typo in %pI4 format changes. 20971a0 IPVS: Add IPv6 support to SH and DH schedulers 2a6cf35 Merge branch 'davem-next' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 3f8b4b1 bonding: update docs to correctly reflect arp_ip_target behavior 237f3e1 smc91x: add __init markings to smc_drv_probe() dccd547 forcdeth: increase max_interrupt_work 0befdb3 ixgbe: add device support for 82598AT (copper 10GbE) adapters e053b62 atlx: timer cleanup 02e7173 atlx: use embedded net_device_stats 8ba25da sch_netem: Replace ->requeue() method with open code 0220146 sch_netem: Remove classful functionality ae27e98 [TCP] CUBIC v2.3 e27dfce af_unix: clean up net/unix/af_unix.c garbage.c sysctl_net_unix.c c37ccc0 udp: add a missing smp_wmb() in udp_lib_get_port() 7e3a42a xfrm6: handling fragment 395628e x86: Skip verification by the watchdog for TSC clocksource. eca0cd0 x86: Add a synthetic TSC_RELIABLE feature bit. 88b094f x86: Hypervisor detection and get tsc_freq from hypervisor 49ab56a x86: add X86_FEATURE_HYPERVISOR feature bit 4074ea2 ALSA: ice1724 - Fix IRQ register initialization e25cf4a mac80211: fix two kernel-doc warnings 4c24429 ath9k: use ETH_P_PAE 9371dd6 ath9k: remove useless conditional 4fb3078 orinoco: cache downloadable firmware image in memory for use during resume 0df6cbb orinoco: reload firmware on resume 4c674c6 ath5k: Update interrupt masking code 84fa4f4 wireless regulatory: move ignore_request 2083c49 wireless: clean up regulatory ignore_request function be3d481 wireless: remove struct regdom hinting d2372b3 wireless: make regdom passing semantics simpler 7dddaf1 iwlwifi: Update reclaim flag 9fe1c50 iwl3945: iwl3945_mac_get_tsf() should not return zero a96a27f iwlwifi: run through spell checker 127901a iwlwifi: refactor tx byte count table usage 951891c iwlwifi: clear scanning bits upon failure 60d3221 iwlwifi: convert correctly rate_n_flags to PLCP index for mimo3 packets f69f42a iwlwifi: calibration command namespace renaming 0ef2ca6 iwlwifi: parametrize eeprom versions ed7fafe iwlwifi: don't update TFD free counter for invalid station 3fd07a1 iwlwifi: refactor TX response flow 8b30b1f mac80211: Re-enable aggregation 4393dce mac80211: allow all interfaces types to handle RX action frames f3e63db wireless: remove write-only 'granted' variable a4510bf ath9k: Check if the STA supports HT when initializing rate control 075cbc9 mac80211: Change WARN_ON to WARN_ON_ONCE 5c020dc ath9k: Allow user to change tx power when asked f97e400 ath9k: enable RX interrupt mitigation b139a10 ath9k: remove pointless sc_txintrperiod and spin_lock_bh on tx prepare d9d2925 mac80211: make use of regulatory tx power settings on change of tx power e2ef12d mac80211: check return value of dev_alloc_skb() in ieee80211_sta_join_ibss(). 7211801 wireless: avoid some net/ieee80211.h vs. linux/ieee80211.h conflicts 9387b7c wireless: use individual buffers for printing ssid values 2819f8a wireless: escape_ssid should handle non-printables c5d3dce wireless: remove NETWORK_EMPTY_ESSID flag 7e272fc wireless: consolidate on a single escape_essid implementation ddf4ac5 mac80211: insert AP sta entry after filling it cfa3fa4 Fix debugfs_create_*'s error checking method for wireless/rt2x00/ 9b24001 Fix debugfs_create_bool's error checking method for wireless/iwlwifi/ ac9440a wireless: fix EU check f6037d0 wireless: get rid of pointless request list f3b407f wireless: remove cfg80211_reg_mutex cf03268 wireless: don't publish __regulatory_hint e37d4df mac80211: fix a few typos in mac80211 kernel doc 5588751 rt2x00: reduce checkpatch.pl errors 0bbac08 ath5k: reduce checkpatch.pl errors 93da9cc Add nl80211 commands to get and set o11s mesh networking parameters 4a68ec5 mac80211: inform userspace of probe/auth/assoc timeout 8216bfe hostap: Fix sparse warnings 50fb2e4 mac80211: remove rate_control_clear 65a0667 iwlwifi: protect headers from double inclusion f4a8cd9 minstrel: improve performance for non-MRR drivers 0a9542e nl80211: fix monitor flags 27df605 p54: integrate parts of lmac_longbow.h and other parts of stlc45xx 5e73444 p54: borrow some setup code from stlc45xx b92f30d p54: fix memory management 9de5776f p54: p54: refactor p54_rx_frame_sent 0f1be97 p54: refactor statistic timer code 0fdd7c5 p54: broken out edcf changes b88b15d iwlwifi: tx command must run on same tfd as packet 499b188 iwlwifi: fix TX cmd dma unmapping 76eff18 iwlwifi: unify tx antenna toggling 961ba60 iwlwifi: add iwl_cmd_queue_free for readability 3257e5d iwlwifi: remove host commands structures from iwl_cmd 56e1261 iwlwifi: expand error lookup and align output 4e062f9 iwlwifi: define firmware file name once 4acf074 make ieee80211 invisible 5c7f9b7 ipw2x00: change default policy for auto-associate c12abae p54: implement MRR e6a9854 mac80211/drivers: rewrite the rate control API cb121ba mac80211: add might_sleep to hw_config faf3994 airo: Kill directly reference of netdev->priv b706e65 ath5k: fix mesh point operation 6e0e0bf ath5k: correct ath5k signal quality c49d154 ath9k: correct signal quality report 4fe0657 ath5k/ath9k: correct signal quality f828831 rtl8187: add short slot handling for 8187B 6476107 rtl8187: adapt for deprecated IEEE80211_CONF_SHORT_SLOT_TIME flag da966bc Ath5k: add AP mode 7eb27af p54/rtl8187: fix up the seqno patch ae5eb02 mac80211: rewrite HT handling bda3933 mac80211: move bss_conf into vif 9124b07 mac80211: make retry limits part of hw config 5251818 iwl3945: fix station stuff in RC algorithm d51626d nl80211: export HT capabilities 9477828 mac80211: provide sequence numbers 2e20cc3 p54: Move rx_mtu to struct bootrec_desc 7823657 rfkill: rate-limit rfkill-input workqueue usage (v3) 1767079 rfkill: honour EPO state when resuming a rfkill controller d003922 rfkill: add master_switch_mode and EPO lock to rfkill and rfkill-input 68d2413 rfkill: export global states to rfkill-input cf4b4aa rfkill: use killable locks instead of interruptible e897558 mac80211: introduce hw config change flags 0f4ac38 mac80211: kill hw.conf.antenna_sel_{rx,tx} d9fe60d 802.11: clean up/fix HT support 40333e4 p54: honour bss_info_changed's short slot time settings 5d6924e mac80211: use HWSIM_STA_MAGIC in hwsim_check_sta_magic() and hwsim_set_sta_magic(). 3195c1f iwlwifi: refactor rxon time command 5d664a4 iwlwifi: take a valid antenna upon rate scale init be5d56e iwlwifi: make initial calibration set configurable 1397dce mac80211: remove unused declaration of struct sta_attribute. 7a5158e mac80211: fix short slot handling e87a2fe mac80211: remove max_antenna_gain config d73782f mac80211: clean up ieee80211_hw_config errors 3db5943 mac80211: remove wiphy_to_hw c6a1fa1 mac80211: minor code cleanups 36ff382 mac80211: remove writable debugs mesh parameters 804feeb mac80211: remove aggregation status write support from debugfs b2bcc7b x86: add a synthetic TSC_RELIABLE feature bit 3c3e989 ALSA: hda - Re-add input-source control for Realtek f9e336f ALSA: hda - Unify capture mixer creation in realtek codes 54cbc9a ALSA: hda - Unify capture callbacks in realtek codes d88897e ALSA: hda - Use macros to check array overflow afecd78c Merge branch 'topic/fix/hda' into topic/hda 7b3b6e4 Merge commit 'v2.6.28-rc2' into topic/asoc 04172c0 Merge branch 'topic/fix/asoc' into topic/asoc 5b99e6c ASoC: Add audio support for the Atmel AT91SAM9G20ek board(uing wolfson 8731). 6c74250 ASoC: Merge AT91 and AVR32 support into a single atmel architecture dc06102 ASoC: Add support for Beagleboard 4e20787 ASoC: Add support for Gumstix Overo cc17557 ASoC: Add support for TWL4030 audio codec a376f30 x86: avoid duplicate running of pud_offset and pmd_offset in one_md_table_init() a26a2a2 ftrace: nmi safe code clean ups 9868ee6 kexec/i386: setup kexec page table in C 92be3d6 kexec/i386: allocate page table pages dynamically 31498a0 kexec/i386: remove PAGE_SIZE alignment from relocate_kernel 3685f25 misc: replace NIPQUAD() be85940 fs: replace NIPQUAD() 6377943 drivers: replace NIPQUAD() 21454aa net: replace NIPQUAD() in net/*/ 14d5e83 net: replace NIPQUAD() in net/netfilter/ 673d57e net: replace NIPQUAD() in net/ipv4/ net/ipv6/ cffee38 net: replace NIPQUAD() in net/ipv4/netfilter/ 77be155 pkt_sched: Add peek emulation for non-work-conserving qdiscs. 03c05f0 pkt_sched: Use qdisc->ops->peek() instead of ->dequeue() & ->requeue() 8e3af97 pkt_sched: Add qdisc->ops->peek() implementation. 99c0db2 pkt_sched: sch_generic: Add generic qdisc->ops->peek() implementation. 48a8f51 pkt_sched: Add ->peek() methods for fifo, prio and SFQ qdiscs. 90d841f pkt_sched: sch_generic: Add Qdisc_ops peek() method. cc0fe83 xfrm: remove unused struct xfrm_policy::next d5917a3 xfrm: C99 for xfrm_dev_notifier a1744d3 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 57b4189 ALSA: ASoC - restore removed variable declaration 275f165 pci: use pci_ioremap_bar() in drivers/net 842e08b tc35815: Define more Rx status bits 04ecb07 cxgb3 - enable lro control through ethtool bc79fc8 e100: adapt to the reworked PCI PM 6b1abba The overdue eepro100 removal. 5177b32 skge: adapt skge to use reworked PCI PM b3acf29 ftrace, kbuild: condense recordmcount.pl parameter code e1e302d Merge branch 'linus' into tracing/ftrace c8db3fe udp: Should use spin_lock_bh()/spin_unlock_bh() in udp_lib_unhash() b807c3d ftrace: nmi update statistics 17666f0 ftrace: nmi safe code modification 1cbd8b3 x86: add two missing unwind annotations 8a1c8eb x86, nmi-watchdog: update procfs nmi_watchdog file documentation v2 b062f84 x86: nmi - add sensible names to nmi_watchdog boot param 7a52768 x86: simplify X86_MPPARSE config option 0763722 ALSA: ASoC - Fix a typo in Kconfig 0c235d1 ASoC: Disable automatic volume control in the CS4270 sound driver ca53fb2 ASoC: Use finer grained dependencies in SND_SOC_ALL_CODECS e775f6c ASoC: Do a warm reset after cold when resetting the WM9713 1b340bd ASoC: Add PXA SSP support 8b6a5a3 SELinux: check open perms in dentry_open not inode_permission 219b93f ASoC: Remove DAPM restriction on mixer control name lengths f24368c ASoC: Convert core to use standard debug print macros d45f621 ASoC: Fix handling of DAPM suspend work 12ef193 ASoC: Allow setting codec register with debugfs filesystem 5791775 x86: signal: cosmetic unification of NR_restart_syscall cabf503 x86: signal: cosmetic unification of macros for setup_rt_frame() 96bf84b x86: signal: cosmetic unification of signr_convert() 34f3a81 sched: switch sched_features to seqfile 8cf14e3 net: easy removals of HIPQUAD using %pI4 format 9edb8bb macvlan: add support for ethtool get settings 6b9a106 printk: remove %p6 format specifier, fix up comments 5b095d9 net: replace %p6 with %pI6 4b7a427 net: replace %#p6 format specifier with %pi6 4aa9960 printk: add %I4, %I6, %i4, %i6 format specifiers 96631ed udp: introduce sk_for_each_rcu_safenext() f52b505 udp: udp_get_next() should use spin_unlock_bh() e78a37b ALSA: Fix a typo in Kconfig 9cbbb3a ALSA: Release v1.0.18 eab1722 sched: cleanup for alloc_rt/fair_sched_group() 8203efb udp: calculate udp_mem based on low memory instead of all memory 271b72c udp: RCU handling for Unicast packets. 645ca70 udp: introduce struct udp_table and multiple spinlocks 1b063c3 Merge branch 'topic/fix/hda' into topic/hda d301fc3 ALSA: hda - Fix indentation in hda_local.h b189db5 net: remove NIP6(), NIP6_FMT, NIP6_SEQFMT and final users a20fd0a uwb: use the %pM formatting specifier in eda.c 8c165a8 infiniband: remove IPOIB_GID_RAW_ARG, IPOIB_GID_ARG, IPOIB_GID_FMT fcace2f infiniband: ipoib replace IPOIB_GID_FMT with %p6 8867cd7 infiniband: use %p6 for printing message ids b3020061 vlan: propogate ethtool speed values 3717746 veth: remove unused list bb7bba3 veth: Remove useless veth field fdb46ee net, misc: replace uses of NIP6_FMT with %p6 0c6ce78 net: replace uses of NIP6_FMT with %p6 38ff4fa netfilter: replace uses of NIP6_FMT with %p6 1afa67f misc: replace NIP6_FMT with %p6 format specifier b071195 net: replace all current users of NIP6_SEQFMT with %#p6 689afa7 printk: add %p6 format specifier for IPv6 addresses 3a2dfbe xfrm: Notify changes in UDP encapsulation via netlink 93adcc8 net: don't use INIT_RCU_HEAD def8b4f net: reduce structures when XFRM=n b057efd netlink: constify struct nlattr * arg to parsing functions ad38dab x86: use the new byteorder headers d4f1b10 x86: clean up comments wrt. rd{msr|tsc|pmc} 2011a06 Merge commit 'v2.6.28-rc2' into x86/doc 30604bb x86: break up mtrr_cleanup() into several small functions. 7a9787e Merge commit 'v2.6.28-rc2' into x86/pci-ioapic-boot-irq-quirks 163d4c5 Merge branch 'topic/fix/hda' into topic/hda 34c2535 ALSA: hda - Remove old codec-probe limitation 15ad9a5 Merge branch 'topic/fix/asoc' into topic/asoc 3891845 netns: Coexist with the sysfs limitations v2 7c510e4 net: convert more to %pM e174961 net: convert print_mac to %pM 0c68ae2 mac80211: convert to %pM away from print_mac dd45c9c printk: add %pM format specifier for MAC addresses 1080d70 net: implement emergency route cache rebulds when gc_elasticity is exceeded 69a72a0 x86/uv: update SCIR driver to use the idle_cpu() function 878719e x86: unify appropriate bits from dumpstack_32 and dumpstack_64 7d5a78c x86, NMI watchdog: disable NMIs on LVT0 in case NMI watchdog is not working 6f290b4 x86, NMI watchdog: add support to enable and disable IOAPIC NMI b43d196 x86: corruption-check: some post-move cleanups 304e629 x86: corruption check: run the corruption checks from a work queue 6784f7d x86: corruption check: move the corruption checks into their own file 04d2aac x86: corruption-check: fix some style issues 944ac42 ftrace: ftrace dump on oops control c63dfef x86: remove dead IRQBALANCE code fd4a203 x86: signal_64.c: get_stack() doesn't need entire regs 709110b x86: signal: cosmetic unification of restore_sigcontext() fd3fdf1 trace: add the MMIO-tracer to the tracer menu, cleanup 5d9881e markers: break the redundant loop in kernel/marker.c 4de6274 markers: let marker_table be close to its comments 505e371 markers: remove exported symbol marker_probe_cb_noarg() 0eec481 markers: simplify marker_set_format() 7f1baa0 x86/uv: provide a System Activity Indicator driver 5292ae1 Merge commit 'v2.6.28-rc2' into x86/uv f4a2a0d ftrace: add a script to produce a hierarchical view of a function trace 8479d94 x86, signals: remove duplicated register setup code in ia32 signal delivery 4fc85e4 Merge branch 'topic/misc-next' into topic/misc 911fc25 Merge branch 'topic/asoc-next' into topic/asoc 42dc237 Merge branch 'topic/hda-next' into topic/hda 74aeaab ALSA: hda: add support for jack detection on IDT codecs. 50a9f79 ALSA: hda: add snd_hda_get_jack* functions a53ccab ALSA: jack: lineout support to jack abstraction layer 282cd76 ALSA: hda: dynamic jack id bbaf5e9 ALSA: Add hrtimer backend for ALSA timer interface 63fb708 x86: change OPTIMIZE_INLINING help to say enabling makes smaller kernels 67679b1 ALSA: emu10k1: fix coding style for emu10k1_main.c 888dcb7 ALSA: aoa: clean up file names 871d377 i386, dumpstack: unify die() e06ca43 i386, dumpstack: use oops_begin/oops_end in die_nmi e4955cf i386, dumpstack: use x86_64's method to account die_nest_count 10b14cb x86, dumpstack: always call oops_exit from oops_end 0ed7a49 x86_64, dumpstack: move kexec_crash from __die to oops_end 874d93d x86, dumpstack: let signr=0 signal no do_exit b4b8f87 i386, dumpstack: move crash_kexec before bust_spinlocks(0) in oops_end 9e89981 x86, mm: enable GBPAGES option by default b0f2098 x86, uv: use consistent names for region size and conherence id on x86 and ia64 718a259 ALSA: emu10k1: fix faulty commit 18c71092 18c7109 ALSA: emu10k1: fix device names for Live!/Audigy1/2/4/E-mu 1083206 ALSA: ice1724 - Fix TX IRQ lockup c872e8c ALSA: Enable SPDIF output on ALC655 96c7d47 ALSA: pcsp - Fix locking messes in snd-pcsp ebaa047 ALSA: hda - Release jack instance for dynamic reconfigure dd125b2 Merge branch 'topic/hda-reconfig' into topic/hda-next 76a4d10 ALSA: Print function symbol in the error messages 6b93311 ALSA: ASoC: Remove snd_soc_dapm_connect_input() 8ae6a55 ALSA: ASoC: Convert wm8900 to a new-style i2c driver 17be552 ALSA: ASoC: Convert wm8580 to a new-style i2c driver 45a6ac1 ALSA: hda: add support for jack detection on IDT/Sigmatel 1e1be43 ALSA: hda - Add hints for reconfig 11aeff0 ALSA: hda - Add init_verbs entries d7ffba1 ALSA: hda - Add sysfs entries to hwdep devices 6c1f45e ALSA: hda - Add codec reconfiguration feature d13bd41 ALSA: hda - Manage kcontrol lists f44ac83 ALSA: hda - Allocate name string of each codec 603c401 ALSA: hda - Use generic array helpers b2e1859 ALSA: hda - Add generic arrays 176d533 ALSA: hda - Add infrastructure for dynamic stream allocation 41b9eb2 x86, pci: introduce config option for pci reroute quirks (was: [PATCH 0/3] Boot IRQ quirks for Broadcom and AMD/ATI) 3e370b2 Merge branch 'linus' into x86/pci-ioapic-boot-irq-quirks 88d1dce PCI quirks: call boot IRQ quirks at end of device init and during resume 542622d PCI quirks: disable AMD/ATI legacy boot interrupt generation 7725118 PCI quirks: add quirk to disable boot interrupt generation on broadcom HT1000 dbbcfb2 Merge branch 'linus' into x86/pci-ioapic-boot-irq-quirks b0356cd pci, acpi: reroute PCI interrupt to legacy boot interrupt equivalent, warning fix 33be833 x86: boot IRQ quirks and rerouting, fix e1d3a90 pci, acpi: reroute PCI interrupt to legacy boot interrupt equivalent 426b3b8 pci: add quirk to disable boot interrupt generation on intel 6300ESB 9197979 x86, pci: introduce pci=ioapicreroute kernel cmdline option a9322f6 x86, pci: introduce pci=noioapicquirk kernel cmdline option 747ada3 pci: add PCI IDs for devices that need boot irq quirks from 3d44cc3e01ee1b40317f79ed54324e25c4f848df (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 3c92ec8ae91ecf59d88c798301833d7cf83f2179 Merge: c4c9f0183b7c4e97836e8fecbb67898b06c47e78 ca9153a3a2a7556d091dfe080e42b0e67881fff6 Author: Linus Torvalds Date: Sun Dec 28 16:54:33 2008 -0800 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (144 commits) powerpc/44x: Support 16K/64K base page sizes on 44x powerpc: Force memory size to be a multiple of PAGE_SIZE powerpc/32: Wire up the trampoline code for kdump powerpc/32: Add the ability for a classic ppc kernel to be loaded at 32M powerpc/32: Allow __ioremap on RAM addresses for kdump kernel powerpc/32: Setup OF properties for kdump powerpc/32/kdump: Implement crash_setup_regs() using ppc_save_regs() powerpc: Prepare xmon_save_regs for use with kdump powerpc: Remove default kexec/crash_kernel ops assignments powerpc: Make default kexec/crash_kernel ops implicit powerpc: Setup OF properties for ppc32 kexec powerpc/pseries: Fix cpu hotplug powerpc: Fix KVM build on ppc440 powerpc/cell: add QPACE as a separate Cell platform powerpc/cell: fix build breakage with CONFIG_SPUFS disabled powerpc/mpc5200: fix error paths in PSC UART probe function powerpc/mpc5200: add rts/cts handling in PSC UART driver powerpc/mpc5200: Make PSC UART driver update serial errors counters powerpc/mpc5200: Remove obsolete code from mpc5200 MDIO driver powerpc/mpc5200: Add MDMA/UDMA support to MPC5200 ATA driver ... Fix trivial conflict in drivers/char/Makefile as per Paul's directions commit c4c9f0183b7c4e97836e8fecbb67898b06c47e78 Author: Stephen Rothwell Date: Mon Dec 29 10:46:13 2008 +1100 net: ehea NAPI interface cleanup fix Commit 908a7a16b852ffd618a9127be8d62432182d81b4 ("net: Remove unused netdev arg from some NAPI interfaces") missed two spots. Signed-off-by: Stephen Rothwell Signed-off-by: Linus Torvalds commit bf66542bef3771a42ad3b1d5dc503c804bc22b33 Author: Stephen Rothwell Date: Wed Dec 3 13:49:23 2008 +1100 cifs: update for new IP4/6 address printing Signed-off-by: Stephen Rothwell Signed-off-by: Linus Torvalds commit d05a788f2279056a518d412c6391322ef11366e0 Merge: 96faec945f39cab38403f60f515bff43660b4dab 54d2f649a67109d877ca143c09cdeba61fe51bcf Author: Linus Torvalds Date: Sun Dec 28 15:15:08 2008 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6: smackfs: check for allocation failures in smk_set_access() commit 96faec945f39cab38403f60f515bff43660b4dab Merge: 2926328554fa740518e2a6585b2cefb01e5f65f3 9bb482476c6c9d1ae033306440c51ceac93ea80c Author: Linus Torvalds Date: Sun Dec 28 15:13:48 2008 -0800 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next * git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next: (25 commits) allow stripping of generated symbols under CONFIG_KALLSYMS_ALL kbuild: strip generated symbols from *.ko kbuild: simplify use of genksyms kernel-doc: check for extra kernel-doc notations kbuild: add headerdep used to detect inclusion cycles in header files kbuild: fix string equality testing in tags.sh kbuild: fix make tags/cscope kbuild: fix make incompatibility kbuild: remove TAR_IGNORE setlocalversion: add git-svn support setlocalversion: print correct subversion revision scripts: improve the decodecode script scripts/package: allow custom options to rpm genksyms: allow to ignore symbol checksum changes genksyms: track symbol checksum changes tags and cscope support really belongs in a shell script kconfig: fix options to check-lxdialog.sh kbuild: gen_init_cpio expands shell variables in file names remove bashisms from scripts/extract-ikconfig kbuild: teach mkmakfile to be silent ... commit 2926328554fa740518e2a6585b2cefb01e5f65f3 Merge: 541ef5cbb8e68189d47272cea52a69abc30259bc 8587b33f4adee4e7614ea7f443346c3b6bb5427a Author: Linus Torvalds Date: Sun Dec 28 15:12:35 2008 -0800 Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-nvram * git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-nvram: [PATCH] nvram - convert PRINT_PROC to seq_file [PATCH] nvram - CodingStyle commit 54d2f649a67109d877ca143c09cdeba61fe51bcf Merge: 541ef5cbb8e68189d47272cea52a69abc30259bc 81ea714bf148fce35e931edcbdfd3aedda20d1dc Author: James Morris Date: Mon Dec 29 09:57:38 2008 +1100 Merge branch 'next' into for-linus commit ca9153a3a2a7556d091dfe080e42b0e67881fff6 Author: Ilya Yanok Date: Thu Dec 11 04:55:41 2008 +0300 powerpc/44x: Support 16K/64K base page sizes on 44x This adds support for 16k and 64k page sizes on PowerPC 44x processors. The PGDIR table is much smaller than a page when using 16k or 64k pages (512 and 32 bytes respectively) so we allocate the PGDIR with kzalloc() instead of __get_free_pages(). One PTE table covers rather a large memory area when using 16k or 64k pages (32MB or 512MB respectively), so we can easily put FIXMAP and PKMAP in the area covered by one PTE table. Signed-off-by: Yuri Tikhonov Signed-off-by: Vladimir Panfilov Signed-off-by: Ilya Yanok Acked-by: Josh Boyer Signed-off-by: Paul Mackerras commit 6ca4f7494bde078b2b730e28e4ea1dc36a772f70 Author: Hollis Blanchard Date: Wed Nov 26 10:19:26 2008 -0600 powerpc: Force memory size to be a multiple of PAGE_SIZE Ensure that total memory size is page-aligned, because otherwise mark_bootmem() gets upset. This error case was triggered by using 64 KiB pages in the kernel while arch/powerpc/boot/4xx.c arbitrarily reduced the amount of memory by 4096 (to work around a chip bug that affects the last 256 bytes of physical memory). Signed-off-by: Hollis Blanchard Signed-off-by: Paul Mackerras commit 541ef5cbb8e68189d47272cea52a69abc30259bc Merge: 0191b625ca5a46206d2fb862bb08f36f2fcb3b31 aa6eeeef78263e9891185c6cfaaf64808460a54a Author: Linus Torvalds Date: Sun Dec 28 12:54:07 2008 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k: m68k: use the new byteorder headers fbcon: Protect free_irq() by MACH_IS_ATARI check fbcon: remove broken mac vbl handler m68k: fix trigraph ignored warning in setox.S macfb annotations and compiler warning fix m68k: mac baboon interrupt enable/disable m68k: machw.h cleanup m68k: Mac via cleanup and commentry m68k: Reinstate mac rtc commit 0191b625ca5a46206d2fb862bb08f36f2fcb3b31 Merge: 54a696bd07c14d3b1192d03ce7269bc59b45209a eb56092fc168bf5af199d47af50c0d84a96db898 Author: Linus Torvalds Date: Sun Dec 28 12:49:40 2008 -0800 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1429 commits) net: Allow dependancies of FDDI & Tokenring to be modular. igb: Fix build warning when DCA is disabled. net: Fix warning fallout from recent NAPI interface changes. gro: Fix potential use after free sfc: If AN is enabled, always read speed/duplex from the AN advertising bits sfc: When disabling the NIC, close the device rather than unregistering it sfc: SFT9001: Add cable diagnostics sfc: Add support for multiple PHY self-tests sfc: Merge top-level functions for self-tests sfc: Clean up PHY mode management in loopback self-test sfc: Fix unreliable link detection in some loopback modes sfc: Generate unique names for per-NIC workqueues 802.3ad: use standard ethhdr instead of ad_header 802.3ad: generalize out mac address initializer 802.3ad: initialize ports LACPDU from const initializer 802.3ad: remove typedef around ad_system 802.3ad: turn ports is_individual into a bool 802.3ad: turn ports is_enabled into a bool 802.3ad: make ntt bool ixgbe: Fix set_ringparam in ixgbe to use the same memory pools. ... Fixed trivial IPv4/6 address printing conflicts in fs/cifs/connect.c due to the conversion to %pI (in this networking merge) and the addition of doing IPv6 addresses (from the earlier merge of CIFS). commit 54a696bd07c14d3b1192d03ce7269bc59b45209a Merge: 1d248b2593e92db6c51ca07235985a95c625a93f 359d67d6ad054ae11ad459665fdfb883aca87782 Author: Linus Torvalds Date: Sun Dec 28 12:37:14 2008 -0800 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 * git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6: (31 commits) [CIFS] Remove redundant test [CIFS] make sure that DFS pathnames are properly formed Remove an already-checked error condition in SendReceiveBlockingLock Streamline SendReceiveBlockingLock: Use "goto out:" in an error condition Streamline SendReceiveBlockingLock: Use "goto out:" in an error condition [CIFS] Streamline SendReceive[2] by using "goto out:" in an error condition Slightly streamline SendReceive[2] Check the return value of cifs_sign_smb[2] [CIFS] Cleanup: Move the check for too large R/W requests [CIFS] Slightly simplify wait_for_free_request(), remove an unnecessary "else" branch Simplify allocate_mid() slightly: Remove some unnecessary "else" branches [CIFS] In SendReceive, move consistency check out of the mutexed region cifs: store password in tcon cifs: have calc_lanman_hash take more granular args cifs: zero out session password before freeing it cifs: fix wait_for_response to time out sleeping processes correctly [CIFS] Can not mount with prefixpath if root directory of share is inaccessible [CIFS] various minor cleanups pointed out by checkpatch script [CIFS] fix typo [CIFS] remove sparse warning ... Fix trivial conflict in fs/cifs/cifs_fs_sb.h due to comment changes for the CIFS_MOUNT_xyz bit definitions between cifs updates and security updates. commit 1d248b2593e92db6c51ca07235985a95c625a93f Merge: 1db2a5c11e495366bff35cf7445d494703f7febe 2a0d8366dde9c66d8f481bee56828b661e5c8bf1 Author: Linus Torvalds Date: Sun Dec 28 12:33:59 2008 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (26 commits) IB/mlx4: Set ownership bit correctly when copying CQEs during CQ resize RDMA/nes: Remove tx_free_list RDMA/cma: Add IPv6 support RDMA/addr: Add support for translating IPv6 addresses mlx4_core: Delete incorrect comment mlx4_core: Add support for multiple completion event vectors IB/iser: Avoid recv buffer exhaustion caused by unexpected PDUs IB/ehca: Remove redundant test of vpage IB/ehca: Replace modulus operations in flush error completion path IB/ipath: Add locking for interrupt use of ipath_pd contexts vs free IB/ipath: Fix spi_pioindex value IB/ipath: Only do 1X workaround on rev1 chips IB/ipath: Don't count IB symbol and link errors unless link is UP IB/ipath: Check return value of dma_map_single() IB/ipath: Fix PSN of send WQEs after an RDMA read resend RDMA/nes: Cleanup warnings RDMA/nes: Add loopback check to make_cm_node() RDMA/nes: Check cqp_avail_reqs is empty after locking the list RDMA/nes: Fix TCP compliance test failures RDMA/nes: Forward packets for a new connection with stale APBVT entry ... commit 1db2a5c11e495366bff35cf7445d494703f7febe Merge: a39b863342b8aba52390092be95db58f6ed56061 cef7125def4dd104769f400c941199614da0aca1 Author: Linus Torvalds Date: Sun Dec 28 12:33:21 2008 -0800 Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 * 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6: (85 commits) [S390] provide documentation for hvc_iucv kernel parameter. [S390] convert ctcm printks to dev_xxx and pr_xxx macros. [S390] convert zfcp printks to pr_xxx macros. [S390] convert vmlogrdr printks to pr_xxx macros. [S390] convert zfcp dumper printks to pr_xxx macros. [S390] convert cpu related printks to pr_xxx macros. [S390] convert qeth printks to dev_xxx and pr_xxx macros. [S390] convert sclp printks to pr_xxx macros. [S390] convert iucv printks to dev_xxx and pr_xxx macros. [S390] convert ap_bus printks to pr_xxx macros. [S390] convert dcssblk and extmem printks messages to pr_xxx macros. [S390] convert monwriter printks to pr_xxx macros. [S390] convert s390 debug feature printks to pr_xxx macros. [S390] convert monreader printks to pr_xxx macros. [S390] convert appldata printks to pr_xxx macros. [S390] convert setup printks to pr_xxx macros. [S390] convert hypfs printks to pr_xxx macros. [S390] convert time printks to pr_xxx macros. [S390] convert cpacf printks to pr_xxx macros. [S390] convert cio printks to pr_xxx macros. ... commit a39b863342b8aba52390092be95db58f6ed56061 Merge: b0f4b285d7ed174804658539129a834270f4829a 4e202284e6ac1695df3eb4a0e549ea78addfb663 Author: Linus Torvalds Date: Sun Dec 28 12:27:58 2008 -0800 Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (31 commits) sched: fix warning in fs/proc/base.c schedstat: consolidate per-task cpu runtime stats sched: use RCU variant of list traversal in for_each_leaf_rt_rq() sched, cpuacct: export percpu cpuacct cgroup stats sched, cpuacct: refactoring cpuusage_read / cpuusage_write sched: optimize update_curr() sched: fix wakeup preemption clock sched: add missing arch_update_cpu_topology() call sched: let arch_update_cpu_topology indicate if topology changed sched: idle_balance() does not call load_balance_newidle() sched: fix sd_parent_degenerate on non-numa smp machine sched: add uid information to sched_debug for CONFIG_USER_SCHED sched: move double_unlock_balance() higher sched: update comment for move_task_off_dead_cpu sched: fix inconsistency when redistribute per-cpu tg->cfs_rq shares sched/rt: removed unneeded defintion sched: add hierarchical accounting to cpu accounting controller sched: include group statistics in /proc/sched_debug sched: rename SCHED_NO_NO_OMIT_FRAME_POINTER => SCHED_OMIT_FRAME_POINTER sched: clean up SCHED_CPUMASK_ALLOC ... commit b0f4b285d7ed174804658539129a834270f4829a Merge: be9c5ae4eeec2e85527e95647348b8ea4eb25128 5250d329e38cdf7580faeb9c53c17d3588d7d19c Author: Linus Torvalds Date: Sun Dec 28 12:21:10 2008 -0800 Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip * 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (241 commits) sched, trace: update trace_sched_wakeup() tracing/ftrace: don't trace on early stage of a secondary cpu boot, v3 Revert "x86: disable X86_PTRACE_BTS" ring-buffer: prevent false positive warning ring-buffer: fix dangling commit race ftrace: enable format arguments checking x86, bts: memory accounting x86, bts: add fork and exit handling ftrace: introduce tracing_reset_online_cpus() helper tracing: fix warnings in kernel/trace/trace_sched_switch.c tracing: fix warning in kernel/trace/trace.c tracing/ring-buffer: remove unused ring_buffer size trace: fix task state printout ftrace: add not to regex on filtering functions trace: better use of stack_trace_enabled for boot up code trace: add a way to enable or disable the stack tracer x86: entry_64 - introduce FTRACE_ frame macro v2 tracing/ftrace: add the printk-msg-only option tracing/ftrace: use preempt_enable_no_resched_notrace in ring_buffer_time_stamp() x86, bts: correctly report invalid bts records ... Fixed up trivial conflict in scripts/recordmcount.pl due to SH bits being already partly merged by the SH merge. commit be9c5ae4eeec2e85527e95647348b8ea4eb25128 Merge: bb26c6c29b7cc9f39e491b074b09f3c284738d36 79a66b96c339626a3e4b226fefc0e45244cfe6ff Author: Linus Torvalds Date: Sun Dec 28 12:07:57 2008 -0800 Merge branch 'x86-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip * 'x86-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (246 commits) x86: traps.c replace #if CONFIG_X86_32 with #ifdef CONFIG_X86_32 x86: PAT: fix address types in track_pfn_vma_new() x86: prioritize the FPU traps for the error code x86: PAT: pfnmap documentation update changes x86: PAT: move track untrack pfnmap stubs to asm-generic x86: PAT: remove follow_pfnmap_pte in favor of follow_phys x86: PAT: modify follow_phys to return phys_addr prot and return value x86: PAT: clarify is_linear_pfn_mapping() interface x86: ia32_signal: remove unnecessary declaration x86: common.c boot_cpu_stack and boot_exception_stacks should be static x86: fix intel x86_64 llc_shared_map/cpu_llc_id anomolies x86: fix warning in arch/x86/kernel/microcode_amd.c x86: ia32.h: remove unused struct sigfram32 and rt_sigframe32 x86: asm-offset_64: use rt_sigframe_ia32 x86: sigframe.h: include headers for dependency x86: traps.c declare functions before they get used x86: PAT: update documentation to cover pgprot and remap_pfn related changes - v3 x86: PAT: add pgprot_writecombine() interface for drivers - v3 x86: PAT: change pgprot_noncached to uc_minus instead of strong uc - v3 x86: PAT: implement track/untrack of pfnmap regions for x86 - v3 ... commit bb26c6c29b7cc9f39e491b074b09f3c284738d36 Merge: e14e61e967f2b3bdf23f05e4ae5b9aa830151a44 cbacc2c7f066a1e01b33b0e27ae5efbf534bc2db Author: Linus Torvalds Date: Sun Dec 28 11:43:54 2008 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6: (105 commits) SELinux: don't check permissions for kernel mounts security: pass mount flags to security_sb_kern_mount() SELinux: correctly detect proc filesystems of the form "proc/foo" Audit: Log TIOCSTI user namespaces: document CFS behavior user namespaces: require cap_set{ug}id for CLONE_NEWUSER user namespaces: let user_ns be cloned with fairsched CRED: fix sparse warnings User namespaces: use the current_user_ns() macro User namespaces: set of cleanups (v2) nfsctl: add headers for credentials coda: fix creds reference capabilities: define get_vfs_caps_from_disk when file caps are not enabled CRED: Allow kernel services to override LSM settings for task actions CRED: Add a kernel_service object class to SELinux CRED: Differentiate objective and effective subjective credentials on a task CRED: Documentation CRED: Use creds in file structs CRED: Prettify commoncap.c CRED: Make execve() take advantage of copy-on-write credentials ... commit e14e61e967f2b3bdf23f05e4ae5b9aa830151a44 Merge: cb10ea549fdc0ab2dd8988adab5bf40b4fa642f3 0ee4a96902dd7858e65f378c86f428a0355bd841 Author: Linus Torvalds Date: Sun Dec 28 11:43:22 2008 -0800 Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (57 commits) crypto: aes - Precompute tables crypto: talitos - Ack done interrupt in isr instead of tasklet crypto: testmgr - Correct comment about deflate parameters crypto: salsa20 - Remove private wrappers around various operations crypto: des3_ede - permit weak keys unless REQ_WEAK_KEY set crypto: sha512 - Switch to shash crypto: sha512 - Move message schedule W[80] to static percpu area crypto: michael_mic - Switch to shash crypto: wp512 - Switch to shash crypto: tgr192 - Switch to shash crypto: sha256 - Switch to shash crypto: md5 - Switch to shash crypto: md4 - Switch to shash crypto: sha1 - Switch to shash crypto: rmd320 - Switch to shash crypto: rmd256 - Switch to shash crypto: rmd160 - Switch to shash crypto: rmd128 - Switch to shash crypto: null - Switch to shash crypto: hash - Make setkey optional ... commit cb10ea549fdc0ab2dd8988adab5bf40b4fa642f3 Merge: 81d6e59dabb1ae0c782e9eb7e3d88f699d25b314 5ce442fe2c9423ec5451222aee6f9b2127bb8311 Author: Linus Torvalds Date: Sun Dec 28 11:41:32 2008 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: (367 commits) ALSA: ASoC: fix a typo in omp-pcm.c ASoC: Fix DSP formats in SSM2602 audio codec ASoC: Fix incorrect DSP format in OMAP McBSP DAI and affected drivers ALSA: hda: fix incorrect mixer index values for 92hd83xx ALSA: hda: dinput_mux check ALSA: hda - Add quirk for another HP dv7 ALSA: ASoC - Add missing __devexit annotation to wm8350.c ALSA: ASoc: DaVinci: davinci-evm use dsp_b mode ALSA: ASoC: DaVinci: i2s, evm, pass same value to codec and cpu_dai ALSA: ASoC: tlv320aic3x add dsp_a ALSA: ASoC: DaVinci: document I2S limitations ALSA: ASoC: DaVinci: davinci-i2s clean up ALSA: ASoC: DaVinci: davinci-i2s clean up ALSA: ASoC: DaVinci: davinci-i2s add comments to explain polarity ALSA: ASoC: DaVinci: davinvi-evm, make requests explicit ALSA: ca0106 - disable 44.1kHz capture ALSA: ca0106 - Add missing card->private_data initialization ALSA: ca0106 - Check ac97 availability at PM ALSA: hda - Power up always when no jack detection is available ALSA: hda - Fix unused variable warnings in patch_sigmatel.c ... commit 81d6e59dabb1ae0c782e9eb7e3d88f699d25b314 Merge: 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 59de580af1c2fd671b0cb27c41ff958859ae5288 Author: Linus Torvalds Date: Sun Dec 28 11:39:19 2008 -0800 Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 * git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6: (132 commits) sh: oprofile: Fix up the module build. sh: add UIO support for JPU on SH7722. serial: sh-sci: Fix up port pinmux for SH7366. sh: mach-rsk: Use uImage generation by default for rsk7201/7203. sh: mach-sh03: Fix up pata_platform build breakage. sh: enable deferred io LCDC on Migo-R video: sh_mobile_lcdcfb deferred io support video: deferred io with physically contiguous memory video: deferred io cleanup video: fix deferred io fsync() sh: add LCDC interrupt configuration to AP325 and Migo-R sh_mobile_lcdc: use FB_SYS helpers instead of FB_CFB sh: split coherent pages sh: dma: Kill off ISA DMA wrapper. sh: Conditionalize the code dumper on CONFIG_DUMP_CODE. sh: Kill off the unused SH_ALPHANUMERIC debug option. sh: Enable skipping of bss on debug platforms for sh32 also. doc: Update sh cpufreq documentation. sh: mrshpc_setup_windows() needs to be inline. serial: sh-sci: sci_poll_get_char() is only used by CONFIG_CONSOLE_POLL. ... commit aa6eeeef78263e9891185c6cfaaf64808460a54a Author: Harvey Harrison Date: Tue Nov 18 20:45:23 2008 +0100 m68k: use the new byteorder headers Signed-off-by: Harvey Harrison Signed-off-by: Geert Uytterhoeven commit 7f877ebb32ac9a4b0783e825cef84c6ace87fe90 Author: Geert Uytterhoeven Date: Tue Nov 18 20:45:23 2008 +0100 fbcon: Protect free_irq() by MACH_IS_ATARI check Add missing check for Atari in free_irq() call, which could cause problems on multi-platform m68k kernels. Reported-by: Brad Boyer Signed-off-by: Geert Uytterhoeven commit 79f0c9a0479060e3a8607d93bc8d81ff962acc87 Author: Finn Thain Date: Tue Nov 18 20:45:23 2008 +0100 fbcon: remove broken mac vbl handler Remove the Mac VBL interrupt code as it doesn't work properly and doesn't bring any benefit when fixed. Also remove unused DEFAULT_CURSOR_BLINK_RATE macro and irqres variable. Signed-off-by: Finn Thain Signed-off-by: Geert Uytterhoeven commit 646819e86222cc06b85ed2a8dafbbb361a05ea2d Author: Finn Thain Date: Tue Nov 18 20:45:22 2008 +0100 m68k: fix trigraph ignored warning in setox.S Fix the warning: trigraph ??/ ignored, use -trigraphs to enable caused by the recent removal of -traditional option. Signed-off-by: Finn Thain Signed-off-by: Geert Uytterhoeven commit 3839d01d61195d76d53943ac36b603d7e7ca4b6e Author: Finn Thain Date: Tue Nov 18 20:45:22 2008 +0100 macfb annotations and compiler warning fix Add some __iomem annotations. Remove some volatile qualifiers to fix several compiler warnings: "passing arg 1 of `iounmap' discards qualifiers from pointer target type". Signed-off-by: Finn Thain Signed-off-by: Geert Uytterhoeven commit 746e8d3b223281f0e5472ab0ad8f59af2221ea9b Author: Finn Thain Date: Tue Nov 18 20:45:21 2008 +0100 m68k: mac baboon interrupt enable/disable No-one seems to know how to mask individual baboon interrupts, so we just mask the umbrella IRQ. This will work as long as only the IDE driver uses the baboon chip (it can't deadlock). Use mac_enable_irq/mac_disable_irq rather than enable_irq/disable_irq because the latter routines count the depth of nested calls which triggers a warning and call trace because IRQ_NUBUS_C is enabled twice in a row (once when the baboon handler is registered, and once when the IDE IRQ is registered). Signed-off-by: Finn Thain Signed-off-by: Geert Uytterhoeven commit 429dbf53bca49b110f1058f0d9417a59115c41b8 Author: Finn Thain Date: Tue Nov 18 20:45:20 2008 +0100 m68k: machw.h cleanup Remove some more cruft from machw.h and drop the #include where it isn't needed. Signed-off-by: Finn Thain Signed-off-by: Geert Uytterhoeven commit 4a973592d67ccc240bca694e48ce88facd764043 Author: Finn Thain Date: Tue Nov 18 20:45:20 2008 +0100 m68k: Mac via cleanup and commentry No behavioural changes, just cleanups and better documentation. Signed-off-by: Finn Thain Signed-off-by: Geert Uytterhoeven commit 40f7f9c1c22aef049ed7339d9e45624aa980a1a0 Author: Finn Thain Date: Tue Nov 18 20:45:20 2008 +0100 m68k: Reinstate mac rtc Reinstate the Mac hardware clock for CUDA ADB and Mac II ADB models. It doesn't work properly on Mac IIsi ADB and PMU ADB yet, so leave them out. Signed-off-by: Finn Thain Signed-off-by: Geert Uytterhoeven commit eb56092fc168bf5af199d47af50c0d84a96db898 Author: Dave Jones Date: Sat Dec 27 20:43:48 2008 -0800 net: Allow dependancies of FDDI & Tokenring to be modular. I noticed it isn't possible to build token ring & fddi drivers without causing LLC, and a bunch of other things to be forced built-in. For distro kernels, this means carrying a chunk of code in the vmlinuz, even if the user doesn't use those protocols. Signed-off-by: Dave Jones Signed-off-by: David S. Miller commit 8d25332081d87491e3b12fa130539fe9e2ba4a94 Author: David S. Miller Date: Fri Dec 26 15:13:55 2008 -0800 igb: Fix build warning when DCA is disabled. Signed-off-by: David S. Miller commit 2d5451d2614583de0c9aaf61cf5f77faf5694105 Author: David S. Miller Date: Fri Dec 26 15:10:00 2008 -0800 net: Fix warning fallout from recent NAPI interface changes. When we removed the network device argument from several NAPI interfaces in 908a7a16b852ffd618a9127be8d62432182d81b4 ("net: Remove unused netdev arg from some NAPI interfaces.") several drivers now started getting unused variable warnings. This fixes those up. Signed-off-by: David S. Miller commit 0da2afd59653d2edf5c8e0f09b23f367ab5bc80f Author: Herbert Xu Date: Fri Dec 26 14:57:42 2008 -0800 gro: Fix potential use after free The initial skb may have been freed after napi_gro_complete in napi_gro_receive if it was merged into an existing packet. Thus we cannot check same_flow (which indicates whether it was merged) after calling napi_gro_complete. This patch fixes this by saving the same_flow status before the call to napi_gro_complete. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit 843813453f52e3378fc988c8364063fd4cb9d0e3 Author: Ben Hutchings Date: Fri Dec 26 13:49:25 2008 -0800 sfc: If AN is enabled, always read speed/duplex from the AN advertising bits When AN is enabled and the link is down the speed/duplex control bits will not be meaningful. Use the advertising bits instead, and mask them with the LPA bits if and only if AN is complete (as before). Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit f4bd954e7c24063b15fa9abc8b4b1242772928ed Author: Ben Hutchings Date: Fri Dec 26 13:48:51 2008 -0800 sfc: When disabling the NIC, close the device rather than unregistering it This should reduce user confusion and may also aid recovery (ioctls will still be available). Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 307505e9a4ce0b13b2f996385669039806e07390 Author: Ben Hutchings Date: Fri Dec 26 13:48:00 2008 -0800 sfc: SFT9001: Add cable diagnostics The SFT9001 firmware implements cable diagnostics; run those and include their results in a self-test. In case of a cable fault, do not fail the self-test as a whole; only faults in the NIC should cause that. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 1796721a5a691a5d392abf8070ad40a0b787b667 Author: Ben Hutchings Date: Fri Dec 26 13:47:25 2008 -0800 sfc: Add support for multiple PHY self-tests Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 2ef3068e6c40ec44d27f6f8027616e284d1b0466 Author: Ben Hutchings Date: Fri Dec 26 13:47:04 2008 -0800 sfc: Merge top-level functions for self-tests Pass in ethtool test flags to determine which tests to run. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit a5692e49cd9e6512c48ebf61e52991cbe643c12d Author: Ben Hutchings Date: Fri Dec 26 13:46:38 2008 -0800 sfc: Clean up PHY mode management in loopback self-test Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit caa8d8bbddc9157cb8f34465be98fc83faf37155 Author: Ben Hutchings Date: Fri Dec 26 13:46:12 2008 -0800 sfc: Fix unreliable link detection in some loopback modes Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 6977dc6309ea8bbcb24c0a1356c33969e4a07410 Author: Ben Hutchings Date: Fri Dec 26 13:44:39 2008 -0800 sfc: Generate unique names for per-NIC workqueues Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit e727149e26b08550269a7786fda977aed65578f6 Author: Holger Eitzenberger Date: Fri Dec 26 13:41:53 2008 -0800 802.3ad: use standard ethhdr instead of ad_header 802.3ad has its own ethhdr-like structure in the form of an ad_header, which is at the start of both the LACPDU and marker PDU. Both are the same from the struct values, both are packed as well. It's therefore perfectly fine to replace the ad_header by the ethhdr and to remove its definition. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit e4ac43200fd6b8b8de3b487e74e74d3742f70d79 Author: Holger Eitzenberger Date: Fri Dec 26 13:40:48 2008 -0800 802.3ad: generalize out mac address initializer Generalize out mac address initializer for the LACPDU multicast address and use in two places. Remove the now unused AD_MULTICAST_LACPDU_ADDR. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 7addeef6b15c9b7cffaaf40ec5b5b0940145ec16 Author: Holger Eitzenberger Date: Fri Dec 26 13:28:33 2008 -0800 802.3ad: initialize ports LACPDU from const initializer Save some text by initializing ports LACPDU from const initializer, then get rid of ad_initialize_lacpdu(). Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 87f422f8618c541db0f96194cca9465817f76b89 Author: Holger Eitzenberger Date: Fri Dec 26 13:27:57 2008 -0800 802.3ad: remove typedef around ad_system As typedefs are considered a bad thing most of the time remove the typedef around ad_system. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 1624db7be0d9f77f5494efe1b066d1d44b46c96c Author: Holger Eitzenberger Date: Fri Dec 26 13:27:21 2008 -0800 802.3ad: turn ports is_individual into a bool Turn ports is_individual into a bool. There is no functional change. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit f48127b6f3270cf7234a7a9f770533332e85e8ae Author: Holger Eitzenberger Date: Fri Dec 26 13:26:54 2008 -0800 802.3ad: turn ports is_enabled into a bool Turn ports is_enabled into a bool. There is no functional change. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit d238d458a70ad134cb421c3ffc66242277f30dda Author: Holger Eitzenberger Date: Fri Dec 26 11:18:15 2008 -0800 802.3ad: make ntt bool Turn Need-To-Transmit port variable into a bool. There is no functional change. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit d3fa4721456226d77475181a4bfbe5b3d899d65c Author: Peter P Waskiewicz Jr Date: Fri Dec 26 01:36:33 2008 -0800 ixgbe: Fix set_ringparam in ixgbe to use the same memory pools. The adapter rings are kcalloc()'d, but in set_ringparam() in ixgbe_ethtool, we replace that memory from the vmalloc() pool. This can result in a NULL pointer reference when trying to modify the rings at a later time, or on device removal. Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 7adf1525befb5606462431eb1a4ea40ded5baef4 Author: Peter P Waskiewicz Jr Date: Fri Dec 26 01:36:05 2008 -0800 ixgbe: Fix NAPI enable/disable path when using DCB This change allows DCB mode to change the number of queues, and presumably the number of NAPI instances, safely. Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit d7b06636be162d3f74c9ce5d6d0d9ea4e5d362c8 Author: Peter P Waskiewicz Jr Date: Fri Dec 26 01:35:35 2008 -0800 net: Init NAPI dev_list on napi_del The recent GRO patches introduced the NAPI removal of devices in free_netdev. For drivers that can change the number of queues during driver operation, the NAPI infrastructure doesn't allow the freeing and re-addition of NAPI entities without reloading the driver. This change reinitializes the dev_list in each NAPI struct on delete, instead of just deleting it (and assigning the list pointers to POISON). Drivers that wish to remove/re-add NAPI will need to re-initialize the netdev napi_list after removing all NAPI instances, before re-adding NAPI devices again. Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 26bc19ecf6c077c926827c25631340fd2e8fb16e Author: Alexander Duyck Date: Fri Dec 26 01:34:11 2008 -0800 igb: re-order queues to support cleaner use of ivar on 82576 The 82576 adapter orders the queues in pairs when virtualization is in use. The queue ordering previously conflicted with the ordering when sr-iov was enabled. This new ordering allows a PF to allocate 2 queues without using any VF resources. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 0e014cb16234c3797aa518d46fe7e1fe91ebcca9 Author: Alexander Duyck Date: Fri Dec 26 01:33:18 2008 -0800 igb: defeature tx head writeback This patch removes tx head writeback as it was found to not provide a significant improvement in tx performance and on some systems has been seen to cause a performance degredation due to partial cache line writes. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit f2712fd0b4097e8385bdb75c0ebd285a057fe299 Author: Herbert Xu Date: Fri Dec 26 01:31:18 2008 -0800 ipsec: Remove useless ret variable This patch removes a useless ret variable from the IPv4 ESP/UDP decapsulation code. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit fdb614c28487df41f7bf2c98e85f29f31885561e Author: Anton Vorontsov Date: Tue Dec 23 06:59:25 2008 +0000 ucc_geth: Eliminate the need for forward references This patch simply reorders some functions to eliminate the need for forward references. No other changes than that. Suggested-by: Timur Tabi Signed-off-by: Anton Vorontsov Signed-off-by: David S. Miller commit 9c54004ea717116a10886e254e26502ffb1136e9 Author: David Woodhouse Date: Tue Dec 23 04:09:02 2008 +0000 atm: Driver for Solos PCI ADSL2+ card. This adds basic support for the 'Solos' PCI ADSL2+ cards being developed by Traverse Technologies and Xrio Ltd: http://www.traverse.com.au/productview.php?product_id=116 Signed-off-by: Nathan Williams Signed-off-by: David Woodhouse Signed-off-by: David S. Miller commit 236b87c29953a87a6817e96e311b0efd00e95dc7 Author: Tilman Schmidt Date: Fri Dec 26 01:22:03 2008 -0800 gigaset: ifdef cleanup Remove unnecessary #ifdef-s and #if-0-ed code sections. Signed-off-by: Tilman Schmidt Signed-off-by: David S. Miller commit c8770dcabd6a615b155c25dc4d57251d3e7f151c Author: Tilman Schmidt Date: Fri Dec 26 01:21:29 2008 -0800 gigaset: use pr_err() and pr_info() Switch from private printk wrapper macros to using pr_err() and pr_info() from linux/kernel.h, at the same time unifying a few error messages. Signed-off-by: Tilman Schmidt Signed-off-by: David S. Miller commit 4d8cd002602987ddc9507b5390800343f820ac92 Author: Divy Le Ray Date: Fri Dec 26 01:16:39 2008 -0800 cxgb3: add control to access embedded images Update contol path between cxgb3 and ULP modules (iWARP, iSCSI) to provide access to firware and protocol engine info. Signed-off-by: Divy Le Ray Signed-off-by: David S. Miller commit 6dd014808f91ad99d4d794cf7c7c69610c10f904 Author: Hannes Eder Date: Fri Dec 26 00:15:03 2008 -0800 drivers/net/wireless/prism54: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/wireless/prism54/islpci_hotplug.c:97:1: warning: symbol 'prism54_probe' was not declared. Should it be static? drivers/net/wireless/prism54/islpci_hotplug.c:220:1: warning: symbol 'prism54_remove' was not declared. Should it be static? drivers/net/wireless/prism54/islpci_hotplug.c:263:1: warning: symbol 'prism54_suspend' was not declared. Should it be static? drivers/net/wireless/prism54/islpci_hotplug.c:286:1: warning: symbol 'prism54_resume' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit a3d1fd23e1ff2deeda0415805cf9a044dda7f55c Author: Hannes Eder Date: Fri Dec 26 00:14:41 2008 -0800 drivers/net/wireless/ipw2x00: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/wireless/ipw2x00/ipw2100.c:5271:6: warning: symbol 'ipw2100_queues_initialize' was not declared. Should it be static? drivers/net/wireless/ipw2x00/ipw2100.c:5278:6: warning: symbol 'ipw2100_queues_free' was not declared. Should it be static? drivers/net/wireless/ipw2x00/ipw2100.c:5285:5: warning: symbol 'ipw2100_queues_allocate' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 11ab72a7c94f3ccac05b85928875fdc4f1ed5e9b Author: Hannes Eder Date: Fri Dec 26 00:13:46 2008 -0800 drivers/net/wireless/b43: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/wireless/b43/phy_a.c:80:6: warning: symbol 'b43_radio_set_tx_iq' was not declared. Should it be static? drivers/net/wireless/b43/phy_a.c:150:6: warning: symbol 'b43_radio_init2060' was not declared. Should it be static? drivers/net/wireless/b43/phy_g.c:57:10: warning: symbol 'b43_radio_channel_codes_bg' was not declared. Should it be static? drivers/net/wireless/b43/phy_g.c:218:6: warning: symbol 'b43_set_txpower_g' was not declared. Should it be static? drivers/net/wireless/b43/phy_g.c:386:6: warning: symbol 'b43_nrssi_hw_write' was not declared. Should it be static? drivers/net/wireless/b43/phy_g.c:393:5: warning: symbol 'b43_nrssi_hw_read' was not declared. Should it be static? drivers/net/wireless/b43/phy_g.c:404:6: warning: symbol 'b43_nrssi_hw_update' was not declared. Should it be static? drivers/net/wireless/b43/phy_g.c:418:6: warning: symbol 'b43_nrssi_mem_update' was not declared. Should it be static? drivers/net/wireless/b43/phy_g.c:592:6: warning: symbol 'b43_calc_nrssi_slope' was not declared. Should it be static? drivers/net/wireless/b43/phy_g.c:1357:5: warning: symbol 'b43_radio_init2050' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit bf512bc827c84f77553538834fffe71604079f23 Author: Hannes Eder Date: Fri Dec 26 00:13:29 2008 -0800 drivers/net/wireless/ath9k: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/wireless/ath9k/eeprom.c:195:6: warning: symbol 'ath9k_fill_eeprom' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:463:5: warning: symbol 'ath9k_check_eeprom' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:1219:6: warning: symbol 'ath9k_hw_set_def_power_per_rate_table' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:1510:6: warning: symbol 'ath9k_hw_set_4k_power_per_rate_table' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:2007:5: warning: symbol 'ath9k_set_txpower' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:2106:6: warning: symbol 'ath9k_set_addac' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:2543:6: warning: symbol 'ath9k_eeprom_set_board_values' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:2606:5: warning: symbol 'ath9k_get_eeprom_antenna_cfg' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:2622:4: warning: symbol 'ath9k_hw_get_4k_num_ant_config' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:2628:4: warning: symbol 'ath9k_hw_get_def_num_ant_config' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:2647:4: warning: symbol 'ath9k_get_num_ant_config' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:2790:5: warning: symbol 'ath9k_get_eeprom' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 2ed5ba890e1e8dda89557e4ea233a26ab8bf3d58 Author: Hannes Eder Date: Fri Dec 26 00:12:59 2008 -0800 drivers/net/wireless: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/wireless/airo.c:3610:6: warning: symbol 'mpi_receive_802_11' was not declared. Should it be static? drivers/net/wireless/atmel.c:3183:6: warning: symbol 'atmel_join_bss' was not declared. Should it be static? drivers/net/wireless/ray_cs.c:831:5: warning: symbol 'ray_dev_init' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 62c5345db704c912b485f6b60dab381c9cebf268 Author: Hannes Eder Date: Fri Dec 26 00:12:08 2008 -0800 drivers/net/wan/z85230.c: fix sparse warnings: un-EXPORT symbols The symbols are only references within the translation unit they are defined in, so un-EXPORT them und make them 'static'. Fix this sparse warnings: drivers/net/wan/z85230.c:604:25: warning: symbol 'z8530_dma_sync' was not declared. Should it be static? drivers/net/wan/z85230.c:613:25: warning: symbol 'z8530_txdma_sync' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 7b3dfa11cdef38bda07b99991f2f88c86df67ed2 Author: Hannes Eder Date: Fri Dec 26 00:11:21 2008 -0800 drivers/net/wan: fix sparse warning: make symbol static Fix this sparse warning: drivers/net/wan/x25_asy.c:623:5: warning: symbol 'x25_asy_esc' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit d157e0230f205f5dd646c4e0985030367de7aa4c Author: Hannes Eder Date: Mon Dec 22 09:17:55 2008 +0000 drivers/net/wan: fix sparse warnings: make do-while a compound statement Fix this sparse warnings: drivers/net/wan/wanxl.c:414:3: warning: do-while statement is not a compound statement drivers/net/wan/wanxl.c:441:3: warning: do-while statement is not a compound statement Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit ec1d1ebbb3bdc9807474be28c29efa155d15b850 Author: Hannes Eder Date: Fri Dec 26 00:07:45 2008 -0800 drivers/net/tulip: fix sparse warnings: make do-while a compound statement Fix this sparse warnings: drivers/net/tulip/de2104x.c:1695:4: warning: do-while statement is not a compound statement drivers/net/tulip/tulip_core.c:1433:5: warning: do-while statement is not a compound statement Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 27cd6ae5619084f363630683e77d70be38075afe Author: Hannes Eder Date: Fri Dec 26 00:07:15 2008 -0800 drivers/net/tokenring: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/tokenring/ibmtr.c:1840:6: warning: symbol 'tok_rerun' was not declared. Should it be static? drivers/net/tokenring/madgemc.c:469:16: warning: symbol 'madgemc_setnselout_pins' was not declared. Should it be static? drivers/net/tokenring/proteon.c:286:16: warning: symbol 'proteon_setnselout_pins' was not declared. Should it be static? drivers/net/tokenring/skisa.c:303:16: warning: symbol 'sk_isa_setnselout_pins' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 409b204435b85f7e159230c216f334a862cb3b95 Author: Hannes Eder Date: Fri Dec 26 00:06:28 2008 -0800 drivers/net/skfp: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/skfp/skfddi.c:620:13: warning: symbol 'skfp_interrupt' was not declared. Should it be static? drivers/net/skfp/skfddi.c:687:25: warning: symbol 'skfp_ctl_get_stats' was not declared. Should it be static? drivers/net/skfp/skfddi.c:1232:6: warning: symbol 'CheckSourceAddress' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 2f22d22ea7e95d45353b790ac52975a42e3a8558 Author: Hannes Eder Date: Fri Dec 26 00:04:53 2008 -0800 drivers/net/qlge: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/qlge/qlge_ethtool.c:100:6: warning: symbol 'ql_update_stats' was not declared. Should it be static? drivers/net/qlge/qlge_mpi.c:22:5: warning: symbol 'ql_get_mb_sts' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit f8057b7fefea1daca6928cbb95751d01fc934a41 Author: Hannes Eder Date: Fri Dec 26 00:04:26 2008 -0800 drivers/net/netxen: fix sparse warnings: use NULL pointer instead of plain integer Fix this sparse warnings: drivers/net/netxen/netxen_nic_hw.c:1462:18: warning: Using plain integer as NULL pointer drivers/net/netxen/netxen_nic_hw.c:1536:18: warning: Using plain integer as NULL pointer Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit e855aac805dd9c68b6fabe395cbc8e05f0eda6e4 Author: Hannes Eder Date: Fri Dec 26 00:03:59 2008 -0800 drivers/net/ixgbe: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/ixgbe/ixgbe_82598.c:180:5: warning: symbol 'ixgbe_get_copper_link_capabilities_82598' was not declared. Should it be static? drivers/net/ixgbe/ixgbe_82598.c:245:5: warning: symbol 'ixgbe_setup_fc_82598' was not declared. Should it be static? drivers/net/ixgbe/ixgbe_82598.c:729:5: warning: symbol 'ixgbe_set_vmdq_82598' was not declared. Should it be static? drivers/net/ixgbe/ixgbe_82598.c:773:5: warning: symbol 'ixgbe_set_vfta_82598' was not declared. Should it be static? drivers/net/ixgbe/ixgbe_82598.c:897:5: warning: symbol 'ixgbe_read_analog_reg8_82598' was not declared. Should it be static? drivers/net/ixgbe/ixgbe_82598.c:919:5: warning: symbol 'ixgbe_write_analog_reg8_82598' was not declared. Should it be static? drivers/net/ixgbe/ixgbe_82598.c:940:5: warning: symbol 'ixgbe_read_i2c_eeprom_82598' was not declared. Should it be static? drivers/net/ixgbe/ixgbe_82598.c:1000:5: warning: symbol 'ixgbe_get_supported_physical_layer_82598' was not declared. Should it be static? drivers/net/ixgbe/ixgbe_dcb_82598.c:100:5: warning: symbol 'ixgbe_dcb_config_packet_buffers_82598' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 0e49e64526ccd8cb78d7c4b4a732024ff221d4d0 Author: Hannes Eder Date: Fri Dec 26 00:03:19 2008 -0800 drivers/net/irda: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/irda/ma600-sir.c:239:5: warning: symbol 'ma600_reset' was not declared. Should it be static? drivers/net/irda/smsc-ircc2.c:875:5: warning: symbol 'smsc_ircc_hard_xmit_sir' was not declared. Should it be static? drivers/net/irda/smsc-ircc2.c:1131:6: warning: symbol 'smsc_ircc_set_sir_speed' was not declared. Should it be static? drivers/net/irda/smsc-ircc2.c:1897:6: warning: symbol 'smsc_ircc_sir_start' was not declared. Should it be static? drivers/net/irda/w83977af_ir.c:150:5: warning: symbol 'w83977af_open' was not declared. Should it be static? drivers/net/irda/w83977af_ir.c:313:5: warning: symbol 'w83977af_probe' was not declared. Should it be static? drivers/net/irda/w83977af_ir.c:412:6: warning: symbol 'w83977af_change_speed' was not declared. Should it be static? drivers/net/irda/w83977af_ir.c:492:5: warning: symbol 'w83977af_hard_xmit' was not declared. Should it be static? drivers/net/irda/w83977af_ir.c:734:5: warning: symbol 'w83977af_dma_receive' was not declared. Should it be static? drivers/net/irda/w83977af_ir.c:806:5: warning: symbol 'w83977af_dma_receive_complete' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 678c610b5a069a0a76c3189dd9aa801e5d5cd7e0 Author: Hannes Eder Date: Fri Dec 26 00:02:49 2008 -0800 drivers/net/igb: remove dead code (function 'igb_read_pci_cfg') Fix this warning: drivers/net/igb/e1000_mac.c:54: warning: 'igb_read_pci_cfg' defined but not used Signed-off-by: Hannes Eder Acked-by: Jeff Kirsher Signed-off-by: David S. Miller commit 5e4232ee5d7a1d2b2399e9080bf2f1a28444c80b Author: Hannes Eder Date: Fri Dec 26 00:01:18 2008 -0800 drivers/net/enic: fix sparse warning: make symbol static Fix this sparse warning: drivers/net/enic/vnic_dev.c:288:5: warning: symbol 'vnic_dev_capable' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit fa4c16da738952882d51b265adbef1d8d329d50f Author: Hannes Eder Date: Mon Dec 22 09:16:13 2008 +0000 drivers/net/e1000e: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/e1000e/es2lan.c:1265:5: warning: symbol 'e1000_read_kmrn_reg_80003es2lan' was not declared. Should it be static? drivers/net/e1000e/es2lan.c:1298:5: warning: symbol 'e1000_write_kmrn_reg_80003es2lan' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit af8eca5cbbc8f991ec14c8d7e3350bbe2ea49655 Author: Hannes Eder Date: Thu Dec 25 23:59:28 2008 -0800 drivers/net/cxgb3: comment out dead code The function 'vsc8211_set_speed_duplex' is not used, so comment it out. For 'vsc8211_set_automdi' the function 'vsc8211_set_speed_duplex' is the only caller, so comment it out as well. Fix this (sparse) warning: drivers/net/cxgb3/vsc8211.c:269: warning: 'vsc8211_set_automdi' defined but not used drivers/net/cxgb3/vsc8211.c:295:5: warning: symbol 'vsc8211_set_speed_duplex' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit b06715b7a3db551dcf4706f05e8d2285a66fe05f Author: Hannes Eder Date: Thu Dec 25 23:58:57 2008 -0800 drivers/net/bonding: fix sparse warnings: move decls to header file Fix this sparse warnings: drivers/net/bonding/bond_main.c:104:20: warning: symbol 'bonding_defaults' was not declared. Should it be static? drivers/net/bonding/bond_main.c:204:22: warning: symbol 'ad_select_tbl' was not declared. Should it be static? drivers/net/bonding/bond_sysfs.c:60:21: warning: symbol 'bonding_rwsem' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 9dc20f553f8cb548feaba9dae0cb4905327ecbac Author: Hannes Eder Date: Thu Dec 25 23:58:35 2008 -0800 drivers/net/atlx: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/atlx/atl1.c:198:16: warning: symbol 'atl1_check_options' was not declared. Should it be static? drivers/net/atlx/atl1.c:526:5: warning: symbol 'atl1_read_mac_addr' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 888432f6720bec93ddae93c4d1483a18198a1b3b Author: Hannes Eder Date: Thu Dec 25 23:57:21 2008 -0800 drivers/net/arcnet: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/arcnet/capmode.c:64:6: warning: symbol 'arcnet_cap_init' was not declared. Should it be static? drivers/net/arcnet/com90xx.c:586:5: warning: symbol 'com90xx_reset' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit dac499f912abd5838fa3501efdcd0f23d5f4fc29 Author: Hannes Eder Date: Thu Dec 25 23:56:45 2008 -0800 drivers/net: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/3c523.c:350:6: warning: symbol 'alloc586' was not declared. Should it be static? drivers/net/cs89x0.c:1029:14: warning: symbol 'reset_chip' was not declared. Should it be static? drivers/net/eepro.c:1399:1: warning: symbol 'read_eeprom' was not declared. Should it be static? drivers/net/plip.c:1020:5: warning: symbol 'plip_hard_header_cache' was not declared. Should it be static? drivers/net/s2io.c:5116:6: warning: symbol 'do_s2io_store_unicast_mc' was not declared. Should it be static? drivers/net/smc9194.c:767:12: warning: symbol 'smc_findirq' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit a08b32df1417146b1a4c43e641ec1177da51896c Author: Hannes Eder Date: Thu Dec 25 23:56:04 2008 -0800 drivers/net: fix sparse warning: returning void-valued expression Fix this sparse warning: drivers/net/niu.c:8850:2: warning: returning void-valued expression Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit e4c3c13cb4c4985cb62cf28677fc0ace69a8d69f Author: Hannes Eder Date: Thu Dec 25 23:55:35 2008 -0800 drivers/net: fix sparse warnings: make do-while a compound statement While at it insert some extra curly braces and fix formatting. Fix this sparse warnings: drivers/net/atp.c:811:8: warning: do-while statement is not a compound statement drivers/net/atp.c:813:8: warning: do-while statement is not a compound statement drivers/net/atp.c:815:11: warning: do-while statement is not a compound statement drivers/net/atp.c:817:11: warning: do-while statement is not a compound statement drivers/net/plip.c:642:4: warning: do-while statement is not a compound statement drivers/net/plip.c:647:4: warning: do-while statement is not a compound statement drivers/net/plip.c:820:4: warning: do-while statement is not a compound statement drivers/net/plip.c:825:4: warning: do-while statement is not a compound statement drivers/net/starfire.c:886:3: warning: do-while statement is not a compound statement Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 2705d4f87c068552f45e5d6feaa5c468a312f761 Author: Hannes Eder Date: Thu Dec 25 23:52:57 2008 -0800 drivers/net: fix sparse warning: use ANSI-style function declaration Fix this sparse warning: drivers/net/ne.c:932:24: warning: non-ANSI function declaration of function 'init_module' Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit d76e56b4c620c959fa8346c08d24ee4b2783a564 Author: Nathan Lynch Date: Mon Dec 22 08:42:11 2008 +0000 ehea: use get_zeroed_page for alignment-sensitive allocation With slub debug enabled, I see the following errors and crash with 2.6.28-rc9: IBM eHEA ethernet device driver (Release EHEA_0095) ehea: Error in ehea_h_register_rpage_mr: not on pageboundary ehea: Error in ehea_reg_mr_section: register_rpage_mr failed ehea: Error in ehea_reg_kernel_mr: registering mr failed ehea: Error in ehea_setup_ports: creating MR failed ehea 23c00100.lhea: setup_ports failed Unable to handle kernel paging request for data at address 0x6b6b6b6b6b6bbdcb Faulting instruction address: 0xd000000000064a24 cpu 0x0: Vector: 300 (Data Access) at [c0000000740e7190] pc: d000000000064a24: .ehea_update_firmware_handles+0x84/0x47c [ehea] lr: d00000000006df34: .ehea_probe_adapter+0x35c/0x39c [ehea] sp: c0000000740e7410 msr: 8000000000009032 dar: 6b6b6b6b6b6bbdcb dsisr: 40000000 current = 0xc000000074233780 paca = 0xc0000000008a3300 pid = 2046, comm = modprobe enter ? for help [c0000000740e74f0] d00000000006df34 .ehea_probe_adapter+0x35c/0x39c [ehea] [c0000000740e75a0] c00000000041d5a4 .of_platform_device_probe+0x78/0xb0 [c0000000740e7630] c0000000002d8b38 .driver_probe_device+0x13c/0x200 [c0000000740e76c0] c0000000002d8c90 .__driver_attach+0x94/0xd8 [c0000000740e7750] c0000000002d7d64 .bus_for_each_dev+0x80/0xd8 [c0000000740e7800] c0000000002d889c .driver_attach+0x28/0x40 [c0000000740e7880] c0000000002d8340 .bus_add_driver+0xd4/0x284 [c0000000740e7920] c0000000002d90a0 .driver_register+0xc4/0x198 [c0000000740e79d0] c00000000041d45c .of_register_driver+0x4c/0x60 [c0000000740e7a50] c000000000020ef8 .ibmebus_register_driver+0x30/0x4c [c0000000740e7ae0] d00000000006e108 .ehea_module_init+0x194/0x208c [ehea] [c0000000740e7b90] c000000000009028 .do_one_initcall+0x90/0x1ac [c0000000740e7d90] c00000000008619c .sys_init_module+0xc4/0x200 [c0000000740e7e30] c0000000000084ac syscall_exit+0x0/0x40 (When slub debug is disabled it works fine.) PAGE_SIZE allocations via slab are not guaranteed to be page-aligned; use get_zeroed_page for the 'pt' buffer (I don't really know what this is, only that it is passed to firmware and that the first error message complains about its alignment). This allows the system to boot. Signed-off-by: Nathan Lynch Signed-off-by: David S. Miller commit 359d67d6ad054ae11ad459665fdfb883aca87782 Author: Julia Lawall Date: Mon Dec 22 21:53:40 2008 +0000 [CIFS] Remove redundant test In fs/cifs/cifssmb.c, pLockData is tested for being NULL at the beginning of the function, and not reassigned subsequently. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) Signed-off-by: Julia Lawall Signed-off-by: Steve French commit c6fbba0546d3ead18d4a623e76e28bcbaa66a325 Author: Steve French Date: Thu Dec 18 01:41:20 2008 +0000 [CIFS] make sure that DFS pathnames are properly formed The paths in a DFS request are supposed to only have a single preceding backslash, but we are sending them with a double backslash. This is exposing a bug in Windows where it also sends a path in the response that has a double backslash. The existing code that builds the mount option string however expects a double backslash prefix in a couple of places when it tries to use the path returned by build_path_from_dentry. Fix compose_mount_options to expect properly formed DFS paths (single backslash at front). Also clean up error handling in that function. There was a possible NULL pointer dereference and situations where a partially built option string would be returned. Tested against Samba 3.0.28-ish server and Samba 3.3 and Win2k8. CC: Stable Signed-off-by: Jeff Layton Signed-off-by: Steve French commit ac6a3ef405f314c206906463ca9913a826a577ee Author: Volker Lendecke Date: Sat Dec 6 16:40:40 2008 +0100 Remove an already-checked error condition in SendReceiveBlockingLock Remove an already-checked error condition in SendReceiveBlockingLock Signed-off-by: Volker Lendecke Signed-off-by: Steve French commit 698e96a826939bb24063f6a61801c174e19c32b1 Author: Volker Lendecke Date: Sat Dec 6 16:39:31 2008 +0100 Streamline SendReceiveBlockingLock: Use "goto out:" in an error condition Streamline SendReceiveBlockingLock: Use "goto out:" in an error condition Signed-off-by: Volker Lendecke Signed-off-by: Steve French commit 17c8bfed8abbbed82937a751abfc40d2866e3196 Author: Volker Lendecke Date: Sat Dec 6 16:38:19 2008 +0100 Streamline SendReceiveBlockingLock: Use "goto out:" in an error condition Streamline SendReceiveBlockingLock: Use "goto out:" in an error condition Signed-off-by: Volker Lendecke Signed-off-by: Steve French commit 2b2bdfba7a3679f67b7c3aca4a4b08b24bb675a8 Author: Steve French Date: Thu Dec 11 17:26:54 2008 +0000 [CIFS] Streamline SendReceive[2] by using "goto out:" in an error condition Signed-off-by: Volker Lendecke Signed-off-by: Steve French commit 8e4f2e8a1e5cfa07c5b2731accee0e6eb4c64575 Author: Volker Lendecke Date: Sat Dec 6 16:22:15 2008 +0100 Slightly streamline SendReceive[2] Slightly streamline SendReceive[2] Remove an else branch by naming the error condition what it is Signed-off-by: Volker Lendecke Signed-off-by: Steve French commit 829049cbb1d2ddda2be17ea008b6b3c457808d91 Author: Volker Lendecke Date: Sat Dec 6 16:00:53 2008 +0100 Check the return value of cifs_sign_smb[2] Check the return value of cifs_sign_smb[2] Signed-off-by: Volker Lendecke Signed-off-by: Steve French commit 4c3130efda1ef4f28d5f26819fae2e58c3945f0b Author: Steve French Date: Tue Dec 9 00:28:16 2008 +0000 [CIFS] Cleanup: Move the check for too large R/W requests This avoids an unnecessary else branch Signed-off-by: Volker Lendecke Signed-off-by: Steve French commit 27a97a613b96688e59dd116cae3f0c94107b434c Author: Volker Lendecke Date: Mon Dec 8 20:59:39 2008 +0000 [CIFS] Slightly simplify wait_for_free_request(), remove an unnecessary "else" branch This is no functional change, because in the "if" branch we do an early "return 0;". Signed-off-by: Volker Lendecke Signed-off-by: Steve French commit 8fbbd365cc700e288fb6f9780b092c5afa4946e5 Author: Volker Lendecke Date: Sat Dec 6 13:12:34 2008 +0100 Simplify allocate_mid() slightly: Remove some unnecessary "else" branches Simplify allocate_mid() slightly: Remove some unnecessary "else" branches Signed-off-by: Volker Lendecke Acked-by: Jeff Layton Signed-off-by: Steve French commit 6d9c6d543165d1d492602c1371cb019040093584 Author: Volker Lendecke Date: Mon Dec 8 20:50:24 2008 +0000 [CIFS] In SendReceive, move consistency check out of the mutexed region inbuf->smb_buf_length does not change in in wait_for_free_request() or in allocate_mid(), so we can check it early. Signed-off-by: Volker Lendecke Acked-by: Jeff Layton Signed-off-by: Steve French commit 00e485b0198ea4f509341373f1d9adb0a5977a2f Author: Jeff Layton Date: Fri Dec 5 20:41:21 2008 -0500 cifs: store password in tcon cifs: store password in tcon Each tcon has its own password for share-level security. Store it in the tcon and wipe it clean and free it when freeing the tcon. When doing the tree connect with share-level security, use the tcon password instead of the session password. Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 4e53a3fb98d3d5c2941d2e7199dab317a9d4ead3 Author: Jeff Layton Date: Fri Dec 5 20:41:21 2008 -0500 cifs: have calc_lanman_hash take more granular args cifs: have calc_lanman_hash take more granular args We need to use this routine to encrypt passwords associated with the tcon too. Don't assume that the password will be attached to the smb_session. Also, make some of the values in the lower encryption functions const since they aren't changed. Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 55162dec9371a6f6ac63ff546c182cc6144a649e Author: Jeff Layton Date: Fri Dec 5 20:41:21 2008 -0500 cifs: zero out session password before freeing it cifs: zero out session password before freeing it ...just to be on the safe side. Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 85705524258f93a6086c3247a58f34a661b82b3d Author: Jeff Layton Date: Fri Dec 5 20:41:21 2008 -0500 cifs: fix wait_for_response to time out sleeping processes correctly cifs: fix wait_for_response to time out sleeping processes correctly The current scheme that CIFS uses to sleep and wait for a response is not quite what we want. After sending a request, wait_for_response puts the task to sleep with wait_event(). One of the conditions for wait_event is a timeout (using time_after()). The problem with this is that there is no guarantee that the process will ever be woken back up. If the server stops sending data, then cifs_demultiplex_thread will leave its response queue sleeping. I think the only thing that saves us here is the fact that cifs_dnotify_thread periodically (every 15s) wakes up sleeping processes on all response_q's that have calls in flight. This makes for unnecessary wakeups of some processes. It also means large variability in the timeouts since they're all woken up at once. Instead of this, put the tasks to sleep with wait_event_timeout. This makes them wake up on their own if they time out. With this change, cifs_dnotify_thread should no longer be needed. I've been testing this in conjunction with some other patches that I'm working on. It doesn't seem to affect performance at all with with heavy I/O. Identical iozone -ac runs complete in almost exactly the same time (<1% difference in times). Thanks to Wasrshi Nimara for initially pointing this out. Wasrshi, it would be nice to know whether this patch also helps your testcase. Signed-off-by: Jeff Layton Cc: Wasrshi Nimara Signed-off-by: Steve French commit 8be0ed44c2fa4afcf2c6d2fb3102c926e9f989df Author: Steve French Date: Fri Dec 5 19:14:12 2008 +0000 [CIFS] Can not mount with prefixpath if root directory of share is inaccessible Windows allows you to deny access to the top of a share, but permit access to a directory lower in the path. With the prefixpath feature of cifs (ie mounting \\server\share\directory\subdirectory\etc.) this should have worked if the user specified a prefixpath which put the root of the mount at a directory to which he had access, but we still were doing a lookup on the root of the share (null path) when we should have been doing it on the prefixpath subdirectory. This fixes Samba bug # 5925 Acked-by: Jeff Layton Signed-off-by: Steve French commit 61e748015866e48aff91284e3d300c6e3035a87a Author: Steve French Date: Wed Dec 3 00:57:54 2008 +0000 [CIFS] various minor cleanups pointed out by checkpatch script Signed-off-by: Steve French commit 3de2091ac722e7dbc37d87d9112ab19ec6a871de Author: Steve French Date: Tue Dec 2 20:52:28 2008 +0000 [CIFS] fix typo Signed-off-by: Steve French commit acc18aa1e643519035abdab5e72dc75e534b5198 Author: Steve French Date: Tue Dec 2 18:53:55 2008 +0000 [CIFS] remove sparse warning Signed-off-by: Steve French commit 13a6e42af8d90e2e8eb7fa50adf862a525b70518 Author: Steve French Date: Tue Dec 2 17:24:33 2008 +0000 [CIFS] add mount option to send mandatory rather than advisory locks Some applications/subsystems require mandatory byte range locks (as is used for Windows/DOS/OS2 etc). Sending advisory (posix style) byte range lock requests (instead of mandatory byte range locks) can lead to problems for these applications (which expect that other clients be prevented from writing to portions of the file which they have locked and are updating). This mount option allows mounting cifs with the new mount option "forcemand" (or "forcemandatorylock") in order to have the cifs client use mandatory byte range locks (ie SMB/CIFS/Windows/NTFS style locks) rather than posix byte range lock requests, even if the server would support posix byte range lock requests. This has no effect if the server does not support the CIFS Unix Extensions (since posix style locks require support for the CIFS Unix Extensions), but for mounts to Samba servers this can be helpful for Wine and applications that require mandatory byte range locks. Acked-by: Jeff Layton CC: Alexander Bokovoy Signed-off-by: Steve French commit d5c5605c27c92dac6de1a7a658af5b030847f949 Author: Jeff Layton Date: Mon Dec 1 18:42:33 2008 -0500 cifs: make ipv6_connect take a TCP_Server_Info arg Signed-off-by: Jeff Layton Signed-off-by: Steve French commit bcf4b1063db246a90b9e09e0556f635d632eef36 Author: Jeff Layton Date: Mon Dec 1 18:42:15 2008 -0500 cifs: make ipv4_connect take a TCP_Server_Info arg In order to unify the smb_send routines, we need to reorganize the routines that connect the sockets. Have ipv4_connect take a TCP_Server_Info pointer and get the necessary fields from that. Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 7586b76585d15db767c19255ba0ecfb164df99f7 Author: Jeff Layton Date: Mon Dec 1 18:41:49 2008 -0500 cifs: don't declare smb_vol info on the stack struct smb_vol is fairly large, it's probably best to kzalloc it... Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 63c038c29774476c5dae759e348c269342b4dbef Author: Jeff Layton Date: Mon Dec 1 18:41:46 2008 -0500 cifs: move allocation of new TCP_Server_Info into separate function Clean up cifs_mount a bit by moving the code that creates new TCP sessions into a separate function. Have that function search for an existing socket and then create a new one if one isn't found. Also reorganize the initializion of TCP_Server_Info a bit to prepare for cleanup of the socket connection code. Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 8ecaf67a8ea58c8f131ff045475c74e9538d6b7a Author: Jeff Layton Date: Mon Dec 1 15:23:50 2008 -0500 cifs: account for IPv6 in ses->serverName and clean up netbios name handling The current code for setting the session serverName is IPv4-specific. Allow it to be an IPv6 address as well. Use NIP* macros to set the format. This also entails increasing the length of the serverName field, so declare a new macro for RFC1001 name length and use it in the appropriate places. Finally, drop the unicode_server_Name field from TCP_Server_Info since it's not used. We can add it back later if needed, but for now it just wastes memory. Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 954d7a1cf12158fed23dd8b0f3f563d5a5c97f28 Author: Jeff Layton Date: Mon Dec 1 15:23:50 2008 -0500 cifs: make dnotify thread experimental code Now that tasks sleeping in wait_for_response will time out on their own, we're not reliant on the dnotify thread to do this. Mark it as experimental code for now. Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 72ca545b2d83ac7de671bf66d2dbc214528b4c0c Author: Jeff Layton Date: Mon Dec 1 07:09:36 2008 -0500 cifs: convert tcpSem to a mutex Mutexes are preferred for single-holder semaphores... Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 0468a2cf914e79442b8309ce62e3f861599d8cab Author: Jeff Layton Date: Mon Dec 1 07:09:35 2008 -0500 cifs: take module reference when starting cifsd cifsd can outlive the last cifs mount. We need to hold a module reference until it exits to prevent someone from unplugging the module until we're ready. Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 80909022ce966191e6140fcc15d8aff57a7df32e Author: Jeff Layton Date: Mon Dec 1 07:09:35 2008 -0500 cifs: display addr and prefixpath options in /proc/mounts Have cifs_show_options display the addr and prefixpath options in /proc/mounts. Reduce struct dereferencing by adding some local variables. Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 24b9b06ba7ea53aa0c4d0b1c8c1e93aa1bd9fe72 Author: Jeff Layton Date: Mon Dec 1 07:09:34 2008 -0500 cifs: remove unused SMB session pointer from struct mid_q_entry Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 26c743bed9b0dc83dc736c68d2a3e7494a9790ad Author: Yevgeny Petrilin Date: Thu Dec 25 18:20:13 2008 -0800 mlx4_en: Remove pauses module parameters. They are controlled through Ethtool interface. Signed-off-by: Yevgeny Petrilin Signed-off-by: David S. Miller commit 60b9f9e5588a9e37c35abc2051d57ef12171f916 Author: Yevgeny Petrilin Date: Thu Dec 25 18:19:47 2008 -0800 mlx4_en: Removed Interrupt moderation module parameters They are controlled through Ethtool interface, no need to have two ways to modify them. Signed-off-by: Yevgeny Petrilin Signed-off-by: David S. Miller commit c03ea21fcf549eed42de7aaa965ced8bee17aa76 Author: Yevgeny Petrilin Date: Thu Dec 25 18:14:04 2008 -0800 mlx4_en: Removed redundant cq->armed flag Signed-off-by: Yevgeny Petrilin Signed-off-by: David S. Miller commit 48374ddce72e278e29080e3177e74a13c034d8b4 Author: Yevgeny Petrilin Date: Thu Dec 25 18:13:45 2008 -0800 mlx4_en: Removed TX locking when polling TX cq There is no need to synchronize the polling with the transmit function. The only place to synchronize is when we process the cq from the transmit function. Also removed spin_lock_irq, and using spin_trylock, if somebody else is already processing the cq, no need to wait for it to finish. Signed-off-by: Yevgeny Petrilin Signed-off-by: David S. Miller commit b51968d676db1c4e541b4c84de7ce7af812c9e9f Author: Yevgeny Petrilin Date: Thu Dec 25 18:13:20 2008 -0800 mlx4_en: Memory leak on completion queue free If port is being destroyed without being activated before, CQ resources are not freed. Signed-off-by: Yevgeny Petrilin Signed-off-by: David S. Miller commit e74b3f7d568a62d21a76885438d7351948e7355a Merge: 13e620e0e6c609ccc9882ea280f4f077500d51a0 59f8500efb05096484a55263109acab6a6df89d5 Author: David S. Miller Date: Thu Dec 25 18:10:12 2008 -0800 Merge branch 'for-david' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 commit 13e620e0e6c609ccc9882ea280f4f077500d51a0 Author: Brice Goglin Date: Thu Dec 25 18:09:16 2008 -0800 myri10ge: update driver version to 1.4.4-1.395 Update myri10ge driver version to 1.4.4-1.395. Signed-off-by: Brice Goglin Signed-off-by: David S. Miller commit e92df2820d2d8de4be3dcbad96eb144ce6fd550d Author: Brice Goglin Date: Thu Dec 25 18:08:59 2008 -0800 myri10ge: update firmware headers to 1.4.37 Update myri10ge firmware headers to 1.4.37: * Make each member of the error/cmd enum an initialized one, so there is a convenient numerical reference to look for reverse conversion. * Add new MXGEFW_CMD_RELAX_RXBUFFER_ALIGNMENT command. * Add new "features" field to mcp_header. Signed-off-by: Brice Goglin Signed-off-by: David S. Miller commit 36994a0a7004fd4777cd93a4b658b5f84bf4c93e Author: Johannes Berg Date: Thu Dec 25 18:07:50 2008 -0800 forcedeth: don't poll NV event 36 Polling doesn't seem to be necessary on my hardware, at least I haven't seen any bad effects testing it a while. Remove the polling so the CPU doesn't have to wake up a hundred times per second. Signed-off-by: Johannes Berg Signed-off-by: David S. Miller commit 88a44e51e9a5202f8856f72400fc87a39205186d Author: Julia Lawall Date: Thu Dec 25 18:04:51 2008 -0800 net/appletalk: Remove redundant test atif is tested for being NULL twice, with the same effect in each case. I have kept the second test, as it seems to fit well with the comment above it. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; expression E; position p1,p2; @@ if (x@p1 == NULL || ...) { ... when forall return ...; } ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) ( x@p2 == NULL | x@p2 != NULL ) // another path to the test that is not through p1? @s exists@ local idexpression r.x; position r.p1,r.p2; @@ ... when != x@p1 ( x@p2 == NULL | x@p2 != NULL ) @fix depends on !s@ position r.p1,r.p2; expression x,E; statement S1,S2; @@ ( - if ((x@p2 != NULL) || ...) S1 | - if ((x@p2 == NULL) && ...) S1 | - BUG_ON(x@p2 == NULL); ) // Signed-off-by: Julia Lawall Signed-off-by: David S. Miller commit c14ea0ca659d378dd377e417162ebd908d1da4ce Author: Julia Lawall Date: Thu Dec 25 18:03:44 2008 -0800 drivers/net/wan: Remove redundant test arg is checked not to be NULL a few lines before. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; expression E; position p1,p2; @@ if (x@p1 == NULL || ...) { ... when forall return ...; } ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) ( x@p2 == NULL | x@p2 != NULL ) // another path to the test that is not through p1? @s exists@ local idexpression r.x; position r.p1,r.p2; @@ ... when != x@p1 ( x@p2 == NULL | x@p2 != NULL ) @fix depends on !s@ position r.p1,r.p2; expression x,E; statement S1,S2; @@ ( - if ((x@p2 != NULL) || ...) S1 | - if ((x@p2 == NULL) && ...) S1 | - BUG_ON(x@p2 == NULL); ) // Signed-off-by: Julia Lawall Signed-off-by: David S. Miller commit 90f5dfcc6afafcc3e1c18298143c1213b071990d Author: Julia Lawall Date: Thu Dec 25 18:03:28 2008 -0800 drivers/net: Remove redundant test In each case, ap is checked not to be NULL a few lines before. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; expression E; position p1,p2; @@ if (x@p1 == NULL || ...) { ... when forall return ...; } ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) ( x@p2 == NULL | x@p2 != NULL ) // another path to the test that is not through p1? @s exists@ local idexpression r.x; position r.p1,r.p2; @@ ... when != x@p1 ( x@p2 == NULL | x@p2 != NULL ) @fix depends on !s@ position r.p1,r.p2; expression x,E; statement S1,S2; @@ ( - if ((x@p2 != NULL) || ...) S1 | - if ((x@p2 == NULL) && ...) S1 | - BUG_ON(x@p2 == NULL); ) // Signed-off-by: Julia Lawall Signed-off-by: David S. Miller commit 662f44af635f6bde366d44abacaeec7916d9f168 Author: Julia Lawall Date: Thu Dec 25 18:03:09 2008 -0800 drivers/net/ehea: Remove redundant test In each case, vpage is checked not to be NULL just after it is initialized at the beginning of each loop iteration. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; expression E; position p1,p2; @@ if (x@p1 == NULL || ...) { ... when forall return ...; } ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) ( x@p2 == NULL | x@p2 != NULL ) // another path to the test that is not through p1? @s exists@ local idexpression r.x; position r.p1,r.p2; @@ ... when != x@p1 ( x@p2 == NULL | x@p2 != NULL ) @fix depends on !s@ position r.p1,r.p2; expression x,E; statement S1,S2; @@ ( - if ((x@p2 != NULL) || ...) S1 | - if ((x@p2 == NULL) && ...) S1 | - BUG_ON(x@p2 == NULL); ) // Signed-off-by: Julia Lawall Signed-off-by: David S. Miller commit b0fd0d235df2b3cf8e5e244e301614092a9c317c Author: Julia Lawall Date: Thu Dec 25 18:02:49 2008 -0800 drivers/net/au1000_eth.c: Remove redundant test phydev is checked to be not NULL a few lines above. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; expression E; position p1,p2; @@ if (x@p1 == NULL || ...) { ... when forall return ...; } ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) ( x@p2 == NULL | x@p2 != NULL ) // another path to the test that is not through p1? @s exists@ local idexpression r.x; position r.p1,r.p2; @@ ... when != x@p1 ( x@p2 == NULL | x@p2 != NULL ) @fix depends on !s@ position r.p1,r.p2; expression x,E; statement S1,S2; @@ ( - if ((x@p2 != NULL) || ...) S1 | - if ((x@p2 == NULL) && ...) S1 | - BUG_ON(x@p2 == NULL); ) // Signed-off-by: Julia Lawall Signed-off-by: David S. Miller commit c062076cc999795af19ff61d8c76f33e5ceb9ca0 Author: Roel Kluin Date: Thu Dec 25 17:23:50 2008 -0800 qlge: ql_adapter_down() typo Signed-off-by: Roel Kluin Signed-off-by: Ron Mercer Signed-off-by: David S. Miller commit 619e803d3c1b7bcc17c45e81f309d0b9b3df2d5d Author: Vegard Nossum Date: Thu Dec 25 17:21:17 2008 -0800 netlink: fix (theoretical) overrun in message iteration See commit 1045b03e07d85f3545118510a587035536030c1c ("netlink: fix overrun in attribute iteration") for a detailed explanation of why this patch is necessary. In short, nlmsg_next() can make "remaining" go negative, and the remaining >= sizeof(...) comparison will promote "remaining" to an unsigned type, which means that the expression will evaluate to true for negative numbers, even though it was not intended. I put "theoretical" in the title because I have no evidence that this can actually happen, but I suspect that a crafted netlink packet can trigger some badness. Note that the last test, which seemingly has the exact same problem (also true for nla_ok()), is perfectly OK, since we already know that remaining is positive. Signed-off-by: Vegard Nossum Signed-off-by: David S. Miller commit 64ff3b938ec6782e6585a83d5459b98b0c3f6eb8 Author: Herbert Xu Date: Thu Dec 25 17:12:58 2008 -0800 tcp: Always set urgent pointer if it's beyond snd_nxt Our TCP stack does not set the urgent flag if the urgent pointer does not fit in 16 bits, i.e., if it is more than 64K from the sequence number of a packet. This behaviour is different from the BSDs, and clearly contradicts the purpose of urgent mode, which is to send the notification (though not necessarily the associated data) as soon as possible. Our current behaviour may in fact delay the urgent notification indefinitely if the receiver window does not open up. Simply matching BSD however may break legacy applications which incorrectly rely on the out-of-band delivery of urgent data, and conversely the in-band delivery of non-urgent data. Alexey Kuznetsov suggested a safe solution of following BSD only if the urgent pointer itself has not yet been transmitted. This way we guarantee that when the remote end sees the packet with non-urgent data marked as urgent due to wrap-around we would have advanced the urgent pointer beyond, either to the actual urgent data or to an as-yet untransmitted packet. The only potential downside is that applications on the remote end may see multiple SIGURG notifications. However, this would occur anyway with other TCP stacks. More importantly, the outcome of such a duplicate notification is likely to be harmless since the signal itself does not carry any information other than the fact that we're in urgent mode. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit 8510b937ae1e23583abdeb828cad5c518295c61d Author: Wei Yongjun Date: Thu Dec 25 16:59:03 2008 -0800 sctp: Add validity check for SCTP_PARTIAL_DELIVERY_POINT socket option The latest ietf socket extensions API draft said: 8.1.21. Set or Get the SCTP Partial Delivery Point Note also that the call will fail if the user attempts to set this value larger than the socket receive buffer size. This patch add this validity check for SCTP_PARTIAL_DELIVERY_POINT socket option. Signed-off-by: Wei Yongjun Signed-off-by: Vlad Yasevich Signed-off-by: David S. Miller commit 9fcb95a105758b81ef0131cd18e2db5149f13e95 Author: Wei Yongjun Date: Thu Dec 25 16:58:11 2008 -0800 sctp: Avoid memory overflow while FWD-TSN chunk is received with bad stream ID If FWD-TSN chunk is received with bad stream ID, the sctp will not do the validity check, this may cause memory overflow when overwrite the TSN of the stream ID. The FORWARD-TSN chunk is like this: FORWARD-TSN chunk Type = 192 Flags = 0 Length = 172 NewTSN = 99 Stream = 10000 StreamSequence = 0xFFFF This patch fix this problem by discard the chunk if stream ID is not less than MIS. Signed-off-by: Wei Yongjun Signed-off-by: Vlad Yasevich Signed-off-by: David S. Miller commit aea3c5c05d2c409e93bfa80dcedc06af7da6c13b Author: Wei Yongjun Date: Thu Dec 25 16:57:24 2008 -0800 sctp: Implement socket option SCTP_GET_ASSOC_NUMBER Implement socket option SCTP_GET_ASSOC_NUMBER of the latest ietf socket extensions API draft. 8.2.5. Get the Current Number of Associations (SCTP_GET_ASSOC_NUMBER) This option gets the current number of associations that are attached to a one-to-many style socket. The option value is an uint32_t. Signed-off-by: Wei Yongjun Signed-off-by: Vlad Yasevich Signed-off-by: David S. Miller commit ea686a2653c5586b1c7192958b9d521abde66e92 Author: Wei Yongjun Date: Thu Dec 25 16:56:45 2008 -0800 sctp: Fix a typo in socket.c Just fix a typo in socket.c. Signed-off-by: Wei Yongjun Signed-off-by: Vlad Yasevich Signed-off-by: David S. Miller commit e89c2095815d82eaa9fb85eff42f8b65b67a59cf Author: Wei Yongjun Date: Thu Dec 25 16:54:58 2008 -0800 sctp: Bring SCTP_MAXSEG socket option into ietf API extension compliance Brings maxseg socket option set/get into line with the latest ietf socket extensions API draft, while maintaining backwards compatibility. Signed-off-by: Wei Yongjun Signed-off-by: Vlad Yasevich Signed-off-by: David S. Miller commit 161c8d2f50109b44b664eaf23831ea1587979a61 Author: Krzysztof Halasa Date: Thu Dec 25 16:50:41 2008 -0800 net: PHYLIB mdio fixes #2 The PHYLIB mdio code has more problems in error paths: - mdiobus_release can be called before bus->state is set to MDIOBUS_REGISTERED - mdiobus_scan allocates resources which need to be freed - the comment is wrong, the resistors used are actually pull-ups. Signed-off-by: Krzysztof Halasa Signed-off-by: David S. Miller commit f7d1b9f5aafa371d7f51f644aa3c38bc914e9205 Author: Eric Dumazet Date: Thu Dec 25 16:45:19 2008 -0800 vlan: fix convertion to net_device_ops commit 656299f706e52e0409733d704c2761f1b12d6954 (vlan: convert to net_device_ops) added a net_device_ops with a NULL ndo_start_xmit field. This gives a crash in dev_hard_start_xmit() Fix it using two net_device_ops structures, one for hwaccel vlan, one for non hwaccel vlan. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit d45227391c70ea12ec129ebfa97841e9b7ff34fd Author: Steve Glendinning Date: Thu Dec 25 16:44:01 2008 -0800 smsc911x: fix platform resource call during module unload This patch fixes a typo, the platform_get_resource calls in smsc911x_drv_remove are supposed to look the same as those in smsc911x_drv_probe. Reported and fixed by dfoley@telus.net. Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit dc26977f77dd3486b59516d2cc03627009c0d4c6 Author: Steve Glendinning Date: Thu Dec 25 16:43:34 2008 -0800 smsc911x: don't clobber driver_data smsc911x uses driver_data to store our net_device, don't overwrite this with the mii_bus. Reported and fixed by dfoley@telus.net. Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit 7091e728c570157496e52296d2dbe816a6916836 Author: Alexey Dobriyan Date: Thu Dec 25 16:42:51 2008 -0800 netns: igmp: make /proc/net/{igmp,mcfilter} per netns This patch makes the followinf proc entries per-netns: /proc/net/igmp /proc/net/mcfilter Signed-off-by: Alexey Dobriyan Acked-by: Daniel Lezcano Acked-by: Benjamin Thery Signed-off-by: David S. Miller commit b4ee07df3d8121060200dbe1c6686a4e0682bee2 Author: Alexey Dobriyan Date: Thu Dec 25 16:42:23 2008 -0800 netns: igmp: allow IPPROTO_IGMP sockets in netns Looks like everything is already ready. Required for ebtables(8) for one thing. Also, required for ipmr per-netns (coming soon). (Benjamin) Signed-off-by: Alexey Dobriyan Acked-by: Benjamin Thery Signed-off-by: David S. Miller commit cb5b04fe14394a93eb9a3523f5af9f77480a5a04 Author: Steve Glendinning Date: Thu Dec 25 16:41:09 2008 -0800 smsc911x: make smsc911x_ethtool_ops constant Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit 631b7568c7d8f0222773e1beb2460a86541ae394 Author: Steve Glendinning Date: Thu Dec 25 16:40:47 2008 -0800 smsc911x: convert driver to use net_device_ops Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit dd0451938815d8b901488b1058f52023892c6cde Author: Steve Glendinning Date: Thu Dec 25 16:40:19 2008 -0800 smsc911x: fix BUG if module is removed while interface is up If the module is removed while its interface is up, smsc911x_stop is not called until after smsc911x_drv_remove has disposed of phy_dev. This patch changes the stop method to handle this situation. This is a different problem to the one reported by dfoley@telus.net. Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit 4e202284e6ac1695df3eb4a0e549ea78addfb663 Merge: 826e08b0157c0ce8a80dfe3c0a6c5a1540dd0b1d 80f40ee4a07530cc3acbc239a9299ec47025825b 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 Author: Ingo Molnar Date: Thu Dec 25 13:42:23 2008 +0100 Merge branch 'sched/urgent'; commit 'v2.6.28' into sched/core commit cef7125def4dd104769f400c941199614da0aca1 Author: Hendrik Brueckner Date: Thu Dec 25 13:39:55 2008 +0100 [S390] provide documentation for hvc_iucv kernel parameter. Signed-off-by: Hendrik Brueckner Signed-off-by: Martin Schwidefsky commit 2a7c6f2c39d1291e55403676b25fcfbff78fc5fb Author: Peter Tiedemann Date: Thu Dec 25 13:39:54 2008 +0100 [S390] convert ctcm printks to dev_xxx and pr_xxx macros. Signed-off-by: Peter Tiedemann Signed-off-by: Martin Schwidefsky commit ecf39d42129767c0b4b4a6cf4997c1219c860934 Author: Christof Schmitt Date: Thu Dec 25 13:39:53 2008 +0100 [S390] convert zfcp printks to pr_xxx macros. Signed-off-by: Christof Schmitt Signed-off-by: Martin Schwidefsky commit 5466c2e43e78068cfe634b07fe36dd7a6a7af535 Author: Martin Schwidefsky Date: Thu Dec 25 13:39:52 2008 +0100 [S390] convert vmlogrdr printks to pr_xxx macros. Signed-off-by: Martin Schwidefsky commit 17159dc6fb8769e52edb23d138c2b6bc634397a3 Author: Michael Holzheu Date: Thu Dec 25 13:39:51 2008 +0100 [S390] convert zfcp dumper printks to pr_xxx macros. Signed-off-by: Michael Holzheu Signed-off-by: Martin Schwidefsky commit 395d31d40cc38270dd7c024691404e2eddf0678d Author: Martin Schwidefsky Date: Thu Dec 25 13:39:50 2008 +0100 [S390] convert cpu related printks to pr_xxx macros. Signed-off-by: Martin Schwidefsky commit 74eacdb9c2bf9fc6e8c6785013b5dd0e551a9dfa Author: Frank Blaschka Date: Thu Dec 25 13:39:49 2008 +0100 [S390] convert qeth printks to dev_xxx and pr_xxx macros. Signed-off-by: Frank Blaschka Signed-off-by: Martin Schwidefsky commit b3ff088b3025c3583194edd7576215b61333111f Author: Martin Schwidefsky Date: Thu Dec 25 13:39:48 2008 +0100 [S390] convert sclp printks to pr_xxx macros. Signed-off-by: Martin Schwidefsky commit 8f7c502c267c0e5e2dbbbdea9f3e7e85bbc95694 Author: Ursula Braun Date: Thu Dec 25 13:39:47 2008 +0100 [S390] convert iucv printks to dev_xxx and pr_xxx macros. Signed-off-by: Ursula Braun Signed-off-by: Martin Schwidefsky commit 136f7a1c4239be91e3e0f53532944b9aab7b58f8 Author: Martin Schwidefsky Date: Thu Dec 25 13:39:46 2008 +0100 [S390] convert ap_bus printks to pr_xxx macros. Signed-off-by: Martin Schwidefsky commit 93098bf01578763bb84b627fe893f219cc44b995 Author: Hongjie Yang Date: Thu Dec 25 13:39:45 2008 +0100 [S390] convert dcssblk and extmem printks messages to pr_xxx macros. Signed-off-by: Hongjie Yang Signed-off-by: Martin Schwidefsky commit 1519c0c6ebd2bfd29bae762a1741963a1d06bca2 Author: Melissa Howland Date: Thu Dec 25 13:39:44 2008 +0100 [S390] convert monwriter printks to pr_xxx macros. Signed-off-by: Melissa Howland Signed-off-by: Martin Schwidefsky commit c5612c1956597687e4bdf59f2649d20d60f5a2b6 Author: Michael Holzheu Date: Thu Dec 25 13:39:43 2008 +0100 [S390] convert s390 debug feature printks to pr_xxx macros. Signed-off-by: Michael Holzheu Signed-off-by: Martin Schwidefsky commit a4f5a299cf8468619dc17f0711017c6d72d6ab94 Author: Gerald Schaefer Date: Thu Dec 25 13:39:42 2008 +0100 [S390] convert monreader printks to pr_xxx macros. Signed-off-by: Gerald Schaefer Signed-off-by: Martin Schwidefsky commit e7534b0ec9a28c53a7bcc874e818a24d3b49680f Author: Gerald Schaefer Date: Thu Dec 25 13:39:41 2008 +0100 [S390] convert appldata printks to pr_xxx macros. Signed-off-by: Gerald Schaefer Signed-off-by: Martin Schwidefsky commit 3b6ed4ab48be2110aa93d9828783bfe86193331d Author: Martin Schwidefsky Date: Thu Dec 25 13:39:40 2008 +0100 [S390] convert setup printks to pr_xxx macros. Signed-off-by: Martin Schwidefsky commit f55495ba1a56adba57ea7d3164a766d83a631c58 Author: Michael Holzheu Date: Thu Dec 25 13:39:39 2008 +0100 [S390] convert hypfs printks to pr_xxx macros. Signed-off-by: Michael Holzheu Signed-off-by: Martin Schwidefsky commit feab6501d84f7e2f75cf0f5c7d43341431904374 Author: Martin Schwidefsky Date: Thu Dec 25 13:39:38 2008 +0100 [S390] convert time printks to pr_xxx macros. Signed-off-by: Martin Schwidefsky commit 39f09392498d8ee876bea3ad34f26c447924c818 Author: Jan Glauber Date: Thu Dec 25 13:39:37 2008 +0100 [S390] convert cpacf printks to pr_xxx macros. Signed-off-by: Jan Glauber Signed-off-by: Martin Schwidefsky commit e6d5a428e01b1387852f17b3dd7934239a0be0d4 Author: Michael Ernst Date: Thu Dec 25 13:39:36 2008 +0100 [S390] convert cio printks to pr_xxx macros. Signed-off-by: Michael Ernst Signed-off-by: Martin Schwidefsky commit 80a5c36d1dae15520aa0df0eff713c6c41c46035 Author: Frank Munzert Date: Thu Dec 25 13:39:35 2008 +0100 [S390] convert vmur printks to pr_xxx macros. Signed-off-by: Frank Munzert Signed-off-by: Martin Schwidefsky commit 2f526e5acbf1179d30bc9fa1d20b69ec4c0bb689 Author: Christian Borntraeger Date: Thu Dec 25 13:39:34 2008 +0100 [S390] convert cpcmd printks to pr_xxx macros. Signed-off-by: Christian Borntraeger Signed-off-by: Martin Schwidefsky commit c99fc5dadcd87e8b97613f50c48407678b731cfb Author: Klaus-D. Wacker Date: Thu Dec 25 13:39:33 2008 +0100 [S390] convert lcs printks to dev_xxx and pr_xxx macros. Signed-off-by: Klaus-D. Wacker Signed-off-by: Martin Schwidefsky commit 8988e58f8b7d4b5e8b64435bedf84e4b3987a63d Author: Christian Borntraeger Date: Thu Dec 25 13:39:32 2008 +0100 [S390] convert vmcp printks to pr_xxx macros. Signed-off-by: Christian Borntraeger Signed-off-by: Martin Schwidefsky commit d1c2f8928a2feab56a181bb7e9afe8f804fd26cd Author: Martin Schwidefsky Date: Thu Dec 25 13:39:31 2008 +0100 [S390] convert xpram printks to pr_xxx macros. Signed-off-by: Martin Schwidefsky commit acfa922c5a00eca0abac0e2b6d6666c606c27345 Author: Julia Lawall Date: Thu Dec 25 13:39:30 2008 +0100 [S390] s390: Remove redundant test The loop above the modified code only terminates when rc is a valid pointer. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; expression E; position p1,p2; @@ if (x@p1 == NULL || ...) { ... when forall return ...; } ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) ( x@p2 == NULL | x@p2 != NULL ) // another path to the test that is not through p1? @s exists@ local idexpression r.x; position r.p1,r.p2; @@ ... when != x@p1 ( x@p2 == NULL | x@p2 != NULL ) @fix depends on !s@ position r.p1,r.p2; expression x,E; statement S1,S2; @@ ( - if ((x@p2 != NULL) || ...) S1 | - if ((x@p2 == NULL) && ...) S1 | - BUG_ON(x@p2 == NULL); ) // Signed-off-by: Julia Lawall Signed-off-by: Martin Schwidefsky commit 0946100f566d04cc93e86654f3ba588ee94b3f4c Author: Hendrik Brueckner Date: Thu Dec 25 13:39:29 2008 +0100 [S390] s390/setup: set default preferred console device "ttyS" This patch sets the default console device for s390. The console= kernel parameter can be still used to switch the preferred console to some other device. In that case, console messages are also printed on the default console device (ttyS0). Signed-off-by: Hendrik Brueckner Signed-off-by: Martin Schwidefsky commit 21e7b2c4d59e5d6631b25e71e777cb0160997d6a Author: Julia Lawall Date: Thu Dec 25 13:39:28 2008 +0100 [S390] drivers/s390/crypto: Move dereference to after IS_ERR test If reply is ERR_PTR(...), then it should not be dereferenced, so I have moved the dereference from the declaration to after the IS_ERR test. The semantic match that finds the problem is as follows: (http://www.emn.fr/x-info/coccinelle/) // @match exists@ expression x, E; identifier fld; position p1,p2; @@ ( x = E; | x = E | x@p1->fld ... when != x = E IS_ERR(x@p2) ... when any ) @other_match exists@ expression match.x, E1, E2; position match.p1,match.p2; @@ x = E1 ... when != x = E2 when != x@p1 x@p2 @ script:python depends on !other_match@ p1 << match.p1; p2 << match.p2; @@ print "* file %s dereference %s test %s" % (p1[0].file,p1[0].line,p2[0].line) // Signed-off-by: Julia Lawall Signed-off-by: Martin Schwidefsky commit 33b1d09ef317d64c58b135c2e811bb55b3f15b19 Author: Martin Schwidefsky Date: Thu Dec 25 13:39:27 2008 +0100 [S390] panic_stack leak in smp_alloc_lowcore Fix freeing of the panic_stack if the allocation of async_stack failed. Signed-off-by: Martin Schwidefsky commit 4f7e90d6d61fa0e56821787521c12f8a626c4037 Author: Martin Schwidefsky Date: Thu Dec 25 13:39:26 2008 +0100 [S390] clear_table inline assembly contraints Tell the compile that the clear_table inline assembly writes to the memory referenced by *s. Signed-off-by: Martin Schwidefsky commit c185b783b0993c294ca22ad0a55e6cdf8df4f9d3 Author: Martin Schwidefsky Date: Thu Dec 25 13:39:25 2008 +0100 [S390] Remove config options. On s390 we always want to run with precise cputime accounting. Remove the config options VIRT_TIMER and VIRT_CPU_ACCOUNTING. Signed-off-by: Martin Schwidefsky commit 349f1b671a4b2612c1355612bedadc81f86d26f1 Author: Heiko Carstens Date: Thu Dec 25 13:39:24 2008 +0100 [S390] cpu topology: remove dead code Interrupts haven't been implemented. So remove the dead code. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 2b1a61f0a8c714c96277bf16a823a84bafa1397d Author: Heiko Carstens Date: Thu Dec 25 13:39:23 2008 +0100 [S390] cpu topology: introduce kernel parameter Introduce a topology=[on|off] kernel parameter which allows to switch cpu topology on/off. Default will be off, since it looks like that for some workloards this doesn't behave very well (on s390). Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 9fee8db222a344b9ee407fad9c652ed823690788 Author: Martin Schwidefsky Date: Thu Dec 25 13:39:22 2008 +0100 [S390] add new machine types to setup_hwcaps. Add the machine types for z9-bc, z10-ec and z10-bc to the elf_platform detection in setup_hwcaps. Signed-off-by: Martin Schwidefsky commit c58d92b233a41b81fbbea6add4ba1b512784f837 Author: Heiko Carstens Date: Thu Dec 25 13:39:21 2008 +0100 [S390] Remove initial kernel stack backchain initialization. Early init code clears the backchain of the initial kernel stack frame. This is not necessary since it is pre initialized with zeros. Plus it was broken on 64 bit since it cleared only four of eight bytes. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 64253acbf189085fb0ceb9a3fbe43b40f4a0a932 Author: Harvey Harrison Date: Thu Dec 25 13:39:20 2008 +0100 [S390] s390: use the new byteorder headers Signed-off-by: Harvey Harrison Signed-off-by: Andrew Morton Signed-off-by: Martin Schwidefsky commit e37f50e1811d68170e4d58a087cf634b2bf1cef9 Author: Martin Schwidefsky Date: Thu Dec 25 13:39:19 2008 +0100 [S390] Add processor type march=z10 and a processor type safety check. This patch adds the code generation option for IBM System z10 and adds a check in head[31,64].S to prevents the execution of a kernel compiled for a new processor type on an old machine. Signed-off-by: Martin Schwidefsky commit b3b59d3339c907b1dec3ce19f62b2a7f120d142d Author: Heiko Carstens Date: Thu Dec 25 13:39:18 2008 +0100 [S390] sclp vt220: fix compile warning get rid of this one: CC drivers/s390/char/sclp_vt220.o drivers/s390/char/sclp_vt220.c:588: warning: '__sclp_vt220_flush_buffer' defined but not used Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 2d6cd2a5908adecd06c8cee2a73814463ed71493 Author: Martin Schwidefsky Date: Thu Dec 25 13:39:17 2008 +0100 [S390] remove warnings with functions ending in BUG Functions which end in a BUG() statement and skip the return statement cause compile warnings on s390, e.g.: mm/bootmem.c: In function 'mark_bootmem': mm/bootmem.c:321: warning: control reaches end of non-void function To avoid the warning add an endless loop to the BUG() macro. Signed-off-by: Martin Schwidefsky Signed-off-by: Martin Schwidefsky commit edd5378740fe7717b1377ee04e593cfad8d29650 Author: Heiko Carstens Date: Thu Dec 25 13:39:16 2008 +0100 [S390] mark disabled_wait as noreturn function disabled_wait() won't return, so add an __attribute__((noreturn)). This will remove a false positive finding which our internal code checker reports. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit d36f0c66389eb5e4dbd9b095eea252230ba3273e Author: Sebastian Ott Date: Thu Dec 25 13:39:15 2008 +0100 [S390] cio: use pim to check for multipath. To check if multipath is available we count the bits set in lpm, which could change over time (via configure [on|off] of a path). The following patch uses the pim (which is persistent) for this decision. Signed-off-by: Sebastian Ott Signed-off-by: Martin Schwidefsky commit f444cc0e52523560a8dfc12f5374e5d5ecf5375b Author: Sebastian Ott Date: Thu Dec 25 13:39:14 2008 +0100 [S390] cio: commit all pmcw changes. Sometimes we change the pmcw configuration but don't call msch to transmit these changes to the channel subsystem. The patch fixes this by calling cio_commit_config in such cases. Signed-off-by: Sebastian Ott Signed-off-by: Martin Schwidefsky commit 13952ec12dfeea793ff83c2a96139ed57eb0b897 Author: Sebastian Ott Date: Thu Dec 25 13:39:13 2008 +0100 [S390] cio: introduce cio_commit_config To change the configuration of a subchannel we alter the modifiable bits of the subchannel's schib field and issue a modify subchannel. There can be the case that not all changes were applied -or worse- quietly overwritten by the hardware. With the next store subchannel we obtain the current state of the hardware but lose our target configuration. With this patch we introduce a subchannel_config structure which contains the target subchannel configuration. Additionally the msch wrapper cio_modify is replaced with cio_commit_config which copies the desired changes to a temporary schib. msch is then called with the temporary schib. This schib is only written back to the subchannel if all changes were applied. Signed-off-by: Sebastian Ott Signed-off-by: Martin Schwidefsky commit cdb912a40df8b8507ab60b3d52f9980c0ba1f44d Author: Sebastian Ott Date: Thu Dec 25 13:39:12 2008 +0100 [S390] cio: introduce cio_update_schib There is the chance that we get condition code 0 for a stsch but the resulting schib is not vaild. In the current code there are 2 cases: * we do a check for validity of the schib after stsch, but at this time we have already stored the invaild schib in the subchannel structure. This may lead to problems. * we don't do a check for validity, which is not that good either. The patch addresses both issues by introducing the stsch wrapper cio_update_schib which performs stsch on a local schib. This schib is only written back to the subchannel if it's valid. side note: For some functions (chp_events) the return codes are different now (-ENXIO vs -ENODEV) but this shouldn't do harm since the caller doesn't check for _specific_ errors. Signed-off-by: Sebastian Ott Signed-off-by: Martin Schwidefsky commit d6a30761d8116b8de8a5b5e79e68cce81d36414b Author: Cornelia Huck Date: Thu Dec 25 13:39:11 2008 +0100 [S390] cio: Use device_is_registered(). Check if a ccw device is registered via device_is_registered() and not via the old kludge of checking the membership in driver core internal klists. Signed-off-by: Cornelia Huck Signed-off-by: Martin Schwidefsky commit 283fdd0b8ab102080dbffe4bcaae245f9ceda184 Author: Cornelia Huck Date: Thu Dec 25 13:39:10 2008 +0100 [S390] cio: Dont call ->release directly. Just put the cdev's reference count to give up our reference. Signed-off-by: Cornelia Huck Signed-off-by: Martin Schwidefsky commit 90ed2b692fa75272d7395c4e4c2de4423d52f506 Author: Cornelia Huck Date: Thu Dec 25 13:39:09 2008 +0100 [S390] cio: Dont fail probe for I/O subchannels. If we fail the probe for an I/O subchannel, we won't be able to unregister it again since there are no sch_event() callbacks for unbound subchannels. Just succeed the probe in any case and schedule unregistering the subchannel. Signed-off-by: Cornelia Huck Signed-off-by: Martin Schwidefsky commit 5fb6b8544d9ccd2ed478af777f9e99e342eb8886 Author: Cornelia Huck Date: Thu Dec 25 13:39:08 2008 +0100 [S390] cio: Only register ccw_device for registered subchannel. There is a race between io_subchannel_register() and io_subchannel_sch_event() which may cause a subchannel to be unregistered because it is no longer operational before io_subchannel_register() had run. We need to check whether the subchannel is still registered before the ccw device can be registered and just bail out if it is not. Signed-off-by: Cornelia Huck Signed-off-by: Martin Schwidefsky commit 6eff208f479d6fe99fd92c0e6bf7e930bb45cd30 Author: Cornelia Huck Date: Thu Dec 25 13:39:07 2008 +0100 [S390] cio: Fix I/O subchannel refcounting. Subchannel refcounting was incorrect in some places, especially a refcount was missing when ccw_device_call_sch_unregister() was called and the refcount was not correctly switched after moving devices. Fix this by establishing the following rules: - The ccw_device obtains a reference on its parent subchannel when dev.parent is set and gives it up in its release function. This is needed because we need a parent reference for correct refcounting even before the ccw device is (if at all) registered. - When calling device_move(), obtain a reference on the new subchannel before moving the ccw device and give up the reference on the old parent after moving. This brings the refcount in line with the first rule. Signed-off-by: Cornelia Huck Signed-off-by: Martin Schwidefsky commit 9cd67421977a701272820987ff9e6f197b1b97b7 Author: Cornelia Huck Date: Thu Dec 25 13:39:06 2008 +0100 [S390] cio: Fix reference counting for online/offline. The current code attempts to get an extra reference count for online devices by doing a get_device() in ccw_device_online() and a put_device() in ccw_device_done(). However, this - incorrectly obtains an extra reference for disconnected devices becoming available again (since they are already online) - needs special checks for css_init_done in order to handle the console device - is not obvious and - may incorretly drop a reference count in ccw_device_done() if that function is called after path verification for a device that just became not operational. So let's just get the reference in ccw_device_set_online() and drop it in ccw_device_set_offline(). (Unfortunately, we still need the special case in io_subchannel_probe().) Signed-off-by: Cornelia Huck Signed-off-by: Martin Schwidefsky commit 97166f52fc84c0bc49c7dbba2a26720110acb458 Author: Cornelia Huck Date: Thu Dec 25 13:39:05 2008 +0100 [S390] cio: Put referernce on correct device after moving. Signed-off-by: Cornelia Huck Signed-off-by: Martin Schwidefsky commit c619d4223eaa063dd15ce44235b04487235f8cb7 Author: Peter Oberparleiter Date: Thu Dec 25 13:39:04 2008 +0100 [S390] cio: fix ccwgroup online vs. ungroup race condition Ensure atomicity of ungroup operation to prevent concurrent ungroup and online processing which may lead to use-after-release situations. Signed-off-by: Peter Oberparleiter Signed-off-by: Martin Schwidefsky commit 111e95a4cae01d6dadbbd1d8ab28dcd10fa5619c Author: Sebastian Ott Date: Thu Dec 25 13:39:03 2008 +0100 [S390] cio: move irritating comment. Due to former patches a comment and device id initialization were split from the addressed function call in io_subchannel_probe. Move it back to where it belongs. Signed-off-by: Sebastian Ott Signed-off-by: Martin Schwidefsky commit d7b604891b7ce7de93e3758ec6b3b7b7964e1884 Author: Peter Oberparleiter Date: Thu Dec 25 13:39:02 2008 +0100 [S390] cio: update sac values Values for the sac field have changed - update code accordingly. Signed-off-by: Peter Oberparleiter Signed-off-by: Martin Schwidefsky commit 191fd44c11e10daf9d2cabd16935952e9c735949 Author: Heiko Carstens Date: Thu Dec 25 13:39:01 2008 +0100 [S390] cio: get rid of compile warning Move cio_tpi() to the rest of the CONFIG_CCW_CONSOLE functions to get rid of this one: drivers/s390/cio/cio.c:115: warning: 'cio_tpi' defined but not used Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 547e3cec4f7a4846707db19cba43aa58eb07f48f Author: Martin Schwidefsky Date: Thu Dec 25 13:39:00 2008 +0100 [S390] remove ptrace warning on 31 bit. A kernel compile on 31 bit gives the following warnings in ptrace.c: arch/s390/kernel/ptrace.c: In function 'peek_user': arch/s390/kernel/ptrace.c:207: warning: unused variable 'dummy' arch/s390/kernel/ptrace.c: In function 'poke_user': arch/s390/kernel/ptrace.c:315: warning: unused variable 'dummy' Getting rid of the dummy variables removes the warnings. Signed-off-by: Martin Schwidefsky commit 32272a26974d2027384fd4010cd1780fca425d94 Author: Martin Schwidefsky Date: Thu Dec 25 13:38:59 2008 +0100 [S390] __page_to_pfn warnings For CONFIG_SPARSEMEM_VMEMMAP=y on s390 I get warnings like init/main.c: In function 'start_kernel': init/main.c:641: warning: format '%08lx' expects type 'long unsigned int', but argument 2 has type 'int' The warning can be suppressed with a cast to unsigned long in the CONFIG_SPARSEMEM_VMEMMAP=y version of __page_to_pfn. Signed-off-by: Martin Schwidefsky commit 91d5d45ee0a8978870fd12e5c3fe394a530ec2ed Author: Hendrik Brueckner Date: Thu Dec 25 13:38:58 2008 +0100 [S390] iucv: Locking free version of iucv_message_(receive|send) Provide a locking free version of iucv_message_receive and iucv_message_send that do not call local_bh_enable in a spin_lock_(bh|irqsave)() context. Signed-off-by: Hendrik Brueckner commit 44a01d5ba8a4d543694461cd3e178cfa6b3f221b Author: Hendrik Brueckner Date: Thu Dec 25 13:38:57 2008 +0100 [S390] s390/hvc_console: z/VM IUCV hypervisor console support This patch introduces a new hypervisor console (HVC) back-end that provides terminal access over the z/VM inter-user communication vehicle (IUCV). The z/VM IUCV communication is independent of the regular tcp/ip network and allows access even if there is no network connection between two z/VM guest virtual machines. The z/VM IUCV hypervisor console back-end helps the user to access a z/VM guest virtual machine that lacks of network connectivity; and thus, provides a "full-screen" terminal alternative to 3215/3270 terminal sessions. Use the hvc_iucv=[0..8] kernel boot parameter to specify the number of HVC terminals using a z/VM IUCV back-end. A recent version of the s390-tools package is required to establish a terminal connection to a z/VM IUCV hypervisor console back-end. Signed-off-by: Hendrik Brueckner Signed-off-by: Martin Schwidefsky commit 5d360a75f87f288e9a25d56cca503a7c7939e490 Author: Heiko Carstens Date: Thu Dec 25 13:38:56 2008 +0100 [S390] ftrace: function tracer backend for s390 This implements just the basic function tracer (_mcount) backend for s390. The dynamic variant will come later. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 98df67b324a2a986987ce29986e44ae9156b6698 Author: Kay Sievers Date: Thu Dec 25 13:38:55 2008 +0100 [S390] struct device - replace bus_id with dev_name(), dev_set_name() Acked-by: Cornelia Huck Acked-by: Greg Kroah-Hartman Signed-off-by: Kay Sievers Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 0cd4bd4754d51bdc8f9cd880c29910d0d52337bb Author: Stefan Haberland Date: Thu Dec 25 13:38:54 2008 +0100 [S390] dasd: call cleanup_cqr with request_queue_lock __dasd_cleanup_cqr should be called with request_queue_lock held and __dasd_block_process_erp with queue_lock Signed-off-by: Stefan Haberland Signed-off-by: Martin Schwidefsky commit 50afd20f8c3ce23994a21c389e7250e54a93bf55 Author: Stefan Haberland Date: Thu Dec 25 13:38:53 2008 +0100 [S390] dasd: correct sense byte condition for SIM SIM sense data are always 32 bit sense data so sense byte 27 bit 0 has not to be set. Signed-off-by: Stefan Haberland Signed-off-by: Martin Schwidefsky commit faf16aa9b368d48a0efbd0920718d68ec7a72542 Author: Cornelia Huck Date: Thu Dec 25 13:38:52 2008 +0100 [S390] dasd: Use accessors instead of using driver_data directly. Signed-off-by: Cornelia Huck Signed-off-by: Martin Schwidefsky commit 2bf373b3e3691d5cb57089a3897316a1b7d5ffa7 Author: Stefan Haberland Date: Thu Dec 25 13:38:51 2008 +0100 [S390] dasd: improve dasd statistics proc interface For a large number of I/O requests the values were shifted binary. The shift was not transparent for the user because the shift value was not displayed. To make this interface more human readable the values are shifted decimal and the scale factor is displayed. Signed-off-by: Stefan Haberland Signed-off-by: Martin Schwidefsky commit bd43a42b7e9880f426ed715f18bb4f963b7352af Author: Christof Schmitt Date: Thu Dec 25 13:38:50 2008 +0100 [S390] zfcp: Report microcode level through service level interface Register zfcp with the new /proc/service_level interface to report the FCP microcode level. When the adapter goes offline or a channel path disappears, zfcp unregisters, since the microcode version might change and zfcp does not know about it. Signed-off-by: Christof Schmitt Signed-off-by: Martin Schwidefsky commit 6bcac508fbebdca52f5a55d69a4316997ecb5391 Author: Martin Schwidefsky Date: Thu Dec 25 13:38:49 2008 +0100 [S390] service level interface. Add a new proc interface /proc/service_levels that allows any code to report a relevant service level, e.g. the microcode level of devices, the service level of the hypervisor, etc. Signed-off-by: Martin Schwidefsky commit 7a0b4cbc7d7d99763511b488b08bbc2607ddd1e3 Author: Jan Glauber Date: Thu Dec 25 13:38:48 2008 +0100 [S390] qdio: fix error reporting for hipersockets Hipersocket connections can encounter temporary busy conditions. In case of the busy bit set we retry the SIGA operation immediatelly. If the busy condition still persists after 100 ms we fail and report the error to the upper layer. The second stage retry logic is removed. In case of ongoing busy conditions the upper layer needs to reset the connection. The reporting of a SIGA error is now done synchronously to allow the network driver to requeue the buffers. Also no error trace is created for the temporary SIGA errors so the error message view is not flooded. Signed-off-by: Jan Glauber Signed-off-by: Martin Schwidefsky commit 50f769df1c4bea766c4eb927eae35728fb93e305 Author: Jan Glauber Date: Thu Dec 25 13:38:47 2008 +0100 [S390] qdio: improve inbound buffer acknowledgement - Use automatic acknowledgement of incoming buffers in QEBSM mode - Move ACK for non-QEBSM mode always to the newest buffer to prevent a race with qdio_stop_polling - Remove the polling spinlock, the upper layer drivers return new buffers in the same code path and could not run in parallel - Don't flood the error log in case of no-target-buffer-empty - In handle_inbound we check if we would overwrite an ACK'ed buffer, if so advance the pointer to the oldest ACK'ed buffer so we don't overwrite an empty buffer in qdio_stop_polling Signed-off-by: Jan Glauber Signed-off-by: Martin Schwidefsky commit 22f9934767f49012ffbae753b28b8055bd28348f Author: Jan Glauber Date: Thu Dec 25 13:38:46 2008 +0100 [S390] qdio: rework debug feature logging - make qdio_trace a per device view - remove s390dbf exceptions - remove CONFIG_QDIO_DEBUG, not needed anymore if we check for the level before calling sprintf - use snprintf for dbf entries - add start markers to see if the dbf view wrapped - add a global error view for all queues Signed-off-by: Jan Glauber Signed-off-by: Martin Schwidefsky commit 9a1ce28aeb7a8b1666eaa9f104c1a2f5a149f9df Author: Jan Glauber Date: Thu Dec 25 13:38:45 2008 +0100 [S390] qdio: fix compile warning under 31 bit The QEBSM instructions are only available for CONFIG_64BIT, they are not used under 31 bit. Make compiler happy about the false positive: drivers/s390/cio/qdio_main.c: In function ?qdio_inbound_q_done?: drivers/s390/cio/qdio_main.c:532: warning: ?state? may be used uninitialized in this function Signed-off-by: Jan Glauber Signed-off-by: Martin Schwidefsky commit 23589d057ac2da81e456d4a9dcdd9135fd96f493 Author: Jan Glauber Date: Thu Dec 25 13:38:44 2008 +0100 [S390] qdio: add eqbs/sqbs instruction counters Add counters for the eqbs and sqbs instructions that indicate how often we issued the instructions and how often the instructions returned with less buffers than specified. Signed-off-by: Jan Glauber Signed-off-by: Martin Schwidefsky commit bbd50e172f75b1d12ef9b1bcf593b51a44199016 Author: Jan Glauber Date: Thu Dec 25 13:38:43 2008 +0100 [S390] qdio: fix qeth port count detection qeth needs to get the port count information before qdio has allocated a page for the chsc operation. Extend qdio_get_ssqd_desc() to store the data in the specified structure. Signed-off-by: Jan Glauber Signed-off-by: Martin Schwidefsky commit 43c207e6e5b7e591b59294ee4fc9860b0e3de3b8 Author: Christian Maaser Date: Thu Dec 25 13:38:42 2008 +0100 [S390] ap: Minor code beautification. Changed some symbol names for a better and clearer code. Signed-off-by: Christian Maaser Signed-off-by: Felix Beck Signed-off-by: Martin Schwidefsky commit cb17a6364a29b4dfe5bbb00696032fb63d780157 Author: Felix Beck Date: Thu Dec 25 13:38:41 2008 +0100 [S390] zcrypt: Use of Thin Interrupts When the machine supports AP adapter interrupts polling will be switched off at module initialization and the driver will work in interrupt mode. Signed-off-by: Felix Beck Signed-off-by: Martin Schwidefsky commit 320c04c068c62b71fe9ea55e06e4968b4edc9e48 Author: Heiko Carstens Date: Thu Dec 25 13:38:40 2008 +0100 [S390] Move stfle to header file. stfle will be needed by the ap_bus module to figure out wether the AP queue adapter interruption facility is installed. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit ca9fc75a68ee98812bb6d212405fea039421910b Author: Heiko Carstens Date: Thu Dec 25 13:38:39 2008 +0100 [S390] convert s390 to generic IPI infrastructure Since etr/stp don't need the old smp_call_function semantics anymore we can convert s390 to the generic IPI infrastructure. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 0b3016b781abeabc502042c942cbc611e31250c7 Author: Martin Schwidefsky Date: Thu Dec 25 13:38:38 2008 +0100 [S390] serialize stp/etr work The work function dispatched with schedule_work() can be run twice on different cpus because run_workqueue clears the WORK_STRUCT_PENDING bit and then executes the function. Another cpu can call schedule_work() again and run the work function a second time before the first call is completed. This patch serialized the etr and stp work function with a mutex. Signed-off-by: Martin Schwidefsky commit 750887dedc088d28198b170bcae83695247797d1 Author: Heiko Carstens Date: Thu Dec 25 13:38:37 2008 +0100 [S390] convert etr/stp to stop_machine interface This converts the etr and stp code to the new stop_machine interface which allows to synchronize all cpus without allocating any memory. This way we get rid of the only reason why we haven't converted s390 to the generic IPI interface yet. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit b020632e40c3ed5e8c0c066d022672907e8401cf Author: Martin Schwidefsky Date: Thu Dec 25 13:38:36 2008 +0100 [S390] introduce vdso on s390 Add a vdso to speed up gettimeofday and clock_getres/clock_gettime for CLOCK_REALTIME/CLOCK_MONOTONIC. Signed-off-by: Martin Schwidefsky commit fc5243d98ac2575ad14a974b3c097e9ba874c03d Author: Martin Schwidefsky Date: Thu Dec 25 13:38:35 2008 +0100 [S390] arch_setup_additional_pages arguments arch_setup_additional_pages currently gets two arguments, the binary format descripton and an indication if the process uses an executable stack or not. The second argument is not used by anybody, it could be removed without replacement. What actually does make sense is to pass an indication if the process uses the elf interpreter or not. The glibc code will not use anything from the vdso if the process does not use the dynamic linker, so for statically linked binaries the architecture backend can choose not to map the vdso. Acked-by: Ingo Molnar Signed-off-by: Martin Schwidefsky commit a114a9d69d1362546b9dda651028acb311ddb7af Author: Christian Borntraeger Date: Thu Dec 25 13:38:34 2008 +0100 [S390] vmcp: remove BKL The vmcp driver uses the session->mutex for concurrent access of the data structures. Therefore, the BKL in vmcp_open does not protect against any other function in the driver. The BLK in vmcp_open would protect concurrent access to the module init but all necessary steps ave finished before misc_register is called. We can safely remove the lock_kernel from vcmp. Signed-off-by: Christian Borntraeger Signed-off-by: Martin Schwidefsky commit f414f5f15376764d68a31dc568d9e814d3fcb58a Author: Heiko Carstens Date: Thu Dec 25 13:37:59 2008 +0100 [S390] cpu topology: dont destroy cpu sets on topology change Call rebuild_sched_domains instead of arch_reinit_sched_domains if cpu topology changes. This leaves cpu sets alone which otherwise would be destroyed. If and how it makes sense to define cpu sets on a virtualized architecture is another question. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 8f2961c39eacd5d450048d8a3e91675486f3a015 Author: Al Viro Date: Thu Dec 25 13:37:58 2008 +0100 [S390] audit: get s390 ret_from_fork in sync with other architectures On s390 we have ret_from_fork jump not to the "do all work we normally do on return from syscall" as on x86, ppc, etc., but to the "do all such work except audit". Historical reasons - the codepath triggered when we have AUDIT process flag set is separated from the normall one and they converge at sysc_return, which is the common part of post-syscall work. And does not include calling audit_syscall_exit() - that's done in the end of sysc_tracesys path, just before that path jumps to sysc_return. IOW, the child returning from fork()/clone()/vfork() doesn't call audit_syscall_exit() at all, so no matter what we do with its audit context, we are not going to see the audit entry. The fix is simple: have ret_from_fork go to the point just past the call of sys_.... in the 'we have AUDIT flag set' path. There we have (64bit variant; for 31bit the situation is the same): sysc_tracenogo: tm __TI_flags+7(%r9),(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT) jz sysc_return la %r2,SP_PTREGS(%r15) # load pt_regs larl %r14,sysc_return # return point is sysc_return jg do_syscall_trace_exit which is precisely what we need - check the flag, bugger off to sysc_return if not set, otherwise call do_syscall_trace_exit() and bugger off to sysc_return. r9 has just been properly set by ret_from_fork itself, so we are fine. Tested on s390x, seems to work fine. WARNING: it's been about 16 years since my last contact with 3X0 assembler[1], so additional review would be very welcome. I don't think I've managed to screw it up, but... [1] that *was* in another country and besides, the box is dead... Signed-off-by: Al Viro Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 5439050f9f1aa92381ab9beccbea6ddf0c687c2b Author: Heiko Carstens Date: Thu Dec 25 13:37:57 2008 +0100 [S390] cpu topology: fix cpu_core_map initialization Common code doesn't call arch_update_cpu_topology() anymore on cpu hotplug. But our architecture backend relied on that in order to update the cpu_core_map. For machines without cpu topology support this leads uninitialized cpu_core_maps for later on added cpus. To solve this just initialize the maps with cpu_possible_map, since that will be always valid for machines without topology support. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 5250d329e38cdf7580faeb9c53c17d3588d7d19c Merge: a3eeeefbf1cd1d142c52238cc19c75d14c3bc8d5 468a15bb4cc61694495cc5ed7ffca29e87c79b69 67be403d897f818b1a5ecc201967b0ee6a0332f9 98db8df777438e16ad0f44a0fba05ebbdb73db8d 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 Author: Ingo Molnar Date: Thu Dec 25 13:11:00 2008 +0100 Merge branches 'tracing/ftrace', 'tracing/hw-branch-tracing' and 'tracing/ring-buffer'; commit 'v2.6.28' into tracing/core commit 468a15bb4cc61694495cc5ed7ffca29e87c79b69 Author: Peter Zijlstra Date: Tue Dec 16 08:07:03 2008 +0100 sched, trace: update trace_sched_wakeup() Impact: extend the wakeup tracepoint with the info whether the wakeup was real Add the information needed to distinguish 'real' wakeups from 'false' wakeups. Signed-off-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit a3eeeefbf1cd1d142c52238cc19c75d14c3bc8d5 Merge: 30cd324e9787ccc9a5ede59742d5409857550692 7e3cbc3f774f31ecd88a51edae3d9377f60a4c00 Author: Ingo Molnar Date: Thu Dec 25 12:48:18 2008 +0100 Merge branch 'x86/tsc' into tracing/core Merge it to resolve this incidental conflict between the BTS fixes/cleanups and changes in x86/tsc: Conflicts: arch/x86/kernel/cpu/intel.c commit 79a66b96c339626a3e4b226fefc0e45244cfe6ff Merge: bed4f13065b520e564adffbfcd1c1a764a9c887e c1c15b65ec30275575dac9322aae607075769fbc 1fcccb008be12ea823aaa392758e1e41fb82de9a 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 Author: Ingo Molnar Date: Thu Dec 25 11:50:41 2008 +0100 Merge branches 'x86/pat2' and 'x86/fpu'; commit 'v2.6.28' into x86/core commit 1fcccb008be12ea823aaa392758e1e41fb82de9a Author: Jaswinder Singh Date: Tue Dec 23 21:50:11 2008 +0530 x86: traps.c replace #if CONFIG_X86_32 with #ifdef CONFIG_X86_32 Impact: cleanup, avoid warning on X86_64 Fixes this warning on X86_64: CC arch/x86/kernel/traps.o arch/x86/kernel/traps.c:695:5: warning: "CONFIG_X86_32" is not defined Signed-off-by: Jaswinder Singh Signed-off-by: Ingo Molnar commit 5ce442fe2c9423ec5451222aee6f9b2127bb8311 Merge: 60cda2b53a7826d273198f668cd124f0eeda0e4a 2af752936b311a846622668f8b0f1893d8eccade Author: Takashi Iwai Date: Thu Dec 25 11:40:34 2008 +0100 Merge branch 'topic/udev-id-rename' into to-push commit 60cda2b53a7826d273198f668cd124f0eeda0e4a Merge: 9649745c8670eacc671e9cff72c5c1e346e13036 3d1ee379bd576c0830050c2d313e77b9f98a8013 Author: Takashi Iwai Date: Thu Dec 25 11:40:33 2008 +0100 Merge branch 'topic/sound-core-fix' into to-push commit 9649745c8670eacc671e9cff72c5c1e346e13036 Merge: a9c3c7e04b9a744eafb2e87c770e7300bbffa375 5e03c54eeb016cf1b066e9e48d30116814ca2459 Author: Takashi Iwai Date: Thu Dec 25 11:40:32 2008 +0100 Merge branch 'topic/snd-hrtimer' into to-push commit a9c3c7e04b9a744eafb2e87c770e7300bbffa375 Merge: cc4910850f93a8bb1cbafad038fd40f6da68c783 ade9b2fb9bf8114f77eefc70b9042417e62acf72 Author: Takashi Iwai Date: Thu Dec 25 11:40:31 2008 +0100 Merge branch 'topic/pcxhr-update' into to-push commit cc4910850f93a8bb1cbafad038fd40f6da68c783 Merge: a8022697811c3f2271df5ec14fa6f518b731b46a de04b102bfc9a13e96f0892305b394077ffb6514 Author: Takashi Iwai Date: Thu Dec 25 11:40:30 2008 +0100 Merge branch 'topic/oxygen' into to-push commit a8022697811c3f2271df5ec14fa6f518b731b46a Merge: a65056205cdf7efb96fb2558e4f1ec6bae2582ed cdc693643271b2e6a693cf8f6afb258cce01f058 Author: Takashi Iwai Date: Thu Dec 25 11:40:29 2008 +0100 Merge branch 'topic/jack-mechanical' into to-push commit a65056205cdf7efb96fb2558e4f1ec6bae2582ed Merge: 313769d9edb1bbd59d2e94f5069950eecfe6fa44 7645c4bfbb36f357f03815f5729c46ce8d89f008 Author: Takashi Iwai Date: Thu Dec 25 11:40:28 2008 +0100 Merge branch 'topic/hda' into to-push commit 313769d9edb1bbd59d2e94f5069950eecfe6fa44 Merge: 8afabfa74bbe81ac496e66f7f0ed8943dff5fdb5 f144b7f6679d9833bd3b94b91e452592b6d0e502 Author: Takashi Iwai Date: Thu Dec 25 11:40:28 2008 +0100 Merge branch 'topic/cs5535audio' into to-push commit 8afabfa74bbe81ac496e66f7f0ed8943dff5fdb5 Merge: 86b3aa390b4b9925f16a21b98441fd7abdb9fff2 1f04128a3db7c0f0e8b5d25323eba70ac342f47f Author: Takashi Iwai Date: Thu Dec 25 11:40:27 2008 +0100 Merge branch 'topic/convert-tasklet' into to-push commit 86b3aa390b4b9925f16a21b98441fd7abdb9fff2 Merge: e4456e71618ec2c98084c15824d93e997955b60c ebef7cfc81942686a994ca6239b195040f5d1e4d Author: Takashi Iwai Date: Thu Dec 25 11:40:26 2008 +0100 Merge branch 'topic/ca0106' into to-push commit e4456e71618ec2c98084c15824d93e997955b60c Merge: 5c8261e44eaebbc91f9fc1bbd3f3167e91a50a57 16950e09cf07b54abb78dd09f8ef3c85c6bdc9de Author: Takashi Iwai Date: Thu Dec 25 11:40:26 2008 +0100 Merge branch 'topic/audigy-capture-boost' into to-push commit 5c8261e44eaebbc91f9fc1bbd3f3167e91a50a57 Merge: facef8685b3ff95c01c33d9d836401d0dd26211d 472346da9cc4231bec03ff2032e0d5fd4037232c Author: Takashi Iwai Date: Thu Dec 25 11:40:25 2008 +0100 Merge branch 'topic/asoc' into to-push commit facef8685b3ff95c01c33d9d836401d0dd26211d Merge: 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 888dcb7cb26fb85dfe3486d28a2431d69d3e8148 Author: Takashi Iwai Date: Thu Dec 25 11:40:24 2008 +0100 Merge branch 'topic/aoa' into to-push commit 0ca59dd948a51c95d5a366d35f897bc5ef9df55d Author: Frederic Weisbecker Date: Wed Dec 24 23:30:02 2008 +0100 tracing/ftrace: don't trace on early stage of a secondary cpu boot, v3 Impact: fix a crash/hard-reboot on certain configs while enabling cpu runtime On some archs, the boot of a secondary cpu can have an early fragile state. On x86-64, the pda is not initialized on the first stage of a cpu boot but it is needed to get the cpu number and the current task pointer. This data is needed during tracing. As they were dereferenced at this stage, we got a crash while tracing a cpu being enabled at runtime. Some other archs like ia64 can have such kind of issue too. Changes on v2: We dropped the previous solution of a per-arch called function to guess the current state of a cpu. That could slow down the tracing. This patch removes the -pg flag on arch/x86/kernel/cpu/common.c where the low level cpu boot functions exist, on start_secondary() and a helper function used at this stage. Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 2a0d8366dde9c66d8f481bee56828b661e5c8bf1 Merge: 1f5175adeaa1d161f603ef351785a19814dfe900 139cdab0a2af6f5eaee47cc0144608e53b65279d 3d0890985ac4dff781b7feba19fedda547314749 bba7ebba3b17f4fe8c5907a32e16d9bd3fcf5192 7798dbf40ad9d295aa3a02eca700168e4327239a e189062a8ca55b0a1843f0346c3fae1a47297c34 Author: Roland Dreier Date: Wed Dec 24 20:35:42 2008 -0800 Merge branches 'cma', 'ehca', 'ipath', 'iser', 'mlx4' and 'nes' into for-next commit 7798dbf40ad9d295aa3a02eca700168e4327239a Author: Jack Morgenstein Date: Wed Dec 24 20:32:42 2008 -0800 IB/mlx4: Set ownership bit correctly when copying CQEs during CQ resize When resizing a CQ, when copying over unpolled CQEs from the old CQE buffer to the new buffer, the ownership bit must be set appropriately for the new buffer, or the ownership bit in the new buffer gets corrupted. Signed-off-by: Jack Morgenstein Signed-off-by: Roland Dreier commit e189062a8ca55b0a1843f0346c3fae1a47297c34 Author: Faisal Latif Date: Wed Dec 24 20:30:04 2008 -0800 RDMA/nes: Remove tx_free_list There is no lock protecting tx_free_list thus causing a system crash when skb_dequeue() is called and the list is empty. Since it did not give any performance boost under heavy load, remove it to simplify the code. Replace get_free_pkt() with dev_alloc_skb() to allocate MAX_CM_BUFFER skb for connection establishment/teardown as well as MPA request/response. Signed-off-by: Faisal Latif Signed-off-by: Chien Tung Signed-off-by: Roland Dreier commit 81ea714bf148fce35e931edcbdfd3aedda20d1dc Author: Sergio Luis Date: Mon Dec 22 01:16:15 2008 -0300 smackfs: check for allocation failures in smk_set_access() smackfs: check for allocation failures in smk_set_access() While adding a new subject/object pair to smack_list, smk_set_access() didn't check the return of kzalloc(). This patch changes smk_set_access() to return 0 or -ENOMEM, based on kzalloc()'s return. It also updates its caller, smk_write_load(), to check for smk_set_access()'s return, given it is no longer a void return function. Signed-off-by: Sergio Luis To: Casey Schaufler Cc: Ahmed S. Darwish Cc: LSM Cc: LKLM Acked-by: Casey Schaufler commit cbacc2c7f066a1e01b33b0e27ae5efbf534bc2db Merge: 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 74192246910ff4fb95309ba1a683215644beeb62 Author: James Morris Date: Thu Dec 25 11:40:09 2008 +1100 Merge branch 'next' into for-linus commit 0ee4a96902dd7858e65f378c86f428a0355bd841 Author: Herbert Xu Date: Thu Dec 25 11:05:13 2008 +1100 crypto: aes - Precompute tables The tables used by the various AES algorithms are currently computed at run-time. This has created an init ordering problem because some AES algorithms may be registered before the tables have been initialised. This patch gets around this whole thing by precomputing the tables. Signed-off-by: Herbert Xu commit ca38a814c6f86db0aa58884a31093d4f096e20aa Author: Lee Nipper Date: Sat Dec 20 17:09:25 2008 +1100 crypto: talitos - Ack done interrupt in isr instead of tasklet Previous commit for interrupt mitigation moved the done interrupt acknowlegement from the isr to the talitos_done tasklet. This patch moves the done interrupt acknowledgement back into the isr so that done interrupts will always be acknowledged. This covers the case for acknowledging interrupts for channel done processing that has actually already been completed by the tasklet prior to fielding a pending interrupt. Signed-off-by: Lee Nipper Signed-off-by: Kim Phillips Signed-off-by: Herbert Xu commit bcf84a38f05c55180bc1225901950c7e715c0d55 Author: Geert Uytterhoeven Date: Thu Dec 18 17:17:46 2008 +1100 crypto: testmgr - Correct comment about deflate parameters The comment for the deflate test vectors says the winbits parameter is 11, while the deflate module actually uses -11 (a negative window bits parameter enables the raw deflate format instead of the zlib format). Correct this, to avoid confusion about the format used. Signed-off-by: Geert Uytterhoeven Signed-off-by: Herbert Xu commit f0d1ec3a227e01a27ce20719bf7b58de86d44f0f Author: Harvey Harrison Date: Wed Dec 17 16:53:49 2008 +1100 crypto: salsa20 - Remove private wrappers around various operations ROTATE -> rol32 XOR was always used with the same destination, use ^= PLUS/PLUSONE use ++ or += Signed-off-by: Harvey Harrison Signed-off-by: Herbert Xu commit ad79cdd77fc1466e45cf923890f66bcfe7c43f12 Author: Jarod Wilson Date: Wed Dec 17 16:51:13 2008 +1100 crypto: des3_ede - permit weak keys unless REQ_WEAK_KEY set While its a slightly insane to bypass the key1 == key2 || key2 == key3 check in triple-des, since it reduces it to the same strength as des, some folks do need to do this from time to time for backwards compatibility with des. My own case is FIPS CAVS test vectors. Many triple-des test vectors use a single key, replicated 3x. In order to get the expected results, des3_ede_setkey() needs to only reject weak keys if the CRYPTO_TFM_REQ_WEAK_KEY flag is set. Also sets a more appropriate RES flag when a weak key is found. Signed-off-by: Jarod Wilson Signed-off-by: Herbert Xu commit bd9d20dba182ce4541b16b083eccd30fb252b9f4 Author: Adrian-Ken Rueegsegger Date: Wed Dec 17 16:49:02 2008 +1100 crypto: sha512 - Switch to shash This patch changes sha512 and sha384 to the new shash interface. Signed-off-by: Adrian-Ken Rueegsegger Signed-off-by: Herbert Xu commit f9e2bca6c22d75a289a349f869701214d63b5060 Author: Adrian-Ken Rueegsegger Date: Wed Dec 17 16:47:52 2008 +1100 crypto: sha512 - Move message schedule W[80] to static percpu area The message schedule W (u64[80]) is too big for the stack. In order for this algorithm to be used with shash it is moved to a static percpu area. Signed-off-by: Adrian-Ken Rueegsegger Signed-off-by: Herbert Xu commit 19e2bf146759aea38fd6c2daea08cb7a6367149b Author: Adrian-Ken Rueegsegger Date: Sun Dec 7 19:35:38 2008 +0800 crypto: michael_mic - Switch to shash This patch changes michael_mic to the new shash interface. Signed-off-by: Adrian-Ken Rueegsegger Signed-off-by: Herbert Xu commit 4946510baac6aaa8658528e3deefc7e9ba2951a9 Author: Adrian-Ken Rueegsegger Date: Sun Dec 7 19:34:37 2008 +0800 crypto: wp512 - Switch to shash This patch changes wp512, wp384 and wp256 to the new shash interface. Signed-off-by: Adrian-Ken Rueegsegger Signed-off-by: Herbert Xu commit f63fbd3d501b4283e1551e195cb74434a838064f Author: Adrian-Ken Rueegsegger Date: Wed Dec 3 19:58:32 2008 +0800 crypto: tgr192 - Switch to shash This patch changes tgr192, tgr160 and tgr128 to the new shash interface. Signed-off-by: Adrian-Ken Rueegsegger Signed-off-by: Herbert Xu commit 50e109b5b9c1f734e91a6e9b557bce48c9a88654 Author: Adrian-Ken Rueegsegger Date: Wed Dec 3 19:57:49 2008 +0800 crypto: sha256 - Switch to shash This patch changes sha256 and sha224 to the new shash interface. Signed-off-by: Adrian-Ken Rueegsegger Signed-off-by: Herbert Xu commit 14b75ba70da925a9f040a7575cb46ad7d394b117 Author: Adrian-Ken Rueegsegger Date: Wed Dec 3 19:57:12 2008 +0800 crypto: md5 - Switch to shash This patch changes md5 to the new shash interface. Signed-off-by: Adrian-Ken Rueegsegger Signed-off-by: Herbert Xu commit 808a1763cef93bf0f740d7e10dd9a2dfc4065b1a Author: Adrian-Ken Rueegsegger Date: Wed Dec 3 19:55:27 2008 +0800 crypto: md4 - Switch to shash This patch changes md4 to the new shash interface. Signed-off-by: Adrian-Ken Rueegsegger Signed-off-by: Herbert Xu commit 54ccb36776eb7e03b592bfab60393c7800851a0b Author: Adrian-Ken Rueegsegger Date: Tue Dec 2 21:08:20 2008 +0800 crypto: sha1 - Switch to shash This patch changes sha1 to the new shash interface. Signed-off-by: Adrian-Ken Rueegsegger Signed-off-by: Herbert Xu commit 3b8efb4c4147094652570d7791a516d07b7df8c2 Author: Herbert Xu Date: Sat Nov 8 10:11:09 2008 +0800 crypto: rmd320 - Switch to shash This patch changes rmd320 to the new shash interface. Signed-off-by: Herbert Xu commit d8a5e2e9f4e70ade136c67ce8242f0db4c2cddc7 Author: Herbert Xu Date: Sat Nov 8 09:58:10 2008 +0800 crypto: rmd256 - Switch to shash This patch changes rmd256 to the new shash interface. Signed-off-by: Herbert Xu commit e5835fba0206a331bdefdf5d805d1a384af37c44 Author: Herbert Xu Date: Sat Nov 8 09:18:51 2008 +0800 crypto: rmd160 - Switch to shash This patch changes rmd160 to the new shash interface. Signed-off-by: Herbert Xu commit 7c4468bc011131e77d0a872d6d9942390f8217ea Author: Herbert Xu Date: Sat Nov 8 09:10:40 2008 +0800 crypto: rmd128 - Switch to shash This patch changes rmd128 to the new shash interface. Signed-off-by: Herbert Xu commit d35d2454ce2175be77d2a366c2648597fd33a98f Author: Herbert Xu Date: Sat Nov 8 08:09:56 2008 +0800 crypto: null - Switch to shash This patch changes digest_null to the new shash interface. Signed-off-by: Herbert Xu commit 3751f402e099893c34089ed303dca6f5f92dbfd1 Author: Herbert Xu Date: Sat Nov 8 08:56:57 2008 +0800 crypto: hash - Make setkey optional Since most cryptographic hash algorithms have no keys, this patch makes the setkey function optional for ahash and shash. Signed-off-by: Herbert Xu commit b812eb0076235743872b5c9d18714d2324cc668d Author: Geert Uytterhoeven Date: Fri Nov 28 20:51:28 2008 +0800 crypto: testmgr - Validate output length in (de)compression tests When self-testing (de)compression algorithms, make sure the actual size of the (de)compressed output data matches the expected output size. Otherwise, in case the actual output size would be smaller than the expected output size, the subsequent buffer compare test would still succeed, and no error would be reported. Signed-off-by: Geert Uytterhoeven Signed-off-by: Herbert Xu commit dad3df2044b78ba68a92bf78e38a408bab80ff61 Author: Harvey Harrison Date: Fri Nov 28 20:49:19 2008 +0800 crypto: remove uses of __constant_{endian} helpers Base versions handle constant folding just fine. Signed-off-by: Harvey Harrison Signed-off-by: Herbert Xu commit 664134d2916109be76648977705a2bea3ff76427 Author: Ingo Molnar Date: Tue Nov 25 23:19:24 2008 +0800 crypto: testmgr - Fix error flow of test_comp This warning: crypto/testmgr.c: In function ‘test_comp’: crypto/testmgr.c:829: warning: ‘ret’ may be used uninitialized in this function triggers because GCC correctly notices that in the ctcount == 0 && dtcount != 0 input condition case this function can return an undefined value, if the second loop fails. Remove the shadowed 'ret' variable from the second loop that was probably unintended. Signed-off-by: Ingo Molnar Signed-off-by: Herbert Xu commit 5f459f0adc7581da01cdd9b7f84db14a4559a390 Author: Evgeniy Polyakov Date: Tue Nov 25 23:17:10 2008 +0800 crypto: hifn_795x - Use softirq kernel mapping in bh context Use KM_SOFTIRQ instead of KM_IRQ in tasklet context. Added bug_on on input no-page condition. Signed-off-by: Evgeniy Polyakov Signed-off-by: Herbert Xu commit d6a10c84a2a2b08bdd637852c9cc42c41e109b25 Author: Evgeniy Polyakov Date: Mon Nov 24 22:04:39 2008 +0800 crypto: hifn_795x - Fix queue management Fix queue management. Change ring size and perform its check not one after another descriptor, but using stored pointers to the last checked descriptors. Signed-off-by: Evgeniy Polyakov Signed-off-by: Herbert Xu commit 3ec858de6468e810953e41b8c154a0d605b25d68 Author: Patrick McHardy Date: Mon Nov 24 22:03:37 2008 +0800 crypto: hifn_795x - Remove some unused cruft Signed-off-by: Patrick McHardy Signed-off-by: Evgeniy Polyakov Signed-off-by: Herbert Xu commit ed4f92e3723a7d73bcd179ba09529094752063b2 Author: Patrick McHardy Date: Mon Nov 24 22:02:55 2008 +0800 crypto: hifn_795x - Fix queue processing Signed-off-by: Patrick McHardy Signed-off-by: Evgeniy Polyakov Signed-off-by: Herbert Xu commit 5df4c0c671bbb425e4a77dde5f51869aeebebd67 Author: Patrick McHardy Date: Mon Nov 24 22:01:42 2008 +0800 crypto: hifn_795x - Fix request context corruption HIFN uses the transform context to store per-request data, which breaks when more than one request is outstanding. Move per request members from struct hifn_context to a new struct hifn_request_context and convert the code to use this. Signed-off-by: Patrick McHardy Signed-off-by: Evgeniy Polyakov Signed-off-by: Herbert Xu commit 3416158680d5ba6fdb939e5bb52a8eba1ad5c027 Author: Patrick McHardy Date: Mon Nov 24 22:00:49 2008 +0800 crypto: hifn_795x - Don't copy src sg list Signed-off-by: Patrick McHardy Signed-off-by: Evgeniy Polyakov Signed-off-by: Herbert Xu commit 75741a034024f146ba5431602f3ad33a5df8363c Author: Patrick McHardy Date: Mon Nov 24 21:59:25 2008 +0800 crypto: hifn_795x - Fix DMA setup Signed-off-by: Patrick McHardy Signed-off-by: Evgeniy Polyakov Signed-off-by: Herbert Xu commit 09fbf7c0f24176ef3b450c590f220ed8033dd2c3 Author: Jarod Wilson Date: Mon Nov 24 21:20:13 2008 +0800 crypto: ansi_cprng - fix inverted DT increment routine The ANSI X9.31 PRNG docs aren't particularly clear on how to increment DT, but empirical testing shows we're incrementing from the wrong end. A 10,000 iteration Monte Carlo RNG test currently winds up not getting the expected result. From http://csrc.nist.gov/groups/STM/cavp/documents/rng/RNGVS.pdf : # CAVS 4.3 # ANSI931 MCT [X9.31] [AES 128-Key] COUNT = 0 Key = 9f5b51200bf334b5d82be8c37255c848 DT = 6376bbe52902ba3b67c925fa701f11ac V = 572c8e76872647977e74fbddc49501d1 R = 48e9bd0d06ee18fbe45790d5c3fc9b73 Currently, we get 0dd08496c4f7178bfa70a2161a79459a after 10000 loops. Inverting the DT increment routine results in us obtaining the expected result of 48e9bd0d06ee18fbe45790d5c3fc9b73. Verified on both x86_64 and ppc64. Signed-off-by: Jarod Wilson Acked-by: Neil Horman Signed-off-by: Herbert Xu commit 93027354d6e8a66a12dedb89d59b21cf7c2d35ed Author: Herbert Xu Date: Thu Nov 13 22:05:13 2008 +0800 libcrc32c: Select CRYPTO in Kconfig Selecting CRYPTO_CRC32C is not enough as CRYPTO which CRYPTO_CRC32C depends on may be disabled. This patch adds the select on CRYPTO. Signed-off-by: Herbert Xu commit aa1a85dbd1d3265ca36f684026fe7689b7836bed Author: Jarod Wilson Date: Thu Nov 13 22:03:20 2008 +0800 crypto: ansi_cprng - Avoid incorrect extra call to _get_more_prng_bytes While working with some FIPS RNGVS test vectors yesterday, I discovered a little bug in the way the ansi_cprng code works right now. For example, the following test vector (complete with expected result) from http://csrc.nist.gov/groups/STM/cavp/documents/rng/RNGVS.pdf ... Key = f3b1666d13607242ed061cabb8d46202 DT = e6b3be782a23fa62d71d4afbb0e922fc V = f0000000000000000000000000000000 R = 88dda456302423e5f69da57e7b95c73a ...when run through ansi_cprng, yields an incorrect R value of e2afe0d794120103d6e86a2b503bdfaa. If I load up ansi_cprng w/dbg=1 though, it was fairly obvious what was going wrong: ----8<---- getting 16 random bytes for context ffff810033fb2b10 Calling _get_more_prng_bytes for context ffff810033fb2b10 Input DT: 00000000: e6 b3 be 78 2a 23 fa 62 d7 1d 4a fb b0 e9 22 fc Input I: 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Input V: 00000000: f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 tmp stage 0: 00000000: e6 b3 be 78 2a 23 fa 62 d7 1d 4a fb b0 e9 22 fc tmp stage 1: 00000000: f4 8e cb 25 94 3e 8c 31 d6 14 cd 8a 23 f1 3f 84 tmp stage 2: 00000000: 8c 53 6f 73 a4 1a af d4 20 89 68 f4 58 64 f8 be Returning new block for context ffff810033fb2b10 Output DT: 00000000: e7 b3 be 78 2a 23 fa 62 d7 1d 4a fb b0 e9 22 fc Output I: 00000000: 04 8e cb 25 94 3e 8c 31 d6 14 cd 8a 23 f1 3f 84 Output V: 00000000: 48 89 3b 71 bc e4 00 b6 5e 21 ba 37 8a 0a d5 70 New Random Data: 00000000: 88 dd a4 56 30 24 23 e5 f6 9d a5 7e 7b 95 c7 3a Calling _get_more_prng_bytes for context ffff810033fb2b10 Input DT: 00000000: e7 b3 be 78 2a 23 fa 62 d7 1d 4a fb b0 e9 22 fc Input I: 00000000: 04 8e cb 25 94 3e 8c 31 d6 14 cd 8a 23 f1 3f 84 Input V: 00000000: 48 89 3b 71 bc e4 00 b6 5e 21 ba 37 8a 0a d5 70 tmp stage 0: 00000000: e7 b3 be 78 2a 23 fa 62 d7 1d 4a fb b0 e9 22 fc tmp stage 1: 00000000: 80 6b 3a 8c 23 ae 8f 53 be 71 4c 16 fc 13 b2 ea tmp stage 2: 00000000: 2a 4d e1 2a 0b 58 8e e6 36 b8 9c 0a 26 22 b8 30 Returning new block for context ffff810033fb2b10 Output DT: 00000000: e8 b3 be 78 2a 23 fa 62 d7 1d 4a fb b0 e9 22 fc Output I: 00000000: c8 e2 01 fd 9f 4a 8f e5 e0 50 f6 21 76 19 67 9a Output V: 00000000: ba 98 e3 75 c0 1b 81 8d 03 d6 f8 e2 0c c6 54 4b New Random Data: 00000000: e2 af e0 d7 94 12 01 03 d6 e8 6a 2b 50 3b df aa returning 16 from get_prng_bytes in context ffff810033fb2b10 ----8<---- The expected result is there, in the first "New Random Data", but we're incorrectly making a second call to _get_more_prng_bytes, due to some checks that are slightly off, which resulted in our original bytes never being returned anywhere. One approach to fixing this would be to alter some byte_count checks in get_prng_bytes, but it would mean the last DEFAULT_BLK_SZ bytes would be copied a byte at a time, rather than in a single memcpy, so a slightly more involved, equally functional, and ultimately more efficient way of fixing this was suggested to me by Neil, which I'm submitting here. All of the RNGVS ANSI X9.31 AES128 VST test vectors I've passed through ansi_cprng are now returning the expected results with this change. Signed-off-by: Jarod Wilson Acked-by: Neil Horman Signed-off-by: Herbert Xu commit 31a61bfc6e415fbd871317cbee7b8a4158d8ac5b Author: Julia Lawall Date: Thu Nov 13 21:19:04 2008 +0800 crypto: md4 - Use ARRAY_SIZE ARRAY_SIZE is more concise to use when the size of an array is divided by the size of its type or the size of its first element. The semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @i@ @@ #include @depends on i using "paren.iso"@ type T; T[] E; @@ - (sizeof(E)/sizeof(T)) + ARRAY_SIZE(E) // Signed-off-by: Julia Lawall Signed-off-by: Herbert Xu commit 0426c166424ea6d3d0412f47879c8ba268f874c4 Author: Herbert Xu Date: Tue Nov 11 12:20:06 2008 +0800 libcrc32c: Add crc32c_le macro The bnx2x driver actually uses the crc32c_le name so this patch restores the crc32c_le symbol through a macro. Signed-off-by: Herbert Xu commit 53b146ae598268edbe2bf7ea7dfec721d51adddd Author: Adrian-Ken Rueegsegger Date: Tue Nov 11 12:14:00 2008 +0800 libcrc32c: Fix "crc32c undefined" compilation error The latest shash changes leave crc32c undefined: [...] Building modules, stage 2. MODPOST 1381 modules ERROR: "crc32c" [net/sctp/sctp.ko] undefined! ERROR: "crc32c" [net/ipv4/netfilter/nf_nat_proto_sctp.ko] undefined! Adding EXPORT_SYMBOL(crc32c) to lib/libcrc32c.c fixes the compile error. This patch has been compile-tested only. Signed-off-by: Adrian-Ken Rueegsegger Signed-off-by: Herbert Xu commit 69c35efcf1576ab5f00cba83e8ca740923afb6c9 Author: Herbert Xu Date: Fri Nov 7 15:11:47 2008 +0800 libcrc32c: Move implementation to crypto crc32c This patch swaps the role of libcrc32c and crc32c. Previously the implementation was in libcrc32c and crc32c was a wrapper. Now the code is in crc32c and libcrc32c just calls the crypto layer. The reason for the change is to tap into the algorithm selection capability of the crypto API so that optimised implementations such as the one utilising Intel's CRC32C instruction can be used where available. Signed-off-by: Herbert Xu commit 8e3ee85e68c5d5c95451afd3e8f0997eec6f99e5 Author: Herbert Xu Date: Fri Nov 7 14:58:52 2008 +0800 crypto: crc32c - Test descriptor context format This patch adds a test for the requirement that all crc32c algorithms shall store the partial result in the first four bytes of the descriptor context. Signed-off-by: Herbert Xu commit b7e8bdadce6317eb13c13b9451d7114614aa1450 Author: Herbert Xu Date: Thu Nov 6 16:56:41 2008 +0800 crypto: crc32c-intel - Switch to shash This patch changes crc32c-intel to the new shash interface. Signed-off-by: Herbert Xu commit faccc4bba160784e834b758f23d598e500ac7108 Author: Herbert Xu Date: Tue Sep 9 17:23:07 2008 +1000 crypto: crc32c - Switch to shash This patch changes crc32c to the new shash interface. Signed-off-by: Herbert Xu commit 5f7082ed4f482f05db01d84dbf58190492ebf0ad Author: Herbert Xu Date: Sun Aug 31 22:21:09 2008 +1000 crypto: hash - Export shash through hash This patch allows shash algorithms to be used through the old hash interface. This is a transitional measure so we can convert the underlying algorithms to shash before converting the users across. Signed-off-by: Herbert Xu commit 67cd080c5070b4f17520c1385f7684206f4987b3 Author: Herbert Xu Date: Thu Nov 6 14:39:16 2008 +0800 crypto: api - Call type show function before legacy for proc This patch makes /proc/crypto call the type-specific show function if one is present before calling the legacy show functions for cipher/digest/compress. This allows us to reuse the type values for those legacy types. In particular, hash and digest will share one type value while shash is phased in as the default hash type. Signed-off-by: Herbert Xu commit dec8b78606ebd5f309c38f2fb10196ce996dd18d Author: Herbert Xu Date: Sun Nov 2 21:38:11 2008 +0800 crypto: hash - Add import/export interface It is often useful to save the partial state of a hash function so that it can be used as a base for two or more computations. The most prominent example is HMAC where all hashes start from a base determined by the key. Having an import/export interface means that we only have to compute that base once rather than for each message. Signed-off-by: Herbert Xu commit 3b2f6df08258e2875f42bd630eece7e7241a053b Author: Herbert Xu Date: Sun Aug 31 18:52:18 2008 +1000 crypto: hash - Export shash through ahash This patch allows shash algorithms to be used through the ahash interface. This is required before we can convert digest algorithms over to shash. Signed-off-by: Herbert Xu commit 7b5a080b3c46f0cac71c0d0262634c6517d4ee4f Author: Herbert Xu Date: Sun Aug 31 15:47:27 2008 +1000 crypto: hash - Add shash interface The shash interface replaces the current synchronous hash interface. It improves over hash in two ways. Firstly shash is reentrant, meaning that the same tfm may be used by two threads simultaneously as all hashing state is stored in a local descriptor. The other enhancement is that shash no longer takes scatter list entries. This is because shash is specifically designed for synchronous algorithms and as such scatter lists are unnecessary. All existing hash users will be converted to shash once the algorithms have been completely converted. There is also a new finup function that combines update with final. This will be extended to ahash once the algorithm conversion is done. This is also the first time that an algorithm type has their own registration function. Existing algorithm types will be converted to this way in due course. Signed-off-by: Herbert Xu commit 7b0bac64cd5b74d6f1147524c26216de13a501fd Author: Herbert Xu Date: Sun Sep 21 06:52:53 2008 +0900 crypto: api - Rebirth of crypto_alloc_tfm This patch reintroduces a completely revamped crypto_alloc_tfm. The biggest change is that we now take two crypto_type objects when allocating a tfm, a frontend and a backend. In fact this simply formalises what we've been doing behind the API's back. For example, as it stands crypto_alloc_ahash may use an actual ahash algorithm or a crypto_hash algorithm. Putting this in the API allows us to do this much more cleanly. The existing types will be converted across gradually. Signed-off-by: Herbert Xu commit 4a7794860ba2b56693b1d89fd485fd08cdc763e3 Author: Herbert Xu Date: Sat Sep 13 18:19:03 2008 -0700 crypto: api - Move type exit function into crypto_tfm The type exit function needs to undo any allocations done by the type init function. However, the type init function may differ depending on the upper-level type of the transform (e.g., a crypto_blkcipher instantiated as a crypto_ablkcipher). So we need to move the exit function out of the lower-level structure and into crypto_tfm itself. As it stands this is a no-op since nobody uses exit functions at all. However, all cases where a lower-level type is instantiated as a different upper-level type (such as blkcipher as ablkcipher) will be converted such that they allocate the underlying transform and use that instead of casting (e.g., crypto_ablkcipher casted into crypto_blkcipher). That will need to use a different exit function depending on the upper-level type. This patch also allows the type init/exit functions to call (or not) cra_init/cra_exit instead of always calling them from the top level. Signed-off-by: Herbert Xu commit 2566578a6feb9d9e39da41326afe8ed6022db3c5 Author: Neil Horman Date: Wed Nov 5 12:13:14 2008 +0800 crypto: ansi_cprng - Allow resetting of DT value This is a patch that was sent to me by Jarod Wilson, marking off my outstanding todo to allow the ansi cprng to set/reset the DT counter value in a cprng instance. Currently crytpo_rng_reset accepts a seed byte array which is interpreted by the ansi_cprng as a {V key} tuple. This patch extends that tuple to now be {V key DT}, with DT an optional value during reset. This patch also fixes a bug we noticed in which the offset of the key area of the seed is started at DEFAULT_PRNG_KSZ rather than DEFAULT_BLK_SZ as it should be. Signed-off-by: Neil Horman Signed-off-by: Jarod Wilson Signed-off-by: Herbert Xu commit 420a4b20c504e4674bf253601f793bdb254f99fa Author: Herbert Xu Date: Sun Aug 31 15:58:45 2008 +1000 crypto: padlock - Avoid resetting cword on successive operations Resetting the control word is quite expensive. Fortunately this isn't an issue for the common operations such as CBC and ECB as the whole operation is done through a single call. However, modes such as LRW and XTS have to call padlock over and over again for one operation which really hurts if each call resets the control word. This patch uses an idea by Sebastian Siewior to store the last control word used on a CPU and only reset the control word if that changes. Note that any task switch automatically resets the control word so we only need to be accurate with regard to the stored control word when no task switches occur. Signed-off-by: Herbert Xu commit 1c06da81a5d042d5fba67c4c533b16ae62a174ab Author: Kent Liu Date: Fri Oct 31 16:52:58 2008 +0800 crypto: crc32c-intel - Update copyright head The original copyright head for crc32c-intel.c is incorrect. Please merge the patch to update it. Signed-Off-By: Kent Liu Signed-off-by: Herbert Xu commit 4b24ea971a93f5d0bec34bf7bfd0939f70cfaae6 Author: Vishnu Suresh Date: Mon Oct 20 21:06:18 2008 +0800 crypto: talitos - Preempt overflow interrupts off-by-one fix In commit ec6644d6325b5a38525f1d5b20fd4bf7db05cf2a "crypto: talitos - Preempt overflow interrupts", the test in atomic_inc_not_zero was interpreted by the author to be applied after the increment operation (not before). This off-by-one fix prevents overflow error interrupts from occurring when requests are frequent and large enough to do so. Signed-off-by: Vishnu Suresh Signed-off-by: Kim Phillips Signed-off-by: Herbert Xu commit 32bd78e0a5d34cd8e34046502bddcf31aeb38e64 Author: Harvey Harrison Date: Sun Oct 12 20:40:12 2008 +0800 crypto: camellia - use kernel-provided bitops, unaligned access Remove the private implementation of 32-bit rotation and unaligned access with byteswapping. As a bonus, fixes sparse warnings: crypto/camellia.c:602:2: warning: cast to restricted __be32 crypto/camellia.c:603:2: warning: cast to restricted __be32 crypto/camellia.c:604:2: warning: cast to restricted __be32 crypto/camellia.c:605:2: warning: cast to restricted __be32 crypto/camellia.c:710:2: warning: cast to restricted __be32 crypto/camellia.c:711:2: warning: cast to restricted __be32 crypto/camellia.c:712:2: warning: cast to restricted __be32 crypto/camellia.c:713:2: warning: cast to restricted __be32 crypto/camellia.c:714:2: warning: cast to restricted __be32 crypto/camellia.c:715:2: warning: cast to restricted __be32 crypto/camellia.c:716:2: warning: cast to restricted __be32 crypto/camellia.c:717:2: warning: cast to restricted __be32 [Thanks to Tomoyuki Okazaki for spotting the typo] Tested-by: Carlo E. Prelz Signed-off-by: Harvey Harrison Signed-off-by: Herbert Xu commit d12d6b6d37cad766b390467e770eb0ab81345d78 Author: Neil Horman Date: Sun Oct 12 20:36:51 2008 +0800 crypto: testmgr - Trigger a panic when self test fails in FIPS mode The FIPS specification requires that should self test for any supported crypto algorithm fail during operation in fips mode, we need to prevent the use of any crypto functionality until such time as the system can be re-initialized. Seems like the best way to handle that would be to panic the system if we were in fips mode and failed a self test. This patch implements that functionality. I've built and run it successfully. Signed-off-by: Neil Horman Signed-off-by: Herbert Xu commit fe5720e2b7c1e8ff95d4bf18329517cf64ad1d70 Author: Kim Phillips Date: Sun Oct 12 20:33:14 2008 +0800 crypto: talitos - Perform auth check in h/w if on sec 2.1 and above SEC version 2.1 and above adds the capability to do the IPSec ICV memcmp in h/w. Results of the cmp are written back in the descriptor header, along with the done status. A new callback is added that checks these ICCR bits instead of performing the memcmp on the core, and is enabled by h/w capability. Signed-off-by: Kim Phillips After testing on different parts, another condition was added before using h/w auth check because different SEC revisions require different handling. The SEC 3.0 allows a more flexible link table where the auth data can span separate link table entries. The SEC 2.4/2.1 does not support this case. So a test was added in the decrypt routine for a fragmented case; the h/w auth check is disallowed for revisions not having the extent in the link table; in this case the hw auth check is done by software. A portion of a previous change for SEC 3.0 link table handling was removed since it became dead code with the hw auth check supported. This seems to be the best compromise for using hw auth check on supporting SEC revisions; it keeps the link table logic simpler for the fragmented cases. Signed-off-by: Lee Nipper Signed-off-by: Herbert Xu commit 1c2e8811eea5f0c5da3213ea206c2864fa4614fd Author: Lee Nipper Date: Sun Oct 12 20:29:34 2008 +0800 crypto: talitos - Implement done interrupt mitigation In talitos_interrupt, upon one done interrupt, mask further done interrupts, and ack only any error interrupt. In talitos_done, unmask done interrupts after completing processing. In flush_channel, ack each done channel processed. Keep done overflow interrupts masked because even though each pkt is ack'ed, a few done overflows still occur. Signed-off-by: Lee Nipper Signed-off-by: Kim Phillips Signed-off-by: Herbert Xu commit 40405f10b853ef404b395c6febca71b0de185490 Author: Kim Phillips Date: Sun Oct 12 20:19:35 2008 +0800 crypto: talitos - Pass correct interrupt status to error handler Since we ack early, the re-read interrupt status in talitos_error may be already updated with a new value. Pass the error ISR value directly in order to report and handle the error based on the correct error status. Also remove unused error tasklet. Signed-off-by: Kim Phillips Signed-off-by: Lee Nipper Signed-off-by: Herbert Xu commit a44b56cc69a5b017f396ed1daeaef6a63e086656 Author: Evgeniy Polyakov Date: Sun Oct 12 20:14:15 2008 +0800 crypto: hifn - Disable driver when physical size exceeds 32 bits On Tue, Sep 23, 2008 at 08:06:32PM +0200, Dimitri Puzin (max@psycast.de) wrote: > With this patch applied it still doesn't work as expected. The overflow > messages are gone however syslog shows > [ 120.924266] hifn0: abort: c: 0, s: 1, d: 0, r: 0. > when doing cryptsetup luksFormat as in original e-mail. At this point > cryptsetup hangs and can't be killed with -SIGKILL. I've attached > SysRq-t dump of this condition. Yes, I was wrong with the patch: HIFN does not support 64-bit addresses afaics. Attached patch should not allow HIFN to be registered on 64-bit arch, so crypto layer will fallback to the software algorithms. Signed-off-by: Evgeniy Polyakov Signed-off-by: Herbert Xu commit 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 Author: Linus Torvalds Date: Wed Dec 24 15:26:37 2008 -0800 Linux 2.6.28 Happy holidays.. commit 67be403d897f818b1a5ecc201967b0ee6a0332f9 Author: Ingo Molnar Date: Wed Dec 24 21:08:37 2008 +0100 Revert "x86: disable X86_PTRACE_BTS" This reverts commit 40f15ad8aadff5ebb621b17a6f303ad2cd3f847d. The CONFIG_X86_PTRACE_BTS bugs have been fixed via: c5dee61: x86, bts: memory accounting bf53de9: x86, bts: add fork and exit handling Signed-off-by: Ingo Molnar commit db8862eafe8a5d030a3b02e81b8bb47447c315e3 Merge: c5dee6177f4bd2095aab7d9be9f6ebdddd6deee9 c20137fc5329eaf24093fc48c52608dc66be8e5c Author: Ingo Molnar Date: Wed Dec 24 21:08:26 2008 +0100 Merge branch 'linus' into tracing/hw-branch-tracing commit c20137fc5329eaf24093fc48c52608dc66be8e5c Merge: 1806f826554efd206cebacc7f9f213c8e6493a5d 231ffc9c07021afcfb1afa229aa4935730e5163b Author: Linus Torvalds Date: Wed Dec 24 10:24:52 2008 -0800 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: V4L/DVB (9920): em28xx: fix NULL pointer dereference in call to VIDIOC_INT_RESET command V4L/DVB (9908a): MAINTAINERS: mark linux-uvc-devel as subscribers only V4L/DVB (9906): v4l2-compat: test for unlocked_ioctl as well. V4L/DVB (9885): drivers/media Kconfig's: fix bugzilla #12204 V4L/DVB (9875): gspca - main: Fix vidioc_s_jpegcomp locking. V4L/DVB (9781): [PATCH] Cablestar 2 I2C retries (fix CableStar2 support) V4L/DVB (9780): dib0700: Stop repeating after user stops pushing button commit 1806f826554efd206cebacc7f9f213c8e6493a5d Merge: 2523659ded0cb261a3e1fda82fe7e4ddb6e86b6f 40f15ad8aadff5ebb621b17a6f303ad2cd3f847d Author: Linus Torvalds Date: Wed Dec 24 10:24:14 2008 -0800 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: x86: disable X86_PTRACE_BTS commit 2523659ded0cb261a3e1fda82fe7e4ddb6e86b6f Merge: 5289f46b9de04bde181d833d48df9671b69c4b08 574f3c4f5c55e99ea60f71fd98cc54931d4b2eae Author: Linus Torvalds Date: Wed Dec 24 10:23:21 2008 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: ALSA: hda - Add missing terminators in patch_sigmatel.c commit 1f5175adeaa1d161f603ef351785a19814dfe900 Author: Aleksey Senin Date: Wed Dec 24 10:16:45 2008 -0800 RDMA/cma: Add IPv6 support Handle AF_INET6 cases where required, and use struct sockaddr_storage wherever an IPv6 address might be stored. Signed-off-by: Aleksey Senin Signed-off-by: Roland Dreier commit 38617c64bf9a10bf20e41d95b69bb81e8560fe9d Author: Aleksey Senin Date: Wed Dec 24 10:16:37 2008 -0800 RDMA/addr: Add support for translating IPv6 addresses Add support for translating AF_INET6 addresses to the IB address translation service. This requires using struct sockaddr_storage instead of struct sockaddr wherever an IPv6 address might be stored, and adding cases to handle IPv6 in addition to IPv4 to the various translation functions. Signed-off-by: Aleksey Senin Signed-off-by: Roland Dreier commit 7645c4bfbb36f357f03815f5729c46ce8d89f008 Merge: 74b7ff48a93f44198ac03cc4e628d713f53d4668 574f3c4f5c55e99ea60f71fd98cc54931d4b2eae Author: Takashi Iwai Date: Wed Dec 24 11:04:08 2008 +0100 Merge branch 'fix/hda' into topic/hda commit 574f3c4f5c55e99ea60f71fd98cc54931d4b2eae Author: Herton Ronaldo Krzesinski Date: Tue Dec 23 16:53:00 2008 -0200 ALSA: hda - Add missing terminators in patch_sigmatel.c Signed-off-by: Herton Ronaldo Krzesinski Cc: stable@kernel.org Signed-off-by: Takashi Iwai commit 40f15ad8aadff5ebb621b17a6f303ad2cd3f847d Author: Ingo Molnar Date: Wed Dec 24 10:49:51 2008 +0100 x86: disable X86_PTRACE_BTS there's a new ptrace arch level feature in .28: config X86_PTRACE_BTS bool "Branch Trace Store" it has broken fork() handling: the old DS area gets copied over into a new task without clearing it. Fixes exist but they came too late: c5dee61: x86, bts: memory accounting bf53de9: x86, bts: add fork and exit handling and are queued up for v2.6.29. This shows that the facility is still not tested well enough to release into a stable kernel - disable it for now and reactivate in .29. In .29 the hardware-branch-tracer will use the DS/BTS facilities too - hopefully resulting in better code. Signed-off-by: Ingo Molnar commit c1c15b65ec30275575dac9322aae607075769fbc Author: H. Peter Anvin Date: Tue Dec 23 10:10:40 2008 -0800 x86: PAT: fix address types in track_pfn_vma_new() Impact: cleanup, fix warning This warning: arch/x86/mm/pat.c: In function track_pfn_vma_copy: arch/x86/mm/pat.c:701: warning: passing argument 5 of follow_phys from incompatible pointer type Triggers because physical addresses are resource_size_t, not u64. This really matters when calling an interface like follow_phys() which takes a pointer to a physical address -- although on x86, being littleendian, it would generally work anyway as long as the memory region wasn't completely uninitialized. Signed-off-by: H. Peter Anvin Signed-off-by: Ingo Molnar commit 6332178d91ca1a9dbd99bd97cabbcf965d178e9f Merge: 908a7a16b852ffd618a9127be8d62432182d81b4 739840d529eb7505d3cbfe9d468bf1440c9a8e27 Author: David S. Miller Date: Tue Dec 23 17:56:23 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/ppp_generic.c commit 5289f46b9de04bde181d833d48df9671b69c4b08 Author: Kyle McMartin Date: Tue Dec 23 08:44:30 2008 -0500 parisc: disable UP-optimized flush_tlb_mm flush_tlb_mm's "optimized" uniprocessor case of allocating a new context for userspace is exposing a race where we can suddely return to a syscall with the protection id and space id out of sync, trapping on the next userspace access. Debugged-by: James Bottomley Tested-by: Helge Deller Signed-off-by: Kyle McMartin Signed-off-by: Linus Torvalds commit 8960223d5973b3eaf8cbc1984969bb6c7661e7b9 Merge: d519c8d9ccb7956e61a55ce3a0fd6a25f42cbb33 077ebed54fe66612f58b076628a72eca2be8df90 Author: Linus Torvalds Date: Tue Dec 23 17:01:40 2008 -0800 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 * 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: drm/radeon: fix correctness of irq_enabled check for radeon. commit d519c8d9ccb7956e61a55ce3a0fd6a25f42cbb33 Author: Harry Ciao Date: Tue Dec 23 13:57:16 2008 -0800 edac: fix edac core deadlock when removing a device When deleting an edac device, we have to wait for its edac_dev.work to be completed before deleting the whole edac_dev structure. Since we have no idea which work in current edac_poller's workqueue is the work we are conerned about, we wait for all work in the edac_poller's workqueue to be proceseed. This is done via flush_cpu_workqueue() which inserts a wq_barrier into the tail of the workqueue and then sleeping on the completion of this wq_barrier. The edac_poller will wake up sleepers when it is found. EDAC core creates only one kernel worker thread, edac_poller, to run the works of all current edac devices. They share the same callback function of edac_device_workq_function(), which would grab the mutex of device_ctls_mutex first before it checks the device. This is exactly where edac_poller and rmmod would have a great chance to deadlock. In below call trace of rmmod > ... > edac_device_del_device > edac_device_workq_teardown > flush_workqueue > flush_cpu_workqueue, device_ctls_mutex would have already been grabbed by edac_device_del_device(). So, on one hand rmmod would sleep on the completion of a wq_barrier, holding device_ctls_mutex; on the other hand edac_poller would be blocked on the same mutex when it's running any one of works of existing edac evices(Note, this edac_dev.work is likely to be totally irrelevant to the one that is being removed right now)and never would have a chance to run the work of above wq_barrier to wake rmmod up. edac_device_workq_teardown() should not be called within the critical region of device_ctls_mutex. Just like is done in edac_pci_del_device() and edac_mc_del_mc(), where edac_pci_workq_teardown() and edac_mc_workq_teardown() are called after related mutex are released. Moreover, an edac_dev.work should check first if it is being removed. If this is the case, then it should bail out immediately. Since not all of existing edac devices are to be removed, this "shutting flag" should be contained to edac device being removed. The current edac_dev.op_state can be used to serve this purpose. The original deadlock problem and the solution have been witnessed and tested on actual hardware. Without the solution, rmmod an edac driver would result in below deadlock: root@localhost:/root> rmmod mv64x60_edac EDAC DEBUG: mv64x60_dma_err_remove() EDAC DEBUG: edac_device_del_device() EDAC DEBUG: find_edac_device_by_dev() (hang for a moment) INFO: task edac-poller:2030 blocked for more than 120 seconds. "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. edac-poller D 00000000 0 2030 2 Call Trace: [df159dc0] [c0071e3c] free_hot_cold_page+0x17c/0x304 (unreliable) [df159e80] [c000a024] __switch_to+0x6c/0xa0 [df159ea0] [c03587d8] schedule+0x2f4/0x4d8 [df159f00] [c03598a8] __mutex_lock_slowpath+0xa0/0x174 [df159f40] [e1030434] edac_device_workq_function+0x28/0xd8 [edac_core] [df159f60] [c003beb4] run_workqueue+0x114/0x218 [df159f90] [c003c674] worker_thread+0x5c/0xc8 [df159fd0] [c004106c] kthread+0x5c/0xa0 [df159ff0] [c0013538] original_kernel_thread+0x44/0x60 INFO: task rmmod:2062 blocked for more than 120 seconds. "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. rmmod D 0ff2c9fc 0 2062 1839 Call Trace: [df119c00] [c0437a74] 0xc0437a74 (unreliable) [df119cc0] [c000a024] __switch_to+0x6c/0xa0 [df119ce0] [c03587d8] schedule+0x2f4/0x4d8 [df119d40] [c03591dc] schedule_timeout+0xb0/0xf4 Signed-off-by: Linus Torvalds commit 20ca9b3f4c6dfa0af8dd5b18a64df17eb994b54d Author: Li Zefan Date: Tue Dec 23 13:57:14 2008 -0800 cgroups: avoid accessing uninitialized data in failure path If cgroup_get_rootdir() failed, free_cg_links() will be called in the failure path, but tmp_cg_links hasn't been initialized at that time. I introduced this bug in the 2.6.27 merge window. Signed-off-by: Li Zefan Acked-by: Serge Hallyn Cc: Paul Menage Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit e368d3a836797ddf193b1ec18c97407a791d2451 Author: Sharyathi Nagesh Date: Tue Dec 23 13:57:12 2008 -0800 cgroups: suppress bogus warning messages Remove spurious warning messages that are thrown onto the console during cgroup operations. Signed-off-by: Alexey Dobriyan Signed-off-by: Sharyathi Nagesh Acked-by: Serge E. Hallyn Cc: Paul Menage Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit f00a189257836e5237ace3265f6991ef66a16c86 Author: Evgeniy Polyakov Date: Tue Dec 23 13:57:12 2008 -0800 w1: fix slave selection on big-endian systems During test of the w1-gpio driver i found that in "w1.c:679 w1_slave_found()" the device id is converted to little-endian with "cpu_to_le64()", but its not converted back to cpu format in "w1_io.c:293 w1_reset_select_slave()". Based on a patch created by Andreas Hummel. [akpm@linux-foundation.org: remove unneeded cast] Reported-by: Andreas Hummel Signed-off-by: Evgeniy Polyakov Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit cc6c2ca30074a0274c05dd3212c741a550f0d3c2 Author: Chris Elston Date: Tue Dec 23 13:57:10 2008 -0800 rtc: rtc-isl1208: reject invalid dates This patch for the rtc-isl1208 driver makes it reject invalid dates. Signed-off-by: Chris Elston [a.zummo@towertech.it: added comment explaining the check] Signed-off-by: Alessandro Zummo Cc: Hebert Valerio Riedel Cc: David Brownell Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 98db8df777438e16ad0f44a0fba05ebbdb73db8d Author: Steven Rostedt Date: Tue Dec 23 11:32:25 2008 -0500 ring-buffer: prevent false positive warning Impact: eliminate false WARN_ON message If an interrupt goes off after the setting of the local variable tail_page and before incrementing the write index of that page, the interrupt could push the commit forward to the next page. Later a check is made to see if interrupts pushed the buffer around the entire ring buffer by comparing the next page to the last commited page. This can produce a false positive if the interrupt had pushed the commit page forward as stated above. Thanks to Jiaying Zhang for finding this race. Reported-by: Jiaying Zhang Signed-off-by: Steven Rostedt Cc: Signed-off-by: Ingo Molnar commit a8ccf1d6f60e3e6ae63122e02378cd4d40dd4aac Author: Steven Rostedt Date: Tue Dec 23 11:32:24 2008 -0500 ring-buffer: fix dangling commit race Impact: fix stuck trace-buffers If an interrupt comes in during the rb_set_commit_to_write and pushes the tail page forward just at the right time, the commit updates will miss the adding of the interrupt data. This will cause the commit pointer to cease from moving forward. Thanks to Jiaying Zhang for finding this race. Reported-by: Jiaying Zhang Signed-off-by: Steven Rostedt Cc: Signed-off-by: Ingo Molnar commit bed4f13065b520e564adffbfcd1c1a764a9c887e Merge: 3e5621edb3392b28efb260ac99b2d26fb8b44e73 bf8bd66d0580f296f257d371ee41a0a137b541c7 Author: Ingo Molnar Date: Tue Dec 23 16:30:31 2008 +0100 Merge branch 'x86/irq' into x86/core commit 3e5621edb3392b28efb260ac99b2d26fb8b44e73 Merge: be9a1d3c2e559b267983bcf8b003997b83befb49 181de82ee3ffda1175f89d50c991dae31b79280c Author: Ingo Molnar Date: Tue Dec 23 16:30:27 2008 +0100 Merge branch 'x86/iommu' into x86/core commit be9a1d3c2e559b267983bcf8b003997b83befb49 Merge: fa623d1b0222adbe8f822e53c08003b9679a410c 7e3cbc3f774f31ecd88a51edae3d9377f60a4c00 Author: Ingo Molnar Date: Tue Dec 23 16:30:20 2008 +0100 Merge branch 'x86/tsc' into x86/core commit 7e3cbc3f774f31ecd88a51edae3d9377f60a4c00 Merge: 345077cd98ff5532b2d1158013c3fec7b1ae85ec f4166c54bfe04f64603974058e44fbd7cfef0ccc Author: Ingo Molnar Date: Tue Dec 23 16:29:31 2008 +0100 Merge branch 'x86/ptrace' into x86/tsc Conflicts: arch/x86/kernel/cpu/intel.c commit fa623d1b0222adbe8f822e53c08003b9679a410c Merge: 3d44cc3e01ee1b40317f79ed54324e25c4f848df 1ccedb7cdba6886939dd8b4c8f965a826f696e56 34945ede31071ac7d72270cc6c1893323f392b3f d4377974062122d6d9be0bbd8a910a0954714194 c415b3dce30dfb41234e118662e8720f47343a4f beeb4195cbc80b7489631361b7ed38b7518af433 f269b07e862c395d6981ab2c05d6bc34b0249e90 4e42ebd57b2e727b28bf5f6068e95cd19b0e807b e1286f2c686f5976e0424bb6195ece25e7a17607 878719e831d9e076961aa15d4049a57a6668c67a fd28a5b58dddf5cb5df162ae5c8797a63171c31d adf77bac052bb5bf0722b2ce2af9fefc5b2d2a71 8f2466f45f75e3cbe3aa2b69d33fd9d6e343b9cc 93093d099e5dd0c258fd530c12668e828c20df41 bb5574608a8375026510b4f983ffbb06ece33fe2 f34a10bd9f8cc95ebdc69a079db195636b2e22e0 b6fd6f26733e864fba2ea3eb1d716e23d2e66f3a 30604bb410b53efa9c93ee8f03d7aa7494094faa 5b9a0e14eb4bf40a7cb780af4723560e06753f2d 67bac792cd0c05b4b6e0393c32605b028b8dd533 7a9787e1eba95a166265e6a260cf30af04ef0a99 f4166c54bfe04f64603974058e44fbd7cfef0ccc 69b88afa8d114a43a3c0431722b79e31d9920692 8daa19051e1c7369c89ace7b18e74fe1f55dfa29 3e1e9002aa8b32bd4c95ac6c8fad376b7a8127fb 8403295e0fa460f6240e2d781e25dc29189f33c7 4db646b1af8fdcf01d690d29eeae44cd937edb0d 205516c12dbba003c26b42cfb41e598631300106 c8182f0016fb65a721c4fbe487909a2d56178135 ecbf29cdb3990c83d90d0c4187c89fb2ce423367 Author: Ingo Molnar Date: Tue Dec 23 16:27:23 2008 +0100 Merge branches 'x86/apic', 'x86/cleanups', 'x86/cpufeature', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/detect-hyper', 'x86/doc', 'x86/dumpstack', 'x86/early-printk', 'x86/fpu', 'x86/idle', 'x86/io', 'x86/memory-corruption-check', 'x86/microcode', 'x86/mm', 'x86/mtrr', 'x86/nmi-watchdog', 'x86/pat2', 'x86/pci-ioapic-boot-irq-quirks', 'x86/ptrace', 'x86/quirks', 'x86/reboot', 'x86/setup-memory', 'x86/signal', 'x86/sparse-fixes', 'x86/time', 'x86/uv' and 'x86/xen' into x86/core commit bf8bd66d0580f296f257d371ee41a0a137b541c7 Merge: 8ae936690972dfcad73d0dde1095b9f32af5ee95 1ccedb7cdba6886939dd8b4c8f965a826f696e56 Author: Ingo Molnar Date: Tue Dec 23 16:24:15 2008 +0100 Merge branch 'x86/apic' into x86/irq Conflicts: arch/x86/kernel/apic.c commit 1ccedb7cdba6886939dd8b4c8f965a826f696e56 Merge: a98f8fd24fb24fcb9a359553e64dd6aac5cf4279 929096fe9ff1f4b3645cf3919527ab47e8d5e17c Author: Ingo Molnar Date: Tue Dec 23 16:23:23 2008 +0100 Merge commit 'v2.6.28-rc9' into x86/apic commit 231ffc9c07021afcfb1afa229aa4935730e5163b Author: Devin Heitmueller Date: Tue Dec 16 23:09:35 2008 -0300 V4L/DVB (9920): em28xx: fix NULL pointer dereference in call to VIDIOC_INT_RESET command Fix a NULL pointer dereference that would occur if the video decoder tied to the em28xx supports the VIDIOC_INT_RESET call (for example: the cx25840 driver) Signed-off-by: Devin Heitmueller Signed-off-by: Mauro Carvalho Chehab commit 908a7a16b852ffd618a9127be8d62432182d81b4 Author: Neil Horman Date: Mon Dec 22 20:43:12 2008 -0800 net: Remove unused netdev arg from some NAPI interfaces. When the napi api was changed to separate its 1:1 binding to the net_device struct, the netif_rx_[prep|schedule|complete] api failed to remove the now vestigual net_device structure parameter. This patch cleans up that api by properly removing it.. Signed-off-by: Neil Horman Signed-off-by: David S. Miller commit f8f50b1bddd49eb171398cfc543c957884dc6e35 Author: Dale Farnsworth Date: Wed Dec 17 10:09:26 2008 +0000 powerpc/32: Wire up the trampoline code for kdump Wire up the trampoline code for ppc32 to relay exceptions from the vectors at address 0 to vectors at address 32MB, and modify Kconfig to enable Kdump support for all classic powerpcs. Signed-off-by: Dale Farnsworth Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit ccdcef72c249c289898b164eada89a61855b9287 Author: Dale Farnsworth Date: Wed Dec 17 10:09:13 2008 +0000 powerpc/32: Add the ability for a classic ppc kernel to be loaded at 32M Add the ability for a classic ppc kernel to be loaded at an address of 32MB. This done by fixing a few places that assume we are loaded at address 0, and by changing several uses of KERNELBASE to use PAGE_OFFSET, instead. Signed-off-by: Dale Farnsworth Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit 01695a9687e5a8d78589605037cc7828a5b67ac9 Author: Anton Vorontsov Date: Wed Dec 17 10:09:10 2008 +0000 powerpc/32: Allow __ioremap on RAM addresses for kdump kernel While for debugging it is good to catch bogus users of ioremap, though for kdump support it is more convenient to use __ioremap for copy_oldmem_page() (exactly as we do for PPC64 currently). Note that copy_oldmem_page() calls __ioremap with flags set to '0', so it should be safe with the regard to the caches. The other option is to use kmap_atomic_pfn()[1], but it will not work for kernels compiled without HIGHMEM. That is, on a board with 256MB RAM and crashkernel=64M@32M case, the !HIGHMEM capturing kernel maps 0-96M range, which does not include all the memory needed to capture the dump. And, obviously, accessing anything upper than 96M will cause faults. [1] http://ozlabs.org/pipermail/linuxppc-dev/2007-November/046747.html Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit 6f29c3298b18216198631cbee01c349adecb225d Author: Dale Farnsworth Date: Wed Dec 17 10:09:06 2008 +0000 powerpc/32: Setup OF properties for kdump Refactor the setting of kdump OF properties, moving the common code from machine_kexec_64.c to machine_kexec.c where it can be used on both ppc64 and ppc32. This will be needed for kdump to work on ppc32 platforms. Signed-off-by: Dale Farnsworth Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit 73753313884e8d063d9bf9d3e36325743ca006ba Author: Anton Vorontsov Date: Wed Dec 17 10:09:01 2008 +0000 powerpc/32/kdump: Implement crash_setup_regs() using ppc_save_regs() This replaces the dummy crash_setup_regs function with full-fledged crash_setup_regs implementation. On PPC32 we simply use the new ppc_save_regs function to dump the registers. Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit 322b439455ea62e6480e300c77b258e872896381 Author: Anton Vorontsov Date: Wed Dec 17 10:08:55 2008 +0000 powerpc: Prepare xmon_save_regs for use with kdump Today the arch/powerpc/xmon/setjmp.S file contains only the xmon_save_regs function. We want to use it for kdump purposes, so let's move the file into arch/powerpc/kernel/ and give the function a more generic name (ppc_save_regs). Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit 5be8554875bf3a1a42b7f04d5999b36e7c2fa88b Author: Anton Vorontsov Date: Tue Dec 16 06:23:08 2008 +0000 powerpc: Remove default kexec/crash_kernel ops assignments Default ops are implicit now. Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit 77733f8a33488307e7d4b9077d174647ecea92e1 Author: Anton Vorontsov Date: Tue Dec 16 06:23:05 2008 +0000 powerpc: Make default kexec/crash_kernel ops implicit This removes the need for each platform to specify default kexec and crash kernel ops, thus effectively adds a working kexec support for most 6xx/7xx/7xxx-based boards. Platforms that can't cope with default ops will explode in some weird way (a hang or reboot is most likely), which means that the board's kexec support should be fixed or blacklisted via dummy _prepare callback returning -ENOSYS. Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit 2e8e4f5b80e101da588af650de0ff6b3c475d6b3 Author: Dale Farnsworth Date: Tue Dec 16 06:22:59 2008 +0000 powerpc: Setup OF properties for ppc32 kexec Refactor the setting of kexec OF properties, moving the common code from machine_kexec_64.c to machine_kexec.c where it can be used on both ppc64 and ppc32. This is needed for kexec to work on ppc32 platforms. Signed-off-by: Dale Farnsworth Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit b906cfa397fdef8decbd36467b1f63c830a0bf2b Author: Sebastien Dugue Date: Thu Nov 27 00:59:52 2008 +0000 powerpc/pseries: Fix cpu hotplug Currently, pseries_cpu_die() calls msleep() while polling RTAS for the status of the dying cpu. However, if the cpu that is going down also happens to be the one doing the tick then we're hosed as the tick_do_timer_cpu 'baton' is only passed later on in tick_shutdown() when _cpu_down() does the CPU_DEAD notification. Therefore jiffies won't be updated anymore. This replaces that msleep() with a cpu_relax() to make sure we're not going to schedule at that point. With this patch my test box survives a 100k iterations hotplug stress test on _all_ cpus, whereas without it, it quickly dies after ~50 iterations. Signed-off-by: Sebastien Dugue Cc: Michael Ellerman Signed-off-by: Paul Mackerras commit fad7b9b51e21a97e9e2662f1b51869ed2d209097 Author: Paul Mackerras Date: Tue Dec 23 14:57:26 2008 +1100 powerpc: Fix KVM build on ppc440 Commit 2a4aca1144394653269720ffbb5a325a77abd5fa ("powerpc/mm: Split low level tlb invalidate for nohash processors") changed a call to _tlbia to _tlbil_all but didn't include the header that defines _tlbil_all, leading to a build failure on 440 if KVM is enabled. This fixes it. Signed-off-by: Paul Mackerras commit 889bd9b6dbcd426b8698c4a779dd7dbf247f57b8 Author: Oliver Neukum Date: Thu Dec 18 03:57:35 2008 +0000 net: startup race in hso driver The flag marking a device running must be set before the URBs for recption are submitted or they may complete too early and fail to resubmit. Signed-off-by: Oliver Neukum Signed-off-by: David S. Miller commit 05a8c1cbfe368df8c0d4eff710c370d2aa10245a Author: Jarek Poplawski Date: Mon Dec 22 19:44:13 2008 -0800 pkt_sched: Remove smp_wmb() in qdisc_watchdog() While implementing a TCQ_F_THROTTLED flag there was used an smp_wmb() in qdisc_watchdog(), but since this flag is practically used only in sch_netem(), and since it's not even clear what reordering is avoided here (TCQ_F_THROTTLED vs. __QDISC_STATE_SCHED?) it seems the barrier could be safely removed. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 4707470ae7441733822efcd680b0ef3971921c4d Author: Florian Fainelli Date: Mon Dec 22 19:40:38 2008 -0800 r6040: bump release number to 0.19 This patch bumps the release number of the driver. Signed-off-by: Florian Fainelli Signed-off-by: David S. Miller commit 3e7c469f07ff14cbf9a814739e1fc99a863e0943 Author: Joe Chou Date: Mon Dec 22 19:40:02 2008 -0800 r6040: save and restore MIER correctly in the interrupt routine This patch saves the MIER register contents before treating interrupts, then restores them correcty at the end of the interrupt routine. Signed-off-by: Joe Chou Signed-off-by: Florian Fainelli Signed-off-by: David S. Miller commit 11e5e8f5d14a1229706576184d2cf4c4556ed94c Author: Joe Chou Date: Mon Dec 22 19:38:17 2008 -0800 r6040: fix wrong logic in mdio code This patch fixes a reverse logic in the MDIO code. Signed-off-by: Joe Chou Signed-off-by: Florian Fainelli Signed-off-by: David S. Miller commit 5f2f6da76c429c42d54f73807f00b8fd761a7d68 Author: Jarek Poplawski Date: Mon Dec 22 19:35:28 2008 -0800 net: Fix oops in dev_ifsioc() A command like this: "brctl addif br1 eth1" issued as a user gave me an oops when bridge module wasn't loaded. It's caused by using a dev pointer before checking for NULL. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit adf77bac052bb5bf0722b2ce2af9fefc5b2d2a71 Author: H. Peter Anvin Date: Mon Dec 22 17:56:05 2008 -0800 x86: prioritize the FPU traps for the error code In the case of multiple FPU errors, prioritize the error codes, instead of returning __SI_FAULT, which ends up pushing a 0 as the error code to userspace, a POSIX violation. For i386, we will simply return if there are no errors at all; for x86-64 this is probably a "can't happen" (and the code should be unified), but for this patch, return __SI_FAULT|SI_KERNEL if this ever happens. Signed-off-by: H. Peter Anvin commit 077ebed54fe66612f58b076628a72eca2be8df90 Author: Dave Airlie Date: Mon Dec 22 17:11:02 2008 +1000 drm/radeon: fix correctness of irq_enabled check for radeon. This check was introduced with the logic the wrong way around. Fixes regression: http://bugzilla.kernel.org/show_bug.cgi?id=12216 Tested-by: François Valenduc Signed-off-by: Dave Airlie commit c47a75a45fa3a9d98b61f7e31983ffab2c44404f Merge: 0099f77e0a224cc461d0d2930ef0fdb32c61ba64 abe1dfab60e1839d115930286cb421f5a5b193f3 Author: Linus Torvalds Date: Mon Dec 22 14:52:00 2008 -0800 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: ACPI: don't cond_resched() when irqs_disabled() ACPI: fix 2.6.28 acpi.debug_level regression commit 0099f77e0a224cc461d0d2930ef0fdb32c61ba64 Merge: 2e8569669805c2d2620527464c395279b74892fc 9ecab6e5bf87f96dc2fa89cc9e8d5576fbde4325 Author: Linus Torvalds Date: Mon Dec 22 14:40:48 2008 -0800 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 * git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: drivers/ide/{cs5530.c,sc1200.c}: Move a dereference below a NULL test commit 9ecab6e5bf87f96dc2fa89cc9e8d5576fbde4325 Author: Julia Lawall Date: Mon Dec 22 23:05:06 2008 +0100 drivers/ide/{cs5530.c,sc1200.c}: Move a dereference below a NULL test In each case, if the NULL test is necessary, then the dereference should be moved below the NULL test. The semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @@ type T; expression E; identifier i,fld; statement S; @@ - T i = E->fld; + T i; ... when != E when != i if (E == NULL) S + i = E->fld; // Signed-off-by: Julia Lawall Acked-by: Sergei Shtylyov Signed-off-by: Bartlomiej Zolnierkiewicz commit def434c2319c5a336633cd73322e0f28a7091b01 Author: Benjamin Krill Date: Thu Nov 27 16:15:44 2008 +0100 powerpc/cell: add QPACE as a separate Cell platform Since the QPACE (Chromodynamics Parallel Computing on the Cell Broadband Engine) platform doesn't use a iommu, doesn't have PCI devices and a MPIC much lesser setup and configurations are needed. So far all devices are detected as OF device. A notifier function is used to set the dma_ops for the of_platform bus. Further this patch splits the PPC_CELL_NATIVE into PPC_CELL_COMMON which are parts that are shared with the QPACE platform and the rest. Signed-off-by: Benjamin Krill Signed-off-by: Arnd Bergmann commit e68558ddcdbfa8cc2e7811bcada3bcbeef79fd4a Author: Arnd Bergmann Date: Mon Dec 22 22:08:26 2008 +0100 powerpc/cell: fix build breakage with CONFIG_SPUFS disabled CBE_THERM and OPROFILE_CELL both cannot be built without SPU_FS disabled, so make the dependency explicit. Reported-by: Milton Miller Signed-off-by: Arnd Bergmann commit 2e8569669805c2d2620527464c395279b74892fc Merge: 7ef5f41c16fdddfc14e882a57200334614d8ffd6 ed2b03ed3cec2a4719d04ef208319f9de6a4258a Author: Linus Torvalds Date: Mon Dec 22 10:17:19 2008 -0800 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus * 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: MIPS: MIPS64R2: Fix buggy __arch_swab64 MIPS: Fix preprocessor warnings flaged by GCC 4.4 commit 7ef5f41c16fdddfc14e882a57200334614d8ffd6 Merge: 3d44cc3e01ee1b40317f79ed54324e25c4f848df 739840d529eb7505d3cbfe9d468bf1440c9a8e27 Author: Linus Torvalds Date: Mon Dec 22 10:12:54 2008 -0800 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: ppp: fix segfaults introduced by netdev_priv changes net: Fix module refcount leak in kernel_accept() commit 472346da9cc4231bec03ff2032e0d5fd4037232c Author: Roel Kluin Date: Mon Dec 22 17:40:45 2008 +0100 ALSA: ASoC: fix a typo in omp-pcm.c Fix a typo (& and &&) Signed-off-by: Roel Kluin Signed-off-by: Liam Girdwood Signed-off-by: Takashi Iwai commit c69134858722977a82f58cae88e7ffdb28e1e858 Author: Jarkko Nikula Date: Mon Dec 22 10:57:33 2008 +0200 ASoC: Fix DSP formats in SSM2602 audio codec Thanks to Troy Kisky for noticing. - DSP_A format has 1-bit data delay which corresponds to SSM6202 submode 2 - DSP_B has 0-bit data delay which corresponds to submode 1 - Currently driver sets them opposite so swap the submode setting Signed-off-by: Jarkko Nikula Cc: Cliff Cai Signed-off-by: Mark Brown commit bd25867a6cbe7a00ef7dbe8d9ddebc91b00b9b3f Author: Jarkko Nikula Date: Mon Dec 22 10:21:36 2008 +0200 ASoC: Fix incorrect DSP format in OMAP McBSP DAI and affected drivers - OMAP McBSP DAI driver claims to support DSP_A format which has 1-bit data delay but configures link for 0-bit data delay which is in fact DSP_B - Fix this by changing format from DSP_A to DSP_B - Fix also TLV320AIC23 codec and OSK5912 machine drivers since the same error is populated also there Signed-off-by: Jarkko Nikula Acked-by: Arun KS Signed-off-by: Mark Brown commit f5eda57f9bb17b6f09f7888dfc2c47db7aea45d4 Author: Roland Dreier Date: Mon Dec 22 07:15:05 2008 -0800 mlx4_core: Delete incorrect comment The comment about a "Conditional on hca_type" was cut-and-pasted from the mthca driver, and doesn't apply to mlx4 (since only one type of HCA is handled by mlx4). So just delete it. Signed-off-by: Roland Dreier commit b8dd786f9417e5885929bfe33a235c76a9c1c569 Author: Yevgeny Petrilin Date: Mon Dec 22 07:15:03 2008 -0800 mlx4_core: Add support for multiple completion event vectors When using MSI-X mode, create a completion event queue for each CPU. Report the number of completion EQs in a new struct mlx4_caps member, num_comp_vectors, and extend the mlx4_cq_alloc() interface with a vector parameter so that consumers can specify which completion EQ should be used to report events for the CQ being created. Signed-off-by: Yevgeny Petrilin Signed-off-by: Roland Dreier commit 59de580af1c2fd671b0cb27c41ff958859ae5288 Author: Paul Mundt Date: Mon Dec 22 19:32:27 2008 +0900 sh: oprofile: Fix up the module build. Signed-off-by: Paul Mundt commit 7d91fcfcb91dde7bc4586154942862c1724b3519 Author: Takanari Hayama Date: Mon Dec 22 11:05:03 2008 +0900 sh: add UIO support for JPU on SH7722. Add JPU support on Migo-R via UIO. This make use of Magnus's generic UIO platform driver. Chunk of contiguous memory to hold intermediate image and compressed data during encode and decode. Signed-off-by: Takanari Hayama Signed-off-by: Paul Mundt commit b0c50ad71746c4ad148f366135e3c87e32729108 Author: Paul Mundt Date: Mon Dec 22 03:40:10 2008 +0900 serial: sh-sci: Fix up port pinmux for SH7366. Signed-off-by: Paul Mundt commit 6f5cd2bd59c3bbaf073a7a52fcdefded939bd306 Author: Paul Mundt Date: Mon Dec 22 03:26:26 2008 +0900 sh: mach-rsk: Use uImage generation by default for rsk7201/7203. Signed-off-by: Paul Mundt commit 2ea40dec26da89702dface74365cd16cea9ded6c Author: Paul Mundt Date: Mon Dec 22 03:25:04 2008 +0900 sh: mach-sh03: Fix up pata_platform build breakage. Signed-off-by: Paul Mundt commit b5868e8cdeb35cd9ddc3a541f81f318b0f6772b3 Author: Magnus Damm Date: Fri Dec 19 15:34:50 2008 +0900 sh: enable deferred io LCDC on Migo-R Enable LCDC deferred io on Migo-R using 1s delay. As with other deferred io frame buffers user space code should use fsync() on the frame buffer device to trigger an update. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 8564557a03c12adb9c4b76ae1e86db4113a04d13 Author: Magnus Damm Date: Fri Dec 19 15:34:41 2008 +0900 video: sh_mobile_lcdcfb deferred io support This patch adds sh_mobile_lcdcfb deferred io support for SYS panels. The LCDC hardware block managed by the sh_mobile_lcdcfb driver supports RGB or SYS panel configurations. SYS panels come with an external display controller that is resposible for refreshing the actual LCD panel. RGB panels are controlled directly by the LCDC and they need to be refreshed by the LCDC hardware. In the case of SYS panels we can save some power by configuring the LCDC hardware block in one-shot mode. In this one-shot mode panel refresh is managed by software. This works well together with deferred io since it allows us to stop clocks for most of the time and only enable clocks when we actually want to trigger an update. When there is no fbdev activity the clocks are kept stopped which allows us to deep sleep. The refresh rate in deferred io mode is set using platform data. The same platform data can also be used to disable deferred io mode. As with other deferred io frame buffers user space code should use fsync() on the frame buffer device to trigger an update. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 37b4837959cb9aa60686ca0d85f73d819251abad Author: Magnus Damm Date: Fri Dec 19 15:34:32 2008 +0900 video: deferred io with physically contiguous memory Extend the deferred io code from only supporting vmalloc()ed frame buffer memory to support both vmalloc()ed and physically contiguous frame buffer memory. The sh_mobile_lcdcfb hardware does not support scatter gather so we need physically contiguous memory to back our frame buffer. Signed-off-by: Magnus Damm Acked-by: Jaya Kumar Signed-off-by: Paul Mundt commit 6e1038a95bebb8a1ad6066c95aa9c3af6963c9ff Author: Magnus Damm Date: Fri Dec 19 15:34:23 2008 +0900 video: deferred io cleanup Make sure the mmap callback is set to NULL in the deferred io cleanup function. This way we can enable and disable deferred io on the fly. Signed-off-by: Magnus Damm Acked-by: Jaya Kumar Signed-off-by: Paul Mundt commit 87884bd8ae42c875adbd62c84f47ed1cbb3e5090 Author: Magnus Damm Date: Fri Dec 19 15:34:09 2008 +0900 video: fix deferred io fsync() If CONFIG_FB_DEFERRED_IO is set, but there are framebuffers registered that does not make use of deferred io, then fsync() on those framebuffers will result in a crash. Fix that. This is needed for sh_mobile_lcdcfb since we always enable deferred io at compile time but we may disable deferred io for some types of hardware configurations. Signed-off-by: Magnus Damm Acked-by: Jaya Kumar Signed-off-by: Paul Mundt commit 0790555437df2b6070af8f021b8d2ef79e70e144 Author: Magnus Damm Date: Fri Dec 19 12:02:16 2008 +0900 sh: add LCDC interrupt configuration to AP325 and Migo-R Add LCDC interrupt resources for AP325 and Migo-R. The LCDC driver does not require interrupts at this point, but changes such as one-shot SYS mode using deferred io, and wait-for-vblank will both need this. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 2540c111ead82cad605ec2b14a1905ad914cc124 Author: Magnus Damm Date: Wed Dec 17 17:29:49 2008 +0900 sh_mobile_lcdc: use FB_SYS helpers instead of FB_CFB Since the sh_mobile_lcdc hardware has the framebuffer(s) in system RAM, use FB_SYS instead of FB_CFB. Also hook in read and write helpers. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit da9fdc8b44c421f14a68988ae4d1fb414d5edbf0 Author: Magnus Damm Date: Wed Dec 17 17:18:45 2008 +0900 sh: split coherent pages Split pages returned by dma_alloc_coherent() and make sure we free them one by one. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 78fb40263f34c65ade1693664db1af168d479588 Author: Paul Mundt Date: Wed Dec 17 16:23:32 2008 +0900 sh: dma: Kill off ISA DMA wrapper. There are no more users for this code, and it has been deprecated for some time, so just kill it off. Signed-off-by: Paul Mundt commit 5d2685d0b3edc51ecc92604d5b7f5ca9b29b90bb Author: Paul Mundt Date: Wed Dec 17 15:56:06 2008 +0900 sh: Conditionalize the code dumper on CONFIG_DUMP_CODE. We don't really want this enabled by default, but it is still quite useful for debugging. So, make it conditional and leave it off by default. Signed-off-by: Paul Mundt commit fe58cac35f48a9598c2a1360c2204c73f7bca2d2 Author: Paul Mundt Date: Wed Dec 17 15:36:50 2008 +0900 sh: Kill off the unused SH_ALPHANUMERIC debug option. Signed-off-by: Paul Mundt commit 740a3e677b70181d5e2b1458a27891209e3bf635 Author: Paul Mundt Date: Wed Dec 17 15:33:43 2008 +0900 sh: Enable skipping of bss on debug platforms for sh32 also. This enables the same functionality that sh64 has for sh32. When running on simulated hardware or via remote memory via the debug interface, memory is gauranteed to be zero on boot already, and skipping the zeroing of BSS has measurable boot time benefits. Signed-off-by: Paul Mundt commit 8a655053ca1593dd160dac2a4ee638fdec037d86 Author: Paul Mundt Date: Wed Dec 17 15:06:54 2008 +0900 doc: Update sh cpufreq documentation. The sh cpufreq driver is no longer limited to just the SH-3 and SH-4, update the documentation to reflect this fact accordingly. Signed-off-by: Paul Mundt commit 0146d7875976795fe364b4a3da629975ebd37671 Author: Paul Mundt Date: Wed Dec 17 14:58:04 2008 +0900 sh: mrshpc_setup_windows() needs to be inline. While no one should be including this file multiple times, flag it inline anyways just in case. Signed-off-by: Paul Mundt commit 1f6fd5c916c8416588f5797e7837b9e81b3251a5 Author: Paul Mundt Date: Wed Dec 17 14:53:24 2008 +0900 serial: sh-sci: sci_poll_get_char() is only used by CONFIG_CONSOLE_POLL. sci_poll_put_char() happens to also be used by the serial console, while sci_poll_get_char() is only used by CONFIG_CONSOLE_POLL. Add another gnarly ifdef to shut up the compiler. Signed-off-by: Paul Mundt commit 073da9c0de401e8683b6bc76c008a7e0850045d5 Author: Paul Mundt Date: Wed Dec 17 14:41:54 2008 +0900 sh: Kill off cf-enabler with extreme prejudice. Now that the rest of the boards that were using cf-enabler "generically" have switched to setting up their mappings on their own, only the mach-se boards were left using it. All of the cf-enabler using mach-se boards use a special initialization of the MRSHPC windows rather than going through the special PTE as other SH-4 platforms do. This consolidates the MRSHPC setup logic, hooks it up on the boards that care, and gets rid of any and all remaining references to cf-enabler. This has been long overdue, as cf-enabler has been the bane of arch/sh/kernel for the last 7 years. Good riddance. Signed-off-by: Paul Mundt commit 8c197c3afb4a9026973315cc6a3c189dd8434053 Author: Paul Mundt Date: Wed Dec 17 13:57:45 2008 +0900 sh: Add a simple edosk7705_defconfig for build testing. Signed-off-by: Paul Mundt commit 866ef8f48f2272ce8d84156c91964d730666ab33 Author: Paul Mundt Date: Wed Dec 17 13:57:15 2008 +0900 sh: mach-edosk7705: Fix up edosk7705 so it all builds again. Signed-off-by: Paul Mundt commit 0ef0e6ca426d28561b752e5f576932659295b928 Author: Paul Mundt Date: Wed Dec 17 13:14:22 2008 +0900 sh: mach-microdev: Split out the fdc37c93xapm initialization code. This makes the microdev code a bit more readable, and moves the setup for the SuperIO out on its own. Signed-off-by: Paul Mundt commit 43eeb0fb9f4e2aaefc4ae9dc964308ce8f55998b Author: Paul Mundt Date: Wed Dec 17 12:54:09 2008 +0900 sh: mach-sh03: Use __set_io_port_base(), kill off special ioport_map(). This also fixes up a long-standing bug for this platform where the PIO base was set to a register offset, rather than the actual PIO offset itself. Signed-off-by: Paul Mundt commit 8db806ec80ce80605005d1d558add716152a1134 Author: Paul Mundt Date: Wed Dec 17 12:48:41 2008 +0900 sh: mach-sh03: Move off of cf_enabler to pata_platform, as per landisk. This gets rid of the cf enabler use on mach-sh03 and switches to use pata_platform with the proper address directly. cf_enabler is subsequently disabled for mach-sh03. Signed-off-by: Paul Mundt commit 98a955da8525a4218c8186fba5a6b949f563bbea Author: Paul Mundt Date: Wed Dec 17 12:42:20 2008 +0900 sh: board-shmin: Convert shmin to use __set_io_port_base(). Drop the special mv_ioport_map() implementation, as this can simply use __set_io_port_base() directly. Signed-off-by: Paul Mundt commit 2125a46083dc5a9aa321c243e322638a9338cd11 Author: Paul Mundt Date: Wed Dec 17 12:31:32 2008 +0900 sh: Kill off dead mv_init_pci() from machvec. Signed-off-by: Paul Mundt commit 43f8f9b95b65dc05368cd82268895b9508b17d50 Author: Paul Mundt Date: Wed Dec 17 12:20:15 2008 +0900 sh: Simplify kernel_thread_helper() for sh32. This can use the same implementation as sh64, the generated assembly is the same between the new and old version, so there is not much point in leaving it open coded in inline assembly. This is preparatory work for future consolidation of the _32/_64 variants. Signed-off-by: Paul Mundt commit 7b80fb32b39a51ce3e1afa051f5a616eb8ecbed3 Author: Paul Mundt Date: Wed Dec 17 12:19:30 2008 +0900 sh: Kill off mv_heartbeat() from the machvec. Nothing is using this any more, so get rid of it before anyone gets the bright idea to start using it again. Signed-off-by: Paul Mundt commit b94ea27570e4ae87942e2f2ae386d4007ef7ac58 Author: Paul Mundt Date: Wed Dec 17 12:17:20 2008 +0900 sh: Kill off the cayman and microdev special heartbeat code. These can use the generic code instead. Signed-off-by: Paul Mundt commit ca0c14e447a399eb90a1c9a4357560c2a29ef499 Author: Paul Mundt Date: Wed Dec 17 11:47:59 2008 +0900 sh: Kill off sh_bios_in_gdb_mode(). With the reworked kgdb support, we always detach and reinitialize the stub. This was mostly a feature for handoffs between sh-ipl+g and the kgdb stub, but virtually no sh-ipl+g versions ever had this working right in the first place. Given that the sh-ipl+g stubs in general use today don't even support the GDB stub, and we have already killed off the special casing in the sh-sci serial driver, kill off this now unused symbol too. Signed-off-by: Paul Mundt commit a9df1ed92fc46cb7c9a9c6b74dbd8bbdc41f69ce Author: Paul Mundt Date: Wed Dec 17 11:39:33 2008 +0900 sh: export sh_bios_get_node_addr() symbol for stnic module. Signed-off-by: Paul Mundt commit 8e32018b0428038b492dad5b19e80bf7d6dc002d Author: Paul Mundt Date: Wed Dec 17 11:37:51 2008 +0900 sh: Run sh_bios through a long overdue Lindent. Signed-off-by: Paul Mundt commit d5701647f1aaaea5da20023976d86af79ab84707 Author: Paul Mundt Date: Tue Dec 16 20:07:27 2008 +0900 serial: sh-sci: Generalize port pin initialization. Signed-off-by: Paul Mundt commit d830fa4584a4015989b9b396a80779f28f277baa Author: Paul Mundt Date: Tue Dec 16 19:29:38 2008 +0900 serial: sh-sci: Tidy up fifo overrun error handling. Signed-off-by: Paul Mundt commit 762c69e3cad67a5cc5a01ba74e0b552ae4615258 Author: Paul Mundt Date: Tue Dec 16 18:55:26 2008 +0900 serial: sh-sci: pr_debug() -> dev_dbg() conversion. Signed-off-by: Paul Mundt commit 027e68724935599417faa7dd4123c117d18e2483 Author: Paul Mundt Date: Tue Dec 16 18:36:16 2008 +0900 serial: sh-sci: Fix up the cpufreq notifier to use the proper port clock. Signed-off-by: Paul Mundt commit d9341b51f28a5eb4ce231f4a3bbfa02aaecae626 Author: Paul Mundt Date: Tue Dec 16 09:36:25 2008 +0900 sh: oprofile: Convert op_model_sh7750 to new common interface. Signed-off-by: Paul Mundt commit 40a8b421b6a85f7786bf3007d316cd799efe8ea1 Author: Dave Peverley Date: Tue Dec 16 09:35:40 2008 +0900 sh: oprofile: Backtrace support. This patch improves the oprofile support on sh and adds backtrace support. Signed-off-by: Dave Peverley Signed-off-by: Chris Smith Signed-off-by: Paul Mundt commit 60a51fbe5dd2baef0f35bcf79f25ac1ee239a660 Author: Paul Mundt Date: Tue Dec 16 09:33:53 2008 +0900 sh: oprofile: Refactor common setup code for multiple driver support. This re-implements the old op_model_null code in to something more generic, where multiple drivers, backtrace, etc. can all be interfaced. Based largely on arch/mips/oprofile/common.c. Signed-off-by: Paul Mundt commit 70fe224743c11b57f9b63326313988fdcceb54df Author: Matt Fleming Date: Tue Dec 16 09:13:05 2008 +0900 sh: Enable GENERIC_HARDIRQS_NO__DO_IRQ for all SuperH machines After the recent changes to switch SuperH board support over to irq_chip it is now possible to set GENERIC_HARDIRQS_NO__DO_IRQ for all SuperH boards. Signed-off-by: Matt Fleming Signed-off-by: Paul Mundt commit 1a94757fae2ac2a9971694b55972f65a396a2f31 Author: Matt Fleming Date: Sun Dec 14 12:02:27 2008 +0000 sh: Convert Cayman boards from hw_interrupt_type to irq_chip I've been unable to even compile-test this change because I don't have an sh5 toolchain. All uses of hw_interrupt_type for SuperH boards have now been converted to use irq_chip. Signed-off-by: Matt Fleming Signed-off-by: Paul Mundt commit e85a47744bbdfbcc65c94b2af67499f861c6fa42 Author: Matt Fleming Date: Sun Dec 14 12:02:26 2008 +0000 sh: Convert Dreamcast support from hw_interrupt_type to irq_chip Switch the dreamcast IRQ code over to the irq_chip way of doing things, so that we can set GENERIC_HARDIRQS_NO__DO_IRQ for all SuperH boards. Also, whilst I'm here change some things to make checkpatch.pl happy: - Indent with tabs, not with spaces - Include , not - Fix the multi-line comment style - Fix some typos in the comments Tested-by: Adrian McMenamin Signed-off-by: Matt Fleming Signed-off-by: Paul Mundt commit bd0a22d21f26864792a0e49c20f5bd25d6c335e4 Author: Matt Fleming Date: Sun Dec 14 12:02:25 2008 +0000 sh: Convert SystemH board support from hw_interrupt_type to irq_chip ... as part of the hw_interrupt_type to irq_chip crusade. Signed-off-by: Matt Fleming Signed-off-by: Paul Mundt commit be729fd8900f0026238539de46d867d232d1e913 Author: Matt Fleming Date: Sun Dec 14 12:02:24 2008 +0000 sh: Convert Microdev boards from hw_interrupt_type to irq_chip This is part of the SH move to irq_chip. Signed-off-by: Matt Fleming Signed-off-by: Paul Mundt commit 180ae2037f5bc33b0597ddbb76d36b08a74a238a Author: Paul Mundt Date: Fri Dec 12 16:53:14 2008 +0900 sh: Provide sdivsi3/udivsi3/udivdi3 for sh64, kill off libgcc linking. This moves in the necessary libgcc bits and kills off the libgcc linking for sh64 kernels as well. Signed-off-by: Paul Mundt commit 209aa4fdc39eacc145a7f9c32a4b9ffcc68912c6 Author: Paul Mundt Date: Fri Dec 12 16:35:40 2008 +0900 fb: SH-5 uses __raw I/O accessors now also, drop the special casing. Signed-off-by: Paul Mundt commit 4466b20cfcfa718ff515b9e3886749cc025e2005 Author: Paul Mundt Date: Fri Dec 12 16:34:44 2008 +0900 sh: Add SH-5 optimized memcpy()/memset()/strcpy()/strlen(). Adopted from the uClibc optimized string versions. Signed-off-by: Paul Mundt commit 776d6c298aad42c2b8f191fa9ad826075e4d588c Author: Paul Mundt Date: Thu Dec 11 19:15:14 2008 +0900 sh: Kill off remaining CONFIG_SH_KGDB bits. Now that we use the generic stub, kill off all of the left over references. Signed-off-by: Paul Mundt commit 07d2a1a1cd8d609a4bc320a492670de57ec6bde1 Author: Paul Mundt Date: Thu Dec 11 19:06:43 2008 +0900 serial: sh-sci: Implement CONSOLE_POLL support and kill off old kgdb console. Signed-off-by: Paul Mundt commit ab6e570ba33dbee18c2520d386e0f367a9b573c3 Author: Paul Mundt Date: Thu Dec 11 18:46:46 2008 +0900 sh: Generic kgdb stub support. This migrates from the old bitrotted kgdb stub implementation and moves to the generic stub. In the process support for SH-2/SH-2A is also added, which the old stub never provided. Signed-off-by: Paul Mundt commit d7b01f78a3ae6a3cc21a16a1a3d377adc2227537 Author: Paul Mundt Date: Wed Dec 10 20:17:15 2008 +0900 sh: Enable HAVE_ARCH_TRACEHOOK for all SH, now that SH-5 supports it too. Signed-off-by: Paul Mundt commit dd76279b47dce2c0bd7c54997938ec4cb9f16884 Author: Paul Mundt Date: Wed Dec 10 20:14:15 2008 +0900 sh: Provide linux/regset.h interface for SH-5. Plugs in general and FPU regsets. Signed-off-by: Paul Mundt commit 94e2fb3d3e1f4cb6bad2b13c572c4c99ad734a37 Author: Paul Mundt Date: Wed Dec 10 19:46:18 2008 +0900 sh: Provide asm/syscall.h for SH-5. This provides the asm/syscall.h implementation for sh64 parts. Signed-off-by: Paul Mundt commit 6ac034375fe8b4341137657adf5e6ff0dcb5a99f Author: Paul Mundt Date: Wed Dec 10 19:26:44 2008 +0900 sh: Handle cases where setup{_rt,}_frame() fail on SH-5 signal delivery. Presently these cases are not handled properly due to the return value not being passed back. This needs to be correct to get proper behaviour out of things like the tracehook signal notifier, amongst others. Signed-off-by: Paul Mundt commit f15b2dc02fef0c53aa5ffa3c4617e184f057d402 Author: Paul Mundt Date: Wed Dec 10 19:18:46 2008 +0900 sh: Fix up syscall_get_nr() comment in syscall_32.h. Residual copy-and-paste damage, fix it up. Signed-off-by: Paul Mundt commit 35724a0aed6e62bdad640e8a1b8498329708226f Author: Paul Mundt Date: Wed Dec 10 18:17:19 2008 +0900 sh: Fix up the cpu_asid() return value on nommu. This ought to be unsigned long, rather than defaulting to int. Signed-off-by: Paul Mundt commit a99d6fde69dd9c73ac0b4e42a77ed1ebc714e56a Author: Paul Mundt Date: Wed Dec 10 18:06:36 2008 +0900 sh: Convert sh64 /proc/asids to debugfs and generic sh. This converts the sh64 /proc/asids entry to debugfs and enables it for all SH parts that have debugfs enabled. On MMU systems this can be used to determine which processes are using which ASIDs which in turn can be used for finer grained cache tag analysis. Signed-off-by: Paul Mundt commit 4d1f3bbec49a080cae753aaa44dc1fc7277b3e50 Author: Paul Mundt Date: Wed Dec 10 17:16:09 2008 +0900 sh: Kill off sh64's unused alloc/free_task_struct() definitions. These were left over from some time ago, sh64 never got around to defining __HAVE_ARCH_TASK_STRUCT_ALLOCATOR during the conversion, and it has no need to. Kill these off and use the generic versions instead. Signed-off-by: Paul Mundt commit 4eec8834f085e5eaf70e64849f879068256c07c5 Author: Paul Mundt Date: Wed Dec 10 17:09:36 2008 +0900 sh: mach-migor: Kill off unused Migo-R machvec. This kills off the special Migo-R machvec, as nothing is using it. By default this will switch to using the generic machvec, which provides the same functionality. This saves us a bit of space in the machvec section. Signed-off-by: Paul Mundt commit 4545bfa00a010b619a596b3893be820935c01bb7 Author: Magnus Damm Date: Wed Dec 10 17:02:13 2008 +0900 sh: add ov772x reset delay on Migo-R Add reset delay for the ov772x device on Migo-R. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit a6bc25abc89a72a8533dbb912a4116a8349b9d8c Author: Paul Mundt Date: Wed Dec 10 13:42:14 2008 +0900 sh: Drop the special qemu defconfig. QEMU can now use rts7751r2dplus_defconfig directly, there is no more need for a neutered defconfig. Signed-off-by: Paul Mundt commit bd40e8132336fbc3f2857f24720e11b6c1c9ac26 Author: Aoi Shinkai Date: Wed Dec 10 13:30:28 2008 +0900 sh: Delete unnecessary mov in the interrupt exception entry point. The INTEVT read at interrupt exception entry is uneccessary, as the read is deferred until we are ready to enter do_IRQ(). The kgdb nmi path still requires it, so move it there. Signed-off-by: Aoi Shinkai Signed-off-by: Paul Mundt commit 06be3724548a443a99d703ff79f43d6f1e2975f0 Author: Paul Mundt Date: Mon Dec 8 17:01:40 2008 +0900 sh: Fix an off-by-1 check in __mutex_fastpath_unlock(). Signed-off-by: Paul Mundt commit a47925ffd1b1b22ee004de36e2c8b811910616ba Author: Paul Mundt Date: Mon Dec 8 14:53:28 2008 +0900 sh: Update rsk701_defconfig to reflect mach-rsk changes. Signed-off-by: Paul Mundt commit ff15b9050677b9d63959cbca4c9abe36a05c72c9 Author: Paul Mundt Date: Mon Dec 8 14:46:55 2008 +0900 sh: Enable leds-gpio in rsk7203 defconfig. Signed-off-by: Paul Mundt commit ea0aac1e1327476d2f6a38f08145281237cf1b03 Author: Paul Mundt Date: Mon Dec 8 14:32:03 2008 +0900 sh: Consolidate rsk7203/7201 in to a new mach-rsk. RSK+ platforms have quite a few characteristics in common, so roll them together in to a shiny new RSK mach-type. Signed-off-by: Paul Mundt commit b5cfeac990cc164a3d3422aab88ac5b138fa822d Author: Paul Mundt Date: Mon Dec 8 12:02:28 2008 +0900 sh: Provide ftrace_make_call()/ftrace_make_nop(). Signed-off-by: Paul Mundt commit 4bc3e7192cf9a47d9864c4e8259859be55a480b3 Author: Paul Mundt Date: Mon Dec 8 11:49:19 2008 +0900 sh: Disable -Werror for arch/sh/oprofile/. drivers/oprofile/ objects have proven to be problematic in this regard, so simply disable -Werror for now. Signed-off-by: Paul Mundt commit 3b041227f7ef7c7e97f205c68c6069c0c62e5204 Author: Takashi YOSHII Date: Mon Dec 8 11:33:06 2008 +0900 sh: Add plain udivsi3 (not _i4*) for gcc-4.1 and lower. We chan't share code for udivsi3 and udivsi3_i4, because they have a different clobber list. Copy udivsi3 from gcc-4.1.2. As shown in arch/sh/lib/udivsi3.S (and -Os.S), .global __udivsi3_i4i .global __udivsi3_i4 .global __udivsi3 __udivsi3_i4i: ... Three symbols are sharing one code, which is actually udivsi3_i4i. But, this results unwanted code with gcc 4.1. In gcc, these three are treated as pseudo instructions that have their own clobber list apart from the usual calling convention. According to sh's machine description. The clobber list is as follows: - udivsi3_i4i : t,r1,pr,mach,macl - udivsi3_i4 : t,r0,r1,r4,r5,pr,dr0,dr2,dr4 - udivsi3 : t,r4,pr The caller of udivsi3 will be left with a broken r1 and mac*. gcc-4.1.x and older(at least to 3.4) generate udivsi3. ST's gcc-4.1.1 seems to be OK because it has _i4i. Signed-off-by: Takashi YOSHII Signed-off-by: Paul Mundt commit 1fdae0e59a3fc9e391d2422ddcfbdbdec1e8f724 Author: Nick Andrew Date: Fri Dec 5 14:07:57 2008 +1100 Fix incorrect use of loose in c-checksum.c Fix incorrect use of loose in c-checksum.c It should be 'lose', not 'loose'. Signed-off-by: Nick Andrew Signed-off-by: Paul Mundt commit 77ba93a7ac5fb0d9338bffbf97c787b8efe00806 Author: Paul Mundt Date: Mon Dec 8 11:25:50 2008 +0900 sh: Fix up the SH-4A mutex fastpath semantics. This fixes up the __mutex_fastpath_xxx() routines to match the semantics noted in the comment. Previously these were looping rather than doing a single-pass, which is counter-intuitive, as the slow path takes care of the looping for us in the event of contention. Signed-off-by: Paul Mundt commit c6f17cb2272121475c87592560534b157b17544e Author: Magnus Damm Date: Thu Dec 4 22:45:20 2008 +0900 sh: allow CONFIG_CPU_IDLE Allow users to select CONFIG_CPU_IDLE regardless of processor type or board. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit af998a9a0ae3291e86ddcae8e196a1cbf82c2457 Author: Magnus Damm Date: Thu Dec 4 22:45:12 2008 +0900 sh: allow CONFIG_PM Allow users to select CONFIG_PM regardless of processor type or board. Suspend and hibernation are only allowed on supported platforms. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 3e51762759db9e26c6c3e4e1010d80a50c62ca03 Author: Magnus Damm Date: Thu Dec 4 22:45:03 2008 +0900 sh: move the hp6xx pm code Move the not-so-generic pm code from arch/sh/kernel/pm.c to the platform directory together with the rest of the hp6xx pm code. This is done to let non-hp6xx platforms enable CONFIG_PM. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 04645185d06e8b0c92f6f1f9d76ede45637afc09 Author: Magnus Damm Date: Thu Dec 4 18:00:39 2008 +0900 sh: update se7343 defconfig Update the se7343 defconfig with: - use 33MHz PCLK - increase max number of SCIFs - add serial console configuration to compiled-in kernel command line - add 8250 serial port support - add sh-mobile-i2c driver - add uio driver to export VEU and VPU - add usb support and isp1161 host controller - add dm9601 ethernet-over-usb support - remove smc91x support Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 21c601bb2ec79be5c52a99bc6f4b513aff4fa236 Author: Magnus Damm Date: Thu Dec 4 18:00:30 2008 +0900 sh: remove ioport cruft and smc91x from se7343 Remove out-of-date se7343 ioport code including some old support for unknown-ne2000-pcmcia-card, cf-over-pcmcia and a mysterical smc91x that once must have been on a special daughterboard. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 5e5aacb0de70fa80e8b1a2b803ae9e2ad40b8e52 Author: Magnus Damm Date: Thu Dec 4 18:00:22 2008 +0900 sh: add isp1161 usb host device to se7343 Add isp1161 platform data to get usb host working on se7343. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 6aacba72dbdadc1445244e366ecf0263a160409e Author: Magnus Damm Date: Thu Dec 4 18:00:11 2008 +0900 sh: add st16c2550 devices to se7343 Add 8250 platform data to setup the ST16C2550C chip on se7343. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 5727003b5d23eb852c057d25459bba27cbf754c3 Author: Magnus Damm Date: Thu Dec 4 18:00:02 2008 +0900 sh: fix number of interrupts on se7343 Fix to make sure that the on-board interrupt sources are included in the interrupt count on se7343. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 551ea2b40ecf75e0035406fe75ba995233737e76 Author: Magnus Damm Date: Thu Dec 4 17:59:54 2008 +0900 sh: sh7343 scif configuration update Fix interrupt values for the first sh7343 SCIF port and update the configuration to include the remaining 3 ones. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 0c0daec7ca4f6a67daeafc4343bb453a4a246dbd Author: Magnus Damm Date: Mon Dec 1 15:40:33 2008 +0900 sh: propagate r_clk Make sure the 32 KHz r_clk rate gets propagated correctly. Without this fix the clocks for RTC, CMT, KEYSC and RWDT are stuck at 0 Hz. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 6feb348783767e3f38d7612e6551ee8b580ac4e9 Author: Peter Griffin Date: Fri Nov 28 22:56:45 2008 +0900 sh: RSK+ 7201 board support. This patch adds support for the RTE RSK+ 7201 board. Signed-off-by: Peter Griffin Signed-off-by: Paul Mundt commit 2825999e8a9bd7ab7e25a7e7475c7cdd10371a13 Author: Peter Griffin Date: Fri Nov 28 22:48:20 2008 +0900 sh: Add support for SH7201 CPU subtype. This patch adds support for the SH-2A FPU based SH7201 processor subtype. Signed-off-by: Peter Griffin Signed-off-by: Paul Mundt commit 135210b378d26f9a9a0c901d0089522c06b5807a Author: Matt Fleming Date: Fri Nov 28 08:58:30 2008 +0000 sh: Switch HD64461 from hw_interrupt_type to irq_chip Use struct irq_chip for the interrupt handler for the HD64461. Also convert some in{b,w} and out{b,w} calls to the equivalent __raw_* calls. Include and not to stop checkpatch.pl complaining. This change should now allow machines with HD64461 to define GENERIC_HARDIRQS_NO__DO_IRQ. Acked-by: Kristoffer Ericson Signed-off-by: Matt Fleming Signed-off-by: Paul Mundt commit 331ff103c7737294c8ecd7921564dae07b9e4632 Author: Yoshihiro Shimoda Date: Thu Nov 27 18:57:35 2008 +0900 sh: pci-sh7780: fix pci memory address mask Fix the problem that cannot work a PCI device when system memory size is 256Mbyte in 29bit address mode. Signed-off-by: Yoshihiro Shimoda Signed-off-by: Paul Mundt commit 22f131aa8de7a534339bf7051680234462f2e877 Author: Paul Mundt Date: Thu Nov 27 11:04:43 2008 +0900 sh: Provide a dyn_arch_ftrace struct definition. Needed for dynamic ftrace API changes. Signed-off-by: Paul Mundt commit 1da1180c6e28cf21be356e2701978727558fa198 Author: Paul Mundt Date: Wed Nov 26 15:52:44 2008 +0900 sh: Split out the idle loop for reuse between _32/_64 variants. Signed-off-by: Paul Mundt commit eb67cf14ae5c21609c200859d6f3eba71c591569 Author: Paul Mundt Date: Wed Nov 26 15:47:44 2008 +0900 sh: Consolidate cpu_relax()/cpu_sleep() definitions across _32/_64. Signed-off-by: Paul Mundt commit f74c034d52d0f908d5b929423a680962a2586199 Author: Paul Mundt Date: Wed Nov 26 15:22:50 2008 +0900 sh: do not latency trace idle. Description snipped from Steven Rostedt's PPC patch: When idle is called, interrupts are blocked, but the idle function will still wake up on an interrupt. The problem is that the interrupt disabled latency tracer will take this call to idle as a latency. This patch disables the latency tracing when going into idle. Signed-off-by: Paul Mundt commit 75fd24c1073adcd1e8ea43048d946bbfa34dfc64 Author: Paul Mundt Date: Wed Nov 26 15:20:35 2008 +0900 sh: Tidy up backtrace formatting with kallsyms disabled. Signed-off-by: Paul Mundt commit 9cfc9a9b6fff9ea7a19814b4472b3cb18b7bbdcc Author: Paul Mundt Date: Wed Nov 26 14:31:03 2008 +0900 sh: Add a simple code dumper for SUPERH32 show_regs(). This implements a simple show_code() that is in turn plugged in to show_regs() to provide minimal code dumping at the end of the trace. Built on top of a simple instruction disassembler derived from the binutils opcode table. Signed-off-by: Paul Mundt commit edfd6da0405520b147ab1473ad183a5b32be7082 Author: Paul Mundt Date: Wed Nov 26 13:06:04 2008 +0900 sh: Add a few more branch types to the branch emulator. This plugs in some extra encodings for matching more bsr/bsrf/jsr branches. Signed-off-by: Paul Mundt commit 5dd614761f05f56b93c94541aa92e6449920516c Author: Paul Mundt Date: Wed Nov 26 04:21:36 2008 +0900 sh: Re-add support for best fit ISA tuning if none is available. This was removed in the libgcc integration, but there are still some compilers that need this. We also relax the rules on the ISA tuning in the cases where there are no matches for the CPU tuning and adopt the -any default, which matches the intent of the isa-y target list. This compensates for mismatches where binutils supports a wide array of targets whilst the compiler is much more restricted. Signed-off-by: Paul Mundt commit 624c6a6750c502981d92de4579647fe2549451dd Author: Paul Mundt Date: Wed Nov 26 03:44:07 2008 +0900 sh: More movmem alias symbol exports for older compilers. Signed-off-by: Paul Mundt commit 95b781c239f53b4c7ecaf2989404ec6379b2409b Author: Paul Mundt Date: Wed Nov 26 00:29:58 2008 +0900 sh: Provide optimized unaligned loads on SH-4A. This adds support for unaligned loads on SH-4A, using the SH-4A's neutered movua.l instruction. As movua.l is r0-inspired, stores are still handled through the packed struct. Based on asm-generic/unaligned.h by Harvey Harrison. Signed-off-by: Paul Mundt commit 716777db7270255f1f7210fd87a7188b08c9a267 Author: Magnus Damm Date: Tue Nov 25 21:57:29 2008 +0900 sh: P4 ioremap pass-through This patch adds a pass-through case when ioremapping P4 addresses. Addresses passed to ioremap() should be physical addresses, so the best option is usually to convert the virtual address to a physical address before calling ioremap. This will give you a virtual address in P2 which matches the physical address and this works well for most internal hardware blocks on the SuperH architecture. However, some hardware blocks must be accessed through P4. Converting the P4 address to a physical and then back to a P2 does not work. One example of this is the sh7722 TMU block, it must be accessed through P4. Without this patch P4 addresses will be mapped using PTEs which requires the page allocator to be up and running. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 0c9122323acb0c3410dfbd219cb47f4c2e9305e3 Author: Michael Trimarchi Date: Tue Nov 25 21:37:14 2008 +0900 sh: Add SH-4A optimized fastpath mutex implementation. Add fast mutex path implementation for the SH4A architecture Signed-off-by: Michael Trimarchi Signed-off-by: Paul Mundt commit 5c72f303a2b7862dbba79f4176ddc922a440b567 Author: Nobuhiro Iwamatsu Date: Fri Nov 21 14:35:29 2008 +0900 sh: sh7760fb: Add support SH7720/SH7721 of Renesas SH7720 and 7721 has IP of Frame Buffer same as SH7760. This driver can support these. Signed-off-by: Nobuhiro Iwamatsu Signed-off-by: Paul Mundt commit 679dc3c92ca7894c3df70ee3333ff9878e7d90b9 Author: Nobuhiro Iwamatsu Date: Fri Nov 21 14:34:25 2008 +0900 sh: sh7760fb: Fix color pallette setting The setting of the color palette was wrong, fixed it. And removed fb_setcmap, and added fb_setcolreg function. Signed-off-by: Nobuhiro Iwamatsu Signed-off-by: Paul Mundt commit f617682e9cabd5616dc2fe53c67762790eeb14d3 Author: Steve Glendinning Date: Sun Nov 23 15:00:31 2008 +0000 sh: add SH DMAC burst mode constant The SH7709 datasheet defines bit 5 as set for burst mode, clear for cycle-steal mode. Signed-off-by: Steve Glendinning Signed-off-by: Paul Mundt commit c2c5883b3fce61388eb02ca328072400eb54769c Author: Steve Glendinning Date: Sun Nov 23 14:27:22 2008 +0000 sh: fix DMAOR register access on SH7709 sh7709 hardware manual says DMAOR is 16 bits long on this platform. Tested and working with a modified smsc911x ethernet driver (sh-dma support patch for this driver is coming soon). Signed-off-by: Steve Glendinning Signed-off-by: Paul Mundt commit 8085ac753164f45fd23603e7cad85a4c985cbf75 Author: Steve Glendinning Date: Sun Nov 23 14:27:21 2008 +0000 sh: Add platform-specific constants for SH7709 I'm using these constants in support of an in-house development board, and thought they may be useful to other users of SH7709. Signed-off-by: Steve Glendinning Signed-off-by: Paul Mundt commit 0d5bbe0bc2583c4dc06ea00adccf07c3acd1481d Author: Paul Mundt Date: Tue Nov 25 21:22:02 2008 +0900 sh: Provide optimized non-atomic bitops for SH-2A. This ties in the new SH-2A 32-bit non-atomic bitops. Signed-off-by: Paul Mundt commit 8bcc5c1c332af97ba731f99fda780a47911e476f Author: Paul Mundt Date: Thu Nov 20 15:28:47 2008 +0900 sh: Add -m4al tuning for SH4AL-DSP. Signed-off-by: Paul Mundt commit 9ef100287afa8e134de50258b8382cbc9d20f954 Author: Paul Mundt Date: Thu Nov 20 15:26:35 2008 +0900 sh: Add exports for __udivsi3/__sdivsi3 and the _i4 versions. Needed by older compilers. Signed-off-by: Paul Mundt commit 16b529d1d78060254d5bc735390915ca5ccf13a1 Author: Paul Mundt Date: Thu Nov 20 15:25:22 2008 +0900 sh: Convert to generic bitops for IRQ-toggling implementation. Signed-off-by: Paul Mundt commit 709420dd4e75083ee7920e61c2d0bcc3db9b7405 Author: Paul Mundt Date: Tue Nov 18 17:35:45 2008 +0900 sh: Specify sane default image targets for the SH-2 platforms. Signed-off-by: Paul Mundt commit 1aad54a99b6ce316c851ba99b2efe41998cfd37d Author: Paul Mundt Date: Tue Nov 18 17:33:48 2008 +0900 sh: Migrate necessary libgcc bits in to arch/sh/lib for SUPERH32. This moves in the necessary libgcc bits for SUPERH32 and drops the libgcc linking for the regular targets. This in turn allows us to rip out quite a few hacks both in sh_ksyms_32 and arch/sh/Makefile. Signed-off-by: Paul Mundt commit e9bf51e5ccc7703226c79888603e157066213700 Author: Paul Mundt Date: Tue Nov 18 14:22:39 2008 +0900 sh: __udivdi3 -> do_div() in softfloat lib. Inhibit the generation of __udivdi3 for the softfloat lib, use do_div() outright. Signed-off-by: Paul Mundt commit 00e825c6b99b39f12751ea45d38bb4d900de70f4 Author: Paul Mundt Date: Tue Nov 18 14:21:34 2008 +0900 sh: Fix clock framework compiler warnings. CC arch/sh/kernel/cpu/clock.o arch/sh/kernel/cpu/clock.c: In function 'clk_disable': arch/sh/kernel/cpu/clock.c:156: warning: 'return' with a value, in function returning void Introduced by ("sh: enable and disable clocks recursively"). Signed-off-by: Paul Mundt commit d6435102d4ca3b5655c0105abe924abec17ffeb8 Author: Paul Mundt Date: Tue Nov 18 12:40:39 2008 +0900 usb: Fix up sh_mobile usbf clock framework warnings. drivers/usb/gadget/m66592-udc.c: In function 'm66592_probe': drivers/usb/gadget/m66592-udc.c:1672: warning: label 'clean_up2' defined but not used drivers/usb/host/r8a66597-hcd.c: In function 'r8a66597_probe': drivers/usb/host/r8a66597-hcd.c:2401: warning: label 'clean_up2' defined but not used Added by commit 985fc7c81c7852f2e104c71cbe913ace683c9e6a ("sh: sh_mobile usbf clock framework support"). Reported-by: Stephen Rothwell Signed-off-by: Paul Mundt commit e7c98dc76d5823444059205e0c7aca49743679f3 Author: Michael Trimarchi Date: Thu Nov 13 18:18:35 2008 +0900 serial: sh-sci: Codestyle cleanup patch. Trivial coding style cleanups. Signed-off-by: Michael Trimarchi Signed-off-by: Paul Mundt commit af505b1eab55445e832bebbe5686f5bd22f1b717 Author: Paul Mundt Date: Thu Nov 13 12:20:26 2008 +0900 media: sh_mobile_ceu_camera: Add HAVE_CLK dependency. Signed-off-by: Paul Mundt commit fad57feba77d2e5b183e068cb6b90693e4567b40 Author: Matt Fleming Date: Wed Nov 12 20:11:47 2008 +0900 sh: dynamic ftrace support. First cut at dynamic ftrace support. Signed-off-by: Matt Fleming Signed-off-by: Paul Mundt commit ef6aff6884408db95ceb0f678f583536e0bd48f8 Author: Magnus Damm Date: Fri Oct 31 20:24:01 2008 +0900 sh: remove old sh_mobile mstpc clocks Remove the old sh_mobile mstpcr clocks. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit b51339fff240ff179730f8963a758147fd60f3ec Author: Magnus Damm Date: Fri Oct 31 20:23:26 2008 +0900 sh: sh_mobile lcdc clock framework support Add clock framework support to the lcdc driver and adjust the board specific code accordingly. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 765786e0aead7faf6c333176d22948c6f155fff1 Author: Magnus Damm Date: Fri Oct 31 20:22:38 2008 +0900 sh: sh_mobile usb clock framework support Add clock framework support to the usb/r8a66597 driver and adjust the cpu specific code accordingly. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit af5be79a7f8d7067588dc2863d37f7cd22e5f2de Author: Magnus Damm Date: Fri Oct 31 20:22:13 2008 +0900 sh: sh_mobile usbf clock framework support Add clock framework support to the usbf/m66592 driver and adjust the cpu specific code accordingly. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit a42b6dd69cb1c61c5f5a24061a227c22071786de Author: Magnus Damm Date: Fri Oct 31 20:21:44 2008 +0900 sh: sh_mobile ceu clock framework support Add clock framework support to the sh_mobile ceu and adjust the board specific code accordingly. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 090d951b69f29a8d5777c63570d4cd61d7efeb22 Author: Magnus Damm Date: Fri Oct 31 20:21:23 2008 +0900 sh: sh_mobile keysc clock framework support Add clock framework support to the sh_mobile keysc driver and adjust the board specific code accordingly. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit a5616bd0f19730a780c354110454ce37209f1ded Author: Magnus Damm Date: Fri Oct 31 20:20:55 2008 +0900 sh: sh_mobile i2c clock framework support Add clock framework support to the sh_mobile i2c driver and adjust the processor specific code accordingly. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit f2eb0109fb4268505b0737cfe661542eb6151907 Author: Magnus Damm Date: Fri Oct 31 20:20:23 2008 +0900 sh: sh_mobile mstpcr clocks for sh7366 Add sh7366 mstpcr bits and information about their parent clocks. The datasheet is pretty clear about the clocks on this device. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 6e88d030a1491ec0f130dc4765d06b22f7db6610 Author: Magnus Damm Date: Fri Oct 31 20:19:38 2008 +0900 sh: sh_mobile mstpcr clocks for sh7343 Add sh7343 mstpcr bits and information about their parent clocks. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit f14c017d6b2e9e97b0d5f0b33f573797dde4d4f1 Author: Magnus Damm Date: Fri Oct 31 20:16:08 2008 +0900 sh: sh_mobile mstpcr clocks for sh7723 Add sh7723 mstpcr bits and information about their parent clocks. The datasheet is pretty clear about the clocks on this device. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit ecf399bdafb83b6c0091837dd2a0612470e9c8d2 Author: Magnus Damm Date: Fri Oct 31 20:15:48 2008 +0900 sh: sh_mobile mstpcr clocks for sh7722 Add sh7722 mstpcr bits and information about their parent clocks. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 7c7e02a28b4e7212dcdcc24bbd2b137790504a84 Author: Magnus Damm Date: Fri Oct 31 20:15:07 2008 +0900 sh: new sh_mobile mstpcr clocks base code Add base code to handle new mstpcr clocks. Make sure clock rates propagate. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 1dc7b776d91ac9f016982e418e74cb14f63c5b02 Author: Magnus Damm Date: Fri Oct 31 20:14:28 2008 +0900 sh: use arch_flags for sh_mobile mstpcr clock bits Use arch_flags to keep track of register and flag number. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit d902d04f5410176bdec77bfefa032516326eb542 Author: Magnus Damm Date: Fri Oct 31 20:14:03 2008 +0900 sh: sh_mobile clock divider index fix Use divider index value instead of divider value. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit d12cfac146d2b512496bf974b83ee1210032065f Author: Magnus Damm Date: Fri Oct 31 20:13:32 2008 +0900 sh: enable and disable clocks recursively Recurse and make sure parent clocks get enabled/disabled. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 4a4a9be3ebdbf17957d29e3521f328a1145f9431 Author: Paul Mundt Date: Wed Nov 12 13:17:38 2008 +0900 sh: Move arch_get_unmapped_area() in to arch/sh/mm/mmap.c. Now that arch/sh/mm/mmap.c exists, move arch_get_unmapped_area() there. Follows the ARM change. Signed-off-by: Paul Mundt commit ed2b03ed3cec2a4719d04ef208319f9de6a4258a Author: David Daney Date: Wed Dec 17 13:28:39 2008 -0800 MIPS: MIPS64R2: Fix buggy __arch_swab64 The way the code is written it was assuming dshd has the function of a hypothetical dshw instruction ... Signed-off-by: David Daney Signed-off-by: Ralf Baechle commit 08d9d1c4d44ce43856da048cb0737ef769b61e9a Author: David Daney Date: Wed Dec 17 18:19:18 2008 -0800 MIPS: Fix preprocessor warnings flaged by GCC 4.4 Signed-off-by: David Daney Signed-off-by: Ralf Baechle commit 826e08b0157c0ce8a80dfe3c0a6c5a1540dd0b1d Author: Ingo Molnar Date: Mon Dec 22 07:37:41 2008 +0100 sched: fix warning in fs/proc/base.c Stephen Rothwell reported this new (harmless) build warning on platforms that define u64 to long: fs/proc/base.c: In function 'proc_pid_schedstat': fs/proc/base.c:352: warning: format '%llu' expects type 'long long unsigned int', but argument 3 has type 'u64' asm-generic/int-l64.h platforms strike again: that file should be eliminated. Fix it by casting the parameters to long long. Reported-by: Stephen Rothwell Signed-off-by: Ingo Molnar commit d3d317092b58a6df1d31a4ca90cdb9d2bd4ebffa Author: Matt Carlson Date: Sun Dec 21 20:21:52 2008 -0800 tg3: Update version to 3.97 This patch updates the version number to 3.97. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit aa10f27d99410cff9145bf91b6efc884c7a4871c Author: Matt Carlson Date: Sun Dec 21 20:21:18 2008 -0800 tg3: tg3.h cleanups This patch cleans up the tg3 header file by removing the preprocessor definitions for standard PCI configuration space registers. The driver should be using the standard definitions when needed. The patch continues by removing redundant PHY related definitions and reorganizes some of the remaining entries. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 69fc405318967c7913e5b55cf3906250a26b49d0 Author: Matt Carlson Date: Sun Dec 21 20:19:57 2008 -0800 tg3: Remove unused cfgspc device members This patch removes the pci_bist and pci_hdr_type members from the device structure and removes the code that references them. They are not really used. The patch rounds out the changes by moving the pci_cmd member to plug a structure hole that would have been created. On 32-bit systems, this movement removes a subsequent structure hole later in the structure. On 64-bit systems though, the movement merely consolidates two holes into one larger hole. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 027455adacdc142cc018e555ce391014fa227e70 Author: Matt Carlson Date: Sun Dec 21 20:19:30 2008 -0800 tg3: Cleanup IPV6 LSO This patch attempts to make the relationship between IPV6 checksum offload and IPV6 LSO more obvious. The patch also toggles a bit needed for IPV6 LSO on 5785 and 57780 devices. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 2023276ebf074a01eb56f38ed4d04deef1deee67 Author: Matt Carlson Date: Sun Dec 21 20:18:56 2008 -0800 tg3: WOL fixes The first hunk of this patch inverts a flag that was accidentally toggled as part of commit 0a459aac9d151c2e36ec65723b9b845b24c5cbc3 ("tg3: Allow WOL for phylib controlled Broadcom phys"). The second hunk of the patch removes the call to device_may_wakeup() in the 5906 config detection path. At the point of the call, the driver shouldn't be querying for WOL capability. It should be detecting and setting it. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 7f3ff4f63f76c2702da6041d2da5eb30fac407f6 Author: Jarek Poplawski Date: Sun Dec 21 20:14:48 2008 -0800 pkt_sched: Annotate uninitialized var in sfq_enqueue() Some gcc versions warn that ret may be used uninitialized in sfq_enqueue(). It's a false positive, so let's annotate this. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit bfb8cc31b11ccaf7cd55fd9e0f4794f82527948f Author: Don Skidmore Date: Sun Dec 21 20:11:04 2008 -0800 ixgbe: fix the display of DCB control stats in ethtool Priority flow contol statistics for Data Center Bridging (DCB) weren't included in ethtool. This patch adds them. Signed-off-by: Don Skidmore Signed-off-by: Eric W Multanen Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit f4314e815e87b4ab1c9b1115dd5853cd20ca999c Author: Don Skidmore Date: Sun Dec 21 20:10:29 2008 -0800 net: add DCNA attribute to the BCN interface for DCB Adds the Backward Congestion Notification Address (BCNA) attribute to the Backward Congestion Notification (BCN) interface for Data Center Bridging (DCB), which was missing. Receive the BCNA attribute in the ixgbe driver. The BCNA attribute is for a switch to inform the endstation about the physical port identification in order to support BCN on aggregated links. Signed-off-by: Don Skidmore Signed-off-by: Eric W Multanen Signed-off-by: Jeff Kirsher commit 1486a61ebcd2711532f8163d30babc40e11e7b40 Author: Don Skidmore Date: Sun Dec 21 20:09:50 2008 -0800 net: fix DCB setstate to return success/failure Data Center Bridging (DCB) had no way to know if setstate had failed in the driver. This patch enables dcb netlink code to handle the status for the DCB setstate interface. Likewise it allows the driver to return a failed status if MSI-X isn't enabled. Signed-off-by: Don Skidmore Signed-off-by: Eric W Multanen Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit c2da953a46b18b7515ad476c1c1686640a12e93a Merge: c94cb314503a69492bf4455dce4f6d300cff0851 9cf7f247bd0cd21e475c71a4e018bb612ef02aab Author: David S. Miller Date: Sun Dec 21 19:57:10 2008 -0800 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 commit 59f8500efb05096484a55263109acab6a6df89d5 Author: Krzysztof HaÅ‚asa Date: Mon Dec 22 02:00:17 2008 +0100 Convert ixp4xx_eth driver to use net_device_ops. Signed-off-by: Krzysztof HaÅ‚asa commit 4cb56b685617732733d4d9dffbf8c5a81d4a0c71 Author: Julia Lawall Date: Sun Dec 21 16:39:15 2008 +0100 drivers/net/wan: Remove redundant test arg is checked not to be NULL a few lines before. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; expression E; position p1,p2; @@ if (x@p1 == NULL || ...) { ... when forall return ...; } ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) ( x@p2 == NULL | x@p2 != NULL ) // another path to the test that is not through p1? @s exists@ local idexpression r.x; position r.p1,r.p2; @@ ... when != x@p1 ( x@p2 == NULL | x@p2 != NULL ) @fix depends on !s@ position r.p1,r.p2; expression x,E; statement S1,S2; @@ ( - if ((x@p2 != NULL) || ...) S1 | - if ((x@p2 == NULL) && ...) S1 | - BUG_ON(x@p2 == NULL); ) // Signed-off-by: Julia Lawall Signed-off-by: Krzysztof HaÅ‚asa commit 93bc933524d05e3b391358e24b3666599f8ec026 Author: Krzysztof HaÅ‚asa Date: Wed Nov 26 23:06:57 2008 +0100 HDLC_PPP: Fix Configure-Ack to return original options as required by the standard. Signed-off-by: Krzysztof HaÅ‚asa commit e6da96ace859dad966fe85cc9552b89f48bbc930 Author: Krzysztof HaÅ‚asa Date: Mon Dec 22 00:26:38 2008 +0100 IXP4xx: move common debugging from network drivers to QMGR module. Signed-off-by: Krzysztof HaÅ‚asa commit 9251ce959cab704eb0e4910860b06b18e7083474 Author: Krzysztof HaÅ‚asa Date: Sun Dec 21 23:52:36 2008 +0100 Update MAINTAINERS entries for IXP4xx and WAN network drivers. Signed-off-by: Krzysztof HaÅ‚asa commit f5b89e41ce7a980aa2fd8ad105626b9ed4e8d347 Author: Krzysztof HaÅ‚asa Date: Sun Dec 21 23:52:18 2008 +0100 WAN: Add IXP4xx HSS HDLC driver. Signed-off-by: Krzysztof HaÅ‚asa commit 490b77224fe66c77ab7cb48d6b77e62cb55591a0 Author: Krzysztof HaÅ‚asa Date: Sun Dec 21 00:02:34 2008 +0100 IXP4xx: Add ethtool support to Ethernet driver. Signed-off-by: Krzysztof HaÅ‚asa commit 4954936e25cb8ce99a96cac9dd9417d7b639867a Author: Krzysztof HaÅ‚asa Date: Sat Dec 20 18:57:23 2008 +0100 IXP4xx: Add PHYLIB MII ioctl to the Ethernet driver. Signed-off-by: Krzysztof HaÅ‚asa commit 2098c18d6cf65358dd1620154bdedbc8c8d36f44 Author: Krzysztof HaÅ‚asa Date: Sat Dec 20 01:53:08 2008 +0100 IXP4xx: Add PHYLIB support to Ethernet driver. Signed-off-by: Krzysztof HaÅ‚asa commit b4c7d3b07257528d3c0bfd07c5b38b48beb9b6d1 Author: Krzysztof HaÅ‚asa Date: Sat Dec 20 01:58:59 2008 +0100 IXP4xx: Make the Ethernet driver use built-in netdev stats. Signed-off-by: Krzysztof HaÅ‚asa commit 3c36a837a960ccbff05fa773a495c389fbd42f0e Author: Krzysztof HaÅ‚asa Date: Wed Nov 26 22:59:18 2008 +0100 IXP4xx: Silence section mismatch warning in Ethernet driver. Signed-off-by: Krzysztof HaÅ‚asa commit ae2754a975694a3865788e303b741d0f616bc43a Author: Krzysztof HaÅ‚asa Date: Fri May 9 02:14:09 2008 +0200 IXP4xx: clear IRQ stat in qmgr_disable_irq(). Signed-off-by: Krzysztof HaÅ‚asa commit 3edcfb2937054fb546ecf3a8883675751db16c6f Author: Krzysztof HaÅ‚asa Date: Thu May 8 23:18:31 2008 +0200 IXP4xx: check for queue being empty in qmgr_release_queue(). Signed-off-by: Krzysztof HaÅ‚asa commit bba7ebba3b17f4fe8c5907a32e16d9bd3fcf5192 Author: David Disseldorp Date: Sun Dec 21 13:56:50 2008 -0800 IB/iser: Avoid recv buffer exhaustion caused by unexpected PDUs iSCSI/iSER targets may send PDUs without a prior request from the initiator. RFC 5046 refers to these PDUs as "unexpected". NOP-In PDUs with itt=RESERVED and Asynchronous Message PDUs occupy this category. The amount of active "unexpected" PDU's an iSER target may have at any time is governed by the MaxOutstandingUnexpectedPDUs key, which is not yet supported. Currently when an iSER target sends an "unexpected" PDU, the initiators recv buffer consumed by the PDU is not replaced. If over initial_post_recv_bufs_num "unexpected" PDUs are received then the receive queue will run out of receive work requests entirely. This patch ensures recv buffers consumed by "unexpected" PDUs are replaced in the next iser_post_receive_control() call. Signed-off-by: David Disseldorp Signed-off-by: Ken Sandars Acked-by: Or Gerlitz Signed-off-by: Roland Dreier commit 139cdab0a2af6f5eaee47cc0144608e53b65279d Author: Julia Lawall Date: Sun Dec 21 13:29:13 2008 -0800 IB/ehca: Remove redundant test of vpage vpage is checked not to be NULL just after it is initialized at the beginning of each loop iteration. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; expression E; position p1,p2; @@ if (x@p1 == NULL || ...) { ... when forall return ...; } ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) ( x@p2 == NULL | x@p2 != NULL ) // another path to the test that is not through p1? @s exists@ local idexpression r.x; position r.p1,r.p2; @@ ... when != x@p1 ( x@p2 == NULL | x@p2 != NULL ) @fix depends on !s@ position r.p1,r.p2; expression x,E; statement S1,S2; @@ ( - if ((x@p2 != NULL) || ...) S1 | - if ((x@p2 == NULL) && ...) S1 | - BUG_ON(x@p2 == NULL); ) // Signed-off-by: Julia Lawall Signed-off-by: Roland Dreier commit 418441d9ebe84b205cb23eb0ab214c1f991621fe Author: Wolfram Sang Date: Sun Dec 21 02:54:32 2008 -0700 powerpc/mpc5200: fix error paths in PSC UART probe function - error cases for mapbase and irq were unbundled - mapped irq now gets disposed on error Signed-off-by: Wolfram Sang Signed-off-by: Grant Likely commit aec739e010f8163eac225f4e331ac7fbd59ac5c8 Author: Wolfram Sang Date: Sun Dec 21 02:54:32 2008 -0700 powerpc/mpc5200: add rts/cts handling in PSC UART driver Add RTS/CTS-support for the PSC of the MPC5200B. Tested with a Phytec MPC5200B-IO. Signed-off-by: Wolfram Sang Signed-off-by: Grant Likely commit b65149880d0467287fa4c7b4f19953392323f4ac Author: René Bürgel Date: Sun Dec 21 02:54:31 2008 -0700 powerpc/mpc5200: Make PSC UART driver update serial errors counters This patch adds the capability to the mpc52xx-uart to report framing errors, parity errors, breaks and overruns to userspace. These values may be requested in userspace by using the ioctl TIOCGICOUNT. Signed-off-by: René Bürgel Signed-off-by: Grant Likely commit e51f47a5c695b76905aadc2be47c7dc774f3e5af Author: Wolfram Sang Date: Sun Dec 21 02:54:30 2008 -0700 powerpc/mpc5200: Remove obsolete code from mpc5200 MDIO driver As this driver polls for a complete MDIO transaction, there is no need to enable interrupts for it. Furthermore, make both checks for freeing MDIO-bus irqs consistent. Signed-off-by: Wolfram Sang Signed-off-by: Grant Likely commit 6b61e69e7bc1cfe80ab54c6321f19061f9487ed3 Author: Tim Yamin Date: Sun Dec 21 02:54:29 2008 -0700 powerpc/mpc5200: Add MDMA/UDMA support to MPC5200 ATA driver This patch adds MDMA/UDMA support using BestComm for DMA on the MPC5200 platform. Based heavily on previous work by Freescale (Bernard Kuhn, John Rigby) and Domen Puncer. With this patch, a SanDisk Extreme IV CF card gets read speeds of approximately 26.70 MB/sec. Signed-off-by: Tim Yamin Signed-off-by: Grant Likely commit aaab5e83c2c25d94f7409bdc947a5cc383514e15 Author: Grant Likely Date: Sun Dec 21 02:54:28 2008 -0700 powerpc/mpc5200: Disable bestcomm prefetching when ATA DMA enabled When ATA DMA is enabled, bestcomm prefetching does not work. This patch adds a function to disable bestcomm prefetch when the ATA Bestcomm task is initialized. Signed-off-by: Grant Likely commit e4efe3c271c5498ffe7e167eaff01514be2b9a77 Author: Tim Yamin Date: Sun Dec 21 02:54:28 2008 -0700 powerpc/mpc5200: Bestcomm fixes to ATA support 1) ata.h has dst_pa in the wrong place (needs to match what the BestComm task microcode in bcom_ata_task.c expects); fix it. 2) The BestComm ATA task priority was changed to maximum in bestcomm_priv.h; this fixes a deadlock issue experienced with heavy DMA occurring on both the ATA and Ethernet BestComm tasks, e.g. when downloading a large file over a LAN to disk. Signed-off-by: Tim Yamin Signed-off-by: Grant Likely commit 622882455aa718cfbd6785cc5fbc479f1d976095 Author: Grant Likely Date: Sun Dec 21 02:54:27 2008 -0700 powerpc/mpc5200: Bugfix on handling variable sized buffer descriptors The buffer descriptors for the ATA BestComm task are larger than the current definition for bcom_bd. This causes problems because the various bcom_... functions dereference the buffer descriptor pointer by using the array operator which doesn't work when the buffer descriptors are a different size. This patch adds the bcom_get_bd() function which uses the value in bcom_task.bd_size to calculate the offset into the BD table. This patch also changes the definition of bcom_bd to specify a data size of 0 instead of 1 so that it will never work if anyone attempts to dereference the bd list as an array (as opposed to something that might work even though it is wrong). Finally, this patch moves the definition of bcom_bd up in the file to eliminate a forward declaration. Based on patch originally written by Tim Yamin. Signed-off-by: Tim Yamin Signed-off-by: Grant Likely commit dd952cbb3dae9ea2dc47cc902b796e1e2bf806f0 Author: Grant Likely Date: Sun Dec 21 02:54:27 2008 -0700 powerpc/mpc5200: Make internal 5200 PIC the default interrupt controller The MPC5200 internal interrupt controller setup function needs to set the default interrupt controller when it is called. Without this irq_create_of_mapping() cannot be called without first determining the pointer to the irq controller (ie. call with controller = NULL). Reported-by: Steven Cavanagh Signed-off-by: Grant Likely commit bcb73f5611c1946db768a1c219d205b3bf90f4a5 Author: Grant Likely Date: Sun Dec 21 02:54:26 2008 -0700 powerpc/mpc5200: Document and tidy irq driver This patch adds documentation to the mpc5200 interrupt controller driver and cleans up some minor coding conventions. It also moves the contents of mpc52xx_pic.h into the driver proper (except for a small common bit that is moved to the common mpc52xx.h) because the information encoded there is not required by any other part of kernel code. Finally for code readability sake, the L2_OFFSET shift value is removed because the code using it resolves to a noop. Signed-off-by: Grant Likely commit a14953597b771f793ce32529d7b8b04fdedca3ef Author: Benjamin Herrenschmidt Date: Sun Dec 21 02:54:25 2008 -0700 powerpc: Fix missing 'blr' in _tlbia() Rework to MMU code dropped a much missed 'blr' instruction. Brown-Paper-Bag-Worn-By: Benjamin Herrenschmidt Signed-off-by: Grant Likely commit 3ddeb912f41801fd1968c7880d031702a396e4d0 Author: Lai Jiangshan Date: Sat Dec 20 17:15:14 2008 +0800 ftrace: enable format arguments checking Impact: broaden gcc printf format checks for ftrace_printk() format arguments checking for ftrace_printk() is __printf(1, 2), not __printf(1, 0). Signed-off-by: Lai Jiangshan Signed-off-by: Ingo Molnar commit 49e6e3f1aec2d46f5865d3ada38fe9a5d660ef5d Author: Scott Wood Date: Fri Dec 19 10:13:09 2008 +0000 powerpc/bootwrapper: Use the child-bus #address-cells to decide which range entry to use The correct #address-cells was still used for the actual translation, so the impact is only a possibility of choosing the wrong range entry or failing to find any match. Most common cases were not affected. Signed-off-by: Scott Wood Signed-off-by: Paul Mackerras commit e14d77490d3e1da833cff4fee52674c52684ce77 Author: Grant Erickson Date: Fri Dec 19 08:17:54 2008 +0000 powerpc: Const-qualify Device Node Argument to DCR Resource Extent API Add const qualifier to device_node argument for dcr_resource_{start,len} as of_get_property also const-qualifies this argument. Signed-off-by: Grant Erickson Signed-off-by: Paul Mackerras commit 9dce3ce5c55c848f00429005a46fd6246cfabfbe Author: Benjamin Herrenschmidt Date: Thu Dec 18 19:13:54 2008 +0000 powerpc/44x: 44x TLB doesn't need "Guarded" set for all pages After discussing with chip designers, it appears that it's not necessary to set G everywhere on 440 cores. The various core errata related to prefetch should be sorted out by firmware by disabling icache prefetching in CCR0. We add the workaround to the kernel however just in case oooold firmwares don't do it. This is valid for -all- 4xx core variants. Later ones hard wire the absence of prefetch but it doesn't harm to clear the bits in CCR0 (they should already be cleared anyway). We still leave G=1 on the linear mapping for now, we need to stop over-mapping RAM to be able to remove it. Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Acked-by: Josh Boyer Signed-off-by: Paul Mackerras commit 64b3d0e8122b422e879b23d42f9e0e8efbbf9744 Author: Benjamin Herrenschmidt Date: Thu Dec 18 19:13:51 2008 +0000 powerpc/mm: Rework usage of _PAGE_COHERENT/NO_CACHE/GUARDED Currently, we never set _PAGE_COHERENT in the PTEs, we just OR it in in the hash code based on some CPU feature bit. We also manipulate _PAGE_NO_CACHE and _PAGE_GUARDED by hand in all sorts of places. This changes the logic so that instead, the PTE now contains _PAGE_COHERENT for all normal RAM pages thay have I = 0 on platforms that need it. The hash code clears it if the feature bit is not set. It also adds some clean accessors to setup various valid combinations of access flags and change various bits of code to use them instead. This should help having the PTE actually containing the bit combinations that we really want. I also removed _PAGE_GUARDED from _PAGE_BASE on 44x and instead set it explicitely from the TLB miss. I will ultimately remove it completely as it appears that it might not be needed after all but in the meantime, having it in the TLB miss makes things a lot easier. Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit 77520351805cc19ba37394ae33f862ef6d3c2a23 Author: Benjamin Herrenschmidt Date: Thu Dec 18 19:13:48 2008 +0000 powerpc/mm: Runtime allocation of mmu context maps for nohash CPUs This makes the MMU context code used for CPUs with no hash table (except 603) dynamically allocate the various maps used to track the state of contexts. Only the main free map and CPU 0 stale map are allocated at boot time. Other CPU maps are allocated when those CPUs are brought up and freed if they are unplugged. This also moves the initialization of the MMU context management slightly later during the boot process, which should be fine as it's really only needed when userland if first started anyways. Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit 760ec0e02d8a13d0ed60d99f47879d4aa8ef1910 Author: Benjamin Herrenschmidt Date: Thu Dec 18 19:13:46 2008 +0000 powerpc/44x: No need to mask MSR:CE, ME or DE in _tlbil_va on 440 The handlers for Critical, Machine Check or Debug interrupts will save and restore MMUCR nowadays, thus we only need to disable normal interrupts when invalidating TLB entries. Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Acked-by: Josh Boyer Signed-off-by: Paul Mackerras commit 2a4aca1144394653269720ffbb5a325a77abd5fa Author: Benjamin Herrenschmidt Date: Thu Dec 18 19:13:42 2008 +0000 powerpc/mm: Split low level tlb invalidate for nohash processors Currently, the various forms of low level TLB invalidations are all implemented in misc_32.S for 32-bit processors, in a fairly scary mess of #ifdef's and with interesting duplication such as a whole bunch of code for FSL _tlbie and _tlbia which are no longer used. This moves things around such that _tlbie is now defined in hash_low_32.S and is only used by the 32-bit hash code, and all nohash CPUs use the various _tlbil_* forms that are now moved to a new file, tlb_nohash_low.S. I moved all the definitions for that stuff out of include/asm/tlbflush.h as they are really internal mm stuff, into mm/mmu_decl.h The code should have no functional changes. I kept some variants inline for trivial forms on things like 40x and 8xx. Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit f048aace29e007f2b642097e2da8231e0e9cce2d Author: Benjamin Herrenschmidt Date: Thu Dec 18 19:13:38 2008 +0000 powerpc/mm: Add SMP support to no-hash TLB handling This commit moves the whole no-hash TLB handling out of line into a new tlb_nohash.c file, and implements some basic SMP support using IPIs and/or broadcast tlbivax instructions. Note that I'm using local invalidations for D->I cache coherency. At worst, if another processor is trying to execute the same and has the old entry in its TLB, it will just take a fault and re-do the TLB flush locally (it won't re-do the cache flush in any case). Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit 7c03d653cd257793dc40520c94e229b5fd0578e7 Author: Benjamin Herrenschmidt Date: Thu Dec 18 19:13:32 2008 +0000 powerpc/mm: Introduce MMU features We're soon running out of CPU features and I need to add some new ones for various MMU related bits, so this patch separates the MMU features from the CPU features. I moved over the 32-bit MMU related ones, added base features for MMU type families, but didn't move over any 64-bit only feature yet. Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit 2ca8cf738907180e7fbda90f25f32b86feda609f Author: Benjamin Herrenschmidt Date: Thu Dec 18 19:13:29 2008 +0000 powerpc/mm: Rework context management for CPUs with no hash table This reworks the context management code used by 4xx,8xx and freescale BookE. It adds support for SMP by implementing a concept of stale context map to lazily flush the TLB on processors where a context may have been invalidated. This also contains the ground work for generalizing such lazy TLB flushing by just picking up a new PID and marking the old one stale. This will be implemented later. This is a first implementation that uses a global spinlock. Ideally, we should try to get at least the fast path (context ID already assigned) lockless or limited to a per context lock, but for now this will do. I tried to keep the UP case reasonably simple to avoid adding too much overhead to 8xx which does a lot of context stealing since it effectively has only 16 PIDs available. Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit 5e696617c425eb97bd943d781f3941fb1e8f0e5b Author: Benjamin Herrenschmidt Date: Thu Dec 18 19:13:24 2008 +0000 powerpc/mm: Split mmu_context handling This splits the mmu_context handling between 32-bit hash based processors, 64-bit hash based processors and everybody else. This is preliminary work for adding SMP support for BookE processors. Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit 6d2170be4561293a6aa821c773687bd3f18e8206 Author: Benjamin Herrenschmidt Date: Thu Dec 18 19:13:22 2008 +0000 powerpc/4xx: Extended DCR support v2 This adds supports to the "extended" DCR addressing via the indirect mfdcrx/mtdcrx instructions supported by some 4xx cores (440H6 and later). I enabled the feature for now only on AMCC 460 chips. Signed-off-by: Benjamin Herrenschmidt Acked-by: Josh Boyer Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit fecba96268fc48ab9b4a016356a8f2371df25e64 Author: Brian King Date: Thu Dec 18 11:13:49 2008 +0000 powerpc: Add reboot notifier to Collaborative Memory Manager When running Active Memory Sharing, pages can get marked as "loaned" with the hypervisor by the CMM driver. This state gets cleared by the system firmware when rebooting the partition. When using kexec to boot a new kernel, this state never gets cleared and the hypervisor and CMM driver can get out of sync with respect to the number of pages currently marked "loaned". Fix this by adding a reboot notifier to the CMM driver to deflate the balloon and mark all pages as active. Signed-off-by: Brian King Signed-off-by: Paul Mackerras commit 2218108e182fd8a6d9106077833ed7ad05fc8e75 Author: Brian King Date: Thu Dec 18 11:13:46 2008 +0000 powerpc: Disable Collaborative Memory Manager for kdump When running Active Memory Sharing, the Collaborative Memory Manager (CMM) may mark some pages as "loaned" with the hypervisor. Periodically, the CMM will query the hypervisor for a loan request, which is a single signed value. When kexec'ing into a kdump kernel, the CMM driver in the kdump kernel is not aware of the pages the previous kernel had marked as "loaned", so the hypervisor and the CMM driver are out of sync. This results in the CMM driver getting a negative loan request, which can then get treated as a large unsigned value and can cause kdump to hang due to the CMM driver inflating too large. Since there really is no clean way for the CMM driver in the kdump kernel to clean this up, simply disable CMM in the kdump kernel. This fixes hangs we were seeing doing kdump with AMS. Signed-off-by: Brian King Signed-off-by: Paul Mackerras commit 5d84e4bee044a740729ac172e684e743f5ad50fb Author: Stephen Rothwell Date: Tue Dec 16 20:16:49 2008 +0000 powerpc/iseries: viodasd needs to depend on CONFIG_BLOCK Otherwise you get lot of errors like these: drivers/block/viodasd.c:72: error: dereferencing pointer to incomplete type drivers/block/viodasd.c: In function 'viodasd_open': drivers/block/viodasd.c:135: error: dereferencing pointer to incomplete type drivers/block/viodasd.c: In function 'viodasd_release': drivers/block/viodasd.c:184: error: dereferencing pointer to incomplete type drivers/block/viodasd.c: In function 'viodasd_getgeo': drivers/block/viodasd.c:209: error: dereferencing pointer to incomplete type drivers/block/viodasd.c:214: error: implicit declaration of function 'get_capacity' drivers/block/viodasd.c: At top level: drivers/block/viodasd.c:222: error: variable 'viodasd_fops' has initializer but incomplete type drivers/block/viodasd.c:223: error: unknown field 'owner' specified in initializer Discovered by a randconfig build. Signed-off-by: Stephen Rothwell Acked-by: Jens Axboe Signed-off-by: Paul Mackerras commit 368c1e3249afe0e59097e7df664435ae55fb9f8d Author: Hendrik Brueckner Date: Tue Dec 16 00:09:38 2008 +0000 hvc_console: Escape magic sysrq key The ctrl-o (^O) is a common control key used by several applications, such as vim, but hvc_console uses ^O as the magic-sysrq key. This commit allows users to send ^O to applications by pressing ^O twice in succession. To implement this, this commit introduces a check if ^O is pressed again if the sysrq_pressed variable is already set. In this case, clear sysrq_pressed state and flip the ^O character to the tty. (The old behavior has always set "sysrq_pressed" if ^O has been entered, and it has not flipped the ^O character to the tty.) Signed-off-by: Hendrik Brueckner Signed-off-by: Paul Mackerras commit 532774ec7fa396da20ca724c0cf83d93ee76622f Author: Tony Breeds Date: Mon Dec 15 18:34:43 2008 +0000 powerpc: Pass a valid token to rtas_call() in phyp-dump code ibm_configure_kernel_dump is passed as the token to rtas_call() is never initialised. This sets it to something sane. Signed-off-by: Tony Breeds Acked-by: Nathan Lynch Acked-by: Manish Ahuja Signed-off-by: Paul Mackerras commit 7a2eab0d4e656341cc0f6481d722d410f0414f0b Author: Tony Breeds Date: Mon Dec 15 18:17:48 2008 +0000 powerpc: Protect against NULL pointer deref in phyp-dump code print_dump_header() will be called at least once with a NULL pointer in a normal boot sequence. If DEBUG is defined then we will dereference the pointer and crash. Add a quick fix to exit early in the NULL pointer case. Signed-off-by: Tony Breeds Acked-by: Manish Ahuja Signed-off-by: Paul Mackerras commit 8168b5400b06353293f9844976435886eb2a8ff2 Author: David Howells Date: Thu Dec 11 02:53:54 2008 +0000 powerpc: Rename struct vm_region to avoid conflict with NOMMU Rename PowerPC's struct vm_region so that I can introduce my own global version for NOMMU. It's feasible that the PowerPC version may wish to use my global one instead. The NOMMU vm_region struct defines areas of the physical memory map that are under mmap. This may include chunks of RAM or regions of memory mapped devices, such as flash. It is also used to retain copies of file content so that shareable private memory mappings of files can be made. As such, it may be compatible with what is described in the banner comment for PowerPC's vm_region struct. Signed-off-by: David Howells Signed-off-by: Paul Mackerras commit 13ba3c0092b4db272d1f643206c1b55f4fe415a6 Author: Nathan Lynch Date: Wed Dec 10 14:46:06 2008 +0000 powerpc: Convert sysfs cache code to of_find_next_cache_node() Using the common code means that more complete cache information will provided in sysfs on platforms that don't use the l2-cache property convention. Signed-off-by: Nathan Lynch Signed-off-by: Paul Mackerras commit b2ea25b958968c152c6fac0594f2c9aa8b59eb8d Author: Nathan Lynch Date: Wed Dec 10 20:16:07 2008 +0000 powerpc: Convert cpu_to_l2cache() to of_find_next_cache_node() The smp code uses cache information to populate cpu_core_map; change it to use common code for cache lookup. Signed-off-by: Nathan Lynch Signed-off-by: Paul Mackerras commit e523f723d69cde44e10116d7f49b277da0c6702c Author: Nathan Lynch Date: Wed Dec 10 14:46:04 2008 +0000 powerpc: Add of_find_next_cache_node() We have more than one piece of code that looks up cache nodes manually using the "l2-cache" property. Add a common helper routine which does this and handles ePAPR's "next-level-cache" property as well as powermac. Signed-off-by: Nathan Lynch Signed-off-by: Paul Mackerras commit 749820928a2fd47ff536773d869d2c3f8038b7d1 Author: Anton Vorontsov Date: Fri Dec 5 08:15:54 2008 +0000 of/gpio: Implement of_gpio_count() This function is used to count how many GPIOs are specified for a device node. Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit 7736a3db98bed028d0e5235f8958a730acfd822e Author: Anton Vorontsov Date: Fri Dec 5 08:15:46 2008 +0000 of: of_parse_phandles_with_args() learns to differentiate 'hole' cells Given this list (contains three gpio specifiers, one of which is a hole): gpios = <&phandle1 1 2 3 0 /* a hole */ &phandle2 4 5 6>; of_parse_phandles_with_args() would report -ENOENT for the `hole' specifier item, the same error value is used to report the end of the list, for example. Sometimes we want to differentiate holes from real errors -- for example when we want to count all the [syntax correct] specifiers. With this patch of_parse_phandles_with_args() will report -EEXITS when somebody requested to parse a hole. Also, make the out_{node,args} arguments optional, when counting we don't really need the out values. Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit c1bb7c6d04ebdf48998649100c5267a9139debf5 Author: Anton Vorontsov Date: Fri Dec 5 08:15:39 2008 +0000 of: Minor simplification for the of_parse_phandles_with_args() By using 'list++' in the beginning we can simplify the code a little bit. Suggested-by: Benjamin Herrenschmidt Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit 74b7ff48a93f44198ac03cc4e628d713f53d4668 Author: Matthew Ranostay Date: Sat Dec 20 17:47:24 2008 -0500 ALSA: hda: fix incorrect mixer index values for 92hd83xx Fixed incorrect mixer index values for 92hd83xx codec's audio input mixer. Signed-off-by: Matthew Ranostay Signed-off-by: Takashi Iwai commit f8ccbf65afde5df81a6238b9dc92868fbbd397f7 Author: Matthew Ranostay Date: Sat Dec 20 17:36:28 2008 -0500 ALSA: hda: dinput_mux check Add check to determine if dinput_mux is set by any of patch_stac*() functions, otherwise a invalid pointer my be referenced causing gibberish to mixer values. Signed-off-by: Matthew Ranostay Signed-off-by: Takashi Iwai commit ebef7cfc81942686a994ca6239b195040f5d1e4d Merge: 6bcdbd55b4c603d9741398d081133fcc50a10b6c 3d4758299fa6180ff9304634c67ffdd44272c8e8 Author: Takashi Iwai Date: Sat Dec 20 23:43:06 2008 +0100 Merge branch 'topic/ca0106-spdif-stream' into topic/ca0106 commit 6bcdbd55b4c603d9741398d081133fcc50a10b6c Merge: 6a8436419d1b77b24d82bd90354adc4baa393566 72077aa336d0f4c5e3c7014d7471c79bc69873bb Author: Takashi Iwai Date: Sat Dec 20 23:43:00 2008 +0100 Merge branch 'topic/ca0106-resume' into topic/ca0106 commit 6a8436419d1b77b24d82bd90354adc4baa393566 Merge: 55fa518867978e1f5fd8353098f80d125ac734d7 ff75427a7f641c4468610fbda2ccb69218174cd1 Author: Takashi Iwai Date: Sat Dec 20 23:42:55 2008 +0100 Merge branch 'topic/ca0106-capture-no-44khz' into topic/ca0106 commit 8326e32c1e148820d50dc460e1cb4a6cb6884ff2 Merge: 69dfaefee4a2dfdfee3488a306403fe1e51f0be5 32e176c14d7a425b681ef003c9061001ddb7fc7b Author: Takashi Iwai Date: Sat Dec 20 23:41:18 2008 +0100 Merge branch 'topic/hda-resume-fix' into topic/hda commit 55fa518867978e1f5fd8353098f80d125ac734d7 Merge: bb1f24bf00a85f666b56a09b7cdbfd221af16c2c eea0579fc85e64e9f05361d5aacf496fe7a151aa Author: Takashi Iwai Date: Sat Dec 20 23:39:47 2008 +0100 Merge branch 'topic/pcsp-fix' into topic/misc commit 69dfaefee4a2dfdfee3488a306403fe1e51f0be5 Author: Takashi Iwai Date: Sat Dec 20 16:57:50 2008 +0100 ALSA: hda - Add quirk for another HP dv7 Added the model=hp-m4 quirk for another HP dv7 (103c:30fc) with IDT 92HD71b* codec. Reference: Novell bnc#461108 https://bugzilla.novell.com/show_bug.cgi?id=461108 Cc: stable@kernel.org Signed-off-by: Takashi Iwai commit a31501d1041c9d0a6c3f520736ae2b2fa081493a Author: Takashi Iwai Date: Sat Dec 20 16:50:53 2008 +0100 ALSA: ASoC - Add missing __devexit annotation to wm8350.c Added the missing __devexit annotation to wm8350_codec_remove(): sound/soc/codecs/wm8350.c:1546: warning: 'wm8350_codec_remove' defined but not used Signed-off-by: Takashi Iwai commit d6f833965e594015ee05341e43ff4a86f11596b3 Author: Troy Kisky Date: Fri Dec 19 13:05:25 2008 -0700 ALSA: ASoc: DaVinci: davinci-evm use dsp_b mode Sense DaVinci does not support true I2S mode and we don't have to use the hack, use dsp_b mode instead Signed-off-by: Troy Kisky Signed-off-by: Mark Brown commit 9e031624d50c82a47671e09cc996eebb9e36f698 Author: Troy Kisky Date: Fri Dec 19 13:05:23 2008 -0700 ALSA: ASoC: DaVinci: i2s, evm, pass same value to codec and cpu_dai Fix the meaning of SND_SOC_DAIFMT_NB_NF to match that used in the codec. Signed-off-by: Troy Kisky Signed-off-by: Mark Brown commit a24f4f682661b8069d374a9197bc491525a7c799 Author: Troy Kisky Date: Fri Dec 19 13:05:22 2008 -0700 ALSA: ASoC: tlv320aic3x add dsp_a Add SND_SOC_DAIFMT_DSP_A mode option. Signed-off-by: Troy Kisky Signed-off-by: Mark Brown commit 07d8d9dca4615821d928f4b5087fdc61e292e1dc Author: Troy Kisky Date: Fri Dec 19 13:05:24 2008 -0700 ALSA: ASoC: DaVinci: document I2S limitations DaVinci does not support true I2S or right justified mode so not all I2S codecs will work with it when the codec is master. Document this limitation. Add dsp_a, dsp_b mode options Signed-off-by: Troy Kisky Signed-off-by: Mark Brown commit 69ab820c862250d460dfaaf82164972a4a69418a Author: Troy Kisky Date: Thu Dec 18 12:36:44 2008 -0700 ALSA: ASoC: DaVinci: davinci-i2s clean up Minor, just move a block of code to make next patch clearer. Signed-off-by: Troy Kisky Signed-off-by: Mark Brown commit 21903c1c9ecb7a210eb985aa8d82ad68c78283cc Author: Troy Kisky Date: Thu Dec 18 12:36:43 2008 -0700 ALSA: ASoC: DaVinci: davinci-i2s clean up Just at little cleanup of davinci_i2s_set_dai_fmt Signed-off-by: Troy Kisky Signed-off-by: Mark Brown commit 664b4af859d43714fd2a90aa434e454355659d0e Author: Troy Kisky Date: Thu Dec 18 12:36:41 2008 -0700 ALSA: ASoC: DaVinci: davinci-i2s add comments to explain polarity Document the current polarity choices. Signed-off-by: Troy Kisky Signed-off-by: Mark Brown commit 1152a1959f8440db9536f6df758274443f9b5b37 Author: Troy Kisky Date: Thu Dec 18 12:36:40 2008 -0700 ALSA: ASoC: DaVinci: davinvi-evm, make requests explicit Add constants with a value of 0 to show more explicitly what is being requested. Signed-off-by: Troy Kisky Signed-off-by: Mark Brown commit ff75427a7f641c4468610fbda2ccb69218174cd1 Author: Takashi Iwai Date: Sat Dec 20 11:20:55 2008 +0100 ALSA: ca0106 - disable 44.1kHz capture The capture with 44.1kHz on ca0106 seems to cause loud noises on later playbacks, which doesn't support 44.1kHz. A simple fix is to disable 44.1kHz, as the "default" PCM with dsnoop is anyway only with 48kHz. Reference: Novell bnc#447624 https://bugzilla.novell.com/show_bug.cgi?id=447624 Signed-off-by: Takashi Iwai commit 72077aa336d0f4c5e3c7014d7471c79bc69873bb Author: Takashi Iwai Date: Sat Dec 20 11:12:51 2008 +0100 ALSA: ca0106 - Add missing card->private_data initialization Added the missing card->private_data initialization that caused obvious problems at PM. Signed-off-by: Takashi Iwai commit 50232d62cace101e03f8f40ca151b978c0db5a0d Author: Takashi Iwai Date: Sat Dec 20 09:42:09 2008 +0100 ALSA: ca0106 - Check ac97 availability at PM Check the availability of ac97 at PM suspend/resume callbacks. Signed-off-by: Takashi Iwai commit c5dee6177f4bd2095aab7d9be9f6ebdddd6deee9 Author: Markus Metzger Date: Fri Dec 19 15:17:02 2008 +0100 x86, bts: memory accounting Impact: move the BTS buffer accounting to the mlock bucket Add alloc_locked_buffer() and free_locked_buffer() functions to mm/mlock.c to kalloc a buffer and account the locked memory to current. Account the memory for the BTS buffer to the tracer. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit bf53de907dfdaac178c92d774aae7370d7b97d20 Author: Markus Metzger Date: Fri Dec 19 15:10:24 2008 +0100 x86, bts: add fork and exit handling Impact: introduce new ptrace facility Add arch_ptrace_untrace() function that is called when the tracer detaches (either voluntarily or when the tracing task dies); ptrace_disable() is only called on a voluntary detach. Add ptrace_fork() and arch_ptrace_fork(). They are called when a traced task is forked. Clear DS and BTS related fields on fork. Release DS resources and reclaim memory in ptrace_untrace(). This releases resources already when the tracing task dies. We used to do that when the traced task dies. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit 67bac792cd0c05b4b6e0393c32605b028b8dd533 Author: venkatesh.pallipadi@intel.com Date: Fri Dec 19 13:47:30 2008 -0800 x86: PAT: pfnmap documentation update changes Impact: Documentation only. Documentation updates as per Randy Dunlap's comments. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit 34801ba9bf0381fcf0e2b08179d2c07f2c6ede74 Author: venkatesh.pallipadi@intel.com Date: Fri Dec 19 13:47:29 2008 -0800 x86: PAT: move track untrack pfnmap stubs to asm-generic Impact: Cleanup and branch hints only. Move the track and untrack pfn stub routines from memory.c to asm-generic. Also add unlikely to pfnmap related calls in fork and exit path. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit 982d789ab76c8a11426852fec2fdf2f412e21c0c Author: venkatesh.pallipadi@intel.com Date: Fri Dec 19 13:47:28 2008 -0800 x86: PAT: remove follow_pfnmap_pte in favor of follow_phys Impact: Cleanup - removes a new function in favor of a recently modified older one. Replace follow_pfnmap_pte in pat code with follow_phys. follow_phys lso returns protection eliminating the need of pte_pgprot call. Using follow_phys also eliminates the need for pte_pa. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit d87fe6607c31944f7572f965c1507ae77026c133 Author: venkatesh.pallipadi@intel.com Date: Fri Dec 19 13:47:27 2008 -0800 x86: PAT: modify follow_phys to return phys_addr prot and return value Impact: Changes and globalizes an existing static interface. Follow_phys does similar things as follow_pfnmap_pte. Make a minor change to follow_phys so that it can be used in place of follow_pfnmap_pte. Physical address return value with 0 as error return does not work in follow_phys as the actual physical address 0 mapping may exist in pte. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit 6bd9cd50c830eb88d571c492ec370a30bf999e15 Author: venkatesh.pallipadi@intel.com Date: Fri Dec 19 13:47:26 2008 -0800 x86: PAT: clarify is_linear_pfn_mapping() interface Impact: Documentation only Incremental patches to address the review comments from Nick Piggin for v3 version of x86 PAT pfnmap changes patchset here http://lkml.indiana.edu/hypermail/linux/kernel/0812.2/01330.html This patch: Clarify is_linear_pfn_mapping() and its usage. It is used by x86 PAT code for performance reasons. Identifying pfnmap as linear over entire vma helps speedup reserve and free of memtype for the region. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit 8403295e0fa460f6240e2d781e25dc29189f33c7 Author: Hiroshi Shimamoto Date: Fri Dec 19 14:25:50 2008 -0800 x86: ia32_signal: remove unnecessary declaration Impact: cleanup No need to declare do_signal(). Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 34945ede31071ac7d72270cc6c1893323f392b3f Author: Jaswinder Singh Date: Fri Dec 19 22:33:52 2008 +0530 x86: common.c boot_cpu_stack and boot_exception_stacks should be static Impact: cleanup, avoid sparse warnings, reduce kernel size a bit Fixes these sparse warnings: arch/x86/kernel/cpu/common.c:869:6: warning: symbol 'boot_cpu_stack' was not declared. Should it be static? arch/x86/kernel/cpu/common.c:910:6: warning: symbol 'boot_exception_stacks' was not declared. Should it be static? Signed-off-by: Jaswinder Singh Signed-off-by: Ingo Molnar commit 74192246910ff4fb95309ba1a683215644beeb62 Author: James Morris Date: Fri Dec 19 11:41:10 2008 +1100 SELinux: don't check permissions for kernel mounts Don't bother checking permissions when the kernel performs an internal mount, as this should always be allowed. Signed-off-by: James Morris Acked-by: Stephen Smalley commit 12204e24b1330428c3062faee10a0d80b8a5cb61 Author: James Morris Date: Fri Dec 19 10:44:42 2008 +1100 security: pass mount flags to security_sb_kern_mount() Pass mount flags to security_sb_kern_mount(), so security modules can determine if a mount operation is being performed by the kernel. Signed-off-by: James Morris Acked-by: Stephen Smalley commit 459c19f524a9d89c65717a7d061d5f11ecf6bcb8 Author: Stephen Smalley Date: Fri Dec 5 09:12:19 2008 -0500 SELinux: correctly detect proc filesystems of the form "proc/foo" Map all of these proc/ filesystem types to "proc" for the policy lookup at filesystem mount time. Signed-off-by: James Morris commit 9bb482476c6c9d1ae033306440c51ceac93ea80c Author: Jan Beulich Date: Tue Dec 16 11:30:08 2008 +0000 allow stripping of generated symbols under CONFIG_KALLSYMS_ALL Building upon parts of the module stripping patch, this patch introduces similar stripping for vmlinux when CONFIG_KALLSYMS_ALL=y. Using CONFIG_KALLSYMS_STRIP_GENERATED reduces the overhead of CONFIG_KALLSYMS_ALL from 245k/310k to 65k/80k for the (i386/x86-64) kernels I tested with. The patch also does away with the need to special case the kallsyms- internal symbols by making them available even in the first linking stage. While it is a generated file, the patch includes the changes to scripts/genksyms/keywords.c_shipped, as I'm unsure what the procedure here is. Signed-off-by: Jan Beulich Signed-off-by: Sam Ravnborg commit ad7a953c522ceb496611d127e51e278bfe0ff483 Author: Jan Beulich Date: Tue Dec 16 11:28:14 2008 +0000 kbuild: strip generated symbols from *.ko This patch changes the way __crc_ symbols are being resolved from using ld to do so to using the assembler, thus allowing these symbols to be marked local (the linker creates then as global ones) and hence allow stripping (for modules) or ignoring (for vmlinux) them. While at this, also strip other generated symbols during module installation. One potentially debatable point is the handling of the flags passeed to gcc when translating the intermediate assembly file into an object: passing $(c_flags) unchanged doesn't work as gcc passes --gdwarf2 to gas whenever is sees any -g* option, even for -g0, and despite the fact that the compiler would have already produced all necessary debug info in the C->assembly translation phase. I took the approach of just filtering out all -g* options, but an alternative to such negative filtering might be to have a positive filter which might, in the ideal case allow just all the -Wa,* options to pass through. Signed-off-by: Jan Beulich Signed-off-by: Sam Ravnborg commit 37a8d9f67f18de1e2cbc7387311ce22d4dbff518 Author: Sam Ravnborg Date: Fri Dec 19 21:38:09 2008 +0100 kbuild: simplify use of genksyms Avoid duplicating long list of options in two places Signed-off-by: Sam Ravnborg commit 9cf7f247bd0cd21e475c71a4e018bb612ef02aab Author: Michael Buesch Date: Fri Dec 19 20:24:30 2008 +0100 b43: Add key memory dumping This adds an option to dump all crypto related memory to the kernel log. Obviously, it should not be enabled on productive systems. ;) Signed-off-by: Michael Buesch Signed-off-by: John W. Linville commit b929ecf7965c2dab7e373f390ac5fc563011484d Author: Michael Buesch Date: Fri Dec 19 18:40:00 2008 +0100 b43: Suspend MAC while killing the radio We should suspend the MAC, before we kill the radio. This gives the MAC a chance to leave any TX/RX state and it avoids races on the PHY/RADIO registers. Signed-off-by: Michael Buesch Signed-off-by: John W. Linville commit fd6effcaf8a894c0a0f602b943dbc54a170d4418 Author: Bob Copeland Date: Thu Dec 18 23:23:05 2008 -0500 ath5k: correct packet length in tx descriptors Packet length calculation (which includes frame check sequence) should take into account whether we add a pad field or not. Extract the calculation into a helper and use it in both places. Changes to desc.c Changes-licensed-under: ISC Changes to ath5k.h, base.c Changes-licensed-under: 3-Clause-BSD Signed-off-by: Bob Copeland Signed-off-by: John W. Linville commit 520eb82076993b7f55ef9b80771d264272e5127b Author: Kalle Valo Date: Thu Dec 18 23:35:27 2008 +0200 mac80211: implement dynamic power save This patch implements dynamic power save for mac80211. Basically it means enabling power save mode after an idle period. Implementing it dynamically gives a good compromise of low power consumption and low latency. Some hardware have support for this in firmware, but some require the host to do it. The dynamic power save is implemented by adding an timeout to ieee80211_subif_start_xmit(). The timeout can be enabled from userspace with Wireless Extensions. For example, the command below enables the dynamic power save and sets the time timeout to 500 ms: iwconfig wlan0 power timeout 500m Power save now only works with devices which handle power save in firmware. It's also disabled by default and the heuristics when and how to enable is considered as a policy decision and will be left for the userspace to handle. In case the firmware has support for this, drivers can disable this feature with IEEE80211_HW_NO_STACK_DYNAMIC_PS. Big thanks to Johannes Berg for the help with the design and code. Signed-off-by: Kalle Valo Acked-by: Johannes Berg Signed-off-by: John W. Linville commit ce7c9111a97492d04c504f40736a669c235d664a Author: Kalle Valo Date: Thu Dec 18 23:35:20 2008 +0200 mac80211: track master queue status This is a preparation for the dynamic power save support. In future there are two paths to stop the master queues and we need to track this properly to avoid starting queues incorrectly. Implement this by adding a status array for each queue. The original idea and design is from Johannes Berg, I just did the implementation based on his notes. All the bugs are mine, of course. Signed-off-by: Kalle Valo Acked-by: Johannes Berg Signed-off-by: John W. Linville commit e0cb686ff879dc9ac045ad7258ec687088d4e450 Author: Kalle Valo Date: Thu Dec 18 23:35:13 2008 +0200 mac80211: enable IEEE80211_CONF_PS only when associated Also disable power save when disassociated. It makes no sense to have power save enabled while disassociated. iwlwifi seems to have this check in the driver, but it's better to do this in mac80211 instead. Signed-off-by: Kalle Valo Acked-by: Johannes Berg Signed-off-by: John W. Linville commit d10d0e5707fb7b8afa7e68a14d69e752604ee294 Author: Michael Buesch Date: Thu Dec 18 22:13:39 2008 +0100 b43: Fix some MAC locking This fixes some locking w.r.t. the lower MAC (firmware). It also removes a lot of ancient IRQ-locking that's not needed anymore. We simply suspend the MAC. That's easier and causes less trouble. Signed-off-by: Michael Buesch Signed-off-by: John W. Linville commit 0e7690f1e9ee1e762f27678d2ea10e4c1fde3236 Author: Rami Rosen Date: Thu Dec 18 18:04:51 2008 +0200 iwlwifi: iwl-tx.c cleanup (remove unused parameter and unused local variable). This patch removes unused parameter and unused local variable in methods in iwl-tx.c: - Remove a parameter (is_unicast) from iwl_tx_cmd_build_basic(). - Remove an unused variable name unicast from iwl_tx_skb(). Signed-off-by: Rami Rosen Signed-off-by: John W. Linville commit be2864cfff2fe4b599b46f03cce1e7689e05c60c Author: Jouni Malinen Date: Thu Dec 18 14:33:00 2008 +0200 ath9k: Fixed RX decryption status reporting The RX code in ath9k uses sc_keymap to figure out whether a default key was used. However, the default key entries in sc_keymap were always set and as such, frames could have been claimed to be decrypted by hardware when they were not. This can cause problems especially with TKIP since mac80211 is validating the Michael MIC in the frame and this will result in MIC failure and potentially TKIP countermeasures if the frame was not decrypted correctly. Change key cache slot allocation to mark only the keys that really have been used in sc_keymap to avoid the issue. The key cache slot selection routines are now internally avoiding the slots that may be needed for TKIP group keys. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit ea6121328885640c137b0a8830f67ca6c386a24a Author: Jouni Malinen Date: Thu Dec 18 14:31:10 2008 +0200 ath9k: Fix key cache slot selection for splitmic ath_reserve_key_cache_slot() was obviously supposed to return an index to a free slot, not reserved one. This could have caused problems with hardware revisions that use splitmic. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit aa33de09a849bd65b1201e1aec42e3e412c14cf6 Author: Sujith Date: Thu Dec 18 11:40:16 2008 +0530 ath9k: Protect config() callback with a mutex This should fix the timeout issues seen when using wpa_supplicant. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 5e3f308997f53d00e8cbebdb89d4f6e347aa963a Author: Larry Finger Date: Wed Dec 17 14:26:59 2008 -0600 mac80211: Print unknown packet type in tasklet_handler In stress testing p54usb, the WARN_ON() in ieee80211_tasklet_handler() was triggered; however, there is no logging of the received value for packet type. Adding that feature will improve the warning. Signed-off-by: Larry Finger Signed-off-by: John W. Linville commit 6110781af080c007b2202187a8518920e03d5748 Author: Christian Lamparter Date: Wed Dec 17 12:04:43 2008 +0100 p54usb: bring first generation devices back to life This patch fixes a serious regression (introduced by: "p54: fix memory management") that affected isl3886+net2280 usb devices operation. Signed-off-by: Christian Lamparter Tested-by: Artur Skawina Signed-off-by: John W. Linville commit 6ace2891a1d632303283816ae050849da48df142 Author: Jouni Malinen Date: Wed Dec 17 13:32:17 2008 +0200 ath9k: Key cache allocation for AP mode Enhance allocation of key cache entries to support multiple pairwise keys to fix AP mode with more than one associated STA. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit f66000f7a39769b0ce2355fca13c40ac2f1c39db Author: Jouni Malinen Date: Wed Dec 17 13:30:31 2008 +0200 ath9k: Fix a NULL pointer dereference in ath_rate_get It looks like mac80211 may try to send unicast frames to a STA that does not have a STA entry. We need to make sure that that is caught in the rate control code before dereferencing STA data. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 91f39e8eea725347b6a82d1e35e512ec8b298b0b Author: Jay Sternberg Date: Wed Dec 17 16:52:34 2008 +0800 iwlwifi: indicate txpower is off in sysfs The patch checks if the radio is disabled before displaying the tx power level. Previously when the txpower was set off show_tx_power still returned the prior power level. Now it will indicate the power has been turned off. Signed-off-by: Jay Sternberg Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit f1bc4ac61f2c08515afd80c6dc3962aa6d0b138b Author: Zhu Yi Date: Wed Dec 17 16:52:33 2008 +0800 iwlwifi: use GFP_KERNEL to allocate Rx SKB memory Previously we allocate Rx SKB with GFP_ATOMIC flag. This is because we need to hold a spinlock to protect the two rx_used and rx_free lists operation in the rxq. spin_lock(); ... element = rxq->rx_used.next; element->skb = alloc_skb(..., GFP_ATOMIC); list_del(element); list_add_tail(&element->list, &rxq->rx_free); ... spin_unlock(); After spliting the rx_used delete and rx_free insert into two operations, we don't require the skb allocation in an atomic context any more (the function itself is scheduled in a workqueue). spin_lock(); ... element = rxq->rx_used.next; list_del(element); ... spin_unlock(); ... element->skb = alloc_skb(..., GFP_KERNEL); ... spin_lock() ... list_add_tail(&element->list, &rxq->rx_free); ... spin_unlock(); This patch should fix the "iwlagn: Can not allocate SKB buffers" warning we see recently. Signed-off-by: Zhu Yi Acked-by: Tomas Winkler Cc: stable@kernel.org Signed-off-by: John W. Linville commit 4087f6f68cdbd2845c7e54236bae1b058a7b827b Author: Wu, Fengguang Date: Wed Dec 17 16:52:32 2008 +0800 iwlwifi: use meaningful vars in _iwl_poll_bit() Rename vars in _iwl_poll_bit() to better reflect the truth. Signed-off-by: Wu Fengguang Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit febf3370c63b4ea7fc1cedb9a73ac37e3cb21079 Author: Wu Fengguang Date: Wed Dec 17 16:52:31 2008 +0800 iwlwifi: remove useless goto The patch removes some useless goto in code cleanup. Signed-off-by: Wu Fengguang Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit 95aa194ac4a8fee0aea64c9609e70211cd057ad2 Author: Wu, Fengguang Date: Wed Dec 17 16:52:30 2008 +0800 iwlwifi: use type uint for module param debug This enables one to change the debug level at bit 31. Signed-off-by: Wu Fengguang Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit c3a739fa3507d1d5b3d2cb6cc491edeef8fa54c0 Author: Wu, Fengguang Date: Wed Dec 17 16:52:29 2008 +0800 iwlwifi: update comments on the debug interface Bring up-to-date some comments on the location of debug files. Signed-off-by: Wu Fengguang Acked-by: Tomas Winkler Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit 5c11ec60ef2eb8fb409b2c0a427e5a8ab6ee05f8 Author: Wu, Fengguang Date: Wed Dec 17 16:52:28 2008 +0800 iwlwifi: add line feed to printk This adds line feed to printk. Signed-off-by: Wu Fengguang Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit 34c22cf93d1446791c966c878cc691e07c39d8d3 Author: Winkler, Tomas Date: Wed Dec 17 16:52:27 2008 +0800 iwlwifi: cleanup iwl-dev.h The patch removes unused definition and moves code to proper places. Signed-off-by: Tomas Winkler Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit 135541215ca87ff00c269e65bcaef0bdcb99aab9 Author: Rami Rosen Date: Tue Dec 16 22:38:29 2008 +0200 mac80211: fix a typo in ieee80211_send_assoc() method. This patch fixes a typo in ieee80211_send_assoc(), net/mac80211/mlme.c. The error is usage of a wrong member when building the ie80211 management frame (it should be assoc_req, and not reassoc_req). Signed-off-by: Rami Rosen Signed-off-by: John W. Linville commit 73ec1cc28ebc7854a376cde53f62d487e127fbca Author: Rami Rosen Date: Tue Dec 16 09:37:07 2008 +0200 iwlwifi: remove a parameter (dest) from *_fill_beacon_frame() methods. This patch removes a parameter (dest) from iwl_fill_beacon_frame() (iwl-agn.c) and from iwl3945_fill_beacon_frame(). (iwl-3945.c,iwl-3945.h) Signed-off-by: Rami Rosen Signed-off-by: John W. Linville commit ca8a8560569c5eb954cb18c3a91087797ffa81a4 Author: Vasanthakumar Thiagarajan Date: Tue Dec 16 12:37:38 2008 +0530 ath9k: Move rate control alg register/unregister to appropriate place This patch makes sure the rate control alg is registered/unregistered only once for this module. Signed-off-by: Vasanthakumar Thiagarajan Signed-off-by: John W. Linville commit 9bf9fca8dea70116016d32c2bf3f83170c8fba76 Author: Vasanthakumar Thiagarajan Date: Mon Dec 15 20:40:46 2008 +0530 ath9k: Synchronize DMA transfer with CPU at right place This patch does pci_dma_sync_single_for_cpu() before accessing the header of the frame and queueing the same buffer into h/w. Signed-off-by: Vasanthakumar Thiagarajan Signed-off-by: John W. Linville commit f7a276a625e0b980185d2eb8e8e3e9425a708bee Author: Jouni Malinen Date: Mon Dec 15 16:02:04 2008 +0200 ath9k: Remove MAC header pad before reporting TX status Remove the possible MAC header pad before reporting TX status to mac80211. This pad is hardware specific operation and should not be exposed outside the driver. This fixes the frame body in monitor interfaces that could be used to check on TX status for transmitted frames. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit da027ca00a48715364da9a94d4b663029add528d Author: Jouni Malinen Date: Mon Dec 15 15:44:53 2008 +0200 ath9k: Fix TX status reporting for retries and MCS index The count field in struct ieee80211_tx_rate does not include the final successful attempt, so only report retries here. Fix the struct ieee80211_tx_rate::idx field when MCS was used. It is supposed to be the MCS index, not an internal index to the rate control algorithm table. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 8d6f658e211a3c6ff808f7fc6ebb30239457eabc Author: Jouni Malinen Date: Mon Dec 15 10:37:50 2008 +0200 mac80211: Remove radiotap rate-present flag for HT Since we do not currently report HT rates (MCS index) in radiotap header for HT rates, we should not claim the rate is present. The rate octet itself is used as padding in this case, so only the it_present flag needs to be removed in case of HT rates. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit d85882273367e98aecb9ff11a9d76515a6d37131 Author: Herton Ronaldo Krzesinski Date: Sun Dec 14 12:18:09 2008 -0600 rtl8187: Fix crash on unload when using SLUB debug Reported-by: Hin-Tak Leung After the code was modified to use urb anchors ("rtl8187: Use usb anchor facilities to manage urbs"), rtl8187 began generating an intermittent GPF on shutdown when using SLUB with debugging enabled. Furthermore, rebooting the system with a ping running caused a GPF every time. There are two problems: (1) incorrect locking in the rtl8187_rx_cb() routine, a pre-existing bug that apparently had not been triggered before, and (2) duplicate freeing of receive skbs that was probably introduced with the change to anchors. Signed-off-by: Herton Ronaldo Krzesinski Signed-off-by: Larry Finger Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 0a5ec96ad68516582023a877aceff9db7636d141 Author: Christian Lamparter Date: Sun Dec 14 15:05:42 2008 +0100 p54: remove free_on_tx parameter This patch simplifies the tx code a bit and will be necessary for the upcoming stlc45xx<->p54 port. In detail: we no longer have to tell all back-end drivers directly, if we want to free a frame right after it was send to the firmware, or if we do it in the library callback later. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 69ba3e5d74a467a64248cd90ccafb524b1fddcb5 Author: Christian Lamparter Date: Sun Dec 14 14:45:30 2008 +0100 p54: more accurate rssi to dBm conversion This patch replaces the static rssi auto calibration data with more precise values out of the device's eeprom. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit da9f57eade0a743450a201645db7fc5ac0809900 Author: Larry Finger Date: Sat Dec 13 18:09:56 2008 -0600 rtl8187: Fix error returns There are two places in the rtl8187 code where a routine was returning zero (OK) when it should have been returning an error. Signed-off-by: Larry Finger Acked-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 23827926eb5ce5cb944ebbd96d22297a2582d45d Author: Ilpo Järvinen Date: Sat Dec 13 21:33:13 2008 +0200 libertas: use roundup instead of opencoding Signed-off-by: Ilpo Järvinen Signed-off-by: John W. Linville commit ee370ceda823435fe75be7dd4ed7b0e3dc3108b9 Author: Christian Lamparter Date: Sat Dec 13 16:45:38 2008 +0100 p54: update ACK failure statistic counter in real-time Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 54fdb040b4760d5b2994d15c1371e297679420e9 Author: Christian Lamparter Date: Sat Dec 13 14:14:20 2008 +0100 p54: move statistic timer update routine into a workqueue This patch moves a good chunk of code from the former statistic update timer routine into a workqueue, which is kindly provided by mac80211. Also as a nice side-effect we can lay the foundation for other essential housekeeping features we want to do in the future. e.g: - drain the (clogged) tx_queue. - initiate bursts. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit d5e490362feb648048ef20db9b0b2531d5425775 Author: Mohamed Abbas Date: Fri Dec 12 08:22:15 2008 -0800 iwlagn: fix agn rate scaling Rate scaling in agn can be broken because of these two problems 1- the LQ command could not sent, we try to call LQ command before post association will be rejected, this will cause the driver to break in rs_tx_status reporting initial rate does not match. 2- In rs_rate_init we can get a value of 12, rate 60, for last_txrate_idx, this rate only valid in SISO/MIMO mode only Signed-off-by: Mohamed Abbas Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit b8d476c8cb64a1640d8762aa442b8a73fa74b7d5 Author: Jouni Malinen Date: Fri Dec 12 17:08:31 2008 +0200 mac80211: Send Layer 2 Update frame on reassociation When a STA roams back to the same AP before the previous STA entry has expired, a new STA entry is not added in mac80211. However, a Layer 2 Update frame still needs to be transmitted to update layer 2 devices about the new location for the STA. Without this, switches may continue to forward frames to the previous (now incorrect) port when STA roams between APs. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 0fe45b1debba7302155b62f3829119a1185a4f5a Author: Benoit PAPILLAULT Date: Fri Dec 12 15:29:58 2008 +0100 ath5k: fix 802.11 header padding on RX, unpadding on TX Padding the 802.11 header to a multiple of 4 bytes needs to be done only for frames with a body. This fixes a bug where 2 bytes were missing in monitor mode for ACK frames. Inspired by a patch from Jouni Malinen on ath9k. Ref: http://bugzilla.kernel.org/show_bug.cgi?id=12101 : Signed-off-by: Benoit Papillault Signed-off-by: John W. Linville commit baad1d921b1565b6f08f60c035531d13ad8afa82 Author: Jouni Malinen Date: Fri Dec 12 14:38:34 2008 +0200 ath9k: Report HT rates in RX status Fix and clean up the RX status reporting by getting rid of code that used internal rate tables and ratekbps calculation. The correct value is now reported with MCS index instead of the old mechanism that defaulted to using the highest legacy rate. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 0fb8ca45eb164c405eef8978f26829f9348b4d4d Author: Jouni Malinen Date: Fri Dec 12 14:38:33 2008 +0200 mac80211: Add HT rates into RX status reporting This patch adds option for HT-enabled drivers to report HT rates (HT20/HT40, short GI, MCS index) to mac80211. These rates are currently not in the rate table, so the rate_idx is used to indicate MCS index. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 9d8eed12dbc04f8ed70090da14211c808b5a8d81 Author: Sujith Date: Fri Dec 12 11:59:07 2008 +0530 ath9k: Do not use association state to update rate table Now that HT information is made available to the driver through config() callback, the channel type can be calculated whenever setting the channel. Update the rate table accordingly with the new channel type. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 094d05dc32fc2930e381189a942016e5561775d9 Author: Sujith Date: Fri Dec 12 11:57:43 2008 +0530 mac80211: Fix HT channel selection HT management is done differently for AP and STA modes, unify to just the ->config() callback since HT is fundamentally a PHY property and cannot be per-BSS. Rename enum nl80211_sec_chan_offset as nl80211_channel_type to denote the channel type ( NO_HT, HT20, HT40+, HT40- ). Signed-off-by: Johannes Berg Signed-off-by: Sujith Signed-off-by: John W. Linville commit 420e7fabd9c6d907280ed6b3e40eef425c5d8d8d Author: Henning Rogge Date: Thu Dec 11 22:04:19 2008 +0100 nl80211: Add signal strength and bandwith to nl80211station info This patch adds signal strength and transmission bitrate to the station_info of nl80211. Signed-off-by: Henning Rogge Acked-by: Johannes Berg Signed-off-by: John W. Linville commit a1d94aa5560dc6b06baf30ae477115b51dc25461 Author: Randy Dunlap Date: Fri Dec 19 08:49:30 2008 -0800 kernel-doc: check for extra kernel-doc notations Add functionality to check for function parameters or structure (or union/typedef/enum) field members that are described in kernel-doc but are not part of the expected (declared) parameters or structure. These generate warnings that are called "Excess" descriptions. Signed-off-by: Randy Dunlap Signed-off-by: Sam Ravnborg commit eb63212868c348cc6d3ec6929d7d98f7d29493e9 Author: Takashi Iwai Date: Fri Dec 19 16:39:48 2008 +0100 ALSA: hda - Power up always when no jack detection is available When no jack detection is available, the pins should be always turned on since it can't be turned on/off dynamically via unsol events. Signed-off-by: Takashi Iwai commit 213cc060797378059a28ebc5c539f3e9a80160bd Author: Pekka J Enberg Date: Fri Dec 19 12:08:39 2008 +0200 ftrace: introduce tracing_reset_online_cpus() helper Impact: cleanup This patch factors out common code from multiple tracers into a tracing_reset_online_cpus() function and converts the tracers to use it. Signed-off-by: Pekka Enberg Signed-off-by: Ingo Molnar commit 9158923228822c08ed3116bfe21472261a05a725 Author: Takashi Iwai Date: Fri Dec 19 15:59:40 2008 +0100 ALSA: hda - Fix unused variable warnings in patch_sigmatel.c Fixed "unused varible" warnings in patch_sigmatel.c that have been introduced by the last changes. Signed-off-by: Takashi Iwai commit 6030634ac3dc818d2eafa3ddf00abba88918b3bd Merge: d4d9cd0338892e7f0d65f8a110473d175535cd5d 766245348db4b047a9b53548b5b893cd5115decc Author: Takashi Iwai Date: Fri Dec 19 15:43:24 2008 +0100 Merge branch 'topic/hda-stac-fix' into topic/hda commit 70043058a6968917c00c8d4cff5bfc0e095831ec Merge: 40aa4a30d0fd075fb934de4ee8163056827052ab 19b3f31609dc8be3a56c78dcb7da723f10f7009c Author: Takashi Iwai Date: Fri Dec 19 15:36:58 2008 +0100 Merge branch 'fix/asoc' into topic/asoc commit d4d9cd0338892e7f0d65f8a110473d175535cd5d Author: Takashi Iwai Date: Fri Dec 19 15:19:11 2008 +0100 ALSA: hda - Add probe_only option Added probe_only module option to hd-audio driver. This option specifies whether the driver creates and initializes the codec-parser after probing. When this option is set, the driver skips the codec parsing and initialization but gives you proc and other accesses. It's useful to see the initial codec state for debugging. The default of this value is off, so the default behavior is as same as before. Signed-off-by: Takashi Iwai commit 766245348db4b047a9b53548b5b893cd5115decc Author: Takashi Iwai Date: Fri Dec 19 10:09:47 2008 +0100 ALSA: hda - Use more distinct name for a unique volume in STAC/IDT When the line_out has only one DAC and it's unique (i.e. not shared by other outputs), assign a more reasonable and distinct mixer name such as "Headphone" or "Speaker". Signed-off-by: Takashi Iwai commit c21ca4a872697aeda4fe91bf9b6cc8380c62827c Author: Takashi Iwai Date: Fri Dec 19 09:26:08 2008 +0100 ALSA: hda - Rework on STAC/IDT auto-configuration code The current auto-configuration code has several problems especially for the new IDT codecs, e.g. wrong assignment of pins and DACs or coupled volume for speaker and headphone. This patch is a fairly large rewrite of the auto-configuration code. Some remaks - mic_switch and line_switch contain NIDs instead of bool - dac_list isn't fixed for IDT 92HD* codecs now, they are all probed - extra HP and speakers are stored in extra_dacs[]. Signed-off-by: Takashi Iwai commit 03c6901ea22bbb532586334d5b79941ccf56d5b0 Merge: 692f90421d3716ef0d0f120d9d2c9684009a4a01 8f55c1e51fbb03998708bdd97d5b6665ab92462d Author: Takashi Iwai Date: Fri Dec 19 14:24:13 2008 +0100 Merge branch 'fix/hda' into topic/hda commit 8df0f70751dc0e51d0550caee3416339183c5767 Author: Takashi Iwai Date: Fri Dec 19 13:55:17 2008 +0100 ALSA: ca0106 - Fix typo in resume code The register and channel_id pair were twisted in the pm code... Oh my. Signed-off-by: Takashi Iwai commit 692f90421d3716ef0d0f120d9d2c9684009a4a01 Author: Takashi Iwai Date: Fri Dec 19 12:44:46 2008 +0100 ALSA: hda - Fix HD-Audio.txt reference of model list The model list is now in HD-Audio-Models.txt. Signed-off-by: Takashi Iwai commit 3d4758299fa6180ff9304634c67ffdd44272c8e8 Author: Takashi Iwai Date: Fri Dec 19 12:13:18 2008 +0100 ALSA: ca0106 - Add IEC958 PCM Stream controls Added "IEC958 PCM Stream" controls for the per-stream IEC958 status bits. Using this instead of "IEC958 Default" is safer since the status bits will be recovered to the default states after closing the PCM stream. Signed-off-by: Takashi Iwai commit 86effd7e12ca63cecfd218717473d606e138e5e1 Author: Takashi Iwai Date: Fri Dec 19 12:04:06 2008 +0100 ALSA: ca0106 - Don't override the values at resume Don't override some values in ca0106_init_chip() at resume. Signed-off-by: Takashi Iwai commit abe1dfab60e1839d115930286cb421f5a5b193f3 Author: Wu Fengguang Date: Wed Nov 26 14:35:22 2008 +0800 ACPI: don't cond_resched() when irqs_disabled() The ACPI interpreter usually runs with irqs enabled. However, during suspend/resume it runs with irqs disabled to evaluate _GTS/_BFS, as well as by irqrouter_resume() which evaluates _CRS, _PRS, _SRS. http://bugzilla.kernel.org/show_bug.cgi?id=12252 Signed-off-by: Wu Fengguang Signed-off-by: Len Brown commit e76f42761197dd6e9405e2eeb35932acfede115a Author: Bjorn Helgaas Date: Thu Nov 13 17:30:13 2008 -0600 ACPI: fix 2.6.28 acpi.debug_level regression acpi_early_init() was changed to over-write the cmdline param, making it really inconvenient to set debug flags at boot-time. Also, This sets the default level to "info", which is what all the ACPI drivers use. So to enable messages from drivers, you only have to supply the "layer" (a.k.a. "component"). For non-"info" ACPI core and ACPI interpreter messages, you have to supply both level and layer masks, as before. Signed-off-by: Bjorn Helgaas Signed-off-by: Len Brown commit 4f2d23e1c3fe0abaf87fead3033c6cc3671b4d1c Author: Takashi Iwai Date: Fri Dec 19 10:14:13 2008 +0100 ALSA: hda - Use snd_hda_ctl_add() in patch_sigmatel.c Fixed the call of snd_ctl_add() by replacing with snd_hda_ctl_add() so that this mixer element can be tracked for re-configuration. Signed-off-by: Takashi Iwai commit 827057f5c12f5e10dc0279596db940aa6ddf8d9b Author: Takashi Iwai Date: Fri Dec 19 10:12:02 2008 +0100 ALSA: hda - Add missing initializations of amp and verb caches The re-initializations of codec amp and verb caches are missing at reconfig, which may cause Oops occasionally. Signed-off-by: Takashi Iwai commit 30cd324e9787ccc9a5ede59742d5409857550692 Merge: c71dd42db2c6f1637b92502a214587431c1a6ad2 6d102bc68f3dd2ae0e305b09170b1751aa67baeb 3d9101e92529e1ff6014f95a69afc82f37b9b13a Author: Ingo Molnar Date: Fri Dec 19 09:42:40 2008 +0100 Merge branches 'tracing/ftrace', 'tracing/ring-buffer' and 'tracing/urgent' into tracing/core Conflicts: include/linux/ftrace.h commit 345077cd98ff5532b2d1158013c3fec7b1ae85ec Author: Suresh Siddha Date: Thu Dec 18 18:09:21 2008 -0800 x86: fix intel x86_64 llc_shared_map/cpu_llc_id anomolies Impact: fix wrong cache sharing detection on platforms supporting > 8 bit apicid's In the presence of extended topology eumeration leaf 0xb provided by cpuid, 32bit extended initial_apicid in cpuinfo_x86 struct will be updated by detect_extended_topology(). At this instance, we should also reinit the apicid (which could also potentially be extended to 32bit). With out this there will potentially be duplicate apicid's populated in the per cpu's cpuinfo_x86 struct, resulting in wrong cache sharing topology etc detected by init_intel_cacheinfo(). Reported-by: Dimitri Sivanich Signed-off-by: Suresh Siddha Acked-by: Dimitri Sivanich Signed-off-by: Ingo Molnar Cc: commit cae51176c1082ecb59706056910f8a217d433981 Author: Takashi Iwai Date: Fri Dec 19 08:36:53 2008 +0100 ALSA: split HD-audio model list to HD-Audio-Models.txt Split the list of model option values to a separate file, HD-Audio-Models.txt, from ALSA-Configuration.txt. Signed-off-by: Takashi Iwai commit 335b986be79122b7323e09727e14c6a02bcf7746 Merge: 0ff555192a8d20385d49d1c420e2e8d409b3c0da 132bb7c0efe82fc976b06d557f5d63536cb9fdaa Author: Takashi Iwai Date: Fri Dec 19 08:25:46 2008 +0100 Merge branch 'topic/hda-doc' into topic/hda commit 0ff555192a8d20385d49d1c420e2e8d409b3c0da Merge: 3218c178b41b420cb7e0d120c7a137a3969242e5 9e43f0de690211cf7153b5f3ec251bc315647ada Author: Takashi Iwai Date: Fri Dec 19 08:22:57 2008 +0100 Merge branch 'fix/hda' into topic/hda commit c94cb314503a69492bf4455dce4f6d300cff0851 Author: Oliver Neukum Date: Thu Dec 18 23:00:59 2008 -0800 net: prepare usb net drivers for addition of status as a parameter USB is going to switch the signature of the callbacks to void callback(struct urb *urb, int status) This patch will ease the transition. Signed-off-by: Oliver Neukum Signed-off-by: David S. Miller commit ab5024ab23b78c86a0a1425defcdde48710fe449 Author: Cyrill Gorcunov Date: Thu Dec 18 22:59:32 2008 -0800 net: ppp_generic - use DEFINE_IDR for static initialization We could use DEFINE_IDR for statically allocated idr that allow us to save a few lines of code. And spell fix. Signed-off-by: Cyrill Gorcunov Signed-off-by: David S. Miller commit a109a5b916bc180e14fad0d1e9c37a08c85652c0 Author: Karen Xie Date: Thu Dec 18 22:56:20 2008 -0800 cxgb3: manage private iSCSI IP address The accelerated iSCSI traffic could use a private IP address unknown to the OS: - The IP address is required in both drivers to manage ARP requests and connection set up. - Added an control call to retrieve the ip address. - Reply to ARP requests dedicated to the private IP address. Signed-off-by: Divy Le Ray Signed-off-by: Karen Xie Signed-off-by: David S. Miller commit 221b3d60cbb2740ec7d46a4f1ea6d3318a112e51 Author: Anton Vorontsov Date: Thu Dec 18 08:23:35 2008 +0000 ucc_geth: Remove UGETH_FILTERING dead code The code appears to be dead: nobody call these functions, plus build breaks when UGETH_FILTERING is enabled: ucc_geth.c:1848: warning: 'struct enet_addr' declared inside parameter list ucc_geth.c:1848: warning: its scope is only this definition or declaration, which is probably not what you want ucc_geth.c: In function 'ugeth_82xx_filtering_get_match_addr_in_hash': ucc_geth.c:1856: error: dereferencing pointer to incomplete type ucc_geth.c:1874: error: dereferencing pointer to incomplete type ucc_geth.c:1877: warning: return from incompatible pointer type ucc_geth.c: At top level: ucc_geth.c:1885: warning: 'struct enet_addr' declared inside parameter list ucc_geth.c: In function 'ugeth_82xx_filtering_add_addr_in_hash': ucc_geth.c:1894: error: dereferencing pointer to incomplete type ucc_geth.c:1909: warning: passing argument 2 of 'ugeth_82xx_filtering_get_match_addr_in_hash' from incompatible pointer type ucc_geth.c:1909: warning: assignment from incompatible pointer type ucc_geth.c:1918: error: dereferencing pointer to incomplete type ucc_geth.c: At top level: ucc_geth.c:1928: warning: 'struct enet_addr' declared inside parameter list ucc_geth.c: In function 'ugeth_82xx_filtering_clear_addr_in_hash': ucc_geth.c:1947: warning: passing argument 2 of 'ugeth_82xx_filtering_get_match_addr_in_hash' from incompatible pointer type ucc_geth.c:1947: warning: assignment from incompatible pointer type ucc_geth.c:1954: error: dereferencing pointer to incomplete type ucc_geth.c: At top level: ucc_geth.c:2060: warning: 'struct enet_addr' declared inside parameter list ucc_geth.c: In function 'ugeth_82xx_filtering_add_addr_in_paddr': ucc_geth.c:2064: error: dereferencing pointer to incomplete type ucc_geth.c:2073: error: dereferencing pointer to incomplete type ucc_geth.c:2075: warning: passing argument 2 of 'hw_add_addr_in_paddr' from incompatible pointer type make[2]: *** [ucc_geth.o] Error 1 The code is there since the driver was merged, and nobody seem to be interested in fixing or actually using it. If we ever want the filtering support, we can always revert the patch and fix it, but so far it just draws reader's attention. Signed-off-by: Anton Vorontsov Signed-off-by: David S. Miller commit 3e73fc9a12679a546284d597c1f19165792d0b83 Author: Anton Vorontsov Date: Thu Dec 18 08:23:33 2008 +0000 ucc_geth: Fix IO memory (un)mapping code The driver doesn't check ioremap() return value, and doesn't free the remapped memory. This patch fixes it. Signed-off-by: Anton Vorontsov Signed-off-by: David S. Miller commit ba574696a34eb518979e742b35ccd30dec284583 Author: Anton Vorontsov Date: Thu Dec 18 08:23:31 2008 +0000 ucc_geth: Cleanup repetitive ucc_geth_memclean() calls No need to call ucc_geth_memclean() so many times, just check for errors in ucc_geth_open(), and call ucc_geth_stop() in case of errors. The ucc_geth_stop() may be called anytime and will do the right thing. Signed-off-by: Anton Vorontsov Signed-off-by: David S. Miller commit 67c2fb8ff0eda3cee95954a1dd245c3ce1a10486 Author: Anton Vorontsov Date: Thu Dec 18 08:23:29 2008 +0000 ucc_geth: Fix IRQ freeing code in ucc_geth_open() open() routine calls stop() in case of errors, the function will try to free the requested IRQ. But we don't know if it was actually requested, so the code might issue bogus free_irq(0, dev) call. Fix this by rearranging the code so that now request_irq() is the last call in the open() routine, and move free_irq() into the close(). Signed-off-by: Anton Vorontsov Signed-off-by: David S. Miller commit 1762a29ae5ebdd974eb2ba0c36b56ab6f7a9c16d Author: Anton Vorontsov Date: Thu Dec 18 08:23:26 2008 +0000 ucc_geth: Fix TX watchdog timeout handling The timeout handling code is currently broken in several ways: - It calls stop() (which frees all the memory and IRQ), and then calls startup() (which won't re-request IRQ, neither it will re-init the Fast UCC structure). - It calls these routines from the softirq context, which is wrong, since stop() calls free_irq() (which might sleep) and startup() allocates things with GFP_KERNEL. - It won't soft-reset the PHY. We need the PHY reset for at least MPC8360E-MDS boards with Marvell 88E1111 PHY, the PHY won't recover from timeouts w/o the reset. So the patch fixes these problems by implementing the workqueue for the timeout handling, and there we fully re-open the device via close() and open() calls. The close/open paths do the right things, and I can see that the driver actually survive the timeouts. Signed-off-by: Anton Vorontsov Signed-off-by: David S. Miller commit b3431c647662a3647f3500a12ec85d65e3622759 Author: Anton Vorontsov Date: Thu Dec 18 08:23:22 2008 +0000 ucc_geth: Fix endless loop in stop_{tx,rx} routines Currently the routines wait for the various bits w/o an assumption that bits may never get set. When timeouts happen I see that these bits never get set and so the routines hang the kernel. With this patch we'll wait the graceful stop for 100 ms, and then will simply exit. There is nothing* we can do about that, but it's OK since we'll do full reset later. * Well, actually, there is also not-graceful variant for the TX stop, but specs says that we never should use it. Signed-off-by: Anton Vorontsov Signed-off-by: David S. Miller commit 6086ebca13ddc9cfaaa25248ba8ebef35103fb74 Author: Matt Mackall Date: Thu Dec 18 19:54:22 2008 -0800 tcp: Stop scaring users with "treason uncloaked!" The original message was unhelpful and extremely alarming to our poor users, despite its charm. Make it less frightening. Signed-off-by: Matt Mackall Signed-off-by: David S. Miller commit e98def1f71fa0a6a37e12a56eb52ce5ed9e2e800 Author: Jesper Dangaard Brouer Date: Thu Dec 18 19:51:56 2008 -0800 NIU: Implement discard counters, optimize Optimize the lightly loaded case, by only synchronizing discards stats when qlen > 10 indicate potential for drops. Notice Robert Olsson might disagree with this patch. Signed-off-by: Jesper Dangaard Brouer Signed-off-by: David S. Miller commit d231776fda4a1ed754298720c5fbc29eb34f130c Author: Jesper Dangaard Brouer Date: Thu Dec 18 19:51:26 2008 -0800 NIU: Implement discard counters, info/debug statements. Discard packet counter debug statements that can be turned on at runtime by users to assist debugging of the driver code. Signed-off-by: Jesper Dangaard Brouer Signed-off-by: David S. Miller commit b8a606b871d37e03b92be1bd3deedeee97ea4f13 Author: Jesper Dangaard Brouer Date: Thu Dec 18 19:50:49 2008 -0800 NIU: Implement discard counters Implementing discard counters for the NIU driver turned out to be more complicated than first assumed. The discard counters for the NIU neptune chip are only 16-bit (even though this is a 64-bit chip). These 16-bit counters can overflow quickly, especially considering this is a 10Gbit/s ethernet card. The overflow indication bit is, unfortunatly, not usable as the counter value does not wrap, but remains at max value 0xFFFF. Resulting in lost counts until the counter is reset. The read and reset scheme also poses a problem. Both in theory and in practice counters can be lost in between reading nr64() and clearing the counter nw64(). For this reason, the number of counter clearings nw64() is limited/reduced. On the fast-path the counters are only syncronized once it exceeds 0x7FFF. When read by userspace, its syncronized fully. Signed-off-by: Jesper Dangaard Brouer Signed-off-by: David S. Miller commit 5664dd5561850df580414783cf3c8e0aa834c62e Author: Baruch Siach Date: Thu Dec 18 19:39:14 2008 -0800 enc28j60: reduce the number of spi transfers in enc28j60_set_bank() A major source of overhead in the enc28j60 driver is the SPI transfers. Each SPI transfer entails two kernel thread context switches. One major source of SPI transfers is the enc28j60_set_bank() functions which runs before every register access. This patch reduces the number of SPI transfers that enc28j60_set_bank() performs in two ways: 1. removes unnecessary bank switch for the registers that are present in all banks 2. when switching from banks 0 or 3 to banks 1 or 2 (i.e. only one bit changes) enc28j60_set_bank() does only one SPI transfer instead of two According to my tests these changes reduce the number of SPI transfers in about 25%. Signed-off-by: Baruch Siach Signed-off-by: David S. Miller commit b88a2a22c6670c31586d1a716255eae4c320b363 Author: Wang Chen Date: Thu Dec 18 19:36:46 2008 -0800 netdevice zd1201: Use after free | commit 3d29b0c33d431ecc69ec778f8c236d382f59a85f | Author: John W. Linville | Date: Fri Oct 31 14:13:12 2008 -0400 | | netdevice zd1201: Convert directly reference of netdev->priv to netdev_priv() | | We have some reasons to kill netdev->priv: | 1. netdev->priv is equal to netdev_priv(). | 2. netdev_priv() wraps the calculation of netdev->priv's offset, obviously | netdev_priv() is more flexible than netdev->priv. | But we cann't kill netdev->priv, because so many drivers reference to it | directly. | | OK, becasue Dave S. Miller said, "every direct netdev->priv usage is a bug", | and I want to kill netdev->priv later, I decided to convert all the direct | reference of netdev->priv first. | | (Original patch posted by Wang Chen w/ above | changelog but using dev->ml_priv. That doesn't seem appropriate | to me for this driver, so I've revamped it to use netdev_priv() | instead. -- JWL) This commit changed the allocation of netdev, but didn't change the free method of it. This causes "zd" be used after the memory, which is pointed by "zd", being freed by free_netdev(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 3de77cf23e9a19b9fc28e3b29371308325428c39 Author: David S. Miller Date: Thu Dec 18 19:23:56 2008 -0800 Revert "xfrm: Accept ESP packets regardless of UDP encapsulation mode" This reverts commit e061b165c7f4ec5e2e160d990b49011b5b6e5c6a. Signed-off-by: David S. Miller commit 739840d529eb7505d3cbfe9d468bf1440c9a8e27 Author: James Chapman Date: Wed Dec 17 12:02:16 2008 +0000 ppp: fix segfaults introduced by netdev_priv changes This patch fixes a segfault in ppp_shutdown_interface() and ppp_destroy_interface() when a PPP connection is closed. I bisected the problem to the following commit: commit c8019bf3aff653cceb64f66489fc299ee5957b57 Author: Wang Chen Date: Thu Nov 20 04:24:17 2008 -0800 netdevice ppp: Convert directly reference of netdev->priv 1. Use netdev_priv(dev) to replace dev->priv. 2. Alloc netdev's private data by alloc_netdev(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller The original ppp_generic code treated the netdev and struct ppp as independent data structures which were freed separately. In moving the ppp struct into the netdev, it is now possible for the private data to be freed before the call to ppp_shutdown_interface(), which is bad. The kfree(ppp) in ppp_destroy_interface() is also wrong; presumably ppp hasn't worked since the above commit. The following patch fixes both problems. Signed-off-by: James Chapman Reviewed-by: Wang Chen Signed-off-by: David S. Miller commit 1b08534e562dae7b084326f8aa8cc12a4c1b6593 Author: Wei Yongjun Date: Thu Dec 18 19:35:10 2008 -0800 net: Fix module refcount leak in kernel_accept() The kernel_accept() does not hold the module refcount of newsock->ops->owner, so we need __module_get(newsock->ops->owner) code after call kernel_accept() by hand. In sunrpc, the module refcount is missing to hold. So this cause kernel panic. Used following script to reproduct: while [ 1 ]; do mount -t nfs4 192.168.0.19:/ /mnt touch /mnt/file umount /mnt lsmod | grep ipv6 done This patch fixed the problem by add __module_get(newsock->ops->owner) to kernel_accept(). So we do not need to used __module_get(newsock->ops->owner) in every place when used kernel_accept(). Signed-off-by: Wei Yongjun Signed-off-by: David S. Miller commit f34a10bd9f8cc95ebdc69a079db195636b2e22e0 Author: Ingo Molnar Date: Fri Dec 19 01:36:14 2008 +0100 x86: fix warning in arch/x86/kernel/microcode_amd.c this warning: arch/x86/kernel/microcode_amd.c: In function ‘apply_microcode_amd’: arch/x86/kernel/microcode_amd.c:163: warning: cast from pointer to integer of different size arch/x86/kernel/microcode_amd.c:163: warning: cast from pointer to integer of different size triggers because we want to pass the address to the microcode MSR, which is 64-bit even on 32-bit. Cast it explicitly to express this. Signed-off-by: Ingo Molnar commit c71dd42db2c6f1637b92502a214587431c1a6ad2 Author: Ingo Molnar Date: Fri Dec 19 01:09:51 2008 +0100 tracing: fix warnings in kernel/trace/trace_sched_switch.c these warnings: kernel/trace/trace_sched_switch.c: In function ‘tracing_sched_register’: kernel/trace/trace_sched_switch.c:96: warning: passing argument 1 of ‘register_trace_sched_wakeup_new’ from incompatible pointer type kernel/trace/trace_sched_switch.c:112: warning: passing argument 1 of ‘unregister_trace_sched_wakeup_new’ from incompatible pointer type kernel/trace/trace_sched_switch.c: In function ‘tracing_sched_unregister’: kernel/trace/trace_sched_switch.c:121: warning: passing argument 1 of ‘unregister_trace_sched_wakeup_new’ from incompatible pointer type Trigger because sched_wakeup_new tracepoints need the same trace signature as sched_wakeup - which was changed recently. Fix it. Signed-off-by: Ingo Molnar commit 3bddb9a3246f6df5cf3b7655cb541ac10203bb71 Author: Ingo Molnar Date: Fri Dec 19 01:03:29 2008 +0100 tracing: fix warning in kernel/trace/trace.c this warning: kernel/trace/trace.c: In function ‘print_lat_fmt’: kernel/trace/trace.c:1826: warning: unused variable ‘state’ Triggers because 'state' has become unused - remove it. Signed-off-by: Ingo Molnar commit 9f221495997d180df51ce4d8296669445dd3e7b3 Author: Hiroshi Shimamoto Date: Thu Dec 18 14:47:37 2008 -0800 x86: ia32.h: remove unused struct sigfram32 and rt_sigframe32 Impact: cleanup Remove struct sigfram32 and rt_sigframe32 because there is no user. Signed-off-by: Hiroshi Shimamoto Signed-off-by: H. Peter Anvin commit 8869a2e5d3a66d5b63b948052d60cd13ede8b735 Author: Hiroshi Shimamoto Date: Thu Dec 18 14:46:52 2008 -0800 x86: asm-offset_64: use rt_sigframe_ia32 Impact: cleanup Use rt_sigframe_ia32 instead of rt_sigframe32. Signed-off-by: Hiroshi Shimamoto Signed-off-by: H. Peter Anvin commit b2fa739c06931d167b6d2aa7b514ab7f30d04dc0 Author: Hiroshi Shimamoto Date: Thu Dec 18 14:43:34 2008 -0800 x86: sigframe.h: include headers for dependency Impact: cleanup Include following headers for dependency. asm/sigcontext.h asm/siginfo.h asm/ucontext.h Signed-off-by: Hiroshi Shimamoto Signed-off-by: H. Peter Anvin commit d1769d5475176124af04fa69848b022c98c4bc37 Author: Jaswinder Singh Date: Fri Dec 19 00:03:56 2008 +0530 x86: traps.c declare functions before they get used Impact: cleanup In asm/traps.h :- do_double_fault : added under X86_64 sync_regs : added under X86_64 math_error : moved out from X86_32 as it is common for both 32 and 64 bit math_emulate : moved from X86_32 as it is common for both 32 and 64 bit smp_thermal_interrupt : added under X86_64 mce_threshold_interrupt : added under X86_64 Signed-off-by: Jaswinder Singh Signed-off-by: Ingo Molnar commit a2ced6e173e0c93870f79856e97825f4e180891e Author: venkatesh.pallipadi@intel.com Date: Thu Dec 18 11:41:33 2008 -0800 x86: PAT: update documentation to cover pgprot and remap_pfn related changes - v3 Impact: Documentation only. Add documentation related to pgprot_* change. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit 2520bd3123c00272f818a176c92d03c7d0a113d6 Author: venkatesh.pallipadi@intel.com Date: Thu Dec 18 11:41:32 2008 -0800 x86: PAT: add pgprot_writecombine() interface for drivers - v3 Impact: New mm functionality. Add pgprot_writecombine. pgprot_writecombine will be aliased to pgprot_noncached when not supported by the architecture. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit 8a7b12f70fb135a1b1d865687de3edcdc780f6d1 Author: venkatesh.pallipadi@intel.com Date: Thu Dec 18 11:41:31 2008 -0800 x86: PAT: change pgprot_noncached to uc_minus instead of strong uc - v3 Impact: mm behavior change. Make pgprot_noncached uc_minus instead of strong UC. This will make pgprot_noncached to be in line with ioremap_nocache() and all the other APIs that map page uc_minus on uc request. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit 5899329b19100c0b82dc78e9b21ed8b920c9ffb3 Author: venkatesh.pallipadi@intel.com Date: Thu Dec 18 11:41:30 2008 -0800 x86: PAT: implement track/untrack of pfnmap regions for x86 - v3 Impact: New mm functionality. Hookup remap_pfn_range and vm_insert_pfn and corresponding copy and free routines with reserve and free tracking. reserve and free here only takes care of non RAM region mapping. For RAM region, driver should use set_memory_[uc|wc|wb] to set the cache type and then setup the mapping for user pte. We can bypass below reserve/free in that case. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit 2ab640379a0ab4cef746ced1d7e04a0941774bcb Author: venkatesh.pallipadi@intel.com Date: Thu Dec 18 11:41:29 2008 -0800 x86: PAT: hooks in generic vm code to help archs to track pfnmap regions - v3 Impact: Introduces new hooks, which are currently null. Introduce generic hooks in remap_pfn_range and vm_insert_pfn and corresponding copy and free routines with reserve and free tracking. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit e121e418441525b5636321fe03d16f0193ad218e Author: venkatesh.pallipadi@intel.com Date: Thu Dec 18 11:41:28 2008 -0800 x86: PAT: add follow_pfnmp_pte routine to help tracking pfnmap pages - v3 Impact: New currently unused interface. Add a generic interface to follow pfn in a pfnmap vma range. This is used by one of the subsequent x86 PAT related patch to keep track of memory types for vma regions across vma copy and free. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit 3c8bb73ace6249bd089b70c941440441940e3365 Author: venkatesh.pallipadi@intel.com Date: Thu Dec 18 11:41:27 2008 -0800 x86: PAT: store vm_pgoff for all linear_over_vma_region mappings - v3 Impact: Code transformation, new functions added should have no effect. Drivers use mmap followed by pgprot_* and remap_pfn_range or vm_insert_pfn, in order to export reserved memory to userspace. Currently, such mappings are not tracked and hence not kept consistent with other mappings (/dev/mem, pci resource, ioremap) for the sme memory, that may exist in the system. The following patchset adds x86 PAT attribute tracking and untracking for pfnmap related APIs. First three patches in the patchset are changing the generic mm code to fit in this tracking. Last four patches are x86 specific to make things work with x86 PAT code. The patchset aso introduces pgprot_writecombine interface, which gives writecombine mapping when enabled, falling back to pgprot_noncached otherwise. This patch: While working on x86 PAT, we faced some hurdles with trackking remap_pfn_range() regions, as we do not have any information to say whether that PFNMAP mapping is linear for the entire vma range or it is smaller granularity regions within the vma. A simple solution to this is to use vm_pgoff as an indicator for linear mapping over the vma region. Currently, remap_pfn_range only sets vm_pgoff for COW mappings. Below patch changes the logic and sets the vm_pgoff irrespective of COW. This will still not be enough for the case where pfn is zero (vma region mapped to physical address zero). But, for all the other cases, we can look at pfnmap VMAs and say whether the mappng is for the entire vma region or not. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit f0bc2202e0373eb8e9b1ddbec930e2e681357db8 Author: Jaswinder Singh Date: Wed Dec 17 23:20:05 2008 +0530 x86: process.c declare c1e_remove_cpu before they get used Impact: cleanup, avoid sparse warning Included asm/idle.h for c1e_remove_cpu() declaration. Fixes this sparse warning: CHECK arch/x86/kernel/process.c arch/x86/kernel/process.c:284:6: warning: symbol 'c1e_remove_cpu' was not declared. Should it be static? Signed-off-by: Jaswinder Singh Signed-off-by: Ingo Molnar commit 5c2628e8b4f670d0954053444289e2b018be957a Author: Hiroshi Shimamoto Date: Thu Dec 18 09:18:35 2008 -0800 x86: sigframe.h: add guard macro Impact: cleanup Add missing guard macro _ASM_X86_SIGFRAME_H. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit f269b07e862c395d6981ab2c05d6bc34b0249e90 Author: Vegard Nossum Date: Thu Dec 18 18:35:06 2008 +0100 x86: revert CONFIG_RELOCATABLE=y defconfig change This commit: commit 5cb04df8d3f03e37a19f2502591a84156be71772 Author: Ingo Molnar Date: Sun May 4 19:49:04 2008 +0200 x86: defconfig updates changed CONFIG_RELOCATABLE from n to y, which may lead to a mismatch between the vmlinux debug information and the runtime location of the kernel, even when the bootloader does not relocate the kernel. Revert the specific change. Works for me with GRUB and qemu. Reference: http://lkml.org/lkml/2008/11/25/243 Signed-off-by: Vegard Nossum Signed-off-by: Ingo Molnar commit 179efcb47d5a5dd34a45be3f0eca4bffa717c6b4 Author: Vegard Nossum Date: Tue Dec 16 12:33:43 2008 +0100 kbuild: add headerdep used to detect inclusion cycles in header files Signed-off-by: Vegard Nossum Signed-off-by: Sam Ravnborg commit 40aa4a30d0fd075fb934de4ee8163056827052ab Author: Mark Brown Date: Tue Dec 16 10:15:12 2008 +0000 ASoC: Add WM8350 AudioPlus codec driver The WM8350 is an integrated audio and power management subsystem which provides a single-chip solution for portable audio and multimedia systems. The integrated audio CODEC provides all the necessary functions for high-quality stereo recording and playback. Programmable on-chip amplifiers allow for the direct connection of headphones and microphones with a minimum of external components. A programmable low-noise bias voltage is available to feed one or more electret microphones. Additional audio features include programmable high-pass filter in the ADC input path. This driver was originally written by Liam Girdwood with further updates from me. Signed-off-by: Mark Brown commit b8b33cb5608a3bb1b072548dc89159ef614096ab Author: Mark Brown Date: Thu Dec 18 11:19:30 2008 +0000 ASoC: Complain if we fail to create DAPM controls This should never happen and it's helpful to identify the specific control that failed when it does happen. Signed-off-by: Mark Brown commit 0b34a3d03e2fa615a786027b1ef4cbbd8c807f2c Author: Mark Brown Date: Tue Dec 16 14:44:48 2008 +0000 ASoC: Ease merge difficulties from new architectures Rather than listing lots of architectures per line in Kconfig and Makefile, causing merge conflicts all the time, have one per line in alphabetical order. Signed-off-by: Mark Brown commit 9c2c48020ec0dd6ecd27e5a1298f73b40d85a595 Author: Ken Chen Date: Tue Dec 16 23:41:22 2008 -0800 schedstat: consolidate per-task cpu runtime stats Impact: simplify code When we turn on CONFIG_SCHEDSTATS, per-task cpu runtime is accumulated twice. Once in task->se.sum_exec_runtime and once in sched_info.cpu_time. These two stats are exactly the same. Given that task->se.sum_exec_runtime is always accumulated by the core scheduler, sched_info can reuse that data instead of duplicate the accounting. Signed-off-by: Ken Chen Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 6d102bc68f3dd2ae0e305b09170b1751aa67baeb Author: Lai Jiangshan Date: Wed Dec 17 17:48:23 2008 +0800 tracing/ring-buffer: remove unused ring_buffer size Impact: remove dead code struct ring_buffer.size is not set after ring_buffer is initialized or resized. it is always 0. we can use "buffer->pages * PAGE_SIZE" to get ring_buffer's size Signed-off-by: Lai Jiangshan Signed-off-by: Ingo Molnar commit 7c9c160c54fc545efc23881344593868e5f717bd Author: Jaswinder Singh Date: Wed Dec 17 23:18:52 2008 +0530 x86: tls.c declare sys_set_thread_area and sys_get_thread_area before they get used Impact: cleanup In asm/syscalls.h move out sys_set_thread_area() and sys_get_thread_area() as they are common for both 32 and 64 bit. Signed-off-by: Jaswinder Singh Signed-off-by: Ingo Molnar commit 57a37505d19f4dfeee26f0fd7ea38ed6f1d10cbe Author: Jaswinder Singh Date: Wed Dec 17 23:17:21 2008 +0530 x86: time_64.c timer_interrupt() should be static Impact: cleanup, reduce kernel size a bit Signed-off-by: Jaswinder Singh Signed-off-by: Ingo Molnar commit 3d9101e92529e1ff6014f95a69afc82f37b9b13a Author: Thomas Gleixner Date: Wed Dec 17 22:34:13 2008 +0100 trace: fix task state printout Impact: fix occasionally incorrect trace output The tracing code has interesting varieties of printing out task state. Unfortunalely only one of the instances is correct as it copies the code from sched.c:sched_show_task(). The others are plain wrong as they treatthe bitfield as an integer offset into the character array. Also the size check of the character array is wrong as it includes the trailing \0. Use a common state decoder inline which does the Right Thing. Signed-off-by: Thomas Gleixner Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit ea3a6d6d60b2504c573fe3415f6617e8310c0236 Author: Steven Rostedt Date: Wed Dec 17 15:05:36 2008 -0500 ftrace: add not to regex on filtering functions Impact: enhancement Ingo Molnar has asked about a way to remove items from the filter lists. Currently, you can only add or replace items. The way items are added to the list is through opening one of the list files (set_ftrace_filter or set_ftrace_notrace) via append. If the file is opened for truncate, the list is cleared. echo spin_lock > /debug/tracing/set_ftrace_filter The above will replace the list with only spin_lock echo spin_lock >> /debug/tracing/set_ftrace_filter The above will add spin_lock to the list. Now this patch adds: echo '!spin_lock' >> /debug/tracing/set_ftrace_filter This will remove spin_lock from the list. The limited glob features of these lists also can be notted. echo '!spin_*' >> /debug/tracing/set_ftrace_filter This will remove all functions that start with 'spin_' Note: echo '!spin_*' > /debug/tracing/set_ftrace_filter will simply clear out the list (notice the '>' instead of '>>') Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit e05a43b744fb9518cbf8539a7ef33164ac60a70f Author: Steven Rostedt Date: Wed Dec 17 09:43:00 2008 -0500 trace: better use of stack_trace_enabled for boot up code Impact: clean up Andrew Morton suggested to use the stack_tracer_enabled variable to decide whether or not to start stack tracing on bootup. This lets us remove the start_stack_trace variable. Reported-by: Andrew Morton Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit f38f1d2aa5a3520cf05da7cd6bd12fe2b0c509b7 Author: Steven Rostedt Date: Tue Dec 16 23:06:40 2008 -0500 trace: add a way to enable or disable the stack tracer Impact: enhancement to stack tracer The stack tracer currently is either on when configured in or off when it is not. It can not be disabled when it is configured on. (besides disabling the function tracer that it uses) This patch adds a way to enable or disable the stack tracer at run time. It defaults off on bootup, but a kernel parameter 'stacktrace' has been added to enable it on bootup. A new sysctl has been added "kernel.stack_tracer_enabled" to let the user enable or disable the stack tracer at run time. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 40874491f9e9a4cb08eaf663dbe018bf5671975a Merge: d680fe44775ed17a80035462d9898f5e77bfd7dd d072c25f531c6513994960401d2c7f059434c0d2 Author: Ingo Molnar Date: Thu Dec 18 12:51:05 2008 +0100 Merge branches 'tracing/ftrace' and 'tracing/hw-branch-tracing' into tracing/core commit 1f04128a3db7c0f0e8b5d25323eba70ac342f47f Author: Takashi Iwai Date: Thu Dec 18 12:17:55 2008 +0100 ALSA: hda - Convert from takslet_hi_schedule() to tasklet_schedule() Replace all tasklet_hi_schedule() callers with the normal tasklet_schedule(). The former often causes troubles with RT-kernels, and has actually no merit. Signed-off-by: Takashi Iwai commit d98f9d84422c393103dc7569dc8444bac628f7ac Author: Hiroshi Shimamoto Date: Wed Dec 17 18:52:45 2008 -0800 x86: ia32_signal: use sigframe.h Impact: cleanup Use arch/x86/include/asm/sigframe.h instead of defining redundant structures. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 3b0d29ee1c73b6b90bfddd10f7b8e86632b6b694 Author: Hiroshi Shimamoto Date: Wed Dec 17 18:51:46 2008 -0800 x86: ia32_signal: rename struct sigframe and rt_sigframe Impact: cleanup, prepare to include sigframe.h Rename struct sigframe to struct sigframe_ia32 and struct rt_sigframe to struct rt_sigframe_ia32. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit c85c2ff877c9305f801f7d5b9e6382cb05a03d45 Author: Hiroshi Shimamoto Date: Wed Dec 17 18:51:08 2008 -0800 x86: signal: prepare to include from ia32_signal.c Impact: cleanup, prepare to use from ia32_signal.c Make struct sigframe_ia32 and rt_sigframe_ia32 visible to ia32_signal.c. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 41af86fad3c40646b9748279e3862781e937a5d2 Author: Hiroshi Shimamoto Date: Wed Dec 17 18:50:32 2008 -0800 x86: signal: move sigframe.h to arch/x86/include/asm Impact: cleanup, move header file Move arch/x86/kernel/sigframe.h to arch/x86/include/asm/sigframe.h. It will be used in arch/x86/ia32/ia32_signal.c. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit a5c56eb36f999ae0ecac278e51fd1cf8feb16c2f Author: Hiroshi Shimamoto Date: Wed Dec 17 18:49:55 2008 -0800 x86: signal: rename sigframe and rt_sigframe on 32-bit Impact: cleanup, prepare to move sigframe.h On 32-bit, rename struct sigrame to struct sigframe_ia32, struct rt_sigframe to struct rt_sigframe_ia32 and several structures. And add helper macros to access the above data in arch/x86/kernel/signal.c. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit f5223763a664da16771211f9d293e18cb242b246 Author: Hiroshi Shimamoto Date: Wed Dec 17 18:47:17 2008 -0800 x86: signal: move ia32 func declarations into arch/x86/kernel/signal.c Impact: cleanup Move declarations of ia32_setup_rt_frame() and ia32_setup_frame() into arch/x86/kernel/signal.c. This is for future use of sigframe.h. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 3218c178b41b420cb7e0d120c7a137a3969242e5 Author: Takashi Iwai Date: Thu Dec 18 09:17:56 2008 +0100 ALSA: hda - Remove duplicated strings from codec name Remove codec vendor names from the codec name strings. The vendor name is already given from the vendor name table, so displayed doubly. Signed-off-by: Takashi Iwai commit 74c611334ff131f2b87c7634314bde9e7fd98653 Author: Takashi Iwai Date: Thu Dec 18 09:11:33 2008 +0100 ALSA: hda - Add Intel vendor id string Added Intel codec vendor id string (0x8086). Also fixed Intel-HDMI codec name strings, too. Signed-off-by: Takashi Iwai commit 49ad9599d42da4787d5b3a19263440e0fcd4d1fc Author: David S. Miller Date: Wed Dec 17 22:11:38 2008 -0800 Revert "net: release skb->dst in sock_queue_rcv_skb()" This reverts commit 70355602879229c6f8bd694ec9c0814222bc4936. As pointed out by Mark McLoughlin IP_PKTINFO cmsg data is one post-queueing user, so this optimization is not valid right now. Signed-off-by: David S. Miller commit 3b5b35d02264580950d1e1565431b99d97c20ded Author: Holger Eitzenberger Date: Wed Dec 17 19:13:53 2008 -0800 bonding: use port_params in __update_lacpdu_from_port Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 3c52065fbbf3bd11776d63d43e18d0fd285b02e2 Author: Holger Eitzenberger Date: Wed Dec 17 19:13:27 2008 -0800 bonding: use port_params in __update_default_selected() I also removed some of the unneeded braces in the if condition to improve readability and a little bit of reformatting. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit ce6a49ad401d78ff1f66e2a55cf445d0f45d8146 Author: Holger Eitzenberger Date: Wed Dec 17 19:13:07 2008 -0800 bonding: use port_params in __update_selected() Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit a6ae186b9a950f4d0467cb9c3661965f442176de Author: Holger Eitzenberger Date: Wed Dec 17 19:12:40 2008 -0800 bonding: remove various function declarations They are all defined before used, it's therefore ok to remove them. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit c7e703d01ecfb8db1557090938f0eabb51ebe3a1 Author: Holger Eitzenberger Date: Wed Dec 17 19:12:07 2008 -0800 bonding: init port_params from template Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 5eefd1adceb49cada224a383f4a36c2f27fe4968 Author: Holger Eitzenberger Date: Wed Dec 17 19:08:46 2008 -0800 bonding: use plain memcpy in __record_default() Also remove the pointless comment at the top. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit b99d6ba96d814dab06671029948f22995d603d7b Author: Holger Eitzenberger Date: Wed Dec 17 19:08:14 2008 -0800 bonding: use port_params in __record_pdu() It helps in maintaining the various partner information values from the LACPDU. It also removes the pointless comment at the top. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 1055c9aba3b6850245fe3bbb533d4747e7f904bf Author: Holger Eitzenberger Date: Wed Dec 17 19:07:38 2008 -0800 bonding: introduce and use port_params structure It generally helps to handle those values in various places, using it might make the code more readable and gives room for other improvements. The IEEE standard talks about them as "parameter values". Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit aa3128199dbe07b5be3382de590c59216f91d3e3 Author: Holger Eitzenberger Date: Wed Dec 17 19:07:16 2008 -0800 bonding: improve elaborate port_state assignment The previous code was just a funny way of assigning both values (they are both of type u8). Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 42199884594bc336c9185441cbed99a9324dab34 Author: Andy Fleming Date: Wed Dec 17 16:52:30 2008 -0800 gianfar: Continue polling until both tx and rx are empty gfar_poll would declare polling done once the rx queue was empty, but the tx queue could still have packets left. Stolen mostly from the e1000 driver. Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit 8c7396aebb68994c0519e438eecdf4d5fa9c7844 Author: Dai Haruki Date: Wed Dec 17 16:52:00 2008 -0800 gianfar: Merge Tx and Rx interrupt for scheduling clean up ring No clean up function is executed in the interrupt context by this patch. Signed-off-by: Dai Haruki Acked-by: Andy Fleming Signed-off-by: David S. Miller commit c50a5d9aedef5b0b289d07f6d73934d394e50b3f Author: Dai Haruki Date: Wed Dec 17 16:51:32 2008 -0800 gianfar: Use interface name in interrupt name to distinguish the source. Interface name (ex. eth0) is used as the prefix for the interrupt name, with _rx, _tx, and _er appended to distinguish multiple interrupts on the same interface. Signed-off-by: Dai Haruki Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit 4669bc907488f5a3ee399ced132deb6165e489a3 Author: Dai Haruki Date: Wed Dec 17 16:51:04 2008 -0800 gianfar: Add Scatter Gather support Scatter Gather support in gianfar driver to handle fragmented frames on the transmit side. Signed-off-by: Poonam Aggrwal Signed-off-by: Dai Haruki Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit 8882d9a60028a9937e9c5652cfb80d4399ce5242 Author: Andy Fleming Date: Wed Dec 17 16:50:22 2008 -0800 gianfar: Fix packet drop when out of memory The patch which fixed gianfar so it drops packets when it runs out of memory left in the code which frees the skb when it drops packets. Change the code so that we only free the skb if the new skb was successfully created. Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit a693722aec4ce26fb46c21cf4bf4422484a397a7 Author: Arnaldo Carvalho de Melo Date: Wed Dec 17 16:08:01 2008 -0800 dccp_diag: LISTEN sockets don't have CCIDs And thus when we try to use 'ss -danemi' on these sockets that have no ccid blocks (data collected using systemtap after I fixed the problem): dccp_diag_get_info sk=0xffff8801220a3100, dp->dccps_hc_rx_ccid=0x0000000000000000, dp->dccps_hc_tx_ccid=0x0000000000000000 We get an OOPS: mica.ghostprotocols.net login: BUG: unable to handle kernel NULL pointer dereferenc0 IP: [] dccp_diag_get_info+0x82/0xc0 [dccp_diag] PGD 12106f067 PUD 122488067 PMD 0 Oops: 0000 [#1] PREEMPT Fix is trivial, and 'ss -d' is working again: [root@mica ~]# ss -danemi State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 0 *:5001 *:* ino:7288 sk:220a3100ffff8801 mem:(r0,w0,f0,t0) cwnd:0 ssthresh:0 [root@mica ~]# Signed-off-by: Arnaldo Carvalho de Melo Signed-off-by: David S. Miller commit c280266a326ccabeb64b6d69fa4fd21faf5bf354 Merge: eddce368f99b682683e09cf206eaa25131d40abe 55dac3a5553b13891f0ae4bbd11920619b5436d4 Author: Paul Mackerras Date: Thu Dec 18 11:06:12 2008 +1100 Merge branch 'linux-2.6' into next commit 9732d523212060c44a4723332bdc5ee429eeabc3 Author: Rémi Denis-Courmont Date: Wed Dec 17 15:49:09 2008 -0800 Phonet: USB CDC Phonet function for gadget framework This implements the Nokia vendor-specific communication device class function to exchange Phonet messages over USB. This function is already found in the "PC suite" USB profile of (non-Linux) Nokia handsets. Signed-off-by: Rémi Denis-Courmont Signed-off-by: David S. Miller commit 893873f3965ae0173a9315534bec7628162d2243 Author: Rémi Denis-Courmont Date: Wed Dec 17 15:48:50 2008 -0800 Phonet: get rid of deferred work on the transmission path Signed-off-by: Rémi Denis-Courmont Signed-off-by: David S. Miller commit be677730a0ccb6bedced6f65f2ba8f57a3c607ba Author: Rémi Denis-Courmont Date: Wed Dec 17 15:48:31 2008 -0800 Phonet: use atomic for packet TX window GPRS TX flow control won't need to lock the underlying socket anymore. Signed-off-by: Rémi Denis-Courmont Signed-off-by: David S. Miller commit 57c81fffc863fb4c1804bc963bcbfb82d736c6df Author: Rémi Denis-Courmont Date: Wed Dec 17 15:47:48 2008 -0800 Phonet: allocate separate ARP type for GPRS over a Phonet pipe A separate xmit lock class supports GPRS over a Phonet pipe over a TUN device (type ARPHRD_NONE). Signed-off-by: Rémi Denis-Courmont Signed-off-by: David S. Miller commit 2d91d78b68606ff7ce52ea70e187dee7831aa2f6 Author: Rémi Denis-Courmont Date: Wed Dec 17 15:47:29 2008 -0800 Phonet: allocate a non-Ethernet ARP type Also leave some room for more 802.11 types. Signed-off-by: Rémi Denis-Courmont Signed-off-by: David S. Miller commit fc10af8e658936f7b2bddd077f7ddcbe1eddc066 Author: Oliver Hartkopp Date: Wed Dec 17 15:37:55 2008 -0800 vcan: whitespace fixes Signed-off-by: Oliver Hartkopp Signed-off-by: David S. Miller commit a67534a7824c7ef3c4c377f82e60fcaa137f9a2c Author: Jiri Slaby Date: Wed Dec 10 09:09:27 2008 -0300 V4L/DVB (9908a): MAINTAINERS: mark linux-uvc-devel as subscribers only Posting to linux-uvc-devel is restricted to members. You can subscribe to the list at ... MAINTAINERS | 2 +- Signed-off-by: Jiri Slaby Acked-by: Laurent Pinchart Signed-off-by: Mauro Carvalho Chehab commit 7a95d267fb62cd6b80ef73be0592bbbe1dbd5df7 Author: Cyrill Gorcunov Date: Wed Dec 17 00:34:06 2008 -0800 net: ppp_generic - use idr technique instead of cardmaps Use idr technique instead of own implemented cardmaps. It saves us a number of lines and gives an ability to use library functions. Signed-off-by: Cyrill Gorcunov Signed-off-by: David S. Miller commit c0700f90e5300c63d01c70e157e75e4510dd2981 Author: David S. Miller Date: Tue Dec 16 23:53:20 2008 -0800 bnx2x: Fix namespace collision with FLOW_CTRL_{TX,RX} These are now defined in linux/mii.h and the bnx2x driver defines different values which are shared with hardware data structures. So add a "BNX2X_" prefix to these macro names. Based upon a report from Stephen Rothwell. Signed-off-by: David S. Miller commit f6d52432a4bc6da5de2a0bbb350f735db3206aa5 Author: David S. Miller Date: Tue Dec 16 23:45:02 2008 -0800 bnx2: Don't redefine FLOW_CTRL_{RX,TX}. They are provided generically by linux/mii.h now. Signed-off-by: David S. Miller commit 1f2435e532bd64742c3f766b7d5c17cc9d0b8558 Author: Michael Chan Date: Tue Dec 16 20:28:13 2008 -0800 bnx2: Update version to 1.9.0. And fix the 5716S pci_device_id entry to point to the proper string. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 4e1d0de95c55383f598516ebf82969260c18e4bd Author: Michael Chan Date: Tue Dec 16 20:27:45 2008 -0800 bnx2: Rename MSI-X vectors. Change MSI-X vector names to "ethx-%d". Signed-off-by: Michael Chan Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit eddce368f99b682683e09cf206eaa25131d40abe Merge: b53c7583e26746ef6f66c866841e10450150ed8e cd85400a022335a92fa3c25827179a7ad5e02225 Author: Paul Mackerras Date: Wed Dec 17 11:01:43 2008 +1100 Merge branch 'next' of master.kernel.org:/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx into next commit f40e0638237a2d3e2ce8bedf3af4b3c02cf6fff7 Author: Julia Lawall Date: Tue Dec 16 15:43:29 2008 -0800 drivers/net/hamradio: Move a dereference below a NULL test In each case, if the NULL test is necessary, then the dereference should be moved below the NULL test. The semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @@ type T; expression E; identifier i,fld; statement S; @@ - T i = E->fld; + T i; ... when != E when != i if (E == NULL) S + i = E->fld; // Signed-off-by: Julia Lawall Signed-off-by: David S. Miller commit f162e97d778ec29492be8eb9bbecb65be976b7c8 Author: Andy Fleming Date: Tue Dec 16 15:39:48 2008 -0800 phylib: Remove unnecessary "reset" fixups in genphy_setup_forced genphy_setup_forced hasn't actually reset the PHY for a long time, but a comment to that effect remained in the code, so code continued to act as if it *had* reset the PHY, and called the necessary fixup functions to respond to a PHY reset. With no reset, those functions are no longer needed, so we remove them. Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit 5a5efed4817ef931f648b118aeb9222e53122d2b Author: Dai Haruki Date: Tue Dec 16 15:34:50 2008 -0800 gianfar: Make all BD status writes 32-bit Whenever we want to update the status field in a BD, we usually want to update the length field, too. By combining them into one 32-bit field, we reduce the number of stores to memory shared with the controller, and we eliminate the need for order-enforcement, as the length and "READY" bit are now updated atomically at the same time. Signed-off-by: Dai Haruki Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit 31de198b4d2732028f4c5bff04b0103b1d8c1d8c Author: Andy Fleming Date: Tue Dec 16 15:33:40 2008 -0800 gianfar: Add macros for stepping through BDs This code is based strongly on code from Dai Haruki . The gianfar Buffer Descriptors are arranged in a circular array, the end of which is denoted by setting the "WRAP" bit in the descriptor. However, the software knows the end of the ring because it knows how many descriptors are there. Rather than check each descriptor for whether the WRAP bit is set, use pointer math to determine where the next BD is. This is also useful for when we want to look at BDs other than the very next one (for Scatter-Gather). Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit a22823e72a4821ce1d4a248fbd8f5a81795af339 Author: Dai Haruki Date: Tue Dec 16 15:32:11 2008 -0800 gianfar: Remove unused gfar_add_fcb() function parameter - Also, use cacheable_memzero instead of memset for performance reasons. Signed-off-by: Dai Haruki Acked-by: Andy Fleming Signed-off-by: David S. Miller commit 2c2db48acb34735d8ef257f130c0c330c46c8f6a Author: Dai Haruki Date: Tue Dec 16 15:31:15 2008 -0800 gianfar: Enable padding and Optimize the frame prepended bytes handling The eTSEC can prepend up to 32 bytes to a received frame, usually for the purpose of aligning the IP address to a word boundary, so this turns it on. While we're in there, make the handling of the pre-frame bytes (padding and Frame Control Block) cleaner. Signed-off-by: Dai Haruki Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit 77ecaf2d5a8bfd548eed3f05c1c2e6573d5de4ba Author: Dai Haruki Date: Tue Dec 16 15:30:48 2008 -0800 gianfar: Fix VLAN HW feature related frame/buffer size calculation. Optimize the VLAN checking logic as well. Signed-off-by: Dai Haruki Acked-by: Andy Fleming Signed-off-by: David S. Miller commit 12dea57be552a291e93827baeffbb91e33f587a6 Author: Dai Haruki Date: Tue Dec 16 15:30:20 2008 -0800 gianfar: Fix eTSEC configuration procedure Fix some bugs in the ethtool configuration functions: * gfar_clean_rx_ring should not be called with interrupts disabled. * Update last transmission time to avoid tx timeout. * Delete redundant NETIF_F_IP_CSUM check in gfar_start_xmit * Use netif_tx_lock_bh when reconfiguring the tx csum Signed-off-by: Dai Haruki Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit b46a8454cd304b5376ba00d3457a612720e47269 Author: Dai Haruki Date: Tue Dec 16 15:29:52 2008 -0800 gianfar: Optimize interrupt coalescing configuration Store the interrupt coalescing values in the form in which they will be written to the interrupt coalescing registers. This puts a little overhead into the ethtool configuration, and takes it out of the interrupt handler Signed-off-by: Dai Haruki Acked-by: Andy Fleming Signed-off-by: David S. Miller commit b31a1d8b41513b96e9c7ec2f68c5734cef0b26a4 Author: Andy Fleming Date: Tue Dec 16 15:29:15 2008 -0800 gianfar: Convert gianfar to an of_platform_driver Does the same for the accompanying MDIO driver, and then modifies the TBI configuration method. The old way used fields in einfo, which no longer exists. The new way is to create an MDIO device-tree node for each instance of gianfar, and create a tbi-handle property to associate ethernet controllers with the TBI PHYs they are connected to. Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit d680fe44775ed17a80035462d9898f5e77bfd7dd Author: Cyrill Gorcunov Date: Sat Dec 13 00:09:08 2008 +0300 x86: entry_64 - introduce FTRACE_ frame macro v2 Impact: clean up Itroduce MCOUNT_SAVE/RESTORE_FRAME which allow us to save a number of lines on source level. Also fix a comment in ftrace.h. Signed-off-by: Ingo Molnar commit 66896a85cf2890b6bbbc4c9ccdcd296600ffbf89 Author: Frederic Weisbecker Date: Sat Dec 13 20:18:13 2008 +0100 tracing/ftrace: add the printk-msg-only option Impact: display ftrace_printk messages "as is" By default, ftrace_printk() messages find their output with some other informations like pid, caller, ... Sometimes a developer just want to have the ftrace_printk left "as is", without other information. This is done by providing a default-off option called printk-msg-only. To enable it, just do `echo printk-msg-only > /debugfs/tracing/trace_options` Before the patch: <...>-2739 [000] 145.692153: __might_sleep: I'm an ftrace_printk msg in __might_sleep <...>-2739 [000] 145.692155: __might_sleep: I'm another ftrace_printk msg in __might_sleep After the patch and the printk-msg-only option enabled: I'm an ftrace_printk msg in __might_sleep I'm another ftrace_printk msg in __might_sleep Signed-off-by: Frederic Weisbecker Cc: Steven Rostedt Signed-off-by: Ingo Molnar commit 2c2d7329d8afa9efa3ec24e19a53e7be9d14f242 Author: Frederic Weisbecker Date: Tue Dec 16 22:08:58 2008 +0100 tracing/ftrace: use preempt_enable_no_resched_notrace in ring_buffer_time_stamp() Impact: prevent a trace recursion After some tests with function graph tracer under x86-32, I saw some recursions caused by ring_buffer_time_stamp() that calls preempt_enable_no_notrace() which calls preempt_schedule() which is traced itself. This patch re-enables preemption without rescheduling. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 257d938a0c17838c740eb68f0005b041444ac2c2 Author: Andy Fleming Date: Tue Dec 16 15:25:45 2008 -0800 gianfar: Use gfar_halt to stop DMA in gfar_probe gfar_halt does everything we want to do there, including disabling TX/RX. It also doesn't unnecessarily enable DMA if it's already stopped. Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit 5eeabf5150878018d7c7092042f3b681f5b554b5 Author: Sakari Ailus Date: Tue Dec 16 15:24:05 2008 -0800 tlan: Remove broken support for big buffers The big rx/tx buffer support is broken and unlikely to be very useful as such. Remove it. Signed-off-by: Sakari Ailus Signed-off-by: David S. Miller commit 354ade9058687fdef8a612c7b298d4c51dae3da7 Merge: 9f690db7ff4cb32493c0b0b13334cc4f5fd49a6b bb5f133dbc4f04b6388715d364ae5865455166c2 Author: David S. Miller Date: Tue Dec 16 15:23:54 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/enc28j60.c commit 8bee3f0a662ad9c3d6bb705b0530a3b90f089c55 Author: Hiroshi Shimamoto Date: Tue Dec 16 14:04:43 2008 -0800 x86: ia32_signal: use proper macro __USER32_DS Impact: cleanup Use __USER32_DS instead of __USER_DS in ia32_signal.c. No impact, because __USER32_DS is defined __USER_DS. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit d0b48ca189523b638d8674fa41e94d1950a17038 Author: Hiroshi Shimamoto Date: Tue Dec 16 14:03:36 2008 -0800 x86: ia32_signal: use __put_user() instead of __copy_to_user() Impact: cleanup __put_user() can be used for constant size 8, like arch/x86/kernel/signal.c. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit ae417bb487e3bb88dc862b83b4bf00d87ba67ec8 Author: Hiroshi Shimamoto Date: Tue Dec 16 14:02:16 2008 -0800 x86: signal: use signal_fault() in sys_sigreturn() Impact: cleanup Call signal_fault() in error route of sys_sigreturn(). Change log level to KERN_EMERG if current is init. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit c8182f0016fb65a721c4fbe487909a2d56178135 Author: Russ Anderson Date: Fri Dec 12 11:07:00 2008 -0600 sgi-xp: xpc needs to pass the physical address, not virtual Impact: fix crash xpc needs to pass the physical address, not virtual. Testing uncovered this problem. The virtual address happens to work most of the time due to the way bios was masking off the node bits. Passing the physical address makes it work all of the time. Signed-off-by: Russ Anderson Acked-by: Dean Nelson Signed-off-by: Ingo Molnar commit 189f67c4408806563a1f061f5c8bf184a6658477 Author: Jack Steiner Date: Fri Dec 12 14:50:40 2008 -0600 x86: UV fix for global physical addresses Impact: fix UV boot crash This fixes a UV bug related to generating global memory addresses on partitioned systems. Partition systems do not have physical memory at address 0. Instead, a chunk of high memory is remapped by the chipset so that it appears to be at address 0. This remapping is INVISIBLE to most of the OS. The only OS functions that need to be aware of the remaping are functions that directly interface to the chipset. The GRU is one example. Also, delete a couple of unused macros related to global memory addresses. Signed-off-by: Jack Steiner Signed-off-by: Ingo Molnar commit c15cb37cc4e9809624411333b96109ddf770e29c Merge: 77be80e437fec44f8b7a620314b7d7b605b8d93b 8b1fae4e4200388b64dd88065639413cb3f1051c Author: Ingo Molnar Date: Tue Dec 16 22:53:53 2008 +0100 Merge commit 'v2.6.28-rc8' into x86/uv commit fde9071167c4624281553b23232aa8b81e71c790 Author: Zachary Amsden Date: Fri Dec 12 11:26:35 2008 -0800 x86: clean up dead code in vmi_32.c Impact: cleanup, remove dead debug code I ran across some old debugging code in vmi paravirt-ops code that was already dead, but still potentially useful. After reviewing recent changes to the way kernel page tables are allocated and initialized, and the lack of bugs caught by this debugging code, I've concluded it is now totally useless to have around, and it's already been #if 0'd for quite some time. There's no rush to get this in mainline, but it's also totally harmless, so I'll let the x86 maintainers decide where it should be tucked. I've been out of the mainstream dev loop for a couple months, so apologies if I haven't got any protocol changes in order. Remove mummified remains found in vmi_32.c Signed-off-by: Zachary Amsden Signed-off-by: Ingo Molnar commit 8ae936690972dfcad73d0dde1095b9f32af5ee95 Author: Hiroshi Shimamoto Date: Fri Dec 12 15:52:26 2008 -0800 x86: hardirq: use inc_irq_stat() in non-unified functions Impact: cleanup Replace incrementing irq stat with inc_irq_stat() in non-unified functions. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit e1286f2c686f5976e0424bb6195ece25e7a17607 Author: Philipp Kohlbecher Date: Sun Dec 14 18:50:01 2008 +0100 x86: documentation fix regarding boot protocol Impact: clarify documentation Documentation/x86/boot.txt describes payload_offset as the offset from the end of the real-mode code. In fact, it is more accurately described as the offset from the beginning of the protected-mode code, as (a) this is how it is actually calculated and (b) the padding after the real-mode code is not included in the offset. Signed-off-by: Philipp Kohlbecher Acked-by: Ian Campbell Acked-by: H. Peter Anvin Signed-off-by: Ingo Molnar commit 78f902ccc597d6ce3e8d1477d70f2d79e960ba7a Merge: 9ee670fd87b7d69c8633b94c42aadcbbcb96f28e 8b1fae4e4200388b64dd88065639413cb3f1051c Author: Ingo Molnar Date: Tue Dec 16 22:04:48 2008 +0100 Merge commit 'v2.6.28-rc8' into x86/doc commit ecbf29cdb3990c83d90d0c4187c89fb2ce423367 Author: Jeremy Fitzhardinge Date: Tue Dec 16 12:37:07 2008 -0800 xen: clean up asm/xen/hypervisor.h Impact: cleanup hypervisor.h had accumulated a lot of crud, including lots of spurious #includes. Clean it all up, and go around fixing up everything else accordingly. Signed-off-by: Jeremy Fitzhardinge Signed-off-by: Ingo Molnar commit 80f40ee4a07530cc3acbc239a9299ec47025825b Author: Bharata B Rao Date: Mon Dec 15 11:56:48 2008 +0530 sched: use RCU variant of list traversal in for_each_leaf_rt_rq() Impact: fix potential of rare crash for_each_leaf_rt_rq() walks an RCU protected list (rq->leaf_rt_rq_list), but doesn't use list_for_each_entry_rcu(). Fix this. Signed-off-by: Bharata B Rao Cc: Peter Zijlstra Signed-off-by: Ingo Molnar commit a9b43c7d9890066709609df849959009645c1a19 Author: Jaswinder Singh Date: Mon Dec 15 23:11:10 2008 +0530 x86: setup.c find_and_reserve_crashkernel should be static Impact: cleanup, reduce kernel size a bit Signed-off-by: Jaswinder Singh Signed-off-by: Ingo Molnar commit c0195b6da08c4ddd8c8ea830f6c3c40bc7f82071 Author: Jaswinder Singh Date: Mon Dec 15 22:26:30 2008 +0530 x86: ldt.c declare sys_modify_ldt before they get used Impact: cleanup In asm/syscalls.h moved out sys_modify_ldt from CONFIG_X86_32 as it is common for both 32 and 64 bit. Signed-off-by: Jaswinder Singh Signed-off-by: Ingo Molnar commit 7b5b50f1be9e07714cfaa620d102c8daf3cdd814 Author: Jaswinder Singh Date: Mon Dec 15 22:24:48 2008 +0530 x86: signal.c declare do_notify_resume before they get used Impact: cleanup In asm/signal.h moved out do_notify_resume from __i386__ as it is common for both 32 and 64 bit. Signed-off-by: Jaswinder Singh Signed-off-by: Ingo Molnar arch/x86/include/asm/signal.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit aab02f0ae20b8fe0fe891e9f107c6e392256ca01 Author: Jaswinder Singh Date: Mon Dec 15 22:23:54 2008 +0530 x86: process_64.c declare __switch_to() and sys_arch_prctl before they get used Impact: cleanup In asm/system.h moved out __switch_to from CONFIG_X86_32 as it is common for both 32 and 64 bit. In asm/pctl.h defined sys_arch_prctl Signed-off-by: Jaswinder Singh Signed-off-by: Ingo Molnar commit f63c2f248959366cd11bfa476f866737047cf663 Author: Tej Date: Tue Dec 16 11:56:06 2008 -0800 xen: whitespace/checkpatch cleanup Impact: cleanup Signed-off-by: Tej Signed-off-by: Jeremy Fitzhardinge Signed-off-by: Ingo Molnar commit 40fb17152c50a69dc304dd632131c2f41281ce44 Author: Venki Pallipadi Date: Mon Nov 17 16:11:37 2008 -0800 x86: support always running TSC on Intel CPUs Impact: reward non-stop TSCs with good TSC-based clocksources, etc. Add support for CPUID_0x80000007_Bit8 on Intel CPUs as well. This bit means that the TSC is invariant with C/P/T states and always runs at constant frequency. With Intel CPUs, we have 3 classes * CPUs where TSC runs at constant rate and does not stop n C-states * CPUs where TSC runs at constant rate, but will stop in deep C-states * CPUs where TSC rate will vary based on P/T-states and TSC will stop in deep C-states. To cover these 3, one feature bit (CONSTANT_TSC) is not enough. So, add a second bit (NONSTOP_TSC). CONSTANT_TSC indicates that the TSC runs at constant frequency irrespective of P/T-states, and NONSTOP_TSC indicates that TSC does not stop in deep C-states. CPUID_0x8000000_Bit8 indicates both these feature bit can be set. We still have CONSTANT_TSC _set_ and NONSTOP_TSC _not_set_ on some older Intel CPUs, based on model checks. We can use TSC on such CPUs for time, as long as those CPUs do not support/enter deep C-states. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Ingo Molnar commit 7e91a122b11bb250d08ab125afd2c232c87502e1 Merge: 1bda71282ded6a2e09a2db7c8884542fb46bfd4f d4377974062122d6d9be0bbd8a910a0954714194 Author: Ingo Molnar Date: Tue Dec 16 21:02:10 2008 +0100 Merge branch 'x86/cpufeature' into x86/tsc Merge itto in x86/tsc because an upcoming patch relies on a new cpuid bit defined in the x86/cpufeature branch. commit d4377974062122d6d9be0bbd8a910a0954714194 Author: Ingo Molnar Date: Tue Dec 16 20:59:24 2008 +0100 x86: support always running TSC on Intel CPUs, add cpufeature definition Impact: add new synthetic-cpuid bit definition add X86_FEATURE_NONSTOP_TSC to the cpufeature bits - this is in preparation of Venki's always-running-TSC patch. Signed-off-by: Ingo Molnar commit dd7a5230cd651bfb119d222561c4032f30dd5659 Merge: 050dc6944b9ca2186f4729ab44e0da3743933941 8b1fae4e4200388b64dd88065639413cb3f1051c Author: Ingo Molnar Date: Tue Dec 16 20:57:41 2008 +0100 Merge commit 'v2.6.28-rc8' into x86/cpufeature commit df23cab563912ba43f7e9bc8ac517e5a2ddc9cd2 Author: Andreas Herrmann Date: Tue Dec 16 19:22:36 2008 +0100 x86: microcode_amd: modify log messages Impact: change microcode printk content Change log level and provide (at least I tried to;-) consistent, short, meaningful content. Signed-off-by: Andreas Herrmann Cc: Dmitry Adamushko Signed-off-by: Ingo Molnar commit 5549b94bc74c3e7edd44e0aeb7d9f773e82d2d20 Author: Andreas Herrmann Date: Tue Dec 16 19:21:30 2008 +0100 x86: microcode_amd: use 'packed' attribute for structs Impact: cleanup Signed-off-by: Andreas Herrmann Signed-off-by: Ingo Molnar commit 98415301ea2dd389539ab429bcfa9da07219eabc Author: Andreas Herrmann Date: Tue Dec 16 19:20:21 2008 +0100 x86: microcode_amd: remove (wrong) chipset deivce ID checks Impact: remove dead/incorrect code Currently there is no chipset specific ucode. The checks are incorrect anyway (e.g. pci device IDs are 16 bit and not 8 bit). Thus I remove the stuff for the time being and will reintroduce it if it's foreseeable that it is really needed. Signed-off-by: Andreas Herrmann Signed-off-by: Ingo Molnar commit 6cc9b6d94b6fee23b0671970f67d297fa76b68b3 Author: Andreas Herrmann Date: Tue Dec 16 19:17:45 2008 +0100 x86: microcode_amd: consolidate macro definitions Impact: cleanup Signed-off-by: Andreas Herrmann Signed-off-by: Ingo Molnar commit 29d0887ffd084cde9d6a1286cb82b71701a974dd Author: Andreas Herrmann Date: Tue Dec 16 19:16:34 2008 +0100 x86: microcode_amd: replace inline asm by common rdmsr/wrmsr functions Impact: cleanup Signed-off-by: Andreas Herrmann Signed-off-by: Ingo Molnar commit 0657d9ebff186dcdb17e582dcb909028775a7707 Author: Andreas Herrmann Date: Tue Dec 16 19:14:05 2008 +0100 x86: microcode_amd: don't pass superfluous function pointer for get_ucode_data Impact: cleanup Signed-off-by: Andreas Herrmann Signed-off-by: Ingo Molnar commit 8c135206c826095c852c16d94a0a74eeaf05c90d Author: Andreas Herrmann Date: Tue Dec 16 19:13:00 2008 +0100 x86: microcode_amd: fix compile warning Impact: fix build warning CC arch/x86/kernel/microcode_amd.o arch/x86/kernel/microcode_amd.c: In function ‘request_microcode_fw’: arch/x86/kernel/microcode_amd.c:393: warning: passing argument 2 of ‘generic_load_microcode’ discards qualifiers from pointer target type (Respect "const" qualifier of firmware->data.) Signed-off-by: Andreas Herrmann Signed-off-by: Ingo Molnar commit be957763b01905d33b53cdd25c8df110f94f499a Author: Andreas Herrmann Date: Tue Dec 16 19:11:23 2008 +0100 x86: microcode_amd: fix checkpatch warnings/errors Impact: cleanup Signed-off-by: Andreas Herrmann Signed-off-by: Ingo Molnar commit 2a3282a77b02fb47576ffbdb4867c8c6eeb83ed5 Author: Andreas Herrmann Date: Tue Dec 16 19:08:53 2008 +0100 x86: microcode_amd: fix typos and trailing whitespaces in log messages Impact: fix printk typos Signed-off-by: Andreas Herrmann Signed-off-by: Ingo Molnar commit 3c763fd77e66e55d029052da31df0abd9920cb1e Author: Andreas Herrmann Date: Tue Dec 16 19:07:47 2008 +0100 x86: microcode_amd: fix wrong handling of equivalent CPU id Impact: fix bug resulting in non-loaded AMD microcode mc_header->processor_rev_id is a 2 byte value. Similar is true for equiv_cpu in an equiv_cpu_entry -- only 2 bytes are of interest. Signed-off-by: Andreas Herrmann Signed-off-by: Ingo Molnar commit 3ca81a55256f38d9a8a4d5e9a6a9288ddc672e19 Author: Hans Verkuil Date: Tue Dec 16 08:32:37 2008 -0300 V4L/DVB (9906): v4l2-compat: test for unlocked_ioctl as well. The v4l_compat_ioctl32() function only tested for the presence of the ioctl op, not for unlocked_ioctl. So it would always return an error when used with drivers that use unlocked_ioctl instead of ioctl. Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab commit 8b21c1e90e633aee3363e3d87e1a0b829bdb420e Author: Mauro Carvalho Chehab Date: Sun Dec 14 19:39:03 2008 -0300 V4L/DVB (9885): drivers/media Kconfig's: fix bugzilla #12204 When the tuner modules were moved to common/tuners, a separate customize option were added for tuners. However, the automatic selection of the tuners were still using the older option. This causes that the automatic selection to fail, if DVB_FE_CUSTOMISE is selected. Also, since those tuners are now under MEDIA_TUNER_CUSTOMIZE menu, if you unset MEDIA_TUNER_CUSTOMIZE, you can't manually select the tuners. This patch fixes this error by replacing DVB_FE_CUSTOMISE by MEDIA_TUNER_CUSTOMIZE on all places were a tuner is selected. The patch were generated by this small script: for i in `find drivers/media -name Kconfig`; do cat $i|perl -ne 's/(MEDIA_TUNER.*)DVB_FE_CUSTOMISE/\1MEDIA_TUNER_CUSTOMIZE/; print $_' >a mv a $i done Also, manually reordered the tuner entries. Signed-off-by: Mauro Carvalho Chehab commit f86d4a9173e47050de9f88faa4aaf70a718791c5 Author: Jim Paris Date: Wed Dec 10 05:50:44 2008 -0300 V4L/DVB (9875): gspca - main: Fix vidioc_s_jpegcomp locking. Signed-off-by: Jim Paris Signed-off-by: Jean-Francois Moine Signed-off-by: Mauro Carvalho Chehab commit 11c6c7fb89a7526841eb4f294de631f3b8a31f10 Author: Antti Seppälä Date: Mon Dec 1 06:59:37 2008 -0300 V4L/DVB (9781): [PATCH] Cablestar 2 I2C retries (fix CableStar2 support) At some point the Flexcop driver was changed to support newer Flexcop cards. These modifications however broke the detection of Cablestar 2 DVB-C cards. The reason is that the earlier version of the driver used to retry unsuccessful i2c operations. The demodulator of Cablestar 2 cards (stv0297) seems to be very dependent on these retries and adding them back fixes Cablestar detection. This patch restores this behaviour for the CableStar2. Signed-off-by: Antti Seppälä Signed-off-by: Patrick Boettcher Signed-off-by: Mauro Carvalho Chehab commit 4b330bee66e88c94789d2eea250dd1fd454a645e Author: Devin Heitmueller Date: Mon Dec 1 06:51:14 2008 -0300 V4L/DVB (9780): dib0700: Stop repeating after user stops pushing button A user noticed that there would continue to be 4-6 keypresses even after the user stopped holding down the button. This was because we were not reading the bulk pipe faster than the firmware was injecting information, which would result in a backlog. Make the query interval faster, and increase the number of cycles before we start repeating to compensate. Thanks to Knud Poulsen for pointing this out. Signed-off-by: Devin Heitmueller Signed-off-by: Patrick Boettcher Signed-off-by: Mauro Carvalho Chehab commit b6fd6f26733e864fba2ea3eb1d716e23d2e66f3a Author: Ingo Molnar Date: Tue Dec 16 19:23:36 2008 +0100 x86, mm: limit MAXMEM on 64-bit on 64-bit x86 the physical memory limit is controlled by the sparsemem bits - which are 44 bits right now. But MAXMEM (the max pfn number e820 parsing will allow to enter our sizing routines) is set to 0x00003fffffffffff, i.e. 46 bits - that's too large because it overlaps into the vmalloc range. So couple MAXMEM to MAX_PHYSMEM_BITS, and add a comment that the maximum of MAX_PHYSMEM_BITS is 45 bits. Signed-off-by: Ingo Molnar commit cfc319833b5b359bf3bce99564dbac00af7925ac Author: Jan Beulich Date: Tue Dec 16 11:46:58 2008 +0000 x86, 32-bit: improve lazy TLB handling code Impact: micro-optimize the 32-bit TLB flush code Use the faster x86_{read,write}_percpu() accessors here. Signed-off-by: Jan Beulich Signed-off-by: Ingo Molnar commit beeb4195cbc80b7489631361b7ed38b7518af433 Author: Jan Beulich Date: Tue Dec 16 11:45:56 2008 +0000 x86, 32-bit: add some compile time checks to mem_init() Some of the inconsistencies checked for at run time can be detected at build time already, so duplicate the checks done at run time to also be done at build time. Signed-off-by: Jan Beulich Signed-off-by: Ingo Molnar commit d6be89ad660c5d03edef91715093d447025df59b Author: Jan Beulich Date: Tue Dec 16 11:42:45 2008 +0000 x86, 32-bit: simplify alloc_low_page() Impact: cleanup Neither of the callers really needs the physical address this function returns, so eliminate the pointless argument. Signed-off-by: Jan Beulich Signed-off-by: Ingo Molnar commit b93a531e315e97ef00367099e6b5f19651936e20 Author: Jan Beulich Date: Tue Dec 16 11:40:27 2008 +0000 allow bug table entries to use relative pointers (and use it on x86-64) Impact: reduce bug table size This allows reducing the bug table size by half. Perhaps there are other 64-bit architectures that could also make use of this. Signed-off-by: Jan Beulich Signed-off-by: Ingo Molnar commit 1796316a8b028a148be48ba5d4e7be493a39d173 Author: Jan Beulich Date: Tue Dec 16 11:35:24 2008 +0000 x86: consolidate __swp_XXX() macros Impact: cleanup, code robustization The __swp_...() macros silently relied upon which bits are used for _PAGE_FILE and _PAGE_PROTNONE. After having changed _PAGE_PROTNONE in our Xen kernel to no longer overlap _PAGE_PAT, live locks and crashes were reported that could have been avoided if these macros properly used the symbolic constants. Since, as pointed out earlier, for Xen Dom0 support mainline likewise will need to eliminate the conflict between _PAGE_PAT and _PAGE_PROTNONE, this patch does all the necessary adjustments, plus it introduces a mechanism to check consistency between MAX_SWAPFILES_SHIFT and the actual encoding macros. This also fixes a latent bug in that x86-64 used a 6-bit mask in __swp_type(), and if MAX_SWAPFILES_SHIFT was increased beyond 5 in (the seemingly unrelated) linux/swap.h, this would have resulted in a collision with _PAGE_FILE. Non-PAE 32-bit code gets similarly adjusted for its pte_to_pgoff() and pgoff_to_pte() calculations. Signed-off-by: Jan Beulich Signed-off-by: Ingo Molnar commit d072c25f531c6513994960401d2c7f059434c0d2 Author: Markus Metzger Date: Tue Dec 16 15:53:11 2008 +0100 x86, bts: correctly report invalid bts records Impact: change the reporting of empty BTS records Correctly report a cleared BTS record as invalid. Used to be reported as branch from 0 to 0. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit cc1dc6d039ced64c2f8b8457bf1cccf4ecfc5942 Author: Markus Metzger Date: Tue Dec 16 15:51:03 2008 +0100 x86, bts: remove recursion from get_context Impact: cleanup Optimistically allocate a DS context. It is extremely unlikely that one already existed. This simplifies the code a lot. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit bb1f24bf00a85f666b56a09b7cdbfd221af16c2c Author: Ben Stanley Date: Mon Dec 15 23:38:12 2008 +1100 ALSA: ca0106 MSI K8N Diamond MB spi_dac 2->1 This patch removes an inconsistency that became apparent when I documented the fields of snd_ca0106_details. spi_dac is always used in a 'boolean' sense, so this cleanup should make no difference. [Actually, there is one place checking explicitly spi_dac == 1, so this will change the behavior. But, supposing it's rather a typo, I apply this clean-up patch -- tiwai] Signed-off-by: Ben Stanley Signed-off-by: Takashi Iwai commit f649a7145b8b67121e8be0b50f7861755f21aa3b Author: Ben Stanley Date: Fri Dec 12 09:47:13 2008 +1100 ALSA: ca0106 Add comments to snd_ca0106_details struct Takashi wrote an email [1] explaining the fields of snd_ca0106_details, so I captured the information into the ca0106.h header file. [1] http://article.gmane.org/gmane.linux.alsa.devel/56783/match=takashi+gpio_type Signed-off-by: Ben Stanley Signed-off-by: Takashi Iwai commit 31117b78ee843622cbc4c7c17c97be417c766385 Author: Takashi Iwai Date: Tue Dec 16 14:43:21 2008 +0100 ALSA: hda - Add Nvidia vendor id string Added Nvidia (0x10de) to the vendor id list. Cleaned up the codec name strings accordingly. Signed-off-by: Takashi Iwai commit e9515c3c9feecd74174c2998add0db51e02abb8d Author: Ken Chen Date: Mon Dec 15 22:04:15 2008 -0800 sched, cpuacct: export percpu cpuacct cgroup stats This patch export per-cpu CPU cycle usage for a given cpuacct cgroup. There is a need for a user space monitor daemon to track group CPU usage on per-cpu base. It is also useful for monitoring CFS load balancer behavior by tracking per CPU group usage. Signed-off-by: Ken Chen Reviewed-by: Li Zefan Reviewed-by: Andrew Morton Signed-off-by: Ingo Molnar commit 720f54988e17b33f3f477010b3a68ee872d20d5a Author: Ken Chen Date: Mon Dec 15 22:02:01 2008 -0800 sched, cpuacct: refactoring cpuusage_read / cpuusage_write Impact: micro-optimize the code on 64-bit architectures In the thread regarding to 'export percpu cpuacct cgroup stats' http://lkml.org/lkml/2008/12/7/13 akpm pointed out that current cpuacct code is inefficient. This patch refactoring the following: * make cpu_rq locking only on 32-bit * change iterator to each_present_cpu instead of each_possible_cpu to make it hotplug friendly. It's a bit of code churn, but I was rewarded with 160 byte code size saving on x86-64 arch and zero code size change on i386. Signed-off-by: Ken Chen Cc: Paul Menage Cc: Li Zefan Signed-off-by: Ingo Molnar commit 9dfc3bc7d21864d47797d64b8d531d4dbbc0b618 Merge: da485e0cb16726797e99a595a399b9fc721b91bc cbc34ed1ac36690f75fd272e19e7b4fc29aae5a2 2bed8446819a7c5033aa1da138d9f230ae212edc ffc2238af8431d930d2c15f16feecf1fd6d75642 Author: Ingo Molnar Date: Tue Dec 16 12:03:38 2008 +0100 Merge branches 'tracing/fastboot', 'tracing/ftrace', 'tracing/function-graph-tracer' and 'tracing/hw-branch-tracing' into tracing/core commit 9f690db7ff4cb32493c0b0b13334cc4f5fd49a6b Author: Yang Hongyang Date: Tue Dec 16 02:08:29 2008 -0800 ipv6: fix the outgoing interface selection order in udpv6_sendmsg() 1.When no interface is specified in an IPV6_PKTINFO ancillary data item, the interface specified in an IPV6_PKTINFO sticky optionis is used. RFC3542: 6.7. Summary of Outgoing Interface Selection This document and [RFC-3493] specify various methods that affect the selection of the packet's outgoing interface. This subsection summarizes the ordering among those in order to ensure deterministic behavior. For a given outgoing packet on a given socket, the outgoing interface is determined in the following order: 1. if an interface is specified in an IPV6_PKTINFO ancillary data item, the interface is used. 2. otherwise, if an interface is specified in an IPV6_PKTINFO sticky option, the interface is used. Signed-off-by: Yang Hongyang Signed-off-by: David S. Miller commit f250dcdac111a8369220b8e192eae6c56dc1098a Author: Yang Hongyang Date: Tue Dec 16 02:07:45 2008 -0800 ipv6: fix the return interface index when get it while no message is received When get receiving interface index while no message is received, the the value seted with setsockopt() should be returned. RFC 3542: Issuing getsockopt() for the above options will return the sticky option value i.e., the value set with setsockopt(). If no sticky option value has been set getsockopt() will return the following values: - For the IPV6_PKTINFO option, it will return an in6_pktinfo structure with ipi6_addr being in6addr_any and ipi6_ifindex being zero. Signed-off-by: Yang Hongyang Signed-off-by: David S. Miller commit b24a2516d10751d7ed5afb58420df25370c9dffb Author: Yang Hongyang Date: Tue Dec 16 02:06:23 2008 -0800 ipv6: Add IPV6_PKTINFO sticky option support to setsockopt() There are three reasons for me to add this support: 1.When no interface is specified in an IPV6_PKTINFO ancillary data item, the interface specified in an IPV6_PKTINFO sticky optionis is used. RFC3542: 6.7. Summary of Outgoing Interface Selection This document and [RFC-3493] specify various methods that affect the selection of the packet's outgoing interface. This subsection summarizes the ordering among those in order to ensure deterministic behavior. For a given outgoing packet on a given socket, the outgoing interface is determined in the following order: 1. if an interface is specified in an IPV6_PKTINFO ancillary data item, the interface is used. 2. otherwise, if an interface is specified in an IPV6_PKTINFO sticky option, the interface is used. 2.When no IPV6_PKTINFO ancillary data is received,getsockopt() should return the sticky option value which set with setsockopt(). RFC 3542: Issuing getsockopt() for the above options will return the sticky option value i.e., the value set with setsockopt(). If no sticky option value has been set getsockopt() will return the following values: 3.Make the setsockopt implementation POSIX compliant. Signed-off-by: Yang Hongyang Signed-off-by: David S. Miller commit bc02ff95fe4ebd3e5ee7455c0aa6f76ebe39ebca Author: Steve Glendinning Date: Tue Dec 16 02:00:48 2008 -0800 net: Refactor full duplex flow control resolution These 4 drivers have identical full duplex flow control resolution functions. This patch changes them all to use one common function. The function in question decides whether a device should enable TX and RX flow control in a standard way (IEEE 802.3-2005 table 28B-3), so this should also be useful for other drivers. Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit e18ce3465477502108187c6c08b6423fb784a313 Author: Steve Glendinning Date: Tue Dec 16 02:00:00 2008 -0800 net: Move flow control definitions to mii.h flags used within drivers for indicating tx and rx flow control are defined in 4 drivers (and probably more), move these constants to mii.h. The 3 SMSC drivers use the same constants (FLOW_CTRL_TX), but TG3 uses TG3_FLOW_CTRL_TX, so this patch also renames the constants within TG3. Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit f9867328f9e1c3fceb8593f84b980aa1d648ce9c Author: Alexey Dobriyan Date: Tue Dec 16 01:55:38 2008 -0800 simeth: convert to net_device_ops Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 8207befa199c9ade670d1cf9a5bcdc76310751bd Author: Divy Le Ray Date: Tue Dec 16 01:51:47 2008 -0800 cxgb3: untie strict FW matching The NIC driver can work with mutliple versions of the FW. Let the driver load when the embedded FW does not match, and the FW update mechanism failed. The iWARP module will make its own loading decision. Signed-off-by: Divy Le Ray Signed-off-by: David S. Miller commit 5ad258c0a85a7cc03c46874e8a26c7e9b4dfb90d Author: Oliver Hartkopp Date: Tue Dec 16 01:42:50 2008 -0800 vcan: convert to net_device_ops Signed-off-by: Oliver Hartkopp Signed-off-by: David S. Miller commit ffcebb163c6ddba11abd2e8aabc7a8a88982e4f4 Author: James Chapman Date: Tue Dec 16 01:23:49 2008 -0800 l2tp: fix UDP checksum support The pppol2tp driver has had broken UDP checksum code for a long time. This patch fixes it. If UDP checksums are enabled in the tunnel's UDP socket, the L2TP driver now properly validates the checksum on receive and fills in the checksum on transmit. If the network device has hardware checksum support and is enabled, it is used instead of generating/checking the checksum in software. Signed-off-by: James Chapman Signed-off-by: David S. Miller commit 09a2c3c0d3d3550675b766aa5edc28ffee79d7ab Author: Rémi Denis-Courmont Date: Tue Dec 16 01:18:31 2008 -0800 Phonet: improve GPRS variable names Signed-off-by: Rémi Denis-Courmont Signed-off-by: David S. Miller commit 4ee59d54c3f91f1f3ad7f2856b27981414430f9e Author: Hannes Eder Date: Tue Dec 16 01:17:33 2008 -0800 isdn: eicon: fix sparse warning: make global functions static Fix this sparse warnings by making the functions static: drivers/isdn/hardware/eicon/di.c:356:6: warning: symbol 'isdn_rc' was not declared. Should it be static? drivers/isdn/hardware/eicon/di.c:558:6: warning: symbol 'isdn_ind' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:595:6: warning: symbol 'api_parse' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:634:6: warning: symbol 'api_save_msg' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:666:6: warning: symbol 'api_load_msg' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:3417:6: warning: symbol 'manufacturer_req' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:3745:6: warning: symbol 'manufacturer_res' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:4077:6: warning: symbol 'control_rc' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:4743:6: warning: symbol 'data_rc' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:4779:6: warning: symbol 'data_ack' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:4805:6: warning: symbol 'sig_ind' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:6173:6: warning: symbol 'SendInfo' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:6349:6: warning: symbol 'SendMultiIE' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:6468:6: warning: symbol 'nl_ind' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:7250:6: warning: symbol 'get_plci' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:7409:6: warning: symbol 'add_d' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:7427:6: warning: symbol 'add_ai' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:7448:6: warning: symbol 'add_b1' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:7912:6: warning: symbol 'add_b23' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:8709:6: warning: symbol 'nl_req_ncci' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:8731:6: warning: symbol 'send_req' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:8866:6: warning: symbol 'listen_check' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:8909:6: warning: symbol 'IndParse' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:8994:6: warning: symbol 'ie_compare' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:9003:6: warning: symbol 'find_cip' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:9071:6: warning: symbol 'SetVoiceChannel' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:9089:6: warning: symbol 'VoiceChannelOff' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:9102:6: warning: symbol 'AdvCodecSupport' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:9198:6: warning: symbol 'CodecIdCheck' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 205516c12dbba003c26b42cfb41e598631300106 Author: Ken Chen Date: Tue Dec 16 00:32:21 2008 -0800 x86: convert rdtscll() to use __native_read_tsc Impact: micro-optimization Is there any reason why x86 rdtscll have to use the out of line function instead of inline __native_read_tsc()? native_read_tsc and __native_read_tsc is essentially the same functions. Patch to let x86 rdtscll() to use the inline version of read_tsc. Signed-off-by: Ken Chen Signed-off-by: Ingo Molnar commit b1879204dda06a92a4ff55b681c99ee185180003 Author: Ilpo Järvinen Date: Tue Dec 16 01:15:11 2008 -0800 ipmr: merge common code Also removes redundant skb->len < x check which can't be true once pskb_may_pull(skb, x) succeeded. $ diff-funcs pim_rcv ipmr.c ipmr.c pim_rcv_v1 --- ipmr.c:pim_rcv() +++ ipmr.c:pim_rcv_v1() @@ -1,22 +1,27 @@ -static int pim_rcv(struct sk_buff * skb) +int pim_rcv_v1(struct sk_buff * skb) { - struct pimreghdr *pim; + struct igmphdr *pim; struct iphdr *encap; struct net_device *reg_dev = NULL; if (!pskb_may_pull(skb, sizeof(*pim) + sizeof(*encap))) goto drop; - pim = (struct pimreghdr *)skb_transport_header(skb); - if (pim->type != ((PIM_VERSION<<4)|(PIM_REGISTER)) || - (pim->flags&PIM_NULL_REGISTER) || - (ip_compute_csum((void *)pim, sizeof(*pim)) != 0 && - csum_fold(skb_checksum(skb, 0, skb->len, 0)))) + pim = igmp_hdr(skb); + + if (!mroute_do_pim || + skb->len < sizeof(*pim) + sizeof(*encap) || + pim->group != PIM_V1_VERSION || pim->code != PIM_V1_REGISTER) goto drop; - /* check if the inner packet is destined to mcast group */ encap = (struct iphdr *)(skb_transport_header(skb) + - sizeof(struct pimreghdr)); + sizeof(struct igmphdr)); + /* + Check that: + a. packet is really destinted to a multicast group + b. packet is not a NULL-REGISTER + c. packet is not truncated + */ if (!ipv4_is_multicast(encap->daddr) || encap->tot_len == 0 || ntohs(encap->tot_len) + sizeof(*pim) > skb->len) @@ -40,9 +45,9 @@ skb->ip_summed = 0; skb->pkt_type = PACKET_HOST; dst_release(skb->dst); + skb->dst = NULL; reg_dev->stats.rx_bytes += skb->len; reg_dev->stats.rx_packets++; - skb->dst = NULL; nf_reset(skb); netif_rx(skb); dev_put(reg_dev); $ codiff net/ipv4/ipmr.o.old net/ipv4/ipmr.o.new net/ipv4/ipmr.c: pim_rcv_v1 | -283 pim_rcv | -284 2 functions changed, 567 bytes removed net/ipv4/ipmr.c: __pim_rcv | +307 1 function changed, 307 bytes added net/ipv4/ipmr.o.new: 3 functions changed, 307 bytes added, 567 bytes removed, diff: -260 (Tested on x86_64). It seems that pimlen arg could be left out as well and eq-sizedness of structs trapped with BUILD_BUG_ON but I don't think that's more than a cosmetic flaw since there aren't that many args anyway. Compile tested. Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit c40cf519f0c0f0cb0579d853949ef517a8bb494d Author: Ilpo Järvinen Date: Tue Dec 16 01:14:21 2008 -0800 hp100: use roundup instead of open coding Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 82ad33297410c1af8e993210da76e114a4c1670d Author: Divy Le Ray Date: Tue Dec 16 01:09:39 2008 -0800 cxgb3: Add multiple Tx queue support. Implement NIC Tx multiqueue. Bump up driver version. Signed-off-by: Divy Le Ray Signed-off-by: David S. Miller commit 34f28ecd0f4bdc733c681294d02d9fab5880591b Author: Peter Zijlstra Date: Tue Dec 16 08:45:31 2008 +0100 sched: optimize update_curr() Impact: micro-optimization Skip the hard work when there is none. Signed-off-by: Peter Zijlstra Acked-by: Mike Galbraith Signed-off-by: Ingo Molnar commit 03e89e4574a680af15f59329b061f35d9813aff4 Author: Mike Galbraith Date: Tue Dec 16 08:45:30 2008 +0100 sched: fix wakeup preemption clock Impact: sharpen the wakeup-granularity to always be against current scheduler time It was possible to do the preemption check against an old time stamp. Signed-off-by: Mike Galbraith Signed-off-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 89c88b16f12e9df9ac39418638f267ec3b36a6c6 Author: Herbert Xu Date: Mon Dec 15 23:46:15 2008 -0800 e1000e: Add GRO support This patch adds GRO support to e1000e by making it invoke napi_gro_receive instead of netif_receive_skb. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit b240a0e5644eb817c4a397098a40e1ad42a615bc Author: Herbert Xu Date: Mon Dec 15 23:44:31 2008 -0800 ethtool: Add GGRO and SGRO ops This patch adds the ethtool ops to enable and disable GRO. It also makes GRO depend on RX checksum offload much the same as how TSO depends on SG support. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit bf296b125b21b8d558ceb6ec30bb4eba2730cd6b Author: Herbert Xu Date: Mon Dec 15 23:43:36 2008 -0800 tcp: Add GRO support This patch adds the TCP-specific portion of GRO. The criterion for merging is extremely strict (the TCP header must match exactly apart from the checksum) so as to allow refragmentation. Otherwise this is pretty much identical to LRO, except that we support the merging of ECN packets. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit 71d93b39e52e92aea35f1058d957cf12250d0b75 Author: Herbert Xu Date: Mon Dec 15 23:42:33 2008 -0800 net: Add skb_gro_receive This patch adds the helper skb_gro_receive to merge packets for GRO. The current method is to allocate a new header skb and then chain the original packets to its frag_list. This is done to make it easier to integrate into the existing GSO framework. In future as GSO is moved into the drivers, we can undo this and simply chain the original packets together. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit 73cc19f1556b95976934de236fd9043f7208844f Author: Herbert Xu Date: Mon Dec 15 23:41:09 2008 -0800 ipv4: Add GRO infrastructure This patch adds GRO support for IPv4. The criteria for merging is more stringent than LRO, in particular, we require all fields in the IP header to be identical except for the length, ID and checksum. In addition, the ID must form an arithmetic sequence with a difference of one. The ID requirement might seem overly strict, however, most hardware TSO solutions already obey this rule. Linux itself also obeys this whether GSO is in use or not. In future we could relax this rule by storing the IDs (or rather making sure that we don't drop them when pulling the aggregate skb's tail). Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit d565b0a1a9b6ee7dff46e1f68b26b526ac11ae50 Author: Herbert Xu Date: Mon Dec 15 23:38:52 2008 -0800 net: Add Generic Receive Offload infrastructure This patch adds the top-level GRO (Generic Receive Offload) infrastructure. This is pretty similar to LRO except that this is protocol-independent. Instead of holding packets in an lro_mgr structure, they're now held in napi_struct. For drivers that intend to use this, they can set the NETIF_F_GRO bit and call napi_gro_receive instead of netif_receive_skb or just call netif_rx. The latter will call napi_receive_skb automatically. When napi_gro_receive is used, the driver must either call napi_complete/napi_rx_complete, or call napi_gro_flush in softirq context if the driver uses the primitives __napi_complete/__napi_rx_complete. Protocols will set the gro_receive and gro_complete function pointers in order to participate in this scheme. In addition to the packet, gro_receive will get a list of currently held packets. Each packet in the list has a same_flow field which is non-zero if it is a potential match for the new packet. For each packet that may match, they also have a flush field which is non-zero if the held packet must not be merged with the new packet. Once gro_receive has determined that the new skb matches a held packet, the held packet may be processed immediately if the new skb cannot be merged with it. In this case gro_receive should return the pointer to the existing skb in gro_list. Otherwise the new skb should be merged into the existing packet and NULL should be returned, unless the new skb makes it impossible for any further merges to be made (e.g., FIN packet) where the merged skb should be returned. Whenever the skb is merged into an existing entry, the gro_receive function should set NAPI_GRO_CB(skb)->same_flow. Note that if an skb merely matches an existing entry but can't be merged with it, then this shouldn't be set. If gro_receive finds it pointless to hold the new skb for future merging, it should set NAPI_GRO_CB(skb)->flush. Held packets will be flushed by napi_gro_flush which is called by napi_complete and napi_rx_complete. Currently held packets are stored in a singly liked list just like LRO. The list is limited to a maximum of 8 entries. In future, this may be expanded to use a hash table to allow more flows to be held for merging. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit 1a881f27c50b4fbd6858a8696a189263621136b0 Author: Herbert Xu Date: Mon Dec 15 23:27:47 2008 -0800 net: Add frag_list support to GSO This patch allows GSO to handle frag_list in a limited way for the purposes of allowing packets merged by GRO to be refragmented on output. Most hardware won't (and aren't expected to) support handling GRO frag_list packets directly. Therefore we will perform GSO in software for those cases. However, for drivers that can support it (such as virtual NICs) we may not have to segment the packets at all. Whether the added overhead of GRO/GSO is worthwhile for bridges and routers when weighed against the benefit of potentially increasing the MTU within the host is still an open question. However, for the case of host nodes this is undoubtedly a win. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit 89319d3801d1d3ac29c7df1f067038986f267d29 Author: Herbert Xu Date: Mon Dec 15 23:26:06 2008 -0800 net: Add frag_list support to skb_segment This patch adds limited support for handling frag_list packets in skb_segment. The intention is to support GRO (Generic Receive Offload) packets which will be constructed by chaining normal packets using frag_list. As such we require all frag_list members terminate on exact MSS boundaries. This is checked using BUG_ON. As there should only be one producer in the kernel of such packets, namely GRO, this requirement should not be difficult to maintain. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit b53c7583e26746ef6f66c866841e10450150ed8e Author: Kay Sievers Date: Thu Dec 4 10:01:52 2008 -0800 rapidio: struct device - replace bus_id with dev_name(), dev_set_name() Cc: Matt Porter Signed-off-by: Kay Sievers Signed-off-by: Greg Kroah-Hartman Signed-off-by: Paul Mackerras commit aab0d375e01d8c16e7e5b9bd915dfaa0a815418f Author: Kay Sievers Date: Thu Dec 4 10:02:56 2008 -0800 powerpc: struct device - replace bus_id with dev_name(), dev_set_name() Acked-by: Geoff Levand Signed-off-by: Kay Sievers Signed-off-by: Greg Kroah-Hartman Signed-off-by: Paul Mackerras commit f63837f0581fe580168ae1a7d178ded935411747 Author: Benjamin Herrenschmidt Date: Sun Dec 14 19:44:51 2008 +0000 powerpc/mm: Remove flush_HPTE() The function flush_HPTE() is used in only one place, the implementation of DEBUG_PAGEALLOC on ppc32. It's actually a dup of flush_tlb_page() though it's -slightly- more efficient on hash based processors. We remove it and replace it by a direct call to the hash flush code on those processors and to flush_tlb_page() for everybody else. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit e41e811a79a4e328005be2744c3076ebde455088 Author: Benjamin Herrenschmidt Date: Sun Dec 14 19:44:39 2008 +0000 powerpc/mm: Rename tlb_32.c and tlb_64.c to tlb_hash32.c and tlb_hash64.c This renames the files to clarify the fact that they are used by the hash based family of CPUs (the 603 being an exception in that family but is still handled by that code). This paves the way for the new tlb_nohash.c coming via a subsequent commit. Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit 1a37a3fd7f12d8f9f720cceec84e23152e116668 Author: Benjamin Herrenschmidt Date: Sun Dec 14 19:44:24 2008 +0000 powerpc/mm: Add local_flush_tlb_mm() to SW loaded TLB implementations This adds a local_flush_tlb_mm() call as a pre-requisite for some SMP work for BookE processors. Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit a58f053b93e15b68e7b5f442316329f68269c8d5 Author: Benjamin Herrenschmidt Date: Sun Dec 14 19:44:13 2008 +0000 powerpc: Fix asm EMIT_BUG_ENTRY with !CONFIG_BUG Instead of not defining it at all, this defines the macro as being empty, thus avoiding ifdef's in call sites when CONFIG_BUG is not set. Also removes an extra whitespace in the existing definition. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 3045b3cb0b068c9f7601786841cda1e0b4647bd9 Author: FUJITA Tomonori Date: Sat Dec 13 17:44:59 2008 +0000 powerpc: Remove dead BIO_VMERGE_BOUNDARY definition The block layer dropped the virtual merge feature (b8b3e16cfe6435d961f6aaebcfd52a1ff2a988c5). BIO_VMERGE_BOUNDARY definition is meaningless now (For POWER, BIO_VMERGE_BOUNDARY has been meaningless for a long time since POWER disables the virtual merge feature). Signed-off-by: FUJITA Tomonori Acked-by: Jens Axboe Signed-off-by: Paul Mackerras commit 7fe519c207e3400dea6d67e1d483a16b11608423 Author: Josh Boyer Date: Thu Dec 11 09:46:44 2008 +0000 powerpc: Introduce ppc_pci_flags accessors Currently there are a number of platforms that open code access to the ppc_pci_flags global variable. However, that variable is not present if CONFIG_PCI is not set, which can lead to a build break. This introduces a number of accessor functions that are defined to be empty in the case of CONFIG_PCI being disabled. The various platform files in the kernel are updated to use these. Signed-off-by: Josh Boyer Signed-off-by: Paul Mackerras commit edc72ac4a0894247a6d3f1157a8ec8d603fff52d Author: Nathan Lynch Date: Thu Dec 11 09:14:25 2008 +0000 powerpc/pseries: Check for GIQ indicator before calling set-indicator Since "Factor out cpu joining/unjoining the GIQ" (b4963255ad5a426f04a0bb15c4315fa4bb40cde9) the WARN_ON in xics_set_cpu_giq() is being triggered during boot on JS20 because the GIQ indicator is not available on that platform. While the warning is harmless and the system runs normally, it's nicer to check for the existence of the indicator before trying to manipulate it. Implement rtas_indicator_present(), which searches the /rtas/rtas-indicators property for the given indicator token, and use this function in xics_set_cpu_giq(). Also use a WARN statement in xics_set_cpu_giq to get better information on failure. Signed-off-by: Nathan Lynch Acked-by: Milton Miller Signed-off-by: Paul Mackerras commit 6ff04c53db97c896ecca9374c0be4f681cf5fe50 Author: Nathan Lynch Date: Wed Dec 10 14:28:42 2008 +0000 powerpc/powermac: Use set_hard_smp_processor_id() instead of smp_hw_index The hard_smp_processor_id functions are the appropriate interfaces for managing physical CPU ids. Signed-off-by: Nathan Lynch Acked-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 13a9801eb669d567ab2c8f8db5e50557fef5f636 Author: Nathan Lynch Date: Wed Dec 10 14:28:41 2008 +0000 powerpc: Move smp_hw_index to 32-bit code smp_hw_index isn't used on 64-bit, so move it from smp.c to setup_32.c. Signed-off-by: Nathan Lynch Signed-off-by: Paul Mackerras commit 6b82b3e4b54b2fce2ca11976c535012b836b2016 Author: Anton Vorontsov Date: Tue Dec 9 09:47:29 2008 +0000 powerpc: Remove `have_of' global variable The `have_of' variable is a relic from the arch/ppc time, it isn't useful nowadays. Signed-off-by: Anton Vorontsov Acked-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit eb14f019597cd86c21a6c601d7e900f40030c2e7 Merge: 9a4a84294b0d60b8c287131478f743ba2bc68949 a3dd15444baa9c7522c8457ab564c41219dfb44c Author: David S. Miller Date: Mon Dec 15 20:03:50 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/e1000e/ich8lan.c commit 0efbb57e06d881a39a7f261e5c33558aedec0f79 Author: Becky Bruce Date: Thu Dec 4 08:12:40 2008 +0000 powerpc: Fix !CONFIG_PPC_NEED_DMA_SYNC_OPS build warning Change #define stubs of dma_sync ops to be empty static inlines to avoid build warning. Signed-off-by: Becky Bruce Acked-by: Stephen Rothwell Signed-off-by: Paul Mackerras commit 46d01492b2c50791b9b66f9b9154ac8d25acaeb9 Author: Geert Uytterhoeven Date: Wed Dec 3 13:52:21 2008 +0000 powerpc/ps3: Add sub-match id modalias support commit 059e4938f8b060b10c4352e6c45739473bc73267 ("powerpc/ps3: Add a sub-match id to ps3_system_bus") forgot to update the module alias support: - Add the sub-match ids to the module aliases, so udev can distinguish between different types of sub-devices. - Rename PS3_MODULE_ALIAS_GRAPHICS to PS3_MODULE_ALIAS_GPU_FB, as ps3fb binds to the "FB" sub-device. Signed-off-by: Geert Uytterhoeven Signed-off-by: Geoff Levand Signed-off-by: Paul Mackerras commit 62d80749addc969803a173573889f9b01d2459e1 Author: Geoff Levand Date: Wed Dec 3 13:52:15 2008 +0000 powerpc/ps3: Quiet dmesg output Change the debug message in dma_sb_region_create() from pr_info() to DBG() to quiet the dmesg output. Signed-off-by: Geoff Levand Signed-off-by: Paul Mackerras commit 15cb1cc981183861e4e653b67a0ea451f720af85 Author: Geoff Levand Date: Wed Dec 3 13:52:05 2008 +0000 powerpc: Fix typo in pgtable-ppc64.h Fix a minor comment typo in pgtable-ppc64.h. Signed-off-by: Geoff Levand Signed-off-by: Paul Mackerras commit 29e931c02b0e54f3d36b930c118e69b507b4b6ff Author: Nicolas Palix Date: Tue Dec 2 03:34:46 2008 +0000 powerpc/chrp: Add missing of_node_put in pci.c of_node_put is needed before discarding a value received from of_find_node_by_name, eg in error handling code or when the device node is no longer used. The semantic match that catches the bug is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression struct device_node *n; position p1, p2; statement S1,S2; expression E,E1; expression *ptr != NULL; @@ ( if (!(n@p1 = of_find_node_by_name(...))) S1 | n@p1 = of_find_node_by_name(...) ) <... when != of_node_put(n) when != if (...) { <+... of_node_put(n) ...+> } when != true !n || ... when != n = E when != E = n if (!n || ...) S2 ...> ( return \(0\|<+...n...+>\|ptr\); | return@p2 ...; | n = E1 | E1 = n ) @script:python@ p1 << r.p1; p2 << r.p2; @@ print "* file: %s of_find_node_by_name %s return %s" % (p1[0].file,p1[0].line,p2[0].line) // Signed-off-by: Nicolas Palix Signed-off-by: Julia Lawall Acked-by: Stephen Rothwell Signed-off-by: Paul Mackerras commit 1e1c568d6c66d1e2e345fd15e2a1ceafc5d7e33a Merge: 91cac623262c1c0cd298c5c648a8bd2b647c264d 23e0e8afafd9ac065d81506524adf3339584044b Author: Paul Mackerras Date: Tue Dec 16 14:38:58 2008 +1100 Merge branch 'merge' into next commit 9a4a84294b0d60b8c287131478f743ba2bc68949 Author: David S. Miller Date: Mon Dec 15 15:14:59 2008 -0800 8390/8390p: Fix compat netdev ops handling. Based upon a report from Randy Dunlap. The compat netdev ops assignments need to happen in 8390.c and 8390p.c, not lib8390.c, as only the type specific code can assign the correct function pointers. Signed-off-by: David S. Miller commit 91cac623262c1c0cd298c5c648a8bd2b647c264d Author: Kumar Gala Date: Sat Dec 13 17:41:41 2008 -0600 powerpc/85xx: Fix compile issues with mpc8572ds.dts Fix the localbus reg & range properties to respect that the top level #address-cells and #size-cells = 2. The original commit (c64ef80b517680f1e228b2ee55e3ce7cd94c7fe0) did not do that. Signed-off-by: Kumar Gala commit 8309ce7280536b07716026ff588acbcc0ee1a546 Author: Benjamin Herrenschmidt Date: Fri Dec 12 17:33:25 2008 +1100 powerpc: Fix bogus cache flushing on all 40x and BookE processors v2 We were missing the CPU_FTR_NOEXECUTE bit in our cputable for all these processors. The result is that update_mmu_cache() would flush the cache for all pages mapped to userspace which is totally unnecessary on those processors since we already handle flushing on execute in the page fault path. This should provide a nice speed up ;-) Signed-off-by: Benjamin Herrenschmidt Acked-by: Josh Boyer Signed-off-by: Kumar Gala commit 3d1ee379bd576c0830050c2d313e77b9f98a8013 Author: Mark Brown Date: Mon Dec 15 15:43:43 2008 +0000 ALSA: Fix declaration of sound_class Include sound/core.h in sound_core.c so that sound_class is declared before it is defined, avoiding it looking like it should be static. Signed-off-by: Mark Brown Signed-off-by: Takashi Iwai commit 8b124a8e14c04378466ddfe63e41fc5035f957eb Author: Don Skidmore Date: Mon Dec 15 01:06:23 2008 -0800 net: fix dcbnl_setnumtcs operation check dcbml_setnumtcs wasn't checking for the presence of the setnumtcs function. Instead, it was checking for setstate which was a bug. Signed-off-by: Don Skidmore Signed-off-by: Eric W Multanen Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 5ecc361444a0c641a73cce05fb652d0e3c944451 Author: Jesse Brandeburg Date: Mon Dec 15 01:00:57 2008 -0800 ixgbe: fix dma mapping unbalance This issue was initially reported by Joerg Roedel It appears that ixgbe has had a long standing bug where it was unmapping a different size than it had mapped. ixgbe 0000:02:00.0: PCI-DMA: device driver frees DMA memory with different sizes than it mapped. ixgbe 0000:02:00.0: PCI-DMA: device driver frees DMA memory with different size [device address=0x0000000003fed812] [map size=258 bytes] [unmap size=256 bytes] Pid: 6178, comm: rmmod Not tainted 2.6.28-rc5 #4 Call Trace: [] iommu_queue_inv_iommu_pages+0x5e/0x70 [] check_unmap+0x1c6/0x240 [] debug_unmap_single+0xb5/0x110 [] ixgbe_clean_rx_ring+0x147/0x220 [] ixgbe_down+0x2fd/0x3d0 [ixgbe] [] ixgbe_close+0x13/0xc0 [ixgbe] [] dev_close+0x56/0xa0 [] rollback_registered+0x43/0x220 [] unregister_netdevice+0x15/0x60 [] unregister_netdev+0x11/0x20 [] ixgbe_remove+0x48/0x16e [ixgbe] [] pci_device_remove+0x2c/0x60 [] __device_release_driver+0x99/0x100 [] driver_detach+0xb8/0xc0 [] bus_remove_driver+0x8e/0xd0 [] pci_unregister_driver+0x34/0x90 [] sys_delete_module+0x1c7/0x2a0 [] do_munmap+0x349/0x390 [] __up_write+0x21/0x150 [] system_call_fastpath+0x16/0x1b Signed-off-by: Jesse Brandeburg Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit a7276db6adfded660eec1e1629710b8b82d83455 Author: Steve Glendinning Date: Mon Dec 15 00:59:47 2008 -0800 smsc9420: add ethtool register dump support This patch adds support for SMSC's LAN9420 PCI ethernet controller to ethtool's dump registers (-d) command. This patch is for use with an accompanying ethtool patch, which decodes the register dump. Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit b1721d2bb9d015d7e49079414671569a2fc0ac9b Author: Ilpo Järvinen Date: Sun Dec 14 23:19:48 2008 -0800 rpc/rdma: goto instead of copypaste Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 79f55f11a090d9f369448dcb58242c7924873920 Author: Ilpo Järvinen Date: Sun Dec 14 23:19:02 2008 -0800 nf/dccp: merge errorpaths Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit e780f1c33d76ebb81607a6b5d6b669edb9065a7f Author: Ilpo Järvinen Date: Sun Dec 14 23:18:30 2008 -0800 irda: merge exit paths Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 037322abe6141e32e1b1dea86a9405d52c99be5d Author: Ilpo Järvinen Date: Sun Dec 14 23:18:00 2008 -0800 bt/rfcomm/tty: join error paths Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 0eae1b98cf3022715b5a6ea5f1ac6b0bd7ac4edd Author: Ilpo Järvinen Date: Sun Dec 14 23:17:26 2008 -0800 ax25: join the return paths that free skb Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit ebad5c0984e06f4036d2eb2741b9afce736b8a06 Author: Ilpo Järvinen Date: Sun Dec 14 23:16:58 2008 -0800 can: merge error paths Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit d8eb93078cedbbf4b7e18e1d7054171c7b70b442 Author: Ilpo Järvinen Date: Sun Dec 14 23:16:22 2008 -0800 xfrm: join error paths Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 8da73b73ef29d537ba09f29393cd68707833e746 Author: Ilpo Järvinen Date: Sun Dec 14 23:15:49 2008 -0800 ip6mr: use goto to common label instead of opencoding Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 448eb71f40120a8fd11ebd58153c271c63e6f862 Author: Ilpo Järvinen Date: Sun Dec 14 23:15:21 2008 -0800 ipv6/mcast: join error paths using goto Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 5ce1bbb97bf1e6707102d30499e7feaa1e6a2134 Author: Ilpo Järvinen Date: Sun Dec 14 23:13:48 2008 -0800 xfrm6_tunnel: join error paths using goto Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 857a6e0a4d8db0bbee685ccc97c6bd7987e7aede Author: Ilpo Järvinen Date: Sun Dec 14 23:13:08 2008 -0800 icsk: join error paths using goto Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 9cd28ab0051cc5232e3dffea6b318233445a3d5f Author: Alexander Beregalov Date: Sat Dec 13 16:25:27 2008 +0300 ASoC: switch davinci DPRINTK to pr_debug() Signed-off-by: Alexander Beregalov Signed-off-by: Mark Brown commit a6ba0cb35da64d658b7a01ea4597416f8522d5e1 Author: Jiri Slaby Date: Wed Dec 10 13:48:38 2008 +0100 kbuild: fix string equality testing in tags.sh Test of string equality in shells is =, not C-like ==. Signed-off-by: Jiri Slaby Signed-off-by: Sam Ravnborg commit 709cc372cad628846d73447edfd95ac39c8e2319 Author: Jiri Slaby Date: Wed Dec 10 13:10:13 2008 +0100 kbuild: fix make tags/cscope - fix combining O=... and tags - don't allow * expansion during sh function calls Signed-off-by: Jiri Slaby [sam: use KBUILD_SRC to check if we use O=...] Signed-off-by: Sam Ravnborg commit 31110ebbec8688c6e9597b641101afc94e1c762a Author: Sam Ravnborg Date: Sat Dec 13 23:00:45 2008 +0100 kbuild: fix make incompatibility "Paul Smith" reported that we would fail to build with a new check that may be enabled in an upcoming version of make. The error was: Makefile:442: *** mixed implicit and normal rules. Stop. The problem is that we did stuff like this: config %config: ... The solution was simple - the above was split into two with identical prerequisites and commands. With only three lines it was not worth to try to avoid the duplication. Cc: "Paul Smith" Signed-off-by: Sam Ravnborg commit 012b215ceb55aa38826f091cecfd373cc9bbb05b Author: Steve Glendinning Date: Fri Dec 12 22:32:22 2008 -0800 smsc9420: add ethtool eeprom support Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit e312674ffb5281a46a3ad06604edea6426c4eb24 Author: Steve Glendinning Date: Fri Dec 12 22:31:50 2008 -0800 smsc9420: add netpoll support Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit 1757ab2f0411110c0261dfb66d26faf63037c531 Author: Steve Glendinning Date: Fri Dec 12 22:31:16 2008 -0800 smsc911x: make smsc911x_poll_controller static Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit 56bde885903bdb9d9531fd569096ec8c7a2d60ee Merge: a7a81fc060f050ad4ba7f6ef5cdc583dad2f7b21 a7b75207bd37cbbfa0b4ee7dbaf0dc6bafec8fea Author: David S. Miller Date: Fri Dec 12 22:20:51 2008 -0800 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 commit a7a81fc060f050ad4ba7f6ef5cdc583dad2f7b21 Author: Ben Hutchings Date: Fri Dec 12 22:10:23 2008 -0800 sfc: Version 2.3 Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 7dde596ef79982327d8992a579a137b4035ad599 Author: Ben Hutchings Date: Fri Dec 12 22:09:38 2008 -0800 sfc: Fix synchronisation of efx_mtd_{probe,rename,remove} Currently efx_mtd_rename() can race with the probe() and remove() functions. Move probe() before device registration and remove() after unregistration. Move initialisation/update of all names based on the netdev name into a new function and call it under the RTNL immediately after registration. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 0c53d8c84047d86169bd4147bb8f5adf2772d2bb Author: Ben Hutchings Date: Fri Dec 12 22:08:50 2008 -0800 sfc: Use kzalloc() to ensure struct efx_spi_device is fully initialised Currently the mtd field is not initialised early enough. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit fa402b2ea9cacd1ec94fa77e3efb506a5d034da6 Author: Steve Hodgson Date: Fri Dec 12 22:08:16 2008 -0800 sfc: Treat probe as unsuccessful if it scheduled a reset From: Steve Hodgson efx_pci_probe_main() can return success despite a reset being scheduled. Catch this and retry or abort probe depending on the reset type. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit ab377358701a981e7fae1332e76b1e5d3b3b313d Author: Ben Hutchings Date: Fri Dec 12 22:06:54 2008 -0800 sfc: Use model numbers for PHY type names Some of the PHY type names are overly generic. Change them to include the model numbers of the PHYs they represent. Correct the model number reference at the top of xfp_phy.c. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit ca54a9f525236c389f464d0952c8a7d6a4035906 Author: Ben Hutchings Date: Fri Dec 12 22:06:24 2008 -0800 sfc: Use mutex_lock_interruptible() for ethtool EEPROM access ethtool must contend with the MTD driver for the SPI bus lock, which may carry out long operations such as flash erase. Allow it to be interrupted while waiting. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 11e66966277ea8a3353ad2c2773257973553e73a Author: Ben Hutchings Date: Fri Dec 12 22:05:48 2008 -0800 sfc: Specify a meaningful component for loopback RX-side and PHY tests Our ethtool self-test result names each begin with a component name. For some results this is "port0", which is not very meaningful. Change that to "rx" or "phy" as appropriate. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit b45319382150008ed7cd31b7965392d55fe68967 Author: Ben Hutchings Date: Fri Dec 12 22:05:01 2008 -0800 sfc: Remove leading spaces Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 6f158d5f29b420438e907d72cb111ddb9973f00a Author: Ben Hutchings Date: Fri Dec 12 22:00:49 2008 -0800 sfc: Add support for SFN4111T Add support code for the SFN4111T 100/1000/10GBASE-T reference design, based in part on the existing code for the SFE4001. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit e6fa2eb789f49dc51a20d3db0d410bc8158abb43 Author: Ben Hutchings Date: Fri Dec 12 22:00:17 2008 -0800 sfc: Add support for Solarflare 10Xpress SFT9001 Add type codes for the new PHY and rename the SFX7101 type code. Add definition of clause 22 extension MMD. Adapt the 10Xpress SFX7101 code to support the SFT9001 as well. Clean up register definitions. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 766ca0fa6bf1600bdf4bc7726c74f14c8455c6b8 Author: Ben Hutchings Date: Fri Dec 12 21:59:24 2008 -0800 sfc: Rework MAC, PHY and board event handling From: Steve Hodgson MAC, PHY and board events may be separately enabled and signalled. Our current arrangement of chaining the polling functions can result in events being missed. Change them to be more independent. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 04cc8cacb01c09fba2297faf1477cd570ba43f0b Author: Ben Hutchings Date: Fri Dec 12 21:50:46 2008 -0800 sfc: Implement auto-negotiation Add infrastructure for auto-negotiation of speed, duplex and flow control. When using 10Xpress, auto-negotiate flow control. While we're at it, clean up the code to warn when partner is not 10GBASE-T capable. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 177dfcd80f28f8fbc3e22c2d8b24d21cb86f1d97 Author: Ben Hutchings Date: Fri Dec 12 21:50:08 2008 -0800 sfc: Add support for sub-10G speeds The SFC4000 has a separate MAC for use at sub-10G speeds. Introduce an efx_mac_operations structure with implementations for the two MACs. Switch between the MACs as necessary. PHY settings are independent of the MAC, so add get_settings() and set_settings() to efx_phy_operations. Also add macs field to indicate which MACs the PHY is connected to. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 356eebb2b3af24cc701823f1e025f04eef333239 Author: Ben Hutchings Date: Fri Dec 12 21:48:57 2008 -0800 sfc: Clean up MDIO flag setting We often want to set or clear a flag in an MDIO register, but avoid writing if no change is required since this can have side-effects. Encapsulate this in a function, mdio_clause45_set_flag(). Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 04300d248bd5166c00a59fa18efc1f7d041e9b32 Author: Ben Hutchings Date: Fri Dec 12 21:48:09 2008 -0800 sfc: Clean up board identification Remove kluge for development boards with unspecified board type. Remove assumption of contiguous board type code assignments. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 06d5e19318e59f6f139b5171f4dfc5f3eb4dd897 Author: Ben Hutchings Date: Fri Dec 12 21:47:23 2008 -0800 sfc: Add phy_type device attribute Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 27dd2caca4eabe7c13a052b7456495ba75535e6a Author: Ben Hutchings Date: Fri Dec 12 21:44:14 2008 -0800 sfc: Add support for MMDs numbered >15 Combine DEVS0 and DEVS1 registers into a 32-bit mask instead of reading just DEVS0. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit f31a45d2f45a7667acd6e85ab6613b0910c55ea9 Author: Ben Hutchings Date: Fri Dec 12 21:43:33 2008 -0800 sfc: Remove MII extension cruft Replace efx_nic::link_options bitfield with link_speed (speed in Mbit/s) and link_fd (full duplex flag). Remove broken auto-negotiation functions. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 5005087728e37db133fee05bb0923c50e673ae99 Author: Ben Hutchings Date: Fri Dec 12 21:42:42 2008 -0800 sfc: Don't count RX checksum errors during loopback self-test The loopback self-test checks that IP packets with incorrect checksums are not altered when sent on a queue with checksum generation off. These should not contribute to RX error statistics. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 740ced9927cabe0f776265ea24fc399a71bcdef5 Author: Ben Hutchings Date: Fri Dec 12 21:41:55 2008 -0800 sfc: Abbreviate self-test names so they are not truncated Change "channel" to "chan". Shorten PHY loopback names. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 56536e9ce7c23bbc8519b8f99837493dea8da57d Author: Ben Hutchings Date: Fri Dec 12 21:37:02 2008 -0800 sfc: Provide hints to irqbalance daemon Allocate IRQs with the name format [-]- so that future versions of irqbalanced understand what we're doing. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 28b581ab0a0aa7bc8b22935779ca3e8d6f651ac7 Author: Neil Turton Date: Fri Dec 12 21:41:06 2008 -0800 sfc: Add option to use a separate channel for TX completions In a bidirectional forwarding test, we find that the best performance is achieved by sending the TX completion interrupts from one NIC to a CPU which shares an L2 cache with RX completion interrupts from the other NIC. To facilitate this, add an option (through a module parameter) to create separate channels for RX and TX completion with separate IRQs when MSI-X is available. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 84ae48fe4c1fe8b79fac015df6ad0b0937a7ae37 Author: Ben Hutchings Date: Fri Dec 12 21:34:54 2008 -0800 sfc: Restore phy_flash_cfg module parameter This is needed for recovery in case a PHY firmware upgrade is aborted. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 2f7f573095132240916a8780cd5ef648c0ad7281 Author: Ben Hutchings Date: Fri Dec 12 21:34:25 2008 -0800 sfc: Work around unreliable strap pins The SFC4000 has strap pins indicating the presence of SPI flash and/or EEPROM. These pins are also used for GPIO, and in some cases they may be read wrongly at reset. However, on production boards it must boot from one or the other device, so we can assume the boot device is present and read the board config from there. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit be4ea89c8df06f48d0d64cf1d9d20009e83c77c8 Author: Ben Hutchings Date: Fri Dec 12 21:33:50 2008 -0800 sfc: Clean up waits for flash/EEPROM operations Make falcon_spi_wait() ignore the write timer - it is only relevant to write commands, it only works for the device that contains VPD, and it might not be initialised properly at all. Rename falcon_spi_fast_wait() to falcon_spi_wait_write(), reflecting its use, and make it wait up to 10 ms (not 1 ms) since buffered writes to EEPROM may take this long to complete. Make both wait functions sleep instead of busy-waiting. Replace wait for command completion at top of falcon_spi_cmd() with a single poll; no command should be running when the function starts. Correct some comments. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 1ab00629f06fb3c47de6373cd92d086f33775444 Author: Steve Hodgson Date: Fri Dec 12 21:33:02 2008 -0800 sfc: Make reset_workqueue driver-global rather than per-NIC Each reset is serialised by the rtnl_lock anyway, so there's no win per-NIC. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 65f667fb472d28c1594d862b213a564e292a466c Author: Ben Hutchings Date: Fri Dec 12 21:32:10 2008 -0800 sfc: Correct interpretation of second param to ethtool phys_id() A value of 0 means indefinite repetition (until interrupted). Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 2b2734dcbfd2dc6b6e4b00bc6971504d7657a4eb Author: Ben Hutchings Date: Fri Dec 12 21:31:36 2008 -0800 sfc: Remove unneeded register write This was only ever needed for an FPGA version of Falcon. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 23d30f027d1e8ad3bcd6192613122ce925947563 Author: Ben Hutchings Date: Fri Dec 12 21:56:11 2008 -0800 sfc: Change SPI lengths to type size_t Based on a patch by Andrew Morton. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit a17102b1ba847ca31d9151b877fbf9a38a39a8bb Author: Ben Hutchings Date: Fri Dec 12 21:28:20 2008 -0800 sfc: Board support fixes Set dummy monitor method for unrecognised boards. Clean up board resources if efx_pci_probe_main() fails after board has been initialised. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 702c7904a29629e4e6b18d5497abe84bd20c0449 Author: Karsten Keil Date: Fri Dec 12 21:21:57 2008 -0800 misdn: Fix lockdep warning use correct dynamic spinlock init function. Signed-off-by: Karsten Keil Signed-off-by: David S. Miller commit c31655fcf2c61f209aab8f4169b0e4afe49b581d Author: Hannes Eder Date: Fri Dec 12 21:20:03 2008 -0800 mISDN: hfcmulti: use __iomem address space modifier Impact: make use of the __iomem address space modifier, and change u_char *, u_short * and u_int * to void * Fix more than 30 sparse warnings of this or similar type: drivers/isdn/hardware/mISDN/hfcmulti.c:261:31: warning: incorrect type in argument 2 (different address spaces) drivers/isdn/hardware/mISDN/hfcmulti.c:261:31: got unsigned char [usertype] * drivers/isdn/hardware/mISDN/hfcmulti.c:261:31: expected void volatile [noderef] *addr Signed-off-by: Hannes Eder Acked-by: Karsten Keil Signed-off-by: David S. Miller commit c46f0a2d40f7ceb5fb696309bcd088ac75d0fe20 Author: Hannes Eder Date: Fri Dec 12 21:19:18 2008 -0800 mISDN: timerdev: use __user for mISDN_read's buffer argument Fix this warning: drivers/isdn/mISDN/timerdev.c:264:11: warning: incorrect type in initializer (incompatible argument 2 (different address spaces)) drivers/isdn/mISDN/timerdev.c:264:11: expected int ( *read )( ... ) drivers/isdn/mISDN/timerdev.c:264:11: got int ( static [toplevel] * )( ... ) Signed-off-by: Hannes Eder Acked-by: Karsten Keil Signed-off-by: David S. Miller commit 047ce8f207b144eb9be094ce7427d6e11a687010 Author: Hannes Eder Date: Fri Dec 12 21:18:32 2008 -0800 mISDN: comment out unused symbols Fix this sparse warnings: drivers/isdn/hardware/mISDN/hfcmulti.c:794: warning: 'vpm_check' defined but not used drivers/isdn/mISDN/dsp_cmx.c:1546: warning: 'dsp_start_jiffies' defined but not used Signed-off-by: Hannes Eder Acked-by: Karsten Keil Signed-off-by: David S. Miller commit 863a76e5881abe276a55c4490607a960790c5b0b Author: Hannes Eder Date: Fri Dec 12 21:17:38 2008 -0800 mISDN: fix sparse warning: symbol 'id' shadows an earlier one Impact: rename function scope variable Fix this warning: drivers/isdn/mISDN/l1oip_core.c:472:8: warning: symbol 'id' shadows an earlier one drivers/isdn/mISDN/l1oip_core.c:254:14: originally declared here Signed-off-by: Hannes Eder Acked-by: Karsten Keil Signed-off-by: David S. Miller commit bb68b1d964f89b19dc13d4f685a7d29616e2a4cb Author: Hannes Eder Date: Fri Dec 12 21:16:58 2008 -0800 mISDN: fix sparse warning: symbol 'nskb' shadows an earlier one Impact: define first occurence of variable 'nskb' in inner most possible scope Fix this sparse warning: drivers/isdn/mISDN/dsp_core.c:746:20: warning: symbol 'nskb' shadows an earlier one drivers/isdn/mISDN/dsp_core.c:634:19: originally declared here Signed-off-by: Hannes Eder Acked-by: Karsten Keil Signed-off-by: David S. Miller commit 65a40516b231f693f3afee4df77fc63c08ba8fa9 Author: Hannes Eder Date: Fri Dec 12 21:16:06 2008 -0800 mISDN: un-export symbol 'plx_lock' 'plx_lock' is only used within hfcmulti.c. Fix this warning: drivers/isdn/hardware/mISDN/hfcmulti.c:176:1: warning: symbol 'plx_lock' shadows an earlier one drivers/isdn/hardware/mISDN/hfcmulti.c:175:19: originally declared here Signed-off-by: Hannes Eder Acked-by: Karsten Keil Signed-off-by: David S. Miller commit 5b8343540a3d27f87a4d9d72bb39b7d4cc3dd95e Author: Hannes Eder Date: Fri Dec 12 21:15:17 2008 -0800 mISDN: make global symbols static or include header files The warnings fixed by including an header file for the appropriate prototype are marked with "*", for all others the corresonponding symbol has been made static. This patch fixes all such issues in mISDN. Fix this sparse warnings: drivers/isdn/hardware/mISDN/hfcmulti.c:174:5: warning: symbol 'plxsd_master' was not declared. Should it be static? drivers/isdn/hardware/mISDN/hfcmulti.c:426:1: warning: symbol 'write_fifo_regio' was not declared. Should it be static? drivers/isdn/hardware/mISDN/hfcmulti.c:447:1: warning: symbol 'write_fifo_pcimem' was not declared. Should it be static? drivers/isdn/hardware/mISDN/hfcmulti.c:469:1: warning: symbol 'read_fifo_regio' was not declared. Should it be static? drivers/isdn/hardware/mISDN/hfcmulti.c:491:1: warning: symbol 'read_fifo_pcimem' was not declared. Should it be static? drivers/isdn/hardware/mISDN/hfcmulti.c:710:1: warning: symbol 'vpm_init' was not declared. Should it be static? drivers/isdn/hardware/mISDN/hfcmulti.c:793:1: warning: symbol 'vpm_check' was not declared. Should it be static? drivers/isdn/hardware/mISDN/hfcmulti.c:816:1: warning: symbol 'vpm_echocan_on' was not declared. Should it be static? drivers/isdn/hardware/mISDN/hfcmulti.c:848:1: warning: symbol 'vpm_echocan_off' was not declared. Should it be static? * drivers/isdn/mISDN/l1oip_codec.c:224:1: warning: symbol 'l1oip_law_to_4bit' was not declared. Should it be static? * drivers/isdn/mISDN/l1oip_codec.c:261:1: warning: symbol 'l1oip_4bit_to_law' was not declared. Should it be static? * drivers/isdn/mISDN/l1oip_codec.c:281:1: warning: symbol 'l1oip_alaw_to_ulaw' was not declared. Should it be static? * drivers/isdn/mISDN/l1oip_codec.c:294:1: warning: symbol 'l1oip_ulaw_to_alaw' was not declared. Should it be static? * drivers/isdn/mISDN/l1oip_codec.c:311:1: warning: symbol 'l1oip_4bit_free' was not declared. Should it be static? * drivers/isdn/mISDN/l1oip_codec.c:322:1: warning: symbol 'l1oip_4bit_alloc' was not declared. Should it be static? drivers/isdn/mISDN/core.c:29:1: warning: symbol 'device_lock' was not declared. Should it be static? drivers/isdn/mISDN/core.c:34:1: warning: symbol 'bp_lock' was not declared. Should it be static? drivers/isdn/mISDN/core.c:196:1: warning: symbol 'mISDNInit' was not declared. Should it be static? drivers/isdn/mISDN/core.c:227:6: warning: symbol 'mISDN_cleanup' was not declared. Should it be static? drivers/isdn/mISDN/stack.c:40:1: warning: symbol 'mISDN_queue_message' was not declared. Should it be static? * drivers/isdn/mISDN/layer1.c:388:1: warning: symbol 'l1_init' was not declared. Should it be static? * drivers/isdn/mISDN/layer1.c:400:1: warning: symbol 'l1_cleanup' was not declared. Should it be static? drivers/isdn/mISDN/layer2.c:469:1: warning: symbol 'iframe_error' was not declared. Should it be static? drivers/isdn/mISDN/layer2.c:487:1: warning: symbol 'super_error' was not declared. Should it be static? drivers/isdn/mISDN/layer2.c:496:1: warning: symbol 'unnum_error' was not declared. Should it be static? drivers/isdn/mISDN/layer2.c:509:1: warning: symbol 'UI_error' was not declared. Should it be static? drivers/isdn/mISDN/layer2.c:522:1: warning: symbol 'FRMR_error' was not declared. Should it be static? drivers/isdn/mISDN/layer2.c:1069:1: warning: symbol 'enquiry_cr' was not declared. Should it be static? * drivers/isdn/mISDN/layer2.c:2196:1: warning: symbol 'Isdnl2_Init' was not declared. Should it be static? * drivers/isdn/mISDN/layer2.c:2210:1: warning: symbol 'Isdnl2_cleanup' was not declared. Should it be static? drivers/isdn/mISDN/tei.c:397:1: warning: symbol 'random_ri' was not declared. Should it be static? * drivers/isdn/mISDN/timerdev.c:277:1: warning: symbol 'mISDN_inittimer' was not declared. Should it be static? * drivers/isdn/mISDN/timerdev.c:288:6: warning: symbol 'mISDN_timer_cleanup' was not declared. Should it be static? drivers/isdn/mISDN/dsp_core.c:164:12: warning: symbol 'mISDN_dsp_revision' was not declared. Should it be static? drivers/isdn/mISDN/dsp_cmx.c:1543:5: warning: symbol 'samplecount' was not declared. Should it be static? drivers/isdn/mISDN/dsp_cmx.c:1546:5: warning: symbol 'dsp_start_jiffies' was not declared. Should it be static? drivers/isdn/mISDN/dsp_cmx.c:1547:16: warning: symbol 'dsp_start_tv' was not declared. Should it be static? drivers/isdn/mISDN/dsp_tones.c:239:3: warning: symbol 'pattern' was not declared. Should it be static? drivers/isdn/mISDN/dsp_audio.c:33:4: warning: symbol 'dsp_audio_ulaw_to_alaw' was not declared. Should it be static? Signed-off-by: Hannes Eder Acked-by: Karsten Keil Signed-off-by: David S. Miller commit dfa96ec1bb83641242c48883c2bae8f1f30483b2 Author: Hannes Eder Date: Fri Dec 12 21:13:45 2008 -0800 mISDN: consistently define 'debug' as '*u_int' Impact: change data type for variable 'debug' from *int to *u_int, same for the argument type of mISDN_inittimer In "core.h" mISDN_inittimer is declared with the argument type "*u_int", make the definition in "timerdev.c" match this. This fixes also this warnings: drivers/isdn/mISDN/layer1.c:391:8: warning: incorrect type in assignment (different signedness) drivers/isdn/mISDN/layer1.c:391:8: expected int *static [toplevel] debug drivers/isdn/mISDN/layer1.c:391:8: got unsigned int [usertype] *deb drivers/isdn/mISDN/layer2.c:2200:8: warning: incorrect type in assignment (different signedness) drivers/isdn/mISDN/layer2.c:2200:8: expected int *static [toplevel] debug drivers/isdn/mISDN/layer2.c:2200:8: got unsigned int [usertype] *deb drivers/isdn/mISDN/socket.c:769:8: warning: incorrect type in assignment (different signedness) drivers/isdn/mISDN/socket.c:769:8: expected int *static [toplevel] debug drivers/isdn/mISDN/socket.c:769:8: got unsigned int [usertype] *deb Signed-off-by: Hannes Eder Acked-by: Karsten Keil Signed-off-by: David S. Miller commit bcf91745091ba3b0813fa79afb5d10b090ea745d Author: Hannes Eder Date: Fri Dec 12 21:11:28 2008 -0800 mISDN: use NULL pointer instead of plain integer Fix more than 100 (all remaining in mISDN) sparse warnings: drivers/isdn/hardware/mISDN/hfcmulti.c:***:**: warning: Using plain integer as NULL pointer drivers/isdn/mISDN/dsp_tones.c:***:**: warning: Using plain integer as NULL pointer drivers/isdn/mISDN/dsp_pipeline.c:***:**: warning: Using plain integer as NULL pointer Signed-off-by: Hannes Eder Acked-by: Karsten Keil Signed-off-by: David S. Miller commit a7b75207bd37cbbfa0b4ee7dbaf0dc6bafec8fea Author: Tomas Winkler Date: Thu Dec 11 10:33:41 2008 -0800 iwlwifi: add contact email to MODULE_AUTHOR Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 2aa6ab86bc475a115f56645591d2413981846509 Author: Tomas Winkler Date: Thu Dec 11 10:33:40 2008 -0800 iwlwifi: remove 4965 from common uCode API structures This patch removes 4965 from common uCode API structures. Also updates iwlagn commands with 3945 specific RX command in preparation for 3945 port. Signed-off-by: Tomas Winkler Acked-by: Samuel Ortiz Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit b5047f78664fbcc18d67dafbb45bf62b310f9b0a Author: Tomas Winkler Date: Thu Dec 11 10:33:39 2008 -0800 iwlwifi: remove includes of iwl-helpers.h where not needed This patch removes includes of iwl-helpers.h where not needed Signed-off-by: Tomas Winkler Acked-by: Samuel Ortiz Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 29d51d9df53a4b383e2062b2ea0d575c9f3fca47 Author: Tomas Winkler Date: Thu Dec 11 10:33:38 2008 -0800 iwlwifi: remove unused clip_groups priv member Remove clip_groups from priv and related structure. This code is for 3945 only and was renamed to 4965 in when code was split. Also remove unused RATE definitions Signed-off-by: Tomas Winkler Acked-by: Samuel Ortiz Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit edb342286e18c5bec6d3ac325851a9cba28061b9 Author: Mohamed Abbas Date: Thu Dec 11 10:33:37 2008 -0800 iwlwifi: fix resume while txpower off This patch take care of coming out rfkill when the driver is up while rfkill is on by restarting interface. Signed-off-by: Mohamed Abbas Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 3d5717ade01ce22511f2992f150bf6644b21c377 Author: Zhu, Yi Date: Thu Dec 11 10:33:36 2008 -0800 iwlwifi: use iwl_poll_direct_bit in EEPROM reading The patch replaces the current reading EEPROM loop iterations with iwl_poll_direct_bit(). It also fixes some comment error. Signed-off-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 9c5f89b3f6580cca21dca4ede940900c5b3c3a81 Author: Jouni Malinen Date: Thu Dec 11 18:22:13 2008 +0200 ath9k: Do not remove header padding on RX from short frames The 802.11 header is only padded to 32-bit boundary when the frame has a non-zero length payload. In other words, control frames (e.g., ACK) do not have a padding and we should not try to remove it. This fixes monitor mode for short control frames. In addition, the hdrlen&3 use is described in more detail to make it easier to understand how the padding length is calculated. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit f2f1ba253d970479343f97c4620e16842c695d03 Author: Rami Rosen Date: Thu Dec 11 14:29:06 2008 +0200 iwlwifi: fix build warning (iwl-rx.c) This patch fixes the following build warning when CONFIG_IWLWIFI_DEBUG is not set. /work/src/wireless-testing/drivers/net/wireless/iwlwifi/iwl-rx.c:758: warning: 'iwl_dbg_report_frame' defined but not used Signed-off-by: Rami Rosen Acked-by: Reinette Chatre Signed-off-by: John W. Linville commit ab1f5c0bb8edbaee81c1672733f8dc4d0a5f5ea5 Author: Rami Rosen Date: Thu Dec 11 14:00:25 2008 +0200 mac80211: misc cleanups This patch removes unneeded member (skbuff) from ieee80211_ibss_add_sta() method in its declaration (in ieee80211_i.h) and its callers (in rx.c and mlme.c) This patch removes unneeded member from struct ieee80211_rx_data in ieee80211_i.h. (Originally posted as two patches. -- JWL) Signed-off-by: Rami Rosen Signed-off-by: John W. Linville commit 4dec9b807be757780ca3611a959ac22c28d292a7 Author: Johannes Berg Date: Wed Dec 10 17:48:48 2008 +0100 rfkill: strip pointless notifier chain No users, so no reason to have it. Signed-off-by: Johannes Berg Acked-by: Ivo van Doorn Signed-off-by: John W. Linville commit 6fb532527e2592f82ec07508df2e44f6c7ceff12 Author: Anna Neal Date: Tue Dec 9 13:23:45 2008 -0800 libertas: Create sysfs entry for changing the mesh probe response limit This patch adds the ability to change the number of probe response retries sent by the mesh interface. In dense networks it is recommended to change this value to zero to reduce traffic congestion. Signed-off-by: Anna Neal Signed-off-by: Andrey Yurovsky Signed-off-by: John W. Linville commit b77f483fcf0579de28873828897f53371a33a0ea Author: Sujith Date: Sun Dec 7 21:44:03 2008 +0530 ath9k: Refactor struct ath_softc Split ath_softc into smaller structures for rx, tx and beacon handling. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 59651e89187293e88863891b821c7379391ef75c Author: Christian Lamparter Date: Tue Dec 9 21:07:50 2008 +0100 p54: fix oops on faulty devices This patch fixes an oops when the devices suddenly starts to receive martian data frames. bug reference: http://marc.info/?l=linux-wireless&m=122872280317635&w=2 Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit b7a530d82cb36bb43901c196039b0fccee3ffcc3 Author: Jouni Malinen Date: Wed Dec 10 14:51:47 2008 +0200 mac80211: Disable requests for new scans in AP mode AP mode operations are seriously affected if mac80211 runs through a multi-second scan while the AP is trying to send Beacon frames on the operation channel. While this could be implemented in a way that does not cause too many problems, it is not very simple and will require synchronization with Beacon frame scheduling in the drivers (scan one channel at a time between Beacon frames). Furthermore, such scanning takes quite a bit longer time and existing userspace applications would be likely to timeout while waiting for the results. For now, just refuse requests for new scans (SIOCSIWSCAN) when in AP mode. In practice, this moves the rejection from iwl* drivers into mac80211 to make it apply to every mac80211-based driver. This issue shows up in associated stations getting disconnected when something (e.g., Network Manager) requests a scan while the interface is in AP mode. When doing this continuously (e.g., NM does it every 120 seconds), the network gets close to useless. Signed-off-by: Jouni Malinen Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 14a4dfe2ff8c353f59ae8324059ded1cfe22c7d9 Author: Helmut Schaa Date: Wed Dec 10 13:17:26 2008 +0100 ipw2200: fix scanning while associated This patch fixes sporadic firmware restarts when scanning while associated. The firmware will quietly cancel a scan (while associated) if the dwell time for a channel to be scanned is larger than the time it may stay away from the operating channel (because of DTIM catching). Unfortunately the driver is not notified about the canceled scan and therefore the scan watchdog timeout will be hit and the driver causes a firmware restart which results in disassociation. This mainly happens on passive channels which use a dwell time of 120 whereas a typical beacon interval is around 100. The patch changes the dwell time for passive channels to be slightly smaller than the actual beacon interval to work around the firmware issue. Furthermore the number of allowed beacon misses is increased from one to three as otherwise most scans (while associated) won't complete successfully. However scanning while associated will still fail in corner cases such as a beacon intervals below 30. Signed-off-by: Helmut Schaa Signed-off-by: John W. Linville commit d8004cb9267b15cd902eef01a75bb1ffa3995af8 Author: Larry Finger Date: Tue Dec 9 23:35:41 2008 -0600 b43legacy: Fix sparse warnings Sparse yields the following warnings for b43legacy: CHECK drivers/net/wireless/b43legacy/phy.c drivers/net/wireless/b43legacy/phy.c:1304:31: warning: potentially expensive pointer subtraction drivers/net/wireless/b43legacy/phy.c:1304:31: warning: potentially expensive pointer subtraction drivers/net/wireless/b43legacy/phy.c:1304:31: warning: potentially expensive pointer subtraction CHECK drivers/net/wireless/b43legacy/debugfs.c drivers/net/wireless/b43legacy/debugfs.c:243:9: warning: memset with byte count of 131072 Signed-off-by: Larry Finger Signed-off-by: John W. Linville commit c1db52b9d27ee6e15a7136e67e4a21dc916cd07f Author: Larry Finger Date: Tue Dec 9 23:34:27 2008 -0600 rtl8187: Use usb anchor facilities to manage urbs When SLUB debugging is enabled in the kernel, and the boot command includes the option "slub_debug=P", rtl8187 encounters a GPF due to a read-after-free of a urb. Following the example of changes in p54usb to fix the same problem, the code has been modified to use the usb_anchor_urb() method. With this change, the USB core handles the freeing of urb's. This patch fixes the problem reported in Kernel Bugzilla #12185 (http://bugzilla.kernel.org/show_bug.cgi?id=12185). Signed-off-by: Larry Finger Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 388cdf31db6dfc3d175786a76989266380e12c26 Author: Bob Copeland Date: Tue Dec 9 23:05:38 2008 -0500 ath5k: fix endianness of bitwise ops when installing mic Fix these bugs found by sparse: ath5k/pcu.c:1102:21: warning: restricted __le32 degrades to integer ath5k/pcu.c:1102:13: warning: incorrect type in assignment (different base types) ath5k/pcu.c:1102:13: expected restricted __le32 ath5k/pcu.c:1102:13: got unsigned int ath5k/pcu.c:1104:20: warning: restricted __le32 degrades to integer ath5k/pcu.c:1104:13: warning: incorrect type in assignment (different base types) ath5k/pcu.c:1104:13: expected restricted __le32 ath5k/pcu.c:1104:13: got unsigned int Changes-licensed-under: ISC Reported-by: Johannes Berg Signed-off-by: Bob Copeland Signed-off-by: John W. Linville commit 62d714e5ebec9ad4d63bb9a6da19dfd83d3db860 Author: David Kilroy Date: Tue Dec 9 23:05:38 2008 +0000 spectrum_cs: Fix function names used in debug strings Signed-off-by: David Kilroy Signed-off-by: John W. Linville commit 499b702a8d848aaa15d6255e9302d9186827691e Author: David Kilroy Date: Tue Dec 9 21:46:29 2008 +0000 orinoco: Fix inappropriate use of IRQ_BAP This hardware buffer should only be used from an interrupt. The wireless event generation functions are called from a workqueue, so use USER_BAP instead. Signed-off-by: David Kilroy Signed-off-by: Pavel Roskin Signed-off-by: John W. Linville commit 0c06dd8a237c673eedd295fbef7a8c0e52f5c045 Author: David Kilroy Date: Tue Dec 9 21:46:28 2008 +0000 orinoco: Fix function names used in debug strings Signed-off-by: David Kilroy Signed-off-by: Pavel Roskin Signed-off-by: John W. Linville commit 39ca5bb76f3382b1cb0062d75ec45abd1c46e6d2 Author: Christian Lamparter Date: Tue Dec 9 21:09:00 2008 +0100 p54: enforce strict tx_queue limits The patch fixes an old FIXME in p54pci.c by moving the "queue full" check into the common library, where we can deal with it properly. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 30dab79ed40f6c0f8a24e25fd9be7bd873eeeb8b Author: Winkler, Tomas Date: Tue Dec 9 11:29:01 2008 -0800 iwlwifi: remove qos module parameter The ability of disabling qos from module params is not required anymore. Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 6d1ef1a3e6b4915d4cde897971ce283bdf0d9fbc Author: Winkler, Tomas Date: Tue Dec 9 11:29:00 2008 -0800 iwlwifi: 3945 remove qos module parameter The ability of disabling qos from module params is not required anymore. Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 9f925938680b7d1adeb030befb6a4b5f86026b6a Author: Winkler, Tomas Date: Tue Dec 9 11:28:59 2008 -0800 iwlifi: remove twice defined SINGLE_FRAME RX FH MASK This patch removes second definition of FH_RCSR_CHNL0_RX_CONFIG_SINGLE_FRAME in iwl-fh.h Signed-off-by: Tomas Winkler Reported-by: Emmanuel Grumbach Acked-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 759ef89fb096c4a6ef078d3cfd5682ac037bd789 Author: Winkler, Tomas Date: Tue Dec 9 11:28:58 2008 -0800 iwlwifi: change email contact information This patch replaces personal emails with hopefully always valid Intel Linux Wireless, which will be routed to a current maintainer Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit d070d8555fbb3b9114c6f861e5cf017ea1720b67 Author: Pavel Roskin Date: Tue Dec 9 12:32:15 2008 -0500 airport: remove useless return in a function returning void Signed-off-by: Pavel Roskin Signed-off-by: John W. Linville commit 89fad578a61810b7fdf8edd294890f3c0cde4390 Author: Christian Lamparter Date: Tue Dec 9 16:28:06 2008 +0100 mac80211: integrate sta_notify_ps cmds into sta_notify This patch replaces the newly introduced sta_notify_ps function, which can be used to notify the driver about every power state transition for all associated stations, by integrating its functionality back into the original sta_notify callback. Signed-off-by: Christian Lamparter Acked-by: Johannes Berg Signed-off-by: John W. Linville commit dd397dc9dddfa2149a1bbc9e52ac7d5630737cec Author: Christian Lamparter Date: Tue Dec 9 15:14:37 2008 +0100 p54usb: rewriting rx/tx routines to make use of usb_anchor's facilities Alan Stern found several flaws in p54usb's implementation and annotated: "usb_kill_urb() and similar routines do not expect an URB's completion routine to deallocate it.  This is almost obvious -- if the URB is deallocated before the completion routine returns then there's no way for usb_kill_urb to detect when the URB actually is complete." This patch addresses all known limitations in the old implementation and fixes khub's "use-after-freed" hang, when SLUB debug's poisoning option is enabled. Signed-off-by: Christian Lamparter Cc: stable@kernel.org Tested-by: Larry Finger Signed-off-by: John W. Linville commit a07d3619faeea3f540dd55f86685136f8928b4ad Author: Senthil Balasubramanian Date: Tue Dec 9 17:23:33 2008 +0530 ath9k: BH shouldn't be enabled when hardirqs are disabled. ath_tx_complete_buf uses a BH version of spinlock and so releasing the lock enables BH which is incorrect when called from sta_notify callback as MAC80211 disables hardirqs before the driver callback is called. As ath_tx_complete_buf is shared between user and softirq context using normal spinlock may not be appropriate. Though the proper fix would be to cleanup the context properly in the driver code, this would be an interim fix to avoid kernel warning. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit b143923689fdcc8e56688f2506a11ff16e4cd20b Author: Johannes Berg Date: Tue Dec 9 12:39:52 2008 +0100 mac80211/cfg80211: check endianness in sparse runs Make sure sparse checks endianness when run on mac80211/cfg80211. Signed-off-by: Johannes Berg Cc: Sam Ravnborg Signed-off-by: John W. Linville commit f546638c3f809fdacddc03fe765669c3042e0d9d Author: Johannes Berg Date: Tue Dec 9 12:30:03 2008 +0100 mac80211: remove fragmentation offload functionality There's no driver that actually does fragmentation on the device, and the callback is buggy (when it returns an error, mac80211's fragmentation status is changed so reading the frag threshold from userspace reads the new value despite the error). Let's just remove it, if we really find some hardware supporting it we can add it back later. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit e4f2a3458f451d5fb6aa55aac6aaadcf220d0da1 Author: Johannes Berg Date: Tue Dec 9 12:26:14 2008 +0100 ath9k: remove fragmentation workaround again Looking at the RC algorithm this is no longer necessary. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 21a49fc674afd00db6de2f729f8c8e4fab2f1bdf Author: Rami Rosen Date: Tue Dec 9 08:37:28 2008 +0200 iwlwifi: fix build error (iwl-rx.c). This patch adds #ifdef CONFIG_IWLWIFI_DEBUG in iwl_rx_reply_rx() method in iwlwifi/iwl-rx.c) to avoid build error caused by "iwlwifi: implement iwl_debug_report_frame for iwlagn". Signed-off-by: Rami Rosen Acked-by: Reinette Chatre Signed-off-by: John W. Linville commit 8dffff216fcac4f79078478085e86d68db64922e Author: Johannes Berg Date: Tue Dec 9 00:10:30 2008 +0100 mac80211: only create default STA interface if supported Drivers will support this, obviously, but this forces them to set it up properly. (This includes the fix posted as "mac80211: fix ifmodes check" and tested in wireless-testing by Hin-Tak and others. -- JWL) Signed-off-by: Johannes Berg Reported-by: Larry Finger Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 0f202aa2e1e1db1d20da9bcc3f5ad43c5a22d2d5 Author: John W. Linville Date: Mon Dec 8 14:51:41 2008 -0500 ieee80211_security: correct warning about width of auth_mode Also remove auth_algo which is unused. Signed-off-by: John W. Linville commit 8aa15e1506bb0b6b643be12baf1f2d4d2f115931 Author: Senthil Balasubramanian Date: Mon Dec 8 19:43:50 2008 +0530 ath9k: avoid rx frames with corrupted descriptor. Setting RX_ABORT/RX_DIS after MAC reset and clearing RX_ABORT/RX_DIS after enbling RXE/RXDP to avoid rx frames with corrupted descriptor status. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit 2df1bff4c5cd0b28e06e4defc3f5d90618db8d53 Author: Senthil Balasubramanian Date: Mon Dec 8 19:43:49 2008 +0530 ath9k: Incorrect band enum causes invalid antenna configuration. It's a regression from the patch titled "ath9k: Use mac80211's band macros and remove enum hal_freq_band". MAC80211 band macros can't be mapped directly with our hal band enum. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit e7594072a5b918510c937c1ab0acad4e8a931bc7 Author: Senthil Balasubramanian Date: Mon Dec 8 19:43:48 2008 +0530 ath9k: Adding support for Atheros AR9285 chipset. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit e8fbc99edfe0efa0b42f04587a79a6b3371f961a Author: Senthil Balasubramanian Date: Mon Dec 8 19:43:47 2008 +0530 ath9k: Adding initvalues for Atheros AR9285 chipset. This patch adds the initvalues required for AR9285 chipset. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit 02e90d627c80127933ee56ae0e9bf727fde66105 Author: Senthil Balasubramanian Date: Mon Dec 8 19:43:46 2008 +0530 ath9k: Adding AR9285 chipset register information. Adding AR9285 register information. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit 306d6112f9b396ed237305036f8e889f8aa964b5 Author: Johannes Berg Date: Mon Dec 8 12:39:04 2008 +0100 cfg80211: fix nl80211 frequency handling Fix two small bugs with HT frequency setting: * HT is accepted even when the driver is incapable * HT40 is accepted when the driver cannot do 40 MHz (both on the selected band) Also simplify the code a little. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 7ba1c04ed727a70df2dc63464232c0ec906ad67d Author: Johannes Berg Date: Mon Dec 8 11:18:32 2008 +0100 mac80211: improve sta_notify documentation Mention more possible STA entries and document the atomic requirement. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 8ee5afbc9d2162f0919dd089023fb690f7cf8134 Author: Sujith Date: Sun Dec 7 21:43:36 2008 +0530 ath9k: Merge structures ath_atx, ath_node_aggr with ath_node Signed-off-by: Sujith Signed-off-by: John W. Linville commit f6688cd8af6260ad4717ce45d2a614633fcf5540 Author: Sujith Date: Sun Dec 7 21:43:10 2008 +0530 ath9k: Remove remaining occurrences of CONFIG_SLOW_ANT_DIV Slow Antenna Diversity has been removed, these are remnants of the old code. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 817e11de2d3392041a70c80a6d5b353ad210f276 Author: Sujith Date: Sun Dec 7 21:42:44 2008 +0530 ath9k: Add a debugfs file to show interrupt statistics Location: ath9k//interrupt Signed-off-by: Sujith Signed-off-by: John W. Linville commit 3706de6f58962ba74c18eb4cb1ebe034ff723037 Author: Sujith Date: Sun Dec 7 21:42:10 2008 +0530 ath9k: Maintain rate table choice after association A scan run after association would change sc_curmode which is used to get the current rate table. This patch fixes it by removing sc_curmode and setting the rate table in usage in cur_rate_table on association. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 40990ec01fcca0b86a19c13a5d3deb77da1913a7 Author: Sujith Date: Sun Dec 7 21:41:37 2008 +0530 ath9k: Fix bug in rate table management The proper rate table wouldn't be used if a disassoc happens and a new attempt is made to associate using wpa_supplicant. This patch fixes it by storing the rate table to be used on association. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 6b3aa6ab787fe545c58554b7ce5c94de53526b83 Author: Jouni Malinen Date: Fri Dec 5 20:43:27 2008 +0200 ath9k: Disable staggered Beacon frame scheduling It looks like there are some issues in the current ath9k version as far as staggered Beacon frame scheduling is concerned. This results in Beacon frame timestamp being off by 25 milliseconds or so which can cause issues with multicast power save buffering in AP mode. Some client stations fail to receive multicast frames when there is this large an offset between TBTT and actual Beacon transmission time. Since ath9k does not yet support multiple BSSes anyway, the staggered Beacon frame scheduling is just increasing the number of interrupts at this point. The easiest fix for the timestamp offset is to disable staggered Beacon frames for now. We need to redesign beacon.c anyway when adding multi-BSS support with mac80211 since the existing code depends on different mechanism for Beacon frame transmission. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 3fbb9d95a96c6a03f2e484bb1665d089412640dc Author: Jouni Malinen Date: Fri Dec 5 20:42:45 2008 +0200 ath9k: Free Beacon skbs in AP mode Fix a memory leak where AP mode did not free transmitted Beacon frame skbs. Signed-off-by: Jouni Malinen Acked-by: Pat Erley Signed-off-by: John W. Linville commit 61ff84a4ce6451c9a0b675d355e0580e53628801 Author: Rami Rosen Date: Fri Dec 5 18:16:21 2008 +0200 iwlwifi: cleanup (remove pm_state) This patches removes unused variable (pm_state) from iwl-dev.h and from iwl-3945.h. (wireless-testing tree) Signed-off-by: Rami Rosen Signed-off-by: John W. Linville commit a8ec42c1431e8a43f910fb27af4882416cf5d6b1 Author: Zhu, Yi Date: Fri Dec 5 07:58:41 2008 -0800 iwlwifi: use rmb/wmb to protect indirect mmio operation This patch protects iwlwifi indirect mmio operations with rmb() and wmb(). It makes sure CPU reordering won't affect our indirect mmio access. Signed-off-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 73d7b5acc461bdc99e0135779d15e1874c6e00a6 Author: Zhu, Yi Date: Fri Dec 5 07:58:40 2008 -0800 iwlwifi: iwl_poll_{direct_}bit cleanup The patch merges implementation of iwl_poll_bit() and iwl_poll_direct_bit() by letting the latter be a special case of the former. Signed-off-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 42802d71dd14dd0e435a8da59d817d0c6f8a2866 Author: Zhu, Yi Date: Fri Dec 5 07:58:39 2008 -0800 iwlwifi: fix "MAC in deep sleep" error This patch fixes the misue of CSR_GP_CNTRL with CSR_RESET address in polling the CSR_GP_CNTRL_REG_FLAG_MAC_CLOCK_READY bit in iwl4965_apm_reset(). This causes "MAC in deep sleep" error sometimes. The patch also fixes the timeout value and the iwl_poll_bit() return value check. Signed-off-by: Zhu Yi Acked-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit f056658bb9c3085d5ec52fbdd45b38d55b899cc9 Author: Zhu, Yi Date: Fri Dec 5 07:58:38 2008 -0800 iwlwifi: fix time interval misuse in iwl_poll_{direct_}bit The patch fixes the misuse of microsecond with millisecond in the polling mechanism of the iwlwifi driver. The impact of this problem is the unacceptable latency for the whole system (especially during bringing down the wlan interface). Signed-off-by: Zhu Yi Acked-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 7262796ab726fcefad9b588a44d1d5a9f221051f Author: Abbas, Mohamed Date: Fri Dec 5 07:58:37 2008 -0800 iwl3945: Fix rate scale for B-mode connection This patch make sure we use only CCK rate for B only network. For 3945 driver, it sets REPLY_RATE_SCALE command every time we connect to a new network. In this command we set for every rate the number of try and next rate. The problem mac80211 reports same mode for both B and G mode as IEEE80211_BAND_2GHZ which will cause using invalid rate other than CCK in B only network. THis patch on association will examine sta valid rate on association, if no OFDM rate in valid available rates it considers it as B only mode so we can set REPLY_RATE_SCALE command with valid B only network and only choose CCK rate in rate scaling. Signed-off-by: Mohamed Abbas Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 00e540b3768c96a5e2a9d5d39524fef98b2cd981 Author: Halperin, Daniel C Date: Fri Dec 5 07:58:36 2008 -0800 iwlwifi: implement iwl_debug_report_frame for iwlagn The old version of this code was copied from 3945 and never updated. This patch cleans up structs that do not apply and accounts for other changes from 3945->iwlagn (e.g., PHY info can come in a separate cmd response from the ucode.) Signed-off-by: Daniel Halperin Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 447107fb32d75425c95a33f58e6b4b760b470092 Author: Reinette Chatre Date: Thu Dec 4 14:49:08 2008 -0800 mac80211: remove WARN_ON() from ieee80211_hw_config ieee80211_hw_config can return an error when the hardware has rfkill enabled. A WARN_ON() is too harsh for this failure as it is a valid scenario. Only comment this warning as we would like to have it back when rfkill is integrated into mac80211. Also reintroduce propagation of error if ieee80211_hw_config fails in ieee80211_config_beacon. This patch partially reverts patch: 5f0387fc3337ca26f0745f945f550f0c3734960f "mac80211: clean up ieee80211_hw_config errors" Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit bb608e9db7d29616fb6e0d856c23434610d4a1bd Author: Senthil Balasubramanian Date: Thu Dec 4 20:38:13 2008 +0530 wireless: Incorrect LEAP authentication algorithm identifier. This patch fixes a regression introduced by "wireless: avoid some net/ieee80211.h vs. linux/ieee80211.h conflicts" LEAP authentication algorithm identifier should be 128. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit a7db74f4be3835fd16c6c582d320f692ccccc622 Author: Larry Finger Date: Wed Dec 3 22:21:20 2008 -0600 rtl8187: Improve wireless statistics for RTL8187 The current wireless statistics for the RTL8187 poorly indicate the signal strength and quality. With testing, I found that the AGC value is inversely correlated with the strength as in the RTL8187B. By implementing a similar calculation, much more code becomes common to the two devices. Signed-off-by: Larry Finger Tested by: Martín Ernesto Barreyro Acked-by: Hin-Tak Leung Signed-off-by: John W. Linville commit fd28a5b58dddf5cb5df162ae5c8797a63171c31d Author: Andi Kleen Date: Tue Oct 21 14:05:00 2008 +0200 x86: remove simnow earlyprintk support Impact: remove obsolete code The later versions of SimNow! actually all have serial console emulation, so the direct interface isn't needed anymore. So remove the undocumented simnow earlyprintk console. Signed-off-by: Andi Kleen Signed-off-by: Thomas Gleixner commit 9470565579f29486f4ed0ffa50774268b64994b0 Author: Dave Jones Date: Mon Dec 1 14:13:50 2008 -0800 x86: remove init_mm export as planned for 2.6.26 Impact: remove deprecated export Signed-off-by: Dave Jones Signed-off-by: Andrew Morton Signed-off-by: Thomas Gleixner commit d65bd5ecb2bd166cea4952a59b7e16cc3ad6ef6c Author: Heiko Carstens Date: Tue Dec 9 18:49:51 2008 +0100 sched: add missing arch_update_cpu_topology() call arch_reinit_sched_domains() used to call arch_update_cpu_topology() via arch_init_sched_domains(). This call got lost with e761b7725234276a802322549cee5255305a0930 ("cpu hotplug, sched: Introduce cpu_active_map and redo sched domain managment (take 2)". So we might end up with outdated and missing cpus in the cpu core maps (architecture used to call arch_reinit_sched_domains if cpu topology changed). This adds a call to arch_update_cpu_topology in partition_sched_domains which gets called whenever scheduling domains get updated. Which is what is supposed to happen when cpu topology changes. Signed-off-by: Heiko Carstens Signed-off-by: Ingo Molnar commit ee79d1bdb6a10499e53f80b1e8d14110215178ba Author: Heiko Carstens Date: Tue Dec 9 18:49:50 2008 +0100 sched: let arch_update_cpu_topology indicate if topology changed Change arch_update_cpu_topology so it returns 1 if the cpu topology changed and 0 if it didn't change. This will be useful for the next patch which adds a call to this function in partition_sched_domains. Signed-off-by: Heiko Carstens Signed-off-by: Ingo Molnar commit 2bed8446819a7c5033aa1da138d9f230ae212edc Author: Ingo Molnar Date: Fri Dec 12 12:13:36 2008 +0100 tracing/function-graph-tracer: add a new .irqentry.text section, fix Impact: build fix 32-bit x86 needs this section too. Signed-off-by: Ingo Molnar commit cbc34ed1ac36690f75fd272e19e7b4fc29aae5a2 Author: Peter Zijlstra Date: Wed Dec 10 08:08:22 2008 +0100 sched: fix tracepoints in scheduler The trace point only caught one of many places where a task changes cpu, put it in the right place to we get all of them. Change the signature while we're at it. Signed-off-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 915b0d0104b72fd36af088ba4b11b5690bc96a6c Author: Hiroshi Shimamoto Date: Mon Dec 8 19:19:26 2008 -0800 x86: hardirq: introduce inc_irq_stat() Impact: cleanup Introduce inc_irq_stat() macro and unify irq_stat accounting code. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit fd10902797fc9d6abaf55d9c2e3c6698c90b10c7 Merge: 5b3eec0c80038c8739ccd465b897a35c0dff1cc4 8b1fae4e4200388b64dd88065639413cb3f1051c Author: Ingo Molnar Date: Fri Dec 12 11:59:39 2008 +0100 Merge commit 'v2.6.28-rc8' into x86/irq commit 8f2466f45f75e3cbe3aa2b69d33fd9d6e343b9cc Author: Hiroshi Shimamoto Date: Mon Dec 8 19:19:07 2008 -0800 x86: kill #ifdef for exit_idle() Impact: cleanup Introduce helper inline function in arch/x86/include/asm/idle.h to remove #ifdefs around exit_idle(). Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 16855f878d7127a8bb3925753463485f3071ad76 Author: Hiroshi Shimamoto Date: Mon Dec 8 19:18:38 2008 -0800 x86: uaccess: return value of __{get|put}_user() can be int Impact: cleanup The type of return value of __{get|put}_user() can be int. There is no user to refer the return value of __{get|put}_user() as long. This reduces code size a bit on 64-bit. $ size vmlinux.* text data bss dec hex filename 4509265 479988 673588 5662841 566879 vmlinux.new 4511462 479988 673588 5665038 56710e vmlinux.old Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit e18d7af85296cb6999aae171e8a9f8612bea5ae0 Merge: 3555105333ae55414d0fe051557bd7dc590f5255 8b1fae4e4200388b64dd88065639413cb3f1051c Author: Ingo Molnar Date: Fri Dec 12 11:53:43 2008 +0100 Merge commit 'v2.6.28-rc8' into x86/mm commit f8b755ac8e0cc3f330269e4c4504514f987167a2 Author: Frederic Weisbecker Date: Tue Dec 9 23:55:25 2008 +0100 tracing/function-graph-tracer: Output arrows signal on hardirq call/return Impact: make more obvious the hardirq calls in the output When a hardirq is triggered inside the codeflow on output, we have now two arrows that indicate the entry and return of the hardirq. 0) | bit_waitqueue() { 0) 0.880 us | __phys_addr(); 0) 2.699 us | } 0) | __wake_up_bit() { 0) ==========> | smp_apic_timer_interrupt() { 0) 0.797 us | native_apic_mem_write(); 0) 0.715 us | exit_idle(); 0) | irq_enter() { 0) 0.722 us | idle_cpu(); 0) 5.519 us | } 0) | hrtimer_interrupt() { 0) | ktime_get() { 0) | ktime_get_ts() { 0) 0.805 us | getnstimeofday(); [...] 0) ! 108.528 us | } 0) | irq_exit() { 0) | do_softirq() { 0) | __do_softirq() { 0) 0.895 us | __local_bh_disable(); 0) | run_timer_softirq() { 0) 0.827 us | hrtimer_run_pending(); 0) 1.226 us | _spin_lock_irq(); 0) | _spin_unlock_irq() { 0) 6.550 us | } 0) 0.924 us | _local_bh_enable(); 0) + 12.129 us | } 0) + 13.911 us | } 0) 0.707 us | idle_cpu(); 0) + 17.009 us | } 0) ! 137.419 us | } 0) <========== | 0) 1.045 us | } 0) ! 148.908 us | } 0) ! 151.022 us | } 0) ! 153.022 us | } 0) 0.963 us | journal_mark_dirty(); 0) 0.925 us | __brelse(); Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit bcbc4f20b52c2c40c43a4d2337707dcdfe81bc3a Author: Frederic Weisbecker Date: Tue Dec 9 23:54:20 2008 +0100 tracing/function-graph-tracer: annotate do_IRQ and smp_apic_timer_interrupt Impact: move most important x86 irq entry-points to a separate subsection Annotate do_IRQ and smp_apic_timer_interrupt to put them into the .irqentry.text subsection. These function will so be recognized as hardirq entrypoints for the function-graph-tracer. We could also annotate other irq entries but the others are far less important but they can be added on request. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit a0343e823184070f55364d8359f832dcb33c57c7 Author: Frederic Weisbecker Date: Tue Dec 9 23:53:16 2008 +0100 tracing/function-graph-tracer: add a new .irqentry.text section Impact: let the function-graph-tracer be aware of the irq entrypoints Add a new .irqentry.text section to store the irq entrypoints functions inside the same section. This way, the tracer will be able to signal an interrupts triggering on output by recognizing these entrypoints. Also, make this section recordable for dynamic tracing. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 85072bd55219231b8ca5d9d3fa3492eb4fa6635f Author: Ingo Molnar Date: Fri Dec 12 11:08:42 2008 +0100 x86, debug: remove EBDA debug printk Remove leftover EBDA debug message. Reported-by: Andrew Morton Signed-off-by: Ingo Molnar commit c1dfdc7597d051b09555d4ae2acb90403e238746 Merge: efbe027e95dc13ac343b6130948418d7ead7ddf1 8b1fae4e4200388b64dd88065639413cb3f1051c Author: Ingo Molnar Date: Fri Dec 12 10:29:35 2008 +0100 Merge commit 'v2.6.28-rc8' into sched/core commit da485e0cb16726797e99a595a399b9fc721b91bc Author: Frederic Weisbecker Date: Thu Dec 11 16:14:23 2008 +0100 tracing/fastboot: include missing headers For now include/trace/boot.h doesn't need to include necessary headers for its functions and structures because the files that include it already do it. But boot.h could be needed as well for further uses on other files. So, this patch adds the necessary headers for future purposes... Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 8001530d5af707eb9a158839c8f651eb6c1cb3c2 Author: Stephen Rothwell Date: Thu Dec 11 16:10:08 2008 +0100 tracing/fastboot: fix len of func buffer Impact: fix possible stack overrun This is a port of a patch included in the mainline (KSYM_SYMBOL_LEN fixes). The current func len is not large enough to contain the max symbol len, the right size must be KSYM_SYMBOL_LEN. Signed-off-by: Stephen Rothwell Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 8808500f26a61757cb414da76b271bbd09d5958c Author: Ingo Molnar Date: Fri Dec 12 09:20:12 2008 +0100 x86: soften multi-BAR mapping sanity check warning message Impact: make debug warning less scary The ioremap() time multi-BAR map warning has been causing false positives: http://lkml.org/lkml/2008/12/10/432 http://lkml.org/lkml/2008/12/11/136 So make it less scary by making it once-per-boot, by making it KERN_INFO and by adding this text: "Info: mapping multiple BARs. Your kernel is fine." Signed-off-by: Ingo Molnar commit ffc2238af8431d930d2c15f16feecf1fd6d75642 Author: Ingo Molnar Date: Fri Dec 12 08:21:19 2008 +0100 x86, bts: fix build error Impact: build fix arch/x86/kernel/ds.c: In function 'ds_request': arch/x86/kernel/ds.c:236: sorry, unimplemented: inlining failed in call to 'ds_get_context': recursive inlining but the recursion here is scary ... Signed-off-by: Ingo Molnar commit a93751cab71d63126687551823ed3e70cd85854a Author: Markus Metzger Date: Thu Dec 11 13:53:26 2008 +0100 x86, bts, ftrace: adapt the hw-branch-tracer to the ds.c interface Impact: restructure code, cleanup Remove BTS bits from the hw-branch-tracer (renamed from bts-tracer) and use the ds interface. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit c2724775ce57c98b8af9694857b941dc61056516 Author: Markus Metzger Date: Thu Dec 11 13:49:59 2008 +0100 x86, bts: provide in-kernel branch-trace interface Impact: cleanup Move the BTS bits from ptrace.c into ds.c. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit b0884e25fe361f2ca228808fb5fd1b74cb04e711 Author: Markus Metzger Date: Thu Dec 11 13:45:23 2008 +0100 x86, bts: turn BUG_ON into WARN_ON_ONCE Impact: make the ds code more debuggable Turn BUG_ON's into WARN_ON_ONCE. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit f3134de60624829a57741c1f3796847d4de165f6 Merge: e726f5f91effd8944c76475a2688093a03ba0d10 361b73d5c34f59c3fd107bb9dbe7a1fbff2c2517 Author: Ingo Molnar Date: Fri Dec 12 07:40:08 2008 +0100 Merge branches 'tracing/function-graph-tracer' and 'tracing/ring-buffer' into tracing/core commit 7a3c66e2d322c638e9306e739d96b2192dacde88 Author: Daniel Silverstone Date: Thu Dec 11 21:00:29 2008 -0800 net: Add support for the KS8695 ethernet devices. Implements the KS8695 ethernet device (ks8695net). This driver is only of use on the KS8695 which is an ARM9 based SoC. The documentation on this SoC is sparse and poor, with barely a register description and a rough outline of how the ethernet works, this driver was therefore written with strong reference to the Micrel supplied Linux 2.6.9 port, and to Andrew Victor's ks8695eth driver. Signed-off-by: Daniel Silverstone Signed-off-by: Vincent Sanders Acked-by: Ben Dooks Signed-off-by: David S. Miller commit 82a9928db560c429807f02467d22394f944a8916 Author: Atsushi Nemoto Date: Thu Dec 11 20:58:04 2008 -0800 tc35815: Enable StripCRC feature The chip can strip CRC automatically on receiving. Enable it. Also fix potential RX_BUF_SIZE calculation bug which was obscured by alignment. And use proper symbols (NET_IP_ALIGN, ETH_FCS_LEN, etc.) instead of magic numbers. Signed-off-by: Atsushi Nemoto Signed-off-by: David S. Miller commit 2cb377283f3469d66f0ea7358015abfe8366e5d0 Author: Steve Glendinning Date: Thu Dec 11 20:54:30 2008 -0800 smsc9420: SMSC LAN9420 10/100 PCI ethernet adapter This patch adds a driver for the LAN9240 PCI ethernet adapter. Changes since initial submission: - debug msg_level has been changed to use standard definitions - convert to use net_device_ops Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit ea943d41a8770857d50029fdc8fd111635c21a1f Author: Jeff Kirsher Date: Thu Dec 11 20:34:19 2008 -0800 igb: fixup AER with proper error handling Based on Peter Waskiewicz patch for ixgbe. Add error handling based on Hemminger's recommendation. Signed-off-by: Jeff Kirsher Acked-by: Peter P Waskiewicz Jr Signed-off-by: David S. Miller commit 49d92c7d5bbd158734bc34ed578a68b214a48583 Author: Stanley.Miao Date: Thu Dec 11 23:28:10 2008 +0800 ASoC: TWL4030: hands-free start-up sequence. A special start-up sequence is required to reduce the pop-noise of Class D amplifier when enable hands-free on TWL4030. Signed-off-by: Stanley.Miao Signed-off-by: Mark Brown commit 4544f8a22f38ba4560320fcfbe8c7e81562ddc6f Author: Mark Brown Date: Thu Dec 11 16:11:38 2008 +0000 ASoC: Fix variable name for Blackfin I2S DAI Signed-off-by: Mark Brown commit cd85400a022335a92fa3c25827179a7ad5e02225 Author: Stefan Roese Date: Fri Dec 5 01:58:49 2008 +0000 powerpc/4xx: Add L2 cache node to AMCC Canyonlands dts file With this patch the L2 cache is enabled on Canyonlands to increase the overall performance. There is a known cache coherency issue with the L2 cache, but this is related to the high bandwidth (HB) PLB segment where the memory address is 0x8.xxxx.xxxx (low bandwidth PLB segment is mapped to 0x0.xxxx.xxxx). Since this HB address is currently unused it is safe to enable the L2 cache. Signed-off-by: Stefan Roese Signed-off-by: Josh Boyer commit 132bb7c0efe82fc976b06d557f5d63536cb9fdaa Author: Takashi Iwai Date: Thu Dec 11 15:39:52 2008 +0100 ALSA: hda - Add development tree URLs in HD-audio.txt Signed-off-by: Takashi Iwai commit f8bbd06b17f16984328398cdecdf9302ef9bb0bf Author: Takashi Iwai Date: Thu Dec 11 13:12:59 2008 +0100 ALSA: hda - Fix another typo in HD-Audio.txt commit 42a73df435a23e60d97d9d860f4e55dc9833e950 Author: Takashi Iwai Date: Thu Dec 11 12:12:06 2008 +0100 ALSA: sb8 - Fix a return code in the error path Fixed a compile warning below: sound/isa/sb/sb8.c: In function ‘snd_sb8_probe’: sound/isa/sb/sb8.c:104: warning: ‘err’ may be used uninitialized in this function by setting the return value correctly. Signed-off-by: Takashi Iwai commit 5c0b9bec460c348d2ee5a800c288e5d0e8fcda66 Author: Takashi Iwai Date: Thu Dec 11 11:47:17 2008 +0100 ALSA: hda - Fix a compile warning when CONFIG_PM=n Fixed the compile warning regarding the unused function when built with CONFIG_PM=n: sound/pci/hda/hda_intel.c:1905: warning: ‘snd_hda_codecs_inuse’ defined but not used snd_hda_codecs_inuse() is used only in the resume callback. Signed-off-by: Takashi Iwai commit 6de45d5d776d2a7e7a9adc8ea49d37fe1bd45fb2 Author: Takashi Iwai Date: Thu Dec 11 10:28:18 2008 +0100 ALSA: ASoC - Fix DAI registration in s3c2443-ac97.c Fixed the registration of dais in s3c2443-ac97.c. sound/soc/s3c24xx/s3c2443-ac97.c: In function 's3c2443_ac97_init': sound/soc/s3c24xx/s3c2443-ac97.c:401: warning: passing argument 1 of 'snd_soc_register_dai' from incompatible pointer type sound/soc/s3c24xx/s3c2443-ac97.c: In function 's3c2443_ac97_exit': sound/soc/s3c24xx/s3c2443-ac97.c:407: warning: passing argument 1 of 'snd_soc_unregister_dai' from incompatible pointer type Signed-off-by: Takashi Iwai commit 623b9f6738dee0394398564a74fdabbff00f506f Author: Takashi Iwai Date: Thu Dec 11 07:44:18 2008 +0100 ALSA: hda - Update HD-Audio.txt Fixed typos and added a section about codecgraph. Thanks to Vedran Miletić and Daniel T Chen for suggestions. Signed-off-by: Takashi Iwai commit 293a4f28333a38aa75254bfb01a5102afc981809 Author: Eric Leblond Date: Wed Dec 10 17:24:33 2008 -0800 netfilter: xt_NFLOG is dependant of nfnetlink_log The patch "don't call nf_log_packet in NFLOG module" make xt_NFLOG dependant of nfnetlink_log. This patch forces the dependencies to fix compilation in case only xt_NFLOG compilation was asked and modifies the help message accordingly to the change. Signed-off-by: Eric Leblond Signed-off-by: David S. Miller commit 8229efdaef1e7913ae1712c0ba752f267e5fcd5e Author: Benjamin Thery Date: Wed Dec 10 16:30:15 2008 -0800 netns: ip6mr: enable namespace support in ipv6 multicast forwarding code This last patch makes the appropriate changes to use and propagate the network namespace where needed in IPv6 multicast forwarding code. This consists mainly in replacing all the remaining init_net occurences with current netns pointer retrieved from sockets, net devices or mfc6_caches depending on the routines' contexts. Some routines receive a new 'struct net' parameter to propagate the current netns: * ip6mr_get_route * ip6mr_cache_report * ip6mr_cache_find * ip6mr_cache_unresolved * mif6_add/mif6_delete * ip6mr_mfc_add/ip6mr_mfc_delete * ip6mr_reg_vif All the IPv6 multicast forwarding variables moved to struct netns_ipv6 by the previous patches are now referenced in the correct namespace. Changelog: ========== * Take into account the net associated to mfc6_cache when matching entries in mfc_unres_queue list. * Call mroute_clean_tables() in ip6mr_net_exit() to free memory allocated per-namespace. * Call dev_net_set() in ip6mr_reg_vif() to initialize dev->nd_net correctly. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit 8b90fc7e5b43aaef941044a4785a42439015b539 Author: Benjamin Thery Date: Wed Dec 10 16:29:48 2008 -0800 netns: ip6mr: declare ip6mr /proc/net entries per-namespace Declare IPv6 multicast forwarding /proc/net entries per-namespace: /proc/net/ip6_mr_vif /proc/net/ip6_mr_cache Changelog ========= V2: * In routine ipmr_mfc_seq_idx(), only match entries belonging to current netns in mfc_unres_queue list. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit 950d5704e5daa1f90bcd75b99163491e7b249169 Author: Benjamin Thery Date: Wed Dec 10 16:29:24 2008 -0800 netns: ip6mr: declare reg_vif_num per-namespace Preliminary work to make IPv6 multicast forwarding netns-aware. Declare variable 'reg_vif_num' per-namespace, moves into struct netns_ipv6. At the moment, this variable is only referenced in init_net. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit a21f3f997c73ced682129aedd372bb6b53041510 Author: Benjamin Thery Date: Wed Dec 10 16:28:44 2008 -0800 netns: ip6mr: declare mroute_do_assert and mroute_do_pim per-namespace Preliminary work to make IPv6 multicast forwarding netns-aware. Declare IPv6 multicast forwarding variables 'mroute_do_assert' and 'mroute_do_pim' per-namespace in struct netns_ipv6. At the moment, these variables are only referenced in init_net. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit 4045e57c19bee150370390545ee8a933b3f7a18d Author: Benjamin Thery Date: Wed Dec 10 16:27:21 2008 -0800 netns: ip6mr: declare counter cache_resolve_queue_len per-namespace Preliminary work to make IPv6 multicast forwarding netns-aware. Declare variable cache_resolve_queue_len per-namespace: moves it into struct netns_ipv6. This variable counts the number of unresolved cache entries queued in the list mfc_unres_queue. This list is kept global to all netns as the number of entries per namespace is limited to 10 (hardcoded in routine ip6mr_cache_unresolved). Entries belonging to different namespaces in mfc_unres_queue will be identified by matching the mfc_net member introduced previously in struct mfc6_cache. Keeping this list global to all netns, also allows us to keep a single timer (ipmr_expire_timer) to handle their expiration. In some places cache_resolve_queue_len value was tested for arming or deleting the timer. These tests were equivalent to testing mfc_unres_queue value instead and are replaced in this patch. At the moment, cache_resolve_queue_len is only referenced in init_net. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit 4a6258a0e33d042e4c84d9dec25d45ddb40a70b3 Author: Benjamin Thery Date: Wed Dec 10 16:24:07 2008 -0800 netns: ip6mr: dynamically allocate mfc6_cache_array Preliminary work to make IPv6 multicast forwarding netns-aware. Dynamically allocates IPv6 multicast forwarding cache, mfc6_cache_array, and moves it to struct netns_ipv6. At the moment, mfc6_cache_array is only referenced in init_net. Replace 'ARRAY_SIZE(mfc6_cache_array)' with mfc6_cache_array size: MFC6_LINES. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit 58701ad41105638baa0b38ffe9ac5b10469c1fd3 Author: Benjamin Thery Date: Wed Dec 10 16:22:34 2008 -0800 netns: ip6mr: store netns in struct mfc6_cache This patch stores into struct mfc6_cache the network namespace each mfc6_cache belongs to. The new member is mfc6_net. mfc6_net is assigned at cache allocation and doesn't change during the rest of the cache entry life. This will help to retrieve the current netns around the IPv6 multicast forwarding code. At the moment, all mfc6_cache are allocated in init_net. Changelog: ========== * Use write_pnet()/read_pnet() to set and get mfc6_net. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit 4e16880cb4225bfa68878ad5b2a9ded53657d054 Author: Benjamin Thery Date: Wed Dec 10 16:15:08 2008 -0800 netns: ip6mr: dynamically allocates vif6_table Preliminary work to make IPv6 multicast forwarding netns-aware. Dynamically allocates interface table vif6_table and moves it to struct netns_ipv6, and updates MIF_EXISTS() macro. At the moment, vif6_table is only referenced in init_net. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit bd91b8bf372911c1e4d66d6bb44fe409349a6791 Author: Benjamin Thery Date: Wed Dec 10 16:07:08 2008 -0800 netns: ip6mr: allocate mroute6_socket per-namespace. Preliminary work to make IPv6 multicast forwarding netns-aware. Make IPv6 multicast forwarding mroute6_socket per-namespace, moves it into struct netns_ipv6. At the moment, mroute6_socket is only referenced in init_net. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit 5eaa65b240c5eb7bf2235eb9dd177c83e6e3832c Author: Roel Kluin Date: Wed Dec 10 15:18:31 2008 -0800 net: Make static Sparse asked whether these could be static. Signed-off-by: Roel Kluin Signed-off-by: David S. Miller commit 2107fb8b5bf018be691afdd4c6ffaecf0c3307be Author: Steve Glendinning Date: Wed Nov 5 00:35:38 2008 +0000 smsc911x: add dynamic bus configuration Convert the driver to select 16-bit or 32-bit bus access at runtime, at a small performance cost. Signed-off-by: Steve Glendinning Acked-by: Catalin Marinas Signed-off-by: David S. Miller commit 3b1228abc93f7ab0aa28c46341d6a0f7e2cade70 Author: Mark Brown Date: Wed Dec 10 19:27:10 2008 +0000 ASoC: Stop WM8903 SYSCLK when suspending This will save some additional power. Signed-off-by: Mark Brown commit d58d5d5567ea9483346f57c83a94ce05992cd47c Author: Mark Brown Date: Wed Dec 10 18:36:42 2008 +0000 ASoC: Convert WM8903 driver to register at I2C probe time The driver now registers the codec and DAI when probed as an I2C device. Also convert the driver to use a single dynamic allocation to simplify error handling. Signed-off-by: Mark Brown commit 78e19a39d3985e2a06354493a70a200c0d432de5 Author: Mark Brown Date: Wed Dec 10 15:38:36 2008 +0000 ASoC: Convert WM8900 to do more work at I2C probe time Redo the instantiation of the WM8900 to do most of the initialisation work when the I2C driver probes rather than when the ASoC device is instantiated, registering the codec with the ASoC core when done. Also move all dynamic allocations into a single kmalloc() to simplify error handling and rename the I2C driver to make output more sensible. Signed-off-by: Mark Brown commit f144b7f6679d9833bd3b94b91e452592b6d0e502 Author: Takashi Iwai Date: Wed Dec 10 17:23:24 2008 +0100 ALSA: cs5535 - Make OLPC-stuff depending on MGEODE_LX The GPIO stuff for OLPC in cs5535audio_olpc.c is implemented only for Geode-LX, and enabled only when CONFIG_MGEODE_LX=y. Without this config option, the driver gets build errors. This patch adds a workaround to make it dependent on CONFIG_MGEODE_LX. Ideally, the OLPC-GPIO stuff should be implemented in a way independent from CPU type selection... Signed-off-by: Takashi Iwai commit 0fb497f5b6ff8da1e9e60afb39835f40d7f043ec Author: Andres Salomon Date: Thu Nov 6 16:53:34 2008 -0500 ALSA: cs5535audio: ensure MIC Bias/Analog Input bail if not on an OLPC machine Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit b5ccc57b06b54058879ab3ea548625d9bf88c7fc Author: Andres Salomon Date: Thu Nov 6 16:53:26 2008 -0500 ALSA: cs5535audio: clean up OLPC code - add copyright info to _olpc.c - minor layout fixes - make Makefile more concise - silence a warning Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit c8f0eeebc119c401202bc2794bec026d6cfd062e Author: Andres Salomon Date: Thu Nov 6 16:53:19 2008 -0500 ALSA: cs5535audio: turn off mic bias on OLPCs by default Always turn off mic bias; the MIC LED should never come on when the driver is first loaded. Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit 01da02419da827742acd5235467f493206e83574 Author: Andres Salomon Date: Thu Nov 6 16:53:11 2008 -0500 ALSA: cs5535audio: for OLPC, default to Analog Input being off Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit bf1e5278354856ac0260d338961560e720147681 Author: Andres Salomon Date: Thu Nov 6 16:53:03 2008 -0500 ALSA: cs5535audio: rename V_REFOUT control to MIC Bias This drops the AD1888 V_REFOUT control, and replaces it with a MIC Bias Enable control. It also moves the MIC bias enabling into a separate function. Signed-off-by: Andres Salomon commit e463ae1d13ffe4943bb31f47cc6f24415e55a59a Author: Chris Ball Date: Thu Nov 6 16:50:09 2008 -0500 ALSA: cs5535audio: enable OLPC's V_REFOUT bias when recording The OLPC has a privacy light hooked up in series with the microphone's V_Ref bias. We want to activate the bias while we are capturing audio. Signed-off-by: Chris Ball Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit 189d34e747e9540b70227f6682bd680868d90b10 Author: Andres Salomon Date: Thu Nov 6 16:49:55 2008 -0500 ALSA: cs5535audio: check OLPC's Analog Input status vis GPIO Checking the HPF register is irrelevant; HPF is secondary to the AI mode. Instead, check for Analog Input mode via GPIO. Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit 466ae3055be8665525a5613456fcb387ffef4cb7 Author: Andres Salomon Date: Thu Nov 6 16:49:46 2008 -0500 ALSA: cs5535audio: rename OLPC's analog input control && drop AD1888's HPF Previously, we had two separate controls; there's no need to have AD1888's HPF control, so drop it if we're on an OLPC machine. Also, as per Arjun's request, rename OLPC's Analog Input Switch control to "DC Mode Enable". Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit d6276b78028dfab944dd4a58124aefcc9aa580da Author: Andres Salomon Date: Thu Nov 6 16:49:38 2008 -0500 ALSA: cs5535audio: create function for setting OLPC's Analog Input mode Clean this stuff up a bit.. Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit 1e2232bc70b32f90109d678d1faccf6f50ebba80 Author: Andres Salomon Date: Thu Nov 6 16:47:05 2008 -0500 ALSA: cs5535audio: decouple HPF from V_REFOUT in OLPC code We shouldn't be touching V_REFOUT when we toggle HPF/analog input, so just drop that code. Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit b91254e75c3ec4f371ce1849672a95a929d99861 Author: Andres Salomon Date: Thu Nov 6 16:46:31 2008 -0500 ALSA: cs5535audio: drop ec_analog_input flag for OLPC stuff This is no longer necessary, as we're no longer doing indexed i/o commands. Signed-off-by: Andres Salomon commit 3556d18465c6e67c7a8f436428b95671add02f57 Author: Andres Salomon Date: Thu Nov 6 16:44:08 2008 -0500 ALSA: cs5535audio: invert EAPD for OLPC (newer than B3) Fix an audible pop described in . Originally based upon fixes by Mitch Bradley and Chris Ball. Signed-off-by: Andres Salomon commit c8974be5465b87414fa542cf9cca1a1ba21b8d60 Author: Jordan Crouse Date: Thu Nov 6 16:43:53 2008 -0500 ALSA: cs5535audio: Use OLPC/Geode basic infrastructure Use basic infrastructure code; geode_gpio* (rather than indexed i/o EC access), and do an OLPC machine check in olpc_quirk. [dilinger@debian.org: don't return failure in olpc_quirks if !OLPC] [dilinger@debian.org: drop the Signed-off-by: Andres Salomon commit 57d4bf6d8e965404b82b105ae44ddf137bb7b8e6 Author: Jaya Kumar Date: Thu Nov 6 16:43:34 2008 -0500 ALSA: cs5535audio: OLPC analog input support This is a 2nd cut at adding support for OLPC analog input. Signed-off-by: Jaya Kumar Signed-off-by: Andres Salomon commit b6c52a2cdb58fca918eef9ada5ef3a6cd17a9240 Author: Andres Salomon Date: Wed Nov 5 17:30:30 2008 -0500 ALSA: cs5535audio: suspend/resume callbacks are only defined with CONFIG_PM snd_cs5535audio_suspend and snd_cs5535audio_resume are only defined when CONFIG_PM is set; make that clear in the header file. Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit b035ce0f26812292d067fbe2fc9e9d88d5dfcdb4 Author: Jaya Kumar Date: Wed Nov 5 17:30:08 2008 -0500 ALSA: cs5535audio: turn off PCM properly if closing the audio device As per , we need to properly turn off the PCM if we're closing the device in order to save power. This also causes the MIC led to turn off properly. Signed-off-by: Jaya Kumar Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit 0bed7b292d68f82316bfb8cd521e16c867689efe Author: Andres Salomon Date: Wed Nov 5 17:29:53 2008 -0500 ALSA: cs5535audio: stick AD1888 bitshift values into a header file We'd like to use the High Pass Filter and V_REFOUT bitshift values elsewhere, so stick them into a ac97_codec.h. Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit 0d0cf00a7fc63cee9a4c4a3b8612879b4f7f42ba Author: Mark Brown Date: Wed Dec 10 14:32:45 2008 +0000 ASoC: Add codec registration API Another part of the backporting of Liam's ASoC v2 work. Using this is more complicated than the other registration types since currently the codec is instantiated during the probe of the ASoC device so we can't currently readily wait for the codec to register. Signed-off-by: Mark Brown commit cdc693643271b2e6a693cf8f6afb258cce01f058 Author: Mark Brown Date: Wed Dec 10 13:55:49 2008 +0000 ALSA: Add support for mechanical jack insertion Some systems support both mechanical and electrical jack detection, allowing them to report that a jack is physically present but does not have any functioning connections. Add a new jack type for these, allowing user space to report faulty connections. Thanks to Guillem Jover for the suggestion. Signed-off-by: Mark Brown Signed-off-by: Takashi Iwai commit 1e5fa31f96d558e53fe80e943305104bf4339711 Author: Peter Ujfalusi Date: Wed Dec 10 12:51:48 2008 +0200 ASoC: TWL4030: Change the name for the DACs To avoid confusion the names for the DACs changed: DACL1 -> DAC Left1 ... Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit d4a73131a56e906b8f65e20934516adcad68b524 Author: Peter Ujfalusi Date: Wed Dec 10 12:51:47 2008 +0200 ASoC: TWL4030: Small cleanup The mux switch related texts fits to on line, no need to wrap them. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 6a1bee4a9cae13aa73abd8f724bada213a38eb63 Author: Peter Ujfalusi Date: Wed Dec 10 12:51:46 2008 +0200 ASoC: TWL4030: Add missing Carkit output SND_SOC_DAPM_OUTPUT definition for carkitL/R was missing. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 1e297a19252a6792c4479b300020f7f63eeb56ef Author: Mark Brown Date: Wed Dec 10 11:08:33 2008 +0000 ASoC: Work around warnings from some build environments BUG() should be marked as not returning but for at least some configurations (including some widely deployed compilers) that's either not happening or being forgotten by the compiler. Add some extra return statements to the affected paths. Signed-off-by: Mark Brown commit 11d518e07d700eeb5bcec36bfd5f501e405230dd Author: Takashi Iwai Date: Wed Dec 10 10:37:33 2008 +0100 ALSA: hda - Add quirk for HP6730B laptop Added model=laptop for HP 6730B laptop with AD1984A codec. Reference: Novell bnc#457909 https://bugzilla.novell.com/show_bug.cgi?id=457909 Signed-off-by: Takashi Iwai Cc: stable@kernel.org commit 6fabd715e6d8e1b37c0c66d9bfda2c19643e3f77 Author: Peter P Waskiewicz Jr Date: Wed Dec 10 01:13:08 2008 -0800 ixgbe: Implement PCIe AER support This patch implements the PCIe Advanced Error Reporting callbacks in ixgbe. The 82598 hardware supports AER, so we enable it. Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 5e8427e5e25e3f844113cf67d07e7806bbe8c0e2 Author: Alexander Duyck Date: Wed Dec 10 01:09:53 2008 -0800 igb: Correctly determine pci-e function number in virtual environment When running in a virtual environment the ports of an 82575/6 can appear to be single function devices which is not correct. To resolve this we rely on the function number stored in the status register. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit b4557be23dc959f38eed21d359ec7164e42bcbd6 Author: Alexander Duyck Date: Wed Dec 10 01:08:59 2008 -0800 igb: update handling of RCTL for smaller buffer sizes As we begin to move into virtualization the use of a global value for buffer sizes becomes undesirable. This change makes it so only 256 and 512 byte buffers require use of the RCTL register. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit d2afbe78a2922929ad44882d3583d938b9949a30 Author: Takashi Iwai Date: Wed Dec 10 09:28:15 2008 +0100 ALSA: hda - Update documentation Minor typo-fixes and improvements on HD-Audio.txt. Signed-off-by: Takashi Iwai commit 44411e07c2ce1a755a756e10b592cd3ba02f99b3 Author: Takashi Iwai Date: Wed Dec 10 08:27:19 2008 +0100 ALSA: ca0106 - Check return value of pci_enable_device() in resume The return value of pci_enable_device() must be checked even in resume callback: sound/pci/ca0106/ca0106_main.c:1779: warning: ignoring return value of ‘pci_enable_device’, declared with attribute warn_unused_result Signed-off-by: Takashi Iwai commit e97fd7c6d51d8bf32ce981b853d987cfc6bdfb7f Author: Holger Eitzenberger Date: Tue Dec 9 23:10:38 2008 -0800 bonding: turn all bond_parm_tbls const Turn all bond_parm_tbls const. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 325dcf7a907a43f8832b92ae1c672798b4e60ce2 Author: Holger Eitzenberger Date: Tue Dec 9 23:10:17 2008 -0800 bonding: make tbl argument to bond_parse_parm() const bond_parse_parm() parses a parameter table for a particular value and is therefore not modifying the table at all. Therefore make the 2nd argument const, thus allowing to make the tables const later. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit d78755237f0892c8d313a7f7b1774443a7308b11 Author: Holger Eitzenberger Date: Tue Dec 9 23:09:49 2008 -0800 bonding: remove duplicate declarations Remove some declarations from bonding.c as they are declared in bonding.h already. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 5a03cdb7f2d7ff88e50153d8c3b90a1d52dca435 Author: Holger Eitzenberger Date: Tue Dec 9 23:09:22 2008 -0800 bonding: use pr_debug instead of own macros Use pr_debug() instead of own macros. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit ef65583d01f4060c758dba72f08edc09d8faa719 Author: Holger Eitzenberger Date: Tue Dec 9 23:08:55 2008 -0800 bonding: fix compile error if debug enabled This is what I get if debug is enabled: drivers/net/bonding/bond_ipv6.c: In function 'bond_na_send': drivers/net/bonding/bond_ipv6.c:75: error: 'slave' undeclared (first use in this function) drivers/net/bonding/bond_ipv6.c:75: error: (Each undeclared identifier is reported only once drivers/net/bonding/bond_ipv6.c:75: error: for each function it appears in.) This patch fixes that. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 77afc92b7915b6bb21584474a429a04603ac8963 Author: Holger Eitzenberger Date: Tue Dec 9 23:08:09 2008 -0800 bonding: use table for mode names Use a small array in bond_mode_name() for the names, thus saving some space: before text data bss dec hex filename 57736 9372 344 67452 1077c drivers/net/bonding/bonding.ko after text data bss dec hex filename 57441 9372 344 67157 10655 drivers/net/bonding/bonding.ko Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 58402054264fa33b405d1abcbcd8e528507aac1a Author: Holger Eitzenberger Date: Tue Dec 9 23:07:13 2008 -0800 bonding: add and use bond_is_lb() Introduce and use bond_is_lb(), it is usefull to shorten the repetitive check for either ALB or TLB mode. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit f73f2a6a23e34de9cca9672f727694e5af00e6c7 Author: Takashi Iwai Date: Wed Dec 10 07:59:33 2008 +0100 ALSA: ASoC - Fix symbol conflicts in omac-mcbsp.c Add snd_ prefix to avoid the conflict of symbols in omac-mcbsp.c: sound/soc/omap/omap-mcbsp.c:503: error: static declaration of 'omap_mcbsp_init' follows non-static declaration arch/arm/plat-omap/include/mach/mcbsp.h:373: error: previous declaration of 'omap_mcbsp_init' was here Signed-off-by: Takashi Iwai commit acc421656b97f09b55acb0938ad5378eefa5aacc Author: Roel Kluin Date: Tue Dec 9 23:26:05 2008 +0100 ALSA: sound: Make static Sparse asked whether these could be static. Signed-off-by: Roel Kluin Signed-off-by: Takashi Iwai commit c9b3a40ff2b3dea9914e36965a17c802650bb603 Author: Takashi Iwai Date: Wed Dec 10 07:47:22 2008 +0100 ALSA: ASoC - Fix wrong section types The module init entries should be __init instead of __devinit. Signed-off-by: Takashi Iwai commit 24e07db8cceb7dfe2d4005e4450a27f4bcda6499 Author: Takashi Iwai Date: Wed Dec 10 07:40:24 2008 +0100 ALSA: ASoC - Fix module init entry for twl4030.c Fixed the function name of module init entry for twl4030.c, which conflicted with the existing hardware init function: sound/soc/codecs/twl4030.c:1278: error: conflicting types for 'twl4030_init' sound/soc/codecs/twl4030.c:1187: error: previous definition of 'twl4030_init' was here Also fixed the section type of init function. Signed-off-by: Takashi Iwai commit 512bb43eb5422ee69a1be05ea0d89dc074fac9a2 Author: Jarek Poplawski Date: Tue Dec 9 22:35:02 2008 -0800 pkt_sched: sch_htb: Optimize WARN_ONs in htb_dequeue_tree() etc. We can skip WARN_ON() in htb_dequeue_tree() because there should be always a similar warning from htb_lookup_leaf() earlier. The first WARN_ON() in in htb_lookup_leaf() is changed to BUG_ON() because most likly this should end with oops anyway. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 1b5c0077e1615bb16e777a10ec1fc1195ba059ac Author: Jarek Poplawski Date: Tue Dec 9 22:34:40 2008 -0800 pkt_sched: sch_htb: Optimize htb_find_next_upper() htb_id_find_next_upper() is usually called to find a class with next id after some previously removed class, so let's move a check for equality to the end: it's the least likely here. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit dbb7a95d810ab76aac42e1a5cefdf069dcd014a1 Author: Chaithrika U S Date: Tue Dec 9 22:21:25 2008 -0800 phy: Add LSI ET1011C PHY driver Adds LSI ET1011C PHY driver. This driver is used by TI DM646x EVM. Signed-off-by: Chaithrika U S Signed-off-by: David S. Miller commit 471716f7ea646487b7b5c7b3efc68a023b05a933 Author: Mark Brown Date: Tue Dec 9 14:47:07 2008 +0000 ASoC: Fix typos in Atmel module registration I wish I had boards which work with unmodified kernels :/ Signed-off-by: Mark Brown commit f0752331b89ce79063f765545dd7dd5f49d9a713 Author: Mark Brown Date: Tue Dec 9 12:51:56 2008 +0000 ASoC: Convert WM8900 to allow registration by machine code This makes use of the support for delayed DAI registration to allow the WM8900 I2C device to be registered by general platform/architecture code rather than as part of the ASoC device probe. Signed-off-by: Mark Brown commit 6b05eda6383d89bffc21da654d148733e7839540 Author: Mark Brown Date: Mon Dec 8 19:26:48 2008 +0000 ASoC: Wait for non-AC97 codec DAIs before instantiating This will allow codec drivers to be refactored to allow them to be registered out of line with the ASoC device registration. Signed-off-by: Mark Brown commit 435c5e2588893e3f7aba0bd4de67991bf00b3c9d Author: Mark Brown Date: Thu Dec 4 15:32:53 2008 +0000 ASoC: Initial framework for dynamic card instantiation Use the lists of platforms, platform DAIs and cards to check to see that everything has registered. Since relationships are still specified by direct references to the structures in the drivers and the drivers all register everything at modprobe there should be no practical effect yet. Signed-off-by: Mark Brown commit 64089b84abfe2f26a864ebd968429302dcb071de Author: Mark Brown Date: Mon Dec 8 19:17:58 2008 +0000 ASoC: Register non-AC97 codec DAIs Currently this is done at module probe time since ASoC ties in codec device probe to the instantiation of the entire ASoC device. Subsequent patches will refactor the codec drivers to handle probing separately. Note that the core does not yet use this information. AC97 is special since the codec is controlled over the AC97 link but we want to give the machine driver a chance to set up the system before trying to instantiate since it may need to do configuration before the AC97 link will operate Signed-off-by: Mark Brown commit 958e792c7c8f06a9e666adb0ed94fff2cf90156f Author: Mark Brown Date: Wed Dec 3 19:58:17 2008 +0000 ASoC: Register platform drivers This is done at modprobe time, mirroring current behaviour, except for mpc5200_psc_i2s where we do registration at the same time as we register with soc-of-simple. Since the core currently ignores registration this has no practical impact. Signed-off-by: Mark Brown commit 12a48a8c0087ba39d926cf1d63938ccbdb9752c3 Author: Mark Brown Date: Wed Dec 3 19:40:30 2008 +0000 ASoC: Add platform registration API ASoC v2 allows platform drivers to instantiate independantly of the overall ASoC card. This API allows drivers to notify the core when they are registered. Signed-off-by: Mark Brown commit 3f4b783cfdebb559814690572041a17bc9744cf3 Author: Mark Brown Date: Wed Dec 3 19:26:35 2008 +0000 ASoC: Register platform DAIs Register all platform DAIs with the core. In line with current behaviour this is done at module probe time rather than when the devices are probed (since currently that only happens as the entire ASoC card is registered except for those drivers that currently implement some kind of hotplug). Since the core currently ignores DAI registration this has no practical effect. Signed-off-by: Mark Brown commit 9115171a6b79b6b4d5c6697f123556b6efc37f1f Author: Mark Brown Date: Sun Nov 30 23:31:24 2008 +0000 ASoC: Add DAI registration API Add API calls to register and unregister DAIs with the core. Currently these APIs are ineffective. Since multiple DAIs for a given device are a common case bulk variants are provided. Signed-off-by: Mark Brown commit c5af3a2e192d333997d1e191f3eba7fd2f869681 Author: Mark Brown Date: Fri Nov 28 13:29:45 2008 +0000 ASoC: Add card registration API ASoC v2 allows cards, codecs and platforms to instantiate separately, with the overall ASoC device only being instantiated once all the required components have registered. As part of backporting Liam's work introduce an initial version of the card registration functions. At present these do nothing active and are internal only, they will be exposed to machine drivers after further backporting. Adding this now allows the datastructures used for dynamic card instantiation to be built up gradually. Signed-off-by: Mark Brown commit ca4513fe06c483bf0111c990059d42f97288605d Author: Peter Ujfalusi Date: Tue Dec 9 12:35:52 2008 +0200 ASoC: TWL4030: Do not alter the Headset output volume on power-up/down There is a separate gain control for the Headset output already. Do not reset the gain to 0 dB at power up. In power-down, there is no need to set the Headset output gain to power-down mode, since if the CODECPDZ is in powered off this setting has no effect. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit df339804bbfc118eaca066b95488a2dbacc2e258 Author: Peter Ujfalusi Date: Tue Dec 9 12:35:51 2008 +0200 ASoC: TWL4030: DAPM mapping of the Handsfree outputs Adds DAPM muxing, routing for the Handsfree outputs. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 5152d8c28b95e421b91483ca0df76726e6e6c41e Author: Peter Ujfalusi Date: Tue Dec 9 12:35:50 2008 +0200 ASoC: TWL4030: DAPM mapping of the Carkit outputs Adds DAPM muxing, routing for the Carkit outputs. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit dfad21a26f5b3cc379fbec9c5d12b5106dd1f9c5 Author: Peter Ujfalusi Date: Tue Dec 9 12:35:49 2008 +0200 ASoC: TWL4030: DAPM mapping of the Headset outputs Adds DAPM muxing, routing for the Headset outputs. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 2a6f5c5892dcd17c81204fe5e26b92a37d2daafa Author: Peter Ujfalusi Date: Tue Dec 9 12:35:48 2008 +0200 ASoC: TWL4030: DAPM mapping of the PreDriv outputs Adds DAPM muxing, routing for the PreDrive outputs. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 5e98a46449cd028b9b97a8ef2c2448c8f473d6c5 Author: Peter Ujfalusi Date: Tue Dec 9 12:35:47 2008 +0200 ASoC: TWL4030: DAPM mapping of the Earpiece output Adds DAPM muxing, routing for the Earpiece output. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit e8ff9c417ad6e8f7ef253e36f9d6e22dc2aa2512 Author: Peter Ujfalusi Date: Tue Dec 9 12:35:46 2008 +0200 ASoC: TWL4030: Add DAPM event handler for output MUX selection DAPM event handler is set to filter out invalid MUX settings for certain outputs. Earpiece: - 0 = Off - 1 = DACL1 - 2 = DACL2 - 3 = *** Invalid *** - 4 = DACR1 PreDriveL/R: - 0 = Off/Off - 1 = DACL1/DACR1 - 2 = DACL2/DACR2 - 3 = *** Invalid/Invalid *** - 4 = DACR2/DACL2 Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 44c5587035fbbdd368a3d5d8d11997d43758078a Author: Peter Ujfalusi Date: Tue Dec 9 08:45:44 2008 +0200 ASoC: TWL4030: Add Analog PGA control switch to DAPM Add all four APGA switch to DAPM routing and widgets. Add user control for DA enable for all APGA as normal control. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 53b5047d994edfcafabc0e95bb681ae70d6e8604 Author: Peter Ujfalusi Date: Tue Dec 9 08:45:43 2008 +0200 ASoC: TWL4030: Correct DAPM_DAC with power control Add all four DACs to dapm_widgets with power switch. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 1e641743f055f075ed9a4edd75f1fb1e05669ddc Author: Al Viro Date: Tue Dec 9 09:23:33 2008 +0000 Audit: Log TIOCSTI AUDIT_TTY records currently log all data read by processes marked for TTY input auditing, even if the data was "pushed back" using the TIOCSTI ioctl, not typed by the user. This patch records all TIOCSTI calls to disambiguate the input. It generates one audit message per character pushed back; considering TIOCSTI is used very rarely, this simple solution is probably good enough. (The only program I could find that uses TIOCSTI is mailx/nail in "header editing" mode, e.g. using the ~h escape. mailx is used very rarely, and the escapes are used even rarer.) Signed-Off-By: Miloslav Trmac Signed-off-by: Al Viro Signed-off-by: James Morris commit e19caae7177fcc732ae1b47135e39f577352adb2 Author: David S. Miller Date: Tue Dec 9 01:04:27 2008 -0800 bluetooth: Fix unused var warning properly in rfcomm_sock_ioctl(). As Stephen Rothwell points out, we don't want 'sock' here but rather we really do want 'sk'. This local var is protected by all sorts of bluetooth debugging kconfig vars, but BT_DBG() is just a straight pr_debug() call which is unconditional. pr_debug() evaluates it's args only if either DEBUG or CONFIG_DYNAMIC_PRINTK_DEBUG is defined. Solving this inside of the BT_DBG() macro is non-trivial since it's varargs. And these ifdefs are ugly. So, just mark this 'sk' thing __maybe_unused and kill the ifdefs. Signed-off-by: David S. Miller commit bcb09dc276e706ed6f22813ba774797125f3da0a Author: Brice Goglin Date: Tue Dec 9 00:14:27 2008 -0800 myri10ge: check fragmentation in LRO get_frag_header() Add a fragmentation check to myri10ge's LRO get_frag_header() callback. Signed-off-by: Brice Goglin Signed-off-by: Andrew Gallatin Signed-off-by: David S. Miller commit 6cf1a0f856bcb5423bfb4121b2dfeaa3ba7b1ff2 Author: David S. Miller Date: Tue Dec 9 00:01:53 2008 -0800 bluetooth: Fix rfcomm_sock_ioctl() build failure with debugging enabled. It's 'sock' not 'sk'. Signed-off-by: David S. Miller commit e42130039c85826567d4e4864f2c7492578576cb Author: Alexey Dobriyan Date: Mon Dec 8 23:50:18 2008 -0800 hydra: fix compilation drivers/net/hydra.c:163: error: 'hydra_netdev_ops' undeclared (first use in this function) Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 30bc4481de890e97dc001ee123761d89638cbc50 Author: Takashi Iwai Date: Tue Dec 9 08:23:45 2008 +0100 ALSA: Updates about bug-reporting in ALSA-Configuration.txt Updated the information about bug-reporting for HD-audio. Mentioned alsa-info.sh and kernel bugzilla. Removed ALSA BTS address not to flood the unhandled reports any more. Signed-off-by: Takashi Iwai commit 94d6a5f7341ebaff53d4e41cc81fab37f0d9fbed Author: Serge E. Hallyn Date: Mon Dec 8 15:52:21 2008 -0600 user namespaces: document CFS behavior Documented the currently bogus state of support for CFS user groups with user namespaces. In particular, all users in a user namespace should be children of the user which created the user namespace. This is yet to be implemented. Signed-off-by: Serge E. Hallyn Acked-by: Dhaval Giani Signed-off-by: Serge E. Hallyn Signed-off-by: James Morris commit e726f5f91effd8944c76475a2688093a03ba0d10 Author: Ingo Molnar Date: Mon Dec 8 16:55:53 2008 +0100 tracing/function-graph-tracer: fix 'flags' variable mismatch this warning: kernel/trace/trace.c: In function ‘trace_vprintk’: kernel/trace/trace.c:3626: warning: ‘flags’ may be used uninitialized in this function shows some confusion about irq_flags / flags use here. We already have irq_flags so remove the extra flags variable. Signed-off-by: Ingo Molnar commit efbe027e95dc13ac343b6130948418d7ead7ddf1 Author: Vaidyanathan Srinivasan Date: Mon Dec 8 20:52:49 2008 +0530 sched: idle_balance() does not call load_balance_newidle() Impact: fix SD_BALANCE_NEWIDLEand broaden its use load_balance_newidle() does not get called if SD_BALANCE_NEWIDLE is set at higher level domain (3-CPU) and not in low level domain (2-MC). pulled_task is initialised to -1 and checked for non-zero which is always true if the lowest level sched_domain does not have SD_BALANCE_NEWIDLE flag set. Signed-off-by: Vaidyanathan Srinivasan Signed-off-by: Ingo Molnar commit 4217458dafaa57d8e26a46f5d05ab8c53cf64191 Author: Hiroshi Shimamoto Date: Fri Dec 5 17:17:09 2008 -0800 x86: signal: change type of paramter for sys_rt_sigreturn() Impact: cleanup on 32-bit Peter pointed this parameter can be changed. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 380c4b1411ccd6885f92b2c8ceb08433a720f44e Author: Frederic Weisbecker Date: Sat Dec 6 03:43:41 2008 +0100 tracing/function-graph-tracer: append the tracing_graph_flag Impact: Provide a way to pause the function graph tracer As suggested by Steven Rostedt, the previous patch that prevented from spinlock function tracing shouldn't use the raw_spinlock to fix it. It's much better to follow lockdep with normal spinlock, so this patch adds a new flag for each task to make the function graph tracer able to be paused. We also can send an ftrace_printk whithout worrying of the irrelevant traced spinlock during insertion. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 8e1b82e0866befaa0b2920be296c6e4c3fc7f422 Author: Frederic Weisbecker Date: Sat Dec 6 03:41:33 2008 +0100 tracing/function-graph-tracer: turn tracing_selftest_running into an int Impact: cleanup Apply some suggestions of Steven Rostedt: _turn tracing_selftest_running into a simple int (no need of an atomic_t) _set it __read_mostly _fix a comment style Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 8b96f0119818964e4944fd1c423bf6770027d3ac Author: Frederic Weisbecker Date: Sat Dec 6 03:40:00 2008 +0100 tracing/function-graph-tracer: introduce __notrace_funcgraph to filter special functions Impact: trace more functions When the function graph tracer is configured, three more files are not traced to prevent only four functions to be traced. And this impacts the normal function tracer too. arch/x86/kernel/process_64/32.c: I had crashes when I let this file traced. After some debugging, I saw that the "current" task point was changed inside__swtich_to(), ie: "write_pda(pcurrent, next_p);" inside process_64.c Since the tracer store the original return address of the function inside current, we had crashes. Only __switch_to() has to be excluded from tracing. kernel/module.c and kernel/extable.c: Because of a function used internally by the function graph tracer: __kernel_text_address() To let the other functions inside these files to be traced, this patch introduces the __notrace_funcgraph function prefix which is __notrace if function graph tracer is configured and nothing if not. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 69b88afa8d114a43a3c0431722b79e31d9920692 Author: Yinghai Lu Date: Fri Dec 5 22:45:50 2008 -0800 x86: clean up get_smp_config() Impact: cleanup reorder exit path in __get_smp_config(). also move two print outs to acpi_process_madt Signed-off-by: Yinghai Lu Signed-off-by: Ingo Molnar commit aa9c9b8c584a42a094202b7e0f63497e888f86a7 Merge: 87f7606591aea6a8a38ea4c8911b5eeeee2740b8 218d11a8b071b23b76c484fd5f72a4fe3306801e Author: Ingo Molnar Date: Mon Dec 8 15:07:49 2008 +0100 Merge branch 'linus' into x86/quirks commit 361b73d5c34f59c3fd107bb9dbe7a1fbff2c2517 Author: Lai Jiangshan Date: Mon Dec 8 10:58:08 2008 +0800 ring_buffer: fix comments Impact: comments cleanup fix incorrect comments for enum ring_buffer_type Signed-off-by: Lai Jiangshan Signed-off-by: Ingo Molnar commit 5436499e6098759c2340f8b906ea52f993dc4efb Author: Ken Chen Date: Sun Dec 7 18:47:37 2008 -0800 sched: fix sd_parent_degenerate on non-numa smp machine Impact: optimize the sched domains tree some more The addition of SD_SERIALIZE flag added to SD_NODE_INIT prevented top level dummy numa sched_domain to be properly degenerated on non-numa smp machine. The reason is that in sd_parent_degenerate(), it found that the child and parent does not have comon sched_domain flags due to SD_SERIALIZE. However, for non-numa smp box, the top level is a dummy with a single sched_group. Filter out SD_SERIALIZE if it is on non-numa machine to properly degenerate top level node sched_domain. this will cut back some of the sd domain walk in the load balancer code. Signed-off-by: Ken Chen Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 4d117c5c6b00254e51c61ff5b506ccaba21a5a03 Merge: 6c415b9234a8c71f290e5d4fddc467f103f32719 43714539eab42b2fa3653ea7bd667b36c2291b11 Author: Ingo Molnar Date: Mon Dec 8 13:52:00 2008 +0100 Merge branch 'sched/urgent' into sched/core commit 3e1e9002aa8b32bd4c95ac6c8fad376b7a8127fb Author: Rafael J. Wysocki Date: Mon Dec 8 00:50:22 2008 +0100 x86: change static allocation of trampoline area Impact: fix trampoline sizing bug, save space While debugging a suspend-to-RAM related issue it occured to me that if the trampoline code had grown past 4 KB, we would have been allocating too little memory for it, since the 4 KB size of the trampoline is hardcoded into arch/x86/kernel/e820.c . Change that by making the kernel compute the trampoline size and allocate as much memory as necessary. Signed-off-by: Rafael J. Wysocki Signed-off-by: Ingo Molnar commit decbec3838d10ecd7aabdb4c0e05aac0e5f5dc0c Author: Frederic Weisbecker Date: Mon Dec 8 01:56:06 2008 +0100 tracing/function-graph-tracer: implement a print_headers function Impact: provide trace headers to explain a bit the output This patch implements the print_headers callback for the function graph tracer. These headers are output according to the current trace options. Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 5e03c54eeb016cf1b066e9e48d30116814ca2459 Author: Takashi Iwai Date: Mon Dec 8 12:40:56 2008 +0100 ALSA: hrtimer - Use hard-irq callback Use the hard-irq mode for the callback (for possible removal of soft-irq mode in future). Signed-off-by: Takashi Iwai commit 647808a6b932d85c3e85df6dcf0e34c1e53cc953 Author: Takashi Iwai Date: Mon Dec 8 12:16:58 2008 +0100 ALSA: timer - Add comments and use ns_to_ktime() Add the license and misc comments at the beginning of the code. Also, use ns_to_ktime() for simplification. Signed-off-by: Takashi Iwai commit 6fdd34d43bff8be9bb925b49d87a0ee144d2ab07 Author: Gerrit Renker Date: Mon Dec 8 01:19:06 2008 -0800 dccp ccid-2: Phase out the use of boolean Ack Vector sysctl This removes the use of the sysctl and the minisock variable for the Send Ack Vector feature, as it now is handled fully dynamically via feature negotiation (i.e. when CCID-2 is enabled, Ack Vectors are automatically enabled as per RFC 4341, 4.). Using a sysctl in parallel to this implementation would open the door to crashes, since much of the code relies on tests of the boolean minisock / sysctl variable. Thus, this patch replaces all tests of type if (dccp_msk(sk)->dccpms_send_ack_vector) /* ... */ with if (dp->dccps_hc_rx_ackvec != NULL) /* ... */ The dccps_hc_rx_ackvec is allocated by the dccp_hdlr_ackvec() when feature negotiation concluded that Ack Vectors are to be used on the half-connection. Otherwise, it is NULL (due to dccp_init_sock/dccp_create_openreq_child), so that the test is a valid one. The activation handler for Ack Vectors is called as soon as the feature negotiation has concluded at the * server when the Ack marking the transition RESPOND => OPEN arrives; * client after it has sent its ACK, marking the transition REQUEST => PARTOPEN. Adding the sequence number of the Response packet to the Ack Vector has been removed, since (a) connection establishment implies that the Response has been received; (b) the CCIDs only look at packets received in the (PART)OPEN state, i.e. this entry will always be ignored; (c) it can not be used for anything useful - to detect loss for instance, only packets received after the loss can serve as pseudo-dupacks. There was a FIXME to change the error code when dccp_ackvec_add() fails. I removed this after finding out that: * the check whether ackno < ISN is already made earlier, * this Response is likely the 1st packet with an Ackno that the client gets, * so when dccp_ackvec_add() fails, the reason is likely not a packet error. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 4098dce5be537a157eed4a326efd464109825b8b Author: Gerrit Renker Date: Mon Dec 8 01:18:37 2008 -0800 dccp: Remove manual influence on NDP Count feature Updating the NDP count feature is handled automatically now: * for CCID-2 it is disabled, since the code does not use NDP counts; * for CCID-3 it is enabled, as NDP counts are used to determine loss lengths. Allowing the user to change NDP values leads to unpredictable and failing behaviour, since it is then possible to disable NDP counts even when they are needed (e.g. in CCID-3). This means that only those user settings are sensible that agree with the values for Send NDP Count implied by the choice of CCID. But those settings are already activated by the feature negotiation (CCID dependency tracking), hence this form of support is redundant. At startup the initialisation of the NDP count feature uses the default value of 0, which is done implicitly by the zeroing-out of the socket when it is allocated. If the choice of CCID or feature negotiation enables NDP count, this will then be updated via the NDP activation handler. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 0049bab5e765aa74cf767a834fa336e19453fc5e Author: Gerrit Renker Date: Mon Dec 8 01:18:05 2008 -0800 dccp: Remove obsolete parts of the old CCID interface The TX/RX CCIDs of the minisock are now redundant: similar to the Ack Vector case, their value equals initially that of the sysctl, but at the end of feature negotiation may be something different. The old interface removed by this patch thus has been replaced by the newer interface to dynamically query the currently loaded CCIDs. Also removed are the constructors for the TX CCID and the RX CCID, since the switch "rx <-> non-rx" is done by the handler in minisocks.c (and the handler is the only place in the code where CCIDs are loaded). Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 63b8e2861f31868dce9c92fd7444f212a5a8a775 Author: Gerrit Renker Date: Mon Dec 8 01:17:32 2008 -0800 dccp: Clean up old feature-negotiation infrastructure The code removed by this patch is no longer referenced or used, the added lines update documentation and copyrights. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 991d927c8652b2ab51bd8eef2b773bb2c77d457b Author: Gerrit Renker Date: Mon Dec 8 01:16:27 2008 -0800 dccp: Integration of dynamic feature activation - part 3 (client side) This integrates feature-activation in the client: 1. When dccp_parse_options() fails, the reset code is already set; request_sent\ _state_process() currently overrides this with `Packet Error', which is not intended - changed to use the reset code supplied by dccp_parse_options(). 2. When feature negotiation fails, the socket should be marked as not usable, so that the application is notified that an error occurred. This is achieved by a new label 'unable_to_proceed': generating an error code of `Aborted', setting the socket state to CLOSED, returning with ECOMM in sk_err. 3. Avoids parsing the Ack twice in Respond state by not doing option processing again in dccp_rcv_respond_partopen_state_process (as option processing has already been done on the request_sock in dccp_check_req). Since this addresses congestion-control initialisation, a corresponding FIXME has been removed. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 192b27ff35bad4cf76cc4239419e9f805935e4f8 Author: Gerrit Renker Date: Mon Dec 8 01:15:55 2008 -0800 dccp: Integration of dynamic feature activation - part 2 (server side) This patch integrates the activation of features at the end of negotiation into the server-side code. Note regarding the removal of 'const': -------------------------------------- The 'const' attribute has been removed from 'dreq' since dccp_activate_values() needs to operate on dreq's feature list. Part of the activation is to remove those options from the list that have already been confirmed, hence it is not purely read-only. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 6eb55d172b5f6de65afdae6285f8d732e4785bf7 Author: Gerrit Renker Date: Mon Dec 8 01:15:26 2008 -0800 dccp: Integration of dynamic feature activation - part 1 (socket setup) This first patch out of three replaces the hardcoded default settings with initialisation code for the dynamic feature negotiation. The patch also ensures that the client feature-negotiation queue is flushed only when entering the OPEN state. Since confirmed Change options are removed as soon as they are confirmed (in the DCCP-Response), this ensures that Confirm options are retransmitted. Note on retransmitting Confirm options: --------------------------------------- Implementation experience showed that it is necessary to retransmit Confirm options. Thanks to Leandro Melo de Sales who reported a bug in an earlier revision of the patch set, resulting from not retransmitting these options. As long as the client is in PARTOPEN, it needs to retransmit the Confirm options for the Change options received on the DCCP-Response from the server. Otherwise, if the packet containing the Confirm options gets dropped in the network, the connection aborts due to undefined feature negotiation state. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit b74ca3a896b9ab5f952bc440154758e708c48884 Author: Wang Chen Date: Mon Dec 8 01:14:16 2008 -0800 netdevice: Kill netdev->priv This is the last shoot of this series. After I removing all directly reference of netdev->priv, I am killing "priv" of "struct net_device" and fixing relative comments/docs. Anyone will not be allowed to reference netdev->priv directly. If you want to reference the memory of private data, use netdev_priv() instead. If the private data is not allocted when alloc_netdev(), use netdev->ml_priv to point that memory after you creating that private data. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 5a001a070e032bea1be563b13ebf9819cd5e54d4 Author: Wang Chen Date: Mon Dec 8 01:13:25 2008 -0800 staging-winbond: Kill directly reference of netdev->priv This driver is not yet finished. At this time, we don't know how netdev be created and how private data be allocated. So, simply use netdev_priv() now and leave some temp comment. Compile test only. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 7657d90497f98426af17f0ac633a9b335bb7a8fb Author: Serge E. Hallyn Date: Wed Dec 3 13:17:33 2008 -0600 user namespaces: require cap_set{ug}id for CLONE_NEWUSER While ideally CLONE_NEWUSER will eventually require no privilege, the required permission checks are currently not there. As a result, CLONE_NEWUSER has the same effect as a setuid(0)+setgroups(1,"0"). While we already require CAP_SYS_ADMIN, requiring CAP_SETUID and CAP_SETGID seems appropriate. Signed-off-by: Serge E. Hallyn Acked-by: "Eric W. Biederman" Signed-off-by: James Morris commit c37bbb0fdcc01610fd55604eb6927210a1d20044 Author: Serge E. Hallyn Date: Wed Dec 3 13:17:06 2008 -0600 user namespaces: let user_ns be cloned with fairsched (These two patches are in the next-unacked branch of git://git.kernel.org/pub/scm/linux/kernel/git/sergeh/userns-2.6. If they get some ACKs, then I hope to feed this into security-next. After these two, I think we're ready to tackle userns+capabilities) Fairsched creates a per-uid directory under /sys/kernel/uids/. So when you clone(CLONE_NEWUSER), it tries to create /sys/kernel/uids/0, which already exists, and you get back -ENOMEM. This was supposed to be fixed by sysfs tagging, but that was postponed (ok, rejected until sysfs locking is fixed). So, just as with network namespaces, we just don't create those directories for user namespaces other than the init. Signed-off-by: Serge E. Hallyn Signed-off-by: James Morris commit 32e176c14d7a425b681ef003c9061001ddb7fc7b Author: Rafael J. Wysocki Date: Sat Dec 6 15:09:08 2008 +0100 Sound: hda - Restore PCI configuration space with interrupts off Move the restoration of the standard PCI configuration registers in the snd_hda_intel driver to a ->resume_early() callback executed with interrupts disabled, since doing that with interrupts enabled may lead to problems in some cases. This patch addresses the regression from 2.6.26 tracked as http://bugzilla.kernel.org/show_bug.cgi?id=12121 . Signed-off-by: Rafael J. Wysocki Signed-off-by: Takashi Iwai commit 4bcd42679643dd3dfd6aaad9fcbcc74ac5c7e2e9 Author: Wang Chen Date: Sat Dec 6 23:59:10 2008 -0800 staging-slicoss: Kill directly reference of netdev->priv Simply replace netdev->priv with netdev_priv(). Signed-off-by: Wang Chen Acked-by: Greg Kroah-Hartman Signed-off-by: David S. Miller commit 979123d5343b4fdcd4c682745b8a0be9b8fac248 Author: Wang Chen Date: Sat Dec 6 23:58:37 2008 -0800 staging-p80211: Kill directly reference of netdev->priv In this driver, netdev's private data is wlandevice_t. And the wlandev(type of wlandevice_t) is exist before netdev be allocated. So use netdev->ml_priv to point to the private data. I am not sure whether I should consider the kernel version older than 2.3.38. Because in those kernels, netdevice_t is "structure dev" instead of "structure net_device" and of course "dev->ml_priv" will cause compile error. But before my patch, in function wlan_setup(), there is a ether_setup(net_device) which already broke kernels which older than 2.3.38. Signed-off-by: Wang Chen Acked-by: Greg Kroah-Hartman Signed-off-by: David S. Miller commit ad660e2f97e7dc9d0f5627456b37e64bde714a5e Author: Wang Chen Date: Sat Dec 6 23:57:49 2008 -0800 s390_net: Kill directly reference of netdev->priv The private data comes from ccwgroup_device. So just don't allocate private data memory when do alloc_netdev() and use netdev->ml_priv to reference private data. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 26aca5ec9e587562ac0f8c5b67d02567d7bf2ffe Author: Nick Andrew Date: Sat Dec 6 23:57:14 2008 -0800 net: Fix incorrect use of loose in spider_net.c Fix incorrect use of loose in spider_net.c It should be 'lose', not 'loose'. Signed-off-by: Nick Andrew Signed-off-by: David S. Miller commit 6c5cc8e0516005cb9a8f940276fac7614f7acf5c Author: Nick Andrew Date: Sat Dec 6 23:55:32 2008 -0800 wireless: Fix incorrect use of loose in wext.c Fix incorrect use of loose in wext.c It should be 'lose', not 'loose'. Signed-off-by: Nick Andrew Signed-off-by: David S. Miller commit a2acde07711f7d8b19928245c555bce60f91482a Author: Ilpo Järvinen Date: Fri Dec 5 22:49:37 2008 -0800 tcp: fix tso_should_defer in 64bit Since jiffies is unsigned long, the types get expanded into that and after long enough time the difference will therefore always be > 1 (and that probably happens near boot as well as iirc the first jiffies wrap is scheduler close after boot to find out problems related to that early). This was originally noted by Bill Fink in Dec'07 but nobody never ended fixing it. Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit d5dd9175bc12015ea4d2c1a9b6b15dfa645a3db9 Author: Ilpo Järvinen Date: Fri Dec 5 22:48:55 2008 -0800 tcp: use tcp_write_xmit also in tcp_push_one tcp_minshall_update is not significant difference since it only checks for not full-sized skb which is BUG'ed on the push_one path anyway. tcp_snd_test is tcp_nagle_test+tcp_cwnd_test+tcp_snd_wnd_test, just the order changed slightly. net/ipv4/tcp_output.c: tcp_snd_test | -89 tcp_mss_split_point | -91 tcp_may_send_now | +53 tcp_cwnd_validate | -98 tso_fragment | -239 __tcp_push_pending_frames | -1340 tcp_push_one | -146 7 functions changed, 53 bytes added, 2003 bytes removed, diff: -1950 net/ipv4/tcp_output.c: tcp_write_xmit | +1772 1 function changed, 1772 bytes added, diff: +1772 tcp_output.o.new: 8 functions changed, 1825 bytes added, 2003 bytes removed, diff: -178 Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 730c30ec646bd252a9448a66ecd51d794853513f Merge: 726e07a8a38168266ac95d87736f9501a2d9e7b2 0a0755c9fe47dc9f8271935909c66096e43efbfe Author: David S. Miller Date: Fri Dec 5 22:54:40 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/wireless/iwlwifi/iwl-core.c drivers/net/wireless/iwlwifi/iwl-sta.c commit 726e07a8a38168266ac95d87736f9501a2d9e7b2 Author: Ilpo Järvinen Date: Fri Dec 5 22:43:56 2008 -0800 tcp: move some parts from tcp_write_xmit Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 41834b7332a1ad3f7b6e8bbd83e6ce63586f0b07 Author: Ilpo Järvinen Date: Fri Dec 5 22:43:26 2008 -0800 tcp: share code through function, not through copy-paste. :-) Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit ee6aac59505bcae5de1422c76956de62ac22170d Author: Ilpo Järvinen Date: Fri Dec 5 22:43:08 2008 -0800 tcp: drop tcp_bound_rto, merge content of it tcp_set_rto Both are called by the same sites. Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 50133161a83c9e5974d430cabd77d6430ca7d579 Author: Ilpo Järvinen Date: Fri Dec 5 22:42:41 2008 -0800 tcp: no need to pass prev skb around, reduces arg pressure Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit a1197f5a6faa23e5d0c1f8ed97b011deb2a75457 Author: Ilpo Järvinen Date: Fri Dec 5 22:42:22 2008 -0800 tcp: introduce struct tcp_sacktag_state to reduce arg pressure There are just too many args to some sacktag functions. This idea was first proposed by David S. Miller around a year ago, and the current situation is much worse that what it was back then. tcp_sacktag_one can be made a bit simpler by returning the new sacked (it can be achieved with a single variable though the previous code "caching" sacked into a local variable and therefore it is not exactly equal but the results will be the same). codiff on x86_64 tcp_sacktag_one | -15 tcp_shifted_skb | -50 tcp_match_skb_to_sack | -1 tcp_sacktag_walk | -64 tcp_sacktag_write_queue | -59 tcp_urg | +1 tcp_event_data_recv | -1 7 functions changed, 1 bytes added, 190 bytes removed, diff: -189 Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 775ffabf77a648d78fe1d20cb3a620e771abb921 Author: Ilpo Järvinen Date: Fri Dec 5 22:41:26 2008 -0800 tcp: make mtu probe failure to not break gso'ed skbs unnecessarily I noticed that since skb->len has nothing to do with actual segment length with gso, we need to figure it out separately, reuse a function from the recent shifting stuff (generalize it). Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 9969ca5f205988fb96461075cb4914c55cf166b5 Author: Ilpo Järvinen Date: Fri Dec 5 22:41:06 2008 -0800 tcp: Fix thinko making the not-shiftable to cover S|R as well S|R won't result in S if just SACK is received. DSACK is another story (but it is covered correctly already). Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit f0bc52f38b09308fca85f3aa9300a341364fe9c6 Author: Ilpo Järvinen Date: Fri Dec 5 22:40:47 2008 -0800 tcp: force mss equality with the next skb too. Also make if-goto forest nicer looking. Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 61c1d052a3c7d5acba3bd535aaffa5bb5d085181 Author: Ilpo Järvinen Date: Fri Dec 5 22:39:49 2008 -0800 dccp: use roundup instead of opencoding Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit d2b88814c6a63e4018cd299826907a12068ffdb7 Author: Alan Cox Date: Fri Dec 5 22:32:22 2008 -0800 tty: driverdata and discdata are void * Remove all the extra casting while we are cleaning up Signed-off-by: Alan Cox Signed-off-by: David S. Miller commit 8a1ec21e6c856b996cffcd4b33f037f6748a3ab4 Author: Alan Cox Date: Fri Dec 5 22:31:52 2008 -0800 tty: Flags should be accessed via the foo_bit interfaces We have various drivers that poke around directly and we need to clean this up before it causes problems. Signed-off-by: Alan Cox Signed-off-by: David S. Miller commit 098401a600b6344771900fe164c5eafb668ce99c Merge: cb7b48f671f9c7582993a6c0ff6e989078048561 c112d0c5b89037dd618083b5fdf4bb36b0c51d77 Author: David S. Miller Date: Fri Dec 5 22:23:34 2008 -0800 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 commit cb7b48f671f9c7582993a6c0ff6e989078048561 Author: Alexander Duyck Date: Fri Dec 5 15:08:03 2008 -0800 igb/e1000e: Naming interrupt vectors Change interrupt vector naming to match recent changes from Robert Olsson. Signed-off-by: Alexander Duyck Acked-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 1c721940ddd6496508f1f2fde5167b1c898b419b Author: Stefan Roscher Date: Fri Dec 5 11:25:38 2008 -0800 IB/ehca: Replace modulus operations in flush error completion path With the latest flush error completion patch we introduced modulus operation to calculate the next index within a qmap. Based on comments from other mailing lists we decided to optimize this operation by using an addition and an if-statement instead of modulus, even though this is on the error path. Signed-off-by: Stefan Roscher Signed-off-by: Roland Dreier commit 3d0890985ac4dff781b7feba19fedda547314749 Author: Dave Olson Date: Fri Dec 5 11:14:38 2008 -0800 IB/ipath: Add locking for interrupt use of ipath_pd contexts vs free Fixes timing race resulting in panic. Not a performance sensitive path. Signed-off-by: Dave Olson Signed-off-by: Roland Dreier commit 1bf7724e093cf3071d943d53bfa4de8b8e50426b Author: Dave Olson Date: Fri Dec 5 11:13:19 2008 -0800 IB/ipath: Fix spi_pioindex value ipath_piobufbase was a single value offset, but is multiple values on newer chips, so use only the 32 bits for the 2K buffers (4K buffers are currently used only by the driver). Signed-off-by: Dave Olson Signed-off-by: Roland Dreier commit 6114d4cd313acbb6e9935c2bee77e368d10c4f04 Author: Dave Olson Date: Fri Dec 5 11:13:19 2008 -0800 IB/ipath: Only do 1X workaround on rev1 chips Signed-off-by: Dave Olson Signed-off-by: Roland Dreier commit 60e845035a066e81af1a29047530088d59150d8b Author: Dave Olson Date: Fri Dec 5 11:13:19 2008 -0800 IB/ipath: Don't count IB symbol and link errors unless link is UP Implement the ignoring of ibsymbol errors and linkrecover errors while the link is at less than INIT (long needed), to get accurate counts. Particularly an issue when doing non-IBTA DDR negotiation with chips from vendors that do not support IBTA mode negotiation. If the driver is unloaded, and there is a delta, the adjusted counters are written back to the chip, so they stay adjusted across driver reload. Signed-off-by: Dave Olson Signed-off-by: Roland Dreier commit 890fccb2427d53b48ab9d009fd87d55bcb173f62 Author: Ralph Campbell Date: Fri Dec 5 11:13:18 2008 -0800 IB/ipath: Check return value of dma_map_single() This fixes an obvious oversight where the return value is not checked for error. Signed-off-by: Ralph Campbell Signed-off-by: Roland Dreier commit fab01fc56063dafcc083f481ac0f9e6b5a576dd6 Author: Ralph Campbell Date: Fri Dec 5 11:13:18 2008 -0800 IB/ipath: Fix PSN of send WQEs after an RDMA read resend The PSN of the first packet after an RDMA read is based on the size of the RDMA read request. This is calculated correctly for the WQE sent after the first request message but not on subsequent requests if the RDMA read is resent. Signed-off-by: Ralph Campbell Signed-off-by: Roland Dreier commit 6098d107499e1335f899bfcb558253fb7ee4f73f Author: Chien Tung Date: Fri Nov 21 20:51:01 2008 -0600 RDMA/nes: Cleanup warnings Wrap NES_DEBUG and assert macros with do while (0) to avoid ambiguous else. No one is using sk_buff * returned from form_cm_frame(), so drop the return. drop_packet() should not be incrementing reset counter on receiving a FIN. Signed-off-by: Chien Tung Signed-off-by: Roland Dreier commit 1ee86555b2ad4d16a3c18253b7e4d70d34eb94f3 Author: Chien Tung Date: Fri Nov 21 20:51:04 2008 -0600 RDMA/nes: Add loopback check to make_cm_node() Check for loopback connection in make_cm_node(). Signed-off-by: Chien Tung Signed-off-by: Roland Dreier commit f3181a10e13ac55e18958d7c48cba6f925c71483 Author: Faisal Latif Date: Fri Nov 21 20:50:55 2008 -0600 RDMA/nes: Check cqp_avail_reqs is empty after locking the list Between the first empty list check and locking the list, the list can change. Check it again after it is locked to make sure the list is still not empty. Signed-off-by: Faisal Latif Signed-off-by: Chien Tung Signed-off-by: Roland Dreier commit abb77256761bc3ee7a21cc28f6f12a938964e83f Author: Faisal Latif Date: Fri Nov 21 20:50:52 2008 -0600 RDMA/nes: Fix TCP compliance test failures ANVL testing showed we are not handling all cm_node states during connection establishment. Add missing state handlers and fix sequence number send reset in handle_tcp_options(). Signed-off-by: Faisal Latif Signed-off-by: Chien Tung Signed-off-by: Roland Dreier commit 4a14f6a79f5110c6033f0c61d77d07c449c2d083 Author: Faisal Latif Date: Fri Nov 21 20:50:49 2008 -0600 RDMA/nes: Forward packets for a new connection with stale APBVT entry Under heavy traffic, there is a small windows when an APBVT entry is not yet removed and a new connection is established. Packets for the new connection are dropped until APBVT entry is removed. This patch will forward the packets instead of dropping them. Signed-off-by: Faisal Latif Signed-off-by: Chien Tung Signed-off-by: Roland Dreier commit 183ecfa3091cd4cdda329a7fe89d9544088f517d Author: Faisal Latif Date: Fri Nov 21 20:50:46 2008 -0600 RDMA/nes: Avoid race between MPA request and reset event to rdma_cm In passive open, after indicating MPA request to rdma_cm, an incoming RST would fire a reset event to rdma_cm causing it to crash, since the current state is not connected. The solution is to wait for nes_accept() or nes_reject() before firing the reset event. If nes_accept() or nes_reject() is already done, then the reset event will be fired when RST is processed. Signed-off-by: Faisal Latif Signed-off-by: Chien Tung Signed-off-by: Roland Dreier commit 879e5bd5a1a0a317fb67fa4dc550db092a7bdcb0 Author: Faisal Latif Date: Fri Nov 21 20:50:41 2008 -0600 RDMA/nes: Lock down connected_nodes list while processing it While processing connected_nodes list, we would release the lock when we need to send reset to remote partner. That created a window where the list can be modified. Change this into a two step process: place nodes that need processing on a local list then process the local list. Signed-off-by: Faisal Latif Signed-off-by: Chien Tung Signed-off-by: Roland Dreier commit c5d321e5c924384cf5b35f6288d69e9237490565 Author: Faisal Latif Date: Fri Nov 21 20:50:38 2008 -0600 RDMA/nes: Cleanup cqp_request list usage Use nes_free_cqp_request() instead of open coding. Change some continue to break in nes_cm_timer_tick, because send_entry used to be a list processed in a loop (so continue went to the next item). Now it is a single item, so using break is correct. Signed-off-by: Faisal Latif Signed-off-by: Chien Tung Signed-off-by: Roland Dreier commit abf681ce5b6f83f0b8883e0f2c12d197a38543dd Author: Robert P. J. Day Date: Mon Feb 18 14:34:46 2008 -0500 kbuild: remove TAR_IGNORE Given that there is no usage of a TAR_IGNORE variable remove it Signed-off-by: Robert P. J. Day Signed-off-by: Sam Ravnborg commit 28a1d869560a49d960ba2a3b450ec965712e5560 Author: Daniel Mack Date: Fri Dec 5 17:31:00 2008 +0100 ASoC: tlv320aic3x: control additions and cleanups - split "Line Playback Switch" into "LineL Playback Switch" and "LineR Playback Switch" - split "Line PGA Bypass Playback Volume" into "LineL Left PGA Bypass Playback Volume" and "LineR Right PGA Bypass Playback Volume" - split "Line Line2 Bypass Playback Volume" into "LineL Line2 Bypass Playback Volume" and "LineR Line2 Bypass Playback Volume" - Added "HP Right PGA Bypass Playback Volume" Signed-off-by: Daniel Mack Signed-off-by: Mark Brown commit 68fb740774a429ecbccd4d8b3287cf4883ad3ec2 Author: Grazvydas Ignotas Date: Thu Dec 4 22:39:54 2008 +0200 ASoC: Add support for OMAP3 Pandora This patch adds basic support for OMAP3 Pandora. Signed-off-by: Grazvydas Ignotas Signed-off-by: Mark Brown commit c112d0c5b89037dd618083b5fdf4bb36b0c51d77 Author: Luis R. Rodriguez Date: Wed Dec 3 03:35:30 2008 -0800 ath9k: Use GFP_ATOMIC when allocating TX private area Using GFP_KERNEL was wrong and produces a 'scheduling while atomic' bug as we're in a tasklet. Also, check for proper return values now, in case allocation fails and be sure to stop the TX queue in case of memory issues but gaurantee the TX queue will eventually be woken up. Signed-off-by: Senthil Balasubramanian Signed-off-by: Sujith Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit f8316df10c4e3bec5b4c3a5a8e026c577640c3a6 Author: Luis R. Rodriguez Date: Wed Dec 3 03:35:29 2008 -0800 ath9k: Check for pci_map_single() errors pci_map_single() can fail so detect those errors with pci_dma_mapping_error() and deal with them accordingly. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit 73a5267087b5acd4a4288e0a1b809f09ca578d49 Author: Ivo van Doorn Date: Wed Dec 3 17:30:22 2008 +0100 rt2x00: Correctly initialize AID during set_key() Request the AID from hardware and provide this id to the driver (in case they need it). Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 9c3444d33e65ade06af82d19522686c1873b953a Author: Ivo van Doorn Date: Wed Dec 3 17:29:48 2008 +0100 rt2x00: Move crypto TX descriptor handling to rt2x00crypto.c Move all code which determines the right TX descriptor fields specific to crypto support into rt2x00crypto.c. This makes the code in rt2x00queue more simpler and better concentrates all crypto code into a single location. With this we can also remove some ifdefs in rt2x00queue.c since the code inside the ifdef is either very small, or only calling empty functions (see empty function definitions in rt2x00lib.h). Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 1c02667db5eae801b8fc279fdfa618164c0efb6e Author: Ivo van Doorn Date: Wed Dec 3 17:29:21 2008 +0100 rt2x00: Fix check for BSS info changes Fix ERP configuration, due to a too strict changes flags checking we never updated the short slot time or basic rate mask when no other changes were made at the same time. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 4c7f0bc266ccccfb0ca397405af13ee3d9e0f6b2 Author: Wu Fengguang Date: Wed Dec 3 00:19:04 2008 -0800 generic swap(): ath9k: rename swap() to swap_array() In preparation for the introduction of a generic swap() macro. Signed-off-by: Wu Fengguang Cc: Sujith Manoharan Cc: Luis R. Rodriguez Cc: Vasanthakumar Thiagarajan Cc: Senthil Balasubramanian Cc: Jouni Malinen Signed-off-by: Andrew Morton Signed-off-by: John W. Linville commit 74415edb042ef9f3b1291f978763687f35aadbb3 Author: Ivo van Doorn Date: Tue Dec 2 22:50:33 2008 +0100 rt2x00: Add RXDONE_CRYPTO_IV/ICV flags Drivers should notify rt2x00lib when they provide the IV/ICV data. This adds some flexibility to drivers which can't provide all information. * rt2500usb provides ICV inside the frame * rt2800pci doesn't provide IV/ICV * rt2800usb doesn't provide IV/ICV Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 011a03300bdd60782f465b97c3aefd58bfaae316 Author: Abhijeet Kolekar Date: Tue Dec 2 12:14:07 2008 -0800 iwl3945 : Fix a-band association for passive channels Patch does following things 1) This patch fixes the a-band association for passive channels with new uCode feature that it allows direct scan on passive channels after auto-switch from passive to active. This enables sending of direct probes on passive channels, as long as some traffic is detected on that channel. This improves the scanning for hidden SSIDs in A-band,which is all passive channels. This patch fixes the bug no 1748. http://www.intellinuxwireless.org/bugzilla/show_bug.cgi?id=1748 2) This fix will only work with uCode version 15.28.2.8 and above. Prior versions of uCode would work only if we heard the traffic within active dwell time, which is much shorter than passive dwell time and is shorter than typical beacon periods. This patch also provids full active dwell time even if we hear traffic late in passive dwell. 3) uCode API version is incremented to 2. Signed-off-by: Abhijeet Kolekar Signed-off-by: Zhu Yi Acked-by: Ben Cahill Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit a0987a8d68c86562f267efa97be01314c490c496 Author: Reinette Chatre Date: Tue Dec 2 12:14:06 2008 -0800 iwlwifi: rely on API version read from firmware This adds the infrastructure to support older firmware APIs. The API version number is stored as part of the filename, we first try to load the most recent firmware and progressively try lower versions. The API version is also read from the firmware self and stored as part of the iwl_priv structure. Only firmware that is supported by driver will be loaded. The version number read from firmware is compared to supported versions in the driver not the API version used as part of filename. An example using this new infrastrucure: if (IWL_UCODE_API(priv->ucode_ver) >= 2) { Driver interacts with Firmware API version >= 2. } else { Driver interacts with Firmware API version 1. } Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit c02b3acd29766c6f79c2411cb5b85e1ee72c4c8f Author: Chatre, Reinette Date: Tue Dec 2 12:14:05 2008 -0800 iwlwifi: store ucode version number We store the ucode version number as part of iwl_priv/iwl3945_priv. This enables us to determine if particular ucode has support for features in order to have driver support more than one ucode API. Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit f3f911d1773d31f11038d90b04244bc3986c4ccd Author: Zhu Yi Date: Tue Dec 2 12:14:04 2008 -0800 iwlwifi: fix DMA channel number in iwl_txq_ctx_stop The patch fixes the misuse of DMA channel number by Tx queue number in iwl_tx_ctx_stop(). The problem was originally reported by Wu Fengguang who complains iwlagn driver takes too long time when issuing `ifconfig wlan0 down`. The patch now decreases the interface bring down time from 2 seconds to 0.8 second. This fixes bugs: http://bugzilla.kernel.org/show_bug.cgi?id=11956 http://www.intellinuxwireless.org/bugzilla/show_bug.cgi?id=1790 Signed-off-by: Zhu Yi Tested-by: Fengguang Wu Acked-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 74221d07408c473721cce853ef4e0e66c0b326ba Author: Abbas, Mohamed Date: Tue Dec 2 12:14:03 2008 -0800 iwl3945: Fix iwl3945 rate scaling. 3945 rate scaling was broken in recent tree. This patch fix the following: 1- Get TX response info and update rates window. 2- Rate scaling selection. 3- Flush window timer. Signed-off-by: Mohamed Abbas Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit c30e30e17dad86d5e161cf9774eb4d549cc13191 Author: Abbas, Mohamed Date: Tue Dec 2 12:14:02 2008 -0800 iwl3945: add debugfs support Add debugfs support to 3945 driver to display rs info. Signed-off-by: Mohamed Abbas Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit d366df5abb8d5ce7e2c36d3b678177787ccd9749 Author: Winkler, Tomas Date: Tue Dec 2 12:14:01 2008 -0800 iwlwifi: move channels sysfs to debugfs This patch moves channels info display from sysfs to debugfs. This shows channel information as stored in NIC EEPROM. This is useful in debugging CRDA or iwl goes setting so it belongs rather to debugfs then to sysfs. Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 0ad91a35bcb6dd993ad7d34f159afae929b4743d Author: Winkler, Tomas Date: Tue Dec 2 12:14:00 2008 -0800 iwlwifi: move disable/enable interrupts to iwl-core.c This patch moves iwl_enable_interrupts and iwl_disable_interrupts functions to iwl-core.c Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit c93007efaad0a90520ba73f025c663441bf7e9d6 Author: Samuel Ortiz Date: Tue Dec 2 12:13:59 2008 -0800 iwl3945: Select correct sta ID from find_station() The find_station routine needs to look at the IWL_AP_ID entry if we're a STA. Currently, it only looks for STA entries which causes HW crypto to fail. Signed-off-by: Samuel Ortiz Acked-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 99df630c3453e4a66b3408212dd8e55bc0e04f54 Author: Zhu Yi Date: Tue Dec 2 12:13:58 2008 -0800 iwlwifi: fix printk size format error The patch fixes a printk size format error. Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit 8f5c87dcf6d1a5e6d7ffe642cfd4debb5ccbec49 Author: Winkler, Tomas Date: Tue Dec 2 12:13:57 2008 -0800 iwlwifi: move host command check function into separate file This patch moves iwl_check_rxon_cmd into iwl-agn-hcmd-check.c This function compiled out in none debugging or non development mode and more. We haven't decided which one yet hence preserving the current 'always compile' state. More functions will be added to the file namely for checking TX and LQ commands. Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 304a698a5819bf318fe7e6ea9fe7ff2560365ec2 Author: Ivo van Doorn Date: Tue Dec 2 18:20:59 2008 +0100 rt2x00: Release rt2x00 2.2.3 Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit dddfb478b26e29a2b47f655ec219e743b8111015 Author: Ivo van Doorn Date: Tue Dec 2 18:20:42 2008 +0100 rt2x00: Implement HW encryption (rt2500usb) rt2500usb supports hardware encryption. rt2500usb supports up to 4 shared and pairwise keys. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 0b927a079106e5f66c736e297370d3feb008e28e Author: Ivo van Doorn Date: Tue Dec 2 18:20:22 2008 +0100 rt2x00: Remove duplicate code Simplify rt2x00lib_config_antenna() by moving duplicate code into a seperate static inlined function. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 42c8285767dd17f450d986bdb163a8d56fb0330a Author: Ivo van Doorn Date: Tue Dec 2 18:20:04 2008 +0100 rt2x00: Store retry limit values Store retry limit values in the rt2x00dev structure. This allows the removal of the FIXME where we assumed the long retry is only used when working with RTS frames. Instead we should check the current retry limit values and decide if the required retry count for this frame is a long or short retry. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 1ce9cdac482f0dfbbd22ba4b3e5c016a05543a42 Author: Ivo van Doorn Date: Tue Dec 2 18:19:48 2008 +0100 rt2x00: Optimize IV/EIV handling IV and EIV belong to eachother and don't require 2 seperate fields. Instead they can logically be merged into a single array with size 2. With this approach we can simplify the code in rt2x00crypto.c by using a single memcpy() when copying the iv/eiv data. Additionally we can move some code out of if-statements because the if-statement would always be true. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit aac9207e45b1ec1f36d67e57d94f59ac036d37ee Author: Sujith Date: Tue Dec 2 18:37:54 2008 +0530 ath9k: Choose correct ANI calibration period ANI can't be turned on/off dynamically yet, but the calculation of the calibration period is wrong anyway. This patch fixes it. Reported-by: Johannes Berg Signed-off-by: Sujith Signed-off-by: John W. Linville commit 7470d7f54064557b6210671c2692bba19af5b79d Author: Winkler, Tomas Date: Mon Dec 1 16:32:22 2008 -0800 iwlwifi: 5150 enable LO, TXIQ and BB calibrations This patch enables LO, TXIQ, and BB calibrations for 5150 Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit fd63edba43c584d334e8fc161ca84e4cf54e26a0 Author: Tomas Winkler Date: Mon Dec 1 16:32:21 2008 -0800 iwlwifi: 5150 parametrize eeprom versions Add support for 5150 eeprom versions Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 339afc893d3c1a36151c7578d7eacd2f4b293d5f Author: Tomas Winkler Date: Mon Dec 1 16:32:20 2008 -0800 iwlwifi: 5150 compute ct kill threshold This patch adds computation of ct kill threshold for 5150. Threshold is computed from calibration data in the EEPROM. Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 819500c5892aeeed079d3ea1671df40f2dd1d417 Author: Tomas Winkler Date: Mon Dec 1 16:32:19 2008 -0800 iwlwifi: 5150 enable DC calibration This patch enables DC calibration for 5150 Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 7100e924661cc23609de8e7ab9fc3a13e0173891 Author: Tomas Winkler Date: Mon Dec 1 16:32:18 2008 -0800 iwlwifi: 5150 add support for 5150 Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit d97809dbbf1b8a6df79c82be75fa0cababec783b Author: Colin McCabe Date: Mon Dec 1 13:38:55 2008 -0800 ath9k: Replace ath9k_opmode with nl80211_iftype This patch kills ath9k's ath9k_opmode enum by replacing it with nl80211_iftype. Signed-off-by: Colin McCabe Signed-off-by: Andrey Yurovsky Signed-off-by: John W. Linville commit 33fd8195529d74c0fe23cddd1c76fe7e03bbd324 Author: Johannes Berg Date: Mon Dec 1 18:50:27 2008 +0100 iwlwifi: disable AP mode iwlwifi does not support AP mode in any way. For one, it doesn't even buffer multicast/broadcast frames properly. We didn't allow zd1211rw AP mode to be enabled without this, so iwlwifi shouldn't be allowed to advertise AP mode either. It also doesn't work at all, it doesn't even answer to probe requests, I'm guessing the packet injection code was disabled again. Signed-off-by: Johannes Berg Acked-by: Reinette Chatre Signed-off-by: John W. Linville commit c91276592695e13d1b52eab572551017cbf96ee7 Author: Johannes Berg Date: Mon Dec 1 18:19:36 2008 +0100 p54: fix lm87 checksum endianness This fixes the checksum calculation for lm87 firmwares on big endian platforms, the device treats the data as an array of 32-bit little endian values so the driver needs to do that as well. Signed-off-by: Johannes Berg Acked-by: Christian Lamparter Signed-off-by: John W. Linville commit 0f70f398460adb2d8aabb00e7e65f58247f219a3 Author: Johannes Berg Date: Mon Dec 1 18:13:05 2008 +0100 cfg80211: "fix" 11d oops This "fixes" the 11d oops I was seeing. This needs some more work but I cannot work on it now. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit c58f9f635afe688c5c5709f441af57c12c7a4856 Author: Helmut Schaa Date: Mon Dec 1 16:53:28 2008 +0100 iwl3945: remove obsolete irq handling 3945 hardware does not emit the interrupts CSR_INT_BIT_RF_KILL (rfkill toggled) and CSR_INT_BIT_CT_KILL (adapter too hot). Hence this part of code can be removed since iwl3945_irq_tasklet does not handle 4965 hw at all. Signed-off-by: Helmut Schaa Signed-off-by: John W. Linville commit 8e7be8da8ec7cc2828f4434d8d3c2ab4d1d4e7a4 Author: Rami Rosen Date: Mon Dec 1 13:56:55 2008 +0200 mac80211: tx module cleanup. This patch removes unnecessary parameter in ieee80211_beacon_add_tim() and removes unneeded definition and assignment for bdev (instance of net_device) in ieee80211_beacon_get() and in ieee80211_get_buffered_bc() (all in tx.c). Signed-off-by: Rami Rosen Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 4a4f4d805db5c930ee4185162dcdc8db9a0379d5 Author: Johannes Berg Date: Mon Dec 1 12:07:56 2008 +0100 cfg80211: fix wiphy remove if no regulatory request Fixes the segfault I just pointed out. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 8bef7a10014c4579c66579ab47fc1bb9563ac42a Author: Kalle Valo Date: Sun Nov 30 20:56:28 2008 +0200 mac80211: document ieee80211_tx_info.pad Fixes htmldocs warning: Warning(mac80211.h:379): No description found for parameter 'pad[2]' Signed-off-by: Kalle Valo Signed-off-by: John W. Linville commit 02e37ba1298359baa123cf71ffa03d92abd259b2 Author: Christian Lamparter Date: Sat Nov 29 22:39:08 2008 +0100 p54: per-device names This patch replaces the static "p54:" strings in front of most printk's with their corresponding per-device names. It was always a bit of a hassle to check which device was generating all the messages. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit b2023ddcfa6b79f26ef459867324f3d32b91aa07 Author: Christian Lamparter Date: Sat Nov 29 22:37:31 2008 +0100 p54: refactoring Thanks to the introduction of "changed" flags, we no longer have to do the bookkeeping of p54's firmware state for everything. Thus we can cut down redundancy code. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 64c354ddcd65c98d9a1e2a8f7fb5cc80c7fa488e Author: Christian Lamparter Date: Sat Nov 29 22:35:43 2008 +0100 p54: include support for 2.13.24.0 USB LM87 Firmwares Those firmwares are probably capable of reprogramming the device's eeprom. We better support them officially, before all the accidents happen. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 25900ef0191af98bbb24d8088c6887af31c1ba27 Author: Christian Lamparter Date: Sat Nov 29 22:34:37 2008 +0100 p54: utilize cryptographic accelerator This patch allows p54 to utilize its WEP, TKIP and CCMP accelerator. Tested-by: Larry Finger Signed-off-by: Christian Lamparter Signed-off-by: Larry Finger Signed-off-by: John W. Linville commit c772a08ba7192fa5450f85ef53adcbc6e0c5e1c9 Author: Christian Lamparter Date: Sat Nov 29 22:33:57 2008 +0100 p54: revamp station power save management in access point mode This patch addresses the problem in: http://marc.info/?l=linux-wireless&m=122727674810057&w=2 Thanks to Stefan Steuerwald extensive iPod touch tests. We could finally squash some bugs in p54's master mode / access point implementation. Let's hope we got everything right this time and all stations from now on will wake up on TIM and receive their queued frames and go to sleep again without any hiccups. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 4571d3bf87b76eae875283ff9f7243984b5ddcae Author: Christian Lamparter Date: Sun Nov 30 00:48:41 2008 +0100 mac80211: add sta_notify_ps callback This patch is necessary in order to provide a proper Access point support for p54. Unfortunately for us, there is no documented way to disable the interfering power save buffering mechanism in firmware completely. Therefore we give in and notify the driver through our new sta_notify_ps callback, so that we can update the filter state. Signed-off-by: Christian Lamparter Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 2a163c6de452c0b321396caceac5d163949b4cf2 Author: Sujith Date: Fri Nov 28 22:21:08 2008 +0530 ath9k: Add a debugfs file for dumping DMA status Debugfs file location: ath9k//dma Contains values in DMA debug registers. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 826d268091f0e0ecc50103f648b6183eb3efe04d Author: Sujith Date: Fri Nov 28 22:20:23 2008 +0530 ath9k: Add initial layout for an ath9k specific debugfs mechanism Signed-off-by: Sujith Signed-off-by: John W. Linville commit 16d68abee5d700bfe09ae8324dbb76028995c589 Author: Sujith Date: Fri Nov 28 22:19:42 2008 +0530 ath9k: Remove includes that are not needed Signed-off-by: Sujith Signed-off-by: John W. Linville commit 88b126af946e7ea789f2a52d9d25aca681f93067 Author: Sujith Date: Fri Nov 28 22:19:02 2008 +0530 ath9k: Add ATH9K_DEBUG configuration option Make debugging configurable, and add a module parameter to give the debug mask. Add debug.c to hold all debug specific code. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 04bd4638097c767278fdf12d50fecc8b60194d39 Author: Sujith Date: Fri Nov 28 22:18:05 2008 +0530 ath9k: Use cleaner debug masks Remove all the useless __func__ prefixes in debug messages, and replace the DPRINTF macro with a function. Signed-off-by: Sujith Signed-off-by: John W. Linville commit d9a1f48648edbe99fa432626ce6964a1b58f7281 Author: herton Date: Thu Nov 27 22:53:24 2008 -0200 rtl8187: fix retry count passed in rtl8187_tx I mistakenly changed retry count passed in rtl8187_tx in previous change "rtl8187: feedback transmitted packets using tx close descriptor for 8187B". For 8187 it should represent the number of retries (retry count limit). As explained by Johannes Berg, .count represents the number of tries (not retries), and retries = tries - 1. Signed-off-by: Herton Ronaldo Krzesinski Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 007e5ddddfed4ba039899754936e89b27d5cb551 Author: Johannes Berg Date: Thu Nov 27 23:13:38 2008 +0100 wireless: clean up radiotap a bit No need to pad the header so no constant needed for that, no need to carry any version number from netbsd nor CVS IDs from them. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit e11602b7813502bf363c40cdb5a8c4b96d4bbc96 Author: Sujith Date: Thu Nov 27 09:46:27 2008 +0530 ath9k: Handle channel initialization for AP mode Hostapd now passes the HT parameters through the config() callback, use these to set the appropriate channel in AP mode. Signed-off-by: Sujith Signed-off-by: John W. Linville commit cb3da8ccc464409e3b947557cdac4cd0b1241c4c Author: Fabio Rossi Date: Wed Nov 26 22:44:23 2008 +0100 mac80211: accept empty strings for hidden SSIDs Some access points (e.g. Sitecom WL-174) use an empty string as hidden SSID. Signed-off-by: Fabio Rossi Signed-off-by: John W. Linville commit e60c7744f8aa77bcbcb0b294596d6c87445d1200 Author: Johannes Berg Date: Wed Nov 26 23:31:40 2008 +0100 cfg80211: handle SIOCGIWMODE/SIOCSIWMODE further reducing wext code in mac80211. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit fee52678dbda2099a25243e79da98dc390e1939a Author: Johannes Berg Date: Wed Nov 26 22:36:31 2008 +0100 cfg80211: handle SIOCGIWNAME This patch moves the SIOCGIWNAME handling from mac80211 to cfg80211. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit f650470a8f506bc33a15778432ebb8cdcf89175b Author: Bob Copeland Date: Wed Nov 26 16:17:25 2008 -0500 ath5k: enable combined michael mic in key cache For mac revisions >= "Griffin," the hardware allows the mic tx and rx authenticator keys to share the same cache line, whereas earlier hardware can only store the rx. Enable the combined mic on hardware that supports it. Changes to ath5k.h Changes-licensed-under: 3-Clause-BSD Changes to attach.c, pcu.c, reg.h Changes-licensed-under: ISC Signed-off-by: Bob Copeland Signed-off-by: John W. Linville commit 671434904633876f89be70af415c35c89fb90115 Author: Bob Copeland Date: Tue Nov 25 20:55:21 2008 -0500 ath5k: clean up ath5k_hw_set_key Status: O With the addition of TKIP (and soon CCMP), key->alg is a more useful guide to key type than the key length. This patch cleans up key type assignment in ath5k_hw_set_key by extracting it into its own function. It also replaces the separate memcpy() calls for extracting key material into the hardware format with a loop that works regardless of key size. Finally, the patch removes support for WEP-128 since it is a non-standard key length that mac80211 also doesn't use. Changes-licensed-under: ISC Signed-off-by: Bob Copeland Signed-off-by: John W. Linville commit f6bac3ea5990653765700b2c3778b08782abebe5 Author: Bob Copeland Date: Wed Nov 26 16:17:11 2008 -0500 ath5k: preserve higher order bits when setting mac address In some cases we would like to set the mac address without changing the operating mode. However, Atheros cards store PCU data in the high 16 bits of the mac address register. Change ath5k_hw_set_lladdr() to not clobber the PCU settings. Changes-licensed-under: ISC Signed-off-by: Bob Copeland Signed-off-by: John W. Linville commit 51e9bf5d795b8e01e54391f1790974c7b166d286 Author: Harvey Harrison Date: Wed Nov 26 13:12:52 2008 -0800 iwlwifi: remove uses of __constant_{endian} helpers The base versions handle constant folding just fine. Signed-off-by: Harvey Harrison Signed-off-by: John W. Linville commit 10ec4f1d0851eb97cd53db66150835dd7f64829d Author: Luis R. Rodriguez Date: Wed Nov 26 13:03:08 2008 -0800 nl80211: relicense nl80211.h under the ISC We have a few BSD/ISC licensed userspace applications which include nl80211.h from the kernel. To avoid legal ambiguity for usage of the header file in these projects we rather simply relicense the header file under the ISC. We've received consent from all contributors to it. Signed-off-by: Luis R. Rodriguez Acked-by: Johannes Berg Acked-by: Michael Wu Acked-by: Luis Carlos Cobo Acked-by: Michael Buesch Acked-by: Jouni Malinen Acked-by: Colin McCabe Acked-by: Javier Cardona Cc: johannes@sipsolutions.net Cc: altape@eden.rutgers.edu Cc: luisca@cozybit.com Cc: mb@bu3sch.de Cc: jouni.malinen@atheros.com Cc: colin@cozybit.com Cc: javier@cozybit.com Signed-off-by: John W. Linville commit 72bdcf34380917260da41e3c49e10edee04bc5cd Author: Jouni Malinen Date: Wed Nov 26 16:15:24 2008 +0200 nl80211: Add frequency configuration (including HT40) This patch adds new NL80211_CMD_SET_WIPHY attributes NL80211_ATTR_WIPHY_FREQ and NL80211_ATTR_WIPHY_SEC_CHAN_OFFSET to allow userspace to set the operating channel (e.g., hostapd for AP mode). Signed-off-by: Jouni Malinen Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 72eaa43a532b4156966444779829a986a4432f11 Author: Johannes Berg Date: Wed Nov 26 15:02:58 2008 +0100 mac80211: only transition STAs ps->wake on data frames When a station goes to PS mode to scan, it will then send probe requests without the PS bit set. mac80211 will take that as indication that the station woke up, but it didn't. This patch changes mac80211 to only consider doze->wake transitions on data frames to to fix that issue. Signed-off-by: Johannes Berg Cc: Jouni Malinen Signed-off-by: John W. Linville commit 0d950d84d9d16f7d4edf380a238c5b534ff00d11 Author: Tomas Winkler Date: Tue Nov 25 13:36:01 2008 -0800 iwlwifi: properly initialize calibration command header Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 8e268e47b8ca5bddd189320884c3cc7d9ae489f4 Author: Tomas Winkler Date: Tue Nov 25 13:05:44 2008 +0200 mac80211: disassociate prior to unlinking AP/station This patch reorders calls during disassociation in ieee80211_set_disassoc function. Since sta_info_unlink calls sta_notify(REMOVE) it will remove the station representing AP from the driver before it has disassociated from it using bss_info_changed callback. Signed-off-by: Tomas Winkler Signed-off-by: John W. Linville commit e327b847e67051ece8d121f9aebeb4d736c36a02 Author: John W. Linville Date: Mon Dec 1 14:56:41 2008 -0500 mac80211: deauth when interface is marked down It seems like proper etiquette to let other stations know when we are going down in either STA or IBSS mode. This also notifies userland, so wpa_supplicant doesn't get confused. Signed-off-by: John W. Linville commit 04adf890667050b83a58abaf63610e53a604261b Author: John W. Linville Date: Wed Dec 3 13:55:38 2008 -0500 hostap: select required crypto bits in Kconfig This is fallout from moving the crypto stuff to the new lib80211 component. Signed-off-by: John W. Linville commit 21bbecdaaef3a6acc19905ab88c0587817318870 Author: Steven Rostedt Date: Thu Dec 4 23:30:56 2008 -0500 ftrace: use init_struct_pid as swapper pid Impact: clean up Using (struct pid *)-1 as the pointer for ftrace_swapper_pid is a little confusing for others. This patch uses the address of the actual init pid structure instead. This change is only for clarity. It does not affect the code itself. Hopefully soon the swapper tasks will all have their own pid structure and then we can clean up the code a bit more. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 21a8c466f99063eeb8567318b4e305eda9015408 Author: Frederic Weisbecker Date: Thu Dec 4 23:51:23 2008 +0100 tracing/ftrace: provide the macro task_curr_ret_stack() Impact: cleanup As suggested by Steven Rostedt, this patch provide a new macro task_curr_ret_stack() to move the cpp conditionnal CONFIG into the linux/ftrace.h headers. Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 77d683f3e0258d522c5506e7b5fd05c9411184d9 Author: Frederic Weisbecker Date: Thu Dec 4 23:49:47 2008 +0100 tracing/ftrace: fix the check of ftrace_trace_task Impact: fix default empty traces on function-graph-tracer The actual ftrace_trace_task() checks if ftrace_pid_trace is allocated and return 1 if it is true. If it is NULL, it will check the bit of pid tracing flag for the current task (which are not set by default). So by default, a task is not traced. Actually all tasks should be traced by default and filter_by_pid when ftrace_pid_trace is allocated. The appropriate condition should be to return 1 if filter_by_pid is set. Signed-off-by: Frederic Weisbecker Acke-dby: Steven Rostedt Signed-off-by: Ingo Molnar commit ff32504fdc56407654584ef187b20022c94a3486 Author: Frederic Weisbecker Date: Thu Dec 4 23:47:35 2008 +0100 tracing/ftrace: don't insert TRACE_PRINT during selftests Impact: fix tracer selfstests false results After setting a ftrace_printk somewhere in th kernel, I saw the Function tracer selftest failing. When a selftest occurs, the ring buffer is lurked to see if some entries were inserted. But concurrent insertion such as ftrace_printk could occured at the same time and could give false positive or negative results. This patch prevent prevent from TRACE_PRINT entries insertion during selftests. Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 970987beb9c99ca806edc464518d411cc399fb4d Merge: faec2ec505d397e9426754722b6e80d519c4938f 1fd8f2a3f9a91b287a876cef830b21baafc8a799 feaf3848a813a106f163013af6fcf6c4bfec92d9 Author: Ingo Molnar Date: Fri Dec 5 14:45:22 2008 +0100 Merge branches 'tracing/ftrace', 'tracing/function-graph-tracer' and 'tracing/urgent' into tracing/core commit a0286c94f07636380082608196d41dd725a83229 Author: Michael Tokarev Date: Fri Dec 5 15:47:29 2008 +0300 x86: fix missing space in printk, #2 Impact: clean up printk Signed-off-by: Michael Tokarev Signed-off-by: Ingo Molnar commit 12dde4c6d6e9092cf63094e84dc1fe4e505dd6d0 Author: Takashi Iwai Date: Fri Dec 5 13:09:27 2008 +0100 ALSA: hda - Proper power-map toggling for input pins The current code overrides the event type on input pins always to PWR_EVENT. Although this still works (PWR_EVENT and INSERT_EVENT are handled samely), it'd be better to avoid such overrides. Also, currently the unsol events are registered even for fixed pins which will never raise the pin-detection event. This patch fixes both issues. Signed-off-by: Takashi Iwai commit 55c395b47042e12d5c25aa07f271f56ffe44f793 Author: Michael Tokarev Date: Fri Dec 5 14:42:20 2008 +0300 x86: fix missing space in printk Just come across this when booting on an old hw.. Looks somewhat ugly, that single missing space ;) Signed-off-by: Michael Tokarev Signed-off-by: Ingo Molnar commit e6e3ea25b1679b55728a8a470a50a8fff61e8a45 Author: Takashi Iwai Date: Fri Dec 5 12:54:56 2008 +0100 ALSA: hda - Fix pin-detection in patch_sigmatel.c The pin-detection function used in patch_sigmatel.c shouldn't be specific to HP pin because it's used for input pins in general, too. This patch fixes the detection function, removes the HP check from it and moves to stac92xx_hp_detect(). Signed-off-by: Takashi Iwai commit e061b165c7f4ec5e2e160d990b49011b5b6e5c6a Author: Martin Willi Date: Thu Dec 4 15:40:17 2008 -0800 xfrm: Accept ESP packets regardless of UDP encapsulation mode From: Martin Willi An IPsec node speaking IKEv2 MUST accept incoming UDP encapsulated ESP packets, even if no NAT situation is detected. This is important if MOBIKE is in use. Some implementation keep the encapsulation mode if they move out of a NAT situation. Signed-off-by: David S. Miller commit 3f9b766ca7c4654d41f4f21357031c1c1e7de29e Author: Wang Chen Date: Thu Dec 4 15:12:20 2008 -0800 sgi-xp: Kill directly reference of netdev->priv Simply replace netdev->priv with netdev_priv(). [ Kill unnecessary casts, noticed by Ilpo -DaveM ] Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 17c324fa80914e5b39d423dfd1a3cd61a3ec9866 Author: Wang Chen Date: Thu Dec 4 15:07:33 2008 -0800 um: Kill directly reference of netdev->priv Simply replace netdev->priv with netdev_priv(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 6cbeba55c5cbd042040d6114471637e8b10d4a6b Author: Wang Chen Date: Thu Dec 4 15:06:56 2008 -0800 xtensa: Kill directly reference of netdev->priv Simply replace netdev->priv with netdev_priv(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 28945dd4fba8dcbc1c74ea702b731caaedae6ccb Author: Wang Chen Date: Thu Dec 4 15:06:27 2008 -0800 simeth: Kill directly reference of netdev->priv Simply replace netdev->priv with netdev_priv(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 5da95273c2e63c9607652b5e8dd39808b6992d7c Author: Takashi Iwai Date: Mon Nov 24 14:06:08 2008 +0100 ALSA: ca0106 - Add power-management support Added the missing PM support for snd-ca0106 driver. Signed-off-by: Takashi Iwai commit 84d727a109081684c2e01b811cb0d6dc3b9380ca Author: Benjamin Herrenschmidt Date: Thu Oct 9 16:58:19 2008 +0000 powerpc/4xx: Add support for ISA holes on 4xx PCI/X/E This adds support for ISA memory holes on the PCI, PCI-X and PCI-E busses of the 4xx platforms. The patch includes changes to the Bamboo and Canyonlands device-trees to add such a hole, others can be updated separately. The ISA memory hole is an additional outbound window configured in the bridge to generate PCI cycles in the low memory addresses, thus allowing to access things such as the hard-decoded VGA aperture at 0xa0000..0xbffff or other similar things. It's made accessible to userspace via the new legacy_mem file in sysfs for which support was added by a previous patch. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Josh Boyer commit 9d2421e8345602675132421fdaf4179af4705f5c Author: Stephen Rothwell Date: Sun Nov 23 18:33:05 2008 +0000 powerpc/44x: update ppc44x_defconfig This removes CONFIG_PCI_LEGACY (which is not needed) and consequently several compiler warnings. Signed-off-by: Stephen Rothwell Signed-off-by: Josh Boyer commit 23f402c011b30f981a64c3752fca96cbac2cfd3d Author: Hollis Blanchard Date: Mon Nov 10 14:58:28 2008 -0600 powerpc/kvm: update KVM config options in ppc44x_defconfig KVM host support was recently enabled in ppc44x_defconfig, but since then the config option was renamed. Update ppc44x_defconfig to match. Also, KVM guests aren't very interesting without networking, so enable CONFIG_TUN and CONFIG_BRIDGE. Signed-off-by: Hollis Blanchard Signed-off-by: Josh Boyer commit 32c8dabc97d436582298ebd0e33af041c69f5a4b Author: Mark Brown Date: Wed Dec 3 19:41:13 2008 +0000 ASoC: Remove obsolete declaration of struct snd_soc_clock_info The struct is never defined. Signed-off-by: Mark Brown commit affa219b60a11b3295637a97f5b1b8ef231490fc Author: Joe Korty Date: Wed Dec 3 18:58:19 2008 -0500 x86: change thread_info's flag field back to 32 bits Impact: pack struct thread_info more tightly Change x86_64's thread_info 'flags' field back to __u32. This was changed to 'unsigned long' when the thread_info*.h for i386 and x86_64 were merged. Change it back. We can do this as only 27 bits of 'flags' are actually used. This change actually packs down thread_info by 64 bits: 32 bits are saved by the smaller flags, and 32 bits are saved by the following 'mm_segment_t field' becoming naturally 64-bit aligned. Signed-off-by: Joe Korty Signed-off-by: Ingo Molnar commit c0515566f3117c44b0572559bcc3cb00899b0910 Merge: 4385cecf1f5866fb33fc95e2ee26a44e9b6f6be2 061e41fdb5047b1fb161e89664057835935ca1d2 Author: Ingo Molnar Date: Thu Dec 4 11:05:26 2008 +0100 Merge commit 'v2.6.28-rc7' into x86/cleanups commit 4e7c4d7b6d980264194c2aecbbb1e1e4c7302b63 Author: Takashi Iwai Date: Thu Dec 4 10:25:37 2008 +0100 ALSA: hda - Add reference to HD-Audio.txt in ALSA-Configuration.txt Signed-off-by: Takashi Iwai commit 1fd8f2a3f9a91b287a876cef830b21baafc8a799 Author: Frederic Weisbecker Date: Wed Dec 3 23:45:11 2008 +0100 tracing/function-graph-tracer: handle ftrace_printk entries Handle the TRACE_PRINT entries from the function grapg tracer and output them as a C comment just below the function that called it, as if it was a comment inside this function. Example with an ftrace_printk inside might_sleep() function: void __might_sleep(char *file, int line) { static unsigned long prev_jiffy; /* ratelimiting */ ftrace_printk("Hi I'm a comment in might_sleep() :-)"); A chunk of a resulting trace: 0) | _reiserfs_free_block() { 0) | reiserfs_read_bitmap_block() { 0) | __bread() { 0) | __getblk() { 0) | __find_get_block() { 0) 0.698 us | mark_page_accessed(); 0) 2.267 us | } 0) | __might_sleep() { 0) | /* Hi I'm a comment in might_sleep() :-) */ 0) 1.321 us | } 0) 5.872 us | } 0) 7.313 us | } 0) 8.718 us | } And this patch brings two minor fixes: - The newline after a switch-out task has disappeared - The "|" sign just before the cpu number on task-switch has been deleted. 0) 0.616 us | pick_next_task_rt(); 0) 1.457 us | _spin_trylock(); 0) 0.653 us | _spin_unlock(); 0) 0.728 us | _spin_trylock(); 0) 0.631 us | _spin_unlock(); 0) 0.729 us | native_load_sp0(); 0) 0.593 us | native_load_tls(); ------------------------------------------ 0) cat-2834 => migrati-3 ------------------------------------------ 0) | finish_task_switch() { 0) 0.841 us | _spin_unlock_irq(); 0) 0.616 us | post_schedule_rt(); 0) 3.882 us | } Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit faec2ec505d397e9426754722b6e80d519c4938f Author: Liming Wang Date: Thu Dec 4 14:24:49 2008 +0800 ftrace: avoid duplicated function when writing set_graph_function Impact: fix a bug in function filter setting when writing function to set_graph_function, we should check whether it has existed in set_graph_function to avoid duplicating. Signed-off-by: Liming Wang Signed-off-by: Ingo Molnar commit 6b2539302bee8e88c99e3c7d80c16a04dbe5e2ad Author: Ingo Molnar Date: Thu Dec 4 09:18:28 2008 +0100 tracing: fix typo and missing inline function Impact: fix build bugs Signed-off-by: Ingo Molnar commit e32d89569128e76bdf84867be0928902ca9f7555 Author: Steven Rostedt Date: Thu Dec 4 00:26:41 2008 -0500 ftrace: add ability to only trace swapper tasks Impact: new feature This patch lets the swapper tasks of all CPUS be filtered by the set_ftrace_pid file. If '0' is echoed into this file, then all the idle tasks (aka swapper) is flagged to be traced. This affects all CPU idle tasks. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 978f3a45d9499c7a447ca7615455cefb63d44165 Author: Steven Rostedt Date: Thu Dec 4 00:26:40 2008 -0500 ftrace: use struct pid Impact: clean up, extend PID filtering to PID namespaces Eric Biederman suggested using the struct pid for filtering on pids in the kernel. This patch is based off of a demonstration of an implementation that Eric sent me in an email. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 5ef6476190d24419a9a537baa0b5641845136989 Author: Steven Rostedt Date: Thu Dec 4 00:26:39 2008 -0500 pid: fix the do_each_pid_task() macro Impact: macro side-effects fix This patch adds parenthesis around 'pid' in the do_each_pid_task macro to allow callers to pass in more complex parameters. e.g. do_each_pid_task(*pid, type, task) Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 804a685162a7080386714166776f57255a75238e Author: Steven Rostedt Date: Wed Dec 3 15:36:59 2008 -0500 ftrace: trace single pid for function graph tracer Impact: New feature This patch makes the changes to set_ftrace_pid apply to the function graph tracer. # echo $$ > /debugfs/tracing/set_ftrace_pid # echo function_graph > /debugfs/tracing/current_tracer Will cause only the current task to be traced. Note, the trace flags are also inherited by child processes, so the children of the shell will also be traced. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 0ef8cde56ab92ab3f65221246dc1622c6b5068b3 Author: Steven Rostedt Date: Wed Dec 3 15:36:58 2008 -0500 ftrace: use task struct trace flag to filter on pid Impact: clean up Use the new task struct trace flags to determine if a process should be traced or not. Note: this moves the searching of the pid to the slow path of setting the pid field. This needs to be converted to the pid name space. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit ea4e2bc4d9f7370e57a343ccb5e7c0ad3222ec3c Author: Steven Rostedt Date: Wed Dec 3 15:36:57 2008 -0500 ftrace: graph of a single function This patch adds the file: /debugfs/tracing/set_graph_function which can be used along with the function graph tracer. When this file is empty, the function graph tracer will act as usual. When the file has a function in it, the function graph tracer will only trace that function. For example: # echo blk_unplug > /debugfs/tracing/set_graph_function # cat /debugfs/tracing/trace [...] ------------------------------------------ | 2) make-19003 => kjournald-2219 ------------------------------------------ 2) | blk_unplug() { 2) | dm_unplug_all() { 2) | dm_get_table() { 2) 1.381 us | _read_lock(); 2) 0.911 us | dm_table_get(); 2) 1. 76 us | _read_unlock(); 2) + 12.912 us | } 2) | dm_table_unplug_all() { 2) | blk_unplug() { 2) 0.778 us | generic_unplug_device(); 2) 2.409 us | } 2) 5.992 us | } 2) 0.813 us | dm_table_put(); 2) + 29. 90 us | } 2) + 34.532 us | } You can add up to 32 functions into this file. Currently we limit it to 32, but this may change with later improvements. To add another function, use the append '>>': # echo sys_read >> /debugfs/tracing/set_graph_function # cat /debugfs/tracing/set_graph_function blk_unplug sys_read Using the '>' will clear out the function and write anew: # echo sys_write > /debug/tracing/set_graph_function # cat /debug/tracing/set_graph_function sys_write Note, if you have function graph running while doing this, the small time between clearing it and updating it will cause the graph to record all functions. This should not be an issue because after it sets the filter, only those functions will be recorded from then on. If you need to only record a particular function then set this file first before starting the function graph tracer. In the future this side effect may be corrected. The set_graph_function file is similar to the set_ftrace_filter but it does not take wild cards nor does it allow for more than one function to be set with a single write. There is no technical reason why this is the case, I just do not have the time yet to implement that. Note, dynamic ftrace must be enabled for this to appear because it uses the dynamic ftrace records to match the name to the mcount call sites. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit b29144c317fb748dae6d72c0f88eda9d43165b8d Merge: b8307db2477f9c551e54e0c7b643ea349a3349cd e8e1abe92fd7ea9d823a3aaf81d10e2cba593b6b 764f3b95131a7ce5c992e3d00caf590fcada2f7b Author: Ingo Molnar Date: Thu Dec 4 09:07:44 2008 +0100 Merge branches 'tracing/ftrace' and 'tracing/function-graph-tracer' into tracing/core commit b8307db2477f9c551e54e0c7b643ea349a3349cd Merge: f0461d0146ee30927bc7efa2ae24ea8c6693b725 061e41fdb5047b1fb161e89664057835935ca1d2 Author: Ingo Molnar Date: Thu Dec 4 09:07:19 2008 +0100 Merge commit 'v2.6.28-rc7' into tracing/core commit 4151d154efc2eb1e48b0950e93660691426dd23f Author: Takashi Iwai Date: Thu Dec 4 07:49:15 2008 +0100 ALSA: hda - Add forgotten module alias for Nvidia MCP67 HDMI Signed-off-by: Takashi Iwai commit e5f73435683122612742eb17252a6854b28f2511 Author: Scott Waye Date: Thu Dec 4 07:43:18 2008 +0100 ALSA: hda - Add MCP67 HDMI support Added id for MCP67 HDMI codec. Signed-off-by: Scott Waye Signed-off-by: Takashi Iwai commit 36cbac5909d227c4de31fb93e1dd99c839c9cb6f Author: Joe Perches Date: Wed Dec 3 22:27:25 2008 -0800 net/ipv6/ip6mr.c: Use kmem_cache_zalloc, remove memset Signed-off-by: Joe Perches Signed-off-by: David S. Miller commit df66f858074370a7ac7b21af2940e7a3a6af17c2 Author: Wang Chen Date: Wed Dec 3 22:24:05 2008 -0800 if_usb: Kill directly reference of netdev->priv Simply replace netdev->priv with netdev_priv(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 48502180e4b47fb2b1e7834fe0f16f4e553a053d Author: Luotao Fu Date: Wed Dec 3 22:23:18 2008 -0800 smc91x: remove isa stuff from smc91x driver ISA support in smc91x is incomplete. I doubt there're any smc91x isa card. This driver is greatly used on arm pxa platforms. Hence we remove the isa stuff from smc91x driver. Signed-off-by: Luotao Fu Acked-by: Steve Glendinning Signed-off-by: David S. Miller commit 999890b21a8eff7559a140fcbd2cd4b34e685c76 Author: Benjamin Thery Date: Wed Dec 3 22:22:16 2008 -0800 net: /proc/net/ip_mr_cache, display Iif as a signed short Today, iproute2 fails to show multicast forwarding unresolved cache entries while scanning /proc/net/ip_mr_cache. Indeed, it expects to see -1 in 'Iif' column to identify unresolved entries but the kernel outputs 65535. It's a signed/unsigned issue: 'Iif', the source interface, is retrieved from member mfc_parent in struct mfc_cache. mfc_parent is a vifi_t: unsigned short, but is displayed in ipmr_mfc_seq_show() as "%-3d", signed integer. In unresolevd entries, the 65535 value (0xFFFF) comes from this define: #define ALL_VIFS ((vifi_t)(-1)) That may explains why the guy who added support for this in iproute2 thought a -1 should be expected. I don't know if this must be fixed in kernel or in iproute2. Who is right? What is the correct API? How was it designed originally? I let you decide if it should goes in the kernel or be fixed in iproute2. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit 1ea472e2dedcf23d5f31c63fc790cccfab93c0de Author: Benjamin Thery Date: Wed Dec 3 22:21:47 2008 -0800 net: fix /proc/net/ip_mr_cache display - V2 /proc/net/ip_mr_cache and /proc/net/ip6_mr_cache displays garbage when showing unresolved mfc_cache entries. [root@qemu tests]# cat /proc/net/ip_mr_cache Group Origin Iif Pkts Bytes Wrong Oifs 014C00EF 010014AC 1 10 10050 0 2:1 3:1 024C00EF 010014AC 65535 514 2 -559067475 The first line is correct. It is a resolved cache entry, 10 packets used it... The second line represents an unresolved entry, and the columns Pkts(4th), Bytes(5th) and Wrong(6th) just show garbage. In struct mfc_cache, there's an union to store data for resolved and unresolved cases. And what ipmr_mfc_seq_show() is printing in these columns for the unresolved entries is some bytes from mfc_cache.mfc_un.res. Bad. (eg. In our case -559067475 is in fact 0xdead4ead which is the spinlock magic from mfc_cache.mfc_un.unres.unresolved.lock.magic). This patch replaces the garbage data written in these columns for the unresolved entries by '0' (zeros) which is more correct. This change doesn't break the ABI. Also, mfc->mfc_un.res.pkt, mfc->mfc_un.res.bytes, mfc->mfc_un.res.wrong_if are unsigned long. It applies on top of net-next-2.6. The patch for net-2.6 is slightly different because of the NIP6_FMT to %pI6 conversion that was made in the seq_printf. Changelog: ========== V2: * Instead of breaking the ABI by suppressing the columns that have no meaning for unresolved entries, fill them with 0 values. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit 9de6d99a7559d20f7ababd1cacdc61ee5315f3c1 Author: Alexey Dobriyan Date: Wed Dec 3 22:19:52 2008 -0800 netdev: remove pathetic compile-command lines -m486, -O6 are partircularly amusing. Remove some other useless lines near as well. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit ec98ce480ada787f2cfbd696980ff3564415505b Merge: 3496f92beb9aa99ef21fccc154a36c7698e9c538 feaf3848a813a106f163013af6fcf6c4bfec92d9 Author: James Morris Date: Thu Dec 4 17:16:36 2008 +1100 Merge branch 'master' into next Conflicts: fs/nfsd/nfs4recover.c Manually fixed above to use new creds API functions, e.g. nfs4_save_creds(). Signed-off-by: James Morris commit 8865c418caf4e9dd2c24bdfae3a5a4106e143e60 Author: David Woodhouse Date: Wed Dec 3 22:12:38 2008 -0800 atm: 32-bit ioctl compatibility We lack compat ioctl support through most of the ATM code. This patch deals with most of it, and I can now at least use BR2684 and PPPoATM with 32-bit userspace. I haven't added a .compat_ioctl method to struct atm_ioctl, because AFAICT none of the current users need any conversion -- so we can just call the ->ioctl() method in every case. I looked at br2684, clip, lec, mpc, pppoatm and atmtcp. In svc_compat_ioctl() the only mangling which is needed is to change COMPAT_ATM_ADDPARTY to ATM_ADDPARTY. Although it's defined as _IOW('a', ATMIOC_SPECIAL+4,struct atm_iobuf) it doesn't actually _take_ a struct atm_iobuf as an argument -- it takes a struct sockaddr_atmsvc, which _is_ the same between 32-bit and 64-bit code, so doesn't need conversion. Almost all of vcc_ioctl() would have been identical, so I converted that into a core do_vcc_ioctl() function with an 'int compat' argument. I've done the same with atm_dev_ioctl(), where there _are_ a few differences, but still it's relatively contained and there would otherwise have been a lot of duplication. I haven't done any of the actual device-specific ioctls, although I've added a compat_ioctl method to struct atmdev_ops. Signed-off-by: David Woodhouse Signed-off-by: David S. Miller commit dcd39c90290297f6e6ed8a04bb20da7ac2b043c5 Author: Stephen Hemminger Date: Wed Dec 3 22:10:38 2008 -0800 ne-h8300: convert to net_device_ops Another device using 8390 library that needs converting. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 5618f0d1193d6b051da9b59b0e32ad24397f06a4 Author: Stephen Hemminger Date: Wed Dec 3 22:10:10 2008 -0800 hydra: convert to net_device_ops Another device using 8390 library that needs converting. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit b6114794a1c394534659f4a17420e48cf23aa922 Author: Stephen Hemminger Date: Wed Dec 3 22:09:30 2008 -0800 zorro8390: convert to net_device_ops Another device using 8390 library that needs converting. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 3e1d7cd2dc708f2054b2180e05ae283b9f91d543 Author: Wang Chen Date: Wed Dec 3 22:07:10 2008 -0800 e1000: e1000_adapter->polling_netdev is useless Commit bea3348eef27e6044b6161fd04c3152215f96411 "[NET]: Make NAPI polling independent of struct net_device objects." made NAPI polling to be independent of net_device. So e1000_adapter->polling_netdev is no longer used. Kill it. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit a4d2f34b7c3ff8a53df755961faf8186c6e7b464 Author: Wang Chen Date: Wed Dec 3 22:05:58 2008 -0800 ixgbe: function comment typo Seems the ixgbe's code was copied from e1000. The comment talks about something not exist. Signed-off-by: Wang Chen Acked-by: Jeff Kirsher Signed-off-by: David S. Miller commit e4e6c38cab208b369bfc8e9a57186581bf0b9987 Author: Guo-Fu Tseng Date: Wed Dec 3 21:20:04 2008 -0800 jme: Remove 64 and 40 bit dma_mask Although the hardware supports the 64bit DMA address in design, but later found that it actually not working. This patch reduced the rang to 32bit. Found-by: "Ethan" Signed-off-by: "Guo-Fu Tseng" Acked-by: Jeff Garzik Signed-off-by: David S. Miller commit 4f40bf46897ddb57f149c0758f0cef0cc7782f7f Author: akeemting Date: Wed Dec 3 21:19:16 2008 -0800 jme: GHC register control fix for new hardware Due to the hardware design, except the first chip on the market, other chips needs to setup the clock source for MAC processor implicitly through Global Host Control Register(GHC). (Strange design huh?) 10/100M uses the PCI-E as clock source, and 1G uses GPHY. And I reordered the code a little, to make it easier to read. Found-by: "Ethan" Fixed-by: "akeemting" Signed-off-by: "Guo-Fu Tseng" Acked-by: Jeff Garzik Signed-off-by: David S. Miller commit 59e4220a1112bf65924bc2e47b5757911b6f349b Author: Jarek Poplawski Date: Wed Dec 3 21:17:27 2008 -0800 pkt_sched: sch_htb: Replace HTB_ACCNT() macro with inlines Replace HTB_ACCNT() macro with inlines to make it more readable. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 23cb913d25b20ed88b36a26f337cfdb4605e63f4 Author: Jarek Poplawski Date: Wed Dec 3 21:16:58 2008 -0800 pkt_sched: sch_htb: Remove L2T() L2T() is currently used only in one place (and has one spurious parameter, btw), so let's: 'get rid of L2T completely, and just use "qdisc_l2t(rate, size)" directly.' - quote & feedback from David S. Miller. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 244ef9b9176c7c7a095f4738d353a3a60b88097d Author: Wang Chen Date: Wed Dec 3 21:14:04 2008 -0800 bond: Kill directly reference of netdev->priv Simply replace netdev->priv with netdev_priv(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 97341249c4c30cf0eea5439ce2f36ee887e640fe Author: Wang Chen Date: Wed Dec 3 21:13:37 2008 -0800 mptlan: Kill directly reference of netdev->priv Simply replace netdev->priv with netdev_priv(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 0eade1f930fa3ba6461b34baf3ed8fa7c4abc40f Author: Wang Chen Date: Wed Dec 3 21:13:13 2008 -0800 dvb: Kill directly reference of netdev->priv Simply replace netdev->priv with netdev_priv(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit c19f7a34f7cc7543c62ad065952e146dc77d1a38 Author: Jarek Poplawski Date: Wed Dec 3 21:09:45 2008 -0800 pkt_sched: sch_htb: Clean htb_class prio and quantum fields While implementing htb_parent_to_leaf() there where added backup prio and quantum struct htb_class fields to preserve these values for inner classes in case of their return to leaf. This patch cleans this a bit by removing union leaf duplicates. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 633fe66ed8385ccf8b4a74a00a4c6eb40850d65f Author: Jarek Poplawski Date: Wed Dec 3 21:09:10 2008 -0800 pkt_sched: sch_htb: Remove htb_sched nwc_hit field Remove practically unused struct htb_sched nwc_hit field. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 4164d661b8c9602fbbf651a33377d2c51f68c451 Author: Jarek Poplawski Date: Wed Dec 3 21:08:44 2008 -0800 pkt_sched: sch_htb: Remove htb_class aprio field Remove practically unused struct htb_class aprio field. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit cb52deba12f27af90a46d2f8667a64888118a888 Author: Ed Swierk Date: Mon Dec 1 12:24:43 2008 +0000 forcedeth: power down phy when interface is down Bring the physical link down when the interface is down by placing the PHY in power-down state, unless WOL is enabled. This mirrors the behavior of other drivers including e1000 and tg3. Without the patch, ifconfig down leaves the physical link up, which confuses datacenter users who expect the link lights both on the NIC and the switch to go out when they bring an interface down. Furthermore, even though the phy is powered on, autonegotiation stops working, so a normally gigabit link might suddenly become 100 Mbit half-duplex when the interface goes down, and become gigabit when it comes up again. Ayaz said: I would not include this patch until further testing is performed. NVIDIA MCP chips use 3rd party PHY vendors. By powering down the phy, it could have adverse affects on certain phys. Arthur Jones said: I just ran across this patch. Tested on a Marvell 88E1121R (GigE PHY) and works great. This is a very important feature for me. Signed-off-by: Ed Swierk Tested-by: Arthur Jones Signed-off-by: Andrew Morton Signed-off-by: David S. Miller commit a316084c2f18fd5371f81cfcfc8348a71c4a6fe8 Author: Andrew Morton Date: Mon Dec 1 12:24:46 2008 +0000 drivers/net/smc911x.c: smc911x_drv_probe() cleanup Save an ugly ifdef. Signed-off-by: Andrew Morton Signed-off-by: David S. Miller commit fd568fc3fe46fd87087717811d2f9ed27bb71558 Author: Julia Lawall Date: Mon Dec 1 12:24:24 2008 +0000 drivers/isdn/mISDN: use ARRAY_SIZE ARRAY_SIZE is more concise to use when the size of an array is divided by the size of its type or the size of its first element. The semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @i@ @@ #include @depends on i using "paren.iso"@ type T; T[] E; @@ - (sizeof(E)/sizeof(T)) + ARRAY_SIZE(E) // Signed-off-by: Julia Lawall Signed-off-by: Andrew Morton Signed-off-by: David S. Miller commit 838361fe7828a3ad1aae8dee87620474931dac5e Author: Wang Chen Date: Wed Dec 3 15:49:46 2008 -0800 isdn: Kill directly reference of netdev->priv Simply use netdev_priv() to replace netdev->priv. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 25dd7e6aedff054736f9edfd05bb585d810d8543 Author: Wang Chen Date: Wed Dec 3 15:49:07 2008 -0800 hysdn: Kill directly reference of netdev->priv Usually, netdev->priv should point to the memory of private data which is allocated in alloc_netdev(). netdev_priv() is used to get the address of the private data. Change the netdev->priv pointer to another memory is wrong. Use netdev->ml_priv for this case. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 52404881984e2d447f920a23e3bb63262dfc77f3 Author: Rémi Denis-Courmont Date: Wed Dec 3 15:42:56 2008 -0800 Phonet: basic net namespace support Signed-off-by: Rémi Denis-Courmont Signed-off-by: David S. Miller commit d81d228567f55af517796638075dbbce9b40d7af Author: Martin Willi Date: Wed Dec 3 15:38:07 2008 -0800 xfrm: Accept XFRM_STATE_AF_UNSPEC SAs on IPv4/IPv6 only hosts Installing SAs using the XFRM_STATE_AF_UNSPEC fails on hosts with support for one address family only. This patch accepts such SAs, even if the processing of not supported packets will fail. Signed-off-by: Martin Willi Signed-off-by: David S. Miller commit ff80aa97c9b4aae9449a608fe1bc3e7b5121cd66 Author: Peter Korsgaard Date: Tue Dec 2 21:58:06 2008 +0100 setlocalversion: add git-svn support Print svn revision in addition to git info on git-svn repos. Signed-off-by: Peter Korsgaard Signed-off-by: Sam Ravnborg commit 167d6a02c1dbdd84d49e87df7718f18fa31cb971 Author: Peter Korsgaard Date: Tue Dec 2 21:58:05 2008 +0100 setlocalversion: print correct subversion revision Output svn revision of latest change, instead of repo revision as thats what we're interested in (especially when working on a branch/tag). Signed-off-by: Peter Korsgaard Signed-off-by: Sam Ravnborg commit 846442c8ddc02e378e7b981f0928449ed1ff1e1f Author: Arjan van de Ven Date: Mon Dec 1 14:21:06 2008 -0800 scripts: improve the decodecode script kerneloops.org has been using an improved "decodecode" script, specifically it has a special marker that shows which line in the assembly the oops happened at, like this: 20: 83 e0 03 and $0x3,%eax 23: 09 d8 or %ebx,%eax 25: 85 db test %ebx,%ebx 27: 89 02 mov %eax,(%edx) 29: 74 0f je 0x3a 2b:* 3b 73 04 cmp 0x4(%ebx),%esi <-- trapping instruction 2e: 75 05 jne 0x35 30: 89 53 04 mov %edx,0x4(%ebx) 33: eb 07 jmp 0x3c 35: 89 53 08 mov %edx,0x8(%ebx) this patch updates the kernel copy to also have this functionality. Signed-off-by: Arjan van de Ven Reviewed-by: WANG Cong Signed-off-by: Andrew Morton Signed-off-by: Sam Ravnborg commit c39dd50240b97bfe4fcc49b41e1fe56675afcb94 Author: Jeremy Kerr Date: Mon Dec 1 14:21:03 2008 -0800 scripts/package: allow custom options to rpm Add a RPMOPTS make variable to allow arbitrary options to be passed to rpm during 'make rpm-pkg'. For example: make RPMOPTS="--define '_topdir /home/jk/rpm'" rpm-pkg Signed-off-by: Jeremy Kerr Signed-off-by: Andrew Morton Signed-off-by: Sam Ravnborg commit 5dae9a550a7478c8d6a7da2336d3ceeebf90ab84 Author: Andreas Gruenbacher Date: Mon Dec 1 14:21:03 2008 -0800 genksyms: allow to ignore symbol checksum changes This adds an "override" keyword for use in *.symvers / *.symref files. When a symbol is overridden, the symbol's old definition will be used for computing checksums instead of the new one, preserving the previous checksum. (Genksyms will still warn about the change.) This is meant to allow distributions to hide minor actual as well as fake ABI changes. (For example, when extra type information becomes available because additional headers are included, this may change checksums even though none of the types used have actully changed.) This approach also allows to get rid of "#ifdef __GENKSYMS__" hacks in the code, which are currently used in some vendor kernels to work around checksum changes. Signed-off-by: Andreas Gruenbacher Cc: Randy Dunlap Signed-off-by: Andrew Morton Signed-off-by: Sam Ravnborg commit 64e6c1e12372840e7caf8e25325a9e9c5fd370e6 Author: Andreas Gruenbacher Date: Mon Dec 1 14:21:01 2008 -0800 genksyms: track symbol checksum changes Sometimes it is preferable to avoid changes of exported symbol checksums (to avoid breaking externally provided modules). When a checksum change occurs, it can be hard to figure out what caused this change: underlying types may have changed, or additional type information may simply have become available at the point where a symbol is exported. Add a new --reference option to genksyms which allows it to report why checksums change, based on the type information dumps it creates with the --dump-types flag. Genksyms will read in such a dump from a previous run, and report which symbols have changed (and why). The behavior can be controlled for an entire build as follows: If KBUILD_SYMTYPES is set, genksyms uses --dump-types to produce *.symtypes dump files. If any *.symref files exist, those will be used as the reference to check against. If KBUILD_PRESERVE is set, checksum changes will fail the build. Signed-off-by: Andreas Gruenbacher Cc: Randy Dunlap Signed-off-by: Andrew Morton Signed-off-by: Sam Ravnborg commit a680eedc6c621c75695c68198533fc3c98f4053b Author: Sam Ravnborg Date: Wed Dec 3 22:24:13 2008 +0100 tags and cscope support really belongs in a shell script as they do not benefit from the make functionality. Moving the support to a shell script has several benefits: - The readability of the code has increased a lot - More people is able to extend the tags support - We see less changes to the top-level Makefile The shell script version includes improvements from: Alexey Dobriyan (jump to kconfig symbols) Alexey Dobriyan (drop ./ in paths) Ian Campbell (simplified find algorithms) This version has a few caveats: => It does not support ALLSOURCE_ARCHS - it is easy to add if it is really used => It assumes all archs have moved to arch/$ARCH/include - until that happens we have a few additional hits in the archs Signed-off-by: Sam Ravnborg Cc: Alexey Dobriyan Tested-by: Ian Campbell commit 361425fc32422c9716fc69e52455b7d44fc02c18 Author: Haiying Wang Date: Wed Dec 3 14:03:09 2008 -0500 powerpc/85xx: Create dts for each core in CAMP mode for MPC8572DS This patch creates the dts files for each core and splits the devices between the two cores for MPC8572DS. core0 has memory, L2, i2c, dma1, global-util, eth0, eth1, crypto, pci0, pci1. core1 has L2, dma2, eth2, eth3, pci2, msi. MPIC is shared between two cores but each core will protect its interrupts from other core by using "protected-sources" of mpic. Signed-off-by: Haiying Wang Signed-off-by: Kumar Gala commit f6682f915760ccfe57ef1b6cd5ff2d8f2bf8c1d4 Author: Sam Ravnborg Date: Wed Dec 3 22:11:14 2008 +0100 kconfig: fix options to check-lxdialog.sh As noted by Bernhard - fix it up. Cc: Bernhard Reutner-Fischer Signed-off-by: Sam Ravnborg commit 3b1ec9fb8197197d5e3bcca3a05e82d4f50f11bc Author: Sally, Gene Date: Wed Oct 29 09:54:17 2008 -0400 kbuild: gen_init_cpio expands shell variables in file names Modify gen_init_cpio so that lines that specify files can contain what looks like a shell variable that's expanded during processing. For example: file /sbin/kinit ${RFS_BASE}/usr/src/klibc/kinit/kinit 0755 0 0 given RFS_BASE is "/some/directory" in the environment would be expanded to file /sbin/kinit /some/directory/usr/src/klibc/kinit/kinit 0755 0 0 If several environment variables appear in a line, they are all expanded with processing happening from left to right. Undefined variables expand to a null string. Syntax errors stop processing, letting the existing error handling show the user offending line. This patch helps embedded folks who frequently create several RFS directories and then switch between them as they're tuning an initramfs. Signed-off-by: gene.sally@timesys.com Signed-off-by: Sam Ravnborg commit efddd79512cc582675004bfdf7e66585198b38f9 Author: Werner Almesberger Date: Wed Nov 12 16:39:35 2008 -0200 remove bashisms from scripts/extract-ikconfig unbashify-extract-ikconfig.patch scripts/extract-ikconfig contains a lot of gratuituous bashisms, which make it fail if /bin/sh isn't bash. This patch replaces them with regular Bourne shell constructs. Signed-off-by: Werner Almesberger Acked-by: Randy Dunlap # as file author Signed-off-by: Sam Ravnborg commit d2301249e2f9b9a3ba989703107192b538209e57 Author: Sam Ravnborg Date: Fri Nov 21 23:00:12 2008 +0100 kbuild: teach mkmakfile to be silent With this fix a "make -s" is now really silent Signed-off-by: Sam Ravnborg commit fd54f502841c1caa7cfd5af564aad1bd017371fa Author: Mike Frysinger Date: Thu Nov 6 03:31:35 2008 -0500 kbuild: use KECHO convenience echo Convert a few echos in the build system to new $(kecho) so we get correct output according to build verbosity. Signed-off-by: Mike Frysinger [sam: added kecho in a few more places for O=... builds] Signed-off-by: Sam Ravnborg commit 5410ecc0def8955ab99810c5626cc7e156991896 Author: Mike Frysinger Date: Thu Nov 6 03:31:34 2008 -0500 kbuild: introduce $(kecho) convenience echo There is a bunch of places in the build system where we do 'echo' to show some nice status lines. This means we still get output when running in silent mode. So declare a new KECHO variable that only does 'echo' when we are in a suitable verbose build mode. Signed-off-by: Mike Frysinger [sam: added Documentation] Signed-off-by: Sam Ravnborg commit d03fab43c5ba4f5fa46db73c937e9b993a531d27 Author: Mike Frysinger Date: Thu Nov 6 03:31:22 2008 -0500 kbuild: kill output in silent mode of mkcompile_h The mkcompile_h script does `echo` regardless of silent mode the make is running at, so have it respect $quiet from kbuild and only echo when not in silent mode. Signed-off-by: Mike Frysinger Signed-off-by: Sam Ravnborg commit d8672b40d3a6f17de5b5bc71d6e531d7576a856a Author: Sam Ravnborg Date: Fri Nov 21 21:50:02 2008 +0100 kbuild: expand -I in KBUILD_CPPFLAGS kbuild failed to expand include flags in KBUILD_CPPFLAGS resulting in code like this in arch Makefiles: ifeq ($(KBUILD_SRC),) KBUILD_CPPFLAGS += -Iinclude/foo else KBUILD_CPPFLAGS += -I$(srctree)/include/foo endif Move use of LINUXINCLUDE into Makefile.lib to allow us to expand -I directives of KBUILD_CPPFLAGS so we can avoid the above code. Signed-off-by: Sam Ravnborg commit 5b91c33cf295d9c235f587f29a8c0a7ae15a5320 Author: Sam Ravnborg Date: Wed Dec 3 21:22:21 2008 +0100 kbuild: fix -I option expansion with O=... builds When adding extra -I options with O=... we could end up in a situation where there were no parameters to -I. So we had a commandline that looked like this: ... -I -Wall ... This had the undesired side effect that gcc assumed "-Wall" was a path to look for include files so this options was effectively ignored. This happens only when we build the generated module.mod.c files as part of the final modules builds and is as such harmless with current kbuild. This bug was exposed when we rearranged the options to gcc. Signed-off-by: Sam Ravnborg commit dc7d7b830ee1f4111696e73d1c25da683b461548 Author: Mark Brown Date: Wed Dec 3 18:21:52 2008 +0000 ASoC: Remove platform device from DAI suspend and resume operations None of the DAIs use it except s3c2412-i2s which only uses it for dev_() printouts. Signed-off-by: Mark Brown commit 07c84d0409f3551b79d676630d8ee76bb551598d Author: Mark Brown Date: Wed Dec 3 18:17:28 2008 +0000 ASoC: Remove device from platform suspend and resume operations None of the platforms are actually using the SoC device so remove it (only atmel actually has a suspend method). Signed-off-by: Mark Brown commit 384c89e2e4cb5879b86a38414d1b3bb2b23ec8ee Author: Mark Brown Date: Wed Dec 3 17:34:03 2008 +0000 ASoC: Push debugfs files out of the snd_soc_device structure This is in preparation for the removal of struct snd_soc_device. The pop time configuration should really be a property of the card not the codec but since DAPM currently uses the codec rather than the card using the codec is fine for now. Signed-off-by: Mark Brown commit a7fe49bf01dd64b3c73ad0e172f68bd03c813d65 Author: Takashi Iwai Date: Wed Dec 3 18:26:35 2008 +0100 ALSA: Add more documentation about HD-audio driver The file can be converted to PDF via asciidoc. Signed-off-by: Takashi Iwai commit 06be64a366885569f46a7e0e50b351266d28f5fc Author: Haiying Wang Date: Thu Nov 13 07:46:12 2008 -0600 powerpc/85xx: Don't reset the MPIC for CAMP mode on MPC8572DS The flag MPIC_WANTS_RESET shouldn't be set if we are doing cooperative asymmetric MP. The second linux shouldn't reset the pic or the first one gets very confused. Signed-off-by: Haiying Wang Signed-off-by: Kumar Gala commit c64ef80b517680f1e228b2ee55e3ce7cd94c7fe0 Author: Haiying Wang Date: Fri Nov 28 16:49:39 2008 -0500 powerpc/85xx: Add localbus node in mpc8572ds dts file Also add NOR and NAND flash partitions for mpc8572ds board Signed-off-by: Haiying Wang Signed-off-by: Kumar Gala commit 965dc5fc55fa0201fd8241ba7c0efc8f96f0ec84 Author: Martyn Welch Date: Fri Nov 7 14:15:42 2008 +0000 powerpc/86xx: Basic GPIO support for GE Fanuc SBC610 Basic support for the GPIO available on the SBC610 VPX Single Board Computer from GE Fanuc (PowerPC MPC8641D). This patch adds basic support for the GPIO in the devices I/O FPGA, the GPIO functionality is exposed through the AFIX pins on the backplane, unless used by an AFIX card. This code currently does not support switching between totem-pole and open-drain outputs (when used as outputs, GPIOs default to totem-pole). The interrupt capabilites of the GPIO lines is also not currently supported. Signed-off-by: Martyn Welch Signed-off-by: Kumar Gala commit 09a3fba8c132a55f153fd65fc1085b717a6193c8 Author: Anton Vorontsov Date: Tue Nov 11 18:31:39 2008 +0300 powerpc/qe: Move cmxgcr_lock definition from the ucc.c into the qe.c With this patch we can compile the qe_lib/usb.c without the UCC support (that is, without UCC_GETH and/or SERIAL_QE). Fixes following link error (CONFIG_SMP should be =y to trigger this): arch/powerpc/sysdev/built-in.o: In function `qe_usb_clock_set': (.text+0x3cae): undefined reference to `cmxgcr_lock' make: *** [.tmp_vmlinux1] Error 1 While at it, also add missing spinlock.h includes. Signed-off-by: Anton Vorontsov Acked-By: Timur Tabi Signed-off-by: Kumar Gala commit d3a8cdab2ff2f8acbe48e18ed471b0812785e390 Author: Martyn Welch Date: Thu Nov 20 08:52:09 2008 +0000 powerpc/86xx: Add use of Epson RTX-8581 RTC to GE Fanuc SBC610 dts Adding use of newly added Epson RTX-8581 real-time clock driver to GE Fanuc SBC610's dts file and adding driver to default config. Signed-off-by: Martyn Welch Signed-off-by: Kumar Gala commit 24a99596f7465274a8e65ddd29a7d9028969b9f9 Author: Kumar Gala Date: Wed Dec 3 09:31:35 2008 -0600 powerpc/85xx: Fix compile warnings in mpc85xx_mds.c arch/powerpc/platforms/85xx/mpc85xx_mds.c: In function 'board_fixups': arch/powerpc/platforms/85xx/mpc85xx_mds.c:244: warning: format '%x' expects type 'unsigned int', but argument 4 has type 'resource_size_t' arch/powerpc/platforms/85xx/mpc85xx_mds.c:250: warning: format '%x' expects type 'unsigned int', but argument 4 has type 'resource_size_t' Signed-off-by: Kumar Gala commit e8e1abe92fd7ea9d823a3aaf81d10e2cba593b6b Author: Steven Rostedt Date: Wed Dec 3 11:04:51 2008 -0500 ftrace: fix race in function graph during fork Impact: graph tracer race/crash fix There is a nasy race in startup of a new process running the function graph tracer. In fork.c: total_forks++; spin_unlock(¤t->sighand->siglock); write_unlock_irq(&tasklist_lock); ftrace_graph_init_task(p); proc_fork_connector(p); cgroup_post_fork(p); return p; The new task is free to run as soon as the tasklist_lock is released. This is before the ftrace_graph_init_task. If the task does run it will be using the same ret_stack and curr_ret_stack as the parent. This will cause crashes that are difficult to debug. This patch moves the ftrace_graph_init_task to just after the alloc_pid code. This fixes the above race. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 0a37119d963e876ca86912497346ec50dea2541b Author: Steven Rostedt Date: Wed Dec 3 11:04:50 2008 -0500 trace: fix output of stack trace Impact: fix to output of stack trace If a function is not found in the stack of the stack tracer, the number printed is quite strange. This fixes the algorithm to handle missing functions better. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 0f620830db0818ebe065b31c33892e8f0622e1b2 Author: Peter Gruber Date: Wed Dec 3 15:32:15 2008 +0100 ALSA: Reduce stall detection timeout in riptide.c Reduce the command timeout to 0.5sec. Should be enough to allow a working command interface but removes a RCU stall and slow resume on some revisions where the AC97 revision detection stalls in resume. Signed-off-by: Peter Gruber Signed-off-by: Takashi Iwai commit d5b26db2cfcf09f28f4839c8c3484279cd5ea5b3 Author: Kumar Gala Date: Wed Nov 19 09:35:56 2008 -0600 powerpc/85xx: Add support for SMP initialization Added 85xx specifc smp_ops structure. We use ePAPR style boot release and the MPIC for IPIs at this point. Additionally added routines for secondary cpu entry and initializtion. Signed-off-by: Andy Fleming Signed-off-by: Trent Piepho Signed-off-by: Kumar Gala commit 06b90969a7564fad888f67e9f7f4c3a51a16ef1d Author: Kumar Gala Date: Mon Dec 1 14:38:32 2008 -0600 powerpc/85xx: minor head_fsl_booke.S cleanup Removed unused branch labels Signed-off-by: Kumar Gala commit b3898895355f73973eb3aef3489e999d3fb8e2bc Author: Trent Piepho Date: Wed Nov 19 03:13:14 2008 -0800 powerpc: Better setup of boot page TLB entry The initial TLB mapping for the kernel boot didn't set the memory coherent attribute, MAS2[M], in SMP mode. If this code supported booting a secondary processor, which it doesn't yet, but if it did, then when a secondary processor boots, it would probably signal the primary processor by setting a variable called something like __secondary_hold_acknowledge. However, due to the lack of the M bit, the primary processor would not snoop the transaction (even if a transaction were broadcast). If primary CPU's L1 D-cache had a copy, it would not be flushed and the CPU would never see the ack. Which would have resulted in the primary CPU spinning for a long time, perhaps a full second before it gives up, while it would have waited for the ack from the secondary CPU that it wouldn't have been able to see because of the stale cache. The value of MAS2 for the boot page TLB1 entry is a compile time constant, so there is no need to calculate it in powerpc assembly language. Also, from the MPC8572 manual section 6.12.5.3, "Bits that represent offsets within a page are ignored and should be cleared." Existing code didn't clear them, this code does. The same when the page of KERNELBASE is found; we don't need to use asm to mask the lower 12 bits off. In the code that computes the address to rfi from, don't hard code the offset to 24 bytes, but have the assembler figure that out for us. Signed-off-by: Trent Piepho Signed-off-by: Kumar Gala commit 6a800f36acd5bf06b5fe2cb27c4d0524d60c3df5 Author: Liu Yu Date: Tue Oct 28 11:50:21 2008 +0800 powerpc: Add SPE/EFP math emulation for E500v1/v2 processors. This patch add the handlers of SPE/EFP exceptions. The code is used to emulate float point arithmetic, when MSR(SPE) is enabled and receive EFP data interrupt or EFP round interrupt. This patch has no conflict with or dependence on FP math-emu. The code has been tested by TestFloat. Now the code doesn't support SPE/EFP instructions emulation (it won't be called when receive program interrupt), but it could be easily added. Signed-off-by: Liu Yu Signed-off-by: Kumar Gala commit 033b8a333c66e0a7dc63132c1bd65175dc98bc25 Author: Liu Yu Date: Tue Oct 28 11:50:20 2008 +0800 powerpc/math-emu: Remove redundant 'ret' FP_DECL_EX is already used, so ret is redundant. And FP_SET_EXCEPTION will add status into return value. Signed-off-by: Liu Yu Signed-off-by: Kumar Gala commit 463a8c01e153c06480b862d83d6a71bf5666a577 Author: Liu Yu Date: Tue Oct 28 11:50:19 2008 +0800 powerpc/math-emu: Adopt new version of _FP_CHOOSENAN Move to using the same macro definition for _FP_CHOOSENAN as s390, sh, sparc32/64. The original author didn't understand this and matched what sparc64 was doing and they have updated to this definition. Signed-off-by: Liu Yu Signed-off-by: Kumar Gala commit cf03033658739accd24f18f864107151a2e9a796 Author: Liu Yu Date: Tue Oct 28 11:50:18 2008 +0800 powerpc/math-emu: Fix single float point division bug PowerPC float point division emulation is derived from gcc. I reported this problem on gcc maillist and got this reply: http://gcc.gnu.org/ml/gcc/2008-03/msg00543.html Since UDIV_NEEDS_NORMALIZATION is not used by kernel, we should use _FP_DIV_MEAT_1_udiv_norm to make sure the single float point is normalized before udiv_qrnnd. Signed-off-by: Liu Yu Signed-off-by: Kumar Gala commit 55b9121b4295a8260e52dd78327f1edd1e34feb2 Author: Kumar Gala Date: Tue Oct 28 08:55:05 2008 -0500 powerpc: Remove unncessary SPE related compiler flag After testing of various compiler flag combinations by Nate Case it was determined that -mabi=no-spe has no impact on the compiler generating SPE instructions. Only -mno-spe and -mspe=no do. Signed-off-by: Kumar Gala commit 0640f84fac8a8aa8e7911c950cd9a4b0199711f6 Merge: 8c2f767bf3c4a7932898e657c6b12a2234cd2eca ff7a3267368634e368ebaac68d5e3abf129edd1d Author: Takashi Iwai Date: Wed Dec 3 14:43:14 2008 +0100 Merge branch 'topic/hda-modularize' into topic/hda commit 6f2a974bfc8d3be7a30674c71e2fef003b39a8d2 Author: Daniel Mack Date: Wed Dec 3 11:44:17 2008 +0100 ASoC: tlv320aic3x: headset/button press support - Add aic3x_set_headset_detection() function to define the headset detection mode for tlv32aic3x chips - added aic3x_button_pressed() - Read from the real-time registers in aic3x_headset_detected() to query headset presence without an occured interrupt Signed-off-by: Daniel Mack Signed-off-by: Mark Brown commit 4b4fffdd9d179677cb030e97869286b62df25adc Author: Mark Brown Date: Wed Dec 3 11:21:08 2008 +0000 ASoC: Fix WM8903 right mixer bypass path Signed-off-by: Mark Brown commit 5920b45303291057fef827f5bdafe04001c1bbae Author: Grazvydas Ignotas Date: Tue Dec 2 20:48:58 2008 +0200 ASoC: TWL4030: Add input selection and gain controls The TWL4030 codec device has two ADCs. Both of them can have several inputs routed to them, but TRM says that only one source can be selected for every ADC, even though every source has a dedicated bit in the registers. This patch adds input source controls. It modifies default register values to have no inputs selected and ADCs disabled. When some input is selected, control handlers enable apropriate input amplifier and ADC. If a microphone is selected, bias power is automatically enabled. When some input is deselected, unused chip parts are disabled. Microphone and line input recording tested on OMAP3 pandora board. Signed-off-by: Grazvydas Ignotas Signed-off-by: Mark Brown commit 7947cf0dd4b6a2bb06c57971502fb81c76a66f2d Author: Hendrik Brueckner Date: Tue Nov 18 01:28:28 2008 +0000 hvc_console: Always schedule resize work on resize The test to check for a new winsize runs out-of-sync with the underlying tty. After a tty has been released and initialized again, the winsize might differ between the tty and the hp struct. The solution is to simply remove the check and always schedule the resize work. Signed-off-by: Hendrik Brueckner Acked-by: Christian Borntraeger Signed-off-by: Paul Mackerras commit 3d26825ec03f623f20ba860e6e6113ab2d0bb0f1 Author: roel kluin Date: Tue Dec 2 11:21:43 2008 +0000 powerpc: Make open count variables signed in hvcs/hvsi/hvc_console Otherwise the tests for count < 0 will never be true. Signed-off-by: Roel Kluin Signed-off-by: Paul Mackerras commit dc42149fccda63a5d2fa4457808c3489a5111c5e Author: Nicolas Palix Date: Tue Dec 2 03:38:55 2008 +0000 drivers/hvc: Add missing of_node_put of_node_put is needed before discarding a value received from of_find_node_by_name, e.g., in error handling code or when the device node is no longer used. The semantic match that catches the bug is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression struct device_node *n; position p1, p2; statement S1,S2; expression E,E1; expression *ptr != NULL; @@ ( if (!(n@p1 = of_find_node_by_name(...))) S1 | n@p1 = of_find_node_by_name(...) ) <... when != of_node_put(n) when != if (...) { <+... of_node_put(n) ...+> } when != true !n || ... when != n = E when != E = n if (!n || ...) S2 ...> ( return \(0\|<+...n...+>\|ptr\); | return@p2 ...; | n = E1 | E1 = n ) @script:python@ p1 << r.p1; p2 << r.p2; @@ print "* file: %s of_find_node_by_name %s return %s" % (p1[0].file,p1[0].line,p2[0].line) // Signed-off-by: Nicolas Palix Signed-off-by: Julia Lawall Acked-by: Stephen Rothwell Signed-off-by: Paul Mackerras commit b908b53d580c3e9aba81ebe3339c5b7b4fa8031d Author: Anton Vorontsov Date: Mon Dec 1 06:30:04 2008 +0000 of/gpio: Implement of_get_gpio_flags() This adds a new function, of_get_gpio_flags, which is like of_get_gpio(), but accepts a new "flags" argument. This new function will be used by the drivers that need to retrieve additional GPIO information, such as active-low flag. Also, this changes the default ("simple") .xlate routine to warn about bogus (< 2) #gpio-cells usage: the second cell should always be present for GPIO flags. Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit 2fd091f3eebc5accefa5f77ff04436982765d15c Author: roel kluin Date: Sat Nov 29 01:17:27 2008 +0000 powerpc/macintosh: Fix unsigned check in smu_sat_get_sdb_partition() i2c_smbus_read_word_data() returns a s32, which may be negative but unsigned len cannot be negative. Signed-off-by: Roel Kluin Signed-off-by: Paul Mackerras commit e6a437eba09f1c3505bedf7a9a9766a878ca09fa Author: Anton Vorontsov Date: Fri Nov 28 09:13:45 2008 +0000 of/i2c: Fill the archdata for I2C devices For I2C devices we just setting the node pointer in the archdata. This is needed so that the I2C devices could find their OF tree nodes. Signed-off-by: Anton Vorontsov Acked-by: Grant Likely Signed-off-by: Paul Mackerras commit 3f3b1632022fcc8317fa3b3c1236471415b3a6b8 Author: Anton Vorontsov Date: Fri Nov 28 09:13:23 2008 +0000 powerpc and sparc: Introduce dev_archdata node accessors The name of the device_node field differ across the platforms, so we have to implement inlined accessors. This is needed to avoid ugly #ifdef in the generic code. Signed-off-by: Anton Vorontsov Acked-by: David S. Miller Acked-by: Grant Likely Signed-off-by: Paul Mackerras commit a0e2f9f4a2487572803d5a00c7302db30e4c60d3 Author: Sonny Rao Date: Sun Nov 9 14:15:11 2008 +0000 powerpc/BSR: Support multiple OF-node description of BSR This adds support for multiple BSR nodes in the OF device tree. Previously, the BSR driver only supported a single OF node describing a BSR. Apparently when an LPAR is set to use "all system resources" the BSR appears as a single node, but when it is handed out in pieces, each 8 byte piece gets its own node. So, this keeps a list of BSR devices instead of the array and includes all nodes. Also, this makes the code be more inclusive of what BSR devices we accept by only checking compatibility and not the device name property (which might change in the future versions of BSR). Signed-off-by: Sonny Rao Signed-off-by: Paul Mackerras commit 6358d6cb328a772eb6f02c870da61709d539480f Author: Sebastien Dugue Date: Thu Nov 27 01:19:18 2008 +0000 powerpc/ibmebus: Get rid of the IRQ mapping in ibmebus_free_irq() ibmebus_free_irq() frees the IRQ but does not remove its mapping, which results in stale entries in the map. This fixes it by adding a call to irq_dispose_mapping() in ibmebus_free_irq(). Signed-off-by: Sebastien Dugue Cc: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 786b32f892dc341b607445bdef29d8e41a840925 Author: Julia Lawall Date: Sun Nov 23 00:48:56 2008 +0000 powerpc: Eliminate NULL test and memset after alloc_bootmem As noted by Akinobu Mita in commit b1fceac2 ("x86: remove unnecessary memset and NULL check after alloc_bootmem()"), alloc_bootmem and related functions never return NULL and always return a zeroed region of memory. Thus a NULL test or memset after calls to these functions is unnecessary. This was fixed using the following semantic patch. (http://www.emn.fr/x-info/coccinelle/) // @@ expression E; statement S; @@ E = \(alloc_bootmem\|alloc_bootmem_low\|alloc_bootmem_pages\|alloc_bootmem_low_pages\|alloc_bootmem_node\|alloc_bootmem_low_pages_node\|alloc_bootmem_pages_node\)(...) ... when != E ( - BUG_ON (E == NULL); | - if (E == NULL) S ) @@ expression E,E1; @@ E = \(alloc_bootmem\|alloc_bootmem_low\|alloc_bootmem_pages\|alloc_bootmem_low_pages\|alloc_bootmem_node\|alloc_bootmem_low_pages_node\|alloc_bootmem_pages_node\)(...) ... when != E - memset(E,0,E1); // Signed-off-by: Julia Lawall Signed-off-by: Paul Mackerras commit 15e09c0ecaab4a1b4a7ed69db536c38948b92279 Author: Becky Bruce Date: Thu Nov 20 06:49:16 2008 +0000 powerpc: Add sync_*_for_* to dma_ops We need to swap these out once we start using swiotlb, so add them to dma_ops. Create CONFIG_PPC_NEED_DMA_SYNC_OPS Kconfig option; this is currently enabled automatically if we're CONFIG_NOT_COHERENT_CACHE. In the future, this will also be enabled for builds that need swiotlb. If PPC_NEED_DMA_SYNC_OPS is not defined, the dma_sync_*_for_* ops compile to nothing. Otherwise, they access the dma_ops pointers for the sync ops. This patch also changes dma_sync_single_range_* to actually sync the range - previously it was using a generous dma_sync_single. dma_sync_single_* is now implemented as a dma_sync_single_range with an offset of 0. Signed-off-by: Becky Bruce Signed-off-by: Paul Mackerras commit c4d04be11f99cc9ce4e3801a5da235727db704a9 Author: Johannes Berg Date: Thu Nov 20 03:24:07 2008 +0000 powerpc: Allow the max stack trace depth to be configured On my screen, when something crashes, I only have space for maybe 16 functions of the stack trace before the information above it scrolls off the screen. It's easy to hack the kernel to print out only that much, but it's harder to remember to do it. This introduces a config option for it so that I can keep the setting in my config. Signed-off-by: Johannes Berg Signed-off-by: Paul Mackerras commit 0186f47e703fb7aa14b54459d642ef5374b3a685 Author: Kumar Gala Date: Wed Nov 19 12:50:04 2008 +0000 powerpc: Use RCU based pte freeing mechanism for all powerpc Refactor the RCU based pte free code that was used on ppc64 to be used on all powerpc. Additionally refactor pte_free() & pte_free_kernel() into common code between ppc32 & ppc64. Signed-off-by: Kumar Gala Signed-off-by: Paul Mackerras commit df3b8611554e389e703fa753540289874fa5126c Author: Kumar Gala Date: Wed Nov 19 05:53:24 2008 +0000 powerpc: Add a local_flush_tlb_page to handle kmap_atomic invalidates The tlb invalidates in kmap_atomic/kunmap_atomic can be called from IRQ context, however they are only local invalidates (on the processor that the kmap was called on). In the future we want to use IPIs to do tlb invalidates this causes issue since flush_tlb_page() is considered a broadcast invalidate. Add local_flush_tlb_page() as a non-broadcast invalidate and use it in kmap_atomic() since we don't have enough information in the flush_tlb_page() call to determine its local. Signed-off-by: Kumar Gala Acked-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit f4f3a1261ad70988ad45614ebc87e553143a332b Author: Kumar Gala Date: Wed Nov 19 05:53:04 2008 +0000 powerpc: hash_page_sync should only be used on SMP & STD_MMU_32 Clean up the ifdefs so we only use hash_page_sync if we have CONFIG_SMP && CONFIG_PPC_STD_MMU_32. Signed-off-by: Kumar Gala Acked-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 4ee5f55175a85fc179c93f00dd7f6a99c896f4d6 Author: Benjamin Herrenschmidt Date: Thu Nov 27 20:05:05 2008 +0000 powerpc: Fix ppc32 mm_struct CPU tracking in SMP The 32-bit hash code didn't need it so far so we don't update mm->cpu_vm_mask on context switch. This however will break when we merge the RCU based page table freeing patch and other upcoming 32-bit embedded SMP work, so this adds the update. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 1b98326b91eb9eea346945779e1f245aa66b17ce Author: Kumar Gala Date: Wed Nov 19 04:39:53 2008 +0000 powerpc: Add MSR[CE, DE] to the MSR bits we print on show_regs() Signed-off-by: Kumar Gala Signed-off-by: Paul Mackerras commit 764f3b95131a7ce5c992e3d00caf590fcada2f7b Author: Ingo Molnar Date: Wed Dec 3 10:33:58 2008 +0100 tracing/function-graph-tracer: enabled by default CONFIG_FUNCTION_GRAPH_TRACER depends on FUNCTION_TRACER already, (turning it non-default) so it so making it default-n is pointless. So enable it by default - it's a nice extension of the function tracer. Signed-off-by: Ingo Molnar commit 527491885554002837b5742202adc0ab5f536e54 Merge: cea555d384b85271035814c5adad23e6c7fc5d2a 2434bbb30e79468c49cff3cff6005236f55ed188 Author: Paul Mackerras Date: Wed Dec 3 20:11:06 2008 +1100 Merge branch 'merge' commit 29fa0b301bc823016d1a3bed41c36a8977ef9947 Author: Wei Yongjun Date: Wed Dec 3 00:33:09 2008 -0800 xfrm: Cleanup for unlink SPD entry Used __xfrm_policy_unlink() to instead of the dup codes when unlink SPD entry. Signed-off-by: Wei Yongjun Signed-off-by: David S. Miller commit 22d55328b7d27694718f5d64a53d2bddbbe173a5 Merge: 3f8c6c9c7739d18e4b75902fdcbf6c3ba98dc123 d5654efd3ff1cd0baa935a0c9a5d89862f07d009 Author: David S. Miller Date: Wed Dec 3 00:29:24 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 commit 166d3c7994d79ab3f78f420607283361ff5cce79 Author: Frederic Weisbecker Date: Wed Dec 3 02:32:12 2008 +0100 tracing/function-graph-tracer: improve duration output Impact: better trace output of duration for long calls The old duration output didn't exceeded 9999.999 us to fit the column and the nanosecs were always 3 numbers. As Ingo suggested, it's better to have the whole microseconds elapsed time and shift the nanosecs precision if needed to fit the maximum 7 numbers. And usec need more number, the case should be rare and important enough to break a bit the column alignment to show it. So, depending of the duration value, we now have these patterns: u.nnn us uu.nnn us uuu.nnn us uuuu.nnn us uuuuu.nn us uuuuuu.n us uuuuuuuu..... us Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 11e84acc400921743cc8d488e4a265cd98a655c7 Author: Frederic Weisbecker Date: Wed Dec 3 02:30:37 2008 +0100 tracing/function-graph-tracer: display unified style cmdline and pid Impact: extend function-graph output: let one know which thread called a function This patch implements a helper function to print the couple cmdline/pid. Its output is provided during task switching and on each row if the new "funcgraph-proc" defualt-off option is set through trace_options file. The output is center aligned and never exceeds 14 characters. The cmdline is truncated over 7 chars. But note that if the pid exceeds 6 characters, the column will overflow (but the situation is abnormal). Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 62679efe0a5f02987a621942afc5979a80a6ca5a Author: Steven Rostedt Date: Tue Dec 2 23:50:06 2008 -0500 ftrace: add checks on ret stack in function graph Import: robustness checks Add more checks in the function graph code to detect errors and perhaps print out better information if a bug happens. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit e49dc19c6a19ea112fcb94b7c62ec62cdd5c08aa Author: Steven Rostedt Date: Tue Dec 2 23:50:05 2008 -0500 ftrace: function graph return for function entry Impact: feature, let entry function decide to trace or not This patch lets the graph tracer entry function decide if the tracing should be done at the end as well. This requires all function graph entry functions return 1 if it should trace, or 0 if the return should not be traced. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 7ee991fbc6f947e9b04f29c9c6c1d057d0671a16 Author: Steven Rostedt Date: Tue Dec 2 23:50:04 2008 -0500 ftrace: print real return in dumpstack for function graph Impact: better dumpstack output I noticed in my crash dumps and even in the stack tracer that a lot of functions listed in the stack trace are simply return_to_handler which is ftrace graphs way to insert its own call into the return of a function. But we lose out where the actually function was called from. This patch adds in hooks to the dumpstack mechanism that detects this and finds the real function to print. Both are printed to let the user know that a hook is still in place. This does give a funny side effect in the stack tracer output: Depth Size Location (80 entries) ----- ---- -------- 0) 4144 48 save_stack_trace+0x2f/0x4d 1) 4096 128 ftrace_call+0x5/0x2b 2) 3968 16 mempool_alloc_slab+0x16/0x18 3) 3952 384 return_to_handler+0x0/0x73 4) 3568 -240 stack_trace_call+0x11d/0x209 5) 3808 144 return_to_handler+0x0/0x73 6) 3664 -128 mempool_alloc+0x4d/0xfe 7) 3792 128 return_to_handler+0x0/0x73 8) 3664 -32 scsi_sg_alloc+0x48/0x4a [scsi_mod] As you can see, the real functions are now negative. This is due to them not being found inside the stack. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 044fa782ebb9472cf5253e95d9a625fd4c0bdd99 Author: Steven Rostedt Date: Tue Dec 2 23:50:03 2008 -0500 ring-buffer: change "page" variable names to "bpage" Impact: clean up Andrew Morton pointed out that the kernel convention of a variable named page should be of type page struct. The ring buffer uses a variable named "page" for a pointer to something else. This patch converts those to be called "bpage" (as in "buffer page"). Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 14a866c567e040ccf6240d68b083dd1dbbde63e6 Author: Steven Rostedt Date: Tue Dec 2 23:50:02 2008 -0500 ftrace: add ftrace_graph_stop() Impact: new ftrace_graph_stop function While developing more features of function graph, I hit a bug that caused the WARN_ON to trigger in the prepare_ftrace_return function. Well, it was hard for me to find out that was happening because the bug would not print, it would just cause a hard lockup or reboot. The reason is that it is not safe to call printk from this function. Looking further, I also found that it calls unregister_ftrace_graph, which grabs a mutex and calls kstop machine. This would definitely lock the box up if it were to trigger. This patch adds a fast and safe ftrace_graph_stop() which will stop the function tracer. Then it is safe to call the WARN ON. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit bb4304c71c97bf727ec43cd2f195c2c237c27fd3 Author: Steven Rostedt Date: Tue Dec 2 15:34:09 2008 -0500 ftrace: have function graph use mcount caller address Impact: consistency change for function graph This patch makes function graph record the mcount caller address the same way the function tracer does. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 347fdd9dd4e5d3f3a4e415925c35bdff1d59c3a9 Author: Steven Rostedt Date: Tue Dec 2 15:34:08 2008 -0500 ftrace: clean up function graph asm Impact: clean up There exists macros for x86 asm to handle x86_64 and i386. This patch updates function graph asm to use them. Signed-off-by: Steven Rostedt Acked-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 8789a9e7df6bf9b93739c4c7d4e380725bc9e936 Author: Steven Rostedt Date: Tue Dec 2 15:34:07 2008 -0500 ring-buffer: read page interface Impact: new API to ring buffer This patch adds a new interface into the ring buffer that allows a page to be read from the ring buffer on a given CPU. For every page read, one must also be given to allow for a "swap" of the pages. rpage = ring_buffer_alloc_read_page(buffer); if (!rpage) goto err; ret = ring_buffer_read_page(buffer, &rpage, cpu, full); if (!ret) goto empty; process_page(rpage); ring_buffer_free_read_page(rpage); The caller of these functions must handle any waits that are needed to wait for new data. The ring_buffer_read_page will simply return 0 if there is no data, or if "full" is set and the writer is still on the current page. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit abc9b56d66fbd4d93302ef4bf6fa726e1b8255f9 Author: Steven Rostedt Date: Tue Dec 2 15:34:06 2008 -0500 ring-buffer: move some metadata into buffer page Impact: get ready for splice changes This patch moves the commit and timestamp into the beginning of each data page of the buffer. This change will allow the page to be moved to another location (disk, network, etc) and still have information in the page to be able to read it. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit a5e25883a445dce94a087ca479b21a5959cd5c18 Author: Steven Rostedt Date: Tue Dec 2 15:34:05 2008 -0500 ftrace: replace raw_local_irq_save with local_irq_save Impact: fix for lockdep and ftrace The raw_local_irq_save/restore confuses lockdep. This patch converts them to the local_irq_save/restore variants. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit dfdc5437bd62dd6a26961e27f26b671374749875 Merge: f0461d0146ee30927bc7efa2ae24ea8c6693b725 061e41fdb5047b1fb161e89664057835935ca1d2 878719e831d9e076961aa15d4049a57a6668c67a Author: Ingo Molnar Date: Wed Dec 3 08:54:47 2008 +0100 Merge commit 'v2.6.28-rc7'; branch 'x86/dumpstack' into tracing/ftrace Merge x86/dumpstack into tracing/ftrace because upcoming ftrace changes depend on cleanups already in x86/dumpstack. Also merge to latest upstream -rc. commit f0461d0146ee30927bc7efa2ae24ea8c6693b725 Merge: 66eafebc1086014709dc38f52ddcb3d67d9b346c 48d68b20d00865035b8b65e69af343d0f53fac9d Author: Ingo Molnar Date: Wed Dec 3 08:49:21 2008 +0100 Merge branches 'tracing/ftrace' and 'tracing/function-graph-tracer' into tracing/core commit 181de82ee3ffda1175f89d50c991dae31b79280c Author: FUJITA Tomonori Date: Wed Dec 3 14:53:04 2008 +0900 x86: remove dead BIO_VMERGE_BOUNDARY definition Impact: cleanup, remove dead code The block layer dropped the virtual merge feature (b8b3e16cfe6435d961f6aaebcfd52a1ff2a988c5). BIO_VMERGE_BOUNDARY definition is meaningless now. Signed-off-by: FUJITA Tomonori Acked-by: Jens Axboe Signed-off-by: Ingo Molnar commit 6083aa485c86933ee444dc2242270d37ea4664cb Merge: dcb7731a185efbf3d800618d874af99895df5afb 93093d099e5dd0c258fd530c12668e828c20df41 Author: Ingo Molnar Date: Wed Dec 3 08:25:56 2008 +0100 Merge branch 'x86/io' into x86/iommu Merge x86/io into x86/iommu due to a small patch conflict in io.h. commit 3f8c6c9c7739d18e4b75902fdcbf6c3ba98dc123 Merge: aa2ba5f1082dc705745899584aac8416d710c056 9a5df92374d65e2886b92e98dd7d873c533a83ff Author: David S. Miller Date: Tue Dec 2 22:38:02 2008 -0800 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-next-2.6 commit aa2ba5f1082dc705745899584aac8416d710c056 Merge: 68024541e2e5a8f35e281daaa5068a29e2a538a5 f6f7b52e2f6149d2ee365717afff315b05720162 Author: David S. Miller Date: Tue Dec 2 19:50:27 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/ixgbe/ixgbe_main.c drivers/net/smc91x.c commit 68024541e2e5a8f35e281daaa5068a29e2a538a5 Merge: ca17584bf2ad1b1e37a5c0e4386728cc5fc9dabc 39da5814db81e8fe9782ae5ea24c0fdfcf2adc96 Author: David S. Miller Date: Tue Dec 2 15:05:06 2008 -0800 Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus commit ca17584bf2ad1b1e37a5c0e4386728cc5fc9dabc Author: Stephen Hemminger Date: Tue Dec 2 15:00:28 2008 -0800 mac8390: update to net_device_ops Another related 8390 driver. Since this is for nubus, not sure if anyone still has the hardware? Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit b9a9b4b0429d0c0e4655d531a57a6424d972433c Author: Stephen Hemminger Date: Tue Dec 2 14:52:25 2008 -0800 etherh: build fix for net-next Fix build of ARM etherh driver with new net_device_ops. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit dcb7731a185efbf3d800618d874af99895df5afb Author: Joerg Roedel Date: Tue Dec 2 20:16:03 2008 +0100 x86: fix broken flushing in GART nofullflush path Impact: remove stale IOTLB entries In the non-default nofullflush case the GART is only flushed when next_bit wraps around. But it can happen that an unmap operation unmaps memory which is behind the current next_bit location. If these addresses are reused it may result in stale GART IO/TLB entries. Fix this by setting the GART next_bit always behind an unmapped location. Signed-off-by: Joerg Roedel Signed-off-by: Ingo Molnar commit 87689d567a45f80416feea0a2aa6d3a2a6b8963a Author: Mark Brown Date: Tue Dec 2 16:01:14 2008 +0000 ASoC: Push platform registration down into the card As part of the deprecation of snd_soc_device push the registration of the platform down into the card structure. Signed-off-by: Mark Brown commit 96841bae6ebfede07294447ad2de9e6385ae9fb5 Author: Mark Brown Date: Tue Dec 2 15:15:50 2008 +0000 ALSA: ac97 - Include ac97_codec.h for ac97_bus_type declaration This fixes a sparse warning caused by the lack of a connection with the prototype for ac97_bus_type. Signed-off-by: Mark Brown Signed-off-by: Takashi Iwai commit 6308419a199eed66086cd756ab8dc81b88d54a6b Author: Mark Brown Date: Tue Dec 2 15:08:03 2008 +0000 ASoC: Push workqueue data into snd_soc_card ASoC v2 does not use the struct snd_soc_device at runtime, using struct snd_soc_card as the root of the card. Begin removing data from snd_soc_device by pushing the workqueue data into snd_soc_card, using a backpointer to the snd_soc_device to keep things going for the time being. Signed-off-by: Mark Brown commit 39da5814db81e8fe9782ae5ea24c0fdfcf2adc96 Author: Mark McLoughlin Date: Wed Nov 26 13:58:11 2008 +0000 virtio_net: large tx MTU support We don't really have a max tx packet size limit, so allow configuring the device with up to 64k tx MTU. Signed-off-by: Mark McLoughlin Signed-off-by: Rusty Russell commit 8daa19051e1c7369c89ace7b18e74fe1f55dfa29 Author: Niels de Vos Date: Mon Dec 1 14:13:53 2008 -0800 x86, apm: remove CONFIG_APM_REAL_MODE_POWER_OFF in favor of a kernel parameter Remove CONFIG_APM_REAL_MODE_POWER_OFF like CONFIG_APM_POWER_OFF which has been done for linux-2.2.14pre8 (http://lkml.org/lkml/1999/11/23/3). Re-introducing CONFIG_APM_POWER_OFF got nack-ed. Stephen didn't bother to remove CONFIG_APM_REAL_MODE_POWER_OFF, let's get rid of it now. Reference: http://lkml.org/lkml/2008/5/7/97 Signed-off-by: Andrew Morton Signed-off-by: Ingo Molnar commit 48d68b20d00865035b8b65e69af343d0f53fac9d Author: Frederic Weisbecker Date: Tue Dec 2 00:20:39 2008 +0100 tracing/function-graph-tracer: support for x86-64 Impact: extend and enable the function graph tracer to 64-bit x86 This patch implements the support for function graph tracer under x86-64. Both static and dynamic tracing are supported. This causes some small CPP conditional asm on arch/x86/kernel/ftrace.c I wanted to use probe_kernel_read/write to make the return address saving/patching code more generic but it causes tracing recursion. That would be perhaps useful to implement a notrace version of these function for other archs ports. Note that arch/x86/process_64.c is not traced, as in X86-32. I first thought __switch_to() was responsible of crashes during tracing because I believed current task were changed inside but that's actually not the case (actually yes, but not the "current" pointer). So I will have to investigate to find the functions that harm here, to enable tracing of the other functions inside (but there is no issue at this time, while process_64.c stays out of -pg flags). A little possible race condition is fixed inside this patch too. When the tracer allocate a return stack dynamically, the current depth is not initialized before but after. An interrupt could occur at this time and, after seeing that the return stack is allocated, the tracer could try to trace it with a random uninitialized depth. It's a prevention, even if I hadn't problems with it. Signed-off-by: Frederic Weisbecker Cc: Steven Rostedt Cc: Tim Bird Signed-off-by: Ingo Molnar commit 16950e09cf07b54abb78dd09f8ef3c85c6bdc9de Author: Takashi Iwai Date: Tue Dec 2 09:31:16 2008 +0100 ALSA: emu10k1 - Add capture boost mixer switch for Audigy Due to the conversion (drop) from 24bit in the DSP to 16bit in AC97, the maximum capture level on Audigy seems lower than it could be. This patch adds a workaround to enable the artificial capture boost switch. When this switch is on, the whole analog capature level is boost up. However, this results in the lower capture resolution. Signed-off-by: Takashi Iwai commit 66eafebc1086014709dc38f52ddcb3d67d9b346c Author: Liming Wang Date: Tue Dec 2 10:33:08 2008 +0800 function trace: fix a bug of single thread function trace Impact: fix "no output from tracer" bug caused by ftrace_update_pid_func() When disabling single thread function trace using "echo -1 > set_ftrace_pid", the normal function trace has to restore to original function, otherwise the normal function trace will not work well. Without this commit, something like below: $ ps |grep 850 850 root 2556 S -/bin/sh $ echo 850 > /debug/tracing/set_ftrace_pid $ echo function > /debug/tracing/current_tracer $ echo 1 > /debug/tracing/tracing_enabled $ sleep 1 $ echo 0 > /debug/tracing/tracing_enabled $ cat /debug/tracing/trace_pipe |wc -l 59704 $ echo -1 > /debug/tracing/set_ftrace_pid $ echo 1 > /debug/tracing/tracing_enabled $ sleep 1 $ echo 0 > /debug/tracing/tracing_enabled $ more /debug/tracing/trace_pipe <====== nothing output now! it should output trace record. Signed-off-by: Liming Wang Signed-off-by: Ingo Molnar commit 222658e08f72cd539d01f3aabdc258c596f487e2 Merge: 74bf3cabc306f31ddd02f2c1b0540a6cfcacc593 65c6dc6adbe7ee0acf207445243400a68c77af15 c072c24975ec4f0ccfcb6f5c8a8040b6eb75ef8f d51090b34602a20984ab0312ef04e47069c0aec6 a838c2ec6ea1f18431da74dfe4978c57355b95f3 f1eecf0e4f0796911cc076f38fcf05fea0b353d5 604094f4615180f71da799e7e5b191f5c2a42a28 f08340c5d68ab621f377c108637e2d8e95b3e5d4 Author: Ingo Molnar Date: Tue Dec 2 09:20:44 2008 +0100 Merge branches 'tracing/branch-tracer', 'tracing/ftrace', 'tracing/function-graph-tracer', 'tracing/markers', 'tracing/powerpc', 'tracing/stack-tracer' and 'tracing/tracepoints' into tracing/core commit 74bf3cabc306f31ddd02f2c1b0540a6cfcacc593 Merge: c7cc77307669336a08928ab8668bdb3f3bcc021b 4f5a7f40ddbae98569acbb99118a98570315579c Author: Ingo Molnar Date: Tue Dec 2 09:20:29 2008 +0100 Merge branch 'tracing/urgent' into tracing/core Conflicts: kernel/trace/ring_buffer.c commit 6976a1d6c222c50ac93d2273b9cf57e6fd047e59 Author: Eric Dumazet Date: Mon Dec 1 23:37:17 2008 -0800 net: percpu_counter_inc() should not be called in BH-disabled section Based upon a lockdep report by Alexey Dobriyan. I checked all per_cpu_counter_xxx() usages in network tree, and I think all call sites are BH enabled except one in inet_csk_listen_stop(). commit dd24c00191d5e4a1ae896aafe33c6b8095ab4bd1 (net: Use a percpu_counter for orphan_count) replaced atomic_t orphan_count to a percpu_counter. atomic_inc()/atomic_dec() can be called from any context, while percpu_counter_xxx() should be called from a consistent state. For orphan_count, this context can be the BH-enabled one. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 422d9cdcb85b3622d08a590fed66021af7aea333 Author: Gerrit Renker Date: Mon Dec 1 23:34:01 2008 -0800 dccp: Feature activation handlers This patch provides the post-processing of feature negotiation state, after the negotiation has completed. To this purpose, handlers are used and added to the dccp_feat_table. Each handler is passed a boolean flag whether the RX or TX side of the feature is meant. Several handlers are provided already, new handlers can easily be added. The initialisation is now fully dynamic, i.e. CCIDs are activated only after the feature negotiation. The integration of this dynamic activation is done in the subsequent patches. Thanks to Wei Yongjun for pointing out the necessity of skipping over empty Confirm options while copying the negotiated feature values. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit b1ad00422ecba0449f8e3a8f2ec9267bc994bf8f Author: Gerrit Renker Date: Mon Dec 1 23:33:18 2008 -0800 dccp: Processing Confirm options Analogous to the previous patch, this adds code to interpret incoming Confirm feature-negotiation options. Both functions operate on the feature-negotiation list of either the request_sock (server) or the dccp_sock (client). Thanks to Wei Yongjun for pointing out that it is overly restrictive to check the entire list of confirmed SP values. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit e77b8363b2ea7c0d89919547c1a8b0562f298b57 Author: Gerrit Renker Date: Mon Dec 1 23:32:35 2008 -0800 dccp: Process incoming Change feature-negotiation options This adds/replaces code for processing incoming ChangeL/R options. The main difference is that: * mandatory FN options are now interpreted inside the function (there are too many individual cases to do this externally); * the function returns an appropriate Reset code or 0, which is then used to fill in the data for the Reset packet. Old code, which is no longer used or referenced, has been removed. Signed-off-by: Gerrit Renker Signed-off-by: David S. Miller commit 75757a7d0c54f8fdd414c74a6005d275032b0115 Author: Gerrit Renker Date: Mon Dec 1 23:31:04 2008 -0800 dccp: Preference list reconciliation This provides two functions to * reconcile preference lists (with appropriate return codes) and * reorder the preference list if successful reconciliation changed the preferred value. The patch also removes the old code for processing SP/NN Change options, since new code to process these is mostly there already; related references have been commented out. The code for processing Change options follows in the next patch. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 8b7b6c75c6387527b195bb69100182288da94f84 Author: Gerrit Renker Date: Mon Dec 1 23:29:30 2008 -0800 dccp: Integrate feature-negotiation insertion code The patch implements insertion of feature negotiation at the server (listening and request socket) and the client (connecting socket). In dccp_insert_options(), several statements have been grouped together now to achieve (it is hoped) better efficiency by reducing the number of tests each packet has to go through: - Ack Vectors are sent if the packet is neither a Data or a Request packet; - a previous issue is corrected - feature negotiation options are allowed on DataAck packets (5.8). Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 0971d17ca3d80f61863f4750091a64448bf91600 Author: Gerrit Renker Date: Mon Dec 1 23:27:31 2008 -0800 dccp: Insert feature-negotiation options into skb This patch replaces the earlier insertion routine from options.c, so that code specific to feature negotiation can remain in feat.c. This is possible by calling a function already existing in options.c. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 7c37d74474c8ee8ddcd5a2d2a9571d4a1290c844 Author: Ralph Campbell Date: Mon Dec 1 20:59:08 2008 -0800 IB/ipath: Improve UD loopback performance by allocating temp array only once Receive work queue entries are checked for L_Key validity, and pointers to the memory region structure are saved in an allocated structure. For UD loopback packets, this structure is allocated and freed for each packet. This patch changes that to allocate/free during QP creation and destruction. Signed-off-by: Ralph Campbell Signed-off-by: Roland Dreier commit 64f22fa17c1a531e682ebc882566856ea5718495 Author: Michael Ellerman Date: Mon Dec 1 20:59:07 2008 -0800 IB/ipath: Fix pointer-to-pointer thinko in ipath_fs.c The return from lookup_one_len() is assigned to *dentry, so that's what we should be checking with IS_ERR(). Signed-off-by: Michael Ellerman Signed-off-by: Roland Dreier commit 75c21ae9aa75b0452318d05f737ea838672137f5 Author: Joachim Fenkes Date: Mon Dec 1 20:58:57 2008 -0800 IB/ehca: Fix locking for shca_list_lock shca_list_lock is taken from softirq context in ehca_poll_eqs, so we need to lock IRQ safe elsewhere. Found by lockdep. Signed-off-by: Michael Ellerman Signed-off-by: Joachim Fenkes Signed-off-by: Roland Dreier commit 0ecfe7987855d21c2a89ffe003ddf0ee11b42d47 Author: Mark Brown Date: Mon Dec 1 17:59:25 2008 +0000 ASoC: Don't free static data in WM9713 Signed-off-by: Mark Brown commit 4290239cd05b6323da87b5e7e7db4c673bff5359 Author: Peter Ujfalusi Date: Mon Dec 1 10:03:47 2008 +0200 ASoC: TWL4030: Add volume controls for outputs All outputs have dedicated gain controls except the HandsFree output. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit d889a72c5c71161d6f934f9d7fca0e5b7e52bc08 Author: Peter Ujfalusi Date: Mon Dec 1 10:03:46 2008 +0200 ASoC: TWL4030: Change the common playback volume controls Add Playback volume controls for all four DACs. All four paths has three levels of volume controls: Digital Fine gain, Digital Coarse gain, Analog gain. The controls are named to reflect their connection to the DACs. Per DAC volume can be performed, if needed: amixer sset 'DAC1 Analog' 5,10 DACL1 analog gain to 5 DACR1 analog gain to 10 Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 381a22b564ff5a7ada09ad9a0831246da1dc5513 Author: Peter Ujfalusi Date: Mon Dec 1 10:03:45 2008 +0200 ASoC: TWL4030: Change the capture volume control to TLV The digital Capture gain control has a range: 0 to 31 dB in 1 dB steps. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit fa5c76978cee331b25e6d271482cf8e76f51e68b Author: Mark Brown Date: Sun Nov 30 22:55:46 2008 +0000 ASoC: Remove in-code changelog from AD73311 driver Signed-off-by: Mark Brown commit 7d8c16a6f728f0ee5c42d1d731923cfd0cc19971 Author: Mark Brown Date: Sun Nov 30 22:11:24 2008 +0000 ASoC: Annotate core removal function Signed-off-by: Mark Brown commit 968a6025aa9f909d487988efb542217a126023a0 Author: Mark Brown Date: Fri Nov 28 11:49:07 2008 +0000 ASoC: Rename snd_soc_register_card() to snd_soc_init_card() Currently ASoC card initialisation is completed by a function called snd_soc_register_card(). As part of the work to allow independant registration of cards, codecs and machines in ASoC v2 a new function of the same name has been added so rename the existing function to facilitate the merge of v2. Signed-off-by: Mark Brown commit 6c415b9234a8c71f290e5d4fddc467f103f32719 Author: Arun R Bharadwaj Date: Mon Dec 1 20:49:05 2008 +0530 sched: add uid information to sched_debug for CONFIG_USER_SCHED Impact: extend information in /proc/sched_debug This patch adds uid information in sched_debug for CONFIG_USER_SCHED Signed-off-by: Arun R Bharadwaj Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 50cec5c51c18301ff60262fdbe920f4a907c9d81 Author: FUJITA Tomonori Date: Tue Dec 2 02:17:15 2008 +0900 x86: fix dma_mapping_error for 32bit x86, cleanup This removes ifdef CONFIG_X86_64 in dma_mapping_error(): 1) Xen people plan to use swiotlb on X86_32 for Dom0 support. swiotlb uses ops->mapping_error so X86_32 also needs to check ops->mapping_error. 2) Removing #ifdef hack is almost always a good thing. Signed-off-by: FUJITA Tomonori Signed-off-by: Ingo Molnar commit f6d2e6f57bba66272b28dd20c949b14ce39cb804 Merge: 8caac56305cef98f9357b060a77939d17699937d 7b1dedca42ac0d0d0be01e39d8461bb53a2389b3 Author: Ingo Molnar Date: Mon Dec 1 20:36:13 2008 +0100 Merge branch 'x86/urgent' into x86/iommu commit 682d5874f3d654b5d13d9b8dd56b9e05cfadd01b Author: Takashi Iwai Date: Mon Dec 1 20:03:54 2008 +0100 ALSA: ASoC: Fix old-style trigger callback in s3c2443-ac97.c Fix the old-style trigger callback in s3c2443-ac97.c: sound/soc/s3c24xx/s3c2443-ac97.c:378: warning: initialization from incompatible pointer type Signed-off-by: Takashi Iwai commit 5220ed6b321639d68a66bad2082456c1b273f3ea Author: Takashi Iwai Date: Mon Dec 1 20:00:47 2008 +0100 ALSA: ASoC: Fix compile warnings on corgi.c Fix the wrong shutdown callback type. Also removed the unused variables there: sound/soc/pxa/corgi.c: In function 'corgi_shutdown': sound/soc/pxa/corgi.c:114: warning: unused variable 'codec' sound/soc/pxa/corgi.c: At top level: sound/soc/pxa/corgi.c:175: warning: initialization from incompatible pointer type Acked-by: Mark Brown Signed-off-by: Takashi Iwai commit 0bc286e2ac72e483d2b5a6dac0dafb05e9f047c8 Author: Takashi Iwai Date: Mon Dec 1 19:59:35 2008 +0100 Revert "ALSA: soc - Fix compile warnings in wm8903.c" This reverts commit 9171e5e6a20a9cd4992ff9c7cbee13c6fdf7b0b1. I can't reproduce the compile warnings any more. The warnings might be some weird cross-compiling set up. Signed-off-by: Takashi Iwai commit 2caf6a1f9c8bcdc81ba580cfbf512d073c9444be Author: Takashi Iwai Date: Mon Dec 1 17:56:06 2008 +0100 ALSA: ASoC: Remove superfluous dependency on SND_SOC The dependency on SND_SOC is already fulfilled in sound/soc/Kconfig, thus no more need in Kconfig of each sub directory. Signed-off-by: Takashi Iwai commit 3af4182cc5be7d5505f9801ee3297373f1872446 Merge: f5d4c67e41a262f0cdfaec1bb0fa8e5952187ef9 c07f62e5f18123103459ff74e86af1518a5b8af5 Author: Takashi Iwai Date: Mon Dec 1 18:02:17 2008 +0100 Merge branch 'upstream' into topic/asoc commit f5d4c67e41a262f0cdfaec1bb0fa8e5952187ef9 Author: Takashi Iwai Date: Mon Dec 1 16:29:47 2008 +0100 ALSA: soc - Remove obsoleted sound/driver.h inclusion Signed-off-by: Takashi Iwai commit 1966bbd62ce31cef0cb020a6b4bd852dbc63b40c Author: Mark Brown Date: Mon Dec 1 14:54:45 2008 +0000 ALSA: ac97 - Add WM9715 to AC97 IDs The WM9715 is software compatible with the WM9711 and WM9712. Signed-off-by: Mark Brown Signed-off-by: Takashi Iwai commit 9171e5e6a20a9cd4992ff9c7cbee13c6fdf7b0b1 Author: Takashi Iwai Date: Mon Dec 1 15:39:13 2008 +0100 ALSA: soc - Fix compile warnings in wm8903.c Hide annoying uninitialized warnings: sound/soc/codecs/wm8903.c:382: warning: ‘reg’ may be used uninitialized in this function sound/soc/codecs/wm8903.c:383: warning: ‘shift’ may be used uninitialized in this function Signed-off-by: Takashi Iwai commit ade9b2fb9bf8114f77eefc70b9042417e62acf72 Author: Markus Bollinger Date: Mon Dec 1 15:31:06 2008 +0100 ALSA: pcxhr - change firmware filenames - compatibility issue : change firmware filenames the pcxhr driver version <= 1.0.18a does not work with new firmware > 1.0.17. Keep the old firmware files and add new firmware files with different names Signed-off-by: Markus Bollinger Signed-off-by: Takashi Iwai commit 480cf663e6988b3e79b570b42d2dbdb6c2ba9b94 Author: Takashi Iwai Date: Mon Dec 1 15:28:07 2008 +0100 ALSA: Fix a compile warning in cs46xx_lib.c Fix a build warning sound/pci/cs46xx/cs46xx_lib.c:3643: warning: unused variable ‘i’ when CONFIG_SND_CS46XX_NEW_DSP=n. Signed-off-by: Takashi Iwai commit 8c2f767bf3c4a7932898e657c6b12a2234cd2eca Author: Takashi Iwai Date: Mon Dec 1 11:54:35 2008 +0100 ALSA: hda - Remove unnecessary caches for power states in patch_sigmatel.c The power-state changes in patch_sigmatel.c are accessed via *_cached() but they shouldn't be really cached. Fixed to the normal write. Also, stac92hd71xx_suspend and resume are no longer necessary as the power-state changes are handled properly in the common routine. Removed these hacks now. Signed-off-by: Takashi Iwai commit c9b46f9144b8dce6c12aec08f34a908aedd28b37 Author: Takashi Iwai Date: Mon Dec 1 11:42:09 2008 +0100 ALSA: hda - Use amp cache for SPDIF mute controls in patch_sigmatel.c The amp switch of SPDIF outputs have to be cached in the amp cache instead of codec cache. Otherwise it conflicts with the IEC958 playback switch control in hda_codec.c. Signed-off-by: Takashi Iwai commit 9a5df92374d65e2886b92e98dd7d873c533a83ff Author: Marcel Holtmann Date: Sun Nov 30 12:17:29 2008 +0100 Bluetooth: Fix RFCOMM release oops when device is still in use It turns out that the following sequence of actions will reproduce the oops: 1. Create a new RFCOMM device (using RFCOMMCREATEDEV ioctl) 2. (Try to) open the device 3. Release the RFCOMM device (using RFCOMMRELEASEDEV ioctl) At this point, the "/dev/rfcomm*" device is still in use, but it is gone from the internal list, so the device id can be reused. 4. Create a new RFCOMM device with the same device id as before And now kobject will complain that the TTY already exists. (See http://lkml.org/lkml/2008/7/13/89 for a reproducible test-case.) This patch attempts to correct this by only removing the device from the internal list of devices at the final unregister stage, so that the id won't get reused until the device has been completely destructed. This should be safe as the RFCOMM_TTY_RELEASED bit will be set for the device and prevent the device from being reopened after it has been released. Based on a report from Vegard Nossum Signed-off-by: Marcel Holtmann commit 2e792995e4cb425422dc379c3618447c462756a8 Author: Marcel Holtmann Date: Sun Nov 30 12:17:29 2008 +0100 Bluetooth: Fix format arguments warning Newer GCC versions are a little bit picky about how to deal with format arguments: net/bluetooth/hci_sysfs.c: In function ‘hci_register_sysfs’: net/bluetooth/hci_sysfs.c:418: warning: format not a string literal and no format arguments It is simple enough to fix and makes the compiler happy. Signed-off-by: Marcel Holtmann commit a418b893a6af11ae73c762ed5b76c1bad6dc19d8 Author: Marcel Holtmann Date: Sun Nov 30 12:17:28 2008 +0100 Bluetooth: Enable per-module dynamic debug messages With the introduction of CONFIG_DYNAMIC_PRINTK_DEBUG it is possible to allow debugging without having to recompile the kernel. This patch turns all BT_DBG() calls into pr_debug() to support dynamic debug messages. As a side effect all CONFIG_BT_*_DEBUG statements are now removed and some broken debug entries have been fixed. Signed-off-by: Marcel Holtmann commit 5ddd4a60683f819982b7bd3d1aee972f931c11a3 Author: Marcel Holtmann Date: Sun Nov 30 12:17:27 2008 +0100 Bluetooth: Allow SCO audio with Asus WL-BTD202 dongle This patch allows the Asus WL-BTD202 dongle to be used with a mono headset without having to specify "options btusb force_scofix=1". Based on a patch from Guillaume Bedot Signed-off-by: Marcel Holtmann commit 7a9d4020533b5c0c615b6de3be154c9ff30b8cc9 Author: Marcel Holtmann Date: Sun Nov 30 12:17:26 2008 +0100 Bluetooth: Send HCI Reset command by default on device initialization The Bluetooth subsystem was not using the HCI Reset command when doing device initialization. The Bluetooth 1.0b specification was ambiguous on how the device firmware was suppose to handle it. Almost every device was triggering a transport reset at the same time. In case of USB this ended up in disconnects from the bus. All modern Bluetooth dongles handle this perfectly fine and a lot of them actually require that HCI Reset is sent. If not then they are either stuck in their HID Proxy mode or their internal structures for inquiry and paging are not correctly setup. To handle old and new devices smoothly the Bluetooth subsystem contains a quirk to force the HCI Reset on initialization. However maintaining such a quirk becomes more and more complicated. This patch turns the logic around and lets the old devices disable the HCI Reset command. The only device where the HCI_QUIRK_NO_RESET is still needed are the original Digianswer devices and dongles with an early CSR firmware. CSR reported that they fixed this for version 12 firmware. The last official release of version 11 firmware is build ID 115. The first version 12 candidate was build ID 117. Signed-off-by: Marcel Holtmann commit 12421b40b81d101d7535e03f1af197365adc932b Author: Marcel Holtmann Date: Sun Nov 30 12:17:21 2008 +0100 Bluetooth: Remove deprecated hci_usb driver The old hci_usb driver has been fully replaced with the new btusb driver and all major distributions switched to the new driver now. This removes it since it should not be used at all anymore. Signed-off-by: Marcel Holtmann commit 7b99d17f3ea1febd1abca8fa371d2341dd957d4a Author: Nick Pelly Date: Sun Nov 30 12:17:20 2008 +0100 Bluetooth: Respect HCI_UART_DEBUG config in hci_ll.c Following the pattern from hci_*.c, turn off BT_DBG messages unless they have been requested via HCI_UART_DEBUG Signed-off-by: Nick Pelly Acked-by: Brian Swetland Signed-off-by: Marcel Holtmann commit 51a6fbc855b07a0737558560dd0ab0b5f646025b Author: Julia Lawall Date: Sun Nov 30 12:17:20 2008 +0100 Bluetooth: Change simple_strtol to simple_strtoul Since size, addr, fcs, and tmp are unsigned, it would seem better to use simple_strtoul that simple_strtol. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r2@ long e; position p; @@ e = simple_strtol@p(...) @@ position p != r2.p; type T; T e; @@ e = - simple_strtol@p + simple_strtoul (...) // Signed-off-by: Julia Lawall Signed-off-by: Marcel Holtmann commit db7aa1c203d477351ed1b8f394b40d9df06ddfc4 Author: Marcel Holtmann Date: Sun Nov 30 12:17:19 2008 +0100 Bluetooth: Fix warnings for bt_key_strings and bt_slock_key_strings After adding proper lockdep annotations for Bluetooth protocols the case when lockdep is disabled produced two compiler warnings: net/bluetooth/af_bluetooth.c:60: warning: ‘bt_key_strings’ defined but not used net/bluetooth/af_bluetooth.c:71: warning: ‘bt_slock_key_strings’ defined but not used Fix both of them by adding a CONFIG_DEBUG_LOCK_ALLOC conditional around them and re-arranging the code a little bit. Signed-off-by: Marcel Holtmann commit c6bf514c6e0171c5b731beffaa0c4463e2335f3d Author: Vegard Nossum Date: Sun Nov 30 12:17:19 2008 +0100 Bluetooth: Fix leak of uninitialized data to userspace struct hci_dev_list_req { __u16 dev_num; struct hci_dev_req dev_req[0]; /* hci_dev_req structures */ }; sizeof(struct hci_dev_list_req) == 4, so the two bytes immediately following "dev_num" will never be initialized. When this structure is copied to userspace, these uninitialized bytes are leaked. Fix by using kzalloc() instead of kmalloc(). Found using kmemcheck. Signed-off-by: Vegard Nossum Signed-off-by: Marcel Holtmann commit 7644d63d1348ec044ccd8f775fefe5eb7cbcac69 Author: Tomas Winkler Date: Sun Nov 30 12:17:18 2008 +0100 Bluetooth: Fix TX error path in btsdio driver This patch fixes accumulating of the header in case packet was requeued in the error path. Signed-off-by: Tomas Winkler Signed-off-by: Marcel Holtmann commit 6a88adf2adf5d6a3b759c2e114da4c5266ca3972 Author: Marcel Holtmann Date: Sun Nov 30 12:17:14 2008 +0100 Bluetooth: Add suspend/resume support to btusb driver During suspend it is important that all URBs are cancelled and then on resume re-submitted. This gives initial suspend/resume support. Based on initial work from Oliver Neukum Signed-off-by: Marcel Holtmann commit a780efa8124fe7ef23d8ef844d56afe960356615 Author: Marcel Holtmann Date: Sun Nov 30 12:17:12 2008 +0100 Bluetooth: Handle bulk URBs in btusb driver from notify callback With the addition of usb_unlink_anchored_urbs() it is possible to fully control the bulk URBs from the notify callback. There is no need to schedule work and so only do this for the ISOC URBs. Signed-off-by: Marcel Holtmann commit 2eda66f4a0b9803c6a85d5e5ccd8e802bd23b998 Author: Marcel Holtmann Date: Sun Nov 30 12:17:10 2008 +0100 Bluetooth: Add fine grained mem_flags usage to btusb driver The URB submission routines need more fine grained control for the mem_flags used by kmalloc(), usb_alloc_urb() and usb_submit_urb() to better support different caller situations. Add a mem_flags parameter and give the caller full control. Signed-off-by: Marcel Holtmann commit 93093d099e5dd0c258fd530c12668e828c20df41 Author: Ingo Molnar Date: Sun Nov 30 10:20:20 2008 +0100 x86: provide readq()/writeq() on 32-bit too, complete if HAVE_READQ/HAVE_WRITEQ are defined, the full range of readq/writeq APIs has to be provided to drivers: drivers/infiniband/hw/amso1100/c2.c: In function 'c2_tx_ring_alloc': drivers/infiniband/hw/amso1100/c2.c:133: error: implicit declaration of function '__raw_writeq' So provide them on 32-bit as well. Also, map all the APIs to the strongest ordering variant. It's way too easy to mess such details up in drivers and the difference between "memory" and "" constrained asm() constructs is in the noise range. Signed-off-by: Ingo Molnar commit a0b1131e479e5af32eefac8bc54c9742e23d638e Author: Ingo Molnar Date: Sun Nov 30 09:33:55 2008 +0100 x86: provide readq()/writeq() on 32-bit too, cleanup Impact: cleanup Signed-off-by: Ingo Molnar commit 2c5643b1c5c7fbb13f340d4c58944d9642f41796 Author: Hitoshi Mitake Date: Sun Nov 30 17:16:04 2008 +0900 x86: provide readq()/writeq() on 32-bit too Impact: add new API for drivers Add implementation of readq/writeq to x86_32, and add config value to the x86 architecture to determine existence of readq/writeq. Signed-off-by: Hitoshi Mitake Acked-by: Sam Ravnborg Signed-off-by: Ingo Molnar commit 4385cecf1f5866fb33fc95e2ee26a44e9b6f6be2 Author: Jiri Slaby Date: Sat Nov 29 22:33:16 2008 +0100 x86: intel_cacheinfo, minor show_type cleanup Impact: cleanup Signed-off-by: Jiri Slaby Cc: Jiri Slaby Signed-off-by: Ingo Molnar commit 25f13048bce61f33f6a102e0bf377fd3922ed364 Author: Tilman Schmidt Date: Sat Nov 29 21:38:28 2008 -0800 gigaset: get rid of info() and warn() macros Join the move away from the obsolete info() macro, opencoding the remaining uses. While we're at it, also get rid of the warn() macro by promoting the three remaining uses to err(). Signed-off-by: Tilman Schmidt Signed-off-by: David S. Miller commit af4218c3a699542adc9b76c8972828a726e7b0dc Author: Tilman Schmidt Date: Sat Nov 29 21:38:04 2008 -0800 gigaset: remove unnecessary poll method The N_GIGASET_M101 line discipline implemented by the ser_gigaset driver does not transfer any data from/to userspace through the tty interface. Therefore a poll method is not needed. Signed-off-by: Tilman Schmidt Signed-off-by: David S. Miller commit f08340c5d68ab621f377c108637e2d8e95b3e5d4 Author: Nikanth Karthikesan Date: Sat Nov 29 15:43:32 2008 +0530 tracepoints: Documentation TPPROTO misspelt in Documentation/tracepoints.txt Impact: fix typo in documentation TPPROTO is misspelt in Documentation/tracepoints.txt Kept me wondering what was wrong, when I was trying to add a new tracepoint subsystem. Signed-off-by: Nikanth Karthikesan Signed-off-by: Ingo Molnar commit 65c6dc6adbe7ee0acf207445243400a68c77af15 Author: Frederic Weisbecker Date: Sat Nov 29 04:12:46 2008 +0100 tracing/branch-tracer: include missing irqflags.h Impact: fix build error on branch tracer This should fix a build error reported on alpha in linux-next: CC kernel/trace/trace_branch.o kernel/trace/trace_branch.c: In function 'probe_likely_condition': kernel/trace/trace_branch.c:44: error: implicit declaration of function 'raw_local_irq_save' kernel/trace/trace_branch.c:76: error: implicit declaration of function 'raw_local_irq_restore' Unfortunately, I can't test it since I don't have any Alpha build environment. Reported-by: Alexey Dobriyan Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit c5419e6f054c877339f754e02c3b1dafd88cd96c Author: Roland Dreier Date: Fri Nov 28 21:55:42 2008 -0800 cxgb3: Fix sparse warning and micro-optimize is_pure_response() The function is_pure_response() does "ntohl(var) & const" and then essentially just tests whether the result is 0 or not; this can be done more efficiently by computing "var & htonl(const)" instead and doing the byte swap at compile time instead of run time. This change slightly shrinks the compiled code; eg on x86-64 we save a couple of bswapl instructions: add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-8 (-8) function old new delta t3_sge_intr_msix_napi 544 536 -8 and this also has the pleasant side effect of fixing a sparse warning: drivers/net/cxgb3/sge.c:2313:15: warning: restricted degrades to integer Signed-off-by: Roland Dreier Signed-off-by: David S. Miller commit f95be1806fde884c1655237d49a7e5f82e4a935f Author: Giuseppe Cavallaro Date: Fri Nov 28 16:42:41 2008 -0800 phy: add the ST ste10Xp PHYs This patch adds the STMicroelectronics ste10xp PHY device driver. It supports both the ste100p and the ste101p devices. Suspend/resume alredy added. Signed-off-by: Giuseppe Cavallaro Signed-off-by: David S. Miller commit 4621bf129856bad902d7662053b79faaeb3e66cc Author: David S. Miller Date: Fri Nov 28 16:40:26 2008 -0800 phy: Add file missed in previous commit. Signed-off-by: David S. Miller commit 0f0ca340e57bd7446855fefd07a64249acf81223 Author: Giuseppe Cavallaro Date: Fri Nov 28 16:24:56 2008 -0800 phy: power management support This patch adds the power management support into the physical abstraction layer. Suspend and resume functions respectively turns on/off the bit 11 into the PHY Basic mode control register. Generic PHY device starts supporting PM. In order to support the wake-on LAN and avoid to put in power down the PHY device, the MDIO is aware of what the Ethernet device wants to do. Voluntary, no CONFIG_PM defines were added into the sources. Also generic suspend/resume functions are exported to allow other drivers use them (such as genphy_config_aneg etc.). Within the phy_driver_register function, we need to remove the memset. It overrides the device driver owner and it is not good. Signed-off-by: Giuseppe Cavallaro Signed-off-by: David S. Miller commit 914804b95caa61c633431262044034ab05c78ba4 Author: Giuseppe Cavallaro Date: Fri Nov 28 16:14:12 2008 -0800 phy: add natsemi PHY driver This patch adds the PHY device driver for the National Semiconductor DP83865 Gig PHYTER. Signed-off-by: Giuseppe Cavallaro Signed-off-by: David S. Miller commit 65a467f553067fae21b66ac0778247c930936749 Author: Ilpo Järvinen Date: Fri Nov 28 15:55:00 2008 -0800 ne2: silence static never defined warnings These warning originate from 50014f1 (ne2: convert to net_device_ops) which did drop those functions. drivers/net/ne2.c:140: warning: 'ne_open' declared 'static' but never defined drivers/net/ne2.c:141: warning: 'ne_close' declared 'static' but never defined Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit d8e8034dcdef8c8fa94a14c3b555c09e065e742f Author: Ilpo Järvinen Date: Fri Nov 28 15:52:43 2008 -0800 bnx2: use net_device_stats nowadays available in net_device Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 9fd428761adbd5fbd7e23c312955eec1db8ace7a Author: Ilpo Järvinen Date: Fri Nov 28 15:52:00 2008 -0800 niu: use net_device_stats nowadays available in net_device Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 70574a996fc7a70c5586eb56bd92a544eccf18b6 Author: Alexey Dobriyan Date: Fri Nov 28 22:08:00 2008 +0300 sched: move double_unlock_balance() higher Move double_lock_balance()/double_unlock_balance() higher to fix the following with gcc-3.4.6: CC kernel/sched.o In file included from kernel/sched.c:1605: kernel/sched_rt.c: In function `find_lock_lowest_rq': kernel/sched_rt.c:914: sorry, unimplemented: inlining failed in call to 'double_unlock_balance': function body not available kernel/sched_rt.c:1077: sorry, unimplemented: called from here make[2]: *** [kernel/sched.o] Error 1 Signed-off-by: Alexey Dobriyan Signed-off-by: Ingo Molnar commit f1860c34b3ed829ac774647f266abf1074cd58cd Merge: 64b7482de253c10efa2589a6212e3d2093a3efc7 4cd4262034849da01eb88659af677b69f8169f06 Author: Ingo Molnar Date: Fri Nov 28 20:11:05 2008 +0100 Merge branch 'sched/urgent' into sched/core commit 604094f4615180f71da799e7e5b191f5c2a42a28 Author: Ingo Molnar Date: Fri Nov 28 18:03:22 2008 +0100 vfs, seqfile: export mangle_path() generally mangle_path() is trivial enough to make export restrictions on it pointless - so change the export from EXPORT_SYMBOL_GPL to EXPORT_SYMBOL. Signed-off-by: Ingo Molnar Acked-by: Al Viro commit a838c2ec6ea1f18431da74dfe4978c57355b95f3 Author: Wu Fengguang Date: Thu Nov 27 16:14:44 2008 +0800 markers: comment marker_synchronize_unregister() on data dependency Add document and comments on marker_synchronize_unregister(): it should be called before freeing resources that the probes depend on. Based on comments from Lai Jiangshan and Mathieu Desnoyers. Signed-off-by: Wu Fengguang Reviewed-by: Mathieu Desnoyers Reviewed-by: Lai Jiangshan Signed-off-by: Ingo Molnar commit 02834f112d159eb87b584c7df56bddc5beeff5b3 Author: Takashi Iwai Date: Fri Nov 28 15:29:01 2008 +0100 ALSA: ac97 - Remove EXPERIMENTAL from CONFIG_SND_AC97_POWER_SAVE It's mature enough now. Signed-off-by: Takashi Iwai commit 36adba1fc79851949c4792f2e9b4d0dddbc6d5e4 Author: Takashi Iwai Date: Fri Nov 28 15:27:11 2008 +0100 ALSA: hda - Remove EXPERIMENTAL from CONFIG_SND_HDA_POWER_SAVE It's mature enough now. Signed-off-by: Takashi Iwai commit 8caac56305cef98f9357b060a77939d17699937d Author: Pavel Machek Date: Wed Nov 26 17:15:27 2008 +0100 aperture_64.c: clarify that too small aperture is valid reason for this code Impact: update comment Clarify that too small aperture is valid reason for this code. Signed-off-by: Pavel Machek Signed-off-by: Ingo Molnar commit ff7a3267368634e368ebaac68d5e3abf129edd1d Author: Takashi Iwai Date: Fri Nov 28 15:17:06 2008 +0100 ALSA: hda - Don't export symbols when built-in kernel The global functions in hda_codec.c and other core parts are only for HD-audio codec and controller drivers. When the HD-audio driver is built in kernel, all stuff have to be statically linked, thus we don't need any exports. This patch introduces a conditional macro to do export only when needed. Signed-off-by: Takashi Iwai commit 645f10c1ac7f733b224eaf97634edf9b20e2370e Author: Takashi Iwai Date: Fri Nov 28 15:07:37 2008 +0100 ALSA: hda - Check MODULE instead of CONFIG_SND_HDA_INTEL_MODULE Checking MODULE is more generic. Also a cosmetic comment change. Signed-off-by: Takashi Iwai commit 5b3eec0c80038c8739ccd465b897a35c0dff1cc4 Author: Ingo Molnar Date: Thu Nov 27 14:41:21 2008 +0100 x86: ret_from_fork - get rid of jump back Impact: remove dead code If we take a closer look at the rff_trace/rff_action ret_from_fork code, we have to realize that it does all the wrong things: for example it checks the TIF flag - while later on jumping back to the ret-from-syscall path - duplicating the check needlessly. But checking for _TIF_SYSCALL_TRACE is completely unnecessary here because we clear that flag for every freshly forked task. So the whole "tracing" code here, for which there is a out of line jump optimization that makes it even harder to read, is in reality completely dead code ... Reported-by: Cyrill Gorcunov Signed-off-by: Ingo Molnar Tested-by: Cyrill Gorcunov commit 3bdae4f46445ea7cc9ee031d7ff106fdc6228669 Merge: 9f1e87ea3ecb3c46c21f6a1a202ec82f99ed2473 5f5db591326779a80cfe490c5d6b6ce9fac08b31 Author: Ingo Molnar Date: Fri Nov 28 15:00:37 2008 +0100 Merge branch 'x86/debug' into x86/irq We merge this branch because x86/debug touches code that we started cleaning up in x86/irq. The two branches started out independent, but as unexpected amount of activity went into x86/irq, they became dependent. Resolve that by this cross-merge. commit 9f1e87ea3ecb3c46c21f6a1a202ec82f99ed2473 Author: Cyrill Gorcunov Date: Thu Nov 27 21:10:08 2008 +0300 x86: entry_64.S - trivial: space, comments fixup Impact: cleanup Signed-off-by: Cyrill Gorcunov Signed-off-by: Ingo Molnar commit de04b102bfc9a13e96f0892305b394077ffb6514 Author: Clemens Ladisch Date: Wed Nov 26 10:37:23 2008 +0100 ALSA: oxygen: add Claro halo support Add support for the HT-Omega Claro halo (XT). Signed-off-by: Clemens Ladisch Signed-off-by: Takashi Iwai commit 57a5ef483b6290a9f22d4c52baca051c1e755f3a Author: Takashi Iwai Date: Fri Nov 28 14:46:28 2008 +0100 ALSA: hda - Add quirk for Sony VAIO VGN-SR19XN Added model=sony-assamd for Sony VAIO VGN-SR19XN with ALC262 codec. Reference: Novell bnc#450080 https://bugzilla.novell.com/show_bug.cgi?id=450080 Signed-off-by: Takashi Iwai commit 56d17712d54d3aa3d6ef930123d692351d33217c Author: Takashi Iwai Date: Fri Nov 28 14:36:23 2008 +0100 ALSA: hda - Clear codec->proc_widget_hook at reset Clear the remaining pointer at snd_hda_codec_reset() to avoid Oops. Signed-off-by: Takashi Iwai commit 2d34e1b3bb991a99322fb55681d1e73ada3de35c Author: Takashi Iwai Date: Fri Nov 28 14:35:16 2008 +0100 ALSA: hda - Add IDT/STAC-specific proc output Added power-map and analog-loopback information to proc output for IDT/STAC codecs. Signed-off-by: Takashi Iwai commit 5ae3a139cf4fc2349f1dfa1993a66c1dcc119468 Author: Cyrill Gorcunov Date: Thu Nov 27 00:02:10 2008 +0300 x86: uv bau interrupt -- use proper interrupt number Signed-off-by: Cyrill Gorcunov Acked-by: Cliff Wickman Signed-off-by: Ingo Molnar commit f1eecf0e4f0796911cc076f38fcf05fea0b353d5 Author: Steven Rostedt Date: Wed Nov 26 15:54:46 2008 -0500 powerpc/ppc32: static ftrace fixes for PPC32 Impact: fix for PowerPC 32 code There were some early init code that was not safe for static ftrace to boot on my PowerBook. This code must only use relative addressing, and static mcount performs a compare of the ftrace_trace_function pointer, and gets that with an absolute address. In the early init boot up code, this will cause a fault. This patch removes tracing from the files containing the offending functions. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 0029ff87529dff01a4b9c5bf380a0caacb5f7418 Author: Steven Rostedt Date: Tue Nov 25 14:06:19 2008 -0800 powerpc: ftrace, use create_branch Impact: clean up Paul Mackerras pointed out that the code to determine if the branch can reach the destination is incorrect. Michael Ellerman suggested to pull out the code from create_branch and use that. Simply using create_branch is probably the best. Reported-by: Michael Ellerman Reported-by: Paul Mackerras Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit ec682cef2d2c1a25a198d32a87fe2649da671d1e Author: Steven Rostedt Date: Tue Nov 25 10:22:48 2008 -0800 powerpc: ftrace, added missing icache flush Impact: fix to PowerPC code modification After modifying code it is essential to flush the icache. This patch adds the missing flush. Reported-by: Paul Mackerras Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit d9af12b72bfe2a4efc1d347e0ac1c669b85dcea9 Author: Steven Rostedt Date: Tue Nov 25 06:39:18 2008 -0800 powerpc: ftrace, fix cast aliasing and add code verification Impact: clean up and robustness addition This patch addresses the comments made by Paul Mackerras. It removes the type casting between unsigned int and unsigned char pointers, and replaces them with a use of all unsigned int. Verification that the jump is indeed made to a trampoline has also been added. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit c7b0d17366d6e04a11470fc8d85f9fbac02671b9 Author: Steven Rostedt Date: Thu Nov 20 13:18:55 2008 -0800 powerpc: ftrace, do nothing in mcount call for dyn ftrace Impact: quicken mcount calls that are not replaced by dyn ftrace Dynamic ftrace no longer does on the fly recording of mcount locations. The mcount locations are now found at compile time. The mcount function no longer needs to store registers and call a stub function. It can now just simply return. Since there are some functions that do not get converted to a nop (.init sections and other code that may disappear), this patch should help speed up that code. Also, the stub for mcount on PowerPC 32 can not be a simple branch link register like it is on PowerPC 64. According to the ABI specification: "The _mcount routine is required to restore the link register from the stack so that the profiling code can be inserted transparently, whether or not the profiled function saves the link register itself." This means that we must restore the link register that was used to make the call to mcount. The minimal mcount function for PPC32 ends up being: mcount: mflr r0 mtctr r0 lwz r0, 4(r1) mtlr r0 bctr Where we move the link register used to call mcount into the ctr register, and then restore the link register from the stack. Then we use the ctr register to jump back to the mcount caller. The r0 register is free for us to use. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit c072c24975ec4f0ccfcb6f5c8a8040b6eb75ef8f Author: walimis Date: Fri Nov 28 12:21:19 2008 +0800 ftrace: improve documentation Impact: extend documentation with notice of using wild cards correctly We know that we can use wild cards to set set_ftrace_filter, but there's problem when using them naively such as: echo h* > /debug/tracing/set_ftrace_filter If there are files named with "h" prefix in current directory, echo "h*" will echo these filenames to set_ftrace_filter, not the intended "h*". For example: $ cat /debug/tracing/available_filter_functions |grep ^hr |wc -l 23 $ ls $ touch hraa hrdd $ ls hraa hrdd $ echo hr* > /debug/tracing/set_ftrace_filter $ cat /debug/tracing/set_ftrace_filter No output in /debug/tracing/set_ftrace_filter! If we use '' to escape wild cards, it works: $ ls hraa hrdd $ echo "hr*" > /debug/tracing/set_ftrace_filter $ cat /debug/tracing/set_ftrace_filter |wc -l 23 This problem can lead to unexpected result if current directory has a lot of files. Signed-off-by: walimis Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 1d9b16d1690fe5edb1c907fe4746681cf026cdf3 Author: Joerg Roedel Date: Thu Nov 27 18:39:15 2008 +0100 x86: move GART specific stuff from iommu.h to gart.h Impact: cleanup Signed-off-by: Joerg Roedel Signed-off-by: Ingo Molnar commit bb40abe223ace0b6f29e8433d3936dac664178b5 Author: Takashi Iwai Date: Fri Nov 28 12:57:38 2008 +0100 ALSA: hda - Remove unused proc entry in hda_bus struct Signed-off-by: Takashi Iwai commit daead538e9d8efe61d7d2bd12993c8d961b0abd6 Author: Takashi Iwai Date: Fri Nov 28 12:55:36 2008 +0100 ALSA: hda - Add codec-specific proc hook Added a hook for proc outputs of codec-specific stuff. Moved realtek-specific coeff output into patch_realtek.c as well. Signed-off-by: Takashi Iwai commit 50cdaf08a8ec1d7f43987705da7aff7cf949708f Author: Liming Wang Date: Fri Nov 28 12:13:21 2008 +0800 ftrace: improve seq_operation of ftrace Impact: make ftrace position computing more sane First remove useless ->pos field. Then we needn't check seq_printf in .show like other place. Signed-off-by: Liming Wang Reviewed-by: Bruce Ashfield Signed-off-by: Ingo Molnar commit 6113b748fb9935399ec2bbca3a3dc82008f6167f Author: Hannes Eder Date: Fri Nov 28 03:06:46 2008 -0800 pkt_sched: fix sparse warning Impact: make global function static Fix the following sparse warning: net/sched/sch_api.c:192:14: warning: symbol 'qdisc_match_from_root' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit ea5693ccc553951ae44cb963b28cce85edc275c9 Author: Patrick McHardy Date: Fri Nov 28 03:05:19 2008 -0800 netlink: allow empty nested attributes validate_nla() currently doesn't allow empty nested attributes. This makes userspace code unnecessarily complicated when starting and ending the nested attribute is done by generic upper level code and the inner attributes are dumped by a module. Add a special case to accept empty nested attributes. When the nested attribute is non empty, the same checks as before are performed. Signed-off-by: Patrick McHardy Signed-off-by: David S. Miller commit c7425acb42fff1e723b05fbf4ea11e9a455d95dc Author: Török Edwin Date: Fri Nov 28 11:17:56 2008 +0200 tracing, alpha: fix build: add missing #ifdef CONFIG_STACKTRACE There are architectures that still have no stacktrace support. Signed-off-by: Török Edwin Signed-off-by: Ingo Molnar commit ed77a89c30fa03dcb234a84ddea710b3fb7b62da Merge: 475ad8e2172d7f8b73af5532a8dad265b51339c2 d6e8cc6cc7ac77b0f9118f78c453a2e834e62709 Author: David S. Miller Date: Fri Nov 28 02:19:15 2008 -0800 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6 Conflicts: net/netfilter/nf_conntrack_netlink.c commit d51090b34602a20984ab0312ef04e47069c0aec6 Author: Ingo Molnar Date: Fri Nov 28 09:55:16 2008 +0100 tracing/function-graph-tracer: more output tweaks Impact: prettify the output some more Before: 0) | sys_read() { 0) 0.796 us | fget_light(); 0) | vfs_read() { 0) | rw_verify_area() { 0) | security_file_permission() { ------------8<---------- thread sshd-1755 ------------8<---------- After: 0) | sys_read() { 0) 0.796 us | fget_light(); 0) | vfs_read() { 0) | rw_verify_area() { 0) | security_file_permission() { ------------------------------------------ | 1) migration/0--1 => sshd-1755 ------------------------------------------ Signed-off-by: Ingo Molnar commit 1a056155edd458eb93ef383fa8e5741d7e7c6360 Author: Frederic Weisbecker Date: Fri Nov 28 00:42:46 2008 +0100 tracing/function-graph-tracer: adjustments of the trace informations Impact: increase the visual qualities of the call-graph-tracer output This patch applies various trace output formatting changes: - CPU is now a decimal number, followed by a parenthesis. - Overhead is now on the second column (gives a good visibility) - Cost is now on the third column, can't exceed 9999.99 us. It is followed by a virtual line based on a "|" character. - Functions calls are now the last column on the right. This way, we haven't dynamic column (which flow is harder to follow) on its right. - CPU and Overhead have their own option flag. They are default-on but you can disable them easily: echo nofuncgraph-cpu > trace_options echo nofuncgraph-overhead > trace_options TODO: _ Refactoring of the thread switch output. _ Give a default-off option to output the thread and its pid on each row. _ Provide headers _ .... Here is an example of the new trace style: 0) | mutex_unlock() { 0) 0.639 us | __mutex_unlock_slowpath(); 0) 1.607 us | } 0) | remove_wait_queue() { 0) 0.616 us | _spin_lock_irqsave(); 0) 0.616 us | _spin_unlock_irqrestore(); 0) 2.779 us | } 0) 0.495 us | n_tty_set_room(); 0) ! 9999.999 us | } 0) | tty_ldisc_deref() { 0) 0.615 us | _spin_lock_irqsave(); 0) 0.616 us | _spin_unlock_irqrestore(); 0) 2.793 us | } 0) | current_fs_time() { 0) 0.488 us | current_kernel_time(); 0) 0.495 us | timespec_trunc(); 0) 2.486 us | } 0) ! 9999.999 us | } 0) ! 9999.999 us | } 0) ! 9999.999 us | } 0) | sys_read() { 0) 0.796 us | fget_light(); 0) | vfs_read() { 0) | rw_verify_area() { 0) | security_file_permission() { 0) 0.488 us | cap_file_permission(); 0) 1.720 us | } 0) 3. 4 us | } 0) | tty_read() { 0) 0.488 us | tty_paranoia_check(); 0) | tty_ldisc_ref_wait() { 0) | tty_ldisc_try() { 0) 0.615 us | _spin_lock_irqsave(); 0) 0.615 us | _spin_unlock_irqrestore(); 0) 5.436 us | } 0) 6.427 us | } Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 475ad8e2172d7f8b73af5532a8dad265b51339c2 Author: Harvey Harrison Date: Thu Nov 27 23:04:13 2008 -0800 decnet: compile fix for removal of byteorder wrapper Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 11cd41b893895c76a8f9bee9467f4b0869b5eeb3 Author: Takashi Iwai Date: Fri Nov 28 07:22:18 2008 +0100 ALSA: hda - Fix build error with CONFIG_SND_HDA_POWER_SAVE Moved power_save field initialization inside a proper ifdef to fix a build error without CONFIG_SND_HDA_POWER_SAVE. Signed-off-by: Takashi Iwai commit feea6a574d432e08cebf66d993a6ed1f310e0e5d Author: Al Viro Date: Thu Nov 27 15:34:07 2008 -0800 ixgbe: section fixes ixgbe_init_interrupt_scheme() is called from ixgbe_resume(). Build that with CONFIG_PM and without CONFIG_HOTPLUG and you've got a problem. Several helpers called by it also are misannotated __devinit. Signed-off-by: Al Viro Signed-off-by: David S. Miller commit 157653ce79a606409a8bfb496cba797b2984b18f Author: Randy Dunlap Date: Thu Nov 27 15:30:53 2008 -0800 sctp: fix missing label when PROC_FS=n Fix missing label when CONFIG_PROC_FS=n: net/sctp/protocol.c: In function 'sctp_proc_init': net/sctp/protocol.c:106: error: label 'out_nomem' used but not defined make[3]: *** [net/sctp/protocol.o] Error 1 Signed-off-by: Randy Dunlap Signed-off-by: David S. Miller commit 1289e9e8b42f973f2ab39e5f4f2239ff826c27e9 Author: Takashi Iwai Date: Thu Nov 27 15:47:11 2008 +0100 ALSA: hda - Modularize HD-audio driver Split the monolithc HD-audio driver into several pieces: - snd-hda-intel HD-audio PCI controller driver; loaded via udev - snd-hda-codec HD-audio codec bus driver - snd-hda-codec-* Specific HD-audio codec drivers When built as modules, snd-hda-codec (that is invoked by snd-hda-intel) looks up the codec vendor ID and loads the corresponding codec module automatically via request_module(). When built in a kernel, each codec drivers are statically hooked up before probing the PCI. This patch adds appropriate EXPORT_SYMBOL_GPL()'s and the module information for each driver, and driver-linking codes between codec-bus and codec drivers. TODO: - Avoid EXPORT_SYMBOL*() when built-in kernel - Restore __devinit appropriately depending on the condition Signed-off-by: Takashi Iwai commit 73f6a12ed187b7e7ac9334d1419ba7bf7ac1be26 Author: Julia Lawall Date: Thu Nov 27 15:40:40 2008 +0100 ALSA: sound/pci/mixart/mixart.c: Add missing snd_card_free The function snd_mixart_create creates a link between mgr and card that allows snd_mixart_free to free card as well. But if snd_mixart_create fails, then the link has not been created and card has to be freed explicitly. The semantic match that finds the problem is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; statement S,S1; position p1,p2,p3; expression E,E1; type T,T1; expression *ptr != NULL; @@ ( if ((x@p1 = snd_card_new(...)) == NULL) S | x@p1 = snd_card_new(...); ) ... when != snd_card_free(...,(T)x,...) when != if (...) { <+... snd_card_free(...,(T)x,...) ...+> } when != true x == NULL || ... when != x = E when != E = (T)x when any ( if (x == NULL || ...) S1 | if@p2 (...) { ... when != snd_card_free(...,(T1)x,...) when != if (...) { <+... snd_card_free(...,(T1)x,...) ...+> } when != x = E1 when != E1 = (T1)x ( return \(0\|<+...x...+>\|ptr\); | return@p3 ...; ) } ) @ script:python @ p1 << r.p1; p3 << r.p3; @@ print "* file: %s snd_card_new: %s return: %s" % (p1[0].file,p1[0].line,p3[0].line) // Signed-off-by: Julia Lawall Signed-off-by: Takashi Iwai commit 30d72e9f614e7bd76e28d4d92bd54d90a96905bb Author: Takashi Iwai Date: Thu Nov 27 15:25:34 2008 +0100 ALSA: hda - Fix creation of automatic capture mixers Fixed a wrong boundary check of num_adc_nids in set_capture_mixer() in patch_realtek.c. Signed-off-by: Takashi Iwai commit 529bd6c4a63f8468fd66f63fdc22d7070439b3cd Author: Takashi Iwai Date: Thu Nov 27 14:17:01 2008 +0100 ALSA: hda - Fix PCM reconfigure The reconfiguration of PCM affected all PCM streams on the bus, but this this should be done rather only for the target codec. This patch does the following: - introduce bitmap indicating the PCM device usages on a hda_bus - refactor the PCM build functions - fix __devinit prefix in some fucntions - add a proper ifdef around HDA-reconfig-specific functions Signed-off-by: Takashi Iwai commit c2c631e318091118587f3b766347d259c9265b8b Author: Cyrill Gorcunov Date: Wed Nov 26 22:17:00 2008 +0300 x86: entry_64.S - use ENTRY to define child_rip child_rip is called not by its name but indirectly rather so make it global and aligned. Signed-off-by: Cyrill Gorcunov Acked-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit 33454539f386a2beb38269bea5fff82b3d56b0e9 Author: gorcunov@gmail.com Date: Wed Nov 26 22:17:02 2008 +0300 x86: entry_64.S - use X86_EFLAGS_IF instead of hardcoded number Impact: cleanup Signed-off-by: Cyrill Gorcunov Acked-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit fee2fba3586f78762ecc5f432dfd3602765a31b3 Author: Takashi Iwai Date: Thu Nov 27 12:43:28 2008 +0100 ALSA: hda - Move power_save option to hda_intel.c Move power_save option into hda_intel.c, and make a field in hda_bus, instead of keeping module parameters in separate files. Signed-off-by: Takashi Iwai commit 986862bdf17655d012f9b0654925dccdcc4183c9 Author: Takashi Iwai Date: Thu Nov 27 12:40:13 2008 +0100 ALSA: hda - make some functions static Minor clean ups: move snd_hda_codecs_inuse() into hda_intel.c and make static. Also, make snd_hda_query_supported_pcm() static as it's used only in hda_codec.c. Signed-off-by: Takashi Iwai commit d211af055d0c12dc3416c2886e6fbdc6eb74a381 Author: Alexander van Heukelum Date: Mon Nov 24 15:38:45 2008 +0100 i386: get rid of the use of KPROBE_ENTRY / KPROBE_END entry_32.S is now the only user of KPROBE_ENTRY / KPROBE_END, treewide. This patch reorders entry_64.S and explicitly generates a separate section for functions that need the protection. The generated code before and after the patch is equal. The KPROBE_ENTRY and KPROBE_END macro's are removed too. Signed-off-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit ddeb8f2149de280d54f0c8910cead42e6042b2cb Author: Alexander van Heukelum Date: Mon Nov 24 13:24:28 2008 +0100 x86_64: get rid of the use of KPROBE_ENTRY / KPROBE_END Impact: clean up assembly macros and annotations - with some object impact entry_64.S is the only user of KPROBE_ENTRY / KPROBE_END on x86_64. This patch reorders entry_64.S and explicitly generates a separate section for functions that need the protection. The generated code before and after the patch is equal. Implicitly changing sections in assembly files makes it more difficult to follow why the assembler is doing certain things. For example, .p2align 5 KPROBE_ENTRY(...) was not doing what you would expect. Other section changes (__ex_table, .fixup, .init.rodata) are done explicitly already. Signed-off-by: Alexander van Heukelum Acked-by: Jan Beulich Signed-off-by: Ingo Molnar commit 83a8df618eb04bd2819a758f3b409b1449862434 Author: Frederic Weisbecker Date: Thu Nov 27 01:46:33 2008 +0100 tracing/function-graph-tracer: enhancements for the trace output Impact: enhance the output of the graph-tracer This patch applies some ideas of Ingo Molnar and Steven Rostedt. * Output leaf functions in one line with parenthesis, semicolon and duration output. * Add a second column (after cpu) for an overhead sign. if duration > 100 us, "!" if duration > 10 us, "+" else " " * Print output in us with remaining nanosec: u.n * Print duration on the right end, following the indentation of the functions. Use also visual clues: "-" on entry call (no duration to output) and "+" on return (duration output). The name of the tracer has been fixed as well: function-branch becomes function_branch. Here is an example of the new output: CPU[000] dequeue_entity() { - CPU[000] update_curr() { - CPU[000] update_min_vruntime(); + 0.512 us CPU[000] } + 1.504 us CPU[000] clear_buddies(); + 0.481 us CPU[000] update_min_vruntime(); + 0.504 us CPU[000] } + 4.557 us CPU[000] hrtick_update() { - CPU[000] hrtick_start_fair(); + 0.489 us CPU[000] } + 1.443 us CPU[000] + } + 14.655 us CPU[000] + } + 15.678 us CPU[000] + } + 16.686 us CPU[000] msecs_to_jiffies(); + 0.481 us CPU[000] put_prev_task_fair(); + 0.504 us CPU[000] pick_next_task_fair(); + 0.482 us CPU[000] pick_next_task_rt(); + 0.504 us CPU[000] pick_next_task_fair(); + 0.481 us CPU[000] pick_next_task_idle(); + 0.489 us CPU[000] _spin_trylock(); + 0.655 us CPU[000] _spin_unlock(); + 0.609 us CPU[000] ------------8<---------- thread bash-2794 ------------8<---------- CPU[000] finish_task_switch() { - CPU[000] _spin_unlock_irq(); + 0.722 us CPU[000] } + 2.369 us CPU[000] ! } + 501972.605 us CPU[000] ! } + 501973.763 us CPU[000] copy_from_read_buf() { - CPU[000] _spin_lock_irqsave(); + 0.670 us CPU[000] _spin_unlock_irqrestore(); + 0.699 us CPU[000] copy_to_user() { - CPU[000] might_fault() { - CPU[000] __might_sleep(); + 0.503 us CPU[000] } + 1.632 us CPU[000] __copy_to_user_ll(); + 0.542 us CPU[000] } + 3.858 us CPU[000] tty_audit_add_data() { - CPU[000] _spin_lock_irq(); + 0.609 us CPU[000] _spin_unlock_irq(); + 0.624 us CPU[000] } + 3.196 us CPU[000] _spin_lock_irqsave(); + 0.624 us CPU[000] _spin_unlock_irqrestore(); + 0.625 us CPU[000] + } + 13.611 us CPU[000] copy_from_read_buf() { - CPU[000] _spin_lock_irqsave(); + 0.624 us CPU[000] _spin_unlock_irqrestore(); + 0.616 us CPU[000] } + 2.820 us CPU[000] Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit c7cc77307669336a08928ab8668bdb3f3bcc021b Merge: 0bfc24559d7945506184d86739fe365a181f06b7 d144d5ee6a265823d39f75ecfed351a516295183 437f24fb897d409a9978eb71ecfaf279dcd94acd f3f47a6768a29448866da4422b6f6bee485c947f Author: Ingo Molnar Date: Thu Nov 27 10:56:13 2008 +0100 Merge branches 'tracing/blktrace', 'tracing/ftrace', 'tracing/function-graph-tracer' and 'tracing/power-tracer' into tracing/core commit 40a914fa72abdb9193ecad7dd82e48d952ab9d24 Author: Alexander Duyck Date: Thu Nov 27 00:24:37 2008 -0800 igb: Add support for pci-e Advanced Error Reporting Add the calls necessary to enable advanced error reporting for igb on systems with AER enabled. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit f4113030e73db80bc5368a8303458008975402dd Author: Jeff Kirsher Date: Thu Nov 27 00:23:37 2008 -0800 e100: cleanup link up/down messages The system log messages created on a link status change need to follow a specific format to work with tools some customers use. This also makes the messages consistant with other Intel driver link messages. Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit d276016cf990f492cb33a1ff61d789730b3f0d6d Author: Jeff Kirsher Date: Thu Nov 27 00:23:12 2008 -0800 ixgb: cleanup link up/down messages The system log messages created on a link status change need to follow a specific format to work with tools some customers use. This also makes the messages consistant with other Intel driver link messages. Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit b30c4d8f8210bc4ea92942ab786407ec2d780549 Author: Jeff Kirsher Date: Thu Nov 27 00:22:45 2008 -0800 e1000: cleanup link up/down messages The system log messages created on a link status change need to follow a specific format to work with tools some customers use. This also makes the messages consistant with other Intel driver link messages. Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit a46e534bc76ed4e92daa181526b30274d37c6979 Author: Jeff Kirsher Date: Thu Nov 27 00:22:21 2008 -0800 ixgbe: cleanup link up/down messages The system log messages created on a link status change need to follow a specific format to work with tools some customers use. This also makes the messages consistant with other Intel driver link messages. Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 527d47c11149afb5dd59eaca57d5b4d816ac4f20 Author: Alexander Duyck Date: Thu Nov 27 00:21:39 2008 -0800 igb: link up/down messages must follow a specific format The system log messages created on a link status change need to follow a specific format to work with tools some customers use. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit c4106aa88a440430d387e022f2ad6dc1e0d52e98 Author: Harvey Harrison Date: Thu Nov 27 00:12:47 2008 -0800 decnet: remove private wrappers of endian helpers Signed-off-by: Harvey Harrison Reviewed-by: Steven Whitehouse Signed-off-by: David S. Miller commit 5b9ab2ec04ec1e1e53939768805612ac191d7ba2 Merge: 851fd7bd88524bb4e20f3def3127cd9167d6d0cf 3ec192559033ed457f0d7856838654c100fc659f Author: David S. Miller Date: Wed Nov 26 23:48:40 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/hp-plus.c drivers/net/wireless/ath5k/base.c drivers/net/wireless/ath9k/recv.c net/wireless/reg.c commit 12666f050b3b4b122f61ef12707f33fadb4a78b5 Author: Daniel Mack Date: Thu Nov 27 08:21:05 2008 +0100 ALSA: snd-usb-caiaq: clean up the control adding code snd-usb-caiaq: clean up the control adding code by moving dulpicate code to a function. Signed-off-by: Daniel Mack Signed-off-by: Takashi Iwai commit 851fd7bd88524bb4e20f3def3127cd9167d6d0cf Author: Divy Le Ray Date: Wed Nov 26 15:38:36 2008 -0800 cxgb3: Update FW loading path. Update FW loading path to accomodate in-kernel images location Signed-off-by: Divy Le Ray Signed-off-by: David S. Miller commit ad58633c8381e88b54055771877726d3d5d24734 Author: Divy Le Ray Date: Wed Nov 26 15:37:50 2008 -0800 cxgb3: integrate FW and protocol engines in the kernel Include firmware and protocol images in the kernel image if requested Signed-off-by: Divy Le Ray Signed-off-by: David S. Miller commit 5256554489531f3e177e7308752d8f0681cdd5a6 Author: Divy Le Ray Date: Wed Nov 26 15:35:59 2008 -0800 cxgb3: avoid potential memory leak. Add consistency in alloc_ring() parameter checking to avoid potential memory leaks. alloc_ring() callers are correct fo far. Signed-off-by: Divy Le Ray Signed-off-by: David S. Miller commit 43a944f37364e22fff4cbc1e12d227b196e47612 Author: Divy Le Ray Date: Wed Nov 26 15:35:26 2008 -0800 cxgb3: set hard_xmit in the netdev_ops Fix t3_eth_xmit() missing into the netdev_ops structure. Signed-off-by: Divy Le Ray Signed-off-by: David S. Miller commit b5ddedc9cc01b1d86015af08c5f1694191804530 Merge: 244e6c2d0724bc4908a1995804704bdee3b31528 b235507cc5e552b9e75678d596727249e8fba01b Author: David S. Miller Date: Wed Nov 26 15:28:40 2008 -0800 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 commit 244e6c2d0724bc4908a1995804704bdee3b31528 Author: Jarek Poplawski Date: Wed Nov 26 15:24:32 2008 -0800 pkt_sched: gen_estimator: Optimize gen_estimator_active() Since all other gen_estimator functions use bstats and rate_est params together, and searching for them is optimized now, let's use this also in gen_estimator_active(). The return type of gen_estimator_active() is changed to bool, and gen_find_node() parameters to const, btw. In tcf_act_police_locate() a check for ACT_P_CREATED is added before calling gen_estimator_active(). Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 54f01916297bafc18bd7df4e2300a0544a84fce3 Author: Daniel Mack Date: Wed Nov 26 17:47:36 2008 +0100 ASoC: Allow more routing features for tlv320aic3x This patch enables more routing functions for tlv320aic3x codecs. It is now possible to - control the volume of the PGA bypass path for the HPL, HPR, HPLCOM and HPRCOM outputs individually - route right line1 input to the left ADC channel - route left line1 input to the right ADC channel - route right mic3 input to left DAC channel - route left mic3 input to right DAC channel - route left line1 input to right line1 output - route right line1 input to left line1 output Signed-off-by: Daniel Mack Signed-off-by: Mark Brown commit b235507cc5e552b9e75678d596727249e8fba01b Author: John W. Linville Date: Tue Nov 25 16:47:36 2008 -0500 mac80211_hwsim: fix-up some print_mac merge damage Some print_mac -> %pM conversions got lost in some merge or another... Signed-off-by: John W. Linville commit 860c6e6a15c5082e1a1ff1faeb56cdf439380e87 Author: Ivan Kuten Date: Mon Nov 24 15:17:54 2008 -0500 mac80211: fix unaligned access in ieee80211_wep_encrypt_data Signed-off-by: Ivan Kuten Signed-off-by: John W. Linville commit b50563a68520dea3a19b5a8013c4ae0f8e3b49dd Author: Christian Lamparter Date: Mon Nov 24 14:52:51 2008 +0100 p54: fix wmm queue settings This patch fixes a regression (introduced by "p54: more definitions form lmac_longbow.h and pda.h") It turned out that the "ret" variable wasn't initialized and this caused the following warnings/errors to appear: wmaster1: failed to set TX queue parameters for queue 2 wmaster1: failed to set TX queue parameters for queue 3 wmaster1: failed to set TX queue parameters for queue 1 wmaster1: failed to set TX queue parameters for queue 0 Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 99405f930fda280c9114b15e178902cd204f967f Author: Sujith Date: Mon Nov 24 12:08:35 2008 +0530 ath9k: Use proper TX channel width for setting channels The TX channel width of the BSS can be obtained only after association. In all cases, default to HT20 if HT is enabled, and set chan width to HT40 only if the BSS supports it. Signed-off-by: Sujith Signed-off-by: John W. Linville commit ff37e337beb838d4c2540fa93b2c4c632ee17750 Author: Sujith Date: Mon Nov 24 12:07:55 2008 +0530 ath9k: Code scrub Merge core.c and base.c Remove Antenna Diversity (unused now). Remove unused chainmask handling code. Comment, indentation scrub. Signed-off-by: Sujith Signed-off-by: John W. Linville commit bf8c1ac6d81ba8c0e4dc2215f84f5e2a3c8227e8 Author: Jouni Malinen Date: Sat Nov 22 22:00:31 2008 +0200 nl80211: Change max TX power to be in mBm instead of dBm In order to be consistent with NL80211_ATTR_POWER_RULE_MAX_EIRP, change NL80211_FREQUENCY_ATTR_MAX_TX_POWER to use mBm and U32 instead of dBm and U8. This is a userspace interface change, but the previous version had not yet been pushed upstream and there are no userspace programs using this yet, so there is justification to get this change in as long as it goes in before the previous version gets out. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 39d1ffee57c7ce02c90ec8e9272df8aa8ddf600f Author: David Kilroy Date: Sat Nov 22 10:37:28 2008 +0000 orinoco: Provide option to avoid unnecessary fw caching Make firmware caching on startup optional, and make it default. When the option is not selected and PM_SLEEP is configured, then cache firmware in the suspend pm_notifier. This configuration saves about 64k RAM in normal use, but can lead to a situation where the driver is configured to use a different firmware. Signed-off by: David Kilroy Signed-off-by: John W. Linville commit ac7cafd72261857278dff9f737e600b30088653b Author: David Kilroy Date: Sat Nov 22 10:37:27 2008 +0000 orinoco: Resume spectrum_cs in the same way as orinoco_cs Retrieval of external firmware has been resolved, and should work with the standard orinoco resume algorithm. This fixes an issue where priv->hw_unavailable indicates the card is ready when firmware has not been loaded. Signed-off by: David Kilroy Signed-off-by: John W. Linville commit 2cea7b261942009e90befbe41d998e2931547026 Author: David Kilroy Date: Sat Nov 22 10:37:26 2008 +0000 orinoco: Cache Symbol firmware Signed-off by: David Kilroy Signed-off-by: John W. Linville commit 7473431297761fa644a128a497b91e299676f501 Author: David Kilroy Date: Sat Nov 22 10:37:25 2008 +0000 orinoco: Separate fw caching from download This refactorring will make it easier to share logic with Symbol firmware. Signed-off by: David Kilroy Signed-off-by: John W. Linville commit cb71d9bafb37adab50ddce53bb119a84b4966c06 Author: Luis R. Rodriguez Date: Fri Nov 21 17:41:33 2008 -0800 ath9k: Handle -ENOMEM on RX gracefully We would get an oops on RX on -ENOMEM by passing NULL to the hardware on ath_rx_buf_link(). The oops would look something like this: ath_rx_tasklet+0x515/0x53b ath9k_tasklet+0x48 tasklet_action __do_softirq irq_exit do_IRQ RIP: ath_rx_buf_link+0x3a We correct this by handling the requeue directly on the ath_rx_tasklet() and trying to allocate an skb *prior* to sending up the last hardware processed skb. If we run out of memory this gauranteees we have skbs to work with while it simply drops new received frames. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit 24689c8590be6bc0486af665c5ceda6aeff4d53a Author: Henrique de Moraes Holschuh Date: Fri Nov 21 20:40:10 2008 -0200 rfkill: always call get_state() hook on resume We "optimize" away the get_state() hook call on rfkill_toggle_radio when doing a forced state change. This means the resume path is not calling get_state() as it should. Call it manually on the resume handler, as we don't want to mess with the EPO path by removing the optimization. This has the added benefit of making it explicit that rfkill->state could have been modified before we hit the rfkill_toggle_radio() call in the class resume handler. Signed-off-by: Henrique de Moraes Holschuh Acked-by: Ivo van Doorn Cc: Matthew Garrett Cc: Alan Jenkins Signed-off-by: John W. Linville commit f80b5e99c7dac5a9a0d72496cec5075a12cd1476 Author: Henrique de Moraes Holschuh Date: Fri Nov 21 20:40:09 2008 -0200 rfkill: preserve state across suspend The rfkill class API requires that the driver connected to a class call rfkill_force_state() on resume to update the real state of the rfkill controller, OR that it provides a get_state() hook. This means there is potentially a hidden call in the resume code flow that changes rfkill->state (i.e. rfkill_force_state()), so the previous state of the transmitter was being lost. The simplest and most future-proof way to fix this is to explicitly store the pre-sleep state on the rfkill structure, and restore from that on resume. Signed-off-by: Henrique de Moraes Holschuh Acked-by: Ivo van Doorn Cc: Matthew Garrett Cc: Alan Jenkins Signed-off-by: John W. Linville commit 5925d976fbe99859d636e7075e5304625503c5fe Author: Vivek Natarajan Date: Fri Nov 21 22:19:50 2008 -0800 mac80211: Look out for some other AP when disassoc is received. When a disassoc packet is received from the AP with a reason code of 'leaving the BSS', mac80211 should go into DISABLED state just as it would do if the AP suddenly went away for some reason, as that is what will happen shortly after the AP leaves anyway. Signed-off-by: Vivek Natarajan Acked-by: Johannes Berg Signed-off-by: John W. Linville commit e2f367f269fe19375f10e63efe0f2a6d3ddef8e6 Author: Jouni Malinen Date: Fri Nov 21 19:01:30 2008 +0200 nl80211: Report max TX power in NL80211_BAND_ATTR_FREQS This is useful information to provide for userspace (e.g., hostapd needs this to generate Country IE). Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 1048643ea94d742bd409f343e284af430656fd6c Author: Felix Fietkau Date: Thu Nov 20 15:16:22 2008 +0100 ath5k: Clean up eeprom parsing and add missing calibration data This patch brings the ath5k eeprom parsing code in sync with the work done on ath_info by Nick Kossifidis and integrates the missing parts based on the code of the Atheros Legacy HAL release. Signed-off-by: Felix Fietkau Signed-off-by: John W. Linville commit 7ac47010a444d9f4285cf1ae06780633a112489b Author: Vasanthakumar Thiagarajan Date: Thu Nov 20 11:51:18 2008 +0530 ath9k: Dont update rate control for every AMPDU Update the rate control only with the tx status of first AMPDU of an aggregation. This patch fixes frequent drops in throughput. Signed-off-by: Vasanthakumar Thiagarajan Signed-off-by: John W. Linville commit 40fc95d57caf258e20282f6526b695426d65a73a Author: Winkler, Tomas Date: Wed Nov 19 15:32:27 2008 -0800 iwlwifi: TX update chicken bits This instructs FH to increment the retry count of a packet when it is brought from the memory to TX-FIFO to save transactions during aggregation flow. Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 31a73fe4f3284d94d52774c285e9e98a5f441d21 Author: Winkler, Tomas Date: Wed Nov 19 15:32:26 2008 -0800 iwlwifi: TX setup fix confusion between TX queue and TX DMA channel This patch configures correctly TX DMA channel. It is not the same as TX queue. Signed-off-by: Tomas Winkler Acked-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 25e35a56d5f4795cf52cdd0830a91e3103396cfe Author: Winkler, Tomas Date: Wed Nov 19 15:32:25 2008 -0800 iwlwifi: 4965 define firmware file name once Apply same idiom as in 5000 introduced by 'iwlwifi: define firmware file name once' Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 201706ac0b1ab6df5343119883964ec7272844b0 Author: Tomas Winkler Date: Wed Nov 19 15:32:24 2008 -0800 iwlwifi: enable base band calibration in 5000 HW This patch adds base band calibration support. Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 83dde8c90522b89366e241bdbd69113f7094c249 Author: Winkler, Tomas Date: Wed Nov 19 15:32:23 2008 -0800 iwlwifi: move iwl_clear_stations_table to iwl-sta.c This patch moves iwl_clear_stations_table into iwl-sta.c Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit ce546fd2eacdbd8dc15f3d2ffd9a95661d082919 Author: Abhijeet Kolekar Date: Wed Nov 19 15:32:22 2008 -0800 iwl3945 : Fix ad-hoc mode for 3945 Patch fixes the ad-hoc mode by 1) Removing redundant clear_stations_table which prevented generation of beacons. 2) Setting assoc_id to 1. It was never set so preventing tx flow in iwl3945_tx_skb. Signed-off-by: Abhijeet Kolekar Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 0e149cf5a1b1900484f4b808d59a5f246cd720be Author: Bob Copeland Date: Mon Nov 17 23:40:38 2008 -0500 ath5k: set mac address in add_interface Configure the mac address in add_interface and clear it in remove_interface so that users can change the mac address to something other than the one in the eeprom. Also avoid setting it at attach time so that we won't ack packets until fully set up. Signed-off-by: Bob Copeland Signed-off-by: John W. Linville commit 8f93b8b337763a58fcdf23333ffe752db6c93bae Author: Sujith Date: Tue Nov 18 09:10:42 2008 +0530 ath9k: Use straightforward PCI routines to setup the TX buffer. Signed-off-by: Sujith Signed-off-by: John W. Linville commit daa9deb359252496796fa2b7420012e252b327b6 Author: Sujith Date: Tue Nov 18 09:10:22 2008 +0530 ath9k: Update TX trigger level on a FIFO underrun. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 788a3d6f3df595a6537ef537433c870d090afe02 Author: Sujith Date: Tue Nov 18 09:09:54 2008 +0530 ath9k: Fix bug in deciphering channel flags CHANNEL_CCK flag is set for all 2 Ghz channels, so IS_CHAN_CCK() would turn out to be true for all channles in that band. Use IS_CHAN_B() now, which checks the channel mode and not the channel flags. Signed-off-by: Sujith Signed-off-by: John W. Linville commit c428839008f6638317a0db102d4e65d631c288a6 Author: Sujith Date: Tue Nov 18 09:09:30 2008 +0530 ath9k: Move TX completion routine to xmit.c Also, use a helper function to setup RC status data when processing completed TX descriptors. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 2c5a744d43a6a08666930906742fbe704739ba6f Author: Sujith Date: Tue Nov 18 09:08:33 2008 +0530 ath9k: Use helpers Break down huge functions, use helper functions or macros instead. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 46d14a58ffb42702e4c1b8bb88cfa05414617f4c Author: Sujith Date: Tue Nov 18 09:08:13 2008 +0530 ath9k: General code scrub Replace TRUE/FALSE macros with VALID/INVALID macros. Follow a consistent variable convention. Remove unnecessary comments. Add all RC phy macros into a single enum. Merge functions into reasonably sized entities. Signed-off-by: Sujith Signed-off-by: John W. Linville commit e63835b0f4d8545942fd41b3ca32bbf71bd73e4b Author: Sujith Date: Tue Nov 18 09:07:53 2008 +0530 ath9k: Remove ath9k_rate_table Maintaining two sets of rate tables is redundant, remove one and use struct ath_rate_table exclusively. Signed-off-by: Sujith Signed-off-by: John W. Linville commit a8efee4f4740c61fccaf73608df282c4ee24ae86 Author: Sujith Date: Tue Nov 18 09:07:30 2008 +0530 ath9k: Use rate_driver_data Remove the hack using vif, and use rate_driver_data within skb->cb to hold driver specific rate information. Setup the rate series in the skb's tx control area and remove all references to ath9k specific rate series ( using struct ath_rc_series ). Signed-off-by: Sujith Signed-off-by: John W. Linville commit fe7f4a77450c1d0e463a9b1456b40c2305433e41 Author: Sujith Date: Tue Nov 18 09:07:06 2008 +0530 ath9k: Remove ath_rate_softc Move the hw rate tables to ath_softc, and access them directly. tx_triglevel_max is global, move it to ath_rate_node. Now that ath_rate_softc is gone, rate control attach becomes simpler. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 5ddfac3b550250388f1222ec7d09069784a68af6 Author: Sujith Date: Tue Nov 18 09:06:44 2008 +0530 ath9k: Remove rate control reference in VAP Rate control init is now confined to itself, using the HT capabilites of the STA from rate_init(). Signed-off-by: Sujith Signed-off-by: John W. Linville commit ffd651c620a2f27502ee5d4517a122c072f13073 Author: Sujith Date: Tue Nov 18 09:06:18 2008 +0530 ath9k: We don't support non-HT devices, so remove superfluous code. Signed-off-by: Sujith Signed-off-by: John W. Linville commit be0418ada3fad110977a9d5fa16d4907d4e7d726 Author: Sujith Date: Tue Nov 18 09:05:55 2008 +0530 ath9k: Revamp RX handling Remove a lot of old, crufty code and make RX status reporting a bit sane and clean. Do not do anything to the RX skb before unmapping. So in ath_rx_tasklet(), move the skb_put() after PCI unmap. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 2b406f1e68dd5348384fd166ac532af46bfc87fc Author: Sujith Date: Tue Nov 18 09:05:35 2008 +0530 ath9k: Nuke fixed rate handling in driver Signed-off-by: Sujith Signed-off-by: John W. Linville commit 46494e6df8f6d9739d56c8b980229af4e5d2353f Author: Sujith Date: Tue Nov 18 09:05:13 2008 +0530 ath9k: Remove half/quarter rate tables Half/Quarter rate tables are needed only for legacy chipsets. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 4df8ec64fdec5a99ebfe41467d414e235d5d051e Author: Sujith Date: Tue Nov 18 09:04:21 2008 +0530 ath9k: Remove ath_rate_newassoc() Signed-off-by: Sujith Signed-off-by: John W. Linville commit 7b4d27357aebfdaa039f365fd24f2a795af5c0bb Author: Sujith Date: Tue Nov 18 09:04:00 2008 +0530 ath9k: Remove ath_setup_rates Setup legacy rates in ath_rate_init() itself. Signed-off-by: Sujith Signed-off-by: John W. Linville commit fe60594a76d04b4fdea597bf93e4186a03d8d60c Author: Sujith Date: Tue Nov 18 09:03:36 2008 +0530 ath9k: Simplify RC alloc/free functions Signed-off-by: Sujith Signed-off-by: John W. Linville commit 256b77593f3ec07f58cd1f0d573ffe9ccd941b5b Author: Sujith Date: Tue Nov 18 09:03:12 2008 +0530 ath9k: Merge struct ath_tx_ratectrl with ath_rate_node Avoid casting of ath_tx_ratctrl and access the elements directly. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 3fcdfb4b940a226184bc01bfc5c58b32b509b965 Author: Vasanthakumar Thiagarajan Date: Tue Nov 18 01:19:56 2008 +0530 ath9k: Fix panic while unregistering rfkill [ 6133.670329] BUG: unable to handle kernel NULL pointer dereference at 0000000000000010 [ 6133.672802] IP: [] ieee80211_stop_queues+0x26/0x40 [mac80211] [ 6133.672802] PGD 759dc067 PUD 74f1d067 PMD 0 [ 6133.672802] Oops: 0002 [#1] PREEMPT SMP [ 6133.672802] last sysfs file: /sys/class/backlight/acpi_video0/brightness [ 6133.672802] CPU 0 [ 6133.672802] Modules linked in: ath9k(-) mac80211 pciehp pci_hotplug arc4 ecb joydev pcmcia ppdev lp ppp_generic psmouse sg pcspkr s] [ 6133.735830] Pid: 4445, comm: rmmod Tainted: G W 2.6.28-rc5-wl #1 [ 6133.735830] RIP: 0010:[] [] ieee80211_stop_queues+0x26/0x40 [mac80211] [ 6133.735830] RSP: 0018:ffff88007d1efd10 EFLAGS: 00010246 [ 6133.735830] RAX: 0000000000000000 RBX: ffff880074f41aa0 RCX: 0000000000000000 [ 6133.735830] RDX: 0000000000000010 RSI: 0000000000000000 RDI: ffff880074f40340 [ 6133.735830] RBP: ffff880074990000 R08: 0000000000000000 R09: 000000000000224d [ 6133.735830] R10: 0000000000000000 R11: ffffffff8031dc70 R12: 0000000000000000 [ 6133.735830] R13: 0000000000000001 R14: ffff880074f46c9c R15: 0000000000000000 [ 6133.735830] FS: 00007f1e2e0bc6f0(0000) GS:ffffffff805e0b80(0000) knlGS:0000000000000000 [ 6133.735830] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 6133.735830] CR2: 0000000000000010 CR3: 0000000075593000 CR4: 00000000000006e0 [ 6133.735830] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 6133.735830] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 6133.735830] Process rmmod (pid: 4445, threadinfo ffff88007d1ee000, task ffff88007c0c8000) [ 6133.735830] Stack: [ 6133.735830] ffffffffa034d583 ffff88007c7d9410 ffff88007c7d9410 ffff88007c7d9410 [ 6133.735830] ffffffff80481dab ffff880074f41aa0 00000000fffffff0 0000000000000000 [ 6133.735830] 0000000000000001 0000000000000001 ffffffffa034d8a5 ffff88007c7d9400 [ 6133.735830] Call Trace: [ 6133.735830] [] ? ath_radio_disable+0x33/0x150 [ath9k] [ 6133.735830] [] ? __mutex_lock_slowpath+0x20b/0x2a0 [ 6133.735830] [] ? ath_sw_toggle_radio+0x65/0xa0 [ath9k] [ 6133.735830] [] ? rfkill_toggle_radio+0x74/0x140 [rfkill] [ 6133.735830] [] ? rfkill_remove_switch+0x67/0x80 [rfkill] [ 6133.735830] [] ? rfkill_unregister+0x25/0x50 [rfkill] [ 6133.735830] [] ? ath_detach+0xf5/0x140 [ath9k] [ 6133.735830] [] ? ath_pci_remove+0x29/0x80 [ath9k] [ 6133.735830] [] ? pci_device_remove+0x2c/0x60 [ 6133.735830] [] ? __device_release_driver+0x99/0x100 [ 6133.735830] [] ? driver_detach+0xc0/0xd0 [ 6133.735830] [] ? bus_remove_driver+0x8e/0xd0 [ 6133.735830] [] ? pci_unregister_driver+0x36/0xa0 [ 6133.735830] [] ? exit_ath_pci+0x10/0x29 [ath9k] [ 6133.735830] [] ? sys_delete_module+0x1cb/0x2d0 [ 6133.735830] [] ? do_munmap+0x349/0x390 [ 6133.735830] [] ? __up_write+0x21/0x150 [ 6133.735830] [] ? system_call_fastpath+0x16/0x1b [ 6133.735830] Code: c3 0f 1f 40 00 0f b7 57 5e 0f b7 47 5c 01 c2 74 30 31 c9 66 90 48 8b 57 78 0f b7 c1 48 c1 e0 07 48 03 82 00 03 00 [ 6133.735830] RIP [] ieee80211_stop_queues+0x26/0x40 [mac80211] Signed-off-by: Vasanthakumar Thiagarajan Signed-off-by: John W. Linville commit 1548c86ab1552199a3b99b958ccfb590fc9c8f84 Author: Larry Finger Date: Mon Nov 17 09:08:21 2008 -0600 rtl8187: Fix transmission count sent to mac80211 In the commit entitled "mac80211/drivers: rewrite the rate control API", the meaning of the packet transmit count was changed from the number of retries to the total number. In driver rtl8187, this change was missed. Signed-off-by: Larry Finger Acked-by: Herton Ronaldo Krzesinski Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 1dc5a84166d83c892cbf192cad58ebdde95d3ac4 Author: Larry Finger Date: Sun Nov 16 17:09:25 2008 -0600 mac80211: Fix pid rate-setting algorithm to allow rate changes In commit 9ea2c74 named "mac80211/drivers: rewrite the rate control API", the meaning of status.rates[i].count was changed from number of retries to total number of tries. As a result, the pid rate-setting algorithm fails because every packet appears to have needed a retransmit. Signed-off-by: Larry Finger Acked-by: Johannes Berg Signed-off-by: John W. Linville commit d507748ac6de67369e76058a8a921cd22734f40a Author: Ivo van Doorn Date: Sun Nov 16 00:08:50 2008 +0100 rt2x00: Don't switch off LED on initialization When we switch off the LEDS during initialization we kill rt73usb from proper functioning. The immediate result after the first LED command are MCU failures and a complete breakdown of TX/RX. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit f941f8590c06c6b1a77c4b5a5df59f39a3c7d1e9 Author: Andrey Borzenkov Date: Sat Nov 15 17:15:09 2008 +0300 orinoco: indicate it is using dBm in wireless_stats and spy Since WE7 /proc/net/wireless checks whether level and noise are in dBm and shows them accordingly. Indicate that we return signal and noice levels in dBm. Before: Inter-| sta-| Quality | Discarded packets | Missed | WE face | tus | link level noise | nwid crypt frag retry misc | beacon | 22 eth1: 0000 65. 219. 165. 0 0 148 41 0 0 After: Inter-| sta-| Quality | Discarded packets | Missed | WE face | tus | link level noise | nwid crypt frag retry misc | beacon | 22 eth1: 0000 65. -37. -91. 0 0 0 0 0 0 While at it, replace raw numbers with appropriate macro. Signed-off-by: Andrey Borzenkov Signed-off-by: Pavel Roskin Signed-off-by: John W. Linville commit 8eb41c93685318d177276d1819915571aca7ebb1 Author: Luis R. Rodriguez Date: Fri Nov 14 17:44:53 2008 -0800 mac80211: make Minstrel the default rate control algorithm This makes minstrel the default rate control algorithm for mac80211. For more information see: http://wireless.kernel.org/en/developers/Documentation/mac80211/RateControl/minstrel If someone can come up with a better algorithm they get a prize (undisclosed). Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit eea0579fc85e64e9f05361d5aacf496fe7a151aa Author: Takashi Iwai Date: Wed Nov 26 14:13:03 2008 +0100 ALSA: pcsp - Fix starting the stream with HRTIMER_CB_IRQSAFE_UNLOCK With the callback mode HRTIMER_CB_IRQSAFE_UNLOCK, the start of the stream with zero delay doesn't work. Since IRQSAFE mode is removed, we have to change the pcsp start-up code. This patch splits the callback function to two parts, the triggering of the port and the calculation of the expire time, and the update of the ALSA PCM core. The first part is called both from the trigger-start and the hrtimer callback while the latter is handled only in the hrtimer callback. Signed-off-by: Takashi Iwai commit e7dd8c1bdacf658b0ade51facb2f7eaf40eb0ac4 Merge: ed313489badef16d700f5a3be50e8fd8f8294bc8 bc4a68fed4b4c01005ef3c71ede6a8cbe91b7dc9 Author: Takashi Iwai Date: Wed Nov 26 14:12:42 2008 +0100 Merge branch 'topic/misc' into topic/pcsp-fix Conflicts: sound/drivers/pcsp/pcsp_lib.c commit 0bfc24559d7945506184d86739fe365a181f06b7 Author: Ingo Molnar Date: Wed Nov 26 11:59:56 2008 +0100 blktrace: port to tracepoints, update Port to the new tracepoints API: split DEFINE_TRACE() and DECLARE_TRACE() sites. Spread them out to the usage sites, as suggested by Mathieu Desnoyers. Signed-off-by: Ingo Molnar Acked-by: Mathieu Desnoyers commit 5f3ea37c7716db4e894a480e0c18b24399595b6b Author: Arnaldo Carvalho de Melo Date: Thu Oct 30 08:34:33 2008 +0100 blktrace: port to tracepoints This was a forward port of work done by Mathieu Desnoyers, I changed it to encode the 'what' parameter on the tracepoint name, so that one can register interest in specific events and not on classes of events to then check the 'what' parameter. Signed-off-by: Arnaldo Carvalho de Melo Signed-off-by: Jens Axboe Signed-off-by: Ingo Molnar commit 414ff491b2ab68359c7a2037b30ccfea20d829d4 Author: Mark Brown Date: Wed Nov 26 10:32:26 2008 +0000 ASoC: Fix word wrapping in OMAP Kconfig Signed-off-by: Mark Brown commit 3d4cd60ed0533d3b33832e298530c7b021da982b Author: David S. Miller Date: Wed Nov 26 01:52:15 2008 -0800 smc-mca: Fix build failure due to typo. ultra_netdev_ops --> ultramca_netdev_ops Signed-off-by: David S. Miller commit 70355602879229c6f8bd694ec9c0814222bc4936 Author: Eric Dumazet Date: Wed Nov 26 01:08:18 2008 -0800 net: release skb->dst in sock_queue_rcv_skb() When queuing a skb to sk->sk_receive_queue, we can release its dst, not anymore needed. Since current cpu did the dst_hold(), refcount is probably still hot int this cpu caches. This avoids readers to access the original dst to decrement its refcount, possibly a long time after packet reception. This should speedup UDP and RAW receive path. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 4db646b1af8fdcf01d690d29eeae44cd937edb0d Author: Hannes Eder Date: Sun Nov 23 20:49:52 2008 +0100 x86: microcode: fix sparse warnings Impact: make global variables and a function static Fix following sparse warnings: arch/x86/kernel/microcode_core.c:102:22: warning: symbol 'microcode_ops' was not declared. Should it be static? arch/x86/kernel/microcode_core.c:206:24: warning: symbol 'microcode_pdev' was not declared. Should it be static? arch/x86/kernel/microcode_core.c:322:6: warning: symbol 'microcode_update_cpu' was not declared. Should it be static? arch/x86/kernel/microcode_intel.c:468:22: warning: symbol 'microcode_intel_ops' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: Ingo Molnar commit f3f47a6768a29448866da4422b6f6bee485c947f Author: Arjan van de Ven Date: Sun Nov 23 16:49:58 2008 -0800 tracing: add "power-tracer": C/P state tracer to help power optimization Impact: new "power-tracer" ftrace plugin This patch adds a C/P-state ftrace plugin that will generate detailed statistics about the C/P-states that are being used, so that we can look at detailed decisions that the C/P-state code is making, rather than the too high level "average" that we have today. An example way of using this is: mount -t debugfs none /sys/kernel/debug echo cstate > /sys/kernel/debug/tracing/current_tracer echo 1 > /sys/kernel/debug/tracing/tracing_enabled sleep 1 echo 0 > /sys/kernel/debug/tracing/tracing_enabled cat /sys/kernel/debug/tracing/trace | perl scripts/trace/cstate.pl > out.svg Signed-off-by: Arjan van de Ven Signed-off-by: Ingo Molnar commit 4f199629b0fba95fd5caecbf35ed68417d9a9b7a Author: Qinghuang Feng Date: Tue Nov 25 23:24:49 2008 +0800 ALSA: sound/pci/hda/hda_codec.c: cleanup kernel-doc There is no argument named @state in snd_hda_resume, remove its' comment. Signed-off-by: Qinghuang Feng Signed-off-by: Takashi Iwai commit 437f24fb897d409a9978eb71ecfaf279dcd94acd Author: Steven Rostedt Date: Wed Nov 26 00:16:27 2008 -0500 ftrace: add cpu annotation for function graph tracer Impact: enhancement for function graph tracer When run on a SMP box, the function graph tracer is confusing because it shows the different CPUS as changes in the trace. This patch adds the annotation of 'CPU[###]' where ### is a three digit number. The output will look similar to this: CPU[001] dput() { CPU[000] } 726 CPU[001] } 487 CPU[000] do_softirq() { CPU[001] } 2221 CPU[000] __do_softirq() { CPU[000] __local_bh_disable() { CPU[001] unroll_tree_refs() { CPU[000] } 569 CPU[001] } 501 CPU[000] rcu_process_callbacks() { CPU[001] kfree() { What makes this nice is that now you can grep the file and produce readable format for a particular CPU. # cat /debug/tracing/trace > /tmp/trace # grep '^CPU\[000\]' /tmp/trace > /tmp/trace0 # grep '^CPU\[001\]' /tmp/trace > /tmp/trace1 Will give you: # head /tmp/trace0 CPU[000] ------------8<---------- thread sshd-3899 ------------8<---------- CPU[000] inotify_dentry_parent_queue_event() { CPU[000] } 2531 CPU[000] inotify_inode_queue_event() { CPU[000] } 505 CPU[000] } 69626 CPU[000] } 73089 CPU[000] audit_syscall_exit() { CPU[000] path_put() { CPU[000] dput() { # head /tmp/trace1 CPU[001] ------------8<---------- thread pcscd-3446 ------------8<---------- CPU[001] } 4186 CPU[001] dput() { CPU[001] } 543 CPU[001] vfs_permission() { CPU[001] inode_permission() { CPU[001] shmem_permission() { CPU[001] generic_permission() { CPU[001] } 501 CPU[001] } 2205 Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 660c7f9be96321fc80026d76411bd15e6f418a72 Author: Steven Rostedt Date: Wed Nov 26 00:16:26 2008 -0500 ftrace: add thread comm to function graph tracer Impact: enhancement to function graph tracer Export the trace_find_cmdline so the function graph tracer can use it to print the comms of the threads. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit e53a6319cca69111c1643dc9f18f4465d7f1cbf0 Author: Steven Rostedt Date: Wed Nov 26 00:16:25 2008 -0500 ftrace: let function tracing and function return run together Impact: feature This patch enables function tracing and function return to run together. I've tested this by enabling the stack tracer and return tracer, where both the function entry and function return are used together with dynamic ftrace. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 5a45cfe1c64862e8cd3b0d79d7c4ba71c3118915 Author: Steven Rostedt Date: Wed Nov 26 00:16:24 2008 -0500 ftrace: use code patching for ftrace graph tracer Impact: more efficient code for ftrace graph tracer This patch uses the dynamic patching, when available, to patch the function graph code into the kernel. This patch will ease the way for letting both function tracing and function graph tracing run together. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit df4fc31558dd2a3a30292ddb3a64c2a5befcec73 Author: Steven Rostedt Date: Wed Nov 26 00:16:23 2008 -0500 ftrace: add function tracing to single thread Impact: feature to function trace a single thread This patch adds the ability to function trace a single thread. The file: /debugfs/tracing/set_ftrace_pid contains the pid to trace. Valid pids are any positive integer. Writing any negative number to this file will disable the pid tracing and the function tracer will go back to tracing all of threads. This feature works with both static and dynamic function tracing. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 3496f92beb9aa99ef21fccc154a36c7698e9c538 Merge: 200036ca9b3f0b2250912142552ce56682190f95 6ded6ab9be4f6164aef1c527407c1b94f0929799 Author: James Morris Date: Wed Nov 26 10:56:44 2008 +0530 Merge branch 'serge-next' into next commit dd24c00191d5e4a1ae896aafe33c6b8095ab4bd1 Author: Eric Dumazet Date: Tue Nov 25 21:17:14 2008 -0800 net: Use a percpu_counter for orphan_count Instead of using one atomic_t per protocol, use a percpu_counter for "orphan_count", to reduce cache line contention on heavy duty network servers. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 1748376b6626acf59c24e9592ac67b3fe2a0e026 Author: Eric Dumazet Date: Tue Nov 25 21:16:35 2008 -0800 net: Use a percpu_counter for sockets_allocated Instead of using one atomic_t per protocol, use a percpu_counter for "sockets_allocated", to reduce cache line contention on heavy duty network servers. Note : We revert commit (248969ae31e1b3276fc4399d67ce29a5d81e6fd9 net: af_unix can make unix_nr_socks visbile in /proc), since it is not anymore used after sock_prot_inuse_add() addition Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit c1b56878fb68e9c14070939ea4537ad4db79ffae Author: Stephen Hemminger Date: Tue Nov 25 21:14:06 2008 -0800 tc: policing requires a rate estimator Found that while trying average rate policing, it was possible to request average rate policing without a rate estimator. This results in no policing which is harmless but incorrect. Since policing could be setup in two steps, need to check in the kernel. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 71bcb09a57894fa35591ce93dd972065eeecb63a Author: Stephen Hemminger Date: Tue Nov 25 21:13:31 2008 -0800 tc: check for errors in gen_rate_estimator creation The functions gen_new_estimator and gen_replace_estimator can return errors, but they were being ignored. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 0e991ec6a0340916d3f29bd5dcb35299069e7226 Author: Stephen Hemminger Date: Tue Nov 25 21:12:32 2008 -0800 tc: propogate errors from tcf_hash_create Allow tcf_hash_create to return different errors on estimator failure. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 5ceb40da9bacc8b056805d72efb1a52502d56b6b Author: Hiroshi Shimamoto Date: Mon Nov 24 18:24:11 2008 -0800 x86: signal: unify signal_{32|64}.c Impact: cleanup Unify signal_{32|64}.c! Mechanic unification - the two files are the same. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit e5fa2d063cf2ca38eae5fb3469315db669d5c041 Author: Hiroshi Shimamoto Date: Mon Nov 24 18:24:11 2008 -0800 x86: signal: unify signal_{32|64}.c, prepare Impact: cleanup Add #ifdef directive for 32-bit only code. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit bfeb91a9435889ef4fe7bfbb4b673f625e69e790 Author: Hiroshi Shimamoto Date: Mon Nov 24 18:23:12 2008 -0800 x86: signal: cosmetic unification of __setup_sigframe() and __setup_rt_sigframe() Impact: cleanup Add #ifdef directive to unify __setup_sigframe() and __setup_rt_sigframe(). Move them after {setup|restore}_sigcontext() declaration. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 2601657d223d82053d4e1fe1063091401e6b860a Author: Hiroshi Shimamoto Date: Mon Nov 24 18:21:37 2008 -0800 x86: signal: move {setup|restore}_sigcontext() Impact: cleanup Move {setup|restore}_sigcontext() declaration onto head of file. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit d144d5ee6a265823d39f75ecfed351a516295183 Author: Liming Wang Date: Wed Nov 26 10:29:26 2008 +0800 ftrace: adding other non-leaving .text sections Impact: widen the scope of recordmcount.pl Besides .text section, there are three .text sections that won't be freed after kernel booting. They are: .sched.text, .spinlock.text and .kprobes.text, which contain functions we can trace. But the last section ".kprobes.text" is particular, which has been marked as "notrace", we ignore it. Thus we add other two sections. Signed-off-by: Liming Wang Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 4ef8e768335637749af8d83327b174be0ea798a2 Author: Stephen Hemminger Date: Tue Nov 25 18:26:38 2008 -0800 ne2000: convert to net_device_ops Last driver for today. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 53cdd28961f979e4494c85e9ace8c3b51ae39a45 Author: Stephen Hemminger Date: Tue Nov 25 18:26:20 2008 -0800 3c503: convert to net_device_ops Another of the 8390p group. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit e0b8cb0e0e361a40e4ab9d8463762db2286571f5 Author: Stephen Hemminger Date: Tue Nov 25 18:25:49 2008 -0800 stnic: convert to net_device_ops Can just use common ei_netdev_ops definition. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 7d359daafe12b36b6da7ec6247caddf534183aed Author: Stephen Hemminger Date: Tue Nov 25 18:25:32 2008 -0800 apne: convert to net_device_ops Yet another driver. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 50014f1b939dff5e591e8aea9ec2932d146d2996 Author: Stephen Hemminger Date: Tue Nov 25 18:25:14 2008 -0800 ne2: convert to net_device_ops Almost there. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 4be7ef4eac1d96a61af62bda8a59c1fb78c3b31b Author: Stephen Hemminger Date: Tue Nov 25 18:24:57 2008 -0800 hp: convert to net_device_ops Another old EISA driver converted. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 0ec4d4fe413f4d16fb35a326a2dcf912872abcc8 Author: Stephen Hemminger Date: Tue Nov 25 18:24:38 2008 -0800 lne390: convert to net_device_ops Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 8284abea9b49f9d8eae5b3ed36a9ea76a26388ca Author: Stephen Hemminger Date: Tue Nov 25 18:24:20 2008 -0800 e2100: convert to net_device_ops Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 9a9aa14a74d49f88e2c2a126b035c22bd1ab0d53 Author: Stephen Hemminger Date: Tue Nov 25 18:23:59 2008 -0800 es3210: convert to net_device_ops Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit d269941b5b562d21ae37b2182846702a4a43f415 Author: Stephen Hemminger Date: Tue Nov 25 18:23:35 2008 -0800 ne3210: convert to net_device_ops By having common code in 8390.o don't need net_dev_ops in the driver. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit d079841d795b83822357ef058ce8d7979dad854c Author: Stephen Hemminger Date: Tue Nov 25 18:23:06 2008 -0800 smc: convert to net_device_ops Convert both eisa and mca versions of this driver, though I doubt anyone still has the hardware. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit d4a97d425c2f59849ebdcc94281ecf108818efbf Author: Stephen Hemminger Date: Tue Nov 25 18:22:42 2008 -0800 hp-plus: convert to net_device_ops Another driver converted to new infrastructure. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 458228bc4c1370de1dae4ba0f78469092ca21d75 Author: Stephen Hemminger Date: Tue Nov 25 18:21:56 2008 -0800 wd: use net_device_ops Another driver converted to net_device_ops; Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 8884c092e5e4f9a1b6e44f2e02a3eb5481af87ab Author: Stephen Hemminger Date: Tue Nov 25 18:12:49 2008 -0800 8390: add common net_device ops Fix the defactoring of ei_XXX functions in 8390 and 8390p. Remove the tx_timeout hack since no driver including the 3c503 overrides tx_timeout at this time, looks like a legacy thing. Also, since several drivers all have same hooks, provide common netdev_ops. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit c2324b694fa8ffee382a124198c68754088e483c Author: Ingo Molnar Date: Wed Nov 26 03:10:01 2008 +0100 tracing: function graph tracer, fix fix return-tracer => graph-tracer namespace rename fallout. Signed-off-by: Ingo Molnar commit b27aeadb5948d400df83db4d29590fb9862ba49d Author: Alexey Dobriyan Date: Tue Nov 25 18:00:48 2008 -0800 netns xfrm: per-netns sysctls Make net.core.xfrm_aevent_etime net.core.xfrm_acq_expires net.core.xfrm_aevent_rseqth net.core.xfrm_larval_drop sysctls per-netns. For that make net_core_path[] global, register it to prevent two /proc/net/core antries and change initcall position -- xfrm_init() is called from fs_initcall, so this one should be fs_initcall at least. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit c68cd1a01ba56995d85a4a62b195b2b3f6415c64 Author: Alexey Dobriyan Date: Tue Nov 25 18:00:14 2008 -0800 netns xfrm: /proc/net/xfrm_stat in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 59c9940ed0ef026673cac52f2eaed77af7d486da Author: Alexey Dobriyan Date: Tue Nov 25 17:59:52 2008 -0800 netns xfrm: per-netns MIBs Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 4fb236bac9fc7d51e2267866de6d4c30e549d2f8 Author: Alexey Dobriyan Date: Tue Nov 25 17:59:27 2008 -0800 netns xfrm: AH/ESP in netns! Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 7013ec30e0e2bc5b1e602e19a4e0668f9b7c0a72 Author: Alexey Dobriyan Date: Tue Nov 25 17:59:00 2008 -0800 netns PF_KEY: per-netns /proc/pfkey Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 07fb0f1799dcb6b3df527909811fd6704278842e Author: Alexey Dobriyan Date: Tue Nov 25 17:58:31 2008 -0800 netns PF_KEY: part 2 * interaction with userspace -- take netns from userspace socket. * in ->notify hook take netns either from SA or explicitly passed -- we don't know if SA/SPD flush is coming. * stub policy migration with init_net for now. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 3fa87a3210a24ae406c2ccd37a52585baeb21546 Author: Alexey Dobriyan Date: Tue Nov 25 17:58:07 2008 -0800 netns PF_KEY: part 1 * netns boilerplate * keep per-netns socket list * keep per-netns number of sockets Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 7c2776ee21a60e0d370538bd08b9ed82979f6e3a Author: Alexey Dobriyan Date: Tue Nov 25 17:57:44 2008 -0800 netns xfrm: flush SA/SPDs on netns stop SA/SPD doesn't pin netns (and it shouldn't), so get rid of them by hand. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit fbda33b2b85941c1ae3a0d89522dec5c1b1bd98c Author: Alexey Dobriyan Date: Tue Nov 25 17:56:49 2008 -0800 netns xfrm: ->get_saddr in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit c5b3cf46eabe6e7459125fc6e2033b4222665017 Author: Alexey Dobriyan Date: Tue Nov 25 17:51:25 2008 -0800 netns xfrm: ->dst_lookup in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit db983c1144884cab10d6397532f4bf05eb0c01d2 Author: Alexey Dobriyan Date: Tue Nov 25 17:51:01 2008 -0800 netns xfrm: KM reporting in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 7067802e262457a9737521e5669b622028b2283a Author: Alexey Dobriyan Date: Tue Nov 25 17:50:36 2008 -0800 netns xfrm: pass netns with KM notifications SA and SPD flush are executed with NULL SA and SPD respectively, for these cases pass netns explicitly from userspace socket. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit fc34acd36eecdec95171b98ef2516e3d4daa5c41 Author: Alexey Dobriyan Date: Tue Nov 25 17:50:08 2008 -0800 netns xfrm: xfrm_user module in netns Grab netns either from netlink socket, state or policy. SA and SPD flush are in init_net for now, this requires little attention, see below. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit a6483b790f8efcd8db190c1c0ff93f9d9efe919a Author: Alexey Dobriyan Date: Tue Nov 25 17:38:20 2008 -0800 netns xfrm: per-netns NETLINK_XFRM socket Stub senders to init_net's one temporarily. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit bd235e3cfff617ff91677da553714051866ba55f Author: Alexey Dobriyan Date: Tue Nov 25 17:37:56 2008 -0800 netns xfrm: xfrm_input() fixup Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit ddcfd79680c1dc74eb5f24aa70785c11bf7eec8f Author: Alexey Dobriyan Date: Tue Nov 25 17:37:23 2008 -0800 netns xfrm: dst garbage-collecting in netns Pass netns pointer to struct xfrm_policy_afinfo::garbage_collect() [This needs more thoughts on what to do with dst_ops] [Currently stub to init_net] Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 3dd0b4997a1d4f3a3666e400cc75b0279ce96849 Author: Alexey Dobriyan Date: Tue Nov 25 17:36:51 2008 -0800 netns xfrm: flushing/pruning bundles in netns Allow netdevice notifier as result. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 99a66657b2f62ae8b2b1e6ffc6abed051e4561ca Author: Alexey Dobriyan Date: Tue Nov 25 17:36:13 2008 -0800 netns xfrm: xfrm_route_forward() in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit f6e1e25d703c0a9ba1863384a16851dec52f8e3a Author: Alexey Dobriyan Date: Tue Nov 25 17:35:44 2008 -0800 netns xfrm: xfrm_policy_check in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 52479b623d3d41df84c499325b6a8c7915413032 Author: Alexey Dobriyan Date: Tue Nov 25 17:35:18 2008 -0800 netns xfrm: lookup in netns Pass netns to xfrm_lookup()/__xfrm_lookup(). For that pass netns to flow_cache_lookup() and resolver callback. Take it from socket or netdevice. Stub DECnet to init_net. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit cdcbca7c1f1946758cfacb69bc1c7eeaccb11e2d Author: Alexey Dobriyan Date: Tue Nov 25 17:34:49 2008 -0800 netns xfrm: policy walking in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 8d1211a6aaea43ea36151c17b0193eb763ff2d7e Author: Alexey Dobriyan Date: Tue Nov 25 17:34:20 2008 -0800 netns xfrm: finding policy in netns Add netns parameter to xfrm_policy_bysel_ctx(), xfrm_policy_byidx(). Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 33ffbbd52c327225a3e28485c39dc5746d81be03 Author: Alexey Dobriyan Date: Tue Nov 25 17:33:32 2008 -0800 netns xfrm: policy flushing in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 1121994c803f4a4f471d617443ff2a09515725e7 Author: Alexey Dobriyan Date: Tue Nov 25 17:33:06 2008 -0800 netns xfrm: policy insertion in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit e92303f872600978796ff323bc229d911f905849 Author: Alexey Dobriyan Date: Tue Nov 25 17:32:41 2008 -0800 netns xfrm: propagate netns into policy byidx hash Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 284fa7da300adcb700b44df2f64a536b434d4650 Author: Alexey Dobriyan Date: Tue Nov 25 17:32:14 2008 -0800 netns xfrm: state walking in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 5447c5e401c49aba0c36bb1066f2d25b152553b7 Author: Alexey Dobriyan Date: Tue Nov 25 17:31:51 2008 -0800 netns xfrm: finding states in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 12604d8aaa38ac4e24299c9803fefdb301a16421 Author: Alexey Dobriyan Date: Tue Nov 25 17:31:18 2008 -0800 netns xfrm: fixup xfrm_alloc_spi() Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 221df1ed33c9284fc7a6f6e47ca7f8d5f3665d43 Author: Alexey Dobriyan Date: Tue Nov 25 17:30:50 2008 -0800 netns xfrm: state lookup in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 0e6024519b4da2d9413b97be1de8122d5709ccc1 Author: Alexey Dobriyan Date: Tue Nov 25 17:30:18 2008 -0800 netns xfrm: state flush in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 98806f75ba2afc716e4d2f915d3ac7687546f9c0 Author: Alexey Dobriyan Date: Tue Nov 25 17:29:47 2008 -0800 netns xfrm: trivial netns propagations Take netns from xfrm_state or xfrm_policy. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 64d0cd009718ce64cf0f388142ead7ea41f1f3c8 Author: Alexey Dobriyan Date: Tue Nov 25 17:29:21 2008 -0800 netns xfrm: propagate netns into bydst/bysrc/byspi hash functions Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 66caf628c3b634c57b14a1a104dcd57e4fab2e3b Author: Alexey Dobriyan Date: Tue Nov 25 17:28:57 2008 -0800 netns xfrm: per-netns policy hash resizing work Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit dc2caba7b321289e7d02e63d7216961ccecfa103 Author: Alexey Dobriyan Date: Tue Nov 25 17:24:15 2008 -0800 netns xfrm: per-netns policy counts Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit a35f6c5de32664d82c072a7e2c7d5c5234de4158 Author: Alexey Dobriyan Date: Tue Nov 25 17:23:48 2008 -0800 netns xfrm: per-netns xfrm_policy_bydst hash Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 8b18f8eaf9207d53ba3e69f2b98d7290f4dec227 Author: Alexey Dobriyan Date: Tue Nov 25 17:23:26 2008 -0800 netns xfrm: per-netns inexact policies Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 8100bea7d619e8496ad8e545d1b41f536e076cd5 Author: Alexey Dobriyan Date: Tue Nov 25 17:22:58 2008 -0800 netns xfrm: per-netns xfrm_policy_byidx hashmask Per-netns hashes are independently resizeable. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 93b851c1c93c7d5cd8d94cd3f3a268b2d5460e9e Author: Alexey Dobriyan Date: Tue Nov 25 17:22:35 2008 -0800 netns xfrm: per-netns xfrm_policy_byidx hash Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit adfcf0b27e87d16a6a8c364daa724653d4d8930b Author: Alexey Dobriyan Date: Tue Nov 25 17:22:11 2008 -0800 netns xfrm: per-netns policy list Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 0331b1f383e1fa4049f8e75cafeea8f006171c64 Author: Alexey Dobriyan Date: Tue Nov 25 17:21:45 2008 -0800 netns xfrm: add struct xfrm_policy::xp_net Again, to avoid complications with passing netns when not necessary. Again, ->xp_net is set-once field, once set it never changes. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 50a30657fd7ee77a94a6bf0ad86eba7c37c3032e Author: Alexey Dobriyan Date: Tue Nov 25 17:21:01 2008 -0800 netns xfrm: per-netns km_waitq Disallow spurious wakeups in __xfrm_lookup(). Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit c78371441c0d957f54c9f8a35b3ee5a378d14808 Author: Alexey Dobriyan Date: Tue Nov 25 17:20:36 2008 -0800 netns xfrm: per-netns state GC work State GC is per-netns, and this is part of it. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit b8a0ae20b0eecd4b86a113d2abe2fa5a582b30a6 Author: Alexey Dobriyan Date: Tue Nov 25 17:20:11 2008 -0800 netns xfrm: per-netns state GC list km_waitq is going to be made per-netns to disallow spurious wakeups in __xfrm_lookup(). To not wakeup after every garbage-collected xfrm_state (which potentially can be from different netns) make state GC list per-netns. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 630827338585022b851ec0a6335df8e436c900e4 Author: Alexey Dobriyan Date: Tue Nov 25 17:19:07 2008 -0800 netns xfrm: per-netns xfrm_hash_work All of this is implicit passing which netns's hashes should be resized. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 0bf7c5b019518d3fe9cb96b9c97bf44d251472c3 Author: Alexey Dobriyan Date: Tue Nov 25 17:18:39 2008 -0800 netns xfrm: per-netns xfrm_state counts Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 529983ecabeae3d8e61c9e27079154b1b8544dcd Author: Alexey Dobriyan Date: Tue Nov 25 17:18:12 2008 -0800 netns xfrm: per-netns xfrm_state_hmask Since hashtables are per-netns, they can be independently resized. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit b754a4fd8f58d245c9b5e92914cce09c4309cb67 Author: Alexey Dobriyan Date: Tue Nov 25 17:17:47 2008 -0800 netns xfrm: per-netns xfrm_state_byspi hash Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit d320bbb306f2085892bc958781e8fcaf5d491589 Author: Alexey Dobriyan Date: Tue Nov 25 17:17:24 2008 -0800 netns xfrm: per-netns xfrm_state_bysrc hash Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 73d189dce486cd6693fa29169b1aac0872efbcea Author: Alexey Dobriyan Date: Tue Nov 25 17:16:58 2008 -0800 netns xfrm: per-netns xfrm_state_bydst hash Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 9d4139c76905833afcb77fe8ccc17f302a0eb9ab Author: Alexey Dobriyan Date: Tue Nov 25 17:16:11 2008 -0800 netns xfrm: per-netns xfrm_state_all list This is done to get a) simple "something leaked" check b) cover possible DoSes when other netns puts many, many xfrm_states onto a list. c) not miss "alien xfrm_state" check in some of list iterators in future. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 673c09be457bb23aa0eaaa79804cbb342210d195 Author: Alexey Dobriyan Date: Tue Nov 25 17:15:16 2008 -0800 netns xfrm: add struct xfrm_state::xs_net To avoid unnecessary complications with passing netns around. * set once, very early after allocating * once set, never changes For a while create every xfrm_state in init_net. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit d62ddc21b674b5ac1466091ff3fbf7baa53bc92c Author: Alexey Dobriyan Date: Tue Nov 25 17:14:31 2008 -0800 netns xfrm: add netns boilerplate Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit c95839693d2a6612af7f75ad877012eba2f69757 Author: Alexey Dobriyan Date: Tue Nov 25 17:13:59 2008 -0800 xfrm: initialise xfrm_policy_gc_work statically Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 46a8494a9de6b88a126993e6012322752f997b88 Author: Ingo Molnar Date: Tue Nov 25 17:02:20 2008 -0800 3c523: fix warning in drivers/net/3c523.c fix warning: drivers/net/3c523.c:582: warning: ‘cleanup_card’ defined but not used No code changed: md5: ebe4a1b27d3f21b0b12a78c58463b0d7 3c523.o.before.asm ebe4a1b27d3f21b0b12a78c58463b0d7 3c523.o.after.asm Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 99da1a8a6dc549630733e1cc246265d282fc214e Author: Ingo Molnar Date: Tue Nov 25 17:00:39 2008 -0800 depca: fix warning in drivers/net/depca.c fix warning: drivers/net/depca.c: In function ‘depca_eisa_probe’: drivers/net/depca.c:1564: warning: ‘mem_start’ may be used uninitialized in this function this seems to be a real bug - depca_eisa_probe() does not check for failure. Add it, symmetric to depca_isa_probe(). Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit a098397d562e2ce5aca7b9b007a4954d88ef8f5e Author: Ingo Molnar Date: Tue Nov 25 17:00:05 2008 -0800 atlx: fix warning in drivers/net/atlx/atl2.c fix this warning: drivers/net/atlx/atl2.c: In function ‘atl2_request_irq’: drivers/net/atlx/atl2.c:644: warning: unused variable ‘err’ 'err' is unused in the !CONFIG_PCI_MSI case. Instead of further increasing the #ifdeffery in this function, restructure the code a bit and get rid of the #ifdef. This relies on the fact that pci_enable_msi() will always fail in the !CONFIG_PCI_MSI case. There should be no change in driver behavior. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 287b6e68ca7209caec40b2f44f837c580a413bae Author: Frederic Weisbecker Date: Wed Nov 26 00:57:25 2008 +0100 tracing/function-return-tracer: set a more human readable output Impact: feature This patch sets a C-like output for the function graph tracing. For this aim, we now call two handler for each function: one on the entry and one other on return. This way we can draw a well-ordered call stack. The pid of the previous trace is loosely stored to be compared against the one of the current trace to see if there were a context switch. Without this little feature, the call tree would seem broken at some locations. We could use the sched_tracer to capture these sched_events but this way of processing is much more simpler. 2 spaces have been chosen for indentation to fit the screen while deep calls. The time of execution in nanosecs is printed just after closed braces, it seems more easy this way to find the corresponding function. If the time was printed as a first column, it would be not so easy to find the corresponding function if it is called on a deep depth. I plan to output the return value but on 32 bits CPU, the return value can be 32 or 64, and its difficult to guess on which case we are. I don't know what would be the better solution on X86-32: only print eax (low-part) or even edx (high-part). Actually it's thee same problem when a function return a 8 bits value, the high part of eax could contain junk values... Here is an example of trace: sys_read() { fget_light() { } 526 vfs_read() { rw_verify_area() { security_file_permission() { cap_file_permission() { } 519 } 1564 } 2640 do_sync_read() { pipe_read() { __might_sleep() { } 511 pipe_wait() { prepare_to_wait() { } 760 deactivate_task() { dequeue_task() { dequeue_task_fair() { dequeue_entity() { update_curr() { update_min_vruntime() { } 504 } 1587 clear_buddies() { } 512 add_cfs_task_weight() { } 519 update_min_vruntime() { } 511 } 5602 dequeue_entity() { update_curr() { update_min_vruntime() { } 496 } 1631 clear_buddies() { } 496 update_min_vruntime() { } 527 } 4580 hrtick_update() { hrtick_start_fair() { } 488 } 1489 } 13700 } 14949 } 16016 msecs_to_jiffies() { } 496 put_prev_task_fair() { } 504 pick_next_task_fair() { } 489 pick_next_task_rt() { } 496 pick_next_task_fair() { } 489 pick_next_task_idle() { } 489 ------------8<---------- thread 4 ------------8<---------- finish_task_switch() { } 1203 do_softirq() { __do_softirq() { __local_bh_disable() { } 669 rcu_process_callbacks() { __rcu_process_callbacks() { cpu_quiet() { rcu_start_batch() { } 503 } 1647 } 3128 __rcu_process_callbacks() { } 542 } 5362 _local_bh_enable() { } 587 } 8880 } 9986 kthread_should_stop() { } 669 deactivate_task() { dequeue_task() { dequeue_task_fair() { dequeue_entity() { update_curr() { calc_delta_mine() { } 511 update_min_vruntime() { } 511 } 2813 Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit fb52607afcd0629776f1dc9e657647ceae81dd50 Author: Frederic Weisbecker Date: Tue Nov 25 21:07:04 2008 +0100 tracing/function-return-tracer: change the name into function-graph-tracer Impact: cleanup This patch changes the name of the "return function tracer" into function-graph-tracer which is a more suitable name for a tracing which makes one able to retrieve the ordered call stack during the code flow. Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 45555c0ed436b8b06eeaa5c524a3377e6d24fb45 Author: Ingo Molnar Date: Tue Nov 25 16:59:21 2008 -0800 bluetooth: fix warning in net/bluetooth/rfcomm/sock.c fix this warning: net/bluetooth/rfcomm/sock.c: In function ‘rfcomm_sock_ioctl’: net/bluetooth/rfcomm/sock.c:795: warning: unused variable ‘sk’ perhaps BT_DEBUG() should be improved to do printf format checking instead of the #ifdef, but that looks quite intrusive: each bluetooth .c file undefines the macro. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit ff0db0490a2eb6db4f03870987c5c8e3dd81e747 Author: Ingo Molnar Date: Tue Nov 25 16:58:42 2008 -0800 sunrpc: fix warning in net/sunrpc/xprtrdma/verbs.c fix this warning: net/sunrpc/xprtrdma/verbs.c: In function ‘rpcrdma_conn_upcall’: net/sunrpc/xprtrdma/verbs.c:279: warning: unused variable ‘addr’ Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit e14bec2e2b59a6180f04544a867b7e52cd414455 Author: Ingo Molnar Date: Tue Nov 25 16:58:19 2008 -0800 ax25: fix warning in net/ax25/sysctl_net_ax25.c fix this warning: net/ax25/sysctl_net_ax25.c:27: warning: ‘min_ds_timeout’ defined but not used net/ax25/sysctl_net_ax25.c:27: warning: ‘max_ds_timeout’ defined but not used These are only used in the CONFIG_AX25_DAMA_SLAVE case. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 509dceef6470442d8c7b8a43ec34125205840b3c Merge: 1e9b51c28312f7334394aa30be56ff52c2b65b7e 14bfc987e395797dfe03e915e8b4c7fc9e5078e4 Author: Ingo Molnar Date: Wed Nov 26 01:58:05 2008 +0100 Merge branches 'tracing/hw-branch-tracing' and 'tracing/branch-tracer' into tracing/core commit e6a176228a38d74c0360ca586146bd45a2ac2d60 Author: Ingo Molnar Date: Tue Nov 25 16:57:59 2008 -0800 mlx4: fix warning in drivers/net/mlx4/mcg.c fix warning: drivers/net/mlx4/mcg.c: In function ‘mlx4_multicast_attach’: drivers/net/mlx4/mcg.c:217: warning: integer overflow in expression there was no real danger of overflow here though. md5: db8eb55620f886c03854a2abb2ce6c3f mcg.o.before.asm db8eb55620f886c03854a2abb2ce6c3f mcg.o.after.asm Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 3ed7cc0f8b29da4304825a7bcef25fc83f84c1ae Author: Ingo Molnar Date: Tue Nov 25 16:57:30 2008 -0800 dccp: fix warning in net/dccp/options.c this warning: net/dccp/options.c: In function ‘dccp_parse_options’: net/dccp/options.c:67: warning: ‘value’ may be used uninitialized in this function is a bogus GCC warning. The compiler does not recognize the relation between "value" and "mandatory" variables: the code flow can ever reach the "out_invalid_option:" label if 'mandatory' is set to 1, and when 'mandatory' is non-zero, we'll always have 'value' initialized. Help out the compiler by annotating the variable. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit b71e839f9a33abf8634b1eea4875bc8057fe39e2 Author: Ingo Molnar Date: Tue Nov 25 16:57:05 2008 -0800 cassini: fix warning in drivers/net/cassini.c this warning: drivers/net/cassini.c: In function ‘cas_rx_ringN’: drivers/net/cassini.c:2350: warning: ‘skb’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between cas_rx_process_pkt() and 'skb'. Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit b58515be978f9377b9546ae98ad6c8bbc2f93ee1 Author: Ingo Molnar Date: Tue Nov 25 16:53:32 2008 -0800 mlx4: fix error path in drivers/net/mlx4/en_rx.c this warning: drivers/net/mlx4/en_rx.c: In function ‘mlx4_en_activate_rx_rings’: drivers/net/mlx4/en_rx.c:412: warning: ‘err’ may be used uninitialized in this function Triggers because 'err' is uninitialized in the following input conditions: priv->rx_ring_num is zero and mlx4_en_fill_rx_buffers() fails. But even if ->rx_ring_num is nonzero, 'err' will be zero if mlx4_en_fill_rx_buffers() fails and mlx4_en_activate_rx_rings() returns success - incorrectly. So it's best to keep the error code uptodate on mlx4_en_fill_rx_buffers() calls as well. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 4174439ef5894964803c6300e7e88d97e075e4c0 Author: Ingo Molnar Date: Tue Nov 25 16:53:08 2008 -0800 z85230: fix warning in drivers/net/wan/z85230.c this warning: drivers/net/wan/z85230.c: In function ‘z8530_interrupt’: drivers/net/wan/z85230.c:713: warning: ‘intr’ may be used uninitialized in this function is clearly bogus - annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit ef0cd87ef6326609be8abf19030101be24cc5703 Author: Ingo Molnar Date: Tue Nov 25 16:52:13 2008 -0800 sis900: fix warning in drivers/net/sis900.c this warning: drivers/net/sis900.c: In function ‘sis900_timer’: drivers/net/sis900.c:1280: warning: ‘speed’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between sis900_read_mode(), 'speed' and 'duplex'. Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 180b65df7ba1e700e28aabfbddbad84b7beebe4b Author: Ingo Molnar Date: Tue Nov 25 16:51:45 2008 -0800 fix warning in fs/dlm/netlink.c this warning: fs/dlm/netlink.c: In function ‘dlm_timeout_warn’: fs/dlm/netlink.c:131: warning: ‘send_skb’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between prepare_data() and send_skb. Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit d3f644da909549a4cf0ad27541df342f75158cc0 Author: Ingo Molnar Date: Tue Nov 25 16:51:13 2008 -0800 dsa: fix warning in net/dsa/mv88e6060.c this warning: net/dsa/mv88e6060.c: In function ‘mv88e6060_poll_link’: net/dsa/mv88e6060.c:225: warning: ‘port_status’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between 'link' and 'port_status'. Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 2a9e79782d99160cad7d834eef9bb77b446e8532 Author: Ingo Molnar Date: Tue Nov 25 16:50:49 2008 -0800 dsa: fix warning in net/dsa/mv88e6xxx.c this warning: net/dsa/mv88e6xxx.c: In function ‘mv88e6xxx_poll_link’: net/dsa/mv88e6xxx.c:361: warning: ‘port_status’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between 'link' and 'port_status'. Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 55205d400efe3260e29ad26dd64c992cec2efafd Author: Ingo Molnar Date: Tue Nov 25 16:50:30 2008 -0800 ipv6: fix warning in net/ipv6/ip6_flowlabel.c this warning: net/ipv6/ip6_flowlabel.c: In function ‘ipv6_flowlabel_opt’: net/ipv6/ip6_flowlabel.c:467: warning: ‘err’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between fl_create() and 'err'. Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit dc0a0011cfa8ff01b86859006f4db3656c9a896b Author: Ingo Molnar Date: Tue Nov 25 16:50:02 2008 -0800 pkt_sched: fix warning in net/sched/sch_hfsc.c this warning: net/sched/sch_hfsc.c: In function ‘hfsc_enqueue’: net/sched/sch_hfsc.c:1577: warning: ‘err’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between hfsc_classify(), 'cl' and 'err'. Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit ed72b9c6e0ec4e66dd16b7ca212845e1eb985d65 Author: Ingo Molnar Date: Tue Nov 25 16:49:37 2008 -0800 sunrpc: fix warning in net/sunrpc/xprtrdma/svc_rdma_transport.c this warning: net/sunrpc/xprtrdma/svc_rdma_transport.c: In function ‘svc_rdma_accept’: net/sunrpc/xprtrdma/svc_rdma_transport.c:830: warning: ‘dma_mr_acc’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) flow connection between need_dma_mr and dma_mr_acc. Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit be5a3c62c805878d67036b4683f09118cab4c9fd Author: Ingo Molnar Date: Tue Nov 25 16:49:07 2008 -0800 qla3xxx: fix warning in drivers/net/qla3xxx.c this warning: drivers/net/qla3xxx.c: In function ‘ql3xxx_probe’: drivers/net/qla3xxx.c:3912: warning: ‘pci_using_dac’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between 'pci_using_dac' and 'err'. Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit f166400bd4c92df72d997e0da8713fae90d56e57 Author: Ingo Molnar Date: Tue Nov 25 16:48:42 2008 -0800 niu: fix another warning in drivers/net/niu.c this warning: drivers/net/niu.c: In function ‘esr_reset’: drivers/net/niu.c:741: warning: ‘reset’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between: - esr_read_reset() and 'reset' Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 51e0f058c496ef2ca5362c16a53ce1ce454d0817 Author: Ingo Molnar Date: Tue Nov 25 16:48:12 2008 -0800 niu: fix warnings in drivers/net/niu.c these warnings: drivers/net/niu.c: In function ‘serdes_init_niu_1g_serdes’: drivers/net/niu.c:451: warning: ‘sig’ may be used uninitialized in this function drivers/net/niu.c: In function ‘serdes_init_niu_10g_serdes’: drivers/net/niu.c:550: warning: ‘sig’ may be used uninitialized in this function triggers because GCC does not recognize that the max_retry loop always initializes 'sig', due to max_retry != 0. Annotate them. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 2e6a684b8489b21324f314be2bd8d3788a9f6445 Author: Ingo Molnar Date: Tue Nov 25 16:47:35 2008 -0800 s2io: fix warning in drivers/net/s2io.c this warning: drivers/net/s2io.c: In function ‘rx_intr_handler’: drivers/net/s2io.c:7369: warning: ‘lro’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between: - s2io_club_tcp_session()and 'lro' Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 09bb52175bf4d6a46fc8502e76be29206d9a677a Author: Daniel Lezcano Date: Tue Nov 25 16:46:37 2008 -0800 netns: filter out uevent not belonging to init_net This patch will filter out the uevent not related to the init_net. Without this patch if a network device is created in a network namespace with the same name as one network device belonging to the initial network namespace (eg. eth0), when the network namespace will die and the network device will be destroyed, an event will be sent and catched by the udevd daemon. That will result to have the real network device to be shutdown because the udevd/uevent are not namespace aware. Signed-off-by: Daniel Lezcano Acked-by: "Eric W. Biederman" Signed-off-by: David S. Miller commit cb13fc209f5c9394713319323166f74b01759ead Author: Robert Olsson Date: Tue Nov 25 16:43:52 2008 -0800 ixgbe: Naming interrupt vectors Signed-off-by: Robert Olsson Acked-by: Peter P Waskiewicz Jr Signed-off-by: David S. Miller commit 70340d728f4f4cb49da00a11b10ded492260caa5 Author: Robert Olsson Date: Tue Nov 25 16:41:57 2008 -0800 niu: Naming interrupt vectors. A patch to put names on the niu interrupt vectors according the syntax below. This is needed to assign correct affinity. > So on a multiqueue card with 2 RX queues and 2 TX queues we'd > have names like: > > eth0-rx-0 > eth0-rx-1 > eth0-tx-0 > eth0-tx-1 Signed-off-by: Robert Olsson Tested-by: Jesper Dangaard Brouer Signed-off-by: David S. Miller commit 9f782db3f5ceee9aa8de6f853969fbec1b8c6e65 Author: Ilpo Järvinen Date: Tue Nov 25 13:57:01 2008 -0800 tcp: skb_shift cannot cache frag ptrs past pskb_expand_head Since pskb_expand_head creates copy of the shared area we cannot keep any frag ptr past de-cloning. This fixes the tcpdump recvfrom -EFAULT problem. Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit f6486d40b33d1ac2c44c7c55db7edf022d9f4329 Author: Jarek Poplawski Date: Tue Nov 25 13:56:06 2008 -0800 pkt_sched: sch_api: Remove qdisc_list_lock After implementing qdisc->ops->peek() there is no more calling qdisc_tree_decrease_qlen() without rtnl_lock(), so qdisc_list_lock added by commit: f6e0b239a2657ea8cb67f0d83d0bfdbfd19a481b "pkt_sched: Fix qdisc list locking" can be removed. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 723b46108f8ee75b61ce703d0c9225e4f537bc46 Author: Eric Dumazet Date: Tue Nov 25 13:55:15 2008 -0800 net: udp_unhash() can test if sk is hashed Impact: Optimization Like done in inet_unhash(), we can avoid taking a chain lock if socket is not hashed in udp_unhash() Triggered by close(socket(AF_INET, SOCK_DGRAM, 0)); Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 5bc0b3bfa758e4ae49c94e31c1edb9a5f10a8060 Author: Eric Dumazet Date: Tue Nov 25 13:53:27 2008 -0800 net: Make sure BHs are disabled in sock_prot_inuse_add() prot->destroy is not called with BH disabled. So we must add explicit BH disable around call to sock_prot_inuse_add() in sctp_destroy_sock() Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 8eecaba900e89643029fd2c253ad8ebb60761165 Author: Ilpo Järvinen Date: Tue Nov 25 13:45:29 2008 -0800 tcp: tcp_limit_reno_sacked can become static Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 4ada424db196c78746fec255d493cacb1c9feddf Author: Luis R. Rodriguez Date: Fri Nov 14 14:44:22 2008 -0800 mac80211: don't assume driver has been attached on registration mac80211's ieee80211_register_hw() is often called within the probe path so it cannot assume the device's driver structure has been attached yet so to create a workqueue instead of using driver->name use the wiphy's phy%d name. The name doesn't really matter anyway. This should fix sporadic oopses found when we race to beat the driver pointer setting. Not even sure how this was working properly. http://www.kerneloops.org/search.php?search=ieee80211_register_hw Signed-off-by: Luis R. Rodriguez Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 4d3601b234a51fdd268c8ef8068d239e26dd7ef1 Author: Vasanthakumar Thiagarajan Date: Sat Nov 15 00:49:49 2008 +0530 ath9k: Configure AR_PHY_SWITCH_COM with apropriate antenna control This fixes the poor wireless connection which happens even if we are very well in the range. Signed-off-by: Don.breslin@atheros.com Signed-off-by: Vasanthakumar Thiagarajan Signed-off-by: John W. Linville commit ced0957442af69c5c41b00db85a933ed7876cc40 Author: Christian Lamparter Date: Fri Nov 14 19:42:39 2008 +0100 p54: honour bss_info_changed's basic_rates and other settings As was pointed out in "p54: honour bss_info_changed's short slot time settings", bss_info_changed provides more useful settings that can be used by the driver. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 40db0b22591f59811feeb7cad26fdde92a190663 Author: Christian Lamparter Date: Sun Nov 16 12:20:32 2008 +0100 p54pci: cache firmware for suspend/resume Johannes pointed out that the driver has cache the firmware for suspend/resume cycles. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit ffed785898a6dfd5f80d069bcb607b8cd5613c76 Author: Christian Lamparter Date: Fri Nov 14 19:41:22 2008 +0100 p54: minor fixes This patch contains only contains a one-liner fixes and enhancements Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit d131bb59c142585c389b5284d93743e4e065e393 Author: Christian Lamparter Date: Sat Nov 15 17:02:31 2008 +0100 p54: enable Mesh Point support This patch enables Mesh Point operation for any p54 device. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit f16f33df4d27f18bc6512dbe83ebbeaa693f0359 Author: Sujith Date: Fri Nov 14 16:27:53 2008 +0530 mac80211: Use the HT capabilities from the IE instead of the station's caps. Signed-off-by: Sujith Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 97b777db57f7226e31a4abd5e69d732037743195 Author: Luis R. Rodriguez Date: Thu Nov 13 19:11:57 2008 -0800 ath9k: make DMA memory consistent Make the DMAable mameory consistent with pci_set_consistent_dma_mask(). The DMA-mapping.txt Documentation recommends this but for PCI-X considerations and on strange architecture like SGI SN2, not sure why it would fix an issue but lets see if it does, just in case. Before this, this driver was tested with x86_64 with about 7 GB of RAM, not sure if this is really needed. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit 1d450cfc97bc223e9f94a2fab888bb168e284448 Author: Luis R. Rodriguez Date: Thu Nov 13 19:11:56 2008 -0800 ath9k: Clarify we only want 32-bit DMA Use DMA_32BIT_MASK to clarify we only want 32-bit DMA memory. What was there before is also 32-bit but this makes it clearer Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit f1ca2167d89d991eed519c789d3902f9682c06b8 Author: Ivo van Doorn Date: Thu Nov 13 23:07:33 2008 +0100 rt2x00: Detect USB BULK in/out endpoints Instead of hardcoding the used in/out endpoints we should detect them by walking through all available endpoints. rt2800usb will gain the most out of this, because the legacy drivers indicate that there are multiple endpoints available. However this code might benefit at least rt73usb as well for the MIMO queues, and if we are really lucky rt2500usb will benefit because for the TX and PRIO queues. Even if rt2500usb and rt73usb do not get better performance after this patch, the endpoint detection still belongs to rt2x00usb, and it shouldn't hurt to always try to detect the available endpoints. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit c8f96974eebbc8f078ad64f2d8041e6dce741d67 Author: Larry Finger Date: Thu Nov 13 12:30:41 2008 -0600 rtl8187: Remove module warning and dependence on CONFIG_EXPERIMENTAL After considerable testing, the initial fears that the driver might damage some flavors of RTL8187B hardware seem to be groundless. Accordingly, the logged warning is removed. In addition, Kconfig is changed to remove the dependence on EXPERIMENTAL. Signed-off-by: Larry Finger Acked-by: Herton Ronaldo Krzesinski Acked-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 3517afdefc3ad335b276eb5f8691841f48097abf Author: Herton Ronaldo Krzesinski Date: Thu Nov 13 10:39:16 2008 -0500 rtl8187: feedback transmitted packets using tx close descriptor for 8187B Realtek 8187B has a receive command queue to feedback beacon interrupt and transmitted packet status. Use it to feedback mac80211 about status of transmitted packets. Unfortunately in the course of testing I found that the sequence number reported by hardware includes entire sequence control in a 12 bit only field, so a workaround is done to check only lowest bits. Tested-by: Larry Finger Tested-by: Hin-Tak Leung Signed-off-by: Herton Ronaldo Krzesinski Signed-off-by: John W. Linville commit b4572a9264312fecdb530a3416b8c8336a3bb9a9 Author: Herton Ronaldo Krzesinski Date: Thu Nov 13 10:39:15 2008 -0500 rtl8187: implement conf_tx callback to configure tx queues Add conf_tx callback and use it to configure tx queues of 8187L/8187B. Tested-by: Larry Finger Tested-by: Hin-Tak Leung Signed-off-by: Herton Ronaldo Krzesinski Signed-off-by: John W. Linville commit 54ac218ae676931813169e0ca074aca2e4adee38 Author: Herton Ronaldo Krzesinski Date: Thu Nov 13 10:39:14 2008 -0500 rtl8187: fix 8187B throughput regression Hin-Tak Leung reported that after the change "rtl8187: add short slot handling for 8187B" his RTL8187B started to give low throughput on network transfers. Turns out that the SIFS setting used isn't ok, it doesn't look to be the real aSIFSTime, using the "magical" 0x22 value like on other 818x variants as the vendor does too fixes the issue. Tested-by: Larry Finger Tested-by: Hin-Tak Leung Signed-off-by: Herton Ronaldo Krzesinski Signed-off-by: John W. Linville commit db93e7b5bf9dea9175d5b213f9557758c56abbfc Author: Senthil Balasubramanian Date: Thu Nov 13 18:01:08 2008 +0530 ath9k: Race condition in accessing TX and RX buffers. Race condition causes RX buffers to be accessed even before it is initialized. The RX and TX buffers are initialized immediately after the hardware is registered with mac80211. The mac80211 start callback is ready to be fired once the device is registered for a case when the wpa_supplicant is also running at the same time. The same race condition is also possible for RKFILL registration as RFKILL init happens after the device registration with mac80211 and it is possible that rfkill_register would be called even before it is initialized. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit 306efdd109f086b19d849f1ec0f9104c9fdb3444 Author: Senthil Balasubramanian Date: Thu Nov 13 18:00:37 2008 +0530 ath9k: IRQ should be disabled before calling free_irq() ath9k frees irq even before IRQs are disabled and existing IRQs are flushed when rfkill_register() fails. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit e97275cb062cf927cdb086f0107657dd92160801 Author: Senthil Balasubramanian Date: Thu Nov 13 18:00:02 2008 +0530 ath9k: Build RFKILL feature even when RFKILL subsystem is a MODULE Currently, ath9k builds RFKILL feature only when the RFKILL subsystem is built part of the kernel. Build RFKILL feature regardless of whether RFKILL subsystem is built as a MODULE or part of the kernel. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit f9bbf431beb7dd98b94fa965dab851432be4b762 Author: Senthil Balasubramanian Date: Thu Nov 13 17:59:36 2008 +0530 ath9k: incorrect noise floor threshold values. This patch fixes incorrect noise floor threshold values. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit 9f8042021792f8c0e0a7f5b81f326bfab86cda83 Author: Senthil Balasubramanian Date: Thu Nov 13 17:58:41 2008 +0530 ath9k: INI update for atheros chipets. init values update for various atheros chipsets. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit ea4a82dceec7b5782b1259079c8de508d0afe33a Author: Luis R. Rodriguez Date: Wed Nov 12 14:22:04 2008 -0800 iwlwifi: enable custom fw regulatory solution This enables the custom firmware regulatory solution option on iwlwifi drivers. These devices are uncapable of mapping their EEPROM regulatory domain to a specific ISO / IEC alpha2. Although the new 11n devices (>= iwl 5000) have only 3 regultaory SKUs -- MOW, ABG (no N) and BG -- the older devices (3945 and 4965) have a more complex SKU arrangement and therefore its not practical to move this to the driver. Signed-off-by: Luis R. Rodriguez Acked-by: Zhu Yi Signed-off-by: John W. Linville commit 14b9815af3f4fe0e171ee0c4325c31d2a2c1570b Author: Luis R. Rodriguez Date: Wed Nov 12 14:22:03 2008 -0800 cfg80211: add support for custom firmware regulatory solutions This adds API to cfg80211 to allow wireless drivers to inform us if their firmware can handle regulatory considerations *and* they cannot map these regulatory domains to an ISO / IEC 3166 alpha2. In these cases we skip the first regulatory hint instead of expecting the driver to build their own regulatory structure, providing us with an alpha2, or using the reg_notifier(). Signed-off-by: Luis R. Rodriguez Acked-by: Zhu Yi Signed-off-by: John W. Linville commit 3f2355cb9111ac04e7ae06a4d7044da2ae813863 Author: Luis R. Rodriguez Date: Wed Nov 12 14:22:02 2008 -0800 cfg80211/mac80211: Add 802.11d support This adds country IE parsing to mac80211 and enables its usage within the new regulatory infrastructure in cfg80211. We parse the country IEs only on management beacons for the BSSID you are associated to and disregard the IEs when the country and environment (indoor, outdoor, any) matches the already processed country IE. To avoid following misinformed or outdated APs we build and use a regulatory domain out of the intersection between what the AP provides us on the country IE and what CRDA is aware is allowed on the same country. A secondary device is allowed to follow only the same country IE as it make no sense for two devices on a system to be in two different countries. In the case the AP is using country IEs for an incorrect country the user may help compliance further by setting the regulatory domain before or after the IE is parsed and in that case another intersection will be performed. CONFIG_WIRELESS_OLD_REGULATORY is supported but requires CRDA present. Signed-off-by: Luis R. Rodriguez Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 88dc1c3f7f9058cd5ceae1e4b53453484c7b0364 Author: Luis R. Rodriguez Date: Wed Nov 12 14:22:01 2008 -0800 cfg80211: mark regdomains with > NL80211_MAX_SUPP_REG_RULES invalid Lets remain consistent and mark rds with > NL80211_MAX_SUPP_REG_RULES number of reg rules as invalid in is_valid_rd(). Signed-off-by: Luis R. Rodriguez Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 02ba0b3263f4eb41d2a5714cbe99207ae491a964 Author: Luis R. Rodriguez Date: Wed Nov 12 14:22:00 2008 -0800 cfg80211: call_crda() won't tell us if CRDA was present kobject_uevent_env() can return an error but it just tells us if the uvent was built/sent or not, it doesn't tell us anything about what happened in userspace, whether the udev rule was present nor does it tell us if CRDA was present or not. So remove the informative complaint about it assuming it will tell us such things. Note that you can determine if CRDA is present after loading cfg80211 by using: is_old_static_regdom(cfg80211_regdomain) but this doesn't account for possible user install after initial boot, and also for when the user uses the static EU regulatory domain. Signed-off-by: Luis R. Rodriguez Acked-by: Johannes Berg Signed-off-by: John W. Linville commit a01ddafd43f7d53a65ef053eb80a4dee58839c1f Author: Luis R. Rodriguez Date: Wed Nov 12 14:21:59 2008 -0800 cfg80211: expect different rd in cfg80211 when intersecting When intersecting it is possible that set_regdom() was called with a regulatory domain which we'll only use as an aid to build a final regulatory domain. Signed-off-by: Luis R. Rodriguez Acked-by: Johannes Berg Signed-off-by: John W. Linville commit b8295acdc323e6e383ec822fc1e95edeb9148513 Author: Luis R. Rodriguez Date: Wed Nov 12 14:21:58 2008 -0800 cfg80211: separate intersection section in __set_regdom() So far the __set_regdom() code is pretty generic as the intersection case is fairly straight forward; this will however change when 802.11d support is added so lets separate intersection code for now in preparation for 802.11d support. This patch only has slight functional changes. Signed-off-by: Luis R. Rodriguez Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 8375af3ba213154041cfbc655f452913f23bfbd5 Author: Luis R. Rodriguez Date: Wed Nov 12 14:21:57 2008 -0800 cfg80211: remove switch from __set_regdom() We have control over the REGDOM_SET_BY_* macros passed so remove the switch. This patch has no functional changes. Signed-off-by: Luis R. Rodriguez Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 5203cdb6ad430d3313444ddc6486da70af1a60db Author: Luis R. Rodriguez Date: Wed Nov 12 14:21:56 2008 -0800 cfg80211: remove switch from __regulatory_hint() We have complete control over REGDOM_SET_BY_* enum passed down to __regulatory_hint() as such there is no need to account for unexpected REGDOM_SET_BY_*'s, lets just remove the switch statement as this code does not change and won't change even when we add 802.11d support. This patch has no functional changes. Signed-off-by: Luis R. Rodriguez Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 91e9900418fb01229094fb83befa3591afcae1e7 Author: Luis R. Rodriguez Date: Wed Nov 12 14:21:55 2008 -0800 cfg80211: mark negative frequencies as invalid Regulatory rules with negative frequencies are now marked as invalid in is_valid_reg_rule(). Signed-off-by: Luis R. Rodriguez Acked-by: Johannes Berg Signed-off-by: John W. Linville commit e0737a77d6cba100dea7e53bf490d67d110bc037 Author: Tomas Winkler Date: Wed Nov 12 13:14:11 2008 -0800 iwlwifi: iwl-fh.h cleanup This patch fix value of upper FH register bound plus it reorders and groups registers in more readable way Signed-off-by: Tomas Winkler Acked-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 34faf780cf342b2c83ae40a2eecf33e55f7002a5 Author: Zhu, Yi Date: Wed Nov 12 13:14:10 2008 -0800 iwlwifi: some fh document fix and cleanup This patch cleans up some flow handler related document. It also removes some blank lines. Signed-off-by: Zhu Yi Acked-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 352bc8de19a7e5e065d422825e226e8e80cd6576 Author: Zhu, Yi Date: Wed Nov 12 13:14:09 2008 -0800 iwlwifi: configure_filter rewrite The patch rewrites the mac80211 configure_filter handler to better mapping mac80211 filter flags to iwlwifi hardware filter flags. We now can support 5 mac80211 filter flags: FIF_OTHER_BSS, FIF_ALLMULTI, FIF_PROMISC_IN_BSS, FIF_BCN_PRBRESP_PROMISC and FIF_CONTROL. This patch also avoids reconnecting if the filter flags are changed when the STA is associated. Because rx_assoc is used when full rxon is not necessary. Signed-off-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit c3056065400aeb437390e1a86b85f9c32fb1c1df Author: Abhijeet Kolekar Date: Wed Nov 12 13:14:08 2008 -0800 iwlwifi : fix checkpatch.pl errors Patch fixes checkpatch.pl errors for iwlwifi. Signed-off-by: Abhijeet Kolekar Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit dbce56a456f6d6302a77107088340828dcaf9a02 Author: Chatre, Reinette Date: Wed Nov 12 13:14:07 2008 -0800 iwlwifi: replace magic constants with define use IWL_CCK_RATES_MASK and IWL_OFDM_RATES_MASK instead of their values directly. Signed-off-by: Reinette Chatre cc: Harvey Harrison Signed-off-by: John W. Linville commit 417f114bf2efa6183477a75da272c0d452e1cda3 Author: Tomas Winkler Date: Wed Nov 12 13:14:06 2008 -0800 iwlwifi: rs: remove fc variable and other cleanups This patch 1. Removes use once use only fc variables, they are useless after refactoring ieee80211 frame control handlers 2. Other trivial cleanups Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 9f58671e8d4f4896acea30020308ce72bf94ec6e Author: Tomas Winkler Date: Wed Nov 12 13:14:05 2008 -0800 iwlwifi: consolidate station management code This patch moves code around and group most of the station management code into iwl-sta.c No functional changes (yet) Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit cee53ddb46eb520079335d0868d0e81c8d311089 Author: Kolekar, Abhijeet Date: Wed Nov 12 13:14:04 2008 -0800 iwl3945 : Simplify iwl3945_pci_probe Patch aligns iwl3945_pci_probe with iwlwifi's iwl_pci_probe. Added few comments and code simplified to make readable. Signed-off-by: Abhijeet Kolekar Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 0e3de99846489424c2cba952e0a52c269f01009a Author: Ivo van Doorn Date: Wed Nov 12 00:01:37 2008 +0100 rt2x00: Fix TX failure path The callback function write_tx_data() can only fail when our ENTRY_OWNER_DEVICE_DATA flag on a queue entry failed to determine the entry was not available and it is in fact still owned by the hardware. This means that if that function fails the queue must be stopped in mac80211. When rt2x00queue_get_queue() returns NULL in the TX path, it means mac80211 has passed us an invalid queue, although this should be impossible, it shouldn't hurt if we send mac80211 a signal to stop the queue either. Both issues can simply be resolved by removing their manual failure handler and making them use the failure path provided in rt2x00mac_tx(). Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 0f829b1d6f499447052f98098e41fd6a091eadd0 Author: Ivo van Doorn Date: Mon Nov 10 19:42:18 2008 +0100 rt2x00: Move rt73usb register access wrappers into rt2x00usb rt2500usb and rt73usb have different register word sizes, for that reason the register access wrappers were never moved into rt2x00usb. With rt2800usb on its way, we should favor the 32bit register access and move those wrappers into rt2x00usb. That saves duplicate code, since only rt2500usb will need the special 16bit wrappers. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit c9c3b1a5deac4297503145840fffcd122b253db5 Author: Ivo van Doorn Date: Mon Nov 10 19:41:40 2008 +0100 rt2x00: Cleanup indirect register access All code which accessed indirect registers was similar in respect to the for-loop, the given timeout, etc. Move it into a seperate function, which for PCI drivers can be moved into rt2x00pci. This allows us to cleanup the cleanup the code further by removing the goto statementsand making the codepath look a bit nicer. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 9764f3f9c3700620f9f8a1f9af57f58758e835da Author: Johannes Berg Date: Mon Nov 10 18:56:59 2008 +0100 ath5k: name pci driver "ath5k" too Call the ath5k pci driver struct "ath5k" too to be less confusing in sysfs. Signed-off-by: Johannes Berg Acked-by: Nick Kossifidis Signed-off-by: John W. Linville commit d6e8cc6cc7ac77b0f9118f78c453a2e834e62709 Author: Ingo Molnar Date: Tue Nov 25 18:23:03 2008 +0100 netfilter: fix warning in net/netfilter/nf_conntrack_ftp.c this warning: net/netfilter/nf_conntrack_ftp.c: In function 'help': net/netfilter/nf_conntrack_ftp.c:360: warning: 'matchoff' may be used uninitialized in this function net/netfilter/nf_conntrack_ftp.c:360: warning: 'matchlen' may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between find_pattern(), 'found', 'matchoff' and 'matchlen'. Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: Patrick McHardy commit 65f233fb1669e6c990cd1d7fd308ac7dc66dc207 Author: Ingo Molnar Date: Tue Nov 25 18:20:13 2008 +0100 netfilter: fix warning in net/netfilter/nf_conntrack_proto_tcp.c fix this warning: net/netfilter/nf_conntrack_proto_tcp.c: In function \u2018tcp_in_window\u2019: net/netfilter/nf_conntrack_proto_tcp.c:491: warning: unused variable \u2018net\u2019 net/netfilter/nf_conntrack_proto_tcp.c: In function \u2018tcp_packet\u2019: net/netfilter/nf_conntrack_proto_tcp.c:812: warning: unused variable \u2018net\u2019 Signed-off-by: Ingo Molnar Signed-off-by: Patrick McHardy commit 1e9b51c28312f7334394aa30be56ff52c2b65b7e Author: Markus Metzger Date: Tue Nov 25 09:24:15 2008 +0100 x86, bts, ftrace: a BTS ftrace plug-in prototype Impact: add new ftrace plugin A prototype for a BTS ftrace plug-in. The tracer collects branch trace in a cyclic buffer for each cpu. The tracer is not configurable and the trace for each snapshot is appended when doing cat /debug/tracing/trace. This is a proof of concept that will be extended with future patches to become a (hopefully) useful tool. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit 8bba1bf5e2434c83f2fe8b1422604ace9bbe4cb8 Author: Markus Metzger Date: Tue Nov 25 09:12:31 2008 +0100 x86, ftrace: call trace->open() before stopping tracing; add trace->print_header() Add a callback to allow an ftrace plug-in to write its own header. Move the call to trace->open() up a few lines. The changes are required by the BTS ftrace plug-in. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit 6abb11aecd888d1da6276399380b7355f127c006 Author: Markus Metzger Date: Tue Nov 25 09:05:27 2008 +0100 x86, bts, ptrace: move BTS buffer allocation from ds.c into ptrace.c Impact: restructure DS memory allocation to be done by the usage site of DS Require pre-allocated buffers in ds.h. Move the BTS buffer allocation for ptrace into ptrace.c. The pointer to the allocated buffer is stored in the traced task's task_struct together with the handle returned by ds_request_bts(). Removes memory accounting code. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit ca0002a179bfa532d009a9272d619732872c49bd Author: Markus Metzger Date: Tue Nov 25 09:01:25 2008 +0100 x86, bts: base in-kernel ds interface on handles Impact: generalize the DS code to shared buffers Change the in-kernel ds.h interface to identify the tracer via a handle returned on ds_request_~(). Tracers used to be identified via their task_struct. The changes are required to allow DS to be shared between different tasks, which is needed for perfmon2 and for ftrace. For ptrace, the handle is stored in the traced task's task_struct. This should probably go into a (arch-specific) ptrace context some time. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit 7d55718b0c19ba611241c330f688ee824e9bab79 Merge: 6f893fb2e89287a4d755f928c3cda9d18440355c de90add30e79261c3b5be68bb0f22d2ef98e8113 f4166c54bfe04f64603974058e44fbd7cfef0ccc Author: Ingo Molnar Date: Tue Nov 25 17:30:25 2008 +0100 Merge branches 'tracing/core', 'x86/urgent' and 'x86/ptrace' into tracing/hw-branch-tracing This pulls together all the topic branches that are needed for the DS/BTS/PEBS tracing work. commit 9e0f1b7f6bc5265847e995540981642c857f15b6 Author: Qinghuang Feng Date: Tue Nov 25 23:24:54 2008 +0800 ASoC: Clean up kernel-doc for snd_soc_dai_set_fmt There is no argument named @clk_id in snd_soc_dai_set_fmt, remove its' comment. Signed-off-by: Qinghuang Feng Signed-off-by: Mark Brown commit 5c0d7bb797a975691ca8bbc38e53da03c6e151bb Author: Dmitry Baryshkov Date: Tue Nov 25 09:35:21 2008 +0300 ASoC: tosa: move gpio probing to machine callbacks Signed-off-by: Dmitry Baryshkov Signed-off-by: Mark Brown commit 4451582f7e9fc2860b289aca60a6065286439bb8 Author: Misael Lopez Cruz Date: Mon Nov 24 22:21:23 2008 -0600 ASoC: Add support for TI SDP3430 This patch add ASoC support for TI SDP3430. It's based on Gumstix Overo SoC code by Steve Sakoman. Signed-off-by: Misael Lopez Cruz Signed-off-by: Mark Brown commit 9c8f1a0e6ed48f2ecf08ac0fb7fb043f8c34dc63 Author: Arun KS Date: Tue Nov 25 09:56:12 2008 +0530 ASoC: Fix TWL4030 Kconfig dependency Fixes Kconfig dependency of TWL4030 audio codec driver with TWL4030 core driver on both overo and omap2evm boards Signed-off-by: Arun KS Acked-by: David Brownell Signed-off-by: Mark Brown commit 375e8a7c943d5aa8716be229e398473b23709ce9 Author: Jarkko Nikula Date: Tue Nov 25 12:45:09 2008 +0200 ASoC: OMAP: Add support for mono audio links in McBSP DAI Patch adds support for mono audio links so that McBSP DAI can operate with real mono codecs. In I2S, the signalling remains the same but only first frame (left channel) is transmitting audio data and second frame having null data. In DSP_A, only first frame is transmitted. Signed-off-by: Jarkko Nikula Signed-off-by: Mark Brown commit 0be43050d4da08295b985cb23347ecc1003cb8d6 Author: Jarkko Nikula Date: Tue Nov 25 12:45:08 2008 +0200 ASoC: OMAP: Apply channel constrains to N810 machine driver Prepare for upcoming McBSP DAI update adding support for mono links by restricting number of channels to 2 in N810. This is due tlv320aic3x which claims channels_min = 1 and playing pure mono audio over I2S would cause it to be played only from left channel if both cpu and codec DAI's claim to support mono. Signed-off-by: Jarkko Nikula Signed-off-by: Mark Brown commit b0e6481a9ae9e8c80b5d956980767ecad35c95c1 Author: Takashi Iwai Date: Tue Nov 25 16:07:01 2008 +0100 ALSA: hda - Really fix bits value in proc output The fix in 82894b6f6f109722070d4d78730fe50cdaba9443 resulted in zero due to wrong mask and bit shifts. Now fixed really. Signed-off-by: Takashi Iwai commit eefe93b9957e6f14780b7d37aeda0f27f341953d Merge: ee09543c866559e1ffb4f5c38533f2bedd725acd 661cd8fb5210af78f0763071642e0764a10389a6 Author: Takashi Iwai Date: Tue Nov 25 15:20:57 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda Conflicts: sound/pci/hda/patch_sigmatel.c commit ee09543c866559e1ffb4f5c38533f2bedd725acd Author: Takashi Iwai Date: Tue Nov 25 15:03:38 2008 +0100 ALSA: hda - Add quirk for MSI 7260 mobo Added preset model=targa-dig for MSI 7260 mobo. Signed-off-by: Takashi Iwai commit c0193f39f43c79bde6c1c5804f5315f3983152b5 Author: Markus Bollinger Date: Tue Nov 25 12:37:52 2008 +0100 ALSA: pcxhr - add support for pcxhr stereo sound cards (mixer part) - add support for pcxhr stereo cards mixer controls - adjust tlv db scales to real dBu values - fix bug with monitoring volume control pcxhr_monitor_vol_put - do some cleanup Signed-off-by: Markus Bollinger Signed-off-by: Takashi Iwai commit 2f9889a20cd2854bc6305198255c617b0b4eb719 Author: David S. Miller Date: Tue Nov 25 03:53:09 2008 -0800 Revert "hso: Fix crashes on close." This reverts commit 4a3e818181e1baf970e9232ca8b747e233176b87. On request from Alan Cox. Signed-off-by: David S. Miller commit ab153d84d9609b4e6f53632a6f14b882e866cb47 Author: David S. Miller Date: Tue Nov 25 03:52:46 2008 -0800 Revert "hso: Fix free of mutexes still in use." This reverts commit 52429eb216385fdc6969c0112ba8b46cffefaaef. On request from Alan Cox. Signed-off-by: David S. Miller commit cd90ee1799136bd74158b734cf71b72609244a91 Author: David S. Miller Date: Tue Nov 25 03:52:17 2008 -0800 Revert "hso: Add TIOCM ioctl handling." This reverts commit 7ea3a9ad9bf360f746a7ad6fa72511a5c359490d. On request from Alan Cox. Signed-off-by: David S. Miller commit 7628700e08403618b0b07bd25b6456d8b2d074ef Author: Markus Bollinger Date: Tue Nov 25 12:28:06 2008 +0100 ALSA: pcxhr - add support for pcxhr stereo sound cards (firmware support) - Add support for pcxhr stereo cards and their firmware - autorize sound cards without analog IO - do some cleanup Signed-off-by: Markus Bollinger Signed-off-by: Takashi Iwai commit 9d948d270010e3552c94281bab75694580ca23e9 Author: Markus Bollinger Date: Tue Nov 25 12:24:54 2008 +0100 ALSA: pcxhr - add support for pcxhr stereo sound cards (core change) - Add support for pcxhr stereo cards - minor bugfixes : period and buffer size consraints - fix PLL register values - do some clean up Signed-off-by: Markus Bollinger Signed-off-by: Takashi Iwai commit 93bf5d8753b2e3cc9e8982d551d119a54a31a7ec Author: Markus Bollinger Date: Tue Nov 25 12:21:05 2008 +0100 ALSA: pcxhr - add support for pcxhr stereo sound cards - Add support for pcxhr stereo cards - do some clean up Signed-off-by: Markus Bollinger Signed-off-by: Takashi Iwai commit 9f40ac713c49fb6ca655550b620edc85c445d743 Author: Eric Leblond Date: Tue Nov 25 12:18:11 2008 +0100 netfilter: nfmark IPV6 routing in OUTPUT, mangle, NFQUEUE This patch let nfmark to be evaluated for routing decision for OUTPUT packet, in mangle table, when process paquet in NFQUEUE. This patch is an IPv6 port of Laurent Licour IPv4 one. Signed-off-by: Eric Leblond Signed-off-by: Patrick McHardy commit 5f145e44ae09f629d25536b2947a91e9c01bddcb Author: Eric Leblond Date: Tue Nov 25 12:15:16 2008 +0100 netfilter: nfmark routing in OUTPUT, mangle, NFQUEUE This patch let nfmark to be evaluated for routing decision for OUTPUT packet, in mangle table, when process paquet in NFQUEUE Until now, only change (in NFQUEUE process) on fields src_addr, dest_addr and tos could make netfilter to reevalute the routing. From: Laurent Licour Signed-off-by: Eric Leblond Signed-off-by: Patrick McHardy commit c6e4c66613c2bb040e53bb04006c277992cc8f4b Author: Takashi Iwai Date: Tue Nov 25 11:58:19 2008 +0100 ALSA: hda - Assign unsol tags dynamically in patch_sigmatel.c Since we need to handle many unsolicited events assigned to different widgets, allocate the event dynamically using the existing events array, and use the tag appropriately instead of combination of fixed number and widget nid. (Note that widget nid can be over 4 bits!) Also, replaced the call of unsol_event handler with a dedicated function to be more readable. Signed-off-by: Takashi Iwai commit 0e19e7d2bff0ec04fe4dc920c580d8a321afa07f Merge: 82894b6f6f109722070d4d78730fe50cdaba9443 f73d35853e9263c7c404f0d6c0fe3d83fc6fd5c0 Author: Takashi Iwai Date: Tue Nov 25 11:56:25 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda Conflicts: sound/pci/hda/patch_sigmatel.c commit 82894b6f6f109722070d4d78730fe50cdaba9443 Author: Takashi Iwai Date: Tue Nov 25 11:42:54 2008 +0100 ALSA: hda - Fix proc pcm rate bits Show only the relevant bits in the PCM rate bits as in the earlier version. Signed-off-by: Takashi Iwai commit fb7e06748c29c08a9f5ca057a780b65acbb91c27 Author: Alexey Dobriyan Date: Tue Nov 25 01:05:54 2008 -0800 xfrm: remove useless forward declarations Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 6daad37230ab02bb593d179d704079d4b5912bd7 Author: Alexey Dobriyan Date: Tue Nov 25 01:05:09 2008 -0800 ah4/ah6: remove useless NULL assignments struct will be kfreed in a moment, so... Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 69d728baf620839d1a3c874eecac316729f89de4 Author: Alexander Duyck Date: Tue Nov 25 01:04:03 2008 -0800 igb: loopback bits not correctly cleared from RCTL register This change forces the bits to 0 by using an &= operation with an inverted mask of all options instead of using an |= with a value of 0. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 9b07f3d3157487e6467dfa4640f7fb9446165494 Author: Alexander Duyck Date: Tue Nov 25 01:03:26 2008 -0800 igb: remove unneeded bit refrence when enabling jumbo frames There is a reference to a Buffer Size extention bit that is unneded by 82575/82576 hardware. Since it is not needed it should be removed from the code. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 7a6b6f515f77d1c62a2f383b6dce18cb0af0cf4f Author: Jeff Kirsher Date: Tue Nov 25 01:02:08 2008 -0800 DCB: fix kconfig option Since the netlink option for DCB is necessary to actually be useful, simplified the Kconfig option. In addition, added useful help text for the Kconfig option. Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 411c41eea58bd3500cf897e2c27dd5330935a3a8 Author: Harvey Harrison Date: Tue Nov 25 00:40:37 2008 -0800 aoe: remove private mac address format function Add %pm to omit the colons when printing a mac address. Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 9c8f92aed16dbd1924910f3305f5992a4f29fe2a Author: Denis Joseph Barrow Date: Tue Nov 25 00:36:10 2008 -0800 hso: Hook up ->reset_resume Made usb_drivers reset_resume function point to hso_resume this fixes problems a usb reset is done when the network interface is left idle for a few minutes. Possibly reset_resume should initialise hardware more but this works in the common case. Signed-off-by: Denis Joseph Barrow Signed-off-by: David S. Miller commit 7ea3a9ad9bf360f746a7ad6fa72511a5c359490d Author: Denis Joseph Barrow Date: Tue Nov 25 00:35:26 2008 -0800 hso: Add TIOCM ioctl handling. Makes TIOCM ioctls for Data Carrier Detect & related functions work like /drivers/serial/serial-core.c potentially needed for pppd & similar user programs. Signed-off-by: Denis Joseph Barrow Signed-off-by: David S. Miller commit 52429eb216385fdc6969c0112ba8b46cffefaaef Author: Denis Joseph Barrow Date: Tue Nov 25 00:33:13 2008 -0800 hso: Fix free of mutexes still in use. A new structure hso_mutex_table had to be declared statically & used as as hso_device mutex_lock(&serial->parent->mutex) etc is freed in hso_serial_open & hso_serial_close by kref_put while the mutex is still in use. This is a substantial change but should make the driver much stabler. Signed-off-by: Denis Joseph Barrow Signed-off-by: David S. Miller commit 89930b7b5e3e9bfe9c6ec5e19920451c8f5d9088 Author: Denis Joseph Barrow Date: Tue Nov 25 00:30:48 2008 -0800 hso: Fix URB submission -EINVAL. Added check for IFF_UP in hso_resume, this should eliminate -EINVAL (-22) errors caused from urb's being submitted twice, once by hso_resume & once in hso_net_open, if suspend/resume USB power saving mode is enabled Signed-off-by: Denis Joseph Barrow Signed-off-by: David S. Miller commit 4a3e818181e1baf970e9232ca8b747e233176b87 Author: Denis Joseph Barrow Date: Tue Nov 25 00:27:50 2008 -0800 hso: Fix crashes on close. Moved serial_open_count in hso_serial_open to prevent crashes owing to the serial structure being made NULL when hso_serial_close is called even though hso_serial_open returned -ENODEV, Alan Cox pointed out this happens, also put in sanity check in hso_serial_close to check for a valid serial structure which should prevent the most reproducable crash in the driver when the hso device is disconnected while in use. Signed-off-by: Denis Joseph Barrow Signed-off-by: David S. Miller commit bab04c3adbb55aeb5e8db60522f14ce0bb0d4179 Author: Denis Joseph Barrow Date: Tue Nov 25 00:26:12 2008 -0800 hso: Add new usb device id's. Signed-off-by: Denis Joseph Barrow Signed-off-by: David S. Miller commit 47fd5b8373ecc6bf5473e4139b62b06425448252 Author: Stephen Hemminger Date: Tue Nov 25 00:20:43 2008 -0800 netdev: add HAVE_NET_DEVICE_OPS As a concession to vendors who have to deal with one source for different kernel versions, add a HAVE_NET_DEVICE_OPS so they don't end up hard coding ifdef against kernel version. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit e951e4af2e399c46891004d4931333d2d8d520ab Author: Ingo Molnar Date: Tue Nov 25 08:42:01 2008 +0100 x86: fix unused variable warning in arch/x86/kernel/hpet.c Impact: fix build warning this warning: arch/x86/kernel/hpet.c:36: warning: ‘hpet_num_timers’ defined but not used Triggers because hpet_num_timers is unused in the !CONFIG_PCI_MSI case. Signed-off-by: Ingo Molnar commit 14bfc987e395797dfe03e915e8b4c7fc9e5078e4 Author: Ingo Molnar Date: Tue Nov 25 08:58:11 2008 +0100 tracing, tty: fix warnings caused by branch tracing and tty_kref_get() Stephen Rothwell reported tht this warning started triggering in linux-next: In file included from init/main.c:27: include/linux/tty.h: In function ‘tty_kref_get’: include/linux/tty.h:330: warning: ‘______f’ is static but declared in inline function ‘tty_kref_get’ which is not static Which gcc emits for 'extern inline' functions that nevertheless define static variables. Change it to 'static inline', which is the norm in the kernel anyway. Reported-by: Stephen Rothwell Signed-off-by: Ingo Molnar commit 0ace285605314c54339710484b54814945a60df8 Author: Ilpo Järvinen Date: Mon Nov 24 21:30:21 2008 -0800 tcp: handle shift/merge of cloned skbs too This caused me to get repeatably: tcpdump: pcap_loop: recvfrom: Bad address Happens occassionally when I tcpdump my for-looped test xfers: while [ : ]; do echo -n "$(date '+%s.%N') "; ./sendfile; sleep 20; done Rest of the relevant commands: ethtool -K eth0 tso off tc qdisc add dev eth0 root netem drop 4% tcpdump -n -s0 -i eth0 -w sacklog.all Running net-next under kvm, connection goes to the same host (basically just out of kvm). The connection itself works ok and data gets sent without corruption even with a large number of tests while tcpdump fails usually within less than 5 tests. Whether it only happens because of this change or not, I don't know for sure but it's the only thing with which I've seen that error. The non-cloned variant works w/o it for much longer time. I'm yet to debug where the error actually comes from. Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 111cc8b913b42ef07793648b1699288332f273e1 Author: Ilpo Järvinen Date: Mon Nov 24 21:27:22 2008 -0800 tcp: add some mibs to track collapsing Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 92ee76b6d99bfcdab6162816c9025541ef7248eb Author: Ilpo Järvinen Date: Mon Nov 24 21:26:56 2008 -0800 tcp: Make shifting not clear the hints The earlier version was just very basic one which is "playing safe" by always clearing the hints. However, clearing of a hint is extremely costly operation with large windows, so it must be avoided at all cost whenever possible, there is a way with shifting too achieve not-clearing. Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 832d11c5cd076abc0aa1eaf7be96c81d1a59ce41 Author: Ilpo Järvinen Date: Mon Nov 24 21:20:15 2008 -0800 tcp: Try to restore large SKBs while SACK processing During SACK processing, most of the benefits of TSO are eaten by the SACK blocks that one-by-one fragment SKBs to MSS sized chunks. Then we're in problems when cleanup work for them has to be done when a large cumulative ACK comes. Try to return back to pre-split state already while more and more SACK info gets discovered by combining newly discovered SACK areas with the previous skb if that's SACKed as well. This approach has a number of benefits: 1) The processing overhead is spread more equally over the RTT 2) Write queue has less skbs to process (affect everything which has to walk in the queue past the sacked areas) 3) Write queue is consistent whole the time, so no other parts of TCP has to be aware of this (this was not the case with some other approach that was, well, quite intrusive all around). 4) Clean_rtx_queue can release most of the pages using single put_page instead of previous PAGE_SIZE/mss+1 calls In case a hole is fully filled by the new SACK block, we attempt to combine the next skb too which allows construction of skbs that are even larger than what tso split them to and it handles hole per on every nth patterns that often occur during slow start overshoot pretty nicely. Though this to be really useful also a retransmission would have to get lost since cumulative ACKs advance one hole at a time in the most typical case. TODO: handle upwards only merging. That should be rather easy when segment is fully sacked but I'm leaving that as future work item (it won't make very large difference anyway since this current approach already covers quite a lot of normal cases). I was earlier thinking of some sophisticated way of tracking timestamps of the first and the last segment but later on realized that it won't be that necessary at all to store the timestamp of the last segment. The cases that can occur are basically either: 1) ambiguous => no sensible measurement can be taken anyway 2) non-ambiguous is due to reordering => having the timestamp of the last segment there is just skewing things more off than does some good since the ack got triggered by one of the holes (besides some substle issues that would make determining right hole/skb even harder problem). Anyway, it has nothing to do with this change then. I choose to route some abnormal looking cases with goto noop, some could be handled differently (eg., by stopping the walking at that skb but again). In general, they either shouldn't happen at all or are rare enough to make no difference in practice. In theory this change (as whole) could cause some macroscale regression (global) because of cache misses that are taken over the round-trip time but it gets very likely better because of much less (local) cache misses per other write queue walkers and the big recovery clearing cumulative ack. Worth to note that these benefits would be very easy to get also without TSO/GSO being on as long as the data is in pages so that we can merge them. Currently I won't let that happen because DSACK splitting at fragment that would mess up pcounts due to sk_can_gso in tcp_set_skb_tso_segs. Once DSACKs fragments gets avoided, we have some conditions that can be made less strict. TODO: I will probably have to convert the excessive pointer passing to struct sacktag_state... :-) My testing revealed that considerable amount of skbs couldn't be shifted because they were cloned (most likely still awaiting tx reclaim)... [The rest is considering future work instead since I got repeatably EFAULT to tcpdump's recvfrom when I added pskb_expand_head to deal with clones, so I separated that into another, later patch] ...To counter that, I gave up on the fifth advantage: 5) When growing previous SACK block, less allocs for new skbs are done, basically a new alloc is needed only when new hole is detected and when the previous skb runs out of frags space ...which now only happens of if reclaim is fast enough to dispose the clone before the SACK block comes in (the window is RTT long), otherwise we'll have to alloc some. With clones being handled I got these numbers (will be somewhat worse without that), taken with fine-grained mibs: TCPSackShifted 398 TCPSackMerged 877 TCPSackShiftFallback 320 TCPSACKCOLLAPSEFALLBACKGSO 0 TCPSACKCOLLAPSEFALLBACKSKBBITS 0 TCPSACKCOLLAPSEFALLBACKSKBDATA 0 TCPSACKCOLLAPSEFALLBACKBELOW 0 TCPSACKCOLLAPSEFALLBACKFIRST 1 TCPSACKCOLLAPSEFALLBACKPREVBITS 318 TCPSACKCOLLAPSEFALLBACKMSS 1 TCPSACKCOLLAPSEFALLBACKNOHEAD 0 TCPSACKCOLLAPSEFALLBACKSHIFT 0 TCPSACKCOLLAPSENOOPSEQ 0 TCPSACKCOLLAPSENOOPSMALLPCOUNT 0 TCPSACKCOLLAPSENOOPSMALLLEN 0 TCPSACKCOLLAPSEHOLE 12 Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit f58b22fd3c16444edc393a217a74208f1894b601 Author: Ilpo Järvinen Date: Mon Nov 24 21:14:43 2008 -0800 tcp: make tcp_sacktag_one able to handle partial skb too This is preparatory work for SACK combiner patch which may have to count TCP state changes for only a part of the skb because it will intentionally avoids splitting skb to SACKed and not sacked parts. Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit adb92db857ee2a0a2b925ccfbd560203c3f88aae Author: Ilpo Järvinen Date: Mon Nov 24 21:13:50 2008 -0800 tcp: Make SACK code to split only at mss boundaries Sadly enough, this adds possible divide though we try to avoid it by checking one mss as common case. Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit e8bae275d9354104f7ae24a48a90d1a6286e7bd9 Author: Ilpo Järvinen Date: Mon Nov 24 21:12:28 2008 -0800 tcp: more aggressive skipping I knew already when rewriting the sacktag that this condition was too conservative, change it now since it prevent lot of useless work (especially in the sack shifter decision code that is being added by a later patch). This shouldn't change anything really, just save some processing regardless of the shifter. Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit e1aa680fa40e7492260a09cb57d94002245cc8fe Author: Ilpo Järvinen Date: Mon Nov 24 21:11:55 2008 -0800 tcp: move tcp_simple_retransmit to tcp_input Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 4a17fc3add594fcc1c778e93a95b6ecf47f630e5 Author: Ilpo Järvinen Date: Mon Nov 24 21:03:43 2008 -0800 tcp: collapse more than two on retransmission I always had thought that collapsing up to two at a time was intentional decision to avoid excessive processing if 1 byte sized skbs are to be combined for a full mtu, and consecutive retransmissions would make the size of the retransmittee double each round anyway, but some recent discussion made me to understand that was not the case. Thus make collapse work more and wait less. It would be possible to take advantage of the shifting machinery (added in the later patch) in the case of paged data but that can be implemented on top of this change. tcp_skb_is_last check is now provided by the loop. I tested a bit (ss-after-idle-off, fill 4096x4096B xfer, 10s sleep + 4096 x 1byte writes while dropping them for some a while with netem): . 16774097:16775545(1448) ack 1 win 46 . 16775545:16776993(1448) ack 1 win 46 . ack 16759617 win 2399 P 16776993:16777217(224) ack 1 win 46 . ack 16762513 win 2399 . ack 16765409 win 2399 . ack 16768305 win 2399 . ack 16771201 win 2399 . ack 16774097 win 2399 . ack 16776993 win 2399 . ack 16777217 win 2399 P 16777217:16777257(40) ack 1 win 46 . ack 16777257 win 2399 P 16777257:16778705(1448) ack 1 win 46 P 16778705:16780153(1448) ack 1 win 46 FP 16780153:16781313(1160) ack 1 win 46 . ack 16778705 win 2399 . ack 16780153 win 2399 F 1:1(0) ack 16781314 win 2399 While without drop-all period I get this: . 16773585:16775033(1448) ack 1 win 46 . ack 16764897 win 9367 . ack 16767793 win 9367 . ack 16770689 win 9367 . ack 16773585 win 9367 . 16775033:16776481(1448) ack 1 win 46 P 16776481:16777217(736) ack 1 win 46 . ack 16776481 win 9367 . ack 16777217 win 9367 P 16777217:16777218(1) ack 1 win 46 P 16777218:16777219(1) ack 1 win 46 P 16777219:16777220(1) ack 1 win 46 ... P 16777247:16777248(1) ack 1 win 46 . ack 16777218 win 9367 . ack 16777219 win 9367 ... . ack 16777233 win 9367 . ack 16777248 win 9367 P 16777248:16778696(1448) ack 1 win 46 P 16778696:16780144(1448) ack 1 win 46 FP 16780144:16781313(1169) ack 1 win 46 . ack 16780144 win 9367 F 1:1(0) ack 16781314 win 9367 The window seems to be 30-40 segments, which were successfully combined into: P 16777217:16777257(40) ack 1 win 46 Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 200036ca9b3f0b2250912142552ce56682190f95 Author: Hannes Eder Date: Mon Nov 24 22:14:43 2008 +0100 CRED: fix sparse warnings Impact: fix sparse warnings Fix the following sparse warnings: security/security.c:228:2: warning: returning void-valued expression security/security.c:233:2: warning: returning void-valued expression security/security.c:616:2: warning: returning void-valued expression Signed-off-by: Hannes Eder Signed-off-by: James Morris commit a21bba945430f3f5e00c349665f88cdacdb32a8d Author: Eric Dumazet Date: Mon Nov 24 16:07:50 2008 -0800 net: avoid a pair of dst_hold()/dst_release() in ip_push_pending_frames() We can reduce pressure on dst entry refcount that slowdown UDP transmit path on SMP machines. This pressure is visible on RTP servers when delivering content to mediagateways, especially big ones, handling thousand of streams. Several cpus send UDP frames to the same destination, hence use the same dst entry. This patch makes ip_push_pending_frames() steal the refcount its callers had to take when filling inet->cork.dst. This doesnt avoid all refcounting, but still gives speedups on SMP, on UDP/RAW transmit path. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 6ded6ab9be4f6164aef1c527407c1b94f0929799 Author: Serge Hallyn Date: Mon Nov 24 16:24:10 2008 -0500 User namespaces: use the current_user_ns() macro Fix up the last current_user()->user_ns instance to use current_user_ns(). Signed-off-by: Serge E. Hallyn commit 18b6e0414e42d95183f07d8177e3ff0241abd825 Author: Serge Hallyn Date: Wed Oct 15 16:38:45 2008 -0500 User namespaces: set of cleanups (v2) The user_ns is moved from nsproxy to user_struct, so that a struct cred by itself is sufficient to determine access (which it otherwise would not be). Corresponding ecryptfs fixes (by David Howells) are here as well. Fix refcounting. The following rules now apply: 1. The task pins the user struct. 2. The user struct pins its user namespace. 3. The user namespace pins the struct user which created it. User namespaces are cloned during copy_creds(). Unsharing a new user_ns is no longer possible. (We could re-add that, but it'll cause code duplication and doesn't seem useful if PAM doesn't need to clone user namespaces). When a user namespace is created, its first user (uid 0) gets empty keyrings and a clean group_info. This incorporates a previous patch by David Howells. Here is his original patch description: >I suggest adding the attached incremental patch. It makes the following >changes: > > (1) Provides a current_user_ns() macro to wrap accesses to current's user > namespace. > > (2) Fixes eCryptFS. > > (3) Renames create_new_userns() to create_user_ns() to be more consistent > with the other associated functions and because the 'new' in the name is > superfluous. > > (4) Moves the argument and permission checks made for CLONE_NEWUSER to the > beginning of do_fork() so that they're done prior to making any attempts > at allocation. > > (5) Calls create_user_ns() after prepare_creds(), and gives it the new creds > to fill in rather than have it return the new root user. I don't imagine > the new root user being used for anything other than filling in a cred > struct. > > This also permits me to get rid of a get_uid() and a free_uid(), as the > reference the creds were holding on the old user_struct can just be > transferred to the new namespace's creator pointer. > > (6) Makes create_user_ns() reset the UIDs and GIDs of the creds under > preparation rather than doing it in copy_creds(). > >David >Signed-off-by: David Howells Changelog: Oct 20: integrate dhowells comments 1. leave thread_keyring alone 2. use current_user_ns() in set_user() Signed-off-by: Serge Hallyn commit 2e77d89b2fa8e3f8325b8ce7893ec3645f41aff5 Author: Eric Dumazet Date: Mon Nov 24 15:52:46 2008 -0800 net: avoid a pair of dst_hold()/dst_release() in ip_append_data() We can reduce pressure on dst entry refcount that slowdown UDP transmit path on SMP machines. This pressure is visible on RTP servers when delivering content to mediagateways, especially big ones, handling thousand of streams. Several cpus send UDP frames to the same destination, hence use the same dst entry. This patch makes ip_append_data() eventually steal the refcount its callers had to take on the dst entry. This doesnt avoid all refcounting, but still gives speedups on SMP, on UDP/RAW transmit path Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 4db0acf3c0afbbbb2ae35a65f8896ca6655a47ec Author: Jarek Poplawski Date: Mon Nov 24 15:48:05 2008 -0800 net: gen_estimator: Fix gen_kill_estimator() lookups gen_kill_estimator() linear lists lookups are very slow, and e.g. while deleting a large number of HTB classes soft lockups were reported. Here is another try to fix this problem: this time internally, with rbtree, so similarly to Jamal's hashing idea IIRC. (Looking for next hits could be still optimized, but it's really fast as it is.) Reported-by: Badalian Vyacheslav Reported-by: Denys Fedoryshchenko Signed-off-by: Jarek Poplawski Acked-by: Jamal Hadi Salim Signed-off-by: David S. Miller commit 3f0947c3ffaed33c1c38b79e4b17f75ba072d3e9 Author: Patrick McHardy Date: Mon Nov 24 15:46:08 2008 -0800 pkt_sched: sch_drr: fix drr_dequeue loop() Jarek Poplawski points out: If all child qdiscs of sch_drr are non-work-conserving (e.g. sch_tbf) drr_dequeue() will busy-loop waiting for skbs instead of leaving the job for a watchdog. Checking for list_empty() in each loop isn't necessary either, because this can never be true except the first time. Using non-work-conserving qdiscs as children of DRR makes no sense, simply bail out in that case. Reported-by: Jarek Poplawski Signed-off-by: Patrick McHardy Signed-off-by: David S. Miller commit 4b40eed73e3787d60160beed1352ceadd24f6be1 Author: Wang Chen Date: Mon Nov 24 15:34:00 2008 -0800 infiniband: Kill directly reference of netdev->priv This use of netdev->priv is wrong. The right way is: alloc_netdev() with no memory for private data. make netdev->ml_priv to point to c2_dev. Signed-off-by: Wang Chen Acked-by: Roland Dreier Signed-off-by: David S. Miller commit 486bf8de17361232c40e092a219f328093e34dca Author: Wang Chen Date: Mon Nov 24 14:52:16 2008 -0800 netdevice sbni: Convert directly reference of netdev->priv 1. convert netdev->priv to netdev_priv(). 2. make sbni_pci_probe() be static. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 5c94afd79cd9e68cb9899fe7788342329e9f445f Author: Jirka Pirko Date: Mon Nov 24 14:49:11 2008 -0800 tokenring/3c359.c: Prevent possible mem leak when open failed Freeing previously allocated buffers in case of error. Signed-off-by: Jirka Pirko Signed-off-by: David S. Miller commit 138a5cdf2ffe8c6602641f8aaa00cfcf10929fe1 Author: Jirka Pirko Date: Mon Nov 24 14:48:25 2008 -0800 tokenring/3c359.c: Fix error message when allocating tx_ring Pointed out by Joe Perches. Error message after tx_ring allocation check was wrong. Signed-off-by: Jirka Pirko Signed-off-by: David S. Miller commit d0cc10ab0e3740b629d88386c907342f77cbdb30 Author: Jirka Pirko Date: Mon Nov 24 14:47:53 2008 -0800 tokenring/3c359.c: fix allocation null check Fixed typo when allocating rx_ring, tx_ring was checked for null instead. Signed-off-by: Jirka Pirko Signed-off-by: David S. Miller commit 85920d43bd5ae8a96f434704438b57c0b8c31198 Author: Stephen Hemminger Date: Mon Nov 24 14:47:01 2008 -0800 8139too: use err.h macros Instead of using call by reference use the PTR_ERR macros to handle return value with error case. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 3755810cebf7f9902b05c7ba9baeac0fc44881be Author: Eric Dumazet Date: Mon Nov 24 14:05:22 2008 -0800 net: Make sure BHs are disabled in sock_prot_inuse_add() There is still a call to sock_prot_inuse_add() in af_netlink while in a preemptable section. Add explicit BH disable around this call. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit fde22f272dad4fef7ba611e3f75fa94f7b43fae6 Author: Mark Brown Date: Mon Nov 24 18:08:18 2008 +0000 ASoC: Lower priority of resume work logging Now that the ASoC resume has been punted to a workqueue for a release cycle without attracting bug reports it should be safe to make the log messages associated with it debug level, reducing noise and kernel size in production configurations. Signed-off-by: Mark Brown commit 67c91513b81a101800f113013234d2ab06bc5e52 Author: Mark Brown Date: Mon Nov 24 17:45:26 2008 +0000 ASoC: Flag AD1980 as an AC97 interface Special handling is required for suspend and resume of AC97 codecs due to the control path going over the data bus. Signed-off-by: Mark Brown commit 3ba9e10a6d3b6abf5f5952572cff8f8d5a35ae54 Author: Mark Brown Date: Mon Nov 24 18:01:05 2008 +0000 ASoC: Remove DAI type information DAI type information is only ever used within ASoC in order to special case AC97 and for diagnostic purposes. Since modern CPUs and codecs support multi function DAIs which can be configured for several modes it is more trouble than it's worth to maintain anything other than a flag identifying AC97 DAIs so remove the type field and replace it with an ac97_control flag. Signed-off-by: Mark Brown commit 4813eadf6b17caa7fcce67ac2f929a3dd5178fa2 Author: Patrick McHardy Date: Mon Nov 24 18:34:48 2008 +0100 netfilter: nf_conntrack_ftp: change "partial ..." message to pr_debug() The message triggers when sending non-FTP data on port 21 or with certain clients that use multiple syscalls to send the command. Change to pr_debug() since users have been complaining. Signed-off-by: Patrick McHardy commit 6f893fb2e89287a4d755f928c3cda9d18440355c Merge: 0429149fb5e01edc410648591c19095d2074ee00 1d926f2756392c6909f60e0c9fe2a09d5462e376 69bb54ec05f57da7f6fac2cec0820cbc970df20f 65afa5e603d507014580ead016ec887b49e1afa6 cbe2f5a6e84eebb98ab42fc5e58c3cd5b7767349 813b8520f5c240c71df55d14095a7b171de264ce 033601a32b2012b6948e80e739cca40bff4de4a0 958086d1784459be3fe85e4cad79d42b17d33381 fb91ee6cf5b8be5360acec577458e29ec7e97e5e Author: Ingo Molnar Date: Mon Nov 24 17:46:24 2008 +0100 Merge branches 'tracing/branch-tracer', 'tracing/fastboot', 'tracing/ftrace', 'tracing/function-return-tracer', 'tracing/power-tracer', 'tracing/powerpc', 'tracing/ring-buffer', 'tracing/stack-tracer' and 'tracing/urgent' into tracing/core commit 64b7482de253c10efa2589a6212e3d2093a3efc7 Merge: 957ad0166e9f76a8561dafa5e14ef5bd3f5e9a3b 50ee91765e25e7967a7b69cd5cc2bcab85e2eeb8 Author: Ingo Molnar Date: Mon Nov 24 17:37:12 2008 +0100 Merge branch 'sched/rt' into sched/core commit ef1681d82f4bc2d9e023519f0bedb86519d10c43 Author: Takashi Iwai Date: Mon Nov 24 17:29:28 2008 +0100 ALSA: hda - Add probe_mask quirk for Medion MD96630 Medion MD96630 has ALC268 codec on slot#2 although it's not used for any purpose. This codec conflicts with the primiary codec ALC888 on slot#0, and gives mixer errors. This patch adds a corresponding entry to probe_mask blacklist. Reference: Novell bnc#412528 https://bugzilla.novell.com/show_bug.cgi?id=412528 Signed-off-by: Takashi Iwai commit b0bd53a7399f65e2d1b37cd44c5003e55b886c1e Author: Peter Ujfalusi Date: Mon Nov 24 13:49:38 2008 +0200 ASoC: TWL4030: Add helper function for output gain controls Some of the gain controls in TWL (mostly those which are associated with the outputs) are implemented in an interesting way: 0x0 : Power down (mute) 0x1 : 6dB 0x2 : 0 dB 0x3 : -6 dB Inverting not going to help with these. Custom volsw and volsw_2r get/put functions to handle these gains. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 0d33ea0b0f954dddd3996597c663c111249d4df9 Author: Peter Ujfalusi Date: Mon Nov 24 13:49:36 2008 +0200 ASoC: TWL4030: Add CGAIN volume control Add CGAIN (Coarse gain control) to TWL4030 codec. The range of the CGAIN is: 0 dB to 12 dB in 6 dB steps. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit c10b82cf085c38f2568609ffb10a6d725130f389 Author: Peter Ujfalusi Date: Mon Nov 24 13:49:35 2008 +0200 ASoC: TWL4030: Change the Master volume control to TLV TWL4030 FGAIN volume control has a range: -62 to 0 dB in 1 dB steps, 0 in the FGAIN means mute. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit f8d05bdbb07458e5f2c6a8281bde08056836fea6 Author: Peter Ujfalusi Date: Mon Nov 24 08:25:45 2008 +0200 ASoC: TWL4030: Disable soft-volume Keep Soft-volume disabled for now, since if it is enabled the FGAIN volume controls are not working in the current configuration: CODEC_MODE:OPT_MODE = 1 OPTION:ARXR2_EN = 1 OPTION:ARXL2_EN = 1 OPTION:ARXR1_EN = 0 OPTION:ARXL1_VRX_EN = 0 RX_PATH_SEL:RXL1_SEL = 0x0 (or 0x1) RX_PATH_SEL:RXR1_SEL = 0x0 (or 0x1) After the patch, FGAIN volume control works. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 55b8bac50a494871594e81a05b37c15e7283f868 Author: Mark Brown Date: Mon Nov 24 14:05:29 2008 +0000 ASoC: Use supplied DAI for WM9713 rather than substream Signed-off-by: Mark Brown commit 328bd8997dbb7184d5389e45c642af44ae6e9043 Author: Patrick McHardy Date: Mon Nov 24 13:44:55 2008 +0100 netfilter: nf_conntrack_proto_sctp: avoid bogus warning net/netfilter/nf_conntrack_proto_sctp.c: In function 'sctp_packet': net/netfilter/nf_conntrack_proto_sctp.c:376: warning: array subscript is above array bounds gcc doesn't realize that do_basic_checks() guarantees that there is at least one valid chunk and thus new_state is never SCTP_CONNTRACK_MAX after the loop. Initialize to SCTP_CONNTRACK_NONE to avoid the warning. Based on patch by Wu Fengguang Signed-off-by: Patrick McHardy commit ad07e914e681f18ec0eaba60db17f497ee7e7e78 Author: Ingo Molnar Date: Mon Nov 24 11:33:12 2008 +0100 x86 defconfig: increase CONFIG_LOG_BUF_SHIFT Impact: double the defconfig printk buffer Booting defconfigs produces more output than 128K so the output is truncated - double it to 256K. Signed-off-by: Ingo Molnar commit b47b92884212008b4bd044ba6b48b93c00b10ec6 Author: H. Peter Anvin Date: Mon Nov 24 00:50:09 2008 -0800 x86: drop REBOOT_CF9_COND from reboot fallback chain Impact: Reverts sequence of reboot fallbacks Checkin 14d7ca5c575853664d8fe4f225a77b8df1b7de7d changed the default reboot method to "pci", a.k.a. port CF9. Unfortunately this has been shown to cause lockups on at least two systems for which REBOOT_KBD worked, both Thinkpads with Intel chipsets. Checkin 3889d0cea2b73049bdca062d9ff1e5d33468289c reverted the default, but did not revert the fallback chain. This checkin reverts the fallback chain; port CF9 is now only done by explicit "reboot=pci" or a future potential DMI key. Signed-off-by: H. Peter Anvin commit 920de804bca61f88643bc9171bcd06f1a56c6258 Author: Eric Dumazet Date: Mon Nov 24 00:09:29 2008 -0800 net: Make sure BHs are disabled in sock_prot_inuse_add() The rule of calling sock_prot_inuse_add() is that BHs must be disabled. Some new calls were added where this was not true and this tiggers warnings as reported by Ilpo. Fix this by adding explicit BH disabling around those call sites, or moving sock_prot_inuse_add() call inside an existing BH disabled section. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 1f87e235e6fb92c2968b52b9191de04f1aff8e77 Author: Eric Dumazet Date: Sun Nov 23 23:24:32 2008 -0800 eth: Declare an optimized compare_ether_addr_64bits() function Linus mentioned we could try to perform long word operations, even on potentially unaligned addresses, on x86 at least. David mentioned the HAVE_EFFICIENT_UNALIGNED_ACCESS test to handle this on all arches that have efficient unailgned accesses. I tried this idea and got nice assembly on 32 bits: 158: 33 82 38 01 00 00 xor 0x138(%edx),%eax 15e: 33 8a 34 01 00 00 xor 0x134(%edx),%ecx 164: c1 e0 10 shl $0x10,%eax 167: 09 c1 or %eax,%ecx 169: 74 0b je 176 And very nice assembly on 64 bits of course (one xor, one shl) Nice oprofile improvement in eth_type_trans(), 0.17 % instead of 0.41 %, expected since we remove 8 instructions on a fast path. This patch implements a compare_ether_addr_64bits() function, that uses the CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS ifdef to efficiently perform the 6 bytes comparison on all capable arches. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit ef8ef5fb1027b56f867d4b913cf52bfdc610d2a7 Author: Vincent Petry Date: Sun Nov 23 11:31:41 2008 +0800 ALSA: hda: Added an ALC888 model entry for Fujitsu-Siemens Amilo Xa3530 This patch fixes the bug 0004240: ALC888 - Intel HDA - Headphone Controlling. It is made against the 2008-11-23 snapshot. Added Realtek ALC888 model entry for the Fujitsu-Siemens Amilo Xa3530 laptop. It has 4 jacks: HP out, Mic-in, Line-in and Line-out/Side/SPDIF (this one is on the laptop side, the other ones are on the rear). Model detection works. Headphone jack sense works now. Front mic works now, was same as Acer Aspire 4930G. Added channel mode from 2 to 8 channels. In 2ch and 4ch modes, the front is also sent to the Line-out/side jack for convenience instead of just muting the Line-out/side jack like other models do. When using the Mic-in jack as CLFE, the sound is very low (bug?). To work it around, in 6ch mode the CLFE channel is duplicated to the Line-out/side jack because this one has a better amp. Cc: manu@frogged.de Signed-off-by: Vincent Petry Signed-off-by: Takashi Iwai commit a9cb5c90539dd618029884701760fe79b9b83102 Author: Takashi Iwai Date: Mon Nov 24 07:51:11 2008 +0100 ALSA: hda - No 'Headphone as Line-out' swich without line-outs STAC/IDT driver creates "Headphone as Line-Out" switch even if there is no line-out pins on the machine. For devices only with headpohnes and speaker-outs, this switch shouldn't be created. Signed-off-by: Takashi Iwai commit 70eb1bfd52e97120eddf9b5aaabfe1ecdf4eb663 Author: David S. Miller Date: Sun Nov 23 20:01:59 2008 -0800 axnet_cs: Fix build after net device ops ne2k conversion. Commit 4e4fd4e485ad63a9074ff09a9b53ffc7a5c594ec ("ne2k: convert to net_device_ops") exported some ei_* symbols from the 8390 library, but the axnet_cs driver defines local static versions of the same functions. Rename them to avoid the namespace conflict. Reported by Stephen Rothwell. Signed-off-by: David S. Miller commit 6f756a8c36bf54d0afb1d457082b3e3033d951a7 Author: David S. Miller Date: Sun Nov 23 17:34:03 2008 -0800 net: Make sure BHs are disabled in sock_prot_inuse_add() The rule of calling sock_prot_inuse_add() is that BHs must be disabled. Some new calls were added where this was not true and this tiggers warnings as reported by Ilpo. Fix this by adding explicit BH disabling around those call sites. Signed-off-by: David S. Miller commit be77e5930725c3e77bcc0fb1def28e016080d0a1 Author: Alexey Dobriyan Date: Sun Nov 23 17:26:26 2008 -0800 net: fix tunnels in netns after ndo_ changes dev_net_set() should be the very first thing after alloc_netdev(). "ndo_" changes turned simple assignment (which is OK to do before netns assignment) into quite non-trivial operation (which is not OK, init_net was used). This leads to incomplete initialisation of tunnel device in netns. BUG: unable to handle kernel NULL pointer dereference at 00000004 IP: [] ip6_tnl_exit_net+0x37/0x4f *pde = 00000000 Oops: 0000 [#1] PREEMPT DEBUG_PAGEALLOC last sysfs file: /sys/class/net/lo/operstate Pid: 10, comm: netns Not tainted (2.6.28-rc6 #1) EIP: 0060:[] EFLAGS: 00010246 CPU: 0 EIP is at ip6_tnl_exit_net+0x37/0x4f EAX: 00000000 EBX: 00000020 ECX: 00000000 EDX: 00000003 ESI: c5caef30 EDI: c782bbe8 EBP: c7909f50 ESP: c7909f48 DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068 Process netns (pid: 10, ti=c7908000 task=c7905780 task.ti=c7908000) Stack: c03e75e0 c7390bc8 c7909f60 c0245448 c7390bd8 c7390bf0 c7909fa8 c012577a 00000000 00000002 00000000 c0125736 c782bbe8 c7909f90 c0308fe3 c782bc04 c7390bd4 c0245406 c084b718 c04f0770 c03ad785 c782bbe8 c782bc04 c782bc0c Call Trace: [] ? cleanup_net+0x42/0x82 [] ? run_workqueue+0xd6/0x1ae [] ? run_workqueue+0x92/0x1ae [] ? schedule+0x275/0x285 [] ? cleanup_net+0x0/0x82 [] ? worker_thread+0x81/0x8d [] ? autoremove_wake_function+0x0/0x33 [] ? worker_thread+0x0/0x8d [] ? kthread+0x39/0x5e [] ? kthread+0x0/0x5e [] ? kernel_thread_helper+0x7/0x10 Code: db e8 05 ff ff ff 89 c6 e8 dc 04 f6 ff eb 08 8b 40 04 e8 38 89 f5 ff 8b 44 9e 04 85 c0 75 f0 43 83 fb 20 75 f2 8b 86 84 00 00 00 <8b> 40 04 e8 1c 89 f5 ff e8 98 04 f6 ff 89 f0 e8 f8 63 e6 ff 5b EIP: [] ip6_tnl_exit_net+0x37/0x4f SS:ESP 0068:c7909f48 ---[ end trace 6c2f2328fccd3e0c ]--- Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit c25eb3bfb97294d0543a81230fbc237046b4b84c Author: Eric Dumazet Date: Sun Nov 23 17:22:55 2008 -0800 net: Convert TCP/DCCP listening hash tables to use RCU This is the last step to be able to perform full RCU lookups in __inet_lookup() : After established/timewait tables, we add RCU lookups to listening hash table. The only trick here is that a socket of a given type (TCP ipv4, TCP ipv6, ...) can now flight between two different tables (established and listening) during a RCU grace period, so we must use different 'nulls' end-of-chain values for two tables. We define a large value : #define LISTENING_NULLS_BASE (1U << 29) So that slots in listening table are guaranteed to have different end-of-chain values than slots in established table. A reader can still detect it finished its lookup in the right chain. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 8c862c23e2563e6aedfc6c4aa6827cadb83f2414 Author: Gerrit Renker Date: Sun Nov 23 16:10:23 2008 -0800 dccp: Header option insertion routine for feature-negotiation The patch extends existing code: * Confirm options divide into the confirmed value plus an optional preference list for SP values. Previously only the preference list was echoed for SP values, now the confirmed value is added as per RFC 4340, 6.1; * length and sanity checks are added to avoid illegal memory (or NULL) access. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit d371056695ef993d36c57b73d654e66080377a9c Author: Gerrit Renker Date: Sun Nov 23 16:09:11 2008 -0800 dccp: Support for Mandatory options Support for Mandatory options is provided by this patch, which will be used by subsequent feature-negotiation patches. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Acked-by: Arnaldo Carvalho de Melo Signed-off-by: David S. Miller commit 02fa460ef553faabc7e0b15ff9f607f028739808 Author: Gerrit Renker Date: Sun Nov 23 16:07:53 2008 -0800 dccp: Increase the scope of variable-length htonl/ntohl functions This extends the scope of two available functions, encode|decode_value_var, to work up to 6 (8) bytes, to match maximum requirements in the RFC. These functions are going to be used both by general option processing and feature negotiation code, hence declarations have been put into feat.h. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Acked-by: Arnaldo Carvalho de Melo Signed-off-by: David S. Miller commit 71c262a3dd42dea73700646d969b0af7a4102edf Author: Gerrit Renker Date: Sun Nov 23 16:04:59 2008 -0800 dccp: API to query the current TX/RX CCID This provides function to query the current TX/RX CCID dynamically, without reliance on the minisock value, using dynamic information available in the currently loaded CCID module. This query function is then used to (a) provide the getsockopt part for getting/setting CCIDs via sockopts; (b) replace the current test for "which CCID is in use" in probe.c. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit b20a9c24d5c5d466d7e4a25c6f1bedbd2d16ad4f Author: Gerrit Renker Date: Sun Nov 23 16:02:31 2008 -0800 dccp: Set per-connection CCIDs via socket options With this patch, TX/RX CCIDs can now be changed on a per-connection basis, which overrides the defaults set by the global sysctl variables for TX/RX CCIDs. To make full use of this facility, the remaining patches of this patch set are needed, which track dependencies and activate negotiated feature values. Signed-off-by: Gerrit Renker Signed-off-by: David S. Miller commit 2c62ad7b56fa8e2658253c0256ef4c4de228a0b9 Author: Brice Goglin Date: Sun Nov 23 15:49:54 2008 -0800 myri10ge: update firmware headers Update myri10ge firmware headers. Signed-off-by: Brice Goglin Signed-off-by: David S. Miller commit 4ee2ac51359fc37d9ae5d5cc76e93af9105f1722 Author: Brice Goglin Date: Sun Nov 23 15:49:28 2008 -0800 myri10ge: update DCA comments Update DCA sections closing comments. Signed-off-by: Brice Goglin Signed-off-by: David S. Miller commit c1fd3b9455a977057f73534324d4e07a3d9fe502 Author: Eric Dumazet Date: Sun Nov 23 15:48:22 2008 -0800 net: af_netlink should update its inuse counter In order to have relevant information for NETLINK protocol, in /proc/net/protocols, we should use sock_prot_inuse_add() to update a (percpu and pernamespace) counter of inuse sockets. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 04f258ce7f085dd69422fa01d41c8f0194a0e270 Author: Eric Dumazet Date: Sun Nov 23 15:42:23 2008 -0800 net: some optimizations in af_inet 1) Use eq_net() in inet_netns_ok() to speedup socket creation if !CONFIG_NET_NS 2) Reorder the tests about inet_ehash_secret generation (once only) Use the unlikely() macro when testing if inet_ehash_secret already generated. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 958086d1784459be3fe85e4cad79d42b17d33381 Author: Török Edwin Date: Sun Nov 23 23:24:53 2008 +0200 vfs, seqfile: fix comment style on mangle_path Impact: use standard docbook tags Reported-by: Randy Dunlap Signed-off-by: Török Edwin Signed-off-by: Ingo Molnar commit 65afa5e603d507014580ead016ec887b49e1afa6 Author: Frederic Weisbecker Date: Sun Nov 23 18:43:39 2008 +0100 tracing/function-return-tracer: free the return stack on free_task() Impact: avoid losing some traces when a task is freed do_exit() is not the last function called when a task finishes. There are still some functions which are to be called such as ree_task(). So we delay the freeing of the return stack to the last moment. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 3b71e9e307b3406aa29960a7428247f8a48b810c Author: Hannes Eder Date: Sun Nov 23 20:19:33 2008 +0100 x86: HPET: fix sparse warning Impact: make global variable static Fix this sparse warning: arch/x86/kernel/hpet.c:36:18: warning: symbol 'hpet_num_timers' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: Ingo Molnar commit 5f5db591326779a80cfe490c5d6b6ce9fac08b31 Author: jia zhang Date: Sun Nov 23 22:47:10 2008 +0800 x86, debug: remove the confusing entry in call trace Impact: improve backtrace quality avoid the confusion in call trace because of the lack of padding at the tail of function. When do_exit gets called, the return address behind call instruction is pushed into stack. If something get wrong in do_exit, for x86_64, the entry "kernel_execve +0x00/0xXX" rather than "child_rip +0xYY/0xZZ" is in the call trace. That looks confusing, so add a u2d to make the return address still part of the original call site. (This also catches any instances of us returning from that function somehow.) Signed-off-by: jia zhang Acked-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit a1a00b58855ccdbedf556b4f5638d5208b454472 Author: Hannes Eder Date: Sun Nov 23 19:37:09 2008 +0100 x86: boot - fix sparse warnings Impact: make global variables static Fix these sparse warnings: arch/x86/boot/video.c:233:3: warning: symbol 'saved' was not declared. Should it be static? arch/x86/boot/video-vga.c:37:13: warning: symbol 'video_vga' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: Ingo Molnar commit 3b6c52b5b634ae41d762cb174465272d69198160 Author: Cyrill Gorcunov Date: Sun Nov 23 20:21:39 2008 +0300 x86: introduce ENTRY(KPROBE_ENTRY)_X86 assembly helpers to catch unbalanced declaration v3 Impact: make ENTRY()/END() macros more capable It's usefull to catch unbalanced or messed or mixed declarations of ENTRY and KPROBES. These macros would help a bit. For example the following code would compile without problems ENTRY_X86(mcount) retq END_X86(mcount) But if you forget and mess the following form ENTRY_X86(mcount) retq END(mcount) ENTRY_X86(ftrace_caller) The assembler will issue the following message: Error: ENTRY_X86/KPROBE_X86 unbalanced,missed,mixed Actually the checking is performed at every _X86 macro so maybe it's good idea to put ENTRY_KPROBE_FINAL_X86 at the end of .S file to be sure you didn't miss anything. Signed-off-by: Cyrill Gorcunov Cc: Alexander van Heukelum Signed-off-by: Ingo Molnar commit eae849ca034c7f1015f0a6f17421ebc737f0a069 Author: Frederic Weisbecker Date: Sun Nov 23 17:33:12 2008 +0100 tracing/function-return-tracer: don't trace kfree while it frees the return stack Impact: fix a crash While I killed the cat process, I got sometimes the following (but rare) crash: [ 65.689027] Pid: 2969, comm: cat Not tainted (2.6.28-rc6-tip #83) AMILO Li 2727 [ 65.689027] EIP: 0060:[<00000000>] EFLAGS: 00010082 CPU: 1 [ 65.689027] EIP is at 0x0 [ 65.689027] EAX: 00000000 EBX: f66cd780 ECX: c019a64a EDX: f66cd780 [ 65.689027] ESI: 00000286 EDI: f66cd780 EBP: f630be2c ESP: f630be24 [ 65.689027] DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 [ 65.689027] Process cat (pid: 2969, ti=f630a000 task=f66cd780 task.ti=f630a000) [ 65.689027] Stack: [ 65.689027] 00000012 f630bd54 f630be7c c012c853 00000000 c0133cc9 f66cda54 f630be5c [ 65.689027] f630be68 f66cda54 f66cd88c f66cd878 f7070000 00000001 f630be90 c0135dbc [ 65.689027] f614a614 f630be68 f630be68 f65ba200 00000002 f630bf10 f630be90 c012cad6 [ 65.689027] Call Trace: [ 65.689027] [] ? do_exit+0x603/0x850 [ 65.689027] [] ? next_signal+0x9/0x40 [ 65.689027] [] ? dequeue_signal+0x8c/0x180 [ 65.689027] [] ? do_group_exit+0x36/0x90 [ 65.689027] [] ? get_signal_to_deliver+0x20c/0x390 [ 65.689027] [] ? do_notify_resume+0x99/0x8b0 [ 65.689027] [] ? tty_ldisc_deref+0x5a/0x80 [ 65.689027] [] ? trace_hardirqs_on+0xb/0x10 [ 65.689027] [] ? tty_ldisc_deref+0x5a/0x80 [ 65.689027] [] ? n_tty_write+0x0/0x340 [ 65.689027] [] ? redirected_tty_write+0x82/0x90 [ 65.689027] [] ? vfs_write+0x99/0xd0 [ 65.689027] [] ? redirected_tty_write+0x0/0x90 [ 65.689027] [] ? sys_write+0x42/0x70 [ 65.689027] [] ? work_notifysig+0x13/0x19 [ 65.689027] Code: Bad EIP value. [ 65.689027] EIP: [<00000000>] 0x0 SS:ESP 0068:f630be24 This is because on do_exit(), kfree is called to free the return addresses stack but kfree is traced and stored its return address in this stack. This patch fixes it. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 6efdcfaf16cc4fc76651603e083cf3ec4bd1e6de Author: Alexander van Heukelum Date: Sun Nov 23 10:15:32 2008 +0100 x86: KPROBE_ENTRY should be paired wth KPROBE_END Impact: move some code out of .kprobes.text KPROBE_ENTRY switches code generation to .kprobes.text, and KPROBE_END uses .popsection to get back to the previous section (.text, normally). Also replace ENDPROC by END, for consistency. Signed-off-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit 322648d1ba75280d62f114d47048beb0b35f5047 Author: Alexander van Heukelum Date: Sun Nov 23 10:08:28 2008 +0100 x86: include ENTRY/END in entry handlers in entry_64.S Impact: cleanup of entry_64.S Except for the order and the place of the functions, this patch should not change the generated code. Signed-off-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit 813b8520f5c240c71df55d14095a7b171de264ce Merge: ed313489badef16d700f5a3be50e8fd8f8294bc8 7cc45e64323c8a1042f56e6a8d1dc982f98d52a8 Author: Ingo Molnar Date: Sun Nov 23 13:47:54 2008 +0100 Merge branch 'ppc/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/powerpc commit 050dc6944b9ca2186f4729ab44e0da3743933941 Author: Hannes Eder Date: Sun Nov 23 13:35:48 2008 +0100 x86: remove duplicate #define from 'cpufeature.h' Impact: cleanup Remove duplicate #define from 'cpufeature.h'. This also fixes the following sparse warning: arch/x86/kernel/cpu/capflags.c:54:3: warning: Initializer entry defined twice arch/x86/kernel/cpu/capflags.c:58:3: also defined here Signed-off-by: Hannes Eder Signed-off-by: Ingo Molnar commit 8a2503fa4a6fae8ee42140b339f37373fc6acaae Author: Cyrill Gorcunov Date: Sun Nov 23 14:53:43 2008 +0300 x86: move dwarf2 related macro to dwarf2.h Impact: cleanup Move recently introduced dwarf2 macros to dwarf2.h file. It allow us to not duplicate them in assembly files. Active usage of _cfi macros don't make assembly files more obvious to understand but we already have a lot of macros there which requires to search the definitions of them *anyway*. But at least it make every cfi usage one line shorter. Also some code alignment is done. Signed-off-by: Cyrill Gorcunov Signed-off-by: Ingo Molnar commit e38da59269be8c0196d16dff1be5bb26076afc6a Author: Török Edwin Date: Sun Nov 23 13:08:10 2008 +0200 tracing/stack-tracer: avoid races accessing file Impact: fix race vma->vm_file reference is only stable while holding the mmap_sem, so move usage of it to within the critical section. Signed-off-by: Ingo Molnar commit 8d26487fd4ddda7a0237da418fb8669fb06ae557 Author: Török Edwin Date: Sun Nov 23 12:39:08 2008 +0200 tracing/stack-tracer: introduce CONFIG_USER_STACKTRACE_SUPPORT Impact: cleanup User stack tracing is just implemented for x86, but it is not x86 specific. Introduce a generic config flag, that is currently enabled only for x86. When other arches implement it, they will have to SELECT USER_STACKTRACE_SUPPORT. Signed-off-by: Török Edwin Signed-off-by: Ingo Molnar commit cffa10aecb6891f090a4d53a075bc40c082c45fc Author: Török Edwin Date: Sun Nov 23 12:39:07 2008 +0200 tracing/stack-tracer: fix locking and refcounts Impact: fix refcounting/object-access bug Hold mmap_sem while looking up/accessing vma. Hold the RCU lock while using the task we looked up. Signed-off-by: Török Edwin Signed-off-by: Ingo Molnar commit 8d7c6a96164651dbbab449ef0b5c20ae1f76a3a1 Author: Török Edwin Date: Sun Nov 23 12:39:06 2008 +0200 tracing/stack-tracer: fix style issues Impact: cleanup Signed-off-by: Török Edwin Signed-off-by: Ingo Molnar commit 0429149fb5e01edc410648591c19095d2074ee00 Author: Steven Rostedt Date: Fri Nov 21 14:44:57 2008 -0500 trace: fix compiler warning in branch profiler Impact: fix compiler warning The ftrace_pointers used in the branch profiler are constant values. They should never change. But the compiler complains when they are passed into the debugfs_create_file as a data pointer, because the function discards the qualifier. This patch typecasts the parameter to debugfs_create_file back to a void pointer. To remind the callbacks that they are pointing to a constant value, I also modified the callback local pointers to be const struct ftrace_pointer * as well. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 69bb54ec05f57da7f6fac2cec0820cbc970df20f Author: Steven Rostedt Date: Fri Nov 21 12:59:38 2008 -0500 ftrace: add ftrace_off_permanent Impact: add new API to disable all of ftrace on anomalies It case of a serious anomaly being detected (like something caught by lockdep) it is a good idea to disable all tracing immediately, without grabing any locks. This patch adds ftrace_off_permanent that disables the tracers, function tracing and ring buffers without a way to enable them again. This should only be used when something serious has been detected. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 033601a32b2012b6948e80e739cca40bff4de4a0 Author: Steven Rostedt Date: Fri Nov 21 12:41:55 2008 -0500 ring-buffer: add tracing_off_permanent Impact: feature to permanently disable ring buffer This patch adds a API to the ring buffer code that will permanently disable the ring buffer from ever recording. This should only be called when some serious anomaly is detected, and the system may be in an unstable state. When that happens, shutting down the recording to the ring buffers may be appropriate. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit e58918ab9d4cd375f6d842e6d88cf4d7a55cbfcc Author: Jim Radford Date: Thu Nov 20 19:48:39 2008 -0800 ftrace: scripts/recordmcount.pl support for ARM Impact: extend scripts/recordmcount.pl to ARM Arm uses %progbits instead of @progbits and requires only 4 byte alignment. [ Thanks to Sam Ravnborg for mentioning that ARM uses %progbits ] Signed-off-by: Jim Radford Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 3a3d04aed05add2247ea2ba5da5f90dba4062f3f Author: Matt Fleming Date: Thu Nov 20 21:49:52 2008 +0000 ftrace: specify $alignment for sh architecture Impact: extend scripts/recordmcount.pl with default alignment for SH Set $alignment=2 for the sh architecture so that a ".align 2" directive will be emitted for all __mcount_loc sections. Fix a whitspace error while I'm here (converted spaces to tabs). Signed-off-by: Matt Fleming Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 2bcd521a684cc94befbe2ce7d5b613c841b0d304 Author: Steven Rostedt Date: Fri Nov 21 01:30:54 2008 -0500 trace: profile all if conditionals Impact: feature to profile if statements This patch adds a branch profiler for all if () statements. The results will be found in: /debugfs/tracing/profile_branch For example: miss hit % Function File Line ------- --------- - -------- ---- ---- 0 1 100 x86_64_start_reservations head64.c 127 0 1 100 copy_bootdata head64.c 69 1 0 0 x86_64_start_kernel head64.c 111 32 0 0 set_intr_gate desc.h 319 1 0 0 reserve_ebda_region head.c 51 1 0 0 reserve_ebda_region head.c 47 0 1 100 reserve_ebda_region head.c 42 0 0 X maxcpus main.c 165 Miss means the branch was not taken. Hit means the branch was taken. The percent is the percentage the branch was taken. This adds a significant amount of overhead and should only be used by those analyzing their system. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit bac28bfe42ba98ee67503f78984d1d5e1ebbbb78 Author: Steven Rostedt Date: Fri Nov 21 01:51:53 2008 -0500 trace: branch profiling should not print percent without data Impact: cleanup on output of branch profiler When a branch has not been taken, it does not make sense to show a percentage incorrect or hit. This patch changes the behaviour to print out a 'X' when the branch has not been executed yet. For example: correct incorrect % Function File Line ------- --------- - -------- ---- ---- 2096 0 0 do_arch_prctl process_64.c 832 0 0 X do_arch_prctl process_64.c 804 2604 0 0 IS_ERR err.h 34 130228 5765 4 __switch_to process_64.c 673 0 0 X enable_TSC process_64.c 448 0 0 X disable_TSC process_64.c 431 Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 45b797492a0758e64dff74e9db70e1f65e0603a5 Author: Steven Rostedt Date: Fri Nov 21 00:40:40 2008 -0500 trace: consolidate unlikely and likely profiler Impact: clean up to make one profiler of like and unlikely tracer The likely and unlikely profiler prints out the file and line numbers of the annotated branches that it is profiling. It shows the number of times it was correct or incorrect in its guess. Having two different files or sections for that matter to tell us if it was a likely or unlikely is pretty pointless. We really only care if it was correct or not. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 42f565e116e0408b5ddc21a33c4a4d41fd572420 Author: Steven Rostedt Date: Thu Nov 20 23:57:47 2008 -0500 trace: remove extra assign in branch check Impact: clean up of branch check The unlikely/likely profiler does an extra assign of the f.line. This is not needed since it is already calculated at compile time. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit c204f7264c7de85aecd3638dc8fe07aba6d1fff5 Author: Steven Rostedt Date: Thu Nov 20 15:07:34 2008 -0500 ftrace: create default variables for archs in recordmcount.pl Impact: cleanup of recordmcount.pl Now that more architectures are being ported to the MCOUNT_RECORD method, there is no reason to have each declare their own arch specific variable if most of them share the same value. This patch creates a set of default values for the arch specific variables based off of i386. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 42e007d0400155fbc12c5344c808889e6ae33d32 Author: Steven Rostedt Date: Thu Nov 20 07:16:16 2008 -0800 ftrace: add support for powerpc to recordmcount.pl script Impact: Add PowerPC port to recordmcount.pl script This patch updates the recordmcount.pl script to process PowerPC. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 0da85c09b44bfea07e63ed5324aabc7cfc8a889a Author: Matt Fleming Date: Wed Nov 12 20:11:47 2008 +0900 sh: dynamic ftrace support. First cut at dynamic ftrace support. [ Steven Rostedt - only updated the recordmcount.pl file. There are updates for PowerPC that will conflict with this, and we need to base off of these changes. ] Signed-off-by: Matt Fleming Signed-off-by: Paul Mundt Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 4e42ebd57b2e727b28bf5f6068e95cd19b0e807b Author: Hannes Eder Date: Fri Nov 21 22:56:17 2008 +0100 x86: hypervisor - fix sparse warnings Impact: fix sparse build warning Fix the following sparse warnings: arch/x86/kernel/cpu/hypervisor.c:37:15: warning: symbol 'get_hypervisor_tsc_freq' was not declared. Should it be static? arch/x86/kernel/cpu/hypervisor.c:53:16: warning: symbol 'init_hypervisor' was not declared. Should it be static? Signed-off-by: Hannes Eder Cc: "Alok N Kataria" Cc: "Dan Hecht" Signed-off-by: Ingo Molnar commit 1d926f2756392c6909f60e0c9fe2a09d5462e376 Author: Will Newton Date: Fri Nov 21 14:08:59 2008 -0800 init/main.c: use ktime accessor function in initcall_debug code Impact: fix initcall debug output on non-scalar ktime platforms (32-bit embedded) The initcall_debug code access the tv64 member of ktime. This won't work correctly for large deltas on platforms that don't use the scalar ktime implementation. Signed-off-by: Will Newton Acked-by: Tim Bird Signed-off-by: Andrew Morton Signed-off-by: Ingo Molnar commit c450d7805b2c5cac8846c5f490fddfd9030d2207 Author: Hannes Eder Date: Fri Nov 21 23:17:09 2008 +0100 x86: vmware - fix sparse warnings Impact: fix sparse build warning Fix the following sparse warnings: arch/x86/kernel/cpu/vmware.c:69:5: warning: symbol 'vmware_platform' was not declared. Should it be static? arch/x86/kernel/cpu/vmware.c:89:15: warning: symbol 'vmware_get_tsc_khz' was not declared. Should it be static? arch/x86/kernel/cpu/vmware.c:107:16: warning: symbol 'vmware_set_feature_bits' was not declared. Should it be static? Signed-off-by: Hannes Eder Cc: "Alok N Kataria" Cc: "Dan Hecht" Signed-off-by: Ingo Molnar commit 2456d738ef051f85170bf018faef63f83fa84eb5 Author: Hiroshi Shimamoto Date: Fri Nov 21 17:38:57 2008 -0800 x86: signal: cosmetic unification of sys_rt_sigreturn() Impact: cleanup Add #ifdef directive for unification. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 666ac7be049ec290625e65d5922ff59f7bdec527 Author: Hiroshi Shimamoto Date: Fri Nov 21 17:38:25 2008 -0800 x86: signal: cosmetic unification of sys_sigaltstack() Impact: cleanup Add #ifdef directive for unification. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 5c9b3a0c7b8be3cdef3d7418f0a49127e7cdc998 Author: Hiroshi Shimamoto Date: Fri Nov 21 17:36:41 2008 -0800 x86: signal: cosmetic unification of including headers Impact: cleanup Make the headers portion of signal_32.c and signal_64.c the same. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit cbe2f5a6e84eebb98ab42fc5e58c3cd5b7767349 Author: Ingo Molnar Date: Sun Nov 23 10:37:12 2008 +0100 tracing: allow tracing of suspend/resume & hibernation code again Impact: widen function-tracing to suspend+resume (and hibernation) sequences Now that the ftrace kernel thread is gone, we can allow tracing during suspend/resume again. So revert these two commits: f42ac38c5 "ftrace: disable tracing for suspend to ram" 41108eb10 "ftrace: disable tracing for hibernation" This should be tested very carefully, as it could interact with altneratives instruction patching, etc. Signed-off-by: Ingo Molnar commit b54d3de9f3b8956653b06f1a32e9f9321c6d9027 Author: Török Edwin Date: Sat Nov 22 13:28:48 2008 +0200 tracing: identify which executable object the userspace address belongs to Impact: modify+improve the userstacktrace tracing visualization feature Store thread group leader id, and use it to lookup the address in the process's map. We could have looked up the address on thread's map, but the thread might not exist by the time we are called. The process might not exist either, but if you are reading trace_pipe, that is unlikely. Example usage: mount -t debugfs nodev /sys/kernel/debug cd /sys/kernel/debug/tracing echo userstacktrace >iter_ctrl echo sym-userobj >iter_ctrl echo sched_switch >current_tracer echo 1 >tracing_enabled cat trace_pipe >/tmp/trace& .... run application ... echo 0 >tracing_enabled cat /tmp/trace You'll see stack entries like: /lib/libpthread-2.7.so[+0xd370] You can convert them to function/line using: addr2line -fie /lib/libpthread-2.7.so 0xd370 Or: addr2line -fie /usr/lib/debug/libpthread-2.7.so 0xd370 For non-PIC/PIE executables this won't work: a.out[+0x73b] You need to run the following: addr2line -fie a.out 0x40073b (where 0x400000 is the default load address of a.out) Signed-off-by: Török Edwin Signed-off-by: Ingo Molnar commit 74e2f334f4440cbcb63e9ebbcdcea430d41bdfa3 Author: Török Edwin Date: Sat Nov 22 13:28:48 2008 +0200 vfs, seqfile: make mangle_path() global Impact: expose new VFS API make mangle_path() available, as per the suggestions of Christoph Hellwig and Al Viro: http://lkml.org/lkml/2008/11/4/338 Signed-off-by: Török Edwin Signed-off-by: Ingo Molnar commit 02b67518e2b1c490787dac7f35e1204e74fe21ba Author: Török Edwin Date: Sat Nov 22 13:28:47 2008 +0200 tracing: add support for userspace stacktraces in tracing/iter_ctrl Impact: add new (default-off) tracing visualization feature Usage example: mount -t debugfs nodev /sys/kernel/debug cd /sys/kernel/debug/tracing echo userstacktrace >iter_ctrl echo sched_switch >current_tracer echo 1 >tracing_enabled .... run application ... echo 0 >tracing_enabled Then read one of 'trace','latency_trace','trace_pipe'. To get the best output you can compile your userspace programs with frame pointers (at least glibc + the app you are tracing). Signed-off-by: Török Edwin Signed-off-by: Ingo Molnar commit 82f60f0bc854aada696f27d863c03bef91f1509d Author: Ingo Molnar Date: Sun Nov 23 09:18:56 2008 +0100 tracing/function-return-tracer: clean up task start/exit callbacks Impact: cleanup Eliminate #ifdefs in core code by using empty inline functions. Signed-off-by: Ingo Molnar commit f201ae2356c74bcae130b2177b3dca903ea98071 Author: Frederic Weisbecker Date: Sun Nov 23 06:22:56 2008 +0100 tracing/function-return-tracer: store return stack into task_struct and allocate it dynamically Impact: use deeper function tracing depth safely Some tests showed that function return tracing needed a more deeper depth of function calls. But it could be unsafe to store these return addresses to the stack. So these arrays will now be allocated dynamically into task_struct of current only when the tracer is activated. Typical scheme when tracer is activated: - allocate a return stack for each task in global list. - fork: allocate the return stack for the newly created task - exit: free return stack of current - idle init: same as fork I chose a default depth of 50. I don't have overruns anymore. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit a0a70c735ef714fe1b6777b571630c3d50c7b008 Merge: 9676e73a9e0cbdc521e1ebf4e13e6e5aada34247 60a515132086b2c28a8141d873297fdf7a180ca7 0231022cc32d5f2e7f3c06b75691dda0ad6aec33 522a110b42b306d696cf84e34c677ed0e7080194 Author: Ingo Molnar Date: Sun Nov 23 09:10:32 2008 +0100 Merge branches 'tracing/profiling', 'tracing/options' and 'tracing/urgent' into tracing/core commit f377fa123d0ec621e8e361ecc3f2a8ee70e81a2e Author: Ingo Molnar Date: Sun Nov 23 09:02:26 2008 +0100 x86: clean up stack overflow debug check Impact: cleanup Simplify the irq-sampled stack overflow debug check: - eliminate an #idef - use WARN_ONCE() to emit a single warning (all bets are off after the first such warning anyway) Signed-off-by: Ingo Molnar commit 3aeb95d5b7839708a8d8e11aa274ee4d0d4042cc Author: jia zhang Date: Sun Nov 23 09:51:41 2008 +0800 x86_64: fix the check in stack_overflow_check Impact: make stack overflow debug check and printout narrower stack_overflow_check() should consider the stack usage of pt_regs, and thus it could warn us in advance. Additionally, it looks better for the warning time to start at INITIAL_JIFFIES. Assuming that rsp gets close to the check point before interrupt arrives: when interrupt really happens, thread_info will be partly overrode. Signed-off-by: jia zhang Signed-off-by: Ingo Molnar commit ca9eed76133c00e7f4b1eeb4c1a6cb800cd2654c Merge: 8652cb4b0d87accbe78725fd2a13be2787059649 13d428afc007fcfcd6deeb215618f54cf9c0cae6 Author: Ingo Molnar Date: Sun Nov 23 08:55:47 2008 +0100 Merge commit 'v2.6.28-rc6' into x86/debug commit 3889d0cea2b73049bdca062d9ff1e5d33468289c Author: H. Peter Anvin Date: Sat Nov 22 23:39:23 2008 -0800 x86: revert default reboot method to REBOOT_KBD Impact: Reverts default reboot method. Checkin 14d7ca5c575853664d8fe4f225a77b8df1b7de7d changed the default reboot method to "pci", a.k.a. port CF9. Unfortunately this has been shown to cause lockups on at least two systems for which REBOOT_KBD worked, both Thinkpads with Intel chipsets. This reverts the default to REBOOT_KBD, while leaving the option to have "reboot=pci" specified explicitly or via a DMI match. Signed-off-by: H. Peter Anvin commit 4805286bffa9d7b85223ab2038f08b4b6322a176 Author: Wu Fengguang Date: Sat Nov 22 09:40:57 2008 +0800 ALSA: hda - fix build warning when CONFIG_PROC_FS=n Fix "defined but not used" build warning by moving eld_versoin_names[] and cea_edid_version_names[] into hdmi_print_eld_info(). Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 9415e1c418b33bf9b8d8903fb98876ec72673e3f Author: Wu Fengguang Date: Sat Nov 22 09:40:56 2008 +0800 ALSA: hda - fix DisplayPort naming DisplayPort is a digital display interface standard put forth by the Video Electronics Standards Association (VESA). It defines a new license-free, royalty-free, digital audio/video interconnect, intended to be used primarily between a computer and its display monitor, or a computer and a home-theater system. - From Wikipedia, the free encyclopedia Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit a5fcf89eff2372b50f2d47fbb3e1f3090f044ee3 Author: Wu Fengguang Date: Sat Nov 22 09:40:55 2008 +0800 ALSA: hda - document the ELD proc interface Describe what ELD proc interface provides and how to fix incorrect values. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit acb05993881005cdaf5f8291491b4edcb8f60ef3 Author: Wu Fengguang Date: Sat Nov 22 09:40:54 2008 +0800 ALSA: hda - ELD proc interface write updates - rename ELD proc write routine to hdmi_write_eld_info() - support modifying WMAPro's profile Write to some ELD fields (monitor_name, manufacture_id, product_id, eld_version, edid_version) are deliberately not supported, since that won't correct wrong behaviors and only leads to confusions. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 03284c8f23440479de79e8cbf368085ea872884e Author: Wu Fengguang Date: Sat Nov 22 09:40:53 2008 +0800 ALSA: hda - make HDMI messages more user friendly - make some messages more user friendly - add message prefix "HDMI:" to indicate the problem's domain (also easier to do `dmesg | grep HDMI` ;-) Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit cc02b83c904592ce8714787094256a9bf8e24b6f Author: Wu Fengguang Date: Sat Nov 22 09:40:52 2008 +0800 ALSA: hda - report selected CA index for Audio InfoFrame Print some CA selecting info, which could be valuable for debugging when something goes wrong. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit b83923a3931a43df7397a7491f0c9d9b9d46624a Author: Wu Fengguang Date: Sat Nov 22 09:40:51 2008 +0800 ALSA: hda - minor HDMI code cleanups Some minor code cleanups. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit c81084114f6ff957bc6b5a0048350479c1c1f7b3 Author: Alexander van Heukelum Date: Fri Nov 21 22:59:52 2008 +0100 x86: split out some macro's and move common code to paranoid_exit, fix Impact: fix bootup crash Even though it tested fine for me, there was still a bug in the first patch: I have overlooked a call to ptregscall_common. This patch fixes that, I think, but the code is never executed for me while running a debian install... (I tested this by putting an "1:jmp 1b" in there.) Signed-off-by: Ingo Molnar commit c46920dadba65856eb1a1f1ffa1b350875db1228 Merge: f5f4cf08467db10de061a1b90037a56a360d3554 6476a907b57d9229de7807aeea534ad45e19a4ce Author: David S. Miller Date: Fri Nov 21 21:30:58 2008 -0800 Merge branch 'for-david' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 commit f5f4cf08467db10de061a1b90037a56a360d3554 Author: Alexander Duyck Date: Fri Nov 21 21:30:24 2008 -0800 igb: do not use phy ops in ethtool test cleanup for non-copper parts Currently the igb driver is experiencing a panic due to a null function pointer being used during the cleanup of the ethtool looback test on fiber/serdes parts. This patch prevents that and adds a check prior to calling any phy function. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 21fc578dcaa66dd30bad3c2f2cd7578e2865e8f2 Author: Scott Feldman Date: Fri Nov 21 21:29:25 2008 -0800 enic: misc cleanup items: Clarrify reading PBA has no side-effect (clearing). Add missing GPL license text. Signed-off-by: Scott Feldman Signed-off-by: David S. Miller commit 845964515a76381e204d3399af82c149f8abcc1c Author: Scott Feldman Date: Fri Nov 21 21:29:01 2008 -0800 enic: move wmb closer to where needed: before writing posted_index to hw Signed-off-by: Scott Feldman Signed-off-by: David S. Miller commit cb3c766975985885e64e20cc72c4a36d90da2b30 Author: Scott Feldman Date: Fri Nov 21 21:28:40 2008 -0800 enic: mask off some reserved bits in CQ descriptor for future use Signed-off-by: Scott Feldman Signed-off-by: David S. Miller commit 27372bf5fa5ffc0fee3ddb486a0da942295fd8e0 Author: Scott Feldman Date: Fri Nov 21 21:28:18 2008 -0800 enic: driver/firmware API updates Add driver/firmware compatibility check. Update firmware notify cmd to honor notify area size. Add new version of init cmd. Add link_down_cnt to notify area to track link down count. Signed-off-by: Scott Feldman Signed-off-by: David S. Miller commit 86ca9db794a285f18f31ed15601696b238ccb57a Author: Scott Feldman Date: Fri Nov 21 21:26:55 2008 -0800 enic: enable ethtool LRO support Enable ethtool support for get/set_flags so LRO can be turned on/off by fwding drivers such as the bridge driver. LRO is not compatible with fwding drivers. Signed-off-by: Scott Feldman Signed-off-by: David S. Miller commit 6476a907b57d9229de7807aeea534ad45e19a4ce Author: Krzysztof Hałasa Date: Thu Nov 20 15:51:05 2008 +0100 WAN pc300too.c: Fix PC300-X.21 detection pc300too driver works around a bug in PCI9050 bridge. Unfortunately it was doing that too late. Signed-off-by: Krzysztof Hałasa commit 72364706c3b7c09a658e356218a918c5f92dcad0 Author: Krzysztof Hałasa Date: Thu Aug 14 19:18:17 2008 +0200 WAN: syncppp.c is no longer used by any kernel code. Remove it. Signed-off-by: Krzysztof Hałasa commit e022c2f07ae52bfbd92faa273db0db2f34eb28e8 Author: Krzysztof Hałasa Date: Thu Aug 14 19:17:38 2008 +0200 WAN: new synchronous PPP implementation for generic HDLC. Signed-off-by: Krzysztof Hałasa commit e1f024eb5d88e5b4f8e58e99c95082c342f70a1a Author: Krzysztof Hałasa Date: Fri Jul 11 00:13:09 2008 +0200 WAN: Simplify sca_init_port() in HD64572 driver. Signed-off-by: Krzysztof Hałasa commit fcfe9ff3e2fb2b9606e2e375f34c157271b4555c Author: Krzysztof Hałasa Date: Thu Jul 10 00:30:51 2008 +0200 WAN: Correct comments in hd6457[02].c Signed-off-by: Krzysztof Hałasa commit 0b59cef885f7d451acad02f70c9712f1ef3638b1 Author: Krzysztof Hałasa Date: Wed Jul 9 23:39:12 2008 +0200 WAN: HD64572 drivers don't use next_desc() anymore. Signed-off-by: Krzysztof Hałasa commit 61e0a6a268947f7385282c6841f3e3d64b4c5cb9 Author: Krzysztof Hałasa Date: Wed Jul 9 23:13:49 2008 +0200 WAN: Simplify HD64572 drivers. Signed-off-by: Krzysztof Hałasa commit 967834361a4beb3bbd3069189c192dc6fdeef8a9 Author: Krzysztof Hałasa Date: Wed Jul 9 21:30:17 2008 +0200 WAN: don't print HD64572 driver versions anymore. Signed-off-by: Krzysztof Hałasa commit 0954ed826921bcf11352e05a58d598c493e6bdfb Author: Krzysztof Hałasa Date: Wed Jul 9 21:24:42 2008 +0200 WAN: Simplify HD64572 status handling. Signed-off-by: Krzysztof Hałasa commit 0446c3b1e6208c6563ff9a0b22fb3b5e5e3e775c Author: Krzysztof Hałasa Date: Wed Jul 9 19:28:45 2008 +0200 WAN: rework HD64572 interrupts a bit. Signed-off-by: Krzysztof Hałasa commit b0942f78dd6493c5590cc80fedd5e3b357a15334 Author: Krzysztof Hałasa Date: Wed Jul 9 20:01:23 2008 +0200 WAN: HD64572 already handles TX underruns with DMAC. Signed-off-by: Krzysztof Hałasa commit 09fd65aa8ac934ea4ce7e55945a687292731e9c9 Author: Krzysztof Hałasa Date: Wed Jul 9 19:47:05 2008 +0200 WAN: TX-done handler now uses the ownership bit in HD64572 drivers. Signed-off-by: Krzysztof Hałasa commit abc9d91a35a924c8db0e949cd443471672e37cdb Author: Krzysztof Hałasa Date: Wed Jul 9 16:49:37 2008 +0200 WAN: convert HD64572-based drivers to NAPI. Signed-off-by: Krzysztof Hałasa commit 302243922b374b147380f61774b44612eb2040fd Author: Krzysztof Hałasa Date: Mon Mar 24 20:24:23 2008 +0100 WAN: remove SCA support from SCA-II drivers Signed-off-by: Krzysztof Hałasa commit 88597364573a46a57496c62ff0ee4b8148831ed0 Author: Krzysztof Hałasa Date: Mon Mar 24 19:12:23 2008 +0100 WAN: remove SCA II support from SCA drivers Signed-off-by: Krzysztof Hałasa commit 6b40aba304e6f94c747ad9559e03ea03a49e8008 Author: Krzysztof Hałasa Date: Mon Mar 24 16:39:02 2008 +0100 WAN: split hd6457x.c into hd64570.c and hd64572.c Supporting both original SCA and SCA-II in one file was nice at some point but now it's increasingly painful. Signed-off-by: Krzysztof Hałasa commit 4e4fd4e485ad63a9074ff09a9b53ffc7a5c594ec Author: Stephen Hemminger Date: Fri Nov 21 17:39:02 2008 -0800 ne2k: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. This required some additional work to export common code ei_XXX. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 99921b7e64f7726e7134046f8e1e8004e2711f30 Author: Stephen Hemminger Date: Fri Nov 21 17:37:54 2008 -0800 eql: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 974acda0ea3261436ddf5fd7e79b56150acdb138 Author: Stephen Hemminger Date: Fri Nov 21 17:37:24 2008 -0800 sc92031: convert to net_device_ops Convert this driver to net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit da1c14a19b978a95180ea91ab0008b97a5843995 Author: Stephen Hemminger Date: Fri Nov 21 17:36:58 2008 -0800 qla3xxx: convert to net_device_ops Convert this driver to net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit a8652d237b599a03d7d982fcfdab276706babfa5 Author: Stephen Hemminger Date: Fri Nov 21 17:36:36 2008 -0800 hamachi: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit c64213cd138cf9815839f7278b5eee89d31fbacb Author: Stephen Hemminger Date: Fri Nov 21 17:36:04 2008 -0800 bnx2x: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 6557d7b8599c22819d16497ab6dcc33f2f3027a4 Author: Stephen Hemminger Date: Fri Nov 21 17:35:40 2008 -0800 ns83820: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit bfd82c35824016920c629ea55963dc6db6f9effe Author: Stephen Hemminger Date: Fri Nov 21 17:35:16 2008 -0800 yellowfin: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit a7bd89cbb1aa8342617c2f8a6dc0595e5f553115 Author: Stephen Hemminger Date: Fri Nov 21 17:34:56 2008 -0800 r6040: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 09ab9e7cddf0f10afd4695d098120d63183c74d1 Author: Stephen Hemminger Date: Fri Nov 21 17:34:32 2008 -0800 sis900: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 2f30b1f666b8fa13eb7a254243066e6b77b583f7 Author: Stephen Hemminger Date: Fri Nov 21 17:34:09 2008 -0800 tehuti: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit c3ecb9f3235ce6e39249690cdd24d678894c2c72 Author: Stephen Hemminger Date: Fri Nov 21 17:32:54 2008 -0800 sfc: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Acked-by: Ben Hutchings Signed-off-by: David S. Miller commit 1abd266f091e4f281a7c1e8813106fdf1528bb56 Author: Stephen Hemminger Date: Fri Nov 21 17:32:15 2008 -0800 netxen: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Had to do some refactoring on multicast_list. Fix ethtool restart to propogate error code. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 876526443e64ae15bc3715dd6fbe8b9deadf89bc Author: Stephen Hemminger Date: Fri Nov 21 17:31:51 2008 -0800 dl2k: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 0421eae68ffaf5ecfac860ee86e6a92e5b32a992 Author: Stephen Hemminger Date: Fri Nov 21 17:31:27 2008 -0800 bnx2: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 3addc568a656e9c8e313e78cfe7ea1e289bf6fd8 Author: Stephen Hemminger Date: Fri Nov 21 17:30:58 2008 -0800 mlx4: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 8126089f9f3ee2608b11dd6c629a71ae1806e4fc Author: Stephen Hemminger Date: Fri Nov 21 17:30:35 2008 -0800 myri10ge: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 5d1d07d8b0bbed82546b89e3222ec98567c1652b Author: Stephen Hemminger Date: Fri Nov 21 17:30:11 2008 -0800 via-rhine: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 8668ae9241de085f046aa14fa3a97654a31a06e3 Author: Stephen Hemminger Date: Fri Nov 21 17:29:50 2008 -0800 qlge: fix sparse warnings Fix sparse warnings and one bug: * Several routines can be static * Don't lose __iomem annotation * fix locking on error path (bug) Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 25ed784910e43e61b5642dd8d2d8c13384a0d290 Author: Stephen Hemminger Date: Fri Nov 21 17:29:16 2008 -0800 qlge: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 040250959da9b96e2fd30415e4ca15257a3460e4 Author: Stephen Hemminger Date: Fri Nov 21 17:28:55 2008 -0800 s2io: convert to net_device_ops Convert this driver to network device ops. Compile teseted only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit e48714baac0e81ed9e19a5785eee52e1eca8f56e Author: Stephen Hemminger Date: Fri Nov 21 17:28:33 2008 -0800 jme: convert driver to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit e245a3855eec42127b722ed9688a49ec3f3c9a27 Author: Matt Carlson Date: Fri Nov 21 17:23:26 2008 -0800 tg3: Update version to 3.96 This patch updates the version number to 3.96. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 2fbb69aa576f4392c4a04e6874fa429b8bde0f68 Author: Matt Carlson Date: Fri Nov 21 17:22:53 2008 -0800 broadcom: Add 57780 support This patch adds the 57780 PHY ID to the broadcom module. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 321d32a052d6b5f71111ebad4fbebea5577f8974 Author: Matt Carlson Date: Fri Nov 21 17:22:19 2008 -0800 tg3: Add 57780 support This patch adds support for the 57780 ASIC revision. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 22435849a6dcde2ce10d1870aba461a54e347fe3 Author: Matt Carlson Date: Fri Nov 21 17:21:13 2008 -0800 tg3: Allow GPHY powerdown on 5761 The ENABLE_APE flag tells the driver whether or not the device has an Application Processing Engine (APE). The APE does not need the PHY to be powered unless it is running management firmware. For backwards compatibility, management firmware will still set the ENABLE_ASF bit. Consequently, there is no reason to consider the ENABLE_APE flag when deciding whether or not to power down the phy. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit d5fe488a7b59e41b98b91137805159466b7b49c2 Author: Matt Carlson Date: Fri Nov 21 17:20:32 2008 -0800 tg3: Embrace pci_ioremap_bar() Per Dave Miller's suggestion, replace the remaining ioremap_nocache() call with pci_ioremap_bar(). Remove the two IORESOURCE_MEM checks as they are redundant. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit dfe00d7d890134f9cafda49e3e60e6ce27af91ed Author: Matt Carlson Date: Fri Nov 21 17:19:41 2008 -0800 tg3: Extract FW ver from alt NVRAM formats This patch extracts the bootcode firmware version from the alternate selfboot patch NVRAM format. This format is used on the 5784, 5761 and some newer devices. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 6833c043f9fc03696fde623914c4a0277df2a0bc Author: Matt Carlson Date: Fri Nov 21 17:18:59 2008 -0800 tg3: Enable GPHY APD on select devices GPHY Autopowerdown (APD) is a way to save power when energy is not detected on the wire. At the moment, only the 5784 and 5761 are capable of enabling this mode. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 5e7dfd0fb94abed04f59481d1ce0cc06a892048a Author: Matt Carlson Date: Fri Nov 21 17:18:16 2008 -0800 tg3: Prevent corruption at 10 / 100Mbps w CLKREQ This patch disables CLKREQ at 10Mbps and 100Mbps to workaround a TX BD corruption issue. This problem only affects the 5784 and 5761 (and 57780 AX) ASIC revisions. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 52f4490c3b6dcb1e8dec7ff9f1c35f09bd7c136f Author: Matt Carlson Date: Fri Nov 21 17:17:04 2008 -0800 tg3: Qualify use of tp->pcix_cap This patch makes sure the device is a PCIX device before attempting to use the pcix_cap device structure member. This is prep work for the following patch. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit ad8292681a629cdb16bb19ee7d721b457c32a23a Author: Matt Carlson Date: Fri Nov 21 17:16:16 2008 -0800 tg3: Use NET_IP_ALIGN This patch replaces hardcoded 2's with the NET_IP_ALIGN constant or TG3_RAW_IP_ALIGN where appropriate. Some platforms can redefine the NET_IP_ALIGN definition to zero if unaligned DMA transfers cost more than the IP header alignment gains. This patch represents a performance improvement when using the 5701 on these platforms. The copy path can be avoided. TG3_RAW_IP_ALIGN is used in cases where we always want to align the IP header on dword boundaries. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit cf005b1d0e34d8c964347331c43de089c674a5a1 Author: Qinghuang Feng Date: Fri Nov 21 17:15:03 2008 -0800 net: remove redundant argument comments Remove redundant argument comments in files of net/* Signed-off-by: Qinghuang Feng Signed-off-by: David S. Miller commit 6c0bce37ffc8f000a516fadf6dee84579c4c8f9b Merge: e243455d345ef62751723671bc2605a2f6032ceb a1eb5fe319beb9e181aa52c8adf75ad9aab56a89 Author: David S. Miller Date: Fri Nov 21 17:05:11 2008 -0800 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 commit e243455d345ef62751723671bc2605a2f6032ceb Author: Bruce Allan Date: Fri Nov 21 17:02:41 2008 -0800 e1000e: check return code from NVM accesses and fix bank detection Check return code for all NVM accesses[1] and error out accordingly; log a debug message for failed accesses. For ICH8/9, the valid NVM bank detect function was not checking whether the SEC1VAL (sector 1 valid) bit in the EECD register was itself valid (bits 8 and 9 also have to be set). If invalid, it would have defaulted to the possibly invalid bank 0. Instead, try to use the valid bank detection method used by ICH10 which has been cleaned up a bit. [1] - reads and updates only; not writes because those are only writing to the Shadow RAM, the update following the write is the only thing actually writing the modified Shadow RAM contents to the NVM. Signed-off-by: Bruce Allan Signed-off-by: David S. Miller commit a20e4cf9e6a37e40532593e00df153d01e317baf Author: Bruce Allan Date: Fri Nov 21 17:01:35 2008 -0800 e1000e: fix incorrect link status when switch module pulled On 82571 with SerDes, the true link state is not always correct when read from the STATUS register; use existing e1000_has_link() function instead. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 8452759060ad46fc071a7d5bbf1647df5ea2ceab Author: Bruce Allan Date: Fri Nov 21 17:00:22 2008 -0800 e1000e: store EEPROM version number to prevent unnecessary NVM reads Rather than reading the NVM to get the EEPROM version number everytime the ethool get_drvinfo function is called, read it once during probe and save it for future reference. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 0285c8dcaeaa73ddadc4f38383e5bbc03c394a29 Author: Bruce Allan Date: Fri Nov 21 16:59:54 2008 -0800 e1000e: cosmetic newline in debug message Add missing newline from debug message. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 5c48ef3e2028677a890d46d9a38b19174274f2e9 Author: Bruce Allan Date: Fri Nov 21 16:57:36 2008 -0800 e1000e: sync change flow control variables with ixgbe Sync flow control variables and usage model with that found in the ixgbe driver. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 8f12fe8653eb699a6bc4f88f1a80312466ea2b0e Author: Bruce Allan Date: Fri Nov 21 16:54:43 2008 -0800 e1000e: link up/down messages must follow a specific format The system log messages created on a link status change need to follow a specific format to work with tools some customers use. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 75eb0fad56da8494b43865097f362633debdc958 Author: Bruce Allan Date: Fri Nov 21 16:53:51 2008 -0800 e1000e: ESB2 config after link up On ESB2, the MAC-to-PHY (Kumeran) interface must be configured after link is up before any traffic is sent; a new PHY operations function pointer is provided for this. To facilitate read/write of the Kumeran registers without blocking PHY register writes, the driver/firmware synchronization method which previously used a hardware semaphore for both PHY and Kumeran register accesses is now split. New Kumeran register read/write functions utilize this new synchronization method. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 438b365a2758c012393a7be24d31a9c06aa0a504 Author: Bruce Allan Date: Fri Nov 21 16:51:33 2008 -0800 e1000e: check return of pci_save_state Check return of pci_save_state and error out accordingly. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 1605927fcee41fe205f1713725f47f0d52978489 Author: Bruce Allan Date: Fri Nov 21 16:51:06 2008 -0800 e1000e: update comments listing supported parts for each MAC family Some branding strings (displayed via lspci) are missing from the comments in various family-specific files in the driver. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 63dcf3d353f32ca7007bfa53a9384f3283076afc Author: Bruce Allan Date: Fri Nov 21 16:50:34 2008 -0800 e1000e: 82571 check for link fix on 82571 serdes Check for link test does not work properly for 82571 parts in a blade environment with an unterminated serdes link partner. Make the test more robust by checking the invalid bit. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 5aa49c82118d2aa08c6cfaba01fd86f969b3f1d7 Author: Bruce Allan Date: Fri Nov 21 16:49:53 2008 -0800 e1000e: commit speed/duplex changes for m88 PHY Follow the convention used elsewhere in e1000e to 'commit' PHY changes instead of directly writing to the PHY CTRL register to reset it. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 005cbdfc29cfc23b8faadd3619eed43e6550bfc1 Author: Alexander Duyck Date: Fri Nov 21 16:49:10 2008 -0800 e1000e: disable correctable errors for quad ports while going to D3 There has been an issue seen with the pci-e quad port adapters that will cause them to generate a pci-e correctable error on some system while transitioning to D3. Since no action is needed on this correctable error the simplest solution is to mask off the reporting of correctable errors. Signed-off-by: Alexander Duyck Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 7e3aab4a9cd7d37f80eee75bebb6a71347f82476 Author: David S. Miller Date: Fri Nov 21 16:39:19 2008 -0800 inet_diag: Missed conversion after changing inet ehash lockl to spinlocks. They are no longer a rwlocks. Signed-off-by: David S. Miller commit 176301e82190adb70f9bdf37cd5cb08fcfcb25fb Author: Wang Chen Date: Fri Nov 21 16:36:22 2008 -0800 netdevice pc300: Add the reason about PC300 BROKEN in Kconfig When compile test my previous patch, I found PC300 driver was broken. And there is no explanation about the broken. Add the reason about why change this driver to broken in Kconfig. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 6636e1170d1e49818933ecea0e715e0c73e19bb8 Author: Wang Chen Date: Fri Nov 21 16:35:44 2008 -0800 netdevice pc300: Convert directly reference of netdev->priv netdev's private data should be hdlc. pc300dev_t is the private data of hdlc. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 2baf8a2daab65cdd3f20bfeb4676a2f6aff7c3bf Author: Wang Chen Date: Fri Nov 21 16:34:18 2008 -0800 netdevice hdlc: Convert directly reference of netdev->priv For killing directly reference of netdev->priv, use netdev->ml_priv to replace it. Because the private pvc data comes from add_pvc() and can't be allocated in alloc_netdev(). Signed-off-by: Wang Chen Acked-by: Krzysztof Halasa Signed-off-by: David S. Miller commit f757fec4b0d45dfcb52f9a914a12225a6a0a3e05 Author: Eric Dumazet Date: Fri Nov 21 15:49:19 2008 -0800 net: use net_eq() in INET_MATCH and INET_TW_MATCH We can avoid some useless instructions if !CONFIG_NET_NS Because of RCU, we use INET_MATCH or INET_TW_MATCH twice for the found socket, so thats six instructions less per incoming TCP packet. Yet another tbench speedup :) Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit b20222667d371bb9ddeadd47d18072efcab3f6d2 Author: Takashi Iwai Date: Fri Nov 21 21:24:03 2008 +0100 ALSA: hda - Fix build without CONFIG_PROC_FS snd_print_pcm_rates() and snd_print_pcm_bits() are used by both hda_proc.c and hda_eld.c, thus they have to be defined in the common place. Signed-off-by: Takashi Iwai commit b8b1d08bf6fe7c09e6cb2294bc0e5e964b361241 Author: Alexander van Heukelum Date: Fri Nov 21 16:44:28 2008 +0100 x86: entry_64.S: split out some macro's and move common code to paranoid_exit Impact: cleanup DISABLE_INTERRUPTS(CLBR_NONE)/TRACE_IRQS_OFF is now always executed just before paranoid_exit. Move it there. Split out paranoidzeroentry, paranoiderrorentry, and paranoidzeroentry_ist to get more readable macro's. Signed-off-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit e2f6bc25b98dbb10d809ee50262b43fcae67840a Author: Alexander van Heukelum Date: Fri Nov 21 16:43:18 2008 +0100 x86: entry_64.S: factor out save_paranoid and paranoid_exit Impact: cleanup, shrink kernel image size Also expand the paranoid_exit0 macro into nmi_exit inside the nmi stub in the case of enabled irq-tracing. This gives a few hundred bytes code size reduction. Signed-off-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit c002a1e6b6b6f07ae04e68987054bf1f2150ae48 Author: Alexander van Heukelum Date: Fri Nov 21 16:41:55 2008 +0100 x86: introduce save_rest and restructure the PTREGSCALL macro in entry_64.S Impact: cleanup The save_rest function completes a partial stack frame for use by the PTREGSCALL macro. This also avoids the indirect call in PTREGSCALLs. This adds the macro movq_cfi_restore to hide the CFI_RESTORE annotation when restoring a register from the stack frame. Signed-off-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit c70bfa8733e1ec4babe5a1b4a9a90053f79eb301 Merge: d6752a532c700927fc7586cdd086391bfc50eaa9 b0fc5e043401df4cd243352f1030c4d23e767347 Author: Takashi Iwai Date: Fri Nov 21 18:02:57 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda commit d6752a532c700927fc7586cdd086391bfc50eaa9 Author: Takashi Iwai Date: Fri Nov 21 18:01:44 2008 +0100 ALSA: hda - mark Dell studio 1535 quirk Fixed the quirk string for Dell studio 1535 (the product name wasn't published at the time the patch was made). Signed-off-by: Takashi Iwai commit a1eb5fe319beb9e181aa52c8adf75ad9aab56a89 Author: Rami Rosen Date: Wed Nov 19 09:37:43 2008 +0200 wireless: missing include in lib80211.h This patch adds #include in lib80211.h to avoid these compilation erros. > In file included from /work/src/wireless-testing/net/wireless/lib80211.c:24: > /work/src/wireless-testing/include/net/lib80211.h:113: error: field > 'crypt_deinit_timer' has incomplete type > /work/src/wireless-testing/net/wireless/lib80211.c: In function > 'lib80211_crypt_info_init': > /work/src/wireless-testing/net/wireless/lib80211.c:83: error: implicit > declaration of function 'setup_timer' > /work/src/wireless-testing/net/wireless/lib80211.c: In function > 'lib80211_crypt_info_free': > /work/src/wireless-testing/net/wireless/lib80211.c:95: error: implicit > declaration of function 'del_timer_sync' > /work/src/wireless-testing/net/wireless/lib80211.c: In function > 'lib80211_crypt_deinit_handler': > /work/src/wireless-testing/net/wireless/lib80211.c:157: error: > implicit declaration of function 'add_timer' > /work/src/wireless-testing/net/wireless/lib80211.c: In function > 'lib80211_crypt_delayed_deinit': > /work/src/wireless-testing/net/wireless/lib80211.c:182: error: > implicit declaration of function 'timer_pending' > make[3]: *** [net/wireless/lib80211.o] Error 1 > make[2]: *** [net/wireless] Error 2 > make[1]: *** [net] Error 2 > make: *** [sub-make] Error 2 Signed-off-by: Rami Rosen Signed-off-by: John W. Linville commit 3461fc12a423c09169c6bb350319808ca4ec4b86 Author: Larry Finger Date: Wed Nov 12 17:31:52 2008 -0600 rtl8187: Update file authorship in comments Modify the file comments to reflect the current maintainers. Signed-off-by: Larry Finger Acked-by: Herton Ronaldo Krzesinski Acked-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 59840488c207ca85ea3787b36169e7fa9582baaf Author: Larry Finger Date: Wed Nov 12 17:13:09 2008 -0600 Update of MAINTAINERS for RTL8187 As noted by John Linville, the RTL818X maintainers have "moved on", and the responsibilities for RTL8180 and RTL8187 have been split. This is the corresponding update of MAINTAINERS. Signed-off-by: Larry Finger Acked-by: Herton Ronaldo Krzesinski Acked-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 4f6d4d1e36f30ac05bc39bcbfdba09e64e0f918c Author: Johannes Berg Date: Tue Oct 28 14:00:54 2008 +0100 wireless: clean up sysfs code using %pM Remove converting the MAC address to a string by a direct byte conversion and use %pM instead, since the code is now boilerplate use a macro to define the show functions, and also use the shorter __ATTR_RO macro to define the attributes. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 96dd603f3817c5289a906539cb85bddae9536868 Author: John W. Linville Date: Wed Nov 12 14:51:56 2008 -0500 MAINTAINERS: claim maintenance over rtl818x drivers Michael and Andrea have moved-on, so we shouldn't be bothering them about these drivers anymore. Actually, Herton Ronaldo Krzesinski, Hin-Tak Leung, and Larry Finger have been handling the rtl8187 stuff for a while. So, I would welcome a patch from one of them changing this to just RTL8180 and adding an RTL8187 entry with their names... Signed-off-by: John W. Linville commit da81dede95cf69b0e51442cb472f1581583381e4 Author: John W. Linville Date: Wed Nov 12 14:37:11 2008 -0500 rtl8180: adapt for deprecated IEEE80211_CONF_SHORT_SLOT_TIME flag This updates rtl8180 handling for short slot after "mac80211: fix short slot handling". Only rtl8180_rtl8225 actually had code for handling short slot times, so the other RF devices are untouched by this change. Signed-off-by: John W. Linville commit 627271018df75c8861b9e75b39d5995842e6ec95 Author: John W. Linville Date: Wed Nov 12 10:01:41 2008 -0500 mac80211: add explicit padding in struct ieee80211_tx_info Otherwise, the BUILD_BUG_ON calls in ieee80211_tx_info_clear_status can fail on some architectures. Signed-off-by: John W. Linville commit beb2a7f331361bfe81e71acdb0739eae570475a2 Author: John W. Linville Date: Tue Nov 11 16:45:38 2008 -0500 net/ieee80211 -> drivers/net/ipw2x00/libipw_* rename The old ieee80211 code only remains as a support library for the ipw2100 and ipw2200 drivers. So, move the code and rename it appropriately to reflects it's true purpose and status. Signed-off-by: John W. Linville commit 0795cd29b6fe05107b40080cb1fccadb96320c96 Author: John W. Linville Date: Tue Nov 11 16:22:09 2008 -0500 ipw2x00: relocate ipw2100/ipw2200 to common directory Signed-off-by: John W. Linville commit 2ba4b32ecf748d5f45f298fc9677fa46d1dd9aff Author: John W. Linville Date: Tue Nov 11 16:00:06 2008 -0500 lib80211: consolidate crypt init routines Signed-off-by: John W. Linville commit 274bfb8dc5ffa16cb073801bebe76ab7f4e2e73d Author: John W. Linville Date: Wed Oct 29 11:35:05 2008 -0400 lib80211: absorb crypto bits from net/ieee80211 These bits are shared already between ipw2x00 and hostap, and could probably be shared both more cleanly and with other drivers. This commit simply relocates the code to lib80211 and adjusts the drivers appropriately. Signed-off-by: John W. Linville commit dfe1bafdbac1c7b48b636fb7ace799e78170e0d6 Author: Pavel Roskin Date: Mon Nov 10 09:25:53 2008 -0500 orinoco: fix last beacon reporting on 64-bit systems orinoco_translate_scan() and orinoco_translate_ext_scan() wrongly truncate last_scanned argument from unsigned long to unsigned int. Signed-off-by: Pavel Roskin Signed-off-by: John W. Linville commit 1d047def6d19106a91f7756f970ac8429033a4d8 Author: Rami Rosen Date: Mon Nov 10 09:01:09 2008 +0200 mac80211: remove unnecessary include. This patch removes unnecessary #include from /net/mac80211/mlme.c. Signed-off-by: Rami Rosen Signed-off-by: John W. Linville commit 8ff48a8bbe4a1ba29dea2836dfce74660f97c1be Author: Ivo van Doorn Date: Sun Nov 9 23:40:46 2008 +0100 rt2x00: Fix race condition when using inderect registers Indirect registers require multiple calls to the CSR register in order to access the indirect registers. This must be protected under a lock to prevent race conditions which could cause invalid data to be returned when reading from the indirect register or silent failures when writing data to the indirect register. USB drivers where already protected under a mutex, so rename the mutex and make PCI drivers use the mutex as well. This now means that BBP and RF registers are no longer accessible in interrupt context. That is not a bad situation since the slow behavior of accessing those registers means we don't _want_ to access them in interrupt context either. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit bad13639a30e1557fbe9d440adc1906673c9de4e Author: Ivo van Doorn Date: Sun Nov 9 20:47:00 2008 +0100 rt2x00: Optimize get_duration / get_duration_res We can optimize get_duration and get_duration_res by making them a macro. They are really simple calculation handlers so this doesn't matter much. Often (especially in rt2400pci and rt2500pci, the arguments are hardcoded, and the result value is passed into other hardcoded values. By making the functions a macro GCC can optimize the entire thing much better. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 87c1687d1a7bf0d4975d613cb699ba95b329359e Author: Julia Lawall Date: Sun Nov 9 17:56:10 2008 +0100 drivers/net/wireless/ath9k/rc.c: use ARRAY_SIZE ARRAY_SIZE is more concise to use when the size of an array is divided by the size of its type or the size of its first element. The semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @i@ @@ #include @depends on i using "paren.iso"@ type T; T[] E; @@ - (sizeof(E)/sizeof(E[...])) + ARRAY_SIZE(E) // Signed-off-by: Julia Lawall Signed-off-by: John W. Linville commit f9f88fed3433139b58962011c81597b44fd48458 Author: Jouni Malinen Date: Sun Nov 9 18:38:51 2008 +0200 mac80211_hwsim: Update documentation (AP mode enabled) AP mode is now enabled in mac80211, so there is no need to point users to an additional patch to enable the mode. In addition, add a pointer to more hwsim test cases in hostap.git. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 9902b1843ff460d08a40d6c99ad8f5362296c3d4 Author: Tomas Winkler Date: Sat Nov 8 23:50:55 2008 +0200 mac80211: rc80211_pid eliminate sparse warnings This patch eliminates sparse warnings in pid rate scale algorithm 'debugfs: allow access to signed values' patch hit the dead end year ago w/o much echo so I guess there is no real need to address this properly. Signed-off-by: Tomas Winkler Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 798b7adb4ed3533ab1282f51d16892034cfd8aae Author: Ivo van Doorn Date: Sat Nov 8 15:25:33 2008 +0100 rt2x00: Cleanup TX/RX entry handling Merge the callback functions init_txentry() and init_rxentry(). This makes life in rt2x00lib a lot simpler and we can cleanup several functions. rt2x00pci contained "fake" FIELD definitions for descriptor words. This is not flexible since it assumes the driver will always have the same field to indicate if a driver is available or not. This should be dependent on the driver, and we should add a callback function for this. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 0ed94eaaed618634f68197161203aac9f849471e Author: Randy Dunlap Date: Fri Nov 7 19:50:42 2008 -0800 mac80211: remove more excess kernel-doc Delete kernel-doc struct descriptions for fields that don't exist: Warning(include/net/mac80211.h:1263): Excess struct/union/enum/typedef member 'conf_ht' description in 'ieee80211_ops' Warning(net/mac80211/sta_info.h:309): Excess struct/union/enum/typedef member 'addr' description in 'sta_info' Warning(net/mac80211/sta_info.h:309): Excess struct/union/enum/typedef member 'aid' description in 'sta_info' Signed-off-by: Randy Dunlap cc: Johannes Berg cc: John W. Linville Signed-off-by: John W. Linville commit e4e58cf8cc646d93de852f32f972448a95387c60 Author: Zhu, Yi Date: Fri Nov 7 09:58:46 2008 -0800 iwlwifi: use Rx single frame mode (one Rx frame per RB) The RCSR default value for single frame mode is off (a RB contains more than one frames). But the driver assumes single frame mode apparently. This patch enables single frame mode for the hardware. It also adds a BUG_ON to make sure the allocated skb satisfies the hardware alignment requirement and removes a useless check. Signed-off-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 01ef932341de1fb69848ee0b9206e11baac9c340 Author: Winkler, Tomas Date: Fri Nov 7 09:58:45 2008 -0800 iwlwifi: get some more information about command failure This patch adds additional info about wrong command queue bug Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit c24f0817458464fc9c54489dba19cd94787e5eaf Author: Kolekar, Abhijeet Date: Fri Nov 7 09:58:44 2008 -0800 iwl3945 : Simplify iwl3945_send_beacon_cmd Moved rate_msk calculation to iwl3945_rate_get_lowest_plcp. Signed-off-by: Abhijeet Kolekar Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit cb299bae8929705bf025fdbd6ce0ffcc62f5b3d0 Author: Winkler, Tomas Date: Fri Nov 7 09:58:43 2008 -0800 iwlwifi: move iwl_print_hex_dump to iwl-debug.h This patch moves iwl_print_hex_dump to iwl-debug.h where it belongs Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit e720ce9d15050d06e5162d5f70b133caccd64258 Author: Kolekar, Abhijeet Date: Fri Nov 7 09:58:42 2008 -0800 iwl3945 : Fix Sparse Warnings Patch fixes sparse warnings. No need to convert u8 variable to 32. Signed-off-by: Abhijeet Kolekar Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 21c339bf51ad46c6f8143df907b4bcce99dbe0b8 Author: Tomas Winkler Date: Fri Nov 7 09:58:41 2008 -0800 iwlwifi: move spectrum measurement code to iwl-spectrum.c file This patch moves spectrum measurement code into iwl-sepctrum.c file. Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 4ddbb7d060061e584cb2137f4c7e41e502a560b4 Author: Tomas Winkler Date: Fri Nov 7 09:58:40 2008 -0800 iwlwifi: revamp tx scheduler byte count tables handling This moves byte count tables to tx domain removing completely ambivalent shared data. Changes handling of allocation byte count tables and keep warm consistent memory Moves general tx scheduler definitions from iwl-4956-hw.h to iwl-fh.h Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 8d86422a83d79e3d3241cf0f269fca0c2640bcee Author: Winkler, Tomas Date: Fri Nov 7 09:58:39 2008 -0800 iwlwifi: move rx queue read pointer into rxq This patch moves rx status/read registers into iwl_rx_queue structures. This solution is more memory hungry but is more structured and provides needed RX/TX separation Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 5c5aa3f13a50881b8f6e529e321bbefb5faec37b Author: Halperin, Daniel C Date: Fri Nov 7 09:58:38 2008 -0800 iwlwifi: update iwl-commands.h for 3 stream support This patch updates comments and constants to support 1, 2, or 3 spatial streams in rate_n_flags . Signed-off-by: Daniel Halperin Signed-off-by: Tomas Winkler Signed-off-by: John W. Linville commit a71c8f62d46e4496011182658dc058303960c068 Author: Winkler, Tomas Date: Fri Nov 7 09:58:37 2008 -0800 iwlwifi: don't fail power set when calibration is not done yet This patch doesn't fail power save setting when calibration is not done yet. The new power index is registered and will be evaluated again anyway upon calibration completion. This patch also eliminates WARN_ON in mac80211 hw_config during initialization Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 193357748979985498f21abc94c7a0a3ed5a3b8e Author: Winkler, Tomas Date: Fri Nov 7 09:58:36 2008 -0800 iwlwifi: trivial fix in includes This patch removes one FIXME: in rearranging includes Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 9bdf5ecabf1cd2fb012f87d9742590fdd8290da0 Author: Mohamed Abbas Date: Fri Nov 7 09:58:35 2008 -0800 iwl3945: fix resume for ADHOC network ieee80211_notify_mac only reconnect BSS networks. Since IBSS does not need any auth or assoc steps we can just resume to the same condition before suspend. This patch will reestablish the ad-hoc network once it comes back from resume. http://www.intellinuxwireless.org/bugzilla/show_bug.cgi?id=1774 Signed-off-by: Mohamed Abbas Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit ada1751346b5539f393c2e9c9dc04d9e7078e53a Author: Mohamed Abbas Date: Fri Nov 7 09:58:34 2008 -0800 iwlagn: fix resume for ADHOC network ieee80211_notify_mac only reconnect BSS networks. Since IBSS does not need any auth or assoc steps we can just resume to the same condition before suspend. This patch will reestablish the ad-hoc network once it comes back from resume. http://www.intellinuxwireless.org/bugzilla/show_bug.cgi?id=1774 Signed-off-by: Mohamed Abbas Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 1e87d68083cd073c84edb3a71fa4365d7fc092bd Author: Johannes Berg Date: Thu Nov 6 17:20:24 2008 +0100 b43: remove rate index warning I frequently run into this warning, and added some debugging to see why, and got this: b43 bad rx: 00000000: 2f d2 e2 63 cf a7 14 04 28 18 c8 5f 88 4a a2 00 bogus junk | plcp | fctl| dur b43 bad rx: 00000010: 00 11 24 91 07 4d 00 06 25 ff 8f 78 00 06 25 ff my MAC address | BSSID | AP MAC b43 bad rx: 00000020: 8f 76 20 74 00 00 42 07 00 20 00 00 00 00 aa aa | seq | QoS | CCMP IV | data ... As you can see, there are 6 bogus bytes (sometimes only five) and then the frame. I don't know why, and I don't see how to recover, so let's just drop these frames. Signed-off-by: Johannes Berg Signed-off-by: Michael Buesch Signed-off-by: John W. Linville commit 7f3704e992ee4044f8e0068e060458377004473a Author: Johannes Berg Date: Thu Nov 6 15:18:11 2008 +0100 b43legacy: implement short slot and basic rate handling This implements proper short slot handling and adds code to program the hardware for the correct response rates derived from the basic rate set for the current BSS. (port from b43) Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 3e4127fa6db34765685599fb8d1177e51850a63c Author: Alexey Fisher Date: Thu Nov 6 09:51:16 2008 +0100 ipw2200: make association only if SSID is known. 'iwconfig eth1 channel 6' would trigger association to _something_, which is wrong. Changing the channel should (and does) trigger reassociation, but only if there is an SSID to associate with. Signed-off-by: Alexey Fisher Acked-by: Zhu Yi Signed-off-by: John W. Linville commit ffb826767bffda61426d964a8fc24a216a14b0bd Author: Luis R. Rodriguez Date: Mon Nov 3 14:43:01 2008 -0800 ath9k: enable RXing of beacons on STA/IBSS This enables beacons to come through on STA/IBSS. It should fix sporadic connection issues. Right now mac80211 expect beacons so give it beacons. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit 296bf2aefdf7b4b1bf093a7b42a86ee21b46d07f Author: Luis R. Rodriguez Date: Mon Nov 3 14:43:00 2008 -0800 ath5k: allow APs to receive beacons Allow APs to receive beacons to detect when it needs to use protection to update the NAV correctly on 11b stations. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit 6a53a8a99cb044e1873648ba184440db6d9c65b8 Author: Nick Kossifidis Date: Tue Nov 4 00:25:54 2008 +0200 ath5k: Fix IMR init *On a previous patch i splitted AR5K_INT_TX to multiple different TX interrupt flags for better handling but i forgot to unmask the new TXDESC and TXEOL interrupts on ath5k_init and only left TXOK. However for each queue we enable TXDESC and TXEOL interrupts, not TXOK so we don't handle TX interrupts at all (because these interrupts remain masked on PISR) and under load it results packet loss. Fix the problem by unmasking TXDESC and TXEOL on ath5k_init. Signed-Off-by: Nick Kossifidis Signed-off-by: John W. Linville commit 392dff836f40370033bbe3b39e3b9bf4148d1435 Author: Benoit PAPILLAULT Date: Thu Nov 6 22:26:49 2008 +0100 ath9k : Display MAC/BB and RF version at startup (v2) This patch decodes the MAC/BB version (for instance: AR5416) and the RF part version (for instance: AR5133). It has been tested on AR5416/AR5133 which is a 2.4/5GHz 11n device. It also makes the differences between AR5416 (PCI) and AR5418 (PCI Express). Both are named AR5416 in the register definitions. Signed-off-by: Benoit Papillault Signed-off-by: John W. Linville commit 4821277f36e008b531728e359fbbedb229117f4b Author: Felix Fietkau Date: Mon Nov 3 21:05:01 2008 +0100 mac80211: fix BUILD_BUG_ON() caused by misalignment on arm On ARM alignment is done slightly different from other architectures. struct ieee80211_tx_rate is aligned to word size, even though it only has 3 single-byte members, which triggers the BUILD_BUG_ON in ieee80211_tx_info_clear_status This patch marks the struct ieee80211_tx_rate as packed, so that ARM behaves like the other architectures. Signed-off-by: Felix Fietkau Signed-off-by: John W. Linville commit 8b0162a3dc5c30e862b7a73da29e32de3170f5e4 Author: Felix Fietkau Date: Mon Nov 3 11:27:38 2008 +0100 ath5k: ignore the return value of ath5k_hw_noise_floor_calibration Noise floor calibration occasionally fails on Atheros hardware. This is not fatal and can happen if there's simply too much noise on the air. Ignoring the calibration error is the right thing to do here, because when the error is ignored, the hardware will still work, whereas if the error causes the driver to bail out of a bigger configuration function and does not configure the tx queues or the IMR (as is the case in reset.c), the hw no longer works properly until the next reset. Signed-off-by: Felix Fietkau Signed-off-by: John W. Linville commit 6d64360ac56cda95243f15738a06f2a123c663e5 Author: Ivo van Doorn Date: Sun Nov 2 00:38:10 2008 +0100 rt2x00: Fix BUG_ON() with antenna handling With the new configuration handling, and more specifically splitting the configuration of the antenna from the normal configuration steps allowed a BUG_ON() to be triggered in the driver because the SW_DIVERSITY was send to the driver. This fixes that by catching the value early in rt2x00config.c and replacing it with a sensible value. This also fixes a problem where the antenna is not being initialized at all when the radio is enabled. Since it no longer is part of the mac80211 configuration the only place where rt2x00 configured it was the SW diversity handler. Obviously this is broken for all non-diversity hardware and breaks SW diversity due to a broken initialization. When the radio is enabled the antenna will be configured once as soon as the config() callback function is called. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 8058409c4fb8e38632207d572ed29943d2585520 Author: Ivo van Doorn Date: Sun Nov 2 00:37:25 2008 +0100 rt2x00: Block set_key() during suspend/shutdown mac80211 will call set_key() when the device is shutting down. When the device is unplugged the keys will be lost automatically due to the power loss. When the device is not plugged but the module is only unloaded the keys can remain in the device hardware, when the module is loaded the keys will be cleaned up during initialization. This should prevent the problem reported by Johannes Berg, where unplugging the device while suspended resulted in a NULL pointer error during set_key() which was caused because of the CSR base address being freed. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 9a95dba32735534bda59def40c747bf606fedf05 Author: Ivo van Doorn Date: Sun Nov 2 00:37:09 2008 +0100 rt2x00: Fix LED state handling For every global LED state change (register/unregister, suspend/resume) we should force the LEDS to turn off. This makes sure that the LEDS will always be in a sane state after the state switch. Note that when unregister is called but the LED class wasn't resumed yet, we shouldn't change the LED state since we might not have access to the device (device was unplugged while suspended). Also remove the checks in the activity, assoc and radio LEDS which blocked calls to brightness_set() when the state hasn't changed. Some of those LEDS could be enabled by themselves when something happens in the hardware (e.g. firmware is loaded). We already did called rt2x00leds to switch the LED off, but those calls were blocked. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 3d8606a680529d41ad8985f36ecf83a7b393ecaf Author: Ivo van Doorn Date: Sun Nov 2 00:36:40 2008 +0100 rt2x00: Remove RATE_BASIC flag mac80211 is in charge of determining the basic rates, so we are not using the RATE_BASIC flag anymore. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 1c740ed2210a0d124674a477ea538468aba47810 Author: Larry Finger Date: Fri Oct 31 17:19:31 2008 -0700 Move all rtl818x files to a common directory. This change improves the maintainability of these drivers. No functionality is changed. Signed-off-by: Larry Finger Signed-off-by: John W. Linville commit 55b3961953494c340b3625486f484af8ded31dd7 Author: Andrey Yurovsky Date: Fri Oct 31 23:23:35 2008 -0700 mac80211_hwsim: enable Mesh Point operation Initial mesh support: add Mesh Point to supported interfaces mask and allow hwsim to send beacons in mesh mode. Signed-off-by: Andrey Yurovsky Signed-off-by: John W. Linville commit a3c9aa512945aa5552d03c7d6d6c3b826a3f9e28 Author: Andrey Yurovsky Date: Fri Oct 31 14:50:12 2008 -0700 mac80211: disable BSSID filtering for mesh interfaces Mesh interfaces are currently opened with the FIF_ALLMULTI rx filter flag set, however there is no BSSID in mesh so BSSID filtering should be disabled by setting the FIF_OTHER_BSS flag as well. Also explicitly call ieee80211_configure_filter for mesh. Signed-off-by: Andrey Yurovsky Signed-off-by: Javier Cardona Acked-by: Johannes Berg Signed-off-by: John W. Linville commit b7b05fe7f92e21e933caa529fd8d78bbbbfbd293 Author: Kay Sievers Date: Thu Oct 30 15:51:57 2008 +0100 ssb: struct device - replace bus_id with dev_name(), dev_set_name() This patch is part of a larger patch series which will remove the "char bus_id[20]" name string from struct device. The device name is managed in the kobject anyway, and without any size limitation, and just needlessly copied into "struct device". To set and read the device name dev_name(dev) and dev_set_name(dev) must be used. If your code uses static kobjects, which it shouldn't do, "const char *init_name" can be used to statically provide the name the registered device should have. At registration time, the init_name field is cleared, to enforce the use of dev_name(dev) to access the device name at a later time. We need to get rid of all occurrences of bus_id in the entire tree to be able to enable the new interface. Please apply this patch, and possibly convert any remaining remaining occurrences of bus_id. We want to submit a patch to -next, which will remove bus_id from "struct device", to find the remaining pieces to convert, and finally switch over to the new api, which will remove the 20 bytes array and does no longer have a size limitation. CC: Michael Buesch Acked-by: Greg Kroah-Hartman Signed-Off-By: Kay Sievers Signed-off-by: John W. Linville commit 582c1b538fb47a2d6a41dbdadb031086c49446c1 Author: Anna Neal Date: Mon Oct 20 16:46:56 2008 -0700 libertas: Fine grained configuration of wake-on-lan. Based on a patch from Shailendra Govardhan . This patch allows implementation of more specific wake-on-lan rules than those of ethtool. Please note that only firmware 5.110.22.p20 and above supports this feature. This patch only implements the driver/firmware interface, not the userspace/driver interface. Signed-off-by: Anna Neal Signed-off-by: Javier Cardona Signed-off-by: John W. Linville commit 50da3ead624d46f1b9f1007a184691bbb841eba7 Author: John W. Linville Date: Mon Nov 10 13:59:18 2008 -0500 ipw2100, ipw2200: select LIB80211 Otherwise some configs can result in missing print_ssid... Signed-off-by: John W. Linville commit 3d29b0c33d431ecc69ec778f8c236d382f59a85f Author: John W. Linville Date: Fri Oct 31 14:13:12 2008 -0400 netdevice zd1201: Convert directly reference of netdev->priv to netdev_priv() We have some reasons to kill netdev->priv: 1. netdev->priv is equal to netdev_priv(). 2. netdev_priv() wraps the calculation of netdev->priv's offset, obviously netdev_priv() is more flexible than netdev->priv. But we cann't kill netdev->priv, because so many drivers reference to it directly. OK, becasue Dave S. Miller said, "every direct netdev->priv usage is a bug", and I want to kill netdev->priv later, I decided to convert all the direct reference of netdev->priv first. (Original patch posted by Wang Chen w/ above changelog but using dev->ml_priv. That doesn't seem appropriate to me for this driver, so I've revamped it to use netdev_priv() instead. -- JWL) Reviewed-by: Wang Chen Signed-off-by: John W. Linville commit 4f904735c809e44c11f57cd4f82446aac1243e0e Author: Mark Brown Date: Fri Nov 21 15:08:23 2008 +0000 ALSA: ASoC: Fix typo in snd_soc_card update documentation Signed-off-by: Mark Brown Signed-off-by: Takashi Iwai commit 42e81c991a71909929f8d0cdcdf8ced68799388a Author: Hannes Eder Date: Fri Nov 21 16:03:24 2008 +0100 ALSA: hda - fix sparse warning Fix the following sparse warning: sound/pci/hda/patch_nvhdmi.c:161:25: warning: symbol 'snd_hda_preset_nvhdmi' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: Takashi Iwai commit 39639faba98eafeb327a30bc10b7d921c398a59a Author: Mark Brown Date: Fri Nov 21 14:28:49 2008 +0000 ASoC: Improve error reporting for AC97 reset failures Print something a bit more verbose to help make errors a little more obvious. Signed-off-by: Mark Brown commit 0e734ad5d16ad1d87a428a30d117bb3541a8e24d Author: Mark Brown Date: Fri Nov 21 14:05:48 2008 +0000 ASoC: Staticise pxa2xx_pcm_ops It's not exported. Signed-off-by: Mark Brown commit 0c758bdd678860fff3c4b600ec6f134e43526850 Author: Jarkko Nikula Date: Fri Nov 21 14:31:33 2008 +0200 ASoC: OMAP: Fix preprocessor filled DAI name in McBSP DAI Signed-off-by: Jarkko Nikula Signed-off-by: Mark Brown commit 2dac9217b26fd0a0a1712386ce2ea1411835ffb7 Author: Mark Brown Date: Fri Nov 21 14:01:41 2008 +0000 ASoC: Add Marvell Zylonite machine support Implement support for the Marvell Zylonite PXA3xx reference platform, supporting standard AC97 stereo and AUX interfaces together with the auxiliary I2S interface of the WM9713. The board has two options for the MCLK of the WM9713: either the standard AC97 system clock can be used or the 13MHz CLK_POUT output of the PXA3xx can be used, selected via SW15 on the board. Currently only the AC97 system clock is supported by this driver. Signed-off-by: Mark Brown commit 14ae22ba2b8bb3d53fb795f9b8074aa39ef7b6cd Author: Ingo Molnar Date: Fri Nov 21 15:20:47 2008 +0100 x86: entry_64.S: rename Impact: cleanup Rename: CFI_PUSHQ => pushq_cfi CFI_POPQ => popq_cfi CFI_MOVQ => movq_cfi To make it blend better into regular assembly code. Signed-off-by: Ingo Molnar commit e8a0e27662186f8856a0a6242e7a8386c9a64a53 Author: Ingo Molnar Date: Fri Nov 21 15:11:32 2008 +0100 x86: clean up after: move entry_64.S register saving out of the macros, fix Impact: build fix The break builds with older binutils (2.16.1): arch/x86/kernel/entry_64.S: Assembler messages: arch/x86/kernel/entry_64.S:282: Error: too many positional arguments arch/x86/kernel/entry_64.S:283: Error: too many positional arguments arch/x86/kernel/entry_64.S:284: Error: too many positional arguments arch/x86/kernel/entry_64.S:285: Error: too many positional arguments arch/x86/kernel/entry_64.S:286: Error: too many positional arguments arch/x86/kernel/entry_64.S:287: Error: too many positional arguments arch/x86/kernel/entry_64.S:288: Error: too many positional arguments arch/x86/kernel/entry_64.S:289: Error: too many positional arguments arch/x86/kernel/entry_64.S:290: Error: too many positional arguments Took some time to figure out the detail that GAS chokes on: it's negative offsets. Rearrange the calculations to make sure we never go negative. Signed-off-by: Ingo Molnar commit dee89c4d94433520e4e3977ae203d4cfbfe385fb Author: Mark Brown Date: Tue Nov 18 22:11:38 2008 +0000 ASoC: Merge snd_soc_ops into snd_soc_dai_ops Liam Girdwood's ASoC v2 work avoids having two different ops structures for DAIs by merging the members of struct snd_soc_ops into struct snd_soc_dai_ops, allowing per DAI configuration for everything. Backport this change. This paves the way for future work allowing any combination of DAIs to be connected rather than having fixed purpose CODEC and CPU DAIs and only allowing CODEC<->CPU interconnections. Signed-off-by: Mark Brown commit a47cbe7263236691ee0bbc392f7fd4ec0da1159f Author: Mark Brown Date: Wed Jul 23 14:03:07 2008 +0100 ASoC: Move DAI structure definitions into new soc-dai.h ASoC v2 factors most of the contents of soc.h out into separate headers, including soc-dai.h for the DAI. Factor the existing DAI API out into this file in order to prepare for backporting of the ASoC v2 DAI API. Also backport some of Liam's improvements to the documentation. Signed-off-by: Mark Brown commit 5de27b6cc0a8a1d27158ec9047cb5981745edfc0 Author: Karl Beldan Date: Thu Nov 20 15:39:31 2008 +0100 ASoC: ssm2602: Update supported stream formats Signed-off-by: Karl Beldan Signed-off-by: Mark Brown commit faab5a32f4d0784d6bde57963267be0453be3546 Author: Karl Beldan Date: Thu Nov 20 15:39:27 2008 +0100 ASoC: ssm2602: Fix priv substreams refs Clean up our record of the active streams in shutdown(), fixing subsequent failures of snd_pcm_hw_constraints_complete after closure of a stream. NOTE: - The ssm2602 allows pairs of non-matching PB/REC rates. - This is a fix for less evil: The logic is flawed (e.g. the slave might startup before the master's rate and sample_bits are set). Signed-off-by: Karl Beldan Signed-off-by: Mark Brown commit bd903bde7e0ad017cb87a228f451e05011e6d302 Author: Mark Brown Date: Wed Nov 19 19:16:05 2008 +0000 ASoC: Add abbreviation to maintainers for searchability Signed-off-by: Mark Brown commit 875065491fba8eb13219f16c36e79a6fb4e15c68 Author: Mark Brown Date: Tue Nov 18 20:50:34 2008 +0000 ASoC: Rename snd_soc_card to snd_soc_machine One of the issues with the ASoC v1 API which has been addressed in the ASoC v2 work that Liam Girdwood has done is that the ALSA card provided by ASoC is distributed around the ASoC structures. For example, machine wide data such as the struct snd_card are maintained as part of the CODEC data structure, preventing the use of multiple codecs. This has been addressed by refactoring the data structures so that all the data for the ALSA card is contained in a single structure snd_soc_card which replaces the existing snd_soc_machine and snd_soc_device. Begin the process of backporting this by renaming struct snd_soc_machine to struct snd_soc_card, better reflecting its function and bringing it closer to standard ALSA terminology. Signed-off-by: Mark Brown commit 98aa9c80f1fee01e98dfdc484ab7316af45f8f17 Author: Jarek Poplawski Date: Fri Nov 21 04:37:27 2008 -0800 pkt_sched: sch_drr: Fix qlen in drr_drop() Signed-off-by: Jarek Poplawski Acked-by: Patrick McHardy Signed-off-by: David S. Miller commit 9d2f4720971c00852a3fc8278a76f1a5e9add5c7 Author: Wang Chen Date: Fri Nov 21 01:56:07 2008 -0800 ixgbe: convert directly reference of netdev->priv Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 11b444d5627d87beb55029601cf8d2c9fa9324fd Author: Takashi Iwai Date: Fri Nov 21 09:32:40 2008 +0100 ALSA: hda - Move HD-audio Kconfig items to sound/pci/hda/Kconfig Signed-off-by: Takashi Iwai commit e7ee058cac89ec2f2c0c9ab0ec92a3776c182642 Author: Takashi Iwai Date: Fri Nov 21 09:26:20 2008 +0100 ALSA: hda - Make CONFIG_SND_HDA_RECONFIG for codec reconfiguration Make the codec re-configuration feature selectable via Kconfig, CONFIG_SND_HDA_RECONFIG. Also mark it as experimental (as it really is). Signed-off-by: Takashi Iwai commit f208dba97f2f3ff2fbcbe771195061e2a0dac870 Author: Takashi Iwai Date: Fri Nov 21 09:11:50 2008 +0100 ALSA: hda - Release ELD proc file Release ELD proc file when reconfigured so that no leak occurs. Signed-off-by: Takashi Iwai commit b94d3539de59ec6481e38f83c455324fd3aeabc1 Author: Takashi Iwai Date: Fri Nov 21 09:08:06 2008 +0100 ALSA: hda - Fix double free of jack instances The jack instances created in patch_sigmatel.c may be double-freed. The device management code checks the invalid element, and thus there is no real breakage, but it spews annoying warning messages. But, we can't simply remove the release calls of these jack instances because they have to be freed when the codec is re-configured. Now, a new flag, bus->shutdown is introduced to indicate that the bus is really being unloaded, i.e. the objects managed by the device manager will be automatically deleted. We release these objects only when this flag isn't set. Signed-off-by: Takashi Iwai commit 957ad0166e9f76a8561dafa5e14ef5bd3f5e9a3b Author: Vegard Nossum Date: Fri Nov 21 01:30:36 2008 +0100 sched: update comment for move_task_off_dead_cpu Impact: cleanup This commit: commit f7b4cddcc5aca03e80e357360c9424dfba5056c2 Author: Oleg Nesterov Date: Tue Oct 16 23:30:56 2007 -0700 do CPU_DEAD migrating under read_lock(tasklist) instead of write_lock_irq(ta Currently move_task_off_dead_cpu() is called under write_lock_irq(tasklist). This means it can't use task_lock() which is needed to improve migrating to take task's ->cpuset into account. Change the code to call move_task_off_dead_cpu() with irqs enabled, and change migrate_live_tasks() to use read_lock(tasklist). ...forgot to update the comment in front of move_task_off_dead_cpu. Reference: http://lkml.org/lkml/2008/6/23/135 Signed-off-by: Vegard Nossum Signed-off-by: Ingo Molnar commit fc02e90c34bacd5d7bc77b832c65a8f06e1bd60e Merge: ec4e0e2fe018992d980910db901637c814575914 13d428afc007fcfcd6deeb215618f54cf9c0cae6 Author: Ingo Molnar Date: Fri Nov 21 08:57:04 2008 +0100 Merge commit 'v2.6.28-rc6' into sched/core commit 0623536ca3e8fd7cb8b7468b0fd4d61d80f0b6ea Author: Takashi Iwai Date: Fri Nov 21 08:54:54 2008 +0100 ALSA: hda - Add missing static for snd_hda_eld_proc_new() inline funciton Signed-off-by: Takashi Iwai commit 3ddd972d970fdabbe6515aa2f95e0ef2c8df903d Author: Hiroshi Shimamoto Date: Thu Nov 20 18:32:17 2008 -0800 x86: signal: rename COPY_SEG_STRICT to COPY_SEG_CPL3 Impact: cleanup Rename macro COPY_SEG_STRICT to COPY_SEG_CPL3, as suggested by hpa. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit acdda7915eb5dae20b6e43b8b772b712b1ed32c3 Author: Wu Fengguang Date: Fri Nov 21 11:41:50 2008 +0800 ALSA: hda - support writing to the ELD proc file Allow users to fix quicks of ELD ROMs by writing new values to the ELD proc interface. The format is one or more lines of "name hex_value". Users can add/remove/modify up to 32 SAD(Short Audio Descriptor) entries. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit db742104704cfb047732aa66451c608382da3aee Author: Wu Fengguang Date: Fri Nov 21 12:34:05 2008 +0800 ALSA: hda: modify monitor name to be consistent with other ELD proc items Rename "monitor name" to "monitor_name" to conform with the keyword style. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 218b5ffc0d3fa852624e67a1bb2528ca29274d6e Author: Wu Fengguang Date: Fri Nov 21 09:42:59 2008 +0800 ALSA: hda - properly print ELD sample bits Fix bugs on printing the ELD sample bits. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 75a287d9a35a825cb758d2f8d8df93d41f9f8e3e Merge: 1725b82a6e2721612a3572d0336f51f1f1c3cf54 3a7abfd2ba26479615b81ac5e90d0122ef7f9fe0 Author: Takashi Iwai Date: Fri Nov 21 08:27:04 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda Conflicts: sound/pci/hda/patch_sigmatel.c commit c4900be053d376dfe4f603d000aa5e4c60745dec Author: Donald Skidmore Date: Thu Nov 20 21:11:42 2008 -0800 ixgbe: add SFP+ driver support This patch adds support for SFP+ PHY in the following device ID's (10DB, 10F1, 10E1). These SFP+ PHY's are accessed via an I2C interface so the patch also includes functions to support this. Another feature of note is that the PHY is pluggable and some rearchitecting was needed to support this. Signed-off-by: Donald Skidmore Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 859ee3c43812051e21816c6d6d4cc04fb7ce9b2e Author: Alexander Duyck Date: Thu Nov 20 21:10:23 2008 -0800 DCB: Add support for DCB BCN Adds an interface to configure the Backward Congestion Notification (BCN) feature. In a BCN capabale network, congestion notifications from congested points out in the network can cause the end station limit the rate of a given traffic flow. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: David S. Miller commit 0eb3aa9bab20217fb42244ccdcb5bf8a002f504c Author: Alexander Duyck Date: Thu Nov 20 21:09:23 2008 -0800 DCB: Add interface to query the state of PFC feature. Adds a netlink interface for Data Center Bridging (DCB) to get and set the enable state of the Priority Flow Control (PFC) feature. Primarily, this is a way to turn off PFC in the driver while DCB remains enabled. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: David S. Miller commit 33dbabc4a7f7bd72313c73a3c199f31f3900336f Author: Alexander Duyck Date: Thu Nov 20 21:08:19 2008 -0800 DCB: Add interface to query # of TCs supported by device Adds interface for Data Center Bridging (DCB) to query (and set if supported) the number of traffic classes currently supported by the device for the two (DCB) features: priority groups (PG) and priority flow control (PFC). Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: David S. Miller commit 46132188bf72e22ef097f16ed5c969ee8cea1e8b Author: Alexander Duyck Date: Thu Nov 20 21:05:08 2008 -0800 DCB: Add interface to query for the DCB capabilities of an device. Adds to the netlink interface for Data Center Bridging (DCB), allowing the DCB capabilities supported by a device to be queried. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: David S. Miller commit 2f90b8657ec942d1880f720e0177ee71df7c8e3c Author: Alexander Duyck Date: Thu Nov 20 20:52:10 2008 -0800 ixgbe: this patch adds support for DCB to the kernel and ixgbe driver This adds support for Data Center Bridging (DCB) features in the ixgbe driver and adds an rtnetlink interface for configuring DCB to the kernel. The DCB feature support included are Priority Grouping (PG) - which allows bandwidth guarantees to be allocated to groups to traffic based on the 802.1q priority, and Priority Based Flow Control (PFC) - which introduces a new MAC control PAUSE frame which works at granularity of the 802.1p priority instead of the link (IEEE 802.3x). Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: David S. Miller commit 9db66bdcc83749affe61c61eb8ff3cf08f42afec Author: Eric Dumazet Date: Thu Nov 20 20:39:09 2008 -0800 net: convert TCP/DCCP ehash rwlocks to spinlocks Now TCP & DCCP use RCU lookups, we can convert ehash rwlocks to spinlocks. /proc/net/tcp and other seq_file 'readers' can safely be converted to 'writers'. This should speedup writers, since spin_lock()/spin_unlock() only use one atomic operation instead of two for write_lock()/write_unlock() Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit b8c26a33c8b6f0a150e9cb38ed80b890be55395c Author: Stephen Hemminger Date: Thu Nov 20 20:34:29 2008 -0800 ipgre: convert to netdevice_ops Convert ipgre tunnel to netdevice ops. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 1326c3d5a4b792a2b15877feb7fb691f8945d203 Author: Stephen Hemminger Date: Thu Nov 20 20:33:56 2008 -0800 ipv6: convert tunnels to net_device_ops Like IPV4, convert the tunnel virtual devices to use net_device_ops. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 23a12b14715e2dcd34dc8002927263ad3437344c Author: Stephen Hemminger Date: Thu Nov 20 20:33:21 2008 -0800 ipip: convert to net_device_ops Convert to network device ops. Needed to change to directly call the init routine since two sides share same ops. In the process found by inspection a device ref count leak if register_netdevice failed. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 748ff68fad9600593c6abe47856037602bd5d133 Author: Stephen Hemminger Date: Thu Nov 20 20:32:15 2008 -0800 hippi: convert driver to net_device_ops Convert the HIPPI infrastructure for use with net_device_ops. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit fd8f4997e35f2c9a8bfc4d797ec09a6ae7858e04 Author: Stephen Hemminger Date: Thu Nov 20 20:31:40 2008 -0800 defxx: convert driver to net_device_ops Convert this driver to net_device_ops. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 145186a39570244aead77dc2efc559e5cac90548 Author: Stephen Hemminger Date: Thu Nov 20 20:29:48 2008 -0800 fddi: convert to new network device ops Similar to ethernet. Convert infrastructure and the one lone FDDI driver (for the one lone user of that hardware??). Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 007c3838d9fdcc8fdaea87e4879ec3759f016ed5 Author: Stephen Hemminger Date: Thu Nov 20 20:28:35 2008 -0800 ipmr: convert ipmr virtual interface to net_device_ops Convert to new network device ops interface. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit aa18e9e88c863a58f6ea63eeee0e740be071fdcf Author: Stephen Hemminger Date: Thu Nov 20 20:28:00 2008 -0800 dummy: convert to net_device_ops Convert to new network device ops interface. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 008298231abbeb91bc7be9e8b078607b816d1a4a Author: Stephen Hemminger Date: Thu Nov 20 20:14:53 2008 -0800 netdev: add more functions to netdevice ops This patch moves neigh_setup and hard_start_xmit into the network device ops structure. For bisection, fix all the previously converted drivers as well. Bonding driver took the biggest hit on this. Added a prefetch of the hard_start_xmit in the fast path to try and reduce any impact this would have. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 1725b82a6e2721612a3572d0336f51f1f1c3cf54 Author: Takashi Iwai Date: Fri Nov 21 02:25:48 2008 +0100 ALSA: hda - make laptop-eapd model back for AD1986A The changes specific for Samsung laptops seem unapplicable to other hardware models like ASUS. The mic inputs are lost on such hardware by the change 5d5d5f43f1b835c375de9bd270cce030d16e2871. This patch adds back the old laptop-eapd model, and create a new model "samsung" for the new one specific to Samsung laptops with automatic mic selection feature. Reference: kernel bugzilla #12070 http://bugzilla.kernel.org/show_bug.cgi?id=12070 Signed-off-by: Takashi Iwai commit 6ab33d51713d6d60c7677c0d020910a8cb37e513 Merge: 7be6065b39c3f1cfa796667eac1a2170465acc91 13d428afc007fcfcd6deeb215618f54cf9c0cae6 Author: David S. Miller Date: Thu Nov 20 16:44:00 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/ixgbe/ixgbe_main.c include/net/mac80211.h net/phonet/af_phonet.c commit 7cc45e64323c8a1042f56e6a8d1dc982f98d52a8 Author: Steven Rostedt Date: Sat Nov 15 02:39:05 2008 -0500 powerpc/ppc32: ftrace, dynamic ftrace to handle modules Impact: add ability to trace modules on 32 bit PowerPC This patch performs the necessary trampoline calls to handle modules with dynamic ftrace on 32 bit PowerPC. Signed-off-by: Steven Rostedt commit f48cb8b48b0b10025ca9c451b9b32cac3fcd33ba Author: Steven Rostedt Date: Fri Nov 14 20:47:03 2008 -0800 powerpc/ppc64: ftrace, handle module trampolines for dyn ftrace Impact: Allow 64 bit PowerPC to trace modules with dynamic ftrace This adds code to handle the PPC64 module trampolines, and allows for PPC64 to use dynamic ftrace. Thanks to Paul Mackerras for these updates: - fix the mod and rec->arch.mod NULL checks. - fix to is_bl_op compare. Thanks to Milton Miller for: - finding the nasty race with using two nops, and recommending instead that I use a branch 8 forward. Signed-off-by: Steven Rostedt commit e4486fe316895e87672a563c4f36393218f84ff1 Author: Steven Rostedt Date: Fri Nov 14 16:21:20 2008 -0800 powerpc: ftrace, use probe_kernel API to modify code Impact: use cleaner probe_kernel API over assembly Using probe_kernel_read/write interface is a much cleaner approach than the current assembly version. Signed-off-by: Steven Rostedt commit 8fd6e5a8c81e2e9b912ea33c8425a10729db469b Author: Steven Rostedt Date: Fri Nov 14 16:21:19 2008 -0800 powerpc: ftrace, convert to new dynamic ftrace arch API Impact: update to PowerPC ftrace arch API This patch converts PowerPC to use the new dynamic ftrace arch API. Thanks to Paul Mackennas for pointing out the mistakes of my original test_24bit_addr function. Signed-off-by: Steven Rostedt commit 6d07bb47354174a9b52d3b03f9e38b069a93d341 Author: Steven Rostedt Date: Fri Nov 14 16:21:19 2008 -0800 powerpc: ftrace, do not latency trace idle Impact: fix for irq off latency tracer When idle is called, interrupts are disabled, but the idle function will still wake up on an interrupt. The problem is that the interrupt disabled latency tracer will take this call to idle as a latency. This patch disables the latency tracing when going into idle. Signed-off-by: Steven Rostedt commit dcd072e26055de600cecdc3f7a1e083ecd55c2e4 Author: Alexander van Heukelum Date: Thu Nov 20 14:40:11 2008 +0100 x86: clean up after: move entry_64.S register saving out of the macros This add-on patch to x86: move entry_64.S register saving out of the macros visually cleans up the appearance of the code by introducing some basic helper macro's. It also adds some cfi annotations which were missing. Signed-off-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit 018a7bf1e55000dd792194238c9043918d24d3dd Author: Andy Whitcroft Date: Thu Nov 20 15:59:56 2008 +0100 netfilter: ip{,6}t_policy.h should include xp_policy.h It seems that all of the include/netfilter_{ipv4,ipv6}/{ipt,ip6t}_*.h which share constants include the corresponding include/netfilter/xp_*.h files. Neither ipt_policy.h not ip6t_policy.h do. Make these consistant with the norm. Signed-off-by: Andy Whitcroft Signed-off-by: Patrick McHardy commit 7be6065b39c3f1cfa796667eac1a2170465acc91 Author: Wang Chen Date: Thu Nov 20 04:26:21 2008 -0800 netdevice wanrouter: Convert directly reference of netdev->priv 1. Make device driver to allocate memory for netdev. 2. Convert all directly reference of netdev->priv to netdev_priv(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 826dd0e1e3c83ce0cd8c295cd0f6e72b8b527809 Author: Wang Chen Date: Thu Nov 20 04:25:06 2008 -0800 netdevice ni65: Convert directly reference of netdev->priv This patch is to kill directly reference of netdev->priv too. Because the private data needs special memory: lower 16MB DMA. alloc_etherdev() can not do this work. So we can't use netdev->priv to point to netdev's private data. Use netdev->ml_priv instead. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit c8019bf3aff653cceb64f66489fc299ee5957b57 Author: Wang Chen Date: Thu Nov 20 04:24:17 2008 -0800 netdevice ppp: Convert directly reference of netdev->priv 1. Use netdev_priv(dev) to replace dev->priv. 2. Alloc netdev's private data by alloc_netdev(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit f7b29271c35ed38f990ca3419696ca148349c2d3 Author: Steve Glendinning Date: Thu Nov 20 04:19:21 2008 -0800 smsc95xx: add tx checksum offload support LAN9500 supports tx checksum offload, which slightly decreases cpu utilisation. The benefit isn't very large because we still require the skb to be linearized, but it does save a few cycles. This patch adds support for it, and enables it by default. Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit 8761169cf15fdc9336abfddbb9c8dda59d974190 Author: Ben Hutchings Date: Thu Nov 20 04:17:42 2008 -0800 sfc: Fix dependency for SFC_MTD Randy Dunlap found that SFC_MTD was selected when sfc was built-in and the MTD core was a module. Don't allow that combination. Signed-off-by: Ben Hutchings Acked-by: Randy Dunlap Signed-off-by: David S. Miller commit 47a1a1d4be2910b13a8e90f75c17e253c39531ff Author: Patrick McHardy Date: Wed Nov 19 08:03:09 2008 +0000 pkt_sched: remove unnecessary xchg() in packet classifiers The use of xchg() hasn't been necessary since 2.2.something when proper locking was added to packet schedulers. In the case of classifiers they mostly weren't even necessary before that since they're mainly used to assign a NULL pointer to the filter root in the ->destroy path; the root is destroyed immediately after that. Signed-off-by: Patrick McHardy Signed-off-by: David S. Miller commit b94c8afcba3ae6584653b98e315446ea83be6ea5 Author: Patrick McHardy Date: Thu Nov 20 04:11:36 2008 -0800 pkt_sched: remove unnecessary xchg() in packet schedulers The use of xchg() hasn't been necessary since 2.2.something when proper locking was added to packet schedulers. Signed-off-by: Patrick McHardy Signed-off-by: David S. Miller commit c19d0369d4c791d90fe0b84d6040a897fe25cc14 Author: Harvey Harrison Date: Thu Nov 20 04:10:51 2008 -0800 isdn: isdn_net.c annotate struct ip_ports and trivial sparse fixes Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 13d2a1d2b032de08d7dcab6a1edcd47802681f96 Author: Patrick McHardy Date: Thu Nov 20 04:10:00 2008 -0800 pkt_sched: add DRR scheduler Add classful DRR scheduler as a more flexible replacement for SFQ. The main difference to the algorithm described in "Efficient Fair Queueing using Deficit Round Robin" is that this implementation doesn't drop packets from the longest queue on overrun because its classful and limits are handled by each individual child qdisc. Signed-off-by: Patrick McHardy Signed-off-by: David S. Miller commit 0c19b0adb8dd33dbd10ff48e41971231c486855c Author: Patrick McHardy Date: Thu Nov 20 04:08:29 2008 -0800 netlink: avoid memset of 0 bytes sparse warning A netlink attribute padding of zero triggers this sparse warning: include/linux/netlink.h:245:8: warning: memset with byte count of 0 Avoid the memset when the size parameter is constant and requires no padding. Signed-off-by: Patrick McHardy Signed-off-by: David S. Miller commit c0103606b7e3db191dcbaf988f28fa26aa711230 Author: Wang Chen Date: Thu Nov 20 04:05:56 2008 -0800 netdevice lance: Convert directly reference of netdev->priv This patch is to kill directly reference of netdev->priv too. Because the private data should be allocated in DMA area, alloc_etherdev() can't satisfy this needs. Use netdev->ml_priv to point to lance_private. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 537715226408b83c36b0688a1fb718f572d4dbe6 Author: Lennert Buytenhek Date: Thu Nov 20 03:59:04 2008 -0800 mv643xx_eth: calculate descriptor pointer only once in rxq_refill() Signed-off-by: Lennert Buytenhek Signed-off-by: David S. Miller commit f61e5547763338b793ed291f3de3130216d00430 Author: Lennert Buytenhek Date: Thu Nov 20 03:58:46 2008 -0800 mv643xx_eth: move receive error handling out of line Signed-off-by: Lennert Buytenhek Signed-off-by: David S. Miller commit 66e63ffbc04706568d8789cbb00eaa8ddbcae648 Author: Lennert Buytenhek Date: Thu Nov 20 03:58:27 2008 -0800 mv643xx_eth: implement ->set_rx_mode() Currently, if multiple unicast addresses are programmed into a mv643xx_eth interface, the core networking will resort to enabling promiscuous mode on the interface, as mv643xx_eth does not implement ->set_rx_mode(). This patch switches mv643xx_eth over from ->set_multicast_list() to ->set_rx_mode(), and implements support for secondary unicast addresses. The hardware can handle multiple unicast addresses as long as their first 11 nibbles are the same (i.e. are of the form xx:xx:xx:xx:xx:xy where the x part is the same for all addresses), so if that is the case, we use that mode. If it's not the case, we enable unicast promiscuous mode in the hardware, which is slightly better than enabling promiscuous mode for multicasts as well, which is what would happen before. While we are at it, change the programming sequence so that we don't clear all filter bits first, so we don't lose all incoming packets while the filter is being reprogrammed. Signed-off-by: Lennert Buytenhek Signed-off-by: David S. Miller commit 66823b928d746df21485deeff6744c77702abf29 Author: Lennert Buytenhek Date: Thu Nov 20 03:58:09 2008 -0800 mv643xx_eth: inline txq_alloc_desc_index() Since txq_alloc_desc_index() is a very simple function, and since descriptor ring index handling for transmit reclaim, receive processing and receive refill is already handled inline as well, inline txq_alloc_desc_index() into its two call sites. Signed-off-by: Lennert Buytenhek Signed-off-by: David S. Miller commit 37a6084f4b4693a408ac2fb229843af9f9f301ce Author: Lennert Buytenhek Date: Thu Nov 20 03:57:36 2008 -0800 mv643xx_eth: introduce per-port register area pointer The mv643xx_eth driver uses the rdl()/wrl() macros to read and write hardware registers. Per-port registers are accessed in the following way: #define PORT_STATUS(p) (0x0444 + ((p) << 10)) [...] static inline u32 rdl(struct mv643xx_eth_private *mp, int offset) { return readl(mp->shared->base + offset); } [...] port_status = rdl(mp, PORT_STATUS(mp->port_num)); By giving the per-port 'struct mv643xx_eth_private' its own 'void __iomem *base' pointer that points to the per-port register area, we can get rid of both the double indirection and the << 10 that is done for every per-port register access -- this patch does that. Signed-off-by: Lennert Buytenhek Signed-off-by: David S. Miller commit 10a9948d13eb51d757684da4354cf67891dc3481 Author: Lennert Buytenhek Date: Thu Nov 20 03:57:16 2008 -0800 mv643xx_eth: checkpatch fixes Fix up a couple of coding style issues caught by checkpatch. Signed-off-by: Lennert Buytenhek Signed-off-by: David S. Miller commit 21d1a161f6b1fff154e3614a6b5a2111fa7a4191 Author: Harvey Harrison Date: Thu Nov 20 01:54:27 2008 -0800 net: ip_sockglue.c add static, annotate ports' endianness Fixes sparse warnings: net/ipv4/ip_sockglue.c:146:15: warning: incorrect type in assignment (different base types) net/ipv4/ip_sockglue.c:146:15: expected restricted __be16 [assigned] [usertype] sin_port net/ipv4/ip_sockglue.c:146:15: got unsigned short [unsigned] [short] [usertype] net/ipv4/ip_sockglue.c:130:6: warning: symbol 'ip_cmsg_recv_dstaddr' was not declared. Should it be static? Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 00b5e50549aa9da770f1161907b4ed68aa4ece3a Author: Brice Goglin Date: Thu Nov 20 01:50:28 2008 -0800 myri10ge: remove hardcoded sram_size Removes the use of a hardcoded sram_size, determine string_spec location from the MCP header instead. Signed-off-by: Brice Goglin Signed-off-by: David S. Miller commit d6279c88f246adf94b7f7a014c5f19d527bc785b Author: Brice Goglin Date: Thu Nov 20 01:50:04 2008 -0800 myri10ge: fix per-slice rx/tx_dropped counters Properly attribute transmit and receive drops by incrementing the per-slice counter. Signed-off-by: Brice Goglin Signed-off-by: David S. Miller commit d99015b1abbad743aa049b439c1e1dede6d0fa49 Author: Alexander van Heukelum Date: Wed Nov 19 01:18:11 2008 +0100 x86: move entry_64.S register saving out of the macros Here is a combined patch that moves "save_args" out-of-line for the interrupt macro and moves "error_entry" mostly out-of-line for the zeroentry and errorentry macros. The save_args function becomes really straightforward and easy to understand, with the possible exception of the stack switch code, which now needs to copy the return address of to the calling function. Normal interrupts arrive with ((~vector)-0x80) on the stack, which gets adjusted in common_interrupt: : (5) addq $0xffffffffffffff80,(%rsp) /* -> ~(vector) */ (4) sub $0x50,%rsp /* space for registers */ (5) callq ffffffff80211290 (5) callq ffffffff80214290 : ... An apic interrupt stub now look like this: : (5) pushq $0xffffffffffffff05 /* ~(vector) */ (4) sub $0x50,%rsp /* space for registers */ (5) callq ffffffff80211290 (5) callq ffffffff80212b8f (5) jmpq ffffffff80211f93 Similarly the exception handler register saving function becomes simpler, without the need of any parameter shuffling. The stub for an exception without errorcode looks like this: : (6) callq *0x1cad12(%rip) # ffffffff803dd448 (2) pushq $0xffffffffffffffff /* no syscall */ (4) sub $0x78,%rsp /* space for registers */ (5) callq ffffffff8030e3b0 (3) mov %rsp,%rdi /* pt_regs pointer */ (2) xor %esi,%esi /* no error code */ (5) callq ffffffff80213446 (5) jmpq ffffffff8030e460 And one for an exception with errorcode like this: : (6) callq *0x1cab92(%rip) # ffffffff803dd448 (4) sub $0x78,%rsp /* space for registers */ (5) callq ffffffff8030e3b0 (3) mov %rsp,%rdi /* pt_regs pointer */ (5) mov 0x78(%rsp),%rsi /* load error code */ (9) movq $0xffffffffffffffff,0x78(%rsp) /* no syscall */ (5) callq ffffffff80213209 (5) jmpq ffffffff8030e460 Unfortunately, this last type is more than 32 bytes. But the total space savings due to this patch is about 2500 bytes on an smp-configuration, and I think the code is clearer than it was before. The tested kernels were non-paravirt ones (i.e., without the indirect call at the top of the exception handlers). Anyhow, I tested this patch on top of a recent -tip. The machine was an 2x4-core Xeon at 2333MHz. Measured where the delays between (almost-)adjacent rdtsc instructions. The graphs show how much time is spent outside of the program as a function of the measured delay. The area under the graph represents the total time spent outside the program. Eight instances of the rdtsctest were started, each pinned to a single cpu. The histogams are added. For each kernel two measurements were done: one in mostly idle condition, the other while running "bonnie++ -f", bound to cpu 0. Each measurement took 40 minutes runtime. See the attached graphs for the results. The graphs overlap almost everywhere, but there are small differences. Signed-off-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit c032a2de4c1a82187e9a754511043be47c8a92b5 Merge: 722024dbb74f3ea316c285c0a71a4512e113b0c4 cbe9ee00cea58d1f77b172fe22a51080e90877f2 Author: Ingo Molnar Date: Thu Nov 20 10:48:28 2008 +0100 Merge branch 'x86/cleanups' into x86/irq [ merged x86/cleanups into x86/irq to enable a wider IRQ entry code patch to be applied, which depends on a cleanup patch in x86/cleanups. ] commit 87f7606591aea6a8a38ea4c8911b5eeeee2740b8 Author: Yinghai Lu Date: Wed Nov 19 20:50:53 2008 -0800 x86: fix wakeup_cpu with numaq/es7000 v2 - call ->update_genapic() Impact: fix boot crash on 32-bit Hiroshi Shimamoto reported a boot failure on 32-bit x86. The setting of x86_quirks.wakeup_cpu is missing (when not passing in an explicit apic= boot parameter). Reported-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit a61fc1e995e6ccc884df50a1609b831a4b45a600 Author: Mike Frysinger Date: Mon Nov 17 21:23:40 2008 +0000 netdev/smc91x: unify Blackfin code a bit and use proper read/write functions Signed-off-by: Mike Frysinger Signed-off-by: Bryan Wu Signed-off-by: David S. Miller commit 3d3e35aa78c9498eed3209c9d82376085ed0c36f Author: Gerrit Renker Date: Thu Nov 20 01:03:08 2008 -0800 dccp: Fix bracing in dccp_feat_list_lookup. From: Gerrit Renker Signed-off-by: David S. Miller commit f4bdd264b43cc60dccb617afce2859dffdd7a935 Author: Wang Chen Date: Thu Nov 20 01:02:05 2008 -0800 netdevice hamradio: Convert directly reference of netdev->priv Since all the memory, which pointed by netdev->priv, are allocated in advance instead of by alloc_netdev(). Use netdev->ml_priv to point to those memory. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 56bc0f9603e45cf13db51e554e1541e289a7f8e9 Author: Alexey Dobriyan Date: Thu Nov 20 10:01:37 2008 +0100 netfilter: nf_conntrack_proto_gre: spread __exit Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit f3a216d1da1c034c425c4eafe27a1b45269985c7 Author: Wang Chen Date: Thu Nov 20 01:01:00 2008 -0800 netdevice: 82596: Convert netdev->priv to netdev_priv 1. When alloc_etherdev(), no memory be allocated to netdev->priv. 2. And it's need to get a whole page for priv. For these reasons, use netdev->ml_priv to point to the page is the best method to convert directly reference of netdev->priv. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 61d3015808d877eb4ea225b5924feb128b0c1bc7 Author: Alexey Dobriyan Date: Thu Nov 20 09:58:08 2008 +0100 netfilter: ip6table_filter: merge LOCAL_IN and FORWARD hooks Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit b0ceb560a4119f187dc50da655be389cb54ae4f9 Author: Alexey Dobriyan Date: Thu Nov 20 09:57:01 2008 +0100 netfilter: xt_recent: don't save proc dirs Not needed, since creation and removal are done by name. Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit d214c7537bbf2f247991fb65b3420b0b3d712c67 Author: Pablo Neira Ayuso Date: Thu Nov 20 00:49:27 2008 -0800 filter: add SKF_AD_NLATTR_NEST to look for nested attributes SKF_AD_NLATTR allows us to find the first matching attribute in a stream of netlink attributes from one offset to the end of the netlink message. This is not suitable to look for a specific matching inside a set of nested attributes. For example, in ctnetlink messages, if we look for the CTA_V6_SRC attribute in a message that talks about an IPv4 connection, SKF_AD_NLATTR returns the offset of CTA_STATUS which has the same value of CTA_V6_SRC but outside the nest. To differenciate CTA_STATUS and CTA_V6_SRC, we would have to make assumptions on the size of the attribute and the usual offset, resulting in horrible BSF code. This patch adds SKF_AD_NLATTR_NEST, which is a variant of SKF_AD_NLATTR, that looks for an attribute inside the limits of a nested attributes, but not further. This patch validates that we have enough room to look for the nested attributes - based on a suggestion from Patrick McHardy. Signed-off-by: Pablo Neira Ayuso Acked-by: Patrick McHardy Signed-off-by: David S. Miller commit 68fd991020fdf51bc94327d288ae4ae5d0b8dced Author: Alexander Duyck Date: Thu Nov 20 00:48:10 2008 -0800 igb: Fix tx/rx_ring_count parameters for igb on suspend/resume/ring resize When suspending the device the ring structure is freed which causes it to loose track of the count. To resolve this we need to move the ring count outside of the ring structure and store it in the adapter struct. In addition to resolving the suspend/resume issue this patch also addresses issues seen in the event of memory allocation errors causing uneven ring sizes on multiple queues. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit b2d565365e02947699a8e3d594275662a8d00646 Author: Alexander Duyck Date: Thu Nov 20 00:47:34 2008 -0800 igb: simplify swap in clean_rx_irq if using packet split This update replaces the xchg calls that were added with a pair of assignments as there is no need for the xchg calls and they were found to cause issues on some architectures. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 3ef6b2354f5ac340396e47a49b64b8da61ada3b7 Author: Alexander Duyck Date: Thu Nov 20 00:46:57 2008 -0800 igb: update name to reflect new hardware This patch adds the 82576 device to the description for igb in Kconfig. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 5caea4ea7088e80ac5410d04660346094608b909 Author: Eric Dumazet Date: Thu Nov 20 00:40:07 2008 -0800 net: listening_hash get a spinlock per bucket This patch prepares RCU migration of listening_hash table for TCP/DCCP protocols. listening_hash table being small (32 slots per protocol), we add a spinlock for each slot, instead of a single rwlock for whole table. This should reduce hold time of readers, and writers concurrency. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit bb5574608a8375026510b4f983ffbb06ece33fe2 Author: Richard A. Holden III Date: Wed Nov 19 16:05:15 2008 -0700 x86: fix arch/x86/kernel/setup.c build warning when !CONFIG_X86_RESERVE_LOW_64K Impact: cleanup Fix: arch/x86/kernel/setup.c:592: warning: 'dmi_low_memory_corruption' defined but not used this is only used if CONFIG_X86_RESERVE_LOW_64K is defined. Signed-off-by: Richard A. Holden III Signed-off-by: Ingo Molnar commit 90accd6fabf9b2fa2705945a4c601877a75d43bf Merge: b43d196c4d3fe46d6dda7c987c47792612b80b1b ee2f6cc7f9ea2542ad46070ed62ba7aa04d08871 Author: Ingo Molnar Date: Thu Nov 20 09:03:38 2008 +0100 Merge branch 'linus' into x86/memory-corruption-check commit 77be80e437fec44f8b7a620314b7d7b605b8d93b Author: Richard A. Holden III Date: Wed Nov 19 16:05:14 2008 -0700 x86: fix arch/x86/kernel/genx2apic_uv_x.c build warning when !CONFIG_HOTPLUG_CPU Impact: cleanup, reduce size of the kernel image a bit Fix: arch/x86/kernel/genx2apic_uv_x.c:403: warning: 'uv_heartbeat_disable' defined but not used the function is only used when CONFIG_HOTPLUG_CPU is defined. Signed-off-by: Richard A. Holden III Signed-off-by: Ingo Molnar commit fbc2a06056c9aa3cb8c44bf1cfeb1d260e229e5c Merge: a3d732f93785da17e0137210deadb4616f5536fc ee2f6cc7f9ea2542ad46070ed62ba7aa04d08871 Author: Ingo Molnar Date: Thu Nov 20 09:02:39 2008 +0100 Merge branch 'linus' into x86/uv commit 5b2d1ecac2a79b9438aed731557b8912564cedfd Author: Vincent Petry Date: Tue Nov 18 22:21:57 2008 +0800 ALSA: hda: Added Realtek ALC888 model entry for Acer Aspire 4930G laptop Added Realtek ALC888 model entry for the Acer Aspire 4930G laptop that fixes the following features: - internal microphone - heaphone jack sense - channel mode Signed-off-by: Vincent Petry Signed-off-by: Takashi Iwai commit 41dda0fdd2cb22d989aa76fbbbd5a6514a3e0802 Author: Wu Fengguang Date: Thu Nov 20 09:24:52 2008 +0800 ALSA: azx_probe() cleanup Replace 5 free-and-return-err blocks with goto-out-free ones. This makes the main logic more outstanding. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit d8b83c57a7e497cba9b5cb156e63176323035785 Author: Stephen Hemminger Date: Wed Nov 19 22:28:46 2008 -0800 acenic: convert to net_device_ops Convert this driver to network device ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 2c9171d4ef431d8ed897daf4fee6798979cbb432 Author: Stephen Hemminger Date: Wed Nov 19 22:27:43 2008 -0800 niu: convert to net_device_ops Convert this driver to network device ops. Compile tested only (give me hw!) Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit b94426bd9d16fb2753ada1255c7a432f49dfebcb Author: Stephen Hemminger Date: Wed Nov 19 22:26:51 2008 -0800 forcedeth: convert to net_device_ops Convert this driver to network device ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 7c7d64b8c00bcf9519e5ec38368bc7afdc185c51 Author: Stephen Hemminger Date: Wed Nov 19 22:25:36 2008 -0800 tg3: convert to net_device_ops Convert this driver to network device ops. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 0edc352743156a39dfc3f21206b2bf7b9f371832 Author: Stephen Hemminger Date: Wed Nov 19 22:24:29 2008 -0800 ixgb: convert to net_device_ops Convert this driver to network device ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit afe29f7a61b7b9b9dae9f443c34733c2b4f461ba Author: Stephen Hemminger Date: Wed Nov 19 22:23:26 2008 -0800 enic: convert to net_device_ops Convert this driver to network device ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 52256cfc9f81cd8713e00a0713e68347bbffba5a Author: Stephen Hemminger Date: Wed Nov 19 22:22:30 2008 -0800 ppp: convert to net_device_ops Convert this driver to network device ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit acc784263b0c46f3052fb4f155fdfe39b7001c98 Author: Stephen Hemminger Date: Wed Nov 19 22:21:53 2008 -0800 e100: convert to net_device_ops Convert to new network device ops interface. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 2e5c69228ef52b8fe6b3d38caf45f03b22fda7bd Author: Stephen Hemminger Date: Wed Nov 19 22:20:44 2008 -0800 igb: convert to net_device_ops Convert to new network device ops interface. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 39a11bd9102cf8601f02d595dc022b715103afde Author: Stephen Hemminger Date: Wed Nov 19 22:19:33 2008 -0800 via-velocity: convert to net_device_ops Convert this driver to network device ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 0e7614bc3df034e2f92e0d424cc6f81dcdb7af65 Author: Stephen Hemminger Date: Wed Nov 19 22:18:22 2008 -0800 e1000: convert to net_device_ops Convert to new network device ops interface. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 80ff32b76f7969bf62206840c4e1d04674e41df9 Author: Stephen Hemminger Date: Wed Nov 19 22:17:06 2008 -0800 cxgb2: convert to net_device_ops Convert this driver to network device ops. Compile teseted only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit dd7526960ec2a7c85a5b8bfae8f297d317bf4b86 Author: Stephen Hemminger Date: Wed Nov 19 22:15:39 2008 -0800 cxgb3: convert to net_device_ops Convert this driver to network device ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 825a84d1d3d612c2b8db77dd4719882690d01bae Author: Stephen Hemminger Date: Wed Nov 19 22:14:17 2008 -0800 atlx: convert to net_device_ops Convert this driver to network device ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 1e058ab58f03fedbd2aa202c3a81c777d623be3a Author: Stephen Hemminger Date: Wed Nov 19 22:12:06 2008 -0800 atl1e: convert to net_device_ops Convert this driver to network device ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 758e43b74c903ad368ceced31601ba5d96f31238 Author: Stephen Hemminger Date: Wed Nov 19 22:10:37 2008 -0800 tun: convert to net_device_ops Convert the TUN/TAP tunnel driver to net_device_ops. Split the ops in two, and retain compatability. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 48dfcde46ef23cfad1e0c0f13d4eae15c7f46efc Author: Stephen Hemminger Date: Wed Nov 19 22:09:07 2008 -0800 8139: convert to net_device_ops Convert to new network device ops interface. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 8b4ab28dae8afa14f22d210c591046def2f4d742 Author: Francois Romieu Date: Wed Nov 19 22:05:25 2008 -0800 r8169: convert to net_device_ops Based upon a patch by Stephen Hemminger. Signed-off-by: David S. Miller commit f80d032b5fe95e3ce89f79210859b7ec799e1ccc Author: Stephen Hemminger Date: Wed Nov 19 22:01:26 2008 -0800 skge: convert to net_device_ops Convert to new network device ops interface. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 1436b301ec2b184fc01dc29fa22d1fbac619b491 Author: Stephen Hemminger Date: Wed Nov 19 21:59:54 2008 -0800 sky2: convert to net_device_ops Convert to new network device ops interface. Slight additional complexity here because the second port does not allow netpoll and therefore has different virtual function table. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 651c24669316b955c3c7797bd535cdaa4533cb16 Author: Stephen Hemminger Date: Wed Nov 19 21:57:48 2008 -0800 e1000e: convert to net_device_ops Convert e1000e to network device ops. Signed-off-by: Stephen Hemminger commit eb7cc59a038b4e1914ae991d313f35904924759f Author: Stephen Hemminger Date: Wed Nov 19 21:56:05 2008 -0800 bonding: convert to net_device_ops Convert to net_device_ops table. Note: for some operations move error checking into generic networking layer (rather than looking at pointers in bonding). A couple of gratituous style cleanups to get rid of extra {} Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 656299f706e52e0409733d704c2761f1b12d6954 Author: Stephen Hemminger Date: Wed Nov 19 21:53:47 2008 -0800 vlan: convert to net_device_ops Convert vlan devices and function pointers to net_device_ops. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 5bc3eb7e2f0026f246d939851109df99e8e9f64a Author: Stephen Hemminger Date: Wed Nov 19 21:52:05 2008 -0800 ip: convert to net_device_ops for ioctl Convert to net_device_ops function table pointer for ioctl. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 54a30c975b6b27c0c9268461b647576b146d39bb Author: Stephen Hemminger Date: Wed Nov 19 21:51:06 2008 -0800 macvlan: convert to net_device_ops Convert to net_device_ops function table. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 4456e7bdf74c9f27e2312a6f197b2da467541433 Author: Stephen Hemminger Date: Wed Nov 19 21:50:10 2008 -0800 veth: convert to net_device_ops Convert to net_device_ops function table. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit a2dbb88210b9877f1c53d3798fd5d717a4d45256 Author: Stephen Hemminger Date: Wed Nov 19 21:49:00 2008 -0800 bridge: convert to net_device_ops Convert to net_device_ops function table. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 8dfcdf342d9e8294a3292005f9158022289dfd67 Author: Stephen Hemminger Date: Wed Nov 19 21:47:07 2008 -0800 ifb: convert to net_device_ops Convert to new network device ops interface. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit c02373bf2759dd210dc8c72c9c9b4a8f1c279cac Author: Stephen Hemminger Date: Wed Nov 19 21:46:18 2008 -0800 netdev: convert loopback to net_device_ops First device to convert over is the loopback device. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit ccad637b0c57de1825ffd34c311bf71487545ac2 Author: Stephen Hemminger Date: Wed Nov 19 22:42:31 2008 -0800 netdev: expose ethernet address primitives When ethernet devices are converted, the function pointer setup by eth_setup() need to be done during intialization. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit eeda3fd64f75bcbfaa70ce946513abaf3f23b8e0 Author: Stephen Hemminger Date: Wed Nov 19 21:40:23 2008 -0800 netdev: introduce dev_get_stats() In order for the network device ops get_stats call to be immutable, the handling of the default internal network device stats block has to be changed. Add a new helper function which replaces the old use of internal_get_stats. Note: change return code to make it clear that the caller should not go changing the returned statistics. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit d314774cf2cd5dfeb39a00d37deee65d4c627927 Author: Stephen Hemminger Date: Wed Nov 19 21:32:24 2008 -0800 netdev: network device operations infrastructure This patch changes the network device internal API to move adminstrative operations out of the network device structure and into a separate structure. This patch involves some hackery to maintain compatablity between the new and old model, so all 300+ drivers don't have to be changed at once. For drivers that aren't converted yet, the netdevice_ops virt function list still resides in the net_device structure. For old protocols, the new net_device_ops are copied out to the old net_device pointers. After the transistion is completed the nag message can be changed to an WARN_ON, and the compatiablity code can be made configurable. Some function pointers aren't moved: * destructor can't be in net_device_ops because it may need to be referenced after the module is unloaded. * neighbor setup is manipulated in a couple of places that need special consideration * hard_start_xmit is in the fast path for transmit. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 6b41e7dd90c6a628ab5fb8d781302d60a243b2ce Author: Eric Dumazet Date: Wed Nov 19 15:48:09 2008 -0800 net: af_unix should use KERN_INFO instead of KERN_DEBUG As spotted by Joe Perches, we should use KERN_INFO in unix_sock_destructor() Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit d171235e712c11c0a0f47f62619024bf726125e1 Author: Joe Perches Date: Wed Nov 19 15:45:15 2008 -0800 drivers/s390/ - csum_partial - remove unnecessary casts The first argument to csum_partial is const void * casts to char/u8 * are not necessary Signed-off-by: Joe Perches Signed-off-by: David S. Miller commit 07f0757a6808f2f36a0e58c3a54867ccffdb8dc9 Author: Joe Perches Date: Wed Nov 19 15:44:53 2008 -0800 include/net net/ - csum_partial - remove unnecessary casts The first argument to csum_partial is const void * casts to char/u8 * are not necessary Signed-off-by: Joe Perches Signed-off-by: David S. Miller commit a7a0d6a87b70f7b2bab5281fc0fd443772bd0795 Author: Eric Dumazet Date: Wed Nov 19 15:43:27 2008 -0800 net: inet_diag_handler structs can be const Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 14e943db133489c98d426a0dcfce4a99c6e8ad97 Author: Eric Dumazet Date: Wed Nov 19 15:14:01 2008 -0800 net: make /proc/net/protocols namespace aware Converting /proc/net/protocols to be namespace aware is quite easy and permits us to use sock_prot_inuse_get(). This provides seperate counters for each protocol. For example we can really count TCPv6 sockets and TCPv4 sockets, while previously, we had the same value, and this value was not namespace aware. Signed-off-by: Eric Dumazet Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 3680453c8be54fff0d23fdf33e8961a48e1f2cd6 Author: Eric Dumazet Date: Wed Nov 19 14:25:35 2008 -0800 net: af_packet should update its inuse counter This patch is a preparation to namespace conversion of /proc/net/protocols In order to have relevant information for PACKET protocols, we should use sock_prot_inuse_add() to update a (percpu and pernamespace) counter of inuse sockets. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 9789cfe22e5d7bc10cad841a4ea96ecedb34b267 Author: Randy Dunlap Date: Wed Nov 19 11:46:46 2008 -0800 nfsctl: add headers for credentials Needs headers help for current_cred: Adding only cred.h wasn't enough. linux-next-20081023/fs/nfsctl.c:45: error: implicit declaration of function 'current_cred' Signed-off-by: Randy Dunlap Cc: David Howells Cc: James Morris Signed-off-by: Andrew Morton Signed-off-by: James Morris commit 7596b27dbd8de7bcfa7a80b2756114b49bd5c018 Author: Randy Dunlap Date: Wed Nov 19 11:30:27 2008 -0800 coda: fix creds reference Needs a header file for credentials struct: linux-next-20081023/fs/coda/file.c:177: error: dereferencing pointer to incomplete type Signed-off-by: Randy Dunlap Cc: Jan Harkes Cc: David Howells Cc: James Morris Signed-off-by: Andrew Morton Signed-off-by: James Morris commit ec4e0e2fe018992d980910db901637c814575914 Author: Ken Chen Date: Tue Nov 18 22:41:57 2008 -0800 sched: fix inconsistency when redistribute per-cpu tg->cfs_rq shares Impact: make load-balancing more consistent In the update_shares() path leading to tg_shares_up(), the calculation of per-cpu cfs_rq shares is rather erratic even under moderate task wake up rate. The problem is that the per-cpu tg->cfs_rq load weight used in the sd_rq_weight aggregation and actual redistribution of the cfs_rq->shares are collected at different time. Under moderate system load, we've seen quite a bit of variation on the cfs_rq->shares and ultimately wildly affects sched_entity's load weight. This patch caches the result of initial per-cpu load weight when doing the sum calculation, and then pass it down to update_group_shares_cpu() for redistributing per-cpu cfs_rq shares. This allows consistent total cfs_rq shares across all CPUs. It also simplifies the rounding and zero load weight check. Signed-off-by: Ken Chen Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 9b0db7e7fd20d5a38844e9435f7d4246ea44978a Author: Mark Brown Date: Tue Nov 18 22:17:49 2008 +0000 ASoC: Convert blackfin machines to use DAI accessor functions Signed-off-by: Mark Brown commit d0c36631bbee9eb89f2fe4251e0e9583f37156cd Author: Mark Brown Date: Tue Nov 18 21:57:17 2008 +0000 ASoC: s3c24xx_uda134x DAI accessor functions and static cleanup Missed these during review. Signed-off-by: Mark Brown commit df573d2fd1b077b98ffc3eb62a9908075e69e578 Author: Arun KS Date: Wed Nov 19 17:45:19 2008 +0530 ASoC: Add support for omap2evm board This patch adds twl4030 audio support on omap2evm Signed-off-by: Arun KS Signed-off-by: Mark Brown commit 08bd16869645f435eba6a612d166532b3047c5f7 Author: Hugo Villeneuve Date: Wed Nov 19 01:37:32 2008 -0500 ASoC: Add driver for the Lyrtech SFFSDR board The PCM3008 is used on the Lyrtech SFFSDR board, in conjunction with an FPGA that generates the bit clock and the master clock [Downgraded the rate debug print to pr_debug() in hw_params, converted asm/gpio.h to linux/gpio.h -- broonie] Signed-off-by: Hugo Villeneuve Signed-off-by: Mark Brown commit 1c0090c280da18f79e3e94168b5f3bfe4eb5f1c8 Author: Hugo Villeneuve Date: Wed Nov 19 01:37:31 2008 -0500 ASoC: Add PCM3008 ALSA SoC driver The PCM3008 is a 16-bit stereo audio codec. It accepts left-justified format for ADC, and right-justified format for DAC. Independent power-down modes for ADC and DAC are provided, as well as a digital de-emphasis filter (4 modes). [Merged Makefile & Kconfig, changed asm/gpio.h to linux/gpio.h -- broonie] Signed-off-by: Hugo Villeneuve Signed-off-by: Mark Brown commit 8563964617a6685d790448d9d7e45b49be90a448 Author: Takashi Iwai Date: Wed Nov 19 14:14:50 2008 +0100 ALSA: hda - Show missing GPIO unsol bits The GPIO unsolicited event bits are read but not shown in the proc file. Let's fix it. Signed-off-by: Takashi Iwai commit 60a515132086b2c28a8141d873297fdf7a180ca7 Author: Andrew Morton Date: Tue Nov 18 22:20:10 2008 -0800 profiling: clean up profile_nop() Impact: cleanup No point in inlining this. Signed-off-by: Andrew Morton Signed-off-by: Ingo Molnar commit 9676e73a9e0cbdc521e1ebf4e13e6e5aada34247 Merge: 5a209c2d58e70f9bc415b9cdf0e3b9aaefb70371 86fa2f60674540df0b34f5c547ed0c1cf3a8f212 6d5b43a67accf6793ed259f6534b4bd53b1e5696 Author: Ingo Molnar Date: Wed Nov 19 10:04:25 2008 +0100 Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core Conflicts: kernel/trace/ftrace.c [ We conflicted here because we backported a few fixes to tracing/urgent - which has different internal APIs. ] commit 86fa2f60674540df0b34f5c547ed0c1cf3a8f212 Author: Ingo Molnar Date: Wed Nov 19 10:00:15 2008 +0100 ftrace: fix selftest locking Impact: fix self-test boot crash Self-test failure forgot to re-lock the BKL - crashing the next initcall: Testing tracer irqsoff: .. no entries found ..FAILED! initcall init_irqsoff_tracer+0x0/0x11 returned 0 after 3906 usecs calling init_mmio_trace+0x0/0xf @ 1 ------------[ cut here ]------------ Kernel BUG at c0c0a915 [verbose debug info unavailable] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC last sysfs file: Pid: 1, comm: swapper Not tainted (2.6.28-rc5-tip #53704) EIP: 0060:[] EFLAGS: 00010286 CPU: 1 EIP is at unlock_kernel+0x10/0x2b EAX: ffffffff EBX: 00000000 ECX: 00000000 EDX: f7030000 ESI: c12da19c EDI: 00000000 EBP: f7039f54 ESP: f7039f54 DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 Process swapper (pid: 1, ti=f7038000 task=f7030000 task.ti=f7038000) Stack: f7039f6c c0164d30 c013fed8 a7d8d7b4 00000000 00000000 f7039f74 c12fb78a f7039fd0 c0101132 c12fb77d 00000000 6f727200 6f632072 2d206564 c1002031 0000000f f7039fa2 f7039fb0 3531b171 00000000 00000000 0000002f c12ca480 Call Trace: [] ? register_tracer+0x66/0x13f [] ? ktime_get+0x19/0x1b [] ? init_mmio_trace+0xd/0xf [] ? do_one_initcall+0x4a/0x111 [] ? init_mmio_trace+0x0/0xf [] ? init_irq_proc+0x46/0x59 [] ? kernel_init+0x104/0x152 [] ? kernel_init+0x0/0x152 [] ? kernel_thread_helper+0x7/0x10 Code: 58 14 43 75 0a b8 00 9b 2d c1 e8 51 43 7a ff 64 a1 00 a0 37 c1 89 58 14 5b 5d c3 55 64 8b 15 00 a0 37 c1 83 7a 14 00 89 e5 79 04 <0f> 0b eb fe 8b 42 14 48 85 c0 89 42 14 79 0a b8 00 9b 2d c1 e8 EIP: [] unlock_kernel+0x10/0x2b SS:ESP 0068:f7039f54 ---[ end trace a7919e7f17c0a725 ]--- Kernel panic - not syncing: Attempted to kill init! So clean up the flow a bit. Signed-off-by: Ingo Molnar commit 3ac3ba0b396fd99550e08034b0e4c27fdf39c252 Merge: 934352f214b3251eb0793c1209d346595a661d80 7f0f598a0069d1ab072375965a4b69137233169c Author: Ingo Molnar Date: Wed Nov 19 09:44:37 2008 +0100 Merge branch 'linus' into sched/core Conflicts: kernel/Makefile commit ae8cb4caa34af20311fcf5ef248afc54407aa9a8 Author: Wu Fengguang Date: Wed Nov 19 15:14:03 2008 +0800 ALSA: hda: compact ELD output messages Strip out some ELD printk messages that end user won't care, and make the output compact. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit d39b4352f2356bde9d4dae8591d4c8022360922f Author: Wu Fengguang Date: Wed Nov 19 15:14:02 2008 +0800 ALSA: hda: make global snd_print_pcm_bits() Introduce a global function snd_print_pcm_bits() and use it in the ELD code. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 06f69d17a90ced7d74ff12ce69b7b101aed4ffd9 Author: Wu Fengguang Date: Wed Nov 19 15:14:01 2008 +0800 ALSA: hda: minor output message cleanups Some minor user visible message cleanups. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 5b87ebb7a79455358c1910f2896112ac0fa0d0fa Author: Wu Fengguang Date: Wed Nov 19 15:14:00 2008 +0800 ALSA: hda: rename sink_eld to hdmi_eld Rename struct sink_eld to hdmi_eld. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 4e19c58f27af67735d64d9af0b184181cea7ca63 Author: Wu Fengguang Date: Wed Nov 19 15:13:59 2008 +0800 ALSA: hda: minor code cleanups Some minor code cleanups. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 198d6ba4d7f48c94f990f4604f0b3d73925e0ded Merge: 9a57f7fabd383920585ed8b74eacd117c6551f2d 7f0f598a0069d1ab072375965a4b69137233169c Author: David S. Miller Date: Tue Nov 18 23:38:23 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/isdn/i4l/isdn_net.c fs/cifs/connect.c commit c6798d2bd1805e32a92ba8db168ec51cdbb534b0 Author: Matthew Ranostay Date: Tue Nov 18 20:54:17 2008 -0500 ALSA: hda: EAPD mute on suspend Moved support for EAPD mute on suspend from stac92hd71xx_suspend to the generic stac92xx_suspend function. Signed-off-by: Matthew Ranostay Signed-off-by: Takashi Iwai commit 9c8641e8ee438273079337c86f4d739fbfdd8b33 Author: Wu Fengguang Date: Wed Nov 19 08:56:18 2008 +0800 ALSA: hda: HDMI channel mapping cleanups Refactor the channel mapping code for consistent naming and make it more informed about channel allocations. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 698544de8a31a7cadc26c27cbaa69ae82dd4f86c Author: Wu Fengguang Date: Wed Nov 19 08:56:17 2008 +0800 ALSA: hda: HDMI channel allocations for audio infoframe To play a 3+ channels LPCM/DSD stream via HDMI, - HDMI sink must tell HDMI source about its speaker placements (via ELD, speaker-allocation field) - HDMI source must tell the HDMI sink about channel allocation (via audio infoframe, channel-allocation field) (related docs: HDMI 1.3a spec section 7.4, CEA-861-D section 7.5.3 and 6.6) This patch attempts to set the CA(channel-allocation) byte in the audio infoframe according to - the number of channels in the current stream - the speakers attached to the HDMI sink A channel_allocations[] line must meet the following two criteria to be considered as a valid candidate for CA: 1) its number of allocated channels = substream->runtime->channels 2) its speakers are a subset of the available ones on the sink side If there are multiple candidates, the first one is selected. This simple policy shall cheat the sink into playing music, but may direct data to the wrong speakers. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 903b21d8b7bb49d3438abdd7b9d4145511e1cba2 Author: Wu Fengguang Date: Wed Nov 19 08:56:16 2008 +0800 ALSA: hda: make global snd_print_channel_allocation() code refactor: make a global function snd_print_channel_allocation(). Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 5457a98039cebf20b564b5c3d73a50615e2b2696 Author: Wu Fengguang Date: Wed Nov 19 08:56:15 2008 +0800 ALSA: hda: make standalone hdmi_fill_audio_infoframe() code refactor: make a standalone function hdmi_fill_audio_infoframe(). Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit cea555d384b85271035814c5adad23e6c7fc5d2a Merge: 78608dd32ce46789e970d6c3c423cd668c138d6c 7f0f598a0069d1ab072375965a4b69137233169c Author: Paul Mackerras Date: Wed Nov 19 16:10:32 2008 +1100 Merge branch 'linux-2.6' into next commit 78608dd32ce46789e970d6c3c423cd668c138d6c Author: Milton Miller Date: Fri Oct 10 01:56:50 2008 +0000 powerpc/mpic: Use new smp_request_message_ipi MPIC has 4 ipis, so it can use the new smp_request_message_ipi to reduce pathlength when receiving an ipi. This has the side effect of using the common ipi names, and also continuing to try request the remaining messages when one fails. Signed-off-by: Milton Miller Signed-off-by: Paul Mackerras commit 25ddd738c2ebffb6c2d3cf29c91b986d1bb39c99 Author: Milton Miller Date: Fri Nov 14 20:11:49 2008 +0000 powerpc: Provide a separate handler for each IPI action With the new generic smp call function helpers, I noticed the code in smp_message_recv was a single function call in many cases. While getting the message number from the ipi data is easy, we can reduce the path length by a function and data-dependent switch by registering seperate IPI actions for these simple calls. Originally I left the ipi action array exposed, but then I realized the registration code should be common too. The three users each had their own name array, so I made a fourth to convert all users to use a common one. Signed-off-by: Milton Miller Signed-off-by: Paul Mackerras commit a6326e98a28d8a57f693369c82559543c6950f09 Author: Robert Jennings Date: Fri Nov 14 12:07:34 2008 +0000 powerpc: Correct page-in counter for CMM with 64k pages Linux will report the number of page-ins so that the hypervisor can better determine partition memory pressure. The hardware page size and the OS page size can be different. In the case where the hardware page size is 4k and the OS is running with 64k pages the code in commit 409001948d9f221c94a61c3ee96de112755fc04d ("powerpc: Update page-in counter for CMM") would under-report the number of pages. This corrects the reporting to the hypervisor by incrementing the page_in count by 1 << PAGE_FACTOR each time. Reported-by: Andrew Theurer Signed-off-by: Robert Jennings Signed-off-by: Paul Mackerras commit 22059a90b82d6cd02d488c48c27a4d0ad976c919 Author: Michael Ellerman Date: Wed Nov 12 18:20:43 2008 +0000 powerpc/pmac: Use of_find_node_with_property() in pmac_setup_arch() Signed-off-by: Michael Ellerman Acked-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit ba82efbd3b48cb2a0e03c043911ce44c28f2825a Author: Michael Ellerman Date: Wed Nov 12 18:20:40 2008 +0000 powerpc: Use of_find_node_with_property() in cell_iommu_fixed_mapping_init() Signed-off-by: Michael Ellerman Signed-off-by: Paul Mackerras commit 54018178ef05e32f140158cb7d7770b66042d131 Author: Michael Ellerman Date: Wed Nov 12 18:20:37 2008 +0000 powerpc: Use for_each_node_with_property() in of_irq_map_init() Signed-off-by: Michael Ellerman Signed-off-by: Paul Mackerras commit 1e291b14c8f1101b9093434489bd4dc0e03f3d0f Author: Michael Ellerman Date: Wed Nov 12 18:54:42 2008 +0000 of: Add helpers for finding device nodes which have a given property This commit adds a routine for finding a device node which has a certain property. The contents of the property are not taken into account, merely the presence or absence of the property. Based on that routine, we add a for_each_ macro for iterating over all nodes that have a certain property. Signed-off-by: Michael Ellerman Signed-off-by: Paul Mackerras commit ae564c63b8311fa73c21e456e00dba1f4b1ff6bc Author: Nick Piggin Date: Tue Nov 11 17:54:15 2008 +0000 powerpc: Optimise mutex This implements an optimised mutex fastpath for powerpc, making use of acquire and release barrier semantics. This takes the mutex lock+unlock benchmark from 203 to 173 cycles on a G5. Signed-off-by: Nick Piggin Signed-off-by: Paul Mackerras commit 957ab07b44d839ee8267e827fc4e8f1853798f57 Author: Nick Piggin Date: Tue Nov 11 17:51:18 2008 +0000 powerpc: Optimise smp_rmb After commit 598056d5af8fef1dbe8f96f5c2b641a528184e5a ("[POWERPC] Fix rmb to order cacheable vs. noncacheable"), rmb() becomes a sync instruction, which is needed to order cacheable vs noncacheable loads. However smp_rmb() is #defined to rmb(), and smp_rmb() can be an lwsync. This restores smp_rmb() performance by using lwsync there and updates the comments. Signed-off-by: Nick Piggin Signed-off-by: Paul Mackerras commit 46d075be585eae2b74265e4e64ca38dde16a09c6 Author: Nick Piggin Date: Tue Nov 11 17:50:48 2008 +0000 powerpc: Optimise smp_wmb Change 2d1b2027626d5151fff8ef7c06ca8e7876a1a510 ("powerpc: Fixup lwsync at runtime") removed __SUBARCH_HAS_LWSYNC, causing smp_wmb to revert back to eieio for all CPUs. This restores the behaviour intorduced in 74f0609526afddd88bef40b651da24f3167b10b2 ("powerpc: Optimise smp_wmb on 64-bit processors"). Signed-off-by: Nick Piggin Signed-off-by: Paul Mackerras commit a4e22f02f5b6518c1484faea1f88d81802b9feac Author: Mark Nelson Date: Tue Nov 11 00:53:34 2008 +0000 powerpc: Update 64bit __copy_tofrom_user() using CPU_FTR_UNALIGNED_LD_STD In exactly the same way that we updated memcpy() with new feature sections in commit 25d6e2d7c58ddc4a3b614fc5381591c0cfe66556 ("powerpc: Update 64bit memcpy() using CPU_FTR_UNALIGNED_LD_STD"), we do the same thing here for __copy_tofrom_user(). Once again this is purely a performance tweak for Cell and Power6 - this has no effect on all the other 64bit powerpc chips. We can make these same changes to __copy_tofrom_user() because the basic copy algorithm is the same as in memcpy() - this version just has all the exception handling logic needed when copying to or from userspace as well as a special case for copying whole 4K pages that are page aligned. CPU_FTR_UNALIGNED_LD_STD CPU was added in commit 4ec577a28980a0790df3c3dfe9c81f6e2222acfb ("powerpc: Add new CPU feature: CPU_FTR_UNALIGNED_LD_STD"). We also make the same simple one line change from cmpldi r1,... to cmpldi cr1,... for consistency. Signed-off-by: Mark Nelson Signed-off-by: Paul Mackerras commit 7526ff76f84178f8c926de7e590e4c5f9d4a2e62 Author: Hollis Blanchard Date: Mon Nov 10 14:33:36 2008 +0000 powerpc: Remove superfluous WARN_ON() from dma-noncoherent.c I can't tell why this WARN_ON exists, and there's no comment explaining it. Whether the pmd is present or not, pte_alloc_kernel() seems to handle both cases. Booting a 440 kernel with 64K PAGE_SIZE triggers the warning, but boot successfully completes and I see no problems beyond that. Signed-off-by: Hollis Blanchard Acked-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit efc3624c9419cad3cca93dfabb7b12664773d2b1 Author: Paul Mackerras Date: Wed Nov 5 18:39:27 2008 +0000 powerpc: Tell gcc when we clobber the carry in inline asm We have several instances of inline assembly code that use the addic or addic. instructions, but don't include XER in the list of clobbers. The addic and addic. instructions affect the carry bit, which is in the XER register. This adds "xer" to the list of clobbers for those inline asm statements that use addic or addic. and didn't already have it. Signed-off-by: Paul Mackerras commit d5e54913433fff89609adfc4b96fefcf807a9030 Author: David Gibson Date: Wed Nov 5 14:20:17 2008 +0000 powerpc: udbg-based backend for hvc_console This adds a new backend for the hvc console based on the low-level udbg callbacks. This effectively implements a working runtime console in terms of the simple udbg primitives. This is kind of a hack - since udbg isn't something you really want to be using routinely - but it's really useful during bringup. This can be used to quickly implement a userspace-usable console while you're working on a proper driver for whatever console I/O device the hardware has. Or, it can be used to avoid writing a full blown tty/console driver entirely for quick-and-dirty I/O hardware that will later be replaced by something else. Signed-off-by: David Gibson Signed-off-by: Paul Mackerras commit 8c6531868d4917adbd363030f28a734b76c7471a Author: Chris J Arges Date: Tue Nov 4 12:19:06 2008 +0000 serial/pmac_zilog: Add console polling support This implements poll_get_char and poll_put_char for console polling, which enables kgdb to work on machines that use the pmac_zilog serial driver, for example the Apple PowerMac G5. Signed-off-by: Chris J Arges Signed-off-by: Paul Mackerras commit 9b82f3e61758ed897200f0244b63a77c1791bcba Author: Geert Uytterhoeven Date: Thu Oct 30 08:12:58 2008 +0000 powerpc/ps3: Replace the flip_ctl logic in ps3av and ps3fb by a mutex Introduce ps3_gpu_mutex to synchronizes GPU-related operations, like: - invoking the L1GPU_CONTEXT_ATTRIBUTE_FB_BLIT command using the lv1_gpu_context_attribute() hypervisor call, - handling the PS3AV_CID_AVB_PARAM packet in the PS3 A/V Settings driver. Signed-off-by: Geert Uytterhoeven Signed-off-by: Geoff Levand Signed-off-by: Paul Mackerras commit a22506347d038a66506c6f57e9b97104128e280d Author: Heiko Carstens Date: Tue Nov 18 18:06:35 2008 +0100 ftrace: preemptoff selftest not working Impact: fix preemptoff and preemptirqsoff tracer self-tests I was wondering why the preemptoff and preemptirqsoff tracer selftests don't work on s390. After all its just that they get called from non-preemptible context: kernel_init() will execute all initcalls, however the first line in kernel_init() is lock_kernel(), which causes the preempt_count to be increased. Any later calls to add_preempt_count() (especially those from the selftests) will therefore not result in a call to trace_preempt_off() since the check below in add_preempt_count() will be false: if (preempt_count() == val) trace_preempt_off(CALLER_ADDR0, get_parent_ip(CALLER_ADDR1)); Hence the trace buffer will be empty. Fix this by releasing the BKL during the self-tests. Signed-off-by: Heiko Carstens Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit ca3ea02e90d63a6a91c1c2a445d6d71f9031a44a Author: Mark Brown Date: Tue Nov 18 20:40:36 2008 +0000 ASoC: Remove unused snd_soc_machine_config declaration Signed-off-by: Mark Brown commit 2af752936b311a846622668f8b0f1893d8eccade Author: Hannes Eder Date: Tue Nov 18 12:25:06 2008 -0500 sound: Fix warnings relating to ignored return value in snd_card_register Do not ignore the return of 'device_create_file' in 'snd_card_register' and thereby fixing the following warnings: sound/core/init.c: In function 'snd_card_register': sound/core/init.c:640: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result sound/core/init.c:641: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result Signed-off-by: Hannes Eder Signed-off-by: Takashi Iwai commit b5fe363b7d89577fcfda9b6cf0efc32760bbccc6 Author: Yinghai Lu Date: Tue Nov 18 08:14:14 2008 -0800 x86: use update_genapic to get rid of ES7000_CLUSTERED_APIC v2 Impact: clean up We can autodetect those system that need cluster apic, and update genapic accordingly. We can also remove wakeup.h for e7000, because it's default one is now the same as overall default mach_wakecpu.h Signed-off-by: Yinghai Lu Signed-off-by: Ingo Molnar commit f632ddcc0786149c0e4bef9b6b44c96a75c0d074 Author: Ingo Molnar Date: Tue Nov 18 17:32:26 2008 +0100 x86: fix wakeup_cpu with numaq/es7000, v2, fix #2 Impact: fix boot crash fix default_update_genapic(). Signed-off-by: Yinghai Lu Signed-off-by: Ingo Molnar commit 64977609e316c86fad513d9bf0afff998581e59d Author: Hiroshi Shimamoto Date: Mon Nov 17 15:49:14 2008 -0800 x86: ia32_signal: change order of storing in setup_sigcontext() Impact: cleanup Change order of storing to match the sigcontext_ia32. And add casting to make this code same as arch/x86/kernel/signal_32.c. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 047ce93581ca122442ed3c13a62a645249a7db1d Author: Hiroshi Shimamoto Date: Mon Nov 17 15:48:27 2008 -0800 x86: ia32_signal: remove using temporary variable Impact: cleanup No need to use temporary variable. Also rename the variable same as arch/x86/kernel/signal_32.c. Signed-off-by: Hiroshi Shimamoto Reviewed-by: WANG Cong Signed-off-by: Ingo Molnar commit 8c6e5ce0fd67c57ad5e19d1718e1250214e855db Author: Hiroshi Shimamoto Date: Mon Nov 17 15:47:48 2008 -0800 x86: ia32_signal: cleanup macro RELOAD_SEG Impact: cleanup Remove mask parameter because it's always 3. Cleanup coding styles. Signed-off-by: Hiroshi Shimamoto Reviewed-by: WANG Cong Signed-off-by: Ingo Molnar commit d71a68dca54756049e0eae62458a1705bf680d09 Author: Hiroshi Shimamoto Date: Mon Nov 17 15:47:06 2008 -0800 x86: ia32_signal: introduce COPY_SEG_CPL3 Impact: cleanup Introduce COPY_SEG_CPL3 for ia32_restore_sigcontext(). Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit b78a5b5260abf90d574911e7c7b8d35d5b48d6c0 Author: Hiroshi Shimamoto Date: Mon Nov 17 15:44:50 2008 -0800 x86: ia32_signal: cleanup macro COPY Impact: cleanup No need to use temporary variable in this case. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit cbe9ee00cea58d1f77b172fe22a51080e90877f2 Merge: 0bd7b79851d0f74b24a9ce87d088f2e7c718f668 10db4ef7b9a65b86e4d047671a1886f4c101a859 Author: Ingo Molnar Date: Tue Nov 18 15:41:36 2008 +0100 Merge branch 'x86/urgent' into x86/cleanups commit a1afd01c175324656d0e8f1c82ea94b474953c04 Author: Joerg Roedel Date: Tue Nov 18 12:44:21 2008 +0100 x86: default to SWIOTLB=y on x86_64 Impact: fixes korg bugzilla 11980 A kernel for a 64bit x86 system should always contain the swiotlb code in case it is booted on a machine without any hardware IOMMU supported by the kernel and more than 4GB of RAM. This patch changes Kconfig to always compile swiotlb into the kernel for x86_64. Signed-off-by: Joerg Roedel Cc: stable@kernel.org Signed-off-by: Ingo Molnar commit 72f2b894455775b980a5ac7ae70ab560b3d3d247 Author: Mark Brown Date: Tue Nov 18 12:25:46 2008 +0000 ASoC: Move uda134x_codec.h to uda134x.h For consistency with other ASoC codec drivers. Signed-off-by: Mark Brown commit a0bd65f45faae78bda7a2a07370c40c3e0a2502a Author: Mike Frysinger Date: Tue Nov 18 16:18:22 2008 +0800 ASoC: Blackfin: always set a default value for that GPIO range Cc: Cliff Cai Signed-off-by: Mike Frysinger Signed-off-by: Bryan Wu Signed-off-by: Mark Brown commit 27b9be5a7894f571bbfb87de19ad7cd8c7737d22 Author: Bryan Wu Date: Tue Nov 18 16:18:21 2008 +0800 ASoC: Blackfin: Simplify the MMAP_SUPPORT macros protected code Cc: Cliff Cai Signed-off-by: Bryan Wu Signed-off-by: Mark Brown commit caa45836d6bdfde603f3afd739ec3fc2360b1dac Author: Mike Frysinger Date: Tue Nov 18 16:18:20 2008 +0800 ASoC: Blackfin: do not force TWI bus for ssm2602 codec Cc: Cliff Cai Signed-off-by: Mike Frysinger Signed-off-by: Bryan Wu Signed-off-by: Mark Brown commit 0cade26e366549adcf211f67200b2934c8220f05 Author: Michael Hennerich Date: Tue Nov 18 16:18:19 2008 +0800 ASoC: Fix Blackfin AC97 DAI probe function return code A probe function should have a clean return 0 path. Cc: Cliff Cai Signed-off-by: Michael Hennerich Signed-off-by: Bryan Wu Signed-off-by: Mark Brown commit a89e611a1dfefbf5d21f6def54c958bf6c4971bc Author: Cliff Cai Date: Tue Nov 18 16:18:18 2008 +0800 ASoC: Blackfin: Fix AD1980/1 build with MMAP support disabled clean up redudent code and correct building problem in non-mmap mode Signed-off-by: Cliff Cai Signed-off-by: Bryan Wu Signed-off-by: Mark Brown commit 67f854b910613eeffec4fe71e35c0cd8c32c82ec Author: Cliff Cai Date: Tue Nov 18 16:18:17 2008 +0800 ASoC: Blackfin: add multi-channel function support This patch provides a option for users to enable multi-channel function support in Blackfin ASoC driver. Because Blackfin is without MMU, it is easy for us and the user to enable this function at compiling stage not dynamically on the fly. Signed-off-by: Cliff Cai Signed-off-by: Bryan Wu Signed-off-by: Mark Brown commit 9905ed35fdec0ebb3be8a724021ff3b104571667 Author: Cliff Cai Date: Tue Nov 18 16:18:16 2008 +0800 ASoC: AD1980 codec: add multi-channel function support We added multi-channel function to this codec driver and Blackfin ASoC driver as well. It was tested on Blackfin hardware. Signed-off-by: Cliff Cai Signed-off-by: Bryan Wu Signed-off-by: Mark Brown commit a11311d71d59145d920c19c0a4eed3fa7e26d222 Author: Mike Frysinger Date: Tue Nov 18 16:18:15 2008 +0800 ASoC: Blackfin: updates Kconfig for SPORT tweak SPORT range for non-BF54x so we get proper behavior for BF52x parts Signed-off-by: Mike Frysinger Signed-off-by: Bryan Wu Signed-off-by: Mark Brown commit cb6e2063697e91ca6983f9fe6958d20469b43641 Author: Naresh Medisetty Date: Tue Nov 18 11:01:03 2008 +0530 ASoC: DaVinci: Fix audio stall when doing full duplex Fix concurrent capture/playback issue. The issue is caused by re-initialization of control registers used specifically for capture or playback in both capture and playback operations. Signed-off-by: Steve Chen Signed-off-by: Naresh Medisetty Signed-off-by: Mark Brown commit cd896c331dd442c43cd9e23de3f1a4f3c111c292 Author: Takashi Iwai Date: Tue Nov 18 12:36:33 2008 +0100 ALSA: hda - Allow multiple imux for matrix-type mixers of ALC codecs Allow the multiple imux instances for matrix-type mixers like ALC882. So far, only ALC260 used this feature, but other codecs may need a similar stuff. Signed-off-by: Takashi Iwai commit e17b666a468285409ab9f6caff9df16936d27d71 Author: Patrick McHardy Date: Tue Nov 18 12:24:17 2008 +0100 netfilter: nf_conntrack: fix warning and prototype mismatch net/netfilter/nf_conntrack_core.c:46:1: warning: symbol 'nfnetlink_parse_nat_setup_hook' was not declared. Should it be static? Including the proper header also revealed an incorrect prototype. Signed-off-by: Patrick McHardy commit d9e150071d18b5c87ba7a097af4063a5ad0c6a0c Author: Patrick McHardy Date: Tue Nov 18 12:16:52 2008 +0100 netfilter: nfnetlink_log: fix warning and prototype mismatch net/netfilter/nfnetlink_log.c:537:1: warning: symbol 'nfulnl_log_packet' was not declared. Should it be static? Including the proper header also revealed an incorrect prototype. Signed-off-by: Patrick McHardy commit 19abb7b090a6bce88d4e9b2914a0367f4f684432 Author: Pablo Neira Ayuso Date: Tue Nov 18 11:56:20 2008 +0100 netfilter: ctnetlink: deliver events for conntracks changed from userspace As for now, the creation and update of conntracks via ctnetlink do not propagate an event to userspace. This can result in inconsistent situations if several userspace processes modify the connection tracking table by means of ctnetlink at the same time. Specifically, using the conntrack command line tool and conntrackd at the same time can trigger unconsistencies. This patch also modifies the event cache infrastructure to pass the process PID and the ECHO flag to nfnetlink_send() to report back to userspace if the process that triggered the change needs so. Based on a suggestion from Patrick McHardy. Signed-off-by: Pablo Neira Ayuso Signed-off-by: Patrick McHardy commit 226c0c0ef2abdf91b8d9cce1aaf7d4635a5e5926 Author: Pablo Neira Ayuso Date: Tue Nov 18 11:54:05 2008 +0100 netfilter: ctnetlink: helper modules load-on-demand support This patch adds module loading for helpers via ctnetlink. * Creation path: We support explicit and implicit helper assignation. For the explicit case, we try to load the module. If the module is correctly loaded and the helper is present, we return EAGAIN to re-start the creation. Otherwise, we return EOPNOTSUPP. * Update path: release the spin lock, load the module and check. If it is present, then return EAGAIN to re-start the update. This patch provides a refactorized function to lookup-and-set the connection tracking helper. The function removes the exported symbol __nf_ct_helper_find as it has not clients anymore. Signed-off-by: Pablo Neira Ayuso Signed-off-by: Patrick McHardy commit 0231022cc32d5f2e7f3c06b75691dda0ad6aec33 Author: Frederic Weisbecker Date: Mon Nov 17 03:22:41 2008 +0100 tracing/function-return-tracer: add the overrun field Impact: help to find the better depth of trace We decided to arbitrary define the depth of function return trace as "20". Perhaps this is not enough. To help finding an optimal depth, we measure now the overrun: the number of functions that have been missed for the current thread. By default this is not displayed, we have to do set a particular flag on the return tracer: echo overrun > /debug/tracing/trace_options And the overrun will be printed on the right. As the trace shows below, the current 20 depth is not enough. update_wall_time+0x37f/0x8c0 -> update_xtime_cache (345 ns) (Overruns: 2838) update_wall_time+0x384/0x8c0 -> clocksource_get_next (1141 ns) (Overruns: 2838) do_timer+0x23/0x100 -> update_wall_time (3882 ns) (Overruns: 2838) tick_do_update_jiffies64+0xbf/0x160 -> do_timer (5339 ns) (Overruns: 2838) tick_sched_timer+0x6a/0xf0 -> tick_do_update_jiffies64 (7209 ns) (Overruns: 2838) vgacon_set_cursor_size+0x98/0x120 -> native_io_delay (2613 ns) (Overruns: 274) vgacon_cursor+0x16e/0x1d0 -> vgacon_set_cursor_size (33151 ns) (Overruns: 274) set_cursor+0x5f/0x80 -> vgacon_cursor (36432 ns) (Overruns: 274) con_flush_chars+0x34/0x40 -> set_cursor (38790 ns) (Overruns: 274) release_console_sem+0x1ec/0x230 -> up (721 ns) (Overruns: 274) release_console_sem+0x225/0x230 -> wake_up_klogd (316 ns) (Overruns: 274) con_flush_chars+0x39/0x40 -> release_console_sem (2996 ns) (Overruns: 274) con_write+0x22/0x30 -> con_flush_chars (46067 ns) (Overruns: 274) n_tty_write+0x1cc/0x360 -> con_write (292670 ns) (Overruns: 274) smp_apic_timer_interrupt+0x2a/0x90 -> native_apic_mem_write (330 ns) (Overruns: 274) irq_enter+0x17/0x70 -> idle_cpu (413 ns) (Overruns: 274) smp_apic_timer_interrupt+0x2f/0x90 -> irq_enter (1525 ns) (Overruns: 274) ktime_get_ts+0x40/0x70 -> getnstimeofday (465 ns) (Overruns: 274) ktime_get_ts+0x60/0x70 -> set_normalized_timespec (436 ns) (Overruns: 274) ktime_get+0x16/0x30 -> ktime_get_ts (2501 ns) (Overruns: 274) hrtimer_interrupt+0x77/0x1a0 -> ktime_get (3439 ns) (Overruns: 274) Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 0619faf657806b943e6acf51f60f1cd023a96c78 Author: Frederic Weisbecker Date: Mon Nov 17 19:26:30 2008 +0100 tracing/ftrace: make nop tracer using tracer flags Impact: give an example on how to use specific tracer flags This patch propose to use the nop tracer to provide an example for using the tracer's custom flags implementation. V2: replace structures and defines just after the headers includes for cleanliness. V3: replace defines by enum values. Signed-off-by: Frederic Weisbecker Acked-by: Steven Noonan Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit adf9f19574334c9a29a2bc956009fcac7edf1a6b Author: Frederic Weisbecker Date: Mon Nov 17 19:23:42 2008 +0100 tracing/ftrace: implement a set_flag callback for tracers Impact: give a way to send specific messages to tracers The current implementation of tracing uses some flags to control the output of general tracers. But we have no way to implement custom flags handling for a specific tracer. This patch proposes a new callback for the struct tracer which called set_flag and a structure that represents a 32 bits variable flag. A tracer can implement a struct tracer_flags on which it puts the initial value of the flag integer. Than it can place a range of flags with their name and their flag mask on the flag integer. The structure that implement a single flag is called struct tracer_opt. These custom flags will be available through the trace_options file like the general tracing flags. Changing their value is done like the other general flags. For example if you have a flag that calls "foo", you can activate it by writing "foo" or "nofoo" on trace_options. Note that the set_flag callback is optional and is only needed if you want the flags changing to be signaled to your tracer and let it to accept or refuse their assignment. V2: Some arrangements in coding style.... Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit a581780aa17f9027c422cb2d10f0bd88135c36f5 Merge: af9f341a94482594ac28cb5b07c655b458bfe84e c5d08bb567874e410210cf7d21a25f28fcceb0a7 Author: Takashi Iwai Date: Tue Nov 18 10:57:07 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda commit af9f341a94482594ac28cb5b07c655b458bfe84e Author: Takashi Iwai Date: Tue Nov 18 10:38:56 2008 +0100 ALSA: hda - Fix restore of pin configs at resume for STAC/IDT codecs Fixed the restore of pin configs at resume for some STAC/IDT codec models. These models set explicitly the pin configs after the default init configs, and these aren't restored properly at resume. This patch introduces two changes: - Allocate always pin_configs array in stac_spec so that the driver can overwrite the value freely - Introduce stac_change_pin_config() to change the pin config value Signed-off-by: Takashi Iwai commit 2c885878c1b29293f04cfb4a5bd285c969148a8b Author: Takashi Iwai Date: Tue Nov 18 09:36:55 2008 +0100 ALSA: hda - Use init callback in stac92xx_resume() Call the init callback and remove duplicated codes in stac92xx_resume(). This also fixes the missing initialization such as digital I/O pins. Signed-off-by: Takashi Iwai commit e4973e1e5a42072ce88736ba0e39e4b8fc6c3c44 Author: Takashi Iwai Date: Tue Nov 18 09:32:42 2008 +0100 ALSA: hda - Create jack detection elements in build_controls The jack detection input elements should be created in build_controls callback instead of init callback because init can be called multiple times by suspend/resume and power-saving. Signed-off-by: Takashi Iwai commit f3a5c547012a09f38f7c27b17a8e3150b69cd259 Merge: e50a906e0200084f04f8f3b7c3a14b0442d1347f 4e14e833ac3b97a4aa8803eea49f899adc5bb5f4 Author: James Morris Date: Tue Nov 18 18:52:37 2008 +1100 Merge branch 'master' into next Conflicts: fs/cifs/misc.c Merge to resolve above, per the patch below. Signed-off-by: James Morris diff --cc fs/cifs/misc.c index ec36410,addd1dc..0000000 --- a/fs/cifs/misc.c +++ b/fs/cifs/misc.c @@@ -347,13 -338,13 +338,13 @@@ header_assemble(struct smb_hdr *buffer /* BB Add support for establishing new tCon and SMB Session */ /* with userid/password pairs found on the smb session */ /* for other target tcp/ip addresses BB */ - if (current->fsuid != treeCon->ses->linux_uid) { + if (current_fsuid() != treeCon->ses->linux_uid) { cFYI(1, ("Multiuser mode and UID " "did not match tcon uid")); - read_lock(&GlobalSMBSeslock); - list_for_each(temp_item, &GlobalSMBSessionList) { - ses = list_entry(temp_item, struct cifsSesInfo, cifsSessionList); + read_lock(&cifs_tcp_ses_lock); + list_for_each(temp_item, &treeCon->ses->server->smb_ses_list) { + ses = list_entry(temp_item, struct cifsSesInfo, smb_ses_list); - if (ses->linux_uid == current->fsuid) { + if (ses->linux_uid == current_fsuid()) { if (ses->server == treeCon->ses->server) { cFYI(1, ("found matching uid substitute right smb_uid")); buffer->Uid = ses->Suid; commit 5a209c2d58e70f9bc415b9cdf0e3b9aaefb70371 Merge: 3f8e402f34ecc7d1d00b54703d3baa401b8bdd78 0c726da983de0704254250ef6495ca152e7abcca e270219f4372b58bd3eeac12bd9f7edc592b8f6b Author: Ingo Molnar Date: Tue Nov 18 08:52:13 2008 +0100 Merge branches 'tracing/branch-tracer' and 'tracing/urgent' into tracing/core commit 5f1e71b1cc2cc788c0f452772e2ce5e7430c40c2 Author: Wu Fengguang Date: Tue Nov 18 11:47:53 2008 +0800 ALSA: ELD proc interface for HDMI sinks Create /proc/asound/card/eld# to reflect the audio configurations and capabilities of the attached HDMI sink. Some notes: - Shall we show an empty file if the ELD content is not valid? Well it's not that simple. There could be partially populated ELD, and there may be malformed ELD provided by buggy drivers/monitors. So expose ELD as it is. - The ELD retrieval routines rely on the Intel HDA interface, others are/could be universal and independent ones. - How do we name the proc file? If there are going to be two HDMI pins per codec, then the current naming scheme (eld#) will fail. Luckily the user space dependencies should be minimal, so it would be trivial to do the rename if that happens. - The ELD proc file content is designed to be easy for scripts and human reading. Its lines all have the pattern: \t[\t]* where is a keyword in c language, while could be any contents, including white spaces. could also be a null value. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 7f4a9f43427793bfe4d42e71f42e2b551bcfe354 Author: Wu Fengguang Date: Tue Nov 18 11:47:52 2008 +0800 ALSA: create hda_eld.c for ELD routines and proc interface ELD handling routines can be shared by all HDMI codecs, and they are large enough to make a standalone source file. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 33deeca3bb6a945677d70876ea9d044fc5797eb3 Author: Wu Fengguang Date: Tue Nov 18 11:47:51 2008 +0800 ALSA: introduce snd_print_pcm_rates() We want to share some code with print_pcm_rates(), so extract a common routine snd_print_pcm_rates() from it. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 2eca83ba9cc6f811f8c63314b22b4bc0532e2207 Author: Wu Fengguang Date: Tue Nov 18 10:21:55 2008 +0800 ALSA: hda: remove redundant get_amp_nid() Remove get_amp_nid(): it duplicates the one defined in hda_local.h Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit bc4a68fed4b4c01005ef3c71ede6a8cbe91b7dc9 Author: Risto Suominen Date: Tue Nov 18 07:35:14 2008 +0100 ALSA: snd-powermac: enable mic on iMac G4 Allow input from microphone on iMac G4 Flat-panel (Tumbler). Signed-off-by: Risto Suominen Signed-off-by: Takashi Iwai commit 54ac14a8e982ae6c7ac71ee2b0d0173b974509e2 Author: Yinghai Lu Date: Mon Nov 17 15:19:53 2008 -0800 x86: fix wakeup_cpu with numaq/es7000, v2, fix Impact: fix wakeup_secondary_cpu with hotplug We can not put that into x86_quirks, because that is __initdata. So try to move that to genapic, and add update_genapic in x86_quirks. later we even could use that stub to: 1. autodetect CONFIG_ES7000_CLUSTERED_APIC 2. more correct inquire_remote_apic with apic_verbosity setting. Signed-off-by: Yinghai Lu Signed-off-by: Ingo Molnar commit 8d702f2376d25ab277c38b57015f4aa990bc7f16 Author: Mark Brown Date: Mon Nov 17 21:42:01 2008 +0000 ASoC: Build tlv320aic23 cleanly Also merge down a couple of last minute style changes that got lost in the shuffle. Signed-off-by: Mark Brown commit 2adb9833d1782262c20b21457d645163928cf2a2 Author: Mark Brown Date: Mon Nov 17 17:11:14 2008 +0000 ASoC: Manage VMID mode for WM8990 A small additional power saving can be achieved for the WM8990 by maintaining VMID using a 2*250k divider when in standby mode. Signed-off-by: Mark Brown commit be1b87c70af69acfadb8a27a7a76dfb61de92643 Author: Mark Brown Date: Mon Nov 17 17:09:34 2008 +0000 ASoC: Enable WM8990 ADC clocking workaround Enable a hardware workaround which avoids problems with the clocking of the ADCs in certain configurations. Signed-off-by: Mark Brown commit ba533e95b929c577d69237692ee588001347be8a Author: Mark Brown Date: Mon Nov 17 16:59:24 2008 +0000 ASoC: Allow writes to uncached registers in WM8990 Only fully documented registers are cached in the WM8990 but additional registers exist. Signed-off-by: Mark Brown commit 569712b2b0970fa5b19673544d62ae661d04a220 Author: Yinghai Lu Date: Sun Nov 16 03:12:49 2008 -0800 x86: fix wakeup_cpu with numaq/es7000, v2 Impact: fix secondary-CPU wakeup/init path with numaq and es7000 While looking at wakeup_secondary_cpu for WAKE_SECONDARY_VIA_NMI: |#ifdef WAKE_SECONDARY_VIA_NMI |/* | * Poke the other CPU in the eye via NMI to wake it up. Remember that the normal | * INIT, INIT, STARTUP sequence will reset the chip hard for us, and this | * won't ... remember to clear down the APIC, etc later. | */ |static int __devinit |wakeup_secondary_cpu(int logical_apicid, unsigned long start_eip) |{ | unsigned long send_status, accept_status = 0; | int maxlvt; |... | if (APIC_INTEGRATED(apic_version[phys_apicid])) { | maxlvt = lapic_get_maxlvt(); I noticed that there is no warning about undefined phys_apicid... because WAKE_SECONDARY_VIA_NMI and WAKE_SECONDARY_VIA_INIT can not be defined at the same time. So NUMAQ is using wrong wakeup_secondary_cpu. WAKE_SECONDARY_VIA_NMI, WAKE_SECONDARY_VIA_INIT and WAKE_SECONDARY_VIA_MIP are variants of a weird and fragile preprocessor-driven "HAL" mechanisms to specify the kind of secondary-CPU wakeup strategy a given x86 kernel will use. The vast majority of systems want to use INIT for secondary wakeup - NUMAQ uses an NMI, (old-style-) ES7000 uses 'MIP' (a firmware driven in-memory flag to let secondaries continue). So convert these mechanisms to x86_quirks and add a ->wakeup_secondary_cpu() method to specify the rare exception to the sane default. Extend genapic accordingly as well, for 32-bit. While looking further, I noticed that functions in wakecup.h for numaq and es7000 are different to the default in mach_wakecpu.h - but smpboot.c will only use default mach_wakecpu.h with smphook.h. So we need to add mach_wakecpu.h for mach_generic, to properly support numaq and es7000, and vectorize the following SMP init methods: int trampoline_phys_low; int trampoline_phys_high; void (*wait_for_init_deassert)(atomic_t *deassert); void (*smp_callin_clear_local_apic)(void); void (*store_NMI_vector)(unsigned short *high, unsigned short *low); void (*restore_NMI_vector)(unsigned short *high, unsigned short *low); void (*inquire_remote_apic)(int apicid); Signed-off-by: Yinghai Lu Signed-off-by: Ingo Molnar commit 4dc06f9633444f426ef9960c53426f2d2ded64ac Author: Pablo Neira Ayuso Date: Mon Nov 17 16:01:42 2008 +0100 netfilter: nf_conntrack: connection tracking helper name persistent aliases This patch adds the macro MODULE_ALIAS_NFCT_HELPER that defines a way to provide generic and persistent aliases for the connection tracking helpers. This next patch requires this patch. Signed-off-by: Pablo Neira Ayuso Signed-off-by: Patrick McHardy commit 528a3a6f67d4fbe708b9f306be194e78b29e8d7a Author: Pablo Neira Ayuso Date: Mon Nov 17 16:00:40 2008 +0100 netfilter: ctnetlink: get rid of module refcounting in ctnetlink This patch replaces the unnecessary module refcounting with the read-side locks. With this patch, all the dump and fill_info function are called under the RCU read lock. Based on a patch from Fabian Hugelshofer. Signed-off-by: Pablo Neira Ayuso Signed-off-by: Patrick McHardy commit bfe2967735e0e0f650bf698a5683db2b6cf4cfd7 Author: Pablo Neira Ayuso Date: Mon Nov 17 15:55:48 2008 +0100 netfilter: ctnetlink: use EOPNOTSUPP instead of EINVAL if the conntrack has no helper This patch changes the return value if the conntrack has no helper assigned. Instead of EINVAL, which is reserved for malformed messages, it returns EOPNOTSUPP. Signed-off-by: Pablo Neira Ayuso Signed-off-by: Patrick McHardy commit 238ede8160443a32379fd8f9eb88d00456a09bb4 Author: Pablo Neira Ayuso Date: Mon Nov 17 15:53:33 2008 +0100 netfilter: ctnetlink: use nf_conntrack_get instead of atomic_inc Use nf_conntrack_get instead of the direct call to atomic_inc. Signed-off-by: Pablo Neira Ayuso Signed-off-by: Patrick McHardy commit 7ad933d7a6677c20ce1bdb17425e732cf1ebee8a Author: Christian Pellegrin Date: Sat Nov 15 08:58:32 2008 +0100 ASoC: Machine driver for for s3c24xx with uda134x Signed-off-by: Christian Pellegrin Signed-off-by: Mark Brown commit 1cad1de1b216b355a60d907c103b2daf1a285345 Author: Christian Pellegrin Date: Sat Nov 15 08:58:16 2008 +0100 ASoC: UDA134x codec driver Signed-off-by: Christian Pellegrin Signed-off-by: Mark Brown commit 0c726da983de0704254250ef6495ca152e7abcca Author: Aneesh Kumar K.V Date: Sun Nov 16 16:07:58 2008 +0530 tracing: branch tracer, fix writing to trace/trace_options Impact: fix trace_options behavior writing to trace/trace_options use the index of the array to find the value of the flag. With branch tracer flag defined conditionally, this breaks writing to trace_options with branch tracer disabled. Signed-off-by: Aneesh Kumar K.V Signed-off-by: Ingo Molnar commit 6e5d9db271ab57789b09bcc61083ab71b7eabea9 Author: Peter Ujfalusi Date: Fri Nov 14 08:57:28 2008 +0200 ASoC: Fix for master playback/capture volume range for TWL4030 codec FGAIN for playback is in range of 0-0x3f, while for capture GAIN it is in the range of 0-0x1f. The original value of 128 (0x7f) would modify the CGAIN also for playback. Signed-off-by: Peter Ujfalusi Acked-by: Steve Sakoman Signed-off-by: Mark Brown commit 9a57f7fabd383920585ed8b74eacd117c6551f2d Author: Eric Dumazet Date: Mon Nov 17 02:41:00 2008 -0800 net: sctp should update its inuse counter This patch is a preparation to namespace conversion of /proc/net/protocols In order to have relevant information for SCTP protocols, we should use sock_prot_inuse_add() to update a (percpu and pernamespace) counter of inuse sockets. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit a8076d8db98de6da61394b2e942320e4612643ac Author: Eric Dumazet Date: Mon Nov 17 02:38:49 2008 -0800 net: af_unix should update its inuse counter This patch is a preparation to namespace conversion of /proc/net/protocols In order to have relevant information for UNIX protocol, we should use sock_prot_inuse_add() to update a (percpu and pernamespace) counter of inuse sockets. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 0bd7b79851d0f74b24a9ce87d088f2e7c718f668 Author: Alexander van Heukelum Date: Sun Nov 16 15:29:00 2008 +0100 x86: entry_64.S: remove whitespace at end of lines Impact: cleanup All blame goes to: color white,red "[^[:graph:]]+$" in .nanorc ;). Signed-off-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit 9dacc71ff31a008d1e689fc824d31f6696454f68 Merge: 19f47c634ea8c5a10ff7bb1a08c52fd0f49bc54c 9bf1a2445f3c569098b8de7097ca324e65abecc2 Author: Ingo Molnar Date: Mon Nov 17 10:46:18 2008 +0100 Merge commit 'v2.6.28-rc5' into x86/cleanups commit 796359d150356adabb677d708a4e66a09d29d9d8 Author: Wu Fengguang Date: Mon Nov 17 16:57:33 2008 +0800 ALSA: hda-intel: reorder HDMI audio enabling sequence Reorder HDMI audio enabling sequence so that 1) the sink knows about the coming audio stream 2) unmute 3) start transferring audio samples The theory is that in the path A=>B=>C, we first make C ready, and then enable B, and lastly allow A to send audio samples. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit c0cea0d09d15350c398e2951e7cf4d6f0fc98977 Author: Matthew Ranostay Date: Sun Nov 16 11:42:34 2008 -0500 ALSA: hda: STAC_DELL_M6 EAPD Add support for EAPD on system suspend and disabling EAPD on headphone jack detection for STAC_DELL_M6 laptops. Signed-off-by: Matthew Ranostay Signed-off-by: Takashi Iwai commit 3ab909351a3c653a879a35b3342979ac483c0460 Author: Wu Fengguang Date: Mon Nov 17 09:51:09 2008 +0100 ALSA: hda: alc883 model for ASUS P5Q-EM boards Add a new alc883 model ALC1200_ASUS_P5Q for ASUS P5Q-EM boards. It is the same as ALC883_6ST_DIG except that the SPDIF digital output nid is 0x10. Tested-by: Andrei Tanas Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 3f8e402f34ecc7d1d00b54703d3baa401b8bdd78 Merge: 072b40a15616fe6bea68466e6bffcfcbf5c8f26f e7d3737ea1b102030f44e96c97754101e41515f0 227a837567e339c74d9d4243d03a29bd943a018c 5821e1b74f0d08952cb5da4bfd2d9a388d8df58e Author: Ingo Molnar Date: Mon Nov 17 09:36:22 2008 +0100 Merge branches 'tracing/branch-tracer', 'tracing/ftrace', 'tracing/function-return-tracer', 'tracing/tracepoints' and 'tracing/urgent' into tracing/core commit 248969ae31e1b3276fc4399d67ce29a5d81e6fd9 Author: Eric Dumazet Date: Mon Nov 17 00:00:30 2008 -0800 net: af_unix can make unix_nr_socks visbile in /proc Currently, /proc/net/protocols displays socket counts only for TCP/TCPv6 protocols We can provide unix_nr_socks for free here, this counter being already maintained in af_unix Before patch : # grep UNIX /proc/net/protocols UNIX 428 -1 -1 NI 0 yes kernel After patch : # grep UNIX /proc/net/protocols UNIX 428 98 -1 NI 0 yes kernel Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit c3ccc12339afa2633c72131e2aa97d52d9ca1b8a Author: Wang Chen Date: Sun Nov 16 23:06:39 2008 -0800 netdevice chelsio: Convert directly reference of netdev->priv Several netdev share one adapter here. We use netdev->ml_priv of the netdevs point to the first netdev's priv. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 4d24b52ac5085ef8a264d044f1b302b7c029887a Author: Alexey Dobriyan Date: Sun Nov 16 23:01:49 2008 -0800 ematch: simpler tcf_em_unregister() Simply delete ops from list and let list debugging do the job. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 6eba6a372b501aa3cdfb7df21a8364099125b9c4 Author: Eric Dumazet Date: Sun Nov 16 22:58:44 2008 -0800 net: Cleanup of af_unix This is a pure cleanup of net/unix/af_unix.c to meet current code style standards Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 191029963630719e867d8bd0c315d32c822622cb Author: Gerrit Renker Date: Sun Nov 16 22:56:55 2008 -0800 dccp: Tidy up setsockopt calls This splits the setsockopt calls into two groups, depending on whether an integer argument (val) is required and whether routines being called do their own locking. Some options (such as setting the CCID) use u8 rather than int, so that for these the test with regard to integer-sizeof can not be used. The second switch-case statement now only has those statements which need locking and which make use of `val'. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Acked-by: Arnaldo Carvalho de Melo Reviewed-by: Eugene Teo Signed-off-by: David S. Miller commit dd9c0e363cef32b7d6f23d4c87e8dfe4f91fd1c5 Author: Gerrit Renker Date: Sun Nov 16 22:55:08 2008 -0800 dccp: Deprecate Ack Ratio sysctl This patch deprecates the Ack Ratio sysctl, since * Ack Ratio is entirely ignored by CCID-3 and CCID-4, * Ack Ratio currently doesn't work in CCID-2 (i.e. is always set to 1); * even if it would work in CCID-2, there is no point for a user to change it: - Ack Ratio is constrained by cwnd (RFC 4341, 6.1.2), - if Ack Ratio > cwnd, the system resorts to spurious RTO timeouts (since waiting for Acks which will never arrive in this window), - cwnd is not a user-configurable value. The only reasonable place for Ack Ratio is to print it for debugging. It is planned to do this later on, as part of e.g. dccp_probe. With this patch Ack Ratio is now under full control of feature negotiation: * Ack Ratio is resolved as a dependency of the selected CCID; * if the chosen CCID supports it (i.e. CCID == CCID-2), Ack Ratio is set to the default of 2, following RFC 4340, 11.3 - "New connections start with Ack Ratio 2 for both endpoints"; * what happens then is part of another patch set, since it concerns the dynamic update of Ack Ratio while the connection is in full flight. Thanks to Tomasz Grobelny for discussion leading up to this patch. Signed-off-by: Gerrit Renker Acked-by: Arnaldo Carvalho de Melo Signed-off-by: David S. Miller commit 29450559849da7066813601effb7666966869853 Author: Gerrit Renker Date: Sun Nov 16 22:53:48 2008 -0800 dccp: Feature negotiation for minimum-checksum-coverage This provides feature negotiation for server minimum checksum coverage which so far has been missing. Since sender/receiver coverage values range only from 0...15, their type has also been reduced in size from u16 to u4. Feature-negotiation options are now generated for both sender and receiver coverage, i.e. when the peer has `forgotten' to enable partial coverage then feature negotiation will automatically enable (negotiate) the partial coverage value for this connection. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 49aebc66d6b896f9c7c5739d85c4548c00015aa7 Author: Gerrit Renker Date: Sun Nov 16 22:51:23 2008 -0800 dccp: Deprecate old setsockopt framework The previous setsockopt interface, which passed socket options via struct dccp_so_feat, is complicated/difficult to use. Continuing to support it leads to ugly code since the old approach did not distinguish between NN and SP values. This patch removes the old setsockopt interface and replaces it with two new functions to register NN/SP values for feature negotiation. These are essentially wrappers around the internal __feat_register functions, with checking added to avoid * wrong usage (type); * changing values while the connection is in progress. Signed-off-by: Gerrit Renker Signed-off-by: David S. Miller commit 0c1168398ecbfacbb27203b281bde20ec9f78017 Author: Gerrit Renker Date: Sun Nov 16 22:49:52 2008 -0800 dccp: Mechanism to resolve CCID dependencies This adds a hook to resolve features whose value depends on the choice of CCID. It is done at the server since it can only be done after the CCID values have been negotiated; i.e. the client will add its CCID preference list on the Change options sent in the Request, which will be reconciled with the local preference list of the server. The concept is documented on http://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/feature_negotiation/\ implementation_notes.html#ccid_dependencies Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 3f2c31d90327f21d76d296af34aa4ca547932ff4 Author: Mark McLoughlin Date: Sun Nov 16 22:41:34 2008 -0800 virtio_net: VIRTIO_NET_F_MSG_RXBUF (imprive rcv buffer allocation) If segmentation offload is enabled by the host, we currently allocate maximum sized packet buffers and pass them to the host. This uses up 20 ring entries, allowing us to supply only 20 packet buffers to the host with a 256 entry ring. This is a huge overhead when receiving small packets, and is most keenly felt when receiving MTU sized packets from off-host. The VIRTIO_NET_F_MRG_RXBUF feature flag is set by hosts which support using receive buffers which are smaller than the maximum packet size. In order to transfer large packets to the guest, the host merges together multiple receive buffers to form a larger logical buffer. The number of merged buffers is returned to the guest via a field in the virtio_net_hdr. Make use of this support by supplying single page receive buffers to the host. On receive, we extract the virtio_net_hdr, copy 128 bytes of the payload to the skb's linear data buffer and adjust the fragment offset to point to the remaining data. This ensures proper alignment and allows us to not use any paged data for small packets. If the payload occupies multiple pages, we simply append those pages as fragments and free the associated skbs. This scheme allows us to be efficient in our use of ring entries while still supporting large packets. Benchmarking using netperf from an external machine to a guest over a 10Gb/s network shows a 100% improvement from ~1Gb/s to ~2Gb/s. With a local host->guest benchmark with GSO disabled on the host side, throughput was seen to increase from 700Mb/s to 1.7Gb/s. Based on a patch from Herbert Xu. Signed-off-by: Mark McLoughlin Signed-off-by: Rusty Russell (use netdev_priv) Signed-off-by: David S. Miller commit 0276b4972e932ea8bf2941dcd37e9caac5652ed7 Author: Mark McLoughlin Date: Sun Nov 16 22:40:36 2008 -0800 virtio_net: hook up the set-tso ethtool op Seems like an oversight that we have set-tx-csum and set-sg hooked up, but not set-tso. Also leads to the strange situation that if you e.g. disable tx-csum, then tso doesn't get disabled. Signed-off-by: Mark McLoughlin Signed-off-by: Rusty Russell Signed-off-by: David S. Miller commit 0a888fd1f6320d1d9318c58de9bca3cef41546d6 Author: Mark McLoughlin Date: Sun Nov 16 22:39:18 2008 -0800 virtio_net: Recycle some more rx buffer pages Each time we re-fill the recv queue with buffers, we allocate one too many skbs and free it again when adding fails. We should recycle the pages allocated in this case. A previous version of this patch made trim_pages() trim trailing unused pages from skbs with some paged data, but this actually caused a barely measurable slowdown. Signed-off-by: Mark McLoughlin Signed-off-by: Rusty Russell (use netdev_priv) Signed-off-by: David S. Miller commit 908cd2dabbfbbefb02f6b908a1188a62e685136a Author: Alexey Dobriyan Date: Sun Nov 16 19:50:35 2008 -0800 net: use %pF for /proc/net/ptype Technically, patch changes format for modules, but I think nobody cares. -86dd :ipv6:ipv6_rcv+0x0 +86dd ipv6_rcv+0x0/0x400 [ipv6] Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 5635c10d976716ef47ae441998aeae144c7e7387 Author: Eric Dumazet Date: Sun Nov 16 19:46:36 2008 -0800 net: make sure struct dst_entry refcount is aligned on 64 bytes As found in the past (commit f1dd9c379cac7d5a76259e7dffcd5f8edc697d17 [NET]: Fix tbench regression in 2.6.25-rc1), it is really important that struct dst_entry refcount is aligned on a cache line. We cannot use __atribute((aligned)), so manually pad the structure for 32 and 64 bit arches. for 32bit : offsetof(truct dst_entry, __refcnt) is 0x80 for 64bit : offsetof(truct dst_entry, __refcnt) is 0xc0 As it is not possible to guess at compile time cache line size, we use a generic value of 64 bytes, that satisfies many current arches. (Using 128 bytes alignment on 64bit arches would waste 64 bytes) Add a BUILD_BUG_ON to catch future updates to "struct dst_entry" dont break this alignment. "tbench 8" is 4.4 % faster on a dual quad core (HP BL460c G1), Intel E5450 @3.00GHz (2350 MB/s instead of 2250 MB/s) Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 536533e69e3e4a9f0174509813f8df28970d6ebe Author: Eric Dumazet Date: Sun Nov 16 19:41:14 2008 -0800 rcu: documents rculist_nulls Adds Documentation/RCU/rculist_nulls.txt file to describe how 'nulls' end-of-list can help in some RCU algos. Signed-off-by: Eric Dumazet Acked-by: Peter Zijlstra Signed-off-by: David S. Miller commit 3ab5aee7fe840b5b1b35a8d1ac11c3de5281e611 Author: Eric Dumazet Date: Sun Nov 16 19:40:17 2008 -0800 net: Convert TCP & DCCP hash tables to use RCU / hlist_nulls RCU was added to UDP lookups, using a fast infrastructure : - sockets kmem_cache use SLAB_DESTROY_BY_RCU and dont pay the price of call_rcu() at freeing time. - hlist_nulls permits to use few memory barriers. This patch uses same infrastructure for TCP/DCCP established and timewait sockets. Thanks to SLAB_DESTROY_BY_RCU, no slowdown for applications using short lived TCP connections. A followup patch, converting rwlocks to spinlocks will even speedup this case. __inet_lookup_established() is pretty fast now we dont have to dirty a contended cache line (read_lock/read_unlock) Only established and timewait hashtable are converted to RCU (bind table and listen table are still using traditional locking) Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 88ab1932eac721c6e7336708558fa5ed02c85c80 Author: Eric Dumazet Date: Sun Nov 16 19:39:21 2008 -0800 udp: Use hlist_nulls in UDP RCU code This is a straightforward patch, using hlist_nulls infrastructure. RCUification already done on UDP two weeks ago. Using hlist_nulls permits us to avoid some memory barriers, both at lookup time and delete time. Patch is large because it adds new macros to include/net/sock.h. These macros will be used by TCP & DCCP in next patch. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit bbaffaca4810de1a25e32ecaf836eeaacc7a3d11 Author: Eric Dumazet Date: Sun Nov 16 19:37:55 2008 -0800 rcu: Introduce hlist_nulls variant of hlist hlist uses NULL value to finish a chain. hlist_nulls variant use the low order bit set to 1 to signal an end-of-list marker. This allows to store many different end markers, so that some RCU lockless algos (used in TCP/UDP stack for example) can save some memory barriers in fast paths. Two new files are added : include/linux/list_nulls.h - mimics hlist part of include/linux/list.h, derived to hlist_nulls variant include/linux/rculist_nulls.h - mimics hlist part of include/linux/rculist.h, derived to hlist_nulls variant Only four helpers are declared for the moment : hlist_nulls_del_init_rcu(), hlist_nulls_del_rcu(), hlist_nulls_add_head_rcu() and hlist_nulls_for_each_entry_rcu() prefetches() were removed, since an end of list is not anymore NULL value. prefetches() could trigger useless (and possibly dangerous) memory transactions. Example of use (extracted from __udp4_lib_lookup()) struct sock *sk, *result; struct hlist_nulls_node *node; unsigned short hnum = ntohs(dport); unsigned int hash = udp_hashfn(net, hnum); struct udp_hslot *hslot = &udptable->hash[hash]; int score, badness; rcu_read_lock(); begin: result = NULL; badness = -1; sk_nulls_for_each_rcu(sk, node, &hslot->head) { score = compute_score(sk, net, saddr, hnum, sport, daddr, dport, dif); if (score > badness) { result = sk; badness = score; } } /* * if the nulls value we got at the end of this lookup is * not the expected one, we must restart lookup. * We probably met an item that was moved to another chain. */ if (get_nulls_value(node) != hash) goto begin; if (result) { if (unlikely(!atomic_inc_not_zero(&result->sk_refcnt))) result = NULL; else if (unlikely(compute_score(result, net, saddr, hnum, sport, daddr, dport, dif) < badness)) { sock_put(result); goto begin; } } rcu_read_unlock(); return result; Signed-off-by: Eric Dumazet Acked-by: Peter Zijlstra Signed-off-by: David S. Miller commit e8b2dfe9b4501ed0047459b2756ba26e5a940a69 Author: Balazs Scheidler Date: Sun Nov 16 19:32:39 2008 -0800 TPROXY: implemented IP_RECVORIGDSTADDR socket option In case UDP traffic is redirected to a local UDP socket, the originally addressed destination address/port cannot be recovered with the in-kernel tproxy. This patch adds an IP_RECVORIGDSTADDR sockopt that enables a IP_ORIGDSTADDR ancillary message in recvmsg(). This ancillary message contains the original destination address/port of the packet being received. Signed-off-by: Balazs Scheidler Signed-off-by: David S. Miller commit 8164f1b79731ad8ad9c713dc53d587a3b746f82f Author: Ben Greear Date: Sun Nov 16 19:19:38 2008 -0800 ipv4: Fix ARP behavior with many mac-vlans Ben Greear wrote: > I have 500 mac-vlans on a system talking to 500 other > mac-vlans. My problem is that the arp-table gets extremely > huge because every time an arp-request comes in on all mac-vlans, > a stale arp entry is added for each mac-vlan. I have filtering > turned on, but that doesn't help because the neigh_event_ns call > below will cause a stale neighbor entry to be created regardless > of whether a replay will be sent or not. > Maybe the neigh_event code should be below the checks for dont_send, > and only create check neigh_event_ns if we are !dont_send? The attached patch makes it work much better for me. The patch will cause the code to NOT create a stale neighbor entry if we are not going to respond to the ARP request. The old code *would* create a stale entry even if we are not going to respond. Signed-off-by: Ben Greear Signed-off-by: David S. Miller commit 6ea7ae1d0fc02a6c4ccd27e43346f67c44226e7a Author: Alexander Duyck Date: Fri Nov 14 06:54:36 2008 +0000 e1000e: enable ECC correction on 82571 silicon This change enables ECC correction for the packet buffer on all 82571 silicon. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit f004f3ea34209d8b836426b26ade3dc502631b18 Author: Paulius Zaleckas Date: Fri Nov 14 00:24:34 2008 +0000 phylib: make mdio-gpio work without OF (v4) make mdio-gpio work with non OpenFirmware gpio implementation. Aditional changes to mdio-gpio: - use gpio_request() and gpio_free() - place irq[] array in struct mdio_gpio_info - add module description, author and license - add note about compiling this driver as module - rename mdc and mdio function (were ugly names) - change MII to MDIO in bus name - add __init __exit to module (un)loading functions - probe fails if no phys added to the bus - kzalloc bitbang with sizeof(*bitbang) Changes since v3: - keep bus naming "%x" to be compatible with existing drivers. Changes since v2: - more #ifdefs reduction - platform driver will be registered on OF platforms also - unified platform and OF bus_id to phy%i Changes since v1: - removed NO_IRQ - reduced #idefs Laurent, please test this driver under OF. Signed-off-by: Paulius Zaleckas Signed-off-by: David S. Miller commit 72af187f216ed83c77ca3e6f22dfc9caf72e9347 Author: Paulius Zaleckas Date: Fri Nov 14 00:24:28 2008 +0000 phylib: rename mdio-ofgpio to mdio-gpio Signed-off-by: Paulius Zaleckas Signed-off-by: David S. Miller commit 6817ba2cd22cfed2e93d062dca3d7a82465d693d Author: David S. Miller Date: Sun Nov 16 12:41:35 2008 -0800 dm9000: Fix build error. Reported by Stephen Rothwell: drivers/net/dm9000.c:1450: error: expected ')' before ';' token drivers/net/dm9000.c:1455: error: expected ';' before '}' token Signed-off-by: David S. Miller commit 227a837567e339c74d9d4243d03a29bd943a018c Author: Ingo Molnar Date: Sun Nov 16 09:50:34 2008 +0100 markers/tracpoints: fix non-modular build fix: kernel/marker.c: In function 'marker_module_notify': kernel/marker.c:905: error: 'MODULE_STATE_COMING' undeclared (first use in this function) [...] Signed-off-by: Ingo Molnar commit cda2836dc66f814aecc58370251566e1c225c8d3 Author: David Brownell Date: Sun Nov 16 00:36:08 2008 -0800 pegasus: minor resource shrinkage Make pegasus driver not allocate a workqueue until the driver is bound to some device, which will need that workqueue if the device is brought up. This conserves resources when the driver is linked but there's no pegasus device connected. Also shrink the runtime footprint a smidgeon by moving some init-only code into its proper section, and move an obnoxious (frequent and meaningless) message to be debug-only. Signed-off-by: David Brownell Signed-off-by: David S. Miller commit 74ad0a5421edc6ef13a4059c6076cd7a4f3a1fd5 Author: PJ Waskiewicz Date: Fri Nov 7 12:16:08 2008 +0000 ixgbe: Fix usage of netif_*_all_queues() with netif_carrier_{off|on}() netif_carrier_off() is sufficient to stop Tx into the driver. Stopping the Tx queues is redundant and unnecessary. By the same token, netif_carrier_on() will be sufficient to re-enable Tx, so waking the queues is unnecessary. Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 0a7ad64531713e33e39af95bdbfb172f4f328b1e Author: Ingo Molnar Date: Sun Nov 16 08:54:36 2008 +0100 tracepoints: format documentation Impact: documentation update Properly format Documentation/tracepoints.txt - it was full of overlong lines and other typographical problems. Signed-off-by: Ingo Molnar commit 0dcf8fe5fe5d7279f1c479fa82f1f1ca6f22e814 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:49 2008 -0500 tracepoints, docs: marker_synchronize_unregister->tracepoint_synchronize_unregister Impact: documentation update. Signed-off-by: Zhaolei Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 8fd88d159031bd238dad1d7186a2030b9f9349de Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:48 2008 -0500 tracepoints: documentation fix for teardown Impact: documentation update Need a tracepoint_synchronize_unregister() before the end of exit() to make sure every probe callers have exited the non preemptible section and thus are not executing the probe code anymore. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 7e066fb870fcd1025ec3ba7bbde5d541094f4ce1 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:47 2008 -0500 tracepoints: add DECLARE_TRACE() and DEFINE_TRACE() Impact: API *CHANGE*. Must update all tracepoint users. Add DEFINE_TRACE() to tracepoints to let them declare the tracepoint structure in a single spot for all the kernel. It helps reducing memory consumption, especially when declaring a lot of tracepoints, e.g. for kmalloc tracing. *API CHANGE WARNING*: now, DECLARE_TRACE() must be used in headers for tracepoint declarations rather than DEFINE_TRACE(). This is the sane way to do it. The name previously used was misleading. Updates scheduler instrumentation to follow this API change. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 32f85742778dfc2c74975cf0b9f5bdb13470cb32 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:46 2008 -0500 tracepoints: use modules notifiers Impact: cleanup Use module notifiers for tracepoint updates rather than adding a hook in module.c. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 5f382671def7cb9c0f4b75d586dc5f60dca5e1c3 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:45 2008 -0500 tracepoints: do not put arguments in name Impact: cleanup That's overkill, takes space. We have a global tracepoint registery in header files anyway. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit c420970ef476d7d68df119711700666224001f43 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:44 2008 -0500 tracepoints: use unregister return value Impact: bugfix. Unregistering a tracepoint can fail. Return the error value. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit da7b3eab167091693ad215ad7692f7d0d24d1356 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:43 2008 -0500 tracepoints: use rcu_*_sched_notrace Make sure tracepoints can be called within ftrace callbacks. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit de0baf9ad661ac630a45a50ea1717cc4f4b33ace Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:42 2008 -0500 tracepoints: fix disable Impact: fix race Set the probe array pointer to NULL when the tracepoint is disabled. The probe array point not being NULL could generate a race condition where the reader would dereference a freed pointer. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 2504ea5edfebb14133b8571c20785cdc077e07d2 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:41 2008 -0500 tracepoints: samples, fix teardown Impact: fix a bug in sample tracepoints Need a tracepoint_synchronize_unregister() before the end of exit() to make sure every probe callers have exited the non preemptible section and thus are not executing the probe code anymore. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit a0bca6a59ebc052751eed6e3b182c153495672d8 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:40 2008 -0500 markers: create DEFINE_MARKER and GET_MARKER (new API) Impact: new API. Allow markers to be used only for declaration, without function call associated. Useful to create specialized probes. The problem we had is that two function calls were required when one wanted to put a marker in a tracepoint probe. Now the marker can be used simply for trace data type declaration, leaving the trace write work within the tracepoint probe without any additional function call. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit c1df1bd2c4d4b20c83755a0f41956b57aec4842a Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:39 2008 -0500 markers: auto enable tracepoints (new API : trace_mark_tp()) Impact: new API Add a new API trace_mark_tp(), which declares a marker within a tracepoint probe. When the marker is activated, the tracepoint is automatically enabled. No branch test is used at the marker site, because it would be a duplicate of the branch already present in the tracepoint. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit a419246ac7c2d9282dfd843103702895bb3f3fd7 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:38 2008 -0500 markers: use module notifier Impact: cleanup Use module notifiers instead of adding a hook in module.c. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 021aeb057fc48af03fe5f37d3dda366c0d97aaf3 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:37 2008 -0500 markers: use rcu_*_sched_notrace and notrace Make marker critical code use notrace to make sure they can be used as an ftrace callback. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit e3f8c4b9117d70127a8cab480af83bbfd048a28b Author: Arnaldo Carvalho de Melo Date: Fri Nov 14 17:47:36 2008 -0500 markers: add missing stdargs.h include, needed due to va_list usage Impact: build fix (for future changes) That seemed to cause built issue when marker.h is included early, even though stdargs.h is included in kernel.h. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 2bdba316c989da028a59becf7516c6350ce3c173 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:35 2008 -0500 markers: fix unregister Impact: fix marker registers/unregister race get_marker() can return a NULL entry because the mutex is released in the middle of those functions. Make sure we check to see if it has been concurrently removed. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 954e100d2275cb2f150f2b18d5cddcdf67b956ac Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:34 2008 -0500 rcu: add rcu_read_*_sched_notrace() Impact: new API, useful for tracepoints and markers. Add _notrace version to rcu_read_*_sched(). Signed-off-by: Mathieu Desnoyers Reviewed-by: Paul E McKenney Signed-off-by: Ingo Molnar commit e7d3737ea1b102030f44e96c97754101e41515f0 Author: Frederic Weisbecker Date: Sun Nov 16 06:02:06 2008 +0100 tracing/function-return-tracer: support for dynamic ftrace on function return tracer This patch adds the support for dynamic tracing on the function return tracer. The whole difference with normal dynamic function tracing is that we don't need to hook on a particular callback. The only pro that we want is to nop or set dynamically the calls to ftrace_caller (which is ftrace_return_caller here). Some security checks ensure that we are not trying to launch dynamic tracing for return tracing while normal function tracing is already running. An example of trace with getnstimeofday set as a filter: ktime_get_ts+0x22/0x50 -> getnstimeofday (2283 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1396 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1382 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1825 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1426 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1464 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1524 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1382 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1382 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1434 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1464 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1502 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1404 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1397 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1051 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1314 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1344 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1163 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1390 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1374 ns) Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit b01c746617da5e260803eb10ed64ca043e9a1241 Author: Frederic Weisbecker Date: Sat Nov 15 02:37:44 2008 +0100 tracing/function-return-tracer: add a barrier to ensure return stack index is incremented in memory Impact: fix possible race condition in ftrace function return tracer This fixes a possible race condition if index incrementation is not immediately flushed in memory. Thanks for Andi Kleen and Steven Rostedt for pointing out this issue and give me this solution. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 985809608f758a8d3ddda4ce5a53ed0e57fb9e1b Merge: c91add5fa68ea9b1f2923b3788c5dae0e60e1f6b 1c80025a49855b12fa09bb6db71820e3367b1369 Author: Ingo Molnar Date: Sun Nov 16 07:57:13 2008 +0100 Merge branch 'tracing/ftrace' into tracing/function-return-tracer commit 072b40a15616fe6bea68466e6bffcfcbf5c8f26f Author: Frederic Weisbecker Date: Sun Nov 16 05:59:52 2008 +0100 tracing/branch-tracer: fix a trace recursion on branch tracer Impact: fix crash when enabling the branch-tracer When the branch tracer inserts an event through probe_likely_condition(), it calls local_irq_save() and then results in a trace recursion. local_irq_save() -> trace_hardirqs_off() -> trace_hardirqs_off_caller() -> unlikely() The trace_branch.c file is protected by DISABLE_BRANCH_PROFILING but that doesn't prevent from external call to functions that use unlikely(). My box crashed each time I tried to set this tracer (sudden and hard reboot). Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 1c80025a49855b12fa09bb6db71820e3367b1369 Author: Frederic Weisbecker Date: Sun Nov 16 05:57:26 2008 +0100 tracing/ftrace: change the type of the init() callback Impact: extend the ->init() method with the ability to fail This bring a way to know if the initialization of a tracer successed. A tracer must return 0 on success and a traditional error (ie: -ENOMEM) if it fails. If a tracer fails to init, it is free to print a detailed warn. The tracing api will not and switch to a new tracer will just return the error from the init callback. Note: this will be used for the return tracer. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit e6e7a65aabdb696cf05a56cfd495c49a11fd4cde Author: Frederic Weisbecker Date: Sun Nov 16 05:53:19 2008 +0100 tracing/ftrace: fix unexpected -EINVAL when longest tracer name is set Impact: fix confusing write() -EINVAL when changing the tracer The following commit d9e540762f5cdd89f24e518ad1fd31142d0b9726 remade alive the bug which made the set of a new tracer returning -EINVAL if this is the longest name of tracer. This patch corrects it. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit ee02a2e5c88ca2e4d6921f08d037b46d5bf82641 Author: Steven Rostedt Date: Sat Nov 15 16:31:41 2008 -0500 ftrace: make filtered functions effective on setting Impact: set filtered functions at time the filter is set It can be confusing when the set_filter_functions is set (or cleared) and the functions being recorded by the dynamic tracer does not match. This patch causes the code to be updated if the function tracer is enabled and the filter is changed. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 982c350b9ec4b3564d67f3627a274ae61bbc7e95 Author: Steven Rostedt Date: Sat Nov 15 16:31:41 2008 -0500 ftrace: fix dyn ftrace filter Impact: correct implementation of dyn ftrace filter The old decisions made by the filter algorithm was complex and incorrect. This lead to inconsistent enabling or disabling of functions when the filter was used. This patch simplifies that code and in doing so, corrects the usage of the filters. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 20e5227e9f55ae1969934821ccbf581563785bbe Author: Steven Rostedt Date: Fri Nov 14 16:21:19 2008 -0800 ftrace: allow NULL pointers in mcount_loc Impact: make ftrace_convert_nops() more permissive Due to the way different architecture linkers combine the data sections of the mcount_loc (the section that lists all the locations that call mcount), there may be zeros added in that section. This is usually due to strange alignments that the linker performs, that pads in zeros. This patch makes the conversion code to nops skip any pointer in the mcount_loc section that is NULL. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 31e889098a80ceb3e9e3c555d522b2686a6663c6 Author: Steven Rostedt Date: Fri Nov 14 16:21:19 2008 -0800 ftrace: pass module struct to arch dynamic ftrace functions Impact: allow archs more flexibility on dynamic ftrace implementations Dynamic ftrace has largly been developed on x86. Since x86 does not have the same limitations as other architectures, the ftrace interaction between the generic code and the architecture specific code was not flexible enough to handle some of the issues that other architectures have. Most notably, module trampolines. Due to the limited branch distance that archs make in calling kernel core code from modules, the module load code must create a trampoline to jump to what will make the larger jump into core kernel code. The problem arises when this happens to a call to mcount. Ftrace checks all code before modifying it and makes sure the current code is what it expects. Right now, there is not enough information to handle modifying module trampolines. This patch changes the API between generic dynamic ftrace code and the arch dependent code. There is now two functions for modifying code: ftrace_make_nop(mod, rec, addr) - convert the code at rec->ip into a nop, where the original text is calling addr. (mod is the module struct if called by module init) ftrace_make_caller(rec, addr) - convert the code rec->ip that should be a nop into a caller to addr. The record "rec" now has a new field called "arch" where the architecture can add any special attributes to each call site record. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit d51ad7ac48f991c4a8834485727efa99a691cb87 Author: Steven Rostedt Date: Sat Nov 15 15:48:29 2008 -0500 ftrace: replace raw_local_irq_save with local_irq_save Impact: fix lockdep disabling itself when function tracing is enabled The raw_local_irq_saves used in ftrace is causing problems with lockdep. (it thinks the irq flags are out of sync and disables itself with a warning) The raw ops here are not needed, and the normal local_irq_save is fine. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 918c115410c6cc57033835b6a401e57697f9ea4f Author: Steven Rostedt Date: Fri Nov 14 16:21:19 2008 -0800 ftrace: do not process freed records Impact: keep from converting freed records When the tracer is started or stopped, it converts all code pointed to by the saved records into callers to ftrace or nops. When modules are unloaded, their records are freed, but they still exist within the record pages. This patch changes the code to skip over freed records. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit b17e8a37a13d0e87165054714434534bb7e69f2d Author: Steven Rostedt Date: Fri Nov 14 16:21:19 2008 -0800 ftrace: disable ftrace on anomalies in trace start and stop Impact: robust feature to disable ftrace on start or stop tracing on error Currently only the initial conversion to nops will disable ftrace on an anomaly. But if an anomaly happens on start or stopping of the tracer, it will silently fail. This patch adds a check there too, to disable ftrace and warn if the conversion fails. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit f3c7ac40a99f4044b843e6e2c4f46ab2d354c563 Author: Steven Rostedt Date: Fri Nov 14 16:21:19 2008 -0800 ftrace: remove condition from ftrace_record_ip Impact: let module functions be recorded when dyn ftrace not enabled When dynamic ftrace had a daemon and a hash to record the locations of mcount callers at run time, the recording needed to stop when ftrace was disabled. But now that the recording is done at compile time and the ftrace_record_ip is only called at boot up and when a module is loaded, we no longer need to check if ftrace_enabled is set. In fact, this breaks module load if it is not set because we skip over module functions. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit c91add5fa68ea9b1f2923b3788c5dae0e60e1f6b Merge: d1aaf8cf8afe70a8c2235a565885291fe290c57c b3535c6390f27d04273e4eee0bc687f171fbf5f4 ee51a1de7e3837577412be269e0100038068e691 Author: Ingo Molnar Date: Sun Nov 16 07:28:46 2008 +0100 Merge branches 'tracing/fastboot', 'tracing/ftrace' and 'tracing/urgent' into tracing/core commit e2da9ba570418fb4061f0a5cfe4338be6470c02b Merge: 127e82e3bfaad29e78ff5d4b1c41ab5e2d69c17f c39555d6edd0142972f577405d5259879ecc1635 Author: Takashi Iwai Date: Sat Nov 15 19:05:21 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda Conflicts: sound/pci/hda/patch_sigmatel.c commit e50a906e0200084f04f8f3b7c3a14b0442d1347f Author: Eric Paris Date: Thu Nov 13 18:37:25 2008 -0500 capabilities: define get_vfs_caps_from_disk when file caps are not enabled When CONFIG_SECURITY_FILE_CAPABILITIES is not set the audit system may try to call into the capabilities function vfs_cap_from_file. This patch defines that function so kernels can build and work. Signed-off-by: Eric Paris Signed-off-by: James Morris commit 71cfc9028d762419ce4dea62b4afc9c32c4b4820 Author: Mark Brown Date: Thu Nov 13 14:33:14 2008 +0000 ASoC: Add WM8728 codec driver The WM8728 is a high performance stereo DAC designed for applications such as DVD, home theatre and digital TV. Signed-off-by: Mark Brown commit 2bef901071448e0c86af8edb4797cd5f81b6240d Author: Mark Brown Date: Fri Nov 14 14:40:46 2008 +0000 ASoC: Revert "ASoC: Add new parameter to s3c24xx_pcm_enqueue" This reverts commit 8dc840f88d9c9f75f46d5dbe489242f8a114fab6. Christian Pellegrin reported that on some systems the patch caused DMA to fail which is much more serious than the original skipped audio issue. Further investigation by Dave shows that the behaviour depends on the clock speed of the SoC - a better fix is neeeded. Signed-off-by: Mark Brown commit 127e82e3bfaad29e78ff5d4b1c41ab5e2d69c17f Author: Takashi Iwai Date: Fri Nov 14 14:03:33 2008 +0100 ALSA: hda - Support Headphone and Speaker volumes control on VAIO Split the bound Master control to individual Headphone and Speaker volume controls for VAIO with STAC982x codecs. The Master controls is still created as a vmaster. Signed-off-by: Takashi Iwai commit 8a75f4fb28766878893b4335f4b5743ce9b931fe Author: Takashi Iwai Date: Fri Nov 14 13:58:43 2008 +0100 ALSA: pcsp - Use HRTIMER_CB_IRQSAFE_UNLOCKED HRTIMER_CB_IRQSAFE was removed in the upstream. Try to use HRTIMER_CB_IRQSAFE_UNLOCKED instead. Signed-off-by: Takashi Iwai commit ef711cf1d156428d4c2911b8c86c6ce90519dc45 Author: Eric Dumazet Date: Fri Nov 14 00:53:54 2008 -0800 net: speedup dst_release() During tbench/oprofile sessions, I found that dst_release() was in third position. CPU: Core 2, speed 2999.68 MHz (estimated) Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (Unhalted core cycles) count 100000 samples % symbol name 483726 9.0185 __copy_user_zeroing_intel 191466 3.5697 __copy_user_intel 185475 3.4580 dst_release 175114 3.2648 ip_queue_xmit 153447 2.8608 tcp_sendmsg 108775 2.0280 tcp_recvmsg 102659 1.9140 sysenter_past_esp 101450 1.8914 tcp_current_mss 95067 1.7724 __copy_from_user_ll 86531 1.6133 tcp_transmit_skb Of course, all CPUS fight on the dst_entry associated with 127.0.0.1 Instead of first checking the refcount value, then decrement it, we use atomic_dec_return() to help CPU to make the right memory transaction (ie getting the cache line in exclusive mode) dst_release() is now at the fifth position, and tbench a litle bit faster ;) CPU: Core 2, speed 3000.1 MHz (estimated) Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (Unhalted core cycles) count 100000 samples % symbol name 647107 8.8072 __copy_user_zeroing_intel 258840 3.5229 ip_queue_xmit 258302 3.5155 __copy_user_intel 209629 2.8531 tcp_sendmsg 165632 2.2543 dst_release 149232 2.0311 tcp_current_mss 147821 2.0119 tcp_recvmsg 137893 1.8767 sysenter_past_esp 127473 1.7349 __copy_from_user_ll 121308 1.6510 ip_finish_output 118510 1.6129 tcp_transmit_skb 109295 1.4875 tcp_v4_rcv Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit f30ab418a1d3c5a8b83493e7d70d6876a74aa0ce Author: Jarek Poplawski Date: Thu Nov 13 22:56:30 2008 -0800 pkt_sched: Remove qdisc->ops->requeue() etc. After implementing qdisc->ops->peek() and changing sch_netem into classless qdisc there are no more qdisc->ops->requeue() users. This patch removes this method with its wrappers (qdisc_requeue()), and also unused qdisc->requeue structure. There are a few minor fixes of warnings (htb_enqueue()) and comments btw. The idea to kill ->requeue() and a similar patch were first developed by David S. Miller. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 38a7ddffa4b79d7b1fbc9bf2fa82b21b72622858 Author: Petr Tesarik Date: Thu Nov 13 22:44:11 2008 -0800 tcp: remove an unnecessary field in struct tcp_skb_cb The urg_ptr field is not used anywhere and is merely confusing. Signed-off-by: Petr Tesarik Signed-off-by: David S. Miller commit 00bcd522ea0a62f5e2a9c6ad4924cbbd8d05b026 Author: Harvey Harrison Date: Thu Nov 13 22:41:29 2008 -0800 isdn: use %pI4, remove get_{u8/u16/u32} and put_{u8/u16/u32} inlines They would have been better named as get_be16, put_be16, etc. as they were hiding an endian shift inside. They don't add much over explicitly coding the byteshifting and gcc sometimes has a problem with builtin_constant_p inside inline functions, so it may do a better job of byteswapping at compile time rather than runtime. Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 722024dbb74f3ea316c285c0a71a4512e113b0c4 Author: Alexander van Heukelum Date: Thu Nov 13 13:50:20 2008 +0100 x86: irq: fix apicinterrupts on 64 bits Impact: Fix interrupt via the apicinterrupt macro Checkin 939b787130bf22887a09d8fd2641a094dcef8c22 changed the "interrupt" macro, but the "interrupt" macro is also invoked indirectly from the "apicinterrupt" macro. The "apicinterrupt" macro probably should have its own collection of systematic stubs for the same reason the main IRQ code does; as is it is a huge amount of replicated code. Signed-off-by: Alexander van Heukelum Signed-off-by: H. Peter Anvin commit 2b828925652340277a889cbc11b2d0637f7cdaf7 Merge: 3a3b7ce9336952ea7b9564d976d068a238976c9d 58e20d8d344b0ee083febb18c2b021d2427e56ca Author: James Morris Date: Fri Nov 14 11:29:12 2008 +1100 Merge branch 'master' into next Conflicts: security/keys/internal.h security/keys/process_keys.c security/keys/request_key.c Fixed conflicts above by using the non 'tsk' versions. Signed-off-by: James Morris commit 3a3b7ce9336952ea7b9564d976d068a238976c9d Author: David Howells Date: Fri Nov 14 10:39:28 2008 +1100 CRED: Allow kernel services to override LSM settings for task actions Allow kernel services to override LSM settings appropriate to the actions performed by a task by duplicating a set of credentials, modifying it and then using task_struct::cred to point to it when performing operations on behalf of a task. This is used, for example, by CacheFiles which has to transparently access the cache on behalf of a process that thinks it is doing, say, NFS accesses with a potentially inappropriate (with respect to accessing the cache) set of credentials. This patch provides two LSM hooks for modifying a task security record: (*) security_kernel_act_as() which allows modification of the security datum with which a task acts on other objects (most notably files). (*) security_kernel_create_files_as() which allows modification of the security datum that is used to initialise the security data on a file that a task creates. The patch also provides four new credentials handling functions, which wrap the LSM functions: (1) prepare_kernel_cred() Prepare a set of credentials for a kernel service to use, based either on a daemon's credentials or on init_cred. All the keyrings are cleared. (2) set_security_override() Set the LSM security ID in a set of credentials to a specific security context, assuming permission from the LSM policy. (3) set_security_override_from_ctx() As (2), but takes the security context as a string. (4) set_create_files_as() Set the file creation LSM security ID in a set of credentials to be the same as that on a particular inode. Signed-off-by: Casey Schaufler [Smack changes] Signed-off-by: David Howells Signed-off-by: James Morris commit 1bfdc75ae077d60a01572a7781ec6264d55ab1b9 Author: David Howells Date: Fri Nov 14 10:39:27 2008 +1100 CRED: Add a kernel_service object class to SELinux Add a 'kernel_service' object class to SELinux and give this object class two access vectors: 'use_as_override' and 'create_files_as'. The first vector is used to grant a process the right to nominate an alternate process security ID for the kernel to use as an override for the SELinux subjective security when accessing stuff on behalf of another process. For example, CacheFiles when accessing the cache on behalf on a process accessing an NFS file needs to use a subjective security ID appropriate to the cache rather then the one the calling process is using. The cachefilesd daemon will nominate the security ID to be used. The second vector is used to grant a process the right to nominate a file creation label for a kernel service to use. Signed-off-by: David Howells Signed-off-by: James Morris commit 3b11a1decef07c19443d24ae926982bc8ec9f4c0 Author: David Howells Date: Fri Nov 14 10:39:26 2008 +1100 CRED: Differentiate objective and effective subjective credentials on a task Differentiate the objective and real subjective credentials from the effective subjective credentials on a task by introducing a second credentials pointer into the task_struct. task_struct::real_cred then refers to the objective and apparent real subjective credentials of a task, as perceived by the other tasks in the system. task_struct::cred then refers to the effective subjective credentials of a task, as used by that task when it's actually running. These are not visible to the other tasks in the system. __task_cred(task) then refers to the objective/real credentials of the task in question. current_cred() refers to the effective subjective credentials of the current task. prepare_creds() uses the objective creds as a base and commit_creds() changes both pointers in the task_struct (indeed commit_creds() requires them to be the same). override_creds() and revert_creds() change the subjective creds pointer only, and the former returns the old subjective creds. These are used by NFSD, faccessat() and do_coredump(), and will by used by CacheFiles. In SELinux, current_has_perm() is provided as an alternative to task_has_perm(). This uses the effective subjective context of current, whereas task_has_perm() uses the objective/real context of the subject. Signed-off-by: David Howells Signed-off-by: James Morris commit 98870ab0a5a3f1822aee681d2997017e1c87d026 Author: David Howells Date: Fri Nov 14 10:39:26 2008 +1100 CRED: Documentation Document credentials and the new credentials API. Signed-off-by: David Howells Signed-off-by: James Morris commit d76b0d9b2d87cfc95686e148767cbf7d0e22bdc0 Author: David Howells Date: Fri Nov 14 10:39:25 2008 +1100 CRED: Use creds in file structs Attach creds to file structs and discard f_uid/f_gid. file_operations::open() methods (such as hppfs_open()) should use file->f_cred rather than current_cred(). At the moment file->f_cred will be current_cred() at this point. Signed-off-by: David Howells Reviewed-by: James Morris Signed-off-by: James Morris commit 1d045980e1eff4800472f0e81df9460640c8eee9 Author: David Howells Date: Fri Nov 14 10:39:24 2008 +1100 CRED: Prettify commoncap.c Prettify commoncap.c. Signed-off-by: David Howells Acked-by: Serge Hallyn Reviewed-by: James Morris Signed-off-by: James Morris commit a6f76f23d297f70e2a6b3ec607f7aeeea9e37e8d Author: David Howells Date: Fri Nov 14 10:39:24 2008 +1100 CRED: Make execve() take advantage of copy-on-write credentials Make execve() take advantage of copy-on-write credentials, allowing it to set up the credentials in advance, and then commit the whole lot after the point of no return. This patch and the preceding patches have been tested with the LTP SELinux testsuite. This patch makes several logical sets of alteration: (1) execve(). The credential bits from struct linux_binprm are, for the most part, replaced with a single credentials pointer (bprm->cred). This means that all the creds can be calculated in advance and then applied at the point of no return with no possibility of failure. I would like to replace bprm->cap_effective with: cap_isclear(bprm->cap_effective) but this seems impossible due to special behaviour for processes of pid 1 (they always retain their parent's capability masks where normally they'd be changed - see cap_bprm_set_creds()). The following sequence of events now happens: (a) At the start of do_execve, the current task's cred_exec_mutex is locked to prevent PTRACE_ATTACH from obsoleting the calculation of creds that we make. (a) prepare_exec_creds() is then called to make a copy of the current task's credentials and prepare it. This copy is then assigned to bprm->cred. This renders security_bprm_alloc() and security_bprm_free() unnecessary, and so they've been removed. (b) The determination of unsafe execution is now performed immediately after (a) rather than later on in the code. The result is stored in bprm->unsafe for future reference. (c) prepare_binprm() is called, possibly multiple times. (i) This applies the result of set[ug]id binaries to the new creds attached to bprm->cred. Personality bit clearance is recorded, but now deferred on the basis that the exec procedure may yet fail. (ii) This then calls the new security_bprm_set_creds(). This should calculate the new LSM and capability credentials into *bprm->cred. This folds together security_bprm_set() and parts of security_bprm_apply_creds() (these two have been removed). Anything that might fail must be done at this point. (iii) bprm->cred_prepared is set to 1. bprm->cred_prepared is 0 on the first pass of the security calculations, and 1 on all subsequent passes. This allows SELinux in (ii) to base its calculations only on the initial script and not on the interpreter. (d) flush_old_exec() is called to commit the task to execution. This performs the following steps with regard to credentials: (i) Clear pdeath_signal and set dumpable on certain circumstances that may not be covered by commit_creds(). (ii) Clear any bits in current->personality that were deferred from (c.i). (e) install_exec_creds() [compute_creds() as was] is called to install the new credentials. This performs the following steps with regard to credentials: (i) Calls security_bprm_committing_creds() to apply any security requirements, such as flushing unauthorised files in SELinux, that must be done before the credentials are changed. This is made up of bits of security_bprm_apply_creds() and security_bprm_post_apply_creds(), both of which have been removed. This function is not allowed to fail; anything that might fail must have been done in (c.ii). (ii) Calls commit_creds() to apply the new credentials in a single assignment (more or less). Possibly pdeath_signal and dumpable should be part of struct creds. (iii) Unlocks the task's cred_replace_mutex, thus allowing PTRACE_ATTACH to take place. (iv) Clears The bprm->cred pointer as the credentials it was holding are now immutable. (v) Calls security_bprm_committed_creds() to apply any security alterations that must be done after the creds have been changed. SELinux uses this to flush signals and signal handlers. (f) If an error occurs before (d.i), bprm_free() will call abort_creds() to destroy the proposed new credentials and will then unlock cred_replace_mutex. No changes to the credentials will have been made. (2) LSM interface. A number of functions have been changed, added or removed: (*) security_bprm_alloc(), ->bprm_alloc_security() (*) security_bprm_free(), ->bprm_free_security() Removed in favour of preparing new credentials and modifying those. (*) security_bprm_apply_creds(), ->bprm_apply_creds() (*) security_bprm_post_apply_creds(), ->bprm_post_apply_creds() Removed; split between security_bprm_set_creds(), security_bprm_committing_creds() and security_bprm_committed_creds(). (*) security_bprm_set(), ->bprm_set_security() Removed; folded into security_bprm_set_creds(). (*) security_bprm_set_creds(), ->bprm_set_creds() New. The new credentials in bprm->creds should be checked and set up as appropriate. bprm->cred_prepared is 0 on the first call, 1 on the second and subsequent calls. (*) security_bprm_committing_creds(), ->bprm_committing_creds() (*) security_bprm_committed_creds(), ->bprm_committed_creds() New. Apply the security effects of the new credentials. This includes closing unauthorised files in SELinux. This function may not fail. When the former is called, the creds haven't yet been applied to the process; when the latter is called, they have. The former may access bprm->cred, the latter may not. (3) SELinux. SELinux has a number of changes, in addition to those to support the LSM interface changes mentioned above: (a) The bprm_security_struct struct has been removed in favour of using the credentials-under-construction approach. (c) flush_unauthorized_files() now takes a cred pointer and passes it on to inode_has_perm(), file_has_perm() and dentry_open(). Signed-off-by: David Howells Acked-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit d84f4f992cbd76e8f39c488cf0c5d123843923b1 Author: David Howells Date: Fri Nov 14 10:39:23 2008 +1100 CRED: Inaugurate COW credentials Inaugurate copy-on-write credentials management. This uses RCU to manage the credentials pointer in the task_struct with respect to accesses by other tasks. A process may only modify its own credentials, and so does not need locking to access or modify its own credentials. A mutex (cred_replace_mutex) is added to the task_struct to control the effect of PTRACE_ATTACHED on credential calculations, particularly with respect to execve(). With this patch, the contents of an active credentials struct may not be changed directly; rather a new set of credentials must be prepared, modified and committed using something like the following sequence of events: struct cred *new = prepare_creds(); int ret = blah(new); if (ret < 0) { abort_creds(new); return ret; } return commit_creds(new); There are some exceptions to this rule: the keyrings pointed to by the active credentials may be instantiated - keyrings violate the COW rule as managing COW keyrings is tricky, given that it is possible for a task to directly alter the keys in a keyring in use by another task. To help enforce this, various pointers to sets of credentials, such as those in the task_struct, are declared const. The purpose of this is compile-time discouragement of altering credentials through those pointers. Once a set of credentials has been made public through one of these pointers, it may not be modified, except under special circumstances: (1) Its reference count may incremented and decremented. (2) The keyrings to which it points may be modified, but not replaced. The only safe way to modify anything else is to create a replacement and commit using the functions described in Documentation/credentials.txt (which will be added by a later patch). This patch and the preceding patches have been tested with the LTP SELinux testsuite. This patch makes several logical sets of alteration: (1) execve(). This now prepares and commits credentials in various places in the security code rather than altering the current creds directly. (2) Temporary credential overrides. do_coredump() and sys_faccessat() now prepare their own credentials and temporarily override the ones currently on the acting thread, whilst preventing interference from other threads by holding cred_replace_mutex on the thread being dumped. This will be replaced in a future patch by something that hands down the credentials directly to the functions being called, rather than altering the task's objective credentials. (3) LSM interface. A number of functions have been changed, added or removed: (*) security_capset_check(), ->capset_check() (*) security_capset_set(), ->capset_set() Removed in favour of security_capset(). (*) security_capset(), ->capset() New. This is passed a pointer to the new creds, a pointer to the old creds and the proposed capability sets. It should fill in the new creds or return an error. All pointers, barring the pointer to the new creds, are now const. (*) security_bprm_apply_creds(), ->bprm_apply_creds() Changed; now returns a value, which will cause the process to be killed if it's an error. (*) security_task_alloc(), ->task_alloc_security() Removed in favour of security_prepare_creds(). (*) security_cred_free(), ->cred_free() New. Free security data attached to cred->security. (*) security_prepare_creds(), ->cred_prepare() New. Duplicate any security data attached to cred->security. (*) security_commit_creds(), ->cred_commit() New. Apply any security effects for the upcoming installation of new security by commit_creds(). (*) security_task_post_setuid(), ->task_post_setuid() Removed in favour of security_task_fix_setuid(). (*) security_task_fix_setuid(), ->task_fix_setuid() Fix up the proposed new credentials for setuid(). This is used by cap_set_fix_setuid() to implicitly adjust capabilities in line with setuid() changes. Changes are made to the new credentials, rather than the task itself as in security_task_post_setuid(). (*) security_task_reparent_to_init(), ->task_reparent_to_init() Removed. Instead the task being reparented to init is referred directly to init's credentials. NOTE! This results in the loss of some state: SELinux's osid no longer records the sid of the thread that forked it. (*) security_key_alloc(), ->key_alloc() (*) security_key_permission(), ->key_permission() Changed. These now take cred pointers rather than task pointers to refer to the security context. (4) sys_capset(). This has been simplified and uses less locking. The LSM functions it calls have been merged. (5) reparent_to_kthreadd(). This gives the current thread the same credentials as init by simply using commit_thread() to point that way. (6) __sigqueue_alloc() and switch_uid() __sigqueue_alloc() can't stop the target task from changing its creds beneath it, so this function gets a reference to the currently applicable user_struct which it then passes into the sigqueue struct it returns if successful. switch_uid() is now called from commit_creds(), and possibly should be folded into that. commit_creds() should take care of protecting __sigqueue_alloc(). (7) [sg]et[ug]id() and co and [sg]et_current_groups. The set functions now all use prepare_creds(), commit_creds() and abort_creds() to build and check a new set of credentials before applying it. security_task_set[ug]id() is called inside the prepared section. This guarantees that nothing else will affect the creds until we've finished. The calling of set_dumpable() has been moved into commit_creds(). Much of the functionality of set_user() has been moved into commit_creds(). The get functions all simply access the data directly. (8) security_task_prctl() and cap_task_prctl(). security_task_prctl() has been modified to return -ENOSYS if it doesn't want to handle a function, or otherwise return the return value directly rather than through an argument. Additionally, cap_task_prctl() now prepares a new set of credentials, even if it doesn't end up using it. (9) Keyrings. A number of changes have been made to the keyrings code: (a) switch_uid_keyring(), copy_keys(), exit_keys() and suid_keys() have all been dropped and built in to the credentials functions directly. They may want separating out again later. (b) key_alloc() and search_process_keyrings() now take a cred pointer rather than a task pointer to specify the security context. (c) copy_creds() gives a new thread within the same thread group a new thread keyring if its parent had one, otherwise it discards the thread keyring. (d) The authorisation key now points directly to the credentials to extend the search into rather pointing to the task that carries them. (e) Installing thread, process or session keyrings causes a new set of credentials to be created, even though it's not strictly necessary for process or session keyrings (they're shared). (10) Usermode helper. The usermode helper code now carries a cred struct pointer in its subprocess_info struct instead of a new session keyring pointer. This set of credentials is derived from init_cred and installed on the new process after it has been cloned. call_usermodehelper_setup() allocates the new credentials and call_usermodehelper_freeinfo() discards them if they haven't been used. A special cred function (prepare_usermodeinfo_creds()) is provided specifically for call_usermodehelper_setup() to call. call_usermodehelper_setkeys() adjusts the credentials to sport the supplied keyring as the new session keyring. (11) SELinux. SELinux has a number of changes, in addition to those to support the LSM interface changes mentioned above: (a) selinux_setprocattr() no longer does its check for whether the current ptracer can access processes with the new SID inside the lock that covers getting the ptracer's SID. Whilst this lock ensures that the check is done with the ptracer pinned, the result is only valid until the lock is released, so there's no point doing it inside the lock. (12) is_single_threaded(). This function has been extracted from selinux_setprocattr() and put into a file of its own in the lib/ directory as join_session_keyring() now wants to use it too. The code in SELinux just checked to see whether a task shared mm_structs with other tasks (CLONE_VM), but that isn't good enough. We really want to know if they're part of the same thread group (CLONE_THREAD). (13) nfsd. The NFS server daemon now has to use the COW credentials to set the credentials it is going to use. It really needs to pass the credentials down to the functions it calls, but it can't do that until other patches in this series have been applied. Signed-off-by: David Howells Acked-by: James Morris Signed-off-by: James Morris commit 745ca2475a6ac596e3d8d37c2759c0fbe2586227 Author: David Howells Date: Fri Nov 14 10:39:22 2008 +1100 CRED: Pass credentials through dentry_open() Pass credentials through dentry_open() so that the COW creds patch can have SELinux's flush_unauthorized_files() pass the appropriate creds back to itself when it opens its null chardev. The security_dentry_open() call also now takes a creds pointer, as does the dentry_open hook in struct security_operations. Signed-off-by: David Howells Acked-by: James Morris Signed-off-by: James Morris commit 88e67f3b8898c5ea81d2916dd5b8bc9c0c35ba13 Author: David Howells Date: Fri Nov 14 10:39:21 2008 +1100 CRED: Make inode_has_perm() and file_has_perm() take a cred pointer Make inode_has_perm() and file_has_perm() take a cred pointer rather than a task pointer. Signed-off-by: David Howells Acked-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit 6cc88bc45ce8043171089c9592da223dfab91823 Author: David Howells Date: Fri Nov 14 10:39:21 2008 +1100 CRED: Rename is_single_threaded() to is_wq_single_threaded() Rename is_single_threaded() to is_wq_single_threaded() so that a new is_single_threaded() can be created that refers to tasks rather than waitqueues. Signed-off-by: David Howells Reviewed-by: James Morris Signed-off-by: James Morris commit bb952bb98a7e479262c7eb25d5592545a3af147d Author: David Howells Date: Fri Nov 14 10:39:20 2008 +1100 CRED: Separate per-task-group keyrings from signal_struct Separate per-task-group keyrings from signal_struct and dangle their anchor from the cred struct rather than the signal_struct. Signed-off-by: David Howells Reviewed-by: James Morris Signed-off-by: James Morris commit 275bb41e9d058fbb327e7642f077e1beaeac162e Author: David Howells Date: Fri Nov 14 10:39:19 2008 +1100 CRED: Wrap access to SELinux's task SID Wrap access to SELinux's task SID, using task_sid() and current_sid() as appropriate. Signed-off-by: David Howells Acked-by: James Morris Signed-off-by: James Morris commit c69e8d9c01db2adc503464993c358901c9af9de4 Author: David Howells Date: Fri Nov 14 10:39:19 2008 +1100 CRED: Use RCU to access another task's creds and to release a task's own creds Use RCU to access another task's creds and to release a task's own creds. This means that it will be possible for the credentials of a task to be replaced without another task (a) requiring a full lock to read them, and (b) seeing deallocated memory. Signed-off-by: David Howells Acked-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit 86a264abe542cfececb4df129bc45a0338d8cdb9 Author: David Howells Date: Fri Nov 14 10:39:18 2008 +1100 CRED: Wrap current->cred and a few other accessors Wrap current->cred and a few other accessors to hide their actual implementation. Signed-off-by: David Howells Acked-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit f1752eec6145c97163dbce62d17cf5d928e28a27 Author: David Howells Date: Fri Nov 14 10:39:17 2008 +1100 CRED: Detach the credentials from task_struct Detach the credentials from task_struct, duplicating them in copy_process() and releasing them in __put_task_struct(). Signed-off-by: David Howells Acked-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit b6dff3ec5e116e3af6f537d4caedcad6b9e5082a Author: David Howells Date: Fri Nov 14 10:39:16 2008 +1100 CRED: Separate task security context from task_struct Separate the task security context from task_struct. At this point, the security data is temporarily embedded in the task_struct with two pointers pointing to it. Note that the Alpha arch is altered as it refers to (E)UID and (E)GID in entry.S via asm-offsets. With comment fixes Signed-off-by: Marc Dionne Signed-off-by: David Howells Acked-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit 15a2460ed0af7538ca8e6c610fe607a2cd9da142 Author: David Howells Date: Fri Nov 14 10:39:15 2008 +1100 CRED: Constify the kernel_cap_t arguments to the capset LSM hooks Constify the kernel_cap_t arguments to the capset LSM hooks. Signed-off-by: David Howells Acked-by: Serge Hallyn Acked-by: James Morris Signed-off-by: James Morris commit 1cdcbec1a3372c0c49c59d292e708fd07b509f18 Author: David Howells Date: Fri Nov 14 10:39:14 2008 +1100 CRED: Neuter sys_capset() Take away the ability for sys_capset() to affect processes other than current. This means that current will not need to lock its own credentials when reading them against interference by other processes. This has effectively been the case for a while anyway, since: (1) Without LSM enabled, sys_capset() is disallowed. (2) With file-based capabilities, sys_capset() is neutered. Signed-off-by: David Howells Acked-by: Serge Hallyn Acked-by: Andrew G. Morgan Acked-by: James Morris Signed-off-by: James Morris commit 8bbf4976b59fc9fc2861e79cab7beb3f6d647640 Author: David Howells Date: Fri Nov 14 10:39:14 2008 +1100 KEYS: Alter use of key instantiation link-to-keyring argument Alter the use of the key instantiation and negation functions' link-to-keyring arguments. Currently this specifies a keyring in the target process to link the key into, creating the keyring if it doesn't exist. This, however, can be a problem for copy-on-write credentials as it means that the instantiating process can alter the credentials of the requesting process. This patch alters the behaviour such that: (1) If keyctl_instantiate_key() or keyctl_negate_key() are given a specific keyring by ID (ringid >= 0), then that keyring will be used. (2) If keyctl_instantiate_key() or keyctl_negate_key() are given one of the special constants that refer to the requesting process's keyrings (KEY_SPEC_*_KEYRING, all <= 0), then: (a) If sys_request_key() was given a keyring to use (destringid) then the key will be attached to that keyring. (b) If sys_request_key() was given a NULL keyring, then the key being instantiated will be attached to the default keyring as set by keyctl_set_reqkey_keyring(). (3) No extra link will be made. Decision point (1) follows current behaviour, and allows those instantiators who've searched for a specifically named keyring in the requestor's keyring so as to partition the keys by type to still have their named keyrings. Decision point (2) allows the requestor to make sure that the key or keys that get produced by request_key() go where they want, whilst allowing the instantiator to request that the key is retained. This is mainly useful for situations where the instantiator makes a secondary request, the key for which should be retained by the initial requestor: +-----------+ +--------------+ +--------------+ | | | | | | | Requestor |------->| Instantiator |------->| Instantiator | | | | | | | +-----------+ +--------------+ +--------------+ request_key() request_key() This might be useful, for example, in Kerberos, where the requestor requests a ticket, and then the ticket instantiator requests the TGT, which someone else then has to go and fetch. The TGT, however, should be retained in the keyrings of the requestor, not the first instantiator. To make this explict an extra special keyring constant is also added. Signed-off-by: David Howells Reviewed-by: James Morris Signed-off-by: James Morris commit e9e349b051d98799b743ebf248cc2d986fedf090 Author: David Howells Date: Fri Nov 14 10:39:13 2008 +1100 KEYS: Disperse linux/key_ui.h Disperse the bits of linux/key_ui.h as the reason they were put here (keyfs) didn't get in. Signed-off-by: David Howells Reviewed-by: James Morris Signed-off-by: James Morris commit 76aac0e9a17742e60d408be1a706e9aaad370891 Author: David Howells Date: Fri Nov 14 10:39:12 2008 +1100 CRED: Wrap task credential accesses in the core kernel Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Al Viro Cc: linux-audit@redhat.com Cc: containers@lists.linux-foundation.org Cc: linux-mm@kvack.org Signed-off-by: James Morris commit b103c59883f1ec6e4d548b25054608cb5724453c Author: David Howells Date: Fri Nov 14 10:39:11 2008 +1100 CRED: Wrap task credential accesses in the capabilities code Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Andrew G. Morgan Signed-off-by: James Morris commit 47d804bfa1857b0edcac972c86499dcd14df3cf2 Author: David Howells Date: Fri Nov 14 10:39:11 2008 +1100 CRED: Wrap task credential accesses in the key management code Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit 8192b0c482d7078fcdcb4854341b977426f6f09b Author: David Howells Date: Fri Nov 14 10:39:10 2008 +1100 CRED: Wrap task credential accesses in the networking subsystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: netdev@vger.kernel.org Signed-off-by: James Morris commit 19d65624d38d6296dddf725d1b03baa8a491a553 Author: David Howells Date: Fri Nov 14 10:39:10 2008 +1100 CRED: Wrap task credential accesses in the UNIX socket protocol Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: netdev@vger.kernel.org Signed-off-by: James Morris commit 8f4194026bb1e3d95fedb340a2935895845ea1d5 Author: David Howells Date: Fri Nov 14 10:39:09 2008 +1100 CRED: Wrap task credential accesses in the SunRPC protocol Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Trond Myklebust Cc: J. Bruce Fields Cc: Neil Brown Cc: linux-nfs@vger.kernel.org Signed-off-by: James Morris commit c2a2b8d3b299feb7ac62c2825941dec57141f6f4 Author: David Howells Date: Fri Nov 14 10:39:08 2008 +1100 CRED: Wrap task credential accesses in the ROSE protocol Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Ralf Baechle Cc: linux-hams@vger.kernel.org Signed-off-by: James Morris commit ba95b2353cf1a7f7f236946530ccf5d0ccec6b38 Author: David Howells Date: Fri Nov 14 10:39:08 2008 +1100 CRED: Wrap task credential accesses in the netrom protocol Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Ralf Baechle Cc: linux-hams@vger.kernel.org Signed-off-by: James Morris commit f82b359023c8b7b343edef6c63322b900d9e74a1 Author: David Howells Date: Fri Nov 14 10:39:07 2008 +1100 CRED: Wrap task credential accesses in the IPv6 protocol Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: netdev@vger.kernel.org Signed-off-by: James Morris commit 734004072e05ae81c3cdd0a04ee37868fb09b71e Author: David Howells Date: Fri Nov 14 10:39:06 2008 +1100 CRED: Wrap task credential accesses in the AX25 protocol Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Ralf Baechle Cc: linux-hams@vger.kernel.org Signed-off-by: James Morris commit 414c0708d0d60eccf8345c405ac81cf32c43e901 Author: David Howells Date: Fri Nov 14 10:39:06 2008 +1100 CRED: Wrap task credential accesses in the SYSV IPC subsystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit da9592edebceeba1b9301beafe80ec8b9c2db0ce Author: David Howells Date: Fri Nov 14 10:39:05 2008 +1100 CRED: Wrap task credential accesses in the filesystem subsystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Al Viro Signed-off-by: James Morris commit 82ab8deda7fef36f067ccdeacc3b3caefc970f89 Author: David Howells Date: Fri Nov 14 10:39:04 2008 +1100 CRED: Wrap task credential accesses in the XFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: xfs@oss.sgi.com Signed-off-by: James Morris commit a5f773a65928a10eb5e5534fe6da6b427ac5b646 Author: David Howells Date: Fri Nov 14 10:39:04 2008 +1100 CRED: Wrap task credential accesses in the UFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Evgeniy Dushistov Signed-off-by: James Morris commit 7706bb39adff18a48ff98f203ffcbb00878d8589 Author: David Howells Date: Fri Nov 14 10:39:03 2008 +1100 CRED: Wrap task credential accesses in the UDF filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Jan Kara Signed-off-by: James Morris commit 26bf1946e69abf9528beda7adb4a783c439a5f7b Author: David Howells Date: Fri Nov 14 10:39:03 2008 +1100 CRED: Wrap task credential accesses in the UBIFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Artem Bityutskiy Cc: Adrian Hunter Cc: linux-mtd@lists.infradead.org Signed-off-by: James Morris commit fc7333deb741da8aafbda9ff905d3ff2c5e28a66 Author: David Howells Date: Fri Nov 14 10:39:02 2008 +1100 CRED: Wrap task credential accesses in the SYSV filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Christoph Hellwig Signed-off-by: James Morris commit e2950b178e8fa1cb0b122c212b6cd48e75e2b41f Author: David Howells Date: Fri Nov 14 10:39:01 2008 +1100 CRED: Wrap task credential accesses in the SMBFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Steven French Signed-off-by: James Morris commit 414cb209eaca52b708debc014a8085b7fbb15f14 Author: David Howells Date: Fri Nov 14 10:39:01 2008 +1100 CRED: Wrap task credential accesses in the ReiserFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: reiserfs-devel@vger.kernel.org Signed-off-by: James Morris commit 0785f4dad0f7173f3b7133e3c274fe130e8fdbc6 Author: David Howells Date: Fri Nov 14 10:39:00 2008 +1100 CRED: Wrap task credential accesses in the RAMFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit c222d53eb32ea0c9516261268a24c6f162423acd Author: David Howells Date: Fri Nov 14 10:38:59 2008 +1100 CRED: Wrap task credential accesses in the OMFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Bob Copeland Cc: linux-karma-devel@lists.sourceforge.net Signed-off-by: James Morris commit b19c2a3b839b9dfb3f258e8943dc3784ae20c7b0 Author: David Howells Date: Fri Nov 14 10:38:59 2008 +1100 CRED: Wrap task credential accesses in the OCFS2 filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Mark Fasheh Cc: Joel Becker Cc: ocfs2-devel@oss.oracle.com Signed-off-by: James Morris commit 5cc0a84076e172c18fb927781f44c6e47d6c5a06 Author: David Howells Date: Fri Nov 14 10:38:58 2008 +1100 CRED: Wrap task credential accesses in the NFS daemon Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: J. Bruce Fields Cc: Neil Brown Cc: linux-nfs@vger.kernel.org Signed-off-by: James Morris commit 48937024c65db88abafd0fb14021db31f09cd4ec Author: David Howells Date: Fri Nov 14 10:38:58 2008 +1100 CRED: Wrap task credential accesses in the NCPFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Petr Vandrovec Signed-off-by: James Morris commit 922c030f260df9d256fecea3164210e7cb2ce407 Author: David Howells Date: Fri Nov 14 10:38:57 2008 +1100 CRED: Wrap task credential accesses in the Minix filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit 8f659adfa246a1e57d0cd3f109accfe071f2d0f1 Author: David Howells Date: Fri Nov 14 10:38:56 2008 +1100 CRED: Wrap task credential accesses in the JFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Dave Kleikamp Cc: jfs-discussion@lists.sourceforge.net Signed-off-by: James Morris commit 77c70de15a74801f427ee5fb85ddfdde48ed84f2 Author: David Howells Date: Fri Nov 14 10:38:56 2008 +1100 CRED: Wrap task credential accesses in the hugetlbfs filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: William Irwin Signed-off-by: James Morris commit de395b8ac25da56893d83cd5da67cf927dfa7e4d Author: David Howells Date: Fri Nov 14 10:38:55 2008 +1100 CRED: Wrap task credential accesses in the HPFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Mikulas Patocka Signed-off-by: James Morris commit 4ac8489a7294dcf92127825d74f2d981143e825d Author: David Howells Date: Fri Nov 14 10:38:54 2008 +1100 CRED: Wrap task credential accesses in the HFSplus filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Roman Zippel Signed-off-by: James Morris commit 94c9a5ee4cc7fb7eee2a9f9e47f7ccea6b1869ff Author: David Howells Date: Fri Nov 14 10:38:54 2008 +1100 CRED: Wrap task credential accesses in the HFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Roman Zippel Signed-off-by: James Morris commit 3de7be335593859bc84a122b1338ec358bf70e9b Author: David Howells Date: Fri Nov 14 10:38:53 2008 +1100 CRED: Wrap task credential accesses in the GFS2 filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Steven Whitehouse Cc: cluster-devel@redhat.com Signed-off-by: James Morris commit 2186a71cbcddda946dd3cfccd5285e210ec3af10 Author: David Howells Date: Fri Nov 14 10:38:53 2008 +1100 CRED: Wrap task credential accesses in the FUSE filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Miklos Szeredi Cc: fuse-devel@lists.sourceforge.net Signed-off-by: James Morris commit f0ce7ee3a8ec1e80b6f460983ef1f26e603026f5 Author: David Howells Date: Fri Nov 14 10:38:52 2008 +1100 CRED: Wrap task credential accesses in the FAT filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: OGAWA Hirofumi Signed-off-by: James Morris commit 4c9c544e4987efe6643ad5692af47a0abfd4e0d1 Author: David Howells Date: Fri Nov 14 10:38:51 2008 +1100 CRED: Wrap task credential accesses in the Ext4 filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Stephen Tweedie Cc: Andrew Morton Cc: adilger@sun.com Cc: linux-ext4@vger.kernel.org Signed-off-by: James Morris commit 6a2f90e9fae0824e8b6b123f1ea7d9fff9079ef3 Author: David Howells Date: Fri Nov 14 10:38:51 2008 +1100 CRED: Wrap task credential accesses in the Ext3 filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Stephen Tweedie Cc: Andrew Morton Cc: adilger@sun.com Cc: linux-ext4@vger.kernel.org Signed-off-by: James Morris commit a8dd4d67bdf9c48c5ebfa366592fde7e2d318b4f Author: David Howells Date: Fri Nov 14 10:38:50 2008 +1100 CRED: Wrap task credential accesses in the Ext2 filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: linux-ext4@vger.kernel.org Signed-off-by: James Morris commit 4eea03539d9a8e3f5056aed690efde1f75535e7b Author: David Howells Date: Fri Nov 14 10:38:49 2008 +1100 CRED: Wrap task credential accesses in the eCryptFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Mike Halcrow Cc: Phillip Hellewell Cc: ecryptfs-devel@lists.sourceforge.net Signed-off-by: James Morris commit ec4c2aacd16672febca053109eb9ddf672108ca1 Author: David Howells Date: Fri Nov 14 10:38:49 2008 +1100 CRED: Wrap task credential accesses in the devpts filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit 97b7702cd1bdb8e89bde6c70aa983e7b82a52ec6 Author: David Howells Date: Fri Nov 14 10:38:48 2008 +1100 CRED: Wrap task credential accesses in the Coda filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Jan Harkes Cc: codalist@coda.cs.cmu.edu Signed-off-by: James Morris commit a001e5b558f25eb1e588522d73ac949b643b7a37 Author: David Howells Date: Fri Nov 14 10:38:47 2008 +1100 CRED: Wrap task credential accesses in the CIFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Steve French Cc: linux-cifs-client@lists.samba.org Signed-off-by: James Morris commit 1109b07b7dcb938de7a0d65efc1b4739dc4e9787 Author: David Howells Date: Fri Nov 14 10:38:47 2008 +1100 CRED: Wrap task credential accesses in the BFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Tigran A. Aivazian Signed-off-by: James Morris commit 0eb790e3a2d872192af8ceff2cabff8594c56440 Author: David Howells Date: Fri Nov 14 10:38:46 2008 +1100 CRED: Wrap task credential accesses in the autofs4 filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Ian Kent Cc: autofs@linux.kernel.org Signed-off-by: James Morris commit 73c646e4afb658e601a46bf1b57925450307a119 Author: David Howells Date: Fri Nov 14 10:38:45 2008 +1100 CRED: Wrap task credential accesses in the autofs filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: H. Peter Anvin Cc: autofs@linux.kernel.org Signed-off-by: James Morris commit 215599815d8977a4338fbd27d6fe2c1721200197 Author: David Howells Date: Fri Nov 14 10:38:45 2008 +1100 CRED: Wrap task credential accesses in the AFFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Roman Zippel Signed-off-by: James Morris commit f8b9d53a31dca2c1185232c5fe2731d99cc963c8 Author: David Howells Date: Fri Nov 14 10:38:44 2008 +1100 CRED: Wrap task credential accesses in 9P2000 filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Reviewed-by: Eric Van Hensbergen Cc: Ron Minnich Cc: Latchesar Ionkov Cc: v9fs-developer@lists.sourceforge.net Signed-off-by: James Morris commit cd80ca8a03fd712b046028c1f66e10f3aec43eee Author: David Howells Date: Fri Nov 14 10:38:43 2008 +1100 CRED: Wrap task credential accesses in the USB driver Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Greg Kroah-Hartman Cc: linux-usb@vger.kernel.org Signed-off-by: James Morris commit ee9785ada3573700efe77b78c03d4e26a4e1bf26 Author: David Howells Date: Fri Nov 14 10:38:43 2008 +1100 CRED: Wrap task credential accesses in the network device drivers Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: netdev@vger.kernel.org Signed-off-by: James Morris commit 0e164b685cab357546a9a09ef234922b82ecbfaf Author: David Howells Date: Fri Nov 14 10:38:42 2008 +1100 CRED: Wrap task credential accesses in the ISDN drivers Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Karsten Keil Cc: isdn4linux@listserv.isdn4linux.de Signed-off-by: James Morris commit 66303bce9b924e35e435d35409d3abc371755767 Author: David Howells Date: Fri Nov 14 10:38:41 2008 +1100 CRED: Wrap task credential accesses in the tty driver Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Alan Cox Signed-off-by: James Morris commit b0fafa816ece0080771355de6158b4dfa8531a95 Author: David Howells Date: Fri Nov 14 10:38:41 2008 +1100 CRED: Wrap task credential accesses in the block loopback driver Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Jens Axboe Signed-off-by: James Morris commit 350b4da71f8326b9319ada7b701f2bce2e1285b7 Author: David Howells Date: Fri Nov 14 10:38:40 2008 +1100 CRED: Wrap task credential accesses in the x86 arch Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Thomas Gleixner Cc: Ingo Molnar Cc: H. Peter Anvin Signed-off-by: James Morris commit e54237053204caebacb3eda3d37363f1a6118707 Author: David Howells Date: Fri Nov 14 10:38:39 2008 +1100 CRED: Wrap task credential accesses in the S390 arch Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Martin Schwidefsky Cc: Heiko Carstens Cc: linux-s390@vger.kernel.org Signed-off-by: James Morris commit 1330deb0f6e89525c8e9fcbd6b13522c9243bfc0 Author: David Howells Date: Fri Nov 14 10:38:39 2008 +1100 CRED: Wrap task credential accesses in the PowerPC arch Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Benjamin Herrenschmidt Cc: Paul Mackerras Cc: linuxppc-dev@ozlabs.org Signed-off-by: James Morris commit 25e15731af0c8d7adc58f72327dab7293857129f Author: David Howells Date: Fri Nov 14 10:38:38 2008 +1100 CRED: Wrap task credential accesses in the PA-RISC arch Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Kyle McMartin Cc: Matthew Wilcox Cc: Grant Grundler Cc: linux-parisc@vger.kernel.org Signed-off-by: James Morris commit b4212737a39e4cfb0fb66769acbc0bd182a93253 Author: David Howells Date: Fri Nov 14 10:38:37 2008 +1100 CRED: Wrap task credential accesses in the MIPS arch Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Ralf Baechle Cc: linux-mips@linux-mips.org Signed-off-by: James Morris commit ef81ee9855d6c605ed6090a8018c78572cc68b5c Author: David Howells Date: Fri Nov 14 10:38:37 2008 +1100 CRED: Wrap task credential accesses in the IA64 arch Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Tony Luck Cc: linux-ia64@vger.kernel.org Signed-off-by: James Morris commit d1aaf8cf8afe70a8c2235a565885291fe290c57c Author: Stephen Hemminger Date: Thu Nov 13 08:33:00 2008 -0800 tracing/fastboot: put error message on stderr Since this scripts output is usually redirected, put error messages on standard error and exit with error code if no data is found. Signed-off-by: Stephen Hemminger Acked-by: Arjan van de Ven Signed-off-by: Ingo Molnar commit b3535c6390f27d04273e4eee0bc687f171fbf5f4 Author: walimis Date: Fri Nov 14 00:21:02 2008 +0800 ftrace: remove unnecessary if condition of __unregister_ftrace_function Because it has goto out before ftrace_list == &ftrace_list_end, that's to say, we never meet this condition. Signed-off-by: walimis Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit cd80bc6f4811b48eb68716c8255bf7e5f0006caa Merge: c4da29ca08e09ed41a2030c1f7b5860f116573be 6a12afb5640217454cad21e8cf9a74b038fa3717 Author: Takashi Iwai Date: Thu Nov 13 14:38:00 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda Conflicts: sound/pci/hda/patch_sigmatel.c commit 0b6048561d5f505e3a027a519a6d0f488ba9a2bb Author: Jarkko Nikula Date: Wed Nov 12 17:05:51 2008 +0200 ASoC: OMAP: Add more supported sample rates into McBSP DAI driver Originally it was put too tight limits to support only 44.1 kHz and 48 kHz sample rates in McBSP DAI driver. Extend it now to 8 kHz - 96 kHz. With 96 kHz and 2*16 bits, bit clock is 3.072 MHz < 3.125 MHz (I2S max?). Tested on Nokia N810 with TVL320AIC33 from rates 8 - 96 kHz and on Texas Instruments Beagle with TWL4030 from rates 8 - 48 kHz. Signed-off-by: Jarkko Nikula Acked-by: Steve Sakoman Acked-by: Arun KS Signed-off-by: Mark Brown commit bbba944410310181de14a5c60a7c161ff2447dd9 Author: Jarkko Nikula Date: Wed Nov 12 17:05:41 2008 +0200 ASoC: Fix supported sample rates of TWL4030 audio codec TWL4030 currently supports rates between 8 kHz and 48 kHz and sets the codec mode register accordingly in twl4030_hw_params. Expose this info so that ASoC can match other rates than 44.1 kHz or 48 kHz as well. Signed-off-by: Jarkko Nikula Acked-by: Steve Sakoman Signed-off-by: Mark Brown commit c4da29ca08e09ed41a2030c1f7b5860f116573be Author: Yang, Libin Date: Thu Nov 13 11:07:07 2008 +0100 ALSA: hda - support detecting HD Audio devices with PCI class code The patch uses HD Audio PCI class code to detect AMD HD Audio cards. Signed-off-by: Libin Yang Signed-off-by: Takashi Iwai commit 12ef7d448613ead2babd41c3ebfa1fe03c20edef Author: Steven Rostedt Date: Wed Nov 12 17:52:38 2008 -0500 ftrace: CPU buffer start annotation clean ups Impact: better handling of CPU buffer start annotation Because of the confusion with the per CPU buffers wrapping where one CPU might be more active at the end of the trace than the other CPUs causing that one CPU to have a shorter history. Kernel developers were confused by the "missing" data of that one CPU at the beginning of the trace output. An annotation was added to the trace output to show that the buffer had started: # tracer: function # # TASK-PID CPU# TIMESTAMP FUNCTION # | | | | | ##### CPU 3 buffer started #### -0 [003] 158.192959: smp_apic_timer_interrupt [...] -0 [003] 161.556520: default_idle ##### CPU 1 buffer started #### -0 [001] 161.592494: hrtimer_force_reprogram [etc] But this annotation gets a bit messy when tracers do not fill the buffers. This patch does a couple of things: One) it adds a flag to trace_options to disable these annotations Two) it does not annotate if the tracer did not overflow its buffer. This makes the output much cleaner. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit ee6bce52276c0717ed3e63296e5d9465d339e923 Author: Steven Rostedt Date: Wed Nov 12 17:52:37 2008 -0500 ftrace: rename iter_ctrl to trace_options Impact: rename file /debug/tracing/iter_ctrl to /debug/tracing/trace_options The original ftrace had a file called "iter_ctrl" that would control the way the output was iterated. But this file grew into a catch all for different trace options. This patch renames the file from iter_ctrl to trace_options to reflect this change. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 1696b2b0f44a8d42f3e6b1ea90c21790871c04d9 Author: Steven Rostedt Date: Thu Nov 13 00:09:35 2008 -0500 ftrace: show buffer size in kilobytes Impact: change the units of buffer_size_kb to kilobytes This patch changes the units of the buffer_size_kb file to kilobytes. Reading and writing to the file uses kilobytes as units. To help users to know what units are used, the output of the file now looks like: # cat /debug/tracing/buffer_size_kb 1408 Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit a94c80e78bc9f4493ffc25a02d5d7bcd93c399d0 Author: Steven Rostedt Date: Wed Nov 12 17:52:36 2008 -0500 ftrace: rename trace_entries to buffer_size_kb Impact: rename of debugfs file trace_entries to buffer_size_kb The original ftrace had fixed size entries, and the number of entries was shown and modified via the file called trace_entries. By converting to the unified trace buffer, we now allow for variable size entries which makes the meaning of trace_entries pointless. Since trace_size might be confused to the size of the trace, this patch names it "buffer_size_kb" (thanks to Arjan van de Ven for this idea). [ mingo@elte.hu: changed from buffer_size to buffer_size_kb ] ( Note, the units are still bytes - the next patch changes that, to keep the wide rename patch separate from the unit-change patch. ) Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 24de38620dd3504782c90c0892eef888d0c351e9 Merge: 94b80ffd650b22e1fd493ccf6bad7efda4b8ea85 68f96c0c889b55bf62eee98e859cb686f8850188 1dc1c6adf38bc5799d1594681645ced40ced4b6b 47e74f2ba8fbf9fb1378e2524e6cfdc2fb37f160 Author: Ingo Molnar Date: Thu Nov 13 09:48:03 2008 +0100 Merge branches 'tracing/branch-tracer', 'tracing/fastboot', 'tracing/function-return-tracer' and 'tracing/urgent' into tracing/core commit 524ad0a79126efabf58d0a49eace6155ab5b4549 Author: Wang Chen Date: Wed Nov 12 23:39:10 2008 -0800 netdevice: safe convert to netdev_priv() #part-4 We have some reasons to kill netdev->priv: 1. netdev->priv is equal to netdev_priv(). 2. netdev_priv() wraps the calculation of netdev->priv's offset, obviously netdev_priv() is more flexible than netdev->priv. But we cann't kill netdev->priv, because so many drivers reference to it directly. This patch is a safe convert for netdev->priv to netdev_priv(netdev). Since all of the netdev->priv is only for read. But it is too big to be sent in one mail. I split it to 4 parts and make every part smaller than 100,000 bytes, which is max size allowed by vger. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 8f15ea42b64941001a401cf855a0869e24f3a845 Author: Wang Chen Date: Wed Nov 12 23:38:36 2008 -0800 netdevice: safe convert to netdev_priv() #part-3 We have some reasons to kill netdev->priv: 1. netdev->priv is equal to netdev_priv(). 2. netdev_priv() wraps the calculation of netdev->priv's offset, obviously netdev_priv() is more flexible than netdev->priv. But we cann't kill netdev->priv, because so many drivers reference to it directly. This patch is a safe convert for netdev->priv to netdev_priv(netdev). Since all of the netdev->priv is only for read. But it is too big to be sent in one mail. I split it to 4 parts and make every part smaller than 100,000 bytes, which is max size allowed by vger. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 4cf1653aa90c6320dc8032443b5e322820aa28b1 Author: Wang Chen Date: Wed Nov 12 23:38:14 2008 -0800 netdevice: safe convert to netdev_priv() #part-2 We have some reasons to kill netdev->priv: 1. netdev->priv is equal to netdev_priv(). 2. netdev_priv() wraps the calculation of netdev->priv's offset, obviously netdev_priv() is more flexible than netdev->priv. But we cann't kill netdev->priv, because so many drivers reference to it directly. This patch is a safe convert for netdev->priv to netdev_priv(netdev). Since all of the netdev->priv is only for read. But it is too big to be sent in one mail. I split it to 4 parts and make every part smaller than 100,000 bytes, which is max size allowed by vger. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 454d7c9b14e20fd1949e2686e9de4a2926e01476 Author: Wang Chen Date: Wed Nov 12 23:37:49 2008 -0800 netdevice: safe convert to netdev_priv() #part-1 We have some reasons to kill netdev->priv: 1. netdev->priv is equal to netdev_priv(). 2. netdev_priv() wraps the calculation of netdev->priv's offset, obviously netdev_priv() is more flexible than netdev->priv. But we cann't kill netdev->priv, because so many drivers reference to it directly. This patch is a safe convert for netdev->priv to netdev_priv(netdev). Since all of the netdev->priv is only for read. But it is too big to be sent in one mail. I split it to 4 parts and make every part smaller than 100,000 bytes, which is max size allowed by vger. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 7a12122c7a00347da9669cfcde82954c9e3d6f5e Author: Arnaud Ebalard Date: Wed Nov 12 23:28:15 2008 -0800 net: Remove unused parameter of xfrm_gen_index() In commit 2518c7c2b3d7f0a6b302b4efe17c911f8dd4049f ("[XFRM]: Hash policies when non-prefixed."), the last use of xfrm_gen_policy() first argument was removed, but the argument was left behind in the prototype. Signed-off-by: Arnaud Ebalard Acked-by: Herbert Xu Signed-off-by: David S. Miller commit 2378982487c492541d17adc0a870e7e83b07ba43 Author: Alexey Dobriyan Date: Wed Nov 12 23:25:32 2008 -0800 net: ifdef struct sock::sk_async_wait_queue Every user is under CONFIG_NET_DMA already, so ifdef field as well. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 3a95cb972bb0eb80dfdb42f11628e6d58bcdde29 Author: Wu Fengguang Date: Thu Nov 13 10:19:38 2008 +0800 ALSA: handle SiI1392 HDMI codec in patch_intelhdmi.c Move the handling of SiI1392 HDMI codec from patch_atihdmi.c to patch_intelhdmi.c, which makes our ASUS P5E-VM HDMI board work. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit e4412cb8a6b4190cf73ae44c859fd7e3727d8b13 Author: Michael Chan Date: Wed Nov 12 16:03:05 2008 -0800 bnx2: Update version to 1.8.2. Signed-off-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit 40105c0b0753515711318db87d36c8338dc74490 Author: Michael Chan Date: Wed Nov 12 16:02:45 2008 -0800 bnx2: Reorganize timeout constants. Move all related timeout constants to the same location. BNX2 prefix is also added to make them more consistent. Signed-off-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit d8026d939495c105cf747c0196a8fa738cf2ad20 Author: Michael Chan Date: Wed Nov 12 16:02:20 2008 -0800 bnx2: Set rx buffer water marks based on MTU. The default rx buffer water marks for XOFF/XON are for 1500 MTU. At larger MTUs, these water marks need to be adjusted for effective flow control. Signed-off-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit 5ec6d7bf195c2e70003ff30e4f51390ef7e85a31 Author: Michael Chan Date: Wed Nov 12 16:01:41 2008 -0800 bnx2: Restrict WoL support. On some quad-port cards that cannot support WoL on all ports due to excessive power consumption, the driver needs to restrict WoL on some ports by checking VAUX_PRESET bit. Signed-off-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit 1caacecb7cb2b72e798f06a32b5061075cf397fa Author: Michael Chan Date: Wed Nov 12 16:01:12 2008 -0800 bnx2: Add PCI ID for 5716S. Signed-off-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit 1dc1c6adf38bc5799d1594681645ced40ced4b6b Author: Frederic Weisbecker Date: Wed Nov 12 22:49:23 2008 +0100 tracing/function-return-tracer: call prepare_ftrace_return by registers Impact: Optimize a bit the function return tracer This patch changes the calling convention of prepare_ftrace_return to pass its arguments by register. This will optimize it a bit and prepare it to support dynamic tracing. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 62d59d17a5f98edb48b171742dfa531488802f07 Author: Frederic Weisbecker Date: Wed Nov 12 22:47:54 2008 +0100 tracing/function-return-tracer: make the function return tracer lockless Impact: remove spinlocks and irq disabling in function return tracer. I've tried to figure out all of the race condition that could happen when the tracer pushes or pops a return address trace to/from the current thread_info. Theory: _ One thread can only execute on one cpu at a time. So this code doesn't need to be SMP-safe. Just drop the spinlock. _ The only race could happen between the current thread and an interrupt. If an interrupt is raised, it will increase the index of the return stack storage and then execute until the end of the tracing to finally free the index it used. We don't need to disable irqs. This is theorical. In practice, I've tested it with a two-core SMP and had no problem at all. Perhaps -tip testing could confirm it. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 94b80ffd650b22e1fd493ccf6bad7efda4b8ea85 Author: Steven Rostedt Date: Wed Nov 12 16:18:45 2008 -0500 ftrace: rename trace_unlikely.c file Impact: File name change of trace_unlikely.c The "unlikely" name for the tracer is quite ugly. We renamed all the parts of it to "branch" and now it is time to rename the file too. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 80e5ea4506791af206266c5921c97f11d3b17866 Author: Steven Rostedt Date: Wed Nov 12 15:24:24 2008 -0500 ftrace: add tracer called branch Impact: added new branch tracer Currently the tracing of branch profiling (unlikelys and likelys hit) is only activated by the iter_ctrl. This patch adds a tracer called "branch" that will just trace the branch profiling. The advantage of adding this tracer is that it can be added to the ftrace selftests on startup. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 9f029e83e968e5661d7be045bbcb620dbb909938 Author: Steven Rostedt Date: Wed Nov 12 15:24:24 2008 -0500 ftrace: rename unlikely iter_ctrl to branch Impact: rename of iter_ctrl unlikely to branch The unlikely name is ugly. This patch converts the iter_ctrl command "unlikely" and "nounlikely" to "branch" and "nobranch" respectively. It also renames a lot of internal functions to use "branch" instead of "unlikely". Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 2ed84eeb8808cf3c9f039213ca137ffd7d753f0e Author: Steven Rostedt Date: Wed Nov 12 15:24:24 2008 -0500 trace: rename unlikely profiler to branch profiler Impact: name change of unlikely tracer and profiler Ingo Molnar suggested changing the config from UNLIKELY_PROFILE to BRANCH_PROFILING. I never did like the "unlikely" name so I went one step farther, and renamed all the unlikely configurations to a "BRANCH" variant. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 8652cb4b0d87accbe78725fd2a13be2787059649 Author: Prarit Bhargava Date: Wed Nov 12 13:35:00 2008 -0500 x86: warn of incorrect cpu_khz on AMD systems Impact: add debug check If none of the perfctrs are free when calculating cpu_khz we default to using ctr 3 (ie, we just choose 3). This may lead to an incorrect tsc freq value which can cause the system to be unstable. To aid in future debugging, WARN the user of a potential problem. Signed-off-by: Prarit Bhargava Signed-off-by: Ingo Molnar commit 8665596ec05498525014436520b316ba174a068a Author: H. Peter Anvin Date: Wed Nov 12 10:27:35 2008 -0800 x86: fix up the new IRQ code for older versions of gas Older versions of gas don't implement the C-style != operator, they instead want the Pascal-style <> operator. Change != to <> so we don't break compilation with those old versions of gas. Signed-off-by: H. Peter Anvin commit 68f96c0c889b55bf62eee98e859cb686f8850188 Author: Stephen Hemminger Date: Wed Nov 12 10:21:01 2008 -0800 tracing/fastboot: fix perlcritic warning Impact: cleanup Fix the following warning from the perl syntax checking tool perlcritic. This tool is a lint like tool that checks for perl best practices. Loop iterator is not lexical at line 113, column 1. See page 108 of PBP. (Severity: 5) Signed-off-by: Stephen Hemminger Signed-off-by: Ingo Molnar commit c415b3dce30dfb41234e118662e8720f47343a4f Author: Eduardo Habkost Date: Wed Nov 12 11:34:44 2008 -0200 x86: disable IRQs before doing anything on nmi_shootdown_cpus() Impact: make nmi_shootdown_cpus() callable from preemptible context We need to know on which CPU we are running on, and we don't want to be preempted while doing this. Signed-off-by: Eduardo Habkost Signed-off-by: Ingo Molnar commit bb8dd270e62217e2d2172094c6c352c4ddc0a127 Author: Eduardo Habkost Date: Wed Nov 12 11:34:43 2008 -0200 x86: make nmi_shootdown_cpus() available on !SMP and !X86_LOCAL_APIC Impact: widen nmi_shootdown_cpus() availability The X86_LOCAL_APIC #ifdef was for kdump. For !SMP, the function simply does nothing. Signed-off-by: Eduardo Habkost Signed-off-by: Ingo Molnar commit 2ddded213895e41b9cfe1c084127e6c01632ac1a Author: Eduardo Habkost Date: Wed Nov 12 11:34:42 2008 -0200 x86: move nmi_shootdown_cpus() to reboot.c Impact: make nmi_shootdown_cpus() available to the rest of the x86 platform Now nmi_shootdown_cpus() is ready to be used by non-kdump code also. Move it to reboot.c. Signed-off-by: Eduardo Habkost Signed-off-by: Ingo Molnar commit c370e5e089adfd5b1b863f3464cccae9ebf33cca Author: Eduardo Habkost Date: Wed Nov 12 11:34:41 2008 -0200 x86 kdump: make nmi_shootdown_cpus() non-static Impact: make API available to the rest of x86 platform code Add prototype to asm/reboot.h. Signed-off-by: Eduardo Habkost Signed-off-by: Ingo Molnar commit 8e294786316aca41c66b8b73ba1ee74a4ae7d452 Author: Eduardo Habkost Date: Wed Nov 12 11:34:40 2008 -0200 x86 kdump: make kdump_nmi_callback() a function ptr on crash_nmi_callback() Impact: extend nmi_shootdown_cpus() with a callback The reboot code will use a different function on crash_nmi_callback(). Adding a function pointer parameter to nmi_shootdown_cpus() for that. Signed-off-by: Eduardo Habkost Signed-off-by: Ingo Molnar commit d1e7b91cfaa8fc5ed736dcfb8beb5134a2385228 Author: Eduardo Habkost Date: Wed Nov 12 11:34:39 2008 -0200 x86 kdump: create kdump_nmi_shootdown_cpus() Impact: cleanup For the kdump-specific code that was living on nmi_shootdown_cpus(). Signed-off-by: Eduardo Habkost Signed-off-by: Ingo Molnar commit b2bbe71b829564fb65a6bc7e1e25e02d70cffce8 Author: Eduardo Habkost Date: Wed Nov 12 11:34:38 2008 -0200 x86 kdump: move crashing_cpu assignment to nmi_shootdown_cpus() Impact: cleanup This variable will be moved to non-kdump-specific code. Signed-off-by: Eduardo Habkost Signed-off-by: Ingo Molnar commit a7d41820f683c35b53af719210a51f6aa0f86a6a Author: Eduardo Habkost Date: Wed Nov 12 11:34:37 2008 -0200 x86 kdump: extract kdump-specific code from crash_nmi_callback() Impact: cleanup The NMI CPU-halting code will be used on non-kdump cases, also (e.g. emergency_reboot when virtualization is enabled). Signed-off-by: Eduardo Habkost Signed-off-by: Ingo Molnar commit fd64138c0eff8351b93ef99f7da929bb8a49b9ed Author: Jaroslav Kysela Date: Wed Nov 12 16:53:47 2008 +0100 ALSA: include/sound/info.h - coding style changed Change coding style to be more acceptable by checkpatch.pl. Signed-off-by: Jaroslav Kysela Signed-off-by: Takashi Iwai commit 972d4c50fbbb1b9c10293ff90e4e1d45e7fb21ac Author: Jaroslav Kysela Date: Wed Nov 12 16:37:48 2008 +0100 ALSA: hdsp/hdspm: remove card->id from rawmidi device name The card->id (card text identification) can be changed at runtime. It might be confusing to have old text identification in device name. Signed-off-by: Jaroslav Kysela Signed-off-by: Takashi Iwai commit c2eb9c4ea383aee154e7139395872c4da629e715 Author: Jaroslav Kysela Date: Wed Nov 12 16:31:37 2008 +0100 ALSA: when card identification is changed, change also /proc/asound symlink Signed-off-by: Jaroslav Kysela Signed-off-by: Takashi Iwai commit 9fb6198e8c574c6547fbfac0ae1eaf7894ddfdcc Author: Jaroslav Kysela Date: Tue Nov 11 16:51:02 2008 +0100 ALSA: add /sys/class/sound/card#/id (r/w) and card#/number (r/o) files For udev, we need a way to rename soundcard names. The soundcard numbers (indexes) are hardwired but we have a text identification which can be changed at run-time. The ALSA user space tools already allow using of this text identification. Signed-off-by: Jaroslav Kysela Signed-off-by: Takashi Iwai commit eb42c75878e4d13941dcbcf2ef1027c257b099a6 Merge: 9868ee63b896ee4d2ceb8c292e88d7f4e66caaf9 f21f237cf55494c3a4209de323281a3b0528da10 Author: Ingo Molnar Date: Wed Nov 12 15:43:39 2008 +0100 Merge branch 'linus' into x86/crashdump commit 11843ee4d5ee130b84de01c019dde7bf0a3eca78 Author: Takashi Iwai Date: Wed Nov 12 15:18:41 2008 +0100 ALSA: powermac - Rename mic-analog loopback mixer element PCM Playback Volume:1 is actually assigned to a mic loopback volume on iBook G4. Let's rename it. Signed-off-by: Takashi Iwai commit 68d119f0a66f7e3663304343b072e56a2693446b Author: Ingo Molnar Date: Wed Nov 12 14:09:30 2008 +0100 tracing: finetune branch-tracer output Steve suggested the to change the output from this: > bash-3471 [003] 357.014755: [ MISS ] sched_info_dequeued:sched_stats.h:177 > bash-3471 [003] 357.014756: [ .... ] update_curr:sched_fair.c:489 > bash-3471 [003] 357.014758: [ .... ] calc_delta_fair:sched_fair.c:411 to this: > bash-3471 [003] 357.014755: [ MISS ] sched_info_dequeued:sched_stats.h:177 > bash-3471 [003] 357.014756: [ ok ] update_curr:sched_fair.c:489 > bash-3471 [003] 357.014758: [ ok ] calc_delta_fair:sched_fair.c:411 as it makes it clearer to the user what it means exactly. Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 2b7d0390a6d6d595f43ea3806639664afe5b9ebe Author: Ingo Molnar Date: Wed Nov 12 13:17:38 2008 +0100 tracing: branch tracer, fix vdso crash Impact: fix bootup crash the branch tracer missed arch/x86/vdso/vclock_gettime.c from disabling tracing, which caused such bootup crashes: [ 201.840097] init[1]: segfault at 7fffed3fe7c0 ip 00007fffed3fea2e sp 000077 also clean up the ugly ifdefs in arch/x86/kernel/vsyscall_64.c by creating DISABLE_UNLIKELY_PROFILE facility for code to turn off instrumentation on a per file basis. Signed-off-by: Ingo Molnar commit fb0ef645f2c546f8297b2fbf9b2b8fff4a7455e8 Author: Naresh Medisetty Date: Wed Nov 12 10:26:31 2008 +0530 ASoC: DaVinci: Audio: Fix swapping of channels at start of stereo playback Fixes swapping of channels at start of stereo playback. Channel swap can be observed while playing left-only or right-only audio data. The channel swap is fixed by handling the XSYNCERR condition. Signed-off-by: Naresh Medisetty Signed-off-by: Mark Brown commit 9cc3c49ed1b1dbf6e50de4055a6773bd162f24b7 Author: Hiroshi Shimamoto Date: Tue Nov 11 19:11:39 2008 -0800 x86: ia32_signal: remove unnecessary padding Impact: reduce structure padding Remove unnecessary paddings, this saves 4 bytes. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 4a61204856e8b28e9f5489a7875cb3a60afd1e43 Author: Hiroshi Shimamoto Date: Tue Nov 11 19:09:29 2008 -0800 x86: signal_32: introduce retcode and rt_retcode Impact: cleanup Introduce retcode and rt_retcode to replace setting up frame->retcode. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit f88c4ae9f8c3939bee4337c75c7a673b5de7a8a7 Author: Ingo Molnar Date: Wed Nov 12 11:55:41 2008 +0100 tracing: branch tracer, tweak output Impact: modify the tracer output, to make it a bit easier to read Change the output from: > bash-3471 [003] 357.014755: [INCORRECT] sched_info_dequeued:sched_stats.h:177 > bash-3471 [003] 357.014756: [correct] update_curr:sched_fair.c:489 > bash-3471 [003] 357.014758: [correct] calc_delta_fair:sched_fair.c:411 to: > bash-3471 [003] 357.014755: [ MISS ] sched_info_dequeued:sched_stats.h:177 > bash-3471 [003] 357.014756: [ .... ] update_curr:sched_fair.c:489 > bash-3471 [003] 357.014758: [ .... ] calc_delta_fair:sched_fair.c:411 it's good to have fields aligned vertically, and the only important information is a prediction miss, so display only that information. Signed-off-by: Ingo Molnar commit 52f232cb720a7babb752849cbc2cab2d24021209 Author: Steven Rostedt Date: Wed Nov 12 00:14:40 2008 -0500 tracing: likely/unlikely branch annotation tracer Impact: new likely/unlikely branch tracer This patch adds a way to record the instances of the likely() and unlikely() branch condition annotations. When "unlikely" is set in /debugfs/tracing/iter_ctrl the unlikely conditions will be added to any of the ftrace tracers. The change takes effect when a new tracer is passed into the current_tracer file. For example: bash-3471 [003] 357.014755: [INCORRECT] sched_info_dequeued:sched_stats.h:177 bash-3471 [003] 357.014756: [correct] update_curr:sched_fair.c:489 bash-3471 [003] 357.014758: [correct] calc_delta_fair:sched_fair.c:411 bash-3471 [003] 357.014759: [correct] account_group_exec_runtime:sched_stats.h:356 bash-3471 [003] 357.014761: [correct] update_curr:sched_fair.c:489 bash-3471 [003] 357.014763: [INCORRECT] calc_delta_fair:sched_fair.c:411 bash-3471 [003] 357.014765: [correct] calc_delta_mine:sched.c:1279 Which shows the normal tracer heading, as well as whether the condition was correct "[correct]" or was mistaken "[INCORRECT]", followed by the function, file name and line number. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 1f0d69a9fc815db82f15722bf05227190b1d714d Author: Steven Rostedt Date: Wed Nov 12 00:14:39 2008 -0500 tracing: profile likely and unlikely annotations Impact: new unlikely/likely profiler Andrew Morton recently suggested having an in-kernel way to profile likely and unlikely macros. This patch achieves that goal. When configured, every(*) likely and unlikely macro gets a counter attached to it. When the condition is hit, the hit and misses of that condition are recorded. These numbers can later be retrieved by: /debugfs/tracing/profile_likely - All likely markers /debugfs/tracing/profile_unlikely - All unlikely markers. # cat /debug/tracing/profile_unlikely | head correct incorrect % Function File Line ------- --------- - -------- ---- ---- 2167 0 0 do_arch_prctl process_64.c 832 0 0 0 do_arch_prctl process_64.c 804 2670 0 0 IS_ERR err.h 34 71230 5693 7 __switch_to process_64.c 673 76919 0 0 __switch_to process_64.c 639 43184 33743 43 __switch_to process_64.c 624 12740 64181 83 __switch_to process_64.c 594 12740 64174 83 __switch_to process_64.c 590 # cat /debug/tracing/profile_unlikely | \ awk '{ if ($3 > 25) print $0; }' |head -20 44963 35259 43 __switch_to process_64.c 624 12762 67454 84 __switch_to process_64.c 594 12762 67447 84 __switch_to process_64.c 590 1478 595 28 syscall_get_error syscall.h 51 0 2821 100 syscall_trace_leave ptrace.c 1567 0 1 100 native_smp_prepare_cpus smpboot.c 1237 86338 265881 75 calc_delta_fair sched_fair.c 408 210410 108540 34 calc_delta_mine sched.c 1267 0 54550 100 sched_info_queued sched_stats.h 222 51899 66435 56 pick_next_task_fair sched_fair.c 1422 6 10 62 yield_task_fair sched_fair.c 982 7325 2692 26 rt_policy sched.c 144 0 1270 100 pre_schedule_rt sched_rt.c 1261 1268 48073 97 pick_next_task_rt sched_rt.c 884 0 45181 100 sched_info_dequeued sched_stats.h 177 0 15 100 sched_move_task sched.c 8700 0 15 100 sched_move_task sched.c 8690 53167 33217 38 schedule sched.c 4457 0 80208 100 sched_info_switch sched_stats.h 270 30585 49631 61 context_switch sched.c 2619 # cat /debug/tracing/profile_likely | awk '{ if ($3 > 25) print $0; }' 39900 36577 47 pick_next_task sched.c 4397 20824 15233 42 switch_mm mmu_context_64.h 18 0 7 100 __cancel_work_timer workqueue.c 560 617 66484 99 clocksource_adjust timekeeping.c 456 0 346340 100 audit_syscall_exit auditsc.c 1570 38 347350 99 audit_get_context auditsc.c 732 0 345244 100 audit_syscall_entry auditsc.c 1541 38 1017 96 audit_free auditsc.c 1446 0 1090 100 audit_alloc auditsc.c 862 2618 1090 29 audit_alloc auditsc.c 858 0 6 100 move_masked_irq migration.c 9 1 198 99 probe_sched_wakeup trace_sched_switch.c 58 2 2 50 probe_wakeup trace_sched_wakeup.c 227 0 2 100 probe_wakeup_sched_switch trace_sched_wakeup.c 144 4514 2090 31 __grab_cache_page filemap.c 2149 12882 228786 94 mapping_unevictable pagemap.h 50 4 11 73 __flush_cpu_slab slub.c 1466 627757 330451 34 slab_free slub.c 1731 2959 61245 95 dentry_lru_del_init dcache.c 153 946 1217 56 load_elf_binary binfmt_elf.c 904 102 82 44 disk_put_part genhd.h 206 1 1 50 dst_gc_task dst.c 82 0 19 100 tcp_mss_split_point tcp_output.c 1126 As you can see by the above, there's a bit of work to do in rethinking the use of some unlikelys and likelys. Note: the unlikely case had 71 hits that were more than 25%. Note: After submitting my first version of this patch, Andrew Morton showed me a version written by Daniel Walker, where I picked up the following ideas from: 1) Using __builtin_constant_p to avoid profiling fixed values. 2) Using __FILE__ instead of instruction pointers. 3) Using the preprocessor to stop all profiling of likely annotations from vsyscall_64.c. Thanks to Andrew Morton, Arjan van de Ven, Theodore Tso and Ingo Molnar for their feed back on this patch. (*) Not ever unlikely is recorded, those that are used by vsyscalls (a few of them) had to have profiling disabled. Signed-off-by: Steven Rostedt Cc: Andrew Morton Cc: Frederic Weisbecker Cc: Theodore Tso Cc: Arjan van de Ven Cc: Steven Rostedt Signed-off-by: Ingo Molnar commit cb9382e5a94e54d0356d730954396c746ae66d6e Merge: 74239072830ef3f1398edeb1bc1076fc330fd4a2 642edba5f5c545772b89907cf96134c73d6073c7 Author: Ingo Molnar Date: Wed Nov 12 11:50:51 2008 +0100 Merge branches 'tracing/fastboot', 'tracing/function-return-tracer' and 'tracing/ring-buffer' into tracing/core commit 642edba5f5c545772b89907cf96134c73d6073c7 Author: Steven Rostedt Date: Wed Nov 12 00:01:26 2008 -0500 ring-buffer: fix deadlock from reader_lock in read_start Impact: deadlock fix in ring_buffer_read_start The ring_buffer_iter_reset was called from ring_buffer_read_start where both grabbed the reader_lock. This patch separates out the internals of ring_buffer_iter_reset to its own function so that both APIs may grab the reader_lock. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 92a77aac9812d5397abbe6f1920e085e50838635 Author: James Morris Date: Wed Nov 12 21:20:00 2008 +1100 security: remove broken and useless declarations Remove broken declarations for security_capable* functions, which were not needed anyway. Signed-off-by: James Morris commit a7d26f84cb76b962217ce277c3e3a9748a26ac11 Author: Jaroslav Kysela Date: Wed Nov 12 11:02:25 2008 +0100 ALSA: Release v1.0.18a Signed-off-by: Jaroslav Kysela Signed-off-by: Takashi Iwai commit 74239072830ef3f1398edeb1bc1076fc330fd4a2 Author: Frederic Weisbecker Date: Tue Nov 11 23:24:42 2008 +0100 tracing/fastboot: Use the ring-buffer timestamp for initcall entries Impact: Split the boot tracer entries in two parts: call and return Now that we are using the sched tracer from the boot tracer, we want to use the same timestamp than the ring-buffer to have consistent time captures between sched events and initcall events. So we get rid of the old time capture by the boot tracer and split the initcall events in two parts: call and return. This way we have the ring buffer timestamp of both. An example trace: [ 27.904149584] calling net_ns_init+0x0/0x1c0 @ 1 [ 27.904429624] initcall net_ns_init+0x0/0x1c0 returned 0 after 0 msecs [ 27.904575926] calling reboot_init+0x0/0x20 @ 1 [ 27.904655399] initcall reboot_init+0x0/0x20 returned 0 after 0 msecs [ 27.904800228] calling sysctl_init+0x0/0x30 @ 1 [ 27.905142914] initcall sysctl_init+0x0/0x30 returned 0 after 0 msecs [ 27.905287211] calling ksysfs_init+0x0/0xb0 @ 1 ##### CPU 0 buffer started #### init-1 [000] 27.905395: 1:120:R + [001] 11:115:S ##### CPU 1 buffer started #### -0 [001] 27.905425: 0:140:R ==> [001] 11:115:R init-1 [000] 27.905426: 1:120:D ==> [000] 0:140:R -0 [000] 27.905431: 0:140:R + [000] 4:115:S -0 [000] 27.905451: 0:140:R ==> [000] 4:115:R ksoftirqd/0-4 [000] 27.905456: 4:115:S ==> [000] 0:140:R udevd-11 [001] 27.905458: 11:115:R + [001] 14:115:R -0 [000] 27.905459: 0:140:R + [000] 4:115:S -0 [000] 27.905462: 0:140:R ==> [000] 4:115:R udevd-11 [001] 27.905462: 11:115:R ==> [001] 14:115:R ksoftirqd/0-4 [000] 27.905467: 4:115:S ==> [000] 0:140:R -0 [000] 27.905470: 0:140:R + [000] 4:115:S -0 [000] 27.905473: 0:140:R ==> [000] 4:115:R ksoftirqd/0-4 [000] 27.905476: 4:115:S ==> [000] 0:140:R -0 [000] 27.905479: 0:140:R + [000] 4:115:S -0 [000] 27.905482: 0:140:R ==> [000] 4:115:R ksoftirqd/0-4 [000] 27.905486: 4:115:S ==> [000] 0:140:R udevd-14 [001] 27.905499: 14:120:X ==> [001] 11:115:R udevd-11 [001] 27.905506: 11:115:R + [000] 1:120:D -0 [000] 27.905515: 0:140:R ==> [000] 1:120:R udevd-11 [001] 27.905517: 11:115:S ==> [001] 0:140:R [ 27.905557107] initcall ksysfs_init+0x0/0xb0 returned 0 after 3906 msecs [ 27.905705736] calling init_jiffies_clocksource+0x0/0x10 @ 1 [ 27.905779239] initcall init_jiffies_clocksource+0x0/0x10 returned 0 after 0 msecs [ 27.906769814] calling pm_init+0x0/0x30 @ 1 [ 27.906853627] initcall pm_init+0x0/0x30 returned 0 after 0 msecs [ 27.906997803] calling pm_disk_init+0x0/0x20 @ 1 [ 27.907076946] initcall pm_disk_init+0x0/0x20 returned 0 after 0 msecs [ 27.907222556] calling swsusp_header_init+0x0/0x30 @ 1 [ 27.907294325] initcall swsusp_header_init+0x0/0x30 returned 0 after 0 msecs [ 27.907439620] calling stop_machine_init+0x0/0x50 @ 1 init-1 [000] 27.907485: 1:120:R + [000] 2:115:S init-1 [000] 27.907490: 1:120:D ==> [000] 2:115:R kthreadd-2 [000] 27.907507: 2:115:R + [001] 15:115:R -0 [001] 27.907517: 0:140:R ==> [001] 15:115:R kthreadd-2 [000] 27.907517: 2:115:D ==> [000] 0:140:R -0 [000] 27.907521: 0:140:R + [000] 4:115:S -0 [000] 27.907524: 0:140:R ==> [000] 4:115:R udevd-15 [001] 27.907527: 15:115:D + [000] 2:115:D ksoftirqd/0-4 [000] 27.907537: 4:115:S ==> [000] 2:115:R udevd-15 [001] 27.907537: 15:115:D ==> [001] 0:140:R kthreadd-2 [000] 27.907546: 2:115:R + [000] 1:120:D kthreadd-2 [000] 27.907550: 2:115:S ==> [000] 1:120:R init-1 [000] 27.907584: 1:120:R + [000] 15: 0:D init-1 [000] 27.907589: 1:120:R + [000] 2:115:S init-1 [000] 27.907593: 1:120:D ==> [000] 15: 0:R udevd-15 [000] 27.907601: 15: 0:S ==> [000] 2:115:R ##### CPU 0 buffer started #### kthreadd-2 [000] 27.907616: 2:115:R + [001] 16:115:R ##### CPU 1 buffer started #### -0 [001] 27.907620: 0:140:R ==> [001] 16:115:R kthreadd-2 [000] 27.907621: 2:115:D ==> [000] 0:140:R udevd-16 [001] 27.907625: 16:115:D + [000] 2:115:D -0 [000] 27.907628: 0:140:R + [000] 4:115:S udevd-16 [001] 27.907629: 16:115:D ==> [001] 0:140:R -0 [000] 27.907631: 0:140:R ==> [000] 4:115:R ksoftirqd/0-4 [000] 27.907636: 4:115:S ==> [000] 2:115:R kthreadd-2 [000] 27.907644: 2:115:R + [000] 1:120:D kthreadd-2 [000] 27.907647: 2:115:S ==> [000] 1:120:R init-1 [000] 27.907657: 1:120:R + [001] 16: 0:D -0 [001] 27.907666: 0:140:R ==> [001] 16: 0:R [ 27.907703862] initcall stop_machine_init+0x0/0x50 returned 0 after 0 msecs [ 27.907850704] calling filelock_init+0x0/0x30 @ 1 [ 27.907926573] initcall filelock_init+0x0/0x30 returned 0 after 0 msecs [ 27.908071327] calling init_script_binfmt+0x0/0x10 @ 1 [ 27.908165195] initcall init_script_binfmt+0x0/0x10 returned 0 after 0 msecs [ 27.908309461] calling init_elf_binfmt+0x0/0x10 @ 1 Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 3f5ec13696fd4a33bde42f385406cbb1d3cc96fd Author: Frederic Weisbecker Date: Tue Nov 11 23:21:31 2008 +0100 tracing/fastboot: move boot tracer structs and funcs into their own header. Impact: Cleanups on the boot tracer and ftrace This patch bring some cleanups about the boot tracer headers. The functions and structures of this tracer have nothing related to ftrace and should have so their own header file. Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 60a011c736e7dd09a0b01ca6a051a416f3f52ffb Merge: d06bbd669539215405874d8fe32ab65105e6c4bb 19b3e9671c5a219b8c34da2cc66e0ce7c3a501ae Author: Ingo Molnar Date: Wed Nov 12 10:17:09 2008 +0100 Merge branch 'tracing/function-return-tracer' into tracing/fastboot commit d06bbd669539215405874d8fe32ab65105e6c4bb Merge: d844222a54c33a960755b44b934cd1b01b05dceb 3e89c7bb92fc92bb964734341487798c8d497bae c1e7abbc7afc97367cd77c8f2895c2169a8f9c87 Author: Ingo Molnar Date: Wed Nov 12 10:11:37 2008 +0100 Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core Conflicts: kernel/trace/ring_buffer.c commit 90d0be2fc33b4c4e11fc596da4736189be947d99 Merge: f43aa025b7de79d6a615ea4c1e6be7e6b1cea538 d7a8943635485597ae7c6d554a8ccf3ce5a42d2d Author: Takashi Iwai Date: Wed Nov 12 10:02:04 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda Conflicts: sound/pci/hda/patch_sigmatel.c commit e42ea986e4a4cab4209d982feffcaf50f21e80e3 Author: Eric Dumazet Date: Wed Nov 12 00:54:54 2008 -0800 net: Cleanup of neighbour code Using read_pnet() and write_pnet() in neighbour code ease the reading of code. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 7a9546ee354ec6f23af403992b8c07baa50a23d2 Author: Eric Dumazet Date: Wed Nov 12 00:54:20 2008 -0800 net: ib_net pointer should depends on CONFIG_NET_NS We can shrink size of "struct inet_bind_bucket" by 50%, using read_pnet() and write_pnet() Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 8f424b5f32d78b4f353b3cddca9804808ef063eb Author: Eric Dumazet Date: Wed Nov 12 00:53:30 2008 -0800 net: Introduce read_pnet() and write_pnet() helpers This patch introduces two helpers that deal with reading and writing struct net pointers in various network structures. Their implementation depends on CONFIG_NET_NS For symmetry, both functions work with "struct net **pnet". Their usage should reduce the number of #ifdef CONFIG_NET_NS, without adding many helpers for each network structure that hold a "struct net *pointer" Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 9eca0a47dee201a73967026985b5f0a79a46bd36 Author: Gerrit Renker Date: Wed Nov 12 00:48:44 2008 -0800 dccp: Resolve dependencies of features on choice of CCID This provides a missing link in the code chain, as several features implicitly depend and/or rely on the choice of CCID. Most notably, this is the Send Ack Vector feature, but also Ack Ratio and Send Loss Event Rate (also taken care of). For Send Ack Vector, the situation is as follows: * since CCID2 mandates the use of Ack Vectors, there is no point in allowing endpoints which use CCID2 to disable Ack Vector features such a connection; * a peer with a TX CCID of CCID2 will always expect Ack Vectors, and a peer with a RX CCID of CCID2 must always send Ack Vectors (RFC 4341, sec. 4); * for all other CCIDs, the use of (Send) Ack Vector is optional and thus negotiable. However, this implies that the code negotiating the use of Ack Vectors also supports it (i.e. is able to supply and to either parse or ignore received Ack Vectors). Since this is not the case (CCID-3 has no Ack Vector support), the use of Ack Vectors is here disabled, with a comment in the source code. An analogous consideration arises for the Send Loss Event Rate feature, since the CCID-3 implementation does not support the loss interval options of RFC 4342. To make such use explicit, corresponding feature-negotiation options are inserted which signal the use of the loss event rate option, as it is used by the CCID3 code. Lastly, the values of the Ack Ratio feature are matched to the choice of CCID. The patch implements this as a function which is called after the user has made all other registrations for changing default values of features. The table is variable-length, the reserved (and hence for feature-negotiation invalid, confirmed by considering section 19.4 of RFC 4340) feature number `0' is used to mark the end of the table. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit d90ebcbfa7f5a8b4e20518c9f94c5c4e4cd3c2e5 Author: Gerrit Renker Date: Wed Nov 12 00:47:26 2008 -0800 dccp: Query supported CCIDs This provides a data structure to record which CCIDs are locally supported and three accessor functions: - a test function for internal use which is used to validate CCID requests made by the user; - a copy function so that the list can be used for feature-negotiation; - documented getsockopt() support so that the user can query capabilities. The data structure is a table which is filled in at compile-time with the list of available CCIDs (which in turn depends on the Kconfig choices). Using the copy function for cloning the list of supported CCIDs is useful for feature negotiation, since the negotiation is now with the full list of available CCIDs (e.g. {2, 3}) instead of the default value {2}. This means negotiation will not fail if the peer requests to use CCID3 instead of CCID2. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit e8ef967a54f401ac5e8637b7f7f8bddb006144c4 Author: Gerrit Renker Date: Wed Nov 12 00:43:40 2008 -0800 dccp: Registration routines for changing feature values Two registration routines, for SP and NN features, are provided by this patch, replacing a previous routine which was used for both feature types. These are internal-only routines and therefore start with `__feat_register'. It further exports the known limits of Sequence Window and Ack Ratio as symbolic constants. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit f74e91b6cca5889e667193c7e794186db73c2000 Author: Gerrit Renker Date: Wed Nov 12 00:42:58 2008 -0800 dccp: Limit feature negotiation to connection setup phase This patch limits feature (capability) negotation to the connection setup phase: 1. Although it is theoretically possible to perform feature negotiation at any time (and RFC 4340 supports this), in practice this is prohibitively complex, as it requires to put traffic on hold for each new negotiation. 2. As a byproduct of restricting feature negotiation to connection setup, the feature-negotiation retransmit timer is no longer required. This part is now mapped onto the protocol-level retransmission. Details indicating why timers are no longer needed can be found on http://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/feature_negotiation/\ implementation_notes.html This patch disables anytime negotiation, subsequent patches work out full feature negotiation support for connection setup. Signed-off-by: Gerrit Renker Signed-off-by: David S. Miller commit 6bb3ce25d05f2990c8a19adaf427531430267c1f Author: Alexey Dobriyan Date: Tue Nov 11 17:25:22 2008 -0800 net: remove struct dst_entry::entry_size Unused after kmem_cache_zalloc() conversion. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 9b739ba5e66c96938fbc07a4dbd9da5b81eac56f Author: Alexey Dobriyan Date: Tue Nov 11 16:47:44 2008 -0800 net: remove struct neigh_table::pde ->pde isn't actually needed, since name is stashed in ->id. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 14d7ca5c575853664d8fe4f225a77b8df1b7de7d Author: H. Peter Anvin Date: Tue Nov 11 16:19:48 2008 -0800 x86: attempt reboot via port CF9 if we have standard PCI ports Impact: Changes reboot behavior. If port CF9 seems to be safe to touch, attempt it before trying the keyboard controller. Port CF9 is not available on all chipsets (a significant but decreasing number of modern chipsets don't implement it), but port CF9 itself should in general be safe to poke (no ill effects if unimplemented) on any system which has PCI Configuration Method #1 or #2, as it falls inside the PCI configuration port range in both cases. No chipset without PCI is known to have port CF9, either, although an explicit "pci=bios" would mean we miss this and therefore don't use port CF9. An explicit "reboot=pci" can be used to force the use of port CF9. Signed-off-by: H. Peter Anvin commit 7e452baf6b96b5aeba097afd91501d33d390cc97 Merge: 3ac38c3a2e7dac3f8f35a56eb85c27881a4c3833 f21f237cf55494c3a4209de323281a3b0528da10 Author: David S. Miller Date: Tue Nov 11 15:43:02 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/message/fusion/mptlan.c drivers/net/sfc/ethtool.c net/mac80211/debugfs_sta.c commit 3ac38c3a2e7dac3f8f35a56eb85c27881a4c3833 Merge: eb37b41cc2274cdecfc19d371717c321fe2ab426 9757d55652f98836b9a4cac307a01f8b0232dbd9 Author: David S. Miller Date: Tue Nov 11 14:40:06 2008 -0800 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 commit 939b787130bf22887a09d8fd2641a094dcef8c22 Author: H. Peter Anvin Date: Tue Nov 11 13:51:52 2008 -0800 x86: 64 bits: shrink and align IRQ stubs Move the IRQ stub generation to assembly to simplify it and for consistency with 32 bits. Doing it in a C file with asm() statements doesn't help clarity, and it prevents some optimizations. Shrink the IRQ stubs down to just over four bytes per (we fit seven into a 32-byte chunk.) This shrinks the total icache consumption of the IRQ stubs down to an even kilobyte, if all of them are in active use. The downside is that we end up with a double jump, which could have a negative effect on some pipelines. The double jump is always inside the same cacheline on any modern chips. To get the most effect, cache-align the IRQ stubs. This makes the 64-bit code match changes already done to the 32-bit code, and should open up irqinit*.c for unification. Signed-off-by: H. Peter Anvin commit 486936cd93e99c802153b3f2f629c5ce62b8c0d4 Merge: 1c1b777a5673b57a6c0377ba60a790d05e4a0676 f21f237cf55494c3a4209de323281a3b0528da10 Author: Paul Mackerras Date: Wed Nov 12 08:43:22 2008 +1100 Merge branch 'linux-2.6' into next commit b7c6244f13d37592003b46e12500a90e9781ad9d Author: H. Peter Anvin Date: Tue Nov 11 13:24:58 2008 -0800 x86: 32 bits: shrink and align IRQ stubs Shrink the IRQ stubs on 32 bits down to just over four bytes per (we fit seven into a 32-byte chunk.) This shrinks the total icache consumption of the IRQ stubs down to an even kilobyte, if all of them are in active use. The downside is that we end up with a double jump, which could have a negative effect on some pipelines. The double jump is always inside the same cacheline on any modern chips (the exception being 486/Elan/Geode which have only 16-byte cachelines, but are unlikely to have too many interrupt sources.) To get the most effect, cache-align the IRQ stubs. Signed-off-by: H. Peter Anvin commit 4687518c4cb7807fbeff21770e309080f9eb7f2f Author: H. Peter Anvin Date: Tue Nov 11 13:03:07 2008 -0800 x86: 32 bit: interrupt stub consistency with 64 bit Don't generate interrupt stubs for interrupt vectors below FIRST_EXTERNAL_VECTOR, and make the table of interrupt vectors (interrupt[]) __initconst. Both of these changes both conserve memory and improve consistency with 64 bits. Signed-off-by: H. Peter Anvin commit 3e89c7bb92fc92bb964734341487798c8d497bae Author: Steven Rostedt Date: Tue Nov 11 15:28:41 2008 -0500 ring-buffer: clean up warn ons Impact: Restructure WARN_ONs in ring_buffer.c The current WARN_ON macros in ring_buffer.c are quite ugly. This patch cleans them up and uses a single RB_WARN_ON that returns the value of the condition. This allows the caller to abort the function if the condition is true. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 9ee670fd87b7d69c8633b94c42aadcbbcb96f28e Author: KOSAKI Motohiro Date: Tue Nov 11 11:49:01 2008 +0900 x86/doc: spelling fix for grub Impact: documentation fix I met okuji-san (GRUB maintainer) yesterday. He said GRuB isn't correct spelled and he want to fix it. Signed-off-by: KOSAKI Motohiro Signed-off-by: Ingo Molnar commit c280ea5e4c6ba0b38ed6b005150fe16a660e903b Author: Ingo Molnar Date: Sat Nov 8 13:29:45 2008 +0100 x86: fix documentation typo in arch/x86/Kconfig Impact: documentation update Chris Snook pointed out that it's Core i7, not Core 7i. Reported-by: Chris Snook Signed-off-by: Ingo Molnar commit a4c52791fa8c73e3cffe4a82865edb41e8fe8c3c Author: Jiri Slaby Date: Sat Nov 8 11:24:57 2008 +0100 x86, 64-bit: update address space documentation Impact: documentation update Commit a6523748bddd38bcec11431f57502090b6014a96 (paravirt/x86, 64-bit: move __PAGE_OFFSET to leave a space for hypervisor) changed address space without changing the documentation. Change it according to the code change -- direct mapping start: ffff810000000000 => ffff880000000000 which gives 57 TiB, something between 45 and 46 bits. Signed-off-by: Jiri Slaby Signed-off-by: Ingo Molnar commit 9757d55652f98836b9a4cac307a01f8b0232dbd9 Author: Sujith Date: Tue Nov 4 18:25:27 2008 +0530 ath9k: Fix compilation failure when RFKILL is enabled Signed-off-by: Sujith Signed-off-by: John W. Linville commit f83c9d0fe42a7544b4d4ffcebb2e6716fcfd95c0 Author: Steven Rostedt Date: Tue Nov 11 18:47:44 2008 +0100 ring-buffer: add reader lock Impact: serialize reader accesses to individual CPU ring buffers The code in the ring buffer expects only one reader at a time, but currently it puts that requirement on the caller. This is not strong enough, and this patch adds a "reader_lock" that serializes the access to the reader API of the ring buffer. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit a98f8fd24fb24fcb9a359553e64dd6aac5cf4279 Author: Thomas Gleixner Date: Thu Nov 6 01:13:39 2008 +0100 x86: apic reset counter on shutdown Impact: avoid spurious lapic timer events on shutdown The apic timer might be close to firing when it is shutdown. We can not really disable the timer - we just mask the interrupt. That way we can get an extra interrupt when it is reenabled. Set the counter to max on shutdown to avoid this. Signed-off-by: Thomas Gleixner Signed-off-by: Ingo Molnar commit d3ec5cae0921611ceae06464ef6291012dd9849f Author: Ivan Vecera Date: Tue Nov 11 14:33:44 2008 +0100 x86: call machine_shutdown and stop all CPUs in native_machine_halt Impact: really halt all CPUs on halt Function machine_halt (resp. native_machine_halt) is empty for x86 architectures. When command 'halt -f' is invoked, the message "System halted." is displayed but this is not really true because all CPUs are still running. There are also similar inconsistencies for other arches (some uses power-off for halt or forever-loop with IRQs enabled/disabled). IMO there should be used the same approach for all architectures OR what does the message "System halted" really mean? This patch fixes it for x86. Signed-off-by: Ivan Vecera Signed-off-by: Ingo Molnar commit 50ee91765e25e7967a7b69cd5cc2bcab85e2eeb8 Author: Dhaval Giani Date: Tue Nov 11 18:13:23 2008 +0530 sched/rt: removed unneeded defintion Impact: cleanup This function no longer exists, so remove the defintion. Signed-off-by: Dhaval Giani Signed-off-by: Ingo Molnar commit 934352f214b3251eb0793c1209d346595a661d80 Author: Bharata B Rao Date: Mon Nov 10 20:41:13 2008 +0530 sched: add hierarchical accounting to cpu accounting controller Impact: improve CPU time accounting of tasks under the cpu accounting controller Add hierarchical accounting to cpu accounting controller and include cpuacct documentation. Currently, while charging the task's cputime to its accounting group, the accounting group hierarchy isn't updated. This patch charges the cputime of a task to its accounting group and all its parent accounting groups. Reported-by: Srivatsa Vaddagiri Signed-off-by: Bharata B Rao Reviewed-by: Paul Menage Acked-by: Balbir Singh Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 19b3e9671c5a219b8c34da2cc66e0ce7c3a501ae Author: Ingo Molnar Date: Tue Nov 11 11:57:02 2008 +0100 tracing: function return tracer, build fix fix: arch/x86/kernel/ftrace.c: In function 'ftrace_return_to_handler': arch/x86/kernel/ftrace.c:112: error: implicit declaration of function 'cpu_clock' cpu_clock() is implicitly included via a number of ways, but its real location is sched.h. (Build failure is triggerable if enough other kernel components are turned off.) Signed-off-by: Ingo Molnar commit 066746796bd2f0a1ba210c0dded3b6ee4032692a Author: Eric Paris Date: Tue Nov 11 22:02:57 2008 +1100 Currently SELinux jumps through some ugly hoops to not audit a capbility check when determining if a process has additional powers to override memory limits or when trying to read/write illegal file labels. Use the new noaudit call instead. Signed-off-by: Eric Paris Acked-by: Stephen Smalley Signed-off-by: James Morris commit a2f2945a99057c7d44043465906c6bb63c3368a0 Author: Eric Paris Date: Tue Nov 11 22:02:54 2008 +1100 The oomkiller calculations make decisions based on capabilities. Since these are not security decisions and LSMs should not record if they fall the request they should use the new has_capability_noaudit() interface so the denials will not be recorded. Signed-off-by: Eric Paris Acked-by: Stephen Smalley Signed-off-by: James Morris commit 06112163f5fd9e491a7f810443d81efa9d88e247 Author: Eric Paris Date: Tue Nov 11 22:02:50 2008 +1100 Add a new capable interface that will be used by systems that use audit to make an A or B type decision instead of a security decision. Currently this is the case at least for filesystems when deciding if a process can use the reserved 'root' blocks and for the case of things like the oom algorithm determining if processes are root processes and should be less likely to be killed. These types of security system requests should not be audited or logged since they are not really security decisions. It would be possible to solve this problem like the vm_enough_memory security check did by creating a new LSM interface and moving all of the policy into that interface but proves the needlessly bloat the LSM and provide complex indirection. This merely allows those decisions to be made where they belong and to not flood logs or printk with denials for thing that are not security decisions. Signed-off-by: Eric Paris Acked-by: Stephen Smalley Signed-off-by: James Morris commit 637d32dc720897616e8a1a4f9e9609e29d431800 Author: Eric Paris Date: Wed Oct 29 15:42:12 2008 +1100 Capabilities: BUG when an invalid capability is requested If an invalid (large) capability is requested the capabilities system may panic as it is dereferencing an array of fixed (short) length. Its possible (and actually often happens) that the capability system accidentally stumbled into a valid memory region but it also regularly happens that it hits invalid memory and BUGs. If such an operation does get past cap_capable then the selinux system is sure to have problems as it already does a (simple) validity check and BUG. This is known to happen by the broken and buggy firegl driver. This patch cleanly checks all capable calls and BUG if a call is for an invalid capability. This will likely break the firegl driver for some situations, but it is the right thing to do. Garbage into a security system gets you killed/bugged Signed-off-by: Eric Paris Acked-by: Arjan van de Ven Acked-by: Serge Hallyn Acked-by: Andrew G. Morgan Signed-off-by: James Morris commit e68b75a027bb94066576139ee33676264f867b87 Author: Eric Paris Date: Tue Nov 11 21:48:22 2008 +1100 When the capset syscall is used it is not possible for audit to record the actual capbilities being added/removed. This patch adds a new record type which emits the target pid and the eff, inh, and perm cap sets. example output if you audit capset syscalls would be: type=SYSCALL msg=audit(1225743140.465:76): arch=c000003e syscall=126 success=yes exit=0 a0=17f2014 a1=17f201c a2=80000000 a3=7fff2ab7f060 items=0 ppid=2160 pid=2223 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="setcap" exe="/usr/sbin/setcap" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null) type=UNKNOWN[1322] msg=audit(1225743140.465:76): pid=0 cap_pi=ffffffffffffffff cap_pp=ffffffffffffffff cap_pe=ffffffffffffffff Signed-off-by: Eric Paris Acked-by: Serge Hallyn Signed-off-by: James Morris commit 3fc689e96c0c90b6fede5946d6c31075e9464f69 Author: Eric Paris Date: Tue Nov 11 21:48:18 2008 +1100 Any time fcaps or a setuid app under SECURE_NOROOT is used to result in a non-zero pE we will crate a new audit record which contains the entire set of known information about the executable in question, fP, fI, fE, fversion and includes the process's pE, pI, pP. Before and after the bprm capability are applied. This record type will only be emitted from execve syscalls. an example of making ping use fcaps instead of setuid: setcap "cat_net_raw+pe" /bin/ping type=SYSCALL msg=audit(1225742021.015:236): arch=c000003e syscall=59 success=yes exit=0 a0=1457f30 a1=14606b0 a2=1463940 a3=321b770a70 items=2 ppid=2929 pid=2963 auid=0 uid=500 gid=500 euid=500 suid=500 fsuid=500 egid=500 sgid=500 fsgid=500 tty=pts0 ses=3 comm="ping" exe="/bin/ping" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null) type=UNKNOWN[1321] msg=audit(1225742021.015:236): fver=2 fp=0000000000002000 fi=0000000000000000 fe=1 old_pp=0000000000000000 old_pi=0000000000000000 old_pe=0000000000000000 new_pp=0000000000002000 new_pi=0000000000000000 new_pe=0000000000002000 type=EXECVE msg=audit(1225742021.015:236): argc=2 a0="ping" a1="127.0.0.1" type=CWD msg=audit(1225742021.015:236): cwd="/home/test" type=PATH msg=audit(1225742021.015:236): item=0 name="/bin/ping" inode=49256 dev=fd:00 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:ping_exec_t:s0 cap_fp=0000000000002000 cap_fe=1 cap_fver=2 type=PATH msg=audit(1225742021.015:236): item=1 name=(null) inode=507915 dev=fd:00 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:ld_so_t:s0 Signed-off-by: Eric Paris Acked-by: Serge Hallyn Signed-off-by: James Morris commit 851f7ff56d9c21272f289dd85fb3f1b6cf7a6e10 Author: Eric Paris Date: Tue Nov 11 21:48:14 2008 +1100 This patch will print cap_permitted and cap_inheritable data in the PATH records of any file that has file capabilities set. Files which do not have fcaps set will not have different PATH records. An example audit record if you run: setcap "cap_net_admin+pie" /bin/bash /bin/bash type=SYSCALL msg=audit(1225741937.363:230): arch=c000003e syscall=59 success=yes exit=0 a0=2119230 a1=210da30 a2=20ee290 a3=8 items=2 ppid=2149 pid=2923 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=3 comm="ping" exe="/bin/ping" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null) type=EXECVE msg=audit(1225741937.363:230): argc=2 a0="ping" a1="www.google.com" type=CWD msg=audit(1225741937.363:230): cwd="/root" type=PATH msg=audit(1225741937.363:230): item=0 name="/bin/ping" inode=49256 dev=fd:00 mode=0104755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:ping_exec_t:s0 cap_fp=0000000000002000 cap_fi=0000000000002000 cap_fe=1 cap_fver=2 type=PATH msg=audit(1225741937.363:230): item=1 name=(null) inode=507915 dev=fd:00 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:ld_so_t:s0 Signed-off-by: Eric Paris Acked-by: Serge Hallyn Signed-off-by: James Morris commit c0b004413a46a0a5744e6d2b85220fe9d2c33d48 Author: Eric Paris Date: Tue Nov 11 21:48:10 2008 +1100 This patch add a generic cpu endian caps structure and externally available functions which retrieve fcaps information from disk. This information is necessary so fcaps information can be collected and recorded by the audit system. Signed-off-by: Eric Paris Acked-by: Serge Hallyn Signed-off-by: James Morris commit 9d36be76c55ad2c2bb29683b752b0d9ad2e4eeef Author: Eric Paris Date: Tue Nov 11 21:48:07 2008 +1100 Document the order of arguments for cap_issubset. It's not instantly clear which order the argument should be in. So give an example. Signed-off-by: Eric Paris Acked-by: Serge Hallyn Signed-off-by: James Morris commit ff9b48c3598732926fa09afd7f526981c32a48cc Author: Bharata B Rao Date: Mon Nov 10 21:34:09 2008 +0530 sched: include group statistics in /proc/sched_debug Impact: extend /proc/sched_debug info Since the statistics of a group entity isn't exported directly from the kernel, it becomes difficult to obtain some of the group statistics. For example, the current method to obtain exec time of a group entity is not always accurate. One has to read the exec times of all the tasks(/proc//sched) in the group and add them. This method fails (or becomes difficult) if we want to collect stats of a group over a duration where tasks get created and terminated. This patch makes it easier to obtain group stats by directly including them in /proc/sched_debug. Stats like group exec time would help user programs (like LTP) to accurately measure the group fairness. An example output of group stats from /proc/sched_debug: cfs_rq[3]:/3/a/1 .exec_clock : 89.598007 .MIN_vruntime : 0.000001 .min_vruntime : 256300.970506 .max_vruntime : 0.000001 .spread : 0.000000 .spread0 : -25373.372248 .nr_running : 0 .load : 0 .yld_exp_empty : 0 .yld_act_empty : 0 .yld_both_empty : 0 .yld_count : 4474 .sched_switch : 0 .sched_count : 40507 .sched_goidle : 12686 .ttwu_count : 15114 .ttwu_local : 11950 .bkl_count : 67 .nr_spread_over : 0 .shares : 0 .se->exec_start : 113676.727170 .se->vruntime : 1592.612714 .se->sum_exec_runtime : 89.598007 .se->wait_start : 0.000000 .se->sleep_start : 0.000000 .se->block_start : 0.000000 .se->sleep_max : 0.000000 .se->block_max : 0.000000 .se->exec_max : 1.000282 .se->slice_max : 1.999750 .se->wait_max : 54.981093 .se->wait_sum : 217.610521 .se->wait_count : 50 .se->load.weight : 2 Signed-off-by: Bharata B Rao Acked-by: Srivatsa Vaddagiri Acked-by: Dhaval Giani Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit a3d732f93785da17e0137210deadb4616f5536fc Author: Cliff Wickman Date: Mon Nov 10 16:16:31 2008 -0600 x86, UV: fix redundant creation of sgi_uv Impact: fix double entry creation in /proc There is a collision between two UV functions: both uv_ptc_init() and gru_proc_init() try to make /proc/sgi_uv So move it's creation to a single place: uv_system_init() Signed-off-by: Cliff Wickman Signed-off-by: Ingo Molnar commit 867f7fb3ebb831970847b179e7df5a9ab10da16d Author: Ingo Molnar Date: Tue Nov 11 11:18:14 2008 +0100 tracing, x86: function return tracer, fix assembly constraints fix: arch/x86/kernel/ftrace.c: Assembler messages: arch/x86/kernel/ftrace.c:140: Error: missing ')' arch/x86/kernel/ftrace.c:140: Error: junk `(%ebp))' after expression arch/x86/kernel/ftrace.c:141: Error: missing ')' arch/x86/kernel/ftrace.c:141: Error: junk `(%ebp))' after expression the [parent_replaced] is used in an =rm fashion, so that constraint is correct in isolation - but [parent_old] aliases register %0 and uses it in an addressing mode that is only valid with registers - so change the constraint from =rm to =r. This fixes the build failure. Signed-off-by: Ingo Molnar commit 8587b33f4adee4e7614ea7f443346c3b6bb5427a Author: Wim Van Sebroeck Date: Tue Nov 11 09:56:00 2008 +0000 [PATCH] nvram - convert PRINT_PROC to seq_file Convert the /proc/drivers/nvram file from the old PRINT_PROC macro to the new seq_file filesystem. Signed-off-by: Wim Van Sebroeck commit 971ddcf8ad3aa88e0daee6799925858e9f820cb4 Author: Wim Van Sebroeck Date: Tue Nov 11 09:44:07 2008 +0000 [PATCH] nvram - CodingStyle Bring drivers/char/nvram.c in line with the Coding Style. Signed-off-by: Wim Van Sebroeck commit f1c4be5edad3756212cbbbeab39428fe90c27109 Author: Ingo Molnar Date: Tue Nov 11 10:22:36 2008 +0100 tracing, x86: clean up FUNCTION_RET_TRACER Kconfig Impact: cleanup move FUNCTION_RET_TRACER to the X86 select section, where we have all the other options. Signed-off-by: Ingo Molnar commit 15e6cb3673ea6277999642802406a764b49391b0 Author: Frederic Weisbecker Date: Tue Nov 11 07:14:25 2008 +0100 tracing: add a tracer to catch execution time of kernel functions Impact: add new tracing plugin which can trace full (entry+exit) function calls This tracer uses the low level function return ftrace plugin to measure the execution time of the kernel functions. The first field is the caller of the function, the second is the measured function, and the last one is the execution time in nanoseconds. - v3: - HAVE_FUNCTION_RET_TRACER have been added. Each arch that support ftrace return should enable it. - ftrace_return_stub becomes ftrace_stub. - CONFIG_FUNCTION_RET_TRACER depends now on CONFIG_FUNCTION_TRACER - Return traces printing can be used for other tracers on trace.c - Adapt to the new tracing API (no more ctrl_update callback) - Correct the check of "disabled" during insertion. - Minor changes... Signed-off-by: Frederic Weisbecker Cc: Steven Rostedt Signed-off-by: Ingo Molnar commit caf4b323b02a16c92fba449952ac6515ddc76d7a Author: Frederic Weisbecker Date: Tue Nov 11 07:03:45 2008 +0100 tracing, x86: add low level support for ftrace return tracing Impact: add infrastructure for function-return tracing Add low level support for ftrace return tracing. This plug-in stores return addresses on the thread_info structure of the current task. The index of the current return address is initialized when the task is the first one (init) and when a process forks (the child). It is not needed when a task does a sys_execve because after this syscall, it still needs to return on the kernel functions it called. Note that the code of return_to_handler has been suggested by Steven Rostedt as almost all of the ideas of improvements in this V3. For purpose of security, arch/x86/kernel/process_32.c is not traced because __switch_to() changes the current task during its execution. That could cause inconsistency in the stored return address of this function even if I didn't have any crash after testing with tracing on this function enabled. Signed-off-by: Frederic Weisbecker Cc: Steven Rostedt Signed-off-by: Ingo Molnar commit d844222a54c33a960755b44b934cd1b01b05dceb Author: Ingo Molnar Date: Tue Nov 11 09:58:36 2008 +0100 Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core commit f536aafc5a2e6f0c8f1577a155e6f93db5e469f0 Author: Steven Rostedt Date: Mon Nov 10 23:07:30 2008 -0500 ring-buffer: replace most bug ons with warn on and disable buffer This patch replaces most of the BUG_ONs in the ring_buffer code with RB_WARN_ON variants. It adds some more variants as needed for the replacement. This lets the buffer die nicely and still warn the user. One BUG_ON remains in the code, and that is because it detects a bad pointer passed in by the calling function, and not a bug by the ring buffer code itself. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 5aa1ba6a6c710e747838a22d798ac97a8b248745 Author: Steven Rostedt Date: Mon Nov 10 23:07:30 2008 -0500 ftrace: prevent ftrace_special from recursion Impact: stop ftrace_special from recursion The ftrace_special is used to help debug areas of the kernel. Because of this, if it is put in certain locations, the fact that it allows recursion can become a problem if the kernel developer using does not realize that. This patch changes ftrace_special to not allow recursion into itself to make it more robust. It also changes from preempt disable interrupts disable to prevent any loss of trace entries. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit e0cb4ebcd9e5b4ddd8216c20f54445c91b1fa4b9 Merge: a309720c876d7ad2e224bfd1982c92ae4364c82e 45b86a96f17cb2900f291129b0e67287400e45b2 Author: Ingo Molnar Date: Tue Nov 11 09:40:18 2008 +0100 Merge branch 'tracing/urgent' into tracing/ftrace Conflicts: kernel/trace/trace.c commit ae1e9130bfb9ad55eb97ec3fb17a122b7a118f98 Author: Ingo Molnar Date: Tue Nov 11 09:05:16 2008 +0100 sched: rename SCHED_NO_NO_OMIT_FRAME_POINTER => SCHED_OMIT_FRAME_POINTER Impact: cleanup, change .config option name We had this ugly config name for a long time for hysteric raisons. Rename it to a saner name. We still cannot get rid of it completely, until /proc//stack usage replaces WCHAN usage for good. We'll be able to do that in the v2.6.29/v2.6.30 timeframe. Signed-off-by: Ingo Molnar commit eb37b41cc2274cdecfc19d371717c321fe2ab426 Author: Jesse Brandeburg Date: Mon Nov 10 16:48:03 2008 -0800 pktgen: add full reset functionality While testing pktgen, I found that sometimes my configurations from previous runs would be left over, particularly when going from a test with 8 threads down to a test with 4 threads. This adds new functionality to pktgen where you can call pgset "reset" and it will be just like you just insmod'ed pktgen again. Signed-off-by: Jesse Brandeburg Signed-off-by: Jeff Kirsher Signed-off-by: Robert Olsson Signed-off-by: David S. Miller commit 9b1582d4513a2102c68fe12ac1106595f3c09120 Author: Rémi Denis-Courmont Date: Mon Nov 10 16:21:05 2008 -0800 Phonet: use net_device built-in stats for GPRS Signed-off-by: Rémi Denis-Courmont Signed-off-by: David S. Miller commit fb28ad35906af2f042c94e2f9c0f898ef9acfa37 Author: Kay Sievers Date: Mon Nov 10 13:55:14 2008 -0800 net: struct device - replace bus_id with dev_name(), dev_set_name() Acked-by: Marcel Holtmann Acked-by: Greg Kroah-Hartman Signed-off-by: Kay Sievers Signed-off-by: David S. Miller commit 23779897546c1effb546ff89b89803d9d955d517 Merge: f574179b63e48f5285468b5ee40f3c480221f708 c4832467a5c8c2ae96d6dad882be4d4ab9eefad7 Author: David S. Miller Date: Mon Nov 10 13:24:44 2008 -0800 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 commit c4832467a5c8c2ae96d6dad882be4d4ab9eefad7 Author: Larry Finger Date: Fri Oct 31 09:40:44 2008 -0700 rtl8187: Change TX power settings The latest vendor driver (rtl8187B_linux_26.1036.0708.2008) has a different CCK power setting code as compared with the Linux driver. Signed-off-by: Larry Finger Tested-by: Piter Punk Signed-off-by: John W. Linville commit b2e53b338b7b4608372d070bb477f3bae3971e5a Author: David Kilroy Date: Fri Oct 31 13:35:21 2008 +0000 orinoco: Move sources to a subdirectory Keeping all the orinoco drivers in a common directory will make maintenance easier. Signed-off by: David Kilroy Signed-off-by: John W. Linville commit 5166ccd220f187b2e9edfc5f01eb49f4a0ebf586 Author: Luis R. Rodriguez Date: Thu Oct 30 13:33:56 2008 -0700 cfg80211: Add kdoc for struct regulatory_request As regulatory_request gets bigger there will be more questions of what things means, so clarify documenation for it and keep track of the special alpha2 codes we use internally and on the userspace regulatory agents. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit b219cee191e7cfe88a695a57249a295d0d5b22e9 Author: Luis R. Rodriguez Date: Thu Oct 30 13:33:55 2008 -0700 cfg80211: make use of reg macros on REG_RULE Ensure regulatory converstion macros safely accept multiple arguments and make REG_RULE() use them. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit 9c96477d10763d4314012425ecc8a3cff9e60ea9 Author: Luis R. Rodriguez Date: Thu Oct 30 13:33:53 2008 -0700 cfg80211: Add regulatory domain intersection capability There are certain scenerios where we require intersecting two regulatory domains. This adds intersection support. When we enable 802.11d support we will use this to intersect the regulatory domain from the AP's country IE and what our regulatory agent believes is correct for a country. This patch enables intersection for now in the case where the last regdomain was set by a country IE which was parsed and the user then wants to set the regulatory domain. Since we don't support country IE parsing yet this code path will not be hit, however this allows us to pave the way for 11d support. Intersection code has been tested in userspace with CRDA. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit d71aaf6053e380996e40c9ecfe39a8dced52694c Author: Luis R. Rodriguez Date: Thu Oct 30 13:33:52 2008 -0700 cfg80211: a reg rule is invalid if freq diff is 0 A regulatory rule is invalid when the frequency difference between the end of the frequency range and the start is 0. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit fc6971d491517ba15e800540ff88caa55dc65b01 Author: Jouni Malinen Date: Thu Oct 30 19:59:05 2008 +0200 mac80211_hwsim: Add support for client PS mode This introduces a debugfs file (ieee80211/phy#/hwsim/ps) that can be used to force a simulated radio into power save mode. Following values can be written into this file to change PS mode: 0 = power save disabled (constantly awake) 1 = power save enabled (drop all frames; do not send PS-Poll) 2 = power save enabled (send PS-Poll frames automatically to receive buffered unicast frames); not yet fully implemented 3 = manual PS-Poll trigger (send a single PS-Poll frame) Two different behavior for power save mode processing can be tested: - move between modes 1 and 0 (i.e., receive all buffered frames at a time) - move to mode 1 and use manual PS-Poll frames (write 3 to the 'ps' debugfs file) to fetch power save buffered frames one at a time Mode 2 (automatic PS-Poll) does not yet parse Beacon frames, but eventually, it should take a look at TIM IE and send PS-Poll if a traffic bit is set for our AID. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit fbf189273926d83d71c4c321f1215162569506ac Author: Jouni Malinen Date: Thu Oct 30 19:50:30 2008 +0200 mac80211: Allow AP mode to be enabled With the addition of basic rate set and TX queue parameter configuration and confirmation that power save buffering is working again, mac80211 is now in state that allows AP mode to be used without major problems. Consequently, it is time to allow this mode to be enabled without having to patch the kernel. AP mode requires hostapd for management frame processing and as such, configuring this mode is only allowed through cfg80211 (not with iwconfig and WEXT). Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit d61272cbb35fa1c08fe94898583d880256f2dbd3 Author: Tomas Winkler Date: Thu Oct 30 17:08:08 2008 +0200 mac80211: fix basic rates setting from association response In previous code all the rates were marked as basic. Signed-off-by: Tomas Winkler Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit ab1ef980504ca7f17b675b3a53a88956f800fce3 Author: Jouni Malinen Date: Thu Oct 30 16:59:25 2008 +0200 mac80211_hwsim: Make sure beacon_timer gets deleted It was possible to trigger a kernel panic because beacon_timer may not have been deleted in all cases when the kernel module was removed while hostapd was still running. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 318884875bdddca663ecc373c813cf8e117d9e43 Author: Jouni Malinen Date: Thu Oct 30 16:59:24 2008 +0200 nl80211: Add TX queue parameter configuration Add a new attribute, NL80211_ATTR_WIPHY_TXQ_PARAMS, that can be used with NL80211_CMD_SET_WIPHY for userspace (e.g., hostapd) to set TX queue parameters (txop, cwmin, cwmax, aifs). Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 1e898ff83c31c303f73c3893d1ac519e4d9b59e5 Author: Jouni Malinen Date: Thu Oct 30 16:59:23 2008 +0200 mac80211_hwsim: Debug info for TX queue parameters Provide detailed information on TX queue parameter changes to make it easier to debug mac80211 functionality. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 90c97a040d6b08cc4890328aa262fdc37336ab01 Author: Jouni Malinen Date: Thu Oct 30 16:59:22 2008 +0200 nl80211: Add basic rate configuration for AP mode Add a new attribute, NL80211_ATTR_BSS_BASIC_RATES, that can be used with NL80211_CMD_SET_BSS for userspace (e.g., hostapd) to set which rates are in the basic rate set. Signed-off-by: Jouni Malinen Acked-by: Johannes Berg Signed-off-by: John W. Linville commit fe63bfa3669dbdd4985ed35d9a0ed08881f62516 Author: Jouni Malinen Date: Thu Oct 30 16:59:21 2008 +0200 mac80211_hwsim: Debug info for BSS config changes Provide detailed information on BSS configuration changes to make it easier to debug mac80211 functionality. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 95f8e38deffc55f7108bcfa3e180bd5b3d53fc04 Author: Ilpo Järvinen Date: Thu Oct 30 13:43:41 2008 +0200 b43legacy: reindent misleading statement Signed-off-by: Ilpo Järvinen Signed-off-by: John W. Linville commit ccf5dd14f8a4273f40d8319e75b377edb1f5220d Author: Johannes Berg Date: Wed Oct 29 23:24:14 2008 +0100 libertas_tf: fix skb tail pointer skb->tail can't be meant here because it's not the same across 32/64 bit compilations. This means there's no way the current driver can work on 64-bit architectures. Signed-off-by: Johannes Berg Cc: stable@kernel.org [2.6.27] Signed-off-by: John W. Linville commit 9483407d09077c0bfc612c72835b1e9bbdda0a10 Author: Chr Date: Wed Oct 29 22:39:50 2008 +0100 p54: initialize all deprecated fields The new mechanism for allocing space for control frames, didn't "zero" out the payload data... However I haven't heard of any hiccups so far... Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit c8034c44851ba4c6b55ec6e6b60573cf51589be3 Author: Pavel Roskin Date: Wed Oct 29 17:31:43 2008 -0400 p54: don't report known but unhandled EEPROM codes as unknown Signed-off-by: Pavel Roskin Signed-off-by: John W. Linville commit 61780ee313846b29bfb06dfcb2f3bdf0b7ba3f66 Author: Mohamed Abbas Date: Wed Oct 29 14:05:49 2008 -0700 iwlwifi: do not call statistics from rfkill Signed-off-by: Mohamed Abbas Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit eb48dcaf57d4e9b6521aeb593fe95a36db6c2109 Author: Winkler, Tomas Date: Wed Oct 29 14:05:48 2008 -0700 iwlwifi: iwl-agn-rs: initialize rs with valid antenna This patch fix rate scaling initialization. Rate scaling was initialized always with B antenna. Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 6a63578ddf6148927a80c07a73b40ccc8f3ac8e2 Author: Emmanuel Grumbach Date: Wed Oct 29 14:05:47 2008 -0700 iwlwifi: rename double inclusion protection name in iwl-commands.h This patch change the name of the double inclusion protection in iwl-commands.h Signed-off-by: Emmanuel Grumbach Reviewed-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 5b9f8cd3eea04770ff186b853bbde1741f321866 Author: Emmanuel Grumbach Date: Wed Oct 29 14:05:46 2008 -0700 iwlwifi: rename generic iwlagn functions that had a HW specific name This patch renames functions that are generic in iwl-agn and had a iwl4965 prefix. Signed-off-by: Emmanuel Grumbach Reviewed-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 60294de3af99586bb4a205274d02a7c8b910c0c3 Author: Zhu, Yi Date: Wed Oct 29 14:05:45 2008 -0700 iwlwifi: fix priv->iw_mode setting when multiple vif are configured mac80211 supports multiple virtual interfaces for a single device. For example, a managed interface (wlan0) and a monitor interface (mon0) can exist at the same time. Thus priv->iw_mode is not sufficient to track the wireless mode any more. The patch redefines priv->iw_mode as the first interface mode (the same as priv->vif->type if priv->vif != NULL). If another monitor type interface is created later, we don't change priv->iw_mode into monitor. This way, the original interface still works. The patch also requests mac80211 to do reassociation after we change the Rx filter flags. Signed-off-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit eb4779c40549f8e0dd45c9a30f279134c9a86131 Author: Winkler, Tomas Date: Wed Oct 29 14:05:44 2008 -0700 iwlwifi: trivial removal of some 4965 remaining from iwl-agn-rs.h This patch removes 4965 prefix from comments and one function in iwl-agn-rs.h Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 9c80c50211d638555bc4b160d9ccd348e98eedad Author: Winkler, Tomas Date: Wed Oct 29 14:05:43 2008 -0700 iwlwifi: reorganize flow handler bitology This patch cleans up FH bits and adds missing register values that will be used later in TX initialization rewrite Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit c7ab5ef9bcd281135c21b4732c9be779585181be Author: Johannes Berg Date: Wed Oct 29 20:02:12 2008 +0100 b43: implement short slot and basic rate handling This implements proper short slot handling and adds code to program the hardware for the correct response rates derived from the basic rate set for the current BSS. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit bd815252720e4b667d9946d050d003ec89bda099 Author: Johannes Berg Date: Wed Oct 29 20:00:45 2008 +0100 wireless: implement basic rate helper function This adds a helper function that, given a bitmap of basic rates and a bitrate returns the response rate for this rate. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 743b97caf98036ec8ee4bfc6fc6f85ad94e04783 Author: Ivo van Doorn Date: Wed Oct 29 19:41:03 2008 +0100 rt2x00: Remove debugfs CSR access wrappers Move calculation of CSR register offset into rt2x00debug.c and remove the wrapper functions from each individual driver. (Except rt2500usb, which still needs to wrap for the different value type argument). Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit f161796700ed89b07dff2ad4ba3a932bc721af7e Author: John W. Linville Date: Fri Oct 31 16:45:15 2008 -0400 ath9k: correct warning about unintialized variable 'tid' drivers/net/wireless/ath9k/xmit.c: In function ‘ath_tx_start’: drivers/net/wireless/ath9k/xmit.c:1858: warning: ‘tid’ may be used uninitialized in this function Signed-off-by: John W. Linville commit 74508b29c51158e5b45bca13e702c68ef5c3b641 Author: Larry Finger Date: Fri Oct 31 09:54:49 2008 -0700 rtl8187: Reduce channel switch delay The latest vendor driver (rtl8187B_linux_26.1036.0708.2008) has a 10 msec delay after the call to set a new channel, but not before. Signed-off-by: Larry Finger Tested-by: Herton Ronaldo Krzesinski Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 94d4fe9824e5c62240f3ae2a33b2dd5a8a32a01b Author: Larry Finger Date: Fri Oct 31 09:54:30 2008 -0700 rtl8187: Remove primitive write delays Each of the primary write routines, rtl8187_write_phy(), rtl8225_write_bitbang(), and rtl8225_write_8051() all conclude with an msleep() command. Testing shows that these are not needed. Signed-off-by: Larry Finger Tested-by: Herton Ronaldo Krzesinski Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 946d1c22644a5de07efc1c847fb64bb0cf8f82f2 Author: Larry Finger Date: Fri Oct 31 09:54:13 2008 -0700 rtl8187: Remove msleep calls after calls to rtl8225_write Routine rtl8225_write() calls either rtl8225_write_bitbang() or rtl8225_write_8051(), both of which end with an msleep() command. As a result, a rtl8225_write() immediately followed by an msleep() is not needed. Signed-off-by: Larry Finger Tested-by: Herton Ronaldo Krzesinski Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit a3d67bc2e9e25f09151971192946fe3b68543649 Author: Larry Finger Date: Fri Oct 31 09:52:58 2008 -0700 rtl8187: Remove CCK delays Routine rtl8225_write_phy_cck() calls rtl8225_write_phy(), which concludes with a sleep of 1 msec; therefore a call to rtl8225_write_phy_cck() immediately followed by an msleep(1) is not needed. Signed-off-by: Larry Finger Tested-by: Herton Ronaldo Krzesinski Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 35cc988a5620cea03fd97e96c530e1f259ef913b Author: Larry Finger Date: Fri Oct 31 09:52:39 2008 -0700 rtl8187: Remove OFDM delays Routine rtl8225_write_phy_ofdm() calls rtl8225_write_phy(), which concludes with a sleep of 1 msec; therefore a call to rtl8225_write_phy_ofdm() immediately followed by an msleep(1) is not needed. Signed-off-by: Larry Finger Tested-by: Herton Ronaldo Krzesinski Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 2f20596b50ee964715f9ad44d848802f0baba5d8 Author: Larry Finger Date: Fri Oct 31 09:52:07 2008 -0700 rtl8187: Remove large delays The rtl8187 driver contains 3 sleep statements that are longer than a second. Testing has shown no bad effects when they are removed. Signed-off-by: Larry Finger Tested-by: Herton Ronaldo Krzesinski Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 9344e86e577df483475845096dba07f2deb11ce3 Author: Ivo van Doorn Date: Wed Oct 29 17:19:29 2008 +0100 rt2x00: Release rt2x00 2.2.2 Version bump. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 3514a441265c6788d85e8222dcca10cd66433123 Author: Ivo van Doorn Date: Wed Oct 29 17:18:46 2008 +0100 rt2x00: Improve interface_modes initialization All operating modes which require beaconing should depend on the availability of beacon entries from the hardware. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit c3fd7b41cae2fa213858d6501e6065f24097c0a8 Author: Ivo van Doorn Date: Wed Oct 29 17:18:22 2008 +0100 rt2x00: Remove ieee80211_bss_conf from rt2x00_intf We can safely remove ieee80211_bss_conf from rt2x00_intf, it is provided by mac80211 in ieee80211_vif as well. (rt2x00_intf is the drv_priv field of ieee80211_vif). Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit e4ea1c403acece78c271bf9cd6f797d1cb093df9 Author: Ivo van Doorn Date: Wed Oct 29 17:17:57 2008 +0100 rt2x00: Optimize configuration handling Implement latest changed from mac80211 configuration handling to optmize configuration handling in rt2x00. * Remove set_retry_limit callback function, handled through config() * Move config_antenna to its own callback function, it isn't handled by mac80211 anymore * Use IEEE80211_CONF_CHANGED_* flags and remove manual checks * Removed deprecated short slot setting through config() and put it in config_erp() through which mac80211 now configures it * Remove config_phymode() and move contents to config_erp() since it only managed the basic rates which is now determined by mac80211 through config_erp(). Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 3f64b435ab76e79bfb3b4d36f043e6f892093b71 Author: Bob Copeland Date: Wed Oct 29 23:19:14 2008 -0400 ath5k: update keycache to support TKIP handling Newer parts have slots at entry+64 for michael mic and can do WPA-TKIP in hardware. The open-sourced Atheros HAL has code for accessing this portion so now we know how where to put the key material. Signed-off-by: Bob Copeland Acked-by: Nick Kossifidis Signed-off-by: John W. Linville commit 9ad9a26e7b7b6671a9aefbb1edb2e8a9ed50ee8d Author: Bob Copeland Date: Wed Oct 29 08:30:54 2008 -0400 ath5k: enable hardware encryption for WEP This change re-enables hardware encryption for ath5k after setting up mac80211 to handle the initialization vectors which happens to make it work. Add a module param (nohwcrypt) to optionally turn it off. Signed-off-by: Bob Copeland Signed-off-by: John W. Linville commit 2a941ecb5178cb8c94190f17a42f35a772cbc5c6 Author: Holger Schurig Date: Wed Oct 29 09:43:50 2008 +0100 wireless: fix two bad print_ssid conversions This patch fixes two current compilation problems. They showed up with CONFIG_IEEE80211_DEBUG defined. Signed-off-by: Holger Schurig Signed-off-by: John W. Linville commit 8469cdef1f123e2e3e56645f1ac26c7cfb333d9c Author: Sujith Date: Wed Oct 29 10:19:28 2008 +0530 mac80211: Add a new event in ieee80211_ampdu_mlme_action Send a notification to the driver on succesful reception of an ADDBA response, add IEEE80211_AMPDU_TX_RESUME for this purpose. Signed-off-by: Sujith Signed-off-by: John W. Linville commit dca3edb88ef567671886a85c5e40d491ccecf934 Author: Sujith Date: Wed Oct 29 10:19:01 2008 +0530 ath9k: Remove internal RX A-MPDU processing mac80211 has RX A-MPDU reordering support. Use that and remove redundant RX processing within the driver. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 7f959032bbee5eedaf4c606d11f0c5d41498644e Author: Sujith Date: Wed Oct 29 10:18:39 2008 +0530 ath9k: Clear HT info on starting the driver Doing an interface down/up leaves the old HT assoc information, clear it. Signed-off-by: Sujith Signed-off-by: John W. Linville commit ccc75c526611e62c4c9adcb4a62bf4a164478d2c Author: Sujith Date: Wed Oct 29 10:18:14 2008 +0530 ath9k: Remove ath_tx_aggr_resp() Accessing mac80211's internal state machine is wrong. Will add resumption of a TID in a later patch. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 05a1e2d111c98340fb17ec702cf09450eec3a947 Author: Sujith Date: Wed Oct 29 10:17:54 2008 +0530 ath9k: Enable interrupts at the proper place config_interface() was the wrong place to enable interrupts when bringing up an interface, move it to ath_open(). Signed-off-by: Sujith Signed-off-by: John W. Linville commit 154662a6356ec3ccfea0a22218cf149220ea6373 Author: Sujith Date: Wed Oct 29 10:17:34 2008 +0530 ath9k: Remove unnecessary TSF reset The TSF is already reset properly via mac80211's callback. Resetting it in config_interface() is not needed. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 9c84b7978f1b99048bf31be5a0218cd509e74148 Author: Sujith Date: Wed Oct 29 10:17:13 2008 +0530 ath9k: Streamline attach/detach Simplify attach and detach routines by consolidating the stop and suspend functions. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 50fdae2c7bcb6417997f90c3d9853a59a9ed06ce Author: Sujith Date: Wed Oct 29 10:16:52 2008 +0530 ath9k: Remove unused function ath_get_currentCountry() Signed-off-by: Sujith Signed-off-by: John W. Linville commit f1dc56003b23d2d5bb5a756de6b1633a76c9e697 Author: Sujith Date: Wed Oct 29 10:16:30 2008 +0530 ath9k: Refactor hw.c Split hw.c into more manageable files: ani.c calib.c eeprom.c mac.c Signed-off-by: Sujith Signed-off-by: John W. Linville commit 5640b08ef7e88b606c740e746cb77bc97d78508e Author: Sujith Date: Wed Oct 29 10:16:06 2008 +0530 ath9k: Revamp VAP management Remove the internal VAP management routines and embed ath_vap in mac80211's driver private area provided in ieee80211_vif. Signed-off-by: Sujith Signed-off-by: John W. Linville commit a37c2c79404940dfc5e88c851c3de5328975b1a9 Author: Sujith Date: Wed Oct 29 10:15:40 2008 +0530 ath9k: Use bitfields to store tid's state in a single variable Signed-off-by: Sujith Signed-off-by: John W. Linville commit 102e0572d330e6cdb89a8f8fbd3999e3c67a1f9e Author: Sujith Date: Wed Oct 29 10:15:16 2008 +0530 ath9k: Ensure ath_node is not NULL when updating tx chainmask Also, random indentation and whitespace cleanup. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 43453b3392c1ecfdd1471383ad42ba926533a722 Author: Sujith Date: Wed Oct 29 10:14:52 2008 +0530 ath9k: Remove SM Power Save as it is not supported now Signed-off-by: Sujith Signed-off-by: John W. Linville commit 528f0c6b3b6bbed1328ee49bfc906543daa00866 Author: Sujith Date: Wed Oct 29 10:14:26 2008 +0530 ath9k: Revamp transmit control block Use the ath_buf instance associated with each tx frame directly and remove all redundant information in ath_tx_control. Signed-off-by: Sujith Signed-off-by: John W. Linville commit c51701632c8becdf0ffedb96d9cedc1149f2183a Author: Sujith Date: Wed Oct 29 10:13:59 2008 +0530 ath9k: Simplify node attach/detach routines Signed-off-by: Sujith Signed-off-by: John W. Linville commit b5aa9bf9460f9e97f2c10940b029d75c6557ad7c Author: Sujith Date: Wed Oct 29 10:13:31 2008 +0530 ath9k: Node cleanup Start removing the internal node list in ath9k, in preparation for using mac80211's STA list. Remove lists, locks, routines, flags, functions managing nodes in ath9k. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 17683c65c8a5f3f29f5408334992986b996d8205 Author: Bob Copeland Date: Wed Oct 29 23:24:26 2008 -0400 ath5k: fix keytable type buglet in ath5k_hw_reset_key Be sure we clear out both the mic (if applicable) and the encryption key type. Signed-off-by: Bob Copeland Signed-off-by: John W. Linville commit f07a6c495e88ae0143e3c20b1ed666314197277f Author: Nick Kossifidis Date: Wed Oct 29 04:28:28 2008 +0200 ath5k: Update PCU code * In set_opmode don't handle antenna settings and preserve other STA_ID1 settings (shouldn't matter because we call it during reset but it makes things cleaner) Also set properly AP/ADHOC indicator flag on CFG while setting AP/ADHOC modes and always enable key search mode. * Properly set BSSID Mask during reset (cache it and reuse it durring set_associd) * Update beacon_init to flush pending BMISS interrupts and handle setting of adhoc beacon ATIM policy flag for ad-hoc mode. Also set TSF to 0 to start TSF increment on AP mode. We need to handle sleep timers for AR5212 there + add support for PCF. * Properly clean MIC key from keytable when TKIP is used (Bob is working on set_key function etc so i leave it for now). Tested on AR5212 (Hainan) and AR5413 and works fine v2 Set PISR on AR5211+ and ISR on AR5210, got to sleep more ;-) Changes-Licensed-under: ISC Signed-Off-by: Nick Kossifidis Signed-off-by: John W. Linville commit 2c706002fc147decdba2658ea48e4436faca3af2 Author: Johannes Berg Date: Thu Oct 30 22:09:54 2008 +0100 don't use net/ieee80211.h Convert all the drivers using net/ieee80211.h to use linux/ieee80211.h. Contains a bugfix in libertas where the SSID parsing could overrun the buffer when the AP sends invalid information. Signed-off-by: Johannes Berg Acked-by: Dan Williams [airo, libertas] Acked-by: Pavel Roskin [orinoco] Acked-by: David Kilroy [orinoco] Signed-off-by: John W. Linville commit 9b1fbae4b242cf86a878771eb59dc600dde72ec8 Author: Johannes Berg Date: Wed Oct 29 01:02:27 2008 +0100 iwl3945: remove bogus comment I added this comment myself, but it's clearly wrong. I had meant to place it in iwl_mac_add_interface, which at the time didn't honour the MAC address setting, but it does now. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 41bb73eeac5ff5fb217257ba33b654747b3abf11 Author: Johannes Berg Date: Wed Oct 29 01:09:37 2008 +0100 mac80211: remove SSID driver code Remove the SSID from the driver API since now there is no driver that requires knowing the SSID and I think it's unlikely that any hardware design that does require the SSID will play well with mac80211. This also removes support for setting the SSID in master mode which will require a patch to hostapd to not try. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit b23f99bcfa12c7b452f7ad201ea5921534d4e9ff Author: Johannes Berg Date: Tue Oct 28 18:50:12 2008 +0100 adm8211: remove SSID code Since adm8211 currently doesn't implement IBSS mode anyway, it can't be using the SSID. And if/when it does implement IBSS mode, we'll have to see how to make it beacon anyway. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 71c11fb57b924c160297ccd9e1761db598d00ac2 Author: Johannes Berg Date: Tue Oct 28 18:29:48 2008 +0100 b43/legacy: remove SSID code The SSID programmed into the device is used by the ucode only to reply to probe requests, a functionality we disable anyway because it doesn't fit with the mac80211/hostapd programming model. Therefore, it isn't useful to program the SSID into device. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 4607816f608b42a5379aca97ceed08378804c99f Author: Johannes Berg Date: Tue Oct 28 18:25:43 2008 +0100 iwlwifi: remove unused essid variable Now the essid stuff is unused, so remove it. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit a57a59f247b651e8ed6d3eeb7e2f9d83b83134c9 Author: Johannes Berg Date: Tue Oct 28 18:21:05 2008 +0100 iwlwifi: remove implicit direct scan When an undirected scan is requested and iwlwifi is not associated but the user has set an SSID (and maybe was associated with that network at some point) then iwlwifi will assume the user wanted to scan for this SSID which seems wrong. Remove this code. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 430cfe95a401baa0dc2022deaad02cb75d63c73c Author: Johannes Berg Date: Tue Oct 28 18:06:02 2008 +0100 iwl3945: remove dead code Was wondering about this code since supposedly the firmware will add the SSID element. Turns out it's dead, so remove it. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit e5704bf0ba4bb2ca54a1c74f6a6dca53dfccc33d Author: Johannes Berg Date: Tue Oct 28 16:59:57 2008 +0100 ath9k: remove useless NULL initialisers When I added .set_frag_threshold I didn't realise it was already there which now generated a sparse warning. Therefore, remove the .set_frag_threshold NULL initialiser, and while at it all the other useless ones. Signed-off-by: Johannes Berg Acked-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit 2df78167ade3d0542f0f95be7cc58861343cce3a Author: Johannes Berg Date: Tue Oct 28 16:49:41 2008 +0100 wireless: fix a few sparse warnings Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 1239cd58d237fa6ad501acaec8776262a5784ec8 Author: Johannes Berg Date: Tue Oct 28 11:12:57 2008 +0100 wireless: move mesh config length constant This is a constant from the 802.11 specification. Signed-off-by: Johannes Berg Cc: Javier Cardona Signed-off-by: John W. Linville commit 97c8b013da7a8ec7aa0a192489d4e7a33c4127fc Author: Zhu Yi Date: Tue Oct 28 15:58:31 2008 +0800 mac80211: print reason code for deauth/dissoc frames The patch prints reason code for deauth/dissoc frames to give users more ideas what's happened for the disconnection. Signed-off-by: Zhu Yi Acked-by: Johannes Berg Signed-off-by: John W. Linville commit db4186cf15a5a7e8e8526f7c158f042ccc3ed576 Author: John W. Linville Date: Fri Oct 31 15:53:12 2008 -0400 p54: eliminate warning for uninitialized variable 'tim_len' drivers/net/wireless/p54/p54common.c: In function ‘p54_tx’: drivers/net/wireless/p54/p54common.c:1058: warning: ‘tim_len’ may be used uninitialized in this function Signed-off-by: John W. Linville commit e5ea92a7528d304e8e327d0d261653e98b163e8a Author: Christian Lamparter Date: Sat Oct 18 23:19:00 2008 +0200 p54: AP & Ad-hoc testing This patch finally adds all necessary code to test Ad-hoc & AP mode with p54. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 94585b090baf982a850678a1dc3395bce0c1e302 Author: Christian Lamparter Date: Sat Oct 18 23:18:44 2008 +0200 p54: put broadcast frames into the right queues stlc45xx's specs finally brought some light what all the 4 extra queues for. now CAB data and managment frames have their own queue. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 9e7f3f8e4acdc480584d6b5e6a6be5d1f7bda8fa Author: Christian Lamparter Date: Sat Oct 18 23:18:01 2008 +0200 p54: more definitions form lmac_longbow.h and pda.h This patch ports more useful features to p54 - PDR definitions for the synth chips & regulatory domain. - honour IEEE80211_TX_CTL_ASSIGN_SEQ flag, if it's set. - adds some lost mutex_lock & mutex_unlock. - replace two more "magic values" that sneaked past. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 9a8675d712d57da0993ad2e43b168c9585892097 Author: Christian Lamparter Date: Sat Oct 18 23:04:15 2008 +0200 p54: introduce new names for device firmwares Johannes thought it would have been a good idea to change the firmware names. Note: we still have fallbacks in case our users don't want to "break their running system", but we won't advertise them with MODULE_FIRMWARE. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 4ceb7b6ae2cf5b6e32c403a11bb54081bf8f8b83 Author: Wang Chen Date: Fri Sep 5 11:28:47 2008 +0800 netdevice libertas: Fix directly reference of netdev->priv We have some reasons to kill netdev->priv: 1. netdev->priv is equal to netdev_priv(). 2. netdev_priv() wraps the calculation of netdev->priv's offset, obviously netdev_priv() is more flexible than netdev->priv. But we cann't kill netdev->priv, because so many drivers reference to it directly. OK, becasue Dave S. Miller said, "every direct netdev->priv usage is a bug", and I want to kill netdev->priv later, I decided to convert all the direct reference of netdev->priv first. Different to readonly reference of netdev->priv, in this driver, netdev->priv was changed. I use netdev->ml_priv to replace netdev->priv. Signed-off-by: Wang Chen Signed-off-by: John W. Linville commit f43aa025b7de79d6a615ea4c1e6be7e6b1cea538 Author: Takashi Iwai Date: Mon Nov 10 16:24:26 2008 +0100 ALSA: hda - Fix another cache list management Fix another silly bug in the amp cache list management. Signed-off-by: Takashi Iwai commit b402dff8739cd82c58b632ba472caf26ae8741ed Author: Hugo Villeneuve Date: Sat Nov 8 13:26:09 2008 -0500 ASoC: Add Right-Justified mode and Codec clock master to davinci-i2s The TI DVEVM board uses the SND_SOC_DAIFMT_CBM_CFM & I2S formats, but the Lyrtech SFFSDR board uses the SND_SOC_DAIFMT_CBM_CFS & RIGHT-JUSTIFIED formats. Signed-off-by: Hugo Villeneuve Signed-off-by: Mark Brown commit 53599bbc30343f0cbfe750d2af19c9c45b841b82 Author: Christian Pellegrin Date: Sat Nov 8 08:44:16 2008 +0100 ASoC: s3c24xx 8 bit sound fix fixes playing/recording of 8 bit audio files. Generated on 20081108 against v2.6.27 Signed-off-by: Christian Pellegrin Signed-off-by: Mark Brown commit ba21ebb6abac5c46e1d818d2ceda82420bd099ba Author: Cyrill Gorcunov Date: Mon Nov 10 09:16:41 2008 +0100 x86: apic - use pr_ macros for logging Impact: cleanup It saves us some source lines and shift the code a bit righter. And a multiline comment style is fixed too :-) Signed-off-by: Cyrill Gorcunov Acked-by: "Maciej W. Rozycki" Signed-off-by: Ingo Molnar commit 4e0304310f5180eee11b4edc72cf4cb78acdc634 Author: Cyrill Gorcunov Date: Mon Nov 10 09:16:40 2008 +0100 x86: apic - calibrate_APIC_clock remove redundant irq-enable-disable Impact: cleanup lapic_timer_setup is self-protected with local_irq_save/restore no need to use them in caller and levt is the per-cpu variable so no concurrent access from another cpu. Signed-off-by: Cyrill Gorcunov Acked-by: "Maciej W. Rozycki" Signed-off-by: Ingo Molnar commit 4ecd33d930591d41fe356160593a9076467b961c Merge: 7d5a78cd98c3a5eb83bd6a061c5ea6ef1e9b8fcb f7160c7573615ec82c691e294cf80d920b5d588d Author: Ingo Molnar Date: Mon Nov 10 09:16:27 2008 +0100 Merge commit 'v2.6.28-rc4' into x86/apic commit f4166c54bfe04f64603974058e44fbd7cfef0ccc Author: Markus Metzger Date: Sun Nov 9 14:29:21 2008 +0100 x86, bts: DS and BTS initialization Impact: widen BTS/PEBS ptrace enablement to more CPU models Move BTS initialisation out of an #ifdef CONFIG_X86_64 guard. Assume core2 BTS and DS layout for future models of family 6 processors. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit 19f47c634ea8c5a10ff7bb1a08c52fd0f49bc54c Author: Harvey Harrison Date: Sun Nov 9 21:28:15 2008 -0800 x86: x86_32 has its own irq_regs definition Impact: cleanup Arches that have their own irq_regs definition are expected to define ARCH_HAS_OWN_IRQ_REGS or else a generic (unused) set will also be defined in lib/irq_regs.c Sparse noticed the unused generic one had no prototype: lib/irq_regs.c:15:1: warning: symbol 'per_cpu____irq_regs' was not declared. Should it be static? Signed-off-by: Harvey Harrison Signed-off-by: Ingo Molnar commit 87135d92b4ae73208c53242f3cfec5b20b772cb3 Merge: 4fcc50abdffb517cee36cec9cb22138d84fb62d0 f7160c7573615ec82c691e294cf80d920b5d588d Author: Ingo Molnar Date: Mon Nov 10 08:41:38 2008 +0100 Merge commit 'v2.6.28-rc4' into x86/cleanups commit 4fcc50abdffb517cee36cec9cb22138d84fb62d0 Author: Ingo Molnar Date: Sun Nov 9 08:10:03 2008 +0100 x86: clean up vget_cycles() Impact: remove unused variable I forgot to remove the now unused "cycles_t cycles" parameter from vget_cycles() - which triggers build warnings as tsc.h is included in a number of files. Remove it. Signed-off-by: Ingo Molnar commit 39c9aede2b4a252bd296c0a86be832c3d3d0a273 Author: Eric Paris Date: Wed Nov 5 09:34:42 2008 -0500 SELinux: Use unknown perm handling to handle unknown netlink msg types Currently when SELinux has not been updated to handle a netlink message type the operation is denied with EINVAL. This patch will leave the audit/warning message so things get fixed but if policy chose to allow unknowns this will allow the netlink operation. Signed-off-by: Eric Paris Acked-by: Stephen Smalley Signed-off-by: James Morris commit cb9e35dce94a1b9c59d46224e8a94377d673e204 Author: Ingo Molnar Date: Sat Nov 8 20:27:00 2008 +0100 x86: clean up rdtsc_barrier() use Impact: cleanup Move rdtsc_barrier() use to vsyscall_64.c where it's relied on, and point out its role in the context of its use. Signed-off-by: Ingo Molnar commit 895e031707954a9ca26ed4f5f794575313854ed1 Merge: 838e8bb71dc0c892bf8f84abd3c709d8fe3a8d3c a622cf69b806bbb1887913c04e01d0c25b892876 Author: Ingo Molnar Date: Sat Nov 8 20:23:02 2008 +0100 Merge branch 'linus' into x86/cleanups commit 15002fa9bf3a79ac9dcafba7ff308586936088b2 Author: Hiroshi Shimamoto Date: Fri Nov 7 19:25:36 2008 -0800 x86: signal: cosmetic unification of setup_sigcontext() Impact: cleanup Make setup_sigcontext() same. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit a309720c876d7ad2e224bfd1982c92ae4364c82e Author: Steven Rostedt Date: Fri Nov 7 22:36:02 2008 -0500 ftrace: display start of CPU buffer in trace output Impact: change in trace output Because the trace buffers are per cpu ring buffers, the start of the trace can be confusing. If one CPU is very active at the end of the trace, its history will not go as far back as the other CPU traces. This means that output for a particular CPU may not appear for the first part of a trace. To help annotate what is happening, and to prevent any more confusion, this patch adds a line that annotates the start of a CPU buffer output. For example: automount-3495 [001] 184.596443: dnotify_parent <-vfs_write [...] automount-3495 [001] 184.596449: dput <-path_put automount-3496 [002] 184.596450: down_read_trylock <-do_page_fault [...] sshd-3497 [001] 184.597069: up_read <-do_page_fault -0 [000] 184.597074: __exit_idle <-exit_idle [...] automount-3496 [002] 184.597257: filemap_fault <-__do_fault -0 [003] 184.597261: exit_idle <-smp_apic_timer_interrupt Note, parsers of a trace output should always ignore any lines that start with a '#'. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 769c48eb2530c5c1a393e2c82063f4f050571d24 Author: Steven Rostedt Date: Fri Nov 7 22:36:02 2008 -0500 ftrace: force pass of preemptoff selftest Impact: preemptoff not tested in selftest Due to the BKL not being preemptable anymore, the selftest of the preemptoff code can not be tested. It requires that it is called with preemption enabled, but since the BKL is held, that is no longer the case. This patch simply skips those tests if it detects that the context is not preemptable. The following will now show up in the tests: Testing tracer preemptoff: can not test ... force PASSED Testing tracer preemptirqsoff: can not test ... force PASSED When the BKL is removed, or it becomes preemptable once again, then the tests will be performed. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 7d5222a6afa4e429f55df8c086adb747837cbdf5 Author: Matt Fleming Date: Fri Nov 7 13:26:25 2008 +0000 ftrace: align __mcount_loc sections Impact: add alignment option for recordmcount.pl script Align the __mcount_loc sections so that architectures with strict alignment requirements need not worry about performing unaligned accesses. This fixes an issue where I was seeing unaligned accesses, which are not supported on our architecture (the results of an unaligned access are undefined). Signed-off-by: Matt Fleming Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit c76f06945be50564f925799ddfb6235ee4c26aa0 Author: Steven Rostedt Date: Fri Nov 7 22:36:02 2008 -0500 ftrace: remove trace array ctrl Impact: remove obsolete variable in trace_array structure With the new start / stop method of ftrace, the ctrl variable in the trace_array structure is now obsolete. Remove it. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit bbf5b1a0cecb56de6236db8b01c5bfb7ab8ba8b2 Author: Steven Rostedt Date: Fri Nov 7 22:36:02 2008 -0500 ftrace: remove ctrl_update method Impact: Remove the ctrl_update tracer method With the new quick start/stop method of tracing, the ctrl_update method is out of date. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 49833fc232bd6a5076496994d855f601354501d7 Author: Steven Rostedt Date: Fri Nov 7 22:36:02 2008 -0500 ftrace: enable trace_printk by default Impact: have the ftrace_printk enabled on startup It is confusing to have to "echo trace_printk > /debug/tracing/iter_ctrl" after adding ftrace_printk in the kernel. Currently the trace_printk is set to off by default. ftrace_printk should only be in open kernel code when used for debugging, and thus it should be enabled by default. It may also be used to record data within a tracer, but those ftrace_printks should be within wrappers that are either enabled by trace_points or have a variable protecting the code path from being entered when the tracer is disabled. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 451931702017951f74624ddc4f7f02e4641b0e20 Author: Steven Rostedt Date: Fri Nov 7 22:36:02 2008 -0500 ftrace: irqsoff tracer incorrect reset Impact: fix to irqsoff tracer output In converting to the new start / stop ftrace handling, the irqsoff tracer start called the irqsoff reset function. irqsoff tracer is not the same as the other traces, and it resets the buffers while searching for the longest latency. The reset that the irqsoff stop method calls disables the function tracing. That means that, by starting the tracer, the function tracer is disabled incorrectly. This patch simply removes the call to reset which keeps the function tracing enabled. Reset is not needed for the irqsoff stop method. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit e168e0516e476070faa9e8e7b23dfcba79b76d82 Author: Steven Rostedt Date: Fri Nov 7 22:36:02 2008 -0500 ftrace: fix sched_switch API Impact: fix for sched_switch that broke dynamic ftrace startup The commit: tracing/fastboot: use sched switch tracer from boot tracer broke the API of the sched_switch trace. The use of the tracing_start/stop_cmdline record is for only recording the cmdline, NOT recording the schedule switches themselves. Seeing that the boot tracer broke the API to do something that it wanted, this patch adds a new interface for the API while puting back the original interface of the old API. Signed-off-by: Steven Rostedt Acked-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 75f5c47da386445ba0c5a8b7e3ca0c906e763369 Author: Steven Rostedt Date: Fri Nov 7 22:36:02 2008 -0500 ftrace: fix boot trace sched startup Impact: boot tracer startup modified The boot tracer calls into some of the schedule tracing private functions that should not be exported. This patch cleans it up, and makes way for further changes in the ftrace infrastructure. This patch adds a api to assign a tracer array to the schedule context switch tracer. Signed-off-by: Steven Rostedt Acked-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 0183fb1c94b74862b073590fc52c56b7364b7bad Author: Steven Rostedt Date: Fri Nov 7 22:36:02 2008 -0500 ftrace: fix set_ftrace_filter Impact: fix of output of set_ftrace_filter Commit ftrace: do not show freed records in available_filter_functions Removed a bit too much from the set_ftrace_filter code, where we now see all functions in the set_ftrace_filter file even when we set a filter. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit a6b0786f7f83bcc4d414a2977aaebe2941ebe1de Merge: 3e03fb7f1da2e691644526c0d6df42d778716349 6a60dd121c5b6c2d827e99b38c1326f2600c3891 072ba49838b42c873c496d72c91bb237914cf3b6 Author: Ingo Molnar Date: Sat Nov 8 09:34:35 2008 +0100 Merge branches 'tracing/ftrace', 'tracing/fastboot', 'tracing/nmisafe' and 'tracing/urgent' into tracing/core commit f574179b63e48f5285468b5ee40f3c480221f708 Author: Harvey Harrison Date: Fri Nov 7 23:37:50 2008 -0800 tipc: trivial endian annotation in debug statement Use htonl rather than ntohl on a u32. net/tipc/name_table.c:557:2: warning: cast to restricted __be32 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit f400923735ecbb67cbe4a3606c9479f694754f51 Author: Thomas Graf Date: Fri Nov 7 22:56:00 2008 -0800 pkt_sched: Control group classifier The classifier should cover the most common use case and will work without any special configuration. The principle of the classifier is to directly access the task_struct via get_current(). In order for this to work, classification requests from softirqs must be ignored. This is not a problem because the vast majority of packets in softirq context are not assigned to a task anyway. For this to work, a mechanism is needed to trace softirq context. This repost goes back to the method of relying on the number of nested bh disable calls for the sake of not adding too much complexity and the option to come up with something more reliable if actually needed. Signed-off-by: Thomas Graf Signed-off-by: David S. Miller commit 505d4f73dda9e20d59da05008f1f5eb432613e71 Author: Eric W. Biederman Date: Fri Nov 7 22:54:20 2008 -0800 net: Guaranetee the proper ordering of the loopback device. v2 I was recently hunting a bug that occurred in network namespace cleanup. In looking at the code it became apparrent that we have and will continue to have cases where if we have anything going on in a network namespace there will be assumptions that the loopback device is present. Things like sending igmp unsubscribe messages when we bring down network devices invokes the routing code which assumes that at least the loopback driver is present. Therefore to avoid magic initcall ordering hackery that is hard to follow and hard to get right insert a call to register the loopback device directly from net_dev_init(). This guarantes that the loopback device is the first device registered and the last network device to go away. But do it carefully so we register the loopback device after we clear dev_boot_phase. Signed-off-by: Eric W. Biederman Signed-off-by: David S. Miller commit 5d6d480908300a0c0b3be8b58567dfcef62c83a5 Author: Eric W. Biederman Date: Fri Nov 7 22:52:34 2008 -0800 net: fib_rules ordering fixes. We need to setup the network namespace state before we register the notifier. Otherwise if a network device is already registered we get a nasty NULL pointer dereference. Signed-off-by: Eric W. Biederman Signed-off-by: David S. Miller commit 3d8160b1493bcadca74fbb635d79b3928b8999cf Author: David S. Miller Date: Fri Nov 7 22:52:14 2008 -0800 Revert "net: Guaranetee the proper ordering of the loopback device." This reverts commit ae33bc40c0d96d02f51a996482ea7e41c5152695. commit 0edb94543092535a2c6ef33e7285004168ca73d7 Author: Takashi Iwai Date: Fri Nov 7 14:53:09 2008 +0100 ALSA: hda - Fix probe errors on Dell Studio Desktop BIOS on Dell Studio Desktop tells wrong codec probe masks. This patch gives the preset mask value to avoid invalid access. Reference: Novell bug#440907 https://bugzilla.novell.com/show_bug.cgi?id=440907 Signed-off-by: Takashi Iwai commit 30cde0aacc5f6786b0c4d4fafaac95eac845b8d7 Author: Takashi Iwai Date: Fri Nov 7 14:49:28 2008 +0100 ALSA: hda - Fix ALC260 hp3013 master switch The master switch doesn't influence on NID 0x15, the headphone jack on HP 3013 model because alc260_hp_master_update() ignores the passed arguments. Also, corrected the wrong arguments of hp3013 (0x10 and 0x15) although this doesn't change any behavior. Signed-off-by: Takashi Iwai commit 26df91c36fb976af9d08c20028b5cb1317eedcb3 Author: Troy Kisky Date: Wed Nov 5 18:53:28 2008 +0000 ASoC: TLV320AIC23B Support more sample rates Add support for more sample rates, different crystals and split playback/capture rates. Signed-off-by: Troy Kisky Acked-by: Arun KS Signed-off-by: Mark Brown commit 167c6274c30d17c41742096d1a12c32bd3b7e366 Merge: 5c7f0333584128c745fbda845abbe3a32c22d467 a8272061fe533f6d0261b38c58c93bd0855baebe Author: David S. Miller Date: Fri Nov 7 01:37:16 2008 -0800 Merge branch 'davem-next' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 commit 6d21cd62516a9697cb7ec33cc52e6b814fb65a13 Author: Li Zefan Date: Fri Nov 7 17:03:18 2008 +0800 sched: clean up SCHED_CPUMASK_ALLOC Impact: cleanup The #if/#endif is ugly. Change SCHED_CPUMASK_ALLOC and SCHED_CPUMASK_FREE to static inline functions. Signed-off-by: Li Zefan Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 258594a138f4ca9adf214f5272592d7f21def610 Merge: a87d091434ed2a34d647979ab12084139ee1fe41 ca3273f9646694e0419cfb9d6c12deb1c9aff27c Author: Ingo Molnar Date: Fri Nov 7 10:29:58 2008 +0100 Merge branch 'sched/urgent' into sched/core commit f66fcedc84dd06d42a0dba3894d238498509e8b7 Author: Takashi Iwai Date: Fri Nov 7 09:37:22 2008 +0100 ALSA: Document debug macros Add descriptions of snd_BUG() and snd_BUG_ON(). Also fixed a typo in the comment of snd_printk(), too. Signed-off-by: Takashi Iwai commit a8272061fe533f6d0261b38c58c93bd0855baebe Author: Komuro Date: Mon Nov 3 10:56:04 2008 +0900 fmvj18x_cs: write interrupt ack bit for lan and modem to work simultaneously. Write interrupt ack bit in fjn_interrupt for lan and modem to work simultaneously. Signed-off-by: Komuro Signed-off-by: Jeff Garzik commit 945eed02cd619f525e097319cd3d18c58d01da87 Author: Takashi Iwai Date: Fri Nov 7 09:08:15 2008 +0100 ALSA: Evaluate condition in snd_BUG_ON() in non-debugging case Change snd_BUG_ON() to evaluate the given condition, at least, in syntax for avoiding compile warnings such as unused variables. The compiler should optimize out the condition evaluation in the real code, though. Signed-off-by: Takashi Iwai commit 077402317291437521ed86d3326b3bcc62d40529 Merge: ea2da6e898033b9736a26cf588b9ce841a433337 959973b92d3ba235edfa5dcb5df1be1e5d1deba2 Author: Takashi Iwai Date: Fri Nov 7 09:06:45 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda commit 63cf123bf5d538a066e4a899390c9ce56ab6df9f Merge: 6834d7ce224a6f6a1dd05da3a867730c40943154 fcef7836a31c6432b41a38867d413ed3d6aa8261 Author: Takashi Iwai Date: Fri Nov 7 09:06:05 2008 +0100 Merge branch 'topic/fix/misc' into topic/misc commit 5c7f0333584128c745fbda845abbe3a32c22d467 Author: Harvey Harrison Date: Thu Nov 6 23:10:50 2008 -0800 phonet: sparse annotations of protocol, remove forward declaration net/phonet/af_phonet.c:38:36: error: marked inline, but without a definition net/phonet/pep-gprs.c:63:10: warning: incorrect type in return expression (different base types) net/phonet/pep-gprs.c:63:10: expected int net/phonet/pep-gprs.c:63:10: got restricted __be16 [usertype] net/phonet/pep-gprs.c:65:10: warning: incorrect type in return expression (different base types) net/phonet/pep-gprs.c:65:10: expected int net/phonet/pep-gprs.c:65:10: got restricted __be16 [usertype] net/phonet/pep-gprs.c:124:16: warning: incorrect type in assignment (different base types) net/phonet/pep-gprs.c:124:16: expected restricted __be16 [usertype] protocol net/phonet/pep-gprs.c:124:16: got unsigned short [unsigned] [usertype] protocol Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit ca62059b7ec7267d1d2cab0791d3ed6d033e0583 Author: Harvey Harrison Date: Thu Nov 6 23:09:56 2008 -0800 ipvs: oldlen, newlen should be be16, not be32 Noticed by sparse: net/netfilter/ipvs/ip_vs_proto_tcp.c:195:6: warning: incorrect type in argument 5 (different base types) net/netfilter/ipvs/ip_vs_proto_tcp.c:195:6: expected restricted __be16 [usertype] oldlen net/netfilter/ipvs/ip_vs_proto_tcp.c:195:6: got restricted __be32 [usertype] net/netfilter/ipvs/ip_vs_proto_tcp.c:196:6: warning: incorrect type in argument 6 (different base types) net/netfilter/ipvs/ip_vs_proto_tcp.c:196:6: expected restricted __be16 [usertype] newlen net/netfilter/ipvs/ip_vs_proto_tcp.c:196:6: got restricted __be32 [usertype] net/netfilter/ipvs/ip_vs_proto_tcp.c:270:6: warning: incorrect type in argument 5 (different base types) net/netfilter/ipvs/ip_vs_proto_tcp.c:270:6: expected restricted __be16 [usertype] oldlen net/netfilter/ipvs/ip_vs_proto_tcp.c:270:6: got restricted __be32 [usertype] net/netfilter/ipvs/ip_vs_proto_tcp.c:271:6: warning: incorrect type in argument 6 (different base types) net/netfilter/ipvs/ip_vs_proto_tcp.c:271:6: expected restricted __be16 [usertype] newlen net/netfilter/ipvs/ip_vs_proto_tcp.c:271:6: got restricted __be32 [usertype] net/netfilter/ipvs/ip_vs_proto_udp.c:206:6: warning: incorrect type in argument 5 (different base types) net/netfilter/ipvs/ip_vs_proto_udp.c:206:6: expected restricted __be16 [usertype] oldlen net/netfilter/ipvs/ip_vs_proto_udp.c:206:6: got restricted __be32 [usertype] net/netfilter/ipvs/ip_vs_proto_udp.c:207:6: warning: incorrect type in argument 6 (different base types) net/netfilter/ipvs/ip_vs_proto_udp.c:207:6: expected restricted __be16 [usertype] newlen net/netfilter/ipvs/ip_vs_proto_udp.c:207:6: got restricted __be32 [usertype] net/netfilter/ipvs/ip_vs_proto_udp.c:282:6: warning: incorrect type in argument 5 (different base types) net/netfilter/ipvs/ip_vs_proto_udp.c:282:6: expected restricted __be16 [usertype] oldlen net/netfilter/ipvs/ip_vs_proto_udp.c:282:6: got restricted __be32 [usertype] net/netfilter/ipvs/ip_vs_proto_udp.c:283:6: warning: incorrect type in argument 6 (different base types) net/netfilter/ipvs/ip_vs_proto_udp.c:283:6: expected restricted __be16 [usertype] newlen net/netfilter/ipvs/ip_vs_proto_udp.c:283:6: got restricted __be32 [usertype] Signed-off-by: Harvey Harrison Acked-by: Simon Horman Signed-off-by: David S. Miller commit 76acfdb9b78acf73023307974f6d38a269e9967a Author: Alexey Dobriyan Date: Thu Nov 6 23:06:44 2008 -0800 net: mark flow_cache_cpu_prepare() as __init It's called from __init code only. And__devinit in generic networking code is pretty strange :^) Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 9eeda9abd1faf489f3df9a1f557975f4c8650363 Merge: 61c9eaf90081cbe6dc4f389e0056bff76eca19ec 4bab0ea1d42dd1927af9df6fbf0003fc00617c50 Author: David S. Miller Date: Thu Nov 6 22:43:03 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/wireless/ath5k/base.c net/8021q/vlan_core.c commit ea2da6e898033b9736a26cf588b9ce841a433337 Author: Takashi Iwai Date: Fri Nov 7 00:49:48 2008 +0100 ALSA: hda - Fix broken hash chain allocation The chaining for amp hash got broken due to the rewrite with snd_array. Fixed now. Signed-off-by: Takashi Iwai commit b910d9ae5b370cf5bf9d6a71028119861b6ea8a4 Author: Takashi Iwai Date: Fri Nov 7 00:26:52 2008 +0100 ALSA: hda - Add max allocation check in array allocator Added a check for max allocation size in snd_array_new() for a debugging purpose. Signed-off-by: Takashi Iwai commit c217429b14708999d6ac5de964c452600e8797d3 Author: Takashi Iwai Date: Fri Nov 7 00:23:30 2008 +0100 ALSA: hda - Add missing NULL check in amp hash allocation Added the missing NULL check from allocator in get_alloc_hash(). Signed-off-by: Takashi Iwai commit a87d091434ed2a34d647979ab12084139ee1fe41 Author: Ken Chen Date: Thu Nov 6 11:10:49 2008 -0800 x86, sched: enable wchan config menu item on 64-bit Enable the wchan config menu item for now on x86-64 arch? This will at least allow people to enable/disable frame pointers on scheduler functions. Signed-off-by: Ken Chen Signed-off-by: Ingo Molnar commit 6a60dd121c5b6c2d827e99b38c1326f2600c3891 Author: Steven Rostedt Date: Thu Nov 6 15:55:21 2008 -0500 ftrace: split out hardirq ftrace code into own header Impact: moving of function prototypes into own header file ftrace.h is too big of a file for hardirq.h, and some archs will fail to build because of the include dependencies not being met. This patch pulls out the required prototypes for hardirq.h into a smaller and safer ftrace_irq.h file. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit cf7f8690e864c6fe11e77202dd847fa60f483418 Author: Sripathi Kodi Date: Wed Nov 5 18:57:14 2008 +0530 sched, lockdep: inline double_unlock_balance() We have a test case which measures the variation in the amount of time needed to perform a fixed amount of work on the preempt_rt kernel. We started seeing deterioration in it's performance recently. The test should never take more than 10 microseconds, but we started 5-10% failure rate. Using elimination method, we traced the problem to commit 1b12bbc747560ea68bcc132c3d05699e52271da0 (lockdep: re-annotate scheduler runqueues). When LOCKDEP is disabled, this patch only adds an additional function call to double_unlock_balance(). Hence I inlined double_unlock_balance() and the problem went away. Here is a patch to make this change. Signed-off-by: Sripathi Kodi Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 64154835c58a99370c3b7fbf85d2451d6906b3b4 Author: Tony Vroon Date: Thu Nov 6 15:08:49 2008 +0000 ALSA: hda - Add lifebook model for Realtek ALC269 The widget layout of the Fujitsu Lifebook S6420 (which is ICH9M-based and uses an ALC269) is similar but not identical to the Lifebook S6410/E8410 (which are ICH8M-based and use an ALC262). It is named lifebook as fujitsu is in use for Amilo machines. This builds on the Quanta FL1 work and supports all analog inputs & outputs that I am aware of. Microphone autoswitch is implemented. The laptop mic port takes precedence over the dock mic port if both happen to have a jack plugged in. This made sense to me as a design decision (imagine a presentation environment with the dock fully wired in and the presenter quickly wanting to override the mic with a headset). There is mention of a digital audio path on the codec graph, so perhaps the headphone socket is dual-function analog/digital. I will follow up with another patch if I can acquire equipment to test this. Signed-off-by: Tony Vroon Signed-off-by: Takashi Iwai commit 6ce4a3bc1b93e8ca50b142b00dd73bfdb5c4a172 Author: Takashi Iwai Date: Thu Nov 6 17:11:10 2008 +0100 ALSA: hda - Make codec-probing more robust When an error occurs during the codec probing, typically accessing to an non-existing codec slot, the controller chip gets often screwed up and can no longer communicate with the codecs. This patch adds a preparation phase just to probe codec addresses before actually creating codec instances. If any error occurs during this probing phase, the driver resets the controller to recover. This will (hopefully) fix the famous "single_cmd" errors. Signed-off-by: Takashi Iwai commit 33fa35ed0d7e8996cc68cc2ffc21f12b38fa03c1 Author: Takashi Iwai Date: Thu Nov 6 16:50:40 2008 +0100 ALSA: hda - simplify hda_bus ops callbacks The hda_bus ops callback take struct hda_bus pointer. Also, the command callback takes the composed command word, instead of each small bits in arguments. Signed-off-by: Takashi Iwai commit e18c94d20224f3df584531a48d944d8cccfda46d Author: Grazvydas Ignotas Date: Wed Nov 5 23:51:05 2008 +0200 ALSA: ASoC: TWL4030 codec - fix 256*Fs clock According to TRM, 256*Fs clock output should be enabled when TWL4030 is in slave mode, not master. This allows sound to work on OMAP3 Pandora, which uses 256*Fs clock. Signed-off-by: Grazvydas Ignotas Acked-by: Steve Sakoman Signed-off-by: Mark Brown commit fd51b2d7d5df932767b89e00d0871a38a2c53e74 Author: KOSAKI Motohiro Date: Wed Nov 5 02:27:19 2008 +0900 x86: update CONFIG_NUMA description Impact: clarify/update CONFIG_NUMA text CONFIG_NUMA description talk about a bit old thing. So, following changes are better. o CONFIG_NUMA is no longer EXPERIMENTAL o Opteron is not the only processor of NUMA topology on x86_64 no longer, but also Intel Core7i has it. Signed-off-by: KOSAKI Motohiro Signed-off-by: Ingo Molnar commit 90080bf4b803efbc9b9cd3a7ed1639f1e036238e Author: Randy Dunlap Date: Tue Nov 4 14:37:25 2008 -0800 sched, documentation: update scheduler header file paths Impact: update documentation Update Documentation/scheduler/ files to reflect changed header files locations. Signed-off-by: Randy Dunlap Signed-off-by: Ingo Molnar commit 8735b7d0a2a6246faa406a8cdd1376bd0e689ba3 Author: Hiroshi Shimamoto Date: Wed Nov 5 18:34:35 2008 -0800 x86: signal_64: make setup_sigcontext() similar Impact: cleanup remove passing task struct. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit ee7d523c124a186ce3a886868de9cd1d8bc991f3 Author: Hiroshi Shimamoto Date: Wed Nov 5 18:33:35 2008 -0800 x86: signal_64: setup fpstate in setup_sigcontext() Impact: cleanup set fpstate field of signal context at setup_sigcontext(). Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 99ea1b93bf80a287dd70499b96d9c4d06f320ff2 Author: Hiroshi Shimamoto Date: Wed Nov 5 18:32:54 2008 -0800 x86: ia32_signal: do save_i387_xstate_ia32 at get_sigframe() Impact: cleanup move calling save_i387_xstate_ia32() into get_sigframe() from setup_sigcontext(). Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 4b33669e817a01dd99ff91df330d504ccfb2e99c Author: Hiroshi Shimamoto Date: Wed Nov 5 18:30:25 2008 -0800 x86: signal_32: do save_i387_xstate() at get_sigframe() Impact: cleanup move calling save_i387_xstate() into get_sigframe() from setup_sigcontext() like 64bit. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 3e03fb7f1da2e691644526c0d6df42d778716349 Author: Steven Rostedt Date: Thu Nov 6 00:09:43 2008 -0500 ring-buffer: convert to raw spinlocks Impact: no lockdep debugging of ring buffer The problem with running lockdep on the ring buffer is that the ring buffer is the core infrastructure of ftrace. What happens is that the tracer will start tracing the lockdep code while lockdep is testing the ring buffers locks. This can cause lockdep to fail due to testing cases that have not fully finished their locking transition. This patch converts the spin locks used by the ring buffer back into raw spin locks which lockdep does not check. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 9036990d462e09366f7297a2d1da6582c3e6b1d3 Author: Steven Rostedt Date: Wed Nov 5 16:05:44 2008 -0500 ftrace: restructure tracing start/stop infrastructure Impact: change where tracing is started up and stopped Currently, when a new tracer is selected via echo'ing a tracer name into the current_tracer file, the startup is only done if tracing_enabled is set to one. If tracing_enabled is changed to zero (by echo'ing 0 into the tracing_enabled file) a full shutdown is performed. The full startup and shutdown of a tracer can be expensive and the user can lose out traces when echo'ing in 0 to the tracing_enabled file, because the process takes too long. There can also be places that the user would like to start and stop the tracer several times and doing the full startup and shutdown of a tracer might be too expensive. This patch performs the full startup and shutdown when a tracer is selected. It also adds a way to do a quick start or stop of a tracer. The quick version is just a flag that prevents the tracing from taking place, but the overhead of the code is still there. For example, the startup of a tracer may enable tracepoints, or enable the function tracer. The stop and start will just set a flag to have the tracer ignore the calls when the tracepoint or function trace is called. The overhead of the tracer may still be present when the tracer is stopped, but no tracing will occur. Setting the tracer to the 'nop' tracer (or any other tracer) will perform the shutdown of the tracer which will disable the tracepoint or disable the function tracer. The tracing_enabled file will simply start or stop tracing. This change is all internal. The end result for the user should be the same as before. If tracing_enabled is not set, no trace will happen. If tracing_enabled is set, then the trace will happen. The tracing_enabled variable is static between tracers. Enabling tracing_enabled and going to another tracer will keep tracing_enabled enabled. Same is true with disabling tracing_enabled. This patch will now provide a fast start/stop method to the users for enabling or disabling tracing. Note: There were two methods to the struct tracer that were never used: The methods start and stop. These were to be used as a hook to the reading of the trace output, but ended up not being necessary. These two methods are now used to enable the start and stop of each tracer, in case the tracer needs to do more than just not write into the buffer. For example, the irqsoff tracer must stop recording max latencies when tracing is stopped. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 0f04870148ecb825133bc2733f473b1c5773ac0b Author: Steven Rostedt Date: Wed Nov 5 16:05:44 2008 -0500 ftrace: soft tracing stop and start Impact: add way to quickly start stop tracing from the kernel This patch adds a soft stop and start to the trace. This simply disables function tracing via the ftrace_disabled flag, and disables the trace buffers to prevent recording. The tracing code may still be executed, but the trace will not be recorded. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 60a7ecf42661f2b22168751298592da6ee210c9e Author: Steven Rostedt Date: Wed Nov 5 16:05:44 2008 -0500 ftrace: add quick function trace stop Impact: quick start and stop of function tracer This patch adds a way to disable the function tracer quickly without the need to run kstop_machine. It adds a new variable called function_trace_stop which will stop the calls to functions from mcount when set. This is just an on/off switch and does not handle recursion like preempt_disable(). It's main purpose is to help other tracers/debuggers start and stop tracing fuctions without the need to call kstop_machine. The config option HAVE_FUNCTION_TRACE_MCOUNT_TEST is added for archs that implement the testing of the function_trace_stop in the mcount arch dependent code. Otherwise, the test is done in the C code. x86 is the only arch at the moment that supports this. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 79c81d220c8e25163f56edcdfaf23f83a4c88e6b Merge: 3299b4dd1180762da831be5eb6adc44553eaec26 79a9d461fd521f133f0e66485aa9ed09c21f5191 Author: Ingo Molnar Date: Thu Nov 6 07:43:47 2008 +0100 Merge branch 'tracing/fastboot' into tracing/ftrace commit fd9abb3d97c2ab883e4732ec1214fe64190236e7 Author: Steve Glendinning Date: Wed Nov 5 00:35:37 2008 +0000 SMSC LAN911x and LAN921x vendor driver Attached is a driver for SMSC's LAN911x and LAN921x families of embedded ethernet controllers. There is an existing smc911x driver in the tree; this is intended to replace it. Dustin McIntire (the author of the smc911x driver) has expressed his support for switching to this driver. This driver contains workarounds for all known hardware issues, and has been tested on all flavours of the chip on multiple architectures. This driver now uses phylib, so this patch also adds support for the device's internal phy Signed-off-by: Steve Glendinning Signed-off-by: Bahadir Balban Signed-off-by: Dustin Mcintire Signed-off-by: Bill Gatliff Signed-off-by: Jeff Garzik commit c5916cf8dbd3ac5ec675d9347aeaa796b546b50e Author: Hannes Hering Date: Wed Nov 5 13:18:21 2008 +0100 ehea: Fix some whitespace issues This patch removes some trailing whitespaces and spaces before tabs. Signed-off-by: Hannes Hering Signed-off-by: Jeff Garzik commit 739bb23d722313e37322f485eb65f700b060d817 Author: Ben Hutchings Date: Tue Nov 4 20:35:36 2008 +0000 sfc: Do not reset when hardware monitor detects a fault The TX watchdog should trigger a reset, but a temperature/power alarm should not as this is unlikely to solve the problem. Signed-off-by: Ben Hutchings Signed-off-by: Jeff Garzik commit 3e133c44d24a094118caee182200462d46c55b56 Author: Ben Hutchings Date: Tue Nov 4 20:34:56 2008 +0000 sfc: Use lm87 and lm90 drivers for board temperature/power monitoring Add board monitoring to periodic work whenever link is down. For SFE4001, report when a fault has caused the PHY to turn off. For SFE4002, switch XFP PHY into low-power state in case of a fault. Signed-off-by: Ben Hutchings Signed-off-by: Jeff Garzik commit f41507245ef8b079685aba8da5b5b2b5e87e70bc Author: Ben Hutchings Date: Tue Nov 4 20:34:28 2008 +0000 sfc: Expose flash region storing boot code as MTD The boot code that appears as a PCI expansion ROM on the SFC4000 is stored in flash. Expose this as a standard MTD device to allow for in-place upgrades. Signed-off-by: Ben Hutchings Signed-off-by: Jeff Garzik commit 0a95f56323ce93dac354c1b2d54bf959a985cf7d Author: Ben Hutchings Date: Tue Nov 4 20:33:11 2008 +0000 sfc: Clean up non-volatile memory partitioning Move flash and EEPROM partition boundary constants into spi.h and rename them to be consistent. Add a comment on the partitioning. Signed-off-by: Ben Hutchings Signed-off-by: Jeff Garzik commit 2883f552f2c6c6ccb2021643652c6d930f205f6f Author: Ben Hutchings Date: Tue Nov 4 20:32:45 2008 +0000 sfc: Correct address of gPXE boot configuration in EEPROM Due to a hardware bug, the originally assigned range cannot reliably be used for boot configuration and must not be modifiable through ethtool. Signed-off-by: Ben Hutchings Signed-off-by: Jeff Garzik commit fd989c83325cb34795bc4d4aa6b13c06f90eac99 Author: Jay Vosburgh Date: Tue Nov 4 17:51:16 2008 -0800 bonding: alternate agg selection policies for 802.3ad This patch implements alternative aggregator selection policies for 802.3ad. The existing policy, now termed "stable," selects the active aggregator by greatest bandwidth, and only reselects a new aggregator if the active aggregator is entirely disabled (no more ports or all ports down). This patch adds two new policies: bandwidth and count, selecting the active aggregator by total bandwidth (like the stable policy) or by the number of ports in the aggregator, respectively. These two policies also differ from the stable policy in that they will reselect the active aggregator when availability-related changes occur in the bond (e.g., link state change). This permits "gang failover" within 802.3ad, allowing redundant aggregators along parallel paths to always maintain the "best" aggregator as the active aggregator (rather than having to wait for the active to entirely fail). This patch also updates the driver version to 3.5.0. Signed-off-by: Jay Vosburgh Signed-off-by: Jeff Garzik commit 6146b1a4da98377e4abddc91ba5856bef8f23f1e Author: Jay Vosburgh Date: Tue Nov 4 17:51:15 2008 -0800 bonding: Fix ALB mode to balance traffic on VLANs The current ALB function that processes incoming ARPs does not handle traffic for VLANs configured above bonding. This causes traffic on those VLANs to all be assigned the same slave. This patch corrects that misbehavior by locating the bonding interface nested below the VLAN interface. Bug reported by Sven Anders , who also tested an earlier version of this patch and confirmed that it resolved the problem. Signed-off-by: Jay Vosburgh Signed-off-by: Jeff Garzik commit 305d552accae6afb859c493ebc7d98ca3371dae2 Author: Brian Haley Date: Tue Nov 4 17:51:14 2008 -0800 bonding: send IPv6 neighbor advertisement on failover This patch adds better IPv6 failover support for bonding devices, especially when in active-backup mode and there are only IPv6 addresses configured, as reported by Alex Sidorenko. - Creates a new file, net/drivers/bonding/bond_ipv6.c, for the IPv6-specific routines. Both regular bonds and VLANs over bonds are supported. - Adds a new tunable, num_unsol_na, to limit the number of unsolicited IPv6 Neighbor Advertisements that are sent on a failover event. Default is 1. - Creates two new IPv6 neighbor discovery functions: ndisc_build_skb() ndisc_send_skb() These were required to support VLANs since we have to be able to add the VLAN id to the skb since ndisc_send_na() and friends shouldn't be asked to do this. These two routines are basically __ndisc_send() split into two pieces, in a slightly different order. - Updates Documentation/networking/bonding.txt and bumps the rev of bond support to 3.4.0. On failover, this new code will generate one packet: - An unsolicited IPv6 Neighbor Advertisement, which helps the switch learn that the address has moved to the new slave. Testing has shown that sending just the NA results in pretty good behavior when in active-back mode, I saw no lost ping packets for example. Signed-off-by: Brian Haley Signed-off-by: Jay Vosburgh Signed-off-by: Jeff Garzik commit 7d9d1f25c3872080ce599e5dd0dac3305d0a028b Author: Dean Nelson Date: Wed Nov 5 17:29:48 2008 -0600 sgi-xp: support getting the address of a partition's reserved page Add support for getting the address of a partition's reserved page. Signed-off-by: Dean Nelson Signed-off-by: H. Peter Anvin commit 31de5ece351a218a35b9bf83ab05a14373261bb6 Author: Dean Nelson Date: Wed Nov 5 17:28:35 2008 -0600 sgi-xp: define xp_partition_id and xp_region_size Define xp_partition_id and xp_region_size to their correct values. Signed-off-by: Dean Nelson Signed-off-by: H. Peter Anvin commit 2525789b4694d78df4f001063f042b2b74227d26 Author: Dean Nelson Date: Wed Nov 5 17:28:00 2008 -0600 sgi-xp: create activate and notify gru message queues For UV add the code to create the activate and notify gru message queues. Signed-off-by: Dean Nelson Signed-off-by: H. Peter Anvin commit 6c1c325de908cbc444cf284f59c3a892161012e9 Author: Dean Nelson Date: Wed Nov 5 17:27:22 2008 -0600 sgi-xp: define xp_expand_memprotect() and xp_restrict_memprotect() Define xp_expand_memprotect() and xp_restrict_memprotect() so they can be tailered to the hardware they are run on. Signed-off-by: Dean Nelson Signed-off-by: H. Peter Anvin commit 23c357003b3671cdfb17bc4d5383589e74b71511 Author: Russ Anderson Date: Wed Nov 5 22:15:13 2008 -0600 x86: uv: Add UV reserved page bios call Add UV bios call to get the address of the reserved page. Signed-off-by: Russ Anderson Signed-off-by: H. Peter Anvin commit e8929c8a6acbecbd629b8e3f2d1a2546ec4ebdfc Author: Russ Anderson Date: Wed Nov 5 22:13:44 2008 -0600 x86: uv: Add UV memory protection bios call Add UV bios call to change memory protections. Signed-off-by: Russ Anderson Signed-off-by: H. Peter Anvin commit 64ccf2f9a70a06ba56cd8cedfa610b4e77181587 Author: Russ Anderson Date: Wed Nov 5 22:11:56 2008 -0600 x86: uv: Add UV watchlist bios call Add UV bios calls to allocate and free watchlists. Signed-off-by: Russ Anderson Signed-off-by: H. Peter Anvin commit 61c9eaf90081cbe6dc4f389e0056bff76eca19ec Author: Jarek Poplawski Date: Wed Nov 5 16:02:34 2008 -0800 pkt_sched: Fix qdisc len in qdisc_peek_dequeued() A packet dequeued and stored as gso_skb in qdisc_peek_dequeued() should be seen as part of the queue for sch->q.qlen queries until it's really dequeued with qdisc_dequeue_peeked(), so qlen needs additional updating in these functions. (Updating qstats.backlog shouldn't matter here.) Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 0a36b345ab99d6b3c96999e7e3b79bd243cf9bf7 Author: Eric W. Biederman Date: Wed Nov 5 16:00:24 2008 -0800 net: Don't leak packets when a netns is going down I have been tracking for a while a case where when the network namespace exits the cleanup gets stck in an endless precessess of: unregister_netdevice: waiting for lo to become free. Usage count = 3 unregister_netdevice: waiting for lo to become free. Usage count = 3 unregister_netdevice: waiting for lo to become free. Usage count = 3 unregister_netdevice: waiting for lo to become free. Usage count = 3 unregister_netdevice: waiting for lo to become free. Usage count = 3 unregister_netdevice: waiting for lo to become free. Usage count = 3 unregister_netdevice: waiting for lo to become free. Usage count = 3 It turns out that if you listen on a multicast address an unsubscribe packet is sent when the network device goes down. If you shutdown the network namespace without carefully cleaning up this can trigger the unsubscribe packet to be sent over the loopback interface while the network namespace is going down. All of which is fine except when we drop the packet and forget to free it leaking the skb and the dst entry attached to. As it turns out the dst entry hold a reference to the idev which holds the dev and keeps everything from being cleaned up. Yuck! By fixing my earlier thinko and add the needed kfree_skb and everything cleans up beautifully. Signed-off-by: Eric W. Biederman Signed-off-by: David S. Miller commit ae33bc40c0d96d02f51a996482ea7e41c5152695 Author: Eric W. Biederman Date: Wed Nov 5 16:00:02 2008 -0800 net: Guaranetee the proper ordering of the loopback device. I was recently hunting a bug that occurred in network namespace cleanup. In looking at the code it became apparrent that we have and will continue to have cases where if we have anything going on in a network namespace there will be assumptions that the loopback device is present. Things like sending igmp unsubscribe messages when we bring down network devices invokes the routing code which assumes that at least the loopback driver is present. Therefore to avoid magic initcall ordering hackery that is hard to follow and hard to get right insert a call to register the loopback device directly from net_dev_init(). This guarantes that the loopback device is the first device registered and the last network device to go away. Signed-off-by: Eric W. Biederman Signed-off-by: David S. Miller commit d0c082cea6dfb9b674b4f6e1e84025662dbd24e8 Author: Eric W. Biederman Date: Wed Nov 5 15:59:38 2008 -0800 netns: Delete virtual interfaces during namespace cleanup When physical devices are inside of network namespace and that network namespace terminates we can not make them go away. We have to keep them and moving them to the initial network namespace is the best we can do. For virtual devices left in a network namespace that is exiting we have no need to preserve them and we now have the infrastructure that allows us to delete them. So delete virtual devices when we exit a network namespace. Keeping the necessary user space clean up after a network namespace exits much more tractable. Acked-by: Daniel Lezcano Acked-by: Pavel Emelyanov Signed-off-by: Eric W. Biederman Signed-off-by: David S. Miller commit 1c1b777a5673b57a6c0377ba60a790d05e4a0676 Author: Harvey Harrison Date: Wed Nov 5 09:51:12 2008 -0800 powerpc: Use the new byteorder headers Signed-off-by: Harvey Harrison Signed-off-by: Paul Mackerras commit 1f29fae29709b4668979e244c09b2fa78ff1ad59 Author: Serge E. Hallyn Date: Wed Nov 5 16:08:52 2008 -0600 file capabilities: add no_file_caps switch (v4) Add a no_file_caps boot option when file capabilities are compiled into the kernel (CONFIG_SECURITY_FILE_CAPABILITIES=y). This allows distributions to ship a kernel with file capabilities compiled in, without forcing users to use (and understand and trust) them. When no_file_caps is specified at boot, then when a process executes a file, any file capabilities stored with that file will not be used in the calculation of the process' new capability sets. This means that booting with the no_file_caps boot option will not be the same as booting a kernel with file capabilities compiled out - in particular a task with CAP_SETPCAP will not have any chance of passing capabilities to another task (which isn't "really" possible anyway, and which may soon by killed altogether by David Howells in any case), and it will instead be able to put new capabilities in its pI. However since fI will always be empty and pI is masked with fI, it gains the task nothing. We also support the extra prctl options, setting securebits and dropping capabilities from the per-process bounding set. The other remaining difference is that killpriv, task_setscheduler, setioprio, and setnice will continue to be hooked. That will be noticable in the case where a root task changed its uid while keeping some caps, and another task owned by the new uid tries to change settings for the more privileged task. Changelog: Nov 05 2008: (v4) trivial port on top of always-start-\ with-clear-caps patch Sep 23 2008: nixed file_caps_enabled when file caps are not compiled in as it isn't used. Document no_file_caps in kernel-parameters.txt. Signed-off-by: Serge Hallyn Acked-by: Andrew G. Morgan Signed-off-by: James Morris commit e21e696edb498c7f7eed42ba3096f6bbe13927b6 Merge: 2f99db28af90957271a6448479c3e492ccf7c697 75fa67706cce5272bcfc51ed646f2da21f3bdb6e Author: James Morris Date: Thu Nov 6 07:12:34 2008 +0800 Merge branch 'master' into next commit 2f99db28af90957271a6448479c3e492ccf7c697 Author: Michal Schmidt Date: Wed Nov 5 13:35:06 2008 +0100 selinux: recognize netlink messages for 'ip addrlabel' In enforcing mode '/sbin/ip addrlabel' results in a SELinux error: type=SELINUX_ERR msg=audit(1225698822.073:42): SELinux: unrecognized netlink message type=74 for sclass=43 The problem is missing RTM_*ADDRLABEL entries in SELinux's netlink message types table. Reported in https://bugzilla.redhat.com/show_bug.cgi?id=469423 Signed-off-by: Michal Schmidt Acked-by: Stephen Smalley Signed-off-by: James Morris commit 5b4d2189446fd31cd618bbd1c24566b8d0ab11c8 Author: Sebastian Siewior Date: Sat Nov 1 10:00:56 2008 +0000 powerpc/boot: Allocate more memory for dtb David Gibson suggested that since we are now unconditionally copying the dtb into a malloc()ed buffer, it would be sensible to add a little padding to the buffer at that point, so that further device tree manipulations won't need to reallocate it. This implements that suggestion. Signed-off-by: Sebastian Andrzej Siewior Signed-off-by: Paul Mackerras commit 7d4320f3d5ace5758111f2beac931376737f80f5 Author: Jon Tollefson Date: Thu Oct 30 12:03:57 2008 +0000 powerpc: Hugetlb pgtable cache access cleanup Andrew Morton suggested that using a macro that makes an array reference look like a function call makes it harder to understand the code. This therefore removes the huge_pgtable_cache(psize) macro and replaces its uses with pgtable_cache[HUGE_PGTABLE_INDEX(psize)]. Signed-off-by: Jon Tollefson Cc: Nick Piggin Cc: Benjamin Herrenschmidt Signed-off-by: Andrew Morton Acked-by: David Gibson Signed-off-by: Paul Mackerras commit d4ad304841a9790d4fa35e51d6aa9baeba631559 Author: Masakazu Mokuno Date: Thu Oct 30 08:17:18 2008 +0000 powerpc/ps3: Fix memory leak in device init Free dynamically allocated device data structures when device registration fails. This fixes memory leakage when the registration fails. Signed-off-by: Masakazu Mokuno Signed-off-by: Geoff Levand Signed-off-by: Paul Mackerras commit 3cc698789a3f44dabc5eed389b6c123caf787c0f Author: Paul Mackerras Date: Tue Oct 28 00:18:11 2008 +0000 powerpc: Eliminate unused do_gtod variable Since we started using the generic timekeeping code, we haven't had a powerpc-specific version of do_gettimeofday, and hence there is now nothing that reads the do_gtod variable in arch/powerpc/kernel/time.c. This therefore removes it and the code that sets it. Signed-off-by: Paul Mackerras commit 597bc5c00b666fe123abb0af64f6e86f7ab72a90 Author: Paul Mackerras Date: Mon Oct 27 23:56:03 2008 +0000 powerpc: Improve resolution of VDSO clock_gettime Currently the clock_gettime implementation in the VDSO produces a result with microsecond resolution for the cases that are handled without a system call, i.e. CLOCK_REALTIME and CLOCK_MONOTONIC. The nanoseconds field of the result is obtained by computing a microseconds value and multiplying by 1000. This changes the code in the VDSO to do the computation for clock_gettime with nanosecond resolution. That means that the resolution of the result will ultimately depend on the timebase frequency. Because the timestamp in the VDSO datapage (stamp_xsec, the real time corresponding to the timebase count in tb_orig_stamp) is in units of 2^-20 seconds, it doesn't have sufficient resolution for computing a result with nanosecond resolution. Therefore this adds a copy of xtime to the VDSO datapage and updates it in update_gtod() along with the other time-related fields. Signed-off-by: Paul Mackerras commit c73049f6aa58ac1d1a9ca8cb2b415ef97240b2d3 Author: Mark Nelson Date: Mon Oct 27 20:38:14 2008 +0000 powerpc: Remove map_/unmap_single() from dma_mapping_ops Now that all of the remaining dma_mapping_ops have had their map_/unmap_single functions updated to become map/unmap_page functions, there is no need to have the map_/unmap_single function pointers in the dma_mapping_ops. So, this removes them and also removes the code that does the checking for which set of functions to use. Signed-off-by: Mark Nelson Acked-by: Becky Bruce Signed-off-by: Paul Mackerras commit 7eef440a545c7f812ed10b49d4a10a351df9cad6 Author: Benjamin Herrenschmidt Date: Mon Oct 27 19:48:56 2008 +0000 powerpc/pci: Cosmetic cleanups of pci-common.c This does a few cosmetic cleanups, moving a couple of things around but without actually changing what the code does. (There is a minor change in ordering of operations in pcibios_setup_bus_devices but it should have no impact). Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit fd6852c8fa060bd45c82a2593e18f933f6c6204f Author: Benjamin Herrenschmidt Date: Mon Oct 27 19:48:52 2008 +0000 powerpc/pci: Fix various pseries PCI hotplug issues The pseries PCI hotplug code has a number of issues, ranging from incorrect resource setup to crashes, depending on what is added, when, whether it contains a bridge, etc etc.... This fixes a whole bunch of these, while actually simplifying the code a bit, using more generic code in the process and factoring out common code between adding of a PHB, a slot or a device. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit b5ae5f911d221ad85090d6805ab9ab020f6e4703 Author: Benjamin Herrenschmidt Date: Mon Oct 27 19:48:44 2008 +0000 powerpc/pci: Make pcibios_allocate_bus_resources more robust To properly fix PCI hotplug, it's useful to be able to make the fixup passes on all devices whether they were just hot plugged or already there. However, pcibios_allocate_bus_resources() wouldn't cope well with being called twice for a given bus. This makes it ignore resources that have already been allocated, along with adding a bit of debug output. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 57b066ff4ec53a0ac7cbf7fb363bb670cf58ddae Author: Benjamin Herrenschmidt Date: Mon Oct 27 19:48:41 2008 +0000 powerpc/eeh: Make EEH device add/remove more robust To properly fix PCI hotplug, it's useful to be able to make the fixup passes on all devices whether they were just hot plugged or already there. The EEH code however used to not be very friendly with calling eeh_add_device_late() multiple time, and not very rebust in the way it generally tests whether a device is in the expected state vs. the EEH code. This improves it, along with cleaning up a couple of debug printk's. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 8b8da35804bb89eee23f9bcd5638e1f754bd4c91 Author: Benjamin Herrenschmidt Date: Mon Oct 27 19:48:37 2008 +0000 powerpc/pci: Split pcibios_fixup_bus() into bus setup and device setup Currently, our PCI code uses the pcibios_fixup_bus() callback, which is called by the generic code when probing PCI buses, for two different things. One is to set up things related to the bus itself, such as reading bridge resources for P2P bridges, fixing them up, or setting up the iommu's associated with bridges on some platforms. The other is some setup for each individual device under that bridge, mostly setting up DMA mappings and interrupts. The problem is that this approach doesn't work well with PCI hotplug when an existing bus is re-probed for new children. We fix this problem by splitting pcibios_fixup_bus into two routines: pcibios_setup_bus_self() is now called to setup the bus itself pcibios_setup_bus_devices() is now called to setup devices pcibios_fixup_bus() is then modified to call these two after reading the bridge bases, and the OF based PCI probe is modified to avoid calling into the first one when rescanning an existing bridge. [paulus@samba.org - fixed eeh.h for 32-bit compile now that pci-common.c is including it unconditionally.] Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 8dc840f88d9c9f75f46d5dbe489242f8a114fab6 Author: David Anders Date: Wed Nov 5 07:39:47 2008 -0800 ASoC: Add new parameter to s3c24xx_pcm_enqueue The S3C24xx dma does not allow more than one buffer to be enqueue prior to the dma transfers starting. This patch adds an additional parameter to s3c24xx_pcm_enqueue() to allow for passing an initial dma maximum load value. Signed-off-by: David Anders Signed-off-by: Mark Brown commit ea913940c39a61214c799cc7093d7b20fe11a94c Author: Mark Brown Date: Wed Nov 5 11:13:21 2008 +0000 ASoC: Remove core version number Rather than try to remember to keep the core version number updated (which hasn't been happening) just remove it. It was much more useful when ASoC was out of tree. Signed-off-by: Mark brown commit 74e722015fe47c8f0e7ef7c0b4cf32d3e4ae11a0 Author: Marek Vasut Date: Mon Nov 3 12:02:12 2008 +0000 ASoC: Add Palm/PXA27x unified ASoC audio driver this patch adds asoc audio driver for pxa27x based Palm PDAs. I tested it for palmtx, t5 and ld, it should work with palmz72 as well (slapin, please test). I sent it here some time ago, but now I got to fixing bugs in it. It should be somehow mostly ok and ready for applying. [Converted to use snd_soc_dapm_nc_pin() and bool Kconfig -- broonie] Signed-off-by: Marek Vasut Signed-off-by: Mark Brown commit 838e8bb71dc0c892bf8f84abd3c709d8fe3a8d3c Author: Uros Bizjak Date: Fri Oct 24 16:53:33 2008 +0200 x86: Implement change_bit with immediate operand as "lock xorb" Impact: Minor optimization. Implement change_bit with immediate bit count as "lock xorb". This is similar to "lock orb" and "lock andb" for set_bit and clear_bit functions. Signed-off-by: Uros Bizjak Signed-off-by: H. Peter Anvin commit 6834d7ce224a6f6a1dd05da3a867730c40943154 Author: Takashi Iwai Date: Wed Nov 5 17:41:23 2008 +0100 ALSA: ice1724 - Re-fix IRQ mask initialization The previous IRQ mask initialization was wrong. It must set the bits to be masked. Signed-off-by: Takashi Iwai commit c238b4f4038e0e49bb241640610584a088b268b1 Author: Takashi Iwai Date: Wed Nov 5 14:57:20 2008 +0100 ALSA: hda - Split ALC268 acer model There are actually two variants of ALC268 Acer implementation, one with an analog built-in mic (pin 0x19) and another with a digital mic (pin 0x12). Created a new model, acer-dmic, for the latter case now. So far, all known models are assigned to be analog-mic, according to the BIOS setup. If this doesn't match with the actual case, one needs to try model=acer-dmic, and fix the entry to point ALC268_ACER_DMIC if it works. Signed-off-by: Takashi Iwai commit ab56ced9c57b66862c687f3158045d15133f02d6 Author: Benjamin Herrenschmidt Date: Mon Oct 27 19:48:33 2008 +0000 powerpc/pci: Remove pcibios_do_bus_setup() The function pcibios_do_bus_setup() was used by pcibios_fixup_bus() to perform setup that is different between the 32-bit and 64-bit code. This difference no longer exists, thus the function is removed and the setup now done directly from pci-common.c. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 53280323350621985b3f2f8ffe649215304bcc5f Author: Benjamin Herrenschmidt Date: Mon Oct 27 19:48:29 2008 +0000 powerpc/pci: Use common PHB resource hookup The 32-bit and 64-bit powerpc PCI code used to set up the resource pointers of the root bus of a given PHB in completely different places. This unifies this in large part, by making 32-bit use a routine very similar to what 64-bit does when initially scanning the PCI busses. The actual setup of the PHB resources itself is then moved to a common function in pci-common.c. This should cause no functional change on 64-bit. On 32-bit, the effect is that the PHB resources are going to be setup a bit earlier, instead of being setup from pcibios_fixup_bus(). Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit b0494bc8ee449f0534afa92a51e2e3bb27bab69b Author: Benjamin Herrenschmidt Date: Mon Oct 27 19:48:22 2008 +0000 powerpc/pci: Cleanup debug printk's This removes the various DBG() macro from the powerpc PCI code and makes it use the standard pr_debug instead. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 25d6e2d7c58ddc4a3b614fc5381591c0cfe66556 Author: Mark Nelson Date: Mon Oct 27 00:46:51 2008 +0000 powerpc: Update 64bit memcpy() using CPU_FTR_UNALIGNED_LD_STD Update memcpy() to add two new feature sections: one for aligning the destination before copying and one for copying using aligned load and store doubles. These new feature sections will only affect Power6 and Cell because the CPU feature bit was only added to these two processors. Power6 gets its best performance in memcpy() when aligning neither the source nor the destination, while Cell gets its best performance when just the destination is aligned. But in order to save on CPU feature bits we can use the previously added CPU_FTR_CP_USE_DCBTZ feature bit to differentiate between Power6 and Cell (because CPU_FTR_CP_USE_DCBTZ was added to Cell but not Power6). The first feature section acts to nop out the branch that takes us to the code that aligns us to an eight byte boundary for the destination. We only want to nop out this branch on Power6. So the ALT_FTR_SECTION_END() for this feature section creates a test mask of the two feature bits ORed together and provides an expected result of just CPU_FTR_UNALIGNED_LD_STD, thus we nop out the branch if we're on a CPU that has CPU_FTR_UNALIGNED_LD_STD set and CPU_FTR_CP_USE_DCBTZ unset. For the second feature section added, if we're on a CPU that has the CPU_FTR_UNALIGNED_LD_STD bit set then we don't want to do the copy with aligned loads and stores (and the appropriate shifting left and right instructions), so we want to nop out the branch to .Lsrc_unaligned. The andi. used for this branch is moved to just above the branch because this allows us to nop out both instructions with just one feature section which gives us better performance and doesn't hurt readability which two separate feature sections did. Moving the andi. to just above the branch doesn't have any noticeable negative effect on the remaining 64bit processors (the ones that didn't have this feature bit added). On Cell this simple modification results in an improvement to measured memcpy() bandwidth of up to 50% in the hot cache case and up to 15% in the cold cache case. On Power6 we get memory bandwidth results that are up to three times faster in the hot cache case and up to 50% faster in the cold cache case. Commit 2a9294369bd020db89bfdf78b84c3615b39a5c84 ("powerpc: Add new CPU feature: CPU_FTR_CP_USE_DCBTZ") was where CPU_FTR_CP_USE_DCBTZ was added. To say that Cell gets its best performance in memcpy() with just the destination aligned is true but only for the reason that the indirect shift and rotate instructions, sld and srd, are microcoded on Cell. This means that either the destination or the source can be aligned, but not both, and seeing as we get better performance with the destination aligned we choose this option. While we're at it make a one line change from cmpldi r1,... to cmpldi cr1,... for consistency. Signed-off-by: Mark Nelson Signed-off-by: Paul Mackerras commit 4ec577a28980a0790df3c3dfe9c81f6e2222acfb Author: Mark Nelson Date: Mon Oct 27 00:43:02 2008 +0000 powerpc: Add new CPU feature: CPU_FTR_UNALIGNED_LD_STD Add a new CPU feature bit, CPU_FTR_UNALIGNED_LD_STD, to be added to the 64bit powerpc chips that can do unaligned load double and store double without any performance hit. This is added to Power6 and Cell and will be used in the next commit to disable the code that gets the destination address aligned on those CPUs where doing that doesn't improve performance. Signed-off-by: Mark Nelson Signed-off-by: Paul Mackerras commit 409001948d9f221c94a61c3ee96de112755fc04d Author: Brian King Date: Wed Oct 22 05:53:45 2008 +0000 powerpc: Update page-in counter for CMM A new field has been added to the VPA as a method for the client OS to communicate to firmware the number of page-ins it is performing when running collaborative memory overcommit. The hypervisor will use this information to better determine if a partition is experiencing memory pressure and needs more memory allocated to it. Signed-off-by: Brian King Signed-off-by: Paul Mackerras commit 1ef8014debb6410ed1960c4477d0006df11157c1 Author: Sebastien Dugue Date: Wed Oct 22 04:36:32 2008 +0000 powerpc/pseries: Fix getting the server number size The 'ibm,interrupt-server#-size' properties are not in the cpu nodes, which is where we currently look for them, but rather live under the interrupt source controller nodes (which have "ibm,ppc-xics" in their compatible property). This moves the code that looks for the ibm,interrupt-server#-size properties from xics_update_irq_servers() into xics_init_IRQ(). Also this adds a check for mismatched sizes across the interrupt source controller nodes. Not sure this is necessary as in this case the firmware might be seriously busted. This property only appears on POWER6 boxes and is only used in the set-indicator(gqirm) call, and apparently firmware currently ignores the value we pass. Nevertheless we need to fix it in case future firmware versions use it. Signed-off-by: Sebastien Dugue Cc: Benjamin Herrenschmidt Acked-by: Milton Miller Signed-off-by: Paul Mackerras commit 691de57679e3f05b708b98ca2ab27657c768843f Author: Anton Vorontsov Date: Tue Oct 21 08:58:44 2008 +0000 powerpc: Remove device_type = "rtc" properties in .dts files We don't want to encourage the device_type usage. It isn't used in the code, so we can simply remove it from the dts files. Suggested-by: Scott Wood Signed-off-by: Anton Vorontsov Acked-by: Grant Likely Acked-by: David Gibson Signed-off-by: Paul Mackerras commit a6a8e009b118b4906cbb4b382f8cc17195cff860 Author: Benjamin Herrenschmidt Date: Tue Oct 14 18:25:28 2008 +0000 powerpc: Silence software timebase sync When no hardware method is provided to sync the timebase registers across the machine, and the platform doesn't sync them for us, then we use a generic software implementation. Currently, the code for that has many printks, and they don't have log levels. Most of the printks are only useful for debugging the code, and since we haven't had any problems with it for years, this turns them into pr_debug. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 1fd0f52583a85b21a394201b007bc1ee104b235d Author: Benjamin Herrenschmidt Date: Thu Oct 2 14:12:51 2008 +0000 powerpc: Fix domain numbers in /proc on 64-bit The code to properly expose domain numbers in /proc is somewhat bogus on ppc64 as it depends on the "buid" field being non-0, but that field is really pseries specific. This removes that code and makes ppc64 use the same code as 32-bit which effectively decides whether to expose domains based on ppc_pci_flags set by the platform, and sets the default for 64-bit to enable domains and enable compatibility for domain 0 (which strips the domain number for domain 0 to help with X servers). Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 270acefafeb74ce2fe93d35b75733870bf1e11e7 Author: Eric Dumazet Date: Wed Nov 5 01:38:06 2008 -0800 net: sk_free_datagram() should use sk_mem_reclaim_partial() I noticed a contention on udp_memory_allocated on regular UDP applications. While tcp_memory_allocated is seldom used, it appears each incoming UDP frame is currently touching udp_memory_allocated when queued, and when received by application. One possible solution is to use sk_mem_reclaim_partial() instead of sk_mem_reclaim(), so that we keep a small reserve (less than one page) of memory for each UDP socket. We did something very similar on TCP side in commit 9993e7d313e80bdc005d09c7def91903e0068f07 ([TCP]: Do not purge sk_forward_alloc entirely in tcp_delack_timer()) A more complex solution would need to convert prot->memory_allocated to use a percpu_counter with batches of 64 or 128 pages. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit d99a7bd210a14001007fc5233597c78877f0a11c Author: Gerrit Renker Date: Tue Nov 4 23:56:30 2008 -0800 dccp: Cleanup routines for feature negotiation This inserts the required de-allocation routines for memory allocated by feature negotiation in the socket destructors, replacing dccp_feat_clean() in one instance. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit ac75773c2742d82cbcb078708df406e9017224b7 Author: Gerrit Renker Date: Tue Nov 4 23:55:49 2008 -0800 dccp: Per-socket initialisation of feature negotiation This provides feature-negotiation initialisation for both DCCP sockets and DCCP request_sockets, to support feature negotiation during connection setup. It also resolves a FIXME regarding the congestion control initialisation. Thanks to Wei Yongjun for help with the IPv6 side of this patch. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 61e6473efbd6087e1db3aaa93a5266c5bfd8aa99 Author: Gerrit Renker Date: Tue Nov 4 23:54:04 2008 -0800 dccp: List management for new feature negotiation This adds list initial fields and list management functions for the new feature negotiation implementation. Thanks to Arnaldo for suggestions and improvements. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 7d43d1a0f2cf535167ec7247f110a1f85cecac43 Author: Gerrit Renker Date: Tue Nov 4 23:43:47 2008 -0800 dccp: Implement lookup table for feature-negotiation information A lookup table for feature-negotiation information, extracted from RFC 4340/42, is provided by this patch. All currently known features can be found in this table, along with their feature location, their default value, and type. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Acked-by: Arnaldo Carvalho de Melo Signed-off-by: David S. Miller commit bd012f2e7be9f69a47d240ded0fa491967d9827c Author: Gerrit Renker Date: Tue Nov 4 23:38:20 2008 -0800 dccp: Basic data structure for feature negotiation This patch prepares for the new and extended feature-negotiation routines. The following feature-negotiation data structures are provided: * a container for the various (SP or NN) values, * symbolic state names to track feature states, * an entry struct which holds all current information together, * elementary functions to fill in and process these structures. Entry structs are arranged as FIFO for the following reason: RFC 4340 specifies that if multiple options of the same type are present, they are processed in the order of their appearance in the packet; which means that this order needs to be preserved in the local data structure (the later insertion code also respects this order). The struct list_head has been chosen for the following reasons: the most frequent operations are * add new entry at tail (when receiving Change or setting socket options); * delete entry (when Confirm has been received); * deep copy of entire list (cloning from listening socket onto request socket). The NN value has been set to 64 bit, which is a currently sufficient upper limit (Sequence Window feature has 48 bit). Thanks to Arnaldo, who contributed the streamlined layout of the entry struct. Signed-off-by: Gerrit Renker Acked-by: Arnaldo Carvalho de Melo Signed-off-by: David S. Miller commit 13c947444f4355293b49f83b809f178393a0a4d9 Author: Takashi Iwai Date: Wed Nov 5 08:06:08 2008 +0100 ALSA: hda - Add ASUS V1Sn support Asus V1s series laptops have an ALC660VD with PCI id: 0x1043, 0x1633. 1.) remove the previous behaviour of mapping that to the ALC861VD_LENOVO device. 2.) add a new ALC660VD_V1S device based on ALC861VD_LENOVO, with an added digital out. Signed-off-by: Tristan Aston Signed-off-by: Takashi Iwai commit beb0b9cf78b56b0f30f5defe62b7b9712cd02a50 Author: Takashi Iwai Date: Wed Nov 5 07:58:25 2008 +0100 ALSA: hda - Fix unused function in patch_intelhdmi.c Add a proper ifdef to shut out a compile warning: CC [M] sound/pci/hda/patch_intelhdmi.o sound/pci/hda/patch_intelhdmi.c:286: warning: ‘hdmi_get_dip_index’ defined but \ not used Signed-off-by: Takashi Iwai commit 91504877c50a792412e2043a1c2099f054d7254a Author: Wu, Fengguang Date: Wed Nov 5 11:16:56 2008 +0800 ALSA: hda - Intel HDMI audio support Add support for Intel G45 integrated HDMI audio codecs. This initial release supports: - 2 channel stereo sound output - report monitor's ELD information Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit d5f642384e9da75393160350f75bbb9a527f7c58 Author: Alexey Dobriyan Date: Tue Nov 4 14:45:58 2008 -0800 net: #ifdef ->sk_security Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit fd8cd7e1919fc1c27fe2fdccd2a1cd32f791ef0f Author: Alok Kataria Date: Mon Nov 3 15:50:38 2008 -0800 x86: vmware: look for DMI string in the product serial key Impact: Should permit VMware detection on older platforms where the vendor is changed. Could theoretically cause a regression if some weird serial number scheme contains the string "VMware" by pure chance. Seems unlikely, especially with the mixed case. In some user configured cases, VMware may choose not to put a VMware specific DMI string, but the product serial key is always there and is VMware specific. Add a interface to check the serial key, when checking for VMware in the DMI information. Signed-off-by: Alok N Kataria Signed-off-by: H. Peter Anvin commit 41d9f9c524a53477467b7e0111ff3d644198f191 Author: Eric Paris Date: Tue Nov 4 15:18:26 2008 -0500 SELinux: hold tasklist_lock and siglock while waking wait_chldexit SELinux has long been calling wake_up_interruptible() on current->parent->signal->wait_chldexit without holding any locks. It appears that this operation should hold the tasklist_lock to dereference current->parent and we should hold the siglock when waking up the signal->wait_chldexit. Signed-off-by: Eric Paris Signed-off-by: James Morris commit 0ee4663617fb0f78cec4cc6558a096ccbd8c3ffc Author: Takashi Iwai Date: Tue Nov 4 18:06:23 2008 +0100 ALSA: ASoC - Remove unnecessary inclusion of linux/version.h Signed-off-by: Takashi Iwai commit 3865675c60aec3e81d72d484680b544afc6fc51d Author: Huang Weiyi Date: Fri Oct 31 22:50:00 2008 +0800 ALSA: ASoC codec: remove unused #include The file(s) below do not use LINUX_VERSION_CODE nor KERNEL_VERSION. sound/soc/codecs/ad73311.c This patch removes the said #include . Signed-off-by: Huang Weiyi Acked-by: Mark Brown Signed-off-by: Takashi Iwai commit bfc5c26fb692fa7a196108c3b23d9c747d105c00 Author: Takashi Iwai Date: Tue Nov 4 17:48:39 2008 +0100 ALSA: hda - Don't create empty PCM streams Due to the hda-reconfiguration patches, the check of empty stream is gone, and this results in an error with the codec setup with empty streams. This patch adds the check again to avoid the error at probing. Signed-off-by: Takashi Iwai commit 79a9d461fd521f133f0e66485aa9ed09c21f5191 Author: Frederic Weisbecker Date: Fri Oct 31 13:34:45 2008 +0100 tracing/ftrace: fix a bug when switch current tracer to sched tracer Impact: fix boot tracer + sched tracer coupling bug Fix a bug that made the sched_switch tracer unable to run if set as the current_tracer after the boot tracer. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit efade6e7821c4219818e9da08f9315dfa617048b Author: Frederic Weisbecker Date: Fri Oct 31 13:28:58 2008 +0100 tracing/ftrace: types and naming corrections for sched tracer Impact: cleanup This patch applies some corrections suggested by Steven Rostedt. Change the type of shed_ref into int since it is used into a Mutex, we don't need it anymore as an atomic variable in the sched_switch tracer. Also change the name of the register mutex. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit d7ad44b697c9d13e445ddc7d16f736fbac333249 Author: Frederic Weisbecker Date: Fri Oct 31 13:20:08 2008 +0100 tracing/fastboot: use sched switch tracer from boot tracer Impact: enhance boot trace output with scheduling events Use the sched_switch tracer from the boot tracer. We also can trace schedule events inside the initcalls. Sched tracing is disabled after the initcall has finished and then reenabled before the next one is started. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit e55f605c14679c30be41473e60b7ad26524cdc35 Author: Frederic Weisbecker Date: Fri Oct 31 13:14:28 2008 +0100 tracing/ftrace: remove unused code in sched_switch tracer Impact: cleanup When init_sched_switch_trace() is called, it has no reason to start the sched tracer if the sched_ref is not zero. _ If this is non-zero, the tracer is already used, but we can register it to the tracing engine. There is already a security which avoid the tracer probes not to be resgistered twice. _ If this is zero, this block will not be used. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 07695fa04e8a3384b0c855398ce1f7885bd7dc3b Author: Frederic Weisbecker Date: Fri Oct 31 13:08:28 2008 +0100 tracing/ftrace: fix a race condition in sched_switch tracer Impact: fix race condition in sched_switch tracer This patch fixes a race condition in the sched_switch tracer. If several tasks (IE: concurrent initcalls) are playing with tracing_start_cmdline_record() and tracing_stop_cmdline_record(), the following situation could happen: _ Task A and B are using the same tracepoint probe. Task A holds it. Task B is sleeping and doesn't hold it. _ Task A frees the sched tracer, then sched_ref is decremented to 0. _ Task A is preempted and hadn't yet unregistered its tracepoint probe, then B runs. _ B increments sched_ref, sees it's 1 and then guess it has to register its probe. But it has not been freed by task A. _ A lot of bad things can happen after that... Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 71566a0d161edec70361b7f90f6e54af6a6d5d05 Author: Frederic Weisbecker Date: Fri Oct 31 12:57:20 2008 +0100 tracing/fastboot: Enable boot tracing only during initcalls Impact: modify boot tracer We used to disable the initcall tracing at a specified time (IE: end of builtin initcalls). But we don't need it anymore. It will be stopped when initcalls are finished. However we want two things: _Start this tracing only after pre-smp initcalls are finished. _Since we are planning to trace sched_switches at the same time, we want to enable them only during the initcall execution. For this purpose, this patch introduce two functions to enable/disable the sched_switch tracing during boot. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 6e3354c1e9946fa585de40e93ad917ec7abd006e Author: Simon Arlott Date: Tue Nov 4 14:35:39 2008 +0100 netfilter: nf_nat: remove warn_if_extra_mangle In net/ipv4/netfilter/nf_nat_rule.c, the function warn_if_extra_mangle was added in commit 5b1158e909ecbe1a052203e0d8df15633f829930 (2006-12-02). I have a DNAT target in the OUTPUT chain than changes connections with dst 2.0.0.1 to another address which I'll substitute with 66.102.9.99 below. On every boot I get the following message: [ 146.252505] NAT: no longer support implicit source local NAT [ 146.252517] NAT: packet src 66.102.9.99 -> dst 2.0.0.1 As far as I can tell from reading the function doing this, it should warn if the source IP for the route to 66.102.9.99 is different from 2.0.0.1 but that is not the case. It doesn't make sense to check the DNAT target against the local route source. Either the function should be changed to correctly check the route, or it should be removed entirely as it's been nearly 2 years since it was added. Signed-off-by: Simon Arlott Signed-off-by: Patrick McHardy commit 249b62035ca247b9cedbefa1acf6bdc53b96e678 Author: Alexey Dobriyan Date: Tue Nov 4 14:31:29 2008 +0100 netfilter: netns ebtables: br_nf_pre_routing_finish() fixup Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit b71b30a626fd0e43c825a05036e7a2c3f377a563 Author: Alexey Dobriyan Date: Tue Nov 4 14:30:46 2008 +0100 netfilter: netns ebtables: ebtable_nat in netns Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit 4aad10938d4e4e8364b664cd5420c3bfeb9b679b Author: Alexey Dobriyan Date: Tue Nov 4 14:29:58 2008 +0100 netfilter: netns ebtables: ebtable_filter in netns Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit 8157e6d16af86e4a8d31a035db7be02a8a171c26 Author: Alexey Dobriyan Date: Tue Nov 4 14:29:03 2008 +0100 netfilter: netns ebtables: ebtable_broute in netns Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit dbcdf85a2e3d2aa584dafd10b5a1f42764e673e7 Author: Alexey Dobriyan Date: Tue Nov 4 14:28:04 2008 +0100 netfilter: netns ebtables: more cleanup during ebt_unregister_table() Now that ebt_unregister_table() can be called during netns stop, and module pinning scheme can't prevent netns stop, do table cleanup by hand. Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit 6beceee5aa2cb94c4ae9f0784c7d3135d343f5b5 Author: Alexey Dobriyan Date: Tue Nov 4 14:27:15 2008 +0100 netfilter: netns ebtables: part 2 * return ebt_table from ebt_register_table(), module code will save it into per-netns data for unregistration * duplicate ebt_table at the very beginning of registration -- it's added into list, so one ebt_table wouldn't end up in many lists (and each netns has different one) * introduce underscored tables in individial modules, this is temporary to not break bisection. Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit 511061e2dd1b84bb21bb97c9216a19606c29ac02 Author: Alexey Dobriyan Date: Tue Nov 4 14:22:55 2008 +0100 netfilter: netns ebtables: part 1 * propagate netns from userspace, register table in passed netns * remporarily register every ebt_table in init_net P. S.: one needs to add ".netns_ok = 1" to igmp_protocol to test with ebtables(8) in netns. Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit 19223f26d97077da8cf25251458afe00cae20cbb Author: Alexey Dobriyan Date: Tue Nov 4 14:22:13 2008 +0100 netfilter: arptable_filter: merge forward hook It's identical to NF_ARP_IN hook. Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit d4ec52bae739409b2372fea30dba0e7a8d6b9181 Author: Alexey Dobriyan Date: Tue Nov 4 14:21:48 2008 +0100 netfilter: netns-aware ipt_addrtype Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit 5f7340eff8f68f41b7e5c7ad47ec4cd1ea1afb40 Author: Eric Leblond Date: Tue Nov 4 14:21:08 2008 +0100 netfilter: xt_NFLOG: don't call nf_log_packet in NFLOG module. This patch modifies xt_NFLOG to suppress the call to nf_log_packet() function. The call of this wrapper in xt_NFLOG was causing NFLOG to use the first initialized module. Thus, if ipt_ULOG is loaded before nfnetlink_log all NFLOG rules are treated as plain LOG rules. Signed-off-by: Eric Leblond Signed-off-by: Patrick McHardy commit 3299b4dd1180762da831be5eb6adc44553eaec26 Author: Peter Zijlstra Date: Tue Nov 4 11:58:21 2008 +0100 ftrace: sysctl typo Impact: fix sysctl name typo Steve must have needed more coffee ;-) Signed-off-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 69f698adcf43930a283f630395a1bb781962cfe6 Author: Peter Zijlstra Date: Sat Nov 1 19:53:34 2008 +0100 ftrace: sysrq-z to dump the buffers Impact: add SysRq-z support to dump trace buffers Allows one to force an ftrace dump from sysrq Signed-off-by: Peter Zijlstra Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 6cf87efbc7a3676e0ad7c9622ec6aec244a593bc Author: Ingo Molnar Date: Tue Nov 4 10:42:23 2008 +0100 x86 debug: mark early_printk.o as notrace Impact: do not do function-tracing in the early-printk code this is useful when earlyprintk=vga,keep is used to debug tracer plugins. Signed-off-by: Ingo Molnar commit faa2f98f856e89d1afb6e4a91707284d242e816e Author: Li Zefan Date: Tue Nov 4 16:20:23 2008 +0800 sched: add sanity check in partition_sched_domains() Impact: cleanup, add debug check It's wrong to make dattr_new = NULL if doms_new == NULL, it introduces memory leak if dattr_new != NULL. Fortunately dattr_new is always NULL in this case. So remove the code and add a sanity check. Signed-off-by: Li Zefan Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit a17e2260926f681a0eb983c1e3cb859ba2064bce Author: Li Zefan Date: Tue Nov 4 16:19:13 2008 +0800 sched: remove redundant call to unregister_sched_domain_sysctl() Impact: cleanup The sysctl has been unregistered by partition_sched_domains(). Signed-off-by: Li Zefan Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 0a0db8f5c9d4bbb9bbfcc2b6cb6bce2d0ef4d73d Author: Li Zefan Date: Tue Nov 4 16:17:05 2008 +0800 sched debug: remove NULL checking in print_cfs/rt_rq() Impact: cleanup cfs->tg is initialized in init_tg_cfs_entry() with tg != NULL, and will never be invalidated to NULL. And the underlying cgroup of a valid task_group is always valid. Same for rt->tg. Signed-off-by: Li Zefan Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit eefd796a8e831408ce17e633d73d70430748c47a Author: Li Zefan Date: Tue Nov 4 16:15:37 2008 +0800 sched debug: remove sd_level_to_string() Impact: cleanup Just use the newly introduced sd->name. Signed-off-by: Li Zefan Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit b2a866f9344cb30d7ddf5d67b5b8393daf8bef07 Author: Steven Rostedt Date: Mon Nov 3 23:15:57 2008 -0500 ftrace: function tracer with irqs disabled Impact: disable interrupts during trace entry creation (as opposed to preempt) To help with performance, I set the ftracer to not disable interrupts, and only to disable preemption. If an interrupt occurred, it would not be traced, because the function tracer protects itself from recursion. This may be faster, but the trace output might miss some traces. This patch makes the fuction trace disable interrupts, but it also adds a runtime feature to disable preemption instead. It does this by having two different tracer functions. When the function tracer is enabled, it will check to see which version is requested (irqs disabled or preemption disabled). Then it will use the corresponding function as the tracer. Irq disabling is the default behaviour, but if the user wants better performance, with the chance of missing traces, then they can choose the preempt disabled version. Running hackbench 3 times with the irqs disabled and 3 times with the preempt disabled function tracer yielded: tracing type times entries recorded ------------ -------- ---------------- irq disabled 43.393 166433066 43.282 166172618 43.298 166256704 preempt disabled 38.969 159871710 38.943 159972935 39.325 161056510 Average: irqs disabled: 43.324 166287462 preempt disabled: 39.079 160300385 preempt is 10.8 percent faster than irqs disabled. I wrote a patch to count function trace recursion and reran hackbench. With irq disabled: 1,150 times the function tracer did not trace due to recursion. with preempt disabled: 5,117,718 times. The thousand times with irq disabled could be due to NMIs, or simply a case where it called a function that was not protected by notrace. But we also see that a large amount of the trace is lost with the preempt version. Signed-off-by: Steven Rostedt Cc: Peter Zijlstra Cc: Andrew Morton Cc: Steven Rostedt Signed-off-by: Ingo Molnar commit 182e9f5f704ed6b9175142fe8da33c9ce0c52b52 Author: Steven Rostedt Date: Mon Nov 3 23:15:56 2008 -0500 ftrace: insert in the ftrace_preempt_disable()/enable() functions Impact: use new, consolidated APIs in ftrace plugins This patch replaces the schedule safe preempt disable code with the ftrace_preempt_disable() and ftrace_preempt_enable() safe functions. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 8f0a056fcb2f83a069fb5d60c2383304b7456687 Author: Steven Rostedt Date: Mon Nov 3 23:15:55 2008 -0500 ftrace: introduce ftrace_preempt_disable()/enable() Impact: add new ftrace-plugin internal APIs Parts of the tracer needs to be careful about schedule recursion. If the NEED_RESCHED flag is set, a preempt_enable will call schedule. Inside the schedule function, the NEED_RESCHED flag is cleared. The problem arises when a trace happens in the schedule function but before NEED_RESCHED is cleared. The race is as follows: schedule() >> tracer called trace_function() preempt_disable() [ record trace ] preempt_enable() <<- here's the issue. [check NEED_RESCHED] schedule() [ Repeat the above, over and over again ] The naive approach is simply to use preempt_enable_no_schedule instead. The problem with that approach is that, although we solve the schedule recursion issue, we now might lose a preemption check when not in the schedule function. trace_function() preempt_disable() [ record trace ] [Interrupt comes in and sets NEED_RESCHED] preempt_enable_no_resched() [continue without scheduling] The way ftrace handles this problem is with the following approach: int resched; resched = need_resched(); preempt_disable_notrace(); [record trace] if (resched) preempt_enable_no_sched_notrace(); else preempt_enable_notrace(); This may seem like the opposite of what we want. If resched is set then we call the "no_sched" version?? The reason we do this is because if NEED_RESCHED is set before we disable preemption, there's two reasons for that: 1) we are in an atomic code path 2) we are already on our way to the schedule function, and maybe even in the schedule function, but have yet to clear the flag. Both the above cases we do not want to schedule. This solution has already been implemented within the ftrace infrastructure. But the problem is that it has been implemented several times. This patch encapsulates this code to two nice functions. resched = ftrace_preempt_disable(); [ record trace] ftrace_preempt_enable(resched); This way the tracers do not need to worry about getting it right. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 124ffe1456d6efea5b32cc6d36e3fa434cdc84d9 Author: Hiroshi Shimamoto Date: Mon Nov 3 19:23:01 2008 -0800 x86: signal_64: remove unused code in __setup_rt_frame() Impact: cleanup sizeof(*set) is always 8 on x86_64. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit b91f080f517cf9dd52023c11127a0ca33190e31a Author: Takashi Iwai Date: Tue Nov 4 08:43:08 2008 +0100 ALSA: hda - Fix possible NULL dereference Add NULL-check of the return value of snd_kctl_new1() before accessing it. Also, make a sanity NULL check to snd_BUG_ON() for debugging only. Signed-off-by: Takashi Iwai commit dce908e26fa0ea7d504d3f294c7411ed1eba5077 Author: Troy Kisky Date: Mon Nov 3 12:22:07 2008 -0700 ALSA: SOC: Fix setting codec register with debugfs filesystem merge error Call device_create_file only once in snd_soc_dapm_sys_add function. Signed-off-by: Troy Kisky Acked-by: Mark Brown Signed-off-by: Takashi Iwai commit d2ad3ca88da02baeccd5216780f1fe983c6953ba Author: David S. Miller Date: Mon Nov 3 22:01:07 2008 -0800 net/: Kill now superfluous ->last_rx stores. The generic packet receive code takes care of setting netdev->last_rx when necessary, for the sake of the bonding ARP monitor. Signed-off-by: David S. Miller commit 265eb67fb4e16be8e46a51e1e4e2ecd99fb15219 Author: Stephen Hemminger Date: Mon Nov 3 21:13:26 2008 -0800 netem: eliminate unneeded return values All these individual parsing functions never return an error, so they can be void. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit babcda74e9d96bb58fd9c6c5112dbdbff169e695 Author: David S. Miller Date: Mon Nov 3 21:11:17 2008 -0800 drivers/net: Kill now superfluous ->last_rx stores. The generic packet receive code takes care of setting netdev->last_rx when necessary, for the sake of the bonding ARP monitor. Drivers need not do it any more. Some cases had to be skipped over because the drivers were making use of the ->last_rx value themselves. Signed-off-by: David S. Miller commit ab2910921064b657610a3b501358a305e13087ea Author: Jianjun Kong Date: Mon Nov 3 18:23:09 2008 -0800 net: remove two duplicated #include Removed duplicated #include in net/9p/trans_rdma.c and #include in net/socket.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit 6d9f239a1edb31d6133230f478fd1dc2da338ec5 Author: Alexey Dobriyan Date: Mon Nov 3 18:21:05 2008 -0800 net: '&' redux I want to compile out proc_* and sysctl_* handlers totally and stub them to NULL depending on config options, however usage of & will prevent this, since taking adress of NULL pointer will break compilation. So, drop & in front of every ->proc_handler and every ->strategy handler, it was never needed in fact. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 6cf3f41e6c08bca6641a695449791c38a25f35ff Author: Jay Vosburgh Date: Mon Nov 3 18:16:50 2008 -0800 bonding, net: Move last_rx update into bonding recv logic The only user of the net_device->last_rx field is bonding. This patch adds a conditional update of last_rx to the bonding special logic in skb_bond_should_drop, causing last_rx to only be updated when the ARP monitor is running. This frees network device drivers from the necessity of updating last_rx, which can have cache line thrash issues. Signed-off-by: Jay Vosburgh Signed-off-by: David S. Miller commit 24f8b2385e03a4f4c8dac513d03b5eaa475822b9 Author: Stephen Hemminger Date: Mon Nov 3 17:14:38 2008 -0800 net: increase receive packet quantum This patch gets about 1.25% back on tbench regression. My change to NAPI for multiqueue support changed the time limit on network receive processing. Under sustained loads like tbench, this can cause the receiver to reschedule prematurely. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit b9ac99855dcc0316ba2feee2b0d3e578f8315b75 Author: Harvey Harrison Date: Mon Nov 3 17:09:55 2008 -0800 printk: ipv4 address digits printed in reverse order put_dec_trunc prints the digits in reverse order and is reversed inside number(). Continue using put_dec_trunc, but reverse each quad in ip4_addr_string. [Noticed by Julius Volz] Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 48148938b494cd57029a43c758e9972307a31d2a Author: Julius Volz Date: Mon Nov 3 17:08:56 2008 -0800 IPVS: Remove supports_ipv6 scheduler flag Remove the 'supports_ipv6' scheduler flag since all schedulers now support IPv6. Signed-off-by: Julius Volz Signed-off-by: David S. Miller commit 445483758e35e0aaff5256d1b104a346ba77aafe Author: Julius Volz Date: Mon Nov 3 17:08:28 2008 -0800 IPVS: Add IPv6 support to LBLC/LBLCR schedulers Add IPv6 support to LBLC and LBLCR schedulers. These were the last schedulers without IPv6 support, but we might want to keep the supports_ipv6 flag in the case of future schedulers without IPv6 support. Signed-off-by: Julius Volz Acked-by: Simon Horman Signed-off-by: David S. Miller commit fa228b3fcb724ce2281a61737e09a8afa4fed542 Author: Matt Carlson Date: Mon Nov 3 16:58:53 2008 -0800 tg3: Update version to 3.95 This patch updates the version to 3.95. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 772638b6c87da7043c50914dbb033c08155508dd Author: Matt Carlson Date: Mon Nov 3 16:56:51 2008 -0800 broadcom: Add support for BCM50610 This patch adds the BCM50610 to the list of phys supported by the broadcom driver. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 042a75b99fbda6bf7c7bf4496e205e3e7acc953a Author: Matt Carlson Date: Mon Nov 3 16:56:29 2008 -0800 broadcom: Refine expansion register access routine This patch makes the expansion register access routines a little more formal. They will be used by the following bcm50610 support patch. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 5e0c676c717316f315dcf76da52dc0002c43632a Author: Matt Carlson Date: Mon Nov 3 16:56:07 2008 -0800 broadcom: Add flow control support This patch adds flow control support to Broadcom phys. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit fcb389dfd842be54545cb436b3437f07da10115c Author: Matt Carlson Date: Mon Nov 3 16:55:44 2008 -0800 tg3: 5785 enhancements This patch refines support for the 5785 device. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 9c61d6bc56bf0a5fb1ebfcf4c168cc5ce30e153b Author: Matt Carlson Date: Mon Nov 3 16:54:56 2008 -0800 tg3: Refine phylib support This patch refines the phylib support in the tg3 driver. The patch does the following things : * Rename tg3_mdio_config() to tg3_mdio_config_5785(). The 5785 will be the only device that will use it so the name might as well reflect that. * Fix a memory leak if mdiobus_register() fails. * Add code to deal with phy device detection failures. * Add code to correct the supported list of phy features based on the MAC <=> PHY interface. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 0a459aac9d151c2e36ec65723b9b845b24c5cbc3 Author: Matt Carlson Date: Mon Nov 3 16:54:15 2008 -0800 tg3: Allow WOL for phylib controlled Broadcom phys This patch allows WOL to be enabled for Broadcom phys under phylib control. The only exception is the AC131, which has a completely different register set. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 05ac4cb7dff4515447dce6e9a56c4de6b7e426d5 Author: Matt Carlson Date: Mon Nov 3 16:53:46 2008 -0800 tg3: Refine power management and WOL code Commit 12dac0756d357325b107fe6ec24921ec38661839 ("tg3: adapt tg3 to use reworked PCI PM code") introduced the new PCI PM API to the tg3 driver. The patch was understandably conservative, so this patch elaborates on that work. The patch starts by creating a single point in tg3_set_power_state() to decide whether or not to enable WOL. The rest of the code in tg3_set_power_state() was then pivoted to use the result of this decision. The patch then makes sure the device is allowed to wakeup before reporting whether or not WOL is currently enabled. The final hunks of the patch consolidate where the WOL capability and WOL enabled flags are set to a single location. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit df59c9403557397aafbe291533d113b752da7661 Author: Matt Carlson Date: Mon Nov 3 16:52:56 2008 -0800 tg3: Move phylib report to end of tg3_init_one Currently, phylib reports appear with a eth%d prefix. Move the line after register_netdev() and place it alongside the other informative messages. Update nearby informative messages accordingly. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit b2b98d4acc58a6f36b731e666c6ebd901cd6a27e Author: Matt Carlson Date: Mon Nov 3 16:52:32 2008 -0800 tg3: Do not enable APE on bcm5700 With older versions of the NVRAM format, the driver may mistakenly determine that APE is enabled. Make sure this doesn't happen by restricting the ENABLE_APE check to devices known to have more recent NVRAM image formats. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit bcb37f6cb57e565e7bd342272652c3a50cf88761 Author: Matt Carlson Date: Mon Nov 3 16:52:09 2008 -0800 tg3: Reclaim TG3_FLG3_5761_5784_AX_FIXES flag This patch reclaims the TG3_FLG3_5761_5784_AX_FIXES flag. It only used twice in non-fast paths. This patch also consolidates some other places where specific 5784 AX chip revisions can be generalized. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 3f007891da0ad3d9192e9aa13ce4e3aaf20c33fa Author: Matt Carlson Date: Mon Nov 3 16:51:36 2008 -0800 tg3: Preserve LAA when device control is released This patch moves the __tg3_set_mac_addr() function earlier in the file listing, to avoid a function prototype, and calls the function to restore the LAA after a driver unload chip reset. With this code in place, the administrator can wake the machine using the LAA. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit b2aee1545dc3c05c8d5cf116de1e92907e98009b Author: Matt Carlson Date: Mon Nov 3 16:51:11 2008 -0800 tg3: Preserve DASH connectivity when WOL enabled DASH firmware runs on the APE side of the chip, but it requires a few MAC to be programmed correctly. When WOL is enabled and management firmware is disabled, incoming packets are evaluated and discarded at the chip's rule processor. When management firmware is enabled, the hardware must be informed that there are agents further up the stack that still use the incoming frames. Normally management firmware will configure the MAC correctly on its own, but there can be cases where the setting could get clobbered by the driver. The first hunk of this patch preserves this setting. The second hunk of this patch wipes out the driver present signature of the APE memory space. By doing so, the DASH firmware can assume driver absent behavior. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 63532394af307795ea637a283bd1fd057f5dfcea Author: Matt Carlson Date: Mon Nov 3 16:49:57 2008 -0800 tg3: Use pci_ioremap_bar() This patch replaces the existing APE register mapping code with a call to pci_ioremap_bar(). The code that maps the main device register space did not undergo a similar change because the information derived from the pci_resource_start() and pci_resource_len() is still used to populate the (optional) mem_start and mem_end netdevice members. Replace hardcoded constants where appropriate. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit c88e668b52c8cd8bc55b6734c7dfbb0cb005d445 Author: Matt Carlson Date: Mon Nov 3 16:49:18 2008 -0800 tg3: Add 5761S support This patch adds support for the 5761S chip variants. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 6bdbfe99916398dbb28d83833cc04757110f2738 Author: Alok Kataria Date: Mon Nov 3 11:31:28 2008 -0800 x86: VMware: Fix vmware_get_tsc code Impact: Fix possible failure to calibrate the TSC on Vmware near 4 GHz The current version of the code to get the tsc frequency from the VMware hypervisor, will be broken on processor with frequency (4G-1) HZ, because on such processors eax will have UINT_MAX and that would be legitimate. We instead check that EBX did change to decide if we were able to read the frequency from the hypervisor. Signed-off-by: Alok N Kataria Signed-off-by: H. Peter Anvin commit 4ef0ef1966dae9e9e29762e4e719af3cfd146ca0 Author: Takashi Iwai Date: Mon Nov 3 17:47:49 2008 +0100 ALSA: hda - Fix missing ADC list in ALC260 auto-probe mode The commit f9e336f65b666b8f1764d17e9b7c21c90748a37e ALSA: hda - Unify capture mixer creation in realtek codes removed the ADC check for ALC260 auto-probe mode accidentally. Re-added to patch_alc260() again. Signed-off-by: Takashi Iwai commit 26f5df265f06b8c8fe9f5d0942b7d8df00e5edec Author: Takashi Iwai Date: Mon Nov 3 17:39:46 2008 +0100 ALSA: hda - Add ALC299 fujitsu preset model Added a preset model for FSC Amilo with ALC269 codec chip. Signed-off-by: Takashi Iwai commit 67305ebc992abf2121fb2149fd8a707cd7cfcbd2 Author: Jarek Poplawski Date: Mon Nov 3 02:52:50 2008 -0800 pkt_sched: sch_generic: Kfree gso_skb in qdisc_reset() Since gso_skb is re-used for qdisc_peek_dequeued(), and this skb is counted in the qdisc->q.qlen, it has to be kfreed during qdisc_reset() when qlen is zeroed. With help from David S. Miller Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 5799de0b12c773874282444052da401989075df6 Author: Jianjun Kong Date: Mon Nov 3 02:49:10 2008 -0800 net: clean up net/ipv4/tcp_ipv4.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit 539afedfccb39577c9264b29f11ec9556fd45022 Author: Jianjun Kong Date: Mon Nov 3 02:48:48 2008 -0800 net: clean up net/ipv4/devinet.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit f4cca7ffb2700bff5752fbbc28f49d58ed2c5cb3 Author: Jianjun Kong Date: Mon Nov 3 02:48:14 2008 -0800 net: clean up net/ipv4/pararp.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit fd3f8c4cb632c28ef915a535617a0fcddcfe3f80 Author: Jianjun Kong Date: Mon Nov 3 02:47:38 2008 -0800 net: clean up net/ipv4/ip_fragment.c tcp_timer.c ip_input.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit e113a745f693af196c8081b328bf42def086989b Author: Dimitri Sivanich Date: Fri Oct 31 08:03:41 2008 -0500 sched/rt: small optimization to update_curr_rt() Impact: micro-optimization to SCHED_FIFO/RR scheduling A very minor improvement, but might it be better to check sched_rt_runtime(rt_rq) before taking the rt_runtime_lock? Peter Zijlstra observes: > Yes, I think its ok to do so. > > Like pointed out in the other thread, there are two races: > > - sched_rt_runtime() going to RUNTIME_INF, and that will be handled > properly by sched_rt_runtime_exceeded() > > - sched_rt_runtime() going to !RUNTIME_INF, and here we can miss an > accounting cycle, but I don't think that is something to worry too > much about. Signed-off-by: Dimitri Sivanich Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar -- kernel/sched_rt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 7e5e26a3d8ac4bcadb380073dc9604c07a9a6198 Author: Steven Rostedt Date: Fri Oct 31 09:36:38 2008 -0400 ftrace: fix hardirq header for non ftrace archs Impact: build fix for non-ftrace architectures Not all archs implement ftrace, and therefore do not have an asm/ftrace.h. This patch corrects the problem. The ftrace_nmi_enter/exit now must be defined for all archs that implement dynamic ftrace. Currently, only x86 does. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 7a895f53cda9d9362c30144e42c124a1ae996b9e Merge: d9e540762f5cdd89f24e518ad1fd31142d0b9726 5d9881ea1440f046ee851bbaa2a2962543336a11 fd3fdf11d3c649769e02459c5f1b8081a15e9007 a26a2a27396c0a0877aa701f8f92d08ba550a6c9 127cafbb276266b1b8da967bfe25a062ab1d42ab c2c80529460095035752bf0ecc1af82c1e0f6e0f Author: Ingo Molnar Date: Mon Nov 3 10:34:23 2008 +0100 Merge branches 'tracing/ftrace', 'tracing/markers', 'tracing/mmiotrace', 'tracing/nmisafe', 'tracing/tracepoints' and 'tracing/urgent' into tracing/core commit 127cafbb276266b1b8da967bfe25a062ab1d42ab Author: Lai Jiangshan Date: Tue Oct 28 10:51:53 2008 +0800 tracepoint: introduce *_noupdate APIs. Impact: add new tracepoint APIs to allow the batched registration of probes new APIs separate tracepoint_probe_register(), tracepoint_probe_unregister() into 2 steps. The first step of them is just update tracepoint_entry, not connect or disconnect. this patch introduces tracepoint_probe_update_all() for update all. these APIs are very useful for registering lots of probes but just updating once. Another very important thing is that *_noupdate APIs do not require module_mutex. Signed-off-by: Lai Jiangshan Acked-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 19dba33c43a2f0f2aa727ae075ec3b11330775ef Author: Lai Jiangshan Date: Tue Oct 28 10:51:49 2008 +0800 tracepoint: simplification for tracepoints using RCU Impact: simplify implementation Now, unused memory is handled by struct tp_probes. old code use these three field to handle unused memory. struct tracepoint_entry { ... struct rcu_head rcu; void *oldptr; unsigned char rcu_pending:1; ... }; in this way, unused memory is handled by struct tracepoint_entry. it bring reenter bug(it was fixed) and tracepoint.c is filled full of ".*rcu.*" code statements. this patch removes all these. and: rcu_barrier_sched() is removed. Do not need regain tracepoints_mutex after tracepoint_update_probes() several little cleanup. Signed-off-by: Lai Jiangshan Acked-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 3555105333ae55414d0fe051557bd7dc590f5255 Author: Gary Hade Date: Fri Oct 31 10:52:03 2008 -0700 x86: add memory hotremove config option Impact: enable CONFIG_MEMORY_HOTREMOVE feature on x86. (default-off) Memory hotremove functionality can currently be configured into the ia64, powerpc, and s390 kernels. This patch makes it possible to configure the memory hotremove functionality into the x86 kernel as well. Signed-off-by: Badari Pulavarty Signed-off-by: Gary Hade Signed-off-by: Ingo Molnar commit c354e1246348e25c714e6b2973f3257183d06e2c Author: Jianjun Kong Date: Mon Nov 3 00:28:02 2008 -0800 net: clean up net/ipv4/ipmr.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit 09cb105ea78d5644570d52085e2149f784575872 Author: Jianjun Kong Date: Mon Nov 3 00:27:11 2008 -0800 net: clean up net/ipv4/ip_sockglue.c tcp_output.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit a7e9ff735bd5e3437a8e5ecbbc2db3865974a523 Author: Jianjun Kong Date: Mon Nov 3 00:26:09 2008 -0800 net: clean up net/ipv4/igmp.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit 6ed2533e55889943c478d11b1f63aaed2fd767cc Author: Jianjun Kong Date: Mon Nov 3 00:25:16 2008 -0800 net: clean up net/ipv4/fib_frontend.c fib_hash.c ip_gre.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit 5a5f3a8db9d70c90e9d55b46e02b2d8deb1c2c2e Author: Jianjun Kong Date: Mon Nov 3 00:24:34 2008 -0800 net: clean up net/ipv4/ipip.c raw.c tcp.c tcp_minisocks.c tcp_yeah.c xfrm4_policy.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit d9319100c1ad7d0ed4045ded767684ad25670436 Author: Jianjun Kong Date: Mon Nov 3 00:23:42 2008 -0800 net: clean up net/ipv4/ah4.c esp4.c fib_semantics.c inet_connection_sock.c inetpeer.c ip_output.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit 5b9a0e14eb4bf40a7cb780af4723560e06753f2d Author: Cyrill Gorcunov Date: Sat Nov 1 18:06:51 2008 +0300 x86: nmi - nmi_watchdog boot param docs cleanup Impact: documentation update 1) nmi_watchdog boot parameter is common to 32/64 bit modes. So move it from Documentation/x86/x86_64/boot-options.txt to Documentation/kernel-parameters.txt and integrate with. 2) Also fix [panic] keyword placement -- it ought to be at first position otherwise it will not be recognized. 3) Document lapic and ioapic keywords. Signed-off-by: Cyrill Gorcunov Signed-off-by: Ingo Molnar commit d9e540762f5cdd89f24e518ad1fd31142d0b9726 Author: Peter Zijlstra Date: Sat Nov 1 19:57:37 2008 +0100 ftrace: ftrace_dump_on_oops=[tracer] Impact: add new (optional) debug boot option In order to facilitate early boot trouble, allow one to specify a tracer on the kernel boot line. Signed-off-by: Peter Zijlstra Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 36609469c8278554b046aa4cc9a5fa9ccea35306 Merge: b3acf29afda06c76774dc6df6246c37ae707836b 45beca08dd8b6d6a65c5ffd730af2eac7a2c7a03 Author: Ingo Molnar Date: Mon Nov 3 09:11:13 2008 +0100 Merge commit 'v2.6.28-rc3' into tracing/ftrace commit 8bb8c4386d08f2cc5d871d22f220d35032213f84 Author: Peter Zijlstra Date: Sat Nov 1 00:13:49 2008 +0100 sched, ftrace: trace sched.c Impact: allow function tracing within sched.c Its useful to see what happens in sched.c. Signed-off-by: Peter Zijlstra Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit db5935001a43528e673ad26ffec9d98c60a496a9 Merge: 34f3a814eef8069a24e5b3ebcf27aba9dabac2ea 45beca08dd8b6d6a65c5ffd730af2eac7a2c7a03 Author: Ingo Molnar Date: Mon Nov 3 08:57:41 2008 +0100 Merge commit 'v2.6.28-rc3' into sched/core commit e0db4a786bbd73145b4feb45c75d49b6e60fe72c Author: David S. Miller Date: Sun Nov 2 23:57:06 2008 -0800 sunrpc: Fix build warning due to typo in %pI4 format changes. Noticed by Stephen Hemminger. Signed-off-by: David S. Miller commit 20971a0afb8bc0eeb6865ceadd435e4a2dba0fd7 Author: Julius Volz Date: Sat Nov 1 13:13:19 2008 +0000 IPVS: Add IPv6 support to SH and DH schedulers Add IPv6 support to SH and DH schedulers. I hope this simple IPv6 address hashing is good enough. The 128 bit are just XORed into 32 before hashing them like an IPv4 address. Signed-off-by: Julius Volz Acked-by: Simon Horman Signed-off-by: David S. Miller commit 2a6cf35543302e9a5c807eaf13298f510fbdf8f2 Merge: 8ba25dad0ac78850cd46d91186a27d60f7314752 3f8b4b13785c2737413d3241c21c7c86a41535ef Author: David S. Miller Date: Sun Nov 2 13:13:07 2008 -0800 Merge branch 'davem-next' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 commit 3f8b4b13785c2737413d3241c21c7c86a41535ef Author: Andy Gospodarek Date: Wed Oct 22 11:19:48 2008 +0000 bonding: update docs to correctly reflect arp_ip_target behavior This documentation patch hopes to clarify that the '+' was only needed for Fedora 7 and Red Hat Enterprise Linux 5.0 and 5.1. After that the IP addreses could be added as a comma separated list just like the module option. Signed-off-by: Andy Gospodarek Signed-off-by: Jeff Garzik commit 237f3e1d80bb9d4c6eaf684552f422568ba04ffe Author: Mike Frysinger Date: Fri Oct 31 22:11:06 2008 +0000 smc91x: add __init markings to smc_drv_probe() The smc_drv_probe() is the platform_driver probe function and it is only called during init. Further, it calls smc_probe() which is marked as __init already. Signed-off-by: Mike Frysinger Signed-off-by: Jeff Garzik commit dccd547e2bf2c01a13c967ae03a705338394fad6 Author: Joe Korty Date: Wed Oct 29 14:22:16 2008 -0700 forcdeth: increase max_interrupt_work This eliminates the following often-generated warning from my 64 bit Opteron SMP test stand: eth0: too many iterations (6) in nv_nic_irq According to the web, the problem is that the forcedeth driver has a too-low value for max_interrupt_work. Grepping the kernel I see that forcedeth has the second lowest value of all ethernet drivers (ie, 6). Most are in the 20-40 range. So this patch increases this a bit, from 6 to 15 (at 15 forcedeth becomes the driver with third-lowest max_interrupt_work value). My test stand, which used to print out the above warnings repetitively whenever it was under heavy net load, no longer does so. Signed-off-by: Joe Korty Cc: Ayaz Abdulla Cc: Jeff Garzik Signed-off-by: Andrew Morton Signed-off-by: Jeff Garzik commit 0befdb3e0a26a8949063915274e1bec8873c526b Author: Jesse Brandeburg Date: Fri Oct 31 00:46:40 2008 -0700 ixgbe: add device support for 82598AT (copper 10GbE) adapters Intel is currently shipping support for adapters with a phy that does 10GBase-T (copper), which is 10 Gigabit ethernet over standard Category 6 cabling. Signed-off-by: Jesse Brandeburg Signed-off-by: Jeff Kirsher Signed-off-by: Jeff Garzik commit e053b628d367cd7b39ae2c4bb0124edc2e058a41 Author: Stephen Hemminger Date: Fri Oct 31 16:52:04 2008 -0700 atlx: timer cleanup Do some cleanup on timer usage in this driver: * Use round_jiffies to align wakeups and reduce power. * Remove atl1_watchdog which does nothing but rearm itself * Use setup_timer() function Signed-off-by: Stephen Hemminger Signed-off-by: Jeff Garzik commit 02e7173149c3ffcf963075ec2bdc5f7be8335a78 Author: Stephen Hemminger Date: Fri Oct 31 16:52:03 2008 -0700 atlx: use embedded net_device_stats There is now a net_device_stats structure inside net_device that should be used if possible by devices. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: Jeff Garzik commit 8ba25dad0ac78850cd46d91186a27d60f7314752 Author: Jarek Poplawski Date: Sun Nov 2 00:36:03 2008 -0700 sch_netem: Replace ->requeue() method with open code After removing netem classful functionality we are sure its inner qdisc is tfifo, so we can replace qdisc->ops->requeue() method with open code. After this patch there are no more ops->requeue() users. The idea of this patch is by Patrick McHardy. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 02201464119334690fe209849843881b8e9cfa9f Author: Jarek Poplawski Date: Sun Nov 2 00:35:24 2008 -0700 sch_netem: Remove classful functionality Patrick McHardy noticed that: "a lot of the functionality of netem requires the inner tfifo anyways and rate-limiting is usually done on top of netem. So I would suggest so either hard-wire the tfifo qdisc or at least make the assumption that inner qdiscs are work-conserving.", and later: "- a lot of other qdiscs still don't work as inner qdiscs of netem [...]". So, according to his suggestion, this patch removes classful options of netem. The main reason of this change is to remove ops->requeue() method, which is currently used only by netem. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit ae27e98a51526595837ab7498b23d6478a198960 Author: Sangtae Ha Date: Wed Oct 29 00:07:18 2008 -0400 [TCP] CUBIC v2.3 Signed-off-by: Sangtae Ha Signed-off-by: David S. Miller commit e27dfcea48372a4105d9fdf2e8450926737f6215 Author: Jianjun Kong Date: Sat Nov 1 21:38:31 2008 -0700 af_unix: clean up net/unix/af_unix.c garbage.c sysctl_net_unix.c clean up net/unix/af_unix.c garbage.c sysctl_net_unix.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit c37ccc0d4e2a4ee52f1a40cff1be0049f2104bba Author: Eric Dumazet Date: Sat Nov 1 21:19:18 2008 -0700 udp: add a missing smp_wmb() in udp_lib_get_port() Corey Minyard spotted a missing memory barrier in udp_lib_get_port() We need to make sure a reader cannot read the new 'sk->sk_next' value and previous value of 'sk->sk_hash'. Or else, an item could be deleted from a chain, and inserted into another chain. If new chain was empty before the move, 'next' pointer is NULL, and lockless reader can not detect it missed following items in original chain. This patch is temporary, since we expect an upcoming patch to introduce another way of handling the problem. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 7e3a42a12c4b9d99bfe81cb929cadf0e08a37c49 Author: Nicolas Dichtel Date: Sat Nov 1 21:12:07 2008 -0700 xfrm6: handling fragment RFC4301 Section 7.1 says: "7.1. Tunnel Mode SAs that Carry Initial and Non-Initial Fragments All implementations MUST support tunnel mode SAs that are configured to pass traffic without regard to port field (or ICMP type/code or Mobility Header type) values. If the SA will carry traffic for specified protocols, the selector set for the SA MUST specify the port fields (or ICMP type/code or Mobility Header type) as ANY. An SA defined in this fashion will carry all traffic including initial and non-initial fragments for the indicated Local/Remote addresses and specified Next Layer protocol(s)." But for IPv6, fragment is treated as a protocol. This change catches protocol transported in fragmented packet. In IPv4, there is no problem. Signed-off-by: Nicolas Dichtel Signed-off-by: David S. Miller commit 395628ef4ea12ff0748099f145363b5e33c69acb Author: Alok Kataria Date: Fri Oct 24 17:22:01 2008 -0700 x86: Skip verification by the watchdog for TSC clocksource. Impact: Changes timekeeping on Vmware (or with tsc=reliable). This is achieved by resetting the CLOCKSOURCE_MUST_VERIFY flag. We add a tsc=reliable commandline option to enable this. This enables legacy hardware without HPET, LAPIC, or ACPI timers to enter high-resolution timer mode. Along with that have extended this to be used in virtualization environement too. Now we also set this flag if the X86_FEATURE_TSC_RELIABLE bit is set. This is important since there is a wrap-around problem with the acpi_pm timer. The acpi_pm counter is just 24bits and this can overflow in ~4 seconds. With the NO_HZ kernels in virtualized environment, there can be situations when the guest is descheduled for longer duration, as a result we may miss the wrap of the acpi counter. When TSC is used as a clocksource and acpi_pm timer is being used as the watchdog clocksource this error in acpi_pm results in TSC being marked as unstable, and essentially results in time dropping in chunks of 4 seconds whenever this wrap is missed. Since the virtualized TSC is reliable on VMware, we should always use the TSCs clocksource on VMware, so we skip the verfication at runtime, by checking for the feature bit. Since we reset the flag for mgeode systems too, i have combined the mgeode case with the feature bit check. Signed-off-by: Jeff Hansen Signed-off-by: Alok N Kataria Signed-off-by: Dan Hecht Signed-off-by: H. Peter Anvin commit eca0cd028bdf0f6aaceb0d023e9c7501079a7dda Author: Alok Kataria Date: Fri Oct 31 12:01:58 2008 -0700 x86: Add a synthetic TSC_RELIABLE feature bit. Impact: Changes timebase calibration on Vmware. Use the synthetic TSC_RELIABLE bit to workaround virtualization anomalies. Virtual TSCs can be kept nearly in sync, but because the virtual TSC offset is set by software, it's not perfect. So, the TSC synchronization test can fail. Even then the TSC can be used as a clocksource since the VMware platform exports a reliable TSC to the guest for timekeeping purposes. Use this bit to check if we need to skip the TSC sync checks. Along with this also set the CONSTANT_TSC bit when on VMware, since we still want to use TSC as clocksource on VM running over hardware which has unsynchronized TSC's (opteron's), since the hypervisor will take care of providing consistent TSC to the guest. Signed-off-by: Alok N Kataria Signed-off-by: Dan Hecht Signed-off-by: H. Peter Anvin commit 88b094fb8d4fe43b7025ea8d487059e8813e02cd Author: Alok Kataria Date: Mon Oct 27 10:41:46 2008 -0700 x86: Hypervisor detection and get tsc_freq from hypervisor Impact: Changes timebase calibration on Vmware. v3->v2 : Abstract the hypervisor detection and feature (tsc_freq) request behind a hypervisor.c file v2->v1 : Add a x86_hyper_vendor field to the cpuinfo_x86 structure. This avoids multiple calls to the hypervisor detection function. This patch adds function to detect if we are running under VMware. The current way to check if we are on VMware is following, # check if "hypervisor present bit" is set, if so read the 0x40000000 cpuid leaf and check for "VMwareVMware" signature. # if the above fails, check the DMI vendors name for "VMware" string if we find one we query the VMware hypervisor port to check if we are under VMware. The DMI + "VMware hypervisor port check" is needed for older VMware products, which don't implement the hypervisor signature cpuid leaf. Also note that since we are checking for the DMI signature the hypervisor port should never be accessed on native hardware. This patch also adds a hypervisor_get_tsc_freq function, instead of calibrating the frequency which can be error prone in virtualized environment, we ask the hypervisor for it. We get the frequency from the hypervisor by accessing the hypervisor port if we are running on VMware. Other hypervisors too can add code to the generic routine to get frequency on their platform. Signed-off-by: Alok N Kataria Signed-off-by: Dan Hecht Signed-off-by: H. Peter Anvin commit 49ab56ac6e1b907b7dadb72a4012460359feaf0e Author: Alok Kataria Date: Sat Nov 1 18:34:37 2008 -0700 x86: add X86_FEATURE_HYPERVISOR feature bit Impact: Number declaration only. Add X86_FEATURE_HYPERVISOR bit (CPUID level 1, ECX, bit 31). Signed-off-by: H. Peter Anvin commit 4074ea21493fe668501bfc7548d10657ca6f14c2 Author: Takashi Iwai Date: Sat Nov 1 11:01:50 2008 +0100 ALSA: ice1724 - Fix IRQ register initialization The IRQMASK register has to be set to zero expclitily at the initialization otherwise you'll get no interrupts properly at later operations. Also, removed the old commented out codes. Signed-off-by: Takashi Iwai commit e25cf4a6945e0f859186231be7164ba565412e0a Author: Johannes Berg Date: Thu Oct 23 08:51:20 2008 +0200 mac80211: fix two kernel-doc warnings One parameter wasn't described and one I forgot to update when renaming it; also update TBDs in sta_info. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 4c2442980043b9585be12b4f59e1bbe7e1f7a801 Author: Luis R. Rodriguez Date: Mon Oct 27 10:17:29 2008 -0700 ath9k: use ETH_P_PAE It was being discussed where we would put this, but now it found a home so use its define. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit 9371dd685d212599f0f07e6bf1510c751f70bb37 Author: Bob Copeland Date: Sun Oct 26 11:24:48 2008 -0400 ath9k: remove useless conditional ath9k_hw_keyreset returns true in either branch. Signed-off-by: Bob Copeland Signed-off-by: John W. Linville commit 4fb30784c720b863203957f76e3fde0d53932746 Author: Andrey Borzenkov Date: Sun Oct 19 12:06:11 2008 +0400 orinoco: cache downloadable firmware image in memory for use during resume If card is using downloadable firmware (like Agere 9.x), firmware has to be reloaded during resume. It is not possible to use request_firmware for that, because tasks are still frozen, so request_firmware will just timeout and fail. So cache firmware image in memory for later reuse in ->resume method. Signed-off-by: Andrey Borzenkov Signed-off-by: John W. Linville commit 0df6cbb7d8a0a8fea69138e9e463671a8ad99f16 Author: Andrey Borzenkov Date: Sun Oct 12 20:15:43 2008 +0400 orinoco: reload firmware on resume On resume card state is likely lost so we have to reload firmware again. Signed-off-by: Andrey Borzenkov Acked-by: David Kilroy Signed-off-by: John W. Linville commit 4c674c60bd567597f1224973712b352f4f474890 Author: Nick Kossifidis Date: Sun Oct 26 20:40:25 2008 +0200 ath5k: Update interrupt masking code *Properly get/set all available ISR/IMR values and review common/uncommon bits *Better handling of per-txq interrupts (we can now resolve what q is generating each interrupt -this will help in debuging wme later) *Some minor updates from legacy-hal *Properly handle RXNOFRM and TXNOFRM interrupt masking (even when we don't set them on IMR they keep showing up, so we disable them by zeroing AR5K_RXNOFRM and AR5K_TXNOFRM registers). This doesn't exist on legacy-hal but i've tested it on various cards and it works fine. Changes-Licensed-under: ISC Signed-Off-by: Nick Kossifidis Signed-off-by: John W. Linville commit 84fa4f43c418d2eaad06734ea780a74c869f79c3 Author: Johannes Berg Date: Fri Oct 24 20:32:23 2008 +0200 wireless regulatory: move ignore_request This function is only used once, move it closer to its caller. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 2083c4997b95fffe8d4f71741bef2298810805a3 Author: Johannes Berg Date: Fri Oct 24 20:32:22 2008 +0200 wireless: clean up regulatory ignore_request function This function has a few WARNs that may eventually trigger when an AP sends rogue beacons, those must be removed. Some of the comments in the function are also inappropriate as this function is concerned with the global hint, not a per- wiphy thing (which a multidomain flag on a wiphy would imply). I'm convinced that we don't need to do anything to implement multi-domain capability as 802.11-2007 specifies it because it makes only two things mandatory: * starting of BSS/IBSS must have country information (this can easily be done with a mac80211 patch) * a STA must adopt the country information (we already have the framework for this) But we don't have anything implemented anyway for now. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit be3d48106c1e5d075784e5e67928a6b5ffc0f3b6 Author: Johannes Berg Date: Fri Oct 24 20:32:21 2008 +0200 wireless: remove struct regdom hinting The code needs to be split out and cleaned up, so as a first step remove the capability, to add it back in a subsequent patch as a separate function. Also remove the publically facing return value of the function and the wiphy argument. A number of internal functions go from being generic helpers to just being used for alpha2 setting. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit d2372b315289aec9f565a855023c40654a5bff68 Author: Johannes Berg Date: Fri Oct 24 20:32:20 2008 +0200 wireless: make regdom passing semantics simpler The regdom struct is given to the core, so it might as well free it in error conditions. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 7dddaf1a36a372c14ca96a0b5fdfbe2015c43841 Author: Daniel Halperin Date: Thu Oct 23 23:48:58 2008 -0700 iwlwifi: Update reclaim flag The reclaim flag should include REPLY_RX_MPDU_CMD in the list of commands issued by uCode. This is for safety in case the SEQ_RX_FRAME bit is set incorrectly. Signed-off-by: Daniel Halperin Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 9fe1c5052019da3d2770abd7b727cbc1083f7937 Author: Fabrice Bellet Date: Thu Oct 23 23:48:57 2008 -0700 iwl3945: iwl3945_mac_get_tsf() should not return zero The problem fixed here is that iwl3945_mac_get_tsf() returns 0, as the function is not implemented, and this is considered as a valid value by the mac layer in mlme.c:1605. The consequence is that the STA in ad-hoc mode is inserted/removed quite frequently due to IBSS merging. This patch fixes : http://www.intellinuxwireless.org/bugzilla/show_bug.cgi?id=1781 and https://bugzilla.redhat.com/show_bug.cgi?id=459401 Signed-off-by: Fabrice Bellet Acked-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit a96a27f97f2bbfc1fca54bc3c0b0d41484152740 Author: Tomas Winkler Date: Thu Oct 23 23:48:56 2008 -0700 iwlwifi: run through spell checker Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 127901ab69bbb263fb2b46e850cf20c57ac321d3 Author: Tomas Winkler Date: Thu Oct 23 23:48:55 2008 -0700 iwlwifi: refactor tx byte count table usage This patch drops unreadable usage of IWL_SET/GET_BITS16 in byte count tables handling This patch also cleans a bit the byte count table code and adds WARN_ON traps on invalid values This patch is pure cleanup, no functional changes. Signed-off-by: Tomas Winkler Cc: Johannes Berg Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 951891c7ef844919d30aac7b1fc7396fd8be23ff Author: Mohamed Abbas Date: Thu Oct 23 23:48:54 2008 -0700 iwlwifi: clear scanning bits upon failure In iwl_bg_request_scan function, if we could not send a scan command it will go to done. In done it does the right thing to call mac80211 with scan complete, but the problem is STATUS_SCAN_HW is still set causing any future scan to fail. Fix by clearing the scanning status bits if scan fails. Signed-off-by: Mohamed Abbas Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 60d32215a94ebba2517b8d92612200ab610943fd Author: Daniel C. Halperin Date: Thu Oct 23 23:48:53 2008 -0700 iwlwifi: convert correctly rate_n_flags to PLCP index for mimo3 packets The driver does not properly convert rate_n_flags to PLCP index for mimo3 packets. This makes mac80211 drop the packets Signed-off-by: Daniel C. Halperin Reviewed-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit f69f42a6bbefb311ccb1626fdb61f723160afbfd Author: Tomas Winkler Date: Thu Oct 23 23:48:52 2008 -0700 iwlwifi: calibration command namespace renaming Since calibration framework is not HW specific remove 5000 and 4965 prefix This patch doesn't provide any functional changes only code renaming and movement Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 0ef2ca67b19e2286eed8eeb7ef7a35ce57d6d629 Author: Tomas Winkler Date: Thu Oct 23 23:48:51 2008 -0700 iwlwifi: parametrize eeprom versions This patch uses new parameters eeprom_ver and eeprom_calib_ver to support additional HW. Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit ed7fafec5e566a30fb21586c98cbef76c306d209 Author: Tomas Winkler Date: Thu Oct 23 23:48:50 2008 -0700 iwlwifi: don't update TFD free counter for invalid station This patch makes sure that station table is not accessed with invalid station id in 4965 TX response path Signed-off-by: Tomas Winkler Reported-by: Johannes Berg Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 3fd07a1e5aba89d4be3696c46cb7297f1873195a Author: Tomas Winkler Date: Thu Oct 23 23:48:49 2008 -0700 iwlwifi: refactor TX response flow This patch utilize 5000 new TX response command which contains all necessary information and avoids back referencing to the original TX frame. It also change handling of software queue tracking 4965 flow is aligned with changes as much as possible. Signed-off-by: Tomas Winkler Reviewed-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 8b30b1fe368ab03049435884c11c5c50e4c4ef0b Author: Sujith Date: Fri Oct 24 09:55:27 2008 +0530 mac80211: Re-enable aggregation Wireless HW without any dedicated queues for aggregation do not need the ampdu_queues mechanism present right now in mac80211. Since mac80211 is still incomplete wrt TX MQ changes, do not allow aggregation sessions for drivers that set ampdu_queues. This is only an interim hack until Intel fixes the requeue issue. Signed-off-by: Sujith Signed-off-by: Luis Rodriguez Signed-off-by: John W. Linville commit 4393dce9402c58744433c7a4f3931e17ddde4fb4 Author: Andrey Yurovsky Date: Thu Oct 23 13:10:53 2008 -0700 mac80211: allow all interfaces types to handle RX action frames Eliminate the vif.type check in ieee80211_rx_h_action. This check is unnecessary (these action frames can be handled by all interface types) and currently prevents, for example, AP interfaces from handling BACK action frames such as ADDBA and DELBA requests. Signed-off-by: Andrey Yurovsky Acked-by: Johannes Berg Signed-off-by: John W. Linville commit f3e63db2e5998bf01852c72d8fa3d8cf988fb6cd Author: Johannes Berg Date: Thu Oct 23 09:40:01 2008 +0200 wireless: remove write-only 'granted' variable Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit a4510bf8d96698496d7d2bb242917b4bbfa9bf28 Author: Sujith Date: Thu Oct 23 12:15:19 2008 +0530 ath9k: Check if the STA supports HT when initializing rate control Signed-off-by: Sujith Signed-off-by: John W. Linville commit 075cbc9eb15da8f4cba7c7eaadedd8b030d3a87a Author: Sujith Date: Thu Oct 23 12:14:02 2008 +0530 mac80211: Change WARN_ON to WARN_ON_ONCE A warning would be printed for every packet that is transmitted if the rate control information isn't setup. Change this to WARN_ON_ONCE. Signed-off-by: Sujith Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 5c020dc6a0f75de3cd75d9cca3b589abc1826fc5 Author: Luis R. Rodriguez Date: Wed Oct 22 13:28:45 2008 -0700 ath9k: Allow user to change tx power when asked We were also changing tx power even when we were not asked to, this enforces the change only when we are asked nicely. When not asked we simply try to use the max power, we don't tx power at all for rate control. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit f97e40078e44c1db96269286adc0b12dc8eae3c2 Author: Luis R. Rodriguez Date: Wed Oct 22 13:28:44 2008 -0700 ath9k: enable RX interrupt mitigation This enables hardware interrupt mitigation on RX. It should alleviate system interrupt load intelligently. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit b139a10a0aaf3c8041af348c2268d59e1610dc83 Author: Luis R. Rodriguez Date: Wed Oct 22 13:28:43 2008 -0700 ath9k: remove pointless sc_txintrperiod and spin_lock_bh on tx prepare sc_txintrperiod is currently set to 0 and never updated. We won't be using this, if anything we will consider using TX interrupt mitigation but that is different and not yet tested. So remove sc_txintrperiod and the pointless spin_lock_bh() on tx prepare. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit d9d2925713d92bbe33b2edff3d7de1ce5646ab54 Author: Luis R. Rodriguez Date: Wed Oct 22 13:13:53 2008 -0700 mac80211: make use of regulatory tx power settings on change of tx power We do not know what max power to allow until a device is targeting a channel, therefore only allow changing tx power if a channel is defined. Also make use of the channel's max power setting as defined by regulatory rules before allowing the user to use the requested power setting. If the user asked us to figure it out we use the max allowed by regulatory. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit e2ef12d3fdb771002e7c7b6bd8f19902b1934e03 Author: Rami Rosen Date: Wed Oct 22 09:58:39 2008 +0200 mac80211: check return value of dev_alloc_skb() in ieee80211_sta_join_ibss(). This patch add a check on the return value of dev_alloc_skb() in ieee80211_sta_join_ibss() in net/mac80211/mlme.c. Signed-off-by: Rami Rosen Signed-off-by: John W. Linville commit 72118015271e6d3852cb9f647efe0987d131adaa Author: John W. Linville Date: Tue Sep 30 21:43:03 2008 -0400 wireless: avoid some net/ieee80211.h vs. linux/ieee80211.h conflicts There is quite a lot of overlap in definitions between these headers... Signed-off-by: John W. Linville commit 9387b7caf3049168fc97a8a9111af8fe2143af18 Author: John W. Linville Date: Tue Sep 30 20:59:05 2008 -0400 wireless: use individual buffers for printing ssid values Also change escape_ssid to print_ssid to match print_mac semantics. Signed-off-by: John W. Linville commit 2819f8ad6da1e24b5dd94a221978e61f2a9c972a Author: John W. Linville Date: Tue Sep 30 17:50:31 2008 -0400 wireless: escape_ssid should handle non-printables Also use common backslash sequences like \t, \n, \r, and \\ as well as \0. Signed-off-by: John W. Linville commit c5d3dce875ef055ed9b14f169cc967cc2c8faf1f Author: John W. Linville Date: Tue Sep 30 17:17:26 2008 -0400 wireless: remove NETWORK_EMPTY_ESSID flag It is unnecessary and of questionable value. Also remove is_empty_ssid, as it is also unnecessary. Signed-off-by: John W. Linville commit 7e272fcff6f0a32a3d46e600ea5895f6058f4e2d Author: John W. Linville Date: Wed Sep 24 18:13:14 2008 -0400 wireless: consolidate on a single escape_essid implementation Signed-off-by: John W. Linville commit ddf4ac53fb8a12a027c0486db743ae040f45b56a Author: Johannes Berg Date: Wed Oct 22 11:41:38 2008 +0200 mac80211: insert AP sta entry after filling it We never clearly defined the semantics of the sta_notify callback and it was originally posted for iwlwifi which still doesn't use it at all. With the recent HT rework ath9k started relying on it, but I made a mistake there in that I made ath9k assume the HT information has already been filled in at sta_notify time. This isn't a hard thing to do, so do it. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit cfa3fa405a5eafd5d5c53b18abc00ca998c35eef Author: Zhaolei Date: Wed Oct 22 17:07:25 2008 +0800 Fix debugfs_create_*'s error checking method for wireless/rt2x00/ debugfs_create_*() returns NULL if an error occurs, returns -ENODEV when debugfs is not enabled in the kernel. Signed-off-by: Zhao Lei Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 9b24001db145cf1da76a479918373c18aa10bb4b Author: Zhaolei Date: Wed Oct 22 17:06:12 2008 +0800 Fix debugfs_create_bool's error checking method for wireless/iwlwifi/ debugfs_create_bool() returns NULL if an error occurs, returns -ENODEV when debugfs is not enabled in the kernel. Signed-off-by: Zhao Lei Signed-off-by: John W. Linville commit ac9440a4e4b284d3469120f0e049dff7c73c72a4 Author: Johannes Berg Date: Tue Oct 21 11:08:27 2008 +0200 wireless: fix EU check http://en.wikipedia.org/wiki/De_Morgan%27s_laws is useful. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit f6037d09e2b58e5483ab63f75d4d57ae70f9ae6a Author: Johannes Berg Date: Tue Oct 21 11:01:33 2008 +0200 wireless: get rid of pointless request list We really only need to know the last request at each point in time. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit f3b407fba52e1b86ca286ee7c218a4fb00bd29e0 Author: Johannes Berg Date: Tue Oct 21 09:57:41 2008 +0200 wireless: remove cfg80211_reg_mutex This mutex is wrong, we use cfg80211_drv_mutex (which should possibly be renamed to just cfg80211_mutex) everywhere except in one place, fix that and get rid of the extra mutex. Also get rid of a spurious regulatory_requests list definition. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit cf03268e6ed6cfacaa5e32db41ea832c4d10438b Author: Johannes Berg Date: Tue Oct 21 09:42:38 2008 +0200 wireless: don't publish __regulatory_hint This function requires an internal lock to be held, so it cannot be published to other modules in the kernel. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit e37d4dffdffb7f834bd28d4ae8e3dcdf07fce508 Author: Bob Copeland Date: Mon Oct 20 21:20:27 2008 -0400 mac80211: fix a few typos in mac80211 kernel doc Correct a handful of errors found while reading the mac80211 book. Signed-off-by: Bob Copeland Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 558875112c28c7b2744a92c9836c256dd57bc5b6 Author: John Daiker Date: Fri Oct 17 12:16:17 2008 -0700 rt2x00: reduce checkpatch.pl errors A few changes to reduce checkpatch.pl errors in the rt2x00 driver. For the most part, I only fixed cosmetic things, and left the actual 'code flow' untouched (hopefully)! Diff is against wireless-testing HEAD. Signed-off-by: John Daiker Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 0bbac08f0a23898787978c0b405474e453e9824c Author: John Daiker Date: Fri Oct 17 12:16:00 2008 -0700 ath5k: reduce checkpatch.pl errors A few changes to reduce checkpatch.pl errors in the ath5k driver. For the most part, I only fixed cosmetic things, and left the actual 'code flow' untouched (hopefully)! Diff is against wireless-testing HEAD. Signed-off-by: John Daiker Reviewed-by: Bob Copeland Acked-by: Nick Kossifidis Signed-off-by: John W. Linville commit 93da9cc17c5ae8a751886fd4732db89ad5e9bdb9 Author: colin@cozybit.com Date: Tue Oct 21 12:03:48 2008 -0700 Add nl80211 commands to get and set o11s mesh networking parameters The two new commands are NL80211_CMD_GET_MESH_PARAMS and NL80211_CMD_SET_MESH_PARAMS. There is a new attribute enum, NL80211_ATTR_MESH_PARAMS, which enumerates the various mesh configuration parameters. Moved struct mesh_config from mac80211/ieee80211_i.h to net/cfg80211.h. nl80211_get_mesh_params and nl80211_set_mesh_params unpack the netlink messages and ask the driver to get or set the configuration. This is done via two new function stubs, get_mesh_params and set_mesh_params, in struct cfg80211_ops. Signed-off-by: Colin McCabe Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 4a68ec535ef1043319928f601d633f78e650a16f Author: Johannes Berg Date: Thu Oct 16 21:44:44 2008 +0200 mac80211: inform userspace of probe/auth/assoc timeout I noticed that when for some reason [1] the probe or auth times out, wpa_supplicant doesn't realise this and only tries the next AP when it runs into its own timeout, which is ten seconds, and that's quite long. Fix this by making mac80211 notify userspace that it didn't associate. [1] my wrt350n in mixed B/G/HT mode often runs into this, maybe it's because one of the antennas is broken off and for whatever reason it decides to use that antenna to transmit the response frames (auth, probe); I do see beacons fine so it's not totally broken. Works fine in pure-G mode. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 8216bfe2518c25f16a60485636e477c9a3b795d5 Author: Larry Finger Date: Thu Oct 16 16:44:03 2008 -0700 hostap: Fix sparse warnings A compilation with the command "make C=2 CF="-D__CHECK_ENDIAN__" \ drivers/net/wireless/hostap/" yields the following warnings: CHECK drivers/net/wireless/hostap/hostap_info.c drivers/net/wireless/hostap/hostap_info.c:156:43: warning: incorrect type in argument 2 (different signedness) drivers/net/wireless/hostap/hostap_info.c:156:43: expected unsigned long volatile *addr drivers/net/wireless/hostap/hostap_info.c:156:43: got long * drivers/net/wireless/hostap/hostap_info.c:294:44: warning: incorrect type in argument 2 (different signedness) drivers/net/wireless/hostap/hostap_info.c:294:44: expected unsigned long volatile *addr drivers/net/wireless/hostap/hostap_info.c:294:44: got long * drivers/net/wireless/hostap/hostap_info.c:487:12: warning: incorrect type in argument 2 (different signedness) drivers/net/wireless/hostap/hostap_info.c:487:12: expected unsigned long volatile *addr drivers/net/wireless/hostap/hostap_info.c:487:12: got long * drivers/net/wireless/hostap/hostap_info.c:491:12: warning: incorrect type in argument 2 (different signedness) drivers/net/wireless/hostap/hostap_info.c:491:12: expected unsigned long volatile *addr drivers/net/wireless/hostap/hostap_info.c:491:12: got long * The warnings are fixed with the following compile-tested fix: Signed-off-by: Larry Finger Acked-by: Jouni Malinen Signed-off-by: John W. Linville commit 50fb2e4572141770380f5919793c6e575fa3474b Author: Johannes Berg Date: Thu Oct 16 11:21:49 2008 +0200 mac80211: remove rate_control_clear "Clearing" the rate control algorithm is pointless, none of the algorithms actually uses this operation and it's not even invoked properly for all channel switching. Also, there's no need to since rate control algorithms work per station. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 65a0667b43ff746b2964b2a257ffff1a4747e19d Author: Tomas Winkler Date: Wed Oct 15 11:06:23 2008 -0700 iwlwifi: protect headers from double inclusion This patch protects iwl-csr.h and iwl-fh.h from double inclusion by ifndef define endif idiom Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit f4a8cd94fc43829d065aae94f6d379c6f0f1301c Author: Felix Fietkau Date: Wed Oct 15 19:13:59 2008 +0200 minstrel: improve performance for non-MRR drivers This patch enhances minstrel's performance for non-MRR setups, by preventing it from sampling slower rates with >95% success probability and by putting at least 1 non-sample frame between several sample frames. Signed-off-by: Felix Fietkau Signed-off-by: John W. Linville commit 0a9542ee12fb57d408f19aac738e8abe8670be7a Author: Johannes Berg Date: Wed Oct 15 11:54:04 2008 +0200 nl80211: fix monitor flags NLA_NESTED attributes cannot be empty, but we want to be able to specify "no flags" (empty attribute) vs. "no change" (no attribute). Therefore, remove the NLA_NESTED policy so it can work as an empty attribute. I guess I should have used a u32 for these flags instead, but we're stuck with it now. Haven't noticed earlier because of a bug in iw... Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 27df605ebe2c106c53957dfdaee5d948f01cfc97 Author: John W. Linville Date: Wed Oct 22 16:41:55 2008 -0400 p54: integrate parts of lmac_longbow.h and other parts of stlc45xx This patch removes most/all? of the "magic" numbers and unknown structure variables inside the code and replaces them with meaningful prototypes. (Plus a one line warning fix from Larry Finger .) Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 5e73444e91889ea6c7a83bc174ef8e8b6aaeea9b Author: Christian Lamparter Date: Wed Oct 15 04:07:56 2008 +0200 p54: borrow some setup code from stlc45xx This patch initialize all remaining values which are necessary for SPI firmwares. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit b92f30d65aeb0502e2ed8beb80c8465578b40002 Author: Christian Lamparter Date: Wed Oct 15 04:07:16 2008 +0200 p54: fix memory management We have to be careful if multiple "control frames" are passed in a very short intervals to the device's firmware. As p54_assign_address always put them into same memory location. To guarantee that this won't happen anymore, we have to treat control frames like normal data frames in the devices own memory management. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 9de5776ff33a006b864341a6ec8d31f1a3c628cf Author: Christian Lamparter Date: Wed Oct 15 04:05:51 2008 +0200 p54: p54: refactor p54_rx_frame_sent the long names and the nesting in p54_rx_frame_sent really became a "line longer than 80 characters" problem. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 0f1be978910092bed5d8dac0774e5cf85d4b4e12 Author: Christian Lamparter Date: Wed Oct 15 03:56:20 2008 +0200 p54: refactor statistic timer code Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 0fdd7c5d2defe8c6873eb8a40a880eb0dc59573d Author: Christian Lamparter Date: Wed Oct 15 03:55:37 2008 +0200 p54: broken out edcf changes This patch series hopefully increases p54's "longterm" stability. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit b88b15dfbddc8837569c6dea49348791357de4aa Author: Tomas Winkler Date: Tue Oct 14 12:32:49 2008 -0700 iwlwifi: tx command must run on same tfd as packet This patch makes clear that tx command is attached to the same tfd as the tx packet Signed-off-by: Tomas Winkler Signed-off-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 499b1883038a7db2dcf8b64229f8533ce2c8f0fc Author: Tomas Winkler Date: Tue Oct 14 12:32:48 2008 -0700 iwlwifi: fix TX cmd dma unmapping This patch: 1. fixes command DMA unmapping, this might be visible only on platforms where DMA unmapping is no noop such as PPC64 (not tested) 2. attaches correctly high memory part of the host command buffer 3. changes structure of TFD TB instead of describing transmit buffer (TB) tuple it describes single TB and makes code more readable on price of one unaligned access 4. eliminates using of IWL_GET/SET_BITs for TFD handling 5. renames TFD structures to mach the HW spec 6. reduces iwl_tx_info size by reserving first TB to the host command This patch should not have any visible effect on x86 32 This patch is rework of iwlwifi: fix DMA code and bugs from Johannes Berg Signed-off-by: Tomas Winkler Cc: Johannes Berg Reviewed-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 76eff18bdc5feaa53f1be33709b67df02f1d55e9 Author: Tomas Winkler Date: Tue Oct 14 12:32:45 2008 -0700 iwlwifi: unify tx antenna toggling TX antenna toggling is requested for management frames in tx and scanning. I addition toggling in scanning was incorrect; Signed-off-by: Tomas Winkler Reviewed-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 961ba60abe02517d0c8252f9befb1478f4e008a4 Author: Tomas Winkler Date: Tue Oct 14 12:32:44 2008 -0700 iwlwifi: add iwl_cmd_queue_free for readability This patch adds iwl_cmd_queue_free function and separate cmd queue freeing from regular tx queue freeing. This improves readability and adds one more step in restructuring of cmd queue handling Signed-off-by: Tomas Winkler Reviewed-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 3257e5d4eb418e4656542207720aef5f0f547701 Author: Tomas Winkler Date: Tue Oct 14 12:32:43 2008 -0700 iwlwifi: remove host commands structures from iwl_cmd This patch removes host commands structures from iwl_cmd to make more HW oblivious tx cmd was left it needs special treatment. Signed-off-by: Tomas Winkler Reviewed-by: Zhu Yi Signed-off-by: John W. Linville commit 56e1261596334e60210fb8ecd9eb6a3db53aba94 Author: Jay Sternberg Date: Tue Oct 14 12:32:42 2008 -0700 iwlwifi: expand error lookup and align output change desc_lookup from hard coded switch to a simple lookup table and expand list to include all errors. Also corrected output using this string so info is aligned and easier to read when debugging issues. Signed-off-by: Jay Sternberg Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 4e062f99af771173b601742b0c1c98eb4d52ea08 Author: Jay Sternberg Date: Tue Oct 14 12:32:41 2008 -0700 iwlwifi: define firmware file name once string repeated for definition of ucode firmware file and in preparation for multiple firmware files need to consolidate location for their definition. Signed-off-by: Jay Sternberg Acked-by: Tomas Winkler Signed-off-by: John W. Linville commit 4acf07497140b1504a799d6a1b4da7d1b1e35af5 Author: Johannes Berg Date: Tue Oct 14 19:49:22 2008 +0200 make ieee80211 invisible This makes CONFIG_IEEE80211 invisible. The drivers that require it (ipw2100, ipw2200, hostap) select it, and everybody else really shouldn't even think about using it. Also, since there really is no point in compiling anything without crypto support these days, remove the crypto options and just enable them, leaving only the debugging option which only shows up when a driver is select that requires it. This makes it hard to enable, but most people wouldn't want to anyway. Signed-off-by: Johannes Berg Acked-by: Reinette Chatre Signed-off-by: John W. Linville commit 5c7f9b7363bfd10e40cf1a28dfc9048417df7028 Author: Tim Gardner Date: Tue Oct 14 10:38:03 2008 -0600 ipw2x00: change default policy for auto-associate Do not attempt association until directed to do so by a user space application. In particular, this avoids race conditions with NetworkManager association state. Signed-off-by: Tim Gardner Acked-by: Dan Williams Signed-off-by: John W. Linville commit c12abae333ac550acacf9d324ed54b7d17ead0c0 Author: Johannes Berg Date: Tue Oct 14 16:56:51 2008 +0200 p54: implement MRR This implements multi-rate retry in p54. With lots of help and testing from Christian and the limiting idea from nbd. Signed-off-by: Johannes Berg Cc: Christian Lamparter Signed-off-by: John W. Linville commit e6a9854b05c1a6af1308fe2b8c68f35abf28a3ee Author: Johannes Berg Date: Tue Oct 21 12:40:02 2008 +0200 mac80211/drivers: rewrite the rate control API So after the previous changes we were still unhappy with how convoluted the API is and decided to make things simpler for everybody. This completely changes the rate control API, now taking into account 802.11n with MCS rates and more control, most drivers don't support that though. Signed-off-by: Felix Fietkau Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit cb121bad67a32cde37adc2729b7e18aa4fd3063e Author: Johannes Berg Date: Tue Oct 14 16:38:55 2008 +0200 mac80211: add might_sleep to hw_config Just to catch bugs when changing mac80211. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit faf3994a9f65fd95a68bbcc03c318a427cd1e7d3 Author: Wang Chen Date: Tue Oct 14 13:30:33 2008 +0800 airo: Kill directly reference of netdev->priv We have some reasons to kill netdev->priv: 1. netdev->priv is equal to netdev_priv(). 2. netdev_priv() wraps the calculation of netdev->priv's offset, obviously netdev_priv() is more flexible than netdev->priv. But we cann't kill netdev->priv, because so many drivers reference to it directly. OK, becasue Dave S. Miller said, "every direct netdev->priv usage is a bug", and I want to kill netdev->priv later, I decided to convert all the direct reference of netdev->priv first. In this driver, I don't simply use netdev_priv() to replace netdev->priv. The reason is: Pointer netdev->priv was changed in this driver, but it shouldn't. Because the memory was allocated when alloc_netdev() and netdev->priv should always point to that memory. So I use netdev->ml_priv to replace netdev->priv. After replacing, both ai and ai->wifidev->ml_priv point to the same memory. Signed-off-by: Wang Chen Cc: John W. Linville Cc: Dan Williams Signed-off-by: John W. Linville commit b706e65b40417e03c2451bb3f92488f3736843fa Author: Andrey Yurovsky Date: Mon Oct 13 18:23:07 2008 -0700 ath5k: fix mesh point operation This patch fixes mesh point operation (thanks to YanBo for pointing out the problem): make mesh point interfaces start beaconing when they come up and configure the RX filter in mesh mode so that mesh beacons and action frames are received. Add mesh point to the check in ath5k_add_interface. Tested with multiple AR5211 cards. Signed-off-by: Andrey Yurovsky Acked-by: Nick Kossifidis Signed-off-by: John W. Linville commit 6e0e0bf80c963d83f511e1cda652630cf31ebf85 Author: Luis R. Rodriguez Date: Mon Oct 13 14:08:10 2008 -0700 ath5k: correct ath5k signal quality This adjusts ath5k's signal quality reporting taking into consideration received beacons at an RSSI of 35 should indicate you can use of 54 Mbps on a single stream card (all ath5k cards) reliably. Signed-off-by: Luis R. Rodriguez Acked-by: Nick Kossifidis Signed-off-by: John W. Linville commit c49d154a800c55b8948e6d34563e593b500b31b9 Author: Luis R. Rodriguez Date: Mon Oct 13 14:08:09 2008 -0700 ath9k: correct signal quality report This adjusts ath9k's signal quality reporting taking into consideration received beacons at an RSSI of 45 should indicate you can use of MCS 15 rate (144 Mbps) reliably on dual stream card. Keep in mind mac80211 does not yet have aggregation fixed but this should still provide more accurate results. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit 4fe0657ed41590ea4c2d4920c76836cb4a483caf Author: Luis R. Rodriguez Date: Mon Oct 13 14:08:07 2008 -0700 ath5k/ath9k: correct signal quality Now that we officially are supporting ath5k I can do this at work hours. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit f8288317b5076fde0bb4e91cd4754379c850be7a Author: Herton Ronaldo Krzesinski Date: Mon Oct 13 18:11:00 2008 +0000 rtl8187: add short slot handling for 8187B This change adds short slot handling for 8187B variant of rtl8187 chips. Some things to note about changes done: * Values used are chosen to met 802.11-2007 spec. This raised a question about SIFS value used with 8187L: 0x22 (34) doesn't match any spec value. For now just don't change 8187L, but is something to be looked at. * On 8187B, the location of EIFS register is at the same place as BRSR+1 of struct rtl818x_csr. Unfortunately there is no clean way to accomodate 8187B differences currently, just use address of BRSR+1 and comment about it. The same thing happens for Ack timeout register, that is on CARRIER_SENSE_COUNTER location of 8187L. The eifs and ack timeout values are in units of 4us. All these registers information was gathered from references being the vendor gpl driver and 8180 datasheet, unfortunately there is no information about this on 8187B datasheet. Also the ack timeout value was inspired by the same calculation as done on rt2x00. Signed-off-by: Herton Ronaldo Krzesinski Signed-off-by: John W. Linville commit 64761077f815660276f69b497edb9842d880df9a Author: Herton Ronaldo Krzesinski Date: Mon Oct 13 18:10:59 2008 +0000 rtl8187: adapt for deprecated IEEE80211_CONF_SHORT_SLOT_TIME flag This updates 8187L handling for short slot after "mac80211: fix short slot handling". For 8187B, there was no handling done for short slot timing so nothing done, support for it will come in a following patch. Signed-off-by: Herton Ronaldo Krzesinski Signed-off-by: John W. Linville commit da966bcae70e4012b7d999820b728dd6502047e0 Author: Jiri Slaby Date: Sun Oct 12 22:54:10 2008 +0200 Ath5k: add AP mode Add support for AP mode. This involves: - enablement in ath5k_beacon_config -- initialize beacon timer - add AP to the supported modes in ath5k_add_interface - handle beacon change even for AP in ath5k_config_interface - remove useless test for IBSS in ath5k_beacon_update Note that it doesn't enable the AP mode for the driver. It must be enabled by NL80211_IFTYPE_AP bit added to interface_modes. v2: Fixed opmode constant (IEEE80211_ to NL80211_) Signed-off-by: Jiri Slaby Cc: Nick Kossifidis Cc: Luis R. Rodriguez Signed-off-by: John W. Linville commit 7eb27af766e4a1db3dbc02a5b3d175885bf2ce93 Author: Johannes Berg Date: Sun Oct 12 00:39:55 2008 +0200 p54/rtl8187: fix up the seqno patch Sorry about that, for some reason I didn't notice that I'd left some unused variables in there. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit ae5eb02641233a4e9d1b92d22090f1b1afa14466 Author: Johannes Berg Date: Tue Oct 14 16:58:37 2008 +0200 mac80211: rewrite HT handling The HT handling has the following deficiencies, which I've (partially) fixed: * it always uses the AP info even if there is no AP, hence has no chance of working as an AP * it pretends to be HW config, but really is per-BSS * channel sanity checking is left to the drivers * it generally lets the driver control too much HT enabling is still wrong with this patch if you have more than one virtual STA mode interface, but that never happens currently. Once WDS, IBSS or AP/VLAN gets HT capabilities, it will also be wrong, see the comment in ieee80211_enable_ht(). Additionally, this fixes a number of bugs: * mac80211: ieee80211_set_disassoc doesn't notify the driver any more since the refactoring * iwl-agn-rs: always uses the HT capabilities from the wrong stuff mac80211 gives it rather than the actual peer STA * ath9k: a number of bugs resulting from the broken HT API I'm not entirely happy with putting the HT capabilities into struct ieee80211_sta as restricted to our own HT TX capabilities, but I see no cleaner solution for now. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit bda3933a8aceedd03e0dd410844bd310033ca756 Author: Johannes Berg Date: Sat Oct 11 01:51:51 2008 +0200 mac80211: move bss_conf into vif Move bss_conf into the vif struct so that drivers can access it during ->tx without having to store it in the private data or similar. No driver updates because this is only for when they want to start using it. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 9124b07740c51cbc6e358dd0c4abc6ee8ded084d Author: Johannes Berg Date: Tue Oct 14 19:17:54 2008 +0200 mac80211: make retry limits part of hw config Instead of having a separate callback, use the HW config callback with a new flag to change retry limits. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 525181891fb5ed323b6ba0f141c422f1395acfb9 Author: Johannes Berg Date: Sat Oct 11 01:46:25 2008 +0200 iwl3945: fix station stuff in RC algorithm Probably bugs I added. Signed-off-by: Johannes Berg Acked-by: Reinette Chatre Signed-off-by: John W. Linville commit d51626df5747efaa8d2c00678f64cb503845effe Author: Johannes Berg Date: Thu Oct 9 12:20:13 2008 +0200 nl80211: export HT capabilities This exports the local HT capabilities in nl80211. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 94778280fabdb6bc76db5509bd95859f1141385b Author: Johannes Berg Date: Fri Oct 10 13:21:59 2008 +0200 mac80211: provide sequence numbers I've come to think that not providing sequence numbers for the normal STA mode case was a mistake, at least two drivers now had to implement code they wouldn't otherwise need, and I believe at76_usb and adm8211 might be broken. This patch makes mac80211 assign a sequence number to all those frames that need one except beacons. That means that if a driver only implements modes that do not do beaconing it need not worry about the sequence number. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 2e20cc3986cbee410fbe8e3e116bdcb12d70fcce Author: Larry Finger Date: Thu Oct 9 17:38:52 2008 -0700 p54: Move rx_mtu to struct bootrec_desc The patch entitled "[PATCH] p54: Fix sparse warnings" added the __le16 variable rx_mtu to struct bootrec, but it could equally well be placed in the struct bootrec_desc, which overlays the 'data' section of bootrec. Signed-off-by: Larry Finger Signed-off-by: John W. Linville commit 78236571a538860dc2f0842ff6c7789522eb1e63 Author: Henrique de Moraes Holschuh Date: Thu Oct 9 18:15:33 2008 -0300 rfkill: rate-limit rfkill-input workqueue usage (v3) Limit the number of "expensive" rfkill workqueue operations per second, in order to not hog system resources too much when faced with a rogue source of rfkill input events. The old rfkill-input code (before it was refactored) had such a limit in place. It used to drop new events that were past the rate limit. This behaviour was not implemented as an anti-DoS measure, but rather as an attempt to work around deficiencies in input device drivers which would issue multiple KEY_FOO events too soon for a given key FOO (i.e. ones that do not implement mechanical debouncing properly). However, we can't really expect such issues to be worked around by every input handler out there, and also by every userspace client of input devices. It is the input device driver's responsability to do debouncing instead of spamming the input layer with bogus events. The new limiter code is focused only on anti-DoS behaviour, and tries to not lose events (instead, it coalesces them when possible). The transmitters are updated once every 200ms, maximum. Care is taken not to delay a request to _enter_ rfkill transmitter Emergency Power Off (EPO) mode. If mistriggered (e.g. by a jiffies counter wrap), the code delays processing *once* by 200ms. Signed-off-by: Henrique de Moraes Holschuh Cc: Ivo van Doorn Cc: Dmitry Torokhov Signed-off-by: John W. Linville commit 176707997bc3da2c4e32715c35cfebba0334ed68 Author: Henrique de Moraes Holschuh Date: Thu Oct 9 18:15:32 2008 -0300 rfkill: honour EPO state when resuming a rfkill controller rfkill_resume() would always restore the rfkill controller state to its pre-suspend state. Now that we know when we are under EPO, kick the rfkill controller to SOFT_BLOCKED state instead of to its pre-suspend state when it is resumed while EPO mode is active. Signed-off-by: Henrique de Moraes Holschuh Cc: Ivo van Doorn Signed-off-by: John W. Linville commit d003922dab6a66027344a787e9846ecf35a706a8 Author: Henrique de Moraes Holschuh Date: Thu Oct 9 21:49:33 2008 -0300 rfkill: add master_switch_mode and EPO lock to rfkill and rfkill-input Add of software-based sanity to rfkill and rfkill-input so that it can reproduce what hardware-based EPO switches do, blocking all transmitters and locking down any further attempts to unblock them until the switch is deactivated. rfkill-input is responsible for issuing the EPO control requests, like before. While an rfkill EPO is active, all transmitters are locked to one of the BLOCKED states and all attempts to change that through the rfkill API (userspace and kernel) will be either ignored or return -EPERM errors. The lock will be released upon receipt of EV_SW SW_RFKILL_ALL ON by rfkill-input, or should modular rfkill-input be unloaded. This makes rfkill and rfkill-input extend the operation of an existing wireless master kill switch to all wireless devices in the system, even those that are not under hardware or firmware control. Since the above is the expected operational behavior for the master rfkill switch, the EPO lock functionality is not optional. Also, extend rfkill-input to allow for three different behaviors when it receives an EV_SW SW_RFKILL_ALL ON input event. The user can set which behavior he wants through the master_switch_mode parameter: master_switch_mode = 0: EV_SW SW_RFKILL_ALL ON just unlocks rfkill controller state changes (so that the rfkill userspace and kernel APIs can now be used to change rfkill controller states again), but doesn't change any of their states (so they will all remain blocked). This is the safest mode of operation, as it requires explicit operator action to re-enable a transmitter. master_switch_mode = 1: EV_SW SW_RFKILL_ALL ON causes rfkill-input to attempt to restore the system to the state before the last EV_SW SW_RFKILL_ALL OFF event, or to the default global states if no EV_SW SW_RFKILL_ALL OFF ever happened. This is the recommended mode of operation for laptops. master_switch_mode = 2: tries to unblock all rfkill controllers (i.e. enable all transmitters) when an EV_SW SW_RFKILL_ALL ON event is received. This is the default mode of operation, as it mimics the previous behavior of rfkill-input. In order to implement these features in a clean way, the entire event handling of rfkill-input was refactored into a single worker function. Protection against input event DoS (repeatedly firing rfkill events for rfkill-input to process) was removed during the code refactoring. It will be added back in a future patch. Note that with these changes, rfkill-input doesn't need to explicitly handle any radio types for which KEY_ or SW_ events do not exist yet. Code to handle EV_SW SW_{WLAN,WWAN,BLUETOOTH,WIMAX,...} was added as it might be needed in the future (and its implementation is not that obvious), but is currently #ifdef'd out to avoid wasting resources. Signed-off-by: Henrique de Moraes Holschuh Cc: Ivo van Doorn Cc: Dmitry Torokhov Signed-off-by: John W. Linville commit 68d2413bec7e1d97e906eafb05e78d925a5ca128 Author: Henrique de Moraes Holschuh Date: Thu Oct 9 18:15:30 2008 -0300 rfkill: export global states to rfkill-input Export the the global switch states to rfkill-input. This is needed to properly implement KEY_* handling without disregarding the initial state. Signed-off-by: Henrique de Moraes Holschuh Cc: Ivo van Doorn Signed-off-by: John W. Linville commit cf4b4aab552f5f658ed400dd0cd41f9ac8aac7c1 Author: Henrique de Moraes Holschuh Date: Thu Oct 9 18:15:29 2008 -0300 rfkill: use killable locks instead of interruptible Apparently, many applications don't expect to get EAGAIN from fd read/write operations, since POSIX doesn't mandate it. Use mutex_lock_killable instead of mutex_lock_interruptible, which won't cause issues. Signed-off-by: Henrique de Moraes Holschuh Cc: Ivo van Doorn Signed-off-by: John W. Linville commit e8975581f63870be42ff4662b293d1b0c8c21350 Author: Johannes Berg Date: Thu Oct 9 12:18:51 2008 +0200 mac80211: introduce hw config change flags This makes mac80211 notify the driver which configuration actually changed, e.g. channel etc. No driver changes, this is just plumbing, driver authors are expected to act on this if they want to. Also remove the HW CONFIG debug printk, it's incorrect, often we configure something else. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 0f4ac38b5999c3d51adad52d61c56c1b99c247ec Author: Johannes Berg Date: Thu Oct 9 12:18:04 2008 +0200 mac80211: kill hw.conf.antenna_sel_{rx,tx} Never actually used. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit d9fe60dea7779d412b34679f1177c5ca1940ea8d Author: Johannes Berg Date: Thu Oct 9 12:13:49 2008 +0200 802.11: clean up/fix HT support This patch cleans up a number of things: * the unusable definition of the HT capabilities/HT information information elements * variable names that are hard to understand * mac80211: move ieee80211_handle_ht to ht.c and remove the unused enable_ht parameter * mac80211: fix bug with MCS rate 32 in ieee80211_handle_ht * mac80211: fix bug with casting the result of ieee80211_bss_get_ie to an information element _contents_ rather than the whole element, add size checking (another out-of-bounds access bug fixed!) * mac80211: remove some unused return values in favour of BUG_ON checking * a few minor other things Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 40333e4fb476014cdd939d27e20eb54573172b32 Author: Christian Lamparter Date: Wed Oct 8 20:52:22 2008 +0200 p54: honour bss_info_changed's short slot time settings This patch was made on behalf of Johannes request. "mac80211 and IEEE80211_CONF_SHORT_SLOT_TIME" Of course, bss_info_changed provides some more useful data. e.g.: basic_rates, dtim_period, beacon_int and maybe even more. Everything can be hooked up if it's necessary. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 5d6924eaf07bec9ce7527cad9d2537e448574738 Author: Rami Rosen Date: Wed Oct 8 11:18:27 2008 +0200 mac80211: use HWSIM_STA_MAGIC in hwsim_check_sta_magic() and hwsim_set_sta_magic(). This patch fixes a typo in mac80211_hwsim.c: use HWSIM_STA_MAGIC in hwsim_check_sta_magic() and hwsim_set_sta_magic() instead of HWSIM_VIF_MAGIC. Signed-off-by: Rami Rosen Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 3195c1f3499912b207ae600968488759b16037fc Author: Tomas Winkler Date: Wed Oct 8 09:37:30 2008 +0800 iwlwifi: refactor rxon time command This patch refactors rxon time command. It removes the usage of union tsf in favor of u64 value and hopefully makes code more readable. There are no functional changes in this patch. Signed-off-by: Tomas Winkler Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit 5d664a41a0a8c612f66bcb3c2a6f395e9afa6beb Author: Tomas Winkler Date: Wed Oct 8 09:37:29 2008 +0800 iwlwifi: take a valid antenna upon rate scale init This patch selects a valid antennae upon rate scale init. This solves a SYSASSERT complaining that the driver is setting a non valid antenna in the LQ CMD. Signed-off-by: Emmanuel Grumbach Signed-off-by: Tomas Winkler Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit be5d56ed885a2897ec813eab4a8055d495816e9a Author: Tomas Winkler Date: Wed Oct 8 09:37:27 2008 +0800 iwlwifi: make initial calibration set configurable This patch adds ability to configure initial calibration set. Not all HW supported by iwlwifi use the same calibration set, XTAL is one example. Some clean ups are also included in this patch. Signed-off-by: Tomas Winkler Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit 1397dcebd8f1d66528e8f86b0dfb603281558f79 Author: Rami Rosen Date: Tue Oct 7 16:29:11 2008 +0200 mac80211: remove unused declaration of struct sta_attribute. This patch removes unused definition of struct sta_attribute in net/mac80211/ieee80211_i.h. Signed-off-by: Rami Rosen Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 7a5158ef8da70fdedeb0530faaa8128aa645be3c Author: Johannes Berg Date: Wed Oct 8 10:59:33 2008 +0200 mac80211: fix short slot handling This patch makes mac80211 handle short slot requests from the AP properly. Also warn about uses of IEEE80211_CONF_SHORT_SLOT_TIME and optimise out the code since it cannot ever be hit anyway. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit e87a2feea75e3cba7af43ed9317b56b282d87742 Author: Johannes Berg Date: Tue Oct 7 12:04:35 2008 +0200 mac80211: remove max_antenna_gain config The antenna gain isn't exactly configurable, despite the belief of some unnamed individual who thinks that the EEPROM might influence it. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit d73782fdde76554016abf73b46f843b29f520848 Author: Johannes Berg Date: Tue Oct 7 12:04:34 2008 +0200 mac80211: clean up ieee80211_hw_config errors Warn when ieee80211_hw_config returns an error, it shouldn't happen; remove a number of printks that would happen in such a case and one printk that is user-triggerable. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 3db594380b8452eda4d88b12844077809607caaa Author: Johannes Berg Date: Tue Oct 7 12:04:33 2008 +0200 mac80211: remove wiphy_to_hw This isn't used by anyone, if we ever need it we can add it back, until then it's useless. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit c6a1fa12d206882757264869f8e32d606b930e2a Author: Johannes Berg Date: Tue Oct 7 12:04:32 2008 +0200 mac80211: minor code cleanups Nothing very interesting, some checkpatch inspired stuff, some other things. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 36ff382d0065c9980c203c7cd3b3eb26251e9397 Author: Johannes Berg Date: Tue Oct 7 12:04:31 2008 +0200 mac80211: remove writable debugs mesh parameters These parameters shouldn't be configurable via debugfs, if they need to be configurable nl80211 support has to be added, if not then they don't need to be writable here either. Signed-off-by: Johannes Berg Cc: Javier Cardona Cc: Luis Carlos Cobo Signed-off-by: John W. Linville commit 804feeb826f8a32c8c71a09101fae31804b40ad1 Author: Johannes Berg Date: Tue Oct 7 12:04:30 2008 +0200 mac80211: remove aggregation status write support from debugfs This code uses static variables and thus cannot be kept. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit b2bcc7b299f37037b4a78dc1538e5d6508ae8110 Author: Alok Kataria Date: Fri Oct 31 11:59:53 2008 -0700 x86: add a synthetic TSC_RELIABLE feature bit Impact: None, bit reservation only Add a synthetic TSC_RELIABLE feature bit which will be used to mark TSC as reliable so that we could skip all the runtime checks for TSC stablity, which have false positives in virtual environment. Signed-off-by: Alok N Kataria Signed-off-by: Dan Hecht Signed-off-by: H. Peter Anvin commit 3c3e9892a1dacca2ba9e05c196ab1ea99c544360 Author: Takashi Iwai Date: Fri Oct 31 17:48:56 2008 +0100 ALSA: hda - Re-add input-source control for Realtek Re-added again "Input Source" control that was removed mistakenly in the previous patchset. Signed-off-by: Takashi Iwai commit f9e336f65b666b8f1764d17e9b7c21c90748a37e Author: Takashi Iwai Date: Fri Oct 31 16:37:07 2008 +0100 ALSA: hda - Unify capture mixer creation in realtek codes Unified the capture mixer creation in patch_realtek.c. ALC268 is still an exception since it has no AMP in ADC but in MUX widget. Signed-off-by: Takashi Iwai commit 54cbc9abe57cf0a36619f394802448c62402599a Author: Takashi Iwai Date: Fri Oct 31 15:24:04 2008 +0100 ALSA: hda - Unify capture callbacks in realtek codes Unify the capture callbacks in patch_realtek.c. The difference of matrix or mux style is checked via spec->is_mix_capture flag. Signed-off-by: Takashi Iwai commit d88897eaea53f0fae62d528a24e76b8643082db3 Author: Takashi Iwai Date: Fri Oct 31 15:01:37 2008 +0100 ALSA: hda - Use macros to check array overflow Use macro to add mixer and verb elements to check the possible array overflow. Signed-off-by: Takashi Iwai commit afecd78cd2ec81512d6ec451906f71d9671a0b3b Merge: 1b063c3d090c45298a37ebc879c71379cf845d9c ee956e090e114ede6542c76a7465ed6ce118ad52 Author: Takashi Iwai Date: Fri Oct 31 17:24:01 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda commit 7b3b6e42032e94a6132a85642e95106f5346650e Merge: 04172c0b9ea5861e5cba7909da5297b3aedac9e1 0173a3265b228da319ceb9c1ec6a5682fd1b2d92 Author: Takashi Iwai Date: Fri Oct 31 17:13:10 2008 +0100 Merge commit 'v2.6.28-rc2' into topic/asoc commit 04172c0b9ea5861e5cba7909da5297b3aedac9e1 Merge: 5b99e6ccf964e733f0afe2b7bd09559a51a540ca 13d622b33dfbd99205a7add5751ba47445e480a6 Author: Takashi Iwai Date: Fri Oct 31 14:39:49 2008 +0100 Merge branch 'topic/fix/asoc' into topic/asoc commit 5b99e6ccf964e733f0afe2b7bd09559a51a540ca Author: Sedji Gaouaou Date: Fri Oct 3 16:58:58 2008 +0200 ASoC: Add audio support for the Atmel AT91SAM9G20ek board(uing wolfson 8731). Add audio support for the Atmel AT91SAM9G20ek board(uing wolfson 8731). It is based on the former eti_b1_wm8731.c file, using the atmel scc API. Signed-off-by: Sedji Gaouaou Signed-off-by: Mark Brown commit 6c7425095c9ee23d080dba3e27217a254cce4562 Author: Sedji Gaouaou Date: Fri Oct 3 16:57:50 2008 +0200 ASoC: Merge AT91 and AVR32 support into a single atmel architecture The Ateml AT91 and AVR32 SoC share common IP for audio and can share the same driver code using the atmel-ssc API provided for both architectures. Do this, creating a new unified atmel ASoC architecture to replace the previous at32 and at91 ones. [This was contributed as a patch series for reviewability but has been squashed down to a single commit to help preserve both the history and bisectability. A small bugfix from Jukka is included.] Tested-by: Jukka Hynninen Signed-off-by: Sedji Gaouaou Signed-off-by: Mark Brown commit dc06102a0c8b5aa0dd7f9a40ce241e793c252a87 Author: Steve Sakoman Date: Thu Oct 30 21:55:24 2008 -0700 ASoC: Add support for Beagleboard Signed-off-by: Steve Sakoman Signed-off-by: Mark Brown commit 4e207873736adc55cbf92796eb4f26f280f84034 Author: Steve Sakoman Date: Thu Oct 30 21:50:13 2008 -0700 ASoC: Add support for Gumstix Overo Signed-off-by: Steve Sakoman Signed-off-by: Mark Brown commit cc17557e7876a92e11d4b406a367d28e103e42e6 Author: Steve Sakoman Date: Thu Oct 30 21:35:26 2008 -0700 ASoC: Add support for TWL4030 audio codec Signed-off-by: Steve Sakoman Signed-off-by: Mark Brown commit a376f30a95a796cde81d6dffde0f5243c8bd8f92 Author: Zhaolei Date: Fri Oct 31 17:43:04 2008 +0800 x86: avoid duplicate running of pud_offset and pmd_offset in one_md_table_init() Impact: simplify implementation, cleanup If !(pgd_val(*pgd) & _PAGE_PRESENT) in PAE mode, we need not get value of pmd_table again. Signed-off-by: Zhao Lei Signed-off-by: Ingo Molnar commit a26a2a27396c0a0877aa701f8f92d08ba550a6c9 Author: Steven Rostedt Date: Fri Oct 31 00:03:22 2008 -0400 ftrace: nmi safe code clean ups Impact: cleanup This patch cleans up the NMI safe code for dynamic ftrace as suggested by Andrew Morton. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 9868ee63b896ee4d2ceb8c292e88d7f4e66caaf9 Author: Huang Ying Date: Fri Oct 31 09:48:15 2008 +0800 kexec/i386: setup kexec page table in C Impact: change the kexec bootstrap code implementation from assembly to C This patch transforms the kexec page tables setup code from assembler code to C code in machine_kexec_prepare. This improves readability and reduces code line number. Signed-off-by: Huang Ying Signed-off-by: Ingo Molnar commit 92be3d6bdf2cb34972ab50e12ad4da1076e690da Author: Huang Ying Date: Fri Oct 31 09:48:08 2008 +0800 kexec/i386: allocate page table pages dynamically Impact: save .text size when kexec is built in but not loaded This patch adds an architecture specific struct kimage_arch into struct kimage. The pointers to page table pages used by kexec are added to struct kimage_arch. The page tables pages are dynamically allocated in machine_kexec_prepare instead of statically from BSS segment. This will save up to 20k memory when kexec image is not loaded. Signed-off-by: Huang Ying Signed-off-by: Ingo Molnar commit 31498a01496ffca3b542bae72b8ec499cd9302db Author: Huang Ying Date: Fri Oct 31 09:48:02 2008 +0800 kexec/i386: remove PAGE_SIZE alignment from relocate_kernel Impact: save kernel .text by loosening kexec page alignment This patch removes PAGE_SIZE alignment from relocate_kernel(). Before kexec jump patches are merged, control page is mapped to relocate_kernel in kexec page tables, so relocate_kernel must be PAGE_SIZE aligned. Now, control page is mapped to identity mapped address, so relocate_kernel need not to be PAGE_SIZE aligned any more. This can reduce a few KB from kernel text segement. Signed-off-by: Huang Ying Signed-off-by: Ingo Molnar commit 3685f25de1b0447fff381c420de1e25bd57c9efb Author: Harvey Harrison Date: Fri Oct 31 00:56:49 2008 -0700 misc: replace NIPQUAD() Using NIPQUAD() with NIPQUAD_FMT, %d.%d.%d.%d or %u.%u.%u.%u can be replaced with %pI4 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit be859405487324ed548f1ba11dc949b8230ab991 Author: Harvey Harrison Date: Fri Oct 31 00:56:28 2008 -0700 fs: replace NIPQUAD() Using NIPQUAD() with NIPQUAD_FMT, %d.%d.%d.%d or %u.%u.%u.%u can be replaced with %pI4 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 63779436ab4ad0867bcea53bf853b0004d7b895d Author: Harvey Harrison Date: Fri Oct 31 00:56:00 2008 -0700 drivers: replace NIPQUAD() Using NIPQUAD() with NIPQUAD_FMT, %d.%d.%d.%d or %u.%u.%u.%u can be replaced with %pI4 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 21454aaad30651ba0dcc16fe5271bc12ee21f132 Author: Harvey Harrison Date: Fri Oct 31 00:54:56 2008 -0700 net: replace NIPQUAD() in net/*/ Using NIPQUAD() with NIPQUAD_FMT, %d.%d.%d.%d or %u.%u.%u.%u can be replaced with %pI4 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 14d5e834f6b36667c7da56374645f99b6cf30814 Author: Harvey Harrison Date: Fri Oct 31 00:54:29 2008 -0700 net: replace NIPQUAD() in net/netfilter/ Using NIPQUAD() with NIPQUAD_FMT, %d.%d.%d.%d or %u.%u.%u.%u can be replaced with %pI4 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 673d57e72398edfedc93fb50ff58048077c9d587 Author: Harvey Harrison Date: Fri Oct 31 00:53:57 2008 -0700 net: replace NIPQUAD() in net/ipv4/ net/ipv6/ Using NIPQUAD() with NIPQUAD_FMT, %d.%d.%d.%d or %u.%u.%u.%u can be replaced with %pI4 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit cffee385d7f367e80b288abf4261256477f7760e Author: Harvey Harrison Date: Fri Oct 31 00:53:08 2008 -0700 net: replace NIPQUAD() in net/ipv4/netfilter/ Using NIPQUAD() with NIPQUAD_FMT, %d.%d.%d.%d or %u.%u.%u.%u can be replaced with %pI4 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 77be155cba4e163e8bba9fd27222a8b6189ec4f7 Author: Jarek Poplawski Date: Fri Oct 31 00:47:01 2008 -0700 pkt_sched: Add peek emulation for non-work-conserving qdiscs. This patch adds qdisc_peek_dequeued() wrapper to emulate peek method with qdisc->dequeue() and storing "peeked" skb in qdisc->gso_skb until dequeuing. This is mainly for compatibility reasons not to break some strange configs because peeking is expected for non-work-conserving parent qdiscs to query work-conserving child qdiscs. This implementation requires using qdisc_dequeue_peeked() wrapper instead of directly calling qdisc->dequeue() for all qdiscs ever querried with qdisc->ops->peek() or qdisc_peek_dequeued(). Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 03c05f0d4bb0c267edf12d614025a40e33c5a6f9 Author: Jarek Poplawski Date: Fri Oct 31 00:46:19 2008 -0700 pkt_sched: Use qdisc->ops->peek() instead of ->dequeue() & ->requeue() Use qdisc->ops->peek() instead of ->dequeue() & ->requeue() pair. After this patch the only remaining user of qdisc->ops->requeue() is netem_enqueue(). Based on ideas of Herbert Xu, Patrick McHardy and David S. Miller. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 8e3af97899db433111287e07d5105189f56fe191 Author: Jarek Poplawski Date: Fri Oct 31 00:45:55 2008 -0700 pkt_sched: Add qdisc->ops->peek() implementation. Add qdisc->ops->peek() implementation for work-conserving qdiscs. With feedback from Patrick McHardy. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 99c0db26797edb39cf83c8c5f8972067f5426b4e Author: Jarek Poplawski Date: Fri Oct 31 00:45:27 2008 -0700 pkt_sched: sch_generic: Add generic qdisc->ops->peek() implementation. With feedback from Patrick McHardy. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 48a8f519e0fe22a5c98523286b2a120841a11dd5 Author: Patrick McHardy Date: Fri Oct 31 00:44:18 2008 -0700 pkt_sched: Add ->peek() methods for fifo, prio and SFQ qdiscs. From: Patrick McHardy Just as a demonstration how easy adding a peek operation to the work-conserving qdiscs actually is. It doesn't need to keep or change any internal state in many cases thanks to the guarantee that the packet will either be dequeued or, if another packet arrives, the upper qdisc will immediately ->peek again to reevaluate the state. (This is only slightly modified Patrick's patch.) Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 90d841fd0a5e02affd4e2bbdde4f710c61599281 Author: Jarek Poplawski Date: Fri Oct 31 00:43:45 2008 -0700 pkt_sched: sch_generic: Add Qdisc_ops peek() method. Add Qdisc_ops peek() method in order to replace requeuing. Based on ideas and patches of Herbert Xu, Patrick McHardy and David S. Miller. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit cc0fe83525d734bdd9c883b45eca6bb22f286daa Author: Alexey Dobriyan Date: Fri Oct 31 00:42:25 2008 -0700 xfrm: remove unused struct xfrm_policy::next Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit d5917a35ac0d8ebfb4a7d0db3b66054009bd4f37 Author: Alexey Dobriyan Date: Fri Oct 31 00:41:59 2008 -0700 xfrm: C99 for xfrm_dev_notifier Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit a1744d3bee19d3b9cbfb825ab316a101b9c9f109 Merge: 275f165fa970174f8a98205529750e8abb6c0a33 a432226614c5616e3cfd211e0acffa0acfb4770c Author: David S. Miller Date: Fri Oct 31 00:17:34 2008 -0700 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/wireless/p54/p54common.c commit 57b41898c2ecd13a9d338b66ef23f66caab5c4e9 Author: Stephen Rothwell Date: Fri Oct 31 14:41:06 2008 +1100 ALSA: ASoC - restore removed variable declaration sound/soc/soc-dapm.c: In function 'snd_soc_dapm_sys_add': sound/soc/soc-dapm.c:828: error: 'ret' undeclared (first use in this function) Signed-off-by: Stephen Rothwell Signed-off-by: Takashi Iwai commit 275f165fa970174f8a98205529750e8abb6c0a33 Author: Arjan van de Ven Date: Mon Oct 20 21:42:39 2008 -0700 pci: use pci_ioremap_bar() in drivers/net Use the newly introduced pci_ioremap_bar() function in drivers/net. pci_ioremap_bar() just takes a pci device and a bar number, with the goal of making it really hard to get wrong, while also having a central place to stick sanity checks. Signed-off-by: Arjan van de Ven Signed-off-by: Jeff Garzik commit 842e08bd6891bd78b4c3d2e0c4a94bebb32ab3ad Author: Atsushi Nemoto Date: Tue Oct 28 22:30:23 2008 +0900 tc35815: Define more Rx status bits Signed-off-by: Atsushi Nemoto Signed-off-by: Jeff Garzik commit 04ecb07241d8731b16490f10bec6ccedf5cfc792 Author: Divy Le Ray Date: Tue Oct 28 22:40:32 2008 -0700 cxgb3 - enable lro control through ethtool Implement ethtool's get_flags and set_flags methods. It enables ethtool to control the LRO settings. Signed-off-by: Divy Le Ray Signed-off-by: Jeff Garzik commit bc79fc8409b3dccbde072e8113cc1fb3fd876fc5 Author: Rafael J. Wysocki Date: Wed Oct 29 14:22:18 2008 -0700 e100: adapt to the reworked PCI PM Adapt the e100 driver to the reworked PCI PM * Use the observation that it is sufficient to call pci_enable_wake() once, unless it fails Signed-off-by: Rafael J. Wysocki Tested-by: Jeff Kirsher Acked-by: Jeff Kirsher Cc: Jesse Barnes Cc: Jeff Garzik Cc: Frans Pop Signed-off-by: Andrew Morton Signed-off-by: Jeff Garzik commit 6b1abbaefa31b84cc02bf4006ba8a63393de1136 Author: Adrian Bunk Date: Wed Oct 29 14:22:15 2008 -0700 The overdue eepro100 removal. Signed-off-by: Adrian Bunk Cc: Jeff Garzik Signed-off-by: Andrew Morton Signed-off-by: Jeff Garzik commit 5177b3240a6608fc0c9c05cc32f4855c6540f8d5 Author: Rafael J. Wysocki Date: Wed Oct 29 14:22:14 2008 -0700 skge: adapt skge to use reworked PCI PM Adapt the skge driver to the reworked PCI PM * Use device_set_wakeup_enable() and friends as needed * Remove an open-coded reference to the standard PCI PM registers * Use pci_prepare_to_sleep() and pci_back_from_sleep() in the ->suspend() and ->resume() callbacks * Use the observation that it is sufficient to call pci_enable_wake() once, unless it fails Tested on Asus L5D (Yukon-Lite rev 7). Signed-off-by: Rafael J. Wysocki Cc: Stephen Hemminger Cc: Jeff Garzik Cc: Jesse Barnes Signed-off-by: Andrew Morton Signed-off-by: Jeff Garzik commit b3acf29afda06c76774dc6df6246c37ae707836b Author: Steven Rostedt Date: Wed Oct 29 15:30:26 2008 -0400 ftrace, kbuild: condense recordmcount.pl parameter code Impact: cleanup Sam Ravnborg pointed out that I could condense the code for the parameters of recordmcount.pl by using an $(if ...) condition. Signed-off-by: Steven Rostedt Acked-by: Sam Ravnborg Signed-off-by: Ingo Molnar commit e1e302d8a9ab06ba8d7d5ec503d8996e6cf0eca4 Merge: 944ac4259e39801c843a915c3da8194ac9af0440 7f82f000ed030d1108b4de47d9e2d556092980c6 Author: Ingo Molnar Date: Fri Oct 31 00:38:21 2008 +0100 Merge branch 'linus' into tracing/ftrace commit c8db3fec5b02f4cefe441903fe1c142ff14e1771 Author: Eric Dumazet Date: Thu Oct 30 14:00:53 2008 -0700 udp: Should use spin_lock_bh()/spin_unlock_bh() in udp_lib_unhash() Spotted by Alexander Beregalov Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit b807c3d0f8e39ed7cbbbe6da162650e305e8de15 Author: Steven Rostedt Date: Thu Oct 30 16:08:33 2008 -0400 ftrace: nmi update statistics Impact: add more debug info to /debugfs/tracing/dyn_ftrace_total_info This patch adds dynamic ftrace NMI update statistics to the /debugfs/tracing/dyn_ftrace_total_info stat file. Signed-off-by: Steven Rostedt Cc: Peter Zijlstra Cc: Andrew Morton Cc: Linus Torvalds Cc: Steven Rostedt Signed-off-by: Ingo Molnar commit 17666f02b118099028522dfc3df00a235700e216 Author: Steven Rostedt Date: Thu Oct 30 16:08:32 2008 -0400 ftrace: nmi safe code modification Impact: fix crashes that can occur in NMI handlers, if their code is modified Modifying code is something that needs special care. On SMP boxes, if code that is being modified is also being executed on another CPU, that CPU will have undefined results. The dynamic ftrace uses kstop_machine to make the system act like a uniprocessor system. But this does not address NMIs, that can still run on other CPUs. One approach to handle this is to make all code that are used by NMIs not be traced. But NMIs can call notifiers that spread throughout the kernel and this will be very hard to maintain, and the chance of missing a function is very high. The approach that this patch takes is to have the NMIs modify the code if the modification is taking place. The way this works is that just writing to code executing on another CPU is not harmful if what is written is the same as what exists. Two buffers are used: an IP buffer and a "code" buffer. The steps that the patcher takes are: 1) Put in the instruction pointer into the IP buffer and the new code into the "code" buffer. 2) Set a flag that says we are modifying code 3) Wait for any running NMIs to finish. 4) Write the code 5) clear the flag. 6) Wait for any running NMIs to finish. If an NMI is executed, it will also write the pending code. Multiple writes are OK, because what is being written is the same. Then the patcher must wait for all running NMIs to finish before going to the next line that must be patched. This is basically the RCU approach to code modification. Thanks to Ingo Molnar for suggesting the idea, and to Arjan van de Ven for his guidence on what is safe and what is not. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 1cbd8b3fdcf56a3c39a7596512095c9e33221fa1 Author: Jan Beulich Date: Thu Oct 30 10:45:36 2008 +0000 x86: add two missing unwind annotations Impact: improve debuginfo Signed-off-by: Jan Beulich Signed-off-by: Ingo Molnar commit 8a1c8eb75be492e20003966652c9cd5ff57a559d Author: Aristeu Rozanski Date: Thu Oct 30 13:08:50 2008 -0400 x86, nmi-watchdog: update procfs nmi_watchdog file documentation v2 Impact: improve documentation This patch updates the /proc/sys/kernel/nmi_watchdog documentation. Updated: included Randy Dunlap's corrections. Signed-off-by: Aristeu Rozanski Acked-by: Randy Dunlap Signed-off-by: Ingo Molnar commit b062f841b569791d3054e975cd85f48562161565 Author: Cyrill Gorcunov Date: Thu Oct 30 19:16:46 2008 +0300 x86: nmi - add sensible names to nmi_watchdog boot param Impact: introduce nmi_watchdog=lapic and nmi_watchdog=ioapic aliases Add sensible names as "lapic" and "ioapic" to nmi_watchdog boot parameter. Sometimes it is not that easy to recall what exactly nmi_watchdog=1 does mean so we allow the using of symbolic names here. Old numeric values remain valid. Signed-off-by: Cyrill Gorcunov Signed-off-by: Ingo Molnar commit 7a5276889cfa96619bf863c87581005f46139986 Author: Jan Beulich Date: Thu Oct 30 10:38:24 2008 +0000 x86: simplify X86_MPPARSE config option Impact: cleanup Signed-off-by: Jan Beulich Signed-off-by: Ingo Molnar commit 0763722d28b7b58fa1f9b83d3378efcde855b18a Author: Takashi Iwai Date: Thu Oct 30 17:53:19 2008 +0100 ALSA: ASoC - Fix a typo in Kconfig The last change to Kconfig ca53fb24dd21bff32c4b41b2be1035a1adfc0135 added a wrong item SND_SOC_AC97, which must be SND_SOC_AC97_CODEC. Signed-off-by: Takashi Iwai commit 0c235d1e837c142b7565814318b6ba5917d5ac32 Author: Timur Tabi Date: Thu Aug 7 11:22:32 2008 -0500 ASoC: Disable automatic volume control in the CS4270 sound driver Disable the automatic volume control feature of the CS4270 audio codec. This feature, which is enabled by default, causes volume change commands to be delayed. Sometimes the volume change happens after playback is started. Signed-off-by: Timur Tabi Signed-off-by: Mark Brown commit ca53fb24dd21bff32c4b41b2be1035a1adfc0135 Author: Mark Brown Date: Wed Oct 22 22:41:11 2008 +0100 ASoC: Use finer grained dependencies in SND_SOC_ALL_CODECS Move the bus dependencies in SND_SOC_ALL_CODECS into the individual codec options rather than have them centrally. This allows the inclusion of AC97 codecs when testing on platforms with AC97 support and will also handle codecs on multi-function devices more gracefully. Signed-off-by: Mark Brown commit e775f6c0fb6ac25ab8845d4ad1e17b4b015487f0 Author: Mark Brown Date: Tue Oct 28 15:04:35 2008 +0000 ASoC: Do a warm reset after cold when resetting the WM9713 The WM9713 comes out of cold reset in low power mode so always requires a warm reset to bring up the AC97 link after a cold reset. Signed-off-by: Mark Brown commit 1b340bd7e444f20eb2df88c65fa34960c4736ee9 Author: Mark Brown Date: Wed Jul 30 19:12:04 2008 +0100 ASoC: Add PXA SSP support The SSP ports PXA series processors can be used to implement a variety of audio interface formats. This patch implements support for I2S, DSP A and DSP B modes on these ports. This patch is based on the previous out of tree pxa2xx-ssp driver (which was originally written by Liam Girdwood with updates from Philipp Zabel and Nicola Perrino) and pxa3xx-ssp driver (originally written by Seth Forsee based on the pxa2xx-ssp driver). Testing coverage is not complete currently. Tested-by: Daniel Ribeiro Signed-off-by: Mark Brown commit 8b6a5a37f87a414ef8636e36ec75accb27bb7508 Author: Eric Paris Date: Wed Oct 29 17:06:46 2008 -0400 SELinux: check open perms in dentry_open not inode_permission Some operations, like searching a directory path or connecting a unix domain socket, make explicit calls into inode_permission. Our choices are to either try to come up with a signature for all of the explicit calls to inode_permission and do not check open on those, or to move the open checks to dentry_open where we know this is always an open operation. This patch moves the checks to dentry_open. Signed-off-by: Eric Paris Acked-by: Stephen Smalley Signed-off-by: James Morris commit 219b93f5252086c8c8d647c77fc9e1377aab0c8d Author: Mark Brown Date: Tue Oct 28 13:02:31 2008 +0000 ASoC: Remove DAPM restriction on mixer control name lengths As well as ensuring that UI-relevant parts of control names don't get truncated in the DAPM code this avoids conflicts in long control names that differ only at the end of a long string. Signed-off-by: Mark Brown commit f24368c2fb524e911b831b86b5f0acfb38c70317 Author: Mark Brown Date: Tue Oct 21 21:45:08 2008 +0100 ASoC: Convert core to use standard debug print macros Signed-off-by: Mark Brown commit d45f6219d256b4e02f9ebee2e3911f4ea80bac70 Author: Mark Brown Date: Tue Oct 14 13:58:36 2008 +0100 ASoC: Fix handling of DAPM suspend work Since we can query the playback stream power state directly we do not need to infer if it is powered up from the timer being scheduled. Doing this avoids problems that previously existed with streams being incorrectly determined to be powered up caused when the timer is scheduled when streams are closed after being partially set up. Reported-by: Nobin Mathew Reported-by: Jukka Hynninen Signed-off-by: Mark Brown commit 12ef193d5817504621e503e78d641265f6a86ac4 Author: Troy Kisky Date: Mon Oct 13 17:42:14 2008 -0700 ASoC: Allow setting codec register with debugfs filesystem i.e. echo 6 59 >/sys/kernel/debug/soc-audio.0/codec_reg will set register 0x06 to a value of 0x59. Also, pop_time debugfs interface setup is moved so that it is setup in the same function as codec_reg Signed-off-by: Troy Kisky Signed-off-by: Mark Brown commit 57917752f51bcead3bb6c83d74137fbe342504ec Author: Hiroshi Shimamoto Date: Wed Oct 29 18:46:40 2008 -0700 x86: signal: cosmetic unification of NR_restart_syscall Impact: cleanup Add #ifdef directive to unify NR_restart_syscall. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit cabf503588961d202a33b3fd872767e9f6abbef7 Author: Hiroshi Shimamoto Date: Wed Oct 29 18:46:07 2008 -0700 x86: signal: cosmetic unification of macros for setup_rt_frame() Impact: cleanup Add #ifdef directive for unification. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 96bf84b71255b0ee4fcee91e9acd1b5e73030eaf Author: Hiroshi Shimamoto Date: Wed Oct 29 18:44:08 2008 -0700 x86: signal: cosmetic unification of signr_convert() Impact: cleanup Make signr_convert() same. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 34f3a814eef8069a24e5b3ebcf27aba9dabac2ea Author: Li Zefan Date: Thu Oct 30 15:23:32 2008 +0800 sched: switch sched_features to seqfile Impact: cleanup So handling of sched_features read is simplified. Signed-off-by: Li Zefan Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 8cf14e38372d84ea09ba45fb60b61f6e36c18546 Author: Harvey Harrison Date: Wed Oct 29 22:43:33 2008 -0700 net: easy removals of HIPQUAD using %pI4 format As a bonus, removes some unnecessary byteswapping. Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 9edb8bb68b5ea63061ba833831b00c229ac9fbd2 Author: Stephen Hemminger Date: Wed Oct 29 15:31:53 2008 -0700 macvlan: add support for ethtool get settings If macvlan's are used, it is useful to propgate speed and other settings from underlying device up for application usage. Signed-off-by: Stephen Hemminger Acked-by: Patrick McHardy Signed-off-by: David S. Miller commit 6b9a1066f8d4c57c1b778affd91fc38e1121b6f8 Author: Harvey Harrison Date: Wed Oct 29 12:53:10 2008 -0700 printk: remove %p6 format specifier, fix up comments Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 5b095d98928fdb9e3b75be20a54b7a6cbf6ca9ad Author: Harvey Harrison Date: Wed Oct 29 12:52:50 2008 -0700 net: replace %p6 with %pI6 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 4b7a4274ca63dadd9c4f17fc953f3a5d19855c4c Author: Harvey Harrison Date: Wed Oct 29 12:50:24 2008 -0700 net: replace %#p6 format specifier with %pi6 gcc warns when using the # modifier with the %p format specifier, so we can't use this to omit the colons when needed, introduces %pi6 instead. Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 4aa996066ffc0dba24036c961ee38dfdfbfc061c Author: Harvey Harrison Date: Wed Oct 29 12:49:58 2008 -0700 printk: add %I4, %I6, %i4, %i6 format specifiers For use in printing IPv4, or IPv6 addresses in the usual way: %i4 and %I4 are currently equivalent and print the address in dot-separated decimal x.x.x.x %I6 prints 16-bit network order hex with colon separators: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx %i6 omits the colons. Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 96631ed16c514cf8b28fab991a076985ce378c26 Author: Eric Dumazet Date: Wed Oct 29 11:19:58 2008 -0700 udp: introduce sk_for_each_rcu_safenext() Corey Minyard found a race added in commit 271b72c7fa82c2c7a795bc16896149933110672d (udp: RCU handling for Unicast packets.) "If the socket is moved from one list to another list in-between the time the hash is calculated and the next field is accessed, and the socket has moved to the end of the new list, the traversal will not complete properly on the list it should have, since the socket will be on the end of the new list and there's not a way to tell it's on a new list and restart the list traversal. I think that this can be solved by pre-fetching the "next" field (with proper barriers) before checking the hash." This patch corrects this problem, introducing a new sk_for_each_rcu_safenext() macro. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit f52b5054ec108aaa9e903850d6b62af8ae3fe6ae Author: Eric Dumazet Date: Wed Oct 29 11:19:11 2008 -0700 udp: udp_get_next() should use spin_unlock_bh() Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit e78a37bc7776955a142317b622818962c3ee75dd Author: Takashi Iwai Date: Wed Oct 29 16:08:01 2008 +0100 ALSA: Fix a typo in Kconfig The previous commit bbaf5e97337287479eb78dbc3822d9560bbfd2e2 has an obvious typo. Fixed now. Signed-off-by: Takashi Iwai commit 9cbbb3ac628227ec5b65fc043539949db606cd17 Author: Jaroslav Kysela Date: Wed Oct 29 13:41:35 2008 +0100 ALSA: Release v1.0.18 Signed-off-by: Jaroslav Kysela Signed-off-by: Takashi Iwai commit eab172294d5e24464f332dd8e94a57a9819c81c4 Author: Li Zefan Date: Wed Oct 29 17:03:22 2008 +0800 sched: cleanup for alloc_rt/fair_sched_group() Impact: cleanup Remove checking parent == NULL. It won't be NULLL, because we dynamically create sub task_group only, and sub task_group always has its parent. (root task_group is statically defined) Also replace kmalloc_node(GFP_ZERO) with kzalloc_node(). Signed-off-by: Li Zefan Signed-off-by: Ingo Molnar commit 8203efb3c612743fecb1ed67cf1daf9d9c127462 Author: Eric Dumazet Date: Wed Oct 29 02:32:32 2008 -0700 udp: calculate udp_mem based on low memory instead of all memory This patch mimics commit 57413ebc4e0f1e471a3b4db4aff9a85c083d090e (tcp: calculate tcp_mem based on low memory instead of all memory) The udp_mem array which contains limits on the total amount of memory used by UDP sockets is calculated based on nr_all_pages. On a 32 bits x86 system, we should base this on the number of lowmem pages. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 271b72c7fa82c2c7a795bc16896149933110672d Author: Eric Dumazet Date: Wed Oct 29 02:11:14 2008 -0700 udp: RCU handling for Unicast packets. Goals are : 1) Optimizing handling of incoming Unicast UDP frames, so that no memory writes should happen in the fast path. Note: Multicasts and broadcasts still will need to take a lock, because doing a full lockless lookup in this case is difficult. 2) No expensive operations in the socket bind/unhash phases : - No expensive synchronize_rcu() calls. - No added rcu_head in socket structure, increasing memory needs, but more important, forcing us to use call_rcu() calls, that have the bad property of making sockets structure cold. (rcu grace period between socket freeing and its potential reuse make this socket being cold in CPU cache). David did a previous patch using call_rcu() and noticed a 20% impact on TCP connection rates. Quoting Cristopher Lameter : "Right. That results in cacheline cooldown. You'd want to recycle the object as they are cache hot on a per cpu basis. That is screwed up by the delayed regular rcu processing. We have seen multiple regressions due to cacheline cooldown. The only choice in cacheline hot sensitive areas is to deal with the complexity that comes with SLAB_DESTROY_BY_RCU or give up on RCU." - Because udp sockets are allocated from dedicated kmem_cache, use of SLAB_DESTROY_BY_RCU can help here. Theory of operation : --------------------- As the lookup is lockfree (using rcu_read_lock()/rcu_read_unlock()), special attention must be taken by readers and writers. Use of SLAB_DESTROY_BY_RCU is tricky too, because a socket can be freed, reused, inserted in a different chain or in worst case in the same chain while readers could do lookups in the same time. In order to avoid loops, a reader must check each socket found in a chain really belongs to the chain the reader was traversing. If it finds a mismatch, lookup must start again at the begining. This *restart* loop is the reason we had to use rdlock for the multicast case, because we dont want to send same message several times to the same socket. We use RCU only for fast path. Thus, /proc/net/udp still takes spinlocks. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 645ca708f936b2fbeb79e52d7823e3eb2c0905f8 Author: Eric Dumazet Date: Wed Oct 29 01:41:45 2008 -0700 udp: introduce struct udp_table and multiple spinlocks UDP sockets are hashed in a 128 slots hash table. This hash table is protected by *one* rwlock. This rwlock is readlocked each time an incoming UDP message is handled. This rwlock is writelocked each time a socket must be inserted in hash table (bind time), or deleted from this table (close time) This is not scalable on SMP machines : 1) Even in read mode, lock() and unlock() are atomic operations and must dirty a contended cache line, shared by all cpus. 2) A writer might be starved if many readers are 'in flight'. This can happen on a machine with some NIC receiving many UDP messages. User process can be delayed a long time at socket creation/dismantle time. This patch prepares RCU migration, by introducing 'struct udp_table and struct udp_hslot', and using one spinlock per chain, to reduce contention on central rwlock. Introducing one spinlock per chain reduces latencies, for port randomization on heavily loaded UDP servers. This also speedup bindings to specific ports. udp_lib_unhash() was uninlined, becoming to big. Some cleanups were done to ease review of following patch (RCUification of UDP Unicast lookups) Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 1b063c3d090c45298a37ebc879c71379cf845d9c Merge: d301fc320f3e673a49200d9ce51036caa9abd768 c1e99bd9d6a0c82f4fa9078ed1f570e57b2f3944 Author: Takashi Iwai Date: Wed Oct 29 08:17:05 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda commit d301fc320f3e673a49200d9ce51036caa9abd768 Author: Takashi Iwai Date: Wed Oct 29 08:15:30 2008 +0100 ALSA: hda - Fix indentation in hda_local.h Just cosmetic fixes of spacing that annoyed me. Signed-off-by: Takashi Iwai commit b189db5d299c6824780af5590564ff608adb3dea Author: Harvey Harrison Date: Tue Oct 28 22:38:52 2008 -0700 net: remove NIP6(), NIP6_FMT, NIP6_SEQFMT and final users Open code NIP6_FMT in the one call inside sscanf and one user of NIP6() that could use %p6 in the netfilter code. Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit a20fd0a783551831bb6b9b69710e5bbb93dc2730 Author: Harvey Harrison Date: Tue Oct 28 22:38:06 2008 -0700 uwb: use the %pM formatting specifier in eda.c Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 8c165a8383ef56e84b541fa638be5cf1440010e7 Author: Harvey Harrison Date: Tue Oct 28 22:37:41 2008 -0700 infiniband: remove IPOIB_GID_RAW_ARG, IPOIB_GID_ARG, IPOIB_GID_FMT Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit fcace2fe7a86237c451b09aaf7e2e9d19e09887f Author: Harvey Harrison Date: Tue Oct 28 22:37:22 2008 -0700 infiniband: ipoib replace IPOIB_GID_FMT with %p6 Replace all uses of IPOIB_GID_FMT, IPOIB_GID_RAW_ARG() and IPOIB_GID_ARG() Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 8867cd7c8678ff2d9d0382dbbfbcc7a3e7e61cbc Author: Harvey Harrison Date: Tue Oct 28 22:36:33 2008 -0700 infiniband: use %p6 for printing message ids Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit b30200616f97a81243e6d0c644d8ab06bf0b8115 Author: Stephen Hemminger Date: Tue Oct 28 22:12:36 2008 -0700 vlan: propogate ethtool speed values This enables more ethtool information. The speed and settings of the underlying device are propagated up. This makes services like SNMP that use ethtool to get speed setting, work when managing a vlan, without adding silly heurtistics into SNMP daemon. For the driver info, just use existing driver strings. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 3717746ef8b5a9279281b5d318496710984ed739 Author: Daniel Lezcano Date: Tue Oct 28 22:08:46 2008 -0700 veth: remove unused list The veth network device is stored in a list in the netdev private. AFAICS, this list is never used so I removed this list from the code. Signed-off-by: Daniel Lezcano Signed-off-by: David S. Miller commit bb7bba3d56963be59bc6764c8021290ed55205ad Author: Daniel Lezcano Date: Tue Oct 28 22:08:19 2008 -0700 veth: Remove useless veth field The veth private structure contains a netdev pointer refering to its peer. This field is never used and it is pointless because if we can access, the veth_priv, that means we already have the netdev which is stored in veth_priv->dev. Signed-off-by: Daniel Lezcano Signed-off-by: David S. Miller commit fdb46ee752ed05c94bac71fe3decdb5175ec6e1f Author: Harvey Harrison Date: Tue Oct 28 16:10:17 2008 -0700 net, misc: replace uses of NIP6_FMT with %p6 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 0c6ce78abf6e228d44c3840edb8a4ae0c1299825 Author: Harvey Harrison Date: Tue Oct 28 16:09:23 2008 -0700 net: replace uses of NIP6_FMT with %p6 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 38ff4fa49bef77e86b21d95d9ce341a098f02839 Author: Harvey Harrison Date: Tue Oct 28 16:08:13 2008 -0700 netfilter: replace uses of NIP6_FMT with %p6 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 1afa67f5e70b4733d5b237df61e6d639af6283bb Author: Harvey Harrison Date: Tue Oct 28 16:06:44 2008 -0700 misc: replace NIP6_FMT with %p6 format specifier The iscsi_ibft.c changes are almost certainly a bugfix as the pointer 'ip' is a u8 *, so they never print the last 8 bytes of the IPv6 address, and the eight bytes they do print have a zero byte with them in each 16-bit word. Other than that, this should cause no difference in functionality. Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit b071195deba14b37ce896c26f20349b46e5f9fd2 Author: Harvey Harrison Date: Tue Oct 28 16:05:40 2008 -0700 net: replace all current users of NIP6_SEQFMT with %#p6 The define in kernel.h can be done away with at a later time. Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 689afa7da106032a3e859ae35494f80dd6eac640 Author: Harvey Harrison Date: Tue Oct 28 16:04:44 2008 -0700 printk: add %p6 format specifier for IPv6 addresses Takes a pointer to a IPv6 address and formats it in the usual colon-separated hex format: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx Each 16 bit word is printed in network-endian byteorder. %#p6 is also supported and will omit the colons. %p6 is a replacement for NIP6_FMT and NIP6() %#p6 is a replacement for NIP6_SEQFMT and NIP6() Note that NIP6() took a struct in6_addr whereas this takes a pointer to a struct in6_addr. Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 3a2dfbe8acb154905fdc2fd03ec56df42e6c4cc4 Author: Martin Willi Date: Tue Oct 28 16:01:07 2008 -0700 xfrm: Notify changes in UDP encapsulation via netlink Add new_mapping() implementation to the netlink xfrm_mgr to notify address/port changes detected in UDP encapsulated ESP packets. Signed-off-by: Martin Willi Signed-off-by: David S. Miller commit 93adcc80f3288f1827baf6f821af818f6eeef7f9 Author: Alexey Dobriyan Date: Tue Oct 28 13:25:09 2008 -0700 net: don't use INIT_RCU_HEAD call_rcu() will unconditionally rewrite RCU head anyway. Applies to struct neigh_parms struct neigh_table struct net struct cipso_v4_doi struct in_ifaddr struct in_device rt->u.dst Signed-off-by: Alexey Dobriyan Acked-by: Paul E. McKenney Signed-off-by: David S. Miller commit def8b4faff5ca349beafbbfeb2c51f3602a6ef3a Author: Alexey Dobriyan Date: Tue Oct 28 13:24:06 2008 -0700 net: reduce structures when XFRM=n ifdef out * struct sk_buff::sp (pointer) * struct dst_entry::xfrm (pointer) * struct sock::sk_policy (2 pointers) Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit b057efd4d226fcc3a92b0dc6d8ea8e8185ecb260 Author: Patrick McHardy Date: Tue Oct 28 11:59:11 2008 -0700 netlink: constify struct nlattr * arg to parsing functions Signed-off-by: Patrick McHardy Signed-off-by: David S. Miller commit ad38dab01323a01e825555fc46863b73cd0efdc7 Author: Harvey Harrison Date: Mon Oct 27 13:30:56 2008 -0700 x86: use the new byteorder headers Impact: cleanup, no functionality changed Signed-off-by: Harvey Harrison Signed-off-by: Ingo Molnar commit d4f1b10365d4f03dd802433e0014cf503e6e930c Author: Jike Song Date: Fri Oct 17 13:25:07 2008 +0800 x86: clean up comments wrt. rd{msr|tsc|pmc} The rdmsr instruction(et al) for i386 and x86-64 are semantically same. The only difference is how gcc interpret constraint "A" for these targets. Signed-off-by: Jike Song Signed-off-by: Ingo Molnar commit 2011a067281565494494aee194ca5081e52d6c3f Merge: 63fb70859f987f2b3b8028fa467fd63336315e9c 0173a3265b228da319ceb9c1ec6a5682fd1b2d92 Author: Ingo Molnar Date: Tue Oct 28 16:46:59 2008 +0100 Merge commit 'v2.6.28-rc2' into x86/doc commit 30604bb410b53efa9c93ee8f03d7aa7494094faa Author: Yinghai Lu Date: Tue Oct 14 18:59:18 2008 -0700 x86: break up mtrr_cleanup() into several small functions. Ingo said mtrr_cleanup() is big and ugly. so break it up into more functions and make it more readable. Signed-off-by: Yinghai Lu Signed-off-by: Ingo Molnar commit 7a9787e1eba95a166265e6a260cf30af04ef0a99 Merge: 41b9eb264c8407655db57b60b4457fe1b2ec9977 0173a3265b228da319ceb9c1ec6a5682fd1b2d92 Author: Ingo Molnar Date: Tue Oct 28 16:26:12 2008 +0100 Merge commit 'v2.6.28-rc2' into x86/pci-ioapic-boot-irq-quirks commit 163d4c53e3efb457eee96f7487ba3baef2be7796 Merge: 34c25350acfc792747e861d1e36874abf7e73255 e044c39ae258678d6ebb09fccb2a0fdf7ec51847 Author: Takashi Iwai Date: Tue Oct 28 11:44:45 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda commit 34c25350acfc792747e861d1e36874abf7e73255 Author: Takashi Iwai Date: Tue Oct 28 11:38:58 2008 +0100 ALSA: hda - Remove old codec-probe limitation Removed the old workaround to avoid the non-existing codec slot. The current code should work without that workaround. If any, we can add a quirk table. Signed-off-by: Takashi Iwai commit 15ad9a531a64d46af54839ab13542a81ad4c82a5 Merge: 911fc25dda145f4f7313535466eec0c9f4a51ea1 c3e5203bed1999df716e3c7119f6749523eb952f Author: Takashi Iwai Date: Tue Oct 28 11:41:18 2008 +0100 Merge branch 'topic/fix/asoc' into topic/asoc commit 3891845e1ef6e6807075d4241966b26f6ecb0a5c Author: Eric W. Biederman Date: Mon Oct 27 17:51:47 2008 -0700 netns: Coexist with the sysfs limitations v2 To make testing of the network namespace simpler allow the network namespace code and the sysfs code to be compiled and run at the same time. To do this only virtual devices are allowed in the additional network namespaces and those virtual devices are not placed in the kobject tree. Since virtual devices don't actually do anything interesting hardware wise that needs device management there should be no loss in keeping them out of the kobject tree and by implication sysfs. The gain in ease of testing and code coverage should be significant. Changelog: v2: As pointed out by Benjamin Thery it only makes sense to call device_rename in the initial network namespace for now. Signed-off-by: Eric W. Biederman Acked-by: Benjamin Thery Tested-by: Serge Hallyn Acked-by: Serge Hallyn Acked-by: Daniel Lezcano Signed-off-by: David S. Miller commit 7c510e4b730a92cecf94ada45c989d8be0200d47 Author: Johannes Berg Date: Mon Oct 27 17:47:26 2008 -0700 net: convert more to %pM A number of places still use %02x:...:%02x because it's in debug statements or for no real reason. Make a few of them use %pM. Signed-off-by: Johannes Berg Signed-off-by: David S. Miller commit e174961ca1a0b28f7abf0be47973ad57cb74e5f0 Author: Johannes Berg Date: Mon Oct 27 15:59:26 2008 -0700 net: convert print_mac to %pM This converts pretty much everything to print_mac. There were a few things that had conflicts which I have just dropped for now, no harm done. I've built an allyesconfig with this and looked at the files that weren't built very carefully, but it's a huge patch. Signed-off-by: Johannes Berg Signed-off-by: David S. Miller commit 0c68ae2605dbcf67414d8d1f19af93be44b355fb Author: Johannes Berg Date: Mon Oct 27 15:56:10 2008 -0700 mac80211: convert to %pM away from print_mac Also remove a few stray DECLARE_MAC_BUF that were no longer used at all. Signed-off-by: Johannes Berg Signed-off-by: David S. Miller commit dd45c9cf687682c9ce256ab14bd8914db77410bb Author: Harvey Harrison Date: Mon Oct 27 15:47:12 2008 -0700 printk: add %pM format specifier for MAC addresses Add format specifiers for printing out six colon-separated bytes: MAC addresses (%pM): xx:xx:xx:xx:xx:xx %#pM is also supported and omits the colon separators. Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 1080d709fb9d8cd4392f93476ee46a9d6ea05a5b Author: Neil Horman Date: Mon Oct 27 12:28:25 2008 -0700 net: implement emergency route cache rebulds when gc_elasticity is exceeded This is a patch to provide on demand route cache rebuilding. Currently, our route cache is rebulid periodically regardless of need. This introduced unneeded periodic latency. This patch offers a better approach. Using code provided by Eric Dumazet, we compute the standard deviation of the average hash bucket chain length while running rt_check_expire. Should any given chain length grow to larger that average plus 4 standard deviations, we trigger an emergency hash table rebuild for that net namespace. This allows for the common case in which chains are well behaved and do not grow unevenly to not incur any latency at all, while those systems (which may be being maliciously attacked), only rebuild when the attack is detected. This patch take 2 other factors into account: 1) chains with multiple entries that differ by attributes that do not affect the hash value are only counted once, so as not to unduly bias system to rebuilding if features like QOS are heavily used 2) if rebuilding crosses a certain threshold (which is adjustable via the added sysctl in this patch), route caching is disabled entirely for that net namespace, since constant rebuilding is less efficient that no caching at all Tested successfully by me. Signed-off-by: Neil Horman Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 69a72a0e9337aad8c730e8e9942d5aa022bc4c5c Author: Mike Travis Date: Mon Oct 27 07:51:20 2008 -0700 x86/uv: update SCIR driver to use the idle_cpu() function Impact: cleanup Change UV heartbeat function to use idle_cpu to determine cpu's "idleness". Realign uv_hub definitions. Signed-of-by: Mike Travis Signed-off-by: Ingo Molnar commit 878719e831d9e076961aa15d4049a57a6668c67a Author: Neil Horman Date: Thu Oct 23 10:40:06 2008 -0400 x86: unify appropriate bits from dumpstack_32 and dumpstack_64 Impact: cleanup As promised, now that dumpstack_32 and dumpstack_64 have so many bits in common, we should merge the in-sync bits into a common file, to prevent them from diverging again. This patch removes bits which are common between dumpstack_32.c and dumpstack_64.c and places them in a common dumpstack.c which is built for both 32 and 64 bit arches. Signed-off-by: Neil Horman Acked-by: Alexander van Heukelum Signed-off-by: Ingo Molnar Makefile | 2 arch/x86/kernel/Makefile | 2 arch/x86/kernel/Makefile | 2 arch/x86/kernel/Makefile | 2 arch/x86/kernel/Makefile | 2 arch/x86/kernel/Makefile | 2 arch/x86/kernel/dumpstack.c | 319 +++++++++++++++++++++++++++++++++++++++++ arch/x86/kernel/dumpstack.h | 39 +++++ arch/x86/kernel/dumpstack_32.c | 294 ------------------------------------- arch/x86/kernel/dumpstack_64.c | 285 ------------------------------------ 5 files changed, 363 insertions(+), 576 deletions(-) commit 7d5a78cd98c3a5eb83bd6a061c5ea6ef1e9b8fcb Author: Aristeu Rozanski Date: Mon Oct 27 12:42:35 2008 -0400 x86, NMI watchdog: disable NMIs on LVT0 in case NMI watchdog is not working Impact: change NMI watchdog detection and disabling sequence Currently, if the NMI watchdog fails using IOAPIC method, it'll only disable interrupts on 8259 if the timer is passing thru it. This patch disables NMI delivery on LINT0 if the NMI watchdog initial test fails, just for safety. Signed-off-by: Aristeu Rozanski Cc: "Maciej W. Rozycki" Signed-off-by: Ingo Molnar commit 6f290b4e016d6c61511542cf6d9ebdef1965978e Author: Aristeu Rozanski Date: Mon Oct 27 12:42:34 2008 -0400 x86, NMI watchdog: add support to enable and disable IOAPIC NMI Impact: change/improve the way /proc/sys/kernel/nmi_watchdog works This patch adds support to enable/disable IOAPIC NMI watchdog in runtime via procfs. Signed-off-by: Aristeu Rozanski Cc: "Maciej W. Rozycki" Signed-off-by: Ingo Molnar commit b43d196c4d3fe46d6dda7c987c47792612b80b1b Author: Arjan van de Ven Date: Sun Oct 5 12:21:32 2008 -0700 x86: corruption-check: some post-move cleanups Impact: cleanup now that the code is moved and converted to a work queue, there's some minor cleanups that can be done. Signed-off-by: Arjan van de Ven Signed-off-by: Ingo Molnar commit 304e629bf4a3150a0bf6556fc45c52c5c082340f Author: Arjan van de Ven Date: Sun Oct 5 12:09:03 2008 -0700 x86: corruption check: run the corruption checks from a work queue Impact: change the implementation of the debug feature the periodic corruption checks are better off run from a work queue; there's nothing time critical about them and this way the amount of interrupt-context work is reduced. Signed-off-by: Arjan van de Ven Signed-off-by: Ingo Molnar commit 6784f7d0a5016a397d38be1134e63fc784c1ca8e Author: Arjan van de Ven Date: Sun Oct 5 11:33:42 2008 -0700 x86: corruption check: move the corruption checks into their own file Impact: cleanup The corruption check code is rather sizable and it's likely to grow over time when we add checks for more types of corruptions (there's a few candidates in kerneloops.org that I want to add checks for)... so lets move it to its own file Signed-off-by: Arjan van de Ven Signed-off-by: Ingo Molnar commit 04d2aac33eb54fd3084140f2db130530d71e97c6 Author: Arjan van de Ven Date: Sun Oct 5 11:08:10 2008 -0700 x86: corruption-check: fix some style issues Impact: cleanup Before moving the code to it's own file, fix some style issues in the corruption check code. Signed-off-by: Arjan van de Ven Signed-off-by: Ingo Molnar commit 944ac4259e39801c843a915c3da8194ac9af0440 Author: Steven Rostedt Date: Thu Oct 23 19:26:08 2008 -0400 ftrace: ftrace dump on oops control Impact: add (default-off) dump-trace-on-oops flag Currently, ftrace is set up to dump its contents to the console if the kernel panics or oops. This can be annoying if you have trace data in the buffers and you experience an oops, but the trace data is old or static. Usually when you want ftrace to dump its contents is when you are debugging your system and you have set up ftrace to trace the events leading to an oops. This patch adds a control variable called "ftrace_dump_on_oops" that will enable the ftrace dump to console on oops. This variable is default off but a developer can enable it either through the kernel command line by adding "ftrace_dump_on_oops" or at run time by setting (or disabling) /proc/sys/kernel/ftrace_dump_on_oops. v2: Replaced /** with /* as Randy explained that kernel-doc does not yet handle variables. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit c63dfefd48d92b1db3400fe8de4886a519ac3949 Author: Dan McGee Date: Thu Oct 23 15:44:02 2008 -0500 x86: remove dead IRQBALANCE code Impact: cleanup CONFIG_IRQBALANCE was removed in commit 8b8e8c1bf; this ifdef was still around. Signed-off-by: Dan McGee Signed-off-by: Ingo Molnar commit fd4a2030a358b4818646031049d9631bd45b9915 Author: Hiroshi Shimamoto Date: Thu Oct 23 17:15:28 2008 -0700 x86: signal_64.c: get_stack() doesn't need entire regs Impact: cleanup get_stack() uses sp only, entire regs is not needed. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 709110bd5624094992579f5311541f2e2b7ce58a Author: Hiroshi Shimamoto Date: Thu Oct 23 17:14:25 2008 -0700 x86: signal: cosmetic unification of restore_sigcontext() Impact: cleanup Make restore_sigcontext() the same. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit fd3fdf11d3c649769e02459c5f1b8081a15e9007 Author: Pekka Paalanen Date: Fri Oct 24 20:08:11 2008 +0300 trace: add the MMIO-tracer to the tracer menu, cleanup Impact: cleanup We can remove MMIOTRACE_HOOKS and replace it with just MMIOTRACE. MMIOTRACE_HOOKS is a remnant from the time when I thought that something else could also use the kmmio facilities. Signed-off-by: Pekka Paalanen Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 5d9881ea1440f046ee851bbaa2a2962543336a11 Author: Zhaolei Date: Wed Oct 22 11:38:01 2008 +0800 markers: break the redundant loop in kernel/marker.c Impact: cleanup, no functionality changed Because e->name is unique in list, we don't need to continue the iteration after matched. Signed-off-by: Zhao Lei Acked-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 4de62748e69c31fc4fd5bc43b73e9cf60a17ec53 Author: Lai Jiangshan Date: Wed Oct 15 14:56:47 2008 +0800 markers: let marker_table be close to its comments marker_table is defined far from its comments, this fix make cleanup for it. Signed-off-by: Lai Jiangshan Acked-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 505e371da195fad20cb8aaf45407a2849774d6d0 Author: Lai Jiangshan Date: Wed Oct 15 14:56:42 2008 +0800 markers: remove exported symbol marker_probe_cb_noarg() marker_probe_cb_noarg() should not be seen by outer code. this patch remove it. Signed-off-by: Lai Jiangshan Acked-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 0eec481e8fb000a209fda9bf8f466aca87dc1150 Author: Lai Jiangshan Date: Wed Oct 15 14:56:37 2008 +0800 markers: simplify marker_set_format() current marker_set_format() is complex this patch simplify it, and decrease the overhead of marker_update_probes(). Signed-off-by: Lai Jiangshan Acked-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 7f1baa063e2582dd52d83bb31508e9e84468c666 Author: Mike Travis Date: Fri Oct 24 15:24:29 2008 -0700 x86/uv: provide a System Activity Indicator driver Impact: start per CPU heartbeat LED timers on SGI UV systems The SGI UV system has no LEDS but uses one of the system controller regs to indicate the online internal state of the cpu. There is a heartbeat bit indicating that the cpu is responding to interrupts, and an idle bit indicating whether the cpu is idle when the heartbeat interrupt occurs. The current period is one second. When a cpu panics, an error code is written by BIOS to this same reg. This patchset provides the following: * x86_64: Add base functionality for writing to the specific SCIR's for each cpu. * heartbeat: Invert "heartbeat" bit to indicate the cpu is "interruptible". If the current thread is the idle thread, then indicate system is "idle". * if hotplug enabled, all bits are set (0xff) when the cpu is disabled. Signed-off-by: Mike Travis Signed-off-by: Ingo Molnar commit 5292ae11babca23c3ff82593630d2d7eebc350a9 Merge: b0f209898f1a177bd503d49215b8c6628797a81c 0173a3265b228da319ceb9c1ec6a5682fd1b2d92 Author: Ingo Molnar Date: Mon Oct 27 12:38:02 2008 +0100 Merge commit 'v2.6.28-rc2' into x86/uv commit f4a2a0d9a4226846693b5b4462d4350c1bfd58ea Author: Frederic Weisbecker Date: Mon Oct 27 02:05:25 2008 +0100 ftrace: add a script to produce a hierarchical view of a function trace This script parses a function trace and then produces a hierarchical view of the function call stack after processing it into a tree. Changes on V2 thanks to the trace sent by Steven: - Support both the files "trace" and "trace_pipe" (comments and space differences) - Correct the mini HOW-TO at the beginning. Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 8479d94e9f6a44b5050cbacf653272a561fbe0d0 Author: Mikael Pettersson Date: Mon Oct 27 09:30:57 2008 +0100 x86, signals: remove duplicated register setup code in ia32 signal delivery Impact: cleanup, no functionality changed ia32_setup_rt_frame() has a duplicated code block labelled "Make -mregparm=3 work" for setting up the register parameters to the user-mode signal handler. This is harmless but ugly. Remove the redundant assignments. Signed-off-by: Mikael Pettersson Signed-off-by: Ingo Molnar commit 4fc85e451ff5e9b6ccd7f5cac7f65684755370e2 Merge: 9f50bbad8fc3b0f9fd453ab1e2716b3106d89b13 67679b1fd166da8398e70b7dbffe12cfccf9c7bf Author: Takashi Iwai Date: Mon Oct 27 08:50:43 2008 +0100 Merge branch 'topic/misc-next' into topic/misc commit 911fc25dda145f4f7313535466eec0c9f4a51ea1 Merge: 4b7d283150b35db6e5e10f72606f603ff424c92a 6b9331165e9827e055389e22d1cbdb5fe3cff835 Author: Takashi Iwai Date: Mon Oct 27 08:37:08 2008 +0100 Merge branch 'topic/asoc-next' into topic/asoc commit 42dc2378b52bb6e155dd2e4fb4ca694785bf2c1d Merge: da74ae3e32374755e0fbdfed4074cf839a82f615 74aeaabc3e452b29bc1b9eac5aa48923569f8a4e Author: Takashi Iwai Date: Mon Oct 27 08:36:48 2008 +0100 Merge branch 'topic/hda-next' into topic/hda commit 74aeaabc3e452b29bc1b9eac5aa48923569f8a4e Author: Matthew Ranostay Date: Sat Oct 25 01:06:04 2008 -0400 ALSA: hda: add support for jack detection on IDT codecs. This patch adds support to the IDT codec families to report jack status to the jack abstraction layer. This required some reorganization in the stac92xx_unsol_event function in which the index value is changed to reporting the nid with the event. Also adds an sigmatel_jack struct to keep track of the nid relation to the jack abstraction layer instance. Also adds functions to set and retrieve data values for each nid, this is used in stac92xx_unsol_event to retrieve the GPIO mask for STAC_VREF_EVENT. Signed-off-by: Matthew Ranostay Signed-off-by: Takashi Iwai commit 50a9f7905fb3e6ae25e80ba443a14d878caef0c9 Author: Matthew Ranostay Date: Sat Oct 25 01:05:45 2008 -0400 ALSA: hda: add snd_hda_get_jack* functions This patch adds snd_hda_get_jack* functions for reporting jack location, device, and connectivity type. Signed-off-by: Matthew Ranostay Signed-off-by: Takashi Iwai commit a53ccab3ccac9e8676a683df9822a2daec83ef54 Author: Matthew Ranostay Date: Sat Oct 25 01:05:04 2008 -0400 ALSA: jack: lineout support to jack abstraction layer This patch introduces support for reporting SW_LINEOUT_INSERT detection events via the jack abstraction layer. Also adds a SND_JACK_LINEOUT define to the input system header. Signed-off-by: Matthew Ranostay Cc: Dmitry Torokhov Acked-by: Mark Brown Signed-off-by: Takashi Iwai commit 282cd76ffca781013151344c4b0f9229e9ea3c35 Author: Matthew Ranostay Date: Sat Oct 25 01:05:29 2008 -0400 ALSA: hda: dynamic jack id This patch duplicates the jack->id pointer with kstrdup() to prevent scoping issues from calling autoprobing functions from the HDA section. Signed-off-by: Matthew Ranostay Acked-by: Mark Brown Signed-off-by: Takashi Iwai commit bbaf5e97337287479eb78dbc3822d9560bbfd2e2 Author: Takashi Iwai Date: Fri Oct 24 18:16:50 2008 +0200 ALSA: Add hrtimer backend for ALSA timer interface Added the hrtimer backend for ALSA timer interface. It can be used for the sequencer timer source. Signed-off-by: Takashi Iwai commit 63fb70859f987f2b3b8028fa467fd63336315e9c Author: Sitsofe Wheeler Date: Sat Oct 11 20:27:53 2008 +0100 x86: change OPTIMIZE_INLINING help to say enabling makes smaller kernels Impact: clarify Kconfig help text The OPTIMIZE_INLINING help currently says "The gcc 4.x series have a rewritten inlining algorithm and disabling this option will generate a smaller kernel there." This contradicts other parts of the help text and my own tests: 5463127 2008-10-11 19:51 vmlinux.no-opt 5456152 2008-10-11 19:56 vmlinux.opt Reword text to say that enabling OPTIMIZE_INLINING will lead to smaller kernels with gcc 4.x or later. Signed-off-by: Sitsofe Wheeler Signed-off-by: Ingo Molnar commit 67679b1fd166da8398e70b7dbffe12cfccf9c7bf Author: Vedran Miletic Date: Thu Oct 23 18:51:00 2008 +0200 ALSA: emu10k1: fix coding style for emu10k1_main.c I fixed all of coding style errors and some warnings, now it is down to: checkpatch.pl-0.24 --no-tree --file --strict --terse emu10k1_main.c total: 0 errors, 62 warnings, 7 checks, 2075 lines checked Signed-off-by: Vedran Miletic Signed-off-by: Takashi Iwai commit 888dcb7cb26fb85dfe3486d28a2431d69d3e8148 Author: Johannes Berg Date: Thu Oct 23 15:47:56 2008 +0200 ALSA: aoa: clean up file names This cleans up the apple onboard audio driver filenames. Signed-off-by: Johannes Berg Signed-off-by: Takashi Iwai commit 871d3779cba18b028e34d0d2f6cc6caae76a97b6 Author: Alexander van Heukelum Date: Wed Oct 22 12:00:14 2008 +0200 i386, dumpstack: unify die() Make i386's die() equal to x86_64's version. Whitespace-only changes on x86_64, to make it equal to i386's version. (user_mode and user_mode_vm are equal on x86_64.) Signed-off-by: Alexander van Heukelum Acked-by: Neil Horman Signed-off-by: Ingo Molnar commit e06ca430c3d0fddbd1c901ab3fb3e1f0bc8a786b Author: Alexander van Heukelum Date: Wed Oct 22 12:00:13 2008 +0200 i386, dumpstack: use oops_begin/oops_end in die_nmi Use oops_begin and oops_end in die_nmi. Whitespace-only changes on x86_64, to make it equal to i386's version. Signed-off-by: Alexander van Heukelum Acked-by: Neil Horman Signed-off-by: Ingo Molnar commit e4955cfd2f5c81eb708f55769aa60173f207fd63 Author: Alexander van Heukelum Date: Wed Oct 22 12:00:12 2008 +0200 i386, dumpstack: use x86_64's method to account die_nest_count oops_begin/oops_end should always be used in pairs. On x86_64 oops_begin increments die_nest_count, and oops_end decrements die_nest_count. Doing this makes oops_begin and oops_end equal to the x86_64 versions. Signed-off-by: Alexander van Heukelum Acked-by: Neil Horman Signed-off-by: Ingo Molnar commit 10b14cb7eb7dd5bff8023f76a55c8ac20e586128 Author: Alexander van Heukelum Date: Wed Oct 22 12:00:11 2008 +0200 x86, dumpstack: always call oops_exit from oops_end Always call oops_exit from oops_end, even if signr==0. Also, move add_taint(TAINT_DIE) from __die to oops_end on x86_64 and interchange two lines to make oops_end more similar to the i386-version. Signed-off-by: Alexander van Heukelum Acked-by: Neil Horman Signed-off-by: Ingo Molnar commit 0ed7a498f416dcfa1cca478a559238a2a3396240 Author: Alexander van Heukelum Date: Wed Oct 22 12:00:10 2008 +0200 x86_64, dumpstack: move kexec_crash from __die to oops_end oops_end is preceded by either a call to __die, or a conditional call to crash_kexec. Move the conditional call to crash_kexec from the end of __die to the start of oops_end and remove the superfluous call to crash_kexec in die_nmi. Signed-off-by: Alexander van Heukelum Acked-by: Neil Horman Signed-off-by: Ingo Molnar commit 874d93d11823b2b861addac6a5dc31162e924ab2 Author: Alexander van Heukelum Date: Wed Oct 22 12:00:09 2008 +0200 x86, dumpstack: let signr=0 signal no do_exit Change oops_end such that signr=0 signals that do_exit is not to be called. Currently, each use of __die is soon followed by a call to oops_end and 'regs' is set to NULL if oops_end is expected not to call do_exit. Change all such pairs to set signr=0 instead. On x86_64 oops_end is used 'bare' in die_nmi; use signr=0 instead of regs=NULL there, too. Signed-off-by: Alexander van Heukelum Acked-by: Neil Horman Signed-off-by: Ingo Molnar commit b4b8f87bf4958cbad620654efc0882ac46c19846 Author: Alexander van Heukelum Date: Wed Oct 22 12:00:08 2008 +0200 i386, dumpstack: move crash_kexec before bust_spinlocks(0) in oops_end crash_kexec should not be called with console_sem held. Move the call before bust_spinlocks(0) in oops_end to avoid the problem. Signed-off-by: Alexander van Heukelum Acked-by: "Neil Horman" Signed-off-by: Ingo Molnar commit 9e899816d126cc6f7d405c349f65363214fe7399 Author: Nick Piggin Date: Wed Oct 22 12:33:16 2008 +0200 x86, mm: enable GBPAGES option by default DIRECT_GBPAGES was under DEBUG_KERNEL && EXPERIMENTAL and disabled by default. Turn it on by default and put it under EMBEDDED. Signed-off-by: Nick Piggin Signed-off-by: Ingo Molnar commit b0f209898f1a177bd503d49215b8c6628797a81c Author: Russ Anderson Date: Tue Oct 21 14:09:51 2008 -0500 x86, uv: use consistent names for region size and conherence id on x86 and ia64 Use consistent names for region size and conherence id on x86 and ia64. The SGI xp drivers are used on both ia64 and x86. Using the same names (sn_coherency_id, sn_region_size) simplies the driver code. Signed-off-by: Russ Anderson Signed-off-by: Ingo Molnar commit 718a2594b6a8c1c050fea85abbb4932b11105c17 Author: Vedran Miletic Date: Tue Oct 21 21:31:27 2008 +0200 ALSA: emu10k1: fix faulty commit 18c71092 Commit 18c7109289625106cdc810b20b628cd13b46d6dd had #endif leftoff from compilation. This patch fixes it. Also, I replaced a misplaced comment by a useful one, that explains why are here #ifdef and #endif added in compilation. Signed-off-by: Vedran Miletic Signed-off-by: Takashi Iwai commit 18c7109289625106cdc810b20b628cd13b46d6dd Author: Vedran Miletic Date: Tue Oct 21 17:42:54 2008 +0200 ALSA: emu10k1: fix device names for Live!/Audigy1/2/4/E-mu * added missing SBxxxx, CTxxxx, PCxxx and MAEMxxxx where they were missing, and fixed some of them which were wrong (according to kx.inf, which is pretty accurate compared to anything out there) * fixed device names to make them more consistent across various cards * fixed order of devices where appropriate Signed-off-by: Vedran Miletic Signed-off-by: Takashi Iwai commit 1083206ff44af4baa03573b4a6bac430d9d70404 Author: Takashi Iwai Date: Mon Aug 11 10:18:39 2008 +0200 ALSA: ice1724 - Fix TX IRQ lockup MPU TX causes IRQ floods on VT172x devices mysteriously. Disable TX IRQ if the IRQ flood is detected. Signed-off-by: Takashi Iwai commit c872e8cab5b7cab0696bcf09c6f03c972edc1c49 Author: Takashi Iwai Date: Tue Aug 12 13:39:01 2008 +0200 ALSA: Enable SPDIF output on ALC655 Some hardwares with ALC655 codec don't indicate the proper ext id bit for SPDIF output although it supports. Force to enable the bit. Signed-off-by: Takashi Iwai commit 96c7d478efad594e483ee8a826395b1342404885 Author: Takashi Iwai Date: Mon Aug 11 10:18:39 2008 +0200 ALSA: pcsp - Fix locking messes in snd-pcsp snd-pcsp driver takes chip->substream_lock together with PCM substream lock. These are even mixed up with hrtimer's lock, resulting in messy lock depencies. Right now, snd-pcsp driver resolves the deadlock by using HRTIMER_CB_SOFTIRQ. However, this isn't nice for a really fast path like bit-flipping. This patch introduces a tasklet for PCM period handling so that the hrtimer callback can be handled fast. This also reduce the use of chip->substream_lock to avoid deadlocks. It's still used in pointer callback, but even this could be removed with a proper barrier. Another good solution is to introduce async trigger callback. But, this will involve with a major rewrite of the PCM core code, so I take first this easy fix. Signed-off-by: Takashi Iwai commit ebaa0470586eec83627fa03dcd0a1107f54258f8 Author: Takashi Iwai Date: Thu Oct 16 16:39:56 2008 +0200 ALSA: hda - Release jack instance for dynamic reconfigure The jack instance has to be release manually in free callback in patch_sigmatel.c for dynamic reconfiguration. Signed-off-by: Takashi Iwai commit dd125b28c1523a857b7657b5d8aa774ed1563687 Merge: 45a6ac16c2136e4b902b09bf0b6192b940e8d732 1e1be4329f2aec6a8ec63737a69258fedf34c55d Author: Takashi Iwai Date: Thu Oct 16 16:39:46 2008 +0200 Merge branch 'topic/hda-reconfig' into topic/hda-next commit 76a4d10e522bfc238ddf70f35272088d420d2dcf Author: Takashi Iwai Date: Thu Oct 16 16:17:30 2008 +0200 ALSA: Print function symbol in the error messages Use the new %pF for error messages in snd_device_*() functions to give more understandable results. Signed-off-by: Takashi Iwai commit 6b9331165e9827e055389e22d1cbdb5fe3cff835 Author: Mark Brown Date: Thu Oct 16 11:00:07 2008 +0100 ALSA: ASoC: Remove snd_soc_dapm_connect_input() This was marked as deprecated in 2.6.27 and all users except for playpaq_wm8510 fixed in that release. Signed-off-by: Mark Brown Signed-off-by: Takashi Iwai commit 8ae6a5523f4188dbe2b98a9385f5860df6ee47a3 Author: Jean Delvare Date: Wed Oct 15 19:58:12 2008 +0200 ALSA: ASoC: Convert wm8900 to a new-style i2c driver Convert the wm8900 codec driver to the new (standard) device driver binding model. Signed-off-by: Jean Delvare Acked-by: Mark Brown Signed-off-by: Takashi Iwai commit 17be5522f6de1d4920e7d9235bfb0e0c682c6f8f Author: Jean Delvare Date: Wed Oct 15 19:57:12 2008 +0200 ALSA: ASoC: Convert wm8580 to a new-style i2c driver Convert the wm8580 codec driver to the new (standard) device driver binding model. Signed-off-by: Jean Delvare Acked-by: Mark Brown Signed-off-by: Takashi Iwai commit 45a6ac16c2136e4b902b09bf0b6192b940e8d732 Author: Matthew Ranostay Date: Wed Oct 15 14:45:38 2008 -0400 ALSA: hda: add support for jack detection on IDT/Sigmatel Added support for jack detection reporting to userspace for IDT/Sigmatel codecs. Signed-off-by: Matthew Ranostay Signed-off-by: Takashi Iwai commit 1e1be4329f2aec6a8ec63737a69258fedf34c55d Author: Takashi Iwai Date: Wed Jul 30 15:01:46 2008 +0200 ALSA: hda - Add hints for reconfig This patch adds the "hints" for reconfiguring codecs. The hints are simply string arrays and can be freely used/parsed by the codec patch. The hints can be input via hwdep sysfs files. Signed-off-by: Takashi Iwai commit 11aeff082ad9bd00e8475bf1630c3264344d3764 Author: Takashi Iwai Date: Wed Jul 30 15:01:46 2008 +0200 ALSA: hda - Add init_verbs entries This patch enables the additional init verbs for each codec. The verbs can be entered via hwdep sysfs file. These verbs are executed at reconfiguring the codec for non-standard setups like overriding the pin-defcfg. Signed-off-by: Takashi Iwai commit d7ffba19ce4c1b153d502a89d829400bf76d6c11 Author: Takashi Iwai Date: Wed Jul 30 15:01:46 2008 +0200 ALSA: hda - Add sysfs entries to hwdep devices Added the sysfs entries to hwdep devices so that the new features like reconfiguration can be done via sysfs. Signed-off-by: Takashi Iwai commit 6c1f45ea89b59ad2cdbfa6779e23d77b274da0a7 Author: Takashi Iwai Date: Wed Jul 30 15:01:45 2008 +0200 ALSA: hda - Add codec reconfiguration feature Added the reconfiguration feature of any individual codec. Via the reconfiguration, the old resources are released and the patch is called again to recreate the PCM and mixers in addition to the re-initialization. Signed-off-by: Takashi Iwai commit d13bd412dce23eed8bc35a2499d7d88cb39a1581 Author: Takashi Iwai Date: Wed Jul 30 15:01:45 2008 +0200 ALSA: hda - Manage kcontrol lists Manage all kcontrol elements created in the hda-intel driver. This makes it possible to remove and reconfigure the controls of each codec. Signed-off-by: Takashi Iwai commit f44ac8378d3d84b912b34f08afaff64182ee1b41 Author: Takashi Iwai Date: Wed Jul 30 15:01:45 2008 +0200 ALSA: hda - Allocate name string of each codec Allocate dynamically the name string of each codec instead of pointing to a static string. Signed-off-by: Takashi Iwai commit 603c40199252f0c3b91fca02fd3283c4f8e55179 Author: Takashi Iwai Date: Wed Jul 30 15:01:44 2008 +0200 ALSA: hda - Use generic array helpers Use generic array helpers to simplify array handling in snd-hda-intel. Signed-off-by: Takashi Iwai commit b2e1859745b783922533d29e3b03af29378a23f0 Author: Takashi Iwai Date: Wed Jul 30 15:01:44 2008 +0200 ALSA: hda - Add generic arrays Added helper functions to handle generic arrays. Signed-off-by: Takashi Iwai commit 176d5335fe66f379a339b0ab99cc7566e90ff1a9 Author: Takashi Iwai Date: Wed Jul 30 15:01:44 2008 +0200 ALSA: hda - Add infrastructure for dynamic stream allocation Added the infrastructure for dynamic stream allocation on HD-audio. Signed-off-by: Takashi Iwai commit 41b9eb264c8407655db57b60b4457fe1b2ec9977 Author: Stefan Assmann Date: Tue Jul 15 13:48:55 2008 +0200 x86, pci: introduce config option for pci reroute quirks (was: [PATCH 0/3] Boot IRQ quirks for Broadcom and AMD/ATI) This is against linux-2.6-tip, branch pci-ioapic-boot-irq-quirks. From: Stefan Assmann Subject: Introduce config option for pci reroute quirks The config option X86_REROUTE_FOR_BROKEN_BOOT_IRQS is introduced to enable (or disable) the redirection of the interrupt handler to the boot interrupt line by default. Depending on the existence of interrupt masking / threaded interrupt handling in the kernel (vanilla, rt, ...) and the maturity of the rerouting patch, users can enable or disable the redirection by default. This means that the reroute quirk can be applied to any kernel without changing it. Interrupt sharing could be increased if this option is enabled. However this option is vital for threaded interrupt handling, as done by the RT kernel. It should simplify the consolidation with the RT kernel. The option can be overridden by either pci=ioapicreroute or pci=noioapicreroute. Signed-off-by: Stefan Assmann Signed-off-by: Olaf Dabrunz Cc: Jesse Barnes Cc: Jon Masters Cc: Ihno Krumreich Cc: Sven Dietrich Cc: Daniel Gollub Cc: Felix Foerster Signed-off-by: Ingo Molnar commit 3e370b29d35fb01bfb92c2814d6f79bf6a2cb970 Merge: 88d1dce3a74367291f65a757fbdcaf17f042f30c 5b664cb235e97afbf34db9c4d77f08ebd725335e Author: Ingo Molnar Date: Fri Jul 18 19:31:12 2008 +0200 Merge branch 'linus' into x86/pci-ioapic-boot-irq-quirks Conflicts: drivers/pci/quirks.c Signed-off-by: Ingo Molnar commit 88d1dce3a74367291f65a757fbdcaf17f042f30c Author: Olaf Dabrunz Date: Tue Jul 8 15:59:48 2008 +0200 PCI quirks: call boot IRQ quirks at end of device init and during resume It is not necessary to call boot IRQ quirks before the BARs of the bridges are probed. The normal case is to use DECLARE_PCI_FIXUP_FINAL, so we use this instead now. After a resume, we need to call the quirks again. Signed-off-by: Olaf Dabrunz Signed-off-by: Stefan Assmann Cc: Jon Masters Cc: Olaf Dabrunz Cc: Stefan Assmann Cc: Ihno Krumreich Cc: Sven Dietrich Cc: Daniel Gollub Cc: Felix Foerster Signed-off-by: Ingo Molnar commit 542622da899be17250b8cae2ef5203025b91230a Author: Olaf Dabrunz Date: Tue Jul 8 15:59:48 2008 +0200 PCI quirks: disable AMD/ATI legacy boot interrupt generation Add quirks for several AMD/ATI chipsets to prevent generation of legacy boot interrupts. Integrates a separate older quirk to make IO-APIC mode work on AMD 8131 rev. A0 and B0, which was due to an AMD erratum. Signed-off-by: Olaf Dabrunz Signed-off-by: Stefan Assmann Cc: Jon Masters Cc: Olaf Dabrunz Cc: Stefan Assmann Cc: Ihno Krumreich Cc: Sven Dietrich Cc: Daniel Gollub Cc: Felix Foerster Signed-off-by: Ingo Molnar commit 7725118815537bd481a81828fa125ee154ee74fc Author: Olaf Dabrunz Date: Tue Jul 8 15:59:47 2008 +0200 PCI quirks: add quirk to disable boot interrupt generation on broadcom HT1000 Signed-off-by: Olaf Dabrunz Signed-off-by: Stefan Assmann Cc: Jon Masters Cc: Olaf Dabrunz Cc: Stefan Assmann Cc: Ihno Krumreich Cc: Sven Dietrich Cc: Daniel Gollub Cc: Felix Foerster Signed-off-by: Ingo Molnar commit dbbcfb2211761fa69e831a78119c9288fb87eb9d Merge: b0356cd0e7497252a2c45ecb07b79d931390c8b2 9df2fe986770bc4c76e8fe72c20b71268eec39a7 Author: Ingo Molnar Date: Sun Jul 13 22:52:27 2008 +0200 Merge branch 'linus' into x86/pci-ioapic-boot-irq-quirks Conflicts: arch/x86/mm/ioremap.c Signed-off-by: Ingo Molnar commit b0356cd0e7497252a2c45ecb07b79d931390c8b2 Author: Bernhard Walle Date: Fri Jun 20 17:05:33 2008 +0200 pci, acpi: reroute PCI interrupt to legacy boot interrupt equivalent, warning fix This patch just fixes the compiler warning: drivers/pci/quirks.c: In function ‘quirk_reroute_to_boot_interrupts_intel’: drivers/pci/quirks.c:1375: warning: unused variable ‘i’ Signed-off-by: Bernhard Walle Cc: sassmann@suse.de Signed-off-by: Ingo Molnar commit 33be8333421f842789fa7e363ce4142947e094f0 Author: Ingo Molnar Date: Wed Jun 18 14:47:09 2008 +0200 x86: boot IRQ quirks and rerouting, fix fix: init/built-in.o: In function `nosmp': main.c:(.init.text+0x14): undefined reference to `noioapicquirk' main.c:(.init.text+0x1e): undefined reference to `noioapicreroute' init/built-in.o: In function `maxcpus': main.c:(.init.text+0x133): undefined reference to `noioapicquirk' main.c:(.init.text+0x13d): undefined reference to `noioapicreroute' arch/x86/kernel/built-in.o: In function `parse_noapic': io_apic_32.c:(.init.text+0x7836): undefined reference to `noioapicquirk' io_apic_32.c:(.init.text+0x7840): undefined reference to `noioapicreroute' Signed-off-by: Ingo Molnar commit e1d3a90846b40ad3160bf4b648d36c6badad39ac Author: Stefan Assmann Date: Wed Jun 11 16:35:17 2008 +0200 pci, acpi: reroute PCI interrupt to legacy boot interrupt equivalent Some chipsets (e.g. intel 6700PXH) generate a legacy INTx when the IRQ entry in the chipset's IO-APIC is masked (as, e.g. the RT kernel does during interrupt handling). On chipsets where this INTx generation cannot be disabled, we reroute the valid interrupts to their legacy equivalent to get rid of spurious interrupts that might otherwise bring down (vital) interrupt lines through spurious interrupt detection in note_interrupt(). This patch benefited from discussions with Alexander Graf, Torsten Duwe, Ihno Krumreich, Daniel Gollub, Hannes Reinecke. The conclusions we drew and the patch itself are the authors' responsibility alone. Signed-off-by: Stefan Assmann Signed-off-by: Olaf Dabrunz Signed-off-by: Ingo Molnar commit 426b3b8d535e3e141331dc19c40f457b997c4d6d Author: Stefan Assmann Date: Wed Jun 11 16:35:16 2008 +0200 pci: add quirk to disable boot interrupt generation on intel 6300ESB Add a quirk to disable legacy boot interrupt generation on intel devices that support disabling it. This patch benefited from discussions with Alexander Graf, Torsten Duwe, Ihno Krumreich, Daniel Gollub, Hannes Reinecke. The conclusions we drew and the patch itself are the authors' responsibility alone. Signed-off-by: Stefan Assmann Signed-off-by: Olaf Dabrunz Signed-off-by: Ingo Molnar commit 9197979b518573999d52d9e85bce1680682ed85c Author: Stefan Assmann Date: Wed Jun 11 16:35:15 2008 +0200 x86, pci: introduce pci=ioapicreroute kernel cmdline option Introduce pci=ioapicreroute kernel cmdline option to enable rerouting of boot interrupts to the primary io-apic. Signed-off-by: Stefan Assmann Signed-off-by: Olaf Dabrunz Signed-off-by: Ingo Molnar commit a9322f6488b432ddc1e89be88242c827c633fb63 Author: Stefan Assmann Date: Wed Jun 11 16:35:14 2008 +0200 x86, pci: introduce pci=noioapicquirk kernel cmdline option Introduce pci=noioapicquirk kernel cmdline option to disable all boot interrupt quirks Signed-off-by: Stefan Assmann Signed-off-by: Olaf Dabrunz Signed-off-by: Ingo Molnar commit 747ada36ee23225d81657e4d633ac93b8ccbea7d Author: Olaf Dabrunz Date: Wed Jun 11 16:35:13 2008 +0200 pci: add PCI IDs for devices that need boot irq quirks Signed-off-by: Stefan Assmann Signed-off-by: Olaf Dabrunz Signed-off-by: Ingo Molnar ----------------------------------------------------------------------- Summary of changes: Documentation/DocBook/Makefile | 2 +- Documentation/DocBook/networking.tmpl | 3 - Documentation/DocBook/wanbook.tmpl | 99 - Documentation/RCU/rculist_nulls.txt | 167 + Documentation/controllers/cpuacct.txt | 32 + Documentation/cpu-freq/user-guide.txt | 6 +- Documentation/credentials.txt | 582 + Documentation/feature-removal-schedule.txt | 19 - Documentation/filesystems/proc.txt | 9 +- Documentation/ftrace.txt | 149 +- Documentation/kbuild/makefiles.txt | 14 + Documentation/kernel-parameters.txt | 71 +- Documentation/markers.txt | 29 +- Documentation/networking/README.ipw2200 | 2 +- Documentation/networking/bonding.txt | 68 +- Documentation/networking/dccp.txt | 32 +- Documentation/networking/driver.txt | 2 +- Documentation/networking/generic-hdlc.txt | 8 +- Documentation/networking/ip-sysctl.txt | 6 + Documentation/networking/mac80211_hwsim/README | 9 +- Documentation/networking/netdevices.txt | 2 +- Documentation/networking/regulatory.txt | 22 +- Documentation/nmi_watchdog.txt | 5 + Documentation/powerpc/dts-bindings/fsl/tsec.txt | 12 +- Documentation/rfkill.txt | 20 +- Documentation/scheduler/sched-arch.txt | 4 +- Documentation/scheduler/sched-design-CFS.txt | 21 + Documentation/sh/kgdb.txt | 179 - Documentation/sound/alsa/ALSA-Configuration.txt | 330 +- Documentation/sound/alsa/HD-Audio-Models.txt | 348 + Documentation/sound/alsa/HD-Audio.txt | 577 + Documentation/sound/alsa/Procfile.txt | 10 + Documentation/sound/alsa/soc/machine.txt | 8 +- Documentation/tracepoints.txt | 94 +- Documentation/x86/boot.txt | 6 +- Documentation/x86/pat.txt | 24 + Documentation/x86/x86_64/boot-options.txt | 11 - Documentation/x86/x86_64/mm.txt | 2 +- MAINTAINERS | 52 +- Makefile | 209 +- arch/alpha/kernel/asm-offsets.c | 11 +- arch/alpha/kernel/entry.S | 10 +- arch/arm/mach-ixp4xx/fsg-setup.c | 9 +- arch/arm/mach-ixp4xx/include/mach/qmgr.h | 35 +- arch/arm/mach-ixp4xx/ixp4xx_qmgr.c | 44 +- arch/arm/mach-ixp4xx/nas100d-setup.c | 5 +- arch/arm/mach-ixp4xx/nslu2-setup.c | 5 +- arch/arm/mach-pxa/include/mach/palmasoc.h | 13 + arch/blackfin/boot/Makefile | 2 +- arch/ia64/Kconfig | 2 +- arch/ia64/hp/sim/simeth.c | 25 +- arch/ia64/ia32/sys_ia32.c | 7 +- arch/ia64/kernel/mca_drv.c | 2 +- arch/ia64/kernel/perfmon.c | 43 +- arch/ia64/kernel/signal.c | 4 +- arch/m32r/Kconfig | 2 +- arch/m68k/fpsp040/setox.S | 4 +- arch/m68k/mac/baboon.c | 42 +- arch/m68k/mac/config.c | 3 - arch/m68k/mac/debug.c | 1 - arch/m68k/mac/macints.c | 9 +- arch/m68k/mac/misc.c | 16 +- arch/m68k/mac/oss.c | 1 - arch/m68k/mac/via.c | 80 +- arch/mips/Kconfig | 2 +- arch/mips/include/asm/byteorder.h | 5 +- arch/mips/include/asm/elf.h | 2 +- arch/mips/kernel/kspd.c | 4 +- arch/mips/kernel/mips-mt-fpaff.c | 5 +- arch/mips/kernel/vpe.c | 4 +- arch/parisc/include/asm/tlbflush.h | 5 +- arch/parisc/kernel/signal.c | 2 +- arch/powerpc/Kconfig | 66 +- arch/powerpc/Kconfig.debug | 9 + arch/powerpc/Makefile | 1 - arch/powerpc/boot/Makefile | 1 + arch/powerpc/boot/devtree.c | 2 +- arch/powerpc/boot/dts/asp834x-redboot.dts | 20 + arch/powerpc/boot/dts/bamboo.dts | 3 +- arch/powerpc/boot/dts/canyonlands.dts | 14 + arch/powerpc/boot/dts/gef_sbc610.dts | 11 + arch/powerpc/boot/dts/ksi8560.dts | 20 + arch/powerpc/boot/dts/kuroboxHD.dts | 1 - arch/powerpc/boot/dts/kuroboxHG.dts | 1 - arch/powerpc/boot/dts/lite5200.dts | 1 - arch/powerpc/boot/dts/lite5200b.dts | 1 - arch/powerpc/boot/dts/motionpro.dts | 1 - arch/powerpc/boot/dts/mpc8313erdb.dts | 20 + arch/powerpc/boot/dts/mpc8315erdb.dts | 20 +- arch/powerpc/boot/dts/mpc8349emitx.dts | 19 +- arch/powerpc/boot/dts/mpc8349emitxgp.dts | 6 +- arch/powerpc/boot/dts/mpc834x_mds.dts | 19 + arch/powerpc/boot/dts/mpc8377_mds.dts | 19 + arch/powerpc/boot/dts/mpc8377_rdb.dts | 20 +- arch/powerpc/boot/dts/mpc8378_mds.dts | 19 + arch/powerpc/boot/dts/mpc8378_rdb.dts | 18 +- arch/powerpc/boot/dts/mpc8379_mds.dts | 18 + arch/powerpc/boot/dts/mpc8379_rdb.dts | 19 +- arch/powerpc/boot/dts/mpc8536ds.dts | 18 + arch/powerpc/boot/dts/mpc8540ads.dts | 31 + arch/powerpc/boot/dts/mpc8541cds.dts | 18 + arch/powerpc/boot/dts/mpc8544ds.dts | 20 + arch/powerpc/boot/dts/mpc8548cds.dts | 44 + arch/powerpc/boot/dts/mpc8555cds.dts | 18 + arch/powerpc/boot/dts/mpc8560ads.dts | 18 + arch/powerpc/boot/dts/mpc8568mds.dts | 18 + arch/powerpc/boot/dts/mpc8572ds.dts | 158 + arch/powerpc/boot/dts/mpc8572ds_camp_core0.dts | 483 + arch/powerpc/boot/dts/mpc8572ds_camp_core1.dts | 234 + arch/powerpc/boot/dts/mpc8641_hpcn.dts | 45 + arch/powerpc/boot/dts/pcm030.dts | 2 - arch/powerpc/boot/dts/sbc8349.dts | 18 + arch/powerpc/boot/dts/sbc8548.dts | 18 + arch/powerpc/boot/dts/sbc8560.dts | 18 + arch/powerpc/boot/dts/sbc8641d.dts | 44 + arch/powerpc/boot/dts/stx_gp3_8560.dts | 18 + arch/powerpc/boot/dts/tqm5200.dts | 1 - arch/powerpc/boot/dts/tqm8540.dts | 28 + arch/powerpc/boot/dts/tqm8541.dts | 18 + arch/powerpc/boot/dts/tqm8548-bigflash.dts | 44 + arch/powerpc/boot/dts/tqm8548.dts | 44 + arch/powerpc/boot/dts/tqm8555.dts | 18 + arch/powerpc/boot/dts/tqm8560.dts | 18 + arch/powerpc/boot/libfdt-wrapper.c | 2 +- arch/powerpc/configs/86xx/gef_sbc610_defconfig | 8 +- arch/powerpc/configs/ppc44x_defconfig | 12 +- arch/powerpc/include/asm/atomic.h | 18 +- arch/powerpc/include/asm/bug.h | 11 +- arch/powerpc/include/asm/byteorder.h | 38 +- arch/powerpc/include/asm/cputable.h | 113 +- arch/powerpc/include/asm/dcr-native.h | 63 +- arch/powerpc/include/asm/dcr.h | 4 +- arch/powerpc/include/asm/device.h | 12 + arch/powerpc/include/asm/dma-mapping.h | 156 +- arch/powerpc/include/asm/eeh.h | 8 +- arch/powerpc/include/asm/elf.h | 2 +- arch/powerpc/include/asm/feature-fixups.h | 30 + arch/powerpc/include/asm/ftrace.h | 14 +- arch/powerpc/include/asm/highmem.h | 23 +- arch/powerpc/include/asm/io.h | 7 - arch/powerpc/include/asm/kdump.h | 13 + arch/powerpc/include/asm/kexec.h | 15 +- arch/powerpc/include/asm/local.h | 4 +- arch/powerpc/include/asm/lppaca.h | 3 +- arch/powerpc/include/asm/mmu-40x.h | 5 +- arch/powerpc/include/asm/mmu-44x.h | 22 +- arch/powerpc/include/asm/mmu-8xx.h | 3 +- arch/powerpc/include/asm/mmu-fsl-booke.h | 7 +- arch/powerpc/include/asm/mmu.h | 57 + arch/powerpc/include/asm/mmu_context.h | 257 +- arch/powerpc/include/asm/module.h | 16 +- arch/powerpc/include/asm/mpc52xx.h | 19 + arch/powerpc/include/asm/mpc52xx_psc.h | 11 +- arch/powerpc/include/asm/mutex.h | 135 +- arch/powerpc/include/asm/page.h | 13 +- arch/powerpc/include/asm/page_32.h | 7 +- arch/powerpc/include/asm/pci-bridge.h | 30 +- arch/powerpc/include/asm/pci.h | 15 +- arch/powerpc/include/asm/pgalloc-32.h | 11 +- arch/powerpc/include/asm/pgalloc-64.h | 34 - arch/powerpc/include/asm/pgalloc.h | 41 + arch/powerpc/include/asm/pgtable-ppc32.h | 42 +- arch/powerpc/include/asm/pgtable-ppc64.h | 15 +- arch/powerpc/include/asm/pgtable.h | 26 + arch/powerpc/include/asm/ppc_asm.h | 4 +- arch/powerpc/include/asm/processor.h | 8 +- arch/powerpc/include/asm/prom.h | 3 + arch/powerpc/include/asm/ps3.h | 56 +- arch/powerpc/include/asm/ps3av.h | 4 - arch/powerpc/include/asm/reg.h | 4 + arch/powerpc/include/asm/rtas.h | 1 + arch/powerpc/include/asm/sfp-machine.h | 58 +- arch/powerpc/include/asm/smp.h | 7 + arch/powerpc/include/asm/spinlock.h | 2 +- arch/powerpc/include/asm/synch.h | 4 + arch/powerpc/include/asm/system.h | 24 +- arch/powerpc/include/asm/time.h | 20 - arch/powerpc/include/asm/tlbflush.h | 87 +- arch/powerpc/include/asm/vdso_datapage.h | 3 + arch/powerpc/kernel/Makefile | 5 + arch/powerpc/kernel/asm-offsets.c | 6 + arch/powerpc/kernel/cputable.c | 117 +- arch/powerpc/kernel/dma.c | 26 + arch/powerpc/kernel/entry_32.S | 40 +- arch/powerpc/kernel/entry_64.S | 12 - arch/powerpc/kernel/ftrace.c | 461 +- arch/powerpc/kernel/head_32.S | 31 +- arch/powerpc/kernel/head_44x.S | 34 +- arch/powerpc/kernel/head_fsl_booke.S | 107 +- arch/powerpc/kernel/ibmebus.c | 3 +- arch/powerpc/kernel/idle.c | 5 + arch/powerpc/kernel/machine_kexec.c | 91 +- arch/powerpc/kernel/machine_kexec_64.c | 78 +- arch/powerpc/kernel/misc_32.S | 238 +- arch/powerpc/kernel/module.c | 6 + arch/powerpc/kernel/module_32.c | 10 + arch/powerpc/kernel/module_64.c | 13 + arch/powerpc/kernel/of_device.c | 18 +- arch/powerpc/kernel/paca.c | 1 + arch/powerpc/kernel/pci-common.c | 300 +- arch/powerpc/kernel/pci_32.c | 108 +- arch/powerpc/kernel/pci_64.c | 134 +- arch/powerpc/kernel/ppc_ksyms.c | 9 +- arch/powerpc/kernel/ppc_save_regs.S | 74 + arch/powerpc/kernel/process.c | 4 +- arch/powerpc/kernel/prom.c | 47 +- arch/powerpc/kernel/prom_parse.c | 5 +- arch/powerpc/kernel/rtas.c | 26 + arch/powerpc/kernel/rtas_pci.c | 48 - arch/powerpc/kernel/setup_32.c | 15 +- arch/powerpc/kernel/setup_64.c | 5 +- arch/powerpc/kernel/smp-tbsync.c | 12 +- arch/powerpc/kernel/smp.c | 71 +- arch/powerpc/kernel/swsusp.c | 2 +- arch/powerpc/kernel/swsusp_32.S | 6 +- arch/powerpc/kernel/sysfs.c | 7 +- arch/powerpc/kernel/time.c | 36 +- arch/powerpc/kernel/traps.c | 62 +- arch/powerpc/kernel/vdso.c | 13 +- arch/powerpc/kernel/vdso32/gettimeofday.S | 208 +- arch/powerpc/kernel/vdso32/vdso32.lds.S | 3 + arch/powerpc/kernel/vdso64/gettimeofday.S | 141 +- arch/powerpc/kernel/vdso64/vdso64.lds.S | 3 + arch/powerpc/kernel/vio.c | 12 +- arch/powerpc/kernel/vmlinux.lds.S | 6 + arch/powerpc/kvm/powerpc.c | 3 +- arch/powerpc/lib/Makefile | 3 + arch/powerpc/lib/copyuser_64.S | 17 +- arch/powerpc/lib/dma-noncoherent.c | 25 +- arch/powerpc/lib/memcpy_64.S | 16 +- arch/powerpc/math-emu/Makefile | 2 + arch/powerpc/math-emu/fadd.c | 1 - arch/powerpc/math-emu/fcmpo.c | 5 +- arch/powerpc/math-emu/fdiv.c | 9 +- arch/powerpc/math-emu/fdivs.c | 9 +- arch/powerpc/math-emu/fmadd.c | 5 +- arch/powerpc/math-emu/fmadds.c | 5 +- arch/powerpc/math-emu/fmsub.c | 5 +- arch/powerpc/math-emu/fmsubs.c | 5 +- arch/powerpc/math-emu/fmul.c | 3 +- arch/powerpc/math-emu/fmuls.c | 3 +- arch/powerpc/math-emu/fnmadd.c | 5 +- arch/powerpc/math-emu/fnmadds.c | 5 +- arch/powerpc/math-emu/fnmsub.c | 5 +- arch/powerpc/math-emu/fnmsubs.c | 5 +- arch/powerpc/math-emu/fsqrt.c | 5 +- arch/powerpc/math-emu/fsqrts.c | 5 +- arch/powerpc/math-emu/fsub.c | 3 +- arch/powerpc/math-emu/fsubs.c | 3 +- arch/powerpc/math-emu/math_efp.c | 720 ++ arch/powerpc/mm/Makefile | 10 +- arch/powerpc/mm/fault.c | 16 +- arch/powerpc/mm/hash_low_32.S | 111 +- arch/powerpc/mm/hugetlbpage.c | 22 +- arch/powerpc/mm/init_32.c | 6 +- arch/powerpc/mm/mem.c | 6 +- arch/powerpc/mm/mmu_context_32.c | 84 - arch/powerpc/mm/mmu_context_64.c | 70 - arch/powerpc/mm/mmu_context_hash32.c | 103 + arch/powerpc/mm/mmu_context_hash64.c | 78 + arch/powerpc/mm/mmu_context_nohash.c | 397 + arch/powerpc/mm/mmu_decl.h | 65 +- arch/powerpc/mm/pgtable.c | 117 + arch/powerpc/mm/pgtable_32.c | 56 +- arch/powerpc/mm/ppc_mmu_32.c | 10 +- arch/powerpc/mm/tlb_32.c | 190 - arch/powerpc/mm/tlb_64.c | 297 - arch/powerpc/mm/tlb_hash32.c | 194 + arch/powerpc/mm/tlb_hash64.c | 211 + arch/powerpc/mm/tlb_nohash.c | 209 + arch/powerpc/mm/tlb_nohash_low.S | 166 + arch/powerpc/platforms/40x/ep405.c | 2 +- arch/powerpc/platforms/40x/kilauea.c | 2 +- arch/powerpc/platforms/40x/ppc40x_simple.c | 2 +- arch/powerpc/platforms/44x/ebony.c | 2 +- arch/powerpc/platforms/44x/ppc44x_simple.c | 2 +- arch/powerpc/platforms/44x/sam440ep.c | 2 +- arch/powerpc/platforms/52xx/lite5200_pm.c | 1 - arch/powerpc/platforms/52xx/mpc52xx_pci.c | 2 +- arch/powerpc/platforms/52xx/mpc52xx_pic.c | 237 +- arch/powerpc/platforms/52xx/mpc52xx_pic.h | 53 - arch/powerpc/platforms/52xx/mpc52xx_pm.c | 3 - arch/powerpc/platforms/82xx/pq2.c | 2 +- arch/powerpc/platforms/85xx/Makefile | 2 + arch/powerpc/platforms/85xx/mpc85xx_ds.c | 11 +- arch/powerpc/platforms/85xx/mpc85xx_mds.c | 8 +- arch/powerpc/platforms/85xx/smp.c | 104 + arch/powerpc/platforms/86xx/Kconfig | 2 + arch/powerpc/platforms/86xx/Makefile | 3 +- arch/powerpc/platforms/86xx/gef_gpio.c | 143 + arch/powerpc/platforms/Kconfig.cputype | 12 +- arch/powerpc/platforms/cell/Kconfig | 23 +- arch/powerpc/platforms/cell/Makefile | 17 +- arch/powerpc/platforms/cell/celleb_setup.c | 9 - arch/powerpc/platforms/cell/iommu.c | 5 +- arch/powerpc/platforms/cell/qpace_setup.c | 152 + arch/powerpc/platforms/cell/setup.c | 6 - arch/powerpc/platforms/cell/spufs/file.c | 27 +- arch/powerpc/platforms/cell/spufs/inode.c | 8 +- arch/powerpc/platforms/chrp/pci.c | 3 +- arch/powerpc/platforms/embedded6xx/c2k.c | 6 - arch/powerpc/platforms/embedded6xx/prpmc2800.c | 6 - arch/powerpc/platforms/iseries/Kconfig | 1 + arch/powerpc/platforms/maple/setup.c | 6 - arch/powerpc/platforms/powermac/cpufreq_32.c | 2 +- arch/powerpc/platforms/powermac/pci.c | 6 +- arch/powerpc/platforms/powermac/setup.c | 10 +- arch/powerpc/platforms/powermac/sleep.S | 5 +- arch/powerpc/platforms/powermac/smp.c | 2 +- arch/powerpc/platforms/ps3/device-init.c | 33 +- arch/powerpc/platforms/ps3/mm.c | 2 +- arch/powerpc/platforms/ps3/setup.c | 8 +- arch/powerpc/platforms/ps3/system-bus.c | 38 +- arch/powerpc/platforms/pseries/Kconfig | 2 +- arch/powerpc/platforms/pseries/cmm.c | 29 +- arch/powerpc/platforms/pseries/eeh.c | 44 +- arch/powerpc/platforms/pseries/hotplug-cpu.c | 2 +- arch/powerpc/platforms/pseries/pci_dlpar.c | 163 +- arch/powerpc/platforms/pseries/phyp_dump.c | 5 + arch/powerpc/platforms/pseries/xics.c | 43 +- arch/powerpc/sysdev/bestcomm/ata.c | 3 + arch/powerpc/sysdev/bestcomm/ata.h | 19 +- arch/powerpc/sysdev/bestcomm/bestcomm.c | 7 +- arch/powerpc/sysdev/bestcomm/bestcomm.h | 61 +- arch/powerpc/sysdev/bestcomm/bestcomm_priv.h | 20 +- arch/powerpc/sysdev/dcr-low.S | 8 +- arch/powerpc/sysdev/dcr.c | 5 +- arch/powerpc/sysdev/fsl_pci.c | 4 +- arch/powerpc/sysdev/fsl_soc.c | 241 +- arch/powerpc/sysdev/grackle.c | 2 +- arch/powerpc/sysdev/mpic.c | 32 +- arch/powerpc/sysdev/ppc4xx_pci.c | 306 +- arch/powerpc/sysdev/qe_lib/qe.c | 3 + arch/powerpc/sysdev/qe_lib/ucc.c | 4 +- arch/powerpc/xmon/Makefile | 2 +- arch/powerpc/xmon/setjmp.S | 74 - arch/powerpc/xmon/xmon.c | 5 +- arch/s390/Kconfig | 41 +- arch/s390/Makefile | 1 + arch/s390/appldata/appldata.h | 4 - arch/s390/appldata/appldata_base.c | 12 +- arch/s390/appldata/appldata_net_sum.c | 4 +- arch/s390/appldata/appldata_os.c | 21 +- arch/s390/crypto/aes_s390.c | 14 +- arch/s390/hypfs/hypfs_diag.c | 10 +- arch/s390/hypfs/inode.c | 18 +- arch/s390/include/asm/auxvec.h | 2 + arch/s390/include/asm/bug.h | 5 +- arch/s390/include/asm/byteorder.h | 72 +- arch/s390/include/asm/elf.h | 16 + arch/s390/include/asm/fcx.h | 4 +- arch/s390/include/asm/ftrace.h | 8 + arch/s390/include/asm/isc.h | 1 + arch/s390/include/asm/mmu.h | 1 + arch/s390/include/asm/page.h | 2 + arch/s390/include/asm/pgalloc.h | 5 +- arch/s390/include/asm/processor.h | 4 +- arch/s390/include/asm/qdio.h | 16 +- arch/s390/include/asm/sigp.h | 1 + arch/s390/include/asm/smp.h | 5 +- arch/s390/include/asm/sysinfo.h | 11 + arch/s390/include/asm/system.h | 24 +- arch/s390/include/asm/timer.h | 9 - arch/s390/include/asm/vdso.h | 39 + arch/s390/kernel/Makefile | 18 +- arch/s390/kernel/asm-offsets.c | 15 + arch/s390/kernel/compat_linux.c | 28 +- arch/s390/kernel/cpcmd.c | 7 +- arch/s390/kernel/debug.c | 39 +- arch/s390/kernel/entry.S | 58 +- arch/s390/kernel/entry64.S | 58 +- arch/s390/kernel/head.S | 49 + arch/s390/kernel/head31.S | 28 +- arch/s390/kernel/head64.S | 24 - arch/s390/kernel/mcount.S | 56 + arch/s390/kernel/processor.c | 98 + arch/s390/kernel/ptrace.c | 10 +- arch/s390/kernel/s390_ksyms.c | 5 + arch/s390/kernel/setup.c | 185 +- arch/s390/kernel/smp.c | 201 +- arch/s390/kernel/time.c | 278 +- arch/s390/kernel/topology.c | 46 +- arch/s390/kernel/vdso.c | 234 + arch/s390/kernel/vdso32/Makefile | 55 + arch/s390/kernel/vdso32/clock_getres.S | 39 + arch/s390/kernel/vdso32/clock_gettime.S | 128 + arch/s390/kernel/vdso32/gettimeofday.S | 82 + .../vdso/vdso-note.S => s390/kernel/vdso32/note.S} | 0 arch/s390/kernel/vdso32/vdso32.lds.S | 138 + arch/s390/kernel/vdso32/vdso32_wrapper.S | 13 + arch/s390/kernel/vdso64/Makefile | 55 + arch/s390/kernel/vdso64/clock_getres.S | 39 + arch/s390/kernel/vdso64/clock_gettime.S | 89 + arch/s390/kernel/vdso64/gettimeofday.S | 56 + .../vdso/vdso-note.S => s390/kernel/vdso64/note.S} | 0 arch/s390/kernel/vdso64/vdso64.lds.S | 138 + arch/s390/kernel/vdso64/vdso64_wrapper.S | 13 + arch/s390/kernel/vtime.c | 11 - arch/s390/mm/extmem.c | 106 +- arch/sh/Kconfig | 83 +- arch/sh/Kconfig.debug | 104 +- arch/sh/Makefile | 33 +- arch/sh/boards/Kconfig | 11 +- arch/sh/boards/Makefile | 1 - arch/sh/boards/board-ap325rxa.c | 7 +- arch/sh/boards/board-rsk7203.c | 179 - arch/sh/boards/board-shmin.c | 14 +- arch/sh/boards/mach-cayman/Makefile | 1 - arch/sh/boards/mach-cayman/irq.c | 35 +- arch/sh/boards/mach-cayman/led.c | 51 - arch/sh/boards/mach-dreamcast/irq.c | 192 +- arch/sh/boards/mach-dreamcast/setup.c | 5 +- arch/sh/boards/mach-edosk7705/Makefile | 1 - arch/sh/boards/mach-edosk7705/io.c | 61 +- arch/sh/boards/mach-edosk7705/setup.c | 9 +- arch/sh/boards/mach-hp6xx/pm.c | 78 +- arch/sh/boards/mach-microdev/Makefile | 5 +- arch/sh/boards/mach-microdev/fdc37c93xapm.c | 160 + arch/sh/boards/mach-microdev/irq.c | 36 +- arch/sh/boards/mach-microdev/led.c | 101 - arch/sh/boards/mach-microdev/setup.c | 196 +- arch/sh/boards/mach-migor/setup.c | 21 +- arch/sh/boards/mach-rsk/Kconfig | 18 + arch/sh/boards/mach-rsk/Makefile | 2 + arch/sh/boards/mach-rsk/devices-rsk7203.c | 103 + arch/sh/boards/mach-rsk/setup.c | 106 + arch/sh/boards/mach-se/7343/Makefile | 2 +- arch/sh/boards/mach-se/7343/io.c | 273 - arch/sh/boards/mach-se/7343/setup.c | 126 +- arch/sh/boards/mach-se/770x/setup.c | 4 +- arch/sh/boards/mach-se/7721/setup.c | 7 +- arch/sh/boards/mach-se/7722/setup.c | 10 +- arch/sh/boards/mach-sh03/setup.c | 59 +- arch/sh/boards/mach-systemh/irq.c | 37 +- arch/sh/cchips/hd6446x/hd64461.c | 115 +- arch/sh/configs/edosk7705_defconfig | 438 + arch/sh/configs/rsk7201_defconfig | 703 ++ arch/sh/configs/rsk7203_defconfig | 65 +- arch/sh/configs/rts7751r2dplus_qemu_defconfig | 949 -- arch/sh/configs/se7343_defconfig | 303 +- arch/sh/drivers/dma/Makefile | 1 - arch/sh/drivers/dma/dma-isa.c | 106 - arch/sh/drivers/dma/dma-sh.c | 3 +- arch/sh/drivers/dma/dma-sh.h | 1 + arch/sh/drivers/pci/ops-sh03.c | 3 +- arch/sh/drivers/pci/pci-sh7780.c | 12 +- arch/sh/include/asm/addrspace.h | 11 + arch/sh/include/asm/bitops-grb.h | 3 + arch/sh/include/asm/bitops-irq.h | 91 - arch/sh/include/asm/bitops-llsc.h | 2 + arch/sh/include/asm/bitops-op32.h | 142 + arch/sh/include/asm/bitops.h | 9 +- arch/sh/include/asm/bugs.h | 2 +- arch/sh/include/asm/elf.h | 4 +- arch/sh/include/asm/ftrace.h | 28 +- arch/sh/include/asm/io.h | 4 + arch/sh/include/asm/kgdb.h | 66 +- arch/sh/include/asm/machvec.h | 5 - arch/sh/include/asm/mmu_context.h | 4 +- arch/sh/include/asm/mutex-llsc.h | 112 + arch/sh/include/asm/mutex.h | 5 +- arch/sh/include/asm/pm.h | 17 - arch/sh/include/asm/processor.h | 5 +- arch/sh/include/asm/processor_32.h | 12 +- arch/sh/include/asm/processor_64.h | 4 +- arch/sh/include/asm/ptrace.h | 2 +- arch/sh/include/asm/sh_bios.h | 1 - arch/sh/include/asm/string_64.h | 21 +- arch/sh/include/asm/syscall_32.h | 2 +- arch/sh/include/asm/syscall_64.h | 76 +- arch/sh/include/asm/system.h | 2 + arch/sh/include/asm/unaligned-sh4a.h | 258 + arch/sh/include/asm/unaligned.h | 7 +- arch/sh/include/cpu-sh3/cpu/gpio.h | 14 + arch/sh/include/mach-common/mach/edosk7705.h | 31 +- arch/sh/include/mach-se/mach/mrshpc.h | 52 + arch/sh/include/mach-se/mach/se.h | 18 + arch/sh/include/mach-se/mach/se7343.h | 9 +- arch/sh/kernel/Makefile_32 | 18 +- arch/sh/kernel/Makefile_64 | 5 +- arch/sh/kernel/cf-enabler.c | 168 - arch/sh/kernel/cpu/clock.c | 10 + arch/sh/kernel/cpu/init.c | 2 + arch/sh/kernel/cpu/sh2a/Makefile | 3 +- arch/sh/kernel/cpu/sh2a/clock-sh7201.c | 85 + arch/sh/kernel/cpu/sh2a/probe.c | 7 +- arch/sh/kernel/cpu/sh2a/setup-sh7201.c | 331 + arch/sh/kernel/cpu/sh3/entry.S | 14 +- arch/sh/kernel/cpu/sh3/ex.S | 2 +- arch/sh/kernel/cpu/sh4/softfloat.c | 73 +- arch/sh/kernel/cpu/sh4a/clock-sh7722.c | 310 +- arch/sh/kernel/cpu/sh4a/setup-sh7343.c | 37 +- arch/sh/kernel/cpu/sh4a/setup-sh7366.c | 19 +- arch/sh/kernel/cpu/sh4a/setup-sh7722.c | 50 +- arch/sh/kernel/cpu/sh4a/setup-sh7723.c | 19 +- arch/sh/kernel/debugtraps.S | 13 +- arch/sh/kernel/disassemble.c | 573 + arch/sh/kernel/entry-common.S | 54 +- arch/sh/kernel/ftrace.c | 133 + arch/sh/kernel/head_32.S | 12 +- arch/sh/kernel/idle.c | 81 + arch/sh/kernel/kgdb.c | 285 + arch/sh/kernel/kgdb_jmp.S | 33 - arch/sh/kernel/kgdb_stub.c | 1052 -- arch/sh/kernel/pm.c | 88 - arch/sh/kernel/process_32.c | 81 +- arch/sh/kernel/process_64.c | 111 - arch/sh/kernel/ptrace_64.c | 186 +- arch/sh/kernel/setup.c | 1 + arch/sh/kernel/sh_bios.c | 65 +- arch/sh/kernel/sh_ksyms_32.c | 37 +- arch/sh/kernel/sh_ksyms_64.c | 5 +- arch/sh/kernel/signal_32.c | 1 - arch/sh/kernel/signal_64.c | 154 +- arch/sh/kernel/sys_sh.c | 92 - arch/sh/kernel/time_32.c | 12 - arch/sh/kernel/time_64.c | 5 - arch/sh/kernel/timers/timer-mtu2.c | 5 + arch/sh/kernel/traps_32.c | 36 +- arch/sh/kernel/vsyscall/vsyscall.c | 3 +- arch/sh/lib/Makefile | 16 +- arch/sh/lib/ashiftrt.S | 149 + arch/{mips => sh}/lib/ashldi3.c | 0 arch/sh/lib/ashlsi3.S | 193 + arch/{mips => sh}/lib/ashrdi3.c | 0 arch/sh/lib/ashrsi3.S | 185 + arch/{mips => sh}/lib/libgcc.h | 0 arch/{mips => sh}/lib/lshrdi3.c | 0 arch/sh/lib/lshrsi3.S | 193 + arch/sh/lib/mcount.S | 90 + arch/sh/lib/movmem.S | 238 + arch/sh/lib/udiv_qrnnd.S | 81 + arch/sh/lib/udivsi3.S | 87 + arch/sh/lib/udivsi3_i4i-Os.S | 149 + arch/sh/lib/udivsi3_i4i.S | 666 ++ arch/sh/lib64/Makefile | 8 +- arch/sh/lib64/c-checksum.c | 4 +- arch/sh/lib64/memcpy.S | 201 + arch/sh/lib64/memcpy.c | 81 - arch/sh/lib64/memset.S | 91 + arch/sh/lib64/sdivsi3.S | 131 + arch/sh/lib64/strcpy.S | 97 + arch/sh/lib64/strlen.S | 33 + arch/sh/lib64/udivdi3.S | 120 + arch/sh/lib64/udivsi3.S | 59 + arch/sh/mm/Makefile_32 | 1 + arch/sh/mm/Makefile_64 | 1 + arch/sh/mm/asids-debugfs.c | 79 + arch/sh/mm/consistent.c | 7 +- arch/sh/mm/fault_32.c | 17 - arch/sh/mm/ioremap_32.c | 3 +- arch/sh/mm/mmap.c | 94 + arch/sh/oprofile/Makefile | 13 +- arch/sh/oprofile/backtrace.c | 114 + arch/sh/oprofile/common.c | 150 + arch/sh/oprofile/op_impl.h | 33 + arch/sh/oprofile/op_model_null.c | 23 - arch/sh/oprofile/op_model_sh7750.c | 172 +- arch/sh/tools/mach-types | 2 + arch/sparc/include/asm/device.h | 12 + arch/sparc64/kernel/idprom.c | 5 +- arch/um/drivers/daemon_kern.c | 2 +- arch/um/drivers/mcast_kern.c | 2 +- arch/um/drivers/mconsole_kern.c | 3 +- arch/um/drivers/net_kern.c | 29 +- arch/um/drivers/pcap_kern.c | 2 +- arch/um/drivers/slip_kern.c | 2 +- arch/um/drivers/slirp_kern.c | 2 +- arch/um/drivers/vde_kern.c | 2 +- arch/um/os-Linux/drivers/ethertap_kern.c | 2 +- arch/um/os-Linux/drivers/tuntap_kern.c | 2 +- arch/x86/Kconfig | 91 +- arch/x86/Kconfig.cpu | 1 + arch/x86/Kconfig.debug | 24 +- arch/x86/boot/video-vga.c | 4 +- arch/x86/boot/video.c | 2 +- arch/x86/configs/i386_defconfig | 4 +- arch/x86/configs/x86_64_defconfig | 4 +- arch/x86/crypto/crc32c-intel.c | 121 +- arch/x86/ia32/ia32_aout.c | 2 +- arch/x86/ia32/ia32_signal.c | 109 +- arch/x86/include/asm/apic.h | 1 + arch/x86/include/asm/bigsmp/apic.h | 2 - arch/x86/include/asm/bitops.h | 10 +- arch/x86/include/asm/bug.h | 2 +- arch/x86/include/asm/byteorder.h | 74 +- arch/x86/include/asm/cpufeature.h | 5 +- arch/x86/include/asm/dma-mapping.h | 2 - arch/x86/include/asm/ds.h | 312 +- arch/x86/include/asm/dwarf2.h | 97 +- arch/x86/include/asm/elf.h | 2 +- arch/x86/include/asm/emergency-restart.h | 4 +- arch/x86/include/asm/es7000/apic.h | 79 +- arch/x86/include/asm/es7000/wakecpu.h | 41 +- arch/x86/include/asm/ftrace.h | 61 +- arch/x86/include/asm/gart.h | 33 + arch/x86/include/asm/genapic_32.h | 19 +- arch/x86/include/asm/genapic_64.h | 2 + arch/x86/include/asm/hardirq_32.h | 2 + arch/x86/include/asm/hardirq_64.h | 2 + arch/x86/include/asm/hw_irq.h | 4 +- arch/x86/include/asm/hypervisor.h | 26 + arch/x86/include/asm/ia32.h | 18 - arch/x86/include/asm/idle.h | 5 + arch/x86/include/asm/io.h | 37 +- arch/x86/include/asm/io_64.h | 2 - arch/x86/include/asm/io_apic.h | 10 + arch/x86/include/asm/iommu.h | 33 - arch/x86/include/asm/irq.h | 4 - arch/x86/include/asm/irq_regs_32.h | 2 + arch/x86/include/asm/kexec.h | 31 +- arch/x86/include/asm/linkage.h | 60 + arch/x86/include/asm/mach-default/mach_apic.h | 2 + arch/x86/include/asm/mach-default/mach_wakecpu.h | 24 +- arch/x86/include/asm/mach-default/smpboot_hooks.h | 8 +- arch/x86/include/asm/mach-generic/mach_apic.h | 1 + arch/x86/include/asm/mach-generic/mach_wakecpu.h | 12 + arch/x86/include/asm/mmu_context_32.h | 13 +- arch/x86/include/asm/msr-index.h | 2 + arch/x86/include/asm/msr.h | 15 +- arch/x86/include/asm/numaq/wakecpu.h | 24 +- arch/x86/include/asm/pci.h | 2 + arch/x86/include/asm/pgtable-2level.h | 50 +- arch/x86/include/asm/pgtable-3level.h | 1 + arch/x86/include/asm/pgtable.h | 28 +- arch/x86/include/asm/pgtable_32.h | 9 - arch/x86/include/asm/pgtable_64.h | 28 +- arch/x86/include/asm/prctl.h | 3 + arch/x86/include/asm/processor.h | 17 + arch/x86/include/asm/ptrace.h | 43 +- arch/x86/include/asm/reboot.h | 5 + arch/x86/include/asm/setup.h | 7 + arch/x86/include/asm/sigframe.h | 70 + arch/x86/include/asm/signal.h | 6 +- arch/x86/include/asm/sparsemem.h | 2 +- arch/x86/include/asm/syscalls.h | 16 +- arch/x86/include/asm/system.h | 6 +- arch/x86/include/asm/thread_info.h | 9 +- arch/x86/include/asm/trampoline.h | 7 + arch/x86/include/asm/traps.h | 11 +- arch/x86/include/asm/tsc.h | 8 +- arch/x86/include/asm/uaccess.h | 4 +- arch/x86/include/asm/uv/bios.h | 34 +- arch/x86/include/asm/uv/uv_hub.h | 103 +- arch/x86/include/asm/vmware.h | 27 + arch/x86/include/asm/xen/hypercall.h | 6 + arch/x86/include/asm/xen/hypervisor.h | 39 +- arch/x86/include/asm/xen/page.h | 5 + arch/x86/kernel/Makefile | 8 +- arch/x86/kernel/acpi/boot.c | 11 + arch/x86/kernel/amd_iommu.c | 1 + arch/x86/kernel/amd_iommu_init.c | 1 + arch/x86/kernel/aperture_64.c | 5 +- arch/x86/kernel/apic.c | 143 +- arch/x86/kernel/apm_32.c | 4 - arch/x86/kernel/asm-offsets_32.c | 2 +- arch/x86/kernel/asm-offsets_64.c | 4 +- arch/x86/kernel/bios_uv.c | 58 +- arch/x86/kernel/check.c | 161 + arch/x86/kernel/cpu/Makefile | 6 + arch/x86/kernel/cpu/addon_cpuid_features.c | 8 + arch/x86/kernel/cpu/amd.c | 9 +- arch/x86/kernel/cpu/common.c | 8 +- arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c | 4 + arch/x86/kernel/cpu/hypervisor.c | 58 + arch/x86/kernel/cpu/intel.c | 23 +- arch/x86/kernel/cpu/intel_cacheinfo.c | 17 +- arch/x86/kernel/cpu/mcheck/mce_amd_64.c | 2 +- arch/x86/kernel/cpu/mcheck/mce_intel_64.c | 2 +- arch/x86/kernel/cpu/mtrr/main.c | 346 +- arch/x86/kernel/cpu/vmware.c | 112 + arch/x86/kernel/crash.c | 70 +- arch/x86/kernel/ds.c | 1147 ++- arch/x86/kernel/dumpstack.c | 351 + arch/x86/kernel/dumpstack.h | 39 + arch/x86/kernel/dumpstack_32.c | 307 +- arch/x86/kernel/dumpstack_64.c | 289 +- arch/x86/kernel/e820.c | 16 - arch/x86/kernel/early-quirks.c | 1 + arch/x86/kernel/early_printk.c | 47 - arch/x86/kernel/entry_32.S | 528 +- arch/x86/kernel/entry_64.S | 1458 ++-- arch/x86/kernel/es7000_32.c | 62 +- arch/x86/kernel/ftrace.c | 390 +- arch/x86/kernel/genapic_64.c | 4 + arch/x86/kernel/genx2apic_uv_x.c | 111 +- arch/x86/kernel/head.c | 1 - arch/x86/kernel/head32.c | 3 + arch/x86/kernel/head64.c | 3 + arch/x86/kernel/hpet.c | 4 +- arch/x86/kernel/init_task.c | 1 - arch/x86/kernel/io_apic.c | 3 +- arch/x86/kernel/irq_64.c | 27 +- arch/x86/kernel/irqinit_32.c | 2 +- arch/x86/kernel/irqinit_64.c | 66 - arch/x86/kernel/machine_kexec_32.c | 104 +- arch/x86/kernel/microcode_amd.c | 232 +- arch/x86/kernel/microcode_core.c | 6 +- arch/x86/kernel/microcode_intel.c | 2 +- arch/x86/kernel/mpparse.c | 25 +- arch/x86/kernel/nmi.c | 58 +- arch/x86/kernel/numaq_32.c | 10 +- arch/x86/kernel/pci-dma.c | 11 +- arch/x86/kernel/process.c | 35 +- arch/x86/kernel/process_32.c | 67 +- arch/x86/kernel/process_64.c | 58 +- arch/x86/kernel/ptrace.c | 432 +- arch/x86/kernel/reboot.c | 126 +- arch/x86/kernel/relocate_kernel_32.S | 115 - arch/x86/kernel/setup.c | 169 +- arch/x86/kernel/sigframe.h | 42 - arch/x86/kernel/signal.c | 909 ++ arch/x86/kernel/signal_32.c | 716 -- arch/x86/kernel/signal_64.c | 516 - arch/x86/kernel/smp.c | 31 +- arch/x86/kernel/smpboot.c | 25 +- arch/x86/kernel/stacktrace.c | 64 + arch/x86/kernel/time_32.c | 2 +- arch/x86/kernel/time_64.c | 6 +- arch/x86/kernel/tlb_32.c | 13 +- arch/x86/kernel/tlb_64.c | 2 +- arch/x86/kernel/tlb_uv.c | 4 - arch/x86/kernel/trampoline.c | 19 +- arch/x86/kernel/traps.c | 38 +- arch/x86/kernel/tsc.c | 42 +- arch/x86/kernel/tsc_sync.c | 8 +- arch/x86/kernel/vmi_32.c | 119 - arch/x86/kernel/vmlinux_32.lds.S | 1 + arch/x86/kernel/vmlinux_64.lds.S | 1 + arch/x86/kernel/vsyscall_64.c | 12 + arch/x86/lguest/boot.c | 3 +- arch/x86/mach-generic/bigsmp.c | 1 + arch/x86/mach-generic/default.c | 1 + arch/x86/mach-generic/es7000.c | 14 +- arch/x86/mach-generic/probe.c | 16 +- arch/x86/mach-generic/summit.c | 1 + arch/x86/mm/Makefile | 3 +- arch/x86/mm/fault.c | 15 +- arch/x86/mm/init_32.c | 32 +- arch/x86/mm/init_64.c | 2 - arch/x86/mm/ioremap.c | 3 +- arch/x86/mm/pat.c | 236 + arch/x86/pci/common.c | 17 + arch/x86/pci/direct.c | 4 +- arch/x86/pci/pci.h | 1 + arch/x86/scripts/strip-symbols | 1 + arch/x86/vdso/vclock_gettime.c | 3 + arch/x86/vdso/vdso32-setup.c | 2 +- arch/x86/vdso/vma.c | 2 +- arch/x86/xen/enlighten.c | 17 +- arch/x86/xen/mmu.c | 17 +- arch/x86/xen/multicalls.c | 2 +- arch/x86/xen/setup.c | 9 +- arch/xtensa/platforms/iss/network.c | 21 +- block/Kconfig | 1 + block/blk-core.c | 46 +- block/blktrace.c | 332 +- block/elevator.c | 12 +- crypto/Kconfig | 29 +- crypto/Makefile | 1 + crypto/aes_generic.c | 1145 ++- crypto/ahash.c | 38 +- crypto/ansi_cprng.c | 35 +- crypto/api.c | 121 +- crypto/authenc.c | 3 + crypto/camellia.c | 84 +- crypto/crc32c.c | 290 +- crypto/crypto_null.c | 64 +- crypto/des_generic.c | 5 +- crypto/fcrypt.c | 8 +- crypto/hmac.c | 10 +- crypto/internal.h | 2 + crypto/md4.c | 56 +- crypto/md5.c | 50 +- crypto/michael_mic.c | 72 +- crypto/proc.c | 20 +- crypto/rmd128.c | 61 +- crypto/rmd160.c | 61 +- crypto/rmd256.c | 61 +- crypto/rmd320.c | 61 +- crypto/salsa20_generic.c | 75 +- crypto/sha1_generic.c | 56 +- crypto/sha256_generic.c | 104 +- crypto/sha512_generic.c | 127 +- crypto/shash.c | 508 + crypto/testmgr.c | 76 +- crypto/testmgr.h | 2 +- crypto/tgr192.c | 135 +- crypto/wp512.c | 121 +- drivers/acpi/bus.c | 8 - drivers/acpi/pci_irq.c | 56 + drivers/acpi/processor_idle.c | 6 +- drivers/acpi/utilities/utglobal.c | 2 +- drivers/ata/Kconfig | 3 +- drivers/ata/pata_mpc52xx.c | 546 +- drivers/atm/Kconfig | 6 + drivers/atm/Makefile | 1 + drivers/atm/solos-pci.c | 790 ++ drivers/block/aoe/aoe.h | 1 - drivers/block/aoe/aoeblk.c | 2 +- drivers/block/aoe/aoecmd.c | 22 +- drivers/block/aoe/aoenet.c | 11 - drivers/block/loop.c | 6 +- drivers/bluetooth/Kconfig | 20 - drivers/bluetooth/Makefile | 1 - drivers/bluetooth/bcm203x.c | 9 +- drivers/bluetooth/bfusb.c | 11 +- drivers/bluetooth/bpa10x.c | 7 +- drivers/bluetooth/bt3c_cs.c | 8 +- drivers/bluetooth/btsdio.c | 6 +- drivers/bluetooth/btusb.c | 229 +- drivers/bluetooth/hci_bcsp.c | 5 - drivers/bluetooth/hci_h4.c | 5 - drivers/bluetooth/hci_ldisc.c | 9 +- drivers/bluetooth/hci_usb.c | 1136 -- drivers/bluetooth/hci_usb.h | 129 - drivers/bluetooth/hci_vhci.c | 5 - drivers/char/Kconfig | 16 + drivers/char/Makefile | 2 + drivers/char/bsr.c | 84 +- drivers/char/hvc_console.c | 13 +- drivers/char/hvc_console.h | 2 +- drivers/char/hvc_iseries.c | 4 +- drivers/char/hvc_iucv.c | 850 ++ drivers/char/hvc_udbg.c | 96 + drivers/char/hvc_vio.c | 4 +- drivers/char/hvcs.c | 2 +- drivers/char/hvsi.c | 2 +- drivers/char/nvram.c | 264 +- drivers/char/sysrq.c | 18 +- drivers/char/tty_audit.c | 76 +- drivers/char/tty_io.c | 1 + drivers/connector/cn_proc.c | 16 +- drivers/crypto/hifn_795x.c | 494 +- drivers/crypto/padlock-aes.c | 52 +- drivers/crypto/talitos.c | 153 +- drivers/crypto/talitos.h | 85 +- drivers/edac/Kconfig | 2 +- drivers/edac/edac_device.c | 12 +- drivers/firmware/dmi_scan.c | 11 + drivers/firmware/iscsi_ibft.c | 7 +- drivers/gpu/drm/radeon/radeon_irq.c | 4 +- drivers/i2c/busses/i2c-sh_mobile.c | 73 +- drivers/ide/cs5530.c | 3 +- drivers/ide/macide.c | 1 - drivers/ide/sc1200.c | 3 +- drivers/infiniband/core/addr.c | 196 +- drivers/infiniband/core/cma.c | 86 +- drivers/infiniband/core/sysfs.c | 10 +- drivers/infiniband/hw/amso1100/c2_provider.c | 8 +- drivers/infiniband/hw/ehca/ehca_classes.h | 7 + drivers/infiniband/hw/ehca/ehca_eq.c | 2 +- drivers/infiniband/hw/ehca/ehca_main.c | 17 +- drivers/infiniband/hw/ehca/ehca_qp.c | 12 +- drivers/infiniband/hw/ehca/ehca_reqs.c | 13 +- drivers/infiniband/hw/ipath/ipath_driver.c | 49 +- drivers/infiniband/hw/ipath/ipath_file_ops.c | 30 +- drivers/infiniband/hw/ipath/ipath_fs.c | 2 +- drivers/infiniband/hw/ipath/ipath_iba6120.c | 61 + drivers/infiniband/hw/ipath/ipath_iba7220.c | 83 +- drivers/infiniband/hw/ipath/ipath_init_chip.c | 1 + drivers/infiniband/hw/ipath/ipath_kernel.h | 15 + drivers/infiniband/hw/ipath/ipath_keys.c | 2 + drivers/infiniband/hw/ipath/ipath_mad.c | 2 + drivers/infiniband/hw/ipath/ipath_qp.c | 32 +- drivers/infiniband/hw/ipath/ipath_rc.c | 5 +- drivers/infiniband/hw/ipath/ipath_sdma.c | 21 +- drivers/infiniband/hw/ipath/ipath_stats.c | 8 + drivers/infiniband/hw/ipath/ipath_ud.c | 19 +- drivers/infiniband/hw/ipath/ipath_verbs.c | 3 +- drivers/infiniband/hw/ipath/ipath_verbs.h | 1 + drivers/infiniband/hw/mlx4/cq.c | 12 +- drivers/infiniband/hw/mlx4/main.c | 2 +- drivers/infiniband/hw/mthca/mthca_mcg.c | 23 +- drivers/infiniband/hw/nes/nes.c | 17 +- drivers/infiniband/hw/nes/nes.h | 18 +- drivers/infiniband/hw/nes/nes_cm.c | 310 +- drivers/infiniband/hw/nes/nes_cm.h | 14 +- drivers/infiniband/hw/nes/nes_hw.c | 44 +- drivers/infiniband/hw/nes/nes_nic.c | 13 +- drivers/infiniband/hw/nes/nes_utils.c | 14 +- drivers/infiniband/hw/nes/nes_verbs.c | 45 +- drivers/infiniband/ulp/ipoib/ipoib.h | 23 - drivers/infiniband/ulp/ipoib/ipoib_cm.c | 8 +- drivers/infiniband/ulp/ipoib/ipoib_ib.c | 6 +- drivers/infiniband/ulp/ipoib/ipoib_main.c | 25 +- drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 70 +- drivers/infiniband/ulp/iser/iscsi_iser.h | 3 + drivers/infiniband/ulp/iser/iser_initiator.c | 132 +- drivers/infiniband/ulp/iser/iser_verbs.c | 9 +- drivers/infiniband/ulp/srp/ib_srp.c | 31 +- drivers/input/keyboard/sh_keysc.c | 28 +- drivers/isdn/capi/capifs.c | 4 +- drivers/isdn/gigaset/asyncdata.c | 18 +- drivers/isdn/gigaset/bas-gigaset.c | 13 +- drivers/isdn/gigaset/common.c | 21 +- drivers/isdn/gigaset/ev-layer.c | 42 +- drivers/isdn/gigaset/gigaset.h | 20 +- drivers/isdn/gigaset/i4l.c | 4 +- drivers/isdn/gigaset/interface.c | 52 +- drivers/isdn/gigaset/isocdata.c | 6 +- drivers/isdn/gigaset/ser-gigaset.c | 32 +- drivers/isdn/gigaset/usb-gigaset.c | 14 +- drivers/isdn/hardware/eicon/di.c | 28 +- drivers/isdn/hardware/eicon/message.c | 60 +- drivers/isdn/hardware/mISDN/hfc_multi.h | 4 +- drivers/isdn/hardware/mISDN/hfcmulti.c | 67 +- drivers/isdn/hysdn/hysdn_net.c | 6 +- drivers/isdn/hysdn/hysdn_procconf.c | 6 +- drivers/isdn/i4l/isdn_concap.c | 4 +- drivers/isdn/i4l/isdn_net.c | 224 +- drivers/isdn/i4l/isdn_net.h | 50 +- drivers/isdn/i4l/isdn_ppp.c | 32 +- drivers/isdn/mISDN/core.c | 8 +- drivers/isdn/mISDN/dsp_audio.c | 2 +- drivers/isdn/mISDN/dsp_cmx.c | 8 +- drivers/isdn/mISDN/dsp_core.c | 4 +- drivers/isdn/mISDN/dsp_hwec.c | 2 +- drivers/isdn/mISDN/dsp_pipeline.c | 2 +- drivers/isdn/mISDN/dsp_tones.c | 92 +- drivers/isdn/mISDN/l1oip_codec.c | 1 + drivers/isdn/mISDN/l1oip_core.c | 22 +- drivers/isdn/mISDN/layer1.c | 3 +- drivers/isdn/mISDN/layer2.c | 16 +- drivers/isdn/mISDN/socket.c | 2 +- drivers/isdn/mISDN/stack.c | 2 +- drivers/isdn/mISDN/tei.c | 4 +- drivers/isdn/mISDN/timerdev.c | 9 +- drivers/macintosh/via-cuda.c | 1 - drivers/macintosh/via-macii.c | 1 - drivers/macintosh/via-maciisi.c | 1 - drivers/macintosh/via-pmu.c | 4 +- drivers/macintosh/via-pmu68k.c | 1 - drivers/macintosh/windfarm_smu_sat.c | 5 +- drivers/md/dm.c | 8 +- drivers/media/dvb/b2c2/Kconfig | 2 +- drivers/media/dvb/b2c2/flexcop-fe-tuner.c | 2 + drivers/media/dvb/b2c2/flexcop-i2c.c | 6 +- drivers/media/dvb/b2c2/flexcop.c | 2 +- drivers/media/dvb/bt8xx/Kconfig | 2 +- drivers/media/dvb/bt8xx/dst.c | 4 +- drivers/media/dvb/dm1105/dm1105.c | 3 +- drivers/media/dvb/dvb-core/dvb_net.c | 37 +- drivers/media/dvb/dvb-usb/Kconfig | 46 +- drivers/media/dvb/dvb-usb/dib0700_devices.c | 6 +- drivers/media/dvb/dvb-usb/dvb-usb-dvb.c | 5 +- drivers/media/dvb/pluto2/pluto2.c | 3 +- drivers/media/dvb/ttpci/Kconfig | 2 +- drivers/media/video/Kconfig | 2 +- drivers/media/video/compat_ioctl32.c | 2 +- drivers/media/video/cx18/Kconfig | 2 +- drivers/media/video/cx23885/Kconfig | 4 +- drivers/media/video/cx88/Kconfig | 2 +- drivers/media/video/em28xx/em28xx-video.c | 3 +- drivers/media/video/gspca/gspca.c | 4 +- drivers/media/video/pvrusb2/Kconfig | 2 +- drivers/media/video/saa7134/Kconfig | 4 +- drivers/media/video/sh_mobile_ceu_camera.c | 20 +- drivers/message/fusion/mptlan.c | 22 +- drivers/message/fusion/mptlan.h | 2 +- drivers/misc/sgi-gru/gruprocfs.c | 1 - drivers/misc/sgi-xp/xp.h | 7 +- drivers/misc/sgi-xp/xp_main.c | 7 + drivers/misc/sgi-xp/xp_sn2.c | 34 + drivers/misc/sgi-xp/xp_uv.c | 70 +- drivers/misc/sgi-xp/xpc.h | 12 + drivers/misc/sgi-xp/xpc_sn2.c | 15 +- drivers/misc/sgi-xp/xpc_uv.c | 290 +- drivers/misc/sgi-xp/xpnet.c | 13 +- drivers/net/3c501.c | 3 +- drivers/net/3c501.h | 2 +- drivers/net/3c503.c | 21 +- drivers/net/3c505.c | 51 +- drivers/net/3c507.c | 15 +- drivers/net/3c509.c | 6 +- drivers/net/3c515.c | 13 +- drivers/net/3c523.c | 46 +- drivers/net/3c527.c | 4 +- drivers/net/3c59x.c | 13 +- drivers/net/7990.c | 1 - drivers/net/8139cp.c | 47 +- drivers/net/8139too.c | 57 +- drivers/net/82596.c | 48 +- drivers/net/8390.c | 50 +- drivers/net/8390.h | 15 + drivers/net/8390p.c | 50 +- drivers/net/Kconfig | 64 +- drivers/net/Makefile | 11 +- drivers/net/a2065.c | 5 +- drivers/net/ac3200.c | 5 +- drivers/net/acenic.c | 37 +- drivers/net/amd8111e.c | 12 +- drivers/net/apne.c | 29 +- drivers/net/appletalk/cops.c | 9 - drivers/net/appletalk/ipddp.c | 6 +- drivers/net/appletalk/ltpc.c | 13 +- drivers/net/arcnet/arc-rawmode.c | 5 +- drivers/net/arcnet/arc-rimi.c | 16 +- drivers/net/arcnet/arcnet.c | 32 +- drivers/net/arcnet/capmode.c | 9 +- drivers/net/arcnet/com20020-isa.c | 4 +- drivers/net/arcnet/com20020-pci.c | 2 +- drivers/net/arcnet/com20020.c | 10 +- drivers/net/arcnet/com90io.c | 4 +- drivers/net/arcnet/com90xx.c | 12 +- drivers/net/arcnet/rfc1051.c | 9 +- drivers/net/arcnet/rfc1201.c | 14 +- drivers/net/ariadne.c | 21 +- drivers/net/arm/Kconfig | 10 +- drivers/net/arm/Makefile | 3 +- drivers/net/arm/am79c961a.c | 7 +- drivers/net/arm/at91_ether.c | 11 +- drivers/net/arm/ep93xx_eth.c | 8 +- drivers/net/arm/ether1.c | 5 +- drivers/net/arm/ether3.c | 5 +- drivers/net/arm/etherh.c | 24 +- drivers/net/arm/ixp4xx_eth.c | 344 +- drivers/net/arm/ks8695net.c | 1676 +++ drivers/net/arm/ks8695net.h | 107 + drivers/net/at1700.c | 16 +- drivers/net/atarilance.c | 52 +- drivers/net/atl1e/atl1e_main.c | 47 +- drivers/net/atlx/atl1.c | 102 +- drivers/net/atlx/atl1.h | 4 +- drivers/net/atlx/atl2.c | 101 +- drivers/net/atlx/atl2.h | 1 - drivers/net/atlx/atlx.c | 13 - drivers/net/atp.c | 29 +- drivers/net/au1000_eth.c | 50 +- drivers/net/ax88796.c | 9 +- drivers/net/b44.c | 13 +- drivers/net/bfin_mac.c | 1 - drivers/net/bmac.c | 7 +- drivers/net/bnx2.c | 94 +- drivers/net/bnx2.h | 42 +- drivers/net/bnx2x_link.c | 72 +- drivers/net/bnx2x_link.h | 10 +- drivers/net/bnx2x_main.c | 95 +- drivers/net/bonding/Makefile | 3 + drivers/net/bonding/bond_3ad.c | 667 +- drivers/net/bonding/bond_3ad.h | 59 +- drivers/net/bonding/bond_alb.c | 37 +- drivers/net/bonding/bond_ipv6.c | 216 + drivers/net/bonding/bond_main.c | 477 +- drivers/net/bonding/bond_sysfs.c | 160 +- drivers/net/bonding/bonding.h | 68 +- drivers/net/can/vcan.c | 24 +- drivers/net/cassini.c | 16 +- drivers/net/chelsio/cxgb2.c | 94 +- drivers/net/chelsio/sge.c | 10 +- drivers/net/cpmac.c | 15 +- drivers/net/cris/eth_v10.c | 4 +- drivers/net/cs89x0.c | 16 +- drivers/net/cxgb3/adapter.h | 5 +- drivers/net/cxgb3/common.h | 4 +- drivers/net/cxgb3/cxgb3_ctl_defs.h | 17 + drivers/net/cxgb3/cxgb3_main.c | 130 +- drivers/net/cxgb3/cxgb3_offload.c | 76 +- drivers/net/cxgb3/sge.c | 105 +- drivers/net/cxgb3/t3_hw.c | 26 +- drivers/net/cxgb3/version.h | 2 +- drivers/net/cxgb3/vsc8211.c | 2 + drivers/net/de600.c | 4 +- drivers/net/de620.c | 26 +- drivers/net/declance.c | 7 +- drivers/net/defxx.c | 27 +- drivers/net/depca.c | 54 +- drivers/net/dl2k.c | 28 +- drivers/net/dm9000.c | 40 +- drivers/net/dummy.c | 15 +- drivers/net/e100.c | 68 +- drivers/net/e1000/e1000.h | 1 - drivers/net/e1000/e1000_main.c | 107 +- drivers/net/e1000e/82571.c | 19 +- drivers/net/e1000e/defines.h | 8 + drivers/net/e1000e/e1000.h | 2 + drivers/net/e1000e/es2lan.c | 194 +- drivers/net/e1000e/ethtool.c | 82 +- drivers/net/e1000e/hw.h | 8 +- drivers/net/e1000e/ich8lan.c | 151 +- drivers/net/e1000e/lib.c | 80 +- drivers/net/e1000e/netdev.c | 131 +- drivers/net/e1000e/phy.c | 12 +- drivers/net/e2100.c | 24 +- drivers/net/eepro.c | 10 +- drivers/net/eepro100.c | 2401 ---- drivers/net/eexpress.c | 3 +- drivers/net/ehea/ehea.h | 2 +- drivers/net/ehea/ehea_main.c | 9 +- drivers/net/ehea/ehea_qmr.c | 18 +- drivers/net/enc28j60.c | 49 +- drivers/net/enic/cq_desc.h | 5 +- drivers/net/enic/enic.h | 2 +- drivers/net/enic/enic_main.c | 86 +- drivers/net/enic/enic_res.c | 7 +- drivers/net/enic/enic_res.h | 4 - drivers/net/enic/vnic_dev.c | 70 +- drivers/net/enic/vnic_devcmd.h | 19 +- drivers/net/enic/vnic_intr.h | 2 +- drivers/net/enic/vnic_resource.h | 2 +- drivers/net/enic/vnic_rq.h | 9 +- drivers/net/enic/vnic_rss.h | 13 + drivers/net/enic/vnic_wq.h | 9 +- drivers/net/epic100.c | 56 +- drivers/net/eql.c | 12 +- drivers/net/es3210.c | 34 +- drivers/net/eth16i.c | 15 +- drivers/net/ewrk3.c | 18 +- drivers/net/fealnx.c | 6 +- drivers/net/fec.c | 6 +- drivers/net/fec_mpc52xx.c | 3 +- drivers/net/fec_mpc52xx_phy.c | 5 +- drivers/net/forcedeth.c | 90 +- drivers/net/fs_enet/fs_enet-main.c | 9 +- drivers/net/gianfar.c | 861 +- drivers/net/gianfar.h | 78 +- drivers/net/gianfar_ethtool.c | 89 +- drivers/net/gianfar_mii.c | 212 +- drivers/net/gianfar_mii.h | 2 + drivers/net/hamachi.c | 27 +- drivers/net/hamradio/6pack.c | 1 - drivers/net/hamradio/baycom_epp.c | 1 - drivers/net/hamradio/bpqether.c | 8 +- drivers/net/hamradio/dmascc.c | 13 +- drivers/net/hamradio/hdlcdrv.c | 1 - drivers/net/hamradio/mkiss.c | 4 +- drivers/net/hamradio/scc.c | 13 +- drivers/net/hamradio/yam.c | 1 - drivers/net/hp-plus.c | 27 +- drivers/net/hp.c | 25 +- drivers/net/hp100.c | 24 +- drivers/net/hydra.c | 28 +- drivers/net/ibm_newemac/core.c | 11 +- drivers/net/ibmlana.c | 6 +- drivers/net/ibmveth.c | 48 +- drivers/net/ifb.c | 13 +- drivers/net/igb/e1000_defines.h | 7 +- drivers/net/igb/e1000_mac.c | 25 +- drivers/net/igb/e1000_regs.h | 4 + drivers/net/igb/igb.h | 44 +- drivers/net/igb/igb_ethtool.c | 131 +- drivers/net/igb/igb_main.c | 403 +- drivers/net/ioc3-eth.c | 13 +- drivers/net/ipg.c | 9 - drivers/net/irda/ali-ircc.c | 17 +- drivers/net/irda/au1k_ir.c | 1 - drivers/net/irda/donauboe.c | 8 +- drivers/net/irda/irda-usb.c | 15 +- drivers/net/irda/irtty-sir.c | 7 +- drivers/net/irda/kingsun-sir.c | 1 - drivers/net/irda/ks959-sir.c | 1 - drivers/net/irda/ksdazzle-sir.c | 1 - drivers/net/irda/ma600-sir.c | 2 +- drivers/net/irda/mcs7780.c | 1 - drivers/net/irda/nsc-ircc.c | 17 +- drivers/net/irda/pxaficp_ir.c | 4 - drivers/net/irda/sa1100_ir.c | 28 +- drivers/net/irda/sir_dev.c | 12 +- drivers/net/irda/smsc-ircc2.c | 6 +- drivers/net/irda/stir4200.c | 1 - drivers/net/irda/via-ircc.c | 16 +- drivers/net/irda/vlsi_ir.c | 37 +- drivers/net/irda/w83977af_ir.c | 29 +- drivers/net/isa-skeleton.c | 16 +- drivers/net/iseries_veth.c | 14 +- drivers/net/ixgb/ixgb_main.c | 58 +- drivers/net/ixgbe/Makefile | 2 + drivers/net/ixgbe/ixgbe.h | 32 +- drivers/net/ixgbe/ixgbe_82598.c | 192 +- drivers/net/ixgbe/ixgbe_dcb.c | 332 + drivers/net/ixgbe/ixgbe_dcb.h | 184 + drivers/net/ixgbe/ixgbe_dcb_82598.c | 398 + drivers/net/ixgbe/ixgbe_dcb_82598.h | 94 + drivers/net/ixgbe/ixgbe_dcb_nl.c | 641 ++ drivers/net/ixgbe/ixgbe_ethtool.c | 134 +- drivers/net/ixgbe/ixgbe_main.c | 485 +- drivers/net/ixgbe/ixgbe_phy.c | 326 + drivers/net/ixgbe/ixgbe_phy.h | 25 + drivers/net/ixgbe/ixgbe_type.h | 28 +- drivers/net/ixp2000/ixpdev.c | 6 +- drivers/net/jazzsonic.c | 4 +- drivers/net/jme.c | 71 +- drivers/net/jme.h | 34 +- drivers/net/korina.c | 5 +- drivers/net/lance.c | 32 +- drivers/net/lib82596.c | 14 +- drivers/net/lib8390.c | 20 +- drivers/net/lne390.c | 29 +- drivers/net/loopback.c | 29 +- drivers/net/lp486e.c | 29 +- drivers/net/mac8390.c | 22 +- drivers/net/mac89x0.c | 16 +- drivers/net/macb.c | 18 +- drivers/net/mace.c | 34 +- drivers/net/macmace.c | 6 +- drivers/net/macsonic.c | 9 +- drivers/net/macvlan.c | 49 +- drivers/net/meth.c | 4 +- drivers/net/mlx4/cq.c | 11 +- drivers/net/mlx4/en_cq.c | 13 +- drivers/net/mlx4/en_main.c | 4 +- drivers/net/mlx4/en_netdev.c | 48 +- drivers/net/mlx4/en_params.c | 20 +- drivers/net/mlx4/en_rx.c | 9 +- drivers/net/mlx4/en_tx.c | 29 +- drivers/net/mlx4/eq.c | 121 +- drivers/net/mlx4/main.c | 53 +- drivers/net/mlx4/mcg.c | 25 +- drivers/net/mlx4/mlx4.h | 14 +- drivers/net/mlx4/mlx4_en.h | 12 +- drivers/net/mlx4/profile.c | 4 +- drivers/net/mv643xx_eth.c | 525 +- drivers/net/mvme147.c | 9 +- drivers/net/myri10ge/myri10ge.c | 71 +- drivers/net/myri10ge/myri10ge_mcp.h | 175 +- drivers/net/myri10ge/myri10ge_mcp_gen_header.h | 2 + drivers/net/myri_sbus.c | 27 +- drivers/net/natsemi.c | 12 +- drivers/net/ne-h8300.c | 30 +- drivers/net/ne.c | 29 +- drivers/net/ne2.c | 29 +- drivers/net/ne2k-pci.c | 28 +- drivers/net/ne3210.c | 31 +- drivers/net/netconsole.c | 9 +- drivers/net/netx-eth.c | 1 - drivers/net/netxen/netxen_nic_ethtool.c | 10 +- drivers/net/netxen/netxen_nic_hw.c | 6 +- drivers/net/netxen/netxen_nic_init.c | 2 - drivers/net/netxen/netxen_nic_main.c | 57 +- drivers/net/netxen/netxen_nic_niu.c | 7 +- drivers/net/ni5010.c | 15 +- drivers/net/ni52.c | 43 +- drivers/net/ni65.c | 39 +- drivers/net/niu.c | 145 +- drivers/net/niu.h | 2 +- drivers/net/ns83820.c | 28 +- drivers/net/pasemi_mac.c | 14 +- drivers/net/pasemi_mac_ethtool.c | 4 +- drivers/net/pci-skeleton.c | 8 +- drivers/net/pcmcia/3c574_cs.c | 6 +- drivers/net/pcmcia/3c589_cs.c | 6 +- drivers/net/pcmcia/axnet_cs.c | 22 +- drivers/net/pcmcia/com20020_cs.c | 6 +- drivers/net/pcmcia/fmvj18x_cs.c | 79 +- drivers/net/pcmcia/nmclan_cs.c | 6 +- drivers/net/pcmcia/pcnet_cs.c | 3 +- drivers/net/pcmcia/smc91c92_cs.c | 5 +- drivers/net/pcmcia/xirc2ps_cs.c | 6 +- drivers/net/pcnet32.c | 10 +- drivers/net/phy/Kconfig | 23 +- drivers/net/phy/Makefile | 5 +- drivers/net/phy/broadcom.c | 216 +- drivers/net/phy/et1011c.c | 113 + drivers/net/phy/mdio-gpio.c | 296 + drivers/net/phy/mdio-ofgpio.c | 204 - drivers/net/phy/mdio_bus.c | 40 +- drivers/net/phy/national.c | 155 + drivers/net/phy/phy.c | 2 +- drivers/net/phy/phy_device.c | 54 +- drivers/net/phy/smsc.c | 28 + drivers/net/phy/ste10Xp.c | 137 + drivers/net/plip.c | 35 +- drivers/net/ppp_async.c | 6 - drivers/net/ppp_generic.c | 234 +- drivers/net/ppp_synctty.c | 6 - drivers/net/pppoe.c | 5 +- drivers/net/pppol2tp.c | 94 +- drivers/net/ps3_gelic_net.c | 6 +- drivers/net/ps3_gelic_wireless.c | 37 +- drivers/net/ps3_gelic_wireless.h | 4 +- drivers/net/qla3xxx.c | 42 +- drivers/net/qlge/qlge_ethtool.c | 2 +- drivers/net/qlge/qlge_main.c | 79 +- drivers/net/qlge/qlge_mpi.c | 2 +- drivers/net/r6040.c | 51 +- drivers/net/r8169.c | 57 +- drivers/net/rionet.c | 31 +- drivers/net/rrunner.c | 25 +- drivers/net/s2io.c | 146 +- drivers/net/sb1000.c | 1 - drivers/net/sb1250-mac.c | 11 +- drivers/net/sc92031.c | 30 +- drivers/net/seeq8005.c | 13 +- drivers/net/sfc/Kconfig | 8 + drivers/net/sfc/Makefile | 5 +- drivers/net/sfc/boards.c | 206 +- drivers/net/sfc/boards.h | 14 +- drivers/net/sfc/efx.c | 449 +- drivers/net/sfc/efx.h | 12 +- drivers/net/sfc/enum.h | 36 +- drivers/net/sfc/ethtool.c | 175 +- drivers/net/sfc/falcon.c | 476 +- drivers/net/sfc/falcon.h | 3 + drivers/net/sfc/falcon_gmac.c | 229 + drivers/net/sfc/falcon_hwdefs.h | 161 +- drivers/net/sfc/falcon_xmac.c | 261 +- drivers/net/sfc/gmii.h | 137 +- drivers/net/sfc/mac.h | 16 +- drivers/net/sfc/mdio_10g.c | 483 +- drivers/net/sfc/mdio_10g.h | 63 +- drivers/net/sfc/mtd.c | 268 + drivers/net/sfc/net_driver.h | 131 +- drivers/net/sfc/phy.h | 7 +- drivers/net/sfc/rx.c | 2 +- drivers/net/sfc/selftest.c | 145 +- drivers/net/sfc/selftest.h | 14 +- drivers/net/sfc/sfe4001.c | 225 +- drivers/net/sfc/spi.h | 34 +- drivers/net/sfc/tenxpress.c | 796 +- drivers/net/sfc/workarounds.h | 12 +- drivers/net/sfc/xfp_phy.c | 29 +- drivers/net/sgiseeq.c | 7 +- drivers/net/sh_eth.c | 3 +- drivers/net/sis190.c | 7 +- drivers/net/sis900.c | 99 +- drivers/net/skfp/skfddi.c | 27 +- drivers/net/skge.c | 103 +- drivers/net/sky2.c | 56 +- drivers/net/slip.c | 12 +- drivers/net/smc-mca.c | 27 +- drivers/net/smc-ultra.c | 27 +- drivers/net/smc-ultra32.c | 5 +- drivers/net/smc911x.c | 16 +- drivers/net/smc9194.c | 13 +- drivers/net/smc91x.c | 42 +- drivers/net/smc91x.h | 58 +- drivers/net/smsc911x.c | 2071 ++++ drivers/net/smsc911x.h | 390 + drivers/net/smsc9420.c | 1744 +++ drivers/net/smsc9420.h | 275 + drivers/net/sonic.c | 1 - drivers/net/sonic.h | 20 +- drivers/net/spider_net.c | 17 +- drivers/net/spider_net_ethtool.c | 8 +- drivers/net/starfire.c | 24 +- drivers/net/stnic.c | 25 +- drivers/net/sun3_82586.c | 40 +- drivers/net/sun3lance.c | 10 +- drivers/net/sunbmac.c | 22 +- drivers/net/sundance.c | 6 +- drivers/net/sungem.c | 65 +- drivers/net/sunhme.c | 31 +- drivers/net/sunlance.c | 7 +- drivers/net/sunqe.c | 15 +- drivers/net/sunvnet.c | 5 +- drivers/net/tc35815.c | 49 +- drivers/net/tehuti.c | 73 +- drivers/net/tg3.c | 1068 ++- drivers/net/tg3.h | 188 +- drivers/net/tlan.c | 213 +- drivers/net/tokenring/3c359.c | 13 +- drivers/net/tokenring/Kconfig | 2 +- drivers/net/tokenring/abyss.c | 4 +- drivers/net/tokenring/ibmtr.c | 15 +- drivers/net/tokenring/lanstreamer.c | 36 +- drivers/net/tokenring/madgemc.c | 12 +- drivers/net/tokenring/olympic.c | 52 +- drivers/net/tokenring/proteon.c | 7 +- drivers/net/tokenring/skisa.c | 7 +- drivers/net/tokenring/smctr.c | 2 - drivers/net/tokenring/tms380tr.c | 15 +- drivers/net/tokenring/tmspci.c | 5 +- drivers/net/tsi108_eth.c | 12 +- drivers/net/tulip/de2104x.c | 54 +- drivers/net/tulip/de4x5.c | 17 +- drivers/net/tulip/dmfe.c | 7 +- drivers/net/tulip/eeprom.c | 2 +- drivers/net/tulip/interrupt.c | 10 +- drivers/net/tulip/tulip_core.c | 15 +- drivers/net/tulip/uli526x.c | 8 +- drivers/net/tulip/winbond-840.c | 16 +- drivers/net/tulip/xircom_cb.c | 4 +- drivers/net/tun.c | 41 +- drivers/net/typhoon.c | 15 +- drivers/net/ucc_geth.c | 408 +- drivers/net/ucc_geth.h | 1 + drivers/net/usb/asix.c | 5 +- drivers/net/usb/catc.c | 43 +- drivers/net/usb/dm9601.c | 5 +- drivers/net/usb/hso.c | 34 +- drivers/net/usb/kaweth.c | 17 +- drivers/net/usb/mcs7830.c | 9 +- drivers/net/usb/pegasus.c | 74 +- drivers/net/usb/rtl8150.c | 38 +- drivers/net/usb/smsc95xx.c | 110 +- drivers/net/usb/usbnet.c | 5 +- drivers/net/veth.c | 30 +- drivers/net/via-rhine.c | 47 +- drivers/net/via-velocity.c | 28 +- drivers/net/virtio_net.c | 217 +- drivers/net/wan/Kconfig | 9 + drivers/net/wan/Makefile | 3 +- drivers/net/wan/c101.c | 6 +- drivers/net/wan/cosa.c | 1 - drivers/net/wan/cycx_x25.c | 91 +- drivers/net/wan/dlci.c | 37 +- drivers/net/wan/dscc4.c | 4 +- drivers/net/wan/farsync.c | 2 - drivers/net/wan/hd64570.c | 723 ++ drivers/net/wan/hd64572.c | 640 ++ drivers/net/wan/hd6457x.c | 868 -- drivers/net/wan/hdlc_fr.c | 10 +- drivers/net/wan/hdlc_ppp.c | 649 +- drivers/net/wan/hostess_sv11.c | 1 - drivers/net/wan/ixp4xx_hss.c | 1325 +++ drivers/net/wan/lapbether.c | 3 - drivers/net/wan/lmc/lmc_main.c | 1 - drivers/net/wan/lmc/lmc_proto.c | 1 - drivers/net/wan/n2.c | 9 +- drivers/net/wan/pc300_drv.c | 22 +- drivers/net/wan/pc300too.c | 121 +- drivers/net/wan/pci200syn.c | 79 +- drivers/net/wan/sbni.c | 101 +- drivers/net/wan/sdla.c | 48 +- drivers/net/wan/sealevel.c | 1 - drivers/net/wan/syncppp.c | 1480 --- drivers/net/wan/wanxl.c | 9 +- drivers/net/wan/x25_asy.c | 52 +- drivers/net/wan/z85230.c | 12 +- drivers/net/wd.c | 29 +- drivers/net/wireless/Kconfig | 163 +- drivers/net/wireless/Makefile | 22 +- drivers/net/wireless/adm8211.c | 52 +- drivers/net/wireless/adm8211.h | 2 - drivers/net/wireless/airo.c | 243 +- drivers/net/wireless/airport.c | 286 - drivers/net/wireless/arlan-main.c | 27 +- drivers/net/wireless/ath5k/ath5k.h | 102 +- drivers/net/wireless/ath5k/attach.c | 14 +- drivers/net/wireless/ath5k/base.c | 191 +- drivers/net/wireless/ath5k/desc.c | 4 +- drivers/net/wireless/ath5k/dma.c | 190 +- drivers/net/wireless/ath5k/eeprom.c | 1194 ++- drivers/net/wireless/ath5k/eeprom.h | 253 +- drivers/net/wireless/ath5k/initvals.c | 8 +- drivers/net/wireless/ath5k/pcu.c | 233 +- drivers/net/wireless/ath5k/phy.c | 9 +- drivers/net/wireless/ath5k/qcu.c | 37 +- drivers/net/wireless/ath5k/reg.h | 16 +- drivers/net/wireless/ath5k/reset.c | 9 +- drivers/net/wireless/ath9k/Kconfig | 11 + drivers/net/wireless/ath9k/Makefile | 9 +- drivers/net/wireless/ath9k/ani.c | 852 ++ drivers/net/wireless/ath9k/ath9k.h | 432 +- drivers/net/wireless/ath9k/beacon.c | 319 +- drivers/net/wireless/ath9k/calib.c | 1021 ++ drivers/net/wireless/ath9k/core.c | 1886 --- drivers/net/wireless/ath9k/core.h | 926 +- drivers/net/wireless/ath9k/debug.c | 262 + drivers/net/wireless/ath9k/eeprom.c | 2824 +++++ drivers/net/wireless/ath9k/hw.c | 8490 ++++----------- drivers/net/wireless/ath9k/hw.h | 165 +- drivers/net/wireless/ath9k/initvals.h | 1938 +++- drivers/net/wireless/ath9k/mac.c | 946 ++ drivers/net/wireless/ath9k/main.c | 2353 +++-- drivers/net/wireless/ath9k/phy.c | 24 +- drivers/net/wireless/ath9k/phy.h | 5 + drivers/net/wireless/ath9k/rc.c | 1832 ++-- drivers/net/wireless/ath9k/rc.h | 220 +- drivers/net/wireless/ath9k/recv.c | 1242 +-- drivers/net/wireless/ath9k/reg.h | 109 +- drivers/net/wireless/ath9k/regd.c | 85 +- drivers/net/wireless/ath9k/regd.h | 2 +- drivers/net/wireless/ath9k/xmit.c | 1532 ++-- drivers/net/wireless/atmel.c | 79 +- drivers/net/wireless/b43/b43.h | 1 - drivers/net/wireless/b43/debugfs.c | 1 + drivers/net/wireless/b43/debugfs.h | 1 + drivers/net/wireless/b43/dma.c | 4 +- drivers/net/wireless/b43/main.c | 280 +- drivers/net/wireless/b43/phy_a.c | 4 +- drivers/net/wireless/b43/phy_common.c | 18 + drivers/net/wireless/b43/phy_g.c | 28 +- drivers/net/wireless/b43/pio.c | 3 +- drivers/net/wireless/b43/xmit.c | 64 +- drivers/net/wireless/b43/xmit.h | 5 +- drivers/net/wireless/b43legacy/b43legacy.h | 5 +- drivers/net/wireless/b43legacy/debugfs.c | 2 +- drivers/net/wireless/b43legacy/dma.c | 48 +- drivers/net/wireless/b43legacy/main.c | 211 +- drivers/net/wireless/b43legacy/phy.c | 6 +- drivers/net/wireless/b43legacy/pio.c | 31 +- drivers/net/wireless/b43legacy/xmit.c | 26 +- drivers/net/wireless/b43legacy/xmit.h | 2 +- drivers/net/wireless/hostap/Kconfig | 13 +- drivers/net/wireless/hostap/hostap.h | 2 +- drivers/net/wireless/hostap/hostap_80211.h | 2 +- drivers/net/wireless/hostap/hostap_80211_rx.c | 72 +- drivers/net/wireless/hostap/hostap_80211_tx.c | 23 +- drivers/net/wireless/hostap/hostap_ap.c | 253 +- drivers/net/wireless/hostap/hostap_ap.h | 8 +- drivers/net/wireless/hostap/hostap_common.h | 13 - drivers/net/wireless/hostap/hostap_hw.c | 71 +- drivers/net/wireless/hostap/hostap_info.c | 16 +- drivers/net/wireless/hostap/hostap_ioctl.c | 157 +- drivers/net/wireless/hostap/hostap_main.c | 45 +- drivers/net/wireless/hostap/hostap_pci.c | 2 +- drivers/net/wireless/hostap/hostap_proc.c | 35 +- drivers/net/wireless/hostap/hostap_wlan.h | 8 +- drivers/net/wireless/ipw2100.c | 8654 -------------- drivers/net/wireless/ipw2200.c |12008 -------------------- drivers/net/wireless/ipw2200.h | 2010 ---- drivers/net/wireless/ipw2x00/Kconfig | 191 + drivers/net/wireless/ipw2x00/Makefile | 14 + drivers/net/wireless/ipw2x00/ipw2100.c | 8649 ++++++++++++++ drivers/net/wireless/{ => ipw2x00}/ipw2100.h | 0 drivers/net/wireless/ipw2x00/ipw2200.c |11986 +++++++++++++++++++ drivers/net/wireless/ipw2x00/ipw2200.h | 2012 ++++ .../net/wireless/ipw2x00/libipw_geo.c | 0 drivers/net/wireless/ipw2x00/libipw_module.c | 293 + drivers/net/wireless/ipw2x00/libipw_rx.c | 1799 +++ drivers/net/wireless/ipw2x00/libipw_tx.c | 546 + drivers/net/wireless/ipw2x00/libipw_wx.c | 760 ++ drivers/net/wireless/iwlwifi/Kconfig | 2 + drivers/net/wireless/iwlwifi/Makefile | 3 +- drivers/net/wireless/iwlwifi/iwl-3945-commands.h | 148 +- drivers/net/wireless/iwlwifi/iwl-3945-core.h | 28 +- drivers/net/wireless/iwlwifi/iwl-3945-debug.h | 2 +- drivers/net/wireless/iwlwifi/iwl-3945-hw.h | 4 +- drivers/net/wireless/iwlwifi/iwl-3945-io.h | 24 +- drivers/net/wireless/iwlwifi/iwl-3945-led.c | 2 +- drivers/net/wireless/iwlwifi/iwl-3945-led.h | 2 +- drivers/net/wireless/iwlwifi/iwl-3945-rs.c | 223 +- drivers/net/wireless/iwlwifi/iwl-3945-rs.h | 2 +- drivers/net/wireless/iwlwifi/iwl-3945.c | 125 +- drivers/net/wireless/iwlwifi/iwl-3945.h | 40 +- drivers/net/wireless/iwlwifi/iwl-4965-hw.h | 203 +- drivers/net/wireless/iwlwifi/iwl-4965.c | 251 +- drivers/net/wireless/iwlwifi/iwl-5000-hw.h | 64 +- drivers/net/wireless/iwlwifi/iwl-5000.c | 440 +- drivers/net/wireless/iwlwifi/iwl-agn-hcmd-check.c | 108 + drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 179 +- drivers/net/wireless/iwlwifi/iwl-agn-rs.h | 22 +- drivers/net/wireless/iwlwifi/iwl-agn.c | 1241 +-- drivers/net/wireless/iwlwifi/iwl-calib.c | 19 +- drivers/net/wireless/iwlwifi/iwl-calib.h | 2 +- drivers/net/wireless/iwlwifi/iwl-commands.h | 536 +- drivers/net/wireless/iwlwifi/iwl-core.c | 335 +- drivers/net/wireless/iwlwifi/iwl-core.h | 78 +- drivers/net/wireless/iwlwifi/iwl-csr.h | 8 +- drivers/net/wireless/iwlwifi/iwl-debug.h | 33 +- drivers/net/wireless/iwlwifi/iwl-debugfs.c | 83 +- drivers/net/wireless/iwlwifi/iwl-dev.h | 183 +- drivers/net/wireless/iwlwifi/iwl-eeprom.c | 50 +- drivers/net/wireless/iwlwifi/iwl-eeprom.h | 15 +- drivers/net/wireless/iwlwifi/iwl-fh.h | 173 +- drivers/net/wireless/iwlwifi/iwl-hcmd.c | 4 +- drivers/net/wireless/iwlwifi/iwl-helpers.h | 111 +- drivers/net/wireless/iwlwifi/iwl-io.h | 37 +- drivers/net/wireless/iwlwifi/iwl-led.c | 7 +- drivers/net/wireless/iwlwifi/iwl-led.h | 2 +- drivers/net/wireless/iwlwifi/iwl-power.c | 38 +- drivers/net/wireless/iwlwifi/iwl-power.h | 2 +- drivers/net/wireless/iwlwifi/iwl-prph.h | 8 +- drivers/net/wireless/iwlwifi/iwl-rfkill.c | 12 +- drivers/net/wireless/iwlwifi/iwl-rfkill.h | 2 +- drivers/net/wireless/iwlwifi/iwl-rx.c | 230 +- drivers/net/wireless/iwlwifi/iwl-scan.c | 131 +- drivers/net/wireless/iwlwifi/iwl-spectrum.c | 198 + drivers/net/wireless/iwlwifi/iwl-spectrum.h | 3 +- drivers/net/wireless/iwlwifi/iwl-sta.c | 259 +- drivers/net/wireless/iwlwifi/iwl-sta.h | 16 +- drivers/net/wireless/iwlwifi/iwl-tx.c | 438 +- drivers/net/wireless/iwlwifi/iwl3945-base.c | 751 +- drivers/net/wireless/libertas/assoc.c | 69 +- drivers/net/wireless/libertas/cmd.c | 32 +- drivers/net/wireless/libertas/cmd.h | 3 +- drivers/net/wireless/libertas/debugfs.c | 11 +- drivers/net/wireless/libertas/decl.h | 4 - drivers/net/wireless/libertas/defs.h | 14 +- drivers/net/wireless/libertas/dev.h | 7 +- drivers/net/wireless/libertas/ethtool.c | 14 +- drivers/net/wireless/libertas/host.h | 9 + drivers/net/wireless/libertas/hostcmd.h | 26 +- drivers/net/wireless/libertas/if_sdio.c | 3 +- drivers/net/wireless/libertas/if_usb.c | 7 +- drivers/net/wireless/libertas/main.c | 135 +- drivers/net/wireless/libertas/persistcfg.c | 18 +- drivers/net/wireless/libertas/radiotap.h | 3 - drivers/net/wireless/libertas/scan.c | 105 +- drivers/net/wireless/libertas/scan.h | 4 + drivers/net/wireless/libertas/tx.c | 2 +- drivers/net/wireless/libertas/types.h | 5 +- drivers/net/wireless/libertas/wext.c | 80 +- drivers/net/wireless/libertas_tf/cmd.c | 5 +- drivers/net/wireless/libertas_tf/main.c | 8 +- drivers/net/wireless/mac80211_hwsim.c | 294 +- drivers/net/wireless/netwave_cs.c | 6 +- drivers/net/wireless/orinoco.c | 6021 ---------- drivers/net/wireless/orinoco.h | 213 - drivers/net/wireless/orinoco/Makefile | 12 + drivers/net/wireless/orinoco/airport.c | 286 + drivers/net/wireless/{ => orinoco}/hermes.c | 0 drivers/net/wireless/{ => orinoco}/hermes.h | 0 drivers/net/wireless/{ => orinoco}/hermes_dld.c | 0 drivers/net/wireless/{ => orinoco}/hermes_dld.h | 0 drivers/net/wireless/{ => orinoco}/hermes_rid.h | 0 drivers/net/wireless/orinoco/orinoco.c | 6130 ++++++++++ drivers/net/wireless/orinoco/orinoco.h | 222 + drivers/net/wireless/orinoco/orinoco_cs.c | 537 + .../net/wireless/{ => orinoco}/orinoco_nortel.c | 0 drivers/net/wireless/{ => orinoco}/orinoco_pci.c | 0 drivers/net/wireless/{ => orinoco}/orinoco_pci.h | 0 drivers/net/wireless/{ => orinoco}/orinoco_plx.c | 0 drivers/net/wireless/{ => orinoco}/orinoco_tmd.c | 0 drivers/net/wireless/orinoco/spectrum_cs.c | 530 + drivers/net/wireless/orinoco_cs.c | 533 - drivers/net/wireless/p54/p54.h | 74 +- drivers/net/wireless/p54/p54common.c | 1620 ++- drivers/net/wireless/p54/p54common.h | 349 +- drivers/net/wireless/p54/p54pci.c | 70 +- drivers/net/wireless/p54/p54pci.h | 2 +- drivers/net/wireless/p54/p54usb.c | 261 +- drivers/net/wireless/p54/p54usb.h | 1 + drivers/net/wireless/prism54/isl_ioctl.c | 24 +- drivers/net/wireless/prism54/islpci_hotplug.c | 8 +- drivers/net/wireless/ray_cs.c | 12 +- drivers/net/wireless/rndis_wlan.c | 95 +- drivers/net/wireless/rt2x00/Kconfig | 1 + drivers/net/wireless/rt2x00/rt2400pci.c | 373 +- drivers/net/wireless/rt2x00/rt2400pci.h | 2 + drivers/net/wireless/rt2x00/rt2500pci.c | 407 +- drivers/net/wireless/rt2x00/rt2500pci.h | 2 + drivers/net/wireless/rt2x00/rt2500usb.c | 443 +- drivers/net/wireless/rt2x00/rt2500usb.h | 5 + drivers/net/wireless/rt2x00/rt2x00.h | 113 +- drivers/net/wireless/rt2x00/rt2x00config.c | 202 +- drivers/net/wireless/rt2x00/rt2x00crypto.c | 79 +- drivers/net/wireless/rt2x00/rt2x00debug.c | 47 +- drivers/net/wireless/rt2x00/rt2x00debug.h | 13 + drivers/net/wireless/rt2x00/rt2x00dev.c | 86 +- drivers/net/wireless/rt2x00/rt2x00leds.c | 88 +- drivers/net/wireless/rt2x00/rt2x00lib.h | 33 +- drivers/net/wireless/rt2x00/rt2x00mac.c | 56 +- drivers/net/wireless/rt2x00/rt2x00pci.c | 41 +- drivers/net/wireless/rt2x00/rt2x00pci.h | 37 +- drivers/net/wireless/rt2x00/rt2x00queue.c | 94 +- drivers/net/wireless/rt2x00/rt2x00queue.h | 47 +- drivers/net/wireless/rt2x00/rt2x00usb.c | 145 +- drivers/net/wireless/rt2x00/rt2x00usb.h | 141 +- drivers/net/wireless/rt2x00/rt61pci.c | 469 +- drivers/net/wireless/rt2x00/rt61pci.h | 2 + drivers/net/wireless/rt2x00/rt73usb.c | 689 +- drivers/net/wireless/rt2x00/rt73usb.h | 2 + drivers/net/wireless/rtl8180_dev.c | 1081 -- drivers/net/wireless/rtl8180_rtl8225.c | 780 -- drivers/net/wireless/rtl8187.h | 221 - drivers/net/wireless/rtl8187_dev.c | 1261 -- drivers/net/wireless/rtl8187_rtl8225.c | 992 -- drivers/net/wireless/rtl818x.h | 231 - drivers/net/wireless/rtl818x/Makefile | 7 + drivers/net/wireless/{ => rtl818x}/rtl8180.h | 0 drivers/net/wireless/rtl818x/rtl8180_dev.c | 1093 ++ .../net/wireless/{ => rtl818x}/rtl8180_grf5101.c | 0 .../net/wireless/{ => rtl818x}/rtl8180_grf5101.h | 0 .../net/wireless/{ => rtl818x}/rtl8180_max2820.c | 0 .../net/wireless/{ => rtl818x}/rtl8180_max2820.h | 0 drivers/net/wireless/rtl818x/rtl8180_rtl8225.c | 788 ++ .../net/wireless/{ => rtl818x}/rtl8180_rtl8225.h | 0 .../net/wireless/{ => rtl818x}/rtl8180_sa2400.c | 0 .../net/wireless/{ => rtl818x}/rtl8180_sa2400.h | 0 drivers/net/wireless/rtl818x/rtl8187.h | 227 + drivers/net/wireless/rtl818x/rtl8187_dev.c | 1496 +++ drivers/net/wireless/rtl818x/rtl8187_rtl8225.c | 971 ++ .../net/wireless/{ => rtl818x}/rtl8187_rtl8225.h | 0 drivers/net/wireless/rtl818x/rtl818x.h | 232 + drivers/net/wireless/spectrum_cs.c | 507 - drivers/net/wireless/strip.c | 22 +- drivers/net/wireless/wavelan.c | 122 +- drivers/net/wireless/wavelan_cs.c | 39 +- drivers/net/wireless/wl3501.h | 4 +- drivers/net/wireless/wl3501_cs.c | 11 +- drivers/net/wireless/zd1201.c | 131 +- drivers/net/wireless/zd1211rw/zd_chip.c | 4 +- drivers/net/wireless/zd1211rw/zd_mac.c | 44 +- drivers/net/wireless/zd1211rw/zd_usb.c | 2 +- drivers/net/xen-netfront.c | 9 +- drivers/net/xtsonic.c | 6 +- drivers/net/yellowfin.c | 42 +- drivers/net/znet.c | 28 +- drivers/net/zorro8390.c | 29 +- drivers/of/base.c | 68 +- drivers/of/gpio.c | 70 +- drivers/of/of_i2c.c | 11 + drivers/parisc/led.c | 4 +- drivers/pci/hotplug/rpadlpar_core.c | 69 +- drivers/pci/quirks.c | 170 +- drivers/ps3/ps3av.c | 20 - drivers/ps3/ps3av_cmd.c | 4 +- drivers/rapidio/rio-scan.c | 8 +- drivers/rtc/rtc-isl1208.c | 7 + drivers/s390/block/dasd.c | 4 + drivers/s390/block/dasd_devmap.c | 19 +- drivers/s390/block/dasd_eckd.c | 2 +- drivers/s390/block/dasd_proc.c | 28 +- drivers/s390/block/dcssblk.c | 77 +- drivers/s390/block/xpram.c | 41 +- drivers/s390/char/monreader.c | 41 +- drivers/s390/char/monwriter.c | 5 +- drivers/s390/char/sclp_cmd.c | 29 +- drivers/s390/char/sclp_config.c | 10 +- drivers/s390/char/sclp_cpi_sys.c | 12 +- drivers/s390/char/sclp_sdias.c | 18 +- drivers/s390/char/sclp_vt220.c | 33 +- drivers/s390/char/vmcp.c | 11 +- drivers/s390/char/vmlogrdr.c | 26 +- drivers/s390/char/vmur.c | 15 +- drivers/s390/char/zcore.c | 14 +- drivers/s390/cio/blacklist.c | 14 +- drivers/s390/cio/ccwgroup.c | 26 +- drivers/s390/cio/chsc.c | 8 +- drivers/s390/cio/chsc_sch.c | 2 +- drivers/s390/cio/cio.c | 245 +- drivers/s390/cio/cio.h | 18 +- drivers/s390/cio/cmf.c | 63 +- drivers/s390/cio/css.c | 12 +- drivers/s390/cio/device.c | 237 +- drivers/s390/cio/device.h | 1 + drivers/s390/cio/device_fsm.c | 46 +- drivers/s390/cio/device_pgid.c | 2 +- drivers/s390/cio/device_status.c | 4 +- drivers/s390/cio/qdio.h | 33 +- drivers/s390/cio/qdio_debug.c | 104 +- drivers/s390/cio/qdio_debug.h | 112 +- drivers/s390/cio/qdio_main.c | 648 +- drivers/s390/cio/qdio_perf.c | 8 + drivers/s390/cio/qdio_perf.h | 5 + drivers/s390/cio/qdio_setup.c | 145 +- drivers/s390/cio/qdio_thinint.c | 29 +- drivers/s390/crypto/ap_bus.c | 212 +- drivers/s390/crypto/ap_bus.h | 6 +- drivers/s390/crypto/zcrypt_cex2a.c | 10 +- drivers/s390/crypto/zcrypt_pcica.c | 10 +- drivers/s390/crypto/zcrypt_pcicc.c | 10 +- drivers/s390/crypto/zcrypt_pcixcc.c | 10 +- drivers/s390/net/ctcm_fsms.c | 46 +- drivers/s390/net/ctcm_main.c | 72 +- drivers/s390/net/ctcm_main.h | 6 - drivers/s390/net/ctcm_mpc.c | 15 +- drivers/s390/net/ctcm_sysfs.c | 3 + drivers/s390/net/lcs.c | 104 +- drivers/s390/net/netiucv.c | 64 +- drivers/s390/net/qeth_core.h | 9 +- drivers/s390/net/qeth_core_main.c | 176 +- drivers/s390/net/qeth_core_offl.c | 8 +- drivers/s390/net/qeth_l2_main.c | 55 +- drivers/s390/net/qeth_l3_main.c | 211 +- drivers/s390/scsi/zfcp_aux.c | 28 +- drivers/s390/scsi/zfcp_ccw.c | 3 + drivers/s390/scsi/zfcp_cfdc.c | 3 + drivers/s390/scsi/zfcp_dbf.c | 3 + drivers/s390/scsi/zfcp_def.h | 2 + drivers/s390/scsi/zfcp_erp.c | 10 +- drivers/s390/scsi/zfcp_fc.c | 3 + drivers/s390/scsi/zfcp_fsf.c | 3 + drivers/s390/scsi/zfcp_qdio.c | 3 + drivers/s390/scsi/zfcp_scsi.c | 3 + drivers/s390/scsi/zfcp_sysfs.c | 3 + drivers/s390/sysinfo.c | 127 +- drivers/scsi/iscsi_tcp.c | 4 +- drivers/scsi/mac_scsi.c | 1 - drivers/scsi/qla4xxx/ql4_os.c | 3 +- drivers/serial/mpc52xx_uart.c | 74 +- drivers/serial/pmac_zilog.c | 27 + drivers/serial/sh-sci.c | 563 +- drivers/serial/sh-sci.h | 45 +- drivers/ssb/main.c | 11 +- drivers/ssb/pcihost_wrapper.c | 2 +- drivers/staging/slicoss/slicoss.c | 7 +- drivers/staging/winbond/linux/wbusb.c | 6 +- drivers/staging/wlan-ng/p80211netdev.c | 20 +- drivers/staging/wlan-ng/p80211wext.c | 58 +- drivers/usb/atm/cxacru.c | 4 +- drivers/usb/atm/usbatm.c | 5 +- drivers/usb/core/devio.c | 10 +- drivers/usb/core/inode.c | 4 +- drivers/usb/gadget/f_phonet.c | 621 + drivers/usb/gadget/m66592-udc.c | 34 +- drivers/usb/gadget/m66592-udc.h | 27 +- drivers/usb/gadget/u_ether.c | 10 +- drivers/usb/gadget/u_phonet.h | 21 + drivers/usb/host/r8a66597-hcd.c | 34 +- drivers/usb/host/r8a66597.h | 8 +- drivers/uwb/wlp/eda.c | 38 +- drivers/video/Kconfig | 33 +- drivers/video/console/fbcon.c | 78 +- drivers/video/controlfb.c | 4 +- drivers/video/fb_defio.c | 27 +- drivers/video/macfb.c | 33 +- drivers/video/ps3fb.c | 23 +- drivers/video/sh7760fb.c | 94 +- drivers/video/sh_mobile_lcdcfb.c | 198 +- drivers/w1/w1_io.c | 4 +- drivers/xen/balloon.c | 4 +- drivers/xen/features.c | 6 +- drivers/xen/grant-table.c | 1 + firmware/Makefile | 3 + firmware/WHENCE | 11 + firmware/cxgb3/t3b_psram-1.1.0.bin.ihex | 162 + firmware/cxgb3/t3c_psram-1.1.0.bin.ihex | 162 + firmware/cxgb3/t3fw-7.0.0.bin.ihex | 1881 +++ fs/9p/fid.c | 2 +- fs/9p/vfs_inode.c | 4 +- fs/9p/vfs_super.c | 4 +- fs/affs/inode.c | 4 +- fs/affs/super.c | 4 +- fs/afs/proc.c | 4 +- fs/afs/server.c | 9 +- fs/anon_inodes.c | 4 +- fs/attr.c | 4 +- fs/autofs/inode.c | 4 +- fs/autofs4/dev-ioctl.c | 3 +- fs/autofs4/inode.c | 4 +- fs/autofs4/waitq.c | 4 +- fs/bfs/dir.c | 4 +- fs/binfmt_aout.c | 2 +- fs/binfmt_elf.c | 22 +- fs/binfmt_elf_fdpic.c | 19 +- fs/binfmt_flat.c | 2 +- fs/binfmt_som.c | 2 +- fs/bio.c | 5 +- fs/cifs/AUTHORS | 2 + fs/cifs/CHANGES | 9 + fs/cifs/README | 12 +- fs/cifs/cifs_dfs_ref.c | 48 +- fs/cifs/cifs_fs_sb.h | 7 +- fs/cifs/cifs_spnego.c | 6 +- fs/cifs/cifsencrypt.c | 30 +- fs/cifs/cifsencrypt.h | 3 +- fs/cifs/cifsfs.c | 75 +- fs/cifs/cifsfs.h | 2 +- fs/cifs/cifsglob.h | 15 +- fs/cifs/cifspdu.h | 2 +- fs/cifs/cifsproto.h | 5 +- fs/cifs/cifssmb.c | 49 +- fs/cifs/connect.c | 685 +- fs/cifs/dir.c | 21 +- fs/cifs/file.c | 25 +- fs/cifs/inode.c | 66 +- fs/cifs/ioctl.c | 2 +- fs/cifs/misc.c | 13 +- fs/cifs/sess.c | 5 +- fs/cifs/smbdes.c | 5 +- fs/cifs/smbencrypt.c | 9 +- fs/cifs/transport.c | 378 +- fs/coda/cache.c | 6 +- fs/coda/file.c | 3 +- fs/coda/upcall.c | 2 +- fs/compat.c | 42 +- fs/devpts/inode.c | 4 +- fs/dlm/netlink.c | 2 +- fs/dquot.c | 4 +- fs/ecryptfs/ecryptfs_kernel.h | 3 +- fs/ecryptfs/kthread.c | 9 +- fs/ecryptfs/main.c | 3 +- fs/ecryptfs/messaging.c | 27 +- fs/ecryptfs/miscdev.c | 27 +- fs/exec.c | 183 +- fs/exportfs/expfs.c | 4 +- fs/ext2/balloc.c | 2 +- fs/ext2/ialloc.c | 4 +- fs/ext3/balloc.c | 2 +- fs/ext3/ialloc.c | 4 +- fs/ext4/balloc.c | 2 +- fs/ext4/ialloc.c | 4 +- fs/fat/file.c | 2 +- fs/fat/inode.c | 4 +- fs/fcntl.c | 18 +- fs/file_table.c | 10 +- fs/fuse/dev.c | 4 +- fs/fuse/dir.c | 25 +- fs/gfs2/inode.c | 10 +- fs/hfs/inode.c | 4 +- fs/hfs/super.c | 4 +- fs/hfsplus/inode.c | 4 +- fs/hfsplus/options.c | 4 +- fs/hpfs/namei.c | 24 +- fs/hpfs/super.c | 4 +- fs/hppfs/hppfs.c | 6 +- fs/hugetlbfs/inode.c | 21 +- fs/inotify_user.c | 2 +- fs/internal.h | 6 + fs/ioprio.c | 18 +- fs/jfs/jfs_inode.c | 4 +- fs/lockd/host.c | 8 +- fs/lockd/mon.c | 2 +- fs/locks.c | 2 +- fs/minix/bitmap.c | 4 +- fs/namei.c | 10 +- fs/namespace.c | 2 +- fs/ncpfs/ioctl.c | 91 +- fs/nfs/nfsroot.c | 6 +- fs/nfs/super.c | 6 +- fs/nfsctl.c | 5 +- fs/nfsd/auth.c | 95 +- fs/nfsd/nfs4recover.c | 72 +- fs/nfsd/nfs4state.c | 4 +- fs/nfsd/nfsctl.c | 2 +- fs/nfsd/nfsfh.c | 11 +- fs/nfsd/vfs.c | 9 +- fs/ocfs2/cluster/netdebug.c | 8 +- fs/ocfs2/cluster/nodemanager.c | 2 +- fs/ocfs2/cluster/tcp.c | 29 +- fs/ocfs2/dlm/dlmfs.c | 8 +- fs/ocfs2/namei.c | 4 +- fs/omfs/inode.c | 8 +- fs/open.c | 59 +- fs/pipe.c | 4 +- fs/posix_acl.c | 4 +- fs/proc/array.c | 32 +- fs/proc/base.c | 36 +- fs/proc/proc_devtree.c | 3 +- fs/quota.c | 4 +- fs/ramfs/inode.c | 4 +- fs/reiserfs/namei.c | 4 +- fs/seq_file.c | 14 +- fs/smbfs/dir.c | 3 +- fs/smbfs/inode.c | 2 +- fs/smbfs/proc.c | 2 +- fs/super.c | 2 +- fs/sysv/ialloc.c | 4 +- fs/ubifs/budget.c | 2 +- fs/ubifs/dir.c | 4 +- fs/udf/ialloc.c | 4 +- fs/udf/namei.c | 2 +- fs/ufs/ialloc.c | 4 +- fs/xfs/linux-2.6/xfs_cred.h | 6 +- fs/xfs/linux-2.6/xfs_globals.h | 2 +- fs/xfs/linux-2.6/xfs_ioctl.c | 5 +- fs/xfs/xfs_acl.c | 6 +- fs/xfs/xfs_inode.h | 2 +- fs/xfs/xfs_vnodeops.h | 10 +- include/acpi/acoutput.h | 2 +- include/acpi/platform/aclinux.h | 6 +- include/asm-generic/bug.h | 8 + include/asm-generic/memory_model.h | 2 +- include/asm-generic/pgtable.h | 50 + include/asm-generic/vmlinux.lds.h | 31 +- include/asm-m32r/system.h | 2 +- include/asm-m68k/byteorder.h | 16 +- include/asm-m68k/machw.h | 22 - include/crypto/aes.h | 8 +- include/crypto/algapi.h | 16 +- include/crypto/hash.h | 125 + include/crypto/internal/hash.h | 16 +- include/keys/keyring-type.h | 31 + include/linux/atm.h | 17 +- include/linux/atmdev.h | 15 + include/linux/audit.h | 26 + include/linux/binfmts.h | 16 +- include/linux/blktrace_api.h | 172 +- include/linux/capability.h | 25 +- include/linux/cgroup_subsys.h | 6 + include/linux/compiler.h | 84 +- include/linux/crc32c.h | 6 +- include/linux/cred.h | 342 +- include/linux/crypto.h | 10 +- include/linux/dcbnl.h | 340 + include/linux/dccp.h | 42 +- include/linux/dmi.h | 2 + include/linux/etherdevice.h | 46 + include/linux/ethtool.h | 2 + include/linux/fb.h | 2 +- include/linux/fddidevice.h | 1 + include/linux/filter.h | 3 +- include/linux/fs.h | 8 +- include/linux/fsl_devices.h | 18 +- include/linux/ftrace.h | 293 +- include/linux/ftrace_irq.h | 13 + include/linux/hardirq.h | 15 +- include/linux/hdlc.h | 4 +- include/linux/hippidevice.h | 4 +- include/linux/ieee80211.h | 212 +- include/linux/if.h | 1 + include/linux/if_arp.h | 3 + include/linux/in.h | 4 + include/linux/init_task.h | 14 +- include/linux/input.h | 2 + include/linux/ipv6.h | 1 + include/linux/kernel.h | 12 - include/linux/kexec.h | 4 + include/linux/key-ui.h | 66 - include/linux/key.h | 32 +- include/linux/keyctl.h | 4 +- include/linux/linkage.h | 8 - include/linux/list_nulls.h | 94 + include/linux/marker.h | 75 +- include/linux/mdio-gpio.h | 25 + include/linux/mfd/wm8350/audio.h | 38 +- include/linux/mii.h | 33 + include/linux/mlx4/device.h | 4 +- include/linux/mm.h | 21 + include/linux/mroute6.h | 26 +- include/linux/netdevice.h | 400 +- include/linux/netfilter_bridge/ebtables.h | 3 +- include/linux/netfilter_ipv4/ipt_policy.h | 2 + include/linux/netfilter_ipv6/ip6t_policy.h | 2 + include/linux/netlink.h | 3 +- include/linux/netpoll.h | 5 - include/linux/nl80211.h | 223 +- include/linux/nsproxy.h | 1 - include/linux/of.h | 6 + include/linux/of_gpio.h | 44 +- include/linux/pci.h | 6 + include/linux/pci_ids.h | 5 + include/linux/phy.h | 2 + include/linux/pid.h | 4 +- include/linux/pkt_cls.h | 14 + include/linux/pkt_sched.h | 16 + include/linux/ptrace.h | 22 + include/linux/rculist_nulls.h | 110 + include/linux/rcupdate.h | 2 + include/linux/rfkill.h | 8 +- include/linux/ring_buffer.h | 16 +- include/linux/rio_drv.h | 4 +- include/linux/rtnetlink.h | 5 + include/linux/sched.h | 102 +- include/linux/securebits.h | 2 +- include/linux/security.h | 344 +- include/linux/seq_file.h | 1 + include/linux/skbuff.h | 54 +- include/linux/smsc911x.h | 47 + include/linux/snmp.h | 3 + include/linux/stacktrace.h | 8 + include/linux/sunrpc/svc_xprt.h | 8 +- include/linux/topology.h | 2 +- include/linux/tracepoint.h | 57 +- include/linux/tty.h | 6 +- include/linux/user_namespace.h | 13 +- include/linux/virtio_net.h | 9 + include/linux/xfrm.h | 14 + include/net/bluetooth/bluetooth.h | 4 +- include/net/bluetooth/hci.h | 2 +- include/net/cfg80211.h | 142 +- include/net/checksum.h | 2 +- include/net/dcbnl.h | 53 + include/net/dn.h | 8 +- include/net/dn_fib.h | 6 +- include/net/dst.h | 39 +- include/net/flow.h | 9 +- include/net/gen_stats.h | 3 +- include/net/ieee80211.h | 148 +- include/net/ieee80211_crypt.h | 108 - include/net/ieee80211_radiotap.h | 15 +- include/net/inet_hashtables.h | 85 +- include/net/inet_timewait_sock.h | 10 +- include/net/ip.h | 3 +- include/net/ip_vs.h | 17 +- include/net/iucv/iucv.h | 45 + include/net/lib80211.h | 129 + include/net/mac80211.h | 446 +- include/net/ndisc.h | 14 + include/net/neighbour.h | 15 +- include/net/net_namespace.h | 22 + include/net/netfilter/nf_conntrack.h | 5 +- include/net/netfilter/nf_conntrack_ecache.h | 57 +- include/net/netfilter/nf_conntrack_expect.h | 2 + include/net/netfilter/nf_conntrack_helper.h | 5 +- include/net/netfilter/nf_conntrack_l4proto.h | 2 +- include/net/netfilter/nf_conntrack_tuple.h | 12 +- include/net/netfilter/nfnetlink_log.h | 14 + include/net/netlink.h | 24 +- include/net/netns/ipv4.h | 2 + include/net/netns/ipv6.h | 12 + include/net/netns/mib.h | 3 + include/net/netns/x_tables.h | 5 + include/net/netns/xfrm.h | 56 + include/net/phonet/pep.h | 2 +- include/net/phonet/phonet.h | 2 +- include/net/phonet/pn_dev.h | 2 +- include/net/pkt_cls.h | 2 +- include/net/protocol.h | 3 + include/net/sch_generic.h | 38 +- include/net/scm.h | 4 +- include/net/sctp/sctp.h | 9 +- include/net/sctp/user.h | 2 + include/net/sock.h | 86 +- include/net/syncppp.h | 102 - include/net/tcp.h | 20 +- include/net/udp.h | 25 +- include/net/udplite.h | 2 +- include/net/wireless.h | 90 +- include/net/xfrm.h | 110 +- include/sound/ac97_codec.h | 2 + include/sound/asound.h | 1 + include/sound/core.h | 28 +- include/sound/info.h | 106 +- include/sound/jack.h | 2 + include/sound/l3.h | 18 + include/sound/s3c24xx_uda134x.h | 14 + include/sound/soc-dai.h | 231 + include/sound/soc-dapm.h | 2 - include/sound/soc.h | 206 +- include/sound/uda134x.h | 26 + include/sound/version.h | 2 +- include/trace/block.h | 76 + include/trace/boot.h | 60 + include/trace/sched.h | 36 +- include/video/sh_mobile_lcdc.h | 1 + include/xen/interface/event_channel.h | 2 + init/Kconfig | 8 + init/main.c | 36 +- ipc/mqueue.c | 19 +- ipc/shm.c | 9 +- ipc/util.c | 18 +- kernel/Makefile | 5 +- kernel/acct.c | 7 +- kernel/auditsc.c | 255 +- kernel/capability.c | 288 +- kernel/cgroup.c | 25 +- kernel/cred-internals.h | 21 + kernel/cred.c | 588 + kernel/delayacct.c | 2 +- kernel/exit.c | 28 +- kernel/extable.c | 5 +- kernel/fork.c | 76 +- kernel/futex.c | 20 +- kernel/futex_compat.c | 7 +- kernel/kallsyms.c | 16 +- kernel/kmod.c | 30 +- kernel/kthread.c | 3 + kernel/lockdep.c | 1 + kernel/marker.c | 192 +- kernel/module.c | 13 +- kernel/nsproxy.c | 15 +- kernel/power/disk.c | 13 +- kernel/power/main.c | 5 +- kernel/profile.c | 2 +- kernel/ptrace.c | 41 +- kernel/sched.c | 407 +- kernel/sched_debug.c | 57 +- kernel/sched_fair.c | 9 +- kernel/sched_rt.c | 9 +- kernel/sched_stats.h | 5 +- kernel/signal.c | 62 +- kernel/sys.c | 586 +- kernel/sysctl.c | 22 +- kernel/timer.c | 8 +- kernel/trace/Kconfig | 115 +- kernel/trace/Makefile | 9 + kernel/trace/ftrace.c | 929 ++- kernel/trace/ring_buffer.c | 709 +- kernel/trace/trace.c | 978 ++- kernel/trace/trace.h | 265 +- kernel/trace/trace_boot.c | 158 +- kernel/trace/trace_branch.c | 342 + kernel/trace/trace_functions.c | 30 +- kernel/trace/trace_functions_graph.c | 669 ++ kernel/trace/trace_hw_branches.c | 195 + kernel/trace/trace_irqsoff.c | 61 +- kernel/trace/trace_mmiotrace.c | 33 +- kernel/trace/trace_nop.c | 65 +- kernel/trace/trace_power.c | 179 + kernel/trace/trace_sched_switch.c | 121 +- kernel/trace/trace_sched_wakeup.c | 72 +- kernel/trace/trace_selftest.c | 173 +- kernel/trace/trace_stack.c | 70 +- kernel/trace/trace_sysprof.c | 31 +- kernel/tracepoint.c | 295 +- kernel/tsacct.c | 6 +- kernel/uid16.c | 31 +- kernel/user.c | 98 +- kernel/user_namespace.c | 65 +- kernel/workqueue.c | 8 +- lib/Kconfig | 2 + lib/Makefile | 2 +- lib/bug.c | 19 +- lib/is_single_threaded.c | 45 + lib/libcrc32c.c | 182 +- lib/vsprintf.c | 77 + mm/bounce.c | 5 +- mm/memory.c | 70 +- mm/mempolicy.c | 9 +- mm/migrate.c | 9 +- mm/mlock.c | 45 + mm/oom_kill.c | 12 +- mm/shmem.c | 8 +- mm/swapfile.c | 9 + net/802/fddi.c | 8 +- net/802/hippi.c | 14 +- net/802/tr.c | 24 +- net/8021q/vlan.c | 26 +- net/8021q/vlan.h | 6 +- net/8021q/vlan_core.c | 2 - net/8021q/vlan_dev.c | 76 +- net/9p/client.c | 2 +- net/9p/trans_rdma.c | 2 - net/Kconfig | 7 +- net/Makefile | 4 +- net/appletalk/aarp.c | 3 +- net/appletalk/ddp.c | 5 +- net/appletalk/sysctl_net_atalk.c | 14 +- net/atm/atm_sysfs.c | 2 +- net/atm/br2684.c | 7 +- net/atm/clip.c | 4 +- net/atm/common.h | 1 + net/atm/ioctl.c | 49 +- net/atm/lec.c | 60 +- net/atm/mpc.c | 40 +- net/atm/mpoa_caches.c | 18 +- net/atm/pvc.c | 3 + net/atm/resources.c | 88 +- net/atm/resources.h | 2 +- net/atm/svc.c | 19 + net/ax25/af_ax25.c | 2 +- net/ax25/ax25_in.c | 41 +- net/ax25/ax25_route.c | 2 +- net/ax25/sysctl_net_ax25.c | 58 +- net/bluetooth/af_bluetooth.c | 50 +- net/bluetooth/bnep/bnep.h | 2 +- net/bluetooth/bnep/core.c | 8 +- net/bluetooth/bnep/netdev.c | 11 +- net/bluetooth/bnep/sock.c | 5 - net/bluetooth/cmtp/capi.c | 5 - net/bluetooth/cmtp/core.c | 5 - net/bluetooth/cmtp/sock.c | 5 - net/bluetooth/hci_conn.c | 5 - net/bluetooth/hci_core.c | 11 +- net/bluetooth/hci_event.c | 5 - net/bluetooth/hci_sock.c | 5 - net/bluetooth/hci_sysfs.c | 12 +- net/bluetooth/hidp/core.c | 5 - net/bluetooth/hidp/sock.c | 5 - net/bluetooth/l2cap.c | 5 - net/bluetooth/rfcomm/core.c | 7 - net/bluetooth/rfcomm/sock.c | 9 +- net/bluetooth/rfcomm/tty.c | 48 +- net/bluetooth/sco.c | 5 - net/bridge/br_device.c | 20 +- net/bridge/br_if.c | 4 +- net/bridge/br_netfilter.c | 13 +- net/bridge/br_sysfs_br.c | 2 +- net/bridge/netfilter/ebt_log.c | 18 +- net/bridge/netfilter/ebtable_broute.c | 26 +- net/bridge/netfilter/ebtable_filter.c | 41 +- net/bridge/netfilter/ebtable_nat.c | 38 +- net/bridge/netfilter/ebtables.c | 52 +- net/can/raw.c | 22 +- net/core/datagram.c | 5 +- net/core/dev.c | 466 +- net/core/dst.c | 6 +- net/core/ethtool.c | 53 +- net/core/fib_rules.c | 7 +- net/core/filter.c | 19 + net/core/flow.c | 6 +- net/core/gen_estimator.c | 97 +- net/core/neighbour.c | 73 +- net/core/net-sysfs.c | 15 +- net/core/net_namespace.c | 2 - net/core/netpoll.c | 20 +- net/core/pktgen.c | 42 +- net/core/rtnetlink.c | 15 +- net/core/scm.c | 10 +- net/core/skbuff.c | 277 +- net/core/sock.c | 46 +- net/core/sysctl_net_core.c | 68 +- net/dcb/Kconfig | 22 + net/dcb/Makefile | 1 + net/dcb/dcbnl.c | 1122 ++ net/dccp/ackvec.c | 9 +- net/dccp/ackvec.h | 5 +- net/dccp/ccid.c | 62 +- net/dccp/ccid.h | 26 +- net/dccp/ccids/ccid2.c | 6 +- net/dccp/dccp.h | 17 +- net/dccp/diag.c | 11 +- net/dccp/feat.c | 1458 ++- net/dccp/feat.h | 130 +- net/dccp/input.c | 44 +- net/dccp/ipv4.c | 13 +- net/dccp/ipv6.c | 15 +- net/dccp/minisocks.c | 54 +- net/dccp/options.c | 229 +- net/dccp/output.c | 19 +- net/dccp/probe.c | 19 +- net/dccp/proto.c | 224 +- net/dccp/sysctl.c | 21 - net/dccp/timer.c | 12 - net/decnet/af_decnet.c | 62 +- net/decnet/dn_dev.c | 22 +- net/decnet/dn_neigh.c | 18 +- net/decnet/dn_nsp_in.c | 28 +- net/decnet/dn_nsp_out.c | 23 +- net/decnet/dn_route.c | 29 +- net/decnet/dn_table.c | 2 +- net/decnet/sysctl_net_decnet.c | 48 +- net/dsa/mv88e6060.c | 6 +- net/dsa/mv88e6123_61_65.c | 4 +- net/dsa/mv88e6131.c | 4 +- net/dsa/mv88e6xxx.c | 2 +- net/dsa/slave.c | 2 +- net/dsa/tag_dsa.c | 1 - net/dsa/tag_edsa.c | 1 - net/dsa/tag_trailer.c | 1 - net/ethernet/eth.c | 19 +- net/ieee80211/Kconfig | 73 - net/ieee80211/Makefile | 12 - net/ieee80211/ieee80211_crypt.c | 206 - net/ieee80211/ieee80211_crypt_ccmp.c | 493 - net/ieee80211/ieee80211_crypt_tkip.c | 787 -- net/ieee80211/ieee80211_crypt_wep.c | 295 - net/ieee80211/ieee80211_module.c | 338 - net/ieee80211/ieee80211_rx.c | 1831 --- net/ieee80211/ieee80211_tx.c | 545 - net/ieee80211/ieee80211_wx.c | 760 -- net/ipv4/af_inet.c | 116 +- net/ipv4/ah4.c | 10 +- net/ipv4/arp.c | 36 +- net/ipv4/cipso_ipv4.c | 1 - net/ipv4/devinet.c | 19 +- net/ipv4/esp4.c | 8 +- net/ipv4/fib_frontend.c | 10 +- net/ipv4/fib_hash.c | 12 +- net/ipv4/fib_semantics.c | 8 +- net/ipv4/fib_trie.c | 6 +- net/ipv4/icmp.c | 39 +- net/ipv4/igmp.c | 95 +- net/ipv4/inet_connection_sock.c | 31 +- net/ipv4/inet_diag.c | 31 +- net/ipv4/inet_hashtables.c | 277 +- net/ipv4/inet_lro.c | 4 +- net/ipv4/inet_timewait_sock.c | 48 +- net/ipv4/inetpeer.c | 2 +- net/ipv4/ip_forward.c | 2 +- net/ipv4/ip_fragment.c | 21 +- net/ipv4/ip_gre.c | 58 +- net/ipv4/ip_input.c | 10 +- net/ipv4/ip_output.c | 24 +- net/ipv4/ip_sockglue.c | 72 +- net/ipv4/ipcomp.c | 10 +- net/ipv4/ipconfig.c | 40 +- net/ipv4/ipip.c | 37 +- net/ipv4/ipmr.c | 280 +- net/ipv4/netfilter.c | 7 +- net/ipv4/netfilter/arp_tables.c | 16 +- net/ipv4/netfilter/arptable_filter.c | 12 +- net/ipv4/netfilter/ip_tables.c | 12 +- net/ipv4/netfilter/ipt_CLUSTERIP.c | 9 +- net/ipv4/netfilter/ipt_LOG.c | 11 +- net/ipv4/netfilter/ipt_addrtype.c | 16 +- net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c | 27 +- net/ipv4/netfilter/nf_conntrack_proto_icmp.c | 4 +- net/ipv4/netfilter/nf_nat_h323.c | 58 +- net/ipv4/netfilter/nf_nat_irc.c | 4 +- net/ipv4/netfilter/nf_nat_rule.c | 27 +- net/ipv4/netfilter/nf_nat_sip.c | 18 +- net/ipv4/netfilter/nf_nat_snmp_basic.c | 9 +- net/ipv4/proc.c | 8 +- net/ipv4/raw.c | 10 +- net/ipv4/route.c | 227 +- net/ipv4/sysctl_net_ipv4.c | 188 +- net/ipv4/tcp.c | 130 +- net/ipv4/tcp_cubic.c | 120 +- net/ipv4/tcp_diag.c | 2 +- net/ipv4/tcp_input.c | 511 +- net/ipv4/tcp_ipv4.c | 137 +- net/ipv4/tcp_minisocks.c | 2 +- net/ipv4/tcp_output.c | 219 +- net/ipv4/tcp_probe.c | 7 +- net/ipv4/tcp_timer.c | 14 +- net/ipv4/tcp_yeah.c | 4 +- net/ipv4/udp.c | 271 +- net/ipv4/udp_impl.h | 4 +- net/ipv4/udplite.c | 14 +- net/ipv4/xfrm4_input.c | 4 +- net/ipv4/xfrm4_policy.c | 15 +- net/ipv4/xfrm4_state.c | 2 - net/ipv6/addrconf.c | 80 +- net/ipv6/addrlabel.c | 34 +- net/ipv6/af_inet6.c | 2 +- net/ipv6/ah6.c | 9 +- net/ipv6/anycast.c | 6 +- net/ipv6/datagram.c | 3 +- net/ipv6/esp6.c | 7 +- net/ipv6/exthdrs.c | 2 +- net/ipv6/icmp.c | 21 +- net/ipv6/inet6_connection_sock.c | 2 +- net/ipv6/inet6_hashtables.c | 182 +- net/ipv6/ip6_flowlabel.c | 8 +- net/ipv6/ip6_output.c | 5 +- net/ipv6/ip6_tunnel.c | 37 +- net/ipv6/ip6mr.c | 490 +- net/ipv6/ipcomp6.c | 10 +- net/ipv6/ipv6_sockglue.c | 34 +- net/ipv6/mcast.c | 41 +- net/ipv6/mip6.c | 3 +- net/ipv6/ndisc.c | 105 +- net/ipv6/netfilter.c | 7 +- net/ipv6/netfilter/ip6t_LOG.c | 11 +- net/ipv6/netfilter/ip6t_REJECT.c | 2 +- net/ipv6/netfilter/ip6table_filter.c | 17 +- net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c | 5 +- net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c | 2 +- net/ipv6/netfilter/nf_conntrack_reasm.c | 6 +- net/ipv6/raw.c | 3 +- net/ipv6/reassembly.c | 12 +- net/ipv6/route.c | 47 +- net/ipv6/sit.c | 35 +- net/ipv6/syncookies.c | 2 +- net/ipv6/sysctl_net_ipv6.c | 4 +- net/ipv6/tcp_ipv6.c | 28 +- net/ipv6/udp.c | 151 +- net/ipv6/udp_impl.h | 4 +- net/ipv6/udplite.c | 9 +- net/ipv6/xfrm6_input.c | 9 +- net/ipv6/xfrm6_policy.c | 22 +- net/ipv6/xfrm6_state.c | 2 - net/ipv6/xfrm6_tunnel.c | 33 +- net/ipx/sysctl_net_ipx.c | 2 +- net/irda/irlan/irlan_client.c | 4 +- net/irda/irlan/irlan_common.c | 2 +- net/irda/irlap_frame.c | 17 +- net/irda/irsysctl.c | 50 +- net/irda/irttp.c | 14 +- net/irda/timer.c | 2 +- net/iucv/af_iucv.c | 19 +- net/iucv/iucv.c | 161 +- net/key/af_key.c | 217 +- net/llc/af_llc.c | 1 - net/llc/llc_proc.c | 3 +- net/llc/sysctl_net_llc.c | 20 +- net/mac80211/Kconfig | 8 +- net/mac80211/Makefile | 2 + net/mac80211/cfg.c | 194 +- net/mac80211/debugfs.c | 12 +- net/mac80211/debugfs_key.c | 4 +- net/mac80211/debugfs_netdev.c | 117 +- net/mac80211/debugfs_sta.c | 84 +- net/mac80211/event.c | 5 +- net/mac80211/ht.c | 265 +- net/mac80211/ieee80211_i.h | 90 +- net/mac80211/iface.c | 54 +- net/mac80211/key.c | 10 +- net/mac80211/main.c | 284 +- net/mac80211/mesh.c | 4 +- net/mac80211/mesh.h | 5 +- net/mac80211/mesh_hwmp.c | 7 +- net/mac80211/mesh_plink.c | 49 +- net/mac80211/mlme.c | 606 +- net/mac80211/rate.c | 52 +- net/mac80211/rate.h | 11 +- net/mac80211/rc80211_minstrel.c | 109 +- net/mac80211/rc80211_minstrel.h | 2 + net/mac80211/rc80211_pid.h | 3 +- net/mac80211/rc80211_pid_algo.c | 38 +- net/mac80211/rc80211_pid_debugfs.c | 5 +- net/mac80211/rx.c | 174 +- net/mac80211/scan.c | 24 +- net/mac80211/sta_info.c | 37 +- net/mac80211/sta_info.h | 45 +- net/mac80211/tkip.c | 10 +- net/mac80211/tx.c | 462 +- net/mac80211/util.c | 107 +- net/mac80211/wep.c | 33 +- net/mac80211/wep.h | 2 +- net/mac80211/wext.c | 257 +- net/mac80211/wme.c | 32 +- net/mac80211/wpa.c | 32 +- net/netfilter/Kconfig | 5 +- net/netfilter/ipvs/ip_vs_conn.c | 20 +- net/netfilter/ipvs/ip_vs_core.c | 20 +- net/netfilter/ipvs/ip_vs_ctl.c | 82 +- net/netfilter/ipvs/ip_vs_dh.c | 34 +- net/netfilter/ipvs/ip_vs_ftp.c | 13 +- net/netfilter/ipvs/ip_vs_lblc.c | 69 +- net/netfilter/ipvs/ip_vs_lblcr.c | 96 +- net/netfilter/ipvs/ip_vs_lc.c | 3 - net/netfilter/ipvs/ip_vs_nq.c | 3 - net/netfilter/ipvs/ip_vs_proto.c | 38 +- net/netfilter/ipvs/ip_vs_proto_ah_esp.c | 10 +- net/netfilter/ipvs/ip_vs_proto_tcp.c | 8 +- net/netfilter/ipvs/ip_vs_proto_udp.c | 8 +- net/netfilter/ipvs/ip_vs_rr.c | 3 - net/netfilter/ipvs/ip_vs_sed.c | 3 - net/netfilter/ipvs/ip_vs_sh.c | 34 +- net/netfilter/ipvs/ip_vs_sync.c | 4 +- net/netfilter/ipvs/ip_vs_wlc.c | 3 - net/netfilter/ipvs/ip_vs_wrr.c | 3 - net/netfilter/ipvs/ip_vs_xmit.c | 34 +- net/netfilter/nf_conntrack_acct.c | 2 +- net/netfilter/nf_conntrack_amanda.c | 1 + net/netfilter/nf_conntrack_core.c | 61 +- net/netfilter/nf_conntrack_ecache.c | 14 +- net/netfilter/nf_conntrack_expect.c | 43 +- net/netfilter/nf_conntrack_ftp.c | 24 +- net/netfilter/nf_conntrack_h323_main.c | 13 +- net/netfilter/nf_conntrack_helper.c | 32 +- net/netfilter/nf_conntrack_irc.c | 14 +- net/netfilter/nf_conntrack_netbios_ns.c | 1 + net/netfilter/nf_conntrack_netlink.c | 201 +- net/netfilter/nf_conntrack_pptp.c | 1 + net/netfilter/nf_conntrack_proto_generic.c | 4 +- net/netfilter/nf_conntrack_proto_gre.c | 2 +- net/netfilter/nf_conntrack_proto_sctp.c | 30 +- net/netfilter/nf_conntrack_proto_tcp.c | 50 +- net/netfilter/nf_conntrack_proto_udp.c | 8 +- net/netfilter/nf_conntrack_proto_udplite.c | 4 +- net/netfilter/nf_conntrack_sane.c | 1 + net/netfilter/nf_conntrack_sip.c | 1 + net/netfilter/nf_conntrack_standalone.c | 16 +- net/netfilter/nf_conntrack_tftp.c | 1 + net/netfilter/nfnetlink_log.c | 9 +- net/netfilter/xt_NFLOG.c | 5 +- net/netfilter/xt_dccp.c | 16 +- net/netfilter/xt_hashlimit.c | 14 +- net/netfilter/xt_iprange.c | 36 +- net/netfilter/xt_owner.c | 16 +- net/netfilter/xt_recent.c | 32 +- net/netlabel/netlabel_addrlist.c | 4 +- net/netlabel/netlabel_mgmt.c | 1 - net/netlink/af_netlink.c | 7 + net/netlink/attr.c | 8 +- net/netrom/af_netrom.c | 4 +- net/netrom/sysctl_net_netrom.c | 48 +- net/packet/af_packet.c | 2 + net/phonet/af_phonet.c | 8 +- net/phonet/pep-gprs.c | 218 +- net/phonet/pep.c | 38 +- net/phonet/pn_dev.c | 6 +- net/phonet/socket.c | 13 +- net/phonet/sysctl.c | 4 +- net/rfkill/rfkill-input.c | 337 +- net/rfkill/rfkill-input.h | 3 + net/rfkill/rfkill.c | 183 +- net/rose/af_rose.c | 4 +- net/rose/sysctl_net_rose.c | 40 +- net/rxrpc/af_rxrpc.c | 4 +- net/rxrpc/ar-connection.c | 2 +- net/rxrpc/ar-connevent.c | 2 +- net/rxrpc/ar-error.c | 3 +- net/rxrpc/ar-key.c | 6 +- net/rxrpc/ar-local.c | 16 +- net/rxrpc/ar-peer.c | 8 +- net/rxrpc/ar-proc.c | 16 +- net/rxrpc/ar-security.c | 2 +- net/rxrpc/ar-transport.c | 12 +- net/rxrpc/rxkad.c | 2 +- net/sched/Kconfig | 22 + net/sched/Makefile | 2 + net/sched/act_api.c | 18 +- net/sched/act_gact.c | 4 +- net/sched/act_ipt.c | 4 +- net/sched/act_mirred.c | 4 +- net/sched/act_nat.c | 4 +- net/sched/act_pedit.c | 4 +- net/sched/act_police.c | 33 +- net/sched/act_simple.c | 4 +- net/sched/act_skbedit.c | 4 +- net/sched/cls_api.c | 3 +- net/sched/cls_basic.c | 2 +- net/sched/cls_cgroup.c | 288 + net/sched/cls_flow.c | 4 +- net/sched/cls_fw.c | 2 +- net/sched/cls_route.c | 2 +- net/sched/cls_tcindex.c | 6 - net/sched/cls_u32.c | 11 +- net/sched/ematch.c | 18 +- net/sched/sch_api.c | 50 +- net/sched/sch_atm.c | 36 +- net/sched/sch_blackhole.c | 1 + net/sched/sch_cbq.c | 76 +- net/sched/sch_drr.c | 519 + net/sched/sch_dsmark.c | 22 +- net/sched/sch_fifo.c | 4 +- net/sched/sch_generic.c | 40 +- net/sched/sch_gred.c | 22 +- net/sched/sch_hfsc.c | 64 +- net/sched/sch_htb.c | 171 +- net/sched/sch_multiq.c | 82 +- net/sched/sch_netem.c | 160 +- net/sched/sch_prio.c | 50 +- net/sched/sch_red.c | 33 +- net/sched/sch_sfq.c | 71 +- net/sched/sch_tbf.c | 44 +- net/sched/sch_teql.c | 19 +- net/sctp/ipv6.c | 35 +- net/sctp/protocol.c | 29 +- net/sctp/sm_statefuns.c | 24 +- net/sctp/socket.c | 206 +- net/sctp/sysctl.c | 82 +- net/socket.c | 6 +- net/sunrpc/auth.c | 14 +- net/sunrpc/clnt.c | 8 +- net/sunrpc/rpcb_clnt.c | 17 +- net/sunrpc/svcauth_unix.c | 24 +- net/sunrpc/svcsock.c | 6 +- net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | 4 +- net/sunrpc/xprtrdma/svc_rdma_sendto.c | 2 +- net/sunrpc/xprtrdma/svc_rdma_transport.c | 16 +- net/sunrpc/xprtrdma/transport.c | 14 +- net/sunrpc/xprtrdma/verbs.c | 16 +- net/sunrpc/xprtsock.c | 41 +- net/tipc/eth_media.c | 3 +- net/tipc/name_table.c | 2 +- net/unix/af_unix.c | 211 +- net/unix/garbage.c | 12 +- net/unix/sysctl_net_unix.c | 3 +- net/wanrouter/wanmain.c | 36 +- net/wireless/Kconfig | 30 + net/wireless/Makefile | 7 + net/wireless/core.c | 14 +- net/wireless/core.h | 13 + net/wireless/lib80211.c | 284 + net/wireless/lib80211_crypt_ccmp.c | 492 + net/wireless/lib80211_crypt_tkip.c | 784 ++ net/wireless/lib80211_crypt_wep.c | 296 + net/wireless/nl80211.c | 417 +- net/wireless/reg.c | 1005 ++- net/wireless/reg.h | 33 +- net/wireless/sysfs.c | 25 +- net/wireless/util.c | 19 + net/wireless/wext-compat.c | 139 + net/wireless/wext.c | 2 +- net/x25/sysctl_net_x25.c | 22 +- net/xfrm/Makefile | 4 +- net/xfrm/xfrm_input.c | 25 +- net/xfrm/xfrm_output.c | 18 +- net/xfrm/xfrm_policy.c | 511 +- net/xfrm/xfrm_proc.c | 26 +- net/xfrm/xfrm_state.c | 407 +- net/xfrm/xfrm_sysctl.c | 85 + net/xfrm/xfrm_user.c | 249 +- samples/tracepoints/tp-samples-trace.h | 4 +- samples/tracepoints/tracepoint-probe-sample.c | 1 + samples/tracepoints/tracepoint-probe-sample2.c | 1 + samples/tracepoints/tracepoint-sample.c | 3 + scripts/Kbuild.include | 22 +- scripts/Makefile.build | 79 +- scripts/Makefile.lib | 15 +- scripts/Makefile.modinst | 3 +- scripts/bootgraph.pl | 16 +- scripts/decodecode | 32 +- scripts/extract-ikconfig | 8 +- scripts/genksyms/genksyms.c | 277 +- scripts/genksyms/genksyms.h | 7 + scripts/genksyms/keywords.c_shipped | 189 +- scripts/genksyms/keywords.gperf | 2 + scripts/headerdep.pl | 193 + scripts/kallsyms.c | 21 +- scripts/kconfig/lxdialog/check-lxdialog.sh | 2 +- scripts/kernel-doc | 67 +- scripts/mkcompile_h | 6 +- scripts/mkmakefile | 4 +- scripts/mksysmap | 7 +- scripts/package/Makefile | 9 +- scripts/recordmcount.pl | 51 +- scripts/setlocalversion | 7 +- scripts/strip-symbols | 22 + scripts/tags.sh | 160 + scripts/trace/power.pl | 108 + scripts/tracing/draw_functrace.py | 130 + security/capability.c | 58 +- security/commoncap.c | 830 +- security/keys/internal.h | 49 +- security/keys/key.c | 25 +- security/keys/keyctl.c | 210 +- security/keys/keyring.c | 15 +- security/keys/permission.c | 29 +- security/keys/proc.c | 8 +- security/keys/process_keys.c | 469 +- security/keys/request_key.c | 135 +- security/keys/request_key_auth.c | 46 +- security/root_plug.c | 13 +- security/security.c | 103 +- security/selinux/avc.c | 4 +- security/selinux/exports.c | 8 +- security/selinux/hooks.c | 1258 ++- security/selinux/include/av_perm_to_string.h | 2 + security/selinux/include/av_permissions.h | 2 + security/selinux/include/class_to_string.h | 5 + security/selinux/include/flask.h | 1 + security/selinux/include/objsec.h | 11 - security/selinux/nlmsgtab.c | 3 + security/selinux/selinuxfs.c | 13 +- security/selinux/xfrm.c | 6 +- security/smack/smack_access.c | 4 +- security/smack/smack_lsm.c | 176 +- security/smack/smackfs.c | 26 +- sound/ac97_bus.c | 1 + sound/aoa/codecs/Makefile | 4 + sound/aoa/codecs/onyx.c | 1118 ++ sound/aoa/codecs/{snd-aoa-codec-onyx.h => onyx.h} | 0 sound/aoa/codecs/snd-aoa-codec-onyx.c | 1118 -- sound/aoa/codecs/snd-aoa-codec-tas.c | 1012 -- sound/aoa/codecs/snd-aoa-codec-toonie.c | 150 - ...aoa-codec-tas-basstreble.h => tas-basstreble.h} | 0 ...aoa-codec-tas-gain-table.h => tas-gain-table.h} | 0 sound/aoa/codecs/tas.c | 1012 ++ sound/aoa/codecs/{snd-aoa-codec-tas.h => tas.h} | 0 sound/aoa/codecs/toonie.c | 150 + sound/aoa/core/Makefile | 8 +- sound/aoa/core/alsa.c | 99 + sound/aoa/core/{snd-aoa-alsa.h => alsa.h} | 0 sound/aoa/core/core.c | 162 + sound/aoa/core/gpio-feature.c | 408 + sound/aoa/core/{snd-aoa-gpio-pmf.c => gpio-pmf.c} | 0 sound/aoa/core/snd-aoa-alsa.c | 99 - sound/aoa/core/snd-aoa-core.c | 162 - sound/aoa/core/snd-aoa-gpio-feature.c | 408 - sound/aoa/fabrics/Makefile | 2 + sound/aoa/fabrics/layout.c | 1120 ++ sound/aoa/fabrics/snd-aoa-fabric-layout.c | 1120 -- sound/aoa/soundbus/i2sbus/Makefile | 2 +- .../i2sbus/{i2sbus-control.c => control.c} | 0 sound/aoa/soundbus/i2sbus/core.c | 450 + sound/aoa/soundbus/i2sbus/i2sbus-core.c | 450 - sound/aoa/soundbus/i2sbus/i2sbus.h | 2 +- .../i2sbus/{i2sbus-interface.h => interface.h} | 0 sound/aoa/soundbus/i2sbus/{i2sbus-pcm.c => pcm.c} | 0 sound/core/Kconfig | 21 + sound/core/Makefile | 2 + sound/core/device.c | 4 +- sound/core/hrtimer.c | 155 + sound/core/info.c | 17 + sound/core/init.c | 71 +- sound/core/jack.c | 15 +- sound/core/rawmidi.c | 4 +- sound/core/rtctimer.c | 2 +- sound/core/seq/seq.c | 4 +- sound/core/timer.c | 2 +- sound/drivers/Kconfig | 2 +- sound/drivers/pcsp/pcsp.c | 8 +- sound/drivers/pcsp/pcsp.h | 3 + sound/drivers/pcsp/pcsp_lib.c | 168 +- sound/drivers/vx/vx_core.c | 2 +- sound/drivers/vx/vx_pcm.c | 2 +- sound/isa/sb/sb8.c | 4 +- sound/pci/Kconfig | 127 +- sound/pci/ac97/ac97_codec.c | 2 +- sound/pci/ac97/ac97_patch.c | 7 +- sound/pci/ca0106/ca0106.h | 30 +- sound/pci/ca0106/ca0106_main.c | 550 +- sound/pci/ca0106/ca0106_mixer.c | 263 +- sound/pci/cs46xx/cs46xx_lib.c | 5 +- sound/pci/cs5535audio/Makefile | 3 + sound/pci/cs5535audio/cs5535audio.c | 12 +- sound/pci/cs5535audio/cs5535audio.h | 39 + sound/pci/cs5535audio/cs5535audio_olpc.c | 179 + sound/pci/cs5535audio/cs5535audio_pcm.c | 15 + sound/pci/emu10k1/emu10k1_main.c | 494 +- sound/pci/emu10k1/emumixer.c | 46 + sound/pci/es1968.c | 2 +- sound/pci/hda/Kconfig | 188 + sound/pci/hda/Makefile | 75 +- sound/pci/hda/hda_beep.c | 2 + sound/pci/hda/hda_codec.c | 781 +- sound/pci/hda/hda_codec.h | 107 +- sound/pci/hda/hda_eld.c | 590 + sound/pci/hda/hda_generic.c | 21 +- sound/pci/hda/hda_hwdep.c | 234 +- sound/pci/hda/hda_intel.c | 348 +- sound/pci/hda/hda_local.h | 100 +- sound/pci/hda/hda_patch.h | 22 - sound/pci/hda/hda_proc.c | 91 +- sound/pci/hda/patch_analog.c | 132 +- sound/pci/hda/patch_atihdmi.c | 40 +- sound/pci/hda/patch_cmedia.c | 27 +- sound/pci/hda/patch_conexant.c | 39 +- sound/pci/hda/patch_intelhdmi.c | 711 ++ sound/pci/hda/patch_nvhdmi.c | 32 +- sound/pci/hda/patch_realtek.c | 1663 ++-- sound/pci/hda/patch_si3054.c | 35 +- sound/pci/hda/patch_sigmatel.c | 1321 ++- sound/pci/hda/patch_via.c | 171 +- sound/pci/ice1712/ice1724.c | 23 +- sound/pci/maestro3.c | 2 +- sound/pci/mixart/mixart.c | 4 +- sound/pci/mixart/mixart_core.c | 2 +- sound/pci/oxygen/oxygen.c | 4 + sound/pci/pcxhr/Makefile | 2 +- sound/pci/pcxhr/pcxhr.c | 558 +- sound/pci/pcxhr/pcxhr.h | 76 +- sound/pci/pcxhr/pcxhr_core.c | 293 +- sound/pci/pcxhr/pcxhr_core.h | 5 +- sound/pci/pcxhr/pcxhr_hwdep.c | 158 +- sound/pci/pcxhr/pcxhr_mix22.c | 820 ++ sound/pci/pcxhr/pcxhr_mix22.h | 56 + sound/pci/pcxhr/pcxhr_mixer.c | 556 +- sound/pci/riptide/riptide.c | 4 +- sound/pci/rme9652/hdsp.c | 4 +- sound/pci/rme9652/hdspm.c | 4 +- sound/pcmcia/pdaudiocf/pdaudiocf_irq.c | 2 +- sound/ppc/pmac.c | 2 +- sound/ppc/tumbler.c | 3 +- sound/soc/Kconfig | 13 +- sound/soc/Makefile | 12 +- sound/soc/at32/Kconfig | 34 - sound/soc/at32/Makefile | 11 - sound/soc/at32/at32-pcm.c | 492 - sound/soc/at32/at32-pcm.h | 79 - sound/soc/at32/at32-ssc.c | 849 -- sound/soc/at32/at32-ssc.h | 59 - sound/soc/at32/playpaq_wm8510.c | 513 - sound/soc/at91/Kconfig | 10 - sound/soc/at91/Makefile | 6 - sound/soc/at91/at91-pcm.c | 434 - sound/soc/at91/at91-pcm.h | 72 - sound/soc/at91/at91-ssc.c | 791 -- sound/soc/at91/at91-ssc.h | 27 - sound/soc/atmel/Kconfig | 43 + sound/soc/atmel/Makefile | 15 + sound/soc/atmel/atmel-pcm.c | 494 + sound/soc/atmel/atmel-pcm.h | 86 + sound/soc/atmel/atmel_ssc_dai.c | 790 ++ sound/soc/atmel/atmel_ssc_dai.h | 121 + sound/soc/atmel/playpaq_wm8510.c | 512 + sound/soc/atmel/sam9g20_wm8731.c | 328 + sound/soc/au1x/dbdma2.c | 3 +- sound/soc/au1x/psc-ac97.c | 16 +- sound/soc/au1x/psc-i2s.c | 18 +- sound/soc/au1x/sample-ac97.c | 4 +- sound/soc/blackfin/Kconfig | 22 +- sound/soc/blackfin/bf5xx-ac97-pcm.c | 113 +- sound/soc/blackfin/bf5xx-ac97.c | 178 +- sound/soc/blackfin/bf5xx-ac97.h | 35 +- sound/soc/blackfin/bf5xx-ad1980.c | 8 +- sound/soc/blackfin/bf5xx-ad73311.c | 10 +- sound/soc/blackfin/bf5xx-i2s-pcm.c | 12 + sound/soc/blackfin/bf5xx-i2s.c | 31 +- sound/soc/blackfin/bf5xx-sport.h | 2 +- sound/soc/blackfin/bf5xx-ssm2602.c | 14 +- sound/soc/codecs/Kconfig | 69 +- sound/soc/codecs/Makefile | 12 + sound/soc/codecs/ac97.c | 7 +- sound/soc/codecs/ad1980.c | 24 +- sound/soc/codecs/ad73311.c | 18 +- sound/soc/codecs/ak4535.c | 19 +- sound/soc/codecs/cs4270.c | 38 +- sound/soc/codecs/l3.c | 91 + sound/soc/codecs/pcm3008.c | 212 + sound/soc/codecs/pcm3008.h | 25 + sound/soc/codecs/ssm2602.c | 57 +- sound/soc/codecs/tlv320aic23.c | 262 +- sound/soc/codecs/tlv320aic26.c | 22 +- sound/soc/codecs/tlv320aic3x.c | 166 +- sound/soc/codecs/tlv320aic3x.h | 60 +- sound/soc/codecs/twl4030.c | 1317 +++ sound/soc/codecs/twl4030.h | 219 + sound/soc/codecs/uda134x.c | 668 ++ sound/soc/codecs/uda134x.h | 36 + sound/soc/codecs/uda1380.c | 29 +- sound/soc/codecs/wm8350.c | 1583 +++ sound/soc/codecs/wm8350.h | 20 + sound/soc/codecs/wm8510.c | 19 +- sound/soc/codecs/wm8580.c | 134 +- sound/soc/codecs/wm8580.h | 1 + sound/soc/codecs/wm8728.c | 585 + sound/soc/codecs/wm8728.h | 30 + sound/soc/codecs/wm8731.c | 25 +- sound/soc/codecs/wm8750.c | 19 +- sound/soc/codecs/wm8753.c | 39 +- sound/soc/codecs/wm8900.c | 262 +- sound/soc/codecs/wm8900.h | 6 - sound/soc/codecs/wm8903.c | 268 +- sound/soc/codecs/wm8903.h | 5 - sound/soc/codecs/wm8971.c | 19 +- sound/soc/codecs/wm8990.c | 43 +- sound/soc/codecs/wm8990.h | 4 +- sound/soc/codecs/wm9712.c | 12 +- sound/soc/codecs/wm9713.c | 46 +- sound/soc/davinci/Kconfig | 10 + sound/soc/davinci/Makefile | 2 + sound/soc/davinci/davinci-evm.c | 14 +- sound/soc/davinci/davinci-i2s.c | 257 +- sound/soc/davinci/davinci-pcm.c | 30 +- sound/soc/davinci/davinci-sffsdr.c | 157 + sound/soc/fsl/Kconfig | 2 +- sound/soc/fsl/fsl_dma.c | 14 +- sound/soc/fsl/fsl_ssi.c | 24 +- sound/soc/fsl/mpc5200_psc_i2s.c | 22 +- sound/soc/fsl/mpc8610_hpcd.c | 8 +- sound/soc/fsl/soc-of-simple.c | 12 +- sound/soc/omap/Kconfig | 35 +- sound/soc/omap/Makefile | 8 + sound/soc/omap/n810.c | 10 +- sound/soc/omap/omap-mcbsp.c | 61 +- sound/soc/omap/omap-pcm.c | 14 +- sound/soc/omap/omap2evm.c | 151 + sound/soc/omap/omap3beagle.c | 149 + sound/soc/omap/omap3pandora.c | 311 + sound/soc/omap/osk5912.c | 10 +- sound/soc/omap/overo.c | 148 + sound/soc/omap/sdp3430.c | 152 + sound/soc/pxa/Kconfig | 22 + sound/soc/pxa/Makefile | 6 + sound/soc/pxa/corgi.c | 12 +- sound/soc/pxa/e800_wm9712.c | 8 +- sound/soc/pxa/em-x270.c | 7 +- sound/soc/pxa/palm27x.c | 269 + sound/soc/pxa/poodle.c | 6 +- sound/soc/pxa/pxa-ssp.c | 931 ++ sound/soc/pxa/pxa-ssp.h | 47 + sound/soc/pxa/pxa2xx-ac97.c | 33 +- sound/soc/pxa/pxa2xx-i2s.c | 35 +- sound/soc/pxa/pxa2xx-pcm.c | 14 +- sound/soc/pxa/spitz.c | 6 +- sound/soc/pxa/tosa.c | 38 +- sound/soc/pxa/zylonite.c | 219 + sound/soc/s3c24xx/Kconfig | 5 + sound/soc/s3c24xx/Makefile | 2 + sound/soc/s3c24xx/ln2440sbc_alc650.c | 8 +- sound/soc/s3c24xx/neo1973_wm8753.c | 9 +- sound/soc/s3c24xx/s3c2412-i2s.c | 38 +- sound/soc/s3c24xx/s3c2443-ac97.c | 30 +- sound/soc/s3c24xx/s3c24xx-i2s.c | 35 +- sound/soc/s3c24xx/s3c24xx-pcm.c | 12 + sound/soc/s3c24xx/s3c24xx_uda134x.c | 373 + sound/soc/s3c24xx/smdk2443_wm9710.c | 8 +- sound/soc/sh/dma-sh7760.c | 12 + sound/soc/sh/hac.c | 19 +- sound/soc/sh/sh7760-ac97.c | 6 +- sound/soc/sh/ssi.c | 30 +- sound/soc/soc-core.c | 840 +- sound/soc/soc-dapm.c | 82 +- sound/sound_core.c | 1 + sound/usb/caiaq/caiaq-control.c | 73 +- sound/usb/caiaq/caiaq-device.c | 2 +- sound/usb/usbmidi.c | 2 +- sound/usb/usx2y/usb_stream.c | 3 +- usr/gen_init_cpio.c | 28 +- 2920 files changed, 188662 insertions(+), 126063 deletions(-) delete mode 100644 Documentation/DocBook/wanbook.tmpl create mode 100644 Documentation/RCU/rculist_nulls.txt create mode 100644 Documentation/controllers/cpuacct.txt create mode 100644 Documentation/credentials.txt delete mode 100644 Documentation/sh/kgdb.txt create mode 100644 Documentation/sound/alsa/HD-Audio-Models.txt create mode 100644 Documentation/sound/alsa/HD-Audio.txt create mode 100644 arch/arm/mach-pxa/include/mach/palmasoc.h create mode 100644 arch/powerpc/boot/dts/mpc8572ds_camp_core0.dts create mode 100644 arch/powerpc/boot/dts/mpc8572ds_camp_core1.dts create mode 100644 arch/powerpc/kernel/ppc_save_regs.S create mode 100644 arch/powerpc/math-emu/math_efp.c delete mode 100644 arch/powerpc/mm/mmu_context_32.c delete mode 100644 arch/powerpc/mm/mmu_context_64.c create mode 100644 arch/powerpc/mm/mmu_context_hash32.c create mode 100644 arch/powerpc/mm/mmu_context_hash64.c create mode 100644 arch/powerpc/mm/mmu_context_nohash.c create mode 100644 arch/powerpc/mm/pgtable.c delete mode 100644 arch/powerpc/mm/tlb_32.c delete mode 100644 arch/powerpc/mm/tlb_64.c create mode 100644 arch/powerpc/mm/tlb_hash32.c create mode 100644 arch/powerpc/mm/tlb_hash64.c create mode 100644 arch/powerpc/mm/tlb_nohash.c create mode 100644 arch/powerpc/mm/tlb_nohash_low.S delete mode 100644 arch/powerpc/platforms/52xx/mpc52xx_pic.h create mode 100644 arch/powerpc/platforms/85xx/smp.c create mode 100644 arch/powerpc/platforms/86xx/gef_gpio.c create mode 100644 arch/powerpc/platforms/cell/qpace_setup.c delete mode 100644 arch/powerpc/xmon/setjmp.S create mode 100644 arch/s390/include/asm/ftrace.h create mode 100644 arch/s390/include/asm/vdso.h create mode 100644 arch/s390/kernel/mcount.S create mode 100644 arch/s390/kernel/processor.c create mode 100644 arch/s390/kernel/vdso.c create mode 100644 arch/s390/kernel/vdso32/Makefile create mode 100644 arch/s390/kernel/vdso32/clock_getres.S create mode 100644 arch/s390/kernel/vdso32/clock_gettime.S create mode 100644 arch/s390/kernel/vdso32/gettimeofday.S copy arch/{x86/vdso/vdso-note.S => s390/kernel/vdso32/note.S} (100%) create mode 100644 arch/s390/kernel/vdso32/vdso32.lds.S create mode 100644 arch/s390/kernel/vdso32/vdso32_wrapper.S create mode 100644 arch/s390/kernel/vdso64/Makefile create mode 100644 arch/s390/kernel/vdso64/clock_getres.S create mode 100644 arch/s390/kernel/vdso64/clock_gettime.S create mode 100644 arch/s390/kernel/vdso64/gettimeofday.S copy arch/{x86/vdso/vdso-note.S => s390/kernel/vdso64/note.S} (100%) create mode 100644 arch/s390/kernel/vdso64/vdso64.lds.S create mode 100644 arch/s390/kernel/vdso64/vdso64_wrapper.S delete mode 100644 arch/sh/boards/board-rsk7203.c delete mode 100644 arch/sh/boards/mach-cayman/led.c create mode 100644 arch/sh/boards/mach-microdev/fdc37c93xapm.c delete mode 100644 arch/sh/boards/mach-microdev/led.c create mode 100644 arch/sh/boards/mach-rsk/Kconfig create mode 100644 arch/sh/boards/mach-rsk/Makefile create mode 100644 arch/sh/boards/mach-rsk/devices-rsk7203.c create mode 100644 arch/sh/boards/mach-rsk/setup.c delete mode 100644 arch/sh/boards/mach-se/7343/io.c create mode 100644 arch/sh/configs/edosk7705_defconfig create mode 100644 arch/sh/configs/rsk7201_defconfig delete mode 100644 arch/sh/configs/rts7751r2dplus_qemu_defconfig delete mode 100644 arch/sh/drivers/dma/dma-isa.c delete mode 100644 arch/sh/include/asm/bitops-irq.h create mode 100644 arch/sh/include/asm/bitops-op32.h create mode 100644 arch/sh/include/asm/mutex-llsc.h delete mode 100644 arch/sh/include/asm/pm.h create mode 100644 arch/sh/include/asm/unaligned-sh4a.h create mode 100644 arch/sh/include/mach-se/mach/mrshpc.h delete mode 100644 arch/sh/kernel/cf-enabler.c create mode 100644 arch/sh/kernel/cpu/sh2a/clock-sh7201.c create mode 100644 arch/sh/kernel/cpu/sh2a/setup-sh7201.c create mode 100644 arch/sh/kernel/disassemble.c create mode 100644 arch/sh/kernel/ftrace.c create mode 100644 arch/sh/kernel/idle.c create mode 100644 arch/sh/kernel/kgdb.c delete mode 100644 arch/sh/kernel/kgdb_jmp.S delete mode 100644 arch/sh/kernel/kgdb_stub.c delete mode 100644 arch/sh/kernel/pm.c create mode 100644 arch/sh/lib/ashiftrt.S copy arch/{mips => sh}/lib/ashldi3.c (100%) create mode 100644 arch/sh/lib/ashlsi3.S copy arch/{mips => sh}/lib/ashrdi3.c (100%) create mode 100644 arch/sh/lib/ashrsi3.S copy arch/{mips => sh}/lib/libgcc.h (100%) copy arch/{mips => sh}/lib/lshrdi3.c (100%) create mode 100644 arch/sh/lib/lshrsi3.S create mode 100644 arch/sh/lib/mcount.S create mode 100644 arch/sh/lib/movmem.S create mode 100644 arch/sh/lib/udiv_qrnnd.S create mode 100644 arch/sh/lib/udivsi3.S create mode 100644 arch/sh/lib/udivsi3_i4i-Os.S create mode 100644 arch/sh/lib/udivsi3_i4i.S create mode 100644 arch/sh/lib64/memcpy.S delete mode 100644 arch/sh/lib64/memcpy.c create mode 100644 arch/sh/lib64/memset.S create mode 100644 arch/sh/lib64/sdivsi3.S create mode 100644 arch/sh/lib64/strcpy.S create mode 100644 arch/sh/lib64/strlen.S create mode 100644 arch/sh/lib64/udivdi3.S create mode 100644 arch/sh/lib64/udivsi3.S create mode 100644 arch/sh/mm/asids-debugfs.c create mode 100644 arch/sh/oprofile/backtrace.c create mode 100644 arch/sh/oprofile/common.c create mode 100644 arch/sh/oprofile/op_impl.h delete mode 100644 arch/sh/oprofile/op_model_null.c create mode 100644 arch/x86/include/asm/hypervisor.h create mode 100644 arch/x86/include/asm/mach-generic/mach_wakecpu.h create mode 100644 arch/x86/include/asm/sigframe.h create mode 100644 arch/x86/include/asm/vmware.h create mode 100644 arch/x86/kernel/check.c create mode 100644 arch/x86/kernel/cpu/hypervisor.c create mode 100644 arch/x86/kernel/cpu/vmware.c create mode 100644 arch/x86/kernel/dumpstack.c create mode 100644 arch/x86/kernel/dumpstack.h delete mode 100644 arch/x86/kernel/sigframe.h create mode 100644 arch/x86/kernel/signal.c delete mode 100644 arch/x86/kernel/signal_32.c delete mode 100644 arch/x86/kernel/signal_64.c create mode 100644 arch/x86/scripts/strip-symbols create mode 100644 crypto/shash.c create mode 100644 drivers/atm/solos-pci.c delete mode 100644 drivers/bluetooth/hci_usb.c delete mode 100644 drivers/bluetooth/hci_usb.h create mode 100644 drivers/char/hvc_iucv.c create mode 100644 drivers/char/hvc_udbg.c create mode 100644 drivers/net/arm/ks8695net.c create mode 100644 drivers/net/arm/ks8695net.h create mode 100644 drivers/net/bonding/bond_ipv6.c delete mode 100644 drivers/net/eepro100.c create mode 100644 drivers/net/ixgbe/ixgbe_dcb.c create mode 100644 drivers/net/ixgbe/ixgbe_dcb.h create mode 100644 drivers/net/ixgbe/ixgbe_dcb_82598.c create mode 100644 drivers/net/ixgbe/ixgbe_dcb_82598.h create mode 100644 drivers/net/ixgbe/ixgbe_dcb_nl.c create mode 100644 drivers/net/phy/et1011c.c create mode 100644 drivers/net/phy/mdio-gpio.c delete mode 100644 drivers/net/phy/mdio-ofgpio.c create mode 100644 drivers/net/phy/national.c create mode 100644 drivers/net/phy/ste10Xp.c create mode 100644 drivers/net/sfc/falcon_gmac.c create mode 100644 drivers/net/sfc/mtd.c create mode 100644 drivers/net/smsc911x.c create mode 100644 drivers/net/smsc911x.h create mode 100644 drivers/net/smsc9420.c create mode 100644 drivers/net/smsc9420.h create mode 100644 drivers/net/wan/hd64570.c create mode 100644 drivers/net/wan/hd64572.c delete mode 100644 drivers/net/wan/hd6457x.c create mode 100644 drivers/net/wan/ixp4xx_hss.c delete mode 100644 drivers/net/wan/syncppp.c delete mode 100644 drivers/net/wireless/airport.c create mode 100644 drivers/net/wireless/ath9k/ani.c create mode 100644 drivers/net/wireless/ath9k/calib.c delete mode 100644 drivers/net/wireless/ath9k/core.c create mode 100644 drivers/net/wireless/ath9k/debug.c create mode 100644 drivers/net/wireless/ath9k/eeprom.c create mode 100644 drivers/net/wireless/ath9k/mac.c delete mode 100644 drivers/net/wireless/ipw2100.c delete mode 100644 drivers/net/wireless/ipw2200.c delete mode 100644 drivers/net/wireless/ipw2200.h create mode 100644 drivers/net/wireless/ipw2x00/Kconfig create mode 100644 drivers/net/wireless/ipw2x00/Makefile create mode 100644 drivers/net/wireless/ipw2x00/ipw2100.c rename drivers/net/wireless/{ => ipw2x00}/ipw2100.h (100%) create mode 100644 drivers/net/wireless/ipw2x00/ipw2200.c create mode 100644 drivers/net/wireless/ipw2x00/ipw2200.h rename net/ieee80211/ieee80211_geo.c => drivers/net/wireless/ipw2x00/libipw_geo.c (100%) create mode 100644 drivers/net/wireless/ipw2x00/libipw_module.c create mode 100644 drivers/net/wireless/ipw2x00/libipw_rx.c create mode 100644 drivers/net/wireless/ipw2x00/libipw_tx.c create mode 100644 drivers/net/wireless/ipw2x00/libipw_wx.c create mode 100644 drivers/net/wireless/iwlwifi/iwl-agn-hcmd-check.c create mode 100644 drivers/net/wireless/iwlwifi/iwl-spectrum.c delete mode 100644 drivers/net/wireless/orinoco.c delete mode 100644 drivers/net/wireless/orinoco.h create mode 100644 drivers/net/wireless/orinoco/Makefile create mode 100644 drivers/net/wireless/orinoco/airport.c rename drivers/net/wireless/{ => orinoco}/hermes.c (100%) rename drivers/net/wireless/{ => orinoco}/hermes.h (100%) rename drivers/net/wireless/{ => orinoco}/hermes_dld.c (100%) rename drivers/net/wireless/{ => orinoco}/hermes_dld.h (100%) rename drivers/net/wireless/{ => orinoco}/hermes_rid.h (100%) create mode 100644 drivers/net/wireless/orinoco/orinoco.c create mode 100644 drivers/net/wireless/orinoco/orinoco.h create mode 100644 drivers/net/wireless/orinoco/orinoco_cs.c rename drivers/net/wireless/{ => orinoco}/orinoco_nortel.c (100%) rename drivers/net/wireless/{ => orinoco}/orinoco_pci.c (100%) rename drivers/net/wireless/{ => orinoco}/orinoco_pci.h (100%) rename drivers/net/wireless/{ => orinoco}/orinoco_plx.c (100%) rename drivers/net/wireless/{ => orinoco}/orinoco_tmd.c (100%) create mode 100644 drivers/net/wireless/orinoco/spectrum_cs.c delete mode 100644 drivers/net/wireless/orinoco_cs.c delete mode 100644 drivers/net/wireless/rtl8180_dev.c delete mode 100644 drivers/net/wireless/rtl8180_rtl8225.c delete mode 100644 drivers/net/wireless/rtl8187.h delete mode 100644 drivers/net/wireless/rtl8187_dev.c delete mode 100644 drivers/net/wireless/rtl8187_rtl8225.c delete mode 100644 drivers/net/wireless/rtl818x.h create mode 100644 drivers/net/wireless/rtl818x/Makefile rename drivers/net/wireless/{ => rtl818x}/rtl8180.h (100%) create mode 100644 drivers/net/wireless/rtl818x/rtl8180_dev.c rename drivers/net/wireless/{ => rtl818x}/rtl8180_grf5101.c (100%) rename drivers/net/wireless/{ => rtl818x}/rtl8180_grf5101.h (100%) rename drivers/net/wireless/{ => rtl818x}/rtl8180_max2820.c (100%) rename drivers/net/wireless/{ => rtl818x}/rtl8180_max2820.h (100%) create mode 100644 drivers/net/wireless/rtl818x/rtl8180_rtl8225.c rename drivers/net/wireless/{ => rtl818x}/rtl8180_rtl8225.h (100%) rename drivers/net/wireless/{ => rtl818x}/rtl8180_sa2400.c (100%) rename drivers/net/wireless/{ => rtl818x}/rtl8180_sa2400.h (100%) create mode 100644 drivers/net/wireless/rtl818x/rtl8187.h create mode 100644 drivers/net/wireless/rtl818x/rtl8187_dev.c create mode 100644 drivers/net/wireless/rtl818x/rtl8187_rtl8225.c rename drivers/net/wireless/{ => rtl818x}/rtl8187_rtl8225.h (100%) create mode 100644 drivers/net/wireless/rtl818x/rtl818x.h delete mode 100644 drivers/net/wireless/spectrum_cs.c create mode 100644 drivers/usb/gadget/f_phonet.c create mode 100644 drivers/usb/gadget/u_phonet.h create mode 100644 firmware/cxgb3/t3b_psram-1.1.0.bin.ihex create mode 100644 firmware/cxgb3/t3c_psram-1.1.0.bin.ihex create mode 100644 firmware/cxgb3/t3fw-7.0.0.bin.ihex create mode 100644 include/keys/keyring-type.h create mode 100644 include/linux/dcbnl.h create mode 100644 include/linux/ftrace_irq.h delete mode 100644 include/linux/key-ui.h create mode 100644 include/linux/list_nulls.h create mode 100644 include/linux/mdio-gpio.h create mode 100644 include/linux/rculist_nulls.h create mode 100644 include/linux/smsc911x.h create mode 100644 include/net/dcbnl.h delete mode 100644 include/net/ieee80211_crypt.h create mode 100644 include/net/lib80211.h create mode 100644 include/net/netfilter/nfnetlink_log.h create mode 100644 include/net/netns/xfrm.h delete mode 100644 include/net/syncppp.h create mode 100644 include/sound/l3.h create mode 100644 include/sound/s3c24xx_uda134x.h create mode 100644 include/sound/soc-dai.h create mode 100644 include/sound/uda134x.h create mode 100644 include/trace/block.h create mode 100644 include/trace/boot.h create mode 100644 kernel/cred-internals.h create mode 100644 kernel/cred.c create mode 100644 kernel/trace/trace_branch.c create mode 100644 kernel/trace/trace_functions_graph.c create mode 100644 kernel/trace/trace_hw_branches.c create mode 100644 kernel/trace/trace_power.c create mode 100644 lib/is_single_threaded.c create mode 100644 net/dcb/Kconfig create mode 100644 net/dcb/Makefile create mode 100644 net/dcb/dcbnl.c delete mode 100644 net/ieee80211/Kconfig delete mode 100644 net/ieee80211/Makefile delete mode 100644 net/ieee80211/ieee80211_crypt.c delete mode 100644 net/ieee80211/ieee80211_crypt_ccmp.c delete mode 100644 net/ieee80211/ieee80211_crypt_tkip.c delete mode 100644 net/ieee80211/ieee80211_crypt_wep.c delete mode 100644 net/ieee80211/ieee80211_module.c delete mode 100644 net/ieee80211/ieee80211_rx.c delete mode 100644 net/ieee80211/ieee80211_tx.c delete mode 100644 net/ieee80211/ieee80211_wx.c create mode 100644 net/sched/cls_cgroup.c create mode 100644 net/sched/sch_drr.c create mode 100644 net/wireless/lib80211.c create mode 100644 net/wireless/lib80211_crypt_ccmp.c create mode 100644 net/wireless/lib80211_crypt_tkip.c create mode 100644 net/wireless/lib80211_crypt_wep.c create mode 100644 net/wireless/wext-compat.c create mode 100644 net/xfrm/xfrm_sysctl.c create mode 100755 scripts/headerdep.pl create mode 100644 scripts/strip-symbols create mode 100755 scripts/tags.sh create mode 100644 scripts/trace/power.pl create mode 100644 scripts/tracing/draw_functrace.py create mode 100644 sound/aoa/codecs/onyx.c rename sound/aoa/codecs/{snd-aoa-codec-onyx.h => onyx.h} (100%) delete mode 100644 sound/aoa/codecs/snd-aoa-codec-onyx.c delete mode 100644 sound/aoa/codecs/snd-aoa-codec-tas.c delete mode 100644 sound/aoa/codecs/snd-aoa-codec-toonie.c rename sound/aoa/codecs/{snd-aoa-codec-tas-basstreble.h => tas-basstreble.h} (100%) rename sound/aoa/codecs/{snd-aoa-codec-tas-gain-table.h => tas-gain-table.h} (100%) create mode 100644 sound/aoa/codecs/tas.c rename sound/aoa/codecs/{snd-aoa-codec-tas.h => tas.h} (100%) create mode 100644 sound/aoa/codecs/toonie.c create mode 100644 sound/aoa/core/alsa.c rename sound/aoa/core/{snd-aoa-alsa.h => alsa.h} (100%) create mode 100644 sound/aoa/core/core.c create mode 100644 sound/aoa/core/gpio-feature.c rename sound/aoa/core/{snd-aoa-gpio-pmf.c => gpio-pmf.c} (100%) delete mode 100644 sound/aoa/core/snd-aoa-alsa.c delete mode 100644 sound/aoa/core/snd-aoa-core.c delete mode 100644 sound/aoa/core/snd-aoa-gpio-feature.c create mode 100644 sound/aoa/fabrics/layout.c delete mode 100644 sound/aoa/fabrics/snd-aoa-fabric-layout.c rename sound/aoa/soundbus/i2sbus/{i2sbus-control.c => control.c} (100%) create mode 100644 sound/aoa/soundbus/i2sbus/core.c delete mode 100644 sound/aoa/soundbus/i2sbus/i2sbus-core.c rename sound/aoa/soundbus/i2sbus/{i2sbus-interface.h => interface.h} (100%) rename sound/aoa/soundbus/i2sbus/{i2sbus-pcm.c => pcm.c} (100%) create mode 100644 sound/core/hrtimer.c create mode 100644 sound/pci/cs5535audio/cs5535audio_olpc.c create mode 100644 sound/pci/hda/Kconfig create mode 100644 sound/pci/hda/hda_eld.c delete mode 100644 sound/pci/hda/hda_patch.h create mode 100644 sound/pci/hda/patch_intelhdmi.c create mode 100644 sound/pci/pcxhr/pcxhr_mix22.c create mode 100644 sound/pci/pcxhr/pcxhr_mix22.h delete mode 100644 sound/soc/at32/Kconfig delete mode 100644 sound/soc/at32/Makefile delete mode 100644 sound/soc/at32/at32-pcm.c delete mode 100644 sound/soc/at32/at32-pcm.h delete mode 100644 sound/soc/at32/at32-ssc.c delete mode 100644 sound/soc/at32/at32-ssc.h delete mode 100644 sound/soc/at32/playpaq_wm8510.c delete mode 100644 sound/soc/at91/Kconfig delete mode 100644 sound/soc/at91/Makefile delete mode 100644 sound/soc/at91/at91-pcm.c delete mode 100644 sound/soc/at91/at91-pcm.h delete mode 100644 sound/soc/at91/at91-ssc.c delete mode 100644 sound/soc/at91/at91-ssc.h create mode 100644 sound/soc/atmel/Kconfig create mode 100644 sound/soc/atmel/Makefile create mode 100644 sound/soc/atmel/atmel-pcm.c create mode 100644 sound/soc/atmel/atmel-pcm.h create mode 100644 sound/soc/atmel/atmel_ssc_dai.c create mode 100644 sound/soc/atmel/atmel_ssc_dai.h create mode 100644 sound/soc/atmel/playpaq_wm8510.c create mode 100644 sound/soc/atmel/sam9g20_wm8731.c create mode 100644 sound/soc/codecs/l3.c create mode 100644 sound/soc/codecs/pcm3008.c create mode 100644 sound/soc/codecs/pcm3008.h create mode 100644 sound/soc/codecs/twl4030.c create mode 100644 sound/soc/codecs/twl4030.h create mode 100644 sound/soc/codecs/uda134x.c create mode 100644 sound/soc/codecs/uda134x.h create mode 100644 sound/soc/codecs/wm8350.c create mode 100644 sound/soc/codecs/wm8350.h create mode 100644 sound/soc/codecs/wm8728.c create mode 100644 sound/soc/codecs/wm8728.h create mode 100644 sound/soc/davinci/davinci-sffsdr.c create mode 100644 sound/soc/omap/omap2evm.c create mode 100644 sound/soc/omap/omap3beagle.c create mode 100644 sound/soc/omap/omap3pandora.c create mode 100644 sound/soc/omap/overo.c create mode 100644 sound/soc/omap/sdp3430.c create mode 100644 sound/soc/pxa/palm27x.c create mode 100644 sound/soc/pxa/pxa-ssp.c create mode 100644 sound/soc/pxa/pxa-ssp.h create mode 100644 sound/soc/pxa/zylonite.c create mode 100644 sound/soc/s3c24xx/s3c24xx_uda134x.c hooks/post-receive -- XFS development tree From xfs-bounces@oss.sgi.com Sun Dec 28 22:55:28 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBT4tRg2011795 for ; Sun, 28 Dec 2008 22:55:27 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Subject: Your message to xfs awaits moderator approval From: xfs-bounces@oss.sgi.com To: xfs@oss.sgi.com Message-ID: Date: Sun, 28 Dec 2008 22:55:27 -0600 Precedence: bulk X-BeenThere: xfs@oss.sgi.com X-Mailman-Version: 2.1.9 List-Id: XFS Filesystem from SGI X-List-Administrivia: yes Sender: xfs-bounces@oss.sgi.com Errors-To: xfs-bounces@oss.sgi.com X-Virus-Scanned: ClamAV 0.91.2/8806/Sun Dec 28 21:00:01 2008 on oss.sgi.com X-Virus-Status: Clean Your mail to 'xfs' with the subject [XFS updates] XFS development tree branch, mainline, updated. v2.6.28-rc3-4786-g3c92ec8 Is being held until the list moderator can review it for approval. The reason it is being held: Message body is too big: 2294112 bytes with a limit of 500 KB Either the message will get posted to the list, or you will receive notification of the moderator's decision. If you would like to cancel this posting, please visit the following URL: http://oss.sgi.com/mailman/confirm/xfs/95fd50a56a65ab849daa70bf86d453b1aa448101 From lachlan@oss.sgi.com Sun Dec 28 22:56:22 2008 Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBT4uK78027667 for ; Sun, 28 Dec 2008 22:56:20 -0600 Received: (from lachlan@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mBT4tVqO011829; Sun, 28 Dec 2008 22:55:31 -0600 Date: Sun, 28 Dec 2008 22:55:31 -0600 Message-Id: <200812290455.mBT4tVqO011829@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-linus, updated. v2.6.28-rc3-4786-g3c92ec8 X-Git-Refname: refs/heads/for-linus X-Git-Reftype: branch X-Git-Oldrev: 3d44cc3e01ee1b40317f79ed54324e25c4f848df X-Git-Newrev: 3c92ec8ae91ecf59d88c798301833d7cf83f2179 X-Virus-Scanned: ClamAV 0.91.2/8806/Sun Dec 28 21:00:01 2008 on oss.sgi.com X-Virus-Status: Clean This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-linus has been updated 3c92ec8 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc c4c9f01 net: ehea NAPI interface cleanup fix bf66542 cifs: update for new IP4/6 address printing d05a788 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 96faec9 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next 2926328 Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-nvram 54d2f64 Merge branch 'next' into for-linus ca9153a powerpc/44x: Support 16K/64K base page sizes on 44x 6ca4f74 powerpc: Force memory size to be a multiple of PAGE_SIZE 541ef5c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k 0191b62 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 54a696b Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 1d248b2 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 1db2a5c Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 a39b863 Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip b0f4b28 Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip be9c5ae Merge branch 'x86-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip bb26c6c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 e14e61e Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 cb10ea5 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 81d6e59 Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 aa6eeee m68k: use the new byteorder headers 7f877eb fbcon: Protect free_irq() by MACH_IS_ATARI check 79f0c9a fbcon: remove broken mac vbl handler 646819e m68k: fix trigraph ignored warning in setox.S 3839d01 macfb annotations and compiler warning fix 746e8d3 m68k: mac baboon interrupt enable/disable 429dbf5 m68k: machw.h cleanup 4a97359 m68k: Mac via cleanup and commentry 40f7f9c m68k: Reinstate mac rtc eb56092 net: Allow dependancies of FDDI & Tokenring to be modular. 8d25332 igb: Fix build warning when DCA is disabled. 2d5451d net: Fix warning fallout from recent NAPI interface changes. 0da2afd gro: Fix potential use after free 8438134 sfc: If AN is enabled, always read speed/duplex from the AN advertising bits f4bd954 sfc: When disabling the NIC, close the device rather than unregistering it 307505e sfc: SFT9001: Add cable diagnostics 1796721 sfc: Add support for multiple PHY self-tests 2ef3068 sfc: Merge top-level functions for self-tests a5692e4 sfc: Clean up PHY mode management in loopback self-test caa8d8b sfc: Fix unreliable link detection in some loopback modes 6977dc6 sfc: Generate unique names for per-NIC workqueues e727149 802.3ad: use standard ethhdr instead of ad_header e4ac432 802.3ad: generalize out mac address initializer 7addeef 802.3ad: initialize ports LACPDU from const initializer 87f422f 802.3ad: remove typedef around ad_system 1624db7 802.3ad: turn ports is_individual into a bool f48127b 802.3ad: turn ports is_enabled into a bool d238d45 802.3ad: make ntt bool d3fa472 ixgbe: Fix set_ringparam in ixgbe to use the same memory pools. 7adf152 ixgbe: Fix NAPI enable/disable path when using DCB d7b0663 net: Init NAPI dev_list on napi_del 26bc19e igb: re-order queues to support cleaner use of ivar on 82576 0e014cb igb: defeature tx head writeback f2712fd ipsec: Remove useless ret variable fdb614c ucc_geth: Eliminate the need for forward references 9c54004 atm: Driver for Solos PCI ADSL2+ card. 236b87c gigaset: ifdef cleanup c8770dc gigaset: use pr_err() and pr_info() 4d8cd00 cxgb3: add control to access embedded images 6dd0148 drivers/net/wireless/prism54: fix sparse warnings: make symbols static a3d1fd2 drivers/net/wireless/ipw2x00: fix sparse warnings: make symbols static 11ab72a drivers/net/wireless/b43: fix sparse warnings: make symbols static bf512bc drivers/net/wireless/ath9k: fix sparse warnings: make symbols static 2ed5ba8 drivers/net/wireless: fix sparse warnings: make symbols static 62c5345 drivers/net/wan/z85230.c: fix sparse warnings: un-EXPORT symbols 7b3dfa1 drivers/net/wan: fix sparse warning: make symbol static d157e02 drivers/net/wan: fix sparse warnings: make do-while a compound statement ec1d1eb drivers/net/tulip: fix sparse warnings: make do-while a compound statement 27cd6ae drivers/net/tokenring: fix sparse warnings: make symbols static 409b204 drivers/net/skfp: fix sparse warnings: make symbols static 2f22d22 drivers/net/qlge: fix sparse warnings: make symbols static f8057b7 drivers/net/netxen: fix sparse warnings: use NULL pointer instead of plain integer e855aac drivers/net/ixgbe: fix sparse warnings: make symbols static 0e49e64 drivers/net/irda: fix sparse warnings: make symbols static 678c610 drivers/net/igb: remove dead code (function 'igb_read_pci_cfg') 5e4232e drivers/net/enic: fix sparse warning: make symbol static fa4c16d drivers/net/e1000e: fix sparse warnings: make symbols static af8eca5 drivers/net/cxgb3: comment out dead code b06715b drivers/net/bonding: fix sparse warnings: move decls to header file 9dc20f5 drivers/net/atlx: fix sparse warnings: make symbols static 888432f drivers/net/arcnet: fix sparse warnings: make symbols static dac499f drivers/net: fix sparse warnings: make symbols static a08b32d drivers/net: fix sparse warning: returning void-valued expression e4c3c13 drivers/net: fix sparse warnings: make do-while a compound statement 2705d4f drivers/net: fix sparse warning: use ANSI-style function declaration d76e56b ehea: use get_zeroed_page for alignment-sensitive allocation 359d67d [CIFS] Remove redundant test c6fbba0 [CIFS] make sure that DFS pathnames are properly formed ac6a3ef Remove an already-checked error condition in SendReceiveBlockingLock 698e96a Streamline SendReceiveBlockingLock: Use "goto out:" in an error condition 17c8bfe Streamline SendReceiveBlockingLock: Use "goto out:" in an error condition 2b2bdfb [CIFS] Streamline SendReceive[2] by using "goto out:" in an error condition 8e4f2e8 Slightly streamline SendReceive[2] 829049c Check the return value of cifs_sign_smb[2] 4c3130e [CIFS] Cleanup: Move the check for too large R/W requests 27a97a6 [CIFS] Slightly simplify wait_for_free_request(), remove an unnecessary "else" branch 8fbbd36 Simplify allocate_mid() slightly: Remove some unnecessary "else" branches 6d9c6d5 [CIFS] In SendReceive, move consistency check out of the mutexed region 00e485b cifs: store password in tcon 4e53a3f cifs: have calc_lanman_hash take more granular args 55162de cifs: zero out session password before freeing it 8570552 cifs: fix wait_for_response to time out sleeping processes correctly 8be0ed4 [CIFS] Can not mount with prefixpath if root directory of share is inaccessible 61e7480 [CIFS] various minor cleanups pointed out by checkpatch script 3de2091 [CIFS] fix typo acc18aa [CIFS] remove sparse warning 13a6e42 [CIFS] add mount option to send mandatory rather than advisory locks d5c5605 cifs: make ipv6_connect take a TCP_Server_Info arg bcf4b10 cifs: make ipv4_connect take a TCP_Server_Info arg 7586b76 cifs: don't declare smb_vol info on the stack 63c038c cifs: move allocation of new TCP_Server_Info into separate function 8ecaf67 cifs: account for IPv6 in ses->serverName and clean up netbios name handling 954d7a1 cifs: make dnotify thread experimental code 72ca545 cifs: convert tcpSem to a mutex 0468a2c cifs: take module reference when starting cifsd 8090902 cifs: display addr and prefixpath options in /proc/mounts 24b9b06 cifs: remove unused SMB session pointer from struct mid_q_entry 26c743b mlx4_en: Remove pauses module parameters. 60b9f9e mlx4_en: Removed Interrupt moderation module parameters c03ea21 mlx4_en: Removed redundant cq->armed flag 48374dd mlx4_en: Removed TX locking when polling TX cq b51968d mlx4_en: Memory leak on completion queue free e74b3f7 Merge branch 'for-david' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 13e620e myri10ge: update driver version to 1.4.4-1.395 e92df28 myri10ge: update firmware headers to 1.4.37 36994a0 forcedeth: don't poll NV event 36 88a44e5 net/appletalk: Remove redundant test c14ea0c drivers/net/wan: Remove redundant test 90f5dfc drivers/net: Remove redundant test 662f44a drivers/net/ehea: Remove redundant test b0fd0d2 drivers/net/au1000_eth.c: Remove redundant test c062076 qlge: ql_adapter_down() typo 619e803 netlink: fix (theoretical) overrun in message iteration 64ff3b9 tcp: Always set urgent pointer if it's beyond snd_nxt 8510b93 sctp: Add validity check for SCTP_PARTIAL_DELIVERY_POINT socket option 9fcb95a sctp: Avoid memory overflow while FWD-TSN chunk is received with bad stream ID aea3c5c sctp: Implement socket option SCTP_GET_ASSOC_NUMBER ea686a2 sctp: Fix a typo in socket.c e89c209 sctp: Bring SCTP_MAXSEG socket option into ietf API extension compliance 161c8d2 net: PHYLIB mdio fixes #2 f7d1b9f vlan: fix convertion to net_device_ops d452273 smsc911x: fix platform resource call during module unload dc26977 smsc911x: don't clobber driver_data 7091e72 netns: igmp: make /proc/net/{igmp,mcfilter} per netns b4ee07d netns: igmp: allow IPPROTO_IGMP sockets in netns cb5b04f smsc911x: make smsc911x_ethtool_ops constant 631b756 smsc911x: convert driver to use net_device_ops dd04519 smsc911x: fix BUG if module is removed while interface is up 4e20228 Merge branch 'sched/urgent'; commit 'v2.6.28' into sched/core cef7125 [S390] provide documentation for hvc_iucv kernel parameter. 2a7c6f2 [S390] convert ctcm printks to dev_xxx and pr_xxx macros. ecf39d4 [S390] convert zfcp printks to pr_xxx macros. 5466c2e [S390] convert vmlogrdr printks to pr_xxx macros. 17159dc6 [S390] convert zfcp dumper printks to pr_xxx macros. 395d31d [S390] convert cpu related printks to pr_xxx macros. 74eacdb [S390] convert qeth printks to dev_xxx and pr_xxx macros. b3ff088 [S390] convert sclp printks to pr_xxx macros. 8f7c502 [S390] convert iucv printks to dev_xxx and pr_xxx macros. 136f7a1 [S390] convert ap_bus printks to pr_xxx macros. 93098bf [S390] convert dcssblk and extmem printks messages to pr_xxx macros. 1519c0c [S390] convert monwriter printks to pr_xxx macros. c5612c1 [S390] convert s390 debug feature printks to pr_xxx macros. a4f5a29 [S390] convert monreader printks to pr_xxx macros. e7534b0 [S390] convert appldata printks to pr_xxx macros. 3b6ed4a [S390] convert setup printks to pr_xxx macros. f55495b [S390] convert hypfs printks to pr_xxx macros. feab650 [S390] convert time printks to pr_xxx macros. 39f0939 [S390] convert cpacf printks to pr_xxx macros. e6d5a42 [S390] convert cio printks to pr_xxx macros. 80a5c36 [S390] convert vmur printks to pr_xxx macros. 2f526e5 [S390] convert cpcmd printks to pr_xxx macros. c99fc5d [S390] convert lcs printks to dev_xxx and pr_xxx macros. 8988e58 [S390] convert vmcp printks to pr_xxx macros. d1c2f89 [S390] convert xpram printks to pr_xxx macros. acfa922 [S390] s390: Remove redundant test 0946100 [S390] s390/setup: set default preferred console device "ttyS" 21e7b2c [S390] drivers/s390/crypto: Move dereference to after IS_ERR test 33b1d09 [S390] panic_stack leak in smp_alloc_lowcore 4f7e90d [S390] clear_table inline assembly contraints c185b78 [S390] Remove config options. 349f1b6 [S390] cpu topology: remove dead code 2b1a61f [S390] cpu topology: introduce kernel parameter 9fee8db [S390] add new machine types to setup_hwcaps. c58d92b [S390] Remove initial kernel stack backchain initialization. 64253ac [S390] s390: use the new byteorder headers e37f50e [S390] Add processor type march=z10 and a processor type safety check. b3b59d3 [S390] sclp vt220: fix compile warning 2d6cd2a [S390] remove warnings with functions ending in BUG edd5378 [S390] mark disabled_wait as noreturn function d36f0c6 [S390] cio: use pim to check for multipath. f444cc0 [S390] cio: commit all pmcw changes. 13952ec [S390] cio: introduce cio_commit_config cdb912a [S390] cio: introduce cio_update_schib d6a3076 [S390] cio: Use device_is_registered(). 283fdd0 [S390] cio: Dont call ->release directly. 90ed2b6 [S390] cio: Dont fail probe for I/O subchannels. 5fb6b85 [S390] cio: Only register ccw_device for registered subchannel. 6eff208 [S390] cio: Fix I/O subchannel refcounting. 9cd6742 [S390] cio: Fix reference counting for online/offline. 97166f5 [S390] cio: Put referernce on correct device after moving. c619d42 [S390] cio: fix ccwgroup online vs. ungroup race condition 111e95a [S390] cio: move irritating comment. d7b6048 [S390] cio: update sac values 191fd44 [S390] cio: get rid of compile warning 547e3ce [S390] remove ptrace warning on 31 bit. 32272a2 [S390] __page_to_pfn warnings 91d5d45 [S390] iucv: Locking free version of iucv_message_(receive|send) 44a01d5 [S390] s390/hvc_console: z/VM IUCV hypervisor console support 5d360a7 [S390] ftrace: function tracer backend for s390 98df67b [S390] struct device - replace bus_id with dev_name(), dev_set_name() 0cd4bd4 [S390] dasd: call cleanup_cqr with request_queue_lock 50afd20 [S390] dasd: correct sense byte condition for SIM faf16aa [S390] dasd: Use accessors instead of using driver_data directly. 2bf373b [S390] dasd: improve dasd statistics proc interface bd43a42 [S390] zfcp: Report microcode level through service level interface 6bcac50 [S390] service level interface. 7a0b4cb [S390] qdio: fix error reporting for hipersockets 50f769d [S390] qdio: improve inbound buffer acknowledgement 22f9934 [S390] qdio: rework debug feature logging 9a1ce28 [S390] qdio: fix compile warning under 31 bit 23589d0 [S390] qdio: add eqbs/sqbs instruction counters bbd50e1 [S390] qdio: fix qeth port count detection 43c207e6 [S390] ap: Minor code beautification. cb17a63 [S390] zcrypt: Use of Thin Interrupts 320c04c [S390] Move stfle to header file. ca9fc75 [S390] convert s390 to generic IPI infrastructure 0b3016b [S390] serialize stp/etr work 750887d [S390] convert etr/stp to stop_machine interface b020632 [S390] introduce vdso on s390 fc5243d [S390] arch_setup_additional_pages arguments a114a9d [S390] vmcp: remove BKL f414f5f [S390] cpu topology: dont destroy cpu sets on topology change 8f2961c [S390] audit: get s390 ret_from_fork in sync with other architectures 5439050 [S390] cpu topology: fix cpu_core_map initialization 5250d32 Merge branches 'tracing/ftrace', 'tracing/hw-branch-tracing' and 'tracing/ring-buffer'; commit 'v2.6.28' into tracing/core 468a15b sched, trace: update trace_sched_wakeup() a3eeeef Merge branch 'x86/tsc' into tracing/core 79a66b9 Merge branches 'x86/pat2' and 'x86/fpu'; commit 'v2.6.28' into x86/core 1fcccb0 x86: traps.c replace #if CONFIG_X86_32 with #ifdef CONFIG_X86_32 5ce442f Merge branch 'topic/udev-id-rename' into to-push 60cda2b Merge branch 'topic/sound-core-fix' into to-push 9649745 Merge branch 'topic/snd-hrtimer' into to-push a9c3c7e Merge branch 'topic/pcxhr-update' into to-push cc49108 Merge branch 'topic/oxygen' into to-push a802269 Merge branch 'topic/jack-mechanical' into to-push a650562 Merge branch 'topic/hda' into to-push 313769d Merge branch 'topic/cs5535audio' into to-push 8afabfa Merge branch 'topic/convert-tasklet' into to-push 86b3aa3 Merge branch 'topic/ca0106' into to-push e4456e7 Merge branch 'topic/audigy-capture-boost' into to-push 5c8261e Merge branch 'topic/asoc' into to-push facef86 Merge branch 'topic/aoa' into to-push 0ca59dd tracing/ftrace: don't trace on early stage of a secondary cpu boot, v3 2a0d836 Merge branches 'cma', 'ehca', 'ipath', 'iser', 'mlx4' and 'nes' into for-next 7798dbf IB/mlx4: Set ownership bit correctly when copying CQEs during CQ resize e189062 RDMA/nes: Remove tx_free_list 81ea714 smackfs: check for allocation failures in smk_set_access() cbacc2c Merge branch 'next' into for-linus 0ee4a96 crypto: aes - Precompute tables ca38a81 crypto: talitos - Ack done interrupt in isr instead of tasklet bcf84a3 crypto: testmgr - Correct comment about deflate parameters f0d1ec3 crypto: salsa20 - Remove private wrappers around various operations ad79cdd crypto: des3_ede - permit weak keys unless REQ_WEAK_KEY set bd9d20d crypto: sha512 - Switch to shash f9e2bca crypto: sha512 - Move message schedule W[80] to static percpu area 19e2bf1 crypto: michael_mic - Switch to shash 4946510 crypto: wp512 - Switch to shash f63fbd3 crypto: tgr192 - Switch to shash 50e109b crypto: sha256 - Switch to shash 14b75ba crypto: md5 - Switch to shash 808a176 crypto: md4 - Switch to shash 54ccb36 crypto: sha1 - Switch to shash 3b8efb4 crypto: rmd320 - Switch to shash d8a5e2e crypto: rmd256 - Switch to shash e5835fb crypto: rmd160 - Switch to shash 7c4468b crypto: rmd128 - Switch to shash d35d245 crypto: null - Switch to shash 3751f40 crypto: hash - Make setkey optional b812eb0 crypto: testmgr - Validate output length in (de)compression tests dad3df2 crypto: remove uses of __constant_{endian} helpers 664134d crypto: testmgr - Fix error flow of test_comp 5f459f0 crypto: hifn_795x - Use softirq kernel mapping in bh context d6a10c8 crypto: hifn_795x - Fix queue management 3ec858d crypto: hifn_795x - Remove some unused cruft ed4f92e crypto: hifn_795x - Fix queue processing 5df4c0c crypto: hifn_795x - Fix request context corruption 3416158 crypto: hifn_795x - Don't copy src sg list 75741a0 crypto: hifn_795x - Fix DMA setup 09fbf7c crypto: ansi_cprng - fix inverted DT increment routine 9302735 libcrc32c: Select CRYPTO in Kconfig aa1a85d crypto: ansi_cprng - Avoid incorrect extra call to _get_more_prng_bytes 31a61bf crypto: md4 - Use ARRAY_SIZE 0426c16 libcrc32c: Add crc32c_le macro 53b146a libcrc32c: Fix "crc32c undefined" compilation error 69c35ef libcrc32c: Move implementation to crypto crc32c 8e3ee85 crypto: crc32c - Test descriptor context format b7e8bda crypto: crc32c-intel - Switch to shash faccc4b crypto: crc32c - Switch to shash 5f7082e crypto: hash - Export shash through hash 67cd080 crypto: api - Call type show function before legacy for proc dec8b78 crypto: hash - Add import/export interface 3b2f6df crypto: hash - Export shash through ahash 7b5a080b crypto: hash - Add shash interface 7b0bac6 crypto: api - Rebirth of crypto_alloc_tfm 4a77948 crypto: api - Move type exit function into crypto_tfm 2566578 crypto: ansi_cprng - Allow resetting of DT value 420a4b2 crypto: padlock - Avoid resetting cword on successive operations 1c06da8 crypto: crc32c-intel - Update copyright head 4b24ea9 crypto: talitos - Preempt overflow interrupts off-by-one fix 32bd78e crypto: camellia - use kernel-provided bitops, unaligned access d12d6b6 crypto: testmgr - Trigger a panic when self test fails in FIPS mode fe5720e crypto: talitos - Perform auth check in h/w if on sec 2.1 and above 1c2e881 crypto: talitos - Implement done interrupt mitigation 40405f1 crypto: talitos - Pass correct interrupt status to error handler a44b56c crypto: hifn - Disable driver when physical size exceeds 32 bits 4a6908a Linux 2.6.28 67be403 Revert "x86: disable X86_PTRACE_BTS" db8862e Merge branch 'linus' into tracing/hw-branch-tracing c20137f Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 1806f82 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2523659 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 1f5175a RDMA/cma: Add IPv6 support 38617c6 RDMA/addr: Add support for translating IPv6 addresses 7645c4b Merge branch 'fix/hda' into topic/hda 574f3c4 ALSA: hda - Add missing terminators in patch_sigmatel.c 40f15ad x86: disable X86_PTRACE_BTS c1c15b6 x86: PAT: fix address types in track_pfn_vma_new() 6332178 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 5289f46 parisc: disable UP-optimized flush_tlb_mm 8960223 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 d519c8d edac: fix edac core deadlock when removing a device 20ca9b3 cgroups: avoid accessing uninitialized data in failure path e368d3a cgroups: suppress bogus warning messages f00a189 w1: fix slave selection on big-endian systems cc6c2ca rtc: rtc-isl1208: reject invalid dates 98db8df ring-buffer: prevent false positive warning a8ccf1d ring-buffer: fix dangling commit race bed4f13 Merge branch 'x86/irq' into x86/core 3e5621e Merge branch 'x86/iommu' into x86/core be9a1d3 Merge branch 'x86/tsc' into x86/core 7e3cbc3 Merge branch 'x86/ptrace' into x86/tsc fa623d1 Merge branches 'x86/apic', 'x86/cleanups', 'x86/cpufeature', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/detect-hyper', 'x86/doc', 'x86/dumpstack', 'x86/early-printk', 'x86/fpu', 'x86/idle', 'x86/io', 'x86/memory-corruption-check', 'x86/microcode', 'x86/mm', 'x86/mtrr', 'x86/nmi-watchdog', 'x86/pat2', 'x86/pci-ioapic-boot-irq-quirks', 'x86/ptrace', 'x86/quirks', 'x86/reboot', 'x86/setup-memory', 'x86/signal', 'x86/sparse-fixes', 'x86/time', 'x86/uv' and 'x86/xen' into x86/core bf8bd66 Merge branch 'x86/apic' into x86/irq 1ccedb7 Merge commit 'v2.6.28-rc9' into x86/apic 231ffc9 V4L/DVB (9920): em28xx: fix NULL pointer dereference in call to VIDIOC_INT_RESET command 908a7a1 net: Remove unused netdev arg from some NAPI interfaces. f8f50b1 powerpc/32: Wire up the trampoline code for kdump ccdcef7 powerpc/32: Add the ability for a classic ppc kernel to be loaded at 32M 01695a9 powerpc/32: Allow __ioremap on RAM addresses for kdump kernel 6f29c32 powerpc/32: Setup OF properties for kdump 7375331 powerpc/32/kdump: Implement crash_setup_regs() using ppc_save_regs() 322b439 powerpc: Prepare xmon_save_regs for use with kdump 5be8554 powerpc: Remove default kexec/crash_kernel ops assignments 77733f8 powerpc: Make default kexec/crash_kernel ops implicit 2e8e4f5 powerpc: Setup OF properties for ppc32 kexec b906cfa powerpc/pseries: Fix cpu hotplug fad7b9b powerpc: Fix KVM build on ppc440 889bd9b net: startup race in hso driver 05a8c1c pkt_sched: Remove smp_wmb() in qdisc_watchdog() 4707470 r6040: bump release number to 0.19 3e7c469 r6040: save and restore MIER correctly in the interrupt routine 11e5e8f r6040: fix wrong logic in mdio code 5f2f6da net: Fix oops in dev_ifsioc() adf77ba x86: prioritize the FPU traps for the error code 077ebed drm/radeon: fix correctness of irq_enabled check for radeon. c47a75a Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 0099f77 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 9ecab6e drivers/ide/{cs5530.c,sc1200.c}: Move a dereference below a NULL test def434c powerpc/cell: add QPACE as a separate Cell platform e68558d powerpc/cell: fix build breakage with CONFIG_SPUFS disabled 2e85696 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 7ef5f41 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 472346d ALSA: ASoC: fix a typo in omp-pcm.c c691348 ASoC: Fix DSP formats in SSM2602 audio codec bd25867 ASoC: Fix incorrect DSP format in OMAP McBSP DAI and affected drivers f5eda57 mlx4_core: Delete incorrect comment b8dd786 mlx4_core: Add support for multiple completion event vectors 59de580 sh: oprofile: Fix up the module build. 7d91fcf sh: add UIO support for JPU on SH7722. b0c50ad serial: sh-sci: Fix up port pinmux for SH7366. 6f5cd2b sh: mach-rsk: Use uImage generation by default for rsk7201/7203. 2ea40de sh: mach-sh03: Fix up pata_platform build breakage. b5868e8 sh: enable deferred io LCDC on Migo-R 8564557 video: sh_mobile_lcdcfb deferred io support 37b4837 video: deferred io with physically contiguous memory 6e1038a video: deferred io cleanup 87884bd video: fix deferred io fsync() 0790555 sh: add LCDC interrupt configuration to AP325 and Migo-R 2540c11 sh_mobile_lcdc: use FB_SYS helpers instead of FB_CFB da9fdc8 sh: split coherent pages 78fb402 sh: dma: Kill off ISA DMA wrapper. 5d2685d sh: Conditionalize the code dumper on CONFIG_DUMP_CODE. fe58cac sh: Kill off the unused SH_ALPHANUMERIC debug option. 740a3e6 sh: Enable skipping of bss on debug platforms for sh32 also. 8a65505 doc: Update sh cpufreq documentation. 0146d78 sh: mrshpc_setup_windows() needs to be inline. 1f6fd5c serial: sh-sci: sci_poll_get_char() is only used by CONFIG_CONSOLE_POLL. 073da9c sh: Kill off cf-enabler with extreme prejudice. 8c197c3 sh: Add a simple edosk7705_defconfig for build testing. 866ef8f sh: mach-edosk7705: Fix up edosk7705 so it all builds again. 0ef0e6c sh: mach-microdev: Split out the fdc37c93xapm initialization code. 43eeb0f sh: mach-sh03: Use __set_io_port_base(), kill off special ioport_map(). 8db806e sh: mach-sh03: Move off of cf_enabler to pata_platform, as per landisk. 98a955d sh: board-shmin: Convert shmin to use __set_io_port_base(). 2125a46 sh: Kill off dead mv_init_pci() from machvec. 43f8f9b sh: Simplify kernel_thread_helper() for sh32. 7b80fb3 sh: Kill off mv_heartbeat() from the machvec. b94ea27 sh: Kill off the cayman and microdev special heartbeat code. ca0c14e44 sh: Kill off sh_bios_in_gdb_mode(). a9df1ed sh: export sh_bios_get_node_addr() symbol for stnic module. 8e32018 sh: Run sh_bios through a long overdue Lindent. d570164 serial: sh-sci: Generalize port pin initialization. d830fa4 serial: sh-sci: Tidy up fifo overrun error handling. 762c69e serial: sh-sci: pr_debug() -> dev_dbg() conversion. 027e687 serial: sh-sci: Fix up the cpufreq notifier to use the proper port clock. d9341b5 sh: oprofile: Convert op_model_sh7750 to new common interface. 40a8b42 sh: oprofile: Backtrace support. 60a51fb sh: oprofile: Refactor common setup code for multiple driver support. 70fe224 sh: Enable GENERIC_HARDIRQS_NO__DO_IRQ for all SuperH machines 1a94757 sh: Convert Cayman boards from hw_interrupt_type to irq_chip e85a477 sh: Convert Dreamcast support from hw_interrupt_type to irq_chip bd0a22d sh: Convert SystemH board support from hw_interrupt_type to irq_chip be729fd sh: Convert Microdev boards from hw_interrupt_type to irq_chip 180ae20 sh: Provide sdivsi3/udivsi3/udivdi3 for sh64, kill off libgcc linking. 209aa4f fb: SH-5 uses __raw I/O accessors now also, drop the special casing. 4466b20 sh: Add SH-5 optimized memcpy()/memset()/strcpy()/strlen(). 776d6c2 sh: Kill off remaining CONFIG_SH_KGDB bits. 07d2a1a serial: sh-sci: Implement CONSOLE_POLL support and kill off old kgdb console. ab6e570 sh: Generic kgdb stub support. d7b01f7 sh: Enable HAVE_ARCH_TRACEHOOK for all SH, now that SH-5 supports it too. dd76279 sh: Provide linux/regset.h interface for SH-5. 94e2fb3 sh: Provide asm/syscall.h for SH-5. 6ac0343 sh: Handle cases where setup{_rt,}_frame() fail on SH-5 signal delivery. f15b2dc sh: Fix up syscall_get_nr() comment in syscall_32.h. 35724a0 sh: Fix up the cpu_asid() return value on nommu. a99d6fd sh: Convert sh64 /proc/asids to debugfs and generic sh. 4d1f3bb sh: Kill off sh64's unused alloc/free_task_struct() definitions. 4eec883 sh: mach-migor: Kill off unused Migo-R machvec. 4545bfa sh: add ov772x reset delay on Migo-R a6bc25a sh: Drop the special qemu defconfig. bd40e81 sh: Delete unnecessary mov in the interrupt exception entry point. 06be372 sh: Fix an off-by-1 check in __mutex_fastpath_unlock(). a47925f sh: Update rsk701_defconfig to reflect mach-rsk changes. ff15b90 sh: Enable leds-gpio in rsk7203 defconfig. ea0aac1 sh: Consolidate rsk7203/7201 in to a new mach-rsk. b5cfeac sh: Provide ftrace_make_call()/ftrace_make_nop(). 4bc3e71 sh: Disable -Werror for arch/sh/oprofile/. 3b04122 sh: Add plain udivsi3 (not _i4*) for gcc-4.1 and lower. 1fdae0e Fix incorrect use of loose in c-checksum.c 77ba93a sh: Fix up the SH-4A mutex fastpath semantics. c6f17cb sh: allow CONFIG_CPU_IDLE af998a9 sh: allow CONFIG_PM 3e51762 sh: move the hp6xx pm code 0464518 sh: update se7343 defconfig 21c601b sh: remove ioport cruft and smc91x from se7343 5e5aacb sh: add isp1161 usb host device to se7343 6aacba7 sh: add st16c2550 devices to se7343 5727003 sh: fix number of interrupts on se7343 551ea2b sh: sh7343 scif configuration update 0c0daec sh: propagate r_clk 6feb348 sh: RSK+ 7201 board support. 2825999 sh: Add support for SH7201 CPU subtype. 135210b sh: Switch HD64461 from hw_interrupt_type to irq_chip 331ff10 sh: pci-sh7780: fix pci memory address mask 22f131a sh: Provide a dyn_arch_ftrace struct definition. 1da1180 sh: Split out the idle loop for reuse between _32/_64 variants. eb67cf1 sh: Consolidate cpu_relax()/cpu_sleep() definitions across _32/_64. f74c034 sh: do not latency trace idle. 75fd24c sh: Tidy up backtrace formatting with kallsyms disabled. 9cfc9a9 sh: Add a simple code dumper for SUPERH32 show_regs(). edfd6da sh: Add a few more branch types to the branch emulator. 5dd6147 sh: Re-add support for best fit ISA tuning if none is available. 624c6a6 sh: More movmem alias symbol exports for older compilers. 95b781c sh: Provide optimized unaligned loads on SH-4A. 716777d sh: P4 ioremap pass-through 0c91223 sh: Add SH-4A optimized fastpath mutex implementation. 5c72f30 sh: sh7760fb: Add support SH7720/SH7721 of Renesas 679dc3c sh: sh7760fb: Fix color pallette setting f617682 sh: add SH DMAC burst mode constant c2c5883 sh: fix DMAOR register access on SH7709 8085ac7 sh: Add platform-specific constants for SH7709 0d5bbe0 sh: Provide optimized non-atomic bitops for SH-2A. 8bcc5c1 sh: Add -m4al tuning for SH4AL-DSP. 9ef1002 sh: Add exports for __udivsi3/__sdivsi3 and the _i4 versions. 16b529d sh: Convert to generic bitops for IRQ-toggling implementation. 709420d sh: Specify sane default image targets for the SH-2 platforms. 1aad54a sh: Migrate necessary libgcc bits in to arch/sh/lib for SUPERH32. e9bf51e sh: __udivdi3 -> do_div() in softfloat lib. 00e825c sh: Fix clock framework compiler warnings. d643510 usb: Fix up sh_mobile usbf clock framework warnings. e7c98dc serial: sh-sci: Codestyle cleanup patch. af505b1 media: sh_mobile_ceu_camera: Add HAVE_CLK dependency. fad57fe sh: dynamic ftrace support. ef6aff6 sh: remove old sh_mobile mstpc clocks b51339f sh: sh_mobile lcdc clock framework support 765786e sh: sh_mobile usb clock framework support af5be79 sh: sh_mobile usbf clock framework support a42b6dd sh: sh_mobile ceu clock framework support 090d951 sh: sh_mobile keysc clock framework support a5616bd sh: sh_mobile i2c clock framework support f2eb010 sh: sh_mobile mstpcr clocks for sh7366 6e88d03 sh: sh_mobile mstpcr clocks for sh7343 f14c017 sh: sh_mobile mstpcr clocks for sh7723 ecf399b sh: sh_mobile mstpcr clocks for sh7722 7c7e02a sh: new sh_mobile mstpcr clocks base code 1dc7b77 sh: use arch_flags for sh_mobile mstpcr clock bits d902d04 sh: sh_mobile clock divider index fix d12cfac sh: enable and disable clocks recursively 4a4a9be sh: Move arch_get_unmapped_area() in to arch/sh/mm/mmap.c. ed2b03e MIPS: MIPS64R2: Fix buggy __arch_swab64 08d9d1c MIPS: Fix preprocessor warnings flaged by GCC 4.4 826e08b sched: fix warning in fs/proc/base.c d3d3170 tg3: Update version to 3.97 aa10f27 tg3: tg3.h cleanups 69fc405 tg3: Remove unused cfgspc device members 027455a tg3: Cleanup IPV6 LSO 2023276 tg3: WOL fixes 7f3ff4f pkt_sched: Annotate uninitialized var in sfq_enqueue() bfb8cc3 ixgbe: fix the display of DCB control stats in ethtool f4314e8 net: add DCNA attribute to the BCN interface for DCB 1486a61 net: fix DCB setstate to return success/failure c2da953 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 59f8500 Convert ixp4xx_eth driver to use net_device_ops. 4cb56b6 drivers/net/wan: Remove redundant test 93bc933 HDLC_PPP: Fix Configure-Ack to return original options as required by the standard. e6da96a IXP4xx: move common debugging from network drivers to QMGR module. 9251ce9 Update MAINTAINERS entries for IXP4xx and WAN network drivers. f5b89e4 WAN: Add IXP4xx HSS HDLC driver. 490b772 IXP4xx: Add ethtool support to Ethernet driver. 4954936 IXP4xx: Add PHYLIB MII ioctl to the Ethernet driver. 2098c18 IXP4xx: Add PHYLIB support to Ethernet driver. b4c7d3b IXP4xx: Make the Ethernet driver use built-in netdev stats. 3c36a83 IXP4xx: Silence section mismatch warning in Ethernet driver. ae2754a IXP4xx: clear IRQ stat in qmgr_disable_irq(). 3edcfb2 IXP4xx: check for queue being empty in qmgr_release_queue(). bba7ebb IB/iser: Avoid recv buffer exhaustion caused by unexpected PDUs 139cdab IB/ehca: Remove redundant test of vpage 418441d powerpc/mpc5200: fix error paths in PSC UART probe function aec739e powerpc/mpc5200: add rts/cts handling in PSC UART driver b651498 powerpc/mpc5200: Make PSC UART driver update serial errors counters e51f47a powerpc/mpc5200: Remove obsolete code from mpc5200 MDIO driver 6b61e69 powerpc/mpc5200: Add MDMA/UDMA support to MPC5200 ATA driver aaab5e8 powerpc/mpc5200: Disable bestcomm prefetching when ATA DMA enabled e4efe3c powerpc/mpc5200: Bestcomm fixes to ATA support 6228824 powerpc/mpc5200: Bugfix on handling variable sized buffer descriptors dd952cb powerpc/mpc5200: Make internal 5200 PIC the default interrupt controller bcb73f5 powerpc/mpc5200: Document and tidy irq driver a149535 powerpc: Fix missing 'blr' in _tlbia() 3ddeb91 ftrace: enable format arguments checking 49e6e3f powerpc/bootwrapper: Use the child-bus #address-cells to decide which range entry to use e14d774 powerpc: Const-qualify Device Node Argument to DCR Resource Extent API 9dce3ce powerpc/44x: 44x TLB doesn't need "Guarded" set for all pages 64b3d0e powerpc/mm: Rework usage of _PAGE_COHERENT/NO_CACHE/GUARDED 7752035 powerpc/mm: Runtime allocation of mmu context maps for nohash CPUs 760ec0e powerpc/44x: No need to mask MSR:CE, ME or DE in _tlbil_va on 440 2a4aca1 powerpc/mm: Split low level tlb invalidate for nohash processors f048aac powerpc/mm: Add SMP support to no-hash TLB handling 7c03d65 powerpc/mm: Introduce MMU features 2ca8cf7 powerpc/mm: Rework context management for CPUs with no hash table 5e69661 powerpc/mm: Split mmu_context handling 6d2170b powerpc/4xx: Extended DCR support v2 fecba96 powerpc: Add reboot notifier to Collaborative Memory Manager 2218108 powerpc: Disable Collaborative Memory Manager for kdump 5d84e4b powerpc/iseries: viodasd needs to depend on CONFIG_BLOCK 368c1e3 hvc_console: Escape magic sysrq key 532774e powerpc: Pass a valid token to rtas_call() in phyp-dump code 7a2eab0 powerpc: Protect against NULL pointer deref in phyp-dump code 8168b54 powerpc: Rename struct vm_region to avoid conflict with NOMMU 13ba3c0 powerpc: Convert sysfs cache code to of_find_next_cache_node() b2ea25b powerpc: Convert cpu_to_l2cache() to of_find_next_cache_node() e523f72 powerpc: Add of_find_next_cache_node() 7498209 of/gpio: Implement of_gpio_count() 7736a3d of: of_parse_phandles_with_args() learns to differentiate 'hole' cells c1bb7c6 of: Minor simplification for the of_parse_phandles_with_args() 74b7ff4 ALSA: hda: fix incorrect mixer index values for 92hd83xx f8ccbf6 ALSA: hda: dinput_mux check ebef7cf Merge branch 'topic/ca0106-spdif-stream' into topic/ca0106 6bcdbd5 Merge branch 'topic/ca0106-resume' into topic/ca0106 6a84364 Merge branch 'topic/ca0106-capture-no-44khz' into topic/ca0106 8326e32 Merge branch 'topic/hda-resume-fix' into topic/hda 55fa518 Merge branch 'topic/pcsp-fix' into topic/misc 69dfaef ALSA: hda - Add quirk for another HP dv7 a31501d ALSA: ASoC - Add missing __devexit annotation to wm8350.c d6f8339 ALSA: ASoc: DaVinci: davinci-evm use dsp_b mode 9e03162 ALSA: ASoC: DaVinci: i2s, evm, pass same value to codec and cpu_dai a24f4f6 ALSA: ASoC: tlv320aic3x add dsp_a 07d8d9d ALSA: ASoC: DaVinci: document I2S limitations 69ab820 ALSA: ASoC: DaVinci: davinci-i2s clean up 21903c1 ALSA: ASoC: DaVinci: davinci-i2s clean up 664b4af ALSA: ASoC: DaVinci: davinci-i2s add comments to explain polarity 1152a19 ALSA: ASoC: DaVinci: davinvi-evm, make requests explicit ff75427 ALSA: ca0106 - disable 44.1kHz capture 72077aa ALSA: ca0106 - Add missing card->private_data initialization 50232d6 ALSA: ca0106 - Check ac97 availability at PM c5dee61 x86, bts: memory accounting bf53de9 x86, bts: add fork and exit handling 67bac79 x86: PAT: pfnmap documentation update changes 34801ba x86: PAT: move track untrack pfnmap stubs to asm-generic 982d789 x86: PAT: remove follow_pfnmap_pte in favor of follow_phys d87fe66 x86: PAT: modify follow_phys to return phys_addr prot and return value 6bd9cd5 x86: PAT: clarify is_linear_pfn_mapping() interface 8403295 x86: ia32_signal: remove unnecessary declaration 34945ed x86: common.c boot_cpu_stack and boot_exception_stacks should be static 7419224 SELinux: don't check permissions for kernel mounts 12204e2 security: pass mount flags to security_sb_kern_mount() 459c19f SELinux: correctly detect proc filesystems of the form "proc/foo" 9bb4824 allow stripping of generated symbols under CONFIG_KALLSYMS_ALL ad7a953 kbuild: strip generated symbols from *.ko 37a8d9f kbuild: simplify use of genksyms 9cf7f24 b43: Add key memory dumping b929ecf b43: Suspend MAC while killing the radio fd6effc ath5k: correct packet length in tx descriptors 520eb82 mac80211: implement dynamic power save ce7c911 mac80211: track master queue status e0cb686 mac80211: enable IEEE80211_CONF_PS only when associated d10d0e5 b43: Fix some MAC locking 0e7690f iwlwifi: iwl-tx.c cleanup (remove unused parameter and unused local variable). be2864c ath9k: Fixed RX decryption status reporting ea61213 ath9k: Fix key cache slot selection for splitmic aa33de0 ath9k: Protect config() callback with a mutex 5e3f308 mac80211: Print unknown packet type in tasklet_handler 6110781 p54usb: bring first generation devices back to life 6ace289 ath9k: Key cache allocation for AP mode f66000f ath9k: Fix a NULL pointer dereference in ath_rate_get 91f39e8 iwlwifi: indicate txpower is off in sysfs f1bc4ac iwlwifi: use GFP_KERNEL to allocate Rx SKB memory 4087f6f iwlwifi: use meaningful vars in _iwl_poll_bit() febf337 iwlwifi: remove useless goto 95aa194 iwlwifi: use type uint for module param debug c3a739f iwlwifi: update comments on the debug interface 5c11ec6 iwlwifi: add line feed to printk 34c22cf iwlwifi: cleanup iwl-dev.h 1355412 mac80211: fix a typo in ieee80211_send_assoc() method. 73ec1cc iwlwifi: remove a parameter (dest) from *_fill_beacon_frame() methods. ca8a856 ath9k: Move rate control alg register/unregister to appropriate place 9bf9fca ath9k: Synchronize DMA transfer with CPU at right place f7a276a ath9k: Remove MAC header pad before reporting TX status da027ca ath9k: Fix TX status reporting for retries and MCS index 8d6f658 mac80211: Remove radiotap rate-present flag for HT d858822 rtl8187: Fix crash on unload when using SLUB debug 0a5ec96 p54: remove free_on_tx parameter 69ba3e5 p54: more accurate rssi to dBm conversion da9f57e rtl8187: Fix error returns 2382792 libertas: use roundup instead of opencoding ee370ce p54: update ACK failure statistic counter in real-time 54fdb04 p54: move statistic timer update routine into a workqueue d5e4903 iwlagn: fix agn rate scaling b8d476c mac80211: Send Layer 2 Update frame on reassociation 0fe45b1 ath5k: fix 802.11 header padding on RX, unpadding on TX baad1d9 ath9k: Report HT rates in RX status 0fb8ca4 mac80211: Add HT rates into RX status reporting 9d8eed1 ath9k: Do not use association state to update rate table 094d05d mac80211: Fix HT channel selection 420e7fa nl80211: Add signal strength and bandwith to nl80211station info a1d94aa kernel-doc: check for extra kernel-doc notations eb63212 ALSA: hda - Power up always when no jack detection is available 213cc06 ftrace: introduce tracing_reset_online_cpus() helper 9158923 ALSA: hda - Fix unused variable warnings in patch_sigmatel.c 6030634 Merge branch 'topic/hda-stac-fix' into topic/hda 7004305 Merge branch 'fix/asoc' into topic/asoc d4d9cd03 ALSA: hda - Add probe_only option 7662453 ALSA: hda - Use more distinct name for a unique volume in STAC/IDT c21ca4a ALSA: hda - Rework on STAC/IDT auto-configuration code 03c6901 Merge branch 'fix/hda' into topic/hda 8df0f70 ALSA: ca0106 - Fix typo in resume code 692f904 ALSA: hda - Fix HD-Audio.txt reference of model list 3d47582 ALSA: ca0106 - Add IEC958 PCM Stream controls 86effd7 ALSA: ca0106 - Don't override the values at resume abe1dfa ACPI: don't cond_resched() when irqs_disabled() e76f427 ACPI: fix 2.6.28 acpi.debug_level regression 4f2d23e ALSA: hda - Use snd_hda_ctl_add() in patch_sigmatel.c 827057f ALSA: hda - Add missing initializations of amp and verb caches 30cd324 Merge branches 'tracing/ftrace', 'tracing/ring-buffer' and 'tracing/urgent' into tracing/core 345077c x86: fix intel x86_64 llc_shared_map/cpu_llc_id anomolies cae5117 ALSA: split HD-audio model list to HD-Audio-Models.txt 335b986 Merge branch 'topic/hda-doc' into topic/hda 0ff5551 Merge branch 'fix/hda' into topic/hda c94cb31 net: prepare usb net drivers for addition of status as a parameter ab5024a net: ppp_generic - use DEFINE_IDR for static initialization a109a5b cxgb3: manage private iSCSI IP address 221b3d6 ucc_geth: Remove UGETH_FILTERING dead code 3e73fc9 ucc_geth: Fix IO memory (un)mapping code ba57469 ucc_geth: Cleanup repetitive ucc_geth_memclean() calls 67c2fb8 ucc_geth: Fix IRQ freeing code in ucc_geth_open() 1762a29 ucc_geth: Fix TX watchdog timeout handling b3431c6 ucc_geth: Fix endless loop in stop_{tx,rx} routines 6086ebc tcp: Stop scaring users with "treason uncloaked!" e98def1 NIU: Implement discard counters, optimize d231776 NIU: Implement discard counters, info/debug statements. b8a606b NIU: Implement discard counters 5664dd5 enc28j60: reduce the number of spi transfers in enc28j60_set_bank() b88a2a2 netdevice zd1201: Use after free 3de77cf Revert "xfrm: Accept ESP packets regardless of UDP encapsulation mode" 739840d ppp: fix segfaults introduced by netdev_priv changes 1b08534 net: Fix module refcount leak in kernel_accept() f34a10b x86: fix warning in arch/x86/kernel/microcode_amd.c c71dd42 tracing: fix warnings in kernel/trace/trace_sched_switch.c 3bddb9a tracing: fix warning in kernel/trace/trace.c 9f22149 x86: ia32.h: remove unused struct sigfram32 and rt_sigframe32 8869a2e x86: asm-offset_64: use rt_sigframe_ia32 b2fa739 x86: sigframe.h: include headers for dependency d1769d5 x86: traps.c declare functions before they get used a2ced6e x86: PAT: update documentation to cover pgprot and remap_pfn related changes - v3 2520bd3 x86: PAT: add pgprot_writecombine() interface for drivers - v3 8a7b12f x86: PAT: change pgprot_noncached to uc_minus instead of strong uc - v3 5899329 x86: PAT: implement track/untrack of pfnmap regions for x86 - v3 2ab6403 x86: PAT: hooks in generic vm code to help archs to track pfnmap regions - v3 e121e41 x86: PAT: add follow_pfnmp_pte routine to help tracking pfnmap pages - v3 3c8bb73 x86: PAT: store vm_pgoff for all linear_over_vma_region mappings - v3 f0bc220 x86: process.c declare c1e_remove_cpu before they get used 5c2628e x86: sigframe.h: add guard macro f269b07 x86: revert CONFIG_RELOCATABLE=y defconfig change 179efcb kbuild: add headerdep used to detect inclusion cycles in header files 40aa4a3 ASoC: Add WM8350 AudioPlus codec driver b8b33cb ASoC: Complain if we fail to create DAPM controls 0b34a3d ASoC: Ease merge difficulties from new architectures 9c2c480 schedstat: consolidate per-task cpu runtime stats 6d102bc tracing/ring-buffer: remove unused ring_buffer size 7c9c160 x86: tls.c declare sys_set_thread_area and sys_get_thread_area before they get used 57a3750 x86: time_64.c timer_interrupt() should be static 3d9101e trace: fix task state printout ea3a6d6 ftrace: add not to regex on filtering functions e05a43b trace: better use of stack_trace_enabled for boot up code f38f1d2 trace: add a way to enable or disable the stack tracer 4087449 Merge branches 'tracing/ftrace' and 'tracing/hw-branch-tracing' into tracing/core 1f04128 ALSA: hda - Convert from takslet_hi_schedule() to tasklet_schedule() d98f9d8 x86: ia32_signal: use sigframe.h 3b0d29e x86: ia32_signal: rename struct sigframe and rt_sigframe c85c2ff x86: signal: prepare to include from ia32_signal.c 41af86f x86: signal: move sigframe.h to arch/x86/include/asm a5c56eb x86: signal: rename sigframe and rt_sigframe on 32-bit f522376 x86: signal: move ia32 func declarations into arch/x86/kernel/signal.c 3218c17 ALSA: hda - Remove duplicated strings from codec name 74c6113 ALSA: hda - Add Intel vendor id string 49ad959 Revert "net: release skb->dst in sock_queue_rcv_skb()" 3b5b35d bonding: use port_params in __update_lacpdu_from_port 3c52065 bonding: use port_params in __update_default_selected() ce6a49a bonding: use port_params in __update_selected() a6ae186 bonding: remove various function declarations c7e703d bonding: init port_params from template 5eefd1a bonding: use plain memcpy in __record_default() b99d6ba bonding: use port_params in __record_pdu() 1055c9a bonding: introduce and use port_params structure aa31281 bonding: improve elaborate port_state assignment 4219988 gianfar: Continue polling until both tx and rx are empty 8c7396a gianfar: Merge Tx and Rx interrupt for scheduling clean up ring c50a5d9 gianfar: Use interface name in interrupt name to distinguish the source. 4669bc9 gianfar: Add Scatter Gather support 8882d9a gianfar: Fix packet drop when out of memory a693722 dccp_diag: LISTEN sockets don't have CCIDs c280266 Merge branch 'linux-2.6' into next 9732d52 Phonet: USB CDC Phonet function for gadget framework 893873f Phonet: get rid of deferred work on the transmission path be67773 Phonet: use atomic for packet TX window 57c81ff Phonet: allocate separate ARP type for GPRS over a Phonet pipe 2d91d78 Phonet: allocate a non-Ethernet ARP type fc10af8 vcan: whitespace fixes a67534a V4L/DVB (9908a): MAINTAINERS: mark linux-uvc-devel as subscribers only 7a95d26 net: ppp_generic - use idr technique instead of cardmaps c0700f9 bnx2x: Fix namespace collision with FLOW_CTRL_{TX,RX} f6d5243 bnx2: Don't redefine FLOW_CTRL_{RX,TX}. 1f2435e bnx2: Update version to 1.9.0. 4e1d0de bnx2: Rename MSI-X vectors. eddce36 Merge branch 'next' of master.kernel.org:/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx into next f40e063 drivers/net/hamradio: Move a dereference below a NULL test f162e97 phylib: Remove unnecessary "reset" fixups in genphy_setup_forced 5a5efed gianfar: Make all BD status writes 32-bit 31de198 gianfar: Add macros for stepping through BDs a22823e gianfar: Remove unused gfar_add_fcb() function parameter 2c2db48 gianfar: Enable padding and Optimize the frame prepended bytes handling 77ecaf2 gianfar: Fix VLAN HW feature related frame/buffer size calculation. 12dea57 gianfar: Fix eTSEC configuration procedure b46a845 gianfar: Optimize interrupt coalescing configuration b31a1d8 gianfar: Convert gianfar to an of_platform_driver d680fe4 x86: entry_64 - introduce FTRACE_ frame macro v2 66896a8 tracing/ftrace: add the printk-msg-only option 2c2d732 tracing/ftrace: use preempt_enable_no_resched_notrace in ring_buffer_time_stamp() 257d938 gianfar: Use gfar_halt to stop DMA in gfar_probe 5eeabf5 tlan: Remove broken support for big buffers 354ade9 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 8bee3f0 x86: ia32_signal: use proper macro __USER32_DS d0b48ca x86: ia32_signal: use __put_user() instead of __copy_to_user() ae417bb x86: signal: use signal_fault() in sys_sigreturn() c8182f0 sgi-xp: xpc needs to pass the physical address, not virtual 189f67c x86: UV fix for global physical addresses c15cb37 Merge commit 'v2.6.28-rc8' into x86/uv fde9071 x86: clean up dead code in vmi_32.c 8ae9366 x86: hardirq: use inc_irq_stat() in non-unified functions e1286f2 x86: documentation fix regarding boot protocol 78f902c Merge commit 'v2.6.28-rc8' into x86/doc ecbf29c xen: clean up asm/xen/hypervisor.h 80f40ee sched: use RCU variant of list traversal in for_each_leaf_rt_rq() a9b43c7 x86: setup.c find_and_reserve_crashkernel should be static c0195b6 x86: ldt.c declare sys_modify_ldt before they get used 7b5b50f x86: signal.c declare do_notify_resume before they get used aab02f0 x86: process_64.c declare __switch_to() and sys_arch_prctl before they get used f63c2f2 xen: whitespace/checkpatch cleanup 40fb171 x86: support always running TSC on Intel CPUs 7e91a12 Merge branch 'x86/cpufeature' into x86/tsc d437797 x86: support always running TSC on Intel CPUs, add cpufeature definition dd7a523 Merge commit 'v2.6.28-rc8' into x86/cpufeature df23cab x86: microcode_amd: modify log messages 5549b94 x86: microcode_amd: use 'packed' attribute for structs 9841530 x86: microcode_amd: remove (wrong) chipset deivce ID checks 6cc9b6d x86: microcode_amd: consolidate macro definitions 29d0887 x86: microcode_amd: replace inline asm by common rdmsr/wrmsr functions 0657d9e x86: microcode_amd: don't pass superfluous function pointer for get_ucode_data 8c13520 x86: microcode_amd: fix compile warning be95776 x86: microcode_amd: fix checkpatch warnings/errors 2a3282a x86: microcode_amd: fix typos and trailing whitespaces in log messages 3c763fd x86: microcode_amd: fix wrong handling of equivalent CPU id 3ca81a5 V4L/DVB (9906): v4l2-compat: test for unlocked_ioctl as well. 8b21c1e V4L/DVB (9885): drivers/media Kconfig's: fix bugzilla #12204 f86d4a9 V4L/DVB (9875): gspca - main: Fix vidioc_s_jpegcomp locking. 11c6c7f V4L/DVB (9781): [PATCH] Cablestar 2 I2C retries (fix CableStar2 support) 4b330be V4L/DVB (9780): dib0700: Stop repeating after user stops pushing button b6fd6f2 x86, mm: limit MAXMEM on 64-bit cfc3198 x86, 32-bit: improve lazy TLB handling code beeb419 x86, 32-bit: add some compile time checks to mem_init() d6be89a x86, 32-bit: simplify alloc_low_page() b93a531 allow bug table entries to use relative pointers (and use it on x86-64) 1796316 x86: consolidate __swp_XXX() macros d072c25 x86, bts: correctly report invalid bts records cc1dc6d x86, bts: remove recursion from get_context bb1f24b ALSA: ca0106 MSI K8N Diamond MB spi_dac 2->1 f649a71 ALSA: ca0106 Add comments to snd_ca0106_details struct 31117b7 ALSA: hda - Add Nvidia vendor id string e9515c3 sched, cpuacct: export percpu cpuacct cgroup stats 720f549 sched, cpuacct: refactoring cpuusage_read / cpuusage_write 9dfc3bc Merge branches 'tracing/fastboot', 'tracing/ftrace', 'tracing/function-graph-tracer' and 'tracing/hw-branch-tracing' into tracing/core 9f690db ipv6: fix the outgoing interface selection order in udpv6_sendmsg() f250dcd ipv6: fix the return interface index when get it while no message is received b24a251 ipv6: Add IPV6_PKTINFO sticky option support to setsockopt() bc02ff9 net: Refactor full duplex flow control resolution e18ce34 net: Move flow control definitions to mii.h f986732 simeth: convert to net_device_ops 8207bef cxgb3: untie strict FW matching 5ad258c vcan: convert to net_device_ops ffcebb1 l2tp: fix UDP checksum support 09a2c3c Phonet: improve GPRS variable names 4ee59d5 isdn: eicon: fix sparse warning: make global functions static 205516c x86: convert rdtscll() to use __native_read_tsc b187920 ipmr: merge common code c40cf51 hp100: use roundup instead of open coding 82ad332 cxgb3: Add multiple Tx queue support. 34f28ec sched: optimize update_curr() 03e89e4 sched: fix wakeup preemption clock 89c88b1 e1000e: Add GRO support b240a0e ethtool: Add GGRO and SGRO ops bf296b1 tcp: Add GRO support 71d93b3 net: Add skb_gro_receive 73cc19f ipv4: Add GRO infrastructure d565b0a net: Add Generic Receive Offload infrastructure 1a881f2 net: Add frag_list support to GSO 89319d3 net: Add frag_list support to skb_segment b53c758 rapidio: struct device - replace bus_id with dev_name(), dev_set_name() aab0d37 powerpc: struct device - replace bus_id with dev_name(), dev_set_name() f63837f powerpc/mm: Remove flush_HPTE() e41e811 powerpc/mm: Rename tlb_32.c and tlb_64.c to tlb_hash32.c and tlb_hash64.c 1a37a3f powerpc/mm: Add local_flush_tlb_mm() to SW loaded TLB implementations a58f053 powerpc: Fix asm EMIT_BUG_ENTRY with !CONFIG_BUG 3045b3c powerpc: Remove dead BIO_VMERGE_BOUNDARY definition 7fe519c powerpc: Introduce ppc_pci_flags accessors edc72ac powerpc/pseries: Check for GIQ indicator before calling set-indicator 6ff04c5 powerpc/powermac: Use set_hard_smp_processor_id() instead of smp_hw_index 13a9801 powerpc: Move smp_hw_index to 32-bit code 6b82b3e powerpc: Remove `have_of' global variable eb14f01 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 0efbb57 powerpc: Fix !CONFIG_PPC_NEED_DMA_SYNC_OPS build warning 46d0149 powerpc/ps3: Add sub-match id modalias support 62d8074 powerpc/ps3: Quiet dmesg output 15cb1cc powerpc: Fix typo in pgtable-ppc64.h 29e931c powerpc/chrp: Add missing of_node_put in pci.c 1e1c568 Merge branch 'merge' into next 9a4a842 8390/8390p: Fix compat netdev ops handling. 91cac62 powerpc/85xx: Fix compile issues with mpc8572ds.dts 8309ce7 powerpc: Fix bogus cache flushing on all 40x and BookE processors v2 3d1ee37 ALSA: Fix declaration of sound_class 8b124a8 net: fix dcbnl_setnumtcs operation check 5ecc361 ixgbe: fix dma mapping unbalance a7276db smsc9420: add ethtool register dump support b1721d2 rpc/rdma: goto instead of copypaste 79f55f1 nf/dccp: merge errorpaths e780f1c irda: merge exit paths 037322a bt/rfcomm/tty: join error paths 0eae1b9 ax25: join the return paths that free skb ebad5c0 can: merge error paths d8eb930 xfrm: join error paths 8da73b7 ip6mr: use goto to common label instead of opencoding 448eb71 ipv6/mcast: join error paths using goto 5ce1bbb xfrm6_tunnel: join error paths using goto 857a6e0 icsk: join error paths using goto 9cd28ab ASoC: switch davinci DPRINTK to pr_debug() a6ba0cb kbuild: fix string equality testing in tags.sh 709cc37 kbuild: fix make tags/cscope 31110eb kbuild: fix make incompatibility 012b215 smsc9420: add ethtool eeprom support e312674 smsc9420: add netpoll support 1757ab2 smsc911x: make smsc911x_poll_controller static 56bde88 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 a7a81fc sfc: Version 2.3 7dde596 sfc: Fix synchronisation of efx_mtd_{probe,rename,remove} 0c53d8c sfc: Use kzalloc() to ensure struct efx_spi_device is fully initialised fa402b2 sfc: Treat probe as unsuccessful if it scheduled a reset ab37735 sfc: Use model numbers for PHY type names ca54a9f sfc: Use mutex_lock_interruptible() for ethtool EEPROM access 11e6696 sfc: Specify a meaningful component for loopback RX-side and PHY tests b453193 sfc: Remove leading spaces 6f158d5 sfc: Add support for SFN4111T e6fa2eb sfc: Add support for Solarflare 10Xpress SFT9001 766ca0f sfc: Rework MAC, PHY and board event handling 04cc8ca sfc: Implement auto-negotiation 177dfcd sfc: Add support for sub-10G speeds 356eebb sfc: Clean up MDIO flag setting 04300d2 sfc: Clean up board identification 06d5e19 sfc: Add phy_type device attribute 27dd2ca sfc: Add support for MMDs numbered >15 f31a45d sfc: Remove MII extension cruft 5005087 sfc: Don't count RX checksum errors during loopback self-test 740ced9 sfc: Abbreviate self-test names so they are not truncated 56536e9 sfc: Provide hints to irqbalance daemon 28b581a sfc: Add option to use a separate channel for TX completions 84ae48f sfc: Restore phy_flash_cfg module parameter 2f7f573 sfc: Work around unreliable strap pins be4ea89 sfc: Clean up waits for flash/EEPROM operations 1ab0062 sfc: Make reset_workqueue driver-global rather than per-NIC 65f667f sfc: Correct interpretation of second param to ethtool phys_id() 2b2734d sfc: Remove unneeded register write 23d30f0 sfc: Change SPI lengths to type size_t a17102b sfc: Board support fixes 702c790 misdn: Fix lockdep warning c31655f mISDN: hfcmulti: use __iomem address space modifier c46f0a2 mISDN: timerdev: use __user for mISDN_read's buffer argument 047ce8f mISDN: comment out unused symbols 863a76e mISDN: fix sparse warning: symbol 'id' shadows an earlier one bb68b1d mISDN: fix sparse warning: symbol 'nskb' shadows an earlier one 65a4051 mISDN: un-export symbol 'plx_lock' 5b83435 mISDN: make global symbols static or include header files dfa96ec mISDN: consistently define 'debug' as '*u_int' bcf9174 mISDN: use NULL pointer instead of plain integer a7b7520 iwlwifi: add contact email to MODULE_AUTHOR 2aa6ab8 iwlwifi: remove 4965 from common uCode API structures b5047f7 iwlwifi: remove includes of iwl-helpers.h where not needed 29d51d9 iwlwifi: remove unused clip_groups priv member edb3422 iwlwifi: fix resume while txpower off 3d5717a iwlwifi: use iwl_poll_direct_bit in EEPROM reading 9c5f89b ath9k: Do not remove header padding on RX from short frames f2f1ba2 iwlwifi: fix build warning (iwl-rx.c) ab1f5c0 mac80211: misc cleanups 4dec9b8 rfkill: strip pointless notifier chain 6fb5325 libertas: Create sysfs entry for changing the mesh probe response limit b77f483 ath9k: Refactor struct ath_softc 59651e8 p54: fix oops on faulty devices b7a530d mac80211: Disable requests for new scans in AP mode 14a4dfe ipw2200: fix scanning while associated d8004cb b43legacy: Fix sparse warnings c1db52b rtl8187: Use usb anchor facilities to manage urbs 388cdf3 ath5k: fix endianness of bitwise ops when installing mic 62d714e spectrum_cs: Fix function names used in debug strings 499b702 orinoco: Fix inappropriate use of IRQ_BAP 0c06dd8 orinoco: Fix function names used in debug strings 39ca5bb p54: enforce strict tx_queue limits 30dab79e iwlwifi: remove qos module parameter 6d1ef1a iwlwifi: 3945 remove qos module parameter 9f92593 iwlifi: remove twice defined SINGLE_FRAME RX FH MASK 759ef89 iwlwifi: change email contact information d070d85 airport: remove useless return in a function returning void 89fad57 mac80211: integrate sta_notify_ps cmds into sta_notify dd397dc p54usb: rewriting rx/tx routines to make use of usb_anchor's facilities a07d361 ath9k: BH shouldn't be enabled when hardirqs are disabled. b143923 mac80211/cfg80211: check endianness in sparse runs f546638c mac80211: remove fragmentation offload functionality e4f2a34 ath9k: remove fragmentation workaround again 21a49fc iwlwifi: fix build error (iwl-rx.c). 8dffff2 mac80211: only create default STA interface if supported 0f202aa ieee80211_security: correct warning about width of auth_mode 8aa15e1 ath9k: avoid rx frames with corrupted descriptor. 2df1bff ath9k: Incorrect band enum causes invalid antenna configuration. e759407 ath9k: Adding support for Atheros AR9285 chipset. e8fbc99 ath9k: Adding initvalues for Atheros AR9285 chipset. 02e90d6 ath9k: Adding AR9285 chipset register information. 306d611 cfg80211: fix nl80211 frequency handling 7ba1c04 mac80211: improve sta_notify documentation 8ee5afb ath9k: Merge structures ath_atx, ath_node_aggr with ath_node f6688cd ath9k: Remove remaining occurrences of CONFIG_SLOW_ANT_DIV 817e11d ath9k: Add a debugfs file to show interrupt statistics 3706de6 ath9k: Maintain rate table choice after association 40990ec ath9k: Fix bug in rate table management 6b3aa6a ath9k: Disable staggered Beacon frame scheduling 3fbb9d9 ath9k: Free Beacon skbs in AP mode 61ff84a iwlwifi: cleanup (remove pm_state) a8ec42c iwlwifi: use rmb/wmb to protect indirect mmio operation 73d7b5a iwlwifi: iwl_poll_{direct_}bit cleanup 42802d7 iwlwifi: fix "MAC in deep sleep" error f056658 iwlwifi: fix time interval misuse in iwl_poll_{direct_}bit 7262796 iwl3945: Fix rate scale for B-mode connection 00e540b iwlwifi: implement iwl_debug_report_frame for iwlagn 447107f mac80211: remove WARN_ON() from ieee80211_hw_config bb608e9 wireless: Incorrect LEAP authentication algorithm identifier. a7db74f rtl8187: Improve wireless statistics for RTL8187 fd28a5b x86: remove simnow earlyprintk support 9470565 x86: remove init_mm export as planned for 2.6.26 d65bd5e sched: add missing arch_update_cpu_topology() call ee79d1b sched: let arch_update_cpu_topology indicate if topology changed 2bed844 tracing/function-graph-tracer: add a new .irqentry.text section, fix cbc34ed sched: fix tracepoints in scheduler 915b0d0 x86: hardirq: introduce inc_irq_stat() fd10902 Merge commit 'v2.6.28-rc8' into x86/irq 8f2466f x86: kill #ifdef for exit_idle() 16855f8 x86: uaccess: return value of __{get|put}_user() can be int e18d7af Merge commit 'v2.6.28-rc8' into x86/mm f8b755a tracing/function-graph-tracer: Output arrows signal on hardirq call/return bcbc4f2 tracing/function-graph-tracer: annotate do_IRQ and smp_apic_timer_interrupt a0343e8 tracing/function-graph-tracer: add a new .irqentry.text section 85072bd x86, debug: remove EBDA debug printk c1dfdc7 Merge commit 'v2.6.28-rc8' into sched/core da485e0 tracing/fastboot: include missing headers 8001530 tracing/fastboot: fix len of func buffer 8808500 x86: soften multi-BAR mapping sanity check warning message ffc2238 x86, bts: fix build error a93751c x86, bts, ftrace: adapt the hw-branch-tracer to the ds.c interface c272477 x86, bts: provide in-kernel branch-trace interface b0884e2 x86, bts: turn BUG_ON into WARN_ON_ONCE f3134de Merge branches 'tracing/function-graph-tracer' and 'tracing/ring-buffer' into tracing/core 7a3c66e net: Add support for the KS8695 ethernet devices. 82a9928 tc35815: Enable StripCRC feature 2cb3772 smsc9420: SMSC LAN9420 10/100 PCI ethernet adapter ea943d4 igb: fixup AER with proper error handling 49d92c7 ASoC: TWL4030: hands-free start-up sequence. 4544f8a ASoC: Fix variable name for Blackfin I2S DAI cd85400 powerpc/4xx: Add L2 cache node to AMCC Canyonlands dts file 132bb7c ALSA: hda - Add development tree URLs in HD-audio.txt f8bbd06 ALSA: hda - Fix another typo in HD-Audio.txt 42a73df ALSA: sb8 - Fix a return code in the error path 5c0b9be ALSA: hda - Fix a compile warning when CONFIG_PM=n 6de45d5 ALSA: ASoC - Fix DAI registration in s3c2443-ac97.c 623b9f6 ALSA: hda - Update HD-Audio.txt 293a4f2 netfilter: xt_NFLOG is dependant of nfnetlink_log 8229efd netns: ip6mr: enable namespace support in ipv6 multicast forwarding code 8b90fc7 netns: ip6mr: declare ip6mr /proc/net entries per-namespace 950d570 netns: ip6mr: declare reg_vif_num per-namespace a21f3f9 netns: ip6mr: declare mroute_do_assert and mroute_do_pim per-namespace 4045e57 netns: ip6mr: declare counter cache_resolve_queue_len per-namespace 4a6258a netns: ip6mr: dynamically allocate mfc6_cache_array 58701ad netns: ip6mr: store netns in struct mfc6_cache 4e16880 netns: ip6mr: dynamically allocates vif6_table bd91b8b netns: ip6mr: allocate mroute6_socket per-namespace. 5eaa65b net: Make static 2107fb8 smsc911x: add dynamic bus configuration 3b1228a ASoC: Stop WM8903 SYSCLK when suspending d58d5d5 ASoC: Convert WM8903 driver to register at I2C probe time 78e19a3 ASoC: Convert WM8900 to do more work at I2C probe time f144b7f ALSA: cs5535 - Make OLPC-stuff depending on MGEODE_LX 0fb497f ALSA: cs5535audio: ensure MIC Bias/Analog Input bail if not on an OLPC machine b5ccc57 ALSA: cs5535audio: clean up OLPC code c8f0eee ALSA: cs5535audio: turn off mic bias on OLPCs by default 01da024 ALSA: cs5535audio: for OLPC, default to Analog Input being off bf1e527 ALSA: cs5535audio: rename V_REFOUT control to MIC Bias e463ae1 ALSA: cs5535audio: enable OLPC's V_REFOUT bias when recording 189d34e ALSA: cs5535audio: check OLPC's Analog Input status vis GPIO 466ae3055 ALSA: cs5535audio: rename OLPC's analog input control && drop AD1888's HPF d6276b7 ALSA: cs5535audio: create function for setting OLPC's Analog Input mode 1e2232b ALSA: cs5535audio: decouple HPF from V_REFOUT in OLPC code b91254e ALSA: cs5535audio: drop ec_analog_input flag for OLPC stuff 3556d18 ALSA: cs5535audio: invert EAPD for OLPC (newer than B3) c8974be ALSA: cs5535audio: Use OLPC/Geode basic infrastructure 57d4bf6 ALSA: cs5535audio: OLPC analog input support b6c52a2 ALSA: cs5535audio: suspend/resume callbacks are only defined with CONFIG_PM b035ce0 ALSA: cs5535audio: turn off PCM properly if closing the audio device 0bed7b2 ALSA: cs5535audio: stick AD1888 bitshift values into a header file 0d0cf00 ASoC: Add codec registration API cdc6936 ALSA: Add support for mechanical jack insertion 1e5fa31 ASoC: TWL4030: Change the name for the DACs d4a7313 ASoC: TWL4030: Small cleanup 6a1bee4 ASoC: TWL4030: Add missing Carkit output 1e297a1 ASoC: Work around warnings from some build environments 11d518e ALSA: hda - Add quirk for HP6730B laptop 6fabd71 ixgbe: Implement PCIe AER support 5e8427e igb: Correctly determine pci-e function number in virtual environment b4557be igb: update handling of RCTL for smaller buffer sizes d2afbe7 ALSA: hda - Update documentation 44411e0 ALSA: ca0106 - Check return value of pci_enable_device() in resume e97fd7c bonding: turn all bond_parm_tbls const 325dcf7 bonding: make tbl argument to bond_parse_parm() const d787552 bonding: remove duplicate declarations 5a03cdb bonding: use pr_debug instead of own macros ef65583 bonding: fix compile error if debug enabled 77afc92 bonding: use table for mode names 5840205 bonding: add and use bond_is_lb() f73f2a6 ALSA: ASoC - Fix symbol conflicts in omac-mcbsp.c acc4216 ALSA: sound: Make static c9b3a40 ALSA: ASoC - Fix wrong section types 24e07db ALSA: ASoC - Fix module init entry for twl4030.c 512bb43 pkt_sched: sch_htb: Optimize WARN_ONs in htb_dequeue_tree() etc. 1b5c007 pkt_sched: sch_htb: Optimize htb_find_next_upper() dbb7a95 phy: Add LSI ET1011C PHY driver 471716f ASoC: Fix typos in Atmel module registration f075233 ASoC: Convert WM8900 to allow registration by machine code 6b05eda ASoC: Wait for non-AC97 codec DAIs before instantiating 435c5e2 ASoC: Initial framework for dynamic card instantiation 64089b8 ASoC: Register non-AC97 codec DAIs 958e792 ASoC: Register platform drivers 12a48a8 ASoC: Add platform registration API 3f4b783 ASoC: Register platform DAIs 9115171 ASoC: Add DAI registration API c5af3a2 ASoC: Add card registration API ca4513f ASoC: TWL4030: Do not alter the Headset output volume on power-up/down df33980 ASoC: TWL4030: DAPM mapping of the Handsfree outputs 5152d8c ASoC: TWL4030: DAPM mapping of the Carkit outputs dfad21a ASoC: TWL4030: DAPM mapping of the Headset outputs 2a6f5c5 ASoC: TWL4030: DAPM mapping of the PreDriv outputs 5e98a46 ASoC: TWL4030: DAPM mapping of the Earpiece output e8ff9c4 ASoC: TWL4030: Add DAPM event handler for output MUX selection 44c5587 ASoC: TWL4030: Add Analog PGA control switch to DAPM 53b5047 ASoC: TWL4030: Correct DAPM_DAC with power control 1e64174 Audit: Log TIOCSTI e19caae bluetooth: Fix unused var warning properly in rfcomm_sock_ioctl(). bcb09dc myri10ge: check fragmentation in LRO get_frag_header() 6cf1a0f bluetooth: Fix rfcomm_sock_ioctl() build failure with debugging enabled. e421300 hydra: fix compilation 30bc448 ALSA: Updates about bug-reporting in ALSA-Configuration.txt 94d6a5f user namespaces: document CFS behavior e726f5f tracing/function-graph-tracer: fix 'flags' variable mismatch efbe027 sched: idle_balance() does not call load_balance_newidle() 4217458 x86: signal: change type of paramter for sys_rt_sigreturn() 380c4b1 tracing/function-graph-tracer: append the tracing_graph_flag 8e1b82e tracing/function-graph-tracer: turn tracing_selftest_running into an int 8b96f01 tracing/function-graph-tracer: introduce __notrace_funcgraph to filter special functions 69b88af x86: clean up get_smp_config() aa9c9b8 Merge branch 'linus' into x86/quirks 361b73d ring_buffer: fix comments 5436499 sched: fix sd_parent_degenerate on non-numa smp machine 4d117c5 Merge branch 'sched/urgent' into sched/core 3e1e900 x86: change static allocation of trampoline area decbec3 tracing/function-graph-tracer: implement a print_headers function 5e03c54 ALSA: hrtimer - Use hard-irq callback 647808a ALSA: timer - Add comments and use ns_to_ktime() 6fdd34d dccp ccid-2: Phase out the use of boolean Ack Vector sysctl 4098dce dccp: Remove manual influence on NDP Count feature 0049bab dccp: Remove obsolete parts of the old CCID interface 63b8e28 dccp: Clean up old feature-negotiation infrastructure 991d927 dccp: Integration of dynamic feature activation - part 3 (client side) 192b27f dccp: Integration of dynamic feature activation - part 2 (server side) 6eb55d1 dccp: Integration of dynamic feature activation - part 1 (socket setup) b74ca3a netdevice: Kill netdev->priv 5a001a0 staging-winbond: Kill directly reference of netdev->priv 7657d90 user namespaces: require cap_set{ug}id for CLONE_NEWUSER c37bbb0 user namespaces: let user_ns be cloned with fairsched 32e176c Sound: hda - Restore PCI configuration space with interrupts off 4bcd426 staging-slicoss: Kill directly reference of netdev->priv 979123d staging-p80211: Kill directly reference of netdev->priv ad660e2 s390_net: Kill directly reference of netdev->priv 26aca5e net: Fix incorrect use of loose in spider_net.c 6c5cc8e wireless: Fix incorrect use of loose in wext.c a2acde0 tcp: fix tso_should_defer in 64bit d5dd917 tcp: use tcp_write_xmit also in tcp_push_one 730c30e Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 726e07a tcp: move some parts from tcp_write_xmit 41834b7 tcp: share code through function, not through copy-paste. :-) ee6aac5 tcp: drop tcp_bound_rto, merge content of it tcp_set_rto 5013316 tcp: no need to pass prev skb around, reduces arg pressure a1197f5 tcp: introduce struct tcp_sacktag_state to reduce arg pressure 775ffab tcp: make mtu probe failure to not break gso'ed skbs unnecessarily 9969ca5 tcp: Fix thinko making the not-shiftable to cover S|R as well f0bc52f tcp: force mss equality with the next skb too. 61c1d05 dccp: use roundup instead of opencoding d2b8881 tty: driverdata and discdata are void * 8a1ec21 tty: Flags should be accessed via the foo_bit interfaces 098401a Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 cb7b48f igb/e1000e: Naming interrupt vectors 1c72194 IB/ehca: Replace modulus operations in flush error completion path 3d08909 IB/ipath: Add locking for interrupt use of ipath_pd contexts vs free 1bf7724 IB/ipath: Fix spi_pioindex value 6114d4c IB/ipath: Only do 1X workaround on rev1 chips 60e8450 IB/ipath: Don't count IB symbol and link errors unless link is UP 890fccb IB/ipath: Check return value of dma_map_single() fab01fc IB/ipath: Fix PSN of send WQEs after an RDMA read resend 6098d10 RDMA/nes: Cleanup warnings 1ee8655 RDMA/nes: Add loopback check to make_cm_node() f3181a1 RDMA/nes: Check cqp_avail_reqs is empty after locking the list abb7725 RDMA/nes: Fix TCP compliance test failures 4a14f6a RDMA/nes: Forward packets for a new connection with stale APBVT entry 183ecfa RDMA/nes: Avoid race between MPA request and reset event to rdma_cm 879e5bd RDMA/nes: Lock down connected_nodes list while processing it c5d321e RDMA/nes: Cleanup cqp_request list usage abf681c kbuild: remove TAR_IGNORE 28a1d86 ASoC: tlv320aic3x: control additions and cleanups 68fb740 ASoC: Add support for OMAP3 Pandora c112d0c ath9k: Use GFP_ATOMIC when allocating TX private area f8316df ath9k: Check for pci_map_single() errors 73a5267 rt2x00: Correctly initialize AID during set_key() 9c3444d rt2x00: Move crypto TX descriptor handling to rt2x00crypto.c 1c02667 rt2x00: Fix check for BSS info changes 4c7f0bc generic swap(): ath9k: rename swap() to swap_array() 74415ed rt2x00: Add RXDONE_CRYPTO_IV/ICV flags 011a033 iwl3945 : Fix a-band association for passive channels a0987a8 iwlwifi: rely on API version read from firmware c02b3ac iwlwifi: store ucode version number f3f911d iwlwifi: fix DMA channel number in iwl_txq_ctx_stop 74221d0 iwl3945: Fix iwl3945 rate scaling. c30e30e iwl3945: add debugfs support d366df5 iwlwifi: move channels sysfs to debugfs 0ad91a3 iwlwifi: move disable/enable interrupts to iwl-core.c c93007e iwl3945: Select correct sta ID from find_station() 99df630 iwlwifi: fix printk size format error 8f5c87d iwlwifi: move host command check function into separate file 304a698 rt2x00: Release rt2x00 2.2.3 dddfb47 rt2x00: Implement HW encryption (rt2500usb) 0b927a0 rt2x00: Remove duplicate code 42c8285 rt2x00: Store retry limit values 1ce9cda rt2x00: Optimize IV/EIV handling aac9207 ath9k: Choose correct ANI calibration period 7470d7f iwlwifi: 5150 enable LO, TXIQ and BB calibrations fd63edb iwlwifi: 5150 parametrize eeprom versions 339afc8 iwlwifi: 5150 compute ct kill threshold 819500c iwlwifi: 5150 enable DC calibration 7100e92 iwlwifi: 5150 add support for 5150 d97809d ath9k: Replace ath9k_opmode with nl80211_iftype 33fd819 iwlwifi: disable AP mode c912765 p54: fix lm87 checksum endianness 0f70f39 cfg80211: "fix" 11d oops c58f9f6 iwl3945: remove obsolete irq handling 8e7be8d mac80211: tx module cleanup. 4a4f4d8 cfg80211: fix wiphy remove if no regulatory request 8bef7a1 mac80211: document ieee80211_tx_info.pad 02e37ba p54: per-device names b2023dd p54: refactoring 64c354d p54: include support for 2.13.24.0 USB LM87 Firmwares 25900ef p54: utilize cryptographic accelerator c772a08 p54: revamp station power save management in access point mode 4571d3b mac80211: add sta_notify_ps callback 2a163c6 ath9k: Add a debugfs file for dumping DMA status 826d268 ath9k: Add initial layout for an ath9k specific debugfs mechanism 16d68ab ath9k: Remove includes that are not needed 88b126a ath9k: Add ATH9K_DEBUG configuration option 04bd463 ath9k: Use cleaner debug masks d9a1f48 rtl8187: fix retry count passed in rtl8187_tx 007e5dd wireless: clean up radiotap a bit e11602b ath9k: Handle channel initialization for AP mode cb3da8c mac80211: accept empty strings for hidden SSIDs e60c774 cfg80211: handle SIOCGIWMODE/SIOCSIWMODE fee5267 cfg80211: handle SIOCGIWNAME f650470 ath5k: enable combined michael mic in key cache 6714349 ath5k: clean up ath5k_hw_set_key f6bac3e ath5k: preserve higher order bits when setting mac address 51e9bf5 iwlwifi: remove uses of __constant_{endian} helpers 10ec4f1 nl80211: relicense nl80211.h under the ISC 72bdcf3 nl80211: Add frequency configuration (including HT40) 72eaa43 mac80211: only transition STAs ps->wake on data frames 0d950d8 iwlwifi: properly initialize calibration command header 8e268e4 mac80211: disassociate prior to unlinking AP/station e327b84 mac80211: deauth when interface is marked down 04adf89 hostap: select required crypto bits in Kconfig 21bbecd ftrace: use init_struct_pid as swapper pid 21a8c46 tracing/ftrace: provide the macro task_curr_ret_stack() 77d683f tracing/ftrace: fix the check of ftrace_trace_task ff32504 tracing/ftrace: don't insert TRACE_PRINT during selftests 970987b Merge branches 'tracing/ftrace', 'tracing/function-graph-tracer' and 'tracing/urgent' into tracing/core a0286c9 x86: fix missing space in printk, #2 12dde4c ALSA: hda - Proper power-map toggling for input pins 55c395b x86: fix missing space in printk e6e3ea2 ALSA: hda - Fix pin-detection in patch_sigmatel.c e061b16 xfrm: Accept ESP packets regardless of UDP encapsulation mode 3f9b766 sgi-xp: Kill directly reference of netdev->priv 17c324f um: Kill directly reference of netdev->priv 6cbeba5 xtensa: Kill directly reference of netdev->priv 28945dd simeth: Kill directly reference of netdev->priv 5da9527 ALSA: ca0106 - Add power-management support 84d727a powerpc/4xx: Add support for ISA holes on 4xx PCI/X/E 9d2421e powerpc/44x: update ppc44x_defconfig 23f402c powerpc/kvm: update KVM config options in ppc44x_defconfig 32c8dab ASoC: Remove obsolete declaration of struct snd_soc_clock_info affa219 x86: change thread_info's flag field back to 32 bits c051556 Merge commit 'v2.6.28-rc7' into x86/cleanups 4e7c4d7 ALSA: hda - Add reference to HD-Audio.txt in ALSA-Configuration.txt 1fd8f2a tracing/function-graph-tracer: handle ftrace_printk entries faec2ec ftrace: avoid duplicated function when writing set_graph_function 6b25393 tracing: fix typo and missing inline function e32d895 ftrace: add ability to only trace swapper tasks 978f3a4 ftrace: use struct pid 5ef6476 pid: fix the do_each_pid_task() macro 804a685 ftrace: trace single pid for function graph tracer 0ef8cde ftrace: use task struct trace flag to filter on pid ea4e2bc ftrace: graph of a single function b29144c Merge branches 'tracing/ftrace' and 'tracing/function-graph-tracer' into tracing/core b8307db Merge commit 'v2.6.28-rc7' into tracing/core 4151d15 ALSA: hda - Add forgotten module alias for Nvidia MCP67 HDMI e5f7343 ALSA: hda - Add MCP67 HDMI support 36cbac5 net/ipv6/ip6mr.c: Use kmem_cache_zalloc, remove memset df66f85 if_usb: Kill directly reference of netdev->priv 4850218 smc91x: remove isa stuff from smc91x driver 999890b net: /proc/net/ip_mr_cache, display Iif as a signed short 1ea472e net: fix /proc/net/ip_mr_cache display - V2 9de6d99 netdev: remove pathetic compile-command lines ec98ce4 Merge branch 'master' into next 8865c41 atm: 32-bit ioctl compatibility dcd39c9 ne-h8300: convert to net_device_ops 5618f0d hydra: convert to net_device_ops b611479 zorro8390: convert to net_device_ops 3e1d7cd e1000: e1000_adapter->polling_netdev is useless a4d2f34 ixgbe: function comment typo e4e6c38 jme: Remove 64 and 40 bit dma_mask 4f40bf4 jme: GHC register control fix for new hardware 59e4220 pkt_sched: sch_htb: Replace HTB_ACCNT() macro with inlines 23cb913 pkt_sched: sch_htb: Remove L2T() 244ef9b bond: Kill directly reference of netdev->priv 9734124 mptlan: Kill directly reference of netdev->priv 0eade1f dvb: Kill directly reference of netdev->priv c19f7a3 pkt_sched: sch_htb: Clean htb_class prio and quantum fields 633fe66 pkt_sched: sch_htb: Remove htb_sched nwc_hit field 4164d66 pkt_sched: sch_htb: Remove htb_class aprio field cb52deb forcedeth: power down phy when interface is down a316084 drivers/net/smc911x.c: smc911x_drv_probe() cleanup fd568fc drivers/isdn/mISDN: use ARRAY_SIZE 838361f isdn: Kill directly reference of netdev->priv 25dd7e6 hysdn: Kill directly reference of netdev->priv 5240488 Phonet: basic net namespace support d81d228 xfrm: Accept XFRM_STATE_AF_UNSPEC SAs on IPv4/IPv6 only hosts ff80aa9 setlocalversion: add git-svn support 167d6a0 setlocalversion: print correct subversion revision 846442c scripts: improve the decodecode script c39dd50 scripts/package: allow custom options to rpm 5dae9a5 genksyms: allow to ignore symbol checksum changes 64e6c1e genksyms: track symbol checksum changes a680eed tags and cscope support really belongs in a shell script 361425f powerpc/85xx: Create dts for each core in CAMP mode for MPC8572DS f6682f9 kconfig: fix options to check-lxdialog.sh 3b1ec9f kbuild: gen_init_cpio expands shell variables in file names efddd79 remove bashisms from scripts/extract-ikconfig d230124 kbuild: teach mkmakfile to be silent fd54f50 kbuild: use KECHO convenience echo 5410ecc kbuild: introduce $(kecho) convenience echo d03fab4 kbuild: kill output in silent mode of mkcompile_h d8672b4 kbuild: expand -I in KBUILD_CPPFLAGS 5b91c33 kbuild: fix -I option expansion with O=... builds dc7d7b8 ASoC: Remove platform device from DAI suspend and resume operations 07c84d0 ASoC: Remove device from platform suspend and resume operations 384c89e ASoC: Push debugfs files out of the snd_soc_device structure a7fe49b ALSA: Add more documentation about HD-audio driver 06be64a powerpc/85xx: Don't reset the MPIC for CAMP mode on MPC8572DS c64ef80 powerpc/85xx: Add localbus node in mpc8572ds dts file 965dc5f powerpc/86xx: Basic GPIO support for GE Fanuc SBC610 09a3fba powerpc/qe: Move cmxgcr_lock definition from the ucc.c into the qe.c d3a8cda powerpc/86xx: Add use of Epson RTX-8581 RTC to GE Fanuc SBC610 dts 24a9959 powerpc/85xx: Fix compile warnings in mpc85xx_mds.c e8e1abe ftrace: fix race in function graph during fork 0a37119 trace: fix output of stack trace 0f62083 ALSA: Reduce stall detection timeout in riptide.c d5b26db powerpc/85xx: Add support for SMP initialization 06b9096 powerpc/85xx: minor head_fsl_booke.S cleanup b389889 powerpc: Better setup of boot page TLB entry 6a800f3 powerpc: Add SPE/EFP math emulation for E500v1/v2 processors. 033b8a3 powerpc/math-emu: Remove redundant 'ret' 463a8c0 powerpc/math-emu: Adopt new version of _FP_CHOOSENAN cf03033 powerpc/math-emu: Fix single float point division bug 55b9121 powerpc: Remove unncessary SPE related compiler flag 0640f84 Merge branch 'topic/hda-modularize' into topic/hda 6f2a974 ASoC: tlv320aic3x: headset/button press support 4b4fffd ASoC: Fix WM8903 right mixer bypass path 5920b45 ASoC: TWL4030: Add input selection and gain controls 7947cf0 hvc_console: Always schedule resize work on resize 3d26825 powerpc: Make open count variables signed in hvcs/hvsi/hvc_console dc42149 drivers/hvc: Add missing of_node_put b908b53 of/gpio: Implement of_get_gpio_flags() 2fd091f powerpc/macintosh: Fix unsigned check in smu_sat_get_sdb_partition() e6a437e of/i2c: Fill the archdata for I2C devices 3f3b163 powerpc and sparc: Introduce dev_archdata node accessors a0e2f9f powerpc/BSR: Support multiple OF-node description of BSR 6358d6c powerpc/ibmebus: Get rid of the IRQ mapping in ibmebus_free_irq() 786b32f powerpc: Eliminate NULL test and memset after alloc_bootmem 15e09c0 powerpc: Add sync_*_for_* to dma_ops c4d04be powerpc: Allow the max stack trace depth to be configured 0186f47 powerpc: Use RCU based pte freeing mechanism for all powerpc df3b861 powerpc: Add a local_flush_tlb_page to handle kmap_atomic invalidates f4f3a12 powerpc: hash_page_sync should only be used on SMP & STD_MMU_32 4ee5f55 powerpc: Fix ppc32 mm_struct CPU tracking in SMP 1b98326 powerpc: Add MSR[CE, DE] to the MSR bits we print on show_regs() 764f3b9 tracing/function-graph-tracer: enabled by default 5274918 Merge branch 'merge' 29fa0b3 xfrm: Cleanup for unlink SPD entry 22d5532 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 166d3c7 tracing/function-graph-tracer: improve duration output 11e84ac tracing/function-graph-tracer: display unified style cmdline and pid 62679ef ftrace: add checks on ret stack in function graph e49dc19 ftrace: function graph return for function entry 7ee991f ftrace: print real return in dumpstack for function graph 044fa78 ring-buffer: change "page" variable names to "bpage" 14a866c ftrace: add ftrace_graph_stop() bb4304c ftrace: have function graph use mcount caller address 347fdd9 ftrace: clean up function graph asm 8789a9e ring-buffer: read page interface abc9b56 ring-buffer: move some metadata into buffer page a5e2588 ftrace: replace raw_local_irq_save with local_irq_save dfdc543 Merge commit 'v2.6.28-rc7'; branch 'x86/dumpstack' into tracing/ftrace f0461d0 Merge branches 'tracing/ftrace' and 'tracing/function-graph-tracer' into tracing/core 181de82 x86: remove dead BIO_VMERGE_BOUNDARY definition 6083aa4 Merge branch 'x86/io' into x86/iommu 3f8c6c9 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-next-2.6 aa2ba5f Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 6802454 Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus ca17584 mac8390: update to net_device_ops b9a9b4b etherh: build fix for net-next dcb7731 x86: fix broken flushing in GART nofullflush path 87689d5 ASoC: Push platform registration down into the card 96841ba ALSA: ac97 - Include ac97_codec.h for ac97_bus_type declaration 6308419 ASoC: Push workqueue data into snd_soc_card 39da581 virtio_net: large tx MTU support 8daa190 x86, apm: remove CONFIG_APM_REAL_MODE_POWER_OFF in favor of a kernel parameter 48d68b2 tracing/function-graph-tracer: support for x86-64 16950e0 ALSA: emu10k1 - Add capture boost mixer switch for Audigy 66eafeb function trace: fix a bug of single thread function trace 222658e Merge branches 'tracing/branch-tracer', 'tracing/ftrace', 'tracing/function-graph-tracer', 'tracing/markers', 'tracing/powerpc', 'tracing/stack-tracer' and 'tracing/tracepoints' into tracing/core 74bf3ca Merge branch 'tracing/urgent' into tracing/core 6976a1d net: percpu_counter_inc() should not be called in BH-disabled section 422d9cd dccp: Feature activation handlers b1ad004 dccp: Processing Confirm options e77b836 dccp: Process incoming Change feature-negotiation options 75757a7 dccp: Preference list reconciliation 8b7b6c7 dccp: Integrate feature-negotiation insertion code 0971d17 dccp: Insert feature-negotiation options into skb 7c37d74 IB/ipath: Improve UD loopback performance by allocating temp array only once 64f22fa IB/ipath: Fix pointer-to-pointer thinko in ipath_fs.c 75c21ae IB/ehca: Fix locking for shca_list_lock 0ecfe79 ASoC: Don't free static data in WM9713 4290239 ASoC: TWL4030: Add volume controls for outputs d889a72 ASoC: TWL4030: Change the common playback volume controls 381a22b ASoC: TWL4030: Change the capture volume control to TLV fa5c769 ASoC: Remove in-code changelog from AD73311 driver 7d8c16a ASoC: Annotate core removal function 968a602 ASoC: Rename snd_soc_register_card() to snd_soc_init_card() 6c415b9 sched: add uid information to sched_debug for CONFIG_USER_SCHED 50cec5c x86: fix dma_mapping_error for 32bit x86, cleanup f6d2e6f Merge branch 'x86/urgent' into x86/iommu 682d587 ALSA: ASoC: Fix old-style trigger callback in s3c2443-ac97.c 5220ed6 ALSA: ASoC: Fix compile warnings on corgi.c 0bc286e Revert "ALSA: soc - Fix compile warnings in wm8903.c" 2caf6a1 ALSA: ASoC: Remove superfluous dependency on SND_SOC 3af4182 Merge branch 'upstream' into topic/asoc f5d4c67 ALSA: soc - Remove obsoleted sound/driver.h inclusion 1966bbd ALSA: ac97 - Add WM9715 to AC97 IDs 9171e5e ALSA: soc - Fix compile warnings in wm8903.c ade9b2f ALSA: pcxhr - change firmware filenames 480cf66 ALSA: Fix a compile warning in cs46xx_lib.c 8c2f767 ALSA: hda - Remove unnecessary caches for power states in patch_sigmatel.c c9b46f9 ALSA: hda - Use amp cache for SPDIF mute controls in patch_sigmatel.c 9a5df92 Bluetooth: Fix RFCOMM release oops when device is still in use 2e79299 Bluetooth: Fix format arguments warning a418b89 Bluetooth: Enable per-module dynamic debug messages 5ddd4a6 Bluetooth: Allow SCO audio with Asus WL-BTD202 dongle 7a9d402 Bluetooth: Send HCI Reset command by default on device initialization 12421b4 Bluetooth: Remove deprecated hci_usb driver 7b99d17 Bluetooth: Respect HCI_UART_DEBUG config in hci_ll.c 51a6fbc Bluetooth: Change simple_strtol to simple_strtoul db7aa1c Bluetooth: Fix warnings for bt_key_strings and bt_slock_key_strings c6bf514 Bluetooth: Fix leak of uninitialized data to userspace 7644d63 Bluetooth: Fix TX error path in btsdio driver 6a88adf Bluetooth: Add suspend/resume support to btusb driver a780efa Bluetooth: Handle bulk URBs in btusb driver from notify callback 2eda66f Bluetooth: Add fine grained mem_flags usage to btusb driver 93093d0 x86: provide readq()/writeq() on 32-bit too, complete a0b1131 x86: provide readq()/writeq() on 32-bit too, cleanup 2c5643b x86: provide readq()/writeq() on 32-bit too 4385cec x86: intel_cacheinfo, minor show_type cleanup 25f1304 gigaset: get rid of info() and warn() macros af4218c gigaset: remove unnecessary poll method f08340c tracepoints: Documentation TPPROTO misspelt in Documentation/tracepoints.txt 65c6dc6 tracing/branch-tracer: include missing irqflags.h c5419e6 cxgb3: Fix sparse warning and micro-optimize is_pure_response() f95be180 phy: add the ST ste10Xp PHYs 4621bf1 phy: Add file missed in previous commit. 0f0ca34 phy: power management support 914804b phy: add natsemi PHY driver 65a467f ne2: silence static never defined warnings d8e8034 bnx2: use net_device_stats nowadays available in net_device 9fd4287 niu: use net_device_stats nowadays available in net_device 70574a9 sched: move double_unlock_balance() higher f1860c3 Merge branch 'sched/urgent' into sched/core 604094f vfs, seqfile: export mangle_path() generally a838c2e markers: comment marker_synchronize_unregister() on data dependency 02834f1 ALSA: ac97 - Remove EXPERIMENTAL from CONFIG_SND_AC97_POWER_SAVE 36adba1 ALSA: hda - Remove EXPERIMENTAL from CONFIG_SND_HDA_POWER_SAVE 8caac56 aperture_64.c: clarify that too small aperture is valid reason for this code ff7a326 ALSA: hda - Don't export symbols when built-in kernel 645f10c ALSA: hda - Check MODULE instead of CONFIG_SND_HDA_INTEL_MODULE 5b3eec0 x86: ret_from_fork - get rid of jump back 3bdae4f Merge branch 'x86/debug' into x86/irq 9f1e87e x86: entry_64.S - trivial: space, comments fixup de04b10 ALSA: oxygen: add Claro halo support 57a5ef4 ALSA: hda - Add quirk for Sony VAIO VGN-SR19XN 56d1771 ALSA: hda - Clear codec->proc_widget_hook at reset 2d34e1b ALSA: hda - Add IDT/STAC-specific proc output 5ae3a13 x86: uv bau interrupt -- use proper interrupt number f1eecf0 powerpc/ppc32: static ftrace fixes for PPC32 0029ff8 powerpc: ftrace, use create_branch ec682ce powerpc: ftrace, added missing icache flush d9af12b powerpc: ftrace, fix cast aliasing and add code verification c7b0d17 powerpc: ftrace, do nothing in mcount call for dyn ftrace c072c24 ftrace: improve documentation 1d9b16d x86: move GART specific stuff from iommu.h to gart.h bb40abe ALSA: hda - Remove unused proc entry in hda_bus struct daead53 ALSA: hda - Add codec-specific proc hook 50cdaf0 ftrace: improve seq_operation of ftrace 6113b74 pkt_sched: fix sparse warning ea5693c netlink: allow empty nested attributes c7425ac tracing, alpha: fix build: add missing #ifdef CONFIG_STACKTRACE ed77a89 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6 d51090b tracing/function-graph-tracer: more output tweaks 1a05615 tracing/function-graph-tracer: adjustments of the trace informations 475ad8e decnet: compile fix for removal of byteorder wrapper 11cd41b ALSA: hda - Fix build error with CONFIG_SND_HDA_POWER_SAVE feea6a5 ixgbe: section fixes 157653c sctp: fix missing label when PROC_FS=n 1289e9e ALSA: hda - Modularize HD-audio driver 73f6a12 ALSA: sound/pci/mixart/mixart.c: Add missing snd_card_free 30d72e9 ALSA: hda - Fix creation of automatic capture mixers 529bd6c ALSA: hda - Fix PCM reconfigure c2c631e x86: entry_64.S - use ENTRY to define child_rip 3345453 x86: entry_64.S - use X86_EFLAGS_IF instead of hardcoded number fee2fba ALSA: hda - Move power_save option to hda_intel.c 986862b ALSA: hda - make some functions static d211af0 i386: get rid of the use of KPROBE_ENTRY / KPROBE_END ddeb8f2 x86_64: get rid of the use of KPROBE_ENTRY / KPROBE_END 83a8df6 tracing/function-graph-tracer: enhancements for the trace output c7cc773 Merge branches 'tracing/blktrace', 'tracing/ftrace', 'tracing/function-graph-tracer' and 'tracing/power-tracer' into tracing/core 40a914f igb: Add support for pci-e Advanced Error Reporting f411303 e100: cleanup link up/down messages d276016 ixgb: cleanup link up/down messages b30c4d8 e1000: cleanup link up/down messages a46e534 ixgbe: cleanup link up/down messages 527d47c igb: link up/down messages must follow a specific format c4106aa decnet: remove private wrappers of endian helpers 5b9ab2e Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 12666f0 ALSA: snd-usb-caiaq: clean up the control adding code 851fd7b cxgb3: Update FW loading path. ad58633 cxgb3: integrate FW and protocol engines in the kernel 5256554 cxgb3: avoid potential memory leak. 43a944f cxgb3: set hard_xmit in the netdev_ops b5ddedc Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 244e6c2 pkt_sched: gen_estimator: Optimize gen_estimator_active() 54f0191 ASoC: Allow more routing features for tlv320aic3x b235507 mac80211_hwsim: fix-up some print_mac merge damage 860c6e6 mac80211: fix unaligned access in ieee80211_wep_encrypt_data b50563a p54: fix wmm queue settings 99405f9 ath9k: Use proper TX channel width for setting channels ff37e33 ath9k: Code scrub bf8c1ac nl80211: Change max TX power to be in mBm instead of dBm 39d1ffe orinoco: Provide option to avoid unnecessary fw caching ac7cafd orinoco: Resume spectrum_cs in the same way as orinoco_cs 2cea7b2 orinoco: Cache Symbol firmware 7473431 orinoco: Separate fw caching from download cb71d9b ath9k: Handle -ENOMEM on RX gracefully 24689c8 rfkill: always call get_state() hook on resume f80b5e9 rfkill: preserve state across suspend 5925d97 mac80211: Look out for some other AP when disassoc is received. e2f367f nl80211: Report max TX power in NL80211_BAND_ATTR_FREQS 1048643 ath5k: Clean up eeprom parsing and add missing calibration data 7ac4701 ath9k: Dont update rate control for every AMPDU 40fc95d iwlwifi: TX update chicken bits 31a73fe iwlwifi: TX setup fix confusion between TX queue and TX DMA channel 25e35a5 iwlwifi: 4965 define firmware file name once 201706a iwlwifi: enable base band calibration in 5000 HW 83dde8c iwlwifi: move iwl_clear_stations_table to iwl-sta.c ce546fd iwl3945 : Fix ad-hoc mode for 3945 0e149cf ath5k: set mac address in add_interface 8f93b8b ath9k: Use straightforward PCI routines to setup the TX buffer. daa9deb ath9k: Update TX trigger level on a FIFO underrun. 788a3d6 ath9k: Fix bug in deciphering channel flags c428839 ath9k: Move TX completion routine to xmit.c 2c5a744 ath9k: Use helpers 46d14a5 ath9k: General code scrub e63835b ath9k: Remove ath9k_rate_table a8efee4 ath9k: Use rate_driver_data fe7f4a7 ath9k: Remove ath_rate_softc 5ddfac3 ath9k: Remove rate control reference in VAP ffd651c ath9k: We don't support non-HT devices, so remove superfluous code. be0418a ath9k: Revamp RX handling 2b406f1 ath9k: Nuke fixed rate handling in driver 46494e6 ath9k: Remove half/quarter rate tables 4df8ec6 ath9k: Remove ath_rate_newassoc() 7b4d273 ath9k: Remove ath_setup_rates fe60594 ath9k: Simplify RC alloc/free functions 256b775 ath9k: Merge struct ath_tx_ratectrl with ath_rate_node 3fcdfb4 ath9k: Fix panic while unregistering rfkill 1548c86 rtl8187: Fix transmission count sent to mac80211 1dc5a84 mac80211: Fix pid rate-setting algorithm to allow rate changes d507748 rt2x00: Don't switch off LED on initialization f941f85 orinoco: indicate it is using dBm in wireless_stats and spy 8eb41c9 mac80211: make Minstrel the default rate control algorithm eea0579 ALSA: pcsp - Fix starting the stream with HRTIMER_CB_IRQSAFE_UNLOCK e7dd8c1 Merge branch 'topic/misc' into topic/pcsp-fix 0bfc245 blktrace: port to tracepoints, update 5f3ea37 blktrace: port to tracepoints 414ff49 ASoC: Fix word wrapping in OMAP Kconfig 3d4cd60 smc-mca: Fix build failure due to typo. 7035560 net: release skb->dst in sock_queue_rcv_skb() 4db646b x86: microcode: fix sparse warnings f3f47a6 tracing: add "power-tracer": C/P state tracer to help power optimization 4f19962 ALSA: sound/pci/hda/hda_codec.c: cleanup kernel-doc 437f24f ftrace: add cpu annotation for function graph tracer 660c7f9 ftrace: add thread comm to function graph tracer e53a631 ftrace: let function tracing and function return run together 5a45cfe ftrace: use code patching for ftrace graph tracer df4fc31 ftrace: add function tracing to single thread 3496f92 Merge branch 'serge-next' into next dd24c00 net: Use a percpu_counter for orphan_count 1748376 net: Use a percpu_counter for sockets_allocated c1b5687 tc: policing requires a rate estimator 71bcb09 tc: check for errors in gen_rate_estimator creation 0e991ec tc: propogate errors from tcf_hash_create 5ceb40d x86: signal: unify signal_{32|64}.c e5fa2d0 x86: signal: unify signal_{32|64}.c, prepare bfeb91a x86: signal: cosmetic unification of __setup_sigframe() and __setup_rt_sigframe() 2601657 x86: signal: move {setup|restore}_sigcontext() d144d5e ftrace: adding other non-leaving .text sections 4ef8e76 ne2000: convert to net_device_ops 53cdd28 3c503: convert to net_device_ops e0b8cb0 stnic: convert to net_device_ops 7d359da apne: convert to net_device_ops 50014f1 ne2: convert to net_device_ops 4be7ef4 hp: convert to net_device_ops 0ec4d4f lne390: convert to net_device_ops 8284abe e2100: convert to net_device_ops 9a9aa14 es3210: convert to net_device_ops d269941 ne3210: convert to net_device_ops d079841 smc: convert to net_device_ops d4a97d4 hp-plus: convert to net_device_ops 458228b wd: use net_device_ops 8884c09 8390: add common net_device ops c2324b6 tracing: function graph tracer, fix b27aead netns xfrm: per-netns sysctls c68cd1a netns xfrm: /proc/net/xfrm_stat in netns 59c9940 netns xfrm: per-netns MIBs 4fb236b netns xfrm: AH/ESP in netns! 7013ec3 netns PF_KEY: per-netns /proc/pfkey 07fb0f1 netns PF_KEY: part 2 3fa87a3 netns PF_KEY: part 1 7c2776e netns xfrm: flush SA/SPDs on netns stop fbda33b netns xfrm: ->get_saddr in netns c5b3cf4 netns xfrm: ->dst_lookup in netns db983c1 netns xfrm: KM reporting in netns 7067802 netns xfrm: pass netns with KM notifications fc34acd netns xfrm: xfrm_user module in netns a6483b7 netns xfrm: per-netns NETLINK_XFRM socket bd235e3 netns xfrm: xfrm_input() fixup ddcfd79 netns xfrm: dst garbage-collecting in netns 3dd0b49 netns xfrm: flushing/pruning bundles in netns 99a6665 netns xfrm: xfrm_route_forward() in netns f6e1e25 netns xfrm: xfrm_policy_check in netns 52479b6 netns xfrm: lookup in netns cdcbca7 netns xfrm: policy walking in netns 8d1211a netns xfrm: finding policy in netns 33ffbbd netns xfrm: policy flushing in netns 1121994 netns xfrm: policy insertion in netns e92303f netns xfrm: propagate netns into policy byidx hash 284fa7d netns xfrm: state walking in netns 5447c5e netns xfrm: finding states in netns 12604d8 netns xfrm: fixup xfrm_alloc_spi() 221df1e netns xfrm: state lookup in netns 0e60245 netns xfrm: state flush in netns 98806f7 netns xfrm: trivial netns propagations 64d0cd0 netns xfrm: propagate netns into bydst/bysrc/byspi hash functions 66caf62 netns xfrm: per-netns policy hash resizing work dc2caba netns xfrm: per-netns policy counts a35f6c5 netns xfrm: per-netns xfrm_policy_bydst hash 8b18f8e netns xfrm: per-netns inexact policies 8100bea netns xfrm: per-netns xfrm_policy_byidx hashmask 93b851c netns xfrm: per-netns xfrm_policy_byidx hash adfcf0b netns xfrm: per-netns policy list 0331b1f netns xfrm: add struct xfrm_policy::xp_net 50a3065 netns xfrm: per-netns km_waitq c783714 netns xfrm: per-netns state GC work b8a0ae2 netns xfrm: per-netns state GC list 6308273 netns xfrm: per-netns xfrm_hash_work 0bf7c5b netns xfrm: per-netns xfrm_state counts 529983e netns xfrm: per-netns xfrm_state_hmask b754a4f netns xfrm: per-netns xfrm_state_byspi hash d320bbb netns xfrm: per-netns xfrm_state_bysrc hash 73d189d netns xfrm: per-netns xfrm_state_bydst hash 9d4139c netns xfrm: per-netns xfrm_state_all list 673c09b netns xfrm: add struct xfrm_state::xs_net d62ddc2 netns xfrm: add netns boilerplate c958396 xfrm: initialise xfrm_policy_gc_work statically 46a8494 3c523: fix warning in drivers/net/3c523.c 99da1a8 depca: fix warning in drivers/net/depca.c a098397 atlx: fix warning in drivers/net/atlx/atl2.c 287b6e6 tracing/function-return-tracer: set a more human readable output fb52607 tracing/function-return-tracer: change the name into function-graph-tracer 45555c0 bluetooth: fix warning in net/bluetooth/rfcomm/sock.c ff0db04 sunrpc: fix warning in net/sunrpc/xprtrdma/verbs.c e14bec2 ax25: fix warning in net/ax25/sysctl_net_ax25.c 509dcee Merge branches 'tracing/hw-branch-tracing' and 'tracing/branch-tracer' into tracing/core e6a1762 mlx4: fix warning in drivers/net/mlx4/mcg.c 3ed7cc0 dccp: fix warning in net/dccp/options.c b71e839 cassini: fix warning in drivers/net/cassini.c b58515b mlx4: fix error path in drivers/net/mlx4/en_rx.c 4174439 z85230: fix warning in drivers/net/wan/z85230.c ef0cd87 sis900: fix warning in drivers/net/sis900.c 180b65d fix warning in fs/dlm/netlink.c d3f644d dsa: fix warning in net/dsa/mv88e6060.c 2a9e797 dsa: fix warning in net/dsa/mv88e6xxx.c 55205d4 ipv6: fix warning in net/ipv6/ip6_flowlabel.c dc0a001 pkt_sched: fix warning in net/sched/sch_hfsc.c ed72b9c sunrpc: fix warning in net/sunrpc/xprtrdma/svc_rdma_transport.c be5a3c6 qla3xxx: fix warning in drivers/net/qla3xxx.c f166400 niu: fix another warning in drivers/net/niu.c 51e0f05 niu: fix warnings in drivers/net/niu.c 2e6a684 s2io: fix warning in drivers/net/s2io.c 09bb521 netns: filter out uevent not belonging to init_net cb13fc2 ixgbe: Naming interrupt vectors 70340d7 niu: Naming interrupt vectors. 9f782db tcp: skb_shift cannot cache frag ptrs past pskb_expand_head f6486d4 pkt_sched: sch_api: Remove qdisc_list_lock 723b461 net: udp_unhash() can test if sk is hashed 5bc0b3b net: Make sure BHs are disabled in sock_prot_inuse_add() 8eecaba tcp: tcp_limit_reno_sacked can become static 4ada424 mac80211: don't assume driver has been attached on registration 4d3601b ath9k: Configure AR_PHY_SWITCH_COM with apropriate antenna control ced0957 p54: honour bss_info_changed's basic_rates and other settings 40db0b2 p54pci: cache firmware for suspend/resume ffed785 p54: minor fixes d131bb5 p54: enable Mesh Point support f16f33d mac80211: Use the HT capabilities from the IE instead of the station's caps. 97b777d ath9k: make DMA memory consistent 1d450cf ath9k: Clarify we only want 32-bit DMA f1ca216 rt2x00: Detect USB BULK in/out endpoints c8f9697 rtl8187: Remove module warning and dependence on CONFIG_EXPERIMENTAL 3517afd rtl8187: feedback transmitted packets using tx close descriptor for 8187B b4572a9 rtl8187: implement conf_tx callback to configure tx queues 54ac218 rtl8187: fix 8187B throughput regression db93e7b ath9k: Race condition in accessing TX and RX buffers. 306efdd ath9k: IRQ should be disabled before calling free_irq() e97275c ath9k: Build RFKILL feature even when RFKILL subsystem is a MODULE f9bbf43 ath9k: incorrect noise floor threshold values. 9f80420 ath9k: INI update for atheros chipets. ea4a82d iwlwifi: enable custom fw regulatory solution 14b9815 cfg80211: add support for custom firmware regulatory solutions 3f2355c cfg80211/mac80211: Add 802.11d support 88dc1c3 cfg80211: mark regdomains with > NL80211_MAX_SUPP_REG_RULES invalid 02ba0b3 cfg80211: call_crda() won't tell us if CRDA was present a01ddaf cfg80211: expect different rd in cfg80211 when intersecting b8295ac cfg80211: separate intersection section in __set_regdom() 8375af3 cfg80211: remove switch from __set_regdom() 5203cdb cfg80211: remove switch from __regulatory_hint() 91e9900 cfg80211: mark negative frequencies as invalid e0737a7 iwlwifi: iwl-fh.h cleanup 34faf78 iwlwifi: some fh document fix and cleanup 352bc8d iwlwifi: configure_filter rewrite c305606 iwlwifi : fix checkpatch.pl errors dbce56a iwlwifi: replace magic constants with define 417f114 iwlwifi: rs: remove fc variable and other cleanups 9f58671 iwlwifi: consolidate station management code cee53dd iwl3945 : Simplify iwl3945_pci_probe 0e3de99 rt2x00: Fix TX failure path 0f829b1 rt2x00: Move rt73usb register access wrappers into rt2x00usb c9c3b1a rt2x00: Cleanup indirect register access 9764f3f ath5k: name pci driver "ath5k" too d6e8cc6 netfilter: fix warning in net/netfilter/nf_conntrack_ftp.c 65f233f netfilter: fix warning in net/netfilter/nf_conntrack_proto_tcp.c 1e9b51c x86, bts, ftrace: a BTS ftrace plug-in prototype 8bba1bf x86, ftrace: call trace->open() before stopping tracing; add trace->print_header() 6abb11a x86, bts, ptrace: move BTS buffer allocation from ds.c into ptrace.c ca0002a x86, bts: base in-kernel ds interface on handles 7d55718 Merge branches 'tracing/core', 'x86/urgent' and 'x86/ptrace' into tracing/hw-branch-tracing 9e0f1b7 ASoC: Clean up kernel-doc for snd_soc_dai_set_fmt 5c0d7bb ASoC: tosa: move gpio probing to machine callbacks 4451582 ASoC: Add support for TI SDP3430 9c8f1a0 ASoC: Fix TWL4030 Kconfig dependency 375e8a7 ASoC: OMAP: Add support for mono audio links in McBSP DAI 0be4305 ASoC: OMAP: Apply channel constrains to N810 machine driver b0e6481 ALSA: hda - Really fix bits value in proc output eefe93b Merge branch 'topic/fix/hda' into topic/hda ee09543 ALSA: hda - Add quirk for MSI 7260 mobo c0193f3 ALSA: pcxhr - add support for pcxhr stereo sound cards (mixer part) 2f9889a Revert "hso: Fix crashes on close." ab153d8 Revert "hso: Fix free of mutexes still in use." cd90ee1 Revert "hso: Add TIOCM ioctl handling." 7628700 ALSA: pcxhr - add support for pcxhr stereo sound cards (firmware support) 9d948d2 ALSA: pcxhr - add support for pcxhr stereo sound cards (core change) 93bf5d8 ALSA: pcxhr - add support for pcxhr stereo sound cards 9f40ac7 netfilter: nfmark IPV6 routing in OUTPUT, mangle, NFQUEUE 5f145e4 netfilter: nfmark routing in OUTPUT, mangle, NFQUEUE c6e4c66 ALSA: hda - Assign unsol tags dynamically in patch_sigmatel.c 0e19e7d Merge branch 'topic/fix/hda' into topic/hda 82894b6 ALSA: hda - Fix proc pcm rate bits fb7e067 xfrm: remove useless forward declarations 6daad37 ah4/ah6: remove useless NULL assignments 69d728b igb: loopback bits not correctly cleared from RCTL register 9b07f3d igb: remove unneeded bit refrence when enabling jumbo frames 7a6b6f5 DCB: fix kconfig option 411c41e aoe: remove private mac address format function 9c8f92a hso: Hook up ->reset_resume 7ea3a9a hso: Add TIOCM ioctl handling. 52429eb hso: Fix free of mutexes still in use. 89930b7 hso: Fix URB submission -EINVAL. 4a3e818 hso: Fix crashes on close. bab04c3 hso: Add new usb device id's. 47fd5b8 netdev: add HAVE_NET_DEVICE_OPS e951e4a x86: fix unused variable warning in arch/x86/kernel/hpet.c 14bfc98 tracing, tty: fix warnings caused by branch tracing and tty_kref_get() 0ace285 tcp: handle shift/merge of cloned skbs too 111cc8b tcp: add some mibs to track collapsing 92ee76b tcp: Make shifting not clear the hints 832d11c tcp: Try to restore large SKBs while SACK processing f58b22f tcp: make tcp_sacktag_one able to handle partial skb too adb92db tcp: Make SACK code to split only at mss boundaries e8bae27 tcp: more aggressive skipping e1aa680 tcp: move tcp_simple_retransmit to tcp_input 4a17fc3 tcp: collapse more than two on retransmission 200036c CRED: fix sparse warnings a21bba9 net: avoid a pair of dst_hold()/dst_release() in ip_push_pending_frames() 6ded6ab User namespaces: use the current_user_ns() macro 18b6e04 User namespaces: set of cleanups (v2) 2e77d89 net: avoid a pair of dst_hold()/dst_release() in ip_append_data() 4db0acf net: gen_estimator: Fix gen_kill_estimator() lookups 3f0947c pkt_sched: sch_drr: fix drr_dequeue loop() 4b40eed infiniband: Kill directly reference of netdev->priv 486bf8d netdevice sbni: Convert directly reference of netdev->priv 5c94afd tokenring/3c359.c: Prevent possible mem leak when open failed 138a5cd tokenring/3c359.c: Fix error message when allocating tx_ring d0cc10a tokenring/3c359.c: fix allocation null check 85920d4 8139too: use err.h macros 3755810 net: Make sure BHs are disabled in sock_prot_inuse_add() fde22f2 ASoC: Lower priority of resume work logging 67c9151 ASoC: Flag AD1980 as an AC97 interface 3ba9e10 ASoC: Remove DAI type information 4813ead netfilter: nf_conntrack_ftp: change "partial ..." message to pr_debug() 6f893fb Merge branches 'tracing/branch-tracer', 'tracing/fastboot', 'tracing/ftrace', 'tracing/function-return-tracer', 'tracing/power-tracer', 'tracing/powerpc', 'tracing/ring-buffer', 'tracing/stack-tracer' and 'tracing/urgent' into tracing/core 64b7482 Merge branch 'sched/rt' into sched/core ef1681d ALSA: hda - Add probe_mask quirk for Medion MD96630 b0bd53a ASoC: TWL4030: Add helper function for output gain controls 0d33ea0 ASoC: TWL4030: Add CGAIN volume control c10b82c ASoC: TWL4030: Change the Master volume control to TLV f8d05bd ASoC: TWL4030: Disable soft-volume 55b8bac ASoC: Use supplied DAI for WM9713 rather than substream 328bd89 netfilter: nf_conntrack_proto_sctp: avoid bogus warning ad07e91 x86 defconfig: increase CONFIG_LOG_BUF_SHIFT b47b928 x86: drop REBOOT_CF9_COND from reboot fallback chain 920de80 net: Make sure BHs are disabled in sock_prot_inuse_add() 1f87e23 eth: Declare an optimized compare_ether_addr_64bits() function ef8ef5f ALSA: hda: Added an ALC888 model entry for Fujitsu-Siemens Amilo Xa3530 a9cb5c9 ALSA: hda - No 'Headphone as Line-out' swich without line-outs 70eb1bf axnet_cs: Fix build after net device ops ne2k conversion. 6f756a8 net: Make sure BHs are disabled in sock_prot_inuse_add() be77e59 net: fix tunnels in netns after ndo_ changes c25eb3b net: Convert TCP/DCCP listening hash tables to use RCU 8c862c2 dccp: Header option insertion routine for feature-negotiation d371056 dccp: Support for Mandatory options 02fa460 dccp: Increase the scope of variable-length htonl/ntohl functions 71c262a dccp: API to query the current TX/RX CCID b20a9c2 dccp: Set per-connection CCIDs via socket options 2c62ad7 myri10ge: update firmware headers 4ee2ac5 myri10ge: update DCA comments c1fd3b9 net: af_netlink should update its inuse counter 04f258c net: some optimizations in af_inet 958086d vfs, seqfile: fix comment style on mangle_path 65afa5e tracing/function-return-tracer: free the return stack on free_task() 3b71e9e x86: HPET: fix sparse warning 5f5db59 x86, debug: remove the confusing entry in call trace a1a00b5 x86: boot - fix sparse warnings 3b6c52b x86: introduce ENTRY(KPROBE_ENTRY)_X86 assembly helpers to catch unbalanced declaration v3 eae849c tracing/function-return-tracer: don't trace kfree while it frees the return stack 6efdcfa x86: KPROBE_ENTRY should be paired wth KPROBE_END 322648d x86: include ENTRY/END in entry handlers in entry_64.S 813b852 Merge branch 'ppc/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/powerpc 050dc69 x86: remove duplicate #define from 'cpufeature.h' 8a2503f x86: move dwarf2 related macro to dwarf2.h e38da59 tracing/stack-tracer: avoid races accessing file 8d26487 tracing/stack-tracer: introduce CONFIG_USER_STACKTRACE_SUPPORT cffa10a tracing/stack-tracer: fix locking and refcounts 8d7c6a9 tracing/stack-tracer: fix style issues 0429149 trace: fix compiler warning in branch profiler 69bb54e ftrace: add ftrace_off_permanent 033601a ring-buffer: add tracing_off_permanent e58918a ftrace: scripts/recordmcount.pl support for ARM 3a3d04a ftrace: specify $alignment for sh architecture 2bcd521 trace: profile all if conditionals bac28bf trace: branch profiling should not print percent without data 45b7974 trace: consolidate unlikely and likely profiler 42f565e trace: remove extra assign in branch check c204f72 ftrace: create default variables for archs in recordmcount.pl 42e007d ftrace: add support for powerpc to recordmcount.pl script 0da85c0 sh: dynamic ftrace support. 4e42ebd x86: hypervisor - fix sparse warnings 1d926f2 init/main.c: use ktime accessor function in initcall_debug code c450d78 x86: vmware - fix sparse warnings 2456d73 x86: signal: cosmetic unification of sys_rt_sigreturn() 666ac7b x86: signal: cosmetic unification of sys_sigaltstack() 5c9b3a0 x86: signal: cosmetic unification of including headers cbe2f5a tracing: allow tracing of suspend/resume & hibernation code again b54d3de tracing: identify which executable object the userspace address belongs to 74e2f33 vfs, seqfile: make mangle_path() global 02b6751 tracing: add support for userspace stacktraces in tracing/iter_ctrl 82f60f0 tracing/function-return-tracer: clean up task start/exit callbacks f201ae2 tracing/function-return-tracer: store return stack into task_struct and allocate it dynamically a0a70c7 Merge branches 'tracing/profiling', 'tracing/options' and 'tracing/urgent' into tracing/core f377fa1 x86: clean up stack overflow debug check 3aeb95d x86_64: fix the check in stack_overflow_check ca9eed7 Merge commit 'v2.6.28-rc6' into x86/debug 3889d0c x86: revert default reboot method to REBOOT_KBD 4805286 ALSA: hda - fix build warning when CONFIG_PROC_FS=n 9415e1c ALSA: hda - fix DisplayPort naming a5fcf89 ALSA: hda - document the ELD proc interface acb0599 ALSA: hda - ELD proc interface write updates 03284c8 ALSA: hda - make HDMI messages more user friendly cc02b83 ALSA: hda - report selected CA index for Audio InfoFrame b83923a ALSA: hda - minor HDMI code cleanups c810841 x86: split out some macro's and move common code to paranoid_exit, fix c46920d Merge branch 'for-david' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 f5f4cf0 igb: do not use phy ops in ethtool test cleanup for non-copper parts 21fc578 enic: misc cleanup items: 8459645 enic: move wmb closer to where needed: before writing posted_index to hw cb3c766 enic: mask off some reserved bits in CQ descriptor for future use 27372bf enic: driver/firmware API updates 86ca9db enic: enable ethtool LRO support 6476a90 WAN pc300too.c: Fix PC300-X.21 detection 7236470 WAN: syncppp.c is no longer used by any kernel code. Remove it. e022c2f WAN: new synchronous PPP implementation for generic HDLC. e1f024e WAN: Simplify sca_init_port() in HD64572 driver. fcfe9ff WAN: Correct comments in hd6457[02].c 0b59cef WAN: HD64572 drivers don't use next_desc() anymore. 61e0a6a WAN: Simplify HD64572 drivers. 9678343 WAN: don't print HD64572 driver versions anymore. 0954ed8 WAN: Simplify HD64572 status handling. 0446c3b WAN: rework HD64572 interrupts a bit. b0942f7 WAN: HD64572 already handles TX underruns with DMAC. 09fd65a WAN: TX-done handler now uses the ownership bit in HD64572 drivers. abc9d91 WAN: convert HD64572-based drivers to NAPI. 3022439 WAN: remove SCA support from SCA-II drivers 8859736 WAN: remove SCA II support from SCA drivers 6b40aba WAN: split hd6457x.c into hd64570.c and hd64572.c 4e4fd4e ne2k: convert to net_device_ops 99921b7 eql: convert to net_device_ops 974acda sc92031: convert to net_device_ops da1c14a qla3xxx: convert to net_device_ops a8652d2 hamachi: convert to net_device_ops c64213c bnx2x: convert to net_device_ops 6557d7b ns83820: convert to net_device_ops bfd82c3 yellowfin: convert to net_device_ops a7bd89c r6040: convert to net_device_ops 09ab9e7 sis900: convert to net_device_ops 2f30b1f tehuti: convert to net_device_ops c3ecb9f sfc: convert to net_device_ops 1abd266 netxen: convert to net_device_ops 8765264 dl2k: convert to net_device_ops 0421eae bnx2: convert to net_device_ops 3addc56 mlx4: convert to net_device_ops 8126089 myri10ge: convert to net_device_ops 5d1d07d via-rhine: convert to net_device_ops 8668ae9 qlge: fix sparse warnings 25ed784 qlge: convert to net_device_ops 0402509 s2io: convert to net_device_ops e48714b jme: convert driver to net_device_ops e245a38 tg3: Update version to 3.96 2fbb69a broadcom: Add 57780 support 321d32a tg3: Add 57780 support 2243584 tg3: Allow GPHY powerdown on 5761 d5fe488 tg3: Embrace pci_ioremap_bar() dfe00d7 tg3: Extract FW ver from alt NVRAM formats 6833c04 tg3: Enable GPHY APD on select devices 5e7dfd0 tg3: Prevent corruption at 10 / 100Mbps w CLKREQ 52f4490 tg3: Qualify use of tp->pcix_cap ad82926 tg3: Use NET_IP_ALIGN cf005b1 net: remove redundant argument comments 6c0bce3 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 e243455 e1000e: check return code from NVM accesses and fix bank detection a20e4cf e1000e: fix incorrect link status when switch module pulled 8452759 e1000e: store EEPROM version number to prevent unnecessary NVM reads 0285c8d e1000e: cosmetic newline in debug message 5c48ef3 e1000e: sync change flow control variables with ixgbe 8f12fe8 e1000e: link up/down messages must follow a specific format 75eb0fa e1000e: ESB2 config after link up 438b365 e1000e: check return of pci_save_state 1605927 e1000e: update comments listing supported parts for each MAC family 63dcf3d e1000e: 82571 check for link fix on 82571 serdes 5aa49c8 e1000e: commit speed/duplex changes for m88 PHY 005cbdf e1000e: disable correctable errors for quad ports while going to D3 7e3aab4 inet_diag: Missed conversion after changing inet ehash lockl to spinlocks. 176301e netdevice pc300: Add the reason about PC300 BROKEN in Kconfig 6636e11 netdevice pc300: Convert directly reference of netdev->priv 2baf8a2 netdevice hdlc: Convert directly reference of netdev->priv f757fec net: use net_eq() in INET_MATCH and INET_TW_MATCH b202226 ALSA: hda - Fix build without CONFIG_PROC_FS b8b1d08 x86: entry_64.S: split out some macro's and move common code to paranoid_exit e2f6bc2 x86: entry_64.S: factor out save_paranoid and paranoid_exit c002a1e x86: introduce save_rest and restructure the PTREGSCALL macro in entry_64.S c70bfa8 Merge branch 'topic/fix/hda' into topic/hda d6752a5 ALSA: hda - mark Dell studio 1535 quirk a1eb5fe wireless: missing include in lib80211.h 3461fc1 rtl8187: Update file authorship in comments 5984048 Update of MAINTAINERS for RTL8187 4f6d4d1 wireless: clean up sysfs code using %pM 96dd603 MAINTAINERS: claim maintenance over rtl818x drivers da81ded rtl8180: adapt for deprecated IEEE80211_CONF_SHORT_SLOT_TIME flag 6272710 mac80211: add explicit padding in struct ieee80211_tx_info beb2a7f net/ieee80211 -> drivers/net/ipw2x00/libipw_* rename 0795cd2 ipw2x00: relocate ipw2100/ipw2200 to common directory 2ba4b32 lib80211: consolidate crypt init routines 274bfb8 lib80211: absorb crypto bits from net/ieee80211 dfe1baf orinoco: fix last beacon reporting on 64-bit systems 1d047de mac80211: remove unnecessary include. 8ff48a8 rt2x00: Fix race condition when using inderect registers bad1363 rt2x00: Optimize get_duration / get_duration_res 87c1687 drivers/net/wireless/ath9k/rc.c: use ARRAY_SIZE f9f88fe mac80211_hwsim: Update documentation (AP mode enabled) 9902b18 mac80211: rc80211_pid eliminate sparse warnings 798b7ad rt2x00: Cleanup TX/RX entry handling 0ed94ea mac80211: remove more excess kernel-doc e4e58cf iwlwifi: use Rx single frame mode (one Rx frame per RB) 01ef932 iwlwifi: get some more information about command failure c24f081 iwl3945 : Simplify iwl3945_send_beacon_cmd cb299ba iwlwifi: move iwl_print_hex_dump to iwl-debug.h e720ce9 iwl3945 : Fix Sparse Warnings 21c339b iwlwifi: move spectrum measurement code to iwl-spectrum.c file 4ddbb7d iwlwifi: revamp tx scheduler byte count tables handling 8d86422 iwlwifi: move rx queue read pointer into rxq 5c5aa3f iwlwifi: update iwl-commands.h for 3 stream support a71c8f6 iwlwifi: don't fail power set when calibration is not done yet 1933577 iwlwifi: trivial fix in includes 9bdf5ec iwl3945: fix resume for ADHOC network ada1751 iwlagn: fix resume for ADHOC network 1e87d68 b43: remove rate index warning 7f3704e b43legacy: implement short slot and basic rate handling 3e4127f ipw2200: make association only if SSID is known. ffb8267 ath9k: enable RXing of beacons on STA/IBSS 296bf2a ath5k: allow APs to receive beacons 6a53a8a ath5k: Fix IMR init 392dff8 ath9k : Display MAC/BB and RF version at startup (v2) 4821277 mac80211: fix BUILD_BUG_ON() caused by misalignment on arm 8b0162a ath5k: ignore the return value of ath5k_hw_noise_floor_calibration 6d64360 rt2x00: Fix BUG_ON() with antenna handling 8058409 rt2x00: Block set_key() during suspend/shutdown 9a95dba rt2x00: Fix LED state handling 3d8606a rt2x00: Remove RATE_BASIC flag 1c740ed Move all rtl818x files to a common directory. 55b3961 mac80211_hwsim: enable Mesh Point operation a3c9aa5 mac80211: disable BSSID filtering for mesh interfaces b7b05fe ssb: struct device - replace bus_id with dev_name(), dev_set_name() 582c1b5 libertas: Fine grained configuration of wake-on-lan. 50da3ea ipw2100, ipw2200: select LIB80211 3d29b0c netdevice zd1201: Convert directly reference of netdev->priv to netdev_priv() 4f90473 ALSA: ASoC: Fix typo in snd_soc_card update documentation 42e81c9 ALSA: hda - fix sparse warning 39639fa ASoC: Improve error reporting for AC97 reset failures 0e734ad ASoC: Staticise pxa2xx_pcm_ops 0c758bd ASoC: OMAP: Fix preprocessor filled DAI name in McBSP DAI 2dac921 ASoC: Add Marvell Zylonite machine support 14ae22b x86: entry_64.S: rename e8a0e27 x86: clean up after: move entry_64.S register saving out of the macros, fix dee89c4 ASoC: Merge snd_soc_ops into snd_soc_dai_ops a47cbe7 ASoC: Move DAI structure definitions into new soc-dai.h 5de27b6 ASoC: ssm2602: Update supported stream formats faab5a3 ASoC: ssm2602: Fix priv substreams refs bd903bd ASoC: Add abbreviation to maintainers for searchability 8750654 ASoC: Rename snd_soc_card to snd_soc_machine 98aa9c8 pkt_sched: sch_drr: Fix qlen in drr_drop() 9d2f472 ixgbe: convert directly reference of netdev->priv 11b444d ALSA: hda - Move HD-audio Kconfig items to sound/pci/hda/Kconfig e7ee058 ALSA: hda - Make CONFIG_SND_HDA_RECONFIG for codec reconfiguration f208dba ALSA: hda - Release ELD proc file b94d353 ALSA: hda - Fix double free of jack instances 957ad01 sched: update comment for move_task_off_dead_cpu fc02e90 Merge commit 'v2.6.28-rc6' into sched/core 0623536 ALSA: hda - Add missing static for snd_hda_eld_proc_new() inline funciton 3ddd972 x86: signal: rename COPY_SEG_STRICT to COPY_SEG_CPL3 acdda79 ALSA: hda - support writing to the ELD proc file db74210 ALSA: hda: modify monitor name to be consistent with other ELD proc items 218b5ff ALSA: hda - properly print ELD sample bits 75a287d Merge branch 'topic/fix/hda' into topic/hda c4900be ixgbe: add SFP+ driver support 859ee3c DCB: Add support for DCB BCN 0eb3aa9 DCB: Add interface to query the state of PFC feature. 33dbabc DCB: Add interface to query # of TCs supported by device 4613218 DCB: Add interface to query for the DCB capabilities of an device. 2f90b86 ixgbe: this patch adds support for DCB to the kernel and ixgbe driver 9db66bd net: convert TCP/DCCP ehash rwlocks to spinlocks b8c26a3 ipgre: convert to netdevice_ops 1326c3d ipv6: convert tunnels to net_device_ops 23a12b1 ipip: convert to net_device_ops 748ff68 hippi: convert driver to net_device_ops fd8f499 defxx: convert driver to net_device_ops 145186a fddi: convert to new network device ops 007c383 ipmr: convert ipmr virtual interface to net_device_ops aa18e9e dummy: convert to net_device_ops 0082982 netdev: add more functions to netdevice ops 1725b82 ALSA: hda - make laptop-eapd model back for AD1986A 6ab33d5 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 7cc45e6 powerpc/ppc32: ftrace, dynamic ftrace to handle modules f48cb8b powerpc/ppc64: ftrace, handle module trampolines for dyn ftrace e4486fe powerpc: ftrace, use probe_kernel API to modify code 8fd6e5a powerpc: ftrace, convert to new dynamic ftrace arch API 6d07bb4 powerpc: ftrace, do not latency trace idle dcd072e x86: clean up after: move entry_64.S register saving out of the macros 018a7bf netfilter: ip{,6}t_policy.h should include xp_policy.h 7be6065 netdevice wanrouter: Convert directly reference of netdev->priv 826dd0e netdevice ni65: Convert directly reference of netdev->priv c8019bf netdevice ppp: Convert directly reference of netdev->priv f7b2927 smsc95xx: add tx checksum offload support 8761169 sfc: Fix dependency for SFC_MTD 47a1a1d pkt_sched: remove unnecessary xchg() in packet classifiers b94c8af pkt_sched: remove unnecessary xchg() in packet schedulers c19d036 isdn: isdn_net.c annotate struct ip_ports and trivial sparse fixes 13d2a1d pkt_sched: add DRR scheduler 0c19b0a netlink: avoid memset of 0 bytes sparse warning c010360 netdevice lance: Convert directly reference of netdev->priv 5377152 mv643xx_eth: calculate descriptor pointer only once in rxq_refill() f61e554 mv643xx_eth: move receive error handling out of line 66e63ff mv643xx_eth: implement ->set_rx_mode() 66823b9 mv643xx_eth: inline txq_alloc_desc_index() 37a6084 mv643xx_eth: introduce per-port register area pointer 10a9948 mv643xx_eth: checkpatch fixes 21d1a16 net: ip_sockglue.c add static, annotate ports' endianness 00b5e50 myri10ge: remove hardcoded sram_size d6279c8 myri10ge: fix per-slice rx/tx_dropped counters d99015b x86: move entry_64.S register saving out of the macros c032a2d Merge branch 'x86/cleanups' into x86/irq 87f7606 x86: fix wakeup_cpu with numaq/es7000 v2 - call ->update_genapic() a61fc1e netdev/smc91x: unify Blackfin code a bit and use proper read/write functions 3d3e35a dccp: Fix bracing in dccp_feat_list_lookup. f4bdd26 netdevice hamradio: Convert directly reference of netdev->priv 56bc0f9 netfilter: nf_conntrack_proto_gre: spread __exit f3a216d netdevice: 82596: Convert netdev->priv to netdev_priv 61d3015 netfilter: ip6table_filter: merge LOCAL_IN and FORWARD hooks b0ceb56 netfilter: xt_recent: don't save proc dirs d214c75 filter: add SKF_AD_NLATTR_NEST to look for nested attributes 68fd991 igb: Fix tx/rx_ring_count parameters for igb on suspend/resume/ring resize b2d5653 igb: simplify swap in clean_rx_irq if using packet split 3ef6b23 igb: update name to reflect new hardware 5caea4e net: listening_hash get a spinlock per bucket bb55746 x86: fix arch/x86/kernel/setup.c build warning when !CONFIG_X86_RESERVE_LOW_64K 90accd6 Merge branch 'linus' into x86/memory-corruption-check 77be80e x86: fix arch/x86/kernel/genx2apic_uv_x.c build warning when !CONFIG_HOTPLUG_CPU fbc2a06 Merge branch 'linus' into x86/uv 5b2d1ec ALSA: hda: Added Realtek ALC888 model entry for Acer Aspire 4930G laptop 41dda0f ALSA: azx_probe() cleanup d8b83c5 acenic: convert to net_device_ops 2c9171d niu: convert to net_device_ops b94426b forcedeth: convert to net_device_ops 7c7d64b tg3: convert to net_device_ops 0edc352 ixgb: convert to net_device_ops afe29f7 enic: convert to net_device_ops 52256cf ppp: convert to net_device_ops acc7842 e100: convert to net_device_ops 2e5c692 igb: convert to net_device_ops 39a11bd via-velocity: convert to net_device_ops 0e7614b e1000: convert to net_device_ops 80ff32b cxgb2: convert to net_device_ops dd75269 cxgb3: convert to net_device_ops 825a84d atlx: convert to net_device_ops 1e058ab atl1e: convert to net_device_ops 758e43b tun: convert to net_device_ops 48dfcde 8139: convert to net_device_ops 8b4ab28 r8169: convert to net_device_ops f80d032 skge: convert to net_device_ops 1436b30 sky2: convert to net_device_ops 651c246 e1000e: convert to net_device_ops eb7cc59 bonding: convert to net_device_ops 656299f vlan: convert to net_device_ops 5bc3eb7 ip: convert to net_device_ops for ioctl 54a30c9 macvlan: convert to net_device_ops 4456e7b veth: convert to net_device_ops a2dbb88 bridge: convert to net_device_ops 8dfcdf3 ifb: convert to net_device_ops c02373b netdev: convert loopback to net_device_ops ccad637 netdev: expose ethernet address primitives eeda3fd netdev: introduce dev_get_stats() d314774 netdev: network device operations infrastructure 6b41e7d net: af_unix should use KERN_INFO instead of KERN_DEBUG d171235 drivers/s390/ - csum_partial - remove unnecessary casts 07f0757 include/net net/ - csum_partial - remove unnecessary casts a7a0d6a net: inet_diag_handler structs can be const 14e943d net: make /proc/net/protocols namespace aware 3680453 net: af_packet should update its inuse counter 9789cfe nfsctl: add headers for credentials 7596b27 coda: fix creds reference ec4e0e2 sched: fix inconsistency when redistribute per-cpu tg->cfs_rq shares 9b0db7e ASoC: Convert blackfin machines to use DAI accessor functions d0c3663 ASoC: s3c24xx_uda134x DAI accessor functions and static cleanup df573d2 ASoC: Add support for omap2evm board 08bd168 ASoC: Add driver for the Lyrtech SFFSDR board 1c0090c ASoC: Add PCM3008 ALSA SoC driver 8563964 ALSA: hda - Show missing GPIO unsol bits 60a5151 profiling: clean up profile_nop() 9676e73 Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core 86fa2f6 ftrace: fix selftest locking 3ac3ba0 Merge branch 'linus' into sched/core ae8cb4c ALSA: hda: compact ELD output messages d39b435 ALSA: hda: make global snd_print_pcm_bits() 06f69d1 ALSA: hda: minor output message cleanups 5b87ebb ALSA: hda: rename sink_eld to hdmi_eld 4e19c58 ALSA: hda: minor code cleanups 198d6ba Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 c6798d2 ALSA: hda: EAPD mute on suspend 9c8641e ALSA: hda: HDMI channel mapping cleanups 698544d ALSA: hda: HDMI channel allocations for audio infoframe 903b21d ALSA: hda: make global snd_print_channel_allocation() 5457a98 ALSA: hda: make standalone hdmi_fill_audio_infoframe() cea555d Merge branch 'linux-2.6' into next 78608dd powerpc/mpic: Use new smp_request_message_ipi 25ddd73 powerpc: Provide a separate handler for each IPI action a6326e9 powerpc: Correct page-in counter for CMM with 64k pages 22059a9 powerpc/pmac: Use of_find_node_with_property() in pmac_setup_arch() ba82efb powerpc: Use of_find_node_with_property() in cell_iommu_fixed_mapping_init() 5401817 powerpc: Use for_each_node_with_property() in of_irq_map_init() 1e291b1 of: Add helpers for finding device nodes which have a given property ae564c6 powerpc: Optimise mutex 957ab07 powerpc: Optimise smp_rmb 46d075b powerpc: Optimise smp_wmb a4e22f0 powerpc: Update 64bit __copy_tofrom_user() using CPU_FTR_UNALIGNED_LD_STD 7526ff7 powerpc: Remove superfluous WARN_ON() from dma-noncoherent.c efc3624 powerpc: Tell gcc when we clobber the carry in inline asm d5e5491 powerpc: udbg-based backend for hvc_console 8c65318 serial/pmac_zilog: Add console polling support 9b82f3e powerpc/ps3: Replace the flip_ctl logic in ps3av and ps3fb by a mutex a225063 ftrace: preemptoff selftest not working ca3ea02 ASoC: Remove unused snd_soc_machine_config declaration 2af7529 sound: Fix warnings relating to ignored return value in snd_card_register b5fe363 x86: use update_genapic to get rid of ES7000_CLUSTERED_APIC v2 f632ddc x86: fix wakeup_cpu with numaq/es7000, v2, fix #2 6497760 x86: ia32_signal: change order of storing in setup_sigcontext() 047ce93 x86: ia32_signal: remove using temporary variable 8c6e5ce x86: ia32_signal: cleanup macro RELOAD_SEG d71a68d x86: ia32_signal: introduce COPY_SEG_CPL3 b78a5b5 x86: ia32_signal: cleanup macro COPY cbe9ee0 Merge branch 'x86/urgent' into x86/cleanups a1afd01 x86: default to SWIOTLB=y on x86_64 72f2b89 ASoC: Move uda134x_codec.h to uda134x.h a0bd65f ASoC: Blackfin: always set a default value for that GPIO range 27b9be5 ASoC: Blackfin: Simplify the MMAP_SUPPORT macros protected code caa4583 ASoC: Blackfin: do not force TWI bus for ssm2602 codec 0cade26 ASoC: Fix Blackfin AC97 DAI probe function return code a89e611 ASoC: Blackfin: Fix AD1980/1 build with MMAP support disabled 67f854b ASoC: Blackfin: add multi-channel function support 9905ed3 ASoC: AD1980 codec: add multi-channel function support a11311d ASoC: Blackfin: updates Kconfig for SPORT cb6e206 ASoC: DaVinci: Fix audio stall when doing full duplex cd896c3 ALSA: hda - Allow multiple imux for matrix-type mixers of ALC codecs e17b666 netfilter: nf_conntrack: fix warning and prototype mismatch d9e1500 netfilter: nfnetlink_log: fix warning and prototype mismatch 19abb7b netfilter: ctnetlink: deliver events for conntracks changed from userspace 226c0c0 netfilter: ctnetlink: helper modules load-on-demand support 0231022 tracing/function-return-tracer: add the overrun field 0619faf tracing/ftrace: make nop tracer using tracer flags adf9f19 tracing/ftrace: implement a set_flag callback for tracers a581780 Merge branch 'topic/fix/hda' into topic/hda af9f341 ALSA: hda - Fix restore of pin configs at resume for STAC/IDT codecs 2c88587 ALSA: hda - Use init callback in stac92xx_resume() e4973e1 ALSA: hda - Create jack detection elements in build_controls f3a5c54 Merge branch 'master' into next 5a209c2 Merge branches 'tracing/branch-tracer' and 'tracing/urgent' into tracing/core 5f1e71b ALSA: ELD proc interface for HDMI sinks 7f4a9f4 ALSA: create hda_eld.c for ELD routines and proc interface 33deeca ALSA: introduce snd_print_pcm_rates() 2eca83b ALSA: hda: remove redundant get_amp_nid() bc4a68f ALSA: snd-powermac: enable mic on iMac G4 54ac14a x86: fix wakeup_cpu with numaq/es7000, v2, fix 8d702f2 ASoC: Build tlv320aic23 cleanly 2adb983 ASoC: Manage VMID mode for WM8990 be1b87c ASoC: Enable WM8990 ADC clocking workaround ba533e9 ASoC: Allow writes to uncached registers in WM8990 569712b x86: fix wakeup_cpu with numaq/es7000, v2 4dc06f9 netfilter: nf_conntrack: connection tracking helper name persistent aliases 528a3a6 netfilter: ctnetlink: get rid of module refcounting in ctnetlink bfe2967 netfilter: ctnetlink: use EOPNOTSUPP instead of EINVAL if the conntrack has no helper 238ede8 netfilter: ctnetlink: use nf_conntrack_get instead of atomic_inc 7ad933d ASoC: Machine driver for for s3c24xx with uda134x 1cad1de ASoC: UDA134x codec driver 0c726da tracing: branch tracer, fix writing to trace/trace_options 6e5d9db ASoC: Fix for master playback/capture volume range for TWL4030 codec 9a57f7f net: sctp should update its inuse counter a8076d8 net: af_unix should update its inuse counter 0bd7b79 x86: entry_64.S: remove whitespace at end of lines 9dacc71 Merge commit 'v2.6.28-rc5' into x86/cleanups 796359d ALSA: hda-intel: reorder HDMI audio enabling sequence c0cea0d ALSA: hda: STAC_DELL_M6 EAPD 3ab9093 ALSA: hda: alc883 model for ASUS P5Q-EM boards 3f8e402 Merge branches 'tracing/branch-tracer', 'tracing/ftrace', 'tracing/function-return-tracer', 'tracing/tracepoints' and 'tracing/urgent' into tracing/core 248969a net: af_unix can make unix_nr_socks visbile in /proc c3ccc12 netdevice chelsio: Convert directly reference of netdev->priv 4d24b52 ematch: simpler tcf_em_unregister() 6eba6a3 net: Cleanup of af_unix 1910299 dccp: Tidy up setsockopt calls dd9c0e3 dccp: Deprecate Ack Ratio sysctl 2945055 dccp: Feature negotiation for minimum-checksum-coverage 49aebc6 dccp: Deprecate old setsockopt framework 0c11683 dccp: Mechanism to resolve CCID dependencies 3f2c31d virtio_net: VIRTIO_NET_F_MSG_RXBUF (imprive rcv buffer allocation) 0276b49 virtio_net: hook up the set-tso ethtool op 0a888fd virtio_net: Recycle some more rx buffer pages 908cd2d net: use %pF for /proc/net/ptype 5635c10 net: make sure struct dst_entry refcount is aligned on 64 bytes 536533e rcu: documents rculist_nulls 3ab5aee net: Convert TCP & DCCP hash tables to use RCU / hlist_nulls 88ab193 udp: Use hlist_nulls in UDP RCU code bbaffac rcu: Introduce hlist_nulls variant of hlist e8b2dfe TPROXY: implemented IP_RECVORIGDSTADDR socket option 8164f1b ipv4: Fix ARP behavior with many mac-vlans 6ea7ae1 e1000e: enable ECC correction on 82571 silicon f004f3e phylib: make mdio-gpio work without OF (v4) 72af187 phylib: rename mdio-ofgpio to mdio-gpio 6817ba2 dm9000: Fix build error. 227a837 markers/tracpoints: fix non-modular build cda2836 pegasus: minor resource shrinkage 74ad0a5 ixgbe: Fix usage of netif_*_all_queues() with netif_carrier_{off|on}() 0a7ad64 tracepoints: format documentation 0dcf8fe tracepoints, docs: marker_synchronize_unregister->tracepoint_synchronize_unregister 8fd88d1 tracepoints: documentation fix for teardown 7e066fb tracepoints: add DECLARE_TRACE() and DEFINE_TRACE() 32f8574 tracepoints: use modules notifiers 5f38267 tracepoints: do not put arguments in name c420970 tracepoints: use unregister return value da7b3ea tracepoints: use rcu_*_sched_notrace de0baf9 tracepoints: fix disable 2504ea5 tracepoints: samples, fix teardown a0bca6a markers: create DEFINE_MARKER and GET_MARKER (new API) c1df1bd markers: auto enable tracepoints (new API : trace_mark_tp()) a419246 markers: use module notifier 021aeb0 markers: use rcu_*_sched_notrace and notrace e3f8c4b markers: add missing stdargs.h include, needed due to va_list usage 2bdba31 markers: fix unregister 954e100 rcu: add rcu_read_*_sched_notrace() e7d3737 tracing/function-return-tracer: support for dynamic ftrace on function return tracer b01c746 tracing/function-return-tracer: add a barrier to ensure return stack index is incremented in memory 9858096 Merge branch 'tracing/ftrace' into tracing/function-return-tracer 072b40a tracing/branch-tracer: fix a trace recursion on branch tracer 1c80025 tracing/ftrace: change the type of the init() callback e6e7a65 tracing/ftrace: fix unexpected -EINVAL when longest tracer name is set ee02a2e ftrace: make filtered functions effective on setting 982c350 ftrace: fix dyn ftrace filter 20e5227 ftrace: allow NULL pointers in mcount_loc 31e8890 ftrace: pass module struct to arch dynamic ftrace functions d51ad7a ftrace: replace raw_local_irq_save with local_irq_save 918c115 ftrace: do not process freed records b17e8a3 ftrace: disable ftrace on anomalies in trace start and stop f3c7ac4 ftrace: remove condition from ftrace_record_ip c91add5 Merge branches 'tracing/fastboot', 'tracing/ftrace' and 'tracing/urgent' into tracing/core e2da9ba Merge branch 'topic/fix/hda' into topic/hda e50a906 capabilities: define get_vfs_caps_from_disk when file caps are not enabled 71cfc90 ASoC: Add WM8728 codec driver 2bef901 ASoC: Revert "ASoC: Add new parameter to s3c24xx_pcm_enqueue" 127e82e ALSA: hda - Support Headphone and Speaker volumes control on VAIO 8a75f4f ALSA: pcsp - Use HRTIMER_CB_IRQSAFE_UNLOCKED ef711cf net: speedup dst_release() f30ab41 pkt_sched: Remove qdisc->ops->requeue() etc. 38a7ddf tcp: remove an unnecessary field in struct tcp_skb_cb 00bcd52 isdn: use %pI4, remove get_{u8/u16/u32} and put_{u8/u16/u32} inlines 722024d x86: irq: fix apicinterrupts on 64 bits 2b82892 Merge branch 'master' into next 3a3b7ce CRED: Allow kernel services to override LSM settings for task actions 1bfdc75 CRED: Add a kernel_service object class to SELinux 3b11a1d CRED: Differentiate objective and effective subjective credentials on a task 98870ab CRED: Documentation d76b0d9 CRED: Use creds in file structs 1d04598 CRED: Prettify commoncap.c a6f76f2 CRED: Make execve() take advantage of copy-on-write credentials d84f4f9 CRED: Inaugurate COW credentials 745ca24 CRED: Pass credentials through dentry_open() 88e67f3 CRED: Make inode_has_perm() and file_has_perm() take a cred pointer 6cc88bc CRED: Rename is_single_threaded() to is_wq_single_threaded() bb952bb CRED: Separate per-task-group keyrings from signal_struct 275bb41 CRED: Wrap access to SELinux's task SID c69e8d9 CRED: Use RCU to access another task's creds and to release a task's own creds 86a264a CRED: Wrap current->cred and a few other accessors f1752ee CRED: Detach the credentials from task_struct b6dff3e CRED: Separate task security context from task_struct 15a2460 CRED: Constify the kernel_cap_t arguments to the capset LSM hooks 1cdcbec CRED: Neuter sys_capset() 8bbf497 KEYS: Alter use of key instantiation link-to-keyring argument e9e349b KEYS: Disperse linux/key_ui.h 76aac0e CRED: Wrap task credential accesses in the core kernel b103c59 CRED: Wrap task credential accesses in the capabilities code 47d804b CRED: Wrap task credential accesses in the key management code 8192b0c CRED: Wrap task credential accesses in the networking subsystem 19d6562 CRED: Wrap task credential accesses in the UNIX socket protocol 8f41940 CRED: Wrap task credential accesses in the SunRPC protocol c2a2b8d CRED: Wrap task credential accesses in the ROSE protocol ba95b23 CRED: Wrap task credential accesses in the netrom protocol f82b3590 CRED: Wrap task credential accesses in the IPv6 protocol 7340040 CRED: Wrap task credential accesses in the AX25 protocol 414c070 CRED: Wrap task credential accesses in the SYSV IPC subsystem da9592e CRED: Wrap task credential accesses in the filesystem subsystem 82ab8de CRED: Wrap task credential accesses in the XFS filesystem a5f773a CRED: Wrap task credential accesses in the UFS filesystem 7706bb3 CRED: Wrap task credential accesses in the UDF filesystem 26bf194 CRED: Wrap task credential accesses in the UBIFS filesystem fc7333d CRED: Wrap task credential accesses in the SYSV filesystem e2950b1 CRED: Wrap task credential accesses in the SMBFS filesystem 414cb20 CRED: Wrap task credential accesses in the ReiserFS filesystem 0785f4d CRED: Wrap task credential accesses in the RAMFS filesystem c222d53 CRED: Wrap task credential accesses in the OMFS filesystem b19c2a3 CRED: Wrap task credential accesses in the OCFS2 filesystem 5cc0a84 CRED: Wrap task credential accesses in the NFS daemon 4893702 CRED: Wrap task credential accesses in the NCPFS filesystem 922c030 CRED: Wrap task credential accesses in the Minix filesystem 8f659ad CRED: Wrap task credential accesses in the JFS filesystem 77c70de CRED: Wrap task credential accesses in the hugetlbfs filesystem de395b8 CRED: Wrap task credential accesses in the HPFS filesystem 4ac8489 CRED: Wrap task credential accesses in the HFSplus filesystem 94c9a5e CRED: Wrap task credential accesses in the HFS filesystem 3de7be3 CRED: Wrap task credential accesses in the GFS2 filesystem 2186a71 CRED: Wrap task credential accesses in the FUSE filesystem f0ce7ee CRED: Wrap task credential accesses in the FAT filesystem 4c9c544 CRED: Wrap task credential accesses in the Ext4 filesystem 6a2f90e CRED: Wrap task credential accesses in the Ext3 filesystem a8dd4d6 CRED: Wrap task credential accesses in the Ext2 filesystem 4eea035 CRED: Wrap task credential accesses in the eCryptFS filesystem ec4c2aa CRED: Wrap task credential accesses in the devpts filesystem 97b7702 CRED: Wrap task credential accesses in the Coda filesystem a001e5b CRED: Wrap task credential accesses in the CIFS filesystem 1109b07 CRED: Wrap task credential accesses in the BFS filesystem 0eb790e CRED: Wrap task credential accesses in the autofs4 filesystem 73c646e CRED: Wrap task credential accesses in the autofs filesystem 2155998 CRED: Wrap task credential accesses in the AFFS filesystem f8b9d53 CRED: Wrap task credential accesses in 9P2000 filesystem cd80ca8 CRED: Wrap task credential accesses in the USB driver ee9785a CRED: Wrap task credential accesses in the network device drivers 0e164b6 CRED: Wrap task credential accesses in the ISDN drivers 66303bc CRED: Wrap task credential accesses in the tty driver b0fafa8 CRED: Wrap task credential accesses in the block loopback driver 350b4da CRED: Wrap task credential accesses in the x86 arch e542370 CRED: Wrap task credential accesses in the S390 arch 1330deb CRED: Wrap task credential accesses in the PowerPC arch 25e1573 CRED: Wrap task credential accesses in the PA-RISC arch b421273 CRED: Wrap task credential accesses in the MIPS arch ef81ee9 CRED: Wrap task credential accesses in the IA64 arch d1aaf8c tracing/fastboot: put error message on stderr b3535c6 ftrace: remove unnecessary if condition of __unregister_ftrace_function cd80bc6 Merge branch 'topic/fix/hda' into topic/hda 0b60485 ASoC: OMAP: Add more supported sample rates into McBSP DAI driver bbba944 ASoC: Fix supported sample rates of TWL4030 audio codec c4da29c ALSA: hda - support detecting HD Audio devices with PCI class code 12ef7d4 ftrace: CPU buffer start annotation clean ups ee6bce5 ftrace: rename iter_ctrl to trace_options 1696b2b ftrace: show buffer size in kilobytes a94c80e ftrace: rename trace_entries to buffer_size_kb 24de386 Merge branches 'tracing/branch-tracer', 'tracing/fastboot', 'tracing/function-return-tracer' and 'tracing/urgent' into tracing/core 524ad0a netdevice: safe convert to netdev_priv() #part-4 8f15ea4 netdevice: safe convert to netdev_priv() #part-3 4cf1653 netdevice: safe convert to netdev_priv() #part-2 454d7c9 netdevice: safe convert to netdev_priv() #part-1 7a12122 net: Remove unused parameter of xfrm_gen_index() 2378982 net: ifdef struct sock::sk_async_wait_queue 3a95cb9 ALSA: handle SiI1392 HDMI codec in patch_intelhdmi.c e4412cb bnx2: Update version to 1.8.2. 40105c0 bnx2: Reorganize timeout constants. d8026d9 bnx2: Set rx buffer water marks based on MTU. 5ec6d7b bnx2: Restrict WoL support. 1caacec bnx2: Add PCI ID for 5716S. 1dc1c6a tracing/function-return-tracer: call prepare_ftrace_return by registers 62d59d1 tracing/function-return-tracer: make the function return tracer lockless 94b80ff ftrace: rename trace_unlikely.c file 80e5ea4 ftrace: add tracer called branch 9f029e8 ftrace: rename unlikely iter_ctrl to branch 2ed84ee trace: rename unlikely profiler to branch profiler 8652cb4 x86: warn of incorrect cpu_khz on AMD systems 8665596 x86: fix up the new IRQ code for older versions of gas 68f96c0 tracing/fastboot: fix perlcritic warning c415b3d x86: disable IRQs before doing anything on nmi_shootdown_cpus() bb8dd27 x86: make nmi_shootdown_cpus() available on !SMP and !X86_LOCAL_APIC 2ddded2 x86: move nmi_shootdown_cpus() to reboot.c c370e5e x86 kdump: make nmi_shootdown_cpus() non-static 8e29478 x86 kdump: make kdump_nmi_callback() a function ptr on crash_nmi_callback() d1e7b91 x86 kdump: create kdump_nmi_shootdown_cpus() b2bbe71 x86 kdump: move crashing_cpu assignment to nmi_shootdown_cpus() a7d4182 x86 kdump: extract kdump-specific code from crash_nmi_callback() fd64138 ALSA: include/sound/info.h - coding style changed 972d4c5 ALSA: hdsp/hdspm: remove card->id from rawmidi device name c2eb9c4 ALSA: when card identification is changed, change also /proc/asound symlink 9fb6198 ALSA: add /sys/class/sound/card#/id (r/w) and card#/number (r/o) files eb42c75 Merge branch 'linus' into x86/crashdump 11843ee ALSA: powermac - Rename mic-analog loopback mixer element 68d119f tracing: finetune branch-tracer output 2b7d039 tracing: branch tracer, fix vdso crash fb0ef64 ASoC: DaVinci: Audio: Fix swapping of channels at start of stereo playback 9cc3c49 x86: ia32_signal: remove unnecessary padding 4a61204 x86: signal_32: introduce retcode and rt_retcode f88c4ae tracing: branch tracer, tweak output 52f232c tracing: likely/unlikely branch annotation tracer 1f0d69a tracing: profile likely and unlikely annotations cb9382e Merge branches 'tracing/fastboot', 'tracing/function-return-tracer' and 'tracing/ring-buffer' into tracing/core 642edba ring-buffer: fix deadlock from reader_lock in read_start 92a77aa security: remove broken and useless declarations a7d26f8 ALSA: Release v1.0.18a 7423907 tracing/fastboot: Use the ring-buffer timestamp for initcall entries 3f5ec13 tracing/fastboot: move boot tracer structs and funcs into their own header. 60a011c Merge branch 'tracing/function-return-tracer' into tracing/fastboot d06bbd6 Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core 90d0be2 Merge branch 'topic/fix/hda' into topic/hda e42ea98 net: Cleanup of neighbour code 7a9546e net: ib_net pointer should depends on CONFIG_NET_NS 8f424b5 net: Introduce read_pnet() and write_pnet() helpers 9eca0a4 dccp: Resolve dependencies of features on choice of CCID d90ebcb dccp: Query supported CCIDs e8ef967 dccp: Registration routines for changing feature values f74e91b dccp: Limit feature negotiation to connection setup phase 6bb3ce2 net: remove struct dst_entry::entry_size 9b739ba net: remove struct neigh_table::pde 14d7ca5 x86: attempt reboot via port CF9 if we have standard PCI ports 7e452ba Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 3ac38c3 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 939b787 x86: 64 bits: shrink and align IRQ stubs 486936c Merge branch 'linux-2.6' into next b7c6244 x86: 32 bits: shrink and align IRQ stubs 4687518 x86: 32 bit: interrupt stub consistency with 64 bit 3e89c7b ring-buffer: clean up warn ons 9ee670f x86/doc: spelling fix for grub c280ea5 x86: fix documentation typo in arch/x86/Kconfig a4c5279 x86, 64-bit: update address space documentation 9757d55 ath9k: Fix compilation failure when RFKILL is enabled f83c9d0 ring-buffer: add reader lock a98f8fd x86: apic reset counter on shutdown d3ec5ca x86: call machine_shutdown and stop all CPUs in native_machine_halt 50ee917 sched/rt: removed unneeded defintion 934352f sched: add hierarchical accounting to cpu accounting controller 19b3e96 tracing: function return tracer, build fix 0667467 Currently SELinux jumps through some ugly hoops to not audit a capbility a2f2945 The oomkiller calculations make decisions based on capabilities. Since 0611216 Add a new capable interface that will be used by systems that use audit to 637d32d Capabilities: BUG when an invalid capability is requested e68b75a When the capset syscall is used it is not possible for audit to record the 3fc689e Any time fcaps or a setuid app under SECURE_NOROOT is used to result in a 851f7ff This patch will print cap_permitted and cap_inheritable data in the PATH c0b0044 This patch add a generic cpu endian caps structure and externally available 9d36be7 Document the order of arguments for cap_issubset. It's not instantly clear ff9b48c sched: include group statistics in /proc/sched_debug a3d732f x86, UV: fix redundant creation of sgi_uv 867f7fb tracing, x86: function return tracer, fix assembly constraints 8587b33f [PATCH] nvram - convert PRINT_PROC to seq_file 971ddcf [PATCH] nvram - CodingStyle f1c4be5 tracing, x86: clean up FUNCTION_RET_TRACER Kconfig 15e6cb3 tracing: add a tracer to catch execution time of kernel functions caf4b32 tracing, x86: add low level support for ftrace return tracing d844222 Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core f536aaf ring-buffer: replace most bug ons with warn on and disable buffer 5aa1ba6 ftrace: prevent ftrace_special from recursion e0cb4eb Merge branch 'tracing/urgent' into tracing/ftrace ae1e913 sched: rename SCHED_NO_NO_OMIT_FRAME_POINTER => SCHED_OMIT_FRAME_POINTER eb37b41 pktgen: add full reset functionality 9b1582d Phonet: use net_device built-in stats for GPRS fb28ad3 net: struct device - replace bus_id with dev_name(), dev_set_name() 2377989 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 c483246 rtl8187: Change TX power settings b2e53b3 orinoco: Move sources to a subdirectory 5166ccd cfg80211: Add kdoc for struct regulatory_request b219cee cfg80211: make use of reg macros on REG_RULE 9c96477 cfg80211: Add regulatory domain intersection capability d71aaf6 cfg80211: a reg rule is invalid if freq diff is 0 fc6971d mac80211_hwsim: Add support for client PS mode fbf1892 mac80211: Allow AP mode to be enabled d61272c mac80211: fix basic rates setting from association response ab1ef98 mac80211_hwsim: Make sure beacon_timer gets deleted 3188848 nl80211: Add TX queue parameter configuration 1e898ff mac80211_hwsim: Debug info for TX queue parameters 90c97a0 nl80211: Add basic rate configuration for AP mode fe63bfa mac80211_hwsim: Debug info for BSS config changes 95f8e38 b43legacy: reindent misleading statement ccf5dd1 libertas_tf: fix skb tail pointer 9483407 p54: initialize all deprecated fields c8034c4 p54: don't report known but unhandled EEPROM codes as unknown 61780ee iwlwifi: do not call statistics from rfkill eb48dca iwlwifi: iwl-agn-rs: initialize rs with valid antenna 6a63578 iwlwifi: rename double inclusion protection name in iwl-commands.h 5b9f8cd iwlwifi: rename generic iwlagn functions that had a HW specific name 60294de iwlwifi: fix priv->iw_mode setting when multiple vif are configured eb4779c iwlwifi: trivial removal of some 4965 remaining from iwl-agn-rs.h 9c80c50 iwlwifi: reorganize flow handler bitology c7ab5ef b43: implement short slot and basic rate handling bd81525 wireless: implement basic rate helper function 743b97c rt2x00: Remove debugfs CSR access wrappers f161796 ath9k: correct warning about unintialized variable 'tid' 74508b2 rtl8187: Reduce channel switch delay 94d4fe9 rtl8187: Remove primitive write delays 946d1c2 rtl8187: Remove msleep calls after calls to rtl8225_write a3d67bc rtl8187: Remove CCK delays 35cc988 rtl8187: Remove OFDM delays 2f20596 rtl8187: Remove large delays 9344e86 rt2x00: Release rt2x00 2.2.2 3514a44 rt2x00: Improve interface_modes initialization c3fd7b4 rt2x00: Remove ieee80211_bss_conf from rt2x00_intf e4ea1c4 rt2x00: Optimize configuration handling 3f64b43 ath5k: update keycache to support TKIP handling 9ad9a26 ath5k: enable hardware encryption for WEP 2a941ec wireless: fix two bad print_ssid conversions 8469cde mac80211: Add a new event in ieee80211_ampdu_mlme_action dca3edb ath9k: Remove internal RX A-MPDU processing 7f95903 ath9k: Clear HT info on starting the driver ccc75c5 ath9k: Remove ath_tx_aggr_resp() 05a1e2d ath9k: Enable interrupts at the proper place 154662a ath9k: Remove unnecessary TSF reset 9c84b79 ath9k: Streamline attach/detach 50fdae2 ath9k: Remove unused function ath_get_currentCountry() f1dc560 ath9k: Refactor hw.c 5640b08 ath9k: Revamp VAP management a37c2c7 ath9k: Use bitfields to store tid's state in a single variable 102e057 ath9k: Ensure ath_node is not NULL when updating tx chainmask 43453b3 ath9k: Remove SM Power Save as it is not supported now 528f0c6 ath9k: Revamp transmit control block c517016 ath9k: Simplify node attach/detach routines b5aa9bf ath9k: Node cleanup 17683c6 ath5k: fix keytable type buglet in ath5k_hw_reset_key f07a6c4 ath5k: Update PCU code 2c70600 don't use net/ieee80211.h 9b1fbae iwl3945: remove bogus comment 41bb73e mac80211: remove SSID driver code b23f99b adm8211: remove SSID code 71c11fb b43/legacy: remove SSID code 4607816 iwlwifi: remove unused essid variable a57a59f iwlwifi: remove implicit direct scan 430cfe9 iwl3945: remove dead code e5704bf ath9k: remove useless NULL initialisers 2df7816 wireless: fix a few sparse warnings 1239cd5 wireless: move mesh config length constant 97c8b01 mac80211: print reason code for deauth/dissoc frames db4186c p54: eliminate warning for uninitialized variable 'tim_len' e5ea92a p54: AP & Ad-hoc testing 94585b0 p54: put broadcast frames into the right queues 9e7f3f8 p54: more definitions form lmac_longbow.h and pda.h 9a8675d p54: introduce new names for device firmwares 4ceb7b6 netdevice libertas: Fix directly reference of netdev->priv f43aa02 ALSA: hda - Fix another cache list management b402dff ASoC: Add Right-Justified mode and Codec clock master to davinci-i2s 53599bb ASoC: s3c24xx 8 bit sound fix ba21ebb x86: apic - use pr_ macros for logging 4e03043 x86: apic - calibrate_APIC_clock remove redundant irq-enable-disable 4ecd33d Merge commit 'v2.6.28-rc4' into x86/apic f4166c5 x86, bts: DS and BTS initialization 19f47c6 x86: x86_32 has its own irq_regs definition 87135d9 Merge commit 'v2.6.28-rc4' into x86/cleanups 4fcc50a x86: clean up vget_cycles() 39c9aed SELinux: Use unknown perm handling to handle unknown netlink msg types cb9e35d x86: clean up rdtsc_barrier() use 895e031 Merge branch 'linus' into x86/cleanups 15002fa x86: signal: cosmetic unification of setup_sigcontext() a309720 ftrace: display start of CPU buffer in trace output 769c48e ftrace: force pass of preemptoff selftest 7d5222a ftrace: align __mcount_loc sections c76f069 ftrace: remove trace array ctrl bbf5b1a ftrace: remove ctrl_update method 49833fc ftrace: enable trace_printk by default 4519317 ftrace: irqsoff tracer incorrect reset e168e05 ftrace: fix sched_switch API 75f5c47 ftrace: fix boot trace sched startup 0183fb1 ftrace: fix set_ftrace_filter a6b0786 Merge branches 'tracing/ftrace', 'tracing/fastboot', 'tracing/nmisafe' and 'tracing/urgent' into tracing/core f574179 tipc: trivial endian annotation in debug statement f400923 pkt_sched: Control group classifier 505d4f7 net: Guaranetee the proper ordering of the loopback device. v2 5d6d480 net: fib_rules ordering fixes. 3d8160b Revert "net: Guaranetee the proper ordering of the loopback device." 0edb945 ALSA: hda - Fix probe errors on Dell Studio Desktop 30cde0a ALSA: hda - Fix ALC260 hp3013 master switch 26df91c ASoC: TLV320AIC23B Support more sample rates 167c627 Merge branch 'davem-next' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 6d21cd6 sched: clean up SCHED_CPUMASK_ALLOC 258594a Merge branch 'sched/urgent' into sched/core f66fced ALSA: Document debug macros a827206 fmvj18x_cs: write interrupt ack bit for lan and modem to work simultaneously. 945eed0 ALSA: Evaluate condition in snd_BUG_ON() in non-debugging case 0774023 Merge branch 'topic/fix/hda' into topic/hda 63cf123 Merge branch 'topic/fix/misc' into topic/misc 5c7f033 phonet: sparse annotations of protocol, remove forward declaration ca62059 ipvs: oldlen, newlen should be be16, not be32 76acfdb net: mark flow_cache_cpu_prepare() as __init 9eeda9a Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 ea2da6e ALSA: hda - Fix broken hash chain allocation b910d9a ALSA: hda - Add max allocation check in array allocator c217429 ALSA: hda - Add missing NULL check in amp hash allocation a87d091 x86, sched: enable wchan config menu item on 64-bit 6a60dd1 ftrace: split out hardirq ftrace code into own header cf7f869 sched, lockdep: inline double_unlock_balance() 6415483 ALSA: hda - Add lifebook model for Realtek ALC269 6ce4a3b ALSA: hda - Make codec-probing more robust 33fa35e ALSA: hda - simplify hda_bus ops callbacks e18c94d ALSA: ASoC: TWL4030 codec - fix 256*Fs clock fd51b2d x86: update CONFIG_NUMA description 90080bf sched, documentation: update scheduler header file paths 8735b7d x86: signal_64: make setup_sigcontext() similar ee7d523 x86: signal_64: setup fpstate in setup_sigcontext() 99ea1b9 x86: ia32_signal: do save_i387_xstate_ia32 at get_sigframe() 4b33669 x86: signal_32: do save_i387_xstate() at get_sigframe() 3e03fb7 ring-buffer: convert to raw spinlocks 9036990 ftrace: restructure tracing start/stop infrastructure 0f04870 ftrace: soft tracing stop and start 60a7ecf ftrace: add quick function trace stop 79c81d2 Merge branch 'tracing/fastboot' into tracing/ftrace fd9abb3 SMSC LAN911x and LAN921x vendor driver c5916cf ehea: Fix some whitespace issues 739bb23 sfc: Do not reset when hardware monitor detects a fault 3e133c4 sfc: Use lm87 and lm90 drivers for board temperature/power monitoring f415072 sfc: Expose flash region storing boot code as MTD 0a95f56 sfc: Clean up non-volatile memory partitioning 2883f55 sfc: Correct address of gPXE boot configuration in EEPROM fd989c8 bonding: alternate agg selection policies for 802.3ad 6146b1a bonding: Fix ALB mode to balance traffic on VLANs 305d552 bonding: send IPv6 neighbor advertisement on failover 7d9d1f2 sgi-xp: support getting the address of a partition's reserved page 31de5ec sgi-xp: define xp_partition_id and xp_region_size 2525789 sgi-xp: create activate and notify gru message queues 6c1c325 sgi-xp: define xp_expand_memprotect() and xp_restrict_memprotect() 23c3570 x86: uv: Add UV reserved page bios call e8929c8 x86: uv: Add UV memory protection bios call 64ccf2f x86: uv: Add UV watchlist bios call 61c9eaf pkt_sched: Fix qdisc len in qdisc_peek_dequeued() 0a36b34 net: Don't leak packets when a netns is going down ae33bc4 net: Guaranetee the proper ordering of the loopback device. d0c082c netns: Delete virtual interfaces during namespace cleanup 1c1b777 powerpc: Use the new byteorder headers 1f29fae file capabilities: add no_file_caps switch (v4) e21e696 Merge branch 'master' into next 2f99db2 selinux: recognize netlink messages for 'ip addrlabel' 5b4d218 powerpc/boot: Allocate more memory for dtb 7d4320f powerpc: Hugetlb pgtable cache access cleanup d4ad304 powerpc/ps3: Fix memory leak in device init 3cc6987 powerpc: Eliminate unused do_gtod variable 597bc5c powerpc: Improve resolution of VDSO clock_gettime c73049f powerpc: Remove map_/unmap_single() from dma_mapping_ops 7eef440 powerpc/pci: Cosmetic cleanups of pci-common.c fd6852c powerpc/pci: Fix various pseries PCI hotplug issues b5ae5f9 powerpc/pci: Make pcibios_allocate_bus_resources more robust 57b066f powerpc/eeh: Make EEH device add/remove more robust 8b8da35 powerpc/pci: Split pcibios_fixup_bus() into bus setup and device setup 8dc840f ASoC: Add new parameter to s3c24xx_pcm_enqueue ea91394 ASoC: Remove core version number 74e7220 ASoC: Add Palm/PXA27x unified ASoC audio driver 838e8bb x86: Implement change_bit with immediate operand as "lock xorb" 6834d7c ALSA: ice1724 - Re-fix IRQ mask initialization c238b4f ALSA: hda - Split ALC268 acer model ab56ced powerpc/pci: Remove pcibios_do_bus_setup() 5328032 powerpc/pci: Use common PHB resource hookup b0494bc powerpc/pci: Cleanup debug printk's 25d6e2d powerpc: Update 64bit memcpy() using CPU_FTR_UNALIGNED_LD_STD 4ec577a powerpc: Add new CPU feature: CPU_FTR_UNALIGNED_LD_STD 4090019 powerpc: Update page-in counter for CMM 1ef8014 powerpc/pseries: Fix getting the server number size 691de57 powerpc: Remove device_type = "rtc" properties in .dts files a6a8e00 powerpc: Silence software timebase sync 1fd0f52 powerpc: Fix domain numbers in /proc on 64-bit 270acef net: sk_free_datagram() should use sk_mem_reclaim_partial() d99a7bd dccp: Cleanup routines for feature negotiation ac75773 dccp: Per-socket initialisation of feature negotiation 61e6473 dccp: List management for new feature negotiation 7d43d1a dccp: Implement lookup table for feature-negotiation information bd012f2 dccp: Basic data structure for feature negotiation 13c9474 ALSA: hda - Add ASUS V1Sn support beb0b9c ALSA: hda - Fix unused function in patch_intelhdmi.c 9150487 ALSA: hda - Intel HDMI audio support d5f6423 net: #ifdef ->sk_security fd8cd7e x86: vmware: look for DMI string in the product serial key 41d9f9c SELinux: hold tasklist_lock and siglock while waking wait_chldexit 0ee4663 ALSA: ASoC - Remove unnecessary inclusion of linux/version.h 3865675 ALSA: ASoC codec: remove unused #include bfc5c26 ALSA: hda - Don't create empty PCM streams 79a9d46 tracing/ftrace: fix a bug when switch current tracer to sched tracer efade6e tracing/ftrace: types and naming corrections for sched tracer d7ad44b tracing/fastboot: use sched switch tracer from boot tracer e55f605c tracing/ftrace: remove unused code in sched_switch tracer 07695fa tracing/ftrace: fix a race condition in sched_switch tracer 71566a0 tracing/fastboot: Enable boot tracing only during initcalls 6e3354c netfilter: nf_nat: remove warn_if_extra_mangle 249b620 netfilter: netns ebtables: br_nf_pre_routing_finish() fixup b71b30a netfilter: netns ebtables: ebtable_nat in netns 4aad109 netfilter: netns ebtables: ebtable_filter in netns 8157e6d netfilter: netns ebtables: ebtable_broute in netns dbcdf85 netfilter: netns ebtables: more cleanup during ebt_unregister_table() 6beceee netfilter: netns ebtables: part 2 511061e netfilter: netns ebtables: part 1 19223f2 netfilter: arptable_filter: merge forward hook d4ec52b netfilter: netns-aware ipt_addrtype 5f7340e netfilter: xt_NFLOG: don't call nf_log_packet in NFLOG module. 3299b4d ftrace: sysctl typo 69f698a ftrace: sysrq-z to dump the buffers 6cf87ef x86 debug: mark early_printk.o as notrace faa2f98 sched: add sanity check in partition_sched_domains() a17e226 sched: remove redundant call to unregister_sched_domain_sysctl() 0a0db8f sched debug: remove NULL checking in print_cfs/rt_rq() eefd796 sched debug: remove sd_level_to_string() b2a866f ftrace: function tracer with irqs disabled 182e9f5 ftrace: insert in the ftrace_preempt_disable()/enable() functions 8f0a056 ftrace: introduce ftrace_preempt_disable()/enable() 124ffe1 x86: signal_64: remove unused code in __setup_rt_frame() b91f080 ALSA: hda - Fix possible NULL dereference dce908e ALSA: SOC: Fix setting codec register with debugfs filesystem merge error d2ad3ca net/: Kill now superfluous ->last_rx stores. 265eb67 netem: eliminate unneeded return values babcda7 drivers/net: Kill now superfluous ->last_rx stores. ab29109 net: remove two duplicated #include 6d9f239 net: '&' redux 6cf3f41 bonding, net: Move last_rx update into bonding recv logic 24f8b23 net: increase receive packet quantum b9ac998 printk: ipv4 address digits printed in reverse order 4814893 IPVS: Remove supports_ipv6 scheduler flag 4454837 IPVS: Add IPv6 support to LBLC/LBLCR schedulers fa228b3 tg3: Update version to 3.95 772638b broadcom: Add support for BCM50610 042a75b broadcom: Refine expansion register access routine 5e0c676 broadcom: Add flow control support fcb389d tg3: 5785 enhancements 9c61d6b tg3: Refine phylib support 0a459aa tg3: Allow WOL for phylib controlled Broadcom phys 05ac4cb tg3: Refine power management and WOL code df59c94 tg3: Move phylib report to end of tg3_init_one b2b98d4 tg3: Do not enable APE on bcm5700 bcb37f6 tg3: Reclaim TG3_FLG3_5761_5784_AX_FIXES flag 3f00789 tg3: Preserve LAA when device control is released b2aee15 tg3: Preserve DASH connectivity when WOL enabled 6353239 tg3: Use pci_ioremap_bar() c88e668 tg3: Add 5761S support 6bdbfe9 x86: VMware: Fix vmware_get_tsc code 4ef0ef1 ALSA: hda - Fix missing ADC list in ALC260 auto-probe mode 26f5df2 ALSA: hda - Add ALC299 fujitsu preset model 67305eb pkt_sched: sch_generic: Kfree gso_skb in qdisc_reset() 5799de0 net: clean up net/ipv4/tcp_ipv4.c 539afed net: clean up net/ipv4/devinet.c f4cca7f net: clean up net/ipv4/pararp.c fd3f8c4 net: clean up net/ipv4/ip_fragment.c tcp_timer.c ip_input.c e113a74 sched/rt: small optimization to update_curr_rt() 7e5e26a ftrace: fix hardirq header for non ftrace archs 7a895f5 Merge branches 'tracing/ftrace', 'tracing/markers', 'tracing/mmiotrace', 'tracing/nmisafe', 'tracing/tracepoints' and 'tracing/urgent' into tracing/core 127cafb tracepoint: introduce *_noupdate APIs. 19dba33 tracepoint: simplification for tracepoints using RCU 3555105 x86: add memory hotremove config option c354e12 net: clean up net/ipv4/ipmr.c 09cb105 net: clean up net/ipv4/ip_sockglue.c tcp_output.c a7e9ff7 net: clean up net/ipv4/igmp.c 6ed2533 net: clean up net/ipv4/fib_frontend.c fib_hash.c ip_gre.c 5a5f3a8 net: clean up net/ipv4/ipip.c raw.c tcp.c tcp_minisocks.c tcp_yeah.c xfrm4_policy.c d931910 net: clean up net/ipv4/ah4.c esp4.c fib_semantics.c inet_connection_sock.c inetpeer.c ip_output.c 5b9a0e1 x86: nmi - nmi_watchdog boot param docs cleanup d9e5407 ftrace: ftrace_dump_on_oops=[tracer] 3660946 Merge commit 'v2.6.28-rc3' into tracing/ftrace 8bb8c43 sched, ftrace: trace sched.c db59350 Merge commit 'v2.6.28-rc3' into sched/core e0db4a7 sunrpc: Fix build warning due to typo in %pI4 format changes. 20971a0 IPVS: Add IPv6 support to SH and DH schedulers 2a6cf35 Merge branch 'davem-next' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 3f8b4b1 bonding: update docs to correctly reflect arp_ip_target behavior 237f3e1 smc91x: add __init markings to smc_drv_probe() dccd547 forcdeth: increase max_interrupt_work 0befdb3 ixgbe: add device support for 82598AT (copper 10GbE) adapters e053b62 atlx: timer cleanup 02e7173 atlx: use embedded net_device_stats 8ba25da sch_netem: Replace ->requeue() method with open code 0220146 sch_netem: Remove classful functionality ae27e98 [TCP] CUBIC v2.3 e27dfce af_unix: clean up net/unix/af_unix.c garbage.c sysctl_net_unix.c c37ccc0 udp: add a missing smp_wmb() in udp_lib_get_port() 7e3a42a xfrm6: handling fragment 395628e x86: Skip verification by the watchdog for TSC clocksource. eca0cd0 x86: Add a synthetic TSC_RELIABLE feature bit. 88b094f x86: Hypervisor detection and get tsc_freq from hypervisor 49ab56a x86: add X86_FEATURE_HYPERVISOR feature bit 4074ea2 ALSA: ice1724 - Fix IRQ register initialization e25cf4a mac80211: fix two kernel-doc warnings 4c24429 ath9k: use ETH_P_PAE 9371dd6 ath9k: remove useless conditional 4fb3078 orinoco: cache downloadable firmware image in memory for use during resume 0df6cbb orinoco: reload firmware on resume 4c674c6 ath5k: Update interrupt masking code 84fa4f4 wireless regulatory: move ignore_request 2083c49 wireless: clean up regulatory ignore_request function be3d481 wireless: remove struct regdom hinting d2372b3 wireless: make regdom passing semantics simpler 7dddaf1 iwlwifi: Update reclaim flag 9fe1c50 iwl3945: iwl3945_mac_get_tsf() should not return zero a96a27f iwlwifi: run through spell checker 127901a iwlwifi: refactor tx byte count table usage 951891c iwlwifi: clear scanning bits upon failure 60d3221 iwlwifi: convert correctly rate_n_flags to PLCP index for mimo3 packets f69f42a iwlwifi: calibration command namespace renaming 0ef2ca6 iwlwifi: parametrize eeprom versions ed7fafe iwlwifi: don't update TFD free counter for invalid station 3fd07a1 iwlwifi: refactor TX response flow 8b30b1f mac80211: Re-enable aggregation 4393dce mac80211: allow all interfaces types to handle RX action frames f3e63db wireless: remove write-only 'granted' variable a4510bf ath9k: Check if the STA supports HT when initializing rate control 075cbc9 mac80211: Change WARN_ON to WARN_ON_ONCE 5c020dc ath9k: Allow user to change tx power when asked f97e400 ath9k: enable RX interrupt mitigation b139a10 ath9k: remove pointless sc_txintrperiod and spin_lock_bh on tx prepare d9d2925 mac80211: make use of regulatory tx power settings on change of tx power e2ef12d mac80211: check return value of dev_alloc_skb() in ieee80211_sta_join_ibss(). 7211801 wireless: avoid some net/ieee80211.h vs. linux/ieee80211.h conflicts 9387b7c wireless: use individual buffers for printing ssid values 2819f8a wireless: escape_ssid should handle non-printables c5d3dce wireless: remove NETWORK_EMPTY_ESSID flag 7e272fc wireless: consolidate on a single escape_essid implementation ddf4ac5 mac80211: insert AP sta entry after filling it cfa3fa4 Fix debugfs_create_*'s error checking method for wireless/rt2x00/ 9b24001 Fix debugfs_create_bool's error checking method for wireless/iwlwifi/ ac9440a wireless: fix EU check f6037d0 wireless: get rid of pointless request list f3b407f wireless: remove cfg80211_reg_mutex cf03268 wireless: don't publish __regulatory_hint e37d4df mac80211: fix a few typos in mac80211 kernel doc 5588751 rt2x00: reduce checkpatch.pl errors 0bbac08 ath5k: reduce checkpatch.pl errors 93da9cc Add nl80211 commands to get and set o11s mesh networking parameters 4a68ec5 mac80211: inform userspace of probe/auth/assoc timeout 8216bfe hostap: Fix sparse warnings 50fb2e4 mac80211: remove rate_control_clear 65a0667 iwlwifi: protect headers from double inclusion f4a8cd9 minstrel: improve performance for non-MRR drivers 0a9542e nl80211: fix monitor flags 27df605 p54: integrate parts of lmac_longbow.h and other parts of stlc45xx 5e73444 p54: borrow some setup code from stlc45xx b92f30d p54: fix memory management 9de5776f p54: p54: refactor p54_rx_frame_sent 0f1be97 p54: refactor statistic timer code 0fdd7c5 p54: broken out edcf changes b88b15d iwlwifi: tx command must run on same tfd as packet 499b188 iwlwifi: fix TX cmd dma unmapping 76eff18 iwlwifi: unify tx antenna toggling 961ba60 iwlwifi: add iwl_cmd_queue_free for readability 3257e5d iwlwifi: remove host commands structures from iwl_cmd 56e1261 iwlwifi: expand error lookup and align output 4e062f9 iwlwifi: define firmware file name once 4acf074 make ieee80211 invisible 5c7f9b7 ipw2x00: change default policy for auto-associate c12abae p54: implement MRR e6a9854 mac80211/drivers: rewrite the rate control API cb121ba mac80211: add might_sleep to hw_config faf3994 airo: Kill directly reference of netdev->priv b706e65 ath5k: fix mesh point operation 6e0e0bf ath5k: correct ath5k signal quality c49d154 ath9k: correct signal quality report 4fe0657 ath5k/ath9k: correct signal quality f828831 rtl8187: add short slot handling for 8187B 6476107 rtl8187: adapt for deprecated IEEE80211_CONF_SHORT_SLOT_TIME flag da966bc Ath5k: add AP mode 7eb27af p54/rtl8187: fix up the seqno patch ae5eb02 mac80211: rewrite HT handling bda3933 mac80211: move bss_conf into vif 9124b07 mac80211: make retry limits part of hw config 5251818 iwl3945: fix station stuff in RC algorithm d51626d nl80211: export HT capabilities 9477828 mac80211: provide sequence numbers 2e20cc3 p54: Move rx_mtu to struct bootrec_desc 7823657 rfkill: rate-limit rfkill-input workqueue usage (v3) 1767079 rfkill: honour EPO state when resuming a rfkill controller d003922 rfkill: add master_switch_mode and EPO lock to rfkill and rfkill-input 68d2413 rfkill: export global states to rfkill-input cf4b4aa rfkill: use killable locks instead of interruptible e897558 mac80211: introduce hw config change flags 0f4ac38 mac80211: kill hw.conf.antenna_sel_{rx,tx} d9fe60d 802.11: clean up/fix HT support 40333e4 p54: honour bss_info_changed's short slot time settings 5d6924e mac80211: use HWSIM_STA_MAGIC in hwsim_check_sta_magic() and hwsim_set_sta_magic(). 3195c1f iwlwifi: refactor rxon time command 5d664a4 iwlwifi: take a valid antenna upon rate scale init be5d56e iwlwifi: make initial calibration set configurable 1397dce mac80211: remove unused declaration of struct sta_attribute. 7a5158e mac80211: fix short slot handling e87a2fe mac80211: remove max_antenna_gain config d73782f mac80211: clean up ieee80211_hw_config errors 3db5943 mac80211: remove wiphy_to_hw c6a1fa1 mac80211: minor code cleanups 36ff382 mac80211: remove writable debugs mesh parameters 804feeb mac80211: remove aggregation status write support from debugfs b2bcc7b x86: add a synthetic TSC_RELIABLE feature bit 3c3e989 ALSA: hda - Re-add input-source control for Realtek f9e336f ALSA: hda - Unify capture mixer creation in realtek codes 54cbc9a ALSA: hda - Unify capture callbacks in realtek codes d88897e ALSA: hda - Use macros to check array overflow afecd78c Merge branch 'topic/fix/hda' into topic/hda 7b3b6e4 Merge commit 'v2.6.28-rc2' into topic/asoc 04172c0 Merge branch 'topic/fix/asoc' into topic/asoc 5b99e6c ASoC: Add audio support for the Atmel AT91SAM9G20ek board(uing wolfson 8731). 6c74250 ASoC: Merge AT91 and AVR32 support into a single atmel architecture dc06102 ASoC: Add support for Beagleboard 4e20787 ASoC: Add support for Gumstix Overo cc17557 ASoC: Add support for TWL4030 audio codec a376f30 x86: avoid duplicate running of pud_offset and pmd_offset in one_md_table_init() a26a2a2 ftrace: nmi safe code clean ups 9868ee6 kexec/i386: setup kexec page table in C 92be3d6 kexec/i386: allocate page table pages dynamically 31498a0 kexec/i386: remove PAGE_SIZE alignment from relocate_kernel 3685f25 misc: replace NIPQUAD() be85940 fs: replace NIPQUAD() 6377943 drivers: replace NIPQUAD() 21454aa net: replace NIPQUAD() in net/*/ 14d5e83 net: replace NIPQUAD() in net/netfilter/ 673d57e net: replace NIPQUAD() in net/ipv4/ net/ipv6/ cffee38 net: replace NIPQUAD() in net/ipv4/netfilter/ 77be155 pkt_sched: Add peek emulation for non-work-conserving qdiscs. 03c05f0 pkt_sched: Use qdisc->ops->peek() instead of ->dequeue() & ->requeue() 8e3af97 pkt_sched: Add qdisc->ops->peek() implementation. 99c0db2 pkt_sched: sch_generic: Add generic qdisc->ops->peek() implementation. 48a8f51 pkt_sched: Add ->peek() methods for fifo, prio and SFQ qdiscs. 90d841f pkt_sched: sch_generic: Add Qdisc_ops peek() method. cc0fe83 xfrm: remove unused struct xfrm_policy::next d5917a3 xfrm: C99 for xfrm_dev_notifier a1744d3 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 57b4189 ALSA: ASoC - restore removed variable declaration 275f165 pci: use pci_ioremap_bar() in drivers/net 842e08b tc35815: Define more Rx status bits 04ecb07 cxgb3 - enable lro control through ethtool bc79fc8 e100: adapt to the reworked PCI PM 6b1abba The overdue eepro100 removal. 5177b32 skge: adapt skge to use reworked PCI PM b3acf29 ftrace, kbuild: condense recordmcount.pl parameter code e1e302d Merge branch 'linus' into tracing/ftrace c8db3fe udp: Should use spin_lock_bh()/spin_unlock_bh() in udp_lib_unhash() b807c3d ftrace: nmi update statistics 17666f0 ftrace: nmi safe code modification 1cbd8b3 x86: add two missing unwind annotations 8a1c8eb x86, nmi-watchdog: update procfs nmi_watchdog file documentation v2 b062f84 x86: nmi - add sensible names to nmi_watchdog boot param 7a52768 x86: simplify X86_MPPARSE config option 0763722 ALSA: ASoC - Fix a typo in Kconfig 0c235d1 ASoC: Disable automatic volume control in the CS4270 sound driver ca53fb2 ASoC: Use finer grained dependencies in SND_SOC_ALL_CODECS e775f6c ASoC: Do a warm reset after cold when resetting the WM9713 1b340bd ASoC: Add PXA SSP support 8b6a5a3 SELinux: check open perms in dentry_open not inode_permission 219b93f ASoC: Remove DAPM restriction on mixer control name lengths f24368c ASoC: Convert core to use standard debug print macros d45f621 ASoC: Fix handling of DAPM suspend work 12ef193 ASoC: Allow setting codec register with debugfs filesystem 5791775 x86: signal: cosmetic unification of NR_restart_syscall cabf503 x86: signal: cosmetic unification of macros for setup_rt_frame() 96bf84b x86: signal: cosmetic unification of signr_convert() 34f3a81 sched: switch sched_features to seqfile 8cf14e3 net: easy removals of HIPQUAD using %pI4 format 9edb8bb macvlan: add support for ethtool get settings 6b9a106 printk: remove %p6 format specifier, fix up comments 5b095d9 net: replace %p6 with %pI6 4b7a427 net: replace %#p6 format specifier with %pi6 4aa9960 printk: add %I4, %I6, %i4, %i6 format specifiers 96631ed udp: introduce sk_for_each_rcu_safenext() f52b505 udp: udp_get_next() should use spin_unlock_bh() e78a37b ALSA: Fix a typo in Kconfig 9cbbb3a ALSA: Release v1.0.18 eab1722 sched: cleanup for alloc_rt/fair_sched_group() 8203efb udp: calculate udp_mem based on low memory instead of all memory 271b72c udp: RCU handling for Unicast packets. 645ca70 udp: introduce struct udp_table and multiple spinlocks 1b063c3 Merge branch 'topic/fix/hda' into topic/hda d301fc3 ALSA: hda - Fix indentation in hda_local.h b189db5 net: remove NIP6(), NIP6_FMT, NIP6_SEQFMT and final users a20fd0a uwb: use the %pM formatting specifier in eda.c 8c165a8 infiniband: remove IPOIB_GID_RAW_ARG, IPOIB_GID_ARG, IPOIB_GID_FMT fcace2f infiniband: ipoib replace IPOIB_GID_FMT with %p6 8867cd7 infiniband: use %p6 for printing message ids b3020061 vlan: propogate ethtool speed values 3717746 veth: remove unused list bb7bba3 veth: Remove useless veth field fdb46ee net, misc: replace uses of NIP6_FMT with %p6 0c6ce78 net: replace uses of NIP6_FMT with %p6 38ff4fa netfilter: replace uses of NIP6_FMT with %p6 1afa67f misc: replace NIP6_FMT with %p6 format specifier b071195 net: replace all current users of NIP6_SEQFMT with %#p6 689afa7 printk: add %p6 format specifier for IPv6 addresses 3a2dfbe xfrm: Notify changes in UDP encapsulation via netlink 93adcc8 net: don't use INIT_RCU_HEAD def8b4f net: reduce structures when XFRM=n b057efd netlink: constify struct nlattr * arg to parsing functions ad38dab x86: use the new byteorder headers d4f1b10 x86: clean up comments wrt. rd{msr|tsc|pmc} 2011a06 Merge commit 'v2.6.28-rc2' into x86/doc 30604bb x86: break up mtrr_cleanup() into several small functions. 7a9787e Merge commit 'v2.6.28-rc2' into x86/pci-ioapic-boot-irq-quirks 163d4c5 Merge branch 'topic/fix/hda' into topic/hda 34c2535 ALSA: hda - Remove old codec-probe limitation 15ad9a5 Merge branch 'topic/fix/asoc' into topic/asoc 3891845 netns: Coexist with the sysfs limitations v2 7c510e4 net: convert more to %pM e174961 net: convert print_mac to %pM 0c68ae2 mac80211: convert to %pM away from print_mac dd45c9c printk: add %pM format specifier for MAC addresses 1080d70 net: implement emergency route cache rebulds when gc_elasticity is exceeded 69a72a0 x86/uv: update SCIR driver to use the idle_cpu() function 878719e x86: unify appropriate bits from dumpstack_32 and dumpstack_64 7d5a78c x86, NMI watchdog: disable NMIs on LVT0 in case NMI watchdog is not working 6f290b4 x86, NMI watchdog: add support to enable and disable IOAPIC NMI b43d196 x86: corruption-check: some post-move cleanups 304e629 x86: corruption check: run the corruption checks from a work queue 6784f7d x86: corruption check: move the corruption checks into their own file 04d2aac x86: corruption-check: fix some style issues 944ac42 ftrace: ftrace dump on oops control c63dfef x86: remove dead IRQBALANCE code fd4a203 x86: signal_64.c: get_stack() doesn't need entire regs 709110b x86: signal: cosmetic unification of restore_sigcontext() fd3fdf1 trace: add the MMIO-tracer to the tracer menu, cleanup 5d9881e markers: break the redundant loop in kernel/marker.c 4de6274 markers: let marker_table be close to its comments 505e371 markers: remove exported symbol marker_probe_cb_noarg() 0eec481 markers: simplify marker_set_format() 7f1baa0 x86/uv: provide a System Activity Indicator driver 5292ae1 Merge commit 'v2.6.28-rc2' into x86/uv f4a2a0d ftrace: add a script to produce a hierarchical view of a function trace 8479d94 x86, signals: remove duplicated register setup code in ia32 signal delivery 4fc85e4 Merge branch 'topic/misc-next' into topic/misc 911fc25 Merge branch 'topic/asoc-next' into topic/asoc 42dc237 Merge branch 'topic/hda-next' into topic/hda 74aeaab ALSA: hda: add support for jack detection on IDT codecs. 50a9f79 ALSA: hda: add snd_hda_get_jack* functions a53ccab ALSA: jack: lineout support to jack abstraction layer 282cd76 ALSA: hda: dynamic jack id bbaf5e9 ALSA: Add hrtimer backend for ALSA timer interface 63fb708 x86: change OPTIMIZE_INLINING help to say enabling makes smaller kernels 67679b1 ALSA: emu10k1: fix coding style for emu10k1_main.c 888dcb7 ALSA: aoa: clean up file names 871d377 i386, dumpstack: unify die() e06ca43 i386, dumpstack: use oops_begin/oops_end in die_nmi e4955cf i386, dumpstack: use x86_64's method to account die_nest_count 10b14cb x86, dumpstack: always call oops_exit from oops_end 0ed7a49 x86_64, dumpstack: move kexec_crash from __die to oops_end 874d93d x86, dumpstack: let signr=0 signal no do_exit b4b8f87 i386, dumpstack: move crash_kexec before bust_spinlocks(0) in oops_end 9e89981 x86, mm: enable GBPAGES option by default b0f2098 x86, uv: use consistent names for region size and conherence id on x86 and ia64 718a259 ALSA: emu10k1: fix faulty commit 18c71092 18c7109 ALSA: emu10k1: fix device names for Live!/Audigy1/2/4/E-mu 1083206 ALSA: ice1724 - Fix TX IRQ lockup c872e8c ALSA: Enable SPDIF output on ALC655 96c7d47 ALSA: pcsp - Fix locking messes in snd-pcsp ebaa047 ALSA: hda - Release jack instance for dynamic reconfigure dd125b2 Merge branch 'topic/hda-reconfig' into topic/hda-next 76a4d10 ALSA: Print function symbol in the error messages 6b93311 ALSA: ASoC: Remove snd_soc_dapm_connect_input() 8ae6a55 ALSA: ASoC: Convert wm8900 to a new-style i2c driver 17be552 ALSA: ASoC: Convert wm8580 to a new-style i2c driver 45a6ac1 ALSA: hda: add support for jack detection on IDT/Sigmatel 1e1be43 ALSA: hda - Add hints for reconfig 11aeff0 ALSA: hda - Add init_verbs entries d7ffba1 ALSA: hda - Add sysfs entries to hwdep devices 6c1f45e ALSA: hda - Add codec reconfiguration feature d13bd41 ALSA: hda - Manage kcontrol lists f44ac83 ALSA: hda - Allocate name string of each codec 603c401 ALSA: hda - Use generic array helpers b2e1859 ALSA: hda - Add generic arrays 176d533 ALSA: hda - Add infrastructure for dynamic stream allocation 41b9eb2 x86, pci: introduce config option for pci reroute quirks (was: [PATCH 0/3] Boot IRQ quirks for Broadcom and AMD/ATI) 3e370b2 Merge branch 'linus' into x86/pci-ioapic-boot-irq-quirks 88d1dce PCI quirks: call boot IRQ quirks at end of device init and during resume 542622d PCI quirks: disable AMD/ATI legacy boot interrupt generation 7725118 PCI quirks: add quirk to disable boot interrupt generation on broadcom HT1000 dbbcfb2 Merge branch 'linus' into x86/pci-ioapic-boot-irq-quirks b0356cd pci, acpi: reroute PCI interrupt to legacy boot interrupt equivalent, warning fix 33be833 x86: boot IRQ quirks and rerouting, fix e1d3a90 pci, acpi: reroute PCI interrupt to legacy boot interrupt equivalent 426b3b8 pci: add quirk to disable boot interrupt generation on intel 6300ESB 9197979 x86, pci: introduce pci=ioapicreroute kernel cmdline option a9322f6 x86, pci: introduce pci=noioapicquirk kernel cmdline option 747ada3 pci: add PCI IDs for devices that need boot irq quirks from 3d44cc3e01ee1b40317f79ed54324e25c4f848df (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 3c92ec8ae91ecf59d88c798301833d7cf83f2179 Merge: c4c9f0183b7c4e97836e8fecbb67898b06c47e78 ca9153a3a2a7556d091dfe080e42b0e67881fff6 Author: Linus Torvalds Date: Sun Dec 28 16:54:33 2008 -0800 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (144 commits) powerpc/44x: Support 16K/64K base page sizes on 44x powerpc: Force memory size to be a multiple of PAGE_SIZE powerpc/32: Wire up the trampoline code for kdump powerpc/32: Add the ability for a classic ppc kernel to be loaded at 32M powerpc/32: Allow __ioremap on RAM addresses for kdump kernel powerpc/32: Setup OF properties for kdump powerpc/32/kdump: Implement crash_setup_regs() using ppc_save_regs() powerpc: Prepare xmon_save_regs for use with kdump powerpc: Remove default kexec/crash_kernel ops assignments powerpc: Make default kexec/crash_kernel ops implicit powerpc: Setup OF properties for ppc32 kexec powerpc/pseries: Fix cpu hotplug powerpc: Fix KVM build on ppc440 powerpc/cell: add QPACE as a separate Cell platform powerpc/cell: fix build breakage with CONFIG_SPUFS disabled powerpc/mpc5200: fix error paths in PSC UART probe function powerpc/mpc5200: add rts/cts handling in PSC UART driver powerpc/mpc5200: Make PSC UART driver update serial errors counters powerpc/mpc5200: Remove obsolete code from mpc5200 MDIO driver powerpc/mpc5200: Add MDMA/UDMA support to MPC5200 ATA driver ... Fix trivial conflict in drivers/char/Makefile as per Paul's directions commit c4c9f0183b7c4e97836e8fecbb67898b06c47e78 Author: Stephen Rothwell Date: Mon Dec 29 10:46:13 2008 +1100 net: ehea NAPI interface cleanup fix Commit 908a7a16b852ffd618a9127be8d62432182d81b4 ("net: Remove unused netdev arg from some NAPI interfaces") missed two spots. Signed-off-by: Stephen Rothwell Signed-off-by: Linus Torvalds commit bf66542bef3771a42ad3b1d5dc503c804bc22b33 Author: Stephen Rothwell Date: Wed Dec 3 13:49:23 2008 +1100 cifs: update for new IP4/6 address printing Signed-off-by: Stephen Rothwell Signed-off-by: Linus Torvalds commit d05a788f2279056a518d412c6391322ef11366e0 Merge: 96faec945f39cab38403f60f515bff43660b4dab 54d2f649a67109d877ca143c09cdeba61fe51bcf Author: Linus Torvalds Date: Sun Dec 28 15:15:08 2008 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6: smackfs: check for allocation failures in smk_set_access() commit 96faec945f39cab38403f60f515bff43660b4dab Merge: 2926328554fa740518e2a6585b2cefb01e5f65f3 9bb482476c6c9d1ae033306440c51ceac93ea80c Author: Linus Torvalds Date: Sun Dec 28 15:13:48 2008 -0800 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next * git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next: (25 commits) allow stripping of generated symbols under CONFIG_KALLSYMS_ALL kbuild: strip generated symbols from *.ko kbuild: simplify use of genksyms kernel-doc: check for extra kernel-doc notations kbuild: add headerdep used to detect inclusion cycles in header files kbuild: fix string equality testing in tags.sh kbuild: fix make tags/cscope kbuild: fix make incompatibility kbuild: remove TAR_IGNORE setlocalversion: add git-svn support setlocalversion: print correct subversion revision scripts: improve the decodecode script scripts/package: allow custom options to rpm genksyms: allow to ignore symbol checksum changes genksyms: track symbol checksum changes tags and cscope support really belongs in a shell script kconfig: fix options to check-lxdialog.sh kbuild: gen_init_cpio expands shell variables in file names remove bashisms from scripts/extract-ikconfig kbuild: teach mkmakfile to be silent ... commit 2926328554fa740518e2a6585b2cefb01e5f65f3 Merge: 541ef5cbb8e68189d47272cea52a69abc30259bc 8587b33f4adee4e7614ea7f443346c3b6bb5427a Author: Linus Torvalds Date: Sun Dec 28 15:12:35 2008 -0800 Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-nvram * git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-nvram: [PATCH] nvram - convert PRINT_PROC to seq_file [PATCH] nvram - CodingStyle commit 54d2f649a67109d877ca143c09cdeba61fe51bcf Merge: 541ef5cbb8e68189d47272cea52a69abc30259bc 81ea714bf148fce35e931edcbdfd3aedda20d1dc Author: James Morris Date: Mon Dec 29 09:57:38 2008 +1100 Merge branch 'next' into for-linus commit ca9153a3a2a7556d091dfe080e42b0e67881fff6 Author: Ilya Yanok Date: Thu Dec 11 04:55:41 2008 +0300 powerpc/44x: Support 16K/64K base page sizes on 44x This adds support for 16k and 64k page sizes on PowerPC 44x processors. The PGDIR table is much smaller than a page when using 16k or 64k pages (512 and 32 bytes respectively) so we allocate the PGDIR with kzalloc() instead of __get_free_pages(). One PTE table covers rather a large memory area when using 16k or 64k pages (32MB or 512MB respectively), so we can easily put FIXMAP and PKMAP in the area covered by one PTE table. Signed-off-by: Yuri Tikhonov Signed-off-by: Vladimir Panfilov Signed-off-by: Ilya Yanok Acked-by: Josh Boyer Signed-off-by: Paul Mackerras commit 6ca4f7494bde078b2b730e28e4ea1dc36a772f70 Author: Hollis Blanchard Date: Wed Nov 26 10:19:26 2008 -0600 powerpc: Force memory size to be a multiple of PAGE_SIZE Ensure that total memory size is page-aligned, because otherwise mark_bootmem() gets upset. This error case was triggered by using 64 KiB pages in the kernel while arch/powerpc/boot/4xx.c arbitrarily reduced the amount of memory by 4096 (to work around a chip bug that affects the last 256 bytes of physical memory). Signed-off-by: Hollis Blanchard Signed-off-by: Paul Mackerras commit 541ef5cbb8e68189d47272cea52a69abc30259bc Merge: 0191b625ca5a46206d2fb862bb08f36f2fcb3b31 aa6eeeef78263e9891185c6cfaaf64808460a54a Author: Linus Torvalds Date: Sun Dec 28 12:54:07 2008 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k: m68k: use the new byteorder headers fbcon: Protect free_irq() by MACH_IS_ATARI check fbcon: remove broken mac vbl handler m68k: fix trigraph ignored warning in setox.S macfb annotations and compiler warning fix m68k: mac baboon interrupt enable/disable m68k: machw.h cleanup m68k: Mac via cleanup and commentry m68k: Reinstate mac rtc commit 0191b625ca5a46206d2fb862bb08f36f2fcb3b31 Merge: 54a696bd07c14d3b1192d03ce7269bc59b45209a eb56092fc168bf5af199d47af50c0d84a96db898 Author: Linus Torvalds Date: Sun Dec 28 12:49:40 2008 -0800 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1429 commits) net: Allow dependancies of FDDI & Tokenring to be modular. igb: Fix build warning when DCA is disabled. net: Fix warning fallout from recent NAPI interface changes. gro: Fix potential use after free sfc: If AN is enabled, always read speed/duplex from the AN advertising bits sfc: When disabling the NIC, close the device rather than unregistering it sfc: SFT9001: Add cable diagnostics sfc: Add support for multiple PHY self-tests sfc: Merge top-level functions for self-tests sfc: Clean up PHY mode management in loopback self-test sfc: Fix unreliable link detection in some loopback modes sfc: Generate unique names for per-NIC workqueues 802.3ad: use standard ethhdr instead of ad_header 802.3ad: generalize out mac address initializer 802.3ad: initialize ports LACPDU from const initializer 802.3ad: remove typedef around ad_system 802.3ad: turn ports is_individual into a bool 802.3ad: turn ports is_enabled into a bool 802.3ad: make ntt bool ixgbe: Fix set_ringparam in ixgbe to use the same memory pools. ... Fixed trivial IPv4/6 address printing conflicts in fs/cifs/connect.c due to the conversion to %pI (in this networking merge) and the addition of doing IPv6 addresses (from the earlier merge of CIFS). commit 54a696bd07c14d3b1192d03ce7269bc59b45209a Merge: 1d248b2593e92db6c51ca07235985a95c625a93f 359d67d6ad054ae11ad459665fdfb883aca87782 Author: Linus Torvalds Date: Sun Dec 28 12:37:14 2008 -0800 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 * git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6: (31 commits) [CIFS] Remove redundant test [CIFS] make sure that DFS pathnames are properly formed Remove an already-checked error condition in SendReceiveBlockingLock Streamline SendReceiveBlockingLock: Use "goto out:" in an error condition Streamline SendReceiveBlockingLock: Use "goto out:" in an error condition [CIFS] Streamline SendReceive[2] by using "goto out:" in an error condition Slightly streamline SendReceive[2] Check the return value of cifs_sign_smb[2] [CIFS] Cleanup: Move the check for too large R/W requests [CIFS] Slightly simplify wait_for_free_request(), remove an unnecessary "else" branch Simplify allocate_mid() slightly: Remove some unnecessary "else" branches [CIFS] In SendReceive, move consistency check out of the mutexed region cifs: store password in tcon cifs: have calc_lanman_hash take more granular args cifs: zero out session password before freeing it cifs: fix wait_for_response to time out sleeping processes correctly [CIFS] Can not mount with prefixpath if root directory of share is inaccessible [CIFS] various minor cleanups pointed out by checkpatch script [CIFS] fix typo [CIFS] remove sparse warning ... Fix trivial conflict in fs/cifs/cifs_fs_sb.h due to comment changes for the CIFS_MOUNT_xyz bit definitions between cifs updates and security updates. commit 1d248b2593e92db6c51ca07235985a95c625a93f Merge: 1db2a5c11e495366bff35cf7445d494703f7febe 2a0d8366dde9c66d8f481bee56828b661e5c8bf1 Author: Linus Torvalds Date: Sun Dec 28 12:33:59 2008 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (26 commits) IB/mlx4: Set ownership bit correctly when copying CQEs during CQ resize RDMA/nes: Remove tx_free_list RDMA/cma: Add IPv6 support RDMA/addr: Add support for translating IPv6 addresses mlx4_core: Delete incorrect comment mlx4_core: Add support for multiple completion event vectors IB/iser: Avoid recv buffer exhaustion caused by unexpected PDUs IB/ehca: Remove redundant test of vpage IB/ehca: Replace modulus operations in flush error completion path IB/ipath: Add locking for interrupt use of ipath_pd contexts vs free IB/ipath: Fix spi_pioindex value IB/ipath: Only do 1X workaround on rev1 chips IB/ipath: Don't count IB symbol and link errors unless link is UP IB/ipath: Check return value of dma_map_single() IB/ipath: Fix PSN of send WQEs after an RDMA read resend RDMA/nes: Cleanup warnings RDMA/nes: Add loopback check to make_cm_node() RDMA/nes: Check cqp_avail_reqs is empty after locking the list RDMA/nes: Fix TCP compliance test failures RDMA/nes: Forward packets for a new connection with stale APBVT entry ... commit 1db2a5c11e495366bff35cf7445d494703f7febe Merge: a39b863342b8aba52390092be95db58f6ed56061 cef7125def4dd104769f400c941199614da0aca1 Author: Linus Torvalds Date: Sun Dec 28 12:33:21 2008 -0800 Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 * 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6: (85 commits) [S390] provide documentation for hvc_iucv kernel parameter. [S390] convert ctcm printks to dev_xxx and pr_xxx macros. [S390] convert zfcp printks to pr_xxx macros. [S390] convert vmlogrdr printks to pr_xxx macros. [S390] convert zfcp dumper printks to pr_xxx macros. [S390] convert cpu related printks to pr_xxx macros. [S390] convert qeth printks to dev_xxx and pr_xxx macros. [S390] convert sclp printks to pr_xxx macros. [S390] convert iucv printks to dev_xxx and pr_xxx macros. [S390] convert ap_bus printks to pr_xxx macros. [S390] convert dcssblk and extmem printks messages to pr_xxx macros. [S390] convert monwriter printks to pr_xxx macros. [S390] convert s390 debug feature printks to pr_xxx macros. [S390] convert monreader printks to pr_xxx macros. [S390] convert appldata printks to pr_xxx macros. [S390] convert setup printks to pr_xxx macros. [S390] convert hypfs printks to pr_xxx macros. [S390] convert time printks to pr_xxx macros. [S390] convert cpacf printks to pr_xxx macros. [S390] convert cio printks to pr_xxx macros. ... commit a39b863342b8aba52390092be95db58f6ed56061 Merge: b0f4b285d7ed174804658539129a834270f4829a 4e202284e6ac1695df3eb4a0e549ea78addfb663 Author: Linus Torvalds Date: Sun Dec 28 12:27:58 2008 -0800 Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (31 commits) sched: fix warning in fs/proc/base.c schedstat: consolidate per-task cpu runtime stats sched: use RCU variant of list traversal in for_each_leaf_rt_rq() sched, cpuacct: export percpu cpuacct cgroup stats sched, cpuacct: refactoring cpuusage_read / cpuusage_write sched: optimize update_curr() sched: fix wakeup preemption clock sched: add missing arch_update_cpu_topology() call sched: let arch_update_cpu_topology indicate if topology changed sched: idle_balance() does not call load_balance_newidle() sched: fix sd_parent_degenerate on non-numa smp machine sched: add uid information to sched_debug for CONFIG_USER_SCHED sched: move double_unlock_balance() higher sched: update comment for move_task_off_dead_cpu sched: fix inconsistency when redistribute per-cpu tg->cfs_rq shares sched/rt: removed unneeded defintion sched: add hierarchical accounting to cpu accounting controller sched: include group statistics in /proc/sched_debug sched: rename SCHED_NO_NO_OMIT_FRAME_POINTER => SCHED_OMIT_FRAME_POINTER sched: clean up SCHED_CPUMASK_ALLOC ... commit b0f4b285d7ed174804658539129a834270f4829a Merge: be9c5ae4eeec2e85527e95647348b8ea4eb25128 5250d329e38cdf7580faeb9c53c17d3588d7d19c Author: Linus Torvalds Date: Sun Dec 28 12:21:10 2008 -0800 Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip * 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (241 commits) sched, trace: update trace_sched_wakeup() tracing/ftrace: don't trace on early stage of a secondary cpu boot, v3 Revert "x86: disable X86_PTRACE_BTS" ring-buffer: prevent false positive warning ring-buffer: fix dangling commit race ftrace: enable format arguments checking x86, bts: memory accounting x86, bts: add fork and exit handling ftrace: introduce tracing_reset_online_cpus() helper tracing: fix warnings in kernel/trace/trace_sched_switch.c tracing: fix warning in kernel/trace/trace.c tracing/ring-buffer: remove unused ring_buffer size trace: fix task state printout ftrace: add not to regex on filtering functions trace: better use of stack_trace_enabled for boot up code trace: add a way to enable or disable the stack tracer x86: entry_64 - introduce FTRACE_ frame macro v2 tracing/ftrace: add the printk-msg-only option tracing/ftrace: use preempt_enable_no_resched_notrace in ring_buffer_time_stamp() x86, bts: correctly report invalid bts records ... Fixed up trivial conflict in scripts/recordmcount.pl due to SH bits being already partly merged by the SH merge. commit be9c5ae4eeec2e85527e95647348b8ea4eb25128 Merge: bb26c6c29b7cc9f39e491b074b09f3c284738d36 79a66b96c339626a3e4b226fefc0e45244cfe6ff Author: Linus Torvalds Date: Sun Dec 28 12:07:57 2008 -0800 Merge branch 'x86-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip * 'x86-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (246 commits) x86: traps.c replace #if CONFIG_X86_32 with #ifdef CONFIG_X86_32 x86: PAT: fix address types in track_pfn_vma_new() x86: prioritize the FPU traps for the error code x86: PAT: pfnmap documentation update changes x86: PAT: move track untrack pfnmap stubs to asm-generic x86: PAT: remove follow_pfnmap_pte in favor of follow_phys x86: PAT: modify follow_phys to return phys_addr prot and return value x86: PAT: clarify is_linear_pfn_mapping() interface x86: ia32_signal: remove unnecessary declaration x86: common.c boot_cpu_stack and boot_exception_stacks should be static x86: fix intel x86_64 llc_shared_map/cpu_llc_id anomolies x86: fix warning in arch/x86/kernel/microcode_amd.c x86: ia32.h: remove unused struct sigfram32 and rt_sigframe32 x86: asm-offset_64: use rt_sigframe_ia32 x86: sigframe.h: include headers for dependency x86: traps.c declare functions before they get used x86: PAT: update documentation to cover pgprot and remap_pfn related changes - v3 x86: PAT: add pgprot_writecombine() interface for drivers - v3 x86: PAT: change pgprot_noncached to uc_minus instead of strong uc - v3 x86: PAT: implement track/untrack of pfnmap regions for x86 - v3 ... commit bb26c6c29b7cc9f39e491b074b09f3c284738d36 Merge: e14e61e967f2b3bdf23f05e4ae5b9aa830151a44 cbacc2c7f066a1e01b33b0e27ae5efbf534bc2db Author: Linus Torvalds Date: Sun Dec 28 11:43:54 2008 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6: (105 commits) SELinux: don't check permissions for kernel mounts security: pass mount flags to security_sb_kern_mount() SELinux: correctly detect proc filesystems of the form "proc/foo" Audit: Log TIOCSTI user namespaces: document CFS behavior user namespaces: require cap_set{ug}id for CLONE_NEWUSER user namespaces: let user_ns be cloned with fairsched CRED: fix sparse warnings User namespaces: use the current_user_ns() macro User namespaces: set of cleanups (v2) nfsctl: add headers for credentials coda: fix creds reference capabilities: define get_vfs_caps_from_disk when file caps are not enabled CRED: Allow kernel services to override LSM settings for task actions CRED: Add a kernel_service object class to SELinux CRED: Differentiate objective and effective subjective credentials on a task CRED: Documentation CRED: Use creds in file structs CRED: Prettify commoncap.c CRED: Make execve() take advantage of copy-on-write credentials ... commit e14e61e967f2b3bdf23f05e4ae5b9aa830151a44 Merge: cb10ea549fdc0ab2dd8988adab5bf40b4fa642f3 0ee4a96902dd7858e65f378c86f428a0355bd841 Author: Linus Torvalds Date: Sun Dec 28 11:43:22 2008 -0800 Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (57 commits) crypto: aes - Precompute tables crypto: talitos - Ack done interrupt in isr instead of tasklet crypto: testmgr - Correct comment about deflate parameters crypto: salsa20 - Remove private wrappers around various operations crypto: des3_ede - permit weak keys unless REQ_WEAK_KEY set crypto: sha512 - Switch to shash crypto: sha512 - Move message schedule W[80] to static percpu area crypto: michael_mic - Switch to shash crypto: wp512 - Switch to shash crypto: tgr192 - Switch to shash crypto: sha256 - Switch to shash crypto: md5 - Switch to shash crypto: md4 - Switch to shash crypto: sha1 - Switch to shash crypto: rmd320 - Switch to shash crypto: rmd256 - Switch to shash crypto: rmd160 - Switch to shash crypto: rmd128 - Switch to shash crypto: null - Switch to shash crypto: hash - Make setkey optional ... commit cb10ea549fdc0ab2dd8988adab5bf40b4fa642f3 Merge: 81d6e59dabb1ae0c782e9eb7e3d88f699d25b314 5ce442fe2c9423ec5451222aee6f9b2127bb8311 Author: Linus Torvalds Date: Sun Dec 28 11:41:32 2008 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: (367 commits) ALSA: ASoC: fix a typo in omp-pcm.c ASoC: Fix DSP formats in SSM2602 audio codec ASoC: Fix incorrect DSP format in OMAP McBSP DAI and affected drivers ALSA: hda: fix incorrect mixer index values for 92hd83xx ALSA: hda: dinput_mux check ALSA: hda - Add quirk for another HP dv7 ALSA: ASoC - Add missing __devexit annotation to wm8350.c ALSA: ASoc: DaVinci: davinci-evm use dsp_b mode ALSA: ASoC: DaVinci: i2s, evm, pass same value to codec and cpu_dai ALSA: ASoC: tlv320aic3x add dsp_a ALSA: ASoC: DaVinci: document I2S limitations ALSA: ASoC: DaVinci: davinci-i2s clean up ALSA: ASoC: DaVinci: davinci-i2s clean up ALSA: ASoC: DaVinci: davinci-i2s add comments to explain polarity ALSA: ASoC: DaVinci: davinvi-evm, make requests explicit ALSA: ca0106 - disable 44.1kHz capture ALSA: ca0106 - Add missing card->private_data initialization ALSA: ca0106 - Check ac97 availability at PM ALSA: hda - Power up always when no jack detection is available ALSA: hda - Fix unused variable warnings in patch_sigmatel.c ... commit 81d6e59dabb1ae0c782e9eb7e3d88f699d25b314 Merge: 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 59de580af1c2fd671b0cb27c41ff958859ae5288 Author: Linus Torvalds Date: Sun Dec 28 11:39:19 2008 -0800 Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 * git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6: (132 commits) sh: oprofile: Fix up the module build. sh: add UIO support for JPU on SH7722. serial: sh-sci: Fix up port pinmux for SH7366. sh: mach-rsk: Use uImage generation by default for rsk7201/7203. sh: mach-sh03: Fix up pata_platform build breakage. sh: enable deferred io LCDC on Migo-R video: sh_mobile_lcdcfb deferred io support video: deferred io with physically contiguous memory video: deferred io cleanup video: fix deferred io fsync() sh: add LCDC interrupt configuration to AP325 and Migo-R sh_mobile_lcdc: use FB_SYS helpers instead of FB_CFB sh: split coherent pages sh: dma: Kill off ISA DMA wrapper. sh: Conditionalize the code dumper on CONFIG_DUMP_CODE. sh: Kill off the unused SH_ALPHANUMERIC debug option. sh: Enable skipping of bss on debug platforms for sh32 also. doc: Update sh cpufreq documentation. sh: mrshpc_setup_windows() needs to be inline. serial: sh-sci: sci_poll_get_char() is only used by CONFIG_CONSOLE_POLL. ... commit aa6eeeef78263e9891185c6cfaaf64808460a54a Author: Harvey Harrison Date: Tue Nov 18 20:45:23 2008 +0100 m68k: use the new byteorder headers Signed-off-by: Harvey Harrison Signed-off-by: Geert Uytterhoeven commit 7f877ebb32ac9a4b0783e825cef84c6ace87fe90 Author: Geert Uytterhoeven Date: Tue Nov 18 20:45:23 2008 +0100 fbcon: Protect free_irq() by MACH_IS_ATARI check Add missing check for Atari in free_irq() call, which could cause problems on multi-platform m68k kernels. Reported-by: Brad Boyer Signed-off-by: Geert Uytterhoeven commit 79f0c9a0479060e3a8607d93bc8d81ff962acc87 Author: Finn Thain Date: Tue Nov 18 20:45:23 2008 +0100 fbcon: remove broken mac vbl handler Remove the Mac VBL interrupt code as it doesn't work properly and doesn't bring any benefit when fixed. Also remove unused DEFAULT_CURSOR_BLINK_RATE macro and irqres variable. Signed-off-by: Finn Thain Signed-off-by: Geert Uytterhoeven commit 646819e86222cc06b85ed2a8dafbbb361a05ea2d Author: Finn Thain Date: Tue Nov 18 20:45:22 2008 +0100 m68k: fix trigraph ignored warning in setox.S Fix the warning: trigraph ??/ ignored, use -trigraphs to enable caused by the recent removal of -traditional option. Signed-off-by: Finn Thain Signed-off-by: Geert Uytterhoeven commit 3839d01d61195d76d53943ac36b603d7e7ca4b6e Author: Finn Thain Date: Tue Nov 18 20:45:22 2008 +0100 macfb annotations and compiler warning fix Add some __iomem annotations. Remove some volatile qualifiers to fix several compiler warnings: "passing arg 1 of `iounmap' discards qualifiers from pointer target type". Signed-off-by: Finn Thain Signed-off-by: Geert Uytterhoeven commit 746e8d3b223281f0e5472ab0ad8f59af2221ea9b Author: Finn Thain Date: Tue Nov 18 20:45:21 2008 +0100 m68k: mac baboon interrupt enable/disable No-one seems to know how to mask individual baboon interrupts, so we just mask the umbrella IRQ. This will work as long as only the IDE driver uses the baboon chip (it can't deadlock). Use mac_enable_irq/mac_disable_irq rather than enable_irq/disable_irq because the latter routines count the depth of nested calls which triggers a warning and call trace because IRQ_NUBUS_C is enabled twice in a row (once when the baboon handler is registered, and once when the IDE IRQ is registered). Signed-off-by: Finn Thain Signed-off-by: Geert Uytterhoeven commit 429dbf53bca49b110f1058f0d9417a59115c41b8 Author: Finn Thain Date: Tue Nov 18 20:45:20 2008 +0100 m68k: machw.h cleanup Remove some more cruft from machw.h and drop the #include where it isn't needed. Signed-off-by: Finn Thain Signed-off-by: Geert Uytterhoeven commit 4a973592d67ccc240bca694e48ce88facd764043 Author: Finn Thain Date: Tue Nov 18 20:45:20 2008 +0100 m68k: Mac via cleanup and commentry No behavioural changes, just cleanups and better documentation. Signed-off-by: Finn Thain Signed-off-by: Geert Uytterhoeven commit 40f7f9c1c22aef049ed7339d9e45624aa980a1a0 Author: Finn Thain Date: Tue Nov 18 20:45:20 2008 +0100 m68k: Reinstate mac rtc Reinstate the Mac hardware clock for CUDA ADB and Mac II ADB models. It doesn't work properly on Mac IIsi ADB and PMU ADB yet, so leave them out. Signed-off-by: Finn Thain Signed-off-by: Geert Uytterhoeven commit eb56092fc168bf5af199d47af50c0d84a96db898 Author: Dave Jones Date: Sat Dec 27 20:43:48 2008 -0800 net: Allow dependancies of FDDI & Tokenring to be modular. I noticed it isn't possible to build token ring & fddi drivers without causing LLC, and a bunch of other things to be forced built-in. For distro kernels, this means carrying a chunk of code in the vmlinuz, even if the user doesn't use those protocols. Signed-off-by: Dave Jones Signed-off-by: David S. Miller commit 8d25332081d87491e3b12fa130539fe9e2ba4a94 Author: David S. Miller Date: Fri Dec 26 15:13:55 2008 -0800 igb: Fix build warning when DCA is disabled. Signed-off-by: David S. Miller commit 2d5451d2614583de0c9aaf61cf5f77faf5694105 Author: David S. Miller Date: Fri Dec 26 15:10:00 2008 -0800 net: Fix warning fallout from recent NAPI interface changes. When we removed the network device argument from several NAPI interfaces in 908a7a16b852ffd618a9127be8d62432182d81b4 ("net: Remove unused netdev arg from some NAPI interfaces.") several drivers now started getting unused variable warnings. This fixes those up. Signed-off-by: David S. Miller commit 0da2afd59653d2edf5c8e0f09b23f367ab5bc80f Author: Herbert Xu Date: Fri Dec 26 14:57:42 2008 -0800 gro: Fix potential use after free The initial skb may have been freed after napi_gro_complete in napi_gro_receive if it was merged into an existing packet. Thus we cannot check same_flow (which indicates whether it was merged) after calling napi_gro_complete. This patch fixes this by saving the same_flow status before the call to napi_gro_complete. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit 843813453f52e3378fc988c8364063fd4cb9d0e3 Author: Ben Hutchings Date: Fri Dec 26 13:49:25 2008 -0800 sfc: If AN is enabled, always read speed/duplex from the AN advertising bits When AN is enabled and the link is down the speed/duplex control bits will not be meaningful. Use the advertising bits instead, and mask them with the LPA bits if and only if AN is complete (as before). Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit f4bd954e7c24063b15fa9abc8b4b1242772928ed Author: Ben Hutchings Date: Fri Dec 26 13:48:51 2008 -0800 sfc: When disabling the NIC, close the device rather than unregistering it This should reduce user confusion and may also aid recovery (ioctls will still be available). Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 307505e9a4ce0b13b2f996385669039806e07390 Author: Ben Hutchings Date: Fri Dec 26 13:48:00 2008 -0800 sfc: SFT9001: Add cable diagnostics The SFT9001 firmware implements cable diagnostics; run those and include their results in a self-test. In case of a cable fault, do not fail the self-test as a whole; only faults in the NIC should cause that. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 1796721a5a691a5d392abf8070ad40a0b787b667 Author: Ben Hutchings Date: Fri Dec 26 13:47:25 2008 -0800 sfc: Add support for multiple PHY self-tests Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 2ef3068e6c40ec44d27f6f8027616e284d1b0466 Author: Ben Hutchings Date: Fri Dec 26 13:47:04 2008 -0800 sfc: Merge top-level functions for self-tests Pass in ethtool test flags to determine which tests to run. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit a5692e49cd9e6512c48ebf61e52991cbe643c12d Author: Ben Hutchings Date: Fri Dec 26 13:46:38 2008 -0800 sfc: Clean up PHY mode management in loopback self-test Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit caa8d8bbddc9157cb8f34465be98fc83faf37155 Author: Ben Hutchings Date: Fri Dec 26 13:46:12 2008 -0800 sfc: Fix unreliable link detection in some loopback modes Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 6977dc6309ea8bbcb24c0a1356c33969e4a07410 Author: Ben Hutchings Date: Fri Dec 26 13:44:39 2008 -0800 sfc: Generate unique names for per-NIC workqueues Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit e727149e26b08550269a7786fda977aed65578f6 Author: Holger Eitzenberger Date: Fri Dec 26 13:41:53 2008 -0800 802.3ad: use standard ethhdr instead of ad_header 802.3ad has its own ethhdr-like structure in the form of an ad_header, which is at the start of both the LACPDU and marker PDU. Both are the same from the struct values, both are packed as well. It's therefore perfectly fine to replace the ad_header by the ethhdr and to remove its definition. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit e4ac43200fd6b8b8de3b487e74e74d3742f70d79 Author: Holger Eitzenberger Date: Fri Dec 26 13:40:48 2008 -0800 802.3ad: generalize out mac address initializer Generalize out mac address initializer for the LACPDU multicast address and use in two places. Remove the now unused AD_MULTICAST_LACPDU_ADDR. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 7addeef6b15c9b7cffaaf40ec5b5b0940145ec16 Author: Holger Eitzenberger Date: Fri Dec 26 13:28:33 2008 -0800 802.3ad: initialize ports LACPDU from const initializer Save some text by initializing ports LACPDU from const initializer, then get rid of ad_initialize_lacpdu(). Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 87f422f8618c541db0f96194cca9465817f76b89 Author: Holger Eitzenberger Date: Fri Dec 26 13:27:57 2008 -0800 802.3ad: remove typedef around ad_system As typedefs are considered a bad thing most of the time remove the typedef around ad_system. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 1624db7be0d9f77f5494efe1b066d1d44b46c96c Author: Holger Eitzenberger Date: Fri Dec 26 13:27:21 2008 -0800 802.3ad: turn ports is_individual into a bool Turn ports is_individual into a bool. There is no functional change. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit f48127b6f3270cf7234a7a9f770533332e85e8ae Author: Holger Eitzenberger Date: Fri Dec 26 13:26:54 2008 -0800 802.3ad: turn ports is_enabled into a bool Turn ports is_enabled into a bool. There is no functional change. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit d238d458a70ad134cb421c3ffc66242277f30dda Author: Holger Eitzenberger Date: Fri Dec 26 11:18:15 2008 -0800 802.3ad: make ntt bool Turn Need-To-Transmit port variable into a bool. There is no functional change. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit d3fa4721456226d77475181a4bfbe5b3d899d65c Author: Peter P Waskiewicz Jr Date: Fri Dec 26 01:36:33 2008 -0800 ixgbe: Fix set_ringparam in ixgbe to use the same memory pools. The adapter rings are kcalloc()'d, but in set_ringparam() in ixgbe_ethtool, we replace that memory from the vmalloc() pool. This can result in a NULL pointer reference when trying to modify the rings at a later time, or on device removal. Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 7adf1525befb5606462431eb1a4ea40ded5baef4 Author: Peter P Waskiewicz Jr Date: Fri Dec 26 01:36:05 2008 -0800 ixgbe: Fix NAPI enable/disable path when using DCB This change allows DCB mode to change the number of queues, and presumably the number of NAPI instances, safely. Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit d7b06636be162d3f74c9ce5d6d0d9ea4e5d362c8 Author: Peter P Waskiewicz Jr Date: Fri Dec 26 01:35:35 2008 -0800 net: Init NAPI dev_list on napi_del The recent GRO patches introduced the NAPI removal of devices in free_netdev. For drivers that can change the number of queues during driver operation, the NAPI infrastructure doesn't allow the freeing and re-addition of NAPI entities without reloading the driver. This change reinitializes the dev_list in each NAPI struct on delete, instead of just deleting it (and assigning the list pointers to POISON). Drivers that wish to remove/re-add NAPI will need to re-initialize the netdev napi_list after removing all NAPI instances, before re-adding NAPI devices again. Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 26bc19ecf6c077c926827c25631340fd2e8fb16e Author: Alexander Duyck Date: Fri Dec 26 01:34:11 2008 -0800 igb: re-order queues to support cleaner use of ivar on 82576 The 82576 adapter orders the queues in pairs when virtualization is in use. The queue ordering previously conflicted with the ordering when sr-iov was enabled. This new ordering allows a PF to allocate 2 queues without using any VF resources. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 0e014cb16234c3797aa518d46fe7e1fe91ebcca9 Author: Alexander Duyck Date: Fri Dec 26 01:33:18 2008 -0800 igb: defeature tx head writeback This patch removes tx head writeback as it was found to not provide a significant improvement in tx performance and on some systems has been seen to cause a performance degredation due to partial cache line writes. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit f2712fd0b4097e8385bdb75c0ebd285a057fe299 Author: Herbert Xu Date: Fri Dec 26 01:31:18 2008 -0800 ipsec: Remove useless ret variable This patch removes a useless ret variable from the IPv4 ESP/UDP decapsulation code. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit fdb614c28487df41f7bf2c98e85f29f31885561e Author: Anton Vorontsov Date: Tue Dec 23 06:59:25 2008 +0000 ucc_geth: Eliminate the need for forward references This patch simply reorders some functions to eliminate the need for forward references. No other changes than that. Suggested-by: Timur Tabi Signed-off-by: Anton Vorontsov Signed-off-by: David S. Miller commit 9c54004ea717116a10886e254e26502ffb1136e9 Author: David Woodhouse Date: Tue Dec 23 04:09:02 2008 +0000 atm: Driver for Solos PCI ADSL2+ card. This adds basic support for the 'Solos' PCI ADSL2+ cards being developed by Traverse Technologies and Xrio Ltd: http://www.traverse.com.au/productview.php?product_id=116 Signed-off-by: Nathan Williams Signed-off-by: David Woodhouse Signed-off-by: David S. Miller commit 236b87c29953a87a6817e96e311b0efd00e95dc7 Author: Tilman Schmidt Date: Fri Dec 26 01:22:03 2008 -0800 gigaset: ifdef cleanup Remove unnecessary #ifdef-s and #if-0-ed code sections. Signed-off-by: Tilman Schmidt Signed-off-by: David S. Miller commit c8770dcabd6a615b155c25dc4d57251d3e7f151c Author: Tilman Schmidt Date: Fri Dec 26 01:21:29 2008 -0800 gigaset: use pr_err() and pr_info() Switch from private printk wrapper macros to using pr_err() and pr_info() from linux/kernel.h, at the same time unifying a few error messages. Signed-off-by: Tilman Schmidt Signed-off-by: David S. Miller commit 4d8cd002602987ddc9507b5390800343f820ac92 Author: Divy Le Ray Date: Fri Dec 26 01:16:39 2008 -0800 cxgb3: add control to access embedded images Update contol path between cxgb3 and ULP modules (iWARP, iSCSI) to provide access to firware and protocol engine info. Signed-off-by: Divy Le Ray Signed-off-by: David S. Miller commit 6dd014808f91ad99d4d794cf7c7c69610c10f904 Author: Hannes Eder Date: Fri Dec 26 00:15:03 2008 -0800 drivers/net/wireless/prism54: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/wireless/prism54/islpci_hotplug.c:97:1: warning: symbol 'prism54_probe' was not declared. Should it be static? drivers/net/wireless/prism54/islpci_hotplug.c:220:1: warning: symbol 'prism54_remove' was not declared. Should it be static? drivers/net/wireless/prism54/islpci_hotplug.c:263:1: warning: symbol 'prism54_suspend' was not declared. Should it be static? drivers/net/wireless/prism54/islpci_hotplug.c:286:1: warning: symbol 'prism54_resume' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit a3d1fd23e1ff2deeda0415805cf9a044dda7f55c Author: Hannes Eder Date: Fri Dec 26 00:14:41 2008 -0800 drivers/net/wireless/ipw2x00: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/wireless/ipw2x00/ipw2100.c:5271:6: warning: symbol 'ipw2100_queues_initialize' was not declared. Should it be static? drivers/net/wireless/ipw2x00/ipw2100.c:5278:6: warning: symbol 'ipw2100_queues_free' was not declared. Should it be static? drivers/net/wireless/ipw2x00/ipw2100.c:5285:5: warning: symbol 'ipw2100_queues_allocate' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 11ab72a7c94f3ccac05b85928875fdc4f1ed5e9b Author: Hannes Eder Date: Fri Dec 26 00:13:46 2008 -0800 drivers/net/wireless/b43: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/wireless/b43/phy_a.c:80:6: warning: symbol 'b43_radio_set_tx_iq' was not declared. Should it be static? drivers/net/wireless/b43/phy_a.c:150:6: warning: symbol 'b43_radio_init2060' was not declared. Should it be static? drivers/net/wireless/b43/phy_g.c:57:10: warning: symbol 'b43_radio_channel_codes_bg' was not declared. Should it be static? drivers/net/wireless/b43/phy_g.c:218:6: warning: symbol 'b43_set_txpower_g' was not declared. Should it be static? drivers/net/wireless/b43/phy_g.c:386:6: warning: symbol 'b43_nrssi_hw_write' was not declared. Should it be static? drivers/net/wireless/b43/phy_g.c:393:5: warning: symbol 'b43_nrssi_hw_read' was not declared. Should it be static? drivers/net/wireless/b43/phy_g.c:404:6: warning: symbol 'b43_nrssi_hw_update' was not declared. Should it be static? drivers/net/wireless/b43/phy_g.c:418:6: warning: symbol 'b43_nrssi_mem_update' was not declared. Should it be static? drivers/net/wireless/b43/phy_g.c:592:6: warning: symbol 'b43_calc_nrssi_slope' was not declared. Should it be static? drivers/net/wireless/b43/phy_g.c:1357:5: warning: symbol 'b43_radio_init2050' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit bf512bc827c84f77553538834fffe71604079f23 Author: Hannes Eder Date: Fri Dec 26 00:13:29 2008 -0800 drivers/net/wireless/ath9k: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/wireless/ath9k/eeprom.c:195:6: warning: symbol 'ath9k_fill_eeprom' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:463:5: warning: symbol 'ath9k_check_eeprom' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:1219:6: warning: symbol 'ath9k_hw_set_def_power_per_rate_table' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:1510:6: warning: symbol 'ath9k_hw_set_4k_power_per_rate_table' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:2007:5: warning: symbol 'ath9k_set_txpower' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:2106:6: warning: symbol 'ath9k_set_addac' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:2543:6: warning: symbol 'ath9k_eeprom_set_board_values' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:2606:5: warning: symbol 'ath9k_get_eeprom_antenna_cfg' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:2622:4: warning: symbol 'ath9k_hw_get_4k_num_ant_config' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:2628:4: warning: symbol 'ath9k_hw_get_def_num_ant_config' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:2647:4: warning: symbol 'ath9k_get_num_ant_config' was not declared. Should it be static? drivers/net/wireless/ath9k/eeprom.c:2790:5: warning: symbol 'ath9k_get_eeprom' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 2ed5ba890e1e8dda89557e4ea233a26ab8bf3d58 Author: Hannes Eder Date: Fri Dec 26 00:12:59 2008 -0800 drivers/net/wireless: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/wireless/airo.c:3610:6: warning: symbol 'mpi_receive_802_11' was not declared. Should it be static? drivers/net/wireless/atmel.c:3183:6: warning: symbol 'atmel_join_bss' was not declared. Should it be static? drivers/net/wireless/ray_cs.c:831:5: warning: symbol 'ray_dev_init' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 62c5345db704c912b485f6b60dab381c9cebf268 Author: Hannes Eder Date: Fri Dec 26 00:12:08 2008 -0800 drivers/net/wan/z85230.c: fix sparse warnings: un-EXPORT symbols The symbols are only references within the translation unit they are defined in, so un-EXPORT them und make them 'static'. Fix this sparse warnings: drivers/net/wan/z85230.c:604:25: warning: symbol 'z8530_dma_sync' was not declared. Should it be static? drivers/net/wan/z85230.c:613:25: warning: symbol 'z8530_txdma_sync' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 7b3dfa11cdef38bda07b99991f2f88c86df67ed2 Author: Hannes Eder Date: Fri Dec 26 00:11:21 2008 -0800 drivers/net/wan: fix sparse warning: make symbol static Fix this sparse warning: drivers/net/wan/x25_asy.c:623:5: warning: symbol 'x25_asy_esc' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit d157e0230f205f5dd646c4e0985030367de7aa4c Author: Hannes Eder Date: Mon Dec 22 09:17:55 2008 +0000 drivers/net/wan: fix sparse warnings: make do-while a compound statement Fix this sparse warnings: drivers/net/wan/wanxl.c:414:3: warning: do-while statement is not a compound statement drivers/net/wan/wanxl.c:441:3: warning: do-while statement is not a compound statement Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit ec1d1ebbb3bdc9807474be28c29efa155d15b850 Author: Hannes Eder Date: Fri Dec 26 00:07:45 2008 -0800 drivers/net/tulip: fix sparse warnings: make do-while a compound statement Fix this sparse warnings: drivers/net/tulip/de2104x.c:1695:4: warning: do-while statement is not a compound statement drivers/net/tulip/tulip_core.c:1433:5: warning: do-while statement is not a compound statement Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 27cd6ae5619084f363630683e77d70be38075afe Author: Hannes Eder Date: Fri Dec 26 00:07:15 2008 -0800 drivers/net/tokenring: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/tokenring/ibmtr.c:1840:6: warning: symbol 'tok_rerun' was not declared. Should it be static? drivers/net/tokenring/madgemc.c:469:16: warning: symbol 'madgemc_setnselout_pins' was not declared. Should it be static? drivers/net/tokenring/proteon.c:286:16: warning: symbol 'proteon_setnselout_pins' was not declared. Should it be static? drivers/net/tokenring/skisa.c:303:16: warning: symbol 'sk_isa_setnselout_pins' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 409b204435b85f7e159230c216f334a862cb3b95 Author: Hannes Eder Date: Fri Dec 26 00:06:28 2008 -0800 drivers/net/skfp: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/skfp/skfddi.c:620:13: warning: symbol 'skfp_interrupt' was not declared. Should it be static? drivers/net/skfp/skfddi.c:687:25: warning: symbol 'skfp_ctl_get_stats' was not declared. Should it be static? drivers/net/skfp/skfddi.c:1232:6: warning: symbol 'CheckSourceAddress' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 2f22d22ea7e95d45353b790ac52975a42e3a8558 Author: Hannes Eder Date: Fri Dec 26 00:04:53 2008 -0800 drivers/net/qlge: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/qlge/qlge_ethtool.c:100:6: warning: symbol 'ql_update_stats' was not declared. Should it be static? drivers/net/qlge/qlge_mpi.c:22:5: warning: symbol 'ql_get_mb_sts' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit f8057b7fefea1daca6928cbb95751d01fc934a41 Author: Hannes Eder Date: Fri Dec 26 00:04:26 2008 -0800 drivers/net/netxen: fix sparse warnings: use NULL pointer instead of plain integer Fix this sparse warnings: drivers/net/netxen/netxen_nic_hw.c:1462:18: warning: Using plain integer as NULL pointer drivers/net/netxen/netxen_nic_hw.c:1536:18: warning: Using plain integer as NULL pointer Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit e855aac805dd9c68b6fabe395cbc8e05f0eda6e4 Author: Hannes Eder Date: Fri Dec 26 00:03:59 2008 -0800 drivers/net/ixgbe: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/ixgbe/ixgbe_82598.c:180:5: warning: symbol 'ixgbe_get_copper_link_capabilities_82598' was not declared. Should it be static? drivers/net/ixgbe/ixgbe_82598.c:245:5: warning: symbol 'ixgbe_setup_fc_82598' was not declared. Should it be static? drivers/net/ixgbe/ixgbe_82598.c:729:5: warning: symbol 'ixgbe_set_vmdq_82598' was not declared. Should it be static? drivers/net/ixgbe/ixgbe_82598.c:773:5: warning: symbol 'ixgbe_set_vfta_82598' was not declared. Should it be static? drivers/net/ixgbe/ixgbe_82598.c:897:5: warning: symbol 'ixgbe_read_analog_reg8_82598' was not declared. Should it be static? drivers/net/ixgbe/ixgbe_82598.c:919:5: warning: symbol 'ixgbe_write_analog_reg8_82598' was not declared. Should it be static? drivers/net/ixgbe/ixgbe_82598.c:940:5: warning: symbol 'ixgbe_read_i2c_eeprom_82598' was not declared. Should it be static? drivers/net/ixgbe/ixgbe_82598.c:1000:5: warning: symbol 'ixgbe_get_supported_physical_layer_82598' was not declared. Should it be static? drivers/net/ixgbe/ixgbe_dcb_82598.c:100:5: warning: symbol 'ixgbe_dcb_config_packet_buffers_82598' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 0e49e64526ccd8cb78d7c4b4a732024ff221d4d0 Author: Hannes Eder Date: Fri Dec 26 00:03:19 2008 -0800 drivers/net/irda: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/irda/ma600-sir.c:239:5: warning: symbol 'ma600_reset' was not declared. Should it be static? drivers/net/irda/smsc-ircc2.c:875:5: warning: symbol 'smsc_ircc_hard_xmit_sir' was not declared. Should it be static? drivers/net/irda/smsc-ircc2.c:1131:6: warning: symbol 'smsc_ircc_set_sir_speed' was not declared. Should it be static? drivers/net/irda/smsc-ircc2.c:1897:6: warning: symbol 'smsc_ircc_sir_start' was not declared. Should it be static? drivers/net/irda/w83977af_ir.c:150:5: warning: symbol 'w83977af_open' was not declared. Should it be static? drivers/net/irda/w83977af_ir.c:313:5: warning: symbol 'w83977af_probe' was not declared. Should it be static? drivers/net/irda/w83977af_ir.c:412:6: warning: symbol 'w83977af_change_speed' was not declared. Should it be static? drivers/net/irda/w83977af_ir.c:492:5: warning: symbol 'w83977af_hard_xmit' was not declared. Should it be static? drivers/net/irda/w83977af_ir.c:734:5: warning: symbol 'w83977af_dma_receive' was not declared. Should it be static? drivers/net/irda/w83977af_ir.c:806:5: warning: symbol 'w83977af_dma_receive_complete' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 678c610b5a069a0a76c3189dd9aa801e5d5cd7e0 Author: Hannes Eder Date: Fri Dec 26 00:02:49 2008 -0800 drivers/net/igb: remove dead code (function 'igb_read_pci_cfg') Fix this warning: drivers/net/igb/e1000_mac.c:54: warning: 'igb_read_pci_cfg' defined but not used Signed-off-by: Hannes Eder Acked-by: Jeff Kirsher Signed-off-by: David S. Miller commit 5e4232ee5d7a1d2b2399e9080bf2f1a28444c80b Author: Hannes Eder Date: Fri Dec 26 00:01:18 2008 -0800 drivers/net/enic: fix sparse warning: make symbol static Fix this sparse warning: drivers/net/enic/vnic_dev.c:288:5: warning: symbol 'vnic_dev_capable' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit fa4c16da738952882d51b265adbef1d8d329d50f Author: Hannes Eder Date: Mon Dec 22 09:16:13 2008 +0000 drivers/net/e1000e: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/e1000e/es2lan.c:1265:5: warning: symbol 'e1000_read_kmrn_reg_80003es2lan' was not declared. Should it be static? drivers/net/e1000e/es2lan.c:1298:5: warning: symbol 'e1000_write_kmrn_reg_80003es2lan' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit af8eca5cbbc8f991ec14c8d7e3350bbe2ea49655 Author: Hannes Eder Date: Thu Dec 25 23:59:28 2008 -0800 drivers/net/cxgb3: comment out dead code The function 'vsc8211_set_speed_duplex' is not used, so comment it out. For 'vsc8211_set_automdi' the function 'vsc8211_set_speed_duplex' is the only caller, so comment it out as well. Fix this (sparse) warning: drivers/net/cxgb3/vsc8211.c:269: warning: 'vsc8211_set_automdi' defined but not used drivers/net/cxgb3/vsc8211.c:295:5: warning: symbol 'vsc8211_set_speed_duplex' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit b06715b7a3db551dcf4706f05e8d2285a66fe05f Author: Hannes Eder Date: Thu Dec 25 23:58:57 2008 -0800 drivers/net/bonding: fix sparse warnings: move decls to header file Fix this sparse warnings: drivers/net/bonding/bond_main.c:104:20: warning: symbol 'bonding_defaults' was not declared. Should it be static? drivers/net/bonding/bond_main.c:204:22: warning: symbol 'ad_select_tbl' was not declared. Should it be static? drivers/net/bonding/bond_sysfs.c:60:21: warning: symbol 'bonding_rwsem' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 9dc20f553f8cb548feaba9dae0cb4905327ecbac Author: Hannes Eder Date: Thu Dec 25 23:58:35 2008 -0800 drivers/net/atlx: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/atlx/atl1.c:198:16: warning: symbol 'atl1_check_options' was not declared. Should it be static? drivers/net/atlx/atl1.c:526:5: warning: symbol 'atl1_read_mac_addr' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 888432f6720bec93ddae93c4d1483a18198a1b3b Author: Hannes Eder Date: Thu Dec 25 23:57:21 2008 -0800 drivers/net/arcnet: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/arcnet/capmode.c:64:6: warning: symbol 'arcnet_cap_init' was not declared. Should it be static? drivers/net/arcnet/com90xx.c:586:5: warning: symbol 'com90xx_reset' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit dac499f912abd5838fa3501efdcd0f23d5f4fc29 Author: Hannes Eder Date: Thu Dec 25 23:56:45 2008 -0800 drivers/net: fix sparse warnings: make symbols static Fix this sparse warnings: drivers/net/3c523.c:350:6: warning: symbol 'alloc586' was not declared. Should it be static? drivers/net/cs89x0.c:1029:14: warning: symbol 'reset_chip' was not declared. Should it be static? drivers/net/eepro.c:1399:1: warning: symbol 'read_eeprom' was not declared. Should it be static? drivers/net/plip.c:1020:5: warning: symbol 'plip_hard_header_cache' was not declared. Should it be static? drivers/net/s2io.c:5116:6: warning: symbol 'do_s2io_store_unicast_mc' was not declared. Should it be static? drivers/net/smc9194.c:767:12: warning: symbol 'smc_findirq' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit a08b32df1417146b1a4c43e641ec1177da51896c Author: Hannes Eder Date: Thu Dec 25 23:56:04 2008 -0800 drivers/net: fix sparse warning: returning void-valued expression Fix this sparse warning: drivers/net/niu.c:8850:2: warning: returning void-valued expression Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit e4c3c13cb4c4985cb62cf28677fc0ace69a8d69f Author: Hannes Eder Date: Thu Dec 25 23:55:35 2008 -0800 drivers/net: fix sparse warnings: make do-while a compound statement While at it insert some extra curly braces and fix formatting. Fix this sparse warnings: drivers/net/atp.c:811:8: warning: do-while statement is not a compound statement drivers/net/atp.c:813:8: warning: do-while statement is not a compound statement drivers/net/atp.c:815:11: warning: do-while statement is not a compound statement drivers/net/atp.c:817:11: warning: do-while statement is not a compound statement drivers/net/plip.c:642:4: warning: do-while statement is not a compound statement drivers/net/plip.c:647:4: warning: do-while statement is not a compound statement drivers/net/plip.c:820:4: warning: do-while statement is not a compound statement drivers/net/plip.c:825:4: warning: do-while statement is not a compound statement drivers/net/starfire.c:886:3: warning: do-while statement is not a compound statement Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 2705d4f87c068552f45e5d6feaa5c468a312f761 Author: Hannes Eder Date: Thu Dec 25 23:52:57 2008 -0800 drivers/net: fix sparse warning: use ANSI-style function declaration Fix this sparse warning: drivers/net/ne.c:932:24: warning: non-ANSI function declaration of function 'init_module' Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit d76e56b4c620c959fa8346c08d24ee4b2783a564 Author: Nathan Lynch Date: Mon Dec 22 08:42:11 2008 +0000 ehea: use get_zeroed_page for alignment-sensitive allocation With slub debug enabled, I see the following errors and crash with 2.6.28-rc9: IBM eHEA ethernet device driver (Release EHEA_0095) ehea: Error in ehea_h_register_rpage_mr: not on pageboundary ehea: Error in ehea_reg_mr_section: register_rpage_mr failed ehea: Error in ehea_reg_kernel_mr: registering mr failed ehea: Error in ehea_setup_ports: creating MR failed ehea 23c00100.lhea: setup_ports failed Unable to handle kernel paging request for data at address 0x6b6b6b6b6b6bbdcb Faulting instruction address: 0xd000000000064a24 cpu 0x0: Vector: 300 (Data Access) at [c0000000740e7190] pc: d000000000064a24: .ehea_update_firmware_handles+0x84/0x47c [ehea] lr: d00000000006df34: .ehea_probe_adapter+0x35c/0x39c [ehea] sp: c0000000740e7410 msr: 8000000000009032 dar: 6b6b6b6b6b6bbdcb dsisr: 40000000 current = 0xc000000074233780 paca = 0xc0000000008a3300 pid = 2046, comm = modprobe enter ? for help [c0000000740e74f0] d00000000006df34 .ehea_probe_adapter+0x35c/0x39c [ehea] [c0000000740e75a0] c00000000041d5a4 .of_platform_device_probe+0x78/0xb0 [c0000000740e7630] c0000000002d8b38 .driver_probe_device+0x13c/0x200 [c0000000740e76c0] c0000000002d8c90 .__driver_attach+0x94/0xd8 [c0000000740e7750] c0000000002d7d64 .bus_for_each_dev+0x80/0xd8 [c0000000740e7800] c0000000002d889c .driver_attach+0x28/0x40 [c0000000740e7880] c0000000002d8340 .bus_add_driver+0xd4/0x284 [c0000000740e7920] c0000000002d90a0 .driver_register+0xc4/0x198 [c0000000740e79d0] c00000000041d45c .of_register_driver+0x4c/0x60 [c0000000740e7a50] c000000000020ef8 .ibmebus_register_driver+0x30/0x4c [c0000000740e7ae0] d00000000006e108 .ehea_module_init+0x194/0x208c [ehea] [c0000000740e7b90] c000000000009028 .do_one_initcall+0x90/0x1ac [c0000000740e7d90] c00000000008619c .sys_init_module+0xc4/0x200 [c0000000740e7e30] c0000000000084ac syscall_exit+0x0/0x40 (When slub debug is disabled it works fine.) PAGE_SIZE allocations via slab are not guaranteed to be page-aligned; use get_zeroed_page for the 'pt' buffer (I don't really know what this is, only that it is passed to firmware and that the first error message complains about its alignment). This allows the system to boot. Signed-off-by: Nathan Lynch Signed-off-by: David S. Miller commit 359d67d6ad054ae11ad459665fdfb883aca87782 Author: Julia Lawall Date: Mon Dec 22 21:53:40 2008 +0000 [CIFS] Remove redundant test In fs/cifs/cifssmb.c, pLockData is tested for being NULL at the beginning of the function, and not reassigned subsequently. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) Signed-off-by: Julia Lawall Signed-off-by: Steve French commit c6fbba0546d3ead18d4a623e76e28bcbaa66a325 Author: Steve French Date: Thu Dec 18 01:41:20 2008 +0000 [CIFS] make sure that DFS pathnames are properly formed The paths in a DFS request are supposed to only have a single preceding backslash, but we are sending them with a double backslash. This is exposing a bug in Windows where it also sends a path in the response that has a double backslash. The existing code that builds the mount option string however expects a double backslash prefix in a couple of places when it tries to use the path returned by build_path_from_dentry. Fix compose_mount_options to expect properly formed DFS paths (single backslash at front). Also clean up error handling in that function. There was a possible NULL pointer dereference and situations where a partially built option string would be returned. Tested against Samba 3.0.28-ish server and Samba 3.3 and Win2k8. CC: Stable Signed-off-by: Jeff Layton Signed-off-by: Steve French commit ac6a3ef405f314c206906463ca9913a826a577ee Author: Volker Lendecke Date: Sat Dec 6 16:40:40 2008 +0100 Remove an already-checked error condition in SendReceiveBlockingLock Remove an already-checked error condition in SendReceiveBlockingLock Signed-off-by: Volker Lendecke Signed-off-by: Steve French commit 698e96a826939bb24063f6a61801c174e19c32b1 Author: Volker Lendecke Date: Sat Dec 6 16:39:31 2008 +0100 Streamline SendReceiveBlockingLock: Use "goto out:" in an error condition Streamline SendReceiveBlockingLock: Use "goto out:" in an error condition Signed-off-by: Volker Lendecke Signed-off-by: Steve French commit 17c8bfed8abbbed82937a751abfc40d2866e3196 Author: Volker Lendecke Date: Sat Dec 6 16:38:19 2008 +0100 Streamline SendReceiveBlockingLock: Use "goto out:" in an error condition Streamline SendReceiveBlockingLock: Use "goto out:" in an error condition Signed-off-by: Volker Lendecke Signed-off-by: Steve French commit 2b2bdfba7a3679f67b7c3aca4a4b08b24bb675a8 Author: Steve French Date: Thu Dec 11 17:26:54 2008 +0000 [CIFS] Streamline SendReceive[2] by using "goto out:" in an error condition Signed-off-by: Volker Lendecke Signed-off-by: Steve French commit 8e4f2e8a1e5cfa07c5b2731accee0e6eb4c64575 Author: Volker Lendecke Date: Sat Dec 6 16:22:15 2008 +0100 Slightly streamline SendReceive[2] Slightly streamline SendReceive[2] Remove an else branch by naming the error condition what it is Signed-off-by: Volker Lendecke Signed-off-by: Steve French commit 829049cbb1d2ddda2be17ea008b6b3c457808d91 Author: Volker Lendecke Date: Sat Dec 6 16:00:53 2008 +0100 Check the return value of cifs_sign_smb[2] Check the return value of cifs_sign_smb[2] Signed-off-by: Volker Lendecke Signed-off-by: Steve French commit 4c3130efda1ef4f28d5f26819fae2e58c3945f0b Author: Steve French Date: Tue Dec 9 00:28:16 2008 +0000 [CIFS] Cleanup: Move the check for too large R/W requests This avoids an unnecessary else branch Signed-off-by: Volker Lendecke Signed-off-by: Steve French commit 27a97a613b96688e59dd116cae3f0c94107b434c Author: Volker Lendecke Date: Mon Dec 8 20:59:39 2008 +0000 [CIFS] Slightly simplify wait_for_free_request(), remove an unnecessary "else" branch This is no functional change, because in the "if" branch we do an early "return 0;". Signed-off-by: Volker Lendecke Signed-off-by: Steve French commit 8fbbd365cc700e288fb6f9780b092c5afa4946e5 Author: Volker Lendecke Date: Sat Dec 6 13:12:34 2008 +0100 Simplify allocate_mid() slightly: Remove some unnecessary "else" branches Simplify allocate_mid() slightly: Remove some unnecessary "else" branches Signed-off-by: Volker Lendecke Acked-by: Jeff Layton Signed-off-by: Steve French commit 6d9c6d543165d1d492602c1371cb019040093584 Author: Volker Lendecke Date: Mon Dec 8 20:50:24 2008 +0000 [CIFS] In SendReceive, move consistency check out of the mutexed region inbuf->smb_buf_length does not change in in wait_for_free_request() or in allocate_mid(), so we can check it early. Signed-off-by: Volker Lendecke Acked-by: Jeff Layton Signed-off-by: Steve French commit 00e485b0198ea4f509341373f1d9adb0a5977a2f Author: Jeff Layton Date: Fri Dec 5 20:41:21 2008 -0500 cifs: store password in tcon cifs: store password in tcon Each tcon has its own password for share-level security. Store it in the tcon and wipe it clean and free it when freeing the tcon. When doing the tree connect with share-level security, use the tcon password instead of the session password. Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 4e53a3fb98d3d5c2941d2e7199dab317a9d4ead3 Author: Jeff Layton Date: Fri Dec 5 20:41:21 2008 -0500 cifs: have calc_lanman_hash take more granular args cifs: have calc_lanman_hash take more granular args We need to use this routine to encrypt passwords associated with the tcon too. Don't assume that the password will be attached to the smb_session. Also, make some of the values in the lower encryption functions const since they aren't changed. Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 55162dec9371a6f6ac63ff546c182cc6144a649e Author: Jeff Layton Date: Fri Dec 5 20:41:21 2008 -0500 cifs: zero out session password before freeing it cifs: zero out session password before freeing it ...just to be on the safe side. Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 85705524258f93a6086c3247a58f34a661b82b3d Author: Jeff Layton Date: Fri Dec 5 20:41:21 2008 -0500 cifs: fix wait_for_response to time out sleeping processes correctly cifs: fix wait_for_response to time out sleeping processes correctly The current scheme that CIFS uses to sleep and wait for a response is not quite what we want. After sending a request, wait_for_response puts the task to sleep with wait_event(). One of the conditions for wait_event is a timeout (using time_after()). The problem with this is that there is no guarantee that the process will ever be woken back up. If the server stops sending data, then cifs_demultiplex_thread will leave its response queue sleeping. I think the only thing that saves us here is the fact that cifs_dnotify_thread periodically (every 15s) wakes up sleeping processes on all response_q's that have calls in flight. This makes for unnecessary wakeups of some processes. It also means large variability in the timeouts since they're all woken up at once. Instead of this, put the tasks to sleep with wait_event_timeout. This makes them wake up on their own if they time out. With this change, cifs_dnotify_thread should no longer be needed. I've been testing this in conjunction with some other patches that I'm working on. It doesn't seem to affect performance at all with with heavy I/O. Identical iozone -ac runs complete in almost exactly the same time (<1% difference in times). Thanks to Wasrshi Nimara for initially pointing this out. Wasrshi, it would be nice to know whether this patch also helps your testcase. Signed-off-by: Jeff Layton Cc: Wasrshi Nimara Signed-off-by: Steve French commit 8be0ed44c2fa4afcf2c6d2fb3102c926e9f989df Author: Steve French Date: Fri Dec 5 19:14:12 2008 +0000 [CIFS] Can not mount with prefixpath if root directory of share is inaccessible Windows allows you to deny access to the top of a share, but permit access to a directory lower in the path. With the prefixpath feature of cifs (ie mounting \\server\share\directory\subdirectory\etc.) this should have worked if the user specified a prefixpath which put the root of the mount at a directory to which he had access, but we still were doing a lookup on the root of the share (null path) when we should have been doing it on the prefixpath subdirectory. This fixes Samba bug # 5925 Acked-by: Jeff Layton Signed-off-by: Steve French commit 61e748015866e48aff91284e3d300c6e3035a87a Author: Steve French Date: Wed Dec 3 00:57:54 2008 +0000 [CIFS] various minor cleanups pointed out by checkpatch script Signed-off-by: Steve French commit 3de2091ac722e7dbc37d87d9112ab19ec6a871de Author: Steve French Date: Tue Dec 2 20:52:28 2008 +0000 [CIFS] fix typo Signed-off-by: Steve French commit acc18aa1e643519035abdab5e72dc75e534b5198 Author: Steve French Date: Tue Dec 2 18:53:55 2008 +0000 [CIFS] remove sparse warning Signed-off-by: Steve French commit 13a6e42af8d90e2e8eb7fa50adf862a525b70518 Author: Steve French Date: Tue Dec 2 17:24:33 2008 +0000 [CIFS] add mount option to send mandatory rather than advisory locks Some applications/subsystems require mandatory byte range locks (as is used for Windows/DOS/OS2 etc). Sending advisory (posix style) byte range lock requests (instead of mandatory byte range locks) can lead to problems for these applications (which expect that other clients be prevented from writing to portions of the file which they have locked and are updating). This mount option allows mounting cifs with the new mount option "forcemand" (or "forcemandatorylock") in order to have the cifs client use mandatory byte range locks (ie SMB/CIFS/Windows/NTFS style locks) rather than posix byte range lock requests, even if the server would support posix byte range lock requests. This has no effect if the server does not support the CIFS Unix Extensions (since posix style locks require support for the CIFS Unix Extensions), but for mounts to Samba servers this can be helpful for Wine and applications that require mandatory byte range locks. Acked-by: Jeff Layton CC: Alexander Bokovoy Signed-off-by: Steve French commit d5c5605c27c92dac6de1a7a658af5b030847f949 Author: Jeff Layton Date: Mon Dec 1 18:42:33 2008 -0500 cifs: make ipv6_connect take a TCP_Server_Info arg Signed-off-by: Jeff Layton Signed-off-by: Steve French commit bcf4b1063db246a90b9e09e0556f635d632eef36 Author: Jeff Layton Date: Mon Dec 1 18:42:15 2008 -0500 cifs: make ipv4_connect take a TCP_Server_Info arg In order to unify the smb_send routines, we need to reorganize the routines that connect the sockets. Have ipv4_connect take a TCP_Server_Info pointer and get the necessary fields from that. Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 7586b76585d15db767c19255ba0ecfb164df99f7 Author: Jeff Layton Date: Mon Dec 1 18:41:49 2008 -0500 cifs: don't declare smb_vol info on the stack struct smb_vol is fairly large, it's probably best to kzalloc it... Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 63c038c29774476c5dae759e348c269342b4dbef Author: Jeff Layton Date: Mon Dec 1 18:41:46 2008 -0500 cifs: move allocation of new TCP_Server_Info into separate function Clean up cifs_mount a bit by moving the code that creates new TCP sessions into a separate function. Have that function search for an existing socket and then create a new one if one isn't found. Also reorganize the initializion of TCP_Server_Info a bit to prepare for cleanup of the socket connection code. Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 8ecaf67a8ea58c8f131ff045475c74e9538d6b7a Author: Jeff Layton Date: Mon Dec 1 15:23:50 2008 -0500 cifs: account for IPv6 in ses->serverName and clean up netbios name handling The current code for setting the session serverName is IPv4-specific. Allow it to be an IPv6 address as well. Use NIP* macros to set the format. This also entails increasing the length of the serverName field, so declare a new macro for RFC1001 name length and use it in the appropriate places. Finally, drop the unicode_server_Name field from TCP_Server_Info since it's not used. We can add it back later if needed, but for now it just wastes memory. Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 954d7a1cf12158fed23dd8b0f3f563d5a5c97f28 Author: Jeff Layton Date: Mon Dec 1 15:23:50 2008 -0500 cifs: make dnotify thread experimental code Now that tasks sleeping in wait_for_response will time out on their own, we're not reliant on the dnotify thread to do this. Mark it as experimental code for now. Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 72ca545b2d83ac7de671bf66d2dbc214528b4c0c Author: Jeff Layton Date: Mon Dec 1 07:09:36 2008 -0500 cifs: convert tcpSem to a mutex Mutexes are preferred for single-holder semaphores... Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 0468a2cf914e79442b8309ce62e3f861599d8cab Author: Jeff Layton Date: Mon Dec 1 07:09:35 2008 -0500 cifs: take module reference when starting cifsd cifsd can outlive the last cifs mount. We need to hold a module reference until it exits to prevent someone from unplugging the module until we're ready. Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 80909022ce966191e6140fcc15d8aff57a7df32e Author: Jeff Layton Date: Mon Dec 1 07:09:35 2008 -0500 cifs: display addr and prefixpath options in /proc/mounts Have cifs_show_options display the addr and prefixpath options in /proc/mounts. Reduce struct dereferencing by adding some local variables. Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 24b9b06ba7ea53aa0c4d0b1c8c1e93aa1bd9fe72 Author: Jeff Layton Date: Mon Dec 1 07:09:34 2008 -0500 cifs: remove unused SMB session pointer from struct mid_q_entry Signed-off-by: Jeff Layton Signed-off-by: Steve French commit 26c743bed9b0dc83dc736c68d2a3e7494a9790ad Author: Yevgeny Petrilin Date: Thu Dec 25 18:20:13 2008 -0800 mlx4_en: Remove pauses module parameters. They are controlled through Ethtool interface. Signed-off-by: Yevgeny Petrilin Signed-off-by: David S. Miller commit 60b9f9e5588a9e37c35abc2051d57ef12171f916 Author: Yevgeny Petrilin Date: Thu Dec 25 18:19:47 2008 -0800 mlx4_en: Removed Interrupt moderation module parameters They are controlled through Ethtool interface, no need to have two ways to modify them. Signed-off-by: Yevgeny Petrilin Signed-off-by: David S. Miller commit c03ea21fcf549eed42de7aaa965ced8bee17aa76 Author: Yevgeny Petrilin Date: Thu Dec 25 18:14:04 2008 -0800 mlx4_en: Removed redundant cq->armed flag Signed-off-by: Yevgeny Petrilin Signed-off-by: David S. Miller commit 48374ddce72e278e29080e3177e74a13c034d8b4 Author: Yevgeny Petrilin Date: Thu Dec 25 18:13:45 2008 -0800 mlx4_en: Removed TX locking when polling TX cq There is no need to synchronize the polling with the transmit function. The only place to synchronize is when we process the cq from the transmit function. Also removed spin_lock_irq, and using spin_trylock, if somebody else is already processing the cq, no need to wait for it to finish. Signed-off-by: Yevgeny Petrilin Signed-off-by: David S. Miller commit b51968d676db1c4e541b4c84de7ce7af812c9e9f Author: Yevgeny Petrilin Date: Thu Dec 25 18:13:20 2008 -0800 mlx4_en: Memory leak on completion queue free If port is being destroyed without being activated before, CQ resources are not freed. Signed-off-by: Yevgeny Petrilin Signed-off-by: David S. Miller commit e74b3f7d568a62d21a76885438d7351948e7355a Merge: 13e620e0e6c609ccc9882ea280f4f077500d51a0 59f8500efb05096484a55263109acab6a6df89d5 Author: David S. Miller Date: Thu Dec 25 18:10:12 2008 -0800 Merge branch 'for-david' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 commit 13e620e0e6c609ccc9882ea280f4f077500d51a0 Author: Brice Goglin Date: Thu Dec 25 18:09:16 2008 -0800 myri10ge: update driver version to 1.4.4-1.395 Update myri10ge driver version to 1.4.4-1.395. Signed-off-by: Brice Goglin Signed-off-by: David S. Miller commit e92df2820d2d8de4be3dcbad96eb144ce6fd550d Author: Brice Goglin Date: Thu Dec 25 18:08:59 2008 -0800 myri10ge: update firmware headers to 1.4.37 Update myri10ge firmware headers to 1.4.37: * Make each member of the error/cmd enum an initialized one, so there is a convenient numerical reference to look for reverse conversion. * Add new MXGEFW_CMD_RELAX_RXBUFFER_ALIGNMENT command. * Add new "features" field to mcp_header. Signed-off-by: Brice Goglin Signed-off-by: David S. Miller commit 36994a0a7004fd4777cd93a4b658b5f84bf4c93e Author: Johannes Berg Date: Thu Dec 25 18:07:50 2008 -0800 forcedeth: don't poll NV event 36 Polling doesn't seem to be necessary on my hardware, at least I haven't seen any bad effects testing it a while. Remove the polling so the CPU doesn't have to wake up a hundred times per second. Signed-off-by: Johannes Berg Signed-off-by: David S. Miller commit 88a44e51e9a5202f8856f72400fc87a39205186d Author: Julia Lawall Date: Thu Dec 25 18:04:51 2008 -0800 net/appletalk: Remove redundant test atif is tested for being NULL twice, with the same effect in each case. I have kept the second test, as it seems to fit well with the comment above it. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; expression E; position p1,p2; @@ if (x@p1 == NULL || ...) { ... when forall return ...; } ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) ( x@p2 == NULL | x@p2 != NULL ) // another path to the test that is not through p1? @s exists@ local idexpression r.x; position r.p1,r.p2; @@ ... when != x@p1 ( x@p2 == NULL | x@p2 != NULL ) @fix depends on !s@ position r.p1,r.p2; expression x,E; statement S1,S2; @@ ( - if ((x@p2 != NULL) || ...) S1 | - if ((x@p2 == NULL) && ...) S1 | - BUG_ON(x@p2 == NULL); ) // Signed-off-by: Julia Lawall Signed-off-by: David S. Miller commit c14ea0ca659d378dd377e417162ebd908d1da4ce Author: Julia Lawall Date: Thu Dec 25 18:03:44 2008 -0800 drivers/net/wan: Remove redundant test arg is checked not to be NULL a few lines before. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; expression E; position p1,p2; @@ if (x@p1 == NULL || ...) { ... when forall return ...; } ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) ( x@p2 == NULL | x@p2 != NULL ) // another path to the test that is not through p1? @s exists@ local idexpression r.x; position r.p1,r.p2; @@ ... when != x@p1 ( x@p2 == NULL | x@p2 != NULL ) @fix depends on !s@ position r.p1,r.p2; expression x,E; statement S1,S2; @@ ( - if ((x@p2 != NULL) || ...) S1 | - if ((x@p2 == NULL) && ...) S1 | - BUG_ON(x@p2 == NULL); ) // Signed-off-by: Julia Lawall Signed-off-by: David S. Miller commit 90f5dfcc6afafcc3e1c18298143c1213b071990d Author: Julia Lawall Date: Thu Dec 25 18:03:28 2008 -0800 drivers/net: Remove redundant test In each case, ap is checked not to be NULL a few lines before. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; expression E; position p1,p2; @@ if (x@p1 == NULL || ...) { ... when forall return ...; } ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) ( x@p2 == NULL | x@p2 != NULL ) // another path to the test that is not through p1? @s exists@ local idexpression r.x; position r.p1,r.p2; @@ ... when != x@p1 ( x@p2 == NULL | x@p2 != NULL ) @fix depends on !s@ position r.p1,r.p2; expression x,E; statement S1,S2; @@ ( - if ((x@p2 != NULL) || ...) S1 | - if ((x@p2 == NULL) && ...) S1 | - BUG_ON(x@p2 == NULL); ) // Signed-off-by: Julia Lawall Signed-off-by: David S. Miller commit 662f44af635f6bde366d44abacaeec7916d9f168 Author: Julia Lawall Date: Thu Dec 25 18:03:09 2008 -0800 drivers/net/ehea: Remove redundant test In each case, vpage is checked not to be NULL just after it is initialized at the beginning of each loop iteration. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; expression E; position p1,p2; @@ if (x@p1 == NULL || ...) { ... when forall return ...; } ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) ( x@p2 == NULL | x@p2 != NULL ) // another path to the test that is not through p1? @s exists@ local idexpression r.x; position r.p1,r.p2; @@ ... when != x@p1 ( x@p2 == NULL | x@p2 != NULL ) @fix depends on !s@ position r.p1,r.p2; expression x,E; statement S1,S2; @@ ( - if ((x@p2 != NULL) || ...) S1 | - if ((x@p2 == NULL) && ...) S1 | - BUG_ON(x@p2 == NULL); ) // Signed-off-by: Julia Lawall Signed-off-by: David S. Miller commit b0fd0d235df2b3cf8e5e244e301614092a9c317c Author: Julia Lawall Date: Thu Dec 25 18:02:49 2008 -0800 drivers/net/au1000_eth.c: Remove redundant test phydev is checked to be not NULL a few lines above. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; expression E; position p1,p2; @@ if (x@p1 == NULL || ...) { ... when forall return ...; } ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) ( x@p2 == NULL | x@p2 != NULL ) // another path to the test that is not through p1? @s exists@ local idexpression r.x; position r.p1,r.p2; @@ ... when != x@p1 ( x@p2 == NULL | x@p2 != NULL ) @fix depends on !s@ position r.p1,r.p2; expression x,E; statement S1,S2; @@ ( - if ((x@p2 != NULL) || ...) S1 | - if ((x@p2 == NULL) && ...) S1 | - BUG_ON(x@p2 == NULL); ) // Signed-off-by: Julia Lawall Signed-off-by: David S. Miller commit c062076cc999795af19ff61d8c76f33e5ceb9ca0 Author: Roel Kluin Date: Thu Dec 25 17:23:50 2008 -0800 qlge: ql_adapter_down() typo Signed-off-by: Roel Kluin Signed-off-by: Ron Mercer Signed-off-by: David S. Miller commit 619e803d3c1b7bcc17c45e81f309d0b9b3df2d5d Author: Vegard Nossum Date: Thu Dec 25 17:21:17 2008 -0800 netlink: fix (theoretical) overrun in message iteration See commit 1045b03e07d85f3545118510a587035536030c1c ("netlink: fix overrun in attribute iteration") for a detailed explanation of why this patch is necessary. In short, nlmsg_next() can make "remaining" go negative, and the remaining >= sizeof(...) comparison will promote "remaining" to an unsigned type, which means that the expression will evaluate to true for negative numbers, even though it was not intended. I put "theoretical" in the title because I have no evidence that this can actually happen, but I suspect that a crafted netlink packet can trigger some badness. Note that the last test, which seemingly has the exact same problem (also true for nla_ok()), is perfectly OK, since we already know that remaining is positive. Signed-off-by: Vegard Nossum Signed-off-by: David S. Miller commit 64ff3b938ec6782e6585a83d5459b98b0c3f6eb8 Author: Herbert Xu Date: Thu Dec 25 17:12:58 2008 -0800 tcp: Always set urgent pointer if it's beyond snd_nxt Our TCP stack does not set the urgent flag if the urgent pointer does not fit in 16 bits, i.e., if it is more than 64K from the sequence number of a packet. This behaviour is different from the BSDs, and clearly contradicts the purpose of urgent mode, which is to send the notification (though not necessarily the associated data) as soon as possible. Our current behaviour may in fact delay the urgent notification indefinitely if the receiver window does not open up. Simply matching BSD however may break legacy applications which incorrectly rely on the out-of-band delivery of urgent data, and conversely the in-band delivery of non-urgent data. Alexey Kuznetsov suggested a safe solution of following BSD only if the urgent pointer itself has not yet been transmitted. This way we guarantee that when the remote end sees the packet with non-urgent data marked as urgent due to wrap-around we would have advanced the urgent pointer beyond, either to the actual urgent data or to an as-yet untransmitted packet. The only potential downside is that applications on the remote end may see multiple SIGURG notifications. However, this would occur anyway with other TCP stacks. More importantly, the outcome of such a duplicate notification is likely to be harmless since the signal itself does not carry any information other than the fact that we're in urgent mode. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit 8510b937ae1e23583abdeb828cad5c518295c61d Author: Wei Yongjun Date: Thu Dec 25 16:59:03 2008 -0800 sctp: Add validity check for SCTP_PARTIAL_DELIVERY_POINT socket option The latest ietf socket extensions API draft said: 8.1.21. Set or Get the SCTP Partial Delivery Point Note also that the call will fail if the user attempts to set this value larger than the socket receive buffer size. This patch add this validity check for SCTP_PARTIAL_DELIVERY_POINT socket option. Signed-off-by: Wei Yongjun Signed-off-by: Vlad Yasevich Signed-off-by: David S. Miller commit 9fcb95a105758b81ef0131cd18e2db5149f13e95 Author: Wei Yongjun Date: Thu Dec 25 16:58:11 2008 -0800 sctp: Avoid memory overflow while FWD-TSN chunk is received with bad stream ID If FWD-TSN chunk is received with bad stream ID, the sctp will not do the validity check, this may cause memory overflow when overwrite the TSN of the stream ID. The FORWARD-TSN chunk is like this: FORWARD-TSN chunk Type = 192 Flags = 0 Length = 172 NewTSN = 99 Stream = 10000 StreamSequence = 0xFFFF This patch fix this problem by discard the chunk if stream ID is not less than MIS. Signed-off-by: Wei Yongjun Signed-off-by: Vlad Yasevich Signed-off-by: David S. Miller commit aea3c5c05d2c409e93bfa80dcedc06af7da6c13b Author: Wei Yongjun Date: Thu Dec 25 16:57:24 2008 -0800 sctp: Implement socket option SCTP_GET_ASSOC_NUMBER Implement socket option SCTP_GET_ASSOC_NUMBER of the latest ietf socket extensions API draft. 8.2.5. Get the Current Number of Associations (SCTP_GET_ASSOC_NUMBER) This option gets the current number of associations that are attached to a one-to-many style socket. The option value is an uint32_t. Signed-off-by: Wei Yongjun Signed-off-by: Vlad Yasevich Signed-off-by: David S. Miller commit ea686a2653c5586b1c7192958b9d521abde66e92 Author: Wei Yongjun Date: Thu Dec 25 16:56:45 2008 -0800 sctp: Fix a typo in socket.c Just fix a typo in socket.c. Signed-off-by: Wei Yongjun Signed-off-by: Vlad Yasevich Signed-off-by: David S. Miller commit e89c2095815d82eaa9fb85eff42f8b65b67a59cf Author: Wei Yongjun Date: Thu Dec 25 16:54:58 2008 -0800 sctp: Bring SCTP_MAXSEG socket option into ietf API extension compliance Brings maxseg socket option set/get into line with the latest ietf socket extensions API draft, while maintaining backwards compatibility. Signed-off-by: Wei Yongjun Signed-off-by: Vlad Yasevich Signed-off-by: David S. Miller commit 161c8d2f50109b44b664eaf23831ea1587979a61 Author: Krzysztof Halasa Date: Thu Dec 25 16:50:41 2008 -0800 net: PHYLIB mdio fixes #2 The PHYLIB mdio code has more problems in error paths: - mdiobus_release can be called before bus->state is set to MDIOBUS_REGISTERED - mdiobus_scan allocates resources which need to be freed - the comment is wrong, the resistors used are actually pull-ups. Signed-off-by: Krzysztof Halasa Signed-off-by: David S. Miller commit f7d1b9f5aafa371d7f51f644aa3c38bc914e9205 Author: Eric Dumazet Date: Thu Dec 25 16:45:19 2008 -0800 vlan: fix convertion to net_device_ops commit 656299f706e52e0409733d704c2761f1b12d6954 (vlan: convert to net_device_ops) added a net_device_ops with a NULL ndo_start_xmit field. This gives a crash in dev_hard_start_xmit() Fix it using two net_device_ops structures, one for hwaccel vlan, one for non hwaccel vlan. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit d45227391c70ea12ec129ebfa97841e9b7ff34fd Author: Steve Glendinning Date: Thu Dec 25 16:44:01 2008 -0800 smsc911x: fix platform resource call during module unload This patch fixes a typo, the platform_get_resource calls in smsc911x_drv_remove are supposed to look the same as those in smsc911x_drv_probe. Reported and fixed by dfoley@telus.net. Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit dc26977f77dd3486b59516d2cc03627009c0d4c6 Author: Steve Glendinning Date: Thu Dec 25 16:43:34 2008 -0800 smsc911x: don't clobber driver_data smsc911x uses driver_data to store our net_device, don't overwrite this with the mii_bus. Reported and fixed by dfoley@telus.net. Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit 7091e728c570157496e52296d2dbe816a6916836 Author: Alexey Dobriyan Date: Thu Dec 25 16:42:51 2008 -0800 netns: igmp: make /proc/net/{igmp,mcfilter} per netns This patch makes the followinf proc entries per-netns: /proc/net/igmp /proc/net/mcfilter Signed-off-by: Alexey Dobriyan Acked-by: Daniel Lezcano Acked-by: Benjamin Thery Signed-off-by: David S. Miller commit b4ee07df3d8121060200dbe1c6686a4e0682bee2 Author: Alexey Dobriyan Date: Thu Dec 25 16:42:23 2008 -0800 netns: igmp: allow IPPROTO_IGMP sockets in netns Looks like everything is already ready. Required for ebtables(8) for one thing. Also, required for ipmr per-netns (coming soon). (Benjamin) Signed-off-by: Alexey Dobriyan Acked-by: Benjamin Thery Signed-off-by: David S. Miller commit cb5b04fe14394a93eb9a3523f5af9f77480a5a04 Author: Steve Glendinning Date: Thu Dec 25 16:41:09 2008 -0800 smsc911x: make smsc911x_ethtool_ops constant Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit 631b7568c7d8f0222773e1beb2460a86541ae394 Author: Steve Glendinning Date: Thu Dec 25 16:40:47 2008 -0800 smsc911x: convert driver to use net_device_ops Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit dd0451938815d8b901488b1058f52023892c6cde Author: Steve Glendinning Date: Thu Dec 25 16:40:19 2008 -0800 smsc911x: fix BUG if module is removed while interface is up If the module is removed while its interface is up, smsc911x_stop is not called until after smsc911x_drv_remove has disposed of phy_dev. This patch changes the stop method to handle this situation. This is a different problem to the one reported by dfoley@telus.net. Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit 4e202284e6ac1695df3eb4a0e549ea78addfb663 Merge: 826e08b0157c0ce8a80dfe3c0a6c5a1540dd0b1d 80f40ee4a07530cc3acbc239a9299ec47025825b 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 Author: Ingo Molnar Date: Thu Dec 25 13:42:23 2008 +0100 Merge branch 'sched/urgent'; commit 'v2.6.28' into sched/core commit cef7125def4dd104769f400c941199614da0aca1 Author: Hendrik Brueckner Date: Thu Dec 25 13:39:55 2008 +0100 [S390] provide documentation for hvc_iucv kernel parameter. Signed-off-by: Hendrik Brueckner Signed-off-by: Martin Schwidefsky commit 2a7c6f2c39d1291e55403676b25fcfbff78fc5fb Author: Peter Tiedemann Date: Thu Dec 25 13:39:54 2008 +0100 [S390] convert ctcm printks to dev_xxx and pr_xxx macros. Signed-off-by: Peter Tiedemann Signed-off-by: Martin Schwidefsky commit ecf39d42129767c0b4b4a6cf4997c1219c860934 Author: Christof Schmitt Date: Thu Dec 25 13:39:53 2008 +0100 [S390] convert zfcp printks to pr_xxx macros. Signed-off-by: Christof Schmitt Signed-off-by: Martin Schwidefsky commit 5466c2e43e78068cfe634b07fe36dd7a6a7af535 Author: Martin Schwidefsky Date: Thu Dec 25 13:39:52 2008 +0100 [S390] convert vmlogrdr printks to pr_xxx macros. Signed-off-by: Martin Schwidefsky commit 17159dc6fb8769e52edb23d138c2b6bc634397a3 Author: Michael Holzheu Date: Thu Dec 25 13:39:51 2008 +0100 [S390] convert zfcp dumper printks to pr_xxx macros. Signed-off-by: Michael Holzheu Signed-off-by: Martin Schwidefsky commit 395d31d40cc38270dd7c024691404e2eddf0678d Author: Martin Schwidefsky Date: Thu Dec 25 13:39:50 2008 +0100 [S390] convert cpu related printks to pr_xxx macros. Signed-off-by: Martin Schwidefsky commit 74eacdb9c2bf9fc6e8c6785013b5dd0e551a9dfa Author: Frank Blaschka Date: Thu Dec 25 13:39:49 2008 +0100 [S390] convert qeth printks to dev_xxx and pr_xxx macros. Signed-off-by: Frank Blaschka Signed-off-by: Martin Schwidefsky commit b3ff088b3025c3583194edd7576215b61333111f Author: Martin Schwidefsky Date: Thu Dec 25 13:39:48 2008 +0100 [S390] convert sclp printks to pr_xxx macros. Signed-off-by: Martin Schwidefsky commit 8f7c502c267c0e5e2dbbbdea9f3e7e85bbc95694 Author: Ursula Braun Date: Thu Dec 25 13:39:47 2008 +0100 [S390] convert iucv printks to dev_xxx and pr_xxx macros. Signed-off-by: Ursula Braun Signed-off-by: Martin Schwidefsky commit 136f7a1c4239be91e3e0f53532944b9aab7b58f8 Author: Martin Schwidefsky Date: Thu Dec 25 13:39:46 2008 +0100 [S390] convert ap_bus printks to pr_xxx macros. Signed-off-by: Martin Schwidefsky commit 93098bf01578763bb84b627fe893f219cc44b995 Author: Hongjie Yang Date: Thu Dec 25 13:39:45 2008 +0100 [S390] convert dcssblk and extmem printks messages to pr_xxx macros. Signed-off-by: Hongjie Yang Signed-off-by: Martin Schwidefsky commit 1519c0c6ebd2bfd29bae762a1741963a1d06bca2 Author: Melissa Howland Date: Thu Dec 25 13:39:44 2008 +0100 [S390] convert monwriter printks to pr_xxx macros. Signed-off-by: Melissa Howland Signed-off-by: Martin Schwidefsky commit c5612c1956597687e4bdf59f2649d20d60f5a2b6 Author: Michael Holzheu Date: Thu Dec 25 13:39:43 2008 +0100 [S390] convert s390 debug feature printks to pr_xxx macros. Signed-off-by: Michael Holzheu Signed-off-by: Martin Schwidefsky commit a4f5a299cf8468619dc17f0711017c6d72d6ab94 Author: Gerald Schaefer Date: Thu Dec 25 13:39:42 2008 +0100 [S390] convert monreader printks to pr_xxx macros. Signed-off-by: Gerald Schaefer Signed-off-by: Martin Schwidefsky commit e7534b0ec9a28c53a7bcc874e818a24d3b49680f Author: Gerald Schaefer Date: Thu Dec 25 13:39:41 2008 +0100 [S390] convert appldata printks to pr_xxx macros. Signed-off-by: Gerald Schaefer Signed-off-by: Martin Schwidefsky commit 3b6ed4ab48be2110aa93d9828783bfe86193331d Author: Martin Schwidefsky Date: Thu Dec 25 13:39:40 2008 +0100 [S390] convert setup printks to pr_xxx macros. Signed-off-by: Martin Schwidefsky commit f55495ba1a56adba57ea7d3164a766d83a631c58 Author: Michael Holzheu Date: Thu Dec 25 13:39:39 2008 +0100 [S390] convert hypfs printks to pr_xxx macros. Signed-off-by: Michael Holzheu Signed-off-by: Martin Schwidefsky commit feab6501d84f7e2f75cf0f5c7d43341431904374 Author: Martin Schwidefsky Date: Thu Dec 25 13:39:38 2008 +0100 [S390] convert time printks to pr_xxx macros. Signed-off-by: Martin Schwidefsky commit 39f09392498d8ee876bea3ad34f26c447924c818 Author: Jan Glauber Date: Thu Dec 25 13:39:37 2008 +0100 [S390] convert cpacf printks to pr_xxx macros. Signed-off-by: Jan Glauber Signed-off-by: Martin Schwidefsky commit e6d5a428e01b1387852f17b3dd7934239a0be0d4 Author: Michael Ernst Date: Thu Dec 25 13:39:36 2008 +0100 [S390] convert cio printks to pr_xxx macros. Signed-off-by: Michael Ernst Signed-off-by: Martin Schwidefsky commit 80a5c36d1dae15520aa0df0eff713c6c41c46035 Author: Frank Munzert Date: Thu Dec 25 13:39:35 2008 +0100 [S390] convert vmur printks to pr_xxx macros. Signed-off-by: Frank Munzert Signed-off-by: Martin Schwidefsky commit 2f526e5acbf1179d30bc9fa1d20b69ec4c0bb689 Author: Christian Borntraeger Date: Thu Dec 25 13:39:34 2008 +0100 [S390] convert cpcmd printks to pr_xxx macros. Signed-off-by: Christian Borntraeger Signed-off-by: Martin Schwidefsky commit c99fc5dadcd87e8b97613f50c48407678b731cfb Author: Klaus-D. Wacker Date: Thu Dec 25 13:39:33 2008 +0100 [S390] convert lcs printks to dev_xxx and pr_xxx macros. Signed-off-by: Klaus-D. Wacker Signed-off-by: Martin Schwidefsky commit 8988e58f8b7d4b5e8b64435bedf84e4b3987a63d Author: Christian Borntraeger Date: Thu Dec 25 13:39:32 2008 +0100 [S390] convert vmcp printks to pr_xxx macros. Signed-off-by: Christian Borntraeger Signed-off-by: Martin Schwidefsky commit d1c2f8928a2feab56a181bb7e9afe8f804fd26cd Author: Martin Schwidefsky Date: Thu Dec 25 13:39:31 2008 +0100 [S390] convert xpram printks to pr_xxx macros. Signed-off-by: Martin Schwidefsky commit acfa922c5a00eca0abac0e2b6d6666c606c27345 Author: Julia Lawall Date: Thu Dec 25 13:39:30 2008 +0100 [S390] s390: Remove redundant test The loop above the modified code only terminates when rc is a valid pointer. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; expression E; position p1,p2; @@ if (x@p1 == NULL || ...) { ... when forall return ...; } ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) ( x@p2 == NULL | x@p2 != NULL ) // another path to the test that is not through p1? @s exists@ local idexpression r.x; position r.p1,r.p2; @@ ... when != x@p1 ( x@p2 == NULL | x@p2 != NULL ) @fix depends on !s@ position r.p1,r.p2; expression x,E; statement S1,S2; @@ ( - if ((x@p2 != NULL) || ...) S1 | - if ((x@p2 == NULL) && ...) S1 | - BUG_ON(x@p2 == NULL); ) // Signed-off-by: Julia Lawall Signed-off-by: Martin Schwidefsky commit 0946100f566d04cc93e86654f3ba588ee94b3f4c Author: Hendrik Brueckner Date: Thu Dec 25 13:39:29 2008 +0100 [S390] s390/setup: set default preferred console device "ttyS" This patch sets the default console device for s390. The console= kernel parameter can be still used to switch the preferred console to some other device. In that case, console messages are also printed on the default console device (ttyS0). Signed-off-by: Hendrik Brueckner Signed-off-by: Martin Schwidefsky commit 21e7b2c4d59e5d6631b25e71e777cb0160997d6a Author: Julia Lawall Date: Thu Dec 25 13:39:28 2008 +0100 [S390] drivers/s390/crypto: Move dereference to after IS_ERR test If reply is ERR_PTR(...), then it should not be dereferenced, so I have moved the dereference from the declaration to after the IS_ERR test. The semantic match that finds the problem is as follows: (http://www.emn.fr/x-info/coccinelle/) // @match exists@ expression x, E; identifier fld; position p1,p2; @@ ( x = E; | x = E | x@p1->fld ... when != x = E IS_ERR(x@p2) ... when any ) @other_match exists@ expression match.x, E1, E2; position match.p1,match.p2; @@ x = E1 ... when != x = E2 when != x@p1 x@p2 @ script:python depends on !other_match@ p1 << match.p1; p2 << match.p2; @@ print "* file %s dereference %s test %s" % (p1[0].file,p1[0].line,p2[0].line) // Signed-off-by: Julia Lawall Signed-off-by: Martin Schwidefsky commit 33b1d09ef317d64c58b135c2e811bb55b3f15b19 Author: Martin Schwidefsky Date: Thu Dec 25 13:39:27 2008 +0100 [S390] panic_stack leak in smp_alloc_lowcore Fix freeing of the panic_stack if the allocation of async_stack failed. Signed-off-by: Martin Schwidefsky commit 4f7e90d6d61fa0e56821787521c12f8a626c4037 Author: Martin Schwidefsky Date: Thu Dec 25 13:39:26 2008 +0100 [S390] clear_table inline assembly contraints Tell the compile that the clear_table inline assembly writes to the memory referenced by *s. Signed-off-by: Martin Schwidefsky commit c185b783b0993c294ca22ad0a55e6cdf8df4f9d3 Author: Martin Schwidefsky Date: Thu Dec 25 13:39:25 2008 +0100 [S390] Remove config options. On s390 we always want to run with precise cputime accounting. Remove the config options VIRT_TIMER and VIRT_CPU_ACCOUNTING. Signed-off-by: Martin Schwidefsky commit 349f1b671a4b2612c1355612bedadc81f86d26f1 Author: Heiko Carstens Date: Thu Dec 25 13:39:24 2008 +0100 [S390] cpu topology: remove dead code Interrupts haven't been implemented. So remove the dead code. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 2b1a61f0a8c714c96277bf16a823a84bafa1397d Author: Heiko Carstens Date: Thu Dec 25 13:39:23 2008 +0100 [S390] cpu topology: introduce kernel parameter Introduce a topology=[on|off] kernel parameter which allows to switch cpu topology on/off. Default will be off, since it looks like that for some workloards this doesn't behave very well (on s390). Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 9fee8db222a344b9ee407fad9c652ed823690788 Author: Martin Schwidefsky Date: Thu Dec 25 13:39:22 2008 +0100 [S390] add new machine types to setup_hwcaps. Add the machine types for z9-bc, z10-ec and z10-bc to the elf_platform detection in setup_hwcaps. Signed-off-by: Martin Schwidefsky commit c58d92b233a41b81fbbea6add4ba1b512784f837 Author: Heiko Carstens Date: Thu Dec 25 13:39:21 2008 +0100 [S390] Remove initial kernel stack backchain initialization. Early init code clears the backchain of the initial kernel stack frame. This is not necessary since it is pre initialized with zeros. Plus it was broken on 64 bit since it cleared only four of eight bytes. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 64253acbf189085fb0ceb9a3fbe43b40f4a0a932 Author: Harvey Harrison Date: Thu Dec 25 13:39:20 2008 +0100 [S390] s390: use the new byteorder headers Signed-off-by: Harvey Harrison Signed-off-by: Andrew Morton Signed-off-by: Martin Schwidefsky commit e37f50e1811d68170e4d58a087cf634b2bf1cef9 Author: Martin Schwidefsky Date: Thu Dec 25 13:39:19 2008 +0100 [S390] Add processor type march=z10 and a processor type safety check. This patch adds the code generation option for IBM System z10 and adds a check in head[31,64].S to prevents the execution of a kernel compiled for a new processor type on an old machine. Signed-off-by: Martin Schwidefsky commit b3b59d3339c907b1dec3ce19f62b2a7f120d142d Author: Heiko Carstens Date: Thu Dec 25 13:39:18 2008 +0100 [S390] sclp vt220: fix compile warning get rid of this one: CC drivers/s390/char/sclp_vt220.o drivers/s390/char/sclp_vt220.c:588: warning: '__sclp_vt220_flush_buffer' defined but not used Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 2d6cd2a5908adecd06c8cee2a73814463ed71493 Author: Martin Schwidefsky Date: Thu Dec 25 13:39:17 2008 +0100 [S390] remove warnings with functions ending in BUG Functions which end in a BUG() statement and skip the return statement cause compile warnings on s390, e.g.: mm/bootmem.c: In function 'mark_bootmem': mm/bootmem.c:321: warning: control reaches end of non-void function To avoid the warning add an endless loop to the BUG() macro. Signed-off-by: Martin Schwidefsky Signed-off-by: Martin Schwidefsky commit edd5378740fe7717b1377ee04e593cfad8d29650 Author: Heiko Carstens Date: Thu Dec 25 13:39:16 2008 +0100 [S390] mark disabled_wait as noreturn function disabled_wait() won't return, so add an __attribute__((noreturn)). This will remove a false positive finding which our internal code checker reports. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit d36f0c66389eb5e4dbd9b095eea252230ba3273e Author: Sebastian Ott Date: Thu Dec 25 13:39:15 2008 +0100 [S390] cio: use pim to check for multipath. To check if multipath is available we count the bits set in lpm, which could change over time (via configure [on|off] of a path). The following patch uses the pim (which is persistent) for this decision. Signed-off-by: Sebastian Ott Signed-off-by: Martin Schwidefsky commit f444cc0e52523560a8dfc12f5374e5d5ecf5375b Author: Sebastian Ott Date: Thu Dec 25 13:39:14 2008 +0100 [S390] cio: commit all pmcw changes. Sometimes we change the pmcw configuration but don't call msch to transmit these changes to the channel subsystem. The patch fixes this by calling cio_commit_config in such cases. Signed-off-by: Sebastian Ott Signed-off-by: Martin Schwidefsky commit 13952ec12dfeea793ff83c2a96139ed57eb0b897 Author: Sebastian Ott Date: Thu Dec 25 13:39:13 2008 +0100 [S390] cio: introduce cio_commit_config To change the configuration of a subchannel we alter the modifiable bits of the subchannel's schib field and issue a modify subchannel. There can be the case that not all changes were applied -or worse- quietly overwritten by the hardware. With the next store subchannel we obtain the current state of the hardware but lose our target configuration. With this patch we introduce a subchannel_config structure which contains the target subchannel configuration. Additionally the msch wrapper cio_modify is replaced with cio_commit_config which copies the desired changes to a temporary schib. msch is then called with the temporary schib. This schib is only written back to the subchannel if all changes were applied. Signed-off-by: Sebastian Ott Signed-off-by: Martin Schwidefsky commit cdb912a40df8b8507ab60b3d52f9980c0ba1f44d Author: Sebastian Ott Date: Thu Dec 25 13:39:12 2008 +0100 [S390] cio: introduce cio_update_schib There is the chance that we get condition code 0 for a stsch but the resulting schib is not vaild. In the current code there are 2 cases: * we do a check for validity of the schib after stsch, but at this time we have already stored the invaild schib in the subchannel structure. This may lead to problems. * we don't do a check for validity, which is not that good either. The patch addresses both issues by introducing the stsch wrapper cio_update_schib which performs stsch on a local schib. This schib is only written back to the subchannel if it's valid. side note: For some functions (chp_events) the return codes are different now (-ENXIO vs -ENODEV) but this shouldn't do harm since the caller doesn't check for _specific_ errors. Signed-off-by: Sebastian Ott Signed-off-by: Martin Schwidefsky commit d6a30761d8116b8de8a5b5e79e68cce81d36414b Author: Cornelia Huck Date: Thu Dec 25 13:39:11 2008 +0100 [S390] cio: Use device_is_registered(). Check if a ccw device is registered via device_is_registered() and not via the old kludge of checking the membership in driver core internal klists. Signed-off-by: Cornelia Huck Signed-off-by: Martin Schwidefsky commit 283fdd0b8ab102080dbffe4bcaae245f9ceda184 Author: Cornelia Huck Date: Thu Dec 25 13:39:10 2008 +0100 [S390] cio: Dont call ->release directly. Just put the cdev's reference count to give up our reference. Signed-off-by: Cornelia Huck Signed-off-by: Martin Schwidefsky commit 90ed2b692fa75272d7395c4e4c2de4423d52f506 Author: Cornelia Huck Date: Thu Dec 25 13:39:09 2008 +0100 [S390] cio: Dont fail probe for I/O subchannels. If we fail the probe for an I/O subchannel, we won't be able to unregister it again since there are no sch_event() callbacks for unbound subchannels. Just succeed the probe in any case and schedule unregistering the subchannel. Signed-off-by: Cornelia Huck Signed-off-by: Martin Schwidefsky commit 5fb6b8544d9ccd2ed478af777f9e99e342eb8886 Author: Cornelia Huck Date: Thu Dec 25 13:39:08 2008 +0100 [S390] cio: Only register ccw_device for registered subchannel. There is a race between io_subchannel_register() and io_subchannel_sch_event() which may cause a subchannel to be unregistered because it is no longer operational before io_subchannel_register() had run. We need to check whether the subchannel is still registered before the ccw device can be registered and just bail out if it is not. Signed-off-by: Cornelia Huck Signed-off-by: Martin Schwidefsky commit 6eff208f479d6fe99fd92c0e6bf7e930bb45cd30 Author: Cornelia Huck Date: Thu Dec 25 13:39:07 2008 +0100 [S390] cio: Fix I/O subchannel refcounting. Subchannel refcounting was incorrect in some places, especially a refcount was missing when ccw_device_call_sch_unregister() was called and the refcount was not correctly switched after moving devices. Fix this by establishing the following rules: - The ccw_device obtains a reference on its parent subchannel when dev.parent is set and gives it up in its release function. This is needed because we need a parent reference for correct refcounting even before the ccw device is (if at all) registered. - When calling device_move(), obtain a reference on the new subchannel before moving the ccw device and give up the reference on the old parent after moving. This brings the refcount in line with the first rule. Signed-off-by: Cornelia Huck Signed-off-by: Martin Schwidefsky commit 9cd67421977a701272820987ff9e6f197b1b97b7 Author: Cornelia Huck Date: Thu Dec 25 13:39:06 2008 +0100 [S390] cio: Fix reference counting for online/offline. The current code attempts to get an extra reference count for online devices by doing a get_device() in ccw_device_online() and a put_device() in ccw_device_done(). However, this - incorrectly obtains an extra reference for disconnected devices becoming available again (since they are already online) - needs special checks for css_init_done in order to handle the console device - is not obvious and - may incorretly drop a reference count in ccw_device_done() if that function is called after path verification for a device that just became not operational. So let's just get the reference in ccw_device_set_online() and drop it in ccw_device_set_offline(). (Unfortunately, we still need the special case in io_subchannel_probe().) Signed-off-by: Cornelia Huck Signed-off-by: Martin Schwidefsky commit 97166f52fc84c0bc49c7dbba2a26720110acb458 Author: Cornelia Huck Date: Thu Dec 25 13:39:05 2008 +0100 [S390] cio: Put referernce on correct device after moving. Signed-off-by: Cornelia Huck Signed-off-by: Martin Schwidefsky commit c619d4223eaa063dd15ce44235b04487235f8cb7 Author: Peter Oberparleiter Date: Thu Dec 25 13:39:04 2008 +0100 [S390] cio: fix ccwgroup online vs. ungroup race condition Ensure atomicity of ungroup operation to prevent concurrent ungroup and online processing which may lead to use-after-release situations. Signed-off-by: Peter Oberparleiter Signed-off-by: Martin Schwidefsky commit 111e95a4cae01d6dadbbd1d8ab28dcd10fa5619c Author: Sebastian Ott Date: Thu Dec 25 13:39:03 2008 +0100 [S390] cio: move irritating comment. Due to former patches a comment and device id initialization were split from the addressed function call in io_subchannel_probe. Move it back to where it belongs. Signed-off-by: Sebastian Ott Signed-off-by: Martin Schwidefsky commit d7b604891b7ce7de93e3758ec6b3b7b7964e1884 Author: Peter Oberparleiter Date: Thu Dec 25 13:39:02 2008 +0100 [S390] cio: update sac values Values for the sac field have changed - update code accordingly. Signed-off-by: Peter Oberparleiter Signed-off-by: Martin Schwidefsky commit 191fd44c11e10daf9d2cabd16935952e9c735949 Author: Heiko Carstens Date: Thu Dec 25 13:39:01 2008 +0100 [S390] cio: get rid of compile warning Move cio_tpi() to the rest of the CONFIG_CCW_CONSOLE functions to get rid of this one: drivers/s390/cio/cio.c:115: warning: 'cio_tpi' defined but not used Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 547e3cec4f7a4846707db19cba43aa58eb07f48f Author: Martin Schwidefsky Date: Thu Dec 25 13:39:00 2008 +0100 [S390] remove ptrace warning on 31 bit. A kernel compile on 31 bit gives the following warnings in ptrace.c: arch/s390/kernel/ptrace.c: In function 'peek_user': arch/s390/kernel/ptrace.c:207: warning: unused variable 'dummy' arch/s390/kernel/ptrace.c: In function 'poke_user': arch/s390/kernel/ptrace.c:315: warning: unused variable 'dummy' Getting rid of the dummy variables removes the warnings. Signed-off-by: Martin Schwidefsky commit 32272a26974d2027384fd4010cd1780fca425d94 Author: Martin Schwidefsky Date: Thu Dec 25 13:38:59 2008 +0100 [S390] __page_to_pfn warnings For CONFIG_SPARSEMEM_VMEMMAP=y on s390 I get warnings like init/main.c: In function 'start_kernel': init/main.c:641: warning: format '%08lx' expects type 'long unsigned int', but argument 2 has type 'int' The warning can be suppressed with a cast to unsigned long in the CONFIG_SPARSEMEM_VMEMMAP=y version of __page_to_pfn. Signed-off-by: Martin Schwidefsky commit 91d5d45ee0a8978870fd12e5c3fe394a530ec2ed Author: Hendrik Brueckner Date: Thu Dec 25 13:38:58 2008 +0100 [S390] iucv: Locking free version of iucv_message_(receive|send) Provide a locking free version of iucv_message_receive and iucv_message_send that do not call local_bh_enable in a spin_lock_(bh|irqsave)() context. Signed-off-by: Hendrik Brueckner commit 44a01d5ba8a4d543694461cd3e178cfa6b3f221b Author: Hendrik Brueckner Date: Thu Dec 25 13:38:57 2008 +0100 [S390] s390/hvc_console: z/VM IUCV hypervisor console support This patch introduces a new hypervisor console (HVC) back-end that provides terminal access over the z/VM inter-user communication vehicle (IUCV). The z/VM IUCV communication is independent of the regular tcp/ip network and allows access even if there is no network connection between two z/VM guest virtual machines. The z/VM IUCV hypervisor console back-end helps the user to access a z/VM guest virtual machine that lacks of network connectivity; and thus, provides a "full-screen" terminal alternative to 3215/3270 terminal sessions. Use the hvc_iucv=[0..8] kernel boot parameter to specify the number of HVC terminals using a z/VM IUCV back-end. A recent version of the s390-tools package is required to establish a terminal connection to a z/VM IUCV hypervisor console back-end. Signed-off-by: Hendrik Brueckner Signed-off-by: Martin Schwidefsky commit 5d360a75f87f288e9a25d56cca503a7c7939e490 Author: Heiko Carstens Date: Thu Dec 25 13:38:56 2008 +0100 [S390] ftrace: function tracer backend for s390 This implements just the basic function tracer (_mcount) backend for s390. The dynamic variant will come later. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 98df67b324a2a986987ce29986e44ae9156b6698 Author: Kay Sievers Date: Thu Dec 25 13:38:55 2008 +0100 [S390] struct device - replace bus_id with dev_name(), dev_set_name() Acked-by: Cornelia Huck Acked-by: Greg Kroah-Hartman Signed-off-by: Kay Sievers Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 0cd4bd4754d51bdc8f9cd880c29910d0d52337bb Author: Stefan Haberland Date: Thu Dec 25 13:38:54 2008 +0100 [S390] dasd: call cleanup_cqr with request_queue_lock __dasd_cleanup_cqr should be called with request_queue_lock held and __dasd_block_process_erp with queue_lock Signed-off-by: Stefan Haberland Signed-off-by: Martin Schwidefsky commit 50afd20f8c3ce23994a21c389e7250e54a93bf55 Author: Stefan Haberland Date: Thu Dec 25 13:38:53 2008 +0100 [S390] dasd: correct sense byte condition for SIM SIM sense data are always 32 bit sense data so sense byte 27 bit 0 has not to be set. Signed-off-by: Stefan Haberland Signed-off-by: Martin Schwidefsky commit faf16aa9b368d48a0efbd0920718d68ec7a72542 Author: Cornelia Huck Date: Thu Dec 25 13:38:52 2008 +0100 [S390] dasd: Use accessors instead of using driver_data directly. Signed-off-by: Cornelia Huck Signed-off-by: Martin Schwidefsky commit 2bf373b3e3691d5cb57089a3897316a1b7d5ffa7 Author: Stefan Haberland Date: Thu Dec 25 13:38:51 2008 +0100 [S390] dasd: improve dasd statistics proc interface For a large number of I/O requests the values were shifted binary. The shift was not transparent for the user because the shift value was not displayed. To make this interface more human readable the values are shifted decimal and the scale factor is displayed. Signed-off-by: Stefan Haberland Signed-off-by: Martin Schwidefsky commit bd43a42b7e9880f426ed715f18bb4f963b7352af Author: Christof Schmitt Date: Thu Dec 25 13:38:50 2008 +0100 [S390] zfcp: Report microcode level through service level interface Register zfcp with the new /proc/service_level interface to report the FCP microcode level. When the adapter goes offline or a channel path disappears, zfcp unregisters, since the microcode version might change and zfcp does not know about it. Signed-off-by: Christof Schmitt Signed-off-by: Martin Schwidefsky commit 6bcac508fbebdca52f5a55d69a4316997ecb5391 Author: Martin Schwidefsky Date: Thu Dec 25 13:38:49 2008 +0100 [S390] service level interface. Add a new proc interface /proc/service_levels that allows any code to report a relevant service level, e.g. the microcode level of devices, the service level of the hypervisor, etc. Signed-off-by: Martin Schwidefsky commit 7a0b4cbc7d7d99763511b488b08bbc2607ddd1e3 Author: Jan Glauber Date: Thu Dec 25 13:38:48 2008 +0100 [S390] qdio: fix error reporting for hipersockets Hipersocket connections can encounter temporary busy conditions. In case of the busy bit set we retry the SIGA operation immediatelly. If the busy condition still persists after 100 ms we fail and report the error to the upper layer. The second stage retry logic is removed. In case of ongoing busy conditions the upper layer needs to reset the connection. The reporting of a SIGA error is now done synchronously to allow the network driver to requeue the buffers. Also no error trace is created for the temporary SIGA errors so the error message view is not flooded. Signed-off-by: Jan Glauber Signed-off-by: Martin Schwidefsky commit 50f769df1c4bea766c4eb927eae35728fb93e305 Author: Jan Glauber Date: Thu Dec 25 13:38:47 2008 +0100 [S390] qdio: improve inbound buffer acknowledgement - Use automatic acknowledgement of incoming buffers in QEBSM mode - Move ACK for non-QEBSM mode always to the newest buffer to prevent a race with qdio_stop_polling - Remove the polling spinlock, the upper layer drivers return new buffers in the same code path and could not run in parallel - Don't flood the error log in case of no-target-buffer-empty - In handle_inbound we check if we would overwrite an ACK'ed buffer, if so advance the pointer to the oldest ACK'ed buffer so we don't overwrite an empty buffer in qdio_stop_polling Signed-off-by: Jan Glauber Signed-off-by: Martin Schwidefsky commit 22f9934767f49012ffbae753b28b8055bd28348f Author: Jan Glauber Date: Thu Dec 25 13:38:46 2008 +0100 [S390] qdio: rework debug feature logging - make qdio_trace a per device view - remove s390dbf exceptions - remove CONFIG_QDIO_DEBUG, not needed anymore if we check for the level before calling sprintf - use snprintf for dbf entries - add start markers to see if the dbf view wrapped - add a global error view for all queues Signed-off-by: Jan Glauber Signed-off-by: Martin Schwidefsky commit 9a1ce28aeb7a8b1666eaa9f104c1a2f5a149f9df Author: Jan Glauber Date: Thu Dec 25 13:38:45 2008 +0100 [S390] qdio: fix compile warning under 31 bit The QEBSM instructions are only available for CONFIG_64BIT, they are not used under 31 bit. Make compiler happy about the false positive: drivers/s390/cio/qdio_main.c: In function ?qdio_inbound_q_done?: drivers/s390/cio/qdio_main.c:532: warning: ?state? may be used uninitialized in this function Signed-off-by: Jan Glauber Signed-off-by: Martin Schwidefsky commit 23589d057ac2da81e456d4a9dcdd9135fd96f493 Author: Jan Glauber Date: Thu Dec 25 13:38:44 2008 +0100 [S390] qdio: add eqbs/sqbs instruction counters Add counters for the eqbs and sqbs instructions that indicate how often we issued the instructions and how often the instructions returned with less buffers than specified. Signed-off-by: Jan Glauber Signed-off-by: Martin Schwidefsky commit bbd50e172f75b1d12ef9b1bcf593b51a44199016 Author: Jan Glauber Date: Thu Dec 25 13:38:43 2008 +0100 [S390] qdio: fix qeth port count detection qeth needs to get the port count information before qdio has allocated a page for the chsc operation. Extend qdio_get_ssqd_desc() to store the data in the specified structure. Signed-off-by: Jan Glauber Signed-off-by: Martin Schwidefsky commit 43c207e6e5b7e591b59294ee4fc9860b0e3de3b8 Author: Christian Maaser Date: Thu Dec 25 13:38:42 2008 +0100 [S390] ap: Minor code beautification. Changed some symbol names for a better and clearer code. Signed-off-by: Christian Maaser Signed-off-by: Felix Beck Signed-off-by: Martin Schwidefsky commit cb17a6364a29b4dfe5bbb00696032fb63d780157 Author: Felix Beck Date: Thu Dec 25 13:38:41 2008 +0100 [S390] zcrypt: Use of Thin Interrupts When the machine supports AP adapter interrupts polling will be switched off at module initialization and the driver will work in interrupt mode. Signed-off-by: Felix Beck Signed-off-by: Martin Schwidefsky commit 320c04c068c62b71fe9ea55e06e4968b4edc9e48 Author: Heiko Carstens Date: Thu Dec 25 13:38:40 2008 +0100 [S390] Move stfle to header file. stfle will be needed by the ap_bus module to figure out wether the AP queue adapter interruption facility is installed. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit ca9fc75a68ee98812bb6d212405fea039421910b Author: Heiko Carstens Date: Thu Dec 25 13:38:39 2008 +0100 [S390] convert s390 to generic IPI infrastructure Since etr/stp don't need the old smp_call_function semantics anymore we can convert s390 to the generic IPI infrastructure. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 0b3016b781abeabc502042c942cbc611e31250c7 Author: Martin Schwidefsky Date: Thu Dec 25 13:38:38 2008 +0100 [S390] serialize stp/etr work The work function dispatched with schedule_work() can be run twice on different cpus because run_workqueue clears the WORK_STRUCT_PENDING bit and then executes the function. Another cpu can call schedule_work() again and run the work function a second time before the first call is completed. This patch serialized the etr and stp work function with a mutex. Signed-off-by: Martin Schwidefsky commit 750887dedc088d28198b170bcae83695247797d1 Author: Heiko Carstens Date: Thu Dec 25 13:38:37 2008 +0100 [S390] convert etr/stp to stop_machine interface This converts the etr and stp code to the new stop_machine interface which allows to synchronize all cpus without allocating any memory. This way we get rid of the only reason why we haven't converted s390 to the generic IPI interface yet. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit b020632e40c3ed5e8c0c066d022672907e8401cf Author: Martin Schwidefsky Date: Thu Dec 25 13:38:36 2008 +0100 [S390] introduce vdso on s390 Add a vdso to speed up gettimeofday and clock_getres/clock_gettime for CLOCK_REALTIME/CLOCK_MONOTONIC. Signed-off-by: Martin Schwidefsky commit fc5243d98ac2575ad14a974b3c097e9ba874c03d Author: Martin Schwidefsky Date: Thu Dec 25 13:38:35 2008 +0100 [S390] arch_setup_additional_pages arguments arch_setup_additional_pages currently gets two arguments, the binary format descripton and an indication if the process uses an executable stack or not. The second argument is not used by anybody, it could be removed without replacement. What actually does make sense is to pass an indication if the process uses the elf interpreter or not. The glibc code will not use anything from the vdso if the process does not use the dynamic linker, so for statically linked binaries the architecture backend can choose not to map the vdso. Acked-by: Ingo Molnar Signed-off-by: Martin Schwidefsky commit a114a9d69d1362546b9dda651028acb311ddb7af Author: Christian Borntraeger Date: Thu Dec 25 13:38:34 2008 +0100 [S390] vmcp: remove BKL The vmcp driver uses the session->mutex for concurrent access of the data structures. Therefore, the BKL in vmcp_open does not protect against any other function in the driver. The BLK in vmcp_open would protect concurrent access to the module init but all necessary steps ave finished before misc_register is called. We can safely remove the lock_kernel from vcmp. Signed-off-by: Christian Borntraeger Signed-off-by: Martin Schwidefsky commit f414f5f15376764d68a31dc568d9e814d3fcb58a Author: Heiko Carstens Date: Thu Dec 25 13:37:59 2008 +0100 [S390] cpu topology: dont destroy cpu sets on topology change Call rebuild_sched_domains instead of arch_reinit_sched_domains if cpu topology changes. This leaves cpu sets alone which otherwise would be destroyed. If and how it makes sense to define cpu sets on a virtualized architecture is another question. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 8f2961c39eacd5d450048d8a3e91675486f3a015 Author: Al Viro Date: Thu Dec 25 13:37:58 2008 +0100 [S390] audit: get s390 ret_from_fork in sync with other architectures On s390 we have ret_from_fork jump not to the "do all work we normally do on return from syscall" as on x86, ppc, etc., but to the "do all such work except audit". Historical reasons - the codepath triggered when we have AUDIT process flag set is separated from the normall one and they converge at sysc_return, which is the common part of post-syscall work. And does not include calling audit_syscall_exit() - that's done in the end of sysc_tracesys path, just before that path jumps to sysc_return. IOW, the child returning from fork()/clone()/vfork() doesn't call audit_syscall_exit() at all, so no matter what we do with its audit context, we are not going to see the audit entry. The fix is simple: have ret_from_fork go to the point just past the call of sys_.... in the 'we have AUDIT flag set' path. There we have (64bit variant; for 31bit the situation is the same): sysc_tracenogo: tm __TI_flags+7(%r9),(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT) jz sysc_return la %r2,SP_PTREGS(%r15) # load pt_regs larl %r14,sysc_return # return point is sysc_return jg do_syscall_trace_exit which is precisely what we need - check the flag, bugger off to sysc_return if not set, otherwise call do_syscall_trace_exit() and bugger off to sysc_return. r9 has just been properly set by ret_from_fork itself, so we are fine. Tested on s390x, seems to work fine. WARNING: it's been about 16 years since my last contact with 3X0 assembler[1], so additional review would be very welcome. I don't think I've managed to screw it up, but... [1] that *was* in another country and besides, the box is dead... Signed-off-by: Al Viro Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 5439050f9f1aa92381ab9beccbea6ddf0c687c2b Author: Heiko Carstens Date: Thu Dec 25 13:37:57 2008 +0100 [S390] cpu topology: fix cpu_core_map initialization Common code doesn't call arch_update_cpu_topology() anymore on cpu hotplug. But our architecture backend relied on that in order to update the cpu_core_map. For machines without cpu topology support this leads uninitialized cpu_core_maps for later on added cpus. To solve this just initialize the maps with cpu_possible_map, since that will be always valid for machines without topology support. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky commit 5250d329e38cdf7580faeb9c53c17d3588d7d19c Merge: a3eeeefbf1cd1d142c52238cc19c75d14c3bc8d5 468a15bb4cc61694495cc5ed7ffca29e87c79b69 67be403d897f818b1a5ecc201967b0ee6a0332f9 98db8df777438e16ad0f44a0fba05ebbdb73db8d 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 Author: Ingo Molnar Date: Thu Dec 25 13:11:00 2008 +0100 Merge branches 'tracing/ftrace', 'tracing/hw-branch-tracing' and 'tracing/ring-buffer'; commit 'v2.6.28' into tracing/core commit 468a15bb4cc61694495cc5ed7ffca29e87c79b69 Author: Peter Zijlstra Date: Tue Dec 16 08:07:03 2008 +0100 sched, trace: update trace_sched_wakeup() Impact: extend the wakeup tracepoint with the info whether the wakeup was real Add the information needed to distinguish 'real' wakeups from 'false' wakeups. Signed-off-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit a3eeeefbf1cd1d142c52238cc19c75d14c3bc8d5 Merge: 30cd324e9787ccc9a5ede59742d5409857550692 7e3cbc3f774f31ecd88a51edae3d9377f60a4c00 Author: Ingo Molnar Date: Thu Dec 25 12:48:18 2008 +0100 Merge branch 'x86/tsc' into tracing/core Merge it to resolve this incidental conflict between the BTS fixes/cleanups and changes in x86/tsc: Conflicts: arch/x86/kernel/cpu/intel.c commit 79a66b96c339626a3e4b226fefc0e45244cfe6ff Merge: bed4f13065b520e564adffbfcd1c1a764a9c887e c1c15b65ec30275575dac9322aae607075769fbc 1fcccb008be12ea823aaa392758e1e41fb82de9a 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 Author: Ingo Molnar Date: Thu Dec 25 11:50:41 2008 +0100 Merge branches 'x86/pat2' and 'x86/fpu'; commit 'v2.6.28' into x86/core commit 1fcccb008be12ea823aaa392758e1e41fb82de9a Author: Jaswinder Singh Date: Tue Dec 23 21:50:11 2008 +0530 x86: traps.c replace #if CONFIG_X86_32 with #ifdef CONFIG_X86_32 Impact: cleanup, avoid warning on X86_64 Fixes this warning on X86_64: CC arch/x86/kernel/traps.o arch/x86/kernel/traps.c:695:5: warning: "CONFIG_X86_32" is not defined Signed-off-by: Jaswinder Singh Signed-off-by: Ingo Molnar commit 5ce442fe2c9423ec5451222aee6f9b2127bb8311 Merge: 60cda2b53a7826d273198f668cd124f0eeda0e4a 2af752936b311a846622668f8b0f1893d8eccade Author: Takashi Iwai Date: Thu Dec 25 11:40:34 2008 +0100 Merge branch 'topic/udev-id-rename' into to-push commit 60cda2b53a7826d273198f668cd124f0eeda0e4a Merge: 9649745c8670eacc671e9cff72c5c1e346e13036 3d1ee379bd576c0830050c2d313e77b9f98a8013 Author: Takashi Iwai Date: Thu Dec 25 11:40:33 2008 +0100 Merge branch 'topic/sound-core-fix' into to-push commit 9649745c8670eacc671e9cff72c5c1e346e13036 Merge: a9c3c7e04b9a744eafb2e87c770e7300bbffa375 5e03c54eeb016cf1b066e9e48d30116814ca2459 Author: Takashi Iwai Date: Thu Dec 25 11:40:32 2008 +0100 Merge branch 'topic/snd-hrtimer' into to-push commit a9c3c7e04b9a744eafb2e87c770e7300bbffa375 Merge: cc4910850f93a8bb1cbafad038fd40f6da68c783 ade9b2fb9bf8114f77eefc70b9042417e62acf72 Author: Takashi Iwai Date: Thu Dec 25 11:40:31 2008 +0100 Merge branch 'topic/pcxhr-update' into to-push commit cc4910850f93a8bb1cbafad038fd40f6da68c783 Merge: a8022697811c3f2271df5ec14fa6f518b731b46a de04b102bfc9a13e96f0892305b394077ffb6514 Author: Takashi Iwai Date: Thu Dec 25 11:40:30 2008 +0100 Merge branch 'topic/oxygen' into to-push commit a8022697811c3f2271df5ec14fa6f518b731b46a Merge: a65056205cdf7efb96fb2558e4f1ec6bae2582ed cdc693643271b2e6a693cf8f6afb258cce01f058 Author: Takashi Iwai Date: Thu Dec 25 11:40:29 2008 +0100 Merge branch 'topic/jack-mechanical' into to-push commit a65056205cdf7efb96fb2558e4f1ec6bae2582ed Merge: 313769d9edb1bbd59d2e94f5069950eecfe6fa44 7645c4bfbb36f357f03815f5729c46ce8d89f008 Author: Takashi Iwai Date: Thu Dec 25 11:40:28 2008 +0100 Merge branch 'topic/hda' into to-push commit 313769d9edb1bbd59d2e94f5069950eecfe6fa44 Merge: 8afabfa74bbe81ac496e66f7f0ed8943dff5fdb5 f144b7f6679d9833bd3b94b91e452592b6d0e502 Author: Takashi Iwai Date: Thu Dec 25 11:40:28 2008 +0100 Merge branch 'topic/cs5535audio' into to-push commit 8afabfa74bbe81ac496e66f7f0ed8943dff5fdb5 Merge: 86b3aa390b4b9925f16a21b98441fd7abdb9fff2 1f04128a3db7c0f0e8b5d25323eba70ac342f47f Author: Takashi Iwai Date: Thu Dec 25 11:40:27 2008 +0100 Merge branch 'topic/convert-tasklet' into to-push commit 86b3aa390b4b9925f16a21b98441fd7abdb9fff2 Merge: e4456e71618ec2c98084c15824d93e997955b60c ebef7cfc81942686a994ca6239b195040f5d1e4d Author: Takashi Iwai Date: Thu Dec 25 11:40:26 2008 +0100 Merge branch 'topic/ca0106' into to-push commit e4456e71618ec2c98084c15824d93e997955b60c Merge: 5c8261e44eaebbc91f9fc1bbd3f3167e91a50a57 16950e09cf07b54abb78dd09f8ef3c85c6bdc9de Author: Takashi Iwai Date: Thu Dec 25 11:40:26 2008 +0100 Merge branch 'topic/audigy-capture-boost' into to-push commit 5c8261e44eaebbc91f9fc1bbd3f3167e91a50a57 Merge: facef8685b3ff95c01c33d9d836401d0dd26211d 472346da9cc4231bec03ff2032e0d5fd4037232c Author: Takashi Iwai Date: Thu Dec 25 11:40:25 2008 +0100 Merge branch 'topic/asoc' into to-push commit facef8685b3ff95c01c33d9d836401d0dd26211d Merge: 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 888dcb7cb26fb85dfe3486d28a2431d69d3e8148 Author: Takashi Iwai Date: Thu Dec 25 11:40:24 2008 +0100 Merge branch 'topic/aoa' into to-push commit 0ca59dd948a51c95d5a366d35f897bc5ef9df55d Author: Frederic Weisbecker Date: Wed Dec 24 23:30:02 2008 +0100 tracing/ftrace: don't trace on early stage of a secondary cpu boot, v3 Impact: fix a crash/hard-reboot on certain configs while enabling cpu runtime On some archs, the boot of a secondary cpu can have an early fragile state. On x86-64, the pda is not initialized on the first stage of a cpu boot but it is needed to get the cpu number and the current task pointer. This data is needed during tracing. As they were dereferenced at this stage, we got a crash while tracing a cpu being enabled at runtime. Some other archs like ia64 can have such kind of issue too. Changes on v2: We dropped the previous solution of a per-arch called function to guess the current state of a cpu. That could slow down the tracing. This patch removes the -pg flag on arch/x86/kernel/cpu/common.c where the low level cpu boot functions exist, on start_secondary() and a helper function used at this stage. Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 2a0d8366dde9c66d8f481bee56828b661e5c8bf1 Merge: 1f5175adeaa1d161f603ef351785a19814dfe900 139cdab0a2af6f5eaee47cc0144608e53b65279d 3d0890985ac4dff781b7feba19fedda547314749 bba7ebba3b17f4fe8c5907a32e16d9bd3fcf5192 7798dbf40ad9d295aa3a02eca700168e4327239a e189062a8ca55b0a1843f0346c3fae1a47297c34 Author: Roland Dreier Date: Wed Dec 24 20:35:42 2008 -0800 Merge branches 'cma', 'ehca', 'ipath', 'iser', 'mlx4' and 'nes' into for-next commit 7798dbf40ad9d295aa3a02eca700168e4327239a Author: Jack Morgenstein Date: Wed Dec 24 20:32:42 2008 -0800 IB/mlx4: Set ownership bit correctly when copying CQEs during CQ resize When resizing a CQ, when copying over unpolled CQEs from the old CQE buffer to the new buffer, the ownership bit must be set appropriately for the new buffer, or the ownership bit in the new buffer gets corrupted. Signed-off-by: Jack Morgenstein Signed-off-by: Roland Dreier commit e189062a8ca55b0a1843f0346c3fae1a47297c34 Author: Faisal Latif Date: Wed Dec 24 20:30:04 2008 -0800 RDMA/nes: Remove tx_free_list There is no lock protecting tx_free_list thus causing a system crash when skb_dequeue() is called and the list is empty. Since it did not give any performance boost under heavy load, remove it to simplify the code. Replace get_free_pkt() with dev_alloc_skb() to allocate MAX_CM_BUFFER skb for connection establishment/teardown as well as MPA request/response. Signed-off-by: Faisal Latif Signed-off-by: Chien Tung Signed-off-by: Roland Dreier commit 81ea714bf148fce35e931edcbdfd3aedda20d1dc Author: Sergio Luis Date: Mon Dec 22 01:16:15 2008 -0300 smackfs: check for allocation failures in smk_set_access() smackfs: check for allocation failures in smk_set_access() While adding a new subject/object pair to smack_list, smk_set_access() didn't check the return of kzalloc(). This patch changes smk_set_access() to return 0 or -ENOMEM, based on kzalloc()'s return. It also updates its caller, smk_write_load(), to check for smk_set_access()'s return, given it is no longer a void return function. Signed-off-by: Sergio Luis To: Casey Schaufler Cc: Ahmed S. Darwish Cc: LSM Cc: LKLM Acked-by: Casey Schaufler commit cbacc2c7f066a1e01b33b0e27ae5efbf534bc2db Merge: 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 74192246910ff4fb95309ba1a683215644beeb62 Author: James Morris Date: Thu Dec 25 11:40:09 2008 +1100 Merge branch 'next' into for-linus commit 0ee4a96902dd7858e65f378c86f428a0355bd841 Author: Herbert Xu Date: Thu Dec 25 11:05:13 2008 +1100 crypto: aes - Precompute tables The tables used by the various AES algorithms are currently computed at run-time. This has created an init ordering problem because some AES algorithms may be registered before the tables have been initialised. This patch gets around this whole thing by precomputing the tables. Signed-off-by: Herbert Xu commit ca38a814c6f86db0aa58884a31093d4f096e20aa Author: Lee Nipper Date: Sat Dec 20 17:09:25 2008 +1100 crypto: talitos - Ack done interrupt in isr instead of tasklet Previous commit for interrupt mitigation moved the done interrupt acknowlegement from the isr to the talitos_done tasklet. This patch moves the done interrupt acknowledgement back into the isr so that done interrupts will always be acknowledged. This covers the case for acknowledging interrupts for channel done processing that has actually already been completed by the tasklet prior to fielding a pending interrupt. Signed-off-by: Lee Nipper Signed-off-by: Kim Phillips Signed-off-by: Herbert Xu commit bcf84a38f05c55180bc1225901950c7e715c0d55 Author: Geert Uytterhoeven Date: Thu Dec 18 17:17:46 2008 +1100 crypto: testmgr - Correct comment about deflate parameters The comment for the deflate test vectors says the winbits parameter is 11, while the deflate module actually uses -11 (a negative window bits parameter enables the raw deflate format instead of the zlib format). Correct this, to avoid confusion about the format used. Signed-off-by: Geert Uytterhoeven Signed-off-by: Herbert Xu commit f0d1ec3a227e01a27ce20719bf7b58de86d44f0f Author: Harvey Harrison Date: Wed Dec 17 16:53:49 2008 +1100 crypto: salsa20 - Remove private wrappers around various operations ROTATE -> rol32 XOR was always used with the same destination, use ^= PLUS/PLUSONE use ++ or += Signed-off-by: Harvey Harrison Signed-off-by: Herbert Xu commit ad79cdd77fc1466e45cf923890f66bcfe7c43f12 Author: Jarod Wilson Date: Wed Dec 17 16:51:13 2008 +1100 crypto: des3_ede - permit weak keys unless REQ_WEAK_KEY set While its a slightly insane to bypass the key1 == key2 || key2 == key3 check in triple-des, since it reduces it to the same strength as des, some folks do need to do this from time to time for backwards compatibility with des. My own case is FIPS CAVS test vectors. Many triple-des test vectors use a single key, replicated 3x. In order to get the expected results, des3_ede_setkey() needs to only reject weak keys if the CRYPTO_TFM_REQ_WEAK_KEY flag is set. Also sets a more appropriate RES flag when a weak key is found. Signed-off-by: Jarod Wilson Signed-off-by: Herbert Xu commit bd9d20dba182ce4541b16b083eccd30fb252b9f4 Author: Adrian-Ken Rueegsegger Date: Wed Dec 17 16:49:02 2008 +1100 crypto: sha512 - Switch to shash This patch changes sha512 and sha384 to the new shash interface. Signed-off-by: Adrian-Ken Rueegsegger Signed-off-by: Herbert Xu commit f9e2bca6c22d75a289a349f869701214d63b5060 Author: Adrian-Ken Rueegsegger Date: Wed Dec 17 16:47:52 2008 +1100 crypto: sha512 - Move message schedule W[80] to static percpu area The message schedule W (u64[80]) is too big for the stack. In order for this algorithm to be used with shash it is moved to a static percpu area. Signed-off-by: Adrian-Ken Rueegsegger Signed-off-by: Herbert Xu commit 19e2bf146759aea38fd6c2daea08cb7a6367149b Author: Adrian-Ken Rueegsegger Date: Sun Dec 7 19:35:38 2008 +0800 crypto: michael_mic - Switch to shash This patch changes michael_mic to the new shash interface. Signed-off-by: Adrian-Ken Rueegsegger Signed-off-by: Herbert Xu commit 4946510baac6aaa8658528e3deefc7e9ba2951a9 Author: Adrian-Ken Rueegsegger Date: Sun Dec 7 19:34:37 2008 +0800 crypto: wp512 - Switch to shash This patch changes wp512, wp384 and wp256 to the new shash interface. Signed-off-by: Adrian-Ken Rueegsegger Signed-off-by: Herbert Xu commit f63fbd3d501b4283e1551e195cb74434a838064f Author: Adrian-Ken Rueegsegger Date: Wed Dec 3 19:58:32 2008 +0800 crypto: tgr192 - Switch to shash This patch changes tgr192, tgr160 and tgr128 to the new shash interface. Signed-off-by: Adrian-Ken Rueegsegger Signed-off-by: Herbert Xu commit 50e109b5b9c1f734e91a6e9b557bce48c9a88654 Author: Adrian-Ken Rueegsegger Date: Wed Dec 3 19:57:49 2008 +0800 crypto: sha256 - Switch to shash This patch changes sha256 and sha224 to the new shash interface. Signed-off-by: Adrian-Ken Rueegsegger Signed-off-by: Herbert Xu commit 14b75ba70da925a9f040a7575cb46ad7d394b117 Author: Adrian-Ken Rueegsegger Date: Wed Dec 3 19:57:12 2008 +0800 crypto: md5 - Switch to shash This patch changes md5 to the new shash interface. Signed-off-by: Adrian-Ken Rueegsegger Signed-off-by: Herbert Xu commit 808a1763cef93bf0f740d7e10dd9a2dfc4065b1a Author: Adrian-Ken Rueegsegger Date: Wed Dec 3 19:55:27 2008 +0800 crypto: md4 - Switch to shash This patch changes md4 to the new shash interface. Signed-off-by: Adrian-Ken Rueegsegger Signed-off-by: Herbert Xu commit 54ccb36776eb7e03b592bfab60393c7800851a0b Author: Adrian-Ken Rueegsegger Date: Tue Dec 2 21:08:20 2008 +0800 crypto: sha1 - Switch to shash This patch changes sha1 to the new shash interface. Signed-off-by: Adrian-Ken Rueegsegger Signed-off-by: Herbert Xu commit 3b8efb4c4147094652570d7791a516d07b7df8c2 Author: Herbert Xu Date: Sat Nov 8 10:11:09 2008 +0800 crypto: rmd320 - Switch to shash This patch changes rmd320 to the new shash interface. Signed-off-by: Herbert Xu commit d8a5e2e9f4e70ade136c67ce8242f0db4c2cddc7 Author: Herbert Xu Date: Sat Nov 8 09:58:10 2008 +0800 crypto: rmd256 - Switch to shash This patch changes rmd256 to the new shash interface. Signed-off-by: Herbert Xu commit e5835fba0206a331bdefdf5d805d1a384af37c44 Author: Herbert Xu Date: Sat Nov 8 09:18:51 2008 +0800 crypto: rmd160 - Switch to shash This patch changes rmd160 to the new shash interface. Signed-off-by: Herbert Xu commit 7c4468bc011131e77d0a872d6d9942390f8217ea Author: Herbert Xu Date: Sat Nov 8 09:10:40 2008 +0800 crypto: rmd128 - Switch to shash This patch changes rmd128 to the new shash interface. Signed-off-by: Herbert Xu commit d35d2454ce2175be77d2a366c2648597fd33a98f Author: Herbert Xu Date: Sat Nov 8 08:09:56 2008 +0800 crypto: null - Switch to shash This patch changes digest_null to the new shash interface. Signed-off-by: Herbert Xu commit 3751f402e099893c34089ed303dca6f5f92dbfd1 Author: Herbert Xu Date: Sat Nov 8 08:56:57 2008 +0800 crypto: hash - Make setkey optional Since most cryptographic hash algorithms have no keys, this patch makes the setkey function optional for ahash and shash. Signed-off-by: Herbert Xu commit b812eb0076235743872b5c9d18714d2324cc668d Author: Geert Uytterhoeven Date: Fri Nov 28 20:51:28 2008 +0800 crypto: testmgr - Validate output length in (de)compression tests When self-testing (de)compression algorithms, make sure the actual size of the (de)compressed output data matches the expected output size. Otherwise, in case the actual output size would be smaller than the expected output size, the subsequent buffer compare test would still succeed, and no error would be reported. Signed-off-by: Geert Uytterhoeven Signed-off-by: Herbert Xu commit dad3df2044b78ba68a92bf78e38a408bab80ff61 Author: Harvey Harrison Date: Fri Nov 28 20:49:19 2008 +0800 crypto: remove uses of __constant_{endian} helpers Base versions handle constant folding just fine. Signed-off-by: Harvey Harrison Signed-off-by: Herbert Xu commit 664134d2916109be76648977705a2bea3ff76427 Author: Ingo Molnar Date: Tue Nov 25 23:19:24 2008 +0800 crypto: testmgr - Fix error flow of test_comp This warning: crypto/testmgr.c: In function ‘test_comp’: crypto/testmgr.c:829: warning: ‘ret’ may be used uninitialized in this function triggers because GCC correctly notices that in the ctcount == 0 && dtcount != 0 input condition case this function can return an undefined value, if the second loop fails. Remove the shadowed 'ret' variable from the second loop that was probably unintended. Signed-off-by: Ingo Molnar Signed-off-by: Herbert Xu commit 5f459f0adc7581da01cdd9b7f84db14a4559a390 Author: Evgeniy Polyakov Date: Tue Nov 25 23:17:10 2008 +0800 crypto: hifn_795x - Use softirq kernel mapping in bh context Use KM_SOFTIRQ instead of KM_IRQ in tasklet context. Added bug_on on input no-page condition. Signed-off-by: Evgeniy Polyakov Signed-off-by: Herbert Xu commit d6a10c84a2a2b08bdd637852c9cc42c41e109b25 Author: Evgeniy Polyakov Date: Mon Nov 24 22:04:39 2008 +0800 crypto: hifn_795x - Fix queue management Fix queue management. Change ring size and perform its check not one after another descriptor, but using stored pointers to the last checked descriptors. Signed-off-by: Evgeniy Polyakov Signed-off-by: Herbert Xu commit 3ec858de6468e810953e41b8c154a0d605b25d68 Author: Patrick McHardy Date: Mon Nov 24 22:03:37 2008 +0800 crypto: hifn_795x - Remove some unused cruft Signed-off-by: Patrick McHardy Signed-off-by: Evgeniy Polyakov Signed-off-by: Herbert Xu commit ed4f92e3723a7d73bcd179ba09529094752063b2 Author: Patrick McHardy Date: Mon Nov 24 22:02:55 2008 +0800 crypto: hifn_795x - Fix queue processing Signed-off-by: Patrick McHardy Signed-off-by: Evgeniy Polyakov Signed-off-by: Herbert Xu commit 5df4c0c671bbb425e4a77dde5f51869aeebebd67 Author: Patrick McHardy Date: Mon Nov 24 22:01:42 2008 +0800 crypto: hifn_795x - Fix request context corruption HIFN uses the transform context to store per-request data, which breaks when more than one request is outstanding. Move per request members from struct hifn_context to a new struct hifn_request_context and convert the code to use this. Signed-off-by: Patrick McHardy Signed-off-by: Evgeniy Polyakov Signed-off-by: Herbert Xu commit 3416158680d5ba6fdb939e5bb52a8eba1ad5c027 Author: Patrick McHardy Date: Mon Nov 24 22:00:49 2008 +0800 crypto: hifn_795x - Don't copy src sg list Signed-off-by: Patrick McHardy Signed-off-by: Evgeniy Polyakov Signed-off-by: Herbert Xu commit 75741a034024f146ba5431602f3ad33a5df8363c Author: Patrick McHardy Date: Mon Nov 24 21:59:25 2008 +0800 crypto: hifn_795x - Fix DMA setup Signed-off-by: Patrick McHardy Signed-off-by: Evgeniy Polyakov Signed-off-by: Herbert Xu commit 09fbf7c0f24176ef3b450c590f220ed8033dd2c3 Author: Jarod Wilson Date: Mon Nov 24 21:20:13 2008 +0800 crypto: ansi_cprng - fix inverted DT increment routine The ANSI X9.31 PRNG docs aren't particularly clear on how to increment DT, but empirical testing shows we're incrementing from the wrong end. A 10,000 iteration Monte Carlo RNG test currently winds up not getting the expected result. From http://csrc.nist.gov/groups/STM/cavp/documents/rng/RNGVS.pdf : # CAVS 4.3 # ANSI931 MCT [X9.31] [AES 128-Key] COUNT = 0 Key = 9f5b51200bf334b5d82be8c37255c848 DT = 6376bbe52902ba3b67c925fa701f11ac V = 572c8e76872647977e74fbddc49501d1 R = 48e9bd0d06ee18fbe45790d5c3fc9b73 Currently, we get 0dd08496c4f7178bfa70a2161a79459a after 10000 loops. Inverting the DT increment routine results in us obtaining the expected result of 48e9bd0d06ee18fbe45790d5c3fc9b73. Verified on both x86_64 and ppc64. Signed-off-by: Jarod Wilson Acked-by: Neil Horman Signed-off-by: Herbert Xu commit 93027354d6e8a66a12dedb89d59b21cf7c2d35ed Author: Herbert Xu Date: Thu Nov 13 22:05:13 2008 +0800 libcrc32c: Select CRYPTO in Kconfig Selecting CRYPTO_CRC32C is not enough as CRYPTO which CRYPTO_CRC32C depends on may be disabled. This patch adds the select on CRYPTO. Signed-off-by: Herbert Xu commit aa1a85dbd1d3265ca36f684026fe7689b7836bed Author: Jarod Wilson Date: Thu Nov 13 22:03:20 2008 +0800 crypto: ansi_cprng - Avoid incorrect extra call to _get_more_prng_bytes While working with some FIPS RNGVS test vectors yesterday, I discovered a little bug in the way the ansi_cprng code works right now. For example, the following test vector (complete with expected result) from http://csrc.nist.gov/groups/STM/cavp/documents/rng/RNGVS.pdf ... Key = f3b1666d13607242ed061cabb8d46202 DT = e6b3be782a23fa62d71d4afbb0e922fc V = f0000000000000000000000000000000 R = 88dda456302423e5f69da57e7b95c73a ...when run through ansi_cprng, yields an incorrect R value of e2afe0d794120103d6e86a2b503bdfaa. If I load up ansi_cprng w/dbg=1 though, it was fairly obvious what was going wrong: ----8<---- getting 16 random bytes for context ffff810033fb2b10 Calling _get_more_prng_bytes for context ffff810033fb2b10 Input DT: 00000000: e6 b3 be 78 2a 23 fa 62 d7 1d 4a fb b0 e9 22 fc Input I: 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Input V: 00000000: f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 tmp stage 0: 00000000: e6 b3 be 78 2a 23 fa 62 d7 1d 4a fb b0 e9 22 fc tmp stage 1: 00000000: f4 8e cb 25 94 3e 8c 31 d6 14 cd 8a 23 f1 3f 84 tmp stage 2: 00000000: 8c 53 6f 73 a4 1a af d4 20 89 68 f4 58 64 f8 be Returning new block for context ffff810033fb2b10 Output DT: 00000000: e7 b3 be 78 2a 23 fa 62 d7 1d 4a fb b0 e9 22 fc Output I: 00000000: 04 8e cb 25 94 3e 8c 31 d6 14 cd 8a 23 f1 3f 84 Output V: 00000000: 48 89 3b 71 bc e4 00 b6 5e 21 ba 37 8a 0a d5 70 New Random Data: 00000000: 88 dd a4 56 30 24 23 e5 f6 9d a5 7e 7b 95 c7 3a Calling _get_more_prng_bytes for context ffff810033fb2b10 Input DT: 00000000: e7 b3 be 78 2a 23 fa 62 d7 1d 4a fb b0 e9 22 fc Input I: 00000000: 04 8e cb 25 94 3e 8c 31 d6 14 cd 8a 23 f1 3f 84 Input V: 00000000: 48 89 3b 71 bc e4 00 b6 5e 21 ba 37 8a 0a d5 70 tmp stage 0: 00000000: e7 b3 be 78 2a 23 fa 62 d7 1d 4a fb b0 e9 22 fc tmp stage 1: 00000000: 80 6b 3a 8c 23 ae 8f 53 be 71 4c 16 fc 13 b2 ea tmp stage 2: 00000000: 2a 4d e1 2a 0b 58 8e e6 36 b8 9c 0a 26 22 b8 30 Returning new block for context ffff810033fb2b10 Output DT: 00000000: e8 b3 be 78 2a 23 fa 62 d7 1d 4a fb b0 e9 22 fc Output I: 00000000: c8 e2 01 fd 9f 4a 8f e5 e0 50 f6 21 76 19 67 9a Output V: 00000000: ba 98 e3 75 c0 1b 81 8d 03 d6 f8 e2 0c c6 54 4b New Random Data: 00000000: e2 af e0 d7 94 12 01 03 d6 e8 6a 2b 50 3b df aa returning 16 from get_prng_bytes in context ffff810033fb2b10 ----8<---- The expected result is there, in the first "New Random Data", but we're incorrectly making a second call to _get_more_prng_bytes, due to some checks that are slightly off, which resulted in our original bytes never being returned anywhere. One approach to fixing this would be to alter some byte_count checks in get_prng_bytes, but it would mean the last DEFAULT_BLK_SZ bytes would be copied a byte at a time, rather than in a single memcpy, so a slightly more involved, equally functional, and ultimately more efficient way of fixing this was suggested to me by Neil, which I'm submitting here. All of the RNGVS ANSI X9.31 AES128 VST test vectors I've passed through ansi_cprng are now returning the expected results with this change. Signed-off-by: Jarod Wilson Acked-by: Neil Horman Signed-off-by: Herbert Xu commit 31a61bfc6e415fbd871317cbee7b8a4158d8ac5b Author: Julia Lawall Date: Thu Nov 13 21:19:04 2008 +0800 crypto: md4 - Use ARRAY_SIZE ARRAY_SIZE is more concise to use when the size of an array is divided by the size of its type or the size of its first element. The semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @i@ @@ #include @depends on i using "paren.iso"@ type T; T[] E; @@ - (sizeof(E)/sizeof(T)) + ARRAY_SIZE(E) // Signed-off-by: Julia Lawall Signed-off-by: Herbert Xu commit 0426c166424ea6d3d0412f47879c8ba268f874c4 Author: Herbert Xu Date: Tue Nov 11 12:20:06 2008 +0800 libcrc32c: Add crc32c_le macro The bnx2x driver actually uses the crc32c_le name so this patch restores the crc32c_le symbol through a macro. Signed-off-by: Herbert Xu commit 53b146ae598268edbe2bf7ea7dfec721d51adddd Author: Adrian-Ken Rueegsegger Date: Tue Nov 11 12:14:00 2008 +0800 libcrc32c: Fix "crc32c undefined" compilation error The latest shash changes leave crc32c undefined: [...] Building modules, stage 2. MODPOST 1381 modules ERROR: "crc32c" [net/sctp/sctp.ko] undefined! ERROR: "crc32c" [net/ipv4/netfilter/nf_nat_proto_sctp.ko] undefined! Adding EXPORT_SYMBOL(crc32c) to lib/libcrc32c.c fixes the compile error. This patch has been compile-tested only. Signed-off-by: Adrian-Ken Rueegsegger Signed-off-by: Herbert Xu commit 69c35efcf1576ab5f00cba83e8ca740923afb6c9 Author: Herbert Xu Date: Fri Nov 7 15:11:47 2008 +0800 libcrc32c: Move implementation to crypto crc32c This patch swaps the role of libcrc32c and crc32c. Previously the implementation was in libcrc32c and crc32c was a wrapper. Now the code is in crc32c and libcrc32c just calls the crypto layer. The reason for the change is to tap into the algorithm selection capability of the crypto API so that optimised implementations such as the one utilising Intel's CRC32C instruction can be used where available. Signed-off-by: Herbert Xu commit 8e3ee85e68c5d5c95451afd3e8f0997eec6f99e5 Author: Herbert Xu Date: Fri Nov 7 14:58:52 2008 +0800 crypto: crc32c - Test descriptor context format This patch adds a test for the requirement that all crc32c algorithms shall store the partial result in the first four bytes of the descriptor context. Signed-off-by: Herbert Xu commit b7e8bdadce6317eb13c13b9451d7114614aa1450 Author: Herbert Xu Date: Thu Nov 6 16:56:41 2008 +0800 crypto: crc32c-intel - Switch to shash This patch changes crc32c-intel to the new shash interface. Signed-off-by: Herbert Xu commit faccc4bba160784e834b758f23d598e500ac7108 Author: Herbert Xu Date: Tue Sep 9 17:23:07 2008 +1000 crypto: crc32c - Switch to shash This patch changes crc32c to the new shash interface. Signed-off-by: Herbert Xu commit 5f7082ed4f482f05db01d84dbf58190492ebf0ad Author: Herbert Xu Date: Sun Aug 31 22:21:09 2008 +1000 crypto: hash - Export shash through hash This patch allows shash algorithms to be used through the old hash interface. This is a transitional measure so we can convert the underlying algorithms to shash before converting the users across. Signed-off-by: Herbert Xu commit 67cd080c5070b4f17520c1385f7684206f4987b3 Author: Herbert Xu Date: Thu Nov 6 14:39:16 2008 +0800 crypto: api - Call type show function before legacy for proc This patch makes /proc/crypto call the type-specific show function if one is present before calling the legacy show functions for cipher/digest/compress. This allows us to reuse the type values for those legacy types. In particular, hash and digest will share one type value while shash is phased in as the default hash type. Signed-off-by: Herbert Xu commit dec8b78606ebd5f309c38f2fb10196ce996dd18d Author: Herbert Xu Date: Sun Nov 2 21:38:11 2008 +0800 crypto: hash - Add import/export interface It is often useful to save the partial state of a hash function so that it can be used as a base for two or more computations. The most prominent example is HMAC where all hashes start from a base determined by the key. Having an import/export interface means that we only have to compute that base once rather than for each message. Signed-off-by: Herbert Xu commit 3b2f6df08258e2875f42bd630eece7e7241a053b Author: Herbert Xu Date: Sun Aug 31 18:52:18 2008 +1000 crypto: hash - Export shash through ahash This patch allows shash algorithms to be used through the ahash interface. This is required before we can convert digest algorithms over to shash. Signed-off-by: Herbert Xu commit 7b5a080b3c46f0cac71c0d0262634c6517d4ee4f Author: Herbert Xu Date: Sun Aug 31 15:47:27 2008 +1000 crypto: hash - Add shash interface The shash interface replaces the current synchronous hash interface. It improves over hash in two ways. Firstly shash is reentrant, meaning that the same tfm may be used by two threads simultaneously as all hashing state is stored in a local descriptor. The other enhancement is that shash no longer takes scatter list entries. This is because shash is specifically designed for synchronous algorithms and as such scatter lists are unnecessary. All existing hash users will be converted to shash once the algorithms have been completely converted. There is also a new finup function that combines update with final. This will be extended to ahash once the algorithm conversion is done. This is also the first time that an algorithm type has their own registration function. Existing algorithm types will be converted to this way in due course. Signed-off-by: Herbert Xu commit 7b0bac64cd5b74d6f1147524c26216de13a501fd Author: Herbert Xu Date: Sun Sep 21 06:52:53 2008 +0900 crypto: api - Rebirth of crypto_alloc_tfm This patch reintroduces a completely revamped crypto_alloc_tfm. The biggest change is that we now take two crypto_type objects when allocating a tfm, a frontend and a backend. In fact this simply formalises what we've been doing behind the API's back. For example, as it stands crypto_alloc_ahash may use an actual ahash algorithm or a crypto_hash algorithm. Putting this in the API allows us to do this much more cleanly. The existing types will be converted across gradually. Signed-off-by: Herbert Xu commit 4a7794860ba2b56693b1d89fd485fd08cdc763e3 Author: Herbert Xu Date: Sat Sep 13 18:19:03 2008 -0700 crypto: api - Move type exit function into crypto_tfm The type exit function needs to undo any allocations done by the type init function. However, the type init function may differ depending on the upper-level type of the transform (e.g., a crypto_blkcipher instantiated as a crypto_ablkcipher). So we need to move the exit function out of the lower-level structure and into crypto_tfm itself. As it stands this is a no-op since nobody uses exit functions at all. However, all cases where a lower-level type is instantiated as a different upper-level type (such as blkcipher as ablkcipher) will be converted such that they allocate the underlying transform and use that instead of casting (e.g., crypto_ablkcipher casted into crypto_blkcipher). That will need to use a different exit function depending on the upper-level type. This patch also allows the type init/exit functions to call (or not) cra_init/cra_exit instead of always calling them from the top level. Signed-off-by: Herbert Xu commit 2566578a6feb9d9e39da41326afe8ed6022db3c5 Author: Neil Horman Date: Wed Nov 5 12:13:14 2008 +0800 crypto: ansi_cprng - Allow resetting of DT value This is a patch that was sent to me by Jarod Wilson, marking off my outstanding todo to allow the ansi cprng to set/reset the DT counter value in a cprng instance. Currently crytpo_rng_reset accepts a seed byte array which is interpreted by the ansi_cprng as a {V key} tuple. This patch extends that tuple to now be {V key DT}, with DT an optional value during reset. This patch also fixes a bug we noticed in which the offset of the key area of the seed is started at DEFAULT_PRNG_KSZ rather than DEFAULT_BLK_SZ as it should be. Signed-off-by: Neil Horman Signed-off-by: Jarod Wilson Signed-off-by: Herbert Xu commit 420a4b20c504e4674bf253601f793bdb254f99fa Author: Herbert Xu Date: Sun Aug 31 15:58:45 2008 +1000 crypto: padlock - Avoid resetting cword on successive operations Resetting the control word is quite expensive. Fortunately this isn't an issue for the common operations such as CBC and ECB as the whole operation is done through a single call. However, modes such as LRW and XTS have to call padlock over and over again for one operation which really hurts if each call resets the control word. This patch uses an idea by Sebastian Siewior to store the last control word used on a CPU and only reset the control word if that changes. Note that any task switch automatically resets the control word so we only need to be accurate with regard to the stored control word when no task switches occur. Signed-off-by: Herbert Xu commit 1c06da81a5d042d5fba67c4c533b16ae62a174ab Author: Kent Liu Date: Fri Oct 31 16:52:58 2008 +0800 crypto: crc32c-intel - Update copyright head The original copyright head for crc32c-intel.c is incorrect. Please merge the patch to update it. Signed-Off-By: Kent Liu Signed-off-by: Herbert Xu commit 4b24ea971a93f5d0bec34bf7bfd0939f70cfaae6 Author: Vishnu Suresh Date: Mon Oct 20 21:06:18 2008 +0800 crypto: talitos - Preempt overflow interrupts off-by-one fix In commit ec6644d6325b5a38525f1d5b20fd4bf7db05cf2a "crypto: talitos - Preempt overflow interrupts", the test in atomic_inc_not_zero was interpreted by the author to be applied after the increment operation (not before). This off-by-one fix prevents overflow error interrupts from occurring when requests are frequent and large enough to do so. Signed-off-by: Vishnu Suresh Signed-off-by: Kim Phillips Signed-off-by: Herbert Xu commit 32bd78e0a5d34cd8e34046502bddcf31aeb38e64 Author: Harvey Harrison Date: Sun Oct 12 20:40:12 2008 +0800 crypto: camellia - use kernel-provided bitops, unaligned access Remove the private implementation of 32-bit rotation and unaligned access with byteswapping. As a bonus, fixes sparse warnings: crypto/camellia.c:602:2: warning: cast to restricted __be32 crypto/camellia.c:603:2: warning: cast to restricted __be32 crypto/camellia.c:604:2: warning: cast to restricted __be32 crypto/camellia.c:605:2: warning: cast to restricted __be32 crypto/camellia.c:710:2: warning: cast to restricted __be32 crypto/camellia.c:711:2: warning: cast to restricted __be32 crypto/camellia.c:712:2: warning: cast to restricted __be32 crypto/camellia.c:713:2: warning: cast to restricted __be32 crypto/camellia.c:714:2: warning: cast to restricted __be32 crypto/camellia.c:715:2: warning: cast to restricted __be32 crypto/camellia.c:716:2: warning: cast to restricted __be32 crypto/camellia.c:717:2: warning: cast to restricted __be32 [Thanks to Tomoyuki Okazaki for spotting the typo] Tested-by: Carlo E. Prelz Signed-off-by: Harvey Harrison Signed-off-by: Herbert Xu commit d12d6b6d37cad766b390467e770eb0ab81345d78 Author: Neil Horman Date: Sun Oct 12 20:36:51 2008 +0800 crypto: testmgr - Trigger a panic when self test fails in FIPS mode The FIPS specification requires that should self test for any supported crypto algorithm fail during operation in fips mode, we need to prevent the use of any crypto functionality until such time as the system can be re-initialized. Seems like the best way to handle that would be to panic the system if we were in fips mode and failed a self test. This patch implements that functionality. I've built and run it successfully. Signed-off-by: Neil Horman Signed-off-by: Herbert Xu commit fe5720e2b7c1e8ff95d4bf18329517cf64ad1d70 Author: Kim Phillips Date: Sun Oct 12 20:33:14 2008 +0800 crypto: talitos - Perform auth check in h/w if on sec 2.1 and above SEC version 2.1 and above adds the capability to do the IPSec ICV memcmp in h/w. Results of the cmp are written back in the descriptor header, along with the done status. A new callback is added that checks these ICCR bits instead of performing the memcmp on the core, and is enabled by h/w capability. Signed-off-by: Kim Phillips After testing on different parts, another condition was added before using h/w auth check because different SEC revisions require different handling. The SEC 3.0 allows a more flexible link table where the auth data can span separate link table entries. The SEC 2.4/2.1 does not support this case. So a test was added in the decrypt routine for a fragmented case; the h/w auth check is disallowed for revisions not having the extent in the link table; in this case the hw auth check is done by software. A portion of a previous change for SEC 3.0 link table handling was removed since it became dead code with the hw auth check supported. This seems to be the best compromise for using hw auth check on supporting SEC revisions; it keeps the link table logic simpler for the fragmented cases. Signed-off-by: Lee Nipper Signed-off-by: Herbert Xu commit 1c2e8811eea5f0c5da3213ea206c2864fa4614fd Author: Lee Nipper Date: Sun Oct 12 20:29:34 2008 +0800 crypto: talitos - Implement done interrupt mitigation In talitos_interrupt, upon one done interrupt, mask further done interrupts, and ack only any error interrupt. In talitos_done, unmask done interrupts after completing processing. In flush_channel, ack each done channel processed. Keep done overflow interrupts masked because even though each pkt is ack'ed, a few done overflows still occur. Signed-off-by: Lee Nipper Signed-off-by: Kim Phillips Signed-off-by: Herbert Xu commit 40405f10b853ef404b395c6febca71b0de185490 Author: Kim Phillips Date: Sun Oct 12 20:19:35 2008 +0800 crypto: talitos - Pass correct interrupt status to error handler Since we ack early, the re-read interrupt status in talitos_error may be already updated with a new value. Pass the error ISR value directly in order to report and handle the error based on the correct error status. Also remove unused error tasklet. Signed-off-by: Kim Phillips Signed-off-by: Lee Nipper Signed-off-by: Herbert Xu commit a44b56cc69a5b017f396ed1daeaef6a63e086656 Author: Evgeniy Polyakov Date: Sun Oct 12 20:14:15 2008 +0800 crypto: hifn - Disable driver when physical size exceeds 32 bits On Tue, Sep 23, 2008 at 08:06:32PM +0200, Dimitri Puzin (max@psycast.de) wrote: > With this patch applied it still doesn't work as expected. The overflow > messages are gone however syslog shows > [ 120.924266] hifn0: abort: c: 0, s: 1, d: 0, r: 0. > when doing cryptsetup luksFormat as in original e-mail. At this point > cryptsetup hangs and can't be killed with -SIGKILL. I've attached > SysRq-t dump of this condition. Yes, I was wrong with the patch: HIFN does not support 64-bit addresses afaics. Attached patch should not allow HIFN to be registered on 64-bit arch, so crypto layer will fallback to the software algorithms. Signed-off-by: Evgeniy Polyakov Signed-off-by: Herbert Xu commit 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 Author: Linus Torvalds Date: Wed Dec 24 15:26:37 2008 -0800 Linux 2.6.28 Happy holidays.. commit 67be403d897f818b1a5ecc201967b0ee6a0332f9 Author: Ingo Molnar Date: Wed Dec 24 21:08:37 2008 +0100 Revert "x86: disable X86_PTRACE_BTS" This reverts commit 40f15ad8aadff5ebb621b17a6f303ad2cd3f847d. The CONFIG_X86_PTRACE_BTS bugs have been fixed via: c5dee61: x86, bts: memory accounting bf53de9: x86, bts: add fork and exit handling Signed-off-by: Ingo Molnar commit db8862eafe8a5d030a3b02e81b8bb47447c315e3 Merge: c5dee6177f4bd2095aab7d9be9f6ebdddd6deee9 c20137fc5329eaf24093fc48c52608dc66be8e5c Author: Ingo Molnar Date: Wed Dec 24 21:08:26 2008 +0100 Merge branch 'linus' into tracing/hw-branch-tracing commit c20137fc5329eaf24093fc48c52608dc66be8e5c Merge: 1806f826554efd206cebacc7f9f213c8e6493a5d 231ffc9c07021afcfb1afa229aa4935730e5163b Author: Linus Torvalds Date: Wed Dec 24 10:24:52 2008 -0800 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: V4L/DVB (9920): em28xx: fix NULL pointer dereference in call to VIDIOC_INT_RESET command V4L/DVB (9908a): MAINTAINERS: mark linux-uvc-devel as subscribers only V4L/DVB (9906): v4l2-compat: test for unlocked_ioctl as well. V4L/DVB (9885): drivers/media Kconfig's: fix bugzilla #12204 V4L/DVB (9875): gspca - main: Fix vidioc_s_jpegcomp locking. V4L/DVB (9781): [PATCH] Cablestar 2 I2C retries (fix CableStar2 support) V4L/DVB (9780): dib0700: Stop repeating after user stops pushing button commit 1806f826554efd206cebacc7f9f213c8e6493a5d Merge: 2523659ded0cb261a3e1fda82fe7e4ddb6e86b6f 40f15ad8aadff5ebb621b17a6f303ad2cd3f847d Author: Linus Torvalds Date: Wed Dec 24 10:24:14 2008 -0800 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: x86: disable X86_PTRACE_BTS commit 2523659ded0cb261a3e1fda82fe7e4ddb6e86b6f Merge: 5289f46b9de04bde181d833d48df9671b69c4b08 574f3c4f5c55e99ea60f71fd98cc54931d4b2eae Author: Linus Torvalds Date: Wed Dec 24 10:23:21 2008 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: ALSA: hda - Add missing terminators in patch_sigmatel.c commit 1f5175adeaa1d161f603ef351785a19814dfe900 Author: Aleksey Senin Date: Wed Dec 24 10:16:45 2008 -0800 RDMA/cma: Add IPv6 support Handle AF_INET6 cases where required, and use struct sockaddr_storage wherever an IPv6 address might be stored. Signed-off-by: Aleksey Senin Signed-off-by: Roland Dreier commit 38617c64bf9a10bf20e41d95b69bb81e8560fe9d Author: Aleksey Senin Date: Wed Dec 24 10:16:37 2008 -0800 RDMA/addr: Add support for translating IPv6 addresses Add support for translating AF_INET6 addresses to the IB address translation service. This requires using struct sockaddr_storage instead of struct sockaddr wherever an IPv6 address might be stored, and adding cases to handle IPv6 in addition to IPv4 to the various translation functions. Signed-off-by: Aleksey Senin Signed-off-by: Roland Dreier commit 7645c4bfbb36f357f03815f5729c46ce8d89f008 Merge: 74b7ff48a93f44198ac03cc4e628d713f53d4668 574f3c4f5c55e99ea60f71fd98cc54931d4b2eae Author: Takashi Iwai Date: Wed Dec 24 11:04:08 2008 +0100 Merge branch 'fix/hda' into topic/hda commit 574f3c4f5c55e99ea60f71fd98cc54931d4b2eae Author: Herton Ronaldo Krzesinski Date: Tue Dec 23 16:53:00 2008 -0200 ALSA: hda - Add missing terminators in patch_sigmatel.c Signed-off-by: Herton Ronaldo Krzesinski Cc: stable@kernel.org Signed-off-by: Takashi Iwai commit 40f15ad8aadff5ebb621b17a6f303ad2cd3f847d Author: Ingo Molnar Date: Wed Dec 24 10:49:51 2008 +0100 x86: disable X86_PTRACE_BTS there's a new ptrace arch level feature in .28: config X86_PTRACE_BTS bool "Branch Trace Store" it has broken fork() handling: the old DS area gets copied over into a new task without clearing it. Fixes exist but they came too late: c5dee61: x86, bts: memory accounting bf53de9: x86, bts: add fork and exit handling and are queued up for v2.6.29. This shows that the facility is still not tested well enough to release into a stable kernel - disable it for now and reactivate in .29. In .29 the hardware-branch-tracer will use the DS/BTS facilities too - hopefully resulting in better code. Signed-off-by: Ingo Molnar commit c1c15b65ec30275575dac9322aae607075769fbc Author: H. Peter Anvin Date: Tue Dec 23 10:10:40 2008 -0800 x86: PAT: fix address types in track_pfn_vma_new() Impact: cleanup, fix warning This warning: arch/x86/mm/pat.c: In function track_pfn_vma_copy: arch/x86/mm/pat.c:701: warning: passing argument 5 of follow_phys from incompatible pointer type Triggers because physical addresses are resource_size_t, not u64. This really matters when calling an interface like follow_phys() which takes a pointer to a physical address -- although on x86, being littleendian, it would generally work anyway as long as the memory region wasn't completely uninitialized. Signed-off-by: H. Peter Anvin Signed-off-by: Ingo Molnar commit 6332178d91ca1a9dbd99bd97cabbcf965d178e9f Merge: 908a7a16b852ffd618a9127be8d62432182d81b4 739840d529eb7505d3cbfe9d468bf1440c9a8e27 Author: David S. Miller Date: Tue Dec 23 17:56:23 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/ppp_generic.c commit 5289f46b9de04bde181d833d48df9671b69c4b08 Author: Kyle McMartin Date: Tue Dec 23 08:44:30 2008 -0500 parisc: disable UP-optimized flush_tlb_mm flush_tlb_mm's "optimized" uniprocessor case of allocating a new context for userspace is exposing a race where we can suddely return to a syscall with the protection id and space id out of sync, trapping on the next userspace access. Debugged-by: James Bottomley Tested-by: Helge Deller Signed-off-by: Kyle McMartin Signed-off-by: Linus Torvalds commit 8960223d5973b3eaf8cbc1984969bb6c7661e7b9 Merge: d519c8d9ccb7956e61a55ce3a0fd6a25f42cbb33 077ebed54fe66612f58b076628a72eca2be8df90 Author: Linus Torvalds Date: Tue Dec 23 17:01:40 2008 -0800 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 * 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: drm/radeon: fix correctness of irq_enabled check for radeon. commit d519c8d9ccb7956e61a55ce3a0fd6a25f42cbb33 Author: Harry Ciao Date: Tue Dec 23 13:57:16 2008 -0800 edac: fix edac core deadlock when removing a device When deleting an edac device, we have to wait for its edac_dev.work to be completed before deleting the whole edac_dev structure. Since we have no idea which work in current edac_poller's workqueue is the work we are conerned about, we wait for all work in the edac_poller's workqueue to be proceseed. This is done via flush_cpu_workqueue() which inserts a wq_barrier into the tail of the workqueue and then sleeping on the completion of this wq_barrier. The edac_poller will wake up sleepers when it is found. EDAC core creates only one kernel worker thread, edac_poller, to run the works of all current edac devices. They share the same callback function of edac_device_workq_function(), which would grab the mutex of device_ctls_mutex first before it checks the device. This is exactly where edac_poller and rmmod would have a great chance to deadlock. In below call trace of rmmod > ... > edac_device_del_device > edac_device_workq_teardown > flush_workqueue > flush_cpu_workqueue, device_ctls_mutex would have already been grabbed by edac_device_del_device(). So, on one hand rmmod would sleep on the completion of a wq_barrier, holding device_ctls_mutex; on the other hand edac_poller would be blocked on the same mutex when it's running any one of works of existing edac evices(Note, this edac_dev.work is likely to be totally irrelevant to the one that is being removed right now)and never would have a chance to run the work of above wq_barrier to wake rmmod up. edac_device_workq_teardown() should not be called within the critical region of device_ctls_mutex. Just like is done in edac_pci_del_device() and edac_mc_del_mc(), where edac_pci_workq_teardown() and edac_mc_workq_teardown() are called after related mutex are released. Moreover, an edac_dev.work should check first if it is being removed. If this is the case, then it should bail out immediately. Since not all of existing edac devices are to be removed, this "shutting flag" should be contained to edac device being removed. The current edac_dev.op_state can be used to serve this purpose. The original deadlock problem and the solution have been witnessed and tested on actual hardware. Without the solution, rmmod an edac driver would result in below deadlock: root@localhost:/root> rmmod mv64x60_edac EDAC DEBUG: mv64x60_dma_err_remove() EDAC DEBUG: edac_device_del_device() EDAC DEBUG: find_edac_device_by_dev() (hang for a moment) INFO: task edac-poller:2030 blocked for more than 120 seconds. "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. edac-poller D 00000000 0 2030 2 Call Trace: [df159dc0] [c0071e3c] free_hot_cold_page+0x17c/0x304 (unreliable) [df159e80] [c000a024] __switch_to+0x6c/0xa0 [df159ea0] [c03587d8] schedule+0x2f4/0x4d8 [df159f00] [c03598a8] __mutex_lock_slowpath+0xa0/0x174 [df159f40] [e1030434] edac_device_workq_function+0x28/0xd8 [edac_core] [df159f60] [c003beb4] run_workqueue+0x114/0x218 [df159f90] [c003c674] worker_thread+0x5c/0xc8 [df159fd0] [c004106c] kthread+0x5c/0xa0 [df159ff0] [c0013538] original_kernel_thread+0x44/0x60 INFO: task rmmod:2062 blocked for more than 120 seconds. "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. rmmod D 0ff2c9fc 0 2062 1839 Call Trace: [df119c00] [c0437a74] 0xc0437a74 (unreliable) [df119cc0] [c000a024] __switch_to+0x6c/0xa0 [df119ce0] [c03587d8] schedule+0x2f4/0x4d8 [df119d40] [c03591dc] schedule_timeout+0xb0/0xf4 Signed-off-by: Linus Torvalds commit 20ca9b3f4c6dfa0af8dd5b18a64df17eb994b54d Author: Li Zefan Date: Tue Dec 23 13:57:14 2008 -0800 cgroups: avoid accessing uninitialized data in failure path If cgroup_get_rootdir() failed, free_cg_links() will be called in the failure path, but tmp_cg_links hasn't been initialized at that time. I introduced this bug in the 2.6.27 merge window. Signed-off-by: Li Zefan Acked-by: Serge Hallyn Cc: Paul Menage Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit e368d3a836797ddf193b1ec18c97407a791d2451 Author: Sharyathi Nagesh Date: Tue Dec 23 13:57:12 2008 -0800 cgroups: suppress bogus warning messages Remove spurious warning messages that are thrown onto the console during cgroup operations. Signed-off-by: Alexey Dobriyan Signed-off-by: Sharyathi Nagesh Acked-by: Serge E. Hallyn Cc: Paul Menage Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit f00a189257836e5237ace3265f6991ef66a16c86 Author: Evgeniy Polyakov Date: Tue Dec 23 13:57:12 2008 -0800 w1: fix slave selection on big-endian systems During test of the w1-gpio driver i found that in "w1.c:679 w1_slave_found()" the device id is converted to little-endian with "cpu_to_le64()", but its not converted back to cpu format in "w1_io.c:293 w1_reset_select_slave()". Based on a patch created by Andreas Hummel. [akpm@linux-foundation.org: remove unneeded cast] Reported-by: Andreas Hummel Signed-off-by: Evgeniy Polyakov Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit cc6c2ca30074a0274c05dd3212c741a550f0d3c2 Author: Chris Elston Date: Tue Dec 23 13:57:10 2008 -0800 rtc: rtc-isl1208: reject invalid dates This patch for the rtc-isl1208 driver makes it reject invalid dates. Signed-off-by: Chris Elston [a.zummo@towertech.it: added comment explaining the check] Signed-off-by: Alessandro Zummo Cc: Hebert Valerio Riedel Cc: David Brownell Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds commit 98db8df777438e16ad0f44a0fba05ebbdb73db8d Author: Steven Rostedt Date: Tue Dec 23 11:32:25 2008 -0500 ring-buffer: prevent false positive warning Impact: eliminate false WARN_ON message If an interrupt goes off after the setting of the local variable tail_page and before incrementing the write index of that page, the interrupt could push the commit forward to the next page. Later a check is made to see if interrupts pushed the buffer around the entire ring buffer by comparing the next page to the last commited page. This can produce a false positive if the interrupt had pushed the commit page forward as stated above. Thanks to Jiaying Zhang for finding this race. Reported-by: Jiaying Zhang Signed-off-by: Steven Rostedt Cc: Signed-off-by: Ingo Molnar commit a8ccf1d6f60e3e6ae63122e02378cd4d40dd4aac Author: Steven Rostedt Date: Tue Dec 23 11:32:24 2008 -0500 ring-buffer: fix dangling commit race Impact: fix stuck trace-buffers If an interrupt comes in during the rb_set_commit_to_write and pushes the tail page forward just at the right time, the commit updates will miss the adding of the interrupt data. This will cause the commit pointer to cease from moving forward. Thanks to Jiaying Zhang for finding this race. Reported-by: Jiaying Zhang Signed-off-by: Steven Rostedt Cc: Signed-off-by: Ingo Molnar commit bed4f13065b520e564adffbfcd1c1a764a9c887e Merge: 3e5621edb3392b28efb260ac99b2d26fb8b44e73 bf8bd66d0580f296f257d371ee41a0a137b541c7 Author: Ingo Molnar Date: Tue Dec 23 16:30:31 2008 +0100 Merge branch 'x86/irq' into x86/core commit 3e5621edb3392b28efb260ac99b2d26fb8b44e73 Merge: be9a1d3c2e559b267983bcf8b003997b83befb49 181de82ee3ffda1175f89d50c991dae31b79280c Author: Ingo Molnar Date: Tue Dec 23 16:30:27 2008 +0100 Merge branch 'x86/iommu' into x86/core commit be9a1d3c2e559b267983bcf8b003997b83befb49 Merge: fa623d1b0222adbe8f822e53c08003b9679a410c 7e3cbc3f774f31ecd88a51edae3d9377f60a4c00 Author: Ingo Molnar Date: Tue Dec 23 16:30:20 2008 +0100 Merge branch 'x86/tsc' into x86/core commit 7e3cbc3f774f31ecd88a51edae3d9377f60a4c00 Merge: 345077cd98ff5532b2d1158013c3fec7b1ae85ec f4166c54bfe04f64603974058e44fbd7cfef0ccc Author: Ingo Molnar Date: Tue Dec 23 16:29:31 2008 +0100 Merge branch 'x86/ptrace' into x86/tsc Conflicts: arch/x86/kernel/cpu/intel.c commit fa623d1b0222adbe8f822e53c08003b9679a410c Merge: 3d44cc3e01ee1b40317f79ed54324e25c4f848df 1ccedb7cdba6886939dd8b4c8f965a826f696e56 34945ede31071ac7d72270cc6c1893323f392b3f d4377974062122d6d9be0bbd8a910a0954714194 c415b3dce30dfb41234e118662e8720f47343a4f beeb4195cbc80b7489631361b7ed38b7518af433 f269b07e862c395d6981ab2c05d6bc34b0249e90 4e42ebd57b2e727b28bf5f6068e95cd19b0e807b e1286f2c686f5976e0424bb6195ece25e7a17607 878719e831d9e076961aa15d4049a57a6668c67a fd28a5b58dddf5cb5df162ae5c8797a63171c31d adf77bac052bb5bf0722b2ce2af9fefc5b2d2a71 8f2466f45f75e3cbe3aa2b69d33fd9d6e343b9cc 93093d099e5dd0c258fd530c12668e828c20df41 bb5574608a8375026510b4f983ffbb06ece33fe2 f34a10bd9f8cc95ebdc69a079db195636b2e22e0 b6fd6f26733e864fba2ea3eb1d716e23d2e66f3a 30604bb410b53efa9c93ee8f03d7aa7494094faa 5b9a0e14eb4bf40a7cb780af4723560e06753f2d 67bac792cd0c05b4b6e0393c32605b028b8dd533 7a9787e1eba95a166265e6a260cf30af04ef0a99 f4166c54bfe04f64603974058e44fbd7cfef0ccc 69b88afa8d114a43a3c0431722b79e31d9920692 8daa19051e1c7369c89ace7b18e74fe1f55dfa29 3e1e9002aa8b32bd4c95ac6c8fad376b7a8127fb 8403295e0fa460f6240e2d781e25dc29189f33c7 4db646b1af8fdcf01d690d29eeae44cd937edb0d 205516c12dbba003c26b42cfb41e598631300106 c8182f0016fb65a721c4fbe487909a2d56178135 ecbf29cdb3990c83d90d0c4187c89fb2ce423367 Author: Ingo Molnar Date: Tue Dec 23 16:27:23 2008 +0100 Merge branches 'x86/apic', 'x86/cleanups', 'x86/cpufeature', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/detect-hyper', 'x86/doc', 'x86/dumpstack', 'x86/early-printk', 'x86/fpu', 'x86/idle', 'x86/io', 'x86/memory-corruption-check', 'x86/microcode', 'x86/mm', 'x86/mtrr', 'x86/nmi-watchdog', 'x86/pat2', 'x86/pci-ioapic-boot-irq-quirks', 'x86/ptrace', 'x86/quirks', 'x86/reboot', 'x86/setup-memory', 'x86/signal', 'x86/sparse-fixes', 'x86/time', 'x86/uv' and 'x86/xen' into x86/core commit bf8bd66d0580f296f257d371ee41a0a137b541c7 Merge: 8ae936690972dfcad73d0dde1095b9f32af5ee95 1ccedb7cdba6886939dd8b4c8f965a826f696e56 Author: Ingo Molnar Date: Tue Dec 23 16:24:15 2008 +0100 Merge branch 'x86/apic' into x86/irq Conflicts: arch/x86/kernel/apic.c commit 1ccedb7cdba6886939dd8b4c8f965a826f696e56 Merge: a98f8fd24fb24fcb9a359553e64dd6aac5cf4279 929096fe9ff1f4b3645cf3919527ab47e8d5e17c Author: Ingo Molnar Date: Tue Dec 23 16:23:23 2008 +0100 Merge commit 'v2.6.28-rc9' into x86/apic commit 231ffc9c07021afcfb1afa229aa4935730e5163b Author: Devin Heitmueller Date: Tue Dec 16 23:09:35 2008 -0300 V4L/DVB (9920): em28xx: fix NULL pointer dereference in call to VIDIOC_INT_RESET command Fix a NULL pointer dereference that would occur if the video decoder tied to the em28xx supports the VIDIOC_INT_RESET call (for example: the cx25840 driver) Signed-off-by: Devin Heitmueller Signed-off-by: Mauro Carvalho Chehab commit 908a7a16b852ffd618a9127be8d62432182d81b4 Author: Neil Horman Date: Mon Dec 22 20:43:12 2008 -0800 net: Remove unused netdev arg from some NAPI interfaces. When the napi api was changed to separate its 1:1 binding to the net_device struct, the netif_rx_[prep|schedule|complete] api failed to remove the now vestigual net_device structure parameter. This patch cleans up that api by properly removing it.. Signed-off-by: Neil Horman Signed-off-by: David S. Miller commit f8f50b1bddd49eb171398cfc543c957884dc6e35 Author: Dale Farnsworth Date: Wed Dec 17 10:09:26 2008 +0000 powerpc/32: Wire up the trampoline code for kdump Wire up the trampoline code for ppc32 to relay exceptions from the vectors at address 0 to vectors at address 32MB, and modify Kconfig to enable Kdump support for all classic powerpcs. Signed-off-by: Dale Farnsworth Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit ccdcef72c249c289898b164eada89a61855b9287 Author: Dale Farnsworth Date: Wed Dec 17 10:09:13 2008 +0000 powerpc/32: Add the ability for a classic ppc kernel to be loaded at 32M Add the ability for a classic ppc kernel to be loaded at an address of 32MB. This done by fixing a few places that assume we are loaded at address 0, and by changing several uses of KERNELBASE to use PAGE_OFFSET, instead. Signed-off-by: Dale Farnsworth Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit 01695a9687e5a8d78589605037cc7828a5b67ac9 Author: Anton Vorontsov Date: Wed Dec 17 10:09:10 2008 +0000 powerpc/32: Allow __ioremap on RAM addresses for kdump kernel While for debugging it is good to catch bogus users of ioremap, though for kdump support it is more convenient to use __ioremap for copy_oldmem_page() (exactly as we do for PPC64 currently). Note that copy_oldmem_page() calls __ioremap with flags set to '0', so it should be safe with the regard to the caches. The other option is to use kmap_atomic_pfn()[1], but it will not work for kernels compiled without HIGHMEM. That is, on a board with 256MB RAM and crashkernel=64M@32M case, the !HIGHMEM capturing kernel maps 0-96M range, which does not include all the memory needed to capture the dump. And, obviously, accessing anything upper than 96M will cause faults. [1] http://ozlabs.org/pipermail/linuxppc-dev/2007-November/046747.html Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit 6f29c3298b18216198631cbee01c349adecb225d Author: Dale Farnsworth Date: Wed Dec 17 10:09:06 2008 +0000 powerpc/32: Setup OF properties for kdump Refactor the setting of kdump OF properties, moving the common code from machine_kexec_64.c to machine_kexec.c where it can be used on both ppc64 and ppc32. This will be needed for kdump to work on ppc32 platforms. Signed-off-by: Dale Farnsworth Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit 73753313884e8d063d9bf9d3e36325743ca006ba Author: Anton Vorontsov Date: Wed Dec 17 10:09:01 2008 +0000 powerpc/32/kdump: Implement crash_setup_regs() using ppc_save_regs() This replaces the dummy crash_setup_regs function with full-fledged crash_setup_regs implementation. On PPC32 we simply use the new ppc_save_regs function to dump the registers. Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit 322b439455ea62e6480e300c77b258e872896381 Author: Anton Vorontsov Date: Wed Dec 17 10:08:55 2008 +0000 powerpc: Prepare xmon_save_regs for use with kdump Today the arch/powerpc/xmon/setjmp.S file contains only the xmon_save_regs function. We want to use it for kdump purposes, so let's move the file into arch/powerpc/kernel/ and give the function a more generic name (ppc_save_regs). Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit 5be8554875bf3a1a42b7f04d5999b36e7c2fa88b Author: Anton Vorontsov Date: Tue Dec 16 06:23:08 2008 +0000 powerpc: Remove default kexec/crash_kernel ops assignments Default ops are implicit now. Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit 77733f8a33488307e7d4b9077d174647ecea92e1 Author: Anton Vorontsov Date: Tue Dec 16 06:23:05 2008 +0000 powerpc: Make default kexec/crash_kernel ops implicit This removes the need for each platform to specify default kexec and crash kernel ops, thus effectively adds a working kexec support for most 6xx/7xx/7xxx-based boards. Platforms that can't cope with default ops will explode in some weird way (a hang or reboot is most likely), which means that the board's kexec support should be fixed or blacklisted via dummy _prepare callback returning -ENOSYS. Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit 2e8e4f5b80e101da588af650de0ff6b3c475d6b3 Author: Dale Farnsworth Date: Tue Dec 16 06:22:59 2008 +0000 powerpc: Setup OF properties for ppc32 kexec Refactor the setting of kexec OF properties, moving the common code from machine_kexec_64.c to machine_kexec.c where it can be used on both ppc64 and ppc32. This is needed for kexec to work on ppc32 platforms. Signed-off-by: Dale Farnsworth Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit b906cfa397fdef8decbd36467b1f63c830a0bf2b Author: Sebastien Dugue Date: Thu Nov 27 00:59:52 2008 +0000 powerpc/pseries: Fix cpu hotplug Currently, pseries_cpu_die() calls msleep() while polling RTAS for the status of the dying cpu. However, if the cpu that is going down also happens to be the one doing the tick then we're hosed as the tick_do_timer_cpu 'baton' is only passed later on in tick_shutdown() when _cpu_down() does the CPU_DEAD notification. Therefore jiffies won't be updated anymore. This replaces that msleep() with a cpu_relax() to make sure we're not going to schedule at that point. With this patch my test box survives a 100k iterations hotplug stress test on _all_ cpus, whereas without it, it quickly dies after ~50 iterations. Signed-off-by: Sebastien Dugue Cc: Michael Ellerman Signed-off-by: Paul Mackerras commit fad7b9b51e21a97e9e2662f1b51869ed2d209097 Author: Paul Mackerras Date: Tue Dec 23 14:57:26 2008 +1100 powerpc: Fix KVM build on ppc440 Commit 2a4aca1144394653269720ffbb5a325a77abd5fa ("powerpc/mm: Split low level tlb invalidate for nohash processors") changed a call to _tlbia to _tlbil_all but didn't include the header that defines _tlbil_all, leading to a build failure on 440 if KVM is enabled. This fixes it. Signed-off-by: Paul Mackerras commit 889bd9b6dbcd426b8698c4a779dd7dbf247f57b8 Author: Oliver Neukum Date: Thu Dec 18 03:57:35 2008 +0000 net: startup race in hso driver The flag marking a device running must be set before the URBs for recption are submitted or they may complete too early and fail to resubmit. Signed-off-by: Oliver Neukum Signed-off-by: David S. Miller commit 05a8c1cbfe368df8c0d4eff710c370d2aa10245a Author: Jarek Poplawski Date: Mon Dec 22 19:44:13 2008 -0800 pkt_sched: Remove smp_wmb() in qdisc_watchdog() While implementing a TCQ_F_THROTTLED flag there was used an smp_wmb() in qdisc_watchdog(), but since this flag is practically used only in sch_netem(), and since it's not even clear what reordering is avoided here (TCQ_F_THROTTLED vs. __QDISC_STATE_SCHED?) it seems the barrier could be safely removed. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 4707470ae7441733822efcd680b0ef3971921c4d Author: Florian Fainelli Date: Mon Dec 22 19:40:38 2008 -0800 r6040: bump release number to 0.19 This patch bumps the release number of the driver. Signed-off-by: Florian Fainelli Signed-off-by: David S. Miller commit 3e7c469f07ff14cbf9a814739e1fc99a863e0943 Author: Joe Chou Date: Mon Dec 22 19:40:02 2008 -0800 r6040: save and restore MIER correctly in the interrupt routine This patch saves the MIER register contents before treating interrupts, then restores them correcty at the end of the interrupt routine. Signed-off-by: Joe Chou Signed-off-by: Florian Fainelli Signed-off-by: David S. Miller commit 11e5e8f5d14a1229706576184d2cf4c4556ed94c Author: Joe Chou Date: Mon Dec 22 19:38:17 2008 -0800 r6040: fix wrong logic in mdio code This patch fixes a reverse logic in the MDIO code. Signed-off-by: Joe Chou Signed-off-by: Florian Fainelli Signed-off-by: David S. Miller commit 5f2f6da76c429c42d54f73807f00b8fd761a7d68 Author: Jarek Poplawski Date: Mon Dec 22 19:35:28 2008 -0800 net: Fix oops in dev_ifsioc() A command like this: "brctl addif br1 eth1" issued as a user gave me an oops when bridge module wasn't loaded. It's caused by using a dev pointer before checking for NULL. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit adf77bac052bb5bf0722b2ce2af9fefc5b2d2a71 Author: H. Peter Anvin Date: Mon Dec 22 17:56:05 2008 -0800 x86: prioritize the FPU traps for the error code In the case of multiple FPU errors, prioritize the error codes, instead of returning __SI_FAULT, which ends up pushing a 0 as the error code to userspace, a POSIX violation. For i386, we will simply return if there are no errors at all; for x86-64 this is probably a "can't happen" (and the code should be unified), but for this patch, return __SI_FAULT|SI_KERNEL if this ever happens. Signed-off-by: H. Peter Anvin commit 077ebed54fe66612f58b076628a72eca2be8df90 Author: Dave Airlie Date: Mon Dec 22 17:11:02 2008 +1000 drm/radeon: fix correctness of irq_enabled check for radeon. This check was introduced with the logic the wrong way around. Fixes regression: http://bugzilla.kernel.org/show_bug.cgi?id=12216 Tested-by: François Valenduc Signed-off-by: Dave Airlie commit c47a75a45fa3a9d98b61f7e31983ffab2c44404f Merge: 0099f77e0a224cc461d0d2930ef0fdb32c61ba64 abe1dfab60e1839d115930286cb421f5a5b193f3 Author: Linus Torvalds Date: Mon Dec 22 14:52:00 2008 -0800 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: ACPI: don't cond_resched() when irqs_disabled() ACPI: fix 2.6.28 acpi.debug_level regression commit 0099f77e0a224cc461d0d2930ef0fdb32c61ba64 Merge: 2e8569669805c2d2620527464c395279b74892fc 9ecab6e5bf87f96dc2fa89cc9e8d5576fbde4325 Author: Linus Torvalds Date: Mon Dec 22 14:40:48 2008 -0800 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 * git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: drivers/ide/{cs5530.c,sc1200.c}: Move a dereference below a NULL test commit 9ecab6e5bf87f96dc2fa89cc9e8d5576fbde4325 Author: Julia Lawall Date: Mon Dec 22 23:05:06 2008 +0100 drivers/ide/{cs5530.c,sc1200.c}: Move a dereference below a NULL test In each case, if the NULL test is necessary, then the dereference should be moved below the NULL test. The semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @@ type T; expression E; identifier i,fld; statement S; @@ - T i = E->fld; + T i; ... when != E when != i if (E == NULL) S + i = E->fld; // Signed-off-by: Julia Lawall Acked-by: Sergei Shtylyov Signed-off-by: Bartlomiej Zolnierkiewicz commit def434c2319c5a336633cd73322e0f28a7091b01 Author: Benjamin Krill Date: Thu Nov 27 16:15:44 2008 +0100 powerpc/cell: add QPACE as a separate Cell platform Since the QPACE (Chromodynamics Parallel Computing on the Cell Broadband Engine) platform doesn't use a iommu, doesn't have PCI devices and a MPIC much lesser setup and configurations are needed. So far all devices are detected as OF device. A notifier function is used to set the dma_ops for the of_platform bus. Further this patch splits the PPC_CELL_NATIVE into PPC_CELL_COMMON which are parts that are shared with the QPACE platform and the rest. Signed-off-by: Benjamin Krill Signed-off-by: Arnd Bergmann commit e68558ddcdbfa8cc2e7811bcada3bcbeef79fd4a Author: Arnd Bergmann Date: Mon Dec 22 22:08:26 2008 +0100 powerpc/cell: fix build breakage with CONFIG_SPUFS disabled CBE_THERM and OPROFILE_CELL both cannot be built without SPU_FS disabled, so make the dependency explicit. Reported-by: Milton Miller Signed-off-by: Arnd Bergmann commit 2e8569669805c2d2620527464c395279b74892fc Merge: 7ef5f41c16fdddfc14e882a57200334614d8ffd6 ed2b03ed3cec2a4719d04ef208319f9de6a4258a Author: Linus Torvalds Date: Mon Dec 22 10:17:19 2008 -0800 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus * 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: MIPS: MIPS64R2: Fix buggy __arch_swab64 MIPS: Fix preprocessor warnings flaged by GCC 4.4 commit 7ef5f41c16fdddfc14e882a57200334614d8ffd6 Merge: 3d44cc3e01ee1b40317f79ed54324e25c4f848df 739840d529eb7505d3cbfe9d468bf1440c9a8e27 Author: Linus Torvalds Date: Mon Dec 22 10:12:54 2008 -0800 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: ppp: fix segfaults introduced by netdev_priv changes net: Fix module refcount leak in kernel_accept() commit 472346da9cc4231bec03ff2032e0d5fd4037232c Author: Roel Kluin Date: Mon Dec 22 17:40:45 2008 +0100 ALSA: ASoC: fix a typo in omp-pcm.c Fix a typo (& and &&) Signed-off-by: Roel Kluin Signed-off-by: Liam Girdwood Signed-off-by: Takashi Iwai commit c69134858722977a82f58cae88e7ffdb28e1e858 Author: Jarkko Nikula Date: Mon Dec 22 10:57:33 2008 +0200 ASoC: Fix DSP formats in SSM2602 audio codec Thanks to Troy Kisky for noticing. - DSP_A format has 1-bit data delay which corresponds to SSM6202 submode 2 - DSP_B has 0-bit data delay which corresponds to submode 1 - Currently driver sets them opposite so swap the submode setting Signed-off-by: Jarkko Nikula Cc: Cliff Cai Signed-off-by: Mark Brown commit bd25867a6cbe7a00ef7dbe8d9ddebc91b00b9b3f Author: Jarkko Nikula Date: Mon Dec 22 10:21:36 2008 +0200 ASoC: Fix incorrect DSP format in OMAP McBSP DAI and affected drivers - OMAP McBSP DAI driver claims to support DSP_A format which has 1-bit data delay but configures link for 0-bit data delay which is in fact DSP_B - Fix this by changing format from DSP_A to DSP_B - Fix also TLV320AIC23 codec and OSK5912 machine drivers since the same error is populated also there Signed-off-by: Jarkko Nikula Acked-by: Arun KS Signed-off-by: Mark Brown commit f5eda57f9bb17b6f09f7888dfc2c47db7aea45d4 Author: Roland Dreier Date: Mon Dec 22 07:15:05 2008 -0800 mlx4_core: Delete incorrect comment The comment about a "Conditional on hca_type" was cut-and-pasted from the mthca driver, and doesn't apply to mlx4 (since only one type of HCA is handled by mlx4). So just delete it. Signed-off-by: Roland Dreier commit b8dd786f9417e5885929bfe33a235c76a9c1c569 Author: Yevgeny Petrilin Date: Mon Dec 22 07:15:03 2008 -0800 mlx4_core: Add support for multiple completion event vectors When using MSI-X mode, create a completion event queue for each CPU. Report the number of completion EQs in a new struct mlx4_caps member, num_comp_vectors, and extend the mlx4_cq_alloc() interface with a vector parameter so that consumers can specify which completion EQ should be used to report events for the CQ being created. Signed-off-by: Yevgeny Petrilin Signed-off-by: Roland Dreier commit 59de580af1c2fd671b0cb27c41ff958859ae5288 Author: Paul Mundt Date: Mon Dec 22 19:32:27 2008 +0900 sh: oprofile: Fix up the module build. Signed-off-by: Paul Mundt commit 7d91fcfcb91dde7bc4586154942862c1724b3519 Author: Takanari Hayama Date: Mon Dec 22 11:05:03 2008 +0900 sh: add UIO support for JPU on SH7722. Add JPU support on Migo-R via UIO. This make use of Magnus's generic UIO platform driver. Chunk of contiguous memory to hold intermediate image and compressed data during encode and decode. Signed-off-by: Takanari Hayama Signed-off-by: Paul Mundt commit b0c50ad71746c4ad148f366135e3c87e32729108 Author: Paul Mundt Date: Mon Dec 22 03:40:10 2008 +0900 serial: sh-sci: Fix up port pinmux for SH7366. Signed-off-by: Paul Mundt commit 6f5cd2bd59c3bbaf073a7a52fcdefded939bd306 Author: Paul Mundt Date: Mon Dec 22 03:26:26 2008 +0900 sh: mach-rsk: Use uImage generation by default for rsk7201/7203. Signed-off-by: Paul Mundt commit 2ea40dec26da89702dface74365cd16cea9ded6c Author: Paul Mundt Date: Mon Dec 22 03:25:04 2008 +0900 sh: mach-sh03: Fix up pata_platform build breakage. Signed-off-by: Paul Mundt commit b5868e8cdeb35cd9ddc3a541f81f318b0f6772b3 Author: Magnus Damm Date: Fri Dec 19 15:34:50 2008 +0900 sh: enable deferred io LCDC on Migo-R Enable LCDC deferred io on Migo-R using 1s delay. As with other deferred io frame buffers user space code should use fsync() on the frame buffer device to trigger an update. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 8564557a03c12adb9c4b76ae1e86db4113a04d13 Author: Magnus Damm Date: Fri Dec 19 15:34:41 2008 +0900 video: sh_mobile_lcdcfb deferred io support This patch adds sh_mobile_lcdcfb deferred io support for SYS panels. The LCDC hardware block managed by the sh_mobile_lcdcfb driver supports RGB or SYS panel configurations. SYS panels come with an external display controller that is resposible for refreshing the actual LCD panel. RGB panels are controlled directly by the LCDC and they need to be refreshed by the LCDC hardware. In the case of SYS panels we can save some power by configuring the LCDC hardware block in one-shot mode. In this one-shot mode panel refresh is managed by software. This works well together with deferred io since it allows us to stop clocks for most of the time and only enable clocks when we actually want to trigger an update. When there is no fbdev activity the clocks are kept stopped which allows us to deep sleep. The refresh rate in deferred io mode is set using platform data. The same platform data can also be used to disable deferred io mode. As with other deferred io frame buffers user space code should use fsync() on the frame buffer device to trigger an update. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 37b4837959cb9aa60686ca0d85f73d819251abad Author: Magnus Damm Date: Fri Dec 19 15:34:32 2008 +0900 video: deferred io with physically contiguous memory Extend the deferred io code from only supporting vmalloc()ed frame buffer memory to support both vmalloc()ed and physically contiguous frame buffer memory. The sh_mobile_lcdcfb hardware does not support scatter gather so we need physically contiguous memory to back our frame buffer. Signed-off-by: Magnus Damm Acked-by: Jaya Kumar Signed-off-by: Paul Mundt commit 6e1038a95bebb8a1ad6066c95aa9c3af6963c9ff Author: Magnus Damm Date: Fri Dec 19 15:34:23 2008 +0900 video: deferred io cleanup Make sure the mmap callback is set to NULL in the deferred io cleanup function. This way we can enable and disable deferred io on the fly. Signed-off-by: Magnus Damm Acked-by: Jaya Kumar Signed-off-by: Paul Mundt commit 87884bd8ae42c875adbd62c84f47ed1cbb3e5090 Author: Magnus Damm Date: Fri Dec 19 15:34:09 2008 +0900 video: fix deferred io fsync() If CONFIG_FB_DEFERRED_IO is set, but there are framebuffers registered that does not make use of deferred io, then fsync() on those framebuffers will result in a crash. Fix that. This is needed for sh_mobile_lcdcfb since we always enable deferred io at compile time but we may disable deferred io for some types of hardware configurations. Signed-off-by: Magnus Damm Acked-by: Jaya Kumar Signed-off-by: Paul Mundt commit 0790555437df2b6070af8f021b8d2ef79e70e144 Author: Magnus Damm Date: Fri Dec 19 12:02:16 2008 +0900 sh: add LCDC interrupt configuration to AP325 and Migo-R Add LCDC interrupt resources for AP325 and Migo-R. The LCDC driver does not require interrupts at this point, but changes such as one-shot SYS mode using deferred io, and wait-for-vblank will both need this. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 2540c111ead82cad605ec2b14a1905ad914cc124 Author: Magnus Damm Date: Wed Dec 17 17:29:49 2008 +0900 sh_mobile_lcdc: use FB_SYS helpers instead of FB_CFB Since the sh_mobile_lcdc hardware has the framebuffer(s) in system RAM, use FB_SYS instead of FB_CFB. Also hook in read and write helpers. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit da9fdc8b44c421f14a68988ae4d1fb414d5edbf0 Author: Magnus Damm Date: Wed Dec 17 17:18:45 2008 +0900 sh: split coherent pages Split pages returned by dma_alloc_coherent() and make sure we free them one by one. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 78fb40263f34c65ade1693664db1af168d479588 Author: Paul Mundt Date: Wed Dec 17 16:23:32 2008 +0900 sh: dma: Kill off ISA DMA wrapper. There are no more users for this code, and it has been deprecated for some time, so just kill it off. Signed-off-by: Paul Mundt commit 5d2685d0b3edc51ecc92604d5b7f5ca9b29b90bb Author: Paul Mundt Date: Wed Dec 17 15:56:06 2008 +0900 sh: Conditionalize the code dumper on CONFIG_DUMP_CODE. We don't really want this enabled by default, but it is still quite useful for debugging. So, make it conditional and leave it off by default. Signed-off-by: Paul Mundt commit fe58cac35f48a9598c2a1360c2204c73f7bca2d2 Author: Paul Mundt Date: Wed Dec 17 15:36:50 2008 +0900 sh: Kill off the unused SH_ALPHANUMERIC debug option. Signed-off-by: Paul Mundt commit 740a3e677b70181d5e2b1458a27891209e3bf635 Author: Paul Mundt Date: Wed Dec 17 15:33:43 2008 +0900 sh: Enable skipping of bss on debug platforms for sh32 also. This enables the same functionality that sh64 has for sh32. When running on simulated hardware or via remote memory via the debug interface, memory is gauranteed to be zero on boot already, and skipping the zeroing of BSS has measurable boot time benefits. Signed-off-by: Paul Mundt commit 8a655053ca1593dd160dac2a4ee638fdec037d86 Author: Paul Mundt Date: Wed Dec 17 15:06:54 2008 +0900 doc: Update sh cpufreq documentation. The sh cpufreq driver is no longer limited to just the SH-3 and SH-4, update the documentation to reflect this fact accordingly. Signed-off-by: Paul Mundt commit 0146d7875976795fe364b4a3da629975ebd37671 Author: Paul Mundt Date: Wed Dec 17 14:58:04 2008 +0900 sh: mrshpc_setup_windows() needs to be inline. While no one should be including this file multiple times, flag it inline anyways just in case. Signed-off-by: Paul Mundt commit 1f6fd5c916c8416588f5797e7837b9e81b3251a5 Author: Paul Mundt Date: Wed Dec 17 14:53:24 2008 +0900 serial: sh-sci: sci_poll_get_char() is only used by CONFIG_CONSOLE_POLL. sci_poll_put_char() happens to also be used by the serial console, while sci_poll_get_char() is only used by CONFIG_CONSOLE_POLL. Add another gnarly ifdef to shut up the compiler. Signed-off-by: Paul Mundt commit 073da9c0de401e8683b6bc76c008a7e0850045d5 Author: Paul Mundt Date: Wed Dec 17 14:41:54 2008 +0900 sh: Kill off cf-enabler with extreme prejudice. Now that the rest of the boards that were using cf-enabler "generically" have switched to setting up their mappings on their own, only the mach-se boards were left using it. All of the cf-enabler using mach-se boards use a special initialization of the MRSHPC windows rather than going through the special PTE as other SH-4 platforms do. This consolidates the MRSHPC setup logic, hooks it up on the boards that care, and gets rid of any and all remaining references to cf-enabler. This has been long overdue, as cf-enabler has been the bane of arch/sh/kernel for the last 7 years. Good riddance. Signed-off-by: Paul Mundt commit 8c197c3afb4a9026973315cc6a3c189dd8434053 Author: Paul Mundt Date: Wed Dec 17 13:57:45 2008 +0900 sh: Add a simple edosk7705_defconfig for build testing. Signed-off-by: Paul Mundt commit 866ef8f48f2272ce8d84156c91964d730666ab33 Author: Paul Mundt Date: Wed Dec 17 13:57:15 2008 +0900 sh: mach-edosk7705: Fix up edosk7705 so it all builds again. Signed-off-by: Paul Mundt commit 0ef0e6ca426d28561b752e5f576932659295b928 Author: Paul Mundt Date: Wed Dec 17 13:14:22 2008 +0900 sh: mach-microdev: Split out the fdc37c93xapm initialization code. This makes the microdev code a bit more readable, and moves the setup for the SuperIO out on its own. Signed-off-by: Paul Mundt commit 43eeb0fb9f4e2aaefc4ae9dc964308ce8f55998b Author: Paul Mundt Date: Wed Dec 17 12:54:09 2008 +0900 sh: mach-sh03: Use __set_io_port_base(), kill off special ioport_map(). This also fixes up a long-standing bug for this platform where the PIO base was set to a register offset, rather than the actual PIO offset itself. Signed-off-by: Paul Mundt commit 8db806ec80ce80605005d1d558add716152a1134 Author: Paul Mundt Date: Wed Dec 17 12:48:41 2008 +0900 sh: mach-sh03: Move off of cf_enabler to pata_platform, as per landisk. This gets rid of the cf enabler use on mach-sh03 and switches to use pata_platform with the proper address directly. cf_enabler is subsequently disabled for mach-sh03. Signed-off-by: Paul Mundt commit 98a955da8525a4218c8186fba5a6b949f563bbea Author: Paul Mundt Date: Wed Dec 17 12:42:20 2008 +0900 sh: board-shmin: Convert shmin to use __set_io_port_base(). Drop the special mv_ioport_map() implementation, as this can simply use __set_io_port_base() directly. Signed-off-by: Paul Mundt commit 2125a46083dc5a9aa321c243e322638a9338cd11 Author: Paul Mundt Date: Wed Dec 17 12:31:32 2008 +0900 sh: Kill off dead mv_init_pci() from machvec. Signed-off-by: Paul Mundt commit 43f8f9b95b65dc05368cd82268895b9508b17d50 Author: Paul Mundt Date: Wed Dec 17 12:20:15 2008 +0900 sh: Simplify kernel_thread_helper() for sh32. This can use the same implementation as sh64, the generated assembly is the same between the new and old version, so there is not much point in leaving it open coded in inline assembly. This is preparatory work for future consolidation of the _32/_64 variants. Signed-off-by: Paul Mundt commit 7b80fb32b39a51ce3e1afa051f5a616eb8ecbed3 Author: Paul Mundt Date: Wed Dec 17 12:19:30 2008 +0900 sh: Kill off mv_heartbeat() from the machvec. Nothing is using this any more, so get rid of it before anyone gets the bright idea to start using it again. Signed-off-by: Paul Mundt commit b94ea27570e4ae87942e2f2ae386d4007ef7ac58 Author: Paul Mundt Date: Wed Dec 17 12:17:20 2008 +0900 sh: Kill off the cayman and microdev special heartbeat code. These can use the generic code instead. Signed-off-by: Paul Mundt commit ca0c14e447a399eb90a1c9a4357560c2a29ef499 Author: Paul Mundt Date: Wed Dec 17 11:47:59 2008 +0900 sh: Kill off sh_bios_in_gdb_mode(). With the reworked kgdb support, we always detach and reinitialize the stub. This was mostly a feature for handoffs between sh-ipl+g and the kgdb stub, but virtually no sh-ipl+g versions ever had this working right in the first place. Given that the sh-ipl+g stubs in general use today don't even support the GDB stub, and we have already killed off the special casing in the sh-sci serial driver, kill off this now unused symbol too. Signed-off-by: Paul Mundt commit a9df1ed92fc46cb7c9a9c6b74dbd8bbdc41f69ce Author: Paul Mundt Date: Wed Dec 17 11:39:33 2008 +0900 sh: export sh_bios_get_node_addr() symbol for stnic module. Signed-off-by: Paul Mundt commit 8e32018b0428038b492dad5b19e80bf7d6dc002d Author: Paul Mundt Date: Wed Dec 17 11:37:51 2008 +0900 sh: Run sh_bios through a long overdue Lindent. Signed-off-by: Paul Mundt commit d5701647f1aaaea5da20023976d86af79ab84707 Author: Paul Mundt Date: Tue Dec 16 20:07:27 2008 +0900 serial: sh-sci: Generalize port pin initialization. Signed-off-by: Paul Mundt commit d830fa4584a4015989b9b396a80779f28f277baa Author: Paul Mundt Date: Tue Dec 16 19:29:38 2008 +0900 serial: sh-sci: Tidy up fifo overrun error handling. Signed-off-by: Paul Mundt commit 762c69e3cad67a5cc5a01ba74e0b552ae4615258 Author: Paul Mundt Date: Tue Dec 16 18:55:26 2008 +0900 serial: sh-sci: pr_debug() -> dev_dbg() conversion. Signed-off-by: Paul Mundt commit 027e68724935599417faa7dd4123c117d18e2483 Author: Paul Mundt Date: Tue Dec 16 18:36:16 2008 +0900 serial: sh-sci: Fix up the cpufreq notifier to use the proper port clock. Signed-off-by: Paul Mundt commit d9341b51f28a5eb4ce231f4a3bbfa02aaecae626 Author: Paul Mundt Date: Tue Dec 16 09:36:25 2008 +0900 sh: oprofile: Convert op_model_sh7750 to new common interface. Signed-off-by: Paul Mundt commit 40a8b421b6a85f7786bf3007d316cd799efe8ea1 Author: Dave Peverley Date: Tue Dec 16 09:35:40 2008 +0900 sh: oprofile: Backtrace support. This patch improves the oprofile support on sh and adds backtrace support. Signed-off-by: Dave Peverley Signed-off-by: Chris Smith Signed-off-by: Paul Mundt commit 60a51fbe5dd2baef0f35bcf79f25ac1ee239a660 Author: Paul Mundt Date: Tue Dec 16 09:33:53 2008 +0900 sh: oprofile: Refactor common setup code for multiple driver support. This re-implements the old op_model_null code in to something more generic, where multiple drivers, backtrace, etc. can all be interfaced. Based largely on arch/mips/oprofile/common.c. Signed-off-by: Paul Mundt commit 70fe224743c11b57f9b63326313988fdcceb54df Author: Matt Fleming Date: Tue Dec 16 09:13:05 2008 +0900 sh: Enable GENERIC_HARDIRQS_NO__DO_IRQ for all SuperH machines After the recent changes to switch SuperH board support over to irq_chip it is now possible to set GENERIC_HARDIRQS_NO__DO_IRQ for all SuperH boards. Signed-off-by: Matt Fleming Signed-off-by: Paul Mundt commit 1a94757fae2ac2a9971694b55972f65a396a2f31 Author: Matt Fleming Date: Sun Dec 14 12:02:27 2008 +0000 sh: Convert Cayman boards from hw_interrupt_type to irq_chip I've been unable to even compile-test this change because I don't have an sh5 toolchain. All uses of hw_interrupt_type for SuperH boards have now been converted to use irq_chip. Signed-off-by: Matt Fleming Signed-off-by: Paul Mundt commit e85a47744bbdfbcc65c94b2af67499f861c6fa42 Author: Matt Fleming Date: Sun Dec 14 12:02:26 2008 +0000 sh: Convert Dreamcast support from hw_interrupt_type to irq_chip Switch the dreamcast IRQ code over to the irq_chip way of doing things, so that we can set GENERIC_HARDIRQS_NO__DO_IRQ for all SuperH boards. Also, whilst I'm here change some things to make checkpatch.pl happy: - Indent with tabs, not with spaces - Include , not - Fix the multi-line comment style - Fix some typos in the comments Tested-by: Adrian McMenamin Signed-off-by: Matt Fleming Signed-off-by: Paul Mundt commit bd0a22d21f26864792a0e49c20f5bd25d6c335e4 Author: Matt Fleming Date: Sun Dec 14 12:02:25 2008 +0000 sh: Convert SystemH board support from hw_interrupt_type to irq_chip ... as part of the hw_interrupt_type to irq_chip crusade. Signed-off-by: Matt Fleming Signed-off-by: Paul Mundt commit be729fd8900f0026238539de46d867d232d1e913 Author: Matt Fleming Date: Sun Dec 14 12:02:24 2008 +0000 sh: Convert Microdev boards from hw_interrupt_type to irq_chip This is part of the SH move to irq_chip. Signed-off-by: Matt Fleming Signed-off-by: Paul Mundt commit 180ae2037f5bc33b0597ddbb76d36b08a74a238a Author: Paul Mundt Date: Fri Dec 12 16:53:14 2008 +0900 sh: Provide sdivsi3/udivsi3/udivdi3 for sh64, kill off libgcc linking. This moves in the necessary libgcc bits and kills off the libgcc linking for sh64 kernels as well. Signed-off-by: Paul Mundt commit 209aa4fdc39eacc145a7f9c32a4b9ffcc68912c6 Author: Paul Mundt Date: Fri Dec 12 16:35:40 2008 +0900 fb: SH-5 uses __raw I/O accessors now also, drop the special casing. Signed-off-by: Paul Mundt commit 4466b20cfcfa718ff515b9e3886749cc025e2005 Author: Paul Mundt Date: Fri Dec 12 16:34:44 2008 +0900 sh: Add SH-5 optimized memcpy()/memset()/strcpy()/strlen(). Adopted from the uClibc optimized string versions. Signed-off-by: Paul Mundt commit 776d6c298aad42c2b8f191fa9ad826075e4d588c Author: Paul Mundt Date: Thu Dec 11 19:15:14 2008 +0900 sh: Kill off remaining CONFIG_SH_KGDB bits. Now that we use the generic stub, kill off all of the left over references. Signed-off-by: Paul Mundt commit 07d2a1a1cd8d609a4bc320a492670de57ec6bde1 Author: Paul Mundt Date: Thu Dec 11 19:06:43 2008 +0900 serial: sh-sci: Implement CONSOLE_POLL support and kill off old kgdb console. Signed-off-by: Paul Mundt commit ab6e570ba33dbee18c2520d386e0f367a9b573c3 Author: Paul Mundt Date: Thu Dec 11 18:46:46 2008 +0900 sh: Generic kgdb stub support. This migrates from the old bitrotted kgdb stub implementation and moves to the generic stub. In the process support for SH-2/SH-2A is also added, which the old stub never provided. Signed-off-by: Paul Mundt commit d7b01f78a3ae6a3cc21a16a1a3d377adc2227537 Author: Paul Mundt Date: Wed Dec 10 20:17:15 2008 +0900 sh: Enable HAVE_ARCH_TRACEHOOK for all SH, now that SH-5 supports it too. Signed-off-by: Paul Mundt commit dd76279b47dce2c0bd7c54997938ec4cb9f16884 Author: Paul Mundt Date: Wed Dec 10 20:14:15 2008 +0900 sh: Provide linux/regset.h interface for SH-5. Plugs in general and FPU regsets. Signed-off-by: Paul Mundt commit 94e2fb3d3e1f4cb6bad2b13c572c4c99ad734a37 Author: Paul Mundt Date: Wed Dec 10 19:46:18 2008 +0900 sh: Provide asm/syscall.h for SH-5. This provides the asm/syscall.h implementation for sh64 parts. Signed-off-by: Paul Mundt commit 6ac034375fe8b4341137657adf5e6ff0dcb5a99f Author: Paul Mundt Date: Wed Dec 10 19:26:44 2008 +0900 sh: Handle cases where setup{_rt,}_frame() fail on SH-5 signal delivery. Presently these cases are not handled properly due to the return value not being passed back. This needs to be correct to get proper behaviour out of things like the tracehook signal notifier, amongst others. Signed-off-by: Paul Mundt commit f15b2dc02fef0c53aa5ffa3c4617e184f057d402 Author: Paul Mundt Date: Wed Dec 10 19:18:46 2008 +0900 sh: Fix up syscall_get_nr() comment in syscall_32.h. Residual copy-and-paste damage, fix it up. Signed-off-by: Paul Mundt commit 35724a0aed6e62bdad640e8a1b8498329708226f Author: Paul Mundt Date: Wed Dec 10 18:17:19 2008 +0900 sh: Fix up the cpu_asid() return value on nommu. This ought to be unsigned long, rather than defaulting to int. Signed-off-by: Paul Mundt commit a99d6fde69dd9c73ac0b4e42a77ed1ebc714e56a Author: Paul Mundt Date: Wed Dec 10 18:06:36 2008 +0900 sh: Convert sh64 /proc/asids to debugfs and generic sh. This converts the sh64 /proc/asids entry to debugfs and enables it for all SH parts that have debugfs enabled. On MMU systems this can be used to determine which processes are using which ASIDs which in turn can be used for finer grained cache tag analysis. Signed-off-by: Paul Mundt commit 4d1f3bbec49a080cae753aaa44dc1fc7277b3e50 Author: Paul Mundt Date: Wed Dec 10 17:16:09 2008 +0900 sh: Kill off sh64's unused alloc/free_task_struct() definitions. These were left over from some time ago, sh64 never got around to defining __HAVE_ARCH_TASK_STRUCT_ALLOCATOR during the conversion, and it has no need to. Kill these off and use the generic versions instead. Signed-off-by: Paul Mundt commit 4eec8834f085e5eaf70e64849f879068256c07c5 Author: Paul Mundt Date: Wed Dec 10 17:09:36 2008 +0900 sh: mach-migor: Kill off unused Migo-R machvec. This kills off the special Migo-R machvec, as nothing is using it. By default this will switch to using the generic machvec, which provides the same functionality. This saves us a bit of space in the machvec section. Signed-off-by: Paul Mundt commit 4545bfa00a010b619a596b3893be820935c01bb7 Author: Magnus Damm Date: Wed Dec 10 17:02:13 2008 +0900 sh: add ov772x reset delay on Migo-R Add reset delay for the ov772x device on Migo-R. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit a6bc25abc89a72a8533dbb912a4116a8349b9d8c Author: Paul Mundt Date: Wed Dec 10 13:42:14 2008 +0900 sh: Drop the special qemu defconfig. QEMU can now use rts7751r2dplus_defconfig directly, there is no more need for a neutered defconfig. Signed-off-by: Paul Mundt commit bd40e8132336fbc3f2857f24720e11b6c1c9ac26 Author: Aoi Shinkai Date: Wed Dec 10 13:30:28 2008 +0900 sh: Delete unnecessary mov in the interrupt exception entry point. The INTEVT read at interrupt exception entry is uneccessary, as the read is deferred until we are ready to enter do_IRQ(). The kgdb nmi path still requires it, so move it there. Signed-off-by: Aoi Shinkai Signed-off-by: Paul Mundt commit 06be3724548a443a99d703ff79f43d6f1e2975f0 Author: Paul Mundt Date: Mon Dec 8 17:01:40 2008 +0900 sh: Fix an off-by-1 check in __mutex_fastpath_unlock(). Signed-off-by: Paul Mundt commit a47925ffd1b1b22ee004de36e2c8b811910616ba Author: Paul Mundt Date: Mon Dec 8 14:53:28 2008 +0900 sh: Update rsk701_defconfig to reflect mach-rsk changes. Signed-off-by: Paul Mundt commit ff15b9050677b9d63959cbca4c9abe36a05c72c9 Author: Paul Mundt Date: Mon Dec 8 14:46:55 2008 +0900 sh: Enable leds-gpio in rsk7203 defconfig. Signed-off-by: Paul Mundt commit ea0aac1e1327476d2f6a38f08145281237cf1b03 Author: Paul Mundt Date: Mon Dec 8 14:32:03 2008 +0900 sh: Consolidate rsk7203/7201 in to a new mach-rsk. RSK+ platforms have quite a few characteristics in common, so roll them together in to a shiny new RSK mach-type. Signed-off-by: Paul Mundt commit b5cfeac990cc164a3d3422aab88ac5b138fa822d Author: Paul Mundt Date: Mon Dec 8 12:02:28 2008 +0900 sh: Provide ftrace_make_call()/ftrace_make_nop(). Signed-off-by: Paul Mundt commit 4bc3e7192cf9a47d9864c4e8259859be55a480b3 Author: Paul Mundt Date: Mon Dec 8 11:49:19 2008 +0900 sh: Disable -Werror for arch/sh/oprofile/. drivers/oprofile/ objects have proven to be problematic in this regard, so simply disable -Werror for now. Signed-off-by: Paul Mundt commit 3b041227f7ef7c7e97f205c68c6069c0c62e5204 Author: Takashi YOSHII Date: Mon Dec 8 11:33:06 2008 +0900 sh: Add plain udivsi3 (not _i4*) for gcc-4.1 and lower. We chan't share code for udivsi3 and udivsi3_i4, because they have a different clobber list. Copy udivsi3 from gcc-4.1.2. As shown in arch/sh/lib/udivsi3.S (and -Os.S), .global __udivsi3_i4i .global __udivsi3_i4 .global __udivsi3 __udivsi3_i4i: ... Three symbols are sharing one code, which is actually udivsi3_i4i. But, this results unwanted code with gcc 4.1. In gcc, these three are treated as pseudo instructions that have their own clobber list apart from the usual calling convention. According to sh's machine description. The clobber list is as follows: - udivsi3_i4i : t,r1,pr,mach,macl - udivsi3_i4 : t,r0,r1,r4,r5,pr,dr0,dr2,dr4 - udivsi3 : t,r4,pr The caller of udivsi3 will be left with a broken r1 and mac*. gcc-4.1.x and older(at least to 3.4) generate udivsi3. ST's gcc-4.1.1 seems to be OK because it has _i4i. Signed-off-by: Takashi YOSHII Signed-off-by: Paul Mundt commit 1fdae0e59a3fc9e391d2422ddcfbdbdec1e8f724 Author: Nick Andrew Date: Fri Dec 5 14:07:57 2008 +1100 Fix incorrect use of loose in c-checksum.c Fix incorrect use of loose in c-checksum.c It should be 'lose', not 'loose'. Signed-off-by: Nick Andrew Signed-off-by: Paul Mundt commit 77ba93a7ac5fb0d9338bffbf97c787b8efe00806 Author: Paul Mundt Date: Mon Dec 8 11:25:50 2008 +0900 sh: Fix up the SH-4A mutex fastpath semantics. This fixes up the __mutex_fastpath_xxx() routines to match the semantics noted in the comment. Previously these were looping rather than doing a single-pass, which is counter-intuitive, as the slow path takes care of the looping for us in the event of contention. Signed-off-by: Paul Mundt commit c6f17cb2272121475c87592560534b157b17544e Author: Magnus Damm Date: Thu Dec 4 22:45:20 2008 +0900 sh: allow CONFIG_CPU_IDLE Allow users to select CONFIG_CPU_IDLE regardless of processor type or board. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit af998a9a0ae3291e86ddcae8e196a1cbf82c2457 Author: Magnus Damm Date: Thu Dec 4 22:45:12 2008 +0900 sh: allow CONFIG_PM Allow users to select CONFIG_PM regardless of processor type or board. Suspend and hibernation are only allowed on supported platforms. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 3e51762759db9e26c6c3e4e1010d80a50c62ca03 Author: Magnus Damm Date: Thu Dec 4 22:45:03 2008 +0900 sh: move the hp6xx pm code Move the not-so-generic pm code from arch/sh/kernel/pm.c to the platform directory together with the rest of the hp6xx pm code. This is done to let non-hp6xx platforms enable CONFIG_PM. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 04645185d06e8b0c92f6f1f9d76ede45637afc09 Author: Magnus Damm Date: Thu Dec 4 18:00:39 2008 +0900 sh: update se7343 defconfig Update the se7343 defconfig with: - use 33MHz PCLK - increase max number of SCIFs - add serial console configuration to compiled-in kernel command line - add 8250 serial port support - add sh-mobile-i2c driver - add uio driver to export VEU and VPU - add usb support and isp1161 host controller - add dm9601 ethernet-over-usb support - remove smc91x support Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 21c601bb2ec79be5c52a99bc6f4b513aff4fa236 Author: Magnus Damm Date: Thu Dec 4 18:00:30 2008 +0900 sh: remove ioport cruft and smc91x from se7343 Remove out-of-date se7343 ioport code including some old support for unknown-ne2000-pcmcia-card, cf-over-pcmcia and a mysterical smc91x that once must have been on a special daughterboard. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 5e5aacb0de70fa80e8b1a2b803ae9e2ad40b8e52 Author: Magnus Damm Date: Thu Dec 4 18:00:22 2008 +0900 sh: add isp1161 usb host device to se7343 Add isp1161 platform data to get usb host working on se7343. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 6aacba72dbdadc1445244e366ecf0263a160409e Author: Magnus Damm Date: Thu Dec 4 18:00:11 2008 +0900 sh: add st16c2550 devices to se7343 Add 8250 platform data to setup the ST16C2550C chip on se7343. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 5727003b5d23eb852c057d25459bba27cbf754c3 Author: Magnus Damm Date: Thu Dec 4 18:00:02 2008 +0900 sh: fix number of interrupts on se7343 Fix to make sure that the on-board interrupt sources are included in the interrupt count on se7343. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 551ea2b40ecf75e0035406fe75ba995233737e76 Author: Magnus Damm Date: Thu Dec 4 17:59:54 2008 +0900 sh: sh7343 scif configuration update Fix interrupt values for the first sh7343 SCIF port and update the configuration to include the remaining 3 ones. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 0c0daec7ca4f6a67daeafc4343bb453a4a246dbd Author: Magnus Damm Date: Mon Dec 1 15:40:33 2008 +0900 sh: propagate r_clk Make sure the 32 KHz r_clk rate gets propagated correctly. Without this fix the clocks for RTC, CMT, KEYSC and RWDT are stuck at 0 Hz. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 6feb348783767e3f38d7612e6551ee8b580ac4e9 Author: Peter Griffin Date: Fri Nov 28 22:56:45 2008 +0900 sh: RSK+ 7201 board support. This patch adds support for the RTE RSK+ 7201 board. Signed-off-by: Peter Griffin Signed-off-by: Paul Mundt commit 2825999e8a9bd7ab7e25a7e7475c7cdd10371a13 Author: Peter Griffin Date: Fri Nov 28 22:48:20 2008 +0900 sh: Add support for SH7201 CPU subtype. This patch adds support for the SH-2A FPU based SH7201 processor subtype. Signed-off-by: Peter Griffin Signed-off-by: Paul Mundt commit 135210b378d26f9a9a0c901d0089522c06b5807a Author: Matt Fleming Date: Fri Nov 28 08:58:30 2008 +0000 sh: Switch HD64461 from hw_interrupt_type to irq_chip Use struct irq_chip for the interrupt handler for the HD64461. Also convert some in{b,w} and out{b,w} calls to the equivalent __raw_* calls. Include and not to stop checkpatch.pl complaining. This change should now allow machines with HD64461 to define GENERIC_HARDIRQS_NO__DO_IRQ. Acked-by: Kristoffer Ericson Signed-off-by: Matt Fleming Signed-off-by: Paul Mundt commit 331ff103c7737294c8ecd7921564dae07b9e4632 Author: Yoshihiro Shimoda Date: Thu Nov 27 18:57:35 2008 +0900 sh: pci-sh7780: fix pci memory address mask Fix the problem that cannot work a PCI device when system memory size is 256Mbyte in 29bit address mode. Signed-off-by: Yoshihiro Shimoda Signed-off-by: Paul Mundt commit 22f131aa8de7a534339bf7051680234462f2e877 Author: Paul Mundt Date: Thu Nov 27 11:04:43 2008 +0900 sh: Provide a dyn_arch_ftrace struct definition. Needed for dynamic ftrace API changes. Signed-off-by: Paul Mundt commit 1da1180c6e28cf21be356e2701978727558fa198 Author: Paul Mundt Date: Wed Nov 26 15:52:44 2008 +0900 sh: Split out the idle loop for reuse between _32/_64 variants. Signed-off-by: Paul Mundt commit eb67cf14ae5c21609c200859d6f3eba71c591569 Author: Paul Mundt Date: Wed Nov 26 15:47:44 2008 +0900 sh: Consolidate cpu_relax()/cpu_sleep() definitions across _32/_64. Signed-off-by: Paul Mundt commit f74c034d52d0f908d5b929423a680962a2586199 Author: Paul Mundt Date: Wed Nov 26 15:22:50 2008 +0900 sh: do not latency trace idle. Description snipped from Steven Rostedt's PPC patch: When idle is called, interrupts are blocked, but the idle function will still wake up on an interrupt. The problem is that the interrupt disabled latency tracer will take this call to idle as a latency. This patch disables the latency tracing when going into idle. Signed-off-by: Paul Mundt commit 75fd24c1073adcd1e8ea43048d946bbfa34dfc64 Author: Paul Mundt Date: Wed Nov 26 15:20:35 2008 +0900 sh: Tidy up backtrace formatting with kallsyms disabled. Signed-off-by: Paul Mundt commit 9cfc9a9b6fff9ea7a19814b4472b3cb18b7bbdcc Author: Paul Mundt Date: Wed Nov 26 14:31:03 2008 +0900 sh: Add a simple code dumper for SUPERH32 show_regs(). This implements a simple show_code() that is in turn plugged in to show_regs() to provide minimal code dumping at the end of the trace. Built on top of a simple instruction disassembler derived from the binutils opcode table. Signed-off-by: Paul Mundt commit edfd6da0405520b147ab1473ad183a5b32be7082 Author: Paul Mundt Date: Wed Nov 26 13:06:04 2008 +0900 sh: Add a few more branch types to the branch emulator. This plugs in some extra encodings for matching more bsr/bsrf/jsr branches. Signed-off-by: Paul Mundt commit 5dd614761f05f56b93c94541aa92e6449920516c Author: Paul Mundt Date: Wed Nov 26 04:21:36 2008 +0900 sh: Re-add support for best fit ISA tuning if none is available. This was removed in the libgcc integration, but there are still some compilers that need this. We also relax the rules on the ISA tuning in the cases where there are no matches for the CPU tuning and adopt the -any default, which matches the intent of the isa-y target list. This compensates for mismatches where binutils supports a wide array of targets whilst the compiler is much more restricted. Signed-off-by: Paul Mundt commit 624c6a6750c502981d92de4579647fe2549451dd Author: Paul Mundt Date: Wed Nov 26 03:44:07 2008 +0900 sh: More movmem alias symbol exports for older compilers. Signed-off-by: Paul Mundt commit 95b781c239f53b4c7ecaf2989404ec6379b2409b Author: Paul Mundt Date: Wed Nov 26 00:29:58 2008 +0900 sh: Provide optimized unaligned loads on SH-4A. This adds support for unaligned loads on SH-4A, using the SH-4A's neutered movua.l instruction. As movua.l is r0-inspired, stores are still handled through the packed struct. Based on asm-generic/unaligned.h by Harvey Harrison. Signed-off-by: Paul Mundt commit 716777db7270255f1f7210fd87a7188b08c9a267 Author: Magnus Damm Date: Tue Nov 25 21:57:29 2008 +0900 sh: P4 ioremap pass-through This patch adds a pass-through case when ioremapping P4 addresses. Addresses passed to ioremap() should be physical addresses, so the best option is usually to convert the virtual address to a physical address before calling ioremap. This will give you a virtual address in P2 which matches the physical address and this works well for most internal hardware blocks on the SuperH architecture. However, some hardware blocks must be accessed through P4. Converting the P4 address to a physical and then back to a P2 does not work. One example of this is the sh7722 TMU block, it must be accessed through P4. Without this patch P4 addresses will be mapped using PTEs which requires the page allocator to be up and running. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 0c9122323acb0c3410dfbd219cb47f4c2e9305e3 Author: Michael Trimarchi Date: Tue Nov 25 21:37:14 2008 +0900 sh: Add SH-4A optimized fastpath mutex implementation. Add fast mutex path implementation for the SH4A architecture Signed-off-by: Michael Trimarchi Signed-off-by: Paul Mundt commit 5c72f303a2b7862dbba79f4176ddc922a440b567 Author: Nobuhiro Iwamatsu Date: Fri Nov 21 14:35:29 2008 +0900 sh: sh7760fb: Add support SH7720/SH7721 of Renesas SH7720 and 7721 has IP of Frame Buffer same as SH7760. This driver can support these. Signed-off-by: Nobuhiro Iwamatsu Signed-off-by: Paul Mundt commit 679dc3c92ca7894c3df70ee3333ff9878e7d90b9 Author: Nobuhiro Iwamatsu Date: Fri Nov 21 14:34:25 2008 +0900 sh: sh7760fb: Fix color pallette setting The setting of the color palette was wrong, fixed it. And removed fb_setcmap, and added fb_setcolreg function. Signed-off-by: Nobuhiro Iwamatsu Signed-off-by: Paul Mundt commit f617682e9cabd5616dc2fe53c67762790eeb14d3 Author: Steve Glendinning Date: Sun Nov 23 15:00:31 2008 +0000 sh: add SH DMAC burst mode constant The SH7709 datasheet defines bit 5 as set for burst mode, clear for cycle-steal mode. Signed-off-by: Steve Glendinning Signed-off-by: Paul Mundt commit c2c5883b3fce61388eb02ca328072400eb54769c Author: Steve Glendinning Date: Sun Nov 23 14:27:22 2008 +0000 sh: fix DMAOR register access on SH7709 sh7709 hardware manual says DMAOR is 16 bits long on this platform. Tested and working with a modified smsc911x ethernet driver (sh-dma support patch for this driver is coming soon). Signed-off-by: Steve Glendinning Signed-off-by: Paul Mundt commit 8085ac753164f45fd23603e7cad85a4c985cbf75 Author: Steve Glendinning Date: Sun Nov 23 14:27:21 2008 +0000 sh: Add platform-specific constants for SH7709 I'm using these constants in support of an in-house development board, and thought they may be useful to other users of SH7709. Signed-off-by: Steve Glendinning Signed-off-by: Paul Mundt commit 0d5bbe0bc2583c4dc06ea00adccf07c3acd1481d Author: Paul Mundt Date: Tue Nov 25 21:22:02 2008 +0900 sh: Provide optimized non-atomic bitops for SH-2A. This ties in the new SH-2A 32-bit non-atomic bitops. Signed-off-by: Paul Mundt commit 8bcc5c1c332af97ba731f99fda780a47911e476f Author: Paul Mundt Date: Thu Nov 20 15:28:47 2008 +0900 sh: Add -m4al tuning for SH4AL-DSP. Signed-off-by: Paul Mundt commit 9ef100287afa8e134de50258b8382cbc9d20f954 Author: Paul Mundt Date: Thu Nov 20 15:26:35 2008 +0900 sh: Add exports for __udivsi3/__sdivsi3 and the _i4 versions. Needed by older compilers. Signed-off-by: Paul Mundt commit 16b529d1d78060254d5bc735390915ca5ccf13a1 Author: Paul Mundt Date: Thu Nov 20 15:25:22 2008 +0900 sh: Convert to generic bitops for IRQ-toggling implementation. Signed-off-by: Paul Mundt commit 709420dd4e75083ee7920e61c2d0bcc3db9b7405 Author: Paul Mundt Date: Tue Nov 18 17:35:45 2008 +0900 sh: Specify sane default image targets for the SH-2 platforms. Signed-off-by: Paul Mundt commit 1aad54a99b6ce316c851ba99b2efe41998cfd37d Author: Paul Mundt Date: Tue Nov 18 17:33:48 2008 +0900 sh: Migrate necessary libgcc bits in to arch/sh/lib for SUPERH32. This moves in the necessary libgcc bits for SUPERH32 and drops the libgcc linking for the regular targets. This in turn allows us to rip out quite a few hacks both in sh_ksyms_32 and arch/sh/Makefile. Signed-off-by: Paul Mundt commit e9bf51e5ccc7703226c79888603e157066213700 Author: Paul Mundt Date: Tue Nov 18 14:22:39 2008 +0900 sh: __udivdi3 -> do_div() in softfloat lib. Inhibit the generation of __udivdi3 for the softfloat lib, use do_div() outright. Signed-off-by: Paul Mundt commit 00e825c6b99b39f12751ea45d38bb4d900de70f4 Author: Paul Mundt Date: Tue Nov 18 14:21:34 2008 +0900 sh: Fix clock framework compiler warnings. CC arch/sh/kernel/cpu/clock.o arch/sh/kernel/cpu/clock.c: In function 'clk_disable': arch/sh/kernel/cpu/clock.c:156: warning: 'return' with a value, in function returning void Introduced by ("sh: enable and disable clocks recursively"). Signed-off-by: Paul Mundt commit d6435102d4ca3b5655c0105abe924abec17ffeb8 Author: Paul Mundt Date: Tue Nov 18 12:40:39 2008 +0900 usb: Fix up sh_mobile usbf clock framework warnings. drivers/usb/gadget/m66592-udc.c: In function 'm66592_probe': drivers/usb/gadget/m66592-udc.c:1672: warning: label 'clean_up2' defined but not used drivers/usb/host/r8a66597-hcd.c: In function 'r8a66597_probe': drivers/usb/host/r8a66597-hcd.c:2401: warning: label 'clean_up2' defined but not used Added by commit 985fc7c81c7852f2e104c71cbe913ace683c9e6a ("sh: sh_mobile usbf clock framework support"). Reported-by: Stephen Rothwell Signed-off-by: Paul Mundt commit e7c98dc76d5823444059205e0c7aca49743679f3 Author: Michael Trimarchi Date: Thu Nov 13 18:18:35 2008 +0900 serial: sh-sci: Codestyle cleanup patch. Trivial coding style cleanups. Signed-off-by: Michael Trimarchi Signed-off-by: Paul Mundt commit af505b1eab55445e832bebbe5686f5bd22f1b717 Author: Paul Mundt Date: Thu Nov 13 12:20:26 2008 +0900 media: sh_mobile_ceu_camera: Add HAVE_CLK dependency. Signed-off-by: Paul Mundt commit fad57feba77d2e5b183e068cb6b90693e4567b40 Author: Matt Fleming Date: Wed Nov 12 20:11:47 2008 +0900 sh: dynamic ftrace support. First cut at dynamic ftrace support. Signed-off-by: Matt Fleming Signed-off-by: Paul Mundt commit ef6aff6884408db95ceb0f678f583536e0bd48f8 Author: Magnus Damm Date: Fri Oct 31 20:24:01 2008 +0900 sh: remove old sh_mobile mstpc clocks Remove the old sh_mobile mstpcr clocks. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit b51339fff240ff179730f8963a758147fd60f3ec Author: Magnus Damm Date: Fri Oct 31 20:23:26 2008 +0900 sh: sh_mobile lcdc clock framework support Add clock framework support to the lcdc driver and adjust the board specific code accordingly. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 765786e0aead7faf6c333176d22948c6f155fff1 Author: Magnus Damm Date: Fri Oct 31 20:22:38 2008 +0900 sh: sh_mobile usb clock framework support Add clock framework support to the usb/r8a66597 driver and adjust the cpu specific code accordingly. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit af5be79a7f8d7067588dc2863d37f7cd22e5f2de Author: Magnus Damm Date: Fri Oct 31 20:22:13 2008 +0900 sh: sh_mobile usbf clock framework support Add clock framework support to the usbf/m66592 driver and adjust the cpu specific code accordingly. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit a42b6dd69cb1c61c5f5a24061a227c22071786de Author: Magnus Damm Date: Fri Oct 31 20:21:44 2008 +0900 sh: sh_mobile ceu clock framework support Add clock framework support to the sh_mobile ceu and adjust the board specific code accordingly. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 090d951b69f29a8d5777c63570d4cd61d7efeb22 Author: Magnus Damm Date: Fri Oct 31 20:21:23 2008 +0900 sh: sh_mobile keysc clock framework support Add clock framework support to the sh_mobile keysc driver and adjust the board specific code accordingly. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit a5616bd0f19730a780c354110454ce37209f1ded Author: Magnus Damm Date: Fri Oct 31 20:20:55 2008 +0900 sh: sh_mobile i2c clock framework support Add clock framework support to the sh_mobile i2c driver and adjust the processor specific code accordingly. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit f2eb0109fb4268505b0737cfe661542eb6151907 Author: Magnus Damm Date: Fri Oct 31 20:20:23 2008 +0900 sh: sh_mobile mstpcr clocks for sh7366 Add sh7366 mstpcr bits and information about their parent clocks. The datasheet is pretty clear about the clocks on this device. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 6e88d030a1491ec0f130dc4765d06b22f7db6610 Author: Magnus Damm Date: Fri Oct 31 20:19:38 2008 +0900 sh: sh_mobile mstpcr clocks for sh7343 Add sh7343 mstpcr bits and information about their parent clocks. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit f14c017d6b2e9e97b0d5f0b33f573797dde4d4f1 Author: Magnus Damm Date: Fri Oct 31 20:16:08 2008 +0900 sh: sh_mobile mstpcr clocks for sh7723 Add sh7723 mstpcr bits and information about their parent clocks. The datasheet is pretty clear about the clocks on this device. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit ecf399bdafb83b6c0091837dd2a0612470e9c8d2 Author: Magnus Damm Date: Fri Oct 31 20:15:48 2008 +0900 sh: sh_mobile mstpcr clocks for sh7722 Add sh7722 mstpcr bits and information about their parent clocks. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 7c7e02a28b4e7212dcdcc24bbd2b137790504a84 Author: Magnus Damm Date: Fri Oct 31 20:15:07 2008 +0900 sh: new sh_mobile mstpcr clocks base code Add base code to handle new mstpcr clocks. Make sure clock rates propagate. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 1dc7b776d91ac9f016982e418e74cb14f63c5b02 Author: Magnus Damm Date: Fri Oct 31 20:14:28 2008 +0900 sh: use arch_flags for sh_mobile mstpcr clock bits Use arch_flags to keep track of register and flag number. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit d902d04f5410176bdec77bfefa032516326eb542 Author: Magnus Damm Date: Fri Oct 31 20:14:03 2008 +0900 sh: sh_mobile clock divider index fix Use divider index value instead of divider value. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit d12cfac146d2b512496bf974b83ee1210032065f Author: Magnus Damm Date: Fri Oct 31 20:13:32 2008 +0900 sh: enable and disable clocks recursively Recurse and make sure parent clocks get enabled/disabled. Signed-off-by: Magnus Damm Signed-off-by: Paul Mundt commit 4a4a9be3ebdbf17957d29e3521f328a1145f9431 Author: Paul Mundt Date: Wed Nov 12 13:17:38 2008 +0900 sh: Move arch_get_unmapped_area() in to arch/sh/mm/mmap.c. Now that arch/sh/mm/mmap.c exists, move arch_get_unmapped_area() there. Follows the ARM change. Signed-off-by: Paul Mundt commit ed2b03ed3cec2a4719d04ef208319f9de6a4258a Author: David Daney Date: Wed Dec 17 13:28:39 2008 -0800 MIPS: MIPS64R2: Fix buggy __arch_swab64 The way the code is written it was assuming dshd has the function of a hypothetical dshw instruction ... Signed-off-by: David Daney Signed-off-by: Ralf Baechle commit 08d9d1c4d44ce43856da048cb0737ef769b61e9a Author: David Daney Date: Wed Dec 17 18:19:18 2008 -0800 MIPS: Fix preprocessor warnings flaged by GCC 4.4 Signed-off-by: David Daney Signed-off-by: Ralf Baechle commit 826e08b0157c0ce8a80dfe3c0a6c5a1540dd0b1d Author: Ingo Molnar Date: Mon Dec 22 07:37:41 2008 +0100 sched: fix warning in fs/proc/base.c Stephen Rothwell reported this new (harmless) build warning on platforms that define u64 to long: fs/proc/base.c: In function 'proc_pid_schedstat': fs/proc/base.c:352: warning: format '%llu' expects type 'long long unsigned int', but argument 3 has type 'u64' asm-generic/int-l64.h platforms strike again: that file should be eliminated. Fix it by casting the parameters to long long. Reported-by: Stephen Rothwell Signed-off-by: Ingo Molnar commit d3d317092b58a6df1d31a4ca90cdb9d2bd4ebffa Author: Matt Carlson Date: Sun Dec 21 20:21:52 2008 -0800 tg3: Update version to 3.97 This patch updates the version number to 3.97. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit aa10f27d99410cff9145bf91b6efc884c7a4871c Author: Matt Carlson Date: Sun Dec 21 20:21:18 2008 -0800 tg3: tg3.h cleanups This patch cleans up the tg3 header file by removing the preprocessor definitions for standard PCI configuration space registers. The driver should be using the standard definitions when needed. The patch continues by removing redundant PHY related definitions and reorganizes some of the remaining entries. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 69fc405318967c7913e5b55cf3906250a26b49d0 Author: Matt Carlson Date: Sun Dec 21 20:19:57 2008 -0800 tg3: Remove unused cfgspc device members This patch removes the pci_bist and pci_hdr_type members from the device structure and removes the code that references them. They are not really used. The patch rounds out the changes by moving the pci_cmd member to plug a structure hole that would have been created. On 32-bit systems, this movement removes a subsequent structure hole later in the structure. On 64-bit systems though, the movement merely consolidates two holes into one larger hole. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 027455adacdc142cc018e555ce391014fa227e70 Author: Matt Carlson Date: Sun Dec 21 20:19:30 2008 -0800 tg3: Cleanup IPV6 LSO This patch attempts to make the relationship between IPV6 checksum offload and IPV6 LSO more obvious. The patch also toggles a bit needed for IPV6 LSO on 5785 and 57780 devices. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 2023276ebf074a01eb56f38ed4d04deef1deee67 Author: Matt Carlson Date: Sun Dec 21 20:18:56 2008 -0800 tg3: WOL fixes The first hunk of this patch inverts a flag that was accidentally toggled as part of commit 0a459aac9d151c2e36ec65723b9b845b24c5cbc3 ("tg3: Allow WOL for phylib controlled Broadcom phys"). The second hunk of the patch removes the call to device_may_wakeup() in the 5906 config detection path. At the point of the call, the driver shouldn't be querying for WOL capability. It should be detecting and setting it. Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 7f3ff4f63f76c2702da6041d2da5eb30fac407f6 Author: Jarek Poplawski Date: Sun Dec 21 20:14:48 2008 -0800 pkt_sched: Annotate uninitialized var in sfq_enqueue() Some gcc versions warn that ret may be used uninitialized in sfq_enqueue(). It's a false positive, so let's annotate this. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit bfb8cc31b11ccaf7cd55fd9e0f4794f82527948f Author: Don Skidmore Date: Sun Dec 21 20:11:04 2008 -0800 ixgbe: fix the display of DCB control stats in ethtool Priority flow contol statistics for Data Center Bridging (DCB) weren't included in ethtool. This patch adds them. Signed-off-by: Don Skidmore Signed-off-by: Eric W Multanen Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit f4314e815e87b4ab1c9b1115dd5853cd20ca999c Author: Don Skidmore Date: Sun Dec 21 20:10:29 2008 -0800 net: add DCNA attribute to the BCN interface for DCB Adds the Backward Congestion Notification Address (BCNA) attribute to the Backward Congestion Notification (BCN) interface for Data Center Bridging (DCB), which was missing. Receive the BCNA attribute in the ixgbe driver. The BCNA attribute is for a switch to inform the endstation about the physical port identification in order to support BCN on aggregated links. Signed-off-by: Don Skidmore Signed-off-by: Eric W Multanen Signed-off-by: Jeff Kirsher commit 1486a61ebcd2711532f8163d30babc40e11e7b40 Author: Don Skidmore Date: Sun Dec 21 20:09:50 2008 -0800 net: fix DCB setstate to return success/failure Data Center Bridging (DCB) had no way to know if setstate had failed in the driver. This patch enables dcb netlink code to handle the status for the DCB setstate interface. Likewise it allows the driver to return a failed status if MSI-X isn't enabled. Signed-off-by: Don Skidmore Signed-off-by: Eric W Multanen Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit c2da953a46b18b7515ad476c1c1686640a12e93a Merge: c94cb314503a69492bf4455dce4f6d300cff0851 9cf7f247bd0cd21e475c71a4e018bb612ef02aab Author: David S. Miller Date: Sun Dec 21 19:57:10 2008 -0800 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 commit 59f8500efb05096484a55263109acab6a6df89d5 Author: Krzysztof HaÅ‚asa Date: Mon Dec 22 02:00:17 2008 +0100 Convert ixp4xx_eth driver to use net_device_ops. Signed-off-by: Krzysztof HaÅ‚asa commit 4cb56b685617732733d4d9dffbf8c5a81d4a0c71 Author: Julia Lawall Date: Sun Dec 21 16:39:15 2008 +0100 drivers/net/wan: Remove redundant test arg is checked not to be NULL a few lines before. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; expression E; position p1,p2; @@ if (x@p1 == NULL || ...) { ... when forall return ...; } ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) ( x@p2 == NULL | x@p2 != NULL ) // another path to the test that is not through p1? @s exists@ local idexpression r.x; position r.p1,r.p2; @@ ... when != x@p1 ( x@p2 == NULL | x@p2 != NULL ) @fix depends on !s@ position r.p1,r.p2; expression x,E; statement S1,S2; @@ ( - if ((x@p2 != NULL) || ...) S1 | - if ((x@p2 == NULL) && ...) S1 | - BUG_ON(x@p2 == NULL); ) // Signed-off-by: Julia Lawall Signed-off-by: Krzysztof HaÅ‚asa commit 93bc933524d05e3b391358e24b3666599f8ec026 Author: Krzysztof HaÅ‚asa Date: Wed Nov 26 23:06:57 2008 +0100 HDLC_PPP: Fix Configure-Ack to return original options as required by the standard. Signed-off-by: Krzysztof HaÅ‚asa commit e6da96ace859dad966fe85cc9552b89f48bbc930 Author: Krzysztof HaÅ‚asa Date: Mon Dec 22 00:26:38 2008 +0100 IXP4xx: move common debugging from network drivers to QMGR module. Signed-off-by: Krzysztof HaÅ‚asa commit 9251ce959cab704eb0e4910860b06b18e7083474 Author: Krzysztof HaÅ‚asa Date: Sun Dec 21 23:52:36 2008 +0100 Update MAINTAINERS entries for IXP4xx and WAN network drivers. Signed-off-by: Krzysztof HaÅ‚asa commit f5b89e41ce7a980aa2fd8ad105626b9ed4e8d347 Author: Krzysztof HaÅ‚asa Date: Sun Dec 21 23:52:18 2008 +0100 WAN: Add IXP4xx HSS HDLC driver. Signed-off-by: Krzysztof HaÅ‚asa commit 490b77224fe66c77ab7cb48d6b77e62cb55591a0 Author: Krzysztof HaÅ‚asa Date: Sun Dec 21 00:02:34 2008 +0100 IXP4xx: Add ethtool support to Ethernet driver. Signed-off-by: Krzysztof HaÅ‚asa commit 4954936e25cb8ce99a96cac9dd9417d7b639867a Author: Krzysztof HaÅ‚asa Date: Sat Dec 20 18:57:23 2008 +0100 IXP4xx: Add PHYLIB MII ioctl to the Ethernet driver. Signed-off-by: Krzysztof HaÅ‚asa commit 2098c18d6cf65358dd1620154bdedbc8c8d36f44 Author: Krzysztof HaÅ‚asa Date: Sat Dec 20 01:53:08 2008 +0100 IXP4xx: Add PHYLIB support to Ethernet driver. Signed-off-by: Krzysztof HaÅ‚asa commit b4c7d3b07257528d3c0bfd07c5b38b48beb9b6d1 Author: Krzysztof HaÅ‚asa Date: Sat Dec 20 01:58:59 2008 +0100 IXP4xx: Make the Ethernet driver use built-in netdev stats. Signed-off-by: Krzysztof HaÅ‚asa commit 3c36a837a960ccbff05fa773a495c389fbd42f0e Author: Krzysztof HaÅ‚asa Date: Wed Nov 26 22:59:18 2008 +0100 IXP4xx: Silence section mismatch warning in Ethernet driver. Signed-off-by: Krzysztof HaÅ‚asa commit ae2754a975694a3865788e303b741d0f616bc43a Author: Krzysztof HaÅ‚asa Date: Fri May 9 02:14:09 2008 +0200 IXP4xx: clear IRQ stat in qmgr_disable_irq(). Signed-off-by: Krzysztof HaÅ‚asa commit 3edcfb2937054fb546ecf3a8883675751db16c6f Author: Krzysztof HaÅ‚asa Date: Thu May 8 23:18:31 2008 +0200 IXP4xx: check for queue being empty in qmgr_release_queue(). Signed-off-by: Krzysztof HaÅ‚asa commit bba7ebba3b17f4fe8c5907a32e16d9bd3fcf5192 Author: David Disseldorp Date: Sun Dec 21 13:56:50 2008 -0800 IB/iser: Avoid recv buffer exhaustion caused by unexpected PDUs iSCSI/iSER targets may send PDUs without a prior request from the initiator. RFC 5046 refers to these PDUs as "unexpected". NOP-In PDUs with itt=RESERVED and Asynchronous Message PDUs occupy this category. The amount of active "unexpected" PDU's an iSER target may have at any time is governed by the MaxOutstandingUnexpectedPDUs key, which is not yet supported. Currently when an iSER target sends an "unexpected" PDU, the initiators recv buffer consumed by the PDU is not replaced. If over initial_post_recv_bufs_num "unexpected" PDUs are received then the receive queue will run out of receive work requests entirely. This patch ensures recv buffers consumed by "unexpected" PDUs are replaced in the next iser_post_receive_control() call. Signed-off-by: David Disseldorp Signed-off-by: Ken Sandars Acked-by: Or Gerlitz Signed-off-by: Roland Dreier commit 139cdab0a2af6f5eaee47cc0144608e53b65279d Author: Julia Lawall Date: Sun Dec 21 13:29:13 2008 -0800 IB/ehca: Remove redundant test of vpage vpage is checked not to be NULL just after it is initialized at the beginning of each loop iteration. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; expression E; position p1,p2; @@ if (x@p1 == NULL || ...) { ... when forall return ...; } ... when != \(x=E\|x--\|x++\|--x\|++x\|x-=E\|x+=E\|x|=E\|x&=E\|&x\) ( x@p2 == NULL | x@p2 != NULL ) // another path to the test that is not through p1? @s exists@ local idexpression r.x; position r.p1,r.p2; @@ ... when != x@p1 ( x@p2 == NULL | x@p2 != NULL ) @fix depends on !s@ position r.p1,r.p2; expression x,E; statement S1,S2; @@ ( - if ((x@p2 != NULL) || ...) S1 | - if ((x@p2 == NULL) && ...) S1 | - BUG_ON(x@p2 == NULL); ) // Signed-off-by: Julia Lawall Signed-off-by: Roland Dreier commit 418441d9ebe84b205cb23eb0ab214c1f991621fe Author: Wolfram Sang Date: Sun Dec 21 02:54:32 2008 -0700 powerpc/mpc5200: fix error paths in PSC UART probe function - error cases for mapbase and irq were unbundled - mapped irq now gets disposed on error Signed-off-by: Wolfram Sang Signed-off-by: Grant Likely commit aec739e010f8163eac225f4e331ac7fbd59ac5c8 Author: Wolfram Sang Date: Sun Dec 21 02:54:32 2008 -0700 powerpc/mpc5200: add rts/cts handling in PSC UART driver Add RTS/CTS-support for the PSC of the MPC5200B. Tested with a Phytec MPC5200B-IO. Signed-off-by: Wolfram Sang Signed-off-by: Grant Likely commit b65149880d0467287fa4c7b4f19953392323f4ac Author: René Bürgel Date: Sun Dec 21 02:54:31 2008 -0700 powerpc/mpc5200: Make PSC UART driver update serial errors counters This patch adds the capability to the mpc52xx-uart to report framing errors, parity errors, breaks and overruns to userspace. These values may be requested in userspace by using the ioctl TIOCGICOUNT. Signed-off-by: René Bürgel Signed-off-by: Grant Likely commit e51f47a5c695b76905aadc2be47c7dc774f3e5af Author: Wolfram Sang Date: Sun Dec 21 02:54:30 2008 -0700 powerpc/mpc5200: Remove obsolete code from mpc5200 MDIO driver As this driver polls for a complete MDIO transaction, there is no need to enable interrupts for it. Furthermore, make both checks for freeing MDIO-bus irqs consistent. Signed-off-by: Wolfram Sang Signed-off-by: Grant Likely commit 6b61e69e7bc1cfe80ab54c6321f19061f9487ed3 Author: Tim Yamin Date: Sun Dec 21 02:54:29 2008 -0700 powerpc/mpc5200: Add MDMA/UDMA support to MPC5200 ATA driver This patch adds MDMA/UDMA support using BestComm for DMA on the MPC5200 platform. Based heavily on previous work by Freescale (Bernard Kuhn, John Rigby) and Domen Puncer. With this patch, a SanDisk Extreme IV CF card gets read speeds of approximately 26.70 MB/sec. Signed-off-by: Tim Yamin Signed-off-by: Grant Likely commit aaab5e83c2c25d94f7409bdc947a5cc383514e15 Author: Grant Likely Date: Sun Dec 21 02:54:28 2008 -0700 powerpc/mpc5200: Disable bestcomm prefetching when ATA DMA enabled When ATA DMA is enabled, bestcomm prefetching does not work. This patch adds a function to disable bestcomm prefetch when the ATA Bestcomm task is initialized. Signed-off-by: Grant Likely commit e4efe3c271c5498ffe7e167eaff01514be2b9a77 Author: Tim Yamin Date: Sun Dec 21 02:54:28 2008 -0700 powerpc/mpc5200: Bestcomm fixes to ATA support 1) ata.h has dst_pa in the wrong place (needs to match what the BestComm task microcode in bcom_ata_task.c expects); fix it. 2) The BestComm ATA task priority was changed to maximum in bestcomm_priv.h; this fixes a deadlock issue experienced with heavy DMA occurring on both the ATA and Ethernet BestComm tasks, e.g. when downloading a large file over a LAN to disk. Signed-off-by: Tim Yamin Signed-off-by: Grant Likely commit 622882455aa718cfbd6785cc5fbc479f1d976095 Author: Grant Likely Date: Sun Dec 21 02:54:27 2008 -0700 powerpc/mpc5200: Bugfix on handling variable sized buffer descriptors The buffer descriptors for the ATA BestComm task are larger than the current definition for bcom_bd. This causes problems because the various bcom_... functions dereference the buffer descriptor pointer by using the array operator which doesn't work when the buffer descriptors are a different size. This patch adds the bcom_get_bd() function which uses the value in bcom_task.bd_size to calculate the offset into the BD table. This patch also changes the definition of bcom_bd to specify a data size of 0 instead of 1 so that it will never work if anyone attempts to dereference the bd list as an array (as opposed to something that might work even though it is wrong). Finally, this patch moves the definition of bcom_bd up in the file to eliminate a forward declaration. Based on patch originally written by Tim Yamin. Signed-off-by: Tim Yamin Signed-off-by: Grant Likely commit dd952cbb3dae9ea2dc47cc902b796e1e2bf806f0 Author: Grant Likely Date: Sun Dec 21 02:54:27 2008 -0700 powerpc/mpc5200: Make internal 5200 PIC the default interrupt controller The MPC5200 internal interrupt controller setup function needs to set the default interrupt controller when it is called. Without this irq_create_of_mapping() cannot be called without first determining the pointer to the irq controller (ie. call with controller = NULL). Reported-by: Steven Cavanagh Signed-off-by: Grant Likely commit bcb73f5611c1946db768a1c219d205b3bf90f4a5 Author: Grant Likely Date: Sun Dec 21 02:54:26 2008 -0700 powerpc/mpc5200: Document and tidy irq driver This patch adds documentation to the mpc5200 interrupt controller driver and cleans up some minor coding conventions. It also moves the contents of mpc52xx_pic.h into the driver proper (except for a small common bit that is moved to the common mpc52xx.h) because the information encoded there is not required by any other part of kernel code. Finally for code readability sake, the L2_OFFSET shift value is removed because the code using it resolves to a noop. Signed-off-by: Grant Likely commit a14953597b771f793ce32529d7b8b04fdedca3ef Author: Benjamin Herrenschmidt Date: Sun Dec 21 02:54:25 2008 -0700 powerpc: Fix missing 'blr' in _tlbia() Rework to MMU code dropped a much missed 'blr' instruction. Brown-Paper-Bag-Worn-By: Benjamin Herrenschmidt Signed-off-by: Grant Likely commit 3ddeb912f41801fd1968c7880d031702a396e4d0 Author: Lai Jiangshan Date: Sat Dec 20 17:15:14 2008 +0800 ftrace: enable format arguments checking Impact: broaden gcc printf format checks for ftrace_printk() format arguments checking for ftrace_printk() is __printf(1, 2), not __printf(1, 0). Signed-off-by: Lai Jiangshan Signed-off-by: Ingo Molnar commit 49e6e3f1aec2d46f5865d3ada38fe9a5d660ef5d Author: Scott Wood Date: Fri Dec 19 10:13:09 2008 +0000 powerpc/bootwrapper: Use the child-bus #address-cells to decide which range entry to use The correct #address-cells was still used for the actual translation, so the impact is only a possibility of choosing the wrong range entry or failing to find any match. Most common cases were not affected. Signed-off-by: Scott Wood Signed-off-by: Paul Mackerras commit e14d77490d3e1da833cff4fee52674c52684ce77 Author: Grant Erickson Date: Fri Dec 19 08:17:54 2008 +0000 powerpc: Const-qualify Device Node Argument to DCR Resource Extent API Add const qualifier to device_node argument for dcr_resource_{start,len} as of_get_property also const-qualifies this argument. Signed-off-by: Grant Erickson Signed-off-by: Paul Mackerras commit 9dce3ce5c55c848f00429005a46fd6246cfabfbe Author: Benjamin Herrenschmidt Date: Thu Dec 18 19:13:54 2008 +0000 powerpc/44x: 44x TLB doesn't need "Guarded" set for all pages After discussing with chip designers, it appears that it's not necessary to set G everywhere on 440 cores. The various core errata related to prefetch should be sorted out by firmware by disabling icache prefetching in CCR0. We add the workaround to the kernel however just in case oooold firmwares don't do it. This is valid for -all- 4xx core variants. Later ones hard wire the absence of prefetch but it doesn't harm to clear the bits in CCR0 (they should already be cleared anyway). We still leave G=1 on the linear mapping for now, we need to stop over-mapping RAM to be able to remove it. Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Acked-by: Josh Boyer Signed-off-by: Paul Mackerras commit 64b3d0e8122b422e879b23d42f9e0e8efbbf9744 Author: Benjamin Herrenschmidt Date: Thu Dec 18 19:13:51 2008 +0000 powerpc/mm: Rework usage of _PAGE_COHERENT/NO_CACHE/GUARDED Currently, we never set _PAGE_COHERENT in the PTEs, we just OR it in in the hash code based on some CPU feature bit. We also manipulate _PAGE_NO_CACHE and _PAGE_GUARDED by hand in all sorts of places. This changes the logic so that instead, the PTE now contains _PAGE_COHERENT for all normal RAM pages thay have I = 0 on platforms that need it. The hash code clears it if the feature bit is not set. It also adds some clean accessors to setup various valid combinations of access flags and change various bits of code to use them instead. This should help having the PTE actually containing the bit combinations that we really want. I also removed _PAGE_GUARDED from _PAGE_BASE on 44x and instead set it explicitely from the TLB miss. I will ultimately remove it completely as it appears that it might not be needed after all but in the meantime, having it in the TLB miss makes things a lot easier. Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit 77520351805cc19ba37394ae33f862ef6d3c2a23 Author: Benjamin Herrenschmidt Date: Thu Dec 18 19:13:48 2008 +0000 powerpc/mm: Runtime allocation of mmu context maps for nohash CPUs This makes the MMU context code used for CPUs with no hash table (except 603) dynamically allocate the various maps used to track the state of contexts. Only the main free map and CPU 0 stale map are allocated at boot time. Other CPU maps are allocated when those CPUs are brought up and freed if they are unplugged. This also moves the initialization of the MMU context management slightly later during the boot process, which should be fine as it's really only needed when userland if first started anyways. Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit 760ec0e02d8a13d0ed60d99f47879d4aa8ef1910 Author: Benjamin Herrenschmidt Date: Thu Dec 18 19:13:46 2008 +0000 powerpc/44x: No need to mask MSR:CE, ME or DE in _tlbil_va on 440 The handlers for Critical, Machine Check or Debug interrupts will save and restore MMUCR nowadays, thus we only need to disable normal interrupts when invalidating TLB entries. Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Acked-by: Josh Boyer Signed-off-by: Paul Mackerras commit 2a4aca1144394653269720ffbb5a325a77abd5fa Author: Benjamin Herrenschmidt Date: Thu Dec 18 19:13:42 2008 +0000 powerpc/mm: Split low level tlb invalidate for nohash processors Currently, the various forms of low level TLB invalidations are all implemented in misc_32.S for 32-bit processors, in a fairly scary mess of #ifdef's and with interesting duplication such as a whole bunch of code for FSL _tlbie and _tlbia which are no longer used. This moves things around such that _tlbie is now defined in hash_low_32.S and is only used by the 32-bit hash code, and all nohash CPUs use the various _tlbil_* forms that are now moved to a new file, tlb_nohash_low.S. I moved all the definitions for that stuff out of include/asm/tlbflush.h as they are really internal mm stuff, into mm/mmu_decl.h The code should have no functional changes. I kept some variants inline for trivial forms on things like 40x and 8xx. Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit f048aace29e007f2b642097e2da8231e0e9cce2d Author: Benjamin Herrenschmidt Date: Thu Dec 18 19:13:38 2008 +0000 powerpc/mm: Add SMP support to no-hash TLB handling This commit moves the whole no-hash TLB handling out of line into a new tlb_nohash.c file, and implements some basic SMP support using IPIs and/or broadcast tlbivax instructions. Note that I'm using local invalidations for D->I cache coherency. At worst, if another processor is trying to execute the same and has the old entry in its TLB, it will just take a fault and re-do the TLB flush locally (it won't re-do the cache flush in any case). Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit 7c03d653cd257793dc40520c94e229b5fd0578e7 Author: Benjamin Herrenschmidt Date: Thu Dec 18 19:13:32 2008 +0000 powerpc/mm: Introduce MMU features We're soon running out of CPU features and I need to add some new ones for various MMU related bits, so this patch separates the MMU features from the CPU features. I moved over the 32-bit MMU related ones, added base features for MMU type families, but didn't move over any 64-bit only feature yet. Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit 2ca8cf738907180e7fbda90f25f32b86feda609f Author: Benjamin Herrenschmidt Date: Thu Dec 18 19:13:29 2008 +0000 powerpc/mm: Rework context management for CPUs with no hash table This reworks the context management code used by 4xx,8xx and freescale BookE. It adds support for SMP by implementing a concept of stale context map to lazily flush the TLB on processors where a context may have been invalidated. This also contains the ground work for generalizing such lazy TLB flushing by just picking up a new PID and marking the old one stale. This will be implemented later. This is a first implementation that uses a global spinlock. Ideally, we should try to get at least the fast path (context ID already assigned) lockless or limited to a per context lock, but for now this will do. I tried to keep the UP case reasonably simple to avoid adding too much overhead to 8xx which does a lot of context stealing since it effectively has only 16 PIDs available. Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit 5e696617c425eb97bd943d781f3941fb1e8f0e5b Author: Benjamin Herrenschmidt Date: Thu Dec 18 19:13:24 2008 +0000 powerpc/mm: Split mmu_context handling This splits the mmu_context handling between 32-bit hash based processors, 64-bit hash based processors and everybody else. This is preliminary work for adding SMP support for BookE processors. Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit 6d2170be4561293a6aa821c773687bd3f18e8206 Author: Benjamin Herrenschmidt Date: Thu Dec 18 19:13:22 2008 +0000 powerpc/4xx: Extended DCR support v2 This adds supports to the "extended" DCR addressing via the indirect mfdcrx/mtdcrx instructions supported by some 4xx cores (440H6 and later). I enabled the feature for now only on AMCC 460 chips. Signed-off-by: Benjamin Herrenschmidt Acked-by: Josh Boyer Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit fecba96268fc48ab9b4a016356a8f2371df25e64 Author: Brian King Date: Thu Dec 18 11:13:49 2008 +0000 powerpc: Add reboot notifier to Collaborative Memory Manager When running Active Memory Sharing, pages can get marked as "loaned" with the hypervisor by the CMM driver. This state gets cleared by the system firmware when rebooting the partition. When using kexec to boot a new kernel, this state never gets cleared and the hypervisor and CMM driver can get out of sync with respect to the number of pages currently marked "loaned". Fix this by adding a reboot notifier to the CMM driver to deflate the balloon and mark all pages as active. Signed-off-by: Brian King Signed-off-by: Paul Mackerras commit 2218108e182fd8a6d9106077833ed7ad05fc8e75 Author: Brian King Date: Thu Dec 18 11:13:46 2008 +0000 powerpc: Disable Collaborative Memory Manager for kdump When running Active Memory Sharing, the Collaborative Memory Manager (CMM) may mark some pages as "loaned" with the hypervisor. Periodically, the CMM will query the hypervisor for a loan request, which is a single signed value. When kexec'ing into a kdump kernel, the CMM driver in the kdump kernel is not aware of the pages the previous kernel had marked as "loaned", so the hypervisor and the CMM driver are out of sync. This results in the CMM driver getting a negative loan request, which can then get treated as a large unsigned value and can cause kdump to hang due to the CMM driver inflating too large. Since there really is no clean way for the CMM driver in the kdump kernel to clean this up, simply disable CMM in the kdump kernel. This fixes hangs we were seeing doing kdump with AMS. Signed-off-by: Brian King Signed-off-by: Paul Mackerras commit 5d84e4bee044a740729ac172e684e743f5ad50fb Author: Stephen Rothwell Date: Tue Dec 16 20:16:49 2008 +0000 powerpc/iseries: viodasd needs to depend on CONFIG_BLOCK Otherwise you get lot of errors like these: drivers/block/viodasd.c:72: error: dereferencing pointer to incomplete type drivers/block/viodasd.c: In function 'viodasd_open': drivers/block/viodasd.c:135: error: dereferencing pointer to incomplete type drivers/block/viodasd.c: In function 'viodasd_release': drivers/block/viodasd.c:184: error: dereferencing pointer to incomplete type drivers/block/viodasd.c: In function 'viodasd_getgeo': drivers/block/viodasd.c:209: error: dereferencing pointer to incomplete type drivers/block/viodasd.c:214: error: implicit declaration of function 'get_capacity' drivers/block/viodasd.c: At top level: drivers/block/viodasd.c:222: error: variable 'viodasd_fops' has initializer but incomplete type drivers/block/viodasd.c:223: error: unknown field 'owner' specified in initializer Discovered by a randconfig build. Signed-off-by: Stephen Rothwell Acked-by: Jens Axboe Signed-off-by: Paul Mackerras commit 368c1e3249afe0e59097e7df664435ae55fb9f8d Author: Hendrik Brueckner Date: Tue Dec 16 00:09:38 2008 +0000 hvc_console: Escape magic sysrq key The ctrl-o (^O) is a common control key used by several applications, such as vim, but hvc_console uses ^O as the magic-sysrq key. This commit allows users to send ^O to applications by pressing ^O twice in succession. To implement this, this commit introduces a check if ^O is pressed again if the sysrq_pressed variable is already set. In this case, clear sysrq_pressed state and flip the ^O character to the tty. (The old behavior has always set "sysrq_pressed" if ^O has been entered, and it has not flipped the ^O character to the tty.) Signed-off-by: Hendrik Brueckner Signed-off-by: Paul Mackerras commit 532774ec7fa396da20ca724c0cf83d93ee76622f Author: Tony Breeds Date: Mon Dec 15 18:34:43 2008 +0000 powerpc: Pass a valid token to rtas_call() in phyp-dump code ibm_configure_kernel_dump is passed as the token to rtas_call() is never initialised. This sets it to something sane. Signed-off-by: Tony Breeds Acked-by: Nathan Lynch Acked-by: Manish Ahuja Signed-off-by: Paul Mackerras commit 7a2eab0d4e656341cc0f6481d722d410f0414f0b Author: Tony Breeds Date: Mon Dec 15 18:17:48 2008 +0000 powerpc: Protect against NULL pointer deref in phyp-dump code print_dump_header() will be called at least once with a NULL pointer in a normal boot sequence. If DEBUG is defined then we will dereference the pointer and crash. Add a quick fix to exit early in the NULL pointer case. Signed-off-by: Tony Breeds Acked-by: Manish Ahuja Signed-off-by: Paul Mackerras commit 8168b5400b06353293f9844976435886eb2a8ff2 Author: David Howells Date: Thu Dec 11 02:53:54 2008 +0000 powerpc: Rename struct vm_region to avoid conflict with NOMMU Rename PowerPC's struct vm_region so that I can introduce my own global version for NOMMU. It's feasible that the PowerPC version may wish to use my global one instead. The NOMMU vm_region struct defines areas of the physical memory map that are under mmap. This may include chunks of RAM or regions of memory mapped devices, such as flash. It is also used to retain copies of file content so that shareable private memory mappings of files can be made. As such, it may be compatible with what is described in the banner comment for PowerPC's vm_region struct. Signed-off-by: David Howells Signed-off-by: Paul Mackerras commit 13ba3c0092b4db272d1f643206c1b55f4fe415a6 Author: Nathan Lynch Date: Wed Dec 10 14:46:06 2008 +0000 powerpc: Convert sysfs cache code to of_find_next_cache_node() Using the common code means that more complete cache information will provided in sysfs on platforms that don't use the l2-cache property convention. Signed-off-by: Nathan Lynch Signed-off-by: Paul Mackerras commit b2ea25b958968c152c6fac0594f2c9aa8b59eb8d Author: Nathan Lynch Date: Wed Dec 10 20:16:07 2008 +0000 powerpc: Convert cpu_to_l2cache() to of_find_next_cache_node() The smp code uses cache information to populate cpu_core_map; change it to use common code for cache lookup. Signed-off-by: Nathan Lynch Signed-off-by: Paul Mackerras commit e523f723d69cde44e10116d7f49b277da0c6702c Author: Nathan Lynch Date: Wed Dec 10 14:46:04 2008 +0000 powerpc: Add of_find_next_cache_node() We have more than one piece of code that looks up cache nodes manually using the "l2-cache" property. Add a common helper routine which does this and handles ePAPR's "next-level-cache" property as well as powermac. Signed-off-by: Nathan Lynch Signed-off-by: Paul Mackerras commit 749820928a2fd47ff536773d869d2c3f8038b7d1 Author: Anton Vorontsov Date: Fri Dec 5 08:15:54 2008 +0000 of/gpio: Implement of_gpio_count() This function is used to count how many GPIOs are specified for a device node. Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit 7736a3db98bed028d0e5235f8958a730acfd822e Author: Anton Vorontsov Date: Fri Dec 5 08:15:46 2008 +0000 of: of_parse_phandles_with_args() learns to differentiate 'hole' cells Given this list (contains three gpio specifiers, one of which is a hole): gpios = <&phandle1 1 2 3 0 /* a hole */ &phandle2 4 5 6>; of_parse_phandles_with_args() would report -ENOENT for the `hole' specifier item, the same error value is used to report the end of the list, for example. Sometimes we want to differentiate holes from real errors -- for example when we want to count all the [syntax correct] specifiers. With this patch of_parse_phandles_with_args() will report -EEXITS when somebody requested to parse a hole. Also, make the out_{node,args} arguments optional, when counting we don't really need the out values. Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit c1bb7c6d04ebdf48998649100c5267a9139debf5 Author: Anton Vorontsov Date: Fri Dec 5 08:15:39 2008 +0000 of: Minor simplification for the of_parse_phandles_with_args() By using 'list++' in the beginning we can simplify the code a little bit. Suggested-by: Benjamin Herrenschmidt Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit 74b7ff48a93f44198ac03cc4e628d713f53d4668 Author: Matthew Ranostay Date: Sat Dec 20 17:47:24 2008 -0500 ALSA: hda: fix incorrect mixer index values for 92hd83xx Fixed incorrect mixer index values for 92hd83xx codec's audio input mixer. Signed-off-by: Matthew Ranostay Signed-off-by: Takashi Iwai commit f8ccbf65afde5df81a6238b9dc92868fbbd397f7 Author: Matthew Ranostay Date: Sat Dec 20 17:36:28 2008 -0500 ALSA: hda: dinput_mux check Add check to determine if dinput_mux is set by any of patch_stac*() functions, otherwise a invalid pointer my be referenced causing gibberish to mixer values. Signed-off-by: Matthew Ranostay Signed-off-by: Takashi Iwai commit ebef7cfc81942686a994ca6239b195040f5d1e4d Merge: 6bcdbd55b4c603d9741398d081133fcc50a10b6c 3d4758299fa6180ff9304634c67ffdd44272c8e8 Author: Takashi Iwai Date: Sat Dec 20 23:43:06 2008 +0100 Merge branch 'topic/ca0106-spdif-stream' into topic/ca0106 commit 6bcdbd55b4c603d9741398d081133fcc50a10b6c Merge: 6a8436419d1b77b24d82bd90354adc4baa393566 72077aa336d0f4c5e3c7014d7471c79bc69873bb Author: Takashi Iwai Date: Sat Dec 20 23:43:00 2008 +0100 Merge branch 'topic/ca0106-resume' into topic/ca0106 commit 6a8436419d1b77b24d82bd90354adc4baa393566 Merge: 55fa518867978e1f5fd8353098f80d125ac734d7 ff75427a7f641c4468610fbda2ccb69218174cd1 Author: Takashi Iwai Date: Sat Dec 20 23:42:55 2008 +0100 Merge branch 'topic/ca0106-capture-no-44khz' into topic/ca0106 commit 8326e32c1e148820d50dc460e1cb4a6cb6884ff2 Merge: 69dfaefee4a2dfdfee3488a306403fe1e51f0be5 32e176c14d7a425b681ef003c9061001ddb7fc7b Author: Takashi Iwai Date: Sat Dec 20 23:41:18 2008 +0100 Merge branch 'topic/hda-resume-fix' into topic/hda commit 55fa518867978e1f5fd8353098f80d125ac734d7 Merge: bb1f24bf00a85f666b56a09b7cdbfd221af16c2c eea0579fc85e64e9f05361d5aacf496fe7a151aa Author: Takashi Iwai Date: Sat Dec 20 23:39:47 2008 +0100 Merge branch 'topic/pcsp-fix' into topic/misc commit 69dfaefee4a2dfdfee3488a306403fe1e51f0be5 Author: Takashi Iwai Date: Sat Dec 20 16:57:50 2008 +0100 ALSA: hda - Add quirk for another HP dv7 Added the model=hp-m4 quirk for another HP dv7 (103c:30fc) with IDT 92HD71b* codec. Reference: Novell bnc#461108 https://bugzilla.novell.com/show_bug.cgi?id=461108 Cc: stable@kernel.org Signed-off-by: Takashi Iwai commit a31501d1041c9d0a6c3f520736ae2b2fa081493a Author: Takashi Iwai Date: Sat Dec 20 16:50:53 2008 +0100 ALSA: ASoC - Add missing __devexit annotation to wm8350.c Added the missing __devexit annotation to wm8350_codec_remove(): sound/soc/codecs/wm8350.c:1546: warning: 'wm8350_codec_remove' defined but not used Signed-off-by: Takashi Iwai commit d6f833965e594015ee05341e43ff4a86f11596b3 Author: Troy Kisky Date: Fri Dec 19 13:05:25 2008 -0700 ALSA: ASoc: DaVinci: davinci-evm use dsp_b mode Sense DaVinci does not support true I2S mode and we don't have to use the hack, use dsp_b mode instead Signed-off-by: Troy Kisky Signed-off-by: Mark Brown commit 9e031624d50c82a47671e09cc996eebb9e36f698 Author: Troy Kisky Date: Fri Dec 19 13:05:23 2008 -0700 ALSA: ASoC: DaVinci: i2s, evm, pass same value to codec and cpu_dai Fix the meaning of SND_SOC_DAIFMT_NB_NF to match that used in the codec. Signed-off-by: Troy Kisky Signed-off-by: Mark Brown commit a24f4f682661b8069d374a9197bc491525a7c799 Author: Troy Kisky Date: Fri Dec 19 13:05:22 2008 -0700 ALSA: ASoC: tlv320aic3x add dsp_a Add SND_SOC_DAIFMT_DSP_A mode option. Signed-off-by: Troy Kisky Signed-off-by: Mark Brown commit 07d8d9dca4615821d928f4b5087fdc61e292e1dc Author: Troy Kisky Date: Fri Dec 19 13:05:24 2008 -0700 ALSA: ASoC: DaVinci: document I2S limitations DaVinci does not support true I2S or right justified mode so not all I2S codecs will work with it when the codec is master. Document this limitation. Add dsp_a, dsp_b mode options Signed-off-by: Troy Kisky Signed-off-by: Mark Brown commit 69ab820c862250d460dfaaf82164972a4a69418a Author: Troy Kisky Date: Thu Dec 18 12:36:44 2008 -0700 ALSA: ASoC: DaVinci: davinci-i2s clean up Minor, just move a block of code to make next patch clearer. Signed-off-by: Troy Kisky Signed-off-by: Mark Brown commit 21903c1c9ecb7a210eb985aa8d82ad68c78283cc Author: Troy Kisky Date: Thu Dec 18 12:36:43 2008 -0700 ALSA: ASoC: DaVinci: davinci-i2s clean up Just at little cleanup of davinci_i2s_set_dai_fmt Signed-off-by: Troy Kisky Signed-off-by: Mark Brown commit 664b4af859d43714fd2a90aa434e454355659d0e Author: Troy Kisky Date: Thu Dec 18 12:36:41 2008 -0700 ALSA: ASoC: DaVinci: davinci-i2s add comments to explain polarity Document the current polarity choices. Signed-off-by: Troy Kisky Signed-off-by: Mark Brown commit 1152a1959f8440db9536f6df758274443f9b5b37 Author: Troy Kisky Date: Thu Dec 18 12:36:40 2008 -0700 ALSA: ASoC: DaVinci: davinvi-evm, make requests explicit Add constants with a value of 0 to show more explicitly what is being requested. Signed-off-by: Troy Kisky Signed-off-by: Mark Brown commit ff75427a7f641c4468610fbda2ccb69218174cd1 Author: Takashi Iwai Date: Sat Dec 20 11:20:55 2008 +0100 ALSA: ca0106 - disable 44.1kHz capture The capture with 44.1kHz on ca0106 seems to cause loud noises on later playbacks, which doesn't support 44.1kHz. A simple fix is to disable 44.1kHz, as the "default" PCM with dsnoop is anyway only with 48kHz. Reference: Novell bnc#447624 https://bugzilla.novell.com/show_bug.cgi?id=447624 Signed-off-by: Takashi Iwai commit 72077aa336d0f4c5e3c7014d7471c79bc69873bb Author: Takashi Iwai Date: Sat Dec 20 11:12:51 2008 +0100 ALSA: ca0106 - Add missing card->private_data initialization Added the missing card->private_data initialization that caused obvious problems at PM. Signed-off-by: Takashi Iwai commit 50232d62cace101e03f8f40ca151b978c0db5a0d Author: Takashi Iwai Date: Sat Dec 20 09:42:09 2008 +0100 ALSA: ca0106 - Check ac97 availability at PM Check the availability of ac97 at PM suspend/resume callbacks. Signed-off-by: Takashi Iwai commit c5dee6177f4bd2095aab7d9be9f6ebdddd6deee9 Author: Markus Metzger Date: Fri Dec 19 15:17:02 2008 +0100 x86, bts: memory accounting Impact: move the BTS buffer accounting to the mlock bucket Add alloc_locked_buffer() and free_locked_buffer() functions to mm/mlock.c to kalloc a buffer and account the locked memory to current. Account the memory for the BTS buffer to the tracer. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit bf53de907dfdaac178c92d774aae7370d7b97d20 Author: Markus Metzger Date: Fri Dec 19 15:10:24 2008 +0100 x86, bts: add fork and exit handling Impact: introduce new ptrace facility Add arch_ptrace_untrace() function that is called when the tracer detaches (either voluntarily or when the tracing task dies); ptrace_disable() is only called on a voluntary detach. Add ptrace_fork() and arch_ptrace_fork(). They are called when a traced task is forked. Clear DS and BTS related fields on fork. Release DS resources and reclaim memory in ptrace_untrace(). This releases resources already when the tracing task dies. We used to do that when the traced task dies. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit 67bac792cd0c05b4b6e0393c32605b028b8dd533 Author: venkatesh.pallipadi@intel.com Date: Fri Dec 19 13:47:30 2008 -0800 x86: PAT: pfnmap documentation update changes Impact: Documentation only. Documentation updates as per Randy Dunlap's comments. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit 34801ba9bf0381fcf0e2b08179d2c07f2c6ede74 Author: venkatesh.pallipadi@intel.com Date: Fri Dec 19 13:47:29 2008 -0800 x86: PAT: move track untrack pfnmap stubs to asm-generic Impact: Cleanup and branch hints only. Move the track and untrack pfn stub routines from memory.c to asm-generic. Also add unlikely to pfnmap related calls in fork and exit path. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit 982d789ab76c8a11426852fec2fdf2f412e21c0c Author: venkatesh.pallipadi@intel.com Date: Fri Dec 19 13:47:28 2008 -0800 x86: PAT: remove follow_pfnmap_pte in favor of follow_phys Impact: Cleanup - removes a new function in favor of a recently modified older one. Replace follow_pfnmap_pte in pat code with follow_phys. follow_phys lso returns protection eliminating the need of pte_pgprot call. Using follow_phys also eliminates the need for pte_pa. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit d87fe6607c31944f7572f965c1507ae77026c133 Author: venkatesh.pallipadi@intel.com Date: Fri Dec 19 13:47:27 2008 -0800 x86: PAT: modify follow_phys to return phys_addr prot and return value Impact: Changes and globalizes an existing static interface. Follow_phys does similar things as follow_pfnmap_pte. Make a minor change to follow_phys so that it can be used in place of follow_pfnmap_pte. Physical address return value with 0 as error return does not work in follow_phys as the actual physical address 0 mapping may exist in pte. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit 6bd9cd50c830eb88d571c492ec370a30bf999e15 Author: venkatesh.pallipadi@intel.com Date: Fri Dec 19 13:47:26 2008 -0800 x86: PAT: clarify is_linear_pfn_mapping() interface Impact: Documentation only Incremental patches to address the review comments from Nick Piggin for v3 version of x86 PAT pfnmap changes patchset here http://lkml.indiana.edu/hypermail/linux/kernel/0812.2/01330.html This patch: Clarify is_linear_pfn_mapping() and its usage. It is used by x86 PAT code for performance reasons. Identifying pfnmap as linear over entire vma helps speedup reserve and free of memtype for the region. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit 8403295e0fa460f6240e2d781e25dc29189f33c7 Author: Hiroshi Shimamoto Date: Fri Dec 19 14:25:50 2008 -0800 x86: ia32_signal: remove unnecessary declaration Impact: cleanup No need to declare do_signal(). Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 34945ede31071ac7d72270cc6c1893323f392b3f Author: Jaswinder Singh Date: Fri Dec 19 22:33:52 2008 +0530 x86: common.c boot_cpu_stack and boot_exception_stacks should be static Impact: cleanup, avoid sparse warnings, reduce kernel size a bit Fixes these sparse warnings: arch/x86/kernel/cpu/common.c:869:6: warning: symbol 'boot_cpu_stack' was not declared. Should it be static? arch/x86/kernel/cpu/common.c:910:6: warning: symbol 'boot_exception_stacks' was not declared. Should it be static? Signed-off-by: Jaswinder Singh Signed-off-by: Ingo Molnar commit 74192246910ff4fb95309ba1a683215644beeb62 Author: James Morris Date: Fri Dec 19 11:41:10 2008 +1100 SELinux: don't check permissions for kernel mounts Don't bother checking permissions when the kernel performs an internal mount, as this should always be allowed. Signed-off-by: James Morris Acked-by: Stephen Smalley commit 12204e24b1330428c3062faee10a0d80b8a5cb61 Author: James Morris Date: Fri Dec 19 10:44:42 2008 +1100 security: pass mount flags to security_sb_kern_mount() Pass mount flags to security_sb_kern_mount(), so security modules can determine if a mount operation is being performed by the kernel. Signed-off-by: James Morris Acked-by: Stephen Smalley commit 459c19f524a9d89c65717a7d061d5f11ecf6bcb8 Author: Stephen Smalley Date: Fri Dec 5 09:12:19 2008 -0500 SELinux: correctly detect proc filesystems of the form "proc/foo" Map all of these proc/ filesystem types to "proc" for the policy lookup at filesystem mount time. Signed-off-by: James Morris commit 9bb482476c6c9d1ae033306440c51ceac93ea80c Author: Jan Beulich Date: Tue Dec 16 11:30:08 2008 +0000 allow stripping of generated symbols under CONFIG_KALLSYMS_ALL Building upon parts of the module stripping patch, this patch introduces similar stripping for vmlinux when CONFIG_KALLSYMS_ALL=y. Using CONFIG_KALLSYMS_STRIP_GENERATED reduces the overhead of CONFIG_KALLSYMS_ALL from 245k/310k to 65k/80k for the (i386/x86-64) kernels I tested with. The patch also does away with the need to special case the kallsyms- internal symbols by making them available even in the first linking stage. While it is a generated file, the patch includes the changes to scripts/genksyms/keywords.c_shipped, as I'm unsure what the procedure here is. Signed-off-by: Jan Beulich Signed-off-by: Sam Ravnborg commit ad7a953c522ceb496611d127e51e278bfe0ff483 Author: Jan Beulich Date: Tue Dec 16 11:28:14 2008 +0000 kbuild: strip generated symbols from *.ko This patch changes the way __crc_ symbols are being resolved from using ld to do so to using the assembler, thus allowing these symbols to be marked local (the linker creates then as global ones) and hence allow stripping (for modules) or ignoring (for vmlinux) them. While at this, also strip other generated symbols during module installation. One potentially debatable point is the handling of the flags passeed to gcc when translating the intermediate assembly file into an object: passing $(c_flags) unchanged doesn't work as gcc passes --gdwarf2 to gas whenever is sees any -g* option, even for -g0, and despite the fact that the compiler would have already produced all necessary debug info in the C->assembly translation phase. I took the approach of just filtering out all -g* options, but an alternative to such negative filtering might be to have a positive filter which might, in the ideal case allow just all the -Wa,* options to pass through. Signed-off-by: Jan Beulich Signed-off-by: Sam Ravnborg commit 37a8d9f67f18de1e2cbc7387311ce22d4dbff518 Author: Sam Ravnborg Date: Fri Dec 19 21:38:09 2008 +0100 kbuild: simplify use of genksyms Avoid duplicating long list of options in two places Signed-off-by: Sam Ravnborg commit 9cf7f247bd0cd21e475c71a4e018bb612ef02aab Author: Michael Buesch Date: Fri Dec 19 20:24:30 2008 +0100 b43: Add key memory dumping This adds an option to dump all crypto related memory to the kernel log. Obviously, it should not be enabled on productive systems. ;) Signed-off-by: Michael Buesch Signed-off-by: John W. Linville commit b929ecf7965c2dab7e373f390ac5fc563011484d Author: Michael Buesch Date: Fri Dec 19 18:40:00 2008 +0100 b43: Suspend MAC while killing the radio We should suspend the MAC, before we kill the radio. This gives the MAC a chance to leave any TX/RX state and it avoids races on the PHY/RADIO registers. Signed-off-by: Michael Buesch Signed-off-by: John W. Linville commit fd6effcaf8a894c0a0f602b943dbc54a170d4418 Author: Bob Copeland Date: Thu Dec 18 23:23:05 2008 -0500 ath5k: correct packet length in tx descriptors Packet length calculation (which includes frame check sequence) should take into account whether we add a pad field or not. Extract the calculation into a helper and use it in both places. Changes to desc.c Changes-licensed-under: ISC Changes to ath5k.h, base.c Changes-licensed-under: 3-Clause-BSD Signed-off-by: Bob Copeland Signed-off-by: John W. Linville commit 520eb82076993b7f55ef9b80771d264272e5127b Author: Kalle Valo Date: Thu Dec 18 23:35:27 2008 +0200 mac80211: implement dynamic power save This patch implements dynamic power save for mac80211. Basically it means enabling power save mode after an idle period. Implementing it dynamically gives a good compromise of low power consumption and low latency. Some hardware have support for this in firmware, but some require the host to do it. The dynamic power save is implemented by adding an timeout to ieee80211_subif_start_xmit(). The timeout can be enabled from userspace with Wireless Extensions. For example, the command below enables the dynamic power save and sets the time timeout to 500 ms: iwconfig wlan0 power timeout 500m Power save now only works with devices which handle power save in firmware. It's also disabled by default and the heuristics when and how to enable is considered as a policy decision and will be left for the userspace to handle. In case the firmware has support for this, drivers can disable this feature with IEEE80211_HW_NO_STACK_DYNAMIC_PS. Big thanks to Johannes Berg for the help with the design and code. Signed-off-by: Kalle Valo Acked-by: Johannes Berg Signed-off-by: John W. Linville commit ce7c9111a97492d04c504f40736a669c235d664a Author: Kalle Valo Date: Thu Dec 18 23:35:20 2008 +0200 mac80211: track master queue status This is a preparation for the dynamic power save support. In future there are two paths to stop the master queues and we need to track this properly to avoid starting queues incorrectly. Implement this by adding a status array for each queue. The original idea and design is from Johannes Berg, I just did the implementation based on his notes. All the bugs are mine, of course. Signed-off-by: Kalle Valo Acked-by: Johannes Berg Signed-off-by: John W. Linville commit e0cb686ff879dc9ac045ad7258ec687088d4e450 Author: Kalle Valo Date: Thu Dec 18 23:35:13 2008 +0200 mac80211: enable IEEE80211_CONF_PS only when associated Also disable power save when disassociated. It makes no sense to have power save enabled while disassociated. iwlwifi seems to have this check in the driver, but it's better to do this in mac80211 instead. Signed-off-by: Kalle Valo Acked-by: Johannes Berg Signed-off-by: John W. Linville commit d10d0e5707fb7b8afa7e68a14d69e752604ee294 Author: Michael Buesch Date: Thu Dec 18 22:13:39 2008 +0100 b43: Fix some MAC locking This fixes some locking w.r.t. the lower MAC (firmware). It also removes a lot of ancient IRQ-locking that's not needed anymore. We simply suspend the MAC. That's easier and causes less trouble. Signed-off-by: Michael Buesch Signed-off-by: John W. Linville commit 0e7690f1e9ee1e762f27678d2ea10e4c1fde3236 Author: Rami Rosen Date: Thu Dec 18 18:04:51 2008 +0200 iwlwifi: iwl-tx.c cleanup (remove unused parameter and unused local variable). This patch removes unused parameter and unused local variable in methods in iwl-tx.c: - Remove a parameter (is_unicast) from iwl_tx_cmd_build_basic(). - Remove an unused variable name unicast from iwl_tx_skb(). Signed-off-by: Rami Rosen Signed-off-by: John W. Linville commit be2864cfff2fe4b599b46f03cce1e7689e05c60c Author: Jouni Malinen Date: Thu Dec 18 14:33:00 2008 +0200 ath9k: Fixed RX decryption status reporting The RX code in ath9k uses sc_keymap to figure out whether a default key was used. However, the default key entries in sc_keymap were always set and as such, frames could have been claimed to be decrypted by hardware when they were not. This can cause problems especially with TKIP since mac80211 is validating the Michael MIC in the frame and this will result in MIC failure and potentially TKIP countermeasures if the frame was not decrypted correctly. Change key cache slot allocation to mark only the keys that really have been used in sc_keymap to avoid the issue. The key cache slot selection routines are now internally avoiding the slots that may be needed for TKIP group keys. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit ea6121328885640c137b0a8830f67ca6c386a24a Author: Jouni Malinen Date: Thu Dec 18 14:31:10 2008 +0200 ath9k: Fix key cache slot selection for splitmic ath_reserve_key_cache_slot() was obviously supposed to return an index to a free slot, not reserved one. This could have caused problems with hardware revisions that use splitmic. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit aa33de09a849bd65b1201e1aec42e3e412c14cf6 Author: Sujith Date: Thu Dec 18 11:40:16 2008 +0530 ath9k: Protect config() callback with a mutex This should fix the timeout issues seen when using wpa_supplicant. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 5e3f308997f53d00e8cbebdb89d4f6e347aa963a Author: Larry Finger Date: Wed Dec 17 14:26:59 2008 -0600 mac80211: Print unknown packet type in tasklet_handler In stress testing p54usb, the WARN_ON() in ieee80211_tasklet_handler() was triggered; however, there is no logging of the received value for packet type. Adding that feature will improve the warning. Signed-off-by: Larry Finger Signed-off-by: John W. Linville commit 6110781af080c007b2202187a8518920e03d5748 Author: Christian Lamparter Date: Wed Dec 17 12:04:43 2008 +0100 p54usb: bring first generation devices back to life This patch fixes a serious regression (introduced by: "p54: fix memory management") that affected isl3886+net2280 usb devices operation. Signed-off-by: Christian Lamparter Tested-by: Artur Skawina Signed-off-by: John W. Linville commit 6ace2891a1d632303283816ae050849da48df142 Author: Jouni Malinen Date: Wed Dec 17 13:32:17 2008 +0200 ath9k: Key cache allocation for AP mode Enhance allocation of key cache entries to support multiple pairwise keys to fix AP mode with more than one associated STA. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit f66000f7a39769b0ce2355fca13c40ac2f1c39db Author: Jouni Malinen Date: Wed Dec 17 13:30:31 2008 +0200 ath9k: Fix a NULL pointer dereference in ath_rate_get It looks like mac80211 may try to send unicast frames to a STA that does not have a STA entry. We need to make sure that that is caught in the rate control code before dereferencing STA data. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 91f39e8eea725347b6a82d1e35e512ec8b298b0b Author: Jay Sternberg Date: Wed Dec 17 16:52:34 2008 +0800 iwlwifi: indicate txpower is off in sysfs The patch checks if the radio is disabled before displaying the tx power level. Previously when the txpower was set off show_tx_power still returned the prior power level. Now it will indicate the power has been turned off. Signed-off-by: Jay Sternberg Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit f1bc4ac61f2c08515afd80c6dc3962aa6d0b138b Author: Zhu Yi Date: Wed Dec 17 16:52:33 2008 +0800 iwlwifi: use GFP_KERNEL to allocate Rx SKB memory Previously we allocate Rx SKB with GFP_ATOMIC flag. This is because we need to hold a spinlock to protect the two rx_used and rx_free lists operation in the rxq. spin_lock(); ... element = rxq->rx_used.next; element->skb = alloc_skb(..., GFP_ATOMIC); list_del(element); list_add_tail(&element->list, &rxq->rx_free); ... spin_unlock(); After spliting the rx_used delete and rx_free insert into two operations, we don't require the skb allocation in an atomic context any more (the function itself is scheduled in a workqueue). spin_lock(); ... element = rxq->rx_used.next; list_del(element); ... spin_unlock(); ... element->skb = alloc_skb(..., GFP_KERNEL); ... spin_lock() ... list_add_tail(&element->list, &rxq->rx_free); ... spin_unlock(); This patch should fix the "iwlagn: Can not allocate SKB buffers" warning we see recently. Signed-off-by: Zhu Yi Acked-by: Tomas Winkler Cc: stable@kernel.org Signed-off-by: John W. Linville commit 4087f6f68cdbd2845c7e54236bae1b058a7b827b Author: Wu, Fengguang Date: Wed Dec 17 16:52:32 2008 +0800 iwlwifi: use meaningful vars in _iwl_poll_bit() Rename vars in _iwl_poll_bit() to better reflect the truth. Signed-off-by: Wu Fengguang Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit febf3370c63b4ea7fc1cedb9a73ac37e3cb21079 Author: Wu Fengguang Date: Wed Dec 17 16:52:31 2008 +0800 iwlwifi: remove useless goto The patch removes some useless goto in code cleanup. Signed-off-by: Wu Fengguang Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit 95aa194ac4a8fee0aea64c9609e70211cd057ad2 Author: Wu, Fengguang Date: Wed Dec 17 16:52:30 2008 +0800 iwlwifi: use type uint for module param debug This enables one to change the debug level at bit 31. Signed-off-by: Wu Fengguang Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit c3a739fa3507d1d5b3d2cb6cc491edeef8fa54c0 Author: Wu, Fengguang Date: Wed Dec 17 16:52:29 2008 +0800 iwlwifi: update comments on the debug interface Bring up-to-date some comments on the location of debug files. Signed-off-by: Wu Fengguang Acked-by: Tomas Winkler Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit 5c11ec60ef2eb8fb409b2c0a427e5a8ab6ee05f8 Author: Wu, Fengguang Date: Wed Dec 17 16:52:28 2008 +0800 iwlwifi: add line feed to printk This adds line feed to printk. Signed-off-by: Wu Fengguang Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit 34c22cf93d1446791c966c878cc691e07c39d8d3 Author: Winkler, Tomas Date: Wed Dec 17 16:52:27 2008 +0800 iwlwifi: cleanup iwl-dev.h The patch removes unused definition and moves code to proper places. Signed-off-by: Tomas Winkler Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit 135541215ca87ff00c269e65bcaef0bdcb99aab9 Author: Rami Rosen Date: Tue Dec 16 22:38:29 2008 +0200 mac80211: fix a typo in ieee80211_send_assoc() method. This patch fixes a typo in ieee80211_send_assoc(), net/mac80211/mlme.c. The error is usage of a wrong member when building the ie80211 management frame (it should be assoc_req, and not reassoc_req). Signed-off-by: Rami Rosen Signed-off-by: John W. Linville commit 73ec1cc28ebc7854a376cde53f62d487e127fbca Author: Rami Rosen Date: Tue Dec 16 09:37:07 2008 +0200 iwlwifi: remove a parameter (dest) from *_fill_beacon_frame() methods. This patch removes a parameter (dest) from iwl_fill_beacon_frame() (iwl-agn.c) and from iwl3945_fill_beacon_frame(). (iwl-3945.c,iwl-3945.h) Signed-off-by: Rami Rosen Signed-off-by: John W. Linville commit ca8a8560569c5eb954cb18c3a91087797ffa81a4 Author: Vasanthakumar Thiagarajan Date: Tue Dec 16 12:37:38 2008 +0530 ath9k: Move rate control alg register/unregister to appropriate place This patch makes sure the rate control alg is registered/unregistered only once for this module. Signed-off-by: Vasanthakumar Thiagarajan Signed-off-by: John W. Linville commit 9bf9fca8dea70116016d32c2bf3f83170c8fba76 Author: Vasanthakumar Thiagarajan Date: Mon Dec 15 20:40:46 2008 +0530 ath9k: Synchronize DMA transfer with CPU at right place This patch does pci_dma_sync_single_for_cpu() before accessing the header of the frame and queueing the same buffer into h/w. Signed-off-by: Vasanthakumar Thiagarajan Signed-off-by: John W. Linville commit f7a276a625e0b980185d2eb8e8e3e9425a708bee Author: Jouni Malinen Date: Mon Dec 15 16:02:04 2008 +0200 ath9k: Remove MAC header pad before reporting TX status Remove the possible MAC header pad before reporting TX status to mac80211. This pad is hardware specific operation and should not be exposed outside the driver. This fixes the frame body in monitor interfaces that could be used to check on TX status for transmitted frames. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit da027ca00a48715364da9a94d4b663029add528d Author: Jouni Malinen Date: Mon Dec 15 15:44:53 2008 +0200 ath9k: Fix TX status reporting for retries and MCS index The count field in struct ieee80211_tx_rate does not include the final successful attempt, so only report retries here. Fix the struct ieee80211_tx_rate::idx field when MCS was used. It is supposed to be the MCS index, not an internal index to the rate control algorithm table. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 8d6f658e211a3c6ff808f7fc6ebb30239457eabc Author: Jouni Malinen Date: Mon Dec 15 10:37:50 2008 +0200 mac80211: Remove radiotap rate-present flag for HT Since we do not currently report HT rates (MCS index) in radiotap header for HT rates, we should not claim the rate is present. The rate octet itself is used as padding in this case, so only the it_present flag needs to be removed in case of HT rates. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit d85882273367e98aecb9ff11a9d76515a6d37131 Author: Herton Ronaldo Krzesinski Date: Sun Dec 14 12:18:09 2008 -0600 rtl8187: Fix crash on unload when using SLUB debug Reported-by: Hin-Tak Leung After the code was modified to use urb anchors ("rtl8187: Use usb anchor facilities to manage urbs"), rtl8187 began generating an intermittent GPF on shutdown when using SLUB with debugging enabled. Furthermore, rebooting the system with a ping running caused a GPF every time. There are two problems: (1) incorrect locking in the rtl8187_rx_cb() routine, a pre-existing bug that apparently had not been triggered before, and (2) duplicate freeing of receive skbs that was probably introduced with the change to anchors. Signed-off-by: Herton Ronaldo Krzesinski Signed-off-by: Larry Finger Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 0a5ec96ad68516582023a877aceff9db7636d141 Author: Christian Lamparter Date: Sun Dec 14 15:05:42 2008 +0100 p54: remove free_on_tx parameter This patch simplifies the tx code a bit and will be necessary for the upcoming stlc45xx<->p54 port. In detail: we no longer have to tell all back-end drivers directly, if we want to free a frame right after it was send to the firmware, or if we do it in the library callback later. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 69ba3e5d74a467a64248cd90ccafb524b1fddcb5 Author: Christian Lamparter Date: Sun Dec 14 14:45:30 2008 +0100 p54: more accurate rssi to dBm conversion This patch replaces the static rssi auto calibration data with more precise values out of the device's eeprom. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit da9f57eade0a743450a201645db7fc5ac0809900 Author: Larry Finger Date: Sat Dec 13 18:09:56 2008 -0600 rtl8187: Fix error returns There are two places in the rtl8187 code where a routine was returning zero (OK) when it should have been returning an error. Signed-off-by: Larry Finger Acked-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 23827926eb5ce5cb944ebbd96d22297a2582d45d Author: Ilpo Järvinen Date: Sat Dec 13 21:33:13 2008 +0200 libertas: use roundup instead of opencoding Signed-off-by: Ilpo Järvinen Signed-off-by: John W. Linville commit ee370ceda823435fe75be7dd4ed7b0e3dc3108b9 Author: Christian Lamparter Date: Sat Dec 13 16:45:38 2008 +0100 p54: update ACK failure statistic counter in real-time Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 54fdb040b4760d5b2994d15c1371e297679420e9 Author: Christian Lamparter Date: Sat Dec 13 14:14:20 2008 +0100 p54: move statistic timer update routine into a workqueue This patch moves a good chunk of code from the former statistic update timer routine into a workqueue, which is kindly provided by mac80211. Also as a nice side-effect we can lay the foundation for other essential housekeeping features we want to do in the future. e.g: - drain the (clogged) tx_queue. - initiate bursts. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit d5e490362feb648048ef20db9b0b2531d5425775 Author: Mohamed Abbas Date: Fri Dec 12 08:22:15 2008 -0800 iwlagn: fix agn rate scaling Rate scaling in agn can be broken because of these two problems 1- the LQ command could not sent, we try to call LQ command before post association will be rejected, this will cause the driver to break in rs_tx_status reporting initial rate does not match. 2- In rs_rate_init we can get a value of 12, rate 60, for last_txrate_idx, this rate only valid in SISO/MIMO mode only Signed-off-by: Mohamed Abbas Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit b8d476c8cb64a1640d8762aa442b8a73fa74b7d5 Author: Jouni Malinen Date: Fri Dec 12 17:08:31 2008 +0200 mac80211: Send Layer 2 Update frame on reassociation When a STA roams back to the same AP before the previous STA entry has expired, a new STA entry is not added in mac80211. However, a Layer 2 Update frame still needs to be transmitted to update layer 2 devices about the new location for the STA. Without this, switches may continue to forward frames to the previous (now incorrect) port when STA roams between APs. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 0fe45b1debba7302155b62f3829119a1185a4f5a Author: Benoit PAPILLAULT Date: Fri Dec 12 15:29:58 2008 +0100 ath5k: fix 802.11 header padding on RX, unpadding on TX Padding the 802.11 header to a multiple of 4 bytes needs to be done only for frames with a body. This fixes a bug where 2 bytes were missing in monitor mode for ACK frames. Inspired by a patch from Jouni Malinen on ath9k. Ref: http://bugzilla.kernel.org/show_bug.cgi?id=12101 : Signed-off-by: Benoit Papillault Signed-off-by: John W. Linville commit baad1d921b1565b6f08f60c035531d13ad8afa82 Author: Jouni Malinen Date: Fri Dec 12 14:38:34 2008 +0200 ath9k: Report HT rates in RX status Fix and clean up the RX status reporting by getting rid of code that used internal rate tables and ratekbps calculation. The correct value is now reported with MCS index instead of the old mechanism that defaulted to using the highest legacy rate. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 0fb8ca45eb164c405eef8978f26829f9348b4d4d Author: Jouni Malinen Date: Fri Dec 12 14:38:33 2008 +0200 mac80211: Add HT rates into RX status reporting This patch adds option for HT-enabled drivers to report HT rates (HT20/HT40, short GI, MCS index) to mac80211. These rates are currently not in the rate table, so the rate_idx is used to indicate MCS index. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 9d8eed12dbc04f8ed70090da14211c808b5a8d81 Author: Sujith Date: Fri Dec 12 11:59:07 2008 +0530 ath9k: Do not use association state to update rate table Now that HT information is made available to the driver through config() callback, the channel type can be calculated whenever setting the channel. Update the rate table accordingly with the new channel type. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 094d05dc32fc2930e381189a942016e5561775d9 Author: Sujith Date: Fri Dec 12 11:57:43 2008 +0530 mac80211: Fix HT channel selection HT management is done differently for AP and STA modes, unify to just the ->config() callback since HT is fundamentally a PHY property and cannot be per-BSS. Rename enum nl80211_sec_chan_offset as nl80211_channel_type to denote the channel type ( NO_HT, HT20, HT40+, HT40- ). Signed-off-by: Johannes Berg Signed-off-by: Sujith Signed-off-by: John W. Linville commit 420e7fabd9c6d907280ed6b3e40eef425c5d8d8d Author: Henning Rogge Date: Thu Dec 11 22:04:19 2008 +0100 nl80211: Add signal strength and bandwith to nl80211station info This patch adds signal strength and transmission bitrate to the station_info of nl80211. Signed-off-by: Henning Rogge Acked-by: Johannes Berg Signed-off-by: John W. Linville commit a1d94aa5560dc6b06baf30ae477115b51dc25461 Author: Randy Dunlap Date: Fri Dec 19 08:49:30 2008 -0800 kernel-doc: check for extra kernel-doc notations Add functionality to check for function parameters or structure (or union/typedef/enum) field members that are described in kernel-doc but are not part of the expected (declared) parameters or structure. These generate warnings that are called "Excess" descriptions. Signed-off-by: Randy Dunlap Signed-off-by: Sam Ravnborg commit eb63212868c348cc6d3ec6929d7d98f7d29493e9 Author: Takashi Iwai Date: Fri Dec 19 16:39:48 2008 +0100 ALSA: hda - Power up always when no jack detection is available When no jack detection is available, the pins should be always turned on since it can't be turned on/off dynamically via unsol events. Signed-off-by: Takashi Iwai commit 213cc060797378059a28ebc5c539f3e9a80160bd Author: Pekka J Enberg Date: Fri Dec 19 12:08:39 2008 +0200 ftrace: introduce tracing_reset_online_cpus() helper Impact: cleanup This patch factors out common code from multiple tracers into a tracing_reset_online_cpus() function and converts the tracers to use it. Signed-off-by: Pekka Enberg Signed-off-by: Ingo Molnar commit 9158923228822c08ed3116bfe21472261a05a725 Author: Takashi Iwai Date: Fri Dec 19 15:59:40 2008 +0100 ALSA: hda - Fix unused variable warnings in patch_sigmatel.c Fixed "unused varible" warnings in patch_sigmatel.c that have been introduced by the last changes. Signed-off-by: Takashi Iwai commit 6030634ac3dc818d2eafa3ddf00abba88918b3bd Merge: d4d9cd0338892e7f0d65f8a110473d175535cd5d 766245348db4b047a9b53548b5b893cd5115decc Author: Takashi Iwai Date: Fri Dec 19 15:43:24 2008 +0100 Merge branch 'topic/hda-stac-fix' into topic/hda commit 70043058a6968917c00c8d4cff5bfc0e095831ec Merge: 40aa4a30d0fd075fb934de4ee8163056827052ab 19b3f31609dc8be3a56c78dcb7da723f10f7009c Author: Takashi Iwai Date: Fri Dec 19 15:36:58 2008 +0100 Merge branch 'fix/asoc' into topic/asoc commit d4d9cd0338892e7f0d65f8a110473d175535cd5d Author: Takashi Iwai Date: Fri Dec 19 15:19:11 2008 +0100 ALSA: hda - Add probe_only option Added probe_only module option to hd-audio driver. This option specifies whether the driver creates and initializes the codec-parser after probing. When this option is set, the driver skips the codec parsing and initialization but gives you proc and other accesses. It's useful to see the initial codec state for debugging. The default of this value is off, so the default behavior is as same as before. Signed-off-by: Takashi Iwai commit 766245348db4b047a9b53548b5b893cd5115decc Author: Takashi Iwai Date: Fri Dec 19 10:09:47 2008 +0100 ALSA: hda - Use more distinct name for a unique volume in STAC/IDT When the line_out has only one DAC and it's unique (i.e. not shared by other outputs), assign a more reasonable and distinct mixer name such as "Headphone" or "Speaker". Signed-off-by: Takashi Iwai commit c21ca4a872697aeda4fe91bf9b6cc8380c62827c Author: Takashi Iwai Date: Fri Dec 19 09:26:08 2008 +0100 ALSA: hda - Rework on STAC/IDT auto-configuration code The current auto-configuration code has several problems especially for the new IDT codecs, e.g. wrong assignment of pins and DACs or coupled volume for speaker and headphone. This patch is a fairly large rewrite of the auto-configuration code. Some remaks - mic_switch and line_switch contain NIDs instead of bool - dac_list isn't fixed for IDT 92HD* codecs now, they are all probed - extra HP and speakers are stored in extra_dacs[]. Signed-off-by: Takashi Iwai commit 03c6901ea22bbb532586334d5b79941ccf56d5b0 Merge: 692f90421d3716ef0d0f120d9d2c9684009a4a01 8f55c1e51fbb03998708bdd97d5b6665ab92462d Author: Takashi Iwai Date: Fri Dec 19 14:24:13 2008 +0100 Merge branch 'fix/hda' into topic/hda commit 8df0f70751dc0e51d0550caee3416339183c5767 Author: Takashi Iwai Date: Fri Dec 19 13:55:17 2008 +0100 ALSA: ca0106 - Fix typo in resume code The register and channel_id pair were twisted in the pm code... Oh my. Signed-off-by: Takashi Iwai commit 692f90421d3716ef0d0f120d9d2c9684009a4a01 Author: Takashi Iwai Date: Fri Dec 19 12:44:46 2008 +0100 ALSA: hda - Fix HD-Audio.txt reference of model list The model list is now in HD-Audio-Models.txt. Signed-off-by: Takashi Iwai commit 3d4758299fa6180ff9304634c67ffdd44272c8e8 Author: Takashi Iwai Date: Fri Dec 19 12:13:18 2008 +0100 ALSA: ca0106 - Add IEC958 PCM Stream controls Added "IEC958 PCM Stream" controls for the per-stream IEC958 status bits. Using this instead of "IEC958 Default" is safer since the status bits will be recovered to the default states after closing the PCM stream. Signed-off-by: Takashi Iwai commit 86effd7e12ca63cecfd218717473d606e138e5e1 Author: Takashi Iwai Date: Fri Dec 19 12:04:06 2008 +0100 ALSA: ca0106 - Don't override the values at resume Don't override some values in ca0106_init_chip() at resume. Signed-off-by: Takashi Iwai commit abe1dfab60e1839d115930286cb421f5a5b193f3 Author: Wu Fengguang Date: Wed Nov 26 14:35:22 2008 +0800 ACPI: don't cond_resched() when irqs_disabled() The ACPI interpreter usually runs with irqs enabled. However, during suspend/resume it runs with irqs disabled to evaluate _GTS/_BFS, as well as by irqrouter_resume() which evaluates _CRS, _PRS, _SRS. http://bugzilla.kernel.org/show_bug.cgi?id=12252 Signed-off-by: Wu Fengguang Signed-off-by: Len Brown commit e76f42761197dd6e9405e2eeb35932acfede115a Author: Bjorn Helgaas Date: Thu Nov 13 17:30:13 2008 -0600 ACPI: fix 2.6.28 acpi.debug_level regression acpi_early_init() was changed to over-write the cmdline param, making it really inconvenient to set debug flags at boot-time. Also, This sets the default level to "info", which is what all the ACPI drivers use. So to enable messages from drivers, you only have to supply the "layer" (a.k.a. "component"). For non-"info" ACPI core and ACPI interpreter messages, you have to supply both level and layer masks, as before. Signed-off-by: Bjorn Helgaas Signed-off-by: Len Brown commit 4f2d23e1c3fe0abaf87fead3033c6cc3671b4d1c Author: Takashi Iwai Date: Fri Dec 19 10:14:13 2008 +0100 ALSA: hda - Use snd_hda_ctl_add() in patch_sigmatel.c Fixed the call of snd_ctl_add() by replacing with snd_hda_ctl_add() so that this mixer element can be tracked for re-configuration. Signed-off-by: Takashi Iwai commit 827057f5c12f5e10dc0279596db940aa6ddf8d9b Author: Takashi Iwai Date: Fri Dec 19 10:12:02 2008 +0100 ALSA: hda - Add missing initializations of amp and verb caches The re-initializations of codec amp and verb caches are missing at reconfig, which may cause Oops occasionally. Signed-off-by: Takashi Iwai commit 30cd324e9787ccc9a5ede59742d5409857550692 Merge: c71dd42db2c6f1637b92502a214587431c1a6ad2 6d102bc68f3dd2ae0e305b09170b1751aa67baeb 3d9101e92529e1ff6014f95a69afc82f37b9b13a Author: Ingo Molnar Date: Fri Dec 19 09:42:40 2008 +0100 Merge branches 'tracing/ftrace', 'tracing/ring-buffer' and 'tracing/urgent' into tracing/core Conflicts: include/linux/ftrace.h commit 345077cd98ff5532b2d1158013c3fec7b1ae85ec Author: Suresh Siddha Date: Thu Dec 18 18:09:21 2008 -0800 x86: fix intel x86_64 llc_shared_map/cpu_llc_id anomolies Impact: fix wrong cache sharing detection on platforms supporting > 8 bit apicid's In the presence of extended topology eumeration leaf 0xb provided by cpuid, 32bit extended initial_apicid in cpuinfo_x86 struct will be updated by detect_extended_topology(). At this instance, we should also reinit the apicid (which could also potentially be extended to 32bit). With out this there will potentially be duplicate apicid's populated in the per cpu's cpuinfo_x86 struct, resulting in wrong cache sharing topology etc detected by init_intel_cacheinfo(). Reported-by: Dimitri Sivanich Signed-off-by: Suresh Siddha Acked-by: Dimitri Sivanich Signed-off-by: Ingo Molnar Cc: commit cae51176c1082ecb59706056910f8a217d433981 Author: Takashi Iwai Date: Fri Dec 19 08:36:53 2008 +0100 ALSA: split HD-audio model list to HD-Audio-Models.txt Split the list of model option values to a separate file, HD-Audio-Models.txt, from ALSA-Configuration.txt. Signed-off-by: Takashi Iwai commit 335b986be79122b7323e09727e14c6a02bcf7746 Merge: 0ff555192a8d20385d49d1c420e2e8d409b3c0da 132bb7c0efe82fc976b06d557f5d63536cb9fdaa Author: Takashi Iwai Date: Fri Dec 19 08:25:46 2008 +0100 Merge branch 'topic/hda-doc' into topic/hda commit 0ff555192a8d20385d49d1c420e2e8d409b3c0da Merge: 3218c178b41b420cb7e0d120c7a137a3969242e5 9e43f0de690211cf7153b5f3ec251bc315647ada Author: Takashi Iwai Date: Fri Dec 19 08:22:57 2008 +0100 Merge branch 'fix/hda' into topic/hda commit c94cb314503a69492bf4455dce4f6d300cff0851 Author: Oliver Neukum Date: Thu Dec 18 23:00:59 2008 -0800 net: prepare usb net drivers for addition of status as a parameter USB is going to switch the signature of the callbacks to void callback(struct urb *urb, int status) This patch will ease the transition. Signed-off-by: Oliver Neukum Signed-off-by: David S. Miller commit ab5024ab23b78c86a0a1425defcdde48710fe449 Author: Cyrill Gorcunov Date: Thu Dec 18 22:59:32 2008 -0800 net: ppp_generic - use DEFINE_IDR for static initialization We could use DEFINE_IDR for statically allocated idr that allow us to save a few lines of code. And spell fix. Signed-off-by: Cyrill Gorcunov Signed-off-by: David S. Miller commit a109a5b916bc180e14fad0d1e9c37a08c85652c0 Author: Karen Xie Date: Thu Dec 18 22:56:20 2008 -0800 cxgb3: manage private iSCSI IP address The accelerated iSCSI traffic could use a private IP address unknown to the OS: - The IP address is required in both drivers to manage ARP requests and connection set up. - Added an control call to retrieve the ip address. - Reply to ARP requests dedicated to the private IP address. Signed-off-by: Divy Le Ray Signed-off-by: Karen Xie Signed-off-by: David S. Miller commit 221b3d60cbb2740ec7d46a4f1ea6d3318a112e51 Author: Anton Vorontsov Date: Thu Dec 18 08:23:35 2008 +0000 ucc_geth: Remove UGETH_FILTERING dead code The code appears to be dead: nobody call these functions, plus build breaks when UGETH_FILTERING is enabled: ucc_geth.c:1848: warning: 'struct enet_addr' declared inside parameter list ucc_geth.c:1848: warning: its scope is only this definition or declaration, which is probably not what you want ucc_geth.c: In function 'ugeth_82xx_filtering_get_match_addr_in_hash': ucc_geth.c:1856: error: dereferencing pointer to incomplete type ucc_geth.c:1874: error: dereferencing pointer to incomplete type ucc_geth.c:1877: warning: return from incompatible pointer type ucc_geth.c: At top level: ucc_geth.c:1885: warning: 'struct enet_addr' declared inside parameter list ucc_geth.c: In function 'ugeth_82xx_filtering_add_addr_in_hash': ucc_geth.c:1894: error: dereferencing pointer to incomplete type ucc_geth.c:1909: warning: passing argument 2 of 'ugeth_82xx_filtering_get_match_addr_in_hash' from incompatible pointer type ucc_geth.c:1909: warning: assignment from incompatible pointer type ucc_geth.c:1918: error: dereferencing pointer to incomplete type ucc_geth.c: At top level: ucc_geth.c:1928: warning: 'struct enet_addr' declared inside parameter list ucc_geth.c: In function 'ugeth_82xx_filtering_clear_addr_in_hash': ucc_geth.c:1947: warning: passing argument 2 of 'ugeth_82xx_filtering_get_match_addr_in_hash' from incompatible pointer type ucc_geth.c:1947: warning: assignment from incompatible pointer type ucc_geth.c:1954: error: dereferencing pointer to incomplete type ucc_geth.c: At top level: ucc_geth.c:2060: warning: 'struct enet_addr' declared inside parameter list ucc_geth.c: In function 'ugeth_82xx_filtering_add_addr_in_paddr': ucc_geth.c:2064: error: dereferencing pointer to incomplete type ucc_geth.c:2073: error: dereferencing pointer to incomplete type ucc_geth.c:2075: warning: passing argument 2 of 'hw_add_addr_in_paddr' from incompatible pointer type make[2]: *** [ucc_geth.o] Error 1 The code is there since the driver was merged, and nobody seem to be interested in fixing or actually using it. If we ever want the filtering support, we can always revert the patch and fix it, but so far it just draws reader's attention. Signed-off-by: Anton Vorontsov Signed-off-by: David S. Miller commit 3e73fc9a12679a546284d597c1f19165792d0b83 Author: Anton Vorontsov Date: Thu Dec 18 08:23:33 2008 +0000 ucc_geth: Fix IO memory (un)mapping code The driver doesn't check ioremap() return value, and doesn't free the remapped memory. This patch fixes it. Signed-off-by: Anton Vorontsov Signed-off-by: David S. Miller commit ba574696a34eb518979e742b35ccd30dec284583 Author: Anton Vorontsov Date: Thu Dec 18 08:23:31 2008 +0000 ucc_geth: Cleanup repetitive ucc_geth_memclean() calls No need to call ucc_geth_memclean() so many times, just check for errors in ucc_geth_open(), and call ucc_geth_stop() in case of errors. The ucc_geth_stop() may be called anytime and will do the right thing. Signed-off-by: Anton Vorontsov Signed-off-by: David S. Miller commit 67c2fb8ff0eda3cee95954a1dd245c3ce1a10486 Author: Anton Vorontsov Date: Thu Dec 18 08:23:29 2008 +0000 ucc_geth: Fix IRQ freeing code in ucc_geth_open() open() routine calls stop() in case of errors, the function will try to free the requested IRQ. But we don't know if it was actually requested, so the code might issue bogus free_irq(0, dev) call. Fix this by rearranging the code so that now request_irq() is the last call in the open() routine, and move free_irq() into the close(). Signed-off-by: Anton Vorontsov Signed-off-by: David S. Miller commit 1762a29ae5ebdd974eb2ba0c36b56ab6f7a9c16d Author: Anton Vorontsov Date: Thu Dec 18 08:23:26 2008 +0000 ucc_geth: Fix TX watchdog timeout handling The timeout handling code is currently broken in several ways: - It calls stop() (which frees all the memory and IRQ), and then calls startup() (which won't re-request IRQ, neither it will re-init the Fast UCC structure). - It calls these routines from the softirq context, which is wrong, since stop() calls free_irq() (which might sleep) and startup() allocates things with GFP_KERNEL. - It won't soft-reset the PHY. We need the PHY reset for at least MPC8360E-MDS boards with Marvell 88E1111 PHY, the PHY won't recover from timeouts w/o the reset. So the patch fixes these problems by implementing the workqueue for the timeout handling, and there we fully re-open the device via close() and open() calls. The close/open paths do the right things, and I can see that the driver actually survive the timeouts. Signed-off-by: Anton Vorontsov Signed-off-by: David S. Miller commit b3431c647662a3647f3500a12ec85d65e3622759 Author: Anton Vorontsov Date: Thu Dec 18 08:23:22 2008 +0000 ucc_geth: Fix endless loop in stop_{tx,rx} routines Currently the routines wait for the various bits w/o an assumption that bits may never get set. When timeouts happen I see that these bits never get set and so the routines hang the kernel. With this patch we'll wait the graceful stop for 100 ms, and then will simply exit. There is nothing* we can do about that, but it's OK since we'll do full reset later. * Well, actually, there is also not-graceful variant for the TX stop, but specs says that we never should use it. Signed-off-by: Anton Vorontsov Signed-off-by: David S. Miller commit 6086ebca13ddc9cfaaa25248ba8ebef35103fb74 Author: Matt Mackall Date: Thu Dec 18 19:54:22 2008 -0800 tcp: Stop scaring users with "treason uncloaked!" The original message was unhelpful and extremely alarming to our poor users, despite its charm. Make it less frightening. Signed-off-by: Matt Mackall Signed-off-by: David S. Miller commit e98def1f71fa0a6a37e12a56eb52ce5ed9e2e800 Author: Jesper Dangaard Brouer Date: Thu Dec 18 19:51:56 2008 -0800 NIU: Implement discard counters, optimize Optimize the lightly loaded case, by only synchronizing discards stats when qlen > 10 indicate potential for drops. Notice Robert Olsson might disagree with this patch. Signed-off-by: Jesper Dangaard Brouer Signed-off-by: David S. Miller commit d231776fda4a1ed754298720c5fbc29eb34f130c Author: Jesper Dangaard Brouer Date: Thu Dec 18 19:51:26 2008 -0800 NIU: Implement discard counters, info/debug statements. Discard packet counter debug statements that can be turned on at runtime by users to assist debugging of the driver code. Signed-off-by: Jesper Dangaard Brouer Signed-off-by: David S. Miller commit b8a606b871d37e03b92be1bd3deedeee97ea4f13 Author: Jesper Dangaard Brouer Date: Thu Dec 18 19:50:49 2008 -0800 NIU: Implement discard counters Implementing discard counters for the NIU driver turned out to be more complicated than first assumed. The discard counters for the NIU neptune chip are only 16-bit (even though this is a 64-bit chip). These 16-bit counters can overflow quickly, especially considering this is a 10Gbit/s ethernet card. The overflow indication bit is, unfortunatly, not usable as the counter value does not wrap, but remains at max value 0xFFFF. Resulting in lost counts until the counter is reset. The read and reset scheme also poses a problem. Both in theory and in practice counters can be lost in between reading nr64() and clearing the counter nw64(). For this reason, the number of counter clearings nw64() is limited/reduced. On the fast-path the counters are only syncronized once it exceeds 0x7FFF. When read by userspace, its syncronized fully. Signed-off-by: Jesper Dangaard Brouer Signed-off-by: David S. Miller commit 5664dd5561850df580414783cf3c8e0aa834c62e Author: Baruch Siach Date: Thu Dec 18 19:39:14 2008 -0800 enc28j60: reduce the number of spi transfers in enc28j60_set_bank() A major source of overhead in the enc28j60 driver is the SPI transfers. Each SPI transfer entails two kernel thread context switches. One major source of SPI transfers is the enc28j60_set_bank() functions which runs before every register access. This patch reduces the number of SPI transfers that enc28j60_set_bank() performs in two ways: 1. removes unnecessary bank switch for the registers that are present in all banks 2. when switching from banks 0 or 3 to banks 1 or 2 (i.e. only one bit changes) enc28j60_set_bank() does only one SPI transfer instead of two According to my tests these changes reduce the number of SPI transfers in about 25%. Signed-off-by: Baruch Siach Signed-off-by: David S. Miller commit b88a2a22c6670c31586d1a716255eae4c320b363 Author: Wang Chen Date: Thu Dec 18 19:36:46 2008 -0800 netdevice zd1201: Use after free | commit 3d29b0c33d431ecc69ec778f8c236d382f59a85f | Author: John W. Linville | Date: Fri Oct 31 14:13:12 2008 -0400 | | netdevice zd1201: Convert directly reference of netdev->priv to netdev_priv() | | We have some reasons to kill netdev->priv: | 1. netdev->priv is equal to netdev_priv(). | 2. netdev_priv() wraps the calculation of netdev->priv's offset, obviously | netdev_priv() is more flexible than netdev->priv. | But we cann't kill netdev->priv, because so many drivers reference to it | directly. | | OK, becasue Dave S. Miller said, "every direct netdev->priv usage is a bug", | and I want to kill netdev->priv later, I decided to convert all the direct | reference of netdev->priv first. | | (Original patch posted by Wang Chen w/ above | changelog but using dev->ml_priv. That doesn't seem appropriate | to me for this driver, so I've revamped it to use netdev_priv() | instead. -- JWL) This commit changed the allocation of netdev, but didn't change the free method of it. This causes "zd" be used after the memory, which is pointed by "zd", being freed by free_netdev(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 3de77cf23e9a19b9fc28e3b29371308325428c39 Author: David S. Miller Date: Thu Dec 18 19:23:56 2008 -0800 Revert "xfrm: Accept ESP packets regardless of UDP encapsulation mode" This reverts commit e061b165c7f4ec5e2e160d990b49011b5b6e5c6a. Signed-off-by: David S. Miller commit 739840d529eb7505d3cbfe9d468bf1440c9a8e27 Author: James Chapman Date: Wed Dec 17 12:02:16 2008 +0000 ppp: fix segfaults introduced by netdev_priv changes This patch fixes a segfault in ppp_shutdown_interface() and ppp_destroy_interface() when a PPP connection is closed. I bisected the problem to the following commit: commit c8019bf3aff653cceb64f66489fc299ee5957b57 Author: Wang Chen Date: Thu Nov 20 04:24:17 2008 -0800 netdevice ppp: Convert directly reference of netdev->priv 1. Use netdev_priv(dev) to replace dev->priv. 2. Alloc netdev's private data by alloc_netdev(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller The original ppp_generic code treated the netdev and struct ppp as independent data structures which were freed separately. In moving the ppp struct into the netdev, it is now possible for the private data to be freed before the call to ppp_shutdown_interface(), which is bad. The kfree(ppp) in ppp_destroy_interface() is also wrong; presumably ppp hasn't worked since the above commit. The following patch fixes both problems. Signed-off-by: James Chapman Reviewed-by: Wang Chen Signed-off-by: David S. Miller commit 1b08534e562dae7b084326f8aa8cc12a4c1b6593 Author: Wei Yongjun Date: Thu Dec 18 19:35:10 2008 -0800 net: Fix module refcount leak in kernel_accept() The kernel_accept() does not hold the module refcount of newsock->ops->owner, so we need __module_get(newsock->ops->owner) code after call kernel_accept() by hand. In sunrpc, the module refcount is missing to hold. So this cause kernel panic. Used following script to reproduct: while [ 1 ]; do mount -t nfs4 192.168.0.19:/ /mnt touch /mnt/file umount /mnt lsmod | grep ipv6 done This patch fixed the problem by add __module_get(newsock->ops->owner) to kernel_accept(). So we do not need to used __module_get(newsock->ops->owner) in every place when used kernel_accept(). Signed-off-by: Wei Yongjun Signed-off-by: David S. Miller commit f34a10bd9f8cc95ebdc69a079db195636b2e22e0 Author: Ingo Molnar Date: Fri Dec 19 01:36:14 2008 +0100 x86: fix warning in arch/x86/kernel/microcode_amd.c this warning: arch/x86/kernel/microcode_amd.c: In function ‘apply_microcode_amd’: arch/x86/kernel/microcode_amd.c:163: warning: cast from pointer to integer of different size arch/x86/kernel/microcode_amd.c:163: warning: cast from pointer to integer of different size triggers because we want to pass the address to the microcode MSR, which is 64-bit even on 32-bit. Cast it explicitly to express this. Signed-off-by: Ingo Molnar commit c71dd42db2c6f1637b92502a214587431c1a6ad2 Author: Ingo Molnar Date: Fri Dec 19 01:09:51 2008 +0100 tracing: fix warnings in kernel/trace/trace_sched_switch.c these warnings: kernel/trace/trace_sched_switch.c: In function ‘tracing_sched_register’: kernel/trace/trace_sched_switch.c:96: warning: passing argument 1 of ‘register_trace_sched_wakeup_new’ from incompatible pointer type kernel/trace/trace_sched_switch.c:112: warning: passing argument 1 of ‘unregister_trace_sched_wakeup_new’ from incompatible pointer type kernel/trace/trace_sched_switch.c: In function ‘tracing_sched_unregister’: kernel/trace/trace_sched_switch.c:121: warning: passing argument 1 of ‘unregister_trace_sched_wakeup_new’ from incompatible pointer type Trigger because sched_wakeup_new tracepoints need the same trace signature as sched_wakeup - which was changed recently. Fix it. Signed-off-by: Ingo Molnar commit 3bddb9a3246f6df5cf3b7655cb541ac10203bb71 Author: Ingo Molnar Date: Fri Dec 19 01:03:29 2008 +0100 tracing: fix warning in kernel/trace/trace.c this warning: kernel/trace/trace.c: In function ‘print_lat_fmt’: kernel/trace/trace.c:1826: warning: unused variable ‘state’ Triggers because 'state' has become unused - remove it. Signed-off-by: Ingo Molnar commit 9f221495997d180df51ce4d8296669445dd3e7b3 Author: Hiroshi Shimamoto Date: Thu Dec 18 14:47:37 2008 -0800 x86: ia32.h: remove unused struct sigfram32 and rt_sigframe32 Impact: cleanup Remove struct sigfram32 and rt_sigframe32 because there is no user. Signed-off-by: Hiroshi Shimamoto Signed-off-by: H. Peter Anvin commit 8869a2e5d3a66d5b63b948052d60cd13ede8b735 Author: Hiroshi Shimamoto Date: Thu Dec 18 14:46:52 2008 -0800 x86: asm-offset_64: use rt_sigframe_ia32 Impact: cleanup Use rt_sigframe_ia32 instead of rt_sigframe32. Signed-off-by: Hiroshi Shimamoto Signed-off-by: H. Peter Anvin commit b2fa739c06931d167b6d2aa7b514ab7f30d04dc0 Author: Hiroshi Shimamoto Date: Thu Dec 18 14:43:34 2008 -0800 x86: sigframe.h: include headers for dependency Impact: cleanup Include following headers for dependency. asm/sigcontext.h asm/siginfo.h asm/ucontext.h Signed-off-by: Hiroshi Shimamoto Signed-off-by: H. Peter Anvin commit d1769d5475176124af04fa69848b022c98c4bc37 Author: Jaswinder Singh Date: Fri Dec 19 00:03:56 2008 +0530 x86: traps.c declare functions before they get used Impact: cleanup In asm/traps.h :- do_double_fault : added under X86_64 sync_regs : added under X86_64 math_error : moved out from X86_32 as it is common for both 32 and 64 bit math_emulate : moved from X86_32 as it is common for both 32 and 64 bit smp_thermal_interrupt : added under X86_64 mce_threshold_interrupt : added under X86_64 Signed-off-by: Jaswinder Singh Signed-off-by: Ingo Molnar commit a2ced6e173e0c93870f79856e97825f4e180891e Author: venkatesh.pallipadi@intel.com Date: Thu Dec 18 11:41:33 2008 -0800 x86: PAT: update documentation to cover pgprot and remap_pfn related changes - v3 Impact: Documentation only. Add documentation related to pgprot_* change. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit 2520bd3123c00272f818a176c92d03c7d0a113d6 Author: venkatesh.pallipadi@intel.com Date: Thu Dec 18 11:41:32 2008 -0800 x86: PAT: add pgprot_writecombine() interface for drivers - v3 Impact: New mm functionality. Add pgprot_writecombine. pgprot_writecombine will be aliased to pgprot_noncached when not supported by the architecture. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit 8a7b12f70fb135a1b1d865687de3edcdc780f6d1 Author: venkatesh.pallipadi@intel.com Date: Thu Dec 18 11:41:31 2008 -0800 x86: PAT: change pgprot_noncached to uc_minus instead of strong uc - v3 Impact: mm behavior change. Make pgprot_noncached uc_minus instead of strong UC. This will make pgprot_noncached to be in line with ioremap_nocache() and all the other APIs that map page uc_minus on uc request. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit 5899329b19100c0b82dc78e9b21ed8b920c9ffb3 Author: venkatesh.pallipadi@intel.com Date: Thu Dec 18 11:41:30 2008 -0800 x86: PAT: implement track/untrack of pfnmap regions for x86 - v3 Impact: New mm functionality. Hookup remap_pfn_range and vm_insert_pfn and corresponding copy and free routines with reserve and free tracking. reserve and free here only takes care of non RAM region mapping. For RAM region, driver should use set_memory_[uc|wc|wb] to set the cache type and then setup the mapping for user pte. We can bypass below reserve/free in that case. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit 2ab640379a0ab4cef746ced1d7e04a0941774bcb Author: venkatesh.pallipadi@intel.com Date: Thu Dec 18 11:41:29 2008 -0800 x86: PAT: hooks in generic vm code to help archs to track pfnmap regions - v3 Impact: Introduces new hooks, which are currently null. Introduce generic hooks in remap_pfn_range and vm_insert_pfn and corresponding copy and free routines with reserve and free tracking. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit e121e418441525b5636321fe03d16f0193ad218e Author: venkatesh.pallipadi@intel.com Date: Thu Dec 18 11:41:28 2008 -0800 x86: PAT: add follow_pfnmp_pte routine to help tracking pfnmap pages - v3 Impact: New currently unused interface. Add a generic interface to follow pfn in a pfnmap vma range. This is used by one of the subsequent x86 PAT related patch to keep track of memory types for vma regions across vma copy and free. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit 3c8bb73ace6249bd089b70c941440441940e3365 Author: venkatesh.pallipadi@intel.com Date: Thu Dec 18 11:41:27 2008 -0800 x86: PAT: store vm_pgoff for all linear_over_vma_region mappings - v3 Impact: Code transformation, new functions added should have no effect. Drivers use mmap followed by pgprot_* and remap_pfn_range or vm_insert_pfn, in order to export reserved memory to userspace. Currently, such mappings are not tracked and hence not kept consistent with other mappings (/dev/mem, pci resource, ioremap) for the sme memory, that may exist in the system. The following patchset adds x86 PAT attribute tracking and untracking for pfnmap related APIs. First three patches in the patchset are changing the generic mm code to fit in this tracking. Last four patches are x86 specific to make things work with x86 PAT code. The patchset aso introduces pgprot_writecombine interface, which gives writecombine mapping when enabled, falling back to pgprot_noncached otherwise. This patch: While working on x86 PAT, we faced some hurdles with trackking remap_pfn_range() regions, as we do not have any information to say whether that PFNMAP mapping is linear for the entire vma range or it is smaller granularity regions within the vma. A simple solution to this is to use vm_pgoff as an indicator for linear mapping over the vma region. Currently, remap_pfn_range only sets vm_pgoff for COW mappings. Below patch changes the logic and sets the vm_pgoff irrespective of COW. This will still not be enough for the case where pfn is zero (vma region mapped to physical address zero). But, for all the other cases, we can look at pfnmap VMAs and say whether the mappng is for the entire vma region or not. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Suresh Siddha Signed-off-by: H. Peter Anvin commit f0bc2202e0373eb8e9b1ddbec930e2e681357db8 Author: Jaswinder Singh Date: Wed Dec 17 23:20:05 2008 +0530 x86: process.c declare c1e_remove_cpu before they get used Impact: cleanup, avoid sparse warning Included asm/idle.h for c1e_remove_cpu() declaration. Fixes this sparse warning: CHECK arch/x86/kernel/process.c arch/x86/kernel/process.c:284:6: warning: symbol 'c1e_remove_cpu' was not declared. Should it be static? Signed-off-by: Jaswinder Singh Signed-off-by: Ingo Molnar commit 5c2628e8b4f670d0954053444289e2b018be957a Author: Hiroshi Shimamoto Date: Thu Dec 18 09:18:35 2008 -0800 x86: sigframe.h: add guard macro Impact: cleanup Add missing guard macro _ASM_X86_SIGFRAME_H. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit f269b07e862c395d6981ab2c05d6bc34b0249e90 Author: Vegard Nossum Date: Thu Dec 18 18:35:06 2008 +0100 x86: revert CONFIG_RELOCATABLE=y defconfig change This commit: commit 5cb04df8d3f03e37a19f2502591a84156be71772 Author: Ingo Molnar Date: Sun May 4 19:49:04 2008 +0200 x86: defconfig updates changed CONFIG_RELOCATABLE from n to y, which may lead to a mismatch between the vmlinux debug information and the runtime location of the kernel, even when the bootloader does not relocate the kernel. Revert the specific change. Works for me with GRUB and qemu. Reference: http://lkml.org/lkml/2008/11/25/243 Signed-off-by: Vegard Nossum Signed-off-by: Ingo Molnar commit 179efcb47d5a5dd34a45be3f0eca4bffa717c6b4 Author: Vegard Nossum Date: Tue Dec 16 12:33:43 2008 +0100 kbuild: add headerdep used to detect inclusion cycles in header files Signed-off-by: Vegard Nossum Signed-off-by: Sam Ravnborg commit 40aa4a30d0fd075fb934de4ee8163056827052ab Author: Mark Brown Date: Tue Dec 16 10:15:12 2008 +0000 ASoC: Add WM8350 AudioPlus codec driver The WM8350 is an integrated audio and power management subsystem which provides a single-chip solution for portable audio and multimedia systems. The integrated audio CODEC provides all the necessary functions for high-quality stereo recording and playback. Programmable on-chip amplifiers allow for the direct connection of headphones and microphones with a minimum of external components. A programmable low-noise bias voltage is available to feed one or more electret microphones. Additional audio features include programmable high-pass filter in the ADC input path. This driver was originally written by Liam Girdwood with further updates from me. Signed-off-by: Mark Brown commit b8b33cb5608a3bb1b072548dc89159ef614096ab Author: Mark Brown Date: Thu Dec 18 11:19:30 2008 +0000 ASoC: Complain if we fail to create DAPM controls This should never happen and it's helpful to identify the specific control that failed when it does happen. Signed-off-by: Mark Brown commit 0b34a3d03e2fa615a786027b1ef4cbbd8c807f2c Author: Mark Brown Date: Tue Dec 16 14:44:48 2008 +0000 ASoC: Ease merge difficulties from new architectures Rather than listing lots of architectures per line in Kconfig and Makefile, causing merge conflicts all the time, have one per line in alphabetical order. Signed-off-by: Mark Brown commit 9c2c48020ec0dd6ecd27e5a1298f73b40d85a595 Author: Ken Chen Date: Tue Dec 16 23:41:22 2008 -0800 schedstat: consolidate per-task cpu runtime stats Impact: simplify code When we turn on CONFIG_SCHEDSTATS, per-task cpu runtime is accumulated twice. Once in task->se.sum_exec_runtime and once in sched_info.cpu_time. These two stats are exactly the same. Given that task->se.sum_exec_runtime is always accumulated by the core scheduler, sched_info can reuse that data instead of duplicate the accounting. Signed-off-by: Ken Chen Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 6d102bc68f3dd2ae0e305b09170b1751aa67baeb Author: Lai Jiangshan Date: Wed Dec 17 17:48:23 2008 +0800 tracing/ring-buffer: remove unused ring_buffer size Impact: remove dead code struct ring_buffer.size is not set after ring_buffer is initialized or resized. it is always 0. we can use "buffer->pages * PAGE_SIZE" to get ring_buffer's size Signed-off-by: Lai Jiangshan Signed-off-by: Ingo Molnar commit 7c9c160c54fc545efc23881344593868e5f717bd Author: Jaswinder Singh Date: Wed Dec 17 23:18:52 2008 +0530 x86: tls.c declare sys_set_thread_area and sys_get_thread_area before they get used Impact: cleanup In asm/syscalls.h move out sys_set_thread_area() and sys_get_thread_area() as they are common for both 32 and 64 bit. Signed-off-by: Jaswinder Singh Signed-off-by: Ingo Molnar commit 57a37505d19f4dfeee26f0fd7ea38ed6f1d10cbe Author: Jaswinder Singh Date: Wed Dec 17 23:17:21 2008 +0530 x86: time_64.c timer_interrupt() should be static Impact: cleanup, reduce kernel size a bit Signed-off-by: Jaswinder Singh Signed-off-by: Ingo Molnar commit 3d9101e92529e1ff6014f95a69afc82f37b9b13a Author: Thomas Gleixner Date: Wed Dec 17 22:34:13 2008 +0100 trace: fix task state printout Impact: fix occasionally incorrect trace output The tracing code has interesting varieties of printing out task state. Unfortunalely only one of the instances is correct as it copies the code from sched.c:sched_show_task(). The others are plain wrong as they treatthe bitfield as an integer offset into the character array. Also the size check of the character array is wrong as it includes the trailing \0. Use a common state decoder inline which does the Right Thing. Signed-off-by: Thomas Gleixner Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit ea3a6d6d60b2504c573fe3415f6617e8310c0236 Author: Steven Rostedt Date: Wed Dec 17 15:05:36 2008 -0500 ftrace: add not to regex on filtering functions Impact: enhancement Ingo Molnar has asked about a way to remove items from the filter lists. Currently, you can only add or replace items. The way items are added to the list is through opening one of the list files (set_ftrace_filter or set_ftrace_notrace) via append. If the file is opened for truncate, the list is cleared. echo spin_lock > /debug/tracing/set_ftrace_filter The above will replace the list with only spin_lock echo spin_lock >> /debug/tracing/set_ftrace_filter The above will add spin_lock to the list. Now this patch adds: echo '!spin_lock' >> /debug/tracing/set_ftrace_filter This will remove spin_lock from the list. The limited glob features of these lists also can be notted. echo '!spin_*' >> /debug/tracing/set_ftrace_filter This will remove all functions that start with 'spin_' Note: echo '!spin_*' > /debug/tracing/set_ftrace_filter will simply clear out the list (notice the '>' instead of '>>') Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit e05a43b744fb9518cbf8539a7ef33164ac60a70f Author: Steven Rostedt Date: Wed Dec 17 09:43:00 2008 -0500 trace: better use of stack_trace_enabled for boot up code Impact: clean up Andrew Morton suggested to use the stack_tracer_enabled variable to decide whether or not to start stack tracing on bootup. This lets us remove the start_stack_trace variable. Reported-by: Andrew Morton Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit f38f1d2aa5a3520cf05da7cd6bd12fe2b0c509b7 Author: Steven Rostedt Date: Tue Dec 16 23:06:40 2008 -0500 trace: add a way to enable or disable the stack tracer Impact: enhancement to stack tracer The stack tracer currently is either on when configured in or off when it is not. It can not be disabled when it is configured on. (besides disabling the function tracer that it uses) This patch adds a way to enable or disable the stack tracer at run time. It defaults off on bootup, but a kernel parameter 'stacktrace' has been added to enable it on bootup. A new sysctl has been added "kernel.stack_tracer_enabled" to let the user enable or disable the stack tracer at run time. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 40874491f9e9a4cb08eaf663dbe018bf5671975a Merge: d680fe44775ed17a80035462d9898f5e77bfd7dd d072c25f531c6513994960401d2c7f059434c0d2 Author: Ingo Molnar Date: Thu Dec 18 12:51:05 2008 +0100 Merge branches 'tracing/ftrace' and 'tracing/hw-branch-tracing' into tracing/core commit 1f04128a3db7c0f0e8b5d25323eba70ac342f47f Author: Takashi Iwai Date: Thu Dec 18 12:17:55 2008 +0100 ALSA: hda - Convert from takslet_hi_schedule() to tasklet_schedule() Replace all tasklet_hi_schedule() callers with the normal tasklet_schedule(). The former often causes troubles with RT-kernels, and has actually no merit. Signed-off-by: Takashi Iwai commit d98f9d84422c393103dc7569dc8444bac628f7ac Author: Hiroshi Shimamoto Date: Wed Dec 17 18:52:45 2008 -0800 x86: ia32_signal: use sigframe.h Impact: cleanup Use arch/x86/include/asm/sigframe.h instead of defining redundant structures. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 3b0d29ee1c73b6b90bfddd10f7b8e86632b6b694 Author: Hiroshi Shimamoto Date: Wed Dec 17 18:51:46 2008 -0800 x86: ia32_signal: rename struct sigframe and rt_sigframe Impact: cleanup, prepare to include sigframe.h Rename struct sigframe to struct sigframe_ia32 and struct rt_sigframe to struct rt_sigframe_ia32. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit c85c2ff877c9305f801f7d5b9e6382cb05a03d45 Author: Hiroshi Shimamoto Date: Wed Dec 17 18:51:08 2008 -0800 x86: signal: prepare to include from ia32_signal.c Impact: cleanup, prepare to use from ia32_signal.c Make struct sigframe_ia32 and rt_sigframe_ia32 visible to ia32_signal.c. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 41af86fad3c40646b9748279e3862781e937a5d2 Author: Hiroshi Shimamoto Date: Wed Dec 17 18:50:32 2008 -0800 x86: signal: move sigframe.h to arch/x86/include/asm Impact: cleanup, move header file Move arch/x86/kernel/sigframe.h to arch/x86/include/asm/sigframe.h. It will be used in arch/x86/ia32/ia32_signal.c. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit a5c56eb36f999ae0ecac278e51fd1cf8feb16c2f Author: Hiroshi Shimamoto Date: Wed Dec 17 18:49:55 2008 -0800 x86: signal: rename sigframe and rt_sigframe on 32-bit Impact: cleanup, prepare to move sigframe.h On 32-bit, rename struct sigrame to struct sigframe_ia32, struct rt_sigframe to struct rt_sigframe_ia32 and several structures. And add helper macros to access the above data in arch/x86/kernel/signal.c. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit f5223763a664da16771211f9d293e18cb242b246 Author: Hiroshi Shimamoto Date: Wed Dec 17 18:47:17 2008 -0800 x86: signal: move ia32 func declarations into arch/x86/kernel/signal.c Impact: cleanup Move declarations of ia32_setup_rt_frame() and ia32_setup_frame() into arch/x86/kernel/signal.c. This is for future use of sigframe.h. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 3218c178b41b420cb7e0d120c7a137a3969242e5 Author: Takashi Iwai Date: Thu Dec 18 09:17:56 2008 +0100 ALSA: hda - Remove duplicated strings from codec name Remove codec vendor names from the codec name strings. The vendor name is already given from the vendor name table, so displayed doubly. Signed-off-by: Takashi Iwai commit 74c611334ff131f2b87c7634314bde9e7fd98653 Author: Takashi Iwai Date: Thu Dec 18 09:11:33 2008 +0100 ALSA: hda - Add Intel vendor id string Added Intel codec vendor id string (0x8086). Also fixed Intel-HDMI codec name strings, too. Signed-off-by: Takashi Iwai commit 49ad9599d42da4787d5b3a19263440e0fcd4d1fc Author: David S. Miller Date: Wed Dec 17 22:11:38 2008 -0800 Revert "net: release skb->dst in sock_queue_rcv_skb()" This reverts commit 70355602879229c6f8bd694ec9c0814222bc4936. As pointed out by Mark McLoughlin IP_PKTINFO cmsg data is one post-queueing user, so this optimization is not valid right now. Signed-off-by: David S. Miller commit 3b5b35d02264580950d1e1565431b99d97c20ded Author: Holger Eitzenberger Date: Wed Dec 17 19:13:53 2008 -0800 bonding: use port_params in __update_lacpdu_from_port Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 3c52065fbbf3bd11776d63d43e18d0fd285b02e2 Author: Holger Eitzenberger Date: Wed Dec 17 19:13:27 2008 -0800 bonding: use port_params in __update_default_selected() I also removed some of the unneeded braces in the if condition to improve readability and a little bit of reformatting. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit ce6a49ad401d78ff1f66e2a55cf445d0f45d8146 Author: Holger Eitzenberger Date: Wed Dec 17 19:13:07 2008 -0800 bonding: use port_params in __update_selected() Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit a6ae186b9a950f4d0467cb9c3661965f442176de Author: Holger Eitzenberger Date: Wed Dec 17 19:12:40 2008 -0800 bonding: remove various function declarations They are all defined before used, it's therefore ok to remove them. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit c7e703d01ecfb8db1557090938f0eabb51ebe3a1 Author: Holger Eitzenberger Date: Wed Dec 17 19:12:07 2008 -0800 bonding: init port_params from template Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 5eefd1adceb49cada224a383f4a36c2f27fe4968 Author: Holger Eitzenberger Date: Wed Dec 17 19:08:46 2008 -0800 bonding: use plain memcpy in __record_default() Also remove the pointless comment at the top. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit b99d6ba96d814dab06671029948f22995d603d7b Author: Holger Eitzenberger Date: Wed Dec 17 19:08:14 2008 -0800 bonding: use port_params in __record_pdu() It helps in maintaining the various partner information values from the LACPDU. It also removes the pointless comment at the top. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 1055c9aba3b6850245fe3bbb533d4747e7f904bf Author: Holger Eitzenberger Date: Wed Dec 17 19:07:38 2008 -0800 bonding: introduce and use port_params structure It generally helps to handle those values in various places, using it might make the code more readable and gives room for other improvements. The IEEE standard talks about them as "parameter values". Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit aa3128199dbe07b5be3382de590c59216f91d3e3 Author: Holger Eitzenberger Date: Wed Dec 17 19:07:16 2008 -0800 bonding: improve elaborate port_state assignment The previous code was just a funny way of assigning both values (they are both of type u8). Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 42199884594bc336c9185441cbed99a9324dab34 Author: Andy Fleming Date: Wed Dec 17 16:52:30 2008 -0800 gianfar: Continue polling until both tx and rx are empty gfar_poll would declare polling done once the rx queue was empty, but the tx queue could still have packets left. Stolen mostly from the e1000 driver. Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit 8c7396aebb68994c0519e438eecdf4d5fa9c7844 Author: Dai Haruki Date: Wed Dec 17 16:52:00 2008 -0800 gianfar: Merge Tx and Rx interrupt for scheduling clean up ring No clean up function is executed in the interrupt context by this patch. Signed-off-by: Dai Haruki Acked-by: Andy Fleming Signed-off-by: David S. Miller commit c50a5d9aedef5b0b289d07f6d73934d394e50b3f Author: Dai Haruki Date: Wed Dec 17 16:51:32 2008 -0800 gianfar: Use interface name in interrupt name to distinguish the source. Interface name (ex. eth0) is used as the prefix for the interrupt name, with _rx, _tx, and _er appended to distinguish multiple interrupts on the same interface. Signed-off-by: Dai Haruki Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit 4669bc907488f5a3ee399ced132deb6165e489a3 Author: Dai Haruki Date: Wed Dec 17 16:51:04 2008 -0800 gianfar: Add Scatter Gather support Scatter Gather support in gianfar driver to handle fragmented frames on the transmit side. Signed-off-by: Poonam Aggrwal Signed-off-by: Dai Haruki Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit 8882d9a60028a9937e9c5652cfb80d4399ce5242 Author: Andy Fleming Date: Wed Dec 17 16:50:22 2008 -0800 gianfar: Fix packet drop when out of memory The patch which fixed gianfar so it drops packets when it runs out of memory left in the code which frees the skb when it drops packets. Change the code so that we only free the skb if the new skb was successfully created. Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit a693722aec4ce26fb46c21cf4bf4422484a397a7 Author: Arnaldo Carvalho de Melo Date: Wed Dec 17 16:08:01 2008 -0800 dccp_diag: LISTEN sockets don't have CCIDs And thus when we try to use 'ss -danemi' on these sockets that have no ccid blocks (data collected using systemtap after I fixed the problem): dccp_diag_get_info sk=0xffff8801220a3100, dp->dccps_hc_rx_ccid=0x0000000000000000, dp->dccps_hc_tx_ccid=0x0000000000000000 We get an OOPS: mica.ghostprotocols.net login: BUG: unable to handle kernel NULL pointer dereferenc0 IP: [] dccp_diag_get_info+0x82/0xc0 [dccp_diag] PGD 12106f067 PUD 122488067 PMD 0 Oops: 0000 [#1] PREEMPT Fix is trivial, and 'ss -d' is working again: [root@mica ~]# ss -danemi State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 0 *:5001 *:* ino:7288 sk:220a3100ffff8801 mem:(r0,w0,f0,t0) cwnd:0 ssthresh:0 [root@mica ~]# Signed-off-by: Arnaldo Carvalho de Melo Signed-off-by: David S. Miller commit c280266a326ccabeb64b6d69fa4fd21faf5bf354 Merge: eddce368f99b682683e09cf206eaa25131d40abe 55dac3a5553b13891f0ae4bbd11920619b5436d4 Author: Paul Mackerras Date: Thu Dec 18 11:06:12 2008 +1100 Merge branch 'linux-2.6' into next commit 9732d523212060c44a4723332bdc5ee429eeabc3 Author: Rémi Denis-Courmont Date: Wed Dec 17 15:49:09 2008 -0800 Phonet: USB CDC Phonet function for gadget framework This implements the Nokia vendor-specific communication device class function to exchange Phonet messages over USB. This function is already found in the "PC suite" USB profile of (non-Linux) Nokia handsets. Signed-off-by: Rémi Denis-Courmont Signed-off-by: David S. Miller commit 893873f3965ae0173a9315534bec7628162d2243 Author: Rémi Denis-Courmont Date: Wed Dec 17 15:48:50 2008 -0800 Phonet: get rid of deferred work on the transmission path Signed-off-by: Rémi Denis-Courmont Signed-off-by: David S. Miller commit be677730a0ccb6bedced6f65f2ba8f57a3c607ba Author: Rémi Denis-Courmont Date: Wed Dec 17 15:48:31 2008 -0800 Phonet: use atomic for packet TX window GPRS TX flow control won't need to lock the underlying socket anymore. Signed-off-by: Rémi Denis-Courmont Signed-off-by: David S. Miller commit 57c81fffc863fb4c1804bc963bcbfb82d736c6df Author: Rémi Denis-Courmont Date: Wed Dec 17 15:47:48 2008 -0800 Phonet: allocate separate ARP type for GPRS over a Phonet pipe A separate xmit lock class supports GPRS over a Phonet pipe over a TUN device (type ARPHRD_NONE). Signed-off-by: Rémi Denis-Courmont Signed-off-by: David S. Miller commit 2d91d78b68606ff7ce52ea70e187dee7831aa2f6 Author: Rémi Denis-Courmont Date: Wed Dec 17 15:47:29 2008 -0800 Phonet: allocate a non-Ethernet ARP type Also leave some room for more 802.11 types. Signed-off-by: Rémi Denis-Courmont Signed-off-by: David S. Miller commit fc10af8e658936f7b2bddd077f7ddcbe1eddc066 Author: Oliver Hartkopp Date: Wed Dec 17 15:37:55 2008 -0800 vcan: whitespace fixes Signed-off-by: Oliver Hartkopp Signed-off-by: David S. Miller commit a67534a7824c7ef3c4c377f82e60fcaa137f9a2c Author: Jiri Slaby Date: Wed Dec 10 09:09:27 2008 -0300 V4L/DVB (9908a): MAINTAINERS: mark linux-uvc-devel as subscribers only Posting to linux-uvc-devel is restricted to members. You can subscribe to the list at ... MAINTAINERS | 2 +- Signed-off-by: Jiri Slaby Acked-by: Laurent Pinchart Signed-off-by: Mauro Carvalho Chehab commit 7a95d267fb62cd6b80ef73be0592bbbe1dbd5df7 Author: Cyrill Gorcunov Date: Wed Dec 17 00:34:06 2008 -0800 net: ppp_generic - use idr technique instead of cardmaps Use idr technique instead of own implemented cardmaps. It saves us a number of lines and gives an ability to use library functions. Signed-off-by: Cyrill Gorcunov Signed-off-by: David S. Miller commit c0700f90e5300c63d01c70e157e75e4510dd2981 Author: David S. Miller Date: Tue Dec 16 23:53:20 2008 -0800 bnx2x: Fix namespace collision with FLOW_CTRL_{TX,RX} These are now defined in linux/mii.h and the bnx2x driver defines different values which are shared with hardware data structures. So add a "BNX2X_" prefix to these macro names. Based upon a report from Stephen Rothwell. Signed-off-by: David S. Miller commit f6d52432a4bc6da5de2a0bbb350f735db3206aa5 Author: David S. Miller Date: Tue Dec 16 23:45:02 2008 -0800 bnx2: Don't redefine FLOW_CTRL_{RX,TX}. They are provided generically by linux/mii.h now. Signed-off-by: David S. Miller commit 1f2435e532bd64742c3f766b7d5c17cc9d0b8558 Author: Michael Chan Date: Tue Dec 16 20:28:13 2008 -0800 bnx2: Update version to 1.9.0. And fix the 5716S pci_device_id entry to point to the proper string. Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 4e1d0de95c55383f598516ebf82969260c18e4bd Author: Michael Chan Date: Tue Dec 16 20:27:45 2008 -0800 bnx2: Rename MSI-X vectors. Change MSI-X vector names to "ethx-%d". Signed-off-by: Michael Chan Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit eddce368f99b682683e09cf206eaa25131d40abe Merge: b53c7583e26746ef6f66c866841e10450150ed8e cd85400a022335a92fa3c25827179a7ad5e02225 Author: Paul Mackerras Date: Wed Dec 17 11:01:43 2008 +1100 Merge branch 'next' of master.kernel.org:/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx into next commit f40e0638237a2d3e2ce8bedf3af4b3c02cf6fff7 Author: Julia Lawall Date: Tue Dec 16 15:43:29 2008 -0800 drivers/net/hamradio: Move a dereference below a NULL test In each case, if the NULL test is necessary, then the dereference should be moved below the NULL test. The semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @@ type T; expression E; identifier i,fld; statement S; @@ - T i = E->fld; + T i; ... when != E when != i if (E == NULL) S + i = E->fld; // Signed-off-by: Julia Lawall Signed-off-by: David S. Miller commit f162e97d778ec29492be8eb9bbecb65be976b7c8 Author: Andy Fleming Date: Tue Dec 16 15:39:48 2008 -0800 phylib: Remove unnecessary "reset" fixups in genphy_setup_forced genphy_setup_forced hasn't actually reset the PHY for a long time, but a comment to that effect remained in the code, so code continued to act as if it *had* reset the PHY, and called the necessary fixup functions to respond to a PHY reset. With no reset, those functions are no longer needed, so we remove them. Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit 5a5efed4817ef931f648b118aeb9222e53122d2b Author: Dai Haruki Date: Tue Dec 16 15:34:50 2008 -0800 gianfar: Make all BD status writes 32-bit Whenever we want to update the status field in a BD, we usually want to update the length field, too. By combining them into one 32-bit field, we reduce the number of stores to memory shared with the controller, and we eliminate the need for order-enforcement, as the length and "READY" bit are now updated atomically at the same time. Signed-off-by: Dai Haruki Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit 31de198b4d2732028f4c5bff04b0103b1d8c1d8c Author: Andy Fleming Date: Tue Dec 16 15:33:40 2008 -0800 gianfar: Add macros for stepping through BDs This code is based strongly on code from Dai Haruki . The gianfar Buffer Descriptors are arranged in a circular array, the end of which is denoted by setting the "WRAP" bit in the descriptor. However, the software knows the end of the ring because it knows how many descriptors are there. Rather than check each descriptor for whether the WRAP bit is set, use pointer math to determine where the next BD is. This is also useful for when we want to look at BDs other than the very next one (for Scatter-Gather). Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit a22823e72a4821ce1d4a248fbd8f5a81795af339 Author: Dai Haruki Date: Tue Dec 16 15:32:11 2008 -0800 gianfar: Remove unused gfar_add_fcb() function parameter - Also, use cacheable_memzero instead of memset for performance reasons. Signed-off-by: Dai Haruki Acked-by: Andy Fleming Signed-off-by: David S. Miller commit 2c2db48acb34735d8ef257f130c0c330c46c8f6a Author: Dai Haruki Date: Tue Dec 16 15:31:15 2008 -0800 gianfar: Enable padding and Optimize the frame prepended bytes handling The eTSEC can prepend up to 32 bytes to a received frame, usually for the purpose of aligning the IP address to a word boundary, so this turns it on. While we're in there, make the handling of the pre-frame bytes (padding and Frame Control Block) cleaner. Signed-off-by: Dai Haruki Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit 77ecaf2d5a8bfd548eed3f05c1c2e6573d5de4ba Author: Dai Haruki Date: Tue Dec 16 15:30:48 2008 -0800 gianfar: Fix VLAN HW feature related frame/buffer size calculation. Optimize the VLAN checking logic as well. Signed-off-by: Dai Haruki Acked-by: Andy Fleming Signed-off-by: David S. Miller commit 12dea57be552a291e93827baeffbb91e33f587a6 Author: Dai Haruki Date: Tue Dec 16 15:30:20 2008 -0800 gianfar: Fix eTSEC configuration procedure Fix some bugs in the ethtool configuration functions: * gfar_clean_rx_ring should not be called with interrupts disabled. * Update last transmission time to avoid tx timeout. * Delete redundant NETIF_F_IP_CSUM check in gfar_start_xmit * Use netif_tx_lock_bh when reconfiguring the tx csum Signed-off-by: Dai Haruki Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit b46a8454cd304b5376ba00d3457a612720e47269 Author: Dai Haruki Date: Tue Dec 16 15:29:52 2008 -0800 gianfar: Optimize interrupt coalescing configuration Store the interrupt coalescing values in the form in which they will be written to the interrupt coalescing registers. This puts a little overhead into the ethtool configuration, and takes it out of the interrupt handler Signed-off-by: Dai Haruki Acked-by: Andy Fleming Signed-off-by: David S. Miller commit b31a1d8b41513b96e9c7ec2f68c5734cef0b26a4 Author: Andy Fleming Date: Tue Dec 16 15:29:15 2008 -0800 gianfar: Convert gianfar to an of_platform_driver Does the same for the accompanying MDIO driver, and then modifies the TBI configuration method. The old way used fields in einfo, which no longer exists. The new way is to create an MDIO device-tree node for each instance of gianfar, and create a tbi-handle property to associate ethernet controllers with the TBI PHYs they are connected to. Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit d680fe44775ed17a80035462d9898f5e77bfd7dd Author: Cyrill Gorcunov Date: Sat Dec 13 00:09:08 2008 +0300 x86: entry_64 - introduce FTRACE_ frame macro v2 Impact: clean up Itroduce MCOUNT_SAVE/RESTORE_FRAME which allow us to save a number of lines on source level. Also fix a comment in ftrace.h. Signed-off-by: Ingo Molnar commit 66896a85cf2890b6bbbc4c9ccdcd296600ffbf89 Author: Frederic Weisbecker Date: Sat Dec 13 20:18:13 2008 +0100 tracing/ftrace: add the printk-msg-only option Impact: display ftrace_printk messages "as is" By default, ftrace_printk() messages find their output with some other informations like pid, caller, ... Sometimes a developer just want to have the ftrace_printk left "as is", without other information. This is done by providing a default-off option called printk-msg-only. To enable it, just do `echo printk-msg-only > /debugfs/tracing/trace_options` Before the patch: <...>-2739 [000] 145.692153: __might_sleep: I'm an ftrace_printk msg in __might_sleep <...>-2739 [000] 145.692155: __might_sleep: I'm another ftrace_printk msg in __might_sleep After the patch and the printk-msg-only option enabled: I'm an ftrace_printk msg in __might_sleep I'm another ftrace_printk msg in __might_sleep Signed-off-by: Frederic Weisbecker Cc: Steven Rostedt Signed-off-by: Ingo Molnar commit 2c2d7329d8afa9efa3ec24e19a53e7be9d14f242 Author: Frederic Weisbecker Date: Tue Dec 16 22:08:58 2008 +0100 tracing/ftrace: use preempt_enable_no_resched_notrace in ring_buffer_time_stamp() Impact: prevent a trace recursion After some tests with function graph tracer under x86-32, I saw some recursions caused by ring_buffer_time_stamp() that calls preempt_enable_no_notrace() which calls preempt_schedule() which is traced itself. This patch re-enables preemption without rescheduling. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 257d938a0c17838c740eb68f0005b041444ac2c2 Author: Andy Fleming Date: Tue Dec 16 15:25:45 2008 -0800 gianfar: Use gfar_halt to stop DMA in gfar_probe gfar_halt does everything we want to do there, including disabling TX/RX. It also doesn't unnecessarily enable DMA if it's already stopped. Signed-off-by: Andy Fleming Signed-off-by: David S. Miller commit 5eeabf5150878018d7c7092042f3b681f5b554b5 Author: Sakari Ailus Date: Tue Dec 16 15:24:05 2008 -0800 tlan: Remove broken support for big buffers The big rx/tx buffer support is broken and unlikely to be very useful as such. Remove it. Signed-off-by: Sakari Ailus Signed-off-by: David S. Miller commit 354ade9058687fdef8a612c7b298d4c51dae3da7 Merge: 9f690db7ff4cb32493c0b0b13334cc4f5fd49a6b bb5f133dbc4f04b6388715d364ae5865455166c2 Author: David S. Miller Date: Tue Dec 16 15:23:54 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/enc28j60.c commit 8bee3f0a662ad9c3d6bb705b0530a3b90f089c55 Author: Hiroshi Shimamoto Date: Tue Dec 16 14:04:43 2008 -0800 x86: ia32_signal: use proper macro __USER32_DS Impact: cleanup Use __USER32_DS instead of __USER_DS in ia32_signal.c. No impact, because __USER32_DS is defined __USER_DS. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit d0b48ca189523b638d8674fa41e94d1950a17038 Author: Hiroshi Shimamoto Date: Tue Dec 16 14:03:36 2008 -0800 x86: ia32_signal: use __put_user() instead of __copy_to_user() Impact: cleanup __put_user() can be used for constant size 8, like arch/x86/kernel/signal.c. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit ae417bb487e3bb88dc862b83b4bf00d87ba67ec8 Author: Hiroshi Shimamoto Date: Tue Dec 16 14:02:16 2008 -0800 x86: signal: use signal_fault() in sys_sigreturn() Impact: cleanup Call signal_fault() in error route of sys_sigreturn(). Change log level to KERN_EMERG if current is init. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit c8182f0016fb65a721c4fbe487909a2d56178135 Author: Russ Anderson Date: Fri Dec 12 11:07:00 2008 -0600 sgi-xp: xpc needs to pass the physical address, not virtual Impact: fix crash xpc needs to pass the physical address, not virtual. Testing uncovered this problem. The virtual address happens to work most of the time due to the way bios was masking off the node bits. Passing the physical address makes it work all of the time. Signed-off-by: Russ Anderson Acked-by: Dean Nelson Signed-off-by: Ingo Molnar commit 189f67c4408806563a1f061f5c8bf184a6658477 Author: Jack Steiner Date: Fri Dec 12 14:50:40 2008 -0600 x86: UV fix for global physical addresses Impact: fix UV boot crash This fixes a UV bug related to generating global memory addresses on partitioned systems. Partition systems do not have physical memory at address 0. Instead, a chunk of high memory is remapped by the chipset so that it appears to be at address 0. This remapping is INVISIBLE to most of the OS. The only OS functions that need to be aware of the remaping are functions that directly interface to the chipset. The GRU is one example. Also, delete a couple of unused macros related to global memory addresses. Signed-off-by: Jack Steiner Signed-off-by: Ingo Molnar commit c15cb37cc4e9809624411333b96109ddf770e29c Merge: 77be80e437fec44f8b7a620314b7d7b605b8d93b 8b1fae4e4200388b64dd88065639413cb3f1051c Author: Ingo Molnar Date: Tue Dec 16 22:53:53 2008 +0100 Merge commit 'v2.6.28-rc8' into x86/uv commit fde9071167c4624281553b23232aa8b81e71c790 Author: Zachary Amsden Date: Fri Dec 12 11:26:35 2008 -0800 x86: clean up dead code in vmi_32.c Impact: cleanup, remove dead debug code I ran across some old debugging code in vmi paravirt-ops code that was already dead, but still potentially useful. After reviewing recent changes to the way kernel page tables are allocated and initialized, and the lack of bugs caught by this debugging code, I've concluded it is now totally useless to have around, and it's already been #if 0'd for quite some time. There's no rush to get this in mainline, but it's also totally harmless, so I'll let the x86 maintainers decide where it should be tucked. I've been out of the mainstream dev loop for a couple months, so apologies if I haven't got any protocol changes in order. Remove mummified remains found in vmi_32.c Signed-off-by: Zachary Amsden Signed-off-by: Ingo Molnar commit 8ae936690972dfcad73d0dde1095b9f32af5ee95 Author: Hiroshi Shimamoto Date: Fri Dec 12 15:52:26 2008 -0800 x86: hardirq: use inc_irq_stat() in non-unified functions Impact: cleanup Replace incrementing irq stat with inc_irq_stat() in non-unified functions. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit e1286f2c686f5976e0424bb6195ece25e7a17607 Author: Philipp Kohlbecher Date: Sun Dec 14 18:50:01 2008 +0100 x86: documentation fix regarding boot protocol Impact: clarify documentation Documentation/x86/boot.txt describes payload_offset as the offset from the end of the real-mode code. In fact, it is more accurately described as the offset from the beginning of the protected-mode code, as (a) this is how it is actually calculated and (b) the padding after the real-mode code is not included in the offset. Signed-off-by: Philipp Kohlbecher Acked-by: Ian Campbell Acked-by: H. Peter Anvin Signed-off-by: Ingo Molnar commit 78f902ccc597d6ce3e8d1477d70f2d79e960ba7a Merge: 9ee670fd87b7d69c8633b94c42aadcbbcb96f28e 8b1fae4e4200388b64dd88065639413cb3f1051c Author: Ingo Molnar Date: Tue Dec 16 22:04:48 2008 +0100 Merge commit 'v2.6.28-rc8' into x86/doc commit ecbf29cdb3990c83d90d0c4187c89fb2ce423367 Author: Jeremy Fitzhardinge Date: Tue Dec 16 12:37:07 2008 -0800 xen: clean up asm/xen/hypervisor.h Impact: cleanup hypervisor.h had accumulated a lot of crud, including lots of spurious #includes. Clean it all up, and go around fixing up everything else accordingly. Signed-off-by: Jeremy Fitzhardinge Signed-off-by: Ingo Molnar commit 80f40ee4a07530cc3acbc239a9299ec47025825b Author: Bharata B Rao Date: Mon Dec 15 11:56:48 2008 +0530 sched: use RCU variant of list traversal in for_each_leaf_rt_rq() Impact: fix potential of rare crash for_each_leaf_rt_rq() walks an RCU protected list (rq->leaf_rt_rq_list), but doesn't use list_for_each_entry_rcu(). Fix this. Signed-off-by: Bharata B Rao Cc: Peter Zijlstra Signed-off-by: Ingo Molnar commit a9b43c7d9890066709609df849959009645c1a19 Author: Jaswinder Singh Date: Mon Dec 15 23:11:10 2008 +0530 x86: setup.c find_and_reserve_crashkernel should be static Impact: cleanup, reduce kernel size a bit Signed-off-by: Jaswinder Singh Signed-off-by: Ingo Molnar commit c0195b6da08c4ddd8c8ea830f6c3c40bc7f82071 Author: Jaswinder Singh Date: Mon Dec 15 22:26:30 2008 +0530 x86: ldt.c declare sys_modify_ldt before they get used Impact: cleanup In asm/syscalls.h moved out sys_modify_ldt from CONFIG_X86_32 as it is common for both 32 and 64 bit. Signed-off-by: Jaswinder Singh Signed-off-by: Ingo Molnar commit 7b5b50f1be9e07714cfaa620d102c8daf3cdd814 Author: Jaswinder Singh Date: Mon Dec 15 22:24:48 2008 +0530 x86: signal.c declare do_notify_resume before they get used Impact: cleanup In asm/signal.h moved out do_notify_resume from __i386__ as it is common for both 32 and 64 bit. Signed-off-by: Jaswinder Singh Signed-off-by: Ingo Molnar arch/x86/include/asm/signal.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) commit aab02f0ae20b8fe0fe891e9f107c6e392256ca01 Author: Jaswinder Singh Date: Mon Dec 15 22:23:54 2008 +0530 x86: process_64.c declare __switch_to() and sys_arch_prctl before they get used Impact: cleanup In asm/system.h moved out __switch_to from CONFIG_X86_32 as it is common for both 32 and 64 bit. In asm/pctl.h defined sys_arch_prctl Signed-off-by: Jaswinder Singh Signed-off-by: Ingo Molnar commit f63c2f248959366cd11bfa476f866737047cf663 Author: Tej Date: Tue Dec 16 11:56:06 2008 -0800 xen: whitespace/checkpatch cleanup Impact: cleanup Signed-off-by: Tej Signed-off-by: Jeremy Fitzhardinge Signed-off-by: Ingo Molnar commit 40fb17152c50a69dc304dd632131c2f41281ce44 Author: Venki Pallipadi Date: Mon Nov 17 16:11:37 2008 -0800 x86: support always running TSC on Intel CPUs Impact: reward non-stop TSCs with good TSC-based clocksources, etc. Add support for CPUID_0x80000007_Bit8 on Intel CPUs as well. This bit means that the TSC is invariant with C/P/T states and always runs at constant frequency. With Intel CPUs, we have 3 classes * CPUs where TSC runs at constant rate and does not stop n C-states * CPUs where TSC runs at constant rate, but will stop in deep C-states * CPUs where TSC rate will vary based on P/T-states and TSC will stop in deep C-states. To cover these 3, one feature bit (CONSTANT_TSC) is not enough. So, add a second bit (NONSTOP_TSC). CONSTANT_TSC indicates that the TSC runs at constant frequency irrespective of P/T-states, and NONSTOP_TSC indicates that TSC does not stop in deep C-states. CPUID_0x8000000_Bit8 indicates both these feature bit can be set. We still have CONSTANT_TSC _set_ and NONSTOP_TSC _not_set_ on some older Intel CPUs, based on model checks. We can use TSC on such CPUs for time, as long as those CPUs do not support/enter deep C-states. Signed-off-by: Venkatesh Pallipadi Signed-off-by: Ingo Molnar commit 7e91a122b11bb250d08ab125afd2c232c87502e1 Merge: 1bda71282ded6a2e09a2db7c8884542fb46bfd4f d4377974062122d6d9be0bbd8a910a0954714194 Author: Ingo Molnar Date: Tue Dec 16 21:02:10 2008 +0100 Merge branch 'x86/cpufeature' into x86/tsc Merge itto in x86/tsc because an upcoming patch relies on a new cpuid bit defined in the x86/cpufeature branch. commit d4377974062122d6d9be0bbd8a910a0954714194 Author: Ingo Molnar Date: Tue Dec 16 20:59:24 2008 +0100 x86: support always running TSC on Intel CPUs, add cpufeature definition Impact: add new synthetic-cpuid bit definition add X86_FEATURE_NONSTOP_TSC to the cpufeature bits - this is in preparation of Venki's always-running-TSC patch. Signed-off-by: Ingo Molnar commit dd7a5230cd651bfb119d222561c4032f30dd5659 Merge: 050dc6944b9ca2186f4729ab44e0da3743933941 8b1fae4e4200388b64dd88065639413cb3f1051c Author: Ingo Molnar Date: Tue Dec 16 20:57:41 2008 +0100 Merge commit 'v2.6.28-rc8' into x86/cpufeature commit df23cab563912ba43f7e9bc8ac517e5a2ddc9cd2 Author: Andreas Herrmann Date: Tue Dec 16 19:22:36 2008 +0100 x86: microcode_amd: modify log messages Impact: change microcode printk content Change log level and provide (at least I tried to;-) consistent, short, meaningful content. Signed-off-by: Andreas Herrmann Cc: Dmitry Adamushko Signed-off-by: Ingo Molnar commit 5549b94bc74c3e7edd44e0aeb7d9f773e82d2d20 Author: Andreas Herrmann Date: Tue Dec 16 19:21:30 2008 +0100 x86: microcode_amd: use 'packed' attribute for structs Impact: cleanup Signed-off-by: Andreas Herrmann Signed-off-by: Ingo Molnar commit 98415301ea2dd389539ab429bcfa9da07219eabc Author: Andreas Herrmann Date: Tue Dec 16 19:20:21 2008 +0100 x86: microcode_amd: remove (wrong) chipset deivce ID checks Impact: remove dead/incorrect code Currently there is no chipset specific ucode. The checks are incorrect anyway (e.g. pci device IDs are 16 bit and not 8 bit). Thus I remove the stuff for the time being and will reintroduce it if it's foreseeable that it is really needed. Signed-off-by: Andreas Herrmann Signed-off-by: Ingo Molnar commit 6cc9b6d94b6fee23b0671970f67d297fa76b68b3 Author: Andreas Herrmann Date: Tue Dec 16 19:17:45 2008 +0100 x86: microcode_amd: consolidate macro definitions Impact: cleanup Signed-off-by: Andreas Herrmann Signed-off-by: Ingo Molnar commit 29d0887ffd084cde9d6a1286cb82b71701a974dd Author: Andreas Herrmann Date: Tue Dec 16 19:16:34 2008 +0100 x86: microcode_amd: replace inline asm by common rdmsr/wrmsr functions Impact: cleanup Signed-off-by: Andreas Herrmann Signed-off-by: Ingo Molnar commit 0657d9ebff186dcdb17e582dcb909028775a7707 Author: Andreas Herrmann Date: Tue Dec 16 19:14:05 2008 +0100 x86: microcode_amd: don't pass superfluous function pointer for get_ucode_data Impact: cleanup Signed-off-by: Andreas Herrmann Signed-off-by: Ingo Molnar commit 8c135206c826095c852c16d94a0a74eeaf05c90d Author: Andreas Herrmann Date: Tue Dec 16 19:13:00 2008 +0100 x86: microcode_amd: fix compile warning Impact: fix build warning CC arch/x86/kernel/microcode_amd.o arch/x86/kernel/microcode_amd.c: In function ‘request_microcode_fw’: arch/x86/kernel/microcode_amd.c:393: warning: passing argument 2 of ‘generic_load_microcode’ discards qualifiers from pointer target type (Respect "const" qualifier of firmware->data.) Signed-off-by: Andreas Herrmann Signed-off-by: Ingo Molnar commit be957763b01905d33b53cdd25c8df110f94f499a Author: Andreas Herrmann Date: Tue Dec 16 19:11:23 2008 +0100 x86: microcode_amd: fix checkpatch warnings/errors Impact: cleanup Signed-off-by: Andreas Herrmann Signed-off-by: Ingo Molnar commit 2a3282a77b02fb47576ffbdb4867c8c6eeb83ed5 Author: Andreas Herrmann Date: Tue Dec 16 19:08:53 2008 +0100 x86: microcode_amd: fix typos and trailing whitespaces in log messages Impact: fix printk typos Signed-off-by: Andreas Herrmann Signed-off-by: Ingo Molnar commit 3c763fd77e66e55d029052da31df0abd9920cb1e Author: Andreas Herrmann Date: Tue Dec 16 19:07:47 2008 +0100 x86: microcode_amd: fix wrong handling of equivalent CPU id Impact: fix bug resulting in non-loaded AMD microcode mc_header->processor_rev_id is a 2 byte value. Similar is true for equiv_cpu in an equiv_cpu_entry -- only 2 bytes are of interest. Signed-off-by: Andreas Herrmann Signed-off-by: Ingo Molnar commit 3ca81a55256f38d9a8a4d5e9a6a9288ddc672e19 Author: Hans Verkuil Date: Tue Dec 16 08:32:37 2008 -0300 V4L/DVB (9906): v4l2-compat: test for unlocked_ioctl as well. The v4l_compat_ioctl32() function only tested for the presence of the ioctl op, not for unlocked_ioctl. So it would always return an error when used with drivers that use unlocked_ioctl instead of ioctl. Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab commit 8b21c1e90e633aee3363e3d87e1a0b829bdb420e Author: Mauro Carvalho Chehab Date: Sun Dec 14 19:39:03 2008 -0300 V4L/DVB (9885): drivers/media Kconfig's: fix bugzilla #12204 When the tuner modules were moved to common/tuners, a separate customize option were added for tuners. However, the automatic selection of the tuners were still using the older option. This causes that the automatic selection to fail, if DVB_FE_CUSTOMISE is selected. Also, since those tuners are now under MEDIA_TUNER_CUSTOMIZE menu, if you unset MEDIA_TUNER_CUSTOMIZE, you can't manually select the tuners. This patch fixes this error by replacing DVB_FE_CUSTOMISE by MEDIA_TUNER_CUSTOMIZE on all places were a tuner is selected. The patch were generated by this small script: for i in `find drivers/media -name Kconfig`; do cat $i|perl -ne 's/(MEDIA_TUNER.*)DVB_FE_CUSTOMISE/\1MEDIA_TUNER_CUSTOMIZE/; print $_' >a mv a $i done Also, manually reordered the tuner entries. Signed-off-by: Mauro Carvalho Chehab commit f86d4a9173e47050de9f88faa4aaf70a718791c5 Author: Jim Paris Date: Wed Dec 10 05:50:44 2008 -0300 V4L/DVB (9875): gspca - main: Fix vidioc_s_jpegcomp locking. Signed-off-by: Jim Paris Signed-off-by: Jean-Francois Moine Signed-off-by: Mauro Carvalho Chehab commit 11c6c7fb89a7526841eb4f294de631f3b8a31f10 Author: Antti Seppälä Date: Mon Dec 1 06:59:37 2008 -0300 V4L/DVB (9781): [PATCH] Cablestar 2 I2C retries (fix CableStar2 support) At some point the Flexcop driver was changed to support newer Flexcop cards. These modifications however broke the detection of Cablestar 2 DVB-C cards. The reason is that the earlier version of the driver used to retry unsuccessful i2c operations. The demodulator of Cablestar 2 cards (stv0297) seems to be very dependent on these retries and adding them back fixes Cablestar detection. This patch restores this behaviour for the CableStar2. Signed-off-by: Antti Seppälä Signed-off-by: Patrick Boettcher Signed-off-by: Mauro Carvalho Chehab commit 4b330bee66e88c94789d2eea250dd1fd454a645e Author: Devin Heitmueller Date: Mon Dec 1 06:51:14 2008 -0300 V4L/DVB (9780): dib0700: Stop repeating after user stops pushing button A user noticed that there would continue to be 4-6 keypresses even after the user stopped holding down the button. This was because we were not reading the bulk pipe faster than the firmware was injecting information, which would result in a backlog. Make the query interval faster, and increase the number of cycles before we start repeating to compensate. Thanks to Knud Poulsen for pointing this out. Signed-off-by: Devin Heitmueller Signed-off-by: Patrick Boettcher Signed-off-by: Mauro Carvalho Chehab commit b6fd6f26733e864fba2ea3eb1d716e23d2e66f3a Author: Ingo Molnar Date: Tue Dec 16 19:23:36 2008 +0100 x86, mm: limit MAXMEM on 64-bit on 64-bit x86 the physical memory limit is controlled by the sparsemem bits - which are 44 bits right now. But MAXMEM (the max pfn number e820 parsing will allow to enter our sizing routines) is set to 0x00003fffffffffff, i.e. 46 bits - that's too large because it overlaps into the vmalloc range. So couple MAXMEM to MAX_PHYSMEM_BITS, and add a comment that the maximum of MAX_PHYSMEM_BITS is 45 bits. Signed-off-by: Ingo Molnar commit cfc319833b5b359bf3bce99564dbac00af7925ac Author: Jan Beulich Date: Tue Dec 16 11:46:58 2008 +0000 x86, 32-bit: improve lazy TLB handling code Impact: micro-optimize the 32-bit TLB flush code Use the faster x86_{read,write}_percpu() accessors here. Signed-off-by: Jan Beulich Signed-off-by: Ingo Molnar commit beeb4195cbc80b7489631361b7ed38b7518af433 Author: Jan Beulich Date: Tue Dec 16 11:45:56 2008 +0000 x86, 32-bit: add some compile time checks to mem_init() Some of the inconsistencies checked for at run time can be detected at build time already, so duplicate the checks done at run time to also be done at build time. Signed-off-by: Jan Beulich Signed-off-by: Ingo Molnar commit d6be89ad660c5d03edef91715093d447025df59b Author: Jan Beulich Date: Tue Dec 16 11:42:45 2008 +0000 x86, 32-bit: simplify alloc_low_page() Impact: cleanup Neither of the callers really needs the physical address this function returns, so eliminate the pointless argument. Signed-off-by: Jan Beulich Signed-off-by: Ingo Molnar commit b93a531e315e97ef00367099e6b5f19651936e20 Author: Jan Beulich Date: Tue Dec 16 11:40:27 2008 +0000 allow bug table entries to use relative pointers (and use it on x86-64) Impact: reduce bug table size This allows reducing the bug table size by half. Perhaps there are other 64-bit architectures that could also make use of this. Signed-off-by: Jan Beulich Signed-off-by: Ingo Molnar commit 1796316a8b028a148be48ba5d4e7be493a39d173 Author: Jan Beulich Date: Tue Dec 16 11:35:24 2008 +0000 x86: consolidate __swp_XXX() macros Impact: cleanup, code robustization The __swp_...() macros silently relied upon which bits are used for _PAGE_FILE and _PAGE_PROTNONE. After having changed _PAGE_PROTNONE in our Xen kernel to no longer overlap _PAGE_PAT, live locks and crashes were reported that could have been avoided if these macros properly used the symbolic constants. Since, as pointed out earlier, for Xen Dom0 support mainline likewise will need to eliminate the conflict between _PAGE_PAT and _PAGE_PROTNONE, this patch does all the necessary adjustments, plus it introduces a mechanism to check consistency between MAX_SWAPFILES_SHIFT and the actual encoding macros. This also fixes a latent bug in that x86-64 used a 6-bit mask in __swp_type(), and if MAX_SWAPFILES_SHIFT was increased beyond 5 in (the seemingly unrelated) linux/swap.h, this would have resulted in a collision with _PAGE_FILE. Non-PAE 32-bit code gets similarly adjusted for its pte_to_pgoff() and pgoff_to_pte() calculations. Signed-off-by: Jan Beulich Signed-off-by: Ingo Molnar commit d072c25f531c6513994960401d2c7f059434c0d2 Author: Markus Metzger Date: Tue Dec 16 15:53:11 2008 +0100 x86, bts: correctly report invalid bts records Impact: change the reporting of empty BTS records Correctly report a cleared BTS record as invalid. Used to be reported as branch from 0 to 0. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit cc1dc6d039ced64c2f8b8457bf1cccf4ecfc5942 Author: Markus Metzger Date: Tue Dec 16 15:51:03 2008 +0100 x86, bts: remove recursion from get_context Impact: cleanup Optimistically allocate a DS context. It is extremely unlikely that one already existed. This simplifies the code a lot. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit bb1f24bf00a85f666b56a09b7cdbfd221af16c2c Author: Ben Stanley Date: Mon Dec 15 23:38:12 2008 +1100 ALSA: ca0106 MSI K8N Diamond MB spi_dac 2->1 This patch removes an inconsistency that became apparent when I documented the fields of snd_ca0106_details. spi_dac is always used in a 'boolean' sense, so this cleanup should make no difference. [Actually, there is one place checking explicitly spi_dac == 1, so this will change the behavior. But, supposing it's rather a typo, I apply this clean-up patch -- tiwai] Signed-off-by: Ben Stanley Signed-off-by: Takashi Iwai commit f649a7145b8b67121e8be0b50f7861755f21aa3b Author: Ben Stanley Date: Fri Dec 12 09:47:13 2008 +1100 ALSA: ca0106 Add comments to snd_ca0106_details struct Takashi wrote an email [1] explaining the fields of snd_ca0106_details, so I captured the information into the ca0106.h header file. [1] http://article.gmane.org/gmane.linux.alsa.devel/56783/match=takashi+gpio_type Signed-off-by: Ben Stanley Signed-off-by: Takashi Iwai commit 31117b78ee843622cbc4c7c17c97be417c766385 Author: Takashi Iwai Date: Tue Dec 16 14:43:21 2008 +0100 ALSA: hda - Add Nvidia vendor id string Added Nvidia (0x10de) to the vendor id list. Cleaned up the codec name strings accordingly. Signed-off-by: Takashi Iwai commit e9515c3c9feecd74174c2998add0db51e02abb8d Author: Ken Chen Date: Mon Dec 15 22:04:15 2008 -0800 sched, cpuacct: export percpu cpuacct cgroup stats This patch export per-cpu CPU cycle usage for a given cpuacct cgroup. There is a need for a user space monitor daemon to track group CPU usage on per-cpu base. It is also useful for monitoring CFS load balancer behavior by tracking per CPU group usage. Signed-off-by: Ken Chen Reviewed-by: Li Zefan Reviewed-by: Andrew Morton Signed-off-by: Ingo Molnar commit 720f54988e17b33f3f477010b3a68ee872d20d5a Author: Ken Chen Date: Mon Dec 15 22:02:01 2008 -0800 sched, cpuacct: refactoring cpuusage_read / cpuusage_write Impact: micro-optimize the code on 64-bit architectures In the thread regarding to 'export percpu cpuacct cgroup stats' http://lkml.org/lkml/2008/12/7/13 akpm pointed out that current cpuacct code is inefficient. This patch refactoring the following: * make cpu_rq locking only on 32-bit * change iterator to each_present_cpu instead of each_possible_cpu to make it hotplug friendly. It's a bit of code churn, but I was rewarded with 160 byte code size saving on x86-64 arch and zero code size change on i386. Signed-off-by: Ken Chen Cc: Paul Menage Cc: Li Zefan Signed-off-by: Ingo Molnar commit 9dfc3bc7d21864d47797d64b8d531d4dbbc0b618 Merge: da485e0cb16726797e99a595a399b9fc721b91bc cbc34ed1ac36690f75fd272e19e7b4fc29aae5a2 2bed8446819a7c5033aa1da138d9f230ae212edc ffc2238af8431d930d2c15f16feecf1fd6d75642 Author: Ingo Molnar Date: Tue Dec 16 12:03:38 2008 +0100 Merge branches 'tracing/fastboot', 'tracing/ftrace', 'tracing/function-graph-tracer' and 'tracing/hw-branch-tracing' into tracing/core commit 9f690db7ff4cb32493c0b0b13334cc4f5fd49a6b Author: Yang Hongyang Date: Tue Dec 16 02:08:29 2008 -0800 ipv6: fix the outgoing interface selection order in udpv6_sendmsg() 1.When no interface is specified in an IPV6_PKTINFO ancillary data item, the interface specified in an IPV6_PKTINFO sticky optionis is used. RFC3542: 6.7. Summary of Outgoing Interface Selection This document and [RFC-3493] specify various methods that affect the selection of the packet's outgoing interface. This subsection summarizes the ordering among those in order to ensure deterministic behavior. For a given outgoing packet on a given socket, the outgoing interface is determined in the following order: 1. if an interface is specified in an IPV6_PKTINFO ancillary data item, the interface is used. 2. otherwise, if an interface is specified in an IPV6_PKTINFO sticky option, the interface is used. Signed-off-by: Yang Hongyang Signed-off-by: David S. Miller commit f250dcdac111a8369220b8e192eae6c56dc1098a Author: Yang Hongyang Date: Tue Dec 16 02:07:45 2008 -0800 ipv6: fix the return interface index when get it while no message is received When get receiving interface index while no message is received, the the value seted with setsockopt() should be returned. RFC 3542: Issuing getsockopt() for the above options will return the sticky option value i.e., the value set with setsockopt(). If no sticky option value has been set getsockopt() will return the following values: - For the IPV6_PKTINFO option, it will return an in6_pktinfo structure with ipi6_addr being in6addr_any and ipi6_ifindex being zero. Signed-off-by: Yang Hongyang Signed-off-by: David S. Miller commit b24a2516d10751d7ed5afb58420df25370c9dffb Author: Yang Hongyang Date: Tue Dec 16 02:06:23 2008 -0800 ipv6: Add IPV6_PKTINFO sticky option support to setsockopt() There are three reasons for me to add this support: 1.When no interface is specified in an IPV6_PKTINFO ancillary data item, the interface specified in an IPV6_PKTINFO sticky optionis is used. RFC3542: 6.7. Summary of Outgoing Interface Selection This document and [RFC-3493] specify various methods that affect the selection of the packet's outgoing interface. This subsection summarizes the ordering among those in order to ensure deterministic behavior. For a given outgoing packet on a given socket, the outgoing interface is determined in the following order: 1. if an interface is specified in an IPV6_PKTINFO ancillary data item, the interface is used. 2. otherwise, if an interface is specified in an IPV6_PKTINFO sticky option, the interface is used. 2.When no IPV6_PKTINFO ancillary data is received,getsockopt() should return the sticky option value which set with setsockopt(). RFC 3542: Issuing getsockopt() for the above options will return the sticky option value i.e., the value set with setsockopt(). If no sticky option value has been set getsockopt() will return the following values: 3.Make the setsockopt implementation POSIX compliant. Signed-off-by: Yang Hongyang Signed-off-by: David S. Miller commit bc02ff95fe4ebd3e5ee7455c0aa6f76ebe39ebca Author: Steve Glendinning Date: Tue Dec 16 02:00:48 2008 -0800 net: Refactor full duplex flow control resolution These 4 drivers have identical full duplex flow control resolution functions. This patch changes them all to use one common function. The function in question decides whether a device should enable TX and RX flow control in a standard way (IEEE 802.3-2005 table 28B-3), so this should also be useful for other drivers. Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit e18ce3465477502108187c6c08b6423fb784a313 Author: Steve Glendinning Date: Tue Dec 16 02:00:00 2008 -0800 net: Move flow control definitions to mii.h flags used within drivers for indicating tx and rx flow control are defined in 4 drivers (and probably more), move these constants to mii.h. The 3 SMSC drivers use the same constants (FLOW_CTRL_TX), but TG3 uses TG3_FLOW_CTRL_TX, so this patch also renames the constants within TG3. Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit f9867328f9e1c3fceb8593f84b980aa1d648ce9c Author: Alexey Dobriyan Date: Tue Dec 16 01:55:38 2008 -0800 simeth: convert to net_device_ops Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 8207befa199c9ade670d1cf9a5bcdc76310751bd Author: Divy Le Ray Date: Tue Dec 16 01:51:47 2008 -0800 cxgb3: untie strict FW matching The NIC driver can work with mutliple versions of the FW. Let the driver load when the embedded FW does not match, and the FW update mechanism failed. The iWARP module will make its own loading decision. Signed-off-by: Divy Le Ray Signed-off-by: David S. Miller commit 5ad258c0a85a7cc03c46874e8a26c7e9b4dfb90d Author: Oliver Hartkopp Date: Tue Dec 16 01:42:50 2008 -0800 vcan: convert to net_device_ops Signed-off-by: Oliver Hartkopp Signed-off-by: David S. Miller commit ffcebb163c6ddba11abd2e8aabc7a8a88982e4f4 Author: James Chapman Date: Tue Dec 16 01:23:49 2008 -0800 l2tp: fix UDP checksum support The pppol2tp driver has had broken UDP checksum code for a long time. This patch fixes it. If UDP checksums are enabled in the tunnel's UDP socket, the L2TP driver now properly validates the checksum on receive and fills in the checksum on transmit. If the network device has hardware checksum support and is enabled, it is used instead of generating/checking the checksum in software. Signed-off-by: James Chapman Signed-off-by: David S. Miller commit 09a2c3c0d3d3550675b766aa5edc28ffee79d7ab Author: Rémi Denis-Courmont Date: Tue Dec 16 01:18:31 2008 -0800 Phonet: improve GPRS variable names Signed-off-by: Rémi Denis-Courmont Signed-off-by: David S. Miller commit 4ee59d54c3f91f1f3ad7f2856b27981414430f9e Author: Hannes Eder Date: Tue Dec 16 01:17:33 2008 -0800 isdn: eicon: fix sparse warning: make global functions static Fix this sparse warnings by making the functions static: drivers/isdn/hardware/eicon/di.c:356:6: warning: symbol 'isdn_rc' was not declared. Should it be static? drivers/isdn/hardware/eicon/di.c:558:6: warning: symbol 'isdn_ind' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:595:6: warning: symbol 'api_parse' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:634:6: warning: symbol 'api_save_msg' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:666:6: warning: symbol 'api_load_msg' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:3417:6: warning: symbol 'manufacturer_req' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:3745:6: warning: symbol 'manufacturer_res' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:4077:6: warning: symbol 'control_rc' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:4743:6: warning: symbol 'data_rc' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:4779:6: warning: symbol 'data_ack' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:4805:6: warning: symbol 'sig_ind' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:6173:6: warning: symbol 'SendInfo' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:6349:6: warning: symbol 'SendMultiIE' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:6468:6: warning: symbol 'nl_ind' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:7250:6: warning: symbol 'get_plci' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:7409:6: warning: symbol 'add_d' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:7427:6: warning: symbol 'add_ai' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:7448:6: warning: symbol 'add_b1' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:7912:6: warning: symbol 'add_b23' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:8709:6: warning: symbol 'nl_req_ncci' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:8731:6: warning: symbol 'send_req' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:8866:6: warning: symbol 'listen_check' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:8909:6: warning: symbol 'IndParse' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:8994:6: warning: symbol 'ie_compare' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:9003:6: warning: symbol 'find_cip' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:9071:6: warning: symbol 'SetVoiceChannel' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:9089:6: warning: symbol 'VoiceChannelOff' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:9102:6: warning: symbol 'AdvCodecSupport' was not declared. Should it be static? drivers/isdn/hardware/eicon/message.c:9198:6: warning: symbol 'CodecIdCheck' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit 205516c12dbba003c26b42cfb41e598631300106 Author: Ken Chen Date: Tue Dec 16 00:32:21 2008 -0800 x86: convert rdtscll() to use __native_read_tsc Impact: micro-optimization Is there any reason why x86 rdtscll have to use the out of line function instead of inline __native_read_tsc()? native_read_tsc and __native_read_tsc is essentially the same functions. Patch to let x86 rdtscll() to use the inline version of read_tsc. Signed-off-by: Ken Chen Signed-off-by: Ingo Molnar commit b1879204dda06a92a4ff55b681c99ee185180003 Author: Ilpo Järvinen Date: Tue Dec 16 01:15:11 2008 -0800 ipmr: merge common code Also removes redundant skb->len < x check which can't be true once pskb_may_pull(skb, x) succeeded. $ diff-funcs pim_rcv ipmr.c ipmr.c pim_rcv_v1 --- ipmr.c:pim_rcv() +++ ipmr.c:pim_rcv_v1() @@ -1,22 +1,27 @@ -static int pim_rcv(struct sk_buff * skb) +int pim_rcv_v1(struct sk_buff * skb) { - struct pimreghdr *pim; + struct igmphdr *pim; struct iphdr *encap; struct net_device *reg_dev = NULL; if (!pskb_may_pull(skb, sizeof(*pim) + sizeof(*encap))) goto drop; - pim = (struct pimreghdr *)skb_transport_header(skb); - if (pim->type != ((PIM_VERSION<<4)|(PIM_REGISTER)) || - (pim->flags&PIM_NULL_REGISTER) || - (ip_compute_csum((void *)pim, sizeof(*pim)) != 0 && - csum_fold(skb_checksum(skb, 0, skb->len, 0)))) + pim = igmp_hdr(skb); + + if (!mroute_do_pim || + skb->len < sizeof(*pim) + sizeof(*encap) || + pim->group != PIM_V1_VERSION || pim->code != PIM_V1_REGISTER) goto drop; - /* check if the inner packet is destined to mcast group */ encap = (struct iphdr *)(skb_transport_header(skb) + - sizeof(struct pimreghdr)); + sizeof(struct igmphdr)); + /* + Check that: + a. packet is really destinted to a multicast group + b. packet is not a NULL-REGISTER + c. packet is not truncated + */ if (!ipv4_is_multicast(encap->daddr) || encap->tot_len == 0 || ntohs(encap->tot_len) + sizeof(*pim) > skb->len) @@ -40,9 +45,9 @@ skb->ip_summed = 0; skb->pkt_type = PACKET_HOST; dst_release(skb->dst); + skb->dst = NULL; reg_dev->stats.rx_bytes += skb->len; reg_dev->stats.rx_packets++; - skb->dst = NULL; nf_reset(skb); netif_rx(skb); dev_put(reg_dev); $ codiff net/ipv4/ipmr.o.old net/ipv4/ipmr.o.new net/ipv4/ipmr.c: pim_rcv_v1 | -283 pim_rcv | -284 2 functions changed, 567 bytes removed net/ipv4/ipmr.c: __pim_rcv | +307 1 function changed, 307 bytes added net/ipv4/ipmr.o.new: 3 functions changed, 307 bytes added, 567 bytes removed, diff: -260 (Tested on x86_64). It seems that pimlen arg could be left out as well and eq-sizedness of structs trapped with BUILD_BUG_ON but I don't think that's more than a cosmetic flaw since there aren't that many args anyway. Compile tested. Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit c40cf519f0c0f0cb0579d853949ef517a8bb494d Author: Ilpo Järvinen Date: Tue Dec 16 01:14:21 2008 -0800 hp100: use roundup instead of open coding Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 82ad33297410c1af8e993210da76e114a4c1670d Author: Divy Le Ray Date: Tue Dec 16 01:09:39 2008 -0800 cxgb3: Add multiple Tx queue support. Implement NIC Tx multiqueue. Bump up driver version. Signed-off-by: Divy Le Ray Signed-off-by: David S. Miller commit 34f28ecd0f4bdc733c681294d02d9fab5880591b Author: Peter Zijlstra Date: Tue Dec 16 08:45:31 2008 +0100 sched: optimize update_curr() Impact: micro-optimization Skip the hard work when there is none. Signed-off-by: Peter Zijlstra Acked-by: Mike Galbraith Signed-off-by: Ingo Molnar commit 03e89e4574a680af15f59329b061f35d9813aff4 Author: Mike Galbraith Date: Tue Dec 16 08:45:30 2008 +0100 sched: fix wakeup preemption clock Impact: sharpen the wakeup-granularity to always be against current scheduler time It was possible to do the preemption check against an old time stamp. Signed-off-by: Mike Galbraith Signed-off-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 89c88b16f12e9df9ac39418638f267ec3b36a6c6 Author: Herbert Xu Date: Mon Dec 15 23:46:15 2008 -0800 e1000e: Add GRO support This patch adds GRO support to e1000e by making it invoke napi_gro_receive instead of netif_receive_skb. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit b240a0e5644eb817c4a397098a40e1ad42a615bc Author: Herbert Xu Date: Mon Dec 15 23:44:31 2008 -0800 ethtool: Add GGRO and SGRO ops This patch adds the ethtool ops to enable and disable GRO. It also makes GRO depend on RX checksum offload much the same as how TSO depends on SG support. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit bf296b125b21b8d558ceb6ec30bb4eba2730cd6b Author: Herbert Xu Date: Mon Dec 15 23:43:36 2008 -0800 tcp: Add GRO support This patch adds the TCP-specific portion of GRO. The criterion for merging is extremely strict (the TCP header must match exactly apart from the checksum) so as to allow refragmentation. Otherwise this is pretty much identical to LRO, except that we support the merging of ECN packets. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit 71d93b39e52e92aea35f1058d957cf12250d0b75 Author: Herbert Xu Date: Mon Dec 15 23:42:33 2008 -0800 net: Add skb_gro_receive This patch adds the helper skb_gro_receive to merge packets for GRO. The current method is to allocate a new header skb and then chain the original packets to its frag_list. This is done to make it easier to integrate into the existing GSO framework. In future as GSO is moved into the drivers, we can undo this and simply chain the original packets together. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit 73cc19f1556b95976934de236fd9043f7208844f Author: Herbert Xu Date: Mon Dec 15 23:41:09 2008 -0800 ipv4: Add GRO infrastructure This patch adds GRO support for IPv4. The criteria for merging is more stringent than LRO, in particular, we require all fields in the IP header to be identical except for the length, ID and checksum. In addition, the ID must form an arithmetic sequence with a difference of one. The ID requirement might seem overly strict, however, most hardware TSO solutions already obey this rule. Linux itself also obeys this whether GSO is in use or not. In future we could relax this rule by storing the IDs (or rather making sure that we don't drop them when pulling the aggregate skb's tail). Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit d565b0a1a9b6ee7dff46e1f68b26b526ac11ae50 Author: Herbert Xu Date: Mon Dec 15 23:38:52 2008 -0800 net: Add Generic Receive Offload infrastructure This patch adds the top-level GRO (Generic Receive Offload) infrastructure. This is pretty similar to LRO except that this is protocol-independent. Instead of holding packets in an lro_mgr structure, they're now held in napi_struct. For drivers that intend to use this, they can set the NETIF_F_GRO bit and call napi_gro_receive instead of netif_receive_skb or just call netif_rx. The latter will call napi_receive_skb automatically. When napi_gro_receive is used, the driver must either call napi_complete/napi_rx_complete, or call napi_gro_flush in softirq context if the driver uses the primitives __napi_complete/__napi_rx_complete. Protocols will set the gro_receive and gro_complete function pointers in order to participate in this scheme. In addition to the packet, gro_receive will get a list of currently held packets. Each packet in the list has a same_flow field which is non-zero if it is a potential match for the new packet. For each packet that may match, they also have a flush field which is non-zero if the held packet must not be merged with the new packet. Once gro_receive has determined that the new skb matches a held packet, the held packet may be processed immediately if the new skb cannot be merged with it. In this case gro_receive should return the pointer to the existing skb in gro_list. Otherwise the new skb should be merged into the existing packet and NULL should be returned, unless the new skb makes it impossible for any further merges to be made (e.g., FIN packet) where the merged skb should be returned. Whenever the skb is merged into an existing entry, the gro_receive function should set NAPI_GRO_CB(skb)->same_flow. Note that if an skb merely matches an existing entry but can't be merged with it, then this shouldn't be set. If gro_receive finds it pointless to hold the new skb for future merging, it should set NAPI_GRO_CB(skb)->flush. Held packets will be flushed by napi_gro_flush which is called by napi_complete and napi_rx_complete. Currently held packets are stored in a singly liked list just like LRO. The list is limited to a maximum of 8 entries. In future, this may be expanded to use a hash table to allow more flows to be held for merging. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit 1a881f27c50b4fbd6858a8696a189263621136b0 Author: Herbert Xu Date: Mon Dec 15 23:27:47 2008 -0800 net: Add frag_list support to GSO This patch allows GSO to handle frag_list in a limited way for the purposes of allowing packets merged by GRO to be refragmented on output. Most hardware won't (and aren't expected to) support handling GRO frag_list packets directly. Therefore we will perform GSO in software for those cases. However, for drivers that can support it (such as virtual NICs) we may not have to segment the packets at all. Whether the added overhead of GRO/GSO is worthwhile for bridges and routers when weighed against the benefit of potentially increasing the MTU within the host is still an open question. However, for the case of host nodes this is undoubtedly a win. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit 89319d3801d1d3ac29c7df1f067038986f267d29 Author: Herbert Xu Date: Mon Dec 15 23:26:06 2008 -0800 net: Add frag_list support to skb_segment This patch adds limited support for handling frag_list packets in skb_segment. The intention is to support GRO (Generic Receive Offload) packets which will be constructed by chaining normal packets using frag_list. As such we require all frag_list members terminate on exact MSS boundaries. This is checked using BUG_ON. As there should only be one producer in the kernel of such packets, namely GRO, this requirement should not be difficult to maintain. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller commit b53c7583e26746ef6f66c866841e10450150ed8e Author: Kay Sievers Date: Thu Dec 4 10:01:52 2008 -0800 rapidio: struct device - replace bus_id with dev_name(), dev_set_name() Cc: Matt Porter Signed-off-by: Kay Sievers Signed-off-by: Greg Kroah-Hartman Signed-off-by: Paul Mackerras commit aab0d375e01d8c16e7e5b9bd915dfaa0a815418f Author: Kay Sievers Date: Thu Dec 4 10:02:56 2008 -0800 powerpc: struct device - replace bus_id with dev_name(), dev_set_name() Acked-by: Geoff Levand Signed-off-by: Kay Sievers Signed-off-by: Greg Kroah-Hartman Signed-off-by: Paul Mackerras commit f63837f0581fe580168ae1a7d178ded935411747 Author: Benjamin Herrenschmidt Date: Sun Dec 14 19:44:51 2008 +0000 powerpc/mm: Remove flush_HPTE() The function flush_HPTE() is used in only one place, the implementation of DEBUG_PAGEALLOC on ppc32. It's actually a dup of flush_tlb_page() though it's -slightly- more efficient on hash based processors. We remove it and replace it by a direct call to the hash flush code on those processors and to flush_tlb_page() for everybody else. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit e41e811a79a4e328005be2744c3076ebde455088 Author: Benjamin Herrenschmidt Date: Sun Dec 14 19:44:39 2008 +0000 powerpc/mm: Rename tlb_32.c and tlb_64.c to tlb_hash32.c and tlb_hash64.c This renames the files to clarify the fact that they are used by the hash based family of CPUs (the 603 being an exception in that family but is still handled by that code). This paves the way for the new tlb_nohash.c coming via a subsequent commit. Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit 1a37a3fd7f12d8f9f720cceec84e23152e116668 Author: Benjamin Herrenschmidt Date: Sun Dec 14 19:44:24 2008 +0000 powerpc/mm: Add local_flush_tlb_mm() to SW loaded TLB implementations This adds a local_flush_tlb_mm() call as a pre-requisite for some SMP work for BookE processors. Signed-off-by: Benjamin Herrenschmidt Acked-by: Kumar Gala Signed-off-by: Paul Mackerras commit a58f053b93e15b68e7b5f442316329f68269c8d5 Author: Benjamin Herrenschmidt Date: Sun Dec 14 19:44:13 2008 +0000 powerpc: Fix asm EMIT_BUG_ENTRY with !CONFIG_BUG Instead of not defining it at all, this defines the macro as being empty, thus avoiding ifdef's in call sites when CONFIG_BUG is not set. Also removes an extra whitespace in the existing definition. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 3045b3cb0b068c9f7601786841cda1e0b4647bd9 Author: FUJITA Tomonori Date: Sat Dec 13 17:44:59 2008 +0000 powerpc: Remove dead BIO_VMERGE_BOUNDARY definition The block layer dropped the virtual merge feature (b8b3e16cfe6435d961f6aaebcfd52a1ff2a988c5). BIO_VMERGE_BOUNDARY definition is meaningless now (For POWER, BIO_VMERGE_BOUNDARY has been meaningless for a long time since POWER disables the virtual merge feature). Signed-off-by: FUJITA Tomonori Acked-by: Jens Axboe Signed-off-by: Paul Mackerras commit 7fe519c207e3400dea6d67e1d483a16b11608423 Author: Josh Boyer Date: Thu Dec 11 09:46:44 2008 +0000 powerpc: Introduce ppc_pci_flags accessors Currently there are a number of platforms that open code access to the ppc_pci_flags global variable. However, that variable is not present if CONFIG_PCI is not set, which can lead to a build break. This introduces a number of accessor functions that are defined to be empty in the case of CONFIG_PCI being disabled. The various platform files in the kernel are updated to use these. Signed-off-by: Josh Boyer Signed-off-by: Paul Mackerras commit edc72ac4a0894247a6d3f1157a8ec8d603fff52d Author: Nathan Lynch Date: Thu Dec 11 09:14:25 2008 +0000 powerpc/pseries: Check for GIQ indicator before calling set-indicator Since "Factor out cpu joining/unjoining the GIQ" (b4963255ad5a426f04a0bb15c4315fa4bb40cde9) the WARN_ON in xics_set_cpu_giq() is being triggered during boot on JS20 because the GIQ indicator is not available on that platform. While the warning is harmless and the system runs normally, it's nicer to check for the existence of the indicator before trying to manipulate it. Implement rtas_indicator_present(), which searches the /rtas/rtas-indicators property for the given indicator token, and use this function in xics_set_cpu_giq(). Also use a WARN statement in xics_set_cpu_giq to get better information on failure. Signed-off-by: Nathan Lynch Acked-by: Milton Miller Signed-off-by: Paul Mackerras commit 6ff04c53db97c896ecca9374c0be4f681cf5fe50 Author: Nathan Lynch Date: Wed Dec 10 14:28:42 2008 +0000 powerpc/powermac: Use set_hard_smp_processor_id() instead of smp_hw_index The hard_smp_processor_id functions are the appropriate interfaces for managing physical CPU ids. Signed-off-by: Nathan Lynch Acked-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 13a9801eb669d567ab2c8f8db5e50557fef5f636 Author: Nathan Lynch Date: Wed Dec 10 14:28:41 2008 +0000 powerpc: Move smp_hw_index to 32-bit code smp_hw_index isn't used on 64-bit, so move it from smp.c to setup_32.c. Signed-off-by: Nathan Lynch Signed-off-by: Paul Mackerras commit 6b82b3e4b54b2fce2ca11976c535012b836b2016 Author: Anton Vorontsov Date: Tue Dec 9 09:47:29 2008 +0000 powerpc: Remove `have_of' global variable The `have_of' variable is a relic from the arch/ppc time, it isn't useful nowadays. Signed-off-by: Anton Vorontsov Acked-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit eb14f019597cd86c21a6c601d7e900f40030c2e7 Merge: 9a4a84294b0d60b8c287131478f743ba2bc68949 a3dd15444baa9c7522c8457ab564c41219dfb44c Author: David S. Miller Date: Mon Dec 15 20:03:50 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/e1000e/ich8lan.c commit 0efbb57e06d881a39a7f261e5c33558aedec0f79 Author: Becky Bruce Date: Thu Dec 4 08:12:40 2008 +0000 powerpc: Fix !CONFIG_PPC_NEED_DMA_SYNC_OPS build warning Change #define stubs of dma_sync ops to be empty static inlines to avoid build warning. Signed-off-by: Becky Bruce Acked-by: Stephen Rothwell Signed-off-by: Paul Mackerras commit 46d01492b2c50791b9b66f9b9154ac8d25acaeb9 Author: Geert Uytterhoeven Date: Wed Dec 3 13:52:21 2008 +0000 powerpc/ps3: Add sub-match id modalias support commit 059e4938f8b060b10c4352e6c45739473bc73267 ("powerpc/ps3: Add a sub-match id to ps3_system_bus") forgot to update the module alias support: - Add the sub-match ids to the module aliases, so udev can distinguish between different types of sub-devices. - Rename PS3_MODULE_ALIAS_GRAPHICS to PS3_MODULE_ALIAS_GPU_FB, as ps3fb binds to the "FB" sub-device. Signed-off-by: Geert Uytterhoeven Signed-off-by: Geoff Levand Signed-off-by: Paul Mackerras commit 62d80749addc969803a173573889f9b01d2459e1 Author: Geoff Levand Date: Wed Dec 3 13:52:15 2008 +0000 powerpc/ps3: Quiet dmesg output Change the debug message in dma_sb_region_create() from pr_info() to DBG() to quiet the dmesg output. Signed-off-by: Geoff Levand Signed-off-by: Paul Mackerras commit 15cb1cc981183861e4e653b67a0ea451f720af85 Author: Geoff Levand Date: Wed Dec 3 13:52:05 2008 +0000 powerpc: Fix typo in pgtable-ppc64.h Fix a minor comment typo in pgtable-ppc64.h. Signed-off-by: Geoff Levand Signed-off-by: Paul Mackerras commit 29e931c02b0e54f3d36b930c118e69b507b4b6ff Author: Nicolas Palix Date: Tue Dec 2 03:34:46 2008 +0000 powerpc/chrp: Add missing of_node_put in pci.c of_node_put is needed before discarding a value received from of_find_node_by_name, eg in error handling code or when the device node is no longer used. The semantic match that catches the bug is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression struct device_node *n; position p1, p2; statement S1,S2; expression E,E1; expression *ptr != NULL; @@ ( if (!(n@p1 = of_find_node_by_name(...))) S1 | n@p1 = of_find_node_by_name(...) ) <... when != of_node_put(n) when != if (...) { <+... of_node_put(n) ...+> } when != true !n || ... when != n = E when != E = n if (!n || ...) S2 ...> ( return \(0\|<+...n...+>\|ptr\); | return@p2 ...; | n = E1 | E1 = n ) @script:python@ p1 << r.p1; p2 << r.p2; @@ print "* file: %s of_find_node_by_name %s return %s" % (p1[0].file,p1[0].line,p2[0].line) // Signed-off-by: Nicolas Palix Signed-off-by: Julia Lawall Acked-by: Stephen Rothwell Signed-off-by: Paul Mackerras commit 1e1c568d6c66d1e2e345fd15e2a1ceafc5d7e33a Merge: 91cac623262c1c0cd298c5c648a8bd2b647c264d 23e0e8afafd9ac065d81506524adf3339584044b Author: Paul Mackerras Date: Tue Dec 16 14:38:58 2008 +1100 Merge branch 'merge' into next commit 9a4a84294b0d60b8c287131478f743ba2bc68949 Author: David S. Miller Date: Mon Dec 15 15:14:59 2008 -0800 8390/8390p: Fix compat netdev ops handling. Based upon a report from Randy Dunlap. The compat netdev ops assignments need to happen in 8390.c and 8390p.c, not lib8390.c, as only the type specific code can assign the correct function pointers. Signed-off-by: David S. Miller commit 91cac623262c1c0cd298c5c648a8bd2b647c264d Author: Kumar Gala Date: Sat Dec 13 17:41:41 2008 -0600 powerpc/85xx: Fix compile issues with mpc8572ds.dts Fix the localbus reg & range properties to respect that the top level #address-cells and #size-cells = 2. The original commit (c64ef80b517680f1e228b2ee55e3ce7cd94c7fe0) did not do that. Signed-off-by: Kumar Gala commit 8309ce7280536b07716026ff588acbcc0ee1a546 Author: Benjamin Herrenschmidt Date: Fri Dec 12 17:33:25 2008 +1100 powerpc: Fix bogus cache flushing on all 40x and BookE processors v2 We were missing the CPU_FTR_NOEXECUTE bit in our cputable for all these processors. The result is that update_mmu_cache() would flush the cache for all pages mapped to userspace which is totally unnecessary on those processors since we already handle flushing on execute in the page fault path. This should provide a nice speed up ;-) Signed-off-by: Benjamin Herrenschmidt Acked-by: Josh Boyer Signed-off-by: Kumar Gala commit 3d1ee379bd576c0830050c2d313e77b9f98a8013 Author: Mark Brown Date: Mon Dec 15 15:43:43 2008 +0000 ALSA: Fix declaration of sound_class Include sound/core.h in sound_core.c so that sound_class is declared before it is defined, avoiding it looking like it should be static. Signed-off-by: Mark Brown Signed-off-by: Takashi Iwai commit 8b124a8e14c04378466ddfe63e41fc5035f957eb Author: Don Skidmore Date: Mon Dec 15 01:06:23 2008 -0800 net: fix dcbnl_setnumtcs operation check dcbml_setnumtcs wasn't checking for the presence of the setnumtcs function. Instead, it was checking for setstate which was a bug. Signed-off-by: Don Skidmore Signed-off-by: Eric W Multanen Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 5ecc361444a0c641a73cce05fb652d0e3c944451 Author: Jesse Brandeburg Date: Mon Dec 15 01:00:57 2008 -0800 ixgbe: fix dma mapping unbalance This issue was initially reported by Joerg Roedel It appears that ixgbe has had a long standing bug where it was unmapping a different size than it had mapped. ixgbe 0000:02:00.0: PCI-DMA: device driver frees DMA memory with different sizes than it mapped. ixgbe 0000:02:00.0: PCI-DMA: device driver frees DMA memory with different size [device address=0x0000000003fed812] [map size=258 bytes] [unmap size=256 bytes] Pid: 6178, comm: rmmod Not tainted 2.6.28-rc5 #4 Call Trace: [] iommu_queue_inv_iommu_pages+0x5e/0x70 [] check_unmap+0x1c6/0x240 [] debug_unmap_single+0xb5/0x110 [] ixgbe_clean_rx_ring+0x147/0x220 [] ixgbe_down+0x2fd/0x3d0 [ixgbe] [] ixgbe_close+0x13/0xc0 [ixgbe] [] dev_close+0x56/0xa0 [] rollback_registered+0x43/0x220 [] unregister_netdevice+0x15/0x60 [] unregister_netdev+0x11/0x20 [] ixgbe_remove+0x48/0x16e [ixgbe] [] pci_device_remove+0x2c/0x60 [] __device_release_driver+0x99/0x100 [] driver_detach+0xb8/0xc0 [] bus_remove_driver+0x8e/0xd0 [] pci_unregister_driver+0x34/0x90 [] sys_delete_module+0x1c7/0x2a0 [] do_munmap+0x349/0x390 [] __up_write+0x21/0x150 [] system_call_fastpath+0x16/0x1b Signed-off-by: Jesse Brandeburg Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit a7276db6adfded660eec1e1629710b8b82d83455 Author: Steve Glendinning Date: Mon Dec 15 00:59:47 2008 -0800 smsc9420: add ethtool register dump support This patch adds support for SMSC's LAN9420 PCI ethernet controller to ethtool's dump registers (-d) command. This patch is for use with an accompanying ethtool patch, which decodes the register dump. Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit b1721d2bb9d015d7e49079414671569a2fc0ac9b Author: Ilpo Järvinen Date: Sun Dec 14 23:19:48 2008 -0800 rpc/rdma: goto instead of copypaste Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 79f55f11a090d9f369448dcb58242c7924873920 Author: Ilpo Järvinen Date: Sun Dec 14 23:19:02 2008 -0800 nf/dccp: merge errorpaths Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit e780f1c33d76ebb81607a6b5d6b669edb9065a7f Author: Ilpo Järvinen Date: Sun Dec 14 23:18:30 2008 -0800 irda: merge exit paths Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 037322abe6141e32e1b1dea86a9405d52c99be5d Author: Ilpo Järvinen Date: Sun Dec 14 23:18:00 2008 -0800 bt/rfcomm/tty: join error paths Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 0eae1b98cf3022715b5a6ea5f1ac6b0bd7ac4edd Author: Ilpo Järvinen Date: Sun Dec 14 23:17:26 2008 -0800 ax25: join the return paths that free skb Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit ebad5c0984e06f4036d2eb2741b9afce736b8a06 Author: Ilpo Järvinen Date: Sun Dec 14 23:16:58 2008 -0800 can: merge error paths Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit d8eb93078cedbbf4b7e18e1d7054171c7b70b442 Author: Ilpo Järvinen Date: Sun Dec 14 23:16:22 2008 -0800 xfrm: join error paths Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 8da73b73ef29d537ba09f29393cd68707833e746 Author: Ilpo Järvinen Date: Sun Dec 14 23:15:49 2008 -0800 ip6mr: use goto to common label instead of opencoding Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 448eb71f40120a8fd11ebd58153c271c63e6f862 Author: Ilpo Järvinen Date: Sun Dec 14 23:15:21 2008 -0800 ipv6/mcast: join error paths using goto Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 5ce1bbb97bf1e6707102d30499e7feaa1e6a2134 Author: Ilpo Järvinen Date: Sun Dec 14 23:13:48 2008 -0800 xfrm6_tunnel: join error paths using goto Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 857a6e0a4d8db0bbee685ccc97c6bd7987e7aede Author: Ilpo Järvinen Date: Sun Dec 14 23:13:08 2008 -0800 icsk: join error paths using goto Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 9cd28ab0051cc5232e3dffea6b318233445a3d5f Author: Alexander Beregalov Date: Sat Dec 13 16:25:27 2008 +0300 ASoC: switch davinci DPRINTK to pr_debug() Signed-off-by: Alexander Beregalov Signed-off-by: Mark Brown commit a6ba0cb35da64d658b7a01ea4597416f8522d5e1 Author: Jiri Slaby Date: Wed Dec 10 13:48:38 2008 +0100 kbuild: fix string equality testing in tags.sh Test of string equality in shells is =, not C-like ==. Signed-off-by: Jiri Slaby Signed-off-by: Sam Ravnborg commit 709cc372cad628846d73447edfd95ac39c8e2319 Author: Jiri Slaby Date: Wed Dec 10 13:10:13 2008 +0100 kbuild: fix make tags/cscope - fix combining O=... and tags - don't allow * expansion during sh function calls Signed-off-by: Jiri Slaby [sam: use KBUILD_SRC to check if we use O=...] Signed-off-by: Sam Ravnborg commit 31110ebbec8688c6e9597b641101afc94e1c762a Author: Sam Ravnborg Date: Sat Dec 13 23:00:45 2008 +0100 kbuild: fix make incompatibility "Paul Smith" reported that we would fail to build with a new check that may be enabled in an upcoming version of make. The error was: Makefile:442: *** mixed implicit and normal rules. Stop. The problem is that we did stuff like this: config %config: ... The solution was simple - the above was split into two with identical prerequisites and commands. With only three lines it was not worth to try to avoid the duplication. Cc: "Paul Smith" Signed-off-by: Sam Ravnborg commit 012b215ceb55aa38826f091cecfd373cc9bbb05b Author: Steve Glendinning Date: Fri Dec 12 22:32:22 2008 -0800 smsc9420: add ethtool eeprom support Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit e312674ffb5281a46a3ad06604edea6426c4eb24 Author: Steve Glendinning Date: Fri Dec 12 22:31:50 2008 -0800 smsc9420: add netpoll support Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit 1757ab2f0411110c0261dfb66d26faf63037c531 Author: Steve Glendinning Date: Fri Dec 12 22:31:16 2008 -0800 smsc911x: make smsc911x_poll_controller static Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit 56bde885903bdb9d9531fd569096ec8c7a2d60ee Merge: a7a81fc060f050ad4ba7f6ef5cdc583dad2f7b21 a7b75207bd37cbbfa0b4ee7dbaf0dc6bafec8fea Author: David S. Miller Date: Fri Dec 12 22:20:51 2008 -0800 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 commit a7a81fc060f050ad4ba7f6ef5cdc583dad2f7b21 Author: Ben Hutchings Date: Fri Dec 12 22:10:23 2008 -0800 sfc: Version 2.3 Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 7dde596ef79982327d8992a579a137b4035ad599 Author: Ben Hutchings Date: Fri Dec 12 22:09:38 2008 -0800 sfc: Fix synchronisation of efx_mtd_{probe,rename,remove} Currently efx_mtd_rename() can race with the probe() and remove() functions. Move probe() before device registration and remove() after unregistration. Move initialisation/update of all names based on the netdev name into a new function and call it under the RTNL immediately after registration. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 0c53d8c84047d86169bd4147bb8f5adf2772d2bb Author: Ben Hutchings Date: Fri Dec 12 22:08:50 2008 -0800 sfc: Use kzalloc() to ensure struct efx_spi_device is fully initialised Currently the mtd field is not initialised early enough. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit fa402b2ea9cacd1ec94fa77e3efb506a5d034da6 Author: Steve Hodgson Date: Fri Dec 12 22:08:16 2008 -0800 sfc: Treat probe as unsuccessful if it scheduled a reset From: Steve Hodgson efx_pci_probe_main() can return success despite a reset being scheduled. Catch this and retry or abort probe depending on the reset type. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit ab377358701a981e7fae1332e76b1e5d3b3b313d Author: Ben Hutchings Date: Fri Dec 12 22:06:54 2008 -0800 sfc: Use model numbers for PHY type names Some of the PHY type names are overly generic. Change them to include the model numbers of the PHYs they represent. Correct the model number reference at the top of xfp_phy.c. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit ca54a9f525236c389f464d0952c8a7d6a4035906 Author: Ben Hutchings Date: Fri Dec 12 22:06:24 2008 -0800 sfc: Use mutex_lock_interruptible() for ethtool EEPROM access ethtool must contend with the MTD driver for the SPI bus lock, which may carry out long operations such as flash erase. Allow it to be interrupted while waiting. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 11e66966277ea8a3353ad2c2773257973553e73a Author: Ben Hutchings Date: Fri Dec 12 22:05:48 2008 -0800 sfc: Specify a meaningful component for loopback RX-side and PHY tests Our ethtool self-test result names each begin with a component name. For some results this is "port0", which is not very meaningful. Change that to "rx" or "phy" as appropriate. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit b45319382150008ed7cd31b7965392d55fe68967 Author: Ben Hutchings Date: Fri Dec 12 22:05:01 2008 -0800 sfc: Remove leading spaces Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 6f158d5f29b420438e907d72cb111ddb9973f00a Author: Ben Hutchings Date: Fri Dec 12 22:00:49 2008 -0800 sfc: Add support for SFN4111T Add support code for the SFN4111T 100/1000/10GBASE-T reference design, based in part on the existing code for the SFE4001. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit e6fa2eb789f49dc51a20d3db0d410bc8158abb43 Author: Ben Hutchings Date: Fri Dec 12 22:00:17 2008 -0800 sfc: Add support for Solarflare 10Xpress SFT9001 Add type codes for the new PHY and rename the SFX7101 type code. Add definition of clause 22 extension MMD. Adapt the 10Xpress SFX7101 code to support the SFT9001 as well. Clean up register definitions. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 766ca0fa6bf1600bdf4bc7726c74f14c8455c6b8 Author: Ben Hutchings Date: Fri Dec 12 21:59:24 2008 -0800 sfc: Rework MAC, PHY and board event handling From: Steve Hodgson MAC, PHY and board events may be separately enabled and signalled. Our current arrangement of chaining the polling functions can result in events being missed. Change them to be more independent. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 04cc8cacb01c09fba2297faf1477cd570ba43f0b Author: Ben Hutchings Date: Fri Dec 12 21:50:46 2008 -0800 sfc: Implement auto-negotiation Add infrastructure for auto-negotiation of speed, duplex and flow control. When using 10Xpress, auto-negotiate flow control. While we're at it, clean up the code to warn when partner is not 10GBASE-T capable. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 177dfcd80f28f8fbc3e22c2d8b24d21cb86f1d97 Author: Ben Hutchings Date: Fri Dec 12 21:50:08 2008 -0800 sfc: Add support for sub-10G speeds The SFC4000 has a separate MAC for use at sub-10G speeds. Introduce an efx_mac_operations structure with implementations for the two MACs. Switch between the MACs as necessary. PHY settings are independent of the MAC, so add get_settings() and set_settings() to efx_phy_operations. Also add macs field to indicate which MACs the PHY is connected to. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 356eebb2b3af24cc701823f1e025f04eef333239 Author: Ben Hutchings Date: Fri Dec 12 21:48:57 2008 -0800 sfc: Clean up MDIO flag setting We often want to set or clear a flag in an MDIO register, but avoid writing if no change is required since this can have side-effects. Encapsulate this in a function, mdio_clause45_set_flag(). Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 04300d248bd5166c00a59fa18efc1f7d041e9b32 Author: Ben Hutchings Date: Fri Dec 12 21:48:09 2008 -0800 sfc: Clean up board identification Remove kluge for development boards with unspecified board type. Remove assumption of contiguous board type code assignments. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 06d5e19318e59f6f139b5171f4dfc5f3eb4dd897 Author: Ben Hutchings Date: Fri Dec 12 21:47:23 2008 -0800 sfc: Add phy_type device attribute Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 27dd2caca4eabe7c13a052b7456495ba75535e6a Author: Ben Hutchings Date: Fri Dec 12 21:44:14 2008 -0800 sfc: Add support for MMDs numbered >15 Combine DEVS0 and DEVS1 registers into a 32-bit mask instead of reading just DEVS0. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit f31a45d2f45a7667acd6e85ab6613b0910c55ea9 Author: Ben Hutchings Date: Fri Dec 12 21:43:33 2008 -0800 sfc: Remove MII extension cruft Replace efx_nic::link_options bitfield with link_speed (speed in Mbit/s) and link_fd (full duplex flag). Remove broken auto-negotiation functions. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 5005087728e37db133fee05bb0923c50e673ae99 Author: Ben Hutchings Date: Fri Dec 12 21:42:42 2008 -0800 sfc: Don't count RX checksum errors during loopback self-test The loopback self-test checks that IP packets with incorrect checksums are not altered when sent on a queue with checksum generation off. These should not contribute to RX error statistics. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 740ced9927cabe0f776265ea24fc399a71bcdef5 Author: Ben Hutchings Date: Fri Dec 12 21:41:55 2008 -0800 sfc: Abbreviate self-test names so they are not truncated Change "channel" to "chan". Shorten PHY loopback names. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 56536e9ce7c23bbc8519b8f99837493dea8da57d Author: Ben Hutchings Date: Fri Dec 12 21:37:02 2008 -0800 sfc: Provide hints to irqbalance daemon Allocate IRQs with the name format [-]- so that future versions of irqbalanced understand what we're doing. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 28b581ab0a0aa7bc8b22935779ca3e8d6f651ac7 Author: Neil Turton Date: Fri Dec 12 21:41:06 2008 -0800 sfc: Add option to use a separate channel for TX completions In a bidirectional forwarding test, we find that the best performance is achieved by sending the TX completion interrupts from one NIC to a CPU which shares an L2 cache with RX completion interrupts from the other NIC. To facilitate this, add an option (through a module parameter) to create separate channels for RX and TX completion with separate IRQs when MSI-X is available. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 84ae48fe4c1fe8b79fac015df6ad0b0937a7ae37 Author: Ben Hutchings Date: Fri Dec 12 21:34:54 2008 -0800 sfc: Restore phy_flash_cfg module parameter This is needed for recovery in case a PHY firmware upgrade is aborted. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 2f7f573095132240916a8780cd5ef648c0ad7281 Author: Ben Hutchings Date: Fri Dec 12 21:34:25 2008 -0800 sfc: Work around unreliable strap pins The SFC4000 has strap pins indicating the presence of SPI flash and/or EEPROM. These pins are also used for GPIO, and in some cases they may be read wrongly at reset. However, on production boards it must boot from one or the other device, so we can assume the boot device is present and read the board config from there. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit be4ea89c8df06f48d0d64cf1d9d20009e83c77c8 Author: Ben Hutchings Date: Fri Dec 12 21:33:50 2008 -0800 sfc: Clean up waits for flash/EEPROM operations Make falcon_spi_wait() ignore the write timer - it is only relevant to write commands, it only works for the device that contains VPD, and it might not be initialised properly at all. Rename falcon_spi_fast_wait() to falcon_spi_wait_write(), reflecting its use, and make it wait up to 10 ms (not 1 ms) since buffered writes to EEPROM may take this long to complete. Make both wait functions sleep instead of busy-waiting. Replace wait for command completion at top of falcon_spi_cmd() with a single poll; no command should be running when the function starts. Correct some comments. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 1ab00629f06fb3c47de6373cd92d086f33775444 Author: Steve Hodgson Date: Fri Dec 12 21:33:02 2008 -0800 sfc: Make reset_workqueue driver-global rather than per-NIC Each reset is serialised by the rtnl_lock anyway, so there's no win per-NIC. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 65f667fb472d28c1594d862b213a564e292a466c Author: Ben Hutchings Date: Fri Dec 12 21:32:10 2008 -0800 sfc: Correct interpretation of second param to ethtool phys_id() A value of 0 means indefinite repetition (until interrupted). Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 2b2734dcbfd2dc6b6e4b00bc6971504d7657a4eb Author: Ben Hutchings Date: Fri Dec 12 21:31:36 2008 -0800 sfc: Remove unneeded register write This was only ever needed for an FPGA version of Falcon. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 23d30f027d1e8ad3bcd6192613122ce925947563 Author: Ben Hutchings Date: Fri Dec 12 21:56:11 2008 -0800 sfc: Change SPI lengths to type size_t Based on a patch by Andrew Morton. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit a17102b1ba847ca31d9151b877fbf9a38a39a8bb Author: Ben Hutchings Date: Fri Dec 12 21:28:20 2008 -0800 sfc: Board support fixes Set dummy monitor method for unrecognised boards. Clean up board resources if efx_pci_probe_main() fails after board has been initialised. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller commit 702c7904a29629e4e6b18d5497abe84bd20c0449 Author: Karsten Keil Date: Fri Dec 12 21:21:57 2008 -0800 misdn: Fix lockdep warning use correct dynamic spinlock init function. Signed-off-by: Karsten Keil Signed-off-by: David S. Miller commit c31655fcf2c61f209aab8f4169b0e4afe49b581d Author: Hannes Eder Date: Fri Dec 12 21:20:03 2008 -0800 mISDN: hfcmulti: use __iomem address space modifier Impact: make use of the __iomem address space modifier, and change u_char *, u_short * and u_int * to void * Fix more than 30 sparse warnings of this or similar type: drivers/isdn/hardware/mISDN/hfcmulti.c:261:31: warning: incorrect type in argument 2 (different address spaces) drivers/isdn/hardware/mISDN/hfcmulti.c:261:31: got unsigned char [usertype] * drivers/isdn/hardware/mISDN/hfcmulti.c:261:31: expected void volatile [noderef] *addr Signed-off-by: Hannes Eder Acked-by: Karsten Keil Signed-off-by: David S. Miller commit c46f0a2d40f7ceb5fb696309bcd088ac75d0fe20 Author: Hannes Eder Date: Fri Dec 12 21:19:18 2008 -0800 mISDN: timerdev: use __user for mISDN_read's buffer argument Fix this warning: drivers/isdn/mISDN/timerdev.c:264:11: warning: incorrect type in initializer (incompatible argument 2 (different address spaces)) drivers/isdn/mISDN/timerdev.c:264:11: expected int ( *read )( ... ) drivers/isdn/mISDN/timerdev.c:264:11: got int ( static [toplevel] * )( ... ) Signed-off-by: Hannes Eder Acked-by: Karsten Keil Signed-off-by: David S. Miller commit 047ce8f207b144eb9be094ce7427d6e11a687010 Author: Hannes Eder Date: Fri Dec 12 21:18:32 2008 -0800 mISDN: comment out unused symbols Fix this sparse warnings: drivers/isdn/hardware/mISDN/hfcmulti.c:794: warning: 'vpm_check' defined but not used drivers/isdn/mISDN/dsp_cmx.c:1546: warning: 'dsp_start_jiffies' defined but not used Signed-off-by: Hannes Eder Acked-by: Karsten Keil Signed-off-by: David S. Miller commit 863a76e5881abe276a55c4490607a960790c5b0b Author: Hannes Eder Date: Fri Dec 12 21:17:38 2008 -0800 mISDN: fix sparse warning: symbol 'id' shadows an earlier one Impact: rename function scope variable Fix this warning: drivers/isdn/mISDN/l1oip_core.c:472:8: warning: symbol 'id' shadows an earlier one drivers/isdn/mISDN/l1oip_core.c:254:14: originally declared here Signed-off-by: Hannes Eder Acked-by: Karsten Keil Signed-off-by: David S. Miller commit bb68b1d964f89b19dc13d4f685a7d29616e2a4cb Author: Hannes Eder Date: Fri Dec 12 21:16:58 2008 -0800 mISDN: fix sparse warning: symbol 'nskb' shadows an earlier one Impact: define first occurence of variable 'nskb' in inner most possible scope Fix this sparse warning: drivers/isdn/mISDN/dsp_core.c:746:20: warning: symbol 'nskb' shadows an earlier one drivers/isdn/mISDN/dsp_core.c:634:19: originally declared here Signed-off-by: Hannes Eder Acked-by: Karsten Keil Signed-off-by: David S. Miller commit 65a40516b231f693f3afee4df77fc63c08ba8fa9 Author: Hannes Eder Date: Fri Dec 12 21:16:06 2008 -0800 mISDN: un-export symbol 'plx_lock' 'plx_lock' is only used within hfcmulti.c. Fix this warning: drivers/isdn/hardware/mISDN/hfcmulti.c:176:1: warning: symbol 'plx_lock' shadows an earlier one drivers/isdn/hardware/mISDN/hfcmulti.c:175:19: originally declared here Signed-off-by: Hannes Eder Acked-by: Karsten Keil Signed-off-by: David S. Miller commit 5b8343540a3d27f87a4d9d72bb39b7d4cc3dd95e Author: Hannes Eder Date: Fri Dec 12 21:15:17 2008 -0800 mISDN: make global symbols static or include header files The warnings fixed by including an header file for the appropriate prototype are marked with "*", for all others the corresonponding symbol has been made static. This patch fixes all such issues in mISDN. Fix this sparse warnings: drivers/isdn/hardware/mISDN/hfcmulti.c:174:5: warning: symbol 'plxsd_master' was not declared. Should it be static? drivers/isdn/hardware/mISDN/hfcmulti.c:426:1: warning: symbol 'write_fifo_regio' was not declared. Should it be static? drivers/isdn/hardware/mISDN/hfcmulti.c:447:1: warning: symbol 'write_fifo_pcimem' was not declared. Should it be static? drivers/isdn/hardware/mISDN/hfcmulti.c:469:1: warning: symbol 'read_fifo_regio' was not declared. Should it be static? drivers/isdn/hardware/mISDN/hfcmulti.c:491:1: warning: symbol 'read_fifo_pcimem' was not declared. Should it be static? drivers/isdn/hardware/mISDN/hfcmulti.c:710:1: warning: symbol 'vpm_init' was not declared. Should it be static? drivers/isdn/hardware/mISDN/hfcmulti.c:793:1: warning: symbol 'vpm_check' was not declared. Should it be static? drivers/isdn/hardware/mISDN/hfcmulti.c:816:1: warning: symbol 'vpm_echocan_on' was not declared. Should it be static? drivers/isdn/hardware/mISDN/hfcmulti.c:848:1: warning: symbol 'vpm_echocan_off' was not declared. Should it be static? * drivers/isdn/mISDN/l1oip_codec.c:224:1: warning: symbol 'l1oip_law_to_4bit' was not declared. Should it be static? * drivers/isdn/mISDN/l1oip_codec.c:261:1: warning: symbol 'l1oip_4bit_to_law' was not declared. Should it be static? * drivers/isdn/mISDN/l1oip_codec.c:281:1: warning: symbol 'l1oip_alaw_to_ulaw' was not declared. Should it be static? * drivers/isdn/mISDN/l1oip_codec.c:294:1: warning: symbol 'l1oip_ulaw_to_alaw' was not declared. Should it be static? * drivers/isdn/mISDN/l1oip_codec.c:311:1: warning: symbol 'l1oip_4bit_free' was not declared. Should it be static? * drivers/isdn/mISDN/l1oip_codec.c:322:1: warning: symbol 'l1oip_4bit_alloc' was not declared. Should it be static? drivers/isdn/mISDN/core.c:29:1: warning: symbol 'device_lock' was not declared. Should it be static? drivers/isdn/mISDN/core.c:34:1: warning: symbol 'bp_lock' was not declared. Should it be static? drivers/isdn/mISDN/core.c:196:1: warning: symbol 'mISDNInit' was not declared. Should it be static? drivers/isdn/mISDN/core.c:227:6: warning: symbol 'mISDN_cleanup' was not declared. Should it be static? drivers/isdn/mISDN/stack.c:40:1: warning: symbol 'mISDN_queue_message' was not declared. Should it be static? * drivers/isdn/mISDN/layer1.c:388:1: warning: symbol 'l1_init' was not declared. Should it be static? * drivers/isdn/mISDN/layer1.c:400:1: warning: symbol 'l1_cleanup' was not declared. Should it be static? drivers/isdn/mISDN/layer2.c:469:1: warning: symbol 'iframe_error' was not declared. Should it be static? drivers/isdn/mISDN/layer2.c:487:1: warning: symbol 'super_error' was not declared. Should it be static? drivers/isdn/mISDN/layer2.c:496:1: warning: symbol 'unnum_error' was not declared. Should it be static? drivers/isdn/mISDN/layer2.c:509:1: warning: symbol 'UI_error' was not declared. Should it be static? drivers/isdn/mISDN/layer2.c:522:1: warning: symbol 'FRMR_error' was not declared. Should it be static? drivers/isdn/mISDN/layer2.c:1069:1: warning: symbol 'enquiry_cr' was not declared. Should it be static? * drivers/isdn/mISDN/layer2.c:2196:1: warning: symbol 'Isdnl2_Init' was not declared. Should it be static? * drivers/isdn/mISDN/layer2.c:2210:1: warning: symbol 'Isdnl2_cleanup' was not declared. Should it be static? drivers/isdn/mISDN/tei.c:397:1: warning: symbol 'random_ri' was not declared. Should it be static? * drivers/isdn/mISDN/timerdev.c:277:1: warning: symbol 'mISDN_inittimer' was not declared. Should it be static? * drivers/isdn/mISDN/timerdev.c:288:6: warning: symbol 'mISDN_timer_cleanup' was not declared. Should it be static? drivers/isdn/mISDN/dsp_core.c:164:12: warning: symbol 'mISDN_dsp_revision' was not declared. Should it be static? drivers/isdn/mISDN/dsp_cmx.c:1543:5: warning: symbol 'samplecount' was not declared. Should it be static? drivers/isdn/mISDN/dsp_cmx.c:1546:5: warning: symbol 'dsp_start_jiffies' was not declared. Should it be static? drivers/isdn/mISDN/dsp_cmx.c:1547:16: warning: symbol 'dsp_start_tv' was not declared. Should it be static? drivers/isdn/mISDN/dsp_tones.c:239:3: warning: symbol 'pattern' was not declared. Should it be static? drivers/isdn/mISDN/dsp_audio.c:33:4: warning: symbol 'dsp_audio_ulaw_to_alaw' was not declared. Should it be static? Signed-off-by: Hannes Eder Acked-by: Karsten Keil Signed-off-by: David S. Miller commit dfa96ec1bb83641242c48883c2bae8f1f30483b2 Author: Hannes Eder Date: Fri Dec 12 21:13:45 2008 -0800 mISDN: consistently define 'debug' as '*u_int' Impact: change data type for variable 'debug' from *int to *u_int, same for the argument type of mISDN_inittimer In "core.h" mISDN_inittimer is declared with the argument type "*u_int", make the definition in "timerdev.c" match this. This fixes also this warnings: drivers/isdn/mISDN/layer1.c:391:8: warning: incorrect type in assignment (different signedness) drivers/isdn/mISDN/layer1.c:391:8: expected int *static [toplevel] debug drivers/isdn/mISDN/layer1.c:391:8: got unsigned int [usertype] *deb drivers/isdn/mISDN/layer2.c:2200:8: warning: incorrect type in assignment (different signedness) drivers/isdn/mISDN/layer2.c:2200:8: expected int *static [toplevel] debug drivers/isdn/mISDN/layer2.c:2200:8: got unsigned int [usertype] *deb drivers/isdn/mISDN/socket.c:769:8: warning: incorrect type in assignment (different signedness) drivers/isdn/mISDN/socket.c:769:8: expected int *static [toplevel] debug drivers/isdn/mISDN/socket.c:769:8: got unsigned int [usertype] *deb Signed-off-by: Hannes Eder Acked-by: Karsten Keil Signed-off-by: David S. Miller commit bcf91745091ba3b0813fa79afb5d10b090ea745d Author: Hannes Eder Date: Fri Dec 12 21:11:28 2008 -0800 mISDN: use NULL pointer instead of plain integer Fix more than 100 (all remaining in mISDN) sparse warnings: drivers/isdn/hardware/mISDN/hfcmulti.c:***:**: warning: Using plain integer as NULL pointer drivers/isdn/mISDN/dsp_tones.c:***:**: warning: Using plain integer as NULL pointer drivers/isdn/mISDN/dsp_pipeline.c:***:**: warning: Using plain integer as NULL pointer Signed-off-by: Hannes Eder Acked-by: Karsten Keil Signed-off-by: David S. Miller commit a7b75207bd37cbbfa0b4ee7dbaf0dc6bafec8fea Author: Tomas Winkler Date: Thu Dec 11 10:33:41 2008 -0800 iwlwifi: add contact email to MODULE_AUTHOR Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 2aa6ab86bc475a115f56645591d2413981846509 Author: Tomas Winkler Date: Thu Dec 11 10:33:40 2008 -0800 iwlwifi: remove 4965 from common uCode API structures This patch removes 4965 from common uCode API structures. Also updates iwlagn commands with 3945 specific RX command in preparation for 3945 port. Signed-off-by: Tomas Winkler Acked-by: Samuel Ortiz Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit b5047f78664fbcc18d67dafbb45bf62b310f9b0a Author: Tomas Winkler Date: Thu Dec 11 10:33:39 2008 -0800 iwlwifi: remove includes of iwl-helpers.h where not needed This patch removes includes of iwl-helpers.h where not needed Signed-off-by: Tomas Winkler Acked-by: Samuel Ortiz Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 29d51d9df53a4b383e2062b2ea0d575c9f3fca47 Author: Tomas Winkler Date: Thu Dec 11 10:33:38 2008 -0800 iwlwifi: remove unused clip_groups priv member Remove clip_groups from priv and related structure. This code is for 3945 only and was renamed to 4965 in when code was split. Also remove unused RATE definitions Signed-off-by: Tomas Winkler Acked-by: Samuel Ortiz Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit edb342286e18c5bec6d3ac325851a9cba28061b9 Author: Mohamed Abbas Date: Thu Dec 11 10:33:37 2008 -0800 iwlwifi: fix resume while txpower off This patch take care of coming out rfkill when the driver is up while rfkill is on by restarting interface. Signed-off-by: Mohamed Abbas Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 3d5717ade01ce22511f2992f150bf6644b21c377 Author: Zhu, Yi Date: Thu Dec 11 10:33:36 2008 -0800 iwlwifi: use iwl_poll_direct_bit in EEPROM reading The patch replaces the current reading EEPROM loop iterations with iwl_poll_direct_bit(). It also fixes some comment error. Signed-off-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 9c5f89b3f6580cca21dca4ede940900c5b3c3a81 Author: Jouni Malinen Date: Thu Dec 11 18:22:13 2008 +0200 ath9k: Do not remove header padding on RX from short frames The 802.11 header is only padded to 32-bit boundary when the frame has a non-zero length payload. In other words, control frames (e.g., ACK) do not have a padding and we should not try to remove it. This fixes monitor mode for short control frames. In addition, the hdrlen&3 use is described in more detail to make it easier to understand how the padding length is calculated. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit f2f1ba253d970479343f97c4620e16842c695d03 Author: Rami Rosen Date: Thu Dec 11 14:29:06 2008 +0200 iwlwifi: fix build warning (iwl-rx.c) This patch fixes the following build warning when CONFIG_IWLWIFI_DEBUG is not set. /work/src/wireless-testing/drivers/net/wireless/iwlwifi/iwl-rx.c:758: warning: 'iwl_dbg_report_frame' defined but not used Signed-off-by: Rami Rosen Acked-by: Reinette Chatre Signed-off-by: John W. Linville commit ab1f5c0bb8edbaee81c1672733f8dc4d0a5f5ea5 Author: Rami Rosen Date: Thu Dec 11 14:00:25 2008 +0200 mac80211: misc cleanups This patch removes unneeded member (skbuff) from ieee80211_ibss_add_sta() method in its declaration (in ieee80211_i.h) and its callers (in rx.c and mlme.c) This patch removes unneeded member from struct ieee80211_rx_data in ieee80211_i.h. (Originally posted as two patches. -- JWL) Signed-off-by: Rami Rosen Signed-off-by: John W. Linville commit 4dec9b807be757780ca3611a959ac22c28d292a7 Author: Johannes Berg Date: Wed Dec 10 17:48:48 2008 +0100 rfkill: strip pointless notifier chain No users, so no reason to have it. Signed-off-by: Johannes Berg Acked-by: Ivo van Doorn Signed-off-by: John W. Linville commit 6fb532527e2592f82ec07508df2e44f6c7ceff12 Author: Anna Neal Date: Tue Dec 9 13:23:45 2008 -0800 libertas: Create sysfs entry for changing the mesh probe response limit This patch adds the ability to change the number of probe response retries sent by the mesh interface. In dense networks it is recommended to change this value to zero to reduce traffic congestion. Signed-off-by: Anna Neal Signed-off-by: Andrey Yurovsky Signed-off-by: John W. Linville commit b77f483fcf0579de28873828897f53371a33a0ea Author: Sujith Date: Sun Dec 7 21:44:03 2008 +0530 ath9k: Refactor struct ath_softc Split ath_softc into smaller structures for rx, tx and beacon handling. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 59651e89187293e88863891b821c7379391ef75c Author: Christian Lamparter Date: Tue Dec 9 21:07:50 2008 +0100 p54: fix oops on faulty devices This patch fixes an oops when the devices suddenly starts to receive martian data frames. bug reference: http://marc.info/?l=linux-wireless&m=122872280317635&w=2 Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit b7a530d82cb36bb43901c196039b0fccee3ffcc3 Author: Jouni Malinen Date: Wed Dec 10 14:51:47 2008 +0200 mac80211: Disable requests for new scans in AP mode AP mode operations are seriously affected if mac80211 runs through a multi-second scan while the AP is trying to send Beacon frames on the operation channel. While this could be implemented in a way that does not cause too many problems, it is not very simple and will require synchronization with Beacon frame scheduling in the drivers (scan one channel at a time between Beacon frames). Furthermore, such scanning takes quite a bit longer time and existing userspace applications would be likely to timeout while waiting for the results. For now, just refuse requests for new scans (SIOCSIWSCAN) when in AP mode. In practice, this moves the rejection from iwl* drivers into mac80211 to make it apply to every mac80211-based driver. This issue shows up in associated stations getting disconnected when something (e.g., Network Manager) requests a scan while the interface is in AP mode. When doing this continuously (e.g., NM does it every 120 seconds), the network gets close to useless. Signed-off-by: Jouni Malinen Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 14a4dfe2ff8c353f59ae8324059ded1cfe22c7d9 Author: Helmut Schaa Date: Wed Dec 10 13:17:26 2008 +0100 ipw2200: fix scanning while associated This patch fixes sporadic firmware restarts when scanning while associated. The firmware will quietly cancel a scan (while associated) if the dwell time for a channel to be scanned is larger than the time it may stay away from the operating channel (because of DTIM catching). Unfortunately the driver is not notified about the canceled scan and therefore the scan watchdog timeout will be hit and the driver causes a firmware restart which results in disassociation. This mainly happens on passive channels which use a dwell time of 120 whereas a typical beacon interval is around 100. The patch changes the dwell time for passive channels to be slightly smaller than the actual beacon interval to work around the firmware issue. Furthermore the number of allowed beacon misses is increased from one to three as otherwise most scans (while associated) won't complete successfully. However scanning while associated will still fail in corner cases such as a beacon intervals below 30. Signed-off-by: Helmut Schaa Signed-off-by: John W. Linville commit d8004cb9267b15cd902eef01a75bb1ffa3995af8 Author: Larry Finger Date: Tue Dec 9 23:35:41 2008 -0600 b43legacy: Fix sparse warnings Sparse yields the following warnings for b43legacy: CHECK drivers/net/wireless/b43legacy/phy.c drivers/net/wireless/b43legacy/phy.c:1304:31: warning: potentially expensive pointer subtraction drivers/net/wireless/b43legacy/phy.c:1304:31: warning: potentially expensive pointer subtraction drivers/net/wireless/b43legacy/phy.c:1304:31: warning: potentially expensive pointer subtraction CHECK drivers/net/wireless/b43legacy/debugfs.c drivers/net/wireless/b43legacy/debugfs.c:243:9: warning: memset with byte count of 131072 Signed-off-by: Larry Finger Signed-off-by: John W. Linville commit c1db52b9d27ee6e15a7136e67e4a21dc916cd07f Author: Larry Finger Date: Tue Dec 9 23:34:27 2008 -0600 rtl8187: Use usb anchor facilities to manage urbs When SLUB debugging is enabled in the kernel, and the boot command includes the option "slub_debug=P", rtl8187 encounters a GPF due to a read-after-free of a urb. Following the example of changes in p54usb to fix the same problem, the code has been modified to use the usb_anchor_urb() method. With this change, the USB core handles the freeing of urb's. This patch fixes the problem reported in Kernel Bugzilla #12185 (http://bugzilla.kernel.org/show_bug.cgi?id=12185). Signed-off-by: Larry Finger Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 388cdf31db6dfc3d175786a76989266380e12c26 Author: Bob Copeland Date: Tue Dec 9 23:05:38 2008 -0500 ath5k: fix endianness of bitwise ops when installing mic Fix these bugs found by sparse: ath5k/pcu.c:1102:21: warning: restricted __le32 degrades to integer ath5k/pcu.c:1102:13: warning: incorrect type in assignment (different base types) ath5k/pcu.c:1102:13: expected restricted __le32 ath5k/pcu.c:1102:13: got unsigned int ath5k/pcu.c:1104:20: warning: restricted __le32 degrades to integer ath5k/pcu.c:1104:13: warning: incorrect type in assignment (different base types) ath5k/pcu.c:1104:13: expected restricted __le32 ath5k/pcu.c:1104:13: got unsigned int Changes-licensed-under: ISC Reported-by: Johannes Berg Signed-off-by: Bob Copeland Signed-off-by: John W. Linville commit 62d714e5ebec9ad4d63bb9a6da19dfd83d3db860 Author: David Kilroy Date: Tue Dec 9 23:05:38 2008 +0000 spectrum_cs: Fix function names used in debug strings Signed-off-by: David Kilroy Signed-off-by: John W. Linville commit 499b702a8d848aaa15d6255e9302d9186827691e Author: David Kilroy Date: Tue Dec 9 21:46:29 2008 +0000 orinoco: Fix inappropriate use of IRQ_BAP This hardware buffer should only be used from an interrupt. The wireless event generation functions are called from a workqueue, so use USER_BAP instead. Signed-off-by: David Kilroy Signed-off-by: Pavel Roskin Signed-off-by: John W. Linville commit 0c06dd8a237c673eedd295fbef7a8c0e52f5c045 Author: David Kilroy Date: Tue Dec 9 21:46:28 2008 +0000 orinoco: Fix function names used in debug strings Signed-off-by: David Kilroy Signed-off-by: Pavel Roskin Signed-off-by: John W. Linville commit 39ca5bb76f3382b1cb0062d75ec45abd1c46e6d2 Author: Christian Lamparter Date: Tue Dec 9 21:09:00 2008 +0100 p54: enforce strict tx_queue limits The patch fixes an old FIXME in p54pci.c by moving the "queue full" check into the common library, where we can deal with it properly. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 30dab79ed40f6c0f8a24e25fd9be7bd873eeeb8b Author: Winkler, Tomas Date: Tue Dec 9 11:29:01 2008 -0800 iwlwifi: remove qos module parameter The ability of disabling qos from module params is not required anymore. Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 6d1ef1a3e6b4915d4cde897971ce283bdf0d9fbc Author: Winkler, Tomas Date: Tue Dec 9 11:29:00 2008 -0800 iwlwifi: 3945 remove qos module parameter The ability of disabling qos from module params is not required anymore. Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 9f925938680b7d1adeb030befb6a4b5f86026b6a Author: Winkler, Tomas Date: Tue Dec 9 11:28:59 2008 -0800 iwlifi: remove twice defined SINGLE_FRAME RX FH MASK This patch removes second definition of FH_RCSR_CHNL0_RX_CONFIG_SINGLE_FRAME in iwl-fh.h Signed-off-by: Tomas Winkler Reported-by: Emmanuel Grumbach Acked-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 759ef89fb096c4a6ef078d3cfd5682ac037bd789 Author: Winkler, Tomas Date: Tue Dec 9 11:28:58 2008 -0800 iwlwifi: change email contact information This patch replaces personal emails with hopefully always valid Intel Linux Wireless, which will be routed to a current maintainer Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit d070d8555fbb3b9114c6f861e5cf017ea1720b67 Author: Pavel Roskin Date: Tue Dec 9 12:32:15 2008 -0500 airport: remove useless return in a function returning void Signed-off-by: Pavel Roskin Signed-off-by: John W. Linville commit 89fad578a61810b7fdf8edd294890f3c0cde4390 Author: Christian Lamparter Date: Tue Dec 9 16:28:06 2008 +0100 mac80211: integrate sta_notify_ps cmds into sta_notify This patch replaces the newly introduced sta_notify_ps function, which can be used to notify the driver about every power state transition for all associated stations, by integrating its functionality back into the original sta_notify callback. Signed-off-by: Christian Lamparter Acked-by: Johannes Berg Signed-off-by: John W. Linville commit dd397dc9dddfa2149a1bbc9e52ac7d5630737cec Author: Christian Lamparter Date: Tue Dec 9 15:14:37 2008 +0100 p54usb: rewriting rx/tx routines to make use of usb_anchor's facilities Alan Stern found several flaws in p54usb's implementation and annotated: "usb_kill_urb() and similar routines do not expect an URB's completion routine to deallocate it.  This is almost obvious -- if the URB is deallocated before the completion routine returns then there's no way for usb_kill_urb to detect when the URB actually is complete." This patch addresses all known limitations in the old implementation and fixes khub's "use-after-freed" hang, when SLUB debug's poisoning option is enabled. Signed-off-by: Christian Lamparter Cc: stable@kernel.org Tested-by: Larry Finger Signed-off-by: John W. Linville commit a07d3619faeea3f540dd55f86685136f8928b4ad Author: Senthil Balasubramanian Date: Tue Dec 9 17:23:33 2008 +0530 ath9k: BH shouldn't be enabled when hardirqs are disabled. ath_tx_complete_buf uses a BH version of spinlock and so releasing the lock enables BH which is incorrect when called from sta_notify callback as MAC80211 disables hardirqs before the driver callback is called. As ath_tx_complete_buf is shared between user and softirq context using normal spinlock may not be appropriate. Though the proper fix would be to cleanup the context properly in the driver code, this would be an interim fix to avoid kernel warning. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit b143923689fdcc8e56688f2506a11ff16e4cd20b Author: Johannes Berg Date: Tue Dec 9 12:39:52 2008 +0100 mac80211/cfg80211: check endianness in sparse runs Make sure sparse checks endianness when run on mac80211/cfg80211. Signed-off-by: Johannes Berg Cc: Sam Ravnborg Signed-off-by: John W. Linville commit f546638c3f809fdacddc03fe765669c3042e0d9d Author: Johannes Berg Date: Tue Dec 9 12:30:03 2008 +0100 mac80211: remove fragmentation offload functionality There's no driver that actually does fragmentation on the device, and the callback is buggy (when it returns an error, mac80211's fragmentation status is changed so reading the frag threshold from userspace reads the new value despite the error). Let's just remove it, if we really find some hardware supporting it we can add it back later. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit e4f2a3458f451d5fb6aa55aac6aaadcf220d0da1 Author: Johannes Berg Date: Tue Dec 9 12:26:14 2008 +0100 ath9k: remove fragmentation workaround again Looking at the RC algorithm this is no longer necessary. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 21a49fc674afd00db6de2f729f8c8e4fab2f1bdf Author: Rami Rosen Date: Tue Dec 9 08:37:28 2008 +0200 iwlwifi: fix build error (iwl-rx.c). This patch adds #ifdef CONFIG_IWLWIFI_DEBUG in iwl_rx_reply_rx() method in iwlwifi/iwl-rx.c) to avoid build error caused by "iwlwifi: implement iwl_debug_report_frame for iwlagn". Signed-off-by: Rami Rosen Acked-by: Reinette Chatre Signed-off-by: John W. Linville commit 8dffff216fcac4f79078478085e86d68db64922e Author: Johannes Berg Date: Tue Dec 9 00:10:30 2008 +0100 mac80211: only create default STA interface if supported Drivers will support this, obviously, but this forces them to set it up properly. (This includes the fix posted as "mac80211: fix ifmodes check" and tested in wireless-testing by Hin-Tak and others. -- JWL) Signed-off-by: Johannes Berg Reported-by: Larry Finger Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 0f202aa2e1e1db1d20da9bcc3f5ad43c5a22d2d5 Author: John W. Linville Date: Mon Dec 8 14:51:41 2008 -0500 ieee80211_security: correct warning about width of auth_mode Also remove auth_algo which is unused. Signed-off-by: John W. Linville commit 8aa15e1506bb0b6b643be12baf1f2d4d2f115931 Author: Senthil Balasubramanian Date: Mon Dec 8 19:43:50 2008 +0530 ath9k: avoid rx frames with corrupted descriptor. Setting RX_ABORT/RX_DIS after MAC reset and clearing RX_ABORT/RX_DIS after enbling RXE/RXDP to avoid rx frames with corrupted descriptor status. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit 2df1bff4c5cd0b28e06e4defc3f5d90618db8d53 Author: Senthil Balasubramanian Date: Mon Dec 8 19:43:49 2008 +0530 ath9k: Incorrect band enum causes invalid antenna configuration. It's a regression from the patch titled "ath9k: Use mac80211's band macros and remove enum hal_freq_band". MAC80211 band macros can't be mapped directly with our hal band enum. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit e7594072a5b918510c937c1ab0acad4e8a931bc7 Author: Senthil Balasubramanian Date: Mon Dec 8 19:43:48 2008 +0530 ath9k: Adding support for Atheros AR9285 chipset. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit e8fbc99edfe0efa0b42f04587a79a6b3371f961a Author: Senthil Balasubramanian Date: Mon Dec 8 19:43:47 2008 +0530 ath9k: Adding initvalues for Atheros AR9285 chipset. This patch adds the initvalues required for AR9285 chipset. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit 02e90d627c80127933ee56ae0e9bf727fde66105 Author: Senthil Balasubramanian Date: Mon Dec 8 19:43:46 2008 +0530 ath9k: Adding AR9285 chipset register information. Adding AR9285 register information. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit 306d6112f9b396ed237305036f8e889f8aa964b5 Author: Johannes Berg Date: Mon Dec 8 12:39:04 2008 +0100 cfg80211: fix nl80211 frequency handling Fix two small bugs with HT frequency setting: * HT is accepted even when the driver is incapable * HT40 is accepted when the driver cannot do 40 MHz (both on the selected band) Also simplify the code a little. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 7ba1c04ed727a70df2dc63464232c0ec906ad67d Author: Johannes Berg Date: Mon Dec 8 11:18:32 2008 +0100 mac80211: improve sta_notify documentation Mention more possible STA entries and document the atomic requirement. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 8ee5afbc9d2162f0919dd089023fb690f7cf8134 Author: Sujith Date: Sun Dec 7 21:43:36 2008 +0530 ath9k: Merge structures ath_atx, ath_node_aggr with ath_node Signed-off-by: Sujith Signed-off-by: John W. Linville commit f6688cd8af6260ad4717ce45d2a614633fcf5540 Author: Sujith Date: Sun Dec 7 21:43:10 2008 +0530 ath9k: Remove remaining occurrences of CONFIG_SLOW_ANT_DIV Slow Antenna Diversity has been removed, these are remnants of the old code. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 817e11de2d3392041a70c80a6d5b353ad210f276 Author: Sujith Date: Sun Dec 7 21:42:44 2008 +0530 ath9k: Add a debugfs file to show interrupt statistics Location: ath9k//interrupt Signed-off-by: Sujith Signed-off-by: John W. Linville commit 3706de6f58962ba74c18eb4cb1ebe034ff723037 Author: Sujith Date: Sun Dec 7 21:42:10 2008 +0530 ath9k: Maintain rate table choice after association A scan run after association would change sc_curmode which is used to get the current rate table. This patch fixes it by removing sc_curmode and setting the rate table in usage in cur_rate_table on association. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 40990ec01fcca0b86a19c13a5d3deb77da1913a7 Author: Sujith Date: Sun Dec 7 21:41:37 2008 +0530 ath9k: Fix bug in rate table management The proper rate table wouldn't be used if a disassoc happens and a new attempt is made to associate using wpa_supplicant. This patch fixes it by storing the rate table to be used on association. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 6b3aa6ab787fe545c58554b7ce5c94de53526b83 Author: Jouni Malinen Date: Fri Dec 5 20:43:27 2008 +0200 ath9k: Disable staggered Beacon frame scheduling It looks like there are some issues in the current ath9k version as far as staggered Beacon frame scheduling is concerned. This results in Beacon frame timestamp being off by 25 milliseconds or so which can cause issues with multicast power save buffering in AP mode. Some client stations fail to receive multicast frames when there is this large an offset between TBTT and actual Beacon transmission time. Since ath9k does not yet support multiple BSSes anyway, the staggered Beacon frame scheduling is just increasing the number of interrupts at this point. The easiest fix for the timestamp offset is to disable staggered Beacon frames for now. We need to redesign beacon.c anyway when adding multi-BSS support with mac80211 since the existing code depends on different mechanism for Beacon frame transmission. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 3fbb9d95a96c6a03f2e484bb1665d089412640dc Author: Jouni Malinen Date: Fri Dec 5 20:42:45 2008 +0200 ath9k: Free Beacon skbs in AP mode Fix a memory leak where AP mode did not free transmitted Beacon frame skbs. Signed-off-by: Jouni Malinen Acked-by: Pat Erley Signed-off-by: John W. Linville commit 61ff84a4ce6451c9a0b675d355e0580e53628801 Author: Rami Rosen Date: Fri Dec 5 18:16:21 2008 +0200 iwlwifi: cleanup (remove pm_state) This patches removes unused variable (pm_state) from iwl-dev.h and from iwl-3945.h. (wireless-testing tree) Signed-off-by: Rami Rosen Signed-off-by: John W. Linville commit a8ec42c1431e8a43f910fb27af4882416cf5d6b1 Author: Zhu, Yi Date: Fri Dec 5 07:58:41 2008 -0800 iwlwifi: use rmb/wmb to protect indirect mmio operation This patch protects iwlwifi indirect mmio operations with rmb() and wmb(). It makes sure CPU reordering won't affect our indirect mmio access. Signed-off-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 73d7b5acc461bdc99e0135779d15e1874c6e00a6 Author: Zhu, Yi Date: Fri Dec 5 07:58:40 2008 -0800 iwlwifi: iwl_poll_{direct_}bit cleanup The patch merges implementation of iwl_poll_bit() and iwl_poll_direct_bit() by letting the latter be a special case of the former. Signed-off-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 42802d71dd14dd0e435a8da59d817d0c6f8a2866 Author: Zhu, Yi Date: Fri Dec 5 07:58:39 2008 -0800 iwlwifi: fix "MAC in deep sleep" error This patch fixes the misue of CSR_GP_CNTRL with CSR_RESET address in polling the CSR_GP_CNTRL_REG_FLAG_MAC_CLOCK_READY bit in iwl4965_apm_reset(). This causes "MAC in deep sleep" error sometimes. The patch also fixes the timeout value and the iwl_poll_bit() return value check. Signed-off-by: Zhu Yi Acked-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit f056658bb9c3085d5ec52fbdd45b38d55b899cc9 Author: Zhu, Yi Date: Fri Dec 5 07:58:38 2008 -0800 iwlwifi: fix time interval misuse in iwl_poll_{direct_}bit The patch fixes the misuse of microsecond with millisecond in the polling mechanism of the iwlwifi driver. The impact of this problem is the unacceptable latency for the whole system (especially during bringing down the wlan interface). Signed-off-by: Zhu Yi Acked-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 7262796ab726fcefad9b588a44d1d5a9f221051f Author: Abbas, Mohamed Date: Fri Dec 5 07:58:37 2008 -0800 iwl3945: Fix rate scale for B-mode connection This patch make sure we use only CCK rate for B only network. For 3945 driver, it sets REPLY_RATE_SCALE command every time we connect to a new network. In this command we set for every rate the number of try and next rate. The problem mac80211 reports same mode for both B and G mode as IEEE80211_BAND_2GHZ which will cause using invalid rate other than CCK in B only network. THis patch on association will examine sta valid rate on association, if no OFDM rate in valid available rates it considers it as B only mode so we can set REPLY_RATE_SCALE command with valid B only network and only choose CCK rate in rate scaling. Signed-off-by: Mohamed Abbas Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 00e540b3768c96a5e2a9d5d39524fef98b2cd981 Author: Halperin, Daniel C Date: Fri Dec 5 07:58:36 2008 -0800 iwlwifi: implement iwl_debug_report_frame for iwlagn The old version of this code was copied from 3945 and never updated. This patch cleans up structs that do not apply and accounts for other changes from 3945->iwlagn (e.g., PHY info can come in a separate cmd response from the ucode.) Signed-off-by: Daniel Halperin Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 447107fb32d75425c95a33f58e6b4b760b470092 Author: Reinette Chatre Date: Thu Dec 4 14:49:08 2008 -0800 mac80211: remove WARN_ON() from ieee80211_hw_config ieee80211_hw_config can return an error when the hardware has rfkill enabled. A WARN_ON() is too harsh for this failure as it is a valid scenario. Only comment this warning as we would like to have it back when rfkill is integrated into mac80211. Also reintroduce propagation of error if ieee80211_hw_config fails in ieee80211_config_beacon. This patch partially reverts patch: 5f0387fc3337ca26f0745f945f550f0c3734960f "mac80211: clean up ieee80211_hw_config errors" Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit bb608e9db7d29616fb6e0d856c23434610d4a1bd Author: Senthil Balasubramanian Date: Thu Dec 4 20:38:13 2008 +0530 wireless: Incorrect LEAP authentication algorithm identifier. This patch fixes a regression introduced by "wireless: avoid some net/ieee80211.h vs. linux/ieee80211.h conflicts" LEAP authentication algorithm identifier should be 128. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit a7db74f4be3835fd16c6c582d320f692ccccc622 Author: Larry Finger Date: Wed Dec 3 22:21:20 2008 -0600 rtl8187: Improve wireless statistics for RTL8187 The current wireless statistics for the RTL8187 poorly indicate the signal strength and quality. With testing, I found that the AGC value is inversely correlated with the strength as in the RTL8187B. By implementing a similar calculation, much more code becomes common to the two devices. Signed-off-by: Larry Finger Tested by: Martín Ernesto Barreyro Acked-by: Hin-Tak Leung Signed-off-by: John W. Linville commit fd28a5b58dddf5cb5df162ae5c8797a63171c31d Author: Andi Kleen Date: Tue Oct 21 14:05:00 2008 +0200 x86: remove simnow earlyprintk support Impact: remove obsolete code The later versions of SimNow! actually all have serial console emulation, so the direct interface isn't needed anymore. So remove the undocumented simnow earlyprintk console. Signed-off-by: Andi Kleen Signed-off-by: Thomas Gleixner commit 9470565579f29486f4ed0ffa50774268b64994b0 Author: Dave Jones Date: Mon Dec 1 14:13:50 2008 -0800 x86: remove init_mm export as planned for 2.6.26 Impact: remove deprecated export Signed-off-by: Dave Jones Signed-off-by: Andrew Morton Signed-off-by: Thomas Gleixner commit d65bd5ecb2bd166cea4952a59b7e16cc3ad6ef6c Author: Heiko Carstens Date: Tue Dec 9 18:49:51 2008 +0100 sched: add missing arch_update_cpu_topology() call arch_reinit_sched_domains() used to call arch_update_cpu_topology() via arch_init_sched_domains(). This call got lost with e761b7725234276a802322549cee5255305a0930 ("cpu hotplug, sched: Introduce cpu_active_map and redo sched domain managment (take 2)". So we might end up with outdated and missing cpus in the cpu core maps (architecture used to call arch_reinit_sched_domains if cpu topology changed). This adds a call to arch_update_cpu_topology in partition_sched_domains which gets called whenever scheduling domains get updated. Which is what is supposed to happen when cpu topology changes. Signed-off-by: Heiko Carstens Signed-off-by: Ingo Molnar commit ee79d1bdb6a10499e53f80b1e8d14110215178ba Author: Heiko Carstens Date: Tue Dec 9 18:49:50 2008 +0100 sched: let arch_update_cpu_topology indicate if topology changed Change arch_update_cpu_topology so it returns 1 if the cpu topology changed and 0 if it didn't change. This will be useful for the next patch which adds a call to this function in partition_sched_domains. Signed-off-by: Heiko Carstens Signed-off-by: Ingo Molnar commit 2bed8446819a7c5033aa1da138d9f230ae212edc Author: Ingo Molnar Date: Fri Dec 12 12:13:36 2008 +0100 tracing/function-graph-tracer: add a new .irqentry.text section, fix Impact: build fix 32-bit x86 needs this section too. Signed-off-by: Ingo Molnar commit cbc34ed1ac36690f75fd272e19e7b4fc29aae5a2 Author: Peter Zijlstra Date: Wed Dec 10 08:08:22 2008 +0100 sched: fix tracepoints in scheduler The trace point only caught one of many places where a task changes cpu, put it in the right place to we get all of them. Change the signature while we're at it. Signed-off-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 915b0d0104b72fd36af088ba4b11b5690bc96a6c Author: Hiroshi Shimamoto Date: Mon Dec 8 19:19:26 2008 -0800 x86: hardirq: introduce inc_irq_stat() Impact: cleanup Introduce inc_irq_stat() macro and unify irq_stat accounting code. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit fd10902797fc9d6abaf55d9c2e3c6698c90b10c7 Merge: 5b3eec0c80038c8739ccd465b897a35c0dff1cc4 8b1fae4e4200388b64dd88065639413cb3f1051c Author: Ingo Molnar Date: Fri Dec 12 11:59:39 2008 +0100 Merge commit 'v2.6.28-rc8' into x86/irq commit 8f2466f45f75e3cbe3aa2b69d33fd9d6e343b9cc Author: Hiroshi Shimamoto Date: Mon Dec 8 19:19:07 2008 -0800 x86: kill #ifdef for exit_idle() Impact: cleanup Introduce helper inline function in arch/x86/include/asm/idle.h to remove #ifdefs around exit_idle(). Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 16855f878d7127a8bb3925753463485f3071ad76 Author: Hiroshi Shimamoto Date: Mon Dec 8 19:18:38 2008 -0800 x86: uaccess: return value of __{get|put}_user() can be int Impact: cleanup The type of return value of __{get|put}_user() can be int. There is no user to refer the return value of __{get|put}_user() as long. This reduces code size a bit on 64-bit. $ size vmlinux.* text data bss dec hex filename 4509265 479988 673588 5662841 566879 vmlinux.new 4511462 479988 673588 5665038 56710e vmlinux.old Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit e18d7af85296cb6999aae171e8a9f8612bea5ae0 Merge: 3555105333ae55414d0fe051557bd7dc590f5255 8b1fae4e4200388b64dd88065639413cb3f1051c Author: Ingo Molnar Date: Fri Dec 12 11:53:43 2008 +0100 Merge commit 'v2.6.28-rc8' into x86/mm commit f8b755ac8e0cc3f330269e4c4504514f987167a2 Author: Frederic Weisbecker Date: Tue Dec 9 23:55:25 2008 +0100 tracing/function-graph-tracer: Output arrows signal on hardirq call/return Impact: make more obvious the hardirq calls in the output When a hardirq is triggered inside the codeflow on output, we have now two arrows that indicate the entry and return of the hardirq. 0) | bit_waitqueue() { 0) 0.880 us | __phys_addr(); 0) 2.699 us | } 0) | __wake_up_bit() { 0) ==========> | smp_apic_timer_interrupt() { 0) 0.797 us | native_apic_mem_write(); 0) 0.715 us | exit_idle(); 0) | irq_enter() { 0) 0.722 us | idle_cpu(); 0) 5.519 us | } 0) | hrtimer_interrupt() { 0) | ktime_get() { 0) | ktime_get_ts() { 0) 0.805 us | getnstimeofday(); [...] 0) ! 108.528 us | } 0) | irq_exit() { 0) | do_softirq() { 0) | __do_softirq() { 0) 0.895 us | __local_bh_disable(); 0) | run_timer_softirq() { 0) 0.827 us | hrtimer_run_pending(); 0) 1.226 us | _spin_lock_irq(); 0) | _spin_unlock_irq() { 0) 6.550 us | } 0) 0.924 us | _local_bh_enable(); 0) + 12.129 us | } 0) + 13.911 us | } 0) 0.707 us | idle_cpu(); 0) + 17.009 us | } 0) ! 137.419 us | } 0) <========== | 0) 1.045 us | } 0) ! 148.908 us | } 0) ! 151.022 us | } 0) ! 153.022 us | } 0) 0.963 us | journal_mark_dirty(); 0) 0.925 us | __brelse(); Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit bcbc4f20b52c2c40c43a4d2337707dcdfe81bc3a Author: Frederic Weisbecker Date: Tue Dec 9 23:54:20 2008 +0100 tracing/function-graph-tracer: annotate do_IRQ and smp_apic_timer_interrupt Impact: move most important x86 irq entry-points to a separate subsection Annotate do_IRQ and smp_apic_timer_interrupt to put them into the .irqentry.text subsection. These function will so be recognized as hardirq entrypoints for the function-graph-tracer. We could also annotate other irq entries but the others are far less important but they can be added on request. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit a0343e823184070f55364d8359f832dcb33c57c7 Author: Frederic Weisbecker Date: Tue Dec 9 23:53:16 2008 +0100 tracing/function-graph-tracer: add a new .irqentry.text section Impact: let the function-graph-tracer be aware of the irq entrypoints Add a new .irqentry.text section to store the irq entrypoints functions inside the same section. This way, the tracer will be able to signal an interrupts triggering on output by recognizing these entrypoints. Also, make this section recordable for dynamic tracing. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 85072bd55219231b8ca5d9d3fa3492eb4fa6635f Author: Ingo Molnar Date: Fri Dec 12 11:08:42 2008 +0100 x86, debug: remove EBDA debug printk Remove leftover EBDA debug message. Reported-by: Andrew Morton Signed-off-by: Ingo Molnar commit c1dfdc7597d051b09555d4ae2acb90403e238746 Merge: efbe027e95dc13ac343b6130948418d7ead7ddf1 8b1fae4e4200388b64dd88065639413cb3f1051c Author: Ingo Molnar Date: Fri Dec 12 10:29:35 2008 +0100 Merge commit 'v2.6.28-rc8' into sched/core commit da485e0cb16726797e99a595a399b9fc721b91bc Author: Frederic Weisbecker Date: Thu Dec 11 16:14:23 2008 +0100 tracing/fastboot: include missing headers For now include/trace/boot.h doesn't need to include necessary headers for its functions and structures because the files that include it already do it. But boot.h could be needed as well for further uses on other files. So, this patch adds the necessary headers for future purposes... Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 8001530d5af707eb9a158839c8f651eb6c1cb3c2 Author: Stephen Rothwell Date: Thu Dec 11 16:10:08 2008 +0100 tracing/fastboot: fix len of func buffer Impact: fix possible stack overrun This is a port of a patch included in the mainline (KSYM_SYMBOL_LEN fixes). The current func len is not large enough to contain the max symbol len, the right size must be KSYM_SYMBOL_LEN. Signed-off-by: Stephen Rothwell Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 8808500f26a61757cb414da76b271bbd09d5958c Author: Ingo Molnar Date: Fri Dec 12 09:20:12 2008 +0100 x86: soften multi-BAR mapping sanity check warning message Impact: make debug warning less scary The ioremap() time multi-BAR map warning has been causing false positives: http://lkml.org/lkml/2008/12/10/432 http://lkml.org/lkml/2008/12/11/136 So make it less scary by making it once-per-boot, by making it KERN_INFO and by adding this text: "Info: mapping multiple BARs. Your kernel is fine." Signed-off-by: Ingo Molnar commit ffc2238af8431d930d2c15f16feecf1fd6d75642 Author: Ingo Molnar Date: Fri Dec 12 08:21:19 2008 +0100 x86, bts: fix build error Impact: build fix arch/x86/kernel/ds.c: In function 'ds_request': arch/x86/kernel/ds.c:236: sorry, unimplemented: inlining failed in call to 'ds_get_context': recursive inlining but the recursion here is scary ... Signed-off-by: Ingo Molnar commit a93751cab71d63126687551823ed3e70cd85854a Author: Markus Metzger Date: Thu Dec 11 13:53:26 2008 +0100 x86, bts, ftrace: adapt the hw-branch-tracer to the ds.c interface Impact: restructure code, cleanup Remove BTS bits from the hw-branch-tracer (renamed from bts-tracer) and use the ds interface. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit c2724775ce57c98b8af9694857b941dc61056516 Author: Markus Metzger Date: Thu Dec 11 13:49:59 2008 +0100 x86, bts: provide in-kernel branch-trace interface Impact: cleanup Move the BTS bits from ptrace.c into ds.c. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit b0884e25fe361f2ca228808fb5fd1b74cb04e711 Author: Markus Metzger Date: Thu Dec 11 13:45:23 2008 +0100 x86, bts: turn BUG_ON into WARN_ON_ONCE Impact: make the ds code more debuggable Turn BUG_ON's into WARN_ON_ONCE. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit f3134de60624829a57741c1f3796847d4de165f6 Merge: e726f5f91effd8944c76475a2688093a03ba0d10 361b73d5c34f59c3fd107bb9dbe7a1fbff2c2517 Author: Ingo Molnar Date: Fri Dec 12 07:40:08 2008 +0100 Merge branches 'tracing/function-graph-tracer' and 'tracing/ring-buffer' into tracing/core commit 7a3c66e2d322c638e9306e739d96b2192dacde88 Author: Daniel Silverstone Date: Thu Dec 11 21:00:29 2008 -0800 net: Add support for the KS8695 ethernet devices. Implements the KS8695 ethernet device (ks8695net). This driver is only of use on the KS8695 which is an ARM9 based SoC. The documentation on this SoC is sparse and poor, with barely a register description and a rough outline of how the ethernet works, this driver was therefore written with strong reference to the Micrel supplied Linux 2.6.9 port, and to Andrew Victor's ks8695eth driver. Signed-off-by: Daniel Silverstone Signed-off-by: Vincent Sanders Acked-by: Ben Dooks Signed-off-by: David S. Miller commit 82a9928db560c429807f02467d22394f944a8916 Author: Atsushi Nemoto Date: Thu Dec 11 20:58:04 2008 -0800 tc35815: Enable StripCRC feature The chip can strip CRC automatically on receiving. Enable it. Also fix potential RX_BUF_SIZE calculation bug which was obscured by alignment. And use proper symbols (NET_IP_ALIGN, ETH_FCS_LEN, etc.) instead of magic numbers. Signed-off-by: Atsushi Nemoto Signed-off-by: David S. Miller commit 2cb377283f3469d66f0ea7358015abfe8366e5d0 Author: Steve Glendinning Date: Thu Dec 11 20:54:30 2008 -0800 smsc9420: SMSC LAN9420 10/100 PCI ethernet adapter This patch adds a driver for the LAN9240 PCI ethernet adapter. Changes since initial submission: - debug msg_level has been changed to use standard definitions - convert to use net_device_ops Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit ea943d41a8770857d50029fdc8fd111635c21a1f Author: Jeff Kirsher Date: Thu Dec 11 20:34:19 2008 -0800 igb: fixup AER with proper error handling Based on Peter Waskiewicz patch for ixgbe. Add error handling based on Hemminger's recommendation. Signed-off-by: Jeff Kirsher Acked-by: Peter P Waskiewicz Jr Signed-off-by: David S. Miller commit 49d92c7d5bbd158734bc34ed578a68b214a48583 Author: Stanley.Miao Date: Thu Dec 11 23:28:10 2008 +0800 ASoC: TWL4030: hands-free start-up sequence. A special start-up sequence is required to reduce the pop-noise of Class D amplifier when enable hands-free on TWL4030. Signed-off-by: Stanley.Miao Signed-off-by: Mark Brown commit 4544f8a22f38ba4560320fcfbe8c7e81562ddc6f Author: Mark Brown Date: Thu Dec 11 16:11:38 2008 +0000 ASoC: Fix variable name for Blackfin I2S DAI Signed-off-by: Mark Brown commit cd85400a022335a92fa3c25827179a7ad5e02225 Author: Stefan Roese Date: Fri Dec 5 01:58:49 2008 +0000 powerpc/4xx: Add L2 cache node to AMCC Canyonlands dts file With this patch the L2 cache is enabled on Canyonlands to increase the overall performance. There is a known cache coherency issue with the L2 cache, but this is related to the high bandwidth (HB) PLB segment where the memory address is 0x8.xxxx.xxxx (low bandwidth PLB segment is mapped to 0x0.xxxx.xxxx). Since this HB address is currently unused it is safe to enable the L2 cache. Signed-off-by: Stefan Roese Signed-off-by: Josh Boyer commit 132bb7c0efe82fc976b06d557f5d63536cb9fdaa Author: Takashi Iwai Date: Thu Dec 11 15:39:52 2008 +0100 ALSA: hda - Add development tree URLs in HD-audio.txt Signed-off-by: Takashi Iwai commit f8bbd06b17f16984328398cdecdf9302ef9bb0bf Author: Takashi Iwai Date: Thu Dec 11 13:12:59 2008 +0100 ALSA: hda - Fix another typo in HD-Audio.txt commit 42a73df435a23e60d97d9d860f4e55dc9833e950 Author: Takashi Iwai Date: Thu Dec 11 12:12:06 2008 +0100 ALSA: sb8 - Fix a return code in the error path Fixed a compile warning below: sound/isa/sb/sb8.c: In function ‘snd_sb8_probe’: sound/isa/sb/sb8.c:104: warning: ‘err’ may be used uninitialized in this function by setting the return value correctly. Signed-off-by: Takashi Iwai commit 5c0b9bec460c348d2ee5a800c288e5d0e8fcda66 Author: Takashi Iwai Date: Thu Dec 11 11:47:17 2008 +0100 ALSA: hda - Fix a compile warning when CONFIG_PM=n Fixed the compile warning regarding the unused function when built with CONFIG_PM=n: sound/pci/hda/hda_intel.c:1905: warning: ‘snd_hda_codecs_inuse’ defined but not used snd_hda_codecs_inuse() is used only in the resume callback. Signed-off-by: Takashi Iwai commit 6de45d5d776d2a7e7a9adc8ea49d37fe1bd45fb2 Author: Takashi Iwai Date: Thu Dec 11 10:28:18 2008 +0100 ALSA: ASoC - Fix DAI registration in s3c2443-ac97.c Fixed the registration of dais in s3c2443-ac97.c. sound/soc/s3c24xx/s3c2443-ac97.c: In function 's3c2443_ac97_init': sound/soc/s3c24xx/s3c2443-ac97.c:401: warning: passing argument 1 of 'snd_soc_register_dai' from incompatible pointer type sound/soc/s3c24xx/s3c2443-ac97.c: In function 's3c2443_ac97_exit': sound/soc/s3c24xx/s3c2443-ac97.c:407: warning: passing argument 1 of 'snd_soc_unregister_dai' from incompatible pointer type Signed-off-by: Takashi Iwai commit 623b9f6738dee0394398564a74fdabbff00f506f Author: Takashi Iwai Date: Thu Dec 11 07:44:18 2008 +0100 ALSA: hda - Update HD-Audio.txt Fixed typos and added a section about codecgraph. Thanks to Vedran Miletić and Daniel T Chen for suggestions. Signed-off-by: Takashi Iwai commit 293a4f28333a38aa75254bfb01a5102afc981809 Author: Eric Leblond Date: Wed Dec 10 17:24:33 2008 -0800 netfilter: xt_NFLOG is dependant of nfnetlink_log The patch "don't call nf_log_packet in NFLOG module" make xt_NFLOG dependant of nfnetlink_log. This patch forces the dependencies to fix compilation in case only xt_NFLOG compilation was asked and modifies the help message accordingly to the change. Signed-off-by: Eric Leblond Signed-off-by: David S. Miller commit 8229efdaef1e7913ae1712c0ba752f267e5fcd5e Author: Benjamin Thery Date: Wed Dec 10 16:30:15 2008 -0800 netns: ip6mr: enable namespace support in ipv6 multicast forwarding code This last patch makes the appropriate changes to use and propagate the network namespace where needed in IPv6 multicast forwarding code. This consists mainly in replacing all the remaining init_net occurences with current netns pointer retrieved from sockets, net devices or mfc6_caches depending on the routines' contexts. Some routines receive a new 'struct net' parameter to propagate the current netns: * ip6mr_get_route * ip6mr_cache_report * ip6mr_cache_find * ip6mr_cache_unresolved * mif6_add/mif6_delete * ip6mr_mfc_add/ip6mr_mfc_delete * ip6mr_reg_vif All the IPv6 multicast forwarding variables moved to struct netns_ipv6 by the previous patches are now referenced in the correct namespace. Changelog: ========== * Take into account the net associated to mfc6_cache when matching entries in mfc_unres_queue list. * Call mroute_clean_tables() in ip6mr_net_exit() to free memory allocated per-namespace. * Call dev_net_set() in ip6mr_reg_vif() to initialize dev->nd_net correctly. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit 8b90fc7e5b43aaef941044a4785a42439015b539 Author: Benjamin Thery Date: Wed Dec 10 16:29:48 2008 -0800 netns: ip6mr: declare ip6mr /proc/net entries per-namespace Declare IPv6 multicast forwarding /proc/net entries per-namespace: /proc/net/ip6_mr_vif /proc/net/ip6_mr_cache Changelog ========= V2: * In routine ipmr_mfc_seq_idx(), only match entries belonging to current netns in mfc_unres_queue list. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit 950d5704e5daa1f90bcd75b99163491e7b249169 Author: Benjamin Thery Date: Wed Dec 10 16:29:24 2008 -0800 netns: ip6mr: declare reg_vif_num per-namespace Preliminary work to make IPv6 multicast forwarding netns-aware. Declare variable 'reg_vif_num' per-namespace, moves into struct netns_ipv6. At the moment, this variable is only referenced in init_net. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit a21f3f997c73ced682129aedd372bb6b53041510 Author: Benjamin Thery Date: Wed Dec 10 16:28:44 2008 -0800 netns: ip6mr: declare mroute_do_assert and mroute_do_pim per-namespace Preliminary work to make IPv6 multicast forwarding netns-aware. Declare IPv6 multicast forwarding variables 'mroute_do_assert' and 'mroute_do_pim' per-namespace in struct netns_ipv6. At the moment, these variables are only referenced in init_net. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit 4045e57c19bee150370390545ee8a933b3f7a18d Author: Benjamin Thery Date: Wed Dec 10 16:27:21 2008 -0800 netns: ip6mr: declare counter cache_resolve_queue_len per-namespace Preliminary work to make IPv6 multicast forwarding netns-aware. Declare variable cache_resolve_queue_len per-namespace: moves it into struct netns_ipv6. This variable counts the number of unresolved cache entries queued in the list mfc_unres_queue. This list is kept global to all netns as the number of entries per namespace is limited to 10 (hardcoded in routine ip6mr_cache_unresolved). Entries belonging to different namespaces in mfc_unres_queue will be identified by matching the mfc_net member introduced previously in struct mfc6_cache. Keeping this list global to all netns, also allows us to keep a single timer (ipmr_expire_timer) to handle their expiration. In some places cache_resolve_queue_len value was tested for arming or deleting the timer. These tests were equivalent to testing mfc_unres_queue value instead and are replaced in this patch. At the moment, cache_resolve_queue_len is only referenced in init_net. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit 4a6258a0e33d042e4c84d9dec25d45ddb40a70b3 Author: Benjamin Thery Date: Wed Dec 10 16:24:07 2008 -0800 netns: ip6mr: dynamically allocate mfc6_cache_array Preliminary work to make IPv6 multicast forwarding netns-aware. Dynamically allocates IPv6 multicast forwarding cache, mfc6_cache_array, and moves it to struct netns_ipv6. At the moment, mfc6_cache_array is only referenced in init_net. Replace 'ARRAY_SIZE(mfc6_cache_array)' with mfc6_cache_array size: MFC6_LINES. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit 58701ad41105638baa0b38ffe9ac5b10469c1fd3 Author: Benjamin Thery Date: Wed Dec 10 16:22:34 2008 -0800 netns: ip6mr: store netns in struct mfc6_cache This patch stores into struct mfc6_cache the network namespace each mfc6_cache belongs to. The new member is mfc6_net. mfc6_net is assigned at cache allocation and doesn't change during the rest of the cache entry life. This will help to retrieve the current netns around the IPv6 multicast forwarding code. At the moment, all mfc6_cache are allocated in init_net. Changelog: ========== * Use write_pnet()/read_pnet() to set and get mfc6_net. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit 4e16880cb4225bfa68878ad5b2a9ded53657d054 Author: Benjamin Thery Date: Wed Dec 10 16:15:08 2008 -0800 netns: ip6mr: dynamically allocates vif6_table Preliminary work to make IPv6 multicast forwarding netns-aware. Dynamically allocates interface table vif6_table and moves it to struct netns_ipv6, and updates MIF_EXISTS() macro. At the moment, vif6_table is only referenced in init_net. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit bd91b8bf372911c1e4d66d6bb44fe409349a6791 Author: Benjamin Thery Date: Wed Dec 10 16:07:08 2008 -0800 netns: ip6mr: allocate mroute6_socket per-namespace. Preliminary work to make IPv6 multicast forwarding netns-aware. Make IPv6 multicast forwarding mroute6_socket per-namespace, moves it into struct netns_ipv6. At the moment, mroute6_socket is only referenced in init_net. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit 5eaa65b240c5eb7bf2235eb9dd177c83e6e3832c Author: Roel Kluin Date: Wed Dec 10 15:18:31 2008 -0800 net: Make static Sparse asked whether these could be static. Signed-off-by: Roel Kluin Signed-off-by: David S. Miller commit 2107fb8b5bf018be691afdd4c6ffaecf0c3307be Author: Steve Glendinning Date: Wed Nov 5 00:35:38 2008 +0000 smsc911x: add dynamic bus configuration Convert the driver to select 16-bit or 32-bit bus access at runtime, at a small performance cost. Signed-off-by: Steve Glendinning Acked-by: Catalin Marinas Signed-off-by: David S. Miller commit 3b1228abc93f7ab0aa28c46341d6a0f7e2cade70 Author: Mark Brown Date: Wed Dec 10 19:27:10 2008 +0000 ASoC: Stop WM8903 SYSCLK when suspending This will save some additional power. Signed-off-by: Mark Brown commit d58d5d5567ea9483346f57c83a94ce05992cd47c Author: Mark Brown Date: Wed Dec 10 18:36:42 2008 +0000 ASoC: Convert WM8903 driver to register at I2C probe time The driver now registers the codec and DAI when probed as an I2C device. Also convert the driver to use a single dynamic allocation to simplify error handling. Signed-off-by: Mark Brown commit 78e19a39d3985e2a06354493a70a200c0d432de5 Author: Mark Brown Date: Wed Dec 10 15:38:36 2008 +0000 ASoC: Convert WM8900 to do more work at I2C probe time Redo the instantiation of the WM8900 to do most of the initialisation work when the I2C driver probes rather than when the ASoC device is instantiated, registering the codec with the ASoC core when done. Also move all dynamic allocations into a single kmalloc() to simplify error handling and rename the I2C driver to make output more sensible. Signed-off-by: Mark Brown commit f144b7f6679d9833bd3b94b91e452592b6d0e502 Author: Takashi Iwai Date: Wed Dec 10 17:23:24 2008 +0100 ALSA: cs5535 - Make OLPC-stuff depending on MGEODE_LX The GPIO stuff for OLPC in cs5535audio_olpc.c is implemented only for Geode-LX, and enabled only when CONFIG_MGEODE_LX=y. Without this config option, the driver gets build errors. This patch adds a workaround to make it dependent on CONFIG_MGEODE_LX. Ideally, the OLPC-GPIO stuff should be implemented in a way independent from CPU type selection... Signed-off-by: Takashi Iwai commit 0fb497f5b6ff8da1e9e60afb39835f40d7f043ec Author: Andres Salomon Date: Thu Nov 6 16:53:34 2008 -0500 ALSA: cs5535audio: ensure MIC Bias/Analog Input bail if not on an OLPC machine Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit b5ccc57b06b54058879ab3ea548625d9bf88c7fc Author: Andres Salomon Date: Thu Nov 6 16:53:26 2008 -0500 ALSA: cs5535audio: clean up OLPC code - add copyright info to _olpc.c - minor layout fixes - make Makefile more concise - silence a warning Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit c8f0eeebc119c401202bc2794bec026d6cfd062e Author: Andres Salomon Date: Thu Nov 6 16:53:19 2008 -0500 ALSA: cs5535audio: turn off mic bias on OLPCs by default Always turn off mic bias; the MIC LED should never come on when the driver is first loaded. Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit 01da02419da827742acd5235467f493206e83574 Author: Andres Salomon Date: Thu Nov 6 16:53:11 2008 -0500 ALSA: cs5535audio: for OLPC, default to Analog Input being off Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit bf1e5278354856ac0260d338961560e720147681 Author: Andres Salomon Date: Thu Nov 6 16:53:03 2008 -0500 ALSA: cs5535audio: rename V_REFOUT control to MIC Bias This drops the AD1888 V_REFOUT control, and replaces it with a MIC Bias Enable control. It also moves the MIC bias enabling into a separate function. Signed-off-by: Andres Salomon commit e463ae1d13ffe4943bb31f47cc6f24415e55a59a Author: Chris Ball Date: Thu Nov 6 16:50:09 2008 -0500 ALSA: cs5535audio: enable OLPC's V_REFOUT bias when recording The OLPC has a privacy light hooked up in series with the microphone's V_Ref bias. We want to activate the bias while we are capturing audio. Signed-off-by: Chris Ball Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit 189d34e747e9540b70227f6682bd680868d90b10 Author: Andres Salomon Date: Thu Nov 6 16:49:55 2008 -0500 ALSA: cs5535audio: check OLPC's Analog Input status vis GPIO Checking the HPF register is irrelevant; HPF is secondary to the AI mode. Instead, check for Analog Input mode via GPIO. Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit 466ae3055be8665525a5613456fcb387ffef4cb7 Author: Andres Salomon Date: Thu Nov 6 16:49:46 2008 -0500 ALSA: cs5535audio: rename OLPC's analog input control && drop AD1888's HPF Previously, we had two separate controls; there's no need to have AD1888's HPF control, so drop it if we're on an OLPC machine. Also, as per Arjun's request, rename OLPC's Analog Input Switch control to "DC Mode Enable". Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit d6276b78028dfab944dd4a58124aefcc9aa580da Author: Andres Salomon Date: Thu Nov 6 16:49:38 2008 -0500 ALSA: cs5535audio: create function for setting OLPC's Analog Input mode Clean this stuff up a bit.. Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit 1e2232bc70b32f90109d678d1faccf6f50ebba80 Author: Andres Salomon Date: Thu Nov 6 16:47:05 2008 -0500 ALSA: cs5535audio: decouple HPF from V_REFOUT in OLPC code We shouldn't be touching V_REFOUT when we toggle HPF/analog input, so just drop that code. Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit b91254e75c3ec4f371ce1849672a95a929d99861 Author: Andres Salomon Date: Thu Nov 6 16:46:31 2008 -0500 ALSA: cs5535audio: drop ec_analog_input flag for OLPC stuff This is no longer necessary, as we're no longer doing indexed i/o commands. Signed-off-by: Andres Salomon commit 3556d18465c6e67c7a8f436428b95671add02f57 Author: Andres Salomon Date: Thu Nov 6 16:44:08 2008 -0500 ALSA: cs5535audio: invert EAPD for OLPC (newer than B3) Fix an audible pop described in . Originally based upon fixes by Mitch Bradley and Chris Ball. Signed-off-by: Andres Salomon commit c8974be5465b87414fa542cf9cca1a1ba21b8d60 Author: Jordan Crouse Date: Thu Nov 6 16:43:53 2008 -0500 ALSA: cs5535audio: Use OLPC/Geode basic infrastructure Use basic infrastructure code; geode_gpio* (rather than indexed i/o EC access), and do an OLPC machine check in olpc_quirk. [dilinger@debian.org: don't return failure in olpc_quirks if !OLPC] [dilinger@debian.org: drop the Signed-off-by: Andres Salomon commit 57d4bf6d8e965404b82b105ae44ddf137bb7b8e6 Author: Jaya Kumar Date: Thu Nov 6 16:43:34 2008 -0500 ALSA: cs5535audio: OLPC analog input support This is a 2nd cut at adding support for OLPC analog input. Signed-off-by: Jaya Kumar Signed-off-by: Andres Salomon commit b6c52a2cdb58fca918eef9ada5ef3a6cd17a9240 Author: Andres Salomon Date: Wed Nov 5 17:30:30 2008 -0500 ALSA: cs5535audio: suspend/resume callbacks are only defined with CONFIG_PM snd_cs5535audio_suspend and snd_cs5535audio_resume are only defined when CONFIG_PM is set; make that clear in the header file. Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit b035ce0f26812292d067fbe2fc9e9d88d5dfcdb4 Author: Jaya Kumar Date: Wed Nov 5 17:30:08 2008 -0500 ALSA: cs5535audio: turn off PCM properly if closing the audio device As per , we need to properly turn off the PCM if we're closing the device in order to save power. This also causes the MIC led to turn off properly. Signed-off-by: Jaya Kumar Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit 0bed7b292d68f82316bfb8cd521e16c867689efe Author: Andres Salomon Date: Wed Nov 5 17:29:53 2008 -0500 ALSA: cs5535audio: stick AD1888 bitshift values into a header file We'd like to use the High Pass Filter and V_REFOUT bitshift values elsewhere, so stick them into a ac97_codec.h. Signed-off-by: Andres Salomon Signed-off-by: Takashi Iwai commit 0d0cf00a7fc63cee9a4c4a3b8612879b4f7f42ba Author: Mark Brown Date: Wed Dec 10 14:32:45 2008 +0000 ASoC: Add codec registration API Another part of the backporting of Liam's ASoC v2 work. Using this is more complicated than the other registration types since currently the codec is instantiated during the probe of the ASoC device so we can't currently readily wait for the codec to register. Signed-off-by: Mark Brown commit cdc693643271b2e6a693cf8f6afb258cce01f058 Author: Mark Brown Date: Wed Dec 10 13:55:49 2008 +0000 ALSA: Add support for mechanical jack insertion Some systems support both mechanical and electrical jack detection, allowing them to report that a jack is physically present but does not have any functioning connections. Add a new jack type for these, allowing user space to report faulty connections. Thanks to Guillem Jover for the suggestion. Signed-off-by: Mark Brown Signed-off-by: Takashi Iwai commit 1e5fa31f96d558e53fe80e943305104bf4339711 Author: Peter Ujfalusi Date: Wed Dec 10 12:51:48 2008 +0200 ASoC: TWL4030: Change the name for the DACs To avoid confusion the names for the DACs changed: DACL1 -> DAC Left1 ... Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit d4a73131a56e906b8f65e20934516adcad68b524 Author: Peter Ujfalusi Date: Wed Dec 10 12:51:47 2008 +0200 ASoC: TWL4030: Small cleanup The mux switch related texts fits to on line, no need to wrap them. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 6a1bee4a9cae13aa73abd8f724bada213a38eb63 Author: Peter Ujfalusi Date: Wed Dec 10 12:51:46 2008 +0200 ASoC: TWL4030: Add missing Carkit output SND_SOC_DAPM_OUTPUT definition for carkitL/R was missing. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 1e297a19252a6792c4479b300020f7f63eeb56ef Author: Mark Brown Date: Wed Dec 10 11:08:33 2008 +0000 ASoC: Work around warnings from some build environments BUG() should be marked as not returning but for at least some configurations (including some widely deployed compilers) that's either not happening or being forgotten by the compiler. Add some extra return statements to the affected paths. Signed-off-by: Mark Brown commit 11d518e07d700eeb5bcec36bfd5f501e405230dd Author: Takashi Iwai Date: Wed Dec 10 10:37:33 2008 +0100 ALSA: hda - Add quirk for HP6730B laptop Added model=laptop for HP 6730B laptop with AD1984A codec. Reference: Novell bnc#457909 https://bugzilla.novell.com/show_bug.cgi?id=457909 Signed-off-by: Takashi Iwai Cc: stable@kernel.org commit 6fabd715e6d8e1b37c0c66d9bfda2c19643e3f77 Author: Peter P Waskiewicz Jr Date: Wed Dec 10 01:13:08 2008 -0800 ixgbe: Implement PCIe AER support This patch implements the PCIe Advanced Error Reporting callbacks in ixgbe. The 82598 hardware supports AER, so we enable it. Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 5e8427e5e25e3f844113cf67d07e7806bbe8c0e2 Author: Alexander Duyck Date: Wed Dec 10 01:09:53 2008 -0800 igb: Correctly determine pci-e function number in virtual environment When running in a virtual environment the ports of an 82575/6 can appear to be single function devices which is not correct. To resolve this we rely on the function number stored in the status register. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit b4557be23dc959f38eed21d359ec7164e42bcbd6 Author: Alexander Duyck Date: Wed Dec 10 01:08:59 2008 -0800 igb: update handling of RCTL for smaller buffer sizes As we begin to move into virtualization the use of a global value for buffer sizes becomes undesirable. This change makes it so only 256 and 512 byte buffers require use of the RCTL register. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit d2afbe78a2922929ad44882d3583d938b9949a30 Author: Takashi Iwai Date: Wed Dec 10 09:28:15 2008 +0100 ALSA: hda - Update documentation Minor typo-fixes and improvements on HD-Audio.txt. Signed-off-by: Takashi Iwai commit 44411e07c2ce1a755a756e10b592cd3ba02f99b3 Author: Takashi Iwai Date: Wed Dec 10 08:27:19 2008 +0100 ALSA: ca0106 - Check return value of pci_enable_device() in resume The return value of pci_enable_device() must be checked even in resume callback: sound/pci/ca0106/ca0106_main.c:1779: warning: ignoring return value of ‘pci_enable_device’, declared with attribute warn_unused_result Signed-off-by: Takashi Iwai commit e97fd7c6d51d8bf32ce981b853d987cfc6bdfb7f Author: Holger Eitzenberger Date: Tue Dec 9 23:10:38 2008 -0800 bonding: turn all bond_parm_tbls const Turn all bond_parm_tbls const. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 325dcf7a907a43f8832b92ae1c672798b4e60ce2 Author: Holger Eitzenberger Date: Tue Dec 9 23:10:17 2008 -0800 bonding: make tbl argument to bond_parse_parm() const bond_parse_parm() parses a parameter table for a particular value and is therefore not modifying the table at all. Therefore make the 2nd argument const, thus allowing to make the tables const later. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit d78755237f0892c8d313a7f7b1774443a7308b11 Author: Holger Eitzenberger Date: Tue Dec 9 23:09:49 2008 -0800 bonding: remove duplicate declarations Remove some declarations from bonding.c as they are declared in bonding.h already. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 5a03cdb7f2d7ff88e50153d8c3b90a1d52dca435 Author: Holger Eitzenberger Date: Tue Dec 9 23:09:22 2008 -0800 bonding: use pr_debug instead of own macros Use pr_debug() instead of own macros. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit ef65583d01f4060c758dba72f08edc09d8faa719 Author: Holger Eitzenberger Date: Tue Dec 9 23:08:55 2008 -0800 bonding: fix compile error if debug enabled This is what I get if debug is enabled: drivers/net/bonding/bond_ipv6.c: In function 'bond_na_send': drivers/net/bonding/bond_ipv6.c:75: error: 'slave' undeclared (first use in this function) drivers/net/bonding/bond_ipv6.c:75: error: (Each undeclared identifier is reported only once drivers/net/bonding/bond_ipv6.c:75: error: for each function it appears in.) This patch fixes that. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 77afc92b7915b6bb21584474a429a04603ac8963 Author: Holger Eitzenberger Date: Tue Dec 9 23:08:09 2008 -0800 bonding: use table for mode names Use a small array in bond_mode_name() for the names, thus saving some space: before text data bss dec hex filename 57736 9372 344 67452 1077c drivers/net/bonding/bonding.ko after text data bss dec hex filename 57441 9372 344 67157 10655 drivers/net/bonding/bonding.ko Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit 58402054264fa33b405d1abcbcd8e528507aac1a Author: Holger Eitzenberger Date: Tue Dec 9 23:07:13 2008 -0800 bonding: add and use bond_is_lb() Introduce and use bond_is_lb(), it is usefull to shorten the repetitive check for either ALB or TLB mode. Signed-off-by: Holger Eitzenberger Signed-off-by: David S. Miller commit f73f2a6a23e34de9cca9672f727694e5af00e6c7 Author: Takashi Iwai Date: Wed Dec 10 07:59:33 2008 +0100 ALSA: ASoC - Fix symbol conflicts in omac-mcbsp.c Add snd_ prefix to avoid the conflict of symbols in omac-mcbsp.c: sound/soc/omap/omap-mcbsp.c:503: error: static declaration of 'omap_mcbsp_init' follows non-static declaration arch/arm/plat-omap/include/mach/mcbsp.h:373: error: previous declaration of 'omap_mcbsp_init' was here Signed-off-by: Takashi Iwai commit acc421656b97f09b55acb0938ad5378eefa5aacc Author: Roel Kluin Date: Tue Dec 9 23:26:05 2008 +0100 ALSA: sound: Make static Sparse asked whether these could be static. Signed-off-by: Roel Kluin Signed-off-by: Takashi Iwai commit c9b3a40ff2b3dea9914e36965a17c802650bb603 Author: Takashi Iwai Date: Wed Dec 10 07:47:22 2008 +0100 ALSA: ASoC - Fix wrong section types The module init entries should be __init instead of __devinit. Signed-off-by: Takashi Iwai commit 24e07db8cceb7dfe2d4005e4450a27f4bcda6499 Author: Takashi Iwai Date: Wed Dec 10 07:40:24 2008 +0100 ALSA: ASoC - Fix module init entry for twl4030.c Fixed the function name of module init entry for twl4030.c, which conflicted with the existing hardware init function: sound/soc/codecs/twl4030.c:1278: error: conflicting types for 'twl4030_init' sound/soc/codecs/twl4030.c:1187: error: previous definition of 'twl4030_init' was here Also fixed the section type of init function. Signed-off-by: Takashi Iwai commit 512bb43eb5422ee69a1be05ea0d89dc074fac9a2 Author: Jarek Poplawski Date: Tue Dec 9 22:35:02 2008 -0800 pkt_sched: sch_htb: Optimize WARN_ONs in htb_dequeue_tree() etc. We can skip WARN_ON() in htb_dequeue_tree() because there should be always a similar warning from htb_lookup_leaf() earlier. The first WARN_ON() in in htb_lookup_leaf() is changed to BUG_ON() because most likly this should end with oops anyway. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 1b5c0077e1615bb16e777a10ec1fc1195ba059ac Author: Jarek Poplawski Date: Tue Dec 9 22:34:40 2008 -0800 pkt_sched: sch_htb: Optimize htb_find_next_upper() htb_id_find_next_upper() is usually called to find a class with next id after some previously removed class, so let's move a check for equality to the end: it's the least likely here. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit dbb7a95d810ab76aac42e1a5cefdf069dcd014a1 Author: Chaithrika U S Date: Tue Dec 9 22:21:25 2008 -0800 phy: Add LSI ET1011C PHY driver Adds LSI ET1011C PHY driver. This driver is used by TI DM646x EVM. Signed-off-by: Chaithrika U S Signed-off-by: David S. Miller commit 471716f7ea646487b7b5c7b3efc68a023b05a933 Author: Mark Brown Date: Tue Dec 9 14:47:07 2008 +0000 ASoC: Fix typos in Atmel module registration I wish I had boards which work with unmodified kernels :/ Signed-off-by: Mark Brown commit f0752331b89ce79063f765545dd7dd5f49d9a713 Author: Mark Brown Date: Tue Dec 9 12:51:56 2008 +0000 ASoC: Convert WM8900 to allow registration by machine code This makes use of the support for delayed DAI registration to allow the WM8900 I2C device to be registered by general platform/architecture code rather than as part of the ASoC device probe. Signed-off-by: Mark Brown commit 6b05eda6383d89bffc21da654d148733e7839540 Author: Mark Brown Date: Mon Dec 8 19:26:48 2008 +0000 ASoC: Wait for non-AC97 codec DAIs before instantiating This will allow codec drivers to be refactored to allow them to be registered out of line with the ASoC device registration. Signed-off-by: Mark Brown commit 435c5e2588893e3f7aba0bd4de67991bf00b3c9d Author: Mark Brown Date: Thu Dec 4 15:32:53 2008 +0000 ASoC: Initial framework for dynamic card instantiation Use the lists of platforms, platform DAIs and cards to check to see that everything has registered. Since relationships are still specified by direct references to the structures in the drivers and the drivers all register everything at modprobe there should be no practical effect yet. Signed-off-by: Mark Brown commit 64089b84abfe2f26a864ebd968429302dcb071de Author: Mark Brown Date: Mon Dec 8 19:17:58 2008 +0000 ASoC: Register non-AC97 codec DAIs Currently this is done at module probe time since ASoC ties in codec device probe to the instantiation of the entire ASoC device. Subsequent patches will refactor the codec drivers to handle probing separately. Note that the core does not yet use this information. AC97 is special since the codec is controlled over the AC97 link but we want to give the machine driver a chance to set up the system before trying to instantiate since it may need to do configuration before the AC97 link will operate Signed-off-by: Mark Brown commit 958e792c7c8f06a9e666adb0ed94fff2cf90156f Author: Mark Brown Date: Wed Dec 3 19:58:17 2008 +0000 ASoC: Register platform drivers This is done at modprobe time, mirroring current behaviour, except for mpc5200_psc_i2s where we do registration at the same time as we register with soc-of-simple. Since the core currently ignores registration this has no practical impact. Signed-off-by: Mark Brown commit 12a48a8c0087ba39d926cf1d63938ccbdb9752c3 Author: Mark Brown Date: Wed Dec 3 19:40:30 2008 +0000 ASoC: Add platform registration API ASoC v2 allows platform drivers to instantiate independantly of the overall ASoC card. This API allows drivers to notify the core when they are registered. Signed-off-by: Mark Brown commit 3f4b783cfdebb559814690572041a17bc9744cf3 Author: Mark Brown Date: Wed Dec 3 19:26:35 2008 +0000 ASoC: Register platform DAIs Register all platform DAIs with the core. In line with current behaviour this is done at module probe time rather than when the devices are probed (since currently that only happens as the entire ASoC card is registered except for those drivers that currently implement some kind of hotplug). Since the core currently ignores DAI registration this has no practical effect. Signed-off-by: Mark Brown commit 9115171a6b79b6b4d5c6697f123556b6efc37f1f Author: Mark Brown Date: Sun Nov 30 23:31:24 2008 +0000 ASoC: Add DAI registration API Add API calls to register and unregister DAIs with the core. Currently these APIs are ineffective. Since multiple DAIs for a given device are a common case bulk variants are provided. Signed-off-by: Mark Brown commit c5af3a2e192d333997d1e191f3eba7fd2f869681 Author: Mark Brown Date: Fri Nov 28 13:29:45 2008 +0000 ASoC: Add card registration API ASoC v2 allows cards, codecs and platforms to instantiate separately, with the overall ASoC device only being instantiated once all the required components have registered. As part of backporting Liam's work introduce an initial version of the card registration functions. At present these do nothing active and are internal only, they will be exposed to machine drivers after further backporting. Adding this now allows the datastructures used for dynamic card instantiation to be built up gradually. Signed-off-by: Mark Brown commit ca4513fe06c483bf0111c990059d42f97288605d Author: Peter Ujfalusi Date: Tue Dec 9 12:35:52 2008 +0200 ASoC: TWL4030: Do not alter the Headset output volume on power-up/down There is a separate gain control for the Headset output already. Do not reset the gain to 0 dB at power up. In power-down, there is no need to set the Headset output gain to power-down mode, since if the CODECPDZ is in powered off this setting has no effect. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit df339804bbfc118eaca066b95488a2dbacc2e258 Author: Peter Ujfalusi Date: Tue Dec 9 12:35:51 2008 +0200 ASoC: TWL4030: DAPM mapping of the Handsfree outputs Adds DAPM muxing, routing for the Handsfree outputs. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 5152d8c28b95e421b91483ca0df76726e6e6c41e Author: Peter Ujfalusi Date: Tue Dec 9 12:35:50 2008 +0200 ASoC: TWL4030: DAPM mapping of the Carkit outputs Adds DAPM muxing, routing for the Carkit outputs. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit dfad21a26f5b3cc379fbec9c5d12b5106dd1f9c5 Author: Peter Ujfalusi Date: Tue Dec 9 12:35:49 2008 +0200 ASoC: TWL4030: DAPM mapping of the Headset outputs Adds DAPM muxing, routing for the Headset outputs. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 2a6f5c5892dcd17c81204fe5e26b92a37d2daafa Author: Peter Ujfalusi Date: Tue Dec 9 12:35:48 2008 +0200 ASoC: TWL4030: DAPM mapping of the PreDriv outputs Adds DAPM muxing, routing for the PreDrive outputs. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 5e98a46449cd028b9b97a8ef2c2448c8f473d6c5 Author: Peter Ujfalusi Date: Tue Dec 9 12:35:47 2008 +0200 ASoC: TWL4030: DAPM mapping of the Earpiece output Adds DAPM muxing, routing for the Earpiece output. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit e8ff9c417ad6e8f7ef253e36f9d6e22dc2aa2512 Author: Peter Ujfalusi Date: Tue Dec 9 12:35:46 2008 +0200 ASoC: TWL4030: Add DAPM event handler for output MUX selection DAPM event handler is set to filter out invalid MUX settings for certain outputs. Earpiece: - 0 = Off - 1 = DACL1 - 2 = DACL2 - 3 = *** Invalid *** - 4 = DACR1 PreDriveL/R: - 0 = Off/Off - 1 = DACL1/DACR1 - 2 = DACL2/DACR2 - 3 = *** Invalid/Invalid *** - 4 = DACR2/DACL2 Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 44c5587035fbbdd368a3d5d8d11997d43758078a Author: Peter Ujfalusi Date: Tue Dec 9 08:45:44 2008 +0200 ASoC: TWL4030: Add Analog PGA control switch to DAPM Add all four APGA switch to DAPM routing and widgets. Add user control for DA enable for all APGA as normal control. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 53b5047d994edfcafabc0e95bb681ae70d6e8604 Author: Peter Ujfalusi Date: Tue Dec 9 08:45:43 2008 +0200 ASoC: TWL4030: Correct DAPM_DAC with power control Add all four DACs to dapm_widgets with power switch. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 1e641743f055f075ed9a4edd75f1fb1e05669ddc Author: Al Viro Date: Tue Dec 9 09:23:33 2008 +0000 Audit: Log TIOCSTI AUDIT_TTY records currently log all data read by processes marked for TTY input auditing, even if the data was "pushed back" using the TIOCSTI ioctl, not typed by the user. This patch records all TIOCSTI calls to disambiguate the input. It generates one audit message per character pushed back; considering TIOCSTI is used very rarely, this simple solution is probably good enough. (The only program I could find that uses TIOCSTI is mailx/nail in "header editing" mode, e.g. using the ~h escape. mailx is used very rarely, and the escapes are used even rarer.) Signed-Off-By: Miloslav Trmac Signed-off-by: Al Viro Signed-off-by: James Morris commit e19caae7177fcc732ae1b47135e39f577352adb2 Author: David S. Miller Date: Tue Dec 9 01:04:27 2008 -0800 bluetooth: Fix unused var warning properly in rfcomm_sock_ioctl(). As Stephen Rothwell points out, we don't want 'sock' here but rather we really do want 'sk'. This local var is protected by all sorts of bluetooth debugging kconfig vars, but BT_DBG() is just a straight pr_debug() call which is unconditional. pr_debug() evaluates it's args only if either DEBUG or CONFIG_DYNAMIC_PRINTK_DEBUG is defined. Solving this inside of the BT_DBG() macro is non-trivial since it's varargs. And these ifdefs are ugly. So, just mark this 'sk' thing __maybe_unused and kill the ifdefs. Signed-off-by: David S. Miller commit bcb09dc276e706ed6f22813ba774797125f3da0a Author: Brice Goglin Date: Tue Dec 9 00:14:27 2008 -0800 myri10ge: check fragmentation in LRO get_frag_header() Add a fragmentation check to myri10ge's LRO get_frag_header() callback. Signed-off-by: Brice Goglin Signed-off-by: Andrew Gallatin Signed-off-by: David S. Miller commit 6cf1a0f856bcb5423bfb4121b2dfeaa3ba7b1ff2 Author: David S. Miller Date: Tue Dec 9 00:01:53 2008 -0800 bluetooth: Fix rfcomm_sock_ioctl() build failure with debugging enabled. It's 'sock' not 'sk'. Signed-off-by: David S. Miller commit e42130039c85826567d4e4864f2c7492578576cb Author: Alexey Dobriyan Date: Mon Dec 8 23:50:18 2008 -0800 hydra: fix compilation drivers/net/hydra.c:163: error: 'hydra_netdev_ops' undeclared (first use in this function) Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 30bc4481de890e97dc001ee123761d89638cbc50 Author: Takashi Iwai Date: Tue Dec 9 08:23:45 2008 +0100 ALSA: Updates about bug-reporting in ALSA-Configuration.txt Updated the information about bug-reporting for HD-audio. Mentioned alsa-info.sh and kernel bugzilla. Removed ALSA BTS address not to flood the unhandled reports any more. Signed-off-by: Takashi Iwai commit 94d6a5f7341ebaff53d4e41cc81fab37f0d9fbed Author: Serge E. Hallyn Date: Mon Dec 8 15:52:21 2008 -0600 user namespaces: document CFS behavior Documented the currently bogus state of support for CFS user groups with user namespaces. In particular, all users in a user namespace should be children of the user which created the user namespace. This is yet to be implemented. Signed-off-by: Serge E. Hallyn Acked-by: Dhaval Giani Signed-off-by: Serge E. Hallyn Signed-off-by: James Morris commit e726f5f91effd8944c76475a2688093a03ba0d10 Author: Ingo Molnar Date: Mon Dec 8 16:55:53 2008 +0100 tracing/function-graph-tracer: fix 'flags' variable mismatch this warning: kernel/trace/trace.c: In function ‘trace_vprintk’: kernel/trace/trace.c:3626: warning: ‘flags’ may be used uninitialized in this function shows some confusion about irq_flags / flags use here. We already have irq_flags so remove the extra flags variable. Signed-off-by: Ingo Molnar commit efbe027e95dc13ac343b6130948418d7ead7ddf1 Author: Vaidyanathan Srinivasan Date: Mon Dec 8 20:52:49 2008 +0530 sched: idle_balance() does not call load_balance_newidle() Impact: fix SD_BALANCE_NEWIDLEand broaden its use load_balance_newidle() does not get called if SD_BALANCE_NEWIDLE is set at higher level domain (3-CPU) and not in low level domain (2-MC). pulled_task is initialised to -1 and checked for non-zero which is always true if the lowest level sched_domain does not have SD_BALANCE_NEWIDLE flag set. Signed-off-by: Vaidyanathan Srinivasan Signed-off-by: Ingo Molnar commit 4217458dafaa57d8e26a46f5d05ab8c53cf64191 Author: Hiroshi Shimamoto Date: Fri Dec 5 17:17:09 2008 -0800 x86: signal: change type of paramter for sys_rt_sigreturn() Impact: cleanup on 32-bit Peter pointed this parameter can be changed. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 380c4b1411ccd6885f92b2c8ceb08433a720f44e Author: Frederic Weisbecker Date: Sat Dec 6 03:43:41 2008 +0100 tracing/function-graph-tracer: append the tracing_graph_flag Impact: Provide a way to pause the function graph tracer As suggested by Steven Rostedt, the previous patch that prevented from spinlock function tracing shouldn't use the raw_spinlock to fix it. It's much better to follow lockdep with normal spinlock, so this patch adds a new flag for each task to make the function graph tracer able to be paused. We also can send an ftrace_printk whithout worrying of the irrelevant traced spinlock during insertion. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 8e1b82e0866befaa0b2920be296c6e4c3fc7f422 Author: Frederic Weisbecker Date: Sat Dec 6 03:41:33 2008 +0100 tracing/function-graph-tracer: turn tracing_selftest_running into an int Impact: cleanup Apply some suggestions of Steven Rostedt: _turn tracing_selftest_running into a simple int (no need of an atomic_t) _set it __read_mostly _fix a comment style Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 8b96f0119818964e4944fd1c423bf6770027d3ac Author: Frederic Weisbecker Date: Sat Dec 6 03:40:00 2008 +0100 tracing/function-graph-tracer: introduce __notrace_funcgraph to filter special functions Impact: trace more functions When the function graph tracer is configured, three more files are not traced to prevent only four functions to be traced. And this impacts the normal function tracer too. arch/x86/kernel/process_64/32.c: I had crashes when I let this file traced. After some debugging, I saw that the "current" task point was changed inside__swtich_to(), ie: "write_pda(pcurrent, next_p);" inside process_64.c Since the tracer store the original return address of the function inside current, we had crashes. Only __switch_to() has to be excluded from tracing. kernel/module.c and kernel/extable.c: Because of a function used internally by the function graph tracer: __kernel_text_address() To let the other functions inside these files to be traced, this patch introduces the __notrace_funcgraph function prefix which is __notrace if function graph tracer is configured and nothing if not. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 69b88afa8d114a43a3c0431722b79e31d9920692 Author: Yinghai Lu Date: Fri Dec 5 22:45:50 2008 -0800 x86: clean up get_smp_config() Impact: cleanup reorder exit path in __get_smp_config(). also move two print outs to acpi_process_madt Signed-off-by: Yinghai Lu Signed-off-by: Ingo Molnar commit aa9c9b8c584a42a094202b7e0f63497e888f86a7 Merge: 87f7606591aea6a8a38ea4c8911b5eeeee2740b8 218d11a8b071b23b76c484fd5f72a4fe3306801e Author: Ingo Molnar Date: Mon Dec 8 15:07:49 2008 +0100 Merge branch 'linus' into x86/quirks commit 361b73d5c34f59c3fd107bb9dbe7a1fbff2c2517 Author: Lai Jiangshan Date: Mon Dec 8 10:58:08 2008 +0800 ring_buffer: fix comments Impact: comments cleanup fix incorrect comments for enum ring_buffer_type Signed-off-by: Lai Jiangshan Signed-off-by: Ingo Molnar commit 5436499e6098759c2340f8b906ea52f993dc4efb Author: Ken Chen Date: Sun Dec 7 18:47:37 2008 -0800 sched: fix sd_parent_degenerate on non-numa smp machine Impact: optimize the sched domains tree some more The addition of SD_SERIALIZE flag added to SD_NODE_INIT prevented top level dummy numa sched_domain to be properly degenerated on non-numa smp machine. The reason is that in sd_parent_degenerate(), it found that the child and parent does not have comon sched_domain flags due to SD_SERIALIZE. However, for non-numa smp box, the top level is a dummy with a single sched_group. Filter out SD_SERIALIZE if it is on non-numa machine to properly degenerate top level node sched_domain. this will cut back some of the sd domain walk in the load balancer code. Signed-off-by: Ken Chen Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 4d117c5c6b00254e51c61ff5b506ccaba21a5a03 Merge: 6c415b9234a8c71f290e5d4fddc467f103f32719 43714539eab42b2fa3653ea7bd667b36c2291b11 Author: Ingo Molnar Date: Mon Dec 8 13:52:00 2008 +0100 Merge branch 'sched/urgent' into sched/core commit 3e1e9002aa8b32bd4c95ac6c8fad376b7a8127fb Author: Rafael J. Wysocki Date: Mon Dec 8 00:50:22 2008 +0100 x86: change static allocation of trampoline area Impact: fix trampoline sizing bug, save space While debugging a suspend-to-RAM related issue it occured to me that if the trampoline code had grown past 4 KB, we would have been allocating too little memory for it, since the 4 KB size of the trampoline is hardcoded into arch/x86/kernel/e820.c . Change that by making the kernel compute the trampoline size and allocate as much memory as necessary. Signed-off-by: Rafael J. Wysocki Signed-off-by: Ingo Molnar commit decbec3838d10ecd7aabdb4c0e05aac0e5f5dc0c Author: Frederic Weisbecker Date: Mon Dec 8 01:56:06 2008 +0100 tracing/function-graph-tracer: implement a print_headers function Impact: provide trace headers to explain a bit the output This patch implements the print_headers callback for the function graph tracer. These headers are output according to the current trace options. Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 5e03c54eeb016cf1b066e9e48d30116814ca2459 Author: Takashi Iwai Date: Mon Dec 8 12:40:56 2008 +0100 ALSA: hrtimer - Use hard-irq callback Use the hard-irq mode for the callback (for possible removal of soft-irq mode in future). Signed-off-by: Takashi Iwai commit 647808a6b932d85c3e85df6dcf0e34c1e53cc953 Author: Takashi Iwai Date: Mon Dec 8 12:16:58 2008 +0100 ALSA: timer - Add comments and use ns_to_ktime() Add the license and misc comments at the beginning of the code. Also, use ns_to_ktime() for simplification. Signed-off-by: Takashi Iwai commit 6fdd34d43bff8be9bb925b49d87a0ee144d2ab07 Author: Gerrit Renker Date: Mon Dec 8 01:19:06 2008 -0800 dccp ccid-2: Phase out the use of boolean Ack Vector sysctl This removes the use of the sysctl and the minisock variable for the Send Ack Vector feature, as it now is handled fully dynamically via feature negotiation (i.e. when CCID-2 is enabled, Ack Vectors are automatically enabled as per RFC 4341, 4.). Using a sysctl in parallel to this implementation would open the door to crashes, since much of the code relies on tests of the boolean minisock / sysctl variable. Thus, this patch replaces all tests of type if (dccp_msk(sk)->dccpms_send_ack_vector) /* ... */ with if (dp->dccps_hc_rx_ackvec != NULL) /* ... */ The dccps_hc_rx_ackvec is allocated by the dccp_hdlr_ackvec() when feature negotiation concluded that Ack Vectors are to be used on the half-connection. Otherwise, it is NULL (due to dccp_init_sock/dccp_create_openreq_child), so that the test is a valid one. The activation handler for Ack Vectors is called as soon as the feature negotiation has concluded at the * server when the Ack marking the transition RESPOND => OPEN arrives; * client after it has sent its ACK, marking the transition REQUEST => PARTOPEN. Adding the sequence number of the Response packet to the Ack Vector has been removed, since (a) connection establishment implies that the Response has been received; (b) the CCIDs only look at packets received in the (PART)OPEN state, i.e. this entry will always be ignored; (c) it can not be used for anything useful - to detect loss for instance, only packets received after the loss can serve as pseudo-dupacks. There was a FIXME to change the error code when dccp_ackvec_add() fails. I removed this after finding out that: * the check whether ackno < ISN is already made earlier, * this Response is likely the 1st packet with an Ackno that the client gets, * so when dccp_ackvec_add() fails, the reason is likely not a packet error. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 4098dce5be537a157eed4a326efd464109825b8b Author: Gerrit Renker Date: Mon Dec 8 01:18:37 2008 -0800 dccp: Remove manual influence on NDP Count feature Updating the NDP count feature is handled automatically now: * for CCID-2 it is disabled, since the code does not use NDP counts; * for CCID-3 it is enabled, as NDP counts are used to determine loss lengths. Allowing the user to change NDP values leads to unpredictable and failing behaviour, since it is then possible to disable NDP counts even when they are needed (e.g. in CCID-3). This means that only those user settings are sensible that agree with the values for Send NDP Count implied by the choice of CCID. But those settings are already activated by the feature negotiation (CCID dependency tracking), hence this form of support is redundant. At startup the initialisation of the NDP count feature uses the default value of 0, which is done implicitly by the zeroing-out of the socket when it is allocated. If the choice of CCID or feature negotiation enables NDP count, this will then be updated via the NDP activation handler. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 0049bab5e765aa74cf767a834fa336e19453fc5e Author: Gerrit Renker Date: Mon Dec 8 01:18:05 2008 -0800 dccp: Remove obsolete parts of the old CCID interface The TX/RX CCIDs of the minisock are now redundant: similar to the Ack Vector case, their value equals initially that of the sysctl, but at the end of feature negotiation may be something different. The old interface removed by this patch thus has been replaced by the newer interface to dynamically query the currently loaded CCIDs. Also removed are the constructors for the TX CCID and the RX CCID, since the switch "rx <-> non-rx" is done by the handler in minisocks.c (and the handler is the only place in the code where CCIDs are loaded). Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 63b8e2861f31868dce9c92fd7444f212a5a8a775 Author: Gerrit Renker Date: Mon Dec 8 01:17:32 2008 -0800 dccp: Clean up old feature-negotiation infrastructure The code removed by this patch is no longer referenced or used, the added lines update documentation and copyrights. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 991d927c8652b2ab51bd8eef2b773bb2c77d457b Author: Gerrit Renker Date: Mon Dec 8 01:16:27 2008 -0800 dccp: Integration of dynamic feature activation - part 3 (client side) This integrates feature-activation in the client: 1. When dccp_parse_options() fails, the reset code is already set; request_sent\ _state_process() currently overrides this with `Packet Error', which is not intended - changed to use the reset code supplied by dccp_parse_options(). 2. When feature negotiation fails, the socket should be marked as not usable, so that the application is notified that an error occurred. This is achieved by a new label 'unable_to_proceed': generating an error code of `Aborted', setting the socket state to CLOSED, returning with ECOMM in sk_err. 3. Avoids parsing the Ack twice in Respond state by not doing option processing again in dccp_rcv_respond_partopen_state_process (as option processing has already been done on the request_sock in dccp_check_req). Since this addresses congestion-control initialisation, a corresponding FIXME has been removed. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 192b27ff35bad4cf76cc4239419e9f805935e4f8 Author: Gerrit Renker Date: Mon Dec 8 01:15:55 2008 -0800 dccp: Integration of dynamic feature activation - part 2 (server side) This patch integrates the activation of features at the end of negotiation into the server-side code. Note regarding the removal of 'const': -------------------------------------- The 'const' attribute has been removed from 'dreq' since dccp_activate_values() needs to operate on dreq's feature list. Part of the activation is to remove those options from the list that have already been confirmed, hence it is not purely read-only. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 6eb55d172b5f6de65afdae6285f8d732e4785bf7 Author: Gerrit Renker Date: Mon Dec 8 01:15:26 2008 -0800 dccp: Integration of dynamic feature activation - part 1 (socket setup) This first patch out of three replaces the hardcoded default settings with initialisation code for the dynamic feature negotiation. The patch also ensures that the client feature-negotiation queue is flushed only when entering the OPEN state. Since confirmed Change options are removed as soon as they are confirmed (in the DCCP-Response), this ensures that Confirm options are retransmitted. Note on retransmitting Confirm options: --------------------------------------- Implementation experience showed that it is necessary to retransmit Confirm options. Thanks to Leandro Melo de Sales who reported a bug in an earlier revision of the patch set, resulting from not retransmitting these options. As long as the client is in PARTOPEN, it needs to retransmit the Confirm options for the Change options received on the DCCP-Response from the server. Otherwise, if the packet containing the Confirm options gets dropped in the network, the connection aborts due to undefined feature negotiation state. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit b74ca3a896b9ab5f952bc440154758e708c48884 Author: Wang Chen Date: Mon Dec 8 01:14:16 2008 -0800 netdevice: Kill netdev->priv This is the last shoot of this series. After I removing all directly reference of netdev->priv, I am killing "priv" of "struct net_device" and fixing relative comments/docs. Anyone will not be allowed to reference netdev->priv directly. If you want to reference the memory of private data, use netdev_priv() instead. If the private data is not allocted when alloc_netdev(), use netdev->ml_priv to point that memory after you creating that private data. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 5a001a070e032bea1be563b13ebf9819cd5e54d4 Author: Wang Chen Date: Mon Dec 8 01:13:25 2008 -0800 staging-winbond: Kill directly reference of netdev->priv This driver is not yet finished. At this time, we don't know how netdev be created and how private data be allocated. So, simply use netdev_priv() now and leave some temp comment. Compile test only. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 7657d90497f98426af17f0ac633a9b335bb7a8fb Author: Serge E. Hallyn Date: Wed Dec 3 13:17:33 2008 -0600 user namespaces: require cap_set{ug}id for CLONE_NEWUSER While ideally CLONE_NEWUSER will eventually require no privilege, the required permission checks are currently not there. As a result, CLONE_NEWUSER has the same effect as a setuid(0)+setgroups(1,"0"). While we already require CAP_SYS_ADMIN, requiring CAP_SETUID and CAP_SETGID seems appropriate. Signed-off-by: Serge E. Hallyn Acked-by: "Eric W. Biederman" Signed-off-by: James Morris commit c37bbb0fdcc01610fd55604eb6927210a1d20044 Author: Serge E. Hallyn Date: Wed Dec 3 13:17:06 2008 -0600 user namespaces: let user_ns be cloned with fairsched (These two patches are in the next-unacked branch of git://git.kernel.org/pub/scm/linux/kernel/git/sergeh/userns-2.6. If they get some ACKs, then I hope to feed this into security-next. After these two, I think we're ready to tackle userns+capabilities) Fairsched creates a per-uid directory under /sys/kernel/uids/. So when you clone(CLONE_NEWUSER), it tries to create /sys/kernel/uids/0, which already exists, and you get back -ENOMEM. This was supposed to be fixed by sysfs tagging, but that was postponed (ok, rejected until sysfs locking is fixed). So, just as with network namespaces, we just don't create those directories for user namespaces other than the init. Signed-off-by: Serge E. Hallyn Signed-off-by: James Morris commit 32e176c14d7a425b681ef003c9061001ddb7fc7b Author: Rafael J. Wysocki Date: Sat Dec 6 15:09:08 2008 +0100 Sound: hda - Restore PCI configuration space with interrupts off Move the restoration of the standard PCI configuration registers in the snd_hda_intel driver to a ->resume_early() callback executed with interrupts disabled, since doing that with interrupts enabled may lead to problems in some cases. This patch addresses the regression from 2.6.26 tracked as http://bugzilla.kernel.org/show_bug.cgi?id=12121 . Signed-off-by: Rafael J. Wysocki Signed-off-by: Takashi Iwai commit 4bcd42679643dd3dfd6aaad9fcbcc74ac5c7e2e9 Author: Wang Chen Date: Sat Dec 6 23:59:10 2008 -0800 staging-slicoss: Kill directly reference of netdev->priv Simply replace netdev->priv with netdev_priv(). Signed-off-by: Wang Chen Acked-by: Greg Kroah-Hartman Signed-off-by: David S. Miller commit 979123d5343b4fdcd4c682745b8a0be9b8fac248 Author: Wang Chen Date: Sat Dec 6 23:58:37 2008 -0800 staging-p80211: Kill directly reference of netdev->priv In this driver, netdev's private data is wlandevice_t. And the wlandev(type of wlandevice_t) is exist before netdev be allocated. So use netdev->ml_priv to point to the private data. I am not sure whether I should consider the kernel version older than 2.3.38. Because in those kernels, netdevice_t is "structure dev" instead of "structure net_device" and of course "dev->ml_priv" will cause compile error. But before my patch, in function wlan_setup(), there is a ether_setup(net_device) which already broke kernels which older than 2.3.38. Signed-off-by: Wang Chen Acked-by: Greg Kroah-Hartman Signed-off-by: David S. Miller commit ad660e2f97e7dc9d0f5627456b37e64bde714a5e Author: Wang Chen Date: Sat Dec 6 23:57:49 2008 -0800 s390_net: Kill directly reference of netdev->priv The private data comes from ccwgroup_device. So just don't allocate private data memory when do alloc_netdev() and use netdev->ml_priv to reference private data. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 26aca5ec9e587562ac0f8c5b67d02567d7bf2ffe Author: Nick Andrew Date: Sat Dec 6 23:57:14 2008 -0800 net: Fix incorrect use of loose in spider_net.c Fix incorrect use of loose in spider_net.c It should be 'lose', not 'loose'. Signed-off-by: Nick Andrew Signed-off-by: David S. Miller commit 6c5cc8e0516005cb9a8f940276fac7614f7acf5c Author: Nick Andrew Date: Sat Dec 6 23:55:32 2008 -0800 wireless: Fix incorrect use of loose in wext.c Fix incorrect use of loose in wext.c It should be 'lose', not 'loose'. Signed-off-by: Nick Andrew Signed-off-by: David S. Miller commit a2acde07711f7d8b19928245c555bce60f91482a Author: Ilpo Järvinen Date: Fri Dec 5 22:49:37 2008 -0800 tcp: fix tso_should_defer in 64bit Since jiffies is unsigned long, the types get expanded into that and after long enough time the difference will therefore always be > 1 (and that probably happens near boot as well as iirc the first jiffies wrap is scheduler close after boot to find out problems related to that early). This was originally noted by Bill Fink in Dec'07 but nobody never ended fixing it. Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit d5dd9175bc12015ea4d2c1a9b6b15dfa645a3db9 Author: Ilpo Järvinen Date: Fri Dec 5 22:48:55 2008 -0800 tcp: use tcp_write_xmit also in tcp_push_one tcp_minshall_update is not significant difference since it only checks for not full-sized skb which is BUG'ed on the push_one path anyway. tcp_snd_test is tcp_nagle_test+tcp_cwnd_test+tcp_snd_wnd_test, just the order changed slightly. net/ipv4/tcp_output.c: tcp_snd_test | -89 tcp_mss_split_point | -91 tcp_may_send_now | +53 tcp_cwnd_validate | -98 tso_fragment | -239 __tcp_push_pending_frames | -1340 tcp_push_one | -146 7 functions changed, 53 bytes added, 2003 bytes removed, diff: -1950 net/ipv4/tcp_output.c: tcp_write_xmit | +1772 1 function changed, 1772 bytes added, diff: +1772 tcp_output.o.new: 8 functions changed, 1825 bytes added, 2003 bytes removed, diff: -178 Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 730c30ec646bd252a9448a66ecd51d794853513f Merge: 726e07a8a38168266ac95d87736f9501a2d9e7b2 0a0755c9fe47dc9f8271935909c66096e43efbfe Author: David S. Miller Date: Fri Dec 5 22:54:40 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/wireless/iwlwifi/iwl-core.c drivers/net/wireless/iwlwifi/iwl-sta.c commit 726e07a8a38168266ac95d87736f9501a2d9e7b2 Author: Ilpo Järvinen Date: Fri Dec 5 22:43:56 2008 -0800 tcp: move some parts from tcp_write_xmit Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 41834b7332a1ad3f7b6e8bbd83e6ce63586f0b07 Author: Ilpo Järvinen Date: Fri Dec 5 22:43:26 2008 -0800 tcp: share code through function, not through copy-paste. :-) Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit ee6aac59505bcae5de1422c76956de62ac22170d Author: Ilpo Järvinen Date: Fri Dec 5 22:43:08 2008 -0800 tcp: drop tcp_bound_rto, merge content of it tcp_set_rto Both are called by the same sites. Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 50133161a83c9e5974d430cabd77d6430ca7d579 Author: Ilpo Järvinen Date: Fri Dec 5 22:42:41 2008 -0800 tcp: no need to pass prev skb around, reduces arg pressure Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit a1197f5a6faa23e5d0c1f8ed97b011deb2a75457 Author: Ilpo Järvinen Date: Fri Dec 5 22:42:22 2008 -0800 tcp: introduce struct tcp_sacktag_state to reduce arg pressure There are just too many args to some sacktag functions. This idea was first proposed by David S. Miller around a year ago, and the current situation is much worse that what it was back then. tcp_sacktag_one can be made a bit simpler by returning the new sacked (it can be achieved with a single variable though the previous code "caching" sacked into a local variable and therefore it is not exactly equal but the results will be the same). codiff on x86_64 tcp_sacktag_one | -15 tcp_shifted_skb | -50 tcp_match_skb_to_sack | -1 tcp_sacktag_walk | -64 tcp_sacktag_write_queue | -59 tcp_urg | +1 tcp_event_data_recv | -1 7 functions changed, 1 bytes added, 190 bytes removed, diff: -189 Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 775ffabf77a648d78fe1d20cb3a620e771abb921 Author: Ilpo Järvinen Date: Fri Dec 5 22:41:26 2008 -0800 tcp: make mtu probe failure to not break gso'ed skbs unnecessarily I noticed that since skb->len has nothing to do with actual segment length with gso, we need to figure it out separately, reuse a function from the recent shifting stuff (generalize it). Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 9969ca5f205988fb96461075cb4914c55cf166b5 Author: Ilpo Järvinen Date: Fri Dec 5 22:41:06 2008 -0800 tcp: Fix thinko making the not-shiftable to cover S|R as well S|R won't result in S if just SACK is received. DSACK is another story (but it is covered correctly already). Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit f0bc52f38b09308fca85f3aa9300a341364fe9c6 Author: Ilpo Järvinen Date: Fri Dec 5 22:40:47 2008 -0800 tcp: force mss equality with the next skb too. Also make if-goto forest nicer looking. Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 61c1d052a3c7d5acba3bd535aaffa5bb5d085181 Author: Ilpo Järvinen Date: Fri Dec 5 22:39:49 2008 -0800 dccp: use roundup instead of opencoding Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit d2b88814c6a63e4018cd299826907a12068ffdb7 Author: Alan Cox Date: Fri Dec 5 22:32:22 2008 -0800 tty: driverdata and discdata are void * Remove all the extra casting while we are cleaning up Signed-off-by: Alan Cox Signed-off-by: David S. Miller commit 8a1ec21e6c856b996cffcd4b33f037f6748a3ab4 Author: Alan Cox Date: Fri Dec 5 22:31:52 2008 -0800 tty: Flags should be accessed via the foo_bit interfaces We have various drivers that poke around directly and we need to clean this up before it causes problems. Signed-off-by: Alan Cox Signed-off-by: David S. Miller commit 098401a600b6344771900fe164c5eafb668ce99c Merge: cb7b48f671f9c7582993a6c0ff6e989078048561 c112d0c5b89037dd618083b5fdf4bb36b0c51d77 Author: David S. Miller Date: Fri Dec 5 22:23:34 2008 -0800 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 commit cb7b48f671f9c7582993a6c0ff6e989078048561 Author: Alexander Duyck Date: Fri Dec 5 15:08:03 2008 -0800 igb/e1000e: Naming interrupt vectors Change interrupt vector naming to match recent changes from Robert Olsson. Signed-off-by: Alexander Duyck Acked-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 1c721940ddd6496508f1f2fde5167b1c898b419b Author: Stefan Roscher Date: Fri Dec 5 11:25:38 2008 -0800 IB/ehca: Replace modulus operations in flush error completion path With the latest flush error completion patch we introduced modulus operation to calculate the next index within a qmap. Based on comments from other mailing lists we decided to optimize this operation by using an addition and an if-statement instead of modulus, even though this is on the error path. Signed-off-by: Stefan Roscher Signed-off-by: Roland Dreier commit 3d0890985ac4dff781b7feba19fedda547314749 Author: Dave Olson Date: Fri Dec 5 11:14:38 2008 -0800 IB/ipath: Add locking for interrupt use of ipath_pd contexts vs free Fixes timing race resulting in panic. Not a performance sensitive path. Signed-off-by: Dave Olson Signed-off-by: Roland Dreier commit 1bf7724e093cf3071d943d53bfa4de8b8e50426b Author: Dave Olson Date: Fri Dec 5 11:13:19 2008 -0800 IB/ipath: Fix spi_pioindex value ipath_piobufbase was a single value offset, but is multiple values on newer chips, so use only the 32 bits for the 2K buffers (4K buffers are currently used only by the driver). Signed-off-by: Dave Olson Signed-off-by: Roland Dreier commit 6114d4cd313acbb6e9935c2bee77e368d10c4f04 Author: Dave Olson Date: Fri Dec 5 11:13:19 2008 -0800 IB/ipath: Only do 1X workaround on rev1 chips Signed-off-by: Dave Olson Signed-off-by: Roland Dreier commit 60e845035a066e81af1a29047530088d59150d8b Author: Dave Olson Date: Fri Dec 5 11:13:19 2008 -0800 IB/ipath: Don't count IB symbol and link errors unless link is UP Implement the ignoring of ibsymbol errors and linkrecover errors while the link is at less than INIT (long needed), to get accurate counts. Particularly an issue when doing non-IBTA DDR negotiation with chips from vendors that do not support IBTA mode negotiation. If the driver is unloaded, and there is a delta, the adjusted counters are written back to the chip, so they stay adjusted across driver reload. Signed-off-by: Dave Olson Signed-off-by: Roland Dreier commit 890fccb2427d53b48ab9d009fd87d55bcb173f62 Author: Ralph Campbell Date: Fri Dec 5 11:13:18 2008 -0800 IB/ipath: Check return value of dma_map_single() This fixes an obvious oversight where the return value is not checked for error. Signed-off-by: Ralph Campbell Signed-off-by: Roland Dreier commit fab01fc56063dafcc083f481ac0f9e6b5a576dd6 Author: Ralph Campbell Date: Fri Dec 5 11:13:18 2008 -0800 IB/ipath: Fix PSN of send WQEs after an RDMA read resend The PSN of the first packet after an RDMA read is based on the size of the RDMA read request. This is calculated correctly for the WQE sent after the first request message but not on subsequent requests if the RDMA read is resent. Signed-off-by: Ralph Campbell Signed-off-by: Roland Dreier commit 6098d107499e1335f899bfcb558253fb7ee4f73f Author: Chien Tung Date: Fri Nov 21 20:51:01 2008 -0600 RDMA/nes: Cleanup warnings Wrap NES_DEBUG and assert macros with do while (0) to avoid ambiguous else. No one is using sk_buff * returned from form_cm_frame(), so drop the return. drop_packet() should not be incrementing reset counter on receiving a FIN. Signed-off-by: Chien Tung Signed-off-by: Roland Dreier commit 1ee86555b2ad4d16a3c18253b7e4d70d34eb94f3 Author: Chien Tung Date: Fri Nov 21 20:51:04 2008 -0600 RDMA/nes: Add loopback check to make_cm_node() Check for loopback connection in make_cm_node(). Signed-off-by: Chien Tung Signed-off-by: Roland Dreier commit f3181a10e13ac55e18958d7c48cba6f925c71483 Author: Faisal Latif Date: Fri Nov 21 20:50:55 2008 -0600 RDMA/nes: Check cqp_avail_reqs is empty after locking the list Between the first empty list check and locking the list, the list can change. Check it again after it is locked to make sure the list is still not empty. Signed-off-by: Faisal Latif Signed-off-by: Chien Tung Signed-off-by: Roland Dreier commit abb77256761bc3ee7a21cc28f6f12a938964e83f Author: Faisal Latif Date: Fri Nov 21 20:50:52 2008 -0600 RDMA/nes: Fix TCP compliance test failures ANVL testing showed we are not handling all cm_node states during connection establishment. Add missing state handlers and fix sequence number send reset in handle_tcp_options(). Signed-off-by: Faisal Latif Signed-off-by: Chien Tung Signed-off-by: Roland Dreier commit 4a14f6a79f5110c6033f0c61d77d07c449c2d083 Author: Faisal Latif Date: Fri Nov 21 20:50:49 2008 -0600 RDMA/nes: Forward packets for a new connection with stale APBVT entry Under heavy traffic, there is a small windows when an APBVT entry is not yet removed and a new connection is established. Packets for the new connection are dropped until APBVT entry is removed. This patch will forward the packets instead of dropping them. Signed-off-by: Faisal Latif Signed-off-by: Chien Tung Signed-off-by: Roland Dreier commit 183ecfa3091cd4cdda329a7fe89d9544088f517d Author: Faisal Latif Date: Fri Nov 21 20:50:46 2008 -0600 RDMA/nes: Avoid race between MPA request and reset event to rdma_cm In passive open, after indicating MPA request to rdma_cm, an incoming RST would fire a reset event to rdma_cm causing it to crash, since the current state is not connected. The solution is to wait for nes_accept() or nes_reject() before firing the reset event. If nes_accept() or nes_reject() is already done, then the reset event will be fired when RST is processed. Signed-off-by: Faisal Latif Signed-off-by: Chien Tung Signed-off-by: Roland Dreier commit 879e5bd5a1a0a317fb67fa4dc550db092a7bdcb0 Author: Faisal Latif Date: Fri Nov 21 20:50:41 2008 -0600 RDMA/nes: Lock down connected_nodes list while processing it While processing connected_nodes list, we would release the lock when we need to send reset to remote partner. That created a window where the list can be modified. Change this into a two step process: place nodes that need processing on a local list then process the local list. Signed-off-by: Faisal Latif Signed-off-by: Chien Tung Signed-off-by: Roland Dreier commit c5d321e5c924384cf5b35f6288d69e9237490565 Author: Faisal Latif Date: Fri Nov 21 20:50:38 2008 -0600 RDMA/nes: Cleanup cqp_request list usage Use nes_free_cqp_request() instead of open coding. Change some continue to break in nes_cm_timer_tick, because send_entry used to be a list processed in a loop (so continue went to the next item). Now it is a single item, so using break is correct. Signed-off-by: Faisal Latif Signed-off-by: Chien Tung Signed-off-by: Roland Dreier commit abf681ce5b6f83f0b8883e0f2c12d197a38543dd Author: Robert P. J. Day Date: Mon Feb 18 14:34:46 2008 -0500 kbuild: remove TAR_IGNORE Given that there is no usage of a TAR_IGNORE variable remove it Signed-off-by: Robert P. J. Day Signed-off-by: Sam Ravnborg commit 28a1d869560a49d960ba2a3b450ec965712e5560 Author: Daniel Mack Date: Fri Dec 5 17:31:00 2008 +0100 ASoC: tlv320aic3x: control additions and cleanups - split "Line Playback Switch" into "LineL Playback Switch" and "LineR Playback Switch" - split "Line PGA Bypass Playback Volume" into "LineL Left PGA Bypass Playback Volume" and "LineR Right PGA Bypass Playback Volume" - split "Line Line2 Bypass Playback Volume" into "LineL Line2 Bypass Playback Volume" and "LineR Line2 Bypass Playback Volume" - Added "HP Right PGA Bypass Playback Volume" Signed-off-by: Daniel Mack Signed-off-by: Mark Brown commit 68fb740774a429ecbccd4d8b3287cf4883ad3ec2 Author: Grazvydas Ignotas Date: Thu Dec 4 22:39:54 2008 +0200 ASoC: Add support for OMAP3 Pandora This patch adds basic support for OMAP3 Pandora. Signed-off-by: Grazvydas Ignotas Signed-off-by: Mark Brown commit c112d0c5b89037dd618083b5fdf4bb36b0c51d77 Author: Luis R. Rodriguez Date: Wed Dec 3 03:35:30 2008 -0800 ath9k: Use GFP_ATOMIC when allocating TX private area Using GFP_KERNEL was wrong and produces a 'scheduling while atomic' bug as we're in a tasklet. Also, check for proper return values now, in case allocation fails and be sure to stop the TX queue in case of memory issues but gaurantee the TX queue will eventually be woken up. Signed-off-by: Senthil Balasubramanian Signed-off-by: Sujith Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit f8316df10c4e3bec5b4c3a5a8e026c577640c3a6 Author: Luis R. Rodriguez Date: Wed Dec 3 03:35:29 2008 -0800 ath9k: Check for pci_map_single() errors pci_map_single() can fail so detect those errors with pci_dma_mapping_error() and deal with them accordingly. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit 73a5267087b5acd4a4288e0a1b809f09ca578d49 Author: Ivo van Doorn Date: Wed Dec 3 17:30:22 2008 +0100 rt2x00: Correctly initialize AID during set_key() Request the AID from hardware and provide this id to the driver (in case they need it). Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 9c3444d33e65ade06af82d19522686c1873b953a Author: Ivo van Doorn Date: Wed Dec 3 17:29:48 2008 +0100 rt2x00: Move crypto TX descriptor handling to rt2x00crypto.c Move all code which determines the right TX descriptor fields specific to crypto support into rt2x00crypto.c. This makes the code in rt2x00queue more simpler and better concentrates all crypto code into a single location. With this we can also remove some ifdefs in rt2x00queue.c since the code inside the ifdef is either very small, or only calling empty functions (see empty function definitions in rt2x00lib.h). Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 1c02667db5eae801b8fc279fdfa618164c0efb6e Author: Ivo van Doorn Date: Wed Dec 3 17:29:21 2008 +0100 rt2x00: Fix check for BSS info changes Fix ERP configuration, due to a too strict changes flags checking we never updated the short slot time or basic rate mask when no other changes were made at the same time. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 4c7f0bc266ccccfb0ca397405af13ee3d9e0f6b2 Author: Wu Fengguang Date: Wed Dec 3 00:19:04 2008 -0800 generic swap(): ath9k: rename swap() to swap_array() In preparation for the introduction of a generic swap() macro. Signed-off-by: Wu Fengguang Cc: Sujith Manoharan Cc: Luis R. Rodriguez Cc: Vasanthakumar Thiagarajan Cc: Senthil Balasubramanian Cc: Jouni Malinen Signed-off-by: Andrew Morton Signed-off-by: John W. Linville commit 74415edb042ef9f3b1291f978763687f35aadbb3 Author: Ivo van Doorn Date: Tue Dec 2 22:50:33 2008 +0100 rt2x00: Add RXDONE_CRYPTO_IV/ICV flags Drivers should notify rt2x00lib when they provide the IV/ICV data. This adds some flexibility to drivers which can't provide all information. * rt2500usb provides ICV inside the frame * rt2800pci doesn't provide IV/ICV * rt2800usb doesn't provide IV/ICV Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 011a03300bdd60782f465b97c3aefd58bfaae316 Author: Abhijeet Kolekar Date: Tue Dec 2 12:14:07 2008 -0800 iwl3945 : Fix a-band association for passive channels Patch does following things 1) This patch fixes the a-band association for passive channels with new uCode feature that it allows direct scan on passive channels after auto-switch from passive to active. This enables sending of direct probes on passive channels, as long as some traffic is detected on that channel. This improves the scanning for hidden SSIDs in A-band,which is all passive channels. This patch fixes the bug no 1748. http://www.intellinuxwireless.org/bugzilla/show_bug.cgi?id=1748 2) This fix will only work with uCode version 15.28.2.8 and above. Prior versions of uCode would work only if we heard the traffic within active dwell time, which is much shorter than passive dwell time and is shorter than typical beacon periods. This patch also provids full active dwell time even if we hear traffic late in passive dwell. 3) uCode API version is incremented to 2. Signed-off-by: Abhijeet Kolekar Signed-off-by: Zhu Yi Acked-by: Ben Cahill Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit a0987a8d68c86562f267efa97be01314c490c496 Author: Reinette Chatre Date: Tue Dec 2 12:14:06 2008 -0800 iwlwifi: rely on API version read from firmware This adds the infrastructure to support older firmware APIs. The API version number is stored as part of the filename, we first try to load the most recent firmware and progressively try lower versions. The API version is also read from the firmware self and stored as part of the iwl_priv structure. Only firmware that is supported by driver will be loaded. The version number read from firmware is compared to supported versions in the driver not the API version used as part of filename. An example using this new infrastrucure: if (IWL_UCODE_API(priv->ucode_ver) >= 2) { Driver interacts with Firmware API version >= 2. } else { Driver interacts with Firmware API version 1. } Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit c02b3acd29766c6f79c2411cb5b85e1ee72c4c8f Author: Chatre, Reinette Date: Tue Dec 2 12:14:05 2008 -0800 iwlwifi: store ucode version number We store the ucode version number as part of iwl_priv/iwl3945_priv. This enables us to determine if particular ucode has support for features in order to have driver support more than one ucode API. Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit f3f911d1773d31f11038d90b04244bc3986c4ccd Author: Zhu Yi Date: Tue Dec 2 12:14:04 2008 -0800 iwlwifi: fix DMA channel number in iwl_txq_ctx_stop The patch fixes the misuse of DMA channel number by Tx queue number in iwl_tx_ctx_stop(). The problem was originally reported by Wu Fengguang who complains iwlagn driver takes too long time when issuing `ifconfig wlan0 down`. The patch now decreases the interface bring down time from 2 seconds to 0.8 second. This fixes bugs: http://bugzilla.kernel.org/show_bug.cgi?id=11956 http://www.intellinuxwireless.org/bugzilla/show_bug.cgi?id=1790 Signed-off-by: Zhu Yi Tested-by: Fengguang Wu Acked-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 74221d07408c473721cce853ef4e0e66c0b326ba Author: Abbas, Mohamed Date: Tue Dec 2 12:14:03 2008 -0800 iwl3945: Fix iwl3945 rate scaling. 3945 rate scaling was broken in recent tree. This patch fix the following: 1- Get TX response info and update rates window. 2- Rate scaling selection. 3- Flush window timer. Signed-off-by: Mohamed Abbas Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit c30e30e17dad86d5e161cf9774eb4d549cc13191 Author: Abbas, Mohamed Date: Tue Dec 2 12:14:02 2008 -0800 iwl3945: add debugfs support Add debugfs support to 3945 driver to display rs info. Signed-off-by: Mohamed Abbas Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit d366df5abb8d5ce7e2c36d3b678177787ccd9749 Author: Winkler, Tomas Date: Tue Dec 2 12:14:01 2008 -0800 iwlwifi: move channels sysfs to debugfs This patch moves channels info display from sysfs to debugfs. This shows channel information as stored in NIC EEPROM. This is useful in debugging CRDA or iwl goes setting so it belongs rather to debugfs then to sysfs. Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 0ad91a35bcb6dd993ad7d34f159afae929b4743d Author: Winkler, Tomas Date: Tue Dec 2 12:14:00 2008 -0800 iwlwifi: move disable/enable interrupts to iwl-core.c This patch moves iwl_enable_interrupts and iwl_disable_interrupts functions to iwl-core.c Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit c93007efaad0a90520ba73f025c663441bf7e9d6 Author: Samuel Ortiz Date: Tue Dec 2 12:13:59 2008 -0800 iwl3945: Select correct sta ID from find_station() The find_station routine needs to look at the IWL_AP_ID entry if we're a STA. Currently, it only looks for STA entries which causes HW crypto to fail. Signed-off-by: Samuel Ortiz Acked-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 99df630c3453e4a66b3408212dd8e55bc0e04f54 Author: Zhu Yi Date: Tue Dec 2 12:13:58 2008 -0800 iwlwifi: fix printk size format error The patch fixes a printk size format error. Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit 8f5c87dcf6d1a5e6d7ffe642cfd4debb5ccbec49 Author: Winkler, Tomas Date: Tue Dec 2 12:13:57 2008 -0800 iwlwifi: move host command check function into separate file This patch moves iwl_check_rxon_cmd into iwl-agn-hcmd-check.c This function compiled out in none debugging or non development mode and more. We haven't decided which one yet hence preserving the current 'always compile' state. More functions will be added to the file namely for checking TX and LQ commands. Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 304a698a5819bf318fe7e6ea9fe7ff2560365ec2 Author: Ivo van Doorn Date: Tue Dec 2 18:20:59 2008 +0100 rt2x00: Release rt2x00 2.2.3 Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit dddfb478b26e29a2b47f655ec219e743b8111015 Author: Ivo van Doorn Date: Tue Dec 2 18:20:42 2008 +0100 rt2x00: Implement HW encryption (rt2500usb) rt2500usb supports hardware encryption. rt2500usb supports up to 4 shared and pairwise keys. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 0b927a079106e5f66c736e297370d3feb008e28e Author: Ivo van Doorn Date: Tue Dec 2 18:20:22 2008 +0100 rt2x00: Remove duplicate code Simplify rt2x00lib_config_antenna() by moving duplicate code into a seperate static inlined function. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 42c8285767dd17f450d986bdb163a8d56fb0330a Author: Ivo van Doorn Date: Tue Dec 2 18:20:04 2008 +0100 rt2x00: Store retry limit values Store retry limit values in the rt2x00dev structure. This allows the removal of the FIXME where we assumed the long retry is only used when working with RTS frames. Instead we should check the current retry limit values and decide if the required retry count for this frame is a long or short retry. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 1ce9cdac482f0dfbbd22ba4b3e5c016a05543a42 Author: Ivo van Doorn Date: Tue Dec 2 18:19:48 2008 +0100 rt2x00: Optimize IV/EIV handling IV and EIV belong to eachother and don't require 2 seperate fields. Instead they can logically be merged into a single array with size 2. With this approach we can simplify the code in rt2x00crypto.c by using a single memcpy() when copying the iv/eiv data. Additionally we can move some code out of if-statements because the if-statement would always be true. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit aac9207e45b1ec1f36d67e57d94f59ac036d37ee Author: Sujith Date: Tue Dec 2 18:37:54 2008 +0530 ath9k: Choose correct ANI calibration period ANI can't be turned on/off dynamically yet, but the calculation of the calibration period is wrong anyway. This patch fixes it. Reported-by: Johannes Berg Signed-off-by: Sujith Signed-off-by: John W. Linville commit 7470d7f54064557b6210671c2692bba19af5b79d Author: Winkler, Tomas Date: Mon Dec 1 16:32:22 2008 -0800 iwlwifi: 5150 enable LO, TXIQ and BB calibrations This patch enables LO, TXIQ, and BB calibrations for 5150 Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit fd63edba43c584d334e8fc161ca84e4cf54e26a0 Author: Tomas Winkler Date: Mon Dec 1 16:32:21 2008 -0800 iwlwifi: 5150 parametrize eeprom versions Add support for 5150 eeprom versions Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 339afc893d3c1a36151c7578d7eacd2f4b293d5f Author: Tomas Winkler Date: Mon Dec 1 16:32:20 2008 -0800 iwlwifi: 5150 compute ct kill threshold This patch adds computation of ct kill threshold for 5150. Threshold is computed from calibration data in the EEPROM. Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 819500c5892aeeed079d3ea1671df40f2dd1d417 Author: Tomas Winkler Date: Mon Dec 1 16:32:19 2008 -0800 iwlwifi: 5150 enable DC calibration This patch enables DC calibration for 5150 Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 7100e924661cc23609de8e7ab9fc3a13e0173891 Author: Tomas Winkler Date: Mon Dec 1 16:32:18 2008 -0800 iwlwifi: 5150 add support for 5150 Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit d97809dbbf1b8a6df79c82be75fa0cababec783b Author: Colin McCabe Date: Mon Dec 1 13:38:55 2008 -0800 ath9k: Replace ath9k_opmode with nl80211_iftype This patch kills ath9k's ath9k_opmode enum by replacing it with nl80211_iftype. Signed-off-by: Colin McCabe Signed-off-by: Andrey Yurovsky Signed-off-by: John W. Linville commit 33fd8195529d74c0fe23cddd1c76fe7e03bbd324 Author: Johannes Berg Date: Mon Dec 1 18:50:27 2008 +0100 iwlwifi: disable AP mode iwlwifi does not support AP mode in any way. For one, it doesn't even buffer multicast/broadcast frames properly. We didn't allow zd1211rw AP mode to be enabled without this, so iwlwifi shouldn't be allowed to advertise AP mode either. It also doesn't work at all, it doesn't even answer to probe requests, I'm guessing the packet injection code was disabled again. Signed-off-by: Johannes Berg Acked-by: Reinette Chatre Signed-off-by: John W. Linville commit c91276592695e13d1b52eab572551017cbf96ee7 Author: Johannes Berg Date: Mon Dec 1 18:19:36 2008 +0100 p54: fix lm87 checksum endianness This fixes the checksum calculation for lm87 firmwares on big endian platforms, the device treats the data as an array of 32-bit little endian values so the driver needs to do that as well. Signed-off-by: Johannes Berg Acked-by: Christian Lamparter Signed-off-by: John W. Linville commit 0f70f398460adb2d8aabb00e7e65f58247f219a3 Author: Johannes Berg Date: Mon Dec 1 18:13:05 2008 +0100 cfg80211: "fix" 11d oops This "fixes" the 11d oops I was seeing. This needs some more work but I cannot work on it now. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit c58f9f635afe688c5c5709f441af57c12c7a4856 Author: Helmut Schaa Date: Mon Dec 1 16:53:28 2008 +0100 iwl3945: remove obsolete irq handling 3945 hardware does not emit the interrupts CSR_INT_BIT_RF_KILL (rfkill toggled) and CSR_INT_BIT_CT_KILL (adapter too hot). Hence this part of code can be removed since iwl3945_irq_tasklet does not handle 4965 hw at all. Signed-off-by: Helmut Schaa Signed-off-by: John W. Linville commit 8e7be8da8ec7cc2828f4434d8d3c2ab4d1d4e7a4 Author: Rami Rosen Date: Mon Dec 1 13:56:55 2008 +0200 mac80211: tx module cleanup. This patch removes unnecessary parameter in ieee80211_beacon_add_tim() and removes unneeded definition and assignment for bdev (instance of net_device) in ieee80211_beacon_get() and in ieee80211_get_buffered_bc() (all in tx.c). Signed-off-by: Rami Rosen Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 4a4f4d805db5c930ee4185162dcdc8db9a0379d5 Author: Johannes Berg Date: Mon Dec 1 12:07:56 2008 +0100 cfg80211: fix wiphy remove if no regulatory request Fixes the segfault I just pointed out. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 8bef7a10014c4579c66579ab47fc1bb9563ac42a Author: Kalle Valo Date: Sun Nov 30 20:56:28 2008 +0200 mac80211: document ieee80211_tx_info.pad Fixes htmldocs warning: Warning(mac80211.h:379): No description found for parameter 'pad[2]' Signed-off-by: Kalle Valo Signed-off-by: John W. Linville commit 02e37ba1298359baa123cf71ffa03d92abd259b2 Author: Christian Lamparter Date: Sat Nov 29 22:39:08 2008 +0100 p54: per-device names This patch replaces the static "p54:" strings in front of most printk's with their corresponding per-device names. It was always a bit of a hassle to check which device was generating all the messages. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit b2023ddcfa6b79f26ef459867324f3d32b91aa07 Author: Christian Lamparter Date: Sat Nov 29 22:37:31 2008 +0100 p54: refactoring Thanks to the introduction of "changed" flags, we no longer have to do the bookkeeping of p54's firmware state for everything. Thus we can cut down redundancy code. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 64c354ddcd65c98d9a1e2a8f7fb5cc80c7fa488e Author: Christian Lamparter Date: Sat Nov 29 22:35:43 2008 +0100 p54: include support for 2.13.24.0 USB LM87 Firmwares Those firmwares are probably capable of reprogramming the device's eeprom. We better support them officially, before all the accidents happen. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 25900ef0191af98bbb24d8088c6887af31c1ba27 Author: Christian Lamparter Date: Sat Nov 29 22:34:37 2008 +0100 p54: utilize cryptographic accelerator This patch allows p54 to utilize its WEP, TKIP and CCMP accelerator. Tested-by: Larry Finger Signed-off-by: Christian Lamparter Signed-off-by: Larry Finger Signed-off-by: John W. Linville commit c772a08ba7192fa5450f85ef53adcbc6e0c5e1c9 Author: Christian Lamparter Date: Sat Nov 29 22:33:57 2008 +0100 p54: revamp station power save management in access point mode This patch addresses the problem in: http://marc.info/?l=linux-wireless&m=122727674810057&w=2 Thanks to Stefan Steuerwald extensive iPod touch tests. We could finally squash some bugs in p54's master mode / access point implementation. Let's hope we got everything right this time and all stations from now on will wake up on TIM and receive their queued frames and go to sleep again without any hiccups. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 4571d3bf87b76eae875283ff9f7243984b5ddcae Author: Christian Lamparter Date: Sun Nov 30 00:48:41 2008 +0100 mac80211: add sta_notify_ps callback This patch is necessary in order to provide a proper Access point support for p54. Unfortunately for us, there is no documented way to disable the interfering power save buffering mechanism in firmware completely. Therefore we give in and notify the driver through our new sta_notify_ps callback, so that we can update the filter state. Signed-off-by: Christian Lamparter Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 2a163c6de452c0b321396caceac5d163949b4cf2 Author: Sujith Date: Fri Nov 28 22:21:08 2008 +0530 ath9k: Add a debugfs file for dumping DMA status Debugfs file location: ath9k//dma Contains values in DMA debug registers. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 826d268091f0e0ecc50103f648b6183eb3efe04d Author: Sujith Date: Fri Nov 28 22:20:23 2008 +0530 ath9k: Add initial layout for an ath9k specific debugfs mechanism Signed-off-by: Sujith Signed-off-by: John W. Linville commit 16d68abee5d700bfe09ae8324dbb76028995c589 Author: Sujith Date: Fri Nov 28 22:19:42 2008 +0530 ath9k: Remove includes that are not needed Signed-off-by: Sujith Signed-off-by: John W. Linville commit 88b126af946e7ea789f2a52d9d25aca681f93067 Author: Sujith Date: Fri Nov 28 22:19:02 2008 +0530 ath9k: Add ATH9K_DEBUG configuration option Make debugging configurable, and add a module parameter to give the debug mask. Add debug.c to hold all debug specific code. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 04bd4638097c767278fdf12d50fecc8b60194d39 Author: Sujith Date: Fri Nov 28 22:18:05 2008 +0530 ath9k: Use cleaner debug masks Remove all the useless __func__ prefixes in debug messages, and replace the DPRINTF macro with a function. Signed-off-by: Sujith Signed-off-by: John W. Linville commit d9a1f48648edbe99fa432626ce6964a1b58f7281 Author: herton Date: Thu Nov 27 22:53:24 2008 -0200 rtl8187: fix retry count passed in rtl8187_tx I mistakenly changed retry count passed in rtl8187_tx in previous change "rtl8187: feedback transmitted packets using tx close descriptor for 8187B". For 8187 it should represent the number of retries (retry count limit). As explained by Johannes Berg, .count represents the number of tries (not retries), and retries = tries - 1. Signed-off-by: Herton Ronaldo Krzesinski Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 007e5ddddfed4ba039899754936e89b27d5cb551 Author: Johannes Berg Date: Thu Nov 27 23:13:38 2008 +0100 wireless: clean up radiotap a bit No need to pad the header so no constant needed for that, no need to carry any version number from netbsd nor CVS IDs from them. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit e11602b7813502bf363c40cdb5a8c4b96d4bbc96 Author: Sujith Date: Thu Nov 27 09:46:27 2008 +0530 ath9k: Handle channel initialization for AP mode Hostapd now passes the HT parameters through the config() callback, use these to set the appropriate channel in AP mode. Signed-off-by: Sujith Signed-off-by: John W. Linville commit cb3da8ccc464409e3b947557cdac4cd0b1241c4c Author: Fabio Rossi Date: Wed Nov 26 22:44:23 2008 +0100 mac80211: accept empty strings for hidden SSIDs Some access points (e.g. Sitecom WL-174) use an empty string as hidden SSID. Signed-off-by: Fabio Rossi Signed-off-by: John W. Linville commit e60c7744f8aa77bcbcb0b294596d6c87445d1200 Author: Johannes Berg Date: Wed Nov 26 23:31:40 2008 +0100 cfg80211: handle SIOCGIWMODE/SIOCSIWMODE further reducing wext code in mac80211. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit fee52678dbda2099a25243e79da98dc390e1939a Author: Johannes Berg Date: Wed Nov 26 22:36:31 2008 +0100 cfg80211: handle SIOCGIWNAME This patch moves the SIOCGIWNAME handling from mac80211 to cfg80211. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit f650470a8f506bc33a15778432ebb8cdcf89175b Author: Bob Copeland Date: Wed Nov 26 16:17:25 2008 -0500 ath5k: enable combined michael mic in key cache For mac revisions >= "Griffin," the hardware allows the mic tx and rx authenticator keys to share the same cache line, whereas earlier hardware can only store the rx. Enable the combined mic on hardware that supports it. Changes to ath5k.h Changes-licensed-under: 3-Clause-BSD Changes to attach.c, pcu.c, reg.h Changes-licensed-under: ISC Signed-off-by: Bob Copeland Signed-off-by: John W. Linville commit 671434904633876f89be70af415c35c89fb90115 Author: Bob Copeland Date: Tue Nov 25 20:55:21 2008 -0500 ath5k: clean up ath5k_hw_set_key Status: O With the addition of TKIP (and soon CCMP), key->alg is a more useful guide to key type than the key length. This patch cleans up key type assignment in ath5k_hw_set_key by extracting it into its own function. It also replaces the separate memcpy() calls for extracting key material into the hardware format with a loop that works regardless of key size. Finally, the patch removes support for WEP-128 since it is a non-standard key length that mac80211 also doesn't use. Changes-licensed-under: ISC Signed-off-by: Bob Copeland Signed-off-by: John W. Linville commit f6bac3ea5990653765700b2c3778b08782abebe5 Author: Bob Copeland Date: Wed Nov 26 16:17:11 2008 -0500 ath5k: preserve higher order bits when setting mac address In some cases we would like to set the mac address without changing the operating mode. However, Atheros cards store PCU data in the high 16 bits of the mac address register. Change ath5k_hw_set_lladdr() to not clobber the PCU settings. Changes-licensed-under: ISC Signed-off-by: Bob Copeland Signed-off-by: John W. Linville commit 51e9bf5d795b8e01e54391f1790974c7b166d286 Author: Harvey Harrison Date: Wed Nov 26 13:12:52 2008 -0800 iwlwifi: remove uses of __constant_{endian} helpers The base versions handle constant folding just fine. Signed-off-by: Harvey Harrison Signed-off-by: John W. Linville commit 10ec4f1d0851eb97cd53db66150835dd7f64829d Author: Luis R. Rodriguez Date: Wed Nov 26 13:03:08 2008 -0800 nl80211: relicense nl80211.h under the ISC We have a few BSD/ISC licensed userspace applications which include nl80211.h from the kernel. To avoid legal ambiguity for usage of the header file in these projects we rather simply relicense the header file under the ISC. We've received consent from all contributors to it. Signed-off-by: Luis R. Rodriguez Acked-by: Johannes Berg Acked-by: Michael Wu Acked-by: Luis Carlos Cobo Acked-by: Michael Buesch Acked-by: Jouni Malinen Acked-by: Colin McCabe Acked-by: Javier Cardona Cc: johannes@sipsolutions.net Cc: altape@eden.rutgers.edu Cc: luisca@cozybit.com Cc: mb@bu3sch.de Cc: jouni.malinen@atheros.com Cc: colin@cozybit.com Cc: javier@cozybit.com Signed-off-by: John W. Linville commit 72bdcf34380917260da41e3c49e10edee04bc5cd Author: Jouni Malinen Date: Wed Nov 26 16:15:24 2008 +0200 nl80211: Add frequency configuration (including HT40) This patch adds new NL80211_CMD_SET_WIPHY attributes NL80211_ATTR_WIPHY_FREQ and NL80211_ATTR_WIPHY_SEC_CHAN_OFFSET to allow userspace to set the operating channel (e.g., hostapd for AP mode). Signed-off-by: Jouni Malinen Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 72eaa43a532b4156966444779829a986a4432f11 Author: Johannes Berg Date: Wed Nov 26 15:02:58 2008 +0100 mac80211: only transition STAs ps->wake on data frames When a station goes to PS mode to scan, it will then send probe requests without the PS bit set. mac80211 will take that as indication that the station woke up, but it didn't. This patch changes mac80211 to only consider doze->wake transitions on data frames to to fix that issue. Signed-off-by: Johannes Berg Cc: Jouni Malinen Signed-off-by: John W. Linville commit 0d950d84d9d16f7d4edf380a238c5b534ff00d11 Author: Tomas Winkler Date: Tue Nov 25 13:36:01 2008 -0800 iwlwifi: properly initialize calibration command header Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 8e268e47b8ca5bddd189320884c3cc7d9ae489f4 Author: Tomas Winkler Date: Tue Nov 25 13:05:44 2008 +0200 mac80211: disassociate prior to unlinking AP/station This patch reorders calls during disassociation in ieee80211_set_disassoc function. Since sta_info_unlink calls sta_notify(REMOVE) it will remove the station representing AP from the driver before it has disassociated from it using bss_info_changed callback. Signed-off-by: Tomas Winkler Signed-off-by: John W. Linville commit e327b847e67051ece8d121f9aebeb4d736c36a02 Author: John W. Linville Date: Mon Dec 1 14:56:41 2008 -0500 mac80211: deauth when interface is marked down It seems like proper etiquette to let other stations know when we are going down in either STA or IBSS mode. This also notifies userland, so wpa_supplicant doesn't get confused. Signed-off-by: John W. Linville commit 04adf890667050b83a58abaf63610e53a604261b Author: John W. Linville Date: Wed Dec 3 13:55:38 2008 -0500 hostap: select required crypto bits in Kconfig This is fallout from moving the crypto stuff to the new lib80211 component. Signed-off-by: John W. Linville commit 21bbecdaaef3a6acc19905ab88c0587817318870 Author: Steven Rostedt Date: Thu Dec 4 23:30:56 2008 -0500 ftrace: use init_struct_pid as swapper pid Impact: clean up Using (struct pid *)-1 as the pointer for ftrace_swapper_pid is a little confusing for others. This patch uses the address of the actual init pid structure instead. This change is only for clarity. It does not affect the code itself. Hopefully soon the swapper tasks will all have their own pid structure and then we can clean up the code a bit more. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 21a8c466f99063eeb8567318b4e305eda9015408 Author: Frederic Weisbecker Date: Thu Dec 4 23:51:23 2008 +0100 tracing/ftrace: provide the macro task_curr_ret_stack() Impact: cleanup As suggested by Steven Rostedt, this patch provide a new macro task_curr_ret_stack() to move the cpp conditionnal CONFIG into the linux/ftrace.h headers. Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 77d683f3e0258d522c5506e7b5fd05c9411184d9 Author: Frederic Weisbecker Date: Thu Dec 4 23:49:47 2008 +0100 tracing/ftrace: fix the check of ftrace_trace_task Impact: fix default empty traces on function-graph-tracer The actual ftrace_trace_task() checks if ftrace_pid_trace is allocated and return 1 if it is true. If it is NULL, it will check the bit of pid tracing flag for the current task (which are not set by default). So by default, a task is not traced. Actually all tasks should be traced by default and filter_by_pid when ftrace_pid_trace is allocated. The appropriate condition should be to return 1 if filter_by_pid is set. Signed-off-by: Frederic Weisbecker Acke-dby: Steven Rostedt Signed-off-by: Ingo Molnar commit ff32504fdc56407654584ef187b20022c94a3486 Author: Frederic Weisbecker Date: Thu Dec 4 23:47:35 2008 +0100 tracing/ftrace: don't insert TRACE_PRINT during selftests Impact: fix tracer selfstests false results After setting a ftrace_printk somewhere in th kernel, I saw the Function tracer selftest failing. When a selftest occurs, the ring buffer is lurked to see if some entries were inserted. But concurrent insertion such as ftrace_printk could occured at the same time and could give false positive or negative results. This patch prevent prevent from TRACE_PRINT entries insertion during selftests. Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 970987beb9c99ca806edc464518d411cc399fb4d Merge: faec2ec505d397e9426754722b6e80d519c4938f 1fd8f2a3f9a91b287a876cef830b21baafc8a799 feaf3848a813a106f163013af6fcf6c4bfec92d9 Author: Ingo Molnar Date: Fri Dec 5 14:45:22 2008 +0100 Merge branches 'tracing/ftrace', 'tracing/function-graph-tracer' and 'tracing/urgent' into tracing/core commit a0286c94f07636380082608196d41dd725a83229 Author: Michael Tokarev Date: Fri Dec 5 15:47:29 2008 +0300 x86: fix missing space in printk, #2 Impact: clean up printk Signed-off-by: Michael Tokarev Signed-off-by: Ingo Molnar commit 12dde4c6d6e9092cf63094e84dc1fe4e505dd6d0 Author: Takashi Iwai Date: Fri Dec 5 13:09:27 2008 +0100 ALSA: hda - Proper power-map toggling for input pins The current code overrides the event type on input pins always to PWR_EVENT. Although this still works (PWR_EVENT and INSERT_EVENT are handled samely), it'd be better to avoid such overrides. Also, currently the unsol events are registered even for fixed pins which will never raise the pin-detection event. This patch fixes both issues. Signed-off-by: Takashi Iwai commit 55c395b47042e12d5c25aa07f271f56ffe44f793 Author: Michael Tokarev Date: Fri Dec 5 14:42:20 2008 +0300 x86: fix missing space in printk Just come across this when booting on an old hw.. Looks somewhat ugly, that single missing space ;) Signed-off-by: Michael Tokarev Signed-off-by: Ingo Molnar commit e6e3ea25b1679b55728a8a470a50a8fff61e8a45 Author: Takashi Iwai Date: Fri Dec 5 12:54:56 2008 +0100 ALSA: hda - Fix pin-detection in patch_sigmatel.c The pin-detection function used in patch_sigmatel.c shouldn't be specific to HP pin because it's used for input pins in general, too. This patch fixes the detection function, removes the HP check from it and moves to stac92xx_hp_detect(). Signed-off-by: Takashi Iwai commit e061b165c7f4ec5e2e160d990b49011b5b6e5c6a Author: Martin Willi Date: Thu Dec 4 15:40:17 2008 -0800 xfrm: Accept ESP packets regardless of UDP encapsulation mode From: Martin Willi An IPsec node speaking IKEv2 MUST accept incoming UDP encapsulated ESP packets, even if no NAT situation is detected. This is important if MOBIKE is in use. Some implementation keep the encapsulation mode if they move out of a NAT situation. Signed-off-by: David S. Miller commit 3f9b766ca7c4654d41f4f21357031c1c1e7de29e Author: Wang Chen Date: Thu Dec 4 15:12:20 2008 -0800 sgi-xp: Kill directly reference of netdev->priv Simply replace netdev->priv with netdev_priv(). [ Kill unnecessary casts, noticed by Ilpo -DaveM ] Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 17c324fa80914e5b39d423dfd1a3cd61a3ec9866 Author: Wang Chen Date: Thu Dec 4 15:07:33 2008 -0800 um: Kill directly reference of netdev->priv Simply replace netdev->priv with netdev_priv(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 6cbeba55c5cbd042040d6114471637e8b10d4a6b Author: Wang Chen Date: Thu Dec 4 15:06:56 2008 -0800 xtensa: Kill directly reference of netdev->priv Simply replace netdev->priv with netdev_priv(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 28945dd4fba8dcbc1c74ea702b731caaedae6ccb Author: Wang Chen Date: Thu Dec 4 15:06:27 2008 -0800 simeth: Kill directly reference of netdev->priv Simply replace netdev->priv with netdev_priv(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 5da95273c2e63c9607652b5e8dd39808b6992d7c Author: Takashi Iwai Date: Mon Nov 24 14:06:08 2008 +0100 ALSA: ca0106 - Add power-management support Added the missing PM support for snd-ca0106 driver. Signed-off-by: Takashi Iwai commit 84d727a109081684c2e01b811cb0d6dc3b9380ca Author: Benjamin Herrenschmidt Date: Thu Oct 9 16:58:19 2008 +0000 powerpc/4xx: Add support for ISA holes on 4xx PCI/X/E This adds support for ISA memory holes on the PCI, PCI-X and PCI-E busses of the 4xx platforms. The patch includes changes to the Bamboo and Canyonlands device-trees to add such a hole, others can be updated separately. The ISA memory hole is an additional outbound window configured in the bridge to generate PCI cycles in the low memory addresses, thus allowing to access things such as the hard-decoded VGA aperture at 0xa0000..0xbffff or other similar things. It's made accessible to userspace via the new legacy_mem file in sysfs for which support was added by a previous patch. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Josh Boyer commit 9d2421e8345602675132421fdaf4179af4705f5c Author: Stephen Rothwell Date: Sun Nov 23 18:33:05 2008 +0000 powerpc/44x: update ppc44x_defconfig This removes CONFIG_PCI_LEGACY (which is not needed) and consequently several compiler warnings. Signed-off-by: Stephen Rothwell Signed-off-by: Josh Boyer commit 23f402c011b30f981a64c3752fca96cbac2cfd3d Author: Hollis Blanchard Date: Mon Nov 10 14:58:28 2008 -0600 powerpc/kvm: update KVM config options in ppc44x_defconfig KVM host support was recently enabled in ppc44x_defconfig, but since then the config option was renamed. Update ppc44x_defconfig to match. Also, KVM guests aren't very interesting without networking, so enable CONFIG_TUN and CONFIG_BRIDGE. Signed-off-by: Hollis Blanchard Signed-off-by: Josh Boyer commit 32c8dabc97d436582298ebd0e33af041c69f5a4b Author: Mark Brown Date: Wed Dec 3 19:41:13 2008 +0000 ASoC: Remove obsolete declaration of struct snd_soc_clock_info The struct is never defined. Signed-off-by: Mark Brown commit affa219b60a11b3295637a97f5b1b8ef231490fc Author: Joe Korty Date: Wed Dec 3 18:58:19 2008 -0500 x86: change thread_info's flag field back to 32 bits Impact: pack struct thread_info more tightly Change x86_64's thread_info 'flags' field back to __u32. This was changed to 'unsigned long' when the thread_info*.h for i386 and x86_64 were merged. Change it back. We can do this as only 27 bits of 'flags' are actually used. This change actually packs down thread_info by 64 bits: 32 bits are saved by the smaller flags, and 32 bits are saved by the following 'mm_segment_t field' becoming naturally 64-bit aligned. Signed-off-by: Joe Korty Signed-off-by: Ingo Molnar commit c0515566f3117c44b0572559bcc3cb00899b0910 Merge: 4385cecf1f5866fb33fc95e2ee26a44e9b6f6be2 061e41fdb5047b1fb161e89664057835935ca1d2 Author: Ingo Molnar Date: Thu Dec 4 11:05:26 2008 +0100 Merge commit 'v2.6.28-rc7' into x86/cleanups commit 4e7c4d7b6d980264194c2aecbbb1e1e4c7302b63 Author: Takashi Iwai Date: Thu Dec 4 10:25:37 2008 +0100 ALSA: hda - Add reference to HD-Audio.txt in ALSA-Configuration.txt Signed-off-by: Takashi Iwai commit 1fd8f2a3f9a91b287a876cef830b21baafc8a799 Author: Frederic Weisbecker Date: Wed Dec 3 23:45:11 2008 +0100 tracing/function-graph-tracer: handle ftrace_printk entries Handle the TRACE_PRINT entries from the function grapg tracer and output them as a C comment just below the function that called it, as if it was a comment inside this function. Example with an ftrace_printk inside might_sleep() function: void __might_sleep(char *file, int line) { static unsigned long prev_jiffy; /* ratelimiting */ ftrace_printk("Hi I'm a comment in might_sleep() :-)"); A chunk of a resulting trace: 0) | _reiserfs_free_block() { 0) | reiserfs_read_bitmap_block() { 0) | __bread() { 0) | __getblk() { 0) | __find_get_block() { 0) 0.698 us | mark_page_accessed(); 0) 2.267 us | } 0) | __might_sleep() { 0) | /* Hi I'm a comment in might_sleep() :-) */ 0) 1.321 us | } 0) 5.872 us | } 0) 7.313 us | } 0) 8.718 us | } And this patch brings two minor fixes: - The newline after a switch-out task has disappeared - The "|" sign just before the cpu number on task-switch has been deleted. 0) 0.616 us | pick_next_task_rt(); 0) 1.457 us | _spin_trylock(); 0) 0.653 us | _spin_unlock(); 0) 0.728 us | _spin_trylock(); 0) 0.631 us | _spin_unlock(); 0) 0.729 us | native_load_sp0(); 0) 0.593 us | native_load_tls(); ------------------------------------------ 0) cat-2834 => migrati-3 ------------------------------------------ 0) | finish_task_switch() { 0) 0.841 us | _spin_unlock_irq(); 0) 0.616 us | post_schedule_rt(); 0) 3.882 us | } Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit faec2ec505d397e9426754722b6e80d519c4938f Author: Liming Wang Date: Thu Dec 4 14:24:49 2008 +0800 ftrace: avoid duplicated function when writing set_graph_function Impact: fix a bug in function filter setting when writing function to set_graph_function, we should check whether it has existed in set_graph_function to avoid duplicating. Signed-off-by: Liming Wang Signed-off-by: Ingo Molnar commit 6b2539302bee8e88c99e3c7d80c16a04dbe5e2ad Author: Ingo Molnar Date: Thu Dec 4 09:18:28 2008 +0100 tracing: fix typo and missing inline function Impact: fix build bugs Signed-off-by: Ingo Molnar commit e32d89569128e76bdf84867be0928902ca9f7555 Author: Steven Rostedt Date: Thu Dec 4 00:26:41 2008 -0500 ftrace: add ability to only trace swapper tasks Impact: new feature This patch lets the swapper tasks of all CPUS be filtered by the set_ftrace_pid file. If '0' is echoed into this file, then all the idle tasks (aka swapper) is flagged to be traced. This affects all CPU idle tasks. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 978f3a45d9499c7a447ca7615455cefb63d44165 Author: Steven Rostedt Date: Thu Dec 4 00:26:40 2008 -0500 ftrace: use struct pid Impact: clean up, extend PID filtering to PID namespaces Eric Biederman suggested using the struct pid for filtering on pids in the kernel. This patch is based off of a demonstration of an implementation that Eric sent me in an email. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 5ef6476190d24419a9a537baa0b5641845136989 Author: Steven Rostedt Date: Thu Dec 4 00:26:39 2008 -0500 pid: fix the do_each_pid_task() macro Impact: macro side-effects fix This patch adds parenthesis around 'pid' in the do_each_pid_task macro to allow callers to pass in more complex parameters. e.g. do_each_pid_task(*pid, type, task) Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 804a685162a7080386714166776f57255a75238e Author: Steven Rostedt Date: Wed Dec 3 15:36:59 2008 -0500 ftrace: trace single pid for function graph tracer Impact: New feature This patch makes the changes to set_ftrace_pid apply to the function graph tracer. # echo $$ > /debugfs/tracing/set_ftrace_pid # echo function_graph > /debugfs/tracing/current_tracer Will cause only the current task to be traced. Note, the trace flags are also inherited by child processes, so the children of the shell will also be traced. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 0ef8cde56ab92ab3f65221246dc1622c6b5068b3 Author: Steven Rostedt Date: Wed Dec 3 15:36:58 2008 -0500 ftrace: use task struct trace flag to filter on pid Impact: clean up Use the new task struct trace flags to determine if a process should be traced or not. Note: this moves the searching of the pid to the slow path of setting the pid field. This needs to be converted to the pid name space. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit ea4e2bc4d9f7370e57a343ccb5e7c0ad3222ec3c Author: Steven Rostedt Date: Wed Dec 3 15:36:57 2008 -0500 ftrace: graph of a single function This patch adds the file: /debugfs/tracing/set_graph_function which can be used along with the function graph tracer. When this file is empty, the function graph tracer will act as usual. When the file has a function in it, the function graph tracer will only trace that function. For example: # echo blk_unplug > /debugfs/tracing/set_graph_function # cat /debugfs/tracing/trace [...] ------------------------------------------ | 2) make-19003 => kjournald-2219 ------------------------------------------ 2) | blk_unplug() { 2) | dm_unplug_all() { 2) | dm_get_table() { 2) 1.381 us | _read_lock(); 2) 0.911 us | dm_table_get(); 2) 1. 76 us | _read_unlock(); 2) + 12.912 us | } 2) | dm_table_unplug_all() { 2) | blk_unplug() { 2) 0.778 us | generic_unplug_device(); 2) 2.409 us | } 2) 5.992 us | } 2) 0.813 us | dm_table_put(); 2) + 29. 90 us | } 2) + 34.532 us | } You can add up to 32 functions into this file. Currently we limit it to 32, but this may change with later improvements. To add another function, use the append '>>': # echo sys_read >> /debugfs/tracing/set_graph_function # cat /debugfs/tracing/set_graph_function blk_unplug sys_read Using the '>' will clear out the function and write anew: # echo sys_write > /debug/tracing/set_graph_function # cat /debug/tracing/set_graph_function sys_write Note, if you have function graph running while doing this, the small time between clearing it and updating it will cause the graph to record all functions. This should not be an issue because after it sets the filter, only those functions will be recorded from then on. If you need to only record a particular function then set this file first before starting the function graph tracer. In the future this side effect may be corrected. The set_graph_function file is similar to the set_ftrace_filter but it does not take wild cards nor does it allow for more than one function to be set with a single write. There is no technical reason why this is the case, I just do not have the time yet to implement that. Note, dynamic ftrace must be enabled for this to appear because it uses the dynamic ftrace records to match the name to the mcount call sites. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit b29144c317fb748dae6d72c0f88eda9d43165b8d Merge: b8307db2477f9c551e54e0c7b643ea349a3349cd e8e1abe92fd7ea9d823a3aaf81d10e2cba593b6b 764f3b95131a7ce5c992e3d00caf590fcada2f7b Author: Ingo Molnar Date: Thu Dec 4 09:07:44 2008 +0100 Merge branches 'tracing/ftrace' and 'tracing/function-graph-tracer' into tracing/core commit b8307db2477f9c551e54e0c7b643ea349a3349cd Merge: f0461d0146ee30927bc7efa2ae24ea8c6693b725 061e41fdb5047b1fb161e89664057835935ca1d2 Author: Ingo Molnar Date: Thu Dec 4 09:07:19 2008 +0100 Merge commit 'v2.6.28-rc7' into tracing/core commit 4151d154efc2eb1e48b0950e93660691426dd23f Author: Takashi Iwai Date: Thu Dec 4 07:49:15 2008 +0100 ALSA: hda - Add forgotten module alias for Nvidia MCP67 HDMI Signed-off-by: Takashi Iwai commit e5f73435683122612742eb17252a6854b28f2511 Author: Scott Waye Date: Thu Dec 4 07:43:18 2008 +0100 ALSA: hda - Add MCP67 HDMI support Added id for MCP67 HDMI codec. Signed-off-by: Scott Waye Signed-off-by: Takashi Iwai commit 36cbac5909d227c4de31fb93e1dd99c839c9cb6f Author: Joe Perches Date: Wed Dec 3 22:27:25 2008 -0800 net/ipv6/ip6mr.c: Use kmem_cache_zalloc, remove memset Signed-off-by: Joe Perches Signed-off-by: David S. Miller commit df66f858074370a7ac7b21af2940e7a3a6af17c2 Author: Wang Chen Date: Wed Dec 3 22:24:05 2008 -0800 if_usb: Kill directly reference of netdev->priv Simply replace netdev->priv with netdev_priv(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 48502180e4b47fb2b1e7834fe0f16f4e553a053d Author: Luotao Fu Date: Wed Dec 3 22:23:18 2008 -0800 smc91x: remove isa stuff from smc91x driver ISA support in smc91x is incomplete. I doubt there're any smc91x isa card. This driver is greatly used on arm pxa platforms. Hence we remove the isa stuff from smc91x driver. Signed-off-by: Luotao Fu Acked-by: Steve Glendinning Signed-off-by: David S. Miller commit 999890b21a8eff7559a140fcbd2cd4b34e685c76 Author: Benjamin Thery Date: Wed Dec 3 22:22:16 2008 -0800 net: /proc/net/ip_mr_cache, display Iif as a signed short Today, iproute2 fails to show multicast forwarding unresolved cache entries while scanning /proc/net/ip_mr_cache. Indeed, it expects to see -1 in 'Iif' column to identify unresolved entries but the kernel outputs 65535. It's a signed/unsigned issue: 'Iif', the source interface, is retrieved from member mfc_parent in struct mfc_cache. mfc_parent is a vifi_t: unsigned short, but is displayed in ipmr_mfc_seq_show() as "%-3d", signed integer. In unresolevd entries, the 65535 value (0xFFFF) comes from this define: #define ALL_VIFS ((vifi_t)(-1)) That may explains why the guy who added support for this in iproute2 thought a -1 should be expected. I don't know if this must be fixed in kernel or in iproute2. Who is right? What is the correct API? How was it designed originally? I let you decide if it should goes in the kernel or be fixed in iproute2. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit 1ea472e2dedcf23d5f31c63fc790cccfab93c0de Author: Benjamin Thery Date: Wed Dec 3 22:21:47 2008 -0800 net: fix /proc/net/ip_mr_cache display - V2 /proc/net/ip_mr_cache and /proc/net/ip6_mr_cache displays garbage when showing unresolved mfc_cache entries. [root@qemu tests]# cat /proc/net/ip_mr_cache Group Origin Iif Pkts Bytes Wrong Oifs 014C00EF 010014AC 1 10 10050 0 2:1 3:1 024C00EF 010014AC 65535 514 2 -559067475 The first line is correct. It is a resolved cache entry, 10 packets used it... The second line represents an unresolved entry, and the columns Pkts(4th), Bytes(5th) and Wrong(6th) just show garbage. In struct mfc_cache, there's an union to store data for resolved and unresolved cases. And what ipmr_mfc_seq_show() is printing in these columns for the unresolved entries is some bytes from mfc_cache.mfc_un.res. Bad. (eg. In our case -559067475 is in fact 0xdead4ead which is the spinlock magic from mfc_cache.mfc_un.unres.unresolved.lock.magic). This patch replaces the garbage data written in these columns for the unresolved entries by '0' (zeros) which is more correct. This change doesn't break the ABI. Also, mfc->mfc_un.res.pkt, mfc->mfc_un.res.bytes, mfc->mfc_un.res.wrong_if are unsigned long. It applies on top of net-next-2.6. The patch for net-2.6 is slightly different because of the NIP6_FMT to %pI6 conversion that was made in the seq_printf. Changelog: ========== V2: * Instead of breaking the ABI by suppressing the columns that have no meaning for unresolved entries, fill them with 0 values. Signed-off-by: Benjamin Thery Signed-off-by: David S. Miller commit 9de6d99a7559d20f7ababd1cacdc61ee5315f3c1 Author: Alexey Dobriyan Date: Wed Dec 3 22:19:52 2008 -0800 netdev: remove pathetic compile-command lines -m486, -O6 are partircularly amusing. Remove some other useless lines near as well. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit ec98ce480ada787f2cfbd696980ff3564415505b Merge: 3496f92beb9aa99ef21fccc154a36c7698e9c538 feaf3848a813a106f163013af6fcf6c4bfec92d9 Author: James Morris Date: Thu Dec 4 17:16:36 2008 +1100 Merge branch 'master' into next Conflicts: fs/nfsd/nfs4recover.c Manually fixed above to use new creds API functions, e.g. nfs4_save_creds(). Signed-off-by: James Morris commit 8865c418caf4e9dd2c24bdfae3a5a4106e143e60 Author: David Woodhouse Date: Wed Dec 3 22:12:38 2008 -0800 atm: 32-bit ioctl compatibility We lack compat ioctl support through most of the ATM code. This patch deals with most of it, and I can now at least use BR2684 and PPPoATM with 32-bit userspace. I haven't added a .compat_ioctl method to struct atm_ioctl, because AFAICT none of the current users need any conversion -- so we can just call the ->ioctl() method in every case. I looked at br2684, clip, lec, mpc, pppoatm and atmtcp. In svc_compat_ioctl() the only mangling which is needed is to change COMPAT_ATM_ADDPARTY to ATM_ADDPARTY. Although it's defined as _IOW('a', ATMIOC_SPECIAL+4,struct atm_iobuf) it doesn't actually _take_ a struct atm_iobuf as an argument -- it takes a struct sockaddr_atmsvc, which _is_ the same between 32-bit and 64-bit code, so doesn't need conversion. Almost all of vcc_ioctl() would have been identical, so I converted that into a core do_vcc_ioctl() function with an 'int compat' argument. I've done the same with atm_dev_ioctl(), where there _are_ a few differences, but still it's relatively contained and there would otherwise have been a lot of duplication. I haven't done any of the actual device-specific ioctls, although I've added a compat_ioctl method to struct atmdev_ops. Signed-off-by: David Woodhouse Signed-off-by: David S. Miller commit dcd39c90290297f6e6ed8a04bb20da7ac2b043c5 Author: Stephen Hemminger Date: Wed Dec 3 22:10:38 2008 -0800 ne-h8300: convert to net_device_ops Another device using 8390 library that needs converting. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 5618f0d1193d6b051da9b59b0e32ad24397f06a4 Author: Stephen Hemminger Date: Wed Dec 3 22:10:10 2008 -0800 hydra: convert to net_device_ops Another device using 8390 library that needs converting. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit b6114794a1c394534659f4a17420e48cf23aa922 Author: Stephen Hemminger Date: Wed Dec 3 22:09:30 2008 -0800 zorro8390: convert to net_device_ops Another device using 8390 library that needs converting. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 3e1d7cd2dc708f2054b2180e05ae283b9f91d543 Author: Wang Chen Date: Wed Dec 3 22:07:10 2008 -0800 e1000: e1000_adapter->polling_netdev is useless Commit bea3348eef27e6044b6161fd04c3152215f96411 "[NET]: Make NAPI polling independent of struct net_device objects." made NAPI polling to be independent of net_device. So e1000_adapter->polling_netdev is no longer used. Kill it. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit a4d2f34b7c3ff8a53df755961faf8186c6e7b464 Author: Wang Chen Date: Wed Dec 3 22:05:58 2008 -0800 ixgbe: function comment typo Seems the ixgbe's code was copied from e1000. The comment talks about something not exist. Signed-off-by: Wang Chen Acked-by: Jeff Kirsher Signed-off-by: David S. Miller commit e4e6c38cab208b369bfc8e9a57186581bf0b9987 Author: Guo-Fu Tseng Date: Wed Dec 3 21:20:04 2008 -0800 jme: Remove 64 and 40 bit dma_mask Although the hardware supports the 64bit DMA address in design, but later found that it actually not working. This patch reduced the rang to 32bit. Found-by: "Ethan" Signed-off-by: "Guo-Fu Tseng" Acked-by: Jeff Garzik Signed-off-by: David S. Miller commit 4f40bf46897ddb57f149c0758f0cef0cc7782f7f Author: akeemting Date: Wed Dec 3 21:19:16 2008 -0800 jme: GHC register control fix for new hardware Due to the hardware design, except the first chip on the market, other chips needs to setup the clock source for MAC processor implicitly through Global Host Control Register(GHC). (Strange design huh?) 10/100M uses the PCI-E as clock source, and 1G uses GPHY. And I reordered the code a little, to make it easier to read. Found-by: "Ethan" Fixed-by: "akeemting" Signed-off-by: "Guo-Fu Tseng" Acked-by: Jeff Garzik Signed-off-by: David S. Miller commit 59e4220a1112bf65924bc2e47b5757911b6f349b Author: Jarek Poplawski Date: Wed Dec 3 21:17:27 2008 -0800 pkt_sched: sch_htb: Replace HTB_ACCNT() macro with inlines Replace HTB_ACCNT() macro with inlines to make it more readable. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 23cb913d25b20ed88b36a26f337cfdb4605e63f4 Author: Jarek Poplawski Date: Wed Dec 3 21:16:58 2008 -0800 pkt_sched: sch_htb: Remove L2T() L2T() is currently used only in one place (and has one spurious parameter, btw), so let's: 'get rid of L2T completely, and just use "qdisc_l2t(rate, size)" directly.' - quote & feedback from David S. Miller. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 244ef9b9176c7c7a095f4738d353a3a60b88097d Author: Wang Chen Date: Wed Dec 3 21:14:04 2008 -0800 bond: Kill directly reference of netdev->priv Simply replace netdev->priv with netdev_priv(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 97341249c4c30cf0eea5439ce2f36ee887e640fe Author: Wang Chen Date: Wed Dec 3 21:13:37 2008 -0800 mptlan: Kill directly reference of netdev->priv Simply replace netdev->priv with netdev_priv(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 0eade1f930fa3ba6461b34baf3ed8fa7c4abc40f Author: Wang Chen Date: Wed Dec 3 21:13:13 2008 -0800 dvb: Kill directly reference of netdev->priv Simply replace netdev->priv with netdev_priv(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit c19f7a34f7cc7543c62ad065952e146dc77d1a38 Author: Jarek Poplawski Date: Wed Dec 3 21:09:45 2008 -0800 pkt_sched: sch_htb: Clean htb_class prio and quantum fields While implementing htb_parent_to_leaf() there where added backup prio and quantum struct htb_class fields to preserve these values for inner classes in case of their return to leaf. This patch cleans this a bit by removing union leaf duplicates. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 633fe66ed8385ccf8b4a74a00a4c6eb40850d65f Author: Jarek Poplawski Date: Wed Dec 3 21:09:10 2008 -0800 pkt_sched: sch_htb: Remove htb_sched nwc_hit field Remove practically unused struct htb_sched nwc_hit field. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 4164d661b8c9602fbbf651a33377d2c51f68c451 Author: Jarek Poplawski Date: Wed Dec 3 21:08:44 2008 -0800 pkt_sched: sch_htb: Remove htb_class aprio field Remove practically unused struct htb_class aprio field. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit cb52deba12f27af90a46d2f8667a64888118a888 Author: Ed Swierk Date: Mon Dec 1 12:24:43 2008 +0000 forcedeth: power down phy when interface is down Bring the physical link down when the interface is down by placing the PHY in power-down state, unless WOL is enabled. This mirrors the behavior of other drivers including e1000 and tg3. Without the patch, ifconfig down leaves the physical link up, which confuses datacenter users who expect the link lights both on the NIC and the switch to go out when they bring an interface down. Furthermore, even though the phy is powered on, autonegotiation stops working, so a normally gigabit link might suddenly become 100 Mbit half-duplex when the interface goes down, and become gigabit when it comes up again. Ayaz said: I would not include this patch until further testing is performed. NVIDIA MCP chips use 3rd party PHY vendors. By powering down the phy, it could have adverse affects on certain phys. Arthur Jones said: I just ran across this patch. Tested on a Marvell 88E1121R (GigE PHY) and works great. This is a very important feature for me. Signed-off-by: Ed Swierk Tested-by: Arthur Jones Signed-off-by: Andrew Morton Signed-off-by: David S. Miller commit a316084c2f18fd5371f81cfcfc8348a71c4a6fe8 Author: Andrew Morton Date: Mon Dec 1 12:24:46 2008 +0000 drivers/net/smc911x.c: smc911x_drv_probe() cleanup Save an ugly ifdef. Signed-off-by: Andrew Morton Signed-off-by: David S. Miller commit fd568fc3fe46fd87087717811d2f9ed27bb71558 Author: Julia Lawall Date: Mon Dec 1 12:24:24 2008 +0000 drivers/isdn/mISDN: use ARRAY_SIZE ARRAY_SIZE is more concise to use when the size of an array is divided by the size of its type or the size of its first element. The semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @i@ @@ #include @depends on i using "paren.iso"@ type T; T[] E; @@ - (sizeof(E)/sizeof(T)) + ARRAY_SIZE(E) // Signed-off-by: Julia Lawall Signed-off-by: Andrew Morton Signed-off-by: David S. Miller commit 838361fe7828a3ad1aae8dee87620474931dac5e Author: Wang Chen Date: Wed Dec 3 15:49:46 2008 -0800 isdn: Kill directly reference of netdev->priv Simply use netdev_priv() to replace netdev->priv. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 25dd7e6aedff054736f9edfd05bb585d810d8543 Author: Wang Chen Date: Wed Dec 3 15:49:07 2008 -0800 hysdn: Kill directly reference of netdev->priv Usually, netdev->priv should point to the memory of private data which is allocated in alloc_netdev(). netdev_priv() is used to get the address of the private data. Change the netdev->priv pointer to another memory is wrong. Use netdev->ml_priv for this case. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 52404881984e2d447f920a23e3bb63262dfc77f3 Author: Rémi Denis-Courmont Date: Wed Dec 3 15:42:56 2008 -0800 Phonet: basic net namespace support Signed-off-by: Rémi Denis-Courmont Signed-off-by: David S. Miller commit d81d228567f55af517796638075dbbce9b40d7af Author: Martin Willi Date: Wed Dec 3 15:38:07 2008 -0800 xfrm: Accept XFRM_STATE_AF_UNSPEC SAs on IPv4/IPv6 only hosts Installing SAs using the XFRM_STATE_AF_UNSPEC fails on hosts with support for one address family only. This patch accepts such SAs, even if the processing of not supported packets will fail. Signed-off-by: Martin Willi Signed-off-by: David S. Miller commit ff80aa97c9b4aae9449a608fe1bc3e7b5121cd66 Author: Peter Korsgaard Date: Tue Dec 2 21:58:06 2008 +0100 setlocalversion: add git-svn support Print svn revision in addition to git info on git-svn repos. Signed-off-by: Peter Korsgaard Signed-off-by: Sam Ravnborg commit 167d6a02c1dbdd84d49e87df7718f18fa31cb971 Author: Peter Korsgaard Date: Tue Dec 2 21:58:05 2008 +0100 setlocalversion: print correct subversion revision Output svn revision of latest change, instead of repo revision as thats what we're interested in (especially when working on a branch/tag). Signed-off-by: Peter Korsgaard Signed-off-by: Sam Ravnborg commit 846442c8ddc02e378e7b981f0928449ed1ff1e1f Author: Arjan van de Ven Date: Mon Dec 1 14:21:06 2008 -0800 scripts: improve the decodecode script kerneloops.org has been using an improved "decodecode" script, specifically it has a special marker that shows which line in the assembly the oops happened at, like this: 20: 83 e0 03 and $0x3,%eax 23: 09 d8 or %ebx,%eax 25: 85 db test %ebx,%ebx 27: 89 02 mov %eax,(%edx) 29: 74 0f je 0x3a 2b:* 3b 73 04 cmp 0x4(%ebx),%esi <-- trapping instruction 2e: 75 05 jne 0x35 30: 89 53 04 mov %edx,0x4(%ebx) 33: eb 07 jmp 0x3c 35: 89 53 08 mov %edx,0x8(%ebx) this patch updates the kernel copy to also have this functionality. Signed-off-by: Arjan van de Ven Reviewed-by: WANG Cong Signed-off-by: Andrew Morton Signed-off-by: Sam Ravnborg commit c39dd50240b97bfe4fcc49b41e1fe56675afcb94 Author: Jeremy Kerr Date: Mon Dec 1 14:21:03 2008 -0800 scripts/package: allow custom options to rpm Add a RPMOPTS make variable to allow arbitrary options to be passed to rpm during 'make rpm-pkg'. For example: make RPMOPTS="--define '_topdir /home/jk/rpm'" rpm-pkg Signed-off-by: Jeremy Kerr Signed-off-by: Andrew Morton Signed-off-by: Sam Ravnborg commit 5dae9a550a7478c8d6a7da2336d3ceeebf90ab84 Author: Andreas Gruenbacher Date: Mon Dec 1 14:21:03 2008 -0800 genksyms: allow to ignore symbol checksum changes This adds an "override" keyword for use in *.symvers / *.symref files. When a symbol is overridden, the symbol's old definition will be used for computing checksums instead of the new one, preserving the previous checksum. (Genksyms will still warn about the change.) This is meant to allow distributions to hide minor actual as well as fake ABI changes. (For example, when extra type information becomes available because additional headers are included, this may change checksums even though none of the types used have actully changed.) This approach also allows to get rid of "#ifdef __GENKSYMS__" hacks in the code, which are currently used in some vendor kernels to work around checksum changes. Signed-off-by: Andreas Gruenbacher Cc: Randy Dunlap Signed-off-by: Andrew Morton Signed-off-by: Sam Ravnborg commit 64e6c1e12372840e7caf8e25325a9e9c5fd370e6 Author: Andreas Gruenbacher Date: Mon Dec 1 14:21:01 2008 -0800 genksyms: track symbol checksum changes Sometimes it is preferable to avoid changes of exported symbol checksums (to avoid breaking externally provided modules). When a checksum change occurs, it can be hard to figure out what caused this change: underlying types may have changed, or additional type information may simply have become available at the point where a symbol is exported. Add a new --reference option to genksyms which allows it to report why checksums change, based on the type information dumps it creates with the --dump-types flag. Genksyms will read in such a dump from a previous run, and report which symbols have changed (and why). The behavior can be controlled for an entire build as follows: If KBUILD_SYMTYPES is set, genksyms uses --dump-types to produce *.symtypes dump files. If any *.symref files exist, those will be used as the reference to check against. If KBUILD_PRESERVE is set, checksum changes will fail the build. Signed-off-by: Andreas Gruenbacher Cc: Randy Dunlap Signed-off-by: Andrew Morton Signed-off-by: Sam Ravnborg commit a680eedc6c621c75695c68198533fc3c98f4053b Author: Sam Ravnborg Date: Wed Dec 3 22:24:13 2008 +0100 tags and cscope support really belongs in a shell script as they do not benefit from the make functionality. Moving the support to a shell script has several benefits: - The readability of the code has increased a lot - More people is able to extend the tags support - We see less changes to the top-level Makefile The shell script version includes improvements from: Alexey Dobriyan (jump to kconfig symbols) Alexey Dobriyan (drop ./ in paths) Ian Campbell (simplified find algorithms) This version has a few caveats: => It does not support ALLSOURCE_ARCHS - it is easy to add if it is really used => It assumes all archs have moved to arch/$ARCH/include - until that happens we have a few additional hits in the archs Signed-off-by: Sam Ravnborg Cc: Alexey Dobriyan Tested-by: Ian Campbell commit 361425fc32422c9716fc69e52455b7d44fc02c18 Author: Haiying Wang Date: Wed Dec 3 14:03:09 2008 -0500 powerpc/85xx: Create dts for each core in CAMP mode for MPC8572DS This patch creates the dts files for each core and splits the devices between the two cores for MPC8572DS. core0 has memory, L2, i2c, dma1, global-util, eth0, eth1, crypto, pci0, pci1. core1 has L2, dma2, eth2, eth3, pci2, msi. MPIC is shared between two cores but each core will protect its interrupts from other core by using "protected-sources" of mpic. Signed-off-by: Haiying Wang Signed-off-by: Kumar Gala commit f6682f915760ccfe57ef1b6cd5ff2d8f2bf8c1d4 Author: Sam Ravnborg Date: Wed Dec 3 22:11:14 2008 +0100 kconfig: fix options to check-lxdialog.sh As noted by Bernhard - fix it up. Cc: Bernhard Reutner-Fischer Signed-off-by: Sam Ravnborg commit 3b1ec9fb8197197d5e3bcca3a05e82d4f50f11bc Author: Sally, Gene Date: Wed Oct 29 09:54:17 2008 -0400 kbuild: gen_init_cpio expands shell variables in file names Modify gen_init_cpio so that lines that specify files can contain what looks like a shell variable that's expanded during processing. For example: file /sbin/kinit ${RFS_BASE}/usr/src/klibc/kinit/kinit 0755 0 0 given RFS_BASE is "/some/directory" in the environment would be expanded to file /sbin/kinit /some/directory/usr/src/klibc/kinit/kinit 0755 0 0 If several environment variables appear in a line, they are all expanded with processing happening from left to right. Undefined variables expand to a null string. Syntax errors stop processing, letting the existing error handling show the user offending line. This patch helps embedded folks who frequently create several RFS directories and then switch between them as they're tuning an initramfs. Signed-off-by: gene.sally@timesys.com Signed-off-by: Sam Ravnborg commit efddd79512cc582675004bfdf7e66585198b38f9 Author: Werner Almesberger Date: Wed Nov 12 16:39:35 2008 -0200 remove bashisms from scripts/extract-ikconfig unbashify-extract-ikconfig.patch scripts/extract-ikconfig contains a lot of gratuituous bashisms, which make it fail if /bin/sh isn't bash. This patch replaces them with regular Bourne shell constructs. Signed-off-by: Werner Almesberger Acked-by: Randy Dunlap # as file author Signed-off-by: Sam Ravnborg commit d2301249e2f9b9a3ba989703107192b538209e57 Author: Sam Ravnborg Date: Fri Nov 21 23:00:12 2008 +0100 kbuild: teach mkmakfile to be silent With this fix a "make -s" is now really silent Signed-off-by: Sam Ravnborg commit fd54f502841c1caa7cfd5af564aad1bd017371fa Author: Mike Frysinger Date: Thu Nov 6 03:31:35 2008 -0500 kbuild: use KECHO convenience echo Convert a few echos in the build system to new $(kecho) so we get correct output according to build verbosity. Signed-off-by: Mike Frysinger [sam: added kecho in a few more places for O=... builds] Signed-off-by: Sam Ravnborg commit 5410ecc0def8955ab99810c5626cc7e156991896 Author: Mike Frysinger Date: Thu Nov 6 03:31:34 2008 -0500 kbuild: introduce $(kecho) convenience echo There is a bunch of places in the build system where we do 'echo' to show some nice status lines. This means we still get output when running in silent mode. So declare a new KECHO variable that only does 'echo' when we are in a suitable verbose build mode. Signed-off-by: Mike Frysinger [sam: added Documentation] Signed-off-by: Sam Ravnborg commit d03fab43c5ba4f5fa46db73c937e9b993a531d27 Author: Mike Frysinger Date: Thu Nov 6 03:31:22 2008 -0500 kbuild: kill output in silent mode of mkcompile_h The mkcompile_h script does `echo` regardless of silent mode the make is running at, so have it respect $quiet from kbuild and only echo when not in silent mode. Signed-off-by: Mike Frysinger Signed-off-by: Sam Ravnborg commit d8672b40d3a6f17de5b5bc71d6e531d7576a856a Author: Sam Ravnborg Date: Fri Nov 21 21:50:02 2008 +0100 kbuild: expand -I in KBUILD_CPPFLAGS kbuild failed to expand include flags in KBUILD_CPPFLAGS resulting in code like this in arch Makefiles: ifeq ($(KBUILD_SRC),) KBUILD_CPPFLAGS += -Iinclude/foo else KBUILD_CPPFLAGS += -I$(srctree)/include/foo endif Move use of LINUXINCLUDE into Makefile.lib to allow us to expand -I directives of KBUILD_CPPFLAGS so we can avoid the above code. Signed-off-by: Sam Ravnborg commit 5b91c33cf295d9c235f587f29a8c0a7ae15a5320 Author: Sam Ravnborg Date: Wed Dec 3 21:22:21 2008 +0100 kbuild: fix -I option expansion with O=... builds When adding extra -I options with O=... we could end up in a situation where there were no parameters to -I. So we had a commandline that looked like this: ... -I -Wall ... This had the undesired side effect that gcc assumed "-Wall" was a path to look for include files so this options was effectively ignored. This happens only when we build the generated module.mod.c files as part of the final modules builds and is as such harmless with current kbuild. This bug was exposed when we rearranged the options to gcc. Signed-off-by: Sam Ravnborg commit dc7d7b830ee1f4111696e73d1c25da683b461548 Author: Mark Brown Date: Wed Dec 3 18:21:52 2008 +0000 ASoC: Remove platform device from DAI suspend and resume operations None of the DAIs use it except s3c2412-i2s which only uses it for dev_() printouts. Signed-off-by: Mark Brown commit 07c84d0409f3551b79d676630d8ee76bb551598d Author: Mark Brown Date: Wed Dec 3 18:17:28 2008 +0000 ASoC: Remove device from platform suspend and resume operations None of the platforms are actually using the SoC device so remove it (only atmel actually has a suspend method). Signed-off-by: Mark Brown commit 384c89e2e4cb5879b86a38414d1b3bb2b23ec8ee Author: Mark Brown Date: Wed Dec 3 17:34:03 2008 +0000 ASoC: Push debugfs files out of the snd_soc_device structure This is in preparation for the removal of struct snd_soc_device. The pop time configuration should really be a property of the card not the codec but since DAPM currently uses the codec rather than the card using the codec is fine for now. Signed-off-by: Mark Brown commit a7fe49bf01dd64b3c73ad0e172f68bd03c813d65 Author: Takashi Iwai Date: Wed Dec 3 18:26:35 2008 +0100 ALSA: Add more documentation about HD-audio driver The file can be converted to PDF via asciidoc. Signed-off-by: Takashi Iwai commit 06be64a366885569f46a7e0e50b351266d28f5fc Author: Haiying Wang Date: Thu Nov 13 07:46:12 2008 -0600 powerpc/85xx: Don't reset the MPIC for CAMP mode on MPC8572DS The flag MPIC_WANTS_RESET shouldn't be set if we are doing cooperative asymmetric MP. The second linux shouldn't reset the pic or the first one gets very confused. Signed-off-by: Haiying Wang Signed-off-by: Kumar Gala commit c64ef80b517680f1e228b2ee55e3ce7cd94c7fe0 Author: Haiying Wang Date: Fri Nov 28 16:49:39 2008 -0500 powerpc/85xx: Add localbus node in mpc8572ds dts file Also add NOR and NAND flash partitions for mpc8572ds board Signed-off-by: Haiying Wang Signed-off-by: Kumar Gala commit 965dc5fc55fa0201fd8241ba7c0efc8f96f0ec84 Author: Martyn Welch Date: Fri Nov 7 14:15:42 2008 +0000 powerpc/86xx: Basic GPIO support for GE Fanuc SBC610 Basic support for the GPIO available on the SBC610 VPX Single Board Computer from GE Fanuc (PowerPC MPC8641D). This patch adds basic support for the GPIO in the devices I/O FPGA, the GPIO functionality is exposed through the AFIX pins on the backplane, unless used by an AFIX card. This code currently does not support switching between totem-pole and open-drain outputs (when used as outputs, GPIOs default to totem-pole). The interrupt capabilites of the GPIO lines is also not currently supported. Signed-off-by: Martyn Welch Signed-off-by: Kumar Gala commit 09a3fba8c132a55f153fd65fc1085b717a6193c8 Author: Anton Vorontsov Date: Tue Nov 11 18:31:39 2008 +0300 powerpc/qe: Move cmxgcr_lock definition from the ucc.c into the qe.c With this patch we can compile the qe_lib/usb.c without the UCC support (that is, without UCC_GETH and/or SERIAL_QE). Fixes following link error (CONFIG_SMP should be =y to trigger this): arch/powerpc/sysdev/built-in.o: In function `qe_usb_clock_set': (.text+0x3cae): undefined reference to `cmxgcr_lock' make: *** [.tmp_vmlinux1] Error 1 While at it, also add missing spinlock.h includes. Signed-off-by: Anton Vorontsov Acked-By: Timur Tabi Signed-off-by: Kumar Gala commit d3a8cdab2ff2f8acbe48e18ed471b0812785e390 Author: Martyn Welch Date: Thu Nov 20 08:52:09 2008 +0000 powerpc/86xx: Add use of Epson RTX-8581 RTC to GE Fanuc SBC610 dts Adding use of newly added Epson RTX-8581 real-time clock driver to GE Fanuc SBC610's dts file and adding driver to default config. Signed-off-by: Martyn Welch Signed-off-by: Kumar Gala commit 24a99596f7465274a8e65ddd29a7d9028969b9f9 Author: Kumar Gala Date: Wed Dec 3 09:31:35 2008 -0600 powerpc/85xx: Fix compile warnings in mpc85xx_mds.c arch/powerpc/platforms/85xx/mpc85xx_mds.c: In function 'board_fixups': arch/powerpc/platforms/85xx/mpc85xx_mds.c:244: warning: format '%x' expects type 'unsigned int', but argument 4 has type 'resource_size_t' arch/powerpc/platforms/85xx/mpc85xx_mds.c:250: warning: format '%x' expects type 'unsigned int', but argument 4 has type 'resource_size_t' Signed-off-by: Kumar Gala commit e8e1abe92fd7ea9d823a3aaf81d10e2cba593b6b Author: Steven Rostedt Date: Wed Dec 3 11:04:51 2008 -0500 ftrace: fix race in function graph during fork Impact: graph tracer race/crash fix There is a nasy race in startup of a new process running the function graph tracer. In fork.c: total_forks++; spin_unlock(¤t->sighand->siglock); write_unlock_irq(&tasklist_lock); ftrace_graph_init_task(p); proc_fork_connector(p); cgroup_post_fork(p); return p; The new task is free to run as soon as the tasklist_lock is released. This is before the ftrace_graph_init_task. If the task does run it will be using the same ret_stack and curr_ret_stack as the parent. This will cause crashes that are difficult to debug. This patch moves the ftrace_graph_init_task to just after the alloc_pid code. This fixes the above race. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 0a37119d963e876ca86912497346ec50dea2541b Author: Steven Rostedt Date: Wed Dec 3 11:04:50 2008 -0500 trace: fix output of stack trace Impact: fix to output of stack trace If a function is not found in the stack of the stack tracer, the number printed is quite strange. This fixes the algorithm to handle missing functions better. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 0f620830db0818ebe065b31c33892e8f0622e1b2 Author: Peter Gruber Date: Wed Dec 3 15:32:15 2008 +0100 ALSA: Reduce stall detection timeout in riptide.c Reduce the command timeout to 0.5sec. Should be enough to allow a working command interface but removes a RCU stall and slow resume on some revisions where the AC97 revision detection stalls in resume. Signed-off-by: Peter Gruber Signed-off-by: Takashi Iwai commit d5b26db2cfcf09f28f4839c8c3484279cd5ea5b3 Author: Kumar Gala Date: Wed Nov 19 09:35:56 2008 -0600 powerpc/85xx: Add support for SMP initialization Added 85xx specifc smp_ops structure. We use ePAPR style boot release and the MPIC for IPIs at this point. Additionally added routines for secondary cpu entry and initializtion. Signed-off-by: Andy Fleming Signed-off-by: Trent Piepho Signed-off-by: Kumar Gala commit 06b90969a7564fad888f67e9f7f4c3a51a16ef1d Author: Kumar Gala Date: Mon Dec 1 14:38:32 2008 -0600 powerpc/85xx: minor head_fsl_booke.S cleanup Removed unused branch labels Signed-off-by: Kumar Gala commit b3898895355f73973eb3aef3489e999d3fb8e2bc Author: Trent Piepho Date: Wed Nov 19 03:13:14 2008 -0800 powerpc: Better setup of boot page TLB entry The initial TLB mapping for the kernel boot didn't set the memory coherent attribute, MAS2[M], in SMP mode. If this code supported booting a secondary processor, which it doesn't yet, but if it did, then when a secondary processor boots, it would probably signal the primary processor by setting a variable called something like __secondary_hold_acknowledge. However, due to the lack of the M bit, the primary processor would not snoop the transaction (even if a transaction were broadcast). If primary CPU's L1 D-cache had a copy, it would not be flushed and the CPU would never see the ack. Which would have resulted in the primary CPU spinning for a long time, perhaps a full second before it gives up, while it would have waited for the ack from the secondary CPU that it wouldn't have been able to see because of the stale cache. The value of MAS2 for the boot page TLB1 entry is a compile time constant, so there is no need to calculate it in powerpc assembly language. Also, from the MPC8572 manual section 6.12.5.3, "Bits that represent offsets within a page are ignored and should be cleared." Existing code didn't clear them, this code does. The same when the page of KERNELBASE is found; we don't need to use asm to mask the lower 12 bits off. In the code that computes the address to rfi from, don't hard code the offset to 24 bytes, but have the assembler figure that out for us. Signed-off-by: Trent Piepho Signed-off-by: Kumar Gala commit 6a800f36acd5bf06b5fe2cb27c4d0524d60c3df5 Author: Liu Yu Date: Tue Oct 28 11:50:21 2008 +0800 powerpc: Add SPE/EFP math emulation for E500v1/v2 processors. This patch add the handlers of SPE/EFP exceptions. The code is used to emulate float point arithmetic, when MSR(SPE) is enabled and receive EFP data interrupt or EFP round interrupt. This patch has no conflict with or dependence on FP math-emu. The code has been tested by TestFloat. Now the code doesn't support SPE/EFP instructions emulation (it won't be called when receive program interrupt), but it could be easily added. Signed-off-by: Liu Yu Signed-off-by: Kumar Gala commit 033b8a333c66e0a7dc63132c1bd65175dc98bc25 Author: Liu Yu Date: Tue Oct 28 11:50:20 2008 +0800 powerpc/math-emu: Remove redundant 'ret' FP_DECL_EX is already used, so ret is redundant. And FP_SET_EXCEPTION will add status into return value. Signed-off-by: Liu Yu Signed-off-by: Kumar Gala commit 463a8c01e153c06480b862d83d6a71bf5666a577 Author: Liu Yu Date: Tue Oct 28 11:50:19 2008 +0800 powerpc/math-emu: Adopt new version of _FP_CHOOSENAN Move to using the same macro definition for _FP_CHOOSENAN as s390, sh, sparc32/64. The original author didn't understand this and matched what sparc64 was doing and they have updated to this definition. Signed-off-by: Liu Yu Signed-off-by: Kumar Gala commit cf03033658739accd24f18f864107151a2e9a796 Author: Liu Yu Date: Tue Oct 28 11:50:18 2008 +0800 powerpc/math-emu: Fix single float point division bug PowerPC float point division emulation is derived from gcc. I reported this problem on gcc maillist and got this reply: http://gcc.gnu.org/ml/gcc/2008-03/msg00543.html Since UDIV_NEEDS_NORMALIZATION is not used by kernel, we should use _FP_DIV_MEAT_1_udiv_norm to make sure the single float point is normalized before udiv_qrnnd. Signed-off-by: Liu Yu Signed-off-by: Kumar Gala commit 55b9121b4295a8260e52dd78327f1edd1e34feb2 Author: Kumar Gala Date: Tue Oct 28 08:55:05 2008 -0500 powerpc: Remove unncessary SPE related compiler flag After testing of various compiler flag combinations by Nate Case it was determined that -mabi=no-spe has no impact on the compiler generating SPE instructions. Only -mno-spe and -mspe=no do. Signed-off-by: Kumar Gala commit 0640f84fac8a8aa8e7911c950cd9a4b0199711f6 Merge: 8c2f767bf3c4a7932898e657c6b12a2234cd2eca ff7a3267368634e368ebaac68d5e3abf129edd1d Author: Takashi Iwai Date: Wed Dec 3 14:43:14 2008 +0100 Merge branch 'topic/hda-modularize' into topic/hda commit 6f2a974bfc8d3be7a30674c71e2fef003b39a8d2 Author: Daniel Mack Date: Wed Dec 3 11:44:17 2008 +0100 ASoC: tlv320aic3x: headset/button press support - Add aic3x_set_headset_detection() function to define the headset detection mode for tlv32aic3x chips - added aic3x_button_pressed() - Read from the real-time registers in aic3x_headset_detected() to query headset presence without an occured interrupt Signed-off-by: Daniel Mack Signed-off-by: Mark Brown commit 4b4fffdd9d179677cb030e97869286b62df25adc Author: Mark Brown Date: Wed Dec 3 11:21:08 2008 +0000 ASoC: Fix WM8903 right mixer bypass path Signed-off-by: Mark Brown commit 5920b45303291057fef827f5bdafe04001c1bbae Author: Grazvydas Ignotas Date: Tue Dec 2 20:48:58 2008 +0200 ASoC: TWL4030: Add input selection and gain controls The TWL4030 codec device has two ADCs. Both of them can have several inputs routed to them, but TRM says that only one source can be selected for every ADC, even though every source has a dedicated bit in the registers. This patch adds input source controls. It modifies default register values to have no inputs selected and ADCs disabled. When some input is selected, control handlers enable apropriate input amplifier and ADC. If a microphone is selected, bias power is automatically enabled. When some input is deselected, unused chip parts are disabled. Microphone and line input recording tested on OMAP3 pandora board. Signed-off-by: Grazvydas Ignotas Signed-off-by: Mark Brown commit 7947cf0dd4b6a2bb06c57971502fb81c76a66f2d Author: Hendrik Brueckner Date: Tue Nov 18 01:28:28 2008 +0000 hvc_console: Always schedule resize work on resize The test to check for a new winsize runs out-of-sync with the underlying tty. After a tty has been released and initialized again, the winsize might differ between the tty and the hp struct. The solution is to simply remove the check and always schedule the resize work. Signed-off-by: Hendrik Brueckner Acked-by: Christian Borntraeger Signed-off-by: Paul Mackerras commit 3d26825ec03f623f20ba860e6e6113ab2d0bb0f1 Author: roel kluin Date: Tue Dec 2 11:21:43 2008 +0000 powerpc: Make open count variables signed in hvcs/hvsi/hvc_console Otherwise the tests for count < 0 will never be true. Signed-off-by: Roel Kluin Signed-off-by: Paul Mackerras commit dc42149fccda63a5d2fa4457808c3489a5111c5e Author: Nicolas Palix Date: Tue Dec 2 03:38:55 2008 +0000 drivers/hvc: Add missing of_node_put of_node_put is needed before discarding a value received from of_find_node_by_name, e.g., in error handling code or when the device node is no longer used. The semantic match that catches the bug is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression struct device_node *n; position p1, p2; statement S1,S2; expression E,E1; expression *ptr != NULL; @@ ( if (!(n@p1 = of_find_node_by_name(...))) S1 | n@p1 = of_find_node_by_name(...) ) <... when != of_node_put(n) when != if (...) { <+... of_node_put(n) ...+> } when != true !n || ... when != n = E when != E = n if (!n || ...) S2 ...> ( return \(0\|<+...n...+>\|ptr\); | return@p2 ...; | n = E1 | E1 = n ) @script:python@ p1 << r.p1; p2 << r.p2; @@ print "* file: %s of_find_node_by_name %s return %s" % (p1[0].file,p1[0].line,p2[0].line) // Signed-off-by: Nicolas Palix Signed-off-by: Julia Lawall Acked-by: Stephen Rothwell Signed-off-by: Paul Mackerras commit b908b53d580c3e9aba81ebe3339c5b7b4fa8031d Author: Anton Vorontsov Date: Mon Dec 1 06:30:04 2008 +0000 of/gpio: Implement of_get_gpio_flags() This adds a new function, of_get_gpio_flags, which is like of_get_gpio(), but accepts a new "flags" argument. This new function will be used by the drivers that need to retrieve additional GPIO information, such as active-low flag. Also, this changes the default ("simple") .xlate routine to warn about bogus (< 2) #gpio-cells usage: the second cell should always be present for GPIO flags. Signed-off-by: Anton Vorontsov Signed-off-by: Paul Mackerras commit 2fd091f3eebc5accefa5f77ff04436982765d15c Author: roel kluin Date: Sat Nov 29 01:17:27 2008 +0000 powerpc/macintosh: Fix unsigned check in smu_sat_get_sdb_partition() i2c_smbus_read_word_data() returns a s32, which may be negative but unsigned len cannot be negative. Signed-off-by: Roel Kluin Signed-off-by: Paul Mackerras commit e6a437eba09f1c3505bedf7a9a9766a878ca09fa Author: Anton Vorontsov Date: Fri Nov 28 09:13:45 2008 +0000 of/i2c: Fill the archdata for I2C devices For I2C devices we just setting the node pointer in the archdata. This is needed so that the I2C devices could find their OF tree nodes. Signed-off-by: Anton Vorontsov Acked-by: Grant Likely Signed-off-by: Paul Mackerras commit 3f3b1632022fcc8317fa3b3c1236471415b3a6b8 Author: Anton Vorontsov Date: Fri Nov 28 09:13:23 2008 +0000 powerpc and sparc: Introduce dev_archdata node accessors The name of the device_node field differ across the platforms, so we have to implement inlined accessors. This is needed to avoid ugly #ifdef in the generic code. Signed-off-by: Anton Vorontsov Acked-by: David S. Miller Acked-by: Grant Likely Signed-off-by: Paul Mackerras commit a0e2f9f4a2487572803d5a00c7302db30e4c60d3 Author: Sonny Rao Date: Sun Nov 9 14:15:11 2008 +0000 powerpc/BSR: Support multiple OF-node description of BSR This adds support for multiple BSR nodes in the OF device tree. Previously, the BSR driver only supported a single OF node describing a BSR. Apparently when an LPAR is set to use "all system resources" the BSR appears as a single node, but when it is handed out in pieces, each 8 byte piece gets its own node. So, this keeps a list of BSR devices instead of the array and includes all nodes. Also, this makes the code be more inclusive of what BSR devices we accept by only checking compatibility and not the device name property (which might change in the future versions of BSR). Signed-off-by: Sonny Rao Signed-off-by: Paul Mackerras commit 6358d6cb328a772eb6f02c870da61709d539480f Author: Sebastien Dugue Date: Thu Nov 27 01:19:18 2008 +0000 powerpc/ibmebus: Get rid of the IRQ mapping in ibmebus_free_irq() ibmebus_free_irq() frees the IRQ but does not remove its mapping, which results in stale entries in the map. This fixes it by adding a call to irq_dispose_mapping() in ibmebus_free_irq(). Signed-off-by: Sebastien Dugue Cc: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 786b32f892dc341b607445bdef29d8e41a840925 Author: Julia Lawall Date: Sun Nov 23 00:48:56 2008 +0000 powerpc: Eliminate NULL test and memset after alloc_bootmem As noted by Akinobu Mita in commit b1fceac2 ("x86: remove unnecessary memset and NULL check after alloc_bootmem()"), alloc_bootmem and related functions never return NULL and always return a zeroed region of memory. Thus a NULL test or memset after calls to these functions is unnecessary. This was fixed using the following semantic patch. (http://www.emn.fr/x-info/coccinelle/) // @@ expression E; statement S; @@ E = \(alloc_bootmem\|alloc_bootmem_low\|alloc_bootmem_pages\|alloc_bootmem_low_pages\|alloc_bootmem_node\|alloc_bootmem_low_pages_node\|alloc_bootmem_pages_node\)(...) ... when != E ( - BUG_ON (E == NULL); | - if (E == NULL) S ) @@ expression E,E1; @@ E = \(alloc_bootmem\|alloc_bootmem_low\|alloc_bootmem_pages\|alloc_bootmem_low_pages\|alloc_bootmem_node\|alloc_bootmem_low_pages_node\|alloc_bootmem_pages_node\)(...) ... when != E - memset(E,0,E1); // Signed-off-by: Julia Lawall Signed-off-by: Paul Mackerras commit 15e09c0ecaab4a1b4a7ed69db536c38948b92279 Author: Becky Bruce Date: Thu Nov 20 06:49:16 2008 +0000 powerpc: Add sync_*_for_* to dma_ops We need to swap these out once we start using swiotlb, so add them to dma_ops. Create CONFIG_PPC_NEED_DMA_SYNC_OPS Kconfig option; this is currently enabled automatically if we're CONFIG_NOT_COHERENT_CACHE. In the future, this will also be enabled for builds that need swiotlb. If PPC_NEED_DMA_SYNC_OPS is not defined, the dma_sync_*_for_* ops compile to nothing. Otherwise, they access the dma_ops pointers for the sync ops. This patch also changes dma_sync_single_range_* to actually sync the range - previously it was using a generous dma_sync_single. dma_sync_single_* is now implemented as a dma_sync_single_range with an offset of 0. Signed-off-by: Becky Bruce Signed-off-by: Paul Mackerras commit c4d04be11f99cc9ce4e3801a5da235727db704a9 Author: Johannes Berg Date: Thu Nov 20 03:24:07 2008 +0000 powerpc: Allow the max stack trace depth to be configured On my screen, when something crashes, I only have space for maybe 16 functions of the stack trace before the information above it scrolls off the screen. It's easy to hack the kernel to print out only that much, but it's harder to remember to do it. This introduces a config option for it so that I can keep the setting in my config. Signed-off-by: Johannes Berg Signed-off-by: Paul Mackerras commit 0186f47e703fb7aa14b54459d642ef5374b3a685 Author: Kumar Gala Date: Wed Nov 19 12:50:04 2008 +0000 powerpc: Use RCU based pte freeing mechanism for all powerpc Refactor the RCU based pte free code that was used on ppc64 to be used on all powerpc. Additionally refactor pte_free() & pte_free_kernel() into common code between ppc32 & ppc64. Signed-off-by: Kumar Gala Signed-off-by: Paul Mackerras commit df3b8611554e389e703fa753540289874fa5126c Author: Kumar Gala Date: Wed Nov 19 05:53:24 2008 +0000 powerpc: Add a local_flush_tlb_page to handle kmap_atomic invalidates The tlb invalidates in kmap_atomic/kunmap_atomic can be called from IRQ context, however they are only local invalidates (on the processor that the kmap was called on). In the future we want to use IPIs to do tlb invalidates this causes issue since flush_tlb_page() is considered a broadcast invalidate. Add local_flush_tlb_page() as a non-broadcast invalidate and use it in kmap_atomic() since we don't have enough information in the flush_tlb_page() call to determine its local. Signed-off-by: Kumar Gala Acked-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit f4f3a1261ad70988ad45614ebc87e553143a332b Author: Kumar Gala Date: Wed Nov 19 05:53:04 2008 +0000 powerpc: hash_page_sync should only be used on SMP & STD_MMU_32 Clean up the ifdefs so we only use hash_page_sync if we have CONFIG_SMP && CONFIG_PPC_STD_MMU_32. Signed-off-by: Kumar Gala Acked-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 4ee5f55175a85fc179c93f00dd7f6a99c896f4d6 Author: Benjamin Herrenschmidt Date: Thu Nov 27 20:05:05 2008 +0000 powerpc: Fix ppc32 mm_struct CPU tracking in SMP The 32-bit hash code didn't need it so far so we don't update mm->cpu_vm_mask on context switch. This however will break when we merge the RCU based page table freeing patch and other upcoming 32-bit embedded SMP work, so this adds the update. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 1b98326b91eb9eea346945779e1f245aa66b17ce Author: Kumar Gala Date: Wed Nov 19 04:39:53 2008 +0000 powerpc: Add MSR[CE, DE] to the MSR bits we print on show_regs() Signed-off-by: Kumar Gala Signed-off-by: Paul Mackerras commit 764f3b95131a7ce5c992e3d00caf590fcada2f7b Author: Ingo Molnar Date: Wed Dec 3 10:33:58 2008 +0100 tracing/function-graph-tracer: enabled by default CONFIG_FUNCTION_GRAPH_TRACER depends on FUNCTION_TRACER already, (turning it non-default) so it so making it default-n is pointless. So enable it by default - it's a nice extension of the function tracer. Signed-off-by: Ingo Molnar commit 527491885554002837b5742202adc0ab5f536e54 Merge: cea555d384b85271035814c5adad23e6c7fc5d2a 2434bbb30e79468c49cff3cff6005236f55ed188 Author: Paul Mackerras Date: Wed Dec 3 20:11:06 2008 +1100 Merge branch 'merge' commit 29fa0b301bc823016d1a3bed41c36a8977ef9947 Author: Wei Yongjun Date: Wed Dec 3 00:33:09 2008 -0800 xfrm: Cleanup for unlink SPD entry Used __xfrm_policy_unlink() to instead of the dup codes when unlink SPD entry. Signed-off-by: Wei Yongjun Signed-off-by: David S. Miller commit 22d55328b7d27694718f5d64a53d2bddbbe173a5 Merge: 3f8c6c9c7739d18e4b75902fdcbf6c3ba98dc123 d5654efd3ff1cd0baa935a0c9a5d89862f07d009 Author: David S. Miller Date: Wed Dec 3 00:29:24 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 commit 166d3c7994d79ab3f78f420607283361ff5cce79 Author: Frederic Weisbecker Date: Wed Dec 3 02:32:12 2008 +0100 tracing/function-graph-tracer: improve duration output Impact: better trace output of duration for long calls The old duration output didn't exceeded 9999.999 us to fit the column and the nanosecs were always 3 numbers. As Ingo suggested, it's better to have the whole microseconds elapsed time and shift the nanosecs precision if needed to fit the maximum 7 numbers. And usec need more number, the case should be rare and important enough to break a bit the column alignment to show it. So, depending of the duration value, we now have these patterns: u.nnn us uu.nnn us uuu.nnn us uuuu.nnn us uuuuu.nn us uuuuuu.n us uuuuuuuu..... us Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 11e84acc400921743cc8d488e4a265cd98a655c7 Author: Frederic Weisbecker Date: Wed Dec 3 02:30:37 2008 +0100 tracing/function-graph-tracer: display unified style cmdline and pid Impact: extend function-graph output: let one know which thread called a function This patch implements a helper function to print the couple cmdline/pid. Its output is provided during task switching and on each row if the new "funcgraph-proc" defualt-off option is set through trace_options file. The output is center aligned and never exceeds 14 characters. The cmdline is truncated over 7 chars. But note that if the pid exceeds 6 characters, the column will overflow (but the situation is abnormal). Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 62679efe0a5f02987a621942afc5979a80a6ca5a Author: Steven Rostedt Date: Tue Dec 2 23:50:06 2008 -0500 ftrace: add checks on ret stack in function graph Import: robustness checks Add more checks in the function graph code to detect errors and perhaps print out better information if a bug happens. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit e49dc19c6a19ea112fcb94b7c62ec62cdd5c08aa Author: Steven Rostedt Date: Tue Dec 2 23:50:05 2008 -0500 ftrace: function graph return for function entry Impact: feature, let entry function decide to trace or not This patch lets the graph tracer entry function decide if the tracing should be done at the end as well. This requires all function graph entry functions return 1 if it should trace, or 0 if the return should not be traced. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 7ee991fbc6f947e9b04f29c9c6c1d057d0671a16 Author: Steven Rostedt Date: Tue Dec 2 23:50:04 2008 -0500 ftrace: print real return in dumpstack for function graph Impact: better dumpstack output I noticed in my crash dumps and even in the stack tracer that a lot of functions listed in the stack trace are simply return_to_handler which is ftrace graphs way to insert its own call into the return of a function. But we lose out where the actually function was called from. This patch adds in hooks to the dumpstack mechanism that detects this and finds the real function to print. Both are printed to let the user know that a hook is still in place. This does give a funny side effect in the stack tracer output: Depth Size Location (80 entries) ----- ---- -------- 0) 4144 48 save_stack_trace+0x2f/0x4d 1) 4096 128 ftrace_call+0x5/0x2b 2) 3968 16 mempool_alloc_slab+0x16/0x18 3) 3952 384 return_to_handler+0x0/0x73 4) 3568 -240 stack_trace_call+0x11d/0x209 5) 3808 144 return_to_handler+0x0/0x73 6) 3664 -128 mempool_alloc+0x4d/0xfe 7) 3792 128 return_to_handler+0x0/0x73 8) 3664 -32 scsi_sg_alloc+0x48/0x4a [scsi_mod] As you can see, the real functions are now negative. This is due to them not being found inside the stack. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 044fa782ebb9472cf5253e95d9a625fd4c0bdd99 Author: Steven Rostedt Date: Tue Dec 2 23:50:03 2008 -0500 ring-buffer: change "page" variable names to "bpage" Impact: clean up Andrew Morton pointed out that the kernel convention of a variable named page should be of type page struct. The ring buffer uses a variable named "page" for a pointer to something else. This patch converts those to be called "bpage" (as in "buffer page"). Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 14a866c567e040ccf6240d68b083dd1dbbde63e6 Author: Steven Rostedt Date: Tue Dec 2 23:50:02 2008 -0500 ftrace: add ftrace_graph_stop() Impact: new ftrace_graph_stop function While developing more features of function graph, I hit a bug that caused the WARN_ON to trigger in the prepare_ftrace_return function. Well, it was hard for me to find out that was happening because the bug would not print, it would just cause a hard lockup or reboot. The reason is that it is not safe to call printk from this function. Looking further, I also found that it calls unregister_ftrace_graph, which grabs a mutex and calls kstop machine. This would definitely lock the box up if it were to trigger. This patch adds a fast and safe ftrace_graph_stop() which will stop the function tracer. Then it is safe to call the WARN ON. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit bb4304c71c97bf727ec43cd2f195c2c237c27fd3 Author: Steven Rostedt Date: Tue Dec 2 15:34:09 2008 -0500 ftrace: have function graph use mcount caller address Impact: consistency change for function graph This patch makes function graph record the mcount caller address the same way the function tracer does. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 347fdd9dd4e5d3f3a4e415925c35bdff1d59c3a9 Author: Steven Rostedt Date: Tue Dec 2 15:34:08 2008 -0500 ftrace: clean up function graph asm Impact: clean up There exists macros for x86 asm to handle x86_64 and i386. This patch updates function graph asm to use them. Signed-off-by: Steven Rostedt Acked-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 8789a9e7df6bf9b93739c4c7d4e380725bc9e936 Author: Steven Rostedt Date: Tue Dec 2 15:34:07 2008 -0500 ring-buffer: read page interface Impact: new API to ring buffer This patch adds a new interface into the ring buffer that allows a page to be read from the ring buffer on a given CPU. For every page read, one must also be given to allow for a "swap" of the pages. rpage = ring_buffer_alloc_read_page(buffer); if (!rpage) goto err; ret = ring_buffer_read_page(buffer, &rpage, cpu, full); if (!ret) goto empty; process_page(rpage); ring_buffer_free_read_page(rpage); The caller of these functions must handle any waits that are needed to wait for new data. The ring_buffer_read_page will simply return 0 if there is no data, or if "full" is set and the writer is still on the current page. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit abc9b56d66fbd4d93302ef4bf6fa726e1b8255f9 Author: Steven Rostedt Date: Tue Dec 2 15:34:06 2008 -0500 ring-buffer: move some metadata into buffer page Impact: get ready for splice changes This patch moves the commit and timestamp into the beginning of each data page of the buffer. This change will allow the page to be moved to another location (disk, network, etc) and still have information in the page to be able to read it. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit a5e25883a445dce94a087ca479b21a5959cd5c18 Author: Steven Rostedt Date: Tue Dec 2 15:34:05 2008 -0500 ftrace: replace raw_local_irq_save with local_irq_save Impact: fix for lockdep and ftrace The raw_local_irq_save/restore confuses lockdep. This patch converts them to the local_irq_save/restore variants. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit dfdc5437bd62dd6a26961e27f26b671374749875 Merge: f0461d0146ee30927bc7efa2ae24ea8c6693b725 061e41fdb5047b1fb161e89664057835935ca1d2 878719e831d9e076961aa15d4049a57a6668c67a Author: Ingo Molnar Date: Wed Dec 3 08:54:47 2008 +0100 Merge commit 'v2.6.28-rc7'; branch 'x86/dumpstack' into tracing/ftrace Merge x86/dumpstack into tracing/ftrace because upcoming ftrace changes depend on cleanups already in x86/dumpstack. Also merge to latest upstream -rc. commit f0461d0146ee30927bc7efa2ae24ea8c6693b725 Merge: 66eafebc1086014709dc38f52ddcb3d67d9b346c 48d68b20d00865035b8b65e69af343d0f53fac9d Author: Ingo Molnar Date: Wed Dec 3 08:49:21 2008 +0100 Merge branches 'tracing/ftrace' and 'tracing/function-graph-tracer' into tracing/core commit 181de82ee3ffda1175f89d50c991dae31b79280c Author: FUJITA Tomonori Date: Wed Dec 3 14:53:04 2008 +0900 x86: remove dead BIO_VMERGE_BOUNDARY definition Impact: cleanup, remove dead code The block layer dropped the virtual merge feature (b8b3e16cfe6435d961f6aaebcfd52a1ff2a988c5). BIO_VMERGE_BOUNDARY definition is meaningless now. Signed-off-by: FUJITA Tomonori Acked-by: Jens Axboe Signed-off-by: Ingo Molnar commit 6083aa485c86933ee444dc2242270d37ea4664cb Merge: dcb7731a185efbf3d800618d874af99895df5afb 93093d099e5dd0c258fd530c12668e828c20df41 Author: Ingo Molnar Date: Wed Dec 3 08:25:56 2008 +0100 Merge branch 'x86/io' into x86/iommu Merge x86/io into x86/iommu due to a small patch conflict in io.h. commit 3f8c6c9c7739d18e4b75902fdcbf6c3ba98dc123 Merge: aa2ba5f1082dc705745899584aac8416d710c056 9a5df92374d65e2886b92e98dd7d873c533a83ff Author: David S. Miller Date: Tue Dec 2 22:38:02 2008 -0800 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-next-2.6 commit aa2ba5f1082dc705745899584aac8416d710c056 Merge: 68024541e2e5a8f35e281daaa5068a29e2a538a5 f6f7b52e2f6149d2ee365717afff315b05720162 Author: David S. Miller Date: Tue Dec 2 19:50:27 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/ixgbe/ixgbe_main.c drivers/net/smc91x.c commit 68024541e2e5a8f35e281daaa5068a29e2a538a5 Merge: ca17584bf2ad1b1e37a5c0e4386728cc5fc9dabc 39da5814db81e8fe9782ae5ea24c0fdfcf2adc96 Author: David S. Miller Date: Tue Dec 2 15:05:06 2008 -0800 Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus commit ca17584bf2ad1b1e37a5c0e4386728cc5fc9dabc Author: Stephen Hemminger Date: Tue Dec 2 15:00:28 2008 -0800 mac8390: update to net_device_ops Another related 8390 driver. Since this is for nubus, not sure if anyone still has the hardware? Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit b9a9b4b0429d0c0e4655d531a57a6424d972433c Author: Stephen Hemminger Date: Tue Dec 2 14:52:25 2008 -0800 etherh: build fix for net-next Fix build of ARM etherh driver with new net_device_ops. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit dcb7731a185efbf3d800618d874af99895df5afb Author: Joerg Roedel Date: Tue Dec 2 20:16:03 2008 +0100 x86: fix broken flushing in GART nofullflush path Impact: remove stale IOTLB entries In the non-default nofullflush case the GART is only flushed when next_bit wraps around. But it can happen that an unmap operation unmaps memory which is behind the current next_bit location. If these addresses are reused it may result in stale GART IO/TLB entries. Fix this by setting the GART next_bit always behind an unmapped location. Signed-off-by: Joerg Roedel Signed-off-by: Ingo Molnar commit 87689d567a45f80416feea0a2aa6d3a2a6b8963a Author: Mark Brown Date: Tue Dec 2 16:01:14 2008 +0000 ASoC: Push platform registration down into the card As part of the deprecation of snd_soc_device push the registration of the platform down into the card structure. Signed-off-by: Mark Brown commit 96841bae6ebfede07294447ad2de9e6385ae9fb5 Author: Mark Brown Date: Tue Dec 2 15:15:50 2008 +0000 ALSA: ac97 - Include ac97_codec.h for ac97_bus_type declaration This fixes a sparse warning caused by the lack of a connection with the prototype for ac97_bus_type. Signed-off-by: Mark Brown Signed-off-by: Takashi Iwai commit 6308419a199eed66086cd756ab8dc81b88d54a6b Author: Mark Brown Date: Tue Dec 2 15:08:03 2008 +0000 ASoC: Push workqueue data into snd_soc_card ASoC v2 does not use the struct snd_soc_device at runtime, using struct snd_soc_card as the root of the card. Begin removing data from snd_soc_device by pushing the workqueue data into snd_soc_card, using a backpointer to the snd_soc_device to keep things going for the time being. Signed-off-by: Mark Brown commit 39da5814db81e8fe9782ae5ea24c0fdfcf2adc96 Author: Mark McLoughlin Date: Wed Nov 26 13:58:11 2008 +0000 virtio_net: large tx MTU support We don't really have a max tx packet size limit, so allow configuring the device with up to 64k tx MTU. Signed-off-by: Mark McLoughlin Signed-off-by: Rusty Russell commit 8daa19051e1c7369c89ace7b18e74fe1f55dfa29 Author: Niels de Vos Date: Mon Dec 1 14:13:53 2008 -0800 x86, apm: remove CONFIG_APM_REAL_MODE_POWER_OFF in favor of a kernel parameter Remove CONFIG_APM_REAL_MODE_POWER_OFF like CONFIG_APM_POWER_OFF which has been done for linux-2.2.14pre8 (http://lkml.org/lkml/1999/11/23/3). Re-introducing CONFIG_APM_POWER_OFF got nack-ed. Stephen didn't bother to remove CONFIG_APM_REAL_MODE_POWER_OFF, let's get rid of it now. Reference: http://lkml.org/lkml/2008/5/7/97 Signed-off-by: Andrew Morton Signed-off-by: Ingo Molnar commit 48d68b20d00865035b8b65e69af343d0f53fac9d Author: Frederic Weisbecker Date: Tue Dec 2 00:20:39 2008 +0100 tracing/function-graph-tracer: support for x86-64 Impact: extend and enable the function graph tracer to 64-bit x86 This patch implements the support for function graph tracer under x86-64. Both static and dynamic tracing are supported. This causes some small CPP conditional asm on arch/x86/kernel/ftrace.c I wanted to use probe_kernel_read/write to make the return address saving/patching code more generic but it causes tracing recursion. That would be perhaps useful to implement a notrace version of these function for other archs ports. Note that arch/x86/process_64.c is not traced, as in X86-32. I first thought __switch_to() was responsible of crashes during tracing because I believed current task were changed inside but that's actually not the case (actually yes, but not the "current" pointer). So I will have to investigate to find the functions that harm here, to enable tracing of the other functions inside (but there is no issue at this time, while process_64.c stays out of -pg flags). A little possible race condition is fixed inside this patch too. When the tracer allocate a return stack dynamically, the current depth is not initialized before but after. An interrupt could occur at this time and, after seeing that the return stack is allocated, the tracer could try to trace it with a random uninitialized depth. It's a prevention, even if I hadn't problems with it. Signed-off-by: Frederic Weisbecker Cc: Steven Rostedt Cc: Tim Bird Signed-off-by: Ingo Molnar commit 16950e09cf07b54abb78dd09f8ef3c85c6bdc9de Author: Takashi Iwai Date: Tue Dec 2 09:31:16 2008 +0100 ALSA: emu10k1 - Add capture boost mixer switch for Audigy Due to the conversion (drop) from 24bit in the DSP to 16bit in AC97, the maximum capture level on Audigy seems lower than it could be. This patch adds a workaround to enable the artificial capture boost switch. When this switch is on, the whole analog capature level is boost up. However, this results in the lower capture resolution. Signed-off-by: Takashi Iwai commit 66eafebc1086014709dc38f52ddcb3d67d9b346c Author: Liming Wang Date: Tue Dec 2 10:33:08 2008 +0800 function trace: fix a bug of single thread function trace Impact: fix "no output from tracer" bug caused by ftrace_update_pid_func() When disabling single thread function trace using "echo -1 > set_ftrace_pid", the normal function trace has to restore to original function, otherwise the normal function trace will not work well. Without this commit, something like below: $ ps |grep 850 850 root 2556 S -/bin/sh $ echo 850 > /debug/tracing/set_ftrace_pid $ echo function > /debug/tracing/current_tracer $ echo 1 > /debug/tracing/tracing_enabled $ sleep 1 $ echo 0 > /debug/tracing/tracing_enabled $ cat /debug/tracing/trace_pipe |wc -l 59704 $ echo -1 > /debug/tracing/set_ftrace_pid $ echo 1 > /debug/tracing/tracing_enabled $ sleep 1 $ echo 0 > /debug/tracing/tracing_enabled $ more /debug/tracing/trace_pipe <====== nothing output now! it should output trace record. Signed-off-by: Liming Wang Signed-off-by: Ingo Molnar commit 222658e08f72cd539d01f3aabdc258c596f487e2 Merge: 74bf3cabc306f31ddd02f2c1b0540a6cfcacc593 65c6dc6adbe7ee0acf207445243400a68c77af15 c072c24975ec4f0ccfcb6f5c8a8040b6eb75ef8f d51090b34602a20984ab0312ef04e47069c0aec6 a838c2ec6ea1f18431da74dfe4978c57355b95f3 f1eecf0e4f0796911cc076f38fcf05fea0b353d5 604094f4615180f71da799e7e5b191f5c2a42a28 f08340c5d68ab621f377c108637e2d8e95b3e5d4 Author: Ingo Molnar Date: Tue Dec 2 09:20:44 2008 +0100 Merge branches 'tracing/branch-tracer', 'tracing/ftrace', 'tracing/function-graph-tracer', 'tracing/markers', 'tracing/powerpc', 'tracing/stack-tracer' and 'tracing/tracepoints' into tracing/core commit 74bf3cabc306f31ddd02f2c1b0540a6cfcacc593 Merge: c7cc77307669336a08928ab8668bdb3f3bcc021b 4f5a7f40ddbae98569acbb99118a98570315579c Author: Ingo Molnar Date: Tue Dec 2 09:20:29 2008 +0100 Merge branch 'tracing/urgent' into tracing/core Conflicts: kernel/trace/ring_buffer.c commit 6976a1d6c222c50ac93d2273b9cf57e6fd047e59 Author: Eric Dumazet Date: Mon Dec 1 23:37:17 2008 -0800 net: percpu_counter_inc() should not be called in BH-disabled section Based upon a lockdep report by Alexey Dobriyan. I checked all per_cpu_counter_xxx() usages in network tree, and I think all call sites are BH enabled except one in inet_csk_listen_stop(). commit dd24c00191d5e4a1ae896aafe33c6b8095ab4bd1 (net: Use a percpu_counter for orphan_count) replaced atomic_t orphan_count to a percpu_counter. atomic_inc()/atomic_dec() can be called from any context, while percpu_counter_xxx() should be called from a consistent state. For orphan_count, this context can be the BH-enabled one. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 422d9cdcb85b3622d08a590fed66021af7aea333 Author: Gerrit Renker Date: Mon Dec 1 23:34:01 2008 -0800 dccp: Feature activation handlers This patch provides the post-processing of feature negotiation state, after the negotiation has completed. To this purpose, handlers are used and added to the dccp_feat_table. Each handler is passed a boolean flag whether the RX or TX side of the feature is meant. Several handlers are provided already, new handlers can easily be added. The initialisation is now fully dynamic, i.e. CCIDs are activated only after the feature negotiation. The integration of this dynamic activation is done in the subsequent patches. Thanks to Wei Yongjun for pointing out the necessity of skipping over empty Confirm options while copying the negotiated feature values. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit b1ad00422ecba0449f8e3a8f2ec9267bc994bf8f Author: Gerrit Renker Date: Mon Dec 1 23:33:18 2008 -0800 dccp: Processing Confirm options Analogous to the previous patch, this adds code to interpret incoming Confirm feature-negotiation options. Both functions operate on the feature-negotiation list of either the request_sock (server) or the dccp_sock (client). Thanks to Wei Yongjun for pointing out that it is overly restrictive to check the entire list of confirmed SP values. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit e77b8363b2ea7c0d89919547c1a8b0562f298b57 Author: Gerrit Renker Date: Mon Dec 1 23:32:35 2008 -0800 dccp: Process incoming Change feature-negotiation options This adds/replaces code for processing incoming ChangeL/R options. The main difference is that: * mandatory FN options are now interpreted inside the function (there are too many individual cases to do this externally); * the function returns an appropriate Reset code or 0, which is then used to fill in the data for the Reset packet. Old code, which is no longer used or referenced, has been removed. Signed-off-by: Gerrit Renker Signed-off-by: David S. Miller commit 75757a7d0c54f8fdd414c74a6005d275032b0115 Author: Gerrit Renker Date: Mon Dec 1 23:31:04 2008 -0800 dccp: Preference list reconciliation This provides two functions to * reconcile preference lists (with appropriate return codes) and * reorder the preference list if successful reconciliation changed the preferred value. The patch also removes the old code for processing SP/NN Change options, since new code to process these is mostly there already; related references have been commented out. The code for processing Change options follows in the next patch. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 8b7b6c75c6387527b195bb69100182288da94f84 Author: Gerrit Renker Date: Mon Dec 1 23:29:30 2008 -0800 dccp: Integrate feature-negotiation insertion code The patch implements insertion of feature negotiation at the server (listening and request socket) and the client (connecting socket). In dccp_insert_options(), several statements have been grouped together now to achieve (it is hoped) better efficiency by reducing the number of tests each packet has to go through: - Ack Vectors are sent if the packet is neither a Data or a Request packet; - a previous issue is corrected - feature negotiation options are allowed on DataAck packets (5.8). Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 0971d17ca3d80f61863f4750091a64448bf91600 Author: Gerrit Renker Date: Mon Dec 1 23:27:31 2008 -0800 dccp: Insert feature-negotiation options into skb This patch replaces the earlier insertion routine from options.c, so that code specific to feature negotiation can remain in feat.c. This is possible by calling a function already existing in options.c. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 7c37d74474c8ee8ddcd5a2d2a9571d4a1290c844 Author: Ralph Campbell Date: Mon Dec 1 20:59:08 2008 -0800 IB/ipath: Improve UD loopback performance by allocating temp array only once Receive work queue entries are checked for L_Key validity, and pointers to the memory region structure are saved in an allocated structure. For UD loopback packets, this structure is allocated and freed for each packet. This patch changes that to allocate/free during QP creation and destruction. Signed-off-by: Ralph Campbell Signed-off-by: Roland Dreier commit 64f22fa17c1a531e682ebc882566856ea5718495 Author: Michael Ellerman Date: Mon Dec 1 20:59:07 2008 -0800 IB/ipath: Fix pointer-to-pointer thinko in ipath_fs.c The return from lookup_one_len() is assigned to *dentry, so that's what we should be checking with IS_ERR(). Signed-off-by: Michael Ellerman Signed-off-by: Roland Dreier commit 75c21ae9aa75b0452318d05f737ea838672137f5 Author: Joachim Fenkes Date: Mon Dec 1 20:58:57 2008 -0800 IB/ehca: Fix locking for shca_list_lock shca_list_lock is taken from softirq context in ehca_poll_eqs, so we need to lock IRQ safe elsewhere. Found by lockdep. Signed-off-by: Michael Ellerman Signed-off-by: Joachim Fenkes Signed-off-by: Roland Dreier commit 0ecfe7987855d21c2a89ffe003ddf0ee11b42d47 Author: Mark Brown Date: Mon Dec 1 17:59:25 2008 +0000 ASoC: Don't free static data in WM9713 Signed-off-by: Mark Brown commit 4290239cd05b6323da87b5e7e7db4c673bff5359 Author: Peter Ujfalusi Date: Mon Dec 1 10:03:47 2008 +0200 ASoC: TWL4030: Add volume controls for outputs All outputs have dedicated gain controls except the HandsFree output. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit d889a72c5c71161d6f934f9d7fca0e5b7e52bc08 Author: Peter Ujfalusi Date: Mon Dec 1 10:03:46 2008 +0200 ASoC: TWL4030: Change the common playback volume controls Add Playback volume controls for all four DACs. All four paths has three levels of volume controls: Digital Fine gain, Digital Coarse gain, Analog gain. The controls are named to reflect their connection to the DACs. Per DAC volume can be performed, if needed: amixer sset 'DAC1 Analog' 5,10 DACL1 analog gain to 5 DACR1 analog gain to 10 Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 381a22b564ff5a7ada09ad9a0831246da1dc5513 Author: Peter Ujfalusi Date: Mon Dec 1 10:03:45 2008 +0200 ASoC: TWL4030: Change the capture volume control to TLV The digital Capture gain control has a range: 0 to 31 dB in 1 dB steps. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit fa5c76978cee331b25e6d271482cf8e76f51e68b Author: Mark Brown Date: Sun Nov 30 22:55:46 2008 +0000 ASoC: Remove in-code changelog from AD73311 driver Signed-off-by: Mark Brown commit 7d8c16a6f728f0ee5c42d1d731923cfd0cc19971 Author: Mark Brown Date: Sun Nov 30 22:11:24 2008 +0000 ASoC: Annotate core removal function Signed-off-by: Mark Brown commit 968a6025aa9f909d487988efb542217a126023a0 Author: Mark Brown Date: Fri Nov 28 11:49:07 2008 +0000 ASoC: Rename snd_soc_register_card() to snd_soc_init_card() Currently ASoC card initialisation is completed by a function called snd_soc_register_card(). As part of the work to allow independant registration of cards, codecs and machines in ASoC v2 a new function of the same name has been added so rename the existing function to facilitate the merge of v2. Signed-off-by: Mark Brown commit 6c415b9234a8c71f290e5d4fddc467f103f32719 Author: Arun R Bharadwaj Date: Mon Dec 1 20:49:05 2008 +0530 sched: add uid information to sched_debug for CONFIG_USER_SCHED Impact: extend information in /proc/sched_debug This patch adds uid information in sched_debug for CONFIG_USER_SCHED Signed-off-by: Arun R Bharadwaj Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 50cec5c51c18301ff60262fdbe920f4a907c9d81 Author: FUJITA Tomonori Date: Tue Dec 2 02:17:15 2008 +0900 x86: fix dma_mapping_error for 32bit x86, cleanup This removes ifdef CONFIG_X86_64 in dma_mapping_error(): 1) Xen people plan to use swiotlb on X86_32 for Dom0 support. swiotlb uses ops->mapping_error so X86_32 also needs to check ops->mapping_error. 2) Removing #ifdef hack is almost always a good thing. Signed-off-by: FUJITA Tomonori Signed-off-by: Ingo Molnar commit f6d2e6f57bba66272b28dd20c949b14ce39cb804 Merge: 8caac56305cef98f9357b060a77939d17699937d 7b1dedca42ac0d0d0be01e39d8461bb53a2389b3 Author: Ingo Molnar Date: Mon Dec 1 20:36:13 2008 +0100 Merge branch 'x86/urgent' into x86/iommu commit 682d5874f3d654b5d13d9b8dd56b9e05cfadd01b Author: Takashi Iwai Date: Mon Dec 1 20:03:54 2008 +0100 ALSA: ASoC: Fix old-style trigger callback in s3c2443-ac97.c Fix the old-style trigger callback in s3c2443-ac97.c: sound/soc/s3c24xx/s3c2443-ac97.c:378: warning: initialization from incompatible pointer type Signed-off-by: Takashi Iwai commit 5220ed6b321639d68a66bad2082456c1b273f3ea Author: Takashi Iwai Date: Mon Dec 1 20:00:47 2008 +0100 ALSA: ASoC: Fix compile warnings on corgi.c Fix the wrong shutdown callback type. Also removed the unused variables there: sound/soc/pxa/corgi.c: In function 'corgi_shutdown': sound/soc/pxa/corgi.c:114: warning: unused variable 'codec' sound/soc/pxa/corgi.c: At top level: sound/soc/pxa/corgi.c:175: warning: initialization from incompatible pointer type Acked-by: Mark Brown Signed-off-by: Takashi Iwai commit 0bc286e2ac72e483d2b5a6dac0dafb05e9f047c8 Author: Takashi Iwai Date: Mon Dec 1 19:59:35 2008 +0100 Revert "ALSA: soc - Fix compile warnings in wm8903.c" This reverts commit 9171e5e6a20a9cd4992ff9c7cbee13c6fdf7b0b1. I can't reproduce the compile warnings any more. The warnings might be some weird cross-compiling set up. Signed-off-by: Takashi Iwai commit 2caf6a1f9c8bcdc81ba580cfbf512d073c9444be Author: Takashi Iwai Date: Mon Dec 1 17:56:06 2008 +0100 ALSA: ASoC: Remove superfluous dependency on SND_SOC The dependency on SND_SOC is already fulfilled in sound/soc/Kconfig, thus no more need in Kconfig of each sub directory. Signed-off-by: Takashi Iwai commit 3af4182cc5be7d5505f9801ee3297373f1872446 Merge: f5d4c67e41a262f0cdfaec1bb0fa8e5952187ef9 c07f62e5f18123103459ff74e86af1518a5b8af5 Author: Takashi Iwai Date: Mon Dec 1 18:02:17 2008 +0100 Merge branch 'upstream' into topic/asoc commit f5d4c67e41a262f0cdfaec1bb0fa8e5952187ef9 Author: Takashi Iwai Date: Mon Dec 1 16:29:47 2008 +0100 ALSA: soc - Remove obsoleted sound/driver.h inclusion Signed-off-by: Takashi Iwai commit 1966bbd62ce31cef0cb020a6b4bd852dbc63b40c Author: Mark Brown Date: Mon Dec 1 14:54:45 2008 +0000 ALSA: ac97 - Add WM9715 to AC97 IDs The WM9715 is software compatible with the WM9711 and WM9712. Signed-off-by: Mark Brown Signed-off-by: Takashi Iwai commit 9171e5e6a20a9cd4992ff9c7cbee13c6fdf7b0b1 Author: Takashi Iwai Date: Mon Dec 1 15:39:13 2008 +0100 ALSA: soc - Fix compile warnings in wm8903.c Hide annoying uninitialized warnings: sound/soc/codecs/wm8903.c:382: warning: ‘reg’ may be used uninitialized in this function sound/soc/codecs/wm8903.c:383: warning: ‘shift’ may be used uninitialized in this function Signed-off-by: Takashi Iwai commit ade9b2fb9bf8114f77eefc70b9042417e62acf72 Author: Markus Bollinger Date: Mon Dec 1 15:31:06 2008 +0100 ALSA: pcxhr - change firmware filenames - compatibility issue : change firmware filenames the pcxhr driver version <= 1.0.18a does not work with new firmware > 1.0.17. Keep the old firmware files and add new firmware files with different names Signed-off-by: Markus Bollinger Signed-off-by: Takashi Iwai commit 480cf663e6988b3e79b570b42d2dbdb6c2ba9b94 Author: Takashi Iwai Date: Mon Dec 1 15:28:07 2008 +0100 ALSA: Fix a compile warning in cs46xx_lib.c Fix a build warning sound/pci/cs46xx/cs46xx_lib.c:3643: warning: unused variable ‘i’ when CONFIG_SND_CS46XX_NEW_DSP=n. Signed-off-by: Takashi Iwai commit 8c2f767bf3c4a7932898e657c6b12a2234cd2eca Author: Takashi Iwai Date: Mon Dec 1 11:54:35 2008 +0100 ALSA: hda - Remove unnecessary caches for power states in patch_sigmatel.c The power-state changes in patch_sigmatel.c are accessed via *_cached() but they shouldn't be really cached. Fixed to the normal write. Also, stac92hd71xx_suspend and resume are no longer necessary as the power-state changes are handled properly in the common routine. Removed these hacks now. Signed-off-by: Takashi Iwai commit c9b46f9144b8dce6c12aec08f34a908aedd28b37 Author: Takashi Iwai Date: Mon Dec 1 11:42:09 2008 +0100 ALSA: hda - Use amp cache for SPDIF mute controls in patch_sigmatel.c The amp switch of SPDIF outputs have to be cached in the amp cache instead of codec cache. Otherwise it conflicts with the IEC958 playback switch control in hda_codec.c. Signed-off-by: Takashi Iwai commit 9a5df92374d65e2886b92e98dd7d873c533a83ff Author: Marcel Holtmann Date: Sun Nov 30 12:17:29 2008 +0100 Bluetooth: Fix RFCOMM release oops when device is still in use It turns out that the following sequence of actions will reproduce the oops: 1. Create a new RFCOMM device (using RFCOMMCREATEDEV ioctl) 2. (Try to) open the device 3. Release the RFCOMM device (using RFCOMMRELEASEDEV ioctl) At this point, the "/dev/rfcomm*" device is still in use, but it is gone from the internal list, so the device id can be reused. 4. Create a new RFCOMM device with the same device id as before And now kobject will complain that the TTY already exists. (See http://lkml.org/lkml/2008/7/13/89 for a reproducible test-case.) This patch attempts to correct this by only removing the device from the internal list of devices at the final unregister stage, so that the id won't get reused until the device has been completely destructed. This should be safe as the RFCOMM_TTY_RELEASED bit will be set for the device and prevent the device from being reopened after it has been released. Based on a report from Vegard Nossum Signed-off-by: Marcel Holtmann commit 2e792995e4cb425422dc379c3618447c462756a8 Author: Marcel Holtmann Date: Sun Nov 30 12:17:29 2008 +0100 Bluetooth: Fix format arguments warning Newer GCC versions are a little bit picky about how to deal with format arguments: net/bluetooth/hci_sysfs.c: In function ‘hci_register_sysfs’: net/bluetooth/hci_sysfs.c:418: warning: format not a string literal and no format arguments It is simple enough to fix and makes the compiler happy. Signed-off-by: Marcel Holtmann commit a418b893a6af11ae73c762ed5b76c1bad6dc19d8 Author: Marcel Holtmann Date: Sun Nov 30 12:17:28 2008 +0100 Bluetooth: Enable per-module dynamic debug messages With the introduction of CONFIG_DYNAMIC_PRINTK_DEBUG it is possible to allow debugging without having to recompile the kernel. This patch turns all BT_DBG() calls into pr_debug() to support dynamic debug messages. As a side effect all CONFIG_BT_*_DEBUG statements are now removed and some broken debug entries have been fixed. Signed-off-by: Marcel Holtmann commit 5ddd4a60683f819982b7bd3d1aee972f931c11a3 Author: Marcel Holtmann Date: Sun Nov 30 12:17:27 2008 +0100 Bluetooth: Allow SCO audio with Asus WL-BTD202 dongle This patch allows the Asus WL-BTD202 dongle to be used with a mono headset without having to specify "options btusb force_scofix=1". Based on a patch from Guillaume Bedot Signed-off-by: Marcel Holtmann commit 7a9d4020533b5c0c615b6de3be154c9ff30b8cc9 Author: Marcel Holtmann Date: Sun Nov 30 12:17:26 2008 +0100 Bluetooth: Send HCI Reset command by default on device initialization The Bluetooth subsystem was not using the HCI Reset command when doing device initialization. The Bluetooth 1.0b specification was ambiguous on how the device firmware was suppose to handle it. Almost every device was triggering a transport reset at the same time. In case of USB this ended up in disconnects from the bus. All modern Bluetooth dongles handle this perfectly fine and a lot of them actually require that HCI Reset is sent. If not then they are either stuck in their HID Proxy mode or their internal structures for inquiry and paging are not correctly setup. To handle old and new devices smoothly the Bluetooth subsystem contains a quirk to force the HCI Reset on initialization. However maintaining such a quirk becomes more and more complicated. This patch turns the logic around and lets the old devices disable the HCI Reset command. The only device where the HCI_QUIRK_NO_RESET is still needed are the original Digianswer devices and dongles with an early CSR firmware. CSR reported that they fixed this for version 12 firmware. The last official release of version 11 firmware is build ID 115. The first version 12 candidate was build ID 117. Signed-off-by: Marcel Holtmann commit 12421b40b81d101d7535e03f1af197365adc932b Author: Marcel Holtmann Date: Sun Nov 30 12:17:21 2008 +0100 Bluetooth: Remove deprecated hci_usb driver The old hci_usb driver has been fully replaced with the new btusb driver and all major distributions switched to the new driver now. This removes it since it should not be used at all anymore. Signed-off-by: Marcel Holtmann commit 7b99d17f3ea1febd1abca8fa371d2341dd957d4a Author: Nick Pelly Date: Sun Nov 30 12:17:20 2008 +0100 Bluetooth: Respect HCI_UART_DEBUG config in hci_ll.c Following the pattern from hci_*.c, turn off BT_DBG messages unless they have been requested via HCI_UART_DEBUG Signed-off-by: Nick Pelly Acked-by: Brian Swetland Signed-off-by: Marcel Holtmann commit 51a6fbc855b07a0737558560dd0ab0b5f646025b Author: Julia Lawall Date: Sun Nov 30 12:17:20 2008 +0100 Bluetooth: Change simple_strtol to simple_strtoul Since size, addr, fcs, and tmp are unsigned, it would seem better to use simple_strtoul that simple_strtol. A simplified version of the semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r2@ long e; position p; @@ e = simple_strtol@p(...) @@ position p != r2.p; type T; T e; @@ e = - simple_strtol@p + simple_strtoul (...) // Signed-off-by: Julia Lawall Signed-off-by: Marcel Holtmann commit db7aa1c203d477351ed1b8f394b40d9df06ddfc4 Author: Marcel Holtmann Date: Sun Nov 30 12:17:19 2008 +0100 Bluetooth: Fix warnings for bt_key_strings and bt_slock_key_strings After adding proper lockdep annotations for Bluetooth protocols the case when lockdep is disabled produced two compiler warnings: net/bluetooth/af_bluetooth.c:60: warning: ‘bt_key_strings’ defined but not used net/bluetooth/af_bluetooth.c:71: warning: ‘bt_slock_key_strings’ defined but not used Fix both of them by adding a CONFIG_DEBUG_LOCK_ALLOC conditional around them and re-arranging the code a little bit. Signed-off-by: Marcel Holtmann commit c6bf514c6e0171c5b731beffaa0c4463e2335f3d Author: Vegard Nossum Date: Sun Nov 30 12:17:19 2008 +0100 Bluetooth: Fix leak of uninitialized data to userspace struct hci_dev_list_req { __u16 dev_num; struct hci_dev_req dev_req[0]; /* hci_dev_req structures */ }; sizeof(struct hci_dev_list_req) == 4, so the two bytes immediately following "dev_num" will never be initialized. When this structure is copied to userspace, these uninitialized bytes are leaked. Fix by using kzalloc() instead of kmalloc(). Found using kmemcheck. Signed-off-by: Vegard Nossum Signed-off-by: Marcel Holtmann commit 7644d63d1348ec044ccd8f775fefe5eb7cbcac69 Author: Tomas Winkler Date: Sun Nov 30 12:17:18 2008 +0100 Bluetooth: Fix TX error path in btsdio driver This patch fixes accumulating of the header in case packet was requeued in the error path. Signed-off-by: Tomas Winkler Signed-off-by: Marcel Holtmann commit 6a88adf2adf5d6a3b759c2e114da4c5266ca3972 Author: Marcel Holtmann Date: Sun Nov 30 12:17:14 2008 +0100 Bluetooth: Add suspend/resume support to btusb driver During suspend it is important that all URBs are cancelled and then on resume re-submitted. This gives initial suspend/resume support. Based on initial work from Oliver Neukum Signed-off-by: Marcel Holtmann commit a780efa8124fe7ef23d8ef844d56afe960356615 Author: Marcel Holtmann Date: Sun Nov 30 12:17:12 2008 +0100 Bluetooth: Handle bulk URBs in btusb driver from notify callback With the addition of usb_unlink_anchored_urbs() it is possible to fully control the bulk URBs from the notify callback. There is no need to schedule work and so only do this for the ISOC URBs. Signed-off-by: Marcel Holtmann commit 2eda66f4a0b9803c6a85d5e5ccd8e802bd23b998 Author: Marcel Holtmann Date: Sun Nov 30 12:17:10 2008 +0100 Bluetooth: Add fine grained mem_flags usage to btusb driver The URB submission routines need more fine grained control for the mem_flags used by kmalloc(), usb_alloc_urb() and usb_submit_urb() to better support different caller situations. Add a mem_flags parameter and give the caller full control. Signed-off-by: Marcel Holtmann commit 93093d099e5dd0c258fd530c12668e828c20df41 Author: Ingo Molnar Date: Sun Nov 30 10:20:20 2008 +0100 x86: provide readq()/writeq() on 32-bit too, complete if HAVE_READQ/HAVE_WRITEQ are defined, the full range of readq/writeq APIs has to be provided to drivers: drivers/infiniband/hw/amso1100/c2.c: In function 'c2_tx_ring_alloc': drivers/infiniband/hw/amso1100/c2.c:133: error: implicit declaration of function '__raw_writeq' So provide them on 32-bit as well. Also, map all the APIs to the strongest ordering variant. It's way too easy to mess such details up in drivers and the difference between "memory" and "" constrained asm() constructs is in the noise range. Signed-off-by: Ingo Molnar commit a0b1131e479e5af32eefac8bc54c9742e23d638e Author: Ingo Molnar Date: Sun Nov 30 09:33:55 2008 +0100 x86: provide readq()/writeq() on 32-bit too, cleanup Impact: cleanup Signed-off-by: Ingo Molnar commit 2c5643b1c5c7fbb13f340d4c58944d9642f41796 Author: Hitoshi Mitake Date: Sun Nov 30 17:16:04 2008 +0900 x86: provide readq()/writeq() on 32-bit too Impact: add new API for drivers Add implementation of readq/writeq to x86_32, and add config value to the x86 architecture to determine existence of readq/writeq. Signed-off-by: Hitoshi Mitake Acked-by: Sam Ravnborg Signed-off-by: Ingo Molnar commit 4385cecf1f5866fb33fc95e2ee26a44e9b6f6be2 Author: Jiri Slaby Date: Sat Nov 29 22:33:16 2008 +0100 x86: intel_cacheinfo, minor show_type cleanup Impact: cleanup Signed-off-by: Jiri Slaby Cc: Jiri Slaby Signed-off-by: Ingo Molnar commit 25f13048bce61f33f6a102e0bf377fd3922ed364 Author: Tilman Schmidt Date: Sat Nov 29 21:38:28 2008 -0800 gigaset: get rid of info() and warn() macros Join the move away from the obsolete info() macro, opencoding the remaining uses. While we're at it, also get rid of the warn() macro by promoting the three remaining uses to err(). Signed-off-by: Tilman Schmidt Signed-off-by: David S. Miller commit af4218c3a699542adc9b76c8972828a726e7b0dc Author: Tilman Schmidt Date: Sat Nov 29 21:38:04 2008 -0800 gigaset: remove unnecessary poll method The N_GIGASET_M101 line discipline implemented by the ser_gigaset driver does not transfer any data from/to userspace through the tty interface. Therefore a poll method is not needed. Signed-off-by: Tilman Schmidt Signed-off-by: David S. Miller commit f08340c5d68ab621f377c108637e2d8e95b3e5d4 Author: Nikanth Karthikesan Date: Sat Nov 29 15:43:32 2008 +0530 tracepoints: Documentation TPPROTO misspelt in Documentation/tracepoints.txt Impact: fix typo in documentation TPPROTO is misspelt in Documentation/tracepoints.txt Kept me wondering what was wrong, when I was trying to add a new tracepoint subsystem. Signed-off-by: Nikanth Karthikesan Signed-off-by: Ingo Molnar commit 65c6dc6adbe7ee0acf207445243400a68c77af15 Author: Frederic Weisbecker Date: Sat Nov 29 04:12:46 2008 +0100 tracing/branch-tracer: include missing irqflags.h Impact: fix build error on branch tracer This should fix a build error reported on alpha in linux-next: CC kernel/trace/trace_branch.o kernel/trace/trace_branch.c: In function 'probe_likely_condition': kernel/trace/trace_branch.c:44: error: implicit declaration of function 'raw_local_irq_save' kernel/trace/trace_branch.c:76: error: implicit declaration of function 'raw_local_irq_restore' Unfortunately, I can't test it since I don't have any Alpha build environment. Reported-by: Alexey Dobriyan Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit c5419e6f054c877339f754e02c3b1dafd88cd96c Author: Roland Dreier Date: Fri Nov 28 21:55:42 2008 -0800 cxgb3: Fix sparse warning and micro-optimize is_pure_response() The function is_pure_response() does "ntohl(var) & const" and then essentially just tests whether the result is 0 or not; this can be done more efficiently by computing "var & htonl(const)" instead and doing the byte swap at compile time instead of run time. This change slightly shrinks the compiled code; eg on x86-64 we save a couple of bswapl instructions: add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-8 (-8) function old new delta t3_sge_intr_msix_napi 544 536 -8 and this also has the pleasant side effect of fixing a sparse warning: drivers/net/cxgb3/sge.c:2313:15: warning: restricted degrades to integer Signed-off-by: Roland Dreier Signed-off-by: David S. Miller commit f95be1806fde884c1655237d49a7e5f82e4a935f Author: Giuseppe Cavallaro Date: Fri Nov 28 16:42:41 2008 -0800 phy: add the ST ste10Xp PHYs This patch adds the STMicroelectronics ste10xp PHY device driver. It supports both the ste100p and the ste101p devices. Suspend/resume alredy added. Signed-off-by: Giuseppe Cavallaro Signed-off-by: David S. Miller commit 4621bf129856bad902d7662053b79faaeb3e66cc Author: David S. Miller Date: Fri Nov 28 16:40:26 2008 -0800 phy: Add file missed in previous commit. Signed-off-by: David S. Miller commit 0f0ca340e57bd7446855fefd07a64249acf81223 Author: Giuseppe Cavallaro Date: Fri Nov 28 16:24:56 2008 -0800 phy: power management support This patch adds the power management support into the physical abstraction layer. Suspend and resume functions respectively turns on/off the bit 11 into the PHY Basic mode control register. Generic PHY device starts supporting PM. In order to support the wake-on LAN and avoid to put in power down the PHY device, the MDIO is aware of what the Ethernet device wants to do. Voluntary, no CONFIG_PM defines were added into the sources. Also generic suspend/resume functions are exported to allow other drivers use them (such as genphy_config_aneg etc.). Within the phy_driver_register function, we need to remove the memset. It overrides the device driver owner and it is not good. Signed-off-by: Giuseppe Cavallaro Signed-off-by: David S. Miller commit 914804b95caa61c633431262044034ab05c78ba4 Author: Giuseppe Cavallaro Date: Fri Nov 28 16:14:12 2008 -0800 phy: add natsemi PHY driver This patch adds the PHY device driver for the National Semiconductor DP83865 Gig PHYTER. Signed-off-by: Giuseppe Cavallaro Signed-off-by: David S. Miller commit 65a467f553067fae21b66ac0778247c930936749 Author: Ilpo Järvinen Date: Fri Nov 28 15:55:00 2008 -0800 ne2: silence static never defined warnings These warning originate from 50014f1 (ne2: convert to net_device_ops) which did drop those functions. drivers/net/ne2.c:140: warning: 'ne_open' declared 'static' but never defined drivers/net/ne2.c:141: warning: 'ne_close' declared 'static' but never defined Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit d8e8034dcdef8c8fa94a14c3b555c09e065e742f Author: Ilpo Järvinen Date: Fri Nov 28 15:52:43 2008 -0800 bnx2: use net_device_stats nowadays available in net_device Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 9fd428761adbd5fbd7e23c312955eec1db8ace7a Author: Ilpo Järvinen Date: Fri Nov 28 15:52:00 2008 -0800 niu: use net_device_stats nowadays available in net_device Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 70574a996fc7a70c5586eb56bd92a544eccf18b6 Author: Alexey Dobriyan Date: Fri Nov 28 22:08:00 2008 +0300 sched: move double_unlock_balance() higher Move double_lock_balance()/double_unlock_balance() higher to fix the following with gcc-3.4.6: CC kernel/sched.o In file included from kernel/sched.c:1605: kernel/sched_rt.c: In function `find_lock_lowest_rq': kernel/sched_rt.c:914: sorry, unimplemented: inlining failed in call to 'double_unlock_balance': function body not available kernel/sched_rt.c:1077: sorry, unimplemented: called from here make[2]: *** [kernel/sched.o] Error 1 Signed-off-by: Alexey Dobriyan Signed-off-by: Ingo Molnar commit f1860c34b3ed829ac774647f266abf1074cd58cd Merge: 64b7482de253c10efa2589a6212e3d2093a3efc7 4cd4262034849da01eb88659af677b69f8169f06 Author: Ingo Molnar Date: Fri Nov 28 20:11:05 2008 +0100 Merge branch 'sched/urgent' into sched/core commit 604094f4615180f71da799e7e5b191f5c2a42a28 Author: Ingo Molnar Date: Fri Nov 28 18:03:22 2008 +0100 vfs, seqfile: export mangle_path() generally mangle_path() is trivial enough to make export restrictions on it pointless - so change the export from EXPORT_SYMBOL_GPL to EXPORT_SYMBOL. Signed-off-by: Ingo Molnar Acked-by: Al Viro commit a838c2ec6ea1f18431da74dfe4978c57355b95f3 Author: Wu Fengguang Date: Thu Nov 27 16:14:44 2008 +0800 markers: comment marker_synchronize_unregister() on data dependency Add document and comments on marker_synchronize_unregister(): it should be called before freeing resources that the probes depend on. Based on comments from Lai Jiangshan and Mathieu Desnoyers. Signed-off-by: Wu Fengguang Reviewed-by: Mathieu Desnoyers Reviewed-by: Lai Jiangshan Signed-off-by: Ingo Molnar commit 02834f112d159eb87b584c7df56bddc5beeff5b3 Author: Takashi Iwai Date: Fri Nov 28 15:29:01 2008 +0100 ALSA: ac97 - Remove EXPERIMENTAL from CONFIG_SND_AC97_POWER_SAVE It's mature enough now. Signed-off-by: Takashi Iwai commit 36adba1fc79851949c4792f2e9b4d0dddbc6d5e4 Author: Takashi Iwai Date: Fri Nov 28 15:27:11 2008 +0100 ALSA: hda - Remove EXPERIMENTAL from CONFIG_SND_HDA_POWER_SAVE It's mature enough now. Signed-off-by: Takashi Iwai commit 8caac56305cef98f9357b060a77939d17699937d Author: Pavel Machek Date: Wed Nov 26 17:15:27 2008 +0100 aperture_64.c: clarify that too small aperture is valid reason for this code Impact: update comment Clarify that too small aperture is valid reason for this code. Signed-off-by: Pavel Machek Signed-off-by: Ingo Molnar commit ff7a3267368634e368ebaac68d5e3abf129edd1d Author: Takashi Iwai Date: Fri Nov 28 15:17:06 2008 +0100 ALSA: hda - Don't export symbols when built-in kernel The global functions in hda_codec.c and other core parts are only for HD-audio codec and controller drivers. When the HD-audio driver is built in kernel, all stuff have to be statically linked, thus we don't need any exports. This patch introduces a conditional macro to do export only when needed. Signed-off-by: Takashi Iwai commit 645f10c1ac7f733b224eaf97634edf9b20e2370e Author: Takashi Iwai Date: Fri Nov 28 15:07:37 2008 +0100 ALSA: hda - Check MODULE instead of CONFIG_SND_HDA_INTEL_MODULE Checking MODULE is more generic. Also a cosmetic comment change. Signed-off-by: Takashi Iwai commit 5b3eec0c80038c8739ccd465b897a35c0dff1cc4 Author: Ingo Molnar Date: Thu Nov 27 14:41:21 2008 +0100 x86: ret_from_fork - get rid of jump back Impact: remove dead code If we take a closer look at the rff_trace/rff_action ret_from_fork code, we have to realize that it does all the wrong things: for example it checks the TIF flag - while later on jumping back to the ret-from-syscall path - duplicating the check needlessly. But checking for _TIF_SYSCALL_TRACE is completely unnecessary here because we clear that flag for every freshly forked task. So the whole "tracing" code here, for which there is a out of line jump optimization that makes it even harder to read, is in reality completely dead code ... Reported-by: Cyrill Gorcunov Signed-off-by: Ingo Molnar Tested-by: Cyrill Gorcunov commit 3bdae4f46445ea7cc9ee031d7ff106fdc6228669 Merge: 9f1e87ea3ecb3c46c21f6a1a202ec82f99ed2473 5f5db591326779a80cfe490c5d6b6ce9fac08b31 Author: Ingo Molnar Date: Fri Nov 28 15:00:37 2008 +0100 Merge branch 'x86/debug' into x86/irq We merge this branch because x86/debug touches code that we started cleaning up in x86/irq. The two branches started out independent, but as unexpected amount of activity went into x86/irq, they became dependent. Resolve that by this cross-merge. commit 9f1e87ea3ecb3c46c21f6a1a202ec82f99ed2473 Author: Cyrill Gorcunov Date: Thu Nov 27 21:10:08 2008 +0300 x86: entry_64.S - trivial: space, comments fixup Impact: cleanup Signed-off-by: Cyrill Gorcunov Signed-off-by: Ingo Molnar commit de04b102bfc9a13e96f0892305b394077ffb6514 Author: Clemens Ladisch Date: Wed Nov 26 10:37:23 2008 +0100 ALSA: oxygen: add Claro halo support Add support for the HT-Omega Claro halo (XT). Signed-off-by: Clemens Ladisch Signed-off-by: Takashi Iwai commit 57a5ef483b6290a9f22d4c52baca051c1e755f3a Author: Takashi Iwai Date: Fri Nov 28 14:46:28 2008 +0100 ALSA: hda - Add quirk for Sony VAIO VGN-SR19XN Added model=sony-assamd for Sony VAIO VGN-SR19XN with ALC262 codec. Reference: Novell bnc#450080 https://bugzilla.novell.com/show_bug.cgi?id=450080 Signed-off-by: Takashi Iwai commit 56d17712d54d3aa3d6ef930123d692351d33217c Author: Takashi Iwai Date: Fri Nov 28 14:36:23 2008 +0100 ALSA: hda - Clear codec->proc_widget_hook at reset Clear the remaining pointer at snd_hda_codec_reset() to avoid Oops. Signed-off-by: Takashi Iwai commit 2d34e1b3bb991a99322fb55681d1e73ada3de35c Author: Takashi Iwai Date: Fri Nov 28 14:35:16 2008 +0100 ALSA: hda - Add IDT/STAC-specific proc output Added power-map and analog-loopback information to proc output for IDT/STAC codecs. Signed-off-by: Takashi Iwai commit 5ae3a139cf4fc2349f1dfa1993a66c1dcc119468 Author: Cyrill Gorcunov Date: Thu Nov 27 00:02:10 2008 +0300 x86: uv bau interrupt -- use proper interrupt number Signed-off-by: Cyrill Gorcunov Acked-by: Cliff Wickman Signed-off-by: Ingo Molnar commit f1eecf0e4f0796911cc076f38fcf05fea0b353d5 Author: Steven Rostedt Date: Wed Nov 26 15:54:46 2008 -0500 powerpc/ppc32: static ftrace fixes for PPC32 Impact: fix for PowerPC 32 code There were some early init code that was not safe for static ftrace to boot on my PowerBook. This code must only use relative addressing, and static mcount performs a compare of the ftrace_trace_function pointer, and gets that with an absolute address. In the early init boot up code, this will cause a fault. This patch removes tracing from the files containing the offending functions. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 0029ff87529dff01a4b9c5bf380a0caacb5f7418 Author: Steven Rostedt Date: Tue Nov 25 14:06:19 2008 -0800 powerpc: ftrace, use create_branch Impact: clean up Paul Mackerras pointed out that the code to determine if the branch can reach the destination is incorrect. Michael Ellerman suggested to pull out the code from create_branch and use that. Simply using create_branch is probably the best. Reported-by: Michael Ellerman Reported-by: Paul Mackerras Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit ec682cef2d2c1a25a198d32a87fe2649da671d1e Author: Steven Rostedt Date: Tue Nov 25 10:22:48 2008 -0800 powerpc: ftrace, added missing icache flush Impact: fix to PowerPC code modification After modifying code it is essential to flush the icache. This patch adds the missing flush. Reported-by: Paul Mackerras Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit d9af12b72bfe2a4efc1d347e0ac1c669b85dcea9 Author: Steven Rostedt Date: Tue Nov 25 06:39:18 2008 -0800 powerpc: ftrace, fix cast aliasing and add code verification Impact: clean up and robustness addition This patch addresses the comments made by Paul Mackerras. It removes the type casting between unsigned int and unsigned char pointers, and replaces them with a use of all unsigned int. Verification that the jump is indeed made to a trampoline has also been added. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit c7b0d17366d6e04a11470fc8d85f9fbac02671b9 Author: Steven Rostedt Date: Thu Nov 20 13:18:55 2008 -0800 powerpc: ftrace, do nothing in mcount call for dyn ftrace Impact: quicken mcount calls that are not replaced by dyn ftrace Dynamic ftrace no longer does on the fly recording of mcount locations. The mcount locations are now found at compile time. The mcount function no longer needs to store registers and call a stub function. It can now just simply return. Since there are some functions that do not get converted to a nop (.init sections and other code that may disappear), this patch should help speed up that code. Also, the stub for mcount on PowerPC 32 can not be a simple branch link register like it is on PowerPC 64. According to the ABI specification: "The _mcount routine is required to restore the link register from the stack so that the profiling code can be inserted transparently, whether or not the profiled function saves the link register itself." This means that we must restore the link register that was used to make the call to mcount. The minimal mcount function for PPC32 ends up being: mcount: mflr r0 mtctr r0 lwz r0, 4(r1) mtlr r0 bctr Where we move the link register used to call mcount into the ctr register, and then restore the link register from the stack. Then we use the ctr register to jump back to the mcount caller. The r0 register is free for us to use. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit c072c24975ec4f0ccfcb6f5c8a8040b6eb75ef8f Author: walimis Date: Fri Nov 28 12:21:19 2008 +0800 ftrace: improve documentation Impact: extend documentation with notice of using wild cards correctly We know that we can use wild cards to set set_ftrace_filter, but there's problem when using them naively such as: echo h* > /debug/tracing/set_ftrace_filter If there are files named with "h" prefix in current directory, echo "h*" will echo these filenames to set_ftrace_filter, not the intended "h*". For example: $ cat /debug/tracing/available_filter_functions |grep ^hr |wc -l 23 $ ls $ touch hraa hrdd $ ls hraa hrdd $ echo hr* > /debug/tracing/set_ftrace_filter $ cat /debug/tracing/set_ftrace_filter No output in /debug/tracing/set_ftrace_filter! If we use '' to escape wild cards, it works: $ ls hraa hrdd $ echo "hr*" > /debug/tracing/set_ftrace_filter $ cat /debug/tracing/set_ftrace_filter |wc -l 23 This problem can lead to unexpected result if current directory has a lot of files. Signed-off-by: walimis Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 1d9b16d1690fe5edb1c907fe4746681cf026cdf3 Author: Joerg Roedel Date: Thu Nov 27 18:39:15 2008 +0100 x86: move GART specific stuff from iommu.h to gart.h Impact: cleanup Signed-off-by: Joerg Roedel Signed-off-by: Ingo Molnar commit bb40abe223ace0b6f29e8433d3936dac664178b5 Author: Takashi Iwai Date: Fri Nov 28 12:57:38 2008 +0100 ALSA: hda - Remove unused proc entry in hda_bus struct Signed-off-by: Takashi Iwai commit daead538e9d8efe61d7d2bd12993c8d961b0abd6 Author: Takashi Iwai Date: Fri Nov 28 12:55:36 2008 +0100 ALSA: hda - Add codec-specific proc hook Added a hook for proc outputs of codec-specific stuff. Moved realtek-specific coeff output into patch_realtek.c as well. Signed-off-by: Takashi Iwai commit 50cdaf08a8ec1d7f43987705da7aff7cf949708f Author: Liming Wang Date: Fri Nov 28 12:13:21 2008 +0800 ftrace: improve seq_operation of ftrace Impact: make ftrace position computing more sane First remove useless ->pos field. Then we needn't check seq_printf in .show like other place. Signed-off-by: Liming Wang Reviewed-by: Bruce Ashfield Signed-off-by: Ingo Molnar commit 6113b748fb9935399ec2bbca3a3dc82008f6167f Author: Hannes Eder Date: Fri Nov 28 03:06:46 2008 -0800 pkt_sched: fix sparse warning Impact: make global function static Fix the following sparse warning: net/sched/sch_api.c:192:14: warning: symbol 'qdisc_match_from_root' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: David S. Miller commit ea5693ccc553951ae44cb963b28cce85edc275c9 Author: Patrick McHardy Date: Fri Nov 28 03:05:19 2008 -0800 netlink: allow empty nested attributes validate_nla() currently doesn't allow empty nested attributes. This makes userspace code unnecessarily complicated when starting and ending the nested attribute is done by generic upper level code and the inner attributes are dumped by a module. Add a special case to accept empty nested attributes. When the nested attribute is non empty, the same checks as before are performed. Signed-off-by: Patrick McHardy Signed-off-by: David S. Miller commit c7425acb42fff1e723b05fbf4ea11e9a455d95dc Author: Török Edwin Date: Fri Nov 28 11:17:56 2008 +0200 tracing, alpha: fix build: add missing #ifdef CONFIG_STACKTRACE There are architectures that still have no stacktrace support. Signed-off-by: Török Edwin Signed-off-by: Ingo Molnar commit ed77a89c30fa03dcb234a84ddea710b3fb7b62da Merge: 475ad8e2172d7f8b73af5532a8dad265b51339c2 d6e8cc6cc7ac77b0f9118f78c453a2e834e62709 Author: David S. Miller Date: Fri Nov 28 02:19:15 2008 -0800 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6 Conflicts: net/netfilter/nf_conntrack_netlink.c commit d51090b34602a20984ab0312ef04e47069c0aec6 Author: Ingo Molnar Date: Fri Nov 28 09:55:16 2008 +0100 tracing/function-graph-tracer: more output tweaks Impact: prettify the output some more Before: 0) | sys_read() { 0) 0.796 us | fget_light(); 0) | vfs_read() { 0) | rw_verify_area() { 0) | security_file_permission() { ------------8<---------- thread sshd-1755 ------------8<---------- After: 0) | sys_read() { 0) 0.796 us | fget_light(); 0) | vfs_read() { 0) | rw_verify_area() { 0) | security_file_permission() { ------------------------------------------ | 1) migration/0--1 => sshd-1755 ------------------------------------------ Signed-off-by: Ingo Molnar commit 1a056155edd458eb93ef383fa8e5741d7e7c6360 Author: Frederic Weisbecker Date: Fri Nov 28 00:42:46 2008 +0100 tracing/function-graph-tracer: adjustments of the trace informations Impact: increase the visual qualities of the call-graph-tracer output This patch applies various trace output formatting changes: - CPU is now a decimal number, followed by a parenthesis. - Overhead is now on the second column (gives a good visibility) - Cost is now on the third column, can't exceed 9999.99 us. It is followed by a virtual line based on a "|" character. - Functions calls are now the last column on the right. This way, we haven't dynamic column (which flow is harder to follow) on its right. - CPU and Overhead have their own option flag. They are default-on but you can disable them easily: echo nofuncgraph-cpu > trace_options echo nofuncgraph-overhead > trace_options TODO: _ Refactoring of the thread switch output. _ Give a default-off option to output the thread and its pid on each row. _ Provide headers _ .... Here is an example of the new trace style: 0) | mutex_unlock() { 0) 0.639 us | __mutex_unlock_slowpath(); 0) 1.607 us | } 0) | remove_wait_queue() { 0) 0.616 us | _spin_lock_irqsave(); 0) 0.616 us | _spin_unlock_irqrestore(); 0) 2.779 us | } 0) 0.495 us | n_tty_set_room(); 0) ! 9999.999 us | } 0) | tty_ldisc_deref() { 0) 0.615 us | _spin_lock_irqsave(); 0) 0.616 us | _spin_unlock_irqrestore(); 0) 2.793 us | } 0) | current_fs_time() { 0) 0.488 us | current_kernel_time(); 0) 0.495 us | timespec_trunc(); 0) 2.486 us | } 0) ! 9999.999 us | } 0) ! 9999.999 us | } 0) ! 9999.999 us | } 0) | sys_read() { 0) 0.796 us | fget_light(); 0) | vfs_read() { 0) | rw_verify_area() { 0) | security_file_permission() { 0) 0.488 us | cap_file_permission(); 0) 1.720 us | } 0) 3. 4 us | } 0) | tty_read() { 0) 0.488 us | tty_paranoia_check(); 0) | tty_ldisc_ref_wait() { 0) | tty_ldisc_try() { 0) 0.615 us | _spin_lock_irqsave(); 0) 0.615 us | _spin_unlock_irqrestore(); 0) 5.436 us | } 0) 6.427 us | } Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 475ad8e2172d7f8b73af5532a8dad265b51339c2 Author: Harvey Harrison Date: Thu Nov 27 23:04:13 2008 -0800 decnet: compile fix for removal of byteorder wrapper Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 11cd41b893895c76a8f9bee9467f4b0869b5eeb3 Author: Takashi Iwai Date: Fri Nov 28 07:22:18 2008 +0100 ALSA: hda - Fix build error with CONFIG_SND_HDA_POWER_SAVE Moved power_save field initialization inside a proper ifdef to fix a build error without CONFIG_SND_HDA_POWER_SAVE. Signed-off-by: Takashi Iwai commit feea6a574d432e08cebf66d993a6ed1f310e0e5d Author: Al Viro Date: Thu Nov 27 15:34:07 2008 -0800 ixgbe: section fixes ixgbe_init_interrupt_scheme() is called from ixgbe_resume(). Build that with CONFIG_PM and without CONFIG_HOTPLUG and you've got a problem. Several helpers called by it also are misannotated __devinit. Signed-off-by: Al Viro Signed-off-by: David S. Miller commit 157653ce79a606409a8bfb496cba797b2984b18f Author: Randy Dunlap Date: Thu Nov 27 15:30:53 2008 -0800 sctp: fix missing label when PROC_FS=n Fix missing label when CONFIG_PROC_FS=n: net/sctp/protocol.c: In function 'sctp_proc_init': net/sctp/protocol.c:106: error: label 'out_nomem' used but not defined make[3]: *** [net/sctp/protocol.o] Error 1 Signed-off-by: Randy Dunlap Signed-off-by: David S. Miller commit 1289e9e8b42f973f2ab39e5f4f2239ff826c27e9 Author: Takashi Iwai Date: Thu Nov 27 15:47:11 2008 +0100 ALSA: hda - Modularize HD-audio driver Split the monolithc HD-audio driver into several pieces: - snd-hda-intel HD-audio PCI controller driver; loaded via udev - snd-hda-codec HD-audio codec bus driver - snd-hda-codec-* Specific HD-audio codec drivers When built as modules, snd-hda-codec (that is invoked by snd-hda-intel) looks up the codec vendor ID and loads the corresponding codec module automatically via request_module(). When built in a kernel, each codec drivers are statically hooked up before probing the PCI. This patch adds appropriate EXPORT_SYMBOL_GPL()'s and the module information for each driver, and driver-linking codes between codec-bus and codec drivers. TODO: - Avoid EXPORT_SYMBOL*() when built-in kernel - Restore __devinit appropriately depending on the condition Signed-off-by: Takashi Iwai commit 73f6a12ed187b7e7ac9334d1419ba7bf7ac1be26 Author: Julia Lawall Date: Thu Nov 27 15:40:40 2008 +0100 ALSA: sound/pci/mixart/mixart.c: Add missing snd_card_free The function snd_mixart_create creates a link between mgr and card that allows snd_mixart_free to free card as well. But if snd_mixart_create fails, then the link has not been created and card has to be freed explicitly. The semantic match that finds the problem is as follows: (http://www.emn.fr/x-info/coccinelle/) // @r exists@ local idexpression x; statement S,S1; position p1,p2,p3; expression E,E1; type T,T1; expression *ptr != NULL; @@ ( if ((x@p1 = snd_card_new(...)) == NULL) S | x@p1 = snd_card_new(...); ) ... when != snd_card_free(...,(T)x,...) when != if (...) { <+... snd_card_free(...,(T)x,...) ...+> } when != true x == NULL || ... when != x = E when != E = (T)x when any ( if (x == NULL || ...) S1 | if@p2 (...) { ... when != snd_card_free(...,(T1)x,...) when != if (...) { <+... snd_card_free(...,(T1)x,...) ...+> } when != x = E1 when != E1 = (T1)x ( return \(0\|<+...x...+>\|ptr\); | return@p3 ...; ) } ) @ script:python @ p1 << r.p1; p3 << r.p3; @@ print "* file: %s snd_card_new: %s return: %s" % (p1[0].file,p1[0].line,p3[0].line) // Signed-off-by: Julia Lawall Signed-off-by: Takashi Iwai commit 30d72e9f614e7bd76e28d4d92bd54d90a96905bb Author: Takashi Iwai Date: Thu Nov 27 15:25:34 2008 +0100 ALSA: hda - Fix creation of automatic capture mixers Fixed a wrong boundary check of num_adc_nids in set_capture_mixer() in patch_realtek.c. Signed-off-by: Takashi Iwai commit 529bd6c4a63f8468fd66f63fdc22d7070439b3cd Author: Takashi Iwai Date: Thu Nov 27 14:17:01 2008 +0100 ALSA: hda - Fix PCM reconfigure The reconfiguration of PCM affected all PCM streams on the bus, but this this should be done rather only for the target codec. This patch does the following: - introduce bitmap indicating the PCM device usages on a hda_bus - refactor the PCM build functions - fix __devinit prefix in some fucntions - add a proper ifdef around HDA-reconfig-specific functions Signed-off-by: Takashi Iwai commit c2c631e318091118587f3b766347d259c9265b8b Author: Cyrill Gorcunov Date: Wed Nov 26 22:17:00 2008 +0300 x86: entry_64.S - use ENTRY to define child_rip child_rip is called not by its name but indirectly rather so make it global and aligned. Signed-off-by: Cyrill Gorcunov Acked-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit 33454539f386a2beb38269bea5fff82b3d56b0e9 Author: gorcunov@gmail.com Date: Wed Nov 26 22:17:02 2008 +0300 x86: entry_64.S - use X86_EFLAGS_IF instead of hardcoded number Impact: cleanup Signed-off-by: Cyrill Gorcunov Acked-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit fee2fba3586f78762ecc5f432dfd3602765a31b3 Author: Takashi Iwai Date: Thu Nov 27 12:43:28 2008 +0100 ALSA: hda - Move power_save option to hda_intel.c Move power_save option into hda_intel.c, and make a field in hda_bus, instead of keeping module parameters in separate files. Signed-off-by: Takashi Iwai commit 986862bdf17655d012f9b0654925dccdcc4183c9 Author: Takashi Iwai Date: Thu Nov 27 12:40:13 2008 +0100 ALSA: hda - make some functions static Minor clean ups: move snd_hda_codecs_inuse() into hda_intel.c and make static. Also, make snd_hda_query_supported_pcm() static as it's used only in hda_codec.c. Signed-off-by: Takashi Iwai commit d211af055d0c12dc3416c2886e6fbdc6eb74a381 Author: Alexander van Heukelum Date: Mon Nov 24 15:38:45 2008 +0100 i386: get rid of the use of KPROBE_ENTRY / KPROBE_END entry_32.S is now the only user of KPROBE_ENTRY / KPROBE_END, treewide. This patch reorders entry_64.S and explicitly generates a separate section for functions that need the protection. The generated code before and after the patch is equal. The KPROBE_ENTRY and KPROBE_END macro's are removed too. Signed-off-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit ddeb8f2149de280d54f0c8910cead42e6042b2cb Author: Alexander van Heukelum Date: Mon Nov 24 13:24:28 2008 +0100 x86_64: get rid of the use of KPROBE_ENTRY / KPROBE_END Impact: clean up assembly macros and annotations - with some object impact entry_64.S is the only user of KPROBE_ENTRY / KPROBE_END on x86_64. This patch reorders entry_64.S and explicitly generates a separate section for functions that need the protection. The generated code before and after the patch is equal. Implicitly changing sections in assembly files makes it more difficult to follow why the assembler is doing certain things. For example, .p2align 5 KPROBE_ENTRY(...) was not doing what you would expect. Other section changes (__ex_table, .fixup, .init.rodata) are done explicitly already. Signed-off-by: Alexander van Heukelum Acked-by: Jan Beulich Signed-off-by: Ingo Molnar commit 83a8df618eb04bd2819a758f3b409b1449862434 Author: Frederic Weisbecker Date: Thu Nov 27 01:46:33 2008 +0100 tracing/function-graph-tracer: enhancements for the trace output Impact: enhance the output of the graph-tracer This patch applies some ideas of Ingo Molnar and Steven Rostedt. * Output leaf functions in one line with parenthesis, semicolon and duration output. * Add a second column (after cpu) for an overhead sign. if duration > 100 us, "!" if duration > 10 us, "+" else " " * Print output in us with remaining nanosec: u.n * Print duration on the right end, following the indentation of the functions. Use also visual clues: "-" on entry call (no duration to output) and "+" on return (duration output). The name of the tracer has been fixed as well: function-branch becomes function_branch. Here is an example of the new output: CPU[000] dequeue_entity() { - CPU[000] update_curr() { - CPU[000] update_min_vruntime(); + 0.512 us CPU[000] } + 1.504 us CPU[000] clear_buddies(); + 0.481 us CPU[000] update_min_vruntime(); + 0.504 us CPU[000] } + 4.557 us CPU[000] hrtick_update() { - CPU[000] hrtick_start_fair(); + 0.489 us CPU[000] } + 1.443 us CPU[000] + } + 14.655 us CPU[000] + } + 15.678 us CPU[000] + } + 16.686 us CPU[000] msecs_to_jiffies(); + 0.481 us CPU[000] put_prev_task_fair(); + 0.504 us CPU[000] pick_next_task_fair(); + 0.482 us CPU[000] pick_next_task_rt(); + 0.504 us CPU[000] pick_next_task_fair(); + 0.481 us CPU[000] pick_next_task_idle(); + 0.489 us CPU[000] _spin_trylock(); + 0.655 us CPU[000] _spin_unlock(); + 0.609 us CPU[000] ------------8<---------- thread bash-2794 ------------8<---------- CPU[000] finish_task_switch() { - CPU[000] _spin_unlock_irq(); + 0.722 us CPU[000] } + 2.369 us CPU[000] ! } + 501972.605 us CPU[000] ! } + 501973.763 us CPU[000] copy_from_read_buf() { - CPU[000] _spin_lock_irqsave(); + 0.670 us CPU[000] _spin_unlock_irqrestore(); + 0.699 us CPU[000] copy_to_user() { - CPU[000] might_fault() { - CPU[000] __might_sleep(); + 0.503 us CPU[000] } + 1.632 us CPU[000] __copy_to_user_ll(); + 0.542 us CPU[000] } + 3.858 us CPU[000] tty_audit_add_data() { - CPU[000] _spin_lock_irq(); + 0.609 us CPU[000] _spin_unlock_irq(); + 0.624 us CPU[000] } + 3.196 us CPU[000] _spin_lock_irqsave(); + 0.624 us CPU[000] _spin_unlock_irqrestore(); + 0.625 us CPU[000] + } + 13.611 us CPU[000] copy_from_read_buf() { - CPU[000] _spin_lock_irqsave(); + 0.624 us CPU[000] _spin_unlock_irqrestore(); + 0.616 us CPU[000] } + 2.820 us CPU[000] Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit c7cc77307669336a08928ab8668bdb3f3bcc021b Merge: 0bfc24559d7945506184d86739fe365a181f06b7 d144d5ee6a265823d39f75ecfed351a516295183 437f24fb897d409a9978eb71ecfaf279dcd94acd f3f47a6768a29448866da4422b6f6bee485c947f Author: Ingo Molnar Date: Thu Nov 27 10:56:13 2008 +0100 Merge branches 'tracing/blktrace', 'tracing/ftrace', 'tracing/function-graph-tracer' and 'tracing/power-tracer' into tracing/core commit 40a914fa72abdb9193ecad7dd82e48d952ab9d24 Author: Alexander Duyck Date: Thu Nov 27 00:24:37 2008 -0800 igb: Add support for pci-e Advanced Error Reporting Add the calls necessary to enable advanced error reporting for igb on systems with AER enabled. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit f4113030e73db80bc5368a8303458008975402dd Author: Jeff Kirsher Date: Thu Nov 27 00:23:37 2008 -0800 e100: cleanup link up/down messages The system log messages created on a link status change need to follow a specific format to work with tools some customers use. This also makes the messages consistant with other Intel driver link messages. Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit d276016cf990f492cb33a1ff61d789730b3f0d6d Author: Jeff Kirsher Date: Thu Nov 27 00:23:12 2008 -0800 ixgb: cleanup link up/down messages The system log messages created on a link status change need to follow a specific format to work with tools some customers use. This also makes the messages consistant with other Intel driver link messages. Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit b30c4d8f8210bc4ea92942ab786407ec2d780549 Author: Jeff Kirsher Date: Thu Nov 27 00:22:45 2008 -0800 e1000: cleanup link up/down messages The system log messages created on a link status change need to follow a specific format to work with tools some customers use. This also makes the messages consistant with other Intel driver link messages. Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit a46e534bc76ed4e92daa181526b30274d37c6979 Author: Jeff Kirsher Date: Thu Nov 27 00:22:21 2008 -0800 ixgbe: cleanup link up/down messages The system log messages created on a link status change need to follow a specific format to work with tools some customers use. This also makes the messages consistant with other Intel driver link messages. Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 527d47c11149afb5dd59eaca57d5b4d816ac4f20 Author: Alexander Duyck Date: Thu Nov 27 00:21:39 2008 -0800 igb: link up/down messages must follow a specific format The system log messages created on a link status change need to follow a specific format to work with tools some customers use. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit c4106aa88a440430d387e022f2ad6dc1e0d52e98 Author: Harvey Harrison Date: Thu Nov 27 00:12:47 2008 -0800 decnet: remove private wrappers of endian helpers Signed-off-by: Harvey Harrison Reviewed-by: Steven Whitehouse Signed-off-by: David S. Miller commit 5b9ab2ec04ec1e1e53939768805612ac191d7ba2 Merge: 851fd7bd88524bb4e20f3def3127cd9167d6d0cf 3ec192559033ed457f0d7856838654c100fc659f Author: David S. Miller Date: Wed Nov 26 23:48:40 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/hp-plus.c drivers/net/wireless/ath5k/base.c drivers/net/wireless/ath9k/recv.c net/wireless/reg.c commit 12666f050b3b4b122f61ef12707f33fadb4a78b5 Author: Daniel Mack Date: Thu Nov 27 08:21:05 2008 +0100 ALSA: snd-usb-caiaq: clean up the control adding code snd-usb-caiaq: clean up the control adding code by moving dulpicate code to a function. Signed-off-by: Daniel Mack Signed-off-by: Takashi Iwai commit 851fd7bd88524bb4e20f3def3127cd9167d6d0cf Author: Divy Le Ray Date: Wed Nov 26 15:38:36 2008 -0800 cxgb3: Update FW loading path. Update FW loading path to accomodate in-kernel images location Signed-off-by: Divy Le Ray Signed-off-by: David S. Miller commit ad58633c8381e88b54055771877726d3d5d24734 Author: Divy Le Ray Date: Wed Nov 26 15:37:50 2008 -0800 cxgb3: integrate FW and protocol engines in the kernel Include firmware and protocol images in the kernel image if requested Signed-off-by: Divy Le Ray Signed-off-by: David S. Miller commit 5256554489531f3e177e7308752d8f0681cdd5a6 Author: Divy Le Ray Date: Wed Nov 26 15:35:59 2008 -0800 cxgb3: avoid potential memory leak. Add consistency in alloc_ring() parameter checking to avoid potential memory leaks. alloc_ring() callers are correct fo far. Signed-off-by: Divy Le Ray Signed-off-by: David S. Miller commit 43a944f37364e22fff4cbc1e12d227b196e47612 Author: Divy Le Ray Date: Wed Nov 26 15:35:26 2008 -0800 cxgb3: set hard_xmit in the netdev_ops Fix t3_eth_xmit() missing into the netdev_ops structure. Signed-off-by: Divy Le Ray Signed-off-by: David S. Miller commit b5ddedc9cc01b1d86015af08c5f1694191804530 Merge: 244e6c2d0724bc4908a1995804704bdee3b31528 b235507cc5e552b9e75678d596727249e8fba01b Author: David S. Miller Date: Wed Nov 26 15:28:40 2008 -0800 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 commit 244e6c2d0724bc4908a1995804704bdee3b31528 Author: Jarek Poplawski Date: Wed Nov 26 15:24:32 2008 -0800 pkt_sched: gen_estimator: Optimize gen_estimator_active() Since all other gen_estimator functions use bstats and rate_est params together, and searching for them is optimized now, let's use this also in gen_estimator_active(). The return type of gen_estimator_active() is changed to bool, and gen_find_node() parameters to const, btw. In tcf_act_police_locate() a check for ACT_P_CREATED is added before calling gen_estimator_active(). Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 54f01916297bafc18bd7df4e2300a0544a84fce3 Author: Daniel Mack Date: Wed Nov 26 17:47:36 2008 +0100 ASoC: Allow more routing features for tlv320aic3x This patch enables more routing functions for tlv320aic3x codecs. It is now possible to - control the volume of the PGA bypass path for the HPL, HPR, HPLCOM and HPRCOM outputs individually - route right line1 input to the left ADC channel - route left line1 input to the right ADC channel - route right mic3 input to left DAC channel - route left mic3 input to right DAC channel - route left line1 input to right line1 output - route right line1 input to left line1 output Signed-off-by: Daniel Mack Signed-off-by: Mark Brown commit b235507cc5e552b9e75678d596727249e8fba01b Author: John W. Linville Date: Tue Nov 25 16:47:36 2008 -0500 mac80211_hwsim: fix-up some print_mac merge damage Some print_mac -> %pM conversions got lost in some merge or another... Signed-off-by: John W. Linville commit 860c6e6a15c5082e1a1ff1faeb56cdf439380e87 Author: Ivan Kuten Date: Mon Nov 24 15:17:54 2008 -0500 mac80211: fix unaligned access in ieee80211_wep_encrypt_data Signed-off-by: Ivan Kuten Signed-off-by: John W. Linville commit b50563a68520dea3a19b5a8013c4ae0f8e3b49dd Author: Christian Lamparter Date: Mon Nov 24 14:52:51 2008 +0100 p54: fix wmm queue settings This patch fixes a regression (introduced by "p54: more definitions form lmac_longbow.h and pda.h") It turned out that the "ret" variable wasn't initialized and this caused the following warnings/errors to appear: wmaster1: failed to set TX queue parameters for queue 2 wmaster1: failed to set TX queue parameters for queue 3 wmaster1: failed to set TX queue parameters for queue 1 wmaster1: failed to set TX queue parameters for queue 0 Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 99405f930fda280c9114b15e178902cd204f967f Author: Sujith Date: Mon Nov 24 12:08:35 2008 +0530 ath9k: Use proper TX channel width for setting channels The TX channel width of the BSS can be obtained only after association. In all cases, default to HT20 if HT is enabled, and set chan width to HT40 only if the BSS supports it. Signed-off-by: Sujith Signed-off-by: John W. Linville commit ff37e337beb838d4c2540fa93b2c4c632ee17750 Author: Sujith Date: Mon Nov 24 12:07:55 2008 +0530 ath9k: Code scrub Merge core.c and base.c Remove Antenna Diversity (unused now). Remove unused chainmask handling code. Comment, indentation scrub. Signed-off-by: Sujith Signed-off-by: John W. Linville commit bf8c1ac6d81ba8c0e4dc2215f84f5e2a3c8227e8 Author: Jouni Malinen Date: Sat Nov 22 22:00:31 2008 +0200 nl80211: Change max TX power to be in mBm instead of dBm In order to be consistent with NL80211_ATTR_POWER_RULE_MAX_EIRP, change NL80211_FREQUENCY_ATTR_MAX_TX_POWER to use mBm and U32 instead of dBm and U8. This is a userspace interface change, but the previous version had not yet been pushed upstream and there are no userspace programs using this yet, so there is justification to get this change in as long as it goes in before the previous version gets out. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 39d1ffee57c7ce02c90ec8e9272df8aa8ddf600f Author: David Kilroy Date: Sat Nov 22 10:37:28 2008 +0000 orinoco: Provide option to avoid unnecessary fw caching Make firmware caching on startup optional, and make it default. When the option is not selected and PM_SLEEP is configured, then cache firmware in the suspend pm_notifier. This configuration saves about 64k RAM in normal use, but can lead to a situation where the driver is configured to use a different firmware. Signed-off by: David Kilroy Signed-off-by: John W. Linville commit ac7cafd72261857278dff9f737e600b30088653b Author: David Kilroy Date: Sat Nov 22 10:37:27 2008 +0000 orinoco: Resume spectrum_cs in the same way as orinoco_cs Retrieval of external firmware has been resolved, and should work with the standard orinoco resume algorithm. This fixes an issue where priv->hw_unavailable indicates the card is ready when firmware has not been loaded. Signed-off by: David Kilroy Signed-off-by: John W. Linville commit 2cea7b261942009e90befbe41d998e2931547026 Author: David Kilroy Date: Sat Nov 22 10:37:26 2008 +0000 orinoco: Cache Symbol firmware Signed-off by: David Kilroy Signed-off-by: John W. Linville commit 7473431297761fa644a128a497b91e299676f501 Author: David Kilroy Date: Sat Nov 22 10:37:25 2008 +0000 orinoco: Separate fw caching from download This refactorring will make it easier to share logic with Symbol firmware. Signed-off by: David Kilroy Signed-off-by: John W. Linville commit cb71d9bafb37adab50ddce53bb119a84b4966c06 Author: Luis R. Rodriguez Date: Fri Nov 21 17:41:33 2008 -0800 ath9k: Handle -ENOMEM on RX gracefully We would get an oops on RX on -ENOMEM by passing NULL to the hardware on ath_rx_buf_link(). The oops would look something like this: ath_rx_tasklet+0x515/0x53b ath9k_tasklet+0x48 tasklet_action __do_softirq irq_exit do_IRQ RIP: ath_rx_buf_link+0x3a We correct this by handling the requeue directly on the ath_rx_tasklet() and trying to allocate an skb *prior* to sending up the last hardware processed skb. If we run out of memory this gauranteees we have skbs to work with while it simply drops new received frames. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit 24689c8590be6bc0486af665c5ceda6aeff4d53a Author: Henrique de Moraes Holschuh Date: Fri Nov 21 20:40:10 2008 -0200 rfkill: always call get_state() hook on resume We "optimize" away the get_state() hook call on rfkill_toggle_radio when doing a forced state change. This means the resume path is not calling get_state() as it should. Call it manually on the resume handler, as we don't want to mess with the EPO path by removing the optimization. This has the added benefit of making it explicit that rfkill->state could have been modified before we hit the rfkill_toggle_radio() call in the class resume handler. Signed-off-by: Henrique de Moraes Holschuh Acked-by: Ivo van Doorn Cc: Matthew Garrett Cc: Alan Jenkins Signed-off-by: John W. Linville commit f80b5e99c7dac5a9a0d72496cec5075a12cd1476 Author: Henrique de Moraes Holschuh Date: Fri Nov 21 20:40:09 2008 -0200 rfkill: preserve state across suspend The rfkill class API requires that the driver connected to a class call rfkill_force_state() on resume to update the real state of the rfkill controller, OR that it provides a get_state() hook. This means there is potentially a hidden call in the resume code flow that changes rfkill->state (i.e. rfkill_force_state()), so the previous state of the transmitter was being lost. The simplest and most future-proof way to fix this is to explicitly store the pre-sleep state on the rfkill structure, and restore from that on resume. Signed-off-by: Henrique de Moraes Holschuh Acked-by: Ivo van Doorn Cc: Matthew Garrett Cc: Alan Jenkins Signed-off-by: John W. Linville commit 5925d976fbe99859d636e7075e5304625503c5fe Author: Vivek Natarajan Date: Fri Nov 21 22:19:50 2008 -0800 mac80211: Look out for some other AP when disassoc is received. When a disassoc packet is received from the AP with a reason code of 'leaving the BSS', mac80211 should go into DISABLED state just as it would do if the AP suddenly went away for some reason, as that is what will happen shortly after the AP leaves anyway. Signed-off-by: Vivek Natarajan Acked-by: Johannes Berg Signed-off-by: John W. Linville commit e2f367f269fe19375f10e63efe0f2a6d3ddef8e6 Author: Jouni Malinen Date: Fri Nov 21 19:01:30 2008 +0200 nl80211: Report max TX power in NL80211_BAND_ATTR_FREQS This is useful information to provide for userspace (e.g., hostapd needs this to generate Country IE). Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 1048643ea94d742bd409f343e284af430656fd6c Author: Felix Fietkau Date: Thu Nov 20 15:16:22 2008 +0100 ath5k: Clean up eeprom parsing and add missing calibration data This patch brings the ath5k eeprom parsing code in sync with the work done on ath_info by Nick Kossifidis and integrates the missing parts based on the code of the Atheros Legacy HAL release. Signed-off-by: Felix Fietkau Signed-off-by: John W. Linville commit 7ac47010a444d9f4285cf1ae06780633a112489b Author: Vasanthakumar Thiagarajan Date: Thu Nov 20 11:51:18 2008 +0530 ath9k: Dont update rate control for every AMPDU Update the rate control only with the tx status of first AMPDU of an aggregation. This patch fixes frequent drops in throughput. Signed-off-by: Vasanthakumar Thiagarajan Signed-off-by: John W. Linville commit 40fc95d57caf258e20282f6526b695426d65a73a Author: Winkler, Tomas Date: Wed Nov 19 15:32:27 2008 -0800 iwlwifi: TX update chicken bits This instructs FH to increment the retry count of a packet when it is brought from the memory to TX-FIFO to save transactions during aggregation flow. Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 31a73fe4f3284d94d52774c285e9e98a5f441d21 Author: Winkler, Tomas Date: Wed Nov 19 15:32:26 2008 -0800 iwlwifi: TX setup fix confusion between TX queue and TX DMA channel This patch configures correctly TX DMA channel. It is not the same as TX queue. Signed-off-by: Tomas Winkler Acked-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 25e35a56d5f4795cf52cdd0830a91e3103396cfe Author: Winkler, Tomas Date: Wed Nov 19 15:32:25 2008 -0800 iwlwifi: 4965 define firmware file name once Apply same idiom as in 5000 introduced by 'iwlwifi: define firmware file name once' Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 201706ac0b1ab6df5343119883964ec7272844b0 Author: Tomas Winkler Date: Wed Nov 19 15:32:24 2008 -0800 iwlwifi: enable base band calibration in 5000 HW This patch adds base band calibration support. Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 83dde8c90522b89366e241bdbd69113f7094c249 Author: Winkler, Tomas Date: Wed Nov 19 15:32:23 2008 -0800 iwlwifi: move iwl_clear_stations_table to iwl-sta.c This patch moves iwl_clear_stations_table into iwl-sta.c Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit ce546fd2eacdbd8dc15f3d2ffd9a95661d082919 Author: Abhijeet Kolekar Date: Wed Nov 19 15:32:22 2008 -0800 iwl3945 : Fix ad-hoc mode for 3945 Patch fixes the ad-hoc mode by 1) Removing redundant clear_stations_table which prevented generation of beacons. 2) Setting assoc_id to 1. It was never set so preventing tx flow in iwl3945_tx_skb. Signed-off-by: Abhijeet Kolekar Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 0e149cf5a1b1900484f4b808d59a5f246cd720be Author: Bob Copeland Date: Mon Nov 17 23:40:38 2008 -0500 ath5k: set mac address in add_interface Configure the mac address in add_interface and clear it in remove_interface so that users can change the mac address to something other than the one in the eeprom. Also avoid setting it at attach time so that we won't ack packets until fully set up. Signed-off-by: Bob Copeland Signed-off-by: John W. Linville commit 8f93b8b337763a58fcdf23333ffe752db6c93bae Author: Sujith Date: Tue Nov 18 09:10:42 2008 +0530 ath9k: Use straightforward PCI routines to setup the TX buffer. Signed-off-by: Sujith Signed-off-by: John W. Linville commit daa9deb359252496796fa2b7420012e252b327b6 Author: Sujith Date: Tue Nov 18 09:10:22 2008 +0530 ath9k: Update TX trigger level on a FIFO underrun. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 788a3d6f3df595a6537ef537433c870d090afe02 Author: Sujith Date: Tue Nov 18 09:09:54 2008 +0530 ath9k: Fix bug in deciphering channel flags CHANNEL_CCK flag is set for all 2 Ghz channels, so IS_CHAN_CCK() would turn out to be true for all channles in that band. Use IS_CHAN_B() now, which checks the channel mode and not the channel flags. Signed-off-by: Sujith Signed-off-by: John W. Linville commit c428839008f6638317a0db102d4e65d631c288a6 Author: Sujith Date: Tue Nov 18 09:09:30 2008 +0530 ath9k: Move TX completion routine to xmit.c Also, use a helper function to setup RC status data when processing completed TX descriptors. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 2c5a744d43a6a08666930906742fbe704739ba6f Author: Sujith Date: Tue Nov 18 09:08:33 2008 +0530 ath9k: Use helpers Break down huge functions, use helper functions or macros instead. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 46d14a58ffb42702e4c1b8bb88cfa05414617f4c Author: Sujith Date: Tue Nov 18 09:08:13 2008 +0530 ath9k: General code scrub Replace TRUE/FALSE macros with VALID/INVALID macros. Follow a consistent variable convention. Remove unnecessary comments. Add all RC phy macros into a single enum. Merge functions into reasonably sized entities. Signed-off-by: Sujith Signed-off-by: John W. Linville commit e63835b0f4d8545942fd41b3ca32bbf71bd73e4b Author: Sujith Date: Tue Nov 18 09:07:53 2008 +0530 ath9k: Remove ath9k_rate_table Maintaining two sets of rate tables is redundant, remove one and use struct ath_rate_table exclusively. Signed-off-by: Sujith Signed-off-by: John W. Linville commit a8efee4f4740c61fccaf73608df282c4ee24ae86 Author: Sujith Date: Tue Nov 18 09:07:30 2008 +0530 ath9k: Use rate_driver_data Remove the hack using vif, and use rate_driver_data within skb->cb to hold driver specific rate information. Setup the rate series in the skb's tx control area and remove all references to ath9k specific rate series ( using struct ath_rc_series ). Signed-off-by: Sujith Signed-off-by: John W. Linville commit fe7f4a77450c1d0e463a9b1456b40c2305433e41 Author: Sujith Date: Tue Nov 18 09:07:06 2008 +0530 ath9k: Remove ath_rate_softc Move the hw rate tables to ath_softc, and access them directly. tx_triglevel_max is global, move it to ath_rate_node. Now that ath_rate_softc is gone, rate control attach becomes simpler. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 5ddfac3b550250388f1222ec7d09069784a68af6 Author: Sujith Date: Tue Nov 18 09:06:44 2008 +0530 ath9k: Remove rate control reference in VAP Rate control init is now confined to itself, using the HT capabilites of the STA from rate_init(). Signed-off-by: Sujith Signed-off-by: John W. Linville commit ffd651c620a2f27502ee5d4517a122c072f13073 Author: Sujith Date: Tue Nov 18 09:06:18 2008 +0530 ath9k: We don't support non-HT devices, so remove superfluous code. Signed-off-by: Sujith Signed-off-by: John W. Linville commit be0418ada3fad110977a9d5fa16d4907d4e7d726 Author: Sujith Date: Tue Nov 18 09:05:55 2008 +0530 ath9k: Revamp RX handling Remove a lot of old, crufty code and make RX status reporting a bit sane and clean. Do not do anything to the RX skb before unmapping. So in ath_rx_tasklet(), move the skb_put() after PCI unmap. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 2b406f1e68dd5348384fd166ac532af46bfc87fc Author: Sujith Date: Tue Nov 18 09:05:35 2008 +0530 ath9k: Nuke fixed rate handling in driver Signed-off-by: Sujith Signed-off-by: John W. Linville commit 46494e6df8f6d9739d56c8b980229af4e5d2353f Author: Sujith Date: Tue Nov 18 09:05:13 2008 +0530 ath9k: Remove half/quarter rate tables Half/Quarter rate tables are needed only for legacy chipsets. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 4df8ec64fdec5a99ebfe41467d414e235d5d051e Author: Sujith Date: Tue Nov 18 09:04:21 2008 +0530 ath9k: Remove ath_rate_newassoc() Signed-off-by: Sujith Signed-off-by: John W. Linville commit 7b4d27357aebfdaa039f365fd24f2a795af5c0bb Author: Sujith Date: Tue Nov 18 09:04:00 2008 +0530 ath9k: Remove ath_setup_rates Setup legacy rates in ath_rate_init() itself. Signed-off-by: Sujith Signed-off-by: John W. Linville commit fe60594a76d04b4fdea597bf93e4186a03d8d60c Author: Sujith Date: Tue Nov 18 09:03:36 2008 +0530 ath9k: Simplify RC alloc/free functions Signed-off-by: Sujith Signed-off-by: John W. Linville commit 256b77593f3ec07f58cd1f0d573ffe9ccd941b5b Author: Sujith Date: Tue Nov 18 09:03:12 2008 +0530 ath9k: Merge struct ath_tx_ratectrl with ath_rate_node Avoid casting of ath_tx_ratctrl and access the elements directly. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 3fcdfb4b940a226184bc01bfc5c58b32b509b965 Author: Vasanthakumar Thiagarajan Date: Tue Nov 18 01:19:56 2008 +0530 ath9k: Fix panic while unregistering rfkill [ 6133.670329] BUG: unable to handle kernel NULL pointer dereference at 0000000000000010 [ 6133.672802] IP: [] ieee80211_stop_queues+0x26/0x40 [mac80211] [ 6133.672802] PGD 759dc067 PUD 74f1d067 PMD 0 [ 6133.672802] Oops: 0002 [#1] PREEMPT SMP [ 6133.672802] last sysfs file: /sys/class/backlight/acpi_video0/brightness [ 6133.672802] CPU 0 [ 6133.672802] Modules linked in: ath9k(-) mac80211 pciehp pci_hotplug arc4 ecb joydev pcmcia ppdev lp ppp_generic psmouse sg pcspkr s] [ 6133.735830] Pid: 4445, comm: rmmod Tainted: G W 2.6.28-rc5-wl #1 [ 6133.735830] RIP: 0010:[] [] ieee80211_stop_queues+0x26/0x40 [mac80211] [ 6133.735830] RSP: 0018:ffff88007d1efd10 EFLAGS: 00010246 [ 6133.735830] RAX: 0000000000000000 RBX: ffff880074f41aa0 RCX: 0000000000000000 [ 6133.735830] RDX: 0000000000000010 RSI: 0000000000000000 RDI: ffff880074f40340 [ 6133.735830] RBP: ffff880074990000 R08: 0000000000000000 R09: 000000000000224d [ 6133.735830] R10: 0000000000000000 R11: ffffffff8031dc70 R12: 0000000000000000 [ 6133.735830] R13: 0000000000000001 R14: ffff880074f46c9c R15: 0000000000000000 [ 6133.735830] FS: 00007f1e2e0bc6f0(0000) GS:ffffffff805e0b80(0000) knlGS:0000000000000000 [ 6133.735830] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 6133.735830] CR2: 0000000000000010 CR3: 0000000075593000 CR4: 00000000000006e0 [ 6133.735830] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 6133.735830] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 6133.735830] Process rmmod (pid: 4445, threadinfo ffff88007d1ee000, task ffff88007c0c8000) [ 6133.735830] Stack: [ 6133.735830] ffffffffa034d583 ffff88007c7d9410 ffff88007c7d9410 ffff88007c7d9410 [ 6133.735830] ffffffff80481dab ffff880074f41aa0 00000000fffffff0 0000000000000000 [ 6133.735830] 0000000000000001 0000000000000001 ffffffffa034d8a5 ffff88007c7d9400 [ 6133.735830] Call Trace: [ 6133.735830] [] ? ath_radio_disable+0x33/0x150 [ath9k] [ 6133.735830] [] ? __mutex_lock_slowpath+0x20b/0x2a0 [ 6133.735830] [] ? ath_sw_toggle_radio+0x65/0xa0 [ath9k] [ 6133.735830] [] ? rfkill_toggle_radio+0x74/0x140 [rfkill] [ 6133.735830] [] ? rfkill_remove_switch+0x67/0x80 [rfkill] [ 6133.735830] [] ? rfkill_unregister+0x25/0x50 [rfkill] [ 6133.735830] [] ? ath_detach+0xf5/0x140 [ath9k] [ 6133.735830] [] ? ath_pci_remove+0x29/0x80 [ath9k] [ 6133.735830] [] ? pci_device_remove+0x2c/0x60 [ 6133.735830] [] ? __device_release_driver+0x99/0x100 [ 6133.735830] [] ? driver_detach+0xc0/0xd0 [ 6133.735830] [] ? bus_remove_driver+0x8e/0xd0 [ 6133.735830] [] ? pci_unregister_driver+0x36/0xa0 [ 6133.735830] [] ? exit_ath_pci+0x10/0x29 [ath9k] [ 6133.735830] [] ? sys_delete_module+0x1cb/0x2d0 [ 6133.735830] [] ? do_munmap+0x349/0x390 [ 6133.735830] [] ? __up_write+0x21/0x150 [ 6133.735830] [] ? system_call_fastpath+0x16/0x1b [ 6133.735830] Code: c3 0f 1f 40 00 0f b7 57 5e 0f b7 47 5c 01 c2 74 30 31 c9 66 90 48 8b 57 78 0f b7 c1 48 c1 e0 07 48 03 82 00 03 00 [ 6133.735830] RIP [] ieee80211_stop_queues+0x26/0x40 [mac80211] Signed-off-by: Vasanthakumar Thiagarajan Signed-off-by: John W. Linville commit 1548c86ab1552199a3b99b958ccfb590fc9c8f84 Author: Larry Finger Date: Mon Nov 17 09:08:21 2008 -0600 rtl8187: Fix transmission count sent to mac80211 In the commit entitled "mac80211/drivers: rewrite the rate control API", the meaning of the packet transmit count was changed from the number of retries to the total number. In driver rtl8187, this change was missed. Signed-off-by: Larry Finger Acked-by: Herton Ronaldo Krzesinski Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 1dc5a84166d83c892cbf192cad58ebdde95d3ac4 Author: Larry Finger Date: Sun Nov 16 17:09:25 2008 -0600 mac80211: Fix pid rate-setting algorithm to allow rate changes In commit 9ea2c74 named "mac80211/drivers: rewrite the rate control API", the meaning of status.rates[i].count was changed from number of retries to total number of tries. As a result, the pid rate-setting algorithm fails because every packet appears to have needed a retransmit. Signed-off-by: Larry Finger Acked-by: Johannes Berg Signed-off-by: John W. Linville commit d507748ac6de67369e76058a8a921cd22734f40a Author: Ivo van Doorn Date: Sun Nov 16 00:08:50 2008 +0100 rt2x00: Don't switch off LED on initialization When we switch off the LEDS during initialization we kill rt73usb from proper functioning. The immediate result after the first LED command are MCU failures and a complete breakdown of TX/RX. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit f941f8590c06c6b1a77c4b5a5df59f39a3c7d1e9 Author: Andrey Borzenkov Date: Sat Nov 15 17:15:09 2008 +0300 orinoco: indicate it is using dBm in wireless_stats and spy Since WE7 /proc/net/wireless checks whether level and noise are in dBm and shows them accordingly. Indicate that we return signal and noice levels in dBm. Before: Inter-| sta-| Quality | Discarded packets | Missed | WE face | tus | link level noise | nwid crypt frag retry misc | beacon | 22 eth1: 0000 65. 219. 165. 0 0 148 41 0 0 After: Inter-| sta-| Quality | Discarded packets | Missed | WE face | tus | link level noise | nwid crypt frag retry misc | beacon | 22 eth1: 0000 65. -37. -91. 0 0 0 0 0 0 While at it, replace raw numbers with appropriate macro. Signed-off-by: Andrey Borzenkov Signed-off-by: Pavel Roskin Signed-off-by: John W. Linville commit 8eb41c93685318d177276d1819915571aca7ebb1 Author: Luis R. Rodriguez Date: Fri Nov 14 17:44:53 2008 -0800 mac80211: make Minstrel the default rate control algorithm This makes minstrel the default rate control algorithm for mac80211. For more information see: http://wireless.kernel.org/en/developers/Documentation/mac80211/RateControl/minstrel If someone can come up with a better algorithm they get a prize (undisclosed). Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit eea0579fc85e64e9f05361d5aacf496fe7a151aa Author: Takashi Iwai Date: Wed Nov 26 14:13:03 2008 +0100 ALSA: pcsp - Fix starting the stream with HRTIMER_CB_IRQSAFE_UNLOCK With the callback mode HRTIMER_CB_IRQSAFE_UNLOCK, the start of the stream with zero delay doesn't work. Since IRQSAFE mode is removed, we have to change the pcsp start-up code. This patch splits the callback function to two parts, the triggering of the port and the calculation of the expire time, and the update of the ALSA PCM core. The first part is called both from the trigger-start and the hrtimer callback while the latter is handled only in the hrtimer callback. Signed-off-by: Takashi Iwai commit e7dd8c1bdacf658b0ade51facb2f7eaf40eb0ac4 Merge: ed313489badef16d700f5a3be50e8fd8f8294bc8 bc4a68fed4b4c01005ef3c71ede6a8cbe91b7dc9 Author: Takashi Iwai Date: Wed Nov 26 14:12:42 2008 +0100 Merge branch 'topic/misc' into topic/pcsp-fix Conflicts: sound/drivers/pcsp/pcsp_lib.c commit 0bfc24559d7945506184d86739fe365a181f06b7 Author: Ingo Molnar Date: Wed Nov 26 11:59:56 2008 +0100 blktrace: port to tracepoints, update Port to the new tracepoints API: split DEFINE_TRACE() and DECLARE_TRACE() sites. Spread them out to the usage sites, as suggested by Mathieu Desnoyers. Signed-off-by: Ingo Molnar Acked-by: Mathieu Desnoyers commit 5f3ea37c7716db4e894a480e0c18b24399595b6b Author: Arnaldo Carvalho de Melo Date: Thu Oct 30 08:34:33 2008 +0100 blktrace: port to tracepoints This was a forward port of work done by Mathieu Desnoyers, I changed it to encode the 'what' parameter on the tracepoint name, so that one can register interest in specific events and not on classes of events to then check the 'what' parameter. Signed-off-by: Arnaldo Carvalho de Melo Signed-off-by: Jens Axboe Signed-off-by: Ingo Molnar commit 414ff491b2ab68359c7a2037b30ccfea20d829d4 Author: Mark Brown Date: Wed Nov 26 10:32:26 2008 +0000 ASoC: Fix word wrapping in OMAP Kconfig Signed-off-by: Mark Brown commit 3d4cd60ed0533d3b33832e298530c7b021da982b Author: David S. Miller Date: Wed Nov 26 01:52:15 2008 -0800 smc-mca: Fix build failure due to typo. ultra_netdev_ops --> ultramca_netdev_ops Signed-off-by: David S. Miller commit 70355602879229c6f8bd694ec9c0814222bc4936 Author: Eric Dumazet Date: Wed Nov 26 01:08:18 2008 -0800 net: release skb->dst in sock_queue_rcv_skb() When queuing a skb to sk->sk_receive_queue, we can release its dst, not anymore needed. Since current cpu did the dst_hold(), refcount is probably still hot int this cpu caches. This avoids readers to access the original dst to decrement its refcount, possibly a long time after packet reception. This should speedup UDP and RAW receive path. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 4db646b1af8fdcf01d690d29eeae44cd937edb0d Author: Hannes Eder Date: Sun Nov 23 20:49:52 2008 +0100 x86: microcode: fix sparse warnings Impact: make global variables and a function static Fix following sparse warnings: arch/x86/kernel/microcode_core.c:102:22: warning: symbol 'microcode_ops' was not declared. Should it be static? arch/x86/kernel/microcode_core.c:206:24: warning: symbol 'microcode_pdev' was not declared. Should it be static? arch/x86/kernel/microcode_core.c:322:6: warning: symbol 'microcode_update_cpu' was not declared. Should it be static? arch/x86/kernel/microcode_intel.c:468:22: warning: symbol 'microcode_intel_ops' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: Ingo Molnar commit f3f47a6768a29448866da4422b6f6bee485c947f Author: Arjan van de Ven Date: Sun Nov 23 16:49:58 2008 -0800 tracing: add "power-tracer": C/P state tracer to help power optimization Impact: new "power-tracer" ftrace plugin This patch adds a C/P-state ftrace plugin that will generate detailed statistics about the C/P-states that are being used, so that we can look at detailed decisions that the C/P-state code is making, rather than the too high level "average" that we have today. An example way of using this is: mount -t debugfs none /sys/kernel/debug echo cstate > /sys/kernel/debug/tracing/current_tracer echo 1 > /sys/kernel/debug/tracing/tracing_enabled sleep 1 echo 0 > /sys/kernel/debug/tracing/tracing_enabled cat /sys/kernel/debug/tracing/trace | perl scripts/trace/cstate.pl > out.svg Signed-off-by: Arjan van de Ven Signed-off-by: Ingo Molnar commit 4f199629b0fba95fd5caecbf35ed68417d9a9b7a Author: Qinghuang Feng Date: Tue Nov 25 23:24:49 2008 +0800 ALSA: sound/pci/hda/hda_codec.c: cleanup kernel-doc There is no argument named @state in snd_hda_resume, remove its' comment. Signed-off-by: Qinghuang Feng Signed-off-by: Takashi Iwai commit 437f24fb897d409a9978eb71ecfaf279dcd94acd Author: Steven Rostedt Date: Wed Nov 26 00:16:27 2008 -0500 ftrace: add cpu annotation for function graph tracer Impact: enhancement for function graph tracer When run on a SMP box, the function graph tracer is confusing because it shows the different CPUS as changes in the trace. This patch adds the annotation of 'CPU[###]' where ### is a three digit number. The output will look similar to this: CPU[001] dput() { CPU[000] } 726 CPU[001] } 487 CPU[000] do_softirq() { CPU[001] } 2221 CPU[000] __do_softirq() { CPU[000] __local_bh_disable() { CPU[001] unroll_tree_refs() { CPU[000] } 569 CPU[001] } 501 CPU[000] rcu_process_callbacks() { CPU[001] kfree() { What makes this nice is that now you can grep the file and produce readable format for a particular CPU. # cat /debug/tracing/trace > /tmp/trace # grep '^CPU\[000\]' /tmp/trace > /tmp/trace0 # grep '^CPU\[001\]' /tmp/trace > /tmp/trace1 Will give you: # head /tmp/trace0 CPU[000] ------------8<---------- thread sshd-3899 ------------8<---------- CPU[000] inotify_dentry_parent_queue_event() { CPU[000] } 2531 CPU[000] inotify_inode_queue_event() { CPU[000] } 505 CPU[000] } 69626 CPU[000] } 73089 CPU[000] audit_syscall_exit() { CPU[000] path_put() { CPU[000] dput() { # head /tmp/trace1 CPU[001] ------------8<---------- thread pcscd-3446 ------------8<---------- CPU[001] } 4186 CPU[001] dput() { CPU[001] } 543 CPU[001] vfs_permission() { CPU[001] inode_permission() { CPU[001] shmem_permission() { CPU[001] generic_permission() { CPU[001] } 501 CPU[001] } 2205 Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 660c7f9be96321fc80026d76411bd15e6f418a72 Author: Steven Rostedt Date: Wed Nov 26 00:16:26 2008 -0500 ftrace: add thread comm to function graph tracer Impact: enhancement to function graph tracer Export the trace_find_cmdline so the function graph tracer can use it to print the comms of the threads. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit e53a6319cca69111c1643dc9f18f4465d7f1cbf0 Author: Steven Rostedt Date: Wed Nov 26 00:16:25 2008 -0500 ftrace: let function tracing and function return run together Impact: feature This patch enables function tracing and function return to run together. I've tested this by enabling the stack tracer and return tracer, where both the function entry and function return are used together with dynamic ftrace. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 5a45cfe1c64862e8cd3b0d79d7c4ba71c3118915 Author: Steven Rostedt Date: Wed Nov 26 00:16:24 2008 -0500 ftrace: use code patching for ftrace graph tracer Impact: more efficient code for ftrace graph tracer This patch uses the dynamic patching, when available, to patch the function graph code into the kernel. This patch will ease the way for letting both function tracing and function graph tracing run together. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit df4fc31558dd2a3a30292ddb3a64c2a5befcec73 Author: Steven Rostedt Date: Wed Nov 26 00:16:23 2008 -0500 ftrace: add function tracing to single thread Impact: feature to function trace a single thread This patch adds the ability to function trace a single thread. The file: /debugfs/tracing/set_ftrace_pid contains the pid to trace. Valid pids are any positive integer. Writing any negative number to this file will disable the pid tracing and the function tracer will go back to tracing all of threads. This feature works with both static and dynamic function tracing. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 3496f92beb9aa99ef21fccc154a36c7698e9c538 Merge: 200036ca9b3f0b2250912142552ce56682190f95 6ded6ab9be4f6164aef1c527407c1b94f0929799 Author: James Morris Date: Wed Nov 26 10:56:44 2008 +0530 Merge branch 'serge-next' into next commit dd24c00191d5e4a1ae896aafe33c6b8095ab4bd1 Author: Eric Dumazet Date: Tue Nov 25 21:17:14 2008 -0800 net: Use a percpu_counter for orphan_count Instead of using one atomic_t per protocol, use a percpu_counter for "orphan_count", to reduce cache line contention on heavy duty network servers. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 1748376b6626acf59c24e9592ac67b3fe2a0e026 Author: Eric Dumazet Date: Tue Nov 25 21:16:35 2008 -0800 net: Use a percpu_counter for sockets_allocated Instead of using one atomic_t per protocol, use a percpu_counter for "sockets_allocated", to reduce cache line contention on heavy duty network servers. Note : We revert commit (248969ae31e1b3276fc4399d67ce29a5d81e6fd9 net: af_unix can make unix_nr_socks visbile in /proc), since it is not anymore used after sock_prot_inuse_add() addition Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit c1b56878fb68e9c14070939ea4537ad4db79ffae Author: Stephen Hemminger Date: Tue Nov 25 21:14:06 2008 -0800 tc: policing requires a rate estimator Found that while trying average rate policing, it was possible to request average rate policing without a rate estimator. This results in no policing which is harmless but incorrect. Since policing could be setup in two steps, need to check in the kernel. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 71bcb09a57894fa35591ce93dd972065eeecb63a Author: Stephen Hemminger Date: Tue Nov 25 21:13:31 2008 -0800 tc: check for errors in gen_rate_estimator creation The functions gen_new_estimator and gen_replace_estimator can return errors, but they were being ignored. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 0e991ec6a0340916d3f29bd5dcb35299069e7226 Author: Stephen Hemminger Date: Tue Nov 25 21:12:32 2008 -0800 tc: propogate errors from tcf_hash_create Allow tcf_hash_create to return different errors on estimator failure. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 5ceb40da9bacc8b056805d72efb1a52502d56b6b Author: Hiroshi Shimamoto Date: Mon Nov 24 18:24:11 2008 -0800 x86: signal: unify signal_{32|64}.c Impact: cleanup Unify signal_{32|64}.c! Mechanic unification - the two files are the same. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit e5fa2d063cf2ca38eae5fb3469315db669d5c041 Author: Hiroshi Shimamoto Date: Mon Nov 24 18:24:11 2008 -0800 x86: signal: unify signal_{32|64}.c, prepare Impact: cleanup Add #ifdef directive for 32-bit only code. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit bfeb91a9435889ef4fe7bfbb4b673f625e69e790 Author: Hiroshi Shimamoto Date: Mon Nov 24 18:23:12 2008 -0800 x86: signal: cosmetic unification of __setup_sigframe() and __setup_rt_sigframe() Impact: cleanup Add #ifdef directive to unify __setup_sigframe() and __setup_rt_sigframe(). Move them after {setup|restore}_sigcontext() declaration. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 2601657d223d82053d4e1fe1063091401e6b860a Author: Hiroshi Shimamoto Date: Mon Nov 24 18:21:37 2008 -0800 x86: signal: move {setup|restore}_sigcontext() Impact: cleanup Move {setup|restore}_sigcontext() declaration onto head of file. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit d144d5ee6a265823d39f75ecfed351a516295183 Author: Liming Wang Date: Wed Nov 26 10:29:26 2008 +0800 ftrace: adding other non-leaving .text sections Impact: widen the scope of recordmcount.pl Besides .text section, there are three .text sections that won't be freed after kernel booting. They are: .sched.text, .spinlock.text and .kprobes.text, which contain functions we can trace. But the last section ".kprobes.text" is particular, which has been marked as "notrace", we ignore it. Thus we add other two sections. Signed-off-by: Liming Wang Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 4ef8e768335637749af8d83327b174be0ea798a2 Author: Stephen Hemminger Date: Tue Nov 25 18:26:38 2008 -0800 ne2000: convert to net_device_ops Last driver for today. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 53cdd28961f979e4494c85e9ace8c3b51ae39a45 Author: Stephen Hemminger Date: Tue Nov 25 18:26:20 2008 -0800 3c503: convert to net_device_ops Another of the 8390p group. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit e0b8cb0e0e361a40e4ab9d8463762db2286571f5 Author: Stephen Hemminger Date: Tue Nov 25 18:25:49 2008 -0800 stnic: convert to net_device_ops Can just use common ei_netdev_ops definition. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 7d359daafe12b36b6da7ec6247caddf534183aed Author: Stephen Hemminger Date: Tue Nov 25 18:25:32 2008 -0800 apne: convert to net_device_ops Yet another driver. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 50014f1b939dff5e591e8aea9ec2932d146d2996 Author: Stephen Hemminger Date: Tue Nov 25 18:25:14 2008 -0800 ne2: convert to net_device_ops Almost there. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 4be7ef4eac1d96a61af62bda8a59c1fb78c3b31b Author: Stephen Hemminger Date: Tue Nov 25 18:24:57 2008 -0800 hp: convert to net_device_ops Another old EISA driver converted. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 0ec4d4fe413f4d16fb35a326a2dcf912872abcc8 Author: Stephen Hemminger Date: Tue Nov 25 18:24:38 2008 -0800 lne390: convert to net_device_ops Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 8284abea9b49f9d8eae5b3ed36a9ea76a26388ca Author: Stephen Hemminger Date: Tue Nov 25 18:24:20 2008 -0800 e2100: convert to net_device_ops Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 9a9aa14a74d49f88e2c2a126b035c22bd1ab0d53 Author: Stephen Hemminger Date: Tue Nov 25 18:23:59 2008 -0800 es3210: convert to net_device_ops Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit d269941b5b562d21ae37b2182846702a4a43f415 Author: Stephen Hemminger Date: Tue Nov 25 18:23:35 2008 -0800 ne3210: convert to net_device_ops By having common code in 8390.o don't need net_dev_ops in the driver. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit d079841d795b83822357ef058ce8d7979dad854c Author: Stephen Hemminger Date: Tue Nov 25 18:23:06 2008 -0800 smc: convert to net_device_ops Convert both eisa and mca versions of this driver, though I doubt anyone still has the hardware. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit d4a97d425c2f59849ebdcc94281ecf108818efbf Author: Stephen Hemminger Date: Tue Nov 25 18:22:42 2008 -0800 hp-plus: convert to net_device_ops Another driver converted to new infrastructure. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 458228bc4c1370de1dae4ba0f78469092ca21d75 Author: Stephen Hemminger Date: Tue Nov 25 18:21:56 2008 -0800 wd: use net_device_ops Another driver converted to net_device_ops; Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 8884c092e5e4f9a1b6e44f2e02a3eb5481af87ab Author: Stephen Hemminger Date: Tue Nov 25 18:12:49 2008 -0800 8390: add common net_device ops Fix the defactoring of ei_XXX functions in 8390 and 8390p. Remove the tx_timeout hack since no driver including the 3c503 overrides tx_timeout at this time, looks like a legacy thing. Also, since several drivers all have same hooks, provide common netdev_ops. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit c2324b694fa8ffee382a124198c68754088e483c Author: Ingo Molnar Date: Wed Nov 26 03:10:01 2008 +0100 tracing: function graph tracer, fix fix return-tracer => graph-tracer namespace rename fallout. Signed-off-by: Ingo Molnar commit b27aeadb5948d400df83db4d29590fb9862ba49d Author: Alexey Dobriyan Date: Tue Nov 25 18:00:48 2008 -0800 netns xfrm: per-netns sysctls Make net.core.xfrm_aevent_etime net.core.xfrm_acq_expires net.core.xfrm_aevent_rseqth net.core.xfrm_larval_drop sysctls per-netns. For that make net_core_path[] global, register it to prevent two /proc/net/core antries and change initcall position -- xfrm_init() is called from fs_initcall, so this one should be fs_initcall at least. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit c68cd1a01ba56995d85a4a62b195b2b3f6415c64 Author: Alexey Dobriyan Date: Tue Nov 25 18:00:14 2008 -0800 netns xfrm: /proc/net/xfrm_stat in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 59c9940ed0ef026673cac52f2eaed77af7d486da Author: Alexey Dobriyan Date: Tue Nov 25 17:59:52 2008 -0800 netns xfrm: per-netns MIBs Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 4fb236bac9fc7d51e2267866de6d4c30e549d2f8 Author: Alexey Dobriyan Date: Tue Nov 25 17:59:27 2008 -0800 netns xfrm: AH/ESP in netns! Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 7013ec30e0e2bc5b1e602e19a4e0668f9b7c0a72 Author: Alexey Dobriyan Date: Tue Nov 25 17:59:00 2008 -0800 netns PF_KEY: per-netns /proc/pfkey Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 07fb0f1799dcb6b3df527909811fd6704278842e Author: Alexey Dobriyan Date: Tue Nov 25 17:58:31 2008 -0800 netns PF_KEY: part 2 * interaction with userspace -- take netns from userspace socket. * in ->notify hook take netns either from SA or explicitly passed -- we don't know if SA/SPD flush is coming. * stub policy migration with init_net for now. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 3fa87a3210a24ae406c2ccd37a52585baeb21546 Author: Alexey Dobriyan Date: Tue Nov 25 17:58:07 2008 -0800 netns PF_KEY: part 1 * netns boilerplate * keep per-netns socket list * keep per-netns number of sockets Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 7c2776ee21a60e0d370538bd08b9ed82979f6e3a Author: Alexey Dobriyan Date: Tue Nov 25 17:57:44 2008 -0800 netns xfrm: flush SA/SPDs on netns stop SA/SPD doesn't pin netns (and it shouldn't), so get rid of them by hand. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit fbda33b2b85941c1ae3a0d89522dec5c1b1bd98c Author: Alexey Dobriyan Date: Tue Nov 25 17:56:49 2008 -0800 netns xfrm: ->get_saddr in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit c5b3cf46eabe6e7459125fc6e2033b4222665017 Author: Alexey Dobriyan Date: Tue Nov 25 17:51:25 2008 -0800 netns xfrm: ->dst_lookup in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit db983c1144884cab10d6397532f4bf05eb0c01d2 Author: Alexey Dobriyan Date: Tue Nov 25 17:51:01 2008 -0800 netns xfrm: KM reporting in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 7067802e262457a9737521e5669b622028b2283a Author: Alexey Dobriyan Date: Tue Nov 25 17:50:36 2008 -0800 netns xfrm: pass netns with KM notifications SA and SPD flush are executed with NULL SA and SPD respectively, for these cases pass netns explicitly from userspace socket. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit fc34acd36eecdec95171b98ef2516e3d4daa5c41 Author: Alexey Dobriyan Date: Tue Nov 25 17:50:08 2008 -0800 netns xfrm: xfrm_user module in netns Grab netns either from netlink socket, state or policy. SA and SPD flush are in init_net for now, this requires little attention, see below. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit a6483b790f8efcd8db190c1c0ff93f9d9efe919a Author: Alexey Dobriyan Date: Tue Nov 25 17:38:20 2008 -0800 netns xfrm: per-netns NETLINK_XFRM socket Stub senders to init_net's one temporarily. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit bd235e3cfff617ff91677da553714051866ba55f Author: Alexey Dobriyan Date: Tue Nov 25 17:37:56 2008 -0800 netns xfrm: xfrm_input() fixup Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit ddcfd79680c1dc74eb5f24aa70785c11bf7eec8f Author: Alexey Dobriyan Date: Tue Nov 25 17:37:23 2008 -0800 netns xfrm: dst garbage-collecting in netns Pass netns pointer to struct xfrm_policy_afinfo::garbage_collect() [This needs more thoughts on what to do with dst_ops] [Currently stub to init_net] Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 3dd0b4997a1d4f3a3666e400cc75b0279ce96849 Author: Alexey Dobriyan Date: Tue Nov 25 17:36:51 2008 -0800 netns xfrm: flushing/pruning bundles in netns Allow netdevice notifier as result. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 99a66657b2f62ae8b2b1e6ffc6abed051e4561ca Author: Alexey Dobriyan Date: Tue Nov 25 17:36:13 2008 -0800 netns xfrm: xfrm_route_forward() in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit f6e1e25d703c0a9ba1863384a16851dec52f8e3a Author: Alexey Dobriyan Date: Tue Nov 25 17:35:44 2008 -0800 netns xfrm: xfrm_policy_check in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 52479b623d3d41df84c499325b6a8c7915413032 Author: Alexey Dobriyan Date: Tue Nov 25 17:35:18 2008 -0800 netns xfrm: lookup in netns Pass netns to xfrm_lookup()/__xfrm_lookup(). For that pass netns to flow_cache_lookup() and resolver callback. Take it from socket or netdevice. Stub DECnet to init_net. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit cdcbca7c1f1946758cfacb69bc1c7eeaccb11e2d Author: Alexey Dobriyan Date: Tue Nov 25 17:34:49 2008 -0800 netns xfrm: policy walking in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 8d1211a6aaea43ea36151c17b0193eb763ff2d7e Author: Alexey Dobriyan Date: Tue Nov 25 17:34:20 2008 -0800 netns xfrm: finding policy in netns Add netns parameter to xfrm_policy_bysel_ctx(), xfrm_policy_byidx(). Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 33ffbbd52c327225a3e28485c39dc5746d81be03 Author: Alexey Dobriyan Date: Tue Nov 25 17:33:32 2008 -0800 netns xfrm: policy flushing in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 1121994c803f4a4f471d617443ff2a09515725e7 Author: Alexey Dobriyan Date: Tue Nov 25 17:33:06 2008 -0800 netns xfrm: policy insertion in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit e92303f872600978796ff323bc229d911f905849 Author: Alexey Dobriyan Date: Tue Nov 25 17:32:41 2008 -0800 netns xfrm: propagate netns into policy byidx hash Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 284fa7da300adcb700b44df2f64a536b434d4650 Author: Alexey Dobriyan Date: Tue Nov 25 17:32:14 2008 -0800 netns xfrm: state walking in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 5447c5e401c49aba0c36bb1066f2d25b152553b7 Author: Alexey Dobriyan Date: Tue Nov 25 17:31:51 2008 -0800 netns xfrm: finding states in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 12604d8aaa38ac4e24299c9803fefdb301a16421 Author: Alexey Dobriyan Date: Tue Nov 25 17:31:18 2008 -0800 netns xfrm: fixup xfrm_alloc_spi() Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 221df1ed33c9284fc7a6f6e47ca7f8d5f3665d43 Author: Alexey Dobriyan Date: Tue Nov 25 17:30:50 2008 -0800 netns xfrm: state lookup in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 0e6024519b4da2d9413b97be1de8122d5709ccc1 Author: Alexey Dobriyan Date: Tue Nov 25 17:30:18 2008 -0800 netns xfrm: state flush in netns Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 98806f75ba2afc716e4d2f915d3ac7687546f9c0 Author: Alexey Dobriyan Date: Tue Nov 25 17:29:47 2008 -0800 netns xfrm: trivial netns propagations Take netns from xfrm_state or xfrm_policy. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 64d0cd009718ce64cf0f388142ead7ea41f1f3c8 Author: Alexey Dobriyan Date: Tue Nov 25 17:29:21 2008 -0800 netns xfrm: propagate netns into bydst/bysrc/byspi hash functions Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 66caf628c3b634c57b14a1a104dcd57e4fab2e3b Author: Alexey Dobriyan Date: Tue Nov 25 17:28:57 2008 -0800 netns xfrm: per-netns policy hash resizing work Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit dc2caba7b321289e7d02e63d7216961ccecfa103 Author: Alexey Dobriyan Date: Tue Nov 25 17:24:15 2008 -0800 netns xfrm: per-netns policy counts Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit a35f6c5de32664d82c072a7e2c7d5c5234de4158 Author: Alexey Dobriyan Date: Tue Nov 25 17:23:48 2008 -0800 netns xfrm: per-netns xfrm_policy_bydst hash Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 8b18f8eaf9207d53ba3e69f2b98d7290f4dec227 Author: Alexey Dobriyan Date: Tue Nov 25 17:23:26 2008 -0800 netns xfrm: per-netns inexact policies Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 8100bea7d619e8496ad8e545d1b41f536e076cd5 Author: Alexey Dobriyan Date: Tue Nov 25 17:22:58 2008 -0800 netns xfrm: per-netns xfrm_policy_byidx hashmask Per-netns hashes are independently resizeable. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 93b851c1c93c7d5cd8d94cd3f3a268b2d5460e9e Author: Alexey Dobriyan Date: Tue Nov 25 17:22:35 2008 -0800 netns xfrm: per-netns xfrm_policy_byidx hash Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit adfcf0b27e87d16a6a8c364daa724653d4d8930b Author: Alexey Dobriyan Date: Tue Nov 25 17:22:11 2008 -0800 netns xfrm: per-netns policy list Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 0331b1f383e1fa4049f8e75cafeea8f006171c64 Author: Alexey Dobriyan Date: Tue Nov 25 17:21:45 2008 -0800 netns xfrm: add struct xfrm_policy::xp_net Again, to avoid complications with passing netns when not necessary. Again, ->xp_net is set-once field, once set it never changes. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 50a30657fd7ee77a94a6bf0ad86eba7c37c3032e Author: Alexey Dobriyan Date: Tue Nov 25 17:21:01 2008 -0800 netns xfrm: per-netns km_waitq Disallow spurious wakeups in __xfrm_lookup(). Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit c78371441c0d957f54c9f8a35b3ee5a378d14808 Author: Alexey Dobriyan Date: Tue Nov 25 17:20:36 2008 -0800 netns xfrm: per-netns state GC work State GC is per-netns, and this is part of it. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit b8a0ae20b0eecd4b86a113d2abe2fa5a582b30a6 Author: Alexey Dobriyan Date: Tue Nov 25 17:20:11 2008 -0800 netns xfrm: per-netns state GC list km_waitq is going to be made per-netns to disallow spurious wakeups in __xfrm_lookup(). To not wakeup after every garbage-collected xfrm_state (which potentially can be from different netns) make state GC list per-netns. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 630827338585022b851ec0a6335df8e436c900e4 Author: Alexey Dobriyan Date: Tue Nov 25 17:19:07 2008 -0800 netns xfrm: per-netns xfrm_hash_work All of this is implicit passing which netns's hashes should be resized. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 0bf7c5b019518d3fe9cb96b9c97bf44d251472c3 Author: Alexey Dobriyan Date: Tue Nov 25 17:18:39 2008 -0800 netns xfrm: per-netns xfrm_state counts Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 529983ecabeae3d8e61c9e27079154b1b8544dcd Author: Alexey Dobriyan Date: Tue Nov 25 17:18:12 2008 -0800 netns xfrm: per-netns xfrm_state_hmask Since hashtables are per-netns, they can be independently resized. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit b754a4fd8f58d245c9b5e92914cce09c4309cb67 Author: Alexey Dobriyan Date: Tue Nov 25 17:17:47 2008 -0800 netns xfrm: per-netns xfrm_state_byspi hash Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit d320bbb306f2085892bc958781e8fcaf5d491589 Author: Alexey Dobriyan Date: Tue Nov 25 17:17:24 2008 -0800 netns xfrm: per-netns xfrm_state_bysrc hash Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 73d189dce486cd6693fa29169b1aac0872efbcea Author: Alexey Dobriyan Date: Tue Nov 25 17:16:58 2008 -0800 netns xfrm: per-netns xfrm_state_bydst hash Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 9d4139c76905833afcb77fe8ccc17f302a0eb9ab Author: Alexey Dobriyan Date: Tue Nov 25 17:16:11 2008 -0800 netns xfrm: per-netns xfrm_state_all list This is done to get a) simple "something leaked" check b) cover possible DoSes when other netns puts many, many xfrm_states onto a list. c) not miss "alien xfrm_state" check in some of list iterators in future. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 673c09be457bb23aa0eaaa79804cbb342210d195 Author: Alexey Dobriyan Date: Tue Nov 25 17:15:16 2008 -0800 netns xfrm: add struct xfrm_state::xs_net To avoid unnecessary complications with passing netns around. * set once, very early after allocating * once set, never changes For a while create every xfrm_state in init_net. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit d62ddc21b674b5ac1466091ff3fbf7baa53bc92c Author: Alexey Dobriyan Date: Tue Nov 25 17:14:31 2008 -0800 netns xfrm: add netns boilerplate Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit c95839693d2a6612af7f75ad877012eba2f69757 Author: Alexey Dobriyan Date: Tue Nov 25 17:13:59 2008 -0800 xfrm: initialise xfrm_policy_gc_work statically Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 46a8494a9de6b88a126993e6012322752f997b88 Author: Ingo Molnar Date: Tue Nov 25 17:02:20 2008 -0800 3c523: fix warning in drivers/net/3c523.c fix warning: drivers/net/3c523.c:582: warning: ‘cleanup_card’ defined but not used No code changed: md5: ebe4a1b27d3f21b0b12a78c58463b0d7 3c523.o.before.asm ebe4a1b27d3f21b0b12a78c58463b0d7 3c523.o.after.asm Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 99da1a8a6dc549630733e1cc246265d282fc214e Author: Ingo Molnar Date: Tue Nov 25 17:00:39 2008 -0800 depca: fix warning in drivers/net/depca.c fix warning: drivers/net/depca.c: In function ‘depca_eisa_probe’: drivers/net/depca.c:1564: warning: ‘mem_start’ may be used uninitialized in this function this seems to be a real bug - depca_eisa_probe() does not check for failure. Add it, symmetric to depca_isa_probe(). Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit a098397d562e2ce5aca7b9b007a4954d88ef8f5e Author: Ingo Molnar Date: Tue Nov 25 17:00:05 2008 -0800 atlx: fix warning in drivers/net/atlx/atl2.c fix this warning: drivers/net/atlx/atl2.c: In function ‘atl2_request_irq’: drivers/net/atlx/atl2.c:644: warning: unused variable ‘err’ 'err' is unused in the !CONFIG_PCI_MSI case. Instead of further increasing the #ifdeffery in this function, restructure the code a bit and get rid of the #ifdef. This relies on the fact that pci_enable_msi() will always fail in the !CONFIG_PCI_MSI case. There should be no change in driver behavior. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 287b6e68ca7209caec40b2f44f837c580a413bae Author: Frederic Weisbecker Date: Wed Nov 26 00:57:25 2008 +0100 tracing/function-return-tracer: set a more human readable output Impact: feature This patch sets a C-like output for the function graph tracing. For this aim, we now call two handler for each function: one on the entry and one other on return. This way we can draw a well-ordered call stack. The pid of the previous trace is loosely stored to be compared against the one of the current trace to see if there were a context switch. Without this little feature, the call tree would seem broken at some locations. We could use the sched_tracer to capture these sched_events but this way of processing is much more simpler. 2 spaces have been chosen for indentation to fit the screen while deep calls. The time of execution in nanosecs is printed just after closed braces, it seems more easy this way to find the corresponding function. If the time was printed as a first column, it would be not so easy to find the corresponding function if it is called on a deep depth. I plan to output the return value but on 32 bits CPU, the return value can be 32 or 64, and its difficult to guess on which case we are. I don't know what would be the better solution on X86-32: only print eax (low-part) or even edx (high-part). Actually it's thee same problem when a function return a 8 bits value, the high part of eax could contain junk values... Here is an example of trace: sys_read() { fget_light() { } 526 vfs_read() { rw_verify_area() { security_file_permission() { cap_file_permission() { } 519 } 1564 } 2640 do_sync_read() { pipe_read() { __might_sleep() { } 511 pipe_wait() { prepare_to_wait() { } 760 deactivate_task() { dequeue_task() { dequeue_task_fair() { dequeue_entity() { update_curr() { update_min_vruntime() { } 504 } 1587 clear_buddies() { } 512 add_cfs_task_weight() { } 519 update_min_vruntime() { } 511 } 5602 dequeue_entity() { update_curr() { update_min_vruntime() { } 496 } 1631 clear_buddies() { } 496 update_min_vruntime() { } 527 } 4580 hrtick_update() { hrtick_start_fair() { } 488 } 1489 } 13700 } 14949 } 16016 msecs_to_jiffies() { } 496 put_prev_task_fair() { } 504 pick_next_task_fair() { } 489 pick_next_task_rt() { } 496 pick_next_task_fair() { } 489 pick_next_task_idle() { } 489 ------------8<---------- thread 4 ------------8<---------- finish_task_switch() { } 1203 do_softirq() { __do_softirq() { __local_bh_disable() { } 669 rcu_process_callbacks() { __rcu_process_callbacks() { cpu_quiet() { rcu_start_batch() { } 503 } 1647 } 3128 __rcu_process_callbacks() { } 542 } 5362 _local_bh_enable() { } 587 } 8880 } 9986 kthread_should_stop() { } 669 deactivate_task() { dequeue_task() { dequeue_task_fair() { dequeue_entity() { update_curr() { calc_delta_mine() { } 511 update_min_vruntime() { } 511 } 2813 Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit fb52607afcd0629776f1dc9e657647ceae81dd50 Author: Frederic Weisbecker Date: Tue Nov 25 21:07:04 2008 +0100 tracing/function-return-tracer: change the name into function-graph-tracer Impact: cleanup This patch changes the name of the "return function tracer" into function-graph-tracer which is a more suitable name for a tracing which makes one able to retrieve the ordered call stack during the code flow. Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 45555c0ed436b8b06eeaa5c524a3377e6d24fb45 Author: Ingo Molnar Date: Tue Nov 25 16:59:21 2008 -0800 bluetooth: fix warning in net/bluetooth/rfcomm/sock.c fix this warning: net/bluetooth/rfcomm/sock.c: In function ‘rfcomm_sock_ioctl’: net/bluetooth/rfcomm/sock.c:795: warning: unused variable ‘sk’ perhaps BT_DEBUG() should be improved to do printf format checking instead of the #ifdef, but that looks quite intrusive: each bluetooth .c file undefines the macro. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit ff0db0490a2eb6db4f03870987c5c8e3dd81e747 Author: Ingo Molnar Date: Tue Nov 25 16:58:42 2008 -0800 sunrpc: fix warning in net/sunrpc/xprtrdma/verbs.c fix this warning: net/sunrpc/xprtrdma/verbs.c: In function ‘rpcrdma_conn_upcall’: net/sunrpc/xprtrdma/verbs.c:279: warning: unused variable ‘addr’ Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit e14bec2e2b59a6180f04544a867b7e52cd414455 Author: Ingo Molnar Date: Tue Nov 25 16:58:19 2008 -0800 ax25: fix warning in net/ax25/sysctl_net_ax25.c fix this warning: net/ax25/sysctl_net_ax25.c:27: warning: ‘min_ds_timeout’ defined but not used net/ax25/sysctl_net_ax25.c:27: warning: ‘max_ds_timeout’ defined but not used These are only used in the CONFIG_AX25_DAMA_SLAVE case. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 509dceef6470442d8c7b8a43ec34125205840b3c Merge: 1e9b51c28312f7334394aa30be56ff52c2b65b7e 14bfc987e395797dfe03e915e8b4c7fc9e5078e4 Author: Ingo Molnar Date: Wed Nov 26 01:58:05 2008 +0100 Merge branches 'tracing/hw-branch-tracing' and 'tracing/branch-tracer' into tracing/core commit e6a176228a38d74c0360ca586146bd45a2ac2d60 Author: Ingo Molnar Date: Tue Nov 25 16:57:59 2008 -0800 mlx4: fix warning in drivers/net/mlx4/mcg.c fix warning: drivers/net/mlx4/mcg.c: In function ‘mlx4_multicast_attach’: drivers/net/mlx4/mcg.c:217: warning: integer overflow in expression there was no real danger of overflow here though. md5: db8eb55620f886c03854a2abb2ce6c3f mcg.o.before.asm db8eb55620f886c03854a2abb2ce6c3f mcg.o.after.asm Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 3ed7cc0f8b29da4304825a7bcef25fc83f84c1ae Author: Ingo Molnar Date: Tue Nov 25 16:57:30 2008 -0800 dccp: fix warning in net/dccp/options.c this warning: net/dccp/options.c: In function ‘dccp_parse_options’: net/dccp/options.c:67: warning: ‘value’ may be used uninitialized in this function is a bogus GCC warning. The compiler does not recognize the relation between "value" and "mandatory" variables: the code flow can ever reach the "out_invalid_option:" label if 'mandatory' is set to 1, and when 'mandatory' is non-zero, we'll always have 'value' initialized. Help out the compiler by annotating the variable. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit b71e839f9a33abf8634b1eea4875bc8057fe39e2 Author: Ingo Molnar Date: Tue Nov 25 16:57:05 2008 -0800 cassini: fix warning in drivers/net/cassini.c this warning: drivers/net/cassini.c: In function ‘cas_rx_ringN’: drivers/net/cassini.c:2350: warning: ‘skb’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between cas_rx_process_pkt() and 'skb'. Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit b58515be978f9377b9546ae98ad6c8bbc2f93ee1 Author: Ingo Molnar Date: Tue Nov 25 16:53:32 2008 -0800 mlx4: fix error path in drivers/net/mlx4/en_rx.c this warning: drivers/net/mlx4/en_rx.c: In function ‘mlx4_en_activate_rx_rings’: drivers/net/mlx4/en_rx.c:412: warning: ‘err’ may be used uninitialized in this function Triggers because 'err' is uninitialized in the following input conditions: priv->rx_ring_num is zero and mlx4_en_fill_rx_buffers() fails. But even if ->rx_ring_num is nonzero, 'err' will be zero if mlx4_en_fill_rx_buffers() fails and mlx4_en_activate_rx_rings() returns success - incorrectly. So it's best to keep the error code uptodate on mlx4_en_fill_rx_buffers() calls as well. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 4174439ef5894964803c6300e7e88d97e075e4c0 Author: Ingo Molnar Date: Tue Nov 25 16:53:08 2008 -0800 z85230: fix warning in drivers/net/wan/z85230.c this warning: drivers/net/wan/z85230.c: In function ‘z8530_interrupt’: drivers/net/wan/z85230.c:713: warning: ‘intr’ may be used uninitialized in this function is clearly bogus - annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit ef0cd87ef6326609be8abf19030101be24cc5703 Author: Ingo Molnar Date: Tue Nov 25 16:52:13 2008 -0800 sis900: fix warning in drivers/net/sis900.c this warning: drivers/net/sis900.c: In function ‘sis900_timer’: drivers/net/sis900.c:1280: warning: ‘speed’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between sis900_read_mode(), 'speed' and 'duplex'. Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 180b65df7ba1e700e28aabfbddbad84b7beebe4b Author: Ingo Molnar Date: Tue Nov 25 16:51:45 2008 -0800 fix warning in fs/dlm/netlink.c this warning: fs/dlm/netlink.c: In function ‘dlm_timeout_warn’: fs/dlm/netlink.c:131: warning: ‘send_skb’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between prepare_data() and send_skb. Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit d3f644da909549a4cf0ad27541df342f75158cc0 Author: Ingo Molnar Date: Tue Nov 25 16:51:13 2008 -0800 dsa: fix warning in net/dsa/mv88e6060.c this warning: net/dsa/mv88e6060.c: In function ‘mv88e6060_poll_link’: net/dsa/mv88e6060.c:225: warning: ‘port_status’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between 'link' and 'port_status'. Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 2a9e79782d99160cad7d834eef9bb77b446e8532 Author: Ingo Molnar Date: Tue Nov 25 16:50:49 2008 -0800 dsa: fix warning in net/dsa/mv88e6xxx.c this warning: net/dsa/mv88e6xxx.c: In function ‘mv88e6xxx_poll_link’: net/dsa/mv88e6xxx.c:361: warning: ‘port_status’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between 'link' and 'port_status'. Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 55205d400efe3260e29ad26dd64c992cec2efafd Author: Ingo Molnar Date: Tue Nov 25 16:50:30 2008 -0800 ipv6: fix warning in net/ipv6/ip6_flowlabel.c this warning: net/ipv6/ip6_flowlabel.c: In function ‘ipv6_flowlabel_opt’: net/ipv6/ip6_flowlabel.c:467: warning: ‘err’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between fl_create() and 'err'. Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit dc0a0011cfa8ff01b86859006f4db3656c9a896b Author: Ingo Molnar Date: Tue Nov 25 16:50:02 2008 -0800 pkt_sched: fix warning in net/sched/sch_hfsc.c this warning: net/sched/sch_hfsc.c: In function ‘hfsc_enqueue’: net/sched/sch_hfsc.c:1577: warning: ‘err’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between hfsc_classify(), 'cl' and 'err'. Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit ed72b9c6e0ec4e66dd16b7ca212845e1eb985d65 Author: Ingo Molnar Date: Tue Nov 25 16:49:37 2008 -0800 sunrpc: fix warning in net/sunrpc/xprtrdma/svc_rdma_transport.c this warning: net/sunrpc/xprtrdma/svc_rdma_transport.c: In function ‘svc_rdma_accept’: net/sunrpc/xprtrdma/svc_rdma_transport.c:830: warning: ‘dma_mr_acc’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) flow connection between need_dma_mr and dma_mr_acc. Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit be5a3c62c805878d67036b4683f09118cab4c9fd Author: Ingo Molnar Date: Tue Nov 25 16:49:07 2008 -0800 qla3xxx: fix warning in drivers/net/qla3xxx.c this warning: drivers/net/qla3xxx.c: In function ‘ql3xxx_probe’: drivers/net/qla3xxx.c:3912: warning: ‘pci_using_dac’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between 'pci_using_dac' and 'err'. Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit f166400bd4c92df72d997e0da8713fae90d56e57 Author: Ingo Molnar Date: Tue Nov 25 16:48:42 2008 -0800 niu: fix another warning in drivers/net/niu.c this warning: drivers/net/niu.c: In function ‘esr_reset’: drivers/net/niu.c:741: warning: ‘reset’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between: - esr_read_reset() and 'reset' Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 51e0f058c496ef2ca5362c16a53ce1ce454d0817 Author: Ingo Molnar Date: Tue Nov 25 16:48:12 2008 -0800 niu: fix warnings in drivers/net/niu.c these warnings: drivers/net/niu.c: In function ‘serdes_init_niu_1g_serdes’: drivers/net/niu.c:451: warning: ‘sig’ may be used uninitialized in this function drivers/net/niu.c: In function ‘serdes_init_niu_10g_serdes’: drivers/net/niu.c:550: warning: ‘sig’ may be used uninitialized in this function triggers because GCC does not recognize that the max_retry loop always initializes 'sig', due to max_retry != 0. Annotate them. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 2e6a684b8489b21324f314be2bd8d3788a9f6445 Author: Ingo Molnar Date: Tue Nov 25 16:47:35 2008 -0800 s2io: fix warning in drivers/net/s2io.c this warning: drivers/net/s2io.c: In function ‘rx_intr_handler’: drivers/net/s2io.c:7369: warning: ‘lro’ may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between: - s2io_club_tcp_session()and 'lro' Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: David S. Miller commit 09bb52175bf4d6a46fc8502e76be29206d9a677a Author: Daniel Lezcano Date: Tue Nov 25 16:46:37 2008 -0800 netns: filter out uevent not belonging to init_net This patch will filter out the uevent not related to the init_net. Without this patch if a network device is created in a network namespace with the same name as one network device belonging to the initial network namespace (eg. eth0), when the network namespace will die and the network device will be destroyed, an event will be sent and catched by the udevd daemon. That will result to have the real network device to be shutdown because the udevd/uevent are not namespace aware. Signed-off-by: Daniel Lezcano Acked-by: "Eric W. Biederman" Signed-off-by: David S. Miller commit cb13fc209f5c9394713319323166f74b01759ead Author: Robert Olsson Date: Tue Nov 25 16:43:52 2008 -0800 ixgbe: Naming interrupt vectors Signed-off-by: Robert Olsson Acked-by: Peter P Waskiewicz Jr Signed-off-by: David S. Miller commit 70340d728f4f4cb49da00a11b10ded492260caa5 Author: Robert Olsson Date: Tue Nov 25 16:41:57 2008 -0800 niu: Naming interrupt vectors. A patch to put names on the niu interrupt vectors according the syntax below. This is needed to assign correct affinity. > So on a multiqueue card with 2 RX queues and 2 TX queues we'd > have names like: > > eth0-rx-0 > eth0-rx-1 > eth0-tx-0 > eth0-tx-1 Signed-off-by: Robert Olsson Tested-by: Jesper Dangaard Brouer Signed-off-by: David S. Miller commit 9f782db3f5ceee9aa8de6f853969fbec1b8c6e65 Author: Ilpo Järvinen Date: Tue Nov 25 13:57:01 2008 -0800 tcp: skb_shift cannot cache frag ptrs past pskb_expand_head Since pskb_expand_head creates copy of the shared area we cannot keep any frag ptr past de-cloning. This fixes the tcpdump recvfrom -EFAULT problem. Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit f6486d40b33d1ac2c44c7c55db7edf022d9f4329 Author: Jarek Poplawski Date: Tue Nov 25 13:56:06 2008 -0800 pkt_sched: sch_api: Remove qdisc_list_lock After implementing qdisc->ops->peek() there is no more calling qdisc_tree_decrease_qlen() without rtnl_lock(), so qdisc_list_lock added by commit: f6e0b239a2657ea8cb67f0d83d0bfdbfd19a481b "pkt_sched: Fix qdisc list locking" can be removed. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 723b46108f8ee75b61ce703d0c9225e4f537bc46 Author: Eric Dumazet Date: Tue Nov 25 13:55:15 2008 -0800 net: udp_unhash() can test if sk is hashed Impact: Optimization Like done in inet_unhash(), we can avoid taking a chain lock if socket is not hashed in udp_unhash() Triggered by close(socket(AF_INET, SOCK_DGRAM, 0)); Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 5bc0b3bfa758e4ae49c94e31c1edb9a5f10a8060 Author: Eric Dumazet Date: Tue Nov 25 13:53:27 2008 -0800 net: Make sure BHs are disabled in sock_prot_inuse_add() prot->destroy is not called with BH disabled. So we must add explicit BH disable around call to sock_prot_inuse_add() in sctp_destroy_sock() Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 8eecaba900e89643029fd2c253ad8ebb60761165 Author: Ilpo Järvinen Date: Tue Nov 25 13:45:29 2008 -0800 tcp: tcp_limit_reno_sacked can become static Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 4ada424db196c78746fec255d493cacb1c9feddf Author: Luis R. Rodriguez Date: Fri Nov 14 14:44:22 2008 -0800 mac80211: don't assume driver has been attached on registration mac80211's ieee80211_register_hw() is often called within the probe path so it cannot assume the device's driver structure has been attached yet so to create a workqueue instead of using driver->name use the wiphy's phy%d name. The name doesn't really matter anyway. This should fix sporadic oopses found when we race to beat the driver pointer setting. Not even sure how this was working properly. http://www.kerneloops.org/search.php?search=ieee80211_register_hw Signed-off-by: Luis R. Rodriguez Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 4d3601b234a51fdd268c8ef8068d239e26dd7ef1 Author: Vasanthakumar Thiagarajan Date: Sat Nov 15 00:49:49 2008 +0530 ath9k: Configure AR_PHY_SWITCH_COM with apropriate antenna control This fixes the poor wireless connection which happens even if we are very well in the range. Signed-off-by: Don.breslin@atheros.com Signed-off-by: Vasanthakumar Thiagarajan Signed-off-by: John W. Linville commit ced0957442af69c5c41b00db85a933ed7876cc40 Author: Christian Lamparter Date: Fri Nov 14 19:42:39 2008 +0100 p54: honour bss_info_changed's basic_rates and other settings As was pointed out in "p54: honour bss_info_changed's short slot time settings", bss_info_changed provides more useful settings that can be used by the driver. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 40db0b22591f59811feeb7cad26fdde92a190663 Author: Christian Lamparter Date: Sun Nov 16 12:20:32 2008 +0100 p54pci: cache firmware for suspend/resume Johannes pointed out that the driver has cache the firmware for suspend/resume cycles. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit ffed785898a6dfd5f80d069bcb607b8cd5613c76 Author: Christian Lamparter Date: Fri Nov 14 19:41:22 2008 +0100 p54: minor fixes This patch contains only contains a one-liner fixes and enhancements Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit d131bb59c142585c389b5284d93743e4e065e393 Author: Christian Lamparter Date: Sat Nov 15 17:02:31 2008 +0100 p54: enable Mesh Point support This patch enables Mesh Point operation for any p54 device. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit f16f33df4d27f18bc6512dbe83ebbeaa693f0359 Author: Sujith Date: Fri Nov 14 16:27:53 2008 +0530 mac80211: Use the HT capabilities from the IE instead of the station's caps. Signed-off-by: Sujith Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 97b777db57f7226e31a4abd5e69d732037743195 Author: Luis R. Rodriguez Date: Thu Nov 13 19:11:57 2008 -0800 ath9k: make DMA memory consistent Make the DMAable mameory consistent with pci_set_consistent_dma_mask(). The DMA-mapping.txt Documentation recommends this but for PCI-X considerations and on strange architecture like SGI SN2, not sure why it would fix an issue but lets see if it does, just in case. Before this, this driver was tested with x86_64 with about 7 GB of RAM, not sure if this is really needed. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit 1d450cfc97bc223e9f94a2fab888bb168e284448 Author: Luis R. Rodriguez Date: Thu Nov 13 19:11:56 2008 -0800 ath9k: Clarify we only want 32-bit DMA Use DMA_32BIT_MASK to clarify we only want 32-bit DMA memory. What was there before is also 32-bit but this makes it clearer Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit f1ca2167d89d991eed519c789d3902f9682c06b8 Author: Ivo van Doorn Date: Thu Nov 13 23:07:33 2008 +0100 rt2x00: Detect USB BULK in/out endpoints Instead of hardcoding the used in/out endpoints we should detect them by walking through all available endpoints. rt2800usb will gain the most out of this, because the legacy drivers indicate that there are multiple endpoints available. However this code might benefit at least rt73usb as well for the MIMO queues, and if we are really lucky rt2500usb will benefit because for the TX and PRIO queues. Even if rt2500usb and rt73usb do not get better performance after this patch, the endpoint detection still belongs to rt2x00usb, and it shouldn't hurt to always try to detect the available endpoints. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit c8f96974eebbc8f078ad64f2d8041e6dce741d67 Author: Larry Finger Date: Thu Nov 13 12:30:41 2008 -0600 rtl8187: Remove module warning and dependence on CONFIG_EXPERIMENTAL After considerable testing, the initial fears that the driver might damage some flavors of RTL8187B hardware seem to be groundless. Accordingly, the logged warning is removed. In addition, Kconfig is changed to remove the dependence on EXPERIMENTAL. Signed-off-by: Larry Finger Acked-by: Herton Ronaldo Krzesinski Acked-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 3517afdefc3ad335b276eb5f8691841f48097abf Author: Herton Ronaldo Krzesinski Date: Thu Nov 13 10:39:16 2008 -0500 rtl8187: feedback transmitted packets using tx close descriptor for 8187B Realtek 8187B has a receive command queue to feedback beacon interrupt and transmitted packet status. Use it to feedback mac80211 about status of transmitted packets. Unfortunately in the course of testing I found that the sequence number reported by hardware includes entire sequence control in a 12 bit only field, so a workaround is done to check only lowest bits. Tested-by: Larry Finger Tested-by: Hin-Tak Leung Signed-off-by: Herton Ronaldo Krzesinski Signed-off-by: John W. Linville commit b4572a9264312fecdb530a3416b8c8336a3bb9a9 Author: Herton Ronaldo Krzesinski Date: Thu Nov 13 10:39:15 2008 -0500 rtl8187: implement conf_tx callback to configure tx queues Add conf_tx callback and use it to configure tx queues of 8187L/8187B. Tested-by: Larry Finger Tested-by: Hin-Tak Leung Signed-off-by: Herton Ronaldo Krzesinski Signed-off-by: John W. Linville commit 54ac218ae676931813169e0ca074aca2e4adee38 Author: Herton Ronaldo Krzesinski Date: Thu Nov 13 10:39:14 2008 -0500 rtl8187: fix 8187B throughput regression Hin-Tak Leung reported that after the change "rtl8187: add short slot handling for 8187B" his RTL8187B started to give low throughput on network transfers. Turns out that the SIFS setting used isn't ok, it doesn't look to be the real aSIFSTime, using the "magical" 0x22 value like on other 818x variants as the vendor does too fixes the issue. Tested-by: Larry Finger Tested-by: Hin-Tak Leung Signed-off-by: Herton Ronaldo Krzesinski Signed-off-by: John W. Linville commit db93e7b5bf9dea9175d5b213f9557758c56abbfc Author: Senthil Balasubramanian Date: Thu Nov 13 18:01:08 2008 +0530 ath9k: Race condition in accessing TX and RX buffers. Race condition causes RX buffers to be accessed even before it is initialized. The RX and TX buffers are initialized immediately after the hardware is registered with mac80211. The mac80211 start callback is ready to be fired once the device is registered for a case when the wpa_supplicant is also running at the same time. The same race condition is also possible for RKFILL registration as RFKILL init happens after the device registration with mac80211 and it is possible that rfkill_register would be called even before it is initialized. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit 306efdd109f086b19d849f1ec0f9104c9fdb3444 Author: Senthil Balasubramanian Date: Thu Nov 13 18:00:37 2008 +0530 ath9k: IRQ should be disabled before calling free_irq() ath9k frees irq even before IRQs are disabled and existing IRQs are flushed when rfkill_register() fails. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit e97275cb062cf927cdb086f0107657dd92160801 Author: Senthil Balasubramanian Date: Thu Nov 13 18:00:02 2008 +0530 ath9k: Build RFKILL feature even when RFKILL subsystem is a MODULE Currently, ath9k builds RFKILL feature only when the RFKILL subsystem is built part of the kernel. Build RFKILL feature regardless of whether RFKILL subsystem is built as a MODULE or part of the kernel. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit f9bbf431beb7dd98b94fa965dab851432be4b762 Author: Senthil Balasubramanian Date: Thu Nov 13 17:59:36 2008 +0530 ath9k: incorrect noise floor threshold values. This patch fixes incorrect noise floor threshold values. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit 9f8042021792f8c0e0a7f5b81f326bfab86cda83 Author: Senthil Balasubramanian Date: Thu Nov 13 17:58:41 2008 +0530 ath9k: INI update for atheros chipets. init values update for various atheros chipsets. Signed-off-by: Senthil Balasubramanian Signed-off-by: John W. Linville commit ea4a82dceec7b5782b1259079c8de508d0afe33a Author: Luis R. Rodriguez Date: Wed Nov 12 14:22:04 2008 -0800 iwlwifi: enable custom fw regulatory solution This enables the custom firmware regulatory solution option on iwlwifi drivers. These devices are uncapable of mapping their EEPROM regulatory domain to a specific ISO / IEC alpha2. Although the new 11n devices (>= iwl 5000) have only 3 regultaory SKUs -- MOW, ABG (no N) and BG -- the older devices (3945 and 4965) have a more complex SKU arrangement and therefore its not practical to move this to the driver. Signed-off-by: Luis R. Rodriguez Acked-by: Zhu Yi Signed-off-by: John W. Linville commit 14b9815af3f4fe0e171ee0c4325c31d2a2c1570b Author: Luis R. Rodriguez Date: Wed Nov 12 14:22:03 2008 -0800 cfg80211: add support for custom firmware regulatory solutions This adds API to cfg80211 to allow wireless drivers to inform us if their firmware can handle regulatory considerations *and* they cannot map these regulatory domains to an ISO / IEC 3166 alpha2. In these cases we skip the first regulatory hint instead of expecting the driver to build their own regulatory structure, providing us with an alpha2, or using the reg_notifier(). Signed-off-by: Luis R. Rodriguez Acked-by: Zhu Yi Signed-off-by: John W. Linville commit 3f2355cb9111ac04e7ae06a4d7044da2ae813863 Author: Luis R. Rodriguez Date: Wed Nov 12 14:22:02 2008 -0800 cfg80211/mac80211: Add 802.11d support This adds country IE parsing to mac80211 and enables its usage within the new regulatory infrastructure in cfg80211. We parse the country IEs only on management beacons for the BSSID you are associated to and disregard the IEs when the country and environment (indoor, outdoor, any) matches the already processed country IE. To avoid following misinformed or outdated APs we build and use a regulatory domain out of the intersection between what the AP provides us on the country IE and what CRDA is aware is allowed on the same country. A secondary device is allowed to follow only the same country IE as it make no sense for two devices on a system to be in two different countries. In the case the AP is using country IEs for an incorrect country the user may help compliance further by setting the regulatory domain before or after the IE is parsed and in that case another intersection will be performed. CONFIG_WIRELESS_OLD_REGULATORY is supported but requires CRDA present. Signed-off-by: Luis R. Rodriguez Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 88dc1c3f7f9058cd5ceae1e4b53453484c7b0364 Author: Luis R. Rodriguez Date: Wed Nov 12 14:22:01 2008 -0800 cfg80211: mark regdomains with > NL80211_MAX_SUPP_REG_RULES invalid Lets remain consistent and mark rds with > NL80211_MAX_SUPP_REG_RULES number of reg rules as invalid in is_valid_rd(). Signed-off-by: Luis R. Rodriguez Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 02ba0b3263f4eb41d2a5714cbe99207ae491a964 Author: Luis R. Rodriguez Date: Wed Nov 12 14:22:00 2008 -0800 cfg80211: call_crda() won't tell us if CRDA was present kobject_uevent_env() can return an error but it just tells us if the uvent was built/sent or not, it doesn't tell us anything about what happened in userspace, whether the udev rule was present nor does it tell us if CRDA was present or not. So remove the informative complaint about it assuming it will tell us such things. Note that you can determine if CRDA is present after loading cfg80211 by using: is_old_static_regdom(cfg80211_regdomain) but this doesn't account for possible user install after initial boot, and also for when the user uses the static EU regulatory domain. Signed-off-by: Luis R. Rodriguez Acked-by: Johannes Berg Signed-off-by: John W. Linville commit a01ddafd43f7d53a65ef053eb80a4dee58839c1f Author: Luis R. Rodriguez Date: Wed Nov 12 14:21:59 2008 -0800 cfg80211: expect different rd in cfg80211 when intersecting When intersecting it is possible that set_regdom() was called with a regulatory domain which we'll only use as an aid to build a final regulatory domain. Signed-off-by: Luis R. Rodriguez Acked-by: Johannes Berg Signed-off-by: John W. Linville commit b8295acdc323e6e383ec822fc1e95edeb9148513 Author: Luis R. Rodriguez Date: Wed Nov 12 14:21:58 2008 -0800 cfg80211: separate intersection section in __set_regdom() So far the __set_regdom() code is pretty generic as the intersection case is fairly straight forward; this will however change when 802.11d support is added so lets separate intersection code for now in preparation for 802.11d support. This patch only has slight functional changes. Signed-off-by: Luis R. Rodriguez Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 8375af3ba213154041cfbc655f452913f23bfbd5 Author: Luis R. Rodriguez Date: Wed Nov 12 14:21:57 2008 -0800 cfg80211: remove switch from __set_regdom() We have control over the REGDOM_SET_BY_* macros passed so remove the switch. This patch has no functional changes. Signed-off-by: Luis R. Rodriguez Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 5203cdb6ad430d3313444ddc6486da70af1a60db Author: Luis R. Rodriguez Date: Wed Nov 12 14:21:56 2008 -0800 cfg80211: remove switch from __regulatory_hint() We have complete control over REGDOM_SET_BY_* enum passed down to __regulatory_hint() as such there is no need to account for unexpected REGDOM_SET_BY_*'s, lets just remove the switch statement as this code does not change and won't change even when we add 802.11d support. This patch has no functional changes. Signed-off-by: Luis R. Rodriguez Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 91e9900418fb01229094fb83befa3591afcae1e7 Author: Luis R. Rodriguez Date: Wed Nov 12 14:21:55 2008 -0800 cfg80211: mark negative frequencies as invalid Regulatory rules with negative frequencies are now marked as invalid in is_valid_reg_rule(). Signed-off-by: Luis R. Rodriguez Acked-by: Johannes Berg Signed-off-by: John W. Linville commit e0737a77d6cba100dea7e53bf490d67d110bc037 Author: Tomas Winkler Date: Wed Nov 12 13:14:11 2008 -0800 iwlwifi: iwl-fh.h cleanup This patch fix value of upper FH register bound plus it reorders and groups registers in more readable way Signed-off-by: Tomas Winkler Acked-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 34faf780cf342b2c83ae40a2eecf33e55f7002a5 Author: Zhu, Yi Date: Wed Nov 12 13:14:10 2008 -0800 iwlwifi: some fh document fix and cleanup This patch cleans up some flow handler related document. It also removes some blank lines. Signed-off-by: Zhu Yi Acked-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 352bc8de19a7e5e065d422825e226e8e80cd6576 Author: Zhu, Yi Date: Wed Nov 12 13:14:09 2008 -0800 iwlwifi: configure_filter rewrite The patch rewrites the mac80211 configure_filter handler to better mapping mac80211 filter flags to iwlwifi hardware filter flags. We now can support 5 mac80211 filter flags: FIF_OTHER_BSS, FIF_ALLMULTI, FIF_PROMISC_IN_BSS, FIF_BCN_PRBRESP_PROMISC and FIF_CONTROL. This patch also avoids reconnecting if the filter flags are changed when the STA is associated. Because rx_assoc is used when full rxon is not necessary. Signed-off-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit c3056065400aeb437390e1a86b85f9c32fb1c1df Author: Abhijeet Kolekar Date: Wed Nov 12 13:14:08 2008 -0800 iwlwifi : fix checkpatch.pl errors Patch fixes checkpatch.pl errors for iwlwifi. Signed-off-by: Abhijeet Kolekar Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit dbce56a456f6d6302a77107088340828dcaf9a02 Author: Chatre, Reinette Date: Wed Nov 12 13:14:07 2008 -0800 iwlwifi: replace magic constants with define use IWL_CCK_RATES_MASK and IWL_OFDM_RATES_MASK instead of their values directly. Signed-off-by: Reinette Chatre cc: Harvey Harrison Signed-off-by: John W. Linville commit 417f114bf2efa6183477a75da272c0d452e1cda3 Author: Tomas Winkler Date: Wed Nov 12 13:14:06 2008 -0800 iwlwifi: rs: remove fc variable and other cleanups This patch 1. Removes use once use only fc variables, they are useless after refactoring ieee80211 frame control handlers 2. Other trivial cleanups Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 9f58671e8d4f4896acea30020308ce72bf94ec6e Author: Tomas Winkler Date: Wed Nov 12 13:14:05 2008 -0800 iwlwifi: consolidate station management code This patch moves code around and group most of the station management code into iwl-sta.c No functional changes (yet) Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit cee53ddb46eb520079335d0868d0e81c8d311089 Author: Kolekar, Abhijeet Date: Wed Nov 12 13:14:04 2008 -0800 iwl3945 : Simplify iwl3945_pci_probe Patch aligns iwl3945_pci_probe with iwlwifi's iwl_pci_probe. Added few comments and code simplified to make readable. Signed-off-by: Abhijeet Kolekar Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 0e3de99846489424c2cba952e0a52c269f01009a Author: Ivo van Doorn Date: Wed Nov 12 00:01:37 2008 +0100 rt2x00: Fix TX failure path The callback function write_tx_data() can only fail when our ENTRY_OWNER_DEVICE_DATA flag on a queue entry failed to determine the entry was not available and it is in fact still owned by the hardware. This means that if that function fails the queue must be stopped in mac80211. When rt2x00queue_get_queue() returns NULL in the TX path, it means mac80211 has passed us an invalid queue, although this should be impossible, it shouldn't hurt if we send mac80211 a signal to stop the queue either. Both issues can simply be resolved by removing their manual failure handler and making them use the failure path provided in rt2x00mac_tx(). Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 0f829b1d6f499447052f98098e41fd6a091eadd0 Author: Ivo van Doorn Date: Mon Nov 10 19:42:18 2008 +0100 rt2x00: Move rt73usb register access wrappers into rt2x00usb rt2500usb and rt73usb have different register word sizes, for that reason the register access wrappers were never moved into rt2x00usb. With rt2800usb on its way, we should favor the 32bit register access and move those wrappers into rt2x00usb. That saves duplicate code, since only rt2500usb will need the special 16bit wrappers. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit c9c3b1a5deac4297503145840fffcd122b253db5 Author: Ivo van Doorn Date: Mon Nov 10 19:41:40 2008 +0100 rt2x00: Cleanup indirect register access All code which accessed indirect registers was similar in respect to the for-loop, the given timeout, etc. Move it into a seperate function, which for PCI drivers can be moved into rt2x00pci. This allows us to cleanup the cleanup the code further by removing the goto statementsand making the codepath look a bit nicer. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 9764f3f9c3700620f9f8a1f9af57f58758e835da Author: Johannes Berg Date: Mon Nov 10 18:56:59 2008 +0100 ath5k: name pci driver "ath5k" too Call the ath5k pci driver struct "ath5k" too to be less confusing in sysfs. Signed-off-by: Johannes Berg Acked-by: Nick Kossifidis Signed-off-by: John W. Linville commit d6e8cc6cc7ac77b0f9118f78c453a2e834e62709 Author: Ingo Molnar Date: Tue Nov 25 18:23:03 2008 +0100 netfilter: fix warning in net/netfilter/nf_conntrack_ftp.c this warning: net/netfilter/nf_conntrack_ftp.c: In function 'help': net/netfilter/nf_conntrack_ftp.c:360: warning: 'matchoff' may be used uninitialized in this function net/netfilter/nf_conntrack_ftp.c:360: warning: 'matchlen' may be used uninitialized in this function triggers because GCC does not recognize the (correct) error flow between find_pattern(), 'found', 'matchoff' and 'matchlen'. Annotate it. Signed-off-by: Ingo Molnar Signed-off-by: Patrick McHardy commit 65f233fb1669e6c990cd1d7fd308ac7dc66dc207 Author: Ingo Molnar Date: Tue Nov 25 18:20:13 2008 +0100 netfilter: fix warning in net/netfilter/nf_conntrack_proto_tcp.c fix this warning: net/netfilter/nf_conntrack_proto_tcp.c: In function \u2018tcp_in_window\u2019: net/netfilter/nf_conntrack_proto_tcp.c:491: warning: unused variable \u2018net\u2019 net/netfilter/nf_conntrack_proto_tcp.c: In function \u2018tcp_packet\u2019: net/netfilter/nf_conntrack_proto_tcp.c:812: warning: unused variable \u2018net\u2019 Signed-off-by: Ingo Molnar Signed-off-by: Patrick McHardy commit 1e9b51c28312f7334394aa30be56ff52c2b65b7e Author: Markus Metzger Date: Tue Nov 25 09:24:15 2008 +0100 x86, bts, ftrace: a BTS ftrace plug-in prototype Impact: add new ftrace plugin A prototype for a BTS ftrace plug-in. The tracer collects branch trace in a cyclic buffer for each cpu. The tracer is not configurable and the trace for each snapshot is appended when doing cat /debug/tracing/trace. This is a proof of concept that will be extended with future patches to become a (hopefully) useful tool. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit 8bba1bf5e2434c83f2fe8b1422604ace9bbe4cb8 Author: Markus Metzger Date: Tue Nov 25 09:12:31 2008 +0100 x86, ftrace: call trace->open() before stopping tracing; add trace->print_header() Add a callback to allow an ftrace plug-in to write its own header. Move the call to trace->open() up a few lines. The changes are required by the BTS ftrace plug-in. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit 6abb11aecd888d1da6276399380b7355f127c006 Author: Markus Metzger Date: Tue Nov 25 09:05:27 2008 +0100 x86, bts, ptrace: move BTS buffer allocation from ds.c into ptrace.c Impact: restructure DS memory allocation to be done by the usage site of DS Require pre-allocated buffers in ds.h. Move the BTS buffer allocation for ptrace into ptrace.c. The pointer to the allocated buffer is stored in the traced task's task_struct together with the handle returned by ds_request_bts(). Removes memory accounting code. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit ca0002a179bfa532d009a9272d619732872c49bd Author: Markus Metzger Date: Tue Nov 25 09:01:25 2008 +0100 x86, bts: base in-kernel ds interface on handles Impact: generalize the DS code to shared buffers Change the in-kernel ds.h interface to identify the tracer via a handle returned on ds_request_~(). Tracers used to be identified via their task_struct. The changes are required to allow DS to be shared between different tasks, which is needed for perfmon2 and for ftrace. For ptrace, the handle is stored in the traced task's task_struct. This should probably go into a (arch-specific) ptrace context some time. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit 7d55718b0c19ba611241c330f688ee824e9bab79 Merge: 6f893fb2e89287a4d755f928c3cda9d18440355c de90add30e79261c3b5be68bb0f22d2ef98e8113 f4166c54bfe04f64603974058e44fbd7cfef0ccc Author: Ingo Molnar Date: Tue Nov 25 17:30:25 2008 +0100 Merge branches 'tracing/core', 'x86/urgent' and 'x86/ptrace' into tracing/hw-branch-tracing This pulls together all the topic branches that are needed for the DS/BTS/PEBS tracing work. commit 9e0f1b7f6bc5265847e995540981642c857f15b6 Author: Qinghuang Feng Date: Tue Nov 25 23:24:54 2008 +0800 ASoC: Clean up kernel-doc for snd_soc_dai_set_fmt There is no argument named @clk_id in snd_soc_dai_set_fmt, remove its' comment. Signed-off-by: Qinghuang Feng Signed-off-by: Mark Brown commit 5c0d7bb797a975691ca8bbc38e53da03c6e151bb Author: Dmitry Baryshkov Date: Tue Nov 25 09:35:21 2008 +0300 ASoC: tosa: move gpio probing to machine callbacks Signed-off-by: Dmitry Baryshkov Signed-off-by: Mark Brown commit 4451582f7e9fc2860b289aca60a6065286439bb8 Author: Misael Lopez Cruz Date: Mon Nov 24 22:21:23 2008 -0600 ASoC: Add support for TI SDP3430 This patch add ASoC support for TI SDP3430. It's based on Gumstix Overo SoC code by Steve Sakoman. Signed-off-by: Misael Lopez Cruz Signed-off-by: Mark Brown commit 9c8f1a0e6ed48f2ecf08ac0fb7fb043f8c34dc63 Author: Arun KS Date: Tue Nov 25 09:56:12 2008 +0530 ASoC: Fix TWL4030 Kconfig dependency Fixes Kconfig dependency of TWL4030 audio codec driver with TWL4030 core driver on both overo and omap2evm boards Signed-off-by: Arun KS Acked-by: David Brownell Signed-off-by: Mark Brown commit 375e8a7c943d5aa8716be229e398473b23709ce9 Author: Jarkko Nikula Date: Tue Nov 25 12:45:09 2008 +0200 ASoC: OMAP: Add support for mono audio links in McBSP DAI Patch adds support for mono audio links so that McBSP DAI can operate with real mono codecs. In I2S, the signalling remains the same but only first frame (left channel) is transmitting audio data and second frame having null data. In DSP_A, only first frame is transmitted. Signed-off-by: Jarkko Nikula Signed-off-by: Mark Brown commit 0be43050d4da08295b985cb23347ecc1003cb8d6 Author: Jarkko Nikula Date: Tue Nov 25 12:45:08 2008 +0200 ASoC: OMAP: Apply channel constrains to N810 machine driver Prepare for upcoming McBSP DAI update adding support for mono links by restricting number of channels to 2 in N810. This is due tlv320aic3x which claims channels_min = 1 and playing pure mono audio over I2S would cause it to be played only from left channel if both cpu and codec DAI's claim to support mono. Signed-off-by: Jarkko Nikula Signed-off-by: Mark Brown commit b0e6481a9ae9e8c80b5d956980767ecad35c95c1 Author: Takashi Iwai Date: Tue Nov 25 16:07:01 2008 +0100 ALSA: hda - Really fix bits value in proc output The fix in 82894b6f6f109722070d4d78730fe50cdaba9443 resulted in zero due to wrong mask and bit shifts. Now fixed really. Signed-off-by: Takashi Iwai commit eefe93b9957e6f14780b7d37aeda0f27f341953d Merge: ee09543c866559e1ffb4f5c38533f2bedd725acd 661cd8fb5210af78f0763071642e0764a10389a6 Author: Takashi Iwai Date: Tue Nov 25 15:20:57 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda Conflicts: sound/pci/hda/patch_sigmatel.c commit ee09543c866559e1ffb4f5c38533f2bedd725acd Author: Takashi Iwai Date: Tue Nov 25 15:03:38 2008 +0100 ALSA: hda - Add quirk for MSI 7260 mobo Added preset model=targa-dig for MSI 7260 mobo. Signed-off-by: Takashi Iwai commit c0193f39f43c79bde6c1c5804f5315f3983152b5 Author: Markus Bollinger Date: Tue Nov 25 12:37:52 2008 +0100 ALSA: pcxhr - add support for pcxhr stereo sound cards (mixer part) - add support for pcxhr stereo cards mixer controls - adjust tlv db scales to real dBu values - fix bug with monitoring volume control pcxhr_monitor_vol_put - do some cleanup Signed-off-by: Markus Bollinger Signed-off-by: Takashi Iwai commit 2f9889a20cd2854bc6305198255c617b0b4eb719 Author: David S. Miller Date: Tue Nov 25 03:53:09 2008 -0800 Revert "hso: Fix crashes on close." This reverts commit 4a3e818181e1baf970e9232ca8b747e233176b87. On request from Alan Cox. Signed-off-by: David S. Miller commit ab153d84d9609b4e6f53632a6f14b882e866cb47 Author: David S. Miller Date: Tue Nov 25 03:52:46 2008 -0800 Revert "hso: Fix free of mutexes still in use." This reverts commit 52429eb216385fdc6969c0112ba8b46cffefaaef. On request from Alan Cox. Signed-off-by: David S. Miller commit cd90ee1799136bd74158b734cf71b72609244a91 Author: David S. Miller Date: Tue Nov 25 03:52:17 2008 -0800 Revert "hso: Add TIOCM ioctl handling." This reverts commit 7ea3a9ad9bf360f746a7ad6fa72511a5c359490d. On request from Alan Cox. Signed-off-by: David S. Miller commit 7628700e08403618b0b07bd25b6456d8b2d074ef Author: Markus Bollinger Date: Tue Nov 25 12:28:06 2008 +0100 ALSA: pcxhr - add support for pcxhr stereo sound cards (firmware support) - Add support for pcxhr stereo cards and their firmware - autorize sound cards without analog IO - do some cleanup Signed-off-by: Markus Bollinger Signed-off-by: Takashi Iwai commit 9d948d270010e3552c94281bab75694580ca23e9 Author: Markus Bollinger Date: Tue Nov 25 12:24:54 2008 +0100 ALSA: pcxhr - add support for pcxhr stereo sound cards (core change) - Add support for pcxhr stereo cards - minor bugfixes : period and buffer size consraints - fix PLL register values - do some clean up Signed-off-by: Markus Bollinger Signed-off-by: Takashi Iwai commit 93bf5d8753b2e3cc9e8982d551d119a54a31a7ec Author: Markus Bollinger Date: Tue Nov 25 12:21:05 2008 +0100 ALSA: pcxhr - add support for pcxhr stereo sound cards - Add support for pcxhr stereo cards - do some clean up Signed-off-by: Markus Bollinger Signed-off-by: Takashi Iwai commit 9f40ac713c49fb6ca655550b620edc85c445d743 Author: Eric Leblond Date: Tue Nov 25 12:18:11 2008 +0100 netfilter: nfmark IPV6 routing in OUTPUT, mangle, NFQUEUE This patch let nfmark to be evaluated for routing decision for OUTPUT packet, in mangle table, when process paquet in NFQUEUE. This patch is an IPv6 port of Laurent Licour IPv4 one. Signed-off-by: Eric Leblond Signed-off-by: Patrick McHardy commit 5f145e44ae09f629d25536b2947a91e9c01bddcb Author: Eric Leblond Date: Tue Nov 25 12:15:16 2008 +0100 netfilter: nfmark routing in OUTPUT, mangle, NFQUEUE This patch let nfmark to be evaluated for routing decision for OUTPUT packet, in mangle table, when process paquet in NFQUEUE Until now, only change (in NFQUEUE process) on fields src_addr, dest_addr and tos could make netfilter to reevalute the routing. From: Laurent Licour Signed-off-by: Eric Leblond Signed-off-by: Patrick McHardy commit c6e4c66613c2bb040e53bb04006c277992cc8f4b Author: Takashi Iwai Date: Tue Nov 25 11:58:19 2008 +0100 ALSA: hda - Assign unsol tags dynamically in patch_sigmatel.c Since we need to handle many unsolicited events assigned to different widgets, allocate the event dynamically using the existing events array, and use the tag appropriately instead of combination of fixed number and widget nid. (Note that widget nid can be over 4 bits!) Also, replaced the call of unsol_event handler with a dedicated function to be more readable. Signed-off-by: Takashi Iwai commit 0e19e7d2bff0ec04fe4dc920c580d8a321afa07f Merge: 82894b6f6f109722070d4d78730fe50cdaba9443 f73d35853e9263c7c404f0d6c0fe3d83fc6fd5c0 Author: Takashi Iwai Date: Tue Nov 25 11:56:25 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda Conflicts: sound/pci/hda/patch_sigmatel.c commit 82894b6f6f109722070d4d78730fe50cdaba9443 Author: Takashi Iwai Date: Tue Nov 25 11:42:54 2008 +0100 ALSA: hda - Fix proc pcm rate bits Show only the relevant bits in the PCM rate bits as in the earlier version. Signed-off-by: Takashi Iwai commit fb7e06748c29c08a9f5ca057a780b65acbb91c27 Author: Alexey Dobriyan Date: Tue Nov 25 01:05:54 2008 -0800 xfrm: remove useless forward declarations Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 6daad37230ab02bb593d179d704079d4b5912bd7 Author: Alexey Dobriyan Date: Tue Nov 25 01:05:09 2008 -0800 ah4/ah6: remove useless NULL assignments struct will be kfreed in a moment, so... Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 69d728baf620839d1a3c874eecac316729f89de4 Author: Alexander Duyck Date: Tue Nov 25 01:04:03 2008 -0800 igb: loopback bits not correctly cleared from RCTL register This change forces the bits to 0 by using an &= operation with an inverted mask of all options instead of using an |= with a value of 0. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 9b07f3d3157487e6467dfa4640f7fb9446165494 Author: Alexander Duyck Date: Tue Nov 25 01:03:26 2008 -0800 igb: remove unneeded bit refrence when enabling jumbo frames There is a reference to a Buffer Size extention bit that is unneded by 82575/82576 hardware. Since it is not needed it should be removed from the code. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 7a6b6f515f77d1c62a2f383b6dce18cb0af0cf4f Author: Jeff Kirsher Date: Tue Nov 25 01:02:08 2008 -0800 DCB: fix kconfig option Since the netlink option for DCB is necessary to actually be useful, simplified the Kconfig option. In addition, added useful help text for the Kconfig option. Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 411c41eea58bd3500cf897e2c27dd5330935a3a8 Author: Harvey Harrison Date: Tue Nov 25 00:40:37 2008 -0800 aoe: remove private mac address format function Add %pm to omit the colons when printing a mac address. Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 9c8f92aed16dbd1924910f3305f5992a4f29fe2a Author: Denis Joseph Barrow Date: Tue Nov 25 00:36:10 2008 -0800 hso: Hook up ->reset_resume Made usb_drivers reset_resume function point to hso_resume this fixes problems a usb reset is done when the network interface is left idle for a few minutes. Possibly reset_resume should initialise hardware more but this works in the common case. Signed-off-by: Denis Joseph Barrow Signed-off-by: David S. Miller commit 7ea3a9ad9bf360f746a7ad6fa72511a5c359490d Author: Denis Joseph Barrow Date: Tue Nov 25 00:35:26 2008 -0800 hso: Add TIOCM ioctl handling. Makes TIOCM ioctls for Data Carrier Detect & related functions work like /drivers/serial/serial-core.c potentially needed for pppd & similar user programs. Signed-off-by: Denis Joseph Barrow Signed-off-by: David S. Miller commit 52429eb216385fdc6969c0112ba8b46cffefaaef Author: Denis Joseph Barrow Date: Tue Nov 25 00:33:13 2008 -0800 hso: Fix free of mutexes still in use. A new structure hso_mutex_table had to be declared statically & used as as hso_device mutex_lock(&serial->parent->mutex) etc is freed in hso_serial_open & hso_serial_close by kref_put while the mutex is still in use. This is a substantial change but should make the driver much stabler. Signed-off-by: Denis Joseph Barrow Signed-off-by: David S. Miller commit 89930b7b5e3e9bfe9c6ec5e19920451c8f5d9088 Author: Denis Joseph Barrow Date: Tue Nov 25 00:30:48 2008 -0800 hso: Fix URB submission -EINVAL. Added check for IFF_UP in hso_resume, this should eliminate -EINVAL (-22) errors caused from urb's being submitted twice, once by hso_resume & once in hso_net_open, if suspend/resume USB power saving mode is enabled Signed-off-by: Denis Joseph Barrow Signed-off-by: David S. Miller commit 4a3e818181e1baf970e9232ca8b747e233176b87 Author: Denis Joseph Barrow Date: Tue Nov 25 00:27:50 2008 -0800 hso: Fix crashes on close. Moved serial_open_count in hso_serial_open to prevent crashes owing to the serial structure being made NULL when hso_serial_close is called even though hso_serial_open returned -ENODEV, Alan Cox pointed out this happens, also put in sanity check in hso_serial_close to check for a valid serial structure which should prevent the most reproducable crash in the driver when the hso device is disconnected while in use. Signed-off-by: Denis Joseph Barrow Signed-off-by: David S. Miller commit bab04c3adbb55aeb5e8db60522f14ce0bb0d4179 Author: Denis Joseph Barrow Date: Tue Nov 25 00:26:12 2008 -0800 hso: Add new usb device id's. Signed-off-by: Denis Joseph Barrow Signed-off-by: David S. Miller commit 47fd5b8373ecc6bf5473e4139b62b06425448252 Author: Stephen Hemminger Date: Tue Nov 25 00:20:43 2008 -0800 netdev: add HAVE_NET_DEVICE_OPS As a concession to vendors who have to deal with one source for different kernel versions, add a HAVE_NET_DEVICE_OPS so they don't end up hard coding ifdef against kernel version. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit e951e4af2e399c46891004d4931333d2d8d520ab Author: Ingo Molnar Date: Tue Nov 25 08:42:01 2008 +0100 x86: fix unused variable warning in arch/x86/kernel/hpet.c Impact: fix build warning this warning: arch/x86/kernel/hpet.c:36: warning: ‘hpet_num_timers’ defined but not used Triggers because hpet_num_timers is unused in the !CONFIG_PCI_MSI case. Signed-off-by: Ingo Molnar commit 14bfc987e395797dfe03e915e8b4c7fc9e5078e4 Author: Ingo Molnar Date: Tue Nov 25 08:58:11 2008 +0100 tracing, tty: fix warnings caused by branch tracing and tty_kref_get() Stephen Rothwell reported tht this warning started triggering in linux-next: In file included from init/main.c:27: include/linux/tty.h: In function ‘tty_kref_get’: include/linux/tty.h:330: warning: ‘______f’ is static but declared in inline function ‘tty_kref_get’ which is not static Which gcc emits for 'extern inline' functions that nevertheless define static variables. Change it to 'static inline', which is the norm in the kernel anyway. Reported-by: Stephen Rothwell Signed-off-by: Ingo Molnar commit 0ace285605314c54339710484b54814945a60df8 Author: Ilpo Järvinen Date: Mon Nov 24 21:30:21 2008 -0800 tcp: handle shift/merge of cloned skbs too This caused me to get repeatably: tcpdump: pcap_loop: recvfrom: Bad address Happens occassionally when I tcpdump my for-looped test xfers: while [ : ]; do echo -n "$(date '+%s.%N') "; ./sendfile; sleep 20; done Rest of the relevant commands: ethtool -K eth0 tso off tc qdisc add dev eth0 root netem drop 4% tcpdump -n -s0 -i eth0 -w sacklog.all Running net-next under kvm, connection goes to the same host (basically just out of kvm). The connection itself works ok and data gets sent without corruption even with a large number of tests while tcpdump fails usually within less than 5 tests. Whether it only happens because of this change or not, I don't know for sure but it's the only thing with which I've seen that error. The non-cloned variant works w/o it for much longer time. I'm yet to debug where the error actually comes from. Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 111cc8b913b42ef07793648b1699288332f273e1 Author: Ilpo Järvinen Date: Mon Nov 24 21:27:22 2008 -0800 tcp: add some mibs to track collapsing Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 92ee76b6d99bfcdab6162816c9025541ef7248eb Author: Ilpo Järvinen Date: Mon Nov 24 21:26:56 2008 -0800 tcp: Make shifting not clear the hints The earlier version was just very basic one which is "playing safe" by always clearing the hints. However, clearing of a hint is extremely costly operation with large windows, so it must be avoided at all cost whenever possible, there is a way with shifting too achieve not-clearing. Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 832d11c5cd076abc0aa1eaf7be96c81d1a59ce41 Author: Ilpo Järvinen Date: Mon Nov 24 21:20:15 2008 -0800 tcp: Try to restore large SKBs while SACK processing During SACK processing, most of the benefits of TSO are eaten by the SACK blocks that one-by-one fragment SKBs to MSS sized chunks. Then we're in problems when cleanup work for them has to be done when a large cumulative ACK comes. Try to return back to pre-split state already while more and more SACK info gets discovered by combining newly discovered SACK areas with the previous skb if that's SACKed as well. This approach has a number of benefits: 1) The processing overhead is spread more equally over the RTT 2) Write queue has less skbs to process (affect everything which has to walk in the queue past the sacked areas) 3) Write queue is consistent whole the time, so no other parts of TCP has to be aware of this (this was not the case with some other approach that was, well, quite intrusive all around). 4) Clean_rtx_queue can release most of the pages using single put_page instead of previous PAGE_SIZE/mss+1 calls In case a hole is fully filled by the new SACK block, we attempt to combine the next skb too which allows construction of skbs that are even larger than what tso split them to and it handles hole per on every nth patterns that often occur during slow start overshoot pretty nicely. Though this to be really useful also a retransmission would have to get lost since cumulative ACKs advance one hole at a time in the most typical case. TODO: handle upwards only merging. That should be rather easy when segment is fully sacked but I'm leaving that as future work item (it won't make very large difference anyway since this current approach already covers quite a lot of normal cases). I was earlier thinking of some sophisticated way of tracking timestamps of the first and the last segment but later on realized that it won't be that necessary at all to store the timestamp of the last segment. The cases that can occur are basically either: 1) ambiguous => no sensible measurement can be taken anyway 2) non-ambiguous is due to reordering => having the timestamp of the last segment there is just skewing things more off than does some good since the ack got triggered by one of the holes (besides some substle issues that would make determining right hole/skb even harder problem). Anyway, it has nothing to do with this change then. I choose to route some abnormal looking cases with goto noop, some could be handled differently (eg., by stopping the walking at that skb but again). In general, they either shouldn't happen at all or are rare enough to make no difference in practice. In theory this change (as whole) could cause some macroscale regression (global) because of cache misses that are taken over the round-trip time but it gets very likely better because of much less (local) cache misses per other write queue walkers and the big recovery clearing cumulative ack. Worth to note that these benefits would be very easy to get also without TSO/GSO being on as long as the data is in pages so that we can merge them. Currently I won't let that happen because DSACK splitting at fragment that would mess up pcounts due to sk_can_gso in tcp_set_skb_tso_segs. Once DSACKs fragments gets avoided, we have some conditions that can be made less strict. TODO: I will probably have to convert the excessive pointer passing to struct sacktag_state... :-) My testing revealed that considerable amount of skbs couldn't be shifted because they were cloned (most likely still awaiting tx reclaim)... [The rest is considering future work instead since I got repeatably EFAULT to tcpdump's recvfrom when I added pskb_expand_head to deal with clones, so I separated that into another, later patch] ...To counter that, I gave up on the fifth advantage: 5) When growing previous SACK block, less allocs for new skbs are done, basically a new alloc is needed only when new hole is detected and when the previous skb runs out of frags space ...which now only happens of if reclaim is fast enough to dispose the clone before the SACK block comes in (the window is RTT long), otherwise we'll have to alloc some. With clones being handled I got these numbers (will be somewhat worse without that), taken with fine-grained mibs: TCPSackShifted 398 TCPSackMerged 877 TCPSackShiftFallback 320 TCPSACKCOLLAPSEFALLBACKGSO 0 TCPSACKCOLLAPSEFALLBACKSKBBITS 0 TCPSACKCOLLAPSEFALLBACKSKBDATA 0 TCPSACKCOLLAPSEFALLBACKBELOW 0 TCPSACKCOLLAPSEFALLBACKFIRST 1 TCPSACKCOLLAPSEFALLBACKPREVBITS 318 TCPSACKCOLLAPSEFALLBACKMSS 1 TCPSACKCOLLAPSEFALLBACKNOHEAD 0 TCPSACKCOLLAPSEFALLBACKSHIFT 0 TCPSACKCOLLAPSENOOPSEQ 0 TCPSACKCOLLAPSENOOPSMALLPCOUNT 0 TCPSACKCOLLAPSENOOPSMALLLEN 0 TCPSACKCOLLAPSEHOLE 12 Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit f58b22fd3c16444edc393a217a74208f1894b601 Author: Ilpo Järvinen Date: Mon Nov 24 21:14:43 2008 -0800 tcp: make tcp_sacktag_one able to handle partial skb too This is preparatory work for SACK combiner patch which may have to count TCP state changes for only a part of the skb because it will intentionally avoids splitting skb to SACKed and not sacked parts. Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit adb92db857ee2a0a2b925ccfbd560203c3f88aae Author: Ilpo Järvinen Date: Mon Nov 24 21:13:50 2008 -0800 tcp: Make SACK code to split only at mss boundaries Sadly enough, this adds possible divide though we try to avoid it by checking one mss as common case. Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit e8bae275d9354104f7ae24a48a90d1a6286e7bd9 Author: Ilpo Järvinen Date: Mon Nov 24 21:12:28 2008 -0800 tcp: more aggressive skipping I knew already when rewriting the sacktag that this condition was too conservative, change it now since it prevent lot of useless work (especially in the sack shifter decision code that is being added by a later patch). This shouldn't change anything really, just save some processing regardless of the shifter. Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit e1aa680fa40e7492260a09cb57d94002245cc8fe Author: Ilpo Järvinen Date: Mon Nov 24 21:11:55 2008 -0800 tcp: move tcp_simple_retransmit to tcp_input Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 4a17fc3add594fcc1c778e93a95b6ecf47f630e5 Author: Ilpo Järvinen Date: Mon Nov 24 21:03:43 2008 -0800 tcp: collapse more than two on retransmission I always had thought that collapsing up to two at a time was intentional decision to avoid excessive processing if 1 byte sized skbs are to be combined for a full mtu, and consecutive retransmissions would make the size of the retransmittee double each round anyway, but some recent discussion made me to understand that was not the case. Thus make collapse work more and wait less. It would be possible to take advantage of the shifting machinery (added in the later patch) in the case of paged data but that can be implemented on top of this change. tcp_skb_is_last check is now provided by the loop. I tested a bit (ss-after-idle-off, fill 4096x4096B xfer, 10s sleep + 4096 x 1byte writes while dropping them for some a while with netem): . 16774097:16775545(1448) ack 1 win 46 . 16775545:16776993(1448) ack 1 win 46 . ack 16759617 win 2399 P 16776993:16777217(224) ack 1 win 46 . ack 16762513 win 2399 . ack 16765409 win 2399 . ack 16768305 win 2399 . ack 16771201 win 2399 . ack 16774097 win 2399 . ack 16776993 win 2399 . ack 16777217 win 2399 P 16777217:16777257(40) ack 1 win 46 . ack 16777257 win 2399 P 16777257:16778705(1448) ack 1 win 46 P 16778705:16780153(1448) ack 1 win 46 FP 16780153:16781313(1160) ack 1 win 46 . ack 16778705 win 2399 . ack 16780153 win 2399 F 1:1(0) ack 16781314 win 2399 While without drop-all period I get this: . 16773585:16775033(1448) ack 1 win 46 . ack 16764897 win 9367 . ack 16767793 win 9367 . ack 16770689 win 9367 . ack 16773585 win 9367 . 16775033:16776481(1448) ack 1 win 46 P 16776481:16777217(736) ack 1 win 46 . ack 16776481 win 9367 . ack 16777217 win 9367 P 16777217:16777218(1) ack 1 win 46 P 16777218:16777219(1) ack 1 win 46 P 16777219:16777220(1) ack 1 win 46 ... P 16777247:16777248(1) ack 1 win 46 . ack 16777218 win 9367 . ack 16777219 win 9367 ... . ack 16777233 win 9367 . ack 16777248 win 9367 P 16777248:16778696(1448) ack 1 win 46 P 16778696:16780144(1448) ack 1 win 46 FP 16780144:16781313(1169) ack 1 win 46 . ack 16780144 win 9367 F 1:1(0) ack 16781314 win 9367 The window seems to be 30-40 segments, which were successfully combined into: P 16777217:16777257(40) ack 1 win 46 Signed-off-by: Ilpo Järvinen Signed-off-by: David S. Miller commit 200036ca9b3f0b2250912142552ce56682190f95 Author: Hannes Eder Date: Mon Nov 24 22:14:43 2008 +0100 CRED: fix sparse warnings Impact: fix sparse warnings Fix the following sparse warnings: security/security.c:228:2: warning: returning void-valued expression security/security.c:233:2: warning: returning void-valued expression security/security.c:616:2: warning: returning void-valued expression Signed-off-by: Hannes Eder Signed-off-by: James Morris commit a21bba945430f3f5e00c349665f88cdacdb32a8d Author: Eric Dumazet Date: Mon Nov 24 16:07:50 2008 -0800 net: avoid a pair of dst_hold()/dst_release() in ip_push_pending_frames() We can reduce pressure on dst entry refcount that slowdown UDP transmit path on SMP machines. This pressure is visible on RTP servers when delivering content to mediagateways, especially big ones, handling thousand of streams. Several cpus send UDP frames to the same destination, hence use the same dst entry. This patch makes ip_push_pending_frames() steal the refcount its callers had to take when filling inet->cork.dst. This doesnt avoid all refcounting, but still gives speedups on SMP, on UDP/RAW transmit path. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 6ded6ab9be4f6164aef1c527407c1b94f0929799 Author: Serge Hallyn Date: Mon Nov 24 16:24:10 2008 -0500 User namespaces: use the current_user_ns() macro Fix up the last current_user()->user_ns instance to use current_user_ns(). Signed-off-by: Serge E. Hallyn commit 18b6e0414e42d95183f07d8177e3ff0241abd825 Author: Serge Hallyn Date: Wed Oct 15 16:38:45 2008 -0500 User namespaces: set of cleanups (v2) The user_ns is moved from nsproxy to user_struct, so that a struct cred by itself is sufficient to determine access (which it otherwise would not be). Corresponding ecryptfs fixes (by David Howells) are here as well. Fix refcounting. The following rules now apply: 1. The task pins the user struct. 2. The user struct pins its user namespace. 3. The user namespace pins the struct user which created it. User namespaces are cloned during copy_creds(). Unsharing a new user_ns is no longer possible. (We could re-add that, but it'll cause code duplication and doesn't seem useful if PAM doesn't need to clone user namespaces). When a user namespace is created, its first user (uid 0) gets empty keyrings and a clean group_info. This incorporates a previous patch by David Howells. Here is his original patch description: >I suggest adding the attached incremental patch. It makes the following >changes: > > (1) Provides a current_user_ns() macro to wrap accesses to current's user > namespace. > > (2) Fixes eCryptFS. > > (3) Renames create_new_userns() to create_user_ns() to be more consistent > with the other associated functions and because the 'new' in the name is > superfluous. > > (4) Moves the argument and permission checks made for CLONE_NEWUSER to the > beginning of do_fork() so that they're done prior to making any attempts > at allocation. > > (5) Calls create_user_ns() after prepare_creds(), and gives it the new creds > to fill in rather than have it return the new root user. I don't imagine > the new root user being used for anything other than filling in a cred > struct. > > This also permits me to get rid of a get_uid() and a free_uid(), as the > reference the creds were holding on the old user_struct can just be > transferred to the new namespace's creator pointer. > > (6) Makes create_user_ns() reset the UIDs and GIDs of the creds under > preparation rather than doing it in copy_creds(). > >David >Signed-off-by: David Howells Changelog: Oct 20: integrate dhowells comments 1. leave thread_keyring alone 2. use current_user_ns() in set_user() Signed-off-by: Serge Hallyn commit 2e77d89b2fa8e3f8325b8ce7893ec3645f41aff5 Author: Eric Dumazet Date: Mon Nov 24 15:52:46 2008 -0800 net: avoid a pair of dst_hold()/dst_release() in ip_append_data() We can reduce pressure on dst entry refcount that slowdown UDP transmit path on SMP machines. This pressure is visible on RTP servers when delivering content to mediagateways, especially big ones, handling thousand of streams. Several cpus send UDP frames to the same destination, hence use the same dst entry. This patch makes ip_append_data() eventually steal the refcount its callers had to take on the dst entry. This doesnt avoid all refcounting, but still gives speedups on SMP, on UDP/RAW transmit path Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 4db0acf3c0afbbbb2ae35a65f8896ca6655a47ec Author: Jarek Poplawski Date: Mon Nov 24 15:48:05 2008 -0800 net: gen_estimator: Fix gen_kill_estimator() lookups gen_kill_estimator() linear lists lookups are very slow, and e.g. while deleting a large number of HTB classes soft lockups were reported. Here is another try to fix this problem: this time internally, with rbtree, so similarly to Jamal's hashing idea IIRC. (Looking for next hits could be still optimized, but it's really fast as it is.) Reported-by: Badalian Vyacheslav Reported-by: Denys Fedoryshchenko Signed-off-by: Jarek Poplawski Acked-by: Jamal Hadi Salim Signed-off-by: David S. Miller commit 3f0947c3ffaed33c1c38b79e4b17f75ba072d3e9 Author: Patrick McHardy Date: Mon Nov 24 15:46:08 2008 -0800 pkt_sched: sch_drr: fix drr_dequeue loop() Jarek Poplawski points out: If all child qdiscs of sch_drr are non-work-conserving (e.g. sch_tbf) drr_dequeue() will busy-loop waiting for skbs instead of leaving the job for a watchdog. Checking for list_empty() in each loop isn't necessary either, because this can never be true except the first time. Using non-work-conserving qdiscs as children of DRR makes no sense, simply bail out in that case. Reported-by: Jarek Poplawski Signed-off-by: Patrick McHardy Signed-off-by: David S. Miller commit 4b40eed73e3787d60160beed1352ceadd24f6be1 Author: Wang Chen Date: Mon Nov 24 15:34:00 2008 -0800 infiniband: Kill directly reference of netdev->priv This use of netdev->priv is wrong. The right way is: alloc_netdev() with no memory for private data. make netdev->ml_priv to point to c2_dev. Signed-off-by: Wang Chen Acked-by: Roland Dreier Signed-off-by: David S. Miller commit 486bf8de17361232c40e092a219f328093e34dca Author: Wang Chen Date: Mon Nov 24 14:52:16 2008 -0800 netdevice sbni: Convert directly reference of netdev->priv 1. convert netdev->priv to netdev_priv(). 2. make sbni_pci_probe() be static. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 5c94afd79cd9e68cb9899fe7788342329e9f445f Author: Jirka Pirko Date: Mon Nov 24 14:49:11 2008 -0800 tokenring/3c359.c: Prevent possible mem leak when open failed Freeing previously allocated buffers in case of error. Signed-off-by: Jirka Pirko Signed-off-by: David S. Miller commit 138a5cdf2ffe8c6602641f8aaa00cfcf10929fe1 Author: Jirka Pirko Date: Mon Nov 24 14:48:25 2008 -0800 tokenring/3c359.c: Fix error message when allocating tx_ring Pointed out by Joe Perches. Error message after tx_ring allocation check was wrong. Signed-off-by: Jirka Pirko Signed-off-by: David S. Miller commit d0cc10ab0e3740b629d88386c907342f77cbdb30 Author: Jirka Pirko Date: Mon Nov 24 14:47:53 2008 -0800 tokenring/3c359.c: fix allocation null check Fixed typo when allocating rx_ring, tx_ring was checked for null instead. Signed-off-by: Jirka Pirko Signed-off-by: David S. Miller commit 85920d43bd5ae8a96f434704438b57c0b8c31198 Author: Stephen Hemminger Date: Mon Nov 24 14:47:01 2008 -0800 8139too: use err.h macros Instead of using call by reference use the PTR_ERR macros to handle return value with error case. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 3755810cebf7f9902b05c7ba9baeac0fc44881be Author: Eric Dumazet Date: Mon Nov 24 14:05:22 2008 -0800 net: Make sure BHs are disabled in sock_prot_inuse_add() There is still a call to sock_prot_inuse_add() in af_netlink while in a preemptable section. Add explicit BH disable around this call. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit fde22f272dad4fef7ba611e3f75fa94f7b43fae6 Author: Mark Brown Date: Mon Nov 24 18:08:18 2008 +0000 ASoC: Lower priority of resume work logging Now that the ASoC resume has been punted to a workqueue for a release cycle without attracting bug reports it should be safe to make the log messages associated with it debug level, reducing noise and kernel size in production configurations. Signed-off-by: Mark Brown commit 67c91513b81a101800f113013234d2ab06bc5e52 Author: Mark Brown Date: Mon Nov 24 17:45:26 2008 +0000 ASoC: Flag AD1980 as an AC97 interface Special handling is required for suspend and resume of AC97 codecs due to the control path going over the data bus. Signed-off-by: Mark Brown commit 3ba9e10a6d3b6abf5f5952572cff8f8d5a35ae54 Author: Mark Brown Date: Mon Nov 24 18:01:05 2008 +0000 ASoC: Remove DAI type information DAI type information is only ever used within ASoC in order to special case AC97 and for diagnostic purposes. Since modern CPUs and codecs support multi function DAIs which can be configured for several modes it is more trouble than it's worth to maintain anything other than a flag identifying AC97 DAIs so remove the type field and replace it with an ac97_control flag. Signed-off-by: Mark Brown commit 4813eadf6b17caa7fcce67ac2f929a3dd5178fa2 Author: Patrick McHardy Date: Mon Nov 24 18:34:48 2008 +0100 netfilter: nf_conntrack_ftp: change "partial ..." message to pr_debug() The message triggers when sending non-FTP data on port 21 or with certain clients that use multiple syscalls to send the command. Change to pr_debug() since users have been complaining. Signed-off-by: Patrick McHardy commit 6f893fb2e89287a4d755f928c3cda9d18440355c Merge: 0429149fb5e01edc410648591c19095d2074ee00 1d926f2756392c6909f60e0c9fe2a09d5462e376 69bb54ec05f57da7f6fac2cec0820cbc970df20f 65afa5e603d507014580ead016ec887b49e1afa6 cbe2f5a6e84eebb98ab42fc5e58c3cd5b7767349 813b8520f5c240c71df55d14095a7b171de264ce 033601a32b2012b6948e80e739cca40bff4de4a0 958086d1784459be3fe85e4cad79d42b17d33381 fb91ee6cf5b8be5360acec577458e29ec7e97e5e Author: Ingo Molnar Date: Mon Nov 24 17:46:24 2008 +0100 Merge branches 'tracing/branch-tracer', 'tracing/fastboot', 'tracing/ftrace', 'tracing/function-return-tracer', 'tracing/power-tracer', 'tracing/powerpc', 'tracing/ring-buffer', 'tracing/stack-tracer' and 'tracing/urgent' into tracing/core commit 64b7482de253c10efa2589a6212e3d2093a3efc7 Merge: 957ad0166e9f76a8561dafa5e14ef5bd3f5e9a3b 50ee91765e25e7967a7b69cd5cc2bcab85e2eeb8 Author: Ingo Molnar Date: Mon Nov 24 17:37:12 2008 +0100 Merge branch 'sched/rt' into sched/core commit ef1681d82f4bc2d9e023519f0bedb86519d10c43 Author: Takashi Iwai Date: Mon Nov 24 17:29:28 2008 +0100 ALSA: hda - Add probe_mask quirk for Medion MD96630 Medion MD96630 has ALC268 codec on slot#2 although it's not used for any purpose. This codec conflicts with the primiary codec ALC888 on slot#0, and gives mixer errors. This patch adds a corresponding entry to probe_mask blacklist. Reference: Novell bnc#412528 https://bugzilla.novell.com/show_bug.cgi?id=412528 Signed-off-by: Takashi Iwai commit b0bd53a7399f65e2d1b37cd44c5003e55b886c1e Author: Peter Ujfalusi Date: Mon Nov 24 13:49:38 2008 +0200 ASoC: TWL4030: Add helper function for output gain controls Some of the gain controls in TWL (mostly those which are associated with the outputs) are implemented in an interesting way: 0x0 : Power down (mute) 0x1 : 6dB 0x2 : 0 dB 0x3 : -6 dB Inverting not going to help with these. Custom volsw and volsw_2r get/put functions to handle these gains. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 0d33ea0b0f954dddd3996597c663c111249d4df9 Author: Peter Ujfalusi Date: Mon Nov 24 13:49:36 2008 +0200 ASoC: TWL4030: Add CGAIN volume control Add CGAIN (Coarse gain control) to TWL4030 codec. The range of the CGAIN is: 0 dB to 12 dB in 6 dB steps. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit c10b82cf085c38f2568609ffb10a6d725130f389 Author: Peter Ujfalusi Date: Mon Nov 24 13:49:35 2008 +0200 ASoC: TWL4030: Change the Master volume control to TLV TWL4030 FGAIN volume control has a range: -62 to 0 dB in 1 dB steps, 0 in the FGAIN means mute. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit f8d05bdbb07458e5f2c6a8281bde08056836fea6 Author: Peter Ujfalusi Date: Mon Nov 24 08:25:45 2008 +0200 ASoC: TWL4030: Disable soft-volume Keep Soft-volume disabled for now, since if it is enabled the FGAIN volume controls are not working in the current configuration: CODEC_MODE:OPT_MODE = 1 OPTION:ARXR2_EN = 1 OPTION:ARXL2_EN = 1 OPTION:ARXR1_EN = 0 OPTION:ARXL1_VRX_EN = 0 RX_PATH_SEL:RXL1_SEL = 0x0 (or 0x1) RX_PATH_SEL:RXR1_SEL = 0x0 (or 0x1) After the patch, FGAIN volume control works. Signed-off-by: Peter Ujfalusi Signed-off-by: Mark Brown commit 55b8bac50a494871594e81a05b37c15e7283f868 Author: Mark Brown Date: Mon Nov 24 14:05:29 2008 +0000 ASoC: Use supplied DAI for WM9713 rather than substream Signed-off-by: Mark Brown commit 328bd8997dbb7184d5389e45c642af44ae6e9043 Author: Patrick McHardy Date: Mon Nov 24 13:44:55 2008 +0100 netfilter: nf_conntrack_proto_sctp: avoid bogus warning net/netfilter/nf_conntrack_proto_sctp.c: In function 'sctp_packet': net/netfilter/nf_conntrack_proto_sctp.c:376: warning: array subscript is above array bounds gcc doesn't realize that do_basic_checks() guarantees that there is at least one valid chunk and thus new_state is never SCTP_CONNTRACK_MAX after the loop. Initialize to SCTP_CONNTRACK_NONE to avoid the warning. Based on patch by Wu Fengguang Signed-off-by: Patrick McHardy commit ad07e914e681f18ec0eaba60db17f497ee7e7e78 Author: Ingo Molnar Date: Mon Nov 24 11:33:12 2008 +0100 x86 defconfig: increase CONFIG_LOG_BUF_SHIFT Impact: double the defconfig printk buffer Booting defconfigs produces more output than 128K so the output is truncated - double it to 256K. Signed-off-by: Ingo Molnar commit b47b92884212008b4bd044ba6b48b93c00b10ec6 Author: H. Peter Anvin Date: Mon Nov 24 00:50:09 2008 -0800 x86: drop REBOOT_CF9_COND from reboot fallback chain Impact: Reverts sequence of reboot fallbacks Checkin 14d7ca5c575853664d8fe4f225a77b8df1b7de7d changed the default reboot method to "pci", a.k.a. port CF9. Unfortunately this has been shown to cause lockups on at least two systems for which REBOOT_KBD worked, both Thinkpads with Intel chipsets. Checkin 3889d0cea2b73049bdca062d9ff1e5d33468289c reverted the default, but did not revert the fallback chain. This checkin reverts the fallback chain; port CF9 is now only done by explicit "reboot=pci" or a future potential DMI key. Signed-off-by: H. Peter Anvin commit 920de804bca61f88643bc9171bcd06f1a56c6258 Author: Eric Dumazet Date: Mon Nov 24 00:09:29 2008 -0800 net: Make sure BHs are disabled in sock_prot_inuse_add() The rule of calling sock_prot_inuse_add() is that BHs must be disabled. Some new calls were added where this was not true and this tiggers warnings as reported by Ilpo. Fix this by adding explicit BH disabling around those call sites, or moving sock_prot_inuse_add() call inside an existing BH disabled section. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 1f87e235e6fb92c2968b52b9191de04f1aff8e77 Author: Eric Dumazet Date: Sun Nov 23 23:24:32 2008 -0800 eth: Declare an optimized compare_ether_addr_64bits() function Linus mentioned we could try to perform long word operations, even on potentially unaligned addresses, on x86 at least. David mentioned the HAVE_EFFICIENT_UNALIGNED_ACCESS test to handle this on all arches that have efficient unailgned accesses. I tried this idea and got nice assembly on 32 bits: 158: 33 82 38 01 00 00 xor 0x138(%edx),%eax 15e: 33 8a 34 01 00 00 xor 0x134(%edx),%ecx 164: c1 e0 10 shl $0x10,%eax 167: 09 c1 or %eax,%ecx 169: 74 0b je 176 And very nice assembly on 64 bits of course (one xor, one shl) Nice oprofile improvement in eth_type_trans(), 0.17 % instead of 0.41 %, expected since we remove 8 instructions on a fast path. This patch implements a compare_ether_addr_64bits() function, that uses the CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS ifdef to efficiently perform the 6 bytes comparison on all capable arches. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit ef8ef5fb1027b56f867d4b913cf52bfdc610d2a7 Author: Vincent Petry Date: Sun Nov 23 11:31:41 2008 +0800 ALSA: hda: Added an ALC888 model entry for Fujitsu-Siemens Amilo Xa3530 This patch fixes the bug 0004240: ALC888 - Intel HDA - Headphone Controlling. It is made against the 2008-11-23 snapshot. Added Realtek ALC888 model entry for the Fujitsu-Siemens Amilo Xa3530 laptop. It has 4 jacks: HP out, Mic-in, Line-in and Line-out/Side/SPDIF (this one is on the laptop side, the other ones are on the rear). Model detection works. Headphone jack sense works now. Front mic works now, was same as Acer Aspire 4930G. Added channel mode from 2 to 8 channels. In 2ch and 4ch modes, the front is also sent to the Line-out/side jack for convenience instead of just muting the Line-out/side jack like other models do. When using the Mic-in jack as CLFE, the sound is very low (bug?). To work it around, in 6ch mode the CLFE channel is duplicated to the Line-out/side jack because this one has a better amp. Cc: manu@frogged.de Signed-off-by: Vincent Petry Signed-off-by: Takashi Iwai commit a9cb5c90539dd618029884701760fe79b9b83102 Author: Takashi Iwai Date: Mon Nov 24 07:51:11 2008 +0100 ALSA: hda - No 'Headphone as Line-out' swich without line-outs STAC/IDT driver creates "Headphone as Line-Out" switch even if there is no line-out pins on the machine. For devices only with headpohnes and speaker-outs, this switch shouldn't be created. Signed-off-by: Takashi Iwai commit 70eb1bfd52e97120eddf9b5aaabfe1ecdf4eb663 Author: David S. Miller Date: Sun Nov 23 20:01:59 2008 -0800 axnet_cs: Fix build after net device ops ne2k conversion. Commit 4e4fd4e485ad63a9074ff09a9b53ffc7a5c594ec ("ne2k: convert to net_device_ops") exported some ei_* symbols from the 8390 library, but the axnet_cs driver defines local static versions of the same functions. Rename them to avoid the namespace conflict. Reported by Stephen Rothwell. Signed-off-by: David S. Miller commit 6f756a8c36bf54d0afb1d457082b3e3033d951a7 Author: David S. Miller Date: Sun Nov 23 17:34:03 2008 -0800 net: Make sure BHs are disabled in sock_prot_inuse_add() The rule of calling sock_prot_inuse_add() is that BHs must be disabled. Some new calls were added where this was not true and this tiggers warnings as reported by Ilpo. Fix this by adding explicit BH disabling around those call sites. Signed-off-by: David S. Miller commit be77e5930725c3e77bcc0fb1def28e016080d0a1 Author: Alexey Dobriyan Date: Sun Nov 23 17:26:26 2008 -0800 net: fix tunnels in netns after ndo_ changes dev_net_set() should be the very first thing after alloc_netdev(). "ndo_" changes turned simple assignment (which is OK to do before netns assignment) into quite non-trivial operation (which is not OK, init_net was used). This leads to incomplete initialisation of tunnel device in netns. BUG: unable to handle kernel NULL pointer dereference at 00000004 IP: [] ip6_tnl_exit_net+0x37/0x4f *pde = 00000000 Oops: 0000 [#1] PREEMPT DEBUG_PAGEALLOC last sysfs file: /sys/class/net/lo/operstate Pid: 10, comm: netns Not tainted (2.6.28-rc6 #1) EIP: 0060:[] EFLAGS: 00010246 CPU: 0 EIP is at ip6_tnl_exit_net+0x37/0x4f EAX: 00000000 EBX: 00000020 ECX: 00000000 EDX: 00000003 ESI: c5caef30 EDI: c782bbe8 EBP: c7909f50 ESP: c7909f48 DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068 Process netns (pid: 10, ti=c7908000 task=c7905780 task.ti=c7908000) Stack: c03e75e0 c7390bc8 c7909f60 c0245448 c7390bd8 c7390bf0 c7909fa8 c012577a 00000000 00000002 00000000 c0125736 c782bbe8 c7909f90 c0308fe3 c782bc04 c7390bd4 c0245406 c084b718 c04f0770 c03ad785 c782bbe8 c782bc04 c782bc0c Call Trace: [] ? cleanup_net+0x42/0x82 [] ? run_workqueue+0xd6/0x1ae [] ? run_workqueue+0x92/0x1ae [] ? schedule+0x275/0x285 [] ? cleanup_net+0x0/0x82 [] ? worker_thread+0x81/0x8d [] ? autoremove_wake_function+0x0/0x33 [] ? worker_thread+0x0/0x8d [] ? kthread+0x39/0x5e [] ? kthread+0x0/0x5e [] ? kernel_thread_helper+0x7/0x10 Code: db e8 05 ff ff ff 89 c6 e8 dc 04 f6 ff eb 08 8b 40 04 e8 38 89 f5 ff 8b 44 9e 04 85 c0 75 f0 43 83 fb 20 75 f2 8b 86 84 00 00 00 <8b> 40 04 e8 1c 89 f5 ff e8 98 04 f6 ff 89 f0 e8 f8 63 e6 ff 5b EIP: [] ip6_tnl_exit_net+0x37/0x4f SS:ESP 0068:c7909f48 ---[ end trace 6c2f2328fccd3e0c ]--- Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit c25eb3bfb97294d0543a81230fbc237046b4b84c Author: Eric Dumazet Date: Sun Nov 23 17:22:55 2008 -0800 net: Convert TCP/DCCP listening hash tables to use RCU This is the last step to be able to perform full RCU lookups in __inet_lookup() : After established/timewait tables, we add RCU lookups to listening hash table. The only trick here is that a socket of a given type (TCP ipv4, TCP ipv6, ...) can now flight between two different tables (established and listening) during a RCU grace period, so we must use different 'nulls' end-of-chain values for two tables. We define a large value : #define LISTENING_NULLS_BASE (1U << 29) So that slots in listening table are guaranteed to have different end-of-chain values than slots in established table. A reader can still detect it finished its lookup in the right chain. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 8c862c23e2563e6aedfc6c4aa6827cadb83f2414 Author: Gerrit Renker Date: Sun Nov 23 16:10:23 2008 -0800 dccp: Header option insertion routine for feature-negotiation The patch extends existing code: * Confirm options divide into the confirmed value plus an optional preference list for SP values. Previously only the preference list was echoed for SP values, now the confirmed value is added as per RFC 4340, 6.1; * length and sanity checks are added to avoid illegal memory (or NULL) access. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit d371056695ef993d36c57b73d654e66080377a9c Author: Gerrit Renker Date: Sun Nov 23 16:09:11 2008 -0800 dccp: Support for Mandatory options Support for Mandatory options is provided by this patch, which will be used by subsequent feature-negotiation patches. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Acked-by: Arnaldo Carvalho de Melo Signed-off-by: David S. Miller commit 02fa460ef553faabc7e0b15ff9f607f028739808 Author: Gerrit Renker Date: Sun Nov 23 16:07:53 2008 -0800 dccp: Increase the scope of variable-length htonl/ntohl functions This extends the scope of two available functions, encode|decode_value_var, to work up to 6 (8) bytes, to match maximum requirements in the RFC. These functions are going to be used both by general option processing and feature negotiation code, hence declarations have been put into feat.h. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Acked-by: Arnaldo Carvalho de Melo Signed-off-by: David S. Miller commit 71c262a3dd42dea73700646d969b0af7a4102edf Author: Gerrit Renker Date: Sun Nov 23 16:04:59 2008 -0800 dccp: API to query the current TX/RX CCID This provides function to query the current TX/RX CCID dynamically, without reliance on the minisock value, using dynamic information available in the currently loaded CCID module. This query function is then used to (a) provide the getsockopt part for getting/setting CCIDs via sockopts; (b) replace the current test for "which CCID is in use" in probe.c. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit b20a9c24d5c5d466d7e4a25c6f1bedbd2d16ad4f Author: Gerrit Renker Date: Sun Nov 23 16:02:31 2008 -0800 dccp: Set per-connection CCIDs via socket options With this patch, TX/RX CCIDs can now be changed on a per-connection basis, which overrides the defaults set by the global sysctl variables for TX/RX CCIDs. To make full use of this facility, the remaining patches of this patch set are needed, which track dependencies and activate negotiated feature values. Signed-off-by: Gerrit Renker Signed-off-by: David S. Miller commit 2c62ad7b56fa8e2658253c0256ef4c4de228a0b9 Author: Brice Goglin Date: Sun Nov 23 15:49:54 2008 -0800 myri10ge: update firmware headers Update myri10ge firmware headers. Signed-off-by: Brice Goglin Signed-off-by: David S. Miller commit 4ee2ac51359fc37d9ae5d5cc76e93af9105f1722 Author: Brice Goglin Date: Sun Nov 23 15:49:28 2008 -0800 myri10ge: update DCA comments Update DCA sections closing comments. Signed-off-by: Brice Goglin Signed-off-by: David S. Miller commit c1fd3b9455a977057f73534324d4e07a3d9fe502 Author: Eric Dumazet Date: Sun Nov 23 15:48:22 2008 -0800 net: af_netlink should update its inuse counter In order to have relevant information for NETLINK protocol, in /proc/net/protocols, we should use sock_prot_inuse_add() to update a (percpu and pernamespace) counter of inuse sockets. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 04f258ce7f085dd69422fa01d41c8f0194a0e270 Author: Eric Dumazet Date: Sun Nov 23 15:42:23 2008 -0800 net: some optimizations in af_inet 1) Use eq_net() in inet_netns_ok() to speedup socket creation if !CONFIG_NET_NS 2) Reorder the tests about inet_ehash_secret generation (once only) Use the unlikely() macro when testing if inet_ehash_secret already generated. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 958086d1784459be3fe85e4cad79d42b17d33381 Author: Török Edwin Date: Sun Nov 23 23:24:53 2008 +0200 vfs, seqfile: fix comment style on mangle_path Impact: use standard docbook tags Reported-by: Randy Dunlap Signed-off-by: Török Edwin Signed-off-by: Ingo Molnar commit 65afa5e603d507014580ead016ec887b49e1afa6 Author: Frederic Weisbecker Date: Sun Nov 23 18:43:39 2008 +0100 tracing/function-return-tracer: free the return stack on free_task() Impact: avoid losing some traces when a task is freed do_exit() is not the last function called when a task finishes. There are still some functions which are to be called such as ree_task(). So we delay the freeing of the return stack to the last moment. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 3b71e9e307b3406aa29960a7428247f8a48b810c Author: Hannes Eder Date: Sun Nov 23 20:19:33 2008 +0100 x86: HPET: fix sparse warning Impact: make global variable static Fix this sparse warning: arch/x86/kernel/hpet.c:36:18: warning: symbol 'hpet_num_timers' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: Ingo Molnar commit 5f5db591326779a80cfe490c5d6b6ce9fac08b31 Author: jia zhang Date: Sun Nov 23 22:47:10 2008 +0800 x86, debug: remove the confusing entry in call trace Impact: improve backtrace quality avoid the confusion in call trace because of the lack of padding at the tail of function. When do_exit gets called, the return address behind call instruction is pushed into stack. If something get wrong in do_exit, for x86_64, the entry "kernel_execve +0x00/0xXX" rather than "child_rip +0xYY/0xZZ" is in the call trace. That looks confusing, so add a u2d to make the return address still part of the original call site. (This also catches any instances of us returning from that function somehow.) Signed-off-by: jia zhang Acked-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit a1a00b58855ccdbedf556b4f5638d5208b454472 Author: Hannes Eder Date: Sun Nov 23 19:37:09 2008 +0100 x86: boot - fix sparse warnings Impact: make global variables static Fix these sparse warnings: arch/x86/boot/video.c:233:3: warning: symbol 'saved' was not declared. Should it be static? arch/x86/boot/video-vga.c:37:13: warning: symbol 'video_vga' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: Ingo Molnar commit 3b6c52b5b634ae41d762cb174465272d69198160 Author: Cyrill Gorcunov Date: Sun Nov 23 20:21:39 2008 +0300 x86: introduce ENTRY(KPROBE_ENTRY)_X86 assembly helpers to catch unbalanced declaration v3 Impact: make ENTRY()/END() macros more capable It's usefull to catch unbalanced or messed or mixed declarations of ENTRY and KPROBES. These macros would help a bit. For example the following code would compile without problems ENTRY_X86(mcount) retq END_X86(mcount) But if you forget and mess the following form ENTRY_X86(mcount) retq END(mcount) ENTRY_X86(ftrace_caller) The assembler will issue the following message: Error: ENTRY_X86/KPROBE_X86 unbalanced,missed,mixed Actually the checking is performed at every _X86 macro so maybe it's good idea to put ENTRY_KPROBE_FINAL_X86 at the end of .S file to be sure you didn't miss anything. Signed-off-by: Cyrill Gorcunov Cc: Alexander van Heukelum Signed-off-by: Ingo Molnar commit eae849ca034c7f1015f0a6f17421ebc737f0a069 Author: Frederic Weisbecker Date: Sun Nov 23 17:33:12 2008 +0100 tracing/function-return-tracer: don't trace kfree while it frees the return stack Impact: fix a crash While I killed the cat process, I got sometimes the following (but rare) crash: [ 65.689027] Pid: 2969, comm: cat Not tainted (2.6.28-rc6-tip #83) AMILO Li 2727 [ 65.689027] EIP: 0060:[<00000000>] EFLAGS: 00010082 CPU: 1 [ 65.689027] EIP is at 0x0 [ 65.689027] EAX: 00000000 EBX: f66cd780 ECX: c019a64a EDX: f66cd780 [ 65.689027] ESI: 00000286 EDI: f66cd780 EBP: f630be2c ESP: f630be24 [ 65.689027] DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 [ 65.689027] Process cat (pid: 2969, ti=f630a000 task=f66cd780 task.ti=f630a000) [ 65.689027] Stack: [ 65.689027] 00000012 f630bd54 f630be7c c012c853 00000000 c0133cc9 f66cda54 f630be5c [ 65.689027] f630be68 f66cda54 f66cd88c f66cd878 f7070000 00000001 f630be90 c0135dbc [ 65.689027] f614a614 f630be68 f630be68 f65ba200 00000002 f630bf10 f630be90 c012cad6 [ 65.689027] Call Trace: [ 65.689027] [] ? do_exit+0x603/0x850 [ 65.689027] [] ? next_signal+0x9/0x40 [ 65.689027] [] ? dequeue_signal+0x8c/0x180 [ 65.689027] [] ? do_group_exit+0x36/0x90 [ 65.689027] [] ? get_signal_to_deliver+0x20c/0x390 [ 65.689027] [] ? do_notify_resume+0x99/0x8b0 [ 65.689027] [] ? tty_ldisc_deref+0x5a/0x80 [ 65.689027] [] ? trace_hardirqs_on+0xb/0x10 [ 65.689027] [] ? tty_ldisc_deref+0x5a/0x80 [ 65.689027] [] ? n_tty_write+0x0/0x340 [ 65.689027] [] ? redirected_tty_write+0x82/0x90 [ 65.689027] [] ? vfs_write+0x99/0xd0 [ 65.689027] [] ? redirected_tty_write+0x0/0x90 [ 65.689027] [] ? sys_write+0x42/0x70 [ 65.689027] [] ? work_notifysig+0x13/0x19 [ 65.689027] Code: Bad EIP value. [ 65.689027] EIP: [<00000000>] 0x0 SS:ESP 0068:f630be24 This is because on do_exit(), kfree is called to free the return addresses stack but kfree is traced and stored its return address in this stack. This patch fixes it. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 6efdcfaf16cc4fc76651603e083cf3ec4bd1e6de Author: Alexander van Heukelum Date: Sun Nov 23 10:15:32 2008 +0100 x86: KPROBE_ENTRY should be paired wth KPROBE_END Impact: move some code out of .kprobes.text KPROBE_ENTRY switches code generation to .kprobes.text, and KPROBE_END uses .popsection to get back to the previous section (.text, normally). Also replace ENDPROC by END, for consistency. Signed-off-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit 322648d1ba75280d62f114d47048beb0b35f5047 Author: Alexander van Heukelum Date: Sun Nov 23 10:08:28 2008 +0100 x86: include ENTRY/END in entry handlers in entry_64.S Impact: cleanup of entry_64.S Except for the order and the place of the functions, this patch should not change the generated code. Signed-off-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit 813b8520f5c240c71df55d14095a7b171de264ce Merge: ed313489badef16d700f5a3be50e8fd8f8294bc8 7cc45e64323c8a1042f56e6a8d1dc982f98d52a8 Author: Ingo Molnar Date: Sun Nov 23 13:47:54 2008 +0100 Merge branch 'ppc/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/powerpc commit 050dc6944b9ca2186f4729ab44e0da3743933941 Author: Hannes Eder Date: Sun Nov 23 13:35:48 2008 +0100 x86: remove duplicate #define from 'cpufeature.h' Impact: cleanup Remove duplicate #define from 'cpufeature.h'. This also fixes the following sparse warning: arch/x86/kernel/cpu/capflags.c:54:3: warning: Initializer entry defined twice arch/x86/kernel/cpu/capflags.c:58:3: also defined here Signed-off-by: Hannes Eder Signed-off-by: Ingo Molnar commit 8a2503fa4a6fae8ee42140b339f37373fc6acaae Author: Cyrill Gorcunov Date: Sun Nov 23 14:53:43 2008 +0300 x86: move dwarf2 related macro to dwarf2.h Impact: cleanup Move recently introduced dwarf2 macros to dwarf2.h file. It allow us to not duplicate them in assembly files. Active usage of _cfi macros don't make assembly files more obvious to understand but we already have a lot of macros there which requires to search the definitions of them *anyway*. But at least it make every cfi usage one line shorter. Also some code alignment is done. Signed-off-by: Cyrill Gorcunov Signed-off-by: Ingo Molnar commit e38da59269be8c0196d16dff1be5bb26076afc6a Author: Török Edwin Date: Sun Nov 23 13:08:10 2008 +0200 tracing/stack-tracer: avoid races accessing file Impact: fix race vma->vm_file reference is only stable while holding the mmap_sem, so move usage of it to within the critical section. Signed-off-by: Ingo Molnar commit 8d26487fd4ddda7a0237da418fb8669fb06ae557 Author: Török Edwin Date: Sun Nov 23 12:39:08 2008 +0200 tracing/stack-tracer: introduce CONFIG_USER_STACKTRACE_SUPPORT Impact: cleanup User stack tracing is just implemented for x86, but it is not x86 specific. Introduce a generic config flag, that is currently enabled only for x86. When other arches implement it, they will have to SELECT USER_STACKTRACE_SUPPORT. Signed-off-by: Török Edwin Signed-off-by: Ingo Molnar commit cffa10aecb6891f090a4d53a075bc40c082c45fc Author: Török Edwin Date: Sun Nov 23 12:39:07 2008 +0200 tracing/stack-tracer: fix locking and refcounts Impact: fix refcounting/object-access bug Hold mmap_sem while looking up/accessing vma. Hold the RCU lock while using the task we looked up. Signed-off-by: Török Edwin Signed-off-by: Ingo Molnar commit 8d7c6a96164651dbbab449ef0b5c20ae1f76a3a1 Author: Török Edwin Date: Sun Nov 23 12:39:06 2008 +0200 tracing/stack-tracer: fix style issues Impact: cleanup Signed-off-by: Török Edwin Signed-off-by: Ingo Molnar commit 0429149fb5e01edc410648591c19095d2074ee00 Author: Steven Rostedt Date: Fri Nov 21 14:44:57 2008 -0500 trace: fix compiler warning in branch profiler Impact: fix compiler warning The ftrace_pointers used in the branch profiler are constant values. They should never change. But the compiler complains when they are passed into the debugfs_create_file as a data pointer, because the function discards the qualifier. This patch typecasts the parameter to debugfs_create_file back to a void pointer. To remind the callbacks that they are pointing to a constant value, I also modified the callback local pointers to be const struct ftrace_pointer * as well. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 69bb54ec05f57da7f6fac2cec0820cbc970df20f Author: Steven Rostedt Date: Fri Nov 21 12:59:38 2008 -0500 ftrace: add ftrace_off_permanent Impact: add new API to disable all of ftrace on anomalies It case of a serious anomaly being detected (like something caught by lockdep) it is a good idea to disable all tracing immediately, without grabing any locks. This patch adds ftrace_off_permanent that disables the tracers, function tracing and ring buffers without a way to enable them again. This should only be used when something serious has been detected. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 033601a32b2012b6948e80e739cca40bff4de4a0 Author: Steven Rostedt Date: Fri Nov 21 12:41:55 2008 -0500 ring-buffer: add tracing_off_permanent Impact: feature to permanently disable ring buffer This patch adds a API to the ring buffer code that will permanently disable the ring buffer from ever recording. This should only be called when some serious anomaly is detected, and the system may be in an unstable state. When that happens, shutting down the recording to the ring buffers may be appropriate. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit e58918ab9d4cd375f6d842e6d88cf4d7a55cbfcc Author: Jim Radford Date: Thu Nov 20 19:48:39 2008 -0800 ftrace: scripts/recordmcount.pl support for ARM Impact: extend scripts/recordmcount.pl to ARM Arm uses %progbits instead of @progbits and requires only 4 byte alignment. [ Thanks to Sam Ravnborg for mentioning that ARM uses %progbits ] Signed-off-by: Jim Radford Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 3a3d04aed05add2247ea2ba5da5f90dba4062f3f Author: Matt Fleming Date: Thu Nov 20 21:49:52 2008 +0000 ftrace: specify $alignment for sh architecture Impact: extend scripts/recordmcount.pl with default alignment for SH Set $alignment=2 for the sh architecture so that a ".align 2" directive will be emitted for all __mcount_loc sections. Fix a whitspace error while I'm here (converted spaces to tabs). Signed-off-by: Matt Fleming Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 2bcd521a684cc94befbe2ce7d5b613c841b0d304 Author: Steven Rostedt Date: Fri Nov 21 01:30:54 2008 -0500 trace: profile all if conditionals Impact: feature to profile if statements This patch adds a branch profiler for all if () statements. The results will be found in: /debugfs/tracing/profile_branch For example: miss hit % Function File Line ------- --------- - -------- ---- ---- 0 1 100 x86_64_start_reservations head64.c 127 0 1 100 copy_bootdata head64.c 69 1 0 0 x86_64_start_kernel head64.c 111 32 0 0 set_intr_gate desc.h 319 1 0 0 reserve_ebda_region head.c 51 1 0 0 reserve_ebda_region head.c 47 0 1 100 reserve_ebda_region head.c 42 0 0 X maxcpus main.c 165 Miss means the branch was not taken. Hit means the branch was taken. The percent is the percentage the branch was taken. This adds a significant amount of overhead and should only be used by those analyzing their system. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit bac28bfe42ba98ee67503f78984d1d5e1ebbbb78 Author: Steven Rostedt Date: Fri Nov 21 01:51:53 2008 -0500 trace: branch profiling should not print percent without data Impact: cleanup on output of branch profiler When a branch has not been taken, it does not make sense to show a percentage incorrect or hit. This patch changes the behaviour to print out a 'X' when the branch has not been executed yet. For example: correct incorrect % Function File Line ------- --------- - -------- ---- ---- 2096 0 0 do_arch_prctl process_64.c 832 0 0 X do_arch_prctl process_64.c 804 2604 0 0 IS_ERR err.h 34 130228 5765 4 __switch_to process_64.c 673 0 0 X enable_TSC process_64.c 448 0 0 X disable_TSC process_64.c 431 Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 45b797492a0758e64dff74e9db70e1f65e0603a5 Author: Steven Rostedt Date: Fri Nov 21 00:40:40 2008 -0500 trace: consolidate unlikely and likely profiler Impact: clean up to make one profiler of like and unlikely tracer The likely and unlikely profiler prints out the file and line numbers of the annotated branches that it is profiling. It shows the number of times it was correct or incorrect in its guess. Having two different files or sections for that matter to tell us if it was a likely or unlikely is pretty pointless. We really only care if it was correct or not. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 42f565e116e0408b5ddc21a33c4a4d41fd572420 Author: Steven Rostedt Date: Thu Nov 20 23:57:47 2008 -0500 trace: remove extra assign in branch check Impact: clean up of branch check The unlikely/likely profiler does an extra assign of the f.line. This is not needed since it is already calculated at compile time. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit c204f7264c7de85aecd3638dc8fe07aba6d1fff5 Author: Steven Rostedt Date: Thu Nov 20 15:07:34 2008 -0500 ftrace: create default variables for archs in recordmcount.pl Impact: cleanup of recordmcount.pl Now that more architectures are being ported to the MCOUNT_RECORD method, there is no reason to have each declare their own arch specific variable if most of them share the same value. This patch creates a set of default values for the arch specific variables based off of i386. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 42e007d0400155fbc12c5344c808889e6ae33d32 Author: Steven Rostedt Date: Thu Nov 20 07:16:16 2008 -0800 ftrace: add support for powerpc to recordmcount.pl script Impact: Add PowerPC port to recordmcount.pl script This patch updates the recordmcount.pl script to process PowerPC. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 0da85c09b44bfea07e63ed5324aabc7cfc8a889a Author: Matt Fleming Date: Wed Nov 12 20:11:47 2008 +0900 sh: dynamic ftrace support. First cut at dynamic ftrace support. [ Steven Rostedt - only updated the recordmcount.pl file. There are updates for PowerPC that will conflict with this, and we need to base off of these changes. ] Signed-off-by: Matt Fleming Signed-off-by: Paul Mundt Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 4e42ebd57b2e727b28bf5f6068e95cd19b0e807b Author: Hannes Eder Date: Fri Nov 21 22:56:17 2008 +0100 x86: hypervisor - fix sparse warnings Impact: fix sparse build warning Fix the following sparse warnings: arch/x86/kernel/cpu/hypervisor.c:37:15: warning: symbol 'get_hypervisor_tsc_freq' was not declared. Should it be static? arch/x86/kernel/cpu/hypervisor.c:53:16: warning: symbol 'init_hypervisor' was not declared. Should it be static? Signed-off-by: Hannes Eder Cc: "Alok N Kataria" Cc: "Dan Hecht" Signed-off-by: Ingo Molnar commit 1d926f2756392c6909f60e0c9fe2a09d5462e376 Author: Will Newton Date: Fri Nov 21 14:08:59 2008 -0800 init/main.c: use ktime accessor function in initcall_debug code Impact: fix initcall debug output on non-scalar ktime platforms (32-bit embedded) The initcall_debug code access the tv64 member of ktime. This won't work correctly for large deltas on platforms that don't use the scalar ktime implementation. Signed-off-by: Will Newton Acked-by: Tim Bird Signed-off-by: Andrew Morton Signed-off-by: Ingo Molnar commit c450d7805b2c5cac8846c5f490fddfd9030d2207 Author: Hannes Eder Date: Fri Nov 21 23:17:09 2008 +0100 x86: vmware - fix sparse warnings Impact: fix sparse build warning Fix the following sparse warnings: arch/x86/kernel/cpu/vmware.c:69:5: warning: symbol 'vmware_platform' was not declared. Should it be static? arch/x86/kernel/cpu/vmware.c:89:15: warning: symbol 'vmware_get_tsc_khz' was not declared. Should it be static? arch/x86/kernel/cpu/vmware.c:107:16: warning: symbol 'vmware_set_feature_bits' was not declared. Should it be static? Signed-off-by: Hannes Eder Cc: "Alok N Kataria" Cc: "Dan Hecht" Signed-off-by: Ingo Molnar commit 2456d738ef051f85170bf018faef63f83fa84eb5 Author: Hiroshi Shimamoto Date: Fri Nov 21 17:38:57 2008 -0800 x86: signal: cosmetic unification of sys_rt_sigreturn() Impact: cleanup Add #ifdef directive for unification. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 666ac7be049ec290625e65d5922ff59f7bdec527 Author: Hiroshi Shimamoto Date: Fri Nov 21 17:38:25 2008 -0800 x86: signal: cosmetic unification of sys_sigaltstack() Impact: cleanup Add #ifdef directive for unification. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 5c9b3a0c7b8be3cdef3d7418f0a49127e7cdc998 Author: Hiroshi Shimamoto Date: Fri Nov 21 17:36:41 2008 -0800 x86: signal: cosmetic unification of including headers Impact: cleanup Make the headers portion of signal_32.c and signal_64.c the same. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit cbe2f5a6e84eebb98ab42fc5e58c3cd5b7767349 Author: Ingo Molnar Date: Sun Nov 23 10:37:12 2008 +0100 tracing: allow tracing of suspend/resume & hibernation code again Impact: widen function-tracing to suspend+resume (and hibernation) sequences Now that the ftrace kernel thread is gone, we can allow tracing during suspend/resume again. So revert these two commits: f42ac38c5 "ftrace: disable tracing for suspend to ram" 41108eb10 "ftrace: disable tracing for hibernation" This should be tested very carefully, as it could interact with altneratives instruction patching, etc. Signed-off-by: Ingo Molnar commit b54d3de9f3b8956653b06f1a32e9f9321c6d9027 Author: Török Edwin Date: Sat Nov 22 13:28:48 2008 +0200 tracing: identify which executable object the userspace address belongs to Impact: modify+improve the userstacktrace tracing visualization feature Store thread group leader id, and use it to lookup the address in the process's map. We could have looked up the address on thread's map, but the thread might not exist by the time we are called. The process might not exist either, but if you are reading trace_pipe, that is unlikely. Example usage: mount -t debugfs nodev /sys/kernel/debug cd /sys/kernel/debug/tracing echo userstacktrace >iter_ctrl echo sym-userobj >iter_ctrl echo sched_switch >current_tracer echo 1 >tracing_enabled cat trace_pipe >/tmp/trace& .... run application ... echo 0 >tracing_enabled cat /tmp/trace You'll see stack entries like: /lib/libpthread-2.7.so[+0xd370] You can convert them to function/line using: addr2line -fie /lib/libpthread-2.7.so 0xd370 Or: addr2line -fie /usr/lib/debug/libpthread-2.7.so 0xd370 For non-PIC/PIE executables this won't work: a.out[+0x73b] You need to run the following: addr2line -fie a.out 0x40073b (where 0x400000 is the default load address of a.out) Signed-off-by: Török Edwin Signed-off-by: Ingo Molnar commit 74e2f334f4440cbcb63e9ebbcdcea430d41bdfa3 Author: Török Edwin Date: Sat Nov 22 13:28:48 2008 +0200 vfs, seqfile: make mangle_path() global Impact: expose new VFS API make mangle_path() available, as per the suggestions of Christoph Hellwig and Al Viro: http://lkml.org/lkml/2008/11/4/338 Signed-off-by: Török Edwin Signed-off-by: Ingo Molnar commit 02b67518e2b1c490787dac7f35e1204e74fe21ba Author: Török Edwin Date: Sat Nov 22 13:28:47 2008 +0200 tracing: add support for userspace stacktraces in tracing/iter_ctrl Impact: add new (default-off) tracing visualization feature Usage example: mount -t debugfs nodev /sys/kernel/debug cd /sys/kernel/debug/tracing echo userstacktrace >iter_ctrl echo sched_switch >current_tracer echo 1 >tracing_enabled .... run application ... echo 0 >tracing_enabled Then read one of 'trace','latency_trace','trace_pipe'. To get the best output you can compile your userspace programs with frame pointers (at least glibc + the app you are tracing). Signed-off-by: Török Edwin Signed-off-by: Ingo Molnar commit 82f60f0bc854aada696f27d863c03bef91f1509d Author: Ingo Molnar Date: Sun Nov 23 09:18:56 2008 +0100 tracing/function-return-tracer: clean up task start/exit callbacks Impact: cleanup Eliminate #ifdefs in core code by using empty inline functions. Signed-off-by: Ingo Molnar commit f201ae2356c74bcae130b2177b3dca903ea98071 Author: Frederic Weisbecker Date: Sun Nov 23 06:22:56 2008 +0100 tracing/function-return-tracer: store return stack into task_struct and allocate it dynamically Impact: use deeper function tracing depth safely Some tests showed that function return tracing needed a more deeper depth of function calls. But it could be unsafe to store these return addresses to the stack. So these arrays will now be allocated dynamically into task_struct of current only when the tracer is activated. Typical scheme when tracer is activated: - allocate a return stack for each task in global list. - fork: allocate the return stack for the newly created task - exit: free return stack of current - idle init: same as fork I chose a default depth of 50. I don't have overruns anymore. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit a0a70c735ef714fe1b6777b571630c3d50c7b008 Merge: 9676e73a9e0cbdc521e1ebf4e13e6e5aada34247 60a515132086b2c28a8141d873297fdf7a180ca7 0231022cc32d5f2e7f3c06b75691dda0ad6aec33 522a110b42b306d696cf84e34c677ed0e7080194 Author: Ingo Molnar Date: Sun Nov 23 09:10:32 2008 +0100 Merge branches 'tracing/profiling', 'tracing/options' and 'tracing/urgent' into tracing/core commit f377fa123d0ec621e8e361ecc3f2a8ee70e81a2e Author: Ingo Molnar Date: Sun Nov 23 09:02:26 2008 +0100 x86: clean up stack overflow debug check Impact: cleanup Simplify the irq-sampled stack overflow debug check: - eliminate an #idef - use WARN_ONCE() to emit a single warning (all bets are off after the first such warning anyway) Signed-off-by: Ingo Molnar commit 3aeb95d5b7839708a8d8e11aa274ee4d0d4042cc Author: jia zhang Date: Sun Nov 23 09:51:41 2008 +0800 x86_64: fix the check in stack_overflow_check Impact: make stack overflow debug check and printout narrower stack_overflow_check() should consider the stack usage of pt_regs, and thus it could warn us in advance. Additionally, it looks better for the warning time to start at INITIAL_JIFFIES. Assuming that rsp gets close to the check point before interrupt arrives: when interrupt really happens, thread_info will be partly overrode. Signed-off-by: jia zhang Signed-off-by: Ingo Molnar commit ca9eed76133c00e7f4b1eeb4c1a6cb800cd2654c Merge: 8652cb4b0d87accbe78725fd2a13be2787059649 13d428afc007fcfcd6deeb215618f54cf9c0cae6 Author: Ingo Molnar Date: Sun Nov 23 08:55:47 2008 +0100 Merge commit 'v2.6.28-rc6' into x86/debug commit 3889d0cea2b73049bdca062d9ff1e5d33468289c Author: H. Peter Anvin Date: Sat Nov 22 23:39:23 2008 -0800 x86: revert default reboot method to REBOOT_KBD Impact: Reverts default reboot method. Checkin 14d7ca5c575853664d8fe4f225a77b8df1b7de7d changed the default reboot method to "pci", a.k.a. port CF9. Unfortunately this has been shown to cause lockups on at least two systems for which REBOOT_KBD worked, both Thinkpads with Intel chipsets. This reverts the default to REBOOT_KBD, while leaving the option to have "reboot=pci" specified explicitly or via a DMI match. Signed-off-by: H. Peter Anvin commit 4805286bffa9d7b85223ab2038f08b4b6322a176 Author: Wu Fengguang Date: Sat Nov 22 09:40:57 2008 +0800 ALSA: hda - fix build warning when CONFIG_PROC_FS=n Fix "defined but not used" build warning by moving eld_versoin_names[] and cea_edid_version_names[] into hdmi_print_eld_info(). Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 9415e1c418b33bf9b8d8903fb98876ec72673e3f Author: Wu Fengguang Date: Sat Nov 22 09:40:56 2008 +0800 ALSA: hda - fix DisplayPort naming DisplayPort is a digital display interface standard put forth by the Video Electronics Standards Association (VESA). It defines a new license-free, royalty-free, digital audio/video interconnect, intended to be used primarily between a computer and its display monitor, or a computer and a home-theater system. - From Wikipedia, the free encyclopedia Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit a5fcf89eff2372b50f2d47fbb3e1f3090f044ee3 Author: Wu Fengguang Date: Sat Nov 22 09:40:55 2008 +0800 ALSA: hda - document the ELD proc interface Describe what ELD proc interface provides and how to fix incorrect values. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit acb05993881005cdaf5f8291491b4edcb8f60ef3 Author: Wu Fengguang Date: Sat Nov 22 09:40:54 2008 +0800 ALSA: hda - ELD proc interface write updates - rename ELD proc write routine to hdmi_write_eld_info() - support modifying WMAPro's profile Write to some ELD fields (monitor_name, manufacture_id, product_id, eld_version, edid_version) are deliberately not supported, since that won't correct wrong behaviors and only leads to confusions. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 03284c8f23440479de79e8cbf368085ea872884e Author: Wu Fengguang Date: Sat Nov 22 09:40:53 2008 +0800 ALSA: hda - make HDMI messages more user friendly - make some messages more user friendly - add message prefix "HDMI:" to indicate the problem's domain (also easier to do `dmesg | grep HDMI` ;-) Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit cc02b83c904592ce8714787094256a9bf8e24b6f Author: Wu Fengguang Date: Sat Nov 22 09:40:52 2008 +0800 ALSA: hda - report selected CA index for Audio InfoFrame Print some CA selecting info, which could be valuable for debugging when something goes wrong. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit b83923a3931a43df7397a7491f0c9d9b9d46624a Author: Wu Fengguang Date: Sat Nov 22 09:40:51 2008 +0800 ALSA: hda - minor HDMI code cleanups Some minor code cleanups. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit c81084114f6ff957bc6b5a0048350479c1c1f7b3 Author: Alexander van Heukelum Date: Fri Nov 21 22:59:52 2008 +0100 x86: split out some macro's and move common code to paranoid_exit, fix Impact: fix bootup crash Even though it tested fine for me, there was still a bug in the first patch: I have overlooked a call to ptregscall_common. This patch fixes that, I think, but the code is never executed for me while running a debian install... (I tested this by putting an "1:jmp 1b" in there.) Signed-off-by: Ingo Molnar commit c46920dadba65856eb1a1f1ffa1b350875db1228 Merge: f5f4cf08467db10de061a1b90037a56a360d3554 6476a907b57d9229de7807aeea534ad45e19a4ce Author: David S. Miller Date: Fri Nov 21 21:30:58 2008 -0800 Merge branch 'for-david' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 commit f5f4cf08467db10de061a1b90037a56a360d3554 Author: Alexander Duyck Date: Fri Nov 21 21:30:24 2008 -0800 igb: do not use phy ops in ethtool test cleanup for non-copper parts Currently the igb driver is experiencing a panic due to a null function pointer being used during the cleanup of the ethtool looback test on fiber/serdes parts. This patch prevents that and adds a check prior to calling any phy function. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 21fc578dcaa66dd30bad3c2f2cd7578e2865e8f2 Author: Scott Feldman Date: Fri Nov 21 21:29:25 2008 -0800 enic: misc cleanup items: Clarrify reading PBA has no side-effect (clearing). Add missing GPL license text. Signed-off-by: Scott Feldman Signed-off-by: David S. Miller commit 845964515a76381e204d3399af82c149f8abcc1c Author: Scott Feldman Date: Fri Nov 21 21:29:01 2008 -0800 enic: move wmb closer to where needed: before writing posted_index to hw Signed-off-by: Scott Feldman Signed-off-by: David S. Miller commit cb3c766975985885e64e20cc72c4a36d90da2b30 Author: Scott Feldman Date: Fri Nov 21 21:28:40 2008 -0800 enic: mask off some reserved bits in CQ descriptor for future use Signed-off-by: Scott Feldman Signed-off-by: David S. Miller commit 27372bf5fa5ffc0fee3ddb486a0da942295fd8e0 Author: Scott Feldman Date: Fri Nov 21 21:28:18 2008 -0800 enic: driver/firmware API updates Add driver/firmware compatibility check. Update firmware notify cmd to honor notify area size. Add new version of init cmd. Add link_down_cnt to notify area to track link down count. Signed-off-by: Scott Feldman Signed-off-by: David S. Miller commit 86ca9db794a285f18f31ed15601696b238ccb57a Author: Scott Feldman Date: Fri Nov 21 21:26:55 2008 -0800 enic: enable ethtool LRO support Enable ethtool support for get/set_flags so LRO can be turned on/off by fwding drivers such as the bridge driver. LRO is not compatible with fwding drivers. Signed-off-by: Scott Feldman Signed-off-by: David S. Miller commit 6476a907b57d9229de7807aeea534ad45e19a4ce Author: Krzysztof HaÅ‚asa Date: Thu Nov 20 15:51:05 2008 +0100 WAN pc300too.c: Fix PC300-X.21 detection pc300too driver works around a bug in PCI9050 bridge. Unfortunately it was doing that too late. Signed-off-by: Krzysztof HaÅ‚asa commit 72364706c3b7c09a658e356218a918c5f92dcad0 Author: Krzysztof HaÅ‚asa Date: Thu Aug 14 19:18:17 2008 +0200 WAN: syncppp.c is no longer used by any kernel code. Remove it. Signed-off-by: Krzysztof HaÅ‚asa commit e022c2f07ae52bfbd92faa273db0db2f34eb28e8 Author: Krzysztof HaÅ‚asa Date: Thu Aug 14 19:17:38 2008 +0200 WAN: new synchronous PPP implementation for generic HDLC. Signed-off-by: Krzysztof HaÅ‚asa commit e1f024eb5d88e5b4f8e58e99c95082c342f70a1a Author: Krzysztof HaÅ‚asa Date: Fri Jul 11 00:13:09 2008 +0200 WAN: Simplify sca_init_port() in HD64572 driver. Signed-off-by: Krzysztof HaÅ‚asa commit fcfe9ff3e2fb2b9606e2e375f34c157271b4555c Author: Krzysztof HaÅ‚asa Date: Thu Jul 10 00:30:51 2008 +0200 WAN: Correct comments in hd6457[02].c Signed-off-by: Krzysztof HaÅ‚asa commit 0b59cef885f7d451acad02f70c9712f1ef3638b1 Author: Krzysztof HaÅ‚asa Date: Wed Jul 9 23:39:12 2008 +0200 WAN: HD64572 drivers don't use next_desc() anymore. Signed-off-by: Krzysztof HaÅ‚asa commit 61e0a6a268947f7385282c6841f3e3d64b4c5cb9 Author: Krzysztof HaÅ‚asa Date: Wed Jul 9 23:13:49 2008 +0200 WAN: Simplify HD64572 drivers. Signed-off-by: Krzysztof HaÅ‚asa commit 967834361a4beb3bbd3069189c192dc6fdeef8a9 Author: Krzysztof HaÅ‚asa Date: Wed Jul 9 21:30:17 2008 +0200 WAN: don't print HD64572 driver versions anymore. Signed-off-by: Krzysztof HaÅ‚asa commit 0954ed826921bcf11352e05a58d598c493e6bdfb Author: Krzysztof HaÅ‚asa Date: Wed Jul 9 21:24:42 2008 +0200 WAN: Simplify HD64572 status handling. Signed-off-by: Krzysztof HaÅ‚asa commit 0446c3b1e6208c6563ff9a0b22fb3b5e5e3e775c Author: Krzysztof HaÅ‚asa Date: Wed Jul 9 19:28:45 2008 +0200 WAN: rework HD64572 interrupts a bit. Signed-off-by: Krzysztof HaÅ‚asa commit b0942f78dd6493c5590cc80fedd5e3b357a15334 Author: Krzysztof HaÅ‚asa Date: Wed Jul 9 20:01:23 2008 +0200 WAN: HD64572 already handles TX underruns with DMAC. Signed-off-by: Krzysztof HaÅ‚asa commit 09fd65aa8ac934ea4ce7e55945a687292731e9c9 Author: Krzysztof HaÅ‚asa Date: Wed Jul 9 19:47:05 2008 +0200 WAN: TX-done handler now uses the ownership bit in HD64572 drivers. Signed-off-by: Krzysztof HaÅ‚asa commit abc9d91a35a924c8db0e949cd443471672e37cdb Author: Krzysztof HaÅ‚asa Date: Wed Jul 9 16:49:37 2008 +0200 WAN: convert HD64572-based drivers to NAPI. Signed-off-by: Krzysztof HaÅ‚asa commit 302243922b374b147380f61774b44612eb2040fd Author: Krzysztof HaÅ‚asa Date: Mon Mar 24 20:24:23 2008 +0100 WAN: remove SCA support from SCA-II drivers Signed-off-by: Krzysztof HaÅ‚asa commit 88597364573a46a57496c62ff0ee4b8148831ed0 Author: Krzysztof HaÅ‚asa Date: Mon Mar 24 19:12:23 2008 +0100 WAN: remove SCA II support from SCA drivers Signed-off-by: Krzysztof HaÅ‚asa commit 6b40aba304e6f94c747ad9559e03ea03a49e8008 Author: Krzysztof HaÅ‚asa Date: Mon Mar 24 16:39:02 2008 +0100 WAN: split hd6457x.c into hd64570.c and hd64572.c Supporting both original SCA and SCA-II in one file was nice at some point but now it's increasingly painful. Signed-off-by: Krzysztof HaÅ‚asa commit 4e4fd4e485ad63a9074ff09a9b53ffc7a5c594ec Author: Stephen Hemminger Date: Fri Nov 21 17:39:02 2008 -0800 ne2k: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. This required some additional work to export common code ei_XXX. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 99921b7e64f7726e7134046f8e1e8004e2711f30 Author: Stephen Hemminger Date: Fri Nov 21 17:37:54 2008 -0800 eql: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 974acda0ea3261436ddf5fd7e79b56150acdb138 Author: Stephen Hemminger Date: Fri Nov 21 17:37:24 2008 -0800 sc92031: convert to net_device_ops Convert this driver to net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit da1c14a19b978a95180ea91ab0008b97a5843995 Author: Stephen Hemminger Date: Fri Nov 21 17:36:58 2008 -0800 qla3xxx: convert to net_device_ops Convert this driver to net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit a8652d237b599a03d7d982fcfdab276706babfa5 Author: Stephen Hemminger Date: Fri Nov 21 17:36:36 2008 -0800 hamachi: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit c64213cd138cf9815839f7278b5eee89d31fbacb Author: Stephen Hemminger Date: Fri Nov 21 17:36:04 2008 -0800 bnx2x: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 6557d7b8599c22819d16497ab6dcc33f2f3027a4 Author: Stephen Hemminger Date: Fri Nov 21 17:35:40 2008 -0800 ns83820: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit bfd82c35824016920c629ea55963dc6db6f9effe Author: Stephen Hemminger Date: Fri Nov 21 17:35:16 2008 -0800 yellowfin: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit a7bd89cbb1aa8342617c2f8a6dc0595e5f553115 Author: Stephen Hemminger Date: Fri Nov 21 17:34:56 2008 -0800 r6040: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 09ab9e7cddf0f10afd4695d098120d63183c74d1 Author: Stephen Hemminger Date: Fri Nov 21 17:34:32 2008 -0800 sis900: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 2f30b1f666b8fa13eb7a254243066e6b77b583f7 Author: Stephen Hemminger Date: Fri Nov 21 17:34:09 2008 -0800 tehuti: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit c3ecb9f3235ce6e39249690cdd24d678894c2c72 Author: Stephen Hemminger Date: Fri Nov 21 17:32:54 2008 -0800 sfc: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Acked-by: Ben Hutchings Signed-off-by: David S. Miller commit 1abd266f091e4f281a7c1e8813106fdf1528bb56 Author: Stephen Hemminger Date: Fri Nov 21 17:32:15 2008 -0800 netxen: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Had to do some refactoring on multicast_list. Fix ethtool restart to propogate error code. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 876526443e64ae15bc3715dd6fbe8b9deadf89bc Author: Stephen Hemminger Date: Fri Nov 21 17:31:51 2008 -0800 dl2k: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 0421eae68ffaf5ecfac860ee86e6a92e5b32a992 Author: Stephen Hemminger Date: Fri Nov 21 17:31:27 2008 -0800 bnx2: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 3addc568a656e9c8e313e78cfe7ea1e289bf6fd8 Author: Stephen Hemminger Date: Fri Nov 21 17:30:58 2008 -0800 mlx4: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 8126089f9f3ee2608b11dd6c629a71ae1806e4fc Author: Stephen Hemminger Date: Fri Nov 21 17:30:35 2008 -0800 myri10ge: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 5d1d07d8b0bbed82546b89e3222ec98567c1652b Author: Stephen Hemminger Date: Fri Nov 21 17:30:11 2008 -0800 via-rhine: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 8668ae9241de085f046aa14fa3a97654a31a06e3 Author: Stephen Hemminger Date: Fri Nov 21 17:29:50 2008 -0800 qlge: fix sparse warnings Fix sparse warnings and one bug: * Several routines can be static * Don't lose __iomem annotation * fix locking on error path (bug) Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 25ed784910e43e61b5642dd8d2d8c13384a0d290 Author: Stephen Hemminger Date: Fri Nov 21 17:29:16 2008 -0800 qlge: convert to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 040250959da9b96e2fd30415e4ca15257a3460e4 Author: Stephen Hemminger Date: Fri Nov 21 17:28:55 2008 -0800 s2io: convert to net_device_ops Convert this driver to network device ops. Compile teseted only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit e48714baac0e81ed9e19a5785eee52e1eca8f56e Author: Stephen Hemminger Date: Fri Nov 21 17:28:33 2008 -0800 jme: convert driver to net_device_ops Convert driver to new net_device_ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit e245a3855eec42127b722ed9688a49ec3f3c9a27 Author: Matt Carlson Date: Fri Nov 21 17:23:26 2008 -0800 tg3: Update version to 3.96 This patch updates the version number to 3.96. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 2fbb69aa576f4392c4a04e6874fa429b8bde0f68 Author: Matt Carlson Date: Fri Nov 21 17:22:53 2008 -0800 broadcom: Add 57780 support This patch adds the 57780 PHY ID to the broadcom module. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 321d32a052d6b5f71111ebad4fbebea5577f8974 Author: Matt Carlson Date: Fri Nov 21 17:22:19 2008 -0800 tg3: Add 57780 support This patch adds support for the 57780 ASIC revision. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 22435849a6dcde2ce10d1870aba461a54e347fe3 Author: Matt Carlson Date: Fri Nov 21 17:21:13 2008 -0800 tg3: Allow GPHY powerdown on 5761 The ENABLE_APE flag tells the driver whether or not the device has an Application Processing Engine (APE). The APE does not need the PHY to be powered unless it is running management firmware. For backwards compatibility, management firmware will still set the ENABLE_ASF bit. Consequently, there is no reason to consider the ENABLE_APE flag when deciding whether or not to power down the phy. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit d5fe488a7b59e41b98b91137805159466b7b49c2 Author: Matt Carlson Date: Fri Nov 21 17:20:32 2008 -0800 tg3: Embrace pci_ioremap_bar() Per Dave Miller's suggestion, replace the remaining ioremap_nocache() call with pci_ioremap_bar(). Remove the two IORESOURCE_MEM checks as they are redundant. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit dfe00d7d890134f9cafda49e3e60e6ce27af91ed Author: Matt Carlson Date: Fri Nov 21 17:19:41 2008 -0800 tg3: Extract FW ver from alt NVRAM formats This patch extracts the bootcode firmware version from the alternate selfboot patch NVRAM format. This format is used on the 5784, 5761 and some newer devices. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 6833c043f9fc03696fde623914c4a0277df2a0bc Author: Matt Carlson Date: Fri Nov 21 17:18:59 2008 -0800 tg3: Enable GPHY APD on select devices GPHY Autopowerdown (APD) is a way to save power when energy is not detected on the wire. At the moment, only the 5784 and 5761 are capable of enabling this mode. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 5e7dfd0fb94abed04f59481d1ce0cc06a892048a Author: Matt Carlson Date: Fri Nov 21 17:18:16 2008 -0800 tg3: Prevent corruption at 10 / 100Mbps w CLKREQ This patch disables CLKREQ at 10Mbps and 100Mbps to workaround a TX BD corruption issue. This problem only affects the 5784 and 5761 (and 57780 AX) ASIC revisions. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 52f4490c3b6dcb1e8dec7ff9f1c35f09bd7c136f Author: Matt Carlson Date: Fri Nov 21 17:17:04 2008 -0800 tg3: Qualify use of tp->pcix_cap This patch makes sure the device is a PCIX device before attempting to use the pcix_cap device structure member. This is prep work for the following patch. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit ad8292681a629cdb16bb19ee7d721b457c32a23a Author: Matt Carlson Date: Fri Nov 21 17:16:16 2008 -0800 tg3: Use NET_IP_ALIGN This patch replaces hardcoded 2's with the NET_IP_ALIGN constant or TG3_RAW_IP_ALIGN where appropriate. Some platforms can redefine the NET_IP_ALIGN definition to zero if unaligned DMA transfers cost more than the IP header alignment gains. This patch represents a performance improvement when using the 5701 on these platforms. The copy path can be avoided. TG3_RAW_IP_ALIGN is used in cases where we always want to align the IP header on dword boundaries. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit cf005b1d0e34d8c964347331c43de089c674a5a1 Author: Qinghuang Feng Date: Fri Nov 21 17:15:03 2008 -0800 net: remove redundant argument comments Remove redundant argument comments in files of net/* Signed-off-by: Qinghuang Feng Signed-off-by: David S. Miller commit 6c0bce37ffc8f000a516fadf6dee84579c4c8f9b Merge: e243455d345ef62751723671bc2605a2f6032ceb a1eb5fe319beb9e181aa52c8adf75ad9aab56a89 Author: David S. Miller Date: Fri Nov 21 17:05:11 2008 -0800 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 commit e243455d345ef62751723671bc2605a2f6032ceb Author: Bruce Allan Date: Fri Nov 21 17:02:41 2008 -0800 e1000e: check return code from NVM accesses and fix bank detection Check return code for all NVM accesses[1] and error out accordingly; log a debug message for failed accesses. For ICH8/9, the valid NVM bank detect function was not checking whether the SEC1VAL (sector 1 valid) bit in the EECD register was itself valid (bits 8 and 9 also have to be set). If invalid, it would have defaulted to the possibly invalid bank 0. Instead, try to use the valid bank detection method used by ICH10 which has been cleaned up a bit. [1] - reads and updates only; not writes because those are only writing to the Shadow RAM, the update following the write is the only thing actually writing the modified Shadow RAM contents to the NVM. Signed-off-by: Bruce Allan Signed-off-by: David S. Miller commit a20e4cf9e6a37e40532593e00df153d01e317baf Author: Bruce Allan Date: Fri Nov 21 17:01:35 2008 -0800 e1000e: fix incorrect link status when switch module pulled On 82571 with SerDes, the true link state is not always correct when read from the STATUS register; use existing e1000_has_link() function instead. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 8452759060ad46fc071a7d5bbf1647df5ea2ceab Author: Bruce Allan Date: Fri Nov 21 17:00:22 2008 -0800 e1000e: store EEPROM version number to prevent unnecessary NVM reads Rather than reading the NVM to get the EEPROM version number everytime the ethool get_drvinfo function is called, read it once during probe and save it for future reference. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 0285c8dcaeaa73ddadc4f38383e5bbc03c394a29 Author: Bruce Allan Date: Fri Nov 21 16:59:54 2008 -0800 e1000e: cosmetic newline in debug message Add missing newline from debug message. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 5c48ef3e2028677a890d46d9a38b19174274f2e9 Author: Bruce Allan Date: Fri Nov 21 16:57:36 2008 -0800 e1000e: sync change flow control variables with ixgbe Sync flow control variables and usage model with that found in the ixgbe driver. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 8f12fe8653eb699a6bc4f88f1a80312466ea2b0e Author: Bruce Allan Date: Fri Nov 21 16:54:43 2008 -0800 e1000e: link up/down messages must follow a specific format The system log messages created on a link status change need to follow a specific format to work with tools some customers use. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 75eb0fad56da8494b43865097f362633debdc958 Author: Bruce Allan Date: Fri Nov 21 16:53:51 2008 -0800 e1000e: ESB2 config after link up On ESB2, the MAC-to-PHY (Kumeran) interface must be configured after link is up before any traffic is sent; a new PHY operations function pointer is provided for this. To facilitate read/write of the Kumeran registers without blocking PHY register writes, the driver/firmware synchronization method which previously used a hardware semaphore for both PHY and Kumeran register accesses is now split. New Kumeran register read/write functions utilize this new synchronization method. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 438b365a2758c012393a7be24d31a9c06aa0a504 Author: Bruce Allan Date: Fri Nov 21 16:51:33 2008 -0800 e1000e: check return of pci_save_state Check return of pci_save_state and error out accordingly. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 1605927fcee41fe205f1713725f47f0d52978489 Author: Bruce Allan Date: Fri Nov 21 16:51:06 2008 -0800 e1000e: update comments listing supported parts for each MAC family Some branding strings (displayed via lspci) are missing from the comments in various family-specific files in the driver. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 63dcf3d353f32ca7007bfa53a9384f3283076afc Author: Bruce Allan Date: Fri Nov 21 16:50:34 2008 -0800 e1000e: 82571 check for link fix on 82571 serdes Check for link test does not work properly for 82571 parts in a blade environment with an unterminated serdes link partner. Make the test more robust by checking the invalid bit. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 5aa49c82118d2aa08c6cfaba01fd86f969b3f1d7 Author: Bruce Allan Date: Fri Nov 21 16:49:53 2008 -0800 e1000e: commit speed/duplex changes for m88 PHY Follow the convention used elsewhere in e1000e to 'commit' PHY changes instead of directly writing to the PHY CTRL register to reset it. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 005cbdfc29cfc23b8faadd3619eed43e6550bfc1 Author: Alexander Duyck Date: Fri Nov 21 16:49:10 2008 -0800 e1000e: disable correctable errors for quad ports while going to D3 There has been an issue seen with the pci-e quad port adapters that will cause them to generate a pci-e correctable error on some system while transitioning to D3. Since no action is needed on this correctable error the simplest solution is to mask off the reporting of correctable errors. Signed-off-by: Alexander Duyck Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 7e3aab4a9cd7d37f80eee75bebb6a71347f82476 Author: David S. Miller Date: Fri Nov 21 16:39:19 2008 -0800 inet_diag: Missed conversion after changing inet ehash lockl to spinlocks. They are no longer a rwlocks. Signed-off-by: David S. Miller commit 176301e82190adb70f9bdf37cd5cb08fcfcb25fb Author: Wang Chen Date: Fri Nov 21 16:36:22 2008 -0800 netdevice pc300: Add the reason about PC300 BROKEN in Kconfig When compile test my previous patch, I found PC300 driver was broken. And there is no explanation about the broken. Add the reason about why change this driver to broken in Kconfig. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 6636e1170d1e49818933ecea0e715e0c73e19bb8 Author: Wang Chen Date: Fri Nov 21 16:35:44 2008 -0800 netdevice pc300: Convert directly reference of netdev->priv netdev's private data should be hdlc. pc300dev_t is the private data of hdlc. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 2baf8a2daab65cdd3f20bfeb4676a2f6aff7c3bf Author: Wang Chen Date: Fri Nov 21 16:34:18 2008 -0800 netdevice hdlc: Convert directly reference of netdev->priv For killing directly reference of netdev->priv, use netdev->ml_priv to replace it. Because the private pvc data comes from add_pvc() and can't be allocated in alloc_netdev(). Signed-off-by: Wang Chen Acked-by: Krzysztof Halasa Signed-off-by: David S. Miller commit f757fec4b0d45dfcb52f9a914a12225a6a0a3e05 Author: Eric Dumazet Date: Fri Nov 21 15:49:19 2008 -0800 net: use net_eq() in INET_MATCH and INET_TW_MATCH We can avoid some useless instructions if !CONFIG_NET_NS Because of RCU, we use INET_MATCH or INET_TW_MATCH twice for the found socket, so thats six instructions less per incoming TCP packet. Yet another tbench speedup :) Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit b20222667d371bb9ddeadd47d18072efcab3f6d2 Author: Takashi Iwai Date: Fri Nov 21 21:24:03 2008 +0100 ALSA: hda - Fix build without CONFIG_PROC_FS snd_print_pcm_rates() and snd_print_pcm_bits() are used by both hda_proc.c and hda_eld.c, thus they have to be defined in the common place. Signed-off-by: Takashi Iwai commit b8b1d08bf6fe7c09e6cb2294bc0e5e964b361241 Author: Alexander van Heukelum Date: Fri Nov 21 16:44:28 2008 +0100 x86: entry_64.S: split out some macro's and move common code to paranoid_exit Impact: cleanup DISABLE_INTERRUPTS(CLBR_NONE)/TRACE_IRQS_OFF is now always executed just before paranoid_exit. Move it there. Split out paranoidzeroentry, paranoiderrorentry, and paranoidzeroentry_ist to get more readable macro's. Signed-off-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit e2f6bc25b98dbb10d809ee50262b43fcae67840a Author: Alexander van Heukelum Date: Fri Nov 21 16:43:18 2008 +0100 x86: entry_64.S: factor out save_paranoid and paranoid_exit Impact: cleanup, shrink kernel image size Also expand the paranoid_exit0 macro into nmi_exit inside the nmi stub in the case of enabled irq-tracing. This gives a few hundred bytes code size reduction. Signed-off-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit c002a1e6b6b6f07ae04e68987054bf1f2150ae48 Author: Alexander van Heukelum Date: Fri Nov 21 16:41:55 2008 +0100 x86: introduce save_rest and restructure the PTREGSCALL macro in entry_64.S Impact: cleanup The save_rest function completes a partial stack frame for use by the PTREGSCALL macro. This also avoids the indirect call in PTREGSCALLs. This adds the macro movq_cfi_restore to hide the CFI_RESTORE annotation when restoring a register from the stack frame. Signed-off-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit c70bfa8733e1ec4babe5a1b4a9a90053f79eb301 Merge: d6752a532c700927fc7586cdd086391bfc50eaa9 b0fc5e043401df4cd243352f1030c4d23e767347 Author: Takashi Iwai Date: Fri Nov 21 18:02:57 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda commit d6752a532c700927fc7586cdd086391bfc50eaa9 Author: Takashi Iwai Date: Fri Nov 21 18:01:44 2008 +0100 ALSA: hda - mark Dell studio 1535 quirk Fixed the quirk string for Dell studio 1535 (the product name wasn't published at the time the patch was made). Signed-off-by: Takashi Iwai commit a1eb5fe319beb9e181aa52c8adf75ad9aab56a89 Author: Rami Rosen Date: Wed Nov 19 09:37:43 2008 +0200 wireless: missing include in lib80211.h This patch adds #include in lib80211.h to avoid these compilation erros. > In file included from /work/src/wireless-testing/net/wireless/lib80211.c:24: > /work/src/wireless-testing/include/net/lib80211.h:113: error: field > 'crypt_deinit_timer' has incomplete type > /work/src/wireless-testing/net/wireless/lib80211.c: In function > 'lib80211_crypt_info_init': > /work/src/wireless-testing/net/wireless/lib80211.c:83: error: implicit > declaration of function 'setup_timer' > /work/src/wireless-testing/net/wireless/lib80211.c: In function > 'lib80211_crypt_info_free': > /work/src/wireless-testing/net/wireless/lib80211.c:95: error: implicit > declaration of function 'del_timer_sync' > /work/src/wireless-testing/net/wireless/lib80211.c: In function > 'lib80211_crypt_deinit_handler': > /work/src/wireless-testing/net/wireless/lib80211.c:157: error: > implicit declaration of function 'add_timer' > /work/src/wireless-testing/net/wireless/lib80211.c: In function > 'lib80211_crypt_delayed_deinit': > /work/src/wireless-testing/net/wireless/lib80211.c:182: error: > implicit declaration of function 'timer_pending' > make[3]: *** [net/wireless/lib80211.o] Error 1 > make[2]: *** [net/wireless] Error 2 > make[1]: *** [net] Error 2 > make: *** [sub-make] Error 2 Signed-off-by: Rami Rosen Signed-off-by: John W. Linville commit 3461fc12a423c09169c6bb350319808ca4ec4b86 Author: Larry Finger Date: Wed Nov 12 17:31:52 2008 -0600 rtl8187: Update file authorship in comments Modify the file comments to reflect the current maintainers. Signed-off-by: Larry Finger Acked-by: Herton Ronaldo Krzesinski Acked-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 59840488c207ca85ea3787b36169e7fa9582baaf Author: Larry Finger Date: Wed Nov 12 17:13:09 2008 -0600 Update of MAINTAINERS for RTL8187 As noted by John Linville, the RTL818X maintainers have "moved on", and the responsibilities for RTL8180 and RTL8187 have been split. This is the corresponding update of MAINTAINERS. Signed-off-by: Larry Finger Acked-by: Herton Ronaldo Krzesinski Acked-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 4f6d4d1e36f30ac05bc39bcbfdba09e64e0f918c Author: Johannes Berg Date: Tue Oct 28 14:00:54 2008 +0100 wireless: clean up sysfs code using %pM Remove converting the MAC address to a string by a direct byte conversion and use %pM instead, since the code is now boilerplate use a macro to define the show functions, and also use the shorter __ATTR_RO macro to define the attributes. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 96dd603f3817c5289a906539cb85bddae9536868 Author: John W. Linville Date: Wed Nov 12 14:51:56 2008 -0500 MAINTAINERS: claim maintenance over rtl818x drivers Michael and Andrea have moved-on, so we shouldn't be bothering them about these drivers anymore. Actually, Herton Ronaldo Krzesinski, Hin-Tak Leung, and Larry Finger have been handling the rtl8187 stuff for a while. So, I would welcome a patch from one of them changing this to just RTL8180 and adding an RTL8187 entry with their names... Signed-off-by: John W. Linville commit da81dede95cf69b0e51442cb472f1581583381e4 Author: John W. Linville Date: Wed Nov 12 14:37:11 2008 -0500 rtl8180: adapt for deprecated IEEE80211_CONF_SHORT_SLOT_TIME flag This updates rtl8180 handling for short slot after "mac80211: fix short slot handling". Only rtl8180_rtl8225 actually had code for handling short slot times, so the other RF devices are untouched by this change. Signed-off-by: John W. Linville commit 627271018df75c8861b9e75b39d5995842e6ec95 Author: John W. Linville Date: Wed Nov 12 10:01:41 2008 -0500 mac80211: add explicit padding in struct ieee80211_tx_info Otherwise, the BUILD_BUG_ON calls in ieee80211_tx_info_clear_status can fail on some architectures. Signed-off-by: John W. Linville commit beb2a7f331361bfe81e71acdb0739eae570475a2 Author: John W. Linville Date: Tue Nov 11 16:45:38 2008 -0500 net/ieee80211 -> drivers/net/ipw2x00/libipw_* rename The old ieee80211 code only remains as a support library for the ipw2100 and ipw2200 drivers. So, move the code and rename it appropriately to reflects it's true purpose and status. Signed-off-by: John W. Linville commit 0795cd29b6fe05107b40080cb1fccadb96320c96 Author: John W. Linville Date: Tue Nov 11 16:22:09 2008 -0500 ipw2x00: relocate ipw2100/ipw2200 to common directory Signed-off-by: John W. Linville commit 2ba4b32ecf748d5f45f298fc9677fa46d1dd9aff Author: John W. Linville Date: Tue Nov 11 16:00:06 2008 -0500 lib80211: consolidate crypt init routines Signed-off-by: John W. Linville commit 274bfb8dc5ffa16cb073801bebe76ab7f4e2e73d Author: John W. Linville Date: Wed Oct 29 11:35:05 2008 -0400 lib80211: absorb crypto bits from net/ieee80211 These bits are shared already between ipw2x00 and hostap, and could probably be shared both more cleanly and with other drivers. This commit simply relocates the code to lib80211 and adjusts the drivers appropriately. Signed-off-by: John W. Linville commit dfe1bafdbac1c7b48b636fb7ace799e78170e0d6 Author: Pavel Roskin Date: Mon Nov 10 09:25:53 2008 -0500 orinoco: fix last beacon reporting on 64-bit systems orinoco_translate_scan() and orinoco_translate_ext_scan() wrongly truncate last_scanned argument from unsigned long to unsigned int. Signed-off-by: Pavel Roskin Signed-off-by: John W. Linville commit 1d047def6d19106a91f7756f970ac8429033a4d8 Author: Rami Rosen Date: Mon Nov 10 09:01:09 2008 +0200 mac80211: remove unnecessary include. This patch removes unnecessary #include from /net/mac80211/mlme.c. Signed-off-by: Rami Rosen Signed-off-by: John W. Linville commit 8ff48a8bbe4a1ba29dea2836dfce74660f97c1be Author: Ivo van Doorn Date: Sun Nov 9 23:40:46 2008 +0100 rt2x00: Fix race condition when using inderect registers Indirect registers require multiple calls to the CSR register in order to access the indirect registers. This must be protected under a lock to prevent race conditions which could cause invalid data to be returned when reading from the indirect register or silent failures when writing data to the indirect register. USB drivers where already protected under a mutex, so rename the mutex and make PCI drivers use the mutex as well. This now means that BBP and RF registers are no longer accessible in interrupt context. That is not a bad situation since the slow behavior of accessing those registers means we don't _want_ to access them in interrupt context either. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit bad13639a30e1557fbe9d440adc1906673c9de4e Author: Ivo van Doorn Date: Sun Nov 9 20:47:00 2008 +0100 rt2x00: Optimize get_duration / get_duration_res We can optimize get_duration and get_duration_res by making them a macro. They are really simple calculation handlers so this doesn't matter much. Often (especially in rt2400pci and rt2500pci, the arguments are hardcoded, and the result value is passed into other hardcoded values. By making the functions a macro GCC can optimize the entire thing much better. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 87c1687d1a7bf0d4975d613cb699ba95b329359e Author: Julia Lawall Date: Sun Nov 9 17:56:10 2008 +0100 drivers/net/wireless/ath9k/rc.c: use ARRAY_SIZE ARRAY_SIZE is more concise to use when the size of an array is divided by the size of its type or the size of its first element. The semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @i@ @@ #include @depends on i using "paren.iso"@ type T; T[] E; @@ - (sizeof(E)/sizeof(E[...])) + ARRAY_SIZE(E) // Signed-off-by: Julia Lawall Signed-off-by: John W. Linville commit f9f88fed3433139b58962011c81597b44fd48458 Author: Jouni Malinen Date: Sun Nov 9 18:38:51 2008 +0200 mac80211_hwsim: Update documentation (AP mode enabled) AP mode is now enabled in mac80211, so there is no need to point users to an additional patch to enable the mode. In addition, add a pointer to more hwsim test cases in hostap.git. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 9902b1843ff460d08a40d6c99ad8f5362296c3d4 Author: Tomas Winkler Date: Sat Nov 8 23:50:55 2008 +0200 mac80211: rc80211_pid eliminate sparse warnings This patch eliminates sparse warnings in pid rate scale algorithm 'debugfs: allow access to signed values' patch hit the dead end year ago w/o much echo so I guess there is no real need to address this properly. Signed-off-by: Tomas Winkler Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 798b7adb4ed3533ab1282f51d16892034cfd8aae Author: Ivo van Doorn Date: Sat Nov 8 15:25:33 2008 +0100 rt2x00: Cleanup TX/RX entry handling Merge the callback functions init_txentry() and init_rxentry(). This makes life in rt2x00lib a lot simpler and we can cleanup several functions. rt2x00pci contained "fake" FIELD definitions for descriptor words. This is not flexible since it assumes the driver will always have the same field to indicate if a driver is available or not. This should be dependent on the driver, and we should add a callback function for this. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 0ed94eaaed618634f68197161203aac9f849471e Author: Randy Dunlap Date: Fri Nov 7 19:50:42 2008 -0800 mac80211: remove more excess kernel-doc Delete kernel-doc struct descriptions for fields that don't exist: Warning(include/net/mac80211.h:1263): Excess struct/union/enum/typedef member 'conf_ht' description in 'ieee80211_ops' Warning(net/mac80211/sta_info.h:309): Excess struct/union/enum/typedef member 'addr' description in 'sta_info' Warning(net/mac80211/sta_info.h:309): Excess struct/union/enum/typedef member 'aid' description in 'sta_info' Signed-off-by: Randy Dunlap cc: Johannes Berg cc: John W. Linville Signed-off-by: John W. Linville commit e4e58cf8cc646d93de852f32f972448a95387c60 Author: Zhu, Yi Date: Fri Nov 7 09:58:46 2008 -0800 iwlwifi: use Rx single frame mode (one Rx frame per RB) The RCSR default value for single frame mode is off (a RB contains more than one frames). But the driver assumes single frame mode apparently. This patch enables single frame mode for the hardware. It also adds a BUG_ON to make sure the allocated skb satisfies the hardware alignment requirement and removes a useless check. Signed-off-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 01ef932341de1fb69848ee0b9206e11baac9c340 Author: Winkler, Tomas Date: Fri Nov 7 09:58:45 2008 -0800 iwlwifi: get some more information about command failure This patch adds additional info about wrong command queue bug Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit c24f0817458464fc9c54489dba19cd94787e5eaf Author: Kolekar, Abhijeet Date: Fri Nov 7 09:58:44 2008 -0800 iwl3945 : Simplify iwl3945_send_beacon_cmd Moved rate_msk calculation to iwl3945_rate_get_lowest_plcp. Signed-off-by: Abhijeet Kolekar Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit cb299bae8929705bf025fdbd6ce0ffcc62f5b3d0 Author: Winkler, Tomas Date: Fri Nov 7 09:58:43 2008 -0800 iwlwifi: move iwl_print_hex_dump to iwl-debug.h This patch moves iwl_print_hex_dump to iwl-debug.h where it belongs Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit e720ce9d15050d06e5162d5f70b133caccd64258 Author: Kolekar, Abhijeet Date: Fri Nov 7 09:58:42 2008 -0800 iwl3945 : Fix Sparse Warnings Patch fixes sparse warnings. No need to convert u8 variable to 32. Signed-off-by: Abhijeet Kolekar Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 21c339bf51ad46c6f8143df907b4bcce99dbe0b8 Author: Tomas Winkler Date: Fri Nov 7 09:58:41 2008 -0800 iwlwifi: move spectrum measurement code to iwl-spectrum.c file This patch moves spectrum measurement code into iwl-sepctrum.c file. Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 4ddbb7d060061e584cb2137f4c7e41e502a560b4 Author: Tomas Winkler Date: Fri Nov 7 09:58:40 2008 -0800 iwlwifi: revamp tx scheduler byte count tables handling This moves byte count tables to tx domain removing completely ambivalent shared data. Changes handling of allocation byte count tables and keep warm consistent memory Moves general tx scheduler definitions from iwl-4956-hw.h to iwl-fh.h Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 8d86422a83d79e3d3241cf0f269fca0c2640bcee Author: Winkler, Tomas Date: Fri Nov 7 09:58:39 2008 -0800 iwlwifi: move rx queue read pointer into rxq This patch moves rx status/read registers into iwl_rx_queue structures. This solution is more memory hungry but is more structured and provides needed RX/TX separation Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 5c5aa3f13a50881b8f6e529e321bbefb5faec37b Author: Halperin, Daniel C Date: Fri Nov 7 09:58:38 2008 -0800 iwlwifi: update iwl-commands.h for 3 stream support This patch updates comments and constants to support 1, 2, or 3 spatial streams in rate_n_flags . Signed-off-by: Daniel Halperin Signed-off-by: Tomas Winkler Signed-off-by: John W. Linville commit a71c8f62d46e4496011182658dc058303960c068 Author: Winkler, Tomas Date: Fri Nov 7 09:58:37 2008 -0800 iwlwifi: don't fail power set when calibration is not done yet This patch doesn't fail power save setting when calibration is not done yet. The new power index is registered and will be evaluated again anyway upon calibration completion. This patch also eliminates WARN_ON in mac80211 hw_config during initialization Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 193357748979985498f21abc94c7a0a3ed5a3b8e Author: Winkler, Tomas Date: Fri Nov 7 09:58:36 2008 -0800 iwlwifi: trivial fix in includes This patch removes one FIXME: in rearranging includes Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 9bdf5ecabf1cd2fb012f87d9742590fdd8290da0 Author: Mohamed Abbas Date: Fri Nov 7 09:58:35 2008 -0800 iwl3945: fix resume for ADHOC network ieee80211_notify_mac only reconnect BSS networks. Since IBSS does not need any auth or assoc steps we can just resume to the same condition before suspend. This patch will reestablish the ad-hoc network once it comes back from resume. http://www.intellinuxwireless.org/bugzilla/show_bug.cgi?id=1774 Signed-off-by: Mohamed Abbas Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit ada1751346b5539f393c2e9c9dc04d9e7078e53a Author: Mohamed Abbas Date: Fri Nov 7 09:58:34 2008 -0800 iwlagn: fix resume for ADHOC network ieee80211_notify_mac only reconnect BSS networks. Since IBSS does not need any auth or assoc steps we can just resume to the same condition before suspend. This patch will reestablish the ad-hoc network once it comes back from resume. http://www.intellinuxwireless.org/bugzilla/show_bug.cgi?id=1774 Signed-off-by: Mohamed Abbas Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 1e87d68083cd073c84edb3a71fa4365d7fc092bd Author: Johannes Berg Date: Thu Nov 6 17:20:24 2008 +0100 b43: remove rate index warning I frequently run into this warning, and added some debugging to see why, and got this: b43 bad rx: 00000000: 2f d2 e2 63 cf a7 14 04 28 18 c8 5f 88 4a a2 00 bogus junk | plcp | fctl| dur b43 bad rx: 00000010: 00 11 24 91 07 4d 00 06 25 ff 8f 78 00 06 25 ff my MAC address | BSSID | AP MAC b43 bad rx: 00000020: 8f 76 20 74 00 00 42 07 00 20 00 00 00 00 aa aa | seq | QoS | CCMP IV | data ... As you can see, there are 6 bogus bytes (sometimes only five) and then the frame. I don't know why, and I don't see how to recover, so let's just drop these frames. Signed-off-by: Johannes Berg Signed-off-by: Michael Buesch Signed-off-by: John W. Linville commit 7f3704e992ee4044f8e0068e060458377004473a Author: Johannes Berg Date: Thu Nov 6 15:18:11 2008 +0100 b43legacy: implement short slot and basic rate handling This implements proper short slot handling and adds code to program the hardware for the correct response rates derived from the basic rate set for the current BSS. (port from b43) Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 3e4127fa6db34765685599fb8d1177e51850a63c Author: Alexey Fisher Date: Thu Nov 6 09:51:16 2008 +0100 ipw2200: make association only if SSID is known. 'iwconfig eth1 channel 6' would trigger association to _something_, which is wrong. Changing the channel should (and does) trigger reassociation, but only if there is an SSID to associate with. Signed-off-by: Alexey Fisher Acked-by: Zhu Yi Signed-off-by: John W. Linville commit ffb826767bffda61426d964a8fc24a216a14b0bd Author: Luis R. Rodriguez Date: Mon Nov 3 14:43:01 2008 -0800 ath9k: enable RXing of beacons on STA/IBSS This enables beacons to come through on STA/IBSS. It should fix sporadic connection issues. Right now mac80211 expect beacons so give it beacons. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit 296bf2aefdf7b4b1bf093a7b42a86ee21b46d07f Author: Luis R. Rodriguez Date: Mon Nov 3 14:43:00 2008 -0800 ath5k: allow APs to receive beacons Allow APs to receive beacons to detect when it needs to use protection to update the NAV correctly on 11b stations. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit 6a53a8a99cb044e1873648ba184440db6d9c65b8 Author: Nick Kossifidis Date: Tue Nov 4 00:25:54 2008 +0200 ath5k: Fix IMR init *On a previous patch i splitted AR5K_INT_TX to multiple different TX interrupt flags for better handling but i forgot to unmask the new TXDESC and TXEOL interrupts on ath5k_init and only left TXOK. However for each queue we enable TXDESC and TXEOL interrupts, not TXOK so we don't handle TX interrupts at all (because these interrupts remain masked on PISR) and under load it results packet loss. Fix the problem by unmasking TXDESC and TXEOL on ath5k_init. Signed-Off-by: Nick Kossifidis Signed-off-by: John W. Linville commit 392dff836f40370033bbe3b39e3b9bf4148d1435 Author: Benoit PAPILLAULT Date: Thu Nov 6 22:26:49 2008 +0100 ath9k : Display MAC/BB and RF version at startup (v2) This patch decodes the MAC/BB version (for instance: AR5416) and the RF part version (for instance: AR5133). It has been tested on AR5416/AR5133 which is a 2.4/5GHz 11n device. It also makes the differences between AR5416 (PCI) and AR5418 (PCI Express). Both are named AR5416 in the register definitions. Signed-off-by: Benoit Papillault Signed-off-by: John W. Linville commit 4821277f36e008b531728e359fbbedb229117f4b Author: Felix Fietkau Date: Mon Nov 3 21:05:01 2008 +0100 mac80211: fix BUILD_BUG_ON() caused by misalignment on arm On ARM alignment is done slightly different from other architectures. struct ieee80211_tx_rate is aligned to word size, even though it only has 3 single-byte members, which triggers the BUILD_BUG_ON in ieee80211_tx_info_clear_status This patch marks the struct ieee80211_tx_rate as packed, so that ARM behaves like the other architectures. Signed-off-by: Felix Fietkau Signed-off-by: John W. Linville commit 8b0162a3dc5c30e862b7a73da29e32de3170f5e4 Author: Felix Fietkau Date: Mon Nov 3 11:27:38 2008 +0100 ath5k: ignore the return value of ath5k_hw_noise_floor_calibration Noise floor calibration occasionally fails on Atheros hardware. This is not fatal and can happen if there's simply too much noise on the air. Ignoring the calibration error is the right thing to do here, because when the error is ignored, the hardware will still work, whereas if the error causes the driver to bail out of a bigger configuration function and does not configure the tx queues or the IMR (as is the case in reset.c), the hw no longer works properly until the next reset. Signed-off-by: Felix Fietkau Signed-off-by: John W. Linville commit 6d64360ac56cda95243f15738a06f2a123c663e5 Author: Ivo van Doorn Date: Sun Nov 2 00:38:10 2008 +0100 rt2x00: Fix BUG_ON() with antenna handling With the new configuration handling, and more specifically splitting the configuration of the antenna from the normal configuration steps allowed a BUG_ON() to be triggered in the driver because the SW_DIVERSITY was send to the driver. This fixes that by catching the value early in rt2x00config.c and replacing it with a sensible value. This also fixes a problem where the antenna is not being initialized at all when the radio is enabled. Since it no longer is part of the mac80211 configuration the only place where rt2x00 configured it was the SW diversity handler. Obviously this is broken for all non-diversity hardware and breaks SW diversity due to a broken initialization. When the radio is enabled the antenna will be configured once as soon as the config() callback function is called. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 8058409c4fb8e38632207d572ed29943d2585520 Author: Ivo van Doorn Date: Sun Nov 2 00:37:25 2008 +0100 rt2x00: Block set_key() during suspend/shutdown mac80211 will call set_key() when the device is shutting down. When the device is unplugged the keys will be lost automatically due to the power loss. When the device is not plugged but the module is only unloaded the keys can remain in the device hardware, when the module is loaded the keys will be cleaned up during initialization. This should prevent the problem reported by Johannes Berg, where unplugging the device while suspended resulted in a NULL pointer error during set_key() which was caused because of the CSR base address being freed. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 9a95dba32735534bda59def40c747bf606fedf05 Author: Ivo van Doorn Date: Sun Nov 2 00:37:09 2008 +0100 rt2x00: Fix LED state handling For every global LED state change (register/unregister, suspend/resume) we should force the LEDS to turn off. This makes sure that the LEDS will always be in a sane state after the state switch. Note that when unregister is called but the LED class wasn't resumed yet, we shouldn't change the LED state since we might not have access to the device (device was unplugged while suspended). Also remove the checks in the activity, assoc and radio LEDS which blocked calls to brightness_set() when the state hasn't changed. Some of those LEDS could be enabled by themselves when something happens in the hardware (e.g. firmware is loaded). We already did called rt2x00leds to switch the LED off, but those calls were blocked. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 3d8606a680529d41ad8985f36ecf83a7b393ecaf Author: Ivo van Doorn Date: Sun Nov 2 00:36:40 2008 +0100 rt2x00: Remove RATE_BASIC flag mac80211 is in charge of determining the basic rates, so we are not using the RATE_BASIC flag anymore. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 1c740ed2210a0d124674a477ea538468aba47810 Author: Larry Finger Date: Fri Oct 31 17:19:31 2008 -0700 Move all rtl818x files to a common directory. This change improves the maintainability of these drivers. No functionality is changed. Signed-off-by: Larry Finger Signed-off-by: John W. Linville commit 55b3961953494c340b3625486f484af8ded31dd7 Author: Andrey Yurovsky Date: Fri Oct 31 23:23:35 2008 -0700 mac80211_hwsim: enable Mesh Point operation Initial mesh support: add Mesh Point to supported interfaces mask and allow hwsim to send beacons in mesh mode. Signed-off-by: Andrey Yurovsky Signed-off-by: John W. Linville commit a3c9aa512945aa5552d03c7d6d6c3b826a3f9e28 Author: Andrey Yurovsky Date: Fri Oct 31 14:50:12 2008 -0700 mac80211: disable BSSID filtering for mesh interfaces Mesh interfaces are currently opened with the FIF_ALLMULTI rx filter flag set, however there is no BSSID in mesh so BSSID filtering should be disabled by setting the FIF_OTHER_BSS flag as well. Also explicitly call ieee80211_configure_filter for mesh. Signed-off-by: Andrey Yurovsky Signed-off-by: Javier Cardona Acked-by: Johannes Berg Signed-off-by: John W. Linville commit b7b05fe7f92e21e933caa529fd8d78bbbbfbd293 Author: Kay Sievers Date: Thu Oct 30 15:51:57 2008 +0100 ssb: struct device - replace bus_id with dev_name(), dev_set_name() This patch is part of a larger patch series which will remove the "char bus_id[20]" name string from struct device. The device name is managed in the kobject anyway, and without any size limitation, and just needlessly copied into "struct device". To set and read the device name dev_name(dev) and dev_set_name(dev) must be used. If your code uses static kobjects, which it shouldn't do, "const char *init_name" can be used to statically provide the name the registered device should have. At registration time, the init_name field is cleared, to enforce the use of dev_name(dev) to access the device name at a later time. We need to get rid of all occurrences of bus_id in the entire tree to be able to enable the new interface. Please apply this patch, and possibly convert any remaining remaining occurrences of bus_id. We want to submit a patch to -next, which will remove bus_id from "struct device", to find the remaining pieces to convert, and finally switch over to the new api, which will remove the 20 bytes array and does no longer have a size limitation. CC: Michael Buesch Acked-by: Greg Kroah-Hartman Signed-Off-By: Kay Sievers Signed-off-by: John W. Linville commit 582c1b538fb47a2d6a41dbdadb031086c49446c1 Author: Anna Neal Date: Mon Oct 20 16:46:56 2008 -0700 libertas: Fine grained configuration of wake-on-lan. Based on a patch from Shailendra Govardhan . This patch allows implementation of more specific wake-on-lan rules than those of ethtool. Please note that only firmware 5.110.22.p20 and above supports this feature. This patch only implements the driver/firmware interface, not the userspace/driver interface. Signed-off-by: Anna Neal Signed-off-by: Javier Cardona Signed-off-by: John W. Linville commit 50da3ead624d46f1b9f1007a184691bbb841eba7 Author: John W. Linville Date: Mon Nov 10 13:59:18 2008 -0500 ipw2100, ipw2200: select LIB80211 Otherwise some configs can result in missing print_ssid... Signed-off-by: John W. Linville commit 3d29b0c33d431ecc69ec778f8c236d382f59a85f Author: John W. Linville Date: Fri Oct 31 14:13:12 2008 -0400 netdevice zd1201: Convert directly reference of netdev->priv to netdev_priv() We have some reasons to kill netdev->priv: 1. netdev->priv is equal to netdev_priv(). 2. netdev_priv() wraps the calculation of netdev->priv's offset, obviously netdev_priv() is more flexible than netdev->priv. But we cann't kill netdev->priv, because so many drivers reference to it directly. OK, becasue Dave S. Miller said, "every direct netdev->priv usage is a bug", and I want to kill netdev->priv later, I decided to convert all the direct reference of netdev->priv first. (Original patch posted by Wang Chen w/ above changelog but using dev->ml_priv. That doesn't seem appropriate to me for this driver, so I've revamped it to use netdev_priv() instead. -- JWL) Reviewed-by: Wang Chen Signed-off-by: John W. Linville commit 4f904735c809e44c11f57cd4f82446aac1243e0e Author: Mark Brown Date: Fri Nov 21 15:08:23 2008 +0000 ALSA: ASoC: Fix typo in snd_soc_card update documentation Signed-off-by: Mark Brown Signed-off-by: Takashi Iwai commit 42e81c991a71909929f8d0cdcdf8ced68799388a Author: Hannes Eder Date: Fri Nov 21 16:03:24 2008 +0100 ALSA: hda - fix sparse warning Fix the following sparse warning: sound/pci/hda/patch_nvhdmi.c:161:25: warning: symbol 'snd_hda_preset_nvhdmi' was not declared. Should it be static? Signed-off-by: Hannes Eder Signed-off-by: Takashi Iwai commit 39639faba98eafeb327a30bc10b7d921c398a59a Author: Mark Brown Date: Fri Nov 21 14:28:49 2008 +0000 ASoC: Improve error reporting for AC97 reset failures Print something a bit more verbose to help make errors a little more obvious. Signed-off-by: Mark Brown commit 0e734ad5d16ad1d87a428a30d117bb3541a8e24d Author: Mark Brown Date: Fri Nov 21 14:05:48 2008 +0000 ASoC: Staticise pxa2xx_pcm_ops It's not exported. Signed-off-by: Mark Brown commit 0c758bdd678860fff3c4b600ec6f134e43526850 Author: Jarkko Nikula Date: Fri Nov 21 14:31:33 2008 +0200 ASoC: OMAP: Fix preprocessor filled DAI name in McBSP DAI Signed-off-by: Jarkko Nikula Signed-off-by: Mark Brown commit 2dac9217b26fd0a0a1712386ce2ea1411835ffb7 Author: Mark Brown Date: Fri Nov 21 14:01:41 2008 +0000 ASoC: Add Marvell Zylonite machine support Implement support for the Marvell Zylonite PXA3xx reference platform, supporting standard AC97 stereo and AUX interfaces together with the auxiliary I2S interface of the WM9713. The board has two options for the MCLK of the WM9713: either the standard AC97 system clock can be used or the 13MHz CLK_POUT output of the PXA3xx can be used, selected via SW15 on the board. Currently only the AC97 system clock is supported by this driver. Signed-off-by: Mark Brown commit 14ae22ba2b8bb3d53fb795f9b8074aa39ef7b6cd Author: Ingo Molnar Date: Fri Nov 21 15:20:47 2008 +0100 x86: entry_64.S: rename Impact: cleanup Rename: CFI_PUSHQ => pushq_cfi CFI_POPQ => popq_cfi CFI_MOVQ => movq_cfi To make it blend better into regular assembly code. Signed-off-by: Ingo Molnar commit e8a0e27662186f8856a0a6242e7a8386c9a64a53 Author: Ingo Molnar Date: Fri Nov 21 15:11:32 2008 +0100 x86: clean up after: move entry_64.S register saving out of the macros, fix Impact: build fix The break builds with older binutils (2.16.1): arch/x86/kernel/entry_64.S: Assembler messages: arch/x86/kernel/entry_64.S:282: Error: too many positional arguments arch/x86/kernel/entry_64.S:283: Error: too many positional arguments arch/x86/kernel/entry_64.S:284: Error: too many positional arguments arch/x86/kernel/entry_64.S:285: Error: too many positional arguments arch/x86/kernel/entry_64.S:286: Error: too many positional arguments arch/x86/kernel/entry_64.S:287: Error: too many positional arguments arch/x86/kernel/entry_64.S:288: Error: too many positional arguments arch/x86/kernel/entry_64.S:289: Error: too many positional arguments arch/x86/kernel/entry_64.S:290: Error: too many positional arguments Took some time to figure out the detail that GAS chokes on: it's negative offsets. Rearrange the calculations to make sure we never go negative. Signed-off-by: Ingo Molnar commit dee89c4d94433520e4e3977ae203d4cfbfe385fb Author: Mark Brown Date: Tue Nov 18 22:11:38 2008 +0000 ASoC: Merge snd_soc_ops into snd_soc_dai_ops Liam Girdwood's ASoC v2 work avoids having two different ops structures for DAIs by merging the members of struct snd_soc_ops into struct snd_soc_dai_ops, allowing per DAI configuration for everything. Backport this change. This paves the way for future work allowing any combination of DAIs to be connected rather than having fixed purpose CODEC and CPU DAIs and only allowing CODEC<->CPU interconnections. Signed-off-by: Mark Brown commit a47cbe7263236691ee0bbc392f7fd4ec0da1159f Author: Mark Brown Date: Wed Jul 23 14:03:07 2008 +0100 ASoC: Move DAI structure definitions into new soc-dai.h ASoC v2 factors most of the contents of soc.h out into separate headers, including soc-dai.h for the DAI. Factor the existing DAI API out into this file in order to prepare for backporting of the ASoC v2 DAI API. Also backport some of Liam's improvements to the documentation. Signed-off-by: Mark Brown commit 5de27b6cc0a8a1d27158ec9047cb5981745edfc0 Author: Karl Beldan Date: Thu Nov 20 15:39:31 2008 +0100 ASoC: ssm2602: Update supported stream formats Signed-off-by: Karl Beldan Signed-off-by: Mark Brown commit faab5a32f4d0784d6bde57963267be0453be3546 Author: Karl Beldan Date: Thu Nov 20 15:39:27 2008 +0100 ASoC: ssm2602: Fix priv substreams refs Clean up our record of the active streams in shutdown(), fixing subsequent failures of snd_pcm_hw_constraints_complete after closure of a stream. NOTE: - The ssm2602 allows pairs of non-matching PB/REC rates. - This is a fix for less evil: The logic is flawed (e.g. the slave might startup before the master's rate and sample_bits are set). Signed-off-by: Karl Beldan Signed-off-by: Mark Brown commit bd903bde7e0ad017cb87a228f451e05011e6d302 Author: Mark Brown Date: Wed Nov 19 19:16:05 2008 +0000 ASoC: Add abbreviation to maintainers for searchability Signed-off-by: Mark Brown commit 875065491fba8eb13219f16c36e79a6fb4e15c68 Author: Mark Brown Date: Tue Nov 18 20:50:34 2008 +0000 ASoC: Rename snd_soc_card to snd_soc_machine One of the issues with the ASoC v1 API which has been addressed in the ASoC v2 work that Liam Girdwood has done is that the ALSA card provided by ASoC is distributed around the ASoC structures. For example, machine wide data such as the struct snd_card are maintained as part of the CODEC data structure, preventing the use of multiple codecs. This has been addressed by refactoring the data structures so that all the data for the ALSA card is contained in a single structure snd_soc_card which replaces the existing snd_soc_machine and snd_soc_device. Begin the process of backporting this by renaming struct snd_soc_machine to struct snd_soc_card, better reflecting its function and bringing it closer to standard ALSA terminology. Signed-off-by: Mark Brown commit 98aa9c80f1fee01e98dfdc484ab7316af45f8f17 Author: Jarek Poplawski Date: Fri Nov 21 04:37:27 2008 -0800 pkt_sched: sch_drr: Fix qlen in drr_drop() Signed-off-by: Jarek Poplawski Acked-by: Patrick McHardy Signed-off-by: David S. Miller commit 9d2f4720971c00852a3fc8278a76f1a5e9add5c7 Author: Wang Chen Date: Fri Nov 21 01:56:07 2008 -0800 ixgbe: convert directly reference of netdev->priv Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 11b444d5627d87beb55029601cf8d2c9fa9324fd Author: Takashi Iwai Date: Fri Nov 21 09:32:40 2008 +0100 ALSA: hda - Move HD-audio Kconfig items to sound/pci/hda/Kconfig Signed-off-by: Takashi Iwai commit e7ee058cac89ec2f2c0c9ab0ec92a3776c182642 Author: Takashi Iwai Date: Fri Nov 21 09:26:20 2008 +0100 ALSA: hda - Make CONFIG_SND_HDA_RECONFIG for codec reconfiguration Make the codec re-configuration feature selectable via Kconfig, CONFIG_SND_HDA_RECONFIG. Also mark it as experimental (as it really is). Signed-off-by: Takashi Iwai commit f208dba97f2f3ff2fbcbe771195061e2a0dac870 Author: Takashi Iwai Date: Fri Nov 21 09:11:50 2008 +0100 ALSA: hda - Release ELD proc file Release ELD proc file when reconfigured so that no leak occurs. Signed-off-by: Takashi Iwai commit b94d3539de59ec6481e38f83c455324fd3aeabc1 Author: Takashi Iwai Date: Fri Nov 21 09:08:06 2008 +0100 ALSA: hda - Fix double free of jack instances The jack instances created in patch_sigmatel.c may be double-freed. The device management code checks the invalid element, and thus there is no real breakage, but it spews annoying warning messages. But, we can't simply remove the release calls of these jack instances because they have to be freed when the codec is re-configured. Now, a new flag, bus->shutdown is introduced to indicate that the bus is really being unloaded, i.e. the objects managed by the device manager will be automatically deleted. We release these objects only when this flag isn't set. Signed-off-by: Takashi Iwai commit 957ad0166e9f76a8561dafa5e14ef5bd3f5e9a3b Author: Vegard Nossum Date: Fri Nov 21 01:30:36 2008 +0100 sched: update comment for move_task_off_dead_cpu Impact: cleanup This commit: commit f7b4cddcc5aca03e80e357360c9424dfba5056c2 Author: Oleg Nesterov Date: Tue Oct 16 23:30:56 2007 -0700 do CPU_DEAD migrating under read_lock(tasklist) instead of write_lock_irq(ta Currently move_task_off_dead_cpu() is called under write_lock_irq(tasklist). This means it can't use task_lock() which is needed to improve migrating to take task's ->cpuset into account. Change the code to call move_task_off_dead_cpu() with irqs enabled, and change migrate_live_tasks() to use read_lock(tasklist). ...forgot to update the comment in front of move_task_off_dead_cpu. Reference: http://lkml.org/lkml/2008/6/23/135 Signed-off-by: Vegard Nossum Signed-off-by: Ingo Molnar commit fc02e90c34bacd5d7bc77b832c65a8f06e1bd60e Merge: ec4e0e2fe018992d980910db901637c814575914 13d428afc007fcfcd6deeb215618f54cf9c0cae6 Author: Ingo Molnar Date: Fri Nov 21 08:57:04 2008 +0100 Merge commit 'v2.6.28-rc6' into sched/core commit 0623536ca3e8fd7cb8b7468b0fd4d61d80f0b6ea Author: Takashi Iwai Date: Fri Nov 21 08:54:54 2008 +0100 ALSA: hda - Add missing static for snd_hda_eld_proc_new() inline funciton Signed-off-by: Takashi Iwai commit 3ddd972d970fdabbe6515aa2f95e0ef2c8df903d Author: Hiroshi Shimamoto Date: Thu Nov 20 18:32:17 2008 -0800 x86: signal: rename COPY_SEG_STRICT to COPY_SEG_CPL3 Impact: cleanup Rename macro COPY_SEG_STRICT to COPY_SEG_CPL3, as suggested by hpa. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit acdda7915eb5dae20b6e43b8b772b712b1ed32c3 Author: Wu Fengguang Date: Fri Nov 21 11:41:50 2008 +0800 ALSA: hda - support writing to the ELD proc file Allow users to fix quicks of ELD ROMs by writing new values to the ELD proc interface. The format is one or more lines of "name hex_value". Users can add/remove/modify up to 32 SAD(Short Audio Descriptor) entries. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit db742104704cfb047732aa66451c608382da3aee Author: Wu Fengguang Date: Fri Nov 21 12:34:05 2008 +0800 ALSA: hda: modify monitor name to be consistent with other ELD proc items Rename "monitor name" to "monitor_name" to conform with the keyword style. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 218b5ffc0d3fa852624e67a1bb2528ca29274d6e Author: Wu Fengguang Date: Fri Nov 21 09:42:59 2008 +0800 ALSA: hda - properly print ELD sample bits Fix bugs on printing the ELD sample bits. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 75a287d9a35a825cb758d2f8d8df93d41f9f8e3e Merge: 1725b82a6e2721612a3572d0336f51f1f1c3cf54 3a7abfd2ba26479615b81ac5e90d0122ef7f9fe0 Author: Takashi Iwai Date: Fri Nov 21 08:27:04 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda Conflicts: sound/pci/hda/patch_sigmatel.c commit c4900be053d376dfe4f603d000aa5e4c60745dec Author: Donald Skidmore Date: Thu Nov 20 21:11:42 2008 -0800 ixgbe: add SFP+ driver support This patch adds support for SFP+ PHY in the following device ID's (10DB, 10F1, 10E1). These SFP+ PHY's are accessed via an I2C interface so the patch also includes functions to support this. Another feature of note is that the PHY is pluggable and some rearchitecting was needed to support this. Signed-off-by: Donald Skidmore Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 859ee3c43812051e21816c6d6d4cc04fb7ce9b2e Author: Alexander Duyck Date: Thu Nov 20 21:10:23 2008 -0800 DCB: Add support for DCB BCN Adds an interface to configure the Backward Congestion Notification (BCN) feature. In a BCN capabale network, congestion notifications from congested points out in the network can cause the end station limit the rate of a given traffic flow. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: David S. Miller commit 0eb3aa9bab20217fb42244ccdcb5bf8a002f504c Author: Alexander Duyck Date: Thu Nov 20 21:09:23 2008 -0800 DCB: Add interface to query the state of PFC feature. Adds a netlink interface for Data Center Bridging (DCB) to get and set the enable state of the Priority Flow Control (PFC) feature. Primarily, this is a way to turn off PFC in the driver while DCB remains enabled. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: David S. Miller commit 33dbabc4a7f7bd72313c73a3c199f31f3900336f Author: Alexander Duyck Date: Thu Nov 20 21:08:19 2008 -0800 DCB: Add interface to query # of TCs supported by device Adds interface for Data Center Bridging (DCB) to query (and set if supported) the number of traffic classes currently supported by the device for the two (DCB) features: priority groups (PG) and priority flow control (PFC). Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: David S. Miller commit 46132188bf72e22ef097f16ed5c969ee8cea1e8b Author: Alexander Duyck Date: Thu Nov 20 21:05:08 2008 -0800 DCB: Add interface to query for the DCB capabilities of an device. Adds to the netlink interface for Data Center Bridging (DCB), allowing the DCB capabilities supported by a device to be queried. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: David S. Miller commit 2f90b8657ec942d1880f720e0177ee71df7c8e3c Author: Alexander Duyck Date: Thu Nov 20 20:52:10 2008 -0800 ixgbe: this patch adds support for DCB to the kernel and ixgbe driver This adds support for Data Center Bridging (DCB) features in the ixgbe driver and adds an rtnetlink interface for configuring DCB to the kernel. The DCB feature support included are Priority Grouping (PG) - which allows bandwidth guarantees to be allocated to groups to traffic based on the 802.1q priority, and Priority Based Flow Control (PFC) - which introduces a new MAC control PAUSE frame which works at granularity of the 802.1p priority instead of the link (IEEE 802.3x). Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: David S. Miller commit 9db66bdcc83749affe61c61eb8ff3cf08f42afec Author: Eric Dumazet Date: Thu Nov 20 20:39:09 2008 -0800 net: convert TCP/DCCP ehash rwlocks to spinlocks Now TCP & DCCP use RCU lookups, we can convert ehash rwlocks to spinlocks. /proc/net/tcp and other seq_file 'readers' can safely be converted to 'writers'. This should speedup writers, since spin_lock()/spin_unlock() only use one atomic operation instead of two for write_lock()/write_unlock() Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit b8c26a33c8b6f0a150e9cb38ed80b890be55395c Author: Stephen Hemminger Date: Thu Nov 20 20:34:29 2008 -0800 ipgre: convert to netdevice_ops Convert ipgre tunnel to netdevice ops. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 1326c3d5a4b792a2b15877feb7fb691f8945d203 Author: Stephen Hemminger Date: Thu Nov 20 20:33:56 2008 -0800 ipv6: convert tunnels to net_device_ops Like IPV4, convert the tunnel virtual devices to use net_device_ops. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 23a12b14715e2dcd34dc8002927263ad3437344c Author: Stephen Hemminger Date: Thu Nov 20 20:33:21 2008 -0800 ipip: convert to net_device_ops Convert to network device ops. Needed to change to directly call the init routine since two sides share same ops. In the process found by inspection a device ref count leak if register_netdevice failed. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 748ff68fad9600593c6abe47856037602bd5d133 Author: Stephen Hemminger Date: Thu Nov 20 20:32:15 2008 -0800 hippi: convert driver to net_device_ops Convert the HIPPI infrastructure for use with net_device_ops. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit fd8f4997e35f2c9a8bfc4d797ec09a6ae7858e04 Author: Stephen Hemminger Date: Thu Nov 20 20:31:40 2008 -0800 defxx: convert driver to net_device_ops Convert this driver to net_device_ops. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 145186a39570244aead77dc2efc559e5cac90548 Author: Stephen Hemminger Date: Thu Nov 20 20:29:48 2008 -0800 fddi: convert to new network device ops Similar to ethernet. Convert infrastructure and the one lone FDDI driver (for the one lone user of that hardware??). Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 007c3838d9fdcc8fdaea87e4879ec3759f016ed5 Author: Stephen Hemminger Date: Thu Nov 20 20:28:35 2008 -0800 ipmr: convert ipmr virtual interface to net_device_ops Convert to new network device ops interface. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit aa18e9e88c863a58f6ea63eeee0e740be071fdcf Author: Stephen Hemminger Date: Thu Nov 20 20:28:00 2008 -0800 dummy: convert to net_device_ops Convert to new network device ops interface. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 008298231abbeb91bc7be9e8b078607b816d1a4a Author: Stephen Hemminger Date: Thu Nov 20 20:14:53 2008 -0800 netdev: add more functions to netdevice ops This patch moves neigh_setup and hard_start_xmit into the network device ops structure. For bisection, fix all the previously converted drivers as well. Bonding driver took the biggest hit on this. Added a prefetch of the hard_start_xmit in the fast path to try and reduce any impact this would have. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 1725b82a6e2721612a3572d0336f51f1f1c3cf54 Author: Takashi Iwai Date: Fri Nov 21 02:25:48 2008 +0100 ALSA: hda - make laptop-eapd model back for AD1986A The changes specific for Samsung laptops seem unapplicable to other hardware models like ASUS. The mic inputs are lost on such hardware by the change 5d5d5f43f1b835c375de9bd270cce030d16e2871. This patch adds back the old laptop-eapd model, and create a new model "samsung" for the new one specific to Samsung laptops with automatic mic selection feature. Reference: kernel bugzilla #12070 http://bugzilla.kernel.org/show_bug.cgi?id=12070 Signed-off-by: Takashi Iwai commit 6ab33d51713d6d60c7677c0d020910a8cb37e513 Merge: 7be6065b39c3f1cfa796667eac1a2170465acc91 13d428afc007fcfcd6deeb215618f54cf9c0cae6 Author: David S. Miller Date: Thu Nov 20 16:44:00 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/ixgbe/ixgbe_main.c include/net/mac80211.h net/phonet/af_phonet.c commit 7cc45e64323c8a1042f56e6a8d1dc982f98d52a8 Author: Steven Rostedt Date: Sat Nov 15 02:39:05 2008 -0500 powerpc/ppc32: ftrace, dynamic ftrace to handle modules Impact: add ability to trace modules on 32 bit PowerPC This patch performs the necessary trampoline calls to handle modules with dynamic ftrace on 32 bit PowerPC. Signed-off-by: Steven Rostedt commit f48cb8b48b0b10025ca9c451b9b32cac3fcd33ba Author: Steven Rostedt Date: Fri Nov 14 20:47:03 2008 -0800 powerpc/ppc64: ftrace, handle module trampolines for dyn ftrace Impact: Allow 64 bit PowerPC to trace modules with dynamic ftrace This adds code to handle the PPC64 module trampolines, and allows for PPC64 to use dynamic ftrace. Thanks to Paul Mackerras for these updates: - fix the mod and rec->arch.mod NULL checks. - fix to is_bl_op compare. Thanks to Milton Miller for: - finding the nasty race with using two nops, and recommending instead that I use a branch 8 forward. Signed-off-by: Steven Rostedt commit e4486fe316895e87672a563c4f36393218f84ff1 Author: Steven Rostedt Date: Fri Nov 14 16:21:20 2008 -0800 powerpc: ftrace, use probe_kernel API to modify code Impact: use cleaner probe_kernel API over assembly Using probe_kernel_read/write interface is a much cleaner approach than the current assembly version. Signed-off-by: Steven Rostedt commit 8fd6e5a8c81e2e9b912ea33c8425a10729db469b Author: Steven Rostedt Date: Fri Nov 14 16:21:19 2008 -0800 powerpc: ftrace, convert to new dynamic ftrace arch API Impact: update to PowerPC ftrace arch API This patch converts PowerPC to use the new dynamic ftrace arch API. Thanks to Paul Mackennas for pointing out the mistakes of my original test_24bit_addr function. Signed-off-by: Steven Rostedt commit 6d07bb47354174a9b52d3b03f9e38b069a93d341 Author: Steven Rostedt Date: Fri Nov 14 16:21:19 2008 -0800 powerpc: ftrace, do not latency trace idle Impact: fix for irq off latency tracer When idle is called, interrupts are disabled, but the idle function will still wake up on an interrupt. The problem is that the interrupt disabled latency tracer will take this call to idle as a latency. This patch disables the latency tracing when going into idle. Signed-off-by: Steven Rostedt commit dcd072e26055de600cecdc3f7a1e083ecd55c2e4 Author: Alexander van Heukelum Date: Thu Nov 20 14:40:11 2008 +0100 x86: clean up after: move entry_64.S register saving out of the macros This add-on patch to x86: move entry_64.S register saving out of the macros visually cleans up the appearance of the code by introducing some basic helper macro's. It also adds some cfi annotations which were missing. Signed-off-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit 018a7bf1e55000dd792194238c9043918d24d3dd Author: Andy Whitcroft Date: Thu Nov 20 15:59:56 2008 +0100 netfilter: ip{,6}t_policy.h should include xp_policy.h It seems that all of the include/netfilter_{ipv4,ipv6}/{ipt,ip6t}_*.h which share constants include the corresponding include/netfilter/xp_*.h files. Neither ipt_policy.h not ip6t_policy.h do. Make these consistant with the norm. Signed-off-by: Andy Whitcroft Signed-off-by: Patrick McHardy commit 7be6065b39c3f1cfa796667eac1a2170465acc91 Author: Wang Chen Date: Thu Nov 20 04:26:21 2008 -0800 netdevice wanrouter: Convert directly reference of netdev->priv 1. Make device driver to allocate memory for netdev. 2. Convert all directly reference of netdev->priv to netdev_priv(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 826dd0e1e3c83ce0cd8c295cd0f6e72b8b527809 Author: Wang Chen Date: Thu Nov 20 04:25:06 2008 -0800 netdevice ni65: Convert directly reference of netdev->priv This patch is to kill directly reference of netdev->priv too. Because the private data needs special memory: lower 16MB DMA. alloc_etherdev() can not do this work. So we can't use netdev->priv to point to netdev's private data. Use netdev->ml_priv instead. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit c8019bf3aff653cceb64f66489fc299ee5957b57 Author: Wang Chen Date: Thu Nov 20 04:24:17 2008 -0800 netdevice ppp: Convert directly reference of netdev->priv 1. Use netdev_priv(dev) to replace dev->priv. 2. Alloc netdev's private data by alloc_netdev(). Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit f7b29271c35ed38f990ca3419696ca148349c2d3 Author: Steve Glendinning Date: Thu Nov 20 04:19:21 2008 -0800 smsc95xx: add tx checksum offload support LAN9500 supports tx checksum offload, which slightly decreases cpu utilisation. The benefit isn't very large because we still require the skb to be linearized, but it does save a few cycles. This patch adds support for it, and enables it by default. Signed-off-by: Steve Glendinning Signed-off-by: David S. Miller commit 8761169cf15fdc9336abfddbb9c8dda59d974190 Author: Ben Hutchings Date: Thu Nov 20 04:17:42 2008 -0800 sfc: Fix dependency for SFC_MTD Randy Dunlap found that SFC_MTD was selected when sfc was built-in and the MTD core was a module. Don't allow that combination. Signed-off-by: Ben Hutchings Acked-by: Randy Dunlap Signed-off-by: David S. Miller commit 47a1a1d4be2910b13a8e90f75c17e253c39531ff Author: Patrick McHardy Date: Wed Nov 19 08:03:09 2008 +0000 pkt_sched: remove unnecessary xchg() in packet classifiers The use of xchg() hasn't been necessary since 2.2.something when proper locking was added to packet schedulers. In the case of classifiers they mostly weren't even necessary before that since they're mainly used to assign a NULL pointer to the filter root in the ->destroy path; the root is destroyed immediately after that. Signed-off-by: Patrick McHardy Signed-off-by: David S. Miller commit b94c8afcba3ae6584653b98e315446ea83be6ea5 Author: Patrick McHardy Date: Thu Nov 20 04:11:36 2008 -0800 pkt_sched: remove unnecessary xchg() in packet schedulers The use of xchg() hasn't been necessary since 2.2.something when proper locking was added to packet schedulers. Signed-off-by: Patrick McHardy Signed-off-by: David S. Miller commit c19d0369d4c791d90fe0b84d6040a897fe25cc14 Author: Harvey Harrison Date: Thu Nov 20 04:10:51 2008 -0800 isdn: isdn_net.c annotate struct ip_ports and trivial sparse fixes Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 13d2a1d2b032de08d7dcab6a1edcd47802681f96 Author: Patrick McHardy Date: Thu Nov 20 04:10:00 2008 -0800 pkt_sched: add DRR scheduler Add classful DRR scheduler as a more flexible replacement for SFQ. The main difference to the algorithm described in "Efficient Fair Queueing using Deficit Round Robin" is that this implementation doesn't drop packets from the longest queue on overrun because its classful and limits are handled by each individual child qdisc. Signed-off-by: Patrick McHardy Signed-off-by: David S. Miller commit 0c19b0adb8dd33dbd10ff48e41971231c486855c Author: Patrick McHardy Date: Thu Nov 20 04:08:29 2008 -0800 netlink: avoid memset of 0 bytes sparse warning A netlink attribute padding of zero triggers this sparse warning: include/linux/netlink.h:245:8: warning: memset with byte count of 0 Avoid the memset when the size parameter is constant and requires no padding. Signed-off-by: Patrick McHardy Signed-off-by: David S. Miller commit c0103606b7e3db191dcbaf988f28fa26aa711230 Author: Wang Chen Date: Thu Nov 20 04:05:56 2008 -0800 netdevice lance: Convert directly reference of netdev->priv This patch is to kill directly reference of netdev->priv too. Because the private data should be allocated in DMA area, alloc_etherdev() can't satisfy this needs. Use netdev->ml_priv to point to lance_private. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 537715226408b83c36b0688a1fb718f572d4dbe6 Author: Lennert Buytenhek Date: Thu Nov 20 03:59:04 2008 -0800 mv643xx_eth: calculate descriptor pointer only once in rxq_refill() Signed-off-by: Lennert Buytenhek Signed-off-by: David S. Miller commit f61e5547763338b793ed291f3de3130216d00430 Author: Lennert Buytenhek Date: Thu Nov 20 03:58:46 2008 -0800 mv643xx_eth: move receive error handling out of line Signed-off-by: Lennert Buytenhek Signed-off-by: David S. Miller commit 66e63ffbc04706568d8789cbb00eaa8ddbcae648 Author: Lennert Buytenhek Date: Thu Nov 20 03:58:27 2008 -0800 mv643xx_eth: implement ->set_rx_mode() Currently, if multiple unicast addresses are programmed into a mv643xx_eth interface, the core networking will resort to enabling promiscuous mode on the interface, as mv643xx_eth does not implement ->set_rx_mode(). This patch switches mv643xx_eth over from ->set_multicast_list() to ->set_rx_mode(), and implements support for secondary unicast addresses. The hardware can handle multiple unicast addresses as long as their first 11 nibbles are the same (i.e. are of the form xx:xx:xx:xx:xx:xy where the x part is the same for all addresses), so if that is the case, we use that mode. If it's not the case, we enable unicast promiscuous mode in the hardware, which is slightly better than enabling promiscuous mode for multicasts as well, which is what would happen before. While we are at it, change the programming sequence so that we don't clear all filter bits first, so we don't lose all incoming packets while the filter is being reprogrammed. Signed-off-by: Lennert Buytenhek Signed-off-by: David S. Miller commit 66823b928d746df21485deeff6744c77702abf29 Author: Lennert Buytenhek Date: Thu Nov 20 03:58:09 2008 -0800 mv643xx_eth: inline txq_alloc_desc_index() Since txq_alloc_desc_index() is a very simple function, and since descriptor ring index handling for transmit reclaim, receive processing and receive refill is already handled inline as well, inline txq_alloc_desc_index() into its two call sites. Signed-off-by: Lennert Buytenhek Signed-off-by: David S. Miller commit 37a6084f4b4693a408ac2fb229843af9f9f301ce Author: Lennert Buytenhek Date: Thu Nov 20 03:57:36 2008 -0800 mv643xx_eth: introduce per-port register area pointer The mv643xx_eth driver uses the rdl()/wrl() macros to read and write hardware registers. Per-port registers are accessed in the following way: #define PORT_STATUS(p) (0x0444 + ((p) << 10)) [...] static inline u32 rdl(struct mv643xx_eth_private *mp, int offset) { return readl(mp->shared->base + offset); } [...] port_status = rdl(mp, PORT_STATUS(mp->port_num)); By giving the per-port 'struct mv643xx_eth_private' its own 'void __iomem *base' pointer that points to the per-port register area, we can get rid of both the double indirection and the << 10 that is done for every per-port register access -- this patch does that. Signed-off-by: Lennert Buytenhek Signed-off-by: David S. Miller commit 10a9948d13eb51d757684da4354cf67891dc3481 Author: Lennert Buytenhek Date: Thu Nov 20 03:57:16 2008 -0800 mv643xx_eth: checkpatch fixes Fix up a couple of coding style issues caught by checkpatch. Signed-off-by: Lennert Buytenhek Signed-off-by: David S. Miller commit 21d1a161f6b1fff154e3614a6b5a2111fa7a4191 Author: Harvey Harrison Date: Thu Nov 20 01:54:27 2008 -0800 net: ip_sockglue.c add static, annotate ports' endianness Fixes sparse warnings: net/ipv4/ip_sockglue.c:146:15: warning: incorrect type in assignment (different base types) net/ipv4/ip_sockglue.c:146:15: expected restricted __be16 [assigned] [usertype] sin_port net/ipv4/ip_sockglue.c:146:15: got unsigned short [unsigned] [short] [usertype] net/ipv4/ip_sockglue.c:130:6: warning: symbol 'ip_cmsg_recv_dstaddr' was not declared. Should it be static? Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 00b5e50549aa9da770f1161907b4ed68aa4ece3a Author: Brice Goglin Date: Thu Nov 20 01:50:28 2008 -0800 myri10ge: remove hardcoded sram_size Removes the use of a hardcoded sram_size, determine string_spec location from the MCP header instead. Signed-off-by: Brice Goglin Signed-off-by: David S. Miller commit d6279c88f246adf94b7f7a014c5f19d527bc785b Author: Brice Goglin Date: Thu Nov 20 01:50:04 2008 -0800 myri10ge: fix per-slice rx/tx_dropped counters Properly attribute transmit and receive drops by incrementing the per-slice counter. Signed-off-by: Brice Goglin Signed-off-by: David S. Miller commit d99015b1abbad743aa049b439c1e1dede6d0fa49 Author: Alexander van Heukelum Date: Wed Nov 19 01:18:11 2008 +0100 x86: move entry_64.S register saving out of the macros Here is a combined patch that moves "save_args" out-of-line for the interrupt macro and moves "error_entry" mostly out-of-line for the zeroentry and errorentry macros. The save_args function becomes really straightforward and easy to understand, with the possible exception of the stack switch code, which now needs to copy the return address of to the calling function. Normal interrupts arrive with ((~vector)-0x80) on the stack, which gets adjusted in common_interrupt: : (5) addq $0xffffffffffffff80,(%rsp) /* -> ~(vector) */ (4) sub $0x50,%rsp /* space for registers */ (5) callq ffffffff80211290 (5) callq ffffffff80214290 : ... An apic interrupt stub now look like this: : (5) pushq $0xffffffffffffff05 /* ~(vector) */ (4) sub $0x50,%rsp /* space for registers */ (5) callq ffffffff80211290 (5) callq ffffffff80212b8f (5) jmpq ffffffff80211f93 Similarly the exception handler register saving function becomes simpler, without the need of any parameter shuffling. The stub for an exception without errorcode looks like this: : (6) callq *0x1cad12(%rip) # ffffffff803dd448 (2) pushq $0xffffffffffffffff /* no syscall */ (4) sub $0x78,%rsp /* space for registers */ (5) callq ffffffff8030e3b0 (3) mov %rsp,%rdi /* pt_regs pointer */ (2) xor %esi,%esi /* no error code */ (5) callq ffffffff80213446 (5) jmpq ffffffff8030e460 And one for an exception with errorcode like this: : (6) callq *0x1cab92(%rip) # ffffffff803dd448 (4) sub $0x78,%rsp /* space for registers */ (5) callq ffffffff8030e3b0 (3) mov %rsp,%rdi /* pt_regs pointer */ (5) mov 0x78(%rsp),%rsi /* load error code */ (9) movq $0xffffffffffffffff,0x78(%rsp) /* no syscall */ (5) callq ffffffff80213209 (5) jmpq ffffffff8030e460 Unfortunately, this last type is more than 32 bytes. But the total space savings due to this patch is about 2500 bytes on an smp-configuration, and I think the code is clearer than it was before. The tested kernels were non-paravirt ones (i.e., without the indirect call at the top of the exception handlers). Anyhow, I tested this patch on top of a recent -tip. The machine was an 2x4-core Xeon at 2333MHz. Measured where the delays between (almost-)adjacent rdtsc instructions. The graphs show how much time is spent outside of the program as a function of the measured delay. The area under the graph represents the total time spent outside the program. Eight instances of the rdtsctest were started, each pinned to a single cpu. The histogams are added. For each kernel two measurements were done: one in mostly idle condition, the other while running "bonnie++ -f", bound to cpu 0. Each measurement took 40 minutes runtime. See the attached graphs for the results. The graphs overlap almost everywhere, but there are small differences. Signed-off-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit c032a2de4c1a82187e9a754511043be47c8a92b5 Merge: 722024dbb74f3ea316c285c0a71a4512e113b0c4 cbe9ee00cea58d1f77b172fe22a51080e90877f2 Author: Ingo Molnar Date: Thu Nov 20 10:48:28 2008 +0100 Merge branch 'x86/cleanups' into x86/irq [ merged x86/cleanups into x86/irq to enable a wider IRQ entry code patch to be applied, which depends on a cleanup patch in x86/cleanups. ] commit 87f7606591aea6a8a38ea4c8911b5eeeee2740b8 Author: Yinghai Lu Date: Wed Nov 19 20:50:53 2008 -0800 x86: fix wakeup_cpu with numaq/es7000 v2 - call ->update_genapic() Impact: fix boot crash on 32-bit Hiroshi Shimamoto reported a boot failure on 32-bit x86. The setting of x86_quirks.wakeup_cpu is missing (when not passing in an explicit apic= boot parameter). Reported-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit a61fc1e995e6ccc884df50a1609b831a4b45a600 Author: Mike Frysinger Date: Mon Nov 17 21:23:40 2008 +0000 netdev/smc91x: unify Blackfin code a bit and use proper read/write functions Signed-off-by: Mike Frysinger Signed-off-by: Bryan Wu Signed-off-by: David S. Miller commit 3d3e35aa78c9498eed3209c9d82376085ed0c36f Author: Gerrit Renker Date: Thu Nov 20 01:03:08 2008 -0800 dccp: Fix bracing in dccp_feat_list_lookup. From: Gerrit Renker Signed-off-by: David S. Miller commit f4bdd264b43cc60dccb617afce2859dffdd7a935 Author: Wang Chen Date: Thu Nov 20 01:02:05 2008 -0800 netdevice hamradio: Convert directly reference of netdev->priv Since all the memory, which pointed by netdev->priv, are allocated in advance instead of by alloc_netdev(). Use netdev->ml_priv to point to those memory. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 56bc0f9603e45cf13db51e554e1541e289a7f8e9 Author: Alexey Dobriyan Date: Thu Nov 20 10:01:37 2008 +0100 netfilter: nf_conntrack_proto_gre: spread __exit Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit f3a216d1da1c034c425c4eafe27a1b45269985c7 Author: Wang Chen Date: Thu Nov 20 01:01:00 2008 -0800 netdevice: 82596: Convert netdev->priv to netdev_priv 1. When alloc_etherdev(), no memory be allocated to netdev->priv. 2. And it's need to get a whole page for priv. For these reasons, use netdev->ml_priv to point to the page is the best method to convert directly reference of netdev->priv. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 61d3015808d877eb4ea225b5924feb128b0c1bc7 Author: Alexey Dobriyan Date: Thu Nov 20 09:58:08 2008 +0100 netfilter: ip6table_filter: merge LOCAL_IN and FORWARD hooks Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit b0ceb560a4119f187dc50da655be389cb54ae4f9 Author: Alexey Dobriyan Date: Thu Nov 20 09:57:01 2008 +0100 netfilter: xt_recent: don't save proc dirs Not needed, since creation and removal are done by name. Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit d214c7537bbf2f247991fb65b3420b0b3d712c67 Author: Pablo Neira Ayuso Date: Thu Nov 20 00:49:27 2008 -0800 filter: add SKF_AD_NLATTR_NEST to look for nested attributes SKF_AD_NLATTR allows us to find the first matching attribute in a stream of netlink attributes from one offset to the end of the netlink message. This is not suitable to look for a specific matching inside a set of nested attributes. For example, in ctnetlink messages, if we look for the CTA_V6_SRC attribute in a message that talks about an IPv4 connection, SKF_AD_NLATTR returns the offset of CTA_STATUS which has the same value of CTA_V6_SRC but outside the nest. To differenciate CTA_STATUS and CTA_V6_SRC, we would have to make assumptions on the size of the attribute and the usual offset, resulting in horrible BSF code. This patch adds SKF_AD_NLATTR_NEST, which is a variant of SKF_AD_NLATTR, that looks for an attribute inside the limits of a nested attributes, but not further. This patch validates that we have enough room to look for the nested attributes - based on a suggestion from Patrick McHardy. Signed-off-by: Pablo Neira Ayuso Acked-by: Patrick McHardy Signed-off-by: David S. Miller commit 68fd991020fdf51bc94327d288ae4ae5d0b8dced Author: Alexander Duyck Date: Thu Nov 20 00:48:10 2008 -0800 igb: Fix tx/rx_ring_count parameters for igb on suspend/resume/ring resize When suspending the device the ring structure is freed which causes it to loose track of the count. To resolve this we need to move the ring count outside of the ring structure and store it in the adapter struct. In addition to resolving the suspend/resume issue this patch also addresses issues seen in the event of memory allocation errors causing uneven ring sizes on multiple queues. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit b2d565365e02947699a8e3d594275662a8d00646 Author: Alexander Duyck Date: Thu Nov 20 00:47:34 2008 -0800 igb: simplify swap in clean_rx_irq if using packet split This update replaces the xchg calls that were added with a pair of assignments as there is no need for the xchg calls and they were found to cause issues on some architectures. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 3ef6b2354f5ac340396e47a49b64b8da61ada3b7 Author: Alexander Duyck Date: Thu Nov 20 00:46:57 2008 -0800 igb: update name to reflect new hardware This patch adds the 82576 device to the description for igb in Kconfig. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 5caea4ea7088e80ac5410d04660346094608b909 Author: Eric Dumazet Date: Thu Nov 20 00:40:07 2008 -0800 net: listening_hash get a spinlock per bucket This patch prepares RCU migration of listening_hash table for TCP/DCCP protocols. listening_hash table being small (32 slots per protocol), we add a spinlock for each slot, instead of a single rwlock for whole table. This should reduce hold time of readers, and writers concurrency. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit bb5574608a8375026510b4f983ffbb06ece33fe2 Author: Richard A. Holden III Date: Wed Nov 19 16:05:15 2008 -0700 x86: fix arch/x86/kernel/setup.c build warning when !CONFIG_X86_RESERVE_LOW_64K Impact: cleanup Fix: arch/x86/kernel/setup.c:592: warning: 'dmi_low_memory_corruption' defined but not used this is only used if CONFIG_X86_RESERVE_LOW_64K is defined. Signed-off-by: Richard A. Holden III Signed-off-by: Ingo Molnar commit 90accd6fabf9b2fa2705945a4c601877a75d43bf Merge: b43d196c4d3fe46d6dda7c987c47792612b80b1b ee2f6cc7f9ea2542ad46070ed62ba7aa04d08871 Author: Ingo Molnar Date: Thu Nov 20 09:03:38 2008 +0100 Merge branch 'linus' into x86/memory-corruption-check commit 77be80e437fec44f8b7a620314b7d7b605b8d93b Author: Richard A. Holden III Date: Wed Nov 19 16:05:14 2008 -0700 x86: fix arch/x86/kernel/genx2apic_uv_x.c build warning when !CONFIG_HOTPLUG_CPU Impact: cleanup, reduce size of the kernel image a bit Fix: arch/x86/kernel/genx2apic_uv_x.c:403: warning: 'uv_heartbeat_disable' defined but not used the function is only used when CONFIG_HOTPLUG_CPU is defined. Signed-off-by: Richard A. Holden III Signed-off-by: Ingo Molnar commit fbc2a06056c9aa3cb8c44bf1cfeb1d260e229e5c Merge: a3d732f93785da17e0137210deadb4616f5536fc ee2f6cc7f9ea2542ad46070ed62ba7aa04d08871 Author: Ingo Molnar Date: Thu Nov 20 09:02:39 2008 +0100 Merge branch 'linus' into x86/uv commit 5b2d1ecac2a79b9438aed731557b8912564cedfd Author: Vincent Petry Date: Tue Nov 18 22:21:57 2008 +0800 ALSA: hda: Added Realtek ALC888 model entry for Acer Aspire 4930G laptop Added Realtek ALC888 model entry for the Acer Aspire 4930G laptop that fixes the following features: - internal microphone - heaphone jack sense - channel mode Signed-off-by: Vincent Petry Signed-off-by: Takashi Iwai commit 41dda0fdd2cb22d989aa76fbbbd5a6514a3e0802 Author: Wu Fengguang Date: Thu Nov 20 09:24:52 2008 +0800 ALSA: azx_probe() cleanup Replace 5 free-and-return-err blocks with goto-out-free ones. This makes the main logic more outstanding. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit d8b83c57a7e497cba9b5cb156e63176323035785 Author: Stephen Hemminger Date: Wed Nov 19 22:28:46 2008 -0800 acenic: convert to net_device_ops Convert this driver to network device ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 2c9171d4ef431d8ed897daf4fee6798979cbb432 Author: Stephen Hemminger Date: Wed Nov 19 22:27:43 2008 -0800 niu: convert to net_device_ops Convert this driver to network device ops. Compile tested only (give me hw!) Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit b94426bd9d16fb2753ada1255c7a432f49dfebcb Author: Stephen Hemminger Date: Wed Nov 19 22:26:51 2008 -0800 forcedeth: convert to net_device_ops Convert this driver to network device ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 7c7d64b8c00bcf9519e5ec38368bc7afdc185c51 Author: Stephen Hemminger Date: Wed Nov 19 22:25:36 2008 -0800 tg3: convert to net_device_ops Convert this driver to network device ops. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 0edc352743156a39dfc3f21206b2bf7b9f371832 Author: Stephen Hemminger Date: Wed Nov 19 22:24:29 2008 -0800 ixgb: convert to net_device_ops Convert this driver to network device ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit afe29f7a61b7b9b9dae9f443c34733c2b4f461ba Author: Stephen Hemminger Date: Wed Nov 19 22:23:26 2008 -0800 enic: convert to net_device_ops Convert this driver to network device ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 52256cfc9f81cd8713e00a0713e68347bbffba5a Author: Stephen Hemminger Date: Wed Nov 19 22:22:30 2008 -0800 ppp: convert to net_device_ops Convert this driver to network device ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit acc784263b0c46f3052fb4f155fdfe39b7001c98 Author: Stephen Hemminger Date: Wed Nov 19 22:21:53 2008 -0800 e100: convert to net_device_ops Convert to new network device ops interface. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 2e5c69228ef52b8fe6b3d38caf45f03b22fda7bd Author: Stephen Hemminger Date: Wed Nov 19 22:20:44 2008 -0800 igb: convert to net_device_ops Convert to new network device ops interface. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 39a11bd9102cf8601f02d595dc022b715103afde Author: Stephen Hemminger Date: Wed Nov 19 22:19:33 2008 -0800 via-velocity: convert to net_device_ops Convert this driver to network device ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 0e7614bc3df034e2f92e0d424cc6f81dcdb7af65 Author: Stephen Hemminger Date: Wed Nov 19 22:18:22 2008 -0800 e1000: convert to net_device_ops Convert to new network device ops interface. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 80ff32b76f7969bf62206840c4e1d04674e41df9 Author: Stephen Hemminger Date: Wed Nov 19 22:17:06 2008 -0800 cxgb2: convert to net_device_ops Convert this driver to network device ops. Compile teseted only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit dd7526960ec2a7c85a5b8bfae8f297d317bf4b86 Author: Stephen Hemminger Date: Wed Nov 19 22:15:39 2008 -0800 cxgb3: convert to net_device_ops Convert this driver to network device ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 825a84d1d3d612c2b8db77dd4719882690d01bae Author: Stephen Hemminger Date: Wed Nov 19 22:14:17 2008 -0800 atlx: convert to net_device_ops Convert this driver to network device ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 1e058ab58f03fedbd2aa202c3a81c777d623be3a Author: Stephen Hemminger Date: Wed Nov 19 22:12:06 2008 -0800 atl1e: convert to net_device_ops Convert this driver to network device ops. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 758e43b74c903ad368ceced31601ba5d96f31238 Author: Stephen Hemminger Date: Wed Nov 19 22:10:37 2008 -0800 tun: convert to net_device_ops Convert the TUN/TAP tunnel driver to net_device_ops. Split the ops in two, and retain compatability. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 48dfcde46ef23cfad1e0c0f13d4eae15c7f46efc Author: Stephen Hemminger Date: Wed Nov 19 22:09:07 2008 -0800 8139: convert to net_device_ops Convert to new network device ops interface. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 8b4ab28dae8afa14f22d210c591046def2f4d742 Author: Francois Romieu Date: Wed Nov 19 22:05:25 2008 -0800 r8169: convert to net_device_ops Based upon a patch by Stephen Hemminger. Signed-off-by: David S. Miller commit f80d032b5fe95e3ce89f79210859b7ec799e1ccc Author: Stephen Hemminger Date: Wed Nov 19 22:01:26 2008 -0800 skge: convert to net_device_ops Convert to new network device ops interface. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 1436b301ec2b184fc01dc29fa22d1fbac619b491 Author: Stephen Hemminger Date: Wed Nov 19 21:59:54 2008 -0800 sky2: convert to net_device_ops Convert to new network device ops interface. Slight additional complexity here because the second port does not allow netpoll and therefore has different virtual function table. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 651c24669316b955c3c7797bd535cdaa4533cb16 Author: Stephen Hemminger Date: Wed Nov 19 21:57:48 2008 -0800 e1000e: convert to net_device_ops Convert e1000e to network device ops. Signed-off-by: Stephen Hemminger commit eb7cc59a038b4e1914ae991d313f35904924759f Author: Stephen Hemminger Date: Wed Nov 19 21:56:05 2008 -0800 bonding: convert to net_device_ops Convert to net_device_ops table. Note: for some operations move error checking into generic networking layer (rather than looking at pointers in bonding). A couple of gratituous style cleanups to get rid of extra {} Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 656299f706e52e0409733d704c2761f1b12d6954 Author: Stephen Hemminger Date: Wed Nov 19 21:53:47 2008 -0800 vlan: convert to net_device_ops Convert vlan devices and function pointers to net_device_ops. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 5bc3eb7e2f0026f246d939851109df99e8e9f64a Author: Stephen Hemminger Date: Wed Nov 19 21:52:05 2008 -0800 ip: convert to net_device_ops for ioctl Convert to net_device_ops function table pointer for ioctl. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 54a30c975b6b27c0c9268461b647576b146d39bb Author: Stephen Hemminger Date: Wed Nov 19 21:51:06 2008 -0800 macvlan: convert to net_device_ops Convert to net_device_ops function table. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 4456e7bdf74c9f27e2312a6f197b2da467541433 Author: Stephen Hemminger Date: Wed Nov 19 21:50:10 2008 -0800 veth: convert to net_device_ops Convert to net_device_ops function table. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit a2dbb88210b9877f1c53d3798fd5d717a4d45256 Author: Stephen Hemminger Date: Wed Nov 19 21:49:00 2008 -0800 bridge: convert to net_device_ops Convert to net_device_ops function table. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 8dfcdf342d9e8294a3292005f9158022289dfd67 Author: Stephen Hemminger Date: Wed Nov 19 21:47:07 2008 -0800 ifb: convert to net_device_ops Convert to new network device ops interface. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit c02373bf2759dd210dc8c72c9c9b4a8f1c279cac Author: Stephen Hemminger Date: Wed Nov 19 21:46:18 2008 -0800 netdev: convert loopback to net_device_ops First device to convert over is the loopback device. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit ccad637b0c57de1825ffd34c311bf71487545ac2 Author: Stephen Hemminger Date: Wed Nov 19 22:42:31 2008 -0800 netdev: expose ethernet address primitives When ethernet devices are converted, the function pointer setup by eth_setup() need to be done during intialization. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit eeda3fd64f75bcbfaa70ce946513abaf3f23b8e0 Author: Stephen Hemminger Date: Wed Nov 19 21:40:23 2008 -0800 netdev: introduce dev_get_stats() In order for the network device ops get_stats call to be immutable, the handling of the default internal network device stats block has to be changed. Add a new helper function which replaces the old use of internal_get_stats. Note: change return code to make it clear that the caller should not go changing the returned statistics. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit d314774cf2cd5dfeb39a00d37deee65d4c627927 Author: Stephen Hemminger Date: Wed Nov 19 21:32:24 2008 -0800 netdev: network device operations infrastructure This patch changes the network device internal API to move adminstrative operations out of the network device structure and into a separate structure. This patch involves some hackery to maintain compatablity between the new and old model, so all 300+ drivers don't have to be changed at once. For drivers that aren't converted yet, the netdevice_ops virt function list still resides in the net_device structure. For old protocols, the new net_device_ops are copied out to the old net_device pointers. After the transistion is completed the nag message can be changed to an WARN_ON, and the compatiablity code can be made configurable. Some function pointers aren't moved: * destructor can't be in net_device_ops because it may need to be referenced after the module is unloaded. * neighbor setup is manipulated in a couple of places that need special consideration * hard_start_xmit is in the fast path for transmit. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 6b41e7dd90c6a628ab5fb8d781302d60a243b2ce Author: Eric Dumazet Date: Wed Nov 19 15:48:09 2008 -0800 net: af_unix should use KERN_INFO instead of KERN_DEBUG As spotted by Joe Perches, we should use KERN_INFO in unix_sock_destructor() Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit d171235e712c11c0a0f47f62619024bf726125e1 Author: Joe Perches Date: Wed Nov 19 15:45:15 2008 -0800 drivers/s390/ - csum_partial - remove unnecessary casts The first argument to csum_partial is const void * casts to char/u8 * are not necessary Signed-off-by: Joe Perches Signed-off-by: David S. Miller commit 07f0757a6808f2f36a0e58c3a54867ccffdb8dc9 Author: Joe Perches Date: Wed Nov 19 15:44:53 2008 -0800 include/net net/ - csum_partial - remove unnecessary casts The first argument to csum_partial is const void * casts to char/u8 * are not necessary Signed-off-by: Joe Perches Signed-off-by: David S. Miller commit a7a0d6a87b70f7b2bab5281fc0fd443772bd0795 Author: Eric Dumazet Date: Wed Nov 19 15:43:27 2008 -0800 net: inet_diag_handler structs can be const Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 14e943db133489c98d426a0dcfce4a99c6e8ad97 Author: Eric Dumazet Date: Wed Nov 19 15:14:01 2008 -0800 net: make /proc/net/protocols namespace aware Converting /proc/net/protocols to be namespace aware is quite easy and permits us to use sock_prot_inuse_get(). This provides seperate counters for each protocol. For example we can really count TCPv6 sockets and TCPv4 sockets, while previously, we had the same value, and this value was not namespace aware. Signed-off-by: Eric Dumazet Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 3680453c8be54fff0d23fdf33e8961a48e1f2cd6 Author: Eric Dumazet Date: Wed Nov 19 14:25:35 2008 -0800 net: af_packet should update its inuse counter This patch is a preparation to namespace conversion of /proc/net/protocols In order to have relevant information for PACKET protocols, we should use sock_prot_inuse_add() to update a (percpu and pernamespace) counter of inuse sockets. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 9789cfe22e5d7bc10cad841a4ea96ecedb34b267 Author: Randy Dunlap Date: Wed Nov 19 11:46:46 2008 -0800 nfsctl: add headers for credentials Needs headers help for current_cred: Adding only cred.h wasn't enough. linux-next-20081023/fs/nfsctl.c:45: error: implicit declaration of function 'current_cred' Signed-off-by: Randy Dunlap Cc: David Howells Cc: James Morris Signed-off-by: Andrew Morton Signed-off-by: James Morris commit 7596b27dbd8de7bcfa7a80b2756114b49bd5c018 Author: Randy Dunlap Date: Wed Nov 19 11:30:27 2008 -0800 coda: fix creds reference Needs a header file for credentials struct: linux-next-20081023/fs/coda/file.c:177: error: dereferencing pointer to incomplete type Signed-off-by: Randy Dunlap Cc: Jan Harkes Cc: David Howells Cc: James Morris Signed-off-by: Andrew Morton Signed-off-by: James Morris commit ec4e0e2fe018992d980910db901637c814575914 Author: Ken Chen Date: Tue Nov 18 22:41:57 2008 -0800 sched: fix inconsistency when redistribute per-cpu tg->cfs_rq shares Impact: make load-balancing more consistent In the update_shares() path leading to tg_shares_up(), the calculation of per-cpu cfs_rq shares is rather erratic even under moderate task wake up rate. The problem is that the per-cpu tg->cfs_rq load weight used in the sd_rq_weight aggregation and actual redistribution of the cfs_rq->shares are collected at different time. Under moderate system load, we've seen quite a bit of variation on the cfs_rq->shares and ultimately wildly affects sched_entity's load weight. This patch caches the result of initial per-cpu load weight when doing the sum calculation, and then pass it down to update_group_shares_cpu() for redistributing per-cpu cfs_rq shares. This allows consistent total cfs_rq shares across all CPUs. It also simplifies the rounding and zero load weight check. Signed-off-by: Ken Chen Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 9b0db7e7fd20d5a38844e9435f7d4246ea44978a Author: Mark Brown Date: Tue Nov 18 22:17:49 2008 +0000 ASoC: Convert blackfin machines to use DAI accessor functions Signed-off-by: Mark Brown commit d0c36631bbee9eb89f2fe4251e0e9583f37156cd Author: Mark Brown Date: Tue Nov 18 21:57:17 2008 +0000 ASoC: s3c24xx_uda134x DAI accessor functions and static cleanup Missed these during review. Signed-off-by: Mark Brown commit df573d2fd1b077b98ffc3eb62a9908075e69e578 Author: Arun KS Date: Wed Nov 19 17:45:19 2008 +0530 ASoC: Add support for omap2evm board This patch adds twl4030 audio support on omap2evm Signed-off-by: Arun KS Signed-off-by: Mark Brown commit 08bd16869645f435eba6a612d166532b3047c5f7 Author: Hugo Villeneuve Date: Wed Nov 19 01:37:32 2008 -0500 ASoC: Add driver for the Lyrtech SFFSDR board The PCM3008 is used on the Lyrtech SFFSDR board, in conjunction with an FPGA that generates the bit clock and the master clock [Downgraded the rate debug print to pr_debug() in hw_params, converted asm/gpio.h to linux/gpio.h -- broonie] Signed-off-by: Hugo Villeneuve Signed-off-by: Mark Brown commit 1c0090c280da18f79e3e94168b5f3bfe4eb5f1c8 Author: Hugo Villeneuve Date: Wed Nov 19 01:37:31 2008 -0500 ASoC: Add PCM3008 ALSA SoC driver The PCM3008 is a 16-bit stereo audio codec. It accepts left-justified format for ADC, and right-justified format for DAC. Independent power-down modes for ADC and DAC are provided, as well as a digital de-emphasis filter (4 modes). [Merged Makefile & Kconfig, changed asm/gpio.h to linux/gpio.h -- broonie] Signed-off-by: Hugo Villeneuve Signed-off-by: Mark Brown commit 8563964617a6685d790448d9d7e45b49be90a448 Author: Takashi Iwai Date: Wed Nov 19 14:14:50 2008 +0100 ALSA: hda - Show missing GPIO unsol bits The GPIO unsolicited event bits are read but not shown in the proc file. Let's fix it. Signed-off-by: Takashi Iwai commit 60a515132086b2c28a8141d873297fdf7a180ca7 Author: Andrew Morton Date: Tue Nov 18 22:20:10 2008 -0800 profiling: clean up profile_nop() Impact: cleanup No point in inlining this. Signed-off-by: Andrew Morton Signed-off-by: Ingo Molnar commit 9676e73a9e0cbdc521e1ebf4e13e6e5aada34247 Merge: 5a209c2d58e70f9bc415b9cdf0e3b9aaefb70371 86fa2f60674540df0b34f5c547ed0c1cf3a8f212 6d5b43a67accf6793ed259f6534b4bd53b1e5696 Author: Ingo Molnar Date: Wed Nov 19 10:04:25 2008 +0100 Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core Conflicts: kernel/trace/ftrace.c [ We conflicted here because we backported a few fixes to tracing/urgent - which has different internal APIs. ] commit 86fa2f60674540df0b34f5c547ed0c1cf3a8f212 Author: Ingo Molnar Date: Wed Nov 19 10:00:15 2008 +0100 ftrace: fix selftest locking Impact: fix self-test boot crash Self-test failure forgot to re-lock the BKL - crashing the next initcall: Testing tracer irqsoff: .. no entries found ..FAILED! initcall init_irqsoff_tracer+0x0/0x11 returned 0 after 3906 usecs calling init_mmio_trace+0x0/0xf @ 1 ------------[ cut here ]------------ Kernel BUG at c0c0a915 [verbose debug info unavailable] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC last sysfs file: Pid: 1, comm: swapper Not tainted (2.6.28-rc5-tip #53704) EIP: 0060:[] EFLAGS: 00010286 CPU: 1 EIP is at unlock_kernel+0x10/0x2b EAX: ffffffff EBX: 00000000 ECX: 00000000 EDX: f7030000 ESI: c12da19c EDI: 00000000 EBP: f7039f54 ESP: f7039f54 DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 Process swapper (pid: 1, ti=f7038000 task=f7030000 task.ti=f7038000) Stack: f7039f6c c0164d30 c013fed8 a7d8d7b4 00000000 00000000 f7039f74 c12fb78a f7039fd0 c0101132 c12fb77d 00000000 6f727200 6f632072 2d206564 c1002031 0000000f f7039fa2 f7039fb0 3531b171 00000000 00000000 0000002f c12ca480 Call Trace: [] ? register_tracer+0x66/0x13f [] ? ktime_get+0x19/0x1b [] ? init_mmio_trace+0xd/0xf [] ? do_one_initcall+0x4a/0x111 [] ? init_mmio_trace+0x0/0xf [] ? init_irq_proc+0x46/0x59 [] ? kernel_init+0x104/0x152 [] ? kernel_init+0x0/0x152 [] ? kernel_thread_helper+0x7/0x10 Code: 58 14 43 75 0a b8 00 9b 2d c1 e8 51 43 7a ff 64 a1 00 a0 37 c1 89 58 14 5b 5d c3 55 64 8b 15 00 a0 37 c1 83 7a 14 00 89 e5 79 04 <0f> 0b eb fe 8b 42 14 48 85 c0 89 42 14 79 0a b8 00 9b 2d c1 e8 EIP: [] unlock_kernel+0x10/0x2b SS:ESP 0068:f7039f54 ---[ end trace a7919e7f17c0a725 ]--- Kernel panic - not syncing: Attempted to kill init! So clean up the flow a bit. Signed-off-by: Ingo Molnar commit 3ac3ba0b396fd99550e08034b0e4c27fdf39c252 Merge: 934352f214b3251eb0793c1209d346595a661d80 7f0f598a0069d1ab072375965a4b69137233169c Author: Ingo Molnar Date: Wed Nov 19 09:44:37 2008 +0100 Merge branch 'linus' into sched/core Conflicts: kernel/Makefile commit ae8cb4caa34af20311fcf5ef248afc54407aa9a8 Author: Wu Fengguang Date: Wed Nov 19 15:14:03 2008 +0800 ALSA: hda: compact ELD output messages Strip out some ELD printk messages that end user won't care, and make the output compact. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit d39b4352f2356bde9d4dae8591d4c8022360922f Author: Wu Fengguang Date: Wed Nov 19 15:14:02 2008 +0800 ALSA: hda: make global snd_print_pcm_bits() Introduce a global function snd_print_pcm_bits() and use it in the ELD code. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 06f69d17a90ced7d74ff12ce69b7b101aed4ffd9 Author: Wu Fengguang Date: Wed Nov 19 15:14:01 2008 +0800 ALSA: hda: minor output message cleanups Some minor user visible message cleanups. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 5b87ebb7a79455358c1910f2896112ac0fa0d0fa Author: Wu Fengguang Date: Wed Nov 19 15:14:00 2008 +0800 ALSA: hda: rename sink_eld to hdmi_eld Rename struct sink_eld to hdmi_eld. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 4e19c58f27af67735d64d9af0b184181cea7ca63 Author: Wu Fengguang Date: Wed Nov 19 15:13:59 2008 +0800 ALSA: hda: minor code cleanups Some minor code cleanups. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 198d6ba4d7f48c94f990f4604f0b3d73925e0ded Merge: 9a57f7fabd383920585ed8b74eacd117c6551f2d 7f0f598a0069d1ab072375965a4b69137233169c Author: David S. Miller Date: Tue Nov 18 23:38:23 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/isdn/i4l/isdn_net.c fs/cifs/connect.c commit c6798d2bd1805e32a92ba8db168ec51cdbb534b0 Author: Matthew Ranostay Date: Tue Nov 18 20:54:17 2008 -0500 ALSA: hda: EAPD mute on suspend Moved support for EAPD mute on suspend from stac92hd71xx_suspend to the generic stac92xx_suspend function. Signed-off-by: Matthew Ranostay Signed-off-by: Takashi Iwai commit 9c8641e8ee438273079337c86f4d739fbfdd8b33 Author: Wu Fengguang Date: Wed Nov 19 08:56:18 2008 +0800 ALSA: hda: HDMI channel mapping cleanups Refactor the channel mapping code for consistent naming and make it more informed about channel allocations. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 698544de8a31a7cadc26c27cbaa69ae82dd4f86c Author: Wu Fengguang Date: Wed Nov 19 08:56:17 2008 +0800 ALSA: hda: HDMI channel allocations for audio infoframe To play a 3+ channels LPCM/DSD stream via HDMI, - HDMI sink must tell HDMI source about its speaker placements (via ELD, speaker-allocation field) - HDMI source must tell the HDMI sink about channel allocation (via audio infoframe, channel-allocation field) (related docs: HDMI 1.3a spec section 7.4, CEA-861-D section 7.5.3 and 6.6) This patch attempts to set the CA(channel-allocation) byte in the audio infoframe according to - the number of channels in the current stream - the speakers attached to the HDMI sink A channel_allocations[] line must meet the following two criteria to be considered as a valid candidate for CA: 1) its number of allocated channels = substream->runtime->channels 2) its speakers are a subset of the available ones on the sink side If there are multiple candidates, the first one is selected. This simple policy shall cheat the sink into playing music, but may direct data to the wrong speakers. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 903b21d8b7bb49d3438abdd7b9d4145511e1cba2 Author: Wu Fengguang Date: Wed Nov 19 08:56:16 2008 +0800 ALSA: hda: make global snd_print_channel_allocation() code refactor: make a global function snd_print_channel_allocation(). Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 5457a98039cebf20b564b5c3d73a50615e2b2696 Author: Wu Fengguang Date: Wed Nov 19 08:56:15 2008 +0800 ALSA: hda: make standalone hdmi_fill_audio_infoframe() code refactor: make a standalone function hdmi_fill_audio_infoframe(). Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit cea555d384b85271035814c5adad23e6c7fc5d2a Merge: 78608dd32ce46789e970d6c3c423cd668c138d6c 7f0f598a0069d1ab072375965a4b69137233169c Author: Paul Mackerras Date: Wed Nov 19 16:10:32 2008 +1100 Merge branch 'linux-2.6' into next commit 78608dd32ce46789e970d6c3c423cd668c138d6c Author: Milton Miller Date: Fri Oct 10 01:56:50 2008 +0000 powerpc/mpic: Use new smp_request_message_ipi MPIC has 4 ipis, so it can use the new smp_request_message_ipi to reduce pathlength when receiving an ipi. This has the side effect of using the common ipi names, and also continuing to try request the remaining messages when one fails. Signed-off-by: Milton Miller Signed-off-by: Paul Mackerras commit 25ddd738c2ebffb6c2d3cf29c91b986d1bb39c99 Author: Milton Miller Date: Fri Nov 14 20:11:49 2008 +0000 powerpc: Provide a separate handler for each IPI action With the new generic smp call function helpers, I noticed the code in smp_message_recv was a single function call in many cases. While getting the message number from the ipi data is easy, we can reduce the path length by a function and data-dependent switch by registering seperate IPI actions for these simple calls. Originally I left the ipi action array exposed, but then I realized the registration code should be common too. The three users each had their own name array, so I made a fourth to convert all users to use a common one. Signed-off-by: Milton Miller Signed-off-by: Paul Mackerras commit a6326e98a28d8a57f693369c82559543c6950f09 Author: Robert Jennings Date: Fri Nov 14 12:07:34 2008 +0000 powerpc: Correct page-in counter for CMM with 64k pages Linux will report the number of page-ins so that the hypervisor can better determine partition memory pressure. The hardware page size and the OS page size can be different. In the case where the hardware page size is 4k and the OS is running with 64k pages the code in commit 409001948d9f221c94a61c3ee96de112755fc04d ("powerpc: Update page-in counter for CMM") would under-report the number of pages. This corrects the reporting to the hypervisor by incrementing the page_in count by 1 << PAGE_FACTOR each time. Reported-by: Andrew Theurer Signed-off-by: Robert Jennings Signed-off-by: Paul Mackerras commit 22059a90b82d6cd02d488c48c27a4d0ad976c919 Author: Michael Ellerman Date: Wed Nov 12 18:20:43 2008 +0000 powerpc/pmac: Use of_find_node_with_property() in pmac_setup_arch() Signed-off-by: Michael Ellerman Acked-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit ba82efbd3b48cb2a0e03c043911ce44c28f2825a Author: Michael Ellerman Date: Wed Nov 12 18:20:40 2008 +0000 powerpc: Use of_find_node_with_property() in cell_iommu_fixed_mapping_init() Signed-off-by: Michael Ellerman Signed-off-by: Paul Mackerras commit 54018178ef05e32f140158cb7d7770b66042d131 Author: Michael Ellerman Date: Wed Nov 12 18:20:37 2008 +0000 powerpc: Use for_each_node_with_property() in of_irq_map_init() Signed-off-by: Michael Ellerman Signed-off-by: Paul Mackerras commit 1e291b14c8f1101b9093434489bd4dc0e03f3d0f Author: Michael Ellerman Date: Wed Nov 12 18:54:42 2008 +0000 of: Add helpers for finding device nodes which have a given property This commit adds a routine for finding a device node which has a certain property. The contents of the property are not taken into account, merely the presence or absence of the property. Based on that routine, we add a for_each_ macro for iterating over all nodes that have a certain property. Signed-off-by: Michael Ellerman Signed-off-by: Paul Mackerras commit ae564c63b8311fa73c21e456e00dba1f4b1ff6bc Author: Nick Piggin Date: Tue Nov 11 17:54:15 2008 +0000 powerpc: Optimise mutex This implements an optimised mutex fastpath for powerpc, making use of acquire and release barrier semantics. This takes the mutex lock+unlock benchmark from 203 to 173 cycles on a G5. Signed-off-by: Nick Piggin Signed-off-by: Paul Mackerras commit 957ab07b44d839ee8267e827fc4e8f1853798f57 Author: Nick Piggin Date: Tue Nov 11 17:51:18 2008 +0000 powerpc: Optimise smp_rmb After commit 598056d5af8fef1dbe8f96f5c2b641a528184e5a ("[POWERPC] Fix rmb to order cacheable vs. noncacheable"), rmb() becomes a sync instruction, which is needed to order cacheable vs noncacheable loads. However smp_rmb() is #defined to rmb(), and smp_rmb() can be an lwsync. This restores smp_rmb() performance by using lwsync there and updates the comments. Signed-off-by: Nick Piggin Signed-off-by: Paul Mackerras commit 46d075be585eae2b74265e4e64ca38dde16a09c6 Author: Nick Piggin Date: Tue Nov 11 17:50:48 2008 +0000 powerpc: Optimise smp_wmb Change 2d1b2027626d5151fff8ef7c06ca8e7876a1a510 ("powerpc: Fixup lwsync at runtime") removed __SUBARCH_HAS_LWSYNC, causing smp_wmb to revert back to eieio for all CPUs. This restores the behaviour intorduced in 74f0609526afddd88bef40b651da24f3167b10b2 ("powerpc: Optimise smp_wmb on 64-bit processors"). Signed-off-by: Nick Piggin Signed-off-by: Paul Mackerras commit a4e22f02f5b6518c1484faea1f88d81802b9feac Author: Mark Nelson Date: Tue Nov 11 00:53:34 2008 +0000 powerpc: Update 64bit __copy_tofrom_user() using CPU_FTR_UNALIGNED_LD_STD In exactly the same way that we updated memcpy() with new feature sections in commit 25d6e2d7c58ddc4a3b614fc5381591c0cfe66556 ("powerpc: Update 64bit memcpy() using CPU_FTR_UNALIGNED_LD_STD"), we do the same thing here for __copy_tofrom_user(). Once again this is purely a performance tweak for Cell and Power6 - this has no effect on all the other 64bit powerpc chips. We can make these same changes to __copy_tofrom_user() because the basic copy algorithm is the same as in memcpy() - this version just has all the exception handling logic needed when copying to or from userspace as well as a special case for copying whole 4K pages that are page aligned. CPU_FTR_UNALIGNED_LD_STD CPU was added in commit 4ec577a28980a0790df3c3dfe9c81f6e2222acfb ("powerpc: Add new CPU feature: CPU_FTR_UNALIGNED_LD_STD"). We also make the same simple one line change from cmpldi r1,... to cmpldi cr1,... for consistency. Signed-off-by: Mark Nelson Signed-off-by: Paul Mackerras commit 7526ff76f84178f8c926de7e590e4c5f9d4a2e62 Author: Hollis Blanchard Date: Mon Nov 10 14:33:36 2008 +0000 powerpc: Remove superfluous WARN_ON() from dma-noncoherent.c I can't tell why this WARN_ON exists, and there's no comment explaining it. Whether the pmd is present or not, pte_alloc_kernel() seems to handle both cases. Booting a 440 kernel with 64K PAGE_SIZE triggers the warning, but boot successfully completes and I see no problems beyond that. Signed-off-by: Hollis Blanchard Acked-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit efc3624c9419cad3cca93dfabb7b12664773d2b1 Author: Paul Mackerras Date: Wed Nov 5 18:39:27 2008 +0000 powerpc: Tell gcc when we clobber the carry in inline asm We have several instances of inline assembly code that use the addic or addic. instructions, but don't include XER in the list of clobbers. The addic and addic. instructions affect the carry bit, which is in the XER register. This adds "xer" to the list of clobbers for those inline asm statements that use addic or addic. and didn't already have it. Signed-off-by: Paul Mackerras commit d5e54913433fff89609adfc4b96fefcf807a9030 Author: David Gibson Date: Wed Nov 5 14:20:17 2008 +0000 powerpc: udbg-based backend for hvc_console This adds a new backend for the hvc console based on the low-level udbg callbacks. This effectively implements a working runtime console in terms of the simple udbg primitives. This is kind of a hack - since udbg isn't something you really want to be using routinely - but it's really useful during bringup. This can be used to quickly implement a userspace-usable console while you're working on a proper driver for whatever console I/O device the hardware has. Or, it can be used to avoid writing a full blown tty/console driver entirely for quick-and-dirty I/O hardware that will later be replaced by something else. Signed-off-by: David Gibson Signed-off-by: Paul Mackerras commit 8c6531868d4917adbd363030f28a734b76c7471a Author: Chris J Arges Date: Tue Nov 4 12:19:06 2008 +0000 serial/pmac_zilog: Add console polling support This implements poll_get_char and poll_put_char for console polling, which enables kgdb to work on machines that use the pmac_zilog serial driver, for example the Apple PowerMac G5. Signed-off-by: Chris J Arges Signed-off-by: Paul Mackerras commit 9b82f3e61758ed897200f0244b63a77c1791bcba Author: Geert Uytterhoeven Date: Thu Oct 30 08:12:58 2008 +0000 powerpc/ps3: Replace the flip_ctl logic in ps3av and ps3fb by a mutex Introduce ps3_gpu_mutex to synchronizes GPU-related operations, like: - invoking the L1GPU_CONTEXT_ATTRIBUTE_FB_BLIT command using the lv1_gpu_context_attribute() hypervisor call, - handling the PS3AV_CID_AVB_PARAM packet in the PS3 A/V Settings driver. Signed-off-by: Geert Uytterhoeven Signed-off-by: Geoff Levand Signed-off-by: Paul Mackerras commit a22506347d038a66506c6f57e9b97104128e280d Author: Heiko Carstens Date: Tue Nov 18 18:06:35 2008 +0100 ftrace: preemptoff selftest not working Impact: fix preemptoff and preemptirqsoff tracer self-tests I was wondering why the preemptoff and preemptirqsoff tracer selftests don't work on s390. After all its just that they get called from non-preemptible context: kernel_init() will execute all initcalls, however the first line in kernel_init() is lock_kernel(), which causes the preempt_count to be increased. Any later calls to add_preempt_count() (especially those from the selftests) will therefore not result in a call to trace_preempt_off() since the check below in add_preempt_count() will be false: if (preempt_count() == val) trace_preempt_off(CALLER_ADDR0, get_parent_ip(CALLER_ADDR1)); Hence the trace buffer will be empty. Fix this by releasing the BKL during the self-tests. Signed-off-by: Heiko Carstens Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit ca3ea02e90d63a6a91c1c2a445d6d71f9031a44a Author: Mark Brown Date: Tue Nov 18 20:40:36 2008 +0000 ASoC: Remove unused snd_soc_machine_config declaration Signed-off-by: Mark Brown commit 2af752936b311a846622668f8b0f1893d8eccade Author: Hannes Eder Date: Tue Nov 18 12:25:06 2008 -0500 sound: Fix warnings relating to ignored return value in snd_card_register Do not ignore the return of 'device_create_file' in 'snd_card_register' and thereby fixing the following warnings: sound/core/init.c: In function 'snd_card_register': sound/core/init.c:640: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result sound/core/init.c:641: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result Signed-off-by: Hannes Eder Signed-off-by: Takashi Iwai commit b5fe363b7d89577fcfda9b6cf0efc32760bbccc6 Author: Yinghai Lu Date: Tue Nov 18 08:14:14 2008 -0800 x86: use update_genapic to get rid of ES7000_CLUSTERED_APIC v2 Impact: clean up We can autodetect those system that need cluster apic, and update genapic accordingly. We can also remove wakeup.h for e7000, because it's default one is now the same as overall default mach_wakecpu.h Signed-off-by: Yinghai Lu Signed-off-by: Ingo Molnar commit f632ddcc0786149c0e4bef9b6b44c96a75c0d074 Author: Ingo Molnar Date: Tue Nov 18 17:32:26 2008 +0100 x86: fix wakeup_cpu with numaq/es7000, v2, fix #2 Impact: fix boot crash fix default_update_genapic(). Signed-off-by: Yinghai Lu Signed-off-by: Ingo Molnar commit 64977609e316c86fad513d9bf0afff998581e59d Author: Hiroshi Shimamoto Date: Mon Nov 17 15:49:14 2008 -0800 x86: ia32_signal: change order of storing in setup_sigcontext() Impact: cleanup Change order of storing to match the sigcontext_ia32. And add casting to make this code same as arch/x86/kernel/signal_32.c. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 047ce93581ca122442ed3c13a62a645249a7db1d Author: Hiroshi Shimamoto Date: Mon Nov 17 15:48:27 2008 -0800 x86: ia32_signal: remove using temporary variable Impact: cleanup No need to use temporary variable. Also rename the variable same as arch/x86/kernel/signal_32.c. Signed-off-by: Hiroshi Shimamoto Reviewed-by: WANG Cong Signed-off-by: Ingo Molnar commit 8c6e5ce0fd67c57ad5e19d1718e1250214e855db Author: Hiroshi Shimamoto Date: Mon Nov 17 15:47:48 2008 -0800 x86: ia32_signal: cleanup macro RELOAD_SEG Impact: cleanup Remove mask parameter because it's always 3. Cleanup coding styles. Signed-off-by: Hiroshi Shimamoto Reviewed-by: WANG Cong Signed-off-by: Ingo Molnar commit d71a68dca54756049e0eae62458a1705bf680d09 Author: Hiroshi Shimamoto Date: Mon Nov 17 15:47:06 2008 -0800 x86: ia32_signal: introduce COPY_SEG_CPL3 Impact: cleanup Introduce COPY_SEG_CPL3 for ia32_restore_sigcontext(). Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit b78a5b5260abf90d574911e7c7b8d35d5b48d6c0 Author: Hiroshi Shimamoto Date: Mon Nov 17 15:44:50 2008 -0800 x86: ia32_signal: cleanup macro COPY Impact: cleanup No need to use temporary variable in this case. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit cbe9ee00cea58d1f77b172fe22a51080e90877f2 Merge: 0bd7b79851d0f74b24a9ce87d088f2e7c718f668 10db4ef7b9a65b86e4d047671a1886f4c101a859 Author: Ingo Molnar Date: Tue Nov 18 15:41:36 2008 +0100 Merge branch 'x86/urgent' into x86/cleanups commit a1afd01c175324656d0e8f1c82ea94b474953c04 Author: Joerg Roedel Date: Tue Nov 18 12:44:21 2008 +0100 x86: default to SWIOTLB=y on x86_64 Impact: fixes korg bugzilla 11980 A kernel for a 64bit x86 system should always contain the swiotlb code in case it is booted on a machine without any hardware IOMMU supported by the kernel and more than 4GB of RAM. This patch changes Kconfig to always compile swiotlb into the kernel for x86_64. Signed-off-by: Joerg Roedel Cc: stable@kernel.org Signed-off-by: Ingo Molnar commit 72f2b894455775b980a5ac7ae70ab560b3d3d247 Author: Mark Brown Date: Tue Nov 18 12:25:46 2008 +0000 ASoC: Move uda134x_codec.h to uda134x.h For consistency with other ASoC codec drivers. Signed-off-by: Mark Brown commit a0bd65f45faae78bda7a2a07370c40c3e0a2502a Author: Mike Frysinger Date: Tue Nov 18 16:18:22 2008 +0800 ASoC: Blackfin: always set a default value for that GPIO range Cc: Cliff Cai Signed-off-by: Mike Frysinger Signed-off-by: Bryan Wu Signed-off-by: Mark Brown commit 27b9be5a7894f571bbfb87de19ad7cd8c7737d22 Author: Bryan Wu Date: Tue Nov 18 16:18:21 2008 +0800 ASoC: Blackfin: Simplify the MMAP_SUPPORT macros protected code Cc: Cliff Cai Signed-off-by: Bryan Wu Signed-off-by: Mark Brown commit caa45836d6bdfde603f3afd739ec3fc2360b1dac Author: Mike Frysinger Date: Tue Nov 18 16:18:20 2008 +0800 ASoC: Blackfin: do not force TWI bus for ssm2602 codec Cc: Cliff Cai Signed-off-by: Mike Frysinger Signed-off-by: Bryan Wu Signed-off-by: Mark Brown commit 0cade26e366549adcf211f67200b2934c8220f05 Author: Michael Hennerich Date: Tue Nov 18 16:18:19 2008 +0800 ASoC: Fix Blackfin AC97 DAI probe function return code A probe function should have a clean return 0 path. Cc: Cliff Cai Signed-off-by: Michael Hennerich Signed-off-by: Bryan Wu Signed-off-by: Mark Brown commit a89e611a1dfefbf5d21f6def54c958bf6c4971bc Author: Cliff Cai Date: Tue Nov 18 16:18:18 2008 +0800 ASoC: Blackfin: Fix AD1980/1 build with MMAP support disabled clean up redudent code and correct building problem in non-mmap mode Signed-off-by: Cliff Cai Signed-off-by: Bryan Wu Signed-off-by: Mark Brown commit 67f854b910613eeffec4fe71e35c0cd8c32c82ec Author: Cliff Cai Date: Tue Nov 18 16:18:17 2008 +0800 ASoC: Blackfin: add multi-channel function support This patch provides a option for users to enable multi-channel function support in Blackfin ASoC driver. Because Blackfin is without MMU, it is easy for us and the user to enable this function at compiling stage not dynamically on the fly. Signed-off-by: Cliff Cai Signed-off-by: Bryan Wu Signed-off-by: Mark Brown commit 9905ed35fdec0ebb3be8a724021ff3b104571667 Author: Cliff Cai Date: Tue Nov 18 16:18:16 2008 +0800 ASoC: AD1980 codec: add multi-channel function support We added multi-channel function to this codec driver and Blackfin ASoC driver as well. It was tested on Blackfin hardware. Signed-off-by: Cliff Cai Signed-off-by: Bryan Wu Signed-off-by: Mark Brown commit a11311d71d59145d920c19c0a4eed3fa7e26d222 Author: Mike Frysinger Date: Tue Nov 18 16:18:15 2008 +0800 ASoC: Blackfin: updates Kconfig for SPORT tweak SPORT range for non-BF54x so we get proper behavior for BF52x parts Signed-off-by: Mike Frysinger Signed-off-by: Bryan Wu Signed-off-by: Mark Brown commit cb6e2063697e91ca6983f9fe6958d20469b43641 Author: Naresh Medisetty Date: Tue Nov 18 11:01:03 2008 +0530 ASoC: DaVinci: Fix audio stall when doing full duplex Fix concurrent capture/playback issue. The issue is caused by re-initialization of control registers used specifically for capture or playback in both capture and playback operations. Signed-off-by: Steve Chen Signed-off-by: Naresh Medisetty Signed-off-by: Mark Brown commit cd896c331dd442c43cd9e23de3f1a4f3c111c292 Author: Takashi Iwai Date: Tue Nov 18 12:36:33 2008 +0100 ALSA: hda - Allow multiple imux for matrix-type mixers of ALC codecs Allow the multiple imux instances for matrix-type mixers like ALC882. So far, only ALC260 used this feature, but other codecs may need a similar stuff. Signed-off-by: Takashi Iwai commit e17b666a468285409ab9f6caff9df16936d27d71 Author: Patrick McHardy Date: Tue Nov 18 12:24:17 2008 +0100 netfilter: nf_conntrack: fix warning and prototype mismatch net/netfilter/nf_conntrack_core.c:46:1: warning: symbol 'nfnetlink_parse_nat_setup_hook' was not declared. Should it be static? Including the proper header also revealed an incorrect prototype. Signed-off-by: Patrick McHardy commit d9e150071d18b5c87ba7a097af4063a5ad0c6a0c Author: Patrick McHardy Date: Tue Nov 18 12:16:52 2008 +0100 netfilter: nfnetlink_log: fix warning and prototype mismatch net/netfilter/nfnetlink_log.c:537:1: warning: symbol 'nfulnl_log_packet' was not declared. Should it be static? Including the proper header also revealed an incorrect prototype. Signed-off-by: Patrick McHardy commit 19abb7b090a6bce88d4e9b2914a0367f4f684432 Author: Pablo Neira Ayuso Date: Tue Nov 18 11:56:20 2008 +0100 netfilter: ctnetlink: deliver events for conntracks changed from userspace As for now, the creation and update of conntracks via ctnetlink do not propagate an event to userspace. This can result in inconsistent situations if several userspace processes modify the connection tracking table by means of ctnetlink at the same time. Specifically, using the conntrack command line tool and conntrackd at the same time can trigger unconsistencies. This patch also modifies the event cache infrastructure to pass the process PID and the ECHO flag to nfnetlink_send() to report back to userspace if the process that triggered the change needs so. Based on a suggestion from Patrick McHardy. Signed-off-by: Pablo Neira Ayuso Signed-off-by: Patrick McHardy commit 226c0c0ef2abdf91b8d9cce1aaf7d4635a5e5926 Author: Pablo Neira Ayuso Date: Tue Nov 18 11:54:05 2008 +0100 netfilter: ctnetlink: helper modules load-on-demand support This patch adds module loading for helpers via ctnetlink. * Creation path: We support explicit and implicit helper assignation. For the explicit case, we try to load the module. If the module is correctly loaded and the helper is present, we return EAGAIN to re-start the creation. Otherwise, we return EOPNOTSUPP. * Update path: release the spin lock, load the module and check. If it is present, then return EAGAIN to re-start the update. This patch provides a refactorized function to lookup-and-set the connection tracking helper. The function removes the exported symbol __nf_ct_helper_find as it has not clients anymore. Signed-off-by: Pablo Neira Ayuso Signed-off-by: Patrick McHardy commit 0231022cc32d5f2e7f3c06b75691dda0ad6aec33 Author: Frederic Weisbecker Date: Mon Nov 17 03:22:41 2008 +0100 tracing/function-return-tracer: add the overrun field Impact: help to find the better depth of trace We decided to arbitrary define the depth of function return trace as "20". Perhaps this is not enough. To help finding an optimal depth, we measure now the overrun: the number of functions that have been missed for the current thread. By default this is not displayed, we have to do set a particular flag on the return tracer: echo overrun > /debug/tracing/trace_options And the overrun will be printed on the right. As the trace shows below, the current 20 depth is not enough. update_wall_time+0x37f/0x8c0 -> update_xtime_cache (345 ns) (Overruns: 2838) update_wall_time+0x384/0x8c0 -> clocksource_get_next (1141 ns) (Overruns: 2838) do_timer+0x23/0x100 -> update_wall_time (3882 ns) (Overruns: 2838) tick_do_update_jiffies64+0xbf/0x160 -> do_timer (5339 ns) (Overruns: 2838) tick_sched_timer+0x6a/0xf0 -> tick_do_update_jiffies64 (7209 ns) (Overruns: 2838) vgacon_set_cursor_size+0x98/0x120 -> native_io_delay (2613 ns) (Overruns: 274) vgacon_cursor+0x16e/0x1d0 -> vgacon_set_cursor_size (33151 ns) (Overruns: 274) set_cursor+0x5f/0x80 -> vgacon_cursor (36432 ns) (Overruns: 274) con_flush_chars+0x34/0x40 -> set_cursor (38790 ns) (Overruns: 274) release_console_sem+0x1ec/0x230 -> up (721 ns) (Overruns: 274) release_console_sem+0x225/0x230 -> wake_up_klogd (316 ns) (Overruns: 274) con_flush_chars+0x39/0x40 -> release_console_sem (2996 ns) (Overruns: 274) con_write+0x22/0x30 -> con_flush_chars (46067 ns) (Overruns: 274) n_tty_write+0x1cc/0x360 -> con_write (292670 ns) (Overruns: 274) smp_apic_timer_interrupt+0x2a/0x90 -> native_apic_mem_write (330 ns) (Overruns: 274) irq_enter+0x17/0x70 -> idle_cpu (413 ns) (Overruns: 274) smp_apic_timer_interrupt+0x2f/0x90 -> irq_enter (1525 ns) (Overruns: 274) ktime_get_ts+0x40/0x70 -> getnstimeofday (465 ns) (Overruns: 274) ktime_get_ts+0x60/0x70 -> set_normalized_timespec (436 ns) (Overruns: 274) ktime_get+0x16/0x30 -> ktime_get_ts (2501 ns) (Overruns: 274) hrtimer_interrupt+0x77/0x1a0 -> ktime_get (3439 ns) (Overruns: 274) Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 0619faf657806b943e6acf51f60f1cd023a96c78 Author: Frederic Weisbecker Date: Mon Nov 17 19:26:30 2008 +0100 tracing/ftrace: make nop tracer using tracer flags Impact: give an example on how to use specific tracer flags This patch propose to use the nop tracer to provide an example for using the tracer's custom flags implementation. V2: replace structures and defines just after the headers includes for cleanliness. V3: replace defines by enum values. Signed-off-by: Frederic Weisbecker Acked-by: Steven Noonan Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit adf9f19574334c9a29a2bc956009fcac7edf1a6b Author: Frederic Weisbecker Date: Mon Nov 17 19:23:42 2008 +0100 tracing/ftrace: implement a set_flag callback for tracers Impact: give a way to send specific messages to tracers The current implementation of tracing uses some flags to control the output of general tracers. But we have no way to implement custom flags handling for a specific tracer. This patch proposes a new callback for the struct tracer which called set_flag and a structure that represents a 32 bits variable flag. A tracer can implement a struct tracer_flags on which it puts the initial value of the flag integer. Than it can place a range of flags with their name and their flag mask on the flag integer. The structure that implement a single flag is called struct tracer_opt. These custom flags will be available through the trace_options file like the general tracing flags. Changing their value is done like the other general flags. For example if you have a flag that calls "foo", you can activate it by writing "foo" or "nofoo" on trace_options. Note that the set_flag callback is optional and is only needed if you want the flags changing to be signaled to your tracer and let it to accept or refuse their assignment. V2: Some arrangements in coding style.... Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit a581780aa17f9027c422cb2d10f0bd88135c36f5 Merge: af9f341a94482594ac28cb5b07c655b458bfe84e c5d08bb567874e410210cf7d21a25f28fcceb0a7 Author: Takashi Iwai Date: Tue Nov 18 10:57:07 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda commit af9f341a94482594ac28cb5b07c655b458bfe84e Author: Takashi Iwai Date: Tue Nov 18 10:38:56 2008 +0100 ALSA: hda - Fix restore of pin configs at resume for STAC/IDT codecs Fixed the restore of pin configs at resume for some STAC/IDT codec models. These models set explicitly the pin configs after the default init configs, and these aren't restored properly at resume. This patch introduces two changes: - Allocate always pin_configs array in stac_spec so that the driver can overwrite the value freely - Introduce stac_change_pin_config() to change the pin config value Signed-off-by: Takashi Iwai commit 2c885878c1b29293f04cfb4a5bd285c969148a8b Author: Takashi Iwai Date: Tue Nov 18 09:36:55 2008 +0100 ALSA: hda - Use init callback in stac92xx_resume() Call the init callback and remove duplicated codes in stac92xx_resume(). This also fixes the missing initialization such as digital I/O pins. Signed-off-by: Takashi Iwai commit e4973e1e5a42072ce88736ba0e39e4b8fc6c3c44 Author: Takashi Iwai Date: Tue Nov 18 09:32:42 2008 +0100 ALSA: hda - Create jack detection elements in build_controls The jack detection input elements should be created in build_controls callback instead of init callback because init can be called multiple times by suspend/resume and power-saving. Signed-off-by: Takashi Iwai commit f3a5c547012a09f38f7c27b17a8e3150b69cd259 Merge: e50a906e0200084f04f8f3b7c3a14b0442d1347f 4e14e833ac3b97a4aa8803eea49f899adc5bb5f4 Author: James Morris Date: Tue Nov 18 18:52:37 2008 +1100 Merge branch 'master' into next Conflicts: fs/cifs/misc.c Merge to resolve above, per the patch below. Signed-off-by: James Morris diff --cc fs/cifs/misc.c index ec36410,addd1dc..0000000 --- a/fs/cifs/misc.c +++ b/fs/cifs/misc.c @@@ -347,13 -338,13 +338,13 @@@ header_assemble(struct smb_hdr *buffer /* BB Add support for establishing new tCon and SMB Session */ /* with userid/password pairs found on the smb session */ /* for other target tcp/ip addresses BB */ - if (current->fsuid != treeCon->ses->linux_uid) { + if (current_fsuid() != treeCon->ses->linux_uid) { cFYI(1, ("Multiuser mode and UID " "did not match tcon uid")); - read_lock(&GlobalSMBSeslock); - list_for_each(temp_item, &GlobalSMBSessionList) { - ses = list_entry(temp_item, struct cifsSesInfo, cifsSessionList); + read_lock(&cifs_tcp_ses_lock); + list_for_each(temp_item, &treeCon->ses->server->smb_ses_list) { + ses = list_entry(temp_item, struct cifsSesInfo, smb_ses_list); - if (ses->linux_uid == current->fsuid) { + if (ses->linux_uid == current_fsuid()) { if (ses->server == treeCon->ses->server) { cFYI(1, ("found matching uid substitute right smb_uid")); buffer->Uid = ses->Suid; commit 5a209c2d58e70f9bc415b9cdf0e3b9aaefb70371 Merge: 3f8e402f34ecc7d1d00b54703d3baa401b8bdd78 0c726da983de0704254250ef6495ca152e7abcca e270219f4372b58bd3eeac12bd9f7edc592b8f6b Author: Ingo Molnar Date: Tue Nov 18 08:52:13 2008 +0100 Merge branches 'tracing/branch-tracer' and 'tracing/urgent' into tracing/core commit 5f1e71b1cc2cc788c0f452772e2ce5e7430c40c2 Author: Wu Fengguang Date: Tue Nov 18 11:47:53 2008 +0800 ALSA: ELD proc interface for HDMI sinks Create /proc/asound/card/eld# to reflect the audio configurations and capabilities of the attached HDMI sink. Some notes: - Shall we show an empty file if the ELD content is not valid? Well it's not that simple. There could be partially populated ELD, and there may be malformed ELD provided by buggy drivers/monitors. So expose ELD as it is. - The ELD retrieval routines rely on the Intel HDA interface, others are/could be universal and independent ones. - How do we name the proc file? If there are going to be two HDMI pins per codec, then the current naming scheme (eld#) will fail. Luckily the user space dependencies should be minimal, so it would be trivial to do the rename if that happens. - The ELD proc file content is designed to be easy for scripts and human reading. Its lines all have the pattern: \t[\t]* where is a keyword in c language, while could be any contents, including white spaces. could also be a null value. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 7f4a9f43427793bfe4d42e71f42e2b551bcfe354 Author: Wu Fengguang Date: Tue Nov 18 11:47:52 2008 +0800 ALSA: create hda_eld.c for ELD routines and proc interface ELD handling routines can be shared by all HDMI codecs, and they are large enough to make a standalone source file. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 33deeca3bb6a945677d70876ea9d044fc5797eb3 Author: Wu Fengguang Date: Tue Nov 18 11:47:51 2008 +0800 ALSA: introduce snd_print_pcm_rates() We want to share some code with print_pcm_rates(), so extract a common routine snd_print_pcm_rates() from it. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 2eca83ba9cc6f811f8c63314b22b4bc0532e2207 Author: Wu Fengguang Date: Tue Nov 18 10:21:55 2008 +0800 ALSA: hda: remove redundant get_amp_nid() Remove get_amp_nid(): it duplicates the one defined in hda_local.h Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit bc4a68fed4b4c01005ef3c71ede6a8cbe91b7dc9 Author: Risto Suominen Date: Tue Nov 18 07:35:14 2008 +0100 ALSA: snd-powermac: enable mic on iMac G4 Allow input from microphone on iMac G4 Flat-panel (Tumbler). Signed-off-by: Risto Suominen Signed-off-by: Takashi Iwai commit 54ac14a8e982ae6c7ac71ee2b0d0173b974509e2 Author: Yinghai Lu Date: Mon Nov 17 15:19:53 2008 -0800 x86: fix wakeup_cpu with numaq/es7000, v2, fix Impact: fix wakeup_secondary_cpu with hotplug We can not put that into x86_quirks, because that is __initdata. So try to move that to genapic, and add update_genapic in x86_quirks. later we even could use that stub to: 1. autodetect CONFIG_ES7000_CLUSTERED_APIC 2. more correct inquire_remote_apic with apic_verbosity setting. Signed-off-by: Yinghai Lu Signed-off-by: Ingo Molnar commit 8d702f2376d25ab277c38b57015f4aa990bc7f16 Author: Mark Brown Date: Mon Nov 17 21:42:01 2008 +0000 ASoC: Build tlv320aic23 cleanly Also merge down a couple of last minute style changes that got lost in the shuffle. Signed-off-by: Mark Brown commit 2adb9833d1782262c20b21457d645163928cf2a2 Author: Mark Brown Date: Mon Nov 17 17:11:14 2008 +0000 ASoC: Manage VMID mode for WM8990 A small additional power saving can be achieved for the WM8990 by maintaining VMID using a 2*250k divider when in standby mode. Signed-off-by: Mark Brown commit be1b87c70af69acfadb8a27a7a76dfb61de92643 Author: Mark Brown Date: Mon Nov 17 17:09:34 2008 +0000 ASoC: Enable WM8990 ADC clocking workaround Enable a hardware workaround which avoids problems with the clocking of the ADCs in certain configurations. Signed-off-by: Mark Brown commit ba533e95b929c577d69237692ee588001347be8a Author: Mark Brown Date: Mon Nov 17 16:59:24 2008 +0000 ASoC: Allow writes to uncached registers in WM8990 Only fully documented registers are cached in the WM8990 but additional registers exist. Signed-off-by: Mark Brown commit 569712b2b0970fa5b19673544d62ae661d04a220 Author: Yinghai Lu Date: Sun Nov 16 03:12:49 2008 -0800 x86: fix wakeup_cpu with numaq/es7000, v2 Impact: fix secondary-CPU wakeup/init path with numaq and es7000 While looking at wakeup_secondary_cpu for WAKE_SECONDARY_VIA_NMI: |#ifdef WAKE_SECONDARY_VIA_NMI |/* | * Poke the other CPU in the eye via NMI to wake it up. Remember that the normal | * INIT, INIT, STARTUP sequence will reset the chip hard for us, and this | * won't ... remember to clear down the APIC, etc later. | */ |static int __devinit |wakeup_secondary_cpu(int logical_apicid, unsigned long start_eip) |{ | unsigned long send_status, accept_status = 0; | int maxlvt; |... | if (APIC_INTEGRATED(apic_version[phys_apicid])) { | maxlvt = lapic_get_maxlvt(); I noticed that there is no warning about undefined phys_apicid... because WAKE_SECONDARY_VIA_NMI and WAKE_SECONDARY_VIA_INIT can not be defined at the same time. So NUMAQ is using wrong wakeup_secondary_cpu. WAKE_SECONDARY_VIA_NMI, WAKE_SECONDARY_VIA_INIT and WAKE_SECONDARY_VIA_MIP are variants of a weird and fragile preprocessor-driven "HAL" mechanisms to specify the kind of secondary-CPU wakeup strategy a given x86 kernel will use. The vast majority of systems want to use INIT for secondary wakeup - NUMAQ uses an NMI, (old-style-) ES7000 uses 'MIP' (a firmware driven in-memory flag to let secondaries continue). So convert these mechanisms to x86_quirks and add a ->wakeup_secondary_cpu() method to specify the rare exception to the sane default. Extend genapic accordingly as well, for 32-bit. While looking further, I noticed that functions in wakecup.h for numaq and es7000 are different to the default in mach_wakecpu.h - but smpboot.c will only use default mach_wakecpu.h with smphook.h. So we need to add mach_wakecpu.h for mach_generic, to properly support numaq and es7000, and vectorize the following SMP init methods: int trampoline_phys_low; int trampoline_phys_high; void (*wait_for_init_deassert)(atomic_t *deassert); void (*smp_callin_clear_local_apic)(void); void (*store_NMI_vector)(unsigned short *high, unsigned short *low); void (*restore_NMI_vector)(unsigned short *high, unsigned short *low); void (*inquire_remote_apic)(int apicid); Signed-off-by: Yinghai Lu Signed-off-by: Ingo Molnar commit 4dc06f9633444f426ef9960c53426f2d2ded64ac Author: Pablo Neira Ayuso Date: Mon Nov 17 16:01:42 2008 +0100 netfilter: nf_conntrack: connection tracking helper name persistent aliases This patch adds the macro MODULE_ALIAS_NFCT_HELPER that defines a way to provide generic and persistent aliases for the connection tracking helpers. This next patch requires this patch. Signed-off-by: Pablo Neira Ayuso Signed-off-by: Patrick McHardy commit 528a3a6f67d4fbe708b9f306be194e78b29e8d7a Author: Pablo Neira Ayuso Date: Mon Nov 17 16:00:40 2008 +0100 netfilter: ctnetlink: get rid of module refcounting in ctnetlink This patch replaces the unnecessary module refcounting with the read-side locks. With this patch, all the dump and fill_info function are called under the RCU read lock. Based on a patch from Fabian Hugelshofer. Signed-off-by: Pablo Neira Ayuso Signed-off-by: Patrick McHardy commit bfe2967735e0e0f650bf698a5683db2b6cf4cfd7 Author: Pablo Neira Ayuso Date: Mon Nov 17 15:55:48 2008 +0100 netfilter: ctnetlink: use EOPNOTSUPP instead of EINVAL if the conntrack has no helper This patch changes the return value if the conntrack has no helper assigned. Instead of EINVAL, which is reserved for malformed messages, it returns EOPNOTSUPP. Signed-off-by: Pablo Neira Ayuso Signed-off-by: Patrick McHardy commit 238ede8160443a32379fd8f9eb88d00456a09bb4 Author: Pablo Neira Ayuso Date: Mon Nov 17 15:53:33 2008 +0100 netfilter: ctnetlink: use nf_conntrack_get instead of atomic_inc Use nf_conntrack_get instead of the direct call to atomic_inc. Signed-off-by: Pablo Neira Ayuso Signed-off-by: Patrick McHardy commit 7ad933d7a6677c20ce1bdb17425e732cf1ebee8a Author: Christian Pellegrin Date: Sat Nov 15 08:58:32 2008 +0100 ASoC: Machine driver for for s3c24xx with uda134x Signed-off-by: Christian Pellegrin Signed-off-by: Mark Brown commit 1cad1de1b216b355a60d907c103b2daf1a285345 Author: Christian Pellegrin Date: Sat Nov 15 08:58:16 2008 +0100 ASoC: UDA134x codec driver Signed-off-by: Christian Pellegrin Signed-off-by: Mark Brown commit 0c726da983de0704254250ef6495ca152e7abcca Author: Aneesh Kumar K.V Date: Sun Nov 16 16:07:58 2008 +0530 tracing: branch tracer, fix writing to trace/trace_options Impact: fix trace_options behavior writing to trace/trace_options use the index of the array to find the value of the flag. With branch tracer flag defined conditionally, this breaks writing to trace_options with branch tracer disabled. Signed-off-by: Aneesh Kumar K.V Signed-off-by: Ingo Molnar commit 6e5d9db271ab57789b09bcc61083ab71b7eabea9 Author: Peter Ujfalusi Date: Fri Nov 14 08:57:28 2008 +0200 ASoC: Fix for master playback/capture volume range for TWL4030 codec FGAIN for playback is in range of 0-0x3f, while for capture GAIN it is in the range of 0-0x1f. The original value of 128 (0x7f) would modify the CGAIN also for playback. Signed-off-by: Peter Ujfalusi Acked-by: Steve Sakoman Signed-off-by: Mark Brown commit 9a57f7fabd383920585ed8b74eacd117c6551f2d Author: Eric Dumazet Date: Mon Nov 17 02:41:00 2008 -0800 net: sctp should update its inuse counter This patch is a preparation to namespace conversion of /proc/net/protocols In order to have relevant information for SCTP protocols, we should use sock_prot_inuse_add() to update a (percpu and pernamespace) counter of inuse sockets. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit a8076d8db98de6da61394b2e942320e4612643ac Author: Eric Dumazet Date: Mon Nov 17 02:38:49 2008 -0800 net: af_unix should update its inuse counter This patch is a preparation to namespace conversion of /proc/net/protocols In order to have relevant information for UNIX protocol, we should use sock_prot_inuse_add() to update a (percpu and pernamespace) counter of inuse sockets. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 0bd7b79851d0f74b24a9ce87d088f2e7c718f668 Author: Alexander van Heukelum Date: Sun Nov 16 15:29:00 2008 +0100 x86: entry_64.S: remove whitespace at end of lines Impact: cleanup All blame goes to: color white,red "[^[:graph:]]+$" in .nanorc ;). Signed-off-by: Alexander van Heukelum Signed-off-by: Ingo Molnar commit 9dacc71ff31a008d1e689fc824d31f6696454f68 Merge: 19f47c634ea8c5a10ff7bb1a08c52fd0f49bc54c 9bf1a2445f3c569098b8de7097ca324e65abecc2 Author: Ingo Molnar Date: Mon Nov 17 10:46:18 2008 +0100 Merge commit 'v2.6.28-rc5' into x86/cleanups commit 796359d150356adabb677d708a4e66a09d29d9d8 Author: Wu Fengguang Date: Mon Nov 17 16:57:33 2008 +0800 ALSA: hda-intel: reorder HDMI audio enabling sequence Reorder HDMI audio enabling sequence so that 1) the sink knows about the coming audio stream 2) unmute 3) start transferring audio samples The theory is that in the path A=>B=>C, we first make C ready, and then enable B, and lastly allow A to send audio samples. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit c0cea0d09d15350c398e2951e7cf4d6f0fc98977 Author: Matthew Ranostay Date: Sun Nov 16 11:42:34 2008 -0500 ALSA: hda: STAC_DELL_M6 EAPD Add support for EAPD on system suspend and disabling EAPD on headphone jack detection for STAC_DELL_M6 laptops. Signed-off-by: Matthew Ranostay Signed-off-by: Takashi Iwai commit 3ab909351a3c653a879a35b3342979ac483c0460 Author: Wu Fengguang Date: Mon Nov 17 09:51:09 2008 +0100 ALSA: hda: alc883 model for ASUS P5Q-EM boards Add a new alc883 model ALC1200_ASUS_P5Q for ASUS P5Q-EM boards. It is the same as ALC883_6ST_DIG except that the SPDIF digital output nid is 0x10. Tested-by: Andrei Tanas Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit 3f8e402f34ecc7d1d00b54703d3baa401b8bdd78 Merge: 072b40a15616fe6bea68466e6bffcfcbf5c8f26f e7d3737ea1b102030f44e96c97754101e41515f0 227a837567e339c74d9d4243d03a29bd943a018c 5821e1b74f0d08952cb5da4bfd2d9a388d8df58e Author: Ingo Molnar Date: Mon Nov 17 09:36:22 2008 +0100 Merge branches 'tracing/branch-tracer', 'tracing/ftrace', 'tracing/function-return-tracer', 'tracing/tracepoints' and 'tracing/urgent' into tracing/core commit 248969ae31e1b3276fc4399d67ce29a5d81e6fd9 Author: Eric Dumazet Date: Mon Nov 17 00:00:30 2008 -0800 net: af_unix can make unix_nr_socks visbile in /proc Currently, /proc/net/protocols displays socket counts only for TCP/TCPv6 protocols We can provide unix_nr_socks for free here, this counter being already maintained in af_unix Before patch : # grep UNIX /proc/net/protocols UNIX 428 -1 -1 NI 0 yes kernel After patch : # grep UNIX /proc/net/protocols UNIX 428 98 -1 NI 0 yes kernel Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit c3ccc12339afa2633c72131e2aa97d52d9ca1b8a Author: Wang Chen Date: Sun Nov 16 23:06:39 2008 -0800 netdevice chelsio: Convert directly reference of netdev->priv Several netdev share one adapter here. We use netdev->ml_priv of the netdevs point to the first netdev's priv. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 4d24b52ac5085ef8a264d044f1b302b7c029887a Author: Alexey Dobriyan Date: Sun Nov 16 23:01:49 2008 -0800 ematch: simpler tcf_em_unregister() Simply delete ops from list and let list debugging do the job. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 6eba6a372b501aa3cdfb7df21a8364099125b9c4 Author: Eric Dumazet Date: Sun Nov 16 22:58:44 2008 -0800 net: Cleanup of af_unix This is a pure cleanup of net/unix/af_unix.c to meet current code style standards Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 191029963630719e867d8bd0c315d32c822622cb Author: Gerrit Renker Date: Sun Nov 16 22:56:55 2008 -0800 dccp: Tidy up setsockopt calls This splits the setsockopt calls into two groups, depending on whether an integer argument (val) is required and whether routines being called do their own locking. Some options (such as setting the CCID) use u8 rather than int, so that for these the test with regard to integer-sizeof can not be used. The second switch-case statement now only has those statements which need locking and which make use of `val'. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Acked-by: Arnaldo Carvalho de Melo Reviewed-by: Eugene Teo Signed-off-by: David S. Miller commit dd9c0e363cef32b7d6f23d4c87e8dfe4f91fd1c5 Author: Gerrit Renker Date: Sun Nov 16 22:55:08 2008 -0800 dccp: Deprecate Ack Ratio sysctl This patch deprecates the Ack Ratio sysctl, since * Ack Ratio is entirely ignored by CCID-3 and CCID-4, * Ack Ratio currently doesn't work in CCID-2 (i.e. is always set to 1); * even if it would work in CCID-2, there is no point for a user to change it: - Ack Ratio is constrained by cwnd (RFC 4341, 6.1.2), - if Ack Ratio > cwnd, the system resorts to spurious RTO timeouts (since waiting for Acks which will never arrive in this window), - cwnd is not a user-configurable value. The only reasonable place for Ack Ratio is to print it for debugging. It is planned to do this later on, as part of e.g. dccp_probe. With this patch Ack Ratio is now under full control of feature negotiation: * Ack Ratio is resolved as a dependency of the selected CCID; * if the chosen CCID supports it (i.e. CCID == CCID-2), Ack Ratio is set to the default of 2, following RFC 4340, 11.3 - "New connections start with Ack Ratio 2 for both endpoints"; * what happens then is part of another patch set, since it concerns the dynamic update of Ack Ratio while the connection is in full flight. Thanks to Tomasz Grobelny for discussion leading up to this patch. Signed-off-by: Gerrit Renker Acked-by: Arnaldo Carvalho de Melo Signed-off-by: David S. Miller commit 29450559849da7066813601effb7666966869853 Author: Gerrit Renker Date: Sun Nov 16 22:53:48 2008 -0800 dccp: Feature negotiation for minimum-checksum-coverage This provides feature negotiation for server minimum checksum coverage which so far has been missing. Since sender/receiver coverage values range only from 0...15, their type has also been reduced in size from u16 to u4. Feature-negotiation options are now generated for both sender and receiver coverage, i.e. when the peer has `forgotten' to enable partial coverage then feature negotiation will automatically enable (negotiate) the partial coverage value for this connection. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 49aebc66d6b896f9c7c5739d85c4548c00015aa7 Author: Gerrit Renker Date: Sun Nov 16 22:51:23 2008 -0800 dccp: Deprecate old setsockopt framework The previous setsockopt interface, which passed socket options via struct dccp_so_feat, is complicated/difficult to use. Continuing to support it leads to ugly code since the old approach did not distinguish between NN and SP values. This patch removes the old setsockopt interface and replaces it with two new functions to register NN/SP values for feature negotiation. These are essentially wrappers around the internal __feat_register functions, with checking added to avoid * wrong usage (type); * changing values while the connection is in progress. Signed-off-by: Gerrit Renker Signed-off-by: David S. Miller commit 0c1168398ecbfacbb27203b281bde20ec9f78017 Author: Gerrit Renker Date: Sun Nov 16 22:49:52 2008 -0800 dccp: Mechanism to resolve CCID dependencies This adds a hook to resolve features whose value depends on the choice of CCID. It is done at the server since it can only be done after the CCID values have been negotiated; i.e. the client will add its CCID preference list on the Change options sent in the Request, which will be reconciled with the local preference list of the server. The concept is documented on http://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/feature_negotiation/\ implementation_notes.html#ccid_dependencies Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 3f2c31d90327f21d76d296af34aa4ca547932ff4 Author: Mark McLoughlin Date: Sun Nov 16 22:41:34 2008 -0800 virtio_net: VIRTIO_NET_F_MSG_RXBUF (imprive rcv buffer allocation) If segmentation offload is enabled by the host, we currently allocate maximum sized packet buffers and pass them to the host. This uses up 20 ring entries, allowing us to supply only 20 packet buffers to the host with a 256 entry ring. This is a huge overhead when receiving small packets, and is most keenly felt when receiving MTU sized packets from off-host. The VIRTIO_NET_F_MRG_RXBUF feature flag is set by hosts which support using receive buffers which are smaller than the maximum packet size. In order to transfer large packets to the guest, the host merges together multiple receive buffers to form a larger logical buffer. The number of merged buffers is returned to the guest via a field in the virtio_net_hdr. Make use of this support by supplying single page receive buffers to the host. On receive, we extract the virtio_net_hdr, copy 128 bytes of the payload to the skb's linear data buffer and adjust the fragment offset to point to the remaining data. This ensures proper alignment and allows us to not use any paged data for small packets. If the payload occupies multiple pages, we simply append those pages as fragments and free the associated skbs. This scheme allows us to be efficient in our use of ring entries while still supporting large packets. Benchmarking using netperf from an external machine to a guest over a 10Gb/s network shows a 100% improvement from ~1Gb/s to ~2Gb/s. With a local host->guest benchmark with GSO disabled on the host side, throughput was seen to increase from 700Mb/s to 1.7Gb/s. Based on a patch from Herbert Xu. Signed-off-by: Mark McLoughlin Signed-off-by: Rusty Russell (use netdev_priv) Signed-off-by: David S. Miller commit 0276b4972e932ea8bf2941dcd37e9caac5652ed7 Author: Mark McLoughlin Date: Sun Nov 16 22:40:36 2008 -0800 virtio_net: hook up the set-tso ethtool op Seems like an oversight that we have set-tx-csum and set-sg hooked up, but not set-tso. Also leads to the strange situation that if you e.g. disable tx-csum, then tso doesn't get disabled. Signed-off-by: Mark McLoughlin Signed-off-by: Rusty Russell Signed-off-by: David S. Miller commit 0a888fd1f6320d1d9318c58de9bca3cef41546d6 Author: Mark McLoughlin Date: Sun Nov 16 22:39:18 2008 -0800 virtio_net: Recycle some more rx buffer pages Each time we re-fill the recv queue with buffers, we allocate one too many skbs and free it again when adding fails. We should recycle the pages allocated in this case. A previous version of this patch made trim_pages() trim trailing unused pages from skbs with some paged data, but this actually caused a barely measurable slowdown. Signed-off-by: Mark McLoughlin Signed-off-by: Rusty Russell (use netdev_priv) Signed-off-by: David S. Miller commit 908cd2dabbfbbefb02f6b908a1188a62e685136a Author: Alexey Dobriyan Date: Sun Nov 16 19:50:35 2008 -0800 net: use %pF for /proc/net/ptype Technically, patch changes format for modules, but I think nobody cares. -86dd :ipv6:ipv6_rcv+0x0 +86dd ipv6_rcv+0x0/0x400 [ipv6] Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 5635c10d976716ef47ae441998aeae144c7e7387 Author: Eric Dumazet Date: Sun Nov 16 19:46:36 2008 -0800 net: make sure struct dst_entry refcount is aligned on 64 bytes As found in the past (commit f1dd9c379cac7d5a76259e7dffcd5f8edc697d17 [NET]: Fix tbench regression in 2.6.25-rc1), it is really important that struct dst_entry refcount is aligned on a cache line. We cannot use __atribute((aligned)), so manually pad the structure for 32 and 64 bit arches. for 32bit : offsetof(truct dst_entry, __refcnt) is 0x80 for 64bit : offsetof(truct dst_entry, __refcnt) is 0xc0 As it is not possible to guess at compile time cache line size, we use a generic value of 64 bytes, that satisfies many current arches. (Using 128 bytes alignment on 64bit arches would waste 64 bytes) Add a BUILD_BUG_ON to catch future updates to "struct dst_entry" dont break this alignment. "tbench 8" is 4.4 % faster on a dual quad core (HP BL460c G1), Intel E5450 @3.00GHz (2350 MB/s instead of 2250 MB/s) Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 536533e69e3e4a9f0174509813f8df28970d6ebe Author: Eric Dumazet Date: Sun Nov 16 19:41:14 2008 -0800 rcu: documents rculist_nulls Adds Documentation/RCU/rculist_nulls.txt file to describe how 'nulls' end-of-list can help in some RCU algos. Signed-off-by: Eric Dumazet Acked-by: Peter Zijlstra Signed-off-by: David S. Miller commit 3ab5aee7fe840b5b1b35a8d1ac11c3de5281e611 Author: Eric Dumazet Date: Sun Nov 16 19:40:17 2008 -0800 net: Convert TCP & DCCP hash tables to use RCU / hlist_nulls RCU was added to UDP lookups, using a fast infrastructure : - sockets kmem_cache use SLAB_DESTROY_BY_RCU and dont pay the price of call_rcu() at freeing time. - hlist_nulls permits to use few memory barriers. This patch uses same infrastructure for TCP/DCCP established and timewait sockets. Thanks to SLAB_DESTROY_BY_RCU, no slowdown for applications using short lived TCP connections. A followup patch, converting rwlocks to spinlocks will even speedup this case. __inet_lookup_established() is pretty fast now we dont have to dirty a contended cache line (read_lock/read_unlock) Only established and timewait hashtable are converted to RCU (bind table and listen table are still using traditional locking) Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 88ab1932eac721c6e7336708558fa5ed02c85c80 Author: Eric Dumazet Date: Sun Nov 16 19:39:21 2008 -0800 udp: Use hlist_nulls in UDP RCU code This is a straightforward patch, using hlist_nulls infrastructure. RCUification already done on UDP two weeks ago. Using hlist_nulls permits us to avoid some memory barriers, both at lookup time and delete time. Patch is large because it adds new macros to include/net/sock.h. These macros will be used by TCP & DCCP in next patch. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit bbaffaca4810de1a25e32ecaf836eeaacc7a3d11 Author: Eric Dumazet Date: Sun Nov 16 19:37:55 2008 -0800 rcu: Introduce hlist_nulls variant of hlist hlist uses NULL value to finish a chain. hlist_nulls variant use the low order bit set to 1 to signal an end-of-list marker. This allows to store many different end markers, so that some RCU lockless algos (used in TCP/UDP stack for example) can save some memory barriers in fast paths. Two new files are added : include/linux/list_nulls.h - mimics hlist part of include/linux/list.h, derived to hlist_nulls variant include/linux/rculist_nulls.h - mimics hlist part of include/linux/rculist.h, derived to hlist_nulls variant Only four helpers are declared for the moment : hlist_nulls_del_init_rcu(), hlist_nulls_del_rcu(), hlist_nulls_add_head_rcu() and hlist_nulls_for_each_entry_rcu() prefetches() were removed, since an end of list is not anymore NULL value. prefetches() could trigger useless (and possibly dangerous) memory transactions. Example of use (extracted from __udp4_lib_lookup()) struct sock *sk, *result; struct hlist_nulls_node *node; unsigned short hnum = ntohs(dport); unsigned int hash = udp_hashfn(net, hnum); struct udp_hslot *hslot = &udptable->hash[hash]; int score, badness; rcu_read_lock(); begin: result = NULL; badness = -1; sk_nulls_for_each_rcu(sk, node, &hslot->head) { score = compute_score(sk, net, saddr, hnum, sport, daddr, dport, dif); if (score > badness) { result = sk; badness = score; } } /* * if the nulls value we got at the end of this lookup is * not the expected one, we must restart lookup. * We probably met an item that was moved to another chain. */ if (get_nulls_value(node) != hash) goto begin; if (result) { if (unlikely(!atomic_inc_not_zero(&result->sk_refcnt))) result = NULL; else if (unlikely(compute_score(result, net, saddr, hnum, sport, daddr, dport, dif) < badness)) { sock_put(result); goto begin; } } rcu_read_unlock(); return result; Signed-off-by: Eric Dumazet Acked-by: Peter Zijlstra Signed-off-by: David S. Miller commit e8b2dfe9b4501ed0047459b2756ba26e5a940a69 Author: Balazs Scheidler Date: Sun Nov 16 19:32:39 2008 -0800 TPROXY: implemented IP_RECVORIGDSTADDR socket option In case UDP traffic is redirected to a local UDP socket, the originally addressed destination address/port cannot be recovered with the in-kernel tproxy. This patch adds an IP_RECVORIGDSTADDR sockopt that enables a IP_ORIGDSTADDR ancillary message in recvmsg(). This ancillary message contains the original destination address/port of the packet being received. Signed-off-by: Balazs Scheidler Signed-off-by: David S. Miller commit 8164f1b79731ad8ad9c713dc53d587a3b746f82f Author: Ben Greear Date: Sun Nov 16 19:19:38 2008 -0800 ipv4: Fix ARP behavior with many mac-vlans Ben Greear wrote: > I have 500 mac-vlans on a system talking to 500 other > mac-vlans. My problem is that the arp-table gets extremely > huge because every time an arp-request comes in on all mac-vlans, > a stale arp entry is added for each mac-vlan. I have filtering > turned on, but that doesn't help because the neigh_event_ns call > below will cause a stale neighbor entry to be created regardless > of whether a replay will be sent or not. > Maybe the neigh_event code should be below the checks for dont_send, > and only create check neigh_event_ns if we are !dont_send? The attached patch makes it work much better for me. The patch will cause the code to NOT create a stale neighbor entry if we are not going to respond to the ARP request. The old code *would* create a stale entry even if we are not going to respond. Signed-off-by: Ben Greear Signed-off-by: David S. Miller commit 6ea7ae1d0fc02a6c4ccd27e43346f67c44226e7a Author: Alexander Duyck Date: Fri Nov 14 06:54:36 2008 +0000 e1000e: enable ECC correction on 82571 silicon This change enables ECC correction for the packet buffer on all 82571 silicon. Signed-off-by: Alexander Duyck Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit f004f3ea34209d8b836426b26ade3dc502631b18 Author: Paulius Zaleckas Date: Fri Nov 14 00:24:34 2008 +0000 phylib: make mdio-gpio work without OF (v4) make mdio-gpio work with non OpenFirmware gpio implementation. Aditional changes to mdio-gpio: - use gpio_request() and gpio_free() - place irq[] array in struct mdio_gpio_info - add module description, author and license - add note about compiling this driver as module - rename mdc and mdio function (were ugly names) - change MII to MDIO in bus name - add __init __exit to module (un)loading functions - probe fails if no phys added to the bus - kzalloc bitbang with sizeof(*bitbang) Changes since v3: - keep bus naming "%x" to be compatible with existing drivers. Changes since v2: - more #ifdefs reduction - platform driver will be registered on OF platforms also - unified platform and OF bus_id to phy%i Changes since v1: - removed NO_IRQ - reduced #idefs Laurent, please test this driver under OF. Signed-off-by: Paulius Zaleckas Signed-off-by: David S. Miller commit 72af187f216ed83c77ca3e6f22dfc9caf72e9347 Author: Paulius Zaleckas Date: Fri Nov 14 00:24:28 2008 +0000 phylib: rename mdio-ofgpio to mdio-gpio Signed-off-by: Paulius Zaleckas Signed-off-by: David S. Miller commit 6817ba2cd22cfed2e93d062dca3d7a82465d693d Author: David S. Miller Date: Sun Nov 16 12:41:35 2008 -0800 dm9000: Fix build error. Reported by Stephen Rothwell: drivers/net/dm9000.c:1450: error: expected ')' before ';' token drivers/net/dm9000.c:1455: error: expected ';' before '}' token Signed-off-by: David S. Miller commit 227a837567e339c74d9d4243d03a29bd943a018c Author: Ingo Molnar Date: Sun Nov 16 09:50:34 2008 +0100 markers/tracpoints: fix non-modular build fix: kernel/marker.c: In function 'marker_module_notify': kernel/marker.c:905: error: 'MODULE_STATE_COMING' undeclared (first use in this function) [...] Signed-off-by: Ingo Molnar commit cda2836dc66f814aecc58370251566e1c225c8d3 Author: David Brownell Date: Sun Nov 16 00:36:08 2008 -0800 pegasus: minor resource shrinkage Make pegasus driver not allocate a workqueue until the driver is bound to some device, which will need that workqueue if the device is brought up. This conserves resources when the driver is linked but there's no pegasus device connected. Also shrink the runtime footprint a smidgeon by moving some init-only code into its proper section, and move an obnoxious (frequent and meaningless) message to be debug-only. Signed-off-by: David Brownell Signed-off-by: David S. Miller commit 74ad0a5421edc6ef13a4059c6076cd7a4f3a1fd5 Author: PJ Waskiewicz Date: Fri Nov 7 12:16:08 2008 +0000 ixgbe: Fix usage of netif_*_all_queues() with netif_carrier_{off|on}() netif_carrier_off() is sufficient to stop Tx into the driver. Stopping the Tx queues is redundant and unnecessary. By the same token, netif_carrier_on() will be sufficient to re-enable Tx, so waking the queues is unnecessary. Signed-off-by: Peter P Waskiewicz Jr Signed-off-by: Jeff Kirsher Signed-off-by: David S. Miller commit 0a7ad64531713e33e39af95bdbfb172f4f328b1e Author: Ingo Molnar Date: Sun Nov 16 08:54:36 2008 +0100 tracepoints: format documentation Impact: documentation update Properly format Documentation/tracepoints.txt - it was full of overlong lines and other typographical problems. Signed-off-by: Ingo Molnar commit 0dcf8fe5fe5d7279f1c479fa82f1f1ca6f22e814 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:49 2008 -0500 tracepoints, docs: marker_synchronize_unregister->tracepoint_synchronize_unregister Impact: documentation update. Signed-off-by: Zhaolei Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 8fd88d159031bd238dad1d7186a2030b9f9349de Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:48 2008 -0500 tracepoints: documentation fix for teardown Impact: documentation update Need a tracepoint_synchronize_unregister() before the end of exit() to make sure every probe callers have exited the non preemptible section and thus are not executing the probe code anymore. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 7e066fb870fcd1025ec3ba7bbde5d541094f4ce1 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:47 2008 -0500 tracepoints: add DECLARE_TRACE() and DEFINE_TRACE() Impact: API *CHANGE*. Must update all tracepoint users. Add DEFINE_TRACE() to tracepoints to let them declare the tracepoint structure in a single spot for all the kernel. It helps reducing memory consumption, especially when declaring a lot of tracepoints, e.g. for kmalloc tracing. *API CHANGE WARNING*: now, DECLARE_TRACE() must be used in headers for tracepoint declarations rather than DEFINE_TRACE(). This is the sane way to do it. The name previously used was misleading. Updates scheduler instrumentation to follow this API change. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 32f85742778dfc2c74975cf0b9f5bdb13470cb32 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:46 2008 -0500 tracepoints: use modules notifiers Impact: cleanup Use module notifiers for tracepoint updates rather than adding a hook in module.c. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 5f382671def7cb9c0f4b75d586dc5f60dca5e1c3 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:45 2008 -0500 tracepoints: do not put arguments in name Impact: cleanup That's overkill, takes space. We have a global tracepoint registery in header files anyway. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit c420970ef476d7d68df119711700666224001f43 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:44 2008 -0500 tracepoints: use unregister return value Impact: bugfix. Unregistering a tracepoint can fail. Return the error value. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit da7b3eab167091693ad215ad7692f7d0d24d1356 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:43 2008 -0500 tracepoints: use rcu_*_sched_notrace Make sure tracepoints can be called within ftrace callbacks. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit de0baf9ad661ac630a45a50ea1717cc4f4b33ace Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:42 2008 -0500 tracepoints: fix disable Impact: fix race Set the probe array pointer to NULL when the tracepoint is disabled. The probe array point not being NULL could generate a race condition where the reader would dereference a freed pointer. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 2504ea5edfebb14133b8571c20785cdc077e07d2 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:41 2008 -0500 tracepoints: samples, fix teardown Impact: fix a bug in sample tracepoints Need a tracepoint_synchronize_unregister() before the end of exit() to make sure every probe callers have exited the non preemptible section and thus are not executing the probe code anymore. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit a0bca6a59ebc052751eed6e3b182c153495672d8 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:40 2008 -0500 markers: create DEFINE_MARKER and GET_MARKER (new API) Impact: new API. Allow markers to be used only for declaration, without function call associated. Useful to create specialized probes. The problem we had is that two function calls were required when one wanted to put a marker in a tracepoint probe. Now the marker can be used simply for trace data type declaration, leaving the trace write work within the tracepoint probe without any additional function call. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit c1df1bd2c4d4b20c83755a0f41956b57aec4842a Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:39 2008 -0500 markers: auto enable tracepoints (new API : trace_mark_tp()) Impact: new API Add a new API trace_mark_tp(), which declares a marker within a tracepoint probe. When the marker is activated, the tracepoint is automatically enabled. No branch test is used at the marker site, because it would be a duplicate of the branch already present in the tracepoint. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit a419246ac7c2d9282dfd843103702895bb3f3fd7 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:38 2008 -0500 markers: use module notifier Impact: cleanup Use module notifiers instead of adding a hook in module.c. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 021aeb057fc48af03fe5f37d3dda366c0d97aaf3 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:37 2008 -0500 markers: use rcu_*_sched_notrace and notrace Make marker critical code use notrace to make sure they can be used as an ftrace callback. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit e3f8c4b9117d70127a8cab480af83bbfd048a28b Author: Arnaldo Carvalho de Melo Date: Fri Nov 14 17:47:36 2008 -0500 markers: add missing stdargs.h include, needed due to va_list usage Impact: build fix (for future changes) That seemed to cause built issue when marker.h is included early, even though stdargs.h is included in kernel.h. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 2bdba316c989da028a59becf7516c6350ce3c173 Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:35 2008 -0500 markers: fix unregister Impact: fix marker registers/unregister race get_marker() can return a NULL entry because the mutex is released in the middle of those functions. Make sure we check to see if it has been concurrently removed. Signed-off-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 954e100d2275cb2f150f2b18d5cddcdf67b956ac Author: Mathieu Desnoyers Date: Fri Nov 14 17:47:34 2008 -0500 rcu: add rcu_read_*_sched_notrace() Impact: new API, useful for tracepoints and markers. Add _notrace version to rcu_read_*_sched(). Signed-off-by: Mathieu Desnoyers Reviewed-by: Paul E McKenney Signed-off-by: Ingo Molnar commit e7d3737ea1b102030f44e96c97754101e41515f0 Author: Frederic Weisbecker Date: Sun Nov 16 06:02:06 2008 +0100 tracing/function-return-tracer: support for dynamic ftrace on function return tracer This patch adds the support for dynamic tracing on the function return tracer. The whole difference with normal dynamic function tracing is that we don't need to hook on a particular callback. The only pro that we want is to nop or set dynamically the calls to ftrace_caller (which is ftrace_return_caller here). Some security checks ensure that we are not trying to launch dynamic tracing for return tracing while normal function tracing is already running. An example of trace with getnstimeofday set as a filter: ktime_get_ts+0x22/0x50 -> getnstimeofday (2283 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1396 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1382 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1825 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1426 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1464 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1524 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1382 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1382 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1434 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1464 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1502 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1404 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1397 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1051 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1314 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1344 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1163 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1390 ns) ktime_get_ts+0x22/0x50 -> getnstimeofday (1374 ns) Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit b01c746617da5e260803eb10ed64ca043e9a1241 Author: Frederic Weisbecker Date: Sat Nov 15 02:37:44 2008 +0100 tracing/function-return-tracer: add a barrier to ensure return stack index is incremented in memory Impact: fix possible race condition in ftrace function return tracer This fixes a possible race condition if index incrementation is not immediately flushed in memory. Thanks for Andi Kleen and Steven Rostedt for pointing out this issue and give me this solution. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 985809608f758a8d3ddda4ce5a53ed0e57fb9e1b Merge: c91add5fa68ea9b1f2923b3788c5dae0e60e1f6b 1c80025a49855b12fa09bb6db71820e3367b1369 Author: Ingo Molnar Date: Sun Nov 16 07:57:13 2008 +0100 Merge branch 'tracing/ftrace' into tracing/function-return-tracer commit 072b40a15616fe6bea68466e6bffcfcbf5c8f26f Author: Frederic Weisbecker Date: Sun Nov 16 05:59:52 2008 +0100 tracing/branch-tracer: fix a trace recursion on branch tracer Impact: fix crash when enabling the branch-tracer When the branch tracer inserts an event through probe_likely_condition(), it calls local_irq_save() and then results in a trace recursion. local_irq_save() -> trace_hardirqs_off() -> trace_hardirqs_off_caller() -> unlikely() The trace_branch.c file is protected by DISABLE_BRANCH_PROFILING but that doesn't prevent from external call to functions that use unlikely(). My box crashed each time I tried to set this tracer (sudden and hard reboot). Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 1c80025a49855b12fa09bb6db71820e3367b1369 Author: Frederic Weisbecker Date: Sun Nov 16 05:57:26 2008 +0100 tracing/ftrace: change the type of the init() callback Impact: extend the ->init() method with the ability to fail This bring a way to know if the initialization of a tracer successed. A tracer must return 0 on success and a traditional error (ie: -ENOMEM) if it fails. If a tracer fails to init, it is free to print a detailed warn. The tracing api will not and switch to a new tracer will just return the error from the init callback. Note: this will be used for the return tracer. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit e6e7a65aabdb696cf05a56cfd495c49a11fd4cde Author: Frederic Weisbecker Date: Sun Nov 16 05:53:19 2008 +0100 tracing/ftrace: fix unexpected -EINVAL when longest tracer name is set Impact: fix confusing write() -EINVAL when changing the tracer The following commit d9e540762f5cdd89f24e518ad1fd31142d0b9726 remade alive the bug which made the set of a new tracer returning -EINVAL if this is the longest name of tracer. This patch corrects it. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit ee02a2e5c88ca2e4d6921f08d037b46d5bf82641 Author: Steven Rostedt Date: Sat Nov 15 16:31:41 2008 -0500 ftrace: make filtered functions effective on setting Impact: set filtered functions at time the filter is set It can be confusing when the set_filter_functions is set (or cleared) and the functions being recorded by the dynamic tracer does not match. This patch causes the code to be updated if the function tracer is enabled and the filter is changed. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 982c350b9ec4b3564d67f3627a274ae61bbc7e95 Author: Steven Rostedt Date: Sat Nov 15 16:31:41 2008 -0500 ftrace: fix dyn ftrace filter Impact: correct implementation of dyn ftrace filter The old decisions made by the filter algorithm was complex and incorrect. This lead to inconsistent enabling or disabling of functions when the filter was used. This patch simplifies that code and in doing so, corrects the usage of the filters. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 20e5227e9f55ae1969934821ccbf581563785bbe Author: Steven Rostedt Date: Fri Nov 14 16:21:19 2008 -0800 ftrace: allow NULL pointers in mcount_loc Impact: make ftrace_convert_nops() more permissive Due to the way different architecture linkers combine the data sections of the mcount_loc (the section that lists all the locations that call mcount), there may be zeros added in that section. This is usually due to strange alignments that the linker performs, that pads in zeros. This patch makes the conversion code to nops skip any pointer in the mcount_loc section that is NULL. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 31e889098a80ceb3e9e3c555d522b2686a6663c6 Author: Steven Rostedt Date: Fri Nov 14 16:21:19 2008 -0800 ftrace: pass module struct to arch dynamic ftrace functions Impact: allow archs more flexibility on dynamic ftrace implementations Dynamic ftrace has largly been developed on x86. Since x86 does not have the same limitations as other architectures, the ftrace interaction between the generic code and the architecture specific code was not flexible enough to handle some of the issues that other architectures have. Most notably, module trampolines. Due to the limited branch distance that archs make in calling kernel core code from modules, the module load code must create a trampoline to jump to what will make the larger jump into core kernel code. The problem arises when this happens to a call to mcount. Ftrace checks all code before modifying it and makes sure the current code is what it expects. Right now, there is not enough information to handle modifying module trampolines. This patch changes the API between generic dynamic ftrace code and the arch dependent code. There is now two functions for modifying code: ftrace_make_nop(mod, rec, addr) - convert the code at rec->ip into a nop, where the original text is calling addr. (mod is the module struct if called by module init) ftrace_make_caller(rec, addr) - convert the code rec->ip that should be a nop into a caller to addr. The record "rec" now has a new field called "arch" where the architecture can add any special attributes to each call site record. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit d51ad7ac48f991c4a8834485727efa99a691cb87 Author: Steven Rostedt Date: Sat Nov 15 15:48:29 2008 -0500 ftrace: replace raw_local_irq_save with local_irq_save Impact: fix lockdep disabling itself when function tracing is enabled The raw_local_irq_saves used in ftrace is causing problems with lockdep. (it thinks the irq flags are out of sync and disables itself with a warning) The raw ops here are not needed, and the normal local_irq_save is fine. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 918c115410c6cc57033835b6a401e57697f9ea4f Author: Steven Rostedt Date: Fri Nov 14 16:21:19 2008 -0800 ftrace: do not process freed records Impact: keep from converting freed records When the tracer is started or stopped, it converts all code pointed to by the saved records into callers to ftrace or nops. When modules are unloaded, their records are freed, but they still exist within the record pages. This patch changes the code to skip over freed records. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit b17e8a37a13d0e87165054714434534bb7e69f2d Author: Steven Rostedt Date: Fri Nov 14 16:21:19 2008 -0800 ftrace: disable ftrace on anomalies in trace start and stop Impact: robust feature to disable ftrace on start or stop tracing on error Currently only the initial conversion to nops will disable ftrace on an anomaly. But if an anomaly happens on start or stopping of the tracer, it will silently fail. This patch adds a check there too, to disable ftrace and warn if the conversion fails. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit f3c7ac40a99f4044b843e6e2c4f46ab2d354c563 Author: Steven Rostedt Date: Fri Nov 14 16:21:19 2008 -0800 ftrace: remove condition from ftrace_record_ip Impact: let module functions be recorded when dyn ftrace not enabled When dynamic ftrace had a daemon and a hash to record the locations of mcount callers at run time, the recording needed to stop when ftrace was disabled. But now that the recording is done at compile time and the ftrace_record_ip is only called at boot up and when a module is loaded, we no longer need to check if ftrace_enabled is set. In fact, this breaks module load if it is not set because we skip over module functions. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit c91add5fa68ea9b1f2923b3788c5dae0e60e1f6b Merge: d1aaf8cf8afe70a8c2235a565885291fe290c57c b3535c6390f27d04273e4eee0bc687f171fbf5f4 ee51a1de7e3837577412be269e0100038068e691 Author: Ingo Molnar Date: Sun Nov 16 07:28:46 2008 +0100 Merge branches 'tracing/fastboot', 'tracing/ftrace' and 'tracing/urgent' into tracing/core commit e2da9ba570418fb4061f0a5cfe4338be6470c02b Merge: 127e82e3bfaad29e78ff5d4b1c41ab5e2d69c17f c39555d6edd0142972f577405d5259879ecc1635 Author: Takashi Iwai Date: Sat Nov 15 19:05:21 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda Conflicts: sound/pci/hda/patch_sigmatel.c commit e50a906e0200084f04f8f3b7c3a14b0442d1347f Author: Eric Paris Date: Thu Nov 13 18:37:25 2008 -0500 capabilities: define get_vfs_caps_from_disk when file caps are not enabled When CONFIG_SECURITY_FILE_CAPABILITIES is not set the audit system may try to call into the capabilities function vfs_cap_from_file. This patch defines that function so kernels can build and work. Signed-off-by: Eric Paris Signed-off-by: James Morris commit 71cfc9028d762419ce4dea62b4afc9c32c4b4820 Author: Mark Brown Date: Thu Nov 13 14:33:14 2008 +0000 ASoC: Add WM8728 codec driver The WM8728 is a high performance stereo DAC designed for applications such as DVD, home theatre and digital TV. Signed-off-by: Mark Brown commit 2bef901071448e0c86af8edb4797cd5f81b6240d Author: Mark Brown Date: Fri Nov 14 14:40:46 2008 +0000 ASoC: Revert "ASoC: Add new parameter to s3c24xx_pcm_enqueue" This reverts commit 8dc840f88d9c9f75f46d5dbe489242f8a114fab6. Christian Pellegrin reported that on some systems the patch caused DMA to fail which is much more serious than the original skipped audio issue. Further investigation by Dave shows that the behaviour depends on the clock speed of the SoC - a better fix is neeeded. Signed-off-by: Mark Brown commit 127e82e3bfaad29e78ff5d4b1c41ab5e2d69c17f Author: Takashi Iwai Date: Fri Nov 14 14:03:33 2008 +0100 ALSA: hda - Support Headphone and Speaker volumes control on VAIO Split the bound Master control to individual Headphone and Speaker volume controls for VAIO with STAC982x codecs. The Master controls is still created as a vmaster. Signed-off-by: Takashi Iwai commit 8a75f4fb28766878893b4335f4b5743ce9b931fe Author: Takashi Iwai Date: Fri Nov 14 13:58:43 2008 +0100 ALSA: pcsp - Use HRTIMER_CB_IRQSAFE_UNLOCKED HRTIMER_CB_IRQSAFE was removed in the upstream. Try to use HRTIMER_CB_IRQSAFE_UNLOCKED instead. Signed-off-by: Takashi Iwai commit ef711cf1d156428d4c2911b8c86c6ce90519dc45 Author: Eric Dumazet Date: Fri Nov 14 00:53:54 2008 -0800 net: speedup dst_release() During tbench/oprofile sessions, I found that dst_release() was in third position. CPU: Core 2, speed 2999.68 MHz (estimated) Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (Unhalted core cycles) count 100000 samples % symbol name 483726 9.0185 __copy_user_zeroing_intel 191466 3.5697 __copy_user_intel 185475 3.4580 dst_release 175114 3.2648 ip_queue_xmit 153447 2.8608 tcp_sendmsg 108775 2.0280 tcp_recvmsg 102659 1.9140 sysenter_past_esp 101450 1.8914 tcp_current_mss 95067 1.7724 __copy_from_user_ll 86531 1.6133 tcp_transmit_skb Of course, all CPUS fight on the dst_entry associated with 127.0.0.1 Instead of first checking the refcount value, then decrement it, we use atomic_dec_return() to help CPU to make the right memory transaction (ie getting the cache line in exclusive mode) dst_release() is now at the fifth position, and tbench a litle bit faster ;) CPU: Core 2, speed 3000.1 MHz (estimated) Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (Unhalted core cycles) count 100000 samples % symbol name 647107 8.8072 __copy_user_zeroing_intel 258840 3.5229 ip_queue_xmit 258302 3.5155 __copy_user_intel 209629 2.8531 tcp_sendmsg 165632 2.2543 dst_release 149232 2.0311 tcp_current_mss 147821 2.0119 tcp_recvmsg 137893 1.8767 sysenter_past_esp 127473 1.7349 __copy_from_user_ll 121308 1.6510 ip_finish_output 118510 1.6129 tcp_transmit_skb 109295 1.4875 tcp_v4_rcv Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit f30ab418a1d3c5a8b83493e7d70d6876a74aa0ce Author: Jarek Poplawski Date: Thu Nov 13 22:56:30 2008 -0800 pkt_sched: Remove qdisc->ops->requeue() etc. After implementing qdisc->ops->peek() and changing sch_netem into classless qdisc there are no more qdisc->ops->requeue() users. This patch removes this method with its wrappers (qdisc_requeue()), and also unused qdisc->requeue structure. There are a few minor fixes of warnings (htb_enqueue()) and comments btw. The idea to kill ->requeue() and a similar patch were first developed by David S. Miller. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 38a7ddffa4b79d7b1fbc9bf2fa82b21b72622858 Author: Petr Tesarik Date: Thu Nov 13 22:44:11 2008 -0800 tcp: remove an unnecessary field in struct tcp_skb_cb The urg_ptr field is not used anywhere and is merely confusing. Signed-off-by: Petr Tesarik Signed-off-by: David S. Miller commit 00bcd522ea0a62f5e2a9c6ad4924cbbd8d05b026 Author: Harvey Harrison Date: Thu Nov 13 22:41:29 2008 -0800 isdn: use %pI4, remove get_{u8/u16/u32} and put_{u8/u16/u32} inlines They would have been better named as get_be16, put_be16, etc. as they were hiding an endian shift inside. They don't add much over explicitly coding the byteshifting and gcc sometimes has a problem with builtin_constant_p inside inline functions, so it may do a better job of byteswapping at compile time rather than runtime. Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 722024dbb74f3ea316c285c0a71a4512e113b0c4 Author: Alexander van Heukelum Date: Thu Nov 13 13:50:20 2008 +0100 x86: irq: fix apicinterrupts on 64 bits Impact: Fix interrupt via the apicinterrupt macro Checkin 939b787130bf22887a09d8fd2641a094dcef8c22 changed the "interrupt" macro, but the "interrupt" macro is also invoked indirectly from the "apicinterrupt" macro. The "apicinterrupt" macro probably should have its own collection of systematic stubs for the same reason the main IRQ code does; as is it is a huge amount of replicated code. Signed-off-by: Alexander van Heukelum Signed-off-by: H. Peter Anvin commit 2b828925652340277a889cbc11b2d0637f7cdaf7 Merge: 3a3b7ce9336952ea7b9564d976d068a238976c9d 58e20d8d344b0ee083febb18c2b021d2427e56ca Author: James Morris Date: Fri Nov 14 11:29:12 2008 +1100 Merge branch 'master' into next Conflicts: security/keys/internal.h security/keys/process_keys.c security/keys/request_key.c Fixed conflicts above by using the non 'tsk' versions. Signed-off-by: James Morris commit 3a3b7ce9336952ea7b9564d976d068a238976c9d Author: David Howells Date: Fri Nov 14 10:39:28 2008 +1100 CRED: Allow kernel services to override LSM settings for task actions Allow kernel services to override LSM settings appropriate to the actions performed by a task by duplicating a set of credentials, modifying it and then using task_struct::cred to point to it when performing operations on behalf of a task. This is used, for example, by CacheFiles which has to transparently access the cache on behalf of a process that thinks it is doing, say, NFS accesses with a potentially inappropriate (with respect to accessing the cache) set of credentials. This patch provides two LSM hooks for modifying a task security record: (*) security_kernel_act_as() which allows modification of the security datum with which a task acts on other objects (most notably files). (*) security_kernel_create_files_as() which allows modification of the security datum that is used to initialise the security data on a file that a task creates. The patch also provides four new credentials handling functions, which wrap the LSM functions: (1) prepare_kernel_cred() Prepare a set of credentials for a kernel service to use, based either on a daemon's credentials or on init_cred. All the keyrings are cleared. (2) set_security_override() Set the LSM security ID in a set of credentials to a specific security context, assuming permission from the LSM policy. (3) set_security_override_from_ctx() As (2), but takes the security context as a string. (4) set_create_files_as() Set the file creation LSM security ID in a set of credentials to be the same as that on a particular inode. Signed-off-by: Casey Schaufler [Smack changes] Signed-off-by: David Howells Signed-off-by: James Morris commit 1bfdc75ae077d60a01572a7781ec6264d55ab1b9 Author: David Howells Date: Fri Nov 14 10:39:27 2008 +1100 CRED: Add a kernel_service object class to SELinux Add a 'kernel_service' object class to SELinux and give this object class two access vectors: 'use_as_override' and 'create_files_as'. The first vector is used to grant a process the right to nominate an alternate process security ID for the kernel to use as an override for the SELinux subjective security when accessing stuff on behalf of another process. For example, CacheFiles when accessing the cache on behalf on a process accessing an NFS file needs to use a subjective security ID appropriate to the cache rather then the one the calling process is using. The cachefilesd daemon will nominate the security ID to be used. The second vector is used to grant a process the right to nominate a file creation label for a kernel service to use. Signed-off-by: David Howells Signed-off-by: James Morris commit 3b11a1decef07c19443d24ae926982bc8ec9f4c0 Author: David Howells Date: Fri Nov 14 10:39:26 2008 +1100 CRED: Differentiate objective and effective subjective credentials on a task Differentiate the objective and real subjective credentials from the effective subjective credentials on a task by introducing a second credentials pointer into the task_struct. task_struct::real_cred then refers to the objective and apparent real subjective credentials of a task, as perceived by the other tasks in the system. task_struct::cred then refers to the effective subjective credentials of a task, as used by that task when it's actually running. These are not visible to the other tasks in the system. __task_cred(task) then refers to the objective/real credentials of the task in question. current_cred() refers to the effective subjective credentials of the current task. prepare_creds() uses the objective creds as a base and commit_creds() changes both pointers in the task_struct (indeed commit_creds() requires them to be the same). override_creds() and revert_creds() change the subjective creds pointer only, and the former returns the old subjective creds. These are used by NFSD, faccessat() and do_coredump(), and will by used by CacheFiles. In SELinux, current_has_perm() is provided as an alternative to task_has_perm(). This uses the effective subjective context of current, whereas task_has_perm() uses the objective/real context of the subject. Signed-off-by: David Howells Signed-off-by: James Morris commit 98870ab0a5a3f1822aee681d2997017e1c87d026 Author: David Howells Date: Fri Nov 14 10:39:26 2008 +1100 CRED: Documentation Document credentials and the new credentials API. Signed-off-by: David Howells Signed-off-by: James Morris commit d76b0d9b2d87cfc95686e148767cbf7d0e22bdc0 Author: David Howells Date: Fri Nov 14 10:39:25 2008 +1100 CRED: Use creds in file structs Attach creds to file structs and discard f_uid/f_gid. file_operations::open() methods (such as hppfs_open()) should use file->f_cred rather than current_cred(). At the moment file->f_cred will be current_cred() at this point. Signed-off-by: David Howells Reviewed-by: James Morris Signed-off-by: James Morris commit 1d045980e1eff4800472f0e81df9460640c8eee9 Author: David Howells Date: Fri Nov 14 10:39:24 2008 +1100 CRED: Prettify commoncap.c Prettify commoncap.c. Signed-off-by: David Howells Acked-by: Serge Hallyn Reviewed-by: James Morris Signed-off-by: James Morris commit a6f76f23d297f70e2a6b3ec607f7aeeea9e37e8d Author: David Howells Date: Fri Nov 14 10:39:24 2008 +1100 CRED: Make execve() take advantage of copy-on-write credentials Make execve() take advantage of copy-on-write credentials, allowing it to set up the credentials in advance, and then commit the whole lot after the point of no return. This patch and the preceding patches have been tested with the LTP SELinux testsuite. This patch makes several logical sets of alteration: (1) execve(). The credential bits from struct linux_binprm are, for the most part, replaced with a single credentials pointer (bprm->cred). This means that all the creds can be calculated in advance and then applied at the point of no return with no possibility of failure. I would like to replace bprm->cap_effective with: cap_isclear(bprm->cap_effective) but this seems impossible due to special behaviour for processes of pid 1 (they always retain their parent's capability masks where normally they'd be changed - see cap_bprm_set_creds()). The following sequence of events now happens: (a) At the start of do_execve, the current task's cred_exec_mutex is locked to prevent PTRACE_ATTACH from obsoleting the calculation of creds that we make. (a) prepare_exec_creds() is then called to make a copy of the current task's credentials and prepare it. This copy is then assigned to bprm->cred. This renders security_bprm_alloc() and security_bprm_free() unnecessary, and so they've been removed. (b) The determination of unsafe execution is now performed immediately after (a) rather than later on in the code. The result is stored in bprm->unsafe for future reference. (c) prepare_binprm() is called, possibly multiple times. (i) This applies the result of set[ug]id binaries to the new creds attached to bprm->cred. Personality bit clearance is recorded, but now deferred on the basis that the exec procedure may yet fail. (ii) This then calls the new security_bprm_set_creds(). This should calculate the new LSM and capability credentials into *bprm->cred. This folds together security_bprm_set() and parts of security_bprm_apply_creds() (these two have been removed). Anything that might fail must be done at this point. (iii) bprm->cred_prepared is set to 1. bprm->cred_prepared is 0 on the first pass of the security calculations, and 1 on all subsequent passes. This allows SELinux in (ii) to base its calculations only on the initial script and not on the interpreter. (d) flush_old_exec() is called to commit the task to execution. This performs the following steps with regard to credentials: (i) Clear pdeath_signal and set dumpable on certain circumstances that may not be covered by commit_creds(). (ii) Clear any bits in current->personality that were deferred from (c.i). (e) install_exec_creds() [compute_creds() as was] is called to install the new credentials. This performs the following steps with regard to credentials: (i) Calls security_bprm_committing_creds() to apply any security requirements, such as flushing unauthorised files in SELinux, that must be done before the credentials are changed. This is made up of bits of security_bprm_apply_creds() and security_bprm_post_apply_creds(), both of which have been removed. This function is not allowed to fail; anything that might fail must have been done in (c.ii). (ii) Calls commit_creds() to apply the new credentials in a single assignment (more or less). Possibly pdeath_signal and dumpable should be part of struct creds. (iii) Unlocks the task's cred_replace_mutex, thus allowing PTRACE_ATTACH to take place. (iv) Clears The bprm->cred pointer as the credentials it was holding are now immutable. (v) Calls security_bprm_committed_creds() to apply any security alterations that must be done after the creds have been changed. SELinux uses this to flush signals and signal handlers. (f) If an error occurs before (d.i), bprm_free() will call abort_creds() to destroy the proposed new credentials and will then unlock cred_replace_mutex. No changes to the credentials will have been made. (2) LSM interface. A number of functions have been changed, added or removed: (*) security_bprm_alloc(), ->bprm_alloc_security() (*) security_bprm_free(), ->bprm_free_security() Removed in favour of preparing new credentials and modifying those. (*) security_bprm_apply_creds(), ->bprm_apply_creds() (*) security_bprm_post_apply_creds(), ->bprm_post_apply_creds() Removed; split between security_bprm_set_creds(), security_bprm_committing_creds() and security_bprm_committed_creds(). (*) security_bprm_set(), ->bprm_set_security() Removed; folded into security_bprm_set_creds(). (*) security_bprm_set_creds(), ->bprm_set_creds() New. The new credentials in bprm->creds should be checked and set up as appropriate. bprm->cred_prepared is 0 on the first call, 1 on the second and subsequent calls. (*) security_bprm_committing_creds(), ->bprm_committing_creds() (*) security_bprm_committed_creds(), ->bprm_committed_creds() New. Apply the security effects of the new credentials. This includes closing unauthorised files in SELinux. This function may not fail. When the former is called, the creds haven't yet been applied to the process; when the latter is called, they have. The former may access bprm->cred, the latter may not. (3) SELinux. SELinux has a number of changes, in addition to those to support the LSM interface changes mentioned above: (a) The bprm_security_struct struct has been removed in favour of using the credentials-under-construction approach. (c) flush_unauthorized_files() now takes a cred pointer and passes it on to inode_has_perm(), file_has_perm() and dentry_open(). Signed-off-by: David Howells Acked-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit d84f4f992cbd76e8f39c488cf0c5d123843923b1 Author: David Howells Date: Fri Nov 14 10:39:23 2008 +1100 CRED: Inaugurate COW credentials Inaugurate copy-on-write credentials management. This uses RCU to manage the credentials pointer in the task_struct with respect to accesses by other tasks. A process may only modify its own credentials, and so does not need locking to access or modify its own credentials. A mutex (cred_replace_mutex) is added to the task_struct to control the effect of PTRACE_ATTACHED on credential calculations, particularly with respect to execve(). With this patch, the contents of an active credentials struct may not be changed directly; rather a new set of credentials must be prepared, modified and committed using something like the following sequence of events: struct cred *new = prepare_creds(); int ret = blah(new); if (ret < 0) { abort_creds(new); return ret; } return commit_creds(new); There are some exceptions to this rule: the keyrings pointed to by the active credentials may be instantiated - keyrings violate the COW rule as managing COW keyrings is tricky, given that it is possible for a task to directly alter the keys in a keyring in use by another task. To help enforce this, various pointers to sets of credentials, such as those in the task_struct, are declared const. The purpose of this is compile-time discouragement of altering credentials through those pointers. Once a set of credentials has been made public through one of these pointers, it may not be modified, except under special circumstances: (1) Its reference count may incremented and decremented. (2) The keyrings to which it points may be modified, but not replaced. The only safe way to modify anything else is to create a replacement and commit using the functions described in Documentation/credentials.txt (which will be added by a later patch). This patch and the preceding patches have been tested with the LTP SELinux testsuite. This patch makes several logical sets of alteration: (1) execve(). This now prepares and commits credentials in various places in the security code rather than altering the current creds directly. (2) Temporary credential overrides. do_coredump() and sys_faccessat() now prepare their own credentials and temporarily override the ones currently on the acting thread, whilst preventing interference from other threads by holding cred_replace_mutex on the thread being dumped. This will be replaced in a future patch by something that hands down the credentials directly to the functions being called, rather than altering the task's objective credentials. (3) LSM interface. A number of functions have been changed, added or removed: (*) security_capset_check(), ->capset_check() (*) security_capset_set(), ->capset_set() Removed in favour of security_capset(). (*) security_capset(), ->capset() New. This is passed a pointer to the new creds, a pointer to the old creds and the proposed capability sets. It should fill in the new creds or return an error. All pointers, barring the pointer to the new creds, are now const. (*) security_bprm_apply_creds(), ->bprm_apply_creds() Changed; now returns a value, which will cause the process to be killed if it's an error. (*) security_task_alloc(), ->task_alloc_security() Removed in favour of security_prepare_creds(). (*) security_cred_free(), ->cred_free() New. Free security data attached to cred->security. (*) security_prepare_creds(), ->cred_prepare() New. Duplicate any security data attached to cred->security. (*) security_commit_creds(), ->cred_commit() New. Apply any security effects for the upcoming installation of new security by commit_creds(). (*) security_task_post_setuid(), ->task_post_setuid() Removed in favour of security_task_fix_setuid(). (*) security_task_fix_setuid(), ->task_fix_setuid() Fix up the proposed new credentials for setuid(). This is used by cap_set_fix_setuid() to implicitly adjust capabilities in line with setuid() changes. Changes are made to the new credentials, rather than the task itself as in security_task_post_setuid(). (*) security_task_reparent_to_init(), ->task_reparent_to_init() Removed. Instead the task being reparented to init is referred directly to init's credentials. NOTE! This results in the loss of some state: SELinux's osid no longer records the sid of the thread that forked it. (*) security_key_alloc(), ->key_alloc() (*) security_key_permission(), ->key_permission() Changed. These now take cred pointers rather than task pointers to refer to the security context. (4) sys_capset(). This has been simplified and uses less locking. The LSM functions it calls have been merged. (5) reparent_to_kthreadd(). This gives the current thread the same credentials as init by simply using commit_thread() to point that way. (6) __sigqueue_alloc() and switch_uid() __sigqueue_alloc() can't stop the target task from changing its creds beneath it, so this function gets a reference to the currently applicable user_struct which it then passes into the sigqueue struct it returns if successful. switch_uid() is now called from commit_creds(), and possibly should be folded into that. commit_creds() should take care of protecting __sigqueue_alloc(). (7) [sg]et[ug]id() and co and [sg]et_current_groups. The set functions now all use prepare_creds(), commit_creds() and abort_creds() to build and check a new set of credentials before applying it. security_task_set[ug]id() is called inside the prepared section. This guarantees that nothing else will affect the creds until we've finished. The calling of set_dumpable() has been moved into commit_creds(). Much of the functionality of set_user() has been moved into commit_creds(). The get functions all simply access the data directly. (8) security_task_prctl() and cap_task_prctl(). security_task_prctl() has been modified to return -ENOSYS if it doesn't want to handle a function, or otherwise return the return value directly rather than through an argument. Additionally, cap_task_prctl() now prepares a new set of credentials, even if it doesn't end up using it. (9) Keyrings. A number of changes have been made to the keyrings code: (a) switch_uid_keyring(), copy_keys(), exit_keys() and suid_keys() have all been dropped and built in to the credentials functions directly. They may want separating out again later. (b) key_alloc() and search_process_keyrings() now take a cred pointer rather than a task pointer to specify the security context. (c) copy_creds() gives a new thread within the same thread group a new thread keyring if its parent had one, otherwise it discards the thread keyring. (d) The authorisation key now points directly to the credentials to extend the search into rather pointing to the task that carries them. (e) Installing thread, process or session keyrings causes a new set of credentials to be created, even though it's not strictly necessary for process or session keyrings (they're shared). (10) Usermode helper. The usermode helper code now carries a cred struct pointer in its subprocess_info struct instead of a new session keyring pointer. This set of credentials is derived from init_cred and installed on the new process after it has been cloned. call_usermodehelper_setup() allocates the new credentials and call_usermodehelper_freeinfo() discards them if they haven't been used. A special cred function (prepare_usermodeinfo_creds()) is provided specifically for call_usermodehelper_setup() to call. call_usermodehelper_setkeys() adjusts the credentials to sport the supplied keyring as the new session keyring. (11) SELinux. SELinux has a number of changes, in addition to those to support the LSM interface changes mentioned above: (a) selinux_setprocattr() no longer does its check for whether the current ptracer can access processes with the new SID inside the lock that covers getting the ptracer's SID. Whilst this lock ensures that the check is done with the ptracer pinned, the result is only valid until the lock is released, so there's no point doing it inside the lock. (12) is_single_threaded(). This function has been extracted from selinux_setprocattr() and put into a file of its own in the lib/ directory as join_session_keyring() now wants to use it too. The code in SELinux just checked to see whether a task shared mm_structs with other tasks (CLONE_VM), but that isn't good enough. We really want to know if they're part of the same thread group (CLONE_THREAD). (13) nfsd. The NFS server daemon now has to use the COW credentials to set the credentials it is going to use. It really needs to pass the credentials down to the functions it calls, but it can't do that until other patches in this series have been applied. Signed-off-by: David Howells Acked-by: James Morris Signed-off-by: James Morris commit 745ca2475a6ac596e3d8d37c2759c0fbe2586227 Author: David Howells Date: Fri Nov 14 10:39:22 2008 +1100 CRED: Pass credentials through dentry_open() Pass credentials through dentry_open() so that the COW creds patch can have SELinux's flush_unauthorized_files() pass the appropriate creds back to itself when it opens its null chardev. The security_dentry_open() call also now takes a creds pointer, as does the dentry_open hook in struct security_operations. Signed-off-by: David Howells Acked-by: James Morris Signed-off-by: James Morris commit 88e67f3b8898c5ea81d2916dd5b8bc9c0c35ba13 Author: David Howells Date: Fri Nov 14 10:39:21 2008 +1100 CRED: Make inode_has_perm() and file_has_perm() take a cred pointer Make inode_has_perm() and file_has_perm() take a cred pointer rather than a task pointer. Signed-off-by: David Howells Acked-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit 6cc88bc45ce8043171089c9592da223dfab91823 Author: David Howells Date: Fri Nov 14 10:39:21 2008 +1100 CRED: Rename is_single_threaded() to is_wq_single_threaded() Rename is_single_threaded() to is_wq_single_threaded() so that a new is_single_threaded() can be created that refers to tasks rather than waitqueues. Signed-off-by: David Howells Reviewed-by: James Morris Signed-off-by: James Morris commit bb952bb98a7e479262c7eb25d5592545a3af147d Author: David Howells Date: Fri Nov 14 10:39:20 2008 +1100 CRED: Separate per-task-group keyrings from signal_struct Separate per-task-group keyrings from signal_struct and dangle their anchor from the cred struct rather than the signal_struct. Signed-off-by: David Howells Reviewed-by: James Morris Signed-off-by: James Morris commit 275bb41e9d058fbb327e7642f077e1beaeac162e Author: David Howells Date: Fri Nov 14 10:39:19 2008 +1100 CRED: Wrap access to SELinux's task SID Wrap access to SELinux's task SID, using task_sid() and current_sid() as appropriate. Signed-off-by: David Howells Acked-by: James Morris Signed-off-by: James Morris commit c69e8d9c01db2adc503464993c358901c9af9de4 Author: David Howells Date: Fri Nov 14 10:39:19 2008 +1100 CRED: Use RCU to access another task's creds and to release a task's own creds Use RCU to access another task's creds and to release a task's own creds. This means that it will be possible for the credentials of a task to be replaced without another task (a) requiring a full lock to read them, and (b) seeing deallocated memory. Signed-off-by: David Howells Acked-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit 86a264abe542cfececb4df129bc45a0338d8cdb9 Author: David Howells Date: Fri Nov 14 10:39:18 2008 +1100 CRED: Wrap current->cred and a few other accessors Wrap current->cred and a few other accessors to hide their actual implementation. Signed-off-by: David Howells Acked-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit f1752eec6145c97163dbce62d17cf5d928e28a27 Author: David Howells Date: Fri Nov 14 10:39:17 2008 +1100 CRED: Detach the credentials from task_struct Detach the credentials from task_struct, duplicating them in copy_process() and releasing them in __put_task_struct(). Signed-off-by: David Howells Acked-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit b6dff3ec5e116e3af6f537d4caedcad6b9e5082a Author: David Howells Date: Fri Nov 14 10:39:16 2008 +1100 CRED: Separate task security context from task_struct Separate the task security context from task_struct. At this point, the security data is temporarily embedded in the task_struct with two pointers pointing to it. Note that the Alpha arch is altered as it refers to (E)UID and (E)GID in entry.S via asm-offsets. With comment fixes Signed-off-by: Marc Dionne Signed-off-by: David Howells Acked-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit 15a2460ed0af7538ca8e6c610fe607a2cd9da142 Author: David Howells Date: Fri Nov 14 10:39:15 2008 +1100 CRED: Constify the kernel_cap_t arguments to the capset LSM hooks Constify the kernel_cap_t arguments to the capset LSM hooks. Signed-off-by: David Howells Acked-by: Serge Hallyn Acked-by: James Morris Signed-off-by: James Morris commit 1cdcbec1a3372c0c49c59d292e708fd07b509f18 Author: David Howells Date: Fri Nov 14 10:39:14 2008 +1100 CRED: Neuter sys_capset() Take away the ability for sys_capset() to affect processes other than current. This means that current will not need to lock its own credentials when reading them against interference by other processes. This has effectively been the case for a while anyway, since: (1) Without LSM enabled, sys_capset() is disallowed. (2) With file-based capabilities, sys_capset() is neutered. Signed-off-by: David Howells Acked-by: Serge Hallyn Acked-by: Andrew G. Morgan Acked-by: James Morris Signed-off-by: James Morris commit 8bbf4976b59fc9fc2861e79cab7beb3f6d647640 Author: David Howells Date: Fri Nov 14 10:39:14 2008 +1100 KEYS: Alter use of key instantiation link-to-keyring argument Alter the use of the key instantiation and negation functions' link-to-keyring arguments. Currently this specifies a keyring in the target process to link the key into, creating the keyring if it doesn't exist. This, however, can be a problem for copy-on-write credentials as it means that the instantiating process can alter the credentials of the requesting process. This patch alters the behaviour such that: (1) If keyctl_instantiate_key() or keyctl_negate_key() are given a specific keyring by ID (ringid >= 0), then that keyring will be used. (2) If keyctl_instantiate_key() or keyctl_negate_key() are given one of the special constants that refer to the requesting process's keyrings (KEY_SPEC_*_KEYRING, all <= 0), then: (a) If sys_request_key() was given a keyring to use (destringid) then the key will be attached to that keyring. (b) If sys_request_key() was given a NULL keyring, then the key being instantiated will be attached to the default keyring as set by keyctl_set_reqkey_keyring(). (3) No extra link will be made. Decision point (1) follows current behaviour, and allows those instantiators who've searched for a specifically named keyring in the requestor's keyring so as to partition the keys by type to still have their named keyrings. Decision point (2) allows the requestor to make sure that the key or keys that get produced by request_key() go where they want, whilst allowing the instantiator to request that the key is retained. This is mainly useful for situations where the instantiator makes a secondary request, the key for which should be retained by the initial requestor: +-----------+ +--------------+ +--------------+ | | | | | | | Requestor |------->| Instantiator |------->| Instantiator | | | | | | | +-----------+ +--------------+ +--------------+ request_key() request_key() This might be useful, for example, in Kerberos, where the requestor requests a ticket, and then the ticket instantiator requests the TGT, which someone else then has to go and fetch. The TGT, however, should be retained in the keyrings of the requestor, not the first instantiator. To make this explict an extra special keyring constant is also added. Signed-off-by: David Howells Reviewed-by: James Morris Signed-off-by: James Morris commit e9e349b051d98799b743ebf248cc2d986fedf090 Author: David Howells Date: Fri Nov 14 10:39:13 2008 +1100 KEYS: Disperse linux/key_ui.h Disperse the bits of linux/key_ui.h as the reason they were put here (keyfs) didn't get in. Signed-off-by: David Howells Reviewed-by: James Morris Signed-off-by: James Morris commit 76aac0e9a17742e60d408be1a706e9aaad370891 Author: David Howells Date: Fri Nov 14 10:39:12 2008 +1100 CRED: Wrap task credential accesses in the core kernel Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Al Viro Cc: linux-audit@redhat.com Cc: containers@lists.linux-foundation.org Cc: linux-mm@kvack.org Signed-off-by: James Morris commit b103c59883f1ec6e4d548b25054608cb5724453c Author: David Howells Date: Fri Nov 14 10:39:11 2008 +1100 CRED: Wrap task credential accesses in the capabilities code Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Andrew G. Morgan Signed-off-by: James Morris commit 47d804bfa1857b0edcac972c86499dcd14df3cf2 Author: David Howells Date: Fri Nov 14 10:39:11 2008 +1100 CRED: Wrap task credential accesses in the key management code Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit 8192b0c482d7078fcdcb4854341b977426f6f09b Author: David Howells Date: Fri Nov 14 10:39:10 2008 +1100 CRED: Wrap task credential accesses in the networking subsystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: netdev@vger.kernel.org Signed-off-by: James Morris commit 19d65624d38d6296dddf725d1b03baa8a491a553 Author: David Howells Date: Fri Nov 14 10:39:10 2008 +1100 CRED: Wrap task credential accesses in the UNIX socket protocol Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: netdev@vger.kernel.org Signed-off-by: James Morris commit 8f4194026bb1e3d95fedb340a2935895845ea1d5 Author: David Howells Date: Fri Nov 14 10:39:09 2008 +1100 CRED: Wrap task credential accesses in the SunRPC protocol Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Trond Myklebust Cc: J. Bruce Fields Cc: Neil Brown Cc: linux-nfs@vger.kernel.org Signed-off-by: James Morris commit c2a2b8d3b299feb7ac62c2825941dec57141f6f4 Author: David Howells Date: Fri Nov 14 10:39:08 2008 +1100 CRED: Wrap task credential accesses in the ROSE protocol Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Ralf Baechle Cc: linux-hams@vger.kernel.org Signed-off-by: James Morris commit ba95b2353cf1a7f7f236946530ccf5d0ccec6b38 Author: David Howells Date: Fri Nov 14 10:39:08 2008 +1100 CRED: Wrap task credential accesses in the netrom protocol Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Ralf Baechle Cc: linux-hams@vger.kernel.org Signed-off-by: James Morris commit f82b359023c8b7b343edef6c63322b900d9e74a1 Author: David Howells Date: Fri Nov 14 10:39:07 2008 +1100 CRED: Wrap task credential accesses in the IPv6 protocol Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: netdev@vger.kernel.org Signed-off-by: James Morris commit 734004072e05ae81c3cdd0a04ee37868fb09b71e Author: David Howells Date: Fri Nov 14 10:39:06 2008 +1100 CRED: Wrap task credential accesses in the AX25 protocol Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Ralf Baechle Cc: linux-hams@vger.kernel.org Signed-off-by: James Morris commit 414c0708d0d60eccf8345c405ac81cf32c43e901 Author: David Howells Date: Fri Nov 14 10:39:06 2008 +1100 CRED: Wrap task credential accesses in the SYSV IPC subsystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit da9592edebceeba1b9301beafe80ec8b9c2db0ce Author: David Howells Date: Fri Nov 14 10:39:05 2008 +1100 CRED: Wrap task credential accesses in the filesystem subsystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Al Viro Signed-off-by: James Morris commit 82ab8deda7fef36f067ccdeacc3b3caefc970f89 Author: David Howells Date: Fri Nov 14 10:39:04 2008 +1100 CRED: Wrap task credential accesses in the XFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: xfs@oss.sgi.com Signed-off-by: James Morris commit a5f773a65928a10eb5e5534fe6da6b427ac5b646 Author: David Howells Date: Fri Nov 14 10:39:04 2008 +1100 CRED: Wrap task credential accesses in the UFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Evgeniy Dushistov Signed-off-by: James Morris commit 7706bb39adff18a48ff98f203ffcbb00878d8589 Author: David Howells Date: Fri Nov 14 10:39:03 2008 +1100 CRED: Wrap task credential accesses in the UDF filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Jan Kara Signed-off-by: James Morris commit 26bf1946e69abf9528beda7adb4a783c439a5f7b Author: David Howells Date: Fri Nov 14 10:39:03 2008 +1100 CRED: Wrap task credential accesses in the UBIFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Artem Bityutskiy Cc: Adrian Hunter Cc: linux-mtd@lists.infradead.org Signed-off-by: James Morris commit fc7333deb741da8aafbda9ff905d3ff2c5e28a66 Author: David Howells Date: Fri Nov 14 10:39:02 2008 +1100 CRED: Wrap task credential accesses in the SYSV filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Christoph Hellwig Signed-off-by: James Morris commit e2950b178e8fa1cb0b122c212b6cd48e75e2b41f Author: David Howells Date: Fri Nov 14 10:39:01 2008 +1100 CRED: Wrap task credential accesses in the SMBFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Steven French Signed-off-by: James Morris commit 414cb209eaca52b708debc014a8085b7fbb15f14 Author: David Howells Date: Fri Nov 14 10:39:01 2008 +1100 CRED: Wrap task credential accesses in the ReiserFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: reiserfs-devel@vger.kernel.org Signed-off-by: James Morris commit 0785f4dad0f7173f3b7133e3c274fe130e8fdbc6 Author: David Howells Date: Fri Nov 14 10:39:00 2008 +1100 CRED: Wrap task credential accesses in the RAMFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit c222d53eb32ea0c9516261268a24c6f162423acd Author: David Howells Date: Fri Nov 14 10:38:59 2008 +1100 CRED: Wrap task credential accesses in the OMFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Bob Copeland Cc: linux-karma-devel@lists.sourceforge.net Signed-off-by: James Morris commit b19c2a3b839b9dfb3f258e8943dc3784ae20c7b0 Author: David Howells Date: Fri Nov 14 10:38:59 2008 +1100 CRED: Wrap task credential accesses in the OCFS2 filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Mark Fasheh Cc: Joel Becker Cc: ocfs2-devel@oss.oracle.com Signed-off-by: James Morris commit 5cc0a84076e172c18fb927781f44c6e47d6c5a06 Author: David Howells Date: Fri Nov 14 10:38:58 2008 +1100 CRED: Wrap task credential accesses in the NFS daemon Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: J. Bruce Fields Cc: Neil Brown Cc: linux-nfs@vger.kernel.org Signed-off-by: James Morris commit 48937024c65db88abafd0fb14021db31f09cd4ec Author: David Howells Date: Fri Nov 14 10:38:58 2008 +1100 CRED: Wrap task credential accesses in the NCPFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Petr Vandrovec Signed-off-by: James Morris commit 922c030f260df9d256fecea3164210e7cb2ce407 Author: David Howells Date: Fri Nov 14 10:38:57 2008 +1100 CRED: Wrap task credential accesses in the Minix filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit 8f659adfa246a1e57d0cd3f109accfe071f2d0f1 Author: David Howells Date: Fri Nov 14 10:38:56 2008 +1100 CRED: Wrap task credential accesses in the JFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Dave Kleikamp Cc: jfs-discussion@lists.sourceforge.net Signed-off-by: James Morris commit 77c70de15a74801f427ee5fb85ddfdde48ed84f2 Author: David Howells Date: Fri Nov 14 10:38:56 2008 +1100 CRED: Wrap task credential accesses in the hugetlbfs filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: William Irwin Signed-off-by: James Morris commit de395b8ac25da56893d83cd5da67cf927dfa7e4d Author: David Howells Date: Fri Nov 14 10:38:55 2008 +1100 CRED: Wrap task credential accesses in the HPFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Mikulas Patocka Signed-off-by: James Morris commit 4ac8489a7294dcf92127825d74f2d981143e825d Author: David Howells Date: Fri Nov 14 10:38:54 2008 +1100 CRED: Wrap task credential accesses in the HFSplus filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Roman Zippel Signed-off-by: James Morris commit 94c9a5ee4cc7fb7eee2a9f9e47f7ccea6b1869ff Author: David Howells Date: Fri Nov 14 10:38:54 2008 +1100 CRED: Wrap task credential accesses in the HFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Roman Zippel Signed-off-by: James Morris commit 3de7be335593859bc84a122b1338ec358bf70e9b Author: David Howells Date: Fri Nov 14 10:38:53 2008 +1100 CRED: Wrap task credential accesses in the GFS2 filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Steven Whitehouse Cc: cluster-devel@redhat.com Signed-off-by: James Morris commit 2186a71cbcddda946dd3cfccd5285e210ec3af10 Author: David Howells Date: Fri Nov 14 10:38:53 2008 +1100 CRED: Wrap task credential accesses in the FUSE filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Miklos Szeredi Cc: fuse-devel@lists.sourceforge.net Signed-off-by: James Morris commit f0ce7ee3a8ec1e80b6f460983ef1f26e603026f5 Author: David Howells Date: Fri Nov 14 10:38:52 2008 +1100 CRED: Wrap task credential accesses in the FAT filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: OGAWA Hirofumi Signed-off-by: James Morris commit 4c9c544e4987efe6643ad5692af47a0abfd4e0d1 Author: David Howells Date: Fri Nov 14 10:38:51 2008 +1100 CRED: Wrap task credential accesses in the Ext4 filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Stephen Tweedie Cc: Andrew Morton Cc: adilger@sun.com Cc: linux-ext4@vger.kernel.org Signed-off-by: James Morris commit 6a2f90e9fae0824e8b6b123f1ea7d9fff9079ef3 Author: David Howells Date: Fri Nov 14 10:38:51 2008 +1100 CRED: Wrap task credential accesses in the Ext3 filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Stephen Tweedie Cc: Andrew Morton Cc: adilger@sun.com Cc: linux-ext4@vger.kernel.org Signed-off-by: James Morris commit a8dd4d67bdf9c48c5ebfa366592fde7e2d318b4f Author: David Howells Date: Fri Nov 14 10:38:50 2008 +1100 CRED: Wrap task credential accesses in the Ext2 filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: linux-ext4@vger.kernel.org Signed-off-by: James Morris commit 4eea03539d9a8e3f5056aed690efde1f75535e7b Author: David Howells Date: Fri Nov 14 10:38:49 2008 +1100 CRED: Wrap task credential accesses in the eCryptFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Mike Halcrow Cc: Phillip Hellewell Cc: ecryptfs-devel@lists.sourceforge.net Signed-off-by: James Morris commit ec4c2aacd16672febca053109eb9ddf672108ca1 Author: David Howells Date: Fri Nov 14 10:38:49 2008 +1100 CRED: Wrap task credential accesses in the devpts filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Signed-off-by: James Morris commit 97b7702cd1bdb8e89bde6c70aa983e7b82a52ec6 Author: David Howells Date: Fri Nov 14 10:38:48 2008 +1100 CRED: Wrap task credential accesses in the Coda filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Jan Harkes Cc: codalist@coda.cs.cmu.edu Signed-off-by: James Morris commit a001e5b558f25eb1e588522d73ac949b643b7a37 Author: David Howells Date: Fri Nov 14 10:38:47 2008 +1100 CRED: Wrap task credential accesses in the CIFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Steve French Cc: linux-cifs-client@lists.samba.org Signed-off-by: James Morris commit 1109b07b7dcb938de7a0d65efc1b4739dc4e9787 Author: David Howells Date: Fri Nov 14 10:38:47 2008 +1100 CRED: Wrap task credential accesses in the BFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Tigran A. Aivazian Signed-off-by: James Morris commit 0eb790e3a2d872192af8ceff2cabff8594c56440 Author: David Howells Date: Fri Nov 14 10:38:46 2008 +1100 CRED: Wrap task credential accesses in the autofs4 filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Ian Kent Cc: autofs@linux.kernel.org Signed-off-by: James Morris commit 73c646e4afb658e601a46bf1b57925450307a119 Author: David Howells Date: Fri Nov 14 10:38:45 2008 +1100 CRED: Wrap task credential accesses in the autofs filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: H. Peter Anvin Cc: autofs@linux.kernel.org Signed-off-by: James Morris commit 215599815d8977a4338fbd27d6fe2c1721200197 Author: David Howells Date: Fri Nov 14 10:38:45 2008 +1100 CRED: Wrap task credential accesses in the AFFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Roman Zippel Signed-off-by: James Morris commit f8b9d53a31dca2c1185232c5fe2731d99cc963c8 Author: David Howells Date: Fri Nov 14 10:38:44 2008 +1100 CRED: Wrap task credential accesses in 9P2000 filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Reviewed-by: Eric Van Hensbergen Cc: Ron Minnich Cc: Latchesar Ionkov Cc: v9fs-developer@lists.sourceforge.net Signed-off-by: James Morris commit cd80ca8a03fd712b046028c1f66e10f3aec43eee Author: David Howells Date: Fri Nov 14 10:38:43 2008 +1100 CRED: Wrap task credential accesses in the USB driver Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Greg Kroah-Hartman Cc: linux-usb@vger.kernel.org Signed-off-by: James Morris commit ee9785ada3573700efe77b78c03d4e26a4e1bf26 Author: David Howells Date: Fri Nov 14 10:38:43 2008 +1100 CRED: Wrap task credential accesses in the network device drivers Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: netdev@vger.kernel.org Signed-off-by: James Morris commit 0e164b685cab357546a9a09ef234922b82ecbfaf Author: David Howells Date: Fri Nov 14 10:38:42 2008 +1100 CRED: Wrap task credential accesses in the ISDN drivers Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Karsten Keil Cc: isdn4linux@listserv.isdn4linux.de Signed-off-by: James Morris commit 66303bce9b924e35e435d35409d3abc371755767 Author: David Howells Date: Fri Nov 14 10:38:41 2008 +1100 CRED: Wrap task credential accesses in the tty driver Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Alan Cox Signed-off-by: James Morris commit b0fafa816ece0080771355de6158b4dfa8531a95 Author: David Howells Date: Fri Nov 14 10:38:41 2008 +1100 CRED: Wrap task credential accesses in the block loopback driver Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Jens Axboe Signed-off-by: James Morris commit 350b4da71f8326b9319ada7b701f2bce2e1285b7 Author: David Howells Date: Fri Nov 14 10:38:40 2008 +1100 CRED: Wrap task credential accesses in the x86 arch Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Thomas Gleixner Cc: Ingo Molnar Cc: H. Peter Anvin Signed-off-by: James Morris commit e54237053204caebacb3eda3d37363f1a6118707 Author: David Howells Date: Fri Nov 14 10:38:39 2008 +1100 CRED: Wrap task credential accesses in the S390 arch Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Martin Schwidefsky Cc: Heiko Carstens Cc: linux-s390@vger.kernel.org Signed-off-by: James Morris commit 1330deb0f6e89525c8e9fcbd6b13522c9243bfc0 Author: David Howells Date: Fri Nov 14 10:38:39 2008 +1100 CRED: Wrap task credential accesses in the PowerPC arch Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Benjamin Herrenschmidt Cc: Paul Mackerras Cc: linuxppc-dev@ozlabs.org Signed-off-by: James Morris commit 25e15731af0c8d7adc58f72327dab7293857129f Author: David Howells Date: Fri Nov 14 10:38:38 2008 +1100 CRED: Wrap task credential accesses in the PA-RISC arch Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Kyle McMartin Cc: Matthew Wilcox Cc: Grant Grundler Cc: linux-parisc@vger.kernel.org Signed-off-by: James Morris commit b4212737a39e4cfb0fb66769acbc0bd182a93253 Author: David Howells Date: Fri Nov 14 10:38:37 2008 +1100 CRED: Wrap task credential accesses in the MIPS arch Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Acked-by: Ralf Baechle Cc: linux-mips@linux-mips.org Signed-off-by: James Morris commit ef81ee9855d6c605ed6090a8018c78572cc68b5c Author: David Howells Date: Fri Nov 14 10:38:37 2008 +1100 CRED: Wrap task credential accesses in the IA64 arch Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn Cc: Tony Luck Cc: linux-ia64@vger.kernel.org Signed-off-by: James Morris commit d1aaf8cf8afe70a8c2235a565885291fe290c57c Author: Stephen Hemminger Date: Thu Nov 13 08:33:00 2008 -0800 tracing/fastboot: put error message on stderr Since this scripts output is usually redirected, put error messages on standard error and exit with error code if no data is found. Signed-off-by: Stephen Hemminger Acked-by: Arjan van de Ven Signed-off-by: Ingo Molnar commit b3535c6390f27d04273e4eee0bc687f171fbf5f4 Author: walimis Date: Fri Nov 14 00:21:02 2008 +0800 ftrace: remove unnecessary if condition of __unregister_ftrace_function Because it has goto out before ftrace_list == &ftrace_list_end, that's to say, we never meet this condition. Signed-off-by: walimis Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit cd80bc6f4811b48eb68716c8255bf7e5f0006caa Merge: c4da29ca08e09ed41a2030c1f7b5860f116573be 6a12afb5640217454cad21e8cf9a74b038fa3717 Author: Takashi Iwai Date: Thu Nov 13 14:38:00 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda Conflicts: sound/pci/hda/patch_sigmatel.c commit 0b6048561d5f505e3a027a519a6d0f488ba9a2bb Author: Jarkko Nikula Date: Wed Nov 12 17:05:51 2008 +0200 ASoC: OMAP: Add more supported sample rates into McBSP DAI driver Originally it was put too tight limits to support only 44.1 kHz and 48 kHz sample rates in McBSP DAI driver. Extend it now to 8 kHz - 96 kHz. With 96 kHz and 2*16 bits, bit clock is 3.072 MHz < 3.125 MHz (I2S max?). Tested on Nokia N810 with TVL320AIC33 from rates 8 - 96 kHz and on Texas Instruments Beagle with TWL4030 from rates 8 - 48 kHz. Signed-off-by: Jarkko Nikula Acked-by: Steve Sakoman Acked-by: Arun KS Signed-off-by: Mark Brown commit bbba944410310181de14a5c60a7c161ff2447dd9 Author: Jarkko Nikula Date: Wed Nov 12 17:05:41 2008 +0200 ASoC: Fix supported sample rates of TWL4030 audio codec TWL4030 currently supports rates between 8 kHz and 48 kHz and sets the codec mode register accordingly in twl4030_hw_params. Expose this info so that ASoC can match other rates than 44.1 kHz or 48 kHz as well. Signed-off-by: Jarkko Nikula Acked-by: Steve Sakoman Signed-off-by: Mark Brown commit c4da29ca08e09ed41a2030c1f7b5860f116573be Author: Yang, Libin Date: Thu Nov 13 11:07:07 2008 +0100 ALSA: hda - support detecting HD Audio devices with PCI class code The patch uses HD Audio PCI class code to detect AMD HD Audio cards. Signed-off-by: Libin Yang Signed-off-by: Takashi Iwai commit 12ef7d448613ead2babd41c3ebfa1fe03c20edef Author: Steven Rostedt Date: Wed Nov 12 17:52:38 2008 -0500 ftrace: CPU buffer start annotation clean ups Impact: better handling of CPU buffer start annotation Because of the confusion with the per CPU buffers wrapping where one CPU might be more active at the end of the trace than the other CPUs causing that one CPU to have a shorter history. Kernel developers were confused by the "missing" data of that one CPU at the beginning of the trace output. An annotation was added to the trace output to show that the buffer had started: # tracer: function # # TASK-PID CPU# TIMESTAMP FUNCTION # | | | | | ##### CPU 3 buffer started #### -0 [003] 158.192959: smp_apic_timer_interrupt [...] -0 [003] 161.556520: default_idle ##### CPU 1 buffer started #### -0 [001] 161.592494: hrtimer_force_reprogram [etc] But this annotation gets a bit messy when tracers do not fill the buffers. This patch does a couple of things: One) it adds a flag to trace_options to disable these annotations Two) it does not annotate if the tracer did not overflow its buffer. This makes the output much cleaner. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit ee6bce52276c0717ed3e63296e5d9465d339e923 Author: Steven Rostedt Date: Wed Nov 12 17:52:37 2008 -0500 ftrace: rename iter_ctrl to trace_options Impact: rename file /debug/tracing/iter_ctrl to /debug/tracing/trace_options The original ftrace had a file called "iter_ctrl" that would control the way the output was iterated. But this file grew into a catch all for different trace options. This patch renames the file from iter_ctrl to trace_options to reflect this change. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 1696b2b0f44a8d42f3e6b1ea90c21790871c04d9 Author: Steven Rostedt Date: Thu Nov 13 00:09:35 2008 -0500 ftrace: show buffer size in kilobytes Impact: change the units of buffer_size_kb to kilobytes This patch changes the units of the buffer_size_kb file to kilobytes. Reading and writing to the file uses kilobytes as units. To help users to know what units are used, the output of the file now looks like: # cat /debug/tracing/buffer_size_kb 1408 Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit a94c80e78bc9f4493ffc25a02d5d7bcd93c399d0 Author: Steven Rostedt Date: Wed Nov 12 17:52:36 2008 -0500 ftrace: rename trace_entries to buffer_size_kb Impact: rename of debugfs file trace_entries to buffer_size_kb The original ftrace had fixed size entries, and the number of entries was shown and modified via the file called trace_entries. By converting to the unified trace buffer, we now allow for variable size entries which makes the meaning of trace_entries pointless. Since trace_size might be confused to the size of the trace, this patch names it "buffer_size_kb" (thanks to Arjan van de Ven for this idea). [ mingo@elte.hu: changed from buffer_size to buffer_size_kb ] ( Note, the units are still bytes - the next patch changes that, to keep the wide rename patch separate from the unit-change patch. ) Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 24de38620dd3504782c90c0892eef888d0c351e9 Merge: 94b80ffd650b22e1fd493ccf6bad7efda4b8ea85 68f96c0c889b55bf62eee98e859cb686f8850188 1dc1c6adf38bc5799d1594681645ced40ced4b6b 47e74f2ba8fbf9fb1378e2524e6cfdc2fb37f160 Author: Ingo Molnar Date: Thu Nov 13 09:48:03 2008 +0100 Merge branches 'tracing/branch-tracer', 'tracing/fastboot', 'tracing/function-return-tracer' and 'tracing/urgent' into tracing/core commit 524ad0a79126efabf58d0a49eace6155ab5b4549 Author: Wang Chen Date: Wed Nov 12 23:39:10 2008 -0800 netdevice: safe convert to netdev_priv() #part-4 We have some reasons to kill netdev->priv: 1. netdev->priv is equal to netdev_priv(). 2. netdev_priv() wraps the calculation of netdev->priv's offset, obviously netdev_priv() is more flexible than netdev->priv. But we cann't kill netdev->priv, because so many drivers reference to it directly. This patch is a safe convert for netdev->priv to netdev_priv(netdev). Since all of the netdev->priv is only for read. But it is too big to be sent in one mail. I split it to 4 parts and make every part smaller than 100,000 bytes, which is max size allowed by vger. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 8f15ea42b64941001a401cf855a0869e24f3a845 Author: Wang Chen Date: Wed Nov 12 23:38:36 2008 -0800 netdevice: safe convert to netdev_priv() #part-3 We have some reasons to kill netdev->priv: 1. netdev->priv is equal to netdev_priv(). 2. netdev_priv() wraps the calculation of netdev->priv's offset, obviously netdev_priv() is more flexible than netdev->priv. But we cann't kill netdev->priv, because so many drivers reference to it directly. This patch is a safe convert for netdev->priv to netdev_priv(netdev). Since all of the netdev->priv is only for read. But it is too big to be sent in one mail. I split it to 4 parts and make every part smaller than 100,000 bytes, which is max size allowed by vger. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 4cf1653aa90c6320dc8032443b5e322820aa28b1 Author: Wang Chen Date: Wed Nov 12 23:38:14 2008 -0800 netdevice: safe convert to netdev_priv() #part-2 We have some reasons to kill netdev->priv: 1. netdev->priv is equal to netdev_priv(). 2. netdev_priv() wraps the calculation of netdev->priv's offset, obviously netdev_priv() is more flexible than netdev->priv. But we cann't kill netdev->priv, because so many drivers reference to it directly. This patch is a safe convert for netdev->priv to netdev_priv(netdev). Since all of the netdev->priv is only for read. But it is too big to be sent in one mail. I split it to 4 parts and make every part smaller than 100,000 bytes, which is max size allowed by vger. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 454d7c9b14e20fd1949e2686e9de4a2926e01476 Author: Wang Chen Date: Wed Nov 12 23:37:49 2008 -0800 netdevice: safe convert to netdev_priv() #part-1 We have some reasons to kill netdev->priv: 1. netdev->priv is equal to netdev_priv(). 2. netdev_priv() wraps the calculation of netdev->priv's offset, obviously netdev_priv() is more flexible than netdev->priv. But we cann't kill netdev->priv, because so many drivers reference to it directly. This patch is a safe convert for netdev->priv to netdev_priv(netdev). Since all of the netdev->priv is only for read. But it is too big to be sent in one mail. I split it to 4 parts and make every part smaller than 100,000 bytes, which is max size allowed by vger. Signed-off-by: Wang Chen Signed-off-by: David S. Miller commit 7a12122c7a00347da9669cfcde82954c9e3d6f5e Author: Arnaud Ebalard Date: Wed Nov 12 23:28:15 2008 -0800 net: Remove unused parameter of xfrm_gen_index() In commit 2518c7c2b3d7f0a6b302b4efe17c911f8dd4049f ("[XFRM]: Hash policies when non-prefixed."), the last use of xfrm_gen_policy() first argument was removed, but the argument was left behind in the prototype. Signed-off-by: Arnaud Ebalard Acked-by: Herbert Xu Signed-off-by: David S. Miller commit 2378982487c492541d17adc0a870e7e83b07ba43 Author: Alexey Dobriyan Date: Wed Nov 12 23:25:32 2008 -0800 net: ifdef struct sock::sk_async_wait_queue Every user is under CONFIG_NET_DMA already, so ifdef field as well. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 3a95cb972bb0eb80dfdb42f11628e6d58bcdde29 Author: Wu Fengguang Date: Thu Nov 13 10:19:38 2008 +0800 ALSA: handle SiI1392 HDMI codec in patch_intelhdmi.c Move the handling of SiI1392 HDMI codec from patch_atihdmi.c to patch_intelhdmi.c, which makes our ASUS P5E-VM HDMI board work. Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit e4412cb8a6b4190cf73ae44c859fd7e3727d8b13 Author: Michael Chan Date: Wed Nov 12 16:03:05 2008 -0800 bnx2: Update version to 1.8.2. Signed-off-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit 40105c0b0753515711318db87d36c8338dc74490 Author: Michael Chan Date: Wed Nov 12 16:02:45 2008 -0800 bnx2: Reorganize timeout constants. Move all related timeout constants to the same location. BNX2 prefix is also added to make them more consistent. Signed-off-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit d8026d939495c105cf747c0196a8fa738cf2ad20 Author: Michael Chan Date: Wed Nov 12 16:02:20 2008 -0800 bnx2: Set rx buffer water marks based on MTU. The default rx buffer water marks for XOFF/XON are for 1500 MTU. At larger MTUs, these water marks need to be adjusted for effective flow control. Signed-off-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit 5ec6d7bf195c2e70003ff30e4f51390ef7e85a31 Author: Michael Chan Date: Wed Nov 12 16:01:41 2008 -0800 bnx2: Restrict WoL support. On some quad-port cards that cannot support WoL on all ports due to excessive power consumption, the driver needs to restrict WoL on some ports by checking VAUX_PRESET bit. Signed-off-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit 1caacecb7cb2b72e798f06a32b5061075cf397fa Author: Michael Chan Date: Wed Nov 12 16:01:12 2008 -0800 bnx2: Add PCI ID for 5716S. Signed-off-by: Michael Chan Signed-off-by: Matt Carlson Signed-off-by: Benjamin Li Signed-off-by: David S. Miller commit 1dc1c6adf38bc5799d1594681645ced40ced4b6b Author: Frederic Weisbecker Date: Wed Nov 12 22:49:23 2008 +0100 tracing/function-return-tracer: call prepare_ftrace_return by registers Impact: Optimize a bit the function return tracer This patch changes the calling convention of prepare_ftrace_return to pass its arguments by register. This will optimize it a bit and prepare it to support dynamic tracing. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 62d59d17a5f98edb48b171742dfa531488802f07 Author: Frederic Weisbecker Date: Wed Nov 12 22:47:54 2008 +0100 tracing/function-return-tracer: make the function return tracer lockless Impact: remove spinlocks and irq disabling in function return tracer. I've tried to figure out all of the race condition that could happen when the tracer pushes or pops a return address trace to/from the current thread_info. Theory: _ One thread can only execute on one cpu at a time. So this code doesn't need to be SMP-safe. Just drop the spinlock. _ The only race could happen between the current thread and an interrupt. If an interrupt is raised, it will increase the index of the return stack storage and then execute until the end of the tracing to finally free the index it used. We don't need to disable irqs. This is theorical. In practice, I've tested it with a two-core SMP and had no problem at all. Perhaps -tip testing could confirm it. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 94b80ffd650b22e1fd493ccf6bad7efda4b8ea85 Author: Steven Rostedt Date: Wed Nov 12 16:18:45 2008 -0500 ftrace: rename trace_unlikely.c file Impact: File name change of trace_unlikely.c The "unlikely" name for the tracer is quite ugly. We renamed all the parts of it to "branch" and now it is time to rename the file too. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 80e5ea4506791af206266c5921c97f11d3b17866 Author: Steven Rostedt Date: Wed Nov 12 15:24:24 2008 -0500 ftrace: add tracer called branch Impact: added new branch tracer Currently the tracing of branch profiling (unlikelys and likelys hit) is only activated by the iter_ctrl. This patch adds a tracer called "branch" that will just trace the branch profiling. The advantage of adding this tracer is that it can be added to the ftrace selftests on startup. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 9f029e83e968e5661d7be045bbcb620dbb909938 Author: Steven Rostedt Date: Wed Nov 12 15:24:24 2008 -0500 ftrace: rename unlikely iter_ctrl to branch Impact: rename of iter_ctrl unlikely to branch The unlikely name is ugly. This patch converts the iter_ctrl command "unlikely" and "nounlikely" to "branch" and "nobranch" respectively. It also renames a lot of internal functions to use "branch" instead of "unlikely". Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 2ed84eeb8808cf3c9f039213ca137ffd7d753f0e Author: Steven Rostedt Date: Wed Nov 12 15:24:24 2008 -0500 trace: rename unlikely profiler to branch profiler Impact: name change of unlikely tracer and profiler Ingo Molnar suggested changing the config from UNLIKELY_PROFILE to BRANCH_PROFILING. I never did like the "unlikely" name so I went one step farther, and renamed all the unlikely configurations to a "BRANCH" variant. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 8652cb4b0d87accbe78725fd2a13be2787059649 Author: Prarit Bhargava Date: Wed Nov 12 13:35:00 2008 -0500 x86: warn of incorrect cpu_khz on AMD systems Impact: add debug check If none of the perfctrs are free when calculating cpu_khz we default to using ctr 3 (ie, we just choose 3). This may lead to an incorrect tsc freq value which can cause the system to be unstable. To aid in future debugging, WARN the user of a potential problem. Signed-off-by: Prarit Bhargava Signed-off-by: Ingo Molnar commit 8665596ec05498525014436520b316ba174a068a Author: H. Peter Anvin Date: Wed Nov 12 10:27:35 2008 -0800 x86: fix up the new IRQ code for older versions of gas Older versions of gas don't implement the C-style != operator, they instead want the Pascal-style <> operator. Change != to <> so we don't break compilation with those old versions of gas. Signed-off-by: H. Peter Anvin commit 68f96c0c889b55bf62eee98e859cb686f8850188 Author: Stephen Hemminger Date: Wed Nov 12 10:21:01 2008 -0800 tracing/fastboot: fix perlcritic warning Impact: cleanup Fix the following warning from the perl syntax checking tool perlcritic. This tool is a lint like tool that checks for perl best practices. Loop iterator is not lexical at line 113, column 1. See page 108 of PBP. (Severity: 5) Signed-off-by: Stephen Hemminger Signed-off-by: Ingo Molnar commit c415b3dce30dfb41234e118662e8720f47343a4f Author: Eduardo Habkost Date: Wed Nov 12 11:34:44 2008 -0200 x86: disable IRQs before doing anything on nmi_shootdown_cpus() Impact: make nmi_shootdown_cpus() callable from preemptible context We need to know on which CPU we are running on, and we don't want to be preempted while doing this. Signed-off-by: Eduardo Habkost Signed-off-by: Ingo Molnar commit bb8dd270e62217e2d2172094c6c352c4ddc0a127 Author: Eduardo Habkost Date: Wed Nov 12 11:34:43 2008 -0200 x86: make nmi_shootdown_cpus() available on !SMP and !X86_LOCAL_APIC Impact: widen nmi_shootdown_cpus() availability The X86_LOCAL_APIC #ifdef was for kdump. For !SMP, the function simply does nothing. Signed-off-by: Eduardo Habkost Signed-off-by: Ingo Molnar commit 2ddded213895e41b9cfe1c084127e6c01632ac1a Author: Eduardo Habkost Date: Wed Nov 12 11:34:42 2008 -0200 x86: move nmi_shootdown_cpus() to reboot.c Impact: make nmi_shootdown_cpus() available to the rest of the x86 platform Now nmi_shootdown_cpus() is ready to be used by non-kdump code also. Move it to reboot.c. Signed-off-by: Eduardo Habkost Signed-off-by: Ingo Molnar commit c370e5e089adfd5b1b863f3464cccae9ebf33cca Author: Eduardo Habkost Date: Wed Nov 12 11:34:41 2008 -0200 x86 kdump: make nmi_shootdown_cpus() non-static Impact: make API available to the rest of x86 platform code Add prototype to asm/reboot.h. Signed-off-by: Eduardo Habkost Signed-off-by: Ingo Molnar commit 8e294786316aca41c66b8b73ba1ee74a4ae7d452 Author: Eduardo Habkost Date: Wed Nov 12 11:34:40 2008 -0200 x86 kdump: make kdump_nmi_callback() a function ptr on crash_nmi_callback() Impact: extend nmi_shootdown_cpus() with a callback The reboot code will use a different function on crash_nmi_callback(). Adding a function pointer parameter to nmi_shootdown_cpus() for that. Signed-off-by: Eduardo Habkost Signed-off-by: Ingo Molnar commit d1e7b91cfaa8fc5ed736dcfb8beb5134a2385228 Author: Eduardo Habkost Date: Wed Nov 12 11:34:39 2008 -0200 x86 kdump: create kdump_nmi_shootdown_cpus() Impact: cleanup For the kdump-specific code that was living on nmi_shootdown_cpus(). Signed-off-by: Eduardo Habkost Signed-off-by: Ingo Molnar commit b2bbe71b829564fb65a6bc7e1e25e02d70cffce8 Author: Eduardo Habkost Date: Wed Nov 12 11:34:38 2008 -0200 x86 kdump: move crashing_cpu assignment to nmi_shootdown_cpus() Impact: cleanup This variable will be moved to non-kdump-specific code. Signed-off-by: Eduardo Habkost Signed-off-by: Ingo Molnar commit a7d41820f683c35b53af719210a51f6aa0f86a6a Author: Eduardo Habkost Date: Wed Nov 12 11:34:37 2008 -0200 x86 kdump: extract kdump-specific code from crash_nmi_callback() Impact: cleanup The NMI CPU-halting code will be used on non-kdump cases, also (e.g. emergency_reboot when virtualization is enabled). Signed-off-by: Eduardo Habkost Signed-off-by: Ingo Molnar commit fd64138c0eff8351b93ef99f7da929bb8a49b9ed Author: Jaroslav Kysela Date: Wed Nov 12 16:53:47 2008 +0100 ALSA: include/sound/info.h - coding style changed Change coding style to be more acceptable by checkpatch.pl. Signed-off-by: Jaroslav Kysela Signed-off-by: Takashi Iwai commit 972d4c50fbbb1b9c10293ff90e4e1d45e7fb21ac Author: Jaroslav Kysela Date: Wed Nov 12 16:37:48 2008 +0100 ALSA: hdsp/hdspm: remove card->id from rawmidi device name The card->id (card text identification) can be changed at runtime. It might be confusing to have old text identification in device name. Signed-off-by: Jaroslav Kysela Signed-off-by: Takashi Iwai commit c2eb9c4ea383aee154e7139395872c4da629e715 Author: Jaroslav Kysela Date: Wed Nov 12 16:31:37 2008 +0100 ALSA: when card identification is changed, change also /proc/asound symlink Signed-off-by: Jaroslav Kysela Signed-off-by: Takashi Iwai commit 9fb6198e8c574c6547fbfac0ae1eaf7894ddfdcc Author: Jaroslav Kysela Date: Tue Nov 11 16:51:02 2008 +0100 ALSA: add /sys/class/sound/card#/id (r/w) and card#/number (r/o) files For udev, we need a way to rename soundcard names. The soundcard numbers (indexes) are hardwired but we have a text identification which can be changed at run-time. The ALSA user space tools already allow using of this text identification. Signed-off-by: Jaroslav Kysela Signed-off-by: Takashi Iwai commit eb42c75878e4d13941dcbcf2ef1027c257b099a6 Merge: 9868ee63b896ee4d2ceb8c292e88d7f4e66caaf9 f21f237cf55494c3a4209de323281a3b0528da10 Author: Ingo Molnar Date: Wed Nov 12 15:43:39 2008 +0100 Merge branch 'linus' into x86/crashdump commit 11843ee4d5ee130b84de01c019dde7bf0a3eca78 Author: Takashi Iwai Date: Wed Nov 12 15:18:41 2008 +0100 ALSA: powermac - Rename mic-analog loopback mixer element PCM Playback Volume:1 is actually assigned to a mic loopback volume on iBook G4. Let's rename it. Signed-off-by: Takashi Iwai commit 68d119f0a66f7e3663304343b072e56a2693446b Author: Ingo Molnar Date: Wed Nov 12 14:09:30 2008 +0100 tracing: finetune branch-tracer output Steve suggested the to change the output from this: > bash-3471 [003] 357.014755: [ MISS ] sched_info_dequeued:sched_stats.h:177 > bash-3471 [003] 357.014756: [ .... ] update_curr:sched_fair.c:489 > bash-3471 [003] 357.014758: [ .... ] calc_delta_fair:sched_fair.c:411 to this: > bash-3471 [003] 357.014755: [ MISS ] sched_info_dequeued:sched_stats.h:177 > bash-3471 [003] 357.014756: [ ok ] update_curr:sched_fair.c:489 > bash-3471 [003] 357.014758: [ ok ] calc_delta_fair:sched_fair.c:411 as it makes it clearer to the user what it means exactly. Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 2b7d0390a6d6d595f43ea3806639664afe5b9ebe Author: Ingo Molnar Date: Wed Nov 12 13:17:38 2008 +0100 tracing: branch tracer, fix vdso crash Impact: fix bootup crash the branch tracer missed arch/x86/vdso/vclock_gettime.c from disabling tracing, which caused such bootup crashes: [ 201.840097] init[1]: segfault at 7fffed3fe7c0 ip 00007fffed3fea2e sp 000077 also clean up the ugly ifdefs in arch/x86/kernel/vsyscall_64.c by creating DISABLE_UNLIKELY_PROFILE facility for code to turn off instrumentation on a per file basis. Signed-off-by: Ingo Molnar commit fb0ef645f2c546f8297b2fbf9b2b8fff4a7455e8 Author: Naresh Medisetty Date: Wed Nov 12 10:26:31 2008 +0530 ASoC: DaVinci: Audio: Fix swapping of channels at start of stereo playback Fixes swapping of channels at start of stereo playback. Channel swap can be observed while playing left-only or right-only audio data. The channel swap is fixed by handling the XSYNCERR condition. Signed-off-by: Naresh Medisetty Signed-off-by: Mark Brown commit 9cc3c49ed1b1dbf6e50de4055a6773bd162f24b7 Author: Hiroshi Shimamoto Date: Tue Nov 11 19:11:39 2008 -0800 x86: ia32_signal: remove unnecessary padding Impact: reduce structure padding Remove unnecessary paddings, this saves 4 bytes. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 4a61204856e8b28e9f5489a7875cb3a60afd1e43 Author: Hiroshi Shimamoto Date: Tue Nov 11 19:09:29 2008 -0800 x86: signal_32: introduce retcode and rt_retcode Impact: cleanup Introduce retcode and rt_retcode to replace setting up frame->retcode. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit f88c4ae9f8c3939bee4337c75c7a673b5de7a8a7 Author: Ingo Molnar Date: Wed Nov 12 11:55:41 2008 +0100 tracing: branch tracer, tweak output Impact: modify the tracer output, to make it a bit easier to read Change the output from: > bash-3471 [003] 357.014755: [INCORRECT] sched_info_dequeued:sched_stats.h:177 > bash-3471 [003] 357.014756: [correct] update_curr:sched_fair.c:489 > bash-3471 [003] 357.014758: [correct] calc_delta_fair:sched_fair.c:411 to: > bash-3471 [003] 357.014755: [ MISS ] sched_info_dequeued:sched_stats.h:177 > bash-3471 [003] 357.014756: [ .... ] update_curr:sched_fair.c:489 > bash-3471 [003] 357.014758: [ .... ] calc_delta_fair:sched_fair.c:411 it's good to have fields aligned vertically, and the only important information is a prediction miss, so display only that information. Signed-off-by: Ingo Molnar commit 52f232cb720a7babb752849cbc2cab2d24021209 Author: Steven Rostedt Date: Wed Nov 12 00:14:40 2008 -0500 tracing: likely/unlikely branch annotation tracer Impact: new likely/unlikely branch tracer This patch adds a way to record the instances of the likely() and unlikely() branch condition annotations. When "unlikely" is set in /debugfs/tracing/iter_ctrl the unlikely conditions will be added to any of the ftrace tracers. The change takes effect when a new tracer is passed into the current_tracer file. For example: bash-3471 [003] 357.014755: [INCORRECT] sched_info_dequeued:sched_stats.h:177 bash-3471 [003] 357.014756: [correct] update_curr:sched_fair.c:489 bash-3471 [003] 357.014758: [correct] calc_delta_fair:sched_fair.c:411 bash-3471 [003] 357.014759: [correct] account_group_exec_runtime:sched_stats.h:356 bash-3471 [003] 357.014761: [correct] update_curr:sched_fair.c:489 bash-3471 [003] 357.014763: [INCORRECT] calc_delta_fair:sched_fair.c:411 bash-3471 [003] 357.014765: [correct] calc_delta_mine:sched.c:1279 Which shows the normal tracer heading, as well as whether the condition was correct "[correct]" or was mistaken "[INCORRECT]", followed by the function, file name and line number. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 1f0d69a9fc815db82f15722bf05227190b1d714d Author: Steven Rostedt Date: Wed Nov 12 00:14:39 2008 -0500 tracing: profile likely and unlikely annotations Impact: new unlikely/likely profiler Andrew Morton recently suggested having an in-kernel way to profile likely and unlikely macros. This patch achieves that goal. When configured, every(*) likely and unlikely macro gets a counter attached to it. When the condition is hit, the hit and misses of that condition are recorded. These numbers can later be retrieved by: /debugfs/tracing/profile_likely - All likely markers /debugfs/tracing/profile_unlikely - All unlikely markers. # cat /debug/tracing/profile_unlikely | head correct incorrect % Function File Line ------- --------- - -------- ---- ---- 2167 0 0 do_arch_prctl process_64.c 832 0 0 0 do_arch_prctl process_64.c 804 2670 0 0 IS_ERR err.h 34 71230 5693 7 __switch_to process_64.c 673 76919 0 0 __switch_to process_64.c 639 43184 33743 43 __switch_to process_64.c 624 12740 64181 83 __switch_to process_64.c 594 12740 64174 83 __switch_to process_64.c 590 # cat /debug/tracing/profile_unlikely | \ awk '{ if ($3 > 25) print $0; }' |head -20 44963 35259 43 __switch_to process_64.c 624 12762 67454 84 __switch_to process_64.c 594 12762 67447 84 __switch_to process_64.c 590 1478 595 28 syscall_get_error syscall.h 51 0 2821 100 syscall_trace_leave ptrace.c 1567 0 1 100 native_smp_prepare_cpus smpboot.c 1237 86338 265881 75 calc_delta_fair sched_fair.c 408 210410 108540 34 calc_delta_mine sched.c 1267 0 54550 100 sched_info_queued sched_stats.h 222 51899 66435 56 pick_next_task_fair sched_fair.c 1422 6 10 62 yield_task_fair sched_fair.c 982 7325 2692 26 rt_policy sched.c 144 0 1270 100 pre_schedule_rt sched_rt.c 1261 1268 48073 97 pick_next_task_rt sched_rt.c 884 0 45181 100 sched_info_dequeued sched_stats.h 177 0 15 100 sched_move_task sched.c 8700 0 15 100 sched_move_task sched.c 8690 53167 33217 38 schedule sched.c 4457 0 80208 100 sched_info_switch sched_stats.h 270 30585 49631 61 context_switch sched.c 2619 # cat /debug/tracing/profile_likely | awk '{ if ($3 > 25) print $0; }' 39900 36577 47 pick_next_task sched.c 4397 20824 15233 42 switch_mm mmu_context_64.h 18 0 7 100 __cancel_work_timer workqueue.c 560 617 66484 99 clocksource_adjust timekeeping.c 456 0 346340 100 audit_syscall_exit auditsc.c 1570 38 347350 99 audit_get_context auditsc.c 732 0 345244 100 audit_syscall_entry auditsc.c 1541 38 1017 96 audit_free auditsc.c 1446 0 1090 100 audit_alloc auditsc.c 862 2618 1090 29 audit_alloc auditsc.c 858 0 6 100 move_masked_irq migration.c 9 1 198 99 probe_sched_wakeup trace_sched_switch.c 58 2 2 50 probe_wakeup trace_sched_wakeup.c 227 0 2 100 probe_wakeup_sched_switch trace_sched_wakeup.c 144 4514 2090 31 __grab_cache_page filemap.c 2149 12882 228786 94 mapping_unevictable pagemap.h 50 4 11 73 __flush_cpu_slab slub.c 1466 627757 330451 34 slab_free slub.c 1731 2959 61245 95 dentry_lru_del_init dcache.c 153 946 1217 56 load_elf_binary binfmt_elf.c 904 102 82 44 disk_put_part genhd.h 206 1 1 50 dst_gc_task dst.c 82 0 19 100 tcp_mss_split_point tcp_output.c 1126 As you can see by the above, there's a bit of work to do in rethinking the use of some unlikelys and likelys. Note: the unlikely case had 71 hits that were more than 25%. Note: After submitting my first version of this patch, Andrew Morton showed me a version written by Daniel Walker, where I picked up the following ideas from: 1) Using __builtin_constant_p to avoid profiling fixed values. 2) Using __FILE__ instead of instruction pointers. 3) Using the preprocessor to stop all profiling of likely annotations from vsyscall_64.c. Thanks to Andrew Morton, Arjan van de Ven, Theodore Tso and Ingo Molnar for their feed back on this patch. (*) Not ever unlikely is recorded, those that are used by vsyscalls (a few of them) had to have profiling disabled. Signed-off-by: Steven Rostedt Cc: Andrew Morton Cc: Frederic Weisbecker Cc: Theodore Tso Cc: Arjan van de Ven Cc: Steven Rostedt Signed-off-by: Ingo Molnar commit cb9382e5a94e54d0356d730954396c746ae66d6e Merge: 74239072830ef3f1398edeb1bc1076fc330fd4a2 642edba5f5c545772b89907cf96134c73d6073c7 Author: Ingo Molnar Date: Wed Nov 12 11:50:51 2008 +0100 Merge branches 'tracing/fastboot', 'tracing/function-return-tracer' and 'tracing/ring-buffer' into tracing/core commit 642edba5f5c545772b89907cf96134c73d6073c7 Author: Steven Rostedt Date: Wed Nov 12 00:01:26 2008 -0500 ring-buffer: fix deadlock from reader_lock in read_start Impact: deadlock fix in ring_buffer_read_start The ring_buffer_iter_reset was called from ring_buffer_read_start where both grabbed the reader_lock. This patch separates out the internals of ring_buffer_iter_reset to its own function so that both APIs may grab the reader_lock. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 92a77aac9812d5397abbe6f1920e085e50838635 Author: James Morris Date: Wed Nov 12 21:20:00 2008 +1100 security: remove broken and useless declarations Remove broken declarations for security_capable* functions, which were not needed anyway. Signed-off-by: James Morris commit a7d26f84cb76b962217ce277c3e3a9748a26ac11 Author: Jaroslav Kysela Date: Wed Nov 12 11:02:25 2008 +0100 ALSA: Release v1.0.18a Signed-off-by: Jaroslav Kysela Signed-off-by: Takashi Iwai commit 74239072830ef3f1398edeb1bc1076fc330fd4a2 Author: Frederic Weisbecker Date: Tue Nov 11 23:24:42 2008 +0100 tracing/fastboot: Use the ring-buffer timestamp for initcall entries Impact: Split the boot tracer entries in two parts: call and return Now that we are using the sched tracer from the boot tracer, we want to use the same timestamp than the ring-buffer to have consistent time captures between sched events and initcall events. So we get rid of the old time capture by the boot tracer and split the initcall events in two parts: call and return. This way we have the ring buffer timestamp of both. An example trace: [ 27.904149584] calling net_ns_init+0x0/0x1c0 @ 1 [ 27.904429624] initcall net_ns_init+0x0/0x1c0 returned 0 after 0 msecs [ 27.904575926] calling reboot_init+0x0/0x20 @ 1 [ 27.904655399] initcall reboot_init+0x0/0x20 returned 0 after 0 msecs [ 27.904800228] calling sysctl_init+0x0/0x30 @ 1 [ 27.905142914] initcall sysctl_init+0x0/0x30 returned 0 after 0 msecs [ 27.905287211] calling ksysfs_init+0x0/0xb0 @ 1 ##### CPU 0 buffer started #### init-1 [000] 27.905395: 1:120:R + [001] 11:115:S ##### CPU 1 buffer started #### -0 [001] 27.905425: 0:140:R ==> [001] 11:115:R init-1 [000] 27.905426: 1:120:D ==> [000] 0:140:R -0 [000] 27.905431: 0:140:R + [000] 4:115:S -0 [000] 27.905451: 0:140:R ==> [000] 4:115:R ksoftirqd/0-4 [000] 27.905456: 4:115:S ==> [000] 0:140:R udevd-11 [001] 27.905458: 11:115:R + [001] 14:115:R -0 [000] 27.905459: 0:140:R + [000] 4:115:S -0 [000] 27.905462: 0:140:R ==> [000] 4:115:R udevd-11 [001] 27.905462: 11:115:R ==> [001] 14:115:R ksoftirqd/0-4 [000] 27.905467: 4:115:S ==> [000] 0:140:R -0 [000] 27.905470: 0:140:R + [000] 4:115:S -0 [000] 27.905473: 0:140:R ==> [000] 4:115:R ksoftirqd/0-4 [000] 27.905476: 4:115:S ==> [000] 0:140:R -0 [000] 27.905479: 0:140:R + [000] 4:115:S -0 [000] 27.905482: 0:140:R ==> [000] 4:115:R ksoftirqd/0-4 [000] 27.905486: 4:115:S ==> [000] 0:140:R udevd-14 [001] 27.905499: 14:120:X ==> [001] 11:115:R udevd-11 [001] 27.905506: 11:115:R + [000] 1:120:D -0 [000] 27.905515: 0:140:R ==> [000] 1:120:R udevd-11 [001] 27.905517: 11:115:S ==> [001] 0:140:R [ 27.905557107] initcall ksysfs_init+0x0/0xb0 returned 0 after 3906 msecs [ 27.905705736] calling init_jiffies_clocksource+0x0/0x10 @ 1 [ 27.905779239] initcall init_jiffies_clocksource+0x0/0x10 returned 0 after 0 msecs [ 27.906769814] calling pm_init+0x0/0x30 @ 1 [ 27.906853627] initcall pm_init+0x0/0x30 returned 0 after 0 msecs [ 27.906997803] calling pm_disk_init+0x0/0x20 @ 1 [ 27.907076946] initcall pm_disk_init+0x0/0x20 returned 0 after 0 msecs [ 27.907222556] calling swsusp_header_init+0x0/0x30 @ 1 [ 27.907294325] initcall swsusp_header_init+0x0/0x30 returned 0 after 0 msecs [ 27.907439620] calling stop_machine_init+0x0/0x50 @ 1 init-1 [000] 27.907485: 1:120:R + [000] 2:115:S init-1 [000] 27.907490: 1:120:D ==> [000] 2:115:R kthreadd-2 [000] 27.907507: 2:115:R + [001] 15:115:R -0 [001] 27.907517: 0:140:R ==> [001] 15:115:R kthreadd-2 [000] 27.907517: 2:115:D ==> [000] 0:140:R -0 [000] 27.907521: 0:140:R + [000] 4:115:S -0 [000] 27.907524: 0:140:R ==> [000] 4:115:R udevd-15 [001] 27.907527: 15:115:D + [000] 2:115:D ksoftirqd/0-4 [000] 27.907537: 4:115:S ==> [000] 2:115:R udevd-15 [001] 27.907537: 15:115:D ==> [001] 0:140:R kthreadd-2 [000] 27.907546: 2:115:R + [000] 1:120:D kthreadd-2 [000] 27.907550: 2:115:S ==> [000] 1:120:R init-1 [000] 27.907584: 1:120:R + [000] 15: 0:D init-1 [000] 27.907589: 1:120:R + [000] 2:115:S init-1 [000] 27.907593: 1:120:D ==> [000] 15: 0:R udevd-15 [000] 27.907601: 15: 0:S ==> [000] 2:115:R ##### CPU 0 buffer started #### kthreadd-2 [000] 27.907616: 2:115:R + [001] 16:115:R ##### CPU 1 buffer started #### -0 [001] 27.907620: 0:140:R ==> [001] 16:115:R kthreadd-2 [000] 27.907621: 2:115:D ==> [000] 0:140:R udevd-16 [001] 27.907625: 16:115:D + [000] 2:115:D -0 [000] 27.907628: 0:140:R + [000] 4:115:S udevd-16 [001] 27.907629: 16:115:D ==> [001] 0:140:R -0 [000] 27.907631: 0:140:R ==> [000] 4:115:R ksoftirqd/0-4 [000] 27.907636: 4:115:S ==> [000] 2:115:R kthreadd-2 [000] 27.907644: 2:115:R + [000] 1:120:D kthreadd-2 [000] 27.907647: 2:115:S ==> [000] 1:120:R init-1 [000] 27.907657: 1:120:R + [001] 16: 0:D -0 [001] 27.907666: 0:140:R ==> [001] 16: 0:R [ 27.907703862] initcall stop_machine_init+0x0/0x50 returned 0 after 0 msecs [ 27.907850704] calling filelock_init+0x0/0x30 @ 1 [ 27.907926573] initcall filelock_init+0x0/0x30 returned 0 after 0 msecs [ 27.908071327] calling init_script_binfmt+0x0/0x10 @ 1 [ 27.908165195] initcall init_script_binfmt+0x0/0x10 returned 0 after 0 msecs [ 27.908309461] calling init_elf_binfmt+0x0/0x10 @ 1 Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 3f5ec13696fd4a33bde42f385406cbb1d3cc96fd Author: Frederic Weisbecker Date: Tue Nov 11 23:21:31 2008 +0100 tracing/fastboot: move boot tracer structs and funcs into their own header. Impact: Cleanups on the boot tracer and ftrace This patch bring some cleanups about the boot tracer headers. The functions and structures of this tracer have nothing related to ftrace and should have so their own header file. Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 60a011c736e7dd09a0b01ca6a051a416f3f52ffb Merge: d06bbd669539215405874d8fe32ab65105e6c4bb 19b3e9671c5a219b8c34da2cc66e0ce7c3a501ae Author: Ingo Molnar Date: Wed Nov 12 10:17:09 2008 +0100 Merge branch 'tracing/function-return-tracer' into tracing/fastboot commit d06bbd669539215405874d8fe32ab65105e6c4bb Merge: d844222a54c33a960755b44b934cd1b01b05dceb 3e89c7bb92fc92bb964734341487798c8d497bae c1e7abbc7afc97367cd77c8f2895c2169a8f9c87 Author: Ingo Molnar Date: Wed Nov 12 10:11:37 2008 +0100 Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core Conflicts: kernel/trace/ring_buffer.c commit 90d0be2fc33b4c4e11fc596da4736189be947d99 Merge: f43aa025b7de79d6a615ea4c1e6be7e6b1cea538 d7a8943635485597ae7c6d554a8ccf3ce5a42d2d Author: Takashi Iwai Date: Wed Nov 12 10:02:04 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda Conflicts: sound/pci/hda/patch_sigmatel.c commit e42ea986e4a4cab4209d982feffcaf50f21e80e3 Author: Eric Dumazet Date: Wed Nov 12 00:54:54 2008 -0800 net: Cleanup of neighbour code Using read_pnet() and write_pnet() in neighbour code ease the reading of code. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 7a9546ee354ec6f23af403992b8c07baa50a23d2 Author: Eric Dumazet Date: Wed Nov 12 00:54:20 2008 -0800 net: ib_net pointer should depends on CONFIG_NET_NS We can shrink size of "struct inet_bind_bucket" by 50%, using read_pnet() and write_pnet() Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 8f424b5f32d78b4f353b3cddca9804808ef063eb Author: Eric Dumazet Date: Wed Nov 12 00:53:30 2008 -0800 net: Introduce read_pnet() and write_pnet() helpers This patch introduces two helpers that deal with reading and writing struct net pointers in various network structures. Their implementation depends on CONFIG_NET_NS For symmetry, both functions work with "struct net **pnet". Their usage should reduce the number of #ifdef CONFIG_NET_NS, without adding many helpers for each network structure that hold a "struct net *pointer" Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 9eca0a47dee201a73967026985b5f0a79a46bd36 Author: Gerrit Renker Date: Wed Nov 12 00:48:44 2008 -0800 dccp: Resolve dependencies of features on choice of CCID This provides a missing link in the code chain, as several features implicitly depend and/or rely on the choice of CCID. Most notably, this is the Send Ack Vector feature, but also Ack Ratio and Send Loss Event Rate (also taken care of). For Send Ack Vector, the situation is as follows: * since CCID2 mandates the use of Ack Vectors, there is no point in allowing endpoints which use CCID2 to disable Ack Vector features such a connection; * a peer with a TX CCID of CCID2 will always expect Ack Vectors, and a peer with a RX CCID of CCID2 must always send Ack Vectors (RFC 4341, sec. 4); * for all other CCIDs, the use of (Send) Ack Vector is optional and thus negotiable. However, this implies that the code negotiating the use of Ack Vectors also supports it (i.e. is able to supply and to either parse or ignore received Ack Vectors). Since this is not the case (CCID-3 has no Ack Vector support), the use of Ack Vectors is here disabled, with a comment in the source code. An analogous consideration arises for the Send Loss Event Rate feature, since the CCID-3 implementation does not support the loss interval options of RFC 4342. To make such use explicit, corresponding feature-negotiation options are inserted which signal the use of the loss event rate option, as it is used by the CCID3 code. Lastly, the values of the Ack Ratio feature are matched to the choice of CCID. The patch implements this as a function which is called after the user has made all other registrations for changing default values of features. The table is variable-length, the reserved (and hence for feature-negotiation invalid, confirmed by considering section 19.4 of RFC 4340) feature number `0' is used to mark the end of the table. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit d90ebcbfa7f5a8b4e20518c9f94c5c4e4cd3c2e5 Author: Gerrit Renker Date: Wed Nov 12 00:47:26 2008 -0800 dccp: Query supported CCIDs This provides a data structure to record which CCIDs are locally supported and three accessor functions: - a test function for internal use which is used to validate CCID requests made by the user; - a copy function so that the list can be used for feature-negotiation; - documented getsockopt() support so that the user can query capabilities. The data structure is a table which is filled in at compile-time with the list of available CCIDs (which in turn depends on the Kconfig choices). Using the copy function for cloning the list of supported CCIDs is useful for feature negotiation, since the negotiation is now with the full list of available CCIDs (e.g. {2, 3}) instead of the default value {2}. This means negotiation will not fail if the peer requests to use CCID3 instead of CCID2. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit e8ef967a54f401ac5e8637b7f7f8bddb006144c4 Author: Gerrit Renker Date: Wed Nov 12 00:43:40 2008 -0800 dccp: Registration routines for changing feature values Two registration routines, for SP and NN features, are provided by this patch, replacing a previous routine which was used for both feature types. These are internal-only routines and therefore start with `__feat_register'. It further exports the known limits of Sequence Window and Ack Ratio as symbolic constants. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit f74e91b6cca5889e667193c7e794186db73c2000 Author: Gerrit Renker Date: Wed Nov 12 00:42:58 2008 -0800 dccp: Limit feature negotiation to connection setup phase This patch limits feature (capability) negotation to the connection setup phase: 1. Although it is theoretically possible to perform feature negotiation at any time (and RFC 4340 supports this), in practice this is prohibitively complex, as it requires to put traffic on hold for each new negotiation. 2. As a byproduct of restricting feature negotiation to connection setup, the feature-negotiation retransmit timer is no longer required. This part is now mapped onto the protocol-level retransmission. Details indicating why timers are no longer needed can be found on http://www.erg.abdn.ac.uk/users/gerrit/dccp/notes/feature_negotiation/\ implementation_notes.html This patch disables anytime negotiation, subsequent patches work out full feature negotiation support for connection setup. Signed-off-by: Gerrit Renker Signed-off-by: David S. Miller commit 6bb3ce25d05f2990c8a19adaf427531430267c1f Author: Alexey Dobriyan Date: Tue Nov 11 17:25:22 2008 -0800 net: remove struct dst_entry::entry_size Unused after kmem_cache_zalloc() conversion. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 9b739ba5e66c96938fbc07a4dbd9da5b81eac56f Author: Alexey Dobriyan Date: Tue Nov 11 16:47:44 2008 -0800 net: remove struct neigh_table::pde ->pde isn't actually needed, since name is stashed in ->id. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 14d7ca5c575853664d8fe4f225a77b8df1b7de7d Author: H. Peter Anvin Date: Tue Nov 11 16:19:48 2008 -0800 x86: attempt reboot via port CF9 if we have standard PCI ports Impact: Changes reboot behavior. If port CF9 seems to be safe to touch, attempt it before trying the keyboard controller. Port CF9 is not available on all chipsets (a significant but decreasing number of modern chipsets don't implement it), but port CF9 itself should in general be safe to poke (no ill effects if unimplemented) on any system which has PCI Configuration Method #1 or #2, as it falls inside the PCI configuration port range in both cases. No chipset without PCI is known to have port CF9, either, although an explicit "pci=bios" would mean we miss this and therefore don't use port CF9. An explicit "reboot=pci" can be used to force the use of port CF9. Signed-off-by: H. Peter Anvin commit 7e452baf6b96b5aeba097afd91501d33d390cc97 Merge: 3ac38c3a2e7dac3f8f35a56eb85c27881a4c3833 f21f237cf55494c3a4209de323281a3b0528da10 Author: David S. Miller Date: Tue Nov 11 15:43:02 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/message/fusion/mptlan.c drivers/net/sfc/ethtool.c net/mac80211/debugfs_sta.c commit 3ac38c3a2e7dac3f8f35a56eb85c27881a4c3833 Merge: eb37b41cc2274cdecfc19d371717c321fe2ab426 9757d55652f98836b9a4cac307a01f8b0232dbd9 Author: David S. Miller Date: Tue Nov 11 14:40:06 2008 -0800 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 commit 939b787130bf22887a09d8fd2641a094dcef8c22 Author: H. Peter Anvin Date: Tue Nov 11 13:51:52 2008 -0800 x86: 64 bits: shrink and align IRQ stubs Move the IRQ stub generation to assembly to simplify it and for consistency with 32 bits. Doing it in a C file with asm() statements doesn't help clarity, and it prevents some optimizations. Shrink the IRQ stubs down to just over four bytes per (we fit seven into a 32-byte chunk.) This shrinks the total icache consumption of the IRQ stubs down to an even kilobyte, if all of them are in active use. The downside is that we end up with a double jump, which could have a negative effect on some pipelines. The double jump is always inside the same cacheline on any modern chips. To get the most effect, cache-align the IRQ stubs. This makes the 64-bit code match changes already done to the 32-bit code, and should open up irqinit*.c for unification. Signed-off-by: H. Peter Anvin commit 486936cd93e99c802153b3f2f629c5ce62b8c0d4 Merge: 1c1b777a5673b57a6c0377ba60a790d05e4a0676 f21f237cf55494c3a4209de323281a3b0528da10 Author: Paul Mackerras Date: Wed Nov 12 08:43:22 2008 +1100 Merge branch 'linux-2.6' into next commit b7c6244f13d37592003b46e12500a90e9781ad9d Author: H. Peter Anvin Date: Tue Nov 11 13:24:58 2008 -0800 x86: 32 bits: shrink and align IRQ stubs Shrink the IRQ stubs on 32 bits down to just over four bytes per (we fit seven into a 32-byte chunk.) This shrinks the total icache consumption of the IRQ stubs down to an even kilobyte, if all of them are in active use. The downside is that we end up with a double jump, which could have a negative effect on some pipelines. The double jump is always inside the same cacheline on any modern chips (the exception being 486/Elan/Geode which have only 16-byte cachelines, but are unlikely to have too many interrupt sources.) To get the most effect, cache-align the IRQ stubs. Signed-off-by: H. Peter Anvin commit 4687518c4cb7807fbeff21770e309080f9eb7f2f Author: H. Peter Anvin Date: Tue Nov 11 13:03:07 2008 -0800 x86: 32 bit: interrupt stub consistency with 64 bit Don't generate interrupt stubs for interrupt vectors below FIRST_EXTERNAL_VECTOR, and make the table of interrupt vectors (interrupt[]) __initconst. Both of these changes both conserve memory and improve consistency with 64 bits. Signed-off-by: H. Peter Anvin commit 3e89c7bb92fc92bb964734341487798c8d497bae Author: Steven Rostedt Date: Tue Nov 11 15:28:41 2008 -0500 ring-buffer: clean up warn ons Impact: Restructure WARN_ONs in ring_buffer.c The current WARN_ON macros in ring_buffer.c are quite ugly. This patch cleans them up and uses a single RB_WARN_ON that returns the value of the condition. This allows the caller to abort the function if the condition is true. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 9ee670fd87b7d69c8633b94c42aadcbbcb96f28e Author: KOSAKI Motohiro Date: Tue Nov 11 11:49:01 2008 +0900 x86/doc: spelling fix for grub Impact: documentation fix I met okuji-san (GRUB maintainer) yesterday. He said GRuB isn't correct spelled and he want to fix it. Signed-off-by: KOSAKI Motohiro Signed-off-by: Ingo Molnar commit c280ea5e4c6ba0b38ed6b005150fe16a660e903b Author: Ingo Molnar Date: Sat Nov 8 13:29:45 2008 +0100 x86: fix documentation typo in arch/x86/Kconfig Impact: documentation update Chris Snook pointed out that it's Core i7, not Core 7i. Reported-by: Chris Snook Signed-off-by: Ingo Molnar commit a4c52791fa8c73e3cffe4a82865edb41e8fe8c3c Author: Jiri Slaby Date: Sat Nov 8 11:24:57 2008 +0100 x86, 64-bit: update address space documentation Impact: documentation update Commit a6523748bddd38bcec11431f57502090b6014a96 (paravirt/x86, 64-bit: move __PAGE_OFFSET to leave a space for hypervisor) changed address space without changing the documentation. Change it according to the code change -- direct mapping start: ffff810000000000 => ffff880000000000 which gives 57 TiB, something between 45 and 46 bits. Signed-off-by: Jiri Slaby Signed-off-by: Ingo Molnar commit 9757d55652f98836b9a4cac307a01f8b0232dbd9 Author: Sujith Date: Tue Nov 4 18:25:27 2008 +0530 ath9k: Fix compilation failure when RFKILL is enabled Signed-off-by: Sujith Signed-off-by: John W. Linville commit f83c9d0fe42a7544b4d4ffcebb2e6716fcfd95c0 Author: Steven Rostedt Date: Tue Nov 11 18:47:44 2008 +0100 ring-buffer: add reader lock Impact: serialize reader accesses to individual CPU ring buffers The code in the ring buffer expects only one reader at a time, but currently it puts that requirement on the caller. This is not strong enough, and this patch adds a "reader_lock" that serializes the access to the reader API of the ring buffer. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit a98f8fd24fb24fcb9a359553e64dd6aac5cf4279 Author: Thomas Gleixner Date: Thu Nov 6 01:13:39 2008 +0100 x86: apic reset counter on shutdown Impact: avoid spurious lapic timer events on shutdown The apic timer might be close to firing when it is shutdown. We can not really disable the timer - we just mask the interrupt. That way we can get an extra interrupt when it is reenabled. Set the counter to max on shutdown to avoid this. Signed-off-by: Thomas Gleixner Signed-off-by: Ingo Molnar commit d3ec5cae0921611ceae06464ef6291012dd9849f Author: Ivan Vecera Date: Tue Nov 11 14:33:44 2008 +0100 x86: call machine_shutdown and stop all CPUs in native_machine_halt Impact: really halt all CPUs on halt Function machine_halt (resp. native_machine_halt) is empty for x86 architectures. When command 'halt -f' is invoked, the message "System halted." is displayed but this is not really true because all CPUs are still running. There are also similar inconsistencies for other arches (some uses power-off for halt or forever-loop with IRQs enabled/disabled). IMO there should be used the same approach for all architectures OR what does the message "System halted" really mean? This patch fixes it for x86. Signed-off-by: Ivan Vecera Signed-off-by: Ingo Molnar commit 50ee91765e25e7967a7b69cd5cc2bcab85e2eeb8 Author: Dhaval Giani Date: Tue Nov 11 18:13:23 2008 +0530 sched/rt: removed unneeded defintion Impact: cleanup This function no longer exists, so remove the defintion. Signed-off-by: Dhaval Giani Signed-off-by: Ingo Molnar commit 934352f214b3251eb0793c1209d346595a661d80 Author: Bharata B Rao Date: Mon Nov 10 20:41:13 2008 +0530 sched: add hierarchical accounting to cpu accounting controller Impact: improve CPU time accounting of tasks under the cpu accounting controller Add hierarchical accounting to cpu accounting controller and include cpuacct documentation. Currently, while charging the task's cputime to its accounting group, the accounting group hierarchy isn't updated. This patch charges the cputime of a task to its accounting group and all its parent accounting groups. Reported-by: Srivatsa Vaddagiri Signed-off-by: Bharata B Rao Reviewed-by: Paul Menage Acked-by: Balbir Singh Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 19b3e9671c5a219b8c34da2cc66e0ce7c3a501ae Author: Ingo Molnar Date: Tue Nov 11 11:57:02 2008 +0100 tracing: function return tracer, build fix fix: arch/x86/kernel/ftrace.c: In function 'ftrace_return_to_handler': arch/x86/kernel/ftrace.c:112: error: implicit declaration of function 'cpu_clock' cpu_clock() is implicitly included via a number of ways, but its real location is sched.h. (Build failure is triggerable if enough other kernel components are turned off.) Signed-off-by: Ingo Molnar commit 066746796bd2f0a1ba210c0dded3b6ee4032692a Author: Eric Paris Date: Tue Nov 11 22:02:57 2008 +1100 Currently SELinux jumps through some ugly hoops to not audit a capbility check when determining if a process has additional powers to override memory limits or when trying to read/write illegal file labels. Use the new noaudit call instead. Signed-off-by: Eric Paris Acked-by: Stephen Smalley Signed-off-by: James Morris commit a2f2945a99057c7d44043465906c6bb63c3368a0 Author: Eric Paris Date: Tue Nov 11 22:02:54 2008 +1100 The oomkiller calculations make decisions based on capabilities. Since these are not security decisions and LSMs should not record if they fall the request they should use the new has_capability_noaudit() interface so the denials will not be recorded. Signed-off-by: Eric Paris Acked-by: Stephen Smalley Signed-off-by: James Morris commit 06112163f5fd9e491a7f810443d81efa9d88e247 Author: Eric Paris Date: Tue Nov 11 22:02:50 2008 +1100 Add a new capable interface that will be used by systems that use audit to make an A or B type decision instead of a security decision. Currently this is the case at least for filesystems when deciding if a process can use the reserved 'root' blocks and for the case of things like the oom algorithm determining if processes are root processes and should be less likely to be killed. These types of security system requests should not be audited or logged since they are not really security decisions. It would be possible to solve this problem like the vm_enough_memory security check did by creating a new LSM interface and moving all of the policy into that interface but proves the needlessly bloat the LSM and provide complex indirection. This merely allows those decisions to be made where they belong and to not flood logs or printk with denials for thing that are not security decisions. Signed-off-by: Eric Paris Acked-by: Stephen Smalley Signed-off-by: James Morris commit 637d32dc720897616e8a1a4f9e9609e29d431800 Author: Eric Paris Date: Wed Oct 29 15:42:12 2008 +1100 Capabilities: BUG when an invalid capability is requested If an invalid (large) capability is requested the capabilities system may panic as it is dereferencing an array of fixed (short) length. Its possible (and actually often happens) that the capability system accidentally stumbled into a valid memory region but it also regularly happens that it hits invalid memory and BUGs. If such an operation does get past cap_capable then the selinux system is sure to have problems as it already does a (simple) validity check and BUG. This is known to happen by the broken and buggy firegl driver. This patch cleanly checks all capable calls and BUG if a call is for an invalid capability. This will likely break the firegl driver for some situations, but it is the right thing to do. Garbage into a security system gets you killed/bugged Signed-off-by: Eric Paris Acked-by: Arjan van de Ven Acked-by: Serge Hallyn Acked-by: Andrew G. Morgan Signed-off-by: James Morris commit e68b75a027bb94066576139ee33676264f867b87 Author: Eric Paris Date: Tue Nov 11 21:48:22 2008 +1100 When the capset syscall is used it is not possible for audit to record the actual capbilities being added/removed. This patch adds a new record type which emits the target pid and the eff, inh, and perm cap sets. example output if you audit capset syscalls would be: type=SYSCALL msg=audit(1225743140.465:76): arch=c000003e syscall=126 success=yes exit=0 a0=17f2014 a1=17f201c a2=80000000 a3=7fff2ab7f060 items=0 ppid=2160 pid=2223 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="setcap" exe="/usr/sbin/setcap" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null) type=UNKNOWN[1322] msg=audit(1225743140.465:76): pid=0 cap_pi=ffffffffffffffff cap_pp=ffffffffffffffff cap_pe=ffffffffffffffff Signed-off-by: Eric Paris Acked-by: Serge Hallyn Signed-off-by: James Morris commit 3fc689e96c0c90b6fede5946d6c31075e9464f69 Author: Eric Paris Date: Tue Nov 11 21:48:18 2008 +1100 Any time fcaps or a setuid app under SECURE_NOROOT is used to result in a non-zero pE we will crate a new audit record which contains the entire set of known information about the executable in question, fP, fI, fE, fversion and includes the process's pE, pI, pP. Before and after the bprm capability are applied. This record type will only be emitted from execve syscalls. an example of making ping use fcaps instead of setuid: setcap "cat_net_raw+pe" /bin/ping type=SYSCALL msg=audit(1225742021.015:236): arch=c000003e syscall=59 success=yes exit=0 a0=1457f30 a1=14606b0 a2=1463940 a3=321b770a70 items=2 ppid=2929 pid=2963 auid=0 uid=500 gid=500 euid=500 suid=500 fsuid=500 egid=500 sgid=500 fsgid=500 tty=pts0 ses=3 comm="ping" exe="/bin/ping" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null) type=UNKNOWN[1321] msg=audit(1225742021.015:236): fver=2 fp=0000000000002000 fi=0000000000000000 fe=1 old_pp=0000000000000000 old_pi=0000000000000000 old_pe=0000000000000000 new_pp=0000000000002000 new_pi=0000000000000000 new_pe=0000000000002000 type=EXECVE msg=audit(1225742021.015:236): argc=2 a0="ping" a1="127.0.0.1" type=CWD msg=audit(1225742021.015:236): cwd="/home/test" type=PATH msg=audit(1225742021.015:236): item=0 name="/bin/ping" inode=49256 dev=fd:00 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:ping_exec_t:s0 cap_fp=0000000000002000 cap_fe=1 cap_fver=2 type=PATH msg=audit(1225742021.015:236): item=1 name=(null) inode=507915 dev=fd:00 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:ld_so_t:s0 Signed-off-by: Eric Paris Acked-by: Serge Hallyn Signed-off-by: James Morris commit 851f7ff56d9c21272f289dd85fb3f1b6cf7a6e10 Author: Eric Paris Date: Tue Nov 11 21:48:14 2008 +1100 This patch will print cap_permitted and cap_inheritable data in the PATH records of any file that has file capabilities set. Files which do not have fcaps set will not have different PATH records. An example audit record if you run: setcap "cap_net_admin+pie" /bin/bash /bin/bash type=SYSCALL msg=audit(1225741937.363:230): arch=c000003e syscall=59 success=yes exit=0 a0=2119230 a1=210da30 a2=20ee290 a3=8 items=2 ppid=2149 pid=2923 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=3 comm="ping" exe="/bin/ping" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null) type=EXECVE msg=audit(1225741937.363:230): argc=2 a0="ping" a1="www.google.com" type=CWD msg=audit(1225741937.363:230): cwd="/root" type=PATH msg=audit(1225741937.363:230): item=0 name="/bin/ping" inode=49256 dev=fd:00 mode=0104755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:ping_exec_t:s0 cap_fp=0000000000002000 cap_fi=0000000000002000 cap_fe=1 cap_fver=2 type=PATH msg=audit(1225741937.363:230): item=1 name=(null) inode=507915 dev=fd:00 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:ld_so_t:s0 Signed-off-by: Eric Paris Acked-by: Serge Hallyn Signed-off-by: James Morris commit c0b004413a46a0a5744e6d2b85220fe9d2c33d48 Author: Eric Paris Date: Tue Nov 11 21:48:10 2008 +1100 This patch add a generic cpu endian caps structure and externally available functions which retrieve fcaps information from disk. This information is necessary so fcaps information can be collected and recorded by the audit system. Signed-off-by: Eric Paris Acked-by: Serge Hallyn Signed-off-by: James Morris commit 9d36be76c55ad2c2bb29683b752b0d9ad2e4eeef Author: Eric Paris Date: Tue Nov 11 21:48:07 2008 +1100 Document the order of arguments for cap_issubset. It's not instantly clear which order the argument should be in. So give an example. Signed-off-by: Eric Paris Acked-by: Serge Hallyn Signed-off-by: James Morris commit ff9b48c3598732926fa09afd7f526981c32a48cc Author: Bharata B Rao Date: Mon Nov 10 21:34:09 2008 +0530 sched: include group statistics in /proc/sched_debug Impact: extend /proc/sched_debug info Since the statistics of a group entity isn't exported directly from the kernel, it becomes difficult to obtain some of the group statistics. For example, the current method to obtain exec time of a group entity is not always accurate. One has to read the exec times of all the tasks(/proc//sched) in the group and add them. This method fails (or becomes difficult) if we want to collect stats of a group over a duration where tasks get created and terminated. This patch makes it easier to obtain group stats by directly including them in /proc/sched_debug. Stats like group exec time would help user programs (like LTP) to accurately measure the group fairness. An example output of group stats from /proc/sched_debug: cfs_rq[3]:/3/a/1 .exec_clock : 89.598007 .MIN_vruntime : 0.000001 .min_vruntime : 256300.970506 .max_vruntime : 0.000001 .spread : 0.000000 .spread0 : -25373.372248 .nr_running : 0 .load : 0 .yld_exp_empty : 0 .yld_act_empty : 0 .yld_both_empty : 0 .yld_count : 4474 .sched_switch : 0 .sched_count : 40507 .sched_goidle : 12686 .ttwu_count : 15114 .ttwu_local : 11950 .bkl_count : 67 .nr_spread_over : 0 .shares : 0 .se->exec_start : 113676.727170 .se->vruntime : 1592.612714 .se->sum_exec_runtime : 89.598007 .se->wait_start : 0.000000 .se->sleep_start : 0.000000 .se->block_start : 0.000000 .se->sleep_max : 0.000000 .se->block_max : 0.000000 .se->exec_max : 1.000282 .se->slice_max : 1.999750 .se->wait_max : 54.981093 .se->wait_sum : 217.610521 .se->wait_count : 50 .se->load.weight : 2 Signed-off-by: Bharata B Rao Acked-by: Srivatsa Vaddagiri Acked-by: Dhaval Giani Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit a3d732f93785da17e0137210deadb4616f5536fc Author: Cliff Wickman Date: Mon Nov 10 16:16:31 2008 -0600 x86, UV: fix redundant creation of sgi_uv Impact: fix double entry creation in /proc There is a collision between two UV functions: both uv_ptc_init() and gru_proc_init() try to make /proc/sgi_uv So move it's creation to a single place: uv_system_init() Signed-off-by: Cliff Wickman Signed-off-by: Ingo Molnar commit 867f7fb3ebb831970847b179e7df5a9ab10da16d Author: Ingo Molnar Date: Tue Nov 11 11:18:14 2008 +0100 tracing, x86: function return tracer, fix assembly constraints fix: arch/x86/kernel/ftrace.c: Assembler messages: arch/x86/kernel/ftrace.c:140: Error: missing ')' arch/x86/kernel/ftrace.c:140: Error: junk `(%ebp))' after expression arch/x86/kernel/ftrace.c:141: Error: missing ')' arch/x86/kernel/ftrace.c:141: Error: junk `(%ebp))' after expression the [parent_replaced] is used in an =rm fashion, so that constraint is correct in isolation - but [parent_old] aliases register %0 and uses it in an addressing mode that is only valid with registers - so change the constraint from =rm to =r. This fixes the build failure. Signed-off-by: Ingo Molnar commit 8587b33f4adee4e7614ea7f443346c3b6bb5427a Author: Wim Van Sebroeck Date: Tue Nov 11 09:56:00 2008 +0000 [PATCH] nvram - convert PRINT_PROC to seq_file Convert the /proc/drivers/nvram file from the old PRINT_PROC macro to the new seq_file filesystem. Signed-off-by: Wim Van Sebroeck commit 971ddcf8ad3aa88e0daee6799925858e9f820cb4 Author: Wim Van Sebroeck Date: Tue Nov 11 09:44:07 2008 +0000 [PATCH] nvram - CodingStyle Bring drivers/char/nvram.c in line with the Coding Style. Signed-off-by: Wim Van Sebroeck commit f1c4be5edad3756212cbbbeab39428fe90c27109 Author: Ingo Molnar Date: Tue Nov 11 10:22:36 2008 +0100 tracing, x86: clean up FUNCTION_RET_TRACER Kconfig Impact: cleanup move FUNCTION_RET_TRACER to the X86 select section, where we have all the other options. Signed-off-by: Ingo Molnar commit 15e6cb3673ea6277999642802406a764b49391b0 Author: Frederic Weisbecker Date: Tue Nov 11 07:14:25 2008 +0100 tracing: add a tracer to catch execution time of kernel functions Impact: add new tracing plugin which can trace full (entry+exit) function calls This tracer uses the low level function return ftrace plugin to measure the execution time of the kernel functions. The first field is the caller of the function, the second is the measured function, and the last one is the execution time in nanoseconds. - v3: - HAVE_FUNCTION_RET_TRACER have been added. Each arch that support ftrace return should enable it. - ftrace_return_stub becomes ftrace_stub. - CONFIG_FUNCTION_RET_TRACER depends now on CONFIG_FUNCTION_TRACER - Return traces printing can be used for other tracers on trace.c - Adapt to the new tracing API (no more ctrl_update callback) - Correct the check of "disabled" during insertion. - Minor changes... Signed-off-by: Frederic Weisbecker Cc: Steven Rostedt Signed-off-by: Ingo Molnar commit caf4b323b02a16c92fba449952ac6515ddc76d7a Author: Frederic Weisbecker Date: Tue Nov 11 07:03:45 2008 +0100 tracing, x86: add low level support for ftrace return tracing Impact: add infrastructure for function-return tracing Add low level support for ftrace return tracing. This plug-in stores return addresses on the thread_info structure of the current task. The index of the current return address is initialized when the task is the first one (init) and when a process forks (the child). It is not needed when a task does a sys_execve because after this syscall, it still needs to return on the kernel functions it called. Note that the code of return_to_handler has been suggested by Steven Rostedt as almost all of the ideas of improvements in this V3. For purpose of security, arch/x86/kernel/process_32.c is not traced because __switch_to() changes the current task during its execution. That could cause inconsistency in the stored return address of this function even if I didn't have any crash after testing with tracing on this function enabled. Signed-off-by: Frederic Weisbecker Cc: Steven Rostedt Signed-off-by: Ingo Molnar commit d844222a54c33a960755b44b934cd1b01b05dceb Author: Ingo Molnar Date: Tue Nov 11 09:58:36 2008 +0100 Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core commit f536aafc5a2e6f0c8f1577a155e6f93db5e469f0 Author: Steven Rostedt Date: Mon Nov 10 23:07:30 2008 -0500 ring-buffer: replace most bug ons with warn on and disable buffer This patch replaces most of the BUG_ONs in the ring_buffer code with RB_WARN_ON variants. It adds some more variants as needed for the replacement. This lets the buffer die nicely and still warn the user. One BUG_ON remains in the code, and that is because it detects a bad pointer passed in by the calling function, and not a bug by the ring buffer code itself. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 5aa1ba6a6c710e747838a22d798ac97a8b248745 Author: Steven Rostedt Date: Mon Nov 10 23:07:30 2008 -0500 ftrace: prevent ftrace_special from recursion Impact: stop ftrace_special from recursion The ftrace_special is used to help debug areas of the kernel. Because of this, if it is put in certain locations, the fact that it allows recursion can become a problem if the kernel developer using does not realize that. This patch changes ftrace_special to not allow recursion into itself to make it more robust. It also changes from preempt disable interrupts disable to prevent any loss of trace entries. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit e0cb4ebcd9e5b4ddd8216c20f54445c91b1fa4b9 Merge: a309720c876d7ad2e224bfd1982c92ae4364c82e 45b86a96f17cb2900f291129b0e67287400e45b2 Author: Ingo Molnar Date: Tue Nov 11 09:40:18 2008 +0100 Merge branch 'tracing/urgent' into tracing/ftrace Conflicts: kernel/trace/trace.c commit ae1e9130bfb9ad55eb97ec3fb17a122b7a118f98 Author: Ingo Molnar Date: Tue Nov 11 09:05:16 2008 +0100 sched: rename SCHED_NO_NO_OMIT_FRAME_POINTER => SCHED_OMIT_FRAME_POINTER Impact: cleanup, change .config option name We had this ugly config name for a long time for hysteric raisons. Rename it to a saner name. We still cannot get rid of it completely, until /proc//stack usage replaces WCHAN usage for good. We'll be able to do that in the v2.6.29/v2.6.30 timeframe. Signed-off-by: Ingo Molnar commit eb37b41cc2274cdecfc19d371717c321fe2ab426 Author: Jesse Brandeburg Date: Mon Nov 10 16:48:03 2008 -0800 pktgen: add full reset functionality While testing pktgen, I found that sometimes my configurations from previous runs would be left over, particularly when going from a test with 8 threads down to a test with 4 threads. This adds new functionality to pktgen where you can call pgset "reset" and it will be just like you just insmod'ed pktgen again. Signed-off-by: Jesse Brandeburg Signed-off-by: Jeff Kirsher Signed-off-by: Robert Olsson Signed-off-by: David S. Miller commit 9b1582d4513a2102c68fe12ac1106595f3c09120 Author: Rémi Denis-Courmont Date: Mon Nov 10 16:21:05 2008 -0800 Phonet: use net_device built-in stats for GPRS Signed-off-by: Rémi Denis-Courmont Signed-off-by: David S. Miller commit fb28ad35906af2f042c94e2f9c0f898ef9acfa37 Author: Kay Sievers Date: Mon Nov 10 13:55:14 2008 -0800 net: struct device - replace bus_id with dev_name(), dev_set_name() Acked-by: Marcel Holtmann Acked-by: Greg Kroah-Hartman Signed-off-by: Kay Sievers Signed-off-by: David S. Miller commit 23779897546c1effb546ff89b89803d9d955d517 Merge: f574179b63e48f5285468b5ee40f3c480221f708 c4832467a5c8c2ae96d6dad882be4d4ab9eefad7 Author: David S. Miller Date: Mon Nov 10 13:24:44 2008 -0800 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 commit c4832467a5c8c2ae96d6dad882be4d4ab9eefad7 Author: Larry Finger Date: Fri Oct 31 09:40:44 2008 -0700 rtl8187: Change TX power settings The latest vendor driver (rtl8187B_linux_26.1036.0708.2008) has a different CCK power setting code as compared with the Linux driver. Signed-off-by: Larry Finger Tested-by: Piter Punk Signed-off-by: John W. Linville commit b2e53b338b7b4608372d070bb477f3bae3971e5a Author: David Kilroy Date: Fri Oct 31 13:35:21 2008 +0000 orinoco: Move sources to a subdirectory Keeping all the orinoco drivers in a common directory will make maintenance easier. Signed-off by: David Kilroy Signed-off-by: John W. Linville commit 5166ccd220f187b2e9edfc5f01eb49f4a0ebf586 Author: Luis R. Rodriguez Date: Thu Oct 30 13:33:56 2008 -0700 cfg80211: Add kdoc for struct regulatory_request As regulatory_request gets bigger there will be more questions of what things means, so clarify documenation for it and keep track of the special alpha2 codes we use internally and on the userspace regulatory agents. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit b219cee191e7cfe88a695a57249a295d0d5b22e9 Author: Luis R. Rodriguez Date: Thu Oct 30 13:33:55 2008 -0700 cfg80211: make use of reg macros on REG_RULE Ensure regulatory converstion macros safely accept multiple arguments and make REG_RULE() use them. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit 9c96477d10763d4314012425ecc8a3cff9e60ea9 Author: Luis R. Rodriguez Date: Thu Oct 30 13:33:53 2008 -0700 cfg80211: Add regulatory domain intersection capability There are certain scenerios where we require intersecting two regulatory domains. This adds intersection support. When we enable 802.11d support we will use this to intersect the regulatory domain from the AP's country IE and what our regulatory agent believes is correct for a country. This patch enables intersection for now in the case where the last regdomain was set by a country IE which was parsed and the user then wants to set the regulatory domain. Since we don't support country IE parsing yet this code path will not be hit, however this allows us to pave the way for 11d support. Intersection code has been tested in userspace with CRDA. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit d71aaf6053e380996e40c9ecfe39a8dced52694c Author: Luis R. Rodriguez Date: Thu Oct 30 13:33:52 2008 -0700 cfg80211: a reg rule is invalid if freq diff is 0 A regulatory rule is invalid when the frequency difference between the end of the frequency range and the start is 0. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit fc6971d491517ba15e800540ff88caa55dc65b01 Author: Jouni Malinen Date: Thu Oct 30 19:59:05 2008 +0200 mac80211_hwsim: Add support for client PS mode This introduces a debugfs file (ieee80211/phy#/hwsim/ps) that can be used to force a simulated radio into power save mode. Following values can be written into this file to change PS mode: 0 = power save disabled (constantly awake) 1 = power save enabled (drop all frames; do not send PS-Poll) 2 = power save enabled (send PS-Poll frames automatically to receive buffered unicast frames); not yet fully implemented 3 = manual PS-Poll trigger (send a single PS-Poll frame) Two different behavior for power save mode processing can be tested: - move between modes 1 and 0 (i.e., receive all buffered frames at a time) - move to mode 1 and use manual PS-Poll frames (write 3 to the 'ps' debugfs file) to fetch power save buffered frames one at a time Mode 2 (automatic PS-Poll) does not yet parse Beacon frames, but eventually, it should take a look at TIM IE and send PS-Poll if a traffic bit is set for our AID. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit fbf189273926d83d71c4c321f1215162569506ac Author: Jouni Malinen Date: Thu Oct 30 19:50:30 2008 +0200 mac80211: Allow AP mode to be enabled With the addition of basic rate set and TX queue parameter configuration and confirmation that power save buffering is working again, mac80211 is now in state that allows AP mode to be used without major problems. Consequently, it is time to allow this mode to be enabled without having to patch the kernel. AP mode requires hostapd for management frame processing and as such, configuring this mode is only allowed through cfg80211 (not with iwconfig and WEXT). Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit d61272cbb35fa1c08fe94898583d880256f2dbd3 Author: Tomas Winkler Date: Thu Oct 30 17:08:08 2008 +0200 mac80211: fix basic rates setting from association response In previous code all the rates were marked as basic. Signed-off-by: Tomas Winkler Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit ab1ef980504ca7f17b675b3a53a88956f800fce3 Author: Jouni Malinen Date: Thu Oct 30 16:59:25 2008 +0200 mac80211_hwsim: Make sure beacon_timer gets deleted It was possible to trigger a kernel panic because beacon_timer may not have been deleted in all cases when the kernel module was removed while hostapd was still running. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 318884875bdddca663ecc373c813cf8e117d9e43 Author: Jouni Malinen Date: Thu Oct 30 16:59:24 2008 +0200 nl80211: Add TX queue parameter configuration Add a new attribute, NL80211_ATTR_WIPHY_TXQ_PARAMS, that can be used with NL80211_CMD_SET_WIPHY for userspace (e.g., hostapd) to set TX queue parameters (txop, cwmin, cwmax, aifs). Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 1e898ff83c31c303f73c3893d1ac519e4d9b59e5 Author: Jouni Malinen Date: Thu Oct 30 16:59:23 2008 +0200 mac80211_hwsim: Debug info for TX queue parameters Provide detailed information on TX queue parameter changes to make it easier to debug mac80211 functionality. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 90c97a040d6b08cc4890328aa262fdc37336ab01 Author: Jouni Malinen Date: Thu Oct 30 16:59:22 2008 +0200 nl80211: Add basic rate configuration for AP mode Add a new attribute, NL80211_ATTR_BSS_BASIC_RATES, that can be used with NL80211_CMD_SET_BSS for userspace (e.g., hostapd) to set which rates are in the basic rate set. Signed-off-by: Jouni Malinen Acked-by: Johannes Berg Signed-off-by: John W. Linville commit fe63bfa3669dbdd4985ed35d9a0ed08881f62516 Author: Jouni Malinen Date: Thu Oct 30 16:59:21 2008 +0200 mac80211_hwsim: Debug info for BSS config changes Provide detailed information on BSS configuration changes to make it easier to debug mac80211 functionality. Signed-off-by: Jouni Malinen Signed-off-by: John W. Linville commit 95f8e38deffc55f7108bcfa3e180bd5b3d53fc04 Author: Ilpo Järvinen Date: Thu Oct 30 13:43:41 2008 +0200 b43legacy: reindent misleading statement Signed-off-by: Ilpo Järvinen Signed-off-by: John W. Linville commit ccf5dd14f8a4273f40d8319e75b377edb1f5220d Author: Johannes Berg Date: Wed Oct 29 23:24:14 2008 +0100 libertas_tf: fix skb tail pointer skb->tail can't be meant here because it's not the same across 32/64 bit compilations. This means there's no way the current driver can work on 64-bit architectures. Signed-off-by: Johannes Berg Cc: stable@kernel.org [2.6.27] Signed-off-by: John W. Linville commit 9483407d09077c0bfc612c72835b1e9bbdda0a10 Author: Chr Date: Wed Oct 29 22:39:50 2008 +0100 p54: initialize all deprecated fields The new mechanism for allocing space for control frames, didn't "zero" out the payload data... However I haven't heard of any hiccups so far... Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit c8034c44851ba4c6b55ec6e6b60573cf51589be3 Author: Pavel Roskin Date: Wed Oct 29 17:31:43 2008 -0400 p54: don't report known but unhandled EEPROM codes as unknown Signed-off-by: Pavel Roskin Signed-off-by: John W. Linville commit 61780ee313846b29bfb06dfcb2f3bdf0b7ba3f66 Author: Mohamed Abbas Date: Wed Oct 29 14:05:49 2008 -0700 iwlwifi: do not call statistics from rfkill Signed-off-by: Mohamed Abbas Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit eb48dcaf57d4e9b6521aeb593fe95a36db6c2109 Author: Winkler, Tomas Date: Wed Oct 29 14:05:48 2008 -0700 iwlwifi: iwl-agn-rs: initialize rs with valid antenna This patch fix rate scaling initialization. Rate scaling was initialized always with B antenna. Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 6a63578ddf6148927a80c07a73b40ccc8f3ac8e2 Author: Emmanuel Grumbach Date: Wed Oct 29 14:05:47 2008 -0700 iwlwifi: rename double inclusion protection name in iwl-commands.h This patch change the name of the double inclusion protection in iwl-commands.h Signed-off-by: Emmanuel Grumbach Reviewed-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 5b9f8cd3eea04770ff186b853bbde1741f321866 Author: Emmanuel Grumbach Date: Wed Oct 29 14:05:46 2008 -0700 iwlwifi: rename generic iwlagn functions that had a HW specific name This patch renames functions that are generic in iwl-agn and had a iwl4965 prefix. Signed-off-by: Emmanuel Grumbach Reviewed-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 60294de3af99586bb4a205274d02a7c8b910c0c3 Author: Zhu, Yi Date: Wed Oct 29 14:05:45 2008 -0700 iwlwifi: fix priv->iw_mode setting when multiple vif are configured mac80211 supports multiple virtual interfaces for a single device. For example, a managed interface (wlan0) and a monitor interface (mon0) can exist at the same time. Thus priv->iw_mode is not sufficient to track the wireless mode any more. The patch redefines priv->iw_mode as the first interface mode (the same as priv->vif->type if priv->vif != NULL). If another monitor type interface is created later, we don't change priv->iw_mode into monitor. This way, the original interface still works. The patch also requests mac80211 to do reassociation after we change the Rx filter flags. Signed-off-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit eb4779c40549f8e0dd45c9a30f279134c9a86131 Author: Winkler, Tomas Date: Wed Oct 29 14:05:44 2008 -0700 iwlwifi: trivial removal of some 4965 remaining from iwl-agn-rs.h This patch removes 4965 prefix from comments and one function in iwl-agn-rs.h Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 9c80c50211d638555bc4b160d9ccd348e98eedad Author: Winkler, Tomas Date: Wed Oct 29 14:05:43 2008 -0700 iwlwifi: reorganize flow handler bitology This patch cleans up FH bits and adds missing register values that will be used later in TX initialization rewrite Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit c7ab5ef9bcd281135c21b4732c9be779585181be Author: Johannes Berg Date: Wed Oct 29 20:02:12 2008 +0100 b43: implement short slot and basic rate handling This implements proper short slot handling and adds code to program the hardware for the correct response rates derived from the basic rate set for the current BSS. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit bd815252720e4b667d9946d050d003ec89bda099 Author: Johannes Berg Date: Wed Oct 29 20:00:45 2008 +0100 wireless: implement basic rate helper function This adds a helper function that, given a bitmap of basic rates and a bitrate returns the response rate for this rate. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 743b97caf98036ec8ee4bfc6fc6f85ad94e04783 Author: Ivo van Doorn Date: Wed Oct 29 19:41:03 2008 +0100 rt2x00: Remove debugfs CSR access wrappers Move calculation of CSR register offset into rt2x00debug.c and remove the wrapper functions from each individual driver. (Except rt2500usb, which still needs to wrap for the different value type argument). Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit f161796700ed89b07dff2ad4ba3a932bc721af7e Author: John W. Linville Date: Fri Oct 31 16:45:15 2008 -0400 ath9k: correct warning about unintialized variable 'tid' drivers/net/wireless/ath9k/xmit.c: In function ‘ath_tx_start’: drivers/net/wireless/ath9k/xmit.c:1858: warning: ‘tid’ may be used uninitialized in this function Signed-off-by: John W. Linville commit 74508b29c51158e5b45bca13e702c68ef5c3b641 Author: Larry Finger Date: Fri Oct 31 09:54:49 2008 -0700 rtl8187: Reduce channel switch delay The latest vendor driver (rtl8187B_linux_26.1036.0708.2008) has a 10 msec delay after the call to set a new channel, but not before. Signed-off-by: Larry Finger Tested-by: Herton Ronaldo Krzesinski Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 94d4fe9824e5c62240f3ae2a33b2dd5a8a32a01b Author: Larry Finger Date: Fri Oct 31 09:54:30 2008 -0700 rtl8187: Remove primitive write delays Each of the primary write routines, rtl8187_write_phy(), rtl8225_write_bitbang(), and rtl8225_write_8051() all conclude with an msleep() command. Testing shows that these are not needed. Signed-off-by: Larry Finger Tested-by: Herton Ronaldo Krzesinski Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 946d1c22644a5de07efc1c847fb64bb0cf8f82f2 Author: Larry Finger Date: Fri Oct 31 09:54:13 2008 -0700 rtl8187: Remove msleep calls after calls to rtl8225_write Routine rtl8225_write() calls either rtl8225_write_bitbang() or rtl8225_write_8051(), both of which end with an msleep() command. As a result, a rtl8225_write() immediately followed by an msleep() is not needed. Signed-off-by: Larry Finger Tested-by: Herton Ronaldo Krzesinski Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit a3d67bc2e9e25f09151971192946fe3b68543649 Author: Larry Finger Date: Fri Oct 31 09:52:58 2008 -0700 rtl8187: Remove CCK delays Routine rtl8225_write_phy_cck() calls rtl8225_write_phy(), which concludes with a sleep of 1 msec; therefore a call to rtl8225_write_phy_cck() immediately followed by an msleep(1) is not needed. Signed-off-by: Larry Finger Tested-by: Herton Ronaldo Krzesinski Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 35cc988a5620cea03fd97e96c530e1f259ef913b Author: Larry Finger Date: Fri Oct 31 09:52:39 2008 -0700 rtl8187: Remove OFDM delays Routine rtl8225_write_phy_ofdm() calls rtl8225_write_phy(), which concludes with a sleep of 1 msec; therefore a call to rtl8225_write_phy_ofdm() immediately followed by an msleep(1) is not needed. Signed-off-by: Larry Finger Tested-by: Herton Ronaldo Krzesinski Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 2f20596b50ee964715f9ad44d848802f0baba5d8 Author: Larry Finger Date: Fri Oct 31 09:52:07 2008 -0700 rtl8187: Remove large delays The rtl8187 driver contains 3 sleep statements that are longer than a second. Testing has shown no bad effects when they are removed. Signed-off-by: Larry Finger Tested-by: Herton Ronaldo Krzesinski Tested-by: Hin-Tak Leung Signed-off-by: John W. Linville commit 9344e86e577df483475845096dba07f2deb11ce3 Author: Ivo van Doorn Date: Wed Oct 29 17:19:29 2008 +0100 rt2x00: Release rt2x00 2.2.2 Version bump. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 3514a441265c6788d85e8222dcca10cd66433123 Author: Ivo van Doorn Date: Wed Oct 29 17:18:46 2008 +0100 rt2x00: Improve interface_modes initialization All operating modes which require beaconing should depend on the availability of beacon entries from the hardware. Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit c3fd7b41cae2fa213858d6501e6065f24097c0a8 Author: Ivo van Doorn Date: Wed Oct 29 17:18:22 2008 +0100 rt2x00: Remove ieee80211_bss_conf from rt2x00_intf We can safely remove ieee80211_bss_conf from rt2x00_intf, it is provided by mac80211 in ieee80211_vif as well. (rt2x00_intf is the drv_priv field of ieee80211_vif). Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit e4ea1c403acece78c271bf9cd6f797d1cb093df9 Author: Ivo van Doorn Date: Wed Oct 29 17:17:57 2008 +0100 rt2x00: Optimize configuration handling Implement latest changed from mac80211 configuration handling to optmize configuration handling in rt2x00. * Remove set_retry_limit callback function, handled through config() * Move config_antenna to its own callback function, it isn't handled by mac80211 anymore * Use IEEE80211_CONF_CHANGED_* flags and remove manual checks * Removed deprecated short slot setting through config() and put it in config_erp() through which mac80211 now configures it * Remove config_phymode() and move contents to config_erp() since it only managed the basic rates which is now determined by mac80211 through config_erp(). Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 3f64b435ab76e79bfb3b4d36f043e6f892093b71 Author: Bob Copeland Date: Wed Oct 29 23:19:14 2008 -0400 ath5k: update keycache to support TKIP handling Newer parts have slots at entry+64 for michael mic and can do WPA-TKIP in hardware. The open-sourced Atheros HAL has code for accessing this portion so now we know how where to put the key material. Signed-off-by: Bob Copeland Acked-by: Nick Kossifidis Signed-off-by: John W. Linville commit 9ad9a26e7b7b6671a9aefbb1edb2e8a9ed50ee8d Author: Bob Copeland Date: Wed Oct 29 08:30:54 2008 -0400 ath5k: enable hardware encryption for WEP This change re-enables hardware encryption for ath5k after setting up mac80211 to handle the initialization vectors which happens to make it work. Add a module param (nohwcrypt) to optionally turn it off. Signed-off-by: Bob Copeland Signed-off-by: John W. Linville commit 2a941ecb5178cb8c94190f17a42f35a772cbc5c6 Author: Holger Schurig Date: Wed Oct 29 09:43:50 2008 +0100 wireless: fix two bad print_ssid conversions This patch fixes two current compilation problems. They showed up with CONFIG_IEEE80211_DEBUG defined. Signed-off-by: Holger Schurig Signed-off-by: John W. Linville commit 8469cdef1f123e2e3e56645f1ac26c7cfb333d9c Author: Sujith Date: Wed Oct 29 10:19:28 2008 +0530 mac80211: Add a new event in ieee80211_ampdu_mlme_action Send a notification to the driver on succesful reception of an ADDBA response, add IEEE80211_AMPDU_TX_RESUME for this purpose. Signed-off-by: Sujith Signed-off-by: John W. Linville commit dca3edb88ef567671886a85c5e40d491ccecf934 Author: Sujith Date: Wed Oct 29 10:19:01 2008 +0530 ath9k: Remove internal RX A-MPDU processing mac80211 has RX A-MPDU reordering support. Use that and remove redundant RX processing within the driver. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 7f959032bbee5eedaf4c606d11f0c5d41498644e Author: Sujith Date: Wed Oct 29 10:18:39 2008 +0530 ath9k: Clear HT info on starting the driver Doing an interface down/up leaves the old HT assoc information, clear it. Signed-off-by: Sujith Signed-off-by: John W. Linville commit ccc75c526611e62c4c9adcb4a62bf4a164478d2c Author: Sujith Date: Wed Oct 29 10:18:14 2008 +0530 ath9k: Remove ath_tx_aggr_resp() Accessing mac80211's internal state machine is wrong. Will add resumption of a TID in a later patch. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 05a1e2d111c98340fb17ec702cf09450eec3a947 Author: Sujith Date: Wed Oct 29 10:17:54 2008 +0530 ath9k: Enable interrupts at the proper place config_interface() was the wrong place to enable interrupts when bringing up an interface, move it to ath_open(). Signed-off-by: Sujith Signed-off-by: John W. Linville commit 154662a6356ec3ccfea0a22218cf149220ea6373 Author: Sujith Date: Wed Oct 29 10:17:34 2008 +0530 ath9k: Remove unnecessary TSF reset The TSF is already reset properly via mac80211's callback. Resetting it in config_interface() is not needed. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 9c84b7978f1b99048bf31be5a0218cd509e74148 Author: Sujith Date: Wed Oct 29 10:17:13 2008 +0530 ath9k: Streamline attach/detach Simplify attach and detach routines by consolidating the stop and suspend functions. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 50fdae2c7bcb6417997f90c3d9853a59a9ed06ce Author: Sujith Date: Wed Oct 29 10:16:52 2008 +0530 ath9k: Remove unused function ath_get_currentCountry() Signed-off-by: Sujith Signed-off-by: John W. Linville commit f1dc56003b23d2d5bb5a756de6b1633a76c9e697 Author: Sujith Date: Wed Oct 29 10:16:30 2008 +0530 ath9k: Refactor hw.c Split hw.c into more manageable files: ani.c calib.c eeprom.c mac.c Signed-off-by: Sujith Signed-off-by: John W. Linville commit 5640b08ef7e88b606c740e746cb77bc97d78508e Author: Sujith Date: Wed Oct 29 10:16:06 2008 +0530 ath9k: Revamp VAP management Remove the internal VAP management routines and embed ath_vap in mac80211's driver private area provided in ieee80211_vif. Signed-off-by: Sujith Signed-off-by: John W. Linville commit a37c2c79404940dfc5e88c851c3de5328975b1a9 Author: Sujith Date: Wed Oct 29 10:15:40 2008 +0530 ath9k: Use bitfields to store tid's state in a single variable Signed-off-by: Sujith Signed-off-by: John W. Linville commit 102e0572d330e6cdb89a8f8fbd3999e3c67a1f9e Author: Sujith Date: Wed Oct 29 10:15:16 2008 +0530 ath9k: Ensure ath_node is not NULL when updating tx chainmask Also, random indentation and whitespace cleanup. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 43453b3392c1ecfdd1471383ad42ba926533a722 Author: Sujith Date: Wed Oct 29 10:14:52 2008 +0530 ath9k: Remove SM Power Save as it is not supported now Signed-off-by: Sujith Signed-off-by: John W. Linville commit 528f0c6b3b6bbed1328ee49bfc906543daa00866 Author: Sujith Date: Wed Oct 29 10:14:26 2008 +0530 ath9k: Revamp transmit control block Use the ath_buf instance associated with each tx frame directly and remove all redundant information in ath_tx_control. Signed-off-by: Sujith Signed-off-by: John W. Linville commit c51701632c8becdf0ffedb96d9cedc1149f2183a Author: Sujith Date: Wed Oct 29 10:13:59 2008 +0530 ath9k: Simplify node attach/detach routines Signed-off-by: Sujith Signed-off-by: John W. Linville commit b5aa9bf9460f9e97f2c10940b029d75c6557ad7c Author: Sujith Date: Wed Oct 29 10:13:31 2008 +0530 ath9k: Node cleanup Start removing the internal node list in ath9k, in preparation for using mac80211's STA list. Remove lists, locks, routines, flags, functions managing nodes in ath9k. Signed-off-by: Sujith Signed-off-by: John W. Linville commit 17683c65c8a5f3f29f5408334992986b996d8205 Author: Bob Copeland Date: Wed Oct 29 23:24:26 2008 -0400 ath5k: fix keytable type buglet in ath5k_hw_reset_key Be sure we clear out both the mic (if applicable) and the encryption key type. Signed-off-by: Bob Copeland Signed-off-by: John W. Linville commit f07a6c495e88ae0143e3c20b1ed666314197277f Author: Nick Kossifidis Date: Wed Oct 29 04:28:28 2008 +0200 ath5k: Update PCU code * In set_opmode don't handle antenna settings and preserve other STA_ID1 settings (shouldn't matter because we call it during reset but it makes things cleaner) Also set properly AP/ADHOC indicator flag on CFG while setting AP/ADHOC modes and always enable key search mode. * Properly set BSSID Mask during reset (cache it and reuse it durring set_associd) * Update beacon_init to flush pending BMISS interrupts and handle setting of adhoc beacon ATIM policy flag for ad-hoc mode. Also set TSF to 0 to start TSF increment on AP mode. We need to handle sleep timers for AR5212 there + add support for PCF. * Properly clean MIC key from keytable when TKIP is used (Bob is working on set_key function etc so i leave it for now). Tested on AR5212 (Hainan) and AR5413 and works fine v2 Set PISR on AR5211+ and ISR on AR5210, got to sleep more ;-) Changes-Licensed-under: ISC Signed-Off-by: Nick Kossifidis Signed-off-by: John W. Linville commit 2c706002fc147decdba2658ea48e4436faca3af2 Author: Johannes Berg Date: Thu Oct 30 22:09:54 2008 +0100 don't use net/ieee80211.h Convert all the drivers using net/ieee80211.h to use linux/ieee80211.h. Contains a bugfix in libertas where the SSID parsing could overrun the buffer when the AP sends invalid information. Signed-off-by: Johannes Berg Acked-by: Dan Williams [airo, libertas] Acked-by: Pavel Roskin [orinoco] Acked-by: David Kilroy [orinoco] Signed-off-by: John W. Linville commit 9b1fbae4b242cf86a878771eb59dc600dde72ec8 Author: Johannes Berg Date: Wed Oct 29 01:02:27 2008 +0100 iwl3945: remove bogus comment I added this comment myself, but it's clearly wrong. I had meant to place it in iwl_mac_add_interface, which at the time didn't honour the MAC address setting, but it does now. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 41bb73eeac5ff5fb217257ba33b654747b3abf11 Author: Johannes Berg Date: Wed Oct 29 01:09:37 2008 +0100 mac80211: remove SSID driver code Remove the SSID from the driver API since now there is no driver that requires knowing the SSID and I think it's unlikely that any hardware design that does require the SSID will play well with mac80211. This also removes support for setting the SSID in master mode which will require a patch to hostapd to not try. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit b23f99bcfa12c7b452f7ad201ea5921534d4e9ff Author: Johannes Berg Date: Tue Oct 28 18:50:12 2008 +0100 adm8211: remove SSID code Since adm8211 currently doesn't implement IBSS mode anyway, it can't be using the SSID. And if/when it does implement IBSS mode, we'll have to see how to make it beacon anyway. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 71c11fb57b924c160297ccd9e1761db598d00ac2 Author: Johannes Berg Date: Tue Oct 28 18:29:48 2008 +0100 b43/legacy: remove SSID code The SSID programmed into the device is used by the ucode only to reply to probe requests, a functionality we disable anyway because it doesn't fit with the mac80211/hostapd programming model. Therefore, it isn't useful to program the SSID into device. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 4607816f608b42a5379aca97ceed08378804c99f Author: Johannes Berg Date: Tue Oct 28 18:25:43 2008 +0100 iwlwifi: remove unused essid variable Now the essid stuff is unused, so remove it. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit a57a59f247b651e8ed6d3eeb7e2f9d83b83134c9 Author: Johannes Berg Date: Tue Oct 28 18:21:05 2008 +0100 iwlwifi: remove implicit direct scan When an undirected scan is requested and iwlwifi is not associated but the user has set an SSID (and maybe was associated with that network at some point) then iwlwifi will assume the user wanted to scan for this SSID which seems wrong. Remove this code. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 430cfe95a401baa0dc2022deaad02cb75d63c73c Author: Johannes Berg Date: Tue Oct 28 18:06:02 2008 +0100 iwl3945: remove dead code Was wondering about this code since supposedly the firmware will add the SSID element. Turns out it's dead, so remove it. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit e5704bf0ba4bb2ca54a1c74f6a6dca53dfccc33d Author: Johannes Berg Date: Tue Oct 28 16:59:57 2008 +0100 ath9k: remove useless NULL initialisers When I added .set_frag_threshold I didn't realise it was already there which now generated a sparse warning. Therefore, remove the .set_frag_threshold NULL initialiser, and while at it all the other useless ones. Signed-off-by: Johannes Berg Acked-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit 2df78167ade3d0542f0f95be7cc58861343cce3a Author: Johannes Berg Date: Tue Oct 28 16:49:41 2008 +0100 wireless: fix a few sparse warnings Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 1239cd58d237fa6ad501acaec8776262a5784ec8 Author: Johannes Berg Date: Tue Oct 28 11:12:57 2008 +0100 wireless: move mesh config length constant This is a constant from the 802.11 specification. Signed-off-by: Johannes Berg Cc: Javier Cardona Signed-off-by: John W. Linville commit 97c8b013da7a8ec7aa0a192489d4e7a33c4127fc Author: Zhu Yi Date: Tue Oct 28 15:58:31 2008 +0800 mac80211: print reason code for deauth/dissoc frames The patch prints reason code for deauth/dissoc frames to give users more ideas what's happened for the disconnection. Signed-off-by: Zhu Yi Acked-by: Johannes Berg Signed-off-by: John W. Linville commit db4186cf15a5a7e8e8526f7c158f042ccc3ed576 Author: John W. Linville Date: Fri Oct 31 15:53:12 2008 -0400 p54: eliminate warning for uninitialized variable 'tim_len' drivers/net/wireless/p54/p54common.c: In function ‘p54_tx’: drivers/net/wireless/p54/p54common.c:1058: warning: ‘tim_len’ may be used uninitialized in this function Signed-off-by: John W. Linville commit e5ea92a7528d304e8e327d0d261653e98b163e8a Author: Christian Lamparter Date: Sat Oct 18 23:19:00 2008 +0200 p54: AP & Ad-hoc testing This patch finally adds all necessary code to test Ad-hoc & AP mode with p54. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 94585b090baf982a850678a1dc3395bce0c1e302 Author: Christian Lamparter Date: Sat Oct 18 23:18:44 2008 +0200 p54: put broadcast frames into the right queues stlc45xx's specs finally brought some light what all the 4 extra queues for. now CAB data and managment frames have their own queue. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 9e7f3f8e4acdc480584d6b5e6a6be5d1f7bda8fa Author: Christian Lamparter Date: Sat Oct 18 23:18:01 2008 +0200 p54: more definitions form lmac_longbow.h and pda.h This patch ports more useful features to p54 - PDR definitions for the synth chips & regulatory domain. - honour IEEE80211_TX_CTL_ASSIGN_SEQ flag, if it's set. - adds some lost mutex_lock & mutex_unlock. - replace two more "magic values" that sneaked past. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 9a8675d712d57da0993ad2e43b168c9585892097 Author: Christian Lamparter Date: Sat Oct 18 23:04:15 2008 +0200 p54: introduce new names for device firmwares Johannes thought it would have been a good idea to change the firmware names. Note: we still have fallbacks in case our users don't want to "break their running system", but we won't advertise them with MODULE_FIRMWARE. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 4ceb7b6ae2cf5b6e32c403a11bb54081bf8f8b83 Author: Wang Chen Date: Fri Sep 5 11:28:47 2008 +0800 netdevice libertas: Fix directly reference of netdev->priv We have some reasons to kill netdev->priv: 1. netdev->priv is equal to netdev_priv(). 2. netdev_priv() wraps the calculation of netdev->priv's offset, obviously netdev_priv() is more flexible than netdev->priv. But we cann't kill netdev->priv, because so many drivers reference to it directly. OK, becasue Dave S. Miller said, "every direct netdev->priv usage is a bug", and I want to kill netdev->priv later, I decided to convert all the direct reference of netdev->priv first. Different to readonly reference of netdev->priv, in this driver, netdev->priv was changed. I use netdev->ml_priv to replace netdev->priv. Signed-off-by: Wang Chen Signed-off-by: John W. Linville commit f43aa025b7de79d6a615ea4c1e6be7e6b1cea538 Author: Takashi Iwai Date: Mon Nov 10 16:24:26 2008 +0100 ALSA: hda - Fix another cache list management Fix another silly bug in the amp cache list management. Signed-off-by: Takashi Iwai commit b402dff8739cd82c58b632ba472caf26ae8741ed Author: Hugo Villeneuve Date: Sat Nov 8 13:26:09 2008 -0500 ASoC: Add Right-Justified mode and Codec clock master to davinci-i2s The TI DVEVM board uses the SND_SOC_DAIFMT_CBM_CFM & I2S formats, but the Lyrtech SFFSDR board uses the SND_SOC_DAIFMT_CBM_CFS & RIGHT-JUSTIFIED formats. Signed-off-by: Hugo Villeneuve Signed-off-by: Mark Brown commit 53599bbc30343f0cbfe750d2af19c9c45b841b82 Author: Christian Pellegrin Date: Sat Nov 8 08:44:16 2008 +0100 ASoC: s3c24xx 8 bit sound fix fixes playing/recording of 8 bit audio files. Generated on 20081108 against v2.6.27 Signed-off-by: Christian Pellegrin Signed-off-by: Mark Brown commit ba21ebb6abac5c46e1d818d2ceda82420bd099ba Author: Cyrill Gorcunov Date: Mon Nov 10 09:16:41 2008 +0100 x86: apic - use pr_ macros for logging Impact: cleanup It saves us some source lines and shift the code a bit righter. And a multiline comment style is fixed too :-) Signed-off-by: Cyrill Gorcunov Acked-by: "Maciej W. Rozycki" Signed-off-by: Ingo Molnar commit 4e0304310f5180eee11b4edc72cf4cb78acdc634 Author: Cyrill Gorcunov Date: Mon Nov 10 09:16:40 2008 +0100 x86: apic - calibrate_APIC_clock remove redundant irq-enable-disable Impact: cleanup lapic_timer_setup is self-protected with local_irq_save/restore no need to use them in caller and levt is the per-cpu variable so no concurrent access from another cpu. Signed-off-by: Cyrill Gorcunov Acked-by: "Maciej W. Rozycki" Signed-off-by: Ingo Molnar commit 4ecd33d930591d41fe356160593a9076467b961c Merge: 7d5a78cd98c3a5eb83bd6a061c5ea6ef1e9b8fcb f7160c7573615ec82c691e294cf80d920b5d588d Author: Ingo Molnar Date: Mon Nov 10 09:16:27 2008 +0100 Merge commit 'v2.6.28-rc4' into x86/apic commit f4166c54bfe04f64603974058e44fbd7cfef0ccc Author: Markus Metzger Date: Sun Nov 9 14:29:21 2008 +0100 x86, bts: DS and BTS initialization Impact: widen BTS/PEBS ptrace enablement to more CPU models Move BTS initialisation out of an #ifdef CONFIG_X86_64 guard. Assume core2 BTS and DS layout for future models of family 6 processors. Signed-off-by: Markus Metzger Signed-off-by: Ingo Molnar commit 19f47c634ea8c5a10ff7bb1a08c52fd0f49bc54c Author: Harvey Harrison Date: Sun Nov 9 21:28:15 2008 -0800 x86: x86_32 has its own irq_regs definition Impact: cleanup Arches that have their own irq_regs definition are expected to define ARCH_HAS_OWN_IRQ_REGS or else a generic (unused) set will also be defined in lib/irq_regs.c Sparse noticed the unused generic one had no prototype: lib/irq_regs.c:15:1: warning: symbol 'per_cpu____irq_regs' was not declared. Should it be static? Signed-off-by: Harvey Harrison Signed-off-by: Ingo Molnar commit 87135d92b4ae73208c53242f3cfec5b20b772cb3 Merge: 4fcc50abdffb517cee36cec9cb22138d84fb62d0 f7160c7573615ec82c691e294cf80d920b5d588d Author: Ingo Molnar Date: Mon Nov 10 08:41:38 2008 +0100 Merge commit 'v2.6.28-rc4' into x86/cleanups commit 4fcc50abdffb517cee36cec9cb22138d84fb62d0 Author: Ingo Molnar Date: Sun Nov 9 08:10:03 2008 +0100 x86: clean up vget_cycles() Impact: remove unused variable I forgot to remove the now unused "cycles_t cycles" parameter from vget_cycles() - which triggers build warnings as tsc.h is included in a number of files. Remove it. Signed-off-by: Ingo Molnar commit 39c9aede2b4a252bd296c0a86be832c3d3d0a273 Author: Eric Paris Date: Wed Nov 5 09:34:42 2008 -0500 SELinux: Use unknown perm handling to handle unknown netlink msg types Currently when SELinux has not been updated to handle a netlink message type the operation is denied with EINVAL. This patch will leave the audit/warning message so things get fixed but if policy chose to allow unknowns this will allow the netlink operation. Signed-off-by: Eric Paris Acked-by: Stephen Smalley Signed-off-by: James Morris commit cb9e35dce94a1b9c59d46224e8a94377d673e204 Author: Ingo Molnar Date: Sat Nov 8 20:27:00 2008 +0100 x86: clean up rdtsc_barrier() use Impact: cleanup Move rdtsc_barrier() use to vsyscall_64.c where it's relied on, and point out its role in the context of its use. Signed-off-by: Ingo Molnar commit 895e031707954a9ca26ed4f5f794575313854ed1 Merge: 838e8bb71dc0c892bf8f84abd3c709d8fe3a8d3c a622cf69b806bbb1887913c04e01d0c25b892876 Author: Ingo Molnar Date: Sat Nov 8 20:23:02 2008 +0100 Merge branch 'linus' into x86/cleanups commit 15002fa9bf3a79ac9dcafba7ff308586936088b2 Author: Hiroshi Shimamoto Date: Fri Nov 7 19:25:36 2008 -0800 x86: signal: cosmetic unification of setup_sigcontext() Impact: cleanup Make setup_sigcontext() same. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit a309720c876d7ad2e224bfd1982c92ae4364c82e Author: Steven Rostedt Date: Fri Nov 7 22:36:02 2008 -0500 ftrace: display start of CPU buffer in trace output Impact: change in trace output Because the trace buffers are per cpu ring buffers, the start of the trace can be confusing. If one CPU is very active at the end of the trace, its history will not go as far back as the other CPU traces. This means that output for a particular CPU may not appear for the first part of a trace. To help annotate what is happening, and to prevent any more confusion, this patch adds a line that annotates the start of a CPU buffer output. For example: automount-3495 [001] 184.596443: dnotify_parent <-vfs_write [...] automount-3495 [001] 184.596449: dput <-path_put automount-3496 [002] 184.596450: down_read_trylock <-do_page_fault [...] sshd-3497 [001] 184.597069: up_read <-do_page_fault -0 [000] 184.597074: __exit_idle <-exit_idle [...] automount-3496 [002] 184.597257: filemap_fault <-__do_fault -0 [003] 184.597261: exit_idle <-smp_apic_timer_interrupt Note, parsers of a trace output should always ignore any lines that start with a '#'. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 769c48eb2530c5c1a393e2c82063f4f050571d24 Author: Steven Rostedt Date: Fri Nov 7 22:36:02 2008 -0500 ftrace: force pass of preemptoff selftest Impact: preemptoff not tested in selftest Due to the BKL not being preemptable anymore, the selftest of the preemptoff code can not be tested. It requires that it is called with preemption enabled, but since the BKL is held, that is no longer the case. This patch simply skips those tests if it detects that the context is not preemptable. The following will now show up in the tests: Testing tracer preemptoff: can not test ... force PASSED Testing tracer preemptirqsoff: can not test ... force PASSED When the BKL is removed, or it becomes preemptable once again, then the tests will be performed. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 7d5222a6afa4e429f55df8c086adb747837cbdf5 Author: Matt Fleming Date: Fri Nov 7 13:26:25 2008 +0000 ftrace: align __mcount_loc sections Impact: add alignment option for recordmcount.pl script Align the __mcount_loc sections so that architectures with strict alignment requirements need not worry about performing unaligned accesses. This fixes an issue where I was seeing unaligned accesses, which are not supported on our architecture (the results of an unaligned access are undefined). Signed-off-by: Matt Fleming Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit c76f06945be50564f925799ddfb6235ee4c26aa0 Author: Steven Rostedt Date: Fri Nov 7 22:36:02 2008 -0500 ftrace: remove trace array ctrl Impact: remove obsolete variable in trace_array structure With the new start / stop method of ftrace, the ctrl variable in the trace_array structure is now obsolete. Remove it. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit bbf5b1a0cecb56de6236db8b01c5bfb7ab8ba8b2 Author: Steven Rostedt Date: Fri Nov 7 22:36:02 2008 -0500 ftrace: remove ctrl_update method Impact: Remove the ctrl_update tracer method With the new quick start/stop method of tracing, the ctrl_update method is out of date. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 49833fc232bd6a5076496994d855f601354501d7 Author: Steven Rostedt Date: Fri Nov 7 22:36:02 2008 -0500 ftrace: enable trace_printk by default Impact: have the ftrace_printk enabled on startup It is confusing to have to "echo trace_printk > /debug/tracing/iter_ctrl" after adding ftrace_printk in the kernel. Currently the trace_printk is set to off by default. ftrace_printk should only be in open kernel code when used for debugging, and thus it should be enabled by default. It may also be used to record data within a tracer, but those ftrace_printks should be within wrappers that are either enabled by trace_points or have a variable protecting the code path from being entered when the tracer is disabled. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 451931702017951f74624ddc4f7f02e4641b0e20 Author: Steven Rostedt Date: Fri Nov 7 22:36:02 2008 -0500 ftrace: irqsoff tracer incorrect reset Impact: fix to irqsoff tracer output In converting to the new start / stop ftrace handling, the irqsoff tracer start called the irqsoff reset function. irqsoff tracer is not the same as the other traces, and it resets the buffers while searching for the longest latency. The reset that the irqsoff stop method calls disables the function tracing. That means that, by starting the tracer, the function tracer is disabled incorrectly. This patch simply removes the call to reset which keeps the function tracing enabled. Reset is not needed for the irqsoff stop method. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit e168e0516e476070faa9e8e7b23dfcba79b76d82 Author: Steven Rostedt Date: Fri Nov 7 22:36:02 2008 -0500 ftrace: fix sched_switch API Impact: fix for sched_switch that broke dynamic ftrace startup The commit: tracing/fastboot: use sched switch tracer from boot tracer broke the API of the sched_switch trace. The use of the tracing_start/stop_cmdline record is for only recording the cmdline, NOT recording the schedule switches themselves. Seeing that the boot tracer broke the API to do something that it wanted, this patch adds a new interface for the API while puting back the original interface of the old API. Signed-off-by: Steven Rostedt Acked-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 75f5c47da386445ba0c5a8b7e3ca0c906e763369 Author: Steven Rostedt Date: Fri Nov 7 22:36:02 2008 -0500 ftrace: fix boot trace sched startup Impact: boot tracer startup modified The boot tracer calls into some of the schedule tracing private functions that should not be exported. This patch cleans it up, and makes way for further changes in the ftrace infrastructure. This patch adds a api to assign a tracer array to the schedule context switch tracer. Signed-off-by: Steven Rostedt Acked-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 0183fb1c94b74862b073590fc52c56b7364b7bad Author: Steven Rostedt Date: Fri Nov 7 22:36:02 2008 -0500 ftrace: fix set_ftrace_filter Impact: fix of output of set_ftrace_filter Commit ftrace: do not show freed records in available_filter_functions Removed a bit too much from the set_ftrace_filter code, where we now see all functions in the set_ftrace_filter file even when we set a filter. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit a6b0786f7f83bcc4d414a2977aaebe2941ebe1de Merge: 3e03fb7f1da2e691644526c0d6df42d778716349 6a60dd121c5b6c2d827e99b38c1326f2600c3891 072ba49838b42c873c496d72c91bb237914cf3b6 Author: Ingo Molnar Date: Sat Nov 8 09:34:35 2008 +0100 Merge branches 'tracing/ftrace', 'tracing/fastboot', 'tracing/nmisafe' and 'tracing/urgent' into tracing/core commit f574179b63e48f5285468b5ee40f3c480221f708 Author: Harvey Harrison Date: Fri Nov 7 23:37:50 2008 -0800 tipc: trivial endian annotation in debug statement Use htonl rather than ntohl on a u32. net/tipc/name_table.c:557:2: warning: cast to restricted __be32 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit f400923735ecbb67cbe4a3606c9479f694754f51 Author: Thomas Graf Date: Fri Nov 7 22:56:00 2008 -0800 pkt_sched: Control group classifier The classifier should cover the most common use case and will work without any special configuration. The principle of the classifier is to directly access the task_struct via get_current(). In order for this to work, classification requests from softirqs must be ignored. This is not a problem because the vast majority of packets in softirq context are not assigned to a task anyway. For this to work, a mechanism is needed to trace softirq context. This repost goes back to the method of relying on the number of nested bh disable calls for the sake of not adding too much complexity and the option to come up with something more reliable if actually needed. Signed-off-by: Thomas Graf Signed-off-by: David S. Miller commit 505d4f73dda9e20d59da05008f1f5eb432613e71 Author: Eric W. Biederman Date: Fri Nov 7 22:54:20 2008 -0800 net: Guaranetee the proper ordering of the loopback device. v2 I was recently hunting a bug that occurred in network namespace cleanup. In looking at the code it became apparrent that we have and will continue to have cases where if we have anything going on in a network namespace there will be assumptions that the loopback device is present. Things like sending igmp unsubscribe messages when we bring down network devices invokes the routing code which assumes that at least the loopback driver is present. Therefore to avoid magic initcall ordering hackery that is hard to follow and hard to get right insert a call to register the loopback device directly from net_dev_init(). This guarantes that the loopback device is the first device registered and the last network device to go away. But do it carefully so we register the loopback device after we clear dev_boot_phase. Signed-off-by: Eric W. Biederman Signed-off-by: David S. Miller commit 5d6d480908300a0c0b3be8b58567dfcef62c83a5 Author: Eric W. Biederman Date: Fri Nov 7 22:52:34 2008 -0800 net: fib_rules ordering fixes. We need to setup the network namespace state before we register the notifier. Otherwise if a network device is already registered we get a nasty NULL pointer dereference. Signed-off-by: Eric W. Biederman Signed-off-by: David S. Miller commit 3d8160b1493bcadca74fbb635d79b3928b8999cf Author: David S. Miller Date: Fri Nov 7 22:52:14 2008 -0800 Revert "net: Guaranetee the proper ordering of the loopback device." This reverts commit ae33bc40c0d96d02f51a996482ea7e41c5152695. commit 0edb94543092535a2c6ef33e7285004168ca73d7 Author: Takashi Iwai Date: Fri Nov 7 14:53:09 2008 +0100 ALSA: hda - Fix probe errors on Dell Studio Desktop BIOS on Dell Studio Desktop tells wrong codec probe masks. This patch gives the preset mask value to avoid invalid access. Reference: Novell bug#440907 https://bugzilla.novell.com/show_bug.cgi?id=440907 Signed-off-by: Takashi Iwai commit 30cde0aacc5f6786b0c4d4fafaac95eac845b8d7 Author: Takashi Iwai Date: Fri Nov 7 14:49:28 2008 +0100 ALSA: hda - Fix ALC260 hp3013 master switch The master switch doesn't influence on NID 0x15, the headphone jack on HP 3013 model because alc260_hp_master_update() ignores the passed arguments. Also, corrected the wrong arguments of hp3013 (0x10 and 0x15) although this doesn't change any behavior. Signed-off-by: Takashi Iwai commit 26df91c36fb976af9d08c20028b5cb1317eedcb3 Author: Troy Kisky Date: Wed Nov 5 18:53:28 2008 +0000 ASoC: TLV320AIC23B Support more sample rates Add support for more sample rates, different crystals and split playback/capture rates. Signed-off-by: Troy Kisky Acked-by: Arun KS Signed-off-by: Mark Brown commit 167c6274c30d17c41742096d1a12c32bd3b7e366 Merge: 5c7f0333584128c745fbda845abbe3a32c22d467 a8272061fe533f6d0261b38c58c93bd0855baebe Author: David S. Miller Date: Fri Nov 7 01:37:16 2008 -0800 Merge branch 'davem-next' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 commit 6d21cd62516a9697cb7ec33cc52e6b814fb65a13 Author: Li Zefan Date: Fri Nov 7 17:03:18 2008 +0800 sched: clean up SCHED_CPUMASK_ALLOC Impact: cleanup The #if/#endif is ugly. Change SCHED_CPUMASK_ALLOC and SCHED_CPUMASK_FREE to static inline functions. Signed-off-by: Li Zefan Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 258594a138f4ca9adf214f5272592d7f21def610 Merge: a87d091434ed2a34d647979ab12084139ee1fe41 ca3273f9646694e0419cfb9d6c12deb1c9aff27c Author: Ingo Molnar Date: Fri Nov 7 10:29:58 2008 +0100 Merge branch 'sched/urgent' into sched/core commit f66fcedc84dd06d42a0dba3894d238498509e8b7 Author: Takashi Iwai Date: Fri Nov 7 09:37:22 2008 +0100 ALSA: Document debug macros Add descriptions of snd_BUG() and snd_BUG_ON(). Also fixed a typo in the comment of snd_printk(), too. Signed-off-by: Takashi Iwai commit a8272061fe533f6d0261b38c58c93bd0855baebe Author: Komuro Date: Mon Nov 3 10:56:04 2008 +0900 fmvj18x_cs: write interrupt ack bit for lan and modem to work simultaneously. Write interrupt ack bit in fjn_interrupt for lan and modem to work simultaneously. Signed-off-by: Komuro Signed-off-by: Jeff Garzik commit 945eed02cd619f525e097319cd3d18c58d01da87 Author: Takashi Iwai Date: Fri Nov 7 09:08:15 2008 +0100 ALSA: Evaluate condition in snd_BUG_ON() in non-debugging case Change snd_BUG_ON() to evaluate the given condition, at least, in syntax for avoiding compile warnings such as unused variables. The compiler should optimize out the condition evaluation in the real code, though. Signed-off-by: Takashi Iwai commit 077402317291437521ed86d3326b3bcc62d40529 Merge: ea2da6e898033b9736a26cf588b9ce841a433337 959973b92d3ba235edfa5dcb5df1be1e5d1deba2 Author: Takashi Iwai Date: Fri Nov 7 09:06:45 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda commit 63cf123bf5d538a066e4a899390c9ce56ab6df9f Merge: 6834d7ce224a6f6a1dd05da3a867730c40943154 fcef7836a31c6432b41a38867d413ed3d6aa8261 Author: Takashi Iwai Date: Fri Nov 7 09:06:05 2008 +0100 Merge branch 'topic/fix/misc' into topic/misc commit 5c7f0333584128c745fbda845abbe3a32c22d467 Author: Harvey Harrison Date: Thu Nov 6 23:10:50 2008 -0800 phonet: sparse annotations of protocol, remove forward declaration net/phonet/af_phonet.c:38:36: error: marked inline, but without a definition net/phonet/pep-gprs.c:63:10: warning: incorrect type in return expression (different base types) net/phonet/pep-gprs.c:63:10: expected int net/phonet/pep-gprs.c:63:10: got restricted __be16 [usertype] net/phonet/pep-gprs.c:65:10: warning: incorrect type in return expression (different base types) net/phonet/pep-gprs.c:65:10: expected int net/phonet/pep-gprs.c:65:10: got restricted __be16 [usertype] net/phonet/pep-gprs.c:124:16: warning: incorrect type in assignment (different base types) net/phonet/pep-gprs.c:124:16: expected restricted __be16 [usertype] protocol net/phonet/pep-gprs.c:124:16: got unsigned short [unsigned] [usertype] protocol Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit ca62059b7ec7267d1d2cab0791d3ed6d033e0583 Author: Harvey Harrison Date: Thu Nov 6 23:09:56 2008 -0800 ipvs: oldlen, newlen should be be16, not be32 Noticed by sparse: net/netfilter/ipvs/ip_vs_proto_tcp.c:195:6: warning: incorrect type in argument 5 (different base types) net/netfilter/ipvs/ip_vs_proto_tcp.c:195:6: expected restricted __be16 [usertype] oldlen net/netfilter/ipvs/ip_vs_proto_tcp.c:195:6: got restricted __be32 [usertype] net/netfilter/ipvs/ip_vs_proto_tcp.c:196:6: warning: incorrect type in argument 6 (different base types) net/netfilter/ipvs/ip_vs_proto_tcp.c:196:6: expected restricted __be16 [usertype] newlen net/netfilter/ipvs/ip_vs_proto_tcp.c:196:6: got restricted __be32 [usertype] net/netfilter/ipvs/ip_vs_proto_tcp.c:270:6: warning: incorrect type in argument 5 (different base types) net/netfilter/ipvs/ip_vs_proto_tcp.c:270:6: expected restricted __be16 [usertype] oldlen net/netfilter/ipvs/ip_vs_proto_tcp.c:270:6: got restricted __be32 [usertype] net/netfilter/ipvs/ip_vs_proto_tcp.c:271:6: warning: incorrect type in argument 6 (different base types) net/netfilter/ipvs/ip_vs_proto_tcp.c:271:6: expected restricted __be16 [usertype] newlen net/netfilter/ipvs/ip_vs_proto_tcp.c:271:6: got restricted __be32 [usertype] net/netfilter/ipvs/ip_vs_proto_udp.c:206:6: warning: incorrect type in argument 5 (different base types) net/netfilter/ipvs/ip_vs_proto_udp.c:206:6: expected restricted __be16 [usertype] oldlen net/netfilter/ipvs/ip_vs_proto_udp.c:206:6: got restricted __be32 [usertype] net/netfilter/ipvs/ip_vs_proto_udp.c:207:6: warning: incorrect type in argument 6 (different base types) net/netfilter/ipvs/ip_vs_proto_udp.c:207:6: expected restricted __be16 [usertype] newlen net/netfilter/ipvs/ip_vs_proto_udp.c:207:6: got restricted __be32 [usertype] net/netfilter/ipvs/ip_vs_proto_udp.c:282:6: warning: incorrect type in argument 5 (different base types) net/netfilter/ipvs/ip_vs_proto_udp.c:282:6: expected restricted __be16 [usertype] oldlen net/netfilter/ipvs/ip_vs_proto_udp.c:282:6: got restricted __be32 [usertype] net/netfilter/ipvs/ip_vs_proto_udp.c:283:6: warning: incorrect type in argument 6 (different base types) net/netfilter/ipvs/ip_vs_proto_udp.c:283:6: expected restricted __be16 [usertype] newlen net/netfilter/ipvs/ip_vs_proto_udp.c:283:6: got restricted __be32 [usertype] Signed-off-by: Harvey Harrison Acked-by: Simon Horman Signed-off-by: David S. Miller commit 76acfdb9b78acf73023307974f6d38a269e9967a Author: Alexey Dobriyan Date: Thu Nov 6 23:06:44 2008 -0800 net: mark flow_cache_cpu_prepare() as __init It's called from __init code only. And__devinit in generic networking code is pretty strange :^) Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 9eeda9abd1faf489f3df9a1f557975f4c8650363 Merge: 61c9eaf90081cbe6dc4f389e0056bff76eca19ec 4bab0ea1d42dd1927af9df6fbf0003fc00617c50 Author: David S. Miller Date: Thu Nov 6 22:43:03 2008 -0800 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/wireless/ath5k/base.c net/8021q/vlan_core.c commit ea2da6e898033b9736a26cf588b9ce841a433337 Author: Takashi Iwai Date: Fri Nov 7 00:49:48 2008 +0100 ALSA: hda - Fix broken hash chain allocation The chaining for amp hash got broken due to the rewrite with snd_array. Fixed now. Signed-off-by: Takashi Iwai commit b910d9ae5b370cf5bf9d6a71028119861b6ea8a4 Author: Takashi Iwai Date: Fri Nov 7 00:26:52 2008 +0100 ALSA: hda - Add max allocation check in array allocator Added a check for max allocation size in snd_array_new() for a debugging purpose. Signed-off-by: Takashi Iwai commit c217429b14708999d6ac5de964c452600e8797d3 Author: Takashi Iwai Date: Fri Nov 7 00:23:30 2008 +0100 ALSA: hda - Add missing NULL check in amp hash allocation Added the missing NULL check from allocator in get_alloc_hash(). Signed-off-by: Takashi Iwai commit a87d091434ed2a34d647979ab12084139ee1fe41 Author: Ken Chen Date: Thu Nov 6 11:10:49 2008 -0800 x86, sched: enable wchan config menu item on 64-bit Enable the wchan config menu item for now on x86-64 arch? This will at least allow people to enable/disable frame pointers on scheduler functions. Signed-off-by: Ken Chen Signed-off-by: Ingo Molnar commit 6a60dd121c5b6c2d827e99b38c1326f2600c3891 Author: Steven Rostedt Date: Thu Nov 6 15:55:21 2008 -0500 ftrace: split out hardirq ftrace code into own header Impact: moving of function prototypes into own header file ftrace.h is too big of a file for hardirq.h, and some archs will fail to build because of the include dependencies not being met. This patch pulls out the required prototypes for hardirq.h into a smaller and safer ftrace_irq.h file. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit cf7f8690e864c6fe11e77202dd847fa60f483418 Author: Sripathi Kodi Date: Wed Nov 5 18:57:14 2008 +0530 sched, lockdep: inline double_unlock_balance() We have a test case which measures the variation in the amount of time needed to perform a fixed amount of work on the preempt_rt kernel. We started seeing deterioration in it's performance recently. The test should never take more than 10 microseconds, but we started 5-10% failure rate. Using elimination method, we traced the problem to commit 1b12bbc747560ea68bcc132c3d05699e52271da0 (lockdep: re-annotate scheduler runqueues). When LOCKDEP is disabled, this patch only adds an additional function call to double_unlock_balance(). Hence I inlined double_unlock_balance() and the problem went away. Here is a patch to make this change. Signed-off-by: Sripathi Kodi Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 64154835c58a99370c3b7fbf85d2451d6906b3b4 Author: Tony Vroon Date: Thu Nov 6 15:08:49 2008 +0000 ALSA: hda - Add lifebook model for Realtek ALC269 The widget layout of the Fujitsu Lifebook S6420 (which is ICH9M-based and uses an ALC269) is similar but not identical to the Lifebook S6410/E8410 (which are ICH8M-based and use an ALC262). It is named lifebook as fujitsu is in use for Amilo machines. This builds on the Quanta FL1 work and supports all analog inputs & outputs that I am aware of. Microphone autoswitch is implemented. The laptop mic port takes precedence over the dock mic port if both happen to have a jack plugged in. This made sense to me as a design decision (imagine a presentation environment with the dock fully wired in and the presenter quickly wanting to override the mic with a headset). There is mention of a digital audio path on the codec graph, so perhaps the headphone socket is dual-function analog/digital. I will follow up with another patch if I can acquire equipment to test this. Signed-off-by: Tony Vroon Signed-off-by: Takashi Iwai commit 6ce4a3bc1b93e8ca50b142b00dd73bfdb5c4a172 Author: Takashi Iwai Date: Thu Nov 6 17:11:10 2008 +0100 ALSA: hda - Make codec-probing more robust When an error occurs during the codec probing, typically accessing to an non-existing codec slot, the controller chip gets often screwed up and can no longer communicate with the codecs. This patch adds a preparation phase just to probe codec addresses before actually creating codec instances. If any error occurs during this probing phase, the driver resets the controller to recover. This will (hopefully) fix the famous "single_cmd" errors. Signed-off-by: Takashi Iwai commit 33fa35ed0d7e8996cc68cc2ffc21f12b38fa03c1 Author: Takashi Iwai Date: Thu Nov 6 16:50:40 2008 +0100 ALSA: hda - simplify hda_bus ops callbacks The hda_bus ops callback take struct hda_bus pointer. Also, the command callback takes the composed command word, instead of each small bits in arguments. Signed-off-by: Takashi Iwai commit e18c94d20224f3df584531a48d944d8cccfda46d Author: Grazvydas Ignotas Date: Wed Nov 5 23:51:05 2008 +0200 ALSA: ASoC: TWL4030 codec - fix 256*Fs clock According to TRM, 256*Fs clock output should be enabled when TWL4030 is in slave mode, not master. This allows sound to work on OMAP3 Pandora, which uses 256*Fs clock. Signed-off-by: Grazvydas Ignotas Acked-by: Steve Sakoman Signed-off-by: Mark Brown commit fd51b2d7d5df932767b89e00d0871a38a2c53e74 Author: KOSAKI Motohiro Date: Wed Nov 5 02:27:19 2008 +0900 x86: update CONFIG_NUMA description Impact: clarify/update CONFIG_NUMA text CONFIG_NUMA description talk about a bit old thing. So, following changes are better. o CONFIG_NUMA is no longer EXPERIMENTAL o Opteron is not the only processor of NUMA topology on x86_64 no longer, but also Intel Core7i has it. Signed-off-by: KOSAKI Motohiro Signed-off-by: Ingo Molnar commit 90080bf4b803efbc9b9cd3a7ed1639f1e036238e Author: Randy Dunlap Date: Tue Nov 4 14:37:25 2008 -0800 sched, documentation: update scheduler header file paths Impact: update documentation Update Documentation/scheduler/ files to reflect changed header files locations. Signed-off-by: Randy Dunlap Signed-off-by: Ingo Molnar commit 8735b7d0a2a6246faa406a8cdd1376bd0e689ba3 Author: Hiroshi Shimamoto Date: Wed Nov 5 18:34:35 2008 -0800 x86: signal_64: make setup_sigcontext() similar Impact: cleanup remove passing task struct. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit ee7d523c124a186ce3a886868de9cd1d8bc991f3 Author: Hiroshi Shimamoto Date: Wed Nov 5 18:33:35 2008 -0800 x86: signal_64: setup fpstate in setup_sigcontext() Impact: cleanup set fpstate field of signal context at setup_sigcontext(). Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 99ea1b93bf80a287dd70499b96d9c4d06f320ff2 Author: Hiroshi Shimamoto Date: Wed Nov 5 18:32:54 2008 -0800 x86: ia32_signal: do save_i387_xstate_ia32 at get_sigframe() Impact: cleanup move calling save_i387_xstate_ia32() into get_sigframe() from setup_sigcontext(). Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 4b33669e817a01dd99ff91df330d504ccfb2e99c Author: Hiroshi Shimamoto Date: Wed Nov 5 18:30:25 2008 -0800 x86: signal_32: do save_i387_xstate() at get_sigframe() Impact: cleanup move calling save_i387_xstate() into get_sigframe() from setup_sigcontext() like 64bit. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 3e03fb7f1da2e691644526c0d6df42d778716349 Author: Steven Rostedt Date: Thu Nov 6 00:09:43 2008 -0500 ring-buffer: convert to raw spinlocks Impact: no lockdep debugging of ring buffer The problem with running lockdep on the ring buffer is that the ring buffer is the core infrastructure of ftrace. What happens is that the tracer will start tracing the lockdep code while lockdep is testing the ring buffers locks. This can cause lockdep to fail due to testing cases that have not fully finished their locking transition. This patch converts the spin locks used by the ring buffer back into raw spin locks which lockdep does not check. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 9036990d462e09366f7297a2d1da6582c3e6b1d3 Author: Steven Rostedt Date: Wed Nov 5 16:05:44 2008 -0500 ftrace: restructure tracing start/stop infrastructure Impact: change where tracing is started up and stopped Currently, when a new tracer is selected via echo'ing a tracer name into the current_tracer file, the startup is only done if tracing_enabled is set to one. If tracing_enabled is changed to zero (by echo'ing 0 into the tracing_enabled file) a full shutdown is performed. The full startup and shutdown of a tracer can be expensive and the user can lose out traces when echo'ing in 0 to the tracing_enabled file, because the process takes too long. There can also be places that the user would like to start and stop the tracer several times and doing the full startup and shutdown of a tracer might be too expensive. This patch performs the full startup and shutdown when a tracer is selected. It also adds a way to do a quick start or stop of a tracer. The quick version is just a flag that prevents the tracing from taking place, but the overhead of the code is still there. For example, the startup of a tracer may enable tracepoints, or enable the function tracer. The stop and start will just set a flag to have the tracer ignore the calls when the tracepoint or function trace is called. The overhead of the tracer may still be present when the tracer is stopped, but no tracing will occur. Setting the tracer to the 'nop' tracer (or any other tracer) will perform the shutdown of the tracer which will disable the tracepoint or disable the function tracer. The tracing_enabled file will simply start or stop tracing. This change is all internal. The end result for the user should be the same as before. If tracing_enabled is not set, no trace will happen. If tracing_enabled is set, then the trace will happen. The tracing_enabled variable is static between tracers. Enabling tracing_enabled and going to another tracer will keep tracing_enabled enabled. Same is true with disabling tracing_enabled. This patch will now provide a fast start/stop method to the users for enabling or disabling tracing. Note: There were two methods to the struct tracer that were never used: The methods start and stop. These were to be used as a hook to the reading of the trace output, but ended up not being necessary. These two methods are now used to enable the start and stop of each tracer, in case the tracer needs to do more than just not write into the buffer. For example, the irqsoff tracer must stop recording max latencies when tracing is stopped. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 0f04870148ecb825133bc2733f473b1c5773ac0b Author: Steven Rostedt Date: Wed Nov 5 16:05:44 2008 -0500 ftrace: soft tracing stop and start Impact: add way to quickly start stop tracing from the kernel This patch adds a soft stop and start to the trace. This simply disables function tracing via the ftrace_disabled flag, and disables the trace buffers to prevent recording. The tracing code may still be executed, but the trace will not be recorded. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 60a7ecf42661f2b22168751298592da6ee210c9e Author: Steven Rostedt Date: Wed Nov 5 16:05:44 2008 -0500 ftrace: add quick function trace stop Impact: quick start and stop of function tracer This patch adds a way to disable the function tracer quickly without the need to run kstop_machine. It adds a new variable called function_trace_stop which will stop the calls to functions from mcount when set. This is just an on/off switch and does not handle recursion like preempt_disable(). It's main purpose is to help other tracers/debuggers start and stop tracing fuctions without the need to call kstop_machine. The config option HAVE_FUNCTION_TRACE_MCOUNT_TEST is added for archs that implement the testing of the function_trace_stop in the mcount arch dependent code. Otherwise, the test is done in the C code. x86 is the only arch at the moment that supports this. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 79c81d220c8e25163f56edcdfaf23f83a4c88e6b Merge: 3299b4dd1180762da831be5eb6adc44553eaec26 79a9d461fd521f133f0e66485aa9ed09c21f5191 Author: Ingo Molnar Date: Thu Nov 6 07:43:47 2008 +0100 Merge branch 'tracing/fastboot' into tracing/ftrace commit fd9abb3d97c2ab883e4732ec1214fe64190236e7 Author: Steve Glendinning Date: Wed Nov 5 00:35:37 2008 +0000 SMSC LAN911x and LAN921x vendor driver Attached is a driver for SMSC's LAN911x and LAN921x families of embedded ethernet controllers. There is an existing smc911x driver in the tree; this is intended to replace it. Dustin McIntire (the author of the smc911x driver) has expressed his support for switching to this driver. This driver contains workarounds for all known hardware issues, and has been tested on all flavours of the chip on multiple architectures. This driver now uses phylib, so this patch also adds support for the device's internal phy Signed-off-by: Steve Glendinning Signed-off-by: Bahadir Balban Signed-off-by: Dustin Mcintire Signed-off-by: Bill Gatliff Signed-off-by: Jeff Garzik commit c5916cf8dbd3ac5ec675d9347aeaa796b546b50e Author: Hannes Hering Date: Wed Nov 5 13:18:21 2008 +0100 ehea: Fix some whitespace issues This patch removes some trailing whitespaces and spaces before tabs. Signed-off-by: Hannes Hering Signed-off-by: Jeff Garzik commit 739bb23d722313e37322f485eb65f700b060d817 Author: Ben Hutchings Date: Tue Nov 4 20:35:36 2008 +0000 sfc: Do not reset when hardware monitor detects a fault The TX watchdog should trigger a reset, but a temperature/power alarm should not as this is unlikely to solve the problem. Signed-off-by: Ben Hutchings Signed-off-by: Jeff Garzik commit 3e133c44d24a094118caee182200462d46c55b56 Author: Ben Hutchings Date: Tue Nov 4 20:34:56 2008 +0000 sfc: Use lm87 and lm90 drivers for board temperature/power monitoring Add board monitoring to periodic work whenever link is down. For SFE4001, report when a fault has caused the PHY to turn off. For SFE4002, switch XFP PHY into low-power state in case of a fault. Signed-off-by: Ben Hutchings Signed-off-by: Jeff Garzik commit f41507245ef8b079685aba8da5b5b2b5e87e70bc Author: Ben Hutchings Date: Tue Nov 4 20:34:28 2008 +0000 sfc: Expose flash region storing boot code as MTD The boot code that appears as a PCI expansion ROM on the SFC4000 is stored in flash. Expose this as a standard MTD device to allow for in-place upgrades. Signed-off-by: Ben Hutchings Signed-off-by: Jeff Garzik commit 0a95f56323ce93dac354c1b2d54bf959a985cf7d Author: Ben Hutchings Date: Tue Nov 4 20:33:11 2008 +0000 sfc: Clean up non-volatile memory partitioning Move flash and EEPROM partition boundary constants into spi.h and rename them to be consistent. Add a comment on the partitioning. Signed-off-by: Ben Hutchings Signed-off-by: Jeff Garzik commit 2883f552f2c6c6ccb2021643652c6d930f205f6f Author: Ben Hutchings Date: Tue Nov 4 20:32:45 2008 +0000 sfc: Correct address of gPXE boot configuration in EEPROM Due to a hardware bug, the originally assigned range cannot reliably be used for boot configuration and must not be modifiable through ethtool. Signed-off-by: Ben Hutchings Signed-off-by: Jeff Garzik commit fd989c83325cb34795bc4d4aa6b13c06f90eac99 Author: Jay Vosburgh Date: Tue Nov 4 17:51:16 2008 -0800 bonding: alternate agg selection policies for 802.3ad This patch implements alternative aggregator selection policies for 802.3ad. The existing policy, now termed "stable," selects the active aggregator by greatest bandwidth, and only reselects a new aggregator if the active aggregator is entirely disabled (no more ports or all ports down). This patch adds two new policies: bandwidth and count, selecting the active aggregator by total bandwidth (like the stable policy) or by the number of ports in the aggregator, respectively. These two policies also differ from the stable policy in that they will reselect the active aggregator when availability-related changes occur in the bond (e.g., link state change). This permits "gang failover" within 802.3ad, allowing redundant aggregators along parallel paths to always maintain the "best" aggregator as the active aggregator (rather than having to wait for the active to entirely fail). This patch also updates the driver version to 3.5.0. Signed-off-by: Jay Vosburgh Signed-off-by: Jeff Garzik commit 6146b1a4da98377e4abddc91ba5856bef8f23f1e Author: Jay Vosburgh Date: Tue Nov 4 17:51:15 2008 -0800 bonding: Fix ALB mode to balance traffic on VLANs The current ALB function that processes incoming ARPs does not handle traffic for VLANs configured above bonding. This causes traffic on those VLANs to all be assigned the same slave. This patch corrects that misbehavior by locating the bonding interface nested below the VLAN interface. Bug reported by Sven Anders , who also tested an earlier version of this patch and confirmed that it resolved the problem. Signed-off-by: Jay Vosburgh Signed-off-by: Jeff Garzik commit 305d552accae6afb859c493ebc7d98ca3371dae2 Author: Brian Haley Date: Tue Nov 4 17:51:14 2008 -0800 bonding: send IPv6 neighbor advertisement on failover This patch adds better IPv6 failover support for bonding devices, especially when in active-backup mode and there are only IPv6 addresses configured, as reported by Alex Sidorenko. - Creates a new file, net/drivers/bonding/bond_ipv6.c, for the IPv6-specific routines. Both regular bonds and VLANs over bonds are supported. - Adds a new tunable, num_unsol_na, to limit the number of unsolicited IPv6 Neighbor Advertisements that are sent on a failover event. Default is 1. - Creates two new IPv6 neighbor discovery functions: ndisc_build_skb() ndisc_send_skb() These were required to support VLANs since we have to be able to add the VLAN id to the skb since ndisc_send_na() and friends shouldn't be asked to do this. These two routines are basically __ndisc_send() split into two pieces, in a slightly different order. - Updates Documentation/networking/bonding.txt and bumps the rev of bond support to 3.4.0. On failover, this new code will generate one packet: - An unsolicited IPv6 Neighbor Advertisement, which helps the switch learn that the address has moved to the new slave. Testing has shown that sending just the NA results in pretty good behavior when in active-back mode, I saw no lost ping packets for example. Signed-off-by: Brian Haley Signed-off-by: Jay Vosburgh Signed-off-by: Jeff Garzik commit 7d9d1f25c3872080ce599e5dd0dac3305d0a028b Author: Dean Nelson Date: Wed Nov 5 17:29:48 2008 -0600 sgi-xp: support getting the address of a partition's reserved page Add support for getting the address of a partition's reserved page. Signed-off-by: Dean Nelson Signed-off-by: H. Peter Anvin commit 31de5ece351a218a35b9bf83ab05a14373261bb6 Author: Dean Nelson Date: Wed Nov 5 17:28:35 2008 -0600 sgi-xp: define xp_partition_id and xp_region_size Define xp_partition_id and xp_region_size to their correct values. Signed-off-by: Dean Nelson Signed-off-by: H. Peter Anvin commit 2525789b4694d78df4f001063f042b2b74227d26 Author: Dean Nelson Date: Wed Nov 5 17:28:00 2008 -0600 sgi-xp: create activate and notify gru message queues For UV add the code to create the activate and notify gru message queues. Signed-off-by: Dean Nelson Signed-off-by: H. Peter Anvin commit 6c1c325de908cbc444cf284f59c3a892161012e9 Author: Dean Nelson Date: Wed Nov 5 17:27:22 2008 -0600 sgi-xp: define xp_expand_memprotect() and xp_restrict_memprotect() Define xp_expand_memprotect() and xp_restrict_memprotect() so they can be tailered to the hardware they are run on. Signed-off-by: Dean Nelson Signed-off-by: H. Peter Anvin commit 23c357003b3671cdfb17bc4d5383589e74b71511 Author: Russ Anderson Date: Wed Nov 5 22:15:13 2008 -0600 x86: uv: Add UV reserved page bios call Add UV bios call to get the address of the reserved page. Signed-off-by: Russ Anderson Signed-off-by: H. Peter Anvin commit e8929c8a6acbecbd629b8e3f2d1a2546ec4ebdfc Author: Russ Anderson Date: Wed Nov 5 22:13:44 2008 -0600 x86: uv: Add UV memory protection bios call Add UV bios call to change memory protections. Signed-off-by: Russ Anderson Signed-off-by: H. Peter Anvin commit 64ccf2f9a70a06ba56cd8cedfa610b4e77181587 Author: Russ Anderson Date: Wed Nov 5 22:11:56 2008 -0600 x86: uv: Add UV watchlist bios call Add UV bios calls to allocate and free watchlists. Signed-off-by: Russ Anderson Signed-off-by: H. Peter Anvin commit 61c9eaf90081cbe6dc4f389e0056bff76eca19ec Author: Jarek Poplawski Date: Wed Nov 5 16:02:34 2008 -0800 pkt_sched: Fix qdisc len in qdisc_peek_dequeued() A packet dequeued and stored as gso_skb in qdisc_peek_dequeued() should be seen as part of the queue for sch->q.qlen queries until it's really dequeued with qdisc_dequeue_peeked(), so qlen needs additional updating in these functions. (Updating qstats.backlog shouldn't matter here.) Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 0a36b345ab99d6b3c96999e7e3b79bd243cf9bf7 Author: Eric W. Biederman Date: Wed Nov 5 16:00:24 2008 -0800 net: Don't leak packets when a netns is going down I have been tracking for a while a case where when the network namespace exits the cleanup gets stck in an endless precessess of: unregister_netdevice: waiting for lo to become free. Usage count = 3 unregister_netdevice: waiting for lo to become free. Usage count = 3 unregister_netdevice: waiting for lo to become free. Usage count = 3 unregister_netdevice: waiting for lo to become free. Usage count = 3 unregister_netdevice: waiting for lo to become free. Usage count = 3 unregister_netdevice: waiting for lo to become free. Usage count = 3 unregister_netdevice: waiting for lo to become free. Usage count = 3 It turns out that if you listen on a multicast address an unsubscribe packet is sent when the network device goes down. If you shutdown the network namespace without carefully cleaning up this can trigger the unsubscribe packet to be sent over the loopback interface while the network namespace is going down. All of which is fine except when we drop the packet and forget to free it leaking the skb and the dst entry attached to. As it turns out the dst entry hold a reference to the idev which holds the dev and keeps everything from being cleaned up. Yuck! By fixing my earlier thinko and add the needed kfree_skb and everything cleans up beautifully. Signed-off-by: Eric W. Biederman Signed-off-by: David S. Miller commit ae33bc40c0d96d02f51a996482ea7e41c5152695 Author: Eric W. Biederman Date: Wed Nov 5 16:00:02 2008 -0800 net: Guaranetee the proper ordering of the loopback device. I was recently hunting a bug that occurred in network namespace cleanup. In looking at the code it became apparrent that we have and will continue to have cases where if we have anything going on in a network namespace there will be assumptions that the loopback device is present. Things like sending igmp unsubscribe messages when we bring down network devices invokes the routing code which assumes that at least the loopback driver is present. Therefore to avoid magic initcall ordering hackery that is hard to follow and hard to get right insert a call to register the loopback device directly from net_dev_init(). This guarantes that the loopback device is the first device registered and the last network device to go away. Signed-off-by: Eric W. Biederman Signed-off-by: David S. Miller commit d0c082cea6dfb9b674b4f6e1e84025662dbd24e8 Author: Eric W. Biederman Date: Wed Nov 5 15:59:38 2008 -0800 netns: Delete virtual interfaces during namespace cleanup When physical devices are inside of network namespace and that network namespace terminates we can not make them go away. We have to keep them and moving them to the initial network namespace is the best we can do. For virtual devices left in a network namespace that is exiting we have no need to preserve them and we now have the infrastructure that allows us to delete them. So delete virtual devices when we exit a network namespace. Keeping the necessary user space clean up after a network namespace exits much more tractable. Acked-by: Daniel Lezcano Acked-by: Pavel Emelyanov Signed-off-by: Eric W. Biederman Signed-off-by: David S. Miller commit 1c1b777a5673b57a6c0377ba60a790d05e4a0676 Author: Harvey Harrison Date: Wed Nov 5 09:51:12 2008 -0800 powerpc: Use the new byteorder headers Signed-off-by: Harvey Harrison Signed-off-by: Paul Mackerras commit 1f29fae29709b4668979e244c09b2fa78ff1ad59 Author: Serge E. Hallyn Date: Wed Nov 5 16:08:52 2008 -0600 file capabilities: add no_file_caps switch (v4) Add a no_file_caps boot option when file capabilities are compiled into the kernel (CONFIG_SECURITY_FILE_CAPABILITIES=y). This allows distributions to ship a kernel with file capabilities compiled in, without forcing users to use (and understand and trust) them. When no_file_caps is specified at boot, then when a process executes a file, any file capabilities stored with that file will not be used in the calculation of the process' new capability sets. This means that booting with the no_file_caps boot option will not be the same as booting a kernel with file capabilities compiled out - in particular a task with CAP_SETPCAP will not have any chance of passing capabilities to another task (which isn't "really" possible anyway, and which may soon by killed altogether by David Howells in any case), and it will instead be able to put new capabilities in its pI. However since fI will always be empty and pI is masked with fI, it gains the task nothing. We also support the extra prctl options, setting securebits and dropping capabilities from the per-process bounding set. The other remaining difference is that killpriv, task_setscheduler, setioprio, and setnice will continue to be hooked. That will be noticable in the case where a root task changed its uid while keeping some caps, and another task owned by the new uid tries to change settings for the more privileged task. Changelog: Nov 05 2008: (v4) trivial port on top of always-start-\ with-clear-caps patch Sep 23 2008: nixed file_caps_enabled when file caps are not compiled in as it isn't used. Document no_file_caps in kernel-parameters.txt. Signed-off-by: Serge Hallyn Acked-by: Andrew G. Morgan Signed-off-by: James Morris commit e21e696edb498c7f7eed42ba3096f6bbe13927b6 Merge: 2f99db28af90957271a6448479c3e492ccf7c697 75fa67706cce5272bcfc51ed646f2da21f3bdb6e Author: James Morris Date: Thu Nov 6 07:12:34 2008 +0800 Merge branch 'master' into next commit 2f99db28af90957271a6448479c3e492ccf7c697 Author: Michal Schmidt Date: Wed Nov 5 13:35:06 2008 +0100 selinux: recognize netlink messages for 'ip addrlabel' In enforcing mode '/sbin/ip addrlabel' results in a SELinux error: type=SELINUX_ERR msg=audit(1225698822.073:42): SELinux: unrecognized netlink message type=74 for sclass=43 The problem is missing RTM_*ADDRLABEL entries in SELinux's netlink message types table. Reported in https://bugzilla.redhat.com/show_bug.cgi?id=469423 Signed-off-by: Michal Schmidt Acked-by: Stephen Smalley Signed-off-by: James Morris commit 5b4d2189446fd31cd618bbd1c24566b8d0ab11c8 Author: Sebastian Siewior Date: Sat Nov 1 10:00:56 2008 +0000 powerpc/boot: Allocate more memory for dtb David Gibson suggested that since we are now unconditionally copying the dtb into a malloc()ed buffer, it would be sensible to add a little padding to the buffer at that point, so that further device tree manipulations won't need to reallocate it. This implements that suggestion. Signed-off-by: Sebastian Andrzej Siewior Signed-off-by: Paul Mackerras commit 7d4320f3d5ace5758111f2beac931376737f80f5 Author: Jon Tollefson Date: Thu Oct 30 12:03:57 2008 +0000 powerpc: Hugetlb pgtable cache access cleanup Andrew Morton suggested that using a macro that makes an array reference look like a function call makes it harder to understand the code. This therefore removes the huge_pgtable_cache(psize) macro and replaces its uses with pgtable_cache[HUGE_PGTABLE_INDEX(psize)]. Signed-off-by: Jon Tollefson Cc: Nick Piggin Cc: Benjamin Herrenschmidt Signed-off-by: Andrew Morton Acked-by: David Gibson Signed-off-by: Paul Mackerras commit d4ad304841a9790d4fa35e51d6aa9baeba631559 Author: Masakazu Mokuno Date: Thu Oct 30 08:17:18 2008 +0000 powerpc/ps3: Fix memory leak in device init Free dynamically allocated device data structures when device registration fails. This fixes memory leakage when the registration fails. Signed-off-by: Masakazu Mokuno Signed-off-by: Geoff Levand Signed-off-by: Paul Mackerras commit 3cc698789a3f44dabc5eed389b6c123caf787c0f Author: Paul Mackerras Date: Tue Oct 28 00:18:11 2008 +0000 powerpc: Eliminate unused do_gtod variable Since we started using the generic timekeeping code, we haven't had a powerpc-specific version of do_gettimeofday, and hence there is now nothing that reads the do_gtod variable in arch/powerpc/kernel/time.c. This therefore removes it and the code that sets it. Signed-off-by: Paul Mackerras commit 597bc5c00b666fe123abb0af64f6e86f7ab72a90 Author: Paul Mackerras Date: Mon Oct 27 23:56:03 2008 +0000 powerpc: Improve resolution of VDSO clock_gettime Currently the clock_gettime implementation in the VDSO produces a result with microsecond resolution for the cases that are handled without a system call, i.e. CLOCK_REALTIME and CLOCK_MONOTONIC. The nanoseconds field of the result is obtained by computing a microseconds value and multiplying by 1000. This changes the code in the VDSO to do the computation for clock_gettime with nanosecond resolution. That means that the resolution of the result will ultimately depend on the timebase frequency. Because the timestamp in the VDSO datapage (stamp_xsec, the real time corresponding to the timebase count in tb_orig_stamp) is in units of 2^-20 seconds, it doesn't have sufficient resolution for computing a result with nanosecond resolution. Therefore this adds a copy of xtime to the VDSO datapage and updates it in update_gtod() along with the other time-related fields. Signed-off-by: Paul Mackerras commit c73049f6aa58ac1d1a9ca8cb2b415ef97240b2d3 Author: Mark Nelson Date: Mon Oct 27 20:38:14 2008 +0000 powerpc: Remove map_/unmap_single() from dma_mapping_ops Now that all of the remaining dma_mapping_ops have had their map_/unmap_single functions updated to become map/unmap_page functions, there is no need to have the map_/unmap_single function pointers in the dma_mapping_ops. So, this removes them and also removes the code that does the checking for which set of functions to use. Signed-off-by: Mark Nelson Acked-by: Becky Bruce Signed-off-by: Paul Mackerras commit 7eef440a545c7f812ed10b49d4a10a351df9cad6 Author: Benjamin Herrenschmidt Date: Mon Oct 27 19:48:56 2008 +0000 powerpc/pci: Cosmetic cleanups of pci-common.c This does a few cosmetic cleanups, moving a couple of things around but without actually changing what the code does. (There is a minor change in ordering of operations in pcibios_setup_bus_devices but it should have no impact). Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit fd6852c8fa060bd45c82a2593e18f933f6c6204f Author: Benjamin Herrenschmidt Date: Mon Oct 27 19:48:52 2008 +0000 powerpc/pci: Fix various pseries PCI hotplug issues The pseries PCI hotplug code has a number of issues, ranging from incorrect resource setup to crashes, depending on what is added, when, whether it contains a bridge, etc etc.... This fixes a whole bunch of these, while actually simplifying the code a bit, using more generic code in the process and factoring out common code between adding of a PHB, a slot or a device. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit b5ae5f911d221ad85090d6805ab9ab020f6e4703 Author: Benjamin Herrenschmidt Date: Mon Oct 27 19:48:44 2008 +0000 powerpc/pci: Make pcibios_allocate_bus_resources more robust To properly fix PCI hotplug, it's useful to be able to make the fixup passes on all devices whether they were just hot plugged or already there. However, pcibios_allocate_bus_resources() wouldn't cope well with being called twice for a given bus. This makes it ignore resources that have already been allocated, along with adding a bit of debug output. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 57b066ff4ec53a0ac7cbf7fb363bb670cf58ddae Author: Benjamin Herrenschmidt Date: Mon Oct 27 19:48:41 2008 +0000 powerpc/eeh: Make EEH device add/remove more robust To properly fix PCI hotplug, it's useful to be able to make the fixup passes on all devices whether they were just hot plugged or already there. The EEH code however used to not be very friendly with calling eeh_add_device_late() multiple time, and not very rebust in the way it generally tests whether a device is in the expected state vs. the EEH code. This improves it, along with cleaning up a couple of debug printk's. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 8b8da35804bb89eee23f9bcd5638e1f754bd4c91 Author: Benjamin Herrenschmidt Date: Mon Oct 27 19:48:37 2008 +0000 powerpc/pci: Split pcibios_fixup_bus() into bus setup and device setup Currently, our PCI code uses the pcibios_fixup_bus() callback, which is called by the generic code when probing PCI buses, for two different things. One is to set up things related to the bus itself, such as reading bridge resources for P2P bridges, fixing them up, or setting up the iommu's associated with bridges on some platforms. The other is some setup for each individual device under that bridge, mostly setting up DMA mappings and interrupts. The problem is that this approach doesn't work well with PCI hotplug when an existing bus is re-probed for new children. We fix this problem by splitting pcibios_fixup_bus into two routines: pcibios_setup_bus_self() is now called to setup the bus itself pcibios_setup_bus_devices() is now called to setup devices pcibios_fixup_bus() is then modified to call these two after reading the bridge bases, and the OF based PCI probe is modified to avoid calling into the first one when rescanning an existing bridge. [paulus@samba.org - fixed eeh.h for 32-bit compile now that pci-common.c is including it unconditionally.] Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 8dc840f88d9c9f75f46d5dbe489242f8a114fab6 Author: David Anders Date: Wed Nov 5 07:39:47 2008 -0800 ASoC: Add new parameter to s3c24xx_pcm_enqueue The S3C24xx dma does not allow more than one buffer to be enqueue prior to the dma transfers starting. This patch adds an additional parameter to s3c24xx_pcm_enqueue() to allow for passing an initial dma maximum load value. Signed-off-by: David Anders Signed-off-by: Mark Brown commit ea913940c39a61214c799cc7093d7b20fe11a94c Author: Mark Brown Date: Wed Nov 5 11:13:21 2008 +0000 ASoC: Remove core version number Rather than try to remember to keep the core version number updated (which hasn't been happening) just remove it. It was much more useful when ASoC was out of tree. Signed-off-by: Mark brown commit 74e722015fe47c8f0e7ef7c0b4cf32d3e4ae11a0 Author: Marek Vasut Date: Mon Nov 3 12:02:12 2008 +0000 ASoC: Add Palm/PXA27x unified ASoC audio driver this patch adds asoc audio driver for pxa27x based Palm PDAs. I tested it for palmtx, t5 and ld, it should work with palmz72 as well (slapin, please test). I sent it here some time ago, but now I got to fixing bugs in it. It should be somehow mostly ok and ready for applying. [Converted to use snd_soc_dapm_nc_pin() and bool Kconfig -- broonie] Signed-off-by: Marek Vasut Signed-off-by: Mark Brown commit 838e8bb71dc0c892bf8f84abd3c709d8fe3a8d3c Author: Uros Bizjak Date: Fri Oct 24 16:53:33 2008 +0200 x86: Implement change_bit with immediate operand as "lock xorb" Impact: Minor optimization. Implement change_bit with immediate bit count as "lock xorb". This is similar to "lock orb" and "lock andb" for set_bit and clear_bit functions. Signed-off-by: Uros Bizjak Signed-off-by: H. Peter Anvin commit 6834d7ce224a6f6a1dd05da3a867730c40943154 Author: Takashi Iwai Date: Wed Nov 5 17:41:23 2008 +0100 ALSA: ice1724 - Re-fix IRQ mask initialization The previous IRQ mask initialization was wrong. It must set the bits to be masked. Signed-off-by: Takashi Iwai commit c238b4f4038e0e49bb241640610584a088b268b1 Author: Takashi Iwai Date: Wed Nov 5 14:57:20 2008 +0100 ALSA: hda - Split ALC268 acer model There are actually two variants of ALC268 Acer implementation, one with an analog built-in mic (pin 0x19) and another with a digital mic (pin 0x12). Created a new model, acer-dmic, for the latter case now. So far, all known models are assigned to be analog-mic, according to the BIOS setup. If this doesn't match with the actual case, one needs to try model=acer-dmic, and fix the entry to point ALC268_ACER_DMIC if it works. Signed-off-by: Takashi Iwai commit ab56ced9c57b66862c687f3158045d15133f02d6 Author: Benjamin Herrenschmidt Date: Mon Oct 27 19:48:33 2008 +0000 powerpc/pci: Remove pcibios_do_bus_setup() The function pcibios_do_bus_setup() was used by pcibios_fixup_bus() to perform setup that is different between the 32-bit and 64-bit code. This difference no longer exists, thus the function is removed and the setup now done directly from pci-common.c. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 53280323350621985b3f2f8ffe649215304bcc5f Author: Benjamin Herrenschmidt Date: Mon Oct 27 19:48:29 2008 +0000 powerpc/pci: Use common PHB resource hookup The 32-bit and 64-bit powerpc PCI code used to set up the resource pointers of the root bus of a given PHB in completely different places. This unifies this in large part, by making 32-bit use a routine very similar to what 64-bit does when initially scanning the PCI busses. The actual setup of the PHB resources itself is then moved to a common function in pci-common.c. This should cause no functional change on 64-bit. On 32-bit, the effect is that the PHB resources are going to be setup a bit earlier, instead of being setup from pcibios_fixup_bus(). Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit b0494bc8ee449f0534afa92a51e2e3bb27bab69b Author: Benjamin Herrenschmidt Date: Mon Oct 27 19:48:22 2008 +0000 powerpc/pci: Cleanup debug printk's This removes the various DBG() macro from the powerpc PCI code and makes it use the standard pr_debug instead. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 25d6e2d7c58ddc4a3b614fc5381591c0cfe66556 Author: Mark Nelson Date: Mon Oct 27 00:46:51 2008 +0000 powerpc: Update 64bit memcpy() using CPU_FTR_UNALIGNED_LD_STD Update memcpy() to add two new feature sections: one for aligning the destination before copying and one for copying using aligned load and store doubles. These new feature sections will only affect Power6 and Cell because the CPU feature bit was only added to these two processors. Power6 gets its best performance in memcpy() when aligning neither the source nor the destination, while Cell gets its best performance when just the destination is aligned. But in order to save on CPU feature bits we can use the previously added CPU_FTR_CP_USE_DCBTZ feature bit to differentiate between Power6 and Cell (because CPU_FTR_CP_USE_DCBTZ was added to Cell but not Power6). The first feature section acts to nop out the branch that takes us to the code that aligns us to an eight byte boundary for the destination. We only want to nop out this branch on Power6. So the ALT_FTR_SECTION_END() for this feature section creates a test mask of the two feature bits ORed together and provides an expected result of just CPU_FTR_UNALIGNED_LD_STD, thus we nop out the branch if we're on a CPU that has CPU_FTR_UNALIGNED_LD_STD set and CPU_FTR_CP_USE_DCBTZ unset. For the second feature section added, if we're on a CPU that has the CPU_FTR_UNALIGNED_LD_STD bit set then we don't want to do the copy with aligned loads and stores (and the appropriate shifting left and right instructions), so we want to nop out the branch to .Lsrc_unaligned. The andi. used for this branch is moved to just above the branch because this allows us to nop out both instructions with just one feature section which gives us better performance and doesn't hurt readability which two separate feature sections did. Moving the andi. to just above the branch doesn't have any noticeable negative effect on the remaining 64bit processors (the ones that didn't have this feature bit added). On Cell this simple modification results in an improvement to measured memcpy() bandwidth of up to 50% in the hot cache case and up to 15% in the cold cache case. On Power6 we get memory bandwidth results that are up to three times faster in the hot cache case and up to 50% faster in the cold cache case. Commit 2a9294369bd020db89bfdf78b84c3615b39a5c84 ("powerpc: Add new CPU feature: CPU_FTR_CP_USE_DCBTZ") was where CPU_FTR_CP_USE_DCBTZ was added. To say that Cell gets its best performance in memcpy() with just the destination aligned is true but only for the reason that the indirect shift and rotate instructions, sld and srd, are microcoded on Cell. This means that either the destination or the source can be aligned, but not both, and seeing as we get better performance with the destination aligned we choose this option. While we're at it make a one line change from cmpldi r1,... to cmpldi cr1,... for consistency. Signed-off-by: Mark Nelson Signed-off-by: Paul Mackerras commit 4ec577a28980a0790df3c3dfe9c81f6e2222acfb Author: Mark Nelson Date: Mon Oct 27 00:43:02 2008 +0000 powerpc: Add new CPU feature: CPU_FTR_UNALIGNED_LD_STD Add a new CPU feature bit, CPU_FTR_UNALIGNED_LD_STD, to be added to the 64bit powerpc chips that can do unaligned load double and store double without any performance hit. This is added to Power6 and Cell and will be used in the next commit to disable the code that gets the destination address aligned on those CPUs where doing that doesn't improve performance. Signed-off-by: Mark Nelson Signed-off-by: Paul Mackerras commit 409001948d9f221c94a61c3ee96de112755fc04d Author: Brian King Date: Wed Oct 22 05:53:45 2008 +0000 powerpc: Update page-in counter for CMM A new field has been added to the VPA as a method for the client OS to communicate to firmware the number of page-ins it is performing when running collaborative memory overcommit. The hypervisor will use this information to better determine if a partition is experiencing memory pressure and needs more memory allocated to it. Signed-off-by: Brian King Signed-off-by: Paul Mackerras commit 1ef8014debb6410ed1960c4477d0006df11157c1 Author: Sebastien Dugue Date: Wed Oct 22 04:36:32 2008 +0000 powerpc/pseries: Fix getting the server number size The 'ibm,interrupt-server#-size' properties are not in the cpu nodes, which is where we currently look for them, but rather live under the interrupt source controller nodes (which have "ibm,ppc-xics" in their compatible property). This moves the code that looks for the ibm,interrupt-server#-size properties from xics_update_irq_servers() into xics_init_IRQ(). Also this adds a check for mismatched sizes across the interrupt source controller nodes. Not sure this is necessary as in this case the firmware might be seriously busted. This property only appears on POWER6 boxes and is only used in the set-indicator(gqirm) call, and apparently firmware currently ignores the value we pass. Nevertheless we need to fix it in case future firmware versions use it. Signed-off-by: Sebastien Dugue Cc: Benjamin Herrenschmidt Acked-by: Milton Miller Signed-off-by: Paul Mackerras commit 691de57679e3f05b708b98ca2ab27657c768843f Author: Anton Vorontsov Date: Tue Oct 21 08:58:44 2008 +0000 powerpc: Remove device_type = "rtc" properties in .dts files We don't want to encourage the device_type usage. It isn't used in the code, so we can simply remove it from the dts files. Suggested-by: Scott Wood Signed-off-by: Anton Vorontsov Acked-by: Grant Likely Acked-by: David Gibson Signed-off-by: Paul Mackerras commit a6a8e009b118b4906cbb4b382f8cc17195cff860 Author: Benjamin Herrenschmidt Date: Tue Oct 14 18:25:28 2008 +0000 powerpc: Silence software timebase sync When no hardware method is provided to sync the timebase registers across the machine, and the platform doesn't sync them for us, then we use a generic software implementation. Currently, the code for that has many printks, and they don't have log levels. Most of the printks are only useful for debugging the code, and since we haven't had any problems with it for years, this turns them into pr_debug. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 1fd0f52583a85b21a394201b007bc1ee104b235d Author: Benjamin Herrenschmidt Date: Thu Oct 2 14:12:51 2008 +0000 powerpc: Fix domain numbers in /proc on 64-bit The code to properly expose domain numbers in /proc is somewhat bogus on ppc64 as it depends on the "buid" field being non-0, but that field is really pseries specific. This removes that code and makes ppc64 use the same code as 32-bit which effectively decides whether to expose domains based on ppc_pci_flags set by the platform, and sets the default for 64-bit to enable domains and enable compatibility for domain 0 (which strips the domain number for domain 0 to help with X servers). Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras commit 270acefafeb74ce2fe93d35b75733870bf1e11e7 Author: Eric Dumazet Date: Wed Nov 5 01:38:06 2008 -0800 net: sk_free_datagram() should use sk_mem_reclaim_partial() I noticed a contention on udp_memory_allocated on regular UDP applications. While tcp_memory_allocated is seldom used, it appears each incoming UDP frame is currently touching udp_memory_allocated when queued, and when received by application. One possible solution is to use sk_mem_reclaim_partial() instead of sk_mem_reclaim(), so that we keep a small reserve (less than one page) of memory for each UDP socket. We did something very similar on TCP side in commit 9993e7d313e80bdc005d09c7def91903e0068f07 ([TCP]: Do not purge sk_forward_alloc entirely in tcp_delack_timer()) A more complex solution would need to convert prot->memory_allocated to use a percpu_counter with batches of 64 or 128 pages. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit d99a7bd210a14001007fc5233597c78877f0a11c Author: Gerrit Renker Date: Tue Nov 4 23:56:30 2008 -0800 dccp: Cleanup routines for feature negotiation This inserts the required de-allocation routines for memory allocated by feature negotiation in the socket destructors, replacing dccp_feat_clean() in one instance. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit ac75773c2742d82cbcb078708df406e9017224b7 Author: Gerrit Renker Date: Tue Nov 4 23:55:49 2008 -0800 dccp: Per-socket initialisation of feature negotiation This provides feature-negotiation initialisation for both DCCP sockets and DCCP request_sockets, to support feature negotiation during connection setup. It also resolves a FIXME regarding the congestion control initialisation. Thanks to Wei Yongjun for help with the IPv6 side of this patch. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 61e6473efbd6087e1db3aaa93a5266c5bfd8aa99 Author: Gerrit Renker Date: Tue Nov 4 23:54:04 2008 -0800 dccp: List management for new feature negotiation This adds list initial fields and list management functions for the new feature negotiation implementation. Thanks to Arnaldo for suggestions and improvements. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Signed-off-by: David S. Miller commit 7d43d1a0f2cf535167ec7247f110a1f85cecac43 Author: Gerrit Renker Date: Tue Nov 4 23:43:47 2008 -0800 dccp: Implement lookup table for feature-negotiation information A lookup table for feature-negotiation information, extracted from RFC 4340/42, is provided by this patch. All currently known features can be found in this table, along with their feature location, their default value, and type. Signed-off-by: Gerrit Renker Acked-by: Ian McDonald Acked-by: Arnaldo Carvalho de Melo Signed-off-by: David S. Miller commit bd012f2e7be9f69a47d240ded0fa491967d9827c Author: Gerrit Renker Date: Tue Nov 4 23:38:20 2008 -0800 dccp: Basic data structure for feature negotiation This patch prepares for the new and extended feature-negotiation routines. The following feature-negotiation data structures are provided: * a container for the various (SP or NN) values, * symbolic state names to track feature states, * an entry struct which holds all current information together, * elementary functions to fill in and process these structures. Entry structs are arranged as FIFO for the following reason: RFC 4340 specifies that if multiple options of the same type are present, they are processed in the order of their appearance in the packet; which means that this order needs to be preserved in the local data structure (the later insertion code also respects this order). The struct list_head has been chosen for the following reasons: the most frequent operations are * add new entry at tail (when receiving Change or setting socket options); * delete entry (when Confirm has been received); * deep copy of entire list (cloning from listening socket onto request socket). The NN value has been set to 64 bit, which is a currently sufficient upper limit (Sequence Window feature has 48 bit). Thanks to Arnaldo, who contributed the streamlined layout of the entry struct. Signed-off-by: Gerrit Renker Acked-by: Arnaldo Carvalho de Melo Signed-off-by: David S. Miller commit 13c947444f4355293b49f83b809f178393a0a4d9 Author: Takashi Iwai Date: Wed Nov 5 08:06:08 2008 +0100 ALSA: hda - Add ASUS V1Sn support Asus V1s series laptops have an ALC660VD with PCI id: 0x1043, 0x1633. 1.) remove the previous behaviour of mapping that to the ALC861VD_LENOVO device. 2.) add a new ALC660VD_V1S device based on ALC861VD_LENOVO, with an added digital out. Signed-off-by: Tristan Aston Signed-off-by: Takashi Iwai commit beb0b9cf78b56b0f30f5defe62b7b9712cd02a50 Author: Takashi Iwai Date: Wed Nov 5 07:58:25 2008 +0100 ALSA: hda - Fix unused function in patch_intelhdmi.c Add a proper ifdef to shut out a compile warning: CC [M] sound/pci/hda/patch_intelhdmi.o sound/pci/hda/patch_intelhdmi.c:286: warning: ‘hdmi_get_dip_index’ defined but \ not used Signed-off-by: Takashi Iwai commit 91504877c50a792412e2043a1c2099f054d7254a Author: Wu, Fengguang Date: Wed Nov 5 11:16:56 2008 +0800 ALSA: hda - Intel HDMI audio support Add support for Intel G45 integrated HDMI audio codecs. This initial release supports: - 2 channel stereo sound output - report monitor's ELD information Signed-off-by: Wu Fengguang Signed-off-by: Takashi Iwai commit d5f642384e9da75393160350f75bbb9a527f7c58 Author: Alexey Dobriyan Date: Tue Nov 4 14:45:58 2008 -0800 net: #ifdef ->sk_security Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit fd8cd7e1919fc1c27fe2fdccd2a1cd32f791ef0f Author: Alok Kataria Date: Mon Nov 3 15:50:38 2008 -0800 x86: vmware: look for DMI string in the product serial key Impact: Should permit VMware detection on older platforms where the vendor is changed. Could theoretically cause a regression if some weird serial number scheme contains the string "VMware" by pure chance. Seems unlikely, especially with the mixed case. In some user configured cases, VMware may choose not to put a VMware specific DMI string, but the product serial key is always there and is VMware specific. Add a interface to check the serial key, when checking for VMware in the DMI information. Signed-off-by: Alok N Kataria Signed-off-by: H. Peter Anvin commit 41d9f9c524a53477467b7e0111ff3d644198f191 Author: Eric Paris Date: Tue Nov 4 15:18:26 2008 -0500 SELinux: hold tasklist_lock and siglock while waking wait_chldexit SELinux has long been calling wake_up_interruptible() on current->parent->signal->wait_chldexit without holding any locks. It appears that this operation should hold the tasklist_lock to dereference current->parent and we should hold the siglock when waking up the signal->wait_chldexit. Signed-off-by: Eric Paris Signed-off-by: James Morris commit 0ee4663617fb0f78cec4cc6558a096ccbd8c3ffc Author: Takashi Iwai Date: Tue Nov 4 18:06:23 2008 +0100 ALSA: ASoC - Remove unnecessary inclusion of linux/version.h Signed-off-by: Takashi Iwai commit 3865675c60aec3e81d72d484680b544afc6fc51d Author: Huang Weiyi Date: Fri Oct 31 22:50:00 2008 +0800 ALSA: ASoC codec: remove unused #include The file(s) below do not use LINUX_VERSION_CODE nor KERNEL_VERSION. sound/soc/codecs/ad73311.c This patch removes the said #include . Signed-off-by: Huang Weiyi Acked-by: Mark Brown Signed-off-by: Takashi Iwai commit bfc5c26fb692fa7a196108c3b23d9c747d105c00 Author: Takashi Iwai Date: Tue Nov 4 17:48:39 2008 +0100 ALSA: hda - Don't create empty PCM streams Due to the hda-reconfiguration patches, the check of empty stream is gone, and this results in an error with the codec setup with empty streams. This patch adds the check again to avoid the error at probing. Signed-off-by: Takashi Iwai commit 79a9d461fd521f133f0e66485aa9ed09c21f5191 Author: Frederic Weisbecker Date: Fri Oct 31 13:34:45 2008 +0100 tracing/ftrace: fix a bug when switch current tracer to sched tracer Impact: fix boot tracer + sched tracer coupling bug Fix a bug that made the sched_switch tracer unable to run if set as the current_tracer after the boot tracer. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit efade6e7821c4219818e9da08f9315dfa617048b Author: Frederic Weisbecker Date: Fri Oct 31 13:28:58 2008 +0100 tracing/ftrace: types and naming corrections for sched tracer Impact: cleanup This patch applies some corrections suggested by Steven Rostedt. Change the type of shed_ref into int since it is used into a Mutex, we don't need it anymore as an atomic variable in the sched_switch tracer. Also change the name of the register mutex. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit d7ad44b697c9d13e445ddc7d16f736fbac333249 Author: Frederic Weisbecker Date: Fri Oct 31 13:20:08 2008 +0100 tracing/fastboot: use sched switch tracer from boot tracer Impact: enhance boot trace output with scheduling events Use the sched_switch tracer from the boot tracer. We also can trace schedule events inside the initcalls. Sched tracing is disabled after the initcall has finished and then reenabled before the next one is started. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit e55f605c14679c30be41473e60b7ad26524cdc35 Author: Frederic Weisbecker Date: Fri Oct 31 13:14:28 2008 +0100 tracing/ftrace: remove unused code in sched_switch tracer Impact: cleanup When init_sched_switch_trace() is called, it has no reason to start the sched tracer if the sched_ref is not zero. _ If this is non-zero, the tracer is already used, but we can register it to the tracing engine. There is already a security which avoid the tracer probes not to be resgistered twice. _ If this is zero, this block will not be used. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 07695fa04e8a3384b0c855398ce1f7885bd7dc3b Author: Frederic Weisbecker Date: Fri Oct 31 13:08:28 2008 +0100 tracing/ftrace: fix a race condition in sched_switch tracer Impact: fix race condition in sched_switch tracer This patch fixes a race condition in the sched_switch tracer. If several tasks (IE: concurrent initcalls) are playing with tracing_start_cmdline_record() and tracing_stop_cmdline_record(), the following situation could happen: _ Task A and B are using the same tracepoint probe. Task A holds it. Task B is sleeping and doesn't hold it. _ Task A frees the sched tracer, then sched_ref is decremented to 0. _ Task A is preempted and hadn't yet unregistered its tracepoint probe, then B runs. _ B increments sched_ref, sees it's 1 and then guess it has to register its probe. But it has not been freed by task A. _ A lot of bad things can happen after that... Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 71566a0d161edec70361b7f90f6e54af6a6d5d05 Author: Frederic Weisbecker Date: Fri Oct 31 12:57:20 2008 +0100 tracing/fastboot: Enable boot tracing only during initcalls Impact: modify boot tracer We used to disable the initcall tracing at a specified time (IE: end of builtin initcalls). But we don't need it anymore. It will be stopped when initcalls are finished. However we want two things: _Start this tracing only after pre-smp initcalls are finished. _Since we are planning to trace sched_switches at the same time, we want to enable them only during the initcall execution. For this purpose, this patch introduce two functions to enable/disable the sched_switch tracing during boot. Signed-off-by: Frederic Weisbecker Signed-off-by: Ingo Molnar commit 6e3354c1e9946fa585de40e93ad917ec7abd006e Author: Simon Arlott Date: Tue Nov 4 14:35:39 2008 +0100 netfilter: nf_nat: remove warn_if_extra_mangle In net/ipv4/netfilter/nf_nat_rule.c, the function warn_if_extra_mangle was added in commit 5b1158e909ecbe1a052203e0d8df15633f829930 (2006-12-02). I have a DNAT target in the OUTPUT chain than changes connections with dst 2.0.0.1 to another address which I'll substitute with 66.102.9.99 below. On every boot I get the following message: [ 146.252505] NAT: no longer support implicit source local NAT [ 146.252517] NAT: packet src 66.102.9.99 -> dst 2.0.0.1 As far as I can tell from reading the function doing this, it should warn if the source IP for the route to 66.102.9.99 is different from 2.0.0.1 but that is not the case. It doesn't make sense to check the DNAT target against the local route source. Either the function should be changed to correctly check the route, or it should be removed entirely as it's been nearly 2 years since it was added. Signed-off-by: Simon Arlott Signed-off-by: Patrick McHardy commit 249b62035ca247b9cedbefa1acf6bdc53b96e678 Author: Alexey Dobriyan Date: Tue Nov 4 14:31:29 2008 +0100 netfilter: netns ebtables: br_nf_pre_routing_finish() fixup Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit b71b30a626fd0e43c825a05036e7a2c3f377a563 Author: Alexey Dobriyan Date: Tue Nov 4 14:30:46 2008 +0100 netfilter: netns ebtables: ebtable_nat in netns Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit 4aad10938d4e4e8364b664cd5420c3bfeb9b679b Author: Alexey Dobriyan Date: Tue Nov 4 14:29:58 2008 +0100 netfilter: netns ebtables: ebtable_filter in netns Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit 8157e6d16af86e4a8d31a035db7be02a8a171c26 Author: Alexey Dobriyan Date: Tue Nov 4 14:29:03 2008 +0100 netfilter: netns ebtables: ebtable_broute in netns Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit dbcdf85a2e3d2aa584dafd10b5a1f42764e673e7 Author: Alexey Dobriyan Date: Tue Nov 4 14:28:04 2008 +0100 netfilter: netns ebtables: more cleanup during ebt_unregister_table() Now that ebt_unregister_table() can be called during netns stop, and module pinning scheme can't prevent netns stop, do table cleanup by hand. Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit 6beceee5aa2cb94c4ae9f0784c7d3135d343f5b5 Author: Alexey Dobriyan Date: Tue Nov 4 14:27:15 2008 +0100 netfilter: netns ebtables: part 2 * return ebt_table from ebt_register_table(), module code will save it into per-netns data for unregistration * duplicate ebt_table at the very beginning of registration -- it's added into list, so one ebt_table wouldn't end up in many lists (and each netns has different one) * introduce underscored tables in individial modules, this is temporary to not break bisection. Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit 511061e2dd1b84bb21bb97c9216a19606c29ac02 Author: Alexey Dobriyan Date: Tue Nov 4 14:22:55 2008 +0100 netfilter: netns ebtables: part 1 * propagate netns from userspace, register table in passed netns * remporarily register every ebt_table in init_net P. S.: one needs to add ".netns_ok = 1" to igmp_protocol to test with ebtables(8) in netns. Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit 19223f26d97077da8cf25251458afe00cae20cbb Author: Alexey Dobriyan Date: Tue Nov 4 14:22:13 2008 +0100 netfilter: arptable_filter: merge forward hook It's identical to NF_ARP_IN hook. Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit d4ec52bae739409b2372fea30dba0e7a8d6b9181 Author: Alexey Dobriyan Date: Tue Nov 4 14:21:48 2008 +0100 netfilter: netns-aware ipt_addrtype Signed-off-by: Alexey Dobriyan Signed-off-by: Patrick McHardy commit 5f7340eff8f68f41b7e5c7ad47ec4cd1ea1afb40 Author: Eric Leblond Date: Tue Nov 4 14:21:08 2008 +0100 netfilter: xt_NFLOG: don't call nf_log_packet in NFLOG module. This patch modifies xt_NFLOG to suppress the call to nf_log_packet() function. The call of this wrapper in xt_NFLOG was causing NFLOG to use the first initialized module. Thus, if ipt_ULOG is loaded before nfnetlink_log all NFLOG rules are treated as plain LOG rules. Signed-off-by: Eric Leblond Signed-off-by: Patrick McHardy commit 3299b4dd1180762da831be5eb6adc44553eaec26 Author: Peter Zijlstra Date: Tue Nov 4 11:58:21 2008 +0100 ftrace: sysctl typo Impact: fix sysctl name typo Steve must have needed more coffee ;-) Signed-off-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 69f698adcf43930a283f630395a1bb781962cfe6 Author: Peter Zijlstra Date: Sat Nov 1 19:53:34 2008 +0100 ftrace: sysrq-z to dump the buffers Impact: add SysRq-z support to dump trace buffers Allows one to force an ftrace dump from sysrq Signed-off-by: Peter Zijlstra Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 6cf87efbc7a3676e0ad7c9622ec6aec244a593bc Author: Ingo Molnar Date: Tue Nov 4 10:42:23 2008 +0100 x86 debug: mark early_printk.o as notrace Impact: do not do function-tracing in the early-printk code this is useful when earlyprintk=vga,keep is used to debug tracer plugins. Signed-off-by: Ingo Molnar commit faa2f98f856e89d1afb6e4a91707284d242e816e Author: Li Zefan Date: Tue Nov 4 16:20:23 2008 +0800 sched: add sanity check in partition_sched_domains() Impact: cleanup, add debug check It's wrong to make dattr_new = NULL if doms_new == NULL, it introduces memory leak if dattr_new != NULL. Fortunately dattr_new is always NULL in this case. So remove the code and add a sanity check. Signed-off-by: Li Zefan Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit a17e2260926f681a0eb983c1e3cb859ba2064bce Author: Li Zefan Date: Tue Nov 4 16:19:13 2008 +0800 sched: remove redundant call to unregister_sched_domain_sysctl() Impact: cleanup The sysctl has been unregistered by partition_sched_domains(). Signed-off-by: Li Zefan Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 0a0db8f5c9d4bbb9bbfcc2b6cb6bce2d0ef4d73d Author: Li Zefan Date: Tue Nov 4 16:17:05 2008 +0800 sched debug: remove NULL checking in print_cfs/rt_rq() Impact: cleanup cfs->tg is initialized in init_tg_cfs_entry() with tg != NULL, and will never be invalidated to NULL. And the underlying cgroup of a valid task_group is always valid. Same for rt->tg. Signed-off-by: Li Zefan Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit eefd796a8e831408ce17e633d73d70430748c47a Author: Li Zefan Date: Tue Nov 4 16:15:37 2008 +0800 sched debug: remove sd_level_to_string() Impact: cleanup Just use the newly introduced sd->name. Signed-off-by: Li Zefan Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit b2a866f9344cb30d7ddf5d67b5b8393daf8bef07 Author: Steven Rostedt Date: Mon Nov 3 23:15:57 2008 -0500 ftrace: function tracer with irqs disabled Impact: disable interrupts during trace entry creation (as opposed to preempt) To help with performance, I set the ftracer to not disable interrupts, and only to disable preemption. If an interrupt occurred, it would not be traced, because the function tracer protects itself from recursion. This may be faster, but the trace output might miss some traces. This patch makes the fuction trace disable interrupts, but it also adds a runtime feature to disable preemption instead. It does this by having two different tracer functions. When the function tracer is enabled, it will check to see which version is requested (irqs disabled or preemption disabled). Then it will use the corresponding function as the tracer. Irq disabling is the default behaviour, but if the user wants better performance, with the chance of missing traces, then they can choose the preempt disabled version. Running hackbench 3 times with the irqs disabled and 3 times with the preempt disabled function tracer yielded: tracing type times entries recorded ------------ -------- ---------------- irq disabled 43.393 166433066 43.282 166172618 43.298 166256704 preempt disabled 38.969 159871710 38.943 159972935 39.325 161056510 Average: irqs disabled: 43.324 166287462 preempt disabled: 39.079 160300385 preempt is 10.8 percent faster than irqs disabled. I wrote a patch to count function trace recursion and reran hackbench. With irq disabled: 1,150 times the function tracer did not trace due to recursion. with preempt disabled: 5,117,718 times. The thousand times with irq disabled could be due to NMIs, or simply a case where it called a function that was not protected by notrace. But we also see that a large amount of the trace is lost with the preempt version. Signed-off-by: Steven Rostedt Cc: Peter Zijlstra Cc: Andrew Morton Cc: Steven Rostedt Signed-off-by: Ingo Molnar commit 182e9f5f704ed6b9175142fe8da33c9ce0c52b52 Author: Steven Rostedt Date: Mon Nov 3 23:15:56 2008 -0500 ftrace: insert in the ftrace_preempt_disable()/enable() functions Impact: use new, consolidated APIs in ftrace plugins This patch replaces the schedule safe preempt disable code with the ftrace_preempt_disable() and ftrace_preempt_enable() safe functions. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 8f0a056fcb2f83a069fb5d60c2383304b7456687 Author: Steven Rostedt Date: Mon Nov 3 23:15:55 2008 -0500 ftrace: introduce ftrace_preempt_disable()/enable() Impact: add new ftrace-plugin internal APIs Parts of the tracer needs to be careful about schedule recursion. If the NEED_RESCHED flag is set, a preempt_enable will call schedule. Inside the schedule function, the NEED_RESCHED flag is cleared. The problem arises when a trace happens in the schedule function but before NEED_RESCHED is cleared. The race is as follows: schedule() >> tracer called trace_function() preempt_disable() [ record trace ] preempt_enable() <<- here's the issue. [check NEED_RESCHED] schedule() [ Repeat the above, over and over again ] The naive approach is simply to use preempt_enable_no_schedule instead. The problem with that approach is that, although we solve the schedule recursion issue, we now might lose a preemption check when not in the schedule function. trace_function() preempt_disable() [ record trace ] [Interrupt comes in and sets NEED_RESCHED] preempt_enable_no_resched() [continue without scheduling] The way ftrace handles this problem is with the following approach: int resched; resched = need_resched(); preempt_disable_notrace(); [record trace] if (resched) preempt_enable_no_sched_notrace(); else preempt_enable_notrace(); This may seem like the opposite of what we want. If resched is set then we call the "no_sched" version?? The reason we do this is because if NEED_RESCHED is set before we disable preemption, there's two reasons for that: 1) we are in an atomic code path 2) we are already on our way to the schedule function, and maybe even in the schedule function, but have yet to clear the flag. Both the above cases we do not want to schedule. This solution has already been implemented within the ftrace infrastructure. But the problem is that it has been implemented several times. This patch encapsulates this code to two nice functions. resched = ftrace_preempt_disable(); [ record trace] ftrace_preempt_enable(resched); This way the tracers do not need to worry about getting it right. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 124ffe1456d6efea5b32cc6d36e3fa434cdc84d9 Author: Hiroshi Shimamoto Date: Mon Nov 3 19:23:01 2008 -0800 x86: signal_64: remove unused code in __setup_rt_frame() Impact: cleanup sizeof(*set) is always 8 on x86_64. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit b91f080f517cf9dd52023c11127a0ca33190e31a Author: Takashi Iwai Date: Tue Nov 4 08:43:08 2008 +0100 ALSA: hda - Fix possible NULL dereference Add NULL-check of the return value of snd_kctl_new1() before accessing it. Also, make a sanity NULL check to snd_BUG_ON() for debugging only. Signed-off-by: Takashi Iwai commit dce908e26fa0ea7d504d3f294c7411ed1eba5077 Author: Troy Kisky Date: Mon Nov 3 12:22:07 2008 -0700 ALSA: SOC: Fix setting codec register with debugfs filesystem merge error Call device_create_file only once in snd_soc_dapm_sys_add function. Signed-off-by: Troy Kisky Acked-by: Mark Brown Signed-off-by: Takashi Iwai commit d2ad3ca88da02baeccd5216780f1fe983c6953ba Author: David S. Miller Date: Mon Nov 3 22:01:07 2008 -0800 net/: Kill now superfluous ->last_rx stores. The generic packet receive code takes care of setting netdev->last_rx when necessary, for the sake of the bonding ARP monitor. Signed-off-by: David S. Miller commit 265eb67fb4e16be8e46a51e1e4e2ecd99fb15219 Author: Stephen Hemminger Date: Mon Nov 3 21:13:26 2008 -0800 netem: eliminate unneeded return values All these individual parsing functions never return an error, so they can be void. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit babcda74e9d96bb58fd9c6c5112dbdbff169e695 Author: David S. Miller Date: Mon Nov 3 21:11:17 2008 -0800 drivers/net: Kill now superfluous ->last_rx stores. The generic packet receive code takes care of setting netdev->last_rx when necessary, for the sake of the bonding ARP monitor. Drivers need not do it any more. Some cases had to be skipped over because the drivers were making use of the ->last_rx value themselves. Signed-off-by: David S. Miller commit ab2910921064b657610a3b501358a305e13087ea Author: Jianjun Kong Date: Mon Nov 3 18:23:09 2008 -0800 net: remove two duplicated #include Removed duplicated #include in net/9p/trans_rdma.c and #include in net/socket.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit 6d9f239a1edb31d6133230f478fd1dc2da338ec5 Author: Alexey Dobriyan Date: Mon Nov 3 18:21:05 2008 -0800 net: '&' redux I want to compile out proc_* and sysctl_* handlers totally and stub them to NULL depending on config options, however usage of & will prevent this, since taking adress of NULL pointer will break compilation. So, drop & in front of every ->proc_handler and every ->strategy handler, it was never needed in fact. Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit 6cf3f41e6c08bca6641a695449791c38a25f35ff Author: Jay Vosburgh Date: Mon Nov 3 18:16:50 2008 -0800 bonding, net: Move last_rx update into bonding recv logic The only user of the net_device->last_rx field is bonding. This patch adds a conditional update of last_rx to the bonding special logic in skb_bond_should_drop, causing last_rx to only be updated when the ARP monitor is running. This frees network device drivers from the necessity of updating last_rx, which can have cache line thrash issues. Signed-off-by: Jay Vosburgh Signed-off-by: David S. Miller commit 24f8b2385e03a4f4c8dac513d03b5eaa475822b9 Author: Stephen Hemminger Date: Mon Nov 3 17:14:38 2008 -0800 net: increase receive packet quantum This patch gets about 1.25% back on tbench regression. My change to NAPI for multiqueue support changed the time limit on network receive processing. Under sustained loads like tbench, this can cause the receiver to reschedule prematurely. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit b9ac99855dcc0316ba2feee2b0d3e578f8315b75 Author: Harvey Harrison Date: Mon Nov 3 17:09:55 2008 -0800 printk: ipv4 address digits printed in reverse order put_dec_trunc prints the digits in reverse order and is reversed inside number(). Continue using put_dec_trunc, but reverse each quad in ip4_addr_string. [Noticed by Julius Volz] Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 48148938b494cd57029a43c758e9972307a31d2a Author: Julius Volz Date: Mon Nov 3 17:08:56 2008 -0800 IPVS: Remove supports_ipv6 scheduler flag Remove the 'supports_ipv6' scheduler flag since all schedulers now support IPv6. Signed-off-by: Julius Volz Signed-off-by: David S. Miller commit 445483758e35e0aaff5256d1b104a346ba77aafe Author: Julius Volz Date: Mon Nov 3 17:08:28 2008 -0800 IPVS: Add IPv6 support to LBLC/LBLCR schedulers Add IPv6 support to LBLC and LBLCR schedulers. These were the last schedulers without IPv6 support, but we might want to keep the supports_ipv6 flag in the case of future schedulers without IPv6 support. Signed-off-by: Julius Volz Acked-by: Simon Horman Signed-off-by: David S. Miller commit fa228b3fcb724ce2281a61737e09a8afa4fed542 Author: Matt Carlson Date: Mon Nov 3 16:58:53 2008 -0800 tg3: Update version to 3.95 This patch updates the version to 3.95. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 772638b6c87da7043c50914dbb033c08155508dd Author: Matt Carlson Date: Mon Nov 3 16:56:51 2008 -0800 broadcom: Add support for BCM50610 This patch adds the BCM50610 to the list of phys supported by the broadcom driver. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 042a75b99fbda6bf7c7bf4496e205e3e7acc953a Author: Matt Carlson Date: Mon Nov 3 16:56:29 2008 -0800 broadcom: Refine expansion register access routine This patch makes the expansion register access routines a little more formal. They will be used by the following bcm50610 support patch. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 5e0c676c717316f315dcf76da52dc0002c43632a Author: Matt Carlson Date: Mon Nov 3 16:56:07 2008 -0800 broadcom: Add flow control support This patch adds flow control support to Broadcom phys. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit fcb389dfd842be54545cb436b3437f07da10115c Author: Matt Carlson Date: Mon Nov 3 16:55:44 2008 -0800 tg3: 5785 enhancements This patch refines support for the 5785 device. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 9c61d6bc56bf0a5fb1ebfcf4c168cc5ce30e153b Author: Matt Carlson Date: Mon Nov 3 16:54:56 2008 -0800 tg3: Refine phylib support This patch refines the phylib support in the tg3 driver. The patch does the following things : * Rename tg3_mdio_config() to tg3_mdio_config_5785(). The 5785 will be the only device that will use it so the name might as well reflect that. * Fix a memory leak if mdiobus_register() fails. * Add code to deal with phy device detection failures. * Add code to correct the supported list of phy features based on the MAC <=> PHY interface. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 0a459aac9d151c2e36ec65723b9b845b24c5cbc3 Author: Matt Carlson Date: Mon Nov 3 16:54:15 2008 -0800 tg3: Allow WOL for phylib controlled Broadcom phys This patch allows WOL to be enabled for Broadcom phys under phylib control. The only exception is the AC131, which has a completely different register set. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 05ac4cb7dff4515447dce6e9a56c4de6b7e426d5 Author: Matt Carlson Date: Mon Nov 3 16:53:46 2008 -0800 tg3: Refine power management and WOL code Commit 12dac0756d357325b107fe6ec24921ec38661839 ("tg3: adapt tg3 to use reworked PCI PM code") introduced the new PCI PM API to the tg3 driver. The patch was understandably conservative, so this patch elaborates on that work. The patch starts by creating a single point in tg3_set_power_state() to decide whether or not to enable WOL. The rest of the code in tg3_set_power_state() was then pivoted to use the result of this decision. The patch then makes sure the device is allowed to wakeup before reporting whether or not WOL is currently enabled. The final hunks of the patch consolidate where the WOL capability and WOL enabled flags are set to a single location. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit df59c9403557397aafbe291533d113b752da7661 Author: Matt Carlson Date: Mon Nov 3 16:52:56 2008 -0800 tg3: Move phylib report to end of tg3_init_one Currently, phylib reports appear with a eth%d prefix. Move the line after register_netdev() and place it alongside the other informative messages. Update nearby informative messages accordingly. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit b2b98d4acc58a6f36b731e666c6ebd901cd6a27e Author: Matt Carlson Date: Mon Nov 3 16:52:32 2008 -0800 tg3: Do not enable APE on bcm5700 With older versions of the NVRAM format, the driver may mistakenly determine that APE is enabled. Make sure this doesn't happen by restricting the ENABLE_APE check to devices known to have more recent NVRAM image formats. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit bcb37f6cb57e565e7bd342272652c3a50cf88761 Author: Matt Carlson Date: Mon Nov 3 16:52:09 2008 -0800 tg3: Reclaim TG3_FLG3_5761_5784_AX_FIXES flag This patch reclaims the TG3_FLG3_5761_5784_AX_FIXES flag. It only used twice in non-fast paths. This patch also consolidates some other places where specific 5784 AX chip revisions can be generalized. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 3f007891da0ad3d9192e9aa13ce4e3aaf20c33fa Author: Matt Carlson Date: Mon Nov 3 16:51:36 2008 -0800 tg3: Preserve LAA when device control is released This patch moves the __tg3_set_mac_addr() function earlier in the file listing, to avoid a function prototype, and calls the function to restore the LAA after a driver unload chip reset. With this code in place, the administrator can wake the machine using the LAA. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit b2aee1545dc3c05c8d5cf116de1e92907e98009b Author: Matt Carlson Date: Mon Nov 3 16:51:11 2008 -0800 tg3: Preserve DASH connectivity when WOL enabled DASH firmware runs on the APE side of the chip, but it requires a few MAC to be programmed correctly. When WOL is enabled and management firmware is disabled, incoming packets are evaluated and discarded at the chip's rule processor. When management firmware is enabled, the hardware must be informed that there are agents further up the stack that still use the incoming frames. Normally management firmware will configure the MAC correctly on its own, but there can be cases where the setting could get clobbered by the driver. The first hunk of this patch preserves this setting. The second hunk of this patch wipes out the driver present signature of the APE memory space. By doing so, the DASH firmware can assume driver absent behavior. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 63532394af307795ea637a283bd1fd057f5dfcea Author: Matt Carlson Date: Mon Nov 3 16:49:57 2008 -0800 tg3: Use pci_ioremap_bar() This patch replaces the existing APE register mapping code with a call to pci_ioremap_bar(). The code that maps the main device register space did not undergo a similar change because the information derived from the pci_resource_start() and pci_resource_len() is still used to populate the (optional) mem_start and mem_end netdevice members. Replace hardcoded constants where appropriate. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit c88e668b52c8cd8bc55b6734c7dfbb0cb005d445 Author: Matt Carlson Date: Mon Nov 3 16:49:18 2008 -0800 tg3: Add 5761S support This patch adds support for the 5761S chip variants. Signed-off-by: Matt Carlson Signed-off-by: Michael Chan Signed-off-by: David S. Miller commit 6bdbfe99916398dbb28d83833cc04757110f2738 Author: Alok Kataria Date: Mon Nov 3 11:31:28 2008 -0800 x86: VMware: Fix vmware_get_tsc code Impact: Fix possible failure to calibrate the TSC on Vmware near 4 GHz The current version of the code to get the tsc frequency from the VMware hypervisor, will be broken on processor with frequency (4G-1) HZ, because on such processors eax will have UINT_MAX and that would be legitimate. We instead check that EBX did change to decide if we were able to read the frequency from the hypervisor. Signed-off-by: Alok N Kataria Signed-off-by: H. Peter Anvin commit 4ef0ef1966dae9e9e29762e4e719af3cfd146ca0 Author: Takashi Iwai Date: Mon Nov 3 17:47:49 2008 +0100 ALSA: hda - Fix missing ADC list in ALC260 auto-probe mode The commit f9e336f65b666b8f1764d17e9b7c21c90748a37e ALSA: hda - Unify capture mixer creation in realtek codes removed the ADC check for ALC260 auto-probe mode accidentally. Re-added to patch_alc260() again. Signed-off-by: Takashi Iwai commit 26f5df265f06b8c8fe9f5d0942b7d8df00e5edec Author: Takashi Iwai Date: Mon Nov 3 17:39:46 2008 +0100 ALSA: hda - Add ALC299 fujitsu preset model Added a preset model for FSC Amilo with ALC269 codec chip. Signed-off-by: Takashi Iwai commit 67305ebc992abf2121fb2149fd8a707cd7cfcbd2 Author: Jarek Poplawski Date: Mon Nov 3 02:52:50 2008 -0800 pkt_sched: sch_generic: Kfree gso_skb in qdisc_reset() Since gso_skb is re-used for qdisc_peek_dequeued(), and this skb is counted in the qdisc->q.qlen, it has to be kfreed during qdisc_reset() when qlen is zeroed. With help from David S. Miller Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 5799de0b12c773874282444052da401989075df6 Author: Jianjun Kong Date: Mon Nov 3 02:49:10 2008 -0800 net: clean up net/ipv4/tcp_ipv4.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit 539afedfccb39577c9264b29f11ec9556fd45022 Author: Jianjun Kong Date: Mon Nov 3 02:48:48 2008 -0800 net: clean up net/ipv4/devinet.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit f4cca7ffb2700bff5752fbbc28f49d58ed2c5cb3 Author: Jianjun Kong Date: Mon Nov 3 02:48:14 2008 -0800 net: clean up net/ipv4/pararp.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit fd3f8c4cb632c28ef915a535617a0fcddcfe3f80 Author: Jianjun Kong Date: Mon Nov 3 02:47:38 2008 -0800 net: clean up net/ipv4/ip_fragment.c tcp_timer.c ip_input.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit e113a745f693af196c8081b328bf42def086989b Author: Dimitri Sivanich Date: Fri Oct 31 08:03:41 2008 -0500 sched/rt: small optimization to update_curr_rt() Impact: micro-optimization to SCHED_FIFO/RR scheduling A very minor improvement, but might it be better to check sched_rt_runtime(rt_rq) before taking the rt_runtime_lock? Peter Zijlstra observes: > Yes, I think its ok to do so. > > Like pointed out in the other thread, there are two races: > > - sched_rt_runtime() going to RUNTIME_INF, and that will be handled > properly by sched_rt_runtime_exceeded() > > - sched_rt_runtime() going to !RUNTIME_INF, and here we can miss an > accounting cycle, but I don't think that is something to worry too > much about. Signed-off-by: Dimitri Sivanich Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar -- kernel/sched_rt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 7e5e26a3d8ac4bcadb380073dc9604c07a9a6198 Author: Steven Rostedt Date: Fri Oct 31 09:36:38 2008 -0400 ftrace: fix hardirq header for non ftrace archs Impact: build fix for non-ftrace architectures Not all archs implement ftrace, and therefore do not have an asm/ftrace.h. This patch corrects the problem. The ftrace_nmi_enter/exit now must be defined for all archs that implement dynamic ftrace. Currently, only x86 does. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 7a895f53cda9d9362c30144e42c124a1ae996b9e Merge: d9e540762f5cdd89f24e518ad1fd31142d0b9726 5d9881ea1440f046ee851bbaa2a2962543336a11 fd3fdf11d3c649769e02459c5f1b8081a15e9007 a26a2a27396c0a0877aa701f8f92d08ba550a6c9 127cafbb276266b1b8da967bfe25a062ab1d42ab c2c80529460095035752bf0ecc1af82c1e0f6e0f Author: Ingo Molnar Date: Mon Nov 3 10:34:23 2008 +0100 Merge branches 'tracing/ftrace', 'tracing/markers', 'tracing/mmiotrace', 'tracing/nmisafe', 'tracing/tracepoints' and 'tracing/urgent' into tracing/core commit 127cafbb276266b1b8da967bfe25a062ab1d42ab Author: Lai Jiangshan Date: Tue Oct 28 10:51:53 2008 +0800 tracepoint: introduce *_noupdate APIs. Impact: add new tracepoint APIs to allow the batched registration of probes new APIs separate tracepoint_probe_register(), tracepoint_probe_unregister() into 2 steps. The first step of them is just update tracepoint_entry, not connect or disconnect. this patch introduces tracepoint_probe_update_all() for update all. these APIs are very useful for registering lots of probes but just updating once. Another very important thing is that *_noupdate APIs do not require module_mutex. Signed-off-by: Lai Jiangshan Acked-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 19dba33c43a2f0f2aa727ae075ec3b11330775ef Author: Lai Jiangshan Date: Tue Oct 28 10:51:49 2008 +0800 tracepoint: simplification for tracepoints using RCU Impact: simplify implementation Now, unused memory is handled by struct tp_probes. old code use these three field to handle unused memory. struct tracepoint_entry { ... struct rcu_head rcu; void *oldptr; unsigned char rcu_pending:1; ... }; in this way, unused memory is handled by struct tracepoint_entry. it bring reenter bug(it was fixed) and tracepoint.c is filled full of ".*rcu.*" code statements. this patch removes all these. and: rcu_barrier_sched() is removed. Do not need regain tracepoints_mutex after tracepoint_update_probes() several little cleanup. Signed-off-by: Lai Jiangshan Acked-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 3555105333ae55414d0fe051557bd7dc590f5255 Author: Gary Hade Date: Fri Oct 31 10:52:03 2008 -0700 x86: add memory hotremove config option Impact: enable CONFIG_MEMORY_HOTREMOVE feature on x86. (default-off) Memory hotremove functionality can currently be configured into the ia64, powerpc, and s390 kernels. This patch makes it possible to configure the memory hotremove functionality into the x86 kernel as well. Signed-off-by: Badari Pulavarty Signed-off-by: Gary Hade Signed-off-by: Ingo Molnar commit c354e1246348e25c714e6b2973f3257183d06e2c Author: Jianjun Kong Date: Mon Nov 3 00:28:02 2008 -0800 net: clean up net/ipv4/ipmr.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit 09cb105ea78d5644570d52085e2149f784575872 Author: Jianjun Kong Date: Mon Nov 3 00:27:11 2008 -0800 net: clean up net/ipv4/ip_sockglue.c tcp_output.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit a7e9ff735bd5e3437a8e5ecbbc2db3865974a523 Author: Jianjun Kong Date: Mon Nov 3 00:26:09 2008 -0800 net: clean up net/ipv4/igmp.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit 6ed2533e55889943c478d11b1f63aaed2fd767cc Author: Jianjun Kong Date: Mon Nov 3 00:25:16 2008 -0800 net: clean up net/ipv4/fib_frontend.c fib_hash.c ip_gre.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit 5a5f3a8db9d70c90e9d55b46e02b2d8deb1c2c2e Author: Jianjun Kong Date: Mon Nov 3 00:24:34 2008 -0800 net: clean up net/ipv4/ipip.c raw.c tcp.c tcp_minisocks.c tcp_yeah.c xfrm4_policy.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit d9319100c1ad7d0ed4045ded767684ad25670436 Author: Jianjun Kong Date: Mon Nov 3 00:23:42 2008 -0800 net: clean up net/ipv4/ah4.c esp4.c fib_semantics.c inet_connection_sock.c inetpeer.c ip_output.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit 5b9a0e14eb4bf40a7cb780af4723560e06753f2d Author: Cyrill Gorcunov Date: Sat Nov 1 18:06:51 2008 +0300 x86: nmi - nmi_watchdog boot param docs cleanup Impact: documentation update 1) nmi_watchdog boot parameter is common to 32/64 bit modes. So move it from Documentation/x86/x86_64/boot-options.txt to Documentation/kernel-parameters.txt and integrate with. 2) Also fix [panic] keyword placement -- it ought to be at first position otherwise it will not be recognized. 3) Document lapic and ioapic keywords. Signed-off-by: Cyrill Gorcunov Signed-off-by: Ingo Molnar commit d9e540762f5cdd89f24e518ad1fd31142d0b9726 Author: Peter Zijlstra Date: Sat Nov 1 19:57:37 2008 +0100 ftrace: ftrace_dump_on_oops=[tracer] Impact: add new (optional) debug boot option In order to facilitate early boot trouble, allow one to specify a tracer on the kernel boot line. Signed-off-by: Peter Zijlstra Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 36609469c8278554b046aa4cc9a5fa9ccea35306 Merge: b3acf29afda06c76774dc6df6246c37ae707836b 45beca08dd8b6d6a65c5ffd730af2eac7a2c7a03 Author: Ingo Molnar Date: Mon Nov 3 09:11:13 2008 +0100 Merge commit 'v2.6.28-rc3' into tracing/ftrace commit 8bb8c4386d08f2cc5d871d22f220d35032213f84 Author: Peter Zijlstra Date: Sat Nov 1 00:13:49 2008 +0100 sched, ftrace: trace sched.c Impact: allow function tracing within sched.c Its useful to see what happens in sched.c. Signed-off-by: Peter Zijlstra Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit db5935001a43528e673ad26ffec9d98c60a496a9 Merge: 34f3a814eef8069a24e5b3ebcf27aba9dabac2ea 45beca08dd8b6d6a65c5ffd730af2eac7a2c7a03 Author: Ingo Molnar Date: Mon Nov 3 08:57:41 2008 +0100 Merge commit 'v2.6.28-rc3' into sched/core commit e0db4a786bbd73145b4feb45c75d49b6e60fe72c Author: David S. Miller Date: Sun Nov 2 23:57:06 2008 -0800 sunrpc: Fix build warning due to typo in %pI4 format changes. Noticed by Stephen Hemminger. Signed-off-by: David S. Miller commit 20971a0afb8bc0eeb6865ceadd435e4a2dba0fd7 Author: Julius Volz Date: Sat Nov 1 13:13:19 2008 +0000 IPVS: Add IPv6 support to SH and DH schedulers Add IPv6 support to SH and DH schedulers. I hope this simple IPv6 address hashing is good enough. The 128 bit are just XORed into 32 before hashing them like an IPv4 address. Signed-off-by: Julius Volz Acked-by: Simon Horman Signed-off-by: David S. Miller commit 2a6cf35543302e9a5c807eaf13298f510fbdf8f2 Merge: 8ba25dad0ac78850cd46d91186a27d60f7314752 3f8b4b13785c2737413d3241c21c7c86a41535ef Author: David S. Miller Date: Sun Nov 2 13:13:07 2008 -0800 Merge branch 'davem-next' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 commit 3f8b4b13785c2737413d3241c21c7c86a41535ef Author: Andy Gospodarek Date: Wed Oct 22 11:19:48 2008 +0000 bonding: update docs to correctly reflect arp_ip_target behavior This documentation patch hopes to clarify that the '+' was only needed for Fedora 7 and Red Hat Enterprise Linux 5.0 and 5.1. After that the IP addreses could be added as a comma separated list just like the module option. Signed-off-by: Andy Gospodarek Signed-off-by: Jeff Garzik commit 237f3e1d80bb9d4c6eaf684552f422568ba04ffe Author: Mike Frysinger Date: Fri Oct 31 22:11:06 2008 +0000 smc91x: add __init markings to smc_drv_probe() The smc_drv_probe() is the platform_driver probe function and it is only called during init. Further, it calls smc_probe() which is marked as __init already. Signed-off-by: Mike Frysinger Signed-off-by: Jeff Garzik commit dccd547e2bf2c01a13c967ae03a705338394fad6 Author: Joe Korty Date: Wed Oct 29 14:22:16 2008 -0700 forcdeth: increase max_interrupt_work This eliminates the following often-generated warning from my 64 bit Opteron SMP test stand: eth0: too many iterations (6) in nv_nic_irq According to the web, the problem is that the forcedeth driver has a too-low value for max_interrupt_work. Grepping the kernel I see that forcedeth has the second lowest value of all ethernet drivers (ie, 6). Most are in the 20-40 range. So this patch increases this a bit, from 6 to 15 (at 15 forcedeth becomes the driver with third-lowest max_interrupt_work value). My test stand, which used to print out the above warnings repetitively whenever it was under heavy net load, no longer does so. Signed-off-by: Joe Korty Cc: Ayaz Abdulla Cc: Jeff Garzik Signed-off-by: Andrew Morton Signed-off-by: Jeff Garzik commit 0befdb3e0a26a8949063915274e1bec8873c526b Author: Jesse Brandeburg Date: Fri Oct 31 00:46:40 2008 -0700 ixgbe: add device support for 82598AT (copper 10GbE) adapters Intel is currently shipping support for adapters with a phy that does 10GBase-T (copper), which is 10 Gigabit ethernet over standard Category 6 cabling. Signed-off-by: Jesse Brandeburg Signed-off-by: Jeff Kirsher Signed-off-by: Jeff Garzik commit e053b628d367cd7b39ae2c4bb0124edc2e058a41 Author: Stephen Hemminger Date: Fri Oct 31 16:52:04 2008 -0700 atlx: timer cleanup Do some cleanup on timer usage in this driver: * Use round_jiffies to align wakeups and reduce power. * Remove atl1_watchdog which does nothing but rearm itself * Use setup_timer() function Signed-off-by: Stephen Hemminger Signed-off-by: Jeff Garzik commit 02e7173149c3ffcf963075ec2bdc5f7be8335a78 Author: Stephen Hemminger Date: Fri Oct 31 16:52:03 2008 -0700 atlx: use embedded net_device_stats There is now a net_device_stats structure inside net_device that should be used if possible by devices. Compile tested only. Signed-off-by: Stephen Hemminger Signed-off-by: Jeff Garzik commit 8ba25dad0ac78850cd46d91186a27d60f7314752 Author: Jarek Poplawski Date: Sun Nov 2 00:36:03 2008 -0700 sch_netem: Replace ->requeue() method with open code After removing netem classful functionality we are sure its inner qdisc is tfifo, so we can replace qdisc->ops->requeue() method with open code. After this patch there are no more ops->requeue() users. The idea of this patch is by Patrick McHardy. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 02201464119334690fe209849843881b8e9cfa9f Author: Jarek Poplawski Date: Sun Nov 2 00:35:24 2008 -0700 sch_netem: Remove classful functionality Patrick McHardy noticed that: "a lot of the functionality of netem requires the inner tfifo anyways and rate-limiting is usually done on top of netem. So I would suggest so either hard-wire the tfifo qdisc or at least make the assumption that inner qdiscs are work-conserving.", and later: "- a lot of other qdiscs still don't work as inner qdiscs of netem [...]". So, according to his suggestion, this patch removes classful options of netem. The main reason of this change is to remove ops->requeue() method, which is currently used only by netem. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit ae27e98a51526595837ab7498b23d6478a198960 Author: Sangtae Ha Date: Wed Oct 29 00:07:18 2008 -0400 [TCP] CUBIC v2.3 Signed-off-by: Sangtae Ha Signed-off-by: David S. Miller commit e27dfcea48372a4105d9fdf2e8450926737f6215 Author: Jianjun Kong Date: Sat Nov 1 21:38:31 2008 -0700 af_unix: clean up net/unix/af_unix.c garbage.c sysctl_net_unix.c clean up net/unix/af_unix.c garbage.c sysctl_net_unix.c Signed-off-by: Jianjun Kong Signed-off-by: David S. Miller commit c37ccc0d4e2a4ee52f1a40cff1be0049f2104bba Author: Eric Dumazet Date: Sat Nov 1 21:19:18 2008 -0700 udp: add a missing smp_wmb() in udp_lib_get_port() Corey Minyard spotted a missing memory barrier in udp_lib_get_port() We need to make sure a reader cannot read the new 'sk->sk_next' value and previous value of 'sk->sk_hash'. Or else, an item could be deleted from a chain, and inserted into another chain. If new chain was empty before the move, 'next' pointer is NULL, and lockless reader can not detect it missed following items in original chain. This patch is temporary, since we expect an upcoming patch to introduce another way of handling the problem. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 7e3a42a12c4b9d99bfe81cb929cadf0e08a37c49 Author: Nicolas Dichtel Date: Sat Nov 1 21:12:07 2008 -0700 xfrm6: handling fragment RFC4301 Section 7.1 says: "7.1. Tunnel Mode SAs that Carry Initial and Non-Initial Fragments All implementations MUST support tunnel mode SAs that are configured to pass traffic without regard to port field (or ICMP type/code or Mobility Header type) values. If the SA will carry traffic for specified protocols, the selector set for the SA MUST specify the port fields (or ICMP type/code or Mobility Header type) as ANY. An SA defined in this fashion will carry all traffic including initial and non-initial fragments for the indicated Local/Remote addresses and specified Next Layer protocol(s)." But for IPv6, fragment is treated as a protocol. This change catches protocol transported in fragmented packet. In IPv4, there is no problem. Signed-off-by: Nicolas Dichtel Signed-off-by: David S. Miller commit 395628ef4ea12ff0748099f145363b5e33c69acb Author: Alok Kataria Date: Fri Oct 24 17:22:01 2008 -0700 x86: Skip verification by the watchdog for TSC clocksource. Impact: Changes timekeeping on Vmware (or with tsc=reliable). This is achieved by resetting the CLOCKSOURCE_MUST_VERIFY flag. We add a tsc=reliable commandline option to enable this. This enables legacy hardware without HPET, LAPIC, or ACPI timers to enter high-resolution timer mode. Along with that have extended this to be used in virtualization environement too. Now we also set this flag if the X86_FEATURE_TSC_RELIABLE bit is set. This is important since there is a wrap-around problem with the acpi_pm timer. The acpi_pm counter is just 24bits and this can overflow in ~4 seconds. With the NO_HZ kernels in virtualized environment, there can be situations when the guest is descheduled for longer duration, as a result we may miss the wrap of the acpi counter. When TSC is used as a clocksource and acpi_pm timer is being used as the watchdog clocksource this error in acpi_pm results in TSC being marked as unstable, and essentially results in time dropping in chunks of 4 seconds whenever this wrap is missed. Since the virtualized TSC is reliable on VMware, we should always use the TSCs clocksource on VMware, so we skip the verfication at runtime, by checking for the feature bit. Since we reset the flag for mgeode systems too, i have combined the mgeode case with the feature bit check. Signed-off-by: Jeff Hansen Signed-off-by: Alok N Kataria Signed-off-by: Dan Hecht Signed-off-by: H. Peter Anvin commit eca0cd028bdf0f6aaceb0d023e9c7501079a7dda Author: Alok Kataria Date: Fri Oct 31 12:01:58 2008 -0700 x86: Add a synthetic TSC_RELIABLE feature bit. Impact: Changes timebase calibration on Vmware. Use the synthetic TSC_RELIABLE bit to workaround virtualization anomalies. Virtual TSCs can be kept nearly in sync, but because the virtual TSC offset is set by software, it's not perfect. So, the TSC synchronization test can fail. Even then the TSC can be used as a clocksource since the VMware platform exports a reliable TSC to the guest for timekeeping purposes. Use this bit to check if we need to skip the TSC sync checks. Along with this also set the CONSTANT_TSC bit when on VMware, since we still want to use TSC as clocksource on VM running over hardware which has unsynchronized TSC's (opteron's), since the hypervisor will take care of providing consistent TSC to the guest. Signed-off-by: Alok N Kataria Signed-off-by: Dan Hecht Signed-off-by: H. Peter Anvin commit 88b094fb8d4fe43b7025ea8d487059e8813e02cd Author: Alok Kataria Date: Mon Oct 27 10:41:46 2008 -0700 x86: Hypervisor detection and get tsc_freq from hypervisor Impact: Changes timebase calibration on Vmware. v3->v2 : Abstract the hypervisor detection and feature (tsc_freq) request behind a hypervisor.c file v2->v1 : Add a x86_hyper_vendor field to the cpuinfo_x86 structure. This avoids multiple calls to the hypervisor detection function. This patch adds function to detect if we are running under VMware. The current way to check if we are on VMware is following, # check if "hypervisor present bit" is set, if so read the 0x40000000 cpuid leaf and check for "VMwareVMware" signature. # if the above fails, check the DMI vendors name for "VMware" string if we find one we query the VMware hypervisor port to check if we are under VMware. The DMI + "VMware hypervisor port check" is needed for older VMware products, which don't implement the hypervisor signature cpuid leaf. Also note that since we are checking for the DMI signature the hypervisor port should never be accessed on native hardware. This patch also adds a hypervisor_get_tsc_freq function, instead of calibrating the frequency which can be error prone in virtualized environment, we ask the hypervisor for it. We get the frequency from the hypervisor by accessing the hypervisor port if we are running on VMware. Other hypervisors too can add code to the generic routine to get frequency on their platform. Signed-off-by: Alok N Kataria Signed-off-by: Dan Hecht Signed-off-by: H. Peter Anvin commit 49ab56ac6e1b907b7dadb72a4012460359feaf0e Author: Alok Kataria Date: Sat Nov 1 18:34:37 2008 -0700 x86: add X86_FEATURE_HYPERVISOR feature bit Impact: Number declaration only. Add X86_FEATURE_HYPERVISOR bit (CPUID level 1, ECX, bit 31). Signed-off-by: H. Peter Anvin commit 4074ea21493fe668501bfc7548d10657ca6f14c2 Author: Takashi Iwai Date: Sat Nov 1 11:01:50 2008 +0100 ALSA: ice1724 - Fix IRQ register initialization The IRQMASK register has to be set to zero expclitily at the initialization otherwise you'll get no interrupts properly at later operations. Also, removed the old commented out codes. Signed-off-by: Takashi Iwai commit e25cf4a6945e0f859186231be7164ba565412e0a Author: Johannes Berg Date: Thu Oct 23 08:51:20 2008 +0200 mac80211: fix two kernel-doc warnings One parameter wasn't described and one I forgot to update when renaming it; also update TBDs in sta_info. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 4c2442980043b9585be12b4f59e1bbe7e1f7a801 Author: Luis R. Rodriguez Date: Mon Oct 27 10:17:29 2008 -0700 ath9k: use ETH_P_PAE It was being discussed where we would put this, but now it found a home so use its define. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit 9371dd685d212599f0f07e6bf1510c751f70bb37 Author: Bob Copeland Date: Sun Oct 26 11:24:48 2008 -0400 ath9k: remove useless conditional ath9k_hw_keyreset returns true in either branch. Signed-off-by: Bob Copeland Signed-off-by: John W. Linville commit 4fb30784c720b863203957f76e3fde0d53932746 Author: Andrey Borzenkov Date: Sun Oct 19 12:06:11 2008 +0400 orinoco: cache downloadable firmware image in memory for use during resume If card is using downloadable firmware (like Agere 9.x), firmware has to be reloaded during resume. It is not possible to use request_firmware for that, because tasks are still frozen, so request_firmware will just timeout and fail. So cache firmware image in memory for later reuse in ->resume method. Signed-off-by: Andrey Borzenkov Signed-off-by: John W. Linville commit 0df6cbb7d8a0a8fea69138e9e463671a8ad99f16 Author: Andrey Borzenkov Date: Sun Oct 12 20:15:43 2008 +0400 orinoco: reload firmware on resume On resume card state is likely lost so we have to reload firmware again. Signed-off-by: Andrey Borzenkov Acked-by: David Kilroy Signed-off-by: John W. Linville commit 4c674c60bd567597f1224973712b352f4f474890 Author: Nick Kossifidis Date: Sun Oct 26 20:40:25 2008 +0200 ath5k: Update interrupt masking code *Properly get/set all available ISR/IMR values and review common/uncommon bits *Better handling of per-txq interrupts (we can now resolve what q is generating each interrupt -this will help in debuging wme later) *Some minor updates from legacy-hal *Properly handle RXNOFRM and TXNOFRM interrupt masking (even when we don't set them on IMR they keep showing up, so we disable them by zeroing AR5K_RXNOFRM and AR5K_TXNOFRM registers). This doesn't exist on legacy-hal but i've tested it on various cards and it works fine. Changes-Licensed-under: ISC Signed-Off-by: Nick Kossifidis Signed-off-by: John W. Linville commit 84fa4f43c418d2eaad06734ea780a74c869f79c3 Author: Johannes Berg Date: Fri Oct 24 20:32:23 2008 +0200 wireless regulatory: move ignore_request This function is only used once, move it closer to its caller. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 2083c4997b95fffe8d4f71741bef2298810805a3 Author: Johannes Berg Date: Fri Oct 24 20:32:22 2008 +0200 wireless: clean up regulatory ignore_request function This function has a few WARNs that may eventually trigger when an AP sends rogue beacons, those must be removed. Some of the comments in the function are also inappropriate as this function is concerned with the global hint, not a per- wiphy thing (which a multidomain flag on a wiphy would imply). I'm convinced that we don't need to do anything to implement multi-domain capability as 802.11-2007 specifies it because it makes only two things mandatory: * starting of BSS/IBSS must have country information (this can easily be done with a mac80211 patch) * a STA must adopt the country information (we already have the framework for this) But we don't have anything implemented anyway for now. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit be3d48106c1e5d075784e5e67928a6b5ffc0f3b6 Author: Johannes Berg Date: Fri Oct 24 20:32:21 2008 +0200 wireless: remove struct regdom hinting The code needs to be split out and cleaned up, so as a first step remove the capability, to add it back in a subsequent patch as a separate function. Also remove the publically facing return value of the function and the wiphy argument. A number of internal functions go from being generic helpers to just being used for alpha2 setting. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit d2372b315289aec9f565a855023c40654a5bff68 Author: Johannes Berg Date: Fri Oct 24 20:32:20 2008 +0200 wireless: make regdom passing semantics simpler The regdom struct is given to the core, so it might as well free it in error conditions. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 7dddaf1a36a372c14ca96a0b5fdfbe2015c43841 Author: Daniel Halperin Date: Thu Oct 23 23:48:58 2008 -0700 iwlwifi: Update reclaim flag The reclaim flag should include REPLY_RX_MPDU_CMD in the list of commands issued by uCode. This is for safety in case the SEQ_RX_FRAME bit is set incorrectly. Signed-off-by: Daniel Halperin Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 9fe1c5052019da3d2770abd7b727cbc1083f7937 Author: Fabrice Bellet Date: Thu Oct 23 23:48:57 2008 -0700 iwl3945: iwl3945_mac_get_tsf() should not return zero The problem fixed here is that iwl3945_mac_get_tsf() returns 0, as the function is not implemented, and this is considered as a valid value by the mac layer in mlme.c:1605. The consequence is that the STA in ad-hoc mode is inserted/removed quite frequently due to IBSS merging. This patch fixes : http://www.intellinuxwireless.org/bugzilla/show_bug.cgi?id=1781 and https://bugzilla.redhat.com/show_bug.cgi?id=459401 Signed-off-by: Fabrice Bellet Acked-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit a96a27f97f2bbfc1fca54bc3c0b0d41484152740 Author: Tomas Winkler Date: Thu Oct 23 23:48:56 2008 -0700 iwlwifi: run through spell checker Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 127901ab69bbb263fb2b46e850cf20c57ac321d3 Author: Tomas Winkler Date: Thu Oct 23 23:48:55 2008 -0700 iwlwifi: refactor tx byte count table usage This patch drops unreadable usage of IWL_SET/GET_BITS16 in byte count tables handling This patch also cleans a bit the byte count table code and adds WARN_ON traps on invalid values This patch is pure cleanup, no functional changes. Signed-off-by: Tomas Winkler Cc: Johannes Berg Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 951891c7ef844919d30aac7b1fc7396fd8be23ff Author: Mohamed Abbas Date: Thu Oct 23 23:48:54 2008 -0700 iwlwifi: clear scanning bits upon failure In iwl_bg_request_scan function, if we could not send a scan command it will go to done. In done it does the right thing to call mac80211 with scan complete, but the problem is STATUS_SCAN_HW is still set causing any future scan to fail. Fix by clearing the scanning status bits if scan fails. Signed-off-by: Mohamed Abbas Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 60d32215a94ebba2517b8d92612200ab610943fd Author: Daniel C. Halperin Date: Thu Oct 23 23:48:53 2008 -0700 iwlwifi: convert correctly rate_n_flags to PLCP index for mimo3 packets The driver does not properly convert rate_n_flags to PLCP index for mimo3 packets. This makes mac80211 drop the packets Signed-off-by: Daniel C. Halperin Reviewed-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit f69f42a6bbefb311ccb1626fdb61f723160afbfd Author: Tomas Winkler Date: Thu Oct 23 23:48:52 2008 -0700 iwlwifi: calibration command namespace renaming Since calibration framework is not HW specific remove 5000 and 4965 prefix This patch doesn't provide any functional changes only code renaming and movement Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 0ef2ca67b19e2286eed8eeb7ef7a35ce57d6d629 Author: Tomas Winkler Date: Thu Oct 23 23:48:51 2008 -0700 iwlwifi: parametrize eeprom versions This patch uses new parameters eeprom_ver and eeprom_calib_ver to support additional HW. Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit ed7fafec5e566a30fb21586c98cbef76c306d209 Author: Tomas Winkler Date: Thu Oct 23 23:48:50 2008 -0700 iwlwifi: don't update TFD free counter for invalid station This patch makes sure that station table is not accessed with invalid station id in 4965 TX response path Signed-off-by: Tomas Winkler Reported-by: Johannes Berg Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 3fd07a1e5aba89d4be3696c46cb7297f1873195a Author: Tomas Winkler Date: Thu Oct 23 23:48:49 2008 -0700 iwlwifi: refactor TX response flow This patch utilize 5000 new TX response command which contains all necessary information and avoids back referencing to the original TX frame. It also change handling of software queue tracking 4965 flow is aligned with changes as much as possible. Signed-off-by: Tomas Winkler Reviewed-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 8b30b1fe368ab03049435884c11c5c50e4c4ef0b Author: Sujith Date: Fri Oct 24 09:55:27 2008 +0530 mac80211: Re-enable aggregation Wireless HW without any dedicated queues for aggregation do not need the ampdu_queues mechanism present right now in mac80211. Since mac80211 is still incomplete wrt TX MQ changes, do not allow aggregation sessions for drivers that set ampdu_queues. This is only an interim hack until Intel fixes the requeue issue. Signed-off-by: Sujith Signed-off-by: Luis Rodriguez Signed-off-by: John W. Linville commit 4393dce9402c58744433c7a4f3931e17ddde4fb4 Author: Andrey Yurovsky Date: Thu Oct 23 13:10:53 2008 -0700 mac80211: allow all interfaces types to handle RX action frames Eliminate the vif.type check in ieee80211_rx_h_action. This check is unnecessary (these action frames can be handled by all interface types) and currently prevents, for example, AP interfaces from handling BACK action frames such as ADDBA and DELBA requests. Signed-off-by: Andrey Yurovsky Acked-by: Johannes Berg Signed-off-by: John W. Linville commit f3e63db2e5998bf01852c72d8fa3d8cf988fb6cd Author: Johannes Berg Date: Thu Oct 23 09:40:01 2008 +0200 wireless: remove write-only 'granted' variable Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit a4510bf8d96698496d7d2bb242917b4bbfa9bf28 Author: Sujith Date: Thu Oct 23 12:15:19 2008 +0530 ath9k: Check if the STA supports HT when initializing rate control Signed-off-by: Sujith Signed-off-by: John W. Linville commit 075cbc9eb15da8f4cba7c7eaadedd8b030d3a87a Author: Sujith Date: Thu Oct 23 12:14:02 2008 +0530 mac80211: Change WARN_ON to WARN_ON_ONCE A warning would be printed for every packet that is transmitted if the rate control information isn't setup. Change this to WARN_ON_ONCE. Signed-off-by: Sujith Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 5c020dc6a0f75de3cd75d9cca3b589abc1826fc5 Author: Luis R. Rodriguez Date: Wed Oct 22 13:28:45 2008 -0700 ath9k: Allow user to change tx power when asked We were also changing tx power even when we were not asked to, this enforces the change only when we are asked nicely. When not asked we simply try to use the max power, we don't tx power at all for rate control. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit f97e40078e44c1db96269286adc0b12dc8eae3c2 Author: Luis R. Rodriguez Date: Wed Oct 22 13:28:44 2008 -0700 ath9k: enable RX interrupt mitigation This enables hardware interrupt mitigation on RX. It should alleviate system interrupt load intelligently. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit b139a10a0aaf3c8041af348c2268d59e1610dc83 Author: Luis R. Rodriguez Date: Wed Oct 22 13:28:43 2008 -0700 ath9k: remove pointless sc_txintrperiod and spin_lock_bh on tx prepare sc_txintrperiod is currently set to 0 and never updated. We won't be using this, if anything we will consider using TX interrupt mitigation but that is different and not yet tested. So remove sc_txintrperiod and the pointless spin_lock_bh() on tx prepare. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit d9d2925713d92bbe33b2edff3d7de1ce5646ab54 Author: Luis R. Rodriguez Date: Wed Oct 22 13:13:53 2008 -0700 mac80211: make use of regulatory tx power settings on change of tx power We do not know what max power to allow until a device is targeting a channel, therefore only allow changing tx power if a channel is defined. Also make use of the channel's max power setting as defined by regulatory rules before allowing the user to use the requested power setting. If the user asked us to figure it out we use the max allowed by regulatory. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit e2ef12d3fdb771002e7c7b6bd8f19902b1934e03 Author: Rami Rosen Date: Wed Oct 22 09:58:39 2008 +0200 mac80211: check return value of dev_alloc_skb() in ieee80211_sta_join_ibss(). This patch add a check on the return value of dev_alloc_skb() in ieee80211_sta_join_ibss() in net/mac80211/mlme.c. Signed-off-by: Rami Rosen Signed-off-by: John W. Linville commit 72118015271e6d3852cb9f647efe0987d131adaa Author: John W. Linville Date: Tue Sep 30 21:43:03 2008 -0400 wireless: avoid some net/ieee80211.h vs. linux/ieee80211.h conflicts There is quite a lot of overlap in definitions between these headers... Signed-off-by: John W. Linville commit 9387b7caf3049168fc97a8a9111af8fe2143af18 Author: John W. Linville Date: Tue Sep 30 20:59:05 2008 -0400 wireless: use individual buffers for printing ssid values Also change escape_ssid to print_ssid to match print_mac semantics. Signed-off-by: John W. Linville commit 2819f8ad6da1e24b5dd94a221978e61f2a9c972a Author: John W. Linville Date: Tue Sep 30 17:50:31 2008 -0400 wireless: escape_ssid should handle non-printables Also use common backslash sequences like \t, \n, \r, and \\ as well as \0. Signed-off-by: John W. Linville commit c5d3dce875ef055ed9b14f169cc967cc2c8faf1f Author: John W. Linville Date: Tue Sep 30 17:17:26 2008 -0400 wireless: remove NETWORK_EMPTY_ESSID flag It is unnecessary and of questionable value. Also remove is_empty_ssid, as it is also unnecessary. Signed-off-by: John W. Linville commit 7e272fcff6f0a32a3d46e600ea5895f6058f4e2d Author: John W. Linville Date: Wed Sep 24 18:13:14 2008 -0400 wireless: consolidate on a single escape_essid implementation Signed-off-by: John W. Linville commit ddf4ac53fb8a12a027c0486db743ae040f45b56a Author: Johannes Berg Date: Wed Oct 22 11:41:38 2008 +0200 mac80211: insert AP sta entry after filling it We never clearly defined the semantics of the sta_notify callback and it was originally posted for iwlwifi which still doesn't use it at all. With the recent HT rework ath9k started relying on it, but I made a mistake there in that I made ath9k assume the HT information has already been filled in at sta_notify time. This isn't a hard thing to do, so do it. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit cfa3fa405a5eafd5d5c53b18abc00ca998c35eef Author: Zhaolei Date: Wed Oct 22 17:07:25 2008 +0800 Fix debugfs_create_*'s error checking method for wireless/rt2x00/ debugfs_create_*() returns NULL if an error occurs, returns -ENODEV when debugfs is not enabled in the kernel. Signed-off-by: Zhao Lei Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 9b24001db145cf1da76a479918373c18aa10bb4b Author: Zhaolei Date: Wed Oct 22 17:06:12 2008 +0800 Fix debugfs_create_bool's error checking method for wireless/iwlwifi/ debugfs_create_bool() returns NULL if an error occurs, returns -ENODEV when debugfs is not enabled in the kernel. Signed-off-by: Zhao Lei Signed-off-by: John W. Linville commit ac9440a4e4b284d3469120f0e049dff7c73c72a4 Author: Johannes Berg Date: Tue Oct 21 11:08:27 2008 +0200 wireless: fix EU check http://en.wikipedia.org/wiki/De_Morgan%27s_laws is useful. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit f6037d09e2b58e5483ab63f75d4d57ae70f9ae6a Author: Johannes Berg Date: Tue Oct 21 11:01:33 2008 +0200 wireless: get rid of pointless request list We really only need to know the last request at each point in time. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit f3b407fba52e1b86ca286ee7c218a4fb00bd29e0 Author: Johannes Berg Date: Tue Oct 21 09:57:41 2008 +0200 wireless: remove cfg80211_reg_mutex This mutex is wrong, we use cfg80211_drv_mutex (which should possibly be renamed to just cfg80211_mutex) everywhere except in one place, fix that and get rid of the extra mutex. Also get rid of a spurious regulatory_requests list definition. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit cf03268e6ed6cfacaa5e32db41ea832c4d10438b Author: Johannes Berg Date: Tue Oct 21 09:42:38 2008 +0200 wireless: don't publish __regulatory_hint This function requires an internal lock to be held, so it cannot be published to other modules in the kernel. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit e37d4dffdffb7f834bd28d4ae8e3dcdf07fce508 Author: Bob Copeland Date: Mon Oct 20 21:20:27 2008 -0400 mac80211: fix a few typos in mac80211 kernel doc Correct a handful of errors found while reading the mac80211 book. Signed-off-by: Bob Copeland Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 558875112c28c7b2744a92c9836c256dd57bc5b6 Author: John Daiker Date: Fri Oct 17 12:16:17 2008 -0700 rt2x00: reduce checkpatch.pl errors A few changes to reduce checkpatch.pl errors in the rt2x00 driver. For the most part, I only fixed cosmetic things, and left the actual 'code flow' untouched (hopefully)! Diff is against wireless-testing HEAD. Signed-off-by: John Daiker Signed-off-by: Ivo van Doorn Signed-off-by: John W. Linville commit 0bbac08f0a23898787978c0b405474e453e9824c Author: John Daiker Date: Fri Oct 17 12:16:00 2008 -0700 ath5k: reduce checkpatch.pl errors A few changes to reduce checkpatch.pl errors in the ath5k driver. For the most part, I only fixed cosmetic things, and left the actual 'code flow' untouched (hopefully)! Diff is against wireless-testing HEAD. Signed-off-by: John Daiker Reviewed-by: Bob Copeland Acked-by: Nick Kossifidis Signed-off-by: John W. Linville commit 93da9cc17c5ae8a751886fd4732db89ad5e9bdb9 Author: colin@cozybit.com Date: Tue Oct 21 12:03:48 2008 -0700 Add nl80211 commands to get and set o11s mesh networking parameters The two new commands are NL80211_CMD_GET_MESH_PARAMS and NL80211_CMD_SET_MESH_PARAMS. There is a new attribute enum, NL80211_ATTR_MESH_PARAMS, which enumerates the various mesh configuration parameters. Moved struct mesh_config from mac80211/ieee80211_i.h to net/cfg80211.h. nl80211_get_mesh_params and nl80211_set_mesh_params unpack the netlink messages and ask the driver to get or set the configuration. This is done via two new function stubs, get_mesh_params and set_mesh_params, in struct cfg80211_ops. Signed-off-by: Colin McCabe Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 4a68ec535ef1043319928f601d633f78e650a16f Author: Johannes Berg Date: Thu Oct 16 21:44:44 2008 +0200 mac80211: inform userspace of probe/auth/assoc timeout I noticed that when for some reason [1] the probe or auth times out, wpa_supplicant doesn't realise this and only tries the next AP when it runs into its own timeout, which is ten seconds, and that's quite long. Fix this by making mac80211 notify userspace that it didn't associate. [1] my wrt350n in mixed B/G/HT mode often runs into this, maybe it's because one of the antennas is broken off and for whatever reason it decides to use that antenna to transmit the response frames (auth, probe); I do see beacons fine so it's not totally broken. Works fine in pure-G mode. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 8216bfe2518c25f16a60485636e477c9a3b795d5 Author: Larry Finger Date: Thu Oct 16 16:44:03 2008 -0700 hostap: Fix sparse warnings A compilation with the command "make C=2 CF="-D__CHECK_ENDIAN__" \ drivers/net/wireless/hostap/" yields the following warnings: CHECK drivers/net/wireless/hostap/hostap_info.c drivers/net/wireless/hostap/hostap_info.c:156:43: warning: incorrect type in argument 2 (different signedness) drivers/net/wireless/hostap/hostap_info.c:156:43: expected unsigned long volatile *addr drivers/net/wireless/hostap/hostap_info.c:156:43: got long * drivers/net/wireless/hostap/hostap_info.c:294:44: warning: incorrect type in argument 2 (different signedness) drivers/net/wireless/hostap/hostap_info.c:294:44: expected unsigned long volatile *addr drivers/net/wireless/hostap/hostap_info.c:294:44: got long * drivers/net/wireless/hostap/hostap_info.c:487:12: warning: incorrect type in argument 2 (different signedness) drivers/net/wireless/hostap/hostap_info.c:487:12: expected unsigned long volatile *addr drivers/net/wireless/hostap/hostap_info.c:487:12: got long * drivers/net/wireless/hostap/hostap_info.c:491:12: warning: incorrect type in argument 2 (different signedness) drivers/net/wireless/hostap/hostap_info.c:491:12: expected unsigned long volatile *addr drivers/net/wireless/hostap/hostap_info.c:491:12: got long * The warnings are fixed with the following compile-tested fix: Signed-off-by: Larry Finger Acked-by: Jouni Malinen Signed-off-by: John W. Linville commit 50fb2e4572141770380f5919793c6e575fa3474b Author: Johannes Berg Date: Thu Oct 16 11:21:49 2008 +0200 mac80211: remove rate_control_clear "Clearing" the rate control algorithm is pointless, none of the algorithms actually uses this operation and it's not even invoked properly for all channel switching. Also, there's no need to since rate control algorithms work per station. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 65a0667b43ff746b2964b2a257ffff1a4747e19d Author: Tomas Winkler Date: Wed Oct 15 11:06:23 2008 -0700 iwlwifi: protect headers from double inclusion This patch protects iwl-csr.h and iwl-fh.h from double inclusion by ifndef define endif idiom Signed-off-by: Tomas Winkler Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit f4a8cd94fc43829d065aae94f6d379c6f0f1301c Author: Felix Fietkau Date: Wed Oct 15 19:13:59 2008 +0200 minstrel: improve performance for non-MRR drivers This patch enhances minstrel's performance for non-MRR setups, by preventing it from sampling slower rates with >95% success probability and by putting at least 1 non-sample frame between several sample frames. Signed-off-by: Felix Fietkau Signed-off-by: John W. Linville commit 0a9542ee12fb57d408f19aac738e8abe8670be7a Author: Johannes Berg Date: Wed Oct 15 11:54:04 2008 +0200 nl80211: fix monitor flags NLA_NESTED attributes cannot be empty, but we want to be able to specify "no flags" (empty attribute) vs. "no change" (no attribute). Therefore, remove the NLA_NESTED policy so it can work as an empty attribute. I guess I should have used a u32 for these flags instead, but we're stuck with it now. Haven't noticed earlier because of a bug in iw... Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 27df605ebe2c106c53957dfdaee5d948f01cfc97 Author: John W. Linville Date: Wed Oct 22 16:41:55 2008 -0400 p54: integrate parts of lmac_longbow.h and other parts of stlc45xx This patch removes most/all? of the "magic" numbers and unknown structure variables inside the code and replaces them with meaningful prototypes. (Plus a one line warning fix from Larry Finger .) Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 5e73444e91889ea6c7a83bc174ef8e8b6aaeea9b Author: Christian Lamparter Date: Wed Oct 15 04:07:56 2008 +0200 p54: borrow some setup code from stlc45xx This patch initialize all remaining values which are necessary for SPI firmwares. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit b92f30d65aeb0502e2ed8beb80c8465578b40002 Author: Christian Lamparter Date: Wed Oct 15 04:07:16 2008 +0200 p54: fix memory management We have to be careful if multiple "control frames" are passed in a very short intervals to the device's firmware. As p54_assign_address always put them into same memory location. To guarantee that this won't happen anymore, we have to treat control frames like normal data frames in the devices own memory management. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 9de5776ff33a006b864341a6ec8d31f1a3c628cf Author: Christian Lamparter Date: Wed Oct 15 04:05:51 2008 +0200 p54: p54: refactor p54_rx_frame_sent the long names and the nesting in p54_rx_frame_sent really became a "line longer than 80 characters" problem. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 0f1be978910092bed5d8dac0774e5cf85d4b4e12 Author: Christian Lamparter Date: Wed Oct 15 03:56:20 2008 +0200 p54: refactor statistic timer code Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 0fdd7c5d2defe8c6873eb8a40a880eb0dc59573d Author: Christian Lamparter Date: Wed Oct 15 03:55:37 2008 +0200 p54: broken out edcf changes This patch series hopefully increases p54's "longterm" stability. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit b88b15dfbddc8837569c6dea49348791357de4aa Author: Tomas Winkler Date: Tue Oct 14 12:32:49 2008 -0700 iwlwifi: tx command must run on same tfd as packet This patch makes clear that tx command is attached to the same tfd as the tx packet Signed-off-by: Tomas Winkler Signed-off-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 499b1883038a7db2dcf8b64229f8533ce2c8f0fc Author: Tomas Winkler Date: Tue Oct 14 12:32:48 2008 -0700 iwlwifi: fix TX cmd dma unmapping This patch: 1. fixes command DMA unmapping, this might be visible only on platforms where DMA unmapping is no noop such as PPC64 (not tested) 2. attaches correctly high memory part of the host command buffer 3. changes structure of TFD TB instead of describing transmit buffer (TB) tuple it describes single TB and makes code more readable on price of one unaligned access 4. eliminates using of IWL_GET/SET_BITs for TFD handling 5. renames TFD structures to mach the HW spec 6. reduces iwl_tx_info size by reserving first TB to the host command This patch should not have any visible effect on x86 32 This patch is rework of iwlwifi: fix DMA code and bugs from Johannes Berg Signed-off-by: Tomas Winkler Cc: Johannes Berg Reviewed-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 76eff18bdc5feaa53f1be33709b67df02f1d55e9 Author: Tomas Winkler Date: Tue Oct 14 12:32:45 2008 -0700 iwlwifi: unify tx antenna toggling TX antenna toggling is requested for management frames in tx and scanning. I addition toggling in scanning was incorrect; Signed-off-by: Tomas Winkler Reviewed-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 961ba60abe02517d0c8252f9befb1478f4e008a4 Author: Tomas Winkler Date: Tue Oct 14 12:32:44 2008 -0700 iwlwifi: add iwl_cmd_queue_free for readability This patch adds iwl_cmd_queue_free function and separate cmd queue freeing from regular tx queue freeing. This improves readability and adds one more step in restructuring of cmd queue handling Signed-off-by: Tomas Winkler Reviewed-by: Zhu Yi Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 3257e5d4eb418e4656542207720aef5f0f547701 Author: Tomas Winkler Date: Tue Oct 14 12:32:43 2008 -0700 iwlwifi: remove host commands structures from iwl_cmd This patch removes host commands structures from iwl_cmd to make more HW oblivious tx cmd was left it needs special treatment. Signed-off-by: Tomas Winkler Reviewed-by: Zhu Yi Signed-off-by: John W. Linville commit 56e1261596334e60210fb8ecd9eb6a3db53aba94 Author: Jay Sternberg Date: Tue Oct 14 12:32:42 2008 -0700 iwlwifi: expand error lookup and align output change desc_lookup from hard coded switch to a simple lookup table and expand list to include all errors. Also corrected output using this string so info is aligned and easier to read when debugging issues. Signed-off-by: Jay Sternberg Signed-off-by: Reinette Chatre Signed-off-by: John W. Linville commit 4e062f99af771173b601742b0c1c98eb4d52ea08 Author: Jay Sternberg Date: Tue Oct 14 12:32:41 2008 -0700 iwlwifi: define firmware file name once string repeated for definition of ucode firmware file and in preparation for multiple firmware files need to consolidate location for their definition. Signed-off-by: Jay Sternberg Acked-by: Tomas Winkler Signed-off-by: John W. Linville commit 4acf07497140b1504a799d6a1b4da7d1b1e35af5 Author: Johannes Berg Date: Tue Oct 14 19:49:22 2008 +0200 make ieee80211 invisible This makes CONFIG_IEEE80211 invisible. The drivers that require it (ipw2100, ipw2200, hostap) select it, and everybody else really shouldn't even think about using it. Also, since there really is no point in compiling anything without crypto support these days, remove the crypto options and just enable them, leaving only the debugging option which only shows up when a driver is select that requires it. This makes it hard to enable, but most people wouldn't want to anyway. Signed-off-by: Johannes Berg Acked-by: Reinette Chatre Signed-off-by: John W. Linville commit 5c7f9b7363bfd10e40cf1a28dfc9048417df7028 Author: Tim Gardner Date: Tue Oct 14 10:38:03 2008 -0600 ipw2x00: change default policy for auto-associate Do not attempt association until directed to do so by a user space application. In particular, this avoids race conditions with NetworkManager association state. Signed-off-by: Tim Gardner Acked-by: Dan Williams Signed-off-by: John W. Linville commit c12abae333ac550acacf9d324ed54b7d17ead0c0 Author: Johannes Berg Date: Tue Oct 14 16:56:51 2008 +0200 p54: implement MRR This implements multi-rate retry in p54. With lots of help and testing from Christian and the limiting idea from nbd. Signed-off-by: Johannes Berg Cc: Christian Lamparter Signed-off-by: John W. Linville commit e6a9854b05c1a6af1308fe2b8c68f35abf28a3ee Author: Johannes Berg Date: Tue Oct 21 12:40:02 2008 +0200 mac80211/drivers: rewrite the rate control API So after the previous changes we were still unhappy with how convoluted the API is and decided to make things simpler for everybody. This completely changes the rate control API, now taking into account 802.11n with MCS rates and more control, most drivers don't support that though. Signed-off-by: Felix Fietkau Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit cb121bad67a32cde37adc2729b7e18aa4fd3063e Author: Johannes Berg Date: Tue Oct 14 16:38:55 2008 +0200 mac80211: add might_sleep to hw_config Just to catch bugs when changing mac80211. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit faf3994a9f65fd95a68bbcc03c318a427cd1e7d3 Author: Wang Chen Date: Tue Oct 14 13:30:33 2008 +0800 airo: Kill directly reference of netdev->priv We have some reasons to kill netdev->priv: 1. netdev->priv is equal to netdev_priv(). 2. netdev_priv() wraps the calculation of netdev->priv's offset, obviously netdev_priv() is more flexible than netdev->priv. But we cann't kill netdev->priv, because so many drivers reference to it directly. OK, becasue Dave S. Miller said, "every direct netdev->priv usage is a bug", and I want to kill netdev->priv later, I decided to convert all the direct reference of netdev->priv first. In this driver, I don't simply use netdev_priv() to replace netdev->priv. The reason is: Pointer netdev->priv was changed in this driver, but it shouldn't. Because the memory was allocated when alloc_netdev() and netdev->priv should always point to that memory. So I use netdev->ml_priv to replace netdev->priv. After replacing, both ai and ai->wifidev->ml_priv point to the same memory. Signed-off-by: Wang Chen Cc: John W. Linville Cc: Dan Williams Signed-off-by: John W. Linville commit b706e65b40417e03c2451bb3f92488f3736843fa Author: Andrey Yurovsky Date: Mon Oct 13 18:23:07 2008 -0700 ath5k: fix mesh point operation This patch fixes mesh point operation (thanks to YanBo for pointing out the problem): make mesh point interfaces start beaconing when they come up and configure the RX filter in mesh mode so that mesh beacons and action frames are received. Add mesh point to the check in ath5k_add_interface. Tested with multiple AR5211 cards. Signed-off-by: Andrey Yurovsky Acked-by: Nick Kossifidis Signed-off-by: John W. Linville commit 6e0e0bf80c963d83f511e1cda652630cf31ebf85 Author: Luis R. Rodriguez Date: Mon Oct 13 14:08:10 2008 -0700 ath5k: correct ath5k signal quality This adjusts ath5k's signal quality reporting taking into consideration received beacons at an RSSI of 35 should indicate you can use of 54 Mbps on a single stream card (all ath5k cards) reliably. Signed-off-by: Luis R. Rodriguez Acked-by: Nick Kossifidis Signed-off-by: John W. Linville commit c49d154a800c55b8948e6d34563e593b500b31b9 Author: Luis R. Rodriguez Date: Mon Oct 13 14:08:09 2008 -0700 ath9k: correct signal quality report This adjusts ath9k's signal quality reporting taking into consideration received beacons at an RSSI of 45 should indicate you can use of MCS 15 rate (144 Mbps) reliably on dual stream card. Keep in mind mac80211 does not yet have aggregation fixed but this should still provide more accurate results. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit 4fe0657ed41590ea4c2d4920c76836cb4a483caf Author: Luis R. Rodriguez Date: Mon Oct 13 14:08:07 2008 -0700 ath5k/ath9k: correct signal quality Now that we officially are supporting ath5k I can do this at work hours. Signed-off-by: Luis R. Rodriguez Signed-off-by: John W. Linville commit f8288317b5076fde0bb4e91cd4754379c850be7a Author: Herton Ronaldo Krzesinski Date: Mon Oct 13 18:11:00 2008 +0000 rtl8187: add short slot handling for 8187B This change adds short slot handling for 8187B variant of rtl8187 chips. Some things to note about changes done: * Values used are chosen to met 802.11-2007 spec. This raised a question about SIFS value used with 8187L: 0x22 (34) doesn't match any spec value. For now just don't change 8187L, but is something to be looked at. * On 8187B, the location of EIFS register is at the same place as BRSR+1 of struct rtl818x_csr. Unfortunately there is no clean way to accomodate 8187B differences currently, just use address of BRSR+1 and comment about it. The same thing happens for Ack timeout register, that is on CARRIER_SENSE_COUNTER location of 8187L. The eifs and ack timeout values are in units of 4us. All these registers information was gathered from references being the vendor gpl driver and 8180 datasheet, unfortunately there is no information about this on 8187B datasheet. Also the ack timeout value was inspired by the same calculation as done on rt2x00. Signed-off-by: Herton Ronaldo Krzesinski Signed-off-by: John W. Linville commit 64761077f815660276f69b497edb9842d880df9a Author: Herton Ronaldo Krzesinski Date: Mon Oct 13 18:10:59 2008 +0000 rtl8187: adapt for deprecated IEEE80211_CONF_SHORT_SLOT_TIME flag This updates 8187L handling for short slot after "mac80211: fix short slot handling". For 8187B, there was no handling done for short slot timing so nothing done, support for it will come in a following patch. Signed-off-by: Herton Ronaldo Krzesinski Signed-off-by: John W. Linville commit da966bcae70e4012b7d999820b728dd6502047e0 Author: Jiri Slaby Date: Sun Oct 12 22:54:10 2008 +0200 Ath5k: add AP mode Add support for AP mode. This involves: - enablement in ath5k_beacon_config -- initialize beacon timer - add AP to the supported modes in ath5k_add_interface - handle beacon change even for AP in ath5k_config_interface - remove useless test for IBSS in ath5k_beacon_update Note that it doesn't enable the AP mode for the driver. It must be enabled by NL80211_IFTYPE_AP bit added to interface_modes. v2: Fixed opmode constant (IEEE80211_ to NL80211_) Signed-off-by: Jiri Slaby Cc: Nick Kossifidis Cc: Luis R. Rodriguez Signed-off-by: John W. Linville commit 7eb27af766e4a1db3dbc02a5b3d175885bf2ce93 Author: Johannes Berg Date: Sun Oct 12 00:39:55 2008 +0200 p54/rtl8187: fix up the seqno patch Sorry about that, for some reason I didn't notice that I'd left some unused variables in there. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit ae5eb02641233a4e9d1b92d22090f1b1afa14466 Author: Johannes Berg Date: Tue Oct 14 16:58:37 2008 +0200 mac80211: rewrite HT handling The HT handling has the following deficiencies, which I've (partially) fixed: * it always uses the AP info even if there is no AP, hence has no chance of working as an AP * it pretends to be HW config, but really is per-BSS * channel sanity checking is left to the drivers * it generally lets the driver control too much HT enabling is still wrong with this patch if you have more than one virtual STA mode interface, but that never happens currently. Once WDS, IBSS or AP/VLAN gets HT capabilities, it will also be wrong, see the comment in ieee80211_enable_ht(). Additionally, this fixes a number of bugs: * mac80211: ieee80211_set_disassoc doesn't notify the driver any more since the refactoring * iwl-agn-rs: always uses the HT capabilities from the wrong stuff mac80211 gives it rather than the actual peer STA * ath9k: a number of bugs resulting from the broken HT API I'm not entirely happy with putting the HT capabilities into struct ieee80211_sta as restricted to our own HT TX capabilities, but I see no cleaner solution for now. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit bda3933a8aceedd03e0dd410844bd310033ca756 Author: Johannes Berg Date: Sat Oct 11 01:51:51 2008 +0200 mac80211: move bss_conf into vif Move bss_conf into the vif struct so that drivers can access it during ->tx without having to store it in the private data or similar. No driver updates because this is only for when they want to start using it. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 9124b07740c51cbc6e358dd0c4abc6ee8ded084d Author: Johannes Berg Date: Tue Oct 14 19:17:54 2008 +0200 mac80211: make retry limits part of hw config Instead of having a separate callback, use the HW config callback with a new flag to change retry limits. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 525181891fb5ed323b6ba0f141c422f1395acfb9 Author: Johannes Berg Date: Sat Oct 11 01:46:25 2008 +0200 iwl3945: fix station stuff in RC algorithm Probably bugs I added. Signed-off-by: Johannes Berg Acked-by: Reinette Chatre Signed-off-by: John W. Linville commit d51626df5747efaa8d2c00678f64cb503845effe Author: Johannes Berg Date: Thu Oct 9 12:20:13 2008 +0200 nl80211: export HT capabilities This exports the local HT capabilities in nl80211. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 94778280fabdb6bc76db5509bd95859f1141385b Author: Johannes Berg Date: Fri Oct 10 13:21:59 2008 +0200 mac80211: provide sequence numbers I've come to think that not providing sequence numbers for the normal STA mode case was a mistake, at least two drivers now had to implement code they wouldn't otherwise need, and I believe at76_usb and adm8211 might be broken. This patch makes mac80211 assign a sequence number to all those frames that need one except beacons. That means that if a driver only implements modes that do not do beaconing it need not worry about the sequence number. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 2e20cc3986cbee410fbe8e3e116bdcb12d70fcce Author: Larry Finger Date: Thu Oct 9 17:38:52 2008 -0700 p54: Move rx_mtu to struct bootrec_desc The patch entitled "[PATCH] p54: Fix sparse warnings" added the __le16 variable rx_mtu to struct bootrec, but it could equally well be placed in the struct bootrec_desc, which overlays the 'data' section of bootrec. Signed-off-by: Larry Finger Signed-off-by: John W. Linville commit 78236571a538860dc2f0842ff6c7789522eb1e63 Author: Henrique de Moraes Holschuh Date: Thu Oct 9 18:15:33 2008 -0300 rfkill: rate-limit rfkill-input workqueue usage (v3) Limit the number of "expensive" rfkill workqueue operations per second, in order to not hog system resources too much when faced with a rogue source of rfkill input events. The old rfkill-input code (before it was refactored) had such a limit in place. It used to drop new events that were past the rate limit. This behaviour was not implemented as an anti-DoS measure, but rather as an attempt to work around deficiencies in input device drivers which would issue multiple KEY_FOO events too soon for a given key FOO (i.e. ones that do not implement mechanical debouncing properly). However, we can't really expect such issues to be worked around by every input handler out there, and also by every userspace client of input devices. It is the input device driver's responsability to do debouncing instead of spamming the input layer with bogus events. The new limiter code is focused only on anti-DoS behaviour, and tries to not lose events (instead, it coalesces them when possible). The transmitters are updated once every 200ms, maximum. Care is taken not to delay a request to _enter_ rfkill transmitter Emergency Power Off (EPO) mode. If mistriggered (e.g. by a jiffies counter wrap), the code delays processing *once* by 200ms. Signed-off-by: Henrique de Moraes Holschuh Cc: Ivo van Doorn Cc: Dmitry Torokhov Signed-off-by: John W. Linville commit 176707997bc3da2c4e32715c35cfebba0334ed68 Author: Henrique de Moraes Holschuh Date: Thu Oct 9 18:15:32 2008 -0300 rfkill: honour EPO state when resuming a rfkill controller rfkill_resume() would always restore the rfkill controller state to its pre-suspend state. Now that we know when we are under EPO, kick the rfkill controller to SOFT_BLOCKED state instead of to its pre-suspend state when it is resumed while EPO mode is active. Signed-off-by: Henrique de Moraes Holschuh Cc: Ivo van Doorn Signed-off-by: John W. Linville commit d003922dab6a66027344a787e9846ecf35a706a8 Author: Henrique de Moraes Holschuh Date: Thu Oct 9 21:49:33 2008 -0300 rfkill: add master_switch_mode and EPO lock to rfkill and rfkill-input Add of software-based sanity to rfkill and rfkill-input so that it can reproduce what hardware-based EPO switches do, blocking all transmitters and locking down any further attempts to unblock them until the switch is deactivated. rfkill-input is responsible for issuing the EPO control requests, like before. While an rfkill EPO is active, all transmitters are locked to one of the BLOCKED states and all attempts to change that through the rfkill API (userspace and kernel) will be either ignored or return -EPERM errors. The lock will be released upon receipt of EV_SW SW_RFKILL_ALL ON by rfkill-input, or should modular rfkill-input be unloaded. This makes rfkill and rfkill-input extend the operation of an existing wireless master kill switch to all wireless devices in the system, even those that are not under hardware or firmware control. Since the above is the expected operational behavior for the master rfkill switch, the EPO lock functionality is not optional. Also, extend rfkill-input to allow for three different behaviors when it receives an EV_SW SW_RFKILL_ALL ON input event. The user can set which behavior he wants through the master_switch_mode parameter: master_switch_mode = 0: EV_SW SW_RFKILL_ALL ON just unlocks rfkill controller state changes (so that the rfkill userspace and kernel APIs can now be used to change rfkill controller states again), but doesn't change any of their states (so they will all remain blocked). This is the safest mode of operation, as it requires explicit operator action to re-enable a transmitter. master_switch_mode = 1: EV_SW SW_RFKILL_ALL ON causes rfkill-input to attempt to restore the system to the state before the last EV_SW SW_RFKILL_ALL OFF event, or to the default global states if no EV_SW SW_RFKILL_ALL OFF ever happened. This is the recommended mode of operation for laptops. master_switch_mode = 2: tries to unblock all rfkill controllers (i.e. enable all transmitters) when an EV_SW SW_RFKILL_ALL ON event is received. This is the default mode of operation, as it mimics the previous behavior of rfkill-input. In order to implement these features in a clean way, the entire event handling of rfkill-input was refactored into a single worker function. Protection against input event DoS (repeatedly firing rfkill events for rfkill-input to process) was removed during the code refactoring. It will be added back in a future patch. Note that with these changes, rfkill-input doesn't need to explicitly handle any radio types for which KEY_ or SW_ events do not exist yet. Code to handle EV_SW SW_{WLAN,WWAN,BLUETOOTH,WIMAX,...} was added as it might be needed in the future (and its implementation is not that obvious), but is currently #ifdef'd out to avoid wasting resources. Signed-off-by: Henrique de Moraes Holschuh Cc: Ivo van Doorn Cc: Dmitry Torokhov Signed-off-by: John W. Linville commit 68d2413bec7e1d97e906eafb05e78d925a5ca128 Author: Henrique de Moraes Holschuh Date: Thu Oct 9 18:15:30 2008 -0300 rfkill: export global states to rfkill-input Export the the global switch states to rfkill-input. This is needed to properly implement KEY_* handling without disregarding the initial state. Signed-off-by: Henrique de Moraes Holschuh Cc: Ivo van Doorn Signed-off-by: John W. Linville commit cf4b4aab552f5f658ed400dd0cd41f9ac8aac7c1 Author: Henrique de Moraes Holschuh Date: Thu Oct 9 18:15:29 2008 -0300 rfkill: use killable locks instead of interruptible Apparently, many applications don't expect to get EAGAIN from fd read/write operations, since POSIX doesn't mandate it. Use mutex_lock_killable instead of mutex_lock_interruptible, which won't cause issues. Signed-off-by: Henrique de Moraes Holschuh Cc: Ivo van Doorn Signed-off-by: John W. Linville commit e8975581f63870be42ff4662b293d1b0c8c21350 Author: Johannes Berg Date: Thu Oct 9 12:18:51 2008 +0200 mac80211: introduce hw config change flags This makes mac80211 notify the driver which configuration actually changed, e.g. channel etc. No driver changes, this is just plumbing, driver authors are expected to act on this if they want to. Also remove the HW CONFIG debug printk, it's incorrect, often we configure something else. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 0f4ac38b5999c3d51adad52d61c56c1b99c247ec Author: Johannes Berg Date: Thu Oct 9 12:18:04 2008 +0200 mac80211: kill hw.conf.antenna_sel_{rx,tx} Never actually used. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit d9fe60dea7779d412b34679f1177c5ca1940ea8d Author: Johannes Berg Date: Thu Oct 9 12:13:49 2008 +0200 802.11: clean up/fix HT support This patch cleans up a number of things: * the unusable definition of the HT capabilities/HT information information elements * variable names that are hard to understand * mac80211: move ieee80211_handle_ht to ht.c and remove the unused enable_ht parameter * mac80211: fix bug with MCS rate 32 in ieee80211_handle_ht * mac80211: fix bug with casting the result of ieee80211_bss_get_ie to an information element _contents_ rather than the whole element, add size checking (another out-of-bounds access bug fixed!) * mac80211: remove some unused return values in favour of BUG_ON checking * a few minor other things Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 40333e4fb476014cdd939d27e20eb54573172b32 Author: Christian Lamparter Date: Wed Oct 8 20:52:22 2008 +0200 p54: honour bss_info_changed's short slot time settings This patch was made on behalf of Johannes request. "mac80211 and IEEE80211_CONF_SHORT_SLOT_TIME" Of course, bss_info_changed provides some more useful data. e.g.: basic_rates, dtim_period, beacon_int and maybe even more. Everything can be hooked up if it's necessary. Signed-off-by: Christian Lamparter Signed-off-by: John W. Linville commit 5d6924eaf07bec9ce7527cad9d2537e448574738 Author: Rami Rosen Date: Wed Oct 8 11:18:27 2008 +0200 mac80211: use HWSIM_STA_MAGIC in hwsim_check_sta_magic() and hwsim_set_sta_magic(). This patch fixes a typo in mac80211_hwsim.c: use HWSIM_STA_MAGIC in hwsim_check_sta_magic() and hwsim_set_sta_magic() instead of HWSIM_VIF_MAGIC. Signed-off-by: Rami Rosen Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 3195c1f3499912b207ae600968488759b16037fc Author: Tomas Winkler Date: Wed Oct 8 09:37:30 2008 +0800 iwlwifi: refactor rxon time command This patch refactors rxon time command. It removes the usage of union tsf in favor of u64 value and hopefully makes code more readable. There are no functional changes in this patch. Signed-off-by: Tomas Winkler Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit 5d664a41a0a8c612f66bcb3c2a6f395e9afa6beb Author: Tomas Winkler Date: Wed Oct 8 09:37:29 2008 +0800 iwlwifi: take a valid antenna upon rate scale init This patch selects a valid antennae upon rate scale init. This solves a SYSASSERT complaining that the driver is setting a non valid antenna in the LQ CMD. Signed-off-by: Emmanuel Grumbach Signed-off-by: Tomas Winkler Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit be5d56ed885a2897ec813eab4a8055d495816e9a Author: Tomas Winkler Date: Wed Oct 8 09:37:27 2008 +0800 iwlwifi: make initial calibration set configurable This patch adds ability to configure initial calibration set. Not all HW supported by iwlwifi use the same calibration set, XTAL is one example. Some clean ups are also included in this patch. Signed-off-by: Tomas Winkler Signed-off-by: Zhu Yi Signed-off-by: John W. Linville commit 1397dcebd8f1d66528e8f86b0dfb603281558f79 Author: Rami Rosen Date: Tue Oct 7 16:29:11 2008 +0200 mac80211: remove unused declaration of struct sta_attribute. This patch removes unused definition of struct sta_attribute in net/mac80211/ieee80211_i.h. Signed-off-by: Rami Rosen Acked-by: Johannes Berg Signed-off-by: John W. Linville commit 7a5158ef8da70fdedeb0530faaa8128aa645be3c Author: Johannes Berg Date: Wed Oct 8 10:59:33 2008 +0200 mac80211: fix short slot handling This patch makes mac80211 handle short slot requests from the AP properly. Also warn about uses of IEEE80211_CONF_SHORT_SLOT_TIME and optimise out the code since it cannot ever be hit anyway. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit e87a2feea75e3cba7af43ed9317b56b282d87742 Author: Johannes Berg Date: Tue Oct 7 12:04:35 2008 +0200 mac80211: remove max_antenna_gain config The antenna gain isn't exactly configurable, despite the belief of some unnamed individual who thinks that the EEPROM might influence it. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit d73782fdde76554016abf73b46f843b29f520848 Author: Johannes Berg Date: Tue Oct 7 12:04:34 2008 +0200 mac80211: clean up ieee80211_hw_config errors Warn when ieee80211_hw_config returns an error, it shouldn't happen; remove a number of printks that would happen in such a case and one printk that is user-triggerable. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 3db594380b8452eda4d88b12844077809607caaa Author: Johannes Berg Date: Tue Oct 7 12:04:33 2008 +0200 mac80211: remove wiphy_to_hw This isn't used by anyone, if we ever need it we can add it back, until then it's useless. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit c6a1fa12d206882757264869f8e32d606b930e2a Author: Johannes Berg Date: Tue Oct 7 12:04:32 2008 +0200 mac80211: minor code cleanups Nothing very interesting, some checkpatch inspired stuff, some other things. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit 36ff382d0065c9980c203c7cd3b3eb26251e9397 Author: Johannes Berg Date: Tue Oct 7 12:04:31 2008 +0200 mac80211: remove writable debugs mesh parameters These parameters shouldn't be configurable via debugfs, if they need to be configurable nl80211 support has to be added, if not then they don't need to be writable here either. Signed-off-by: Johannes Berg Cc: Javier Cardona Cc: Luis Carlos Cobo Signed-off-by: John W. Linville commit 804feeb826f8a32c8c71a09101fae31804b40ad1 Author: Johannes Berg Date: Tue Oct 7 12:04:30 2008 +0200 mac80211: remove aggregation status write support from debugfs This code uses static variables and thus cannot be kept. Signed-off-by: Johannes Berg Signed-off-by: John W. Linville commit b2bcc7b299f37037b4a78dc1538e5d6508ae8110 Author: Alok Kataria Date: Fri Oct 31 11:59:53 2008 -0700 x86: add a synthetic TSC_RELIABLE feature bit Impact: None, bit reservation only Add a synthetic TSC_RELIABLE feature bit which will be used to mark TSC as reliable so that we could skip all the runtime checks for TSC stablity, which have false positives in virtual environment. Signed-off-by: Alok N Kataria Signed-off-by: Dan Hecht Signed-off-by: H. Peter Anvin commit 3c3e9892a1dacca2ba9e05c196ab1ea99c544360 Author: Takashi Iwai Date: Fri Oct 31 17:48:56 2008 +0100 ALSA: hda - Re-add input-source control for Realtek Re-added again "Input Source" control that was removed mistakenly in the previous patchset. Signed-off-by: Takashi Iwai commit f9e336f65b666b8f1764d17e9b7c21c90748a37e Author: Takashi Iwai Date: Fri Oct 31 16:37:07 2008 +0100 ALSA: hda - Unify capture mixer creation in realtek codes Unified the capture mixer creation in patch_realtek.c. ALC268 is still an exception since it has no AMP in ADC but in MUX widget. Signed-off-by: Takashi Iwai commit 54cbc9abe57cf0a36619f394802448c62402599a Author: Takashi Iwai Date: Fri Oct 31 15:24:04 2008 +0100 ALSA: hda - Unify capture callbacks in realtek codes Unify the capture callbacks in patch_realtek.c. The difference of matrix or mux style is checked via spec->is_mix_capture flag. Signed-off-by: Takashi Iwai commit d88897eaea53f0fae62d528a24e76b8643082db3 Author: Takashi Iwai Date: Fri Oct 31 15:01:37 2008 +0100 ALSA: hda - Use macros to check array overflow Use macro to add mixer and verb elements to check the possible array overflow. Signed-off-by: Takashi Iwai commit afecd78cd2ec81512d6ec451906f71d9671a0b3b Merge: 1b063c3d090c45298a37ebc879c71379cf845d9c ee956e090e114ede6542c76a7465ed6ce118ad52 Author: Takashi Iwai Date: Fri Oct 31 17:24:01 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda commit 7b3b6e42032e94a6132a85642e95106f5346650e Merge: 04172c0b9ea5861e5cba7909da5297b3aedac9e1 0173a3265b228da319ceb9c1ec6a5682fd1b2d92 Author: Takashi Iwai Date: Fri Oct 31 17:13:10 2008 +0100 Merge commit 'v2.6.28-rc2' into topic/asoc commit 04172c0b9ea5861e5cba7909da5297b3aedac9e1 Merge: 5b99e6ccf964e733f0afe2b7bd09559a51a540ca 13d622b33dfbd99205a7add5751ba47445e480a6 Author: Takashi Iwai Date: Fri Oct 31 14:39:49 2008 +0100 Merge branch 'topic/fix/asoc' into topic/asoc commit 5b99e6ccf964e733f0afe2b7bd09559a51a540ca Author: Sedji Gaouaou Date: Fri Oct 3 16:58:58 2008 +0200 ASoC: Add audio support for the Atmel AT91SAM9G20ek board(uing wolfson 8731). Add audio support for the Atmel AT91SAM9G20ek board(uing wolfson 8731). It is based on the former eti_b1_wm8731.c file, using the atmel scc API. Signed-off-by: Sedji Gaouaou Signed-off-by: Mark Brown commit 6c7425095c9ee23d080dba3e27217a254cce4562 Author: Sedji Gaouaou Date: Fri Oct 3 16:57:50 2008 +0200 ASoC: Merge AT91 and AVR32 support into a single atmel architecture The Ateml AT91 and AVR32 SoC share common IP for audio and can share the same driver code using the atmel-ssc API provided for both architectures. Do this, creating a new unified atmel ASoC architecture to replace the previous at32 and at91 ones. [This was contributed as a patch series for reviewability but has been squashed down to a single commit to help preserve both the history and bisectability. A small bugfix from Jukka is included.] Tested-by: Jukka Hynninen Signed-off-by: Sedji Gaouaou Signed-off-by: Mark Brown commit dc06102a0c8b5aa0dd7f9a40ce241e793c252a87 Author: Steve Sakoman Date: Thu Oct 30 21:55:24 2008 -0700 ASoC: Add support for Beagleboard Signed-off-by: Steve Sakoman Signed-off-by: Mark Brown commit 4e207873736adc55cbf92796eb4f26f280f84034 Author: Steve Sakoman Date: Thu Oct 30 21:50:13 2008 -0700 ASoC: Add support for Gumstix Overo Signed-off-by: Steve Sakoman Signed-off-by: Mark Brown commit cc17557e7876a92e11d4b406a367d28e103e42e6 Author: Steve Sakoman Date: Thu Oct 30 21:35:26 2008 -0700 ASoC: Add support for TWL4030 audio codec Signed-off-by: Steve Sakoman Signed-off-by: Mark Brown commit a376f30a95a796cde81d6dffde0f5243c8bd8f92 Author: Zhaolei Date: Fri Oct 31 17:43:04 2008 +0800 x86: avoid duplicate running of pud_offset and pmd_offset in one_md_table_init() Impact: simplify implementation, cleanup If !(pgd_val(*pgd) & _PAGE_PRESENT) in PAE mode, we need not get value of pmd_table again. Signed-off-by: Zhao Lei Signed-off-by: Ingo Molnar commit a26a2a27396c0a0877aa701f8f92d08ba550a6c9 Author: Steven Rostedt Date: Fri Oct 31 00:03:22 2008 -0400 ftrace: nmi safe code clean ups Impact: cleanup This patch cleans up the NMI safe code for dynamic ftrace as suggested by Andrew Morton. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 9868ee63b896ee4d2ceb8c292e88d7f4e66caaf9 Author: Huang Ying Date: Fri Oct 31 09:48:15 2008 +0800 kexec/i386: setup kexec page table in C Impact: change the kexec bootstrap code implementation from assembly to C This patch transforms the kexec page tables setup code from assembler code to C code in machine_kexec_prepare. This improves readability and reduces code line number. Signed-off-by: Huang Ying Signed-off-by: Ingo Molnar commit 92be3d6bdf2cb34972ab50e12ad4da1076e690da Author: Huang Ying Date: Fri Oct 31 09:48:08 2008 +0800 kexec/i386: allocate page table pages dynamically Impact: save .text size when kexec is built in but not loaded This patch adds an architecture specific struct kimage_arch into struct kimage. The pointers to page table pages used by kexec are added to struct kimage_arch. The page tables pages are dynamically allocated in machine_kexec_prepare instead of statically from BSS segment. This will save up to 20k memory when kexec image is not loaded. Signed-off-by: Huang Ying Signed-off-by: Ingo Molnar commit 31498a01496ffca3b542bae72b8ec499cd9302db Author: Huang Ying Date: Fri Oct 31 09:48:02 2008 +0800 kexec/i386: remove PAGE_SIZE alignment from relocate_kernel Impact: save kernel .text by loosening kexec page alignment This patch removes PAGE_SIZE alignment from relocate_kernel(). Before kexec jump patches are merged, control page is mapped to relocate_kernel in kexec page tables, so relocate_kernel must be PAGE_SIZE aligned. Now, control page is mapped to identity mapped address, so relocate_kernel need not to be PAGE_SIZE aligned any more. This can reduce a few KB from kernel text segement. Signed-off-by: Huang Ying Signed-off-by: Ingo Molnar commit 3685f25de1b0447fff381c420de1e25bd57c9efb Author: Harvey Harrison Date: Fri Oct 31 00:56:49 2008 -0700 misc: replace NIPQUAD() Using NIPQUAD() with NIPQUAD_FMT, %d.%d.%d.%d or %u.%u.%u.%u can be replaced with %pI4 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit be859405487324ed548f1ba11dc949b8230ab991 Author: Harvey Harrison Date: Fri Oct 31 00:56:28 2008 -0700 fs: replace NIPQUAD() Using NIPQUAD() with NIPQUAD_FMT, %d.%d.%d.%d or %u.%u.%u.%u can be replaced with %pI4 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 63779436ab4ad0867bcea53bf853b0004d7b895d Author: Harvey Harrison Date: Fri Oct 31 00:56:00 2008 -0700 drivers: replace NIPQUAD() Using NIPQUAD() with NIPQUAD_FMT, %d.%d.%d.%d or %u.%u.%u.%u can be replaced with %pI4 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 21454aaad30651ba0dcc16fe5271bc12ee21f132 Author: Harvey Harrison Date: Fri Oct 31 00:54:56 2008 -0700 net: replace NIPQUAD() in net/*/ Using NIPQUAD() with NIPQUAD_FMT, %d.%d.%d.%d or %u.%u.%u.%u can be replaced with %pI4 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 14d5e834f6b36667c7da56374645f99b6cf30814 Author: Harvey Harrison Date: Fri Oct 31 00:54:29 2008 -0700 net: replace NIPQUAD() in net/netfilter/ Using NIPQUAD() with NIPQUAD_FMT, %d.%d.%d.%d or %u.%u.%u.%u can be replaced with %pI4 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 673d57e72398edfedc93fb50ff58048077c9d587 Author: Harvey Harrison Date: Fri Oct 31 00:53:57 2008 -0700 net: replace NIPQUAD() in net/ipv4/ net/ipv6/ Using NIPQUAD() with NIPQUAD_FMT, %d.%d.%d.%d or %u.%u.%u.%u can be replaced with %pI4 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit cffee385d7f367e80b288abf4261256477f7760e Author: Harvey Harrison Date: Fri Oct 31 00:53:08 2008 -0700 net: replace NIPQUAD() in net/ipv4/netfilter/ Using NIPQUAD() with NIPQUAD_FMT, %d.%d.%d.%d or %u.%u.%u.%u can be replaced with %pI4 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 77be155cba4e163e8bba9fd27222a8b6189ec4f7 Author: Jarek Poplawski Date: Fri Oct 31 00:47:01 2008 -0700 pkt_sched: Add peek emulation for non-work-conserving qdiscs. This patch adds qdisc_peek_dequeued() wrapper to emulate peek method with qdisc->dequeue() and storing "peeked" skb in qdisc->gso_skb until dequeuing. This is mainly for compatibility reasons not to break some strange configs because peeking is expected for non-work-conserving parent qdiscs to query work-conserving child qdiscs. This implementation requires using qdisc_dequeue_peeked() wrapper instead of directly calling qdisc->dequeue() for all qdiscs ever querried with qdisc->ops->peek() or qdisc_peek_dequeued(). Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 03c05f0d4bb0c267edf12d614025a40e33c5a6f9 Author: Jarek Poplawski Date: Fri Oct 31 00:46:19 2008 -0700 pkt_sched: Use qdisc->ops->peek() instead of ->dequeue() & ->requeue() Use qdisc->ops->peek() instead of ->dequeue() & ->requeue() pair. After this patch the only remaining user of qdisc->ops->requeue() is netem_enqueue(). Based on ideas of Herbert Xu, Patrick McHardy and David S. Miller. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 8e3af97899db433111287e07d5105189f56fe191 Author: Jarek Poplawski Date: Fri Oct 31 00:45:55 2008 -0700 pkt_sched: Add qdisc->ops->peek() implementation. Add qdisc->ops->peek() implementation for work-conserving qdiscs. With feedback from Patrick McHardy. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 99c0db26797edb39cf83c8c5f8972067f5426b4e Author: Jarek Poplawski Date: Fri Oct 31 00:45:27 2008 -0700 pkt_sched: sch_generic: Add generic qdisc->ops->peek() implementation. With feedback from Patrick McHardy. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 48a8f519e0fe22a5c98523286b2a120841a11dd5 Author: Patrick McHardy Date: Fri Oct 31 00:44:18 2008 -0700 pkt_sched: Add ->peek() methods for fifo, prio and SFQ qdiscs. From: Patrick McHardy Just as a demonstration how easy adding a peek operation to the work-conserving qdiscs actually is. It doesn't need to keep or change any internal state in many cases thanks to the guarantee that the packet will either be dequeued or, if another packet arrives, the upper qdisc will immediately ->peek again to reevaluate the state. (This is only slightly modified Patrick's patch.) Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit 90d841fd0a5e02affd4e2bbdde4f710c61599281 Author: Jarek Poplawski Date: Fri Oct 31 00:43:45 2008 -0700 pkt_sched: sch_generic: Add Qdisc_ops peek() method. Add Qdisc_ops peek() method in order to replace requeuing. Based on ideas and patches of Herbert Xu, Patrick McHardy and David S. Miller. Signed-off-by: Jarek Poplawski Signed-off-by: David S. Miller commit cc0fe83525d734bdd9c883b45eca6bb22f286daa Author: Alexey Dobriyan Date: Fri Oct 31 00:42:25 2008 -0700 xfrm: remove unused struct xfrm_policy::next Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit d5917a35ac0d8ebfb4a7d0db3b66054009bd4f37 Author: Alexey Dobriyan Date: Fri Oct 31 00:41:59 2008 -0700 xfrm: C99 for xfrm_dev_notifier Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit a1744d3bee19d3b9cbfb825ab316a101b9c9f109 Merge: 275f165fa970174f8a98205529750e8abb6c0a33 a432226614c5616e3cfd211e0acffa0acfb4770c Author: David S. Miller Date: Fri Oct 31 00:17:34 2008 -0700 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 Conflicts: drivers/net/wireless/p54/p54common.c commit 57b41898c2ecd13a9d338b66ef23f66caab5c4e9 Author: Stephen Rothwell Date: Fri Oct 31 14:41:06 2008 +1100 ALSA: ASoC - restore removed variable declaration sound/soc/soc-dapm.c: In function 'snd_soc_dapm_sys_add': sound/soc/soc-dapm.c:828: error: 'ret' undeclared (first use in this function) Signed-off-by: Stephen Rothwell Signed-off-by: Takashi Iwai commit 275f165fa970174f8a98205529750e8abb6c0a33 Author: Arjan van de Ven Date: Mon Oct 20 21:42:39 2008 -0700 pci: use pci_ioremap_bar() in drivers/net Use the newly introduced pci_ioremap_bar() function in drivers/net. pci_ioremap_bar() just takes a pci device and a bar number, with the goal of making it really hard to get wrong, while also having a central place to stick sanity checks. Signed-off-by: Arjan van de Ven Signed-off-by: Jeff Garzik commit 842e08bd6891bd78b4c3d2e0c4a94bebb32ab3ad Author: Atsushi Nemoto Date: Tue Oct 28 22:30:23 2008 +0900 tc35815: Define more Rx status bits Signed-off-by: Atsushi Nemoto Signed-off-by: Jeff Garzik commit 04ecb07241d8731b16490f10bec6ccedf5cfc792 Author: Divy Le Ray Date: Tue Oct 28 22:40:32 2008 -0700 cxgb3 - enable lro control through ethtool Implement ethtool's get_flags and set_flags methods. It enables ethtool to control the LRO settings. Signed-off-by: Divy Le Ray Signed-off-by: Jeff Garzik commit bc79fc8409b3dccbde072e8113cc1fb3fd876fc5 Author: Rafael J. Wysocki Date: Wed Oct 29 14:22:18 2008 -0700 e100: adapt to the reworked PCI PM Adapt the e100 driver to the reworked PCI PM * Use the observation that it is sufficient to call pci_enable_wake() once, unless it fails Signed-off-by: Rafael J. Wysocki Tested-by: Jeff Kirsher Acked-by: Jeff Kirsher Cc: Jesse Barnes Cc: Jeff Garzik Cc: Frans Pop Signed-off-by: Andrew Morton Signed-off-by: Jeff Garzik commit 6b1abbaefa31b84cc02bf4006ba8a63393de1136 Author: Adrian Bunk Date: Wed Oct 29 14:22:15 2008 -0700 The overdue eepro100 removal. Signed-off-by: Adrian Bunk Cc: Jeff Garzik Signed-off-by: Andrew Morton Signed-off-by: Jeff Garzik commit 5177b3240a6608fc0c9c05cc32f4855c6540f8d5 Author: Rafael J. Wysocki Date: Wed Oct 29 14:22:14 2008 -0700 skge: adapt skge to use reworked PCI PM Adapt the skge driver to the reworked PCI PM * Use device_set_wakeup_enable() and friends as needed * Remove an open-coded reference to the standard PCI PM registers * Use pci_prepare_to_sleep() and pci_back_from_sleep() in the ->suspend() and ->resume() callbacks * Use the observation that it is sufficient to call pci_enable_wake() once, unless it fails Tested on Asus L5D (Yukon-Lite rev 7). Signed-off-by: Rafael J. Wysocki Cc: Stephen Hemminger Cc: Jeff Garzik Cc: Jesse Barnes Signed-off-by: Andrew Morton Signed-off-by: Jeff Garzik commit b3acf29afda06c76774dc6df6246c37ae707836b Author: Steven Rostedt Date: Wed Oct 29 15:30:26 2008 -0400 ftrace, kbuild: condense recordmcount.pl parameter code Impact: cleanup Sam Ravnborg pointed out that I could condense the code for the parameters of recordmcount.pl by using an $(if ...) condition. Signed-off-by: Steven Rostedt Acked-by: Sam Ravnborg Signed-off-by: Ingo Molnar commit e1e302d8a9ab06ba8d7d5ec503d8996e6cf0eca4 Merge: 944ac4259e39801c843a915c3da8194ac9af0440 7f82f000ed030d1108b4de47d9e2d556092980c6 Author: Ingo Molnar Date: Fri Oct 31 00:38:21 2008 +0100 Merge branch 'linus' into tracing/ftrace commit c8db3fec5b02f4cefe441903fe1c142ff14e1771 Author: Eric Dumazet Date: Thu Oct 30 14:00:53 2008 -0700 udp: Should use spin_lock_bh()/spin_unlock_bh() in udp_lib_unhash() Spotted by Alexander Beregalov Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit b807c3d0f8e39ed7cbbbe6da162650e305e8de15 Author: Steven Rostedt Date: Thu Oct 30 16:08:33 2008 -0400 ftrace: nmi update statistics Impact: add more debug info to /debugfs/tracing/dyn_ftrace_total_info This patch adds dynamic ftrace NMI update statistics to the /debugfs/tracing/dyn_ftrace_total_info stat file. Signed-off-by: Steven Rostedt Cc: Peter Zijlstra Cc: Andrew Morton Cc: Linus Torvalds Cc: Steven Rostedt Signed-off-by: Ingo Molnar commit 17666f02b118099028522dfc3df00a235700e216 Author: Steven Rostedt Date: Thu Oct 30 16:08:32 2008 -0400 ftrace: nmi safe code modification Impact: fix crashes that can occur in NMI handlers, if their code is modified Modifying code is something that needs special care. On SMP boxes, if code that is being modified is also being executed on another CPU, that CPU will have undefined results. The dynamic ftrace uses kstop_machine to make the system act like a uniprocessor system. But this does not address NMIs, that can still run on other CPUs. One approach to handle this is to make all code that are used by NMIs not be traced. But NMIs can call notifiers that spread throughout the kernel and this will be very hard to maintain, and the chance of missing a function is very high. The approach that this patch takes is to have the NMIs modify the code if the modification is taking place. The way this works is that just writing to code executing on another CPU is not harmful if what is written is the same as what exists. Two buffers are used: an IP buffer and a "code" buffer. The steps that the patcher takes are: 1) Put in the instruction pointer into the IP buffer and the new code into the "code" buffer. 2) Set a flag that says we are modifying code 3) Wait for any running NMIs to finish. 4) Write the code 5) clear the flag. 6) Wait for any running NMIs to finish. If an NMI is executed, it will also write the pending code. Multiple writes are OK, because what is being written is the same. Then the patcher must wait for all running NMIs to finish before going to the next line that must be patched. This is basically the RCU approach to code modification. Thanks to Ingo Molnar for suggesting the idea, and to Arjan van de Ven for his guidence on what is safe and what is not. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 1cbd8b3fdcf56a3c39a7596512095c9e33221fa1 Author: Jan Beulich Date: Thu Oct 30 10:45:36 2008 +0000 x86: add two missing unwind annotations Impact: improve debuginfo Signed-off-by: Jan Beulich Signed-off-by: Ingo Molnar commit 8a1c8eb75be492e20003966652c9cd5ff57a559d Author: Aristeu Rozanski Date: Thu Oct 30 13:08:50 2008 -0400 x86, nmi-watchdog: update procfs nmi_watchdog file documentation v2 Impact: improve documentation This patch updates the /proc/sys/kernel/nmi_watchdog documentation. Updated: included Randy Dunlap's corrections. Signed-off-by: Aristeu Rozanski Acked-by: Randy Dunlap Signed-off-by: Ingo Molnar commit b062f841b569791d3054e975cd85f48562161565 Author: Cyrill Gorcunov Date: Thu Oct 30 19:16:46 2008 +0300 x86: nmi - add sensible names to nmi_watchdog boot param Impact: introduce nmi_watchdog=lapic and nmi_watchdog=ioapic aliases Add sensible names as "lapic" and "ioapic" to nmi_watchdog boot parameter. Sometimes it is not that easy to recall what exactly nmi_watchdog=1 does mean so we allow the using of symbolic names here. Old numeric values remain valid. Signed-off-by: Cyrill Gorcunov Signed-off-by: Ingo Molnar commit 7a5276889cfa96619bf863c87581005f46139986 Author: Jan Beulich Date: Thu Oct 30 10:38:24 2008 +0000 x86: simplify X86_MPPARSE config option Impact: cleanup Signed-off-by: Jan Beulich Signed-off-by: Ingo Molnar commit 0763722d28b7b58fa1f9b83d3378efcde855b18a Author: Takashi Iwai Date: Thu Oct 30 17:53:19 2008 +0100 ALSA: ASoC - Fix a typo in Kconfig The last change to Kconfig ca53fb24dd21bff32c4b41b2be1035a1adfc0135 added a wrong item SND_SOC_AC97, which must be SND_SOC_AC97_CODEC. Signed-off-by: Takashi Iwai commit 0c235d1e837c142b7565814318b6ba5917d5ac32 Author: Timur Tabi Date: Thu Aug 7 11:22:32 2008 -0500 ASoC: Disable automatic volume control in the CS4270 sound driver Disable the automatic volume control feature of the CS4270 audio codec. This feature, which is enabled by default, causes volume change commands to be delayed. Sometimes the volume change happens after playback is started. Signed-off-by: Timur Tabi Signed-off-by: Mark Brown commit ca53fb24dd21bff32c4b41b2be1035a1adfc0135 Author: Mark Brown Date: Wed Oct 22 22:41:11 2008 +0100 ASoC: Use finer grained dependencies in SND_SOC_ALL_CODECS Move the bus dependencies in SND_SOC_ALL_CODECS into the individual codec options rather than have them centrally. This allows the inclusion of AC97 codecs when testing on platforms with AC97 support and will also handle codecs on multi-function devices more gracefully. Signed-off-by: Mark Brown commit e775f6c0fb6ac25ab8845d4ad1e17b4b015487f0 Author: Mark Brown Date: Tue Oct 28 15:04:35 2008 +0000 ASoC: Do a warm reset after cold when resetting the WM9713 The WM9713 comes out of cold reset in low power mode so always requires a warm reset to bring up the AC97 link after a cold reset. Signed-off-by: Mark Brown commit 1b340bd7e444f20eb2df88c65fa34960c4736ee9 Author: Mark Brown Date: Wed Jul 30 19:12:04 2008 +0100 ASoC: Add PXA SSP support The SSP ports PXA series processors can be used to implement a variety of audio interface formats. This patch implements support for I2S, DSP A and DSP B modes on these ports. This patch is based on the previous out of tree pxa2xx-ssp driver (which was originally written by Liam Girdwood with updates from Philipp Zabel and Nicola Perrino) and pxa3xx-ssp driver (originally written by Seth Forsee based on the pxa2xx-ssp driver). Testing coverage is not complete currently. Tested-by: Daniel Ribeiro Signed-off-by: Mark Brown commit 8b6a5a37f87a414ef8636e36ec75accb27bb7508 Author: Eric Paris Date: Wed Oct 29 17:06:46 2008 -0400 SELinux: check open perms in dentry_open not inode_permission Some operations, like searching a directory path or connecting a unix domain socket, make explicit calls into inode_permission. Our choices are to either try to come up with a signature for all of the explicit calls to inode_permission and do not check open on those, or to move the open checks to dentry_open where we know this is always an open operation. This patch moves the checks to dentry_open. Signed-off-by: Eric Paris Acked-by: Stephen Smalley Signed-off-by: James Morris commit 219b93f5252086c8c8d647c77fc9e1377aab0c8d Author: Mark Brown Date: Tue Oct 28 13:02:31 2008 +0000 ASoC: Remove DAPM restriction on mixer control name lengths As well as ensuring that UI-relevant parts of control names don't get truncated in the DAPM code this avoids conflicts in long control names that differ only at the end of a long string. Signed-off-by: Mark Brown commit f24368c2fb524e911b831b86b5f0acfb38c70317 Author: Mark Brown Date: Tue Oct 21 21:45:08 2008 +0100 ASoC: Convert core to use standard debug print macros Signed-off-by: Mark Brown commit d45f6219d256b4e02f9ebee2e3911f4ea80bac70 Author: Mark Brown Date: Tue Oct 14 13:58:36 2008 +0100 ASoC: Fix handling of DAPM suspend work Since we can query the playback stream power state directly we do not need to infer if it is powered up from the timer being scheduled. Doing this avoids problems that previously existed with streams being incorrectly determined to be powered up caused when the timer is scheduled when streams are closed after being partially set up. Reported-by: Nobin Mathew Reported-by: Jukka Hynninen Signed-off-by: Mark Brown commit 12ef193d5817504621e503e78d641265f6a86ac4 Author: Troy Kisky Date: Mon Oct 13 17:42:14 2008 -0700 ASoC: Allow setting codec register with debugfs filesystem i.e. echo 6 59 >/sys/kernel/debug/soc-audio.0/codec_reg will set register 0x06 to a value of 0x59. Also, pop_time debugfs interface setup is moved so that it is setup in the same function as codec_reg Signed-off-by: Troy Kisky Signed-off-by: Mark Brown commit 57917752f51bcead3bb6c83d74137fbe342504ec Author: Hiroshi Shimamoto Date: Wed Oct 29 18:46:40 2008 -0700 x86: signal: cosmetic unification of NR_restart_syscall Impact: cleanup Add #ifdef directive to unify NR_restart_syscall. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit cabf503588961d202a33b3fd872767e9f6abbef7 Author: Hiroshi Shimamoto Date: Wed Oct 29 18:46:07 2008 -0700 x86: signal: cosmetic unification of macros for setup_rt_frame() Impact: cleanup Add #ifdef directive for unification. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 96bf84b71255b0ee4fcee91e9acd1b5e73030eaf Author: Hiroshi Shimamoto Date: Wed Oct 29 18:44:08 2008 -0700 x86: signal: cosmetic unification of signr_convert() Impact: cleanup Make signr_convert() same. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 34f3a814eef8069a24e5b3ebcf27aba9dabac2ea Author: Li Zefan Date: Thu Oct 30 15:23:32 2008 +0800 sched: switch sched_features to seqfile Impact: cleanup So handling of sched_features read is simplified. Signed-off-by: Li Zefan Acked-by: Peter Zijlstra Signed-off-by: Ingo Molnar commit 8cf14e38372d84ea09ba45fb60b61f6e36c18546 Author: Harvey Harrison Date: Wed Oct 29 22:43:33 2008 -0700 net: easy removals of HIPQUAD using %pI4 format As a bonus, removes some unnecessary byteswapping. Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 9edb8bb68b5ea63061ba833831b00c229ac9fbd2 Author: Stephen Hemminger Date: Wed Oct 29 15:31:53 2008 -0700 macvlan: add support for ethtool get settings If macvlan's are used, it is useful to propgate speed and other settings from underlying device up for application usage. Signed-off-by: Stephen Hemminger Acked-by: Patrick McHardy Signed-off-by: David S. Miller commit 6b9a1066f8d4c57c1b778affd91fc38e1121b6f8 Author: Harvey Harrison Date: Wed Oct 29 12:53:10 2008 -0700 printk: remove %p6 format specifier, fix up comments Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 5b095d98928fdb9e3b75be20a54b7a6cbf6ca9ad Author: Harvey Harrison Date: Wed Oct 29 12:52:50 2008 -0700 net: replace %p6 with %pI6 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 4b7a4274ca63dadd9c4f17fc953f3a5d19855c4c Author: Harvey Harrison Date: Wed Oct 29 12:50:24 2008 -0700 net: replace %#p6 format specifier with %pi6 gcc warns when using the # modifier with the %p format specifier, so we can't use this to omit the colons when needed, introduces %pi6 instead. Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 4aa996066ffc0dba24036c961ee38dfdfbfc061c Author: Harvey Harrison Date: Wed Oct 29 12:49:58 2008 -0700 printk: add %I4, %I6, %i4, %i6 format specifiers For use in printing IPv4, or IPv6 addresses in the usual way: %i4 and %I4 are currently equivalent and print the address in dot-separated decimal x.x.x.x %I6 prints 16-bit network order hex with colon separators: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx %i6 omits the colons. Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 96631ed16c514cf8b28fab991a076985ce378c26 Author: Eric Dumazet Date: Wed Oct 29 11:19:58 2008 -0700 udp: introduce sk_for_each_rcu_safenext() Corey Minyard found a race added in commit 271b72c7fa82c2c7a795bc16896149933110672d (udp: RCU handling for Unicast packets.) "If the socket is moved from one list to another list in-between the time the hash is calculated and the next field is accessed, and the socket has moved to the end of the new list, the traversal will not complete properly on the list it should have, since the socket will be on the end of the new list and there's not a way to tell it's on a new list and restart the list traversal. I think that this can be solved by pre-fetching the "next" field (with proper barriers) before checking the hash." This patch corrects this problem, introducing a new sk_for_each_rcu_safenext() macro. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit f52b5054ec108aaa9e903850d6b62af8ae3fe6ae Author: Eric Dumazet Date: Wed Oct 29 11:19:11 2008 -0700 udp: udp_get_next() should use spin_unlock_bh() Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit e78a37bc7776955a142317b622818962c3ee75dd Author: Takashi Iwai Date: Wed Oct 29 16:08:01 2008 +0100 ALSA: Fix a typo in Kconfig The previous commit bbaf5e97337287479eb78dbc3822d9560bbfd2e2 has an obvious typo. Fixed now. Signed-off-by: Takashi Iwai commit 9cbbb3ac628227ec5b65fc043539949db606cd17 Author: Jaroslav Kysela Date: Wed Oct 29 13:41:35 2008 +0100 ALSA: Release v1.0.18 Signed-off-by: Jaroslav Kysela Signed-off-by: Takashi Iwai commit eab172294d5e24464f332dd8e94a57a9819c81c4 Author: Li Zefan Date: Wed Oct 29 17:03:22 2008 +0800 sched: cleanup for alloc_rt/fair_sched_group() Impact: cleanup Remove checking parent == NULL. It won't be NULLL, because we dynamically create sub task_group only, and sub task_group always has its parent. (root task_group is statically defined) Also replace kmalloc_node(GFP_ZERO) with kzalloc_node(). Signed-off-by: Li Zefan Signed-off-by: Ingo Molnar commit 8203efb3c612743fecb1ed67cf1daf9d9c127462 Author: Eric Dumazet Date: Wed Oct 29 02:32:32 2008 -0700 udp: calculate udp_mem based on low memory instead of all memory This patch mimics commit 57413ebc4e0f1e471a3b4db4aff9a85c083d090e (tcp: calculate tcp_mem based on low memory instead of all memory) The udp_mem array which contains limits on the total amount of memory used by UDP sockets is calculated based on nr_all_pages. On a 32 bits x86 system, we should base this on the number of lowmem pages. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 271b72c7fa82c2c7a795bc16896149933110672d Author: Eric Dumazet Date: Wed Oct 29 02:11:14 2008 -0700 udp: RCU handling for Unicast packets. Goals are : 1) Optimizing handling of incoming Unicast UDP frames, so that no memory writes should happen in the fast path. Note: Multicasts and broadcasts still will need to take a lock, because doing a full lockless lookup in this case is difficult. 2) No expensive operations in the socket bind/unhash phases : - No expensive synchronize_rcu() calls. - No added rcu_head in socket structure, increasing memory needs, but more important, forcing us to use call_rcu() calls, that have the bad property of making sockets structure cold. (rcu grace period between socket freeing and its potential reuse make this socket being cold in CPU cache). David did a previous patch using call_rcu() and noticed a 20% impact on TCP connection rates. Quoting Cristopher Lameter : "Right. That results in cacheline cooldown. You'd want to recycle the object as they are cache hot on a per cpu basis. That is screwed up by the delayed regular rcu processing. We have seen multiple regressions due to cacheline cooldown. The only choice in cacheline hot sensitive areas is to deal with the complexity that comes with SLAB_DESTROY_BY_RCU or give up on RCU." - Because udp sockets are allocated from dedicated kmem_cache, use of SLAB_DESTROY_BY_RCU can help here. Theory of operation : --------------------- As the lookup is lockfree (using rcu_read_lock()/rcu_read_unlock()), special attention must be taken by readers and writers. Use of SLAB_DESTROY_BY_RCU is tricky too, because a socket can be freed, reused, inserted in a different chain or in worst case in the same chain while readers could do lookups in the same time. In order to avoid loops, a reader must check each socket found in a chain really belongs to the chain the reader was traversing. If it finds a mismatch, lookup must start again at the begining. This *restart* loop is the reason we had to use rdlock for the multicast case, because we dont want to send same message several times to the same socket. We use RCU only for fast path. Thus, /proc/net/udp still takes spinlocks. Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 645ca708f936b2fbeb79e52d7823e3eb2c0905f8 Author: Eric Dumazet Date: Wed Oct 29 01:41:45 2008 -0700 udp: introduce struct udp_table and multiple spinlocks UDP sockets are hashed in a 128 slots hash table. This hash table is protected by *one* rwlock. This rwlock is readlocked each time an incoming UDP message is handled. This rwlock is writelocked each time a socket must be inserted in hash table (bind time), or deleted from this table (close time) This is not scalable on SMP machines : 1) Even in read mode, lock() and unlock() are atomic operations and must dirty a contended cache line, shared by all cpus. 2) A writer might be starved if many readers are 'in flight'. This can happen on a machine with some NIC receiving many UDP messages. User process can be delayed a long time at socket creation/dismantle time. This patch prepares RCU migration, by introducing 'struct udp_table and struct udp_hslot', and using one spinlock per chain, to reduce contention on central rwlock. Introducing one spinlock per chain reduces latencies, for port randomization on heavily loaded UDP servers. This also speedup bindings to specific ports. udp_lib_unhash() was uninlined, becoming to big. Some cleanups were done to ease review of following patch (RCUification of UDP Unicast lookups) Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 1b063c3d090c45298a37ebc879c71379cf845d9c Merge: d301fc320f3e673a49200d9ce51036caa9abd768 c1e99bd9d6a0c82f4fa9078ed1f570e57b2f3944 Author: Takashi Iwai Date: Wed Oct 29 08:17:05 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda commit d301fc320f3e673a49200d9ce51036caa9abd768 Author: Takashi Iwai Date: Wed Oct 29 08:15:30 2008 +0100 ALSA: hda - Fix indentation in hda_local.h Just cosmetic fixes of spacing that annoyed me. Signed-off-by: Takashi Iwai commit b189db5d299c6824780af5590564ff608adb3dea Author: Harvey Harrison Date: Tue Oct 28 22:38:52 2008 -0700 net: remove NIP6(), NIP6_FMT, NIP6_SEQFMT and final users Open code NIP6_FMT in the one call inside sscanf and one user of NIP6() that could use %p6 in the netfilter code. Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit a20fd0a783551831bb6b9b69710e5bbb93dc2730 Author: Harvey Harrison Date: Tue Oct 28 22:38:06 2008 -0700 uwb: use the %pM formatting specifier in eda.c Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 8c165a8383ef56e84b541fa638be5cf1440010e7 Author: Harvey Harrison Date: Tue Oct 28 22:37:41 2008 -0700 infiniband: remove IPOIB_GID_RAW_ARG, IPOIB_GID_ARG, IPOIB_GID_FMT Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit fcace2fe7a86237c451b09aaf7e2e9d19e09887f Author: Harvey Harrison Date: Tue Oct 28 22:37:22 2008 -0700 infiniband: ipoib replace IPOIB_GID_FMT with %p6 Replace all uses of IPOIB_GID_FMT, IPOIB_GID_RAW_ARG() and IPOIB_GID_ARG() Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 8867cd7c8678ff2d9d0382dbbfbcc7a3e7e61cbc Author: Harvey Harrison Date: Tue Oct 28 22:36:33 2008 -0700 infiniband: use %p6 for printing message ids Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit b30200616f97a81243e6d0c644d8ab06bf0b8115 Author: Stephen Hemminger Date: Tue Oct 28 22:12:36 2008 -0700 vlan: propogate ethtool speed values This enables more ethtool information. The speed and settings of the underlying device are propagated up. This makes services like SNMP that use ethtool to get speed setting, work when managing a vlan, without adding silly heurtistics into SNMP daemon. For the driver info, just use existing driver strings. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller commit 3717746ef8b5a9279281b5d318496710984ed739 Author: Daniel Lezcano Date: Tue Oct 28 22:08:46 2008 -0700 veth: remove unused list The veth network device is stored in a list in the netdev private. AFAICS, this list is never used so I removed this list from the code. Signed-off-by: Daniel Lezcano Signed-off-by: David S. Miller commit bb7bba3d56963be59bc6764c8021290ed55205ad Author: Daniel Lezcano Date: Tue Oct 28 22:08:19 2008 -0700 veth: Remove useless veth field The veth private structure contains a netdev pointer refering to its peer. This field is never used and it is pointless because if we can access, the veth_priv, that means we already have the netdev which is stored in veth_priv->dev. Signed-off-by: Daniel Lezcano Signed-off-by: David S. Miller commit fdb46ee752ed05c94bac71fe3decdb5175ec6e1f Author: Harvey Harrison Date: Tue Oct 28 16:10:17 2008 -0700 net, misc: replace uses of NIP6_FMT with %p6 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 0c6ce78abf6e228d44c3840edb8a4ae0c1299825 Author: Harvey Harrison Date: Tue Oct 28 16:09:23 2008 -0700 net: replace uses of NIP6_FMT with %p6 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 38ff4fa49bef77e86b21d95d9ce341a098f02839 Author: Harvey Harrison Date: Tue Oct 28 16:08:13 2008 -0700 netfilter: replace uses of NIP6_FMT with %p6 Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 1afa67f5e70b4733d5b237df61e6d639af6283bb Author: Harvey Harrison Date: Tue Oct 28 16:06:44 2008 -0700 misc: replace NIP6_FMT with %p6 format specifier The iscsi_ibft.c changes are almost certainly a bugfix as the pointer 'ip' is a u8 *, so they never print the last 8 bytes of the IPv6 address, and the eight bytes they do print have a zero byte with them in each 16-bit word. Other than that, this should cause no difference in functionality. Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit b071195deba14b37ce896c26f20349b46e5f9fd2 Author: Harvey Harrison Date: Tue Oct 28 16:05:40 2008 -0700 net: replace all current users of NIP6_SEQFMT with %#p6 The define in kernel.h can be done away with at a later time. Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 689afa7da106032a3e859ae35494f80dd6eac640 Author: Harvey Harrison Date: Tue Oct 28 16:04:44 2008 -0700 printk: add %p6 format specifier for IPv6 addresses Takes a pointer to a IPv6 address and formats it in the usual colon-separated hex format: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx Each 16 bit word is printed in network-endian byteorder. %#p6 is also supported and will omit the colons. %p6 is a replacement for NIP6_FMT and NIP6() %#p6 is a replacement for NIP6_SEQFMT and NIP6() Note that NIP6() took a struct in6_addr whereas this takes a pointer to a struct in6_addr. Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 3a2dfbe8acb154905fdc2fd03ec56df42e6c4cc4 Author: Martin Willi Date: Tue Oct 28 16:01:07 2008 -0700 xfrm: Notify changes in UDP encapsulation via netlink Add new_mapping() implementation to the netlink xfrm_mgr to notify address/port changes detected in UDP encapsulated ESP packets. Signed-off-by: Martin Willi Signed-off-by: David S. Miller commit 93adcc80f3288f1827baf6f821af818f6eeef7f9 Author: Alexey Dobriyan Date: Tue Oct 28 13:25:09 2008 -0700 net: don't use INIT_RCU_HEAD call_rcu() will unconditionally rewrite RCU head anyway. Applies to struct neigh_parms struct neigh_table struct net struct cipso_v4_doi struct in_ifaddr struct in_device rt->u.dst Signed-off-by: Alexey Dobriyan Acked-by: Paul E. McKenney Signed-off-by: David S. Miller commit def8b4faff5ca349beafbbfeb2c51f3602a6ef3a Author: Alexey Dobriyan Date: Tue Oct 28 13:24:06 2008 -0700 net: reduce structures when XFRM=n ifdef out * struct sk_buff::sp (pointer) * struct dst_entry::xfrm (pointer) * struct sock::sk_policy (2 pointers) Signed-off-by: Alexey Dobriyan Signed-off-by: David S. Miller commit b057efd4d226fcc3a92b0dc6d8ea8e8185ecb260 Author: Patrick McHardy Date: Tue Oct 28 11:59:11 2008 -0700 netlink: constify struct nlattr * arg to parsing functions Signed-off-by: Patrick McHardy Signed-off-by: David S. Miller commit ad38dab01323a01e825555fc46863b73cd0efdc7 Author: Harvey Harrison Date: Mon Oct 27 13:30:56 2008 -0700 x86: use the new byteorder headers Impact: cleanup, no functionality changed Signed-off-by: Harvey Harrison Signed-off-by: Ingo Molnar commit d4f1b10365d4f03dd802433e0014cf503e6e930c Author: Jike Song Date: Fri Oct 17 13:25:07 2008 +0800 x86: clean up comments wrt. rd{msr|tsc|pmc} The rdmsr instruction(et al) for i386 and x86-64 are semantically same. The only difference is how gcc interpret constraint "A" for these targets. Signed-off-by: Jike Song Signed-off-by: Ingo Molnar commit 2011a067281565494494aee194ca5081e52d6c3f Merge: 63fb70859f987f2b3b8028fa467fd63336315e9c 0173a3265b228da319ceb9c1ec6a5682fd1b2d92 Author: Ingo Molnar Date: Tue Oct 28 16:46:59 2008 +0100 Merge commit 'v2.6.28-rc2' into x86/doc commit 30604bb410b53efa9c93ee8f03d7aa7494094faa Author: Yinghai Lu Date: Tue Oct 14 18:59:18 2008 -0700 x86: break up mtrr_cleanup() into several small functions. Ingo said mtrr_cleanup() is big and ugly. so break it up into more functions and make it more readable. Signed-off-by: Yinghai Lu Signed-off-by: Ingo Molnar commit 7a9787e1eba95a166265e6a260cf30af04ef0a99 Merge: 41b9eb264c8407655db57b60b4457fe1b2ec9977 0173a3265b228da319ceb9c1ec6a5682fd1b2d92 Author: Ingo Molnar Date: Tue Oct 28 16:26:12 2008 +0100 Merge commit 'v2.6.28-rc2' into x86/pci-ioapic-boot-irq-quirks commit 163d4c53e3efb457eee96f7487ba3baef2be7796 Merge: 34c25350acfc792747e861d1e36874abf7e73255 e044c39ae258678d6ebb09fccb2a0fdf7ec51847 Author: Takashi Iwai Date: Tue Oct 28 11:44:45 2008 +0100 Merge branch 'topic/fix/hda' into topic/hda commit 34c25350acfc792747e861d1e36874abf7e73255 Author: Takashi Iwai Date: Tue Oct 28 11:38:58 2008 +0100 ALSA: hda - Remove old codec-probe limitation Removed the old workaround to avoid the non-existing codec slot. The current code should work without that workaround. If any, we can add a quirk table. Signed-off-by: Takashi Iwai commit 15ad9a531a64d46af54839ab13542a81ad4c82a5 Merge: 911fc25dda145f4f7313535466eec0c9f4a51ea1 c3e5203bed1999df716e3c7119f6749523eb952f Author: Takashi Iwai Date: Tue Oct 28 11:41:18 2008 +0100 Merge branch 'topic/fix/asoc' into topic/asoc commit 3891845e1ef6e6807075d4241966b26f6ecb0a5c Author: Eric W. Biederman Date: Mon Oct 27 17:51:47 2008 -0700 netns: Coexist with the sysfs limitations v2 To make testing of the network namespace simpler allow the network namespace code and the sysfs code to be compiled and run at the same time. To do this only virtual devices are allowed in the additional network namespaces and those virtual devices are not placed in the kobject tree. Since virtual devices don't actually do anything interesting hardware wise that needs device management there should be no loss in keeping them out of the kobject tree and by implication sysfs. The gain in ease of testing and code coverage should be significant. Changelog: v2: As pointed out by Benjamin Thery it only makes sense to call device_rename in the initial network namespace for now. Signed-off-by: Eric W. Biederman Acked-by: Benjamin Thery Tested-by: Serge Hallyn Acked-by: Serge Hallyn Acked-by: Daniel Lezcano Signed-off-by: David S. Miller commit 7c510e4b730a92cecf94ada45c989d8be0200d47 Author: Johannes Berg Date: Mon Oct 27 17:47:26 2008 -0700 net: convert more to %pM A number of places still use %02x:...:%02x because it's in debug statements or for no real reason. Make a few of them use %pM. Signed-off-by: Johannes Berg Signed-off-by: David S. Miller commit e174961ca1a0b28f7abf0be47973ad57cb74e5f0 Author: Johannes Berg Date: Mon Oct 27 15:59:26 2008 -0700 net: convert print_mac to %pM This converts pretty much everything to print_mac. There were a few things that had conflicts which I have just dropped for now, no harm done. I've built an allyesconfig with this and looked at the files that weren't built very carefully, but it's a huge patch. Signed-off-by: Johannes Berg Signed-off-by: David S. Miller commit 0c68ae2605dbcf67414d8d1f19af93be44b355fb Author: Johannes Berg Date: Mon Oct 27 15:56:10 2008 -0700 mac80211: convert to %pM away from print_mac Also remove a few stray DECLARE_MAC_BUF that were no longer used at all. Signed-off-by: Johannes Berg Signed-off-by: David S. Miller commit dd45c9cf687682c9ce256ab14bd8914db77410bb Author: Harvey Harrison Date: Mon Oct 27 15:47:12 2008 -0700 printk: add %pM format specifier for MAC addresses Add format specifiers for printing out six colon-separated bytes: MAC addresses (%pM): xx:xx:xx:xx:xx:xx %#pM is also supported and omits the colon separators. Signed-off-by: Harvey Harrison Signed-off-by: David S. Miller commit 1080d709fb9d8cd4392f93476ee46a9d6ea05a5b Author: Neil Horman Date: Mon Oct 27 12:28:25 2008 -0700 net: implement emergency route cache rebulds when gc_elasticity is exceeded This is a patch to provide on demand route cache rebuilding. Currently, our route cache is rebulid periodically regardless of need. This introduced unneeded periodic latency. This patch offers a better approach. Using code provided by Eric Dumazet, we compute the standard deviation of the average hash bucket chain length while running rt_check_expire. Should any given chain length grow to larger that average plus 4 standard deviations, we trigger an emergency hash table rebuild for that net namespace. This allows for the common case in which chains are well behaved and do not grow unevenly to not incur any latency at all, while those systems (which may be being maliciously attacked), only rebuild when the attack is detected. This patch take 2 other factors into account: 1) chains with multiple entries that differ by attributes that do not affect the hash value are only counted once, so as not to unduly bias system to rebuilding if features like QOS are heavily used 2) if rebuilding crosses a certain threshold (which is adjustable via the added sysctl in this patch), route caching is disabled entirely for that net namespace, since constant rebuilding is less efficient that no caching at all Tested successfully by me. Signed-off-by: Neil Horman Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller commit 69a72a0e9337aad8c730e8e9942d5aa022bc4c5c Author: Mike Travis Date: Mon Oct 27 07:51:20 2008 -0700 x86/uv: update SCIR driver to use the idle_cpu() function Impact: cleanup Change UV heartbeat function to use idle_cpu to determine cpu's "idleness". Realign uv_hub definitions. Signed-of-by: Mike Travis Signed-off-by: Ingo Molnar commit 878719e831d9e076961aa15d4049a57a6668c67a Author: Neil Horman Date: Thu Oct 23 10:40:06 2008 -0400 x86: unify appropriate bits from dumpstack_32 and dumpstack_64 Impact: cleanup As promised, now that dumpstack_32 and dumpstack_64 have so many bits in common, we should merge the in-sync bits into a common file, to prevent them from diverging again. This patch removes bits which are common between dumpstack_32.c and dumpstack_64.c and places them in a common dumpstack.c which is built for both 32 and 64 bit arches. Signed-off-by: Neil Horman Acked-by: Alexander van Heukelum Signed-off-by: Ingo Molnar Makefile | 2 arch/x86/kernel/Makefile | 2 arch/x86/kernel/Makefile | 2 arch/x86/kernel/Makefile | 2 arch/x86/kernel/Makefile | 2 arch/x86/kernel/Makefile | 2 arch/x86/kernel/dumpstack.c | 319 +++++++++++++++++++++++++++++++++++++++++ arch/x86/kernel/dumpstack.h | 39 +++++ arch/x86/kernel/dumpstack_32.c | 294 ------------------------------------- arch/x86/kernel/dumpstack_64.c | 285 ------------------------------------ 5 files changed, 363 insertions(+), 576 deletions(-) commit 7d5a78cd98c3a5eb83bd6a061c5ea6ef1e9b8fcb Author: Aristeu Rozanski Date: Mon Oct 27 12:42:35 2008 -0400 x86, NMI watchdog: disable NMIs on LVT0 in case NMI watchdog is not working Impact: change NMI watchdog detection and disabling sequence Currently, if the NMI watchdog fails using IOAPIC method, it'll only disable interrupts on 8259 if the timer is passing thru it. This patch disables NMI delivery on LINT0 if the NMI watchdog initial test fails, just for safety. Signed-off-by: Aristeu Rozanski Cc: "Maciej W. Rozycki" Signed-off-by: Ingo Molnar commit 6f290b4e016d6c61511542cf6d9ebdef1965978e Author: Aristeu Rozanski Date: Mon Oct 27 12:42:34 2008 -0400 x86, NMI watchdog: add support to enable and disable IOAPIC NMI Impact: change/improve the way /proc/sys/kernel/nmi_watchdog works This patch adds support to enable/disable IOAPIC NMI watchdog in runtime via procfs. Signed-off-by: Aristeu Rozanski Cc: "Maciej W. Rozycki" Signed-off-by: Ingo Molnar commit b43d196c4d3fe46d6dda7c987c47792612b80b1b Author: Arjan van de Ven Date: Sun Oct 5 12:21:32 2008 -0700 x86: corruption-check: some post-move cleanups Impact: cleanup now that the code is moved and converted to a work queue, there's some minor cleanups that can be done. Signed-off-by: Arjan van de Ven Signed-off-by: Ingo Molnar commit 304e629bf4a3150a0bf6556fc45c52c5c082340f Author: Arjan van de Ven Date: Sun Oct 5 12:09:03 2008 -0700 x86: corruption check: run the corruption checks from a work queue Impact: change the implementation of the debug feature the periodic corruption checks are better off run from a work queue; there's nothing time critical about them and this way the amount of interrupt-context work is reduced. Signed-off-by: Arjan van de Ven Signed-off-by: Ingo Molnar commit 6784f7d0a5016a397d38be1134e63fc784c1ca8e Author: Arjan van de Ven Date: Sun Oct 5 11:33:42 2008 -0700 x86: corruption check: move the corruption checks into their own file Impact: cleanup The corruption check code is rather sizable and it's likely to grow over time when we add checks for more types of corruptions (there's a few candidates in kerneloops.org that I want to add checks for)... so lets move it to its own file Signed-off-by: Arjan van de Ven Signed-off-by: Ingo Molnar commit 04d2aac33eb54fd3084140f2db130530d71e97c6 Author: Arjan van de Ven Date: Sun Oct 5 11:08:10 2008 -0700 x86: corruption-check: fix some style issues Impact: cleanup Before moving the code to it's own file, fix some style issues in the corruption check code. Signed-off-by: Arjan van de Ven Signed-off-by: Ingo Molnar commit 944ac4259e39801c843a915c3da8194ac9af0440 Author: Steven Rostedt Date: Thu Oct 23 19:26:08 2008 -0400 ftrace: ftrace dump on oops control Impact: add (default-off) dump-trace-on-oops flag Currently, ftrace is set up to dump its contents to the console if the kernel panics or oops. This can be annoying if you have trace data in the buffers and you experience an oops, but the trace data is old or static. Usually when you want ftrace to dump its contents is when you are debugging your system and you have set up ftrace to trace the events leading to an oops. This patch adds a control variable called "ftrace_dump_on_oops" that will enable the ftrace dump to console on oops. This variable is default off but a developer can enable it either through the kernel command line by adding "ftrace_dump_on_oops" or at run time by setting (or disabling) /proc/sys/kernel/ftrace_dump_on_oops. v2: Replaced /** with /* as Randy explained that kernel-doc does not yet handle variables. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar commit c63dfefd48d92b1db3400fe8de4886a519ac3949 Author: Dan McGee Date: Thu Oct 23 15:44:02 2008 -0500 x86: remove dead IRQBALANCE code Impact: cleanup CONFIG_IRQBALANCE was removed in commit 8b8e8c1bf; this ifdef was still around. Signed-off-by: Dan McGee Signed-off-by: Ingo Molnar commit fd4a2030a358b4818646031049d9631bd45b9915 Author: Hiroshi Shimamoto Date: Thu Oct 23 17:15:28 2008 -0700 x86: signal_64.c: get_stack() doesn't need entire regs Impact: cleanup get_stack() uses sp only, entire regs is not needed. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit 709110bd5624094992579f5311541f2e2b7ce58a Author: Hiroshi Shimamoto Date: Thu Oct 23 17:14:25 2008 -0700 x86: signal: cosmetic unification of restore_sigcontext() Impact: cleanup Make restore_sigcontext() the same. Signed-off-by: Hiroshi Shimamoto Signed-off-by: Ingo Molnar commit fd3fdf11d3c649769e02459c5f1b8081a15e9007 Author: Pekka Paalanen Date: Fri Oct 24 20:08:11 2008 +0300 trace: add the MMIO-tracer to the tracer menu, cleanup Impact: cleanup We can remove MMIOTRACE_HOOKS and replace it with just MMIOTRACE. MMIOTRACE_HOOKS is a remnant from the time when I thought that something else could also use the kmmio facilities. Signed-off-by: Pekka Paalanen Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 5d9881ea1440f046ee851bbaa2a2962543336a11 Author: Zhaolei Date: Wed Oct 22 11:38:01 2008 +0800 markers: break the redundant loop in kernel/marker.c Impact: cleanup, no functionality changed Because e->name is unique in list, we don't need to continue the iteration after matched. Signed-off-by: Zhao Lei Acked-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 4de62748e69c31fc4fd5bc43b73e9cf60a17ec53 Author: Lai Jiangshan Date: Wed Oct 15 14:56:47 2008 +0800 markers: let marker_table be close to its comments marker_table is defined far from its comments, this fix make cleanup for it. Signed-off-by: Lai Jiangshan Acked-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 505e371da195fad20cb8aaf45407a2849774d6d0 Author: Lai Jiangshan Date: Wed Oct 15 14:56:42 2008 +0800 markers: remove exported symbol marker_probe_cb_noarg() marker_probe_cb_noarg() should not be seen by outer code. this patch remove it. Signed-off-by: Lai Jiangshan Acked-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 0eec481e8fb000a209fda9bf8f466aca87dc1150 Author: Lai Jiangshan Date: Wed Oct 15 14:56:37 2008 +0800 markers: simplify marker_set_format() current marker_set_format() is complex this patch simplify it, and decrease the overhead of marker_update_probes(). Signed-off-by: Lai Jiangshan Acked-by: Mathieu Desnoyers Signed-off-by: Ingo Molnar commit 7f1baa063e2582dd52d83bb31508e9e84468c666 Author: Mike Travis Date: Fri Oct 24 15:24:29 2008 -0700 x86/uv: provide a System Activity Indicator driver Impact: start per CPU heartbeat LED timers on SGI UV systems The SGI UV system has no LEDS but uses one of the system controller regs to indicate the online internal state of the cpu. There is a heartbeat bit indicating that the cpu is responding to interrupts, and an idle bit indicating whether the cpu is idle when the heartbeat interrupt occurs. The current period is one second. When a cpu panics, an error code is written by BIOS to this same reg. This patchset provides the following: * x86_64: Add base functionality for writing to the specific SCIR's for each cpu. * heartbeat: Invert "heartbeat" bit to indicate the cpu is "interruptible". If the current thread is the idle thread, then indicate system is "idle". * if hotplug enabled, all bits are set (0xff) when the cpu is disabled. Signed-off-by: Mike Travis Signed-off-by: Ingo Molnar commit 5292ae11babca23c3ff82593630d2d7eebc350a9 Merge: b0f209898f1a177bd503d49215b8c6628797a81c 0173a3265b228da319ceb9c1ec6a5682fd1b2d92 Author: Ingo Molnar Date: Mon Oct 27 12:38:02 2008 +0100 Merge commit 'v2.6.28-rc2' into x86/uv commit f4a2a0d9a4226846693b5b4462d4350c1bfd58ea Author: Frederic Weisbecker Date: Mon Oct 27 02:05:25 2008 +0100 ftrace: add a script to produce a hierarchical view of a function trace This script parses a function trace and then produces a hierarchical view of the function call stack after processing it into a tree. Changes on V2 thanks to the trace sent by Steven: - Support both the files "trace" and "trace_pipe" (comments and space differences) - Correct the mini HOW-TO at the beginning. Signed-off-by: Frederic Weisbecker Acked-by: Steven Rostedt Signed-off-by: Ingo Molnar commit 8479d94e9f6a44b5050cbacf653272a561fbe0d0 Author: Mikael Pettersson Date: Mon Oct 27 09:30:57 2008 +0100 x86, signals: remove duplicated register setup code in ia32 signal delivery Impact: cleanup, no functionality changed ia32_setup_rt_frame() has a duplicated code block labelled "Make -mregparm=3 work" for setting up the register parameters to the user-mode signal handler. This is harmless but ugly. Remove the redundant assignments. Signed-off-by: Mikael Pettersson Signed-off-by: Ingo Molnar commit 4fc85e451ff5e9b6ccd7f5cac7f65684755370e2 Merge: 9f50bbad8fc3b0f9fd453ab1e2716b3106d89b13 67679b1fd166da8398e70b7dbffe12cfccf9c7bf Author: Takashi Iwai Date: Mon Oct 27 08:50:43 2008 +0100 Merge branch 'topic/misc-next' into topic/misc commit 911fc25dda145f4f7313535466eec0c9f4a51ea1 Merge: 4b7d283150b35db6e5e10f72606f603ff424c92a 6b9331165e9827e055389e22d1cbdb5fe3cff835 Author: Takashi Iwai Date: Mon Oct 27 08:37:08 2008 +0100 Merge branch 'topic/asoc-next' into topic/asoc commit 42dc2378b52bb6e155dd2e4fb4ca694785bf2c1d Merge: da74ae3e32374755e0fbdfed4074cf839a82f615 74aeaabc3e452b29bc1b9eac5aa48923569f8a4e Author: Takashi Iwai Date: Mon Oct 27 08:36:48 2008 +0100 Merge branch 'topic/hda-next' into topic/hda commit 74aeaabc3e452b29bc1b9eac5aa48923569f8a4e Author: Matthew Ranostay Date: Sat Oct 25 01:06:04 2008 -0400 ALSA: hda: add support for jack detection on IDT codecs. This patch adds support to the IDT codec families to report jack status to the jack abstraction layer. This required some reorganization in the stac92xx_unsol_event function in which the index value is changed to reporting the nid with the event. Also adds an sigmatel_jack struct to keep track of the nid relation to the jack abstraction layer instance. Also adds functions to set and retrieve data values for each nid, this is used in stac92xx_unsol_event to retrieve the GPIO mask for STAC_VREF_EVENT. Signed-off-by: Matthew Ranostay Signed-off-by: Takashi Iwai commit 50a9f7905fb3e6ae25e80ba443a14d878caef0c9 Author: Matthew Ranostay Date: Sat Oct 25 01:05:45 2008 -0400 ALSA: hda: add snd_hda_get_jack* functions This patch adds snd_hda_get_jack* functions for reporting jack location, device, and connectivity type. Signed-off-by: Matthew Ranostay Signed-off-by: Takashi Iwai commit a53ccab3ccac9e8676a683df9822a2daec83ef54 Author: Matthew Ranostay Date: Sat Oct 25 01:05:04 2008 -0400 ALSA: jack: lineout support to jack abstraction layer This patch introduces support for reporting SW_LINEOUT_INSERT detection events via the jack abstraction layer. Also adds a SND_JACK_LINEOUT define to the input system header. Signed-off-by: Matthew Ranostay Cc: Dmitry Torokhov Acked-by: Mark Brown Signed-off-by: Takashi Iwai commit 282cd76ffca781013151344c4b0f9229e9ea3c35 Author: Matthew Ranostay Date: Sat Oct 25 01:05:29 2008 -0400 ALSA: hda: dynamic jack id This patch duplicates the jack->id pointer with kstrdup() to prevent scoping issues from calling autoprobing functions from the HDA section. Signed-off-by: Matthew Ranostay Acked-by: Mark Brown Signed-off-by: Takashi Iwai commit bbaf5e97337287479eb78dbc3822d9560bbfd2e2 Author: Takashi Iwai Date: Fri Oct 24 18:16:50 2008 +0200 ALSA: Add hrtimer backend for ALSA timer interface Added the hrtimer backend for ALSA timer interface. It can be used for the sequencer timer source. Signed-off-by: Takashi Iwai commit 63fb70859f987f2b3b8028fa467fd63336315e9c Author: Sitsofe Wheeler Date: Sat Oct 11 20:27:53 2008 +0100 x86: change OPTIMIZE_INLINING help to say enabling makes smaller kernels Impact: clarify Kconfig help text The OPTIMIZE_INLINING help currently says "The gcc 4.x series have a rewritten inlining algorithm and disabling this option will generate a smaller kernel there." This contradicts other parts of the help text and my own tests: 5463127 2008-10-11 19:51 vmlinux.no-opt 5456152 2008-10-11 19:56 vmlinux.opt Reword text to say that enabling OPTIMIZE_INLINING will lead to smaller kernels with gcc 4.x or later. Signed-off-by: Sitsofe Wheeler Signed-off-by: Ingo Molnar commit 67679b1fd166da8398e70b7dbffe12cfccf9c7bf Author: Vedran Miletic Date: Thu Oct 23 18:51:00 2008 +0200 ALSA: emu10k1: fix coding style for emu10k1_main.c I fixed all of coding style errors and some warnings, now it is down to: checkpatch.pl-0.24 --no-tree --file --strict --terse emu10k1_main.c total: 0 errors, 62 warnings, 7 checks, 2075 lines checked Signed-off-by: Vedran Miletic Signed-off-by: Takashi Iwai commit 888dcb7cb26fb85dfe3486d28a2431d69d3e8148 Author: Johannes Berg Date: Thu Oct 23 15:47:56 2008 +0200 ALSA: aoa: clean up file names This cleans up the apple onboard audio driver filenames. Signed-off-by: Johannes Berg Signed-off-by: Takashi Iwai commit 871d3779cba18b028e34d0d2f6cc6caae76a97b6 Author: Alexander van Heukelum Date: Wed Oct 22 12:00:14 2008 +0200 i386, dumpstack: unify die() Make i386's die() equal to x86_64's version. Whitespace-only changes on x86_64, to make it equal to i386's version. (user_mode and user_mode_vm are equal on x86_64.) Signed-off-by: Alexander van Heukelum Acked-by: Neil Horman Signed-off-by: Ingo Molnar commit e06ca430c3d0fddbd1c901ab3fb3e1f0bc8a786b Author: Alexander van Heukelum Date: Wed Oct 22 12:00:13 2008 +0200 i386, dumpstack: use oops_begin/oops_end in die_nmi Use oops_begin and oops_end in die_nmi. Whitespace-only changes on x86_64, to make it equal to i386's version. Signed-off-by: Alexander van Heukelum Acked-by: Neil Horman Signed-off-by: Ingo Molnar commit e4955cfd2f5c81eb708f55769aa60173f207fd63 Author: Alexander van Heukelum Date: Wed Oct 22 12:00:12 2008 +0200 i386, dumpstack: use x86_64's method to account die_nest_count oops_begin/oops_end should always be used in pairs. On x86_64 oops_begin increments die_nest_count, and oops_end decrements die_nest_count. Doing this makes oops_begin and oops_end equal to the x86_64 versions. Signed-off-by: Alexander van Heukelum Acked-by: Neil Horman Signed-off-by: Ingo Molnar commit 10b14cb7eb7dd5bff8023f76a55c8ac20e586128 Author: Alexander van Heukelum Date: Wed Oct 22 12:00:11 2008 +0200 x86, dumpstack: always call oops_exit from oops_end Always call oops_exit from oops_end, even if signr==0. Also, move add_taint(TAINT_DIE) from __die to oops_end on x86_64 and interchange two lines to make oops_end more similar to the i386-version. Signed-off-by: Alexander van Heukelum Acked-by: Neil Horman Signed-off-by: Ingo Molnar commit 0ed7a498f416dcfa1cca478a559238a2a3396240 Author: Alexander van Heukelum Date: Wed Oct 22 12:00:10 2008 +0200 x86_64, dumpstack: move kexec_crash from __die to oops_end oops_end is preceded by either a call to __die, or a conditional call to crash_kexec. Move the conditional call to crash_kexec from the end of __die to the start of oops_end and remove the superfluous call to crash_kexec in die_nmi. Signed-off-by: Alexander van Heukelum Acked-by: Neil Horman Signed-off-by: Ingo Molnar commit 874d93d11823b2b861addac6a5dc31162e924ab2 Author: Alexander van Heukelum Date: Wed Oct 22 12:00:09 2008 +0200 x86, dumpstack: let signr=0 signal no do_exit Change oops_end such that signr=0 signals that do_exit is not to be called. Currently, each use of __die is soon followed by a call to oops_end and 'regs' is set to NULL if oops_end is expected not to call do_exit. Change all such pairs to set signr=0 instead. On x86_64 oops_end is used 'bare' in die_nmi; use signr=0 instead of regs=NULL there, too. Signed-off-by: Alexander van Heukelum Acked-by: Neil Horman Signed-off-by: Ingo Molnar commit b4b8f87bf4958cbad620654efc0882ac46c19846 Author: Alexander van Heukelum Date: Wed Oct 22 12:00:08 2008 +0200 i386, dumpstack: move crash_kexec before bust_spinlocks(0) in oops_end crash_kexec should not be called with console_sem held. Move the call before bust_spinlocks(0) in oops_end to avoid the problem. Signed-off-by: Alexander van Heukelum Acked-by: "Neil Horman" Signed-off-by: Ingo Molnar commit 9e899816d126cc6f7d405c349f65363214fe7399 Author: Nick Piggin Date: Wed Oct 22 12:33:16 2008 +0200 x86, mm: enable GBPAGES option by default DIRECT_GBPAGES was under DEBUG_KERNEL && EXPERIMENTAL and disabled by default. Turn it on by default and put it under EMBEDDED. Signed-off-by: Nick Piggin Signed-off-by: Ingo Molnar commit b0f209898f1a177bd503d49215b8c6628797a81c Author: Russ Anderson Date: Tue Oct 21 14:09:51 2008 -0500 x86, uv: use consistent names for region size and conherence id on x86 and ia64 Use consistent names for region size and conherence id on x86 and ia64. The SGI xp drivers are used on both ia64 and x86. Using the same names (sn_coherency_id, sn_region_size) simplies the driver code. Signed-off-by: Russ Anderson Signed-off-by: Ingo Molnar commit 718a2594b6a8c1c050fea85abbb4932b11105c17 Author: Vedran Miletic Date: Tue Oct 21 21:31:27 2008 +0200 ALSA: emu10k1: fix faulty commit 18c71092 Commit 18c7109289625106cdc810b20b628cd13b46d6dd had #endif leftoff from compilation. This patch fixes it. Also, I replaced a misplaced comment by a useful one, that explains why are here #ifdef and #endif added in compilation. Signed-off-by: Vedran Miletic Signed-off-by: Takashi Iwai commit 18c7109289625106cdc810b20b628cd13b46d6dd Author: Vedran Miletic Date: Tue Oct 21 17:42:54 2008 +0200 ALSA: emu10k1: fix device names for Live!/Audigy1/2/4/E-mu * added missing SBxxxx, CTxxxx, PCxxx and MAEMxxxx where they were missing, and fixed some of them which were wrong (according to kx.inf, which is pretty accurate compared to anything out there) * fixed device names to make them more consistent across various cards * fixed order of devices where appropriate Signed-off-by: Vedran Miletic Signed-off-by: Takashi Iwai commit 1083206ff44af4baa03573b4a6bac430d9d70404 Author: Takashi Iwai Date: Mon Aug 11 10:18:39 2008 +0200 ALSA: ice1724 - Fix TX IRQ lockup MPU TX causes IRQ floods on VT172x devices mysteriously. Disable TX IRQ if the IRQ flood is detected. Signed-off-by: Takashi Iwai commit c872e8cab5b7cab0696bcf09c6f03c972edc1c49 Author: Takashi Iwai Date: Tue Aug 12 13:39:01 2008 +0200 ALSA: Enable SPDIF output on ALC655 Some hardwares with ALC655 codec don't indicate the proper ext id bit for SPDIF output although it supports. Force to enable the bit. Signed-off-by: Takashi Iwai commit 96c7d478efad594e483ee8a826395b1342404885 Author: Takashi Iwai Date: Mon Aug 11 10:18:39 2008 +0200 ALSA: pcsp - Fix locking messes in snd-pcsp snd-pcsp driver takes chip->substream_lock together with PCM substream lock. These are even mixed up with hrtimer's lock, resulting in messy lock depencies. Right now, snd-pcsp driver resolves the deadlock by using HRTIMER_CB_SOFTIRQ. However, this isn't nice for a really fast path like bit-flipping. This patch introduces a tasklet for PCM period handling so that the hrtimer callback can be handled fast. This also reduce the use of chip->substream_lock to avoid deadlocks. It's still used in pointer callback, but even this could be removed with a proper barrier. Another good solution is to introduce async trigger callback. But, this will involve with a major rewrite of the PCM core code, so I take first this easy fix. Signed-off-by: Takashi Iwai commit ebaa0470586eec83627fa03dcd0a1107f54258f8 Author: Takashi Iwai Date: Thu Oct 16 16:39:56 2008 +0200 ALSA: hda - Release jack instance for dynamic reconfigure The jack instance has to be release manually in free callback in patch_sigmatel.c for dynamic reconfiguration. Signed-off-by: Takashi Iwai commit dd125b28c1523a857b7657b5d8aa774ed1563687 Merge: 45a6ac16c2136e4b902b09bf0b6192b940e8d732 1e1be4329f2aec6a8ec63737a69258fedf34c55d Author: Takashi Iwai Date: Thu Oct 16 16:39:46 2008 +0200 Merge branch 'topic/hda-reconfig' into topic/hda-next commit 76a4d10e522bfc238ddf70f35272088d420d2dcf Author: Takashi Iwai Date: Thu Oct 16 16:17:30 2008 +0200 ALSA: Print function symbol in the error messages Use the new %pF for error messages in snd_device_*() functions to give more understandable results. Signed-off-by: Takashi Iwai commit 6b9331165e9827e055389e22d1cbdb5fe3cff835 Author: Mark Brown Date: Thu Oct 16 11:00:07 2008 +0100 ALSA: ASoC: Remove snd_soc_dapm_connect_input() This was marked as deprecated in 2.6.27 and all users except for playpaq_wm8510 fixed in that release. Signed-off-by: Mark Brown Signed-off-by: Takashi Iwai commit 8ae6a5523f4188dbe2b98a9385f5860df6ee47a3 Author: Jean Delvare Date: Wed Oct 15 19:58:12 2008 +0200 ALSA: ASoC: Convert wm8900 to a new-style i2c driver Convert the wm8900 codec driver to the new (standard) device driver binding model. Signed-off-by: Jean Delvare Acked-by: Mark Brown Signed-off-by: Takashi Iwai commit 17be5522f6de1d4920e7d9235bfb0e0c682c6f8f Author: Jean Delvare Date: Wed Oct 15 19:57:12 2008 +0200 ALSA: ASoC: Convert wm8580 to a new-style i2c driver Convert the wm8580 codec driver to the new (standard) device driver binding model. Signed-off-by: Jean Delvare Acked-by: Mark Brown Signed-off-by: Takashi Iwai commit 45a6ac16c2136e4b902b09bf0b6192b940e8d732 Author: Matthew Ranostay Date: Wed Oct 15 14:45:38 2008 -0400 ALSA: hda: add support for jack detection on IDT/Sigmatel Added support for jack detection reporting to userspace for IDT/Sigmatel codecs. Signed-off-by: Matthew Ranostay Signed-off-by: Takashi Iwai commit 1e1be4329f2aec6a8ec63737a69258fedf34c55d Author: Takashi Iwai Date: Wed Jul 30 15:01:46 2008 +0200 ALSA: hda - Add hints for reconfig This patch adds the "hints" for reconfiguring codecs. The hints are simply string arrays and can be freely used/parsed by the codec patch. The hints can be input via hwdep sysfs files. Signed-off-by: Takashi Iwai commit 11aeff082ad9bd00e8475bf1630c3264344d3764 Author: Takashi Iwai Date: Wed Jul 30 15:01:46 2008 +0200 ALSA: hda - Add init_verbs entries This patch enables the additional init verbs for each codec. The verbs can be entered via hwdep sysfs file. These verbs are executed at reconfiguring the codec for non-standard setups like overriding the pin-defcfg. Signed-off-by: Takashi Iwai commit d7ffba19ce4c1b153d502a89d829400bf76d6c11 Author: Takashi Iwai Date: Wed Jul 30 15:01:46 2008 +0200 ALSA: hda - Add sysfs entries to hwdep devices Added the sysfs entries to hwdep devices so that the new features like reconfiguration can be done via sysfs. Signed-off-by: Takashi Iwai commit 6c1f45ea89b59ad2cdbfa6779e23d77b274da0a7 Author: Takashi Iwai Date: Wed Jul 30 15:01:45 2008 +0200 ALSA: hda - Add codec reconfiguration feature Added the reconfiguration feature of any individual codec. Via the reconfiguration, the old resources are released and the patch is called again to recreate the PCM and mixers in addition to the re-initialization. Signed-off-by: Takashi Iwai commit d13bd412dce23eed8bc35a2499d7d88cb39a1581 Author: Takashi Iwai Date: Wed Jul 30 15:01:45 2008 +0200 ALSA: hda - Manage kcontrol lists Manage all kcontrol elements created in the hda-intel driver. This makes it possible to remove and reconfigure the controls of each codec. Signed-off-by: Takashi Iwai commit f44ac8378d3d84b912b34f08afaff64182ee1b41 Author: Takashi Iwai Date: Wed Jul 30 15:01:45 2008 +0200 ALSA: hda - Allocate name string of each codec Allocate dynamically the name string of each codec instead of pointing to a static string. Signed-off-by: Takashi Iwai commit 603c40199252f0c3b91fca02fd3283c4f8e55179 Author: Takashi Iwai Date: Wed Jul 30 15:01:44 2008 +0200 ALSA: hda - Use generic array helpers Use generic array helpers to simplify array handling in snd-hda-intel. Signed-off-by: Takashi Iwai commit b2e1859745b783922533d29e3b03af29378a23f0 Author: Takashi Iwai Date: Wed Jul 30 15:01:44 2008 +0200 ALSA: hda - Add generic arrays Added helper functions to handle generic arrays. Signed-off-by: Takashi Iwai commit 176d5335fe66f379a339b0ab99cc7566e90ff1a9 Author: Takashi Iwai Date: Wed Jul 30 15:01:44 2008 +0200 ALSA: hda - Add infrastructure for dynamic stream allocation Added the infrastructure for dynamic stream allocation on HD-audio. Signed-off-by: Takashi Iwai commit 41b9eb264c8407655db57b60b4457fe1b2ec9977 Author: Stefan Assmann Date: Tue Jul 15 13:48:55 2008 +0200 x86, pci: introduce config option for pci reroute quirks (was: [PATCH 0/3] Boot IRQ quirks for Broadcom and AMD/ATI) This is against linux-2.6-tip, branch pci-ioapic-boot-irq-quirks. From: Stefan Assmann Subject: Introduce config option for pci reroute quirks The config option X86_REROUTE_FOR_BROKEN_BOOT_IRQS is introduced to enable (or disable) the redirection of the interrupt handler to the boot interrupt line by default. Depending on the existence of interrupt masking / threaded interrupt handling in the kernel (vanilla, rt, ...) and the maturity of the rerouting patch, users can enable or disable the redirection by default. This means that the reroute quirk can be applied to any kernel without changing it. Interrupt sharing could be increased if this option is enabled. However this option is vital for threaded interrupt handling, as done by the RT kernel. It should simplify the consolidation with the RT kernel. The option can be overridden by either pci=ioapicreroute or pci=noioapicreroute. Signed-off-by: Stefan Assmann Signed-off-by: Olaf Dabrunz Cc: Jesse Barnes Cc: Jon Masters Cc: Ihno Krumreich Cc: Sven Dietrich Cc: Daniel Gollub Cc: Felix Foerster Signed-off-by: Ingo Molnar commit 3e370b29d35fb01bfb92c2814d6f79bf6a2cb970 Merge: 88d1dce3a74367291f65a757fbdcaf17f042f30c 5b664cb235e97afbf34db9c4d77f08ebd725335e Author: Ingo Molnar Date: Fri Jul 18 19:31:12 2008 +0200 Merge branch 'linus' into x86/pci-ioapic-boot-irq-quirks Conflicts: drivers/pci/quirks.c Signed-off-by: Ingo Molnar commit 88d1dce3a74367291f65a757fbdcaf17f042f30c Author: Olaf Dabrunz Date: Tue Jul 8 15:59:48 2008 +0200 PCI quirks: call boot IRQ quirks at end of device init and during resume It is not necessary to call boot IRQ quirks before the BARs of the bridges are probed. The normal case is to use DECLARE_PCI_FIXUP_FINAL, so we use this instead now. After a resume, we need to call the quirks again. Signed-off-by: Olaf Dabrunz Signed-off-by: Stefan Assmann Cc: Jon Masters Cc: Olaf Dabrunz Cc: Stefan Assmann Cc: Ihno Krumreich Cc: Sven Dietrich Cc: Daniel Gollub Cc: Felix Foerster Signed-off-by: Ingo Molnar commit 542622da899be17250b8cae2ef5203025b91230a Author: Olaf Dabrunz Date: Tue Jul 8 15:59:48 2008 +0200 PCI quirks: disable AMD/ATI legacy boot interrupt generation Add quirks for several AMD/ATI chipsets to prevent generation of legacy boot interrupts. Integrates a separate older quirk to make IO-APIC mode work on AMD 8131 rev. A0 and B0, which was due to an AMD erratum. Signed-off-by: Olaf Dabrunz Signed-off-by: Stefan Assmann Cc: Jon Masters Cc: Olaf Dabrunz Cc: Stefan Assmann Cc: Ihno Krumreich Cc: Sven Dietrich Cc: Daniel Gollub Cc: Felix Foerster Signed-off-by: Ingo Molnar commit 7725118815537bd481a81828fa125ee154ee74fc Author: Olaf Dabrunz Date: Tue Jul 8 15:59:47 2008 +0200 PCI quirks: add quirk to disable boot interrupt generation on broadcom HT1000 Signed-off-by: Olaf Dabrunz Signed-off-by: Stefan Assmann Cc: Jon Masters Cc: Olaf Dabrunz Cc: Stefan Assmann Cc: Ihno Krumreich Cc: Sven Dietrich Cc: Daniel Gollub Cc: Felix Foerster Signed-off-by: Ingo Molnar commit dbbcfb2211761fa69e831a78119c9288fb87eb9d Merge: b0356cd0e7497252a2c45ecb07b79d931390c8b2 9df2fe986770bc4c76e8fe72c20b71268eec39a7 Author: Ingo Molnar Date: Sun Jul 13 22:52:27 2008 +0200 Merge branch 'linus' into x86/pci-ioapic-boot-irq-quirks Conflicts: arch/x86/mm/ioremap.c Signed-off-by: Ingo Molnar commit b0356cd0e7497252a2c45ecb07b79d931390c8b2 Author: Bernhard Walle Date: Fri Jun 20 17:05:33 2008 +0200 pci, acpi: reroute PCI interrupt to legacy boot interrupt equivalent, warning fix This patch just fixes the compiler warning: drivers/pci/quirks.c: In function ‘quirk_reroute_to_boot_interrupts_intel’: drivers/pci/quirks.c:1375: warning: unused variable ‘i’ Signed-off-by: Bernhard Walle Cc: sassmann@suse.de Signed-off-by: Ingo Molnar commit 33be8333421f842789fa7e363ce4142947e094f0 Author: Ingo Molnar Date: Wed Jun 18 14:47:09 2008 +0200 x86: boot IRQ quirks and rerouting, fix fix: init/built-in.o: In function `nosmp': main.c:(.init.text+0x14): undefined reference to `noioapicquirk' main.c:(.init.text+0x1e): undefined reference to `noioapicreroute' init/built-in.o: In function `maxcpus': main.c:(.init.text+0x133): undefined reference to `noioapicquirk' main.c:(.init.text+0x13d): undefined reference to `noioapicreroute' arch/x86/kernel/built-in.o: In function `parse_noapic': io_apic_32.c:(.init.text+0x7836): undefined reference to `noioapicquirk' io_apic_32.c:(.init.text+0x7840): undefined reference to `noioapicreroute' Signed-off-by: Ingo Molnar commit e1d3a90846b40ad3160bf4b648d36c6badad39ac Author: Stefan Assmann Date: Wed Jun 11 16:35:17 2008 +0200 pci, acpi: reroute PCI interrupt to legacy boot interrupt equivalent Some chipsets (e.g. intel 6700PXH) generate a legacy INTx when the IRQ entry in the chipset's IO-APIC is masked (as, e.g. the RT kernel does during interrupt handling). On chipsets where this INTx generation cannot be disabled, we reroute the valid interrupts to their legacy equivalent to get rid of spurious interrupts that might otherwise bring down (vital) interrupt lines through spurious interrupt detection in note_interrupt(). This patch benefited from discussions with Alexander Graf, Torsten Duwe, Ihno Krumreich, Daniel Gollub, Hannes Reinecke. The conclusions we drew and the patch itself are the authors' responsibility alone. Signed-off-by: Stefan Assmann Signed-off-by: Olaf Dabrunz Signed-off-by: Ingo Molnar commit 426b3b8d535e3e141331dc19c40f457b997c4d6d Author: Stefan Assmann Date: Wed Jun 11 16:35:16 2008 +0200 pci: add quirk to disable boot interrupt generation on intel 6300ESB Add a quirk to disable legacy boot interrupt generation on intel devices that support disabling it. This patch benefited from discussions with Alexander Graf, Torsten Duwe, Ihno Krumreich, Daniel Gollub, Hannes Reinecke. The conclusions we drew and the patch itself are the authors' responsibility alone. Signed-off-by: Stefan Assmann Signed-off-by: Olaf Dabrunz Signed-off-by: Ingo Molnar commit 9197979b518573999d52d9e85bce1680682ed85c Author: Stefan Assmann Date: Wed Jun 11 16:35:15 2008 +0200 x86, pci: introduce pci=ioapicreroute kernel cmdline option Introduce pci=ioapicreroute kernel cmdline option to enable rerouting of boot interrupts to the primary io-apic. Signed-off-by: Stefan Assmann Signed-off-by: Olaf Dabrunz Signed-off-by: Ingo Molnar commit a9322f6488b432ddc1e89be88242c827c633fb63 Author: Stefan Assmann Date: Wed Jun 11 16:35:14 2008 +0200 x86, pci: introduce pci=noioapicquirk kernel cmdline option Introduce pci=noioapicquirk kernel cmdline option to disable all boot interrupt quirks Signed-off-by: Stefan Assmann Signed-off-by: Olaf Dabrunz Signed-off-by: Ingo Molnar commit 747ada36ee23225d81657e4d633ac93b8ccbea7d Author: Olaf Dabrunz Date: Wed Jun 11 16:35:13 2008 +0200 pci: add PCI IDs for devices that need boot irq quirks Signed-off-by: Stefan Assmann Signed-off-by: Olaf Dabrunz Signed-off-by: Ingo Molnar ----------------------------------------------------------------------- Summary of changes: Documentation/DocBook/Makefile | 2 +- Documentation/DocBook/networking.tmpl | 3 - Documentation/DocBook/wanbook.tmpl | 99 - Documentation/RCU/rculist_nulls.txt | 167 + Documentation/controllers/cpuacct.txt | 32 + Documentation/cpu-freq/user-guide.txt | 6 +- Documentation/credentials.txt | 582 + Documentation/feature-removal-schedule.txt | 19 - Documentation/filesystems/proc.txt | 9 +- Documentation/ftrace.txt | 149 +- Documentation/kbuild/makefiles.txt | 14 + Documentation/kernel-parameters.txt | 71 +- Documentation/markers.txt | 29 +- Documentation/networking/README.ipw2200 | 2 +- Documentation/networking/bonding.txt | 68 +- Documentation/networking/dccp.txt | 32 +- Documentation/networking/driver.txt | 2 +- Documentation/networking/generic-hdlc.txt | 8 +- Documentation/networking/ip-sysctl.txt | 6 + Documentation/networking/mac80211_hwsim/README | 9 +- Documentation/networking/netdevices.txt | 2 +- Documentation/networking/regulatory.txt | 22 +- Documentation/nmi_watchdog.txt | 5 + Documentation/powerpc/dts-bindings/fsl/tsec.txt | 12 +- Documentation/rfkill.txt | 20 +- Documentation/scheduler/sched-arch.txt | 4 +- Documentation/scheduler/sched-design-CFS.txt | 21 + Documentation/sh/kgdb.txt | 179 - Documentation/sound/alsa/ALSA-Configuration.txt | 330 +- Documentation/sound/alsa/HD-Audio-Models.txt | 348 + Documentation/sound/alsa/HD-Audio.txt | 577 + Documentation/sound/alsa/Procfile.txt | 10 + Documentation/sound/alsa/soc/machine.txt | 8 +- Documentation/tracepoints.txt | 94 +- Documentation/x86/boot.txt | 6 +- Documentation/x86/pat.txt | 24 + Documentation/x86/x86_64/boot-options.txt | 11 - Documentation/x86/x86_64/mm.txt | 2 +- MAINTAINERS | 52 +- Makefile | 209 +- arch/alpha/kernel/asm-offsets.c | 11 +- arch/alpha/kernel/entry.S | 10 +- arch/arm/mach-ixp4xx/fsg-setup.c | 9 +- arch/arm/mach-ixp4xx/include/mach/qmgr.h | 35 +- arch/arm/mach-ixp4xx/ixp4xx_qmgr.c | 44 +- arch/arm/mach-ixp4xx/nas100d-setup.c | 5 +- arch/arm/mach-ixp4xx/nslu2-setup.c | 5 +- arch/arm/mach-pxa/include/mach/palmasoc.h | 13 + arch/blackfin/boot/Makefile | 2 +- arch/ia64/Kconfig | 2 +- arch/ia64/hp/sim/simeth.c | 25 +- arch/ia64/ia32/sys_ia32.c | 7 +- arch/ia64/kernel/mca_drv.c | 2 +- arch/ia64/kernel/perfmon.c | 43 +- arch/ia64/kernel/signal.c | 4 +- arch/m32r/Kconfig | 2 +- arch/m68k/fpsp040/setox.S | 4 +- arch/m68k/mac/baboon.c | 42 +- arch/m68k/mac/config.c | 3 - arch/m68k/mac/debug.c | 1 - arch/m68k/mac/macints.c | 9 +- arch/m68k/mac/misc.c | 16 +- arch/m68k/mac/oss.c | 1 - arch/m68k/mac/via.c | 80 +- arch/mips/Kconfig | 2 +- arch/mips/include/asm/byteorder.h | 5 +- arch/mips/include/asm/elf.h | 2 +- arch/mips/kernel/kspd.c | 4 +- arch/mips/kernel/mips-mt-fpaff.c | 5 +- arch/mips/kernel/vpe.c | 4 +- arch/parisc/include/asm/tlbflush.h | 5 +- arch/parisc/kernel/signal.c | 2 +- arch/powerpc/Kconfig | 66 +- arch/powerpc/Kconfig.debug | 9 + arch/powerpc/Makefile | 1 - arch/powerpc/boot/Makefile | 1 + arch/powerpc/boot/devtree.c | 2 +- arch/powerpc/boot/dts/asp834x-redboot.dts | 20 + arch/powerpc/boot/dts/bamboo.dts | 3 +- arch/powerpc/boot/dts/canyonlands.dts | 14 + arch/powerpc/boot/dts/gef_sbc610.dts | 11 + arch/powerpc/boot/dts/ksi8560.dts | 20 + arch/powerpc/boot/dts/kuroboxHD.dts | 1 - arch/powerpc/boot/dts/kuroboxHG.dts | 1 - arch/powerpc/boot/dts/lite5200.dts | 1 - arch/powerpc/boot/dts/lite5200b.dts | 1 - arch/powerpc/boot/dts/motionpro.dts | 1 - arch/powerpc/boot/dts/mpc8313erdb.dts | 20 + arch/powerpc/boot/dts/mpc8315erdb.dts | 20 +- arch/powerpc/boot/dts/mpc8349emitx.dts | 19 +- arch/powerpc/boot/dts/mpc8349emitxgp.dts | 6 +- arch/powerpc/boot/dts/mpc834x_mds.dts | 19 + arch/powerpc/boot/dts/mpc8377_mds.dts | 19 + arch/powerpc/boot/dts/mpc8377_rdb.dts | 20 +- arch/powerpc/boot/dts/mpc8378_mds.dts | 19 + arch/powerpc/boot/dts/mpc8378_rdb.dts | 18 +- arch/powerpc/boot/dts/mpc8379_mds.dts | 18 + arch/powerpc/boot/dts/mpc8379_rdb.dts | 19 +- arch/powerpc/boot/dts/mpc8536ds.dts | 18 + arch/powerpc/boot/dts/mpc8540ads.dts | 31 + arch/powerpc/boot/dts/mpc8541cds.dts | 18 + arch/powerpc/boot/dts/mpc8544ds.dts | 20 + arch/powerpc/boot/dts/mpc8548cds.dts | 44 + arch/powerpc/boot/dts/mpc8555cds.dts | 18 + arch/powerpc/boot/dts/mpc8560ads.dts | 18 + arch/powerpc/boot/dts/mpc8568mds.dts | 18 + arch/powerpc/boot/dts/mpc8572ds.dts | 158 + arch/powerpc/boot/dts/mpc8572ds_camp_core0.dts | 483 + arch/powerpc/boot/dts/mpc8572ds_camp_core1.dts | 234 + arch/powerpc/boot/dts/mpc8641_hpcn.dts | 45 + arch/powerpc/boot/dts/pcm030.dts | 2 - arch/powerpc/boot/dts/sbc8349.dts | 18 + arch/powerpc/boot/dts/sbc8548.dts | 18 + arch/powerpc/boot/dts/sbc8560.dts | 18 + arch/powerpc/boot/dts/sbc8641d.dts | 44 + arch/powerpc/boot/dts/stx_gp3_8560.dts | 18 + arch/powerpc/boot/dts/tqm5200.dts | 1 - arch/powerpc/boot/dts/tqm8540.dts | 28 + arch/powerpc/boot/dts/tqm8541.dts | 18 + arch/powerpc/boot/dts/tqm8548-bigflash.dts | 44 + arch/powerpc/boot/dts/tqm8548.dts | 44 + arch/powerpc/boot/dts/tqm8555.dts | 18 + arch/powerpc/boot/dts/tqm8560.dts | 18 + arch/powerpc/boot/libfdt-wrapper.c | 2 +- arch/powerpc/configs/86xx/gef_sbc610_defconfig | 8 +- arch/powerpc/configs/ppc44x_defconfig | 12 +- arch/powerpc/include/asm/atomic.h | 18 +- arch/powerpc/include/asm/bug.h | 11 +- arch/powerpc/include/asm/byteorder.h | 38 +- arch/powerpc/include/asm/cputable.h | 113 +- arch/powerpc/include/asm/dcr-native.h | 63 +- arch/powerpc/include/asm/dcr.h | 4 +- arch/powerpc/include/asm/device.h | 12 + arch/powerpc/include/asm/dma-mapping.h | 156 +- arch/powerpc/include/asm/eeh.h | 8 +- arch/powerpc/include/asm/elf.h | 2 +- arch/powerpc/include/asm/feature-fixups.h | 30 + arch/powerpc/include/asm/ftrace.h | 14 +- arch/powerpc/include/asm/highmem.h | 23 +- arch/powerpc/include/asm/io.h | 7 - arch/powerpc/include/asm/kdump.h | 13 + arch/powerpc/include/asm/kexec.h | 15 +- arch/powerpc/include/asm/local.h | 4 +- arch/powerpc/include/asm/lppaca.h | 3 +- arch/powerpc/include/asm/mmu-40x.h | 5 +- arch/powerpc/include/asm/mmu-44x.h | 22 +- arch/powerpc/include/asm/mmu-8xx.h | 3 +- arch/powerpc/include/asm/mmu-fsl-booke.h | 7 +- arch/powerpc/include/asm/mmu.h | 57 + arch/powerpc/include/asm/mmu_context.h | 257 +- arch/powerpc/include/asm/module.h | 16 +- arch/powerpc/include/asm/mpc52xx.h | 19 + arch/powerpc/include/asm/mpc52xx_psc.h | 11 +- arch/powerpc/include/asm/mutex.h | 135 +- arch/powerpc/include/asm/page.h | 13 +- arch/powerpc/include/asm/page_32.h | 7 +- arch/powerpc/include/asm/pci-bridge.h | 30 +- arch/powerpc/include/asm/pci.h | 15 +- arch/powerpc/include/asm/pgalloc-32.h | 11 +- arch/powerpc/include/asm/pgalloc-64.h | 34 - arch/powerpc/include/asm/pgalloc.h | 41 + arch/powerpc/include/asm/pgtable-ppc32.h | 42 +- arch/powerpc/include/asm/pgtable-ppc64.h | 15 +- arch/powerpc/include/asm/pgtable.h | 26 + arch/powerpc/include/asm/ppc_asm.h | 4 +- arch/powerpc/include/asm/processor.h | 8 +- arch/powerpc/include/asm/prom.h | 3 + arch/powerpc/include/asm/ps3.h | 56 +- arch/powerpc/include/asm/ps3av.h | 4 - arch/powerpc/include/asm/reg.h | 4 + arch/powerpc/include/asm/rtas.h | 1 + arch/powerpc/include/asm/sfp-machine.h | 58 +- arch/powerpc/include/asm/smp.h | 7 + arch/powerpc/include/asm/spinlock.h | 2 +- arch/powerpc/include/asm/synch.h | 4 + arch/powerpc/include/asm/system.h | 24 +- arch/powerpc/include/asm/time.h | 20 - arch/powerpc/include/asm/tlbflush.h | 87 +- arch/powerpc/include/asm/vdso_datapage.h | 3 + arch/powerpc/kernel/Makefile | 5 + arch/powerpc/kernel/asm-offsets.c | 6 + arch/powerpc/kernel/cputable.c | 117 +- arch/powerpc/kernel/dma.c | 26 + arch/powerpc/kernel/entry_32.S | 40 +- arch/powerpc/kernel/entry_64.S | 12 - arch/powerpc/kernel/ftrace.c | 461 +- arch/powerpc/kernel/head_32.S | 31 +- arch/powerpc/kernel/head_44x.S | 34 +- arch/powerpc/kernel/head_fsl_booke.S | 107 +- arch/powerpc/kernel/ibmebus.c | 3 +- arch/powerpc/kernel/idle.c | 5 + arch/powerpc/kernel/machine_kexec.c | 91 +- arch/powerpc/kernel/machine_kexec_64.c | 78 +- arch/powerpc/kernel/misc_32.S | 238 +- arch/powerpc/kernel/module.c | 6 + arch/powerpc/kernel/module_32.c | 10 + arch/powerpc/kernel/module_64.c | 13 + arch/powerpc/kernel/of_device.c | 18 +- arch/powerpc/kernel/paca.c | 1 + arch/powerpc/kernel/pci-common.c | 300 +- arch/powerpc/kernel/pci_32.c | 108 +- arch/powerpc/kernel/pci_64.c | 134 +- arch/powerpc/kernel/ppc_ksyms.c | 9 +- arch/powerpc/kernel/ppc_save_regs.S | 74 + arch/powerpc/kernel/process.c | 4 +- arch/powerpc/kernel/prom.c | 47 +- arch/powerpc/kernel/prom_parse.c | 5 +- arch/powerpc/kernel/rtas.c | 26 + arch/powerpc/kernel/rtas_pci.c | 48 - arch/powerpc/kernel/setup_32.c | 15 +- arch/powerpc/kernel/setup_64.c | 5 +- arch/powerpc/kernel/smp-tbsync.c | 12 +- arch/powerpc/kernel/smp.c | 71 +- arch/powerpc/kernel/swsusp.c | 2 +- arch/powerpc/kernel/swsusp_32.S | 6 +- arch/powerpc/kernel/sysfs.c | 7 +- arch/powerpc/kernel/time.c | 36 +- arch/powerpc/kernel/traps.c | 62 +- arch/powerpc/kernel/vdso.c | 13 +- arch/powerpc/kernel/vdso32/gettimeofday.S | 208 +- arch/powerpc/kernel/vdso32/vdso32.lds.S | 3 + arch/powerpc/kernel/vdso64/gettimeofday.S | 141 +- arch/powerpc/kernel/vdso64/vdso64.lds.S | 3 + arch/powerpc/kernel/vio.c | 12 +- arch/powerpc/kernel/vmlinux.lds.S | 6 + arch/powerpc/kvm/powerpc.c | 3 +- arch/powerpc/lib/Makefile | 3 + arch/powerpc/lib/copyuser_64.S | 17 +- arch/powerpc/lib/dma-noncoherent.c | 25 +- arch/powerpc/lib/memcpy_64.S | 16 +- arch/powerpc/math-emu/Makefile | 2 + arch/powerpc/math-emu/fadd.c | 1 - arch/powerpc/math-emu/fcmpo.c | 5 +- arch/powerpc/math-emu/fdiv.c | 9 +- arch/powerpc/math-emu/fdivs.c | 9 +- arch/powerpc/math-emu/fmadd.c | 5 +- arch/powerpc/math-emu/fmadds.c | 5 +- arch/powerpc/math-emu/fmsub.c | 5 +- arch/powerpc/math-emu/fmsubs.c | 5 +- arch/powerpc/math-emu/fmul.c | 3 +- arch/powerpc/math-emu/fmuls.c | 3 +- arch/powerpc/math-emu/fnmadd.c | 5 +- arch/powerpc/math-emu/fnmadds.c | 5 +- arch/powerpc/math-emu/fnmsub.c | 5 +- arch/powerpc/math-emu/fnmsubs.c | 5 +- arch/powerpc/math-emu/fsqrt.c | 5 +- arch/powerpc/math-emu/fsqrts.c | 5 +- arch/powerpc/math-emu/fsub.c | 3 +- arch/powerpc/math-emu/fsubs.c | 3 +- arch/powerpc/math-emu/math_efp.c | 720 ++ arch/powerpc/mm/Makefile | 10 +- arch/powerpc/mm/fault.c | 16 +- arch/powerpc/mm/hash_low_32.S | 111 +- arch/powerpc/mm/hugetlbpage.c | 22 +- arch/powerpc/mm/init_32.c | 6 +- arch/powerpc/mm/mem.c | 6 +- arch/powerpc/mm/mmu_context_32.c | 84 - arch/powerpc/mm/mmu_context_64.c | 70 - arch/powerpc/mm/mmu_context_hash32.c | 103 + arch/powerpc/mm/mmu_context_hash64.c | 78 + arch/powerpc/mm/mmu_context_nohash.c | 397 + arch/powerpc/mm/mmu_decl.h | 65 +- arch/powerpc/mm/pgtable.c | 117 + arch/powerpc/mm/pgtable_32.c | 56 +- arch/powerpc/mm/ppc_mmu_32.c | 10 +- arch/powerpc/mm/tlb_32.c | 190 - arch/powerpc/mm/tlb_64.c | 297 - arch/powerpc/mm/tlb_hash32.c | 194 + arch/powerpc/mm/tlb_hash64.c | 211 + arch/powerpc/mm/tlb_nohash.c | 209 + arch/powerpc/mm/tlb_nohash_low.S | 166 + arch/powerpc/platforms/40x/ep405.c | 2 +- arch/powerpc/platforms/40x/kilauea.c | 2 +- arch/powerpc/platforms/40x/ppc40x_simple.c | 2 +- arch/powerpc/platforms/44x/ebony.c | 2 +- arch/powerpc/platforms/44x/ppc44x_simple.c | 2 +- arch/powerpc/platforms/44x/sam440ep.c | 2 +- arch/powerpc/platforms/52xx/lite5200_pm.c | 1 - arch/powerpc/platforms/52xx/mpc52xx_pci.c | 2 +- arch/powerpc/platforms/52xx/mpc52xx_pic.c | 237 +- arch/powerpc/platforms/52xx/mpc52xx_pic.h | 53 - arch/powerpc/platforms/52xx/mpc52xx_pm.c | 3 - arch/powerpc/platforms/82xx/pq2.c | 2 +- arch/powerpc/platforms/85xx/Makefile | 2 + arch/powerpc/platforms/85xx/mpc85xx_ds.c | 11 +- arch/powerpc/platforms/85xx/mpc85xx_mds.c | 8 +- arch/powerpc/platforms/85xx/smp.c | 104 + arch/powerpc/platforms/86xx/Kconfig | 2 + arch/powerpc/platforms/86xx/Makefile | 3 +- arch/powerpc/platforms/86xx/gef_gpio.c | 143 + arch/powerpc/platforms/Kconfig.cputype | 12 +- arch/powerpc/platforms/cell/Kconfig | 23 +- arch/powerpc/platforms/cell/Makefile | 17 +- arch/powerpc/platforms/cell/celleb_setup.c | 9 - arch/powerpc/platforms/cell/iommu.c | 5 +- arch/powerpc/platforms/cell/qpace_setup.c | 152 + arch/powerpc/platforms/cell/setup.c | 6 - arch/powerpc/platforms/cell/spufs/file.c | 27 +- arch/powerpc/platforms/cell/spufs/inode.c | 8 +- arch/powerpc/platforms/chrp/pci.c | 3 +- arch/powerpc/platforms/embedded6xx/c2k.c | 6 - arch/powerpc/platforms/embedded6xx/prpmc2800.c | 6 - arch/powerpc/platforms/iseries/Kconfig | 1 + arch/powerpc/platforms/maple/setup.c | 6 - arch/powerpc/platforms/powermac/cpufreq_32.c | 2 +- arch/powerpc/platforms/powermac/pci.c | 6 +- arch/powerpc/platforms/powermac/setup.c | 10 +- arch/powerpc/platforms/powermac/sleep.S | 5 +- arch/powerpc/platforms/powermac/smp.c | 2 +- arch/powerpc/platforms/ps3/device-init.c | 33 +- arch/powerpc/platforms/ps3/mm.c | 2 +- arch/powerpc/platforms/ps3/setup.c | 8 +- arch/powerpc/platforms/ps3/system-bus.c | 38 +- arch/powerpc/platforms/pseries/Kconfig | 2 +- arch/powerpc/platforms/pseries/cmm.c | 29 +- arch/powerpc/platforms/pseries/eeh.c | 44 +- arch/powerpc/platforms/pseries/hotplug-cpu.c | 2 +- arch/powerpc/platforms/pseries/pci_dlpar.c | 163 +- arch/powerpc/platforms/pseries/phyp_dump.c | 5 + arch/powerpc/platforms/pseries/xics.c | 43 +- arch/powerpc/sysdev/bestcomm/ata.c | 3 + arch/powerpc/sysdev/bestcomm/ata.h | 19 +- arch/powerpc/sysdev/bestcomm/bestcomm.c | 7 +- arch/powerpc/sysdev/bestcomm/bestcomm.h | 61 +- arch/powerpc/sysdev/bestcomm/bestcomm_priv.h | 20 +- arch/powerpc/sysdev/dcr-low.S | 8 +- arch/powerpc/sysdev/dcr.c | 5 +- arch/powerpc/sysdev/fsl_pci.c | 4 +- arch/powerpc/sysdev/fsl_soc.c | 241 +- arch/powerpc/sysdev/grackle.c | 2 +- arch/powerpc/sysdev/mpic.c | 32 +- arch/powerpc/sysdev/ppc4xx_pci.c | 306 +- arch/powerpc/sysdev/qe_lib/qe.c | 3 + arch/powerpc/sysdev/qe_lib/ucc.c | 4 +- arch/powerpc/xmon/Makefile | 2 +- arch/powerpc/xmon/setjmp.S | 74 - arch/powerpc/xmon/xmon.c | 5 +- arch/s390/Kconfig | 41 +- arch/s390/Makefile | 1 + arch/s390/appldata/appldata.h | 4 - arch/s390/appldata/appldata_base.c | 12 +- arch/s390/appldata/appldata_net_sum.c | 4 +- arch/s390/appldata/appldata_os.c | 21 +- arch/s390/crypto/aes_s390.c | 14 +- arch/s390/hypfs/hypfs_diag.c | 10 +- arch/s390/hypfs/inode.c | 18 +- arch/s390/include/asm/auxvec.h | 2 + arch/s390/include/asm/bug.h | 5 +- arch/s390/include/asm/byteorder.h | 72 +- arch/s390/include/asm/elf.h | 16 + arch/s390/include/asm/fcx.h | 4 +- arch/s390/include/asm/ftrace.h | 8 + arch/s390/include/asm/isc.h | 1 + arch/s390/include/asm/mmu.h | 1 + arch/s390/include/asm/page.h | 2 + arch/s390/include/asm/pgalloc.h | 5 +- arch/s390/include/asm/processor.h | 4 +- arch/s390/include/asm/qdio.h | 16 +- arch/s390/include/asm/sigp.h | 1 + arch/s390/include/asm/smp.h | 5 +- arch/s390/include/asm/sysinfo.h | 11 + arch/s390/include/asm/system.h | 24 +- arch/s390/include/asm/timer.h | 9 - arch/s390/include/asm/vdso.h | 39 + arch/s390/kernel/Makefile | 18 +- arch/s390/kernel/asm-offsets.c | 15 + arch/s390/kernel/compat_linux.c | 28 +- arch/s390/kernel/cpcmd.c | 7 +- arch/s390/kernel/debug.c | 39 +- arch/s390/kernel/entry.S | 58 +- arch/s390/kernel/entry64.S | 58 +- arch/s390/kernel/head.S | 49 + arch/s390/kernel/head31.S | 28 +- arch/s390/kernel/head64.S | 24 - arch/s390/kernel/mcount.S | 56 + arch/s390/kernel/processor.c | 98 + arch/s390/kernel/ptrace.c | 10 +- arch/s390/kernel/s390_ksyms.c | 5 + arch/s390/kernel/setup.c | 185 +- arch/s390/kernel/smp.c | 201 +- arch/s390/kernel/time.c | 278 +- arch/s390/kernel/topology.c | 46 +- arch/s390/kernel/vdso.c | 234 + arch/s390/kernel/vdso32/Makefile | 55 + arch/s390/kernel/vdso32/clock_getres.S | 39 + arch/s390/kernel/vdso32/clock_gettime.S | 128 + arch/s390/kernel/vdso32/gettimeofday.S | 82 + .../vdso/vdso-note.S => s390/kernel/vdso32/note.S} | 0 arch/s390/kernel/vdso32/vdso32.lds.S | 138 + arch/s390/kernel/vdso32/vdso32_wrapper.S | 13 + arch/s390/kernel/vdso64/Makefile | 55 + arch/s390/kernel/vdso64/clock_getres.S | 39 + arch/s390/kernel/vdso64/clock_gettime.S | 89 + arch/s390/kernel/vdso64/gettimeofday.S | 56 + .../vdso/vdso-note.S => s390/kernel/vdso64/note.S} | 0 arch/s390/kernel/vdso64/vdso64.lds.S | 138 + arch/s390/kernel/vdso64/vdso64_wrapper.S | 13 + arch/s390/kernel/vtime.c | 11 - arch/s390/mm/extmem.c | 106 +- arch/sh/Kconfig | 83 +- arch/sh/Kconfig.debug | 104 +- arch/sh/Makefile | 33 +- arch/sh/boards/Kconfig | 11 +- arch/sh/boards/Makefile | 1 - arch/sh/boards/board-ap325rxa.c | 7 +- arch/sh/boards/board-rsk7203.c | 179 - arch/sh/boards/board-shmin.c | 14 +- arch/sh/boards/mach-cayman/Makefile | 1 - arch/sh/boards/mach-cayman/irq.c | 35 +- arch/sh/boards/mach-cayman/led.c | 51 - arch/sh/boards/mach-dreamcast/irq.c | 192 +- arch/sh/boards/mach-dreamcast/setup.c | 5 +- arch/sh/boards/mach-edosk7705/Makefile | 1 - arch/sh/boards/mach-edosk7705/io.c | 61 +- arch/sh/boards/mach-edosk7705/setup.c | 9 +- arch/sh/boards/mach-hp6xx/pm.c | 78 +- arch/sh/boards/mach-microdev/Makefile | 5 +- arch/sh/boards/mach-microdev/fdc37c93xapm.c | 160 + arch/sh/boards/mach-microdev/irq.c | 36 +- arch/sh/boards/mach-microdev/led.c | 101 - arch/sh/boards/mach-microdev/setup.c | 196 +- arch/sh/boards/mach-migor/setup.c | 21 +- arch/sh/boards/mach-rsk/Kconfig | 18 + arch/sh/boards/mach-rsk/Makefile | 2 + arch/sh/boards/mach-rsk/devices-rsk7203.c | 103 + arch/sh/boards/mach-rsk/setup.c | 106 + arch/sh/boards/mach-se/7343/Makefile | 2 +- arch/sh/boards/mach-se/7343/io.c | 273 - arch/sh/boards/mach-se/7343/setup.c | 126 +- arch/sh/boards/mach-se/770x/setup.c | 4 +- arch/sh/boards/mach-se/7721/setup.c | 7 +- arch/sh/boards/mach-se/7722/setup.c | 10 +- arch/sh/boards/mach-sh03/setup.c | 59 +- arch/sh/boards/mach-systemh/irq.c | 37 +- arch/sh/cchips/hd6446x/hd64461.c | 115 +- arch/sh/configs/edosk7705_defconfig | 438 + arch/sh/configs/rsk7201_defconfig | 703 ++ arch/sh/configs/rsk7203_defconfig | 65 +- arch/sh/configs/rts7751r2dplus_qemu_defconfig | 949 -- arch/sh/configs/se7343_defconfig | 303 +- arch/sh/drivers/dma/Makefile | 1 - arch/sh/drivers/dma/dma-isa.c | 106 - arch/sh/drivers/dma/dma-sh.c | 3 +- arch/sh/drivers/dma/dma-sh.h | 1 + arch/sh/drivers/pci/ops-sh03.c | 3 +- arch/sh/drivers/pci/pci-sh7780.c | 12 +- arch/sh/include/asm/addrspace.h | 11 + arch/sh/include/asm/bitops-grb.h | 3 + arch/sh/include/asm/bitops-irq.h | 91 - arch/sh/include/asm/bitops-llsc.h | 2 + arch/sh/include/asm/bitops-op32.h | 142 + arch/sh/include/asm/bitops.h | 9 +- arch/sh/include/asm/bugs.h | 2 +- arch/sh/include/asm/elf.h | 4 +- arch/sh/include/asm/ftrace.h | 28 +- arch/sh/include/asm/io.h | 4 + arch/sh/include/asm/kgdb.h | 66 +- arch/sh/include/asm/machvec.h | 5 - arch/sh/include/asm/mmu_context.h | 4 +- arch/sh/include/asm/mutex-llsc.h | 112 + arch/sh/include/asm/mutex.h | 5 +- arch/sh/include/asm/pm.h | 17 - arch/sh/include/asm/processor.h | 5 +- arch/sh/include/asm/processor_32.h | 12 +- arch/sh/include/asm/processor_64.h | 4 +- arch/sh/include/asm/ptrace.h | 2 +- arch/sh/include/asm/sh_bios.h | 1 - arch/sh/include/asm/string_64.h | 21 +- arch/sh/include/asm/syscall_32.h | 2 +- arch/sh/include/asm/syscall_64.h | 76 +- arch/sh/include/asm/system.h | 2 + arch/sh/include/asm/unaligned-sh4a.h | 258 + arch/sh/include/asm/unaligned.h | 7 +- arch/sh/include/cpu-sh3/cpu/gpio.h | 14 + arch/sh/include/mach-common/mach/edosk7705.h | 31 +- arch/sh/include/mach-se/mach/mrshpc.h | 52 + arch/sh/include/mach-se/mach/se.h | 18 + arch/sh/include/mach-se/mach/se7343.h | 9 +- arch/sh/kernel/Makefile_32 | 18 +- arch/sh/kernel/Makefile_64 | 5 +- arch/sh/kernel/cf-enabler.c | 168 - arch/sh/kernel/cpu/clock.c | 10 + arch/sh/kernel/cpu/init.c | 2 + arch/sh/kernel/cpu/sh2a/Makefile | 3 +- arch/sh/kernel/cpu/sh2a/clock-sh7201.c | 85 + arch/sh/kernel/cpu/sh2a/probe.c | 7 +- arch/sh/kernel/cpu/sh2a/setup-sh7201.c | 331 + arch/sh/kernel/cpu/sh3/entry.S | 14 +- arch/sh/kernel/cpu/sh3/ex.S | 2 +- arch/sh/kernel/cpu/sh4/softfloat.c | 73 +- arch/sh/kernel/cpu/sh4a/clock-sh7722.c | 310 +- arch/sh/kernel/cpu/sh4a/setup-sh7343.c | 37 +- arch/sh/kernel/cpu/sh4a/setup-sh7366.c | 19 +- arch/sh/kernel/cpu/sh4a/setup-sh7722.c | 50 +- arch/sh/kernel/cpu/sh4a/setup-sh7723.c | 19 +- arch/sh/kernel/debugtraps.S | 13 +- arch/sh/kernel/disassemble.c | 573 + arch/sh/kernel/entry-common.S | 54 +- arch/sh/kernel/ftrace.c | 133 + arch/sh/kernel/head_32.S | 12 +- arch/sh/kernel/idle.c | 81 + arch/sh/kernel/kgdb.c | 285 + arch/sh/kernel/kgdb_jmp.S | 33 - arch/sh/kernel/kgdb_stub.c | 1052 -- arch/sh/kernel/pm.c | 88 - arch/sh/kernel/process_32.c | 81 +- arch/sh/kernel/process_64.c | 111 - arch/sh/kernel/ptrace_64.c | 186 +- arch/sh/kernel/setup.c | 1 + arch/sh/kernel/sh_bios.c | 65 +- arch/sh/kernel/sh_ksyms_32.c | 37 +- arch/sh/kernel/sh_ksyms_64.c | 5 +- arch/sh/kernel/signal_32.c | 1 - arch/sh/kernel/signal_64.c | 154 +- arch/sh/kernel/sys_sh.c | 92 - arch/sh/kernel/time_32.c | 12 - arch/sh/kernel/time_64.c | 5 - arch/sh/kernel/timers/timer-mtu2.c | 5 + arch/sh/kernel/traps_32.c | 36 +- arch/sh/kernel/vsyscall/vsyscall.c | 3 +- arch/sh/lib/Makefile | 16 +- arch/sh/lib/ashiftrt.S | 149 + arch/{mips => sh}/lib/ashldi3.c | 0 arch/sh/lib/ashlsi3.S | 193 + arch/{mips => sh}/lib/ashrdi3.c | 0 arch/sh/lib/ashrsi3.S | 185 + arch/{mips => sh}/lib/libgcc.h | 0 arch/{mips => sh}/lib/lshrdi3.c | 0 arch/sh/lib/lshrsi3.S | 193 + arch/sh/lib/mcount.S | 90 + arch/sh/lib/movmem.S | 238 + arch/sh/lib/udiv_qrnnd.S | 81 + arch/sh/lib/udivsi3.S | 87 + arch/sh/lib/udivsi3_i4i-Os.S | 149 + arch/sh/lib/udivsi3_i4i.S | 666 ++ arch/sh/lib64/Makefile | 8 +- arch/sh/lib64/c-checksum.c | 4 +- arch/sh/lib64/memcpy.S | 201 + arch/sh/lib64/memcpy.c | 81 - arch/sh/lib64/memset.S | 91 + arch/sh/lib64/sdivsi3.S | 131 + arch/sh/lib64/strcpy.S | 97 + arch/sh/lib64/strlen.S | 33 + arch/sh/lib64/udivdi3.S | 120 + arch/sh/lib64/udivsi3.S | 59 + arch/sh/mm/Makefile_32 | 1 + arch/sh/mm/Makefile_64 | 1 + arch/sh/mm/asids-debugfs.c | 79 + arch/sh/mm/consistent.c | 7 +- arch/sh/mm/fault_32.c | 17 - arch/sh/mm/ioremap_32.c | 3 +- arch/sh/mm/mmap.c | 94 + arch/sh/oprofile/Makefile | 13 +- arch/sh/oprofile/backtrace.c | 114 + arch/sh/oprofile/common.c | 150 + arch/sh/oprofile/op_impl.h | 33 + arch/sh/oprofile/op_model_null.c | 23 - arch/sh/oprofile/op_model_sh7750.c | 172 +- arch/sh/tools/mach-types | 2 + arch/sparc/include/asm/device.h | 12 + arch/sparc64/kernel/idprom.c | 5 +- arch/um/drivers/daemon_kern.c | 2 +- arch/um/drivers/mcast_kern.c | 2 +- arch/um/drivers/mconsole_kern.c | 3 +- arch/um/drivers/net_kern.c | 29 +- arch/um/drivers/pcap_kern.c | 2 +- arch/um/drivers/slip_kern.c | 2 +- arch/um/drivers/slirp_kern.c | 2 +- arch/um/drivers/vde_kern.c | 2 +- arch/um/os-Linux/drivers/ethertap_kern.c | 2 +- arch/um/os-Linux/drivers/tuntap_kern.c | 2 +- arch/x86/Kconfig | 91 +- arch/x86/Kconfig.cpu | 1 + arch/x86/Kconfig.debug | 24 +- arch/x86/boot/video-vga.c | 4 +- arch/x86/boot/video.c | 2 +- arch/x86/configs/i386_defconfig | 4 +- arch/x86/configs/x86_64_defconfig | 4 +- arch/x86/crypto/crc32c-intel.c | 121 +- arch/x86/ia32/ia32_aout.c | 2 +- arch/x86/ia32/ia32_signal.c | 109 +- arch/x86/include/asm/apic.h | 1 + arch/x86/include/asm/bigsmp/apic.h | 2 - arch/x86/include/asm/bitops.h | 10 +- arch/x86/include/asm/bug.h | 2 +- arch/x86/include/asm/byteorder.h | 74 +- arch/x86/include/asm/cpufeature.h | 5 +- arch/x86/include/asm/dma-mapping.h | 2 - arch/x86/include/asm/ds.h | 312 +- arch/x86/include/asm/dwarf2.h | 97 +- arch/x86/include/asm/elf.h | 2 +- arch/x86/include/asm/emergency-restart.h | 4 +- arch/x86/include/asm/es7000/apic.h | 79 +- arch/x86/include/asm/es7000/wakecpu.h | 41 +- arch/x86/include/asm/ftrace.h | 61 +- arch/x86/include/asm/gart.h | 33 + arch/x86/include/asm/genapic_32.h | 19 +- arch/x86/include/asm/genapic_64.h | 2 + arch/x86/include/asm/hardirq_32.h | 2 + arch/x86/include/asm/hardirq_64.h | 2 + arch/x86/include/asm/hw_irq.h | 4 +- arch/x86/include/asm/hypervisor.h | 26 + arch/x86/include/asm/ia32.h | 18 - arch/x86/include/asm/idle.h | 5 + arch/x86/include/asm/io.h | 37 +- arch/x86/include/asm/io_64.h | 2 - arch/x86/include/asm/io_apic.h | 10 + arch/x86/include/asm/iommu.h | 33 - arch/x86/include/asm/irq.h | 4 - arch/x86/include/asm/irq_regs_32.h | 2 + arch/x86/include/asm/kexec.h | 31 +- arch/x86/include/asm/linkage.h | 60 + arch/x86/include/asm/mach-default/mach_apic.h | 2 + arch/x86/include/asm/mach-default/mach_wakecpu.h | 24 +- arch/x86/include/asm/mach-default/smpboot_hooks.h | 8 +- arch/x86/include/asm/mach-generic/mach_apic.h | 1 + arch/x86/include/asm/mach-generic/mach_wakecpu.h | 12 + arch/x86/include/asm/mmu_context_32.h | 13 +- arch/x86/include/asm/msr-index.h | 2 + arch/x86/include/asm/msr.h | 15 +- arch/x86/include/asm/numaq/wakecpu.h | 24 +- arch/x86/include/asm/pci.h | 2 + arch/x86/include/asm/pgtable-2level.h | 50 +- arch/x86/include/asm/pgtable-3level.h | 1 + arch/x86/include/asm/pgtable.h | 28 +- arch/x86/include/asm/pgtable_32.h | 9 - arch/x86/include/asm/pgtable_64.h | 28 +- arch/x86/include/asm/prctl.h | 3 + arch/x86/include/asm/processor.h | 17 + arch/x86/include/asm/ptrace.h | 43 +- arch/x86/include/asm/reboot.h | 5 + arch/x86/include/asm/setup.h | 7 + arch/x86/include/asm/sigframe.h | 70 + arch/x86/include/asm/signal.h | 6 +- arch/x86/include/asm/sparsemem.h | 2 +- arch/x86/include/asm/syscalls.h | 16 +- arch/x86/include/asm/system.h | 6 +- arch/x86/include/asm/thread_info.h | 9 +- arch/x86/include/asm/trampoline.h | 7 + arch/x86/include/asm/traps.h | 11 +- arch/x86/include/asm/tsc.h | 8 +- arch/x86/include/asm/uaccess.h | 4 +- arch/x86/include/asm/uv/bios.h | 34 +- arch/x86/include/asm/uv/uv_hub.h | 103 +- arch/x86/include/asm/vmware.h | 27 + arch/x86/include/asm/xen/hypercall.h | 6 + arch/x86/include/asm/xen/hypervisor.h | 39 +- arch/x86/include/asm/xen/page.h | 5 + arch/x86/kernel/Makefile | 8 +- arch/x86/kernel/acpi/boot.c | 11 + arch/x86/kernel/amd_iommu.c | 1 + arch/x86/kernel/amd_iommu_init.c | 1 + arch/x86/kernel/aperture_64.c | 5 +- arch/x86/kernel/apic.c | 143 +- arch/x86/kernel/apm_32.c | 4 - arch/x86/kernel/asm-offsets_32.c | 2 +- arch/x86/kernel/asm-offsets_64.c | 4 +- arch/x86/kernel/bios_uv.c | 58 +- arch/x86/kernel/check.c | 161 + arch/x86/kernel/cpu/Makefile | 6 + arch/x86/kernel/cpu/addon_cpuid_features.c | 8 + arch/x86/kernel/cpu/amd.c | 9 +- arch/x86/kernel/cpu/common.c | 8 +- arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c | 4 + arch/x86/kernel/cpu/hypervisor.c | 58 + arch/x86/kernel/cpu/intel.c | 23 +- arch/x86/kernel/cpu/intel_cacheinfo.c | 17 +- arch/x86/kernel/cpu/mcheck/mce_amd_64.c | 2 +- arch/x86/kernel/cpu/mcheck/mce_intel_64.c | 2 +- arch/x86/kernel/cpu/mtrr/main.c | 346 +- arch/x86/kernel/cpu/vmware.c | 112 + arch/x86/kernel/crash.c | 70 +- arch/x86/kernel/ds.c | 1147 ++- arch/x86/kernel/dumpstack.c | 351 + arch/x86/kernel/dumpstack.h | 39 + arch/x86/kernel/dumpstack_32.c | 307 +- arch/x86/kernel/dumpstack_64.c | 289 +- arch/x86/kernel/e820.c | 16 - arch/x86/kernel/early-quirks.c | 1 + arch/x86/kernel/early_printk.c | 47 - arch/x86/kernel/entry_32.S | 528 +- arch/x86/kernel/entry_64.S | 1458 ++-- arch/x86/kernel/es7000_32.c | 62 +- arch/x86/kernel/ftrace.c | 390 +- arch/x86/kernel/genapic_64.c | 4 + arch/x86/kernel/genx2apic_uv_x.c | 111 +- arch/x86/kernel/head.c | 1 - arch/x86/kernel/head32.c | 3 + arch/x86/kernel/head64.c | 3 + arch/x86/kernel/hpet.c | 4 +- arch/x86/kernel/init_task.c | 1 - arch/x86/kernel/io_apic.c | 3 +- arch/x86/kernel/irq_64.c | 27 +- arch/x86/kernel/irqinit_32.c | 2 +- arch/x86/kernel/irqinit_64.c | 66 - arch/x86/kernel/machine_kexec_32.c | 104 +- arch/x86/kernel/microcode_amd.c | 232 +- arch/x86/kernel/microcode_core.c | 6 +- arch/x86/kernel/microcode_intel.c | 2 +- arch/x86/kernel/mpparse.c | 25 +- arch/x86/kernel/nmi.c | 58 +- arch/x86/kernel/numaq_32.c | 10 +- arch/x86/kernel/pci-dma.c | 11 +- arch/x86/kernel/process.c | 35 +- arch/x86/kernel/process_32.c | 67 +- arch/x86/kernel/process_64.c | 58 +- arch/x86/kernel/ptrace.c | 432 +- arch/x86/kernel/reboot.c | 126 +- arch/x86/kernel/relocate_kernel_32.S | 115 - arch/x86/kernel/setup.c | 169 +- arch/x86/kernel/sigframe.h | 42 - arch/x86/kernel/signal.c | 909 ++ arch/x86/kernel/signal_32.c | 716 -- arch/x86/kernel/signal_64.c | 516 - arch/x86/kernel/smp.c | 31 +- arch/x86/kernel/smpboot.c | 25 +- arch/x86/kernel/stacktrace.c | 64 + arch/x86/kernel/time_32.c | 2 +- arch/x86/kernel/time_64.c | 6 +- arch/x86/kernel/tlb_32.c | 13 +- arch/x86/kernel/tlb_64.c | 2 +- arch/x86/kernel/tlb_uv.c | 4 - arch/x86/kernel/trampoline.c | 19 +- arch/x86/kernel/traps.c | 38 +- arch/x86/kernel/tsc.c | 42 +- arch/x86/kernel/tsc_sync.c | 8 +- arch/x86/kernel/vmi_32.c | 119 - arch/x86/kernel/vmlinux_32.lds.S | 1 + arch/x86/kernel/vmlinux_64.lds.S | 1 + arch/x86/kernel/vsyscall_64.c | 12 + arch/x86/lguest/boot.c | 3 +- arch/x86/mach-generic/bigsmp.c | 1 + arch/x86/mach-generic/default.c | 1 + arch/x86/mach-generic/es7000.c | 14 +- arch/x86/mach-generic/probe.c | 16 +- arch/x86/mach-generic/summit.c | 1 + arch/x86/mm/Makefile | 3 +- arch/x86/mm/fault.c | 15 +- arch/x86/mm/init_32.c | 32 +- arch/x86/mm/init_64.c | 2 - arch/x86/mm/ioremap.c | 3 +- arch/x86/mm/pat.c | 236 + arch/x86/pci/common.c | 17 + arch/x86/pci/direct.c | 4 +- arch/x86/pci/pci.h | 1 + arch/x86/scripts/strip-symbols | 1 + arch/x86/vdso/vclock_gettime.c | 3 + arch/x86/vdso/vdso32-setup.c | 2 +- arch/x86/vdso/vma.c | 2 +- arch/x86/xen/enlighten.c | 17 +- arch/x86/xen/mmu.c | 17 +- arch/x86/xen/multicalls.c | 2 +- arch/x86/xen/setup.c | 9 +- arch/xtensa/platforms/iss/network.c | 21 +- block/Kconfig | 1 + block/blk-core.c | 46 +- block/blktrace.c | 332 +- block/elevator.c | 12 +- crypto/Kconfig | 29 +- crypto/Makefile | 1 + crypto/aes_generic.c | 1145 ++- crypto/ahash.c | 38 +- crypto/ansi_cprng.c | 35 +- crypto/api.c | 121 +- crypto/authenc.c | 3 + crypto/camellia.c | 84 +- crypto/crc32c.c | 290 +- crypto/crypto_null.c | 64 +- crypto/des_generic.c | 5 +- crypto/fcrypt.c | 8 +- crypto/hmac.c | 10 +- crypto/internal.h | 2 + crypto/md4.c | 56 +- crypto/md5.c | 50 +- crypto/michael_mic.c | 72 +- crypto/proc.c | 20 +- crypto/rmd128.c | 61 +- crypto/rmd160.c | 61 +- crypto/rmd256.c | 61 +- crypto/rmd320.c | 61 +- crypto/salsa20_generic.c | 75 +- crypto/sha1_generic.c | 56 +- crypto/sha256_generic.c | 104 +- crypto/sha512_generic.c | 127 +- crypto/shash.c | 508 + crypto/testmgr.c | 76 +- crypto/testmgr.h | 2 +- crypto/tgr192.c | 135 +- crypto/wp512.c | 121 +- drivers/acpi/bus.c | 8 - drivers/acpi/pci_irq.c | 56 + drivers/acpi/processor_idle.c | 6 +- drivers/acpi/utilities/utglobal.c | 2 +- drivers/ata/Kconfig | 3 +- drivers/ata/pata_mpc52xx.c | 546 +- drivers/atm/Kconfig | 6 + drivers/atm/Makefile | 1 + drivers/atm/solos-pci.c | 790 ++ drivers/block/aoe/aoe.h | 1 - drivers/block/aoe/aoeblk.c | 2 +- drivers/block/aoe/aoecmd.c | 22 +- drivers/block/aoe/aoenet.c | 11 - drivers/block/loop.c | 6 +- drivers/bluetooth/Kconfig | 20 - drivers/bluetooth/Makefile | 1 - drivers/bluetooth/bcm203x.c | 9 +- drivers/bluetooth/bfusb.c | 11 +- drivers/bluetooth/bpa10x.c | 7 +- drivers/bluetooth/bt3c_cs.c | 8 +- drivers/bluetooth/btsdio.c | 6 +- drivers/bluetooth/btusb.c | 229 +- drivers/bluetooth/hci_bcsp.c | 5 - drivers/bluetooth/hci_h4.c | 5 - drivers/bluetooth/hci_ldisc.c | 9 +- drivers/bluetooth/hci_usb.c | 1136 -- drivers/bluetooth/hci_usb.h | 129 - drivers/bluetooth/hci_vhci.c | 5 - drivers/char/Kconfig | 16 + drivers/char/Makefile | 2 + drivers/char/bsr.c | 84 +- drivers/char/hvc_console.c | 13 +- drivers/char/hvc_console.h | 2 +- drivers/char/hvc_iseries.c | 4 +- drivers/char/hvc_iucv.c | 850 ++ drivers/char/hvc_udbg.c | 96 + drivers/char/hvc_vio.c | 4 +- drivers/char/hvcs.c | 2 +- drivers/char/hvsi.c | 2 +- drivers/char/nvram.c | 264 +- drivers/char/sysrq.c | 18 +- drivers/char/tty_audit.c | 76 +- drivers/char/tty_io.c | 1 + drivers/connector/cn_proc.c | 16 +- drivers/crypto/hifn_795x.c | 494 +- drivers/crypto/padlock-aes.c | 52 +- drivers/crypto/talitos.c | 153 +- drivers/crypto/talitos.h | 85 +- drivers/edac/Kconfig | 2 +- drivers/edac/edac_device.c | 12 +- drivers/firmware/dmi_scan.c | 11 + drivers/firmware/iscsi_ibft.c | 7 +- drivers/gpu/drm/radeon/radeon_irq.c | 4 +- drivers/i2c/busses/i2c-sh_mobile.c | 73 +- drivers/ide/cs5530.c | 3 +- drivers/ide/macide.c | 1 - drivers/ide/sc1200.c | 3 +- drivers/infiniband/core/addr.c | 196 +- drivers/infiniband/core/cma.c | 86 +- drivers/infiniband/core/sysfs.c | 10 +- drivers/infiniband/hw/amso1100/c2_provider.c | 8 +- drivers/infiniband/hw/ehca/ehca_classes.h | 7 + drivers/infiniband/hw/ehca/ehca_eq.c | 2 +- drivers/infiniband/hw/ehca/ehca_main.c | 17 +- drivers/infiniband/hw/ehca/ehca_qp.c | 12 +- drivers/infiniband/hw/ehca/ehca_reqs.c | 13 +- drivers/infiniband/hw/ipath/ipath_driver.c | 49 +- drivers/infiniband/hw/ipath/ipath_file_ops.c | 30 +- drivers/infiniband/hw/ipath/ipath_fs.c | 2 +- drivers/infiniband/hw/ipath/ipath_iba6120.c | 61 + drivers/infiniband/hw/ipath/ipath_iba7220.c | 83 +- drivers/infiniband/hw/ipath/ipath_init_chip.c | 1 + drivers/infiniband/hw/ipath/ipath_kernel.h | 15 + drivers/infiniband/hw/ipath/ipath_keys.c | 2 + drivers/infiniband/hw/ipath/ipath_mad.c | 2 + drivers/infiniband/hw/ipath/ipath_qp.c | 32 +- drivers/infiniband/hw/ipath/ipath_rc.c | 5 +- drivers/infiniband/hw/ipath/ipath_sdma.c | 21 +- drivers/infiniband/hw/ipath/ipath_stats.c | 8 + drivers/infiniband/hw/ipath/ipath_ud.c | 19 +- drivers/infiniband/hw/ipath/ipath_verbs.c | 3 +- drivers/infiniband/hw/ipath/ipath_verbs.h | 1 + drivers/infiniband/hw/mlx4/cq.c | 12 +- drivers/infiniband/hw/mlx4/main.c | 2 +- drivers/infiniband/hw/mthca/mthca_mcg.c | 23 +- drivers/infiniband/hw/nes/nes.c | 17 +- drivers/infiniband/hw/nes/nes.h | 18 +- drivers/infiniband/hw/nes/nes_cm.c | 310 +- drivers/infiniband/hw/nes/nes_cm.h | 14 +- drivers/infiniband/hw/nes/nes_hw.c | 44 +- drivers/infiniband/hw/nes/nes_nic.c | 13 +- drivers/infiniband/hw/nes/nes_utils.c | 14 +- drivers/infiniband/hw/nes/nes_verbs.c | 45 +- drivers/infiniband/ulp/ipoib/ipoib.h | 23 - drivers/infiniband/ulp/ipoib/ipoib_cm.c | 8 +- drivers/infiniband/ulp/ipoib/ipoib_ib.c | 6 +- drivers/infiniband/ulp/ipoib/ipoib_main.c | 25 +- drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 70 +- drivers/infiniband/ulp/iser/iscsi_iser.h | 3 + drivers/infiniband/ulp/iser/iser_initiator.c | 132 +- drivers/infiniband/ulp/iser/iser_verbs.c | 9 +- drivers/infiniband/ulp/srp/ib_srp.c | 31 +- drivers/input/keyboard/sh_keysc.c | 28 +- drivers/isdn/capi/capifs.c | 4 +- drivers/isdn/gigaset/asyncdata.c | 18 +- drivers/isdn/gigaset/bas-gigaset.c | 13 +- drivers/isdn/gigaset/common.c | 21 +- drivers/isdn/gigaset/ev-layer.c | 42 +- drivers/isdn/gigaset/gigaset.h | 20 +- drivers/isdn/gigaset/i4l.c | 4 +- drivers/isdn/gigaset/interface.c | 52 +- drivers/isdn/gigaset/isocdata.c | 6 +- drivers/isdn/gigaset/ser-gigaset.c | 32 +- drivers/isdn/gigaset/usb-gigaset.c | 14 +- drivers/isdn/hardware/eicon/di.c | 28 +- drivers/isdn/hardware/eicon/message.c | 60 +- drivers/isdn/hardware/mISDN/hfc_multi.h | 4 +- drivers/isdn/hardware/mISDN/hfcmulti.c | 67 +- drivers/isdn/hysdn/hysdn_net.c | 6 +- drivers/isdn/hysdn/hysdn_procconf.c | 6 +- drivers/isdn/i4l/isdn_concap.c | 4 +- drivers/isdn/i4l/isdn_net.c | 224 +- drivers/isdn/i4l/isdn_net.h | 50 +- drivers/isdn/i4l/isdn_ppp.c | 32 +- drivers/isdn/mISDN/core.c | 8 +- drivers/isdn/mISDN/dsp_audio.c | 2 +- drivers/isdn/mISDN/dsp_cmx.c | 8 +- drivers/isdn/mISDN/dsp_core.c | 4 +- drivers/isdn/mISDN/dsp_hwec.c | 2 +- drivers/isdn/mISDN/dsp_pipeline.c | 2 +- drivers/isdn/mISDN/dsp_tones.c | 92 +- drivers/isdn/mISDN/l1oip_codec.c | 1 + drivers/isdn/mISDN/l1oip_core.c | 22 +- drivers/isdn/mISDN/layer1.c | 3 +- drivers/isdn/mISDN/layer2.c | 16 +- drivers/isdn/mISDN/socket.c | 2 +- drivers/isdn/mISDN/stack.c | 2 +- drivers/isdn/mISDN/tei.c | 4 +- drivers/isdn/mISDN/timerdev.c | 9 +- drivers/macintosh/via-cuda.c | 1 - drivers/macintosh/via-macii.c | 1 - drivers/macintosh/via-maciisi.c | 1 - drivers/macintosh/via-pmu.c | 4 +- drivers/macintosh/via-pmu68k.c | 1 - drivers/macintosh/windfarm_smu_sat.c | 5 +- drivers/md/dm.c | 8 +- drivers/media/dvb/b2c2/Kconfig | 2 +- drivers/media/dvb/b2c2/flexcop-fe-tuner.c | 2 + drivers/media/dvb/b2c2/flexcop-i2c.c | 6 +- drivers/media/dvb/b2c2/flexcop.c | 2 +- drivers/media/dvb/bt8xx/Kconfig | 2 +- drivers/media/dvb/bt8xx/dst.c | 4 +- drivers/media/dvb/dm1105/dm1105.c | 3 +- drivers/media/dvb/dvb-core/dvb_net.c | 37 +- drivers/media/dvb/dvb-usb/Kconfig | 46 +- drivers/media/dvb/dvb-usb/dib0700_devices.c | 6 +- drivers/media/dvb/dvb-usb/dvb-usb-dvb.c | 5 +- drivers/media/dvb/pluto2/pluto2.c | 3 +- drivers/media/dvb/ttpci/Kconfig | 2 +- drivers/media/video/Kconfig | 2 +- drivers/media/video/compat_ioctl32.c | 2 +- drivers/media/video/cx18/Kconfig | 2 +- drivers/media/video/cx23885/Kconfig | 4 +- drivers/media/video/cx88/Kconfig | 2 +- drivers/media/video/em28xx/em28xx-video.c | 3 +- drivers/media/video/gspca/gspca.c | 4 +- drivers/media/video/pvrusb2/Kconfig | 2 +- drivers/media/video/saa7134/Kconfig | 4 +- drivers/media/video/sh_mobile_ceu_camera.c | 20 +- drivers/message/fusion/mptlan.c | 22 +- drivers/message/fusion/mptlan.h | 2 +- drivers/misc/sgi-gru/gruprocfs.c | 1 - drivers/misc/sgi-xp/xp.h | 7 +- drivers/misc/sgi-xp/xp_main.c | 7 + drivers/misc/sgi-xp/xp_sn2.c | 34 + drivers/misc/sgi-xp/xp_uv.c | 70 +- drivers/misc/sgi-xp/xpc.h | 12 + drivers/misc/sgi-xp/xpc_sn2.c | 15 +- drivers/misc/sgi-xp/xpc_uv.c | 290 +- drivers/misc/sgi-xp/xpnet.c | 13 +- drivers/net/3c501.c | 3 +- drivers/net/3c501.h | 2 +- drivers/net/3c503.c | 21 +- drivers/net/3c505.c | 51 +- drivers/net/3c507.c | 15 +- drivers/net/3c509.c | 6 +- drivers/net/3c515.c | 13 +- drivers/net/3c523.c | 46 +- drivers/net/3c527.c | 4 +- drivers/net/3c59x.c | 13 +- drivers/net/7990.c | 1 - drivers/net/8139cp.c | 47 +- drivers/net/8139too.c | 57 +- drivers/net/82596.c | 48 +- drivers/net/8390.c | 50 +- drivers/net/8390.h | 15 + drivers/net/8390p.c | 50 +- drivers/net/Kconfig | 64 +- drivers/net/Makefile | 11 +- drivers/net/a2065.c | 5 +- drivers/net/ac3200.c | 5 +- drivers/net/acenic.c | 37 +- drivers/net/amd8111e.c | 12 +- drivers/net/apne.c | 29 +- drivers/net/appletalk/cops.c | 9 - drivers/net/appletalk/ipddp.c | 6 +- drivers/net/appletalk/ltpc.c | 13 +- drivers/net/arcnet/arc-rawmode.c | 5 +- drivers/net/arcnet/arc-rimi.c | 16 +- drivers/net/arcnet/arcnet.c | 32 +- drivers/net/arcnet/capmode.c | 9 +- drivers/net/arcnet/com20020-isa.c | 4 +- drivers/net/arcnet/com20020-pci.c | 2 +- drivers/net/arcnet/com20020.c | 10 +- drivers/net/arcnet/com90io.c | 4 +- drivers/net/arcnet/com90xx.c | 12 +- drivers/net/arcnet/rfc1051.c | 9 +- drivers/net/arcnet/rfc1201.c | 14 +- drivers/net/ariadne.c | 21 +- drivers/net/arm/Kconfig | 10 +- drivers/net/arm/Makefile | 3 +- drivers/net/arm/am79c961a.c | 7 +- drivers/net/arm/at91_ether.c | 11 +- drivers/net/arm/ep93xx_eth.c | 8 +- drivers/net/arm/ether1.c | 5 +- drivers/net/arm/ether3.c | 5 +- drivers/net/arm/etherh.c | 24 +- drivers/net/arm/ixp4xx_eth.c | 344 +- drivers/net/arm/ks8695net.c | 1676 +++ drivers/net/arm/ks8695net.h | 107 + drivers/net/at1700.c | 16 +- drivers/net/atarilance.c | 52 +- drivers/net/atl1e/atl1e_main.c | 47 +- drivers/net/atlx/atl1.c | 102 +- drivers/net/atlx/atl1.h | 4 +- drivers/net/atlx/atl2.c | 101 +- drivers/net/atlx/atl2.h | 1 - drivers/net/atlx/atlx.c | 13 - drivers/net/atp.c | 29 +- drivers/net/au1000_eth.c | 50 +- drivers/net/ax88796.c | 9 +- drivers/net/b44.c | 13 +- drivers/net/bfin_mac.c | 1 - drivers/net/bmac.c | 7 +- drivers/net/bnx2.c | 94 +- drivers/net/bnx2.h | 42 +- drivers/net/bnx2x_link.c | 72 +- drivers/net/bnx2x_link.h | 10 +- drivers/net/bnx2x_main.c | 95 +- drivers/net/bonding/Makefile | 3 + drivers/net/bonding/bond_3ad.c | 667 +- drivers/net/bonding/bond_3ad.h | 59 +- drivers/net/bonding/bond_alb.c | 37 +- drivers/net/bonding/bond_ipv6.c | 216 + drivers/net/bonding/bond_main.c | 477 +- drivers/net/bonding/bond_sysfs.c | 160 +- drivers/net/bonding/bonding.h | 68 +- drivers/net/can/vcan.c | 24 +- drivers/net/cassini.c | 16 +- drivers/net/chelsio/cxgb2.c | 94 +- drivers/net/chelsio/sge.c | 10 +- drivers/net/cpmac.c | 15 +- drivers/net/cris/eth_v10.c | 4 +- drivers/net/cs89x0.c | 16 +- drivers/net/cxgb3/adapter.h | 5 +- drivers/net/cxgb3/common.h | 4 +- drivers/net/cxgb3/cxgb3_ctl_defs.h | 17 + drivers/net/cxgb3/cxgb3_main.c | 130 +- drivers/net/cxgb3/cxgb3_offload.c | 76 +- drivers/net/cxgb3/sge.c | 105 +- drivers/net/cxgb3/t3_hw.c | 26 +- drivers/net/cxgb3/version.h | 2 +- drivers/net/cxgb3/vsc8211.c | 2 + drivers/net/de600.c | 4 +- drivers/net/de620.c | 26 +- drivers/net/declance.c | 7 +- drivers/net/defxx.c | 27 +- drivers/net/depca.c | 54 +- drivers/net/dl2k.c | 28 +- drivers/net/dm9000.c | 40 +- drivers/net/dummy.c | 15 +- drivers/net/e100.c | 68 +- drivers/net/e1000/e1000.h | 1 - drivers/net/e1000/e1000_main.c | 107 +- drivers/net/e1000e/82571.c | 19 +- drivers/net/e1000e/defines.h | 8 + drivers/net/e1000e/e1000.h | 2 + drivers/net/e1000e/es2lan.c | 194 +- drivers/net/e1000e/ethtool.c | 82 +- drivers/net/e1000e/hw.h | 8 +- drivers/net/e1000e/ich8lan.c | 151 +- drivers/net/e1000e/lib.c | 80 +- drivers/net/e1000e/netdev.c | 131 +- drivers/net/e1000e/phy.c | 12 +- drivers/net/e2100.c | 24 +- drivers/net/eepro.c | 10 +- drivers/net/eepro100.c | 2401 ---- drivers/net/eexpress.c | 3 +- drivers/net/ehea/ehea.h | 2 +- drivers/net/ehea/ehea_main.c | 9 +- drivers/net/ehea/ehea_qmr.c | 18 +- drivers/net/enc28j60.c | 49 +- drivers/net/enic/cq_desc.h | 5 +- drivers/net/enic/enic.h | 2 +- drivers/net/enic/enic_main.c | 86 +- drivers/net/enic/enic_res.c | 7 +- drivers/net/enic/enic_res.h | 4 - drivers/net/enic/vnic_dev.c | 70 +- drivers/net/enic/vnic_devcmd.h | 19 +- drivers/net/enic/vnic_intr.h | 2 +- drivers/net/enic/vnic_resource.h | 2 +- drivers/net/enic/vnic_rq.h | 9 +- drivers/net/enic/vnic_rss.h | 13 + drivers/net/enic/vnic_wq.h | 9 +- drivers/net/epic100.c | 56 +- drivers/net/eql.c | 12 +- drivers/net/es3210.c | 34 +- drivers/net/eth16i.c | 15 +- drivers/net/ewrk3.c | 18 +- drivers/net/fealnx.c | 6 +- drivers/net/fec.c | 6 +- drivers/net/fec_mpc52xx.c | 3 +- drivers/net/fec_mpc52xx_phy.c | 5 +- drivers/net/forcedeth.c | 90 +- drivers/net/fs_enet/fs_enet-main.c | 9 +- drivers/net/gianfar.c | 861 +- drivers/net/gianfar.h | 78 +- drivers/net/gianfar_ethtool.c | 89 +- drivers/net/gianfar_mii.c | 212 +- drivers/net/gianfar_mii.h | 2 + drivers/net/hamachi.c | 27 +- drivers/net/hamradio/6pack.c | 1 - drivers/net/hamradio/baycom_epp.c | 1 - drivers/net/hamradio/bpqether.c | 8 +- drivers/net/hamradio/dmascc.c | 13 +- drivers/net/hamradio/hdlcdrv.c | 1 - drivers/net/hamradio/mkiss.c | 4 +- drivers/net/hamradio/scc.c | 13 +- drivers/net/hamradio/yam.c | 1 - drivers/net/hp-plus.c | 27 +- drivers/net/hp.c | 25 +- drivers/net/hp100.c | 24 +- drivers/net/hydra.c | 28 +- drivers/net/ibm_newemac/core.c | 11 +- drivers/net/ibmlana.c | 6 +- drivers/net/ibmveth.c | 48 +- drivers/net/ifb.c | 13 +- drivers/net/igb/e1000_defines.h | 7 +- drivers/net/igb/e1000_mac.c | 25 +- drivers/net/igb/e1000_regs.h | 4 + drivers/net/igb/igb.h | 44 +- drivers/net/igb/igb_ethtool.c | 131 +- drivers/net/igb/igb_main.c | 403 +- drivers/net/ioc3-eth.c | 13 +- drivers/net/ipg.c | 9 - drivers/net/irda/ali-ircc.c | 17 +- drivers/net/irda/au1k_ir.c | 1 - drivers/net/irda/donauboe.c | 8 +- drivers/net/irda/irda-usb.c | 15 +- drivers/net/irda/irtty-sir.c | 7 +- drivers/net/irda/kingsun-sir.c | 1 - drivers/net/irda/ks959-sir.c | 1 - drivers/net/irda/ksdazzle-sir.c | 1 - drivers/net/irda/ma600-sir.c | 2 +- drivers/net/irda/mcs7780.c | 1 - drivers/net/irda/nsc-ircc.c | 17 +- drivers/net/irda/pxaficp_ir.c | 4 - drivers/net/irda/sa1100_ir.c | 28 +- drivers/net/irda/sir_dev.c | 12 +- drivers/net/irda/smsc-ircc2.c | 6 +- drivers/net/irda/stir4200.c | 1 - drivers/net/irda/via-ircc.c | 16 +- drivers/net/irda/vlsi_ir.c | 37 +- drivers/net/irda/w83977af_ir.c | 29 +- drivers/net/isa-skeleton.c | 16 +- drivers/net/iseries_veth.c | 14 +- drivers/net/ixgb/ixgb_main.c | 58 +- drivers/net/ixgbe/Makefile | 2 + drivers/net/ixgbe/ixgbe.h | 32 +- drivers/net/ixgbe/ixgbe_82598.c | 192 +- drivers/net/ixgbe/ixgbe_dcb.c | 332 + drivers/net/ixgbe/ixgbe_dcb.h | 184 + drivers/net/ixgbe/ixgbe_dcb_82598.c | 398 + drivers/net/ixgbe/ixgbe_dcb_82598.h | 94 + drivers/net/ixgbe/ixgbe_dcb_nl.c | 641 ++ drivers/net/ixgbe/ixgbe_ethtool.c | 134 +- drivers/net/ixgbe/ixgbe_main.c | 485 +- drivers/net/ixgbe/ixgbe_phy.c | 326 + drivers/net/ixgbe/ixgbe_phy.h | 25 + drivers/net/ixgbe/ixgbe_type.h | 28 +- drivers/net/ixp2000/ixpdev.c | 6 +- drivers/net/jazzsonic.c | 4 +- drivers/net/jme.c | 71 +- drivers/net/jme.h | 34 +- drivers/net/korina.c | 5 +- drivers/net/lance.c | 32 +- drivers/net/lib82596.c | 14 +- drivers/net/lib8390.c | 20 +- drivers/net/lne390.c | 29 +- drivers/net/loopback.c | 29 +- drivers/net/lp486e.c | 29 +- drivers/net/mac8390.c | 22 +- drivers/net/mac89x0.c | 16 +- drivers/net/macb.c | 18 +- drivers/net/mace.c | 34 +- drivers/net/macmace.c | 6 +- drivers/net/macsonic.c | 9 +- drivers/net/macvlan.c | 49 +- drivers/net/meth.c | 4 +- drivers/net/mlx4/cq.c | 11 +- drivers/net/mlx4/en_cq.c | 13 +- drivers/net/mlx4/en_main.c | 4 +- drivers/net/mlx4/en_netdev.c | 48 +- drivers/net/mlx4/en_params.c | 20 +- drivers/net/mlx4/en_rx.c | 9 +- drivers/net/mlx4/en_tx.c | 29 +- drivers/net/mlx4/eq.c | 121 +- drivers/net/mlx4/main.c | 53 +- drivers/net/mlx4/mcg.c | 25 +- drivers/net/mlx4/mlx4.h | 14 +- drivers/net/mlx4/mlx4_en.h | 12 +- drivers/net/mlx4/profile.c | 4 +- drivers/net/mv643xx_eth.c | 525 +- drivers/net/mvme147.c | 9 +- drivers/net/myri10ge/myri10ge.c | 71 +- drivers/net/myri10ge/myri10ge_mcp.h | 175 +- drivers/net/myri10ge/myri10ge_mcp_gen_header.h | 2 + drivers/net/myri_sbus.c | 27 +- drivers/net/natsemi.c | 12 +- drivers/net/ne-h8300.c | 30 +- drivers/net/ne.c | 29 +- drivers/net/ne2.c | 29 +- drivers/net/ne2k-pci.c | 28 +- drivers/net/ne3210.c | 31 +- drivers/net/netconsole.c | 9 +- drivers/net/netx-eth.c | 1 - drivers/net/netxen/netxen_nic_ethtool.c | 10 +- drivers/net/netxen/netxen_nic_hw.c | 6 +- drivers/net/netxen/netxen_nic_init.c | 2 - drivers/net/netxen/netxen_nic_main.c | 57 +- drivers/net/netxen/netxen_nic_niu.c | 7 +- drivers/net/ni5010.c | 15 +- drivers/net/ni52.c | 43 +- drivers/net/ni65.c | 39 +- drivers/net/niu.c | 145 +- drivers/net/niu.h | 2 +- drivers/net/ns83820.c | 28 +- drivers/net/pasemi_mac.c | 14 +- drivers/net/pasemi_mac_ethtool.c | 4 +- drivers/net/pci-skeleton.c | 8 +- drivers/net/pcmcia/3c574_cs.c | 6 +- drivers/net/pcmcia/3c589_cs.c | 6 +- drivers/net/pcmcia/axnet_cs.c | 22 +- drivers/net/pcmcia/com20020_cs.c | 6 +- drivers/net/pcmcia/fmvj18x_cs.c | 79 +- drivers/net/pcmcia/nmclan_cs.c | 6 +- drivers/net/pcmcia/pcnet_cs.c | 3 +- drivers/net/pcmcia/smc91c92_cs.c | 5 +- drivers/net/pcmcia/xirc2ps_cs.c | 6 +- drivers/net/pcnet32.c | 10 +- drivers/net/phy/Kconfig | 23 +- drivers/net/phy/Makefile | 5 +- drivers/net/phy/broadcom.c | 216 +- drivers/net/phy/et1011c.c | 113 + drivers/net/phy/mdio-gpio.c | 296 + drivers/net/phy/mdio-ofgpio.c | 204 - drivers/net/phy/mdio_bus.c | 40 +- drivers/net/phy/national.c | 155 + drivers/net/phy/phy.c | 2 +- drivers/net/phy/phy_device.c | 54 +- drivers/net/phy/smsc.c | 28 + drivers/net/phy/ste10Xp.c | 137 + drivers/net/plip.c | 35 +- drivers/net/ppp_async.c | 6 - drivers/net/ppp_generic.c | 234 +- drivers/net/ppp_synctty.c | 6 - drivers/net/pppoe.c | 5 +- drivers/net/pppol2tp.c | 94 +- drivers/net/ps3_gelic_net.c | 6 +- drivers/net/ps3_gelic_wireless.c | 37 +- drivers/net/ps3_gelic_wireless.h | 4 +- drivers/net/qla3xxx.c | 42 +- drivers/net/qlge/qlge_ethtool.c | 2 +- drivers/net/qlge/qlge_main.c | 79 +- drivers/net/qlge/qlge_mpi.c | 2 +- drivers/net/r6040.c | 51 +- drivers/net/r8169.c | 57 +- drivers/net/rionet.c | 31 +- drivers/net/rrunner.c | 25 +- drivers/net/s2io.c | 146 +- drivers/net/sb1000.c | 1 - drivers/net/sb1250-mac.c | 11 +- drivers/net/sc92031.c | 30 +- drivers/net/seeq8005.c | 13 +- drivers/net/sfc/Kconfig | 8 + drivers/net/sfc/Makefile | 5 +- drivers/net/sfc/boards.c | 206 +- drivers/net/sfc/boards.h | 14 +- drivers/net/sfc/efx.c | 449 +- drivers/net/sfc/efx.h | 12 +- drivers/net/sfc/enum.h | 36 +- drivers/net/sfc/ethtool.c | 175 +- drivers/net/sfc/falcon.c | 476 +- drivers/net/sfc/falcon.h | 3 + drivers/net/sfc/falcon_gmac.c | 229 + drivers/net/sfc/falcon_hwdefs.h | 161 +- drivers/net/sfc/falcon_xmac.c | 261 +- drivers/net/sfc/gmii.h | 137 +- drivers/net/sfc/mac.h | 16 +- drivers/net/sfc/mdio_10g.c | 483 +- drivers/net/sfc/mdio_10g.h | 63 +- drivers/net/sfc/mtd.c | 268 + drivers/net/sfc/net_driver.h | 131 +- drivers/net/sfc/phy.h | 7 +- drivers/net/sfc/rx.c | 2 +- drivers/net/sfc/selftest.c | 145 +- drivers/net/sfc/selftest.h | 14 +- drivers/net/sfc/sfe4001.c | 225 +- drivers/net/sfc/spi.h | 34 +- drivers/net/sfc/tenxpress.c | 796 +- drivers/net/sfc/workarounds.h | 12 +- drivers/net/sfc/xfp_phy.c | 29 +- drivers/net/sgiseeq.c | 7 +- drivers/net/sh_eth.c | 3 +- drivers/net/sis190.c | 7 +- drivers/net/sis900.c | 99 +- drivers/net/skfp/skfddi.c | 27 +- drivers/net/skge.c | 103 +- drivers/net/sky2.c | 56 +- drivers/net/slip.c | 12 +- drivers/net/smc-mca.c | 27 +- drivers/net/smc-ultra.c | 27 +- drivers/net/smc-ultra32.c | 5 +- drivers/net/smc911x.c | 16 +- drivers/net/smc9194.c | 13 +- drivers/net/smc91x.c | 42 +- drivers/net/smc91x.h | 58 +- drivers/net/smsc911x.c | 2071 ++++ drivers/net/smsc911x.h | 390 + drivers/net/smsc9420.c | 1744 +++ drivers/net/smsc9420.h | 275 + drivers/net/sonic.c | 1 - drivers/net/sonic.h | 20 +- drivers/net/spider_net.c | 17 +- drivers/net/spider_net_ethtool.c | 8 +- drivers/net/starfire.c | 24 +- drivers/net/stnic.c | 25 +- drivers/net/sun3_82586.c | 40 +- drivers/net/sun3lance.c | 10 +- drivers/net/sunbmac.c | 22 +- drivers/net/sundance.c | 6 +- drivers/net/sungem.c | 65 +- drivers/net/sunhme.c | 31 +- drivers/net/sunlance.c | 7 +- drivers/net/sunqe.c | 15 +- drivers/net/sunvnet.c | 5 +- drivers/net/tc35815.c | 49 +- drivers/net/tehuti.c | 73 +- drivers/net/tg3.c | 1068 ++- drivers/net/tg3.h | 188 +- drivers/net/tlan.c | 213 +- drivers/net/tokenring/3c359.c | 13 +- drivers/net/tokenring/Kconfig | 2 +- drivers/net/tokenring/abyss.c | 4 +- drivers/net/tokenring/ibmtr.c | 15 +- drivers/net/tokenring/lanstreamer.c | 36 +- drivers/net/tokenring/madgemc.c | 12 +- drivers/net/tokenring/olympic.c | 52 +- drivers/net/tokenring/proteon.c | 7 +- drivers/net/tokenring/skisa.c | 7 +- drivers/net/tokenring/smctr.c | 2 - drivers/net/tokenring/tms380tr.c | 15 +- drivers/net/tokenring/tmspci.c | 5 +- drivers/net/tsi108_eth.c | 12 +- drivers/net/tulip/de2104x.c | 54 +- drivers/net/tulip/de4x5.c | 17 +- drivers/net/tulip/dmfe.c | 7 +- drivers/net/tulip/eeprom.c | 2 +- drivers/net/tulip/interrupt.c | 10 +- drivers/net/tulip/tulip_core.c | 15 +- drivers/net/tulip/uli526x.c | 8 +- drivers/net/tulip/winbond-840.c | 16 +- drivers/net/tulip/xircom_cb.c | 4 +- drivers/net/tun.c | 41 +- drivers/net/typhoon.c | 15 +- drivers/net/ucc_geth.c | 408 +- drivers/net/ucc_geth.h | 1 + drivers/net/usb/asix.c | 5 +- drivers/net/usb/catc.c | 43 +- drivers/net/usb/dm9601.c | 5 +- drivers/net/usb/hso.c | 34 +- drivers/net/usb/kaweth.c | 17 +- drivers/net/usb/mcs7830.c | 9 +- drivers/net/usb/pegasus.c | 74 +- drivers/net/usb/rtl8150.c | 38 +- drivers/net/usb/smsc95xx.c | 110 +- drivers/net/usb/usbnet.c | 5 +- drivers/net/veth.c | 30 +- drivers/net/via-rhine.c | 47 +- drivers/net/via-velocity.c | 28 +- drivers/net/virtio_net.c | 217 +- drivers/net/wan/Kconfig | 9 + drivers/net/wan/Makefile | 3 +- drivers/net/wan/c101.c | 6 +- drivers/net/wan/cosa.c | 1 - drivers/net/wan/cycx_x25.c | 91 +- drivers/net/wan/dlci.c | 37 +- drivers/net/wan/dscc4.c | 4 +- drivers/net/wan/farsync.c | 2 - drivers/net/wan/hd64570.c | 723 ++ drivers/net/wan/hd64572.c | 640 ++ drivers/net/wan/hd6457x.c | 868 -- drivers/net/wan/hdlc_fr.c | 10 +- drivers/net/wan/hdlc_ppp.c | 649 +- drivers/net/wan/hostess_sv11.c | 1 - drivers/net/wan/ixp4xx_hss.c | 1325 +++ drivers/net/wan/lapbether.c | 3 - drivers/net/wan/lmc/lmc_main.c | 1 - drivers/net/wan/lmc/lmc_proto.c | 1 - drivers/net/wan/n2.c | 9 +- drivers/net/wan/pc300_drv.c | 22 +- drivers/net/wan/pc300too.c | 121 +- drivers/net/wan/pci200syn.c | 79 +- drivers/net/wan/sbni.c | 101 +- drivers/net/wan/sdla.c | 48 +- drivers/net/wan/sealevel.c | 1 - drivers/net/wan/syncppp.c | 1480 --- drivers/net/wan/wanxl.c | 9 +- drivers/net/wan/x25_asy.c | 52 +- drivers/net/wan/z85230.c | 12 +- drivers/net/wd.c | 29 +- drivers/net/wireless/Kconfig | 163 +- drivers/net/wireless/Makefile | 22 +- drivers/net/wireless/adm8211.c | 52 +- drivers/net/wireless/adm8211.h | 2 - drivers/net/wireless/airo.c | 243 +- drivers/net/wireless/airport.c | 286 - drivers/net/wireless/arlan-main.c | 27 +- drivers/net/wireless/ath5k/ath5k.h | 102 +- drivers/net/wireless/ath5k/attach.c | 14 +- drivers/net/wireless/ath5k/base.c | 191 +- drivers/net/wireless/ath5k/desc.c | 4 +- drivers/net/wireless/ath5k/dma.c | 190 +- drivers/net/wireless/ath5k/eeprom.c | 1194 ++- drivers/net/wireless/ath5k/eeprom.h | 253 +- drivers/net/wireless/ath5k/initvals.c | 8 +- drivers/net/wireless/ath5k/pcu.c | 233 +- drivers/net/wireless/ath5k/phy.c | 9 +- drivers/net/wireless/ath5k/qcu.c | 37 +- drivers/net/wireless/ath5k/reg.h | 16 +- drivers/net/wireless/ath5k/reset.c | 9 +- drivers/net/wireless/ath9k/Kconfig | 11 + drivers/net/wireless/ath9k/Makefile | 9 +- drivers/net/wireless/ath9k/ani.c | 852 ++ drivers/net/wireless/ath9k/ath9k.h | 432 +- drivers/net/wireless/ath9k/beacon.c | 319 +- drivers/net/wireless/ath9k/calib.c | 1021 ++ drivers/net/wireless/ath9k/core.c | 1886 --- drivers/net/wireless/ath9k/core.h | 926 +- drivers/net/wireless/ath9k/debug.c | 262 + drivers/net/wireless/ath9k/eeprom.c | 2824 +++++ drivers/net/wireless/ath9k/hw.c | 8490 ++++----------- drivers/net/wireless/ath9k/hw.h | 165 +- drivers/net/wireless/ath9k/initvals.h | 1938 +++- drivers/net/wireless/ath9k/mac.c | 946 ++ drivers/net/wireless/ath9k/main.c | 2353 +++-- drivers/net/wireless/ath9k/phy.c | 24 +- drivers/net/wireless/ath9k/phy.h | 5 + drivers/net/wireless/ath9k/rc.c | 1832 ++-- drivers/net/wireless/ath9k/rc.h | 220 +- drivers/net/wireless/ath9k/recv.c | 1242 +-- drivers/net/wireless/ath9k/reg.h | 109 +- drivers/net/wireless/ath9k/regd.c | 85 +- drivers/net/wireless/ath9k/regd.h | 2 +- drivers/net/wireless/ath9k/xmit.c | 1532 ++-- drivers/net/wireless/atmel.c | 79 +- drivers/net/wireless/b43/b43.h | 1 - drivers/net/wireless/b43/debugfs.c | 1 + drivers/net/wireless/b43/debugfs.h | 1 + drivers/net/wireless/b43/dma.c | 4 +- drivers/net/wireless/b43/main.c | 280 +- drivers/net/wireless/b43/phy_a.c | 4 +- drivers/net/wireless/b43/phy_common.c | 18 + drivers/net/wireless/b43/phy_g.c | 28 +- drivers/net/wireless/b43/pio.c | 3 +- drivers/net/wireless/b43/xmit.c | 64 +- drivers/net/wireless/b43/xmit.h | 5 +- drivers/net/wireless/b43legacy/b43legacy.h | 5 +- drivers/net/wireless/b43legacy/debugfs.c | 2 +- drivers/net/wireless/b43legacy/dma.c | 48 +- drivers/net/wireless/b43legacy/main.c | 211 +- drivers/net/wireless/b43legacy/phy.c | 6 +- drivers/net/wireless/b43legacy/pio.c | 31 +- drivers/net/wireless/b43legacy/xmit.c | 26 +- drivers/net/wireless/b43legacy/xmit.h | 2 +- drivers/net/wireless/hostap/Kconfig | 13 +- drivers/net/wireless/hostap/hostap.h | 2 +- drivers/net/wireless/hostap/hostap_80211.h | 2 +- drivers/net/wireless/hostap/hostap_80211_rx.c | 72 +- drivers/net/wireless/hostap/hostap_80211_tx.c | 23 +- drivers/net/wireless/hostap/hostap_ap.c | 253 +- drivers/net/wireless/hostap/hostap_ap.h | 8 +- drivers/net/wireless/hostap/hostap_common.h | 13 - drivers/net/wireless/hostap/hostap_hw.c | 71 +- drivers/net/wireless/hostap/hostap_info.c | 16 +- drivers/net/wireless/hostap/hostap_ioctl.c | 157 +- drivers/net/wireless/hostap/hostap_main.c | 45 +- drivers/net/wireless/hostap/hostap_pci.c | 2 +- drivers/net/wireless/hostap/hostap_proc.c | 35 +- drivers/net/wireless/hostap/hostap_wlan.h | 8 +- drivers/net/wireless/ipw2100.c | 8654 -------------- drivers/net/wireless/ipw2200.c |12008 -------------------- drivers/net/wireless/ipw2200.h | 2010 ---- drivers/net/wireless/ipw2x00/Kconfig | 191 + drivers/net/wireless/ipw2x00/Makefile | 14 + drivers/net/wireless/ipw2x00/ipw2100.c | 8649 ++++++++++++++ drivers/net/wireless/{ => ipw2x00}/ipw2100.h | 0 drivers/net/wireless/ipw2x00/ipw2200.c |11986 +++++++++++++++++++ drivers/net/wireless/ipw2x00/ipw2200.h | 2012 ++++ .../net/wireless/ipw2x00/libipw_geo.c | 0 drivers/net/wireless/ipw2x00/libipw_module.c | 293 + drivers/net/wireless/ipw2x00/libipw_rx.c | 1799 +++ drivers/net/wireless/ipw2x00/libipw_tx.c | 546 + drivers/net/wireless/ipw2x00/libipw_wx.c | 760 ++ drivers/net/wireless/iwlwifi/Kconfig | 2 + drivers/net/wireless/iwlwifi/Makefile | 3 +- drivers/net/wireless/iwlwifi/iwl-3945-commands.h | 148 +- drivers/net/wireless/iwlwifi/iwl-3945-core.h | 28 +- drivers/net/wireless/iwlwifi/iwl-3945-debug.h | 2 +- drivers/net/wireless/iwlwifi/iwl-3945-hw.h | 4 +- drivers/net/wireless/iwlwifi/iwl-3945-io.h | 24 +- drivers/net/wireless/iwlwifi/iwl-3945-led.c | 2 +- drivers/net/wireless/iwlwifi/iwl-3945-led.h | 2 +- drivers/net/wireless/iwlwifi/iwl-3945-rs.c | 223 +- drivers/net/wireless/iwlwifi/iwl-3945-rs.h | 2 +- drivers/net/wireless/iwlwifi/iwl-3945.c | 125 +- drivers/net/wireless/iwlwifi/iwl-3945.h | 40 +- drivers/net/wireless/iwlwifi/iwl-4965-hw.h | 203 +- drivers/net/wireless/iwlwifi/iwl-4965.c | 251 +- drivers/net/wireless/iwlwifi/iwl-5000-hw.h | 64 +- drivers/net/wireless/iwlwifi/iwl-5000.c | 440 +- drivers/net/wireless/iwlwifi/iwl-agn-hcmd-check.c | 108 + drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 179 +- drivers/net/wireless/iwlwifi/iwl-agn-rs.h | 22 +- drivers/net/wireless/iwlwifi/iwl-agn.c | 1241 +-- drivers/net/wireless/iwlwifi/iwl-calib.c | 19 +- drivers/net/wireless/iwlwifi/iwl-calib.h | 2 +- drivers/net/wireless/iwlwifi/iwl-commands.h | 536 +- drivers/net/wireless/iwlwifi/iwl-core.c | 335 +- drivers/net/wireless/iwlwifi/iwl-core.h | 78 +- drivers/net/wireless/iwlwifi/iwl-csr.h | 8 +- drivers/net/wireless/iwlwifi/iwl-debug.h | 33 +- drivers/net/wireless/iwlwifi/iwl-debugfs.c | 83 +- drivers/net/wireless/iwlwifi/iwl-dev.h | 183 +- drivers/net/wireless/iwlwifi/iwl-eeprom.c | 50 +- drivers/net/wireless/iwlwifi/iwl-eeprom.h | 15 +- drivers/net/wireless/iwlwifi/iwl-fh.h | 173 +- drivers/net/wireless/iwlwifi/iwl-hcmd.c | 4 +- drivers/net/wireless/iwlwifi/iwl-helpers.h | 111 +- drivers/net/wireless/iwlwifi/iwl-io.h | 37 +- drivers/net/wireless/iwlwifi/iwl-led.c | 7 +- drivers/net/wireless/iwlwifi/iwl-led.h | 2 +- drivers/net/wireless/iwlwifi/iwl-power.c | 38 +- drivers/net/wireless/iwlwifi/iwl-power.h | 2 +- drivers/net/wireless/iwlwifi/iwl-prph.h | 8 +- drivers/net/wireless/iwlwifi/iwl-rfkill.c | 12 +- drivers/net/wireless/iwlwifi/iwl-rfkill.h | 2 +- drivers/net/wireless/iwlwifi/iwl-rx.c | 230 +- drivers/net/wireless/iwlwifi/iwl-scan.c | 131 +- drivers/net/wireless/iwlwifi/iwl-spectrum.c | 198 + drivers/net/wireless/iwlwifi/iwl-spectrum.h | 3 +- drivers/net/wireless/iwlwifi/iwl-sta.c | 259 +- drivers/net/wireless/iwlwifi/iwl-sta.h | 16 +- drivers/net/wireless/iwlwifi/iwl-tx.c | 438 +- drivers/net/wireless/iwlwifi/iwl3945-base.c | 751 +- drivers/net/wireless/libertas/assoc.c | 69 +- drivers/net/wireless/libertas/cmd.c | 32 +- drivers/net/wireless/libertas/cmd.h | 3 +- drivers/net/wireless/libertas/debugfs.c | 11 +- drivers/net/wireless/libertas/decl.h | 4 - drivers/net/wireless/libertas/defs.h | 14 +- drivers/net/wireless/libertas/dev.h | 7 +- drivers/net/wireless/libertas/ethtool.c | 14 +- drivers/net/wireless/libertas/host.h | 9 + drivers/net/wireless/libertas/hostcmd.h | 26 +- drivers/net/wireless/libertas/if_sdio.c | 3 +- drivers/net/wireless/libertas/if_usb.c | 7 +- drivers/net/wireless/libertas/main.c | 135 +- drivers/net/wireless/libertas/persistcfg.c | 18 +- drivers/net/wireless/libertas/radiotap.h | 3 - drivers/net/wireless/libertas/scan.c | 105 +- drivers/net/wireless/libertas/scan.h | 4 + drivers/net/wireless/libertas/tx.c | 2 +- drivers/net/wireless/libertas/types.h | 5 +- drivers/net/wireless/libertas/wext.c | 80 +- drivers/net/wireless/libertas_tf/cmd.c | 5 +- drivers/net/wireless/libertas_tf/main.c | 8 +- drivers/net/wireless/mac80211_hwsim.c | 294 +- drivers/net/wireless/netwave_cs.c | 6 +- drivers/net/wireless/orinoco.c | 6021 ---------- drivers/net/wireless/orinoco.h | 213 - drivers/net/wireless/orinoco/Makefile | 12 + drivers/net/wireless/orinoco/airport.c | 286 + drivers/net/wireless/{ => orinoco}/hermes.c | 0 drivers/net/wireless/{ => orinoco}/hermes.h | 0 drivers/net/wireless/{ => orinoco}/hermes_dld.c | 0 drivers/net/wireless/{ => orinoco}/hermes_dld.h | 0 drivers/net/wireless/{ => orinoco}/hermes_rid.h | 0 drivers/net/wireless/orinoco/orinoco.c | 6130 ++++++++++ drivers/net/wireless/orinoco/orinoco.h | 222 + drivers/net/wireless/orinoco/orinoco_cs.c | 537 + .../net/wireless/{ => orinoco}/orinoco_nortel.c | 0 drivers/net/wireless/{ => orinoco}/orinoco_pci.c | 0 drivers/net/wireless/{ => orinoco}/orinoco_pci.h | 0 drivers/net/wireless/{ => orinoco}/orinoco_plx.c | 0 drivers/net/wireless/{ => orinoco}/orinoco_tmd.c | 0 drivers/net/wireless/orinoco/spectrum_cs.c | 530 + drivers/net/wireless/orinoco_cs.c | 533 - drivers/net/wireless/p54/p54.h | 74 +- drivers/net/wireless/p54/p54common.c | 1620 ++- drivers/net/wireless/p54/p54common.h | 349 +- drivers/net/wireless/p54/p54pci.c | 70 +- drivers/net/wireless/p54/p54pci.h | 2 +- drivers/net/wireless/p54/p54usb.c | 261 +- drivers/net/wireless/p54/p54usb.h | 1 + drivers/net/wireless/prism54/isl_ioctl.c | 24 +- drivers/net/wireless/prism54/islpci_hotplug.c | 8 +- drivers/net/wireless/ray_cs.c | 12 +- drivers/net/wireless/rndis_wlan.c | 95 +- drivers/net/wireless/rt2x00/Kconfig | 1 + drivers/net/wireless/rt2x00/rt2400pci.c | 373 +- drivers/net/wireless/rt2x00/rt2400pci.h | 2 + drivers/net/wireless/rt2x00/rt2500pci.c | 407 +- drivers/net/wireless/rt2x00/rt2500pci.h | 2 + drivers/net/wireless/rt2x00/rt2500usb.c | 443 +- drivers/net/wireless/rt2x00/rt2500usb.h | 5 + drivers/net/wireless/rt2x00/rt2x00.h | 113 +- drivers/net/wireless/rt2x00/rt2x00config.c | 202 +- drivers/net/wireless/rt2x00/rt2x00crypto.c | 79 +- drivers/net/wireless/rt2x00/rt2x00debug.c | 47 +- drivers/net/wireless/rt2x00/rt2x00debug.h | 13 + drivers/net/wireless/rt2x00/rt2x00dev.c | 86 +- drivers/net/wireless/rt2x00/rt2x00leds.c | 88 +- drivers/net/wireless/rt2x00/rt2x00lib.h | 33 +- drivers/net/wireless/rt2x00/rt2x00mac.c | 56 +- drivers/net/wireless/rt2x00/rt2x00pci.c | 41 +- drivers/net/wireless/rt2x00/rt2x00pci.h | 37 +- drivers/net/wireless/rt2x00/rt2x00queue.c | 94 +- drivers/net/wireless/rt2x00/rt2x00queue.h | 47 +- drivers/net/wireless/rt2x00/rt2x00usb.c | 145 +- drivers/net/wireless/rt2x00/rt2x00usb.h | 141 +- drivers/net/wireless/rt2x00/rt61pci.c | 469 +- drivers/net/wireless/rt2x00/rt61pci.h | 2 + drivers/net/wireless/rt2x00/rt73usb.c | 689 +- drivers/net/wireless/rt2x00/rt73usb.h | 2 + drivers/net/wireless/rtl8180_dev.c | 1081 -- drivers/net/wireless/rtl8180_rtl8225.c | 780 -- drivers/net/wireless/rtl8187.h | 221 - drivers/net/wireless/rtl8187_dev.c | 1261 -- drivers/net/wireless/rtl8187_rtl8225.c | 992 -- drivers/net/wireless/rtl818x.h | 231 - drivers/net/wireless/rtl818x/Makefile | 7 + drivers/net/wireless/{ => rtl818x}/rtl8180.h | 0 drivers/net/wireless/rtl818x/rtl8180_dev.c | 1093 ++ .../net/wireless/{ => rtl818x}/rtl8180_grf5101.c | 0 .../net/wireless/{ => rtl818x}/rtl8180_grf5101.h | 0 .../net/wireless/{ => rtl818x}/rtl8180_max2820.c | 0 .../net/wireless/{ => rtl818x}/rtl8180_max2820.h | 0 drivers/net/wireless/rtl818x/rtl8180_rtl8225.c | 788 ++ .../net/wireless/{ => rtl818x}/rtl8180_rtl8225.h | 0 .../net/wireless/{ => rtl818x}/rtl8180_sa2400.c | 0 .../net/wireless/{ => rtl818x}/rtl8180_sa2400.h | 0 drivers/net/wireless/rtl818x/rtl8187.h | 227 + drivers/net/wireless/rtl818x/rtl8187_dev.c | 1496 +++ drivers/net/wireless/rtl818x/rtl8187_rtl8225.c | 971 ++ .../net/wireless/{ => rtl818x}/rtl8187_rtl8225.h | 0 drivers/net/wireless/rtl818x/rtl818x.h | 232 + drivers/net/wireless/spectrum_cs.c | 507 - drivers/net/wireless/strip.c | 22 +- drivers/net/wireless/wavelan.c | 122 +- drivers/net/wireless/wavelan_cs.c | 39 +- drivers/net/wireless/wl3501.h | 4 +- drivers/net/wireless/wl3501_cs.c | 11 +- drivers/net/wireless/zd1201.c | 131 +- drivers/net/wireless/zd1211rw/zd_chip.c | 4 +- drivers/net/wireless/zd1211rw/zd_mac.c | 44 +- drivers/net/wireless/zd1211rw/zd_usb.c | 2 +- drivers/net/xen-netfront.c | 9 +- drivers/net/xtsonic.c | 6 +- drivers/net/yellowfin.c | 42 +- drivers/net/znet.c | 28 +- drivers/net/zorro8390.c | 29 +- drivers/of/base.c | 68 +- drivers/of/gpio.c | 70 +- drivers/of/of_i2c.c | 11 + drivers/parisc/led.c | 4 +- drivers/pci/hotplug/rpadlpar_core.c | 69 +- drivers/pci/quirks.c | 170 +- drivers/ps3/ps3av.c | 20 - drivers/ps3/ps3av_cmd.c | 4 +- drivers/rapidio/rio-scan.c | 8 +- drivers/rtc/rtc-isl1208.c | 7 + drivers/s390/block/dasd.c | 4 + drivers/s390/block/dasd_devmap.c | 19 +- drivers/s390/block/dasd_eckd.c | 2 +- drivers/s390/block/dasd_proc.c | 28 +- drivers/s390/block/dcssblk.c | 77 +- drivers/s390/block/xpram.c | 41 +- drivers/s390/char/monreader.c | 41 +- drivers/s390/char/monwriter.c | 5 +- drivers/s390/char/sclp_cmd.c | 29 +- drivers/s390/char/sclp_config.c | 10 +- drivers/s390/char/sclp_cpi_sys.c | 12 +- drivers/s390/char/sclp_sdias.c | 18 +- drivers/s390/char/sclp_vt220.c | 33 +- drivers/s390/char/vmcp.c | 11 +- drivers/s390/char/vmlogrdr.c | 26 +- drivers/s390/char/vmur.c | 15 +- drivers/s390/char/zcore.c | 14 +- drivers/s390/cio/blacklist.c | 14 +- drivers/s390/cio/ccwgroup.c | 26 +- drivers/s390/cio/chsc.c | 8 +- drivers/s390/cio/chsc_sch.c | 2 +- drivers/s390/cio/cio.c | 245 +- drivers/s390/cio/cio.h | 18 +- drivers/s390/cio/cmf.c | 63 +- drivers/s390/cio/css.c | 12 +- drivers/s390/cio/device.c | 237 +- drivers/s390/cio/device.h | 1 + drivers/s390/cio/device_fsm.c | 46 +- drivers/s390/cio/device_pgid.c | 2 +- drivers/s390/cio/device_status.c | 4 +- drivers/s390/cio/qdio.h | 33 +- drivers/s390/cio/qdio_debug.c | 104 +- drivers/s390/cio/qdio_debug.h | 112 +- drivers/s390/cio/qdio_main.c | 648 +- drivers/s390/cio/qdio_perf.c | 8 + drivers/s390/cio/qdio_perf.h | 5 + drivers/s390/cio/qdio_setup.c | 145 +- drivers/s390/cio/qdio_thinint.c | 29 +- drivers/s390/crypto/ap_bus.c | 212 +- drivers/s390/crypto/ap_bus.h | 6 +- drivers/s390/crypto/zcrypt_cex2a.c | 10 +- drivers/s390/crypto/zcrypt_pcica.c | 10 +- drivers/s390/crypto/zcrypt_pcicc.c | 10 +- drivers/s390/crypto/zcrypt_pcixcc.c | 10 +- drivers/s390/net/ctcm_fsms.c | 46 +- drivers/s390/net/ctcm_main.c | 72 +- drivers/s390/net/ctcm_main.h | 6 - drivers/s390/net/ctcm_mpc.c | 15 +- drivers/s390/net/ctcm_sysfs.c | 3 + drivers/s390/net/lcs.c | 104 +- drivers/s390/net/netiucv.c | 64 +- drivers/s390/net/qeth_core.h | 9 +- drivers/s390/net/qeth_core_main.c | 176 +- drivers/s390/net/qeth_core_offl.c | 8 +- drivers/s390/net/qeth_l2_main.c | 55 +- drivers/s390/net/qeth_l3_main.c | 211 +- drivers/s390/scsi/zfcp_aux.c | 28 +- drivers/s390/scsi/zfcp_ccw.c | 3 + drivers/s390/scsi/zfcp_cfdc.c | 3 + drivers/s390/scsi/zfcp_dbf.c | 3 + drivers/s390/scsi/zfcp_def.h | 2 + drivers/s390/scsi/zfcp_erp.c | 10 +- drivers/s390/scsi/zfcp_fc.c | 3 + drivers/s390/scsi/zfcp_fsf.c | 3 + drivers/s390/scsi/zfcp_qdio.c | 3 + drivers/s390/scsi/zfcp_scsi.c | 3 + drivers/s390/scsi/zfcp_sysfs.c | 3 + drivers/s390/sysinfo.c | 127 +- drivers/scsi/iscsi_tcp.c | 4 +- drivers/scsi/mac_scsi.c | 1 - drivers/scsi/qla4xxx/ql4_os.c | 3 +- drivers/serial/mpc52xx_uart.c | 74 +- drivers/serial/pmac_zilog.c | 27 + drivers/serial/sh-sci.c | 563 +- drivers/serial/sh-sci.h | 45 +- drivers/ssb/main.c | 11 +- drivers/ssb/pcihost_wrapper.c | 2 +- drivers/staging/slicoss/slicoss.c | 7 +- drivers/staging/winbond/linux/wbusb.c | 6 +- drivers/staging/wlan-ng/p80211netdev.c | 20 +- drivers/staging/wlan-ng/p80211wext.c | 58 +- drivers/usb/atm/cxacru.c | 4 +- drivers/usb/atm/usbatm.c | 5 +- drivers/usb/core/devio.c | 10 +- drivers/usb/core/inode.c | 4 +- drivers/usb/gadget/f_phonet.c | 621 + drivers/usb/gadget/m66592-udc.c | 34 +- drivers/usb/gadget/m66592-udc.h | 27 +- drivers/usb/gadget/u_ether.c | 10 +- drivers/usb/gadget/u_phonet.h | 21 + drivers/usb/host/r8a66597-hcd.c | 34 +- drivers/usb/host/r8a66597.h | 8 +- drivers/uwb/wlp/eda.c | 38 +- drivers/video/Kconfig | 33 +- drivers/video/console/fbcon.c | 78 +- drivers/video/controlfb.c | 4 +- drivers/video/fb_defio.c | 27 +- drivers/video/macfb.c | 33 +- drivers/video/ps3fb.c | 23 +- drivers/video/sh7760fb.c | 94 +- drivers/video/sh_mobile_lcdcfb.c | 198 +- drivers/w1/w1_io.c | 4 +- drivers/xen/balloon.c | 4 +- drivers/xen/features.c | 6 +- drivers/xen/grant-table.c | 1 + firmware/Makefile | 3 + firmware/WHENCE | 11 + firmware/cxgb3/t3b_psram-1.1.0.bin.ihex | 162 + firmware/cxgb3/t3c_psram-1.1.0.bin.ihex | 162 + firmware/cxgb3/t3fw-7.0.0.bin.ihex | 1881 +++ fs/9p/fid.c | 2 +- fs/9p/vfs_inode.c | 4 +- fs/9p/vfs_super.c | 4 +- fs/affs/inode.c | 4 +- fs/affs/super.c | 4 +- fs/afs/proc.c | 4 +- fs/afs/server.c | 9 +- fs/anon_inodes.c | 4 +- fs/attr.c | 4 +- fs/autofs/inode.c | 4 +- fs/autofs4/dev-ioctl.c | 3 +- fs/autofs4/inode.c | 4 +- fs/autofs4/waitq.c | 4 +- fs/bfs/dir.c | 4 +- fs/binfmt_aout.c | 2 +- fs/binfmt_elf.c | 22 +- fs/binfmt_elf_fdpic.c | 19 +- fs/binfmt_flat.c | 2 +- fs/binfmt_som.c | 2 +- fs/bio.c | 5 +- fs/cifs/AUTHORS | 2 + fs/cifs/CHANGES | 9 + fs/cifs/README | 12 +- fs/cifs/cifs_dfs_ref.c | 48 +- fs/cifs/cifs_fs_sb.h | 7 +- fs/cifs/cifs_spnego.c | 6 +- fs/cifs/cifsencrypt.c | 30 +- fs/cifs/cifsencrypt.h | 3 +- fs/cifs/cifsfs.c | 75 +- fs/cifs/cifsfs.h | 2 +- fs/cifs/cifsglob.h | 15 +- fs/cifs/cifspdu.h | 2 +- fs/cifs/cifsproto.h | 5 +- fs/cifs/cifssmb.c | 49 +- fs/cifs/connect.c | 685 +- fs/cifs/dir.c | 21 +- fs/cifs/file.c | 25 +- fs/cifs/inode.c | 66 +- fs/cifs/ioctl.c | 2 +- fs/cifs/misc.c | 13 +- fs/cifs/sess.c | 5 +- fs/cifs/smbdes.c | 5 +- fs/cifs/smbencrypt.c | 9 +- fs/cifs/transport.c | 378 +- fs/coda/cache.c | 6 +- fs/coda/file.c | 3 +- fs/coda/upcall.c | 2 +- fs/compat.c | 42 +- fs/devpts/inode.c | 4 +- fs/dlm/netlink.c | 2 +- fs/dquot.c | 4 +- fs/ecryptfs/ecryptfs_kernel.h | 3 +- fs/ecryptfs/kthread.c | 9 +- fs/ecryptfs/main.c | 3 +- fs/ecryptfs/messaging.c | 27 +- fs/ecryptfs/miscdev.c | 27 +- fs/exec.c | 183 +- fs/exportfs/expfs.c | 4 +- fs/ext2/balloc.c | 2 +- fs/ext2/ialloc.c | 4 +- fs/ext3/balloc.c | 2 +- fs/ext3/ialloc.c | 4 +- fs/ext4/balloc.c | 2 +- fs/ext4/ialloc.c | 4 +- fs/fat/file.c | 2 +- fs/fat/inode.c | 4 +- fs/fcntl.c | 18 +- fs/file_table.c | 10 +- fs/fuse/dev.c | 4 +- fs/fuse/dir.c | 25 +- fs/gfs2/inode.c | 10 +- fs/hfs/inode.c | 4 +- fs/hfs/super.c | 4 +- fs/hfsplus/inode.c | 4 +- fs/hfsplus/options.c | 4 +- fs/hpfs/namei.c | 24 +- fs/hpfs/super.c | 4 +- fs/hppfs/hppfs.c | 6 +- fs/hugetlbfs/inode.c | 21 +- fs/inotify_user.c | 2 +- fs/internal.h | 6 + fs/ioprio.c | 18 +- fs/jfs/jfs_inode.c | 4 +- fs/lockd/host.c | 8 +- fs/lockd/mon.c | 2 +- fs/locks.c | 2 +- fs/minix/bitmap.c | 4 +- fs/namei.c | 10 +- fs/namespace.c | 2 +- fs/ncpfs/ioctl.c | 91 +- fs/nfs/nfsroot.c | 6 +- fs/nfs/super.c | 6 +- fs/nfsctl.c | 5 +- fs/nfsd/auth.c | 95 +- fs/nfsd/nfs4recover.c | 72 +- fs/nfsd/nfs4state.c | 4 +- fs/nfsd/nfsctl.c | 2 +- fs/nfsd/nfsfh.c | 11 +- fs/nfsd/vfs.c | 9 +- fs/ocfs2/cluster/netdebug.c | 8 +- fs/ocfs2/cluster/nodemanager.c | 2 +- fs/ocfs2/cluster/tcp.c | 29 +- fs/ocfs2/dlm/dlmfs.c | 8 +- fs/ocfs2/namei.c | 4 +- fs/omfs/inode.c | 8 +- fs/open.c | 59 +- fs/pipe.c | 4 +- fs/posix_acl.c | 4 +- fs/proc/array.c | 32 +- fs/proc/base.c | 36 +- fs/proc/proc_devtree.c | 3 +- fs/quota.c | 4 +- fs/ramfs/inode.c | 4 +- fs/reiserfs/namei.c | 4 +- fs/seq_file.c | 14 +- fs/smbfs/dir.c | 3 +- fs/smbfs/inode.c | 2 +- fs/smbfs/proc.c | 2 +- fs/super.c | 2 +- fs/sysv/ialloc.c | 4 +- fs/ubifs/budget.c | 2 +- fs/ubifs/dir.c | 4 +- fs/udf/ialloc.c | 4 +- fs/udf/namei.c | 2 +- fs/ufs/ialloc.c | 4 +- fs/xfs/linux-2.6/xfs_cred.h | 6 +- fs/xfs/linux-2.6/xfs_globals.h | 2 +- fs/xfs/linux-2.6/xfs_ioctl.c | 5 +- fs/xfs/xfs_acl.c | 6 +- fs/xfs/xfs_inode.h | 2 +- fs/xfs/xfs_vnodeops.h | 10 +- include/acpi/acoutput.h | 2 +- include/acpi/platform/aclinux.h | 6 +- include/asm-generic/bug.h | 8 + include/asm-generic/memory_model.h | 2 +- include/asm-generic/pgtable.h | 50 + include/asm-generic/vmlinux.lds.h | 31 +- include/asm-m32r/system.h | 2 +- include/asm-m68k/byteorder.h | 16 +- include/asm-m68k/machw.h | 22 - include/crypto/aes.h | 8 +- include/crypto/algapi.h | 16 +- include/crypto/hash.h | 125 + include/crypto/internal/hash.h | 16 +- include/keys/keyring-type.h | 31 + include/linux/atm.h | 17 +- include/linux/atmdev.h | 15 + include/linux/audit.h | 26 + include/linux/binfmts.h | 16 +- include/linux/blktrace_api.h | 172 +- include/linux/capability.h | 25 +- include/linux/cgroup_subsys.h | 6 + include/linux/compiler.h | 84 +- include/linux/crc32c.h | 6 +- include/linux/cred.h | 342 +- include/linux/crypto.h | 10 +- include/linux/dcbnl.h | 340 + include/linux/dccp.h | 42 +- include/linux/dmi.h | 2 + include/linux/etherdevice.h | 46 + include/linux/ethtool.h | 2 + include/linux/fb.h | 2 +- include/linux/fddidevice.h | 1 + include/linux/filter.h | 3 +- include/linux/fs.h | 8 +- include/linux/fsl_devices.h | 18 +- include/linux/ftrace.h | 293 +- include/linux/ftrace_irq.h | 13 + include/linux/hardirq.h | 15 +- include/linux/hdlc.h | 4 +- include/linux/hippidevice.h | 4 +- include/linux/ieee80211.h | 212 +- include/linux/if.h | 1 + include/linux/if_arp.h | 3 + include/linux/in.h | 4 + include/linux/init_task.h | 14 +- include/linux/input.h | 2 + include/linux/ipv6.h | 1 + include/linux/kernel.h | 12 - include/linux/kexec.h | 4 + include/linux/key-ui.h | 66 - include/linux/key.h | 32 +- include/linux/keyctl.h | 4 +- include/linux/linkage.h | 8 - include/linux/list_nulls.h | 94 + include/linux/marker.h | 75 +- include/linux/mdio-gpio.h | 25 + include/linux/mfd/wm8350/audio.h | 38 +- include/linux/mii.h | 33 + include/linux/mlx4/device.h | 4 +- include/linux/mm.h | 21 + include/linux/mroute6.h | 26 +- include/linux/netdevice.h | 400 +- include/linux/netfilter_bridge/ebtables.h | 3 +- include/linux/netfilter_ipv4/ipt_policy.h | 2 + include/linux/netfilter_ipv6/ip6t_policy.h | 2 + include/linux/netlink.h | 3 +- include/linux/netpoll.h | 5 - include/linux/nl80211.h | 223 +- include/linux/nsproxy.h | 1 - include/linux/of.h | 6 + include/linux/of_gpio.h | 44 +- include/linux/pci.h | 6 + include/linux/pci_ids.h | 5 + include/linux/phy.h | 2 + include/linux/pid.h | 4 +- include/linux/pkt_cls.h | 14 + include/linux/pkt_sched.h | 16 + include/linux/ptrace.h | 22 + include/linux/rculist_nulls.h | 110 + include/linux/rcupdate.h | 2 + include/linux/rfkill.h | 8 +- include/linux/ring_buffer.h | 16 +- include/linux/rio_drv.h | 4 +- include/linux/rtnetlink.h | 5 + include/linux/sched.h | 102 +- include/linux/securebits.h | 2 +- include/linux/security.h | 344 +- include/linux/seq_file.h | 1 + include/linux/skbuff.h | 54 +- include/linux/smsc911x.h | 47 + include/linux/snmp.h | 3 + include/linux/stacktrace.h | 8 + include/linux/sunrpc/svc_xprt.h | 8 +- include/linux/topology.h | 2 +- include/linux/tracepoint.h | 57 +- include/linux/tty.h | 6 +- include/linux/user_namespace.h | 13 +- include/linux/virtio_net.h | 9 + include/linux/xfrm.h | 14 + include/net/bluetooth/bluetooth.h | 4 +- include/net/bluetooth/hci.h | 2 +- include/net/cfg80211.h | 142 +- include/net/checksum.h | 2 +- include/net/dcbnl.h | 53 + include/net/dn.h | 8 +- include/net/dn_fib.h | 6 +- include/net/dst.h | 39 +- include/net/flow.h | 9 +- include/net/gen_stats.h | 3 +- include/net/ieee80211.h | 148 +- include/net/ieee80211_crypt.h | 108 - include/net/ieee80211_radiotap.h | 15 +- include/net/inet_hashtables.h | 85 +- include/net/inet_timewait_sock.h | 10 +- include/net/ip.h | 3 +- include/net/ip_vs.h | 17 +- include/net/iucv/iucv.h | 45 + include/net/lib80211.h | 129 + include/net/mac80211.h | 446 +- include/net/ndisc.h | 14 + include/net/neighbour.h | 15 +- include/net/net_namespace.h | 22 + include/net/netfilter/nf_conntrack.h | 5 +- include/net/netfilter/nf_conntrack_ecache.h | 57 +- include/net/netfilter/nf_conntrack_expect.h | 2 + include/net/netfilter/nf_conntrack_helper.h | 5 +- include/net/netfilter/nf_conntrack_l4proto.h | 2 +- include/net/netfilter/nf_conntrack_tuple.h | 12 +- include/net/netfilter/nfnetlink_log.h | 14 + include/net/netlink.h | 24 +- include/net/netns/ipv4.h | 2 + include/net/netns/ipv6.h | 12 + include/net/netns/mib.h | 3 + include/net/netns/x_tables.h | 5 + include/net/netns/xfrm.h | 56 + include/net/phonet/pep.h | 2 +- include/net/phonet/phonet.h | 2 +- include/net/phonet/pn_dev.h | 2 +- include/net/pkt_cls.h | 2 +- include/net/protocol.h | 3 + include/net/sch_generic.h | 38 +- include/net/scm.h | 4 +- include/net/sctp/sctp.h | 9 +- include/net/sctp/user.h | 2 + include/net/sock.h | 86 +- include/net/syncppp.h | 102 - include/net/tcp.h | 20 +- include/net/udp.h | 25 +- include/net/udplite.h | 2 +- include/net/wireless.h | 90 +- include/net/xfrm.h | 110 +- include/sound/ac97_codec.h | 2 + include/sound/asound.h | 1 + include/sound/core.h | 28 +- include/sound/info.h | 106 +- include/sound/jack.h | 2 + include/sound/l3.h | 18 + include/sound/s3c24xx_uda134x.h | 14 + include/sound/soc-dai.h | 231 + include/sound/soc-dapm.h | 2 - include/sound/soc.h | 206 +- include/sound/uda134x.h | 26 + include/sound/version.h | 2 +- include/trace/block.h | 76 + include/trace/boot.h | 60 + include/trace/sched.h | 36 +- include/video/sh_mobile_lcdc.h | 1 + include/xen/interface/event_channel.h | 2 + init/Kconfig | 8 + init/main.c | 36 +- ipc/mqueue.c | 19 +- ipc/shm.c | 9 +- ipc/util.c | 18 +- kernel/Makefile | 5 +- kernel/acct.c | 7 +- kernel/auditsc.c | 255 +- kernel/capability.c | 288 +- kernel/cgroup.c | 25 +- kernel/cred-internals.h | 21 + kernel/cred.c | 588 + kernel/delayacct.c | 2 +- kernel/exit.c | 28 +- kernel/extable.c | 5 +- kernel/fork.c | 76 +- kernel/futex.c | 20 +- kernel/futex_compat.c | 7 +- kernel/kallsyms.c | 16 +- kernel/kmod.c | 30 +- kernel/kthread.c | 3 + kernel/lockdep.c | 1 + kernel/marker.c | 192 +- kernel/module.c | 13 +- kernel/nsproxy.c | 15 +- kernel/power/disk.c | 13 +- kernel/power/main.c | 5 +- kernel/profile.c | 2 +- kernel/ptrace.c | 41 +- kernel/sched.c | 407 +- kernel/sched_debug.c | 57 +- kernel/sched_fair.c | 9 +- kernel/sched_rt.c | 9 +- kernel/sched_stats.h | 5 +- kernel/signal.c | 62 +- kernel/sys.c | 586 +- kernel/sysctl.c | 22 +- kernel/timer.c | 8 +- kernel/trace/Kconfig | 115 +- kernel/trace/Makefile | 9 + kernel/trace/ftrace.c | 929 ++- kernel/trace/ring_buffer.c | 709 +- kernel/trace/trace.c | 978 ++- kernel/trace/trace.h | 265 +- kernel/trace/trace_boot.c | 158 +- kernel/trace/trace_branch.c | 342 + kernel/trace/trace_functions.c | 30 +- kernel/trace/trace_functions_graph.c | 669 ++ kernel/trace/trace_hw_branches.c | 195 + kernel/trace/trace_irqsoff.c | 61 +- kernel/trace/trace_mmiotrace.c | 33 +- kernel/trace/trace_nop.c | 65 +- kernel/trace/trace_power.c | 179 + kernel/trace/trace_sched_switch.c | 121 +- kernel/trace/trace_sched_wakeup.c | 72 +- kernel/trace/trace_selftest.c | 173 +- kernel/trace/trace_stack.c | 70 +- kernel/trace/trace_sysprof.c | 31 +- kernel/tracepoint.c | 295 +- kernel/tsacct.c | 6 +- kernel/uid16.c | 31 +- kernel/user.c | 98 +- kernel/user_namespace.c | 65 +- kernel/workqueue.c | 8 +- lib/Kconfig | 2 + lib/Makefile | 2 +- lib/bug.c | 19 +- lib/is_single_threaded.c | 45 + lib/libcrc32c.c | 182 +- lib/vsprintf.c | 77 + mm/bounce.c | 5 +- mm/memory.c | 70 +- mm/mempolicy.c | 9 +- mm/migrate.c | 9 +- mm/mlock.c | 45 + mm/oom_kill.c | 12 +- mm/shmem.c | 8 +- mm/swapfile.c | 9 + net/802/fddi.c | 8 +- net/802/hippi.c | 14 +- net/802/tr.c | 24 +- net/8021q/vlan.c | 26 +- net/8021q/vlan.h | 6 +- net/8021q/vlan_core.c | 2 - net/8021q/vlan_dev.c | 76 +- net/9p/client.c | 2 +- net/9p/trans_rdma.c | 2 - net/Kconfig | 7 +- net/Makefile | 4 +- net/appletalk/aarp.c | 3 +- net/appletalk/ddp.c | 5 +- net/appletalk/sysctl_net_atalk.c | 14 +- net/atm/atm_sysfs.c | 2 +- net/atm/br2684.c | 7 +- net/atm/clip.c | 4 +- net/atm/common.h | 1 + net/atm/ioctl.c | 49 +- net/atm/lec.c | 60 +- net/atm/mpc.c | 40 +- net/atm/mpoa_caches.c | 18 +- net/atm/pvc.c | 3 + net/atm/resources.c | 88 +- net/atm/resources.h | 2 +- net/atm/svc.c | 19 + net/ax25/af_ax25.c | 2 +- net/ax25/ax25_in.c | 41 +- net/ax25/ax25_route.c | 2 +- net/ax25/sysctl_net_ax25.c | 58 +- net/bluetooth/af_bluetooth.c | 50 +- net/bluetooth/bnep/bnep.h | 2 +- net/bluetooth/bnep/core.c | 8 +- net/bluetooth/bnep/netdev.c | 11 +- net/bluetooth/bnep/sock.c | 5 - net/bluetooth/cmtp/capi.c | 5 - net/bluetooth/cmtp/core.c | 5 - net/bluetooth/cmtp/sock.c | 5 - net/bluetooth/hci_conn.c | 5 - net/bluetooth/hci_core.c | 11 +- net/bluetooth/hci_event.c | 5 - net/bluetooth/hci_sock.c | 5 - net/bluetooth/hci_sysfs.c | 12 +- net/bluetooth/hidp/core.c | 5 - net/bluetooth/hidp/sock.c | 5 - net/bluetooth/l2cap.c | 5 - net/bluetooth/rfcomm/core.c | 7 - net/bluetooth/rfcomm/sock.c | 9 +- net/bluetooth/rfcomm/tty.c | 48 +- net/bluetooth/sco.c | 5 - net/bridge/br_device.c | 20 +- net/bridge/br_if.c | 4 +- net/bridge/br_netfilter.c | 13 +- net/bridge/br_sysfs_br.c | 2 +- net/bridge/netfilter/ebt_log.c | 18 +- net/bridge/netfilter/ebtable_broute.c | 26 +- net/bridge/netfilter/ebtable_filter.c | 41 +- net/bridge/netfilter/ebtable_nat.c | 38 +- net/bridge/netfilter/ebtables.c | 52 +- net/can/raw.c | 22 +- net/core/datagram.c | 5 +- net/core/dev.c | 466 +- net/core/dst.c | 6 +- net/core/ethtool.c | 53 +- net/core/fib_rules.c | 7 +- net/core/filter.c | 19 + net/core/flow.c | 6 +- net/core/gen_estimator.c | 97 +- net/core/neighbour.c | 73 +- net/core/net-sysfs.c | 15 +- net/core/net_namespace.c | 2 - net/core/netpoll.c | 20 +- net/core/pktgen.c | 42 +- net/core/rtnetlink.c | 15 +- net/core/scm.c | 10 +- net/core/skbuff.c | 277 +- net/core/sock.c | 46 +- net/core/sysctl_net_core.c | 68 +- net/dcb/Kconfig | 22 + net/dcb/Makefile | 1 + net/dcb/dcbnl.c | 1122 ++ net/dccp/ackvec.c | 9 +- net/dccp/ackvec.h | 5 +- net/dccp/ccid.c | 62 +- net/dccp/ccid.h | 26 +- net/dccp/ccids/ccid2.c | 6 +- net/dccp/dccp.h | 17 +- net/dccp/diag.c | 11 +- net/dccp/feat.c | 1458 ++- net/dccp/feat.h | 130 +- net/dccp/input.c | 44 +- net/dccp/ipv4.c | 13 +- net/dccp/ipv6.c | 15 +- net/dccp/minisocks.c | 54 +- net/dccp/options.c | 229 +- net/dccp/output.c | 19 +- net/dccp/probe.c | 19 +- net/dccp/proto.c | 224 +- net/dccp/sysctl.c | 21 - net/dccp/timer.c | 12 - net/decnet/af_decnet.c | 62 +- net/decnet/dn_dev.c | 22 +- net/decnet/dn_neigh.c | 18 +- net/decnet/dn_nsp_in.c | 28 +- net/decnet/dn_nsp_out.c | 23 +- net/decnet/dn_route.c | 29 +- net/decnet/dn_table.c | 2 +- net/decnet/sysctl_net_decnet.c | 48 +- net/dsa/mv88e6060.c | 6 +- net/dsa/mv88e6123_61_65.c | 4 +- net/dsa/mv88e6131.c | 4 +- net/dsa/mv88e6xxx.c | 2 +- net/dsa/slave.c | 2 +- net/dsa/tag_dsa.c | 1 - net/dsa/tag_edsa.c | 1 - net/dsa/tag_trailer.c | 1 - net/ethernet/eth.c | 19 +- net/ieee80211/Kconfig | 73 - net/ieee80211/Makefile | 12 - net/ieee80211/ieee80211_crypt.c | 206 - net/ieee80211/ieee80211_crypt_ccmp.c | 493 - net/ieee80211/ieee80211_crypt_tkip.c | 787 -- net/ieee80211/ieee80211_crypt_wep.c | 295 - net/ieee80211/ieee80211_module.c | 338 - net/ieee80211/ieee80211_rx.c | 1831 --- net/ieee80211/ieee80211_tx.c | 545 - net/ieee80211/ieee80211_wx.c | 760 -- net/ipv4/af_inet.c | 116 +- net/ipv4/ah4.c | 10 +- net/ipv4/arp.c | 36 +- net/ipv4/cipso_ipv4.c | 1 - net/ipv4/devinet.c | 19 +- net/ipv4/esp4.c | 8 +- net/ipv4/fib_frontend.c | 10 +- net/ipv4/fib_hash.c | 12 +- net/ipv4/fib_semantics.c | 8 +- net/ipv4/fib_trie.c | 6 +- net/ipv4/icmp.c | 39 +- net/ipv4/igmp.c | 95 +- net/ipv4/inet_connection_sock.c | 31 +- net/ipv4/inet_diag.c | 31 +- net/ipv4/inet_hashtables.c | 277 +- net/ipv4/inet_lro.c | 4 +- net/ipv4/inet_timewait_sock.c | 48 +- net/ipv4/inetpeer.c | 2 +- net/ipv4/ip_forward.c | 2 +- net/ipv4/ip_fragment.c | 21 +- net/ipv4/ip_gre.c | 58 +- net/ipv4/ip_input.c | 10 +- net/ipv4/ip_output.c | 24 +- net/ipv4/ip_sockglue.c | 72 +- net/ipv4/ipcomp.c | 10 +- net/ipv4/ipconfig.c | 40 +- net/ipv4/ipip.c | 37 +- net/ipv4/ipmr.c | 280 +- net/ipv4/netfilter.c | 7 +- net/ipv4/netfilter/arp_tables.c | 16 +- net/ipv4/netfilter/arptable_filter.c | 12 +- net/ipv4/netfilter/ip_tables.c | 12 +- net/ipv4/netfilter/ipt_CLUSTERIP.c | 9 +- net/ipv4/netfilter/ipt_LOG.c | 11 +- net/ipv4/netfilter/ipt_addrtype.c | 16 +- net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c | 27 +- net/ipv4/netfilter/nf_conntrack_proto_icmp.c | 4 +- net/ipv4/netfilter/nf_nat_h323.c | 58 +- net/ipv4/netfilter/nf_nat_irc.c | 4 +- net/ipv4/netfilter/nf_nat_rule.c | 27 +- net/ipv4/netfilter/nf_nat_sip.c | 18 +- net/ipv4/netfilter/nf_nat_snmp_basic.c | 9 +- net/ipv4/proc.c | 8 +- net/ipv4/raw.c | 10 +- net/ipv4/route.c | 227 +- net/ipv4/sysctl_net_ipv4.c | 188 +- net/ipv4/tcp.c | 130 +- net/ipv4/tcp_cubic.c | 120 +- net/ipv4/tcp_diag.c | 2 +- net/ipv4/tcp_input.c | 511 +- net/ipv4/tcp_ipv4.c | 137 +- net/ipv4/tcp_minisocks.c | 2 +- net/ipv4/tcp_output.c | 219 +- net/ipv4/tcp_probe.c | 7 +- net/ipv4/tcp_timer.c | 14 +- net/ipv4/tcp_yeah.c | 4 +- net/ipv4/udp.c | 271 +- net/ipv4/udp_impl.h | 4 +- net/ipv4/udplite.c | 14 +- net/ipv4/xfrm4_input.c | 4 +- net/ipv4/xfrm4_policy.c | 15 +- net/ipv4/xfrm4_state.c | 2 - net/ipv6/addrconf.c | 80 +- net/ipv6/addrlabel.c | 34 +- net/ipv6/af_inet6.c | 2 +- net/ipv6/ah6.c | 9 +- net/ipv6/anycast.c | 6 +- net/ipv6/datagram.c | 3 +- net/ipv6/esp6.c | 7 +- net/ipv6/exthdrs.c | 2 +- net/ipv6/icmp.c | 21 +- net/ipv6/inet6_connection_sock.c | 2 +- net/ipv6/inet6_hashtables.c | 182 +- net/ipv6/ip6_flowlabel.c | 8 +- net/ipv6/ip6_output.c | 5 +- net/ipv6/ip6_tunnel.c | 37 +- net/ipv6/ip6mr.c | 490 +- net/ipv6/ipcomp6.c | 10 +- net/ipv6/ipv6_sockglue.c | 34 +- net/ipv6/mcast.c | 41 +- net/ipv6/mip6.c | 3 +- net/ipv6/ndisc.c | 105 +- net/ipv6/netfilter.c | 7 +- net/ipv6/netfilter/ip6t_LOG.c | 11 +- net/ipv6/netfilter/ip6t_REJECT.c | 2 +- net/ipv6/netfilter/ip6table_filter.c | 17 +- net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c | 5 +- net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c | 2 +- net/ipv6/netfilter/nf_conntrack_reasm.c | 6 +- net/ipv6/raw.c | 3 +- net/ipv6/reassembly.c | 12 +- net/ipv6/route.c | 47 +- net/ipv6/sit.c | 35 +- net/ipv6/syncookies.c | 2 +- net/ipv6/sysctl_net_ipv6.c | 4 +- net/ipv6/tcp_ipv6.c | 28 +- net/ipv6/udp.c | 151 +- net/ipv6/udp_impl.h | 4 +- net/ipv6/udplite.c | 9 +- net/ipv6/xfrm6_input.c | 9 +- net/ipv6/xfrm6_policy.c | 22 +- net/ipv6/xfrm6_state.c | 2 - net/ipv6/xfrm6_tunnel.c | 33 +- net/ipx/sysctl_net_ipx.c | 2 +- net/irda/irlan/irlan_client.c | 4 +- net/irda/irlan/irlan_common.c | 2 +- net/irda/irlap_frame.c | 17 +- net/irda/irsysctl.c | 50 +- net/irda/irttp.c | 14 +- net/irda/timer.c | 2 +- net/iucv/af_iucv.c | 19 +- net/iucv/iucv.c | 161 +- net/key/af_key.c | 217 +- net/llc/af_llc.c | 1 - net/llc/llc_proc.c | 3 +- net/llc/sysctl_net_llc.c | 20 +- net/mac80211/Kconfig | 8 +- net/mac80211/Makefile | 2 + net/mac80211/cfg.c | 194 +- net/mac80211/debugfs.c | 12 +- net/mac80211/debugfs_key.c | 4 +- net/mac80211/debugfs_netdev.c | 117 +- net/mac80211/debugfs_sta.c | 84 +- net/mac80211/event.c | 5 +- net/mac80211/ht.c | 265 +- net/mac80211/ieee80211_i.h | 90 +- net/mac80211/iface.c | 54 +- net/mac80211/key.c | 10 +- net/mac80211/main.c | 284 +- net/mac80211/mesh.c | 4 +- net/mac80211/mesh.h | 5 +- net/mac80211/mesh_hwmp.c | 7 +- net/mac80211/mesh_plink.c | 49 +- net/mac80211/mlme.c | 606 +- net/mac80211/rate.c | 52 +- net/mac80211/rate.h | 11 +- net/mac80211/rc80211_minstrel.c | 109 +- net/mac80211/rc80211_minstrel.h | 2 + net/mac80211/rc80211_pid.h | 3 +- net/mac80211/rc80211_pid_algo.c | 38 +- net/mac80211/rc80211_pid_debugfs.c | 5 +- net/mac80211/rx.c | 174 +- net/mac80211/scan.c | 24 +- net/mac80211/sta_info.c | 37 +- net/mac80211/sta_info.h | 45 +- net/mac80211/tkip.c | 10 +- net/mac80211/tx.c | 462 +- net/mac80211/util.c | 107 +- net/mac80211/wep.c | 33 +- net/mac80211/wep.h | 2 +- net/mac80211/wext.c | 257 +- net/mac80211/wme.c | 32 +- net/mac80211/wpa.c | 32 +- net/netfilter/Kconfig | 5 +- net/netfilter/ipvs/ip_vs_conn.c | 20 +- net/netfilter/ipvs/ip_vs_core.c | 20 +- net/netfilter/ipvs/ip_vs_ctl.c | 82 +- net/netfilter/ipvs/ip_vs_dh.c | 34 +- net/netfilter/ipvs/ip_vs_ftp.c | 13 +- net/netfilter/ipvs/ip_vs_lblc.c | 69 +- net/netfilter/ipvs/ip_vs_lblcr.c | 96 +- net/netfilter/ipvs/ip_vs_lc.c | 3 - net/netfilter/ipvs/ip_vs_nq.c | 3 - net/netfilter/ipvs/ip_vs_proto.c | 38 +- net/netfilter/ipvs/ip_vs_proto_ah_esp.c | 10 +- net/netfilter/ipvs/ip_vs_proto_tcp.c | 8 +- net/netfilter/ipvs/ip_vs_proto_udp.c | 8 +- net/netfilter/ipvs/ip_vs_rr.c | 3 - net/netfilter/ipvs/ip_vs_sed.c | 3 - net/netfilter/ipvs/ip_vs_sh.c | 34 +- net/netfilter/ipvs/ip_vs_sync.c | 4 +- net/netfilter/ipvs/ip_vs_wlc.c | 3 - net/netfilter/ipvs/ip_vs_wrr.c | 3 - net/netfilter/ipvs/ip_vs_xmit.c | 34 +- net/netfilter/nf_conntrack_acct.c | 2 +- net/netfilter/nf_conntrack_amanda.c | 1 + net/netfilter/nf_conntrack_core.c | 61 +- net/netfilter/nf_conntrack_ecache.c | 14 +- net/netfilter/nf_conntrack_expect.c | 43 +- net/netfilter/nf_conntrack_ftp.c | 24 +- net/netfilter/nf_conntrack_h323_main.c | 13 +- net/netfilter/nf_conntrack_helper.c | 32 +- net/netfilter/nf_conntrack_irc.c | 14 +- net/netfilter/nf_conntrack_netbios_ns.c | 1 + net/netfilter/nf_conntrack_netlink.c | 201 +- net/netfilter/nf_conntrack_pptp.c | 1 + net/netfilter/nf_conntrack_proto_generic.c | 4 +- net/netfilter/nf_conntrack_proto_gre.c | 2 +- net/netfilter/nf_conntrack_proto_sctp.c | 30 +- net/netfilter/nf_conntrack_proto_tcp.c | 50 +- net/netfilter/nf_conntrack_proto_udp.c | 8 +- net/netfilter/nf_conntrack_proto_udplite.c | 4 +- net/netfilter/nf_conntrack_sane.c | 1 + net/netfilter/nf_conntrack_sip.c | 1 + net/netfilter/nf_conntrack_standalone.c | 16 +- net/netfilter/nf_conntrack_tftp.c | 1 + net/netfilter/nfnetlink_log.c | 9 +- net/netfilter/xt_NFLOG.c | 5 +- net/netfilter/xt_dccp.c | 16 +- net/netfilter/xt_hashlimit.c | 14 +- net/netfilter/xt_iprange.c | 36 +- net/netfilter/xt_owner.c | 16 +- net/netfilter/xt_recent.c | 32 +- net/netlabel/netlabel_addrlist.c | 4 +- net/netlabel/netlabel_mgmt.c | 1 - net/netlink/af_netlink.c | 7 + net/netlink/attr.c | 8 +- net/netrom/af_netrom.c | 4 +- net/netrom/sysctl_net_netrom.c | 48 +- net/packet/af_packet.c | 2 + net/phonet/af_phonet.c | 8 +- net/phonet/pep-gprs.c | 218 +- net/phonet/pep.c | 38 +- net/phonet/pn_dev.c | 6 +- net/phonet/socket.c | 13 +- net/phonet/sysctl.c | 4 +- net/rfkill/rfkill-input.c | 337 +- net/rfkill/rfkill-input.h | 3 + net/rfkill/rfkill.c | 183 +- net/rose/af_rose.c | 4 +- net/rose/sysctl_net_rose.c | 40 +- net/rxrpc/af_rxrpc.c | 4 +- net/rxrpc/ar-connection.c | 2 +- net/rxrpc/ar-connevent.c | 2 +- net/rxrpc/ar-error.c | 3 +- net/rxrpc/ar-key.c | 6 +- net/rxrpc/ar-local.c | 16 +- net/rxrpc/ar-peer.c | 8 +- net/rxrpc/ar-proc.c | 16 +- net/rxrpc/ar-security.c | 2 +- net/rxrpc/ar-transport.c | 12 +- net/rxrpc/rxkad.c | 2 +- net/sched/Kconfig | 22 + net/sched/Makefile | 2 + net/sched/act_api.c | 18 +- net/sched/act_gact.c | 4 +- net/sched/act_ipt.c | 4 +- net/sched/act_mirred.c | 4 +- net/sched/act_nat.c | 4 +- net/sched/act_pedit.c | 4 +- net/sched/act_police.c | 33 +- net/sched/act_simple.c | 4 +- net/sched/act_skbedit.c | 4 +- net/sched/cls_api.c | 3 +- net/sched/cls_basic.c | 2 +- net/sched/cls_cgroup.c | 288 + net/sched/cls_flow.c | 4 +- net/sched/cls_fw.c | 2 +- net/sched/cls_route.c | 2 +- net/sched/cls_tcindex.c | 6 - net/sched/cls_u32.c | 11 +- net/sched/ematch.c | 18 +- net/sched/sch_api.c | 50 +- net/sched/sch_atm.c | 36 +- net/sched/sch_blackhole.c | 1 + net/sched/sch_cbq.c | 76 +- net/sched/sch_drr.c | 519 + net/sched/sch_dsmark.c | 22 +- net/sched/sch_fifo.c | 4 +- net/sched/sch_generic.c | 40 +- net/sched/sch_gred.c | 22 +- net/sched/sch_hfsc.c | 64 +- net/sched/sch_htb.c | 171 +- net/sched/sch_multiq.c | 82 +- net/sched/sch_netem.c | 160 +- net/sched/sch_prio.c | 50 +- net/sched/sch_red.c | 33 +- net/sched/sch_sfq.c | 71 +- net/sched/sch_tbf.c | 44 +- net/sched/sch_teql.c | 19 +- net/sctp/ipv6.c | 35 +- net/sctp/protocol.c | 29 +- net/sctp/sm_statefuns.c | 24 +- net/sctp/socket.c | 206 +- net/sctp/sysctl.c | 82 +- net/socket.c | 6 +- net/sunrpc/auth.c | 14 +- net/sunrpc/clnt.c | 8 +- net/sunrpc/rpcb_clnt.c | 17 +- net/sunrpc/svcauth_unix.c | 24 +- net/sunrpc/svcsock.c | 6 +- net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | 4 +- net/sunrpc/xprtrdma/svc_rdma_sendto.c | 2 +- net/sunrpc/xprtrdma/svc_rdma_transport.c | 16 +- net/sunrpc/xprtrdma/transport.c | 14 +- net/sunrpc/xprtrdma/verbs.c | 16 +- net/sunrpc/xprtsock.c | 41 +- net/tipc/eth_media.c | 3 +- net/tipc/name_table.c | 2 +- net/unix/af_unix.c | 211 +- net/unix/garbage.c | 12 +- net/unix/sysctl_net_unix.c | 3 +- net/wanrouter/wanmain.c | 36 +- net/wireless/Kconfig | 30 + net/wireless/Makefile | 7 + net/wireless/core.c | 14 +- net/wireless/core.h | 13 + net/wireless/lib80211.c | 284 + net/wireless/lib80211_crypt_ccmp.c | 492 + net/wireless/lib80211_crypt_tkip.c | 784 ++ net/wireless/lib80211_crypt_wep.c | 296 + net/wireless/nl80211.c | 417 +- net/wireless/reg.c | 1005 ++- net/wireless/reg.h | 33 +- net/wireless/sysfs.c | 25 +- net/wireless/util.c | 19 + net/wireless/wext-compat.c | 139 + net/wireless/wext.c | 2 +- net/x25/sysctl_net_x25.c | 22 +- net/xfrm/Makefile | 4 +- net/xfrm/xfrm_input.c | 25 +- net/xfrm/xfrm_output.c | 18 +- net/xfrm/xfrm_policy.c | 511 +- net/xfrm/xfrm_proc.c | 26 +- net/xfrm/xfrm_state.c | 407 +- net/xfrm/xfrm_sysctl.c | 85 + net/xfrm/xfrm_user.c | 249 +- samples/tracepoints/tp-samples-trace.h | 4 +- samples/tracepoints/tracepoint-probe-sample.c | 1 + samples/tracepoints/tracepoint-probe-sample2.c | 1 + samples/tracepoints/tracepoint-sample.c | 3 + scripts/Kbuild.include | 22 +- scripts/Makefile.build | 79 +- scripts/Makefile.lib | 15 +- scripts/Makefile.modinst | 3 +- scripts/bootgraph.pl | 16 +- scripts/decodecode | 32 +- scripts/extract-ikconfig | 8 +- scripts/genksyms/genksyms.c | 277 +- scripts/genksyms/genksyms.h | 7 + scripts/genksyms/keywords.c_shipped | 189 +- scripts/genksyms/keywords.gperf | 2 + scripts/headerdep.pl | 193 + scripts/kallsyms.c | 21 +- scripts/kconfig/lxdialog/check-lxdialog.sh | 2 +- scripts/kernel-doc | 67 +- scripts/mkcompile_h | 6 +- scripts/mkmakefile | 4 +- scripts/mksysmap | 7 +- scripts/package/Makefile | 9 +- scripts/recordmcount.pl | 51 +- scripts/setlocalversion | 7 +- scripts/strip-symbols | 22 + scripts/tags.sh | 160 + scripts/trace/power.pl | 108 + scripts/tracing/draw_functrace.py | 130 + security/capability.c | 58 +- security/commoncap.c | 830 +- security/keys/internal.h | 49 +- security/keys/key.c | 25 +- security/keys/keyctl.c | 210 +- security/keys/keyring.c | 15 +- security/keys/permission.c | 29 +- security/keys/proc.c | 8 +- security/keys/process_keys.c | 469 +- security/keys/request_key.c | 135 +- security/keys/request_key_auth.c | 46 +- security/root_plug.c | 13 +- security/security.c | 103 +- security/selinux/avc.c | 4 +- security/selinux/exports.c | 8 +- security/selinux/hooks.c | 1258 ++- security/selinux/include/av_perm_to_string.h | 2 + security/selinux/include/av_permissions.h | 2 + security/selinux/include/class_to_string.h | 5 + security/selinux/include/flask.h | 1 + security/selinux/include/objsec.h | 11 - security/selinux/nlmsgtab.c | 3 + security/selinux/selinuxfs.c | 13 +- security/selinux/xfrm.c | 6 +- security/smack/smack_access.c | 4 +- security/smack/smack_lsm.c | 176 +- security/smack/smackfs.c | 26 +- sound/ac97_bus.c | 1 + sound/aoa/codecs/Makefile | 4 + sound/aoa/codecs/onyx.c | 1118 ++ sound/aoa/codecs/{snd-aoa-codec-onyx.h => onyx.h} | 0 sound/aoa/codecs/snd-aoa-codec-onyx.c | 1118 -- sound/aoa/codecs/snd-aoa-codec-tas.c | 1012 -- sound/aoa/codecs/snd-aoa-codec-toonie.c | 150 - ...aoa-codec-tas-basstreble.h => tas-basstreble.h} | 0 ...aoa-codec-tas-gain-table.h => tas-gain-table.h} | 0 sound/aoa/codecs/tas.c | 1012 ++ sound/aoa/codecs/{snd-aoa-codec-tas.h => tas.h} | 0 sound/aoa/codecs/toonie.c | 150 + sound/aoa/core/Makefile | 8 +- sound/aoa/core/alsa.c | 99 + sound/aoa/core/{snd-aoa-alsa.h => alsa.h} | 0 sound/aoa/core/core.c | 162 + sound/aoa/core/gpio-feature.c | 408 + sound/aoa/core/{snd-aoa-gpio-pmf.c => gpio-pmf.c} | 0 sound/aoa/core/snd-aoa-alsa.c | 99 - sound/aoa/core/snd-aoa-core.c | 162 - sound/aoa/core/snd-aoa-gpio-feature.c | 408 - sound/aoa/fabrics/Makefile | 2 + sound/aoa/fabrics/layout.c | 1120 ++ sound/aoa/fabrics/snd-aoa-fabric-layout.c | 1120 -- sound/aoa/soundbus/i2sbus/Makefile | 2 +- .../i2sbus/{i2sbus-control.c => control.c} | 0 sound/aoa/soundbus/i2sbus/core.c | 450 + sound/aoa/soundbus/i2sbus/i2sbus-core.c | 450 - sound/aoa/soundbus/i2sbus/i2sbus.h | 2 +- .../i2sbus/{i2sbus-interface.h => interface.h} | 0 sound/aoa/soundbus/i2sbus/{i2sbus-pcm.c => pcm.c} | 0 sound/core/Kconfig | 21 + sound/core/Makefile | 2 + sound/core/device.c | 4 +- sound/core/hrtimer.c | 155 + sound/core/info.c | 17 + sound/core/init.c | 71 +- sound/core/jack.c | 15 +- sound/core/rawmidi.c | 4 +- sound/core/rtctimer.c | 2 +- sound/core/seq/seq.c | 4 +- sound/core/timer.c | 2 +- sound/drivers/Kconfig | 2 +- sound/drivers/pcsp/pcsp.c | 8 +- sound/drivers/pcsp/pcsp.h | 3 + sound/drivers/pcsp/pcsp_lib.c | 168 +- sound/drivers/vx/vx_core.c | 2 +- sound/drivers/vx/vx_pcm.c | 2 +- sound/isa/sb/sb8.c | 4 +- sound/pci/Kconfig | 127 +- sound/pci/ac97/ac97_codec.c | 2 +- sound/pci/ac97/ac97_patch.c | 7 +- sound/pci/ca0106/ca0106.h | 30 +- sound/pci/ca0106/ca0106_main.c | 550 +- sound/pci/ca0106/ca0106_mixer.c | 263 +- sound/pci/cs46xx/cs46xx_lib.c | 5 +- sound/pci/cs5535audio/Makefile | 3 + sound/pci/cs5535audio/cs5535audio.c | 12 +- sound/pci/cs5535audio/cs5535audio.h | 39 + sound/pci/cs5535audio/cs5535audio_olpc.c | 179 + sound/pci/cs5535audio/cs5535audio_pcm.c | 15 + sound/pci/emu10k1/emu10k1_main.c | 494 +- sound/pci/emu10k1/emumixer.c | 46 + sound/pci/es1968.c | 2 +- sound/pci/hda/Kconfig | 188 + sound/pci/hda/Makefile | 75 +- sound/pci/hda/hda_beep.c | 2 + sound/pci/hda/hda_codec.c | 781 +- sound/pci/hda/hda_codec.h | 107 +- sound/pci/hda/hda_eld.c | 590 + sound/pci/hda/hda_generic.c | 21 +- sound/pci/hda/hda_hwdep.c | 234 +- sound/pci/hda/hda_intel.c | 348 +- sound/pci/hda/hda_local.h | 100 +- sound/pci/hda/hda_patch.h | 22 - sound/pci/hda/hda_proc.c | 91 +- sound/pci/hda/patch_analog.c | 132 +- sound/pci/hda/patch_atihdmi.c | 40 +- sound/pci/hda/patch_cmedia.c | 27 +- sound/pci/hda/patch_conexant.c | 39 +- sound/pci/hda/patch_intelhdmi.c | 711 ++ sound/pci/hda/patch_nvhdmi.c | 32 +- sound/pci/hda/patch_realtek.c | 1663 ++-- sound/pci/hda/patch_si3054.c | 35 +- sound/pci/hda/patch_sigmatel.c | 1321 ++- sound/pci/hda/patch_via.c | 171 +- sound/pci/ice1712/ice1724.c | 23 +- sound/pci/maestro3.c | 2 +- sound/pci/mixart/mixart.c | 4 +- sound/pci/mixart/mixart_core.c | 2 +- sound/pci/oxygen/oxygen.c | 4 + sound/pci/pcxhr/Makefile | 2 +- sound/pci/pcxhr/pcxhr.c | 558 +- sound/pci/pcxhr/pcxhr.h | 76 +- sound/pci/pcxhr/pcxhr_core.c | 293 +- sound/pci/pcxhr/pcxhr_core.h | 5 +- sound/pci/pcxhr/pcxhr_hwdep.c | 158 +- sound/pci/pcxhr/pcxhr_mix22.c | 820 ++ sound/pci/pcxhr/pcxhr_mix22.h | 56 + sound/pci/pcxhr/pcxhr_mixer.c | 556 +- sound/pci/riptide/riptide.c | 4 +- sound/pci/rme9652/hdsp.c | 4 +- sound/pci/rme9652/hdspm.c | 4 +- sound/pcmcia/pdaudiocf/pdaudiocf_irq.c | 2 +- sound/ppc/pmac.c | 2 +- sound/ppc/tumbler.c | 3 +- sound/soc/Kconfig | 13 +- sound/soc/Makefile | 12 +- sound/soc/at32/Kconfig | 34 - sound/soc/at32/Makefile | 11 - sound/soc/at32/at32-pcm.c | 492 - sound/soc/at32/at32-pcm.h | 79 - sound/soc/at32/at32-ssc.c | 849 -- sound/soc/at32/at32-ssc.h | 59 - sound/soc/at32/playpaq_wm8510.c | 513 - sound/soc/at91/Kconfig | 10 - sound/soc/at91/Makefile | 6 - sound/soc/at91/at91-pcm.c | 434 - sound/soc/at91/at91-pcm.h | 72 - sound/soc/at91/at91-ssc.c | 791 -- sound/soc/at91/at91-ssc.h | 27 - sound/soc/atmel/Kconfig | 43 + sound/soc/atmel/Makefile | 15 + sound/soc/atmel/atmel-pcm.c | 494 + sound/soc/atmel/atmel-pcm.h | 86 + sound/soc/atmel/atmel_ssc_dai.c | 790 ++ sound/soc/atmel/atmel_ssc_dai.h | 121 + sound/soc/atmel/playpaq_wm8510.c | 512 + sound/soc/atmel/sam9g20_wm8731.c | 328 + sound/soc/au1x/dbdma2.c | 3 +- sound/soc/au1x/psc-ac97.c | 16 +- sound/soc/au1x/psc-i2s.c | 18 +- sound/soc/au1x/sample-ac97.c | 4 +- sound/soc/blackfin/Kconfig | 22 +- sound/soc/blackfin/bf5xx-ac97-pcm.c | 113 +- sound/soc/blackfin/bf5xx-ac97.c | 178 +- sound/soc/blackfin/bf5xx-ac97.h | 35 +- sound/soc/blackfin/bf5xx-ad1980.c | 8 +- sound/soc/blackfin/bf5xx-ad73311.c | 10 +- sound/soc/blackfin/bf5xx-i2s-pcm.c | 12 + sound/soc/blackfin/bf5xx-i2s.c | 31 +- sound/soc/blackfin/bf5xx-sport.h | 2 +- sound/soc/blackfin/bf5xx-ssm2602.c | 14 +- sound/soc/codecs/Kconfig | 69 +- sound/soc/codecs/Makefile | 12 + sound/soc/codecs/ac97.c | 7 +- sound/soc/codecs/ad1980.c | 24 +- sound/soc/codecs/ad73311.c | 18 +- sound/soc/codecs/ak4535.c | 19 +- sound/soc/codecs/cs4270.c | 38 +- sound/soc/codecs/l3.c | 91 + sound/soc/codecs/pcm3008.c | 212 + sound/soc/codecs/pcm3008.h | 25 + sound/soc/codecs/ssm2602.c | 57 +- sound/soc/codecs/tlv320aic23.c | 262 +- sound/soc/codecs/tlv320aic26.c | 22 +- sound/soc/codecs/tlv320aic3x.c | 166 +- sound/soc/codecs/tlv320aic3x.h | 60 +- sound/soc/codecs/twl4030.c | 1317 +++ sound/soc/codecs/twl4030.h | 219 + sound/soc/codecs/uda134x.c | 668 ++ sound/soc/codecs/uda134x.h | 36 + sound/soc/codecs/uda1380.c | 29 +- sound/soc/codecs/wm8350.c | 1583 +++ sound/soc/codecs/wm8350.h | 20 + sound/soc/codecs/wm8510.c | 19 +- sound/soc/codecs/wm8580.c | 134 +- sound/soc/codecs/wm8580.h | 1 + sound/soc/codecs/wm8728.c | 585 + sound/soc/codecs/wm8728.h | 30 + sound/soc/codecs/wm8731.c | 25 +- sound/soc/codecs/wm8750.c | 19 +- sound/soc/codecs/wm8753.c | 39 +- sound/soc/codecs/wm8900.c | 262 +- sound/soc/codecs/wm8900.h | 6 - sound/soc/codecs/wm8903.c | 268 +- sound/soc/codecs/wm8903.h | 5 - sound/soc/codecs/wm8971.c | 19 +- sound/soc/codecs/wm8990.c | 43 +- sound/soc/codecs/wm8990.h | 4 +- sound/soc/codecs/wm9712.c | 12 +- sound/soc/codecs/wm9713.c | 46 +- sound/soc/davinci/Kconfig | 10 + sound/soc/davinci/Makefile | 2 + sound/soc/davinci/davinci-evm.c | 14 +- sound/soc/davinci/davinci-i2s.c | 257 +- sound/soc/davinci/davinci-pcm.c | 30 +- sound/soc/davinci/davinci-sffsdr.c | 157 + sound/soc/fsl/Kconfig | 2 +- sound/soc/fsl/fsl_dma.c | 14 +- sound/soc/fsl/fsl_ssi.c | 24 +- sound/soc/fsl/mpc5200_psc_i2s.c | 22 +- sound/soc/fsl/mpc8610_hpcd.c | 8 +- sound/soc/fsl/soc-of-simple.c | 12 +- sound/soc/omap/Kconfig | 35 +- sound/soc/omap/Makefile | 8 + sound/soc/omap/n810.c | 10 +- sound/soc/omap/omap-mcbsp.c | 61 +- sound/soc/omap/omap-pcm.c | 14 +- sound/soc/omap/omap2evm.c | 151 + sound/soc/omap/omap3beagle.c | 149 + sound/soc/omap/omap3pandora.c | 311 + sound/soc/omap/osk5912.c | 10 +- sound/soc/omap/overo.c | 148 + sound/soc/omap/sdp3430.c | 152 + sound/soc/pxa/Kconfig | 22 + sound/soc/pxa/Makefile | 6 + sound/soc/pxa/corgi.c | 12 +- sound/soc/pxa/e800_wm9712.c | 8 +- sound/soc/pxa/em-x270.c | 7 +- sound/soc/pxa/palm27x.c | 269 + sound/soc/pxa/poodle.c | 6 +- sound/soc/pxa/pxa-ssp.c | 931 ++ sound/soc/pxa/pxa-ssp.h | 47 + sound/soc/pxa/pxa2xx-ac97.c | 33 +- sound/soc/pxa/pxa2xx-i2s.c | 35 +- sound/soc/pxa/pxa2xx-pcm.c | 14 +- sound/soc/pxa/spitz.c | 6 +- sound/soc/pxa/tosa.c | 38 +- sound/soc/pxa/zylonite.c | 219 + sound/soc/s3c24xx/Kconfig | 5 + sound/soc/s3c24xx/Makefile | 2 + sound/soc/s3c24xx/ln2440sbc_alc650.c | 8 +- sound/soc/s3c24xx/neo1973_wm8753.c | 9 +- sound/soc/s3c24xx/s3c2412-i2s.c | 38 +- sound/soc/s3c24xx/s3c2443-ac97.c | 30 +- sound/soc/s3c24xx/s3c24xx-i2s.c | 35 +- sound/soc/s3c24xx/s3c24xx-pcm.c | 12 + sound/soc/s3c24xx/s3c24xx_uda134x.c | 373 + sound/soc/s3c24xx/smdk2443_wm9710.c | 8 +- sound/soc/sh/dma-sh7760.c | 12 + sound/soc/sh/hac.c | 19 +- sound/soc/sh/sh7760-ac97.c | 6 +- sound/soc/sh/ssi.c | 30 +- sound/soc/soc-core.c | 840 +- sound/soc/soc-dapm.c | 82 +- sound/sound_core.c | 1 + sound/usb/caiaq/caiaq-control.c | 73 +- sound/usb/caiaq/caiaq-device.c | 2 +- sound/usb/usbmidi.c | 2 +- sound/usb/usx2y/usb_stream.c | 3 +- usr/gen_init_cpio.c | 28 +- 2920 files changed, 188662 insertions(+), 126063 deletions(-) delete mode 100644 Documentation/DocBook/wanbook.tmpl create mode 100644 Documentation/RCU/rculist_nulls.txt create mode 100644 Documentation/controllers/cpuacct.txt create mode 100644 Documentation/credentials.txt delete mode 100644 Documentation/sh/kgdb.txt create mode 100644 Documentation/sound/alsa/HD-Audio-Models.txt create mode 100644 Documentation/sound/alsa/HD-Audio.txt create mode 100644 arch/arm/mach-pxa/include/mach/palmasoc.h create mode 100644 arch/powerpc/boot/dts/mpc8572ds_camp_core0.dts create mode 100644 arch/powerpc/boot/dts/mpc8572ds_camp_core1.dts create mode 100644 arch/powerpc/kernel/ppc_save_regs.S create mode 100644 arch/powerpc/math-emu/math_efp.c delete mode 100644 arch/powerpc/mm/mmu_context_32.c delete mode 100644 arch/powerpc/mm/mmu_context_64.c create mode 100644 arch/powerpc/mm/mmu_context_hash32.c create mode 100644 arch/powerpc/mm/mmu_context_hash64.c create mode 100644 arch/powerpc/mm/mmu_context_nohash.c create mode 100644 arch/powerpc/mm/pgtable.c delete mode 100644 arch/powerpc/mm/tlb_32.c delete mode 100644 arch/powerpc/mm/tlb_64.c create mode 100644 arch/powerpc/mm/tlb_hash32.c create mode 100644 arch/powerpc/mm/tlb_hash64.c create mode 100644 arch/powerpc/mm/tlb_nohash.c create mode 100644 arch/powerpc/mm/tlb_nohash_low.S delete mode 100644 arch/powerpc/platforms/52xx/mpc52xx_pic.h create mode 100644 arch/powerpc/platforms/85xx/smp.c create mode 100644 arch/powerpc/platforms/86xx/gef_gpio.c create mode 100644 arch/powerpc/platforms/cell/qpace_setup.c delete mode 100644 arch/powerpc/xmon/setjmp.S create mode 100644 arch/s390/include/asm/ftrace.h create mode 100644 arch/s390/include/asm/vdso.h create mode 100644 arch/s390/kernel/mcount.S create mode 100644 arch/s390/kernel/processor.c create mode 100644 arch/s390/kernel/vdso.c create mode 100644 arch/s390/kernel/vdso32/Makefile create mode 100644 arch/s390/kernel/vdso32/clock_getres.S create mode 100644 arch/s390/kernel/vdso32/clock_gettime.S create mode 100644 arch/s390/kernel/vdso32/gettimeofday.S copy arch/{x86/vdso/vdso-note.S => s390/kernel/vdso32/note.S} (100%) create mode 100644 arch/s390/kernel/vdso32/vdso32.lds.S create mode 100644 arch/s390/kernel/vdso32/vdso32_wrapper.S create mode 100644 arch/s390/kernel/vdso64/Makefile create mode 100644 arch/s390/kernel/vdso64/clock_getres.S create mode 100644 arch/s390/kernel/vdso64/clock_gettime.S create mode 100644 arch/s390/kernel/vdso64/gettimeofday.S copy arch/{x86/vdso/vdso-note.S => s390/kernel/vdso64/note.S} (100%) create mode 100644 arch/s390/kernel/vdso64/vdso64.lds.S create mode 100644 arch/s390/kernel/vdso64/vdso64_wrapper.S delete mode 100644 arch/sh/boards/board-rsk7203.c delete mode 100644 arch/sh/boards/mach-cayman/led.c create mode 100644 arch/sh/boards/mach-microdev/fdc37c93xapm.c delete mode 100644 arch/sh/boards/mach-microdev/led.c create mode 100644 arch/sh/boards/mach-rsk/Kconfig create mode 100644 arch/sh/boards/mach-rsk/Makefile create mode 100644 arch/sh/boards/mach-rsk/devices-rsk7203.c create mode 100644 arch/sh/boards/mach-rsk/setup.c delete mode 100644 arch/sh/boards/mach-se/7343/io.c create mode 100644 arch/sh/configs/edosk7705_defconfig create mode 100644 arch/sh/configs/rsk7201_defconfig delete mode 100644 arch/sh/configs/rts7751r2dplus_qemu_defconfig delete mode 100644 arch/sh/drivers/dma/dma-isa.c delete mode 100644 arch/sh/include/asm/bitops-irq.h create mode 100644 arch/sh/include/asm/bitops-op32.h create mode 100644 arch/sh/include/asm/mutex-llsc.h delete mode 100644 arch/sh/include/asm/pm.h create mode 100644 arch/sh/include/asm/unaligned-sh4a.h create mode 100644 arch/sh/include/mach-se/mach/mrshpc.h delete mode 100644 arch/sh/kernel/cf-enabler.c create mode 100644 arch/sh/kernel/cpu/sh2a/clock-sh7201.c create mode 100644 arch/sh/kernel/cpu/sh2a/setup-sh7201.c create mode 100644 arch/sh/kernel/disassemble.c create mode 100644 arch/sh/kernel/ftrace.c create mode 100644 arch/sh/kernel/idle.c create mode 100644 arch/sh/kernel/kgdb.c delete mode 100644 arch/sh/kernel/kgdb_jmp.S delete mode 100644 arch/sh/kernel/kgdb_stub.c delete mode 100644 arch/sh/kernel/pm.c create mode 100644 arch/sh/lib/ashiftrt.S copy arch/{mips => sh}/lib/ashldi3.c (100%) create mode 100644 arch/sh/lib/ashlsi3.S copy arch/{mips => sh}/lib/ashrdi3.c (100%) create mode 100644 arch/sh/lib/ashrsi3.S copy arch/{mips => sh}/lib/libgcc.h (100%) copy arch/{mips => sh}/lib/lshrdi3.c (100%) create mode 100644 arch/sh/lib/lshrsi3.S create mode 100644 arch/sh/lib/mcount.S create mode 100644 arch/sh/lib/movmem.S create mode 100644 arch/sh/lib/udiv_qrnnd.S create mode 100644 arch/sh/lib/udivsi3.S create mode 100644 arch/sh/lib/udivsi3_i4i-Os.S create mode 100644 arch/sh/lib/udivsi3_i4i.S create mode 100644 arch/sh/lib64/memcpy.S delete mode 100644 arch/sh/lib64/memcpy.c create mode 100644 arch/sh/lib64/memset.S create mode 100644 arch/sh/lib64/sdivsi3.S create mode 100644 arch/sh/lib64/strcpy.S create mode 100644 arch/sh/lib64/strlen.S create mode 100644 arch/sh/lib64/udivdi3.S create mode 100644 arch/sh/lib64/udivsi3.S create mode 100644 arch/sh/mm/asids-debugfs.c create mode 100644 arch/sh/oprofile/backtrace.c create mode 100644 arch/sh/oprofile/common.c create mode 100644 arch/sh/oprofile/op_impl.h delete mode 100644 arch/sh/oprofile/op_model_null.c create mode 100644 arch/x86/include/asm/hypervisor.h create mode 100644 arch/x86/include/asm/mach-generic/mach_wakecpu.h create mode 100644 arch/x86/include/asm/sigframe.h create mode 100644 arch/x86/include/asm/vmware.h create mode 100644 arch/x86/kernel/check.c create mode 100644 arch/x86/kernel/cpu/hypervisor.c create mode 100644 arch/x86/kernel/cpu/vmware.c create mode 100644 arch/x86/kernel/dumpstack.c create mode 100644 arch/x86/kernel/dumpstack.h delete mode 100644 arch/x86/kernel/sigframe.h create mode 100644 arch/x86/kernel/signal.c delete mode 100644 arch/x86/kernel/signal_32.c delete mode 100644 arch/x86/kernel/signal_64.c create mode 100644 arch/x86/scripts/strip-symbols create mode 100644 crypto/shash.c create mode 100644 drivers/atm/solos-pci.c delete mode 100644 drivers/bluetooth/hci_usb.c delete mode 100644 drivers/bluetooth/hci_usb.h create mode 100644 drivers/char/hvc_iucv.c create mode 100644 drivers/char/hvc_udbg.c create mode 100644 drivers/net/arm/ks8695net.c create mode 100644 drivers/net/arm/ks8695net.h create mode 100644 drivers/net/bonding/bond_ipv6.c delete mode 100644 drivers/net/eepro100.c create mode 100644 drivers/net/ixgbe/ixgbe_dcb.c create mode 100644 drivers/net/ixgbe/ixgbe_dcb.h create mode 100644 drivers/net/ixgbe/ixgbe_dcb_82598.c create mode 100644 drivers/net/ixgbe/ixgbe_dcb_82598.h create mode 100644 drivers/net/ixgbe/ixgbe_dcb_nl.c create mode 100644 drivers/net/phy/et1011c.c create mode 100644 drivers/net/phy/mdio-gpio.c delete mode 100644 drivers/net/phy/mdio-ofgpio.c create mode 100644 drivers/net/phy/national.c create mode 100644 drivers/net/phy/ste10Xp.c create mode 100644 drivers/net/sfc/falcon_gmac.c create mode 100644 drivers/net/sfc/mtd.c create mode 100644 drivers/net/smsc911x.c create mode 100644 drivers/net/smsc911x.h create mode 100644 drivers/net/smsc9420.c create mode 100644 drivers/net/smsc9420.h create mode 100644 drivers/net/wan/hd64570.c create mode 100644 drivers/net/wan/hd64572.c delete mode 100644 drivers/net/wan/hd6457x.c create mode 100644 drivers/net/wan/ixp4xx_hss.c delete mode 100644 drivers/net/wan/syncppp.c delete mode 100644 drivers/net/wireless/airport.c create mode 100644 drivers/net/wireless/ath9k/ani.c create mode 100644 drivers/net/wireless/ath9k/calib.c delete mode 100644 drivers/net/wireless/ath9k/core.c create mode 100644 drivers/net/wireless/ath9k/debug.c create mode 100644 drivers/net/wireless/ath9k/eeprom.c create mode 100644 drivers/net/wireless/ath9k/mac.c delete mode 100644 drivers/net/wireless/ipw2100.c delete mode 100644 drivers/net/wireless/ipw2200.c delete mode 100644 drivers/net/wireless/ipw2200.h create mode 100644 drivers/net/wireless/ipw2x00/Kconfig create mode 100644 drivers/net/wireless/ipw2x00/Makefile create mode 100644 drivers/net/wireless/ipw2x00/ipw2100.c rename drivers/net/wireless/{ => ipw2x00}/ipw2100.h (100%) create mode 100644 drivers/net/wireless/ipw2x00/ipw2200.c create mode 100644 drivers/net/wireless/ipw2x00/ipw2200.h rename net/ieee80211/ieee80211_geo.c => drivers/net/wireless/ipw2x00/libipw_geo.c (100%) create mode 100644 drivers/net/wireless/ipw2x00/libipw_module.c create mode 100644 drivers/net/wireless/ipw2x00/libipw_rx.c create mode 100644 drivers/net/wireless/ipw2x00/libipw_tx.c create mode 100644 drivers/net/wireless/ipw2x00/libipw_wx.c create mode 100644 drivers/net/wireless/iwlwifi/iwl-agn-hcmd-check.c create mode 100644 drivers/net/wireless/iwlwifi/iwl-spectrum.c delete mode 100644 drivers/net/wireless/orinoco.c delete mode 100644 drivers/net/wireless/orinoco.h create mode 100644 drivers/net/wireless/orinoco/Makefile create mode 100644 drivers/net/wireless/orinoco/airport.c rename drivers/net/wireless/{ => orinoco}/hermes.c (100%) rename drivers/net/wireless/{ => orinoco}/hermes.h (100%) rename drivers/net/wireless/{ => orinoco}/hermes_dld.c (100%) rename drivers/net/wireless/{ => orinoco}/hermes_dld.h (100%) rename drivers/net/wireless/{ => orinoco}/hermes_rid.h (100%) create mode 100644 drivers/net/wireless/orinoco/orinoco.c create mode 100644 drivers/net/wireless/orinoco/orinoco.h create mode 100644 drivers/net/wireless/orinoco/orinoco_cs.c rename drivers/net/wireless/{ => orinoco}/orinoco_nortel.c (100%) rename drivers/net/wireless/{ => orinoco}/orinoco_pci.c (100%) rename drivers/net/wireless/{ => orinoco}/orinoco_pci.h (100%) rename drivers/net/wireless/{ => orinoco}/orinoco_plx.c (100%) rename drivers/net/wireless/{ => orinoco}/orinoco_tmd.c (100%) create mode 100644 drivers/net/wireless/orinoco/spectrum_cs.c delete mode 100644 drivers/net/wireless/orinoco_cs.c delete mode 100644 drivers/net/wireless/rtl8180_dev.c delete mode 100644 drivers/net/wireless/rtl8180_rtl8225.c delete mode 100644 drivers/net/wireless/rtl8187.h delete mode 100644 drivers/net/wireless/rtl8187_dev.c delete mode 100644 drivers/net/wireless/rtl8187_rtl8225.c delete mode 100644 drivers/net/wireless/rtl818x.h create mode 100644 drivers/net/wireless/rtl818x/Makefile rename drivers/net/wireless/{ => rtl818x}/rtl8180.h (100%) create mode 100644 drivers/net/wireless/rtl818x/rtl8180_dev.c rename drivers/net/wireless/{ => rtl818x}/rtl8180_grf5101.c (100%) rename drivers/net/wireless/{ => rtl818x}/rtl8180_grf5101.h (100%) rename drivers/net/wireless/{ => rtl818x}/rtl8180_max2820.c (100%) rename drivers/net/wireless/{ => rtl818x}/rtl8180_max2820.h (100%) create mode 100644 drivers/net/wireless/rtl818x/rtl8180_rtl8225.c rename drivers/net/wireless/{ => rtl818x}/rtl8180_rtl8225.h (100%) rename drivers/net/wireless/{ => rtl818x}/rtl8180_sa2400.c (100%) rename drivers/net/wireless/{ => rtl818x}/rtl8180_sa2400.h (100%) create mode 100644 drivers/net/wireless/rtl818x/rtl8187.h create mode 100644 drivers/net/wireless/rtl818x/rtl8187_dev.c create mode 100644 drivers/net/wireless/rtl818x/rtl8187_rtl8225.c rename drivers/net/wireless/{ => rtl818x}/rtl8187_rtl8225.h (100%) create mode 100644 drivers/net/wireless/rtl818x/rtl818x.h delete mode 100644 drivers/net/wireless/spectrum_cs.c create mode 100644 drivers/usb/gadget/f_phonet.c create mode 100644 drivers/usb/gadget/u_phonet.h create mode 100644 firmware/cxgb3/t3b_psram-1.1.0.bin.ihex create mode 100644 firmware/cxgb3/t3c_psram-1.1.0.bin.ihex create mode 100644 firmware/cxgb3/t3fw-7.0.0.bin.ihex create mode 100644 include/keys/keyring-type.h create mode 100644 include/linux/dcbnl.h create mode 100644 include/linux/ftrace_irq.h delete mode 100644 include/linux/key-ui.h create mode 100644 include/linux/list_nulls.h create mode 100644 include/linux/mdio-gpio.h create mode 100644 include/linux/rculist_nulls.h create mode 100644 include/linux/smsc911x.h create mode 100644 include/net/dcbnl.h delete mode 100644 include/net/ieee80211_crypt.h create mode 100644 include/net/lib80211.h create mode 100644 include/net/netfilter/nfnetlink_log.h create mode 100644 include/net/netns/xfrm.h delete mode 100644 include/net/syncppp.h create mode 100644 include/sound/l3.h create mode 100644 include/sound/s3c24xx_uda134x.h create mode 100644 include/sound/soc-dai.h create mode 100644 include/sound/uda134x.h create mode 100644 include/trace/block.h create mode 100644 include/trace/boot.h create mode 100644 kernel/cred-internals.h create mode 100644 kernel/cred.c create mode 100644 kernel/trace/trace_branch.c create mode 100644 kernel/trace/trace_functions_graph.c create mode 100644 kernel/trace/trace_hw_branches.c create mode 100644 kernel/trace/trace_power.c create mode 100644 lib/is_single_threaded.c create mode 100644 net/dcb/Kconfig create mode 100644 net/dcb/Makefile create mode 100644 net/dcb/dcbnl.c delete mode 100644 net/ieee80211/Kconfig delete mode 100644 net/ieee80211/Makefile delete mode 100644 net/ieee80211/ieee80211_crypt.c delete mode 100644 net/ieee80211/ieee80211_crypt_ccmp.c delete mode 100644 net/ieee80211/ieee80211_crypt_tkip.c delete mode 100644 net/ieee80211/ieee80211_crypt_wep.c delete mode 100644 net/ieee80211/ieee80211_module.c delete mode 100644 net/ieee80211/ieee80211_rx.c delete mode 100644 net/ieee80211/ieee80211_tx.c delete mode 100644 net/ieee80211/ieee80211_wx.c create mode 100644 net/sched/cls_cgroup.c create mode 100644 net/sched/sch_drr.c create mode 100644 net/wireless/lib80211.c create mode 100644 net/wireless/lib80211_crypt_ccmp.c create mode 100644 net/wireless/lib80211_crypt_tkip.c create mode 100644 net/wireless/lib80211_crypt_wep.c create mode 100644 net/wireless/wext-compat.c create mode 100644 net/xfrm/xfrm_sysctl.c create mode 100755 scripts/headerdep.pl create mode 100644 scripts/strip-symbols create mode 100755 scripts/tags.sh create mode 100644 scripts/trace/power.pl create mode 100644 scripts/tracing/draw_functrace.py create mode 100644 sound/aoa/codecs/onyx.c rename sound/aoa/codecs/{snd-aoa-codec-onyx.h => onyx.h} (100%) delete mode 100644 sound/aoa/codecs/snd-aoa-codec-onyx.c delete mode 100644 sound/aoa/codecs/snd-aoa-codec-tas.c delete mode 100644 sound/aoa/codecs/snd-aoa-codec-toonie.c rename sound/aoa/codecs/{snd-aoa-codec-tas-basstreble.h => tas-basstreble.h} (100%) rename sound/aoa/codecs/{snd-aoa-codec-tas-gain-table.h => tas-gain-table.h} (100%) create mode 100644 sound/aoa/codecs/tas.c rename sound/aoa/codecs/{snd-aoa-codec-tas.h => tas.h} (100%) create mode 100644 sound/aoa/codecs/toonie.c create mode 100644 sound/aoa/core/alsa.c rename sound/aoa/core/{snd-aoa-alsa.h => alsa.h} (100%) create mode 100644 sound/aoa/core/core.c create mode 100644 sound/aoa/core/gpio-feature.c rename sound/aoa/core/{snd-aoa-gpio-pmf.c => gpio-pmf.c} (100%) delete mode 100644 sound/aoa/core/snd-aoa-alsa.c delete mode 100644 sound/aoa/core/snd-aoa-core.c delete mode 100644 sound/aoa/core/snd-aoa-gpio-feature.c create mode 100644 sound/aoa/fabrics/layout.c delete mode 100644 sound/aoa/fabrics/snd-aoa-fabric-layout.c rename sound/aoa/soundbus/i2sbus/{i2sbus-control.c => control.c} (100%) create mode 100644 sound/aoa/soundbus/i2sbus/core.c delete mode 100644 sound/aoa/soundbus/i2sbus/i2sbus-core.c rename sound/aoa/soundbus/i2sbus/{i2sbus-interface.h => interface.h} (100%) rename sound/aoa/soundbus/i2sbus/{i2sbus-pcm.c => pcm.c} (100%) create mode 100644 sound/core/hrtimer.c create mode 100644 sound/pci/cs5535audio/cs5535audio_olpc.c create mode 100644 sound/pci/hda/Kconfig create mode 100644 sound/pci/hda/hda_eld.c delete mode 100644 sound/pci/hda/hda_patch.h create mode 100644 sound/pci/hda/patch_intelhdmi.c create mode 100644 sound/pci/pcxhr/pcxhr_mix22.c create mode 100644 sound/pci/pcxhr/pcxhr_mix22.h delete mode 100644 sound/soc/at32/Kconfig delete mode 100644 sound/soc/at32/Makefile delete mode 100644 sound/soc/at32/at32-pcm.c delete mode 100644 sound/soc/at32/at32-pcm.h delete mode 100644 sound/soc/at32/at32-ssc.c delete mode 100644 sound/soc/at32/at32-ssc.h delete mode 100644 sound/soc/at32/playpaq_wm8510.c delete mode 100644 sound/soc/at91/Kconfig delete mode 100644 sound/soc/at91/Makefile delete mode 100644 sound/soc/at91/at91-pcm.c delete mode 100644 sound/soc/at91/at91-pcm.h delete mode 100644 sound/soc/at91/at91-ssc.c delete mode 100644 sound/soc/at91/at91-ssc.h create mode 100644 sound/soc/atmel/Kconfig create mode 100644 sound/soc/atmel/Makefile create mode 100644 sound/soc/atmel/atmel-pcm.c create mode 100644 sound/soc/atmel/atmel-pcm.h create mode 100644 sound/soc/atmel/atmel_ssc_dai.c create mode 100644 sound/soc/atmel/atmel_ssc_dai.h create mode 100644 sound/soc/atmel/playpaq_wm8510.c create mode 100644 sound/soc/atmel/sam9g20_wm8731.c create mode 100644 sound/soc/codecs/l3.c create mode 100644 sound/soc/codecs/pcm3008.c create mode 100644 sound/soc/codecs/pcm3008.h create mode 100644 sound/soc/codecs/twl4030.c create mode 100644 sound/soc/codecs/twl4030.h create mode 100644 sound/soc/codecs/uda134x.c create mode 100644 sound/soc/codecs/uda134x.h create mode 100644 sound/soc/codecs/wm8350.c create mode 100644 sound/soc/codecs/wm8350.h create mode 100644 sound/soc/codecs/wm8728.c create mode 100644 sound/soc/codecs/wm8728.h create mode 100644 sound/soc/davinci/davinci-sffsdr.c create mode 100644 sound/soc/omap/omap2evm.c create mode 100644 sound/soc/omap/omap3beagle.c create mode 100644 sound/soc/omap/omap3pandora.c create mode 100644 sound/soc/omap/overo.c create mode 100644 sound/soc/omap/sdp3430.c create mode 100644 sound/soc/pxa/palm27x.c create mode 100644 sound/soc/pxa/pxa-ssp.c create mode 100644 sound/soc/pxa/pxa-ssp.h create mode 100644 sound/soc/pxa/zylonite.c create mode 100644 sound/soc/s3c24xx/s3c24xx_uda134x.c hooks/post-receive -- XFS development tree From xfs-bounces@oss.sgi.com Sun Dec 28 22:56:25 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBT4uOaI027681 for ; Sun, 28 Dec 2008 22:56:24 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Subject: Your message to xfs awaits moderator approval From: xfs-bounces@oss.sgi.com To: xfs@oss.sgi.com Message-ID: Date: Sun, 28 Dec 2008 22:56:24 -0600 Precedence: bulk X-BeenThere: xfs@oss.sgi.com X-Mailman-Version: 2.1.9 List-Id: XFS Filesystem from SGI X-List-Administrivia: yes Sender: xfs-bounces@oss.sgi.com Errors-To: xfs-bounces@oss.sgi.com X-Virus-Scanned: ClamAV 0.91.2/8806/Sun Dec 28 21:00:01 2008 on oss.sgi.com X-Virus-Status: Clean Your mail to 'xfs' with the subject [XFS updates] XFS development tree branch, for-linus, updated. v2.6.28-rc3-4786-g3c92ec8 Is being held until the list moderator can review it for approval. The reason it is being held: Message body is too big: 2294113 bytes with a limit of 500 KB Either the message will get posted to the list, or you will receive notification of the moderator's decision. If you would like to cancel this posting, please visit the following URL: http://oss.sgi.com/mailman/confirm/xfs/f49e1c69b212262267a2216bf93b3c77ca1e0bb3 From markgw@sgi.com Sun Dec 28 23:26:19 2008 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=unavailable version=3.3.0-rupdated Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBT5QJ4S030479 for ; Sun, 28 Dec 2008 23:26:19 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id 876778F8037; Sun, 28 Dec 2008 21:26:13 -0800 (PST) Received: from [134.14.55.22] (dhcp22.melbourne.sgi.com [134.14.55.22]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA29575; Mon, 29 Dec 2008 16:26:08 +1100 Message-ID: <49585F70.5090709@sgi.com> Date: Mon, 29 Dec 2008 16:26:08 +1100 From: Mark Goodwin Reply-To: markgw@sgi.com Organization: SGI Engineering User-Agent: Thunderbird 2.0.0.18 (Windows/20081105) MIME-Version: 1.0 To: Nathan Scott CC: Christoph Hellwig , xfs@oss.sgi.com Subject: Re: [PATCH 00/20] xfs-cmds staging tree References: <20081222163831.755809000@bombadil.infradead.org> <494FF9B3.9030103@sgi.com> <20081222204956.GA23453@infradead.org> <495010A2.2030903@sgi.com> <20081222221613.GA7128@infradead.org> <1229986947.4662.13.camel@verge.scott.net.au> In-Reply-To: <1229986947.4662.13.camel@verge.scott.net.au> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/8806/Sun Dec 28 21:00:01 2008 on oss.sgi.com X-Virus-Status: Clean Nathan Scott wrote: > On Mon, 2008-12-22 at 17:16 -0500, Christoph Hellwig wrote: >> On Tue, Dec 23, 2008 at 09:11:46AM +1100, Mark Goodwin wrote: >>>> One thing we were discussing is if it's really a good idea to have all >>>> these together. >>> It would certainly help SGI if the directory structure for the proposed >>> xfs-cmds tree remained the same as it is in ptools at the moment. I >>> guess we could consider splitting each xfs-cmds directory into separate >>> repositories, but then building it all togetheer would be a pain. It could >>> certainly make sense to split off xfstests into it's own tree since it's >>> not part of the xfs-cmds build. >> Ok, sounds fair to keep it like that for now. > > Now seems like a good time to split it. The distributions have to deal > with it this way, and for the most part developers don't need to go and > update acl/attr from the version shipped with their distro. And now in > xfsprogs-3.0 the exported headers are sorted out, the interface between > the packages is much better defined ... if we don't break the link now, > we probably never will - so I'd vote for separate trees for each self- > contained package, personally. Be good to allow agruen to directly be > able to commit to acl/attr for example, as Christoph said. If we split it, we only loose the top level GNUmakefile, but gain the potential for separate maintainership (or even group write if needed) for each of the sub-projects. SGI can manage git/ptools for this easily enough internally. So the proposal would be to set up: git://oss.sgi.com/xfs/{acl,attr,xfstests,xfsprogs,xfsdump,dmapi,xfsmisc}.git as bare repositories, each with a 'master' and 'stable' branch (initially identical) and merge from master to stable whenever we want to release (and also grab tarballs to preserve Barry's previous release process until such time as the distros catch on). Before I go and do this, note we already have Russell's ptools/cvs mirror at git://oss.sgi.com/xfs-cmds which has the advantage of some history. Would we want to keep any of that history? Since this already mirrors t-o-t ptools, I could just as easily take a clone of that as git://oss.sgi.com/xfs/xfs-cmds.git and be done with it. Opinions? Cheers -- Mark From sandeen@sandeen.net Sun Dec 28 23:49:53 2008 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=unavailable 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 mBT5nrwm032485 for ; Sun, 28 Dec 2008 23:49:53 -0600 X-ASG-Debug-ID: 1230529792-198801bd0000-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 BF9BD1792328 for ; Sun, 28 Dec 2008 21:49:52 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id nbes8iaLUGjFk8B5 for ; Sun, 28 Dec 2008 21:49: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 F3E59AC358C; Sun, 28 Dec 2008 23:49:20 -0600 (CST) Message-ID: <495864E1.9070403@sandeen.net> Date: Sun, 28 Dec 2008 23:49:21 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Thomas Themel , linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS corruption on ARM Subject: Re: XFS corruption on ARM References: <20081228123305.GE30805@themel.com> <20081229002851.GD22525@disturbed> In-Reply-To: <20081229002851.GD22525@disturbed> 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: 1230529792 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.13883 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8806/Sun Dec 28 21:00:01 2008 on oss.sgi.com X-Virus-Status: Clean Dave Chinner wrote: > [CC'd the xfs list.] > > On Sun, Dec 28, 2008 at 01:33:05PM +0100, Thomas Themel wrote: >> Hi, >> >> there was a thread[0] on this list in 2008-10 about XFS corrupting >> rather quickly on recent ARM kernels, which seems to have petered out >> without any apparent results. I'm still seeing the same problems with >> 2.6.28, and I suspect that this qualifies as a kind of regression >> (though ancient), since the devices I'm running this on (Buffalo >> LinkStations) originally ship with a (vendor-modified) 2.6.16 kernel, >> where XFS seems to be working. >> >> Is this still on anyone's radar? I'm willing to test proposed fixes and >> supply data[1], but lack any deep knowledge of either ARM or XFS internals. >> >> (Please Cc: me, I'm not on the list.) could be related to http://oss.sgi.com/bugzilla/show_bug.cgi?id=755 -Eric >> [0] http://lkml.org/lkml/2008/10/1/382 >> [1] Though mine doesn't look any different from what was posted in [0] >> to the little-trained eye. From david@fromorbit.com Mon Dec 29 01:07:40 2008 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=unavailable 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 mBT77dX2009251 for ; Mon, 29 Dec 2008 01:07:40 -0600 X-ASG-Debug-ID: 1230534457-53cf01920000-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 217144DEB8 for ; Sun, 28 Dec 2008 23:07:38 -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 wEOGrTRGYGTsIrnK for ; Sun, 28 Dec 2008 23:07:38 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApECAHoEWEl5LB1fgWdsb2JhbACTcwEBFiKoXViOZ4ZE X-IronPort-AV: E=Sophos;i="4.36,295,1228051800"; d="scan'208";a="283751345" 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; 29 Dec 2008 17:37:35 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LHCDu-0005F5-Iy for xfs@oss.sgi.com; Mon, 29 Dec 2008 18:07:34 +1100 Date: Mon, 29 Dec 2008 18:07:34 +1100 From: Dave Chinner To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [XFS updates] XFS development tree branch, mainline, updated. v2.6.28-rc3-4786-g3c92ec8 Subject: Re: [XFS updates] XFS development tree branch, mainline, updated. v2.6.28-rc3-4786-g3c92ec8 Message-ID: <20081229070734.GA18209@disturbed> Mail-Followup-To: xfs@oss.sgi.com References: <200812290454.mBT4sgUC028335@oss.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200812290454.mBT4sgUC028335@oss.sgi.com> 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: 1230534459 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1875 1.0000 -0.8943 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.89 X-Barracuda-Spam-Status: No, SCORE=-0.89 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.13885 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8807/Sun Dec 28 23:32:28 2008 on oss.sgi.com X-Virus-Status: Clean On Sun, Dec 28, 2008 at 10:54:42PM -0600, xfs@oss.sgi.com wrote: > This is an automated email from the git hooks/post-receive script. It was > generated because a ref change was pushed to the repository containing > the project "XFS development tree". > > The branch, mainline has been updated ...... > 2920 files changed, 188662 insertions(+), 126063 deletions(-) ...... Is there some way the content of these mainline merge mails can be directed to /dev/null? We don't need a 2.2MB email (or even two of them) detailing every commit to tell us a mainline merge has occurred.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From SRS0+88d631ebfcf98fc0e426+1954+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 29 02:42:02 2008 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=unavailable 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 mBT8g0Ht016953 for ; Mon, 29 Dec 2008 02:42:02 -0600 X-ASG-Debug-ID: 1230540120-4b6701960000-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 7DC5917923C9 for ; Mon, 29 Dec 2008 00:42:00 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id DGqZcI2aAWvHvOXn for ; Mon, 29 Dec 2008 00:42:00 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHDgm-0000d7-Ep; Mon, 29 Dec 2008 08:41:28 +0000 Date: Mon, 29 Dec 2008 03:41:28 -0500 From: Christoph Hellwig To: Mark Goodwin Cc: Nathan Scott , Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 00/20] xfs-cmds staging tree Subject: Re: [PATCH 00/20] xfs-cmds staging tree Message-ID: <20081229084128.GA397@infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> <494FF9B3.9030103@sgi.com> <20081222204956.GA23453@infradead.org> <495010A2.2030903@sgi.com> <20081222221613.GA7128@infradead.org> <1229986947.4662.13.camel@verge.scott.net.au> <49585F70.5090709@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49585F70.5090709@sgi.com> 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: 1230540120 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8808/Mon Dec 29 01:46:26 2008 on oss.sgi.com X-Virus-Status: Clean On Mon, Dec 29, 2008 at 04:26:08PM +1100, Mark Goodwin wrote: > If we split it, we only loose the top level GNUmakefile, but gain the > potential for separate maintainership (or even group write if needed) > for each of the sub-projects. SGI can manage git/ptools for this easily > enough internally. > > So the proposal would be to set up: > git://oss.sgi.com/xfs/{acl,attr,xfstests,xfsprogs,xfsdump,dmapi,xfsmisc}.git > as bare repositories, each with a 'master' and 'stable' branch (initially > identical) and merge from master to stable whenever we want to release > (and also grab tarballs to preserve Barry's previous release process until > such time as the distros catch on). > > Before I go and do this, note we already have Russell's ptools/cvs > mirror at git://oss.sgi.com/xfs-cmds which has the advantage of some > history. Would we want to keep any of that history? Since this already > mirrors t-o-t ptools, I could just as easily take a clone of that as > git://oss.sgi.com/xfs/xfs-cmds.git and be done with it. Opinions? I've setup a few experimental trees: http://git.kernel.org/?p=fs/xfs/acl.git;a=summary http://git.kernel.org/?p=fs/xfs/attr.git;a=summary http://git.kernel.org/?p=fs/xfs/dmapi.git;a=summary http://git.kernel.org/?p=fs/xfs/nfs4acl.git;a=summary http://git.kernel.org/?p=fs/xfs/xfsdump.git;a=summary http://git.kernel.org/?p=fs/xfs/xfsprogs.git;a=summary http://git.kernel.org/?p=fs/xfs/xfstests.git;a=summary which do import all the history from the public CVS tree. Unlike the git tree on oss.sgi.com it does this in a nicer way by hacking cvsps to actually detect ptool changest properly insted of splitting them into multiple git commits due to the different per-file comments, having a mapping from sgi login IDs to proper real names and having a single import instead of multiple import and their merges. The only real problem with these is that the CVS tree hasn't been updated since October (and I've missed a few names on my first round of imports). I think these should be used as a model for the future trees, we can have these kernel.org trees for the community (current Eric, Dave and me could commit to those about, and we should add Nathan and Andreas soon), and then sgi can pull them into their trees for official releases or product trees. From SRS0+88d631ebfcf98fc0e426+1954+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 29 03:21:26 2008 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=unavailable 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 mBT9LPVf020532 for ; Mon, 29 Dec 2008 03:21:26 -0600 X-ASG-Debug-ID: 1230542485-4b67027d0000-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 62F281792821 for ; Mon, 29 Dec 2008 01:21:25 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Ci5iNp4D8RsAyPwa for ; Mon, 29 Dec 2008 01:21:25 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHEJQ-0001Og-LL; Mon, 29 Dec 2008 09:21:24 +0000 Date: Mon, 29 Dec 2008 04:21:24 -0500 From: Christoph Hellwig To: Igor Podlesny Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Hi! I've noticed that kernel.org advertises 2.6.28 as "The latest stable version of the Linux kernel is". Subject: Re: Hi! I've noticed that kernel.org advertises 2.6.28 as "The latest stable version of the Linux kernel is". Message-ID: <20081229092124.GA18987@infradead.org> References: <43d009740812282139x7597aafbn4474455c1aa1e0e8@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <43d009740812282139x7597aafbn4474455c1aa1e0e8@mail.gmail.com> 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: 1230542485 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8808/Mon Dec 29 01:46:26 2008 on oss.sgi.com X-Virus-Status: Clean On Mon, Dec 29, 2008 at 12:39:55PM +0700, Igor Podlesny wrote: > -- Copying several rather big files (~ 25--45 GiB) from XFS on LVM-2 > on MDraid partition to another one, I had the system rebooted both > with 2.6.28 and 2.6.27.10 (accomplished using 2.6.24.7-rt(sic!)25). As > you probably understand, that's the case you even can't trace where's > the problem, at least on a desktop with GUI, not on server with plain > text display. Although, I'm afraid even text display wouldn't had a > chance to show anything, tracing that problem. You don't have 4K_STACKs enabled by default, do you? And instead of these rants bug reports would be more useful. From for.poige@gmail.com Mon Dec 29 04:01:53 2008 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=unavailable 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 mBTA1r5h023846 for ; Mon, 29 Dec 2008 04:01:53 -0600 X-ASG-Debug-ID: 1230544912-187f00dc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from qw-out-1920.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1CC82179274B for ; Mon, 29 Dec 2008 02:01:52 -0800 (PST) Received: from qw-out-1920.google.com (qw-out-1920.google.com [74.125.92.149]) by cuda.sgi.com with ESMTP id rSuxM1mTkHtzCsJK for ; Mon, 29 Dec 2008 02:01:52 -0800 (PST) Received: by qw-out-1920.google.com with SMTP id 5so16256186qwc.32 for ; Mon, 29 Dec 2008 02:01:51 -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:reply-to :sender:to:subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references :x-google-sender-auth; bh=yP3VlVo0Cz6+AQAzTqsXoT5QcbWSJ/ZN0MfY3+uqbFM=; b=VwJJrJpe6MRqA473XphTG7957SsdQ4diqJVvcLhi57/YA6Ksg4XDfDWgh1tHOkxZAf hjp35J3fk3IeaWdpz6QUM7OsGrWrxxJGeF7gOUPCiXVJWsRwmTm0Dfvd4MqGaEz/ILDS RKlFcZxlMU978J3VSQWoAL4yPBeCWyFOL8wdA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:reply-to:sender:to:subject:cc:in-reply-to :mime-version:content-type:content-transfer-encoding :content-disposition:references:x-google-sender-auth; b=Y8LUb0rJ6hcM39O2QIcb2tOTlS38js9QVwd0BLahCs63iuGiDeZze0JjmzgGI0RMCm 8CoIPkzUUACK6NiGQZevjh4/VBnoVD/Yex5olrZWr/il3n50IomnXKwMAVbWLoN6I/MR x1GpwzgKGJb7ii6up+QRNPwJpEsa6RMajq9VA= Received: by 10.214.244.12 with SMTP id r12mr10849743qah.126.1230544911665; Mon, 29 Dec 2008 02:01:51 -0800 (PST) Received: by 10.215.38.17 with HTTP; Mon, 29 Dec 2008 02:01:51 -0800 (PST) Message-ID: <43d009740812290201x30cadf9bx61c525f380746e64@mail.gmail.com> Date: Mon, 29 Dec 2008 17:01:51 +0700 From: "Igor Podlesny" Reply-To: for.poige+linux@gmail.com Sender: for.poige@gmail.com To: "Christoph Hellwig" X-ASG-Orig-Subj: Re: Hi! I've noticed that kernel.org advertises 2.6.28 as "The latest stable version of the Linux kernel is". Subject: Re: Hi! I've noticed that kernel.org advertises 2.6.28 as "The latest stable version of the Linux kernel is". Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com In-Reply-To: <20081229092124.GA18987@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <43d009740812282139x7597aafbn4474455c1aa1e0e8@mail.gmail.com> <20081229092124.GA18987@infradead.org> X-Google-Sender-Auth: fcdff11b2b39d158 X-Barracuda-Connect: qw-out-1920.google.com[74.125.92.149] X-Barracuda-Start-Time: 1230544913 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.13895 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8808/Mon Dec 29 01:46:26 2008 on oss.sgi.com X-Virus-Status: Clean 2008/12/29 Christoph Hellwig : > On Mon, Dec 29, 2008 at 12:39:55PM +0700, Igor Podlesny wrote: >> -- Copying several rather big files (~ 25--45 GiB) from XFS on LVM-2 >> on MDraid partition to another one, I had the system rebooted both >> with 2.6.28 and 2.6.27.10 (accomplished using 2.6.24.7-rt(sic!)25). As >> you probably understand, that's the case you even can't trace where's >> the problem, at least on a desktop with GUI, not on server with plain >> text display. Although, I'm afraid even text display wouldn't had a >> chance to show anything, tracing that problem. > > You don't have 4K_STACKs enabled by default, do you? x86_64, so it's not applicable. I see you've included XFS guys, but that's hard to guess which sub-system is related to that crash, cause it's a stacked construction XFS/LVM-2/Linux Software RAID/sata_nv. Also, I've found there were some complaints bout netfilter's ipt_recent, which I was using, so I've decided to turn it off and see. > > And instead of these rants bug reports would be more useful. > Yeah, I'll try to get backtraces, using null-modem cable, but alas, I don't have it yet. Nowadays it's not a thing easy to buy at a computer store. Also, my message (feedback) was written due to concerns bout quality degradation I saw. May be I was mistaken or not, but I felt it's better to talk about it to people who really cared and knew. -- End of message. Next message? From sitsofe@yahoo.com Mon Dec 29 05:08:14 2008 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=BAYES_00,FORGED_YAHOO_RCVD autolearn=unavailable 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 mBTB8E2o030517 for ; Mon, 29 Dec 2008 05:08:14 -0600 X-ASG-Debug-ID: 1230548892-053f029e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pih-relay04.plus.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A97AE4E525 for ; Mon, 29 Dec 2008 03:08:13 -0800 (PST) Received: from pih-relay04.plus.net (pih-relay04.plus.net [212.159.14.17]) by cuda.sgi.com with ESMTP id wqVrDCaWrSHa0cbd for ; Mon, 29 Dec 2008 03:08:13 -0800 (PST) Received: from [87.114.22.199] (helo=janet-wheelers-macbook.local) by pih-relay04.plus.net with esmtp (Exim) id 1LHFyl-00082Q-0B; Mon, 29 Dec 2008 11:08:11 +0000 Message-ID: <4958AF9E.7070005@yahoo.com> Date: Mon, 29 Dec 2008 11:08:14 +0000 From: Sitsofe Wheeler User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 Newsgroups: fa.linux.kernel To: for.poige+linux@gmail.com CC: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Hi! I've noticed that kernel.org advertises 2.6.28 as "The latest stable version of the Linux kernel is". Subject: Re: Hi! I've noticed that kernel.org advertises 2.6.28 as "The latest stable version of the Linux kernel is". References: In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Plusnet-Relay: 4297833bc8ef34a31ce4c9328304b537 X-Barracuda-Connect: pih-relay04.plus.net[212.159.14.17] X-Barracuda-Start-Time: 1230548893 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: -0.61 X-Barracuda-Spam-Status: No, SCORE=-0.61 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=FORGED_YAHOO_RCVD X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13899 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.41 FORGED_YAHOO_RCVD 'From' yahoo.com does not match 'Received' headers X-Virus-Scanned: ClamAV 0.91.2/8808/Mon Dec 29 01:46:26 2008 on oss.sgi.com X-Virus-Status: Clean Igor Podlesny wrote: > Yeah, I'll try to get backtraces, using null-modem cable, but alas, I Have you tried compiling your kernel with extended checks (CONFIG_DEBUG_KERNEL in the Kernel hacking menu)? There are debug poisoning options too. Sometimes this can flush out problems before they become fatal... From www-data@hiphop-magazine.com Mon Dec 29 05:10:57 2008 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, J_CHICKENPOX_61 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 mBTBAv7X030821 for ; Mon, 29 Dec 2008 05:10:57 -0600 X-ASG-Debug-ID: 1230549054-187f02a30000-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 E17D81792D85 for ; Mon, 29 Dec 2008 03:10:54 -0800 (PST) Received: from hiphop-magazine.com (hiphop-magazine.com [85.214.133.137]) by cuda.sgi.com with ESMTP id 5K9Yvra9axxuvvcG for ; Mon, 29 Dec 2008 03:10:54 -0800 (PST) Received: by hiphop-magazine.com (Postfix, from userid 33) id 50C974B82FD; Mon, 29 Dec 2008 12:10:53 +0100 (CET) To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Yo! Raps: Fat Joe ft. Lil Wayne & Ron Browz - Winding On Me [+MORE] Subject: Yo! Raps: Fat Joe ft. Lil Wayne & Ron Browz - Winding On Me [+MORE] Date: Mon, 29 Dec 2008 12:10:53 +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.175.33 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: 1230549055 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5020 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=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13899 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV 0.91.2/8808/Mon Dec 29 01:46:26 2008 on oss.sgi.com X-Virus-Status: Clean Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 2163 We hope everyone had a Merry Christmas! Yo! Raps Magazine (www.yoraps.com) is back and brings you all the newest Hip-Hop singles, R&B singles, Freestyles and Remixes. We break records first these days before anyone else does. Yo! Raps gets you all the latest and exclusive tracks from A - Z. Only for stream! TRACK OF THE DAY: Fat Joe ft. Ron Browz & Lil Wayne - Winding On Me LATEST AUDIOS - Lloyd Banks - My Brother's Keeper - Jadakiss ft. Faith Evans - Letter to B.I.G. - DJ Drama ft. The-Dream, LA The Darkman & Too Short - Tipper Love - Ne-Yo - Can I Keep You Company - Freeway ft. James Blunt - When I Die - Jay Rock ft. Papoose, Joell Ortiz, Stacey Adams & Grafh - East Meets West - Keri Hilson - Alienated - Swizz Beatz - Showtime - Brandy - One Thing - Lil Fats ft. Sha Stimuli - You Ain't Heard Of Me Yet - Curren$y ft. Mistah F.A.B. - Life's A Bitch - India.Arie - Therapy - Jus Nice - Voicemail - Bizz ft. Q-Parker - In A Minute - Cory Gunz ft. Square OFF - Box Full Of Bullets - Plies - Gon' Do - Lloyd Banks - Do It For This Block - Jim Jones - Scarz - DMX - Y'all Niggaz - Cassie - Summer Charm - Swizz Beatz ft. Fat Man Scoop - Get Loose - Royce Da 5'9" - Part Of Me - Ya Boy ft. T-Pain - So Mean - Chingy - Money Motivation - Teairra Mari ft. Pleasure P - Hunt 4 You - Yung Joc ft. Monica - Ridah - MIMS ft. LeToya - Love Rollercoaster Place your track HERE (1,2million subscribers) and on YO! RAPS (www.yoraps.com) for only $50. Contact: info@yo-pr.com Get 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 for.poige@gmail.com Mon Dec 29 05:16:11 2008 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_52 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 mBTBGA1D031799 for ; Mon, 29 Dec 2008 05:16:10 -0600 X-ASG-Debug-ID: 1230549369-354b010a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from qw-out-1920.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5E1FC4E5FC for ; Mon, 29 Dec 2008 03:16:10 -0800 (PST) Received: from qw-out-1920.google.com (qw-out-1920.google.com [74.125.92.148]) by cuda.sgi.com with ESMTP id CIO00gAhLddDY3uJ for ; Mon, 29 Dec 2008 03:16:10 -0800 (PST) Received: by qw-out-1920.google.com with SMTP id 5so16302545qwc.32 for ; Mon, 29 Dec 2008 03:16:09 -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:reply-to :sender:to:subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references :x-google-sender-auth; bh=S1lrUi/8RiruY8tdRznmnKT2jpRA2Bae4IwbjlUYfuU=; b=BWSTuZ6tCCrNzFq94pVcWNhd5lkLDIsSvzgk5iSYtQAlQDLLD4RLurE19uxaCR0sjQ 5pCOFQwBH/i7ooEJabBHe0HvEoI6ur0wDibzx1Vu+ri8ySPkhzgWUPNRFXtSS2K2ogZ/ 0wKlrfrg5Xe3L+Fb6HJS0jTV7QwXj5th2s1eQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:reply-to:sender:to:subject:cc:in-reply-to :mime-version:content-type:content-transfer-encoding :content-disposition:references:x-google-sender-auth; b=SqtMcdtM3dEHPGGjZLpizqCIgZx8iHsvB34xlDt4p6+VGz5jheQcRkO4mn5tGiJX7Y fb+gWRGP0ZOdgFUaJrqA8EuDSKX9AZUtMJ09ewJa+4heucEbsze4jmSNBKlBSwAivNMc k8XUElrC3/6X5Itm1SMMC7XU50+OEfoL2hCgY= Received: by 10.214.26.7 with SMTP id 7mr10906820qaz.91.1230549369534; Mon, 29 Dec 2008 03:16:09 -0800 (PST) Received: by 10.215.38.17 with HTTP; Mon, 29 Dec 2008 03:16:09 -0800 (PST) Message-ID: <43d009740812290316v7babab12t218a0e122e05f871@mail.gmail.com> Date: Mon, 29 Dec 2008 18:16:09 +0700 From: "Igor Podlesny" Reply-To: for.poige+linux@gmail.com Sender: for.poige@gmail.com To: "Sitsofe Wheeler" X-ASG-Orig-Subj: Re: Hi! I've noticed that kernel.org advertises 2.6.28 as "The latest stable version of the Linux kernel is". Subject: Re: Hi! I've noticed that kernel.org advertises 2.6.28 as "The latest stable version of the Linux kernel is". Cc: "Christoph Hellwig" , xfs@oss.sgi.com, linux-kernel@vger.kernel.org In-Reply-To: <4958AF9E.7070005@yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <4958AF9E.7070005@yahoo.com> X-Google-Sender-Auth: aac6f6b60d57cfac X-Barracuda-Connect: qw-out-1920.google.com[74.125.92.148] X-Barracuda-Start-Time: 1230549370 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.13899 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8808/Mon Dec 29 01:46:26 2008 on oss.sgi.com X-Virus-Status: Clean 2008/12/29 Sitsofe Wheeler : > Igor Podlesny wrote: >> >> Yeah, I'll try to get backtraces, using null-modem cable, but alas, >> I > > Have you tried compiling your kernel with extended checks > (CONFIG_DEBUG_KERNEL in the Kernel hacking menu)? There are debug poisoning > options too. Sometimes this can flush out problems before they become > fatal... > 2.6.28's: # CONFIG_DEBUG_DRIVER is not set # CONFIG_DEBUG_DEVRES is not set # CONFIG_DEBUG_FS is not set CONFIG_DEBUG_KERNEL=y CONFIG_DEBUG_SHIRQ=y # CONFIG_DEBUG_OBJECTS is not set CONFIG_DEBUG_PREEMPT=y # CONFIG_DEBUG_RT_MUTEXES is not set # CONFIG_DEBUG_SPINLOCK is not set # CONFIG_DEBUG_MUTEXES is not set # CONFIG_DEBUG_LOCK_ALLOC is not set # CONFIG_DEBUG_SPINLOCK_SLEEP is not set # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set # CONFIG_DEBUG_KOBJECT is not set CONFIG_DEBUG_BUGVERBOSE=y # CONFIG_DEBUG_INFO is not set # CONFIG_DEBUG_VM is not set # CONFIG_DEBUG_VIRTUAL is not set # CONFIG_DEBUG_WRITECOUNT is not set CONFIG_DEBUG_MEMORY_INIT=y CONFIG_DEBUG_LIST=y # CONFIG_DEBUG_SG is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set CONFIG_DEBUG_STACKOVERFLOW=y # CONFIG_DEBUG_STACK_USAGE is not set # CONFIG_DEBUG_PAGEALLOC is not set # CONFIG_DEBUG_PER_CPU_MAPS is not set CONFIG_DEBUG_RODATA=y # CONFIG_DEBUG_RODATA_TEST is not set # CONFIG_DEBUG_NX_TEST is not set -- Nothing in dmesg; when it freezes or reboots, even if there're some messages on console, they wouldn't be seen in graphics mode. As I said, now my suspicion is netfilter's ipt_recent; I've turned it off and now waiting. Another kernel I'm using now (2.6.24-ovz-006.5+) is built with stack usage reporting; that's the latest stack depth report: [ 54.312696] modprobe used greatest stack depth: 3904 bytes left Dunno whether it's rather low or ok. -- End of message. Next message? From SRS0+88d631ebfcf98fc0e426+1954+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 29 05:37:38 2008 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=unavailable 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 mBTBbcGC001118 for ; Mon, 29 Dec 2008 05:37:38 -0600 X-ASG-Debug-ID: 1230550657-41ad00f20000-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 22EA94E323 for ; Mon, 29 Dec 2008 03:37:38 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 52I445TWfZtSYBPt for ; Mon, 29 Dec 2008 03:37:38 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHGQk-00022V-Uq; Mon, 29 Dec 2008 11:37:07 +0000 Date: Mon, 29 Dec 2008 06:37:06 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs mailing list X-ASG-Orig-Subj: Re: [PATCH] xfstests: test 194, test tricky mapping/conversion around holes Subject: Re: [PATCH] xfstests: test 194, test tricky mapping/conversion around holes Message-ID: <20081229113706.GA10891@infradead.org> References: <4942C6E2.4040506@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4942C6E2.4040506@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: 1230550658 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8808/Mon Dec 29 01:46:26 2008 on oss.sgi.com X-Virus-Status: Clean On Fri, Dec 12, 2008 at 02:17:38PM -0600, Eric Sandeen wrote: > Related to > http://oss.sgi.com/bugzilla/show_bug.cgi?id=801 > > Latest patch posted on that bug makes this testcase pass... > > (are we at 194 now?) > > first 2 tests are simple buffred writ tests making sure stale > data isn't exposed, and hole-blocks aren't mapped. > > 2nd 2 tests are more related to the above bug, tricky testcase > uncovered by fsx on ppc64 which actually re-maps a block > which should be a hole, bringing stale data back into existence. The testcase requires awk --asign, which my debian lenny testbox (mawk 1.3.3-11.1) doesn't have. Any chance you could rework it to work with the posix awk features? From SRS0+88d631ebfcf98fc0e426+1954+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 29 05:37:56 2008 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 mBTBbuBj001137 for ; Mon, 29 Dec 2008 05:37:56 -0600 X-ASG-Debug-ID: 1230550675-5a4801570000-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 794371792538 for ; Mon, 29 Dec 2008 03:37:55 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id SIxFucEVCBHOEnvI for ; Mon, 29 Dec 2008 03:37:55 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHGRW-0002qZ-Kw; Mon, 29 Dec 2008 11:37:54 +0000 Date: Mon, 29 Dec 2008 06:37:54 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: couple small xfstest patches Subject: Re: couple small xfstest patches Message-ID: <20081229113754.GB10891@infradead.org> References: <20081222130824.GC12367@infradead.org> <494FAA58.7070605@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <494FAA58.7070605@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: 1230550675 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8808/Mon Dec 29 01:46:26 2008 on oss.sgi.com X-Virus-Status: Clean On Mon, Dec 22, 2008 at 08:55:20AM -0600, Eric Sandeen wrote: > Christoph Hellwig wrote: > > On Fri, Nov 21, 2008 at 01:45:23PM -0800, Matthew Kent wrote: > >> * 189 fails with external devices > >> * add a unified diff output option, find it easier on the eyes ;) > > > > Thanks, I'll put these into my queue. Question to the list: any > > arguments against just making unified diffs the default for xfsqa > > output? > > none here; I run patched that way already. Given that no one else complained I'll make it the default. From davidn@davidnewall.com Mon Dec 29 08:02:38 2008 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=unavailable 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 mBTE2Zqx015363 for ; Mon, 29 Dec 2008 08:02:38 -0600 X-ASG-Debug-ID: 1230559352-67ca01160000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hawking.rebel.net.au (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B533117931CD for ; Mon, 29 Dec 2008 06:02:33 -0800 (PST) Received: from hawking.rebel.net.au (hawking.rebel.net.au [203.20.69.83]) by cuda.sgi.com with ESMTP id z11Mt0nK4DltyquR for ; Mon, 29 Dec 2008 06:02:33 -0800 (PST) Received: from [192.168.0.5] (ppp121-45-124-187.lns11.adl6.internode.on.net [::ffff:121.45.124.187]) (AUTH: PLAIN davidn, SSL: TLSv1/SSLv3,256bits,AES256-SHA) by hawking.rebel.net.au with esmtp; Tue, 30 Dec 2008 00:32:28 +1030 id 004A021B.4958D874.000024F0 Message-ID: <4958D86D.2000506@davidnewall.com> Date: Tue, 30 Dec 2008 00:32:21 +1030 From: David Newall User-Agent: Thunderbird 2.0.0.12 (X11/20080227) MIME-Version: 1.0 To: Christoph Hellwig CC: Igor Podlesny , linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Hi! I've noticed that kernel.org advertises 2.6.28 as "The latest stable version of the Linux kernel is". Subject: Re: Hi! I've noticed that kernel.org advertises 2.6.28 as "The latest stable version of the Linux kernel is". References: <43d009740812282139x7597aafbn4474455c1aa1e0e8@mail.gmail.com> <20081229092124.GA18987@infradead.org> In-Reply-To: <20081229092124.GA18987@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: hawking.rebel.net.au[203.20.69.83] X-Barracuda-Start-Time: 1230559354 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.13908 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8808/Mon Dec 29 01:46:26 2008 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > instead of these rants bug reports would be more useful. Igor didn't rant, not even a little bit, and it reflects poorly on you that you engage in hyperbole rather than hear his story. In fact, or at least in my opinion as a computer programmer with 30 years experience, he's right: A newly stable kernel is not stable. He might even be right about regressions since 2.6.24. It's a sorry day when somebody making a simple, reasonable and accurate feedback is criticised for not providing bug reports. But don't let him (or me) stop you guys from toasting your fine success. You believe it's stable; what more could anyone want? From sandeen@sandeen.net Mon Dec 29 08:18:20 2008 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=unavailable 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 mBTEIKlX016836 for ; Mon, 29 Dec 2008 08:18:20 -0600 X-ASG-Debug-ID: 1230560298-043e006c0000-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 7B3051BF6CF1 for ; Mon, 29 Dec 2008 06:18:19 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id zeMi39OoQepCiWfy for ; Mon, 29 Dec 2008 06:18:19 -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 84E6AAC358C; Mon, 29 Dec 2008 08:18:18 -0600 (CST) Message-ID: <4958DC2B.2060104@sandeen.net> Date: Mon, 29 Dec 2008 08:18:19 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs mailing list X-ASG-Orig-Subj: Re: [PATCH] xfstests: test 194, test tricky mapping/conversion around holes Subject: Re: [PATCH] xfstests: test 194, test tricky mapping/conversion around holes References: <4942C6E2.4040506@sandeen.net> <20081229113706.GA10891@infradead.org> In-Reply-To: <20081229113706.GA10891@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: 1230560299 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.13908 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8808/Mon Dec 29 01:46:26 2008 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > On Fri, Dec 12, 2008 at 02:17:38PM -0600, Eric Sandeen wrote: >> Related to >> http://oss.sgi.com/bugzilla/show_bug.cgi?id=801 >> >> Latest patch posted on that bug makes this testcase pass... >> >> (are we at 194 now?) >> >> first 2 tests are simple buffred writ tests making sure stale >> data isn't exposed, and hole-blocks aren't mapped. >> >> 2nd 2 tests are more related to the above bug, tricky testcase >> uncovered by fsx on ppc64 which actually re-maps a block >> which should be a hole, bringing stale data back into existence. > > The testcase requires awk --asign, which my debian lenny testbox > (mawk 1.3.3-11.1) doesn't have. Any chance you could rework it > to work with the posix awk features? > grumble grumble debian grumble :) Ok, I'll see what I can do. -Eric From sandeen@sandeen.net Mon Dec 29 09:56:09 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=BAYES_00,WEIRD_QUOTING autolearn=unavailable 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 mBTFu9NW024661 for ; Mon, 29 Dec 2008 09:56:09 -0600 X-ASG-Debug-ID: 1230566167-48cd00d90000-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 80C501BF6E4C for ; Mon, 29 Dec 2008 07:56:07 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 4XwG8FaAehQwpKDn for ; Mon, 29 Dec 2008 07:56:07 -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 83D7FAC358C for ; Mon, 29 Dec 2008 09:56:07 -0600 (CST) Message-ID: <4958F317.5090608@sandeen.net> Date: Mon, 29 Dec 2008 09:56:07 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: xfs mailing list X-ASG-Orig-Subj: [PATCH V2] xfstests: test 194, test tricky mapping/conversion around holes Subject: [PATCH V2] xfstests: test 194, test tricky mapping/conversion around holes References: <4942C6E2.4040506@sandeen.net> In-Reply-To: <4942C6E2.4040506@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: 1230566168 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: 0.97 X-Barracuda-Spam-Status: No, SCORE=0.97 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_MJ615, WEIRD_QUOTING X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13915 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 2.80 WEIRD_QUOTING BODY: Weird repeated double-quotation marks 0.20 BSF_SC0_MJ615 Custom Rule MJ615 X-Virus-Scanned: ClamAV 0.91.2/8808/Mon Dec 29 01:46:26 2008 on oss.sgi.com X-Virus-Status: Clean Related to http://oss.sgi.com/bugzilla/show_bug.cgi?id=801 Latest patch posted on that bug makes this testcase pass... first 2 tests are simple buffred writ tests making sure stale data isn't exposed, and hole-blocks aren't mapped. 2nd 2 tests are more related to the above bug, tricky testcase uncovered by fsx on ppc64 which actually re-maps a block which should be a hole, bringing stale data back into existence. V2, don't use non-posix awk extensions Signed-off-by: Eric Sandeen --- --- /dev/null 2008-12-15 12:59:36.525062048 -0600 +++ 194 2008-12-29 09:57:29.000000000 -0600 @@ -0,0 +1,206 @@ +#! /bin/sh +# FS QA Test No. 194 +# +# Test mapping around/over holes for sub-page blocks +# +#----------------------------------------------------------------------- +# Copyright (c) 2008 Eric Sandeen. All Rights Reserved. +#----------------------------------------------------------------------- +# +# creator +owner=sandeen@sandeen.net + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $tmp.* +} + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# only xfs supported due to use of xfs_bmap +_supported_fs xfs +_supported_os IRIX Linux + +# real QA test starts here +rm -f $seq.full + +# For this test we use block size = 1/8 page size +pgsize=`$here/src/feature -s` +blksize=`expr $pgsize / 8` + +# Filter out file mountpoint and physical location info +# Input: +# EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL +# 0: [0..63]: 160..223 0 (160..223) 64 +# 1: [64..127]: hole 64 +# Output: +# SCRATCH_MNT/testfile4: TYPE +# EXT: TYPE TOTAL +# 0: blocks 1 +# 1: hole 1 + +_filter_bmap() +{ + tee -a $seq.full | \ + sed "s#$SCRATCH_MNT#SCRATCH_MNT#g" | \ + awk \ + '$3 ~ /hole/ { print $1 "\t" $3 "\t" ($4 * 512) / blksize; next } + $1 ~ /^[0-9]/ { print $1 "\tblocks\t" ($6 * 512) / blksize; next } + $1 ~ /^SCRATCH/ { print $1; next } + { print $1 "\tTYPE\t" $6 }' blksize=$blksize +} + +# Filter out offsets, which vary by blocksize +_filter_od() +{ + tee -a $seq.full | \ + sed -e "s/^[0-9A-Fa-f ]\{7,8\}//" +} + +_require_scratch +unset MKFS_OPTIONS +unset XFS_MKFS_OPTIONS +_scratch_mkfs_xfs -b size=$blksize >/dev/null 2>&1 +_scratch_mount + +# 512b block / 4k page example: +# +#1) Write 1k of data (buffered): +# +# |1111|1111| +# +# 2) ftruncate back to 256 bytes: +# +# |1100| +# +# 3) ftruncate out to 4k: ("H" means hole (expected)) +# +# |1100|HHHH|HHHH|HHHH|HHHH|HHHH|HHHH|HHHH| +# +# So we should have 1 block of data/0, 7 blocks of holes. +# +# 4) check what's there with a direct IO read +# +# In fact what I get is 1 block of data/0, 1 block of 0's, and 7 blocks of +# garbage: +# +# |1100|0000|GGGG|GGGG|GGGG|GGGG|GGGG|GGGG| +# +# The garbage is in fact stale data from the disk. +# +# Check that we don't get stale data and that the hole is a hole: + +echo "== Test 1 ==" +# Write, truncate in, truncate out +xfs_io \ +-c "pwrite -S 0x11 -b `expr $pgsize / 2` 0 `expr $pgsize / 2`" \ +-c "truncate `expr $blksize / 2`" \ +-c "truncate $pgsize" \ +-t -f $SCRATCH_MNT/testfile1 >> $seq.full + +# directio read of entire file +xfs_io \ +-c "pread 0 $pgsize" \ +-d $SCRATCH_MNT/testfile1 >> $seq.full + +xfs_bmap -v $SCRATCH_MNT/testfile1 | _filter_bmap +od -x $SCRATCH_MNT/testfile1 | _filter_od + +# Similar but write another block to create block/hole/block/hole + +echo "== Test 2 ==" +# Write, truncate in, truncate out, write to middle +xfs_io \ +-c "pwrite -S 0x11 -b `expr $pgsize / 2` 0 `expr $pgsize / 2`" \ +-c "truncate `expr $blksize / 2`" \ +-c "truncate $pgsize" \ +-c "pwrite -S 0x22 -b $blksize `expr $blksize \* 4` $blksize" \ +-t -f $SCRATCH_MNT/testfile2 >> $seq.full + +# directio read of entire file +xfs_io \ +-c "pread 0 $pgsize" \ +-d $SCRATCH_MNT/testfile2 >> $seq.full + +xfs_bmap -v $SCRATCH_MNT/testfile2 | _filter_bmap +od -x $SCRATCH_MNT/testfile2 | _filter_od + +# 512 byte block / 4k page example: + +# direct write 1 page (8 blocks) of "0x11" to 0x1000 +# map read 1 block, 512 (0x200) at 0 +# truncate to half a block, 256 (0x100) +# truncate to block+1, 513 (0x201) +# direct write "0x22" for 1 block at offset 2048 (0x800) + +# |1111|1111|1111|1111|1111|1111|1111|1111| Write 1's +# |MRMR|1111|1111|1111|1111|1111|1111|1111| mapread +# |11--| truncate down +# |1100|0---| truncate up, block+1 +# | | |HHHH|HHHH|2222| Write 2's (extending) + +# |uptodate?| +# |1100|0000|1111|1111|2222|----|----|----| <- potential badness + +# We're looking for this badness due to mapping over a hole: +# Exposes stale data from 0x400 (1024) through 0x800 (2048) + +# 00000000 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 |................| +# * +# 00000100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| +# * +# 00000400 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 |................| <- BAD +# * +# 00000800 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 |""""""""""""""""| +# * +# 00000a00 + +# We *should* get: +# |1100|HHHH|HHHH|HHHH|2222|----|----|----| + +echo "== Test 3 ==" +xfs_io \ +-c "pwrite -S 0x11 -b $pgsize 0 $pgsize" \ +-c "mmap -r 0 $blksize" -c "mread 0 $blksize" -c "munmap" \ +-c "truncate `expr $blksize / 2`" \ +-c "truncate `expr $blksize + 1`" \ +-c "pwrite -S 0x22 -b $blksize `expr $pgsize / 2` $blksize" \ +-t -d -f $SCRATCH_MNT/testfile3 >> $seq.full + +xfs_bmap -v $SCRATCH_MNT/testfile3 | _filter_bmap +od -x $SCRATCH_MNT/testfile3 | _filter_od + +# Now try the same thing but write a sector in the middle of that hole +# If things go badly stale data will be exposed either side. +# This is most interesting for block size > 512 (page size > 4096) + +# We *should* get: +# |1100|HHHH|33HH|HHHH|2222|----|----|----| + +echo "== Test 4 ==" +xfs_io \ +-c "pwrite -S 0x11 -b $pgsize 0 $pgsize" \ +-c "mmap -r 0 $blksize" -c "mread 0 $blksize" -c "munmap" \ +-c "truncate `expr $blksize / 2`" \ +-c "truncate `expr $blksize + 1`" \ +-c "pwrite -S 0x22 -b $blksize `expr $pgsize / 2` $blksize" \ +-c "pwrite -S 0x33 -b 512 `expr $blksize \* 2` 512" \ +-t -d -f $SCRATCH_MNT/testfile4 >> $seq.full + +xfs_bmap -v $SCRATCH_MNT/testfile4 | _filter_bmap +od -x $SCRATCH_MNT/testfile4 | _filter_od + +# success, all done +status=0 +exit --- /dev/null 2008-12-15 12:59:36.525062048 -0600 +++ 194.out 2008-12-29 09:57:33.000000000 -0600 @@ -0,0 +1,59 @@ +QA output created by 194 +== Test 1 == +SCRATCH_MNT/testfile1: +EXT: TYPE TOTAL +0: blocks 1 +1: hole 7 +1111 1111 1111 1111 1111 1111 1111 1111 +* +0000 0000 0000 0000 0000 0000 0000 0000 +* + +== Test 2 == +SCRATCH_MNT/testfile2: +EXT: TYPE TOTAL +0: blocks 1 +1: hole 3 +2: blocks 1 +3: hole 3 +1111 1111 1111 1111 1111 1111 1111 1111 +* +0000 0000 0000 0000 0000 0000 0000 0000 +* +2222 2222 2222 2222 2222 2222 2222 2222 +* +0000 0000 0000 0000 0000 0000 0000 0000 +* + +== Test 3 == +SCRATCH_MNT/testfile3: +EXT: TYPE TOTAL +0: blocks 1 +1: hole 3 +2: blocks 1 +1111 1111 1111 1111 1111 1111 1111 1111 +* +0000 0000 0000 0000 0000 0000 0000 0000 +* +2222 2222 2222 2222 2222 2222 2222 2222 +* + +== Test 4 == +SCRATCH_MNT/testfile4: +EXT: TYPE TOTAL +0: blocks 1 +1: hole 1 +2: blocks 1 +3: hole 1 +4: blocks 1 +1111 1111 1111 1111 1111 1111 1111 1111 +* +0000 0000 0000 0000 0000 0000 0000 0000 +* +3333 3333 3333 3333 3333 3333 3333 3333 +* +0000 0000 0000 0000 0000 0000 0000 0000 +* +2222 2222 2222 2222 2222 2222 2222 2222 +* + From sandeen@sandeen.net Mon Dec 29 11:29:36 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_33, J_CHICKENPOX_43,J_CHICKENPOX_44,J_CHICKENPOX_48,J_CHICKENPOX_51, J_CHICKENPOX_52,J_CHICKENPOX_53,J_CHICKENPOX_61,J_CHICKENPOX_64, J_CHICKENPOX_66,J_CHICKENPOX_92 autolearn=unavailable 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 mBTHTZgX031890 for ; Mon, 29 Dec 2008 11:29:36 -0600 X-ASG-Debug-ID: 1230571773-079a025b0000-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 362B54F746 for ; Mon, 29 Dec 2008 09:29:33 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id YYbrXcR3cmKA9QoC for ; Mon, 29 Dec 2008 09:29:33 -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 E3745AC358C for ; Mon, 29 Dec 2008 11:29:01 -0600 (CST) Message-ID: <495908DE.7040704@sandeen.net> Date: Mon, 29 Dec 2008 11:29:02 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH xfstests] 198: test aio+dio writes into sparse files Subject: [PATCH xfstests] 198: test aio+dio writes into sparse files 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: 1230571774 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.13919 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.20 BSF_SC0_MJ615 Custom Rule MJ615 X-Virus-Scanned: ClamAV 0.91.2/8808/Mon Dec 29 01:46:26 2008 on oss.sgi.com X-Virus-Status: Clean Older kernels were not doing completion properly, and converting unwritten extents at the wrong offsets; this exposed stale data. Xen w/ the blktap driver was hitting this. Signed-off-by: Eric Sandeen --- Index: xfstests/198 =================================================================== --- /dev/null +++ xfstests/198 @@ -0,0 +1,45 @@ +#! /bin/sh +# FS QA Test No. 198 +# +# Test that aio+dio into holes does completion at the proper offsets +# See also https://bugzilla.redhat.com/show_bug.cgi?id=217098 +# +#----------------------------------------------------------------------- +# Copyright (c) 2008 Eric Sandeen. All Rights Reserved. +#----------------------------------------------------------------------- +# +# creator +owner=sandeen@sandeen.net + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $tmp.* +} + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# This should actually run on anything that supports O_DIRECT + AIO... +_supported_fs xfs +_supported_os Linux + +echo "Silence is golden." + +# real QA test starts here +rm -f $seq.full + +rm -f "$TEST_DIR/aiodio_sparse*" +$here/src/aiodio_sparse2 "$TEST_DIR/aiodio_sparse" + +status=$? +exit Index: xfstests/198.out =================================================================== --- /dev/null +++ xfstests/198.out @@ -0,0 +1,2 @@ +QA output created by 198 +Silence is golden. Index: xfstests/group =================================================================== --- xfstests.orig/group +++ xfstests/group @@ -288,3 +288,4 @@ nfs4acl tes@sgi.com donaldd@sgi.com 189 mount auto 190 rw auto 191 nfs4acl auto +198 aio auto Index: xfstests/src/Makefile =================================================================== --- xfstests.orig/src/Makefile +++ xfstests/src/Makefile @@ -17,6 +17,11 @@ LINUX_TARGETS = loggen xfsctl bstat t_mt fs_perms testx looptest locktest unwritten_mmap \ bulkstat_unlink_test bulkstat_unlink_test_modified +ifeq ($(HAVE_AIO), true) +LINUX_TARGETS += aiodio_sparse2 +LIBAIO = -laio +endif + IRIX_TARGETS = open_unlink ifeq ($(PKG_PLATFORM),linux) @@ -115,6 +120,9 @@ locktest: locktest.o unwritten_sync: unwritten_sync.o $(LINKTEST) +aiodio_sparse2: aiodio_sparse2.o + $(LINKTEST) $(LIBAIO) + ifeq ($(PKG_PLATFORM),irix) fill2: fill2.o $(LINKTEST) -lgen Index: xfstests/src/aiodio_sparse2.c =================================================================== --- /dev/null +++ xfstests/src/aiodio_sparse2.c @@ -0,0 +1,385 @@ +/* gcc -g -Wall -O2 aiodio_sparse.c -o aiodio_sparse -laio */ + +/* + * From http://developer.osdl.org/daniel/AIO/TESTS/aiodio_sparse.c + * With patch from https://bugzilla.redhat.com/attachment.cgi?id=142124 + * (Bug https://bugzilla.redhat.com/show_bug.cgi?id=217098) + */ + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +int debug; + +/* + * aiodio_sparse - issue async O_DIRECT writes to holes is a file while + * concurrently reading the file and checking that the read never reads + * uninitailized data. + */ + +unsigned char *check_zero(unsigned char *buf, int size) +{ + unsigned char *p; + + p = buf; + + while (size > 0) { + if (*buf != 1) { + fprintf(stderr, "non one buffer at buf[%ld] => 0x%02x,%02x,%02x,%02x\n", + buf - p, (unsigned int)buf[0], + size > 1 ? (unsigned int)buf[1] : 0, + size > 2 ? (unsigned int)buf[2] : 0, + size > 3 ? (unsigned int)buf[3] : 0); + if (debug) + fprintf(stderr, "buf %p, p %p\n", buf, p); + return buf; + } + buf++; + size--; + } + return 0; /* all zeros */ +} + +volatile int got_signal; + +void +sig_term_func(int i, siginfo_t *si, void *p) +{ + if (debug) + fprintf(stderr, "sig(%d, %p, %p)\n", i, si, p); + got_signal++; +} + +/* + * do async DIO writes to a sparse file + */ +void aiodio_sparse(char *filename, int align, int writesize, int filesize, int num_aio, int step, int sparse, int direct, int keep) +{ + int fd; + void *bufptr; + int i; + int w; + static struct sigaction s; + struct iocb **iocbs; + off_t offset; + io_context_t myctx; + struct io_event event; + int aio_inflight; + + s.sa_sigaction = sig_term_func; + s.sa_flags = SA_SIGINFO; + sigaction(SIGTERM, &s, 0); + + if ((num_aio * step) > filesize) { + num_aio = filesize / step; + } + memset(&myctx, 0, sizeof(myctx)); + io_queue_init(num_aio, &myctx); + + iocbs = (struct iocb **)calloc(num_aio, sizeof(struct iocb *)); + for (i = 0; i < num_aio; i++) { + if ((iocbs[i] = (struct iocb *)calloc(1, sizeof(struct iocb))) == 0) { + perror("cannot malloc iocb"); + return; + } + } + + fd = open(filename, direct|O_WRONLY|O_CREAT, 0666); + + if (fd < 0) { + perror("cannot create file"); + return; + } + + if (sparse) + ftruncate(fd, filesize); + + /* + * allocate the iocbs array and iocbs with buffers + */ + offset = 0; + for (i = 0; i < num_aio; i++) { + void *bufptr; + + if (posix_memalign(&bufptr, align, writesize)) { + perror("cannot malloc aligned memory"); + close(fd); + unlink(filename); + return; + } + memset(bufptr, 1, writesize); + io_prep_pwrite(iocbs[i], fd, bufptr, writesize, offset); + offset += step; + } + + /* + * start the 1st num_aio write requests + */ + if ((w = io_submit(myctx, num_aio, iocbs)) < 0) { + perror("io_submit failed"); + close(fd); + unlink(filename); + return; + } + if (debug) + fprintf(stderr, "io_submit() return %d\n", w); + + /* + * As AIO requests finish, keep issuing more AIO until done. + */ + aio_inflight = num_aio; + if (debug) + fprintf(stderr, "aiodio_sparse: %d i/o in flight\n", aio_inflight); + while (offset < filesize) { + int n; + struct iocb *iocbp; + + if (debug) + fprintf(stderr, "aiodio_sparse: offset %ld filesize %d inflight %d\n", + offset, filesize, aio_inflight); + + if ((n = io_getevents(myctx, 1, 1, &event, 0)) != 1) { + if (-n != EINTR) + fprintf(stderr, "io_getevents() returned %d\n", n); + break; + } + if (debug) + fprintf(stderr, "aiodio_sparse: io_getevent() returned %d\n", n); + aio_inflight--; + if (got_signal) + break; /* told to stop */ + /* + * check if write succeeded. + */ + iocbp = event.obj; + if (event.res2 != 0 || event.res != iocbp->u.c.nbytes) { + fprintf(stderr, + "AIO write offset %lld expected %ld got %ld\n", + iocbp->u.c.offset, iocbp->u.c.nbytes, + event.res); + break; + } + if (debug) + fprintf(stderr, "aiodio_sparse: io_getevent() res %ld res2 %ld\n", + event.res, event.res2); + + /* start next write */ + io_prep_pwrite(iocbp, fd, iocbp->u.c.buf, writesize, offset); + offset += step; + if ((w = io_submit(myctx, 1, &iocbp)) < 0) { + fprintf(stderr, "io_submit failed at offset %ld\n", + offset); + perror(""); + break; + } + if (debug) + fprintf(stderr, "io_submit() return %d\n", w); + aio_inflight++; + } + + /* + * wait for AIO requests in flight. + */ + while (aio_inflight > 0) { + int n; + struct iocb *iocbp; + + if ((n = io_getevents(myctx, 1, 1, &event, 0)) != 1) { + perror("io_getevents failed"); + break; + } + aio_inflight--; + /* + * check if write succeeded. + */ + iocbp = event.obj; + if (event.res2 != 0 || event.res != iocbp->u.c.nbytes) { + fprintf(stderr, + "AIO write offset %lld expected %ld got %ld\n", + iocbp->u.c.offset, iocbp->u.c.nbytes, + event.res); + } + } + if (debug) + fprintf(stderr, "AIO DIO write done\n"); + close(fd); + if ((fd = open(filename, O_RDONLY)) < 0) + exit(1); + + bufptr = malloc(writesize); + for (offset = 0; offset < filesize; offset += step) { + unsigned char *badbuf; + + lseek(fd, offset, SEEK_SET); + if (read(fd, bufptr, writesize) < writesize) { + fprintf(stderr, "short read() at offset %ld\n", offset); + exit(11); + } + if ((badbuf = check_zero(bufptr, writesize))) { + fprintf(stderr, "non-one read at offset %ld\n", + offset + badbuf - (unsigned char*)bufptr); + fprintf(stderr, "*** WARNING *** %s has not been unlinked; if you don't rm it manually first, it may influence the next run\n", filename); + exit(10); + } + } + close(fd); + if (!keep) + unlink(filename); + else + fprintf(stderr, "*** WARNING *** You requested %s not to be unlinked; if you don't rm it manually first, it may influence the next run\n", filename); + +} + +void dirty_freeblocks(char *filename, int size) +{ + int fd; + void *p; + int pg; + char filename2[PATH_MAX]; + + + pg = getpagesize(); + size = ((size + pg - 1) / pg) * pg; + sprintf(filename2, "%s.xx.%d", filename, getpid()); + fd = open(filename2, O_CREAT|O_RDWR, 0666); + if (fd < 0) { + perror("cannot open file"); + exit(2); + } + ftruncate(fd, size); + p = mmap(0, size, PROT_WRITE|PROT_READ, MAP_SHARED|MAP_FILE, fd, 0); + if (p == MAP_FAILED) { + perror("cannot mmap"); + exit(2); + } + memset(p, 0xaa, size); + msync(p, size, MS_SYNC); + munmap(p, size); + close(fd); + unlink(filename2); +} + +void usage() +{ + fprintf(stderr, "usage: dio_sparse [-n step] [-s filesize]" + " [-w writesize] [-r readsize] filename\n"); + exit(1); +} + +/* + * Scale value by kilo, mega, or giga. + */ +long long scale_by_kmg(long long value, char scale) +{ + switch (scale) { + case 'g': + case 'G': + value *= 1024; + case 'm': + case 'M': + value *= 1024; + case 'k': + case 'K': + value *= 1024; + break; + case '\0': + break; + default: + usage(); + break; + } + return value; +} + +/* + * usage: + * aiodio_sparse [-r readsize] [-w writesize] [-n step] [-a align] [-i num_aio] filename + */ + +int main(int argc, char **argv) +{ + char filename[PATH_MAX]; + long alignment = 512; + int readsize = 65536; + int writesize = 65536; + int filesize = 100*1024*1024; + int num_aio = 16; + int step = 5*1024*1024; + int c, direct = O_DIRECT, keep = 0, sparse = 1; + extern char *optarg; + extern int optind, optopt, opterr; + + while ((c = getopt(argc, argv, "dr:w:n:a:s:i:DkS")) != -1) { + char *endp; + switch (c) { + case 'D': + direct = 0; + break; + case 'k': + keep = 1; + break; + case 'S': + sparse = 0; + break; + case 'd': + debug++; + break; + case 'i': + num_aio = atoi(optarg); + break; + case 'a': + alignment = strtol(optarg, &endp, 0); + alignment = (int)scale_by_kmg((long long)alignment, + *endp); + break; + case 'r': + readsize = strtol(optarg, &endp, 0); + readsize = (int)scale_by_kmg((long long)readsize, *endp); + break; + case 'w': + writesize = strtol(optarg, &endp, 0); + writesize = (int)scale_by_kmg((long long)writesize, *endp); + break; + case 's': + filesize = strtol(optarg, &endp, 0); + filesize = (int)scale_by_kmg((long long)filesize, *endp); + break; + case 'n': + step = strtol(optarg, &endp, 0); + step = (int)scale_by_kmg((long long)step, *endp); + break; + case '?': + usage(); + break; + } + } + + strncpy(filename, argv[argc-1], PATH_MAX); + + /* + * Create some dirty free blocks by allocating, writing, syncing, + * and then unlinking and freeing. + */ + dirty_freeblocks(filename, filesize); + + /* + * Parent write to a hole in a file using async direct i/o + */ + + aiodio_sparse(filename, alignment, writesize, filesize, num_aio, step, sparse, direct, keep); + + return 0; +} From Martin@Lichtvoll.de Mon Dec 29 12:20:29 2008 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=unavailable 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 mBTIKTPH009436 for ; Mon, 29 Dec 2008 12:20:29 -0600 X-ASG-Debug-ID: 1230574827-79eb00600000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.lichtvoll.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 909191793663 for ; Mon, 29 Dec 2008 10:20:27 -0800 (PST) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id 2ttoJoTFCY9Yw8aa for ; Mon, 29 Dec 2008 10:20:27 -0800 (PST) Received: from shambhala.lichtvoll.local (DSL01.83.171.154.140.ip-pool.NEFkom.net [83.171.154.140]) by mail.lichtvoll.de (Postfix) with ESMTPSA id 698D45AE4F for ; Mon, 29 Dec 2008 19:20:24 +0100 (CET) From: Martin Steigerwald To: xfs@oss.sgi.com X-ASG-Orig-Subj: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 Subject: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 Date: Mon, 29 Dec 2008 19:20:33 +0100 User-Agent: KMail/1.9.9 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200812291920.34123.Martin@Lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1230574828 X-Barracuda-Bayes: INNOCENT GLOBAL 0.1544 1.0000 -1.0763 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.08 X-Barracuda-Spam-Status: No, SCORE=-1.08 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13922 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e X-Virus-Scanned: ClamAV 0.91.2/8810/Mon Dec 29 10:40:50 2008 on oss.sgi.com X-Virus-Status: Clean Hi! Remember http://oss.sgi.com/pipermail/xfs/2008-November/037399.html ? I thought it was resolved and with later TuxOnIce and sync all is better for sure. This all was with barriers and write cache enabled. But I had a hard crash this time while shutting down the system regularily and the KDE addressbook, KDE settings, additional sidebar all was lost due to truncated files. This was without barriers but also without write cache. Curious about the safety of my data I tried to simulate the thing. I shouldn't have done that with my productive data but here are the results: I just switched the machine off after having made a backup of my KDE configuration and after closing my usual apps. Then I waited 30-40 seconds. First time was fine, second time KDE colors were lost again. Third time I didn't wait that long. Side bar was lost. Fourth time I pressed power off after *starting* KDE. Lots of stuff was lost, including: - colors - sidebar - kpanel settings - kgpg settings - one kwallet digital wallet with passwords and stuff, a complete file of 130 KB was just 60 bytes anymore I cannot remember having seen this kind of behavior anywhere between 2.6.17.7 and 2.6.26! And I had sudden interruptions of write activity from time to time. I can't prove anything right now. I possibly could if I dare to test this again with 2.6.26! But from my experiences this never was so massive. Prior to the null file fixes a file or two might have been corrupted and that not all the times. Thats to be expected if thats the file that where written out at the time. But now it seems that almost every file that is opened for writing or not even just for writing is truncated seriously at sudden interruption of write activity. Whereas before it appeared that usually either the change was not made or it was made - at least for small files. Now the file is truncated, no holes, just lots less bytes than before. I think I will go back to 2.6.26 for now - with write barriers, cause thats what used to work. I went too far already with my tests, cause its difficult to be sure that I found all truncated files even when I close all productivity applications in my tests. Altough it seems I was able to recovery everything everytime by mixing the current data set with the broken stuff restored from the last backup this is setting my data at a too high risk. Do you have any idea on how to help to get down to the cause of this - without risking precious data? Did anyone else see this? Does anyone use XFS on laptops and had recent power losses or crashes? I have seen this on a 2.6.27.7, 2.6.28 with tuxonice patches. syncing before a crash occurs seems to fix the issue. Did something change with how aggressively the kernel writes data out? I think it was something along shambhala:/proc/sys/vm> cat dirty_expire_centisecs 2999 shambhala:/proc/sys/fs/xfs> cat xfsbufd_centisecs xfssyncd_centisecs 100 3000 in all recent kernels! I expect to loose the changes for a dirtied file thats in the page cache. But I do not expect to loose the current (old) file on disk in that case, unless the crash happens when its actually written out at that time. And that appears to be highly unlikely expecially at the time just after KDE started up when I did not use any application yet. I would be surprised when the first things applications would be doing was to write out what they just read in. And even then I would be surprised when XFS did write to all the files at once. So I just don't get what I have seen here and I think I see a regression. I am willing to look deeper when I found how to do so safely enough. If there an xfsqa test that simulates sudden interruption of write activity? Actually I am considering to switch to ext3/4. Maybe the people that say don't use XFS on commodity hardware really have a point. But then it did work very well from 2.6.17.7 to 2.6.26, so I think what I face here is a behavorial regression. It might be a performance improvement at the same time, but for laptops and commodity workstations this is too risky IMHO. Is there interest in digging this? I can accept when you tell my not to use XFS on my laptop. But actually I think something changed between 2.6.26 andf 2.6.27 and maybe thats worth looking at. Ciao, -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From sandeen@sandeen.net Mon Dec 29 13:08:55 2008 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=unavailable 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 mBTJ8sAf024241 for ; Mon, 29 Dec 2008 13:08:55 -0600 X-ASG-Debug-ID: 1230577733-7eb101d70000-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 7100D179346B for ; Mon, 29 Dec 2008 11:08:53 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id V6MVK3biR4tpd3hm for ; Mon, 29 Dec 2008 11:08:53 -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 0880EA9FEA0; Mon, 29 Dec 2008 13:08:53 -0600 (CST) Message-ID: <49592045.3050103@sandeen.net> Date: Mon, 29 Dec 2008 13:08:53 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Martin Steigerwald CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 Subject: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 References: <200812291920.34123.Martin@Lichtvoll.de> In-Reply-To: <200812291920.34123.Martin@Lichtvoll.de> 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: 1230577734 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=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13923 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e X-Virus-Scanned: ClamAV 0.91.2/8810/Mon Dec 29 10:40:50 2008 on oss.sgi.com X-Virus-Status: Clean Martin Steigerwald wrote: > Hi! > > Remember > > http://oss.sgi.com/pipermail/xfs/2008-November/037399.html > > ? > > I thought it was resolved and with later TuxOnIce and sync all is better > for sure. This all was with barriers and write cache enabled. > > But I had a hard crash this time while shutting down the system regularily > and the KDE addressbook, KDE settings, additional sidebar all was lost > due to truncated files. This was without barriers but also without write > cache. Some actual data here would be helpful; when you say "truncated files" what do you mean; are they 0 length? Or shorter than they should be? How much shorter, and how do you know what they "should be?" It is certainly at least possible that whatever is writing the KDE files is not following good practices for data integrity... I can't say that for sure, but apps have responsibility here, too. :) > Curious about the safety of my data I tried to simulate the thing. I > shouldn't have done that with my productive data but here are the > results: > > I just switched the machine off after having made a backup of my KDE > configuration and after closing my usual apps. Then I waited 30-40 > seconds. First time was fine, second time KDE colors were lost again. > Third time I didn't wait that long. Side bar was lost. Fourth time I > pressed power off after *starting* KDE. Lots of stuff was lost, > including: > > - colors > - sidebar > - kpanel settings > - kgpg settings > - one kwallet digital wallet with passwords and stuff, a complete file of > 130 KB was just 60 bytes anymore Ah, data! So it went from 130KB to 60 bytes? Were the first 60 bytes valid data, or could you tell. > I cannot remember having seen this kind of behavior anywhere between > 2.6.17.7 and 2.6.26! And I had sudden interruptions of write activity > from time to time. > > I can't prove anything right now. I possibly could if I dare to test this > again with 2.6.26! But from my experiences this never was so massive. > Prior to the null file fixes a file or two might have been corrupted and > that not all the times. Thats to be expected if thats the file that where > written out at the time. But now it seems that almost every file that is > opened for writing or not even just for writing is truncated seriously at > sudden interruption of write activity. Whereas before it appeared that > usually either the change was not made or it was made - at least for > small files. Now the file is truncated, no holes, just lots less bytes > than before. > > I think I will go back to 2.6.26 for now - with write barriers, cause > thats what used to work. I went too far already with my tests, cause its > difficult to be sure that I found all truncated files even when I close > all productivity applications in my tests. Altough it seems I was able to > recovery everything everytime by mixing the current data set with the > broken stuff restored from the last backup this is setting my data at a > too high risk. > > Do you have any idea on how to help to get down to the cause of this - > without risking precious data? Did anyone else see this? Does anyone use > XFS on laptops and had recent power losses or crashes? > > I have seen this on a 2.6.27.7, 2.6.28 with tuxonice patches. Seems it'd be worth testing w/o tuxonice, too. I don't know what all is in there, honesetly. > syncing > before a crash occurs seems to fix the issue. Did something change with > how aggressively the kernel writes data out? > > I think it was something along > > shambhala:/proc/sys/vm> cat dirty_expire_centisecs > 2999 > > shambhala:/proc/sys/fs/xfs> cat xfsbufd_centisecs xfssyncd_centisecs > 100 > 3000 > > in all recent kernels! I don't think those have changed any time recently. > I expect to loose the changes for a dirtied file thats in the page cache. > But I do not expect to loose the current (old) file on disk in that case, > unless the crash happens when its actually written out at that time. This will depend on what the application is doing, though. > And > that appears to be highly unlikely expecially at the time just after KDE > started up when I did not use any application yet. I would be surprised > when the first things applications would be doing was to write out what > they just read in. And even then I would be surprised when XFS did write > to all the files at once. So I just don't get what I have seen here and I > think I see a regression. I am willing to look deeper when I found how to > do so safely enough. I take it that you see this even for files which you have not (intentionally) modified? > If there an xfsqa test that simulates sudden interruption of write > activity? There are tests which interrupt IO with the XFS_IOC_GOINGDOWN ioctl, which simulates a filesystem shutdown, which is not exactly the same as a crash or a power loss, though. > Actually I am considering to switch to ext3/4. Maybe the people that say > don't use XFS on commodity hardware really have a point. No. :) > But then it did > work very well from 2.6.17.7 to 2.6.26, so I think what I face here is a > behavorial regression. It might be a performance improvement at the same > time, but for laptops and commodity workstations this is too risky IMHO. > Is there interest in digging this? I can accept when you tell my not to > use XFS on my laptop. But actually I think something changed between > 2.6.26 andf 2.6.27 and maybe thats worth looking at. If you know what is writing to the files that you often see truncated, an strace of that pid might be interesting, to see what sorts of IO it is doing. ls -l /proc/$PID/fd/* | grep $FILE might give a clue if anyone has these files open, then strace that pid to see if there is any interesting activity on them? Otherwise, if you're highly motivated, and have a test box, do a little regression testing and see when you think this behavior changed. But I'd start w/ pristine upstream kernels. -Eric From cattelan@thebarn.com Mon Dec 29 13:09:26 2008 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 mBTJ9QwY024270 for ; Mon, 29 Dec 2008 13:09:26 -0600 X-ASG-Debug-ID: 1230577764-7eb201b10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from slurp.thebarn.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A44521793476 for ; Mon, 29 Dec 2008 11:09:24 -0800 (PST) Received: from slurp.thebarn.com (cattelan-host202.dsl.visi.com [208.42.117.202]) by cuda.sgi.com with ESMTP id MHYYYWrAqzsJOIIF for ; Mon, 29 Dec 2008 11:09:24 -0800 (PST) Received: from funky.thebarn.com (slurp.thebarn.com [208.42.117.201]) (authenticated bits=0) by slurp.thebarn.com (8.14.0/8.14.0) with ESMTP id mBTJ9IQD077160; Mon, 29 Dec 2008 13:09:19 -0600 (CST) (envelope-from cattelan@thebarn.com) Message-ID: <4959205E.4000000@thebarn.com> Date: Mon, 29 Dec 2008 13:09:18 -0600 From: Russell Cattelan User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070728) MIME-Version: 1.0 To: Martin Steigerwald CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 Subject: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 References: <200812291920.34123.Martin@Lichtvoll.de> In-Reply-To: <200812291920.34123.Martin@Lichtvoll.de> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/8810/Mon Dec 29 10:40:50 2008 on oss.sgi.com X-Virus-Scanned: ClamAV 0.91.2/8810/Mon Dec 29 10:40:50 2008 on slurp.thebarn.com X-Virus-Status: Clean X-Barracuda-Connect: cattelan-host202.dsl.visi.com[208.42.117.202] X-Barracuda-Start-Time: 1230577765 X-Barracuda-Bayes: INNOCENT GLOBAL 0.3708 1.0000 -0.0831 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.08 X-Barracuda-Spam-Status: No, SCORE=-0.08 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13923 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e Martin Steigerwald wrote: > Hi! > > Remember > > http://oss.sgi.com/pipermail/xfs/2008-November/037399.html > > ? > > I thought it was resolved and with later TuxOnIce and sync all is better > for sure. This all was with barriers and write cache enabled. > > But I had a hard crash this time while shutting down the system regularily > and the KDE addressbook, KDE settings, additional sidebar all was lost > due to truncated files. This was without barriers but also without write > cache. > > Curious about the safety of my data I tried to simulate the thing. I > shouldn't have done that with my productive data but here are the > results: > > I just switched the machine off after having made a backup of my KDE > configuration and after closing my usual apps. Then I waited 30-40 > seconds. First time was fine, second time KDE colors were lost again. > Third time I didn't wait that long. Side bar was lost. Fourth time I > pressed power off after *starting* KDE. Lots of stuff was lost, > including: > > - colors > - sidebar > - kpanel settings > - kgpg settings > - one kwallet digital wallet with passwords and stuff, a complete file of > 130 KB was just 60 bytes anymore > > I cannot remember having seen this kind of behavior anywhere between > 2.6.17.7 and 2.6.26! And I had sudden interruptions of write activity > from time to time. > > I can't prove anything right now. I possibly could if I dare to test this > again with 2.6.26! But from my experiences this never was so massive. > Prior to the null file fixes a file or two might have been corrupted and > that not all the times. Thats to be expected if thats the file that where > written out at the time. But now it seems that almost every file that is > opened for writing or not even just for writing is truncated seriously at > sudden interruption of write activity. Whereas before it appeared that > usually either the change was not made or it was made - at least for > small files. Now the file is truncated, no holes, just lots less bytes > than before. > > I think I will go back to 2.6.26 for now - with write barriers, cause > thats what used to work. I went too far already with my tests, cause its > difficult to be sure that I found all truncated files even when I close > all productivity applications in my tests. Altough it seems I was able to > recovery everything everytime by mixing the current data set with the > broken stuff restored from the last backup this is setting my data at a > too high risk. > > Do you have any idea on how to help to get down to the cause of this - > without risking precious data? Did anyone else see this? Does anyone use > XFS on laptops and had recent power losses or crashes? > > I have seen this on a 2.6.27.7, 2.6.28 with tuxonice patches. syncing > before a crash occurs seems to fix the issue. Did something change with > how aggressively the kernel writes data out? > > I think it was something along > > shambhala:/proc/sys/vm> cat dirty_expire_centisecs > 2999 > > shambhala:/proc/sys/fs/xfs> cat xfsbufd_centisecs xfssyncd_centisecs > 100 > 3000 > > in all recent kernels! > > I expect to loose the changes for a dirtied file thats in the page cache. > But I do not expect to loose the current (old) file on disk in that case, > unless the crash happens when its actually written out at that time. And > that appears to be highly unlikely expecially at the time just after KDE > started up when I did not use any application yet. I would be surprised > when the first things applications would be doing was to write out what > they just read in. And even then I would be surprised when XFS did write > to all the files at once. So I just don't get what I have seen here and I > think I see a regression. I am willing to look deeper when I found how to > do so safely enough. > > If there an xfsqa test that simulates sudden interruption of write > activity? > > Actually I am considering to switch to ext3/4. Maybe the people that say > don't use XFS on commodity hardware really have a point. But then it did > work very well from 2.6.17.7 to 2.6.26, so I think what I face here is a > behavorial regression. It might be a performance improvement at the same > time, but for laptops and commodity workstations this is too risky IMHO. > Is there interest in digging this? I can accept when you tell my not to > use XFS on my laptop. But actually I think something changed between > 2.6.26 andf 2.6.27 and maybe thats worth looking at. > > Ciao, > I would have to look for sure when Dave's rewrite of the inode cache/fs sync code went in but it could be around the time of 2.6.27. xfssyncd also has special handling for laptop mode so that is does not tickle the disk to often, so maybe that needs to be looked at? The question that I have is regards to kde apps. The "null file" issue mainly shows up when an app truncates a file to 0 and then re-writes the entire contents, (vim is the most common app doing this). So does kde do this on a regular basis? open a file, read it in, truncate to 0 and then write it back out at some point? and why? are these files that are modified often? The other thing that is odd is why files full of nulls still? xfs changed its behavior to write out size changes at flush time and not before, previously size changes would be synced out prior to the data being synced out, thus creating "null files" or rather a file with size but no extent data. The "null files" problem should be an "empty files" problem at worst now, so it is really curious that you are seeing null files still. -Russell From SRS0+88d631ebfcf98fc0e426+1954+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 29 13:21:08 2008 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=unavailable 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 mBTJL8NE025650 for ; Mon, 29 Dec 2008 13:21:08 -0600 X-ASG-Debug-ID: 1230578467-7eb102640000-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 DC6DC1794045 for ; Mon, 29 Dec 2008 11:21:07 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id F3VgQF0YWo4JUxkH for ; Mon, 29 Dec 2008 11:21:07 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHNfE-00041i-J4; Mon, 29 Dec 2008 19:20:32 +0000 Date: Mon, 29 Dec 2008 14:20:32 -0500 From: Christoph Hellwig To: Russell Cattelan Cc: Martin Steigerwald , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 Subject: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 Message-ID: <20081229192032.GA30477@infradead.org> References: <200812291920.34123.Martin@Lichtvoll.de> <4959205E.4000000@thebarn.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4959205E.4000000@thebarn.com> 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: 1230578467 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8810/Mon Dec 29 10:40:50 2008 on oss.sgi.com X-Virus-Status: Clean On Mon, Dec 29, 2008 at 01:09:18PM -0600, Russell Cattelan wrote: > I would have to look for sure when Dave's rewrite of the inode cache/fs > sync code went in but > it could be around the time of 2.6.27. That's all in the 2.6.29 queue. > The other thing that is odd is why files full of nulls still? xfs > changed its behavior to write out size changes > at flush time and not before, previously size changes would be synced > out prior to the data being synced > out, thus creating "null files" or rather a file with size but no extent > data. > > The "null files" problem should be an "empty files" problem at worst > now, so it is really curious that you > are seeing null files still. One good way would be to mount the partition with -o sync. That way you get data integrity for all files at the epense of really sucky performance.. From Martin@lichtvoll.de Mon Dec 29 13:48:33 2008 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=unavailable 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 mBTJmWfA020598 for ; Mon, 29 Dec 2008 13:48:33 -0600 X-ASG-Debug-ID: 1230580111-7eb503100000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.lichtvoll.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0B0051794134 for ; Mon, 29 Dec 2008 11:48:31 -0800 (PST) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id ozhjMxaZPrEhFO0Y for ; Mon, 29 Dec 2008 11:48:31 -0800 (PST) Received: from shambhala.lichtvoll.local (DSL01.83.171.154.140.ip-pool.NEFkom.net [83.171.154.140]) by mail.lichtvoll.de (Postfix) with ESMTPSA id AA5795AE4F for ; Mon, 29 Dec 2008 20:48:30 +0100 (CET) From: Martin Steigerwald To: xfs@oss.sgi.com X-ASG-Orig-Subj: safe writing in applications (was: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28) Subject: safe writing in applications (was: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28) Date: Mon, 29 Dec 2008 20:48:40 +0100 User-Agent: KMail/1.9.9 References: <200812291920.34123.Martin@Lichtvoll.de> (sfid-20081229_192707_589385_FA1D7E0C) In-Reply-To: <200812291920.34123.Martin@Lichtvoll.de> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200812292048.41193.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1230580112 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=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13924 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e X-Virus-Scanned: ClamAV 0.91.2/8810/Mon Dec 29 10:40:50 2008 on oss.sgi.com X-Virus-Status: Clean Am Montag 29 Dezember 2008 schrieb Martin Steigerwald: > Hi! > Remember > > http://oss.sgi.com/pipermail/xfs/2008-November/037399.html > > ? [... about truncated KDE configuration files ...] > I cannot remember having seen this kind of behavior anywhere between > 2.6.17.7 and 2.6.26! And I had sudden interruptions of write activity > from time to time. > > I can't prove anything right now. I possibly could if I dare to test > this again with 2.6.26! But from my experiences this never was so > massive. Prior to the null file fixes a file or two might have been > corrupted and that not all the times. Thats to be expected if thats the > file that where written out at the time. But now it seems that almost > every file that is opened for writing or not even just for writing is > truncated seriously at sudden interruption of write activity. Whereas > before it appeared that usually either the change was not made or it > was made - at least for small files. Now the file is truncated, no > holes, just lots less bytes than before. Ok, I had to test this. So I made a backup of my current KDE configuration to an external drive and tested with 2.6.25.10 and 2.6.26.5! It happens there too. So its nothing new what I have observed here. Even the case of massively truncated files when trying directly after KDE login. Why all those applications appear to write out their configurations files when just having been started is a bit beyond me, but well that seems to be the case. So it seems with pre 2.6.27 and 2.6.28 sudden power interruptions I had *lots of luck*. Or there is a very subtile difference in the likelyhood of truncated files happening. I had the impression during my todays test that at least with 2.6.25.10 and 2.6.26.5 truncated files were a little less likely, but I have no means of statistics. And I do not yet have a comparison with ext3/ext4 either. So I jumped out of the window with my conclusions too early, or I need to test even earlier kernels. I hold back an earlier mail about this already, but this time I thought I'd write an email. Sorry for the noise. It might be wise however to file enhancement requests for the KDE applications where I observed this behavior if safer writing within the applications is possible. Any hints on what application developers should keep in mind when writing out config files? Ciao, -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From SRS0+88d631ebfcf98fc0e426+1954+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 29 13:54:38 2008 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_52 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 mBTJsbZk021212 for ; Mon, 29 Dec 2008 13:54:38 -0600 X-ASG-Debug-ID: 1230580477-7eb0033b0000-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 B4BC81793F4B for ; Mon, 29 Dec 2008 11:54:37 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id n6HpPPcLCCqpMm21 for ; Mon, 29 Dec 2008 11:54:37 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHOBi-0001QJ-SX; Mon, 29 Dec 2008 19:54:06 +0000 Date: Mon, 29 Dec 2008 14:54:06 -0500 From: Christoph Hellwig To: Martin Steigerwald Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: safe writing in applications (was: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28) Subject: Re: safe writing in applications (was: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28) Message-ID: <20081229195406.GA7613@infradead.org> References: <200812291920.34123.Martin@Lichtvoll.de> <200812292048.41193.Martin@lichtvoll.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200812292048.41193.Martin@lichtvoll.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: 1230580477 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8810/Mon Dec 29 10:40:50 2008 on oss.sgi.com X-Virus-Status: Clean On Mon, Dec 29, 2008 at 08:48:40PM +0100, Martin Steigerwald wrote: > It might be wise however to file enhancement requests for the KDE > applications where I observed this behavior if safer writing within the > applications is possible. Any hints on what application developers should > keep in mind when writing out config files? Preferably use O_SYNC. Never truncate and then rewrite, in doubt write a new file and rename it to the right place after it was fsync'ed (the mailserver trick) in the meantime a nice way to hack around this is do chattr +S for all these files which forces synchronous writes. Doesn't help if they actually use the rename trick above sometimes. From Martin@lichtvoll.de Mon Dec 29 14:00:30 2008 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=unavailable 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 mBTK0U87027911 for ; Mon, 29 Dec 2008 14:00:30 -0600 X-ASG-Debug-ID: 1230580828-5ab500d80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.lichtvoll.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B93D24FB7E for ; Mon, 29 Dec 2008 12:00:28 -0800 (PST) Received: from mail.lichtvoll.de (mondschein.lichtvoll.de [194.150.191.11]) by cuda.sgi.com with ESMTP id XBFBeyvsii1ZB9Z3 for ; Mon, 29 Dec 2008 12:00:28 -0800 (PST) Received: from shambhala.lichtvoll.local (DSL01.83.171.154.140.ip-pool.NEFkom.net [83.171.154.140]) by mail.lichtvoll.de (Postfix) with ESMTPSA id DD9BE5AE4F for ; Mon, 29 Dec 2008 20:59:56 +0100 (CET) From: Martin Steigerwald To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: massively truncated files with XFS with sudden power loss on =?iso-8859-1?q?2=2E6=2E27=09and?= 2.6.28 Subject: Re: massively truncated files with XFS with sudden power loss on =?iso-8859-1?q?2=2E6=2E27=09and?= 2.6.28 Date: Mon, 29 Dec 2008 21:00:07 +0100 User-Agent: KMail/1.9.9 References: <200812291920.34123.Martin@Lichtvoll.de> <49592045.3050103@sandeen.net> (sfid-20081229_202235_177237_AC0CC0EF) In-Reply-To: <49592045.3050103@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200812292100.07339.Martin@lichtvoll.de> X-Barracuda-Connect: mondschein.lichtvoll.de[194.150.191.11] X-Barracuda-Start-Time: 1230580829 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=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13926 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e X-Virus-Scanned: ClamAV 0.91.2/8810/Mon Dec 29 10:40:50 2008 on oss.sgi.com X-Virus-Status: Clean Am Montag 29 Dezember 2008 schrieb Eric Sandeen: > Martin Steigerwald wrote: > > Hi! > > > > Remember > > > > http://oss.sgi.com/pipermail/xfs/2008-November/037399.html > > > > ? > > > > I thought it was resolved and with later TuxOnIce and sync all is > > better for sure. This all was with barriers and write cache enabled. > > > > But I had a hard crash this time while shutting down the system > > regularily and the KDE addressbook, KDE settings, additional sidebar > > all was lost due to truncated files. This was without barriers but > > also without write cache. > > Some actual data here would be helpful; when you say "truncated files" > what do you mean; are they 0 length? Or shorter than they should be? > How much shorter, and how do you know what they "should be?" They are shortened by different amounts of bytes. Sometimes from 130 KB to 60 bytes. Sometimes a file is 0 bytes. http://oss.sgi.com/pipermail/xfs/2008-November/037399.html > It is certainly at least possible that whatever is writing the KDE > files is not following good practices for data integrity... I can't say > that for sure, but apps have responsibility here, too. :) Yeah. I am willing to file enhancement requests were applicable. > > Curious about the safety of my data I tried to simulate the thing. I > > shouldn't have done that with my productive data but here are the > > results: > > > > I just switched the machine off after having made a backup of my KDE > > configuration and after closing my usual apps. Then I waited 30-40 > > seconds. First time was fine, second time KDE colors were lost again. > > Third time I didn't wait that long. Side bar was lost. Fourth time I > > pressed power off after *starting* KDE. Lots of stuff was lost, > > including: > > > > - colors > > - sidebar > > - kpanel settings > > - kgpg settings > > - one kwallet digital wallet with passwords and stuff, a complete > > file of 130 KB was just 60 bytes anymore > > Ah, data! So it went from 130KB to 60 bytes? Were the first 60 bytes > valid data, or could you tell. I do not have that one at hand anymore - I was quite panicking and forget to make a copy of the broken ~/.kde directory before fixing it. But see http://oss.sgi.com/pipermail/xfs/2008-November/037399.html for some examples. The contents upto to the truncation point were fine as far as I looked back then. No holes either. Just less bytes than the once of the backup that I made just before doing my tests of today. > > I have seen this on a 2.6.27.7, 2.6.28 with tuxonice patches. > > Seems it'd be worth testing w/o tuxonice, too. I don't know what all > is in there, honesetly. Hmmm... I did not test suspend/resume cycled. I just bootet up once and shut the system down by pressing the power button long enough. > > syncing > > before a crash occurs seems to fix the issue. Did something change > > with how aggressively the kernel writes data out? > > > > I think it was something along > > > > shambhala:/proc/sys/vm> cat dirty_expire_centisecs > > 2999 > > > > shambhala:/proc/sys/fs/xfs> cat xfsbufd_centisecs xfssyncd_centisecs > > 100 > > 3000 > > > > in all recent kernels! > > I don't think those have changed any time recently. I think to lower them for now, until I got to the cause of that random lockups that *appear* to be related to switching between X11 and console and are offtopic for that list. > > I expect to loose the changes for a dirtied file thats in the page > > cache. But I do not expect to loose the current (old) file on disk in > > that case, unless the crash happens when its actually written out at > > that time. > > This will depend on what the application is doing, though. Any hints or link on what it *should* be doing? > > And > > that appears to be highly unlikely expecially at the time just after > > KDE started up when I did not use any application yet. I would be > > surprised when the first things applications would be doing was to > > write out what they just read in. And even then I would be surprised > > when XFS did write to all the files at once. So I just don't get what > > I have seen here and I think I see a regression. I am willing to look > > deeper when I found how to do so safely enough. > > I take it that you see this even for files which you have not > (intentionally) modified? Yes. But then the try it directly after starting KDE case isn't the best one. Maybe KDE applications just write out lots of files when KDE is started. Hmmm, I maybe could have a glimpse at that with iotop. > > If there an xfsqa test that simulates sudden interruption of write > > activity? > > There are tests which interrupt IO with the XFS_IOC_GOINGDOWN ioctl, > which simulates a filesystem shutdown, which is not exactly the same as > a crash or a power loss, though. > > > Actually I am considering to switch to ext3/4. Maybe the people that > > say don't use XFS on commodity hardware really have a point. > > No. :) No what? No, they don't have a point? > > But then it did > > work very well from 2.6.17.7 to 2.6.26, so I think what I face here > > is a behavorial regression. It might be a performance improvement at > > the same time, but for laptops and commodity workstations this is too > > risky IMHO. Is there interest in digging this? I can accept when you > > tell my not to use XFS on my laptop. But actually I think something > > changed between 2.6.26 andf 2.6.27 and maybe thats worth looking at. > > If you know what is writing to the files that you often see truncated, > an strace of that pid might be interesting, to see what sorts of IO it > is doing. > > ls -l /proc/$PID/fd/* | grep $FILE > > might give a clue if anyone has these files open, then strace that pid > to see if there is any interesting activity on them? I could try that for the file kdeglobals. It seems to be written quite recently and in there are the desktop colors. Its basically like to get truncated even when the notebook has idled for more than 30 seconds. > Otherwise, if you're highly motivated, and have a test box, do a little > regression testing and see when you think this behavior changed. But > I'd start w/ pristine upstream kernels. I think I will look at the contents of the tuxonice patch. I am not sure whether it patches anything in block/ oder fs/. More tommorrow. See also my safe writing in applications mail, I tested with 2.6.26 and 2.6.25 and they might only have been subtile changes if at all. Ciao, -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From cattelan@thebarn.com Mon Dec 29 14:33:53 2008 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=unavailable 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 mBTKXr65031776 for ; Mon, 29 Dec 2008 14:33:53 -0600 X-ASG-Debug-ID: 1230582829-5ab001560000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from slurp.thebarn.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 46BC14FCC1 for ; Mon, 29 Dec 2008 12:33:52 -0800 (PST) Received: from slurp.thebarn.com (cattelan-host202.dsl.visi.com [208.42.117.202]) by cuda.sgi.com with ESMTP id vwd1xu604fLLjHlQ for ; Mon, 29 Dec 2008 12:33:52 -0800 (PST) Received: from funky.thebarn.com (slurp.thebarn.com [208.42.117.201]) (authenticated bits=0) by slurp.thebarn.com (8.14.0/8.14.0) with ESMTP id mBTK9XUx078278; Mon, 29 Dec 2008 14:09:36 -0600 (CST) (envelope-from cattelan@xfs.org) Message-ID: <49592E7D.4050208@xfs.org> Date: Mon, 29 Dec 2008 14:09:33 -0600 From: Russell Cattelan User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070728) MIME-Version: 1.0 To: Chris Wedgwood CC: Russell Cattelan , Martin Steigerwald , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 Subject: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 References: <200812291920.34123.Martin@Lichtvoll.de> <4959205E.4000000@thebarn.com> <20081229192957.GC18092@puku.stupidest.org> In-Reply-To: <20081229192957.GC18092@puku.stupidest.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/8811/Mon Dec 29 14:02:38 2008 on oss.sgi.com X-Virus-Scanned: ClamAV 0.91.2/8811/Mon Dec 29 14:02:38 2008 on slurp.thebarn.com X-Virus-Status: Clean X-Barracuda-Connect: cattelan-host202.dsl.visi.com[208.42.117.202] X-Barracuda-Start-Time: 1230582833 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=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13928 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e Chris Wedgwood wrote: > On Mon, Dec 29, 2008 at 01:09:18PM -0600, Russell Cattelan wrote: > > >> The question that I have is regards to kde apps. >> > > i just did a quick strace of something, i see it do: > > > open newfile > write data > close file > rename newfile over oldfile > > no fsync before close... > Hmm that is worse than truncate to 0, since now we have a new file vs one that has been truncated. But really same net result. Still why is the file size making it to disk before the data and more importantly the extent transaction to the log? that should have been fixed. > > this will bite xfs more than ext3 w/ ordered mode > Delayed allocation is a factor (and this will be true of any fs supporting delayed allocation) holding of data flushes helps reduce fragmentation by allowing larger segments to be flushed out, but it increases the time data is held in cache and thus create a larger window for data loss. -Russell From jengelh@medozas.de Mon Dec 29 14:55:09 2008 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_44 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 mBTKt8bM002926 for ; Mon, 29 Dec 2008 14:55:09 -0600 X-ASG-Debug-ID: 1230584107-2a81000b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sovereign.computergmbh.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 29196500EA for ; Mon, 29 Dec 2008 12:55:07 -0800 (PST) Received: from sovereign.computergmbh.de (sovereign.computergmbh.de [85.214.69.204]) by cuda.sgi.com with ESMTP id spZXjncUtE3walT5 for ; Mon, 29 Dec 2008 12:55:07 -0800 (PST) Received: by sovereign.computergmbh.de (Postfix, from userid 25121) id 8BE961803855E; Mon, 29 Dec 2008 21:55:06 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by sovereign.computergmbh.de (Postfix) with ESMTP id 8B2B01C1A2435 for ; Mon, 29 Dec 2008 21:55:06 +0100 (CET) Date: Mon, 29 Dec 2008 21:55:06 +0100 (CET) From: Jan Engelhardt Sender: jengelh@sovereign.computergmbh.de To: xfs@oss.sgi.com X-ASG-Orig-Subj: A rescue tool: xfs_irecover Subject: A rescue tool: xfs_irecover Message-ID: User-Agent: Alpine 2.00 (LSU 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Connect: sovereign.computergmbh.de[85.214.69.204] X-Barracuda-Start-Time: 1230584108 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.13930 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8811/Mon Dec 29 14:02:38 2008 on oss.sgi.com X-Virus-Status: Clean Something must have went awry at a friend; anyway, xfs_check returned the presence of problems, and xfs_repair was ran to rectify these. The end result was that there were a total of ~500 inodes left according to the superblock. While people can go debate on whose fault it was (cosmic radiation, take your pick), I set out on getting the data back. XFS's data layout makes it very easy to recover (inode magic bytes is a key component--most inferior filesystems do not seem to have such). What I did is scan and extract all inodes, giving me back about ~11000 inodes with useful data (some NUL bytes here and there, but still, rather complete compared to a lousy 500 inodes). Here, I want to share this little tool -- called it xfs_irecover. Currently housed inside a tool collection of mine; xfs_irecover just got imported into it. http://dev.medozas.de/gitweb.cgi?p=hxtools;a=commit;h=8b75265ce475e1f696801285c37e86c933e0a086 Apologies for not having bothered using libxfs, but I needed to get something working fast. This also explains all the hacks involved, like reading the inode from the block device itself (in the 'ir_extract' function) and only calling out to xfs_db for grabbing the extent list (I was not sure whether the extent list always has to fit within the inode). Furthermore, it makes conservative use of forking, only ever starts one instance of xfs_db [doing it once for every node using `xfs_db -c inode 0 -c print` is prohibitively expensive at 250 GB with inode_size=256] and (ab)uses its command-line interface in as far that xfs_db even needs a patch to set stdin and stdout to non-buffering mode. But that makes it reasonably fast. The disk was, as mentioned, a ~250GB with an inode size of 256, and that makes for a lot of potential inodes; processing the ~11000 took about 20-30 minutes. Various options control extraction; as xfs_irecover ignores any directories and/or free/in-use bitmaps, even the "legitimately deleted" (deleted before the desaster) inodes can be recovered, it may run over scrapped data that can selectively be ignored. Inodes with ridiculously large "core.size" values or empty extent lists are skipped, for others, core.size is ignored if the number of bytes that the extent list spans is just 'slightly' larger (core.size < S, but a hexdump shows there's more than S bytes of "intereting" data, for a chosen S, something like that). There probably is room for improvement, like analyzing S_ISDIR inodes and looking at the filenames it contains, to help in giving recovered inodes some name. From cattelan@thebarn.com Mon Dec 29 15:25:22 2008 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 mBTLPMr0010073 for ; Mon, 29 Dec 2008 15:25:22 -0600 X-ASG-Debug-ID: 1230585920-367e003a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from slurp.thebarn.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id BB5AB5033D for ; Mon, 29 Dec 2008 13:25:21 -0800 (PST) Received: from slurp.thebarn.com (cattelan-host202.dsl.visi.com [208.42.117.202]) by cuda.sgi.com with ESMTP id VHOafrKF4waVE40N for ; Mon, 29 Dec 2008 13:25:21 -0800 (PST) Received: from funky.thebarn.com (slurp.thebarn.com [208.42.117.201]) (authenticated bits=0) by slurp.thebarn.com (8.14.0/8.14.0) with ESMTP id mBTLPBhF080053; Mon, 29 Dec 2008 15:25:12 -0600 (CST) (envelope-from cattelan@xfs.org) Message-ID: <49594037.9070201@xfs.org> Date: Mon, 29 Dec 2008 15:25:11 -0600 From: Russell Cattelan User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070728) MIME-Version: 1.0 To: Chris Wedgwood CC: Russell Cattelan , Martin Steigerwald , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 Subject: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 References: <200812291920.34123.Martin@Lichtvoll.de> <4959205E.4000000@thebarn.com> <20081229192957.GC18092@puku.stupidest.org> <49592E7D.4050208@xfs.org> <20081229201741.GA20024@puku.stupidest.org> In-Reply-To: <20081229201741.GA20024@puku.stupidest.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/8811/Mon Dec 29 14:02:38 2008 on oss.sgi.com X-Virus-Scanned: ClamAV 0.91.2/8811/Mon Dec 29 14:02:38 2008 on slurp.thebarn.com X-Virus-Status: Clean X-Barracuda-Connect: cattelan-host202.dsl.visi.com[208.42.117.202] X-Barracuda-Start-Time: 1230585921 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=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13932 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e Chris Wedgwood wrote: > On Mon, Dec 29, 2008 at 02:09:33PM -0600, Russell Cattelan wrote: > > >> Still why is the file size making it to disk before the data and >> more importantly the extent transaction to the log? >> > > well, as you know, it's logged, the data isn't > yes but the whole deal with null files is no extents for a file size that should have extents. So if the extent creation transaction is logged then it should be safe to update the file size on disk, if not then the file "last flushed" size should be on disk. In this case I would assume 0, since that would be the last valid flush size. > >> that should have been fixed. >> > > the window was shrunk to write out begins on close for existing files > the are opened with truncate (i think nathans did that some time > ago?) > correct but that change/hack has apparently been removed at some point? maybe along with the "last flush size" changes? > new files won't be affected by that change > Correct even if the sync on close if truncate code was there it would not help kde apps apparently. From sandeen@sandeen.net Mon Dec 29 15:56:46 2008 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=unavailable 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 mBTLukl5016404 for ; Mon, 29 Dec 2008 15:56:46 -0600 X-ASG-Debug-ID: 1230587805-269700c90000-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 15F6A1BF7467 for ; Mon, 29 Dec 2008 13:56:45 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 8vKtJFPpN3pn69KR for ; Mon, 29 Dec 2008 13:56:45 -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 3BE70A9C502; Mon, 29 Dec 2008 15:56:45 -0600 (CST) Message-ID: <4959479D.8010801@sandeen.net> Date: Mon, 29 Dec 2008 15:56:45 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Russell Cattelan CC: Chris Wedgwood , Martin Steigerwald , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 Subject: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 References: <200812291920.34123.Martin@Lichtvoll.de> <4959205E.4000000@thebarn.com> <20081229192957.GC18092@puku.stupidest.org> <49592E7D.4050208@xfs.org> In-Reply-To: <49592E7D.4050208@xfs.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: 1230587806 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=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13934 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e X-Virus-Scanned: ClamAV 0.91.2/8811/Mon Dec 29 14:02:38 2008 on oss.sgi.com X-Virus-Status: Clean Russell Cattelan wrote: > Chris Wedgwood wrote: >> this will bite xfs more than ext3 w/ ordered mode >> > Delayed allocation is a factor (and this will be true of any fs > supporting delayed allocation) > holding of data flushes helps reduce fragmentation by allowing larger > segments to be flushed out, > but it increases the time data is held in cache and thus create a larger > window for data loss. That's not quite accurate AFAIK; yes, xfs has delayed allocation, but it pushes data to disk on the same schedule (by default) as any other filesystem; when pdflush goes off (30s) or under memory pressure. The only difference is that xfs (or any delalloc fs) allocates at flush time not at write time. But this does not imply that xfs is holding off flushes for longer due to delayed allocation; I don't want it to sound like xfs is putting data integrity at risk due to delalloc, because it's not ... -Eric From SRS0+88d631ebfcf98fc0e426+1954+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 29 16:08:16 2008 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=unavailable 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 mBTM8Grp017601 for ; Mon, 29 Dec 2008 16:08:16 -0600 X-ASG-Debug-ID: 1230588495-365300e60000-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 1C6905004C for ; Mon, 29 Dec 2008 14:08:15 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 5BX5rjv2GkQxyLvL for ; Mon, 29 Dec 2008 14:08:15 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHQH3-0006c9-3N; Mon, 29 Dec 2008 22:07:45 +0000 Date: Mon, 29 Dec 2008 17:07:45 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: John Stanley X-ASG-Orig-Subj: [PATCH, RFC] directory offset overflows in 2.6.28 Subject: [PATCH, RFC] directory offset overflows in 2.6.28 Message-ID: <20081229220745.GA12966@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: 1230588496 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8811/Mon Dec 29 14:02:38 2008 on oss.sgi.com X-Virus-Status: Clean John Stanley reported EOVERFLOW errors in readdir from his self-build glibc. I traced this down to glibc enabling d_off overflow checks in one of the about five million different getdents implementations. In 2.6.28 Dave Woodhouse moved our readdir double buffering required for NFS4 readdirplus into nfsd and at that point we lost the capping of the directory offsets to 32 bit signed values. Johns glibc used getdents64 to even implement readdir for normal 32 bit offset dirents, and failed with EOVERFLOW only if this happens on the first dirent in a getdents call. I managed to come up with a testcase that uses raw getdents and does the EOVERFLOW check manually. We always hit it with our last entry due to the special end of directory marker. The patch below is a dumb version of just putting back the masking, to make sure we have the same behavior as in 2.6.27 and earlier. I think we should at least hide it in a macro that is well-commented, but I suspect we also need to make sure that we never ever get bigger offsets in directories in some way. Index: xfs/fs/xfs/xfs_dir2_block.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_block.c 2008-12-29 21:25:29.680613664 +0100 +++ xfs/fs/xfs/xfs_dir2_block.c 2008-12-29 21:29:57.341627581 +0100 @@ -517,9 +517,9 @@ xfs_dir2_block_getdents( /* * If it didn't fit, set the final offset to here & return. */ - if (filldir(dirent, dep->name, dep->namelen, cook, + if (filldir(dirent, dep->name, dep->namelen, cook & 0x7fffffff, ino, DT_UNKNOWN)) { - *offset = cook; + *offset = cook & 0x7fffffff; xfs_da_brelse(NULL, bp); return 0; } @@ -529,7 +529,8 @@ xfs_dir2_block_getdents( * Reached the end of the block. * Set the offset to a non-existent block 1 and return. */ - *offset = xfs_dir2_db_off_to_dataptr(mp, mp->m_dirdatablk + 1, 0); + *offset = xfs_dir2_db_off_to_dataptr(mp, mp->m_dirdatablk + 1, 0) & + 0x7fffffff; xfs_da_brelse(NULL, bp); return 0; } Index: xfs/fs/xfs/xfs_dir2_leaf.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_leaf.c 2008-12-29 21:25:13.899613482 +0100 +++ xfs/fs/xfs/xfs_dir2_leaf.c 2008-12-29 21:29:36.125616996 +0100 @@ -1092,7 +1092,7 @@ xfs_dir2_leaf_getdents( * Won't fit. Return to caller. */ if (filldir(dirent, dep->name, dep->namelen, - xfs_dir2_byte_to_dataptr(mp, curoff), + xfs_dir2_byte_to_dataptr(mp, curoff) & 0x7fffffff, ino, DT_UNKNOWN)) break; @@ -1108,9 +1108,9 @@ xfs_dir2_leaf_getdents( * All done. Set output offset value to current offset. */ if (curoff > xfs_dir2_dataptr_to_byte(mp, XFS_DIR2_MAX_DATAPTR)) - *offset = XFS_DIR2_MAX_DATAPTR; + *offset = XFS_DIR2_MAX_DATAPTR & 0x7fffffff; else - *offset = xfs_dir2_byte_to_dataptr(mp, curoff); + *offset = xfs_dir2_byte_to_dataptr(mp, curoff) & 0x7fffffff; kmem_free(map); if (bp) xfs_da_brelse(NULL, bp); Index: xfs/fs/xfs/xfs_dir2_sf.c =================================================================== --- xfs.orig/fs/xfs/xfs_dir2_sf.c 2008-12-29 21:23:55.174613820 +0100 +++ xfs/fs/xfs/xfs_dir2_sf.c 2008-12-29 21:29:00.721617384 +0100 @@ -752,8 +752,8 @@ xfs_dir2_sf_getdents( #if XFS_BIG_INUMS ino += mp->m_inoadd; #endif - if (filldir(dirent, ".", 1, dot_offset, ino, DT_DIR)) { - *offset = dot_offset; + if (filldir(dirent, ".", 1, dot_offset & 0x7fffffff, ino, DT_DIR)) { + *offset = dot_offset & 0x7fffffff; return 0; } } @@ -766,8 +766,8 @@ xfs_dir2_sf_getdents( #if XFS_BIG_INUMS ino += mp->m_inoadd; #endif - if (filldir(dirent, "..", 2, dotdot_offset, ino, DT_DIR)) { - *offset = dotdot_offset; + if (filldir(dirent, "..", 2, dotdot_offset & 0x7fffffff, ino, DT_DIR)) { + *offset = dotdot_offset & 0x7fffffff; return 0; } } @@ -791,14 +791,15 @@ xfs_dir2_sf_getdents( #endif if (filldir(dirent, sfep->name, sfep->namelen, - off, ino, DT_UNKNOWN)) { - *offset = off; + off & 0x7fffffff, ino, DT_UNKNOWN)) { + *offset = off & 0x7fffffff; return 0; } sfep = xfs_dir2_sf_nextentry(sfp, sfep); } - *offset = xfs_dir2_db_off_to_dataptr(mp, mp->m_dirdatablk + 1, 0); + *offset = xfs_dir2_db_off_to_dataptr(mp, mp->m_dirdatablk + 1, 0) & + 0x7fffffff; return 0; } From SRS0+88d631ebfcf98fc0e426+1954+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 29 16:18:44 2008 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=unavailable 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 mBTMIhQ1009486 for ; Mon, 29 Dec 2008 16:18:43 -0600 X-ASG-Debug-ID: 1230589123-365900de0000-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 BCF4950716 for ; Mon, 29 Dec 2008 14:18:43 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id rLhhPMi3oZWd1t9G for ; Mon, 29 Dec 2008 14:18:43 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHQRf-0002eB-Du for xfs@oss.sgi.com; Mon, 29 Dec 2008 22:18:43 +0000 Message-Id: <20081229221843.283329000@bombadil.infradead.org> References: <20081229221802.268877000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 29 Dec 2008 17:18:03 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 1/3] add a separate lock class for the per-mount list of dquots Subject: [patch 1/3] add a separate lock class for the per-mount list of dquots Content-Disposition: inline; filename=xfs-fix-xfs_qm_dqusage_adjust-lockdep-warning 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: 1230589123 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8811/Mon Dec 29 14:02:38 2008 on oss.sgi.com X-Virus-Status: Clean We can have both a a quota hash chain and the per-mount list locked at the same time. But given that both use the same struct dqhash as list head we have to tell lockdep that they are different lock classes. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/quota/xfs_qm.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_qm.c 2008-12-29 01:27:21.000000000 +0000 +++ xfs/fs/xfs/quota/xfs_qm.c 2008-12-29 01:34:48.000000000 +0000 @@ -1068,6 +1068,13 @@ return 0; } +/* + * The hash chains and the mplist use the same xfs_dqhash structure as + * their list head, but we can take the mplist qh_lock and one of the + * hash qh_locks at the same time without any problem as they aren't + * related. + */ +static struct lock_class_key xfs_quota_mplist_class; /* * This initializes all the quota information that's kept in the @@ -1103,6 +1110,8 @@ } xfs_qm_list_init(&qinf->qi_dqlist, "mpdqlist", 0); + lockdep_set_class(&qinf->qi_dqlist.qh_lock, &xfs_quota_mplist_class); + qinf->qi_dqreclaims = 0; /* mutex used to serialize quotaoffs */ -- From SRS0+88d631ebfcf98fc0e426+1954+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 29 16:18:44 2008 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=unavailable 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 mBTMIhcp009485 for ; Mon, 29 Dec 2008 16:18:44 -0600 X-ASG-Debug-ID: 1230589123-1d0301460000-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 7CE0817945B1 for ; Mon, 29 Dec 2008 14:18:43 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id nrSR4wau9TCdKY3m for ; Mon, 29 Dec 2008 14:18:43 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHQRf-0002df-74 for xfs@oss.sgi.com; Mon, 29 Dec 2008 22:18:43 +0000 Message-Id: <20081229221802.268877000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 29 Dec 2008 17:18:02 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 0/3] quota lockdep fixes Subject: [patch 0/3] quota lockdep fixes 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: 1230589123 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8811/Mon Dec 29 14:02:38 2008 on oss.sgi.com X-Virus-Status: Clean This series fixes various lockdep warnings in the quota code. Given that it doesn't affect code run in non-debug builds but shuts up the latter I think it's a 2.6.29 candidate. -- From SRS0+88d631ebfcf98fc0e426+1954+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 29 16:18:44 2008 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 mBTMIiG1009496 for ; Mon, 29 Dec 2008 16:18:44 -0600 X-ASG-Debug-ID: 1230589123-365601040000-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 0CF545072E for ; Mon, 29 Dec 2008 14:18:43 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id KVm0WybmbwtRE3cu for ; Mon, 29 Dec 2008 14:18:43 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHQRf-0002f9-NW for xfs@oss.sgi.com; Mon, 29 Dec 2008 22:18:43 +0000 Message-Id: <20081229221843.642347000@bombadil.infradead.org> References: <20081229221802.268877000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 29 Dec 2008 17:18:05 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 3/3] add a lock class for group/project dquots Subject: [patch 3/3] add a lock class for group/project dquots Content-Disposition: inline; filename=xfs-add-quota-classes 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: 1230589124 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8811/Mon Dec 29 14:02:38 2008 on oss.sgi.com X-Virus-Status: Clean We can have both a user and a group/project dquot locked at the same time, as long as the user dquot is locked first. Tell lockdep about that fact by making the group/project dquots a different lock class. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/quota/xfs_dquot.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_dquot.c 2008-12-29 12:24:33.018737674 +0100 +++ xfs/fs/xfs/quota/xfs_dquot.c 2008-12-29 12:29:35.132612895 +0100 @@ -73,6 +73,8 @@ int xfs_dqreq_num; int xfs_dqerror_mod = 33; #endif +static struct lock_class_key xfs_dquot_other_class; + /* * Allocate and initialize a dquot. We don't always allocate fresh memory; * we try to reclaim a free dquot if the number of incore dquots are above @@ -139,7 +141,15 @@ xfs_qm_dqinit( ASSERT(dqp->q_trace); xfs_dqtrace_entry(dqp, "DQRECLAIMED_INIT"); #endif - } + } + + /* + * In either case we need to make sure group quotas have a different + * lock class than user quotas, to make sure lockdep knows we can + * locks of one of each at the same time. + */ + if (!(type & XFS_DQ_USER)) + lockdep_set_class(&dqp->q_qlock, &xfs_dquot_other_class); /* * log item gets initialized later -- From sandeen@sandeen.net Mon Dec 29 16:19:06 2008 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 mBTMJ660009564 for ; Mon, 29 Dec 2008 16:19:06 -0600 X-ASG-Debug-ID: 1230589144-269200ed0000-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 728E017945B5 for ; Mon, 29 Dec 2008 14:19:04 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id z2Aat725u8vjSPwP for ; Mon, 29 Dec 2008 14:19:04 -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 68BA1A9FEA4; Mon, 29 Dec 2008 16:19:04 -0600 (CST) Message-ID: <49594CD9.3010402@sandeen.net> Date: Mon, 29 Dec 2008 16:19:05 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: xfs-oss CC: Mike Frysinger X-ASG-Orig-Subj: [PATCH] xfs-cmds: fix parallel installs in include/ dirs Subject: [PATCH] xfs-cmds: fix parallel installs in include/ dirs 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: 1230589145 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.13934 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8811/Mon Dec 29 14:02:38 2008 on oss.sgi.com X-Virus-Status: Clean This is for http://oss.sgi.com/bugzilla/show_bug.cgi?id=759 "fix parallel issue with include/ symlinks" Doing something like "make -j2 install install-dev" would lead to a race of removing & creating symlinks in include/ Thanks to Mike for reporting & suggesting the fix. Reported-by: Mike Frysinger Signed-off-by: Eric Sandeen --- Index: xfs-cmds/acl/include/Makefile =================================================================== --- xfs-cmds.orig/acl/include/Makefile +++ xfs-cmds/acl/include/Makefile @@ -9,10 +9,10 @@ HFILES = acl.h libacl.h acl_ea.h misc.h LSRCFILES = builddefs.in buildmacros buildrules config.h.in LDIRT = sys acl -default: - rm -f sys acl - $(LN_S) . sys - $(LN_S) . acl +sys acl: + $(LN_S) . $@ + +default: sys acl include $(BUILDRULES) @@ -22,4 +22,5 @@ install-dev: default $(INSTALL) -m 644 acl.h $(PKG_INC_DIR)/sys/acl.h $(INSTALL) -m 755 -d $(PKG_INC_DIR)/acl $(INSTALL) -m 644 libacl.h $(PKG_INC_DIR)/acl/libacl.h + install install-lib: Index: xfs-cmds/attr/include/Makefile =================================================================== --- xfs-cmds.orig/attr/include/Makefile +++ xfs-cmds/attr/include/Makefile @@ -11,13 +11,15 @@ HFILES = $(INST_HFILES) misc.h walk_tree LSRCFILES = builddefs.in buildmacros buildrules config.h.in LDIRT = $(INCDIR) -default: - rm -f $(INCDIR) - $(LN_S) . $(INCDIR) +$(INCDIR): + $(LN_S) . $@ + +default: $(INCDIR) include $(BUILDRULES) install-dev: default $(INSTALL) -m 755 -d $(PKG_INC_DIR) $(INSTALL) -m 644 $(INST_HFILES) $(PKG_INC_DIR) + install install-lib: Index: xfs-cmds/dmapi/include/Makefile =================================================================== --- xfs-cmds.orig/dmapi/include/Makefile +++ xfs-cmds/dmapi/include/Makefile @@ -9,9 +9,10 @@ HFILES = dmapi.h LSRCFILES = builddefs.in buildmacros buildrules dmapi_kern.h LDIRT = xfs -default install : - rm -f xfs - $(LN_S) . xfs +xfs: + $(LN_S) . $@ + +default install: xfs include $(BUILDRULES) Index: xfs-cmds/nfs4acl/include/Makefile =================================================================== --- xfs-cmds.orig/nfs4acl/include/Makefile +++ xfs-cmds/nfs4acl/include/Makefile @@ -9,9 +9,10 @@ HFILES = nfs4acl.h nfs4acl-internal.h nf LSRCFILES = builddefs.in buildmacros buildrules config.h.in LDIRT = sys -default: - rm -f sys - $(LN_S) . sys +sys: + $(LN_S) . $@ + +default: sys include $(BUILDRULES) @@ -19,4 +20,5 @@ install-dev: default $(INSTALL) -m 755 -d $(PKG_INC_DIR) $(INSTALL) -m 755 -d $(PKG_INC_DIR)/sys $(INSTALL) -m 644 nfs4acl.h $(PKG_INC_DIR)/sys/nfs4acl.h + install install-lib: Index: xfs-cmds/xfsprogs/include/Makefile =================================================================== --- xfs-cmds.orig/xfsprogs/include/Makefile +++ xfs-cmds/xfsprogs/include/Makefile @@ -40,10 +40,10 @@ LSRCFILES += platform_defs.h.in builddef LSRCFILES += command.h input.h path.h project.h LDIRT = xfs disk -default install : - rm -f xfs disk - $(LN_S) . xfs - $(LN_S) . disk +xfs disk: + $(LN_S) . $@ + +default install: xfs disk include $(BUILDRULES) From SRS0+88d631ebfcf98fc0e426+1954+infradead.org+hch@bombadil.srs.infradead.org Mon Dec 29 16:19:14 2008 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 mBTMJECw009589 for ; Mon, 29 Dec 2008 16:19:14 -0600 X-ASG-Debug-ID: 1230589154-269200ee0000-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 5B0F2A59429 for ; Mon, 29 Dec 2008 14:19:14 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id tVYMHqWXHhNhnHGm for ; Mon, 29 Dec 2008 14:19:14 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHQRf-0002ei-Ii for xfs@oss.sgi.com; Mon, 29 Dec 2008 22:18:43 +0000 Message-Id: <20081229221843.492712000@bombadil.infradead.org> References: <20081229221802.268877000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Mon, 29 Dec 2008 17:18:04 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 2/3] lockdep annotations for xfs_dqlock2 Subject: [patch 2/3] lockdep annotations for xfs_dqlock2 Content-Disposition: inline; filename=xfs-fix-xfs_dqlock2-lockdep-warning 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: 1230589154 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8811/Mon Dec 29 14:02:38 2008 on oss.sgi.com X-Virus-Status: Clean xfs_dqlock2 locks two xfs_dquots, which is fine as it always locks the dquot with the lower id first. Use mutex_lock_nested to tell lockdep about this fact. Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/quota/xfs_dquot.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_dquot.c 2008-12-29 11:28:54.459613573 +0100 +++ xfs/fs/xfs/quota/xfs_dquot.c 2008-12-29 11:29:31.037738842 +0100 @@ -1383,6 +1383,12 @@ xfs_dqunlock_nonotify( mutex_unlock(&(dqp->q_qlock)); } +/* + * Lock two xfs_dquot structures. + * + * To avoid deadlocks we always lock the quota structure with + * the lowerd id first. + */ void xfs_dqlock2( xfs_dquot_t *d1, @@ -1393,10 +1399,10 @@ xfs_dqlock2( if (be32_to_cpu(d1->q_core.d_id) > be32_to_cpu(d2->q_core.d_id)) { xfs_dqlock(d2); - xfs_dqlock(d1); + mutex_lock_nested(&d1->q_qlock, XFS_QLOCK_2ND); } else { xfs_dqlock(d1); - xfs_dqlock(d2); + mutex_lock_nested(&d2->q_qlock, XFS_QLOCK_2ND); } } else { if (d1) { Index: xfs/fs/xfs/quota/xfs_dquot.h =================================================================== --- xfs.orig/fs/xfs/quota/xfs_dquot.h 2008-12-27 17:55:09.920686659 +0100 +++ xfs/fs/xfs/quota/xfs_dquot.h 2008-12-29 11:29:31.043768451 +0100 @@ -97,6 +97,16 @@ typedef struct xfs_dquot { #define dq_hashlist q_lists.dqm_hashlist #define dq_flags q_lists.dqm_flags +/* + * Lock hierachy for q_qlock: + * XFS_QLOCK_NORMAL is the implicit default, + * XFS_QLOCK_DOUBLE is the dquot with the higher id in xfs_dqlock2 + */ +enum { + XFS_QLOCK_NORMAL = 0, + XFS_QLOCK_2ND, +}; + #define XFS_DQHOLD(dqp) ((dqp)->q_nrefs++) #ifdef DEBUG -- From cattelan@thebarn.com Mon Dec 29 17:33:53 2008 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=unavailable 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 mBTNXpC0008303 for ; Mon, 29 Dec 2008 17:33:52 -0600 X-ASG-Debug-ID: 1230593629-2690024f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from slurp.thebarn.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 414F71794832 for ; Mon, 29 Dec 2008 15:33:49 -0800 (PST) Received: from slurp.thebarn.com (cattelan-host202.dsl.visi.com [208.42.117.202]) by cuda.sgi.com with ESMTP id qHTCRGv4ZFrAA0LX for ; Mon, 29 Dec 2008 15:33:49 -0800 (PST) Received: from funky.thebarn.com (slurp.thebarn.com [208.42.117.201]) (authenticated bits=0) by slurp.thebarn.com (8.14.0/8.14.0) with ESMTP id mBTN4OEA081742 for ; Mon, 29 Dec 2008 17:04:25 -0600 (CST) (envelope-from cattelan@thebarn.com) Message-ID: <49595778.6000200@thebarn.com> Date: Mon, 29 Dec 2008 17:04:24 -0600 From: Russell Cattelan User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070728) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: xfs-cmds git tree re-imported Subject: xfs-cmds git tree re-imported Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/8811/Mon Dec 29 14:02:38 2008 on oss.sgi.com X-Virus-Scanned: ClamAV 0.91.2/8811/Mon Dec 29 14:02:38 2008 on slurp.thebarn.com X-Virus-Status: Clean X-Barracuda-Connect: cattelan-host202.dsl.visi.com[208.42.117.202] X-Barracuda-Start-Time: 1230593630 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0027 1.0000 -2.0033 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.90 X-Barracuda-Spam-Status: No, SCORE=-1.90 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA085 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13940 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 BSF_SC0_SA085 Custom Rule SA085 Based on Christoph's work to the xfs-authors list and his fix to cvsps that can now accurately detect ptools changes sets the xfs-cmds tree has been re-imported to git. Please see for more info on the git trees in general. http://xfs.org/index.php/Getting_the_latest_source_code Note a new clone of the xfs-cmds tree is required since this is a fresh import and does not share any commit data with the old import of xfs-cmds. The xfs-import and dmapi-import trees have also been re-imported. These trees are not build able trees but are good reference sources as they have much of the xfs history. http://oss.sgi.com/cgi-bin/gitweb.cgi?p=cattelan/xfs-import/.git;a=summary http://oss.sgi.com/cgi-bin/gitweb.cgi?p=cattelan/dmapi-import/.git;a=summary -Russell From elrond+bounces2007@samba-tng.org Mon Dec 29 17:38:45 2008 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 mBTNchiR009170 for ; Mon, 29 Dec 2008 17:38:45 -0600 X-ASG-Debug-ID: 1230593922-2a8302220000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from baerbel.szm.maschinenbau.tu-darmstadt.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0BD8217949FD for ; Mon, 29 Dec 2008 15:38:42 -0800 (PST) Received: from baerbel.szm.maschinenbau.tu-darmstadt.de (baerbel.szm.maschinenbau.tu-darmstadt.de [130.83.48.97]) by cuda.sgi.com with ESMTP id 2SIPHpmL2Wk79X1z for ; Mon, 29 Dec 2008 15:38:42 -0800 (PST) Received: from baerbel.szm.maschinenbau.tu-darmstadt.de (localhost [127.0.0.1]) by baerbel.szm.maschinenbau.tu-darmstadt.de (8.13.8/8.13.8) with ESMTP id mBTNTGkn006834 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT) for ; Tue, 30 Dec 2008 00:29:18 +0100 Received: (from tacke@localhost) by baerbel.szm.maschinenbau.tu-darmstadt.de (8.13.8/8.13.8/Submit) id mBTNTFMb006833 for xfs@oss.sgi.com; Tue, 30 Dec 2008 00:29:15 +0100 Date: Tue, 30 Dec 2008 00:29:15 +0100 From: Elrond To: xfs@oss.sgi.com X-ASG-Orig-Subj: xfsaild wakeups Subject: xfsaild wakeups Message-ID: <20081229232915.GA6724@memak.tu-darmstadt.de> Mail-Followup-To: Elrond , xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.13 (2006-08-11) X-Barracuda-Connect: baerbel.szm.maschinenbau.tu-darmstadt.de[130.83.48.97] X-Barracuda-Start-Time: 1230593923 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0004 1.0000 -2.0187 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.13940 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8811/Mon Dec 29 14:02:38 2008 on oss.sgi.com X-Virus-Status: Clean 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? Cheers, Elrond From david@fromorbit.com Mon Dec 29 18:28:21 2008 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=unavailable 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 mBU0SGck016758 for ; Mon, 29 Dec 2008 18:28:19 -0600 X-ASG-Debug-ID: 1230596889-2a8302f90000-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 136F113A76C1 for ; Mon, 29 Dec 2008 16:28:10 -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 NxtJLdtJIIeJ2DSB for ; Mon, 29 Dec 2008 16:28:10 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmEDAIvzWEl5LB1fgWdsb2JhbACTcwEBFiKoeViQJYZE X-IronPort-AV: E=Sophos;i="4.36,298,1228051800"; d="scan'208";a="284099104" 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; 30 Dec 2008 10:41:19 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LHSCb-000403-OI; Tue, 30 Dec 2008 11:11:17 +1100 Date: Tue, 30 Dec 2008 11:11:17 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com, John Stanley X-ASG-Orig-Subj: Re: [PATCH, RFC] directory offset overflows in 2.6.28 Subject: Re: [PATCH, RFC] directory offset overflows in 2.6.28 Message-ID: <20081230001117.GA5220@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com, John Stanley References: <20081229220745.GA12966@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081229220745.GA12966@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: 1230596891 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.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=COMMA_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13943 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' X-Virus-Scanned: ClamAV 0.91.2/8811/Mon Dec 29 14:02:38 2008 on oss.sgi.com X-Virus-Status: Clean On Mon, Dec 29, 2008 at 05:07:45PM -0500, Christoph Hellwig wrote: > The patch below is a dumb version of just putting back the masking, > to make sure we have the same behavior as in 2.6.27 and earlier. > I think we should at least hide it in a macro that is well-commented, > but I suspect we also need to make sure that we never ever get bigger > offsets in directories in some way. I think we need that macro sooner rather than later ;) > Index: xfs/fs/xfs/xfs_dir2_block.c > =================================================================== > --- xfs.orig/fs/xfs/xfs_dir2_block.c 2008-12-29 21:25:29.680613664 +0100 > +++ xfs/fs/xfs/xfs_dir2_block.c 2008-12-29 21:29:57.341627581 +0100 > @@ -517,9 +517,9 @@ xfs_dir2_block_getdents( > /* > * If it didn't fit, set the final offset to here & return. > */ > - if (filldir(dirent, dep->name, dep->namelen, cook, > + if (filldir(dirent, dep->name, dep->namelen, cook & 0x7fffffff, > ino, DT_UNKNOWN)) { > - *offset = cook; > + *offset = cook & 0x7fffffff; > xfs_da_brelse(NULL, bp); > return 0; > } In this case, you can do the masking at the time cook is assigned. I haven't checked, but I suspect the rest will be the same. That will make the patch less invasive and with a macro somewhat cleaner... Cheers, Dave. -- Dave Chinner david@fromorbit.com From lachlan@oss.sgi.com Mon Dec 29 20:53:46 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBU2rkmj014971 for ; Mon, 29 Dec 2008 20:53:46 -0600 Received: (from lachlan@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mBU2rFFo013962; Mon, 29 Dec 2008 20:53:15 -0600 Date: Mon, 29 Dec 2008 20:53:15 -0600 Message-Id: <200812300253.mBU2rFFo013962@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-linus, updated. v2.6.28-rc3-4976-g0a8c539 X-Git-Refname: refs/heads/for-linus X-Git-Reftype: branch X-Git-Oldrev: 3c92ec8ae91ecf59d88c798301833d7cf83f2179 X-Git-Newrev: 0a8c5395f90f06d128247844b2515c8bf3f2826b X-Virus-Scanned: ClamAV 0.91.2/8812/Mon Dec 29 18:49:14 2008 on oss.sgi.com X-Virus-Status: Clean This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-linus has been updated 0a8c539 [XFS] Fix merge failures 2505115 [XFS] Fix race in xfs_write() between direct and buffered I/O with DMAPI ad1ad96 [XFS] handle unaligned data in xfs_bmbt_disk_get_all efc5575 [XFS] avoid memory allocations in xfs_fs_vcmn_err 9f6c92b [XFS] Fix speculative allocation beyond eof 4fdc778 [XFS] Remove XFS_BUF_SHUT() and friends d415867 [XFS] Use the incore inode size in xfs_file_readdir() 27a0464 [XFS] Fix merge conflict in fs/xfs/xfs_rename.c 4d9d4eb Merge branch 'master' of git+ssh://git.melbourne.sgi.com/git/xfs cfbe526 [XFS] set b_error from bio error in xfs_buf_bio_end_io c4cd747 [XFS] use inode_change_ok for setattr permission checking 4d4be48 [XFS] add a FMODE flag to make XFS invisible I/O less hacky 6d73cf1 [XFS] resync headers with libxfs 2175dd9 [XFS] simplify projid check in xfs_rename 15ac08a [XFS] replace b_fspriv with b_mount e055f13 [XFS] Remove unused tracing code 14d676f Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 797eaed [XFS] Remove unnecessary assertion a5b429d [XFS] Remove unused variable in ktrace_free() c642261 [XFS] Check return value of xfs_buf_get_noaddr() 6a0775a [XFS] Fix hang after disallowed rename across directory quota domains 8bb5732 [XFS] Fix compile with CONFIG_COMPAT enabled 5a8d0f3 move inode tracing out of xfs_vnode. 25e41b3 move vn_iowait / vn_iowake into xfs_aops.c 583fa58 kill vn_ioerror f95099b kill xfs_unmount_flush e57481d no explicit xfs_iflush for special inodes during unmount 070c461 use xfs_trans_ijoin in xfs_trans_iget b56757b remove leftovers of shared read-only support e88f11a remove unused m_inode_quiesce member from struct xfs_mount 6bd16ff kill dead inode flags 5efcbb8 cleanup xfs_sb.h feature flag helpers df6771b kill dead quota flags 63ad2a5 remove dead code from sv_t implementation 39e2def reduce l_icloglock roundtrips d9424b3 stop using igrab in xfs_vn_link 5d765b9 kill xfs_buf_iostart 5cafdeb cleanup the inode reclaim path ccd0be6 remove unused prototypes for xfs_ihash_init / xfs_ihash_free 73e6335 remove unused behvavior cruft in xfs_super.h 2234d54 remove useless mnt_want_write call in xfs_write ddcd856 [XFS] fix compile on 32 bit systems e5d412f [XFS] Reorder xfs_ioctl32.c for some tidiness 710d62a [XFS] Hook up compat XFS_IOC_FSSETDM_BY_HANDLE ioctl handler 2875097 [XFS] Hook up compat XFS_IOC_ATTRMULTI_BY_HANDLE ioctl handler ebeecd2 [XFS] Hook up compat XFS_IOC_ATTRLIST_BY_HANDLE ioctl handler af819d2 [XFS] Fix compat XFS_IOC_FSBULKSTAT_SINGLE ioctl 65fbaf2 [XFS] Fix xfs_bulkstat_one size checks & error handling 2ee4fa5 [XFS] Make the bulkstat_one compat ioctl handling more sane 471d591 [XFS] Add compat handlers for data & rt growfs ioctls e94fc4a [XFS] Add compat handlers for swapext ioctl d5547f9 [XFS] Clean up some existing compat ioctl calls ffae263 [XFS] Move compat ioctl structs & numbers into xfs_ioctl32.h 743bb46 [XFS] Move copy_from_user calls out of ioctl helpers into ioctl switch. 0e44667 [XFS] fix error handling in xlog_recover_process_one_iunlink 24f211b [XFS] move inode allocation out xfs_iread b48d8d6 [XFS] kill the XFS_IMAP_BULKSTAT flag 92bfc6e [XFS] embededd struct xfs_imap into xfs_inode 94e1b69 [XFS] merge xfs_imap into xfs_dilocate a194189 [XFS] remove dead code for old inode item recovery 76d8b27 [XFS] stop using xfs_itobp in xfs_iread 23fac50 [XFS] split up xlog_recover_process_iunlinks 51ce16d [XFS] kill XFS_DINODE_VERSION_ defines 81591fe [XFS] kill xfs_dinode_core_t d42f08f [XFS] kill xfs_ialloc_log_di b28708d [XFS] sanitize xlog_in_core_t definition 4805621 [XFS] factor out xfs_read_agf helper 5e1be0f [XFS] factor out xfs_read_agi helper 26c5295 [XFS] remove i_gen from incore inode 207fcfa [XFS] remove xfs_vfsops.h 2b5decd [XFS] remove xfs_vfs.h 00dd402 [XFS] remove bhv_statvfs_t typedef f35642e [XFS] Hook up the fiemap ioctl. 5af317c [XFS] Add new getbmap flags. 8a7141a [XFS] convert xfs_getbmap to take formatter functions 0924b58 [XFS] fix uninitialised variable bug in dquot release. 2e65609 [XFS] fix error inversion problems with data flushing 6579591 [XFS] fix spurious gcc warnings 6c31b93 [XFS] allow inode64 mount option on 32 bit systems f999a5b [XFS] wire up ->open for directories bac8dca [XFS] fix NULL pointer dereference in xfs_log_force_umount b5a20aa Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 cc09c0d [XFS] Fix double free of log tickets 6307091 [XFS] Avoid using inodes that haven't been completely initialised cb4f0d1 [XFS] fix uninitialised variable bug in dquot release d44dab8 fs: xfs needs inode_wait to be exported 644c356 [XFS] handle memory allocation failures during log initialisation dcd7b4e Merge branch 'master' of git://oss.sgi.com:8090/xfs/linux-2.6 91b7771 CRED: Wrap task credential accesses in the XFS filesystem 6bfb3d0 [XFS] Fix race when looking up reclaimable inodes e0b8e8b [XFS] remove restricted chown parameter from xfs linux f3f0d7b [XFS] remove restricted chown parameter from xfs linux ea5a3dc8 [XFS] kill sys_cred 7ee49ac [XFS] correctly select first log item to push 9ed0451 [XFS] free partially initialized inodes using destroy_inode 087e3b0 Inode: export symbol destroy_inode c679eef [XFS] stop using xfs_itobp in xfs_bulkstat 455486b [XFS] avoid all reclaimable inodes in xfs_sync_inodes_ag 56e73ec [XFS] Can't lock inodes in radix tree preload region 2b7035f [XFS] Trivial xfs_remove comment fixup 1ec7944 [XFS] fix biosize option 469fc23 [XFS] fix the noquota mount option 9d565ff [XFS] kill struct xfs_mount_args 5a792c4 [XFS] XFS: Check for valid transaction headers in recovery 783a2f6 [XFS] Finish removing the mount pointer from the AIL API fc1829f [XFS] Add ail pointer into log items a9c21c1 [XFS] Given the log a pointer to the AIL c7e8f26 [XFS] Move the AIL lock into the struct xfs_ail 7b2e2a3 [XFS] Allow 64 bit machines to avoid the AIL lock during flushes 5b00f14 [XFS] move the AIl traversal over to a consistent interface 27d8d5f [XFS] Use a cursor for AIL traversal. 82fa901 [XFS] Allocate the struct xfs_ail a744405 [XFS] Account for allocated blocks when expanding directories 8c38ab0 [XFS] Prevent looping in xfs_sync_inodes_ag 1165451 [XFS] kill deleted inodes list 7a3be02 [XFS] use the inode radix tree for reclaiming inodes 396beb8 [XFS] mark inodes for reclaim via a tag in the inode radix tree 1dc3318 [XFS] rename inode reclaim functions fce08f2 [XFS] move inode reclaim functions to xfs_sync.c 493dca6 [XFS] Fix build warning - xfs_fs_alloc_inode() needs a return statement 99fa8cb [XFS] Prevent use-after-free caused by synchronous inode reclaim bf90424 [XFS] Combine the XFS and Linux inodes 8290c35 Inode: Allow external list initialisation 2cb1599 Inode: Allow external initialisers 94b97e3 [XFS] Never call mark_inode_dirty_sync() directly 6441e54 [XFS] factor xfs_iget_core() into hit and miss cases 3471394 [XFS] fix instant oops with tracing enabled 76bf105 [XFS] Move remaining quiesce code. a4e4c4f [XFS] Kill xfs_sync() cb56a4b [XFS] Kill SYNC_CLOSE e9f1c6e [XFS] make SYNC_DELWRI no longer use xfs_sync be97d9d [XFS] make SYNC_ATTR no longer use xfs_sync aacaa88 [XFS] xfssyncd: don't call xfs_sync dfd837a [XFS] kill xfs_syncsub 2030b5a [XFS] use xfs_sync_inodes rather than xfs_syncsub bc60a99 [XFS] Use struct inodes instead of vnodes to kill vn_grab 2af75df [XFS] split out two helpers from xfs_syncsub 4e8938f [XFS] Move XFS_BMAP_SANITY_CHECK out of line. 7cc95a8 [XFS] Always use struct xfs_btree_block instead of short / longform 136341b [XFS] cleanup btree record / key / ptr addressing macros. 6c7699c [XFS] remove the mount inode list 60197e8 [XFS] Cleanup maxrecs calculation. 5b4d89a [XFS] Traverse inode trees when releasing dquots 683a897 [XFS] Use the inode tree for finding dirty inodes 2f8a3ce [XFS] don't block in xfs_qm_dqflush() during async writeback. 75c68f4 [XFS] Remove xfs_iflush_all and clean up xfs_finish_reclaim_all() a167b17 [XFS] move xfssyncd code to xfs_sync.c fe4fa4b [XFS] move sync code to its own file 34519da [XFS] Show buffer address with debug hexdump on corruption 89b2839 [XFS] Check agf_btreeblks is valid when reading in the AGF 847fff5 [XFS] Sync up kernel and user-space headers 24ee0e4 [XFS] Make xfs_btree_check_ptr() debug-only code. d1de802 [XFS] Fix build brakage from patch "Clean up dquot pincount code" bc3048e [XFS] Clean up dquot pincount code. d112f29 [XFS] Wait for all I/O on truncate to zero file size 7f7c39c [XFS] make btree tracing generic 3cc7524 [XFS] mark various functions in xfs_btree.c static 4a26e66 [XFS] add keys_inorder and recs_inorder btree methods fd6bcc5 [XFS] kill xfs_bmbt_log_block and xfs_bmbt_log_recs 8cc938f [XFS] implement generic xfs_btree_get_rec 91cca5d [XFS] implement generic xfs_btree_delete/delrec d4b3a4b [XFS] move xfs_bmbt_killroot to common code 4b22a57 [XFS] implement generic xfs_btree_insert/insrec ea77b0a [XFS] move xfs_bmbt_newroot to common code 344207c [XFS] implement semi-generic xfs_btree_new_root f5eb8e7 [XFS] implement generic xfs_btree_split 687b890 [XFS] implement generic xfs_btree_lshift 9eaead5 [XFS] implement generic xfs_btree_rshift 278d0ca [XFS] implement generic xfs_btree_update 38bb742 [XFS] implement generic xfs_btree_updkey fe033cc [XFS] implement generic xfs_btree_lookup 8df4da4 [XFS] implement generic xfs_btree_decrement 637aa50 [XFS] implement generic xfs_btree_increment 65f1eae [XFS] add helpers for addressing entities inside a btree block ce5e42d [XFS] add get_maxrecs btree operation 8c4ed63 [XFS] make btree tracing generic 854929f [XFS] add new btree statistics a23f6ef [XFS] refactor btree validation helpers b524bfe [XFS] refactor xfs_btree_readahead e99ab90 [XFS] add a long pointers flag to xfs_btree_cur 8186e51 [XFS] make btree root in inode support generic de227dd [XFS] add generic btree types 561f7d1 [XFS] split up xfs_btree_init_cursor f2277f0 [XFS] kill struct xfs_btree_hdr f338f90 [XFS] Unlock inode before calling xfs_idestroy() a357a12 [XFS] Fix use-after-free with log and quotas 4603992 [XFS] Remove final remnants of dirv1 macros and other stuff d07c60e [XFS] Use xfs_idestroy() to cleanup an inode. be8b78a [XFS] Remove kmem_zone_t argument from xfs_inode_init_once() 07c8f67 [XFS] Make use of the init-once slab optimisation. from 3c92ec8ae91ecf59d88c798301833d7cf83f2179 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 0a8c5395f90f06d128247844b2515c8bf3f2826b Merge: 25051158bbed127e8672b43396c71c5eb610e5f1 3c92ec8ae91ecf59d88c798301833d7cf83f2179 Author: Lachlan McIlroy Date: Mon Dec 29 16:47:18 2008 +1100 [XFS] Fix merge failures Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Conflicts: fs/xfs/linux-2.6/xfs_cred.h fs/xfs/linux-2.6/xfs_globals.h fs/xfs/linux-2.6/xfs_ioctl.c fs/xfs/xfs_vnodeops.h Signed-off-by: Lachlan McIlroy commit 25051158bbed127e8672b43396c71c5eb610e5f1 Author: Lachlan McIlroy Date: Wed Dec 24 14:07:32 2008 +1100 [XFS] Fix race in xfs_write() between direct and buffered I/O with DMAPI The iolock is dropped and re-acquired around the call to XFS_SEND_NAMESP(). While the iolock is released the file can become cached. We then 'goto retry' and - if we are doing direct I/O - mapping->nrpages may now be non zero but need_i_mutex will be zero and we will hit the WARN_ON(). Since we have dropped the I/O lock then the file size may have also changed so what we need to do here is 'goto start' like we do for the XFS_SEND_DATA() DMAPI event. We also need to update the filesize before releasing the iolock so that needs to be done before the XFS_SEND_NAMESP event. If we drop the iolock before setting the filesize we could race with a truncate. Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit ad1ad968f4e7b06c75741575ea077e25a87da49a Author: Christoph Hellwig Date: Mon Dec 22 09:59:06 2008 -0500 [XFS] handle unaligned data in xfs_bmbt_disk_get_all In libxfs xfs_bmbt_disk_get_all needs to handle unaligned data and thus has been updated to use get_unaligned_be64. In kernelspace we don't strictly need it as the routine is only used for tracing and xfsidbg, but let's keep the two implementations in sync. Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit efc557570dc99b46e46a7be51c3c7402b485e829 Author: Christoph Hellwig Date: Wed Dec 17 12:27:36 2008 -0500 [XFS] avoid memory allocations in xfs_fs_vcmn_err xfs_fs_vcmn_err can be called under a spinlock, but does a sleeping memory allocation to create buffer for it's internal sprintf. Fortunately it's the only caller of icmn_err, so we can merge the two and have one single static buffer and spinlock protecting it. While we're at it make sure we proper __attribute__ format annotations so that the compiler can detect mismatched format strings. Reported-by: Alexander Beregalov Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen Signed-off-by: Lachlan McIlroy commit 9f6c92b9cc2fd41d6c7b493be5637cc5b5659880 Author: Lachlan McIlroy Date: Mon Dec 22 17:56:49 2008 +1100 [XFS] Fix speculative allocation beyond eof Speculative allocation beyond eof doesn't work properly. It was broken some time ago after a code cleanup that moved what is now xfs_iomap_eof_align_last_fsb() and xfs_iomap_eof_want_preallocate() out of xfs_iomap_write_delay() into separate functions. The code used to use the current file size in various checks but got changed to be max(file_size, i_new_size). Since i_new_size is the result of 'offset + count' then in xfs_iomap_eof_want_preallocate() the check for '(offset + count) <= isize' will always be true. ie if 'offset + count' is > ip->i_size then isize will be i_new_size and equal to 'offset + count'. This change fixes all the places that used to use the current file size. Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 4fdc7781799926dca6c3a3bb6e9533a9718c4dea Author: Lachlan McIlroy Date: Mon Dec 22 17:52:58 2008 +1100 [XFS] Remove XFS_BUF_SHUT() and friends Code does nothing so remove it. Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit d415867e0abc35e3b2f0d4196e98c339d6fe29a2 Author: Lachlan McIlroy Date: Mon Dec 22 17:50:56 2008 +1100 [XFS] Use the incore inode size in xfs_file_readdir() We should be using the incore inode size here not the linux inode size. The incore inode size is always up to date for directories whereas the linux inode size is not updated for directories. We've hit assertions in xfs_bmap() and traced it back to the linux inode size being zero but the incore size being correct. Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 27a0464a6cb837d3a90b6e69365dfc01cb0dff2f Merge: 4d9d4ebf5de848e3450e23e4db9ac74e23e5daa6 3d44cc3e01ee1b40317f79ed54324e25c4f848df Author: Lachlan McIlroy Date: Mon Dec 22 17:34:26 2008 +1100 [XFS] Fix merge conflict in fs/xfs/xfs_rename.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Conflicts: fs/xfs/xfs_rename.c Signed-off-by: Lachlan McIlroy commit 4d9d4ebf5de848e3450e23e4db9ac74e23e5daa6 Merge: cfbe52672fbc6f333892e8dde82c35e0a76aa5f5 c4cd747ee6c3ba1e7727878e3fce482d0d8c0136 Author: Lachlan McIlroy Date: Fri Dec 12 15:28:02 2008 +1100 Merge branch 'master' of git+ssh://git.melbourne.sgi.com/git/xfs commit cfbe52672fbc6f333892e8dde82c35e0a76aa5f5 Author: Lachlan McIlroy Date: Fri Dec 12 15:27:25 2008 +1100 [XFS] set b_error from bio error in xfs_buf_bio_end_io Preserve any error returned by the bio layer. Reviewed-by: Eric Sandeen Reviewed-by: Tim Shimmin Signed-off-by: Lachlan McIlroy commit c4cd747ee6c3ba1e7727878e3fce482d0d8c0136 Author: Christoph Hellwig Date: Tue Dec 9 04:47:34 2008 -0500 [XFS] use inode_change_ok for setattr permission checking Instead of implementing our own checks use inode_change_ok to check for necessary permission in setattr. There is a slight change in behaviour as inode_change_ok doesn't allow i_mode updates to add the suid or sgid without superuser privilegues while the old XFS code just stripped away those bits from the file mode. (First sent on Semptember 29th) Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 4d4be482a4d78ca906f45e99fd9fdb91e907f5ad Author: Christoph Hellwig Date: Tue Dec 9 04:47:33 2008 -0500 [XFS] add a FMODE flag to make XFS invisible I/O less hacky XFS has a mode called invisble I/O that doesn't update any of the timestamps. It's used for HSM-style applications and exposed through the nasty open by handle ioctl. Instead of doing directly assignment of file operations that set an internal flag for it add a new FMODE_NOCMTIME flag that we can check in the normal file operations. (addition of the generic VFS flag has been ACKed by Al as an interims solution) Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 6d73cf133c5477f7038577bfeda603ce9946f8cb Author: Christoph Hellwig Date: Tue Dec 9 04:47:32 2008 -0500 [XFS] resync headers with libxfs - xfs_sb.h add the XFS_SB_VERSION2_PARENTBIT features2 that has been around in userspace for some time - xfs_inode.h: move a few things out of __KERNEL__ that are needed by userspace - xfs_mount.h: only include xfs_sync.h under __KERNEL__ - xfs_inode.c: minor whitespace fixup. I accidentaly changes this when importing this file for use by userspace. Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 2175dd95741bda5f438e4efe388a8c1bb5abf1cc Author: Christoph Hellwig Date: Tue Dec 9 04:47:31 2008 -0500 [XFS] simplify projid check in xfs_rename Check for the project ID after attaching all inodes to the transaction. That way the unlock in the error case is done by the transaction subsystem, which guaratees that is uses the right flags (which was wrong from day one of this check), and avoids having special code unlocking an array of inodes with potential duplicates. Attaching the inode first is the method used by xfs_rename and the other namespace methods all other error that require multiple locked inodes. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Lachlan McIlroy commit 15ac08a8b2c129abccf1be47b6ab09491e013db2 Author: Christoph Hellwig Date: Tue Dec 9 04:47:30 2008 -0500 [XFS] replace b_fspriv with b_mount Replace the b_fspriv pointer and it's ugly accessors with a properly types xfs_mount pointer. Also switch log reocvery over to it instead of using b_fspriv for the mount pointer. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Lachlan McIlroy commit e055f13a6d8448d4f23121b7b11340c3fb55cce6 Author: Lachlan McIlroy Date: Wed Dec 10 11:51:54 2008 +1100 [XFS] Remove unused tracing code None of this code appears to be used anywhere so remove it. Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 14d676f56fad26fd3c31eeff5d4ef8ea4a163571 Merge: 797eaed40e1df4a3b9ece6894a71ce2b568bca38 feaf3848a813a106f163013af6fcf6c4bfec92d9 Author: Lachlan McIlroy Date: Fri Dec 5 15:27:43 2008 +1100 Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 commit 797eaed40e1df4a3b9ece6894a71ce2b568bca38 Author: Lachlan McIlroy Date: Fri Dec 5 14:15:49 2008 +1100 [XFS] Remove unnecessary assertion Hit this assert because an inode was tagged with XFS_ICI_RECLAIM_TAG but not XFS_IRECLAIMABLE|XFS_IRECLAIM. This is because xfs_iget_cache_hit() first clears XFS_IRECLAIMABLE and then calls __xfs_inode_clear_reclaim_tag() while only holding the pag_ici_lock in read mode so we can race with xfs_reclaim_inodes_ag(). Looks like xfs_reclaim_inodes_ag() will do the right thing anyway so just remove the assert. Thanks to Christoph for pointing out where the problem was. Signed-off-by: Lachlan McIlroy Reviewed-by: Christoph Hellwig commit a5b429d41fede3a90deb532f5c2318393ed3a17b Author: Lachlan McIlroy Date: Fri Dec 5 13:31:51 2008 +1100 [XFS] Remove unused variable in ktrace_free() entries_size is probably left over from when we used to pass the size to kmem_free(). Signed-off-by: Lachlan McIlroy Reviewed-by: Christoph Hellwig Reviewed-by: Eric Sandeen commit c6422617a1c0d7787e515748b01f594fe43aea98 Author: Lachlan McIlroy Date: Fri Dec 5 13:16:15 2008 +1100 [XFS] Check return value of xfs_buf_get_noaddr() We check the return value of all other calls to xfs_buf_get_noaddr(). Make sense to do it here too. Signed-off-by: Lachlan McIlroy Reviewed-by: Christoph Hellwig Reviewed-by: Eric Sandeen commit 6a0775a991d5597ce98f1e15373288ea133cc793 Author: Dave Chinner Date: Thu Dec 4 09:09:34 2008 +1100 [XFS] Fix hang after disallowed rename across directory quota domains When project quota is active and is being used for directory tree quota control, we disallow rename outside the current directory tree. This requires a check to be made after all the inodes involved in the rename are locked. We fail to unlock the inodes correctly if we disallow the rename when the target is outside the current directory tree. This results in a hang on the next access to the inodes involved in failed rename. Reported-by: Arkadiusz Miskiewicz Signed-off-by: Dave Chinner Tested-by: Arkadiusz Miskiewicz Signed-off-by: Lachlan McIlroy commit 8bb57320f3f5dd8c2373c0b66e4950391e037109 Author: Christoph Hellwig Date: Thu Dec 4 14:23:27 2008 +0100 [XFS] Fix compile with CONFIG_COMPAT enabled Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 5a8d0f3c7af801c7263fbba39952504d6fc7ff60 Author: Christoph Hellwig Date: Wed Dec 3 12:20:40 2008 +0100 move inode tracing out of xfs_vnode. Move the inode tracing into xfs_iget.c / xfs_inode.h and kill xfs_vnode.c now that it's empty. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 25e41b3d521f52771354a718042a753a3e77df0a Author: Christoph Hellwig Date: Wed Dec 3 12:20:39 2008 +0100 move vn_iowait / vn_iowake into xfs_aops.c The whole machinery to wait on I/O completion is related to the I/O path and should be there instead of in xfs_vnode.c. Also give the functions more descriptive names. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 583fa586f0e4a8222dd091ce971b85c1364f3d92 Author: Christoph Hellwig Date: Wed Dec 3 12:20:38 2008 +0100 kill vn_ioerror There's just one caller of this helper, and it's much cleaner to just merge the xfs_do_force_shutdown call into it. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit f95099ba5ae06b96a9c17ef93cc655f686d79077 Author: Christoph Hellwig Date: Wed Dec 3 12:20:37 2008 +0100 kill xfs_unmount_flush There's almost nothing left in this function, instead remove the IRELE on the real times inodes and the call to XFS_QM_UNMOUNT into xfs_unmountfs. For the regular unmount case that means it now also happenes after dmapi notification, but otherwise there is no difference in behaviour. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit e57481dc269cd3773b22f53bfb869308780a7bf1 Author: Christoph Hellwig Date: Wed Dec 3 12:20:36 2008 +0100 no explicit xfs_iflush for special inodes during unmount Currently we explicitly call xfs_iflush on the quota, real-time and root inodes from xfs_unmount_flush. But we just called xfs_sync_inodes with SYNC_ATTR and do an XFS_bflush aka xfs_flush_buftarg to make sure all inodes are on disk already, so there is no need for these special cases. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 070c4616ec62fc207e2aeef9d0f28af294c651d0 Author: Christoph Hellwig Date: Wed Dec 3 12:20:35 2008 +0100 use xfs_trans_ijoin in xfs_trans_iget Use xfs_trans_ijoin in xfs_trans_iget in case we need to join an inode into a transaction instead of opencoding it. Based on a discussion with and an incomplete patch from Niv Sardi. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit b56757becf8bc62292263a24a23cf55edb4be55f Author: Christoph Hellwig Date: Wed Dec 3 12:20:34 2008 +0100 remove leftovers of shared read-only support We never supported shared read-only filesystems, so remove the dead code left over from IRIX for it. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit e88f11abe09d14718b82a991db118c5e485aa897 Author: Christoph Hellwig Date: Wed Dec 3 12:20:33 2008 +0100 remove unused m_inode_quiesce member from struct xfs_mount Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 6bd16ff27060819d16b3e7abe59b6644b349aea3 Author: Christoph Hellwig Date: Wed Dec 3 12:20:32 2008 +0100 kill dead inode flags There are a few inode flags around that aren't used anywhere, so remove them. Also update xfsidbg to display all used inode flags correctly. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 5efcbb853bc2f051d720a191268f8dd901fea9c2 Author: Christoph Hellwig Date: Wed Dec 3 12:20:31 2008 +0100 cleanup xfs_sb.h feature flag helpers The various inlines in xfs_sb.h that deal with the superblock version and fature flags were converted from macros a while ago, and this show by the odd coding style full of useless braces and backslashes and the avoidance of conditionals. Clean these up to look like normal C code. Signed-off-by: Christoph Hellwig Reviewed-by: Donald Douwsma Signed-off-by: Niv Sardi commit df6771bde14551eceeacf331666a92735e0773ac Author: Christoph Hellwig Date: Wed Dec 3 12:20:30 2008 +0100 kill dead quota flags Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 63ad2a5c4cf37e3242142eee8a8dcd4a8515302e Author: Christoph Hellwig Date: Wed Dec 3 12:20:29 2008 +0100 remove dead code from sv_t implementation Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 39e2defe73106ca2e1c85e5286038a0a13f49513 Author: Christoph Hellwig Date: Wed Dec 3 12:20:28 2008 +0100 reduce l_icloglock roundtrips All but one caller of xlog_state_want_sync drop and re-acquire l_icloglock around the call to it, just so that xlog_state_want_sync can acquire and drop it. Move all lock operation out of l_icloglock and assert that the lock is held when it is called. Note that it would make sense to extende this scheme to xlog_state_release_iclog, but the locking in there is more complicated and we'd like to keep the atomic_dec_and_lock optmization for those callers not having l_icloglock yet. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit d9424b3c4a1e96f87c6cfd4d8dd2f8d9bbb4dcc5 Author: Christoph Hellwig Date: Wed Dec 3 12:20:27 2008 +0100 stop using igrab in xfs_vn_link ->link is guranteed to get an already reference inode passed so we can do a simple increment of i_count instead of using igrab and thus avoid banging on the global inode_lock. This is what most filesystems already do. Also move the increment after the call to xfs_link to simplify error handling. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 5d765b976c3a41faf9a73718fb8cc5833990a8ef Author: Christoph Hellwig Date: Wed Dec 3 12:20:26 2008 +0100 kill xfs_buf_iostart xfs_buf_iostart is a "shared" helper for xfs_buf_read_flags, xfs_bawrite, and xfs_bdwrite - except that there isn't much shared code but rather special cases for each caller. So remove this function and move the functionality to the caller. xfs_bawrite and xfs_bdwrite are now big enough to be moved out of line and the xfs_buf_read_flags is moved into a new helper called _xfs_buf_read. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 5cafdeb2891a415a5dbf0ad80f0afedf8369e6bb Author: Christoph Hellwig Date: Wed Dec 3 12:20:25 2008 +0100 cleanup the inode reclaim path Merge xfs_iextract and xfs_idestroy into xfs_ireclaim as they are never called individually. Also rewrite most comments in this area as they were severly out of date. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit ccd0be6cfc6943c4e0b3e3cdb598e0b7354a2d78 Author: Christoph Hellwig Date: Wed Dec 3 12:20:24 2008 +0100 remove unused prototypes for xfs_ihash_init / xfs_ihash_free Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 73e6335c14209e508bec8ca7985d1fbde183bd1f Author: Christoph Hellwig Date: Wed Dec 3 12:20:23 2008 +0100 remove unused behvavior cruft in xfs_super.h Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 2234d54d3d855d6ffae88a24772a9389d6755e0c Author: Christoph Hellwig Date: Wed Dec 3 12:20:22 2008 +0100 remove useless mnt_want_write call in xfs_write When mnt_want_write was introduced a call to it was added around xfs_ichgtime, but there is no need for this because a file can't be open read/write on a r/o mount, and a mount can't degrade r/o while we still have files open for writing. As the mnt_want_write changes were never merged into the CVS tree this patch is for mainline only. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit ddcd856d81861a523d79d077facd875da1f66792 Author: Christoph Hellwig Date: Wed Dec 3 07:55:34 2008 -0500 [XFS] fix compile on 32 bit systems The recent compat patches make xfs_file.c include xfs_ioctl32.h unconditional, which breaks the build on 32 bit systems which don't have the various compat defintions. Remove the include and move the defintion of xfs_file_compat_ioctl to xfs_ioctl.h so that we can avoid including all the compat defintions in xfs_file.c Signed-off-by: Christoph Hellwig Tested-by: Kamalesh Babulal Signed-off-by: Lachlan McIlroy commit e5d412f17846b0aea9e5250926f994ab2e4e1006 Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:17 2008 -0600 [XFS] Reorder xfs_ioctl32.c for some tidiness Put things in IMHO a more readable order, now that it's all done; add some comments. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 710d62aaaf17c841b8bdbc7a775f8910a7160248 Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:16 2008 -0600 [XFS] Hook up compat XFS_IOC_FSSETDM_BY_HANDLE ioctl handler Add a compat handler for XFS_IOC_FSSETDM_BY_HANDLE. I haven't tested this, lacking dmapi tools to do so (unless xfsqa magically gets this somehow?) Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 28750975ace79c547407a84d3969cbed516be8f8 Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:15 2008 -0600 [XFS] Hook up compat XFS_IOC_ATTRMULTI_BY_HANDLE ioctl handler Add a compat handler for XFS_IOC_ATTRMULTI_BY_HANDLE Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit ebeecd2b04645a4b79e1bc00d69cf4f98e03a684 Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:14 2008 -0600 [XFS] Hook up compat XFS_IOC_ATTRLIST_BY_HANDLE ioctl handler Add a compat handler for XFS_IOC_ATTRLIST_BY_HANDLE Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit af819d27637119105213433881f158931e29620b Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:13 2008 -0600 [XFS] Fix compat XFS_IOC_FSBULKSTAT_SINGLE ioctl The XFS_IOC_FSBULKSTAT_SINGLE ioctl passes in the desired inode number, while XFS_IOC_FSBULKSTAT passes in the previous/last-stat'd inode number. The compat handler wasn't differentiating these, so when a XFS_IOC_FSBULKSTAT_SINGLE request for inode 128 was sent in, stat information for 131 was sent out. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 65fbaf2489c667bf79ae1f20403f30c66568d445 Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:12 2008 -0600 [XFS] Fix xfs_bulkstat_one size checks & error handling The 32-bit xfs_blkstat_one handler was failing because a size check checked whether the remaining (32-bit) user buffer was less than the (64-bit) bulkstat buffer, and failed with ENOMEM if so. Move this check into the respective handlers so that they check the correct sizes. Also, the formatters were returning negative errors or positive bytes copied; this was odd in the positive error value world of xfs, and handled wrong by at least some of the callers, which treated the bytes returned as an error value. Move the bytes-used assignment into the formatters. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 2ee4fa5cb716eba104a4ef8efe159e1007a2aef6 Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:11 2008 -0600 [XFS] Make the bulkstat_one compat ioctl handling more sane Currently the compat formatter was handled by passing in "private_data" for the xfs_bulkstat_one formatter, which was really just another formatter... IMHO this got confusing. Instead, just make a new xfs_bulkstat_one_compat formatter for xfs_bulkstat, and call it via a wrapper. Also, don't translate the ioctl nrs into their native counterparts, that just clouds the issue; we're in a compat handler anyway, just switch on the 32-bit cmds. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 471d59103167c84f17b9bcfee22ed10b44ff206e Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:10 2008 -0600 [XFS] Add compat handlers for data & rt growfs ioctls The args for XFS_IOC_FSGROWFSDATA and XFS_IOC_FSGROWFSRTA have padding on the end on intel, so add arg copyin functions, and then just call the growfs ioctl helpers. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit e94fc4a43e5c39f689e83caf6d2f0939081f5e6b Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:09 2008 -0600 [XFS] Add compat handlers for swapext ioctl The big hitter here was the bstat field, which contains different sized time_t on 32 vs. 64 bit. Add a copyin function to translate the 32-bit arg to 64-bit, and call the swapext ioctl helper. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit d5547f9feea459dfc9e7313bd1d561394e2c129f Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:08 2008 -0600 [XFS] Clean up some existing compat ioctl calls Create a new xfs_ioctl.h file which has prototypes for ioctl helpers that may be called in compat mode. Change several compat ioctl cases which are IOW to simply copy in the userspace argument, then call the common ioctl helper. This also fixes xfs_compat_ioc_fsgeometry_v1(), which had it backwards before; it copied in an (empty) arg, then copied out the native result, which probably corrupted userspace. It should be translating on the copyout. Also, a bit of formatting cleanup for consistency, and conversion of all error returns to use XFS_ERROR(). Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit ffae263a640b736a7206a0d7bd14ab44eb58cd28 Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:07 2008 -0600 [XFS] Move compat ioctl structs & numbers into xfs_ioctl32.h This makes the c file less cluttered and a bit more readable. Consistently name the ioctl number macros with "_32" and the compatibility stuctures with "_compat." Rename the helpers which simply copy in the arg with "_copyin" for easy identification. Finally, for a few of the existing helpers, modify them so that they directly call the native ioctl helper after userspace argument fixup. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 743bb4650da9e2595d6cedd01c680b5b9398c74a Author: sandeen@sandeen.net Date: Tue Nov 25 21:20:06 2008 -0600 [XFS] Move copy_from_user calls out of ioctl helpers into ioctl switch. Moving the copy_from_user out of some of the ioctl helpers will make it easier for the compat ioctl switch to copy in the right struct, then just pass to the underlying helper. Also, move common access checks into the helpers themselves, and out of the native ioctl switch code, to reduce code duplication between native & compat ioctl callers. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 0e446673a15a4e9c336b67c1a638eb12c21d0993 Author: Christoph Hellwig Date: Fri Nov 28 14:23:42 2008 +1100 [XFS] fix error handling in xlog_recover_process_one_iunlink If we fail after xfs_iget we have to drop the reference count, spotted by Dave Chinner. Also remove some useless asserts and stop trying to deal with di_mode == 0 inodes because never gets those without passing the IGET_CREATE flag to xfs_iget. Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen Signed-off-by: Niv Sardi commit 24f211bad09a31f19dda0c3faffe0244f4f235f5 Author: Christoph Hellwig Date: Fri Nov 28 14:23:42 2008 +1100 [XFS] move inode allocation out xfs_iread Allocate the inode in xfs_iget_cache_miss and pass it into xfs_iread. This simplifies the error handling and allows xfs_iread to be shared with userspace which already uses these semantics. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit b48d8d64377f39913663a06f4757f3b8c6fc6d87 Author: Christoph Hellwig Date: Fri Nov 28 14:23:41 2008 +1100 [XFS] kill the XFS_IMAP_BULKSTAT flag Just pass down the XFS_IGET_* flags all the way down to xfs_imap instead of translating them mid-way. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 92bfc6e7c4eabbbd15e7d6d49123b296d05dcfd1 Author: Christoph Hellwig Date: Fri Nov 28 14:23:41 2008 +1100 [XFS] embededd struct xfs_imap into xfs_inode Most uses of struct xfs_imap are to map and inode to a buffer. To avoid copying around the inode location information we should just embedd a strcut xfs_imap into the xfs_inode. To make sure it doesn't bloat an inode the im_len is changed to a ushort, which is fine as that's what the users exepect anyway. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 94e1b69d1abd108d306e926c3012ec89e481c0da Author: Christoph Hellwig Date: Fri Nov 28 14:23:41 2008 +1100 [XFS] merge xfs_imap into xfs_dilocate xfs_imap is the only caller of xfs_dilocate and doesn't add any significant value. Merge the two functions and document the various cases we have for inode cluster lookup in the new xfs_imap. Also remove the unused im_agblkno and im_ioffset fields from struct xfs_imap while we're at it. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit a1941895034cda2bffa23ba845607c82138ccf52 Author: Christoph Hellwig Date: Fri Nov 28 14:23:40 2008 +1100 [XFS] remove dead code for old inode item recovery We have removed the support for old-style inode items a while ago and xlog_recover_do_inode_trans is now only called for XFS_LI_INODE items. That means we can remove the call to xfs_imap there and with it the XFS_IMAP_LOOKUP that is set by all other callers. We can also mark xfs_imap static now. (First sent on October 21st) Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 76d8b277f7b715f78ee3cb09ee112563639693a5 Author: Christoph Hellwig Date: Fri Nov 28 14:23:40 2008 +1100 [XFS] stop using xfs_itobp in xfs_iread The only caller of xfs_itobp that doesn't have i_blkno setup is now the initial inode read. It needs access to the whole xfs_imap so using xfs_inotobp is not an option. Instead opencode the buffer lookup in xfs_iread and kill all the functionality for the initial map from xfs_itobp. (First sent on October 21st) Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 23fac50f959a87febf7ce4ae9d47525121f10c7a Author: Christoph Hellwig Date: Fri Nov 28 14:23:40 2008 +1100 [XFS] split up xlog_recover_process_iunlinks Split out the body of the main loop into a separate helper to make the code readable. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 51ce16d519da0bc3c548e0facef7cb3aab1ac8cc Author: Christoph Hellwig Date: Fri Nov 28 14:23:39 2008 +1100 [XFS] kill XFS_DINODE_VERSION_ defines These names don't add any value at all over just using the numerical values. (First sent on October 9th) Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 81591fe2db19d0fc1ec2aaaa6a790a5ab97ac3ab Author: Christoph Hellwig Date: Fri Nov 28 14:23:39 2008 +1100 [XFS] kill xfs_dinode_core_t Now that we have a separate xfs_icdinode_t for the in-core inode which gets logged there is no need anymore for the xfs_dinode vs xfs_dinode_core split - the fact that part of the structure gets logged through the inode log item and a small part not can better be described in a comment. All sizeof operations on the dinode_core either really wanted the icdinode and are switched to that one, or had already added the size of the agi unlinked list pointer. Later both will be replaced with helpers once we get the larger CRC-enabled dinode. Removing the data and attribute fork unions also has the advantage that xfs_dinode.h doesn't need to pull in every header under the sun. While we're at it also add some more comments describing the dinode structure. (First sent on October 7th) Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit d42f08f61c5e7f0ed4c6b6df4c9987ddb85ec66e Author: Christoph Hellwig Date: Fri Nov 28 14:23:38 2008 +1100 [XFS] kill xfs_ialloc_log_di xfs_ialloc_log_di is only used to log the full inode core + di_next_unlinked. That means all the offset magic is not nessecary and we can simply use xfs_trans_log_buf directly. Also add a comment describing what we should do here instead. (First sent on October 7th) Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit b28708d6a0a3ed65a68f0dcd8e6d1c09f14e5cf3 Author: Christoph Hellwig Date: Fri Nov 28 14:23:38 2008 +1100 [XFS] sanitize xlog_in_core_t definition Move all fields from xlog_iclog_fields_t into xlog_in_core_t instead of having them in a substructure and the using #defines to make it look like they were directly in xlog_in_core_t. Also document that xlog_in_core_2_t is grossly misnamed, and make all references to it typesafe. (First sent on Semptember 15th) Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 4805621a37d9b2b16641b5c68597651419e9e252 Author: From: Christoph Hellwig Date: Fri Nov 28 14:23:38 2008 +1100 [XFS] factor out xfs_read_agf helper Add a helper to read the AGF header and perform basic verification. Based on hunks from a larger patch from Dave Chinner. (First sent on Juli 23rd) Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 5e1be0fb1a3950597aeda448698e85b0595a2e92 Author: Christoph Hellwig Date: Fri Nov 28 14:23:37 2008 +1100 [XFS] factor out xfs_read_agi helper Add a helper to read the AGI header and perform basic verification. Based on hunks from a larger patch from Dave Chinner. (First sent on Juli 23rd) Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 26c5295135d10fc90cbf160adfda392d91f58279 Author: Dave Chinner Date: Fri Nov 28 14:23:37 2008 +1100 [XFS] remove i_gen from incore inode i_gen is incremented in directory operations when the directory is changed. It is never read or otherwise used so it should be removed to help reduce the size of the struct xfs_inode. The patch also removes a duplicate logging of the directory inode core. We only need to do this once per transaction so kill the one associated with the i_gen increment. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Niv Sardi commit 207fcfad58482c7c9f92939a1f6df9f7e8873a34 Author: Christoph Hellwig Date: Fri Nov 28 14:23:37 2008 +1100 [XFS] remove xfs_vfsops.h The only thing left is xfs_do_force_shutdown which already has a defintion in xfs_mount.h. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 2b5decd09e9f98c4e361f97f3e32d80164774f75 Author: Christoph Hellwig Date: Fri Nov 28 14:23:36 2008 +1100 [XFS] remove xfs_vfs.h The only thing left are the forced shutdown flags and freeze macros which fit into xfs_mount.h much better. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit 00dd4029e9afa642c2b26dc3aac834322ac29b4a Author: Christoph Hellwig Date: Fri Nov 28 14:23:36 2008 +1100 [XFS] remove bhv_statvfs_t typedef Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit f35642e2f89f2b0379e929bd9027342365abc839 Author: Eric Sandeen Date: Fri Nov 28 14:23:35 2008 +1100 [XFS] Hook up the fiemap ioctl. This adds the fiemap inode_operation, which for us converts the fiemap values & flags into a getbmapx structure which can be sent to xfs_getbmap. The formatter then copies the bmv array back into the user's fiemap buffer via the fiemap helpers. If we wanted to be more clever, we could also return mapping data for in-inode attributes, but I'm not terribly motivated to do that just yet. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Niv Sardi commit 5af317c942aebc928ab244eb69581bd8e5333215 Author: Eric Sandeen Date: Fri Nov 28 14:23:35 2008 +1100 [XFS] Add new getbmap flags. This adds a new output flag, BMV_OF_LAST to indicate if we've hit the last extent in the inode. This potentially saves an extra call from userspace to see when the whole mapping is done. It also adds BMV_IF_DELALLOC and BMV_OF_DELALLOC to request, and indicate, delayed-allocation extents. In this case bmv_block is set to -2 (-1 was already taken for HOLESTARTBLOCK; unfortunately these are the reverse of the in-kernel constants.) These new flags facilitate addition of the new fiemap interface. Rather than adding sh_delalloc, remove sh_unwritten & just test the flags directly. Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Niv Sardi commit 8a7141a8b931d60d42830432b82078cd6dace83b Author: Eric Sandeen Date: Fri Nov 28 14:23:35 2008 +1100 [XFS] convert xfs_getbmap to take formatter functions Preliminary work to hook up fiemap, this allows us to pass in an arbitrary formatter to copy extent data back to userspace. The formatter takes info for 1 extent, a pointer to the user "thing*" and a pointer to a "filled" variable to indicate whether a userspace buffer did get filled in (for fiemap, hole "extents" are skipped). I'm just using the getbmapx struct as a "common denominator" because as far as I can see, it holds all info that any formatters will care about. ("*thing" because fiemap doesn't pass the user pointer around, but rather has a pointer to a fiemap info structure, and helpers associated with it) Signed-off-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Niv Sardi commit 0924b585fc49bf371bc700c23e516a538bf589af Author: Dave Chinner Date: Fri Nov 28 14:23:34 2008 +1100 [XFS] fix uninitialised variable bug in dquot release. gcc is warning about an uninitialised variable in xfs_growfs_rt(). This is a false positive. Fix it by changing the scope of the transaction pointer to wholly within the internal loop inside the function. While there, preemptively change xfs_growfs_rt_alloc() in the same way as it has exactly the same structure as xfs_growfs_rt() but gcc is not warning about it. Yet. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Niv Sardi commit 2e6560929d8ab4b650fecc3a87013852b34f0922 Author: Dave Chinner Date: Fri Nov 28 14:23:33 2008 +1100 [XFS] fix error inversion problems with data flushing XFS gets the sign of the error wrong in several places when gathering the error from generic linux functions. These functions return negative error values, while the core XFS code returns positive error values. Hence when XFS inverts the error to be returned to the VFS, it can incorrectly invert a negative error and this error will be ignored by the syscall return. Fix all the problems related to calling filemap_* functions. Problem initially identified by Nick Piggin in xfs_fsync(). Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Niv Sardi commit 65795910c1b798f8a47181b48cf6eb163a15e778 Author: Christoph Hellwig Date: Fri Nov 28 14:23:33 2008 +1100 [XFS] fix spurious gcc warnings Some recent gcc warnings don't like passing string variables to printf-like functions without using at least a "%s" format string. Change the two occurances of that in xfs to please gcc. Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen Signed-off-by: Niv Sardi commit 6c31b93a14a453c8756ffd228e24910ffdf30c5d Author: Christoph Hellwig Date: Fri Nov 28 14:23:32 2008 +1100 [XFS] allow inode64 mount option on 32 bit systems Now that we've stopped using the Linux inode cache when can trivally support the inode64 mount option on 32bit architectures. As far as the kernel and most userspace is concerned this works perfectly, but applications still using really old stat and readdir interfaces will get an EOVERFLOW error when hitting an inode number not fitting into 32 bits (that problem of course also exists when using these applications on a 64bit kernel). Note that because inode64 is simply a mount option we can currently mount a filesystem having > 32 bit inode numbers and cause a variety of problems, all this is solved but this patch which enables XFS_BIG_INUMS, even when inode64 is not used. (First sent on October 18th) Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit f999a5bf3fa6b3d11334c3ba1e9dcfed5ff9f8a6 Author: Christoph Hellwig Date: Fri Nov 28 14:23:32 2008 +1100 [XFS] wire up ->open for directories Currently there's no ->open method set for directories on XFS. That means we don't perform any check for opening too large directories without O_LARGEFILE, we don't check for shut down filesystems, and we don't actually do the readahead for the first block in the directory. Instead of just setting the directories open routine to xfs_file_open we merge the shutdown check directly into xfs_file_open and create a new xfs_dir_open that first calls xfs_file_open and then performs the readahead for block 0. (First sent on September 29th) Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Niv Sardi commit bac8dca9f9b1dfcf9c4ecb4f9ca17185b828cc20 Author: Christoph Hellwig Date: Fri Nov 28 14:23:31 2008 +1100 [XFS] fix NULL pointer dereference in xfs_log_force_umount xfs_log_force_umount may be called very early during log recovery where If we fail a buffer read in xlog_recover_do_inode_trans we abort the mount. But at that point log recovery has started delayed writeback of inode buffers. As part of the aborted mount we try to flush out all delwri buffers, but at that point we have already freed the superblock, and set mp->m_sb_bp to NULL, and xfs_log_force_umount which gets called after the inode buffer writeback trips over it. Make xfs_log_force_umount a little more careful when accessing mp->m_sb_bp to avoid this. Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen Signed-off-by: Niv Sardi commit b5a20aa2657063cbf3b47fc700603180de4bb554 Merge: cc09c0dc57de7f7d2ed89d480b5653e5f6a32f2c ed313489badef16d700f5a3be50e8fd8f8294bc8 Author: Lachlan McIlroy Date: Fri Nov 28 15:23:52 2008 +1100 Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 commit cc09c0dc57de7f7d2ed89d480b5653e5f6a32f2c Author: Dave Chinner Date: Mon Nov 17 17:37:10 2008 +1100 [XFS] Fix double free of log tickets When an I/O error occurs during an intermediate commit on a rolling transaction, xfs_trans_commit() will free the transaction structure and the related ticket. However, the duplicate transaction that gets used as the transaction continues still contains a pointer to the ticket. Hence when the duplicate transaction is cancelled and freed, we free the ticket a second time. Add reference counting to the ticket so that we hold an extra reference to the ticket over the transaction commit. We drop the extra reference once we have checked that the transaction commit did not return an error, thus avoiding a double free on commit error. Credit to Nick Piggin for tripping over the problem. SGI-PV: 989741 Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 6307091fe69ae74747298bdcaf43119ad67bda3a Author: Dave Chinner Date: Mon Nov 10 17:13:23 2008 +1100 [XFS] Avoid using inodes that haven't been completely initialised The radix tree walks in xfs_sync_inodes_ag and xfs_qm_dqrele_all_inodes() can find inodes that are still undergoing initialisation. Avoid them by checking for the the XFS_INEW() flag once we have a reference on the inode. This flag is cleared once the inode is properly initialised. SGI-PV: 987246 Signed-off-by: Dave Chinner Signed-off-by: Lachlan McIlroy commit cb4f0d1d4229f609f43c68acec69c7618ed72397 Author: Dave Chinner Date: Mon Nov 10 17:11:18 2008 +1100 [XFS] fix uninitialised variable bug in dquot release gcc on ARM warns about an using an uninitialised variable in xfs_qm_dqrele_all_inodes(). This is a real bug, but gcc on x86_64 is not reporting this warning so it went unnoticed. Fix the bug by bring the inode radix tree walk code up to date with xfs_sync_inodes_ag(). SGI-PV: 987246 Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit d44dab8d1cde8aeba1faf44a7654f90800feb7fc Author: Stephen Rothwell Date: Mon Nov 10 17:06:05 2008 +1100 fs: xfs needs inode_wait to be exported Since wait_on_inode() references it. Signed-off-by: Stephen Rothwell Reviewed-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 644c3567d16b7e53cf52ae98c4150d601c9eacfe Author: Dave Chinner Date: Mon Nov 10 16:50:24 2008 +1100 [XFS] handle memory allocation failures during log initialisation When there is no memory left in the system, xfs_buf_get_noaddr() can fail. If this happens at mount time during xlog_alloc_log() we fail to catch the error and oops. Catch the error from xfs_buf_get_noaddr(), and allow other memory allocations to fail and catch those errors too. Report the error to the console and fail the mount with ENOMEM. Tested by manually injecting errors into xfs_buf_get_noaddr() and xlog_alloc_log(). Version 2: o remove unnecessary casts of the returned pointer from kmem_zalloc() SGI-PV: 987246 Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit dcd7b4e5c0649b1d2219399529b20de1df517e55 Merge: 75fa67706cce5272bcfc51ed646f2da21f3bdb6e 91b777125175077fb74025608dba87f100586c62 Author: Niv Sardi Date: Fri Nov 7 15:07:12 2008 +1100 Merge branch 'master' of git://oss.sgi.com:8090/xfs/linux-2.6 commit 91b777125175077fb74025608dba87f100586c62 Author: David Howells Date: Fri Oct 31 15:50:04 2008 +1100 CRED: Wrap task credential accesses in the XFS filesystem Wrap access to task credentials so that they can be separated more easily from the task_struct during the introduction of COW creds. Change most current->(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id(). Change some task->e?[ug]id to task_e?[ug]id(). In some places it makes more sense to use RCU directly rather than a convenient wrapper; these will be addressed by later patches. Signed-off-by: David Howells Reviewed-by: James Morris Acked-by: Serge Hallyn commit 6bfb3d065f4c498c17a3a07f3dc08cedff53aff4 Author: David Chinner Date: Thu Oct 30 18:32:43 2008 +1100 [XFS] Fix race when looking up reclaimable inodes If we get a race looking up a reclaimable inode, we can end up with the winner proceeding to use the inode before it has been completely re-initialised. This is a Bad Thing. Fix the race by checking whether we are still initialising the inod eonce we have a reference to it, and if so wait for the initialisation to complete before continuing. While there, fix a leaked reference count in the same code when encountering an unlinked inode and we are not doing a lookup for a create operation. SGI-PV: 987246 SGI-Modid: xfs-linux-melb:xfs-kern:32429a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy commit e0b8e8b65d578f5d5538465dff8392cf02e1cc5d Author: Tim Shimmin Date: Thu Oct 30 18:30:48 2008 +1100 [XFS] remove restricted chown parameter from xfs linux On Linux all filesystems are supposed to be operating under Posix' restricted chown. Restricted chown means it restricts chown to the owner unless you have CAP_FOWNER. NOTE: that 2 files outside of fs/xfs have been modified too for this change. Reviewed-by: Dave Chinner SGI-PV: 988919 SGI-Modid: xfs-linux-melb:xfs-kern:32413a Signed-off-by: Tim Shimmin Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy commit f3f0d7b026ae34d6ed5ae67cd4dd5909f9cd70a5 Author: Tim Shimmin Date: Thu Oct 30 18:30:09 2008 +1100 [XFS] remove restricted chown parameter from xfs linux On Linux all filesystems are supposed to be operating under Posix' restricted chown. Restricted chown means it restricts chown to the owner unless you have CAP_FOWNER. NOTE: that 2 files outside of fs/xfs have been modified too for this change. Reviewed-by: Dave Chinner SGI-PV: 988919 SGI-Modid: 2.6.x-xfs-melb:linux:32413b Signed-off-by: Tim Shimmin Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy commit ea5a3dc8356bf1cf27bab9a5a0da5dfbbb82013d Author: Christoph Hellwig Date: Thu Oct 30 18:27:48 2008 +1100 [XFS] kill sys_cred capable_cred has been unused for a while so we can kill it and sys_cred. That also means the cred argument to xfs_setattr and xfs_change_file_space can be removed now. SGI-PV: 988918 SGI-Modid: xfs-linux-melb:xfs-kern:32412a Signed-off-by: Christoph Hellwig Signed-off-by: Tim Shimmin Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy commit 7ee49acfe54883f16d28d9486b789431a5804d18 Author: David Chinner Date: Thu Oct 30 18:26:51 2008 +1100 [XFS] correctly select first log item to push Under heavy metadata load we are seeing log hangs. The AIL has items in it ready to be pushed, and they are within the push target window. However, we are not pushing them when the last pushed LSN is less than the LSN of the first log item on the AIL. This is a regression introduced by the AIL push cursor modifications. SGI-PV: 987246 SGI-Modid: xfs-linux-melb:xfs-kern:32409a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Tim Shimmin commit 9ed0451ee0a13469f7b38e4ced8974036f6d114f Author: Christoph Hellwig Date: Thu Oct 30 18:26:04 2008 +1100 [XFS] free partially initialized inodes using destroy_inode To make sure we free the security data inodes need to be freed using the proper VFS helper (which we also need to export for this). We mark these inodes bad so we can skip the flush path for them. SGI-PV: 987246 SGI-Modid: xfs-linux-melb:xfs-kern:32398a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: David Chinner commit 087e3b0460c367d0f4a5b71d7b013968ae23b588 Author: Christoph Hellwig Date: Thu Oct 30 18:24:37 2008 +1100 Inode: export symbol destroy_inode To make sure we free the security data inodes need to be freed using the proper VFS helper (which we also need to export for this). We mark these inodes bad so we can skip the flush path for them. Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: David Chinner commit c679eef0520eb3c2c731fce505e61b8ef9469aac Author: Christoph Hellwig Date: Thu Oct 30 18:04:13 2008 +1100 [XFS] stop using xfs_itobp in xfs_bulkstat xfs_bulkstat only wants the dinode, offset and buffer from a given inode number. Instead of using xfs_itobp on a fake inode which is complicated and currently leads to leaks of the security data just use xfs_inotobp which is designed to do exactly the kind of lookup xfs_bulkstat wants. The only thing that's missing in xfs_inotobp is a flags paramter that let's us pass down XFS_IMAP_BULKSTAT, but that can easily added. SGI-PV: 987246 SGI-Modid: xfs-linux-melb:xfs-kern:32397a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: David Chinner commit 455486b9ccdd0a1d7432a03302f549b1c917c181 Author: David Chinner Date: Thu Oct 30 18:03:14 2008 +1100 [XFS] avoid all reclaimable inodes in xfs_sync_inodes_ag If we are syncing data in xfs_sync_inodes_ag(), the VFS inode must still be referencable as the dirty data state is carried on the VFS inode. hence if we can't get a reference via igrab(), the inode must be in reclaim which implies that it has no dirty data attached. Leave such inodes to the reclaim code to flush the dirty inode state to disk and so avoid attempting to access the VFS inode when it may not exist in xfs_sync_inodes_ag(). Version 4: o don't reference linux inode until after igrab() succeeds Version 3: o converted unlock/rele to an xfs_iput() call. Version 2: o change igrab logic to be more linear o remove initial reclaimable inode check now that we are using igrab() failure to find reclaimable inodes o assert that igrab failure occurs only on reclaimable inodes o clean up inode locking - only grab the iolock if we are doing a SYNC_DELWRI call and we have a dirty inode. SGI-PV: 987246 SGI-Modid: xfs-linux-melb:xfs-kern:32391a Signed-off-by: David Chinner Signed-off-by: Christoph Hellwig Signed-off-by: Peter Leckie Signed-off-by: Lachlan McIlroy commit 56e73ec47d749047f441e6b9d60d964535d31c3b Author: David Chinner Date: Thu Oct 30 17:55:27 2008 +1100 [XFS] Can't lock inodes in radix tree preload region When we are inside a radix tree preload region, we cannot sleep. Recently we moved the inode locking inside the preload region for the inode radix tree. Fix that, and fix a missed unlock in another error path in the same code at the same time. SGI-PV: 987246 SGI-Modid: xfs-linux-melb:xfs-kern:32385a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit 2b7035fd7473c799ca3372092d72c768c7db329d Author: Christoph Hellwig Date: Thu Oct 30 17:55:18 2008 +1100 [XFS] Trivial xfs_remove comment fixup The dp to ip comment should be for the unconditional xfs_droplink call, and the "." link obviously only exists for directories, so it should be in the is_dir conditional. SGI-PV: 987246 SGI-Modid: xfs-linux-melb:xfs-kern:32374a Signed-off-by: Christoph Hellwig Signed-off-by: Donald Douwsma Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy commit 1ec7944beb6f3c29f1e58a66422130133727e9e1 Author: Christoph Hellwig Date: Thu Oct 30 17:55:08 2008 +1100 [XFS] fix biosize option iosizelog shouldn't be the same as iosize but the logarithm of it. Then again the current biosize option doesn't make much sense to me as it doesn't set the preferred I/O size as mentioned in the comment next to it but rather the allocation size and thus is identical to the allocsize option (except for the missing logarithm). It's also not documented in Documentation/filesystems/xfs.txt or the mount manpage. SGI-PV: 987246 SGI-Modid: xfs-linux-melb:xfs-kern:32373a Signed-off-by: Christoph Hellwig Signed-off-by: Donald Douwsma Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy commit 469fc23d5dd172665c69099db776c39bb1b70f92 Author: Christoph Hellwig Date: Thu Oct 30 17:54:57 2008 +1100 [XFS] fix the noquota mount option Noquota should clear all mount options, and not just user and group quota. Probably doesn't matter very much in real life. SGI-PV: 987246 SGI-Modid: xfs-linux-melb:xfs-kern:32372a Signed-off-by: Christoph Hellwig Signed-off-by: Donald Douwsma Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy commit 9d565ffa33d574c2a22442f9d95ca2bd0be7cc42 Author: Christoph Hellwig Date: Thu Oct 30 17:53:24 2008 +1100 [XFS] kill struct xfs_mount_args No need to parse the mount option into a structure before applying it to struct xfs_mount. The content of xfs_start_flags gets merged into xfs_parseargs. Calls inbetween don't care and can use mount members instead of the args struct. This patch uncovered that the mount option for shared filesystems wasn't ever exposed on Linux. The code to handle it is #if 0'ed in this patch pending a decision on this feature. I'll send a writeup about it to the list soon. SGI-PV: 987246 SGI-Modid: xfs-linux-melb:xfs-kern:32371a Signed-off-by: Christoph Hellwig Signed-off-by: Donald Douwsma Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy commit 5a792c4579af8466246408e38fd4eff45d8493b8 Author: David Chinner Date: Thu Oct 30 17:40:09 2008 +1100 [XFS] XFS: Check for valid transaction headers in recovery When we are about to add a new item to a transaction in recovery, we need to check that it is valid first. Currently we just assert that header magic number matches, but in production systems that is not present and we add a corrupted transaction to the list to be processed. This results in a kernel oops later when processing the corrupted transaction. Instead, if we detect a corrupted transaction, abort recovery and leave the user to clean up the mess that has occurred. SGI-PV: 988145 SGI-Modid: xfs-linux-melb:xfs-kern:32356a Signed-off-by: David Chinner Signed-off-by: Tim Shimmin Signed-off-by: Eric Sandeen Signed-off-by: Lachlan McIlroy commit 783a2f656f9674c31d4019708a94af93fa1d1c22 Author: David Chinner Date: Thu Oct 30 17:39:58 2008 +1100 [XFS] Finish removing the mount pointer from the AIL API Change all the remaining AIL API functions that are passed struct xfs_mount pointers to pass pointers directly to the struct xfs_ail being used. With this conversion, all external access to the AIL is via the struct xfs_ail. Hence the operation and referencing of the AIL is almost entirely independent of the xfs_mount that is using it - it is now much more tightly tied to the log and the items it is tracking in the log than it is tied to the xfs_mount. SGI-PV: 988143 SGI-Modid: xfs-linux-melb:xfs-kern:32353a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit fc1829f34d30899701dfd5890030d39e13e1f47d Author: David Chinner Date: Thu Oct 30 17:39:46 2008 +1100 [XFS] Add ail pointer into log items Add an xfs_ail pointer to log items so that the log items can reference the AIL directly during callbacks without needed a struct xfs_mount. SGI-PV: 988143 SGI-Modid: xfs-linux-melb:xfs-kern:32352a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit a9c21c1b9deaced836034e77fe25fe0b55c21f02 Author: David Chinner Date: Thu Oct 30 17:39:35 2008 +1100 [XFS] Given the log a pointer to the AIL When we need to go from the log to the AIL, we have to go via the xfs_mount. Add a xfs_ail pointer to the log so we can go directly to the AIL associated with the log. SGI-PV: 988143 SGI-Modid: xfs-linux-melb:xfs-kern:32351a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit c7e8f268278a292d3823b4352182fa7755a71410 Author: David Chinner Date: Thu Oct 30 17:39:23 2008 +1100 [XFS] Move the AIL lock into the struct xfs_ail Bring the ail lock inside the struct xfs_ail. This means the AIL can be entirely manipulated via the struct xfs_ail rather than needing both the struct xfs_mount and the struct xfs_ail. SGI-PV: 988143 SGI-Modid: xfs-linux-melb:xfs-kern:32350a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit 7b2e2a31f5c23b5f028af8c895137b4c512cc1c8 Author: David Chinner Date: Thu Oct 30 17:39:12 2008 +1100 [XFS] Allow 64 bit machines to avoid the AIL lock during flushes When copying lsn's from the log item to the inode or dquot flush lsn, we currently grab the AIL lock. We do this because the LSN is a 64 bit quantity and it needs to be read atomically. The lock is used to guarantee atomicity for 32 bit platforms. Make the LSN copying a small function, and make the function used conditional on BITS_PER_LONG so that 64 bit machines don't need to take the AIL lock in these places. SGI-PV: 988143 SGI-Modid: xfs-linux-melb:xfs-kern:32349a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit 5b00f14fbd60d42441f78c0e414a539cbfba5cb9 Author: David Chinner Date: Thu Oct 30 17:39:00 2008 +1100 [XFS] move the AIl traversal over to a consistent interface With the new cursor interface, it makes sense to make all the traversing code use the cursor interface and make the old one go away. This means more of the AIL interfacing is done by passing struct xfs_ail pointers around the place instead of struct xfs_mount pointers. We can replace the use of xfs_trans_first_ail() in xfs_log_need_covered() as it is only checking if the AIL is empty. We can do that with a call to xfs_trans_ail_tail() instead, where a zero LSN returned indicates and empty AIL... SGI-PV: 988143 SGI-Modid: xfs-linux-melb:xfs-kern:32348a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit 27d8d5fe0ef9daeaafbdd32b14b32a2211930062 Author: David Chinner Date: Thu Oct 30 17:38:39 2008 +1100 [XFS] Use a cursor for AIL traversal. To replace the current generation number ensuring sanity of the AIL traversal, replace it with an external cursor that is linked to the AIL. Basically, we store the next item in the cursor whenever we want to drop the AIL lock to do something to the current item. When we regain the lock. the current item may already be free, so we can't reference it, but the next item in the traversal is already held in the cursor. When we move or delete an object, we search all the active cursors and if there is an item match we clear the cursor(s) that point to the object. This forces the traversal to restart transparently. We don't invalidate the cursor on insert because the cursor still points to a valid item. If the intem is inserted between the current item and the cursor it does not matter; the traversal is considered to be past the insertion point so it will be picked up in the next traversal. Hence traversal restarts pretty much disappear altogether with this method of traversal, which should substantially reduce the overhead of pushing on a busy AIL. Version 2 o add restart logic o comment cursor interface o minor cleanups SGI-PV: 988143 SGI-Modid: xfs-linux-melb:xfs-kern:32347a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit 82fa9012458d867936d7bf130e6e14bdebc6873c Author: David Chinner Date: Thu Oct 30 17:38:26 2008 +1100 [XFS] Allocate the struct xfs_ail Rather than embedding the struct xfs_ail in the struct xfs_mount, allocate it during AIL initialisation. Add a back pointer to the struct xfs_ail so that we can pass around the xfs_ail and still be able to access the xfs_mount if need be. This is th first step involved in isolating the AIL implementation from the surrounding filesystem code. SGI-PV: 988143 SGI-Modid: xfs-linux-melb:xfs-kern:32346a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit a7444053fb3ebd3d905e3c7a7bd5ea80a54b083a Author: David Chinner Date: Thu Oct 30 17:38:12 2008 +1100 [XFS] Account for allocated blocks when expanding directories When we create a directory, we reserve a number of blocks for the maximum possible expansion of of the directory due to various btree splits, freespace allocation, etc. Unfortunately, each allocation is not reflected in the total number of blocks still available to the transaction, so the maximal reservation is used over and over again. This leads to problems where an allocation group has only enough blocks for *some* of the allocations required for the directory modification. After the first N allocations, the remaining blocks in the allocation group drops below the total reservation, and subsequent allocations fail because the allocator will not allow the allocation to proceed if the AG does not have the enough blocks available for the entire allocation total. This results in an ENOSPC occurring after an allocation has already occurred. This results in aborting the directory operation (leaving the directory in an inconsistent state) and cancelling a dirty transaction, which results in a filesystem shutdown. Avoid the problem by reflecting the number of blocks allocated in any directory expansion in the total number of blocks available to the modification in progress. This prevents a directory modification from being aborted part way through with an ENOSPC. SGI-PV: 988144 SGI-Modid: xfs-linux-melb:xfs-kern:32340a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy commit 8c38ab032094ff1d903c79db689607b1ebae13ca Author: David Chinner Date: Thu Oct 30 17:38:00 2008 +1100 [XFS] Prevent looping in xfs_sync_inodes_ag If the last block of the AG has inodes in it and the AG is an exactly power-of-2 size then the last inode in the AG points to the last block in the AG. If we try to find the next inode in the AG by adding one to the inode number, we increment the inode number past the size of the AG. The result is that the macro XFS_INO_TO_AGINO() will strip the AG portion of the inode number and return an inode number of zero. That is, instead of terminating the lookup loop because we hit the inode number went outside the valid range for the AG, the search index returns to zero and we start traversing the radix tree from the start again. This results in an endless loop in xfs_sync_inodes_ag(). Fix it be detecting if the new search index decreases as a result of incrementing the current inode number. That indicate an overflow and hence that we have finished processing the AG so we can terminate the loop. SGI-PV: 988142 SGI-Modid: xfs-linux-melb:xfs-kern:32335a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit 116545130cbc5214523c2f994a11c81ef9eb9186 Author: David Chinner Date: Thu Oct 30 17:37:49 2008 +1100 [XFS] kill deleted inodes list Now that the deleted inodes list is unused, kill it. This also removes the i_reclaim list head from the xfs_inode, shrinking it by two pointers. SGI-PV: 988142 SGI-Modid: xfs-linux-melb:xfs-kern:32334a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit 7a3be02baef7bdec43965103441bde5de4dd8601 Author: David Chinner Date: Thu Oct 30 17:37:37 2008 +1100 [XFS] use the inode radix tree for reclaiming inodes Use the reclaim tag to walk the radix tree and find the inodes under reclaim. This was the only user of the deleted inode list. SGI-PV: 988142 SGI-Modid: xfs-linux-melb:xfs-kern:32333a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit 396beb85311689e38634926058d9a3bb0576ca8a Author: David Chinner Date: Thu Oct 30 17:37:26 2008 +1100 [XFS] mark inodes for reclaim via a tag in the inode radix tree Prepare for removing the deleted inode list by marking inodes for reclaim in the inode radix trees so that we can use the radix trees to find reclaimable inodes. SGI-PV: 988142 SGI-Modid: xfs-linux-melb:xfs-kern:32331a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit 1dc3318ae1c1cc11f9fb8279a806de448e2b90e8 Author: David Chinner Date: Thu Oct 30 17:37:15 2008 +1100 [XFS] rename inode reclaim functions The function names xfs_finish_reclaim and xfs_finish_reclaim_all are not very descriptive of what they are reclaiming. Rename to xfs_reclaim_inode[s] to match the xfs_sync_inodes() function. SGI-PV: 988142 SGI-Modid: xfs-linux-melb:xfs-kern:32330a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit fce08f2f3bd0d08feeb4cea70e44aa3471d9bb4c Author: David Chinner Date: Thu Oct 30 17:37:03 2008 +1100 [XFS] move inode reclaim functions to xfs_sync.c Background inode reclaim is run by the xfssyncd. Move the reclaim worker functions to be close to the sync code as the are very similar in structure and are both run from the same background thread. SGI-PV: 988142 SGI-Modid: xfs-linux-melb:xfs-kern:32329a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit 493dca6178cf4a6ae2a16c602d6cb455bb7d31bd Author: Lachlan McIlroy Date: Thu Oct 30 17:36:52 2008 +1100 [XFS] Fix build warning - xfs_fs_alloc_inode() needs a return statement SGI-PV: 988141 SGI-Modid: xfs-linux-melb:xfs-kern:32325a Signed-off-by: Lachlan McIlroy commit 99fa8cb3c580d4445fe8fc239454e8f37a3b6847 Author: David Chinner Date: Thu Oct 30 17:36:40 2008 +1100 [XFS] Prevent use-after-free caused by synchronous inode reclaim With the combined linux and XFS inode, we need to ensure that the combined structure is not freed before the generic code is finished with the inode. As it turns out, there is a case where the XFS inode is freed before the linux inode - when xfs_reclaim() is called from ->clear_inode() on a clean inode, the xfs inode is freed during that call. The generic code references the inode after the ->clear_inode() call, so this is a use after free situation. Fix the problem by moving the xfs_reclaim() call to ->destroy_inode() instead of in ->clear_inode(). This ensures the combined inode structure is not freed until after the generic code has finished with it. SGI-PV: 988141 SGI-Modid: xfs-linux-melb:xfs-kern:32324a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit bf904248a2adb3f3be4eb4fb1837ce3bb28cca76 Author: David Chinner Date: Thu Oct 30 17:36:14 2008 +1100 [XFS] Combine the XFS and Linux inodes To avoid issues with different lifecycles of XFS and Linux inodes, embedd the linux inode inside the XFS inode. This means that the linux inode has the same lifecycle as the XFS inode, even when it has been released by the OS. XFS inodes don't live much longer than this (a short stint in reclaim at most), so there isn't significant memory usage penalties here. Version 3 o kill xfs_icount() Version 2 o remove unused commented out code from xfs_iget(). o kill useless cast in VFS_I() SGI-PV: 988141 SGI-Modid: xfs-linux-melb:xfs-kern:32323a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit 8290c35f87304a6b73d4fd17b03580b4f7425de8 Author: David Chinner Date: Thu Oct 30 17:35:24 2008 +1100 Inode: Allow external list initialisation To allow XFS to combine the XFS and linux inodes into a single structure, we need to drive inode lookup from the XFS inode cache, not the generic inode cache. This means that we need initialise a struct inode from a context outside alloc_inode() as it is no longer used by XFS. After inode allocation and initialisation, we need to add the inode to the superblock list, the in-use list, hash it and do some accounting. This all needs to be done with the inode_lock held and there are already several places in fs/inode.c that do this list manipulation. Factor out the common code, add a locking wrapper and export the function so ti can be called from XFS. Signed-off-by: Dave Chinner Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 2cb1599f9b2ecdd7a9e59feeee647eb258966839 Author: David Chinner Date: Thu Oct 30 17:32:23 2008 +1100 Inode: Allow external initialisers To allow XFS to combine the XFS and linux inodes into a single structure, we need to drive inode lookup from the XFS inode cache, not the generic inode cache. This means that we need initialise a struct inode from a context outside alloc_inode() as it is no longer used by XFS. Factor and export the struct inode initialisation code from alloc_inode() to inode_init_always() as a counterpart to inode_init_once(). i.e. we have to call this init function for each inode instantiation (always), as opposed inode_init_once() which is only called on slab object instantiation (once). Signed-off-by: Dave Chinner Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 94b97e39b0c983e86f0028c456dcf213abc722a0 Author: David Chinner Date: Thu Oct 30 17:21:30 2008 +1100 [XFS] Never call mark_inode_dirty_sync() directly Once the Linux inode and the XFS inode are combined, we cannot rely on just check if the linux inode exists as a method of determining if it is valid or not. Hence we should always call xfs_mark_inode_dirty_sync() instead as it does the correct checks to determine if the liinux inode is in a valid state or not. SGI-PV: 988141 SGI-Modid: xfs-linux-melb:xfs-kern:32318a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit 6441e549157b749bae003cce70b4c8b62e4801fa Author: David Chinner Date: Thu Oct 30 17:21:19 2008 +1100 [XFS] factor xfs_iget_core() into hit and miss cases There are really two cases in xfs_iget_core(). The first is the cache hit case, the second is the miss case. They share very little code, and hence can easily be factored out into separate functions. This makes the code much easier to understand and subsequently modify. SGI-PV: 988141 SGI-Modid: xfs-linux-melb:xfs-kern:32317a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit 3471394ba56f44761ce1c300f139478dbfb49d4a Author: Christoph Hellwig Date: Thu Oct 30 17:21:10 2008 +1100 [XFS] fix instant oops with tracing enabled We can only read inode->i_count if the inode is actually there and not a NULL pointer. This was introduced in one of the recent sync patches. SGI-PV: 988255 SGI-Modid: xfs-linux-melb:xfs-kern:32315a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 76bf105cb16da6c847a13a3c77dc962ba1081713 Author: David Chinner Date: Thu Oct 30 17:16:21 2008 +1100 [XFS] Move remaining quiesce code. With all the other filesystem sync code it in xfs_sync.c including the data quiesce code, it makes sense to move the remaining quiesce code to the same place. SGI-PV: 988140 SGI-Modid: xfs-linux-melb:xfs-kern:32312a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit a4e4c4f4a8f9376158f8181a75285091f52a79e3 Author: David Chinner Date: Thu Oct 30 17:16:11 2008 +1100 [XFS] Kill xfs_sync() There are no more callers to xfs_sync() now, so remove the function altogther. SGI-PV: 988140 SGI-Modid: xfs-linux-melb:xfs-kern:32311a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit cb56a4b995d44b7990ca3acd18db571eedd0649f Author: David Chinner Date: Thu Oct 30 17:16:00 2008 +1100 [XFS] Kill SYNC_CLOSE SYNC_CLOSE is only ever used and checked in conjunction with SYNC_WAIT, and this only done in one spot. The only thing this does is make XFS_bflush() calls to the data buftargs. This will happen very shortly afterwards the xfs_sync() call anyway in the unmount path via the xfs_close_devices(), so this code is redundant and can be removed. That only user of SYNC_CLOSE is now gone, so kill the flag completely. SGI-PV: 988140 SGI-Modid: xfs-linux-melb:xfs-kern:32310a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit e9f1c6ee12955fd8657f6f0f9a3d09112b1f1fdd Author: David Chinner Date: Thu Oct 30 17:15:50 2008 +1100 [XFS] make SYNC_DELWRI no longer use xfs_sync Continue to de-multiplex xfs_sync be replacing all SYNC_DELWRI callers with direct calls functions that do the work. Isolate the data quiesce case to a function in xfs_sync.c. Isolate the FSDATA case with explicit calls to xfs_sync_fsdata(). Version 2: o Push delwri related log forces into xfs_sync_inodes(). SGI-PV: 988140 SGI-Modid: xfs-linux-melb:xfs-kern:32309a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit be97d9d5577f6c8a36588e2f262c772c5422b128 Author: David Chinner Date: Thu Oct 30 17:15:38 2008 +1100 [XFS] make SYNC_ATTR no longer use xfs_sync Continue to de-multiplex xfs_sync be replacing all SYNC_ATTR callers with direct calls xfs_sync_inodes(). Add an assert into xfs_sync() to ensure we caught all the SYNC_ATTR callers. SGI-PV: 988140 SGI-Modid: xfs-linux-melb:xfs-kern:32308a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit aacaa880bfac8fecd44b279a49688643890358f5 Author: David Chinner Date: Thu Oct 30 17:15:29 2008 +1100 [XFS] xfssyncd: don't call xfs_sync Start de-multiplexing xfs_sync() by making xfs_sync_worker() call the specific sync functions it needs. This is only a small, unique subset of the entire xfs_sync() code so is easier to follow. SGI-PV: 988140 SGI-Modid: xfs-linux-melb:xfs-kern:32307a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit dfd837a9eb79de4e50323a6f4e1ad8138d806cb7 Author: David Chinner Date: Thu Oct 30 17:15:21 2008 +1100 [XFS] kill xfs_syncsub Now that the only caller is xfs_sync(), merge the two together as it makes no sense to keep them separate. SGI-PV: 988140 SGI-Modid: xfs-linux-melb:xfs-kern:32306a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit 2030b5aba8a4bcaca5aca85968514fa58207d3bd Author: David Chinner Date: Thu Oct 30 17:15:12 2008 +1100 [XFS] use xfs_sync_inodes rather than xfs_syncsub Kill the unused arg in xfs_syncsub() and xfs_sync_inodes(). For callers of xfs_syncsub() that only want to flush inodes, replace xfs_syncsub() with direct calls to xfs_sync_inodes() as that is all that is being done with the specific flags being passed in. SGI-PV: 988140 SGI-Modid: xfs-linux-melb:xfs-kern:32305a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit bc60a99323b3ec628273b5fa998285c87d464ca6 Author: David Chinner Date: Thu Oct 30 17:15:03 2008 +1100 [XFS] Use struct inodes instead of vnodes to kill vn_grab With the sync code relocated to the linux-2.6 directory we can use struct inodes directly. If we do the same thing for the quota release code, we can remove vn_grab altogether. While here, convert the VN_BAD() checks to is_bad_inode() so we can remove vnodes entirely from this code. SGI-PV: 988140 SGI-Modid: xfs-linux-melb:xfs-kern:32304a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit 2af75df7be7ca86965bf73766f827575d1c26fbd Author: Christoph Hellwig Date: Thu Oct 30 17:14:53 2008 +1100 [XFS] split out two helpers from xfs_syncsub Split out two helpers from xfs_syncsub for the dummy log commit and the superblock writeout. SGI-PV: 988140 SGI-Modid: xfs-linux-melb:xfs-kern:32303a Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy commit 4e8938feba770b583fb13d249c17943961731a3e Author: Christoph Hellwig Date: Thu Oct 30 17:14:43 2008 +1100 [XFS] Move XFS_BMAP_SANITY_CHECK out of line. Move the XFS_BMAP_SANITY_CHECK macro out of line and make it a properly typed function. Also pass the xfs_buf for the btree block instead of just the btree block header, as we will need some additional information for it to implement CRC checking of btree blocks. SGI-PV: 988146 SGI-Modid: xfs-linux-melb:xfs-kern:32301a Signed-off-by: Christoph Hellwig Signed-off-by: Donald Douwsma Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy commit 7cc95a821df8f09a5d37a923cf8c3a7c3ee00c29 Author: Christoph Hellwig Date: Thu Oct 30 17:14:34 2008 +1100 [XFS] Always use struct xfs_btree_block instead of short / longform structures. Always use the generic xfs_btree_block type instead of the short / long structures. Add XFS_BTREE_SBLOCK_LEN / XFS_BTREE_LBLOCK_LEN defines for the length of a short / long form block. The rationale for this is that we will grow more btree block header variants to support CRCs and other RAS information, and always accessing them through the same datatype with unions for the short / long form pointers makes implementing this much easier. SGI-PV: 988146 SGI-Modid: xfs-linux-melb:xfs-kern:32300a Signed-off-by: Christoph Hellwig Signed-off-by: Donald Douwsma Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy commit 136341b41ad4883bd668120f727a52c42331fe8a Author: Christoph Hellwig Date: Thu Oct 30 17:11:40 2008 +1100 [XFS] cleanup btree record / key / ptr addressing macros. Replace the generic record / key / ptr addressing macros that use cpp token pasting with simpler macros that do the job for just one given btree type. The new macros lose the cur argument and thus can be used outside the core btree code, but also gain an xfs_mount * argument to allow for checking the CRC flag in the near future. Note that many of these macros aren't actually used in the kernel code, but only in userspace (mostly in xfs_repair). SGI-PV: 988146 SGI-Modid: xfs-linux-melb:xfs-kern:32295a Signed-off-by: Christoph Hellwig Signed-off-by: Donald Douwsma Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy commit 6c7699c047c50403149ad91331dd39de47dea070 Author: David Chinner Date: Thu Oct 30 17:11:29 2008 +1100 [XFS] remove the mount inode list Now we've removed all users of the mount inode list, we can kill it. This reduces the size of the xfs_inode by 2 pointers. SGI-PV: 988139 SGI-Modid: xfs-linux-melb:xfs-kern:32293a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit 60197e8df364df326dcbb987519f367ad0ee1a11 Author: Christoph Hellwig Date: Thu Oct 30 17:11:19 2008 +1100 [XFS] Cleanup maxrecs calculation. Clean up the way the maximum and minimum records for the btree blocks are calculated. For the alloc and inobt btrees all the values are pre-calculated in xfs_mount_common, and we switch the current loop around the ugly generic macros that use cpp token pasting to generate type names to two small helpers in normal C code. For the bmbt and bmdr trees these helpers also exist, but can be called during runtime, too. Here we also kill various macros dealing with them and inline the logic into the get_minrecs / get_maxrecs / get_dmaxrecs methods in xfs_bmap_btree.c. Note that all these new helpers take an xfs_mount * argument which will be needed to determine the size of a btree block once we add support for extended btree blocks with CRCs and other RAS information. SGI-PV: 988146 SGI-Modid: xfs-linux-melb:xfs-kern:32292a Signed-off-by: Christoph Hellwig Signed-off-by: Donald Douwsma Signed-off-by: Lachlan McIlroy commit 5b4d89ae0f5ae45c7fa1dfc616fd2bb8634bb7b7 Author: David Chinner Date: Thu Oct 30 17:08:03 2008 +1100 [XFS] Traverse inode trees when releasing dquots Make releasing all inode dquots traverse the per-ag inode radix trees rather than the mount inode list. This removes another user of the mount inode list. Version 3 o fix comment relating to avoiding trying to release the quota inodes and those in reclaim. Version 2 o add comment explaining use of gang lookups for a single inode o use IRELE, not VN_RELE o move check for ag initialisation to caller. SGI-PV: 988139 SGI-Modid: xfs-linux-melb:xfs-kern:32291a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit 683a897080a053733778b36398186cb1b22c377f Author: David Chinner Date: Thu Oct 30 17:07:29 2008 +1100 [XFS] Use the inode tree for finding dirty inodes Update xfs_sync_inodes to walk the inode radix tree cache to find dirty inodes. This removes a huge bunch of nasty, messy code for traversing the mount inode list safely and removes another user of the mount inode list. Version 3 o rediff against new linux-2.6/xfs_sync.c code Version 2 o add comment explaining use of gang lookups for a single inode o use IRELE, not VN_RELE o move check for ag initialisation to caller. SGI-PV: 988139 SGI-Modid: xfs-linux-melb:xfs-kern:32290a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit 2f8a3ce1c20f20e6494cdb77fed76bc474ca3ca5 Author: David Chinner Date: Thu Oct 30 17:07:20 2008 +1100 [XFS] don't block in xfs_qm_dqflush() during async writeback. Normally dquots are written back via delayed write mechanisms. They are flushed to their backing buffer by xfssyncd, which is then pushed out by either AIL or xfsbufd flushing. The flush from the xfssyncd is supposed to be non-blocking, but xfs_qm_dqflush() always waits for pinned duots, which means that it will block for the length of time it takes to do a synchronous log force. This causes unnecessary extra log I/O to be issued whenever we try to flush a busy dquot. Avoid the log forces and blocking xfssyncd by making xfs_qm_dqflush() pay attention to what type of sync it is doing when it sees a pinned dquot and not waiting when doing non-blocking flushes. SGI-PV: 988147 SGI-Modid: xfs-linux-melb:xfs-kern:32287a Signed-off-by: David Chinner Signed-off-by: Peter Leckie Signed-off-by: Lachlan McIlroy commit 75c68f411b1242c8fdaf731078fdd4e77b14981d Author: David Chinner Date: Thu Oct 30 17:06:28 2008 +1100 [XFS] Remove xfs_iflush_all and clean up xfs_finish_reclaim_all() xfs_iflush_all() walks the m_inodes list to find inodes that need reclaiming. We already have such a list - the m_del_inodes list. Replace xfs_iflush_all() with a call to xfs_finish_reclaim_all() and clean up xfs_finish_reclaim_all() to handle the different flush modes now needed. Originally based on a patch from Christoph Hellwig. Version 3 o rediff against new linux-2.6/xfs_sync.c code Version 2 o revert xfs_syncsub() inode reclaim behaviour back to original code o xfs_quiesce_fs() should use XFS_IFLUSH_DELWRI_ELSE_ASYNC, not XFS_IFLUSH_ASYNC, to prevent change of behaviour. SGI-PV: 988139 SGI-Modid: xfs-linux-melb:xfs-kern:32284a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit a167b17e899a930758506bbc18748078d6fd8c89 Author: David Chinner Date: Thu Oct 30 17:06:18 2008 +1100 [XFS] move xfssyncd code to xfs_sync.c Move all the xfssyncd code to the new xfs_sync.c file. This places it closer to the actual code that it interacts with, rather than just being associated with high level VFS code. SGI-PV: 988139 SGI-Modid: xfs-linux-melb:xfs-kern:32283a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit fe4fa4b8e463fa5848ef9e86ed75d27501d0da1e Author: David Chinner Date: Thu Oct 30 17:06:08 2008 +1100 [XFS] move sync code to its own file The sync code in XFS is spread around several files. While it used to make sense to have such a distribution, the code is about to be cleaned up and so centralising it in one spot as the first step makes sense. SGI-PV: 988139 SGI-Modid: xfs-linux-melb:xfs-kern:32282a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit 34519daae6778d129d56688f75ade27f6011bac9 Author: Barry Naujok Date: Thu Oct 30 17:05:58 2008 +1100 [XFS] Show buffer address with debug hexdump on corruption SGI-PV: 987246 SGI-Modid: xfs-linux-melb:xfs-kern:32233a Signed-off-by: Barry Naujok Signed-off-by: Eric Sandeen Signed-off-by: Lachlan McIlroy commit 89b2839319cb0c0364d55dc6fd6d3838e864ab54 Author: Barry Naujok Date: Thu Oct 30 17:05:49 2008 +1100 [XFS] Check agf_btreeblks is valid when reading in the AGF SGI-PV: 987683 SGI-Modid: xfs-linux-melb:xfs-kern:32232a Signed-off-by: Barry Naujok Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 847fff5ca881670ca8ec617afeb943950f0c804b Author: Barry Naujok Date: Thu Oct 30 17:05:38 2008 +1100 [XFS] Sync up kernel and user-space headers SGI-PV: 986558 SGI-Modid: xfs-linux-melb:xfs-kern:32231a Signed-off-by: Barry Naujok Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit 24ee0e49c9cce23acb1758728cb09e8d2b53bd33 Author: Lachlan McIlroy Date: Thu Oct 30 17:05:26 2008 +1100 [XFS] Make xfs_btree_check_ptr() debug-only code. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32224a Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit d1de802155341ab63e64d37c58c61d6f358bb3ad Author: Peter Leckie Date: Thu Oct 30 17:05:18 2008 +1100 [XFS] Fix build brakage from patch "Clean up dquot pincount code" This is a fix for patch " Clean up dquot pincount code" which introduced a build breakage due to a missing & in xfs_qm_dquot_logitem_pin. SGI-PV: 986789 SGI-Modid: xfs-linux-melb:xfs-kern:32221a Signed-off-by: Peter Leckie Signed-off-by: Donald Douwsma Signed-off-by: Lachlan McIlroy commit bc3048e3cd3806ccfd5b16b1a30e5d6013abbd3d Author: Peter Leckie Date: Thu Oct 30 17:05:04 2008 +1100 [XFS] Clean up dquot pincount code. This is a code cleanup and optimization that removes a per mount point spinlock from the quota code and cleans up the code. The patch changes the pincount from being an int protected by a spinlock to an atomic_t allowing the pincount to be manipulated without holding the spinlock. This cleanup also protects against random wakup's of both the aild and xfssyncd by reevaluating the pincount after been woken. Two latter patches will address the Spurious wakeups. SGI-PV: 986789 SGI-Modid: xfs-linux-melb:xfs-kern:32215a Signed-off-by: Peter Leckie Signed-off-by: Christoph Hellwig Signed-off-by: David Chinner Signed-off-by: Donald Douwsma Signed-off-by: Lachlan McIlroy commit d112f2984592acb774187b3adddc107fb0825500 Author: Lachlan McIlroy Date: Thu Oct 30 16:59:06 2008 +1100 [XFS] Wait for all I/O on truncate to zero file size It's possible to have outstanding xfs_ioend_t's queued when the file size is zero. This can happen in the direct I/O path when a direct I/O write fails due to ENOSPC. In this case the xfs_ioend_t will still be queued (ie xfs_end_io_direct() does not know that the I/O failed so can't force the xfs_ioend_t to be flushed synchronously). When we truncate a file on unlink we don't know to wait for these xfs_ioend_ts and we can have a use-after-free situation if the inode is reclaimed before the xfs_ioend_t is finally processed. As was suggested by Dave Chinner lets wait for all I/Os to complete when truncating the file size to zero. SGI-PV: 981668 SGI-Modid: xfs-linux-melb:xfs-kern:32216a Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit 7f7c39ccb6045cf1fd5e7684a484c445291b44d4 Author: Christoph Hellwig Date: Thu Oct 30 16:58:50 2008 +1100 [XFS] make btree tracing generic Make the existing bmap btree tracing generic so that it applies to all btree types. Some fragments lifted from a patch by Dave Chinner. This adds two files that were missed from the previous btree tracing checkin. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32210a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit 3cc7524c8445e6244b055f3fa338529188c7c260 Author: Christoph Hellwig Date: Thu Oct 30 16:58:41 2008 +1100 [XFS] mark various functions in xfs_btree.c static Lots of functionality in xfs_btree.c isn't needed by callers outside of this file anymore, so mark these functions static. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32209a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit 4a26e66e7728112f0e1cd7eca3bcc430b3a221c9 Author: Christoph Hellwig Date: Thu Oct 30 16:58:32 2008 +1100 [XFS] add keys_inorder and recs_inorder btree methods Add methods to check whether two keys/records are in the righ order. This replaces the xfs_btree_check_key and xfs_btree_check_rec methods. For the callers from xfs_bmap.c just opencode the bmbt-specific asserts. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32208a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit fd6bcc5b63051392ba709a8fd33173b263669e0a Author: Christoph Hellwig Date: Thu Oct 30 16:58:21 2008 +1100 [XFS] kill xfs_bmbt_log_block and xfs_bmbt_log_recs These are equivalent to the xfs_btree_* versions, and the only remaining caller can be switched to the generic one after they are exported. Also remove some now dead infrastructure in xfs_bmap_btree.c. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32207a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit 8cc938fe4237e50bea4aa557ed53b06de2319d49 Author: Christoph Hellwig Date: Thu Oct 30 16:58:11 2008 +1100 [XFS] implement generic xfs_btree_get_rec Not really much reason to make it generic given that it's so small, but this is the last non-method in xfs_alloc_btree.c and xfs_ialloc_btree.c, so it makes the whole btree implementation more structured. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32206a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit 91cca5df9bc85efdabfa645f51d54259ed09f4bf Author: Christoph Hellwig Date: Thu Oct 30 16:58:01 2008 +1100 [XFS] implement generic xfs_btree_delete/delrec Make the btree delete code generic. Based on a patch from David Chinner with lots of changes to follow the original btree implementations more closely. While this loses some of the generic helper routines for inserting/moving/removing records it also solves some of the one off bugs in the original code and makes it easier to verify. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32205a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit d4b3a4b7dd62f2e111d4d0afa9ef3f9b6cd955c0 Author: Christoph Hellwig Date: Thu Oct 30 16:57:51 2008 +1100 [XFS] move xfs_bmbt_killroot to common code xfs_bmbt_killroot is a mostly generic implementation of moving from a real block based root to an inode based root. So move it to xfs_btree.c where it can use all the nice infrastructure there and make it pointer size agnostic The new name for it is xfs_btree_kill_iroot, following the old naming but making it clear we're dealing with the root in inode case here, and to avoid confusion with xfs_btree_new_root which is used for the not inode rooted case. I've also added a comment describing what it does and why it's named the way it is. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32203a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit 4b22a57188d87e873346b73c227607715be96399 Author: Christoph Hellwig Date: Thu Oct 30 16:57:40 2008 +1100 [XFS] implement generic xfs_btree_insert/insrec Make the btree insert code generic. Based on a patch from David Chinner with lots of changes to follow the original btree implementations more closely. While this loses some of the generic helper routines for inserting/moving/removing records it also solves some of the one off bugs in the original code and makes it easier to verify. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32202a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit ea77b0a66e6c910ef265d9af522d6303ea6b3055 Author: Christoph Hellwig Date: Thu Oct 30 16:57:28 2008 +1100 [XFS] move xfs_bmbt_newroot to common code xfs_bmbt_newroot is a mostly generic implementation of moving from an inode root to a real block based root. So move it to xfs_btree.c where it can use all the nice infrastructure there and make it pointer size agnostic The new name for it is xfs_btree_new_iroot, following the old naming but making it clear we're dealing with the root in inode case here, and to avoid confusion with xfs_btree_new_root which is used for the not inode rooted case. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32201a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit 344207ce8474b79be331eb93e6df4cb5bdd48ab2 Author: Christoph Hellwig Date: Thu Oct 30 16:57:16 2008 +1100 [XFS] implement semi-generic xfs_btree_new_root From: Dave Chinner Add a xfs_btree_new_root helper for the alloc and ialloc btrees. The bmap btree needs it's own version and is not converted. [hch: split out from bigger patch and minor adaptions] SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32200a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit f5eb8e7ca58bc1e92436614444006120d21668ba Author: Christoph Hellwig Date: Thu Oct 30 16:57:03 2008 +1100 [XFS] implement generic xfs_btree_split Make the btree split code generic. Based on a patch from David Chinner with lots of changes to follow the original btree implementations more closely. While this loses some of the generic helper routines for inserting/moving/removing records it also solves some of the one off bugs in the original code and makes it easier to verify. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32198a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit 687b890a184fef263ebb773926e1f4aa69240d01 Author: Christoph Hellwig Date: Thu Oct 30 16:56:53 2008 +1100 [XFS] implement generic xfs_btree_lshift Make the btree left shift code generic. Based on a patch from David Chinner with lots of changes to follow the original btree implementations more closely. While this loses some of the generic helper routines for inserting/moving/removing records it also solves some of the one off bugs in the original code and makes it easier to verify. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32197a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit 9eaead51bed957af0070a277d945744a76df0c8b Author: Christoph Hellwig Date: Thu Oct 30 16:56:43 2008 +1100 [XFS] implement generic xfs_btree_rshift Make the btree right shift code generic. Based on a patch from David Chinner with lots of changes to follow the original btree implementations more closely. While this loses some of the generic helper routines for inserting/moving/removing records it also solves some of the one off bugs in the original code and makes it easier to verify. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32196a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit 278d0ca14e889c3932a05d1a68675252a12b3466 Author: Christoph Hellwig Date: Thu Oct 30 16:56:32 2008 +1100 [XFS] implement generic xfs_btree_update From: Dave Chinner The most complicated part here is the lastrec tracking for the alloc btree. Most logic is in the update_lastrec method which has to do some hopefully good enough dirty magic to maintain it. [hch: split out from bigger patch and a rework of the lastrec logic] SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32194a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit 38bb74237d2d94c1aced2ec626d7d0f317e360da Author: Christoph Hellwig Date: Thu Oct 30 16:56:22 2008 +1100 [XFS] implement generic xfs_btree_updkey From: Dave Chinner Note that there are many > 80 char lines introduced due to the xfs_btree_key casts. But the places where this happens is throw-away code once the whole btree code gets merged into a common implementation. The same is true for the temporary xfs_alloc_log_keys define to the new name. All old users will be gone after a few patches. [hch: split out from bigger patch and minor adaptions] SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32193a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit fe033cc848489851f0c7de48f0b1bab5d744ad8a Author: Christoph Hellwig Date: Thu Oct 30 16:56:09 2008 +1100 [XFS] implement generic xfs_btree_lookup From: Dave Chinner [hch: split out from bigger patch and minor adaptions] SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32192a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit 8df4da4a0a642d3a016028c0d922bcb4d5a4a6d7 Author: Christoph Hellwig Date: Thu Oct 30 16:55:58 2008 +1100 [XFS] implement generic xfs_btree_decrement From: Dave Chinner [hch: split out from bigger patch and minor adaptions] SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32191a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit 637aa50f461b8ea6b1e8bf9877b0d13d00085043 Author: Christoph Hellwig Date: Thu Oct 30 16:55:45 2008 +1100 [XFS] implement generic xfs_btree_increment From: Dave Chinner Because this is the first major generic btree routine this patch includes some infrastrucure, first a few routines to deal with a btree block that can be either in short or long form, second xfs_btree_read_buf_block, which is the new central routine to read a btree block given a cursor, and third the new xfs_btree_ptr_addr routine to calculate the address for a given btree pointer record. [hch: split out from bigger patch and minor adaptions] SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32190a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit 65f1eaeac0efc968797f3ac955b85ba3f5d4f9c8 Author: Christoph Hellwig Date: Thu Oct 30 16:55:34 2008 +1100 [XFS] add helpers for addressing entities inside a btree block Add new helpers in xfs_btree.c to find the record, key and block pointer entries inside a btree block. To implement this genericly the ->get_maxrecs methods and two new xfs_btree_ops entries for the key and record sizes are used. Also add a big comment describing how the addressing inside a btree block works. Note that these helpers are unused until users are introduced in the next patches and this patch will thus cause some harmless compiler warnings. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32189a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit ce5e42db421a41b1ad0cfd68c6058566b963e14b Author: Christoph Hellwig Date: Thu Oct 30 16:55:23 2008 +1100 [XFS] add get_maxrecs btree operation Factor xfs_btree_maxrecs into a per-btree operation. The get_maxrecs method is based on a patch from Dave Chinner. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32188a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit 8c4ed633e65d0bd0a25d45aad9b4646e3236cad7 Author: Christoph Hellwig Date: Thu Oct 30 16:55:13 2008 +1100 [XFS] make btree tracing generic Make the existing bmap btree tracing generic so that it applies to all btree types. Some fragments lifted from a patch by Dave Chinner. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32187a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit 854929f05831d3a290a802815ee955b96c740c61 Author: David Chinner Date: Thu Oct 30 16:55:03 2008 +1100 [XFS] add new btree statistics From: Dave Chinner Introduce statistics coverage of all the btrees and cover all the btree operations, not just some. Invaluable for determining test code coverage of all the btree operations.... SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32184a Signed-off-by: David Chinner Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell commit a23f6ef8ce966abc0f6e24a81ceb6a74ed30693b Author: Christoph Hellwig Date: Thu Oct 30 16:54:53 2008 +1100 [XFS] refactor btree validation helpers Move the various btree validation helpers around in xfs_btree.c so that they are close to each other and in common #ifdef DEBUG sections. Also add a new xfs_btree_check_ptr helper to check a btree ptr that can be either long or short form. Split out from a bigger patch from Dave Chinner with various small changes applied by me. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32183a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit b524bfeee2152fa64b6210f28ced80489b9d2439 Author: Christoph Hellwig Date: Thu Oct 30 16:54:43 2008 +1100 [XFS] refactor xfs_btree_readahead From: Dave Chinner Refactor xfs_btree_readahead to make it more readable: (a) remove the inline xfs_btree_readahead wrapper and move all checks out of line into the main routine. (b) factor out helpers for short/long form btrees (c) move check for root in inodes from the callers into xfs_btree_readahead [hch: split out from a big patch and minor cleanups] SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32182a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit e99ab90d6a9e8ac92f05d2c31d44aa7feee15394 Author: Christoph Hellwig Date: Thu Oct 30 16:54:33 2008 +1100 [XFS] add a long pointers flag to xfs_btree_cur Add a flag to the xfs btree cursor when using long (64bit) block pointers instead of checking btnum == XFS_BTNUM_BMAP. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32181a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit 8186e517fab1854554c48955cdbcbb6710e7baef Author: Christoph Hellwig Date: Thu Oct 30 16:54:22 2008 +1100 [XFS] make btree root in inode support generic The bmap btree is rooted in the inode and not in a disk block. Make the support for this feature more generic by adding a btree flag to for this feature instead of relying on the XFS_BTNUM_BMAP btnum check. Also clean up xfs_btree_get_block where this new flag is used. Based upon a patch from Dave Chinner. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32180a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit de227dd9604934d2a6d33cd332d1be431719c93e Author: Christoph Hellwig Date: Thu Oct 30 16:54:12 2008 +1100 [XFS] add generic btree types Add generic union types for btree pointers, keys and records. The generic btree pointer contains either a 32 and 64bit big endian scalar for short and long form btrees, and the key and record contain the relevant type for each possible btree. Split out from a bigger patch from Dave Chinner and simplified a little further. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32178a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit 561f7d17390d00444e6cd0b02b7516c91528082e Author: Christoph Hellwig Date: Thu Oct 30 16:53:59 2008 +1100 [XFS] split up xfs_btree_init_cursor xfs_btree_init_cursor contains close to little shared code for the different btrees and will get even more non-common code in the future. Split it up into one routine per btree type. Because xfs_btree_dup_cursor needs to call the init routine for a generic btree cursor add a new btree operation vector that contains a dup_cursor method that initializes a new cursor based on an existing one. The btree operations vector is based on an idea and code from Dave Chinner and will grow more entries later during this series. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32176a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit f2277f06e626d694e61bb356524ff536ced24acf Author: Christoph Hellwig Date: Thu Oct 30 16:53:47 2008 +1100 [XFS] kill struct xfs_btree_hdr This type is only embedded in struct xfs_btree_block and never used directly. By moving the fields directly into struct xfs_btree_block a lot of the macros for struct xfs_btree_sblock and struct xfs_btree_lblock can be used for struct xfs_btree_block too now which helps greatly with some of the migrations during implementing the generic btree code. SGI-PV: 985583 SGI-Modid: xfs-linux-melb:xfs-kern:32174a Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy Signed-off-by: Bill O'Donnell Signed-off-by: David Chinner commit f338f9036400e453ab553b16639a9cc838b02d44 Author: Lachlan McIlroy Date: Thu Oct 30 16:53:38 2008 +1100 [XFS] Unlock inode before calling xfs_idestroy() Lock debugging reported the ilock was being destroyed without being unlocked. We don't need to lock the inode until we are going to insert it into the radix tree. SGI-PV: 987246 SGI-Modid: xfs-linux-melb:xfs-kern:32159a Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig commit a357a1215602f79182abdde27aaddc7166dbd709 Author: Lachlan McIlroy Date: Thu Oct 30 16:53:25 2008 +1100 [XFS] Fix use-after-free with log and quotas Destroying the quota stuff on unmount can access the log - ie XFS_QM_DONE() ends up in xfs_dqunlock() which calls xfs_trans_unlocked_item() and then xfs_log_move_tail(). By this time the log has already been destroyed. Just move the cleanup of the quota code earlier in xfs_unmountfs() before the call to xfs_log_unmount(). Moving XFS_QM_DONE() up near XFS_QM_DQPURGEALL() seems like a good spot. SGI-PV: 987086 SGI-Modid: xfs-linux-melb:xfs-kern:32148a Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig Signed-off-by: Peter Leckie commit 46039928c9abe466ed1bc0da20c2e596b1d41236 Author: Barry Naujok Date: Thu Oct 30 16:52:35 2008 +1100 [XFS] Remove final remnants of dirv1 macros and other stuff SGI-PV: 981498 SGI-Modid: xfs-linux-melb:xfs-kern:32002a Signed-off-by: Barry Naujok Signed-off-by: Christoph Hellwig Signed-off-by: Lachlan McIlroy commit d07c60e54fb7647d8247ae392f128e8ee8f3e5f3 Author: Lachlan McIlroy Date: Thu Oct 30 16:50:35 2008 +1100 [XFS] Use xfs_idestroy() to cleanup an inode. SGI-PV: 981498 SGI-Modid: xfs-linux-melb:xfs-kern:31927a Signed-off-by: Lachlan McIlroy Signed-off-by: David Chinner commit be8b78a626dd9bc92c12e9ac34f3bc3db1204d25 Author: Lachlan McIlroy Date: Thu Oct 30 16:42:34 2008 +1100 [XFS] Remove kmem_zone_t argument from xfs_inode_init_once() kmem cache constructor no longer takes a kmem_zone_t argument. SGI-PV: 957103 SGI-Modid: xfs-linux-melb:xfs-kern:32254a Signed-off-by: Lachlan McIlroy commit 07c8f67587724b417f60bffb32c448dd94647b54 Author: David Chinner Date: Thu Oct 30 16:11:59 2008 +1100 [XFS] Make use of the init-once slab optimisation. To avoid having to initialise some fields of the XFS inode on every allocation, we can use the slab init-once feature to initialise them. All we have to guarantee is that when we free the inode, all it's entries are in the initial state. Add asserts where possible to ensure debug kernels check this initial state before freeing and after allocation. SGI-PV: 981498 SGI-Modid: xfs-linux-melb:xfs-kern:31925a Signed-off-by: David Chinner Signed-off-by: Lachlan McIlroy Signed-off-by: Christoph Hellwig ----------------------------------------------------------------------- Summary of changes: Documentation/filesystems/xfs.txt | 4 - fs/inode.c | 209 ++- fs/xfs/Makefile | 6 +- fs/xfs/linux-2.6/sv.h | 22 +- fs/xfs/linux-2.6/xfs_aops.c | 66 +- fs/xfs/linux-2.6/xfs_aops.h | 3 + fs/xfs/linux-2.6/xfs_buf.c | 87 +- fs/xfs/linux-2.6/xfs_buf.h | 30 +- fs/xfs/linux-2.6/xfs_cred.h | 8 - fs/xfs/linux-2.6/xfs_export.c | 1 - fs/xfs/linux-2.6/xfs_file.c | 189 +-- fs/xfs/linux-2.6/xfs_fs_subr.c | 23 +- fs/xfs/linux-2.6/xfs_globals.c | 8 - fs/xfs/linux-2.6/xfs_globals.h | 1 - fs/xfs/linux-2.6/xfs_ioctl.c | 223 ++-- fs/xfs/linux-2.6/xfs_ioctl.h | 82 + fs/xfs/linux-2.6/xfs_ioctl32.c | 849 ++++++--- fs/xfs/linux-2.6/xfs_ioctl32.h | 214 +++- fs/xfs/linux-2.6/xfs_iops.c | 122 ++- fs/xfs/linux-2.6/xfs_iops.h | 1 - fs/xfs/linux-2.6/xfs_linux.h | 13 +- fs/xfs/linux-2.6/xfs_lrw.c | 50 +- fs/xfs/linux-2.6/xfs_stats.c | 6 +- fs/xfs/linux-2.6/xfs_stats.h | 65 + fs/xfs/linux-2.6/xfs_super.c | 884 +++------ fs/xfs/linux-2.6/xfs_super.h | 15 - fs/xfs/linux-2.6/xfs_sync.c | 762 ++++++++ fs/xfs/linux-2.6/xfs_sync.h | 55 + fs/xfs/linux-2.6/xfs_sysctl.c | 11 - fs/xfs/linux-2.6/xfs_sysctl.h | 3 +- fs/xfs/linux-2.6/xfs_vfs.h | 77 - fs/xfs/linux-2.6/xfs_vnode.c | 145 -- fs/xfs/linux-2.6/xfs_vnode.h | 72 +- fs/xfs/quota/xfs_dquot.c | 39 +- fs/xfs/quota/xfs_dquot.h | 4 +- fs/xfs/quota/xfs_dquot_item.c | 45 +- fs/xfs/quota/xfs_qm.c | 57 +- fs/xfs/quota/xfs_qm.h | 3 +- fs/xfs/quota/xfs_qm_bhv.c | 5 +- fs/xfs/quota/xfs_qm_syscalls.c | 151 +- fs/xfs/support/debug.c | 39 +- fs/xfs/support/debug.h | 2 - fs/xfs/support/ktrace.c | 9 +- fs/xfs/xfs.h | 2 +- fs/xfs/xfs_acl.c | 2 +- fs/xfs/xfs_ag.h | 15 +- fs/xfs/xfs_alloc.c | 264 ++- fs/xfs/xfs_alloc.h | 27 +- fs/xfs/xfs_alloc_btree.c | 2387 ++++--------------------- fs/xfs/xfs_alloc_btree.h | 107 +- fs/xfs/xfs_arch.h | 39 +- fs/xfs/xfs_bit.h | 3 +- fs/xfs/xfs_bmap.c | 410 +++-- fs/xfs/xfs_bmap.h | 72 +- fs/xfs/xfs_bmap_btree.c | 2617 +++++---------------------- fs/xfs/xfs_bmap_btree.h | 171 +-- fs/xfs/xfs_btree.c | 3596 ++++++++++++++++++++++++++++++++----- fs/xfs/xfs_btree.h | 392 +++-- fs/xfs/xfs_btree_trace.c | 249 +++ fs/xfs/xfs_btree_trace.h | 116 ++ fs/xfs/xfs_buf_item.c | 45 +- fs/xfs/xfs_clnt.h | 105 -- fs/xfs/xfs_da_btree.h | 24 +- fs/xfs/xfs_dfrag.c | 8 +- fs/xfs/xfs_dfrag.h | 2 +- fs/xfs/xfs_dinode.h | 148 +- fs/xfs/xfs_dir2_sf.h | 7 - fs/xfs/xfs_dmops.c | 5 +- fs/xfs/xfs_error.c | 15 - fs/xfs/xfs_error.h | 12 +- fs/xfs/xfs_extfree_item.c | 45 +- fs/xfs/xfs_fs.h | 22 +- fs/xfs/xfs_fsops.c | 30 +- fs/xfs/xfs_ialloc.c | 449 +++-- fs/xfs/xfs_ialloc.h | 31 +- fs/xfs/xfs_ialloc_btree.c | 2193 +++-------------------- fs/xfs/xfs_ialloc_btree.h | 111 +- fs/xfs/xfs_iget.c | 735 ++++---- fs/xfs/xfs_imap.h | 40 - fs/xfs/xfs_inode.c | 587 ++----- fs/xfs/xfs_inode.h | 375 +++-- fs/xfs/xfs_inode_item.c | 45 +- fs/xfs/xfs_inode_item.h | 41 +- fs/xfs/xfs_iomap.c | 28 +- fs/xfs/xfs_itable.c | 102 +- fs/xfs/xfs_itable.h | 14 + fs/xfs/xfs_log.c | 81 +- fs/xfs/xfs_log.h | 4 + fs/xfs/xfs_log_priv.h | 48 +- fs/xfs/xfs_log_recover.c | 416 ++--- fs/xfs/xfs_mount.c | 81 +- fs/xfs/xfs_mount.h | 73 +- fs/xfs/xfs_qmops.c | 5 +- fs/xfs/xfs_quota.h | 8 +- fs/xfs/xfs_rename.c | 61 +- fs/xfs/xfs_rtalloc.c | 41 +- fs/xfs/xfs_rw.c | 2 +- fs/xfs/xfs_sb.h | 167 +- fs/xfs/xfs_trans.c | 22 +- fs/xfs/xfs_trans.h | 322 ++-- fs/xfs/xfs_trans_ail.c | 362 +++-- fs/xfs/xfs_trans_buf.c | 7 +- fs/xfs/xfs_trans_inode.c | 30 +- fs/xfs/xfs_trans_item.c | 10 + fs/xfs/xfs_trans_priv.h | 98 +- fs/xfs/xfs_utils.c | 12 +- fs/xfs/xfs_vfsops.c | 757 -------- fs/xfs/xfs_vfsops.h | 16 - fs/xfs/xfs_vnodeops.c | 354 +--- fs/xfs/xfs_vnodeops.h | 10 +- include/linux/fs.h | 10 + kernel/sysctl_check.c | 1 - 112 files changed, 10496 insertions(+), 12850 deletions(-) create mode 100644 fs/xfs/linux-2.6/xfs_ioctl.h create mode 100644 fs/xfs/linux-2.6/xfs_sync.c create mode 100644 fs/xfs/linux-2.6/xfs_sync.h delete mode 100644 fs/xfs/linux-2.6/xfs_vfs.h delete mode 100644 fs/xfs/linux-2.6/xfs_vnode.c create mode 100644 fs/xfs/xfs_btree_trace.c create mode 100644 fs/xfs/xfs_btree_trace.h delete mode 100644 fs/xfs/xfs_clnt.h delete mode 100644 fs/xfs/xfs_imap.h delete mode 100644 fs/xfs/xfs_vfsops.c delete mode 100644 fs/xfs/xfs_vfsops.h hooks/post-receive -- XFS development tree From lachlan@oss.sgi.com Mon Dec 29 20:54:48 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_50, J_CHICKENPOX_12,J_CHICKENPOX_15,J_CHICKENPOX_21,J_CHICKENPOX_22, J_CHICKENPOX_24,J_CHICKENPOX_32,J_CHICKENPOX_33,J_CHICKENPOX_41, J_CHICKENPOX_42,J_CHICKENPOX_51,J_CHICKENPOX_54,J_CHICKENPOX_71 autolearn=no version=3.3.0-rupdated Received: from oss.sgi.com (localhost [127.0.0.1]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBU2slCd030817 for ; Mon, 29 Dec 2008 20:54:47 -0600 Received: (from lachlan@localhost) by oss.sgi.com (8.12.11.20060308/8.12.11/Submit) id mBU2rk1l014975; Mon, 29 Dec 2008 20:53:46 -0600 Date: Mon, 29 Dec 2008 20:53:46 -0600 Message-Id: <200812300253.mBU2rk1l014975@oss.sgi.com> From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. v2.6.28-rc3-4976-g0a8c539 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 25051158bbed127e8672b43396c71c5eb610e5f1 X-Git-Newrev: 0a8c5395f90f06d128247844b2515c8bf3f2826b X-Virus-Scanned: ClamAV 0.91.2/8812/Mon Dec 29 18:49:14 2008 on oss.sgi.com X-Virus-Status: Clean This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated 0a8c539 [XFS] Fix merge failures 3c92ec8 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc c4c9f01 net: ehea NAPI interface cleanup fix bf66542 cifs: update for new IP4/6 address printing d05a788 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 96faec9 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next 2926328 Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-nvram 54d2f64 Merge branch 'next' into for-linus ca9153a powerpc/44x: Support 16K/64K base page sizes on 44x 6ca4f74 powerpc: Force memory size to be a multiple of PAGE_SIZE 541ef5c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k 0191b62 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 54a696b Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 1d248b2 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 1db2a5c Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 a39b863 Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip b0f4b28 Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip be9c5ae Merge branch 'x86-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip bb26c6c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6 e14e61e Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 cb10ea5 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 81d6e59 Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 aa6eeee m68k: use the new byteorder headers 7f877eb fbcon: Protect free_irq() by MACH_IS_ATARI check 79f0c9a fbcon: remove broken mac vbl handler 646819e m68k: fix trigraph ignored warning in setox.S 3839d01 macfb annotations and compiler warning fix 746e8d3 m68k: mac baboon interrupt enable/disable 429dbf5 m68k: machw.h cleanup 4a97359 m68k: Mac via cleanup and commentry 40f7f9c m68k: Reinstate mac rtc eb56092 net: Allow dependancies of FDDI & Tokenring to be modular. 8d25332 igb: Fix build warning when DCA is disabled. 2d5451d net: Fix warning fallout from recent NAPI interface changes. 0da2afd gro: Fix potential use after free 8438134 sfc: If AN is enabled, always read speed/duplex from the AN advertising bits f4bd954 sfc: When disabling the NIC, close the device rather than unregistering it 307505e sfc: SFT9001: Add cable diagnostics 1796721 sfc: Add support for multiple PHY self-tests 2ef3068 sfc: Merge top-level functions for self-tests a5692e4 sfc: Clean up PHY mode management in loopback self-test caa8d8b sfc: Fix unreliable link detection in some loopback modes 6977dc6 sfc: Generate unique names for per-NIC workqueues e727149 802.3ad: use standard ethhdr instead of ad_header e4ac432 802.3ad: generalize out mac address initializer 7addeef 802.3ad: initialize ports LACPDU from const initializer 87f422f 802.3ad: remove typedef around ad_system 1624db7 802.3ad: turn ports is_individual into a bool f48127b 802.3ad: turn ports is_enabled into a bool d238d45 802.3ad: make ntt bool d3fa472 ixgbe: Fix set_ringparam in ixgbe to use the same memory pools. 7adf152 ixgbe: Fix NAPI enable/disable path when using DCB d7b0663 net: Init NAPI dev_list on napi_del 26bc19e igb: re-order queues to support cleaner use of ivar on 82576 0e014cb igb: defeature tx head writeback f2712fd ipsec: Remove useless ret variable fdb614c ucc_geth: Eliminate the need for forward references 9c54004 atm: Driver for Solos PCI ADSL2+ card. 236b87c gigaset: ifdef cleanup c8770dc gigaset: use pr_err() and pr_info() 4d8cd00 cxgb3: add control to access embedded images 6dd0148 drivers/net/wireless/prism54: fix sparse warnings: make symbols static a3d1fd2 drivers/net/wireless/ipw2x00: fix sparse warnings: make symbols static 11ab72a drivers/net/wireless/b43: fix sparse warnings: make symbols static bf512bc drivers/net/wireless/ath9k: fix sparse warnings: make symbols static 2ed5ba8 drivers/net/wireless: fix sparse warnings: make symbols static 62c5345 drivers/net/wan/z85230.c: fix sparse warnings: un-EXPORT symbols 7b3dfa1 drivers/net/wan: fix sparse warning: make symbol static d157e02 drivers/net/wan: fix sparse warnings: make do-while a compound statement ec1d1eb drivers/net/tulip: fix sparse warnings: make do-while a compound statement 27cd6ae drivers/net/tokenring: fix sparse warnings: make symbols static 409b204 drivers/net/skfp: fix sparse warnings: make symbols static 2f22d22 drivers/net/qlge: fix sparse warnings: make symbols static f8057b7 drivers/net/netxen: fix sparse warnings: use NULL pointer instead of plain integer e855aac drivers/net/ixgbe: fix sparse warnings: make symbols static 0e49e64 drivers/net/irda: fix sparse warnings: make symbols static 678c610 drivers/net/igb: remove dead code (function 'igb_read_pci_cfg') 5e4232e drivers/net/enic: fix sparse warning: make symbol static fa4c16d drivers/net/e1000e: fix sparse warnings: make symbols static af8eca5 drivers/net/cxgb3: comment out dead code b06715b drivers/net/bonding: fix sparse warnings: move decls to header file 9dc20f5 drivers/net/atlx: fix sparse warnings: make symbols static 888432f drivers/net/arcnet: fix sparse warnings: make symbols static dac499f drivers/net: fix sparse warnings: make symbols static a08b32d drivers/net: fix sparse warning: returning void-valued expression e4c3c13 drivers/net: fix sparse warnings: make do-while a compound statement 2705d4f drivers/net: fix sparse warning: use ANSI-style function declaration d76e56b ehea: use get_zeroed_page for alignment-sensitive allocation 359d67d [CIFS] Remove redundant test c6fbba0 [CIFS] make sure that DFS pathnames are properly formed ac6a3ef Remove an already-checked error condition in SendReceiveBlockingLock 698e96a Streamline SendReceiveBlockingLock: Use "goto out:" in an error condition 17c8bfe Streamline SendReceiveBlockingLock: Use "goto out:" in an error condition 2b2bdfb [CIFS] Streamline SendReceive[2] by using "goto out:" in an error condition 8e4f2e8 Slightly streamline SendReceive[2] 829049c Check the return value of cifs_sign_smb[2] 4c3130e [CIFS] Cleanup: Move the check for too large R/W requests 27a97a6 [CIFS] Slightly simplify wait_for_free_request(), remove an unnecessary "else" branch 8fbbd36 Simplify allocate_mid() slightly: Remove some unnecessary "else" branches 6d9c6d5 [CIFS] In SendReceive, move consistency check out of the mutexed region 00e485b cifs: store password in tcon 4e53a3f cifs: have calc_lanman_hash take more granular args 55162de cifs: zero out session password before freeing it 8570552 cifs: fix wait_for_response to time out sleeping processes correctly 8be0ed4 [CIFS] Can not mount with prefixpath if root directory of share is inaccessible 61e7480 [CIFS] various minor cleanups pointed out by checkpatch script 3de2091 [CIFS] fix typo acc18aa [CIFS] remove sparse warning 13a6e42 [CIFS] add mount option to send mandatory rather than advisory locks d5c5605 cifs: make ipv6_connect take a TCP_Server_Info arg bcf4b10 cifs: make ipv4_connect take a TCP_Server_Info arg 7586b76 cifs: don't declare smb_vol info on the stack 63c038c cifs: move allocation of new TCP_Server_Info into separate function 8ecaf67 cifs: account for IPv6 in ses->serverName and clean up netbios name handling 954d7a1 cifs: make dnotify thread experimental code 72ca545 cifs: convert tcpSem to a mutex 0468a2c cifs: take module reference when starting cifsd 8090902 cifs: display addr and prefixpath options in /proc/mounts 24b9b06 cifs: remove unused SMB session pointer from struct mid_q_entry 26c743b mlx4_en: Remove pauses module parameters. 60b9f9e mlx4_en: Removed Interrupt moderation module parameters c03ea21 mlx4_en: Removed redundant cq->armed flag 48374dd mlx4_en: Removed TX locking when polling TX cq b51968d mlx4_en: Memory leak on completion queue free e74b3f7 Merge branch 'for-david' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 13e620e myri10ge: update driver version to 1.4.4-1.395 e92df28 myri10ge: update firmware headers to 1.4.37 36994a0 forcedeth: don't poll NV event 36 88a44e5 net/appletalk: Remove redundant test c14ea0c drivers/net/wan: Remove redundant test 90f5dfc drivers/net: Remove redundant test 662f44a drivers/net/ehea: Remove redundant test b0fd0d2 drivers/net/au1000_eth.c: Remove redundant test c062076 qlge: ql_adapter_down() typo 619e803 netlink: fix (theoretical) overrun in message iteration 64ff3b9 tcp: Always set urgent pointer if it's beyond snd_nxt 8510b93 sctp: Add validity check for SCTP_PARTIAL_DELIVERY_POINT socket option 9fcb95a sctp: Avoid memory overflow while FWD-TSN chunk is received with bad stream ID aea3c5c sctp: Implement socket option SCTP_GET_ASSOC_NUMBER ea686a2 sctp: Fix a typo in socket.c e89c209 sctp: Bring SCTP_MAXSEG socket option into ietf API extension compliance 161c8d2 net: PHYLIB mdio fixes #2 f7d1b9f vlan: fix convertion to net_device_ops d452273 smsc911x: fix platform resource call during module unload dc26977 smsc911x: don't clobber driver_data 7091e72 netns: igmp: make /proc/net/{igmp,mcfilter} per netns b4ee07d netns: igmp: allow IPPROTO_IGMP sockets in netns cb5b04f smsc911x: make smsc911x_ethtool_ops constant 631b756 smsc911x: convert driver to use net_device_ops dd04519 smsc911x: fix BUG if module is removed while interface is up 4e20228 Merge branch 'sched/urgent'; commit 'v2.6.28' into sched/core cef7125 [S390] provide documentation for hvc_iucv kernel parameter. 2a7c6f2 [S390] convert ctcm printks to dev_xxx and pr_xxx macros. ecf39d4 [S390] convert zfcp printks to pr_xxx macros. 5466c2e [S390] convert vmlogrdr printks to pr_xxx macros. 17159dc6 [S390] convert zfcp dumper printks to pr_xxx macros. 395d31d [S390] convert cpu related printks to pr_xxx macros. 74eacdb [S390] convert qeth printks to dev_xxx and pr_xxx macros. b3ff088 [S390] convert sclp printks to pr_xxx macros. 8f7c502 [S390] convert iucv printks to dev_xxx and pr_xxx macros. 136f7a1 [S390] convert ap_bus printks to pr_xxx macros. 93098bf [S390] convert dcssblk and extmem printks messages to pr_xxx macros. 1519c0c [S390] convert monwriter printks to pr_xxx macros. c5612c1 [S390] convert s390 debug feature printks to pr_xxx macros. a4f5a29 [S390] convert monreader printks to pr_xxx macros. e7534b0 [S390] convert appldata printks to pr_xxx macros. 3b6ed4a [S390] convert setup printks to pr_xxx macros. f55495b [S390] convert hypfs printks to pr_xxx macros. feab650 [S390] convert time printks to pr_xxx macros. 39f0939 [S390] convert cpacf printks to pr_xxx macros. e6d5a42 [S390] convert cio printks to pr_xxx macros. 80a5c36 [S390] convert vmur printks to pr_xxx macros. 2f526e5 [S390] convert cpcmd printks to pr_xxx macros. c99fc5d [S390] convert lcs printks to dev_xxx and pr_xxx macros. 8988e58 [S390] convert vmcp printks to pr_xxx macros. d1c2f89 [S390] convert xpram printks to pr_xxx macros. acfa922 [S390] s390: Remove redundant test 0946100 [S390] s390/setup: set default preferred console device "ttyS" 21e7b2c [S390] drivers/s390/crypto: Move dereference to after IS_ERR test 33b1d09 [S390] panic_stack leak in smp_alloc_lowcore 4f7e90d [S390] clear_table inline assembly contraints c185b78 [S390] Remove config options. 349f1b6 [S390] cpu topology: remove dead code 2b1a61f [S390] cpu topology: introduce kernel parameter 9fee8db [S390] add new machine types to setup_hwcaps. c58d92b [S390] Remove initial kernel stack backchain initialization. 64253ac [S390] s390: use the new byteorder headers e37f50e [S390] Add processor type march=z10 and a processor type safety check. b3b59d3 [S390] sclp vt220: fix compile warning 2d6cd2a [S390] remove warnings with functions ending in BUG edd5378 [S390] mark disabled_wait as noreturn function d36f0c6 [S390] cio: use pim to check for multipath. f444cc0 [S390] cio: commit all pmcw changes. 13952ec [S390] cio: introduce cio_commit_config cdb912a [S390] cio: introduce cio_update_schib d6a3076 [S390] cio: Use device_is_registered(). 283fdd0 [S390] cio: Dont call ->release directly. 90ed2b6 [S390] cio: Dont fail probe for I/O subchannels. 5fb6b85 [S390] cio: Only register ccw_device for registered subchannel. 6eff208 [S390] cio: Fix I/O subchannel refcounting. 9cd6742 [S390] cio: Fix reference counting for online/offline. 97166f5 [S390] cio: Put referernce on correct device after moving. c619d42 [S390] cio: fix ccwgroup online vs. ungroup race condition 111e95a [S390] cio: move irritating comment. d7b6048 [S390] cio: update sac values 191fd44 [S390] cio: get rid of compile warning 547e3ce [S390] remove ptrace warning on 31 bit. 32272a2 [S390] __page_to_pfn warnings 91d5d45 [S390] iucv: Locking free version of iucv_message_(receive|send) 44a01d5 [S390] s390/hvc_console: z/VM IUCV hypervisor console support 5d360a7 [S390] ftrace: function tracer backend for s390 98df67b [S390] struct device - replace bus_id with dev_name(), dev_set_name() 0cd4bd4 [S390] dasd: call cleanup_cqr with request_queue_lock 50afd20 [S390] dasd: correct sense byte condition for SIM faf16aa [S390] dasd: Use accessors instead of using driver_data directly. 2bf373b [S390] dasd: improve dasd statistics proc interface bd43a42 [S390] zfcp: Report microcode level through service level interface 6bcac50 [S390] service level interface. 7a0b4cb [S390] qdio: fix error reporting for hipersockets 50f769d [S390] qdio: improve inbound buffer acknowledgement 22f9934 [S390] qdio: rework debug feature logging 9a1ce28 [S390] qdio: fix compile warning under 31 bit 23589d0 [S390] qdio: add eqbs/sqbs instruction counters bbd50e1 [S390] qdio: fix qeth port count detection 43c207e6 [S390] ap: Minor code beautification. cb17a63 [S390] zcrypt: Use of Thin Interrupts 320c04c [S390] Move stfle to header file. ca9fc75 [S390] convert s390 to generic IPI infrastructure 0b3016b [S390] serialize stp/etr work 750887d [S390] convert etr/stp to stop_machine interface b020632 [S390] introduce vdso on s390 fc5243d [S390] arch_setup_additional_pages arguments a114a9d [S390] vmcp: remove BKL f414f5f [S390] cpu topology: dont destroy cpu sets on topology change 8f2961c [S390] audit: get s390 ret_from_fork in sync with other architectures 5439050 [S390] cpu topology: fix cpu_core_map initialization 5250d32 Merge branches 'tracing/ftrace', 'tracing/hw-branch-tracing' and 'tracing/ring-buffer'; commit 'v2.6.28' into tracing/core 468a15b sched, trace: update trace_sched_wakeup() a3eeeef Merge branch 'x86/tsc' into tracing/core 79a66b9 Merge branches 'x86/pat2' and 'x86/fpu'; commit 'v2.6.28' into x86/core 1fcccb0 x86: traps.c replace #if CONFIG_X86_32 with #ifdef CONFIG_X86_32 5ce442f Merge branch 'topic/udev-id-rename' into to-push 60cda2b Merge branch 'topic/sound-core-fix' into to-push 9649745 Merge branch 'topic/snd-hrtimer' into to-push a9c3c7e Merge branch 'topic/pcxhr-update' into to-push cc49108 Merge branch 'topic/oxygen' into to-push a802269 Merge branch 'topic/jack-mechanical' into to-push a650562 Merge branch 'topic/hda' into to-push 313769d Merge branch 'topic/cs5535audio' into to-push 8afabfa Merge branch 'topic/convert-tasklet' into to-push 86b3aa3 Merge branch 'topic/ca0106' into to-push e4456e7 Merge branch 'topic/audigy-capture-boost' into to-push 5c8261e Merge branch 'topic/asoc' into to-push facef86 Merge branch 'topic/aoa' into to-push 0ca59dd tracing/ftrace: don't trace on early stage of a secondary cpu boot, v3 2a0d836 Merge branches 'cma', 'ehca', 'ipath', 'iser', 'mlx4' and 'nes' into for-next 7798dbf IB/mlx4: Set ownership bit correctly when copying CQEs during CQ resize e189062 RDMA/nes: Remove tx_free_list 81ea714 smackfs: check for allocation failures in smk_set_access() cbacc2c Merge branch 'next' into for-linus 0ee4a96 crypto: aes - Precompute tables ca38a81 crypto: talitos - Ack done interrupt in isr instead of tasklet bcf84a3 crypto: testmgr - Correct comment about deflate parameters f0d1ec3 crypto: salsa20 - Remove private wrappers around various operations ad79cdd crypto: des3_ede - permit weak keys unless REQ_WEAK_KEY set bd9d20d crypto: sha512 - Switch to shash f9e2bca crypto: sha512 - Move message schedule W[80] to static percpu area 19e2bf1 crypto: michael_mic - Switch to shash 4946510 crypto: wp512 - Switch to shash f63fbd3 crypto: tgr192 - Switch to shash 50e109b crypto: sha256 - Switch to shash 14b75ba crypto: md5 - Switch to shash 808a176 crypto: md4 - Switch to shash 54ccb36 crypto: sha1 - Switch to shash 3b8efb4 crypto: rmd320 - Switch to shash d8a5e2e crypto: rmd256 - Switch to shash e5835fb crypto: rmd160 - Switch to shash 7c4468b crypto: rmd128 - Switch to shash d35d245 crypto: null - Switch to shash 3751f40 crypto: hash - Make setkey optional b812eb0 crypto: testmgr - Validate output length in (de)compression tests dad3df2 crypto: remove uses of __constant_{endian} helpers 664134d crypto: testmgr - Fix error flow of test_comp 5f459f0 crypto: hifn_795x - Use softirq kernel mapping in bh context d6a10c8 crypto: hifn_795x - Fix queue management 3ec858d crypto: hifn_795x - Remove some unused cruft ed4f92e crypto: hifn_795x - Fix queue processing 5df4c0c crypto: hifn_795x - Fix request context corruption 3416158 crypto: hifn_795x - Don't copy src sg list 75741a0 crypto: hifn_795x - Fix DMA setup 09fbf7c crypto: ansi_cprng - fix inverted DT increment routine 9302735 libcrc32c: Select CRYPTO in Kconfig aa1a85d crypto: ansi_cprng - Avoid incorrect extra call to _get_more_prng_bytes 31a61bf crypto: md4 - Use ARRAY_SIZE 0426c16 libcrc32c: Add crc32c_le macro 53b146a libcrc32c: Fix "crc32c undefined" compilation error 69c35ef libcrc32c: Move implementation to crypto crc32c 8e3ee85 crypto: crc32c - Test descriptor context format b7e8bda crypto: crc32c-intel - Switch to shash faccc4b crypto: crc32c - Switch to shash 5f7082e crypto: hash - Export shash through hash 67cd080 crypto: api - Call type show function before legacy for proc dec8b78 crypto: hash - Add import/export interface 3b2f6df crypto: hash - Export shash through ahash 7b5a080b crypto: hash - Add shash interface 7b0bac6 crypto: api - Rebirth of crypto_alloc_tfm 4a77948 crypto: api - Move type exit function into crypto_tfm 2566578 crypto: ansi_cprng - Allow resetting of DT value 420a4b2 crypto: padlock - Avoid resetting cword on successive operations 1c06da8 crypto: crc32c-intel - Update copyright head 4b24ea9 crypto: talitos - Preempt overflow interrupts off-by-one fix 32bd78e crypto: camellia - use kernel-provided bitops, unaligned access d12d6b6 crypto: testmgr - Trigger a panic when self test fails in FIPS mode fe5720e crypto: talitos - Perform auth check in h/w if on sec 2.1 and above 1c2e881 crypto: talitos - Implement done interrupt mitigation 40405f1 crypto: talitos - Pass correct interrupt status to error handler a44b56c crypto: hifn - Disable driver when physical size exceeds 32 bits 4a6908a Linux 2.6.28 67be403 Revert "x86: disable X86_PTRACE_BTS" db8862e Merge branch 'linus' into tracing/hw-branch-tracing c20137f Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 1806f82 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2523659 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 1f5175a RDMA/cma: Add IPv6 support 38617c6 RDMA/addr: Add support for translating IPv6 addresses 7645c4b Merge branch 'fix/hda' into topic/hda 574f3c4 ALSA: hda - Add missing terminators in patch_sigmatel.c 40f15ad x86: disable X86_PTRACE_BTS c1c15b6 x86: PAT: fix address types in track_pfn_vma_new() 6332178 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 5289f46 parisc: disable UP-optimized flush_tlb_mm 8960223 Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 d519c8d edac: fix edac core deadlock when removing a device 20ca9b3 cgroups: avoid accessing uninitialized data in failure path e368d3a cgroups: suppress bogus warning messages f00a189 w1: fix slave selection on big-endian systems cc6c2ca rtc: rtc-isl1208: reject invalid dates 98db8df ring-buffer: prevent false positive warning a8ccf1d ring-buffer: fix dangling commit race bed4f13 Merge branch 'x86/irq' into x86/core 3e5621e Merge branch 'x86/iommu' into x86/core be9a1d3 Merge branch 'x86/tsc' into x86/core 7e3cbc3 Merge branch 'x86/ptrace' into x86/tsc fa623d1 Merge branches 'x86/apic', 'x86/cleanups', 'x86/cpufeature', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/detect-hyper', 'x86/doc', 'x86/dumpstack', 'x86/early-printk', 'x86/fpu', 'x86/idle', 'x86/io', 'x86/memory-corruption-check', 'x86/microcode', 'x86/mm', 'x86/mtrr', 'x86/nmi-watchdog', 'x86/pat2', 'x86/pci-ioapic-boot-irq-quirks', 'x86/ptrace', 'x86/quirks', 'x86/reboot', 'x86/setup-memory', 'x86/signal', 'x86/sparse-fixes', 'x86/time', 'x86/uv' and 'x86/xen' into x86/core bf8bd66 Merge branch 'x86/apic' into x86/irq 1ccedb7 Merge commit 'v2.6.28-rc9' into x86/apic 231ffc9 V4L/DVB (9920): em28xx: fix NULL pointer dereference in call to VIDIOC_INT_RESET command 908a7a1 net: Remove unused netdev arg from some NAPI interfaces. f8f50b1 powerpc/32: Wire up the trampoline code for kdump ccdcef7 powerpc/32: Add the ability for a classic ppc kernel to be loaded at 32M 01695a9 powerpc/32: Allow __ioremap on RAM addresses for kdump kernel 6f29c32 powerpc/32: Setup OF properties for kdump 7375331 powerpc/32/kdump: Implement crash_setup_regs() using ppc_save_regs() 322b439 powerpc: Prepare xmon_save_regs for use with kdump 5be8554 powerpc: Remove default kexec/crash_kernel ops assignments 77733f8 powerpc: Make default kexec/crash_kernel ops implicit 2e8e4f5 powerpc: Setup OF properties for ppc32 kexec b906cfa powerpc/pseries: Fix cpu hotplug fad7b9b powerpc: Fix KVM build on ppc440 889bd9b net: startup race in hso driver 05a8c1c pkt_sched: Remove smp_wmb() in qdisc_watchdog() 4707470 r6040: bump release number to 0.19 3e7c469 r6040: save and restore MIER correctly in the interrupt routine 11e5e8f r6040: fix wrong logic in mdio code 5f2f6da net: Fix oops in dev_ifsioc() adf77ba x86: prioritize the FPU traps for the error code 077ebed drm/radeon: fix correctness of irq_enabled check for radeon. c47a75a Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 0099f77 Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 9ecab6e drivers/ide/{cs5530.c,sc1200.c}: Move a dereference below a NULL test def434c powerpc/cell: add QPACE as a separate Cell platform e68558d powerpc/cell: fix build breakage with CONFIG_SPUFS disabled 2e85696 Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 7ef5f41 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 472346d ALSA: ASoC: fix a typo in omp-pcm.c c691348 ASoC: Fix DSP formats in SSM2602 audio codec bd25867 ASoC: Fix incorrect DSP format in OMAP McBSP DAI and affected drivers f5eda57 mlx4_core: Delete incorrect comment b8dd786 mlx4_core: Add support for multiple completion event vectors 59de580 sh: oprofile: Fix up the module build. 7d91fcf sh: add UIO support for JPU on SH7722. b0c50ad serial: sh-sci: Fix up port pinmux for SH7366. 6f5cd2b sh: mach-rsk: Use uImage generation by default for rsk7201/7203. 2ea40de sh: mach-sh03: Fix up pata_platform build breakage. b5868e8 sh: enable deferred io LCDC on Migo-R 8564557 video: sh_mobile_lcdcfb deferred io support 37b4837 video: deferred io with physically contiguous memory 6e1038a video: deferred io cleanup 87884bd video: fix deferred io fsync() 0790555 sh: add LCDC interrupt configuration to AP325 and Migo-R 2540c11 sh_mobile_lcdc: use FB_SYS helpers instead of FB_CFB da9fdc8 sh: split coherent pages 78fb402 sh: dma: Kill off ISA DMA wrapper. 5d2685d sh: Conditionalize the code dumper on CONFIG_DUMP_CODE. fe58cac sh: Kill off the unused SH_ALPHANUMERIC debug option. 740a3e6 sh: Enable skipping of bss on debug platforms for sh32 also. 8a65505 doc: Update sh cpufreq documentation. 0146d78 sh: mrshpc_setup_windows() needs to be inline. 1f6fd5c serial: sh-sci: sci_poll_get_char() is only used by CONFIG_CONSOLE_POLL. 073da9c sh: Kill off cf-enabler with extreme prejudice. 8c197c3 sh: Add a simple edosk7705_defconfig for build testing. 866ef8f sh: mach-edosk7705: Fix up edosk7705 so it all builds again. 0ef0e6c sh: mach-microdev: Split out the fdc37c93xapm initialization code. 43eeb0f sh: mach-sh03: Use __set_io_port_base(), kill off special ioport_map(). 8db806e sh: mach-sh03: Move off of cf_enabler to pata_platform, as per landisk. 98a955d sh: board-shmin: Convert shmin to use __set_io_port_base(). 2125a46 sh: Kill off dead mv_init_pci() from machvec. 43f8f9b sh: Simplify kernel_thread_helper() for sh32. 7b80fb3 sh: Kill off mv_heartbeat() from the machvec. b94ea27 sh: Kill off the cayman and microdev special heartbeat code. ca0c14e44 sh: Kill off sh_bios_in_gdb_mode(). a9df1ed sh: export sh_bios_get_node_addr() symbol for stnic module. 8e32018 sh: Run sh_bios through a long overdue Lindent. d570164 serial: sh-sci: Generalize port pin initialization. d830fa4 serial: sh-sci: Tidy up fifo overrun error handling. 762c69e serial: sh-sci: pr_debug() -> dev_dbg() conversion. 027e687 serial: sh-sci: Fix up the cpufreq notifier to use the proper port clock. d9341b5 sh: oprofile: Convert op_model_sh7750 to new common interface. 40a8b42 sh: oprofile: Backtrace support. 60a51fb sh: oprofile: Refactor common setup code for multiple driver support. 70fe224 sh: Enable GENERIC_HARDIRQS_NO__DO_IRQ for all SuperH machines 1a94757 sh: Convert Cayman boards from hw_interrupt_type to irq_chip e85a477 sh: Convert Dreamcast support from hw_interrupt_type to irq_chip bd0a22d sh: Convert SystemH board support from hw_interrupt_type to irq_chip be729fd sh: Convert Microdev boards from hw_interrupt_type to irq_chip 180ae20 sh: Provide sdivsi3/udivsi3/udivdi3 for sh64, kill off libgcc linking. 209aa4f fb: SH-5 uses __raw I/O accessors now also, drop the special casing. 4466b20 sh: Add SH-5 optimized memcpy()/memset()/strcpy()/strlen(). 776d6c2 sh: Kill off remaining CONFIG_SH_KGDB bits. 07d2a1a serial: sh-sci: Implement CONSOLE_POLL support and kill off old kgdb console. ab6e570 sh: Generic kgdb stub support. d7b01f7 sh: Enable HAVE_ARCH_TRACEHOOK for all SH, now that SH-5 supports it too. dd76279 sh: Provide linux/regset.h interface for SH-5. 94e2fb3 sh: Provide asm/syscall.h for SH-5. 6ac0343 sh: Handle cases where setup{_rt,}_frame() fail on SH-5 signal delivery. f15b2dc sh: Fix up syscall_get_nr() comment in syscall_32.h. 35724a0 sh: Fix up the cpu_asid() return value on nommu. a99d6fd sh: Convert sh64 /proc/asids to debugfs and generic sh. 4d1f3bb sh: Kill off sh64's unused alloc/free_task_struct() definitions. 4eec883 sh: mach-migor: Kill off unused Migo-R machvec. 4545bfa sh: add ov772x reset delay on Migo-R a6bc25a sh: Drop the special qemu defconfig. bd40e81 sh: Delete unnecessary mov in the interrupt exception entry point. 06be372 sh: Fix an off-by-1 check in __mutex_fastpath_unlock(). a47925f sh: Update rsk701_defconfig to reflect mach-rsk changes. ff15b90 sh: Enable leds-gpio in rsk7203 defconfig. ea0aac1 sh: Consolidate rsk7203/7201 in to a new mach-rsk. b5cfeac sh: Provide ftrace_make_call()/ftrace_make_nop(). 4bc3e71 sh: Disable -Werror for arch/sh/oprofile/. 3b04122 sh: Add plain udivsi3 (not _i4*) for gcc-4.1 and lower. 1fdae0e Fix incorrect use of loose in c-checksum.c 77ba93a sh: Fix up the SH-4A mutex fastpath semantics. c6f17cb sh: allow CONFIG_CPU_IDLE af998a9 sh: allow CONFIG_PM 3e51762 sh: move the hp6xx pm code 0464518 sh: update se7343 defconfig 21c601b sh: remove ioport cruft and smc91x from se7343 5e5aacb sh: add isp1161 usb host device to se7343 6aacba7 sh: add st16c2550 devices to se7343 5727003 sh: fix number of interrupts on se7343 551ea2b sh: sh7343 scif configuration update 0c0daec sh: propagate r_clk 6feb348 sh: RSK+ 7201 board support. 2825999 sh: Add support for SH7201 CPU subtype. 135210b sh: Switch HD64461 from hw_interrupt_type to irq_chip 331ff10 sh: pci-sh7780: fix pci memory address mask 22f131a sh: Provide a dyn_arch_ftrace struct definition. 1da1180 sh: Split out the idle loop for reuse between _32/_64 variants. eb67cf1 sh: Consolidate cpu_relax()/cpu_sleep() definitions across _32/_64. f74c034 sh: do not latency trace idle. 75fd24c sh: Tidy up backtrace formatting with kallsyms disabled. 9cfc9a9 sh: Add a simple code dumper for SUPERH32 show_regs(). edfd6da sh: Add a few more branch types to the branch emulator. 5dd6147 sh: Re-add support for best fit ISA tuning if none is available. 624c6a6 sh: More movmem alias symbol exports for older compilers. 95b781c sh: Provide optimized unaligned loads on SH-4A. 716777d sh: P4 ioremap pass-through 0c91223 sh: Add SH-4A optimized fastpath mutex implementation. 5c72f30 sh: sh7760fb: Add support SH7720/SH7721 of Renesas 679dc3c sh: sh7760fb: Fix color pallette setting f617682 sh: add SH DMAC burst mode constant c2c5883 sh: fix DMAOR register access on SH7709 8085ac7 sh: Add platform-specific constants for SH7709 0d5bbe0 sh: Provide optimized non-atomic bitops for SH-2A. 8bcc5c1 sh: Add -m4al tuning for SH4AL-DSP. 9ef1002 sh: Add exports for __udivsi3/__sdivsi3 and the _i4 versions. 16b529d sh: Convert to generic bitops for IRQ-toggling implementation. 709420d sh: Specify sane default image targets for the SH-2 platforms. 1aad54a sh: Migrate necessary libgcc bits in to arch/sh/lib for SUPERH32. e9bf51e sh: __udivdi3 -> do_div() in softfloat lib. 00e825c sh: Fix clock framework compiler warnings. d643510 usb: Fix up sh_mobile usbf clock framework warnings. e7c98dc serial: sh-sci: Codestyle cleanup patch. af505b1 media: sh_mobile_ceu_camera: Add HAVE_CLK dependency. fad57fe sh: dynamic ftrace support. ef6aff6 sh: remove old sh_mobile mstpc clocks b51339f sh: sh_mobile lcdc clock framework support 765786e sh: sh_mobile usb clock framework support af5be79 sh: sh_mobile usbf clock framework support a42b6dd sh: sh_mobile ceu clock framework support 090d951 sh: sh_mobile keysc clock framework support a5616bd sh: sh_mobile i2c clock framework support f2eb010 sh: sh_mobile mstpcr clocks for sh7366 6e88d03 sh: sh_mobile mstpcr clocks for sh7343 f14c017 sh: sh_mobile mstpcr clocks for sh7723 ecf399b sh: sh_mobile mstpcr clocks for sh7722 7c7e02a sh: new sh_mobile mstpcr clocks base code 1dc7b77 sh: use arch_flags for sh_mobile mstpcr clock bits d902d04 sh: sh_mobile clock divider index fix d12cfac sh: enable and disable clocks recursively 4a4a9be sh: Move arch_get_unmapped_area() in to arch/sh/mm/mmap.c. ed2b03e MIPS: MIPS64R2: Fix buggy __arch_swab64 08d9d1c MIPS: Fix preprocessor warnings flaged by GCC 4.4 826e08b sched: fix warning in fs/proc/base.c d3d3170 tg3: Update version to 3.97 aa10f27 tg3: tg3.h cleanups 69fc405 tg3: Remove unused cfgspc device members 027455a tg3: Cleanup IPV6 LSO 2023276 tg3: WOL fixes 7f3ff4f pkt_sched: Annotate uninitialized var in sfq_enqueue() bfb8cc3 ixgbe: fix the display of DCB control stats in ethtool f4314e8 net: add DCNA attribute to the BCN interface for DCB 1486a61 net: fix DCB setstate to return success/failure c2da953 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 59f8500 Convert ixp4xx_eth driver to use net_device_ops. 4cb56b6 drivers/net/wan: Remove redundant test 93bc933 HDLC_PPP: Fix Configure-Ack to return original options as required by the standard. e6da96a IXP4xx: move common debugging from network drivers to QMGR module. 9251ce9 Update MAINTAINERS entries for IXP4xx and WAN network drivers. f5b89e4 WAN: Add IXP4xx HSS HDLC driver. 490b772 IXP4xx: Add ethtool support to Ethernet driver. 4954936 IXP4xx: Add PHYLIB MII ioctl to the Ethernet driver. 2098c18 IXP4xx: Add PHYLIB support to Ethernet driver. b4c7d3b IXP4xx: Make the Ethernet driver use built-in netdev stats. 3c36a83 IXP4xx: Silence section mismatch warning in Ethernet driver. ae2754a IXP4xx: clear IRQ stat in qmgr_disable_irq(). 3edcfb2 IXP4xx: check for queue being empty in qmgr_release_queue(). bba7ebb IB/iser: Avoid recv buffer exhaustion caused by unexpected PDUs 139cdab IB/ehca: Remove redundant test of vpage 418441d powerpc/mpc5200: fix error paths in PSC UART probe function aec739e powerpc/mpc5200: add rts/cts handling in PSC UART driver b651498 powerpc/mpc5200: Make PSC UART driver update serial errors counters e51f47a powerpc/mpc5200: Remove obsolete code from mpc5200 MDIO driver 6b61e69 powerpc/mpc5200: Add MDMA/UDMA support to MPC5200 ATA driver aaab5e8 powerpc/mpc5200: Disable bestcomm prefetching when ATA DMA enabled e4efe3c powerpc/mpc5200: Bestcomm fixes to ATA support 6228824 powerpc/mpc5200: Bugfix on handling variable sized buffer descriptors dd952cb powerpc/mpc5200: Make internal 5200 PIC the default interrupt controller bcb73f5 powerpc/mpc5200: Document and tidy irq driver a149535 powerpc: Fix missing 'blr' in _tlbia() 3ddeb91 ftrace: enable format arguments checking 49e6e3f powerpc/bootwrapper: Use the child-bus #address-cells to decide which range entry to use e14d774 powerpc: Const-qualify Device Node Argument to DCR Resource Extent API 9dce3ce powerpc/44x: 44x TLB doesn't need "Guarded" set for all pages 64b3d0e powerpc/mm: Rework usage of _PAGE_COHERENT/NO_CACHE/GUARDED 7752035 powerpc/mm: Runtime allocation of mmu context maps for nohash CPUs 760ec0e powerpc/44x: No need to mask MSR:CE, ME or DE in _tlbil_va on 440 2a4aca1 powerpc/mm: Split low level tlb invalidate for nohash processors f048aac powerpc/mm: Add SMP support to no-hash TLB handling 7c03d65 powerpc/mm: Introduce MMU features 2ca8cf7 powerpc/mm: Rework context management for CPUs with no hash table 5e69661 powerpc/mm: Split mmu_context handling 6d2170b powerpc/4xx: Extended DCR support v2 fecba96 powerpc: Add reboot notifier to Collaborative Memory Manager 2218108 powerpc: Disable Collaborative Memory Manager for kdump 5d84e4b powerpc/iseries: viodasd needs to depend on CONFIG_BLOCK 368c1e3 hvc_console: Escape magic sysrq key 532774e powerpc: Pass a valid token to rtas_call() in phyp-dump code 7a2eab0 powerpc: Protect against NULL pointer deref in phyp-dump code 8168b54 powerpc: Rename struct vm_region to avoid conflict with NOMMU 13ba3c0 powerpc: Convert sysfs cache code to of_find_next_cache_node() b2ea25b powerpc: Convert cpu_to_l2cache() to of_find_next_cache_node() e523f72 powerpc: Add of_find_next_cache_node() 7498209 of/gpio: Implement of_gpio_count() 7736a3d of: of_parse_phandles_with_args() learns to differentiate 'hole' cells c1bb7c6 of: Minor simplification for the of_parse_phandles_with_args() 74b7ff4 ALSA: hda: fix incorrect mixer index values for 92hd83xx f8ccbf6 ALSA: hda: dinput_mux check ebef7cf Merge branch 'topic/ca0106-spdif-stream' into topic/ca0106 6bcdbd5 Merge branch 'topic/ca0106-resume' into topic/ca0106 6a84364 Merge branch 'topic/ca0106-capture-no-44khz' into topic/ca0106 8326e32 Merge branch 'topic/hda-resume-fix' into topic/hda 55fa518 Merge branch 'topic/pcsp-fix' into topic/misc 69dfaef ALSA: hda - Add quirk for another HP dv7 a31501d ALSA: ASoC - Add missing __devexit annotation to wm8350.c d6f8339 ALSA: ASoc: DaVinci: davinci-evm use dsp_b mode 9e03162 ALSA: ASoC: DaVinci: i2s, evm, pass same value to codec and cpu_dai a24f4f6 ALSA: ASoC: tlv320aic3x add dsp_a 07d8d9d ALSA: ASoC: DaVinci: document I2S limitations 69ab820 ALSA: ASoC: DaVinci: davinci-i2s clean up 21903c1 ALSA: ASoC: DaVinci: davinci-i2s clean up 664b4af ALSA: ASoC: DaVinci: davinci-i2s add comments to explain polarity 1152a19 ALSA: ASoC: DaVinci: davinvi-evm, make requests explicit ff75427 ALSA: ca0106 - disable 44.1kHz capture 72077aa ALSA: ca0106 - Add missing card->private_data initialization 50232d6 ALSA: ca0106 - Check ac97 availability at PM c5dee61 x86, bts: memory accounting bf53de9 x86, bts: add fork and exit handling 67bac79 x86: PAT: pfnmap documentation update changes 34801ba x86: PAT: move track untrack pfnmap stubs to asm-generic 982d789 x86: PAT: remove follow_pfnmap_pte in favor of follow_phys d87fe66 x86: PAT: modify follow_phys to return phys_addr prot and return value 6bd9cd5 x86: PAT: clarify is_linear_pfn_mapping() interface 8403295 x86: ia32_signal: remove unnecessary declaration 34945ed x86: common.c boot_cpu_stack and boot_exception_stacks should be static 7419224 SELinux: don't check permissions for kernel mounts 12204e2 security: pass mount flags to security_sb_kern_mount() 459c19f SELinux: correctly detect proc filesystems of the form "proc/foo" 9bb4824 allow stripping of generated symbols under CONFIG_KALLSYMS_ALL ad7a953 kbuild: strip generated symbols from *.ko 37a8d9f kbuild: simplify use of genksyms 9cf7f24 b43: Add key memory dumping b929ecf b43: Suspend MAC while killing the radio fd6effc ath5k: correct packet length in tx descriptors 520eb82 mac80211: implement dynamic power save ce7c911 mac80211: track master queue status e0cb686 mac80211: enable IEEE80211_CONF_PS only when associated d10d0e5 b43: Fix some MAC locking 0e7690f iwlwifi: iwl-tx.c cleanup (remove unused parameter and unused local variable). be2864c ath9k: Fixed RX decryption status reporting ea61213 ath9k: Fix key cache slot selection for splitmic aa33de0 ath9k: Protect config() callback with a mutex 5e3f308 mac80211: Print unknown packet type in tasklet_handler 6110781 p54usb: bring first generation devices back to life 6ace289 ath9k: Key cache allocation for AP mode f66000f ath9k: Fix a NULL pointer dereference in ath_rate_get 91f39e8 iwlwifi: indicate txpower is off in sysfs f1bc4ac iwlwifi: use GFP_KERNEL to allocate Rx SKB memory 4087f6f iwlwifi: use meaningful vars in _iwl_poll_bit() febf337 iwlwifi: remove useless goto 95aa194 iwlwifi: use type uint for module param debug c3a739f iwlwifi: update comments on the debug interface 5c11ec6 iwlwifi: add line feed to printk 34c22cf iwlwifi: cleanup iwl-dev.h 1355412 mac80211: fix a typo in ieee80211_send_assoc() method. 73ec1cc iwlwifi: remove a parameter (dest) from *_fill_beacon_frame() methods. ca8a856 ath9k: Move rate control alg register/unregister to appropriate place 9bf9fca ath9k: Synchronize DMA transfer with CPU at right place f7a276a ath9k: Remove MAC header pad before reporting TX status da027ca ath9k: Fix TX status reporting for retries and MCS index 8d6f658 mac80211: Remove radiotap rate-present flag for HT d858822 rtl8187: Fix crash on unload when using SLUB debug 0a5ec96 p54: remove free_on_tx parameter 69ba3e5 p54: more accurate rssi to dBm conversion da9f57e rtl8187: Fix error returns 2382792 libertas: use roundup instead of opencoding ee370ce p54: update ACK failure statistic counter in real-time 54fdb04 p54: move statistic timer update routine into a workqueue d5e4903 iwlagn: fix agn rate scaling b8d476c mac80211: Send Layer 2 Update frame on reassociation 0fe45b1 ath5k: fix 802.11 header padding on RX, unpadding on TX baad1d9 ath9k: Report HT rates in RX status 0fb8ca4 mac80211: Add HT rates into RX status reporting 9d8eed1 ath9k: Do not use association state to update rate table 094d05d mac80211: Fix HT channel selection 420e7fa nl80211: Add signal strength and bandwith to nl80211station info a1d94aa kernel-doc: check for extra kernel-doc notations eb63212 ALSA: hda - Power up always when no jack detection is available 213cc06 ftrace: introduce tracing_reset_online_cpus() helper 9158923 ALSA: hda - Fix unused variable warnings in patch_sigmatel.c 6030634 Merge branch 'topic/hda-stac-fix' into topic/hda 7004305 Merge branch 'fix/asoc' into topic/asoc d4d9cd03 ALSA: hda - Add probe_only option 7662453 ALSA: hda - Use more distinct name for a unique volume in STAC/IDT c21ca4a ALSA: hda - Rework on STAC/IDT auto-configuration code 03c6901 Merge branch 'fix/hda' into topic/hda 8df0f70 ALSA: ca0106 - Fix typo in resume code 692f904 ALSA: hda - Fix HD-Audio.txt reference of model list 3d47582 ALSA: ca0106 - Add IEC958 PCM Stream controls 86effd7 ALSA: ca0106 - Don't override the values at resume abe1dfa ACPI: don't cond_resched() when irqs_disabled() e76f427 ACPI: fix 2.6.28 acpi.debug_level regression 4f2d23e ALSA: hda - Use snd_hda_ctl_add() in patch_sigmatel.c 827057f ALSA: hda - Add missing initializations of amp and verb caches 30cd324 Merge branches 'tracing/ftrace', 'tracing/ring-buffer' and 'tracing/urgent' into tracing/core 345077c x86: fix intel x86_64 llc_shared_map/cpu_llc_id anomolies cae5117 ALSA: split HD-audio model list to HD-Audio-Models.txt 335b986 Merge branch 'topic/hda-doc' into topic/hda 0ff5551 Merge branch 'fix/hda' into topic/hda c94cb31 net: prepare usb net drivers for addition of status as a parameter ab5024a net: ppp_generic - use DEFINE_IDR for static initialization a109a5b cxgb3: manage private iSCSI IP address 221b3d6 ucc_geth: Remove UGETH_FILTERING dead code 3e73fc9 ucc_geth: Fix IO memory (un)mapping code ba57469 ucc_geth: Cleanup repetitive ucc_geth_memclean() calls 67c2fb8 ucc_geth: Fix IRQ freeing code in ucc_geth_open() 1762a29 ucc_geth: Fix TX watchdog timeout handling b3431c6 ucc_geth: Fix endless loop in stop_{tx,rx} routines 6086ebc tcp: Stop scaring users with "treason uncloaked!" e98def1 NIU: Implement discard counters, optimize d231776 NIU: Implement discard counters, info/debug statements. b8a606b NIU: Implement discard counters 5664dd5 enc28j60: reduce the number of spi transfers in enc28j60_set_bank() b88a2a2 netdevice zd1201: Use after free 3de77cf Revert "xfrm: Accept ESP packets regardless of UDP encapsulation mode" 739840d ppp: fix segfaults introduced by netdev_priv changes 1b08534 net: Fix module refcount leak in kernel_accept() f34a10b x86: fix warning in arch/x86/kernel/microcode_amd.c c71dd42 tracing: fix warnings in kernel/trace/trace_sched_switch.c 3bddb9a tracing: fix warning in kernel/trace/trace.c 9f22149 x86: ia32.h: remove unused struct sigfram32 and rt_sigframe32 8869a2e x86: asm-offset_64: use rt_sigframe_ia32 b2fa739 x86: sigframe.h: include headers for dependency d1769d5 x86: traps.c declare functions before they get used a2ced6e x86: PAT: update documentation to cover pgprot and remap_pfn related changes - v3 2520bd3 x86: PAT: add pgprot_writecombine() interface for drivers - v3 8a7b12f x86: PAT: change pgprot_noncached to uc_minus instead of strong uc - v3 5899329 x86: PAT: implement track/untrack of pfnmap regions for x86 - v3 2ab6403 x86: PAT: hooks in generic vm code to help archs to track pfnmap regions - v3 e121e41 x86: PAT: add follow_pfnmp_pte routine to help tracking pfnmap pages - v3 3c8bb73 x86: PAT: store vm_pgoff for all linear_over_vma_region mappings - v3 f0bc220 x86: process.c declare c1e_remove_cpu before they get used 5c2628e x86: sigframe.h: add guard macro f269b07 x86: revert CONFIG_RELOCATABLE=y defconfig change 179efcb kbuild: add headerdep used to detect inclusion cycles in header files 40aa4a3 ASoC: Add WM8350 AudioPlus codec driver b8b33cb ASoC: Complain if we fail to create DAPM controls 0b34a3d ASoC: Ease merge difficulties from new architectures 9c2c480 schedstat: consolidate per-task cpu runtime stats 6d102bc tracing/ring-buffer: remove unused ring_buffer size 7c9c160 x86: tls.c declare sys_set_thread_area and sys_get_thread_area before they get used 57a3750 x86: time_64.c timer_interrupt() should be static 3d9101e trace: fix task state printout ea3a6d6 ftrace: add not to regex on filtering functions e05a43b trace: better use of stack_trace_enabled for boot up code f38f1d2 trace: add a way to enable or disable the stack tracer 4087449 Merge branches 'tracing/ftrace' and 'tracing/hw-branch-tracing' into tracing/core 1f04128 ALSA: hda - Convert from takslet_hi_schedule() to tasklet_schedule() d98f9d8 x86: ia32_signal: use sigframe.h 3b0d29e x86: ia32_signal: rename struct sigframe and rt_sigframe c85c2ff x86: signal: prepare to include from ia32_signal.c 41af86f x86: signal: move sigframe.h to arch/x86/include/asm a5c56eb x86: signal: rename sigframe and rt_sigframe on 32-bit f522376 x86: signal: move ia32 func declarations into arch/x86/kernel/signal.c 3218c17 ALSA: hda - Remove duplicated strings from codec name 74c6113 ALSA: hda - Add Intel vendor id string 49ad959 Revert "net: release skb->dst in sock_queue_rcv_skb()" 3b5b35d bonding: use port_params in __update_lacpdu_from_port 3c52065 bonding: use port_params in __update_default_selected() ce6a49a bonding: use port_params in __update_selected() a6ae186 bonding: remove various function declarations c7e703d bonding: init port_params from template 5eefd1a bonding: use plain memcpy in __record_default() b99d6ba bonding: use port_params in __record_pdu() 1055c9a bonding: introduce and use port_params structure aa31281 bonding: improve elaborate port_state assignment 4219988 gianfar: Continue polling until both tx and rx are empty 8c7396a gianfar: Merge Tx and Rx interrupt for scheduling clean up ring c50a5d9 gianfar: Use interface name in interrupt name to distinguish the source. 4669bc9 gianfar: Add Scatter Gather support 8882d9a gianfar: Fix packet drop when out of memory a693722 dccp_diag: LISTEN sockets don't have CCIDs c280266 Merge branch 'linux-2.6' into next 9732d52 Phonet: USB CDC Phonet function for gadget framework 893873f Phonet: get rid of deferred work on the transmission path be67773 Phonet: use atomic for packet TX window 57c81ff Phonet: allocate separate ARP type for GPRS over a Phonet pipe 2d91d78 Phonet: allocate a non-Ethernet ARP type fc10af8 vcan: whitespace fixes a67534a V4L/DVB (9908a): MAINTAINERS: mark linux-uvc-devel as subscribers only 7a95d26 net: ppp_generic - use idr technique instead of cardmaps c0700f9 bnx2x: Fix namespace collision with FLOW_CTRL_{TX,RX} f6d5243 bnx2: Don't redefine FLOW_CTRL_{RX,TX}. 1f2435e bnx2: Update version to 1.9.0. 4e1d0de bnx2: Rename MSI-X vectors. eddce36 Merge branch 'next' of master.kernel.org:/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx into next f40e063 drivers/net/hamradio: Move a dereference below a NULL test f162e97 phylib: Remove unnecessary "reset" fixups in genphy_setup_forced 5a5efed gianfar: Make all BD status writes 32-bit 31de198 gianfar: Add macros for stepping through BDs a22823e gianfar: Remove unused gfar_add_fcb() function parameter 2c2db48 gianfar: Enable padding and Optimize the frame prepended bytes handling 77ecaf2 gianfar: Fix VLAN HW feature related frame/buffer size calculation. 12dea57 gianfar: Fix eTSEC configuration procedure b46a845 gianfar: Optimize interrupt coalescing configuration b31a1d8 gianfar: Convert gianfar to an of_platform_driver d680fe4 x86: entry_64 - introduce FTRACE_ frame macro v2 66896a8 tracing/ftrace: add the printk-msg-only option 2c2d732 tracing/ftrace: use preempt_enable_no_resched_notrace in ring_buffer_time_stamp() 257d938 gianfar: Use gfar_halt to stop DMA in gfar_probe 5eeabf5 tlan: Remove broken support for big buffers 354ade9 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 8bee3f0 x86: ia32_signal: use proper macro __USER32_DS d0b48ca x86: ia32_signal: use __put_user() instead of __copy_to_user() ae417bb x86: signal: use signal_fault() in sys_sigreturn() c8182f0 sgi-xp: xpc needs to pass the physical address, not virtual 189f67c x86: UV fix for global physical addresses c15cb37 Merge commit 'v2.6.28-rc8' into x86/uv fde9071 x86: clean up dead code in vmi_32.c 8ae9366 x86: hardirq: use inc_irq_stat() in non-unified functions e1286f2 x86: documentation fix regarding boot protocol 78f902c Merge commit 'v2.6.28-rc8' into x86/doc ecbf29c xen: clean up asm/xen/hypervisor.h 80f40ee sched: use RCU variant of list traversal in for_each_leaf_rt_rq() a9b43c7 x86: setup.c find_and_reserve_crashkernel should be static c0195b6 x86: ldt.c declare sys_modify_ldt before they get used 7b5b50f x86: signal.c declare do_notify_resume before they get used aab02f0 x86: process_64.c declare __switch_to() and sys_arch_prctl before they get used f63c2f2 xen: whitespace/checkpatch cleanup 40fb171 x86: support always running TSC on Intel CPUs 7e91a12 Merge branch 'x86/cpufeature' into x86/tsc d437797 x86: support always running TSC on Intel CPUs, add cpufeature definition dd7a523 Merge commit 'v2.6.28-rc8' into x86/cpufeature df23cab x86: microcode_amd: modify log messages 5549b94 x86: microcode_amd: use 'packed' attribute for structs 9841530 x86: microcode_amd: remove (wrong) chipset deivce ID checks 6cc9b6d x86: microcode_amd: consolidate macro definitions 29d0887 x86: microcode_amd: replace inline asm by common rdmsr/wrmsr functions 0657d9e x86: microcode_amd: don't pass superfluous function pointer for get_ucode_data 8c13520 x86: microcode_amd: fix compile warning be95776 x86: microcode_amd: fix checkpatch warnings/errors 2a3282a x86: microcode_amd: fix typos and trailing whitespaces in log messages 3c763fd x86: microcode_amd: fix wrong handling of equivalent CPU id 3ca81a5 V4L/DVB (9906): v4l2-compat: test for unlocked_ioctl as well. 8b21c1e V4L/DVB (9885): drivers/media Kconfig's: fix bugzilla #12204 f86d4a9 V4L/DVB (9875): gspca - main: Fix vidioc_s_jpegcomp locking. 11c6c7f V4L/DVB (9781): [PATCH] Cablestar 2 I2C retries (fix CableStar2 support) 4b330be V4L/DVB (9780): dib0700: Stop repeating after user stops pushing button b6fd6f2 x86, mm: limit MAXMEM on 64-bit cfc3198 x86, 32-bit: improve lazy TLB handling code beeb419 x86, 32-bit: add some compile time checks to mem_init() d6be89a x86, 32-bit: simplify alloc_low_page() b93a531 allow bug table entries to use relative pointers (and use it on x86-64) 1796316 x86: consolidate __swp_XXX() macros d072c25 x86, bts: correctly report invalid bts records cc1dc6d x86, bts: remove recursion from get_context bb1f24b ALSA: ca0106 MSI K8N Diamond MB spi_dac 2->1 f649a71 ALSA: ca0106 Add comments to snd_ca0106_details struct 31117b7 ALSA: hda - Add Nvidia vendor id string e9515c3 sched, cpuacct: export percpu cpuacct cgroup stats 720f549 sched, cpuacct: refactoring cpuusage_read / cpuusage_write 9dfc3bc Merge branches 'tracing/fastboot', 'tracing/ftrace', 'tracing/function-graph-tracer' and 'tracing/hw-branch-tracing' into tracing/core 9f690db ipv6: fix the outgoing interface selection order in udpv6_sendmsg() f250dcd ipv6: fix the return interface index when get it while no message is received b24a251 ipv6: Add IPV6_PKTINFO sticky option support to setsockopt() bc02ff9 net: Refactor full duplex flow control resolution e18ce34 net: Move flow control definitions to mii.h f986732 simeth: convert to net_device_ops 8207bef cxgb3: untie strict FW matching 5ad258c vcan: convert to net_device_ops ffcebb1 l2tp: fix UDP checksum support 09a2c3c Phonet: improve GPRS variable names 4ee59d5 isdn: eicon: fix sparse warning: make global functions static 205516c x86: convert rdtscll() to use __native_read_tsc b187920 ipmr: merge common code c40cf51 hp100: use roundup instead of open coding 82ad332 cxgb3: Add multiple Tx queue support. 34f28ec sched: optimize update_curr() 03e89e4 sched: fix wakeup preemption clock 89c88b1 e1000e: Add GRO support b240a0e ethtool: Add GGRO and SGRO ops bf296b1 tcp: Add GRO support 71d93b3 net: Add skb_gro_receive 73cc19f ipv4: Add GRO infrastructure d565b0a net: Add Generic Receive Offload infrastructure 1a881f2 net: Add frag_list support to GSO 89319d3 net: Add frag_list support to skb_segment b53c758 rapidio: struct device - replace bus_id with dev_name(), dev_set_name() aab0d37 powerpc: struct device - replace bus_id with dev_name(), dev_set_name() f63837f powerpc/mm: Remove flush_HPTE() e41e811 powerpc/mm: Rename tlb_32.c and tlb_64.c to tlb_hash32.c and tlb_hash64.c 1a37a3f powerpc/mm: Add local_flush_tlb_mm() to SW loaded TLB implementations a58f053 powerpc: Fix asm EMIT_BUG_ENTRY with !CONFIG_BUG 3045b3c powerpc: Remove dead BIO_VMERGE_BOUNDARY definition 7fe519c powerpc: Introduce ppc_pci_flags accessors edc72ac powerpc/pseries: Check for GIQ indicator before calling set-indicator 6ff04c5 powerpc/powermac: Use set_hard_smp_processor_id() instead of smp_hw_index 13a9801 powerpc: Move smp_hw_index to 32-bit code 6b82b3e powerpc: Remove `have_of' global variable eb14f01 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 0efbb57 powerpc: Fix !CONFIG_PPC_NEED_DMA_SYNC_OPS build warning 46d0149 powerpc/ps3: Add sub-match id modalias support 62d8074 powerpc/ps3: Quiet dmesg output 15cb1cc powerpc: Fix typo in pgtable-ppc64.h 29e931c powerpc/chrp: Add missing of_node_put in pci.c 1e1c568 Merge branch 'merge' into next 9a4a842 8390/8390p: Fix compat netdev ops handling. 91cac62 powerpc/85xx: Fix compile issues with mpc8572ds.dts 8309ce7 powerpc: Fix bogus cache flushing on all 40x and BookE processors v2 3d1ee37 ALSA: Fix declaration of sound_class 8b124a8 net: fix dcbnl_setnumtcs operation check 5ecc361 ixgbe: fix dma mapping unbalance a7276db smsc9420: add ethtool register dump support b1721d2 rpc/rdma: goto instead of copypaste 79f55f1 nf/dccp: merge errorpaths e780f1c irda: merge exit paths 037322a bt/rfcomm/tty: join error paths 0eae1b9 ax25: join the return paths that free skb ebad5c0 can: merge error paths d8eb930 xfrm: join error paths 8da73b7 ip6mr: use goto to common label instead of opencoding 448eb71 ipv6/mcast: join error paths using goto 5ce1bbb xfrm6_tunnel: join error paths using goto 857a6e0 icsk: join error paths using goto 9cd28ab ASoC: switch davinci DPRINTK to pr_debug() a6ba0cb kbuild: fix string equality testing in tags.sh 709cc37 kbuild: fix make tags/cscope 31110eb kbuild: fix make incompatibility 012b215 smsc9420: add ethtool eeprom support e312674 smsc9420: add netpoll support 1757ab2 smsc911x: make smsc911x_poll_controller static 56bde88 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 a7a81fc sfc: Version 2.3 7dde596 sfc: Fix synchronisation of efx_mtd_{probe,rename,remove} 0c53d8c sfc: Use kzalloc() to ensure struct efx_spi_device is fully initialised fa402b2 sfc: Treat probe as unsuccessful if it scheduled a reset ab37735 sfc: Use model numbers for PHY type names ca54a9f sfc: Use mutex_lock_interruptible() for ethtool EEPROM access 11e6696 sfc: Specify a meaningful component for loopback RX-side and PHY tests b453193 sfc: Remove leading spaces 6f158d5 sfc: Add support for SFN4111T e6fa2eb sfc: Add support for Solarflare 10Xpress SFT9001 766ca0f sfc: Rework MAC, PHY and board event handling 04cc8ca sfc: Implement auto-negotiation 177dfcd sfc: Add support for sub-10G speeds 356eebb sfc: Clean up MDIO flag setting 04300d2 sfc: Clean up board identification 06d5e19 sfc: Add phy_type device attribute 27dd2ca sfc: Add support for MMDs numbered >15 f31a45d sfc: Remove MII extension cruft 5005087 sfc: Don't count RX checksum errors during loopback self-test 740ced9 sfc: Abbreviate self-test names so they are not truncated 56536e9 sfc: Provide hints to irqbalance daemon 28b581a sfc: Add option to use a separate channel for TX completions 84ae48f sfc: Restore phy_flash_cfg module parameter 2f7f573 sfc: Work around unreliable strap pins be4ea89 sfc: Clean up waits for flash/EEPROM operations 1ab0062 sfc: Make reset_workqueue driver-global rather than per-NIC 65f667f sfc: Correct interpretation of second param to ethtool phys_id() 2b2734d sfc: Remove unneeded register write 23d30f0 sfc: Change SPI lengths to type size_t a17102b sfc: Board support fixes 702c790 misdn: Fix lockdep warning c31655f mISDN: hfcmulti: use __iomem address space modifier c46f0a2 mISDN: timerdev: use __user for mISDN_read's buffer argument 047ce8f mISDN: comment out unused symbols 863a76e mISDN: fix sparse warning: symbol 'id' shadows an earlier one bb68b1d mISDN: fix sparse warning: symbol 'nskb' shadows an earlier one 65a4051 mISDN: un-export symbol 'plx_lock' 5b83435 mISDN: make global symbols static or include header files dfa96ec mISDN: consistently define 'debug' as '*u_int' bcf9174 mISDN: use NULL pointer instead of plain integer a7b7520 iwlwifi: add contact email to MODULE_AUTHOR 2aa6ab8 iwlwifi: remove 4965 from common uCode API structures b5047f7 iwlwifi: remove includes of iwl-helpers.h where not needed 29d51d9 iwlwifi: remove unused clip_groups priv member edb3422 iwlwifi: fix resume while txpower off 3d5717a iwlwifi: use iwl_poll_direct_bit in EEPROM reading 9c5f89b ath9k: Do not remove header padding on RX from short frames f2f1ba2 iwlwifi: fix build warning (iwl-rx.c) ab1f5c0 mac80211: misc cleanups 4dec9b8 rfkill: strip pointless notifier chain 6fb5325 libertas: Create sysfs entry for changing the mesh probe response limit b77f483 ath9k: Refactor struct ath_softc 59651e8 p54: fix oops on faulty devices b7a530d mac80211: Disable requests for new scans in AP mode 14a4dfe ipw2200: fix scanning while associated d8004cb b43legacy: Fix sparse warnings c1db52b rtl8187: Use usb anchor facilities to manage urbs 388cdf3 ath5k: fix endianness of bitwise ops when installing mic 62d714e spectrum_cs: Fix function names used in debug strings 499b702 orinoco: Fix inappropriate use of IRQ_BAP 0c06dd8 orinoco: Fix function names used in debug strings 39ca5bb p54: enforce strict tx_queue limits 30dab79e iwlwifi: remove qos module parameter 6d1ef1a iwlwifi: 3945 remove qos module parameter 9f92593 iwlifi: remove twice defined SINGLE_FRAME RX FH MASK 759ef89 iwlwifi: change email contact information d070d85 airport: remove useless return in a function returning void 89fad57 mac80211: integrate sta_notify_ps cmds into sta_notify dd397dc p54usb: rewriting rx/tx routines to make use of usb_anchor's facilities a07d361 ath9k: BH shouldn't be enabled when hardirqs are disabled. b143923 mac80211/cfg80211: check endianness in sparse runs f546638c mac80211: remove fragmentation offload functionality e4f2a34 ath9k: remove fragmentation workaround again 21a49fc iwlwifi: fix build error (iwl-rx.c). 8dffff2 mac80211: only create default STA interface if supported 0f202aa ieee80211_security: correct warning about width of auth_mode 8aa15e1 ath9k: avoid rx frames with corrupted descriptor. 2df1bff ath9k: Incorrect band enum causes invalid antenna configuration. e759407 ath9k: Adding support for Atheros AR9285 chipset. e8fbc99 ath9k: Adding initvalues for Atheros AR9285 chipset. 02e90d6 ath9k: Adding AR9285 chipset register information. 306d611 cfg80211: fix nl80211 frequency handling 7ba1c04 mac80211: improve sta_notify documentation 8ee5afb ath9k: Merge structures ath_atx, ath_node_aggr with ath_node f6688cd ath9k: Remove remaining occurrences of CONFIG_SLOW_ANT_DIV 817e11d ath9k: Add a debugfs file to show interrupt statistics 3706de6 ath9k: Maintain rate table choice after association 40990ec ath9k: Fix bug in rate table management 6b3aa6a ath9k: Disable staggered Beacon frame scheduling 3fbb9d9 ath9k: Free Beacon skbs in AP mode 61ff84a iwlwifi: cleanup (remove pm_state) a8ec42c iwlwifi: use rmb/wmb to protect indirect mmio operation 73d7b5a iwlwifi: iwl_poll_{direct_}bit cleanup 42802d7 iwlwifi: fix "MAC in deep sleep" error f056658 iwlwifi: fix time interval misuse in iwl_poll_{direct_}bit 7262796 iwl3945: Fix rate scale for B-mode connection 00e540b iwlwifi: implement iwl_debug_report_frame for iwlagn 447107f mac80211: remove WARN_ON() from ieee80211_hw_config bb608e9 wireless: Incorrect LEAP authentication algorithm identifier. a7db74f rtl8187: Improve wireless statistics for RTL8187 fd28a5b x86: remove simnow earlyprintk support 9470565 x86: remove init_mm export as planned for 2.6.26 d65bd5e sched: add missing arch_update_cpu_topology() call ee79d1b sched: let arch_update_cpu_topology indicate if topology changed 2bed844 tracing/function-graph-tracer: add a new .irqentry.text section, fix cbc34ed sched: fix tracepoints in scheduler 915b0d0 x86: hardirq: introduce inc_irq_stat() fd10902 Merge commit 'v2.6.28-rc8' into x86/irq 8f2466f x86: kill #ifdef for exit_idle() 16855f8 x86: uaccess: return value of __{get|put}_user() can be int e18d7af Merge commit 'v2.6.28-rc8' into x86/mm f8b755a tracing/function-graph-tracer: Output arrows signal on hardirq call/return bcbc4f2 tracing/function-graph-tracer: annotate do_IRQ and smp_apic_timer_interrupt a0343e8 tracing/function-graph-tracer: add a new .irqentry.text section 85072bd x86, debug: remove EBDA debug printk c1dfdc7 Merge commit 'v2.6.28-rc8' into sched/core da485e0 tracing/fastboot: include missing headers 8001530 tracing/fastboot: fix len of func buffer 8808500 x86: soften multi-BAR mapping sanity check warning message ffc2238 x86, bts: fix build error a93751c x86, bts, ftrace: adapt the hw-branch-tracer to the ds.c interface c272477 x86, bts: provide in-kernel branch-trace interface b0884e2 x86, bts: turn BUG_ON into WARN_ON_ONCE f3134de Merge branches 'tracing/function-graph-tracer' and 'tracing/ring-buffer' into tracing/core 7a3c66e net: Add support for the KS8695 ethernet devices. 82a9928 tc35815: Enable StripCRC feature 2cb3772 smsc9420: SMSC LAN9420 10/100 PCI ethernet adapter ea943d4 igb: fixup AER with proper error handling 49d92c7 ASoC: TWL4030: hands-free start-up sequence. 4544f8a ASoC: Fix variable name for Blackfin I2S DAI cd85400 powerpc/4xx: Add L2 cache node to AMCC Canyonlands dts file 132bb7c ALSA: hda - Add development tree URLs in HD-audio.txt f8bbd06 ALSA: hda - Fix another typo in HD-Audio.txt 42a73df ALSA: sb8 - Fix a return code in the error path 5c0b9be ALSA: hda - Fix a compile warning when CONFIG_PM=n 6de45d5 ALSA: ASoC - Fix DAI registration in s3c2443-ac97.c 623b9f6 ALSA: hda - Update HD-Audio.txt 293a4f2 netfilter: xt_NFLOG is dependant of nfnetlink_log 8229efd netns: ip6mr: enable namespace support in ipv6 multicast forwarding code 8b90fc7 netns: ip6mr: declare ip6mr /proc/net entries per-namespace 950d570 netns: ip6mr: declare reg_vif_num per-namespace a21f3f9 netns: ip6mr: declare mroute_do_assert and mroute_do_pim per-namespace 4045e57 netns: ip6mr: declare counter cache_resolve_queue_len per-namespace 4a6258a netns: ip6mr: dynamically allocate mfc6_cache_array 58701ad netns: ip6mr: store netns in struct mfc6_cache 4e16880 netns: ip6mr: dynamically allocates vif6_table bd91b8b netns: ip6mr: allocate mroute6_socket per-namespace. 5eaa65b net: Make static 2107fb8 smsc911x: add dynamic bus configuration 3b1228a ASoC: Stop WM8903 SYSCLK when suspending d58d5d5 ASoC: Convert WM8903 driver to register at I2C probe time 78e19a3 ASoC: Convert WM8900 to do more work at I2C probe time f144b7f ALSA: cs5535 - Make OLPC-stuff depending on MGEODE_LX 0fb497f ALSA: cs5535audio: ensure MIC Bias/Analog Input bail if not on an OLPC machine b5ccc57 ALSA: cs5535audio: clean up OLPC code c8f0eee ALSA: cs5535audio: turn off mic bias on OLPCs by default 01da024 ALSA: cs5535audio: for OLPC, default to Analog Input being off bf1e527 ALSA: cs5535audio: rename V_REFOUT control to MIC Bias e463ae1 ALSA: cs5535audio: enable OLPC's V_REFOUT bias when recording 189d34e ALSA: cs5535audio: check OLPC's Analog Input status vis GPIO 466ae3055 ALSA: cs5535audio: rename OLPC's analog input control && drop AD1888's HPF d6276b7 ALSA: cs5535audio: create function for setting OLPC's Analog Input mode 1e2232b ALSA: cs5535audio: decouple HPF from V_REFOUT in OLPC code b91254e ALSA: cs5535audio: drop ec_analog_input flag for OLPC stuff 3556d18 ALSA: cs5535audio: invert EAPD for OLPC (newer than B3) c8974be ALSA: cs5535audio: Use OLPC/Geode basic infrastructure 57d4bf6 ALSA: cs5535audio: OLPC analog input support b6c52a2 ALSA: cs5535audio: suspend/resume callbacks are only defined with CONFIG_PM b035ce0 ALSA: cs5535audio: turn off PCM properly if closing the audio device 0bed7b2 ALSA: cs5535audio: stick AD1888 bitshift values into a header file 0d0cf00 ASoC: Add codec registration API cdc6936 ALSA: Add support for mechanical jack insertion 1e5fa31 ASoC: TWL4030: Change the name for the DACs d4a7313 ASoC: TWL4030: Small cleanup 6a1bee4 ASoC: TWL4030: Add missing Carkit output 1e297a1 ASoC: Work around warnings from some build environments 11d518e ALSA: hda - Add quirk for HP6730B laptop 6fabd71 ixgbe: Implement PCIe AER support 5e8427e igb: Correctly determine pci-e function number in virtual environment b4557be igb: update handling of RCTL for smaller buffer sizes d2afbe7 ALSA: hda - Update documentation 44411e0 ALSA: ca0106 - Check return value of pci_enable_device() in resume e97fd7c bonding: turn all bond_parm_tbls const 325dcf7 bonding: make tbl argument to bond_parse_parm() const d787552 bonding: remove duplicate declarations 5a03cdb bonding: use pr_debug instead of own macros ef65583 bonding: fix compile error if debug enabled 77afc92 bonding: use table for mode names 5840205 bonding: add and use bond_is_lb() f73f2a6 ALSA: ASoC - Fix symbol conflicts in omac-mcbsp.c acc4216 ALSA: sound: Make static c9b3a40 ALSA: ASoC - Fix wrong section types 24e07db ALSA: ASoC - Fix module init entry for twl4030.c 512bb43 pkt_sched: sch_htb: Optimize WARN_ONs in htb_dequeue_tree() etc. 1b5c007 pkt_sched: sch_htb: Optimize htb_find_next_upper() dbb7a95 phy: Add LSI ET1011C PHY driver 471716f ASoC: Fix typos in Atmel module registration f075233 ASoC: Convert WM8900 to allow registration by machine code 6b05eda ASoC: Wait for non-AC97 codec DAIs before instantiating 435c5e2 ASoC: Initial framework for dynamic card instantiation 64089b8 ASoC: Register non-AC97 codec DAIs 958e792 ASoC: Register platform drivers 12a48a8 ASoC: Add platform registration API 3f4b783 ASoC: Register platform DAIs 9115171 ASoC: Add DAI registration API c5af3a2 ASoC: Add card registration API ca4513f ASoC: TWL4030: Do not alter the Headset output volume on power-up/down df33980 ASoC: TWL4030: DAPM mapping of the Handsfree outputs 5152d8c ASoC: TWL4030: DAPM mapping of the Carkit outputs dfad21a ASoC: TWL4030: DAPM mapping of the Headset outputs 2a6f5c5 ASoC: TWL4030: DAPM mapping of the PreDriv outputs 5e98a46 ASoC: TWL4030: DAPM mapping of the Earpiece output e8ff9c4 ASoC: TWL4030: Add DAPM event handler for output MUX selection 44c5587 ASoC: TWL4030: Add Analog PGA control switch to DAPM 53b5047 ASoC: TWL4030: Correct DAPM_DAC with power control 1e64174 Audit: Log TIOCSTI e19caae bluetooth: Fix unused var warning properly in rfcomm_sock_ioctl(). bcb09dc myri10ge: check fragmentation in LRO get_frag_header() 6cf1a0f bluetooth: Fix rfcomm_sock_ioctl() build failure with debugging enabled. e421300 hydra: fix compilation 30bc448 ALSA: Updates about bug-reporting in ALSA-Configuration.txt 94d6a5f user namespaces: document CFS behavior e726f5f tracing/function-graph-tracer: fix 'flags' variable mismatch efbe027 sched: idle_balance() does not call load_balance_newidle() 4217458 x86: signal: change type of paramter for sys_rt_sigreturn() 380c4b1 tracing/function-graph-tracer: append the tracing_graph_flag 8e1b82e tracing/function-graph-tracer: turn tracing_selftest_running into an int 8b96f01 tracing/function-graph-tracer: introduce __notrace_funcgraph to filter special functions 69b88af x86: clean up get_smp_config() aa9c9b8 Merge branch 'linus' into x86/quirks 361b73d ring_buffer: fix comments 5436499 sched: fix sd_parent_degenerate on non-numa smp machine 4d117c5 Merge branch 'sched/urgent' into sched/core 3e1e900 x86: change static allocation of trampoline area decbec3 tracing/function-graph-tracer: implement a print_headers function 5e03c54 ALSA: hrtimer - Use hard-irq callback 647808a ALSA: timer - Add comments and use ns_to_ktime() 6fdd34d dccp ccid-2: Phase out the use of boolean Ack Vector sysctl 4098dce dccp: Remove manual influence on NDP Count feature 0049bab dccp: Remove obsolete parts of the old CCID interface 63b8e28 dccp: Clean up old feature-negotiation infrastructure 991d927 dccp: Integration of dynamic feature activation - part 3 (client side) 192b27f dccp: Integration of dynamic feature activation - part 2 (server side) 6eb55d1 dccp: Integration of dynamic feature activation - part 1 (socket setup) b74ca3a netdevice: Kill netdev->priv 5a001a0 staging-winbond: Kill directly reference of netdev->priv 7657d90 user namespaces: require cap_set{ug}id for CLONE_NEWUSER c37bbb0 user namespaces: let user_ns be cloned with fairsched 32e176c Sound: hda - Restore PCI configuration space with interrupts off 4bcd426 staging-slicoss: Kill directly reference of netdev->priv 979123d staging-p80211: Kill directly reference of netdev->priv ad660e2 s390_net: Kill directly reference of netdev->priv 26aca5e net: Fix incorrect use of loose in spider_net.c 6c5cc8e wireless: Fix incorrect use of loose in wext.c a2acde0 tcp: fix tso_should_defer in 64bit d5dd917 tcp: use tcp_write_xmit also in tcp_push_one 730c30e Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 726e07a tcp: move some parts from tcp_write_xmit 41834b7 tcp: share code through function, not through copy-paste. :-) ee6aac5 tcp: drop tcp_bound_rto, merge content of it tcp_set_rto 5013316 tcp: no need to pass prev skb around, reduces arg pressure a1197f5 tcp: introduce struct tcp_sacktag_state to reduce arg pressure 775ffab tcp: make mtu probe failure to not break gso'ed skbs unnecessarily 9969ca5 tcp: Fix thinko making the not-shiftable to cover S|R as well f0bc52f tcp: force mss equality with the next skb too. 61c1d05 dccp: use roundup instead of opencoding d2b8881 tty: driverdata and discdata are void * 8a1ec21 tty: Flags should be accessed via the foo_bit interfaces 098401a Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 cb7b48f igb/e1000e: Naming interrupt vectors 1c72194 IB/ehca: Replace modulus operations in flush error completion path 3d08909 IB/ipath: Add locking for interrupt use of ipath_pd contexts vs free 1bf7724 IB/ipath: Fix spi_pioindex value 6114d4c IB/ipath: Only do 1X workaround on rev1 chips 60e8450 IB/ipath: Don't count IB symbol and link errors unless link is UP 890fccb IB/ipath: Check return value of dma_map_single() fab01fc IB/ipath: Fix PSN of send WQEs after an RDMA read resend 6098d10 RDMA/nes: Cleanup warnings 1ee8655 RDMA/nes: Add loopback check to make_cm_node() f3181a1 RDMA/nes: Check cqp_avail_reqs is empty after locking the list abb7725 RDMA/nes: Fix TCP compliance test failures 4a14f6a RDMA/nes: Forward packets for a new connection with stale APBVT entry 183ecfa RDMA/nes: Avoid race between MPA request and reset event to rdma_cm 879e5bd RDMA/nes: Lock down connected_nodes list while processing it c5d321e RDMA/nes: Cleanup cqp_request list usage abf681c kbuild: remove TAR_IGNORE 28a1d86 ASoC: tlv320aic3x: control additions and cleanups 68fb740 ASoC: Add support for OMAP3 Pandora c112d0c ath9k: Use GFP_ATOMIC when allocating TX private area f8316df ath9k: Check for pci_map_single() errors 73a5267 rt2x00: Correctly initialize AID during set_key() 9c3444d rt2x00: Move crypto TX descriptor handling to rt2x00crypto.c 1c02667 rt2x00: Fix check for BSS info changes 4c7f0bc generic swap(): ath9k: rename swap() to swap_array() 74415ed rt2x00: Add RXDONE_CRYPTO_IV/ICV flags 011a033 iwl3945 : Fix a-band association for passive channels a0987a8 iwlwifi: rely on API version read from firmware c02b3ac iwlwifi: store ucode version number f3f911d iwlwifi: fix DMA channel number in iwl_txq_ctx_stop 74221d0 iwl3945: Fix iwl3945 rate scaling. c30e30e iwl3945: add debugfs support d366df5 iwlwifi: move channels sysfs to debugfs 0ad91a3 iwlwifi: move disable/enable interrupts to iwl-core.c c93007e iwl3945: Select correct sta ID from find_station() 99df630 iwlwifi: fix printk size format error 8f5c87d iwlwifi: move host command check function into separate file 304a698 rt2x00: Release rt2x00 2.2.3 dddfb47 rt2x00: Implement HW encryption (rt2500usb) 0b927a0 rt2x00: Remove duplicate code 42c8285 rt2x00: Store retry limit values 1ce9cda rt2x00: Optimize IV/EIV handling aac9207 ath9k: Choose correct ANI calibration period 7470d7f iwlwifi: 5150 enable LO, TXIQ and BB calibrations fd63edb iwlwifi: 5150 parametrize eeprom versions 339afc8 iwlwifi: 5150 compute ct kill threshold 819500c iwlwifi: 5150 enable DC calibration 7100e92 iwlwifi: 5150 add support for 5150 d97809d ath9k: Replace ath9k_opmode with nl80211_iftype 33fd819 iwlwifi: disable AP mode c912765 p54: fix lm87 checksum endianness 0f70f39 cfg80211: "fix" 11d oops c58f9f6 iwl3945: remove obsolete irq handling 8e7be8d mac80211: tx module cleanup. 4a4f4d8 cfg80211: fix wiphy remove if no regulatory request 8bef7a1 mac80211: document ieee80211_tx_info.pad 02e37ba p54: per-device names b2023dd p54: refactoring 64c354d p54: include support for 2.13.24.0 USB LM87 Firmwares 25900ef p54: utilize cryptographic accelerator c772a08 p54: revamp station power save management in access point mode 4571d3b mac80211: add sta_notify_ps callback 2a163c6 ath9k: Add a debugfs file for dumping DMA status 826d268 ath9k: Add initial layout for an ath9k specific debugfs mechanism 16d68ab ath9k: Remove includes that are not needed 88b126a ath9k: Add ATH9K_DEBUG configuration option 04bd463 ath9k: Use cleaner debug masks d9a1f48 rtl8187: fix retry count passed in rtl8187_tx 007e5dd wireless: clean up radiotap a bit e11602b ath9k: Handle channel initialization for AP mode cb3da8c mac80211: accept empty strings for hidden SSIDs e60c774 cfg80211: handle SIOCGIWMODE/SIOCSIWMODE fee5267 cfg80211: handle SIOCGIWNAME f650470 ath5k: enable combined michael mic in key cache 6714349 ath5k: clean up ath5k_hw_set_key f6bac3e ath5k: preserve higher order bits when setting mac address 51e9bf5 iwlwifi: remove uses of __constant_{endian} helpers 10ec4f1 nl80211: relicense nl80211.h under the ISC 72bdcf3 nl80211: Add frequency configuration (including HT40) 72eaa43 mac80211: only transition STAs ps->wake on data frames 0d950d8 iwlwifi: properly initialize calibration command header 8e268e4 mac80211: disassociate prior to unlinking AP/station e327b84 mac80211: deauth when interface is marked down 04adf89 hostap: select required crypto bits in Kconfig 21bbecd ftrace: use init_struct_pid as swapper pid 21a8c46 tracing/ftrace: provide the macro task_curr_ret_stack() 77d683f tracing/ftrace: fix the check of ftrace_trace_task ff32504 tracing/ftrace: don't insert TRACE_PRINT during selftests 970987b Merge branches 'tracing/ftrace', 'tracing/function-graph-tracer' and 'tracing/urgent' into tracing/core a0286c9 x86: fix missing space in printk, #2 12dde4c ALSA: hda - Proper power-map toggling for input pins 55c395b x86: fix missing space in printk e6e3ea2 ALSA: hda - Fix pin-detection in patch_sigmatel.c e061b16 xfrm: Accept ESP packets regardless of UDP encapsulation mode 3f9b766 sgi-xp: Kill directly reference of netdev->priv 17c324f um: Kill directly reference of netdev->priv 6cbeba5 xtensa: Kill directly reference of netdev->priv 28945dd simeth: Kill directly reference of netdev->priv 5da9527 ALSA: ca0106 - Add power-management support 84d727a powerpc/4xx: Add support for ISA holes on 4xx PCI/X/E 9d2421e powerpc/44x: update ppc44x_defconfig 23f402c powerpc/kvm: update KVM config options in ppc44x_defconfig 32c8dab ASoC: Remove obsolete declaration of struct snd_soc_clock_info affa219 x86: change thread_info's flag field back to 32 bits c051556 Merge commit 'v2.6.28-rc7' into x86/cleanups 4e7c4d7 ALSA: hda - Add reference to HD-Audio.txt in ALSA-Configuration.txt 1fd8f2a tracing/function-graph-tracer: handle ftrace_printk entries faec2ec ftrace: avoid duplicated function when writing set_graph_function 6b25393 tracing: fix typo and missing inline function e32d895 ftrace: add ability to only trace swapper tasks 978f3a4 ftrace: use struct pid 5ef6476 pid: fix the do_each_pid_task() macro 804a685 ftrace: trace single pid for function graph tracer 0ef8cde ftrace: use task struct trace flag to filter on pid ea4e2bc ftrace: graph of a single function b29144c Merge branches 'tracing/ftrace' and 'tracing/function-graph-tracer' into tracing/core b8307db Merge commit 'v2.6.28-rc7' into tracing/core 4151d15 ALSA: hda - Add forgotten module alias for Nvidia MCP67 HDMI e5f7343 ALSA: hda - Add MCP67 HDMI support 36cbac5 net/ipv6/ip6mr.c: Use kmem_cache_zalloc, remove memset df66f85 if_usb: Kill directly reference of netdev->priv 4850218 smc91x: remove isa stuff from smc91x driver 999890b net: /proc/net/ip_mr_cache, display Iif as a signed short 1ea472e net: fix /proc/net/ip_mr_cache display - V2 9de6d99 netdev: remove pathetic compile-command lines ec98ce4 Merge branch 'master' into next 8865c41 atm: 32-bit ioctl compatibility dcd39c9 ne-h8300: convert to net_device_ops 5618f0d hydra: convert to net_device_ops b611479 zorro8390: convert to net_device_ops 3e1d7cd e1000: e1000_adapter->polling_netdev is useless a4d2f34 ixgbe: function comment typo e4e6c38 jme: Remove 64 and 40 bit dma_mask 4f40bf4 jme: GHC register control fix for new hardware 59e4220 pkt_sched: sch_htb: Replace HTB_ACCNT() macro with inlines 23cb913 pkt_sched: sch_htb: Remove L2T() 244ef9b bond: Kill directly reference of netdev->priv 9734124 mptlan: Kill directly reference of netdev->priv 0eade1f dvb: Kill directly reference of netdev->priv c19f7a3 pkt_sched: sch_htb: Clean htb_class prio and quantum fields 633fe66 pkt_sched: sch_htb: Remove htb_sched nwc_hit field 4164d66 pkt_sched: sch_htb: Remove htb_class aprio field cb52deb forcedeth: power down phy when interface is down a316084 drivers/net/smc911x.c: smc911x_drv_probe() cleanup fd568fc drivers/isdn/mISDN: use ARRAY_SIZE 838361f isdn: Kill directly reference of netdev->priv 25dd7e6 hysdn: Kill directly reference of netdev->priv 5240488 Phonet: basic net namespace support d81d228 xfrm: Accept XFRM_STATE_AF_UNSPEC SAs on IPv4/IPv6 only hosts ff80aa9 setlocalversion: add git-svn support 167d6a0 setlocalversion: print correct subversion revision 846442c scripts: improve the decodecode script c39dd50 scripts/package: allow custom options to rpm 5dae9a5 genksyms: allow to ignore symbol checksum changes 64e6c1e genksyms: track symbol checksum changes a680eed tags and cscope support really belongs in a shell script 361425f powerpc/85xx: Create dts for each core in CAMP mode for MPC8572DS f6682f9 kconfig: fix options to check-lxdialog.sh 3b1ec9f kbuild: gen_init_cpio expands shell variables in file names efddd79 remove bashisms from scripts/extract-ikconfig d230124 kbuild: teach mkmakfile to be silent fd54f50 kbuild: use KECHO convenience echo 5410ecc kbuild: introduce $(kecho) convenience echo d03fab4 kbuild: kill output in silent mode of mkcompile_h d8672b4 kbuild: expand -I in KBUILD_CPPFLAGS 5b91c33 kbuild: fix -I option expansion with O=... builds dc7d7b8 ASoC: Remove platform device from DAI suspend and resume operations 07c84d0 ASoC: Remove device from platform suspend and resume operations 384c89e ASoC: Push debugfs files out of the snd_soc_device structure a7fe49b ALSA: Add more documentation about HD-audio driver 06be64a powerpc/85xx: Don't reset the MPIC for CAMP mode on MPC8572DS c64ef80 powerpc/85xx: Add localbus node in mpc8572ds dts file 965dc5f powerpc/86xx: Basic GPIO support for GE Fanuc SBC610 09a3fba powerpc/qe: Move cmxgcr_lock definition from the ucc.c into the qe.c d3a8cda powerpc/86xx: Add use of Epson RTX-8581 RTC to GE Fanuc SBC610 dts 24a9959 powerpc/85xx: Fix compile warnings in mpc85xx_mds.c e8e1abe ftrace: fix race in function graph during fork 0a37119 trace: fix output of stack trace 0f62083 ALSA: Reduce stall detection timeout in riptide.c d5b26db powerpc/85xx: Add support for SMP initialization 06b9096 powerpc/85xx: minor head_fsl_booke.S cleanup b389889 powerpc: Better setup of boot page TLB entry 6a800f3 powerpc: Add SPE/EFP math emulation for E500v1/v2 processors. 033b8a3 powerpc/math-emu: Remove redundant 'ret' 463a8c0 powerpc/math-emu: Adopt new version of _FP_CHOOSENAN cf03033 powerpc/math-emu: Fix single float point division bug 55b9121 powerpc: Remove unncessary SPE related compiler flag 0640f84 Merge branch 'topic/hda-modularize' into topic/hda 6f2a974 ASoC: tlv320aic3x: headset/button press support 4b4fffd ASoC: Fix WM8903 right mixer bypass path 5920b45 ASoC: TWL4030: Add input selection and gain controls 7947cf0 hvc_console: Always schedule resize work on resize 3d26825 powerpc: Make open count variables signed in hvcs/hvsi/hvc_console dc42149 drivers/hvc: Add missing of_node_put b908b53 of/gpio: Implement of_get_gpio_flags() 2fd091f powerpc/macintosh: Fix unsigned check in smu_sat_get_sdb_partition() e6a437e of/i2c: Fill the archdata for I2C devices 3f3b163 powerpc and sparc: Introduce dev_archdata node accessors a0e2f9f powerpc/BSR: Support multiple OF-node description of BSR 6358d6c powerpc/ibmebus: Get rid of the IRQ mapping in ibmebus_free_irq() 786b32f powerpc: Eliminate NULL test and memset after alloc_bootmem 15e09c0 powerpc: Add sync_*_for_* to dma_ops c4d04be powerpc: Allow the max stack trace depth to be configured 0186f47 powerpc: Use RCU based pte freeing mechanism for all powerpc df3b861 powerpc: Add a local_flush_tlb_page to handle kmap_atomic invalidates f4f3a12 powerpc: hash_page_sync should only be used on SMP & STD_MMU_32 4ee5f55 powerpc: Fix ppc32 mm_struct CPU tracking in SMP 1b98326 powerpc: Add MSR[CE, DE] to the MSR bits we print on show_regs() 764f3b9 tracing/function-graph-tracer: enabled by default 5274918 Merge branch 'merge' 29fa0b3 xfrm: Cleanup for unlink SPD entry 22d5532 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 166d3c7 tracing/function-graph-tracer: improve duration output 11e84ac tracing/function-graph-tracer: display unified style cmdline and pid 62679ef ftrace: add checks on ret stack in function graph e49dc19 ftrace: function graph return for function entry 7ee991f ftrace: print real return in dumpstack for function graph 044fa78 ring-buffer: change "page" variable names to "bpage" 14a866c ftrace: add ftrace_graph_stop() bb4304c ftrace: have function graph use mcount caller address 347fdd9 ftrace: clean up function graph asm 8789a9e ring-buffer: read page interface abc9b56 ring-buffer: move some metadata into buffer page a5e2588 ftrace: replace raw_local_irq_save with local_irq_save dfdc543 Merge commit 'v2.6.28-rc7'; branch 'x86/dumpstack' into tracing/ftrace f0461d0 Merge branches 'tracing/ftrace' and 'tracing/function-graph-tracer' into tracing/core 181de82 x86: remove dead BIO_VMERGE_BOUNDARY definition 6083aa4 Merge branch 'x86/io' into x86/iommu 3f8c6c9 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-next-2.6 aa2ba5f Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 6802454 Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus ca17584 mac8390: update to net_device_ops b9a9b4b etherh: build fix for net-next dcb7731 x86: fix broken flushing in GART nofullflush path 87689d5 ASoC: Push platform registration down into the card 96841ba ALSA: ac97 - Include ac97_codec.h for ac97_bus_type declaration 6308419 ASoC: Push workqueue data into snd_soc_card 39da581 virtio_net: large tx MTU support 8daa190 x86, apm: remove CONFIG_APM_REAL_MODE_POWER_OFF in favor of a kernel parameter 48d68b2 tracing/function-graph-tracer: support for x86-64 16950e0 ALSA: emu10k1 - Add capture boost mixer switch for Audigy 66eafeb function trace: fix a bug of single thread function trace 222658e Merge branches 'tracing/branch-tracer', 'tracing/ftrace', 'tracing/function-graph-tracer', 'tracing/markers', 'tracing/powerpc', 'tracing/stack-tracer' and 'tracing/tracepoints' into tracing/core 74bf3ca Merge branch 'tracing/urgent' into tracing/core 6976a1d net: percpu_counter_inc() should not be called in BH-disabled section 422d9cd dccp: Feature activation handlers b1ad004 dccp: Processing Confirm options e77b836 dccp: Process incoming Change feature-negotiation options 75757a7 dccp: Preference list reconciliation 8b7b6c7 dccp: Integrate feature-negotiation insertion code 0971d17 dccp: Insert feature-negotiation options into skb 7c37d74 IB/ipath: Improve UD loopback performance by allocating temp array only once 64f22fa IB/ipath: Fix pointer-to-pointer thinko in ipath_fs.c 75c21ae IB/ehca: Fix locking for shca_list_lock 0ecfe79 ASoC: Don't free static data in WM9713 4290239 ASoC: TWL4030: Add volume controls for outputs d889a72 ASoC: TWL4030: Change the common playback volume controls 381a22b ASoC: TWL4030: Change the capture volume control to TLV fa5c769 ASoC: Remove in-code changelog from AD73311 driver 7d8c16a ASoC: Annotate core removal function 968a602 ASoC: Rename snd_soc_register_card() to snd_soc_init_card() 6c415b9 sched: add uid information to sched_debug for CONFIG_USER_SCHED 50cec5c x86: fix dma_mapping_error for 32bit x86, cleanup f6d2e6f Merge branch 'x86/urgent' into x86/iommu 682d587 ALSA: ASoC: Fix old-style trigger callback in s3c2443-ac97.c 5220ed6 ALSA: ASoC: Fix compile warnings on corgi.c 0bc286e Revert "ALSA: soc - Fix compile warnings in wm8903.c" 2caf6a1 ALSA: ASoC: Remove superfluous dependency on SND_SOC 3af4182 Merge branch 'upstream' into topic/asoc f5d4c67 ALSA: soc - Remove obsoleted sound/driver.h inclusion 1966bbd ALSA: ac97 - Add WM9715 to AC97 IDs 9171e5e ALSA: soc - Fix compile warnings in wm8903.c ade9b2f ALSA: pcxhr - change firmware filenames 480cf66 ALSA: Fix a compile warning in cs46xx_lib.c 8c2f767 ALSA: hda - Remove unnecessary caches for power states in patch_sigmatel.c c9b46f9 ALSA: hda - Use amp cache for SPDIF mute controls in patch_sigmatel.c 9a5df92 Bluetooth: Fix RFCOMM release oops when device is still in use 2e79299 Bluetooth: Fix format arguments warning a418b89 Bluetooth: Enable per-module dynamic debug messages 5ddd4a6 Bluetooth: Allow SCO audio with Asus WL-BTD202 dongle 7a9d402 Bluetooth: Send HCI Reset command by default on device initialization 12421b4 Bluetooth: Remove deprecated hci_usb driver 7b99d17 Bluetooth: Respect HCI_UART_DEBUG config in hci_ll.c 51a6fbc Bluetooth: Change simple_strtol to simple_strtoul db7aa1c Bluetooth: Fix warnings for bt_key_strings and bt_slock_key_strings c6bf514 Bluetooth: Fix leak of uninitialized data to userspace 7644d63 Bluetooth: Fix TX error path in btsdio driver 6a88adf Bluetooth: Add suspend/resume support to btusb driver a780efa Bluetooth: Handle bulk URBs in btusb driver from notify callback 2eda66f Bluetooth: Add fine grained mem_flags usage to btusb driver 93093d0 x86: provide readq()/writeq() on 32-bit too, complete a0b1131 x86: provide readq()/writeq() on 32-bit too, cleanup 2c5643b x86: provide readq()/writeq() on 32-bit too 4385cec x86: intel_cacheinfo, minor show_type cleanup 25f1304 gigaset: get rid of info() and warn() macros af4218c gigaset: remove unnecessary poll method f08340c tracepoints: Documentation TPPROTO misspelt in Documentation/tracepoints.txt 65c6dc6 tracing/branch-tracer: include missing irqflags.h c5419e6 cxgb3: Fix sparse warning and micro-optimize is_pure_response() f95be180 phy: add the ST ste10Xp PHYs 4621bf1 phy: Add file missed in previous commit. 0f0ca34 phy: power management support 914804b phy: add natsemi PHY driver 65a467f ne2: silence static never defined warnings d8e8034 bnx2: use net_device_stats nowadays available in net_device 9fd4287 niu: use net_device_stats nowadays available in net_device 70574a9 sched: move double_unlock_balance() higher f1860c3 Merge branch 'sched/urgent' into sched/core 604094f vfs, seqfile: export mangle_path() generally a838c2e markers: comment marker_synchronize_unregister() on data dependency 02834f1 ALSA: ac97 - Remove EXPERIMENTAL from CONFIG_SND_AC97_POWER_SAVE 36adba1 ALSA: hda - Remove EXPERIMENTAL from CONFIG_SND_HDA_POWER_SAVE 8caac56 aperture_64.c: clarify that too small aperture is valid reason for this code ff7a326 ALSA: hda - Don't export symbols when built-in kernel 645f10c ALSA: hda - Check MODULE instead of CONFIG_SND_HDA_INTEL_MODULE 5b3eec0 x86: ret_from_fork - get rid of jump back 3bdae4f Merge branch 'x86/debug' into x86/irq 9f1e87e x86: entry_64.S - trivial: space, comments fixup de04b10 ALSA: oxygen: add Claro halo support 57a5ef4 ALSA: hda - Add quirk for Sony VAIO VGN-SR19XN 56d1771 ALSA: hda - Clear codec->proc_widget_hook at reset 2d34e1b ALSA: hda - Add IDT/STAC-specific proc output 5ae3a13 x86: uv bau interrupt -- use proper interrupt number f1eecf0 powerpc/ppc32: static ftrace fixes for PPC32 0029ff8 powerpc: ftrace, use create_branch ec682ce powerpc: ftrace, added missing icache flush d9af12b powerpc: ftrace, fix cast aliasing and add code verification c7b0d17 powerpc: ftrace, do nothing in mcount call for dyn ftrace c072c24 ftrace: improve documentation 1d9b16d x86: move GART specific stuff from iommu.h to gart.h bb40abe ALSA: hda - Remove unused proc entry in hda_bus struct daead53 ALSA: hda - Add codec-specific proc hook 50cdaf0 ftrace: improve seq_operation of ftrace 6113b74 pkt_sched: fix sparse warning ea5693c netlink: allow empty nested attributes c7425ac tracing, alpha: fix build: add missing #ifdef CONFIG_STACKTRACE ed77a89 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6 d51090b tracing/function-graph-tracer: more output tweaks 1a05615 tracing/function-graph-tracer: adjustments of the trace informations 475ad8e decnet: compile fix for removal of byteorder wrapper 11cd41b ALSA: hda - Fix build error with CONFIG_SND_HDA_POWER_SAVE feea6a5 ixgbe: section fixes 157653c sctp: fix missing label when PROC_FS=n 1289e9e ALSA: hda - Modularize HD-audio driver 73f6a12 ALSA: sound/pci/mixart/mixart.c: Add missing snd_card_free 30d72e9 ALSA: hda - Fix creation of automatic capture mixers 529bd6c ALSA: hda - Fix PCM reconfigure c2c631e x86: entry_64.S - use ENTRY to define child_rip 3345453 x86: entry_64.S - use X86_EFLAGS_IF instead of hardcoded number fee2fba ALSA: hda - Move power_save option to hda_intel.c 986862b ALSA: hda - make some functions static d211af0 i386: get rid of the use of KPROBE_ENTRY / KPROBE_END ddeb8f2 x86_64: get rid of the use of KPROBE_ENTRY / KPROBE_END 83a8df6 tracing/function-graph-tracer: enhancements for the trace output c7cc773 Merge branches 'tracing/blktrace', 'tracing/ftrace', 'tracing/function-graph-tracer' and 'tracing/power-tracer' into tracing/core 40a914f igb: Add support for pci-e Advanced Error Reporting f411303 e100: cleanup link up/down messages d276016 ixgb: cleanup link up/down messages b30c4d8 e1000: cleanup link up/down messages a46e534 ixgbe: cleanup link up/down messages 527d47c igb: link up/down messages must follow a specific format c4106aa decnet: remove private wrappers of endian helpers 5b9ab2e Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 12666f0 ALSA: snd-usb-caiaq: clean up the control adding code 851fd7b cxgb3: Update FW loading path. ad58633 cxgb3: integrate FW and protocol engines in the kernel 5256554 cxgb3: avoid potential memory leak. 43a944f cxgb3: set hard_xmit in the netdev_ops b5ddedc Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 244e6c2 pkt_sched: gen_estimator: Optimize gen_estimator_active() 54f0191 ASoC: Allow more routing features for tlv320aic3x b235507 mac80211_hwsim: fix-up some print_mac merge damage 860c6e6 mac80211: fix unaligned access in ieee80211_wep_encrypt_data b50563a p54: fix wmm queue settings 99405f9 ath9k: Use proper TX channel width for setting channels ff37e33 ath9k: Code scrub bf8c1ac nl80211: Change max TX power to be in mBm instead of dBm 39d1ffe orinoco: Provide option to avoid unnecessary fw caching ac7cafd orinoco: Resume spectrum_cs in the same way as orinoco_cs 2cea7b2 orinoco: Cache Symbol firmware 7473431 orinoco: Separate fw caching from download cb71d9b ath9k: Handle -ENOMEM on RX gracefully 24689c8 rfkill: always call get_state() hook on resume f80b5e9 rfkill: preserve state across suspend 5925d97 mac80211: Look out for some other AP when disassoc is received. e2f367f nl80211: Report max TX power in NL80211_BAND_ATTR_FREQS 1048643 ath5k: Clean up eeprom parsing and add missing calibration data 7ac4701 ath9k: Dont update rate control for every AMPDU 40fc95d iwlwifi: TX update chicken bits 31a73fe iwlwifi: TX setup fix confusion between TX queue and TX DMA channel 25e35a5 iwlwifi: 4965 define firmware file name once 201706a iwlwifi: enable base band calibration in 5000 HW 83dde8c iwlwifi: move iwl_clear_stations_table to iwl-sta.c ce546fd iwl3945 : Fix ad-hoc mode for 3945 0e149cf ath5k: set mac address in add_interface 8f93b8b ath9k: Use straightforward PCI routines to setup the TX buffer. daa9deb ath9k: Update TX trigger level on a FIFO underrun. 788a3d6 ath9k: Fix bug in deciphering channel flags c428839 ath9k: Move TX completion routine to xmit.c 2c5a744 ath9k: Use helpers 46d14a5 ath9k: General code scrub e63835b ath9k: Remove ath9k_rate_table a8efee4 ath9k: Use rate_driver_data fe7f4a7 ath9k: Remove ath_rate_softc 5ddfac3 ath9k: Remove rate control reference in VAP ffd651c ath9k: We don't support non-HT devices, so remove superfluous code. be0418a ath9k: Revamp RX handling 2b406f1 ath9k: Nuke fixed rate handling in driver 46494e6 ath9k: Remove half/quarter rate tables 4df8ec6 ath9k: Remove ath_rate_newassoc() 7b4d273 ath9k: Remove ath_setup_rates fe60594 ath9k: Simplify RC alloc/free functions 256b775 ath9k: Merge struct ath_tx_ratectrl with ath_rate_node 3fcdfb4 ath9k: Fix panic while unregistering rfkill 1548c86 rtl8187: Fix transmission count sent to mac80211 1dc5a84 mac80211: Fix pid rate-setting algorithm to allow rate changes d507748 rt2x00: Don't switch off LED on initialization f941f85 orinoco: indicate it is using dBm in wireless_stats and spy 8eb41c9 mac80211: make Minstrel the default rate control algorithm eea0579 ALSA: pcsp - Fix starting the stream with HRTIMER_CB_IRQSAFE_UNLOCK e7dd8c1 Merge branch 'topic/misc' into topic/pcsp-fix 0bfc245 blktrace: port to tracepoints, update 5f3ea37 blktrace: port to tracepoints 414ff49 ASoC: Fix word wrapping in OMAP Kconfig 3d4cd60 smc-mca: Fix build failure due to typo. 7035560 net: release skb->dst in sock_queue_rcv_skb() 4db646b x86: microcode: fix sparse warnings f3f47a6 tracing: add "power-tracer": C/P state tracer to help power optimization 4f19962 ALSA: sound/pci/hda/hda_codec.c: cleanup kernel-doc 437f24f ftrace: add cpu annotation for function graph tracer 660c7f9 ftrace: add thread comm to function graph tracer e53a631 ftrace: let function tracing and function return run together 5a45cfe ftrace: use code patching for ftrace graph tracer df4fc31 ftrace: add function tracing to single thread 3496f92 Merge branch 'serge-next' into next dd24c00 net: Use a percpu_counter for orphan_count 1748376 net: Use a percpu_counter for sockets_allocated c1b5687 tc: policing requires a rate estimator 71bcb09 tc: check for errors in gen_rate_estimator creation 0e991ec tc: propogate errors from tcf_hash_create 5ceb40d x86: signal: unify signal_{32|64}.c e5fa2d0 x86: signal: unify signal_{32|64}.c, prepare bfeb91a x86: signal: cosmetic unification of __setup_sigframe() and __setup_rt_sigframe() 2601657 x86: signal: move {setup|restore}_sigcontext() d144d5e ftrace: adding other non-leaving .text sections 4ef8e76 ne2000: convert to net_device_ops 53cdd28 3c503: convert to net_device_ops e0b8cb0 stnic: convert to net_device_ops 7d359da apne: convert to net_device_ops 50014f1 ne2: convert to net_device_ops 4be7ef4 hp: convert to net_device_ops 0ec4d4f lne390: convert to net_device_ops 8284abe e2100: convert to net_device_ops 9a9aa14 es3210: convert to net_device_ops d269941 ne3210: convert to net_device_ops d079841 smc: convert to net_device_ops d4a97d4 hp-plus: convert to net_device_ops 458228b wd: use net_device_ops 8884c09 8390: add common net_device ops c2324b6 tracing: function graph tracer, fix b27aead netns xfrm: per-netns sysctls c68cd1a netns xfrm: /proc/net/xfrm_stat in netns 59c9940 netns xfrm: per-netns MIBs 4fb236b netns xfrm: AH/ESP in netns! 7013ec3 netns PF_KEY: per-netns /proc/pfkey 07fb0f1 netns PF_KEY: part 2 3fa87a3 netns PF_KEY: part 1 7c2776e netns xfrm: flush SA/SPDs on netns stop fbda33b netns xfrm: ->get_saddr in netns c5b3cf4 netns xfrm: ->dst_lookup in netns db983c1 netns xfrm: KM reporting in netns 7067802 netns xfrm: pass netns with KM notifications fc34acd netns xfrm: xfrm_user module in netns a6483b7 netns xfrm: per-netns NETLINK_XFRM socket bd235e3 netns xfrm: xfrm_input() fixup ddcfd79 netns xfrm: dst garbage-collecting in netns 3dd0b49 netns xfrm: flushing/pruning bundles in netns 99a6665 netns xfrm: xfrm_route_forward() in netns f6e1e25 netns xfrm: xfrm_policy_check in netns 52479b6 netns xfrm: lookup in netns cdcbca7 netns xfrm: policy walking in netns 8d1211a netns xfrm: finding policy in netns 33ffbbd netns xfrm: policy flushing in netns 1121994 netns xfrm: policy insertion in netns e92303f netns xfrm: propagate netns into policy byidx hash 284fa7d netns xfrm: state walking in netns 5447c5e netns xfrm: finding states in netns 12604d8 netns xfrm: fixup xfrm_alloc_spi() 221df1e netns xfrm: state lookup in netns 0e60245 netns xfrm: state flush in netns 98806f7 netns xfrm: trivial netns propagations 64d0cd0 netns xfrm: propagate netns into bydst/bysrc/byspi hash functions 66caf62 netns xfrm: per-netns policy hash resizing work dc2caba netns xfrm: per-netns policy counts a35f6c5 netns xfrm: per-netns xfrm_policy_bydst hash 8b18f8e netns xfrm: per-netns inexact policies 8100bea netns xfrm: per-netns xfrm_policy_byidx hashmask 93b851c netns xfrm: per-netns xfrm_policy_byidx hash adfcf0b netns xfrm: per-netns policy list 0331b1f netns xfrm: add struct xfrm_policy::xp_net 50a3065 netns xfrm: per-netns km_waitq c783714 netns xfrm: per-netns state GC work b8a0ae2 netns xfrm: per-netns state GC list 6308273 netns xfrm: per-netns xfrm_hash_work 0bf7c5b netns xfrm: per-netns xfrm_state counts 529983e netns xfrm: per-netns xfrm_state_hmask b754a4f netns xfrm: per-netns xfrm_state_byspi hash d320bbb netns xfrm: per-netns xfrm_state_bysrc hash 73d189d netns xfrm: per-netns xfrm_state_bydst hash 9d4139c netns xfrm: per-netns xfrm_state_all list 673c09b netns xfrm: add struct xfrm_state::xs_net d62ddc2 netns xfrm: add netns boilerplate c958396 xfrm: initialise xfrm_policy_gc_work statically 46a8494 3c523: fix warning in drivers/net/3c523.c 99da1a8 depca: fix warning in drivers/net/depca.c a098397 atlx: fix warning in drivers/net/atlx/atl2.c 287b6e6 tracing/function-return-tracer: set a more human readable output fb52607 tracing/function-return-tracer: change the name into function-graph-tracer 45555c0 bluetooth: fix warning in net/bluetooth/rfcomm/sock.c ff0db04 sunrpc: fix warning in net/sunrpc/xprtrdma/verbs.c e14bec2 ax25: fix warning in net/ax25/sysctl_net_ax25.c 509dcee Merge branches 'tracing/hw-branch-tracing' and 'tracing/branch-tracer' into tracing/core e6a1762 mlx4: fix warning in drivers/net/mlx4/mcg.c 3ed7cc0 dccp: fix warning in net/dccp/options.c b71e839 cassini: fix warning in drivers/net/cassini.c b58515b mlx4: fix error path in drivers/net/mlx4/en_rx.c 4174439 z85230: fix warning in drivers/net/wan/z85230.c ef0cd87 sis900: fix warning in drivers/net/sis900.c 180b65d fix warning in fs/dlm/netlink.c d3f644d dsa: fix warning in net/dsa/mv88e6060.c 2a9e797 dsa: fix warning in net/dsa/mv88e6xxx.c 55205d4 ipv6: fix warning in net/ipv6/ip6_flowlabel.c dc0a001 pkt_sched: fix warning in net/sched/sch_hfsc.c ed72b9c sunrpc: fix warning in net/sunrpc/xprtrdma/svc_rdma_transport.c be5a3c6 qla3xxx: fix warning in drivers/net/qla3xxx.c f166400 niu: fix another warning in drivers/net/niu.c 51e0f05 niu: fix warnings in drivers/net/niu.c 2e6a684 s2io: fix warning in drivers/net/s2io.c 09bb521 netns: filter out uevent not belonging to init_net cb13fc2 ixgbe: Naming interrupt vectors 70340d7 niu: Naming interrupt vectors. 9f782db tcp: skb_shift cannot cache frag ptrs past pskb_expand_head f6486d4 pkt_sched: sch_api: Remove qdisc_list_lock 723b461 net: udp_unhash() can test if sk is hashed 5bc0b3b net: Make sure BHs are disabled in sock_prot_inuse_add() 8eecaba tcp: tcp_limit_reno_sacked can become static 4ada424 mac80211: don't assume driver has been attached on registration 4d3601b ath9k: Configure AR_PHY_SWITCH_COM with apropriate antenna control ced0957 p54: honour bss_info_changed's basic_rates and other settings 40db0b2 p54pci: cache firmware for suspend/resume ffed785 p54: minor fixes d131bb5 p54: enable Mesh Point support f16f33d mac80211: Use the HT capabilities from the IE instead of the station's caps. 97b777d ath9k: make DMA memory consistent 1d450cf ath9k: Clarify we only want 32-bit DMA f1ca216 rt2x00: Detect USB BULK in/out endpoints c8f9697 rtl8187: Remove module warning and dependence on CONFIG_EXPERIMENTAL 3517afd rtl8187: feedback transmitted packets using tx close descriptor for 8187B b4572a9 rtl8187: implement conf_tx callback to configure tx queues 54ac218 rtl8187: fix 8187B throughput regression db93e7b ath9k: Race condition in accessing TX and RX buffers. 306efdd ath9k: IRQ should be disabled before calling free_irq() e97275c ath9k: Build RFKILL feature even when RFKILL subsystem is a MODULE f9bbf43 ath9k: incorrect noise floor threshold values. 9f80420 ath9k: INI update for atheros chipets. ea4a82d iwlwifi: enable custom fw regulatory solution 14b9815 cfg80211: add support for custom firmware regulatory solutions 3f2355c cfg80211/mac80211: Add 802.11d support 88dc1c3 cfg80211: mark regdomains with > NL80211_MAX_SUPP_REG_RULES invalid 02ba0b3 cfg80211: call_crda() won't tell us if CRDA was present a01ddaf cfg80211: expect different rd in cfg80211 when intersecting b8295ac cfg80211: separate intersection section in __set_regdom() 8375af3 cfg80211: remove switch from __set_regdom() 5203cdb cfg80211: remove switch from __regulatory_hint() 91e9900 cfg80211: mark negative frequencies as invalid e0737a7 iwlwifi: iwl-fh.h cleanup 34faf78 iwlwifi: some fh document fix and cleanup 352bc8d iwlwifi: configure_filter rewrite c305606 iwlwifi : fix checkpatch.pl errors dbce56a iwlwifi: replace magic constants with define 417f114 iwlwifi: rs: remove fc variable and other cleanups 9f58671 iwlwifi: consolidate station management code cee53dd iwl3945 : Simplify iwl3945_pci_probe 0e3de99 rt2x00: Fix TX failure path 0f829b1 rt2x00: Move rt73usb register access wrappers into rt2x00usb c9c3b1a rt2x00: Cleanup indirect register access 9764f3f ath5k: name pci driver "ath5k" too d6e8cc6 netfilter: fix warning in net/netfilter/nf_conntrack_ftp.c 65f233f netfilter: fix warning in net/netfilter/nf_conntrack_proto_tcp.c 1e9b51c x86, bts, ftrace: a BTS ftrace plug-in prototype 8bba1bf x86, ftrace: call trace->open() before stopping tracing; add trace->print_header() 6abb11a x86, bts, ptrace: move BTS buffer allocation from ds.c into ptrace.c ca0002a x86, bts: base in-kernel ds interface on handles 7d55718 Merge branches 'tracing/core', 'x86/urgent' and 'x86/ptrace' into tracing/hw-branch-tracing 9e0f1b7 ASoC: Clean up kernel-doc for snd_soc_dai_set_fmt 5c0d7bb ASoC: tosa: move gpio probing to machine callbacks 4451582 ASoC: Add support for TI SDP3430 9c8f1a0 ASoC: Fix TWL4030 Kconfig dependency 375e8a7 ASoC: OMAP: Add support for mono audio links in McBSP DAI 0be4305 ASoC: OMAP: Apply channel constrains to N810 machine driver b0e6481 ALSA: hda - Really fix bits value in proc output eefe93b Merge branch 'topic/fix/hda' into topic/hda ee09543 ALSA: hda - Add quirk for MSI 7260 mobo c0193f3 ALSA: pcxhr - add support for pcxhr stereo sound cards (mixer part) 2f9889a Revert "hso: Fix crashes on close." ab153d8 Revert "hso: Fix free of mutexes still in use." cd90ee1 Revert "hso: Add TIOCM ioctl handling." 7628700 ALSA: pcxhr - add support for pcxhr stereo sound cards (firmware support) 9d948d2 ALSA: pcxhr - add support for pcxhr stereo sound cards (core change) 93bf5d8 ALSA: pcxhr - add support for pcxhr stereo sound cards 9f40ac7 netfilter: nfmark IPV6 routing in OUTPUT, mangle, NFQUEUE 5f145e4 netfilter: nfmark routing in OUTPUT, mangle, NFQUEUE c6e4c66 ALSA: hda - Assign unsol tags dynamically in patch_sigmatel.c 0e19e7d Merge branch 'topic/fix/hda' into topic/hda 82894b6 ALSA: hda - Fix proc pcm rate bits fb7e067 xfrm: remove useless forward declarations 6daad37 ah4/ah6: remove useless NULL assignments 69d728b igb: loopback bits not correctly cleared from RCTL register 9b07f3d igb: remove unneeded bit refrence when enabling jumbo frames 7a6b6f5 DCB: fix kconfig option 411c41e aoe: remove private mac address format function 9c8f92a hso: Hook up ->reset_resume 7ea3a9a hso: Add TIOCM ioctl handling. 52429eb hso: Fix free of mutexes still in use. 89930b7 hso: Fix URB submission -EINVAL. 4a3e818 hso: Fix crashes on close. bab04c3 hso: Add new usb device id's. 47fd5b8 netdev: add HAVE_NET_DEVICE_OPS e951e4a x86: fix unused variable warning in arch/x86/kernel/hpet.c 14bfc98 tracing, tty: fix warnings caused by branch tracing and tty_kref_get() 0ace285 tcp: handle shift/merge of cloned skbs too 111cc8b tcp: add some mibs to track collapsing 92ee76b tcp: Make shifting not clear the hints 832d11c tcp: Try to restore large SKBs while SACK processing f58b22f tcp: make tcp_sacktag_one able to handle partial skb too adb92db tcp: Make SACK code to split only at mss boundaries e8bae27 tcp: more aggressive skipping e1aa680 tcp: move tcp_simple_retransmit to tcp_input 4a17fc3 tcp: collapse more than two on retransmission 200036c CRED: fix sparse warnings a21bba9 net: avoid a pair of dst_hold()/dst_release() in ip_push_pending_frames() 6ded6ab User namespaces: use the current_user_ns() macro 18b6e04 User namespaces: set of cleanups (v2) 2e77d89 net: avoid a pair of dst_hold()/dst_release() in ip_append_data() 4db0acf net: gen_estimator: Fix gen_kill_estimator() lookups 3f0947c pkt_sched: sch_drr: fix drr_dequeue loop() 4b40eed infiniband: Kill directly reference of netdev->priv 486bf8d netdevice sbni: Convert directly reference of netdev->priv 5c94afd tokenring/3c359.c: Prevent possible mem leak when open failed 138a5cd tokenring/3c359.c: Fix error message when allocating tx_ring d0cc10a tokenring/3c359.c: fix allocation null check 85920d4 8139too: use err.h macros 3755810 net: Make sure BHs are disabled in sock_prot_inuse_add() fde22f2 ASoC: Lower priority of resume work logging 67c9151 ASoC: Flag AD1980 as an AC97 interface 3ba9e10 ASoC: Remove DAI type information 4813ead netfilter: nf_conntrack_ftp: change "partial ..." message to pr_debug() 6f893fb Merge branches 'tracing/branch-tracer', 'tracing/fastboot', 'tracing/ftrace', 'tracing/function-return-tracer', 'tracing/power-tracer', 'tracing/powerpc', 'tracing/ring-buffer', 'tracing/stack-tracer' and 'tracing/urgent' into tracing/core 64b7482 Merge branch 'sched/rt' into sched/core ef1681d ALSA: hda - Add probe_mask quirk for Medion MD96630 b0bd53a ASoC: TWL4030: Add helper function for output gain controls 0d33ea0 ASoC: TWL4030: Add CGAIN volume control c10b82c ASoC: TWL4030: Change the Master volume control to TLV f8d05bd ASoC: TWL4030: Disable soft-volume 55b8bac ASoC: Use supplied DAI for WM9713 rather than substream 328bd89 netfilter: nf_conntrack_proto_sctp: avoid bogus warning ad07e91 x86 defconfig: increase CONFIG_LOG_BUF_SHIFT b47b928 x86: drop REBOOT_CF9_COND from reboot fallback chain 920de80 net: Make sure BHs are disabled in sock_prot_inuse_add() 1f87e23 eth: Declare an optimized compare_ether_addr_64bits() function ef8ef5f ALSA: hda: Added an ALC888 model entry for Fujitsu-Siemens Amilo Xa3530 a9cb5c9 ALSA: hda - No 'Headphone as Line-out' swich without line-outs 70eb1bf axnet_cs: Fix build after net device ops ne2k conversion. 6f756a8 net: Make sure BHs are disabled in sock_prot_inuse_add() be77e59 net: fix tunnels in netns after ndo_ changes c25eb3b net: Convert TCP/DCCP listening hash tables to use RCU 8c862c2 dccp: Header option insertion routine for feature-negotiation d371056 dccp: Support for Mandatory options 02fa460 dccp: Increase the scope of variable-length htonl/ntohl functions 71c262a dccp: API to query the current TX/RX CCID b20a9c2 dccp: Set per-connection CCIDs via socket options 2c62ad7 myri10ge: update firmware headers 4ee2ac5 myri10ge: update DCA comments c1fd3b9 net: af_netlink should update its inuse counter 04f258c net: some optimizations in af_inet 958086d vfs, seqfile: fix comment style on mangle_path 65afa5e tracing/function-return-tracer: free the return stack on free_task() 3b71e9e x86: HPET: fix sparse warning 5f5db59 x86, debug: remove the confusing entry in call trace a1a00b5 x86: boot - fix sparse warnings 3b6c52b x86: introduce ENTRY(KPROBE_ENTRY)_X86 assembly helpers to catch unbalanced declaration v3 eae849c tracing/function-return-tracer: don't trace kfree while it frees the return stack 6efdcfa x86: KPROBE_ENTRY should be paired wth KPROBE_END 322648d x86: include ENTRY/END in entry handlers in entry_64.S 813b852 Merge branch 'ppc/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/powerpc 050dc69 x86: remove duplicate #define from 'cpufeature.h' 8a2503f x86: move dwarf2 related macro to dwarf2.h e38da59 tracing/stack-tracer: avoid races accessing file 8d26487 tracing/stack-tracer: introduce CONFIG_USER_STACKTRACE_SUPPORT cffa10a tracing/stack-tracer: fix locking and refcounts 8d7c6a9 tracing/stack-tracer: fix style issues 0429149 trace: fix compiler warning in branch profiler 69bb54e ftrace: add ftrace_off_permanent 033601a ring-buffer: add tracing_off_permanent e58918a ftrace: scripts/recordmcount.pl support for ARM 3a3d04a ftrace: specify $alignment for sh architecture 2bcd521 trace: profile all if conditionals bac28bf trace: branch profiling should not print percent without data 45b7974 trace: consolidate unlikely and likely profiler 42f565e trace: remove extra assign in branch check c204f72 ftrace: create default variables for archs in recordmcount.pl 42e007d ftrace: add support for powerpc to recordmcount.pl script 0da85c0 sh: dynamic ftrace support. 4e42ebd x86: hypervisor - fix sparse warnings 1d926f2 init/main.c: use ktime accessor function in initcall_debug code c450d78 x86: vmware - fix sparse warnings 2456d73 x86: signal: cosmetic unification of sys_rt_sigreturn() 666ac7b x86: signal: cosmetic unification of sys_sigaltstack() 5c9b3a0 x86: signal: cosmetic unification of including headers cbe2f5a tracing: allow tracing of suspend/resume & hibernation code again b54d3de tracing: identify which executable object the userspace address belongs to 74e2f33 vfs, seqfile: make mangle_path() global 02b6751 tracing: add support for userspace stacktraces in tracing/iter_ctrl 82f60f0 tracing/function-return-tracer: clean up task start/exit callbacks f201ae2 tracing/function-return-tracer: store return stack into task_struct and allocate it dynamically a0a70c7 Merge branches 'tracing/profiling', 'tracing/options' and 'tracing/urgent' into tracing/core f377fa1 x86: clean up stack overflow debug check 3aeb95d x86_64: fix the check in stack_overflow_check ca9eed7 Merge commit 'v2.6.28-rc6' into x86/debug 3889d0c x86: revert default reboot method to REBOOT_KBD 4805286 ALSA: hda - fix build warning when CONFIG_PROC_FS=n 9415e1c ALSA: hda - fix DisplayPort naming a5fcf89 ALSA: hda - document the ELD proc interface acb0599 ALSA: hda - ELD proc interface write updates 03284c8 ALSA: hda - make HDMI messages more user friendly cc02b83 ALSA: hda - report selected CA index for Audio InfoFrame b83923a ALSA: hda - minor HDMI code cleanups c810841 x86: split out some macro's and move common code to paranoid_exit, fix c46920d Merge branch 'for-david' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 f5f4cf0 igb: do not use phy ops in ethtool test cleanup for non-copper parts 21fc578 enic: misc cleanup items: 8459645 enic: move wmb closer to where needed: before writing posted_index to hw cb3c766 enic: mask off some reserved bits in CQ descriptor for future use 27372bf enic: driver/firmware API updates 86ca9db enic: enable ethtool LRO support 6476a90 WAN pc300too.c: Fix PC300-X.21 detection 7236470 WAN: syncppp.c is no longer used by any kernel code. Remove it. e022c2f WAN: new synchronous PPP implementation for generic HDLC. e1f024e WAN: Simplify sca_init_port() in HD64572 driver. fcfe9ff WAN: Correct comments in hd6457[02].c 0b59cef WAN: HD64572 drivers don't use next_desc() anymore. 61e0a6a WAN: Simplify HD64572 drivers. 9678343 WAN: don't print HD64572 driver versions anymore. 0954ed8 WAN: Simplify HD64572 status handling. 0446c3b WAN: rework HD64572 interrupts a bit. b0942f7 WAN: HD64572 already handles TX underruns with DMAC. 09fd65a WAN: TX-done handler now uses the ownership bit in HD64572 drivers. abc9d91 WAN: convert HD64572-based drivers to NAPI. 3022439 WAN: remove SCA support from SCA-II drivers 8859736 WAN: remove SCA II support from SCA drivers 6b40aba WAN: split hd6457x.c into hd64570.c and hd64572.c 4e4fd4e ne2k: convert to net_device_ops 99921b7 eql: convert to net_device_ops 974acda sc92031: convert to net_device_ops da1c14a qla3xxx: convert to net_device_ops a8652d2 hamachi: convert to net_device_ops c64213c bnx2x: convert to net_device_ops 6557d7b ns83820: convert to net_device_ops bfd82c3 yellowfin: convert to net_device_ops a7bd89c r6040: convert to net_device_ops 09ab9e7 sis900: convert to net_device_ops 2f30b1f tehuti: convert to net_device_ops c3ecb9f sfc: convert to net_device_ops 1abd266 netxen: convert to net_device_ops 8765264 dl2k: convert to net_device_ops 0421eae bnx2: convert to net_device_ops 3addc56 mlx4: convert to net_device_ops 8126089 myri10ge: convert to net_device_ops 5d1d07d via-rhine: convert to net_device_ops 8668ae9 qlge: fix sparse warnings 25ed784 qlge: convert to net_device_ops 0402509 s2io: convert to net_device_ops e48714b jme: convert driver to net_device_ops e245a38 tg3: Update version to 3.96 2fbb69a broadcom: Add 57780 support 321d32a tg3: Add 57780 support 2243584 tg3: Allow GPHY powerdown on 5761 d5fe488 tg3: Embrace pci_ioremap_bar() dfe00d7 tg3: Extract FW ver from alt NVRAM formats 6833c04 tg3: Enable GPHY APD on select devices 5e7dfd0 tg3: Prevent corruption at 10 / 100Mbps w CLKREQ 52f4490 tg3: Qualify use of tp->pcix_cap ad82926 tg3: Use NET_IP_ALIGN cf005b1 net: remove redundant argument comments 6c0bce3 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 e243455 e1000e: check return code from NVM accesses and fix bank detection a20e4cf e1000e: fix incorrect link status when switch module pulled 8452759 e1000e: store EEPROM version number to prevent unnecessary NVM reads 0285c8d e1000e: cosmetic newline in debug message 5c48ef3 e1000e: sync change flow control variables with ixgbe 8f12fe8 e1000e: link up/down messages must follow a specific format 75eb0fa e1000e: ESB2 config after link up 438b365 e1000e: check return of pci_save_state 1605927 e1000e: update comments listing supported parts for each MAC family 63dcf3d e1000e: 82571 check for link fix on 82571 serdes 5aa49c8 e1000e: commit speed/duplex changes for m88 PHY 005cbdf e1000e: disable correctable errors for quad ports while going to D3 7e3aab4 inet_diag: Missed conversion after changing inet ehash lockl to spinlocks. 176301e netdevice pc300: Add the reason about PC300 BROKEN in Kconfig 6636e11 netdevice pc300: Convert directly reference of netdev->priv 2baf8a2 netdevice hdlc: Convert directly reference of netdev->priv f757fec net: use net_eq() in INET_MATCH and INET_TW_MATCH b202226 ALSA: hda - Fix build without CONFIG_PROC_FS b8b1d08 x86: entry_64.S: split out some macro's and move common code to paranoid_exit e2f6bc2 x86: entry_64.S: factor out save_paranoid and paranoid_exit c002a1e x86: introduce save_rest and restructure the PTREGSCALL macro in entry_64.S c70bfa8 Merge branch 'topic/fix/hda' into topic/hda d6752a5 ALSA: hda - mark Dell studio 1535 quirk a1eb5fe wireless: missing include in lib80211.h 3461fc1 rtl8187: Update file authorship in comments 5984048 Update of MAINTAINERS for RTL8187 4f6d4d1 wireless: clean up sysfs code using %pM 96dd603 MAINTAINERS: claim maintenance over rtl818x drivers da81ded rtl8180: adapt for deprecated IEEE80211_CONF_SHORT_SLOT_TIME flag 6272710 mac80211: add explicit padding in struct ieee80211_tx_info beb2a7f net/ieee80211 -> drivers/net/ipw2x00/libipw_* rename 0795cd2 ipw2x00: relocate ipw2100/ipw2200 to common directory 2ba4b32 lib80211: consolidate crypt init routines 274bfb8 lib80211: absorb crypto bits from net/ieee80211 dfe1baf orinoco: fix last beacon reporting on 64-bit systems 1d047de mac80211: remove unnecessary include. 8ff48a8 rt2x00: Fix race condition when using inderect registers bad1363 rt2x00: Optimize get_duration / get_duration_res 87c1687 drivers/net/wireless/ath9k/rc.c: use ARRAY_SIZE f9f88fe mac80211_hwsim: Update documentation (AP mode enabled) 9902b18 mac80211: rc80211_pid eliminate sparse warnings 798b7ad rt2x00: Cleanup TX/RX entry handling 0ed94ea mac80211: remove more excess kernel-doc e4e58cf iwlwifi: use Rx single frame mode (one Rx frame per RB) 01ef932 iwlwifi: get some more information about command failure c24f081 iwl3945 : Simplify iwl3945_send_beacon_cmd cb299ba iwlwifi: move iwl_print_hex_dump to iwl-debug.h e720ce9 iwl3945 : Fix Sparse Warnings 21c339b iwlwifi: move spectrum measurement code to iwl-spectrum.c file 4ddbb7d iwlwifi: revamp tx scheduler byte count tables handling 8d86422 iwlwifi: move rx queue read pointer into rxq 5c5aa3f iwlwifi: update iwl-commands.h for 3 stream support a71c8f6 iwlwifi: don't fail power set when calibration is not done yet 1933577 iwlwifi: trivial fix in includes 9bdf5ec iwl3945: fix resume for ADHOC network ada1751 iwlagn: fix resume for ADHOC network 1e87d68 b43: remove rate index warning 7f3704e b43legacy: implement short slot and basic rate handling 3e4127f ipw2200: make association only if SSID is known. ffb8267 ath9k: enable RXing of beacons on STA/IBSS 296bf2a ath5k: allow APs to receive beacons 6a53a8a ath5k: Fix IMR init 392dff8 ath9k : Display MAC/BB and RF version at startup (v2) 4821277 mac80211: fix BUILD_BUG_ON() caused by misalignment on arm 8b0162a ath5k: ignore the return value of ath5k_hw_noise_floor_calibration 6d64360 rt2x00: Fix BUG_ON() with antenna handling 8058409 rt2x00: Block set_key() during suspend/shutdown 9a95dba rt2x00: Fix LED state handling 3d8606a rt2x00: Remove RATE_BASIC flag 1c740ed Move all rtl818x files to a common directory. 55b3961 mac80211_hwsim: enable Mesh Point operation a3c9aa5 mac80211: disable BSSID filtering for mesh interfaces b7b05fe ssb: struct device - replace bus_id with dev_name(), dev_set_name() 582c1b5 libertas: Fine grained configuration of wake-on-lan. 50da3ea ipw2100, ipw2200: select LIB80211 3d29b0c netdevice zd1201: Convert directly reference of netdev->priv to netdev_priv() 4f90473 ALSA: ASoC: Fix typo in snd_soc_card update documentation 42e81c9 ALSA: hda - fix sparse warning 39639fa ASoC: Improve error reporting for AC97 reset failures 0e734ad ASoC: Staticise pxa2xx_pcm_ops 0c758bd ASoC: OMAP: Fix preprocessor filled DAI name in McBSP DAI 2dac921 ASoC: Add Marvell Zylonite machine support 14ae22b x86: entry_64.S: rename e8a0e27 x86: clean up after: move entry_64.S register saving out of the macros, fix dee89c4 ASoC: Merge snd_soc_ops into snd_soc_dai_ops a47cbe7 ASoC: Move DAI structure definitions into new soc-dai.h 5de27b6 ASoC: ssm2602: Update supported stream formats faab5a3 ASoC: ssm2602: Fix priv substreams refs bd903bd ASoC: Add abbreviation to maintainers for searchability 8750654 ASoC: Rename snd_soc_card to snd_soc_machine 98aa9c8 pkt_sched: sch_drr: Fix qlen in drr_drop() 9d2f472 ixgbe: convert directly reference of netdev->priv 11b444d ALSA: hda - Move HD-audio Kconfig items to sound/pci/hda/Kconfig e7ee058 ALSA: hda - Make CONFIG_SND_HDA_RECONFIG for codec reconfiguration f208dba ALSA: hda - Release ELD proc file b94d353 ALSA: hda - Fix double free of jack instances 957ad01 sched: update comment for move_task_off_dead_cpu fc02e90 Merge commit 'v2.6.28-rc6' into sched/core 0623536 ALSA: hda - Add missing static for snd_hda_eld_proc_new() inline funciton 3ddd972 x86: signal: rename COPY_SEG_STRICT to COPY_SEG_CPL3 acdda79 ALSA: hda - support writing to the ELD proc file db74210 ALSA: hda: modify monitor name to be consistent with other ELD proc items 218b5ff ALSA: hda - properly print ELD sample bits 75a287d Merge branch 'topic/fix/hda' into topic/hda c4900be ixgbe: add SFP+ driver support 859ee3c DCB: Add support for DCB BCN 0eb3aa9 DCB: Add interface to query the state of PFC feature. 33dbabc DCB: Add interface to query # of TCs supported by device 4613218 DCB: Add interface to query for the DCB capabilities of an device. 2f90b86 ixgbe: this patch adds support for DCB to the kernel and ixgbe driver 9db66bd net: convert TCP/DCCP ehash rwlocks to spinlocks b8c26a3 ipgre: convert to netdevice_ops 1326c3d ipv6: convert tunnels to net_device_ops 23a12b1 ipip: convert to net_device_ops 748ff68 hippi: convert driver to net_device_ops fd8f499 defxx: convert driver to net_device_ops 145186a fddi: convert to new network device ops 007c383 ipmr: convert ipmr virtual interface to net_device_ops aa18e9e dummy: convert to net_device_ops 0082982 netdev: add more functions to netdevice ops 1725b82 ALSA: hda - make laptop-eapd model back for AD1986A 6ab33d5 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 7cc45e6 powerpc/ppc32: ftrace, dynamic ftrace to handle modules f48cb8b powerpc/ppc64: ftrace, handle module trampolines for dyn ftrace e4486fe powerpc: ftrace, use probe_kernel API to modify code 8fd6e5a powerpc: ftrace, convert to new dynamic ftrace arch API 6d07bb4 powerpc: ftrace, do not latency trace idle dcd072e x86: clean up after: move entry_64.S register saving out of the macros 018a7bf netfilter: ip{,6}t_policy.h should include xp_policy.h 7be6065 netdevice wanrouter: Convert directly reference of netdev->priv 826dd0e netdevice ni65: Convert directly reference of netdev->priv c8019bf netdevice ppp: Convert directly reference of netdev->priv f7b2927 smsc95xx: add tx checksum offload support 8761169 sfc: Fix dependency for SFC_MTD 47a1a1d pkt_sched: remove unnecessary xchg() in packet classifiers b94c8af pkt_sched: remove unnecessary xchg() in packet schedulers c19d036 isdn: isdn_net.c annotate struct ip_ports and trivial sparse fixes 13d2a1d pkt_sched: add DRR scheduler 0c19b0a netlink: avoid memset of 0 bytes sparse warning c010360 netdevice lance: Convert directly reference of netdev->priv 5377152 mv643xx_eth: calculate descriptor pointer only once in rxq_refill() f61e554 mv643xx_eth: move receive error handling out of line 66e63ff mv643xx_eth: implement ->set_rx_mode() 66823b9 mv643xx_eth: inline txq_alloc_desc_index() 37a6084 mv643xx_eth: introduce per-port register area pointer 10a9948 mv643xx_eth: checkpatch fixes 21d1a16 net: ip_sockglue.c add static, annotate ports' endianness 00b5e50 myri10ge: remove hardcoded sram_size d6279c8 myri10ge: fix per-slice rx/tx_dropped counters d99015b x86: move entry_64.S register saving out of the macros c032a2d Merge branch 'x86/cleanups' into x86/irq 87f7606 x86: fix wakeup_cpu with numaq/es7000 v2 - call ->update_genapic() a61fc1e netdev/smc91x: unify Blackfin code a bit and use proper read/write functions 3d3e35a dccp: Fix bracing in dccp_feat_list_lookup. f4bdd26 netdevice hamradio: Convert directly reference of netdev->priv 56bc0f9 netfilter: nf_conntrack_proto_gre: spread __exit f3a216d netdevice: 82596: Convert netdev->priv to netdev_priv 61d3015 netfilter: ip6table_filter: merge LOCAL_IN and FORWARD hooks b0ceb56 netfilter: xt_recent: don't save proc dirs d214c75 filter: add SKF_AD_NLATTR_NEST to look for nested attributes 68fd991 igb: Fix tx/rx_ring_count parameters for igb on suspend/resume/ring resize b2d5653 igb: simplify swap in clean_rx_irq if using packet split 3ef6b23 igb: update name to reflect new hardware 5caea4e net: listening_hash get a spinlock per bucket bb55746 x86: fix arch/x86/kernel/setup.c build warning when !CONFIG_X86_RESERVE_LOW_64K 90accd6 Merge branch 'linus' into x86/memory-corruption-check 77be80e x86: fix arch/x86/kernel/genx2apic_uv_x.c build warning when !CONFIG_HOTPLUG_CPU fbc2a06 Merge branch 'linus' into x86/uv 5b2d1ec ALSA: hda: Added Realtek ALC888 model entry for Acer Aspire 4930G laptop 41dda0f ALSA: azx_probe() cleanup d8b83c5 acenic: convert to net_device_ops 2c9171d niu: convert to net_device_ops b94426b forcedeth: convert to net_device_ops 7c7d64b tg3: convert to net_device_ops 0edc352 ixgb: convert to net_device_ops afe29f7 enic: convert to net_device_ops 52256cf ppp: convert to net_device_ops acc7842 e100: convert to net_device_ops 2e5c692 igb: convert to net_device_ops 39a11bd via-velocity: convert to net_device_ops 0e7614b e1000: convert to net_device_ops 80ff32b cxgb2: convert to net_device_ops dd75269 cxgb3: convert to net_device_ops 825a84d atlx: convert to net_device_ops 1e058ab atl1e: convert to net_device_ops 758e43b tun: convert to net_device_ops 48dfcde 8139: convert to net_device_ops 8b4ab28 r8169: convert to net_device_ops f80d032 skge: convert to net_device_ops 1436b30 sky2: convert to net_device_ops 651c246 e1000e: convert to net_device_ops eb7cc59 bonding: convert to net_device_ops 656299f vlan: convert to net_device_ops 5bc3eb7 ip: convert to net_device_ops for ioctl 54a30c9 macvlan: convert to net_device_ops 4456e7b veth: convert to net_device_ops a2dbb88 bridge: convert to net_device_ops 8dfcdf3 ifb: convert to net_device_ops c02373b netdev: convert loopback to net_device_ops ccad637 netdev: expose ethernet address primitives eeda3fd netdev: introduce dev_get_stats() d314774 netdev: network device operations infrastructure 6b41e7d net: af_unix should use KERN_INFO instead of KERN_DEBUG d171235 drivers/s390/ - csum_partial - remove unnecessary casts 07f0757 include/net net/ - csum_partial - remove unnecessary casts a7a0d6a net: inet_diag_handler structs can be const 14e943d net: make /proc/net/protocols namespace aware 3680453 net: af_packet should update its inuse counter 9789cfe nfsctl: add headers for credentials 7596b27 coda: fix creds reference ec4e0e2 sched: fix inconsistency when redistribute per-cpu tg->cfs_rq shares 9b0db7e ASoC: Convert blackfin machines to use DAI accessor functions d0c3663 ASoC: s3c24xx_uda134x DAI accessor functions and static cleanup df573d2 ASoC: Add support for omap2evm board 08bd168 ASoC: Add driver for the Lyrtech SFFSDR board 1c0090c ASoC: Add PCM3008 ALSA SoC driver 8563964 ALSA: hda - Show missing GPIO unsol bits 60a5151 profiling: clean up profile_nop() 9676e73 Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core 86fa2f6 ftrace: fix selftest locking 3ac3ba0 Merge branch 'linus' into sched/core ae8cb4c ALSA: hda: compact ELD output messages d39b435 ALSA: hda: make global snd_print_pcm_bits() 06f69d1 ALSA: hda: minor output message cleanups 5b87ebb ALSA: hda: rename sink_eld to hdmi_eld 4e19c58 ALSA: hda: minor code cleanups 198d6ba Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 c6798d2 ALSA: hda: EAPD mute on suspend 9c8641e ALSA: hda: HDMI channel mapping cleanups 698544d ALSA: hda: HDMI channel allocations for audio infoframe 903b21d ALSA: hda: make global snd_print_channel_allocation() 5457a98 ALSA: hda: make standalone hdmi_fill_audio_infoframe() cea555d Merge branch 'linux-2.6' into next 78608dd powerpc/mpic: Use new smp_request_message_ipi 25ddd73 powerpc: Provide a separate handler for each IPI action a6326e9 powerpc: Correct page-in counter for CMM with 64k pages 22059a9 powerpc/pmac: Use of_find_node_with_property() in pmac_setup_arch() ba82efb powerpc: Use of_find_node_with_property() in cell_iommu_fixed_mapping_init() 5401817 powerpc: Use for_each_node_with_property() in of_irq_map_init() 1e291b1 of: Add helpers for finding device nodes which have a given property ae564c6 powerpc: Optimise mutex 957ab07 powerpc: Optimise smp_rmb 46d075b powerpc: Optimise smp_wmb a4e22f0 powerpc: Update 64bit __copy_tofrom_user() using CPU_FTR_UNALIGNED_LD_STD 7526ff7 powerpc: Remove superfluous WARN_ON() from dma-noncoherent.c efc3624 powerpc: Tell gcc when we clobber the carry in inline asm d5e5491 powerpc: udbg-based backend for hvc_console 8c65318 serial/pmac_zilog: Add console polling support 9b82f3e powerpc/ps3: Replace the flip_ctl logic in ps3av and ps3fb by a mutex a225063 ftrace: preemptoff selftest not working ca3ea02 ASoC: Remove unused snd_soc_machine_config declaration 2af7529 sound: Fix warnings relating to ignored return value in snd_card_register b5fe363 x86: use update_genapic to get rid of ES7000_CLUSTERED_APIC v2 f632ddc x86: fix wakeup_cpu with numaq/es7000, v2, fix #2 6497760 x86: ia32_signal: change order of storing in setup_sigcontext() 047ce93 x86: ia32_signal: remove using temporary variable 8c6e5ce x86: ia32_signal: cleanup macro RELOAD_SEG d71a68d x86: ia32_signal: introduce COPY_SEG_CPL3 b78a5b5 x86: ia32_signal: cleanup macro COPY cbe9ee0 Merge branch 'x86/urgent' into x86/cleanups a1afd01 x86: default to SWIOTLB=y on x86_64 72f2b89 ASoC: Move uda134x_codec.h to uda134x.h a0bd65f ASoC: Blackfin: always set a default value for that GPIO range 27b9be5 ASoC: Blackfin: Simplify the MMAP_SUPPORT macros protected code caa4583 ASoC: Blackfin: do not force TWI bus for ssm2602 codec 0cade26 ASoC: Fix Blackfin AC97 DAI probe function return code a89e611 ASoC: Blackfin: Fix AD1980/1 build with MMAP support disabled 67f854b ASoC: Blackfin: add multi-channel function support 9905ed3 ASoC: AD1980 codec: add multi-channel function support a11311d ASoC: Blackfin: updates Kconfig for SPORT cb6e206 ASoC: DaVinci: Fix audio stall when doing full duplex cd896c3 ALSA: hda - Allow multiple imux for matrix-type mixers of ALC codecs e17b666 netfilter: nf_conntrack: fix warning and prototype mismatch d9e1500 netfilter: nfnetlink_log: fix warning and prototype mismatch 19abb7b netfilter: ctnetlink: deliver events for conntracks changed from userspace 226c0c0 netfilter: ctnetlink: helper modules load-on-demand support 0231022 tracing/function-return-tracer: add the overrun field 0619faf tracing/ftrace: make nop tracer using tracer flags adf9f19 tracing/ftrace: implement a set_flag callback for tracers a581780 Merge branch 'topic/fix/hda' into topic/hda af9f341 ALSA: hda - Fix restore of pin configs at resume for STAC/IDT codecs 2c88587 ALSA: hda - Use init callback in stac92xx_resume() e4973e1 ALSA: hda - Create jack detection elements in build_controls f3a5c54 Merge branch 'master' into next 5a209c2 Merge branches 'tracing/branch-tracer' and 'tracing/urgent' into tracing/core 5f1e71b ALSA: ELD proc interface for HDMI sinks 7f4a9f4 ALSA: create hda_eld.c for ELD routines and proc interface 33deeca ALSA: introduce snd_print_pcm_rates() 2eca83b ALSA: hda: remove redundant get_amp_nid() bc4a68f ALSA: snd-powermac: enable mic on iMac G4 54ac14a x86: fix wakeup_cpu with numaq/es7000, v2, fix 8d702f2 ASoC: Build tlv320aic23 cleanly 2adb983 ASoC: Manage VMID mode for WM8990 be1b87c ASoC: Enable WM8990 ADC clocking workaround ba533e9 ASoC: Allow writes to uncached registers in WM8990 569712b x86: fix wakeup_cpu with numaq/es7000, v2 4dc06f9 netfilter: nf_conntrack: connection tracking helper name persistent aliases 528a3a6 netfilter: ctnetlink: get rid of module refcounting in ctnetlink bfe2967 netfilter: ctnetlink: use EOPNOTSUPP instead of EINVAL if the conntrack has no helper 238ede8 netfilter: ctnetlink: use nf_conntrack_get instead of atomic_inc 7ad933d ASoC: Machine driver for for s3c24xx with uda134x 1cad1de ASoC: UDA134x codec driver 0c726da tracing: branch tracer, fix writing to trace/trace_options 6e5d9db ASoC: Fix for master playback/capture volume range for TWL4030 codec 9a57f7f net: sctp should update its inuse counter a8076d8 net: af_unix should update its inuse counter 0bd7b79 x86: entry_64.S: remove whitespace at end of lines 9dacc71 Merge commit 'v2.6.28-rc5' into x86/cleanups 796359d ALSA: hda-intel: reorder HDMI audio enabling sequence c0cea0d ALSA: hda: STAC_DELL_M6 EAPD 3ab9093 ALSA: hda: alc883 model for ASUS P5Q-EM boards 3f8e402 Merge branches 'tracing/branch-tracer', 'tracing/ftrace', 'tracing/function-return-tracer', 'tracing/tracepoints' and 'tracing/urgent' into tracing/core 248969a net: af_unix can make unix_nr_socks visbile in /proc c3ccc12 netdevice chelsio: Convert directly reference of netdev->priv 4d24b52 ematch: simpler tcf_em_unregister() 6eba6a3 net: Cleanup of af_unix 1910299 dccp: Tidy up setsockopt calls dd9c0e3 dccp: Deprecate Ack Ratio sysctl 2945055 dccp: Feature negotiation for minimum-checksum-coverage 49aebc6 dccp: Deprecate old setsockopt framework 0c11683 dccp: Mechanism to resolve CCID dependencies 3f2c31d virtio_net: VIRTIO_NET_F_MSG_RXBUF (imprive rcv buffer allocation) 0276b49 virtio_net: hook up the set-tso ethtool op 0a888fd virtio_net: Recycle some more rx buffer pages 908cd2d net: use %pF for /proc/net/ptype 5635c10 net: make sure struct dst_entry refcount is aligned on 64 bytes 536533e rcu: documents rculist_nulls 3ab5aee net: Convert TCP & DCCP hash tables to use RCU / hlist_nulls 88ab193 udp: Use hlist_nulls in UDP RCU code bbaffac rcu: Introduce hlist_nulls variant of hlist e8b2dfe TPROXY: implemented IP_RECVORIGDSTADDR socket option 8164f1b ipv4: Fix ARP behavior with many mac-vlans 6ea7ae1 e1000e: enable ECC correction on 82571 silicon f004f3e phylib: make mdio-gpio work without OF (v4) 72af187 phylib: rename mdio-ofgpio to mdio-gpio 6817ba2 dm9000: Fix build error. 227a837 markers/tracpoints: fix non-modular build cda2836 pegasus: minor resource shrinkage 74ad0a5 ixgbe: Fix usage of netif_*_all_queues() with netif_carrier_{off|on}() 0a7ad64 tracepoints: format documentation 0dcf8fe tracepoints, docs: marker_synchronize_unregister->tracepoint_synchronize_unregister 8fd88d1 tracepoints: documentation fix for teardown 7e066fb tracepoints: add DECLARE_TRACE() and DEFINE_TRACE() 32f8574 tracepoints: use modules notifiers 5f38267 tracepoints: do not put arguments in name c420970 tracepoints: use unregister return value da7b3ea tracepoints: use rcu_*_sched_notrace de0baf9 tracepoints: fix disable 2504ea5 tracepoints: samples, fix teardown a0bca6a markers: create DEFINE_MARKER and GET_MARKER (new API) c1df1bd markers: auto enable tracepoints (new API : trace_mark_tp()) a419246 markers: use module notifier 021aeb0 markers: use rcu_*_sched_notrace and notrace e3f8c4b markers: add missing stdargs.h include, needed due to va_list usage 2bdba31 markers: fix unregister 954e100 rcu: add rcu_read_*_sched_notrace() e7d3737 tracing/function-return-tracer: support for dynamic ftrace on function return tracer b01c746 tracing/function-return-tracer: add a barrier to ensure return stack index is incremented in memory 9858096 Merge branch 'tracing/ftrace' into tracing/function-return-tracer 072b40a tracing/branch-tracer: fix a trace recursion on branch tracer 1c80025 tracing/ftrace: change the type of the init() callback e6e7a65 tracing/ftrace: fix unexpected -EINVAL when longest tracer name is set ee02a2e ftrace: make filtered functions effective on setting 982c350 ftrace: fix dyn ftrace filter 20e5227 ftrace: allow NULL pointers in mcount_loc 31e8890 ftrace: pass module struct to arch dynamic ftrace functions d51ad7a ftrace: replace raw_local_irq_save with local_irq_save 918c115 ftrace: do not process freed records b17e8a3 ftrace: disable ftrace on anomalies in trace start and stop f3c7ac4 ftrace: remove condition from ftrace_record_ip c91add5 Merge branches 'tracing/fastboot', 'tracing/ftrace' and 'tracing/urgent' into tracing/core e2da9ba Merge branch 'topic/fix/hda' into topic/hda e50a906 capabilities: define get_vfs_caps_from_disk when file caps are not enabled 71cfc90 ASoC: Add WM8728 codec driver 2bef901 ASoC: Revert "ASoC: Add new parameter to s3c24xx_pcm_enqueue" 127e82e ALSA: hda - Support Headphone and Speaker volumes control on VAIO 8a75f4f ALSA: pcsp - Use HRTIMER_CB_IRQSAFE_UNLOCKED ef711cf net: speedup dst_release() f30ab41 pkt_sched: Remove qdisc->ops->requeue() etc. 38a7ddf tcp: remove an unnecessary field in struct tcp_skb_cb 00bcd52 isdn: use %pI4, remove get_{u8/u16/u32} and put_{u8/u16/u32} inlines 722024d x86: irq: fix apicinterrupts on 64 bits 2b82892 Merge branch 'master' into next 3a3b7ce CRED: Allow kernel services to override LSM settings for task actions 1bfdc75 CRED: Add a kernel_service object class to SELinux 3b11a1d CRED: Differentiate objective and effective subjective credentials on a task 98870ab CRED: Documentation d76b0d9 CRED: Use creds in file structs 1d04598 CRED: Prettify commoncap.c a6f76f2 CRED: Make execve() take advantage of copy-on-write credentials d84f4f9 CRED: Inaugurate COW credentials 745ca24 CRED: Pass credentials through dentry_open() 88e67f3 CRED: Make inode_has_perm() and file_has_perm() take a cred pointer 6cc88bc CRED: Rename is_single_threaded() to is_wq_single_threaded() bb952bb CRED: Separate per-task-group keyrings from signal_struct 275bb41 CRED: Wrap access to SELinux's task SID c69e8d9 CRED: Use RCU to access another task's creds and to release a task's own creds 86a264a CRED: Wrap current->cred and a few other accessors f1752ee CRED: Detach the credentials from task_struct b6dff3e CRED: Separate task security context from task_struct 15a2460 CRED: Constify the kernel_cap_t arguments to the capset LSM hooks 1cdcbec CRED: Neuter sys_capset() 8bbf497 KEYS: Alter use of key instantiation link-to-keyring argument e9e349b KEYS: Disperse linux/key_ui.h 76aac0e CRED: Wrap task credential accesses in the core kernel b103c59 CRED: Wrap task credential accesses in the capabilities code 47d804b CRED: Wrap task credential accesses in the key management code 8192b0c CRED: Wrap task credential accesses in the networking subsystem 19d6562 CRED: Wrap task credential accesses in the UNIX socket protocol 8f41940 CRED: Wrap task credential accesses in the SunRPC protocol c2a2b8d CRED: Wrap task credential accesses in the ROSE protocol ba95b23 CRED: Wrap task credential accesses in the netrom protocol f82b3590 CRED: Wrap task credential accesses in the IPv6 protocol 7340040 CRED: Wrap task credential accesses in the AX25 protocol 414c070 CRED: Wrap task credential accesses in the SYSV IPC subsystem da9592e CRED: Wrap task credential accesses in the filesystem subsystem 82ab8de CRED: Wrap task credential accesses in the XFS filesystem a5f773a CRED: Wrap task credential accesses in the UFS filesystem 7706bb3 CRED: Wrap task credential accesses in the UDF filesystem 26bf194 CRED: Wrap task credential accesses in the UBIFS filesystem fc7333d CRED: Wrap task credential accesses in the SYSV filesystem e2950b1 CRED: Wrap task credential accesses in the SMBFS filesystem 414cb20 CRED: Wrap task credential accesses in the ReiserFS filesystem 0785f4d CRED: Wrap task credential accesses in the RAMFS filesystem c222d53 CRED: Wrap task credential accesses in the OMFS filesystem b19c2a3 CRED: Wrap task credential accesses in the OCFS2 filesystem 5cc0a84 CRED: Wrap task credential accesses in the NFS daemon 4893702 CRED: Wrap task credential accesses in the NCPFS filesystem 922c030 CRED: Wrap task credential accesses in the Minix filesystem 8f659ad CRED: Wrap task credential accesses in the JFS filesystem 77c70de CRED: Wrap task credential accesses in the hugetlbfs filesystem de395b8 CRED: Wrap task credential accesses in the HPFS filesystem 4ac8489 CRED: Wrap task credential accesses in the HFSplus filesystem 94c9a5e CRED: Wrap task credential accesses in the HFS filesystem 3de7be3 CRED: Wrap task credential accesses in the GFS2 filesystem 2186a71 CRED: Wrap task credential accesses in the FUSE filesystem f0ce7ee CRED: Wrap task credential accesses in the FAT filesystem 4c9c544 CRED: Wrap task credential accesses in the Ext4 filesystem 6a2f90e CRED: Wrap task credential accesses in the Ext3 filesystem a8dd4d6 CRED: Wrap task credential accesses in the Ext2 filesystem 4eea035 CRED: Wrap task credential accesses in the eCryptFS filesystem ec4c2aa CRED: Wrap task credential accesses in the devpts filesystem 97b7702 CRED: Wrap task credential accesses in the Coda filesystem a001e5b CRED: Wrap task credential accesses in the CIFS filesystem 1109b07 CRED: Wrap task credential accesses in the BFS filesystem 0eb790e CRED: Wrap task credential accesses in the autofs4 filesystem 73c646e CRED: Wrap task credential accesses in the autofs filesystem 2155998 CRED: Wrap task credential accesses in the AFFS filesystem f8b9d53 CRED: Wrap task credential accesses in 9P2000 filesystem cd80ca8 CRED: Wrap task credential accesses in the USB driver ee9785a CRED: Wrap task credential accesses in the network device drivers 0e164b6 CRED: Wrap task credential accesses in the ISDN drivers 66303bc CRED: Wrap task credential accesses in the tty driver b0fafa8 CRED: Wrap task credential accesses in the block loopback driver 350b4da CRED: Wrap task credential accesses in the x86 arch e542370 CRED: Wrap task credential accesses in the S390 arch 1330deb CRED: Wrap task credential accesses in the PowerPC arch 25e1573 CRED: Wrap task credential accesses in the PA-RISC arch b421273 CRED: Wrap task credential accesses in the MIPS arch ef81ee9 CRED: Wrap task credential accesses in the IA64 arch d1aaf8c tracing/fastboot: put error message on stderr b3535c6 ftrace: remove unnecessary if condition of __unregister_ftrace_function cd80bc6 Merge branch 'topic/fix/hda' into topic/hda 0b60485 ASoC: OMAP: Add more supported sample rates into McBSP DAI driver bbba944 ASoC: Fix supported sample rates of TWL4030 audio codec c4da29c ALSA: hda - support detecting HD Audio devices with PCI class code 12ef7d4 ftrace: CPU buffer start annotation clean ups ee6bce5 ftrace: rename iter_ctrl to trace_options 1696b2b ftrace: show buffer size in kilobytes a94c80e ftrace: rename trace_entries to buffer_size_kb 24de386 Merge branches 'tracing/branch-tracer', 'tracing/fastboot', 'tracing/function-return-tracer' and 'tracing/urgent' into tracing/core 524ad0a netdevice: safe convert to netdev_priv() #part-4 8f15ea4 netdevice: safe convert to netdev_priv() #part-3 4cf1653 netdevice: safe convert to netdev_priv() #part-2 454d7c9 netdevice: safe convert to netdev_priv() #part-1 7a12122 net: Remove unused parameter of xfrm_gen_index() 2378982 net: ifdef struct sock::sk_async_wait_queue 3a95cb9 ALSA: handle SiI1392 HDMI codec in patch_intelhdmi.c e4412cb bnx2: Update version to 1.8.2. 40105c0 bnx2: Reorganize timeout constants. d8026d9 bnx2: Set rx buffer water marks based on MTU. 5ec6d7b bnx2: Restrict WoL support. 1caacec bnx2: Add PCI ID for 5716S. 1dc1c6a tracing/function-return-tracer: call prepare_ftrace_return by registers 62d59d1 tracing/function-return-tracer: make the function return tracer lockless 94b80ff ftrace: rename trace_unlikely.c file 80e5ea4 ftrace: add tracer called branch 9f029e8 ftrace: rename unlikely iter_ctrl to branch 2ed84ee trace: rename unlikely profiler to branch profiler 8652cb4 x86: warn of incorrect cpu_khz on AMD systems 8665596 x86: fix up the new IRQ code for older versions of gas 68f96c0 tracing/fastboot: fix perlcritic warning c415b3d x86: disable IRQs before doing anything on nmi_shootdown_cpus() bb8dd27 x86: make nmi_shootdown_cpus() available on !SMP and !X86_LOCAL_APIC 2ddded2 x86: move nmi_shootdown_cpus() to reboot.c c370e5e x86 kdump: make nmi_shootdown_cpus() non-static 8e29478 x86 kdump: make kdump_nmi_callback() a function ptr on crash_nmi_callback() d1e7b91 x86 kdump: create kdump_nmi_shootdown_cpus() b2bbe71 x86 kdump: move crashing_cpu assignment to nmi_shootdown_cpus() a7d4182 x86 kdump: extract kdump-specific code from crash_nmi_callback() fd64138 ALSA: include/sound/info.h - coding style changed 972d4c5 ALSA: hdsp/hdspm: remove card->id from rawmidi device name c2eb9c4 ALSA: when card identification is changed, change also /proc/asound symlink 9fb6198 ALSA: add /sys/class/sound/card#/id (r/w) and card#/number (r/o) files eb42c75 Merge branch 'linus' into x86/crashdump 11843ee ALSA: powermac - Rename mic-analog loopback mixer element 68d119f tracing: finetune branch-tracer output 2b7d039 tracing: branch tracer, fix vdso crash fb0ef64 ASoC: DaVinci: Audio: Fix swapping of channels at start of stereo playback 9cc3c49 x86: ia32_signal: remove unnecessary padding 4a61204 x86: signal_32: introduce retcode and rt_retcode f88c4ae tracing: branch tracer, tweak output 52f232c tracing: likely/unlikely branch annotation tracer 1f0d69a tracing: profile likely and unlikely annotations cb9382e Merge branches 'tracing/fastboot', 'tracing/function-return-tracer' and 'tracing/ring-buffer' into tracing/core 642edba ring-buffer: fix deadlock from reader_lock in read_start 92a77aa security: remove broken and useless declarations a7d26f8 ALSA: Release v1.0.18a 7423907 tracing/fastboot: Use the ring-buffer timestamp for initcall entries 3f5ec13 tracing/fastboot: move boot tracer structs and funcs into their own header. 60a011c Merge branch 'tracing/function-return-tracer' into tracing/fastboot d06bbd6 Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core 90d0be2 Merge branch 'topic/fix/hda' into topic/hda e42ea98 net: Cleanup of neighbour code 7a9546e net: ib_net pointer should depends on CONFIG_NET_NS 8f424b5 net: Introduce read_pnet() and write_pnet() helpers 9eca0a4 dccp: Resolve dependencies of features on choice of CCID d90ebcb dccp: Query supported CCIDs e8ef967 dccp: Registration routines for changing feature values f74e91b dccp: Limit feature negotiation to connection setup phase 6bb3ce2 net: remove struct dst_entry::entry_size 9b739ba net: remove struct neigh_table::pde 14d7ca5 x86: attempt reboot via port CF9 if we have standard PCI ports 7e452ba Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 3ac38c3 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 939b787 x86: 64 bits: shrink and align IRQ stubs 486936c Merge branch 'linux-2.6' into next b7c6244 x86: 32 bits: shrink and align IRQ stubs 4687518 x86: 32 bit: interrupt stub consistency with 64 bit 3e89c7b ring-buffer: clean up warn ons 9ee670f x86/doc: spelling fix for grub c280ea5 x86: fix documentation typo in arch/x86/Kconfig a4c5279 x86, 64-bit: update address space documentation 9757d55 ath9k: Fix compilation failure when RFKILL is enabled f83c9d0 ring-buffer: add reader lock a98f8fd x86: apic reset counter on shutdown d3ec5ca x86: call machine_shutdown and stop all CPUs in native_machine_halt 50ee917 sched/rt: removed unneeded defintion 934352f sched: add hierarchical accounting to cpu accounting controller 19b3e96 tracing: function return tracer, build fix 0667467 Currently SELinux jumps through some ugly hoops to not audit a capbility a2f2945 The oomkiller calculations make decisions based on capabilities. Since 0611216 Add a new capable interface that will be used by systems that use audit to 637d32d Capabilities: BUG when an invalid capability is requested e68b75a When the capset syscall is used it is not possible for audit to record the 3fc689e Any time fcaps or a setuid app under SECURE_NOROOT is used to result in a 851f7ff This patch will print cap_permitted and cap_inheritable data in the PATH c0b0044 This patch add a generic cpu endian caps structure and externally available 9d36be7 Document the order of arguments for cap_issubset. It's not instantly clear ff9b48c sched: include group statistics in /proc/sched_debug a3d732f x86, UV: fix redundant creation of sgi_uv 867f7fb tracing, x86: function return tracer, fix assembly constraints 8587b33f [PATCH] nvram - convert PRINT_PROC to seq_file 971ddcf [PATCH] nvram - CodingStyle f1c4be5 tracing, x86: clean up FUNCTION_RET_TRACER Kconfig 15e6cb3 tracing: add a tracer to catch execution time of kernel functions caf4b32 tracing, x86: add low level support for ftrace return tracing d844222 Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core f536aaf ring-buffer: replace most bug ons with warn on and disable buffer 5aa1ba6 ftrace: prevent ftrace_special from recursion e0cb4eb Merge branch 'tracing/urgent' into tracing/ftrace ae1e913 sched: rename SCHED_NO_NO_OMIT_FRAME_POINTER => SCHED_OMIT_FRAME_POINTER eb37b41 pktgen: add full reset functionality 9b1582d Phonet: use net_device built-in stats for GPRS fb28ad3 net: struct device - replace bus_id with dev_name(), dev_set_name() 2377989 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 c483246 rtl8187: Change TX power settings b2e53b3 orinoco: Move sources to a subdirectory 5166ccd cfg80211: Add kdoc for struct regulatory_request b219cee cfg80211: make use of reg macros on REG_RULE 9c96477 cfg80211: Add regulatory domain intersection capability d71aaf6 cfg80211: a reg rule is invalid if freq diff is 0 fc6971d mac80211_hwsim: Add support for client PS mode fbf1892 mac80211: Allow AP mode to be enabled d61272c mac80211: fix basic rates setting from association response ab1ef98 mac80211_hwsim: Make sure beacon_timer gets deleted 3188848 nl80211: Add TX queue parameter configuration 1e898ff mac80211_hwsim: Debug info for TX queue parameters 90c97a0 nl80211: Add basic rate configuration for AP mode fe63bfa mac80211_hwsim: Debug info for BSS config changes 95f8e38 b43legacy: reindent misleading statement ccf5dd1 libertas_tf: fix skb tail pointer 9483407 p54: initialize all deprecated fields c8034c4 p54: don't report known but unhandled EEPROM codes as unknown 61780ee iwlwifi: do not call statistics from rfkill eb48dca iwlwifi: iwl-agn-rs: initialize rs with valid antenna 6a63578 iwlwifi: rename double inclusion protection name in iwl-commands.h 5b9f8cd iwlwifi: rename generic iwlagn functions that had a HW specific name 60294de iwlwifi: fix priv->iw_mode setting when multiple vif are configured eb4779c iwlwifi: trivial removal of some 4965 remaining from iwl-agn-rs.h 9c80c50 iwlwifi: reorganize flow handler bitology c7ab5ef b43: implement short slot and basic rate handling bd81525 wireless: implement basic rate helper function 743b97c rt2x00: Remove debugfs CSR access wrappers f161796 ath9k: correct warning about unintialized variable 'tid' 74508b2 rtl8187: Reduce channel switch delay 94d4fe9 rtl8187: Remove primitive write delays 946d1c2 rtl8187: Remove msleep calls after calls to rtl8225_write a3d67bc rtl8187: Remove CCK delays 35cc988 rtl8187: Remove OFDM delays 2f20596 rtl8187: Remove large delays 9344e86 rt2x00: Release rt2x00 2.2.2 3514a44 rt2x00: Improve interface_modes initialization c3fd7b4 rt2x00: Remove ieee80211_bss_conf from rt2x00_intf e4ea1c4 rt2x00: Optimize configuration handling 3f64b43 ath5k: update keycache to support TKIP handling 9ad9a26 ath5k: enable hardware encryption for WEP 2a941ec wireless: fix two bad print_ssid conversions 8469cde mac80211: Add a new event in ieee80211_ampdu_mlme_action dca3edb ath9k: Remove internal RX A-MPDU processing 7f95903 ath9k: Clear HT info on starting the driver ccc75c5 ath9k: Remove ath_tx_aggr_resp() 05a1e2d ath9k: Enable interrupts at the proper place 154662a ath9k: Remove unnecessary TSF reset 9c84b79 ath9k: Streamline attach/detach 50fdae2 ath9k: Remove unused function ath_get_currentCountry() f1dc560 ath9k: Refactor hw.c 5640b08 ath9k: Revamp VAP management a37c2c7 ath9k: Use bitfields to store tid's state in a single variable 102e057 ath9k: Ensure ath_node is not NULL when updating tx chainmask 43453b3 ath9k: Remove SM Power Save as it is not supported now 528f0c6 ath9k: Revamp transmit control block c517016 ath9k: Simplify node attach/detach routines b5aa9bf ath9k: Node cleanup 17683c6 ath5k: fix keytable type buglet in ath5k_hw_reset_key f07a6c4 ath5k: Update PCU code 2c70600 don't use net/ieee80211.h 9b1fbae iwl3945: remove bogus comment 41bb73e mac80211: remove SSID driver code b23f99b adm8211: remove SSID code 71c11fb b43/legacy: remove SSID code 4607816 iwlwifi: remove unused essid variable a57a59f iwlwifi: remove implicit direct scan 430cfe9 iwl3945: remove dead code e5704bf ath9k: remove useless NULL initialisers 2df7816 wireless: fix a few sparse warnings 1239cd5 wireless: move mesh config length constant 97c8b01 mac80211: print reason code for deauth/dissoc frames db4186c p54: eliminate warning for uninitialized variable 'tim_len' e5ea92a p54: AP & Ad-hoc testing 94585b0 p54: put broadcast frames into the right queues 9e7f3f8 p54: more definitions form lmac_longbow.h and pda.h 9a8675d p54: introduce new names for device firmwares 4ceb7b6 netdevice libertas: Fix directly reference of netdev->priv f43aa02 ALSA: hda - Fix another cache list management b402dff ASoC: Add Right-Justified mode and Codec clock master to davinci-i2s 53599bb ASoC: s3c24xx 8 bit sound fix ba21ebb x86: apic - use pr_ macros for logging 4e03043 x86: apic - calibrate_APIC_clock remove redundant irq-enable-disable 4ecd33d Merge commit 'v2.6.28-rc4' into x86/apic f4166c5 x86, bts: DS and BTS initialization 19f47c6 x86: x86_32 has its own irq_regs definition 87135d9 Merge commit 'v2.6.28-rc4' into x86/cleanups 4fcc50a x86: clean up vget_cycles() 39c9aed SELinux: Use unknown perm handling to handle unknown netlink msg types cb9e35d x86: clean up rdtsc_barrier() use 895e031 Merge branch 'linus' into x86/cleanups 15002fa x86: signal: cosmetic unification of setup_sigcontext() a309720 ftrace: display start of CPU buffer in trace output 769c48e ftrace: force pass of preemptoff selftest 7d5222a ftrace: align __mcount_loc sections c76f069 ftrace: remove trace array ctrl bbf5b1a ftrace: remove ctrl_update method 49833fc ftrace: enable trace_printk by default 4519317 ftrace: irqsoff tracer incorrect reset e168e05 ftrace: fix sched_switch API 75f5c47 ftrace: fix boot trace sched startup 0183fb1 ftrace: fix set_ftrace_filter a6b0786 Merge branches 'tracing/ftrace', 'tracing/fastboot', 'tracing/nmisafe' and 'tracing/urgent' into tracing/core f574179 tipc: trivial endian annotation in debug statement f400923 pkt_sched: Control group classifier 505d4f7 net: Guaranetee the proper ordering of the loopback device. v2 5d6d480 net: fib_rules ordering fixes. 3d8160b Revert "net: Guaranetee the proper ordering of the loopback device." 0edb945 ALSA: hda - Fix probe errors on Dell Studio Desktop 30cde0a ALSA: hda - Fix ALC260 hp3013 master switch 26df91c ASoC: TLV320AIC23B Support more sample rates 167c627 Merge branch 'davem-next' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 6d21cd6 sched: clean up SCHED_CPUMASK_ALLOC 258594a Merge branch 'sched/urgent' into sched/core f66fced ALSA: Document debug macros a827206 fmvj18x_cs: write interrupt ack bit for lan and modem to work simultaneously. 945eed0 ALSA: Evaluate condition in snd_BUG_ON() in non-debugging case 0774023 Merge branch 'topic/fix/hda' into topic/hda 63cf123 Merge branch 'topic/fix/misc' into topic/misc 5c7f033 phonet: sparse annotations of protocol, remove forward declaration ca62059 ipvs: oldlen, newlen should be be16, not be32 76acfdb net: mark flow_cache_cpu_prepare() as __init 9eeda9a Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 ea2da6e ALSA: hda - Fix broken hash chain allocation b910d9a ALSA: hda - Add max allocation check in array allocator c217429 ALSA: hda - Add missing NULL check in amp hash allocation a87d091 x86, sched: enable wchan config menu item on 64-bit 6a60dd1 ftrace: split out hardirq ftrace code into own header cf7f869 sched, lockdep: inline double_unlock_balance() 6415483 ALSA: hda - Add lifebook model for Realtek ALC269 6ce4a3b ALSA: hda - Make codec-probing more robust 33fa35e ALSA: hda - simplify hda_bus ops callbacks e18c94d ALSA: ASoC: TWL4030 codec - fix 256*Fs clock fd51b2d x86: update CONFIG_NUMA description 90080bf sched, documentation: update scheduler header file paths 8735b7d x86: signal_64: make setup_sigcontext() similar ee7d523 x86: signal_64: setup fpstate in setup_sigcontext() 99ea1b9 x86: ia32_signal: do save_i387_xstate_ia32 at get_sigframe() 4b33669 x86: signal_32: do save_i387_xstate() at get_sigframe() 3e03fb7 ring-buffer: convert to raw spinlocks 9036990 ftrace: restructure tracing start/stop infrastructure 0f04870 ftrace: soft tracing stop and start 60a7ecf ftrace: add quick function trace stop 79c81d2 Merge branch 'tracing/fastboot' into tracing/ftrace fd9abb3 SMSC LAN911x and LAN921x vendor driver c5916cf ehea: Fix some whitespace issues 739bb23 sfc: Do not reset when hardware monitor detects a fault 3e133c4 sfc: Use lm87 and lm90 drivers for board temperature/power monitoring f415072 sfc: Expose flash region storing boot code as MTD 0a95f56 sfc: Clean up non-volatile memory partitioning 2883f55 sfc: Correct address of gPXE boot configuration in EEPROM fd989c8 bonding: alternate agg selection policies for 802.3ad 6146b1a bonding: Fix ALB mode to balance traffic on VLANs 305d552 bonding: send IPv6 neighbor advertisement on failover 7d9d1f2 sgi-xp: support getting the address of a partition's reserved page 31de5ec sgi-xp: define xp_partition_id and xp_region_size 2525789 sgi-xp: create activate and notify gru message queues 6c1c325 sgi-xp: define xp_expand_memprotect() and xp_restrict_memprotect() 23c3570 x86: uv: Add UV reserved page bios call e8929c8 x86: uv: Add UV memory protection bios call 64ccf2f x86: uv: Add UV watchlist bios call 61c9eaf pkt_sched: Fix qdisc len in qdisc_peek_dequeued() 0a36b34 net: Don't leak packets when a netns is going down ae33bc4 net: Guaranetee the proper ordering of the loopback device. d0c082c netns: Delete virtual interfaces during namespace cleanup 1c1b777 powerpc: Use the new byteorder headers 1f29fae file capabilities: add no_file_caps switch (v4) e21e696 Merge branch 'master' into next 2f99db2 selinux: recognize netlink messages for 'ip addrlabel' 5b4d218 powerpc/boot: Allocate more memory for dtb 7d4320f powerpc: Hugetlb pgtable cache access cleanup d4ad304 powerpc/ps3: Fix memory leak in device init 3cc6987 powerpc: Eliminate unused do_gtod variable 597bc5c powerpc: Improve resolution of VDSO clock_gettime c73049f powerpc: Remove map_/unmap_single() from dma_mapping_ops 7eef440 powerpc/pci: Cosmetic cleanups of pci-common.c fd6852c powerpc/pci: Fix various pseries PCI hotplug issues b5ae5f9 powerpc/pci: Make pcibios_allocate_bus_resources more robust 57b066f powerpc/eeh: Make EEH device add/remove more robust 8b8da35 powerpc/pci: Split pcibios_fixup_bus() into bus setup and device setup 8dc840f ASoC: Add new parameter to s3c24xx_pcm_enqueue ea91394 ASoC: Remove core version number 74e7220 ASoC: Add Palm/PXA27x unified ASoC audio driver 838e8bb x86: Implement change_bit with immediate operand as "lock xorb" 6834d7c ALSA: ice1724 - Re-fix IRQ mask initialization c238b4f ALSA: hda - Split ALC268 acer model ab56ced powerpc/pci: Remove pcibios_do_bus_setup() 5328032 powerpc/pci: Use common PHB resource hookup b0494bc powerpc/pci: Cleanup debug printk's 25d6e2d powerpc: Update 64bit memcpy() using CPU_FTR_UNALIGNED_LD_STD 4ec577a powerpc: Add new CPU feature: CPU_FTR_UNALIGNED_LD_STD 4090019 powerpc: Update page-in counter for CMM 1ef8014 powerpc/pseries: Fix getting the server number size 691de57 powerpc: Remove device_type = "rtc" properties in .dts files a6a8e00 powerpc: Silence software timebase sync 1fd0f52 powerpc: Fix domain numbers in /proc on 64-bit 270acef net: sk_free_datagram() should use sk_mem_reclaim_partial() d99a7bd dccp: Cleanup routines for feature negotiation ac75773 dccp: Per-socket initialisation of feature negotiation 61e6473 dccp: List management for new feature negotiation 7d43d1a dccp: Implement lookup table for feature-negotiation information bd012f2 dccp: Basic data structure for feature negotiation 13c9474 ALSA: hda - Add ASUS V1Sn support beb0b9c ALSA: hda - Fix unused function in patch_intelhdmi.c 9150487 ALSA: hda - Intel HDMI audio support d5f6423 net: #ifdef ->sk_security fd8cd7e x86: vmware: look for DMI string in the product serial key 41d9f9c SELinux: hold tasklist_lock and siglock while waking wait_chldexit 0ee4663 ALSA: ASoC - Remove unnecessary inclusion of linux/version.h 3865675 ALSA: ASoC codec: remove unused #include bfc5c26 ALSA: hda - Don't create empty PCM streams 79a9d46 tracing/ftrace: fix a bug when switch current tracer to sched tracer efade6e tracing/ftrace: types and naming corrections for sched tracer d7ad44b tracing/fastboot: use sched switch tracer from boot tracer e55f605c tracing/ftrace: remove unused code in sched_switch tracer 07695fa tracing/ftrace: fix a race condition in sched_switch tracer 71566a0 tracing/fastboot: Enable boot tracing only during initcalls 6e3354c netfilter: nf_nat: remove warn_if_extra_mangle 249b620 netfilter: netns ebtables: br_nf_pre_routing_finish() fixup b71b30a netfilter: netns ebtables: ebtable_nat in netns 4aad109 netfilter: netns ebtables: ebtable_filter in netns 8157e6d netfilter: netns ebtables: ebtable_broute in netns dbcdf85 netfilter: netns ebtables: more cleanup during ebt_unregister_table() 6beceee netfilter: netns ebtables: part 2 511061e netfilter: netns ebtables: part 1 19223f2 netfilter: arptable_filter: merge forward hook d4ec52b netfilter: netns-aware ipt_addrtype 5f7340e netfilter: xt_NFLOG: don't call nf_log_packet in NFLOG module. 3299b4d ftrace: sysctl typo 69f698a ftrace: sysrq-z to dump the buffers 6cf87ef x86 debug: mark early_printk.o as notrace faa2f98 sched: add sanity check in partition_sched_domains() a17e226 sched: remove redundant call to unregister_sched_domain_sysctl() 0a0db8f sched debug: remove NULL checking in print_cfs/rt_rq() eefd796 sched debug: remove sd_level_to_string() b2a866f ftrace: function tracer with irqs disabled 182e9f5 ftrace: insert in the ftrace_preempt_disable()/enable() functions 8f0a056 ftrace: introduce ftrace_preempt_disable()/enable() 124ffe1 x86: signal_64: remove unused code in __setup_rt_frame() b91f080 ALSA: hda - Fix possible NULL dereference dce908e ALSA: SOC: Fix setting codec register with debugfs filesystem merge error d2ad3ca net/: Kill now superfluous ->last_rx stores. 265eb67 netem: eliminate unneeded return values babcda7 drivers/net: Kill now superfluous ->last_rx stores. ab29109 net: remove two duplicated #include 6d9f239 net: '&' redux 6cf3f41 bonding, net: Move last_rx update into bonding recv logic 24f8b23 net: increase receive packet quantum b9ac998 printk: ipv4 address digits printed in reverse order 4814893 IPVS: Remove supports_ipv6 scheduler flag 4454837 IPVS: Add IPv6 support to LBLC/LBLCR schedulers fa228b3 tg3: Update version to 3.95 772638b broadcom: Add support for BCM50610 042a75b broadcom: Refine expansion register access routine 5e0c676 broadcom: Add flow control support fcb389d tg3: 5785 enhancements 9c61d6b tg3: Refine phylib support 0a459aa tg3: Allow WOL for phylib controlled Broadcom phys 05ac4cb tg3: Refine power management and WOL code df59c94 tg3: Move phylib report to end of tg3_init_one b2b98d4 tg3: Do not enable APE on bcm5700 bcb37f6 tg3: Reclaim TG3_FLG3_5761_5784_AX_FIXES flag 3f00789 tg3: Preserve LAA when device control is released b2aee15 tg3: Preserve DASH connectivity when WOL enabled 6353239 tg3: Use pci_ioremap_bar() c88e668 tg3: Add 5761S support 6bdbfe9 x86: VMware: Fix vmware_get_tsc code 4ef0ef1 ALSA: hda - Fix missing ADC list in ALC260 auto-probe mode 26f5df2 ALSA: hda - Add ALC299 fujitsu preset model 67305eb pkt_sched: sch_generic: Kfree gso_skb in qdisc_reset() 5799de0 net: clean up net/ipv4/tcp_ipv4.c 539afed net: clean up net/ipv4/devinet.c f4cca7f net: clean up net/ipv4/pararp.c fd3f8c4 net: clean up net/ipv4/ip_fragment.c tcp_timer.c ip_input.c e113a74 sched/rt: small optimization to update_curr_rt() 7e5e26a ftrace: fix hardirq header for non ftrace archs 7a895f5 Merge branches 'tracing/ftrace', 'tracing/markers', 'tracing/mmiotrace', 'tracing/nmisafe', 'tracing/tracepoints' and 'tracing/urgent' into tracing/core 127cafb tracepoint: introduce *_noupdate APIs. 19dba33 tracepoint: simplification for tracepoints using RCU 3555105 x86: add memory hotremove config option c354e12 net: clean up net/ipv4/ipmr.c 09cb105 net: clean up net/ipv4/ip_sockglue.c tcp_output.c a7e9ff7 net: clean up net/ipv4/igmp.c 6ed2533 net: clean up net/ipv4/fib_frontend.c fib_hash.c ip_gre.c 5a5f3a8 net: clean up net/ipv4/ipip.c raw.c tcp.c tcp_minisocks.c tcp_yeah.c xfrm4_policy.c d931910 net: clean up net/ipv4/ah4.c esp4.c fib_semantics.c inet_connection_sock.c inetpeer.c ip_output.c 5b9a0e1 x86: nmi - nmi_watchdog boot param docs cleanup d9e5407 ftrace: ftrace_dump_on_oops=[tracer] 3660946 Merge commit 'v2.6.28-rc3' into tracing/ftrace 8bb8c43 sched, ftrace: trace sched.c db59350 Merge commit 'v2.6.28-rc3' into sched/core e0db4a7 sunrpc: Fix build warning due to typo in %pI4 format changes. 20971a0 IPVS: Add IPv6 support to SH and DH schedulers 2a6cf35 Merge branch 'davem-next' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 3f8b4b1 bonding: update docs to correctly reflect arp_ip_target behavior 237f3e1 smc91x: add __init markings to smc_drv_probe() dccd547 forcdeth: increase max_interrupt_work 0befdb3 ixgbe: add device support for 82598AT (copper 10GbE) adapters e053b62 atlx: timer cleanup 02e7173 atlx: use embedded net_device_stats 8ba25da sch_netem: Replace ->requeue() method with open code 0220146 sch_netem: Remove classful functionality ae27e98 [TCP] CUBIC v2.3 e27dfce af_unix: clean up net/unix/af_unix.c garbage.c sysctl_net_unix.c c37ccc0 udp: add a missing smp_wmb() in udp_lib_get_port() 7e3a42a xfrm6: handling fragment 395628e x86: Skip verification by the watchdog for TSC clocksource. eca0cd0 x86: Add a synthetic TSC_RELIABLE feature bit. 88b094f x86: Hypervisor detection and get tsc_freq from hypervisor 49ab56a x86: add X86_FEATURE_HYPERVISOR feature bit 4074ea2 ALSA: ice1724 - Fix IRQ register initialization e25cf4a mac80211: fix two kernel-doc warnings 4c24429 ath9k: use ETH_P_PAE 9371dd6 ath9k: remove useless conditional 4fb3078 orinoco: cache downloadable firmware image in memory for use during resume 0df6cbb orinoco: reload firmware on resume 4c674c6 ath5k: Update interrupt masking code 84fa4f4 wireless regulatory: move ignore_request 2083c49 wireless: clean up regulatory ignore_request function be3d481 wireless: remove struct regdom hinting d2372b3 wireless: make regdom passing semantics simpler 7dddaf1 iwlwifi: Update reclaim flag 9fe1c50 iwl3945: iwl3945_mac_get_tsf() should not return zero a96a27f iwlwifi: run through spell checker 127901a iwlwifi: refactor tx byte count table usage 951891c iwlwifi: clear scanning bits upon failure 60d3221 iwlwifi: convert correctly rate_n_flags to PLCP index for mimo3 packets f69f42a iwlwifi: calibration command namespace renaming 0ef2ca6 iwlwifi: parametrize eeprom versions ed7fafe iwlwifi: don't update TFD free counter for invalid station 3fd07a1 iwlwifi: refactor TX response flow 8b30b1f mac80211: Re-enable aggregation 4393dce mac80211: allow all interfaces types to handle RX action frames f3e63db wireless: remove write-only 'granted' variable a4510bf ath9k: Check if the STA supports HT when initializing rate control 075cbc9 mac80211: Change WARN_ON to WARN_ON_ONCE 5c020dc ath9k: Allow user to change tx power when asked f97e400 ath9k: enable RX interrupt mitigation b139a10 ath9k: remove pointless sc_txintrperiod and spin_lock_bh on tx prepare d9d2925 mac80211: make use of regulatory tx power settings on change of tx power e2ef12d mac80211: check return value of dev_alloc_skb() in ieee80211_sta_join_ibss(). 7211801 wireless: avoid some net/ieee80211.h vs. linux/ieee80211.h conflicts 9387b7c wireless: use individual buffers for printing ssid values 2819f8a wireless: escape_ssid should handle non-printables c5d3dce wireless: remove NETWORK_EMPTY_ESSID flag 7e272fc wireless: consolidate on a single escape_essid implementation ddf4ac5 mac80211: insert AP sta entry after filling it cfa3fa4 Fix debugfs_create_*'s error checking method for wireless/rt2x00/ 9b24001 Fix debugfs_create_bool's error checking method for wireless/iwlwifi/ ac9440a wireless: fix EU check f6037d0 wireless: get rid of pointless request list f3b407f wireless: remove cfg80211_reg_mutex cf03268 wireless: don't publish __regulatory_hint e37d4df mac80211: fix a few typos in mac80211 kernel doc 5588751 rt2x00: reduce checkpatch.pl errors 0bbac08 ath5k: reduce checkpatch.pl errors 93da9cc Add nl80211 commands to get and set o11s mesh networking parameters 4a68ec5 mac80211: inform userspace of probe/auth/assoc timeout 8216bfe hostap: Fix sparse warnings 50fb2e4 mac80211: remove rate_control_clear 65a0667 iwlwifi: protect headers from double inclusion f4a8cd9 minstrel: improve performance for non-MRR drivers 0a9542e nl80211: fix monitor flags 27df605 p54: integrate parts of lmac_longbow.h and other parts of stlc45xx 5e73444 p54: borrow some setup code from stlc45xx b92f30d p54: fix memory management 9de5776f p54: p54: refactor p54_rx_frame_sent 0f1be97 p54: refactor statistic timer code 0fdd7c5 p54: broken out edcf changes b88b15d iwlwifi: tx command must run on same tfd as packet 499b188 iwlwifi: fix TX cmd dma unmapping 76eff18 iwlwifi: unify tx antenna toggling 961ba60 iwlwifi: add iwl_cmd_queue_free for readability 3257e5d iwlwifi: remove host commands structures from iwl_cmd 56e1261 iwlwifi: expand error lookup and align output 4e062f9 iwlwifi: define firmware file name once 4acf074 make ieee80211 invisible 5c7f9b7 ipw2x00: change default policy for auto-associate c12abae p54: implement MRR e6a9854 mac80211/drivers: rewrite the rate control API cb121ba mac80211: add might_sleep to hw_config faf3994 airo: Kill directly reference of netdev->priv b706e65 ath5k: fix mesh point operation 6e0e0bf ath5k: correct ath5k signal quality c49d154 ath9k: correct signal quality report 4fe0657 ath5k/ath9k: correct signal quality f828831 rtl8187: add short slot handling for 8187B 6476107 rtl8187: adapt for deprecated IEEE80211_CONF_SHORT_SLOT_TIME flag da966bc Ath5k: add AP mode 7eb27af p54/rtl8187: fix up the seqno patch ae5eb02 mac80211: rewrite HT handling bda3933 mac80211: move bss_conf into vif 9124b07 mac80211: make retry limits part of hw config 5251818 iwl3945: fix station stuff in RC algorithm d51626d nl80211: export HT capabilities 9477828 mac80211: provide sequence numbers 2e20cc3 p54: Move rx_mtu to struct bootrec_desc 7823657 rfkill: rate-limit rfkill-input workqueue usage (v3) 1767079 rfkill: honour EPO state when resuming a rfkill controller d003922 rfkill: add master_switch_mode and EPO lock to rfkill and rfkill-input 68d2413 rfkill: export global states to rfkill-input cf4b4aa rfkill: use killable locks instead of interruptible e897558 mac80211: introduce hw config change flags 0f4ac38 mac80211: kill hw.conf.antenna_sel_{rx,tx} d9fe60d 802.11: clean up/fix HT support 40333e4 p54: honour bss_info_changed's short slot time settings 5d6924e mac80211: use HWSIM_STA_MAGIC in hwsim_check_sta_magic() and hwsim_set_sta_magic(). 3195c1f iwlwifi: refactor rxon time command 5d664a4 iwlwifi: take a valid antenna upon rate scale init be5d56e iwlwifi: make initial calibration set configurable 1397dce mac80211: remove unused declaration of struct sta_attribute. 7a5158e mac80211: fix short slot handling e87a2fe mac80211: remove max_antenna_gain config d73782f mac80211: clean up ieee80211_hw_config errors 3db5943 mac80211: remove wiphy_to_hw c6a1fa1 mac80211: minor code cleanups 36ff382 mac80211: remove writable debugs mesh parameters 804feeb mac80211: remove aggregation status write support from debugfs b2bcc7b x86: add a synthetic TSC_RELIABLE feature bit 3c3e989 ALSA: hda - Re-add input-source control for Realtek f9e336f ALSA: hda - Unify capture mixer creation in realtek codes 54cbc9a ALSA: hda - Unify capture callbacks in realtek codes d88897e ALSA: hda - Use macros to check array overflow afecd78c Merge branch 'topic/fix/hda' into topic/hda 7b3b6e4 Merge commit 'v2.6.28-rc2' into topic/asoc 04172c0 Merge branch 'topic/fix/asoc' into topic/asoc 5b99e6c ASoC: Add audio support for the Atmel AT91SAM9G20ek board(uing wolfson 8731). 6c74250 ASoC: Merge AT91 and AVR32 support into a single atmel architecture dc06102 ASoC: Add support for Beagleboard 4e20787 ASoC: Add support for Gumstix Overo cc17557 ASoC: Add support for TWL4030 audio codec a376f30 x86: avoid duplicate running of pud_offset and pmd_offset in one_md_table_init() a26a2a2 ftrace: nmi safe code clean ups 9868ee6 kexec/i386: setup kexec page table in C 92be3d6 kexec/i386: allocate page table pages dynamically 31498a0 kexec/i386: remove PAGE_SIZE alignment from relocate_kernel 3685f25 misc: replace NIPQUAD() be85940 fs: replace NIPQUAD() 6377943 drivers: replace NIPQUAD() 21454aa net: replace NIPQUAD() in net/*/ 14d5e83 net: replace NIPQUAD() in net/netfilter/ 673d57e net: replace NIPQUAD() in net/ipv4/ net/ipv6/ cffee38 net: replace NIPQUAD() in net/ipv4/netfilter/ 77be155 pkt_sched: Add peek emulation for non-work-conserving qdiscs. 03c05f0 pkt_sched: Use qdisc->ops->peek() instead of ->dequeue() & ->requeue() 8e3af97 pkt_sched: Add qdisc->ops->peek() implementation. 99c0db2 pkt_sched: sch_generic: Add generic qdisc->ops->peek() implementation. 48a8f51 pkt_sched: Add ->peek() methods for fifo, prio and SFQ qdiscs. 90d841f pkt_sched: sch_generic: Add Qdisc_ops peek() method. cc0fe83 xfrm: remove unused struct xfrm_policy::next d5917a3 xfrm: C99 for xfrm_dev_notifier a1744d3 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 57b4189 ALSA: ASoC - restore removed variable declaration 275f165 pci: use pci_ioremap_bar() in drivers/net 842e08b tc35815: Define more Rx status bits 04ecb07 cxgb3 - enable lro control through ethtool bc79fc8 e100: adapt to the reworked PCI PM 6b1abba The overdue eepro100 removal. 5177b32 skge: adapt skge to use reworked PCI PM b3acf29 ftrace, kbuild: condense recordmcount.pl parameter code e1e302d Merge branch 'linus' into tracing/ftrace c8db3fe udp: Should use spin_lock_bh()/spin_unlock_bh() in udp_lib_unhash() b807c3d ftrace: nmi update statistics 17666f0 ftrace: nmi safe code modification 1cbd8b3 x86: add two missing unwind annotations 8a1c8eb x86, nmi-watchdog: update procfs nmi_watchdog file documentation v2 b062f84 x86: nmi - add sensible names to nmi_watchdog boot param 7a52768 x86: simplify X86_MPPARSE config option 0763722 ALSA: ASoC - Fix a typo in Kconfig 0c235d1 ASoC: Disable automatic volume control in the CS4270 sound driver ca53fb2 ASoC: Use finer grained dependencies in SND_SOC_ALL_CODECS e775f6c ASoC: Do a warm reset after cold when resetting the WM9713 1b340bd ASoC: Add PXA SSP support 8b6a5a3 SELinux: check open perms in dentry_open not inode_permission 219b93f ASoC: Remove DAPM restriction on mixer control name lengths f24368c ASoC: Convert core to use standard debug print macros d45f621 ASoC: Fix handling of DAPM suspend work 12ef193 ASoC: Allow setting codec register with debugfs filesystem 5791775 x86: signal: cosmetic unification of NR_restart_syscall cabf503 x86: signal: cosmetic unification of macros for setup_rt_frame() 96bf84b x86: signal: cosmetic unification of signr_convert() 34f3a81 sched: switch sched_features to seqfile 8cf14e3 net: easy removals of HIPQUAD using %pI4 format 9edb8bb macvlan: add support for ethtool get settings 6b9a106 printk: remove %p6 format specifier, fix up comments 5b095d9 net: replace %p6 with %pI6 4b7a427 net: replace %#p6 format specifier with %pi6 4aa9960 printk: add %I4, %I6, %i4, %i6 format specifiers 96631ed udp: introduce sk_for_each_rcu_safenext() f52b505 udp: udp_get_next() should use spin_unlock_bh() e78a37b ALSA: Fix a typo in Kconfig 9cbbb3a ALSA: Release v1.0.18 eab1722 sched: cleanup for alloc_rt/fair_sched_group() 8203efb udp: calculate udp_mem based on low memory instead of all memory 271b72c udp: RCU handling for Unicast packets. 645ca70 udp: introduce struct udp_table and multiple spinlocks 1b063c3 Merge branch 'topic/fix/hda' into topic/hda d301fc3 ALSA: hda - Fix indentation in hda_local.h b189db5 net: remove NIP6(), NIP6_FMT, NIP6_SEQFMT and final users a20fd0a uwb: use the %pM formatting specifier in eda.c 8c165a8 infiniband: remove IPOIB_GID_RAW_ARG, IPOIB_GID_ARG, IPOIB_GID_FMT fcace2f infiniband: ipoib replace IPOIB_GID_FMT with %p6 8867cd7 infiniband: use %p6 for printing message ids b3020061 vlan: propogate ethtool speed values 3717746 veth: remove unused list bb7bba3 veth: Remove useless veth field fdb46ee net, misc: replace uses of NIP6_FMT with %p6 0c6ce78 net: replace uses of NIP6_FMT with %p6 38ff4fa netfilter: replace uses of NIP6_FMT with %p6 1afa67f misc: replace NIP6_FMT with %p6 format specifier b071195 net: replace all current users of NIP6_SEQFMT with %#p6 689afa7 printk: add %p6 format specifier for IPv6 addresses 3a2dfbe xfrm: Notify changes in UDP encapsulation via netlink 93adcc8 net: don't use INIT_RCU_HEAD def8b4f net: reduce structures when XFRM=n b057efd netlink: constify struct nlattr * arg to parsing functions ad38dab x86: use the new byteorder headers d4f1b10 x86: clean up comments wrt. rd{msr|tsc|pmc} 2011a06 Merge commit 'v2.6.28-rc2' into x86/doc 30604bb x86: break up mtrr_cleanup() into several small functions. 7a9787e Merge commit 'v2.6.28-rc2' into x86/pci-ioapic-boot-irq-quirks 163d4c5 Merge branch 'topic/fix/hda' into topic/hda 34c2535 ALSA: hda - Remove old codec-probe limitation 15ad9a5 Merge branch 'topic/fix/asoc' into topic/asoc 3891845 netns: Coexist with the sysfs limitations v2 7c510e4 net: convert more to %pM e174961 net: convert print_mac to %pM 0c68ae2 mac80211: convert to %pM away from print_mac dd45c9c printk: add %pM format specifier for MAC addresses 1080d70 net: implement emergency route cache rebulds when gc_elasticity is exceeded 69a72a0 x86/uv: update SCIR driver to use the idle_cpu() function 878719e x86: unify appropriate bits from dumpstack_32 and dumpstack_64 7d5a78c x86, NMI watchdog: disable NMIs on LVT0 in case NMI watchdog is not working 6f290b4 x86, NMI watchdog: add support to enable and disable IOAPIC NMI b43d196 x86: corruption-check: some post-move cleanups 304e629 x86: corruption check: run the corruption checks from a work queue 6784f7d x86: corruption check: move the corruption checks into their own file 04d2aac x86: corruption-check: fix some style issues 944ac42 ftrace: ftrace dump on oops control c63dfef x86: remove dead IRQBALANCE code fd4a203 x86: signal_64.c: get_stack() doesn't need entire regs 709110b x86: signal: cosmetic unification of restore_sigcontext() fd3fdf1 trace: add the MMIO-tracer to the tracer menu, cleanup 5d9881e markers: break the redundant loop in kernel/marker.c 4de6274 markers: let marker_table be close to its comments 505e371 markers: remove exported symbol marker_probe_cb_noarg() 0eec481 markers: simplify marker_set_format() 7f1baa0 x86/uv: provide a System Activity Indicator driver 5292ae1 Merge commit 'v2.6.28-rc2' into x86/uv f4a2a0d ftrace: add a script to produce a hierarchical view of a function trace 8479d94 x86, signals: remove duplicated register setup code in ia32 signal delivery 4fc85e4 Merge branch 'topic/misc-next' into topic/misc 911fc25 Merge branch 'topic/asoc-next' into topic/asoc 42dc237 Merge branch 'topic/hda-next' into topic/hda 74aeaab ALSA: hda: add support for jack detection on IDT codecs. 50a9f79 ALSA: hda: add snd_hda_get_jack* functions a53ccab ALSA: jack: lineout support to jack abstraction layer 282cd76 ALSA: hda: dynamic jack id bbaf5e9 ALSA: Add hrtimer backend for ALSA timer interface 63fb708 x86: change OPTIMIZE_INLINING help to say enabling makes smaller kernels 67679b1 ALSA: emu10k1: fix coding style for emu10k1_main.c 888dcb7 ALSA: aoa: clean up file names 871d377 i386, dumpstack: unify die() e06ca43 i386, dumpstack: use oops_begin/oops_end in die_nmi e4955cf i386, dumpstack: use x86_64's method to account die_nest_count 10b14cb x86, dumpstack: always call oops_exit from oops_end 0ed7a49 x86_64, dumpstack: move kexec_crash from __die to oops_end 874d93d x86, dumpstack: let signr=0 signal no do_exit b4b8f87 i386, dumpstack: move crash_kexec before bust_spinlocks(0) in oops_end 9e89981 x86, mm: enable GBPAGES option by default b0f2098 x86, uv: use consistent names for region size and conherence id on x86 and ia64 718a259 ALSA: emu10k1: fix faulty commit 18c71092 18c7109 ALSA: emu10k1: fix device names for Live!/Audigy1/2/4/E-mu 1083206 ALSA: ice1724 - Fix TX IRQ lockup c872e8c ALSA: Enable SPDIF output on ALC655 96c7d47 ALSA: pcsp - Fix locking messes in snd-pcsp ebaa047 ALSA: hda - Release jack instance for dynamic reconfigure dd125b2 Merge branch 'topic/hda-reconfig' into topic/hda-next 76a4d10 ALSA: Print function symbol in the error messages 6b93311 ALSA: ASoC: Remove snd_soc_dapm_connect_input() 8ae6a55 ALSA: ASoC: Convert wm8900 to a new-style i2c driver 17be552 ALSA: ASoC: Convert wm8580 to a new-style i2c driver 45a6ac1 ALSA: hda: add support for jack detection on IDT/Sigmatel 1e1be43 ALSA: hda - Add hints for reconfig 11aeff0 ALSA: hda - Add init_verbs entries d7ffba1 ALSA: hda - Add sysfs entries to hwdep devices 6c1f45e ALSA: hda - Add codec reconfiguration feature d13bd41 ALSA: hda - Manage kcontrol lists f44ac83 ALSA: hda - Allocate name string of each codec 603c401 ALSA: hda - Use generic array helpers b2e1859 ALSA: hda - Add generic arrays 176d533 ALSA: hda - Add infrastructure for dynamic stream allocation 41b9eb2 x86, pci: introduce config option for pci reroute quirks (was: [PATCH 0/3] Boot IRQ quirks for Broadcom and AMD/ATI) 3e370b2 Merge branch 'linus' into x86/pci-ioapic-boot-irq-quirks 88d1dce PCI quirks: call boot IRQ quirks at end of device init and during resume 542622d PCI quirks: disable AMD/ATI legacy boot interrupt generation 7725118 PCI quirks: add quirk to disable boot interrupt generation on broadcom HT1000 dbbcfb2 Merge branch 'linus' into x86/pci-ioapic-boot-irq-quirks b0356cd pci, acpi: reroute PCI interrupt to legacy boot interrupt equivalent, warning fix 33be833 x86: boot IRQ quirks and rerouting, fix e1d3a90 pci, acpi: reroute PCI interrupt to legacy boot interrupt equivalent 426b3b8 pci: add quirk to disable boot interrupt generation on intel 6300ESB 9197979 x86, pci: introduce pci=ioapicreroute kernel cmdline option a9322f6 x86, pci: introduce pci=noioapicquirk kernel cmdline option 747ada3 pci: add PCI IDs for devices that need boot irq quirks from 25051158bbed127e8672b43396c71c5eb610e5f1 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 0a8c5395f90f06d128247844b2515c8bf3f2826b Merge: 25051158bbed127e8672b43396c71c5eb610e5f1 3c92ec8ae91ecf59d88c798301833d7cf83f2179 Author: Lachlan McIlroy Date: Mon Dec 29 16:47:18 2008 +1100 [XFS] Fix merge failures Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Conflicts: fs/xfs/linux-2.6/xfs_cred.h fs/xfs/linux-2.6/xfs_globals.h fs/xfs/linux-2.6/xfs_ioctl.c fs/xfs/xfs_vnodeops.h Signed-off-by: Lachlan McIlroy ----------------------------------------------------------------------- Summary of changes: Documentation/DocBook/Makefile | 2 +- Documentation/DocBook/networking.tmpl | 3 - Documentation/DocBook/wanbook.tmpl | 99 - Documentation/RCU/rculist_nulls.txt | 167 + Documentation/controllers/cpuacct.txt | 32 + Documentation/cpu-freq/user-guide.txt | 6 +- Documentation/credentials.txt | 582 + Documentation/feature-removal-schedule.txt | 19 - Documentation/filesystems/proc.txt | 9 +- Documentation/ftrace.txt | 149 +- Documentation/kbuild/makefiles.txt | 14 + Documentation/kernel-parameters.txt | 71 +- Documentation/markers.txt | 29 +- Documentation/networking/README.ipw2200 | 2 +- Documentation/networking/bonding.txt | 68 +- Documentation/networking/dccp.txt | 32 +- Documentation/networking/driver.txt | 2 +- Documentation/networking/generic-hdlc.txt | 8 +- Documentation/networking/ip-sysctl.txt | 6 + Documentation/networking/mac80211_hwsim/README | 9 +- Documentation/networking/netdevices.txt | 2 +- Documentation/networking/regulatory.txt | 22 +- Documentation/nmi_watchdog.txt | 5 + Documentation/powerpc/dts-bindings/fsl/tsec.txt | 12 +- Documentation/rfkill.txt | 20 +- Documentation/scheduler/sched-arch.txt | 4 +- Documentation/scheduler/sched-design-CFS.txt | 21 + Documentation/sh/kgdb.txt | 179 - Documentation/sound/alsa/ALSA-Configuration.txt | 330 +- Documentation/sound/alsa/HD-Audio-Models.txt | 348 + Documentation/sound/alsa/HD-Audio.txt | 577 + Documentation/sound/alsa/Procfile.txt | 10 + Documentation/sound/alsa/soc/machine.txt | 8 +- Documentation/tracepoints.txt | 94 +- Documentation/x86/boot.txt | 6 +- Documentation/x86/pat.txt | 24 + Documentation/x86/x86_64/boot-options.txt | 11 - Documentation/x86/x86_64/mm.txt | 2 +- MAINTAINERS | 52 +- Makefile | 209 +- arch/alpha/kernel/asm-offsets.c | 11 +- arch/alpha/kernel/entry.S | 10 +- arch/arm/mach-ixp4xx/fsg-setup.c | 9 +- arch/arm/mach-ixp4xx/include/mach/qmgr.h | 35 +- arch/arm/mach-ixp4xx/ixp4xx_qmgr.c | 44 +- arch/arm/mach-ixp4xx/nas100d-setup.c | 5 +- arch/arm/mach-ixp4xx/nslu2-setup.c | 5 +- arch/arm/mach-pxa/include/mach/palmasoc.h | 13 + arch/blackfin/boot/Makefile | 2 +- arch/ia64/Kconfig | 2 +- arch/ia64/hp/sim/simeth.c | 25 +- arch/ia64/ia32/sys_ia32.c | 7 +- arch/ia64/kernel/mca_drv.c | 2 +- arch/ia64/kernel/perfmon.c | 43 +- arch/ia64/kernel/signal.c | 4 +- arch/m32r/Kconfig | 2 +- arch/m68k/fpsp040/setox.S | 4 +- arch/m68k/mac/baboon.c | 42 +- arch/m68k/mac/config.c | 3 - arch/m68k/mac/debug.c | 1 - arch/m68k/mac/macints.c | 9 +- arch/m68k/mac/misc.c | 16 +- arch/m68k/mac/oss.c | 1 - arch/m68k/mac/via.c | 80 +- arch/mips/Kconfig | 2 +- arch/mips/include/asm/byteorder.h | 5 +- arch/mips/include/asm/elf.h | 2 +- arch/mips/kernel/kspd.c | 4 +- arch/mips/kernel/mips-mt-fpaff.c | 5 +- arch/mips/kernel/vpe.c | 4 +- arch/parisc/include/asm/tlbflush.h | 5 +- arch/parisc/kernel/signal.c | 2 +- arch/powerpc/Kconfig | 66 +- arch/powerpc/Kconfig.debug | 9 + arch/powerpc/Makefile | 1 - arch/powerpc/boot/Makefile | 1 + arch/powerpc/boot/devtree.c | 2 +- arch/powerpc/boot/dts/asp834x-redboot.dts | 20 + arch/powerpc/boot/dts/bamboo.dts | 3 +- arch/powerpc/boot/dts/canyonlands.dts | 14 + arch/powerpc/boot/dts/gef_sbc610.dts | 11 + arch/powerpc/boot/dts/ksi8560.dts | 20 + arch/powerpc/boot/dts/kuroboxHD.dts | 1 - arch/powerpc/boot/dts/kuroboxHG.dts | 1 - arch/powerpc/boot/dts/lite5200.dts | 1 - arch/powerpc/boot/dts/lite5200b.dts | 1 - arch/powerpc/boot/dts/motionpro.dts | 1 - arch/powerpc/boot/dts/mpc8313erdb.dts | 20 + arch/powerpc/boot/dts/mpc8315erdb.dts | 20 +- arch/powerpc/boot/dts/mpc8349emitx.dts | 19 +- arch/powerpc/boot/dts/mpc8349emitxgp.dts | 6 +- arch/powerpc/boot/dts/mpc834x_mds.dts | 19 + arch/powerpc/boot/dts/mpc8377_mds.dts | 19 + arch/powerpc/boot/dts/mpc8377_rdb.dts | 20 +- arch/powerpc/boot/dts/mpc8378_mds.dts | 19 + arch/powerpc/boot/dts/mpc8378_rdb.dts | 18 +- arch/powerpc/boot/dts/mpc8379_mds.dts | 18 + arch/powerpc/boot/dts/mpc8379_rdb.dts | 19 +- arch/powerpc/boot/dts/mpc8536ds.dts | 18 + arch/powerpc/boot/dts/mpc8540ads.dts | 31 + arch/powerpc/boot/dts/mpc8541cds.dts | 18 + arch/powerpc/boot/dts/mpc8544ds.dts | 20 + arch/powerpc/boot/dts/mpc8548cds.dts | 44 + arch/powerpc/boot/dts/mpc8555cds.dts | 18 + arch/powerpc/boot/dts/mpc8560ads.dts | 18 + arch/powerpc/boot/dts/mpc8568mds.dts | 18 + arch/powerpc/boot/dts/mpc8572ds.dts | 158 + arch/powerpc/boot/dts/mpc8572ds_camp_core0.dts | 483 + arch/powerpc/boot/dts/mpc8572ds_camp_core1.dts | 234 + arch/powerpc/boot/dts/mpc8641_hpcn.dts | 45 + arch/powerpc/boot/dts/pcm030.dts | 2 - arch/powerpc/boot/dts/sbc8349.dts | 18 + arch/powerpc/boot/dts/sbc8548.dts | 18 + arch/powerpc/boot/dts/sbc8560.dts | 18 + arch/powerpc/boot/dts/sbc8641d.dts | 44 + arch/powerpc/boot/dts/stx_gp3_8560.dts | 18 + arch/powerpc/boot/dts/tqm5200.dts | 1 - arch/powerpc/boot/dts/tqm8540.dts | 28 + arch/powerpc/boot/dts/tqm8541.dts | 18 + arch/powerpc/boot/dts/tqm8548-bigflash.dts | 44 + arch/powerpc/boot/dts/tqm8548.dts | 44 + arch/powerpc/boot/dts/tqm8555.dts | 18 + arch/powerpc/boot/dts/tqm8560.dts | 18 + arch/powerpc/boot/libfdt-wrapper.c | 2 +- arch/powerpc/configs/86xx/gef_sbc610_defconfig | 8 +- arch/powerpc/configs/ppc44x_defconfig | 12 +- arch/powerpc/include/asm/atomic.h | 18 +- arch/powerpc/include/asm/bug.h | 11 +- arch/powerpc/include/asm/byteorder.h | 38 +- arch/powerpc/include/asm/cputable.h | 113 +- arch/powerpc/include/asm/dcr-native.h | 63 +- arch/powerpc/include/asm/dcr.h | 4 +- arch/powerpc/include/asm/device.h | 12 + arch/powerpc/include/asm/dma-mapping.h | 156 +- arch/powerpc/include/asm/eeh.h | 8 +- arch/powerpc/include/asm/elf.h | 2 +- arch/powerpc/include/asm/feature-fixups.h | 30 + arch/powerpc/include/asm/ftrace.h | 14 +- arch/powerpc/include/asm/highmem.h | 23 +- arch/powerpc/include/asm/io.h | 7 - arch/powerpc/include/asm/kdump.h | 13 + arch/powerpc/include/asm/kexec.h | 15 +- arch/powerpc/include/asm/local.h | 4 +- arch/powerpc/include/asm/lppaca.h | 3 +- arch/powerpc/include/asm/mmu-40x.h | 5 +- arch/powerpc/include/asm/mmu-44x.h | 22 +- arch/powerpc/include/asm/mmu-8xx.h | 3 +- arch/powerpc/include/asm/mmu-fsl-booke.h | 7 +- arch/powerpc/include/asm/mmu.h | 57 + arch/powerpc/include/asm/mmu_context.h | 257 +- arch/powerpc/include/asm/module.h | 16 +- arch/powerpc/include/asm/mpc52xx.h | 19 + arch/powerpc/include/asm/mpc52xx_psc.h | 11 +- arch/powerpc/include/asm/mutex.h | 135 +- arch/powerpc/include/asm/page.h | 13 +- arch/powerpc/include/asm/page_32.h | 7 +- arch/powerpc/include/asm/pci-bridge.h | 30 +- arch/powerpc/include/asm/pci.h | 15 +- arch/powerpc/include/asm/pgalloc-32.h | 11 +- arch/powerpc/include/asm/pgalloc-64.h | 34 - arch/powerpc/include/asm/pgalloc.h | 41 + arch/powerpc/include/asm/pgtable-ppc32.h | 42 +- arch/powerpc/include/asm/pgtable-ppc64.h | 15 +- arch/powerpc/include/asm/pgtable.h | 26 + arch/powerpc/include/asm/ppc_asm.h | 4 +- arch/powerpc/include/asm/processor.h | 8 +- arch/powerpc/include/asm/prom.h | 3 + arch/powerpc/include/asm/ps3.h | 56 +- arch/powerpc/include/asm/ps3av.h | 4 - arch/powerpc/include/asm/reg.h | 4 + arch/powerpc/include/asm/rtas.h | 1 + arch/powerpc/include/asm/sfp-machine.h | 58 +- arch/powerpc/include/asm/smp.h | 7 + arch/powerpc/include/asm/spinlock.h | 2 +- arch/powerpc/include/asm/synch.h | 4 + arch/powerpc/include/asm/system.h | 24 +- arch/powerpc/include/asm/time.h | 20 - arch/powerpc/include/asm/tlbflush.h | 87 +- arch/powerpc/include/asm/vdso_datapage.h | 3 + arch/powerpc/kernel/Makefile | 5 + arch/powerpc/kernel/asm-offsets.c | 6 + arch/powerpc/kernel/cputable.c | 117 +- arch/powerpc/kernel/dma.c | 26 + arch/powerpc/kernel/entry_32.S | 40 +- arch/powerpc/kernel/entry_64.S | 12 - arch/powerpc/kernel/ftrace.c | 461 +- arch/powerpc/kernel/head_32.S | 31 +- arch/powerpc/kernel/head_44x.S | 34 +- arch/powerpc/kernel/head_fsl_booke.S | 107 +- arch/powerpc/kernel/ibmebus.c | 3 +- arch/powerpc/kernel/idle.c | 5 + arch/powerpc/kernel/machine_kexec.c | 91 +- arch/powerpc/kernel/machine_kexec_64.c | 78 +- arch/powerpc/kernel/misc_32.S | 238 +- arch/powerpc/kernel/module.c | 6 + arch/powerpc/kernel/module_32.c | 10 + arch/powerpc/kernel/module_64.c | 13 + arch/powerpc/kernel/of_device.c | 18 +- arch/powerpc/kernel/paca.c | 1 + arch/powerpc/kernel/pci-common.c | 300 +- arch/powerpc/kernel/pci_32.c | 108 +- arch/powerpc/kernel/pci_64.c | 134 +- arch/powerpc/kernel/ppc_ksyms.c | 9 +- arch/powerpc/kernel/ppc_save_regs.S | 74 + arch/powerpc/kernel/process.c | 4 +- arch/powerpc/kernel/prom.c | 47 +- arch/powerpc/kernel/prom_parse.c | 5 +- arch/powerpc/kernel/rtas.c | 26 + arch/powerpc/kernel/rtas_pci.c | 48 - arch/powerpc/kernel/setup_32.c | 15 +- arch/powerpc/kernel/setup_64.c | 5 +- arch/powerpc/kernel/smp-tbsync.c | 12 +- arch/powerpc/kernel/smp.c | 71 +- arch/powerpc/kernel/swsusp.c | 2 +- arch/powerpc/kernel/swsusp_32.S | 6 +- arch/powerpc/kernel/sysfs.c | 7 +- arch/powerpc/kernel/time.c | 36 +- arch/powerpc/kernel/traps.c | 62 +- arch/powerpc/kernel/vdso.c | 13 +- arch/powerpc/kernel/vdso32/gettimeofday.S | 208 +- arch/powerpc/kernel/vdso32/vdso32.lds.S | 3 + arch/powerpc/kernel/vdso64/gettimeofday.S | 141 +- arch/powerpc/kernel/vdso64/vdso64.lds.S | 3 + arch/powerpc/kernel/vio.c | 12 +- arch/powerpc/kernel/vmlinux.lds.S | 6 + arch/powerpc/kvm/powerpc.c | 3 +- arch/powerpc/lib/Makefile | 3 + arch/powerpc/lib/copyuser_64.S | 17 +- arch/powerpc/lib/dma-noncoherent.c | 25 +- arch/powerpc/lib/memcpy_64.S | 16 +- arch/powerpc/math-emu/Makefile | 2 + arch/powerpc/math-emu/fadd.c | 1 - arch/powerpc/math-emu/fcmpo.c | 5 +- arch/powerpc/math-emu/fdiv.c | 9 +- arch/powerpc/math-emu/fdivs.c | 9 +- arch/powerpc/math-emu/fmadd.c | 5 +- arch/powerpc/math-emu/fmadds.c | 5 +- arch/powerpc/math-emu/fmsub.c | 5 +- arch/powerpc/math-emu/fmsubs.c | 5 +- arch/powerpc/math-emu/fmul.c | 3 +- arch/powerpc/math-emu/fmuls.c | 3 +- arch/powerpc/math-emu/fnmadd.c | 5 +- arch/powerpc/math-emu/fnmadds.c | 5 +- arch/powerpc/math-emu/fnmsub.c | 5 +- arch/powerpc/math-emu/fnmsubs.c | 5 +- arch/powerpc/math-emu/fsqrt.c | 5 +- arch/powerpc/math-emu/fsqrts.c | 5 +- arch/powerpc/math-emu/fsub.c | 3 +- arch/powerpc/math-emu/fsubs.c | 3 +- arch/powerpc/math-emu/math_efp.c | 720 ++ arch/powerpc/mm/Makefile | 10 +- arch/powerpc/mm/fault.c | 16 +- arch/powerpc/mm/hash_low_32.S | 111 +- arch/powerpc/mm/hugetlbpage.c | 22 +- arch/powerpc/mm/init_32.c | 6 +- arch/powerpc/mm/mem.c | 6 +- arch/powerpc/mm/mmu_context_32.c | 84 - arch/powerpc/mm/mmu_context_64.c | 70 - arch/powerpc/mm/mmu_context_hash32.c | 103 + arch/powerpc/mm/mmu_context_hash64.c | 78 + arch/powerpc/mm/mmu_context_nohash.c | 397 + arch/powerpc/mm/mmu_decl.h | 65 +- arch/powerpc/mm/pgtable.c | 117 + arch/powerpc/mm/pgtable_32.c | 56 +- arch/powerpc/mm/ppc_mmu_32.c | 10 +- arch/powerpc/mm/tlb_32.c | 190 - arch/powerpc/mm/tlb_64.c | 297 - arch/powerpc/mm/tlb_hash32.c | 194 + arch/powerpc/mm/tlb_hash64.c | 211 + arch/powerpc/mm/tlb_nohash.c | 209 + arch/powerpc/mm/tlb_nohash_low.S | 166 + arch/powerpc/platforms/40x/ep405.c | 2 +- arch/powerpc/platforms/40x/kilauea.c | 2 +- arch/powerpc/platforms/40x/ppc40x_simple.c | 2 +- arch/powerpc/platforms/44x/ebony.c | 2 +- arch/powerpc/platforms/44x/ppc44x_simple.c | 2 +- arch/powerpc/platforms/44x/sam440ep.c | 2 +- arch/powerpc/platforms/52xx/lite5200_pm.c | 1 - arch/powerpc/platforms/52xx/mpc52xx_pci.c | 2 +- arch/powerpc/platforms/52xx/mpc52xx_pic.c | 237 +- arch/powerpc/platforms/52xx/mpc52xx_pic.h | 53 - arch/powerpc/platforms/52xx/mpc52xx_pm.c | 3 - arch/powerpc/platforms/82xx/pq2.c | 2 +- arch/powerpc/platforms/85xx/Makefile | 2 + arch/powerpc/platforms/85xx/mpc85xx_ds.c | 11 +- arch/powerpc/platforms/85xx/mpc85xx_mds.c | 8 +- arch/powerpc/platforms/85xx/smp.c | 104 + arch/powerpc/platforms/86xx/Kconfig | 2 + arch/powerpc/platforms/86xx/Makefile | 3 +- arch/powerpc/platforms/86xx/gef_gpio.c | 143 + arch/powerpc/platforms/Kconfig.cputype | 12 +- arch/powerpc/platforms/cell/Kconfig | 23 +- arch/powerpc/platforms/cell/Makefile | 17 +- arch/powerpc/platforms/cell/celleb_setup.c | 9 - arch/powerpc/platforms/cell/iommu.c | 5 +- arch/powerpc/platforms/cell/qpace_setup.c | 152 + arch/powerpc/platforms/cell/setup.c | 6 - arch/powerpc/platforms/cell/spufs/file.c | 27 +- arch/powerpc/platforms/cell/spufs/inode.c | 8 +- arch/powerpc/platforms/chrp/pci.c | 3 +- arch/powerpc/platforms/embedded6xx/c2k.c | 6 - arch/powerpc/platforms/embedded6xx/prpmc2800.c | 6 - arch/powerpc/platforms/iseries/Kconfig | 1 + arch/powerpc/platforms/maple/setup.c | 6 - arch/powerpc/platforms/powermac/cpufreq_32.c | 2 +- arch/powerpc/platforms/powermac/pci.c | 6 +- arch/powerpc/platforms/powermac/setup.c | 10 +- arch/powerpc/platforms/powermac/sleep.S | 5 +- arch/powerpc/platforms/powermac/smp.c | 2 +- arch/powerpc/platforms/ps3/device-init.c | 33 +- arch/powerpc/platforms/ps3/mm.c | 2 +- arch/powerpc/platforms/ps3/setup.c | 8 +- arch/powerpc/platforms/ps3/system-bus.c | 38 +- arch/powerpc/platforms/pseries/Kconfig | 2 +- arch/powerpc/platforms/pseries/cmm.c | 29 +- arch/powerpc/platforms/pseries/eeh.c | 44 +- arch/powerpc/platforms/pseries/hotplug-cpu.c | 2 +- arch/powerpc/platforms/pseries/pci_dlpar.c | 163 +- arch/powerpc/platforms/pseries/phyp_dump.c | 5 + arch/powerpc/platforms/pseries/xics.c | 43 +- arch/powerpc/sysdev/bestcomm/ata.c | 3 + arch/powerpc/sysdev/bestcomm/ata.h | 19 +- arch/powerpc/sysdev/bestcomm/bestcomm.c | 7 +- arch/powerpc/sysdev/bestcomm/bestcomm.h | 61 +- arch/powerpc/sysdev/bestcomm/bestcomm_priv.h | 20 +- arch/powerpc/sysdev/dcr-low.S | 8 +- arch/powerpc/sysdev/dcr.c | 5 +- arch/powerpc/sysdev/fsl_pci.c | 4 +- arch/powerpc/sysdev/fsl_soc.c | 241 +- arch/powerpc/sysdev/grackle.c | 2 +- arch/powerpc/sysdev/mpic.c | 32 +- arch/powerpc/sysdev/ppc4xx_pci.c | 306 +- arch/powerpc/sysdev/qe_lib/qe.c | 3 + arch/powerpc/sysdev/qe_lib/ucc.c | 4 +- arch/powerpc/xmon/Makefile | 2 +- arch/powerpc/xmon/setjmp.S | 74 - arch/powerpc/xmon/xmon.c | 5 +- arch/s390/Kconfig | 41 +- arch/s390/Makefile | 1 + arch/s390/appldata/appldata.h | 4 - arch/s390/appldata/appldata_base.c | 12 +- arch/s390/appldata/appldata_net_sum.c | 4 +- arch/s390/appldata/appldata_os.c | 21 +- arch/s390/crypto/aes_s390.c | 14 +- arch/s390/hypfs/hypfs_diag.c | 10 +- arch/s390/hypfs/inode.c | 18 +- arch/s390/include/asm/auxvec.h | 2 + arch/s390/include/asm/bug.h | 5 +- arch/s390/include/asm/byteorder.h | 72 +- arch/s390/include/asm/elf.h | 16 + arch/s390/include/asm/fcx.h | 4 +- arch/s390/include/asm/ftrace.h | 8 + arch/s390/include/asm/isc.h | 1 + arch/s390/include/asm/mmu.h | 1 + arch/s390/include/asm/page.h | 2 + arch/s390/include/asm/pgalloc.h | 5 +- arch/s390/include/asm/processor.h | 4 +- arch/s390/include/asm/qdio.h | 16 +- arch/s390/include/asm/sigp.h | 1 + arch/s390/include/asm/smp.h | 5 +- arch/s390/include/asm/sysinfo.h | 11 + arch/s390/include/asm/system.h | 24 +- arch/s390/include/asm/timer.h | 9 - arch/s390/include/asm/vdso.h | 39 + arch/s390/kernel/Makefile | 18 +- arch/s390/kernel/asm-offsets.c | 15 + arch/s390/kernel/compat_linux.c | 28 +- arch/s390/kernel/cpcmd.c | 7 +- arch/s390/kernel/debug.c | 39 +- arch/s390/kernel/entry.S | 58 +- arch/s390/kernel/entry64.S | 58 +- arch/s390/kernel/head.S | 49 + arch/s390/kernel/head31.S | 28 +- arch/s390/kernel/head64.S | 24 - arch/s390/kernel/mcount.S | 56 + arch/s390/kernel/processor.c | 98 + arch/s390/kernel/ptrace.c | 10 +- arch/s390/kernel/s390_ksyms.c | 5 + arch/s390/kernel/setup.c | 185 +- arch/s390/kernel/smp.c | 201 +- arch/s390/kernel/time.c | 278 +- arch/s390/kernel/topology.c | 46 +- arch/s390/kernel/vdso.c | 234 + arch/s390/kernel/vdso32/Makefile | 55 + arch/s390/kernel/vdso32/clock_getres.S | 39 + arch/s390/kernel/vdso32/clock_gettime.S | 128 + arch/s390/kernel/vdso32/gettimeofday.S | 82 + .../vdso/vdso-note.S => s390/kernel/vdso32/note.S} | 0 arch/s390/kernel/vdso32/vdso32.lds.S | 138 + arch/s390/kernel/vdso32/vdso32_wrapper.S | 13 + arch/s390/kernel/vdso64/Makefile | 55 + arch/s390/kernel/vdso64/clock_getres.S | 39 + arch/s390/kernel/vdso64/clock_gettime.S | 89 + arch/s390/kernel/vdso64/gettimeofday.S | 56 + .../vdso/vdso-note.S => s390/kernel/vdso64/note.S} | 0 arch/s390/kernel/vdso64/vdso64.lds.S | 138 + arch/s390/kernel/vdso64/vdso64_wrapper.S | 13 + arch/s390/kernel/vtime.c | 11 - arch/s390/mm/extmem.c | 106 +- arch/sh/Kconfig | 83 +- arch/sh/Kconfig.debug | 104 +- arch/sh/Makefile | 33 +- arch/sh/boards/Kconfig | 11 +- arch/sh/boards/Makefile | 1 - arch/sh/boards/board-ap325rxa.c | 7 +- arch/sh/boards/board-rsk7203.c | 179 - arch/sh/boards/board-shmin.c | 14 +- arch/sh/boards/mach-cayman/Makefile | 1 - arch/sh/boards/mach-cayman/irq.c | 35 +- arch/sh/boards/mach-cayman/led.c | 51 - arch/sh/boards/mach-dreamcast/irq.c | 192 +- arch/sh/boards/mach-dreamcast/setup.c | 5 +- arch/sh/boards/mach-edosk7705/Makefile | 1 - arch/sh/boards/mach-edosk7705/io.c | 61 +- arch/sh/boards/mach-edosk7705/setup.c | 9 +- arch/sh/boards/mach-hp6xx/pm.c | 78 +- arch/sh/boards/mach-microdev/Makefile | 5 +- arch/sh/boards/mach-microdev/fdc37c93xapm.c | 160 + arch/sh/boards/mach-microdev/irq.c | 36 +- arch/sh/boards/mach-microdev/led.c | 101 - arch/sh/boards/mach-microdev/setup.c | 196 +- arch/sh/boards/mach-migor/setup.c | 21 +- arch/sh/boards/mach-rsk/Kconfig | 18 + arch/sh/boards/mach-rsk/Makefile | 2 + arch/sh/boards/mach-rsk/devices-rsk7203.c | 103 + arch/sh/boards/mach-rsk/setup.c | 106 + arch/sh/boards/mach-se/7343/Makefile | 2 +- arch/sh/boards/mach-se/7343/io.c | 273 - arch/sh/boards/mach-se/7343/setup.c | 126 +- arch/sh/boards/mach-se/770x/setup.c | 4 +- arch/sh/boards/mach-se/7721/setup.c | 7 +- arch/sh/boards/mach-se/7722/setup.c | 10 +- arch/sh/boards/mach-sh03/setup.c | 59 +- arch/sh/boards/mach-systemh/irq.c | 37 +- arch/sh/cchips/hd6446x/hd64461.c | 115 +- arch/sh/configs/edosk7705_defconfig | 438 + arch/sh/configs/rsk7201_defconfig | 703 ++ arch/sh/configs/rsk7203_defconfig | 65 +- arch/sh/configs/rts7751r2dplus_qemu_defconfig | 949 -- arch/sh/configs/se7343_defconfig | 303 +- arch/sh/drivers/dma/Makefile | 1 - arch/sh/drivers/dma/dma-isa.c | 106 - arch/sh/drivers/dma/dma-sh.c | 3 +- arch/sh/drivers/dma/dma-sh.h | 1 + arch/sh/drivers/pci/ops-sh03.c | 3 +- arch/sh/drivers/pci/pci-sh7780.c | 12 +- arch/sh/include/asm/addrspace.h | 11 + arch/sh/include/asm/bitops-grb.h | 3 + arch/sh/include/asm/bitops-irq.h | 91 - arch/sh/include/asm/bitops-llsc.h | 2 + arch/sh/include/asm/bitops-op32.h | 142 + arch/sh/include/asm/bitops.h | 9 +- arch/sh/include/asm/bugs.h | 2 +- arch/sh/include/asm/elf.h | 4 +- arch/sh/include/asm/ftrace.h | 28 +- arch/sh/include/asm/io.h | 4 + arch/sh/include/asm/kgdb.h | 66 +- arch/sh/include/asm/machvec.h | 5 - arch/sh/include/asm/mmu_context.h | 4 +- arch/sh/include/asm/mutex-llsc.h | 112 + arch/sh/include/asm/mutex.h | 5 +- arch/sh/include/asm/pm.h | 17 - arch/sh/include/asm/processor.h | 5 +- arch/sh/include/asm/processor_32.h | 12 +- arch/sh/include/asm/processor_64.h | 4 +- arch/sh/include/asm/ptrace.h | 2 +- arch/sh/include/asm/sh_bios.h | 1 - arch/sh/include/asm/string_64.h | 21 +- arch/sh/include/asm/syscall_32.h | 2 +- arch/sh/include/asm/syscall_64.h | 76 +- arch/sh/include/asm/system.h | 2 + arch/sh/include/asm/unaligned-sh4a.h | 258 + arch/sh/include/asm/unaligned.h | 7 +- arch/sh/include/cpu-sh3/cpu/gpio.h | 14 + arch/sh/include/mach-common/mach/edosk7705.h | 31 +- arch/sh/include/mach-se/mach/mrshpc.h | 52 + arch/sh/include/mach-se/mach/se.h | 18 + arch/sh/include/mach-se/mach/se7343.h | 9 +- arch/sh/kernel/Makefile_32 | 18 +- arch/sh/kernel/Makefile_64 | 5 +- arch/sh/kernel/cf-enabler.c | 168 - arch/sh/kernel/cpu/clock.c | 10 + arch/sh/kernel/cpu/init.c | 2 + arch/sh/kernel/cpu/sh2a/Makefile | 3 +- arch/sh/kernel/cpu/sh2a/clock-sh7201.c | 85 + arch/sh/kernel/cpu/sh2a/probe.c | 7 +- arch/sh/kernel/cpu/sh2a/setup-sh7201.c | 331 + arch/sh/kernel/cpu/sh3/entry.S | 14 +- arch/sh/kernel/cpu/sh3/ex.S | 2 +- arch/sh/kernel/cpu/sh4/softfloat.c | 73 +- arch/sh/kernel/cpu/sh4a/clock-sh7722.c | 310 +- arch/sh/kernel/cpu/sh4a/setup-sh7343.c | 37 +- arch/sh/kernel/cpu/sh4a/setup-sh7366.c | 19 +- arch/sh/kernel/cpu/sh4a/setup-sh7722.c | 50 +- arch/sh/kernel/cpu/sh4a/setup-sh7723.c | 19 +- arch/sh/kernel/debugtraps.S | 13 +- arch/sh/kernel/disassemble.c | 573 + arch/sh/kernel/entry-common.S | 54 +- arch/sh/kernel/ftrace.c | 133 + arch/sh/kernel/head_32.S | 12 +- arch/sh/kernel/idle.c | 81 + arch/sh/kernel/kgdb.c | 285 + arch/sh/kernel/kgdb_jmp.S | 33 - arch/sh/kernel/kgdb_stub.c | 1052 -- arch/sh/kernel/pm.c | 88 - arch/sh/kernel/process_32.c | 81 +- arch/sh/kernel/process_64.c | 111 - arch/sh/kernel/ptrace_64.c | 186 +- arch/sh/kernel/setup.c | 1 + arch/sh/kernel/sh_bios.c | 65 +- arch/sh/kernel/sh_ksyms_32.c | 37 +- arch/sh/kernel/sh_ksyms_64.c | 5 +- arch/sh/kernel/signal_32.c | 1 - arch/sh/kernel/signal_64.c | 154 +- arch/sh/kernel/sys_sh.c | 92 - arch/sh/kernel/time_32.c | 12 - arch/sh/kernel/time_64.c | 5 - arch/sh/kernel/timers/timer-mtu2.c | 5 + arch/sh/kernel/traps_32.c | 36 +- arch/sh/kernel/vsyscall/vsyscall.c | 3 +- arch/sh/lib/Makefile | 16 +- arch/sh/lib/ashiftrt.S | 149 + arch/{mips => sh}/lib/ashldi3.c | 0 arch/sh/lib/ashlsi3.S | 193 + arch/{mips => sh}/lib/ashrdi3.c | 0 arch/sh/lib/ashrsi3.S | 185 + arch/{mips => sh}/lib/libgcc.h | 0 arch/{mips => sh}/lib/lshrdi3.c | 0 arch/sh/lib/lshrsi3.S | 193 + arch/sh/lib/mcount.S | 90 + arch/sh/lib/movmem.S | 238 + arch/sh/lib/udiv_qrnnd.S | 81 + arch/sh/lib/udivsi3.S | 87 + arch/sh/lib/udivsi3_i4i-Os.S | 149 + arch/sh/lib/udivsi3_i4i.S | 666 ++ arch/sh/lib64/Makefile | 8 +- arch/sh/lib64/c-checksum.c | 4 +- arch/sh/lib64/memcpy.S | 201 + arch/sh/lib64/memcpy.c | 81 - arch/sh/lib64/memset.S | 91 + arch/sh/lib64/sdivsi3.S | 131 + arch/sh/lib64/strcpy.S | 97 + arch/sh/lib64/strlen.S | 33 + arch/sh/lib64/udivdi3.S | 120 + arch/sh/lib64/udivsi3.S | 59 + arch/sh/mm/Makefile_32 | 1 + arch/sh/mm/Makefile_64 | 1 + arch/sh/mm/asids-debugfs.c | 79 + arch/sh/mm/consistent.c | 7 +- arch/sh/mm/fault_32.c | 17 - arch/sh/mm/ioremap_32.c | 3 +- arch/sh/mm/mmap.c | 94 + arch/sh/oprofile/Makefile | 13 +- arch/sh/oprofile/backtrace.c | 114 + arch/sh/oprofile/common.c | 150 + arch/sh/oprofile/op_impl.h | 33 + arch/sh/oprofile/op_model_null.c | 23 - arch/sh/oprofile/op_model_sh7750.c | 172 +- arch/sh/tools/mach-types | 2 + arch/sparc/include/asm/device.h | 12 + arch/sparc64/kernel/idprom.c | 5 +- arch/um/drivers/daemon_kern.c | 2 +- arch/um/drivers/mcast_kern.c | 2 +- arch/um/drivers/mconsole_kern.c | 3 +- arch/um/drivers/net_kern.c | 29 +- arch/um/drivers/pcap_kern.c | 2 +- arch/um/drivers/slip_kern.c | 2 +- arch/um/drivers/slirp_kern.c | 2 +- arch/um/drivers/vde_kern.c | 2 +- arch/um/os-Linux/drivers/ethertap_kern.c | 2 +- arch/um/os-Linux/drivers/tuntap_kern.c | 2 +- arch/x86/Kconfig | 91 +- arch/x86/Kconfig.cpu | 1 + arch/x86/Kconfig.debug | 24 +- arch/x86/boot/video-vga.c | 4 +- arch/x86/boot/video.c | 2 +- arch/x86/configs/i386_defconfig | 4 +- arch/x86/configs/x86_64_defconfig | 4 +- arch/x86/crypto/crc32c-intel.c | 121 +- arch/x86/ia32/ia32_aout.c | 2 +- arch/x86/ia32/ia32_signal.c | 109 +- arch/x86/include/asm/apic.h | 1 + arch/x86/include/asm/bigsmp/apic.h | 2 - arch/x86/include/asm/bitops.h | 10 +- arch/x86/include/asm/bug.h | 2 +- arch/x86/include/asm/byteorder.h | 74 +- arch/x86/include/asm/cpufeature.h | 5 +- arch/x86/include/asm/dma-mapping.h | 2 - arch/x86/include/asm/ds.h | 312 +- arch/x86/include/asm/dwarf2.h | 97 +- arch/x86/include/asm/elf.h | 2 +- arch/x86/include/asm/emergency-restart.h | 4 +- arch/x86/include/asm/es7000/apic.h | 79 +- arch/x86/include/asm/es7000/wakecpu.h | 41 +- arch/x86/include/asm/ftrace.h | 61 +- arch/x86/include/asm/gart.h | 33 + arch/x86/include/asm/genapic_32.h | 19 +- arch/x86/include/asm/genapic_64.h | 2 + arch/x86/include/asm/hardirq_32.h | 2 + arch/x86/include/asm/hardirq_64.h | 2 + arch/x86/include/asm/hw_irq.h | 4 +- arch/x86/include/asm/hypervisor.h | 26 + arch/x86/include/asm/ia32.h | 18 - arch/x86/include/asm/idle.h | 5 + arch/x86/include/asm/io.h | 37 +- arch/x86/include/asm/io_64.h | 2 - arch/x86/include/asm/io_apic.h | 10 + arch/x86/include/asm/iommu.h | 33 - arch/x86/include/asm/irq.h | 4 - arch/x86/include/asm/irq_regs_32.h | 2 + arch/x86/include/asm/kexec.h | 31 +- arch/x86/include/asm/linkage.h | 60 + arch/x86/include/asm/mach-default/mach_apic.h | 2 + arch/x86/include/asm/mach-default/mach_wakecpu.h | 24 +- arch/x86/include/asm/mach-default/smpboot_hooks.h | 8 +- arch/x86/include/asm/mach-generic/mach_apic.h | 1 + arch/x86/include/asm/mach-generic/mach_wakecpu.h | 12 + arch/x86/include/asm/mmu_context_32.h | 13 +- arch/x86/include/asm/msr-index.h | 2 + arch/x86/include/asm/msr.h | 15 +- arch/x86/include/asm/numaq/wakecpu.h | 24 +- arch/x86/include/asm/pci.h | 2 + arch/x86/include/asm/pgtable-2level.h | 50 +- arch/x86/include/asm/pgtable-3level.h | 1 + arch/x86/include/asm/pgtable.h | 28 +- arch/x86/include/asm/pgtable_32.h | 9 - arch/x86/include/asm/pgtable_64.h | 28 +- arch/x86/include/asm/prctl.h | 3 + arch/x86/include/asm/processor.h | 17 + arch/x86/include/asm/ptrace.h | 43 +- arch/x86/include/asm/reboot.h | 5 + arch/x86/include/asm/setup.h | 7 + arch/x86/include/asm/sigframe.h | 70 + arch/x86/include/asm/signal.h | 6 +- arch/x86/include/asm/sparsemem.h | 2 +- arch/x86/include/asm/syscalls.h | 16 +- arch/x86/include/asm/system.h | 6 +- arch/x86/include/asm/thread_info.h | 9 +- arch/x86/include/asm/trampoline.h | 7 + arch/x86/include/asm/traps.h | 11 +- arch/x86/include/asm/tsc.h | 8 +- arch/x86/include/asm/uaccess.h | 4 +- arch/x86/include/asm/uv/bios.h | 34 +- arch/x86/include/asm/uv/uv_hub.h | 103 +- arch/x86/include/asm/vmware.h | 27 + arch/x86/include/asm/xen/hypercall.h | 6 + arch/x86/include/asm/xen/hypervisor.h | 39 +- arch/x86/include/asm/xen/page.h | 5 + arch/x86/kernel/Makefile | 8 +- arch/x86/kernel/acpi/boot.c | 11 + arch/x86/kernel/amd_iommu.c | 1 + arch/x86/kernel/amd_iommu_init.c | 1 + arch/x86/kernel/aperture_64.c | 5 +- arch/x86/kernel/apic.c | 143 +- arch/x86/kernel/apm_32.c | 4 - arch/x86/kernel/asm-offsets_32.c | 2 +- arch/x86/kernel/asm-offsets_64.c | 4 +- arch/x86/kernel/bios_uv.c | 58 +- arch/x86/kernel/check.c | 161 + arch/x86/kernel/cpu/Makefile | 6 + arch/x86/kernel/cpu/addon_cpuid_features.c | 8 + arch/x86/kernel/cpu/amd.c | 9 +- arch/x86/kernel/cpu/common.c | 8 +- arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c | 4 + arch/x86/kernel/cpu/hypervisor.c | 58 + arch/x86/kernel/cpu/intel.c | 23 +- arch/x86/kernel/cpu/intel_cacheinfo.c | 17 +- arch/x86/kernel/cpu/mcheck/mce_amd_64.c | 2 +- arch/x86/kernel/cpu/mcheck/mce_intel_64.c | 2 +- arch/x86/kernel/cpu/mtrr/main.c | 346 +- arch/x86/kernel/cpu/vmware.c | 112 + arch/x86/kernel/crash.c | 70 +- arch/x86/kernel/ds.c | 1147 ++- arch/x86/kernel/dumpstack.c | 351 + arch/x86/kernel/dumpstack.h | 39 + arch/x86/kernel/dumpstack_32.c | 307 +- arch/x86/kernel/dumpstack_64.c | 289 +- arch/x86/kernel/e820.c | 16 - arch/x86/kernel/early-quirks.c | 1 + arch/x86/kernel/early_printk.c | 47 - arch/x86/kernel/entry_32.S | 528 +- arch/x86/kernel/entry_64.S | 1458 ++-- arch/x86/kernel/es7000_32.c | 62 +- arch/x86/kernel/ftrace.c | 390 +- arch/x86/kernel/genapic_64.c | 4 + arch/x86/kernel/genx2apic_uv_x.c | 111 +- arch/x86/kernel/head.c | 1 - arch/x86/kernel/head32.c | 3 + arch/x86/kernel/head64.c | 3 + arch/x86/kernel/hpet.c | 4 +- arch/x86/kernel/init_task.c | 1 - arch/x86/kernel/io_apic.c | 3 +- arch/x86/kernel/irq_64.c | 27 +- arch/x86/kernel/irqinit_32.c | 2 +- arch/x86/kernel/irqinit_64.c | 66 - arch/x86/kernel/machine_kexec_32.c | 104 +- arch/x86/kernel/microcode_amd.c | 232 +- arch/x86/kernel/microcode_core.c | 6 +- arch/x86/kernel/microcode_intel.c | 2 +- arch/x86/kernel/mpparse.c | 25 +- arch/x86/kernel/nmi.c | 58 +- arch/x86/kernel/numaq_32.c | 10 +- arch/x86/kernel/pci-dma.c | 11 +- arch/x86/kernel/process.c | 35 +- arch/x86/kernel/process_32.c | 67 +- arch/x86/kernel/process_64.c | 58 +- arch/x86/kernel/ptrace.c | 432 +- arch/x86/kernel/reboot.c | 126 +- arch/x86/kernel/relocate_kernel_32.S | 115 - arch/x86/kernel/setup.c | 169 +- arch/x86/kernel/sigframe.h | 42 - arch/x86/kernel/signal.c | 909 ++ arch/x86/kernel/signal_32.c | 716 -- arch/x86/kernel/signal_64.c | 516 - arch/x86/kernel/smp.c | 31 +- arch/x86/kernel/smpboot.c | 25 +- arch/x86/kernel/stacktrace.c | 64 + arch/x86/kernel/time_32.c | 2 +- arch/x86/kernel/time_64.c | 6 +- arch/x86/kernel/tlb_32.c | 13 +- arch/x86/kernel/tlb_64.c | 2 +- arch/x86/kernel/tlb_uv.c | 4 - arch/x86/kernel/trampoline.c | 19 +- arch/x86/kernel/traps.c | 38 +- arch/x86/kernel/tsc.c | 42 +- arch/x86/kernel/tsc_sync.c | 8 +- arch/x86/kernel/vmi_32.c | 119 - arch/x86/kernel/vmlinux_32.lds.S | 1 + arch/x86/kernel/vmlinux_64.lds.S | 1 + arch/x86/kernel/vsyscall_64.c | 12 + arch/x86/lguest/boot.c | 3 +- arch/x86/mach-generic/bigsmp.c | 1 + arch/x86/mach-generic/default.c | 1 + arch/x86/mach-generic/es7000.c | 14 +- arch/x86/mach-generic/probe.c | 16 +- arch/x86/mach-generic/summit.c | 1 + arch/x86/mm/Makefile | 3 +- arch/x86/mm/fault.c | 15 +- arch/x86/mm/init_32.c | 32 +- arch/x86/mm/init_64.c | 2 - arch/x86/mm/ioremap.c | 3 +- arch/x86/mm/pat.c | 236 + arch/x86/pci/common.c | 17 + arch/x86/pci/direct.c | 4 +- arch/x86/pci/pci.h | 1 + arch/x86/scripts/strip-symbols | 1 + arch/x86/vdso/vclock_gettime.c | 3 + arch/x86/vdso/vdso32-setup.c | 2 +- arch/x86/vdso/vma.c | 2 +- arch/x86/xen/enlighten.c | 17 +- arch/x86/xen/mmu.c | 17 +- arch/x86/xen/multicalls.c | 2 +- arch/x86/xen/setup.c | 9 +- arch/xtensa/platforms/iss/network.c | 21 +- block/Kconfig | 1 + block/blk-core.c | 46 +- block/blktrace.c | 332 +- block/elevator.c | 12 +- crypto/Kconfig | 29 +- crypto/Makefile | 1 + crypto/aes_generic.c | 1145 ++- crypto/ahash.c | 38 +- crypto/ansi_cprng.c | 35 +- crypto/api.c | 121 +- crypto/authenc.c | 3 + crypto/camellia.c | 84 +- crypto/crc32c.c | 290 +- crypto/crypto_null.c | 64 +- crypto/des_generic.c | 5 +- crypto/fcrypt.c | 8 +- crypto/hmac.c | 10 +- crypto/internal.h | 2 + crypto/md4.c | 56 +- crypto/md5.c | 50 +- crypto/michael_mic.c | 72 +- crypto/proc.c | 20 +- crypto/rmd128.c | 61 +- crypto/rmd160.c | 61 +- crypto/rmd256.c | 61 +- crypto/rmd320.c | 61 +- crypto/salsa20_generic.c | 75 +- crypto/sha1_generic.c | 56 +- crypto/sha256_generic.c | 104 +- crypto/sha512_generic.c | 127 +- crypto/shash.c | 508 + crypto/testmgr.c | 76 +- crypto/testmgr.h | 2 +- crypto/tgr192.c | 135 +- crypto/wp512.c | 121 +- drivers/acpi/bus.c | 8 - drivers/acpi/pci_irq.c | 56 + drivers/acpi/processor_idle.c | 6 +- drivers/acpi/utilities/utglobal.c | 2 +- drivers/ata/Kconfig | 3 +- drivers/ata/pata_mpc52xx.c | 546 +- drivers/atm/Kconfig | 6 + drivers/atm/Makefile | 1 + drivers/atm/solos-pci.c | 790 ++ drivers/block/aoe/aoe.h | 1 - drivers/block/aoe/aoeblk.c | 2 +- drivers/block/aoe/aoecmd.c | 22 +- drivers/block/aoe/aoenet.c | 11 - drivers/block/loop.c | 6 +- drivers/bluetooth/Kconfig | 20 - drivers/bluetooth/Makefile | 1 - drivers/bluetooth/bcm203x.c | 9 +- drivers/bluetooth/bfusb.c | 11 +- drivers/bluetooth/bpa10x.c | 7 +- drivers/bluetooth/bt3c_cs.c | 8 +- drivers/bluetooth/btsdio.c | 6 +- drivers/bluetooth/btusb.c | 229 +- drivers/bluetooth/hci_bcsp.c | 5 - drivers/bluetooth/hci_h4.c | 5 - drivers/bluetooth/hci_ldisc.c | 9 +- drivers/bluetooth/hci_usb.c | 1136 -- drivers/bluetooth/hci_usb.h | 129 - drivers/bluetooth/hci_vhci.c | 5 - drivers/char/Kconfig | 16 + drivers/char/Makefile | 2 + drivers/char/bsr.c | 84 +- drivers/char/hvc_console.c | 13 +- drivers/char/hvc_console.h | 2 +- drivers/char/hvc_iseries.c | 4 +- drivers/char/hvc_iucv.c | 850 ++ drivers/char/hvc_udbg.c | 96 + drivers/char/hvc_vio.c | 4 +- drivers/char/hvcs.c | 2 +- drivers/char/hvsi.c | 2 +- drivers/char/nvram.c | 264 +- drivers/char/sysrq.c | 18 +- drivers/char/tty_audit.c | 76 +- drivers/char/tty_io.c | 1 + drivers/connector/cn_proc.c | 16 +- drivers/crypto/hifn_795x.c | 494 +- drivers/crypto/padlock-aes.c | 52 +- drivers/crypto/talitos.c | 153 +- drivers/crypto/talitos.h | 85 +- drivers/edac/Kconfig | 2 +- drivers/edac/edac_device.c | 12 +- drivers/firmware/dmi_scan.c | 11 + drivers/firmware/iscsi_ibft.c | 7 +- drivers/gpu/drm/radeon/radeon_irq.c | 4 +- drivers/i2c/busses/i2c-sh_mobile.c | 73 +- drivers/ide/cs5530.c | 3 +- drivers/ide/macide.c | 1 - drivers/ide/sc1200.c | 3 +- drivers/infiniband/core/addr.c | 196 +- drivers/infiniband/core/cma.c | 86 +- drivers/infiniband/core/sysfs.c | 10 +- drivers/infiniband/hw/amso1100/c2_provider.c | 8 +- drivers/infiniband/hw/ehca/ehca_classes.h | 7 + drivers/infiniband/hw/ehca/ehca_eq.c | 2 +- drivers/infiniband/hw/ehca/ehca_main.c | 17 +- drivers/infiniband/hw/ehca/ehca_qp.c | 12 +- drivers/infiniband/hw/ehca/ehca_reqs.c | 13 +- drivers/infiniband/hw/ipath/ipath_driver.c | 49 +- drivers/infiniband/hw/ipath/ipath_file_ops.c | 30 +- drivers/infiniband/hw/ipath/ipath_fs.c | 2 +- drivers/infiniband/hw/ipath/ipath_iba6120.c | 61 + drivers/infiniband/hw/ipath/ipath_iba7220.c | 83 +- drivers/infiniband/hw/ipath/ipath_init_chip.c | 1 + drivers/infiniband/hw/ipath/ipath_kernel.h | 15 + drivers/infiniband/hw/ipath/ipath_keys.c | 2 + drivers/infiniband/hw/ipath/ipath_mad.c | 2 + drivers/infiniband/hw/ipath/ipath_qp.c | 32 +- drivers/infiniband/hw/ipath/ipath_rc.c | 5 +- drivers/infiniband/hw/ipath/ipath_sdma.c | 21 +- drivers/infiniband/hw/ipath/ipath_stats.c | 8 + drivers/infiniband/hw/ipath/ipath_ud.c | 19 +- drivers/infiniband/hw/ipath/ipath_verbs.c | 3 +- drivers/infiniband/hw/ipath/ipath_verbs.h | 1 + drivers/infiniband/hw/mlx4/cq.c | 12 +- drivers/infiniband/hw/mlx4/main.c | 2 +- drivers/infiniband/hw/mthca/mthca_mcg.c | 23 +- drivers/infiniband/hw/nes/nes.c | 17 +- drivers/infiniband/hw/nes/nes.h | 18 +- drivers/infiniband/hw/nes/nes_cm.c | 310 +- drivers/infiniband/hw/nes/nes_cm.h | 14 +- drivers/infiniband/hw/nes/nes_hw.c | 44 +- drivers/infiniband/hw/nes/nes_nic.c | 13 +- drivers/infiniband/hw/nes/nes_utils.c | 14 +- drivers/infiniband/hw/nes/nes_verbs.c | 45 +- drivers/infiniband/ulp/ipoib/ipoib.h | 23 - drivers/infiniband/ulp/ipoib/ipoib_cm.c | 8 +- drivers/infiniband/ulp/ipoib/ipoib_ib.c | 6 +- drivers/infiniband/ulp/ipoib/ipoib_main.c | 25 +- drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 70 +- drivers/infiniband/ulp/iser/iscsi_iser.h | 3 + drivers/infiniband/ulp/iser/iser_initiator.c | 132 +- drivers/infiniband/ulp/iser/iser_verbs.c | 9 +- drivers/infiniband/ulp/srp/ib_srp.c | 31 +- drivers/input/keyboard/sh_keysc.c | 28 +- drivers/isdn/capi/capifs.c | 4 +- drivers/isdn/gigaset/asyncdata.c | 18 +- drivers/isdn/gigaset/bas-gigaset.c | 13 +- drivers/isdn/gigaset/common.c | 21 +- drivers/isdn/gigaset/ev-layer.c | 42 +- drivers/isdn/gigaset/gigaset.h | 20 +- drivers/isdn/gigaset/i4l.c | 4 +- drivers/isdn/gigaset/interface.c | 52 +- drivers/isdn/gigaset/isocdata.c | 6 +- drivers/isdn/gigaset/ser-gigaset.c | 32 +- drivers/isdn/gigaset/usb-gigaset.c | 14 +- drivers/isdn/hardware/eicon/di.c | 28 +- drivers/isdn/hardware/eicon/message.c | 60 +- drivers/isdn/hardware/mISDN/hfc_multi.h | 4 +- drivers/isdn/hardware/mISDN/hfcmulti.c | 67 +- drivers/isdn/hysdn/hysdn_net.c | 6 +- drivers/isdn/hysdn/hysdn_procconf.c | 6 +- drivers/isdn/i4l/isdn_concap.c | 4 +- drivers/isdn/i4l/isdn_net.c | 224 +- drivers/isdn/i4l/isdn_net.h | 50 +- drivers/isdn/i4l/isdn_ppp.c | 32 +- drivers/isdn/mISDN/core.c | 8 +- drivers/isdn/mISDN/dsp_audio.c | 2 +- drivers/isdn/mISDN/dsp_cmx.c | 8 +- drivers/isdn/mISDN/dsp_core.c | 4 +- drivers/isdn/mISDN/dsp_hwec.c | 2 +- drivers/isdn/mISDN/dsp_pipeline.c | 2 +- drivers/isdn/mISDN/dsp_tones.c | 92 +- drivers/isdn/mISDN/l1oip_codec.c | 1 + drivers/isdn/mISDN/l1oip_core.c | 22 +- drivers/isdn/mISDN/layer1.c | 3 +- drivers/isdn/mISDN/layer2.c | 16 +- drivers/isdn/mISDN/socket.c | 2 +- drivers/isdn/mISDN/stack.c | 2 +- drivers/isdn/mISDN/tei.c | 4 +- drivers/isdn/mISDN/timerdev.c | 9 +- drivers/macintosh/via-cuda.c | 1 - drivers/macintosh/via-macii.c | 1 - drivers/macintosh/via-maciisi.c | 1 - drivers/macintosh/via-pmu.c | 4 +- drivers/macintosh/via-pmu68k.c | 1 - drivers/macintosh/windfarm_smu_sat.c | 5 +- drivers/md/dm.c | 8 +- drivers/media/dvb/b2c2/Kconfig | 2 +- drivers/media/dvb/b2c2/flexcop-fe-tuner.c | 2 + drivers/media/dvb/b2c2/flexcop-i2c.c | 6 +- drivers/media/dvb/b2c2/flexcop.c | 2 +- drivers/media/dvb/bt8xx/Kconfig | 2 +- drivers/media/dvb/bt8xx/dst.c | 4 +- drivers/media/dvb/dm1105/dm1105.c | 3 +- drivers/media/dvb/dvb-core/dvb_net.c | 37 +- drivers/media/dvb/dvb-usb/Kconfig | 46 +- drivers/media/dvb/dvb-usb/dib0700_devices.c | 6 +- drivers/media/dvb/dvb-usb/dvb-usb-dvb.c | 5 +- drivers/media/dvb/pluto2/pluto2.c | 3 +- drivers/media/dvb/ttpci/Kconfig | 2 +- drivers/media/video/Kconfig | 2 +- drivers/media/video/compat_ioctl32.c | 2 +- drivers/media/video/cx18/Kconfig | 2 +- drivers/media/video/cx23885/Kconfig | 4 +- drivers/media/video/cx88/Kconfig | 2 +- drivers/media/video/em28xx/em28xx-video.c | 3 +- drivers/media/video/gspca/gspca.c | 4 +- drivers/media/video/pvrusb2/Kconfig | 2 +- drivers/media/video/saa7134/Kconfig | 4 +- drivers/media/video/sh_mobile_ceu_camera.c | 20 +- drivers/message/fusion/mptlan.c | 22 +- drivers/message/fusion/mptlan.h | 2 +- drivers/misc/sgi-gru/gruprocfs.c | 1 - drivers/misc/sgi-xp/xp.h | 7 +- drivers/misc/sgi-xp/xp_main.c | 7 + drivers/misc/sgi-xp/xp_sn2.c | 34 + drivers/misc/sgi-xp/xp_uv.c | 70 +- drivers/misc/sgi-xp/xpc.h | 12 + drivers/misc/sgi-xp/xpc_sn2.c | 15 +- drivers/misc/sgi-xp/xpc_uv.c | 290 +- drivers/misc/sgi-xp/xpnet.c | 13 +- drivers/net/3c501.c | 3 +- drivers/net/3c501.h | 2 +- drivers/net/3c503.c | 21 +- drivers/net/3c505.c | 51 +- drivers/net/3c507.c | 15 +- drivers/net/3c509.c | 6 +- drivers/net/3c515.c | 13 +- drivers/net/3c523.c | 46 +- drivers/net/3c527.c | 4 +- drivers/net/3c59x.c | 13 +- drivers/net/7990.c | 1 - drivers/net/8139cp.c | 47 +- drivers/net/8139too.c | 57 +- drivers/net/82596.c | 48 +- drivers/net/8390.c | 50 +- drivers/net/8390.h | 15 + drivers/net/8390p.c | 50 +- drivers/net/Kconfig | 64 +- drivers/net/Makefile | 11 +- drivers/net/a2065.c | 5 +- drivers/net/ac3200.c | 5 +- drivers/net/acenic.c | 37 +- drivers/net/amd8111e.c | 12 +- drivers/net/apne.c | 29 +- drivers/net/appletalk/cops.c | 9 - drivers/net/appletalk/ipddp.c | 6 +- drivers/net/appletalk/ltpc.c | 13 +- drivers/net/arcnet/arc-rawmode.c | 5 +- drivers/net/arcnet/arc-rimi.c | 16 +- drivers/net/arcnet/arcnet.c | 32 +- drivers/net/arcnet/capmode.c | 9 +- drivers/net/arcnet/com20020-isa.c | 4 +- drivers/net/arcnet/com20020-pci.c | 2 +- drivers/net/arcnet/com20020.c | 10 +- drivers/net/arcnet/com90io.c | 4 +- drivers/net/arcnet/com90xx.c | 12 +- drivers/net/arcnet/rfc1051.c | 9 +- drivers/net/arcnet/rfc1201.c | 14 +- drivers/net/ariadne.c | 21 +- drivers/net/arm/Kconfig | 10 +- drivers/net/arm/Makefile | 3 +- drivers/net/arm/am79c961a.c | 7 +- drivers/net/arm/at91_ether.c | 11 +- drivers/net/arm/ep93xx_eth.c | 8 +- drivers/net/arm/ether1.c | 5 +- drivers/net/arm/ether3.c | 5 +- drivers/net/arm/etherh.c | 24 +- drivers/net/arm/ixp4xx_eth.c | 344 +- drivers/net/arm/ks8695net.c | 1676 +++ drivers/net/arm/ks8695net.h | 107 + drivers/net/at1700.c | 16 +- drivers/net/atarilance.c | 52 +- drivers/net/atl1e/atl1e_main.c | 47 +- drivers/net/atlx/atl1.c | 102 +- drivers/net/atlx/atl1.h | 4 +- drivers/net/atlx/atl2.c | 101 +- drivers/net/atlx/atl2.h | 1 - drivers/net/atlx/atlx.c | 13 - drivers/net/atp.c | 29 +- drivers/net/au1000_eth.c | 50 +- drivers/net/ax88796.c | 9 +- drivers/net/b44.c | 13 +- drivers/net/bfin_mac.c | 1 - drivers/net/bmac.c | 7 +- drivers/net/bnx2.c | 94 +- drivers/net/bnx2.h | 42 +- drivers/net/bnx2x_link.c | 72 +- drivers/net/bnx2x_link.h | 10 +- drivers/net/bnx2x_main.c | 95 +- drivers/net/bonding/Makefile | 3 + drivers/net/bonding/bond_3ad.c | 667 +- drivers/net/bonding/bond_3ad.h | 59 +- drivers/net/bonding/bond_alb.c | 37 +- drivers/net/bonding/bond_ipv6.c | 216 + drivers/net/bonding/bond_main.c | 477 +- drivers/net/bonding/bond_sysfs.c | 160 +- drivers/net/bonding/bonding.h | 68 +- drivers/net/can/vcan.c | 24 +- drivers/net/cassini.c | 16 +- drivers/net/chelsio/cxgb2.c | 94 +- drivers/net/chelsio/sge.c | 10 +- drivers/net/cpmac.c | 15 +- drivers/net/cris/eth_v10.c | 4 +- drivers/net/cs89x0.c | 16 +- drivers/net/cxgb3/adapter.h | 5 +- drivers/net/cxgb3/common.h | 4 +- drivers/net/cxgb3/cxgb3_ctl_defs.h | 17 + drivers/net/cxgb3/cxgb3_main.c | 130 +- drivers/net/cxgb3/cxgb3_offload.c | 76 +- drivers/net/cxgb3/sge.c | 105 +- drivers/net/cxgb3/t3_hw.c | 26 +- drivers/net/cxgb3/version.h | 2 +- drivers/net/cxgb3/vsc8211.c | 2 + drivers/net/de600.c | 4 +- drivers/net/de620.c | 26 +- drivers/net/declance.c | 7 +- drivers/net/defxx.c | 27 +- drivers/net/depca.c | 54 +- drivers/net/dl2k.c | 28 +- drivers/net/dm9000.c | 40 +- drivers/net/dummy.c | 15 +- drivers/net/e100.c | 68 +- drivers/net/e1000/e1000.h | 1 - drivers/net/e1000/e1000_main.c | 107 +- drivers/net/e1000e/82571.c | 19 +- drivers/net/e1000e/defines.h | 8 + drivers/net/e1000e/e1000.h | 2 + drivers/net/e1000e/es2lan.c | 194 +- drivers/net/e1000e/ethtool.c | 82 +- drivers/net/e1000e/hw.h | 8 +- drivers/net/e1000e/ich8lan.c | 151 +- drivers/net/e1000e/lib.c | 80 +- drivers/net/e1000e/netdev.c | 131 +- drivers/net/e1000e/phy.c | 12 +- drivers/net/e2100.c | 24 +- drivers/net/eepro.c | 10 +- drivers/net/eepro100.c | 2401 ---- drivers/net/eexpress.c | 3 +- drivers/net/ehea/ehea.h | 2 +- drivers/net/ehea/ehea_main.c | 9 +- drivers/net/ehea/ehea_qmr.c | 18 +- drivers/net/enc28j60.c | 49 +- drivers/net/enic/cq_desc.h | 5 +- drivers/net/enic/enic.h | 2 +- drivers/net/enic/enic_main.c | 86 +- drivers/net/enic/enic_res.c | 7 +- drivers/net/enic/enic_res.h | 4 - drivers/net/enic/vnic_dev.c | 70 +- drivers/net/enic/vnic_devcmd.h | 19 +- drivers/net/enic/vnic_intr.h | 2 +- drivers/net/enic/vnic_resource.h | 2 +- drivers/net/enic/vnic_rq.h | 9 +- drivers/net/enic/vnic_rss.h | 13 + drivers/net/enic/vnic_wq.h | 9 +- drivers/net/epic100.c | 56 +- drivers/net/eql.c | 12 +- drivers/net/es3210.c | 34 +- drivers/net/eth16i.c | 15 +- drivers/net/ewrk3.c | 18 +- drivers/net/fealnx.c | 6 +- drivers/net/fec.c | 6 +- drivers/net/fec_mpc52xx.c | 3 +- drivers/net/fec_mpc52xx_phy.c | 5 +- drivers/net/forcedeth.c | 90 +- drivers/net/fs_enet/fs_enet-main.c | 9 +- drivers/net/gianfar.c | 861 +- drivers/net/gianfar.h | 78 +- drivers/net/gianfar_ethtool.c | 89 +- drivers/net/gianfar_mii.c | 212 +- drivers/net/gianfar_mii.h | 2 + drivers/net/hamachi.c | 27 +- drivers/net/hamradio/6pack.c | 1 - drivers/net/hamradio/baycom_epp.c | 1 - drivers/net/hamradio/bpqether.c | 8 +- drivers/net/hamradio/dmascc.c | 13 +- drivers/net/hamradio/hdlcdrv.c | 1 - drivers/net/hamradio/mkiss.c | 4 +- drivers/net/hamradio/scc.c | 13 +- drivers/net/hamradio/yam.c | 1 - drivers/net/hp-plus.c | 27 +- drivers/net/hp.c | 25 +- drivers/net/hp100.c | 24 +- drivers/net/hydra.c | 28 +- drivers/net/ibm_newemac/core.c | 11 +- drivers/net/ibmlana.c | 6 +- drivers/net/ibmveth.c | 48 +- drivers/net/ifb.c | 13 +- drivers/net/igb/e1000_defines.h | 7 +- drivers/net/igb/e1000_mac.c | 25 +- drivers/net/igb/e1000_regs.h | 4 + drivers/net/igb/igb.h | 44 +- drivers/net/igb/igb_ethtool.c | 131 +- drivers/net/igb/igb_main.c | 403 +- drivers/net/ioc3-eth.c | 13 +- drivers/net/ipg.c | 9 - drivers/net/irda/ali-ircc.c | 17 +- drivers/net/irda/au1k_ir.c | 1 - drivers/net/irda/donauboe.c | 8 +- drivers/net/irda/irda-usb.c | 15 +- drivers/net/irda/irtty-sir.c | 7 +- drivers/net/irda/kingsun-sir.c | 1 - drivers/net/irda/ks959-sir.c | 1 - drivers/net/irda/ksdazzle-sir.c | 1 - drivers/net/irda/ma600-sir.c | 2 +- drivers/net/irda/mcs7780.c | 1 - drivers/net/irda/nsc-ircc.c | 17 +- drivers/net/irda/pxaficp_ir.c | 4 - drivers/net/irda/sa1100_ir.c | 28 +- drivers/net/irda/sir_dev.c | 12 +- drivers/net/irda/smsc-ircc2.c | 6 +- drivers/net/irda/stir4200.c | 1 - drivers/net/irda/via-ircc.c | 16 +- drivers/net/irda/vlsi_ir.c | 37 +- drivers/net/irda/w83977af_ir.c | 29 +- drivers/net/isa-skeleton.c | 16 +- drivers/net/iseries_veth.c | 14 +- drivers/net/ixgb/ixgb_main.c | 58 +- drivers/net/ixgbe/Makefile | 2 + drivers/net/ixgbe/ixgbe.h | 32 +- drivers/net/ixgbe/ixgbe_82598.c | 192 +- drivers/net/ixgbe/ixgbe_dcb.c | 332 + drivers/net/ixgbe/ixgbe_dcb.h | 184 + drivers/net/ixgbe/ixgbe_dcb_82598.c | 398 + drivers/net/ixgbe/ixgbe_dcb_82598.h | 94 + drivers/net/ixgbe/ixgbe_dcb_nl.c | 641 ++ drivers/net/ixgbe/ixgbe_ethtool.c | 134 +- drivers/net/ixgbe/ixgbe_main.c | 485 +- drivers/net/ixgbe/ixgbe_phy.c | 326 + drivers/net/ixgbe/ixgbe_phy.h | 25 + drivers/net/ixgbe/ixgbe_type.h | 28 +- drivers/net/ixp2000/ixpdev.c | 6 +- drivers/net/jazzsonic.c | 4 +- drivers/net/jme.c | 71 +- drivers/net/jme.h | 34 +- drivers/net/korina.c | 5 +- drivers/net/lance.c | 32 +- drivers/net/lib82596.c | 14 +- drivers/net/lib8390.c | 20 +- drivers/net/lne390.c | 29 +- drivers/net/loopback.c | 29 +- drivers/net/lp486e.c | 29 +- drivers/net/mac8390.c | 22 +- drivers/net/mac89x0.c | 16 +- drivers/net/macb.c | 18 +- drivers/net/mace.c | 34 +- drivers/net/macmace.c | 6 +- drivers/net/macsonic.c | 9 +- drivers/net/macvlan.c | 49 +- drivers/net/meth.c | 4 +- drivers/net/mlx4/cq.c | 11 +- drivers/net/mlx4/en_cq.c | 13 +- drivers/net/mlx4/en_main.c | 4 +- drivers/net/mlx4/en_netdev.c | 48 +- drivers/net/mlx4/en_params.c | 20 +- drivers/net/mlx4/en_rx.c | 9 +- drivers/net/mlx4/en_tx.c | 29 +- drivers/net/mlx4/eq.c | 121 +- drivers/net/mlx4/main.c | 53 +- drivers/net/mlx4/mcg.c | 25 +- drivers/net/mlx4/mlx4.h | 14 +- drivers/net/mlx4/mlx4_en.h | 12 +- drivers/net/mlx4/profile.c | 4 +- drivers/net/mv643xx_eth.c | 525 +- drivers/net/mvme147.c | 9 +- drivers/net/myri10ge/myri10ge.c | 71 +- drivers/net/myri10ge/myri10ge_mcp.h | 175 +- drivers/net/myri10ge/myri10ge_mcp_gen_header.h | 2 + drivers/net/myri_sbus.c | 27 +- drivers/net/natsemi.c | 12 +- drivers/net/ne-h8300.c | 30 +- drivers/net/ne.c | 29 +- drivers/net/ne2.c | 29 +- drivers/net/ne2k-pci.c | 28 +- drivers/net/ne3210.c | 31 +- drivers/net/netconsole.c | 9 +- drivers/net/netx-eth.c | 1 - drivers/net/netxen/netxen_nic_ethtool.c | 10 +- drivers/net/netxen/netxen_nic_hw.c | 6 +- drivers/net/netxen/netxen_nic_init.c | 2 - drivers/net/netxen/netxen_nic_main.c | 57 +- drivers/net/netxen/netxen_nic_niu.c | 7 +- drivers/net/ni5010.c | 15 +- drivers/net/ni52.c | 43 +- drivers/net/ni65.c | 39 +- drivers/net/niu.c | 145 +- drivers/net/niu.h | 2 +- drivers/net/ns83820.c | 28 +- drivers/net/pasemi_mac.c | 14 +- drivers/net/pasemi_mac_ethtool.c | 4 +- drivers/net/pci-skeleton.c | 8 +- drivers/net/pcmcia/3c574_cs.c | 6 +- drivers/net/pcmcia/3c589_cs.c | 6 +- drivers/net/pcmcia/axnet_cs.c | 22 +- drivers/net/pcmcia/com20020_cs.c | 6 +- drivers/net/pcmcia/fmvj18x_cs.c | 79 +- drivers/net/pcmcia/nmclan_cs.c | 6 +- drivers/net/pcmcia/pcnet_cs.c | 3 +- drivers/net/pcmcia/smc91c92_cs.c | 5 +- drivers/net/pcmcia/xirc2ps_cs.c | 6 +- drivers/net/pcnet32.c | 10 +- drivers/net/phy/Kconfig | 23 +- drivers/net/phy/Makefile | 5 +- drivers/net/phy/broadcom.c | 216 +- drivers/net/phy/et1011c.c | 113 + drivers/net/phy/mdio-gpio.c | 296 + drivers/net/phy/mdio-ofgpio.c | 204 - drivers/net/phy/mdio_bus.c | 40 +- drivers/net/phy/national.c | 155 + drivers/net/phy/phy.c | 2 +- drivers/net/phy/phy_device.c | 54 +- drivers/net/phy/smsc.c | 28 + drivers/net/phy/ste10Xp.c | 137 + drivers/net/plip.c | 35 +- drivers/net/ppp_async.c | 6 - drivers/net/ppp_generic.c | 234 +- drivers/net/ppp_synctty.c | 6 - drivers/net/pppoe.c | 5 +- drivers/net/pppol2tp.c | 94 +- drivers/net/ps3_gelic_net.c | 6 +- drivers/net/ps3_gelic_wireless.c | 37 +- drivers/net/ps3_gelic_wireless.h | 4 +- drivers/net/qla3xxx.c | 42 +- drivers/net/qlge/qlge_ethtool.c | 2 +- drivers/net/qlge/qlge_main.c | 79 +- drivers/net/qlge/qlge_mpi.c | 2 +- drivers/net/r6040.c | 51 +- drivers/net/r8169.c | 57 +- drivers/net/rionet.c | 31 +- drivers/net/rrunner.c | 25 +- drivers/net/s2io.c | 146 +- drivers/net/sb1000.c | 1 - drivers/net/sb1250-mac.c | 11 +- drivers/net/sc92031.c | 30 +- drivers/net/seeq8005.c | 13 +- drivers/net/sfc/Kconfig | 8 + drivers/net/sfc/Makefile | 5 +- drivers/net/sfc/boards.c | 206 +- drivers/net/sfc/boards.h | 14 +- drivers/net/sfc/efx.c | 449 +- drivers/net/sfc/efx.h | 12 +- drivers/net/sfc/enum.h | 36 +- drivers/net/sfc/ethtool.c | 175 +- drivers/net/sfc/falcon.c | 476 +- drivers/net/sfc/falcon.h | 3 + drivers/net/sfc/falcon_gmac.c | 229 + drivers/net/sfc/falcon_hwdefs.h | 161 +- drivers/net/sfc/falcon_xmac.c | 261 +- drivers/net/sfc/gmii.h | 137 +- drivers/net/sfc/mac.h | 16 +- drivers/net/sfc/mdio_10g.c | 483 +- drivers/net/sfc/mdio_10g.h | 63 +- drivers/net/sfc/mtd.c | 268 + drivers/net/sfc/net_driver.h | 131 +- drivers/net/sfc/phy.h | 7 +- drivers/net/sfc/rx.c | 2 +- drivers/net/sfc/selftest.c | 145 +- drivers/net/sfc/selftest.h | 14 +- drivers/net/sfc/sfe4001.c | 225 +- drivers/net/sfc/spi.h | 34 +- drivers/net/sfc/tenxpress.c | 796 +- drivers/net/sfc/workarounds.h | 12 +- drivers/net/sfc/xfp_phy.c | 29 +- drivers/net/sgiseeq.c | 7 +- drivers/net/sh_eth.c | 3 +- drivers/net/sis190.c | 7 +- drivers/net/sis900.c | 99 +- drivers/net/skfp/skfddi.c | 27 +- drivers/net/skge.c | 103 +- drivers/net/sky2.c | 56 +- drivers/net/slip.c | 12 +- drivers/net/smc-mca.c | 27 +- drivers/net/smc-ultra.c | 27 +- drivers/net/smc-ultra32.c | 5 +- drivers/net/smc911x.c | 16 +- drivers/net/smc9194.c | 13 +- drivers/net/smc91x.c | 42 +- drivers/net/smc91x.h | 58 +- drivers/net/smsc911x.c | 2071 ++++ drivers/net/smsc911x.h | 390 + drivers/net/smsc9420.c | 1744 +++ drivers/net/smsc9420.h | 275 + drivers/net/sonic.c | 1 - drivers/net/sonic.h | 20 +- drivers/net/spider_net.c | 17 +- drivers/net/spider_net_ethtool.c | 8 +- drivers/net/starfire.c | 24 +- drivers/net/stnic.c | 25 +- drivers/net/sun3_82586.c | 40 +- drivers/net/sun3lance.c | 10 +- drivers/net/sunbmac.c | 22 +- drivers/net/sundance.c | 6 +- drivers/net/sungem.c | 65 +- drivers/net/sunhme.c | 31 +- drivers/net/sunlance.c | 7 +- drivers/net/sunqe.c | 15 +- drivers/net/sunvnet.c | 5 +- drivers/net/tc35815.c | 49 +- drivers/net/tehuti.c | 73 +- drivers/net/tg3.c | 1068 ++- drivers/net/tg3.h | 188 +- drivers/net/tlan.c | 213 +- drivers/net/tokenring/3c359.c | 13 +- drivers/net/tokenring/Kconfig | 2 +- drivers/net/tokenring/abyss.c | 4 +- drivers/net/tokenring/ibmtr.c | 15 +- drivers/net/tokenring/lanstreamer.c | 36 +- drivers/net/tokenring/madgemc.c | 12 +- drivers/net/tokenring/olympic.c | 52 +- drivers/net/tokenring/proteon.c | 7 +- drivers/net/tokenring/skisa.c | 7 +- drivers/net/tokenring/smctr.c | 2 - drivers/net/tokenring/tms380tr.c | 15 +- drivers/net/tokenring/tmspci.c | 5 +- drivers/net/tsi108_eth.c | 12 +- drivers/net/tulip/de2104x.c | 54 +- drivers/net/tulip/de4x5.c | 17 +- drivers/net/tulip/dmfe.c | 7 +- drivers/net/tulip/eeprom.c | 2 +- drivers/net/tulip/interrupt.c | 10 +- drivers/net/tulip/tulip_core.c | 15 +- drivers/net/tulip/uli526x.c | 8 +- drivers/net/tulip/winbond-840.c | 16 +- drivers/net/tulip/xircom_cb.c | 4 +- drivers/net/tun.c | 41 +- drivers/net/typhoon.c | 15 +- drivers/net/ucc_geth.c | 408 +- drivers/net/ucc_geth.h | 1 + drivers/net/usb/asix.c | 5 +- drivers/net/usb/catc.c | 43 +- drivers/net/usb/dm9601.c | 5 +- drivers/net/usb/hso.c | 34 +- drivers/net/usb/kaweth.c | 17 +- drivers/net/usb/mcs7830.c | 9 +- drivers/net/usb/pegasus.c | 74 +- drivers/net/usb/rtl8150.c | 38 +- drivers/net/usb/smsc95xx.c | 110 +- drivers/net/usb/usbnet.c | 5 +- drivers/net/veth.c | 30 +- drivers/net/via-rhine.c | 47 +- drivers/net/via-velocity.c | 28 +- drivers/net/virtio_net.c | 217 +- drivers/net/wan/Kconfig | 9 + drivers/net/wan/Makefile | 3 +- drivers/net/wan/c101.c | 6 +- drivers/net/wan/cosa.c | 1 - drivers/net/wan/cycx_x25.c | 91 +- drivers/net/wan/dlci.c | 37 +- drivers/net/wan/dscc4.c | 4 +- drivers/net/wan/farsync.c | 2 - drivers/net/wan/hd64570.c | 723 ++ drivers/net/wan/hd64572.c | 640 ++ drivers/net/wan/hd6457x.c | 868 -- drivers/net/wan/hdlc_fr.c | 10 +- drivers/net/wan/hdlc_ppp.c | 649 +- drivers/net/wan/hostess_sv11.c | 1 - drivers/net/wan/ixp4xx_hss.c | 1325 +++ drivers/net/wan/lapbether.c | 3 - drivers/net/wan/lmc/lmc_main.c | 1 - drivers/net/wan/lmc/lmc_proto.c | 1 - drivers/net/wan/n2.c | 9 +- drivers/net/wan/pc300_drv.c | 22 +- drivers/net/wan/pc300too.c | 121 +- drivers/net/wan/pci200syn.c | 79 +- drivers/net/wan/sbni.c | 101 +- drivers/net/wan/sdla.c | 48 +- drivers/net/wan/sealevel.c | 1 - drivers/net/wan/syncppp.c | 1480 --- drivers/net/wan/wanxl.c | 9 +- drivers/net/wan/x25_asy.c | 52 +- drivers/net/wan/z85230.c | 12 +- drivers/net/wd.c | 29 +- drivers/net/wireless/Kconfig | 163 +- drivers/net/wireless/Makefile | 22 +- drivers/net/wireless/adm8211.c | 52 +- drivers/net/wireless/adm8211.h | 2 - drivers/net/wireless/airo.c | 243 +- drivers/net/wireless/airport.c | 286 - drivers/net/wireless/arlan-main.c | 27 +- drivers/net/wireless/ath5k/ath5k.h | 102 +- drivers/net/wireless/ath5k/attach.c | 14 +- drivers/net/wireless/ath5k/base.c | 191 +- drivers/net/wireless/ath5k/desc.c | 4 +- drivers/net/wireless/ath5k/dma.c | 190 +- drivers/net/wireless/ath5k/eeprom.c | 1194 ++- drivers/net/wireless/ath5k/eeprom.h | 253 +- drivers/net/wireless/ath5k/initvals.c | 8 +- drivers/net/wireless/ath5k/pcu.c | 233 +- drivers/net/wireless/ath5k/phy.c | 9 +- drivers/net/wireless/ath5k/qcu.c | 37 +- drivers/net/wireless/ath5k/reg.h | 16 +- drivers/net/wireless/ath5k/reset.c | 9 +- drivers/net/wireless/ath9k/Kconfig | 11 + drivers/net/wireless/ath9k/Makefile | 9 +- drivers/net/wireless/ath9k/ani.c | 852 ++ drivers/net/wireless/ath9k/ath9k.h | 432 +- drivers/net/wireless/ath9k/beacon.c | 319 +- drivers/net/wireless/ath9k/calib.c | 1021 ++ drivers/net/wireless/ath9k/core.c | 1886 --- drivers/net/wireless/ath9k/core.h | 926 +- drivers/net/wireless/ath9k/debug.c | 262 + drivers/net/wireless/ath9k/eeprom.c | 2824 +++++ drivers/net/wireless/ath9k/hw.c | 8490 ++++----------- drivers/net/wireless/ath9k/hw.h | 165 +- drivers/net/wireless/ath9k/initvals.h | 1938 +++- drivers/net/wireless/ath9k/mac.c | 946 ++ drivers/net/wireless/ath9k/main.c | 2353 +++-- drivers/net/wireless/ath9k/phy.c | 24 +- drivers/net/wireless/ath9k/phy.h | 5 + drivers/net/wireless/ath9k/rc.c | 1832 ++-- drivers/net/wireless/ath9k/rc.h | 220 +- drivers/net/wireless/ath9k/recv.c | 1242 +-- drivers/net/wireless/ath9k/reg.h | 109 +- drivers/net/wireless/ath9k/regd.c | 85 +- drivers/net/wireless/ath9k/regd.h | 2 +- drivers/net/wireless/ath9k/xmit.c | 1532 ++-- drivers/net/wireless/atmel.c | 79 +- drivers/net/wireless/b43/b43.h | 1 - drivers/net/wireless/b43/debugfs.c | 1 + drivers/net/wireless/b43/debugfs.h | 1 + drivers/net/wireless/b43/dma.c | 4 +- drivers/net/wireless/b43/main.c | 280 +- drivers/net/wireless/b43/phy_a.c | 4 +- drivers/net/wireless/b43/phy_common.c | 18 + drivers/net/wireless/b43/phy_g.c | 28 +- drivers/net/wireless/b43/pio.c | 3 +- drivers/net/wireless/b43/xmit.c | 64 +- drivers/net/wireless/b43/xmit.h | 5 +- drivers/net/wireless/b43legacy/b43legacy.h | 5 +- drivers/net/wireless/b43legacy/debugfs.c | 2 +- drivers/net/wireless/b43legacy/dma.c | 48 +- drivers/net/wireless/b43legacy/main.c | 211 +- drivers/net/wireless/b43legacy/phy.c | 6 +- drivers/net/wireless/b43legacy/pio.c | 31 +- drivers/net/wireless/b43legacy/xmit.c | 26 +- drivers/net/wireless/b43legacy/xmit.h | 2 +- drivers/net/wireless/hostap/Kconfig | 13 +- drivers/net/wireless/hostap/hostap.h | 2 +- drivers/net/wireless/hostap/hostap_80211.h | 2 +- drivers/net/wireless/hostap/hostap_80211_rx.c | 72 +- drivers/net/wireless/hostap/hostap_80211_tx.c | 23 +- drivers/net/wireless/hostap/hostap_ap.c | 253 +- drivers/net/wireless/hostap/hostap_ap.h | 8 +- drivers/net/wireless/hostap/hostap_common.h | 13 - drivers/net/wireless/hostap/hostap_hw.c | 71 +- drivers/net/wireless/hostap/hostap_info.c | 16 +- drivers/net/wireless/hostap/hostap_ioctl.c | 157 +- drivers/net/wireless/hostap/hostap_main.c | 45 +- drivers/net/wireless/hostap/hostap_pci.c | 2 +- drivers/net/wireless/hostap/hostap_proc.c | 35 +- drivers/net/wireless/hostap/hostap_wlan.h | 8 +- drivers/net/wireless/ipw2100.c | 8654 -------------- drivers/net/wireless/ipw2200.c |12008 -------------------- drivers/net/wireless/ipw2200.h | 2010 ---- drivers/net/wireless/ipw2x00/Kconfig | 191 + drivers/net/wireless/ipw2x00/Makefile | 14 + drivers/net/wireless/ipw2x00/ipw2100.c | 8649 ++++++++++++++ drivers/net/wireless/{ => ipw2x00}/ipw2100.h | 0 drivers/net/wireless/ipw2x00/ipw2200.c |11986 +++++++++++++++++++ drivers/net/wireless/ipw2x00/ipw2200.h | 2012 ++++ .../net/wireless/ipw2x00/libipw_geo.c | 0 drivers/net/wireless/ipw2x00/libipw_module.c | 293 + drivers/net/wireless/ipw2x00/libipw_rx.c | 1799 +++ drivers/net/wireless/ipw2x00/libipw_tx.c | 546 + drivers/net/wireless/ipw2x00/libipw_wx.c | 760 ++ drivers/net/wireless/iwlwifi/Kconfig | 2 + drivers/net/wireless/iwlwifi/Makefile | 3 +- drivers/net/wireless/iwlwifi/iwl-3945-commands.h | 148 +- drivers/net/wireless/iwlwifi/iwl-3945-core.h | 28 +- drivers/net/wireless/iwlwifi/iwl-3945-debug.h | 2 +- drivers/net/wireless/iwlwifi/iwl-3945-hw.h | 4 +- drivers/net/wireless/iwlwifi/iwl-3945-io.h | 24 +- drivers/net/wireless/iwlwifi/iwl-3945-led.c | 2 +- drivers/net/wireless/iwlwifi/iwl-3945-led.h | 2 +- drivers/net/wireless/iwlwifi/iwl-3945-rs.c | 223 +- drivers/net/wireless/iwlwifi/iwl-3945-rs.h | 2 +- drivers/net/wireless/iwlwifi/iwl-3945.c | 125 +- drivers/net/wireless/iwlwifi/iwl-3945.h | 40 +- drivers/net/wireless/iwlwifi/iwl-4965-hw.h | 203 +- drivers/net/wireless/iwlwifi/iwl-4965.c | 251 +- drivers/net/wireless/iwlwifi/iwl-5000-hw.h | 64 +- drivers/net/wireless/iwlwifi/iwl-5000.c | 440 +- drivers/net/wireless/iwlwifi/iwl-agn-hcmd-check.c | 108 + drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 179 +- drivers/net/wireless/iwlwifi/iwl-agn-rs.h | 22 +- drivers/net/wireless/iwlwifi/iwl-agn.c | 1241 +-- drivers/net/wireless/iwlwifi/iwl-calib.c | 19 +- drivers/net/wireless/iwlwifi/iwl-calib.h | 2 +- drivers/net/wireless/iwlwifi/iwl-commands.h | 536 +- drivers/net/wireless/iwlwifi/iwl-core.c | 335 +- drivers/net/wireless/iwlwifi/iwl-core.h | 78 +- drivers/net/wireless/iwlwifi/iwl-csr.h | 8 +- drivers/net/wireless/iwlwifi/iwl-debug.h | 33 +- drivers/net/wireless/iwlwifi/iwl-debugfs.c | 83 +- drivers/net/wireless/iwlwifi/iwl-dev.h | 183 +- drivers/net/wireless/iwlwifi/iwl-eeprom.c | 50 +- drivers/net/wireless/iwlwifi/iwl-eeprom.h | 15 +- drivers/net/wireless/iwlwifi/iwl-fh.h | 173 +- drivers/net/wireless/iwlwifi/iwl-hcmd.c | 4 +- drivers/net/wireless/iwlwifi/iwl-helpers.h | 111 +- drivers/net/wireless/iwlwifi/iwl-io.h | 37 +- drivers/net/wireless/iwlwifi/iwl-led.c | 7 +- drivers/net/wireless/iwlwifi/iwl-led.h | 2 +- drivers/net/wireless/iwlwifi/iwl-power.c | 38 +- drivers/net/wireless/iwlwifi/iwl-power.h | 2 +- drivers/net/wireless/iwlwifi/iwl-prph.h | 8 +- drivers/net/wireless/iwlwifi/iwl-rfkill.c | 12 +- drivers/net/wireless/iwlwifi/iwl-rfkill.h | 2 +- drivers/net/wireless/iwlwifi/iwl-rx.c | 230 +- drivers/net/wireless/iwlwifi/iwl-scan.c | 131 +- drivers/net/wireless/iwlwifi/iwl-spectrum.c | 198 + drivers/net/wireless/iwlwifi/iwl-spectrum.h | 3 +- drivers/net/wireless/iwlwifi/iwl-sta.c | 259 +- drivers/net/wireless/iwlwifi/iwl-sta.h | 16 +- drivers/net/wireless/iwlwifi/iwl-tx.c | 438 +- drivers/net/wireless/iwlwifi/iwl3945-base.c | 751 +- drivers/net/wireless/libertas/assoc.c | 69 +- drivers/net/wireless/libertas/cmd.c | 32 +- drivers/net/wireless/libertas/cmd.h | 3 +- drivers/net/wireless/libertas/debugfs.c | 11 +- drivers/net/wireless/libertas/decl.h | 4 - drivers/net/wireless/libertas/defs.h | 14 +- drivers/net/wireless/libertas/dev.h | 7 +- drivers/net/wireless/libertas/ethtool.c | 14 +- drivers/net/wireless/libertas/host.h | 9 + drivers/net/wireless/libertas/hostcmd.h | 26 +- drivers/net/wireless/libertas/if_sdio.c | 3 +- drivers/net/wireless/libertas/if_usb.c | 7 +- drivers/net/wireless/libertas/main.c | 135 +- drivers/net/wireless/libertas/persistcfg.c | 18 +- drivers/net/wireless/libertas/radiotap.h | 3 - drivers/net/wireless/libertas/scan.c | 105 +- drivers/net/wireless/libertas/scan.h | 4 + drivers/net/wireless/libertas/tx.c | 2 +- drivers/net/wireless/libertas/types.h | 5 +- drivers/net/wireless/libertas/wext.c | 80 +- drivers/net/wireless/libertas_tf/cmd.c | 5 +- drivers/net/wireless/libertas_tf/main.c | 8 +- drivers/net/wireless/mac80211_hwsim.c | 294 +- drivers/net/wireless/netwave_cs.c | 6 +- drivers/net/wireless/orinoco.c | 6021 ---------- drivers/net/wireless/orinoco.h | 213 - drivers/net/wireless/orinoco/Makefile | 12 + drivers/net/wireless/orinoco/airport.c | 286 + drivers/net/wireless/{ => orinoco}/hermes.c | 0 drivers/net/wireless/{ => orinoco}/hermes.h | 0 drivers/net/wireless/{ => orinoco}/hermes_dld.c | 0 drivers/net/wireless/{ => orinoco}/hermes_dld.h | 0 drivers/net/wireless/{ => orinoco}/hermes_rid.h | 0 drivers/net/wireless/orinoco/orinoco.c | 6130 ++++++++++ drivers/net/wireless/orinoco/orinoco.h | 222 + drivers/net/wireless/orinoco/orinoco_cs.c | 537 + .../net/wireless/{ => orinoco}/orinoco_nortel.c | 0 drivers/net/wireless/{ => orinoco}/orinoco_pci.c | 0 drivers/net/wireless/{ => orinoco}/orinoco_pci.h | 0 drivers/net/wireless/{ => orinoco}/orinoco_plx.c | 0 drivers/net/wireless/{ => orinoco}/orinoco_tmd.c | 0 drivers/net/wireless/orinoco/spectrum_cs.c | 530 + drivers/net/wireless/orinoco_cs.c | 533 - drivers/net/wireless/p54/p54.h | 74 +- drivers/net/wireless/p54/p54common.c | 1620 ++- drivers/net/wireless/p54/p54common.h | 349 +- drivers/net/wireless/p54/p54pci.c | 70 +- drivers/net/wireless/p54/p54pci.h | 2 +- drivers/net/wireless/p54/p54usb.c | 261 +- drivers/net/wireless/p54/p54usb.h | 1 + drivers/net/wireless/prism54/isl_ioctl.c | 24 +- drivers/net/wireless/prism54/islpci_hotplug.c | 8 +- drivers/net/wireless/ray_cs.c | 12 +- drivers/net/wireless/rndis_wlan.c | 95 +- drivers/net/wireless/rt2x00/Kconfig | 1 + drivers/net/wireless/rt2x00/rt2400pci.c | 373 +- drivers/net/wireless/rt2x00/rt2400pci.h | 2 + drivers/net/wireless/rt2x00/rt2500pci.c | 407 +- drivers/net/wireless/rt2x00/rt2500pci.h | 2 + drivers/net/wireless/rt2x00/rt2500usb.c | 443 +- drivers/net/wireless/rt2x00/rt2500usb.h | 5 + drivers/net/wireless/rt2x00/rt2x00.h | 113 +- drivers/net/wireless/rt2x00/rt2x00config.c | 202 +- drivers/net/wireless/rt2x00/rt2x00crypto.c | 79 +- drivers/net/wireless/rt2x00/rt2x00debug.c | 47 +- drivers/net/wireless/rt2x00/rt2x00debug.h | 13 + drivers/net/wireless/rt2x00/rt2x00dev.c | 86 +- drivers/net/wireless/rt2x00/rt2x00leds.c | 88 +- drivers/net/wireless/rt2x00/rt2x00lib.h | 33 +- drivers/net/wireless/rt2x00/rt2x00mac.c | 56 +- drivers/net/wireless/rt2x00/rt2x00pci.c | 41 +- drivers/net/wireless/rt2x00/rt2x00pci.h | 37 +- drivers/net/wireless/rt2x00/rt2x00queue.c | 94 +- drivers/net/wireless/rt2x00/rt2x00queue.h | 47 +- drivers/net/wireless/rt2x00/rt2x00usb.c | 145 +- drivers/net/wireless/rt2x00/rt2x00usb.h | 141 +- drivers/net/wireless/rt2x00/rt61pci.c | 469 +- drivers/net/wireless/rt2x00/rt61pci.h | 2 + drivers/net/wireless/rt2x00/rt73usb.c | 689 +- drivers/net/wireless/rt2x00/rt73usb.h | 2 + drivers/net/wireless/rtl8180_dev.c | 1081 -- drivers/net/wireless/rtl8180_rtl8225.c | 780 -- drivers/net/wireless/rtl8187.h | 221 - drivers/net/wireless/rtl8187_dev.c | 1261 -- drivers/net/wireless/rtl8187_rtl8225.c | 992 -- drivers/net/wireless/rtl818x.h | 231 - drivers/net/wireless/rtl818x/Makefile | 7 + drivers/net/wireless/{ => rtl818x}/rtl8180.h | 0 drivers/net/wireless/rtl818x/rtl8180_dev.c | 1093 ++ .../net/wireless/{ => rtl818x}/rtl8180_grf5101.c | 0 .../net/wireless/{ => rtl818x}/rtl8180_grf5101.h | 0 .../net/wireless/{ => rtl818x}/rtl8180_max2820.c | 0 .../net/wireless/{ => rtl818x}/rtl8180_max2820.h | 0 drivers/net/wireless/rtl818x/rtl8180_rtl8225.c | 788 ++ .../net/wireless/{ => rtl818x}/rtl8180_rtl8225.h | 0 .../net/wireless/{ => rtl818x}/rtl8180_sa2400.c | 0 .../net/wireless/{ => rtl818x}/rtl8180_sa2400.h | 0 drivers/net/wireless/rtl818x/rtl8187.h | 227 + drivers/net/wireless/rtl818x/rtl8187_dev.c | 1496 +++ drivers/net/wireless/rtl818x/rtl8187_rtl8225.c | 971 ++ .../net/wireless/{ => rtl818x}/rtl8187_rtl8225.h | 0 drivers/net/wireless/rtl818x/rtl818x.h | 232 + drivers/net/wireless/spectrum_cs.c | 507 - drivers/net/wireless/strip.c | 22 +- drivers/net/wireless/wavelan.c | 122 +- drivers/net/wireless/wavelan_cs.c | 39 +- drivers/net/wireless/wl3501.h | 4 +- drivers/net/wireless/wl3501_cs.c | 11 +- drivers/net/wireless/zd1201.c | 131 +- drivers/net/wireless/zd1211rw/zd_chip.c | 4 +- drivers/net/wireless/zd1211rw/zd_mac.c | 44 +- drivers/net/wireless/zd1211rw/zd_usb.c | 2 +- drivers/net/xen-netfront.c | 9 +- drivers/net/xtsonic.c | 6 +- drivers/net/yellowfin.c | 42 +- drivers/net/znet.c | 28 +- drivers/net/zorro8390.c | 29 +- drivers/of/base.c | 68 +- drivers/of/gpio.c | 70 +- drivers/of/of_i2c.c | 11 + drivers/parisc/led.c | 4 +- drivers/pci/hotplug/rpadlpar_core.c | 69 +- drivers/pci/quirks.c | 170 +- drivers/ps3/ps3av.c | 20 - drivers/ps3/ps3av_cmd.c | 4 +- drivers/rapidio/rio-scan.c | 8 +- drivers/rtc/rtc-isl1208.c | 7 + drivers/s390/block/dasd.c | 4 + drivers/s390/block/dasd_devmap.c | 19 +- drivers/s390/block/dasd_eckd.c | 2 +- drivers/s390/block/dasd_proc.c | 28 +- drivers/s390/block/dcssblk.c | 77 +- drivers/s390/block/xpram.c | 41 +- drivers/s390/char/monreader.c | 41 +- drivers/s390/char/monwriter.c | 5 +- drivers/s390/char/sclp_cmd.c | 29 +- drivers/s390/char/sclp_config.c | 10 +- drivers/s390/char/sclp_cpi_sys.c | 12 +- drivers/s390/char/sclp_sdias.c | 18 +- drivers/s390/char/sclp_vt220.c | 33 +- drivers/s390/char/vmcp.c | 11 +- drivers/s390/char/vmlogrdr.c | 26 +- drivers/s390/char/vmur.c | 15 +- drivers/s390/char/zcore.c | 14 +- drivers/s390/cio/blacklist.c | 14 +- drivers/s390/cio/ccwgroup.c | 26 +- drivers/s390/cio/chsc.c | 8 +- drivers/s390/cio/chsc_sch.c | 2 +- drivers/s390/cio/cio.c | 245 +- drivers/s390/cio/cio.h | 18 +- drivers/s390/cio/cmf.c | 63 +- drivers/s390/cio/css.c | 12 +- drivers/s390/cio/device.c | 237 +- drivers/s390/cio/device.h | 1 + drivers/s390/cio/device_fsm.c | 46 +- drivers/s390/cio/device_pgid.c | 2 +- drivers/s390/cio/device_status.c | 4 +- drivers/s390/cio/qdio.h | 33 +- drivers/s390/cio/qdio_debug.c | 104 +- drivers/s390/cio/qdio_debug.h | 112 +- drivers/s390/cio/qdio_main.c | 648 +- drivers/s390/cio/qdio_perf.c | 8 + drivers/s390/cio/qdio_perf.h | 5 + drivers/s390/cio/qdio_setup.c | 145 +- drivers/s390/cio/qdio_thinint.c | 29 +- drivers/s390/crypto/ap_bus.c | 212 +- drivers/s390/crypto/ap_bus.h | 6 +- drivers/s390/crypto/zcrypt_cex2a.c | 10 +- drivers/s390/crypto/zcrypt_pcica.c | 10 +- drivers/s390/crypto/zcrypt_pcicc.c | 10 +- drivers/s390/crypto/zcrypt_pcixcc.c | 10 +- drivers/s390/net/ctcm_fsms.c | 46 +- drivers/s390/net/ctcm_main.c | 72 +- drivers/s390/net/ctcm_main.h | 6 - drivers/s390/net/ctcm_mpc.c | 15 +- drivers/s390/net/ctcm_sysfs.c | 3 + drivers/s390/net/lcs.c | 104 +- drivers/s390/net/netiucv.c | 64 +- drivers/s390/net/qeth_core.h | 9 +- drivers/s390/net/qeth_core_main.c | 176 +- drivers/s390/net/qeth_core_offl.c | 8 +- drivers/s390/net/qeth_l2_main.c | 55 +- drivers/s390/net/qeth_l3_main.c | 211 +- drivers/s390/scsi/zfcp_aux.c | 28 +- drivers/s390/scsi/zfcp_ccw.c | 3 + drivers/s390/scsi/zfcp_cfdc.c | 3 + drivers/s390/scsi/zfcp_dbf.c | 3 + drivers/s390/scsi/zfcp_def.h | 2 + drivers/s390/scsi/zfcp_erp.c | 10 +- drivers/s390/scsi/zfcp_fc.c | 3 + drivers/s390/scsi/zfcp_fsf.c | 3 + drivers/s390/scsi/zfcp_qdio.c | 3 + drivers/s390/scsi/zfcp_scsi.c | 3 + drivers/s390/scsi/zfcp_sysfs.c | 3 + drivers/s390/sysinfo.c | 127 +- drivers/scsi/iscsi_tcp.c | 4 +- drivers/scsi/mac_scsi.c | 1 - drivers/scsi/qla4xxx/ql4_os.c | 3 +- drivers/serial/mpc52xx_uart.c | 74 +- drivers/serial/pmac_zilog.c | 27 + drivers/serial/sh-sci.c | 563 +- drivers/serial/sh-sci.h | 45 +- drivers/ssb/main.c | 11 +- drivers/ssb/pcihost_wrapper.c | 2 +- drivers/staging/slicoss/slicoss.c | 7 +- drivers/staging/winbond/linux/wbusb.c | 6 +- drivers/staging/wlan-ng/p80211netdev.c | 20 +- drivers/staging/wlan-ng/p80211wext.c | 58 +- drivers/usb/atm/cxacru.c | 4 +- drivers/usb/atm/usbatm.c | 5 +- drivers/usb/core/devio.c | 10 +- drivers/usb/core/inode.c | 4 +- drivers/usb/gadget/f_phonet.c | 621 + drivers/usb/gadget/m66592-udc.c | 34 +- drivers/usb/gadget/m66592-udc.h | 27 +- drivers/usb/gadget/u_ether.c | 10 +- drivers/usb/gadget/u_phonet.h | 21 + drivers/usb/host/r8a66597-hcd.c | 34 +- drivers/usb/host/r8a66597.h | 8 +- drivers/uwb/wlp/eda.c | 38 +- drivers/video/Kconfig | 33 +- drivers/video/console/fbcon.c | 78 +- drivers/video/controlfb.c | 4 +- drivers/video/fb_defio.c | 27 +- drivers/video/macfb.c | 33 +- drivers/video/ps3fb.c | 23 +- drivers/video/sh7760fb.c | 94 +- drivers/video/sh_mobile_lcdcfb.c | 198 +- drivers/w1/w1_io.c | 4 +- drivers/xen/balloon.c | 4 +- drivers/xen/features.c | 6 +- drivers/xen/grant-table.c | 1 + firmware/Makefile | 3 + firmware/WHENCE | 11 + firmware/cxgb3/t3b_psram-1.1.0.bin.ihex | 162 + firmware/cxgb3/t3c_psram-1.1.0.bin.ihex | 162 + firmware/cxgb3/t3fw-7.0.0.bin.ihex | 1881 +++ fs/9p/fid.c | 2 +- fs/9p/vfs_inode.c | 4 +- fs/9p/vfs_super.c | 4 +- fs/affs/inode.c | 4 +- fs/affs/super.c | 4 +- fs/afs/proc.c | 4 +- fs/afs/server.c | 9 +- fs/anon_inodes.c | 4 +- fs/attr.c | 4 +- fs/autofs/inode.c | 4 +- fs/autofs4/dev-ioctl.c | 3 +- fs/autofs4/inode.c | 4 +- fs/autofs4/waitq.c | 4 +- fs/bfs/dir.c | 4 +- fs/binfmt_aout.c | 2 +- fs/binfmt_elf.c | 22 +- fs/binfmt_elf_fdpic.c | 19 +- fs/binfmt_flat.c | 2 +- fs/binfmt_som.c | 2 +- fs/bio.c | 5 +- fs/cifs/AUTHORS | 2 + fs/cifs/CHANGES | 9 + fs/cifs/README | 12 +- fs/cifs/cifs_dfs_ref.c | 48 +- fs/cifs/cifs_fs_sb.h | 7 +- fs/cifs/cifs_spnego.c | 6 +- fs/cifs/cifsencrypt.c | 30 +- fs/cifs/cifsencrypt.h | 3 +- fs/cifs/cifsfs.c | 75 +- fs/cifs/cifsfs.h | 2 +- fs/cifs/cifsglob.h | 15 +- fs/cifs/cifspdu.h | 2 +- fs/cifs/cifsproto.h | 5 +- fs/cifs/cifssmb.c | 49 +- fs/cifs/connect.c | 685 +- fs/cifs/dir.c | 21 +- fs/cifs/file.c | 25 +- fs/cifs/inode.c | 66 +- fs/cifs/ioctl.c | 2 +- fs/cifs/misc.c | 13 +- fs/cifs/sess.c | 5 +- fs/cifs/smbdes.c | 5 +- fs/cifs/smbencrypt.c | 9 +- fs/cifs/transport.c | 378 +- fs/coda/cache.c | 6 +- fs/coda/file.c | 3 +- fs/coda/upcall.c | 2 +- fs/compat.c | 42 +- fs/devpts/inode.c | 4 +- fs/dlm/netlink.c | 2 +- fs/dquot.c | 4 +- fs/ecryptfs/ecryptfs_kernel.h | 3 +- fs/ecryptfs/kthread.c | 9 +- fs/ecryptfs/main.c | 3 +- fs/ecryptfs/messaging.c | 27 +- fs/ecryptfs/miscdev.c | 27 +- fs/exec.c | 183 +- fs/exportfs/expfs.c | 4 +- fs/ext2/balloc.c | 2 +- fs/ext2/ialloc.c | 4 +- fs/ext3/balloc.c | 2 +- fs/ext3/ialloc.c | 4 +- fs/ext4/balloc.c | 2 +- fs/ext4/ialloc.c | 4 +- fs/fat/file.c | 2 +- fs/fat/inode.c | 4 +- fs/fcntl.c | 18 +- fs/file_table.c | 10 +- fs/fuse/dev.c | 4 +- fs/fuse/dir.c | 25 +- fs/gfs2/inode.c | 10 +- fs/hfs/inode.c | 4 +- fs/hfs/super.c | 4 +- fs/hfsplus/inode.c | 4 +- fs/hfsplus/options.c | 4 +- fs/hpfs/namei.c | 24 +- fs/hpfs/super.c | 4 +- fs/hppfs/hppfs.c | 6 +- fs/hugetlbfs/inode.c | 21 +- fs/inotify_user.c | 2 +- fs/internal.h | 6 + fs/ioprio.c | 18 +- fs/jfs/jfs_inode.c | 4 +- fs/lockd/host.c | 8 +- fs/lockd/mon.c | 2 +- fs/locks.c | 2 +- fs/minix/bitmap.c | 4 +- fs/namei.c | 10 +- fs/namespace.c | 2 +- fs/ncpfs/ioctl.c | 91 +- fs/nfs/nfsroot.c | 6 +- fs/nfs/super.c | 6 +- fs/nfsctl.c | 5 +- fs/nfsd/auth.c | 95 +- fs/nfsd/nfs4recover.c | 72 +- fs/nfsd/nfs4state.c | 4 +- fs/nfsd/nfsctl.c | 2 +- fs/nfsd/nfsfh.c | 11 +- fs/nfsd/vfs.c | 9 +- fs/ocfs2/cluster/netdebug.c | 8 +- fs/ocfs2/cluster/nodemanager.c | 2 +- fs/ocfs2/cluster/tcp.c | 29 +- fs/ocfs2/dlm/dlmfs.c | 8 +- fs/ocfs2/namei.c | 4 +- fs/omfs/inode.c | 8 +- fs/open.c | 59 +- fs/pipe.c | 4 +- fs/posix_acl.c | 4 +- fs/proc/array.c | 32 +- fs/proc/base.c | 36 +- fs/proc/proc_devtree.c | 3 +- fs/quota.c | 4 +- fs/ramfs/inode.c | 4 +- fs/reiserfs/namei.c | 4 +- fs/seq_file.c | 14 +- fs/smbfs/dir.c | 3 +- fs/smbfs/inode.c | 2 +- fs/smbfs/proc.c | 2 +- fs/super.c | 2 +- fs/sysv/ialloc.c | 4 +- fs/ubifs/budget.c | 2 +- fs/ubifs/dir.c | 4 +- fs/udf/ialloc.c | 4 +- fs/udf/namei.c | 2 +- fs/ufs/ialloc.c | 4 +- fs/xfs/linux-2.6/xfs_cred.h | 4 +- fs/xfs/linux-2.6/xfs_ioctl.c | 3 +- fs/xfs/xfs_inode.h | 2 +- fs/xfs/xfs_vnodeops.h | 6 +- include/acpi/acoutput.h | 2 +- include/acpi/platform/aclinux.h | 6 +- include/asm-generic/bug.h | 8 + include/asm-generic/memory_model.h | 2 +- include/asm-generic/pgtable.h | 50 + include/asm-generic/vmlinux.lds.h | 31 +- include/asm-m32r/system.h | 2 +- include/asm-m68k/byteorder.h | 16 +- include/asm-m68k/machw.h | 22 - include/crypto/aes.h | 8 +- include/crypto/algapi.h | 16 +- include/crypto/hash.h | 125 + include/crypto/internal/hash.h | 16 +- include/keys/keyring-type.h | 31 + include/linux/atm.h | 17 +- include/linux/atmdev.h | 15 + include/linux/audit.h | 26 + include/linux/binfmts.h | 16 +- include/linux/blktrace_api.h | 172 +- include/linux/capability.h | 25 +- include/linux/cgroup_subsys.h | 6 + include/linux/compiler.h | 84 +- include/linux/crc32c.h | 6 +- include/linux/cred.h | 342 +- include/linux/crypto.h | 10 +- include/linux/dcbnl.h | 340 + include/linux/dccp.h | 42 +- include/linux/dmi.h | 2 + include/linux/etherdevice.h | 46 + include/linux/ethtool.h | 2 + include/linux/fb.h | 2 +- include/linux/fddidevice.h | 1 + include/linux/filter.h | 3 +- include/linux/fs.h | 8 +- include/linux/fsl_devices.h | 18 +- include/linux/ftrace.h | 293 +- include/linux/ftrace_irq.h | 13 + include/linux/hardirq.h | 15 +- include/linux/hdlc.h | 4 +- include/linux/hippidevice.h | 4 +- include/linux/ieee80211.h | 212 +- include/linux/if.h | 1 + include/linux/if_arp.h | 3 + include/linux/in.h | 4 + include/linux/init_task.h | 14 +- include/linux/input.h | 2 + include/linux/ipv6.h | 1 + include/linux/kernel.h | 12 - include/linux/kexec.h | 4 + include/linux/key-ui.h | 66 - include/linux/key.h | 32 +- include/linux/keyctl.h | 4 +- include/linux/linkage.h | 8 - include/linux/list_nulls.h | 94 + include/linux/marker.h | 75 +- include/linux/mdio-gpio.h | 25 + include/linux/mfd/wm8350/audio.h | 38 +- include/linux/mii.h | 33 + include/linux/mlx4/device.h | 4 +- include/linux/mm.h | 21 + include/linux/mroute6.h | 26 +- include/linux/netdevice.h | 400 +- include/linux/netfilter_bridge/ebtables.h | 3 +- include/linux/netfilter_ipv4/ipt_policy.h | 2 + include/linux/netfilter_ipv6/ip6t_policy.h | 2 + include/linux/netlink.h | 3 +- include/linux/netpoll.h | 5 - include/linux/nl80211.h | 223 +- include/linux/nsproxy.h | 1 - include/linux/of.h | 6 + include/linux/of_gpio.h | 44 +- include/linux/pci.h | 6 + include/linux/pci_ids.h | 5 + include/linux/phy.h | 2 + include/linux/pid.h | 4 +- include/linux/pkt_cls.h | 14 + include/linux/pkt_sched.h | 16 + include/linux/ptrace.h | 22 + include/linux/rculist_nulls.h | 110 + include/linux/rcupdate.h | 2 + include/linux/rfkill.h | 8 +- include/linux/ring_buffer.h | 16 +- include/linux/rio_drv.h | 4 +- include/linux/rtnetlink.h | 5 + include/linux/sched.h | 102 +- include/linux/securebits.h | 2 +- include/linux/security.h | 344 +- include/linux/seq_file.h | 1 + include/linux/skbuff.h | 54 +- include/linux/smsc911x.h | 47 + include/linux/snmp.h | 3 + include/linux/stacktrace.h | 8 + include/linux/sunrpc/svc_xprt.h | 8 +- include/linux/topology.h | 2 +- include/linux/tracepoint.h | 57 +- include/linux/tty.h | 6 +- include/linux/user_namespace.h | 13 +- include/linux/virtio_net.h | 9 + include/linux/xfrm.h | 14 + include/net/bluetooth/bluetooth.h | 4 +- include/net/bluetooth/hci.h | 2 +- include/net/cfg80211.h | 142 +- include/net/checksum.h | 2 +- include/net/dcbnl.h | 53 + include/net/dn.h | 8 +- include/net/dn_fib.h | 6 +- include/net/dst.h | 39 +- include/net/flow.h | 9 +- include/net/gen_stats.h | 3 +- include/net/ieee80211.h | 148 +- include/net/ieee80211_crypt.h | 108 - include/net/ieee80211_radiotap.h | 15 +- include/net/inet_hashtables.h | 85 +- include/net/inet_timewait_sock.h | 10 +- include/net/ip.h | 3 +- include/net/ip_vs.h | 17 +- include/net/iucv/iucv.h | 45 + include/net/lib80211.h | 129 + include/net/mac80211.h | 446 +- include/net/ndisc.h | 14 + include/net/neighbour.h | 15 +- include/net/net_namespace.h | 22 + include/net/netfilter/nf_conntrack.h | 5 +- include/net/netfilter/nf_conntrack_ecache.h | 57 +- include/net/netfilter/nf_conntrack_expect.h | 2 + include/net/netfilter/nf_conntrack_helper.h | 5 +- include/net/netfilter/nf_conntrack_l4proto.h | 2 +- include/net/netfilter/nf_conntrack_tuple.h | 12 +- include/net/netfilter/nfnetlink_log.h | 14 + include/net/netlink.h | 24 +- include/net/netns/ipv4.h | 2 + include/net/netns/ipv6.h | 12 + include/net/netns/mib.h | 3 + include/net/netns/x_tables.h | 5 + include/net/netns/xfrm.h | 56 + include/net/phonet/pep.h | 2 +- include/net/phonet/phonet.h | 2 +- include/net/phonet/pn_dev.h | 2 +- include/net/pkt_cls.h | 2 +- include/net/protocol.h | 3 + include/net/sch_generic.h | 38 +- include/net/scm.h | 4 +- include/net/sctp/sctp.h | 9 +- include/net/sctp/user.h | 2 + include/net/sock.h | 86 +- include/net/syncppp.h | 102 - include/net/tcp.h | 20 +- include/net/udp.h | 25 +- include/net/udplite.h | 2 +- include/net/wireless.h | 90 +- include/net/xfrm.h | 110 +- include/sound/ac97_codec.h | 2 + include/sound/asound.h | 1 + include/sound/core.h | 28 +- include/sound/info.h | 106 +- include/sound/jack.h | 2 + include/sound/l3.h | 18 + include/sound/s3c24xx_uda134x.h | 14 + include/sound/soc-dai.h | 231 + include/sound/soc-dapm.h | 2 - include/sound/soc.h | 206 +- include/sound/uda134x.h | 26 + include/sound/version.h | 2 +- include/trace/block.h | 76 + include/trace/boot.h | 60 + include/trace/sched.h | 36 +- include/video/sh_mobile_lcdc.h | 1 + include/xen/interface/event_channel.h | 2 + init/Kconfig | 8 + init/main.c | 36 +- ipc/mqueue.c | 19 +- ipc/shm.c | 9 +- ipc/util.c | 18 +- kernel/Makefile | 5 +- kernel/acct.c | 7 +- kernel/auditsc.c | 255 +- kernel/capability.c | 288 +- kernel/cgroup.c | 25 +- kernel/cred-internals.h | 21 + kernel/cred.c | 588 + kernel/delayacct.c | 2 +- kernel/exit.c | 28 +- kernel/extable.c | 5 +- kernel/fork.c | 76 +- kernel/futex.c | 20 +- kernel/futex_compat.c | 7 +- kernel/kallsyms.c | 16 +- kernel/kmod.c | 30 +- kernel/kthread.c | 3 + kernel/lockdep.c | 1 + kernel/marker.c | 192 +- kernel/module.c | 13 +- kernel/nsproxy.c | 15 +- kernel/power/disk.c | 13 +- kernel/power/main.c | 5 +- kernel/profile.c | 2 +- kernel/ptrace.c | 41 +- kernel/sched.c | 407 +- kernel/sched_debug.c | 57 +- kernel/sched_fair.c | 9 +- kernel/sched_rt.c | 9 +- kernel/sched_stats.h | 5 +- kernel/signal.c | 62 +- kernel/sys.c | 586 +- kernel/sysctl.c | 22 +- kernel/timer.c | 8 +- kernel/trace/Kconfig | 115 +- kernel/trace/Makefile | 9 + kernel/trace/ftrace.c | 929 ++- kernel/trace/ring_buffer.c | 709 +- kernel/trace/trace.c | 978 ++- kernel/trace/trace.h | 265 +- kernel/trace/trace_boot.c | 158 +- kernel/trace/trace_branch.c | 342 + kernel/trace/trace_functions.c | 30 +- kernel/trace/trace_functions_graph.c | 669 ++ kernel/trace/trace_hw_branches.c | 195 + kernel/trace/trace_irqsoff.c | 61 +- kernel/trace/trace_mmiotrace.c | 33 +- kernel/trace/trace_nop.c | 65 +- kernel/trace/trace_power.c | 179 + kernel/trace/trace_sched_switch.c | 121 +- kernel/trace/trace_sched_wakeup.c | 72 +- kernel/trace/trace_selftest.c | 173 +- kernel/trace/trace_stack.c | 70 +- kernel/trace/trace_sysprof.c | 31 +- kernel/tracepoint.c | 295 +- kernel/tsacct.c | 6 +- kernel/uid16.c | 31 +- kernel/user.c | 98 +- kernel/user_namespace.c | 65 +- kernel/workqueue.c | 8 +- lib/Kconfig | 2 + lib/Makefile | 2 +- lib/bug.c | 19 +- lib/is_single_threaded.c | 45 + lib/libcrc32c.c | 182 +- lib/vsprintf.c | 77 + mm/bounce.c | 5 +- mm/memory.c | 70 +- mm/mempolicy.c | 9 +- mm/migrate.c | 9 +- mm/mlock.c | 45 + mm/oom_kill.c | 12 +- mm/shmem.c | 8 +- mm/swapfile.c | 9 + net/802/fddi.c | 8 +- net/802/hippi.c | 14 +- net/802/tr.c | 24 +- net/8021q/vlan.c | 26 +- net/8021q/vlan.h | 6 +- net/8021q/vlan_core.c | 2 - net/8021q/vlan_dev.c | 76 +- net/9p/client.c | 2 +- net/9p/trans_rdma.c | 2 - net/Kconfig | 7 +- net/Makefile | 4 +- net/appletalk/aarp.c | 3 +- net/appletalk/ddp.c | 5 +- net/appletalk/sysctl_net_atalk.c | 14 +- net/atm/atm_sysfs.c | 2 +- net/atm/br2684.c | 7 +- net/atm/clip.c | 4 +- net/atm/common.h | 1 + net/atm/ioctl.c | 49 +- net/atm/lec.c | 60 +- net/atm/mpc.c | 40 +- net/atm/mpoa_caches.c | 18 +- net/atm/pvc.c | 3 + net/atm/resources.c | 88 +- net/atm/resources.h | 2 +- net/atm/svc.c | 19 + net/ax25/af_ax25.c | 2 +- net/ax25/ax25_in.c | 41 +- net/ax25/ax25_route.c | 2 +- net/ax25/sysctl_net_ax25.c | 58 +- net/bluetooth/af_bluetooth.c | 50 +- net/bluetooth/bnep/bnep.h | 2 +- net/bluetooth/bnep/core.c | 8 +- net/bluetooth/bnep/netdev.c | 11 +- net/bluetooth/bnep/sock.c | 5 - net/bluetooth/cmtp/capi.c | 5 - net/bluetooth/cmtp/core.c | 5 - net/bluetooth/cmtp/sock.c | 5 - net/bluetooth/hci_conn.c | 5 - net/bluetooth/hci_core.c | 11 +- net/bluetooth/hci_event.c | 5 - net/bluetooth/hci_sock.c | 5 - net/bluetooth/hci_sysfs.c | 12 +- net/bluetooth/hidp/core.c | 5 - net/bluetooth/hidp/sock.c | 5 - net/bluetooth/l2cap.c | 5 - net/bluetooth/rfcomm/core.c | 7 - net/bluetooth/rfcomm/sock.c | 9 +- net/bluetooth/rfcomm/tty.c | 48 +- net/bluetooth/sco.c | 5 - net/bridge/br_device.c | 20 +- net/bridge/br_if.c | 4 +- net/bridge/br_netfilter.c | 13 +- net/bridge/br_sysfs_br.c | 2 +- net/bridge/netfilter/ebt_log.c | 18 +- net/bridge/netfilter/ebtable_broute.c | 26 +- net/bridge/netfilter/ebtable_filter.c | 41 +- net/bridge/netfilter/ebtable_nat.c | 38 +- net/bridge/netfilter/ebtables.c | 52 +- net/can/raw.c | 22 +- net/core/datagram.c | 5 +- net/core/dev.c | 466 +- net/core/dst.c | 6 +- net/core/ethtool.c | 53 +- net/core/fib_rules.c | 7 +- net/core/filter.c | 19 + net/core/flow.c | 6 +- net/core/gen_estimator.c | 97 +- net/core/neighbour.c | 73 +- net/core/net-sysfs.c | 15 +- net/core/net_namespace.c | 2 - net/core/netpoll.c | 20 +- net/core/pktgen.c | 42 +- net/core/rtnetlink.c | 15 +- net/core/scm.c | 10 +- net/core/skbuff.c | 277 +- net/core/sock.c | 46 +- net/core/sysctl_net_core.c | 68 +- net/dcb/Kconfig | 22 + net/dcb/Makefile | 1 + net/dcb/dcbnl.c | 1122 ++ net/dccp/ackvec.c | 9 +- net/dccp/ackvec.h | 5 +- net/dccp/ccid.c | 62 +- net/dccp/ccid.h | 26 +- net/dccp/ccids/ccid2.c | 6 +- net/dccp/dccp.h | 17 +- net/dccp/diag.c | 11 +- net/dccp/feat.c | 1458 ++- net/dccp/feat.h | 130 +- net/dccp/input.c | 44 +- net/dccp/ipv4.c | 13 +- net/dccp/ipv6.c | 15 +- net/dccp/minisocks.c | 54 +- net/dccp/options.c | 229 +- net/dccp/output.c | 19 +- net/dccp/probe.c | 19 +- net/dccp/proto.c | 224 +- net/dccp/sysctl.c | 21 - net/dccp/timer.c | 12 - net/decnet/af_decnet.c | 62 +- net/decnet/dn_dev.c | 22 +- net/decnet/dn_neigh.c | 18 +- net/decnet/dn_nsp_in.c | 28 +- net/decnet/dn_nsp_out.c | 23 +- net/decnet/dn_route.c | 29 +- net/decnet/dn_table.c | 2 +- net/decnet/sysctl_net_decnet.c | 48 +- net/dsa/mv88e6060.c | 6 +- net/dsa/mv88e6123_61_65.c | 4 +- net/dsa/mv88e6131.c | 4 +- net/dsa/mv88e6xxx.c | 2 +- net/dsa/slave.c | 2 +- net/dsa/tag_dsa.c | 1 - net/dsa/tag_edsa.c | 1 - net/dsa/tag_trailer.c | 1 - net/ethernet/eth.c | 19 +- net/ieee80211/Kconfig | 73 - net/ieee80211/Makefile | 12 - net/ieee80211/ieee80211_crypt.c | 206 - net/ieee80211/ieee80211_crypt_ccmp.c | 493 - net/ieee80211/ieee80211_crypt_tkip.c | 787 -- net/ieee80211/ieee80211_crypt_wep.c | 295 - net/ieee80211/ieee80211_module.c | 338 - net/ieee80211/ieee80211_rx.c | 1831 --- net/ieee80211/ieee80211_tx.c | 545 - net/ieee80211/ieee80211_wx.c | 760 -- net/ipv4/af_inet.c | 116 +- net/ipv4/ah4.c | 10 +- net/ipv4/arp.c | 36 +- net/ipv4/cipso_ipv4.c | 1 - net/ipv4/devinet.c | 19 +- net/ipv4/esp4.c | 8 +- net/ipv4/fib_frontend.c | 10 +- net/ipv4/fib_hash.c | 12 +- net/ipv4/fib_semantics.c | 8 +- net/ipv4/fib_trie.c | 6 +- net/ipv4/icmp.c | 39 +- net/ipv4/igmp.c | 95 +- net/ipv4/inet_connection_sock.c | 31 +- net/ipv4/inet_diag.c | 31 +- net/ipv4/inet_hashtables.c | 277 +- net/ipv4/inet_lro.c | 4 +- net/ipv4/inet_timewait_sock.c | 48 +- net/ipv4/inetpeer.c | 2 +- net/ipv4/ip_forward.c | 2 +- net/ipv4/ip_fragment.c | 21 +- net/ipv4/ip_gre.c | 58 +- net/ipv4/ip_input.c | 10 +- net/ipv4/ip_output.c | 24 +- net/ipv4/ip_sockglue.c | 72 +- net/ipv4/ipcomp.c | 10 +- net/ipv4/ipconfig.c | 40 +- net/ipv4/ipip.c | 37 +- net/ipv4/ipmr.c | 280 +- net/ipv4/netfilter.c | 7 +- net/ipv4/netfilter/arp_tables.c | 16 +- net/ipv4/netfilter/arptable_filter.c | 12 +- net/ipv4/netfilter/ip_tables.c | 12 +- net/ipv4/netfilter/ipt_CLUSTERIP.c | 9 +- net/ipv4/netfilter/ipt_LOG.c | 11 +- net/ipv4/netfilter/ipt_addrtype.c | 16 +- net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c | 27 +- net/ipv4/netfilter/nf_conntrack_proto_icmp.c | 4 +- net/ipv4/netfilter/nf_nat_h323.c | 58 +- net/ipv4/netfilter/nf_nat_irc.c | 4 +- net/ipv4/netfilter/nf_nat_rule.c | 27 +- net/ipv4/netfilter/nf_nat_sip.c | 18 +- net/ipv4/netfilter/nf_nat_snmp_basic.c | 9 +- net/ipv4/proc.c | 8 +- net/ipv4/raw.c | 10 +- net/ipv4/route.c | 227 +- net/ipv4/sysctl_net_ipv4.c | 188 +- net/ipv4/tcp.c | 130 +- net/ipv4/tcp_cubic.c | 120 +- net/ipv4/tcp_diag.c | 2 +- net/ipv4/tcp_input.c | 511 +- net/ipv4/tcp_ipv4.c | 137 +- net/ipv4/tcp_minisocks.c | 2 +- net/ipv4/tcp_output.c | 219 +- net/ipv4/tcp_probe.c | 7 +- net/ipv4/tcp_timer.c | 14 +- net/ipv4/tcp_yeah.c | 4 +- net/ipv4/udp.c | 271 +- net/ipv4/udp_impl.h | 4 +- net/ipv4/udplite.c | 14 +- net/ipv4/xfrm4_input.c | 4 +- net/ipv4/xfrm4_policy.c | 15 +- net/ipv4/xfrm4_state.c | 2 - net/ipv6/addrconf.c | 80 +- net/ipv6/addrlabel.c | 34 +- net/ipv6/af_inet6.c | 2 +- net/ipv6/ah6.c | 9 +- net/ipv6/anycast.c | 6 +- net/ipv6/datagram.c | 3 +- net/ipv6/esp6.c | 7 +- net/ipv6/exthdrs.c | 2 +- net/ipv6/icmp.c | 21 +- net/ipv6/inet6_connection_sock.c | 2 +- net/ipv6/inet6_hashtables.c | 182 +- net/ipv6/ip6_flowlabel.c | 8 +- net/ipv6/ip6_output.c | 5 +- net/ipv6/ip6_tunnel.c | 37 +- net/ipv6/ip6mr.c | 490 +- net/ipv6/ipcomp6.c | 10 +- net/ipv6/ipv6_sockglue.c | 34 +- net/ipv6/mcast.c | 41 +- net/ipv6/mip6.c | 3 +- net/ipv6/ndisc.c | 105 +- net/ipv6/netfilter.c | 7 +- net/ipv6/netfilter/ip6t_LOG.c | 11 +- net/ipv6/netfilter/ip6t_REJECT.c | 2 +- net/ipv6/netfilter/ip6table_filter.c | 17 +- net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c | 5 +- net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c | 2 +- net/ipv6/netfilter/nf_conntrack_reasm.c | 6 +- net/ipv6/raw.c | 3 +- net/ipv6/reassembly.c | 12 +- net/ipv6/route.c | 47 +- net/ipv6/sit.c | 35 +- net/ipv6/syncookies.c | 2 +- net/ipv6/sysctl_net_ipv6.c | 4 +- net/ipv6/tcp_ipv6.c | 28 +- net/ipv6/udp.c | 151 +- net/ipv6/udp_impl.h | 4 +- net/ipv6/udplite.c | 9 +- net/ipv6/xfrm6_input.c | 9 +- net/ipv6/xfrm6_policy.c | 22 +- net/ipv6/xfrm6_state.c | 2 - net/ipv6/xfrm6_tunnel.c | 33 +- net/ipx/sysctl_net_ipx.c | 2 +- net/irda/irlan/irlan_client.c | 4 +- net/irda/irlan/irlan_common.c | 2 +- net/irda/irlap_frame.c | 17 +- net/irda/irsysctl.c | 50 +- net/irda/irttp.c | 14 +- net/irda/timer.c | 2 +- net/iucv/af_iucv.c | 19 +- net/iucv/iucv.c | 161 +- net/key/af_key.c | 217 +- net/llc/af_llc.c | 1 - net/llc/llc_proc.c | 3 +- net/llc/sysctl_net_llc.c | 20 +- net/mac80211/Kconfig | 8 +- net/mac80211/Makefile | 2 + net/mac80211/cfg.c | 194 +- net/mac80211/debugfs.c | 12 +- net/mac80211/debugfs_key.c | 4 +- net/mac80211/debugfs_netdev.c | 117 +- net/mac80211/debugfs_sta.c | 84 +- net/mac80211/event.c | 5 +- net/mac80211/ht.c | 265 +- net/mac80211/ieee80211_i.h | 90 +- net/mac80211/iface.c | 54 +- net/mac80211/key.c | 10 +- net/mac80211/main.c | 284 +- net/mac80211/mesh.c | 4 +- net/mac80211/mesh.h | 5 +- net/mac80211/mesh_hwmp.c | 7 +- net/mac80211/mesh_plink.c | 49 +- net/mac80211/mlme.c | 606 +- net/mac80211/rate.c | 52 +- net/mac80211/rate.h | 11 +- net/mac80211/rc80211_minstrel.c | 109 +- net/mac80211/rc80211_minstrel.h | 2 + net/mac80211/rc80211_pid.h | 3 +- net/mac80211/rc80211_pid_algo.c | 38 +- net/mac80211/rc80211_pid_debugfs.c | 5 +- net/mac80211/rx.c | 174 +- net/mac80211/scan.c | 24 +- net/mac80211/sta_info.c | 37 +- net/mac80211/sta_info.h | 45 +- net/mac80211/tkip.c | 10 +- net/mac80211/tx.c | 462 +- net/mac80211/util.c | 107 +- net/mac80211/wep.c | 33 +- net/mac80211/wep.h | 2 +- net/mac80211/wext.c | 257 +- net/mac80211/wme.c | 32 +- net/mac80211/wpa.c | 32 +- net/netfilter/Kconfig | 5 +- net/netfilter/ipvs/ip_vs_conn.c | 20 +- net/netfilter/ipvs/ip_vs_core.c | 20 +- net/netfilter/ipvs/ip_vs_ctl.c | 82 +- net/netfilter/ipvs/ip_vs_dh.c | 34 +- net/netfilter/ipvs/ip_vs_ftp.c | 13 +- net/netfilter/ipvs/ip_vs_lblc.c | 69 +- net/netfilter/ipvs/ip_vs_lblcr.c | 96 +- net/netfilter/ipvs/ip_vs_lc.c | 3 - net/netfilter/ipvs/ip_vs_nq.c | 3 - net/netfilter/ipvs/ip_vs_proto.c | 38 +- net/netfilter/ipvs/ip_vs_proto_ah_esp.c | 10 +- net/netfilter/ipvs/ip_vs_proto_tcp.c | 8 +- net/netfilter/ipvs/ip_vs_proto_udp.c | 8 +- net/netfilter/ipvs/ip_vs_rr.c | 3 - net/netfilter/ipvs/ip_vs_sed.c | 3 - net/netfilter/ipvs/ip_vs_sh.c | 34 +- net/netfilter/ipvs/ip_vs_sync.c | 4 +- net/netfilter/ipvs/ip_vs_wlc.c | 3 - net/netfilter/ipvs/ip_vs_wrr.c | 3 - net/netfilter/ipvs/ip_vs_xmit.c | 34 +- net/netfilter/nf_conntrack_acct.c | 2 +- net/netfilter/nf_conntrack_amanda.c | 1 + net/netfilter/nf_conntrack_core.c | 61 +- net/netfilter/nf_conntrack_ecache.c | 14 +- net/netfilter/nf_conntrack_expect.c | 43 +- net/netfilter/nf_conntrack_ftp.c | 24 +- net/netfilter/nf_conntrack_h323_main.c | 13 +- net/netfilter/nf_conntrack_helper.c | 32 +- net/netfilter/nf_conntrack_irc.c | 14 +- net/netfilter/nf_conntrack_netbios_ns.c | 1 + net/netfilter/nf_conntrack_netlink.c | 201 +- net/netfilter/nf_conntrack_pptp.c | 1 + net/netfilter/nf_conntrack_proto_generic.c | 4 +- net/netfilter/nf_conntrack_proto_gre.c | 2 +- net/netfilter/nf_conntrack_proto_sctp.c | 30 +- net/netfilter/nf_conntrack_proto_tcp.c | 50 +- net/netfilter/nf_conntrack_proto_udp.c | 8 +- net/netfilter/nf_conntrack_proto_udplite.c | 4 +- net/netfilter/nf_conntrack_sane.c | 1 + net/netfilter/nf_conntrack_sip.c | 1 + net/netfilter/nf_conntrack_standalone.c | 16 +- net/netfilter/nf_conntrack_tftp.c | 1 + net/netfilter/nfnetlink_log.c | 9 +- net/netfilter/xt_NFLOG.c | 5 +- net/netfilter/xt_dccp.c | 16 +- net/netfilter/xt_hashlimit.c | 14 +- net/netfilter/xt_iprange.c | 36 +- net/netfilter/xt_owner.c | 16 +- net/netfilter/xt_recent.c | 32 +- net/netlabel/netlabel_addrlist.c | 4 +- net/netlabel/netlabel_mgmt.c | 1 - net/netlink/af_netlink.c | 7 + net/netlink/attr.c | 8 +- net/netrom/af_netrom.c | 4 +- net/netrom/sysctl_net_netrom.c | 48 +- net/packet/af_packet.c | 2 + net/phonet/af_phonet.c | 8 +- net/phonet/pep-gprs.c | 218 +- net/phonet/pep.c | 38 +- net/phonet/pn_dev.c | 6 +- net/phonet/socket.c | 13 +- net/phonet/sysctl.c | 4 +- net/rfkill/rfkill-input.c | 337 +- net/rfkill/rfkill-input.h | 3 + net/rfkill/rfkill.c | 183 +- net/rose/af_rose.c | 4 +- net/rose/sysctl_net_rose.c | 40 +- net/rxrpc/af_rxrpc.c | 4 +- net/rxrpc/ar-connection.c | 2 +- net/rxrpc/ar-connevent.c | 2 +- net/rxrpc/ar-error.c | 3 +- net/rxrpc/ar-key.c | 6 +- net/rxrpc/ar-local.c | 16 +- net/rxrpc/ar-peer.c | 8 +- net/rxrpc/ar-proc.c | 16 +- net/rxrpc/ar-security.c | 2 +- net/rxrpc/ar-transport.c | 12 +- net/rxrpc/rxkad.c | 2 +- net/sched/Kconfig | 22 + net/sched/Makefile | 2 + net/sched/act_api.c | 18 +- net/sched/act_gact.c | 4 +- net/sched/act_ipt.c | 4 +- net/sched/act_mirred.c | 4 +- net/sched/act_nat.c | 4 +- net/sched/act_pedit.c | 4 +- net/sched/act_police.c | 33 +- net/sched/act_simple.c | 4 +- net/sched/act_skbedit.c | 4 +- net/sched/cls_api.c | 3 +- net/sched/cls_basic.c | 2 +- net/sched/cls_cgroup.c | 288 + net/sched/cls_flow.c | 4 +- net/sched/cls_fw.c | 2 +- net/sched/cls_route.c | 2 +- net/sched/cls_tcindex.c | 6 - net/sched/cls_u32.c | 11 +- net/sched/ematch.c | 18 +- net/sched/sch_api.c | 50 +- net/sched/sch_atm.c | 36 +- net/sched/sch_blackhole.c | 1 + net/sched/sch_cbq.c | 76 +- net/sched/sch_drr.c | 519 + net/sched/sch_dsmark.c | 22 +- net/sched/sch_fifo.c | 4 +- net/sched/sch_generic.c | 40 +- net/sched/sch_gred.c | 22 +- net/sched/sch_hfsc.c | 64 +- net/sched/sch_htb.c | 171 +- net/sched/sch_multiq.c | 82 +- net/sched/sch_netem.c | 160 +- net/sched/sch_prio.c | 50 +- net/sched/sch_red.c | 33 +- net/sched/sch_sfq.c | 71 +- net/sched/sch_tbf.c | 44 +- net/sched/sch_teql.c | 19 +- net/sctp/ipv6.c | 35 +- net/sctp/protocol.c | 29 +- net/sctp/sm_statefuns.c | 24 +- net/sctp/socket.c | 206 +- net/sctp/sysctl.c | 82 +- net/socket.c | 6 +- net/sunrpc/auth.c | 14 +- net/sunrpc/clnt.c | 8 +- net/sunrpc/rpcb_clnt.c | 17 +- net/sunrpc/svcauth_unix.c | 24 +- net/sunrpc/svcsock.c | 6 +- net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | 4 +- net/sunrpc/xprtrdma/svc_rdma_sendto.c | 2 +- net/sunrpc/xprtrdma/svc_rdma_transport.c | 16 +- net/sunrpc/xprtrdma/transport.c | 14 +- net/sunrpc/xprtrdma/verbs.c | 16 +- net/sunrpc/xprtsock.c | 41 +- net/tipc/eth_media.c | 3 +- net/tipc/name_table.c | 2 +- net/unix/af_unix.c | 211 +- net/unix/garbage.c | 12 +- net/unix/sysctl_net_unix.c | 3 +- net/wanrouter/wanmain.c | 36 +- net/wireless/Kconfig | 30 + net/wireless/Makefile | 7 + net/wireless/core.c | 14 +- net/wireless/core.h | 13 + net/wireless/lib80211.c | 284 + net/wireless/lib80211_crypt_ccmp.c | 492 + net/wireless/lib80211_crypt_tkip.c | 784 ++ net/wireless/lib80211_crypt_wep.c | 296 + net/wireless/nl80211.c | 417 +- net/wireless/reg.c | 1005 ++- net/wireless/reg.h | 33 +- net/wireless/sysfs.c | 25 +- net/wireless/util.c | 19 + net/wireless/wext-compat.c | 139 + net/wireless/wext.c | 2 +- net/x25/sysctl_net_x25.c | 22 +- net/xfrm/Makefile | 4 +- net/xfrm/xfrm_input.c | 25 +- net/xfrm/xfrm_output.c | 18 +- net/xfrm/xfrm_policy.c | 511 +- net/xfrm/xfrm_proc.c | 26 +- net/xfrm/xfrm_state.c | 407 +- net/xfrm/xfrm_sysctl.c | 85 + net/xfrm/xfrm_user.c | 249 +- samples/tracepoints/tp-samples-trace.h | 4 +- samples/tracepoints/tracepoint-probe-sample.c | 1 + samples/tracepoints/tracepoint-probe-sample2.c | 1 + samples/tracepoints/tracepoint-sample.c | 3 + scripts/Kbuild.include | 22 +- scripts/Makefile.build | 79 +- scripts/Makefile.lib | 15 +- scripts/Makefile.modinst | 3 +- scripts/bootgraph.pl | 16 +- scripts/decodecode | 32 +- scripts/extract-ikconfig | 8 +- scripts/genksyms/genksyms.c | 277 +- scripts/genksyms/genksyms.h | 7 + scripts/genksyms/keywords.c_shipped | 189 +- scripts/genksyms/keywords.gperf | 2 + scripts/headerdep.pl | 193 + scripts/kallsyms.c | 21 +- scripts/kconfig/lxdialog/check-lxdialog.sh | 2 +- scripts/kernel-doc | 67 +- scripts/mkcompile_h | 6 +- scripts/mkmakefile | 4 +- scripts/mksysmap | 7 +- scripts/package/Makefile | 9 +- scripts/recordmcount.pl | 51 +- scripts/setlocalversion | 7 +- scripts/strip-symbols | 22 + scripts/tags.sh | 160 + scripts/trace/power.pl | 108 + scripts/tracing/draw_functrace.py | 130 + security/capability.c | 58 +- security/commoncap.c | 830 +- security/keys/internal.h | 49 +- security/keys/key.c | 25 +- security/keys/keyctl.c | 210 +- security/keys/keyring.c | 15 +- security/keys/permission.c | 29 +- security/keys/proc.c | 8 +- security/keys/process_keys.c | 469 +- security/keys/request_key.c | 135 +- security/keys/request_key_auth.c | 46 +- security/root_plug.c | 13 +- security/security.c | 103 +- security/selinux/avc.c | 4 +- security/selinux/exports.c | 8 +- security/selinux/hooks.c | 1258 ++- security/selinux/include/av_perm_to_string.h | 2 + security/selinux/include/av_permissions.h | 2 + security/selinux/include/class_to_string.h | 5 + security/selinux/include/flask.h | 1 + security/selinux/include/objsec.h | 11 - security/selinux/nlmsgtab.c | 3 + security/selinux/selinuxfs.c | 13 +- security/selinux/xfrm.c | 6 +- security/smack/smack_access.c | 4 +- security/smack/smack_lsm.c | 176 +- security/smack/smackfs.c | 26 +- sound/ac97_bus.c | 1 + sound/aoa/codecs/Makefile | 4 + sound/aoa/codecs/onyx.c | 1118 ++ sound/aoa/codecs/{snd-aoa-codec-onyx.h => onyx.h} | 0 sound/aoa/codecs/snd-aoa-codec-onyx.c | 1118 -- sound/aoa/codecs/snd-aoa-codec-tas.c | 1012 -- sound/aoa/codecs/snd-aoa-codec-toonie.c | 150 - ...aoa-codec-tas-basstreble.h => tas-basstreble.h} | 0 ...aoa-codec-tas-gain-table.h => tas-gain-table.h} | 0 sound/aoa/codecs/tas.c | 1012 ++ sound/aoa/codecs/{snd-aoa-codec-tas.h => tas.h} | 0 sound/aoa/codecs/toonie.c | 150 + sound/aoa/core/Makefile | 8 +- sound/aoa/core/alsa.c | 99 + sound/aoa/core/{snd-aoa-alsa.h => alsa.h} | 0 sound/aoa/core/core.c | 162 + sound/aoa/core/gpio-feature.c | 408 + sound/aoa/core/{snd-aoa-gpio-pmf.c => gpio-pmf.c} | 0 sound/aoa/core/snd-aoa-alsa.c | 99 - sound/aoa/core/snd-aoa-core.c | 162 - sound/aoa/core/snd-aoa-gpio-feature.c | 408 - sound/aoa/fabrics/Makefile | 2 + sound/aoa/fabrics/layout.c | 1120 ++ sound/aoa/fabrics/snd-aoa-fabric-layout.c | 1120 -- sound/aoa/soundbus/i2sbus/Makefile | 2 +- .../i2sbus/{i2sbus-control.c => control.c} | 0 sound/aoa/soundbus/i2sbus/core.c | 450 + sound/aoa/soundbus/i2sbus/i2sbus-core.c | 450 - sound/aoa/soundbus/i2sbus/i2sbus.h | 2 +- .../i2sbus/{i2sbus-interface.h => interface.h} | 0 sound/aoa/soundbus/i2sbus/{i2sbus-pcm.c => pcm.c} | 0 sound/core/Kconfig | 21 + sound/core/Makefile | 2 + sound/core/device.c | 4 +- sound/core/hrtimer.c | 155 + sound/core/info.c | 17 + sound/core/init.c | 71 +- sound/core/jack.c | 15 +- sound/core/rawmidi.c | 4 +- sound/core/rtctimer.c | 2 +- sound/core/seq/seq.c | 4 +- sound/core/timer.c | 2 +- sound/drivers/Kconfig | 2 +- sound/drivers/pcsp/pcsp.c | 8 +- sound/drivers/pcsp/pcsp.h | 3 + sound/drivers/pcsp/pcsp_lib.c | 168 +- sound/drivers/vx/vx_core.c | 2 +- sound/drivers/vx/vx_pcm.c | 2 +- sound/isa/sb/sb8.c | 4 +- sound/pci/Kconfig | 127 +- sound/pci/ac97/ac97_codec.c | 2 +- sound/pci/ac97/ac97_patch.c | 7 +- sound/pci/ca0106/ca0106.h | 30 +- sound/pci/ca0106/ca0106_main.c | 550 +- sound/pci/ca0106/ca0106_mixer.c | 263 +- sound/pci/cs46xx/cs46xx_lib.c | 5 +- sound/pci/cs5535audio/Makefile | 3 + sound/pci/cs5535audio/cs5535audio.c | 12 +- sound/pci/cs5535audio/cs5535audio.h | 39 + sound/pci/cs5535audio/cs5535audio_olpc.c | 179 + sound/pci/cs5535audio/cs5535audio_pcm.c | 15 + sound/pci/emu10k1/emu10k1_main.c | 494 +- sound/pci/emu10k1/emumixer.c | 46 + sound/pci/es1968.c | 2 +- sound/pci/hda/Kconfig | 188 + sound/pci/hda/Makefile | 75 +- sound/pci/hda/hda_beep.c | 2 + sound/pci/hda/hda_codec.c | 781 +- sound/pci/hda/hda_codec.h | 107 +- sound/pci/hda/hda_eld.c | 590 + sound/pci/hda/hda_generic.c | 21 +- sound/pci/hda/hda_hwdep.c | 234 +- sound/pci/hda/hda_intel.c | 348 +- sound/pci/hda/hda_local.h | 100 +- sound/pci/hda/hda_patch.h | 22 - sound/pci/hda/hda_proc.c | 91 +- sound/pci/hda/patch_analog.c | 132 +- sound/pci/hda/patch_atihdmi.c | 40 +- sound/pci/hda/patch_cmedia.c | 27 +- sound/pci/hda/patch_conexant.c | 39 +- sound/pci/hda/patch_intelhdmi.c | 711 ++ sound/pci/hda/patch_nvhdmi.c | 32 +- sound/pci/hda/patch_realtek.c | 1663 ++-- sound/pci/hda/patch_si3054.c | 35 +- sound/pci/hda/patch_sigmatel.c | 1321 ++- sound/pci/hda/patch_via.c | 171 +- sound/pci/ice1712/ice1724.c | 23 +- sound/pci/maestro3.c | 2 +- sound/pci/mixart/mixart.c | 4 +- sound/pci/mixart/mixart_core.c | 2 +- sound/pci/oxygen/oxygen.c | 4 + sound/pci/pcxhr/Makefile | 2 +- sound/pci/pcxhr/pcxhr.c | 558 +- sound/pci/pcxhr/pcxhr.h | 76 +- sound/pci/pcxhr/pcxhr_core.c | 293 +- sound/pci/pcxhr/pcxhr_core.h | 5 +- sound/pci/pcxhr/pcxhr_hwdep.c | 158 +- sound/pci/pcxhr/pcxhr_mix22.c | 820 ++ sound/pci/pcxhr/pcxhr_mix22.h | 56 + sound/pci/pcxhr/pcxhr_mixer.c | 556 +- sound/pci/riptide/riptide.c | 4 +- sound/pci/rme9652/hdsp.c | 4 +- sound/pci/rme9652/hdspm.c | 4 +- sound/pcmcia/pdaudiocf/pdaudiocf_irq.c | 2 +- sound/ppc/pmac.c | 2 +- sound/ppc/tumbler.c | 3 +- sound/soc/Kconfig | 13 +- sound/soc/Makefile | 12 +- sound/soc/at32/Kconfig | 34 - sound/soc/at32/Makefile | 11 - sound/soc/at32/at32-pcm.c | 492 - sound/soc/at32/at32-pcm.h | 79 - sound/soc/at32/at32-ssc.c | 849 -- sound/soc/at32/at32-ssc.h | 59 - sound/soc/at32/playpaq_wm8510.c | 513 - sound/soc/at91/Kconfig | 10 - sound/soc/at91/Makefile | 6 - sound/soc/at91/at91-pcm.c | 434 - sound/soc/at91/at91-pcm.h | 72 - sound/soc/at91/at91-ssc.c | 791 -- sound/soc/at91/at91-ssc.h | 27 - sound/soc/atmel/Kconfig | 43 + sound/soc/atmel/Makefile | 15 + sound/soc/atmel/atmel-pcm.c | 494 + sound/soc/atmel/atmel-pcm.h | 86 + sound/soc/atmel/atmel_ssc_dai.c | 790 ++ sound/soc/atmel/atmel_ssc_dai.h | 121 + sound/soc/atmel/playpaq_wm8510.c | 512 + sound/soc/atmel/sam9g20_wm8731.c | 328 + sound/soc/au1x/dbdma2.c | 3 +- sound/soc/au1x/psc-ac97.c | 16 +- sound/soc/au1x/psc-i2s.c | 18 +- sound/soc/au1x/sample-ac97.c | 4 +- sound/soc/blackfin/Kconfig | 22 +- sound/soc/blackfin/bf5xx-ac97-pcm.c | 113 +- sound/soc/blackfin/bf5xx-ac97.c | 178 +- sound/soc/blackfin/bf5xx-ac97.h | 35 +- sound/soc/blackfin/bf5xx-ad1980.c | 8 +- sound/soc/blackfin/bf5xx-ad73311.c | 10 +- sound/soc/blackfin/bf5xx-i2s-pcm.c | 12 + sound/soc/blackfin/bf5xx-i2s.c | 31 +- sound/soc/blackfin/bf5xx-sport.h | 2 +- sound/soc/blackfin/bf5xx-ssm2602.c | 14 +- sound/soc/codecs/Kconfig | 69 +- sound/soc/codecs/Makefile | 12 + sound/soc/codecs/ac97.c | 7 +- sound/soc/codecs/ad1980.c | 24 +- sound/soc/codecs/ad73311.c | 18 +- sound/soc/codecs/ak4535.c | 19 +- sound/soc/codecs/cs4270.c | 38 +- sound/soc/codecs/l3.c | 91 + sound/soc/codecs/pcm3008.c | 212 + sound/soc/codecs/pcm3008.h | 25 + sound/soc/codecs/ssm2602.c | 57 +- sound/soc/codecs/tlv320aic23.c | 262 +- sound/soc/codecs/tlv320aic26.c | 22 +- sound/soc/codecs/tlv320aic3x.c | 166 +- sound/soc/codecs/tlv320aic3x.h | 60 +- sound/soc/codecs/twl4030.c | 1317 +++ sound/soc/codecs/twl4030.h | 219 + sound/soc/codecs/uda134x.c | 668 ++ sound/soc/codecs/uda134x.h | 36 + sound/soc/codecs/uda1380.c | 29 +- sound/soc/codecs/wm8350.c | 1583 +++ sound/soc/codecs/wm8350.h | 20 + sound/soc/codecs/wm8510.c | 19 +- sound/soc/codecs/wm8580.c | 134 +- sound/soc/codecs/wm8580.h | 1 + sound/soc/codecs/wm8728.c | 585 + sound/soc/codecs/wm8728.h | 30 + sound/soc/codecs/wm8731.c | 25 +- sound/soc/codecs/wm8750.c | 19 +- sound/soc/codecs/wm8753.c | 39 +- sound/soc/codecs/wm8900.c | 262 +- sound/soc/codecs/wm8900.h | 6 - sound/soc/codecs/wm8903.c | 268 +- sound/soc/codecs/wm8903.h | 5 - sound/soc/codecs/wm8971.c | 19 +- sound/soc/codecs/wm8990.c | 43 +- sound/soc/codecs/wm8990.h | 4 +- sound/soc/codecs/wm9712.c | 12 +- sound/soc/codecs/wm9713.c | 46 +- sound/soc/davinci/Kconfig | 10 + sound/soc/davinci/Makefile | 2 + sound/soc/davinci/davinci-evm.c | 14 +- sound/soc/davinci/davinci-i2s.c | 257 +- sound/soc/davinci/davinci-pcm.c | 30 +- sound/soc/davinci/davinci-sffsdr.c | 157 + sound/soc/fsl/Kconfig | 2 +- sound/soc/fsl/fsl_dma.c | 14 +- sound/soc/fsl/fsl_ssi.c | 24 +- sound/soc/fsl/mpc5200_psc_i2s.c | 22 +- sound/soc/fsl/mpc8610_hpcd.c | 8 +- sound/soc/fsl/soc-of-simple.c | 12 +- sound/soc/omap/Kconfig | 35 +- sound/soc/omap/Makefile | 8 + sound/soc/omap/n810.c | 10 +- sound/soc/omap/omap-mcbsp.c | 61 +- sound/soc/omap/omap-pcm.c | 14 +- sound/soc/omap/omap2evm.c | 151 + sound/soc/omap/omap3beagle.c | 149 + sound/soc/omap/omap3pandora.c | 311 + sound/soc/omap/osk5912.c | 10 +- sound/soc/omap/overo.c | 148 + sound/soc/omap/sdp3430.c | 152 + sound/soc/pxa/Kconfig | 22 + sound/soc/pxa/Makefile | 6 + sound/soc/pxa/corgi.c | 12 +- sound/soc/pxa/e800_wm9712.c | 8 +- sound/soc/pxa/em-x270.c | 7 +- sound/soc/pxa/palm27x.c | 269 + sound/soc/pxa/poodle.c | 6 +- sound/soc/pxa/pxa-ssp.c | 931 ++ sound/soc/pxa/pxa-ssp.h | 47 + sound/soc/pxa/pxa2xx-ac97.c | 33 +- sound/soc/pxa/pxa2xx-i2s.c | 35 +- sound/soc/pxa/pxa2xx-pcm.c | 14 +- sound/soc/pxa/spitz.c | 6 +- sound/soc/pxa/tosa.c | 38 +- sound/soc/pxa/zylonite.c | 219 + sound/soc/s3c24xx/Kconfig | 5 + sound/soc/s3c24xx/Makefile | 2 + sound/soc/s3c24xx/ln2440sbc_alc650.c | 8 +- sound/soc/s3c24xx/neo1973_wm8753.c | 9 +- sound/soc/s3c24xx/s3c2412-i2s.c | 38 +- sound/soc/s3c24xx/s3c2443-ac97.c | 30 +- sound/soc/s3c24xx/s3c24xx-i2s.c | 35 +- sound/soc/s3c24xx/s3c24xx-pcm.c | 12 + sound/soc/s3c24xx/s3c24xx_uda134x.c | 373 + sound/soc/s3c24xx/smdk2443_wm9710.c | 8 +- sound/soc/sh/dma-sh7760.c | 12 + sound/soc/sh/hac.c | 19 +- sound/soc/sh/sh7760-ac97.c | 6 +- sound/soc/sh/ssi.c | 30 +- sound/soc/soc-core.c | 840 +- sound/soc/soc-dapm.c | 82 +- sound/sound_core.c | 1 + sound/usb/caiaq/caiaq-control.c | 73 +- sound/usb/caiaq/caiaq-device.c | 2 +- sound/usb/usbmidi.c | 2 +- sound/usb/usx2y/usb_stream.c | 3 +- usr/gen_init_cpio.c | 28 +- 2918 files changed, 188654 insertions(+), 126055 deletions(-) delete mode 100644 Documentation/DocBook/wanbook.tmpl create mode 100644 Documentation/RCU/rculist_nulls.txt create mode 100644 Documentation/controllers/cpuacct.txt create mode 100644 Documentation/credentials.txt delete mode 100644 Documentation/sh/kgdb.txt create mode 100644 Documentation/sound/alsa/HD-Audio-Models.txt create mode 100644 Documentation/sound/alsa/HD-Audio.txt create mode 100644 arch/arm/mach-pxa/include/mach/palmasoc.h create mode 100644 arch/powerpc/boot/dts/mpc8572ds_camp_core0.dts create mode 100644 arch/powerpc/boot/dts/mpc8572ds_camp_core1.dts create mode 100644 arch/powerpc/kernel/ppc_save_regs.S create mode 100644 arch/powerpc/math-emu/math_efp.c delete mode 100644 arch/powerpc/mm/mmu_context_32.c delete mode 100644 arch/powerpc/mm/mmu_context_64.c create mode 100644 arch/powerpc/mm/mmu_context_hash32.c create mode 100644 arch/powerpc/mm/mmu_context_hash64.c create mode 100644 arch/powerpc/mm/mmu_context_nohash.c create mode 100644 arch/powerpc/mm/pgtable.c delete mode 100644 arch/powerpc/mm/tlb_32.c delete mode 100644 arch/powerpc/mm/tlb_64.c create mode 100644 arch/powerpc/mm/tlb_hash32.c create mode 100644 arch/powerpc/mm/tlb_hash64.c create mode 100644 arch/powerpc/mm/tlb_nohash.c create mode 100644 arch/powerpc/mm/tlb_nohash_low.S delete mode 100644 arch/powerpc/platforms/52xx/mpc52xx_pic.h create mode 100644 arch/powerpc/platforms/85xx/smp.c create mode 100644 arch/powerpc/platforms/86xx/gef_gpio.c create mode 100644 arch/powerpc/platforms/cell/qpace_setup.c delete mode 100644 arch/powerpc/xmon/setjmp.S create mode 100644 arch/s390/include/asm/ftrace.h create mode 100644 arch/s390/include/asm/vdso.h create mode 100644 arch/s390/kernel/mcount.S create mode 100644 arch/s390/kernel/processor.c create mode 100644 arch/s390/kernel/vdso.c create mode 100644 arch/s390/kernel/vdso32/Makefile create mode 100644 arch/s390/kernel/vdso32/clock_getres.S create mode 100644 arch/s390/kernel/vdso32/clock_gettime.S create mode 100644 arch/s390/kernel/vdso32/gettimeofday.S copy arch/{x86/vdso/vdso-note.S => s390/kernel/vdso32/note.S} (100%) create mode 100644 arch/s390/kernel/vdso32/vdso32.lds.S create mode 100644 arch/s390/kernel/vdso32/vdso32_wrapper.S create mode 100644 arch/s390/kernel/vdso64/Makefile create mode 100644 arch/s390/kernel/vdso64/clock_getres.S create mode 100644 arch/s390/kernel/vdso64/clock_gettime.S create mode 100644 arch/s390/kernel/vdso64/gettimeofday.S copy arch/{x86/vdso/vdso-note.S => s390/kernel/vdso64/note.S} (100%) create mode 100644 arch/s390/kernel/vdso64/vdso64.lds.S create mode 100644 arch/s390/kernel/vdso64/vdso64_wrapper.S delete mode 100644 arch/sh/boards/board-rsk7203.c delete mode 100644 arch/sh/boards/mach-cayman/led.c create mode 100644 arch/sh/boards/mach-microdev/fdc37c93xapm.c delete mode 100644 arch/sh/boards/mach-microdev/led.c create mode 100644 arch/sh/boards/mach-rsk/Kconfig create mode 100644 arch/sh/boards/mach-rsk/Makefile create mode 100644 arch/sh/boards/mach-rsk/devices-rsk7203.c create mode 100644 arch/sh/boards/mach-rsk/setup.c delete mode 100644 arch/sh/boards/mach-se/7343/io.c create mode 100644 arch/sh/configs/edosk7705_defconfig create mode 100644 arch/sh/configs/rsk7201_defconfig delete mode 100644 arch/sh/configs/rts7751r2dplus_qemu_defconfig delete mode 100644 arch/sh/drivers/dma/dma-isa.c delete mode 100644 arch/sh/include/asm/bitops-irq.h create mode 100644 arch/sh/include/asm/bitops-op32.h create mode 100644 arch/sh/include/asm/mutex-llsc.h delete mode 100644 arch/sh/include/asm/pm.h create mode 100644 arch/sh/include/asm/unaligned-sh4a.h create mode 100644 arch/sh/include/mach-se/mach/mrshpc.h delete mode 100644 arch/sh/kernel/cf-enabler.c create mode 100644 arch/sh/kernel/cpu/sh2a/clock-sh7201.c create mode 100644 arch/sh/kernel/cpu/sh2a/setup-sh7201.c create mode 100644 arch/sh/kernel/disassemble.c create mode 100644 arch/sh/kernel/ftrace.c create mode 100644 arch/sh/kernel/idle.c create mode 100644 arch/sh/kernel/kgdb.c delete mode 100644 arch/sh/kernel/kgdb_jmp.S delete mode 100644 arch/sh/kernel/kgdb_stub.c delete mode 100644 arch/sh/kernel/pm.c create mode 100644 arch/sh/lib/ashiftrt.S copy arch/{mips => sh}/lib/ashldi3.c (100%) create mode 100644 arch/sh/lib/ashlsi3.S copy arch/{mips => sh}/lib/ashrdi3.c (100%) create mode 100644 arch/sh/lib/ashrsi3.S copy arch/{mips => sh}/lib/libgcc.h (100%) copy arch/{mips => sh}/lib/lshrdi3.c (100%) create mode 100644 arch/sh/lib/lshrsi3.S create mode 100644 arch/sh/lib/mcount.S create mode 100644 arch/sh/lib/movmem.S create mode 100644 arch/sh/lib/udiv_qrnnd.S create mode 100644 arch/sh/lib/udivsi3.S create mode 100644 arch/sh/lib/udivsi3_i4i-Os.S create mode 100644 arch/sh/lib/udivsi3_i4i.S create mode 100644 arch/sh/lib64/memcpy.S delete mode 100644 arch/sh/lib64/memcpy.c create mode 100644 arch/sh/lib64/memset.S create mode 100644 arch/sh/lib64/sdivsi3.S create mode 100644 arch/sh/lib64/strcpy.S create mode 100644 arch/sh/lib64/strlen.S create mode 100644 arch/sh/lib64/udivdi3.S create mode 100644 arch/sh/lib64/udivsi3.S create mode 100644 arch/sh/mm/asids-debugfs.c create mode 100644 arch/sh/oprofile/backtrace.c create mode 100644 arch/sh/oprofile/common.c create mode 100644 arch/sh/oprofile/op_impl.h delete mode 100644 arch/sh/oprofile/op_model_null.c create mode 100644 arch/x86/include/asm/hypervisor.h create mode 100644 arch/x86/include/asm/mach-generic/mach_wakecpu.h create mode 100644 arch/x86/include/asm/sigframe.h create mode 100644 arch/x86/include/asm/vmware.h create mode 100644 arch/x86/kernel/check.c create mode 100644 arch/x86/kernel/cpu/hypervisor.c create mode 100644 arch/x86/kernel/cpu/vmware.c create mode 100644 arch/x86/kernel/dumpstack.c create mode 100644 arch/x86/kernel/dumpstack.h delete mode 100644 arch/x86/kernel/sigframe.h create mode 100644 arch/x86/kernel/signal.c delete mode 100644 arch/x86/kernel/signal_32.c delete mode 100644 arch/x86/kernel/signal_64.c create mode 100644 arch/x86/scripts/strip-symbols create mode 100644 crypto/shash.c create mode 100644 drivers/atm/solos-pci.c delete mode 100644 drivers/bluetooth/hci_usb.c delete mode 100644 drivers/bluetooth/hci_usb.h create mode 100644 drivers/char/hvc_iucv.c create mode 100644 drivers/char/hvc_udbg.c create mode 100644 drivers/net/arm/ks8695net.c create mode 100644 drivers/net/arm/ks8695net.h create mode 100644 drivers/net/bonding/bond_ipv6.c delete mode 100644 drivers/net/eepro100.c create mode 100644 drivers/net/ixgbe/ixgbe_dcb.c create mode 100644 drivers/net/ixgbe/ixgbe_dcb.h create mode 100644 drivers/net/ixgbe/ixgbe_dcb_82598.c create mode 100644 drivers/net/ixgbe/ixgbe_dcb_82598.h create mode 100644 drivers/net/ixgbe/ixgbe_dcb_nl.c create mode 100644 drivers/net/phy/et1011c.c create mode 100644 drivers/net/phy/mdio-gpio.c delete mode 100644 drivers/net/phy/mdio-ofgpio.c create mode 100644 drivers/net/phy/national.c create mode 100644 drivers/net/phy/ste10Xp.c create mode 100644 drivers/net/sfc/falcon_gmac.c create mode 100644 drivers/net/sfc/mtd.c create mode 100644 drivers/net/smsc911x.c create mode 100644 drivers/net/smsc911x.h create mode 100644 drivers/net/smsc9420.c create mode 100644 drivers/net/smsc9420.h create mode 100644 drivers/net/wan/hd64570.c create mode 100644 drivers/net/wan/hd64572.c delete mode 100644 drivers/net/wan/hd6457x.c create mode 100644 drivers/net/wan/ixp4xx_hss.c delete mode 100644 drivers/net/wan/syncppp.c delete mode 100644 drivers/net/wireless/airport.c create mode 100644 drivers/net/wireless/ath9k/ani.c create mode 100644 drivers/net/wireless/ath9k/calib.c delete mode 100644 drivers/net/wireless/ath9k/core.c create mode 100644 drivers/net/wireless/ath9k/debug.c create mode 100644 drivers/net/wireless/ath9k/eeprom.c create mode 100644 drivers/net/wireless/ath9k/mac.c delete mode 100644 drivers/net/wireless/ipw2100.c delete mode 100644 drivers/net/wireless/ipw2200.c delete mode 100644 drivers/net/wireless/ipw2200.h create mode 100644 drivers/net/wireless/ipw2x00/Kconfig create mode 100644 drivers/net/wireless/ipw2x00/Makefile create mode 100644 drivers/net/wireless/ipw2x00/ipw2100.c rename drivers/net/wireless/{ => ipw2x00}/ipw2100.h (100%) create mode 100644 drivers/net/wireless/ipw2x00/ipw2200.c create mode 100644 drivers/net/wireless/ipw2x00/ipw2200.h rename net/ieee80211/ieee80211_geo.c => drivers/net/wireless/ipw2x00/libipw_geo.c (100%) create mode 100644 drivers/net/wireless/ipw2x00/libipw_module.c create mode 100644 drivers/net/wireless/ipw2x00/libipw_rx.c create mode 100644 drivers/net/wireless/ipw2x00/libipw_tx.c create mode 100644 drivers/net/wireless/ipw2x00/libipw_wx.c create mode 100644 drivers/net/wireless/iwlwifi/iwl-agn-hcmd-check.c create mode 100644 drivers/net/wireless/iwlwifi/iwl-spectrum.c delete mode 100644 drivers/net/wireless/orinoco.c delete mode 100644 drivers/net/wireless/orinoco.h create mode 100644 drivers/net/wireless/orinoco/Makefile create mode 100644 drivers/net/wireless/orinoco/airport.c rename drivers/net/wireless/{ => orinoco}/hermes.c (100%) rename drivers/net/wireless/{ => orinoco}/hermes.h (100%) rename drivers/net/wireless/{ => orinoco}/hermes_dld.c (100%) rename drivers/net/wireless/{ => orinoco}/hermes_dld.h (100%) rename drivers/net/wireless/{ => orinoco}/hermes_rid.h (100%) create mode 100644 drivers/net/wireless/orinoco/orinoco.c create mode 100644 drivers/net/wireless/orinoco/orinoco.h create mode 100644 drivers/net/wireless/orinoco/orinoco_cs.c rename drivers/net/wireless/{ => orinoco}/orinoco_nortel.c (100%) rename drivers/net/wireless/{ => orinoco}/orinoco_pci.c (100%) rename drivers/net/wireless/{ => orinoco}/orinoco_pci.h (100%) rename drivers/net/wireless/{ => orinoco}/orinoco_plx.c (100%) rename drivers/net/wireless/{ => orinoco}/orinoco_tmd.c (100%) create mode 100644 drivers/net/wireless/orinoco/spectrum_cs.c delete mode 100644 drivers/net/wireless/orinoco_cs.c delete mode 100644 drivers/net/wireless/rtl8180_dev.c delete mode 100644 drivers/net/wireless/rtl8180_rtl8225.c delete mode 100644 drivers/net/wireless/rtl8187.h delete mode 100644 drivers/net/wireless/rtl8187_dev.c delete mode 100644 drivers/net/wireless/rtl8187_rtl8225.c delete mode 100644 drivers/net/wireless/rtl818x.h create mode 100644 drivers/net/wireless/rtl818x/Makefile rename drivers/net/wireless/{ => rtl818x}/rtl8180.h (100%) create mode 100644 drivers/net/wireless/rtl818x/rtl8180_dev.c rename drivers/net/wireless/{ => rtl818x}/rtl8180_grf5101.c (100%) rename drivers/net/wireless/{ => rtl818x}/rtl8180_grf5101.h (100%) rename drivers/net/wireless/{ => rtl818x}/rtl8180_max2820.c (100%) rename drivers/net/wireless/{ => rtl818x}/rtl8180_max2820.h (100%) create mode 100644 drivers/net/wireless/rtl818x/rtl8180_rtl8225.c rename drivers/net/wireless/{ => rtl818x}/rtl8180_rtl8225.h (100%) rename drivers/net/wireless/{ => rtl818x}/rtl8180_sa2400.c (100%) rename drivers/net/wireless/{ => rtl818x}/rtl8180_sa2400.h (100%) create mode 100644 drivers/net/wireless/rtl818x/rtl8187.h create mode 100644 drivers/net/wireless/rtl818x/rtl8187_dev.c create mode 100644 drivers/net/wireless/rtl818x/rtl8187_rtl8225.c rename drivers/net/wireless/{ => rtl818x}/rtl8187_rtl8225.h (100%) create mode 100644 drivers/net/wireless/rtl818x/rtl818x.h delete mode 100644 drivers/net/wireless/spectrum_cs.c create mode 100644 drivers/usb/gadget/f_phonet.c create mode 100644 drivers/usb/gadget/u_phonet.h create mode 100644 firmware/cxgb3/t3b_psram-1.1.0.bin.ihex create mode 100644 firmware/cxgb3/t3c_psram-1.1.0.bin.ihex create mode 100644 firmware/cxgb3/t3fw-7.0.0.bin.ihex create mode 100644 include/keys/keyring-type.h create mode 100644 include/linux/dcbnl.h create mode 100644 include/linux/ftrace_irq.h delete mode 100644 include/linux/key-ui.h create mode 100644 include/linux/list_nulls.h create mode 100644 include/linux/mdio-gpio.h create mode 100644 include/linux/rculist_nulls.h create mode 100644 include/linux/smsc911x.h create mode 100644 include/net/dcbnl.h delete mode 100644 include/net/ieee80211_crypt.h create mode 100644 include/net/lib80211.h create mode 100644 include/net/netfilter/nfnetlink_log.h create mode 100644 include/net/netns/xfrm.h delete mode 100644 include/net/syncppp.h create mode 100644 include/sound/l3.h create mode 100644 include/sound/s3c24xx_uda134x.h create mode 100644 include/sound/soc-dai.h create mode 100644 include/sound/uda134x.h create mode 100644 include/trace/block.h create mode 100644 include/trace/boot.h create mode 100644 kernel/cred-internals.h create mode 100644 kernel/cred.c create mode 100644 kernel/trace/trace_branch.c create mode 100644 kernel/trace/trace_functions_graph.c create mode 100644 kernel/trace/trace_hw_branches.c create mode 100644 kernel/trace/trace_power.c create mode 100644 lib/is_single_threaded.c create mode 100644 net/dcb/Kconfig create mode 100644 net/dcb/Makefile create mode 100644 net/dcb/dcbnl.c delete mode 100644 net/ieee80211/Kconfig delete mode 100644 net/ieee80211/Makefile delete mode 100644 net/ieee80211/ieee80211_crypt.c delete mode 100644 net/ieee80211/ieee80211_crypt_ccmp.c delete mode 100644 net/ieee80211/ieee80211_crypt_tkip.c delete mode 100644 net/ieee80211/ieee80211_crypt_wep.c delete mode 100644 net/ieee80211/ieee80211_module.c delete mode 100644 net/ieee80211/ieee80211_rx.c delete mode 100644 net/ieee80211/ieee80211_tx.c delete mode 100644 net/ieee80211/ieee80211_wx.c create mode 100644 net/sched/cls_cgroup.c create mode 100644 net/sched/sch_drr.c create mode 100644 net/wireless/lib80211.c create mode 100644 net/wireless/lib80211_crypt_ccmp.c create mode 100644 net/wireless/lib80211_crypt_tkip.c create mode 100644 net/wireless/lib80211_crypt_wep.c create mode 100644 net/wireless/wext-compat.c create mode 100644 net/xfrm/xfrm_sysctl.c create mode 100755 scripts/headerdep.pl create mode 100644 scripts/strip-symbols create mode 100755 scripts/tags.sh create mode 100644 scripts/trace/power.pl create mode 100644 scripts/tracing/draw_functrace.py create mode 100644 sound/aoa/codecs/onyx.c rename sound/aoa/codecs/{snd-aoa-codec-onyx.h => onyx.h} (100%) delete mode 100644 sound/aoa/codecs/snd-aoa-codec-onyx.c delete mode 100644 sound/aoa/codecs/snd-aoa-codec-tas.c delete mode 100644 sound/aoa/codecs/snd-aoa-codec-toonie.c rename sound/aoa/codecs/{snd-aoa-codec-tas-basstreble.h => tas-basstreble.h} (100%) rename sound/aoa/codecs/{snd-aoa-codec-tas-gain-table.h => tas-gain-table.h} (100%) create mode 100644 sound/aoa/codecs/tas.c rename sound/aoa/codecs/{snd-aoa-codec-tas.h => tas.h} (100%) create mode 100644 sound/aoa/codecs/toonie.c create mode 100644 sound/aoa/core/alsa.c rename sound/aoa/core/{snd-aoa-alsa.h => alsa.h} (100%) create mode 100644 sound/aoa/core/core.c create mode 100644 sound/aoa/core/gpio-feature.c rename sound/aoa/core/{snd-aoa-gpio-pmf.c => gpio-pmf.c} (100%) delete mode 100644 sound/aoa/core/snd-aoa-alsa.c delete mode 100644 sound/aoa/core/snd-aoa-core.c delete mode 100644 sound/aoa/core/snd-aoa-gpio-feature.c create mode 100644 sound/aoa/fabrics/layout.c delete mode 100644 sound/aoa/fabrics/snd-aoa-fabric-layout.c rename sound/aoa/soundbus/i2sbus/{i2sbus-control.c => control.c} (100%) create mode 100644 sound/aoa/soundbus/i2sbus/core.c delete mode 100644 sound/aoa/soundbus/i2sbus/i2sbus-core.c rename sound/aoa/soundbus/i2sbus/{i2sbus-interface.h => interface.h} (100%) rename sound/aoa/soundbus/i2sbus/{i2sbus-pcm.c => pcm.c} (100%) create mode 100644 sound/core/hrtimer.c create mode 100644 sound/pci/cs5535audio/cs5535audio_olpc.c create mode 100644 sound/pci/hda/Kconfig create mode 100644 sound/pci/hda/hda_eld.c delete mode 100644 sound/pci/hda/hda_patch.h create mode 100644 sound/pci/hda/patch_intelhdmi.c create mode 100644 sound/pci/pcxhr/pcxhr_mix22.c create mode 100644 sound/pci/pcxhr/pcxhr_mix22.h delete mode 100644 sound/soc/at32/Kconfig delete mode 100644 sound/soc/at32/Makefile delete mode 100644 sound/soc/at32/at32-pcm.c delete mode 100644 sound/soc/at32/at32-pcm.h delete mode 100644 sound/soc/at32/at32-ssc.c delete mode 100644 sound/soc/at32/at32-ssc.h delete mode 100644 sound/soc/at32/playpaq_wm8510.c delete mode 100644 sound/soc/at91/Kconfig delete mode 100644 sound/soc/at91/Makefile delete mode 100644 sound/soc/at91/at91-pcm.c delete mode 100644 sound/soc/at91/at91-pcm.h delete mode 100644 sound/soc/at91/at91-ssc.c delete mode 100644 sound/soc/at91/at91-ssc.h create mode 100644 sound/soc/atmel/Kconfig create mode 100644 sound/soc/atmel/Makefile create mode 100644 sound/soc/atmel/atmel-pcm.c create mode 100644 sound/soc/atmel/atmel-pcm.h create mode 100644 sound/soc/atmel/atmel_ssc_dai.c create mode 100644 sound/soc/atmel/atmel_ssc_dai.h create mode 100644 sound/soc/atmel/playpaq_wm8510.c create mode 100644 sound/soc/atmel/sam9g20_wm8731.c create mode 100644 sound/soc/codecs/l3.c create mode 100644 sound/soc/codecs/pcm3008.c create mode 100644 sound/soc/codecs/pcm3008.h create mode 100644 sound/soc/codecs/twl4030.c create mode 100644 sound/soc/codecs/twl4030.h create mode 100644 sound/soc/codecs/uda134x.c create mode 100644 sound/soc/codecs/uda134x.h create mode 100644 sound/soc/codecs/wm8350.c create mode 100644 sound/soc/codecs/wm8350.h create mode 100644 sound/soc/codecs/wm8728.c create mode 100644 sound/soc/codecs/wm8728.h create mode 100644 sound/soc/davinci/davinci-sffsdr.c create mode 100644 sound/soc/omap/omap2evm.c create mode 100644 sound/soc/omap/omap3beagle.c create mode 100644 sound/soc/omap/omap3pandora.c create mode 100644 sound/soc/omap/overo.c create mode 100644 sound/soc/omap/sdp3430.c create mode 100644 sound/soc/pxa/palm27x.c create mode 100644 sound/soc/pxa/pxa-ssp.c create mode 100644 sound/soc/pxa/pxa-ssp.h create mode 100644 sound/soc/pxa/zylonite.c create mode 100644 sound/soc/s3c24xx/s3c24xx_uda134x.c hooks/post-receive -- XFS development tree From lachlan@sgi.com Mon Dec 29 21:08:58 2008 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 (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id mBU38tvK028581 for ; Mon, 29 Dec 2008 21:08:55 -0600 Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by relay1.corp.sgi.com (Postfix) with SMTP id 5F1878F8049; Mon, 29 Dec 2008 19:08:48 -0800 (PST) Received: from chook.melbourne.sgi.com (chook.melbourne.sgi.com [134.14.54.237]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA14519; Tue, 30 Dec 2008 14:08:45 +1100 Received: by chook.melbourne.sgi.com (Postfix, from userid 44625) id A4F0558AE206; Tue, 30 Dec 2008 14:08:45 +1100 (EST) Date: Tue, 30 Dec 2008 14:08:45 +1100 To: torvalds@linux-foundation.org Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, akpm@linux-foundation.org Subject: [GIT PULL] XFS update for 2.6.29 User-Agent: nail 11.25 7/29/05 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-Id: <20081230030845.A4F0558AE206@chook.melbourne.sgi.com> From: lachlan@sgi.com (Lachlan McIlroy) X-Virus-Scanned: ClamAV 0.91.2/8812/Mon Dec 29 18:49:14 2008 on oss.sgi.com X-Virus-Status: Clean 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 Barry Naujok (4): [XFS] Remove final remnants of dirv1 macros and other stuff [XFS] Sync up kernel and user-space headers [XFS] Check agf_btreeblks is valid when reading in the AGF [XFS] Show buffer address with debug hexdump on corruption Christoph Hellwig (91): [XFS] kill struct xfs_btree_hdr [XFS] split up xfs_btree_init_cursor [XFS] add generic btree types [XFS] make btree root in inode support generic [XFS] add a long pointers flag to xfs_btree_cur [XFS] refactor xfs_btree_readahead [XFS] refactor btree validation helpers [XFS] make btree tracing generic [XFS] add get_maxrecs btree operation [XFS] add helpers for addressing entities inside a btree block [XFS] implement generic xfs_btree_increment [XFS] implement generic xfs_btree_decrement [XFS] implement generic xfs_btree_lookup [XFS] implement generic xfs_btree_updkey [XFS] implement generic xfs_btree_update [XFS] implement generic xfs_btree_rshift [XFS] implement generic xfs_btree_lshift [XFS] implement generic xfs_btree_split [XFS] implement semi-generic xfs_btree_new_root [XFS] move xfs_bmbt_newroot to common code [XFS] implement generic xfs_btree_insert/insrec [XFS] move xfs_bmbt_killroot to common code [XFS] implement generic xfs_btree_delete/delrec [XFS] implement generic xfs_btree_get_rec [XFS] kill xfs_bmbt_log_block and xfs_bmbt_log_recs [XFS] add keys_inorder and recs_inorder btree methods [XFS] mark various functions in xfs_btree.c static [XFS] make btree tracing generic [XFS] Cleanup maxrecs calculation. [XFS] cleanup btree record / key / ptr addressing macros. [XFS] Always use struct xfs_btree_block instead of short / longform [XFS] Move XFS_BMAP_SANITY_CHECK out of line. [XFS] split out two helpers from xfs_syncsub [XFS] fix instant oops with tracing enabled [XFS] kill struct xfs_mount_args [XFS] fix the noquota mount option [XFS] fix biosize option [XFS] Trivial xfs_remove comment fixup [XFS] stop using xfs_itobp in xfs_bulkstat Inode: export symbol destroy_inode [XFS] free partially initialized inodes using destroy_inode [XFS] kill sys_cred [XFS] fix NULL pointer dereference in xfs_log_force_umount [XFS] wire up ->open for directories [XFS] allow inode64 mount option on 32 bit systems [XFS] fix spurious gcc warnings [XFS] remove bhv_statvfs_t typedef [XFS] remove xfs_vfs.h [XFS] remove xfs_vfsops.h [XFS] factor out xfs_read_agi helper [XFS] factor out xfs_read_agf helper [XFS] sanitize xlog_in_core_t definition [XFS] kill xfs_ialloc_log_di [XFS] kill xfs_dinode_core_t [XFS] kill XFS_DINODE_VERSION_ defines [XFS] split up xlog_recover_process_iunlinks [XFS] stop using xfs_itobp in xfs_iread [XFS] remove dead code for old inode item recovery [XFS] merge xfs_imap into xfs_dilocate [XFS] embededd struct xfs_imap into xfs_inode [XFS] kill the XFS_IMAP_BULKSTAT flag [XFS] move inode allocation out xfs_iread [XFS] fix error handling in xlog_recover_process_one_iunlink [XFS] fix compile on 32 bit systems remove useless mnt_want_write call in xfs_write remove unused behvavior cruft in xfs_super.h remove unused prototypes for xfs_ihash_init / xfs_ihash_free cleanup the inode reclaim path kill xfs_buf_iostart stop using igrab in xfs_vn_link reduce l_icloglock roundtrips remove dead code from sv_t implementation kill dead quota flags cleanup xfs_sb.h feature flag helpers kill dead inode flags remove unused m_inode_quiesce member from struct xfs_mount remove leftovers of shared read-only support use xfs_trans_ijoin in xfs_trans_iget no explicit xfs_iflush for special inodes during unmount kill xfs_unmount_flush kill vn_ioerror move vn_iowait / vn_iowake into xfs_aops.c move inode tracing out of xfs_vnode. [XFS] Fix compile with CONFIG_COMPAT enabled [XFS] replace b_fspriv with b_mount [XFS] simplify projid check in xfs_rename [XFS] resync headers with libxfs [XFS] add a FMODE flag to make XFS invisible I/O less hacky [XFS] use inode_change_ok for setattr permission checking [XFS] avoid memory allocations in xfs_fs_vcmn_err [XFS] handle unaligned data in xfs_bmbt_disk_get_all Dave Chinner (8): [XFS] handle memory allocation failures during log initialisation [XFS] fix uninitialised variable bug in dquot release [XFS] Avoid using inodes that haven't been completely initialised [XFS] Fix double free of log tickets [XFS] fix error inversion problems with data flushing [XFS] fix uninitialised variable bug in dquot release. [XFS] remove i_gen from incore inode [XFS] Fix hang after disallowed rename across directory quota domains David Chinner (44): [XFS] Make use of the init-once slab optimisation. [XFS] add new btree statistics [XFS] move sync code to its own file [XFS] move xfssyncd code to xfs_sync.c [XFS] Remove xfs_iflush_all and clean up xfs_finish_reclaim_all() [XFS] don't block in xfs_qm_dqflush() during async writeback. [XFS] Use the inode tree for finding dirty inodes [XFS] Traverse inode trees when releasing dquots [XFS] remove the mount inode list [XFS] Use struct inodes instead of vnodes to kill vn_grab [XFS] use xfs_sync_inodes rather than xfs_syncsub [XFS] kill xfs_syncsub [XFS] xfssyncd: don't call xfs_sync [XFS] make SYNC_ATTR no longer use xfs_sync [XFS] make SYNC_DELWRI no longer use xfs_sync [XFS] Kill SYNC_CLOSE [XFS] Kill xfs_sync() [XFS] Move remaining quiesce code. [XFS] factor xfs_iget_core() into hit and miss cases [XFS] Never call mark_inode_dirty_sync() directly Inode: Allow external initialisers Inode: Allow external list initialisation [XFS] Combine the XFS and Linux inodes [XFS] Prevent use-after-free caused by synchronous inode reclaim [XFS] move inode reclaim functions to xfs_sync.c [XFS] rename inode reclaim functions [XFS] mark inodes for reclaim via a tag in the inode radix tree [XFS] use the inode radix tree for reclaiming inodes [XFS] kill deleted inodes list [XFS] Prevent looping in xfs_sync_inodes_ag [XFS] Account for allocated blocks when expanding directories [XFS] Allocate the struct xfs_ail [XFS] Use a cursor for AIL traversal. [XFS] move the AIl traversal over to a consistent interface [XFS] Allow 64 bit machines to avoid the AIL lock during flushes [XFS] Move the AIL lock into the struct xfs_ail [XFS] Given the log a pointer to the AIL [XFS] Add ail pointer into log items [XFS] Finish removing the mount pointer from the AIL API [XFS] XFS: Check for valid transaction headers in recovery [XFS] Can't lock inodes in radix tree preload region [XFS] avoid all reclaimable inodes in xfs_sync_inodes_ag [XFS] correctly select first log item to push [XFS] Fix race when looking up reclaimable inodes David Howells (1): CRED: Wrap task credential accesses in the XFS filesystem Eric Sandeen (3): [XFS] convert xfs_getbmap to take formatter functions [XFS] Add new getbmap flags. [XFS] Hook up the fiemap ioctl. Lachlan McIlroy (21): [XFS] Remove kmem_zone_t argument from xfs_inode_init_once() [XFS] Use xfs_idestroy() to cleanup an inode. [XFS] Fix use-after-free with log and quotas [XFS] Unlock inode before calling xfs_idestroy() [XFS] Wait for all I/O on truncate to zero file size [XFS] Make xfs_btree_check_ptr() debug-only code. [XFS] Fix build warning - xfs_fs_alloc_inode() needs a return statement Merge git://git.kernel.org/.../torvalds/linux-2.6 [XFS] Check return value of xfs_buf_get_noaddr() [XFS] Remove unused variable in ktrace_free() [XFS] Remove unnecessary assertion Merge git://git.kernel.org/.../torvalds/linux-2.6 [XFS] Remove unused tracing code [XFS] set b_error from bio error in xfs_buf_bio_end_io Merge branch 'master' of git+ssh://git.melbourne.sgi.com/git/xfs [XFS] Fix merge conflict in fs/xfs/xfs_rename.c [XFS] Use the incore inode size in xfs_file_readdir() [XFS] Remove XFS_BUF_SHUT() and friends [XFS] Fix speculative allocation beyond eof [XFS] Fix race in xfs_write() between direct and buffered I/O with DMAPI [XFS] Fix merge failures Niv Sardi (1): Merge branch 'master' of git://oss.sgi.com:8090/xfs/linux-2.6 Peter Leckie (2): [XFS] Clean up dquot pincount code. [XFS] Fix build brakage from patch "Clean up dquot pincount code" Stephen Rothwell (1): fs: xfs needs inode_wait to be exported Tim Shimmin (2): [XFS] remove restricted chown parameter from xfs linux [XFS] remove restricted chown parameter from xfs linux sandeen@sandeen.net (12): [XFS] Move copy_from_user calls out of ioctl helpers into ioctl switch. [XFS] Move compat ioctl structs & numbers into xfs_ioctl32.h [XFS] Clean up some existing compat ioctl calls [XFS] Add compat handlers for swapext ioctl [XFS] Add compat handlers for data & rt growfs ioctls [XFS] Make the bulkstat_one compat ioctl handling more sane [XFS] Fix xfs_bulkstat_one size checks & error handling [XFS] Fix compat XFS_IOC_FSBULKSTAT_SINGLE ioctl [XFS] Hook up compat XFS_IOC_ATTRLIST_BY_HANDLE ioctl handler [XFS] Hook up compat XFS_IOC_ATTRMULTI_BY_HANDLE ioctl handler [XFS] Hook up compat XFS_IOC_FSSETDM_BY_HANDLE ioctl handler [XFS] Reorder xfs_ioctl32.c for some tidiness Documentation/filesystems/xfs.txt | 4 - fs/inode.c | 209 ++- fs/xfs/Makefile | 6 +- fs/xfs/linux-2.6/sv.h | 22 +- fs/xfs/linux-2.6/xfs_aops.c | 66 +- fs/xfs/linux-2.6/xfs_aops.h | 3 + fs/xfs/linux-2.6/xfs_buf.c | 87 +- fs/xfs/linux-2.6/xfs_buf.h | 30 +- fs/xfs/linux-2.6/xfs_cred.h | 8 - fs/xfs/linux-2.6/xfs_export.c | 1 - fs/xfs/linux-2.6/xfs_file.c | 189 +-- fs/xfs/linux-2.6/xfs_fs_subr.c | 23 +- fs/xfs/linux-2.6/xfs_globals.c | 8 - fs/xfs/linux-2.6/xfs_globals.h | 1 - fs/xfs/linux-2.6/xfs_ioctl.c | 223 ++-- fs/xfs/linux-2.6/xfs_ioctl.h | 82 + fs/xfs/linux-2.6/xfs_ioctl32.c | 849 ++++++--- fs/xfs/linux-2.6/xfs_ioctl32.h | 214 +++- fs/xfs/linux-2.6/xfs_iops.c | 122 ++- fs/xfs/linux-2.6/xfs_iops.h | 1 - fs/xfs/linux-2.6/xfs_linux.h | 13 +- fs/xfs/linux-2.6/xfs_lrw.c | 50 +- fs/xfs/linux-2.6/xfs_stats.c | 6 +- fs/xfs/linux-2.6/xfs_stats.h | 65 + fs/xfs/linux-2.6/xfs_super.c | 884 +++------ fs/xfs/linux-2.6/xfs_super.h | 15 - fs/xfs/linux-2.6/xfs_sync.c | 762 ++++++++ fs/xfs/linux-2.6/xfs_sync.h | 55 + fs/xfs/linux-2.6/xfs_sysctl.c | 11 - fs/xfs/linux-2.6/xfs_sysctl.h | 3 +- fs/xfs/linux-2.6/xfs_vfs.h | 77 - fs/xfs/linux-2.6/xfs_vnode.c | 145 -- fs/xfs/linux-2.6/xfs_vnode.h | 72 +- fs/xfs/quota/xfs_dquot.c | 39 +- fs/xfs/quota/xfs_dquot.h | 4 +- fs/xfs/quota/xfs_dquot_item.c | 45 +- fs/xfs/quota/xfs_qm.c | 57 +- fs/xfs/quota/xfs_qm.h | 3 +- fs/xfs/quota/xfs_qm_bhv.c | 5 +- fs/xfs/quota/xfs_qm_syscalls.c | 151 +- fs/xfs/support/debug.c | 39 +- fs/xfs/support/debug.h | 2 - fs/xfs/support/ktrace.c | 9 +- fs/xfs/xfs.h | 2 +- fs/xfs/xfs_acl.c | 2 +- fs/xfs/xfs_ag.h | 15 +- fs/xfs/xfs_alloc.c | 264 ++- fs/xfs/xfs_alloc.h | 27 +- fs/xfs/xfs_alloc_btree.c | 2387 ++++--------------------- fs/xfs/xfs_alloc_btree.h | 107 +- fs/xfs/xfs_arch.h | 39 +- fs/xfs/xfs_bit.h | 3 +- fs/xfs/xfs_bmap.c | 410 +++-- fs/xfs/xfs_bmap.h | 72 +- fs/xfs/xfs_bmap_btree.c | 2617 +++++---------------------- fs/xfs/xfs_bmap_btree.h | 171 +-- fs/xfs/xfs_btree.c | 3596 ++++++++++++++++++++++++++++++++----- fs/xfs/xfs_btree.h | 392 +++-- fs/xfs/xfs_btree_trace.c | 249 +++ fs/xfs/xfs_btree_trace.h | 116 ++ fs/xfs/xfs_buf_item.c | 45 +- fs/xfs/xfs_clnt.h | 105 -- fs/xfs/xfs_da_btree.h | 24 +- fs/xfs/xfs_dfrag.c | 8 +- fs/xfs/xfs_dfrag.h | 2 +- fs/xfs/xfs_dinode.h | 148 +- fs/xfs/xfs_dir2_sf.h | 7 - fs/xfs/xfs_dmops.c | 5 +- fs/xfs/xfs_error.c | 15 - fs/xfs/xfs_error.h | 12 +- fs/xfs/xfs_extfree_item.c | 45 +- fs/xfs/xfs_fs.h | 22 +- fs/xfs/xfs_fsops.c | 30 +- fs/xfs/xfs_ialloc.c | 449 +++-- fs/xfs/xfs_ialloc.h | 31 +- fs/xfs/xfs_ialloc_btree.c | 2193 +++-------------------- fs/xfs/xfs_ialloc_btree.h | 111 +- fs/xfs/xfs_iget.c | 735 ++++---- fs/xfs/xfs_imap.h | 40 - fs/xfs/xfs_inode.c | 587 ++----- fs/xfs/xfs_inode.h | 375 +++-- fs/xfs/xfs_inode_item.c | 45 +- fs/xfs/xfs_inode_item.h | 41 +- fs/xfs/xfs_iomap.c | 28 +- fs/xfs/xfs_itable.c | 102 +- fs/xfs/xfs_itable.h | 14 + fs/xfs/xfs_log.c | 81 +- fs/xfs/xfs_log.h | 4 + fs/xfs/xfs_log_priv.h | 48 +- fs/xfs/xfs_log_recover.c | 416 ++--- fs/xfs/xfs_mount.c | 81 +- fs/xfs/xfs_mount.h | 73 +- fs/xfs/xfs_qmops.c | 5 +- fs/xfs/xfs_quota.h | 8 +- fs/xfs/xfs_rename.c | 61 +- fs/xfs/xfs_rtalloc.c | 41 +- fs/xfs/xfs_rw.c | 2 +- fs/xfs/xfs_sb.h | 167 +- fs/xfs/xfs_trans.c | 22 +- fs/xfs/xfs_trans.h | 322 ++-- fs/xfs/xfs_trans_ail.c | 362 +++-- fs/xfs/xfs_trans_buf.c | 7 +- fs/xfs/xfs_trans_inode.c | 30 +- fs/xfs/xfs_trans_item.c | 10 + fs/xfs/xfs_trans_priv.h | 98 +- fs/xfs/xfs_utils.c | 12 +- fs/xfs/xfs_vfsops.c | 757 -------- fs/xfs/xfs_vfsops.h | 16 - fs/xfs/xfs_vnodeops.c | 354 +--- fs/xfs/xfs_vnodeops.h | 10 +- include/linux/fs.h | 10 + kernel/sysctl_check.c | 1 - 112 files changed, 10496 insertions(+), 12850 deletions(-) create mode 100644 fs/xfs/linux-2.6/xfs_ioctl.h create mode 100644 fs/xfs/linux-2.6/xfs_sync.c create mode 100644 fs/xfs/linux-2.6/xfs_sync.h delete mode 100644 fs/xfs/linux-2.6/xfs_vfs.h delete mode 100644 fs/xfs/linux-2.6/xfs_vnode.c create mode 100644 fs/xfs/xfs_btree_trace.c create mode 100644 fs/xfs/xfs_btree_trace.h delete mode 100644 fs/xfs/xfs_clnt.h delete mode 100644 fs/xfs/xfs_imap.h delete mode 100644 fs/xfs/xfs_vfsops.c delete mode 100644 fs/xfs/xfs_vfsops.h From cattelan@thebarn.com Mon Dec 29 22:16:21 2008 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 mBU4GLcd028687 for ; Mon, 29 Dec 2008 22:16:21 -0600 X-ASG-Debug-ID: 1230610580-516901470000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from slurp.thebarn.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2050151208 for ; Mon, 29 Dec 2008 20:16:20 -0800 (PST) Received: from slurp.thebarn.com (cattelan-host202.dsl.visi.com [208.42.117.202]) by cuda.sgi.com with ESMTP id 7Upa6OAEbJYwssy5 for ; Mon, 29 Dec 2008 20:16:20 -0800 (PST) Received: from funky.thebarn.com (slurp.thebarn.com [208.42.117.201]) (authenticated bits=0) by slurp.thebarn.com (8.14.0/8.14.0) with ESMTP id mBU4GCvq086558; Mon, 29 Dec 2008 22:16:13 -0600 (CST) (envelope-from cattelan@thebarn.com) Message-ID: <4959A08C.3030003@thebarn.com> Date: Mon, 29 Dec 2008 22:16:12 -0600 From: Russell Cattelan User-Agent: Thunderbird 2.0.0.6 (Macintosh/20070728) MIME-Version: 1.0 To: Christoph Hellwig , xfs@oss.sgi.com, John Stanley X-ASG-Orig-Subj: Re: [PATCH, RFC] directory offset overflows in 2.6.28 Subject: Re: [PATCH, RFC] directory offset overflows in 2.6.28 References: <20081229220745.GA12966@infradead.org> <20081230001117.GA5220@disturbed> In-Reply-To: <20081230001117.GA5220@disturbed> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/8812/Mon Dec 29 18:49:14 2008 on oss.sgi.com X-Virus-Scanned: ClamAV 0.91.2/8812/Mon Dec 29 18:49:14 2008 on slurp.thebarn.com X-Virus-Status: Clean X-Barracuda-Connect: cattelan-host202.dsl.visi.com[208.42.117.202] X-Barracuda-Start-Time: 1230610581 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.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=COMMA_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13956 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' Dave Chinner wrote: > On Mon, Dec 29, 2008 at 05:07:45PM -0500, Christoph Hellwig wrote: > >> The patch below is a dumb version of just putting back the masking, >> to make sure we have the same behavior as in 2.6.27 and earlier. >> I think we should at least hide it in a macro that is well-commented, >> but I suspect we also need to make sure that we never ever get bigger >> offsets in directories in some way. >> > > I think we need that macro sooner rather than later ;) > > >> Index: xfs/fs/xfs/xfs_dir2_block.c >> =================================================================== >> --- xfs.orig/fs/xfs/xfs_dir2_block.c 2008-12-29 21:25:29.680613664 +0100 >> +++ xfs/fs/xfs/xfs_dir2_block.c 2008-12-29 21:29:57.341627581 +0100 >> @@ -517,9 +517,9 @@ xfs_dir2_block_getdents( >> /* >> * If it didn't fit, set the final offset to here & return. >> */ >> - if (filldir(dirent, dep->name, dep->namelen, cook, >> + if (filldir(dirent, dep->name, dep->namelen, cook & 0x7fffffff, >> ino, DT_UNKNOWN)) { >> - *offset = cook; >> + *offset = cook & 0x7fffffff; >> xfs_da_brelse(NULL, bp); >> return 0; >> } >> > > In this case, you can do the masking at the time cook is > assigned. I haven't checked, but I suspect the rest will be the > same. That will make the patch less invasive and with a macro > somewhat cleaner... > > Cheers, > > Dave. > I'm still sorting out the readdir changes in the FreeBSD port so I'm not exactly sure how this would affect things there but I'm thinking FreeBSD does not have 32 bit readdir offset limits, so this change might be another undo patch I would have to maintain. So I agree, lets make this less invasive. I've managed to change things at bit by passing an opaque ptr containing the uuio struct into a freebsd "filldir" function so my xfs changes so far are minimal. From npiggin@suse.de Mon Dec 29 22:23:35 2008 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 mBU4NZNY003754 for ; Mon, 29 Dec 2008 22:23:35 -0600 X-ASG-Debug-ID: 1230611014-0c2100fa0000-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 5B0DA1795387 for ; Mon, 29 Dec 2008 20:23:34 -0800 (PST) Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id KqDLla7ihVVOLT3o for ; Mon, 29 Dec 2008 20:23:34 -0800 (PST) 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 mx2.suse.de (Postfix) with ESMTP id CFE1A48563; Tue, 30 Dec 2008 05:23:33 +0100 (CET) Date: Tue, 30 Dec 2008 05:23:33 +0100 From: Nick Piggin To: Christoph Hellwig Cc: 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: <20081230042333.GC27679@wotan.suse.de> References: <20081223171259.GA11945@infradead.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081223171259.GA11945@infradead.org> User-Agent: Mutt/1.5.9i X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1230611015 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.13958 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8812/Mon Dec 29 18:49:14 2008 on oss.sgi.com X-Virus-Status: Clean 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... From cw@f00f.org Tue Dec 30 01:34:00 2008 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 mBU7Y0KT013993 for ; Tue, 30 Dec 2008 01:34:00 -0600 X-ASG-Debug-ID: 1230622438-0a2b01880000-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 3699417957E9 for ; Mon, 29 Dec 2008 23:33:58 -0800 (PST) Received: from parsec.stupidest.org (splinter.f00f.org [216.75.21.205]) by cuda.sgi.com with ESMTP id 73Y5GHBo4DcnVkWC for ; Mon, 29 Dec 2008 23:33:58 -0800 (PST) Received: from stupidest.org (unknown [10.0.1.1]) by parsec.stupidest.org (Postfix) with ESMTP id 12DF0AEFAA; Mon, 29 Dec 2008 16:14:26 -0800 (PST) Received: by tuatara.stupidest.org (Postfix, from userid 10000) id D727928492FD; Mon, 29 Dec 2008 16:14:25 -0800 (PST) Date: Mon, 29 Dec 2008 16:14:25 -0800 From: Chris Wedgwood To: Eric Sandeen Cc: Martin Steigerwald , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 Subject: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 Message-ID: <20081230001425.GA25516@puku.stupidest.org> References: <200812291920.34123.Martin@Lichtvoll.de> <49592045.3050103@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49592045.3050103@sandeen.net> X-Barracuda-Connect: splinter.f00f.org[216.75.21.205] X-Barracuda-Start-Time: 1230622440 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=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13968 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e X-Virus-Scanned: ClamAV 0.91.2/8812/Mon Dec 29 18:49:14 2008 on oss.sgi.com X-Virus-Status: Clean On Mon, Dec 29, 2008 at 01:08:53PM -0600, Eric Sandeen wrote: > It is certainly at least possible that whatever is writing the KDE > files is not following good practices for data integrity... I can't > say that for sure, but apps have responsibility here, too. :) BTW, it's not just KDE that does this. A lot of apps that IMO should be more careful aren't. For example apt/dpkg on debian. It's possible if you lose power/oops/whatever during upgrade you can eat those files and cause much pain. It's bad enough I started work on a replacement for these that uses sqlite. From cw@f00f.org Tue Dec 30 01:35:36 2008 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 mBU7ZZSq014179 for ; Tue, 30 Dec 2008 01:35:36 -0600 X-ASG-Debug-ID: 1230622534-04c9004a0000-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 B7B3C51536 for ; Mon, 29 Dec 2008 23:35:34 -0800 (PST) Received: from parsec.stupidest.org (splinter.f00f.org [216.75.21.205]) by cuda.sgi.com with ESMTP id Y2wT0nlvWkBM2D9O for ; Mon, 29 Dec 2008 23:35:34 -0800 (PST) Received: from stupidest.org (unknown [10.0.1.1]) by parsec.stupidest.org (Postfix) with ESMTP id 8CA53AEFA8; Mon, 29 Dec 2008 11:29:57 -0800 (PST) Received: by tuatara.stupidest.org (Postfix, from userid 10000) id 5D725282F2AD; Mon, 29 Dec 2008 11:29:57 -0800 (PST) Date: Mon, 29 Dec 2008 11:29:57 -0800 From: Chris Wedgwood To: Russell Cattelan Cc: Martin Steigerwald , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 Subject: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 Message-ID: <20081229192957.GC18092@puku.stupidest.org> References: <200812291920.34123.Martin@Lichtvoll.de> <4959205E.4000000@thebarn.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4959205E.4000000@thebarn.com> X-Barracuda-Connect: splinter.f00f.org[216.75.21.205] X-Barracuda-Start-Time: 1230622535 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=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13968 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e X-Virus-Scanned: ClamAV 0.91.2/8812/Mon Dec 29 18:49:14 2008 on oss.sgi.com X-Virus-Status: Clean On Mon, Dec 29, 2008 at 01:09:18PM -0600, Russell Cattelan wrote: > The question that I have is regards to kde apps. i just did a quick strace of something, i see it do: open newfile write data close file rename newfile over oldfile no fsync before close... this will bite xfs more than ext3 w/ ordered mode From cw@f00f.org Tue Dec 30 01:36:05 2008 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 mBU7a5fQ014258 for ; Tue, 30 Dec 2008 01:36:05 -0600 X-ASG-Debug-ID: 1230622565-354e02ca0000-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 A1B5D51544 for ; Mon, 29 Dec 2008 23:36:05 -0800 (PST) Received: from parsec.stupidest.org (splinter.f00f.org [216.75.21.205]) by cuda.sgi.com with ESMTP id RR9idyjG3kdgbn7q for ; Mon, 29 Dec 2008 23:36:05 -0800 (PST) Received: from stupidest.org (unknown [10.0.1.1]) by parsec.stupidest.org (Postfix) with ESMTP id 940B2AEFA4; Mon, 29 Dec 2008 11:03:29 -0800 (PST) Received: by tuatara.stupidest.org (Postfix, from userid 10000) id 3E4A5282F2AD; Mon, 29 Dec 2008 11:03:29 -0800 (PST) Date: Mon, 29 Dec 2008 11:03:29 -0800 From: Chris Wedgwood To: Martin Steigerwald Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 Subject: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 Message-ID: <20081229190329.GA17289@puku.stupidest.org> References: <200812291920.34123.Martin@Lichtvoll.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200812291920.34123.Martin@Lichtvoll.de> X-Barracuda-Connect: splinter.f00f.org[216.75.21.205] X-Barracuda-Start-Time: 1230622565 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=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13968 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e X-Virus-Scanned: ClamAV 0.91.2/8812/Mon Dec 29 18:49:14 2008 on oss.sgi.com X-Virus-Status: Clean On Mon, Dec 29, 2008 at 07:20:33PM +0100, Martin Steigerwald wrote: > But I had a hard crash this time while shutting down the system > regularily and the KDE addressbook, KDE settings, additional sidebar > all was lost due to truncated files. This was without barriers but > also without write cache. I've seen this but not for a very long time. It used be be (perhaps still is) that KDE updates configurations with open O_TRUNC & rewrite. This means there is a window when you can lose data. I suggested that they should open temp, write, fsync then rename (some time ago) and I recall seeing some changes in CVS the next day to do that, but i think that was with ktmpfile or something only). The other thing is XFS has a much smaller window now than it used to on the open w/ truncate case, I think now writeout begins as soon as the file is closed. Older versions of firefox did this with bookmarks too, so you would get cases there were you lost data. Now it uses sqlite as a store which is much more sane in it's write patterns. > Do you have any idea on how to help to get down to the cause of this > - without risking precious data? ball-peen hammer? > Did anyone else see this? Does anyone use XFS on laptops and had > recent power losses or crashes? I use XFS on laptops, have done for years and don't typically see this. > I expect to loose the changes for a dirtied file thats in the page > cache. Right. > But I do not expect to loose the current (old) file on disk in that > case, unless the crash happens when its actually written out at that > time. But you do, when it opens the old file and truncates it, that event is logged and at which point the file is zero-length containing nothing. The data hits the disk later on and the size is updated If you lose power before then, you get zero length files. > Actually I am considering to switch to ext3/4. If it is what i explained above, you can still this this though it's much harder. Basically, developers shouldn't rewrite critical data in place. (didn't Jim Gray say something like "Update in Place is a Poison Apple"?) > Is there interest in digging this? Check how KDE writes out configuration files, strace might be easier than figuring it out from the code. From cw@f00f.org Tue Dec 30 01:36:06 2008 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 mBU7a5v5014257 for ; Tue, 30 Dec 2008 01:36:06 -0600 X-ASG-Debug-ID: 1230622565-0a2b01940000-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 8C5DB1795818 for ; Mon, 29 Dec 2008 23:36:05 -0800 (PST) Received: from parsec.stupidest.org (splinter.f00f.org [216.75.21.205]) by cuda.sgi.com with ESMTP id EbvK7nbDyEVXGoFJ for ; Mon, 29 Dec 2008 23:36:05 -0800 (PST) Received: from stupidest.org (unknown [10.0.1.1]) by parsec.stupidest.org (Postfix) with ESMTP id 175D0AEFA7; Mon, 29 Dec 2008 12:17:42 -0800 (PST) Received: by tuatara.stupidest.org (Postfix, from userid 10000) id 9FFA628492FD; Mon, 29 Dec 2008 12:17:41 -0800 (PST) Date: Mon, 29 Dec 2008 12:17:41 -0800 From: Chris Wedgwood To: Russell Cattelan Cc: Martin Steigerwald , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 Subject: Re: massively truncated files with XFS with sudden power loss on 2.6.27 and 2.6.28 Message-ID: <20081229201741.GA20024@puku.stupidest.org> References: <200812291920.34123.Martin@Lichtvoll.de> <4959205E.4000000@thebarn.com> <20081229192957.GC18092@puku.stupidest.org> <49592E7D.4050208@xfs.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49592E7D.4050208@xfs.org> X-Barracuda-Connect: splinter.f00f.org[216.75.21.205] X-Barracuda-Start-Time: 1230622565 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=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13968 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e X-Virus-Scanned: ClamAV 0.91.2/8812/Mon Dec 29 18:49:14 2008 on oss.sgi.com X-Virus-Status: Clean On Mon, Dec 29, 2008 at 02:09:33PM -0600, Russell Cattelan wrote: > Still why is the file size making it to disk before the data and > more importantly the extent transaction to the log? well, as you know, it's logged, the data isn't > that should have been fixed. the window was shrunk to write out begins on close for existing files the are opened with truncate (i think nathans did that some time ago?) new files won't be affected by that change From SRS0+0046145508e9135873a4+1955+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 30 05:03:51 2008 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_33, J_CHICKENPOX_66,J_CHICKENPOX_74 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 mBUB3pp4003678 for ; Tue, 30 Dec 2008 05:03:51 -0600 X-ASG-Debug-ID: 1230635031-2cbe037f0000-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 6C1CE51A9D for ; Tue, 30 Dec 2008 03:03:51 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id DdPXBqaCiIavoDW8 for ; Tue, 30 Dec 2008 03: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 1LHcO7-0006qL-08 for xfs@oss.sgi.com; Tue, 30 Dec 2008 11:03:51 +0000 Date: Tue, 30 Dec 2008 06:03:50 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] fix dentry aliasing issues in open_by_handle Subject: Re: [PATCH 1/2] fix dentry aliasing issues in open_by_handle Message-ID: <20081230110350.GA22461@infradead.org> References: <20081228191333.GA25289@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081228191333.GA25289@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: 1230635031 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean On Sun, Dec 28, 2008 at 02:13:33PM -0500, Christoph Hellwig wrote: > Open by handle just grabs an inode by handle and then creates itself > a dentry for it. While this works for regular files it is horribly > broken for directories, where the VFS locking relies on the fact that > there is only just one single dentry for a given inode, and that > these are always connected to the root of the filesystem so that > it's locking algorithms work (see Documentations/filesystems/Locking) > > Remove all the existing open by handle code and replace it with a small > wrapper around the exportfs code which deals with all these issues. > At the same time we also make the checks for a valid handle strict > enough to reject all not perfectly well formed handles - given that > we never hand out others that's okay and simplifies the code. Update to apply against the current tree: Index: xfs/fs/xfs/linux-2.6/xfs_ioctl.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_ioctl.c 2008-12-29 01:11:13.000000000 +0000 +++ xfs/fs/xfs/linux-2.6/xfs_ioctl.c 2008-12-29 01:11:14.000000000 +0000 @@ -50,12 +50,14 @@ #include "xfs_vnodeops.h" #include "xfs_quota.h" #include "xfs_inode_item.h" +#include "xfs_export.h" #include #include #include #include #include +#include /* * xfs_find_handle maps from userspace xfs_fsop_handlereq structure to @@ -146,96 +148,64 @@ return error; } +STATIC int +handle_acceptable( + void *context, + struct dentry *dentry) +{ + return 1; +} /* - * Convert userspace handle data into inode. - * - * We use the fact that all the fsop_handlereq ioctl calls have a data - * structure argument whose first component is always a xfs_fsop_handlereq_t, - * so we can pass that sub structure into this handy, shared routine. - * - * If no error, caller must always iput the returned inode. + * Convert userspace handle data into a dentry. */ -STATIC int -xfs_vget_fsop_handlereq( - xfs_mount_t *mp, - struct inode *parinode, /* parent inode pointer */ - xfs_fsop_handlereq_t *hreq, - struct inode **inode) -{ - void __user *hanp; - size_t hlen; - xfs_fid_t *xfid; - xfs_handle_t *handlep; +struct dentry * +xfs_handle_to_dentry( + struct file *parfilp, + void __user *uhandle, + u32 hlen) +{ xfs_handle_t handle; - xfs_inode_t *ip; - xfs_ino_t ino; - __u32 igen; - int error; + struct xfs_fid64 fid; /* * Only allow handle opens under a directory. */ - if (!S_ISDIR(parinode->i_mode)) - return XFS_ERROR(ENOTDIR); - - hanp = hreq->ihandle; - hlen = hreq->ihandlen; - handlep = &handle; - - if (hlen < sizeof(handlep->ha_fsid) || hlen > sizeof(*handlep)) - return XFS_ERROR(EINVAL); - if (copy_from_user(handlep, hanp, hlen)) - return XFS_ERROR(EFAULT); - if (hlen < sizeof(*handlep)) - memset(((char *)handlep) + hlen, 0, sizeof(*handlep) - hlen); - if (hlen > sizeof(handlep->ha_fsid)) { - if (handlep->ha_fid.fid_len != - (hlen - sizeof(handlep->ha_fsid) - - sizeof(handlep->ha_fid.fid_len)) || - handlep->ha_fid.fid_pad) - return XFS_ERROR(EINVAL); - } - - /* - * Crack the handle, obtain the inode # & generation # - */ - xfid = (struct xfs_fid *)&handlep->ha_fid; - if (xfid->fid_len == sizeof(*xfid) - sizeof(xfid->fid_len)) { - ino = xfid->fid_ino; - igen = xfid->fid_gen; - } else { - return XFS_ERROR(EINVAL); - } - - /* - * Get the XFS inode, building a Linux inode to go with it. - */ - error = xfs_iget(mp, NULL, ino, 0, XFS_ILOCK_SHARED, &ip, 0); - if (error) - return error; - if (ip == NULL) - return XFS_ERROR(EIO); - if (ip->i_d.di_gen != igen) { - xfs_iput_new(ip, XFS_ILOCK_SHARED); - return XFS_ERROR(ENOENT); - } + if (!S_ISDIR(parfilp->f_path.dentry->d_inode->i_mode)) + return ERR_PTR(-ENOTDIR); - xfs_iunlock(ip, XFS_ILOCK_SHARED); + if (hlen != sizeof(xfs_handle_t)) + return ERR_PTR(-EINVAL); + if (copy_from_user(&handle, uhandle, hlen)) + return ERR_PTR(-EFAULT); + if (handle.ha_fid.fid_len != + sizeof(handle.ha_fid) - sizeof(handle.ha_fid.fid_len)) + return ERR_PTR(-EINVAL); + + memset(&fid, 0, sizeof(struct fid)); + fid.ino = handle.ha_fid.fid_ino; + fid.gen = handle.ha_fid.fid_gen; + + return exportfs_decode_fh(parfilp->f_path.mnt, (struct fid *)&fid, 3, + FILEID_INO32_GEN | XFS_FILEID_TYPE_64FLAG, + handle_acceptable, NULL); +} - *inode = VFS_I(ip); - return 0; +STATIC struct dentry * +xfs_handlereq_to_dentry( + struct file *parfilp, + xfs_fsop_handlereq_t *hreq) +{ + return xfs_handle_to_dentry(parfilp, hreq->ihandle, hreq->ihandlen); } int xfs_open_by_handle( - xfs_mount_t *mp, - xfs_fsop_handlereq_t *hreq, struct file *parfilp, - struct inode *parinode) + xfs_fsop_handlereq_t *hreq) { int error; - int new_fd; + int fd; int permflag; struct file *filp; struct inode *inode; @@ -244,19 +214,21 @@ if (!capable(CAP_SYS_ADMIN)) return -XFS_ERROR(EPERM); - error = xfs_vget_fsop_handlereq(mp, parinode, hreq, &inode); - if (error) - return -error; + dentry = xfs_handlereq_to_dentry(parfilp, hreq); + if (IS_ERR(dentry)) + return PTR_ERR(dentry); + inode = dentry->d_inode; /* Restrict xfs_open_by_handle to directories & regular files. */ if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode))) { - iput(inode); - return -XFS_ERROR(EINVAL); + error = -XFS_ERROR(EINVAL); + goto out_dput; } #if BITS_PER_LONG != 32 hreq->oflags |= O_LARGEFILE; #endif + /* Put open permission in namei format. */ permflag = hreq->oflags; if ((permflag+1) & O_ACCMODE) @@ -266,50 +238,44 @@ if ((!(permflag & O_APPEND) || (permflag & O_TRUNC)) && (permflag & FMODE_WRITE) && IS_APPEND(inode)) { - iput(inode); - return -XFS_ERROR(EPERM); + error = -XFS_ERROR(EPERM); + goto out_dput; } if ((permflag & FMODE_WRITE) && IS_IMMUTABLE(inode)) { - iput(inode); - return -XFS_ERROR(EACCES); + error = -XFS_ERROR(EACCES); + goto out_dput; } /* Can't write directories. */ - if ( S_ISDIR(inode->i_mode) && (permflag & FMODE_WRITE)) { - iput(inode); - return -XFS_ERROR(EISDIR); + if (S_ISDIR(inode->i_mode) && (permflag & FMODE_WRITE)) { + error = -XFS_ERROR(EISDIR); + goto out_dput; } - if ((new_fd = get_unused_fd()) < 0) { - iput(inode); - return new_fd; + fd = get_unused_fd(); + if (fd < 0) { + error = fd; + goto out_dput; } - dentry = d_obtain_alias(inode); - if (IS_ERR(dentry)) { - put_unused_fd(new_fd); - return PTR_ERR(dentry); - } - - /* Ensure umount returns EBUSY on umounts while this file is open. */ - mntget(parfilp->f_path.mnt); - - /* Create file pointer. */ - filp = dentry_open(dentry, parfilp->f_path.mnt, hreq->oflags); + filp = dentry_open(dentry, mntget(parfilp->f_path.mnt), hreq->oflags); if (IS_ERR(filp)) { - put_unused_fd(new_fd); - return -XFS_ERROR(-PTR_ERR(filp)); + put_unused_fd(fd); + return PTR_ERR(filp); } if (inode->i_mode & S_IFREG) { - /* invisible operation should not change atime */ filp->f_flags |= O_NOATIME; filp->f_mode |= FMODE_NOCMTIME; } - fd_install(new_fd, filp); - return new_fd; + fd_install(fd, filp); + return fd; + + out_dput: + dput(dentry); + return error; } /* @@ -340,11 +306,10 @@ int xfs_readlink_by_handle( - xfs_mount_t *mp, - xfs_fsop_handlereq_t *hreq, - struct inode *parinode) + struct file *parfilp, + xfs_fsop_handlereq_t *hreq) { - struct inode *inode; + struct dentry *dentry; __u32 olen; void *link; int error; @@ -352,26 +317,28 @@ if (!capable(CAP_SYS_ADMIN)) return -XFS_ERROR(EPERM); - error = xfs_vget_fsop_handlereq(mp, parinode, hreq, &inode); - if (error) - return -error; + dentry = xfs_handlereq_to_dentry(parfilp, hreq); + if (IS_ERR(dentry)) + return PTR_ERR(dentry); /* Restrict this handle operation to symlinks only. */ - if (!S_ISLNK(inode->i_mode)) { + if (!S_ISLNK(dentry->d_inode->i_mode)) { error = -XFS_ERROR(EINVAL); - goto out_iput; + goto out_dput; } if (copy_from_user(&olen, hreq->ohandlen, sizeof(__u32))) { error = -XFS_ERROR(EFAULT); - goto out_iput; + goto out_dput; } link = kmalloc(MAXPATHLEN+1, GFP_KERNEL); - if (!link) - goto out_iput; + if (!link) { + error = -XFS_ERROR(ENOMEM); + goto out_dput; + } - error = -xfs_readlink(XFS_I(inode), link); + error = -xfs_readlink(XFS_I(dentry->d_inode), link); if (error) goto out_kfree; error = do_readlink(hreq->ohandle, olen, link); @@ -380,32 +347,31 @@ out_kfree: kfree(link); - out_iput: - iput(inode); + out_dput: + dput(dentry); return error; } STATIC int xfs_fssetdm_by_handle( - xfs_mount_t *mp, - void __user *arg, - struct inode *parinode) + struct file *parfilp, + void __user *arg) { int error; struct fsdmidata fsd; xfs_fsop_setdm_handlereq_t dmhreq; - struct inode *inode; + struct dentry *dentry; if (!capable(CAP_MKNOD)) return -XFS_ERROR(EPERM); if (copy_from_user(&dmhreq, arg, sizeof(xfs_fsop_setdm_handlereq_t))) return -XFS_ERROR(EFAULT); - error = xfs_vget_fsop_handlereq(mp, parinode, &dmhreq.hreq, &inode); - if (error) - return -error; + dentry = xfs_handlereq_to_dentry(parfilp, &dmhreq.hreq); + if (IS_ERR(dentry)) + return PTR_ERR(dentry); - if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) { + if (IS_IMMUTABLE(dentry->d_inode) || IS_APPEND(dentry->d_inode)) { error = -XFS_ERROR(EPERM); goto out; } @@ -415,24 +381,23 @@ goto out; } - error = -xfs_set_dmattrs(XFS_I(inode), fsd.fsd_dmevmask, + error = -xfs_set_dmattrs(XFS_I(dentry->d_inode), fsd.fsd_dmevmask, fsd.fsd_dmstate); out: - iput(inode); + dput(dentry); return error; } STATIC int xfs_attrlist_by_handle( - xfs_mount_t *mp, void __user *arg, - struct inode *parinode) + struct file *parfilp) { - int error; + int error = -ENOMEM; attrlist_cursor_kern_t *cursor; xfs_fsop_attrlist_handlereq_t al_hreq; - struct inode *inode; + struct dentry *dentry; char *kbuf; if (!capable(CAP_SYS_ADMIN)) @@ -448,16 +413,16 @@ if (al_hreq.flags & ~(ATTR_ROOT | ATTR_SECURE)) return -XFS_ERROR(EINVAL); - error = xfs_vget_fsop_handlereq(mp, parinode, &al_hreq.hreq, &inode); - if (error) - goto out; + dentry = xfs_handlereq_to_dentry(parfilp, &al_hreq.hreq); + if (IS_ERR(dentry)) + return PTR_ERR(dentry); kbuf = kmalloc(al_hreq.buflen, GFP_KERNEL); if (!kbuf) - goto out_vn_rele; + goto out_dput; cursor = (attrlist_cursor_kern_t *)&al_hreq.pos; - error = xfs_attr_list(XFS_I(inode), kbuf, al_hreq.buflen, + error = -xfs_attr_list(XFS_I(dentry->d_inode), kbuf, al_hreq.buflen, al_hreq.flags, cursor); if (error) goto out_kfree; @@ -467,10 +432,9 @@ out_kfree: kfree(kbuf); - out_vn_rele: - iput(inode); - out: - return -error; + out_dput: + dput(dentry); + return error; } int @@ -545,15 +509,13 @@ STATIC int xfs_attrmulti_by_handle( - xfs_mount_t *mp, - void __user *arg, struct file *parfilp, - struct inode *parinode) + void __user *arg) { int error; xfs_attr_multiop_t *ops; xfs_fsop_attrmulti_handlereq_t am_hreq; - struct inode *inode; + struct dentry *dentry; unsigned int i, size; char *attr_name; @@ -562,19 +524,19 @@ if (copy_from_user(&am_hreq, arg, sizeof(xfs_fsop_attrmulti_handlereq_t))) return -XFS_ERROR(EFAULT); - error = xfs_vget_fsop_handlereq(mp, parinode, &am_hreq.hreq, &inode); - if (error) - goto out; + dentry = xfs_handlereq_to_dentry(parfilp, &am_hreq.hreq); + if (IS_ERR(dentry)) + return PTR_ERR(dentry); error = E2BIG; size = am_hreq.opcount * sizeof(xfs_attr_multiop_t); if (!size || size > 16 * PAGE_SIZE) - goto out_vn_rele; + goto out_dput; error = ENOMEM; ops = kmalloc(size, GFP_KERNEL); if (!ops) - goto out_vn_rele; + goto out_dput; error = EFAULT; if (copy_from_user(ops, am_hreq.ops, size)) @@ -596,25 +558,28 @@ switch (ops[i].am_opcode) { case ATTR_OP_GET: - ops[i].am_error = xfs_attrmulti_attr_get(inode, - attr_name, ops[i].am_attrvalue, - &ops[i].am_length, ops[i].am_flags); + ops[i].am_error = xfs_attrmulti_attr_get( + dentry->d_inode, attr_name, + ops[i].am_attrvalue, &ops[i].am_length, + ops[i].am_flags); break; case ATTR_OP_SET: ops[i].am_error = mnt_want_write(parfilp->f_path.mnt); if (ops[i].am_error) break; - ops[i].am_error = xfs_attrmulti_attr_set(inode, - attr_name, ops[i].am_attrvalue, - ops[i].am_length, ops[i].am_flags); + ops[i].am_error = xfs_attrmulti_attr_set( + dentry->d_inode, attr_name, + ops[i].am_attrvalue, ops[i].am_length, + ops[i].am_flags); mnt_drop_write(parfilp->f_path.mnt); break; case ATTR_OP_REMOVE: ops[i].am_error = mnt_want_write(parfilp->f_path.mnt); if (ops[i].am_error) break; - ops[i].am_error = xfs_attrmulti_attr_remove(inode, - attr_name, ops[i].am_flags); + ops[i].am_error = xfs_attrmulti_attr_remove( + dentry->d_inode, attr_name, + ops[i].am_flags); mnt_drop_write(parfilp->f_path.mnt); break; default: @@ -628,9 +593,8 @@ kfree(attr_name); out_kfree_ops: kfree(ops); - out_vn_rele: - iput(inode); - out: + out_dput: + dput(dentry); return -error; } @@ -1421,23 +1385,23 @@ if (copy_from_user(&hreq, arg, sizeof(xfs_fsop_handlereq_t))) return -XFS_ERROR(EFAULT); - return xfs_open_by_handle(mp, &hreq, filp, inode); + return xfs_open_by_handle(filp, &hreq); } case XFS_IOC_FSSETDM_BY_HANDLE: - return xfs_fssetdm_by_handle(mp, arg, inode); + return xfs_fssetdm_by_handle(filp, arg); case XFS_IOC_READLINK_BY_HANDLE: { xfs_fsop_handlereq_t hreq; if (copy_from_user(&hreq, arg, sizeof(xfs_fsop_handlereq_t))) return -XFS_ERROR(EFAULT); - return xfs_readlink_by_handle(mp, &hreq, inode); + return xfs_readlink_by_handle(filp, &hreq); } case XFS_IOC_ATTRLIST_BY_HANDLE: - return xfs_attrlist_by_handle(mp, arg, inode); + return xfs_attrlist_by_handle(arg, filp); case XFS_IOC_ATTRMULTI_BY_HANDLE: - return xfs_attrmulti_by_handle(mp, arg, filp, inode); + return xfs_attrmulti_by_handle(filp, arg); case XFS_IOC_SWAPEXT: { struct xfs_swapext sxp; Index: xfs/fs/xfs/linux-2.6/xfs_ioctl.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_ioctl.h 2008-12-29 01:09:51.000000000 +0000 +++ xfs/fs/xfs/linux-2.6/xfs_ioctl.h 2008-12-29 01:11:14.000000000 +0000 @@ -34,16 +34,13 @@ extern int xfs_open_by_handle( - xfs_mount_t *mp, - xfs_fsop_handlereq_t *hreq, struct file *parfilp, - struct inode *parinode); + xfs_fsop_handlereq_t *hreq); extern int xfs_readlink_by_handle( - xfs_mount_t *mp, - xfs_fsop_handlereq_t *hreq, - struct inode *parinode); + struct file *parfilp, + xfs_fsop_handlereq_t *hreq); extern int xfs_attrmulti_attr_get( @@ -67,6 +64,12 @@ char *name, __uint32_t flags); +extern struct dentry * +xfs_handle_to_dentry( + struct file *parfilp, + void __user *uhandle, + u32 hlen); + extern long xfs_file_ioctl( struct file *filp, Index: xfs/fs/xfs/linux-2.6/xfs_ioctl32.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_ioctl32.c 2008-12-29 01:09:51.000000000 +0000 +++ xfs/fs/xfs/linux-2.6/xfs_ioctl32.c 2008-12-29 03:01:34.000000000 +0000 @@ -340,96 +340,24 @@ return 0; } -/* - * Convert userspace handle data into inode. - * - * We use the fact that all the fsop_handlereq ioctl calls have a data - * structure argument whose first component is always a xfs_fsop_handlereq_t, - * so we can pass that sub structure into this handy, shared routine. - * - * If no error, caller must always iput the returned inode. - */ -STATIC int -xfs_vget_fsop_handlereq_compat( - xfs_mount_t *mp, - struct inode *parinode, /* parent inode pointer */ - compat_xfs_fsop_handlereq_t *hreq, - struct inode **inode) +STATIC struct dentry * +xfs_compat_handlereq_to_dentry( + struct file *parfilp, + compat_xfs_fsop_handlereq_t *hreq) { - void __user *hanp; - size_t hlen; - xfs_fid_t *xfid; - xfs_handle_t *handlep; - xfs_handle_t handle; - xfs_inode_t *ip; - xfs_ino_t ino; - __u32 igen; - int error; - - /* - * Only allow handle opens under a directory. - */ - if (!S_ISDIR(parinode->i_mode)) - return XFS_ERROR(ENOTDIR); - - hanp = compat_ptr(hreq->ihandle); - hlen = hreq->ihandlen; - handlep = &handle; - - if (hlen < sizeof(handlep->ha_fsid) || hlen > sizeof(*handlep)) - return XFS_ERROR(EINVAL); - if (copy_from_user(handlep, hanp, hlen)) - return XFS_ERROR(EFAULT); - if (hlen < sizeof(*handlep)) - memset(((char *)handlep) + hlen, 0, sizeof(*handlep) - hlen); - if (hlen > sizeof(handlep->ha_fsid)) { - if (handlep->ha_fid.fid_len != - (hlen - sizeof(handlep->ha_fsid) - - sizeof(handlep->ha_fid.fid_len)) || - handlep->ha_fid.fid_pad) - return XFS_ERROR(EINVAL); - } - - /* - * Crack the handle, obtain the inode # & generation # - */ - xfid = (struct xfs_fid *)&handlep->ha_fid; - if (xfid->fid_len == sizeof(*xfid) - sizeof(xfid->fid_len)) { - ino = xfid->fid_ino; - igen = xfid->fid_gen; - } else { - return XFS_ERROR(EINVAL); - } - - /* - * Get the XFS inode, building a Linux inode to go with it. - */ - error = xfs_iget(mp, NULL, ino, 0, XFS_ILOCK_SHARED, &ip, 0); - if (error) - return error; - if (ip == NULL) - return XFS_ERROR(EIO); - if (ip->i_d.di_gen != igen) { - xfs_iput_new(ip, XFS_ILOCK_SHARED); - return XFS_ERROR(ENOENT); - } - - xfs_iunlock(ip, XFS_ILOCK_SHARED); - - *inode = VFS_I(ip); - return 0; + return xfs_handle_to_dentry(parfilp, + compat_ptr(hreq->ihandle), hreq->ihandlen); } STATIC int xfs_compat_attrlist_by_handle( - xfs_mount_t *mp, - void __user *arg, - struct inode *parinode) + struct file *parfilp, + void __user *arg) { int error; attrlist_cursor_kern_t *cursor; compat_xfs_fsop_attrlist_handlereq_t al_hreq; - struct inode *inode; + struct dentry *dentry; char *kbuf; if (!capable(CAP_SYS_ADMIN)) @@ -446,17 +374,17 @@ if (al_hreq.flags & ~(ATTR_ROOT | ATTR_SECURE)) return -XFS_ERROR(EINVAL); - error = xfs_vget_fsop_handlereq_compat(mp, parinode, &al_hreq.hreq, - &inode); - if (error) - goto out; + dentry = xfs_compat_handlereq_to_dentry(parfilp, &al_hreq.hreq); + if (IS_ERR(dentry)) + return PTR_ERR(dentry); + error = -ENOMEM; kbuf = kmalloc(al_hreq.buflen, GFP_KERNEL); if (!kbuf) - goto out_vn_rele; + goto out_dput; cursor = (attrlist_cursor_kern_t *)&al_hreq.pos; - error = xfs_attr_list(XFS_I(inode), kbuf, al_hreq.buflen, + error = -xfs_attr_list(XFS_I(dentry->d_inode), kbuf, al_hreq.buflen, al_hreq.flags, cursor); if (error) goto out_kfree; @@ -466,22 +394,20 @@ out_kfree: kfree(kbuf); - out_vn_rele: - iput(inode); - out: - return -error; + out_dput: + dput(dentry); + return error; } STATIC int xfs_compat_attrmulti_by_handle( - xfs_mount_t *mp, - void __user *arg, - struct inode *parinode) + struct file *parfilp, + void __user *arg) { int error; compat_xfs_attr_multiop_t *ops; compat_xfs_fsop_attrmulti_handlereq_t am_hreq; - struct inode *inode; + struct dentry *dentry; unsigned int i, size; char *attr_name; @@ -491,20 +417,19 @@ sizeof(compat_xfs_fsop_attrmulti_handlereq_t))) return -XFS_ERROR(EFAULT); - error = xfs_vget_fsop_handlereq_compat(mp, parinode, &am_hreq.hreq, - &inode); - if (error) - goto out; + dentry = xfs_compat_handlereq_to_dentry(parfilp, &am_hreq.hreq); + if (IS_ERR(dentry)) + return PTR_ERR(dentry); error = E2BIG; size = am_hreq.opcount * sizeof(compat_xfs_attr_multiop_t); if (!size || size > 16 * PAGE_SIZE) - goto out_vn_rele; + goto out_dput; error = ENOMEM; ops = kmalloc(size, GFP_KERNEL); if (!ops) - goto out_vn_rele; + goto out_dput; error = EFAULT; if (copy_from_user(ops, compat_ptr(am_hreq.ops), size)) @@ -527,20 +452,21 @@ switch (ops[i].am_opcode) { case ATTR_OP_GET: - ops[i].am_error = xfs_attrmulti_attr_get(inode, - attr_name, + ops[i].am_error = xfs_attrmulti_attr_get( + dentry->d_inode, attr_name, compat_ptr(ops[i].am_attrvalue), &ops[i].am_length, ops[i].am_flags); break; case ATTR_OP_SET: - ops[i].am_error = xfs_attrmulti_attr_set(inode, - attr_name, + ops[i].am_error = xfs_attrmulti_attr_set( + dentry->d_inode, attr_name, compat_ptr(ops[i].am_attrvalue), ops[i].am_length, ops[i].am_flags); break; case ATTR_OP_REMOVE: - ops[i].am_error = xfs_attrmulti_attr_remove(inode, - attr_name, ops[i].am_flags); + ops[i].am_error = xfs_attrmulti_attr_remove( + dentry->d_inode, attr_name, + ops[i].am_flags); break; default: ops[i].am_error = EINVAL; @@ -553,22 +479,20 @@ kfree(attr_name); out_kfree_ops: kfree(ops); - out_vn_rele: - iput(inode); - out: + out_dput: + dput(dentry); return -error; } STATIC int xfs_compat_fssetdm_by_handle( - xfs_mount_t *mp, - void __user *arg, - struct inode *parinode) + struct file *parfilp, + void __user *arg) { int error; struct fsdmidata fsd; compat_xfs_fsop_setdm_handlereq_t dmhreq; - struct inode *inode; + struct dentry *dentry; if (!capable(CAP_MKNOD)) return -XFS_ERROR(EPERM); @@ -576,12 +500,11 @@ sizeof(compat_xfs_fsop_setdm_handlereq_t))) return -XFS_ERROR(EFAULT); - error = xfs_vget_fsop_handlereq_compat(mp, parinode, &dmhreq.hreq, - &inode); - if (error) - return -error; + dentry = xfs_compat_handlereq_to_dentry(parfilp, &dmhreq.hreq); + if (IS_ERR(dentry)) + return PTR_ERR(dentry); - if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) { + if (IS_IMMUTABLE(dentry->d_inode) || IS_APPEND(dentry->d_inode)) { error = -XFS_ERROR(EPERM); goto out; } @@ -591,11 +514,11 @@ goto out; } - error = -xfs_set_dmattrs(XFS_I(inode), fsd.fsd_dmevmask, + error = -xfs_set_dmattrs(XFS_I(dentry->d_inode), fsd.fsd_dmevmask, fsd.fsd_dmstate); out: - iput(inode); + dput(dentry); return error; } @@ -724,21 +647,21 @@ if (xfs_compat_handlereq_copyin(&hreq, arg)) return -XFS_ERROR(EFAULT); - return xfs_open_by_handle(mp, &hreq, filp, inode); + return xfs_open_by_handle(filp, &hreq); } case XFS_IOC_READLINK_BY_HANDLE_32: { struct xfs_fsop_handlereq hreq; if (xfs_compat_handlereq_copyin(&hreq, arg)) return -XFS_ERROR(EFAULT); - return xfs_readlink_by_handle(mp, &hreq, inode); + return xfs_readlink_by_handle(filp, &hreq); } case XFS_IOC_ATTRLIST_BY_HANDLE_32: - return xfs_compat_attrlist_by_handle(mp, arg, inode); + return xfs_compat_attrlist_by_handle(filp, arg); case XFS_IOC_ATTRMULTI_BY_HANDLE_32: - return xfs_compat_attrmulti_by_handle(mp, arg, inode); + return xfs_compat_attrmulti_by_handle(filp, arg); case XFS_IOC_FSSETDM_BY_HANDLE_32: - return xfs_compat_fssetdm_by_handle(mp, arg, inode); + return xfs_compat_fssetdm_by_handle(filp, arg); default: return -XFS_ERROR(ENOIOCTLCMD); } From SRS0+0046145508e9135873a4+1955+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 30 05:52:24 2008 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 mBUBqOcB008179 for ; Tue, 30 Dec 2008 05:52:24 -0600 X-ASG-Debug-ID: 1230637944-1d2602a00000-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 CA9AE1796304 for ; Tue, 30 Dec 2008 03:52:24 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id r9hXw6AS4Lkvq4QA for ; Tue, 30 Dec 2008 03:52:24 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHd96-0005dC-E0; Tue, 30 Dec 2008 11:52:24 +0000 Date: Tue, 30 Dec 2008 06:52:24 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss , Mike Frysinger X-ASG-Orig-Subj: Re: [PATCH] xfs-cmds: fix parallel installs in include/ dirs Subject: Re: [PATCH] xfs-cmds: fix parallel installs in include/ dirs Message-ID: <20081230115224.GA24210@infradead.org> References: <49594CD9.3010402@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49594CD9.3010402@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: 1230637944 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean On Mon, Dec 29, 2008 at 04:19:05PM -0600, Eric Sandeen wrote: > This is for http://oss.sgi.com/bugzilla/show_bug.cgi?id=759 > "fix parallel issue with include/ symlinks" > > Doing something like "make -j2 install install-dev" would lead > to a race of removing & creating symlinks in include/ > > Thanks to Mike for reporting & suggesting the fix. Looks good and I've put in in my queue. Any chance I could motivate you to look over Mike's other build system changes in bugzilla? From SRS0+0046145508e9135873a4+1955+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 30 06:26:27 2008 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 mBUCQRBu010881 for ; Tue, 30 Dec 2008 06:26:27 -0600 X-ASG-Debug-ID: 1230639986-1d2603200000-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 29A291796BF3 for ; Tue, 30 Dec 2008 04:26:27 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id YDPWora2tc8FInax for ; Tue, 30 Dec 2008 04:26:27 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHdg2-0004QW-11; Tue, 30 Dec 2008 12:26:26 +0000 Date: Tue, 30 Dec 2008 07:26:26 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Mike Frysinger , Nathan Scott X-ASG-Orig-Subj: library placement Subject: library placement Message-ID: <20081230122626.GA14350@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: 1230639987 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean There's a three year old patch from Mike in bugzilla that stops symlimking the libaries into two different directories if they are in fact not actually different: http://oss.sgi.com/bugzilla/show_bug.cgi?id=430 After reviewing it again I don't see the point of having two copies names for them. The .so libraries should go into PKG_LIB_DIR (aka /lib in Debian) because need them at runtime, potentially from tools outside of /usr. The .a and .la libraries are purely development ones and should go into PKG_DEVLIB_DIR (aka /usr/lib in Debian) as we won't ever need them while running programs. Given that we're currently working on the xfsprogs 3.0.0 major release this might be the time to make this change. From SRS0+0046145508e9135873a4+1955+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 30 06:39:45 2008 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 mBUCdjJs011691 for ; Tue, 30 Dec 2008 06:39:45 -0600 X-ASG-Debug-ID: 1230640783-325b01380000-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 2A25351CFB for ; Tue, 30 Dec 2008 04:39:43 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id EHkek7U7qgpNXSnf for ; Tue, 30 Dec 2008 04:39:43 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHdst-0005tf-OQ; Tue, 30 Dec 2008 12:39:43 +0000 Date: Tue, 30 Dec 2008 07:39:43 -0500 From: Christoph Hellwig To: Nathan Scott Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: attr.5.gz placement Subject: attr.5.gz placement Message-ID: <20081230123943.GA22390@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: 1230640785 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean when I try a dpkg-buildpackage from the current git tree (+ Eric's configure fix to make it build) I get attr.5.gz included in both the attr and libattr1 package. Any idea where in the debhelper magic that could happen? From SRS0+0046145508e9135873a4+1955+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 30 06:49:41 2008 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 mBUCnfXM012600 for ; Tue, 30 Dec 2008 06:49:41 -0600 X-ASG-Debug-ID: 1230641377-1d0b03810000-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 91C4217967BE for ; Tue, 30 Dec 2008 04:49:37 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id BPX7TIT2MdAH3TqT for ; Tue, 30 Dec 2008 04:49:37 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHe2S-0006rm-Cw; Tue, 30 Dec 2008 12:49:36 +0000 Date: Tue, 30 Dec 2008 07:49:36 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: Mike Frysinger , xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfs-cmds: fix parallel installs in include/ dirs Subject: Re: [PATCH] xfs-cmds: fix parallel installs in include/ dirs Message-ID: <20081230124936.GA26322@infradead.org> References: <49594CD9.3010402@sandeen.net> <20081230115224.GA24210@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081230115224.GA24210@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: 1230641377 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean On Tue, Dec 30, 2008 at 06:52:24AM -0500, Christoph Hellwig wrote: > On Mon, Dec 29, 2008 at 04:19:05PM -0600, Eric Sandeen wrote: > > This is for http://oss.sgi.com/bugzilla/show_bug.cgi?id=759 > > "fix parallel issue with include/ symlinks" > > > > Doing something like "make -j2 install install-dev" would lead > > to a race of removing & creating symlinks in include/ > > > > Thanks to Mike for reporting & suggesting the fix. > > Looks good and I've put in in my queue. Actually spoken too soon. This breaks the acl build for me with: gcc -g -O2 -DNDEBUG -funsigned-char -fno-strict-aliasing -Wall -DVERSION=\"2.2.47\" -DLOCALEDIR=\"/usr/share/locale\" -DPACKAGE=\"acl\" -I../include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -include perm_copy.h -c acl_get_fd.c -fPIC -DPIC -o .libs/acl_get_fd.o acl_get_fd.c:27:24: error: acl/libacl.h: No such file or directory acl_get_fd.c: In function 'acl_get_fd': acl_get_fd.c:62: warning: implicit declaration of function 'acl_from_mode' acl_get_fd.c:62: warning: return makes pointer from integer without a cast It looks like the acl link in include/ doesn't get created properly with this patch. From vapier@gentoo.org Tue Dec 30 08:08:08 2008 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 mBUE86hl018283 for ; Tue, 30 Dec 2008 08:08:07 -0600 X-ASG-Debug-ID: 1230646084-118801360000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp.gentoo.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0948A51EED for ; Tue, 30 Dec 2008 06:08:04 -0800 (PST) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by cuda.sgi.com with ESMTP id FgExX6twhb3JNoNc for ; Tue, 30 Dec 2008 06:08:04 -0800 (PST) Received: from vapier.localnet (localhost [127.0.0.1]) by smtp.gentoo.org (Postfix) with ESMTP id 114096488C; Tue, 30 Dec 2008 14:07:32 +0000 (UTC) From: Mike Frysinger Organization: wh0rd.org To: Christoph Hellwig X-ASG-Orig-Subj: Re: [PATCH] xfs-cmds: fix parallel installs in include/ dirs Subject: Re: [PATCH] xfs-cmds: fix parallel installs in include/ dirs Date: Tue, 30 Dec 2008 09:07:30 -0500 User-Agent: KMail/1.10.3 (Linux/2.6.28; KDE/4.1.3; x86_64; ; ) Cc: Eric Sandeen , "xfs-oss" References: <49594CD9.3010402@sandeen.net> <20081230115224.GA24210@infradead.org> <20081230124936.GA26322@infradead.org> In-Reply-To: <20081230124936.GA26322@infradead.org> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart1970246.qyBhUC4vSn"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200812300907.31459.vapier@gentoo.org> X-Barracuda-Connect: smtp.gentoo.org[140.211.166.183] X-Barracuda-Start-Time: 1230646085 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.13988 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean --nextPart1970246.qyBhUC4vSn Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline On Tuesday 30 December 2008 07:49:36 Christoph Hellwig wrote: > On Tue, Dec 30, 2008 at 06:52:24AM -0500, Christoph Hellwig wrote: > > On Mon, Dec 29, 2008 at 04:19:05PM -0600, Eric Sandeen wrote: > > > This is for http://oss.sgi.com/bugzilla/show_bug.cgi?id=3D759 > > > "fix parallel issue with include/ symlinks" > > > > > > Doing something like "make -j2 install install-dev" would lead > > > to a race of removing & creating symlinks in include/ > > > > > > Thanks to Mike for reporting & suggesting the fix. > > > > Looks good and I've put in in my queue. > > Actually spoken too soon. This breaks the acl build for me with: > > gcc -g -O2 -DNDEBUG -funsigned-char -fno-strict-aliasing -Wall > -DVERSION=3D\"2.2.47\" -DLOCALEDIR=3D\"/usr/share/locale\" > -DPACKAGE=3D\"acl\" -I../include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=3D64 > -include perm_copy.h -c acl_get_fd.c -fPIC -DPIC -o .libs/acl_get_fd.o > acl_get_fd.c:27:24: error: acl/libacl.h: No such file or directory > acl_get_fd.c: In function 'acl_get_fd': > acl_get_fd.c:62: warning: implicit declaration of function > 'acl_from_mode' > acl_get_fd.c:62: warning: return makes pointer from integer without a > cast > > It looks like the acl link in include/ doesn't get created properly > with this patch. acl-2.2.47 built fine for me with `./configure && make` and this patch ... that said, if the only purpose of this is to make sure there are symlinks i= n=20 include/, why not do it at the tail end of configure ? then there will be = no=20 weird parallel magic to worry about, and everything will always be availabl= e=20 once configure has finished. -mike --nextPart1970246.qyBhUC4vSn Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (GNU/Linux) iQIcBAABAgAGBQJJWisjAAoJEEFjO5/oN/WBcWYP/01WT05fKKeyMNDfGP0jFkLP iTX6idpM966Tw4tJvo6i6gQDXGvTPKkZY9MpjyjHRODEv73weRYr1hO6PLcPZhzG FOW0SIgIt4QxGH0S7LpZkEtTkwsri1/QLQL5fw7TDCJ8bLgQpvEsABh9AzTqmXvU lXThsXGYepFAUTSDVl7j3hIKlqrcRaOzfOYwPzEXWWCvgZ+S2dRxAVE2hqTOPrrN SEf2mj4OPoWA8swX2XSzfoDrdfI1EckVkvePoDQXljflR0aAbOol9S6vJDXb/7fv 1UGYql0MEWBHS+YgJOtUaIobrvNy+xwHvnvRVnxNsbGcFzsbKXSnNfMQr6yn7c0J 6yCMvWtp8T7+4m8+lYZpDAllFUxlQ831Jx7Oqks1W5B7UbnqXIHRAFO40Xfqtme+ Em1yIoxebRlXUAP9JVXM4hzTEv0okCaag36u9hzb/l+J/6SKwWOeQUDCOJH+FtkK 2zp9jIiuClirh2qf/38alMzQTvglS3+p1+pWWqR5W4hvfPs9JX54jfv7iU1YFgES OUBtj5maoTKkSxAeayqsSwPjHMCPy8xxzSzlWMjyXiiyVTDSdSkg70bzcXPZ4jfV RJo0nK5a20DJfjeodPZLE/Zwnk75wuCaOXCpKDxsSXCnPGFBuIAPPPYzKW4LO33v u5orxIlOtXuochGllN89 =zBn6 -----END PGP SIGNATURE----- --nextPart1970246.qyBhUC4vSn-- From matthew.garman@gmail.com Tue Dec 30 08:20:32 2008 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 mBUEKWAR019596 for ; Tue, 30 Dec 2008 08:20:32 -0600 X-ASG-Debug-ID: 1230646830-676401e40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from qw-out-1920.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B2C791797185 for ; Tue, 30 Dec 2008 06:20:30 -0800 (PST) Received: from qw-out-1920.google.com (qw-out-1920.google.com [74.125.92.150]) by cuda.sgi.com with ESMTP id 9BDYDKpHd8OS2IRf for ; Tue, 30 Dec 2008 06:20:30 -0800 (PST) Received: by qw-out-1920.google.com with SMTP id 5so17253074qwc.32 for ; Tue, 30 Dec 2008 06:20:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:received:date:from:to:cc :subject:message-id:references:mime-version:content-type :content-disposition:in-reply-to:user-agent; bh=kpeObZXGtCLgRjUBJMSLM0E44cjID3rw3oMLB7qSCJg=; b=EmA2dF5QMgrh6i+9FjNUNhI1XzBTvMSWZOOwX6iconiD8eAPGmTyiP2iGjsyoh9FU/ cEt8v77AZ7sj67rPReRwnIEV/HTUPV+6F8qmxzLMXdXLzqSOmELAHSjrHkLGePlekxOk uBXdJKJIdk5thcB3Ar/N6+/ZzcFue1ScxonCY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; b=d1oHzOXZpBqqbunnfN/Sj03os2witUeeIxtSOWSFaZVafeecn2wJCqg6inKlvqTuxU zqbzg4oJvtUzYaF1dBJ1mgdX4rjBMExh6DKQGDzbVzRtE9jf0rFMHtRyBx8QqKY5MHjo c/nzWHpQWzZpCBKe4yiJhc1gmefxXypsgXCcs= Received: by 10.215.101.7 with SMTP id d7mr12428684qam.152.1230646829068; Tue, 30 Dec 2008 06:20:29 -0800 (PST) Received: from sewage.raw-sewage.fake (c-67-184-93-85.hsd1.il.comcast.net [67.184.93.85]) by mx.google.com with ESMTPS id 5sm15355156ywl.41.2008.12.30.06.20.27 (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 30 Dec 2008 06:20:28 -0800 (PST) Received: by sewage.raw-sewage.fake (Postfix, from userid 1000) id C853AD52D7; Tue, 30 Dec 2008 08:20:26 -0600 (CST) Date: Tue, 30 Dec 2008 08:20:26 -0600 From: Matt Garman To: Justin Piszcz Cc: linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, xfs@oss.sgi.com, smartmontools-support@lists.sourceforge.net, Alan Piszcz X-ASG-Orig-Subj: Re: mismatch_cnt, random bitflips, silent corruption(?), mdadm/sw raid[156] Subject: Re: mismatch_cnt, random bitflips, silent corruption(?), mdadm/sw raid[156] Message-ID: <20081230142026.GB3549@sewage.raw-sewage.fake> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.16 (2007-06-09) X-Barracuda-Connect: qw-out-1920.google.com[74.125.92.150] X-Barracuda-Start-Time: 1230646830 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.13990 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean On Thu, Dec 25, 2008 at 01:04:07PM -0500, Justin Piszcz wrote: > Options/alternatives for maintaining data integrity? > > 1. Obviously DVD and/or LTO-tape (multiple copies of data at rest) > http://epoka.dk/media/Linear_Tape_Open_(LTO)_Ultrium_Data_Cartridges.pdf > -> For LTO-2/LTO-3 > -> Uncorrected bit error rate 1x10-17 1x10-17 > -> Undetected bit error rate 1x10-27 1x10-27 > > 2. ZFS, but only runs in user-space in Linux. > > 3. Keep an md5sum for each file on the filesystem and run daily > checks? I've recently started using par2[1][2] on backed up files. I just started doing this, so don't know how it will work in the long run. Can't hurt, anyway, other than taking up more space. [1] http://www.par2.net/ [2] http://parchive.sourceforge.net/ From www-data@hiphop-magazine.com Tue Dec 30 09:32:55 2008 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=AWL,BAYES_50,HTML_MESSAGE, WHOIS_DMNBYPROXY,WHOIS_NETSOLPR 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 mBUFWl9a024799 for ; Tue, 30 Dec 2008 09:32:49 -0600 X-ASG-Debug-ID: 1230651165-1188032a0000-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 8E5D552276 for ; Tue, 30 Dec 2008 07:32:45 -0800 (PST) Received: from hiphop-magazine.com (hiphop-magazine.com [85.214.133.137]) by cuda.sgi.com with ESMTP id dOZC33BRdnpiAQ7W for ; Tue, 30 Dec 2008 07:32:45 -0800 (PST) Received: by hiphop-magazine.com (Postfix, from userid 33) id 6B8B7499144; Tue, 30 Dec 2008 16:31:49 +0100 (CET) To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Yo! PR: Bigg Jigg Releases New Smash Single "Streetz On Lock", Preps New Album Subject: Yo! PR: Bigg Jigg Releases New Smash Single "Streetz On Lock", Preps New Album Date: Tue, 30 Dec 2008 16:31:49 +0100 From: Yo! Raps Reply-To: Yo! Raps Message-ID: <5212153ae30b9024bc443a074076bb28@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: 91.3.150.158 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: 1230651166 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5058 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=HTML_MESSAGE, MAILTO_TO_SPAM_ADDR X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.13994 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 MAILTO_TO_SPAM_ADDR URI: Includes a link to a likely spammer email 0.00 HTML_MESSAGE BODY: HTML included in message X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 2442 Please contact me if you place any of the following information on your site, or to request an interview. Thank you for your time! Yo! PR: Bigg Jigg Releases New Smash Single "Streetz On Lock", Preps New Album The combination of Chi-Town winds and Miami sun mixed with a lethal stay fly swagg, the gift of lyricism, and a well deserved 05' run on 106 & Park's Freestyle Friday not only created a monster, but it fueled a born hustla and business man who goes by the name of Bigg Jigg aka The Go 2 Man. Oh so vicious and violent in the vocal booth, Bigg Jigg got that product to keep the streets on lock and everything it takes to hit that Billboard spot! DOWNLOAD: Bigg Jigg - Streetz On Lock Clean: www.sendspace.com/file/epj29l Dirty: www.sendspace.com/file/yj9kuz DOWNLOAD: Bigg Jigg - Fly As A Plane Clean: www.sendspace.com/file/nvvb7v Dirty: www.sendspace.com/file/5kev8b Below you can check out Jigg's video for "Fly As A Plane" featuring VH1's Jessica aka "Rabbit" from Real Chance At Love and Bizzy Bone from Bone Thugs-N-Harmony. VIDEO: Bigg Jigg - Fly As A Plane http://sg.video.yahoo.com/watch/3733022/10257623 Bigg Jigg's video for his second single "Streetz On Lock" will be out first quarter of 2009. His anticipated official album "The Go 2 Man" will be released sometime in 2009. In the meantime buy Bigg Jigg's latest mixtape release "Midwest Muscle" on Amazon. BUY LINK: Bigg Jigg - Midwest Muscle www.amazon.com/Bigg-Jigg/dp/B001DDNYA6 For interviews, drop requests, mixtape hostings, collaborations, bookings, and media inquiries, please email heyy68@yahoo.com or call 561-891-7536. Official Website: www.biggjigg.com MySpace: www.myspace.com/biggjiggthebreadwinner Street Team: www.myspace.com/biggjiggstreetteam 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 SRS0+0046145508e9135873a4+1955+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 30 09:57:32 2008 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 mBUFvQgY026562 for ; Tue, 30 Dec 2008 09:57:28 -0600 X-ASG-Debug-ID: 1230652646-78bb00400000-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 886A717978B9 for ; Tue, 30 Dec 2008 07:57:26 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id G95GuHjDHms6b9YO for ; Tue, 30 Dec 2008 07:57:26 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHgyE-0005TK-2t; Tue, 30 Dec 2008 15:57:26 +0000 Date: Tue, 30 Dec 2008 10:57:26 -0500 From: Christoph Hellwig To: Christoph Hellwig , xfs@oss.sgi.com, John Stanley X-ASG-Orig-Subj: Re: [PATCH, RFC] directory offset overflows in 2.6.28 Subject: Re: [PATCH, RFC] directory offset overflows in 2.6.28 Message-ID: <20081230155726.GA30568@infradead.org> References: <20081229220745.GA12966@infradead.org> <20081230001117.GA5220@disturbed> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081230001117.GA5220@disturbed> 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: 1230652646 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean On Tue, Dec 30, 2008 at 11:11:17AM +1100, Dave Chinner wrote: > On Mon, Dec 29, 2008 at 05:07:45PM -0500, Christoph Hellwig wrote: > > The patch below is a dumb version of just putting back the masking, > > to make sure we have the same behavior as in 2.6.27 and earlier. > > I think we should at least hide it in a macro that is well-commented, > > but I suspect we also need to make sure that we never ever get bigger > > offsets in directories in some way. > > I think we need that macro sooner rather than later ;) > In this case, you can do the masking at the time cook is > assigned. I haven't checked, but I suspect the rest will be the > same. That will make the patch less invasive and with a macro > somewhat cleaner... That way we could replace two assignment by one one time each in xfs_dir2_leaf.c and xfs_dir2_block.c. I started working on the macro, but it seems even more hacky. When looking at the big picture we have two problems: - the end of directory marker which always seems to be always too large for 32bit values for 32 bit indices - directories that actually are too large to be represented using 32 bit signed offsets. I guess we just can't support those for apps using the 32bit readdir interface and the EOVERFLOW is valid for those. The current approach as in < 2.6.28 and with this patch breaks that second case in subtile ways. So, I'd just push the first hacky opencoded patch into 2.6.29 and -stable now to revert to the old behaviour with all it's faults, and in the meantime I'll look into a proper way finding a better end of directory indicator. That should also help Russell's BSD concerns. From sandeen@sandeen.net Tue Dec 30 10:56:09 2008 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 mBUGu8Ps021014 for ; Tue, 30 Dec 2008 10:56:09 -0600 X-ASG-Debug-ID: 1230656167-792b020a0000-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 57C571797A1B for ; Tue, 30 Dec 2008 08:56:07 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id HPkz3nGXr4sDdMfS for ; Tue, 30 Dec 2008 08:56:07 -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 E4599A4B09E; Tue, 30 Dec 2008 10:55:35 -0600 (CST) Message-ID: <495A5287.5080900@sandeen.net> Date: Tue, 30 Dec 2008 10:55:35 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: Andreas Gruenbacher , Nathan Scott , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: new acl tarball release? Subject: Re: new acl tarball release? References: <20081226195506.GA4173@infradead.org> In-Reply-To: <20081226195506.GA4173@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: 1230656168 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.13999 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > The current acl 2.2.47 release has a quite nasty bug about following > symlinks, which is already fixes in the current ptools/cvs/git tree: > > http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=499076 > http://oss.sgi.com/bugzilla/show_bug.cgi?id=790 > > Any chance we can put out a 2.2.48 release with that fix so that the > broken version doesn't end up in distros? > > The oss bugzilla also has another patch that needs reviewing. > > AFAICS the same problems symlink walking code is also used in attr, > so it could use an update, too. If we can hang on just a bit I see that Fedora is carrying about 6 patches, I'll get those submitted Real Soon Now. -Eric From SRS0+0046145508e9135873a4+1955+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 30 11:18:58 2008 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 mBUHIv1P023510 for ; Tue, 30 Dec 2008 11:18:58 -0600 X-ASG-Debug-ID: 1230657537-78c003170000-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 BD6D61797E29 for ; Tue, 30 Dec 2008 09:18:57 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id H3TmoDLquI1wb6zU for ; Tue, 30 Dec 2008 09:18:57 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHiEb-00037x-Qs; Tue, 30 Dec 2008 17:18:25 +0000 Date: Tue, 30 Dec 2008 12:18:25 -0500 From: Christoph Hellwig To: Mike Frysinger Cc: Christoph Hellwig , Eric Sandeen , xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfs-cmds: fix parallel installs in include/ dirs Subject: Re: [PATCH] xfs-cmds: fix parallel installs in include/ dirs Message-ID: <20081230171825.GA31624@infradead.org> References: <49594CD9.3010402@sandeen.net> <20081230115224.GA24210@infradead.org> <20081230124936.GA26322@infradead.org> <200812300907.31459.vapier@gentoo.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200812300907.31459.vapier@gentoo.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: 1230657537 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean On Tue, Dec 30, 2008 at 09:07:30AM -0500, Mike Frysinger wrote: > acl-2.2.47 built fine for me with `./configure && make` and this patch ... Works now after a make distclean for me. > that said, if the only purpose of this is to make sure there are symlinks in > include/, why not do it at the tail end of configure ? then there will be no > weird parallel magic to worry about, and everything will always be available > once configure has finished. I'll leave that to Eric or anyone else who wants to play a build system expert on TV :) From SRS0+0046145508e9135873a4+1955+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 30 11:40:07 2008 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_32, J_CHICKENPOX_43,J_CHICKENPOX_62,J_CHICKENPOX_63,J_CHICKENPOX_64, J_CHICKENPOX_65,J_CHICKENPOX_66,J_CHICKENPOX_74 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 mBUHe7ef029955 for ; Tue, 30 Dec 2008 11:40:07 -0600 X-ASG-Debug-ID: 1230658806-072102e00000-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 DB64F17980BF for ; Tue, 30 Dec 2008 09:40:06 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 50jycFIiLPRq8k32 for ; Tue, 30 Dec 2008 09:40:06 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHiZ5-0000f8-Pg for xfs@oss.sgi.com; Tue, 30 Dec 2008 17:39:35 +0000 Date: Tue, 30 Dec 2008 12:39:35 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 20/20] xfsprogs: resync libxfs with the kernel code Subject: Re: [PATCH 20/20] xfsprogs: resync libxfs with the kernel code Message-ID: <20081230173935.GA31861@infradead.org> References: <20081222163831.755809000@bombadil.infradead.org> <20081222164412.220377000@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081222164412.220377000@bombadil.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: 1230658806 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean I know this is a lot of churn, but can I get a review for this please? On Mon, Dec 22, 2008 at 11:38:51AM -0500, Christoph Hellwig wrote: > Also use the kernel xfs_iread now instead of a duplicated version. > > > > Signed-off-by: Christoph Hellwig > > Index: xfs-cmds/xfsprogs/include/xfs_ag.h > =================================================================== > --- xfs-cmds.orig/xfsprogs/include/xfs_ag.h 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/include/xfs_ag.h 2008-12-06 20:05:49.000000000 +0100 > @@ -91,6 +91,8 @@ > #define XFS_AGF_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGF_DADDR(mp)) > #define XFS_BUF_TO_AGF(bp) ((xfs_agf_t *)XFS_BUF_PTR(bp)) > > +extern int xfs_read_agf(struct xfs_mount *mp, struct xfs_trans *tp, > + xfs_agnumber_t agno, int flags, struct xfs_buf **bpp); > > /* > * Size of the unlinked inode hash table in the agi. > @@ -142,6 +144,9 @@ > #define XFS_AGI_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGI_DADDR(mp)) > #define XFS_BUF_TO_AGI(bp) ((xfs_agi_t *)XFS_BUF_PTR(bp)) > > +extern int xfs_read_agi(struct xfs_mount *mp, struct xfs_trans *tp, > + xfs_agnumber_t agno, struct xfs_buf **bpp); > + > /* > * The third a.g. block contains the a.g. freelist, an array > * of block pointers to blocks owned by the allocation btree code. > @@ -204,6 +209,11 @@ > #endif > } xfs_perag_t; > > +/* > + * tags for inode radix tree > + */ > +#define XFS_ICI_RECLAIM_TAG 0 /* inode is to be reclaimed */ > + > #define XFS_AG_MAXLEVELS(mp) ((mp)->m_ag_maxlevels) > #define XFS_MIN_FREELIST_RAW(bl,cl,mp) \ > (MIN(bl + 1, XFS_AG_MAXLEVELS(mp)) + MIN(cl + 1, XFS_AG_MAXLEVELS(mp))) > Index: xfs-cmds/xfsprogs/include/xfs_bmap.h > =================================================================== > --- xfs-cmds.orig/xfsprogs/include/xfs_bmap.h 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/include/xfs_bmap.h 2008-12-06 20:05:49.000000000 +0100 > @@ -356,15 +356,18 @@ > xfs_bmap_free_t *flist, /* i/o: list extents to free */ > int *committed); /* xact committed or not */ > > +/* bmap to userspace formatter - copy to user & advance pointer */ > +typedef int (*xfs_bmap_format_t)(void **, struct getbmapx *, int *); > + > /* > - * Fcntl interface to xfs_bmapi. > + * Get inode's extents as described in bmv, and format for output. > */ > int /* error code */ > xfs_getbmap( > xfs_inode_t *ip, > - struct getbmap *bmv, /* user bmap structure */ > - void __user *ap, /* pointer to user's array */ > - int iflags); /* interface flags */ > + struct getbmapx *bmv, /* user bmap structure */ > + xfs_bmap_format_t formatter, /* format to user */ > + void *arg); /* formatter arg */ > > /* > * Check if the endoff is outside the last extent. If so the caller will grow > Index: xfs-cmds/xfsprogs/include/xfs_dfrag.h > =================================================================== > --- xfs-cmds.orig/xfsprogs/include/xfs_dfrag.h 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/include/xfs_dfrag.h 2008-12-06 20:05:49.000000000 +0100 > @@ -46,7 +46,7 @@ > /* > * Syscall interface for xfs_swapext > */ > -int xfs_swapext(struct xfs_swapext __user *sx); > +int xfs_swapext(struct xfs_swapext *sx); > > int xfs_swap_extents(struct xfs_inode *ip, struct xfs_inode *tip, > struct xfs_swapext *sxp); > Index: xfs-cmds/xfsprogs/include/xfs_dinode.h > =================================================================== > --- xfs-cmds.orig/xfsprogs/include/xfs_dinode.h 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/include/xfs_dinode.h 2008-12-06 20:05:49.000000000 +0100 > @@ -18,32 +18,29 @@ > #ifndef __XFS_DINODE_H__ > #define __XFS_DINODE_H__ > > -struct xfs_buf; > -struct xfs_mount; > +#define XFS_DINODE_MAGIC 0x494e /* 'IN' */ > +#define XFS_DINODE_GOOD_VERSION(v) (((v) == 1 || (v) == 2)) > > -#define XFS_DINODE_VERSION_1 1 > -#define XFS_DINODE_VERSION_2 2 > -#define XFS_DINODE_GOOD_VERSION(v) \ > - (((v) == XFS_DINODE_VERSION_1 || (v) == XFS_DINODE_VERSION_2)) > -#define XFS_DINODE_MAGIC 0x494e /* 'IN' */ > - > -/* > - * Disk inode structure. > - * This is just the header; the inode is expanded to fill a variable size > - * with the last field expanding. It is split into the core and "other" > - * because we only need the core part in the in-core inode. > - */ > typedef struct xfs_timestamp { > __be32 t_sec; /* timestamp seconds */ > __be32 t_nsec; /* timestamp nanoseconds */ > } xfs_timestamp_t; > > /* > - * Note: Coordinate changes to this structure with the XFS_DI_* #defines > - * below, the offsets table in xfs_ialloc_log_di() and struct xfs_icdinode > - * in xfs_inode.h. > + * On-disk inode structure. > + * > + * This is just the header or "dinode core", the inode is expanded to fill a > + * variable size the leftover area split into a data and an attribute fork. > + * The format of the data and attribute fork depends on the format of the > + * inode as indicated by di_format and di_aformat. To access the data and > + * attribute use the XFS_DFORK_PTR, XFS_DFORK_DPTR, and XFS_DFORK_PTR macros > + * below. > + * > + * There is a very similar struct icdinode in xfs_inode which matches the > + * layout of the first 96 bytes of this structure, but is kept in native > + * format instead of big endian. > */ > -typedef struct xfs_dinode_core { > +typedef struct xfs_dinode { > __be16 di_magic; /* inode magic # = XFS_DINODE_MAGIC */ > __be16 di_mode; /* mode and type of file */ > __u8 di_version; /* inode version */ > @@ -69,33 +66,12 @@ > __be16 di_dmstate; /* DMIG state info */ > __be16 di_flags; /* random flags, XFS_DIFLAG_... */ > __be32 di_gen; /* generation number */ > -} xfs_dinode_core_t; > > -#define DI_MAX_FLUSH 0xffff > + /* di_next_unlinked is the only non-core field in the old dinode */ > + __be32 di_next_unlinked;/* agi unlinked list ptr */ > +} __attribute__((packed)) xfs_dinode_t; > > -typedef struct xfs_dinode > -{ > - xfs_dinode_core_t di_core; > - /* > - * In adding anything between the core and the union, be > - * sure to update the macros like XFS_LITINO below. > - */ > - __be32 di_next_unlinked;/* agi unlinked list ptr */ > - union { > - xfs_bmdr_block_t di_bmbt; /* btree root block */ > - xfs_bmbt_rec_32_t di_bmx[1]; /* extent list */ > - xfs_dir2_sf_t di_dir2sf; /* shortform directory v2 */ > - char di_c[1]; /* local contents */ > - __be32 di_dev; /* device for S_IFCHR/S_IFBLK */ > - uuid_t di_muuid; /* mount point value */ > - char di_symlink[1]; /* local symbolic link */ > - } di_u; > - union { > - xfs_bmdr_block_t di_abmbt; /* btree root block */ > - xfs_bmbt_rec_32_t di_abmx[1]; /* extent list */ > - xfs_attr_shortform_t di_attrsf; /* shortform attribute list */ > - } di_a; > -} xfs_dinode_t; > +#define DI_MAX_FLUSH 0xffff > > /* > * The 32 bit link count in the inode theoretically maxes out at UINT_MAX. > @@ -106,50 +82,14 @@ > #define XFS_MAXLINK_1 65535U > > /* > - * Bit names for logging disk inodes only > - */ > -#define XFS_DI_MAGIC 0x0000001 > -#define XFS_DI_MODE 0x0000002 > -#define XFS_DI_VERSION 0x0000004 > -#define XFS_DI_FORMAT 0x0000008 > -#define XFS_DI_ONLINK 0x0000010 > -#define XFS_DI_UID 0x0000020 > -#define XFS_DI_GID 0x0000040 > -#define XFS_DI_NLINK 0x0000080 > -#define XFS_DI_PROJID 0x0000100 > -#define XFS_DI_PAD 0x0000200 > -#define XFS_DI_ATIME 0x0000400 > -#define XFS_DI_MTIME 0x0000800 > -#define XFS_DI_CTIME 0x0001000 > -#define XFS_DI_SIZE 0x0002000 > -#define XFS_DI_NBLOCKS 0x0004000 > -#define XFS_DI_EXTSIZE 0x0008000 > -#define XFS_DI_NEXTENTS 0x0010000 > -#define XFS_DI_NAEXTENTS 0x0020000 > -#define XFS_DI_FORKOFF 0x0040000 > -#define XFS_DI_AFORMAT 0x0080000 > -#define XFS_DI_DMEVMASK 0x0100000 > -#define XFS_DI_DMSTATE 0x0200000 > -#define XFS_DI_FLAGS 0x0400000 > -#define XFS_DI_GEN 0x0800000 > -#define XFS_DI_NEXT_UNLINKED 0x1000000 > -#define XFS_DI_U 0x2000000 > -#define XFS_DI_A 0x4000000 > -#define XFS_DI_NUM_BITS 27 > -#define XFS_DI_ALL_BITS ((1 << XFS_DI_NUM_BITS) - 1) > -#define XFS_DI_CORE_BITS (XFS_DI_ALL_BITS & ~(XFS_DI_U|XFS_DI_A)) > - > -/* > * Values for di_format > */ > -typedef enum xfs_dinode_fmt > -{ > - XFS_DINODE_FMT_DEV, /* CHR, BLK: di_dev */ > - XFS_DINODE_FMT_LOCAL, /* DIR, REG: di_c */ > - /* LNK: di_symlink */ > - XFS_DINODE_FMT_EXTENTS, /* DIR, REG, LNK: di_bmx */ > - XFS_DINODE_FMT_BTREE, /* DIR, REG, LNK: di_bmbt */ > - XFS_DINODE_FMT_UUID /* MNT: di_uuid */ > +typedef enum xfs_dinode_fmt { > + XFS_DINODE_FMT_DEV, /* xfs_dev_t */ > + XFS_DINODE_FMT_LOCAL, /* bulk data */ > + XFS_DINODE_FMT_EXTENTS, /* struct xfs_bmbt_rec */ > + XFS_DINODE_FMT_BTREE, /* struct xfs_bmdr_block */ > + XFS_DINODE_FMT_UUID /* uuid_t */ > } xfs_dinode_fmt_t; > > /* > @@ -170,8 +110,8 @@ > /* > * Inode data & attribute fork sizes, per inode. > */ > -#define XFS_DFORK_Q(dip) ((dip)->di_core.di_forkoff != 0) > -#define XFS_DFORK_BOFF(dip) ((int)((dip)->di_core.di_forkoff << 3)) > +#define XFS_DFORK_Q(dip) ((dip)->di_forkoff != 0) > +#define XFS_DFORK_BOFF(dip) ((int)((dip)->di_forkoff << 3)) > > #define XFS_DFORK_DSIZE(dip,mp) \ > (XFS_DFORK_Q(dip) ? \ > @@ -186,23 +126,42 @@ > XFS_DFORK_DSIZE(dip, mp) : \ > XFS_DFORK_ASIZE(dip, mp)) > > -#define XFS_DFORK_DPTR(dip) ((dip)->di_u.di_c) > +/* > + * Return pointers to the data or attribute forks. > + */ > +#define XFS_DFORK_DPTR(dip) \ > + ((char *)(dip) + sizeof(struct xfs_dinode)) > #define XFS_DFORK_APTR(dip) \ > - ((dip)->di_u.di_c + XFS_DFORK_BOFF(dip)) > + (XFS_DFORK_DPTR(dip) + XFS_DFORK_BOFF(dip)) > #define XFS_DFORK_PTR(dip,w) \ > ((w) == XFS_DATA_FORK ? XFS_DFORK_DPTR(dip) : XFS_DFORK_APTR(dip)) > + > #define XFS_DFORK_FORMAT(dip,w) \ > ((w) == XFS_DATA_FORK ? \ > - (dip)->di_core.di_format : \ > - (dip)->di_core.di_aformat) > + (dip)->di_format : \ > + (dip)->di_aformat) > #define XFS_DFORK_NEXTENTS(dip,w) \ > ((w) == XFS_DATA_FORK ? \ > - be32_to_cpu((dip)->di_core.di_nextents) : \ > - be16_to_cpu((dip)->di_core.di_anextents)) > + be32_to_cpu((dip)->di_nextents) : \ > + be16_to_cpu((dip)->di_anextents)) > > #define XFS_BUF_TO_DINODE(bp) ((xfs_dinode_t *)XFS_BUF_PTR(bp)) > > /* > + * For block and character special files the 32bit dev_t is stored at the > + * beginning of the data fork. > + */ > +static inline xfs_dev_t xfs_dinode_get_rdev(struct xfs_dinode *dip) > +{ > + return be32_to_cpu(*(__be32 *)XFS_DFORK_DPTR(dip)); > +} > + > +static inline void xfs_dinode_put_rdev(struct xfs_dinode *dip, xfs_dev_t rdev) > +{ > + *(__be32 *)XFS_DFORK_DPTR(dip) = cpu_to_be32(rdev); > +} > + > +/* > * Values for di_flags > * There should be a one-to-one correspondence between these flags and the > * XFS_XFLAG_s. > Index: xfs-cmds/xfsprogs/include/xfs_dir2_sf.h > =================================================================== > --- xfs-cmds.orig/xfsprogs/include/xfs_dir2_sf.h 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/include/xfs_dir2_sf.h 2008-12-06 20:05:49.000000000 +0100 > @@ -34,13 +34,6 @@ > struct xfs_trans; > > /* > - * Maximum size of a shortform directory. > - */ > -#define XFS_DIR2_SF_MAX_SIZE \ > - (XFS_DINODE_MAX_SIZE - (uint)sizeof(xfs_dinode_core_t) - \ > - (uint)sizeof(xfs_agino_t)) > - > -/* > * Inode number stored as 8 8-bit values. > */ > typedef struct { __uint8_t i[8]; } xfs_dir2_ino8_t; > Index: xfs-cmds/xfsprogs/include/xfs_fs.h > =================================================================== > --- xfs-cmds.orig/xfsprogs/include/xfs_fs.h 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/include/xfs_fs.h 2008-12-06 20:05:49.000000000 +0100 > @@ -113,22 +113,14 @@ > #define BMV_IF_ATTRFORK 0x1 /* return attr fork rather than data */ > #define BMV_IF_NO_DMAPI_READ 0x2 /* Do not generate DMAPI read event */ > #define BMV_IF_PREALLOC 0x4 /* rtn status BMV_OF_PREALLOC if req */ > -#define BMV_IF_VALID (BMV_IF_ATTRFORK|BMV_IF_NO_DMAPI_READ|BMV_IF_PREALLOC) > -#ifdef __KERNEL__ > -#define BMV_IF_EXTENDED 0x40000000 /* getpmapx if set */ > -#endif > +#define BMV_IF_DELALLOC 0x8 /* rtn status BMV_OF_DELALLOC if req */ > +#define BMV_IF_VALID \ > + (BMV_IF_ATTRFORK|BMV_IF_NO_DMAPI_READ|BMV_IF_PREALLOC|BMV_IF_DELALLOC) > > /* bmv_oflags values - returned for for each non-header segment */ > #define BMV_OF_PREALLOC 0x1 /* segment = unwritten pre-allocation */ > - > -/* Convert getbmap <-> getbmapx - move fields from p1 to p2. */ > -#define GETBMAP_CONVERT(p1,p2) { \ > - p2.bmv_offset = p1.bmv_offset; \ > - p2.bmv_block = p1.bmv_block; \ > - p2.bmv_length = p1.bmv_length; \ > - p2.bmv_count = p1.bmv_count; \ > - p2.bmv_entries = p1.bmv_entries; } > - > +#define BMV_OF_DELALLOC 0x2 /* segment = delayed allocation */ > +#define BMV_OF_LAST 0x4 /* segment is the last in the file */ > > /* > * Structure for XFS_IOC_FSSETDM. > @@ -426,10 +418,6 @@ > #define XFS_IOC_GETXFLAGS FS_IOC_GETFLAGS > #define XFS_IOC_SETXFLAGS FS_IOC_SETFLAGS > #define XFS_IOC_GETVERSION FS_IOC_GETVERSION > -/* 32-bit compat counterparts */ > -#define XFS_IOC32_GETXFLAGS FS_IOC32_GETFLAGS > -#define XFS_IOC32_SETXFLAGS FS_IOC32_SETFLAGS > -#define XFS_IOC32_GETVERSION FS_IOC32_GETVERSION > > /* > * ioctl commands that replace IRIX fcntl()'s > Index: xfs-cmds/xfsprogs/include/xfs_ialloc.h > =================================================================== > --- xfs-cmds.orig/xfsprogs/include/xfs_ialloc.h 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/include/xfs_ialloc.h 2008-12-06 20:05:49.000000000 +0100 > @@ -20,6 +20,7 @@ > > struct xfs_buf; > struct xfs_dinode; > +struct xfs_imap; > struct xfs_mount; > struct xfs_trans; > > @@ -104,17 +105,14 @@ > xfs_ino_t *first_ino); /* first inode in deleted cluster */ > > /* > - * Return the location of the inode in bno/len/off, > - * for mapping it into a buffer. > + * Return the location of the inode in imap, for mapping it into a buffer. > */ > int > -xfs_dilocate( > +xfs_imap( > struct xfs_mount *mp, /* file system mount structure */ > struct xfs_trans *tp, /* transaction pointer */ > xfs_ino_t ino, /* inode to locate */ > - xfs_fsblock_t *bno, /* output: block containing inode */ > - int *len, /* output: num blocks in cluster*/ > - int *off, /* output: index in block of inode */ > + struct xfs_imap *imap, /* location map structure */ > uint flags); /* flags for inode btree lookup */ > > /* > Index: xfs-cmds/xfsprogs/include/xfs_inode.h > =================================================================== > --- xfs-cmds.orig/xfsprogs/include/xfs_inode.h 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/include/xfs_inode.h 2008-12-06 20:05:49.000000000 +0100 > @@ -19,7 +19,6 @@ > #define __XFS_INODE_H__ > > struct xfs_dinode; > -struct xfs_dinode_core; > struct xfs_inode; > > /* > @@ -84,6 +83,16 @@ > } xfs_ifork_t; > > /* > + * Inode location information. Stored in the inode and passed to > + * xfs_imap_to_bp() to get a buffer and dinode for a given inode. > + */ > +struct xfs_imap { > + xfs_daddr_t im_blkno; /* starting BB of inode chunk */ > + ushort im_len; /* length in BBs of inode chunk */ > + ushort im_boffset; /* inode offset in block in bytes */ > +}; > + > +/* > * This is the xfs in-core inode structure. > * Most of the on-disk inode is embedded in the i_d field. > * > @@ -112,7 +121,7 @@ > } xfs_ictimestamp_t; > > /* > - * NOTE: This structure must be kept identical to struct xfs_dinode_core > + * NOTE: This structure must be kept identical to struct xfs_dinode > * in xfs_dinode.h except for the endianess annotations. > */ > typedef struct xfs_icdinode { > @@ -158,12 +167,6 @@ > #define XFS_IFEXTIREC 0x08 /* Indirection array of extent blocks */ > > /* > - * Flags for xfs_itobp(), xfs_imap() and xfs_dilocate(). > - */ > -#define XFS_IMAP_LOOKUP 0x1 > -#define XFS_IMAP_BULKSTAT 0x2 > - > -/* > * Fork handling. > */ > > @@ -232,27 +235,15 @@ > __uint16_t da_pad; /* DMIG extra padding */ > } dm_attrs_t; > > -typedef struct { > - struct xfs_inode *ip_mnext; /* next inode in mount list */ > - struct xfs_inode *ip_mprev; /* ptr to prev inode */ > - struct xfs_mount *ip_mount; /* fs mount struct ptr */ > -} xfs_iptr_t; > - > typedef struct xfs_inode { > /* Inode linking and identification information. */ > - struct xfs_inode *i_mnext; /* next inode in mount list */ > - struct xfs_inode *i_mprev; /* ptr to prev inode */ > struct xfs_mount *i_mount; /* fs mount struct ptr */ > - struct list_head i_reclaim; /* reclaim list */ > - struct inode *i_vnode; /* vnode backpointer */ > struct xfs_dquot *i_udquot; /* user dquot */ > struct xfs_dquot *i_gdquot; /* group dquot */ > > /* Inode location stuff */ > xfs_ino_t i_ino; /* inode number (agno/agino)*/ > - xfs_daddr_t i_blkno; /* blkno of inode buffer */ > - ushort i_len; /* len of inode buffer */ > - ushort i_boffset; /* off of inode in buffer */ > + struct xfs_imap i_imap; /* location for xfs_imap() */ > > /* Extent information. */ > xfs_ifork_t *i_afp; /* attribute fork pointer */ > @@ -271,7 +262,6 @@ > unsigned short i_flags; /* see defined flags below */ > unsigned char i_update_core; /* timestamps/size is dirty */ > unsigned char i_update_size; /* di_size field is dirty */ > - unsigned int i_gen; /* generation count */ > unsigned int i_delayed_blks; /* count of delay alloc blks */ > > xfs_icdinode_t i_d; /* most of ondisk inode */ > @@ -279,6 +269,10 @@ > xfs_fsize_t i_size; /* in-memory size */ > xfs_fsize_t i_new_size; /* size when write completes */ > atomic_t i_iocount; /* outstanding I/O count */ > + > + /* VFS inode */ > + struct inode i_vnode; /* embedded VFS inode */ > + > /* Trace buffers per inode. */ > #ifdef XFS_INODE_TRACE > struct ktrace *i_trace; /* general inode trace */ > @@ -306,13 +300,30 @@ > /* Convert from vfs inode to xfs inode */ > static inline struct xfs_inode *XFS_I(struct inode *inode) > { > - return (struct xfs_inode *)inode->i_private; > + return container_of(inode, struct xfs_inode, i_vnode); > } > > /* convert from xfs inode to vfs inode */ > static inline struct inode *VFS_I(struct xfs_inode *ip) > { > - return (struct inode *)ip->i_vnode; > + return &ip->i_vnode; > +} > + > +/* > + * Get rid of a partially initialized inode. > + * > + * We have to go through destroy_inode to make sure allocations > + * from init_inode_always like the security data are undone. > + * > + * We mark the inode bad so that it takes the short cut in > + * the reclaim path instead of going through the flush path > + * which doesn't make sense for an inode that has never seen the > + * light of day. > + */ > +static inline void xfs_destroy_inode(struct xfs_inode *ip) > +{ > + make_bad_inode(VFS_I(ip)); > + return destroy_inode(VFS_I(ip)); > } > > /* > @@ -392,17 +403,12 @@ > /* > * In-core inode flags. > */ > -#define XFS_IGRIO 0x0001 /* inode used for guaranteed rate i/o */ > -#define XFS_IUIOSZ 0x0002 /* inode i/o sizes have been explicitly set */ > -#define XFS_IQUIESCE 0x0004 /* we have started quiescing for this inode */ > -#define XFS_IRECLAIM 0x0008 /* we have started reclaiming this inode */ > -#define XFS_ISTALE 0x0010 /* inode has been staled */ > -#define XFS_IRECLAIMABLE 0x0020 /* inode can be reclaimed */ > -#define XFS_INEW 0x0040 > -#define XFS_IFILESTREAM 0x0080 /* inode is in a filestream directory */ > -#define XFS_IMODIFIED 0x0100 /* XFS inode state possibly differs */ > - /* to the Linux inode state. */ > -#define XFS_ITRUNCATED 0x0200 /* truncated down so flush-on-close */ > +#define XFS_IRECLAIM 0x0001 /* we have started reclaiming this inode */ > +#define XFS_ISTALE 0x0002 /* inode has been staled */ > +#define XFS_IRECLAIMABLE 0x0004 /* inode can be reclaimed */ > +#define XFS_INEW 0x0008 /* inode has just been allocated */ > +#define XFS_IFILESTREAM 0x0010 /* inode is in a filestream directory */ > +#define XFS_ITRUNCATED 0x0020 /* truncated down so flush-on-close */ > > /* > * Flags for inode locking. > @@ -477,16 +483,8 @@ > ((pip)->i_d.di_mode & S_ISGID)) > > /* > - * Flags for xfs_iget() > - */ > -#define XFS_IGET_CREATE 0x1 > -#define XFS_IGET_BULKSTAT 0x2 > - > -/* > * xfs_iget.c prototypes. > */ > -void xfs_ihash_init(struct xfs_mount *); > -void xfs_ihash_free(struct xfs_mount *); > xfs_inode_t *xfs_inode_incore(struct xfs_mount *, xfs_ino_t, > struct xfs_trans *); > int xfs_iget(struct xfs_mount *, struct xfs_trans *, xfs_ino_t, > @@ -501,14 +499,10 @@ > uint xfs_ilock_map_shared(xfs_inode_t *); > void xfs_iunlock_map_shared(xfs_inode_t *, uint); > void xfs_ireclaim(xfs_inode_t *); > -int xfs_finish_reclaim(xfs_inode_t *, int, int); > -int xfs_finish_reclaim_all(struct xfs_mount *, int); > > /* > * xfs_inode.c prototypes. > */ > -int xfs_iread(struct xfs_mount *, struct xfs_trans *, xfs_ino_t, > - xfs_inode_t **, xfs_daddr_t, uint); > int xfs_ialloc(struct xfs_trans *, xfs_inode_t *, mode_t, > xfs_nlink_t, xfs_dev_t, struct cred *, xfs_prid_t, > int, struct xfs_buf **, boolean_t *, xfs_inode_t **); > @@ -522,14 +516,10 @@ > xfs_fsize_t, int, int); > int xfs_iunlink(struct xfs_trans *, xfs_inode_t *); > > -struct xfs_inode * xfs_inode_alloc(struct xfs_mount *, xfs_ino_t); > -void xfs_idestroy(xfs_inode_t *); > -void xfs_iextract(xfs_inode_t *); > void xfs_iext_realloc(xfs_inode_t *, int, int); > void xfs_ipin(xfs_inode_t *); > void xfs_iunpin(xfs_inode_t *); > int xfs_iflush(xfs_inode_t *, uint); > -void xfs_iflush_all(struct xfs_mount *); > void xfs_ichgtime(xfs_inode_t *, int); > xfs_fsize_t xfs_file_last_byte(xfs_inode_t *); > void xfs_lock_inodes(xfs_inode_t **, int, uint); > @@ -538,14 +528,70 @@ > void xfs_synchronize_atime(xfs_inode_t *); > void xfs_mark_inode_dirty_sync(xfs_inode_t *); > > +#if defined(XFS_INODE_TRACE) > + > +#define INODE_TRACE_SIZE 16 /* number of trace entries */ > +#define INODE_KTRACE_ENTRY 1 > +#define INODE_KTRACE_EXIT 2 > +#define INODE_KTRACE_HOLD 3 > +#define INODE_KTRACE_REF 4 > +#define INODE_KTRACE_RELE 5 > + > +extern void _xfs_itrace_entry(struct xfs_inode *, const char *, inst_t *); > +extern void _xfs_itrace_exit(struct xfs_inode *, const char *, inst_t *); > +extern void xfs_itrace_hold(struct xfs_inode *, char *, int, inst_t *); > +extern void _xfs_itrace_ref(struct xfs_inode *, char *, int, inst_t *); > +extern void xfs_itrace_rele(struct xfs_inode *, char *, int, inst_t *); > +#define xfs_itrace_entry(ip) \ > + _xfs_itrace_entry(ip, __func__, (inst_t *)__return_address) > +#define xfs_itrace_exit(ip) \ > + _xfs_itrace_exit(ip, __func__, (inst_t *)__return_address) > +#define xfs_itrace_exit_tag(ip, tag) \ > + _xfs_itrace_exit(ip, tag, (inst_t *)__return_address) > +#define xfs_itrace_ref(ip) \ > + _xfs_itrace_ref(ip, __FILE__, __LINE__, (inst_t *)__return_address) > + > +#else > +#define xfs_itrace_entry(a) > +#define xfs_itrace_exit(a) > +#define xfs_itrace_exit_tag(a, b) > +#define xfs_itrace_hold(a, b, c, d) > +#define xfs_itrace_ref(a) > +#define xfs_itrace_rele(a, b, c, d) > +#endif > + > +#define IHOLD(ip) \ > +do { \ > + ASSERT(atomic_read(&VFS_I(ip)->i_count) > 0) ; \ > + atomic_inc(&(VFS_I(ip)->i_count)); \ > + xfs_itrace_hold((ip), __FILE__, __LINE__, (inst_t *)__return_address); \ > +} while (0) > + > +#define IRELE(ip) \ > +do { \ > + xfs_itrace_rele((ip), __FILE__, __LINE__, (inst_t *)__return_address); \ > + iput(VFS_I(ip)); \ > +} while (0) > + > #endif /* __KERNEL__ */ > > +/* > + * Flags for xfs_iget() > + */ > +#define XFS_IGET_CREATE 0x1 > +#define XFS_IGET_BULKSTAT 0x2 > + > +int xfs_inotobp(struct xfs_mount *, struct xfs_trans *, > + xfs_ino_t, struct xfs_dinode **, > + struct xfs_buf **, int *, uint); > int xfs_itobp(struct xfs_mount *, struct xfs_trans *, > struct xfs_inode *, struct xfs_dinode **, > - struct xfs_buf **, xfs_daddr_t, uint, uint); > + struct xfs_buf **, uint); > +int xfs_iread(struct xfs_mount *, struct xfs_trans *, > + struct xfs_inode *, xfs_daddr_t, uint); > void xfs_dinode_from_disk(struct xfs_icdinode *, > - struct xfs_dinode_core *); > -void xfs_dinode_to_disk(struct xfs_dinode_core *, > + struct xfs_dinode *); > +void xfs_dinode_to_disk(struct xfs_dinode *, > struct xfs_icdinode *); > void xfs_idestroy_fork(struct xfs_inode *, int); > void xfs_idata_realloc(struct xfs_inode *, int, int); > Index: xfs-cmds/xfsprogs/include/xfs_log.h > =================================================================== > --- xfs-cmds.orig/xfsprogs/include/xfs_log.h 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/include/xfs_log.h 2008-12-06 20:05:49.000000000 +0100 > @@ -134,6 +134,7 @@ > #ifdef __KERNEL__ > /* Log manager interfaces */ > struct xfs_mount; > +struct xlog_ticket; > xfs_lsn_t xfs_log_done(struct xfs_mount *mp, > xfs_log_ticket_t ticket, > void **iclog, > @@ -177,6 +178,9 @@ > > void xlog_iodone(struct xfs_buf *); > > +struct xlog_ticket * xfs_log_ticket_get(struct xlog_ticket *ticket); > +void xfs_log_ticket_put(struct xlog_ticket *ticket); > + > #endif > > > Index: xfs-cmds/xfsprogs/include/xfs_log_priv.h > =================================================================== > --- xfs-cmds.orig/xfsprogs/include/xfs_log_priv.h 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/include/xfs_log_priv.h 2008-12-06 20:05:49.000000000 +0100 > @@ -245,6 +245,7 @@ > struct xlog_ticket *t_next; /* :4|8 */ > struct xlog_ticket *t_prev; /* :4|8 */ > xlog_tid_t t_tid; /* transaction identifier : 4 */ > + atomic_t t_ref; /* ticket reference count : 4 */ > int t_curr_res; /* current reservation in bytes : 4 */ > int t_unit_res; /* unit reservation in bytes : 4 */ > char t_ocnt; /* original count : 1 */ > @@ -309,6 +310,16 @@ > } xlog_rec_ext_header_t; > > #ifdef __KERNEL__ > + > +/* > + * Quite misnamed, because this union lays out the actual on-disk log buffer. > + */ > +typedef union xlog_in_core2 { > + xlog_rec_header_t hic_header; > + xlog_rec_ext_header_t hic_xheader; > + char hic_sector[XLOG_HEADER_SIZE]; > +} xlog_in_core_2_t; > + > /* > * - A log record header is 512 bytes. There is plenty of room to grow the > * xlog_rec_header_t into the reserved space. > @@ -338,7 +349,7 @@ > * We'll put all the read-only and l_icloglock fields in the first cacheline, > * and move everything else out to subsequent cachelines. > */ > -typedef struct xlog_iclog_fields { > +typedef struct xlog_in_core { > sv_t ic_force_wait; > sv_t ic_write_wait; > struct xlog_in_core *ic_next; > @@ -361,41 +372,11 @@ > > /* reference counts need their own cacheline */ > atomic_t ic_refcnt ____cacheline_aligned_in_smp; > -} xlog_iclog_fields_t; > - > -typedef union xlog_in_core2 { > - xlog_rec_header_t hic_header; > - xlog_rec_ext_header_t hic_xheader; > - char hic_sector[XLOG_HEADER_SIZE]; > -} xlog_in_core_2_t; > - > -typedef struct xlog_in_core { > - xlog_iclog_fields_t hic_fields; > - xlog_in_core_2_t *hic_data; > + xlog_in_core_2_t *ic_data; > +#define ic_header ic_data->hic_header > } xlog_in_core_t; > > /* > - * Defines to save our code from this glop. > - */ > -#define ic_force_wait hic_fields.ic_force_wait > -#define ic_write_wait hic_fields.ic_write_wait > -#define ic_next hic_fields.ic_next > -#define ic_prev hic_fields.ic_prev > -#define ic_bp hic_fields.ic_bp > -#define ic_log hic_fields.ic_log > -#define ic_callback hic_fields.ic_callback > -#define ic_callback_lock hic_fields.ic_callback_lock > -#define ic_callback_tail hic_fields.ic_callback_tail > -#define ic_trace hic_fields.ic_trace > -#define ic_size hic_fields.ic_size > -#define ic_offset hic_fields.ic_offset > -#define ic_refcnt hic_fields.ic_refcnt > -#define ic_bwritecnt hic_fields.ic_bwritecnt > -#define ic_state hic_fields.ic_state > -#define ic_datap hic_fields.ic_datap > -#define ic_header hic_data->hic_header > - > -/* > * The reservation head lsn is not made up of a cycle number and block number. > * Instead, it uses a cycle number and byte number. Logs don't expect to > * overflow 31 bits worth of byte offset, so using a byte number will mean > @@ -404,6 +385,7 @@ > typedef struct log { > /* The following fields don't need locking */ > struct xfs_mount *l_mp; /* mount point */ > + struct xfs_ail *l_ailp; /* AIL log is working with */ > struct xfs_buf *l_xbuf; /* extra buffer for log > * wrapping */ > struct xfs_buftarg *l_targ; /* buftarg of log */ > Index: xfs-cmds/xfsprogs/include/xfs_mount.h > =================================================================== > --- xfs-cmds.orig/xfsprogs/include/xfs_mount.h 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/include/xfs_mount.h 2008-12-06 20:05:49.000000000 +0100 > @@ -18,7 +18,6 @@ > #ifndef __XFS_MOUNT_H__ > #define __XFS_MOUNT_H__ > > - > typedef struct xfs_trans_reservations { > uint tr_write; /* extent alloc trans */ > uint tr_itruncate; /* truncate trans */ > @@ -52,6 +51,8 @@ > > #else /* __KERNEL__ */ > > +#include "xfs_sync.h" > + > struct cred; > struct log; > struct xfs_mount_args; > @@ -62,6 +63,7 @@ > struct xfs_swapext; > struct xfs_mru_cache; > struct xfs_nameops; > +struct xfs_ail; > > /* > * Prototypes and functions for the Data Migration subsystem. > @@ -115,7 +117,7 @@ > > typedef int (*xfs_qminit_t)(struct xfs_mount *, uint *, uint *); > typedef int (*xfs_qmmount_t)(struct xfs_mount *, uint, uint); > -typedef int (*xfs_qmunmount_t)(struct xfs_mount *); > +typedef void (*xfs_qmunmount_t)(struct xfs_mount *); > typedef void (*xfs_qmdone_t)(struct xfs_mount *); > typedef void (*xfs_dqrele_t)(struct xfs_dquot *); > typedef int (*xfs_dqattach_t)(struct xfs_inode *, uint); > @@ -132,7 +134,7 @@ > struct xfs_dquot **, struct xfs_dquot *); > typedef int (*xfs_dqvopchownresv_t)(struct xfs_trans *, struct xfs_inode *, > struct xfs_dquot *, struct xfs_dquot *, uint); > -typedef void (*xfs_dqstatvfs_t)(struct xfs_inode *, bhv_statvfs_t *); > +typedef void (*xfs_dqstatvfs_t)(struct xfs_inode *, struct kstatfs *); > typedef int (*xfs_dqsync_t)(struct xfs_mount *, int flags); > typedef int (*xfs_quotactl_t)(struct xfs_mount *, int, int, xfs_caddr_t); > > @@ -223,18 +225,10 @@ > #define xfs_icsb_sync_counters_locked(mp, flags) do { } while (0) > #endif > > -typedef struct xfs_ail { > - struct list_head xa_ail; > - uint xa_gen; > - struct task_struct *xa_task; > - xfs_lsn_t xa_target; > -} xfs_ail_t; > - > typedef struct xfs_mount { > struct super_block *m_super; > xfs_tid_t m_tid; /* next unused tid for fs */ > - spinlock_t m_ail_lock; /* fs AIL mutex */ > - xfs_ail_t m_ail; /* fs active log item list */ > + struct xfs_ail *m_ail; /* fs active log item list */ > xfs_sb_t m_sb; /* copy of fs superblock */ > spinlock_t m_sb_lock; /* sb counter lock */ > struct xfs_buf *m_sb_bp; /* buffer for superblock */ > @@ -247,10 +241,6 @@ > xfs_agnumber_t m_agirotor; /* last ag dir inode alloced */ > spinlock_t m_agirotor_lock;/* .. and lock protecting it */ > xfs_agnumber_t m_maxagi; /* highest inode alloc group */ > - struct xfs_inode *m_inodes; /* active inode list */ > - struct list_head m_del_inodes; /* inodes to reclaim */ > - mutex_t m_ilock; /* inode list mutex */ > - uint m_ireclaims; /* count of calls to reclaim*/ > uint m_readio_log; /* min read size log bytes */ > uint m_readio_blocks; /* min read size blocks */ > uint m_writeio_log; /* min write size log bytes */ > @@ -311,9 +301,6 @@ > int m_sinoalign; /* stripe unit inode alignment */ > int m_attr_magicpct;/* 37% of the blocksize */ > int m_dir_magicpct; /* 37% of the dir blocksize */ > - __uint8_t m_mk_sharedro; /* mark shared ro on unmount */ > - __uint8_t m_inode_quiesce;/* call quiesce on new inodes. > - field governed by m_ilock */ > __uint8_t m_sectbb_log; /* sectlog - BBSHIFT */ > const struct xfs_nameops *m_dirnameops; /* vector of dir name ops */ > int m_dirblksize; /* directory block sz--bytes */ > @@ -340,7 +327,6 @@ > 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; > - struct vfsmount *m_vfsmount; > } xfs_mount_t; > > /* > @@ -362,7 +348,6 @@ > #define XFS_MOUNT_ATTR2 (1ULL << 8) /* allow use of attr2 format */ > #define XFS_MOUNT_GRPID (1ULL << 9) /* group-ID assigned from directory */ > #define XFS_MOUNT_NORECOVERY (1ULL << 10) /* no recovery - dirty fs */ > -#define XFS_MOUNT_SHARED (1ULL << 11) /* shared mount */ > #define XFS_MOUNT_DFLT_IOSIZE (1ULL << 12) /* set default i/o size */ > #define XFS_MOUNT_OSYNCISOSYNC (1ULL << 13) /* o_sync is REALLY o_sync */ > /* osyncisdsync is now default*/ > @@ -439,6 +424,16 @@ > #define xfs_force_shutdown(m,f) \ > xfs_do_force_shutdown(m, f, __FILE__, __LINE__) > > +#define SHUTDOWN_META_IO_ERROR 0x0001 /* write attempt to metadata failed */ > +#define SHUTDOWN_LOG_IO_ERROR 0x0002 /* write attempt to the log failed */ > +#define SHUTDOWN_FORCE_UMOUNT 0x0004 /* shutdown from a forced unmount */ > +#define SHUTDOWN_CORRUPT_INCORE 0x0008 /* corrupt in-memory data structures */ > +#define SHUTDOWN_REMOTE_REQ 0x0010 /* shutdown came from remote cell */ > +#define SHUTDOWN_DEVICE_REQ 0x0020 /* failed all paths to the device */ > + > +#define xfs_test_for_freeze(mp) ((mp)->m_super->s_frozen) > +#define xfs_wait_for_freeze(mp,l) vfs_check_frozen((mp)->m_super, (l)) > + > /* > * Flags for xfs_mountfs > */ > @@ -514,7 +509,6 @@ > > extern void xfs_unmountfs(xfs_mount_t *); > extern int xfs_unmountfs_writesb(xfs_mount_t *); > -extern int xfs_unmount_flush(xfs_mount_t *, int); > extern int xfs_mod_incore_sb(xfs_mount_t *, xfs_sb_field_t, int64_t, int); > extern int xfs_mod_incore_sb_unlocked(xfs_mount_t *, xfs_sb_field_t, > int64_t, int); > @@ -524,13 +518,11 @@ > extern int xfs_readsb(xfs_mount_t *, int); > extern void xfs_freesb(xfs_mount_t *); > extern int xfs_fs_writable(xfs_mount_t *); > -extern int xfs_syncsub(xfs_mount_t *, int, int *); > -extern int xfs_sync_inodes(xfs_mount_t *, int, int *); > extern int xfs_sb_validate_fsb_count(struct xfs_sb *, __uint64_t); > > -extern int xfs_dmops_get(struct xfs_mount *, struct xfs_mount_args *); > +extern int xfs_dmops_get(struct xfs_mount *); > extern void xfs_dmops_put(struct xfs_mount *); > -extern int xfs_qmops_get(struct xfs_mount *, struct xfs_mount_args *); > +extern int xfs_qmops_get(struct xfs_mount *); > extern void xfs_qmops_put(struct xfs_mount *); > > extern struct xfs_dmops xfs_dmcore_xfs; > Index: xfs-cmds/xfsprogs/include/xfs_quota.h > =================================================================== > --- xfs-cmds.orig/xfsprogs/include/xfs_quota.h 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/include/xfs_quota.h 2008-12-06 20:05:49.000000000 +0100 > @@ -84,11 +84,9 @@ > #define XFS_DQ_USER 0x0001 /* a user quota */ > #define XFS_DQ_PROJ 0x0002 /* project quota */ > #define XFS_DQ_GROUP 0x0004 /* a group quota */ > -#define XFS_DQ_FLOCKED 0x0008 /* flush lock taken */ > -#define XFS_DQ_DIRTY 0x0010 /* dquot is dirty */ > -#define XFS_DQ_WANT 0x0020 /* for lookup/reclaim race */ > -#define XFS_DQ_INACTIVE 0x0040 /* dq off mplist & hashlist */ > -#define XFS_DQ_MARKER 0x0080 /* sentinel */ > +#define XFS_DQ_DIRTY 0x0008 /* dquot is dirty */ > +#define XFS_DQ_WANT 0x0010 /* for lookup/reclaim race */ > +#define XFS_DQ_INACTIVE 0x0020 /* dq off mplist & hashlist */ > > #define XFS_DQ_ALLTYPES (XFS_DQ_USER|XFS_DQ_PROJ|XFS_DQ_GROUP) > > Index: xfs-cmds/xfsprogs/include/xfs_sb.h > =================================================================== > --- xfs-cmds.orig/xfsprogs/include/xfs_sb.h 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/include/xfs_sb.h 2008-12-06 20:05:49.000000000 +0100 > @@ -297,30 +297,34 @@ > > #define XFS_SB_VERSION_NUM(sbp) ((sbp)->sb_versionnum & XFS_SB_VERSION_NUMBITS) > > -#ifdef __KERNEL__ > static inline int xfs_sb_good_version(xfs_sb_t *sbp) > { > - return (((sbp->sb_versionnum >= XFS_SB_VERSION_1) && \ > - (sbp->sb_versionnum <= XFS_SB_VERSION_3)) || \ > - ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ > - !((sbp->sb_versionnum & ~XFS_SB_VERSION_OKREALBITS) || \ > - ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) && \ > - (sbp->sb_features2 & ~XFS_SB_VERSION2_OKREALBITS))) && \ > - (sbp->sb_shared_vn <= XFS_SB_MAX_SHARED_VN))); > -} > + /* We always support version 1-3 */ > + if (sbp->sb_versionnum >= XFS_SB_VERSION_1 && > + sbp->sb_versionnum <= XFS_SB_VERSION_3) > + return 1; > + > + /* We support version 4 if all feature bits are supported */ > + if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) { > + if ((sbp->sb_versionnum & ~XFS_SB_VERSION_OKREALBITS) || > + ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) && > + (sbp->sb_features2 & ~XFS_SB_VERSION2_OKREALBITS))) > + return 0; > + > +#ifdef __KERNEL__ > + if (sbp->sb_shared_vn > XFS_SB_MAX_SHARED_VN) > + return 0; > #else > -static inline int xfs_sb_good_version(xfs_sb_t *sbp) > -{ > - return (((sbp->sb_versionnum >= XFS_SB_VERSION_1) && \ > - (sbp->sb_versionnum <= XFS_SB_VERSION_3)) || \ > - ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ > - !((sbp->sb_versionnum & ~XFS_SB_VERSION_OKREALBITS) || \ > - ((sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT) && \ > - (sbp->sb_features2 & ~XFS_SB_VERSION2_OKREALBITS))) && \ > - (!(sbp->sb_versionnum & XFS_SB_VERSION_SHAREDBIT) || \ > - (sbp->sb_shared_vn <= XFS_SB_MAX_SHARED_VN)))); > + if ((sbp->sb_versionnum & XFS_SB_VERSION_SHAREDBIT) && > + sbp->sb_shared_vn > XFS_SB_MAX_SHARED_VN) > + return 0; > +#endif > + > + return 1; > + } > + > + return 0; > } > -#endif /* __KERNEL__ */ > > /* > * Detect a mismatched features2 field. Older kernels read/wrote > @@ -333,123 +337,127 @@ > > static inline unsigned xfs_sb_version_tonew(unsigned v) > { > - return ((((v) == XFS_SB_VERSION_1) ? \ > - 0 : \ > - (((v) == XFS_SB_VERSION_2) ? \ > - XFS_SB_VERSION_ATTRBIT : \ > - (XFS_SB_VERSION_ATTRBIT | XFS_SB_VERSION_NLINKBIT))) | \ > - XFS_SB_VERSION_4); > + if (v == XFS_SB_VERSION_1) > + return XFS_SB_VERSION_4; > + > + if (v == XFS_SB_VERSION_2) > + return XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT; > + > + return XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT | > + XFS_SB_VERSION_NLINKBIT; > } > > static inline unsigned xfs_sb_version_toold(unsigned v) > { > - return (((v) & (XFS_SB_VERSION_QUOTABIT | XFS_SB_VERSION_ALIGNBIT)) ? \ > - 0 : \ > - (((v) & XFS_SB_VERSION_NLINKBIT) ? \ > - XFS_SB_VERSION_3 : \ > - (((v) & XFS_SB_VERSION_ATTRBIT) ? \ > - XFS_SB_VERSION_2 : \ > - XFS_SB_VERSION_1))); > + if (v & (XFS_SB_VERSION_QUOTABIT | XFS_SB_VERSION_ALIGNBIT)) > + return 0; > + if (v & XFS_SB_VERSION_NLINKBIT) > + return XFS_SB_VERSION_3; > + if (v & XFS_SB_VERSION_ATTRBIT) > + return XFS_SB_VERSION_2; > + return XFS_SB_VERSION_1; > } > > static inline int xfs_sb_version_hasattr(xfs_sb_t *sbp) > { > - return ((sbp)->sb_versionnum == XFS_SB_VERSION_2) || \ > - ((sbp)->sb_versionnum == XFS_SB_VERSION_3) || \ > - ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ > - ((sbp)->sb_versionnum & XFS_SB_VERSION_ATTRBIT)); > + return sbp->sb_versionnum == XFS_SB_VERSION_2 || > + sbp->sb_versionnum == XFS_SB_VERSION_3 || > + (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && > + (sbp->sb_versionnum & XFS_SB_VERSION_ATTRBIT)); > } > > static inline void xfs_sb_version_addattr(xfs_sb_t *sbp) > { > - (sbp)->sb_versionnum = (((sbp)->sb_versionnum == XFS_SB_VERSION_1) ? \ > - XFS_SB_VERSION_2 : \ > - ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) ? \ > - ((sbp)->sb_versionnum | XFS_SB_VERSION_ATTRBIT) : \ > - (XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT))); > + if (sbp->sb_versionnum == XFS_SB_VERSION_1) > + sbp->sb_versionnum = XFS_SB_VERSION_2; > + else if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) > + sbp->sb_versionnum |= XFS_SB_VERSION_ATTRBIT; > + else > + sbp->sb_versionnum = XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT; > } > > static inline int xfs_sb_version_hasnlink(xfs_sb_t *sbp) > { > - return ((sbp)->sb_versionnum == XFS_SB_VERSION_3) || \ > - ((XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ > - ((sbp)->sb_versionnum & XFS_SB_VERSION_NLINKBIT)); > + return sbp->sb_versionnum == XFS_SB_VERSION_3 || > + (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && > + (sbp->sb_versionnum & XFS_SB_VERSION_NLINKBIT)); > } > > static inline void xfs_sb_version_addnlink(xfs_sb_t *sbp) > { > - (sbp)->sb_versionnum = ((sbp)->sb_versionnum <= XFS_SB_VERSION_2 ? \ > - XFS_SB_VERSION_3 : \ > - ((sbp)->sb_versionnum | XFS_SB_VERSION_NLINKBIT)); > + if (sbp->sb_versionnum <= XFS_SB_VERSION_2) > + sbp->sb_versionnum = XFS_SB_VERSION_3; > + else > + sbp->sb_versionnum |= XFS_SB_VERSION_NLINKBIT; > } > > static inline int xfs_sb_version_hasquota(xfs_sb_t *sbp) > { > - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ > - ((sbp)->sb_versionnum & XFS_SB_VERSION_QUOTABIT); > + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && > + (sbp->sb_versionnum & XFS_SB_VERSION_QUOTABIT); > } > > static inline void xfs_sb_version_addquota(xfs_sb_t *sbp) > { > - (sbp)->sb_versionnum = \ > - (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 ? \ > - ((sbp)->sb_versionnum | XFS_SB_VERSION_QUOTABIT) : \ > - (xfs_sb_version_tonew((sbp)->sb_versionnum) | \ > - XFS_SB_VERSION_QUOTABIT)); > + if (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) > + sbp->sb_versionnum |= XFS_SB_VERSION_QUOTABIT; > + else > + sbp->sb_versionnum = xfs_sb_version_tonew(sbp->sb_versionnum) | > + XFS_SB_VERSION_QUOTABIT; > } > > static inline int xfs_sb_version_hasalign(xfs_sb_t *sbp) > { > - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ > - ((sbp)->sb_versionnum & XFS_SB_VERSION_ALIGNBIT); > + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && > + (sbp->sb_versionnum & XFS_SB_VERSION_ALIGNBIT); > } > > static inline int xfs_sb_version_hasdalign(xfs_sb_t *sbp) > { > - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ > - ((sbp)->sb_versionnum & XFS_SB_VERSION_DALIGNBIT); > + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && > + (sbp->sb_versionnum & XFS_SB_VERSION_DALIGNBIT); > } > > static inline int xfs_sb_version_hasshared(xfs_sb_t *sbp) > { > - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ > - ((sbp)->sb_versionnum & XFS_SB_VERSION_SHAREDBIT); > + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && > + (sbp->sb_versionnum & XFS_SB_VERSION_SHAREDBIT); > } > > static inline int xfs_sb_version_hasdirv2(xfs_sb_t *sbp) > { > - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ > - ((sbp)->sb_versionnum & XFS_SB_VERSION_DIRV2BIT); > + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && > + (sbp->sb_versionnum & XFS_SB_VERSION_DIRV2BIT); > } > > static inline int xfs_sb_version_haslogv2(xfs_sb_t *sbp) > { > - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ > - ((sbp)->sb_versionnum & XFS_SB_VERSION_LOGV2BIT); > + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && > + (sbp->sb_versionnum & XFS_SB_VERSION_LOGV2BIT); > } > > static inline int xfs_sb_version_hasextflgbit(xfs_sb_t *sbp) > { > - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ > - ((sbp)->sb_versionnum & XFS_SB_VERSION_EXTFLGBIT); > + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && > + (sbp->sb_versionnum & XFS_SB_VERSION_EXTFLGBIT); > } > > static inline int xfs_sb_version_hassector(xfs_sb_t *sbp) > { > - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ > - ((sbp)->sb_versionnum & XFS_SB_VERSION_SECTORBIT); > + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && > + (sbp->sb_versionnum & XFS_SB_VERSION_SECTORBIT); > } > > static inline int xfs_sb_version_hasasciici(xfs_sb_t *sbp) > { > - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ > + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && > (sbp->sb_versionnum & XFS_SB_VERSION_BORGBIT); > } > > static inline int xfs_sb_version_hasmorebits(xfs_sb_t *sbp) > { > - return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ > - ((sbp)->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT); > + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 && > + (sbp->sb_versionnum & XFS_SB_VERSION_MOREBITSBIT); > } > > /* > @@ -464,22 +472,20 @@ > > static inline int xfs_sb_version_haslazysbcount(xfs_sb_t *sbp) > { > - return (xfs_sb_version_hasmorebits(sbp) && \ > - ((sbp)->sb_features2 & XFS_SB_VERSION2_LAZYSBCOUNTBIT)); > + return xfs_sb_version_hasmorebits(sbp) && > + (sbp->sb_features2 & XFS_SB_VERSION2_LAZYSBCOUNTBIT); > } > > static inline int xfs_sb_version_hasattr2(xfs_sb_t *sbp) > { > - return (xfs_sb_version_hasmorebits(sbp)) && \ > - ((sbp)->sb_features2 & XFS_SB_VERSION2_ATTR2BIT); > + return xfs_sb_version_hasmorebits(sbp) && > + (sbp->sb_features2 & XFS_SB_VERSION2_ATTR2BIT); > } > > static inline void xfs_sb_version_addattr2(xfs_sb_t *sbp) > { > - ((sbp)->sb_versionnum = \ > - ((sbp)->sb_versionnum | XFS_SB_VERSION_MOREBITSBIT), \ > - ((sbp)->sb_features2 = \ > - ((sbp)->sb_features2 | XFS_SB_VERSION2_ATTR2BIT))); > + sbp->sb_versionnum |= XFS_SB_VERSION_MOREBITSBIT; > + sbp->sb_features2 |= XFS_SB_VERSION2_ATTR2BIT; > } > > static inline void xfs_sb_version_removeattr2(xfs_sb_t *sbp) > Index: xfs-cmds/xfsprogs/include/xfs_trans.h > =================================================================== > --- xfs-cmds.orig/xfsprogs/include/xfs_trans.h 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/include/xfs_trans.h 2008-12-06 20:05:49.000000000 +0100 > @@ -768,6 +768,7 @@ > xfs_lsn_t li_lsn; /* last on-disk lsn */ > struct xfs_log_item_desc *li_desc; /* ptr to current desc*/ > struct xfs_mount *li_mountp; /* ptr to fs mount */ > + struct xfs_ail *li_ailp; /* ptr to AIL */ > uint li_type; /* item type */ > uint li_flags; /* misc flags */ > struct xfs_log_item *li_bio_list; /* buffer item list */ > @@ -970,10 +971,6 @@ > void xfs_trans_cancel(xfs_trans_t *, int); > int xfs_trans_ail_init(struct xfs_mount *); > void xfs_trans_ail_destroy(struct xfs_mount *); > -void xfs_trans_push_ail(struct xfs_mount *, xfs_lsn_t); > -xfs_lsn_t xfs_trans_tail_ail(struct xfs_mount *); > -void xfs_trans_unlocked_item(struct xfs_mount *, > - xfs_log_item_t *); > xfs_log_busy_slot_t *xfs_trans_add_busy(xfs_trans_t *tp, > xfs_agnumber_t ag, > xfs_extlen_t idx); > Index: xfs-cmds/xfsprogs/db/bmap.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/db/bmap.c 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/db/bmap.c 2008-12-06 20:05:49.000000000 +0100 > @@ -171,9 +171,9 @@ > push_cur(); > set_cur_inode(iocur_top->ino); > dip = iocur_top->data; > - if (be32_to_cpu(dip->di_core.di_nextents)) > + if (dip->di_nextents) > dfork = 1; > - if (be16_to_cpu(dip->di_core.di_anextents)) > + if (dip->di_anextents) > afork = 1; > pop_cur(); > } > Index: xfs-cmds/xfsprogs/db/check.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/db/check.c 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/db/check.c 2008-12-06 20:05:49.000000000 +0100 > @@ -2502,23 +2502,23 @@ > inodata_t *id, > xfs_ino_t *parent) > { > - xfs_fsize_t size = be64_to_cpu(dip->di_core.di_size); > + xfs_fsize_t size = be64_to_cpu(dip->di_size); > > if (size <= XFS_DFORK_DSIZE(dip, mp) && > - dip->di_core.di_format == XFS_DINODE_FMT_LOCAL) > + dip->di_format == XFS_DINODE_FMT_LOCAL) > *parent = process_shortform_dir_v1(dip, dot, dotdot, id); > else if (size == XFS_LBSIZE(mp) && > - (dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS || > - dip->di_core.di_format == XFS_DINODE_FMT_BTREE)) > + (dip->di_format == XFS_DINODE_FMT_EXTENTS || > + dip->di_format == XFS_DINODE_FMT_BTREE)) > *parent = process_leaf_dir_v1(blkmap, dot, dotdot, id); > else if (size >= XFS_LBSIZE(mp) && > - (dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS || > - dip->di_core.di_format == XFS_DINODE_FMT_BTREE)) > + (dip->di_format == XFS_DINODE_FMT_EXTENTS || > + dip->di_format == XFS_DINODE_FMT_BTREE)) > *parent = process_node_dir_v1(blkmap, dot, dotdot, id); > else { > dbprintf("bad size (%lld) or format (%d) for directory inode " > "%lld\n", > - size, dip->di_core.di_format, id->ino); > + size, dip->di_format, id->ino); > error++; > return 1; > } > @@ -2535,25 +2535,25 @@ > xfs_ino_t *parent) > { > xfs_fileoff_t last = 0; > - xfs_fsize_t size = be64_to_cpu(dip->di_core.di_size); > + xfs_fsize_t size = be64_to_cpu(dip->di_size); > > if (blkmap) > last = blkmap_last_off(blkmap); > if (size <= XFS_DFORK_DSIZE(dip, mp) && > - dip->di_core.di_format == XFS_DINODE_FMT_LOCAL) > + dip->di_format == XFS_DINODE_FMT_LOCAL) > *parent = process_sf_dir_v2(dip, dot, dotdot, id); > else if (last == mp->m_dirblkfsbs && > - (dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS || > - dip->di_core.di_format == XFS_DINODE_FMT_BTREE)) > + (dip->di_format == XFS_DINODE_FMT_EXTENTS || > + dip->di_format == XFS_DINODE_FMT_BTREE)) > *parent = process_block_dir_v2(blkmap, dot, dotdot, id); > else if (last >= mp->m_dirleafblk + mp->m_dirblkfsbs && > - (dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS || > - dip->di_core.di_format == XFS_DINODE_FMT_BTREE)) > + (dip->di_format == XFS_DINODE_FMT_EXTENTS || > + dip->di_format == XFS_DINODE_FMT_BTREE)) > *parent = process_leaf_node_dir_v2(blkmap, dot, dotdot, id, size); > else { > dbprintf("bad size (%lld) or format (%d) for directory inode " > "%lld\n", > - size, dip->di_core.di_format, id->ino); > + size, dip->di_format, id->ino); > error++; > return 1; > } > @@ -2639,7 +2639,7 @@ > "dev", "local", "extents", "btree", "uuid" > }; > > - libxfs_dinode_from_disk(&idic, &dip->di_core); > + libxfs_dinode_from_disk(&idic, dip); > > ino = XFS_AGINO_TO_INO(mp, be32_to_cpu(agf->agf_seqno), agino); > if (!isfree) { > @@ -2669,7 +2669,7 @@ > idic.di_nblocks, ino); > error++; > } > - if (idic.di_version == XFS_DINODE_VERSION_1) > + if (idic.di_version == 1) > nlink = idic.di_onlink; > else > nlink = idic.di_nlink; > @@ -2773,7 +2773,7 @@ > type = DBM_UNKNOWN; > break; > } > - if (idic.di_version == XFS_DINODE_VERSION_1) > + if (idic.di_version == 1) > setlink_inode(id, idic.di_onlink, type == DBM_DIR, security); > else { > sbversion |= XFS_SB_VERSION_NLINKBIT; > @@ -2901,12 +2901,12 @@ > xfs_fsblock_t bno; > > bno = XFS_INO_TO_FSB(mp, id->ino); > - if (whichfork == XFS_DATA_FORK && be64_to_cpu(dip->di_core.di_size) > > + if (whichfork == XFS_DATA_FORK && be64_to_cpu(dip->di_size) > > XFS_DFORK_DSIZE(dip, mp)) { > if (!sflag || id->ilist || CHECK_BLIST(bno)) > dbprintf("local inode %lld data is too large (size " > "%lld)\n", > - id->ino, be64_to_cpu(dip->di_core.di_size)); > + id->ino, be64_to_cpu(dip->di_size)); > error++; > } > else if (whichfork == XFS_ATTR_FORK) { > @@ -3638,7 +3638,7 @@ > offset = XFS_DIR2_DATA_FIRST_OFFSET; > for (i = sf->hdr.count - 1, i8 = 0; i >= 0; i--) { > if ((__psint_t)sfe + xfs_dir2_sf_entsize_byentry(sf, sfe) - > - (__psint_t)sf > be64_to_cpu(dip->di_core.di_size)) { > + (__psint_t)sf > be64_to_cpu(dip->di_size)) { > if (!sflag) > dbprintf("dir %llu bad size in entry at %d\n", > id->ino, > @@ -3680,10 +3680,10 @@ > sfe = xfs_dir2_sf_nextentry(sf, sfe); > } > if (i < 0 && (__psint_t)sfe - (__psint_t)sf != > - be64_to_cpu(dip->di_core.di_size)) { > + be64_to_cpu(dip->di_size)) { > if (!sflag) > dbprintf("dir %llu size is %lld, should be %u\n", > - id->ino, be64_to_cpu(dip->di_core.di_size), > + id->ino, be64_to_cpu(dip->di_size), > (uint)((char *)sfe - (char *)sf)); > error++; > } > @@ -3760,9 +3760,9 @@ > sfe->namelen, sfe->namelen, sfe->name, lino); > sfe = xfs_dir_sf_nextentry(sfe); > } > - if ((__psint_t)sfe - (__psint_t)sf != be64_to_cpu(dip->di_core.di_size)) > + if ((__psint_t)sfe - (__psint_t)sf != be64_to_cpu(dip->di_size)) > dbprintf("dir %llu size is %lld, should be %d\n", > - id->ino, be64_to_cpu(dip->di_core.di_size), > + id->ino, be64_to_cpu(dip->di_size), > (int)((char *)sfe - (char *)sf)); > lino = XFS_GET_DIR_INO8(sf->hdr.parent); > cid = find_inode(lino, 1); > Index: xfs-cmds/xfsprogs/db/dir2sf.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/db/dir2sf.c 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/db/dir2sf.c 2008-12-06 20:05:49.000000000 +0100 > @@ -73,10 +73,10 @@ > void *obj, > int startoff) > { > - xfs_dir2_sf_t *sf; > + xfs_dinode_t *dip = obj; > + xfs_dir2_sf_t *sf = (xfs_dir2_sf_t *)XFS_DFORK_DPTR(dip); > > ASSERT(bitoffs(startoff) == 0); > - sf = &((xfs_dinode_t *)obj)->di_u.di_dir2sf; > return sf->hdr.i8count == 0; > } > > @@ -86,10 +86,10 @@ > void *obj, > int startoff) > { > - xfs_dir2_sf_t *sf; > + xfs_dinode_t *dip = obj; > + xfs_dir2_sf_t *sf = (xfs_dir2_sf_t *)XFS_DFORK_DPTR(dip); > > ASSERT(bitoffs(startoff) == 0); > - sf = &((xfs_dinode_t *)obj)->di_u.di_dir2sf; > return sf->hdr.i8count != 0; > } > > @@ -100,11 +100,11 @@ > int startoff, > int idx) > { > - xfs_dir2_sf_t *sf; > + xfs_dinode_t *dip = obj; > + xfs_dir2_sf_t *sf = (xfs_dir2_sf_t *)XFS_DFORK_DPTR(dip); > > ASSERT(bitoffs(startoff) == 0); > ASSERT(idx == 0); > - sf = &((xfs_dinode_t *)obj)->di_u.di_dir2sf; > return bitize(sf->hdr.i8count ? > (uint)sizeof(xfs_dir2_ino8_t) : > (uint)sizeof(xfs_dir2_ino4_t)); > Index: xfs-cmds/xfsprogs/db/field.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/db/field.c 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/db/field.c 2008-12-06 20:05:49.000000000 +0100 > @@ -150,8 +150,6 @@ > FTARG_DONULL, fa_dfsbno, NULL }, > { FLDT_DINODE_A, "dinode_a", NULL, (char *)inode_a_flds, inode_a_size, > FTARG_SIZE|FTARG_OKEMPTY, NULL, inode_a_flds }, > - { FLDT_DINODE_CORE, "dinode_core", NULL, (char *)inode_core_flds, > - SI(bitsz(xfs_dinode_core_t)), 0, NULL, inode_core_flds }, > { FLDT_DINODE_FMT, "dinode_fmt", fp_dinode_fmt, NULL, > SI(bitsz(__int8_t)), 0, NULL, NULL }, > { FLDT_DINODE_U, "dinode_u", NULL, (char *)inode_u_flds, inode_u_size, > Index: xfs-cmds/xfsprogs/db/field.h > =================================================================== > --- xfs-cmds.orig/xfsprogs/db/field.h 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/db/field.h 2008-12-06 20:05:49.000000000 +0100 > @@ -72,7 +72,6 @@ > FLDT_DFILOFFD, > FLDT_DFSBNO, > FLDT_DINODE_A, > - FLDT_DINODE_CORE, > FLDT_DINODE_FMT, > FLDT_DINODE_U, > FLDT_DIR, > Index: xfs-cmds/xfsprogs/db/frag.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/db/frag.c 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/db/frag.c 2008-12-06 20:05:49.000000000 +0100 > @@ -308,20 +308,18 @@ > xfs_dinode_t *dip) > { > __uint64_t actual; > - xfs_dinode_core_t *dic; > __uint64_t ideal; > xfs_ino_t ino; > int skipa; > int skipd; > > - dic = &dip->di_core; > ino = XFS_AGINO_TO_INO(mp, be32_to_cpu(agf->agf_seqno), agino); > - switch (be16_to_cpu(dic->di_mode) & S_IFMT) { > + switch (be16_to_cpu(dip->di_mode) & S_IFMT) { > case S_IFDIR: > skipd = !dflag; > break; > case S_IFREG: > - if (!rflag && (be16_to_cpu(dic->di_flags) & XFS_DIFLAG_REALTIME)) > + if (!rflag && (be16_to_cpu(dip->di_flags) & XFS_DIFLAG_REALTIME)) > skipd = 1; > else if (!Rflag && > (ino == mp->m_sb.sb_rbmino || > Index: xfs-cmds/xfsprogs/db/inode.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/db/inode.c 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/db/inode.c 2008-12-06 20:05:49.000000000 +0100 > @@ -40,6 +40,7 @@ > static int inode_core_projid_count(void *obj, int startoff); > static int inode_core_nlinkv1_count(void *obj, int startoff); > static int inode_f(int argc, char **argv); > +static int inode_u_offset(void *obj, int startoff, int idx); > static int inode_u_bmbt_count(void *obj, int startoff); > static int inode_u_bmx_count(void *obj, int startoff); > static int inode_u_c_count(void *obj, int startoff); > @@ -60,91 +61,85 @@ > > #define OFF(f) bitize(offsetof(xfs_dinode_t, di_ ## f)) > const field_t inode_flds[] = { > - { "core", FLDT_DINODE_CORE, OI(OFF(core)), C1, 0, TYP_NONE }, > - { "next_unlinked", FLDT_AGINO, OI(OFF(next_unlinked)), C1, 0, > - TYP_INODE }, > - { "u", FLDT_DINODE_U, OI(OFF(u)), C1, 0, TYP_NONE }, > - { "a", FLDT_DINODE_A, inode_a_offset, inode_a_count, > - FLD_COUNT|FLD_OFFSET, TYP_NONE }, > - { NULL } > -}; > - > -#define COFF(f) bitize(offsetof(xfs_dinode_core_t, di_ ## f)) > -const field_t inode_core_flds[] = { > - { "magic", FLDT_UINT16X, OI(COFF(magic)), C1, 0, TYP_NONE }, > - { "mode", FLDT_UINT16O, OI(COFF(mode)), C1, 0, TYP_NONE }, > - { "version", FLDT_INT8D, OI(COFF(version)), C1, 0, TYP_NONE }, > - { "format", FLDT_DINODE_FMT, OI(COFF(format)), C1, 0, TYP_NONE }, > - { "nlinkv1", FLDT_UINT16D, OI(COFF(onlink)), inode_core_nlinkv1_count, > + { "magic", FLDT_UINT16X, OI(OFF(magic)), C1, 0, TYP_NONE }, > + { "mode", FLDT_UINT16O, OI(OFF(mode)), C1, 0, TYP_NONE }, > + { "version", FLDT_INT8D, OI(OFF(version)), C1, 0, TYP_NONE }, > + { "format", FLDT_DINODE_FMT, OI(OFF(format)), C1, 0, TYP_NONE }, > + { "nlinkv1", FLDT_UINT16D, OI(OFF(onlink)), inode_core_nlinkv1_count, > FLD_COUNT, TYP_NONE }, > - { "nlinkv2", FLDT_UINT32D, OI(COFF(nlink)), inode_core_nlinkv2_count, > + { "nlinkv2", FLDT_UINT32D, OI(OFF(nlink)), inode_core_nlinkv2_count, > FLD_COUNT, TYP_NONE }, > - { "onlink", FLDT_UINT16D, OI(COFF(onlink)), inode_core_onlink_count, > + { "onlink", FLDT_UINT16D, OI(OFF(onlink)), inode_core_onlink_count, > FLD_COUNT, TYP_NONE }, > - { "projid", FLDT_UINT16D, OI(COFF(projid)), inode_core_projid_count, > + { "projid", FLDT_UINT16D, OI(OFF(projid)), inode_core_projid_count, > FLD_COUNT, TYP_NONE }, > - { "uid", FLDT_UINT32D, OI(COFF(uid)), C1, 0, TYP_NONE }, > - { "gid", FLDT_UINT32D, OI(COFF(gid)), C1, 0, TYP_NONE }, > - { "flushiter", FLDT_UINT16D, OI(COFF(flushiter)), C1, 0, TYP_NONE }, > - { "atime", FLDT_TIMESTAMP, OI(COFF(atime)), C1, 0, TYP_NONE }, > - { "mtime", FLDT_TIMESTAMP, OI(COFF(mtime)), C1, 0, TYP_NONE }, > - { "ctime", FLDT_TIMESTAMP, OI(COFF(ctime)), C1, 0, TYP_NONE }, > - { "size", FLDT_FSIZE, OI(COFF(size)), C1, 0, TYP_NONE }, > - { "nblocks", FLDT_DRFSBNO, OI(COFF(nblocks)), C1, 0, TYP_NONE }, > - { "extsize", FLDT_EXTLEN, OI(COFF(extsize)), C1, 0, TYP_NONE }, > - { "nextents", FLDT_EXTNUM, OI(COFF(nextents)), C1, 0, TYP_NONE }, > - { "naextents", FLDT_AEXTNUM, OI(COFF(anextents)), C1, 0, TYP_NONE }, > - { "forkoff", FLDT_UINT8D, OI(COFF(forkoff)), C1, 0, TYP_NONE }, > - { "aformat", FLDT_DINODE_FMT, OI(COFF(aformat)), C1, 0, TYP_NONE }, > - { "dmevmask", FLDT_UINT32X, OI(COFF(dmevmask)), C1, 0, TYP_NONE }, > - { "dmstate", FLDT_UINT16D, OI(COFF(dmstate)), C1, 0, TYP_NONE }, > - { "flags", FLDT_UINT16X, OI(COFF(flags)), C1, FLD_SKIPALL, TYP_NONE }, > + { "uid", FLDT_UINT32D, OI(OFF(uid)), C1, 0, TYP_NONE }, > + { "gid", FLDT_UINT32D, OI(OFF(gid)), C1, 0, TYP_NONE }, > + { "flushiter", FLDT_UINT16D, OI(OFF(flushiter)), C1, 0, TYP_NONE }, > + { "atime", FLDT_TIMESTAMP, OI(OFF(atime)), C1, 0, TYP_NONE }, > + { "mtime", FLDT_TIMESTAMP, OI(OFF(mtime)), C1, 0, TYP_NONE }, > + { "ctime", FLDT_TIMESTAMP, OI(OFF(ctime)), C1, 0, TYP_NONE }, > + { "size", FLDT_FSIZE, OI(OFF(size)), C1, 0, TYP_NONE }, > + { "nblocks", FLDT_DRFSBNO, OI(OFF(nblocks)), C1, 0, TYP_NONE }, > + { "extsize", FLDT_EXTLEN, OI(OFF(extsize)), C1, 0, TYP_NONE }, > + { "nextents", FLDT_EXTNUM, OI(OFF(nextents)), C1, 0, TYP_NONE }, > + { "naextents", FLDT_AEXTNUM, OI(OFF(anextents)), C1, 0, TYP_NONE }, > + { "forkoff", FLDT_UINT8D, OI(OFF(forkoff)), C1, 0, TYP_NONE }, > + { "aformat", FLDT_DINODE_FMT, OI(OFF(aformat)), C1, 0, TYP_NONE }, > + { "dmevmask", FLDT_UINT32X, OI(OFF(dmevmask)), C1, 0, TYP_NONE }, > + { "dmstate", FLDT_UINT16D, OI(OFF(dmstate)), C1, 0, TYP_NONE }, > + { "flags", FLDT_UINT16X, OI(OFF(flags)), C1, FLD_SKIPALL, TYP_NONE }, > { "newrtbm", FLDT_UINT1, > - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NEWRTBM_BIT - 1), C1, > + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NEWRTBM_BIT - 1), C1, > 0, TYP_NONE }, > { "prealloc", FLDT_UINT1, > - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_PREALLOC_BIT - 1), C1, > + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_PREALLOC_BIT - 1), C1, > 0, TYP_NONE }, > { "realtime", FLDT_UINT1, > - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_REALTIME_BIT - 1), C1, > + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_REALTIME_BIT - 1), C1, > 0, TYP_NONE }, > { "immutable", FLDT_UINT1, > - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_IMMUTABLE_BIT-1), C1, > + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_IMMUTABLE_BIT-1), C1, > 0, TYP_NONE }, > { "append", FLDT_UINT1, > - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_APPEND_BIT - 1), C1, > + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_APPEND_BIT - 1), C1, > 0, TYP_NONE }, > { "sync", FLDT_UINT1, > - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_SYNC_BIT - 1), C1, > + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_SYNC_BIT - 1), C1, > 0, TYP_NONE }, > { "noatime", FLDT_UINT1, > - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NOATIME_BIT - 1), C1, > + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NOATIME_BIT - 1), C1, > 0, TYP_NONE }, > { "nodump", FLDT_UINT1, > - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NODUMP_BIT - 1), C1, > + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NODUMP_BIT - 1), C1, > 0, TYP_NONE }, > { "rtinherit", FLDT_UINT1, > - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_RTINHERIT_BIT-1), C1, > + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_RTINHERIT_BIT-1), C1, > 0, TYP_NONE }, > { "projinherit", FLDT_UINT1, > - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_PROJINHERIT_BIT-1),C1, > + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_PROJINHERIT_BIT-1),C1, > 0, TYP_NONE }, > { "nosymlinks", FLDT_UINT1, > - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NOSYMLINKS_BIT-1), C1, > + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NOSYMLINKS_BIT-1), C1, > 0, TYP_NONE }, > { "extsz", FLDT_UINT1, > - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_EXTSIZE_BIT-1),C1, > + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_EXTSIZE_BIT-1),C1, > 0, TYP_NONE }, > { "extszinherit", FLDT_UINT1, > - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_EXTSZINHERIT_BIT-1),C1, > + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_EXTSZINHERIT_BIT-1),C1, > 0, TYP_NONE }, > { "nodefrag", FLDT_UINT1, > - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NODEFRAG_BIT-1),C1, > + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_NODEFRAG_BIT-1),C1, > 0, TYP_NONE }, > { "filestream", FLDT_UINT1, > - OI(COFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_FILESTREAM_BIT-1),C1, > + OI(OFF(flags) + bitsz(__uint16_t) - XFS_DIFLAG_FILESTREAM_BIT-1),C1, > 0, TYP_NONE }, > - { "gen", FLDT_UINT32D, OI(COFF(gen)), C1, 0, TYP_NONE }, > + { "gen", FLDT_UINT32D, OI(OFF(gen)), C1, 0, TYP_NONE }, > + { "next_unlinked", FLDT_AGINO, OI(OFF(next_unlinked)), C1, 0, > + TYP_INODE }, > + { "u", FLDT_DINODE_U, inode_u_offset, C1, FLD_OFFSET, TYP_NONE }, > + { "a", FLDT_DINODE_A, inode_a_offset, inode_a_count, > + FLD_COUNT|FLD_OFFSET, TYP_NONE }, > { NULL } > }; > > @@ -226,7 +221,7 @@ > if (!XFS_DFORK_Q(dip)) > return 0; > ASSERT((char *)XFS_DFORK_APTR(dip) - (char *)dip == byteize(startoff)); > - return dip->di_core.di_aformat == XFS_DINODE_FMT_BTREE; > + return dip->di_aformat == XFS_DINODE_FMT_BTREE; > } > > static int > @@ -242,8 +237,8 @@ > if (!XFS_DFORK_Q(dip)) > return 0; > ASSERT((char *)XFS_DFORK_APTR(dip) - (char *)dip == byteize(startoff)); > - return dip->di_core.di_aformat == XFS_DINODE_FMT_EXTENTS ? > - be16_to_cpu(dip->di_core.di_anextents) : 0; > + return dip->di_aformat == XFS_DINODE_FMT_EXTENTS ? > + be16_to_cpu(dip->di_anextents) : 0; > } > > static int > @@ -251,10 +246,9 @@ > void *obj, > int startoff) > { > - xfs_dinode_t *dip; > + xfs_dinode_t *dip = obj; > > ASSERT(startoff == 0); > - dip = obj; > return XFS_DFORK_Q(dip); > } > > @@ -264,11 +258,10 @@ > int startoff, > int idx) > { > - xfs_dinode_t *dip; > + xfs_dinode_t *dip = obj; > > ASSERT(startoff == 0); > ASSERT(idx == 0); > - dip = obj; > ASSERT(XFS_DFORK_Q(dip)); > return bitize((int)((char *)XFS_DFORK_APTR(dip) - (char *)dip)); > } > @@ -286,7 +279,7 @@ > if (!XFS_DFORK_Q(dip)) > return 0; > ASSERT((char *)XFS_DFORK_APTR(dip) - (char *)dip == byteize(startoff)); > - return dip->di_core.di_aformat == XFS_DINODE_FMT_LOCAL; > + return dip->di_aformat == XFS_DINODE_FMT_LOCAL; > } > > int > @@ -301,12 +294,12 @@ > ASSERT(startoff == 0); > ASSERT(idx == 0); > dip = obj; > - switch (dip->di_core.di_aformat) { > + switch (dip->di_aformat) { > case XFS_DINODE_FMT_LOCAL: > asf = (xfs_attr_shortform_t *)XFS_DFORK_APTR(dip); > return bitize(be16_to_cpu(asf->hdr.totsize)); > case XFS_DINODE_FMT_EXTENTS: > - return (int)be16_to_cpu(dip->di_core.di_anextents) * > + return (int)be16_to_cpu(dip->di_anextents) * > bitsz(xfs_bmbt_rec_t); > case XFS_DINODE_FMT_BTREE: > return bitize((int)XFS_DFORK_ASIZE(dip, mp)); > @@ -320,12 +313,11 @@ > void *obj, > int startoff) > { > - xfs_dinode_core_t *dic; > + xfs_dinode_t *dip = obj; > > ASSERT(startoff == 0); > ASSERT(obj == iocur_top->data); > - dic = obj; > - return dic->di_version == XFS_DINODE_VERSION_1; > + return dip->di_version == 1; > } > > static int > @@ -333,12 +325,11 @@ > void *obj, > int startoff) > { > - xfs_dinode_core_t *dic; > + xfs_dinode_t *dip = obj; > > ASSERT(startoff == 0); > ASSERT(obj == iocur_top->data); > - dic = obj; > - return dic->di_version == XFS_DINODE_VERSION_2; > + return dip->di_version == 2; > } > > static int > @@ -346,12 +337,11 @@ > void *obj, > int startoff) > { > - xfs_dinode_core_t *dic; > + xfs_dinode_t *dip = obj; > > ASSERT(startoff == 0); > ASSERT(obj == iocur_top->data); > - dic = obj; > - return dic->di_version == XFS_DINODE_VERSION_2; > + return dip->di_version == 2; > } > > static int > @@ -359,12 +349,11 @@ > void *obj, > int startoff) > { > - xfs_dinode_core_t *dic; > + xfs_dinode_t *dip = obj; > > ASSERT(startoff == 0); > ASSERT(obj == iocur_top->data); > - dic = obj; > - return dic->di_version == XFS_DINODE_VERSION_2; > + return dip->di_version == 2; > } > > static int > @@ -428,17 +417,29 @@ > } > > static int > +inode_u_offset( > + void *obj, > + int startoff, > + int idx) > +{ > + xfs_dinode_t *dip = obj; > + > + ASSERT(startoff == 0); > + ASSERT(idx == 0); > + return bitize((int)((char *)XFS_DFORK_DPTR(dip) - (char *)dip)); > +} > + > +static int > inode_u_bmbt_count( > void *obj, > int startoff) > { > - xfs_dinode_t *dip; > + xfs_dinode_t *dip = obj; > > ASSERT(bitoffs(startoff) == 0); > ASSERT(obj == iocur_top->data); > - dip = obj; > - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); > - return dip->di_core.di_format == XFS_DINODE_FMT_BTREE; > + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); > + return dip->di_format == XFS_DINODE_FMT_BTREE; > } > > static int > @@ -446,14 +447,13 @@ > void *obj, > int startoff) > { > - xfs_dinode_t *dip; > + xfs_dinode_t *dip = obj; > > ASSERT(bitoffs(startoff) == 0); > ASSERT(obj == iocur_top->data); > - dip = obj; > - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); > - return dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS ? > - be32_to_cpu(dip->di_core.di_nextents) : 0; > + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); > + return dip->di_format == XFS_DINODE_FMT_EXTENTS ? > + be32_to_cpu(dip->di_nextents) : 0; > } > > static int > @@ -461,15 +461,14 @@ > void *obj, > int startoff) > { > - xfs_dinode_t *dip; > + xfs_dinode_t *dip = obj; > > ASSERT(bitoffs(startoff) == 0); > ASSERT(obj == iocur_top->data); > - dip = obj; > - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); > - return dip->di_core.di_format == XFS_DINODE_FMT_LOCAL && > - (be16_to_cpu(dip->di_core.di_mode) & S_IFMT) == S_IFREG ? > - (int)be64_to_cpu(dip->di_core.di_size) : 0; > + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); > + return dip->di_format == XFS_DINODE_FMT_LOCAL && > + (be16_to_cpu(dip->di_mode) & S_IFMT) == S_IFREG ? > + (int)be64_to_cpu(dip->di_size) : 0; > } > > static int > @@ -477,13 +476,12 @@ > void *obj, > int startoff) > { > - xfs_dinode_t *dip; > + xfs_dinode_t *dip = obj; > > ASSERT(bitoffs(startoff) == 0); > ASSERT(obj == iocur_top->data); > - dip = obj; > - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); > - return dip->di_core.di_format == XFS_DINODE_FMT_DEV; > + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); > + return dip->di_format == XFS_DINODE_FMT_DEV; > } > > static int > @@ -491,13 +489,12 @@ > void *obj, > int startoff) > { > - xfs_dinode_t *dip; > + xfs_dinode_t *dip = obj; > > ASSERT(bitoffs(startoff) == 0); > ASSERT(obj == iocur_top->data); > - dip = obj; > - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); > - return dip->di_core.di_format == XFS_DINODE_FMT_UUID; > + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); > + return dip->di_format == XFS_DINODE_FMT_UUID; > } > > static int > @@ -505,14 +502,13 @@ > void *obj, > int startoff) > { > - xfs_dinode_t *dip; > + xfs_dinode_t *dip = obj; > > ASSERT(bitoffs(startoff) == 0); > ASSERT(obj == iocur_top->data); > - dip = obj; > - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); > - return dip->di_core.di_format == XFS_DINODE_FMT_LOCAL && > - (be16_to_cpu(dip->di_core.di_mode) & S_IFMT) == S_IFDIR > + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); > + return dip->di_format == XFS_DINODE_FMT_LOCAL && > + (be16_to_cpu(dip->di_mode) & S_IFMT) == S_IFDIR > && !xfs_sb_version_hasdirv2(&mp->m_sb); > } > > @@ -521,14 +517,13 @@ > void *obj, > int startoff) > { > - xfs_dinode_t *dip; > + xfs_dinode_t *dip = obj; > > ASSERT(bitoffs(startoff) == 0); > ASSERT(obj == iocur_top->data); > - dip = obj; > - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); > - return dip->di_core.di_format == XFS_DINODE_FMT_LOCAL && > - (be16_to_cpu(dip->di_core.di_mode) & S_IFMT) == S_IFDIR && > + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); > + return dip->di_format == XFS_DINODE_FMT_LOCAL && > + (be16_to_cpu(dip->di_mode) & S_IFMT) == S_IFDIR && > xfs_sb_version_hasdirv2(&mp->m_sb); > } > > @@ -543,13 +538,13 @@ > ASSERT(startoff == 0); > ASSERT(idx == 0); > dip = obj; > - switch (dip->di_core.di_format) { > + switch (dip->di_format) { > case XFS_DINODE_FMT_DEV: > return bitsz(xfs_dev_t); > case XFS_DINODE_FMT_LOCAL: > - return bitize((int)be64_to_cpu(dip->di_core.di_size)); > + return bitize((int)be64_to_cpu(dip->di_size)); > case XFS_DINODE_FMT_EXTENTS: > - return (int)be32_to_cpu(dip->di_core.di_nextents) * > + return (int)be32_to_cpu(dip->di_nextents) * > bitsz(xfs_bmbt_rec_t); > case XFS_DINODE_FMT_BTREE: > return bitize((int)XFS_DFORK_DSIZE(dip, mp)); > @@ -565,15 +560,14 @@ > void *obj, > int startoff) > { > - xfs_dinode_t *dip; > + xfs_dinode_t *dip = obj; > > ASSERT(bitoffs(startoff) == 0); > ASSERT(obj == iocur_top->data); > - dip = obj; > - ASSERT((char *)&dip->di_u - (char *)dip == byteize(startoff)); > - return dip->di_core.di_format == XFS_DINODE_FMT_LOCAL && > - (be16_to_cpu(dip->di_core.di_mode) & S_IFMT) == S_IFLNK ? > - (int)be64_to_cpu(dip->di_core.di_size) : 0; > + ASSERT(XFS_DFORK_DPTR(dip) - (char *)dip == byteize(startoff)); > + return dip->di_format == XFS_DINODE_FMT_LOCAL && > + (be16_to_cpu(dip->di_mode) & S_IFMT) == S_IFLNK ? > + (int)be64_to_cpu(dip->di_size) : 0; > } > > void > @@ -609,7 +603,7 @@ > off_cur(offset << mp->m_sb.sb_inodelog, mp->m_sb.sb_inodesize); > dip = iocur_top->data; > iocur_top->ino = ino; > - iocur_top->mode = be16_to_cpu(dip->di_core.di_mode); > + iocur_top->mode = be16_to_cpu(dip->di_mode); > if ((iocur_top->mode & S_IFMT) == S_IFDIR) > iocur_top->dirino = ino; > > Index: xfs-cmds/xfsprogs/db/inode.h > =================================================================== > --- xfs-cmds.orig/xfsprogs/db/inode.h 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/db/inode.h 2008-12-06 20:05:49.000000000 +0100 > @@ -17,7 +17,7 @@ > */ > > extern const struct field inode_a_flds[]; > -extern const struct field inode_core_flds[]; > +extern const struct field inode_flds[]; > extern const struct field inode_flds[]; > extern const struct field inode_hfld[]; > extern const struct field inode_u_flds[]; > Index: xfs-cmds/xfsprogs/db/metadump.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/db/metadump.c 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/db/metadump.c 2008-12-06 20:05:49.000000000 +0100 > @@ -501,8 +501,8 @@ > __uint64_t ino_dir_size; > int i; > > - sfp = &dip->di_u.di_dir2sf; > - ino_dir_size = be64_to_cpu(dip->di_core.di_size); > + sfp = (xfs_dir2_sf_t *)XFS_DFORK_DPTR(dip); > + ino_dir_size = be64_to_cpu(dip->di_size); > if (ino_dir_size > XFS_DFORK_DSIZE(dip, mp)) { > ino_dir_size = XFS_DFORK_DSIZE(dip, mp); > if (show_warnings) > @@ -554,8 +554,9 @@ > xfs_dinode_t *dip) > { > __uint64_t len; > + char *symlink = XFS_DFORK_DPTR(dip); > > - len = be64_to_cpu(dip->di_core.di_size); > + len = be64_to_cpu(dip->di_size); > if (len > XFS_DFORK_DSIZE(dip, mp)) { > if (show_warnings) > print_warning("invalid size (%d) in symlink inode %llu", > @@ -564,7 +565,7 @@ > } > > while (len > 0) > - dip->di_u.di_symlink[--len] = random() % 127 + 1; > + symlink[--len] = random() % 127 + 1; > } > > static void > @@ -1142,27 +1143,24 @@ > xfs_dinode_t *dip, > typnm_t itype) > { > - switch (dip->di_core.di_format) { > - case XFS_DINODE_FMT_LOCAL: > - if (!dont_obfuscate) > - switch (itype) { > - case TYP_DIR2: > - obfuscate_sf_dir(dip); > - break; > - > - case TYP_SYMLINK: > - obfuscate_sf_symlink(dip); > - break; > - > - default: ; > - } > - break; > - > - case XFS_DINODE_FMT_EXTENTS: > - return process_exinode(dip, itype); > - > - case XFS_DINODE_FMT_BTREE: > - return process_btinode(dip, itype); > + switch (dip->di_format) { > + case XFS_DINODE_FMT_LOCAL: > + if (!dont_obfuscate) > + switch (itype) { > + case TYP_DIR2: > + obfuscate_sf_dir(dip); > + break; > + case TYP_SYMLINK: > + obfuscate_sf_symlink(dip); > + break; > + default: > + ; > + } > + break; > + case XFS_DINODE_FMT_EXTENTS: > + return process_exinode(dip, itype); > + case XFS_DINODE_FMT_BTREE: > + return process_btinode(dip, itype); > } > return 1; > } > @@ -1179,7 +1177,7 @@ > cur_ino = XFS_AGINO_TO_INO(mp, agno, agino); > > /* copy appropriate data fork metadata */ > - switch (be16_to_cpu(dip->di_core.di_mode) & S_IFMT) { > + switch (be16_to_cpu(dip->di_mode) & S_IFMT) { > case S_IFDIR: > memset(&dir_data, 0, sizeof(dir_data)); > success = process_inode_data(dip, TYP_DIR2); > @@ -1197,7 +1195,7 @@ > /* copy extended attributes if they exist and forkoff is valid */ > if (success && XFS_DFORK_DSIZE(dip, mp) < XFS_LITINO(mp)) { > attr_data.remote_val_count = 0; > - switch (dip->di_core.di_aformat) { > + switch (dip->di_aformat) { > case XFS_DINODE_FMT_LOCAL: > if (!dont_obfuscate) > obfuscate_sf_attr(dip); > Index: xfs-cmds/xfsprogs/libxfs/util.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/libxfs/util.c 2008-12-06 20:05:45.000000000 +0100 > +++ xfs-cmds/xfsprogs/libxfs/util.c 2008-12-06 20:05:49.000000000 +0100 > @@ -47,126 +47,6 @@ > } > > /* > - * Given a mount structure and an inode number, return a pointer > - * to a newly allocated in-core inode coresponding to the given > - * inode number. > - * > - * Initialize the inode's attributes and extent pointers if it > - * already has them (it will not if the inode has no links). > - * > - * NOTE: this has slightly different behaviour to the kernel in > - * that this version requires the already allocated *ip being > - * passed in while the kernel version does the allocation and > - * returns it in **ip. > - */ > -int > -libxfs_iread( > - xfs_mount_t *mp, > - xfs_trans_t *tp, > - xfs_ino_t ino, > - xfs_inode_t *ip, > - xfs_daddr_t bno) > -{ > - xfs_buf_t *bp; > - xfs_dinode_t *dip; > - int error; > - > - ip->i_ino = ino; > - ip->i_mount = mp; > - > - /* > - * Get pointer's to the on-disk inode and the buffer containing it. > - * If the inode number refers to a block outside the file system > - * then xfs_itobp() will return NULL. In this case we should > - * return NULL as well. Set i_blkno to 0 so that xfs_itobp() will > - * know that this is a new incore inode. > - */ > - error = xfs_itobp(mp, tp, ip, &dip, &bp, bno, 0, XFS_BUF_LOCK); > - if (error) > - return error; > - > - /* > - * If we got something that isn't an inode it means someone > - * (nfs or dmi) has a stale handle. > - */ > - if (be16_to_cpu(dip->di_core.di_magic) != XFS_DINODE_MAGIC) { > - xfs_trans_brelse(tp, bp); > - return EINVAL; > - } > - > - /* > - * If the on-disk inode is already linked to a directory > - * entry, copy all of the inode into the in-core inode. > - * xfs_iformat() handles copying in the inode format > - * specific information. > - * Otherwise, just get the truly permanent information. > - */ > - if (dip->di_core.di_mode) { > - xfs_dinode_from_disk(&ip->i_d, &dip->di_core); > - error = xfs_iformat(ip, dip); > - if (error) { > - xfs_trans_brelse(tp, bp); > - return error; > - } > - } else { > - ip->i_d.di_magic = be16_to_cpu(dip->di_core.di_magic); > - ip->i_d.di_version = dip->di_core.di_version; > - ip->i_d.di_gen = be32_to_cpu(dip->di_core.di_gen); > - ip->i_d.di_flushiter = be16_to_cpu(dip->di_core.di_flushiter); > - /* > - * Make sure to pull in the mode here as well in > - * case the inode is released without being used. > - * This ensures that xfs_inactive() will see that > - * the inode is already free and not try to mess > - * with the uninitialized part of it. > - */ > - ip->i_d.di_mode = 0; > - /* > - * Initialize the per-fork minima and maxima for a new > - * inode here. xfs_iformat will do it for old inodes. > - */ > - ip->i_df.if_ext_max = > - XFS_IFORK_DSIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t); > - } > - > - /* > - * The inode format changed when we moved the link count and > - * made it 32 bits long. If this is an old format inode, > - * convert it in memory to look like a new one. If it gets > - * flushed to disk we will convert back before flushing or > - * logging it. We zero out the new projid field and the old link > - * count field. We'll handle clearing the pad field (the remains > - * of the old uuid field) when we actually convert the inode to > - * the new format. We don't change the version number so that we > - * can distinguish this from a real new format inode. > - */ > - if (ip->i_d.di_version == XFS_DINODE_VERSION_1) { > - ip->i_d.di_nlink = ip->i_d.di_onlink; > - ip->i_d.di_onlink = 0; > - ip->i_d.di_projid = 0; > - } > - > - ip->i_delayed_blks = 0; > - ip->i_size = ip->i_d.di_size; > - > - /* > - * Use xfs_trans_brelse() to release the buffer containing the > - * on-disk inode, because it was acquired with xfs_trans_read_buf() > - * in xfs_itobp() above. If tp is NULL, this is just a normal > - * brelse(). If we're within a transaction, then xfs_trans_brelse() > - * will only release the buffer if it is not dirty within the > - * transaction. It will be OK to release the buffer in this case, > - * because inodes on disk are never destroyed and we will be > - * locking the new in-core inode before putting it in the hash > - * table where other processes can find it. Thus we don't have > - * to worry about the inode being changed just because we released > - * the buffer. > - */ > - xfs_trans_brelse(tp, bp); > - return 0; > -} > - > -/* > * Allocate an inode on disk and return a copy of it's in-core version. > * Set mode, nlink, and rdev appropriately within the inode. > * The uid and gid for the inode are set according to the contents of > @@ -229,8 +109,8 @@ > * here rather than here and in the flush/logging code. > */ > if (xfs_sb_version_hasnlink(&tp->t_mountp->m_sb) && > - ip->i_d.di_version == XFS_DINODE_VERSION_1) { > - ip->i_d.di_version = XFS_DINODE_VERSION_2; > + ip->i_d.di_version == 1) { > + ip->i_d.di_version = 2; > /* old link count, projid field, pad field already zeroed */ > } > > @@ -395,7 +275,7 @@ > mp = ip->i_mount; > > /* set *dip = inode's place in the buffer */ > - dip = (xfs_dinode_t *)xfs_buf_offset(bp, ip->i_boffset); > + dip = (xfs_dinode_t *)xfs_buf_offset(bp, ip->i_imap.im_boffset); > > ASSERT(ip->i_d.di_magic == XFS_DINODE_MAGIC); > if ((ip->i_d.di_mode & S_IFMT) == S_IFREG) { > @@ -416,7 +296,7 @@ > * because if the inode is dirty at all the core must > * be. > */ > - xfs_dinode_to_disk(&dip->di_core, &ip->i_d); > + xfs_dinode_to_disk(dip, &ip->i_d); > > /* > * If this is really an old format inode and the superblock version > @@ -424,28 +304,26 @@ > * convert back to the old inode format. If the superblock version > * has been updated, then make the conversion permanent. > */ > - ASSERT(ip->i_d.di_version == XFS_DINODE_VERSION_1 || > - xfs_sb_version_hasnlink(&mp->m_sb)); > - if (ip->i_d.di_version == XFS_DINODE_VERSION_1) { > + ASSERT(ip->i_d.di_version == 1 || xfs_sb_version_hasnlink(&mp->m_sb)); > + if (ip->i_d.di_version == 1) { > if (!xfs_sb_version_hasnlink(&mp->m_sb)) { > /* > * Convert it back. > */ > ASSERT(ip->i_d.di_nlink <= XFS_MAXLINK_1); > - dip->di_core.di_onlink = cpu_to_be16(ip->i_d.di_nlink); > + dip->di_onlink = cpu_to_be16(ip->i_d.di_nlink); > } else { > /* > * The superblock version has already been bumped, > * so just make the conversion to the new inode > * format permanent. > */ > - ip->i_d.di_version = XFS_DINODE_VERSION_2; > - dip->di_core.di_version = XFS_DINODE_VERSION_2; > + ip->i_d.di_version = 2; > + dip->di_version = 2; > ip->i_d.di_onlink = 0; > - dip->di_core.di_onlink = 0; > - memset(&(ip->i_d.di_pad[0]), 0, sizeof(ip->i_d.di_pad)); > - memset(&(dip->di_core.di_pad[0]), 0, > - sizeof(dip->di_core.di_pad)); > + dip->di_onlink = 0; > + memset(&ip->i_d.di_pad[0], 0, sizeof(ip->i_d.di_pad)); > + memset(&dip->di_pad[0], 0, sizeof(dip->di_pad)); > ASSERT(ip->i_d.di_projid == 0); > } > } > Index: xfs-cmds/xfsprogs/libxfs/xfs_alloc.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/libxfs/xfs_alloc.c 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/libxfs/xfs_alloc.c 2008-12-06 20:05:49.000000000 +0100 > @@ -2064,44 +2064,41 @@ > * Read in the allocation group header (free/alloc section). > */ > int /* error */ > -xfs_alloc_read_agf( > - xfs_mount_t *mp, /* mount point structure */ > - xfs_trans_t *tp, /* transaction pointer */ > - xfs_agnumber_t agno, /* allocation group number */ > - int flags, /* XFS_ALLOC_FLAG_... */ > - xfs_buf_t **bpp) /* buffer for the ag freelist header */ > +xfs_read_agf( > + struct xfs_mount *mp, /* mount point structure */ > + struct xfs_trans *tp, /* transaction pointer */ > + xfs_agnumber_t agno, /* allocation group number */ > + int flags, /* XFS_BUF_ */ > + struct xfs_buf **bpp) /* buffer for the ag freelist header */ > { > - xfs_agf_t *agf; /* ag freelist header */ > + struct xfs_agf *agf; /* ag freelist header */ > int agf_ok; /* set if agf is consistent */ > - xfs_buf_t *bp; /* return value */ > - xfs_perag_t *pag; /* per allocation group data */ > int error; > > ASSERT(agno != NULLAGNUMBER); > error = xfs_trans_read_buf( > mp, tp, mp->m_ddev_targp, > XFS_AG_DADDR(mp, agno, XFS_AGF_DADDR(mp)), > - XFS_FSS_TO_BB(mp, 1), > - (flags & XFS_ALLOC_FLAG_TRYLOCK) ? XFS_BUF_TRYLOCK : 0U, > - &bp); > + XFS_FSS_TO_BB(mp, 1), flags, bpp); > if (error) > return error; > - ASSERT(!bp || !XFS_BUF_GETERROR(bp)); > - if (!bp) { > - *bpp = NULL; > + if (!*bpp) > return 0; > - } > + > + ASSERT(!XFS_BUF_GETERROR(*bpp)); > + agf = XFS_BUF_TO_AGF(*bpp); > + > /* > * Validate the magic number of the agf block. > */ > - agf = XFS_BUF_TO_AGF(bp); > agf_ok = > be32_to_cpu(agf->agf_magicnum) == XFS_AGF_MAGIC && > XFS_AGF_GOOD_VERSION(be32_to_cpu(agf->agf_versionnum)) && > be32_to_cpu(agf->agf_freeblks) <= be32_to_cpu(agf->agf_length) && > be32_to_cpu(agf->agf_flfirst) < XFS_AGFL_SIZE(mp) && > be32_to_cpu(agf->agf_fllast) < XFS_AGFL_SIZE(mp) && > - be32_to_cpu(agf->agf_flcount) <= XFS_AGFL_SIZE(mp); > + be32_to_cpu(agf->agf_flcount) <= XFS_AGFL_SIZE(mp) && > + be32_to_cpu(agf->agf_seqno) == agno; > if (xfs_sb_version_haslazysbcount(&mp->m_sb)) > agf_ok = agf_ok && be32_to_cpu(agf->agf_btreeblks) <= > be32_to_cpu(agf->agf_length); > @@ -2109,9 +2106,41 @@ > XFS_RANDOM_ALLOC_READ_AGF))) { > XFS_CORRUPTION_ERROR("xfs_alloc_read_agf", > XFS_ERRLEVEL_LOW, mp, agf); > - xfs_trans_brelse(tp, bp); > + xfs_trans_brelse(tp, *bpp); > return XFS_ERROR(EFSCORRUPTED); > } > + > + XFS_BUF_SET_VTYPE_REF(*bpp, B_FS_AGF, XFS_AGF_REF); > + return 0; > +} > + > +/* > + * Read in the allocation group header (free/alloc section). > + */ > +int /* error */ > +xfs_alloc_read_agf( > + struct xfs_mount *mp, /* mount point structure */ > + struct xfs_trans *tp, /* transaction pointer */ > + xfs_agnumber_t agno, /* allocation group number */ > + int flags, /* XFS_ALLOC_FLAG_... */ > + struct xfs_buf **bpp) /* buffer for the ag freelist header */ > +{ > + struct xfs_agf *agf; /* ag freelist header */ > + struct xfs_perag *pag; /* per allocation group data */ > + int error; > + > + ASSERT(agno != NULLAGNUMBER); > + > + error = xfs_read_agf(mp, tp, agno, > + (flags & XFS_ALLOC_FLAG_TRYLOCK) ? XFS_BUF_TRYLOCK : 0, > + bpp); > + if (error) > + return error; > + if (!*bpp) > + return 0; > + ASSERT(!XFS_BUF_GETERROR(*bpp)); > + > + agf = XFS_BUF_TO_AGF(*bpp); > pag = &mp->m_perag[agno]; > if (!pag->pagf_init) { > pag->pagf_freeblks = be32_to_cpu(agf->agf_freeblks); > @@ -2139,8 +2168,6 @@ > be32_to_cpu(agf->agf_levels[XFS_BTNUM_CNTi])); > } > #endif > - XFS_BUF_SET_VTYPE_REF(bp, B_FS_AGF, XFS_AGF_REF); > - *bpp = bp; > return 0; > } > > Index: xfs-cmds/xfsprogs/libxfs/xfs_ialloc.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/libxfs/xfs_ialloc.c 2008-12-06 20:05:45.000000000 +0100 > +++ xfs-cmds/xfsprogs/libxfs/xfs_ialloc.c 2008-12-06 20:05:49.000000000 +0100 > @@ -22,68 +22,6 @@ > * Internal functions. > */ > > -/* > - * Log specified fields for the inode given by bp and off. > - */ > -STATIC void > -xfs_ialloc_log_di( > - xfs_trans_t *tp, /* transaction pointer */ > - xfs_buf_t *bp, /* inode buffer */ > - int off, /* index of inode in buffer */ > - int fields) /* bitmask of fields to log */ > -{ > - int first; /* first byte number */ > - int ioffset; /* off in bytes */ > - int last; /* last byte number */ > - xfs_mount_t *mp; /* mount point structure */ > - static const short offsets[] = { /* field offsets */ > - /* keep in sync with bits */ > - offsetof(xfs_dinode_core_t, di_magic), > - offsetof(xfs_dinode_core_t, di_mode), > - offsetof(xfs_dinode_core_t, di_version), > - offsetof(xfs_dinode_core_t, di_format), > - offsetof(xfs_dinode_core_t, di_onlink), > - offsetof(xfs_dinode_core_t, di_uid), > - offsetof(xfs_dinode_core_t, di_gid), > - offsetof(xfs_dinode_core_t, di_nlink), > - offsetof(xfs_dinode_core_t, di_projid), > - offsetof(xfs_dinode_core_t, di_pad), > - offsetof(xfs_dinode_core_t, di_atime), > - offsetof(xfs_dinode_core_t, di_mtime), > - offsetof(xfs_dinode_core_t, di_ctime), > - offsetof(xfs_dinode_core_t, di_size), > - offsetof(xfs_dinode_core_t, di_nblocks), > - offsetof(xfs_dinode_core_t, di_extsize), > - offsetof(xfs_dinode_core_t, di_nextents), > - offsetof(xfs_dinode_core_t, di_anextents), > - offsetof(xfs_dinode_core_t, di_forkoff), > - offsetof(xfs_dinode_core_t, di_aformat), > - offsetof(xfs_dinode_core_t, di_dmevmask), > - offsetof(xfs_dinode_core_t, di_dmstate), > - offsetof(xfs_dinode_core_t, di_flags), > - offsetof(xfs_dinode_core_t, di_gen), > - offsetof(xfs_dinode_t, di_next_unlinked), > - offsetof(xfs_dinode_t, di_u), > - offsetof(xfs_dinode_t, di_a), > - sizeof(xfs_dinode_t) > - }; > - > - > - ASSERT(offsetof(xfs_dinode_t, di_core) == 0); > - ASSERT((fields & (XFS_DI_U|XFS_DI_A)) == 0); > - mp = tp->t_mountp; > - /* > - * Get the inode-relative first and last bytes for these fields > - */ > - xfs_btree_offsets(fields, offsets, XFS_DI_NUM_BITS, &first, &last); > - /* > - * Convert to buffer offsets and log it. > - */ > - ioffset = off << mp->m_sb.sb_inodelog; > - first += ioffset; > - last += ioffset; > - xfs_trans_log_buf(tp, bp, first, last); > -} > > /* > * Allocation group level functions. > @@ -364,9 +302,9 @@ > * able to use the file system. > */ > if (xfs_sb_version_hasnlink(&args.mp->m_sb)) > - version = XFS_DINODE_VERSION_2; > + version = 2; > else > - version = XFS_DINODE_VERSION_1; > + version = 1; > > /* > * Seed the new inode cluster with a random generation number. This > @@ -387,18 +325,25 @@ > XFS_BUF_LOCK); > ASSERT(fbuf); > ASSERT(!XFS_BUF_GETERROR(fbuf)); > + > /* > - * Set initial values for the inodes in this buffer. > + * Initialize all inodes in this buffer and then log them. > + * > + * XXX: It would be much better if we had just one transaction to > + * log a whole cluster of inodes instead of all the indivdual > + * transactions causing a lot of log traffic. > */ > xfs_biozero(fbuf, 0, ninodes << args.mp->m_sb.sb_inodelog); > for (i = 0; i < ninodes; i++) { > + int ioffset = i << args.mp->m_sb.sb_inodelog; > + uint isize = sizeof(struct xfs_dinode); > + > 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); > + free->di_magic = cpu_to_be16(XFS_DINODE_MAGIC); > + free->di_version = version; > + free->di_gen = cpu_to_be32(gen); > free->di_next_unlinked = cpu_to_be32(NULLAGINO); > - xfs_ialloc_log_di(tp, fbuf, i, > - XFS_DI_CORE_BITS | XFS_DI_NEXT_UNLINKED); > + xfs_trans_log_buf(tp, fbuf, ioffset, ioffset + isize - 1); > } > xfs_trans_inode_alloc_buf(tp, fbuf); > } > @@ -1019,38 +964,29 @@ > return error; > } > > - > /* > - * Return the location of the inode in bno/off, for mapping it into a buffer. > + * Return the location of the inode in imap, for mapping it into a buffer. > */ > -/*ARGSUSED*/ > int > -xfs_dilocate( > - xfs_mount_t *mp, /* file system mount structure */ > - xfs_trans_t *tp, /* transaction pointer */ > +xfs_imap( > + xfs_mount_t *mp, /* file system mount structure */ > + xfs_trans_t *tp, /* transaction pointer */ > xfs_ino_t ino, /* inode to locate */ > - xfs_fsblock_t *bno, /* output: block containing inode */ > - int *len, /* output: num blocks in inode cluster */ > - int *off, /* output: index in block of inode */ > - uint flags) /* flags concerning inode lookup */ > + struct xfs_imap *imap, /* location map structure */ > + uint flags) /* flags for inode btree lookup */ > { > xfs_agblock_t agbno; /* block number of inode in the alloc group */ > - xfs_buf_t *agbp; /* agi buffer */ > xfs_agino_t agino; /* inode number within alloc group */ > xfs_agnumber_t agno; /* allocation group number */ > int blks_per_cluster; /* num blocks per inode cluster */ > xfs_agblock_t chunk_agbno; /* first block in inode chunk */ > - xfs_agino_t chunk_agino; /* first agino in inode chunk */ > - __int32_t chunk_cnt; /* count of free inodes in chunk */ > - xfs_inofree_t chunk_free; /* mask of free inodes in chunk */ > xfs_agblock_t cluster_agbno; /* first block in inode cluster */ > - xfs_btree_cur_t *cur; /* inode btree cursor */ > int error; /* error code */ > - int i; /* temp state */ > int offset; /* index of inode in its buffer */ > int offset_agbno; /* blks from chunk start to inode */ > > ASSERT(ino != NULLFSINO); > + > /* > * Split up the inode number into its parts. > */ > @@ -1061,24 +997,24 @@ > ino != XFS_AGINO_TO_INO(mp, agno, agino)) { > #ifdef DEBUG > /* no diagnostics for bulkstat, ino comes from userspace */ > - if (flags & XFS_IMAP_BULKSTAT) > + if (flags & XFS_IGET_BULKSTAT) > return XFS_ERROR(EINVAL); > if (agno >= mp->m_sb.sb_agcount) { > xfs_fs_cmn_err(CE_ALERT, mp, > - "xfs_dilocate: agno (%d) >= " > + "xfs_imap: agno (%d) >= " > "mp->m_sb.sb_agcount (%d)", > agno, mp->m_sb.sb_agcount); > } > if (agbno >= mp->m_sb.sb_agblocks) { > xfs_fs_cmn_err(CE_ALERT, mp, > - "xfs_dilocate: agbno (0x%llx) >= " > + "xfs_imap: agbno (0x%llx) >= " > "mp->m_sb.sb_agblocks (0x%lx)", > (unsigned long long) agbno, > (unsigned long) mp->m_sb.sb_agblocks); > } > if (ino != XFS_AGINO_TO_INO(mp, agno, agino)) { > xfs_fs_cmn_err(CE_ALERT, mp, > - "xfs_dilocate: ino (0x%llx) != " > + "xfs_imap: ino (0x%llx) != " > "XFS_AGINO_TO_INO(mp, agno, agino) " > "(0x%llx)", > ino, XFS_AGINO_TO_INO(mp, agno, agino)); > @@ -1087,64 +1023,89 @@ > #endif /* DEBUG */ > return XFS_ERROR(EINVAL); > } > - if ((mp->m_sb.sb_blocksize >= XFS_INODE_CLUSTER_SIZE(mp)) || > - !(flags & XFS_IMAP_LOOKUP)) { > + > + /* > + * If the inode cluster size is the same as the blocksize or > + * smaller we get to the buffer by simple arithmetics. > + */ > + if (XFS_INODE_CLUSTER_SIZE(mp) <= mp->m_sb.sb_blocksize) { > offset = XFS_INO_TO_OFFSET(mp, ino); > ASSERT(offset < mp->m_sb.sb_inopblock); > - *bno = XFS_AGB_TO_FSB(mp, agno, agbno); > - *off = offset; > - *len = 1; > + > + imap->im_blkno = XFS_AGB_TO_DADDR(mp, agno, agbno); > + imap->im_len = XFS_FSB_TO_BB(mp, 1); > + imap->im_boffset = (ushort)(offset << mp->m_sb.sb_inodelog); > return 0; > } > + > blks_per_cluster = XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_blocklog; > - if (*bno != NULLFSBLOCK) { > + > + /* > + * If we get a block number passed from bulkstat we can use it to > + * find the buffer easily. > + */ > + if (imap->im_blkno) { > offset = XFS_INO_TO_OFFSET(mp, ino); > ASSERT(offset < mp->m_sb.sb_inopblock); > - cluster_agbno = XFS_FSB_TO_AGBNO(mp, *bno); > - *off = ((agbno - cluster_agbno) * mp->m_sb.sb_inopblock) + > - offset; > - *len = blks_per_cluster; > + > + cluster_agbno = XFS_DADDR_TO_AGBNO(mp, imap->im_blkno); > + offset += (agbno - cluster_agbno) * mp->m_sb.sb_inopblock; > + > + imap->im_len = XFS_FSB_TO_BB(mp, blks_per_cluster); > + imap->im_boffset = (ushort)(offset << mp->m_sb.sb_inodelog); > return 0; > } > + > + /* > + * If the inode chunks are aligned then use simple maths to > + * find the location. Otherwise we have to do a btree > + * lookup to find the location. > + */ > if (mp->m_inoalign_mask) { > offset_agbno = agbno & mp->m_inoalign_mask; > chunk_agbno = agbno - offset_agbno; > } else { > + xfs_btree_cur_t *cur; /* inode btree cursor */ > + xfs_agino_t chunk_agino; /* first agino in inode chunk */ > + __int32_t chunk_cnt; /* count of free inodes in chunk */ > + xfs_inofree_t chunk_free; /* mask of free inodes in chunk */ > + xfs_buf_t *agbp; /* agi buffer */ > + int i; /* temp state */ > + > down_read(&mp->m_peraglock); > error = xfs_ialloc_read_agi(mp, tp, agno, &agbp); > up_read(&mp->m_peraglock); > if (error) { > -#ifdef DEBUG > - xfs_fs_cmn_err(CE_ALERT, mp, "xfs_dilocate: " > + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " > "xfs_ialloc_read_agi() returned " > "error %d, agno %d", > error, agno); > -#endif /* DEBUG */ > return error; > } > + > cur = xfs_inobt_init_cursor(mp, tp, agbp, agno); > - if ((error = xfs_inobt_lookup_le(cur, agino, 0, 0, &i))) { > -#ifdef DEBUG > - xfs_fs_cmn_err(CE_ALERT, mp, "xfs_dilocate: " > + error = xfs_inobt_lookup_le(cur, agino, 0, 0, &i); > + if (error) { > + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " > "xfs_inobt_lookup_le() failed"); > -#endif /* DEBUG */ > goto error0; > } > - if ((error = xfs_inobt_get_rec(cur, &chunk_agino, &chunk_cnt, > - &chunk_free, &i))) { > -#ifdef DEBUG > - xfs_fs_cmn_err(CE_ALERT, mp, "xfs_dilocate: " > + > + error = xfs_inobt_get_rec(cur, &chunk_agino, &chunk_cnt, > + &chunk_free, &i); > + if (error) { > + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " > "xfs_inobt_get_rec() failed"); > -#endif /* DEBUG */ > goto error0; > } > if (i == 0) { > #ifdef DEBUG > - xfs_fs_cmn_err(CE_ALERT, mp, "xfs_dilocate: " > + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " > "xfs_inobt_get_rec() failed"); > #endif /* DEBUG */ > error = XFS_ERROR(EINVAL); > } > + error0: > xfs_trans_brelse(tp, agbp); > xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); > if (error) > @@ -1152,19 +1113,35 @@ > chunk_agbno = XFS_AGINO_TO_AGBNO(mp, chunk_agino); > offset_agbno = agbno - chunk_agbno; > } > + > ASSERT(agbno >= chunk_agbno); > cluster_agbno = chunk_agbno + > ((offset_agbno / blks_per_cluster) * blks_per_cluster); > offset = ((agbno - cluster_agbno) * mp->m_sb.sb_inopblock) + > XFS_INO_TO_OFFSET(mp, ino); > - *bno = XFS_AGB_TO_FSB(mp, agno, cluster_agbno); > - *off = offset; > - *len = blks_per_cluster; > + > + imap->im_blkno = XFS_AGB_TO_DADDR(mp, agno, cluster_agbno); > + imap->im_len = XFS_FSB_TO_BB(mp, blks_per_cluster); > + imap->im_boffset = (ushort)(offset << mp->m_sb.sb_inodelog); > + > + /* > + * If the inode number maps to a block outside the bounds > + * of the file system then return NULL rather than calling > + * read_buf and panicing when we get an error from the > + * driver. > + */ > + if ((imap->im_blkno + imap->im_len) > > + XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks)) { > + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " > + "(imap->im_blkno (0x%llx) + imap->im_len (0x%llx)) > " > + " XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks) (0x%llx)", > + (unsigned long long) imap->im_blkno, > + (unsigned long long) imap->im_len, > + XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks)); > + return XFS_ERROR(EINVAL); > + } > + > return 0; > -error0: > - xfs_trans_brelse(tp, agbp); > - xfs_btree_del_cursor(cur, XFS_BTREE_ERROR); > - return error; > } > > /* > @@ -1232,70 +1209,95 @@ > xfs_trans_log_buf(tp, bp, first, last); > } > > +#ifdef DEBUG > +STATIC void > +xfs_check_agi_unlinked( > + struct xfs_agi *agi) > +{ > + int i; > + > + for (i = 0; i < XFS_AGI_UNLINKED_BUCKETS; i++) > + ASSERT(agi->agi_unlinked[i]); > +} > +#else > +#define xfs_check_agi_unlinked(agi) > +#endif > + > /* > * Read in the allocation group header (inode allocation section) > */ > int > -xfs_ialloc_read_agi( > - xfs_mount_t *mp, /* file system mount structure */ > - xfs_trans_t *tp, /* transaction pointer */ > - xfs_agnumber_t agno, /* allocation group number */ > - xfs_buf_t **bpp) /* allocation group hdr buf */ > +xfs_read_agi( > + struct xfs_mount *mp, /* file system mount structure */ > + struct xfs_trans *tp, /* transaction pointer */ > + xfs_agnumber_t agno, /* allocation group number */ > + struct xfs_buf **bpp) /* allocation group hdr buf */ > { > - xfs_agi_t *agi; /* allocation group header */ > - int agi_ok; /* agi is consistent */ > - xfs_buf_t *bp; /* allocation group hdr buf */ > - xfs_perag_t *pag; /* per allocation group data */ > - int error; > + struct xfs_agi *agi; /* allocation group header */ > + int agi_ok; /* agi is consistent */ > + int error; > > ASSERT(agno != NULLAGNUMBER); > - error = xfs_trans_read_buf( > - mp, tp, mp->m_ddev_targp, > + > + error = xfs_trans_read_buf(mp, tp, mp->m_ddev_targp, > XFS_AG_DADDR(mp, agno, XFS_AGI_DADDR(mp)), > - XFS_FSS_TO_BB(mp, 1), 0, &bp); > + XFS_FSS_TO_BB(mp, 1), 0, bpp); > if (error) > return error; > - ASSERT(bp && !XFS_BUF_GETERROR(bp)); > + > + ASSERT(*bpp && !XFS_BUF_GETERROR(*bpp)); > + agi = XFS_BUF_TO_AGI(*bpp); > > /* > * Validate the magic number of the agi block. > */ > - agi = XFS_BUF_TO_AGI(bp); > - agi_ok = > - be32_to_cpu(agi->agi_magicnum) == XFS_AGI_MAGIC && > - XFS_AGI_GOOD_VERSION(be32_to_cpu(agi->agi_versionnum)); > + agi_ok = be32_to_cpu(agi->agi_magicnum) == XFS_AGI_MAGIC && > + XFS_AGI_GOOD_VERSION(be32_to_cpu(agi->agi_versionnum)) && > + be32_to_cpu(agi->agi_seqno) == agno; > if (unlikely(XFS_TEST_ERROR(!agi_ok, mp, XFS_ERRTAG_IALLOC_READ_AGI, > XFS_RANDOM_IALLOC_READ_AGI))) { > - XFS_CORRUPTION_ERROR("xfs_ialloc_read_agi", XFS_ERRLEVEL_LOW, > + XFS_CORRUPTION_ERROR("xfs_read_agi", XFS_ERRLEVEL_LOW, > mp, agi); > - xfs_trans_brelse(tp, bp); > + xfs_trans_brelse(tp, *bpp); > return XFS_ERROR(EFSCORRUPTED); > } > + > + XFS_BUF_SET_VTYPE_REF(*bpp, B_FS_AGI, XFS_AGI_REF); > + > + xfs_check_agi_unlinked(agi); > + return 0; > +} > + > +int > +xfs_ialloc_read_agi( > + struct xfs_mount *mp, /* file system mount structure */ > + struct xfs_trans *tp, /* transaction pointer */ > + xfs_agnumber_t agno, /* allocation group number */ > + struct xfs_buf **bpp) /* allocation group hdr buf */ > +{ > + struct xfs_agi *agi; /* allocation group header */ > + struct xfs_perag *pag; /* per allocation group data */ > + int error; > + > + error = xfs_read_agi(mp, tp, agno, bpp); > + if (error) > + return error; > + > + agi = XFS_BUF_TO_AGI(*bpp); > pag = &mp->m_perag[agno]; > + > if (!pag->pagi_init) { > pag->pagi_freecount = be32_to_cpu(agi->agi_freecount); > pag->pagi_count = be32_to_cpu(agi->agi_count); > pag->pagi_init = 1; > - } else { > - /* > - * It's possible for these to be out of sync if > - * we are in the middle of a forced shutdown. > - */ > - ASSERT(pag->pagi_freecount == be32_to_cpu(agi->agi_freecount) || > - XFS_FORCED_SHUTDOWN(mp)); > - } > - > -#ifdef DEBUG > - { > - int i; > - > - for (i = 0; i < XFS_AGI_UNLINKED_BUCKETS; i++) > - ASSERT(agi->agi_unlinked[i]); > } > -#endif > > - XFS_BUF_SET_VTYPE_REF(bp, B_FS_AGI, XFS_AGI_REF); > - *bpp = bp; > + /* > + * It's possible for these to be out of sync if > + * we are in the middle of a forced shutdown. > + */ > + ASSERT(pag->pagi_freecount == be32_to_cpu(agi->agi_freecount) || > + XFS_FORCED_SHUTDOWN(mp)); > return 0; > } > > Index: xfs-cmds/xfsprogs/libxfs/xfs_inode.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/libxfs/xfs_inode.c 2008-12-06 20:05:45.000000000 +0100 > +++ xfs-cmds/xfsprogs/libxfs/xfs_inode.c 2008-12-06 20:05:49.000000000 +0100 > @@ -91,10 +91,10 @@ > xfs_imap_to_bp( > xfs_mount_t *mp, > xfs_trans_t *tp, > - xfs_imap_t *imap, > + struct xfs_imap *imap, > xfs_buf_t **bpp, > uint buf_flags, > - uint imap_flags) > + uint iget_flags) > { > int error; > int i; > @@ -131,12 +131,12 @@ > > dip = (xfs_dinode_t *)xfs_buf_offset(bp, > (i << mp->m_sb.sb_inodelog)); > - di_ok = be16_to_cpu(dip->di_core.di_magic) == XFS_DINODE_MAGIC && > - XFS_DINODE_GOOD_VERSION(dip->di_core.di_version); > + di_ok = be16_to_cpu(dip->di_magic) == XFS_DINODE_MAGIC && > + XFS_DINODE_GOOD_VERSION(dip->di_version); > if (unlikely(XFS_TEST_ERROR(!di_ok, mp, > XFS_ERRTAG_ITOBP_INOTOBP, > XFS_RANDOM_ITOBP_INOTOBP))) { > - if (imap_flags & XFS_IMAP_BULKSTAT) { > + if (iget_flags & XFS_IGET_BULKSTAT) { > xfs_trans_brelse(tp, bp); > return XFS_ERROR(EINVAL); > } > @@ -148,7 +148,7 @@ > "daddr %lld #%d (magic=%x)", > XFS_BUFTARG_NAME(mp->m_ddev_targp), > (unsigned long long)imap->im_blkno, i, > - be16_to_cpu(dip->di_core.di_magic)); > + be16_to_cpu(dip->di_magic)); > #endif > xfs_trans_brelse(tp, bp); > return XFS_ERROR(EFSCORRUPTED); > @@ -167,6 +167,49 @@ > } > > /* > + * This routine is called to map an inode number within a file > + * system to the buffer containing the on-disk version of the > + * inode. It returns a pointer to the buffer containing the > + * on-disk inode in the bpp parameter, and in the dip parameter > + * it returns a pointer to the on-disk inode within that buffer. > + * > + * If a non-zero error is returned, then the contents of bpp and > + * dipp are undefined. > + * > + * Use xfs_imap() to determine the size and location of the > + * buffer to read from disk. > + */ > +int > +xfs_inotobp( > + xfs_mount_t *mp, > + xfs_trans_t *tp, > + xfs_ino_t ino, > + xfs_dinode_t **dipp, > + xfs_buf_t **bpp, > + int *offset, > + uint imap_flags) > +{ > + struct xfs_imap imap; > + xfs_buf_t *bp; > + int error; > + > + imap.im_blkno = 0; > + error = xfs_imap(mp, tp, ino, &imap, imap_flags); > + if (error) > + return error; > + > + error = xfs_imap_to_bp(mp, tp, &imap, &bp, XFS_BUF_LOCK, imap_flags); > + if (error) > + return error; > + > + *dipp = (xfs_dinode_t *)xfs_buf_offset(bp, imap.im_boffset); > + *bpp = bp; > + *offset = imap.im_boffset; > + return 0; > +} > + > + > +/* > * This routine is called to map an inode to the buffer containing > * the on-disk version of the inode. It returns a pointer to the > * buffer containing the on-disk inode in the bpp parameter, and in > @@ -176,15 +219,11 @@ > * If a non-zero error is returned, then the contents of bpp and > * dipp are undefined. > * > - * If the inode is new and has not yet been initialized, use xfs_imap() > - * to determine the size and location of the buffer to read from disk. > - * If the inode has already been mapped to its buffer and read in once, > - * then use the mapping information stored in the inode rather than > - * calling xfs_imap(). This allows us to avoid the overhead of looking > - * at the inode btree for small block file systems (see xfs_dilocate()). > - * We can tell whether the inode has been mapped in before by comparing > - * its disk block address to 0. Only uninitialized inodes will have > - * 0 for the disk block address. > + * The inode is expected to already been mapped to its buffer and read > + * in once, thus we can use the mapping information stored in the inode > + * rather than calling xfs_imap(). This allows us to avoid the overhead > + * of looking at the inode btree for small block file systems > + * (see xfs_imap()). > */ > int > xfs_itobp( > @@ -193,40 +232,14 @@ > xfs_inode_t *ip, > xfs_dinode_t **dipp, > xfs_buf_t **bpp, > - xfs_daddr_t bno, > - uint imap_flags, > uint buf_flags) > { > - xfs_imap_t imap; > xfs_buf_t *bp; > int error; > > - if (ip->i_blkno == (xfs_daddr_t)0) { > - imap.im_blkno = bno; > - error = xfs_imap(mp, tp, ip->i_ino, &imap, > - XFS_IMAP_LOOKUP | imap_flags); > - if (error) > - return error; > - > - /* > - * Fill in the fields in the inode that will be used to > - * map the inode to its buffer from now on. > - */ > - ip->i_blkno = imap.im_blkno; > - ip->i_len = imap.im_len; > - ip->i_boffset = imap.im_boffset; > - } else { > - /* > - * We've already mapped the inode once, so just use the > - * mapping that we saved the first time. > - */ > - imap.im_blkno = ip->i_blkno; > - imap.im_len = ip->i_len; > - imap.im_boffset = ip->i_boffset; > - } > - ASSERT(bno == 0 || bno == imap.im_blkno); > + ASSERT(ip->i_imap.im_blkno != 0); > > - error = xfs_imap_to_bp(mp, tp, &imap, &bp, buf_flags, imap_flags); > + error = xfs_imap_to_bp(mp, tp, &ip->i_imap, &bp, buf_flags, 0); > if (error) > return error; > > @@ -237,7 +250,7 @@ > return EAGAIN; > } > > - *dipp = (xfs_dinode_t *)xfs_buf_offset(bp, imap.im_boffset); > + *dipp = (xfs_dinode_t *)xfs_buf_offset(bp, ip->i_imap.im_boffset); > *bpp = bp; > return 0; > } > @@ -250,10 +263,8 @@ > * pointers. For a file in B-tree format, only the root is immediately > * brought in-core. The rest will be in-lined in if_extents when it > * is first referenced (see xfs_iread_extents()). > - * > - * Note: this requires user-space public scope for libxfs_iread > */ > -int > +STATIC int > xfs_iformat( > xfs_inode_t *ip, > xfs_dinode_t *dip) > @@ -266,26 +277,26 @@ > XFS_IFORK_DSIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t); > error = 0; > > - if (unlikely(be32_to_cpu(dip->di_core.di_nextents) + > - be16_to_cpu(dip->di_core.di_anextents) > > - be64_to_cpu(dip->di_core.di_nblocks))) { > + if (unlikely(be32_to_cpu(dip->di_nextents) + > + be16_to_cpu(dip->di_anextents) > > + be64_to_cpu(dip->di_nblocks))) { > xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, > "corrupt dinode %Lu, extent total = %d, nblocks = %Lu.", > (unsigned long long)ip->i_ino, > - (int)(be32_to_cpu(dip->di_core.di_nextents) + > - be16_to_cpu(dip->di_core.di_anextents)), > + (int)(be32_to_cpu(dip->di_nextents) + > + be16_to_cpu(dip->di_anextents)), > (unsigned long long) > - be64_to_cpu(dip->di_core.di_nblocks)); > + be64_to_cpu(dip->di_nblocks)); > XFS_CORRUPTION_ERROR("xfs_iformat(1)", XFS_ERRLEVEL_LOW, > ip->i_mount, dip); > return XFS_ERROR(EFSCORRUPTED); > } > > - if (unlikely(dip->di_core.di_forkoff > ip->i_mount->m_sb.sb_inodesize)) { > + if (unlikely(dip->di_forkoff > ip->i_mount->m_sb.sb_inodesize)) { > xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, > "corrupt dinode %Lu, forkoff = 0x%x.", > (unsigned long long)ip->i_ino, > - dip->di_core.di_forkoff); > + dip->di_forkoff); > XFS_CORRUPTION_ERROR("xfs_iformat(2)", XFS_ERRLEVEL_LOW, > ip->i_mount, dip); > return XFS_ERROR(EFSCORRUPTED); > @@ -296,25 +307,25 @@ > case S_IFCHR: > case S_IFBLK: > case S_IFSOCK: > - if (unlikely(dip->di_core.di_format != XFS_DINODE_FMT_DEV)) { > + if (unlikely(dip->di_format != XFS_DINODE_FMT_DEV)) { > XFS_CORRUPTION_ERROR("xfs_iformat(3)", XFS_ERRLEVEL_LOW, > ip->i_mount, dip); > return XFS_ERROR(EFSCORRUPTED); > } > ip->i_d.di_size = 0; > ip->i_size = 0; > - ip->i_df.if_u2.if_rdev = be32_to_cpu(dip->di_u.di_dev); > + ip->i_df.if_u2.if_rdev = xfs_dinode_get_rdev(dip); > break; > > case S_IFREG: > case S_IFLNK: > case S_IFDIR: > - switch (dip->di_core.di_format) { > + switch (dip->di_format) { > case XFS_DINODE_FMT_LOCAL: > /* > * no local regular files yet > */ > - if (unlikely((be16_to_cpu(dip->di_core.di_mode) & S_IFMT) == S_IFREG)) { > + if (unlikely((be16_to_cpu(dip->di_mode) & S_IFMT) == S_IFREG)) { > xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, > "corrupt inode %Lu " > "(local format for regular file).", > @@ -325,7 +336,7 @@ > return XFS_ERROR(EFSCORRUPTED); > } > > - di_size = be64_to_cpu(dip->di_core.di_size); > + di_size = be64_to_cpu(dip->di_size); > if (unlikely(di_size > XFS_DFORK_DSIZE(dip, ip->i_mount))) { > xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, > "corrupt inode %Lu " > @@ -367,7 +378,7 @@ > ip->i_afp = kmem_zone_zalloc(xfs_ifork_zone, KM_SLEEP); > ip->i_afp->if_ext_max = > XFS_IFORK_ASIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t); > - switch (dip->di_core.di_aformat) { > + switch (dip->di_aformat) { > case XFS_DINODE_FMT_LOCAL: > atp = (xfs_attr_shortform_t *)XFS_DFORK_APTR(dip); > size = be16_to_cpu(atp->hdr.totsize); > @@ -579,7 +590,7 @@ > void > xfs_dinode_from_disk( > xfs_icdinode_t *to, > - xfs_dinode_core_t *from) > + xfs_dinode_t *from) > { > to->di_magic = be16_to_cpu(from->di_magic); > to->di_mode = be16_to_cpu(from->di_mode); > @@ -613,7 +624,7 @@ > > void > xfs_dinode_to_disk( > - xfs_dinode_core_t *to, > + xfs_dinode_t *to, > xfs_icdinode_t *from) > { > to->di_magic = cpu_to_be16(from->di_magic); > @@ -647,6 +658,139 @@ > } > > /* > + * Read the disk inode attributes into the in-core inode structure. > + */ > +int > +xfs_iread( > + xfs_mount_t *mp, > + xfs_trans_t *tp, > + xfs_inode_t *ip, > + xfs_daddr_t bno, > + uint iget_flags) > +{ > + xfs_buf_t *bp; > + xfs_dinode_t *dip; > + int error; > + > + /* > + * Fill in the location information in the in-core inode. > + */ > + ip->i_imap.im_blkno = bno; > + error = xfs_imap(mp, tp, ip->i_ino, &ip->i_imap, iget_flags); > + if (error) > + return error; > + ASSERT(bno == 0 || bno == ip->i_imap.im_blkno); > + > + /* > + * Get pointers to the on-disk inode and the buffer containing it. > + */ > + error = xfs_imap_to_bp(mp, tp, &ip->i_imap, &bp, > + XFS_BUF_LOCK, iget_flags); > + if (error) > + return error; > + dip = (xfs_dinode_t *)xfs_buf_offset(bp, ip->i_imap.im_boffset); > + > + /* > + * If we got something that isn't an inode it means someone > + * (nfs or dmi) has a stale handle. > + */ > + if (be16_to_cpu(dip->di_magic) != XFS_DINODE_MAGIC) { > +#ifdef DEBUG > + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_iread: " > + "dip->di_magic (0x%x) != " > + "XFS_DINODE_MAGIC (0x%x)", > + be16_to_cpu(dip->di_magic), > + XFS_DINODE_MAGIC); > +#endif /* DEBUG */ > + error = XFS_ERROR(EINVAL); > + goto out_brelse; > + } > + > + /* > + * If the on-disk inode is already linked to a directory > + * entry, copy all of the inode into the in-core inode. > + * xfs_iformat() handles copying in the inode format > + * specific information. > + * Otherwise, just get the truly permanent information. > + */ > + if (dip->di_mode) { > + xfs_dinode_from_disk(&ip->i_d, dip); > + error = xfs_iformat(ip, dip); > + if (error) { > +#ifdef DEBUG > + xfs_fs_cmn_err(CE_ALERT, mp, "xfs_iread: " > + "xfs_iformat() returned error %d", > + error); > +#endif /* DEBUG */ > + goto out_brelse; > + } > + } else { > + ip->i_d.di_magic = be16_to_cpu(dip->di_magic); > + ip->i_d.di_version = dip->di_version; > + ip->i_d.di_gen = be32_to_cpu(dip->di_gen); > + ip->i_d.di_flushiter = be16_to_cpu(dip->di_flushiter); > + /* > + * Make sure to pull in the mode here as well in > + * case the inode is released without being used. > + * This ensures that xfs_inactive() will see that > + * the inode is already free and not try to mess > + * with the uninitialized part of it. > + */ > + ip->i_d.di_mode = 0; > + /* > + * Initialize the per-fork minima and maxima for a new > + * inode here. xfs_iformat will do it for old inodes. > + */ > + ip->i_df.if_ext_max = > + XFS_IFORK_DSIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t); > + } > + > + /* > + * The inode format changed when we moved the link count and > + * made it 32 bits long. If this is an old format inode, > + * convert it in memory to look like a new one. If it gets > + * flushed to disk we will convert back before flushing or > + * logging it. We zero out the new projid field and the old link > + * count field. We'll handle clearing the pad field (the remains > + * of the old uuid field) when we actually convert the inode to > + * the new format. We don't change the version number so that we > + * can distinguish this from a real new format inode. > + */ > + if (ip->i_d.di_version == 1) { > + ip->i_d.di_nlink = ip->i_d.di_onlink; > + ip->i_d.di_onlink = 0; > + ip->i_d.di_projid = 0; > + } > + > + ip->i_delayed_blks = 0; > + ip->i_size = ip->i_d.di_size; > + > + /* > + * Mark the buffer containing the inode as something to keep > + * around for a while. This helps to keep recently accessed > + * meta-data in-core longer. > + */ > + XFS_BUF_SET_REF(bp, XFS_INO_REF); > + > + /* > + * Use xfs_trans_brelse() to release the buffer containing the > + * on-disk inode, because it was acquired with xfs_trans_read_buf() > + * in xfs_itobp() above. If tp is NULL, this is just a normal > + * brelse(). If we're within a transaction, then xfs_trans_brelse() > + * will only release the buffer if it is not dirty within the > + * transaction. It will be OK to release the buffer in this case, > + * because inodes on disk are never destroyed and we will be > + * locking the new in-core inode before putting it in the hash > + * table where other processes can find it. Thus we don't have > + * to worry about the inode being changed just because we released > + * the buffer. > + */ > + out_brelse: > + xfs_trans_brelse(tp, bp); > + return error; > +} > + > +/* > * Read in extents from a btree-format inode. > * Allocate and fill in if_extents. Real work is done in xfs_bmap.c. > */ > @@ -906,64 +1050,6 @@ > ASSERT(ifp->if_bytes <= XFS_IFORK_SIZE(ip, whichfork)); > } > > - > - > - > -/* > - * Map inode to disk block and offset. > - * > - * mp -- the mount point structure for the current file system > - * tp -- the current transaction > - * ino -- the inode number of the inode to be located > - * imap -- this structure is filled in with the information necessary > - * to retrieve the given inode from disk > - * flags -- flags to pass to xfs_dilocate indicating whether or not > - * lookups in the inode btree were OK or not > - */ > -int > -xfs_imap( > - xfs_mount_t *mp, > - xfs_trans_t *tp, > - xfs_ino_t ino, > - xfs_imap_t *imap, > - uint flags) > -{ > - xfs_fsblock_t fsbno; > - int len; > - int off; > - int error; > - > - fsbno = imap->im_blkno ? > - XFS_DADDR_TO_FSB(mp, imap->im_blkno) : NULLFSBLOCK; > - error = xfs_dilocate(mp, tp, ino, &fsbno, &len, &off, flags); > - if (error) > - return error; > - > - imap->im_blkno = XFS_FSB_TO_DADDR(mp, fsbno); > - imap->im_len = XFS_FSB_TO_BB(mp, len); > - imap->im_agblkno = XFS_FSB_TO_AGBNO(mp, fsbno); > - imap->im_ioffset = (ushort)off; > - imap->im_boffset = (ushort)(off << mp->m_sb.sb_inodelog); > - > - /* > - * If the inode number maps to a block outside the bounds > - * of the file system then return NULL rather than calling > - * read_buf and panicing when we get an error from the > - * driver. > - */ > - if ((imap->im_blkno + imap->im_len) > > - XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks)) { > - xfs_fs_cmn_err(CE_ALERT, mp, "xfs_imap: " > - "(imap->im_blkno (0x%llx) + imap->im_len (0x%llx)) > " > - " XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks) (0x%llx)", > - (unsigned long long) imap->im_blkno, > - (unsigned long long) imap->im_len, > - XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks)); > - return EINVAL; > - } > - return 0; > -} > - > void > xfs_idestroy_fork( > xfs_inode_t *ip, > @@ -1077,7 +1163,7 @@ > * In these cases, the format always takes precedence, because the > * format indicates the current state of the fork. > * > - * Note: this requires user-space public scope for libxfs_iread > + * Note: this requires user-space public scope for libxfs_iflush_int > */ > /*ARGSUSED*/ > void > @@ -1155,15 +1241,16 @@ > case XFS_DINODE_FMT_DEV: > if (iip->ili_format.ilf_fields & XFS_ILOG_DEV) { > ASSERT(whichfork == XFS_DATA_FORK); > - dip->di_u.di_dev = cpu_to_be32(ip->i_df.if_u2.if_rdev); > + xfs_dinode_put_rdev(dip, ip->i_df.if_u2.if_rdev); > } > break; > > case XFS_DINODE_FMT_UUID: > if (iip->ili_format.ilf_fields & XFS_ILOG_UUID) { > ASSERT(whichfork == XFS_DATA_FORK); > - memcpy(&dip->di_u.di_muuid, &ip->i_df.if_u2.if_uuid, > - sizeof(uuid_t)); > + memcpy(XFS_DFORK_DPTR(dip), > + &ip->i_df.if_u2.if_uuid, > + sizeof(uuid_t)); > } > break; > > Index: xfs-cmds/xfsprogs/libxfs/xfs_mount.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/libxfs/xfs_mount.c 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/libxfs/xfs_mount.c 2008-12-06 20:05:49.000000000 +0100 > @@ -265,8 +265,7 @@ > mp->m_sectbb_log = sbp->sb_sectlog - BBSHIFT; > mp->m_agno_log = xfs_highbit32(sbp->sb_agcount - 1) + 1; > mp->m_agino_log = sbp->sb_inopblog + sbp->sb_agblklog; > - mp->m_litino = sbp->sb_inodesize - > - ((uint)sizeof(xfs_dinode_core_t) + (uint)sizeof(xfs_agino_t)); > + mp->m_litino = sbp->sb_inodesize - sizeof(struct xfs_dinode); > mp->m_blockmask = sbp->sb_blocksize - 1; > mp->m_blockwsize = sbp->sb_blocksize >> XFS_WORDLOG; > mp->m_blockwmask = mp->m_blockwsize - 1; > Index: xfs-cmds/xfsprogs/libxlog/xfs_log_recover.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/libxlog/xfs_log_recover.c 2008-12-06 20:05:45.000000000 +0100 > +++ xfs-cmds/xfsprogs/libxlog/xfs_log_recover.c 2008-12-06 20:05:49.000000000 +0100 > @@ -1238,7 +1238,6 @@ > xlog_t *log) > { > int i, j, k; > - xlog_in_core_2_t *xhdr; > > for (i = 0; i < BTOBB(be32_to_cpu(rhead->h_len)) && > i < (XLOG_HEADER_CYCLE_SIZE / BBSIZE); i++) { > @@ -1247,7 +1246,7 @@ > } > > if (xfs_sb_version_haslogv2(&log->l_mp->m_sb)) { > - xhdr = (xlog_in_core_2_t *)rhead; > + xlog_in_core_2_t *xhdr = (xlog_in_core_2_t *)rhead; > for ( ; i < BTOBB(be32_to_cpu(rhead->h_len)); i++) { > j = i / (XLOG_HEADER_CYCLE_SIZE / BBSIZE); > k = i % (XLOG_HEADER_CYCLE_SIZE / BBSIZE); > Index: xfs-cmds/xfsprogs/logprint/log_misc.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/logprint/log_misc.c 2008-12-06 20:05:45.000000000 +0100 > +++ xfs-cmds/xfsprogs/logprint/log_misc.c 2008-12-06 20:05:49.000000000 +0100 > @@ -642,7 +642,7 @@ > mode = dino.di_mode & S_IFMT; > size = (int)dino.di_size; > xlog_print_trans_inode_core(&dino); > - *ptr += sizeof(xfs_dinode_core_t); > + *ptr += sizeof(xfs_icdinode_t); > > if (*i == num_ops-1 && f->ilf_size == 3) { > return 1; > Index: xfs-cmds/xfsprogs/repair/attr_repair.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/repair/attr_repair.c 2008-12-06 20:05:45.000000000 +0100 > +++ xfs-cmds/xfsprogs/repair/attr_repair.c 2008-12-06 20:05:49.000000000 +0100 > @@ -840,8 +840,8 @@ > bno = blkmap_get(blkmap, 0); > > if ( bno == NULLDFSBNO ) { > - if (dip->di_core.di_aformat == XFS_DINODE_FMT_EXTENTS && > - be16_to_cpu(dip->di_core.di_anextents) == 0) > + if (dip->di_aformat == XFS_DINODE_FMT_EXTENTS && > + be16_to_cpu(dip->di_anextents) == 0) > return(0); /* the kernel can handle this state */ > do_warn(_("block 0 of inode %llu attribute fork is missing\n"), > ino); > @@ -958,7 +958,7 @@ > int *repair) /* returned if we did repair */ > { > int err; > - __u8 aformat = dip->di_core.di_aformat; > + __u8 aformat = dip->di_aformat; > xfs_attr_shortform_t *asf; > > asf = (xfs_attr_shortform_t *) XFS_DFORK_APTR(dip); > Index: xfs-cmds/xfsprogs/repair/dino_chunks.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/repair/dino_chunks.c 2008-12-06 20:05:45.000000000 +0100 > +++ xfs-cmds/xfsprogs/repair/dino_chunks.c 2008-12-06 20:05:49.000000000 +0100 > @@ -810,9 +810,9 @@ > * store on-disk nlink count for comparing in phase 7 > */ > set_inode_disk_nlinks(ino_rec, irec_offset, > - dino->di_core.di_version > XFS_DINODE_VERSION_1 > - ? be32_to_cpu(dino->di_core.di_nlink) > - : be16_to_cpu(dino->di_core.di_onlink)); > + dino->di_version > 1 > + ? be32_to_cpu(dino->di_nlink) > + : be16_to_cpu(dino->di_onlink)); > > } else { > set_inode_free(ino_rec, irec_offset); > Index: xfs-cmds/xfsprogs/repair/dinode.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/repair/dinode.c 2008-12-06 20:05:45.000000000 +0100 > +++ xfs-cmds/xfsprogs/repair/dinode.c 2008-12-06 20:05:49.000000000 +0100 > @@ -41,29 +41,29 @@ > */ > /* ARGSUSED */ > int > -calc_attr_offset(xfs_mount_t *mp, xfs_dinode_t *dino) > +calc_attr_offset(xfs_mount_t *mp, xfs_dinode_t *dip) > { > - xfs_dinode_core_t *dinoc = &dino->di_core; > - int offset = ((__psint_t) &dino->di_u) > - - (__psint_t)dino; > + char *dfork = XFS_DFORK_DPTR(dip); > + xfs_bmdr_block_t *bmdr = (xfs_bmdr_block_t *)dfork; > + int offset = ((__psint_t)dfork) - (__psint_t)dip; > > /* > * don't worry about alignment when calculating offset > * because the data fork is already 8-byte aligned > */ > - switch (dinoc->di_format) { > + switch (dip->di_format) { > case XFS_DINODE_FMT_DEV: > offset += sizeof(xfs_dev_t); > break; > case XFS_DINODE_FMT_LOCAL: > - offset += be64_to_cpu(dinoc->di_size); > + offset += be64_to_cpu(dip->di_size); > break; > case XFS_DINODE_FMT_EXTENTS: > - offset += be32_to_cpu(dinoc->di_nextents) * > + offset += be32_to_cpu(dip->di_nextents) * > sizeof(xfs_bmbt_rec_t); > break; > case XFS_DINODE_FMT_BTREE: > - offset += be16_to_cpu(dino->di_u.di_bmbt.bb_numrecs) * > + offset += be16_to_cpu(bmdr->bb_numrecs) * > sizeof(xfs_bmbt_rec_t); > break; > default: > @@ -77,11 +77,9 @@ > > /* ARGSUSED */ > int > -clear_dinode_attr(xfs_mount_t *mp, xfs_dinode_t *dino, xfs_ino_t ino_num) > +clear_dinode_attr(xfs_mount_t *mp, xfs_dinode_t *dip, xfs_ino_t ino_num) > { > - xfs_dinode_core_t *dinoc = &dino->di_core; > - > - ASSERT(dinoc->di_forkoff != 0); > + ASSERT(dip->di_forkoff != 0); > > if (!no_modify) > fprintf(stderr, _("clearing inode %llu attributes\n"), > @@ -90,16 +88,16 @@ > fprintf(stderr, _("would have cleared inode %llu attributes\n"), > (unsigned long long)ino_num); > > - if (be16_to_cpu(dinoc->di_anextents) != 0) { > + if (dip->di_anextents) { > if (no_modify) > - return(1); > - dinoc->di_anextents = cpu_to_be16(0); > + return 1; > + dip->di_anextents = 0; > } > > - if (dinoc->di_aformat != XFS_DINODE_FMT_EXTENTS) { > + if (dip->di_aformat != XFS_DINODE_FMT_EXTENTS) { > if (no_modify) > - return(1); > - dinoc->di_aformat = XFS_DINODE_FMT_EXTENTS; > + return 1; > + dip->di_aformat = XFS_DINODE_FMT_EXTENTS; > } > > /* get rid of the fork by clearing forkoff */ > @@ -115,168 +113,138 @@ > > if (!no_modify) { > xfs_attr_shortform_t *asf = (xfs_attr_shortform_t *) > - XFS_DFORK_APTR(dino); > + XFS_DFORK_APTR(dip); > asf->hdr.totsize = cpu_to_be16(sizeof(xfs_attr_sf_hdr_t)); > asf->hdr.count = 0; > - dinoc->di_forkoff = 0; /* got to do this after asf is set */ > + dip->di_forkoff = 0; /* got to do this after asf is set */ > } > > /* > * always returns 1 since the fork gets zapped > */ > - return(1); > + return 1; > } > > /* ARGSUSED */ > int > -clear_dinode_core(xfs_dinode_core_t *dinoc, xfs_ino_t ino_num) > +clear_dinode_core(xfs_dinode_t *dip, xfs_ino_t ino_num) > { > int dirty = 0; > > - if (be16_to_cpu(dinoc->di_magic) != XFS_DINODE_MAGIC) { > + if (be16_to_cpu(dip->di_magic) != XFS_DINODE_MAGIC) { > dirty = 1; > - > if (no_modify) > - return(1); > - > - dinoc->di_magic = cpu_to_be16(XFS_DINODE_MAGIC); > + return 1; > + dip->di_magic = cpu_to_be16(XFS_DINODE_MAGIC); > } > > - if (!XFS_DINODE_GOOD_VERSION(dinoc->di_version) || > - (!fs_inode_nlink && dinoc->di_version > XFS_DINODE_VERSION_1)) { > + if (!XFS_DINODE_GOOD_VERSION(dip->di_version) || > + (!fs_inode_nlink && dip->di_version > 1)) { > dirty = 1; > - > if (no_modify) > - return(1); > - > - dinoc->di_version = (fs_inode_nlink) ? XFS_DINODE_VERSION_2 > - : XFS_DINODE_VERSION_1; > + return 1; > + dip->di_version = (fs_inode_nlink) ? 2 : 1; > } > > - if (be16_to_cpu(dinoc->di_mode) != 0) { > + if (dip->di_mode) { > dirty = 1; > - > if (no_modify) > - return(1); > - > - dinoc->di_mode = 0; > + return 1; > + dip->di_mode = 0; > } > > - if (be16_to_cpu(dinoc->di_flags) != 0) { > + if (dip->di_flags) { > dirty = 1; > - > if (no_modify) > - return(1); > - > - dinoc->di_flags = 0; > + return 1; > + dip->di_flags = 0; > } > > - if (be32_to_cpu(dinoc->di_dmevmask) != 0) { > + if (dip->di_dmevmask) { > dirty = 1; > - > if (no_modify) > - return(1); > - > - dinoc->di_dmevmask = 0; > + return 1; > + dip->di_dmevmask = 0; > } > > - if (dinoc->di_forkoff != 0) { > + if (dip->di_forkoff) { > dirty = 1; > - > if (no_modify) > - return(1); > - > - dinoc->di_forkoff = 0; > + return 1; > + dip->di_forkoff = 0; > } > > - if (dinoc->di_format != XFS_DINODE_FMT_EXTENTS) { > + if (dip->di_format != XFS_DINODE_FMT_EXTENTS) { > dirty = 1; > - > if (no_modify) > - return(1); > - > - dinoc->di_format = XFS_DINODE_FMT_EXTENTS; > + return 1; > + dip->di_format = XFS_DINODE_FMT_EXTENTS; > } > > - if (dinoc->di_aformat != XFS_DINODE_FMT_EXTENTS) { > + if (dip->di_aformat != XFS_DINODE_FMT_EXTENTS) { > dirty = 1; > - > if (no_modify) > - return(1); > - > - dinoc->di_aformat = XFS_DINODE_FMT_EXTENTS; > + return 1; > + dip->di_aformat = XFS_DINODE_FMT_EXTENTS; > } > > - if (be64_to_cpu(dinoc->di_size) != 0) { > + if (dip->di_size) { > dirty = 1; > - > if (no_modify) > - return(1); > - > - dinoc->di_size = 0; > + return 1; > + dip->di_size = 0; > } > > - if (be64_to_cpu(dinoc->di_nblocks) != 0) { > + if (dip->di_nblocks) { > dirty = 1; > - > if (no_modify) > - return(1); > - > - dinoc->di_nblocks = 0; > + return 1; > + dip->di_nblocks = 0; > } > > - if (be16_to_cpu(dinoc->di_onlink) != 0) { > + if (dip->di_onlink) { > dirty = 1; > - > if (no_modify) > - return(1); > - > - dinoc->di_onlink = 0; > + return 1; > + dip->di_onlink = 0; > } > > - if (be32_to_cpu(dinoc->di_nextents) != 0) { > + if (dip->di_nextents) { > dirty = 1; > - > if (no_modify) > - return(1); > - > - dinoc->di_nextents = 0; > + return 1; > + dip->di_nextents = 0; > } > > - if (be16_to_cpu(dinoc->di_anextents) != 0) { > + if (dip->di_anextents) { > dirty = 1; > - > if (no_modify) > - return(1); > - > - dinoc->di_anextents = 0; > + return 1; > + dip->di_anextents = 0; > } > > - if (dinoc->di_version > XFS_DINODE_VERSION_1 && > - be32_to_cpu(dinoc->di_nlink) != 0) { > + if (dip->di_version > 1 && dip->di_nlink) { > dirty = 1; > - > if (no_modify) > - return(1); > - > - dinoc->di_nlink = 0; > + return 1; > + dip->di_nlink = 0; > } > > - return(dirty); > + return dirty; > } > > /* ARGSUSED */ > int > -clear_dinode_unlinked(xfs_mount_t *mp, xfs_dinode_t *dino) > +clear_dinode_unlinked(xfs_mount_t *mp, xfs_dinode_t *dip) > { > > - if (be32_to_cpu(dino->di_next_unlinked) != NULLAGINO) { > + if (be32_to_cpu(dip->di_next_unlinked) != NULLAGINO) { > if (!no_modify) > - dino->di_next_unlinked = cpu_to_be32(NULLAGINO); > - return(1); > + dip->di_next_unlinked = cpu_to_be32(NULLAGINO); > + return 1; > } > > - return(0); > + return 0; > } > > /* > @@ -285,17 +253,17 @@ > * returns > zero if the inode has been altered while being cleared > */ > int > -clear_dinode(xfs_mount_t *mp, xfs_dinode_t *dino, xfs_ino_t ino_num) > +clear_dinode(xfs_mount_t *mp, xfs_dinode_t *dip, xfs_ino_t ino_num) > { > int dirty; > > - dirty = clear_dinode_core(&dino->di_core, ino_num); > - dirty += clear_dinode_unlinked(mp, dino); > + dirty = clear_dinode_core(dip, ino_num); > + dirty += clear_dinode_unlinked(mp, dip); > > /* and clear the forks */ > > if (dirty && !no_modify) > - memset(&dino->di_u, 0, XFS_LITINO(mp)); > + memset(XFS_DFORK_DPTR(dip), 0, XFS_LITINO(mp)); > > return(dirty); > } > @@ -1354,11 +1322,11 @@ > xfs_ino_t lino; > > lino = XFS_AGINO_TO_INO(mp, agno, ino); > - if (whichfork == XFS_DATA_FORK && be64_to_cpu(dip->di_core.di_size) > > - XFS_DFORK_DSIZE(dip, mp)) { > + if (whichfork == XFS_DATA_FORK && > + be64_to_cpu(dip->di_size) > XFS_DFORK_DSIZE(dip, mp)) { > do_warn( > _("local inode %llu data fork is too large (size = %lld, max = %d)\n"), > - lino, be64_to_cpu(dip->di_core.di_size), > + lino, be64_to_cpu(dip->di_size), > XFS_DFORK_DSIZE(dip, mp)); > return(1); > } else if (whichfork == XFS_ATTR_FORK) { > @@ -1383,7 +1351,7 @@ > } > > int > -process_symlink_extlist(xfs_mount_t *mp, xfs_ino_t lino, xfs_dinode_t *dino) > +process_symlink_extlist(xfs_mount_t *mp, xfs_ino_t lino, xfs_dinode_t *dip) > { > xfs_dfiloff_t expected_offset; > xfs_bmbt_rec_t *rp; > @@ -1392,23 +1360,23 @@ > int i; > int max_blocks; > > - if (be64_to_cpu(dino->di_core.di_size) <= XFS_DFORK_DSIZE(dino, mp)) { > - if (dino->di_core.di_format == XFS_DINODE_FMT_LOCAL) > + if (be64_to_cpu(dip->di_size) <= XFS_DFORK_DSIZE(dip, mp)) { > + if (dip->di_format == XFS_DINODE_FMT_LOCAL) > return 0; > do_warn(_("mismatch between format (%d) and size (%lld) in " > - "symlink ino %llu\n"), dino->di_core.di_format, > - be64_to_cpu(dino->di_core.di_size), lino); > + "symlink ino %llu\n"), dip->di_format, > + be64_to_cpu(dip->di_size), lino); > return 1; > } > - if (dino->di_core.di_format == XFS_DINODE_FMT_LOCAL) { > + if (dip->di_format == XFS_DINODE_FMT_LOCAL) { > do_warn(_("mismatch between format (%d) and size (%lld) in " > - "symlink inode %llu\n"), dino->di_core.di_format, > - be64_to_cpu(dino->di_core.di_size), lino); > + "symlink inode %llu\n"), dip->di_format, > + be64_to_cpu(dip->di_size), lino); > return 1; > } > > - rp = (xfs_bmbt_rec_t *)XFS_DFORK_DPTR(dino); > - numrecs = be32_to_cpu(dino->di_core.di_nextents); > + rp = (xfs_bmbt_rec_t *)XFS_DFORK_DPTR(dip); > + numrecs = be32_to_cpu(dip->di_nextents); > > /* > * the max # of extents in a symlink inode is equal to the > @@ -1474,11 +1442,10 @@ > process_symlink( > xfs_mount_t *mp, > xfs_ino_t lino, > - xfs_dinode_t *dino, > + xfs_dinode_t *dip, > blkmap_t *blkmap) > { > xfs_dfsbno_t fsbno; > - xfs_dinode_core_t *dinoc = &dino->di_core; > xfs_buf_t *bp = NULL; > char *symlink, *cptr, *buf_data; > int i, size, amountdone; > @@ -1490,9 +1457,9 @@ > * the inode is structurally ok so we don't have to check > * for that > */ > - if (be64_to_cpu(dinoc->di_size) >= MAXPATHLEN) { > + if (be64_to_cpu(dip->di_size) >= MAXPATHLEN) { > do_warn(_("symlink in inode %llu too long (%lld chars)\n"), > - lino, be64_to_cpu(dinoc->di_size)); > + lino, be64_to_cpu(dip->di_size)); > return(1); > } > > @@ -1501,13 +1468,13 @@ > * get symlink contents into data area > */ > symlink = &data[0]; > - if (be64_to_cpu(dinoc->di_size) <= XFS_DFORK_DSIZE(dino, mp)) { > + if (be64_to_cpu(dip->di_size) <= XFS_DFORK_DSIZE(dip, mp)) { > /* > * local symlink, just copy the symlink out of the > * inode into the data area > */ > - memmove(symlink, XFS_DFORK_DPTR(dino), > - be64_to_cpu(dinoc->di_size)); > + memmove(symlink, XFS_DFORK_DPTR(dip), > + be64_to_cpu(dip->di_size)); > } else { > /* > * stored in a meta-data file, have to bmap one block > @@ -1516,7 +1483,7 @@ > i = size = amountdone = 0; > cptr = symlink; > > - while (amountdone < be64_to_cpu(dinoc->di_size)) { > + while (amountdone < be64_to_cpu(dip->di_size)) { > fsbno = blkmap_get(blkmap, i); > if (fsbno != NULLDFSBNO) > bp = libxfs_readbuf(mp->m_dev, > @@ -1530,7 +1497,7 @@ > } > > buf_data = (char *)XFS_BUF_PTR(bp); > - size = MIN(be64_to_cpu(dinoc->di_size) - amountdone, > + size = MIN(be64_to_cpu(dip->di_size) - amountdone, > XFS_FSB_TO_BB(mp, 1) * BBSIZE); > memmove(cptr, buf_data, size); > cptr += size; > @@ -1539,12 +1506,12 @@ > libxfs_putbuf(bp); > } > } > - data[be64_to_cpu(dinoc->di_size)] = '\0'; > + data[be64_to_cpu(dip->di_size)] = '\0'; > > /* > * check for nulls > */ > - if (null_check(symlink, be64_to_cpu(dinoc->di_size))) { > + if (null_check(symlink, be64_to_cpu(dip->di_size))) { > do_warn( > _("found illegal null character in symlink inode %llu\n"), > lino); > @@ -1554,7 +1521,7 @@ > /* > * check for any component being too long > */ > - if (be64_to_cpu(dinoc->di_size) >= MAXNAMELEN) { > + if (be64_to_cpu(dip->di_size) >= MAXNAMELEN) { > cptr = strchr(symlink, '/'); > > while (cptr != NULL) { > @@ -1585,7 +1552,7 @@ > */ > static int > process_misc_ino_types(xfs_mount_t *mp, > - xfs_dinode_t *dino, > + xfs_dinode_t *dip, > xfs_ino_t lino, > int type) > { > @@ -1602,27 +1569,27 @@ > /* > * must also have a zero size > */ > - if (be64_to_cpu(dino->di_core.di_size) != 0) { > + if (be64_to_cpu(dip->di_size) != 0) { > switch (type) { > case XR_INO_CHRDEV: > do_warn(_("size of character device inode %llu != 0 " > "(%lld bytes)\n"), lino, > - be64_to_cpu(dino->di_core.di_size)); > + be64_to_cpu(dip->di_size)); > break; > case XR_INO_BLKDEV: > do_warn(_("size of block device inode %llu != 0 " > "(%lld bytes)\n"), lino, > - be64_to_cpu(dino->di_core.di_size)); > + be64_to_cpu(dip->di_size)); > break; > case XR_INO_SOCK: > do_warn(_("size of socket inode %llu != 0 " > "(%lld bytes)\n"), lino, > - be64_to_cpu(dino->di_core.di_size)); > + be64_to_cpu(dip->di_size)); > break; > case XR_INO_FIFO: > do_warn(_("size of fifo inode %llu != 0 " > "(%lld bytes)\n"), lino, > - be64_to_cpu(dino->di_core.di_size)); > + be64_to_cpu(dip->di_size)); > break; > default: > do_warn(_("Internal error - process_misc_ino_types, " > @@ -1641,7 +1608,7 @@ > { > /* > * you can not enforce all misc types have zero data fork blocks > - * by checking dino->di_core.di_nblocks because atotblocks (attribute > + * by checking dip->di_nblocks because atotblocks (attribute > * blocks) are part of nblocks. We must check this later when atotblocks > * has been calculated or by doing a simple check that anExtents == 0. > * We must also guarantee that totblocks is 0. Thus nblocks checking > @@ -1680,50 +1647,50 @@ > > static inline int > dinode_fmt( > - xfs_dinode_core_t *dinoc) > + xfs_dinode_t *dip) > { > - return be16_to_cpu(dinoc->di_mode) & S_IFMT; > + return be16_to_cpu(dip->di_mode) & S_IFMT; > } > > static inline void > change_dinode_fmt( > - xfs_dinode_core_t *dinoc, > + xfs_dinode_t *dip, > int new_fmt) > { > - int mode = be16_to_cpu(dinoc->di_mode); > + int mode = be16_to_cpu(dip->di_mode); > > ASSERT((new_fmt & ~S_IFMT) == 0); > > mode &= ~S_IFMT; > mode |= new_fmt; > - dinoc->di_mode = cpu_to_be16(mode); > + dip->di_mode = cpu_to_be16(mode); > } > > static int > check_dinode_mode_format( > - xfs_dinode_core_t *dinoc) > + xfs_dinode_t *dip) > { > - if (dinoc->di_format >= XFS_DINODE_FMT_UUID) > + if (dip->di_format >= XFS_DINODE_FMT_UUID) > return -1; /* FMT_UUID is not used */ > > - switch (dinode_fmt(dinoc)) { > + switch (dinode_fmt(dip)) { > case S_IFIFO: > case S_IFCHR: > case S_IFBLK: > case S_IFSOCK: > - return (dinoc->di_format != XFS_DINODE_FMT_DEV) ? -1 : 0; > + return (dip->di_format != XFS_DINODE_FMT_DEV) ? -1 : 0; > > case S_IFDIR: > - return (dinoc->di_format < XFS_DINODE_FMT_LOCAL || > - dinoc->di_format > XFS_DINODE_FMT_BTREE) ? -1 : 0; > + return (dip->di_format < XFS_DINODE_FMT_LOCAL || > + dip->di_format > XFS_DINODE_FMT_BTREE) ? -1 : 0; > > case S_IFREG: > - return (dinoc->di_format < XFS_DINODE_FMT_EXTENTS || > - dinoc->di_format > XFS_DINODE_FMT_BTREE) ? -1 : 0; > + return (dip->di_format < XFS_DINODE_FMT_EXTENTS || > + dip->di_format > XFS_DINODE_FMT_BTREE) ? -1 : 0; > > case S_IFLNK: > - return (dinoc->di_format < XFS_DINODE_FMT_LOCAL || > - dinoc->di_format > XFS_DINODE_FMT_EXTENTS) ? -1 : 0; > + return (dip->di_format < XFS_DINODE_FMT_LOCAL || > + dip->di_format > XFS_DINODE_FMT_EXTENTS) ? -1 : 0; > > default: ; > } > @@ -1738,7 +1705,7 @@ > static int > process_check_sb_inodes( > xfs_mount_t *mp, > - xfs_dinode_core_t *dinoc, > + xfs_dinode_t *dip, > xfs_ino_t lino, > int *type, > int *dirty) > @@ -1746,11 +1713,11 @@ > if (lino == mp->m_sb.sb_rootino) { > if (*type != XR_INO_DIR) { > do_warn(_("root inode %llu has bad type 0x%x\n"), > - lino, dinode_fmt(dinoc)); > + lino, dinode_fmt(dip)); > *type = XR_INO_DIR; > if (!no_modify) { > do_warn(_("resetting to directory\n")); > - change_dinode_fmt(dinoc, S_IFDIR); > + change_dinode_fmt(dip, S_IFDIR); > *dirty = 1; > } else > do_warn(_("would reset to directory\n")); > @@ -1760,7 +1727,7 @@ > if (lino == mp->m_sb.sb_uquotino) { > if (*type != XR_INO_DATA) { > do_warn(_("user quota inode %llu has bad type 0x%x\n"), > - lino, dinode_fmt(dinoc)); > + lino, dinode_fmt(dip)); > mp->m_sb.sb_uquotino = NULLFSINO; > return 1; > } > @@ -1769,7 +1736,7 @@ > if (lino == mp->m_sb.sb_gquotino) { > if (*type != XR_INO_DATA) { > do_warn(_("group quota inode %llu has bad type 0x%x\n"), > - lino, dinode_fmt(dinoc)); > + lino, dinode_fmt(dip)); > mp->m_sb.sb_gquotino = NULLFSINO; > return 1; > } > @@ -1778,18 +1745,18 @@ > if (lino == mp->m_sb.sb_rsumino) { > if (*type != XR_INO_RTSUM) { > do_warn(_("realtime summary inode %llu has bad type 0x%x, "), > - lino, dinode_fmt(dinoc)); > + lino, dinode_fmt(dip)); > if (!no_modify) { > do_warn(_("resetting to regular file\n")); > - change_dinode_fmt(dinoc, S_IFREG); > + change_dinode_fmt(dip, S_IFREG); > *dirty = 1; > } else { > do_warn(_("would reset to regular file\n")); > } > } > - if (mp->m_sb.sb_rblocks == 0 && dinoc->di_nextents != 0) { > + if (mp->m_sb.sb_rblocks == 0 && dip->di_nextents != 0) { > do_warn(_("bad # of extents (%u) for realtime summary inode %llu\n"), > - be32_to_cpu(dinoc->di_nextents), lino); > + be32_to_cpu(dip->di_nextents), lino); > return 1; > } > return 0; > @@ -1797,18 +1764,18 @@ > if (lino == mp->m_sb.sb_rbmino) { > if (*type != XR_INO_RTBITMAP) { > do_warn(_("realtime bitmap inode %llu has bad type 0x%x, "), > - lino, dinode_fmt(dinoc)); > + lino, dinode_fmt(dip)); > if (!no_modify) { > do_warn(_("resetting to regular file\n")); > - change_dinode_fmt(dinoc, S_IFREG); > + change_dinode_fmt(dip, S_IFREG); > *dirty = 1; > } else { > do_warn(_("would reset to regular file\n")); > } > } > - if (mp->m_sb.sb_rblocks == 0 && dinoc->di_nextents != 0) { > + if (mp->m_sb.sb_rblocks == 0 && dip->di_nextents != 0) { > do_warn(_("bad # of extents (%u) for realtime bitmap inode %llu\n"), > - be32_to_cpu(dinoc->di_nextents), lino); > + be32_to_cpu(dip->di_nextents), lino); > return 1; > } > return 0; > @@ -1830,21 +1797,20 @@ > static int > process_check_inode_sizes( > xfs_mount_t *mp, > - xfs_dinode_t *dino, > + xfs_dinode_t *dip, > xfs_ino_t lino, > int type) > { > - xfs_dinode_core_t *dinoc = &dino->di_core; > - xfs_fsize_t size = be64_to_cpu(dinoc->di_size); > + xfs_fsize_t size = be64_to_cpu(dip->di_size); > > switch (type) { > > case XR_INO_DIR: > - if (size <= XFS_DFORK_DSIZE(dino, mp) && > - dinoc->di_format != XFS_DINODE_FMT_LOCAL) { > + if (size <= XFS_DFORK_DSIZE(dip, mp) && > + dip->di_format != XFS_DINODE_FMT_LOCAL) { > do_warn(_("mismatch between format (%d) and size " > "(%lld) in directory ino %llu\n"), > - dinoc->di_format, size, lino); > + dip->di_format, size, lino); > return 1; > } > if (size > XFS_DIR2_LEAF_OFFSET) { > @@ -1855,7 +1821,7 @@ > break; > > case XR_INO_SYMLINK: > - if (process_symlink_extlist(mp, lino, dino)) { > + if (process_symlink_extlist(mp, lino, dip)) { > do_warn(_("bad data fork in symlink %llu\n"), lino); > return 1; > } > @@ -1866,7 +1832,7 @@ > case XR_INO_SOCK: /* fall through to FIFO case ... */ > case XR_INO_MOUNTPOINT: /* fall through to FIFO case ... */ > case XR_INO_FIFO: > - if (process_misc_ino_types(mp, dino, lino, type)) > + if (process_misc_ino_types(mp, dip, lino, type)) > return 1; > break; > > @@ -1914,17 +1880,17 @@ > static int > process_check_inode_forkoff( > xfs_mount_t *mp, > - xfs_dinode_core_t *dinoc, > + xfs_dinode_t *dip, > xfs_ino_t lino) > { > - if (dinoc->di_forkoff == 0) > + if (dip->di_forkoff == 0) > return 0; > > - switch (dinoc->di_format) { > + switch (dip->di_format) { > case XFS_DINODE_FMT_DEV: > - if (dinoc->di_forkoff != (roundup(sizeof(xfs_dev_t), 8) >> 3)) { > + if (dip->di_forkoff != (roundup(sizeof(xfs_dev_t), 8) >> 3)) { > do_warn(_("bad attr fork offset %d in dev inode %llu, " > - "should be %d\n"), dinoc->di_forkoff, lino, > + "should be %d\n"), dip->di_forkoff, lino, > (int)(roundup(sizeof(xfs_dev_t), 8) >> 3)); > return 1; > } > @@ -1932,15 +1898,15 @@ > case XFS_DINODE_FMT_LOCAL: /* fall through ... */ > case XFS_DINODE_FMT_EXTENTS: /* fall through ... */ > case XFS_DINODE_FMT_BTREE: > - if (dinoc->di_forkoff >= (XFS_LITINO(mp) >> 3)) { > + if (dip->di_forkoff >= (XFS_LITINO(mp) >> 3)) { > do_warn(_("bad attr fork offset %d in inode %llu, " > - "max=%d\n"), dinoc->di_forkoff, lino, > + "max=%d\n"), dip->di_forkoff, lino, > XFS_LITINO(mp) >> 3); > return 1; > } > break; > default: > - do_error(_("unexpected inode format %d\n"), dinoc->di_format); > + do_error(_("unexpected inode format %d\n"), dip->di_format); > break; > } > return 0; > @@ -1951,24 +1917,24 @@ > */ > static int > process_inode_blocks_and_extents( > - xfs_dinode_core_t *dinoc, > + xfs_dinode_t *dip, > xfs_drfsbno_t nblocks, > __uint64_t nextents, > __uint64_t anextents, > xfs_ino_t lino, > int *dirty) > { > - if (nblocks != be64_to_cpu(dinoc->di_nblocks)) { > + if (nblocks != be64_to_cpu(dip->di_nblocks)) { > if (!no_modify) { > do_warn(_("correcting nblocks for inode %llu, " > "was %llu - counted %llu\n"), lino, > - be64_to_cpu(dinoc->di_nblocks), nblocks); > - dinoc->di_nblocks = cpu_to_be64(nblocks); > + be64_to_cpu(dip->di_nblocks), nblocks); > + dip->di_nblocks = cpu_to_be64(nblocks); > *dirty = 1; > } else { > do_warn(_("bad nblocks %llu for inode %llu, " > "would reset to %llu\n"), > - be64_to_cpu(dinoc->di_nblocks), lino, nblocks); > + be64_to_cpu(dip->di_nblocks), lino, nblocks); > } > } > > @@ -1977,16 +1943,16 @@ > nextents, lino); > return 1; > } > - if (nextents != be32_to_cpu(dinoc->di_nextents)) { > + if (nextents != be32_to_cpu(dip->di_nextents)) { > if (!no_modify) { > do_warn(_("correcting nextents for inode %llu, " > "was %d - counted %llu\n"), lino, > - be32_to_cpu(dinoc->di_nextents), nextents); > - dinoc->di_nextents = cpu_to_be32(nextents); > + be32_to_cpu(dip->di_nextents), nextents); > + dip->di_nextents = cpu_to_be32(nextents); > *dirty = 1; > } else { > do_warn(_("bad nextents %d for inode %llu, would reset " > - "to %llu\n"), be32_to_cpu(dinoc->di_nextents), > + "to %llu\n"), be32_to_cpu(dip->di_nextents), > lino, nextents); > } > } > @@ -1996,16 +1962,16 @@ > anextents, lino); > return 1; > } > - if (anextents != be16_to_cpu(dinoc->di_anextents)) { > + if (anextents != be16_to_cpu(dip->di_anextents)) { > if (!no_modify) { > do_warn(_("correcting anextents for inode %llu, " > "was %d - counted %llu\n"), lino, > - be16_to_cpu(dinoc->di_anextents), anextents); > - dinoc->di_anextents = cpu_to_be16(anextents); > + be16_to_cpu(dip->di_anextents), anextents); > + dip->di_anextents = cpu_to_be16(anextents); > *dirty = 1; > } else { > do_warn(_("bad anextents %d for inode %llu, would reset" > - " to %llu\n"), be16_to_cpu(dinoc->di_anextents), > + " to %llu\n"), be16_to_cpu(dip->di_anextents), > lino, anextents); > } > } > @@ -2020,7 +1986,7 @@ > xfs_mount_t *mp, > xfs_agnumber_t agno, > xfs_agino_t ino, > - xfs_dinode_t *dino, > + xfs_dinode_t *dip, > int type, > int *dirty, > xfs_drfsbno_t *totblocks, > @@ -2028,30 +1994,29 @@ > blkmap_t **dblkmap, > int check_dups) > { > - xfs_dinode_core_t *dinoc = &dino->di_core; > xfs_ino_t lino = XFS_AGINO_TO_INO(mp, agno, ino); > int err = 0; > > - *nextents = be32_to_cpu(dinoc->di_nextents); > - if (*nextents > be64_to_cpu(dinoc->di_nblocks)) > + *nextents = be32_to_cpu(dip->di_nextents); > + if (*nextents > be64_to_cpu(dip->di_nblocks)) > *nextents = 1; > > - if (dinoc->di_format != XFS_DINODE_FMT_LOCAL && type != XR_INO_RTDATA) > + if (dip->di_format != XFS_DINODE_FMT_LOCAL && type != XR_INO_RTDATA) > *dblkmap = blkmap_alloc(*nextents); > *nextents = 0; > > - switch (dinoc->di_format) { > + switch (dip->di_format) { > case XFS_DINODE_FMT_LOCAL: > - err = process_lclinode(mp, agno, ino, dino, XFS_DATA_FORK); > + err = process_lclinode(mp, agno, ino, dip, XFS_DATA_FORK); > *totblocks = 0; > break; > case XFS_DINODE_FMT_EXTENTS: > - err = process_exinode(mp, agno, ino, dino, type, dirty, > + err = process_exinode(mp, agno, ino, dip, type, dirty, > totblocks, nextents, dblkmap, XFS_DATA_FORK, > check_dups); > break; > case XFS_DINODE_FMT_BTREE: > - err = process_btinode(mp, agno, ino, dino, type, dirty, > + err = process_btinode(mp, agno, ino, dip, type, dirty, > totblocks, nextents, dblkmap, XFS_DATA_FORK, > check_dups); > break; > @@ -2060,13 +2025,13 @@ > break; > default: > do_error(_("unknown format %d, ino %llu (mode = %d)\n"), > - dinoc->di_format, lino, be16_to_cpu(dinoc->di_mode)); > + dip->di_format, lino, be16_to_cpu(dip->di_mode)); > } > > if (err) { > do_warn(_("bad data fork in inode %llu\n"), lino); > if (!no_modify) { > - *dirty += clear_dinode(mp, dino, lino); > + *dirty += clear_dinode(mp, dip, lino); > ASSERT(*dirty > 0); > } > return 1; > @@ -2078,18 +2043,18 @@ > * re-process data fork to set bitmap since the > * bitmap wasn't set the first time through > */ > - switch (dinoc->di_format) { > + switch (dip->di_format) { > case XFS_DINODE_FMT_LOCAL: > - err = process_lclinode(mp, agno, ino, dino, > + err = process_lclinode(mp, agno, ino, dip, > XFS_DATA_FORK); > break; > case XFS_DINODE_FMT_EXTENTS: > - err = process_exinode(mp, agno, ino, dino, type, > + err = process_exinode(mp, agno, ino, dip, type, > dirty, totblocks, nextents, dblkmap, > XFS_DATA_FORK, 0); > break; > case XFS_DINODE_FMT_BTREE: > - err = process_btinode(mp, agno, ino, dino, type, > + err = process_btinode(mp, agno, ino, dip, type, > dirty, totblocks, nextents, dblkmap, > XFS_DATA_FORK, 0); > break; > @@ -2098,8 +2063,8 @@ > break; > default: > do_error(_("unknown format %d, ino %llu (mode = %d)\n"), > - dinoc->di_format, lino, > - be16_to_cpu(dinoc->di_mode)); > + dip->di_format, lino, > + be16_to_cpu(dip->di_mode)); > } > > if (no_modify && err != 0) > @@ -2118,7 +2083,7 @@ > xfs_mount_t *mp, > xfs_agnumber_t agno, > xfs_agino_t ino, > - xfs_dinode_t *dino, > + xfs_dinode_t *dip, > int type, > int *dirty, > xfs_drfsbno_t *atotblocks, > @@ -2127,20 +2092,19 @@ > int extra_attr_check, > int *retval) > { > - xfs_dinode_core_t *dinoc = &dino->di_core; > xfs_ino_t lino = XFS_AGINO_TO_INO(mp, agno, ino); > blkmap_t *ablkmap = NULL; > int repair = 0; > int err; > > - if (!XFS_DFORK_Q(dino)) { > + if (!XFS_DFORK_Q(dip)) { > *anextents = 0; > - if (dinoc->di_aformat != XFS_DINODE_FMT_EXTENTS) { > + if (dip->di_aformat != XFS_DINODE_FMT_EXTENTS) { > do_warn(_("bad attribute format %d in inode %llu, "), > - dinoc->di_aformat, lino); > + dip->di_aformat, lino); > if (!no_modify) { > do_warn(_("resetting value\n")); > - dinoc->di_aformat = XFS_DINODE_FMT_EXTENTS; > + dip->di_aformat = XFS_DINODE_FMT_EXTENTS; > *dirty = 1; > } else > do_warn(_("would reset value\n")); > @@ -2148,33 +2112,33 @@ > return 0; > } > > - *anextents = be16_to_cpu(dinoc->di_anextents); > - if (*anextents > be64_to_cpu(dinoc->di_nblocks)) > + *anextents = be16_to_cpu(dip->di_anextents); > + if (*anextents > be64_to_cpu(dip->di_nblocks)) > *anextents = 1; > > - switch (dinoc->di_aformat) { > + switch (dip->di_aformat) { > case XFS_DINODE_FMT_LOCAL: > *anextents = 0; > *atotblocks = 0; > - err = process_lclinode(mp, agno, ino, dino, XFS_ATTR_FORK); > + err = process_lclinode(mp, agno, ino, dip, XFS_ATTR_FORK); > break; > case XFS_DINODE_FMT_EXTENTS: > ablkmap = blkmap_alloc(*anextents); > *anextents = 0; > - err = process_exinode(mp, agno, ino, dino, type, dirty, > + err = process_exinode(mp, agno, ino, dip, type, dirty, > atotblocks, anextents, &ablkmap, > XFS_ATTR_FORK, check_dups); > break; > case XFS_DINODE_FMT_BTREE: > ablkmap = blkmap_alloc(*anextents); > *anextents = 0; > - err = process_btinode(mp, agno, ino, dino, type, dirty, > + err = process_btinode(mp, agno, ino, dip, type, dirty, > atotblocks, anextents, &ablkmap, > XFS_ATTR_FORK, check_dups); > break; > default: > do_warn(_("illegal attribute format %d, ino %llu\n"), > - dinoc->di_aformat, lino); > + dip->di_aformat, lino); > err = 1; > break; > } > @@ -2193,11 +2157,11 @@ > if (!no_modify) { > if (delete_attr_ok) { > do_warn(_(", clearing attr fork\n")); > - *dirty += clear_dinode_attr(mp, dino, lino); > - dinoc->di_aformat = XFS_DINODE_FMT_LOCAL; > + *dirty += clear_dinode_attr(mp, dip, lino); > + dip->di_aformat = XFS_DINODE_FMT_LOCAL; > } else { > do_warn("\n"); > - *dirty += clear_dinode(mp, dino, lino); > + *dirty += clear_dinode(mp, dip, lino); > } > ASSERT(*dirty > 0); > } else { > @@ -2213,24 +2177,24 @@ > } > > if (check_dups) { > - switch (dinoc->di_aformat) { > + switch (dip->di_aformat) { > case XFS_DINODE_FMT_LOCAL: > - err = process_lclinode(mp, agno, ino, dino, > + err = process_lclinode(mp, agno, ino, dip, > XFS_ATTR_FORK); > break; > case XFS_DINODE_FMT_EXTENTS: > - err = process_exinode(mp, agno, ino, dino, > + err = process_exinode(mp, agno, ino, dip, > type, dirty, atotblocks, anextents, > &ablkmap, XFS_ATTR_FORK, 0); > break; > case XFS_DINODE_FMT_BTREE: > - err = process_btinode(mp, agno, ino, dino, > + err = process_btinode(mp, agno, ino, dip, > type, dirty, atotblocks, anextents, > &ablkmap, XFS_ATTR_FORK, 0); > break; > default: > do_error(_("illegal attribute fmt %d, ino %llu\n"), > - dinoc->di_aformat, lino); > + dip->di_aformat, lino); > } > > if (no_modify && err != 0) { > @@ -2247,14 +2211,14 @@ > > /* get this only in phase 3, not in both phase 3 and 4 */ > if (extra_attr_check && > - process_attributes(mp, lino, dino, ablkmap, &repair)) { > + process_attributes(mp, lino, dip, ablkmap, &repair)) { > do_warn(_("problem with attribute contents in inode %llu\n"), > lino); > if (!repair) { > /* clear attributes if not done already */ > if (!no_modify) { > - *dirty += clear_dinode_attr(mp, dino, lino); > - dinoc->di_aformat = XFS_DINODE_FMT_LOCAL; > + *dirty += clear_dinode_attr(mp, dip, lino); > + dip->di_aformat = XFS_DINODE_FMT_LOCAL; > } else { > do_warn(_("would clear attr fork\n")); > } > @@ -2277,18 +2241,18 @@ > > static int > process_check_inode_nlink_version( > - xfs_dinode_core_t *dinoc, > + xfs_dinode_t *dip, > xfs_ino_t lino) > { > int dirty = 0; > > - if (dinoc->di_version > XFS_DINODE_VERSION_1 && !fs_inode_nlink) { > + if (dip->di_version > 1 && !fs_inode_nlink) { > /* > * do we have a fs/inode version mismatch with a valid > * version 2 inode here that has to stay version 2 or > * lose links? > */ > - if (be32_to_cpu(dinoc->di_nlink) > XFS_MAXLINK_1) { > + if (be32_to_cpu(dip->di_nlink) > XFS_MAXLINK_1) { > /* > * yes. are nlink inodes allowed? > */ > @@ -2318,17 +2282,17 @@ > if (!no_modify) { > do_warn(_("converting back to version 1,\n" > "this may destroy %d links\n"), > - be32_to_cpu(dinoc->di_nlink) - > + be32_to_cpu(dip->di_nlink) - > XFS_MAXLINK_1); > > - dinoc->di_version = XFS_DINODE_VERSION_1; > - dinoc->di_nlink = cpu_to_be32(XFS_MAXLINK_1); > - dinoc->di_onlink = cpu_to_be16(XFS_MAXLINK_1); > + dip->di_version = 1; > + dip->di_nlink = cpu_to_be32(XFS_MAXLINK_1); > + dip->di_onlink = cpu_to_be16(XFS_MAXLINK_1); > dirty = 1; > } else { > do_warn(_("would convert back to version 1,\n" > "\tthis might destroy %d links\n"), > - be32_to_cpu(dinoc->di_nlink) - > + be32_to_cpu(dip->di_nlink) - > XFS_MAXLINK_1); > } > } > @@ -2344,9 +2308,9 @@ > do_warn(_("found version 2 inode %llu, "), lino); > if (!no_modify) { > do_warn(_("converting back to version 1\n")); > - dinoc->di_version = XFS_DINODE_VERSION_1; > - dinoc->di_onlink = cpu_to_be16( > - be32_to_cpu(dinoc->di_nlink)); > + dip->di_version = 1; > + dip->di_onlink = cpu_to_be16( > + be32_to_cpu(dip->di_nlink)); > dirty = 1; > } else { > do_warn(_("would convert back to version 1\n")); > @@ -2359,18 +2323,17 @@ > * to stay a version 2 inode. it should have a zero > * onlink field, so clear it. > */ > - if (dinoc->di_version > XFS_DINODE_VERSION_1 && > - dinoc->di_onlink != 0 && fs_inode_nlink > 0) { > + if (dip->di_version > 1 && dip->di_onlink != 0 && fs_inode_nlink > 0) { > if (!no_modify) { > do_warn(_("clearing obsolete nlink field in " > "version 2 inode %llu, was %d, now 0\n"), > - lino, be16_to_cpu(dinoc->di_onlink)); > - dinoc->di_onlink = 0; > + lino, be16_to_cpu(dip->di_onlink)); > + dip->di_onlink = 0; > dirty = 1; > } else { > do_warn(_("would clear obsolete nlink field in " > "version 2 inode %llu, currently %d\n"), > - lino, be16_to_cpu(dinoc->di_onlink)); > + lino, be16_to_cpu(dip->di_onlink)); > } > } > return dirty; > @@ -2388,7 +2351,7 @@ > /* ARGSUSED */ > int > process_dinode_int(xfs_mount_t *mp, > - xfs_dinode_t *dino, > + xfs_dinode_t *dip, > xfs_agnumber_t agno, > xfs_agino_t ino, > int was_free, /* 1 if inode is currently free */ > @@ -2405,7 +2368,6 @@ > { > xfs_drfsbno_t totblocks = 0; > xfs_drfsbno_t atotblocks = 0; > - xfs_dinode_core_t *dinoc; > int di_mode; > int type; > int retval = 0; > @@ -2420,9 +2382,8 @@ > *used = is_used; > type = XR_INO_UNKNOWN; > > - dinoc = &dino->di_core; > lino = XFS_AGINO_TO_INO(mp, agno, ino); > - di_mode = be16_to_cpu(dinoc->di_mode); > + di_mode = be16_to_cpu(dip->di_mode); > > /* > * if in verify mode, don't modify the inode. > @@ -2438,35 +2399,33 @@ > */ > ASSERT(uncertain == 0 || verify_mode != 0); > > - if (be16_to_cpu(dinoc->di_magic) != XFS_DINODE_MAGIC) { > + if (be16_to_cpu(dip->di_magic) != XFS_DINODE_MAGIC) { > retval = 1; > if (!uncertain) > do_warn(_("bad magic number 0x%x on inode %llu%c"), > - be16_to_cpu(dinoc->di_magic), lino, > + be16_to_cpu(dip->di_magic), lino, > verify_mode ? '\n' : ','); > if (!verify_mode) { > if (!no_modify) { > do_warn(_(" resetting magic number\n")); > - dinoc->di_magic = cpu_to_be16(XFS_DINODE_MAGIC); > + dip->di_magic = cpu_to_be16(XFS_DINODE_MAGIC); > *dirty = 1; > } else > do_warn(_(" would reset magic number\n")); > } > } > > - if (!XFS_DINODE_GOOD_VERSION(dinoc->di_version) || > - (!fs_inode_nlink && dinoc->di_version > XFS_DINODE_VERSION_1)) { > + if (!XFS_DINODE_GOOD_VERSION(dip->di_version) || > + (!fs_inode_nlink && dip->di_version > 1)) { > retval = 1; > if (!uncertain) > do_warn(_("bad version number 0x%x on inode %llu%c"), > - (__s8)dinoc->di_version, lino, > + (__s8)dip->di_version, lino, > verify_mode ? '\n' : ','); > if (!verify_mode) { > if (!no_modify) { > do_warn(_(" resetting version number\n")); > - dinoc->di_version = (fs_inode_nlink) ? > - XFS_DINODE_VERSION_2 : > - XFS_DINODE_VERSION_1; > + dip->di_version = (fs_inode_nlink) ? 2 : 1; > *dirty = 1; > } else > do_warn(_(" would reset version number\n")); > @@ -2476,10 +2435,10 @@ > /* > * blow out of here if the inode size is < 0 > */ > - if ((xfs_fsize_t)be64_to_cpu(dinoc->di_size) < 0) { > + if ((xfs_fsize_t)be64_to_cpu(dip->di_size) < 0) { > if (!uncertain) > do_warn(_("bad (negative) size %lld on inode %llu\n"), > - be64_to_cpu(dinoc->di_size), lino); > + be64_to_cpu(dip->di_size), lino); > if (verify_mode) > return 1; > goto clear_bad_out; > @@ -2500,7 +2459,7 @@ > * set correctly > */ > if (!no_modify) > - *dirty += clear_dinode(mp, dino, lino); > + *dirty += clear_dinode(mp, dip, lino); > *used = is_free; > return 0; > } > @@ -2512,7 +2471,7 @@ > do_warn(_("imap claims a free inode %llu is in use, "), lino); > if (!no_modify) { > do_warn(_("correcting imap and clearing inode\n")); > - *dirty += clear_dinode(mp, dino, lino); > + *dirty += clear_dinode(mp, dip, lino); > retval = 1; > } else > do_warn(_("would correct imap and clear inode\n")); > @@ -2529,7 +2488,7 @@ > * free inodes since technically any format is legal > * as we reset the inode when we re-use it. > */ > - if (di_mode != 0 && check_dinode_mode_format(dinoc) != 0) { > + if (di_mode != 0 && check_dinode_mode_format(dip) != 0) { > if (!uncertain) > do_warn(_("bad inode format in inode %llu\n"), lino); > if (verify_mode) > @@ -2549,7 +2508,7 @@ > * phase 4. Ugly. > */ > if (check_dups && !no_modify) > - *dirty += clear_dinode_unlinked(mp, dino); > + *dirty += clear_dinode_unlinked(mp, dip); > > /* set type and map type info */ > > @@ -2559,7 +2518,7 @@ > *isa_dir = 1; > break; > case S_IFREG: > - if (be16_to_cpu(dinoc->di_flags) & XFS_DIFLAG_REALTIME) > + if (be16_to_cpu(dip->di_flags) & XFS_DIFLAG_REALTIME) > type = XR_INO_RTDATA; > else if (lino == mp->m_sb.sb_rbmino) > type = XR_INO_RTBITMAP; > @@ -2592,27 +2551,27 @@ > /* > * type checks for superblock inodes > */ > - if (process_check_sb_inodes(mp, dinoc, lino, &type, dirty) != 0) > + if (process_check_sb_inodes(mp, dip, lino, &type, dirty) != 0) > goto clear_bad_out; > > /* > * only regular files with REALTIME or EXTSIZE flags set can have > * extsize set, or directories with EXTSZINHERIT. > */ > - if (be32_to_cpu(dinoc->di_extsize) != 0) { > + if (be32_to_cpu(dip->di_extsize) != 0) { > if ((type == XR_INO_RTDATA) || > - (type == XR_INO_DIR && (be16_to_cpu(dinoc->di_flags) & > + (type == XR_INO_DIR && (be16_to_cpu(dip->di_flags) & > XFS_DIFLAG_EXTSZINHERIT)) || > - (type == XR_INO_DATA && (be16_to_cpu(dinoc->di_flags) & > + (type == XR_INO_DATA && (be16_to_cpu(dip->di_flags) & > XFS_DIFLAG_EXTSIZE))) { > /* s'okay */ ; > } else { > do_warn(_("bad non-zero extent size %u for " > "non-realtime/extsize inode %llu, "), > - be32_to_cpu(dinoc->di_extsize), lino); > + be32_to_cpu(dip->di_extsize), lino); > if (!no_modify) { > do_warn(_("resetting to zero\n")); > - dinoc->di_extsize = 0; > + dip->di_extsize = 0; > *dirty = 1; > } else > do_warn(_("would reset to zero\n")); > @@ -2622,19 +2581,19 @@ > /* > * general size/consistency checks: > */ > - if (process_check_inode_sizes(mp, dino, lino, type) != 0) > + if (process_check_inode_sizes(mp, dip, lino, type) != 0) > goto clear_bad_out; > > /* > * check for illegal values of forkoff > */ > - if (process_check_inode_forkoff(mp, dinoc, lino) != 0) > + if (process_check_inode_forkoff(mp, dip, lino) != 0) > goto clear_bad_out; > > /* > * check data fork -- if it's bad, clear the inode > */ > - if (process_inode_data_fork(mp, agno, ino, dino, type, dirty, > + if (process_inode_data_fork(mp, agno, ino, dip, type, dirty, > &totblocks, &nextents, &dblkmap, check_dups) != 0) > goto bad_out; > > @@ -2642,7 +2601,7 @@ > * check attribute fork if necessary. attributes are > * always stored in the regular filesystem. > */ > - if (process_inode_attr_fork(mp, agno, ino, dino, type, dirty, > + if (process_inode_attr_fork(mp, agno, ino, dip, type, dirty, > &atotblocks, &anextents, check_dups, extra_attr_check, > &retval)) > goto bad_out; > @@ -2656,7 +2615,7 @@ > /* > * correct space counters if required > */ > - if (process_inode_blocks_and_extents(dinoc, totblocks + atotblocks, > + if (process_inode_blocks_and_extents(dip, totblocks + atotblocks, > nextents, anextents, lino, dirty) != 0) > goto clear_bad_out; > > @@ -2666,9 +2625,9 @@ > switch (type) { > case XR_INO_DIR: > if (xfs_sb_version_hasdirv2(&mp->m_sb) ? > - process_dir2(mp, lino, dino, ino_discovery, > + process_dir2(mp, lino, dip, ino_discovery, > dirty, "", parent, dblkmap) : > - process_dir(mp, lino, dino, ino_discovery, > + process_dir(mp, lino, dip, ino_discovery, > dirty, "", parent, dblkmap)) { > do_warn(_("problem with directory contents in " > "inode %llu\n"), lino); > @@ -2676,7 +2635,7 @@ > } > break; > case XR_INO_SYMLINK: > - if (process_symlink(mp, lino, dino, dblkmap) != 0) { > + if (process_symlink(mp, lino, dip, dblkmap) != 0) { > do_warn(_("problem with symbolic link in inode %llu\n"), > lino); > goto clear_bad_out; > @@ -2694,13 +2653,13 @@ > * just leave nlinks alone. even if it's set wrong, > * it'll be reset when read in. > */ > - *dirty += process_check_inode_nlink_version(dinoc, lino); > + *dirty += process_check_inode_nlink_version(dip, lino); > > return retval; > > clear_bad_out: > if (!no_modify) { > - *dirty += clear_dinode(mp, dino, lino); > + *dirty += clear_dinode(mp, dip, lino); > ASSERT(*dirty > 0); > } > bad_out: > Index: xfs-cmds/xfsprogs/repair/dir.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/repair/dir.c 2008-12-06 20:05:45.000000000 +0100 > +++ xfs-cmds/xfsprogs/repair/dir.c 2008-12-06 20:05:49.000000000 +0100 > @@ -107,7 +107,7 @@ > sf = (xfs_dir_shortform_t *)XFS_DFORK_DPTR(dip); > max_size = XFS_DFORK_DSIZE(dip, mp); > num_entries = sf->hdr.count; > - ino_dir_size = be64_to_cpu(dip->di_core.di_size); > + ino_dir_size = be64_to_cpu(dip->di_size); > *repair = 0; > > ASSERT(ino_dir_size <= max_size); > @@ -338,7 +338,7 @@ > > if (!no_modify) { > tmp_elen = xfs_dir_sf_entsize_byentry(sf_entry); > - be64_add_cpu(&dip->di_core.di_size, -tmp_elen); > + be64_add_cpu(&dip->di_size, -tmp_elen); > ino_dir_size -= tmp_elen; > > tmp_sfe = (xfs_dir_sf_entry_t *) > @@ -425,7 +425,7 @@ > ino, (__int64_t) ino_dir_size, > (__int64_t)((__psint_t) next_sfe - (__psint_t) sf)); > > - dip->di_core.di_size = cpu_to_be64((__psint_t)next_sfe > + dip->di_size = cpu_to_be64((__psint_t)next_sfe > - (__psint_t)sf); > *dino_dirty = 1; > *repair = 1; > @@ -954,7 +954,7 @@ > return(fsbno); > } > > - if (be64_to_cpu(dino->di_core.di_size) <= XFS_LBSIZE(mp)) > + if (be64_to_cpu(dino->di_size) <= XFS_LBSIZE(mp)) > return(fsbno); > > do { > @@ -2551,7 +2551,7 @@ > /* > * sanity check inode size > */ > - if (be64_to_cpu(dip->di_core.di_size) < > + if (be64_to_cpu(dip->di_size) < > (da_cursor.greatest_bno + 1) * mp->m_sb.sb_blocksize) { > if ((xfs_fsize_t) da_cursor.greatest_bno > * mp->m_sb.sb_blocksize > UINT_MAX) { > @@ -2565,9 +2565,9 @@ > _("setting directory inode (%llu) size to %llu bytes, was %lld bytes\n"), > ino, (xfs_dfiloff_t) (da_cursor.greatest_bno + 1) > * mp->m_sb.sb_blocksize, > - be64_to_cpu(dip->di_core.di_size)); > + be64_to_cpu(dip->di_size)); > > - dip->di_core.di_size = cpu_to_be64((da_cursor.greatest_bno + 1) > + dip->di_size = cpu_to_be64((da_cursor.greatest_bno + 1) > * mp->m_sb.sb_blocksize); > } > return(0); > @@ -2709,13 +2709,13 @@ > * is only called ONCE so all the subordinate routines will > * fix '.' and junk '..' if they're bogus. > */ > - if (be64_to_cpu(dip->di_core.di_size) <= XFS_DFORK_DSIZE(dip, mp)) { > + if (be64_to_cpu(dip->di_size) <= XFS_DFORK_DSIZE(dip, mp)) { > dot = 1; > dotdot = 1; > if (process_shortform_dir(mp, ino, dip, ino_discovery, > dino_dirty, parent, dirname, &repair)) > res = 1; > - } else if (be64_to_cpu(dip->di_core.di_size) <= XFS_LBSIZE(mp)) { > + } else if (be64_to_cpu(dip->di_size) <= XFS_LBSIZE(mp)) { > if (process_leaf_dir(mp, ino, dip, ino_discovery, > dino_dirty, blkmap, &dot, &dotdot, > parent, dirname, &repair)) > Index: xfs-cmds/xfsprogs/repair/dir2.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/repair/dir2.c 2008-12-06 20:05:45.000000000 +0100 > +++ xfs-cmds/xfsprogs/repair/dir2.c 2008-12-06 20:05:49.000000000 +0100 > @@ -806,7 +806,7 @@ > xfs_dir2_sf_entry_t *sfep; > xfs_dir2_sf_t *sfp; > > - sfp = &dip->di_u.di_dir2sf; > + sfp = (xfs_dir2_sf_t *)XFS_DFORK_DPTR(dip); > sfep = xfs_dir2_sf_firstentry(sfp); > offset = XFS_DIR2_DATA_FIRST_OFFSET; > > @@ -858,10 +858,10 @@ > xfs_dir2_sf_entry_t *tmp_sfep; > xfs_ino_t zero = 0; > > - sfp = &dip->di_u.di_dir2sf; > + sfp = (xfs_dir2_sf_t *)XFS_DFORK_DPTR(dip); > max_size = XFS_DFORK_DSIZE(dip, mp); > num_entries = sfp->hdr.count; > - ino_dir_size = be64_to_cpu(dip->di_core.di_size); > + ino_dir_size = be64_to_cpu(dip->di_size); > offset = XFS_DIR2_DATA_FIRST_OFFSET; > bad_offset = *repair = 0; > > @@ -1097,7 +1097,7 @@ > if (!no_modify) { > tmp_elen = > xfs_dir2_sf_entsize_byentry(sfp, sfep); > - be64_add_cpu(&dip->di_core.di_size, -tmp_elen); > + be64_add_cpu(&dip->di_size, -tmp_elen); > ino_dir_size -= tmp_elen; > > tmp_sfep = (xfs_dir2_sf_entry_t *) > @@ -1205,7 +1205,7 @@ > (__int64_t)((__psint_t)next_sfep - > (__psint_t)sfp)); > > - dip->di_core.di_size = cpu_to_be64( > + dip->di_size = cpu_to_be64( > (__psint_t)next_sfep - (__psint_t)sfp); > *dino_dirty = 1; > *repair = 1; > @@ -2069,20 +2069,20 @@ > */ > if (blkmap) > last = blkmap_last_off(blkmap); > - if (be64_to_cpu(dip->di_core.di_size) <= XFS_DFORK_DSIZE(dip, mp) && > - dip->di_core.di_format == XFS_DINODE_FMT_LOCAL) { > + if (be64_to_cpu(dip->di_size) <= XFS_DFORK_DSIZE(dip, mp) && > + dip->di_format == XFS_DINODE_FMT_LOCAL) { > dot = dotdot = 1; > res = process_sf_dir2(mp, ino, dip, ino_discovery, dino_dirty, > dirname, parent, &repair); > } else if (last == mp->m_dirblkfsbs && > - (dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS || > - dip->di_core.di_format == XFS_DINODE_FMT_BTREE)) { > + (dip->di_format == XFS_DINODE_FMT_EXTENTS || > + dip->di_format == XFS_DINODE_FMT_BTREE)) { > res = process_block_dir2(mp, ino, dip, ino_discovery, > dino_dirty, dirname, parent, blkmap, &dot, &dotdot, > &repair); > } else if (last >= mp->m_dirleafblk + mp->m_dirblkfsbs && > - (dip->di_core.di_format == XFS_DINODE_FMT_EXTENTS || > - dip->di_core.di_format == XFS_DINODE_FMT_BTREE)) { > + (dip->di_format == XFS_DINODE_FMT_EXTENTS || > + dip->di_format == XFS_DINODE_FMT_BTREE)) { > res = process_leaf_node_dir2(mp, ino, dip, ino_discovery, > dirname, parent, blkmap, &dot, &dotdot, &repair, > last > mp->m_dirleafblk + mp->m_dirblkfsbs); > Index: xfs-cmds/xfsprogs/repair/phase6.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/repair/phase6.c 2008-12-06 20:05:45.000000000 +0100 > +++ xfs-cmds/xfsprogs/repair/phase6.c 2008-12-06 20:05:49.000000000 +0100 > @@ -444,11 +444,11 @@ > error); > } > > - memset(&ip->i_d, 0, sizeof(xfs_dinode_core_t)); > + memset(&ip->i_d, 0, sizeof(xfs_icdinode_t)); > > ip->i_d.di_magic = XFS_DINODE_MAGIC; > ip->i_d.di_mode = S_IFREG; > - ip->i_d.di_version = XFS_DINODE_VERSION_1; > + ip->i_d.di_version = 1; > ip->i_d.di_format = XFS_DINODE_FMT_EXTENTS; > ip->i_d.di_aformat = XFS_DINODE_FMT_EXTENTS; > > @@ -677,11 +677,11 @@ > error); > } > > - memset(&ip->i_d, 0, sizeof(xfs_dinode_core_t)); > + memset(&ip->i_d, 0, sizeof(xfs_icdinode_t)); > > ip->i_d.di_magic = XFS_DINODE_MAGIC; > ip->i_d.di_mode = S_IFREG; > - ip->i_d.di_version = XFS_DINODE_VERSION_1; > + ip->i_d.di_version = 1; > ip->i_d.di_format = XFS_DINODE_FMT_EXTENTS; > ip->i_d.di_aformat = XFS_DINODE_FMT_EXTENTS; > > @@ -778,11 +778,11 @@ > /* > * take care of the core -- initialization from xfs_ialloc() > */ > - memset(&ip->i_d, 0, sizeof(xfs_dinode_core_t)); > + memset(&ip->i_d, 0, sizeof(xfs_icdinode_t)); > > ip->i_d.di_magic = XFS_DINODE_MAGIC; > ip->i_d.di_mode = (__uint16_t) mode|S_IFDIR; > - ip->i_d.di_version = XFS_DINODE_VERSION_1; > + ip->i_d.di_version = 1; > ip->i_d.di_format = XFS_DINODE_FMT_EXTENTS; > ip->i_d.di_aformat = XFS_DINODE_FMT_EXTENTS; > > Index: xfs-cmds/xfsprogs/repair/prefetch.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/repair/prefetch.c 2008-12-06 20:05:45.000000000 +0100 > +++ xfs-cmds/xfsprogs/repair/prefetch.c 2008-12-06 20:05:49.000000000 +0100 > @@ -330,7 +330,7 @@ > xfs_dinode_t *dino) > { > pf_read_bmbt_reclist(args, (xfs_bmbt_rec_t *)XFS_DFORK_DPTR(dino), > - be32_to_cpu(dino->di_core.di_nextents)); > + be32_to_cpu(dino->di_nextents)); > } > > static void > @@ -338,27 +338,25 @@ > prefetch_args_t *args, > xfs_buf_t *bp) > { > - xfs_dinode_t *dino; > int icnt = 0; > int hasdir = 0; > int isadir; > - xfs_dinode_core_t *dinoc; > + xfs_dinode_t *dip; > > for (icnt = 0; icnt < (XFS_BUF_COUNT(bp) >> mp->m_sb.sb_inodelog); icnt++) { > - dino = XFS_MAKE_IPTR(mp, bp, icnt); > - dinoc = &dino->di_core; > + dip = XFS_MAKE_IPTR(mp, bp, icnt); > > /* > * We are only prefetching directory contents in extents > * and btree nodes for other inodes > */ > - isadir = (be16_to_cpu(dinoc->di_mode) & S_IFMT) == S_IFDIR; > + isadir = (be16_to_cpu(dip->di_mode) & S_IFMT) == S_IFDIR; > hasdir |= isadir; > > - if (dinoc->di_format <= XFS_DINODE_FMT_LOCAL) > + if (dip->di_format <= XFS_DINODE_FMT_LOCAL) > continue; > > - if (!isadir && (dinoc->di_format == XFS_DINODE_FMT_EXTENTS || > + if (!isadir && (dip->di_format == XFS_DINODE_FMT_EXTENTS || > args->dirs_only)) > continue; > > @@ -367,30 +365,29 @@ > * its directory data. It's a cut down version of > * process_dinode_int() in dinode.c. > */ > - if (dinoc->di_format > XFS_DINODE_FMT_BTREE) > + if (dip->di_format > XFS_DINODE_FMT_BTREE) > continue; > > - if (be16_to_cpu(dinoc->di_magic) != XFS_DINODE_MAGIC) > + if (be16_to_cpu(dip->di_magic) != XFS_DINODE_MAGIC) > continue; > > - if (!XFS_DINODE_GOOD_VERSION(dinoc->di_version) || > - (!fs_inode_nlink && dinoc->di_version > > - XFS_DINODE_VERSION_1)) > + if (!XFS_DINODE_GOOD_VERSION(dip->di_version) || > + (!fs_inode_nlink && dip->di_version > 1)) > continue; > > - if (be64_to_cpu(dinoc->di_size) <= XFS_DFORK_DSIZE(dino, mp)) > + if (be64_to_cpu(dip->di_size) <= XFS_DFORK_DSIZE(dip, mp)) > continue; > > - if ((dinoc->di_forkoff != 0) && > - (dinoc->di_forkoff >= (XFS_LITINO(mp) >> 3))) > + if (dip->di_forkoff && > + (dip->di_forkoff >= (XFS_LITINO(mp) >> 3))) > continue; > > - switch (dinoc->di_format) { > + switch (dip->di_format) { > case XFS_DINODE_FMT_EXTENTS: > - pf_read_exinode(args, dino); > + pf_read_exinode(args, dip); > break; > case XFS_DINODE_FMT_BTREE: > - pf_read_btinode(args, dino, isadir); > + pf_read_btinode(args, dip, isadir); > break; > } > } > Index: xfs-cmds/xfsprogs/include/libxfs.h > =================================================================== > --- xfs-cmds.orig/xfsprogs/include/libxfs.h 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/include/libxfs.h 2008-12-06 20:05:49.000000000 +0100 > @@ -389,10 +389,8 @@ > struct cache_node i_node; > xfs_mount_t *i_mount; /* fs mount struct ptr */ > xfs_ino_t i_ino; /* inode number (agno/agino) */ > - xfs_daddr_t i_blkno; /* blkno of inode buffer */ > + struct xfs_imap i_imap; /* location for xfs_imap() */ > dev_t i_dev; /* dev for this inode */ > - ushort i_len; /* len of inode buffer */ > - ushort i_boffset; /* off of inode in buffer */ > xfs_ifork_t *i_afp; /* attribute fork pointer */ > xfs_ifork_t i_df; /* data fork */ > xfs_trans_t *i_transp; /* ptr to owning transaction */ > @@ -419,8 +417,6 @@ > > extern void libxfs_ichgtime (xfs_inode_t *, int); > extern int libxfs_iflush_int (xfs_inode_t *, xfs_buf_t *); > -extern int libxfs_iread (xfs_mount_t *, xfs_trans_t *, xfs_ino_t, > - xfs_inode_t *, xfs_daddr_t); > > /* Inode Cache Interfaces */ > extern struct cache *libxfs_icache; > @@ -465,7 +461,6 @@ > #include > #include > #include > -#include > #include > #include > > Index: xfs-cmds/xfsprogs/libxfs/logitem.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/libxfs/logitem.c 2008-12-06 20:05:45.000000000 +0100 > +++ xfs-cmds/xfsprogs/libxfs/logitem.c 2008-12-06 20:05:49.000000000 +0100 > @@ -493,7 +493,7 @@ > iip->ili_inode = ip; > iip->ili_format.ilf_type = XFS_LI_INODE; > iip->ili_format.ilf_ino = ip->i_ino; > - iip->ili_format.ilf_blkno = ip->i_blkno; > - iip->ili_format.ilf_len = ip->i_len; > - iip->ili_format.ilf_boffset = ip->i_boffset; > + iip->ili_format.ilf_blkno = ip->i_imap.im_blkno; > + iip->ili_format.ilf_len = ip->i_imap.im_len; > + iip->ili_format.ilf_boffset = ip->i_imap.im_boffset; > } > Index: xfs-cmds/xfsprogs/libxfs/rdwr.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/libxfs/rdwr.c 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/libxfs/rdwr.c 2008-12-06 20:05:49.000000000 +0100 > @@ -677,7 +677,10 @@ > fprintf(stderr, "%s: allocated inode, ino=%llu(%llu), %p\n", > __FUNCTION__, (unsigned long long)ino, bno, ip); > #endif > - if ((error = libxfs_iread(mp, tp, ino, ip, bno))) { > + ip->i_ino = ino; > + ip->i_mount = mp; > + error = xfs_iread(mp, tp, ip, bno, 0); > + if (error) { > cache_node_purge(libxfs_icache, &ino, > (struct cache_node *)ip); > ip = NULL; > Index: xfs-cmds/xfsprogs/libxfs/trans.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/libxfs/trans.c 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/libxfs/trans.c 2008-12-06 20:05:49.000000000 +0100 > @@ -592,7 +592,7 @@ > /* > * Get the buffer containing the on-disk inode. > */ > - error = xfs_itobp(mp, NULL, ip, &dip, &bp, 0, 0, 0); > + error = xfs_itobp(mp, NULL, ip, &dip, &bp, 0); > if (error) { > fprintf(stderr, _("%s: warning - itobp failed (%d)\n"), > progname, error); > Index: xfs-cmds/xfsprogs/libxfs/xfs.h > =================================================================== > --- xfs-cmds.orig/xfsprogs/libxfs/xfs.h 2008-12-06 20:05:45.000000000 +0100 > +++ xfs-cmds/xfsprogs/libxfs/xfs.h 2008-12-06 20:05:49.000000000 +0100 > @@ -181,6 +181,7 @@ > #define XFS_BUF_UNDELAYWRITE(bp) ((bp)->b_flags &= ~LIBXFS_B_DIRTY) > #define XFS_BUF_SET_VTYPE(a,b) ((void) 0) > #define XFS_BUF_SET_VTYPE_REF(a,b,c) ((void) 0) > +#define XFS_BUF_SET_REF(a,b) ((void) 0) > #define XFS_BUF_SET_BDSTRAT_FUNC(a,b) ((void) 0) > > #define xfs_incore(bt,blkno,len,lockit) 0 > @@ -300,7 +301,6 @@ > /* xfs_inode.c */ > void xfs_iflush_fork(xfs_inode_t *, xfs_dinode_t *, xfs_inode_log_item_t *, > int, xfs_buf_t *); > -int xfs_iformat(xfs_inode_t *, xfs_dinode_t *); > > /* xfs_mount.c */ > int xfs_initialize_perag_data(xfs_mount_t *, xfs_agnumber_t); > Index: xfs-cmds/xfsprogs/libxfs/xfs_da_btree.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/libxfs/xfs_da_btree.c 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/libxfs/xfs_da_btree.c 2008-12-06 20:05:49.000000000 +0100 > @@ -1539,11 +1539,14 @@ > int nmap, error, w, count, c, got, i, mapi; > xfs_trans_t *tp; > xfs_mount_t *mp; > + xfs_drfsbno_t nblks; > > dp = args->dp; > mp = dp->i_mount; > w = args->whichfork; > tp = args->trans; > + nblks = dp->i_d.di_nblocks; > + > /* > * For new directories adjust the file offset and block count. > */ > @@ -1620,6 +1623,8 @@ > } > if (mapp != &map) > kmem_free(mapp); > + /* account for newly allocated blocks in reserved blocks total */ > + args->total -= dp->i_d.di_nblocks - nblks; > *new_blkno = (xfs_dablk_t)bno; > return 0; > } > Index: xfs-cmds/xfsprogs/libxfs/xfs_bmap.c > =================================================================== > --- xfs-cmds.orig/xfsprogs/libxfs/xfs_bmap.c 2008-12-06 20:05:46.000000000 +0100 > +++ xfs-cmds/xfsprogs/libxfs/xfs_bmap.c 2008-12-06 20:05:49.000000000 +0100 > @@ -169,7 +169,7 @@ > * Remove the entry "free" from the free item list. Prev points to the > * previous entry, unless "free" is the head of the list. > * > - * Note: this requires user-space public scope for libxfs_iread > + * Note: this requires user-space public scope for libxfs_bmap_finish > */ > void > xfs_bmap_del_free( > @@ -3250,7 +3250,7 @@ > * Remove the entry "free" from the free item list. Prev points to the > * previous entry, unless "free" is the head of the list. > * > - * Note: this requires user-space public scope for libxfs_iread > + * Note: this requires user-space public scope for libxfs_bmap_finish > */ > void > xfs_bmap_del_free( > Index: xfs-cmds/xfstests/186 > =================================================================== > --- xfs-cmds.orig/xfstests/186 2008-12-06 20:04:34.000000000 +0100 > +++ xfs-cmds/xfstests/186 2008-12-06 20:05:59.000000000 +0100 > @@ -66,7 +66,7 @@ > > _filter_inode() > { > - tee -a $seq.full | egrep '^u.sfdir2|^a.sfattr|core.forkoff' |\ > + tee -a $seq.full | egrep '^u.sfdir2|^a.sfattr|forkoff' |\ > egrep -v 'inumber|parent' > } > > Index: xfs-cmds/xfstests/186.out > =================================================================== > --- xfs-cmds.orig/xfstests/186.out 2008-12-06 20:05:57.000000000 +0100 > +++ xfs-cmds/xfstests/186.out 2008-12-06 20:05:59.000000000 +0100 > @@ -2,7 +2,7 @@ > > ================================= > ATTR2 > -core.forkoff = 0 > +forkoff = 0 > u.sfdir2.hdr.count = 0 > u.sfdir2.hdr.i8count = 0 > ================================= > @@ -12,7 +12,7 @@ > > ================================= > ATTR2 > -core.forkoff = 0 > +forkoff = 0 > u.sfdir2.hdr.count = 25 > u.sfdir2.hdr.i8count = 0 > u.sfdir2.list[0].namelen = 6 > @@ -98,7 +98,7 @@ > ================================= > ATTR > ATTR2 > -core.forkoff = 47 > +forkoff = 47 > u.sfdir2.hdr.count = 25 > u.sfdir2.hdr.i8count = 0 > u.sfdir2.list[0].namelen = 6 > @@ -195,7 +195,7 @@ > > ================================= > ATTR > -core.forkoff = 47 > +forkoff = 47 > u.sfdir2.hdr.count = 25 > u.sfdir2.hdr.i8count = 0 > u.sfdir2.list[0].namelen = 6 > > -- > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs ---end quoted text--- From SRS0+0046145508e9135873a4+1955+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 30 11:41:53 2008 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 mBUHfqVq030152 for ; Tue, 30 Dec 2008 11:41:53 -0600 X-ASG-Debug-ID: 1230658912-5cbd00130000-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 72B6852F89 for ; Tue, 30 Dec 2008 09:41:52 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id mQtUVp26RayDhUHN for ; Tue, 30 Dec 2008 09:41:52 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHibI-00067I-70 for xfs@oss.sgi.com; Tue, 30 Dec 2008 17:41:52 +0000 Date: Tue, 30 Dec 2008 12:41:52 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfsprogs: make install-qa should only install additional headers Subject: [PATCH] xfsprogs: make install-qa should only install additional headers Message-ID: <20081230174152.GA18469@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: 1230658912 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean 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. 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 From jeffpc@josefsipek.net Tue Dec 30 11:46:12 2008 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 mBUHkCDO030907 for ; Tue, 30 Dec 2008 11:46:12 -0600 X-ASG-Debug-ID: 1230659171-7c8403a70000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from josefsipek.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 86C5E179813F for ; Tue, 30 Dec 2008 09:46:11 -0800 (PST) Received: from josefsipek.net (josefsipek.net [141.211.133.196]) by cuda.sgi.com with ESMTP id AAwBSRC01O8SkivG for ; Tue, 30 Dec 2008 09:46:11 -0800 (PST) Received: by josefsipek.net (Postfix, from userid 1000) id E3F7A1C00E62; Tue, 30 Dec 2008 12:46:10 -0500 (EST) Date: Tue, 30 Dec 2008 12:46:10 -0500 From: "Josef 'Jeff' Sipek" To: Russell Cattelan Cc: xfs-oss X-ASG-Orig-Subj: Re: xfs-cmds git tree re-imported Subject: Re: xfs-cmds git tree re-imported Message-ID: <20081230174610.GN6284@josefsipek.net> References: <49595778.6000200@thebarn.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49595778.6000200@thebarn.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: josefsipek.net[141.211.133.196] X-Barracuda-Start-Time: 1230659171 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.92 X-Barracuda-Spam-Status: No, SCORE=-1.92 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA085 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14001 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 BSF_SC0_SA085 Custom Rule SA085 X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean On Mon, Dec 29, 2008 at 05:04:24PM -0600, Russell Cattelan wrote: > Based on Christoph's work to the xfs-authors list and his fix to cvsps > that can now accurately detect ptools changes sets the xfs-cmds tree > has been re-imported to git. > > Please see for more info on the git trees in general. > http://xfs.org/index.php/Getting_the_latest_source_code > > Note a new clone of the xfs-cmds tree is required since this is a fresh > import and does not share any commit data with the old import of xfs-cmds. Is this going to be _the_ tree to use? Josef 'Jeff' Sipek. -- I abhor a system designed for the "user", if that word is a coded pejorative meaning "stupid and unsophisticated." - Ken Thompson From SRS0+0046145508e9135873a4+1955+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 30 11:55:35 2008 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 mBUHtZLY031472 for ; Tue, 30 Dec 2008 11:55:35 -0600 X-ASG-Debug-ID: 1230659735-072203a50000-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 722651797C92 for ; Tue, 30 Dec 2008 09:55:35 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id ESLjnoRGi6PaftH6 for ; Tue, 30 Dec 2008 09:55:35 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHioX-0001D1-Ca; Tue, 30 Dec 2008 17:55:33 +0000 Date: Tue, 30 Dec 2008 12:55:33 -0500 From: Christoph Hellwig To: "Josef 'Jeff' Sipek" Cc: Russell Cattelan , xfs-oss X-ASG-Orig-Subj: Re: xfs-cmds git tree re-imported Subject: Re: xfs-cmds git tree re-imported Message-ID: <20081230175533.GA24980@infradead.org> References: <49595778.6000200@thebarn.com> <20081230174610.GN6284@josefsipek.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081230174610.GN6284@josefsipek.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: 1230659735 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean On Tue, Dec 30, 2008 at 12:46:10PM -0500, Josef 'Jeff' Sipek wrote: > On Mon, Dec 29, 2008 at 05:04:24PM -0600, Russell Cattelan wrote: > > Based on Christoph's work to the xfs-authors list and his fix to cvsps > > that can now accurately detect ptools changes sets the xfs-cmds tree > > has been re-imported to git. > > > > Please see for more info on the git trees in general. > > http://xfs.org/index.php/Getting_the_latest_source_code > > > > Note a new clone of the xfs-cmds tree is required since this is a fresh > > import and does not share any commit data with the old import of xfs-cmds. > > Is this going to be _the_ tree to use? Yes. Or if you want to be bleeding edge use: http://git.kernel.org/?p=fs/xfs/xfsprogs-dev.git which is a clone of the above with all the patches from the list that have been reviewed commited, too. From sandeen@sandeen.net Tue Dec 30 12:14:48 2008 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_43 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 mBUIElPC000557 for ; Tue, 30 Dec 2008 12:14:48 -0600 X-ASG-Debug-ID: 1230660886-58d101650000-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 21CFC5312F for ; Tue, 30 Dec 2008 10:14:46 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 2WSiaSlsClIDb6xb for ; Tue, 30 Dec 2008 10:14:46 -0800 (PST) Received: by mail.sandeen.net (Postfix, from userid 500) id 30D43A4B09A; Tue, 30 Dec 2008 12:14:46 -0600 (CST) Message-Id: <20081230181445.849221920@sandeen.net> References: <20081230181413.518122170@sandeen.net> User-Agent: quilt/0.46-1 Date: Tue, 30 Dec 2008 12:14:14 -0600 From: Eric Sandeen To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 1/4] acl: add short option support to the acl commands. Subject: [patch 1/4] acl: add short option support to the acl commands. Content-Disposition: inline; filename=acl-2.2.47-params.patch X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230660887 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.14001 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean Resolves Red Hat bugs: 204087 - getfacl/setfacl should support -n 457244 - setfacl does not recognize -v and -h From: Jiri Moskovcak Signed-off-by: Eric Sandeen --- Index: xfs-cmds/acl/getfacl/getfacl.c =================================================================== --- xfs-cmds.orig/acl/getfacl/getfacl.c +++ xfs-cmds/acl/getfacl/getfacl.c @@ -43,7 +43,7 @@ #define POSIXLY_CORRECT_STR "POSIXLY_CORRECT" #if !POSIXLY_CORRECT -# define CMD_LINE_OPTIONS "dRLP" +# define CMD_LINE_OPTIONS "aceEsRLPtpndvh" #endif #define POSIXLY_CMD_LINE_OPTIONS "d" @@ -555,23 +555,23 @@ void help(void) #if !POSIXLY_CORRECT } else { printf(_( -" --access display the file access control list only\n" +" -a, --access display the file access control list only\n" " -d, --default display the default access control list only\n" -" --omit-header do not display the comment header\n" -" --all-effective print all effective rights\n" -" --no-effective print no effective rights\n" -" --skip-base skip files that only have the base entries\n" +" -c, --omit-header do not display the comment header\n" +" -e, --all-effective print all effective rights\n" +" -E, --no-effective print no effective rights\n" +" -s, --skip-base skip files that only have the base entries\n" " -R, --recursive recurse into subdirectories\n" " -L, --logical logical walk, follow symbolic links\n" " -P, --physical physical walk, do not follow symbolic links\n" -" --tabular use tabular output format\n" -" --numeric print numeric user/group identifiers\n" -" --absolute-names don't strip leading '/' in pathnames\n")); +" -t, --tabular use tabular output format\n" +" -n, --numeric print numeric user/group identifiers\n" +" -p, --absolute-names don't strip leading '/' in pathnames\n")); } #endif printf(_( -" --version print version and exit\n" -" --help this help text\n")); +" -v, --version print version and exit\n" +" -h, --help this help text\n")); } int main(int argc, char *argv[]) Index: xfs-cmds/acl/man/man1/getfacl.1 =================================================================== --- xfs-cmds.orig/acl/man/man1/getfacl.1 +++ xfs-cmds/acl/man/man1/getfacl.1 @@ -12,10 +12,10 @@ getfacl \- get file access control lists .SH SYNOPSIS .B getfacl -[\-dRLPvh] file ... +[\-aceEsRLPrpndvh] file ... .B getfacl -[\-dRLPvh] \- +[\-aceEsRLPrpndvh] \- .SH DESCRIPTION For each file, getfacl displays the file name, owner, the group, @@ -78,22 +78,22 @@ accessing the file mode. .SS OPTIONS .TP 4 -.I \-\-access +.I \-a, \-\-access Display the file access control list. .TP .I \-d, \-\-default Display the default access control list. .TP -.I \-\-omit-header +.I \-c, \-\-omit-header Do not display the comment header (the first three lines of each file's output). .TP -.I \-\-all-effective +.I \-e, \-\-all-effective Print all effective rights comments, even if identical to the rights defined by the ACL entry. .TP -.I \-\-no-effective +.I \-E, \-\-no-effective Do not print effective rights comments. .TP -.I \-\-skip-base +.I \-s, \-\-skip-base Skip files that only have the base ACL entries (owner, group, others). .TP .I \-R, \-\-recursive @@ -109,17 +109,20 @@ Physical walk, do not follow symbolic li link arguments. Only effective in combination with \-R. .TP -.I \-\-tabular +.I \-t, \-\-tabular Use an alternative tabular output format. The ACL and the default ACL are displayed side by side. Permissions that are ineffective due to the ACL mask entry are displayed capitalized. The entry tag names for the ACL_USER_OBJ and ACL_GROUP_OBJ entries are also displayed in capital letters, which helps in spotting those entries. .TP -.I \-\-absolute-names +.I \-p, \-\-absolute-names Do not strip leading slash characters (`/'). The default behavior is to strip leading slash characters. .TP -.I \-\-version +.I \-n, \-\-numeric +List numeric user and group IDs +.TP +.I \-v, \-\-version Print the version of getfacl and exit. .TP -.I \-\-help +.I \-h, \-\-help Print help explaining the command line options. .TP .I \-\- Index: xfs-cmds/acl/man/man1/setfacl.1 =================================================================== --- xfs-cmds.orig/acl/man/man1/setfacl.1 +++ xfs-cmds/acl/man/man1/setfacl.1 @@ -115,10 +115,10 @@ This also skips symbolic link arguments. Only effective in combination with \-R. This option cannot be mixed with `\-\-restore'. .TP 4 -.I \-\-version +.I \-v, \-\-version Print the version of setfacl and exit. .TP 4 -.I \-\-help +.I \-h, \-\-help Print help explaining the command line options. .TP 4 .I \-\- Index: xfs-cmds/acl/setfacl/setfacl.c =================================================================== --- xfs-cmds.orig/acl/setfacl/setfacl.c +++ xfs-cmds/acl/setfacl/setfacl.c @@ -42,10 +42,10 @@ extern int do_set(const char *path_p, co /* '-' stands for `process non-option arguments in loop' */ #if !POSIXLY_CORRECT -# define CMD_LINE_OPTIONS "-:bkndm:M:x:X:RLP" +# define CMD_LINE_OPTIONS "-:bkndvhm:M:x:X:RLP" # define CMD_LINE_SPEC "[-bkndRLP] { -m|-M|-x|-X ... } file ..." #endif -#define POSIXLY_CMD_LINE_OPTIONS "-:bkndm:M:x:X:" +#define POSIXLY_CMD_LINE_OPTIONS "-:bkndvhm:M:x:X:" #define POSIXLY_CMD_LINE_SPEC "[-bknd] {-m|-M|-x|-X ... } file ..." struct option long_options[] = { @@ -263,8 +263,8 @@ void help(void) } #endif printf(_( -" --version print version and exit\n" -" --help this help text\n")); +" -v, --version print version and exit\n" +" -h, --help this help text\n")); } -- From sandeen@sandeen.net Tue Dec 30 12:14:48 2008 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 mBUIElsM000558 for ; Tue, 30 Dec 2008 12:14:48 -0600 X-ASG-Debug-ID: 1230660887-580501cf0000-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 9E0695312C for ; Tue, 30 Dec 2008 10:14:47 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id oZjB9e5z7tUyht1B for ; Tue, 30 Dec 2008 10:14:47 -0800 (PST) Received: by mail.sandeen.net (Postfix, from userid 500) id E78BDA6D57D; Tue, 30 Dec 2008 12:14:46 -0600 (CST) Message-Id: <20081230181446.544536013@sandeen.net> References: <20081230181413.518122170@sandeen.net> User-Agent: quilt/0.46-1 Date: Tue, 30 Dec 2008 12:14:16 -0600 From: Eric Sandeen To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 3/4] acl: Return error status on setfacl failures Subject: [patch 3/4] acl: Return error status on setfacl failures Content-Disposition: inline; filename=acl-2.2.45-exitcode.patch X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230660887 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.14001 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean Resolves Red Hat bug: Bug 368451 - setfacl returns 0 even though it fails From: Jiri Moskovcak Signed-off-by: Eric Sandeen --- Index: xfs-cmds/acl/setfacl/setfacl.c =================================================================== --- xfs-cmds.orig/acl/setfacl/setfacl.c +++ xfs-cmds/acl/setfacl/setfacl.c @@ -137,7 +137,7 @@ restore( if (error < 0) goto fail; if (error == 0) - return 0; + return status; if (path_p == NULL) { if (filename) { @@ -151,6 +151,7 @@ restore( "aborting\n"), progname, backup_line); } + status = 1; goto getout; } @@ -169,6 +170,7 @@ restore( fprintf(stderr, _("%s: %s: %s in line %d\n"), progname, xquote(filename), strerror(errno), line); + status = 1; goto getout; } -- From sandeen@sandeen.net Tue Dec 30 12:14:48 2008 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 mBUIEmYH000562 for ; Tue, 30 Dec 2008 12:14:48 -0600 X-ASG-Debug-ID: 1230660887-5cbd013b0000-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 05B7653135 for ; Tue, 30 Dec 2008 10:14:47 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id LcXyAeUkOm0zp0Yy for ; Tue, 30 Dec 2008 10:14:47 -0800 (PST) Received: by mail.sandeen.net (Postfix, from userid 500) id 52B3EA4B09A; Tue, 30 Dec 2008 12:14:47 -0600 (CST) Message-Id: <20081230181447.028003436@sandeen.net> References: <20081230181413.518122170@sandeen.net> User-Agent: quilt/0.46-1 Date: Tue, 30 Dec 2008 12:14:17 -0600 From: Eric Sandeen To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 4/4] acl: fix setfacl for long utf8 filenames Subject: [patch 4/4] acl: fix setfacl for long utf8 filenames Content-Disposition: inline; filename=acl-2.2.39-path_max.patch X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230660888 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.14001 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean Resolves Red Hat bugs: Bug 183181 - Bad: utf8 long filenames - invalid argument Bug 287701 - PATH_MAX patch seems incomplete From: Andrey From: Thomas Woerner Signed-off-by: Eric Sandeen --- Index: xfs-cmds/acl/setfacl/parse.c =================================================================== --- xfs-cmds.orig/acl/setfacl/parse.c +++ xfs-cmds/acl/setfacl/parse.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -412,7 +413,12 @@ read_acl_comments( gid_t *gid_p) { int c; - char linebuf[1024]; + /* + Max PATH_MAX bytes even for UTF-8 path names and additional 9 + bytes for "# file: ".Not a good solution but for now it is the + best I can do without too much impact on the code. [tw] + */ + char linebuf[(4*PATH_MAX)+9]; char *cp; char *p; int comments_read = 0; -- From sandeen@sandeen.net Tue Dec 30 12:14:48 2008 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 mBUIElMU000555 for ; Tue, 30 Dec 2008 12:14:48 -0600 X-ASG-Debug-ID: 1230660886-580801a50000-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 DB6095312C for ; Tue, 30 Dec 2008 10:14:46 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id C0No1IbM5zwxbRdZ for ; Tue, 30 Dec 2008 10:14:46 -0800 (PST) Received: by mail.sandeen.net (Postfix, from userid 500) id C8A30A6D57D; Tue, 30 Dec 2008 12:14:45 -0600 (CST) Message-Id: <20081230181413.518122170@sandeen.net> User-Agent: quilt/0.46-1 Date: Tue, 30 Dec 2008 12:14:13 -0600 From: Eric Sandeen To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 0/4] acl patches from Fedora / Red Hat rpm Subject: [patch 0/4] acl patches from Fedora / Red Hat rpm X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230660886 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.14001 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean Here are a few patches (modulo distro-specific changes) from the Fedora / Red Hat acl package. -Eric -- From sandeen@sandeen.net Tue Dec 30 12:14:50 2008 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_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 mBUIElrB000556 for ; Tue, 30 Dec 2008 12:14:49 -0600 X-ASG-Debug-ID: 1230660886-761000300000-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 415921797FF8 for ; Tue, 30 Dec 2008 10:14:46 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id ItP6JaWeyTAHdasR for ; Tue, 30 Dec 2008 10:14:46 -0800 (PST) Received: by mail.sandeen.net (Postfix, from userid 500) id 80DF2A32FAE; Tue, 30 Dec 2008 12:14:46 -0600 (CST) Message-Id: <20081230181446.216372641@sandeen.net> References: <20081230181413.518122170@sandeen.net> User-Agent: quilt/0.46-1 Date: Tue, 30 Dec 2008 12:14:15 -0600 From: Eric Sandeen To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 2/4] acl: fix setfacl segfault when using only "--" as parameter. Subject: [patch 2/4] acl: fix setfacl segfault when using only "--" as parameter. Content-Disposition: inline; filename=acl-2.2.39-segfault.patch X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230660887 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.14002 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean Resolves Red Hat bug: 430458 - execute command "setfacl -- --test" will occur Segmentation Fault From: Jiri Moskovcak Signed-off-by: Eric Sandeen --- Index: xfs-cmds/acl/setfacl/setfacl.c =================================================================== --- xfs-cmds.orig/acl/setfacl/setfacl.c +++ xfs-cmds/acl/setfacl/setfacl.c @@ -599,6 +599,8 @@ int main(int argc, char *argv[]) } } while (optind < argc) { + if(!seq) + goto synopsis; if (seq_empty(seq)) goto synopsis; saw_files = 1; -- From Mark@Baggywrinkle.co.uk Tue Dec 30 14:12:04 2008 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=BAYES_40,TVD_SPACE_RATIO 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 mBUKC2FI021444 for ; Tue, 30 Dec 2008 14:12:04 -0600 X-ASG-Debug-ID: 1230667920-45a4007f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from genesis.baggywrinkle.co.uk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9392017988A1 for ; Tue, 30 Dec 2008 12:12:00 -0800 (PST) Received: from genesis.baggywrinkle.co.uk (baggywrinkle.demon.co.uk [83.104.132.97]) by cuda.sgi.com with ESMTP id yssqTNygIJNfd8Cy for ; Tue, 30 Dec 2008 12:12:00 -0800 (PST) Received: from RS.baggywrinkle.co.uk (RS.baggywrinkle.co.uk [10.166.68.215]) by genesis.baggywrinkle.co.uk (Postfix) with ESMTP id 6612E61E for ; Tue, 30 Dec 2008 20:11:59 +0000 (GMT) Message-Id: <4E96805A-F828-4C41-8F3E-BAFBC6832630@Baggywrinkle.co.uk> From: Mark Bath To: xfs@oss.sgi.com Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v930.3) X-ASG-Orig-Subj: Subject: Date: Tue, 30 Dec 2008 20:11:59 +0000 X-Mailer: Apple Mail (2.930.3) X-Barracuda-Connect: baggywrinkle.demon.co.uk[83.104.132.97] X-Barracuda-Start-Time: 1230667922 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0133 1.0000 -1.9343 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.64 X-Barracuda-Spam-Status: No, SCORE=-0.64 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MISSING_SUBJECT, MISSING_SUBJECT_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14009 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 MISSING_SUBJECT Missing Subject: header 1.28 MISSING_SUBJECT_2 Missing Subject: header X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean subscribe xfs mark@baggywrinkle.co.uk From vapier@gentoo.org Tue Dec 30 14:19:48 2008 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 mBUKJkAT027644 for ; Tue, 30 Dec 2008 14:19:48 -0600 X-ASG-Debug-ID: 1230668384-455200930000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp.gentoo.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4BD151798351 for ; Tue, 30 Dec 2008 12:19:44 -0800 (PST) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by cuda.sgi.com with ESMTP id iWVNFQ6PcwJA5lUh for ; Tue, 30 Dec 2008 12:19:44 -0800 (PST) Received: from vapier.localnet (localhost [127.0.0.1]) by smtp.gentoo.org (Postfix) with ESMTP id 49C51649C1; Tue, 30 Dec 2008 20:19:43 +0000 (UTC) From: Mike Frysinger Organization: wh0rd.org To: Christoph Hellwig X-ASG-Orig-Subj: Re: [PATCH] xfs-cmds: fix parallel installs in include/ dirs Subject: Re: [PATCH] xfs-cmds: fix parallel installs in include/ dirs Date: Tue, 30 Dec 2008 15:19:41 -0500 User-Agent: KMail/1.10.3 (Linux/2.6.28; KDE/4.1.3; x86_64; ; ) Cc: Eric Sandeen , "xfs-oss" References: <49594CD9.3010402@sandeen.net> <200812300907.31459.vapier@gentoo.org> <20081230171825.GA31624@infradead.org> In-Reply-To: <20081230171825.GA31624@infradead.org> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart3237594.85lKKOtpmi"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200812301519.42689.vapier@gentoo.org> X-Barracuda-Connect: smtp.gentoo.org[140.211.166.183] X-Barracuda-Start-Time: 1230668385 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.14011 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean --nextPart3237594.85lKKOtpmi Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline On Tuesday 30 December 2008 12:18:25 Christoph Hellwig wrote: > On Tue, Dec 30, 2008 at 09:07:30AM -0500, Mike Frysinger wrote: > > acl-2.2.47 built fine for me with `./configure && make` and this patch > > ... > > Works now after a make distclean for me. > > > that said, if the only purpose of this is to make sure there are symlin= ks > > in include/, why not do it at the tail end of configure ? then there > > will be no weird parallel magic to worry about, and everything will > > always be available once configure has finished. > > I'll leave that to Eric or anyone else who wants to play a build system > expert on TV :) it's easy to do, i just dont know how people feel about the idea in general diff --git a/configure.in b/configure.in index 3c46c49..d227630 100644 --- a/configure.in +++ b/configure.in @@ -27,4 +27,11 @@ AC_MANUAL_FORMAT =20 AC_FUNC_GCC_VISIBILITY =20 -AC_OUTPUT(include/builddefs) +AC_CONFIG_FILES(include/builddefs) +AC_CONFIG_COMMANDS([include-symlinks], [ + rm -f include/acl include/sys + ln -s . include/acl + ln -s . include/sys +]) +AC_OUTPUT + diff --git a/include/Makefile b/include/Makefile index f2eca14..d606fa2 100644 --- a/include/Makefile +++ b/include/Makefile @@ -10,13 +10,10 @@ LSRCFILES =3D builddefs.in buildmacros buildrules=20 config.h.in LDIRT =3D sys acl =20 default: - rm -f sys acl - $(LN_S) . sys - $(LN_S) . acl =20 include $(BUILDRULES) =20 -install-dev: default +install-dev: $(INSTALL) -m 755 -d $(PKG_INC_DIR) $(INSTALL) -m 755 -d $(PKG_INC_DIR)/sys $(INSTALL) -m 644 acl.h $(PKG_INC_DIR)/sys/acl.h -mike --nextPart3237594.85lKKOtpmi Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (GNU/Linux) iQIcBAABAgAGBQJJWoJeAAoJEEFjO5/oN/WBIOQP/ib4SJdmQnZExTTbUvBrKPkw KQx6BFj3/3aAgk3PRJn0uyqFQL1eyuTMbhdtosbS9sRlAxovSB+nB04JxLlN17DL HfaneSjK2QtZgnhHSD+kZdYqtdOPi55gLB5DxCp4Dx+HvoowtpxIBYGrLWRlez3X eX3MnAC8tTuB+djg1orp3fO+4Mu278SKt3/YnjjWY1UtczZx8CESLlnNYXYEpy0Q DCyHmv7/vMtxfi3NjBTF8lRI4aYtI+n1xl/RflwyacutdhYnx02jfMoe0NMFBpcD yffZJq+MUdPZgpdn42Fuuxh+iqBkQ6DWCYgYoQ5WYjxuNtlmJ0WhMSocnQEfnKsZ DlUD+jL1vXRb6G5BuK/nz6+Kfc5Vdh2L7LjvSjvEYGabwU0zkoVJFKxRVdd/aajd YqTN7IqZBP1diO1lDXWdWNOdfM+QX010DraqhAX55UFhVX/lfzKkX+XUDx7K3Kcr fQLOcIF8gLolc2zKeVncXzQ6w6Mcmu3Q56FXMpITrrfngW6Va9VSSF9KOm5K7vPU h3fPwawOdr0nSkDd627klhxNRRUre29qvxE3Tmgip0xKt58ZnbEnSeAwytevMsxN m0ECu10s9XVs95Q2JuK1B3xqYwuUhxSJUBkbq335wT8DHltjRzzS+oT8AcYK/rR7 OfnDawQe570a/qjaiMWk =aipB -----END PGP SIGNATURE----- --nextPart3237594.85lKKOtpmi-- From sandeen@sandeen.net Tue Dec 30 14:24:18 2008 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 mBUKOIjV027952 for ; Tue, 30 Dec 2008 14:24:18 -0600 X-ASG-Debug-ID: 1230668657-45be00900000-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 E0C1C179837B for ; Tue, 30 Dec 2008 12:24:17 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 0B4W0xgNotVtHY3C for ; Tue, 30 Dec 2008 12:24: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 C158CA9C530; Tue, 30 Dec 2008 14:23:45 -0600 (CST) Message-ID: <495A8351.3010604@sandeen.net> Date: Tue, 30 Dec 2008 14:23:45 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Mike Frysinger CC: Christoph Hellwig , xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfs-cmds: fix parallel installs in include/ dirs Subject: Re: [PATCH] xfs-cmds: fix parallel installs in include/ dirs References: <49594CD9.3010402@sandeen.net> <200812300907.31459.vapier@gentoo.org> <20081230171825.GA31624@infradead.org> <200812301519.42689.vapier@gentoo.org> In-Reply-To: <200812301519.42689.vapier@gentoo.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: 1230668657 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.14011 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8814/Tue Dec 30 02:43:21 2008 on oss.sgi.com X-Virus-Status: Clean Mike Frysinger wrote: > On Tuesday 30 December 2008 12:18:25 Christoph Hellwig wrote: >> On Tue, Dec 30, 2008 at 09:07:30AM -0500, Mike Frysinger wrote: >>> acl-2.2.47 built fine for me with `./configure && make` and this patch >>> ... >> Works now after a make distclean for me. >> >>> that said, if the only purpose of this is to make sure there are symlinks >>> in include/, why not do it at the tail end of configure ? then there >>> will be no weird parallel magic to worry about, and everything will >>> always be available once configure has finished. >> I'll leave that to Eric or anyone else who wants to play a build system >> expert on TV :) > > it's easy to do, i just dont know how people feel about the idea in general Doesn't much matter to me; not sure what is customary. Both ways work fine, I think. -Eric From SRS0+0046145508e9135873a4+1955+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 30 17:09:15 2008 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 mBUN9FAo007375 for ; Tue, 30 Dec 2008 17:09:15 -0600 X-ASG-Debug-ID: 1230678553-454d03370000-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 D900D17996E2 for ; Tue, 30 Dec 2008 15:09:13 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id SXNytXAgsKDRVyPw for ; Tue, 30 Dec 2008 15:09:13 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHni5-0000IS-Mz for xfs@oss.sgi.com; Tue, 30 Dec 2008 23:09:13 +0000 Message-Id: <20081230230913.619447000@bombadil.infradead.org> References: <20081230230810.986105000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 30 Dec 2008 18:08:15 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 5/5] xfstests: test 197, add a testcase for d_off truncation Subject: [PATCH 5/5] xfstests: test 197, add a testcase for d_off truncation Content-Disposition: inline; filename=xfstests-add-d_off-truncation-test 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: 1230678554 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8815/Tue Dec 30 15:57:57 2008 on oss.sgi.com X-Virus-Status: Clean Make sure our directory offsets fit into a 32 bit value. Based on a report by John Stanley. Signed-off-by: Christoph Hellwig Index: xfstests/src/Makefile =================================================================== --- xfstests/src/Makefile 2008-12-30 14:35:02.000000000 +0000 +++ xfstests/src/Makefile 2008-12-30 14:36:01.000000000 +0000 @@ -15,7 +15,7 @@ LINUX_TARGETS = loggen xfsctl bstat t_mtab getdevicesize \ preallo_rw_pattern_reader preallo_rw_pattern_writer ftrunc trunc \ fs_perms testx looptest locktest unwritten_mmap \ - bulkstat_unlink_test bulkstat_unlink_test_modified + bulkstat_unlink_test bulkstat_unlink_test_modified t_dir_offset IRIX_TARGETS = open_unlink Index: xfstests/src/t_dir_offset.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfstests/src/t_dir_offset.c 2008-12-30 14:35:05.000000000 +0000 @@ -0,0 +1,62 @@ + +#include +#include +#include +#include +#include +#include +#include + +struct linux_dirent64 { + uint64_t d_ino; + int64_t d_off; + unsigned short d_reclen; + unsigned char d_type; + char d_name[0]; +}; + + +#define BUF_SIZE 4096 + +int +main(int argc, char *argv[]) +{ + int fd, nread; + char buf[BUF_SIZE]; + struct linux_dirent64 *d; + int bpos; + + fd = open(argv[1], O_RDONLY | O_DIRECTORY); + if (fd < 0) { + perror("open"); + exit(EXIT_FAILURE); + } + + for ( ; ; ) { + nread = syscall(SYS_getdents64, fd, buf, BUF_SIZE); + if (nread == -1) { + perror("getdents"); + exit(EXIT_FAILURE); + } + + if (nread == 0) + break; + + for (bpos = 0; bpos < nread;) { + d = (struct linux_dirent64 *) (buf + bpos); + /* + * Can't use off_t here xfsqa is compiled with + * -D_FILE_OFFSET_BITS=64 + */ + if (d->d_off != (long)d->d_off) { + fprintf(stderr, "detected d_off truncation " + "d_name = %s, d_off = %lld\n", + d->d_name, (long long)d->d_off); + exit(EXIT_FAILURE); + } + bpos += d->d_reclen; + } + } + + exit(EXIT_SUCCESS); +} Index: xfstests/group =================================================================== --- xfstests/group 2008-12-30 14:35:02.000000000 +0000 +++ xfstests/group 2008-12-30 14:35:05.000000000 +0000 @@ -299,3 +299,4 @@ 194 rw auto 195 ioctl dump auto 196 quota auto +197 dir auto Index: xfstests/197 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfstests/197 2008-12-30 14:35:05.000000000 +0000 @@ -0,0 +1,49 @@ +#! /bin/sh +# FS QA Test No. 197 +# +# Check that d_off can be represented in a 32 bit long type without +# truncation. +# +# Based on a testcase from John Stanley . +# +# http://oss.sgi.com/bugzilla/show_bug.cgi?id=808 +# +#----------------------------------------------------------------------- +# 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() +{ + rm -rf $TEST_DIR/ttt +} +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 + + +mkdir $TEST_DIR/ttt +for n in {1..168}; do + touch $TEST_DIR/ttt/$n; +done +src/t_dir_offset $TEST_DIR/ttt + +# success, all done +echo "*** done" +rm -f $seq.full +status=0 Index: xfstests/197.out =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfstests/197.out 2008-12-30 14:35:05.000000000 +0000 @@ -0,0 +1,2 @@ +QA output created by 197 +*** done -- From SRS0+0046145508e9135873a4+1955+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 30 17:09:15 2008 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_41, J_CHICKENPOX_44 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 mBUN9Foi007376 for ; Tue, 30 Dec 2008 17:09:15 -0600 X-ASG-Debug-ID: 1230678553-457c03850000-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 DDC6917996E4 for ; Tue, 30 Dec 2008 15:09:13 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id OEpBlETy6ViRiH40 for ; Tue, 30 Dec 2008 15:09:13 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHni5-0000Gg-2z for xfs@oss.sgi.com; Tue, 30 Dec 2008 23:09:13 +0000 Message-Id: <20081230230912.986540000@bombadil.infradead.org> References: <20081230230810.986105000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 30 Dec 2008 18:08:11 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 1/5] xfstests: fix compiler warnings Subject: [PATCH 1/5] xfstests: fix compiler warnings Content-Disposition: inline; filename=xfstests-compile-warnings 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: 1230678554 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8815/Tue Dec 30 15:57:57 2008 on oss.sgi.com X-Virus-Status: Clean Include all nessecary headers, use the correct format strings and don't redefine _GNU_SOURCE. Signed-off-by: Christoph Hellwig Index: xfstests/dmapi/src/suite2/src/mmap.c =================================================================== --- xfstests/dmapi/src/suite2/src/mmap.c 2008-12-30 14:49:11.000000000 +0000 +++ xfstests/dmapi/src/suite2/src/mmap.c 2008-12-30 14:49:18.000000000 +0000 @@ -41,6 +41,7 @@ #include #include #include +#include char * Progname; Index: xfstests/src/ftrunc.c =================================================================== --- xfstests/src/ftrunc.c 2008-12-30 14:40:01.000000000 +0000 +++ xfstests/src/ftrunc.c 2008-12-30 14:40:49.000000000 +0000 @@ -21,6 +21,8 @@ #include #include #include +#include +#include int main(argc, argv) Index: xfstests/src/trunc.c =================================================================== --- xfstests/src/trunc.c 2008-12-30 14:40:51.000000000 +0000 +++ xfstests/src/trunc.c 2008-12-30 14:43:15.000000000 +0000 @@ -23,6 +23,8 @@ #include #include #include +#include +#include #define O_DIRECT 040000 @@ -65,10 +67,10 @@ } } - err = posix_memalign(&buf, ALIGNMENT, BUFSIZE); + err = posix_memalign((void **)&buf, ALIGNMENT, BUFSIZE); if (err < 0) perror("posix_memalign failed"); - err = posix_memalign(&goodbuf, ALIGNMENT, BUFSIZE); + err = posix_memalign((void **)&goodbuf, ALIGNMENT, BUFSIZE); if (err < 0) perror("posix_memalign failed"); err = unlink(filename); Index: xfstests/src/looptest.c =================================================================== --- xfstests/src/looptest.c 2008-12-30 14:51:21.000000000 +0000 +++ xfstests/src/looptest.c 2008-12-30 14:51:31.000000000 +0000 @@ -28,8 +28,6 @@ /* dxm - 28/2/2 */ -#define _GNU_SOURCE - #include #include #include Index: xfstests/src/bulkstat_unlink_test.c =================================================================== --- xfstests/src/bulkstat_unlink_test.c 2008-12-30 14:53:09.000000000 +0000 +++ xfstests/src/bulkstat_unlink_test.c 2008-12-30 14:53:37.000000000 +0000 @@ -164,7 +164,7 @@ for (j=0; j < nfiles; j += stride) { if (ret[i].bs_ino == inodelist[j]) { /* oops ... */ - printf("failed. Unlinked inode %ld returned by bulkstat\n", inodelist[j]); + printf("failed. Unlinked inode %llu returned by bulkstat\n", (unsigned long long)inodelist[j]); exit(1); } } Index: xfstests/src/bulkstat_unlink_test_modified.c =================================================================== --- xfstests/src/bulkstat_unlink_test_modified.c 2008-12-30 14:52:02.000000000 +0000 +++ xfstests/src/bulkstat_unlink_test_modified.c 2008-12-30 14:52:22.000000000 +0000 @@ -160,9 +160,10 @@ if ((ret[i].bs_ino == inodelist[j]) && (ret[i].bs_gen == genlist[j])) { /* oops, the same inode with old gen number */ - printf("Unlinked inode %ld with generation %d " + printf("Unlinked inode %llu with generation %d " "returned by bulkstat\n", - inodelist[j], genlist[j]); + (unsigned long long)inodelist[j], + genlist[j]); exit(1); } if ((ret[i].bs_ino == inodelist[j])) { Index: xfstests/src/locktest.c =================================================================== --- xfstests/src/locktest.c 2008-12-30 14:54:51.000000000 +0000 +++ xfstests/src/locktest.c 2008-12-30 14:55:24.000000000 +0000 @@ -797,7 +797,7 @@ int c; struct sockaddr_in myAddr; struct linger noLinger = {1, 0}; - char *host; + char *host = NULL; char *endnum; int errflag = 0; char *p; Index: xfstests/src/makeextents.c =================================================================== --- xfstests/src/makeextents.c 2008-12-30 14:55:38.000000000 +0000 +++ xfstests/src/makeextents.c 2008-12-30 14:58:16.000000000 +0000 @@ -119,7 +119,9 @@ return 1; } if (verbose_opt) { - printf("truncating back to %lu\n", NUMHOLES_TO_SIZE(num_holes)); + printf("truncating back to %llu\n", + (unsigned long long) + NUMHOLES_TO_SIZE(num_holes)); } return 0; } @@ -128,7 +130,8 @@ curr_holes = 0; } if (curr_holes != 0 && verbose_opt) { - printf("creating %lu more holes\n", num_holes - curr_holes); + printf("creating %llu more holes\n", + (unsigned long long)num_holes - curr_holes); } /* create holes by seeking and writing */ @@ -147,7 +150,8 @@ } if (verbose_opt && ((i+1) % status_num == 0)) { - printf("seeked and wrote %lu times\n", i+1); + printf("seeked and wrote %llu times\n", + (unsigned long long)i + 1); } } -- From SRS0+0046145508e9135873a4+1955+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 30 17:09:15 2008 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 mBUN9ELR007372 for ; Tue, 30 Dec 2008 17:09:15 -0600 X-ASG-Debug-ID: 1230678553-48af02950000-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 DD12A53C3E for ; Tue, 30 Dec 2008 15:09:13 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id XvbLPglleVJXis6G for ; Tue, 30 Dec 2008 15:09:13 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHni5-0000Ha-CW for xfs@oss.sgi.com; Tue, 30 Dec 2008 23:09:13 +0000 Message-Id: <20081230230913.302710000@bombadil.infradead.org> References: <20081230230810.986105000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 30 Dec 2008 18:08:13 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 3/5] xfstests: test 195, add a testcase for the nodump flag Subject: [PATCH 3/5] xfstests: test 195, add a testcase for the nodump flag Content-Disposition: inline; filename=xfstests-add-dump-flag-test 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: 1230678554 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8815/Tue Dec 30 15:57:57 2008 on oss.sgi.com X-Virus-Status: Clean Based on http://oss.sgi.com/bugzilla/show_bug.cgi?id=340. Signed-off-by: Christoph Hellwig Index: xfstests/195 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfstests/195 2008-12-29 17:55:16.000000000 +0000 @@ -0,0 +1,75 @@ +#! /bin/sh +# FS QA Test No. 195 +# +# Make sure the chattr dump flag gets picked up by xfsdump without a sync +# +# http://oss.sgi.com/bugzilla/show_bug.cgi?id=340 +# +#----------------------------------------------------------------------- +# 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() +{ + rm -rf $TEST_DIR/d + rm -f $TEST_DIR/dumpfile +} +trap "_cleanup; exit \$status" 0 1 2 3 15 + +# +# Perform a level 0 dump that respects the chattr dump exclude flag, +# and grep the output for the inode number we expect / do not expect +# to be skipped +# +# Only dump a subtree so we get away with a single partition for +# the subtree to be dumped and the dump file. +# +_do_dump() +{ + xfsdump -l 0 -s d -F \ + -L prova -M prova \ + -f $TEST_DIR/dumpfile -e -v excluded_files=debug $TEST_DIR \ + | grep "ino $inum" \ + | sed -e 's/xfsdump: pruned ino [0-9]*, owner 0, estimated size 0: skip flag set/xfsdump: pruned ino NNN, owner 0, estimated size 0: skip flag set/' +} + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# real QA test starts here +_supported_fs xfs +_supported_os Linux + +_require_user + +echo "Preparing subtree" +mkdir $TEST_DIR/d +touch $TEST_DIR/d/t +inum=`stat --format "%i" $TEST_DIR/d/t` + +echo "No dump exclude flag set (should not be skipped)" +_do_dump + +echo "Dump exclude flag set, but no sync yet (should be skipped)" +chattr +d $TEST_DIR/d/t +_do_dump + +echo "Dump exclude flag set, after sync (should be skipped)" +sync +_do_dump + +# success, all done +echo "*** done" +rm -f $seq.full +status=0 Index: xfstests/195.out =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfstests/195.out 2008-12-29 17:16:38.000000000 +0000 @@ -0,0 +1,8 @@ +QA output created by 195 +Preparing subtree +No dump exclude flag set (should not be skipped) +Dump exclude flag set, but no sync yet (should be skipped) +xfsdump: pruned ino NNN, owner 0, estimated size 0: skip flag set +Dump exclude flag set, after sync (should be skipped) +xfsdump: pruned ino NNN, owner 0, estimated size 0: skip flag set +*** done Index: xfstests/group =================================================================== --- xfstests/group 2008-12-29 17:16:24.000000000 +0000 +++ xfstests/group 2008-12-29 17:55:09.000000000 +0000 @@ -297,3 +297,4 @@ 192 atime 193 metadata auto 194 rw auto +195 ioctl dump auto -- From SRS0+0046145508e9135873a4+1955+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 30 17:09:15 2008 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 mBUN9EkM007370 for ; Tue, 30 Dec 2008 17:09:15 -0600 X-ASG-Debug-ID: 1230678553-364402e20000-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 D5C7D53C3D for ; Tue, 30 Dec 2008 15:09:13 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id jCye6b1MnkPZsqXo for ; Tue, 30 Dec 2008 15:09:13 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHni5-0000H9-8Q for xfs@oss.sgi.com; Tue, 30 Dec 2008 23:09:13 +0000 Message-Id: <20081230230913.139390000@bombadil.infradead.org> References: <20081230230810.986105000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 30 Dec 2008 18:08:12 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 2/5] xfstests: update for xfs_dinode_core_t removal Subject: [PATCH 2/5] xfstests: update for xfs_dinode_core_t removal Content-Disposition: inline; filename=xfstests-forkoff-fixes 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: 1230678554 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8815/Tue Dec 30 15:57:57 2008 on oss.sgi.com X-Virus-Status: Clean Strip away the core. prefixes in 186 to make sure the golden output works for both old and new xfsprogs. Signed-off-by: Christoph Hellwig Index: xfstests/186 =================================================================== --- xfstests/186 2008-12-30 13:04:58.000000000 +0000 +++ xfstests/186 2008-12-30 14:25:51.000000000 +0000 @@ -66,8 +66,10 @@ _filter_inode() { - tee -a $seq.full | egrep '^u.sfdir2|^a.sfattr|core.forkoff' |\ - egrep -v 'inumber|parent' + tee -a $seq.full | \ + sed -e "s/core.forkoff/forkoff/g" | \ + egrep '^u.sfdir2|^a.sfattr|forkoff' | \ + egrep -v 'inumber|parent' } _filter_version() Index: xfstests/186.out =================================================================== --- xfstests/186.out 2008-12-30 13:04:58.000000000 +0000 +++ xfstests/186.out 2008-12-30 13:05:50.000000000 +0000 @@ -2,7 +2,7 @@ ================================= ATTR2 -core.forkoff = 0 +forkoff = 0 u.sfdir2.hdr.count = 0 u.sfdir2.hdr.i8count = 0 ================================= @@ -12,7 +12,7 @@ ================================= ATTR2 -core.forkoff = 0 +forkoff = 0 u.sfdir2.hdr.count = 25 u.sfdir2.hdr.i8count = 0 u.sfdir2.list[0].namelen = 6 @@ -98,7 +98,7 @@ ================================= ATTR ATTR2 -core.forkoff = 47 +forkoff = 47 u.sfdir2.hdr.count = 25 u.sfdir2.hdr.i8count = 0 u.sfdir2.list[0].namelen = 6 @@ -195,7 +195,7 @@ ================================= ATTR -core.forkoff = 47 +forkoff = 47 u.sfdir2.hdr.count = 25 u.sfdir2.hdr.i8count = 0 u.sfdir2.list[0].namelen = 6 -- From SRS0+0046145508e9135873a4+1955+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 30 17:09:15 2008 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 mBUN9E69007369 for ; Tue, 30 Dec 2008 17:09:15 -0600 X-ASG-Debug-ID: 1230678553-48ae02a40000-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 D475D53C3C for ; Tue, 30 Dec 2008 15:09:13 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id UmzkLpbZShh2RA1t for ; Tue, 30 Dec 2008 15:09:13 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHni4-0000G0-U7 for xfs@oss.sgi.com; Tue, 30 Dec 2008 23:09:12 +0000 Message-Id: <20081230230810.986105000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 30 Dec 2008 18:08:10 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 0/5] xfstests: updates Subject: [PATCH 0/5] xfstests: updates 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: 1230678554 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8815/Tue Dec 30 15:57:57 2008 on oss.sgi.com X-Virus-Status: Clean This is my work of the last days on xfsqa: 3 new testcases and bunch of smaller bits. All this is against the staging git tree at: http://git.kernel.org/?p=fs/xfs/xfstests-dev.git;a=shortlog -- From SRS0+0046145508e9135873a4+1955+infradead.org+hch@bombadil.srs.infradead.org Tue Dec 30 17:09:15 2008 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 mBUN9F5e007380 for ; Tue, 30 Dec 2008 17:09:15 -0600 X-ASG-Debug-ID: 1230678553-4167016a0000-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 13ACD17996E6 for ; Tue, 30 Dec 2008 15:09:13 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 6OoSHV1ql9DXikOp for ; Tue, 30 Dec 2008 15:09:13 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHni5-0000I1-Hc for xfs@oss.sgi.com; Tue, 30 Dec 2008 23:09:13 +0000 Message-Id: <20081230230913.450971000@bombadil.infradead.org> References: <20081230230810.986105000@bombadil.infradead.org> User-Agent: quilt/0.46-1 Date: Tue, 30 Dec 2008 18:08:14 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH 4/5] xfstests: test 196, add a testcase for renames across project boundaries Subject: [PATCH 4/5] xfstests: test 196, add a testcase for renames across project boundaries Content-Disposition: inline; filename=xfstests-add-pquota-unlock-test 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: 1230678555 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Virus-Scanned: ClamAV 0.91.2/8815/Tue Dec 30 15:57:57 2008 on oss.sgi.com X-Virus-Status: Clean Make sure rename across project boundaries is rejected and doesn't cause hangs. Based on a report and testcase from Arkadiusz Miskiewicz. Signed-off-by: Christoph Hellwig Index: xfstests/196 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfstests/196 2008-12-29 22:37:19.000000000 +0000 @@ -0,0 +1,86 @@ +#! /bin/sh +# FS QA Test No. 196 +# +# Make sure renames accross project boundaries are properly rejected +# and that we don't use the wrong lock flags internally. +# +# Based on a report and testcase from Arkadiusz Miskiewicz +# +#----------------------------------------------------------------------- +# 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 + rm -f $tmp.* +} +trap "_cleanup; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter +. ./common.quota + +# real QA test starts here +_supported_fs xfs +_supported_os Linux + +_require_scratch +_require_quota + +# +# Setup temporary replacements for /etc/projects and /etc/projid +# +cat >$tmp.projects <$tmp.projid </dev/null 2>&1 +_qmount_option "pquota" +_qmount + +# +# Create the project root +# +mkdir $SCRATCH_MNT/t + +$quota_cmd -x -c 'project -s answer' $SCRATCH_MNT >/dev/null 2>&1 +$quota_cmd -x -c 'limit -p bhard=100m answer' $SCRATCH_MNT + +touch $SCRATCH_MNT/test + +# +# Try renaming a file into the project. This should fail. +# +# We repeat this a couple thousand times as a single rename couldn't +# always trigger the wrong unlock flags bug we had in older kernels. +# +for i in `seq 1 2000`; do + src/rename test t/test +done + +# success, all done +echo "*** done" +rm -f $seq.full +status=0 Index: xfstests/group =================================================================== --- xfstests/group 2008-12-29 22:37:12.000000000 +0000 +++ xfstests/group 2008-12-29 22:37:19.000000000 +0000 @@ -298,3 +298,4 @@ 193 metadata auto 194 rw auto 195 ioctl dump auto +196 quota auto Index: xfstests/src/Makefile =================================================================== --- xfstests/src/Makefile 2008-12-29 22:37:07.000000000 +0000 +++ xfstests/src/Makefile 2008-12-29 22:37:19.000000000 +0000 @@ -9,7 +9,7 @@ nametest permname randholes runas truncfile usemem \ mmapcat append_reader append_writer dirperf metaperf \ devzero feature alloc fault fstest t_access_root \ - godown resvtest writemod makeextents itrash \ + godown resvtest writemod makeextents itrash rename \ multi_open_unlink dmiperf unwritten_sync genhashnames LINUX_TARGETS = loggen xfsctl bstat t_mtab getdevicesize \ Index: xfstests/src/rename.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfstests/src/rename.c 2008-12-29 22:37:19.000000000 +0000 @@ -0,0 +1,21 @@ +/* + * A trivial shell command wrapping rename(2). + */ + +#include +#include + +int main(int argc, char **argv) +{ + if (argc != 3) { + fprintf(stderr, "usage: rename \n"); + exit(EXIT_FAILURE); + } + + if (rename(argv[1], argv[2]) == -1) { + perror("rename"); + exit(EXIT_FAILURE); + } + + exit(0); +} Index: xfstests/196.out =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfstests/196.out 2008-12-29 22:37:29.000000000 +0000 @@ -0,0 +1,2002 @@ +QA output created by 196 +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +rename: No such file or directory +*** done -- From david@fromorbit.com Tue Dec 30 17:39:57 2008 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 mBUNds54009667 for ; Tue, 30 Dec 2008 17:39:57 -0600 X-ASG-Debug-ID: 1230680392-416702110000-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 74AAA173DD91 for ; Tue, 30 Dec 2008 15:39:52 -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 st7XUNysmbEHQAXE for ; Tue, 30 Dec 2008 15:39:52 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgQDAAM+Wkl5LB1fgWdsb2JhbACTeAEBFiK5BoZE X-IronPort-AV: E=Sophos;i="4.36,304,1228051800"; d="scan'208";a="284582449" 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; 31 Dec 2008 10:04:17 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LHo6J-0004Uu-UR; Wed, 31 Dec 2008 10:34:15 +1100 Date: Wed, 31 Dec 2008 10:34:15 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com, John Stanley X-ASG-Orig-Subj: Re: [PATCH, RFC] directory offset overflows in 2.6.28 Subject: Re: [PATCH, RFC] directory offset overflows in 2.6.28 Message-ID: <20081230233415.GA10725@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com, John Stanley References: <20081229220745.GA12966@infradead.org> <20081230001117.GA5220@disturbed> <20081230155726.GA30568@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081230155726.GA30568@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: 1230680393 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.42 X-Barracuda-Spam-Status: No, SCORE=-1.42 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=COMMA_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14022 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' X-Virus-Scanned: ClamAV 0.91.2/8815/Tue Dec 30 15:57:57 2008 on oss.sgi.com X-Virus-Status: Clean On Tue, Dec 30, 2008 at 10:57:26AM -0500, Christoph Hellwig wrote: > On Tue, Dec 30, 2008 at 11:11:17AM +1100, Dave Chinner wrote: > > On Mon, Dec 29, 2008 at 05:07:45PM -0500, Christoph Hellwig wrote: > > > The patch below is a dumb version of just putting back the masking, > > > to make sure we have the same behavior as in 2.6.27 and earlier. > > > I think we should at least hide it in a macro that is well-commented, > > > but I suspect we also need to make sure that we never ever get bigger > > > offsets in directories in some way. > > > > I think we need that macro sooner rather than later ;) > > > In this case, you can do the masking at the time cook is > > assigned. I haven't checked, but I suspect the rest will be the > > same. That will make the patch less invasive and with a macro > > somewhat cleaner... > > That way we could replace two assignment by one one time each > in xfs_dir2_leaf.c and xfs_dir2_block.c. > > I started working on the macro, but it seems even more hacky. > > When looking at the big picture we have two problems: > > - the end of directory marker which always seems to be always too > large for 32bit values for 32 bit indices > - directories that actually are too large to be represented using > 32 bit signed offsets. I guess we just can't support those > for apps using the 32bit readdir interface and the EOVERFLOW > is valid for those. The current approach as in < 2.6.28 and > with this patch breaks that second case in subtile ways. > > So, I'd just push the first hacky opencoded patch into 2.6.29 and > -stable now to revert to the old behaviour with all it's faults, and > in the meantime I'll look into a proper way finding a better end of > directory indicator. That should also help Russell's BSD concerns. Ok, sounds like a plan. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Dec 30 17:40:58 2008 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 (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 mBUNewIB009747 for ; Tue, 30 Dec 2008 17:40:58 -0600 X-ASG-Debug-ID: 1230680456-368603320000-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 5366253CED for ; Tue, 30 Dec 2008 15:40:57 -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 frcNrlX0IKjauqU7 for ; Tue, 30 Dec 2008 15:40:57 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgQDAAM+Wkl5LB1fgWdsb2JhbACTeAEBFiK5BoZE X-IronPort-AV: E=Sophos;i="4.36,304,1228051800"; d="scan'208";a="284582933" 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; 31 Dec 2008 10:05:23 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LHo7O-0004Yo-R1; Wed, 31 Dec 2008 10:35:22 +1100 Date: Wed, 31 Dec 2008 10:35:22 +1100 From: Dave Chinner To: Elrond , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfsaild wakeups Subject: Re: xfsaild wakeups Message-ID: <20081230233522.GB10725@disturbed> Mail-Followup-To: Elrond , xfs@oss.sgi.com References: <20081229232915.GA6724@memak.tu-darmstadt.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081229232915.GA6724@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: 1230680458 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0012 1.0000 -2.0129 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.01 X-Barracuda-Spam-Status: No, SCORE=-2.01 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.14022 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8815/Tue Dec 30 15:57:57 2008 on oss.sgi.com X-Virus-Status: Clean 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. Cheers, Dave. -- Dave Chinner david@fromorbit.com From lachlan@sgi.com Tue Dec 30 19:43:38 2008 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 mBV1hca2018496 for ; Tue, 30 Dec 2008 19:43:38 -0600 Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by relay2.corp.sgi.com (Postfix) with ESMTP id 0BE33304088; Tue, 30 Dec 2008 17:43:32 -0800 (PST) Message-ID: <495ACEB2.1080105@sgi.com> Date: Wed, 31 Dec 2008 12:45:22 +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: Linus Torvalds CC: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, akpm@linux-foundation.org Subject: Re: [GIT PULL] XFS update for 2.6.29 References: <20081230030845.A4F0558AE206@chook.melbourne.sgi.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/8815/Tue Dec 30 15:57:57 2008 on oss.sgi.com X-Virus-Status: Clean Linus Torvalds wrote: > > 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 > > Not to me they aren't: > > fatal: The remote end hung up unexpectedly > > Hmm? Linus, Could you please try git://oss.sgi.com/xfs/xfs.git for-linus (the /oss/git prefix is needed for ssh - I should have noticed that) Thanks. > > Linus > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ From torvalds@linux-foundation.org Tue Dec 30 19:51:01 2008 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 mBV1p0Wm019387 for ; Tue, 30 Dec 2008 19:51:01 -0600 X-ASG-Debug-ID: 1230688259-1a1b02a40000-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 B5E97540BD; Tue, 30 Dec 2008 17:50:59 -0800 (PST) Received: from smtp1.linux-foundation.org (smtp1.linux-foundation.org [140.211.169.13]) by cuda.sgi.com with ESMTP id HYy7baYGxVzJr6E7; Tue, 30 Dec 2008 17:50:59 -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 mBV1oTBO017962 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 30 Dec 2008 17:50:30 -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 mBV1oJJK012655; Tue, 30 Dec 2008 17:50:24 -0800 Date: Tue, 30 Dec 2008 17:50:18 -0800 (PST) From: Linus Torvalds X-X-Sender: torvalds@localhost.localdomain To: Lachlan McIlroy cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, akpm@linux-foundation.org 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: <495ACEB2.1080105@sgi.com> Message-ID: References: <20081230030845.A4F0558AE206@chook.melbourne.sgi.com> <495ACEB2.1080105@sgi.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: 1230688260 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.14030 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8815/Tue Dec 30 15:57:57 2008 on oss.sgi.com X-Virus-Status: Clean On Wed, 31 Dec 2008, Lachlan McIlroy wrote: > > Could you please try > > git://oss.sgi.com/xfs/xfs.git for-linus > > (the /oss/git prefix is needed for ssh - I should have noticed that) Yup, that works. Thanks, Linus From torvalds@linux-foundation.org Tue Dec 30 19:55:59 2008 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 mBV1txsJ019807 for ; Tue, 30 Dec 2008 19:55:59 -0600 X-ASG-Debug-ID: 1230688558-4fc5010c0000-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 F086A1799A6C; Tue, 30 Dec 2008 17:55:58 -0800 (PST) Received: from smtp1.linux-foundation.org (smtp1.linux-foundation.org [140.211.169.13]) by cuda.sgi.com with ESMTP id W2KJTyGAvQo3oJlq; Tue, 30 Dec 2008 17:55:58 -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 mBV1dNGK017362 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 30 Dec 2008 17:39:24 -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 mBV1dMwq004135; Tue, 30 Dec 2008 17:39:22 -0800 Date: Tue, 30 Dec 2008 17:39:22 -0800 (PST) From: Linus Torvalds X-X-Sender: torvalds@localhost.localdomain To: Lachlan McIlroy cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, akpm@linux-foundation.org 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> 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: 1230688558 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.14030 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8815/Tue Dec 30 15:57:57 2008 on oss.sgi.com X-Virus-Status: Clean 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 Not to me they aren't: fatal: The remote end hung up unexpectedly Hmm? Linus From lachlan@sgi.com Tue Dec 30 19:56:15 2008 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 mBV1uFq0019830 for ; Tue, 30 Dec 2008 19:56:15 -0600 Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by relay2.corp.sgi.com (Postfix) with ESMTP id 2B48D304087; Tue, 30 Dec 2008 17:56:13 -0800 (PST) Message-ID: <495AD1AC.8040702@sgi.com> Date: Wed, 31 Dec 2008 12:58:04 +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: Linus Torvalds CC: linux-kernel@vger.kernel.org, xfs@oss.sgi.com, akpm@linux-foundation.org Subject: Re: [GIT PULL] XFS update for 2.6.29 References: <20081230030845.A4F0558AE206@chook.melbourne.sgi.com> <495ACEB2.1080105@sgi.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.91.2/8815/Tue Dec 30 15:57:57 2008 on oss.sgi.com X-Virus-Status: Clean Linus Torvalds wrote: > > On Wed, 31 Dec 2008, Lachlan McIlroy wrote: >> Could you please try >> >> git://oss.sgi.com/xfs/xfs.git for-linus >> >> (the /oss/git prefix is needed for ssh - I should have noticed that) > > Yup, that works. Thanks, > > Linus Thanks Linus. Sorry for the mistake. We really needed to get that set of changes in. From sandeen@sandeen.net Tue Dec 30 19:59:14 2008 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 mBV1xEKg020134 for ; Tue, 30 Dec 2008 19:59:14 -0600 X-ASG-Debug-ID: 1230688752-449500c20000-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 4E1FD54112 for ; Tue, 30 Dec 2008 17:59:13 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id bMhTmdrF3ugEI7Fc for ; Tue, 30 Dec 2008 17:59:13 -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 37F86AABFC2; Tue, 30 Dec 2008 19:59:12 -0600 (CST) Message-ID: <495AD1EF.3080109@sandeen.net> Date: Tue, 30 Dec 2008 19:59:11 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/5] xfstests: fix compiler warnings Subject: Re: [PATCH 1/5] xfstests: fix compiler warnings References: <20081230230810.986105000@bombadil.infradead.org> <20081230230912.986540000@bombadil.infradead.org> In-Reply-To: <20081230230912.986540000@bombadil.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: 1230688754 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.14030 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8815/Tue Dec 30 15:57:57 2008 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: (hmm we need to teach quilt not to do attachments...) ... > Index: xfstests/src/looptest.c > =================================================================== > --- xfstests/src/looptest.c 2008-12-30 14:51:21.000000000 +0000 > +++ xfstests/src/looptest.c 2008-12-30 14:51:31.000000000 +0000 > @@ -28,8 +28,6 @@ > > /* dxm - 28/2/2 */ > > -#define _GNU_SOURCE > - > #include > #include > #include ... Just in case this gets transplanted outside xfstests, where _GNU_SOURCE may not be defined on the make commandline, would it make sense to just put this #define inside #ifndef _GNU_SOURCE? Just a thought; otherwise looks good to me. -Eric From sandeen@sandeen.net Tue Dec 30 20:09:02 2008 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 mBV292jh020688 for ; Tue, 30 Dec 2008 20:09:02 -0600 X-ASG-Debug-ID: 1230689340-3dc801610000-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 76C4C54068 for ; Tue, 30 Dec 2008 18:09:01 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id yl6relELY4abwT35 for ; Tue, 30 Dec 2008 18:09:01 -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 51EDAA9C530; Tue, 30 Dec 2008 20:09:00 -0600 (CST) Message-ID: <495AD43B.8050105@sandeen.net> Date: Tue, 30 Dec 2008 20:08:59 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 2/5] xfstests: update for xfs_dinode_core_t removal Subject: Re: [PATCH 2/5] xfstests: update for xfs_dinode_core_t removal References: <20081230230810.986105000@bombadil.infradead.org> <20081230230913.139390000@bombadil.infradead.org> In-Reply-To: <20081230230913.139390000@bombadil.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: 1230689342 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.14030 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8815/Tue Dec 30 15:57:57 2008 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Strip away the core. prefixes in 186 to make sure the golden output > works for both old and new xfsprogs. > > > Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen From sandeen@sandeen.net Tue Dec 30 20:56:18 2008 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 mBV2uIla024223 for ; Tue, 30 Dec 2008 20:56:18 -0600 X-ASG-Debug-ID: 1230692175-4fcf02110000-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 E03771799D9B for ; Tue, 30 Dec 2008 18:56:16 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id ZtYV5h5FjOnM3t7f for ; Tue, 30 Dec 2008 18:56:16 -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 24AFBA4B09A; Tue, 30 Dec 2008 20:55:42 -0600 (CST) Message-ID: <495ADF2D.8050709@sandeen.net> Date: Tue, 30 Dec 2008 20:55:41 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 3/5] xfstests: test 195, add a testcase for the nodump flag Subject: Re: [PATCH 3/5] xfstests: test 195, add a testcase for the nodump flag References: <20081230230810.986105000@bombadil.infradead.org> <20081230230913.302710000@bombadil.infradead.org> In-Reply-To: <20081230230913.302710000@bombadil.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: 1230692177 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.14033 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8815/Tue Dec 30 15:57:57 2008 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Based on http://oss.sgi.com/bugzilla/show_bug.cgi?id=340. > > > Signed-off-by: Christoph Hellwig > > Index: xfstests/195 ... > +_do_dump() > +{ > + xfsdump -l 0 -s d -F \ > + -L prova -M prova \ > + -f $TEST_DIR/dumpfile -e -v excluded_files=debug $TEST_DIR \ > + | grep "ino $inum" \ > + | sed -e 's/xfsdump: pruned ino [0-9]*, owner 0, estimated size 0: skip flag set/xfsdump: pruned ino NNN, owner 0, estimated size 0: skip flag set/' > +} That's a bigger pattern than I'd have matched but as far as bike sheds go, looks good to me :) Reviewed-by: Eric Sandeen From sandeen@sandeen.net Tue Dec 30 21:36:44 2008 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 mBV3agIZ027527 for ; Tue, 30 Dec 2008 21:36:44 -0600 X-ASG-Debug-ID: 1230694597-3f7e00e30000-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 6B9B31799B91 for ; Tue, 30 Dec 2008 19:36:40 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id BHMWXhPud0zSiAke for ; Tue, 30 Dec 2008 19:36: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 3ED07A4B09E; Tue, 30 Dec 2008 21:36:01 -0600 (CST) Message-ID: <495AE8A0.8040508@sandeen.net> Date: Tue, 30 Dec 2008 21:36:00 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 4/5] xfstests: test 196, add a testcase for renames across project boundaries Subject: Re: [PATCH 4/5] xfstests: test 196, add a testcase for renames across project boundaries References: <20081230230810.986105000@bombadil.infradead.org> <20081230230913.450971000@bombadil.infradead.org> In-Reply-To: <20081230230913.450971000@bombadil.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: 1230694602 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.14035 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8815/Tue Dec 30 15:57:57 2008 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Make sure rename across project boundaries is rejected and doesn't > cause hangs. Based on a report and testcase from Arkadiusz Miskiewicz. > > > Signed-off-by: Christoph Hellwig Looks fine to me. Reviewed-by: Eric Sandeen From sandeen@sandeen.net Tue Dec 30 22:00:56 2008 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 mBV40ups029385 for ; Tue, 30 Dec 2008 22:00:56 -0600 X-ASG-Debug-ID: 1230696050-3f9901480000-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 3EA961799B65 for ; Tue, 30 Dec 2008 20:00:51 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id heG5Fli0a4f1Odrn for ; Tue, 30 Dec 2008 20:00:51 -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 74FEDA4B09E; Tue, 30 Dec 2008 22:00:17 -0600 (CST) Message-ID: <495AEE51.9030805@sandeen.net> Date: Tue, 30 Dec 2008 22:00:17 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.18 (Macintosh/20081105) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 5/5] xfstests: test 197, add a testcase for d_off truncation Subject: Re: [PATCH 5/5] xfstests: test 197, add a testcase for d_off truncation References: <20081230230810.986105000@bombadil.infradead.org> <20081230230913.619447000@bombadil.infradead.org> In-Reply-To: <20081230230913.619447000@bombadil.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: 1230696055 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.14037 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-Virus-Scanned: ClamAV 0.91.2/8815/Tue Dec 30 15:57:57 2008 on oss.sgi.com X-Virus-Status: Clean Christoph Hellwig wrote: > Make sure our directory offsets fit into a 32 bit value. > Based on a report by John Stanley. > > > Signed-off-by: Christoph Hellwig > ... > +struct linux_dirent64 { > + uint64_t d_ino; > + int64_t d_off; > + unsigned short d_reclen; > + unsigned char d_type; > + char d_name[0]; > +}; ... > + for (bpos = 0; bpos < nread;) { > + d = (struct linux_dirent64 *) (buf + bpos); > + /* > + * Can't use off_t here xfsqa is compiled with > + * -D_FILE_OFFSET_BITS=64 > + */ > + if (d->d_off != (long)d->d_off) { So can this test only fail on a 32-bit arch? I haven't paid enough attention to the original bug... sorry if that's a dumb question. :) -Eric > + fprintf(stderr, "detected d_off truncation " > + "d_name = %s, d_off = %lld\n", > + d->d_name, (long long)d->d_off); > + exit(EXIT_FAILURE); > + } > + bpos += d->d_reclen; > + } > + } > + > + exit(EXIT_SUCCESS); > +} From vapier@gentoo.org Wed Dec 31 04:02:48 2008 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 mBVA2mvo020582 for ; Wed, 31 Dec 2008 04:02:48 -0600 X-ASG-Debug-ID: 1230717767-7d4300b80000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp.gentoo.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F1042179A3FF for ; Wed, 31 Dec 2008 02:02:47 -0800 (PST) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by cuda.sgi.com with ESMTP id SPyjvFXPEo0QqCj4 for ; Wed, 31 Dec 2008 02:02:47 -0800 (PST) Received: from vapier.localnet (localhost [127.0.0.1]) by smtp.gentoo.org (Postfix) with ESMTP id 6466F6438C; Wed, 31 Dec 2008 08:57:45 +0000 (UTC) From: Mike Frysinger Organization: wh0rd.org To: "xfs-oss" , Eric Sandeen , Christoph Hellwig X-ASG-Orig-Subj: xfs userspace status Subject: xfs userspace status Date: Wed, 31 Dec 2008 02:42:06 -0500 User-Agent: KMail/1.10.3 (Linux/2.6.28; KDE/4.1.3; x86_64; ; ) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart1253151.ihSq2zjSdL"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200812310242.08183.vapier@gentoo.org> X-Barracuda-Connect: smtp.gentoo.org[140.211.166.183] X-Barracuda-Start-Time: 1230717767 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.14059 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- --nextPart1253151.ihSq2zjSdL Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline sorry, i dont keep abreast of xfs things beyond packaging in Gentoo. is=20 upstream moving out of SGI or something ? -mike --nextPart1253151.ihSq2zjSdL Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (GNU/Linux) iQIcBAABAgAGBQJJWyJQAAoJEEFjO5/oN/WBudQQAJLqAYYQxxYwBYYjy1s9xLRG SBgAEnXSAksR92SkMCV37WO5F/egivqNRaGXdbmwsp2wOS5CtNoq31yA4h3CGSBa ls5EphwgleZdjuIKvV3/u6+9uKRYSq4C29MNEXsYZdjYnjEfD+7NenqLSV471k3K LbWo5c3b9CuiPmd4w083SX1b5f1VkJT6QfjHt+/rVZF7yChp+nz1AU/pKwOb4suK 43RogLTcFBlfkg6cdJqMTn/ctIXZP7qCWBW7Rs/bWLg78R0kF3LRxAqpNjNCHCaX zBUldrHMkl5E8H7TLNljqo2SUe0V9+h8CGpoRBL6mxc0GIaegx/hRq8ETygDOmMH J+Ngsa8iWyeXS7DiIH5s3tJwX+e2X9Ds8I/OgGVtlt6HozGoObCSt+UJ+MtndDBB OOK/4PieNgm4hqMKSVJ/C/mu5KXCppMbIdSJ7PFJ4a16vuOVzlVHcy92u8Ad7Ekw 6VNkjVV4K5ILRAXloknaFS9oq5MGVSLR9wqLapTJLP5n3TkkmIXB/iJUeBsJLRm2 yS9t4J+ZcfQXK68FKA0b+tMxUIOgDCfNDpjZBDyG/Er4KaKma/NzuBVcHiqriDHz 4XTRprDYJTQR8jUw6DPYS6GGFup+4FoSE1wIBevCEEptAziROFl0EulZ76Rwefwx 0bOhDM0hUx3imqMOOe4N =Kuzq -----END PGP SIGNATURE----- --nextPart1253151.ihSq2zjSdL-- From SRS0+8a081e0b036ed39529b1+1956+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 31 04:32:43 2008 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 mBVAWgCY022999 for ; Wed, 31 Dec 2008 04:32:43 -0600 X-ASG-Debug-ID: 1230719562-7d48010f0000-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 9C235179A80F for ; Wed, 31 Dec 2008 02:32:42 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id PtC8MfHCLzKJv2Xe for ; Wed, 31 Dec 2008 02:32:42 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHxGO-0005l1-6m; Wed, 31 Dec 2008 09:21:16 +0000 Date: Wed, 31 Dec 2008 04:21:16 -0500 From: Christoph Hellwig To: Mike Frysinger Cc: xfs-oss , Eric Sandeen , Christoph Hellwig X-ASG-Orig-Subj: Re: xfs userspace status Subject: Re: xfs userspace status Message-ID: <20081231092116.GA16552@infradead.org> References: <200812310242.08183.vapier@gentoo.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200812310242.08183.vapier@gentoo.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: 1230719562 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Wed, Dec 31, 2008 at 02:42:06AM -0500, Mike Frysinger wrote: > sorry, i dont keep abreast of xfs things beyond packaging in Gentoo. is > upstream moving out of SGI or something ? Upstream is still SGI, but we're playing akpm to collect all patches into a tree SGI can pull. From SRS0+8a081e0b036ed39529b1+1956+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 31 04:32:44 2008 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 mBVAWhao023001 for ; Wed, 31 Dec 2008 04:32:44 -0600 X-ASG-Debug-ID: 1230719562-7d5b011e0000-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 F100A179A80F for ; Wed, 31 Dec 2008 02:32:42 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id TD5fGbxRLaIpGANF for ; Wed, 31 Dec 2008 02:32:42 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHxPo-0001z2-N3; Wed, 31 Dec 2008 09:31:00 +0000 Date: Wed, 31 Dec 2008 04:31:00 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 5/5] xfstests: test 197, add a testcase for d_off truncation Subject: Re: [PATCH 5/5] xfstests: test 197, add a testcase for d_off truncation Message-ID: <20081231093100.GB2120@infradead.org> References: <20081230230810.986105000@bombadil.infradead.org> <20081230230913.619447000@bombadil.infradead.org> <495AEE51.9030805@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <495AEE51.9030805@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: 1230719562 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Tue, Dec 30, 2008 at 10:00:17PM -0600, Eric Sandeen wrote: > So can this test only fail on a 32-bit arch? I haven't paid enough > attention to the original bug... sorry if that's a dumb question. :) Yes, on 64 bit it will always succeed. I'll add a comment explaining that. From SRS0+8a081e0b036ed39529b1+1956+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 31 04:32:44 2008 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 mBVAWiB9023014 for ; Wed, 31 Dec 2008 04:32:44 -0600 X-ASG-Debug-ID: 1230719563-22fe01370000-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 67DD654B63 for ; Wed, 31 Dec 2008 02:32:43 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id f4XZKxpHBB55BHWV for ; Wed, 31 Dec 2008 02:32:43 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHxOz-0001GW-6r; Wed, 31 Dec 2008 09:30:09 +0000 Date: Wed, 31 Dec 2008 04:30:09 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/5] xfstests: fix compiler warnings Subject: Re: [PATCH 1/5] xfstests: fix compiler warnings Message-ID: <20081231093009.GA2120@infradead.org> References: <20081230230810.986105000@bombadil.infradead.org> <20081230230912.986540000@bombadil.infradead.org> <495AD1EF.3080109@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <495AD1EF.3080109@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: 1230719564 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Tue, Dec 30, 2008 at 07:59:11PM -0600, Eric Sandeen wrote: > Just in case this gets transplanted outside xfstests, where _GNU_SOURCE > may not be defined on the make commandline, would it make sense to just > put this #define inside > > #ifndef _GNU_SOURCE? > > Just a thought; otherwise looks good to me. Yeah, we could. OR we could expect people who take it outside add it manually after some feature is missing as we do for all other programs in xfsqa :) From SRS0+8a081e0b036ed39529b1+1956+infradead.org+hch@bombadil.srs.infradead.org Wed Dec 31 06:08:40 2008 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 mBVC8d8f029746 for ; Wed, 31 Dec 2008 06:08:40 -0600 X-ASG-Debug-ID: 1230725319-7d5a02a50000-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 B3E09179B6DA for ; Wed, 31 Dec 2008 04:08:39 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id ExXNYI7R4ywBdgeW for ; Wed, 31 Dec 2008 04:08:39 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LHzsN-0006l4-Ab; Wed, 31 Dec 2008 12:08:39 +0000 Date: Wed, 31 Dec 2008 07:08:39 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/5] xfstests: fix compiler warnings Subject: Re: [PATCH 1/5] xfstests: fix compiler warnings Message-ID: <20081231120839.GA17991@infradead.org> References: <20081230230810.986105000@bombadil.infradead.org> <20081230230912.986540000@bombadil.infradead.org> <495AD1EF.3080109@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <495AD1EF.3080109@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: 1230725319 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Thanks for the reviews. All these patches and your new testcase are now push out. From mb@gem.win.co.nz Wed Dec 31 08:29:21 2008 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.9 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 mBVETKeb006882 for ; Wed, 31 Dec 2008 08:29:21 -0600 X-ASG-Debug-ID: 1230733758-2a8f031a0000-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 3DAFD55723 for ; Wed, 31 Dec 2008 06:29:19 -0800 (PST) Received: from isp.becroft.co.nz (isp.becroft.co.nz [202.89.33.33]) by cuda.sgi.com with ESMTP id OAGpnPrF6ZgV70Co for ; Wed, 31 Dec 2008 06:29:19 -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 mBVE987w009973 for ; Thu, 1 Jan 2009 03:09:09 +1300 To: xfs@oss.sgi.com X-ASG-Orig-Subj: XFS internal error when NFS client accesses nonexistent inode Subject: XFS internal error when NFS client accesses nonexistent inode From: Mario Becroft Date: Thu, 01 Jan 2009 03:09:08 +1300 Message-ID: <87zlicfncr.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: 1230733760 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.14074 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 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 xfs_check reported no error in the filesystem. 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? While I am writing, two things I wish XFS could do, and two more that would be jolly nice to have: 1. shrink filesystems 2. dump/restore preserving inode numbers 3. high-performance dump with multi-threaded reading to fully utilise disk throughput 4. on-line xfs_check/repair I wonder if anyone is working on those? Full log output follows: --8<---------------cut here---------------start------------->8--- Dec 31 09:12:46 nfs1 kernel: 00000000: f5 83 23 77 26 c5 70 43 bb bd 3d 44 c9 63 e2 b1 ..#w&.pC..=D.c.. 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 Dec 31 09:12:46 nfs1 kernel: Pid: 4969, comm: nfsd Not tainted 2.6.27.4 #3 Dec 31 09:12:46 nfs1 kernel: Dec 31 09:12:46 nfs1 kernel: Call Trace: Dec 31 09:12:46 nfs1 kernel: [] xfs_itobp+0xa0/0xe7 Dec 31 09:12:46 nfs1 kernel: [] xfs_imap_to_bp+0xd6/0xfc Dec 31 09:12:46 nfs1 kernel: [] xfs_itobp+0xa0/0xe7 Dec 31 09:12:46 nfs1 kernel: [] xfs_imap+0x6a/0x135 Dec 31 09:12:46 nfs1 kernel: [] xfs_itobp+0xa0/0xe7 Dec 31 09:12:46 nfs1 kernel: [] xfs_iread+0x79/0x1ed Dec 31 09:12:46 nfs1 kernel: [] xfs_iget_core+0x2ea/0x54d Dec 31 09:12:46 nfs1 kernel: [] xfs_iget+0xe2/0x18a Dec 31 09:12:46 nfs1 kernel: [] xfs_nfs_get_inode+0x39/0x88 Dec 31 09:12:46 nfs1 kernel: [] xfs_fs_fh_to_dentry+0x64/0x97 Dec 31 09:12:46 nfs1 kernel: [] exportfs_decode_fh+0x30/0x1dc [exportfs] Dec 31 09:12:46 nfs1 kernel: [] nfsd_acceptable+0x0/0xc7 [nfsd] Dec 31 09:12:46 nfs1 kernel: [] exp_find_key+0x96/0xa9 [nfsd] Dec 31 09:12:46 nfs1 kernel: [] place_entity+0x9e/0xc7 Dec 31 09:12:46 nfs1 kernel: [] enqueue_task_fair+0x17e/0x1a7 Dec 31 09:12:46 nfs1 kernel: [] exp_find+0x63/0x6f [nfsd] Dec 31 09:12:46 nfs1 kernel: [] fh_verify+0x278/0x546 [nfsd] Dec 31 09:12:46 nfs1 kernel: [] __wake_up_common+0x41/0x74 Dec 31 09:12:46 nfs1 kernel: [] nfsd_access+0x29/0xff [nfsd] Dec 31 09:12:46 nfs1 kernel: [] nfsd3_proc_access+0x99/0xa6 [nfsd] Dec 31 09:12:46 nfs1 kernel: [] nfsd_dispatch+0xde/0x1c2 [nfsd] Dec 31 09:12:46 nfs1 kernel: [] svc_process+0x408/0x6eb [sunrpc] Dec 31 09:12:46 nfs1 kernel: [] __down_read+0x12/0x8b Dec 31 09:12:46 nfs1 kernel: [] nfsd+0x1ae/0x27a [nfsd] Dec 31 09:12:46 nfs1 kernel: [] nfsd+0x0/0x27a [nfsd] Dec 31 09:12:46 nfs1 kernel: [] kthread+0x47/0x75 Dec 31 09:12:46 nfs1 kernel: [] child_rip+0xa/0x11 Dec 31 09:12:46 nfs1 kernel: [] kthread+0x0/0x75 Dec 31 09:12:46 nfs1 kernel: [] child_rip+0x0/0x11 Dec 31 09:12:46 nfs1 kernel: Dec 31 09:12:46 nfs1 kernel: nfsd: non-standard errno: -117 Dec 31 09:12:46 nfs1 kernel: 00000000: f5 83 23 77 26 c5 70 43 bb bd 3d 44 c9 63 e2 b1 ..#w&.pC..=D.c.. 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 Dec 31 09:12:46 nfs1 kernel: Pid: 4969, comm: nfsd Not tainted 2.6.27.4 #3 Dec 31 09:12:46 nfs1 kernel: Dec 31 09:12:46 nfs1 kernel: Call Trace: Dec 31 09:12:46 nfs1 kernel: [] xfs_itobp+0xa0/0xe7 Dec 31 09:12:46 nfs1 kernel: [] xfs_imap_to_bp+0xd6/0xfc Dec 31 09:12:46 nfs1 kernel: [] xfs_itobp+0xa0/0xe7 Dec 31 09:12:46 nfs1 kernel: [] xfs_imap+0x6a/0x135 Dec 31 09:12:46 nfs1 kernel: [] xfs_itobp+0xa0/0xe7 Dec 31 09:12:46 nfs1 kernel: [] xfs_iread+0x79/0x1ed Dec 31 09:12:46 nfs1 kernel: [] xfs_iget_core+0x2ea/0x54d Dec 31 09:12:46 nfs1 kernel: [] xfs_iget+0xe2/0x18a Dec 31 09:12:46 nfs1 kernel: [] xfs_nfs_get_inode+0x39/0x88 Dec 31 09:12:46 nfs1 kernel: [] xfs_fs_fh_to_dentry+0x64/0x97 Dec 31 09:12:46 nfs1 kernel: [] exportfs_decode_fh+0x30/0x1dc [exportfs] Dec 31 09:12:46 nfs1 kernel: [] nfsd_acceptable+0x0/0xc7 [nfsd] Dec 31 09:12:46 nfs1 kernel: [] exp_find_key+0x96/0xa9 [nfsd] Dec 31 09:12:46 nfs1 kernel: [] place_entity+0x9e/0xc7 Dec 31 09:12:46 nfs1 kernel: [] enqueue_task_fair+0x17e/0x1a7 Dec 31 09:12:46 nfs1 kernel: [] exp_find+0x63/0x6f [nfsd] Dec 31 09:12:46 nfs1 kernel: [] fh_verify+0x278/0x546 [nfsd] Dec 31 09:12:46 nfs1 kernel: [] __wake_up_common+0x41/0x74 Dec 31 09:12:46 nfs1 kernel: [] nfsd_access+0x29/0xff [nfsd] Dec 31 09:12:46 nfs1 kernel: [] nfsd3_proc_access+0x99/0xa6 [nfsd] Dec 31 09:12:46 nfs1 kernel: [] nfsd_dispatch+0xde/0x1c2 [nfsd] Dec 31 09:12:46 nfs1 kernel: [] svc_process+0x408/0x6eb [sunrpc] Dec 31 09:12:46 nfs1 kernel: [] __down_read+0x12/0x8b Dec 31 09:12:46 nfs1 kernel: [] nfsd+0x1ae/0x27a [nfsd] Dec 31 09:12:46 nfs1 kernel: [] nfsd+0x0/0x27a [nfsd] Dec 31 09:12:46 nfs1 kernel: [] kthread+0x47/0x75 Dec 31 09:12:46 nfs1 kernel: [] child_rip+0xa/0x11 Dec 31 09:12:46 nfs1 kernel: [] kthread+0x0/0x75 Dec 31 09:12:46 nfs1 kernel: [] child_rip+0x0/0x11 Dec 31 09:12:46 nfs1 kernel: Dec 31 09:12:46 nfs1 kernel: nfsd: non-standard errno: -117 --8<---------------cut here---------------end--------------->8--- -- Mario Becroft From MAILER-DAEMON@oss.sgi.com Wed Dec 31 08:42:47 2008 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 mBVEglDk008162 for ; Wed, 31 Dec 2008 08:42:47 -0600 X-ASG-Debug-ID: 1230734565-7709012b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from krypton.dcs.kcl.ac.uk (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5C4EE55781 for ; Wed, 31 Dec 2008 06:42:45 -0800 (PST) Received: from krypton.dcs.kcl.ac.uk (krypton.dcs.kcl.ac.uk [137.73.8.8]) by cuda.sgi.com with ESMTP id 9FARAkcfgGJ3FCcB for ; Wed, 31 Dec 2008 06:42:45 -0800 (PST) Received: from daemon by krypton.dcs.kcl.ac.uk with local (Exim 3.36 #1) id 1LI2Gz-0006cv-00 for xfs@oss.sgi.com; Wed, 31 Dec 2008 14:42:13 +0000 From: owner-secretary@dcs.kcl.ac.uk To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Returned mail: see transcript for details Subject: Re: Returned mail: see transcript for details In-Reply-To: Message-Id: Sender: Date: Wed, 31 Dec 2008 14:42:13 +0000 X-Barracuda-Connect: krypton.dcs.kcl.ac.uk[137.73.8.8] X-Barracuda-Start-Time: 1230734566 X-Barracuda-Bayes: INNOCENT GLOBAL 0.4523 1.0000 0.0000 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14074 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name This address secretary@dcs.kcl.ac.uk is not in use. Please see the website http://www.dcs.kcl.ac.uk/ for contact details of the Department. From elrond+bounces2007@samba-tng.org Wed Dec 31 09:30:55 2008 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 mBVFUrLN011432 for ; Wed, 31 Dec 2008 09:30:55 -0600 X-ASG-Debug-ID: 1230737452-774402e30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from baerbel.szm.maschinenbau.tu-darmstadt.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 816A155610 for ; Wed, 31 Dec 2008 07:30:52 -0800 (PST) Received: from baerbel.szm.maschinenbau.tu-darmstadt.de (baerbel.szm.maschinenbau.tu-darmstadt.de [130.83.48.97]) by cuda.sgi.com with ESMTP id uVYc0SxJ2A4q5uZO for ; Wed, 31 Dec 2008 07:30:52 -0800 (PST) Received: from baerbel.szm.maschinenbau.tu-darmstadt.de (localhost [127.0.0.1]) by baerbel.szm.maschinenbau.tu-darmstadt.de (8.13.8/8.13.8) with ESMTP id mBVFUpOp018832 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT) for ; Wed, 31 Dec 2008 16:30:51 +0100 Received: (from tacke@localhost) by baerbel.szm.maschinenbau.tu-darmstadt.de (8.13.8/8.13.8/Submit) id mBVFUoFd018831 for xfs@oss.sgi.com; Wed, 31 Dec 2008 16:30:50 +0100 Date: Wed, 31 Dec 2008 16:30:50 +0100 From: Elrond To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfsaild wakeups Subject: Re: xfsaild wakeups Message-ID: <20081231153050.GA18736@memak.tu-darmstadt.de> Mail-Followup-To: Elrond , xfs@oss.sgi.com References: <20081229232915.GA6724@memak.tu-darmstadt.de> <20081230233522.GB10725@disturbed> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081230233522.GB10725@disturbed> User-Agent: Mutt/1.5.13 (2006-08-11) X-Barracuda-Connect: baerbel.szm.maschinenbau.tu-darmstadt.de[130.83.48.97] X-Barracuda-Start-Time: 1230737453 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.14078 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi Dave, 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? Great! Greetings Elrond